Обновить
1067.2

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

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

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

Оптимизация выравнивания и заполнения структур в Go. В 2025 г. всё ещё экономим на спичках

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

Здравствуйте!

В большинстве своём мы не думаем о том, как Go размещает поля структуры в памяти. И правильно делаем, пока наши структуры не используются в миллионах экземпляров, не передаются в каналах или не сериализуются каждую миллисекунду.

Также неправильное выравнивание может негативно сказаться на кеш-памяти процессора и скорости доступа к данным. На 32-битных платформах некорректное выравнивание 64-битных атомарных переменных (например, int64 для sync/atomic) вообще способно привести к панике.

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

Читать далее

Как мы запретили писать код с багами в локализации или «Без права на bug»

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

Привет, Хабр! Я работаю фронтенд-разработчиком в ЛАНИТ. В этой статье я поделюсь опытом изменения подхода к интернационализации и опытом внедрения автоматизированной проверки переводов, что позволяет снизить риски появления багов и ускорить релизы приложения.

Читать далее

Как появилась программа багбаунти? История развития

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

Привет, Хабр! Я — Ксюша, младший специалист по ИБ в Selectel. 22 сентября 2012 года в России появилась первая программа багбаунти. Сегодня в индустрии уже работают несколько отечественных платформ, которые объединяют тысячи исследователей и десятки компаний. С каждым годом интерес к багбаунти увеличивается: все больше людей принимают в этом участие, а бизнес активнее разрабатывает собственные программы. Если впервые слышите об этих программах или хотите узнать, как они появились, вы обратились по адресу. В статье поделюсь историей возникновения и расскажу, как уже сегодня можно зарабатывать (и учиться) на чужих ошибках.

Читать далее

Как я, не разработчик, читаю туториал, который ты, разработчик, написал для меня

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров21K

«Привет! Я разработчик. Для начала расскажу о своём важном для этой статьи опыте: я пишу код на Hoobijag, иногда на jabbernocks и, разумеется, на ABCDE++++ (но никогда — на ABCDE+/^+; вы что, шутите?); мне нравится работать с Shoobababoo и иногда с клептомитронами. Я устроился на работу в Компанию1 и занимаюсь там кодом для Shoobaboo, поэтому перешёл к использованию Snarfus. Давайте разбираться!

Читать далее

Трюк, который раньше ускорял Python, теперь лишь захламляет код

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

Команда Python for Devs подготовила перевод статьи о том, почему любимая оптимизация Python — присваивать глобальные функции локальным переменным — больше не даёт выигрыша. CPython 3.11 стал умнее, и старый хак l = len уже почти бессмыслен.

Читать далее

Полезный проект — ещё полдела: инструменты для оформления README и документации

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

База знаний помогает пользователям быстро понять, какие возможности есть у облачных сервисов — так же, как качественный README объясняет назначение open source‑проекта. 

В этом материале мы собрали несколько интересных бесплатных инструментов для подготовки README.

Читать далее

Топ языков программирования в 2025 году: рейтинг IEEE и влияние на него языковых моделей

Время на прочтение4 мин
Количество просмотров16K

Привет, Хабр! IEEE Spectrum опубликовал ежегодный рейтинг языков программирования за 2025 год. Там много всего интересного, на что стоит обратить внимание. Давайте разберемся, как формируется этот список, какие языки пока что удерживают лидерство, кто теряет позиции и почему, а также как ИИ все (ну или почти все) меняет. Поехали!

Читать далее

Что программисту нужно знать про зрение: гайд офтальмолога и инженера

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

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

Читать далее

PostgreSQL 18: новый AIO ускоряет запросы до 3-х раз. Что происходит?

Время на прочтение5 мин
Количество просмотров19K

В мире баз данных, где каждая миллисекунда на счету, а объемы информации растут как на дрожжах, выход PostgreSQL 18 стал настоящим подарком для разработчиков и администраторов. Это не просто косметический апгрейд, а глубокая перестройка подкапотных механизмов, от облачных хранилищ до высоконагруженных OLAP-систем. Давайте разберемся, что там в этом релизе появилось и/или изменилось.

Читать далее

Как часто вы думаете о Римской империи… (cтатическом анализе кода)

Время на прочтение9 мин
Количество просмотров3.4K

Привет! Нет, вы не ошиблись — это действительно историческая статья. Но не о Риме, а о статическом анализе кода. Хотя... чем он хуже? У него тоже есть свои императоры-родоначальники, войны с багами и даже падения (пожалуйста, не запускайте анализ на некомпилируемом коде).

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

