и посмотреть медиа
NOP - Nuances of Programming
и посмотреть медиа
Channel about nuances of programming, IT humor and remote vacancies. Fresh insights for developers.
Channel about nuances of programming, IT humor and remote vacancies. Fresh insights for developers.
NOP::Nuances of Programming - channel with in-depth analysis of programming subtleties, humor and selections of remote vacancies. Useful content for developers of all levels in Telegram.
Почему Google держит миллиарды строк кода в одном репозитории Google хранит весь код в монорепозитории Piper: около 2 млрд строк и 86 ТБ истории. Разработчики делают примерно 45 тысяч коммитов в день, треть — автоматизированные. Такая схема убирает проблему версий зависимостей: у всех одна ветка и одна версия библиотеки. Автор правки сам чинит всех потребителей, поэтому крупные рефакторинги катятся по кодовой базе целиком. Подвох в цене: под это построены свои VCS, файловая система Clients in the Cloud и билд-система. Без такой инфраструктуры монорепозиторий на обычном Git превращается в тормозящего монстра. 🔗 Подробнее @nuancesprog #Tools #Git
Открыть канал и посмотреть медиаNitter всё: репозиторий в архиве, инстансы не отвечают Проект Nitter — легковесный фронтенд для Twitter/X без JS и регистрации — получил cease and desist. Репозиторий заархивирован и переведён в режим только для чтения. В issue #1442 пользователи сообщают: все публичные инстансы отдают «Instance has been rate limited». Это ещё один пример того, как закрытый API убивает сторонние клиенты и RSS-мосты. Если у тебя на Nitter завязаны парсеры или ленты, пора искать замену. Форки могут ожить, но юридическое давление никуда не денется. 🔗 Подробнее @nuancesprog #Tools #GitHub
Открыть канал и посмотреть медиаПочему батч-синхронизация MySQL теряет удаления Задание с обычным SELECT видит только текущее состояние таблицы. Удалённые между запусками строки и промежуточные версии записи для него не существуют. CDC читает binlog — тот же журнал, по которому MySQL делает репликацию. Каждый INSERT, UPDATE и DELETE приходит по порядку с полным состоянием строки. Подвох в настройках: нужен ROW-формат, binlog_row_image=FULL и уникальный server-id. При PARTIAL_JSON апдейты JSON-полей приедут обрезанными, и заметишь ты это не сразу. 🔗 Подробнее @nuancesprog #Data #Postgres
Открыть канал и посмотреть медиаКак побороть проблему 1+N запросов В блоге Acadia Engineering разбирают классическую беду ORM — проблему 1+N запросов. Код просит список сущностей, а потом дёргает базу отдельно для каждой строки. Сто заказов превращаются в сто один запрос вместо одного-двух. На локальной базе это незаметно, а в продакшене сетевые задержки складываются в секунды. Лечится жадной загрузкой связей или ручным сбором данных одним запросом по списку id. Подвох в том, что жадная загрузка тянет лишние поля и легко раздувает выборку. 🔗 Подробнее @nuancesprog #Data #Postgres
Открыть канал и посмотреть медиа4 КБ кода и 116 зависимостей: разбор одного npm-пакета Автор опубликовал крошечный React-компонент и потом честно проверил его как чужой. Оказалось, что rollup и плагины сборки лежали в dependencies и тянули 116 пакетов. Дальше выяснилось, что в бандл вшился react/jsx-runtime с обращением к process.env, которого в браузере нет. Плюс не было директивы "use client", и Next.js с App Router просто падал на импорте. Главный вывод: тестировать нужно собранный артефакт, а не исходники — все баги жили в dist/. Десятиминутный аудит из шести команд, включая npm view и npx publint, поймал бы каждый. 🔗 Подробнее @nuancesprog #Tools #React
Открыть канал и посмотреть медиаlibgccjit: как прикрутить JIT к игрушечному интерпретатору В документации GCC есть туториал, где стековый интерпретатор байткода компилируется в машинный код. Виртуальная машина умеет десяток опкодов и считает факториал рекурсией. Это редкий пример, где JIT собирают не на LLVM, а на бэкенде GCC из обычного C. Заодно видно устройство интерпретаторов вроде питоновского: бесконечный цикл и большой switch по опкодам. Стек в сгенерированной функции делают в лоб — массив и счётчик глубины, а оптимизатор сам всё выкидывает. Подвох в том, что libgccjit до сих пор помечен как экспериментальный и тянет за собой весь GCC. 🔗 Подробнее @nuancesprog #Languages #C
Открыть канал и посмотреть медиаRAG-ассистент придумал API платёжного провайдера Автор собирал офлайн-помощника по африканским платёжным API и прогнал 20 «злых» промптов. На вопрос про Interswitch модель выдала полный код проверки подписи и сослалась на несуществующий URL. Главный вывод: порог схожести тут не спасает. Худшая галлюцинация имела similarity 0.712, а корректный отказ — 0.691, то есть плохой ответ выглядел «увереннее» правильного. Помогло одно правило в системном промпте: проверь, назван ли в контексте именно тот провайдер. Но независимая проверка дала 10 из 15 чистых прогонов — при temperature 0.2 без фиксированного seed «пять из пяти» было просто удачным броском. 🔗 Подробнее @nuancesprog #AI
Открыть канал и посмотреть медиаSELF: исполняемый файл как база SQLite Фарид Закария собрал прототип SELF — формата, где бинарник это обычная база SQLite. Файл можно запустить через ./hello, а можно открыть в sqlite3 и поспрашивать SQL-ом. Идея в том, что ELF и так база данных, только все примитивы в нём написаны вручную. Таблица строк — это интернирование строк, .gnu.hash — самодельный индекс поверх фильтра Блума. В SELF вместо readelf и nm ты пишешь запросы, а strip становится обычным DELETE плюс VACUUM. Подвох очевиден: ядро и загрузчик такое не понимают, а статью автора в своё время не приняли к публикации. 🔗 Подробнее @nuancesprog #Tools #Linux
Открыть канал и посмотреть медиаПравда ли, что 15% коммитов — это фиксы? Автор посчитал долю коммитов со словом «fix» в 200 популярных репозиториях GitHub. Медиана вышла 9,3%, среднее — 10,5%, а не привычные 15%. В закрытых корпоративных репозиториях он стабильно видел около 15%. Разрыв между открытым и закрытым кодом — повод посмотреть на свою цифру. Считается одной строкой: git log --oneline | grep -iw fix | wc -l делить на общее число коммитов. Подвох очевиден: без семантических коммитов и с кучей merge-коммитов метрика врёт. 🔗 Подробнее @nuancesprog #Tools #Git
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!