Обновить
1051.98

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

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

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

Алгоритмы генерации diff

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

Для разработчиков ПО diff — привычный способ представления изменений: мы используем diff для сравнения различных версий одного файла (например, во время ревью кода или когда мы пытаемся понять историю файла), для визуализации разницы между непроходящим тестом и его ожиданиями или для автоматического применения изменений к файлам исходников.

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

Как бы то ни было, я опубликовал её и узнал много нового об алгоритмах diff. Библиотеку можно найти по адресу znkr.io/diff, а в этой статье я расскажу о своих открытиях. Я ещё не завершил освоение, поэтому планирую дополнять статью в процессе изучения.

Читать далее

Опрос для тех, кто в тяжёлой цифре, и тех, кто про неё думает

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

Митапы про микросервисы, хайп вокруг новых фреймворков, кеш и перекрашенные кнопки — привычная рутина современного айтишника…

Но мы-то знаем: есть и другое IT. Там пишут код, от которого зависят тонны синтетических материалов или выплавленной стали, скорость производственной линии и бесперебойная работа энергосети. Это мир Heavy Digital. И он становится всё больше.

Мы захотели выяснить, почему всё больше IT-специалистов осознанно выбрали работу на заводах и в промышленных гигантах. Что за мотивы ими движут, какие задачи вызывают настоящий драйв и чувство сопричастности к чему-то большому? Мы собрали эти и другие вопросы и приглашаем всех причастных к IT в промышленности ответить на них в ветке «Я эксперт в Heavy Digital».

А ещё мы хотим узнать мнение тех, кто слышал о Heavy Digital и только стоит на пороге выбора. Чтобы понять ваши ожидания и страхи, мы создали ветку опроса «Я пока не в Heavy Digital».

Спойлер: в конце ветки для экспертов у вас будет возможность рассказать о самом запоминающемся профессиональном вызове. Авторы 10 лучших историй смогут получить ачивку «Герой Heavy Digital» в своем профиле на Хабре.

Готовы? Тогда выбирайте свою ветку — и вперёд!

Пройти опрос

Геймификация: как игровые механики помогают в обучении?

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

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

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

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

Привет, Хабр! Я Иван, backend-разработчик IT-компании SimbirSoft. И в этой статье разберемся, почему геймификация полезна для обучения сотрудников.

Читать далее

В темной-темной комнате пропадали важные-важные файлы…

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

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

Чувствуете неприятный холодок? Не бойтесь, в наших историях счастливый финал. Прочитайте их и проверьте, можете ли вы оказаться в подобной ситуации. А еще получите промокод на 1 000 бонусов в панели Selectel.

Что происходит?!

Накрутка опыта, дурдом в IT найме и жизнь в постоянном обмане

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

В 2025 году устроиться программистом без накрутки опыта можно. Или всё же нет? А если нет — крутить опыт? Но это же обман. Как я могу начинать свои трудовые отношения с работодателем с обмана? Меня вычислят и посадят в тюрьму. Хотел войти в IT, а вошёл в хату…

Такой исход для накрутчика порадовал бы многих людей: HR-ов, рекрутеров, нанимающих менеджеров и некоторых крутых сеньоров. Я не разделяю этой радости, потому что просто не понимаю её… В этой статье я бы хотел разобраться, что не так с наймом и людьми, которые только хотят попасть в сферу IT, а также с теми, кто уже в ней давно.

Читать далее

Новый асинхронный I/O в Zig

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

Эндрю Келли, создатель и ведущий разработчик языка программирования Zig, недавно рассказал о будущем асинхронного I/O в Zig, его ключевых примитивах, механизмах отмены и тонкости разграничения асинхронности и параллелизма. Он пригласил заинтересованных разработчиков к активному тестированию и формированию будущего интерфейса ввода-вывода Zig.

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

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

Читать далее

Как ускорить проверку приложения с помощью Impact-анализа (Часть 2): Unit-тесты

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

Когда проект растёт, а вместе с ним — количество проверок, CI превращается в марафон. Мы в Циан через это прошли: кодовая база растёт, тестов становится всё больше, и каждое изменение начинает тормозить весь пайплайн.