Меня зовут Владислав Столяров, я руководитель команды анализа безопасности продуктов в мультипродуктовой экосистеме МойОфис. Кстати, идея статического анализа напрямую связана с компиляторами (разбор кода, как никак). Поэтому уместно вспомнить, что недавно мы открыли исходный код собственного компилятора tsnative, позволяющего использовать в одном приложении сразу два языка — TypeScript и C++. Скачать и поисследовать можно по ссылке (лицензия Apache 2.0).

А теперь вернёмся к истории статического анализа. Пойдём по порядку и и попробуем восстановить хронологию его становления...

Читать далее

Используйте простейшие рабочие решения

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

Занимаясь проектированием систем ПО, идите самым простым путём из возможных.

Причём эту рекомендацию можно применять на удивление широко. Я искренне верю, что так можно делать всегда. Эта техника подходит для исправления багов, обслуживания имеющихся систем и проектирования новых.

Многие инженеры, продумывая дизайн системы, представляют себе некий её «идеал»: что-то стройное, практически бесконечно масштабируемое, удобно распространяемое и так далее. Я же считаю, что это абсолютно ошибочный подход к проектированию ПО. Напротив, нужно вложить всё это время в глубокий анализ имеющейся системы, а затем реализовать простейшее рабочее решение.

Читать далее

Чистовики патриарха. О трёх последних книгах Олега Цилюрика

Время на прочтение6 мин
Количество просмотров4.4K

Привет, Хабр! На связи Олег Сивченко @OlegSivchenko редактор направления «Компьютерная литература».

Наша первая статья в корпоративном блоге вызвала ваш огромный интерес (+122) и оживлённое обсуждение с участием 30 пользователей (считая нас). На наш взгляд, вас заинтересовал вопрос авторских черновиков и доработки их до полноценных рукописей. Развивая тему, связанную со свободным ПО, хочу рассказать вам сразу о трёх наших знаковых книгах, посвящённых операционной системе Linux. Эти книги написал легендарный харьковский программист Олег Иванович Цилюрик (1951 — 2024), к сожалению, не дождавшийся выхода в свет 2-го издания своей книги «Linux и Go. Эффективное низкоуровневое программирование» (оглавление).  Opus Magnum, принадлежащий его перу и вышедший у нас в марте 2023 года, называется «Расширения ядра Linux. Драйверы и модули» (оглавление). Кроме того, мы выпустили экзотический и по-своему незаменимый труд Олега Ивановича, который называется «Сети Linux. Модели и приложения» (оглавление), посвящённый настройке, эксплуатации и внутренней организации оверлейной сети Yggdrasil (октябрь 2023).  Эта книга очень хорошо вписалась по духу и уровню в разрабатываемую нами нишу кибербезопасности, и, судя по отзывам на маркетплейсах, незаменима в нашу эпоху не столь свободного Интернета. Наконец, Олег Иванович самоотверженно справился с переводом одной книги O’Reilly —«Изучаем eBPF: программирование ядра Linux для улучшения безопасности, сетевых функций и наблюдаемости», вышедшей у нас в июле 2024 года. Давайте расскажу о двух из этих книг немного подробнее.

Читать далее

Почему Фараон остается лучшей игрой в серии

Время на прочтение14 мин
Количество просмотров16K

В 90-х и 2000-х студия Impressions Games выпускала отличные исторические градостроительные симуляторы. Я играл во все игры этой серии от незабываемого Caesar 3, который вообще был первой моей компьютерной игрой на отцовском компуктере, до Императора про древний Китай. Но египетский Pharaoh и греческий Zeus запомнились намного четче, но вот почему я сказать не берусь.

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

Ностальгии пост и много скриншотов

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

DIY Open Source принтер. Часть 1. Покоряем USB Printer Class и имитируем печать текста

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

Привет, Хабровчане!

Это продолжение моего дневника разработки DIY струйного принтера предыдущая часть:

DIY Open Source принтер. Часть 0

В прошлый раз одной из поднятых проблем стал интерфейс между ПК и устройством. В данной статье я постараюсь решить вопрос подключения STM32 по USB и убедить Windows и Linux что это принтер.

Содержание


§1. Кратко о USB
§2. Поиск реализаций USB Printer Class для STM32
§3. Реализация USB Printer Class для STM32
§4. Тест на Windows
§5. Тест на Linux
§6. Как добавить поддержку печати изображений?

Читать далее

