Обновить
512K+

Open source *

Открытое программное обеспечение

875,53
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Из ядра Linux выпилили strncpy: шесть лет, 362 коммита, одна функция

Время на прочтение2 мин
Охват и читатели3.4K

19 июня Линус Торвальдс влил merge, который убрал из ядра Linux функцию strncpy — шесть лет работы, 362 коммита, семьдесят человек ради одной функции стандартной библиотеки C. Разбираю, почему «просто заменить небезопасную функцию» в C совсем не просто: strncpy только выглядит как «безопасный strcpy» из-за параметра n, а на деле это даже не строковая функция, а реликт fixed-width полей из AT&T Unix 1979 года. Главное в истории не сам выпил, а его цена: заменить нельзя автозаменой, потому что каждый из 362 вызовов требует понять намерение — нужна C-строка, padding или бинарное поле. Урок выходит за пределы ядра: в любой C/C++ базе на проде strncpy — это не баг, а код, который надо перечитать.

Читать дальше →

Новости

KiSinWi — AutoML-платформа с микросервисной архитектурой и мультиагентными воркфлоу

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели3.1K

AutoML обычно отвечает на вопрос «что победило», а хотелось бы ещё знать «почему». Поэтому я собрал платформу, где обучение нейросетей ведут LLM-агенты. Они спорят об архитектуре, собирают конфиг и запускают обучение, и каждый их шаг виден прямо в интерфейсе.

Коротко расскажу, как устроена платформа и агенты. Особый акцент в статье сделан на получаемые результаты бенчмарков на 5 стандартных датасетах и действиями мастера ноутбуков из Kaggle.

Читать дальше

Как навести порядок в паролях. Локальный менеджер паролей: KeePassXC, Syncthing и бэкапы

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели2.4K

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

Читать далее

Разработка длиною в 3 года: как я писал свой PHP CMS/Framework Gy, «убийцу» Битрикса, весом 350 Кб

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели2.9K

Под катом делюсь обзором своего самописного PHP-фреймворка Gy — попытки сделать легковесного «убийцу» Битрикса весом 350 Кб. Расскажу, как я реализовал вызов компонентов, зачем написал кастомный SQL-движок на текстовых файлах PhpFileSql.

Костыли, велосипеды, 3 года разработки по выходным, 315 коммитов, 14232 строки кода, поддержка практически всех версий PHP и ровно 0 пользователей.

Читать далее

Где заканчивается вызов LLM и начинается backend система: локальный RAG на FastAPI и Ollama

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели3.1K

Хотел разобраться где заканчивается простой вызов локальной LLM и начинается backend система.

Сначала всё выглядело просто: frontend отправляет вопрос, FastAPI принимает POST /ask, backend вызывает локальную модель через Ollama и возвращает ответ. Но стало понятно: для помощника по документации этого мало. Модель отвечает, но непонятно на какие документы она опирается, какие фрагменты попали в prompt, сколько времени занял каждый этап и что делать, если индекс устарел.

В статье показываю не "как вообще устроен RAG", а путь от простого вызова локальной LLM к небольшому backend/RAG-проекту с API контрактом, request_id, логированием, sources, timings, rebuild index, negative tests и честными ограничениями.

От LLM вызова к RAG системе

Спутниковая связь в симуляторе NS-3. Часть 7

Уровень сложностиСредний
Время на прочтение34 мин
Охват и читатели2.8K

Продолжаем изуяать модуль Satellite симулятора сетей NS-3. В этой статье цикла мы обратим свое внимание на средства вывода результатов моделирования и классификацию примеров моделирования, прилагаемых к модулю Satellite.

Читать далее

Браузер как платформа — офисные инструменты и IT-утилиты без сервера, без установки, без регистрации

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели4.4K

Думаю, многие сталкивались с этим: нужно быстро объединить PDF, проверить подсеть или декодировать JWT. Открываешь первый попавшийся сервис, загружаешь файл и надеешься что данные никуда не сохраняются.

Главный принцип простой: если задачу можно выполнить прямо в браузере, зачем вообще нужен сервер?

Так появились два проекта. Каждый - один HTML файл.

Читать далее

AI предлагает, мержу я: почему я не даю агенту последний ход

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.4K

TL;DR. Я не пытаюсь сделать кодинг-агента самостоятельным разработчиком. Я задаю для него процесс: SPEC → PLAN → TEST → CODE → REVIEW → LEARN, артефакты на каждом шаге и человеческий accept там, где начинается ответственность. Эта статья — вход в серию про map-framework: хуки, контракты, контекст, память и всё, что я довёл из научных статей до рабочего процесса.

