IT Kniga
Интернет-магазин компьютерной литературы

Компьютерные новости

Как сокращение полных путей файлов в логах влияет на производительность и размер Браузера

C++ - habr.ru - Ср, 08/10/2025 - 08:00

Всем привет! Меня зовут Илья Кара́псин, я работаю над производительностью Яндекс Браузера. Задачи моей команды включают не только работу над самим браузером, но и прямое улучшение используемых в нём опенсорс‑решений, например Chromium и применяемых в нём проектов (Blink, V8, Catapult), в том числе и компиляторов (LLVM Clang). Другими словами, мы вносим вклад в сообщество. При этом поиск и создание улучшений для сторонних опенсорс‑проектов может стать прямой рабочей задачей даже в ходе стажировки.

К слову, моя работа в Браузере как раз с неё и началась. При отборе положительно сказалось наличие у меня pet‑проектов: отдельного внимания заслужил проект, использующий озвучку и SFX (сноска: сокращение от англ. sound effects — звуковые эффекты) из Heroes of Might and Magic V. Так удивительно совпало, что мой будущий руководитель ранее работал в Nival Interactive как раз над этой игрой.

А в этой статье я расскажу о том, как обычное сокращение полных файловых путей в логах до имени файла (например, path/to/filename → filename) может повлиять на размер исполняемых файлов и производительность Браузера, а также внести вклад в проект LLVM Clang.

Читать далее
Категории: C, C++

Слёзы, баги и C++: как Isaac стал легендарной игрой

C++ - habr.ru - Ср, 08/10/2025 - 07:27

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

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

Сегодня я расскажу о разработке культовой инди-игры The Binding of Isaac и разберу технические нюансы: путь от Flash к C++, как собирается план этажа, как устроены большие комнаты и секретки, по каким правилам живут эффекты предметов и их синергии, как Lua-скрипты встраиваются в движок для модов, где в архитектуре сделаны осознанные компромиссы.

Читать полную историю
Категории: C, C++

Много спрашиваю и откладываю встречи на последний момент: мой опыт прохождения собеседований

Java - habr.ru - Ср, 08/10/2025 - 07:00

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

Привет! Меня зовут Ярослав, я бэкенд-разработчик в компании «Синимекс» и ревьюер на курсе «Java-разработчик» в Яндекс Практикуме. Я расскажу, как проходил первые собеседования и что помогло мне получить офферы после двух интервью из трёх.

Читать далее

Рецензия на книгу: Изучаем eBPF: программирование ядра Linux для улучшения безопасности, сетевых функций и наблюдаемости

Linux для всех - habrahabr.ru - Ср, 08/10/2025 - 06:47

В русском переводе вышла книга «Изучаем eBPF» (Learning eBPF) Лиз Райс, главного специалиста по открытым технологиям в компании Isovalent. В ней автор рассказала сисадминам и разработчикам, как можно успешно применять eBPF в своей работе. eBPF (Extended Berkeley Packet Filter) — это технология, позволяющая безопасно и эффективно выполнять свой код в ядре Linux. Хотя у книги небольшой объем (220 стр.), она наверняка будет полезна для сисадминов и ИТ-специалистов по управлению сетями, обеспечению безопасности и мониторингу в сложных системах. 

Читать далее
Категории: Linux

Неиспользуемый JavasScript код. Поиск и удаление

JavaScript - habr.ru - Ср, 08/10/2025 - 03:53

Как найти и удалить неиспользуемый JavaScript код даже на крупном сайте. Объёмный, но простой в использовании способ.

Читать далее
Категории: HTML, CSS, Javascript

[Перевод] Что нового в JUnit 6: ключевые изменения и улучшения

Java - habr.ru - Втр, 07/10/2025 - 15:43

Спустя восемь лет после JUnit 5 выходит новая версия популярного фреймворка. JUnit 6 — это не просто обновление, а переход к современной экосистеме Java и Kotlin. В новом переводе от команды Spring АйО узнаем, что новая версия требует Java 17+, унифицирует версии компонентов, удаляет deprecated API и внедряет поддержку JSpecify для строгого null-safety.

Читать далее

От запахов к стабильности: рефакторим unit-тесты на JUnit

Java - habr.ru - Втр, 07/10/2025 - 14:47

"Запахи" в тестах — это полезные сигналы, которые важно уметь распознавать, чтобы писать удобные и легко поддерживаемые тесты. Мы уже писали про "запахи" в E2E-тестах; сейчас же рассмотрим распространённые ошибки, которые возникают при написании модульных тестов.

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

