Когда в октябре 2024-го заблокировали Дискорд, я сидел в голосовом канале с друзьями. Связь оборвалась, все полезли за впн-ками, кто-то ушёл в Телеграм, кто-то просто пропал. Серверы, которые мы строили годами, с каналами, ролями, ботами, в один момент стали недоступны.
Я фрилансер, пишу на React и Node.js. В тот вечер подумал: а насколько сложно вообще сделать свой мессенджер с серверной структурой? Не чат на вебсокетах из туториала, а нормальный. С серверами, каналами, ролями, голосовыми комнатами, ботами. Такой, чтобы можно было перетащить своё сообщество и не чувствовать разницы.
Оказалось, сложно. Но я всё равно сделал.
Читать далее854 миллиона скачиваний за год. Пять дней работы Claude Code.
Вот и всё, что понадобилось, чтобы содрать двадцать лет копилефт-защиты с chardet — библиотеки определения кодировок для Python, которая сидит практически в каждой Python-среде на планете.
Прежде чем нырнём в историю, давайте проясним два типа лицензий, вокруг которых всё вертится. LGPL говорит: «Можешь использовать этот код, но если ты его изменил — делись изменениями на тех же условиях». MIT говорит: «Делай что хочешь». Первая защищает сообщество. Вторая позволяет корпорациям брать, ничего не отдавая взамен.
2 марта 2026 года Дэн Бланшар выпустил chardet 7.0.0. Назвал это «полной переписью с нуля под лицензией MIT». Лицензия LGPL, которая защищала библиотеку с 2006 года, — исчезла. Вместо неё — MIT. Инструмент, который выполнил переписку: Claude Code от Anthropic, модель Opus 4.6.
Через два дня вернулся Марк Пилгрим. Человек, который создал chardet в 2006-м. Человек, который в 2011 году стёр все следы своего присутствия в интернете. В сети это называют его «инфосуицидом». Пятнадцать лет тишины. Его первый публичный пост за более чем десятилетие — Issue #327 на GitHub: «Нет права перелицензировать этот проект».
1 468 человек поставили ему плюс. Issue теперь заблокирован.
Если вы пишете на Python, вы почти наверняка зависите от chardet. И судьба этой юридической битвы может определить, значит ли копилефт хоть что-нибудь в эпоху ИИ.
Читать далееПродолжаем следить за эволюцией разума на Земле. Сегодня речь пойдёт про нейросети, но пока не кремниевые, а белковые. Их появление ощутимо подстегнуло движуху на нашей планете и стало следующим шагом на длинном пути к той позиции на шахматной доске эволюции, которую мы имеем сегодня.
Погнали!Всем привет! Сегодня я хочу поделиться опытом создания веб-приложения на основе GigaChat API от Сбера. В проекте я использовал не только текстовый диалог с нейросетью, но и добавил голосовой ввод (распознавание речи) и озвучку ответов с помощью SaluteSpeech. Получился полноценный голосовой AI-ассистент. В этой статье я расскажу о технических деталях: как получить доступ к API, как организовать обмен сообщениями, кэшировать токены, обрабатывать ошибки и сделать удобный интерфейс.
Читать далееПривет! Меня зовут Карина, я QA-инженер в hh.ru. Наша компания растёт, а вместе с ней — число команд, вовлечённых в разработку и функционал. Появляются новые сервисы, базы данных, очереди. Каждый компонент требует слаженной работы и надёжной поддержки на тестовых стендах.
Сегодня мы работаем с гибкой тестовой средой, которую можно настроить под любую задачу. В статье расскажу, как вся эта сложная система выглядит изнутри.
Читать далееБыла такая производственная история на металлургическом комбинате несколько лет назад, которой я занимался.
Представитель заказчика поднял непонятный для меня скулёж, что как то неправильно происходит у нас производство. Продукция производилась в нескольких цехах последовательно, а представители находились у нас на комбинате непрерывно, им выделили несколько кабинетов с техникой. Жаловались они генеральному, разбираться направили меня.
Первый вопрос - у них нет всей документации на продукцию. Такого быть не могло, поскольку документация шла через меня и мы дополнительно делали целых два комплекта документации только для них. Полистал их подшивки документов - какие-то обрывочные данные, не по порядку номеров, не по датам. Журналов учёта документации нет, архив в беспорядке - а им выделили помещения для этого и даже персонал комбината для помощи при необходимости. Сами эти представители корчат из себя бизнесменов у которых за воротами серьёзные бизнесы, а здесь они просто, что бы стаж шёл. Ну и знаний и понимания процесса у них соответственно нет.
Второй вопрос - в цеху нет заготовки, мы срываем их заказ. Какое им дело до заготовки вообще не понял, это руководство комбинатовского цеха как то через них решило сказать, что план не будет выполнен по независимым от них причинам. Пошёл на склад цеха и там под горой производственного мусора в виде брака, окалины, доработки нашел заготовку.
Тут все стоявшие единой кучкой стали ныть что ей же три года, как они могут брать её в работу, да и документов на неё уже нет.
Читать далее13 марта 2026 года вышла новая мажорная версия инструмента для сборки фронтенд‑приложений — Vite 8. Главным изменением стал переход на новый бандлер Rolldown, написанный на Rust. Теперь Vite использует единый инструмент вместо связки esbuild и Rollup, что позволяет значительно ускорить сборку — по заявлениям разработчиков, в некоторых проектах прирост достигает 10–30 раз. Это самое значительное изменение архитектуры Vite со времени выхода Vite 2.
Кроме этого, в релизе появились встроенные devtools, улучшенная поддержка TypeScript, новые возможности для SSR и ряд изменений в экосистеме плагинов. На основе поста в официальном блоге Vite 8 разберём ключевые нововведения и как они повлияют на разработку.
Читать далееКогда сервер с конфигом заблокировали — клиент отвалился. Разбираем способ доставки который сломать сложнее чем сам интернет
У любого прокси-сервиса есть слабое место которое не связано с протоколом. Сервер переехал, IP сменился, конфиг устарел — и пользователь сидит без связи пока не получит обновление вручную. Чем больше пользователей, тем острее проблема.
Стандартное решение — раздавать конфиги через HTTPS. Удобно, пока URL не попал в реестр. После этого тысяча человек одновременно пишет в поддержку.
DNS TXT-записи решают эту проблему не через обход блокировок, а через выбор канала который блокировать политически сложно.
Читать далееЧеловеку нужен горизонт. На Земле он есть всегда — даже в городе, даже в лесу ты знаешь, что где-то там, за домами или деревьями, небо встречается с землей. На Луне горизонта нет. Ты всегда стоишь в центре идеально круглой чаши, и звезды висят над тобой, никогда не мигая.
Я прожил здесь тридцать пять лет и не привык.
Меня зовут Михаил Ветров. Мне шестьдесят семь. Когда-то я был инженером систем жизнеобеспечения, молодым специалистом, выигравшим лотерею — желающих лететь на «Архимед-1» оказалось больше, чем мест. Теперь я старик, который чинит всё, что ломается, и рассказывает детям сказки о синем небе.
Детям... Впрочем, обо всем по порядку.
Читать далее10 лет читал Хабр, но после нескольких публикаций — заметил то, чего не замечал будучи читателем. Про манипуляции авторитетом, конформизм первого лайка и про то как писать статьи (кратко, по делу).
Читать далееКак добавить аудио-модальность в LLMку максимально экономно? Рассказываю про серию попыток добиться совместимости эмбеддингов разной природы
ПогрузитьсяПочему большинство CRM не работают в автосервисах "Гараж", ?
Потому что их проектируют 30-летние разработчики,
а используют 45-летние мастера, в мазуте и информация о пк заканчивается на Скайпе.
Когда я взял в аренду автосервис, оказалось, что: весь учёт ведётся в блокноте и это норма у 80% автосервисов, сложные CRM никто не хочет открывать, интерфейс должен быть быстрее бумаги
Это история о демографии отрасли, UX для мастеров и попытке сделать CRM, которой реально будут пользоваться.
Читать далееМногопоточность — одна из самых сложных тем в Java. По сути это ситуация, когда несколько потоков работают с общими данными и в процессе работы легко столкнуться с состоянием гонки (race condition), потерей обновлений или даже повреждением структуры данных. Чтобы этого избежать, доступ к критической секции кода нужно ограничить: одновременно там должен находиться только один поток.
В Java есть два основных механизма для решения этой задачи: встроенное ключевое слово synchronized и явные блокировки из пакета java.util.concurrent.locks, наиболее популярная из которых — ReentrantLock. Оба подхода обеспечивают взаимное исключение (mutex), но работают по-разному и подходят для разных сценариев.
В этой статье разберем, почему обычная переменная не подходит для многопоточного счета, как работают synchronized и ReentrantLock, и поможем выбрать правильный инструмент для вашей задачи.
Читать далееЯ собрал команду из 9 ИИ-агентов, которая проектирует, пишет, тестирует и деплоит других ИИ-агентов. Без людей в цикле. Стоимость — один сервер с GPU.
Не бывает «лучшей модели» — бывает лучшая модель для конкретной роли. Оркестратору нужен reasoning (GPQA 88.4%), билдеру — кодогенерация (HumanEval 92.7%), критику — понимание tool use (tau-bench 87.4%). Поэтому вместо одного GPT-5 на все задачи — 6 open-source моделей на 9 ролей.
Внутри: конкретный маппинг модель → роль с обоснованием через бенчмарки, трюк с шарингом инстансов (9 агентов = 3-4 модели), три конфигурации развёртывания от одной RTX 4090 (24 GB) до кластера A100 (211 GB), квантизация, инфраструктура инференса и интерактивный дашборд.
Читать далееРазработчики, работающие с «грязными» данными регулярно сталкиваются с задачами, которые сами по себе несложны, но требуют небольших вспомогательных инструментов. Нужно декодировать строку Base64 из лога, проверить хеш файла, быстро попробовать XOR-ключ, разобрать бинарный фрагмент или понять, что скрывается внутри странной строки из сетевого дампа. Обычно для этого приходится комбинировать несколько утилит, писать короткие скрипты или искать подходящую библиотеку. В какой-то момент вокруг таких задач накапливается целый набор вспомогательных инструментов, каждый из которых решает лишь небольшой кусок проблемы.
Знакомьтесь, CyberChef - веб-приложение, разработанное в Government Communications Headquarters. Его нередко называют «кибер-швейцарским ножом» для работы с данными. В одном интерфейсе собрано несколько сотен операций: кодирование и декодирование строк, криптографические алгоритмы, работа с бинарными форматами, сетевые структуры, временные метки, анализ сертификатов и множество других преобразований. При этом инструмент не требует установки и работает прямо в браузере, хотя при необходимости его можно скачать и использовать локально.
Читать далееВсем привет. Я уже около 10 лет занимаюсь разработкой и около 5 лет полностью перешел на продукты JetBrains, и за все это время у меня накопилось около 150 проектов как рабочих, так и своих личных, я их конечно же красиво разложил по папочкам на диске, поставил теги на папки в маке и добавил быстрый доступ.
Я работаю с несколькими клиентами, активных проектов в работе около 25 штук, стандартные средства и функционал IntelliJ IDEA(Recent projects) с таким количеством прекрасно справляется, быстро ввел название сервиса в поиск и так же быстро открыл.
Идеальная жизнь закончилась когда ко мне пришел клиент с еще 25 микросервисами в разных репозиториях и беклогом с багами в 300+ задач(white-label решение), я вздохнул и начал работать с 50 активными проектами и обнаружил что "Recent projects" в IDEA умеет хранить только 30 последних открытых проектов, и если ты открываешь 31 проект, увы первый пропадает как из поиска, так и из списка.
Через пару месяцев этот же клиент отправил меня на помощь одному из своих заказчиков, где те же 25 микросервисов, но со своими фичами, функционалом и так далее. По итогу к декабрю у меня образовалось 75 рабочих проектов и с десяток личных, и работать с этим комфортно я не представлялось возможным. Я начал искать какие то готовые решения на просторах магазина JetBrains - нашел три мертвых плагина с плоским функционалом и по факту тем же подходом как в "Recent projects".
Решение — свой плагин со всем функционалом что я хочу, без ограничений IDEA...
Читать далееВсем доброго дня! В предыдущей статье Kawai-Focus 2.3: логика приложения на TypeScript:
1. Переписана логика с JS на TS;
2. Разобрана проблема запуска на Arch по issue Сергея (отключена сборка AppImage).
Сегодня я покажу, какие есть адекватные способы собрать приложение под Arch Linux без боли и лишних проблем. Для удобства тестирования и сборки я установил операционную систему Cachy OS, которая базируется на Arch Linux.
Читать далееВ моем опыте работы с нейросетями было многое, в том числе ситуации, когда нужно было вписать ключи в тексты на сайты. У меня был список из 20 фраз, был красивый, заранее подготовленный текст, и я сидела и аккуратно, как хирург, впихивала эти ключи в абзацы. Где-то меняла падежи, где-то перестраивала предложения, где-то просто тупо вставляла в конец, потому что иначе никак. Работа в итоге всегда была сделана хорошо, но осадочек оставался.
Сейчас я делаю проще: вставляю в промпт фразу «впиши эти ключи, сохрани смысл» и через минуту получаю готовый текст. Нейросети не жалуются на сложные падежи, не просят доплатить за срочность и не тупят к вечеру пятницы.
Но есть нюанс - нейросетей стало очень много. Есть универсальные модели, которые умеют всё, но требуют правильных промптов. А есть узконаправленные инструменты - они заточены под конкретные задачи, но стоят денег и не факт, что сделают лучше.
В этом обзоре я решила разобраться раз и навсегда: что реально работает для SEO-обработки текстов, а что просто пылесосит бюджет.
Поехали! Приятного прочтения)
Читать далееGit — это вызов, через который проходит каждый второй новичок в разработке. Ветки называются «asdasd», коммиты — «правки», а pull request пугает своей красной кнопкой. Знакомо?
Меня зовут Сергей Прощаев, я Tech Lead в FinTech и преподаватель на курсах в OTUS. В этой статье разбираем самое главное: как создавать ветки и почему их нельзя называть как попало, что писать в коммитах, как сделать pull request в лучших практиках команд разработки
Разобраться в GitКак часто вы задумывались о нагрузочном тестировании (НТ), когда на подходе очередной релиз, но времени на дополнительные проверки катастрофически не хватает? В таких условиях НТ обычно выглядит ненужной роскошью, но на деле оно — неотъемлемая часть процесса, которой нельзя пренебрегать. Нагрузочное тестирование помогает избежать множества рисков, особенно в условиях роста количества пользователей и требований к производительности.
Мы — команда QA из РТЛабс. В этой статье мы расскажем, как с помощью опенсорс-инструментов создать надёжную и масштабируемую инфраструктуру для НТ, осуществлять запуск тестов в один клик, организовать высокопроизводительный мониторинг в реальном времени и долгосрочное хранение результатов.
Читать далее