Обновить
512K+

Open source *

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

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

Что находится внутри файла PowerPoint?

Время на прочтение8 мин
Охват и читатели13

Переименуйте любой .pptx в .zip, распакуйте – и увидите ZIP-архив, набитый XML-файлами. Внутри спрятана вся ваша презентация: слайды, темы, встроенные таблицы Excel, картинки. Разбираемся, как этот формат устроен на самом деле – и почему автоматизировать PowerPoint кодом так тяжело.

Читать далее

Новости

Пишем huntZip - Как я написал библиотеку для архивов на Python

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

Hello world!

Как то раз мне понадобилось работать с архивами в одном из своих проектов, но тут возникла проблема — Для ZIP тебе нужен zipfile, для какого нибудь TAR — tarfile, а для других (типа 7z и rar) вообще нужны rarfile и py7zr, И из за этого код превращается в не красивый забор из кучи и кучи импортов. И мне это надоело, вот где то 2–3 дня назад я начал делать свою библиотеку для архивов, которую я назвал huntZip.

Читать далее

EtherCAT в LinuxCNC: что такое lcec и как написать свой драйвер

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

Привод, которого нет в каталоге lcec, заводится через generic — картой PDO, набранной руками в XML: у нашего стенда это 236 строк, и ошибка в одном индексе означает «слейв не дошёл до OP», больше лог не скажет ничего. Свой драйвер CiA 402 заменяет эту простыню на строку <slave type="VD3E" name="s"/> и занимает двадцать содержательных строк. Ниже - зачем его писать и когда не надо, что нужно узнать про прибор, где это взять и что ломается по дороге. Маршрут: как устроена связка и где в ней lcec → что у пяти приводов одинаково, а что у каждого своё → как снять с незнакомого привода пять нужных фактов четырьмя командами → сам драйвер целиком, с разбором → что ломается и как это выглядит в логе.

Читать далее

Как добавить свой модуль nginx в контрольной панели ispmanager

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

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

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

Предлагается доработать ispmanager, а именно:

Читать далее

README врёт: как я сделал open‑source линтер, который сверяет документацию с реальным репозиторием

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

README редко ломается в один момент.

Обычно он просто постепенно перестаёт соответствовать проекту: переименовали команду, перенесли файл, удалили .env.example, сменили package manager — а инструкция осталась прежней.

В итоге новый пользователь копирует команду из README и получает ошибку. Разработчик же часто узнаёт об устаревшей документации только после issue, сообщения коллеги или неудачного деплоя.

Мне стало интересно: можно ли автоматически находить хотя бы часть таких расхождений, не выполняя команды из README и не отправляя исходный код в LLM?

Так появился RealityLint — open‑source CLI, который статически сверяет проверяемые утверждения из README с реальным состоянием репозитория.

Читать далее

Зачем PyPI закреплять префиксы пакетов за организациями

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

Имя пакета в реестре часто оказывается первым сигналом того, что компоненту можно доверять. Разработчик видит название вроде google-cloud-storage, opentelemetry-sdk или apache-airflow-providers-slack раньше, чем открывает исходный код, и ожидает, что знакомый префикс указывает на известный проект. В PyPI это ожидание пока ничем не подтверждено: реестр формально не связывает общее начало имени с его владельцем, поэтому любой свободный вариант может зарегистрировать посторонний пользователь.

В конце июня 2026 года в Python‑сообществе приняли PEP 752 (мы писали об этом здесь). Он предлагает закреплять за организацией не отдельные имена, а префикс и все будущие проекты, которые ему соответствуют. Если PyPI реализует этот механизм, то пакет с именем вроде «google‑cloud‑new‑service» сможет опубликовать только та организация, которой принадлежит право на этот префикс или которой разрешили пользоваться этим правом. На первый взгляд, решение очевидное. Однако общий префикс не всегда означает, что все пакеты принадлежат одному издателю. Иногда он обозначает семейство официальных библиотек, а иногда экосистему сторонних дополнений. 

Меня зовут Артем Максимов, я отвечаю за аналитику продуктов в CodeScoring. Вместе с дата‑инженером Артемом Ивановым в этой статье мы разбираемся, какую проблему решает PEP 752, где проходит его граница и что нам показывает база данных CodeScoring.

Читать далее

От struct к компиляции под схему: ускоряем RowBinary-декодер на Python

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