В книге Джерарда Месароша о паттернах в xUnit есть полезные главы о «запахах тестов», и в интернете можно найти много других полезных материалов по этой теме. Нам же показалось интересным подойти к этой проблеме не со стороны теории, а со стороны практики: какие частые ошибки можно встретить в тестах, как их исправлять, и почему именно тесты нужно писать так, а не иначе?

Мы разберём всё это на примере: напишем один модульный тест на JUnit, и по ходу дела будем исправлять возникающие ошибки. Код примера доступен на GitHub.

Читать далее

Эволюция подходов к написанию корутин от Си до С++20. Часть 1. Функция+макросы=корутина

C++ - habr.ru - Втр, 07/10/2025 - 10:16

Когда речь заходит о корутинах (сопрограммах) на С++, большинство программистов вспоминает фреймворк coroutine_ts, появившийся в стандарте С++20. Многие даже не догадываются о том, что писать корутины можно было задолго до появления упомянутого стандарта. При этом можно было использовать не только С++, но и Си. Данной статьей я открываю серию, в которой хочу описать свой личный опыт изучения корутин и привести примеры их использования. Надеюсь мои статьи помогут начинающим разобраться в этой сложной и интересной теме.

Читать далее
Категории: C, C++

Мой список вопросов о CSS для собеседования в 2025 году

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

Ко мне обращаются проверить знание CSS у разработчиков. Это может быть при найме или для составления плана обучения сотрудника.

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

Так, вы готовы? Давайте посмотрим, что я вам подготовил.

Читать далее
Категории: HTML, CSS, Javascript

В поисках идеального стека для Enterprise проектов: почему Java плюс MACH

Java - habr.ru - Втр, 07/10/2025 - 09:01

На протяжении многих лет команда Compo Soft успешно создавала eCommerce‑решения, клиентские порталы, PIM‑системы и другие решения малого и среднего бизнеса. Для этих задач было достаточно привычного стека на PHP и связанных с ним технологий. Когда в 2018 компания приняла стратегическое решение о выходе в сегмент Enterprise — встал вопрос о новом стеке. Им стала Java. В этой статье решили поделиться своим пониманием и опытом — почему сделан такой выбор, и почему PHP «не вывозит» Enterprise‑решения.

Читать далее

Как я пытался ускорить анализ 12 000 комментариев с помощью GPU за 50 тысяч, но победил процессор

Linux для всех - habrahabr.ru - Втр, 07/10/2025 - 00:21

История о том, как я хотел провести анализ комментариев, а в итоге получил неожиданный, но полезный опыт с локальным AI.

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

Хабр — 4 497 комментариев

Т‑Ж — 4 186

Смартлаб — 1 998

Пикабу — 726

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

Для этой цели у меня был, как мне казалось, идеальный инструмент: компьютер с Ubuntu 24 LTS, Docker и мощной NVIDIA GeForce RTX 5060 Ti на 16 ГБ. Казалось, что с RTX 5060 Ti на 16 ГБ анализ пройдёт молниеносно. Но на деле именно GPU стал главной точкой отказа — пришлось всё считать на CPU.

Код на GitHub.

Читать далее
Категории: Linux

Сам себе breakpoint

C++ - habr.ru - Пнд, 06/10/2025 - 17:26

Когда отлаживаешь программу, речь идет про использование отладчика в студии или другой IDE, то почти всегда имеешь дело с точками останова (breakpoint, бряками) — механизмом, когда выполнение программы приостанавливается, чтобы можно было заглянуть внутрь и понять, что происходит. Точек останова есть всего два основных типа, программные и аппаратные, а остальные все сделаны на их основе. Эти два базовых типа могут вести себя похоже, но устроены по-разному.

Программные точки останова — это то, с чем сталкивается каждый разработчик, когда вы ставите красную точку в среде разработки (в основном я использую большую студию) или используете команду bp под WinDbg. В этом случае отладчик просто подменяет один байт машинного кода в нужной инструкции на команду int 3. Это специальная инструкция для вызова прерывания отладки (Debug Interrupt), имеет машинный код 0xCC и говорит процессору: “Остановись, я хочу передать управление отладчику”, соответственно когда выполнение доходит до этой инструкции, срабатывает прерывание, и управление передаётся в отладчик. Отладчик "просыпается" и видит, что программа остановилась из-за исключения EXCEPTION_BREAKPOINT , возникшего по конкретному адресу, проверяет свой внутренний список точек останова и находит ту, которая была установлена по этому адресу.

Читать далее
Категории: C, C++

[Перевод] Как использовать любой CSS-фреймворк в вашем проекте — Часть 1

