Обновить

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.

Читать далее

Cooperative Cancellation — почему Task.cancel() не убивает задачу

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

Когда мы впервые видим метод Task.cancel(), может показаться, что он работает как kill -9 в Unix: сразу останавливает задачу. Но в Swift Concurrency всё устроено иначе.

Хочу ознакомиться

Разбираю архив палеографа, вглубь культурного кода 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. Это может понадобиться, если вы случайно закоммитили чувствительную информацию (ключи, пароли, конфиги).

Читать далее

Job to be Done… and Done Again

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

По определению Job Story, совершенное человеком действие определено контекстом (созданным), мотивом (вызванным) и целью (достигнутой), представим это как цикл, когда контекст уже создан

Читать далее