Я автор aiochlite — асинхронного клиента ClickHouse на aiohttp. Раньше мой декодер RowBinary читал каждое числовое поле отдельно. Если брать 200 тысяч строк с десятью числовыми колонками, получалось два миллиона таких чтений, хотя все данные уже были в памяти.

Сначала я думал использовать Cython, C или Rust. Но потом решил попробовать оптимизировать сам процесс: объединить соседние поля с фиксированной длиной в один struct, а полностью фиксированные строки разбирать с помощью Struct.iter_unpack. На числовых данных это ускорило работу примерно в 8.3 раза.

Со смешанной схемой данных получилось интереснее: простая склейка почти не помогла. Главной проблемой осталась проверка типов внутри основного цикла. В итоге я начал генерировать и компилировать Python-функцию под конкретную схему ответа — это дало ускорение еще примерно в 1.7 раза.

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

Читать далее

Есть ли жизнь после Microsoft Office?

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

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

Читать далее

Что пишет нам Нептун?

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

Любому, кто осилил роман ВиктОра Гюго «Человек, который смеется», известно, что при дворе Английской Королевы Елизаветы I была должность «Откупориватель океанских бутылок».

Придворный, занимавший этот пост, собственно, и откупоривал бутылки. От 80 до 120 бутылок в год.

В тучный год он работал «не покладая штопора», каждые три дня извлекая очередную последнюю волю, прошение, мольбу, исповедь или свидетельство на суд Британской монархии.

В те времена люди относились к акту публичной коммуникации гораздо серьёзнее, чем сейчас.

И любой, кто вкладывал сообщение в бутылку, заливал пробку сургучом и препоручал её пучине, мог не без основания надеяться: сообщение прочитают и по нему вынесут какое-то суждение или решение. Если, конечно, бутылку вынесет на берег. Неизвестно было только, когда и где это произойдёт.

Читать далее

Второй фактор, который жил в чужой странице: как я выбросил WebAuthn из своего сервиса ключей

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

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

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

Читать далее

Словарь «Колобок» и идея перевода словарей

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

Оказывается, если поработать с промптами и гейтами, то можно перевести большущий японо-английский словарь к виду японо-русского с очень неплохим качеством. Идея применима к другим языкам. Сделал пайплайн, запускал 100 Sol-воркеров-переводчиков одновременно через CLI. Вышло недорого.

Тут словарь, тут гитхаб с пайплайном, тут примеры статей.

Читать далее

Я хотел понять, где создана AI‑картинка. В итоге разобрался, что на самом деле проверяет C2PA

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

13 августа Google выложила Credentio — C++ библиотеку для проверки C2PA Content Credentials. Я решил собрать её и сделать простой тест: кидаешь картинку и смотришь, можно ли понять, камера это, генератор или редактор.

Спойлер: нельзя. Причём ограничение оказалось не в Credentio — я просто неправильно понимал, какую задачу вообще решает C2PA. Он не анализирует пиксели и не пытается угадать происхождение изображения. Если в файле нет C2PA‑данных, проверять ему попросту нечего.

В итоге вместо «детектора AI‑картинок» у меня получился небольшой локальный валидатор, а сам эксперимент оказался полезнее именно из‑за того, что первоначальная гипотеза не сработала.

Читать далее

Мы мигрировали сотню страниц документации через MCP-сервер, а не скриптами

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

У каждого опубликованного сайта GitBook уже есть MCP-сервер. Мы узнали об этом случайно и вместо конвертеров просто дали агенту ходить в документацию напрямую — сотня страниц переехала на Diplodoc за четыре дня. Что агент сделал сам, где проходит граница его возможностей и какие десять вещей пришлось доделывать руками.

Читать далее

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

Телеметрия выключена. Кто еще ходит в сеть из вашей IDE

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

Настройка telemetry.telemetryLevel=off отключает телеметрию платформы, но не обновления, Git, синхронизацию, расширения и запросы к AI-провайдеру. Разбираю, какие данные могут уходить по каждому каналу, что реально видно в сети и почему сам факт TLS-соединения еще не доказывает утечку кода. В практической части - аудит Xynapse IDE: три 60-секундных холодных старта, ноль событий Sysmon Event ID 3 при работающем положительном контроле, 19/19 подтвержденных мер и 5/5 явно зафиксированных границ результата.

Читать далее

Мой тестовый харнесс нашёл баг в моей же реализации Raft. Рассказываю, как именно

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

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