При интеграции CSS-фреймворков или UI-библиотек часто подключают готовые сборки, но такой подход ограничивает возможности кастомизации и увеличивает размер проекта.

В этой статье я покажу, как использовать исходный код Bootstrap (SCSS), настроить модульную структуру и подключить только те компоненты, которые действительно нужны. Результат — чистая архитектура стилей, меньший размер сборки и удобный фундамент для будущей дизайн-системы.

Читать далее
Категории: HTML, CSS, Javascript

[Перевод] Почему @starting-style не заменит keyframes (пока)

Команда JavaScript for Devs подготовила перевод статьи о новом CSS-правиле @starting-style — инструменте, который обещает упростить анимацию появления элементов. Но всё ли так гладко? Автор показывает, что за красивым синтаксисом скрываются подводные камни специфичности и неожиданные баги, из-за которых старые добрые keyframes по-прежнему оказываются надёжнее.

Читать далее
Категории: HTML, CSS, Javascript

[Перевод] Почему @starting-style не заменит keyframes (пока)

JavaScript - habr.ru - Пнд, 06/10/2025 - 13:30

Команда JavaScript for Devs подготовила перевод статьи о новом CSS-правиле @starting-style — инструменте, который обещает упростить анимацию появления элементов. Но всё ли так гладко? Автор показывает, что за красивым синтаксисом скрываются подводные камни специфичности и неожиданные баги, из-за которых старые добрые keyframes по-прежнему оказываются надёжнее.

Читать далее
Категории: HTML, CSS, Javascript

[Перевод] Зоны временной недоступности, или почему исходный код TypeScript усеян var-ами

JavaScript - habr.ru - Пнд, 06/10/2025 - 11:28

Если вы работаете с JavaScript, то знаете, что есть несколько способов объявить переменную (let, const). Эти объявления существуют уже давно и имеют адекватные правила блочной области видимости. Возможно, вы также помните времена, когда их не было. У нас был только var. А var - отвратителен. Каждая переменная изменяема, нельзя навязать неизменяемость, и что ещё хуже - var выходит иногда за пределы блока. Поэтому для меня было большим сюрпризом узнать, что код TypeScript (написанный на TypeScript - пока что) усеян var-ами так, будто на дворе 2003-й. В чем же причина?

Читать далее
Категории: HTML, CSS, Javascript

Java Digest #29

Java - habr.ru - Пнд, 06/10/2025 - 11:17

Всем привет! ???????????????????? Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске обозреваем Java 25. Смотрим на новые числовые типы, которые появятся в языке. Узнаем, что лучше: verify или clean install. Наблюдаем, как Spring продолжает обрастать новыми фичами. Изучаем сборщик мусора Shenandoah. В очередной раз убеждаемся, что чтение кода занимает куда больше времени, чем его написание. И еще много всего интересного. Приятного чтения ????

Читать двадцать девятый выпуск

Даем LLM суперсилу: глубокое понимание 10 языков в вашем проекте

JavaScript - habr.ru - Пнд, 06/10/2025 - 08:56

Примерно месяц назад я рассказывал о проекте @er77/code-graph-rag-mcp — инструменте, который превращает LLM из простого генератора кода в полноценного члена команды с глубоким пониманием архитектуры вашего проекта. Сегодня я рад представить самое крупное обновление, которое выводит анализ кода на совершенно новый уровень. Мы не просто добавили новые функции, мы кардинально расширили возможности инструмента, увеличили его производительность и добавили поддержку десяти языков программирования.

Читать далее
Категории: HTML, CSS, Javascript

Вычисление производных высших порядков полинома Ньютона

C++ - habr.ru - Пнд, 06/10/2025 - 08:27

Вычисление производных высших порядков полинома Ньютона

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

Читать далее
Категории: C, C++

Как мы в Циане готовим Data Vault на GreenPlum

SQL - habr.ru - Пнд, 06/10/2025 - 08:15

Привет! Меня зовут Влад, я DWH-инженер в Циан. Занимаюсь проектированием витрин и пайплайнов для доставки данных в корпоративное хранилище. В этой статье хочу поделиться опытом применения методологии Data Vault на Greenplum.

Data Vault часто упоминают рядом с Kimball и Inmon, но практических материалов по его внедрению заметно меньше. Для инженеров, которые только начинают строить DWH или думают о переходе на Data Vault, я собрал практический разбор: на каких задачах методология действительно помогает, с какими трудностями можно столкнуться и как это выглядит в реальном проекте.

Читать далее
Категории: Базы данных

Большая распродажа компьютерной литературы

Полный список здесь

RSS-материал