В этой статье расскажу, как мы сократили время выполнения unit-тестов с помощью Impact-анализа — метода, который позволяет запускать только те тесты, которые действительно нужны. Это продолжение моего подхода к оптимизации проверок в Android — в первой статье я показывал, как ускорить статические анализаторы. Теперь — про unit-тесты.

Примеры кода будут на JUnit, но подход подходит ко всем проверкам, которые гоняются через Gradle. В конце статьи — рабочий пример на GitHub, который можно адаптировать под себя.

Читать далее

Как я изобрел новый способ аутентификации и связь через свет: Ligthprint

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

или как я сделал протокол связи через свет с точностью 99.2 %

Когда мы говорим “оплата телефоном”, в голове сразу всплывает NFC или QR.

А что, если экран и фонарик сами могут обмениваться данными?

Без радиоволн, без Wi‑Fi, без сети вообще.

Так появился Lightprint — протокол, который передаёт данные светом, а камера принимает их и распознаёт как уникальный «отпечаток».

И всё это работает прямо в браузере, на чистом JavaScript.

Читать далее

Green Tea: новый экспериментальный сборщик мусора в Go

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

Команда Go for Devs подготовила перевод статьи о новом экспериментальном сборщике мусора Green Tea, появившемся в Go 1.25. Он уже используется в Google и показывает снижение затрат CPU на GC до 40%. Разбираемся, почему это не просто оптимизация, а новый уровень эффективности.

Читать далее

Взаимодействие с пользователем в макросах «Р7-Офис» Часть 2. Взаимодействие почти легальными способами

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

И так, после вводной части, я попытался подвести заинтересованного читателя к проблемам, которые возникают при решении различных типовых, казалось бы, задач по автоматизации разных процессов для отечественного редактора «Р7» версии «Десктоп». Кому лень читать, то основная мысль у меня была такая: поскольку АПИ автоматизации нам предоставляется на языке javascript, то придется идти методами, которые он нам предоставляет, в том числе и с возможностями в той части АПИ редакторов, которое от нас заботливо упрятали.

Читать далее

Final должен быть значением по умолчанию для Java-классов

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

А что, если вам сказали бы, что класс без final — это ошибка проектирования? Что возможность наследования должна быть исключением, а не правилом? В новом переводе от команды Spring АйО автор предлагает радикальную идею: все классы должны быть final по умолчанию.