Читать далее

DeepSeek‑V4‑Flash на двух DGX Spark: как мы убрали очередь и получили multi‑user

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.8K

Подняли DeepSeek‑V4‑Flash на двух GB10, упёрлись в потолок consumer Blackwell, прошли три тупика со спекулятивным декодингом — и в итоге получили параллельную работу ресёрч-агента и длинной генерации без очереди. Цифры из Grafana.

Читать далее

Как мы сделали простой мониторинг загрузки станков через Zigbee-сеть: open source стек без кабелей и вендорлок

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.7K

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

Читать далее

Меняем Punto Switcher на macOS: открытый код, ноль телеметрии и ноль зависимостей — в обоих смыслах

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.8K

Если серьёзно — зависимостей у RuSwitcher действительно ноль: только системные фреймворки и чистый Swift, никакой телеметрии и ничего постороннего в Package.swift. Но начнём с боли.

Если вы пишете на двух языках, то знаете эту боль: набрал полстроки, поднял глаза — а там ghbdtn вместо «привет». На Windows эту проблему закрывает Punto Switcher. А на macOS? Его Mac‑версию Яндекс забросил ещё в 2017-м, да и у самого Punto хватает «сюрпризов»: встроенный кейлоггер‑«дневник», телеметрия, навязывание Яндекс‑сервисов и закрытый код. Мне хотелось простого, открытого и без слежки — поэтому я написал своё: RuSwitcher, лёгкий переключатель раскладки в меню‑баре. Open source (MIT), ноль зависимостей, ноль телеметрии.

В статье — как это устроено внутри: перехват клавиатуры через CGEventTap, динамический маппинг любых двух раскладок через UCKeyTranslate, и отдельно — раздел «грабли», включая историю про то, как я случайно выложил релиз, где DMG назывался 2.1.0, а внутри лежала сборка 2.0.3.

Втянуться без зависимостей

Nostr — бэкенд «из коробки»: где подходит, а где нет

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели5.4K

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

Читать далее

Бесплатное lo-fi радио + живые обои на рабочий стол: собрал десктоп-приложение на Tauri 2 (форк lofi-engine)

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.8K

Я хотел одну простую вещь: чтобы на втором мониторе тихо играло lo-fi, а за виджетами крутилась уютная анимированная сцена. Готового решения не нашлось — зато нашёлся чужой MIT-проект, у которого я в итоге выкинул главный модуль и собрал из остатков совсем другой продукт. Это девлог о том, что я удалил, что добавил и на каких граблях потанцевал.

Под задачу подходящих инструментов хватало, но каждый закрывал только часть. Wallpaper Engine — живые обои, но без радио. Lofi.co — музыка в браузере, но не обои рабочего стола. Noisli — эмбиент, но без всего остального. Покупать три подписки ради фона под код было жалко, поэтому я полез на GitHub смотреть, что можно собрать самому.

Нашёл meel-hd/lofi-engine под MIT — аккуратный Tauri-проект со встроенным генеративным движком, который синтезировал lo-fi прямо в браузерном рантайме. Идея красивая, но мне быстро стало понятно, что я хочу совсем другого продукта. Так появился форк, который я в итоге назвал LoFiTyan.

Читать далее

Ближайшие события

skill-compass: хук, который сам подсказывает Claude Code нужные скиллы

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7.1K

У Claude Code есть одна неприятная особенность, про которую редко говорят вслух. Можно навесить на агента огромную библиотеку скиллов — дизайн, проектирование API, миграции БД, ревью безопасности, отдельные наборы под каждый язык, — и всё это будет честно лежать в ~/.claude/skills/. Нужный скилл почти всегда там есть. Проблема не в том, что его нет. Проблема в том, что про него надо вспомнить в нужный момент.

skill-compass решает ровно эту задачу. Это маленький хук для Claude Code, который смотрит на проект перед агентом и подсказывает, какие скиллы подключить — до того, как написана первая строка кода. Без зависимостей, один файл на Node, около 200 строк, которые читаются за один присест.

Читать далее

Crashprobe: как я заделал критическую уязвимость в версии 0.4.1

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели6.2K

Привет, Хабр! Недавно я опубликовал статью про свою библиотеку - crashprobe, которая перехватывает ошибки в синхронном коде Python и потоках, а затем генерирует о них красивый HTML или TXT отчёт.

