Обновить

Cohere в .NET за 10 минут: Microsoft.Extensions.AI + NuGet-пакет Cohere.Extensions.AI

Уровень сложностиСредний

В .NET появилось новое пространство абстракций для LLM — Microsoft.Extensions.AI. Я сделал лёгкий адаптер для Cohere и выложил его в NuGet. В статье покажу, как за 10 минут подключить Cohere к .NET и получить рабочий чат с минимальным количеством кода.

Читать далее

Обзор моего Pet проекта: консольный редактор с интеграцией LLM

Уровень сложностиПростой

Мой опыт создания текстового редактора с LLM на Go

Приветствую всех! Сегодня хочу рассказать о своем Pet-проекте — собственном консольном текстовом редакторе, который я реализую на Go с интеграцией больших языковых моделей (LLM). Этот опыт родился на стыке моего прошлого и настоящего — я радиоинженер по образованию, но всю жизнь работал с вычислительными комплексами, а сейчас, будучи пенсионером, возвращаюсь к любимым задачам в более новом формате.

В моей молодости компьютеры работали на перфокартах и системах типа АЦПУ, а терминалы часто использовали старые модемные консоли вроде Consul 260. Начав знакомство с Unix, я привык работать из консоли, для редактирования текста предпочитая Nano. Но со временем я осознал, что современный Nano уже устарел, его исходный код написан на чистом C — усложняет его доработку — и интерфейс кажется архаичным. Особенно неприятно, когда длинная строка «уплывает» вправо, и приходится постоянно подгонять курсор.

Эти недостатки побудили меня к мыслительному рывку: а можно ли сделать что-то лучше? Времени у меня много, и я начал реализовывать свои задумки.

Читать далее

Пример кода определения WebRTC утечки

Уровень сложностиПростой

WebRTC (Web Real-Time Communications) — это набор открытых стандартов, протоколов и API, которые позволяют браузерам и мобильным приложениям обмениваться аудио-, видеоданными и произвольными данными напрямую (peer-to-peer, P2P) без необходимости установки плагинов или стороннего программного обеспечения.

Соответсвенно утечка WebRTC – это процесс, при котором во время использования функции аудио- или видеосвязи в браузере, основанной на технологии WebRTC, раскрывается ваш реальный IP-адрес, даже если вы используете VPN или прокси-сервер. Эта утечка ставит под угрозу вашу анонимность.

Напишем на javascript простую страницу, которая определит есть ли в вашем браузере утечки, а заодно посмотрим параметры SDP протокола, которые ваш браузер генерирует для установления WebRTC соединения.

SDP протокол описывает, какие медиа-потоки будут передаваться, их параметры, сетевые данные и механизмы безопасности. SDP-предложение само по себе не является утечкой. Это просто техническое предложение о соединении. Реальная утечка происходит, если браузер, обрабатывая этот SDP, для установления соединения: Находит ваши реальные ICE-кандидаты (ваш локальный и публичный IP-адреса). И использует для кандидата типа host не маскированное mDNS-имя (xxx.local), а ваш реальный локальный IP-адрес (например, 192.168.1.5), который затем виден на сайте.

Современные браузеры (Chrome, Firefox, Safari) по умолчанию используют mDNS-маскировку для host-кандидатов, что предотвращает утечку локального IP. Данные же вашего публичного IP-адреса необходимы для установления любого P2P-соединения и, по сути, не являются скрываемой информацией для сайта, с которым вы общаетесь.

Читать далее

Makefile для воробушков

Уровень сложностиПростой

Makefile — файл с инструкции для утилиты make.

Утилита make — инструмент автоматизации сборки, читает Makefile и выполняет команды для компиляции и линковки программ (расскажу дальше), а также для многих других задач автоматизации.

Читать далее

Автозаполнение форм в один клик: как я сделал AutoFill Helper и какие подводные камни встретил

Уровень сложностиПростой

AutoFill Helper: краткий разбор решения автозаполнения

Нужен был быстрый способ заполнять формы тестовыми данными по хоткею, без тяжёлого UI. Стандартное автозаполнение Google Chrome не работает по хоткею и не всегда определяется с кастомными id элементов форм. Итог — расширение, которое по правилам (привязка к домену/пути) подставляет значения в поля и корректно эмулирует ввод.

Читать далее

Устали от бесконечных тасков? Попробуйте решить самую сложную задачу — научить

Уровень сложностиПростой

Почему человеку из IT или Data Science стоит подумать о карьере учителя математики (хотя бы на полставки).

Коллеги. Если вы читаете этот текст, вы скорее всего умеете думать. Вы видите мир через призму логики, алгоритмов и чистых абстракций. Вы знаете, каково это — искать изящное решение сложной задачи и испытывать кайф, когда оно находится.

А теперь представьте, что вы можете передать это чувство. Не компьютеру, а живому человеку. Десятикласснику, который считает, что математика — это скучно и бесполезно. И увидеть в его глазах не просто понимание, а настоящую искру — «О, так вот как оно работает!».

Мы — обычная школа. И у нас не обычная проблема. Нам не хватает учителей математики. Классические объявления на HH.ru не работают. Педагогических вузов не хватает. Поэтому мы ищем умных людей с аналитическим складом ума, которые, возможно, никогда не думали о школе, но которые любят свою науку по-настоящему.

Мы не ищем готового педагога. Мы ищем вас — того, кто понимает суть.

Что мы предлагаем (без слащавых обещаний):

· Реальную задачу. Сложнее любого техзадания. Объяснить, увлечь, вдохновить. Это самый сложный и самый интересный проект в вашей жизни.

Читать далее

Как я устал от длинных PDF и сделал ассистента для документов

