Pull to refresh
52
0.3
Дмитрий @bogolt

User

Send message

Гарантирует ли техническая грамотность аудитории верную оценку инноваций или как Хабр USB-С хоронил

Level of difficultyEasy
Reading time5 min
Views8K

Я пишу на Хабре довольно давно и иногда натыкаюсь на собственные же старые посты. Недавно попалась вот эта заметка (по другому ее и не назовешь) от 2013 г. про скорое появление USB-С. Ее прочитало 50 тысяч, она получил 65+ и — самое главное — 170 комментариев (ох, вот он старый Хабр, где даже два абзаца текста могли быть встречены вот так!). И, как обычно — комментарии оказались самим ценным.

Сегодня, спустя 12 лет, когда универсальность USB-С признала даже Apple, мне показалось любопытным проанализировать, как технически грамотная и продвинутая аудитория (а какая же она еще на Хабре!) восприняла эту информацию тогда и увидела перспективы интерфейса. Спойлер: только 17% комментариев проявили поддержу или технический интерес к новому интерфейсу.

Интересно? Поехали!

Оптимизация индексов базы данных: проблемы, решения, практические рекомендации

Level of difficultyMedium
Reading time11 min
Views6.8K

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

Индекс — это как указатель в толстенном справочнике. Без него, чтобы найти нужный термин, вы обречены листать страницу за страницей. С ним — вы мгновенно открываете нужный раздел. Но что, если указатель сам размером с полкниги? Или ведет не туда? Такой помощник только вредит. С индексами в БД всё то же самое. Грамотная стратегия индексирования — это полет. Ошибочная — это бег в мешках по болоту.

Читать далее

Как не облажаться с типами данных в PostgreSQL

Level of difficultyMedium
Reading time19 min
Views9.7K

Недавно вышла отличная книга PostgreSQL Mistakes and How to Avoid Them от Jimmy Angelakos — системного архитектора, практика и давнего участника сообщества PostgreSQL. Книга подробно разбирает распространённые ошибки, с которыми сталкиваются разработчики и администраторы при работе с PostgreSQL, и предлагает практичные решения: от тонкостей конфигурации и миграции до антипаттернов в SQL и выбора типов данных.

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

timestamp without time zone может ломать логику расчёта интервалов;

money — это не то, чем кажется (и почему он опасен);

char(n) и varchar(n) не дают ожидаемой экономии и даже вредны;

serial — это прошлый век, а identity — настоящее.

Глава будет полезна всем, кто работает с PostgreSQL в проде — особенно backend-разработчикам, независимо от языка и фреймворка. Если вы проектируете схемы БД, пишете SQL-запросы или просто хотите избежать неприятных грабель — стоит прочитать.

Читать далее

“Блокировки которые никого не должны зацепить”.  Или как я восстанавливал работу Talkvio из-за блокировок Cloudflare

Level of difficultyEasy
Reading time3 min
Views11K

Немного предыстории, прежде чем начать — о том, что у меня за проект такой — Talkvio. Уже два года я в свободное от основной работы время разрабатываю свой пет-проект — Talkvio, альтернативу Пикабу, где всё должно быть лампово и плюшево.

Проект уже довольно сильно развился: там есть нейросети для проверки орфографии, автотегов и помощи в формировании контента и заголовков. Есть Android-клиент, а iOS-версия находится в разработке. Реализована похожая система кармы, как на Хабре, есть даже минусы (привет администрации Пикабу), и многое-многое другое.

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

Забегая вперед, чтобы читателю было интересно, ресурс НЕ использовал Cloudflare.

Читать далее

Дыра в щите Cloudflare: как атака на Jabber.ru вскрыла проблему, о которой молчат c 2023

Level of difficultyEasy
Reading time5 min
Views34K

Многие помнят позапрошлогодний инцидент с Man-in-the-Middle атакой на XMPP-сервис jabber.ru. Эта история наделала много шума, но, как мне кажется, главный вывод из неё так и не был усвоен широкой аудиторией. А зря. Потому что эта атака вскрыла системную уязвимость в процессе выдачи TLS сертификатов, которая напрямую касается миллионов сайтов, особенно тех, кто доверяет свою безопасность Cloudflare.

В этой статье я расскажу вам о самой уязвимости и как вы можете быть ей подвержены.

