Обновить
1132.21

Программирование *

Искусство создания компьютерных программ

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

Проснулся 1-го января и переписал библиотеку: релиз async_yookassa 1.0.0

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

Всем привет!

Вчера я выпустил крупное обновление 1.0.0 для своей библиотеки async_yookassa — неофициального клиента для асинхронного взаимодействия с API ЮKassa. О том, что изменилось, зачем я вообще взялся её писать и почему официальный SDK может "убить" вашего бота — в этой статье.

Читать далее

Почему ваш проект не замечают: разбор репозитория на практике

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

Open Source проект может быть технически отличным и при этом оставаться неизвестным. Всё прекрасно работает, но репозиторий не привлекает ни пользователей, ни контрибьюторов. Причина чаще всего не в качестве кода, а в томкак проект представлен на GitHub.

Сегодня я хочу разобрать проект Tgin (инфраструктурная прослойка для Telegram-ботов на Rust). На его примере я покажу, какие элементы репозитория реально влияют на интерес к проекту, где чаще всего теряются пользователи и контрибьюторы.

Читать далее

Как я перестал слушать «Unknown Artist — Track 01» и написал свой распознаватель музыки

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

12 000 MP3 без тегов, 15 лет прокрастинации, один выходной на код. Асинхронный распознаватель на Python + Shazam: как обойти rate limiting, починить кривые кодировки и не съесть всю память. Код открыт.

Читать далее

Langium — инструмент для языкового моделирования

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

Разработка собственных языков и языковых серверов может быть сложной и рутинной задачей. Langium — инструмент на TypeScript, который упрощает создание предметно‑ориентированных языков (DSL) с готовым LSP‑сервером.

Меня зовут Денис Маматин, я работаю в R&D‑отделе СберТеха. В ходе разработки одного из наших проектов мы столкнулись с необходимостью создания собственного DSL, и в этом нам существенно помог Langium. В этой статье я рассмотрю, как устроена грамматика Langium, как создать первый проект и какие преимущества он даёт разработчику.

Читать далее

Javascript: прощай, Date, здравствуй, Temporal

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

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

Мне нравится, когда можно увидеть обратную сторону; какой бы формальной и железобетонной ни казалась спецификация ES-262, мы всё равно замечаем (если знать, куда смотреть) в ней все хорошие и плохие решения, принятые сотнями людей, разрабатывавших язык. У JavaScript есть характер. Да, он не всегда делает всё в точности так, как можно ожидать, но на мой взгляд, JavaScript обладает настоящим очарованием, которое можно оценить, если глубоко его изучить.

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

Читать далее

Решение задач по программированию с помощью нейросети: сравниваем лучшие ИИ

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

Лучшая нейросеть для решения задач по программированию: обзор Кэмп, сравнение с ChatGPT и Claude. Разбор кейсов на Python и C++, пошаговые инструкции и лайфхаки для учебы в 2026 году.

Читать далее

Как проходить Leetcode-интервью: ритуал, который работает

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

Решил 434 задачи на Leetcode и прошёл все кодинг-интервью за последние 4 года — X, Google, Careem, TrustWallet, Yandex. Делюсь тем, что понял: какие мифы уже не работают, как готовиться, и главное — ритуал решения задачи, который оценивают интервьюеры.

Читать далее

Следующие два года в разработке программного обеспечения

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

Эта статья была вдохновлена статьей https://addyosmani.com/blog/next-two-years/. Постить на Хабре просто очередной перевод выполненный LLM, на мой взгляд, не имеет смысла и ценности не несет. Плюс разработка в России ≠ разработка в США, у нас много своих нюансов и специфики. При этом я заимствовал вопросы, и части текста автора , потому что полностью разделяю его мнение в некоторых вопросах, а в некоторых вопросах наши мнения расходятся (да, да, можете считать, что это с одной стороны урезанный, а с другой дополненный перевод статьи).

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

Читать далее

Флаг вам в руки: внедряем feature flags в Django

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

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

Сегодня поговорим о том, как включать и выключать функциональность в Django, не разворачивая каждый раз новый деплой. В больших проектах эту задачу решают через feature flags, такие условные флажки , которые позволяют запускать скрытые возможности лишь для части пользователей или откатывать фичи, не выкатывая заново весь код. Если вы хотите поэтапно раскатать новую функцию, сделать A/B тест или просто спрятать недоделанный модуль за переключателем, вам сюда.

Читать далее

Как работать с legacy-системами и не ломать бизнес: опыт MANGO OFFICE

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

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

Читать далее

std::move ничего никуда не двигает: подробный рассказ о категориях значений в C++

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

Проблема: когда из-за «оптимизации» код замедляется

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

Читать далее

Полезные ресурсы для тестировщиков: подборка от специалистов Selectel

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

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

Вместе со специалистами Selectel мы собрали полезные материалы для тестировщиков. В список вошли ресурсы, которые помогают развивать практические навыки, системное мышление и уверенно расти в профессии — от начального уровня до Middle.

В подборке собрано то, что действительно помогает в работе и может служить ориентиром для самостоятельного обучения. Подробности под катом!

Читать далее

Ненормальные непотребства, трюки, хаки и алгоритмы на C

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

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я начал серию статей, которая раскрывала много интересных моментов — от математических алгоритмов и оптимизации до ГПСЧ.

Если вы видите на экране эту шестую часть нашей бесконечной саги о ненормальном программировании на C, значит, мы с вами прошли уже немало: от конвертации миль в километры через Фибоначчи до ГПСЧ и быстрых вычислений.

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