Уровень сложностиПростой

Привет! 👋

Я студент МГУ, и почти каждый день мне приходится работать с PDF-документами: учебники, научные статьи, отчёты.

Думаю, многие сталкивались с этой болью: открываешь файл на 200 страниц, а нужно всего пару абзацев. В итоге тратишь часы (а то и дни) на бесконечный поиск нужного куска текста.

В какой-то момент я понял, что это не мелкая неудобность, а настоящая проблема. Тогда я задал себе вопрос: а что если можно было бы просто спросить у PDF-документа, как у человека?

Читать далее

Импорт устройств в Netbox с помощью CSV, JSON, YAML

Уровень сложностиПростой

Работа с большим количеством серверов, сетевых и других устройств требует не только внимательности, но и эффективных инструментов для управления инфраструктурой. Одним из таких инструментов является NetBox, который упрощает инвентаризацию и автоматизацию задач. Однако ручной ввод информации может быть трудоёмким и подверженным ошибкам. В этой статье мы рассмотрим пошаговый процесс импорта устройств в NetBox с помощью файлов форматов CSV, JSON и YAML, что позволит ускорить работу и избежать типичных проблем при заполнении данных.

Читать далее

Пишу свой язык программирования в 13 лет. Показываю код и жду вашей критики

Уровень сложностиСредний

Привет, Хабр!

Меня зовут Grepleon, мне 13 лет, и я последние полтора года активно погружаюсь в программирование. Мне всегда было интересно, как работают языки программирования «под капотом», и я решил сделать свой — не просто калькулятор, а нечто с условиями, циклами, функциями и даже списками.

Сегодня я выкладываю код своего интерпретатора и жду вашей конструктивной критики. Мне интересно, что можно улучшить в архитектуре, что я сделал неоптимально, и как развивать этот проект дальше.

Читать далее

Патина кода: восстановление и документация ПО с магнитных лент и перфолент

Уровень сложностиСложный

Когда в руки попадает кусок истории в виде магнитной ленты или перфоленты, это уже не просто носитель — это артефакт, который хранит уникальный код, алгоритмы и стиль эпохи. В статье я расскажу о том, как можно оживить такие носители, как оцифровать данные, какие инструменты помогают расшифровать формат без документации, и почему документирование таких находок — не менее важная часть работы, чем их техническое восстановление.

Читать далее

SPIRE: Создание антивируса на Rust. Часть 1

Уровень сложностиСредний

Блог разработки моего проекта под названием SPIRE
Я разрабатываю Spire как надёжное решение для защиты от вредоносного ПО для операционных систем Linux и Windows предназначенное для защиты пользователей от известных угроз и вредоносных программ.

В этом блоге я описываю процесс разработки, фиксируя как достигнутый прогресс, так и возникающие трудности на этапе разработки и их решения.

Проект SPIRE размещён в моём репозитории на GitHub.

Читать далее

Разбираю архив палеографа, вглубь культурного кода XVII века. Последнее дело отца. Церковнославянские технологии

Уровень сложностиПростой

Эта история о неочевидном, а местами, запутанном, последнем исследовании моего отца. Арсений Самохвалов был палеографом и жизнь посвятил изучению древних рукописей. Для меня его архив, с детства, был просто частью жизни и взросления. Коробки с бумагами, микрофильмы, неразборчивые черновики и рукописи в папках. Когда я наконец начал их разбирать перед моим выездом из России, то постепенно я убеждался, что между листов и бумажек уже идёт чуть ли не детективное расследование.

Отец ушел из жизни в 2003 году в потопе, и так его главная работа осталась незавершенной. Она касалась достаточно известной в определённый период времени поэмы «Лѣствица», которую приписывали Симеону Полоцкому как значительной фигуре XVII века. Полоцкий был настоящим инноватором вместо теоретической банальности и графомании. И богослов, и педагог царских детей, человеком, принесшим в Москву западную культуру барокко и способность вести полемику не мечом, но словом. Поэтому, осмыслить и найти оригинал его текста, что сейчас знают мало — было огромной удачей и профессиональным успехом А. Самохвалова.

Читать далее

Oxide Lab: приватный локальный AI-чат на вашем ПК без интернета и подписок

Уровень сложностиПростой

Привет, Хабр! В эпоху, когда AI вроде ChatGPT и Claude стали неотъемлемой частью жизни, многие из нас задумываются о приватности. А что, если ваш личный AI-ассистент работает полностью оффлайн, без отправки данных на чужие серверы? Сегодня я расскажу о своем пет-проекте — Oxide Lab. Это десктопное приложение для общения с AI-моделями локально, с акцентом на простоту, безопасность и контроль. Проект open-source под MIT. Давайте разберем, что это такое и почему стоит попробовать.

Читать далее

Чиним голосовую связь в Revolt (аналог Discord только у себя)

Уровень сложностиСредний

Мне предстоит выполнить сложную задачу — запустить собственный сервер Revolt с голосовой связью.

Автор Revolt создал self-hosted решение, но в нём отсутствует голосовой сервер. Из-за этого при обычном разворачивании Revolt голосовой чат не функционирует.

Мне пришлось разобраться как поднять и настроить голосовой сервер.

Починить голосовую связь...

Удаление конфиденциальных данных из истории Git: от теории к практике

Уровень сложностиПростой

Удаление конфиденциальных данных из истории Git

Привет, Хабр!

Эта статья — мой первый опыт, и я буду рад конструктивной критике. В ней я разберу на реальном примере, как полностью удалить файлы или папки из истории коммитов Git. Это может понадобиться, если вы случайно закоммитили чувствительную информацию (ключи, пароли, конфиги).

Читать далее