В кроличью нору

Самые необычные и странные RPG: от абсурдной до гениальной

Reading time13 min
Views18K

Ролевые игры вновь на пике внимания. В 2025 году уже успели выйти такие хиты как: Kingdom Come: Deliverance 2, с глубоким реализмом и исторической достоверностью описания Средневековья; визуально чарующая Claire Obscure: Expedition 33 про поэтическое и мрачное путешествие по развалинам цивилизации; ремастер Oblivion, который возвратил игроков к истокам великой эпохи классических RPG.

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

Иногда игровые разработчики решаются выйти за рамки привычного и создают настоящие шедевры абсурда, философии или просто нарочито странных игровых миров. В этой статье мы собрали самые необычные и странные RPG, которые выходят за рамки жанра и остаются в памяти надолго. Такие RPG показывают, что жанр не обязан быть ограничен фэнтези-шаблонами. Они способны исследовать глубокие психологические, социальные и философские темы, нарушая привычные ожидания игроков. Эти игры, возможно, не для всех, но именно в них рождаются новые формы повествования и игровые механики.
Читать дальше →

Лаконичный макрос defer для C++17

Level of difficultyMedium
Reading time5 min
Views6.2K

Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное занятие. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода.

Макрос defer как никогда кстати! Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение, или даже выполнен goto наружу. Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС.

Читать далее

Вы уверены, что defer всегда безопасен?

Level of difficultyEasy
Reading time6 min
Views7.3K

Привет! Я Артур Давыдов, бэкенд разработчик в Здравсити. В этой статье хочу рассмотреть поведение defer более детально. Данную статья пишется в целях "попробовать себя", а так же, надеюсь, помочь кому-то разобраться с defer.

Читать далее

Правильный порядок колонок в B-tree индексах PostgreSQL или правило ESR

Level of difficultyMedium
Reading time9 min
Views7.1K

Когда в проекте используется составной B-tree индекс, важно не просто "создать индекс", а сделать это правильно — иначе запросы могут не только не ускориться, но и начать работать медленнее. Возникает логичный вопрос: как выбрать порядок колонок, чтобы индекс действительно работал эффективно? Брутфорсом? По интуиции? По селективности?

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

Читать далее

Для защиты своего сервера я использую zip-бомбы

Level of difficultyEasy
Reading time3 min
Views86K

Основной объём трафика в вебе возникает из-за ботов. По большей части, эти боты используются для обнаружения нового контента. Это читалки RSS-фидов, поисковые движки, выполняющие краулинг вашего контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM. Но есть и зловредные боты. Их создают спамеры, скрейперы контента и хакеры. На моём прежнем месте работы бот обнаружил уязвимость Wordpress и встроил в наш сервер зловредный скрипт, а затем превратил машину в ботнет, используемый для DDOS. Один из моих первых веб-сайтов был полностью выдавлен из поиска Google из-за ботов, генерирующих спам. Мне нужно было найти способ защиты от этих ботов, поэтому я начал пользоваться zip-бомбами.

Читать далее

Лучше самому изобрести колесо, чем ездить на арендованном квадратном

Level of difficultyEasy
Reading time5 min
Views9.4K

Так получилось, что загруженный в меня годами разработки опыт привел к нигилизму и отрицанию общемировых ценностей. Например, я ненавижу демократию, самое первое запротоколированное проявление которой привело к решению распять нахрен одного там назаретянина (но сейчас не об этом). Я отрицаю пользу IDE, необходимость развития языков программирования, целесообразность существования паттернов и еще много достижений цивилизации по остаточному принципу.

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

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

Изобретайте колёса и стройте велосипеды!

Навайбкодил с Cursor AI рабочее приложение. Но в чём подвох?

Level of difficultyEasy
Reading time5 min
Views24K

Я устал писать бойлерплейт и базовые стили. В итоге заставил ИИ делать это за меня. Результаты, размышления и откровения — внутри.

Читать далее

Графика и Python: 6 GUI-инструментов, которые пригодятся разработчикам в 2025 году

Reading time33 min
Views19K

Привет, Хабр! Меня зовут Леша Жиряков, я техлид бэкенд-команды витрины KION, а еще в МТС я возглавляю Python-гильдию.