Я писал реализацию Raft на TypeScript и построил вокруг неё музей багов: семь экспонатов, каждый выключает ровно одно правило алгоритма и требует, чтобы харнесс поймал это — с сидом и с именем нарушенного свойства.

Один экспонат появился не по плану. Харнесс нашёл баг в самой реализации: все пять свойств безопасности держались, логи совпадали, никто не падал — и на двадцать пятом сиде две реплики разъехались навсегда. Разбираю, почему так вышло, как устроен харнесс и чего этот метод не доказывает.

Читать разбор

Я дал AI-агенту доступ к своему Telegram. Вот что из этого получилось

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

Вы когда нибудь задумывались, что можно узнать о вас и про вас из вашей истории переписки в Telegram?

Я подключил к Hermes пользовательскую Telegram-сессию. После этого агент смог искать в моих чатах, читать нужные фрагменты истории, находить контакты, выгружать выбранные переписки в JSONL и, после моего подтверждения, писать от моего имени.

Последний пункт звучит эффектно и немного тревожно. Так и должно быть. Личный Telegram хранит годы разговоров, договорённостей, файлов и случайных деталей, которые я давно забыл. Доступ к аккаунту даёт агенту контекст заметной части моей жизни. Заодно он даёт возможность совершить очень убедительную ошибку от моего имени.

Так начался эксперимент с MTProto, Pyrogram, tgcli и SKILL.md для Hermes. Польза обнаружилась быстро. Ограничения пришлось придумывать почти так же быстро, ещё до первой реальной отправки.

Какие знания можно вытащить из твоего tg

Страница, которая не моргает: SPA-роутинг для HTML и Web Components

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

Фреймворки дают клиентский роутинг из коробки. У HTML и Web Components его нет. Если сайт уже отдаёт полные страницы, а клиентская навигация нужна только для части разделов, переписывать всё на фреймворк незачем.

Aura Router решает эту задачу, сохраняя HTML исходной точкой: маршруты объявляются как Custom Elements, а ссылки остаются обычными <a href>. Без JavaScript те же URL открываются как обычные страницы.

В статье соберём минимальный сайт из двух страниц и проверим прямой заход по URL, клиентскую навигацию и работу ссылок без JavaScript.

Читать далее

Как мой RDP-клиент для macOS незаметно превратился в комбайн для администрирования

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

Selective Remote начинался как небольшой RDP-клиент для macOS, а к версии 0.22.0 вырос в рабочее пространство для RDP, SSH, SFTP и SSH-туннелей. Рассказываю, зачем SFTP понадобилась передача Server → Server, почему Drag & Drop пришлось спускать со SwiftUI на AppKit и как несколько отдельных экранов превратились в связанные Workspace.

Читать далее

Стоковый ClickHouse занял 12 ГБ диска при 543 КБ данных: сколько на самом деле ест self-hosted observability

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

Полный self-hosted стек observability (Go-приложение + PostgreSQL + ClickHouse) живёт на VPS с 2 ядрами и 2 ГБ RAM. Но сначала стоковый ClickHouse занял 12 ГБ диска при 543 КБ полезных данных, держал 900 МБ памяти и мержил 11 миллионов строк каждые 30 секунд. Разбор с реальными замерами: куда всё ушло, какая гипотеза не подтвердилась, какая ошибка уронила прод и какие настройки в итоге вернули две трети памяти.

Читать далее

Возвращение короля: разбираемся, что такое Qwen3.8 27B

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

14 августа 2026 года, 15:00 UTC.

CEO Anthropic Дарио Амодей срочно созвал заседание. Экс-глава Apple Тим Кук пожалел, что встроил в айфоны облачную Gemini, так и не дождавшись локальной модели нужного уровня. Где-то в датацентрах Alibaba щёлкнул рубильник, на Hugging Face слетел обратный отсчёт, и в мир вышла Qwen3.8-27B – новая dense-модель на 27 миллиардов параметров, которую даже прозвали «локальным Opus’ом», поскольку она позиционируется как одно из самых мощных открытых решений для локальной генерации.

Ждали её всем миром: обратный отсчёт на huggingface, первые пиксельные пеликаны на великах – всё как положено.

Если вкратце, это открытая (Apache 2.0) мультимодальная модель, которая понимает текст, картинки и видео, влезает в одну ооочень мощную домашнюю видеокарту, а временами по бенчмаркам обгоняет закрытые облачные модели уровня Claude Opus 4.6.

Если не вкратце – читайте дальше, потому что там есть и триумф, и зависания на 49 минут раздумий!

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