Статья получила хорошие результаты, а читатели помогли сделать библиотеку лучше и безопаснее. Так внимательный читатель @vldmrmlkv обратил внимание на критическую уязвимость в безопасности версии 0.4.0.

Читать далее

Valkey и Redis: два года спустя — за кем будущее?

Время на прочтение11 мин
Охват и читатели12K

В марте 2024 года Redis сменил лицензию и, тем самым, положил начало развитию Valkey. Два года Valkey активно развивался: набирал количество контрибьютеров, коммитов, был встроен в многие проекты — в общем, показал себя на практике. Пришло время подвести итоги и понять: есть ли в этом сравнении победитель.

В статье разберем обе технологии. Будет немного про историю развития и хронологические предпосылки, разбор ключевых фич и почти детективное расследование о жизни двух хранилищ. Также, покажем за кем будущее (по нашему мнению) и зачем мы контрибьютим в одно из них.

Читать далее

graphlens: превращаем репозиторий в типизированный граф — Python, TypeScript, Go и Rust в одной модели

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели12K

Любой инструмент для «понимания кода», которым я пользовался, рано или поздно упирался в одну из двух стен.

Первая — цикл «grep → открыть → прочитать → перейти по импорту → снова grep». Работает, но медленно, и у него нет ни малейшего представления о том, что process_order, найденный в services.py — это тот самый process_order, который вызывается из api.py, а не однофамилец из tests/. Когда этим занимается LLM-агент, он ещё и сжигает на этом тонну токенов.

Вторая стена — моноязычность. Инструмент прекрасно понимает Python, но слепнет в ту секунду, когда фронтенд на TypeScript дёргает ручку FastAPI на Python. Реальные системы полиглотны. Инструменты вокруг них — обычно нет.

graphlens — это open-source фреймворк (MIT), который спроектирован так, чтобы обойти обе стены. Он парсит исходный проект, нормализует его структуру в общий граф-IR и отдаёт этот граф вам — делайте с ним что хотите: анализ зависимостей, навигацию, поиск мёртвого кода или подачу точных ответов LLM-агенту вместо вываливания файлов в контекст.

Читать далее

Аудит алгоритмов: как реализация Boyer-Moore с 190K звёзд на GitHub оказалась brute-force

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели21K

Проверил реализацию Boyer-Moore в TheAlgorithms/Python (190K+ звёзд). Оказалось, что сдвиг bad character записывается в переменную for-цикла, что в Python не имеет эффекта. Алгоритм выдаёт правильные результаты, но работает как brute-force O(nm) вместо O(n/m). Плюс ещё две находки: бесконечный цикл в типичных реализациях full BM и ошибка в оригинальной статье 1977 года, которую исправили только в 1980-м.

Читать далее

Сервисы конвертации кода «съедают» опенсорс

Время на прочтение4 мин
Охват и читатели17K

Недавно в интернете начал работу сервис рефакторинга Malus.sh по «очистке кода от опенсорсных лицензий». Он позиционирует себя как «чистая комната», где софт очищается от лицензионного бремени. Туда загружается манифест свободного проекта, а LLM за небольшую плату переписывает код с сохранением функциональности. Идея в том, что новый код можно использовать как угодно, без соблюдения требований свободных лицензий APGL, MIT, Apache и др., под которыми опубликован оригинал.

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

Читать далее

Бэкпорты теперь делают боты: как Valkey пустил ИИ-агентов в мейнтенанс — и удержал контроль

Время на прочтение2 мин
Охват и читатели8.8K

Valkey (форк Redis под крылом Linux Foundation) в релизном цикле 9.1 отдал ИИ-агентам рутину мейнтенанса: бэкпорт-агент сам раскатывает фиксы по веткам 7.2/8.0/8.1/9.0, отдельный агент сканирует provenance кода на конфликт с нынешней лицензией Redis (чтобы в форк случайно не затёк несовместимый код родителя), а агентский поиск багов наткнулся на ещё закрытую CVE. Разбираю не «ИИ заменяет мейнтейнеров», а как это сделали по уму: по словам Мэделин Олсон из AWS, агентов посадили на ограниченный, проверяемый слой (CI + ревью + человек на мерже) — «using AI agents without losing control». Главный вывод для своих проектов: сажать агентов на toil, а не на дизайн.

Читать дальше →
1
23 ...