В 2025 году Python остается одним из самых популярных языков программирования, а его возможности для создания графических интерфейсов (GUI) продолжают радовать разработчиков. В этой подборке — шесть лучших инструментов, которые выделяются функциями, активностью сообщества и фишками. Погружаемся в мир кнопок, окон и виджетов — от проверенной классики до ярких новичков GitHub.

Читать далее

Системный абсурд: как бюрократия и алгоритмы подменяют смысл

Reading time12 min
Views5.7K

«Системы логичны, но не разумны» 

Про конфликт между рациональностью системы и человечностью её участников, абсурдные правила, бунт и то можно ли без правил и регламентов обойтись. От опыта взаимодействия с HR и бюрократией корпоративной- до Камю и Кафеки.

Читать далее

Минимум книг, которые нужно прочитать начинающему или продолжающему свою кривую обучения программисту

Level of difficultyEasy
Reading time3 min
Views72K

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

Читать далее

Генератор случайных чисел, застрявший на одном значении

Level of difficultyEasy
Reading time7 min
Views6.2K

Моё исследование посвящено мини-игре Green Toad House в New Super Mario Bros (NSMB). В этой мини-игре используется случайность, поэтому в процессе я изучил генератор случайных чисел (RNG) NSMB.

Чтобы пост не был слишком длинным, будем считать, что вы знаете, что такое RNG, а также о концепции порождающих значений (seed). Если нет, то вот хорошие ресурсы для изучения: pannenkoek2012 в YouTube (SM64)Retro Game Mechanics Explained в YouTube (SMW)Википедия.

Читать далее

Как работает HTTP/2 и как использовать его в Go

Level of difficultyEasy
Reading time12 min
Views6K

HTTP/2 – это значительное обновление по сравнению с HTTP/1.1, решающее его ключевые ограничения, такие как блокировка Head-of-Line (HoL) и неэффективность многократных соединений. В этой статье мы разберёмся, почему HTTP/2 стал стандартом, как он устроен и чем отличается от предыдущей версии протокола. Мы рассмотрим ключевые концепции HTTP/2: мультиплексирование, сжатие заголовков HPACK, бинарный формат фреймов и серверный push.

Во второй части статьи мы покажем, как включить HTTP/2 в Go-приложениях. Вы узнаете, как правильно настроить HTTP-сервер с поддержкой TLS и ALPN, какие пакеты использовать и какие нюансы учитывать при разработке. Также мы обсудим практические аспекты работы с HTTP/2, возможные проблемы и пути их решения.

Читать далее

Создание прототипа RPG-игры на движке GemRB

Level of difficultyMedium
Reading time50 min
Views2.4K

Цель статьи - описание процесса того, как можно собрать небольшой прототип RPG-игры для движка GemRB. Кто не знает, GemRB (расшифровывается Game Engine Made with pre-Rendered Background) - это проект с открытым исходным кодом, направленный на создание клона движка Infinite Engine, того самого на котором в конце девяностых - начале нулевых были сделаны такие классические ролевые партийные игры как Baldur's Gate, Planescape: Torment, Icewind Dale и другие. Нынешнее состояние движка GemRB позволяет пройти все эти игры, используя их оригинальные ресурсы (графику, звук, тексты и прочее).

Одно из достоинств проекта GemRB в том, что под него можно сделать отдельную, совершенно независимую игру. По своей сути создание такой игры похоже на создание мода для игры Baldur's Gate (или другой подобной). В большинстве случаев используются те же механизмы и методы. В данной заметке хотелось бы рассказать, как можно сделать небольшой игровой проект в изометрическом стиле. Будем делать полностью с нуля, используя набор заранее подготовленных ассетов.

Читать далее

Более 14 лет ставлю цели на год: рассказываю, как и почему этот процесс работает у меня

Reading time14 min
Views65K

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

Читать далее

20-летие Linux для десктопных систем (часть 2)

Level of difficultyMedium
Reading time9 min
Views9.8K

Коротко о прошлой части: в стремлении создать идеальную десктопную систему, аналогичную GNOME и Debian, молодой Ploum присоединяется к тайному проекту «no-name-yet», который в итоге становится Ubuntu.
Читать дальше →
1
23 ...

Information

Rating
3,244-th
Registered
Activity