Транзакционная работа с топиками: архитектура и сравнение решений в Apache Kafka и YDB Topics

Время на прочтение14 мин
Количество просмотров5.3K

Привет, Хабр! Меня зовут Алексей Николаевский, и мы с командой делаем СУБД Яндекса. С 2013 года в Яндексе использовали Kafka для потоковой передачи данных. Но Kafka со временем перестала справляться с растущими объёмами, и в 2017 году мы перешли на своё решение.

Брокер сообщений YDB Topics во многом вдохновлялся Kafka: в нём также есть топики, партиции и аналогичные способы работы с данными. Но есть и существенные отличия, о которых в конце прошлого года я рассказал на московской конференции HighLoad. Под катом — адаптированная для Хабра статья по мотивам этого доклада: про архитектуру транзакций в обеих системах и интересные для разработчиков детали и нюансы, которые мы обсуждали на конференции.

Читать далее

Почему я не верю в ИИ-агентов в 2025 году, несмотря на то, что сам их разрабатываю

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

Команда AI for Devs перевела статью, в которой автор делится прогнозами о будущем ИИ-агентов в 2025 году. Его выводы: несмотря на шумиху, «автономные агенты» столкнутся с экономическими и техническими барьерами. Почему текущий подход к архитектуре агентов не сработает и какие методы действительно приносят результат — читайте в статье.

Читать далее

Квантование в картинках: раскрываем тайны сжатия LLM

Уровень сложностиСложный
Время на прочтение20 мин
Количество просмотров6.8K

Большие языковые модели (LLM, Large Language Model), как подсказывает их название, часто отличаются значительными размерами и слишком велики для того, чтобы нормально работать на обычных компьютерах. Масштабы этих моделей могут измеряться миллиардами параметров. Обычно для обеспечений достойной скорости их работы необходимы GPU с серьёзными объёмами видеопамяти (VRAM).

Из-за этого проводится всё больше и больше исследований, посвящённых уменьшению размеров подобных моделей. Исследователи совершенствуют обучение моделей, используют адаптеры, прибегают к другим способам их оптимизации. Один из главных приёмов уменьшения размеров моделей называется квантованием (quantization).

Читать далее

«Перловый ренессанс»: почему забытый язык Perl снова в деле

Время на прочтение5 мин
Количество просмотров7.2K

Представьте: вы сидите за терминалом, перед вами — гигабайт логов, и нужно за минуту вытащить ключевые паттерны, сгенерировать отчет и не утонуть в коде. Python? Можно. Но есть инструмент, который справится быстрее, лаконичнее и без лишних библиотек. Это Perl — язык, который многие из вас оставили еще в нулевых. Но в 2025 году он неожиданно выстрелил, взлетев с 27-го на 10-е место в рейтинге Tiobe. Что за магия, что произошло? Давайте разбираться.

Читать далее

Издательство «БХВ» теперь на Хабре. С чем мы к вам пришли

Время на прочтение4 мин
Количество просмотров10K

Приветствуем, коллеги!

Вы читаете первую статью от имени издательства «БХВ» (BHV) из Санкт-Петербурга, которое наконец-то решило официально обосноваться на Хабре и попробовать систематизировать нашу работу на этой великолепной платформе, объединив рекламный контент, тизеры и спойлеры в корпблоге. Меня зовут Олег Сивченко, я тружусь в БХВ менеджером проектов в области компьютерной литературы 4+ года, одновременно работаю в редакции Хабра, где веду небесспорный, но очень интересный научно-популярный блог @OlegSivchenko и блог с IT-переводами @Sivchenko_translate Кроме меня в команде БХВ есть ещё один маститый хабровчанин, пишущий под псевдонимом Валентин Холмогоров @Holmogorov — ведущий редактор журнала «Хакер», ранее работавший в отрасли кибербеза, руководил командой технических писателей. Так что, феномен хаброблога и хабрааудитории для нас не в новинку. Далее — немного о нашем издательстве.

Читать далее

Утилита Find и регулярные выражения

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

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

Регулярки освоить нетрудно. Буквально за пару часов можно получить почти средний уровень владения и научиться читать и писать выражения для поиска ip-адресов, e-mail, html-тегов, телефонных номеров, дат и прочих несложных конструкций. Я думаю, все это вам знакомо, но на всякий случай в конце статьи я добавил несколько ссылок для изучения.

Я уже прошел «курс молодого бойца» по регуляркам, написал свою, вставил в find, и она не сработала. Но пойдем по порядку.

Читать далее

Вклад авторов