⚠️ Статья была написана ещё до появления Kotlin`а. Цель перевода данной статьи – поднять запылившийся на полке вопрос в дизайне API: "Нужно ли оставлять API открытым по-умолчанию для внешнего расширения?"

Читать далее

Шаблоны и принципы деления кода на классы

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

За 9 лет разработки ПО  я периодически выступал в  роли ментора и сталкивался с проблемой, которую недавно озвучил начинающий программист после онлайн-курсов: 

«Не понимаю, как делить код на классы».

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

Я показал студенту несколько готовых шаблонов классов, чтобы он мог сразу применить, и хотел дать методичку по теории, но под рукой не оказалось ни заметок, ни статей, ни книг. Поиск в интернете и запросы к ИИ выдавали только материалы по ООП и принципам SOLID, которые мало касались нужной темы. Выходило так, что вся нужная для такой методички информация, лежит у меня в голове.  

Так и родилась идея написать эту статью.

Читать далее

Интервью с автором книги «Архитектура бэкенда. API для надёжных корпоративных приложений»

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

Здравствуйте, уважаемые читатели. Сегодня мы предлагаем вашему вниманию текст, который приоткрывает некоторые аспекты нашей авторской кухни. Пост получился благодаря тому, что своим авторским опытом с нами поделился уважаемый Владислав Светлаков из Минска, выпустивший у нас книгу "Архитектура бэкенда. API для надёжных корпоративных приложений". Книга отлично продаётся у нас чуть менее трёх месяцев и продолжает разработку большой темы проектирования API. Ранее мы выпустили другие подобные книги, большинство из которых ориентировано на поддержку и доработку бэкенда. Важнейшие из них:

Читать далее

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

Как автоматизировать подготовку отчетности в Word: макросы на практике

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

Всем привет! Я студент-работяга, который увлекается аналитикой в многогранном мире ИБ. Почти каждая задача (как аналитика, так и студента) так или иначе заканчивается подготовкой каких-то материалов: для аналитика — отчета, для студента — курсовой работы. В процессе подготовки этих материалов неизбежно сталкиваешься с рутиной из однообразных кликов (разметка текста, форматирование картинок и много другой скукоты). Однако справиться с ней можно, и сегодня я расскажу, как это сделать с помощью автоматизации в редакторе Word посредством VBA-макросов.

Статья может быть полезна студентам и начинающим специалистам, но уверен, какие-то идеи пригодятся и тем, кто уже работает. Даже если вы не пользуетесь Microsoft Office, то все равно сможете почерпнуть для себя некоторые идеи, так как почти во всех пакетах есть поддержка языков программирования, например Basic в LibreOffice, Lua в пакете «МойОфис» или JavaScript в «Яндекс Документах». Кроме того, часть моих скриптов я выложил в открытый доступ.

Когда пишут про автоматизацию в Microsoft Office, то в большинстве случаев имеют в виду Excel, однако я сломаю шаблон и расскажу вам про автоматизацию в Word, которую часто незаслуженно обходят стороной.

Читать далее

Автодополнение кода на примере YQL в YDB CLI

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

Привет, Хабр! Меня зовут Виктор Смирнов. В Yandex Infrastructure я c недавнего времени занимаюсь фронтендом YQL: транслятором и инструментами разработки.

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

Читать далее

Безопасный доступ к внутренним сервисам: Keycloak, OAuth2 и немного Nginx‑магии

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

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

Изначально решение виделось простым — настроить Nginx и прописать правила маршрутизации. Ключевые трудности скрывались в деталях: тонкой настройке редиректов, работе с access token и интеграции с бэкенд-сервисами, потребовавших значительного внимания.

В статье расскажем о нашем пути построения схемы обратного прокси с авторизацией через Keycloak: от поиска решения до создания стабильного и масштабируемого результата.

Читать далее

CPython простыми словами: всё, что нужно знать начинающему

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

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

Сегодня вместе заглянем за дверки Python и разберемся, что же там внутри. Оказывается, под привычным синтаксисом Python скрывается целая машина – интерпретатор CPython, написанный на языке C.

Это самая популярная и каноничная реализация Python. Существует и другие реализации (PyPy, Jython, IronPython и т.д.), но 99% времени, говоря Python, имеют в виду именно CPython – оригинальный и наиболее поддерживаемый интерпретатор. Без строгой формальной спецификации языка Python, именно поведение CPython во многом определяет, что такое Python.

Изучить внутреннее устройство

Ошибки, которые инженеры совершают при код-ревью

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

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

В новом переводе от команды Spring АйО эксперты сообщества подробно и на собственном опыте рассказали про нюансы код-ревью.

Читать далее

Кен Томпсон о взломе замков и рождении Unix

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

У 82-летнего Кена Томпсона сохранились потрясающие воспоминания о первых днях операционной системы Unix и о буйной команде её разработчиков-гиков.

В этом месяце Музей компьютерной истории Кремниевой долины в партнёрстве с Ассоциацией вычислительной техники выпустил специальный выпуск на четыре с половиной часа, записанный полтора года назад историком технологий Дэвидом Броком. В этом выпуске Томпсон подробно перечислил многие из важных моментов своей карьеры — от работы над языком программирования C и Unix до операционной системы «Plan 9 from Bell Labs» и языка программирования Go.

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

Также по ходу дела Томпсон рассказывает историю о маленьком аллигаторе, которого друг отправил его в офис в Bell Labs. («Его просто принесли, как почту… Не самый лучший из питомцев»).

Читать далее

Топ-10 нейросетей для написания песен и генерации музыки

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

Музыка всегда отражала своё время. Когда-то мир замирал под звуки симфоний, сегодня он движется под электронные биты. Теперь к этому оркестру присоединились нейросети. Ещё недавно, чтобы написать трек, нужны были годы практики, вдохновение и терпение. Сегодня достаточно пары кликов, и машина создаёт мелодии любого жанра — от эпических оркестровок до тяжёлого рока.

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

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

Время включать музыку. Приятного прочтения!

Читать далее

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