Добро пожаловать в шестую часть. Прошу под кат — там будет жарко, быстро и очень, очень интересно.

Читать далее

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

Black-White Array: новая структура данных с O(log N) аллокаций

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

Black-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления O(\log N) и O(\log N) используемых участков памяти. Преимущества:

• Амортизированное время вставки/удаления/поиска сравнимое с реализацией BTree от Google;
• Низкое количество аллокаций памяти при операциях вставки O(\log N) - меньше давления на сборщик мусора, ниже фрагментация памяти;
• Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессором и скорость обхода/доступа к данным;
• Позволяет хранить элементы с одинаковыми ключами - не нужно использовать дополнительные структуры для группировки таких элементов;
• Низкий оверхед на хранение служебной информации - экономия памяти по сравнению с другими структурами данных;
• Удобен для вставки батчами;
• Простая сериализация и десериализация;

Подробности

Формат CHM, структурность, локальность, скорость и около-научная лирика

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

Не знаю как у вас, а у меня браузер позволяет иногда сохранить всю веб-страницу в этом формате для локального просмотра. И это удобнее — иметь один файл на страницу вместо html‑портянки с кучей разбросанных картинок и скриптов.

Но вообще‑то, CHM — это многостраничный формат, html‑версия и наследник стандартного файла справки HLP Windows 90-х — 00-х годов. И он может хранить в структурированном виде целый сайт или даже портал, с перекрёстными ссылками внутри.

Памятуя успешное использование локальной версии портала cppreference.com, я решил, почему бы не попробовать использовать такой же метод: упаковать доку в формате chm.

Читать далее

CTE (Common Table Expression) / Django CTE

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

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

Поэтому в этой статье я расскажу:

1. что такое CTE

2. зачем оно нужно 

3. что такое рекурсивные СТЕ

4. чем СТЕ отличается от временных таблиц, представлений и подзапросов

5. как СТЕ может плохо сказаться на производительности 

6. как использовать СTE в самом народном фреймворке Django

Использует SELECT со звёздочкой Макс - Lead Backend и автор YouTube-канала PyLounge. Поехали! 

Читать далее

Архитектурный подход к контролю согласованности в LLM

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

1.1. Контекст и вызов Современные большие языковые модели(LLM) совершили рывок в обработке естественного языка, приблизившись к человеческому уровню в задачах генерации и понимания текста. Однако за внешней убедительностью ответов скрывается одна большая и существенная проблема: LLM по своей природе всё также остаются «предсказателями» следующего токена, а не системами, построенными на формальной логике или чётких онтологических моделях. Это порождает парадокс: модели, способные вести глубокие дискуссии по сложным темам, могут формировать ложные выводы или выдавать противоречивые утверждения в одном ответе.

1.2. Суть проблемы: смешение абстракций и отсутствие внутренней дисциплины
Галлюцинация не являются основной проблемой, они лишь следствие. Основная причина в
систематическом нарушении согласованности между различными уровнями обработки информации. Это проявляется в нескольких ключевых типах логических сбоев, скрывающихся в архитектуре LLM:

· Фактическая несогласованность: Ответы модели противоречат проверяемым данным или её же собственным предыдущим утверждениям в рамках диалога.
· Логическая несогласованность: Нарушение базовых правил дедукции (например, признание истинности утверждений «А → Б» и «А», но отрицание «Б») или последовательности в цепочках рассуждений.
· Контекстуальная несогласованность: Неспособность сохранять все выводы и факты при генерации сложного ответа, что приводит к искажению или полной замене исходных условий.

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

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

Читать далее

Админ vs студент: разбор тестового задания — сервис консультаций на Laravel за неделю

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

Эта статья — подробный разбор тестового задания на позицию PHP-разработчика, которое мне пришлось выполнить в краткие сроки из-за приближающей сессии. Я расскажу, с какими трудностями столкнулся, будучи студентом и новичком в веб-разработке, как построил архитектуру проекта «Школьные консультации» и что из этого вышло. Если вам интересен взгляд «с первоначального этапа» на классическую задачу или вы хотите узнать, чем всё кончилось, или у вас был похожий опыт (о котором вы хотели рассказать), то добро пожаловать.

Читать далее

Чпоньк! — как сделать разработку в 1С такой же быстрой, как Ctrl+S в VS Code

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

Привет всем! Меня зовут Ростислав, я программист 1С в ТехВилле.
И если Вы разрабатываете под 1С, то знаете главное правило: хочешь протестировать мелкое исправление — готовься перезапускать режим предприятия, снова открывать нужный документ, снова восстанавливать контекст и снова проходить длинный бизнес-процесс ради
одной кнопки.

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

Так появился Чпоньк! Название говорит само за себя: нажал Ctrl+С = чпоньк! и изменения уже применены.

Хочу рассказать, как он работает, чем помогает и почему возвращаться к старому циклу «правка → перезапуск → проверка» совсем не хочется.

Читать далее

Бинарный поиск: от угадывания чисел до эффективных алгоритмов

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

Говорят, что 90% программистов не могут написать бинарный поиск без ошибок с первого раза. Вроде бы простая логика: делим массив пополам и ищем. Но почему тогда программы «падают» на больших числах или уходят в бесконечный цикл? В этой статье мы разберем бинпоиск «на пальцах», напишем идеальный код и посмотрим на анимациях, как именно работают «тиски» этого алгоритма.

Читать далее