Обновить

Разработка

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

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

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

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

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

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

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

Читать далее

Современный CSS: что важно знать в 2025 году

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

Мы публиковали статью «Что нужно знать о современном CSS» в прошлом году (2024), и какое-то время я сомневался, хватит ли материала, чтобы сделать новую версию. Но время идет — и CSS развивается вместе с ним. И знаете что? В этом году новинок даже больше, чем в прошлом. Этот (пусть и немного субъективный) список можно рассматривать как подборку «возможностей, которые, по мнению Криса, стоит знать — будь то совсем новые или те, что недавно получили хорошую поддержку в браузерах».

Читать далее

Книга: «Kotlin Multiplatform на практике»

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

Привет, Хаброжители! Хотите писать код один раз и запускать его на Android и iOS, сохранив нативное качество и производительность?

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

Особое внимание уделено использованию нативного и общего кода в кросс-платформенном приложении, применению expect/actual, тестированию с Kotest, оптимизации разработки с помощью KSP, плагинов компилятора и ИИ-ассистентов. Вы узнаете, как создавать и публиковать собственные KMP-библиотеки, а также получите краткий справочник по Kotlin и Swift, чтобы уверенно ориентироваться в обеих экосистемах.

Читать далее

Детектим Command injection или Как не потерять контроль над своим ПО и данными

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

Всем привет! В нашей практике мы часто сталкивались и устраняли последствия такого опасного вида атаки, как Command injection. Злоумышленники используют эту уязвимость для выполнения вредоносных команд, доступа к контролю вашего ПО и кражи данных. Последствия для бизнеса могут быть непредсказуемыми — и репутационными, и денежными из-за простоя процессов и затрат на восстановление. Под катом статья моего коллеги Димы Каплунова, аналитика SOC в К2 Кибербезопасность. Он собрал все, что вам нужно знать о Command injection: метод, лазейки и главное — как выявить атаку пока не стало слишком поздно. 

Читать далее

NeuVector в современной Kubernetes-инфраструктуре: почему мы не рекомендуем его для production

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

Недавно мы реализовали интеграцию NeuVector с Deckhouse Kubernetes Platform по запросу сообщества. Тем не менее наш практический опыт показывает, что NeuVector нельзя считать надёжным инструментом обеспечения безопасности кластеров и контейнеров в production-средах.

В статье набрасываем на вентилятор приводим аргументы, подтверждающие эту позицию, несмотря на отдельные сценарии, когда использование NeuVector может быть оправдано. А ещё предлагаем современные и надёжные Open Source-альтернативы.

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

Восстание терпил

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

Маленький кусочек рынка ИТ под названием «1С» меняется. Если верить публикациям на Хабре, большой рынок ИТ тоже куда-то поворачивает. Я и про рынок труда, и про рынок бизнеса.

Кто-то называет эти перемены кризисом, кто-то – возвращением в нормальное состояние. Вроде как предыдущие 2-3 года были ненормальными, ажиотажными, экстремумом. А то, что сейчас – это как было 2-3 года назад. Потому и не кризис. Скорее 2-3 года были кризисом, только с обратным знаком.

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

Читать далее

Игра «Морской бой» через UDP на двух Raspberry Pi PICO-W

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

Мы создали игру «Морской бой» (Battleship) на двух игроков в реальном времени при помощи микроконтроллеров Raspberry Pi Pico W, обменивающихся данными через UDP. К каждому устройству подключён VGA-дисплей 320×240, джойстик для размещения кораблей и ударов, а также тактильные кнопки для взаимодействия с игрой. Для проекта разработан собственный протокол ходов на основе конечных автоматов и интегрирована звуковая обратная связь на основе как DMA, так и прерываний.

Читать далее

DX в процедурных макросах на Rust

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

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

Сегодня поговорим про процедурные макросы как про инструмент разработчика, который заботится о DX.

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

Процедурные макросы не гигиеничны в полном смысле: их результат ведет себя так, как будто вы написали этот код прямо в месте вызова. Это значит, он влияет на внешние use, сам зависит от окружения и легко цепляет конфликты имён, если не думать заранее. Для этого нам пригодятся Span::call_site и его друзья.

Читать далее

Онлайн IDE для .NET

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

Обычно под .NET разрабатывают в Visual Studio, собирая и запуская приложения локально на компьютере. А что если IDE работала бы прямо в браузере? Как Figma, только для .NET приложений.

Мы задались именно этой целью — сделать онлайн IDE для .NET.

Сейчас в нашем инструменте уже работает:

✏️ Редактор UI на XAML (подмножество WPF) с drag-and-drop.

Компиляция C# и XAML полностью в браузере без участия сервера.

🖥️ Запуск приложения прямо в браузере в изолированном окружении.

☁️ Сохранение проектов на сервере и возможность скачать их для Visual Studio.

Можно поиграться и попробовать предварительную версию: https://xaml.io

А ниже — рассказ о том, как это всё работает под капотом.

Читать далее

Tau² Benchmark: как переписывание промпта подняло точность GPT 5 mini на 22%

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

В недавней публикации мы представили Tau² — инструмент для оценки больших языковых моделей. Сегодня же хотим поделиться неожиданным открытием: простое переписывание промпта увеличило успешность небольшой модели более чем на 20%. Ниже — подробный разбор того, как мы нашли и устранили узкое место в её работе, внеся всего несколько тонких изменений в политику агентов.

Читать далее

ESP32-CAM: Алгоритмы компьютерного зрения

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

Модуль ESP32-CAM - это доступное и компактное решение, которое сочетает в себе микроконтроллер ESP32 и камеру OV2640. Благодаря своей низкой цене и широким возможностям он стал популярным выбором среди разработчиков проектов в области IoT, компьютерного зрения и робототехники.

В данной статье я собрал серию из 15 практических уроков, каждый из которых сопровождается видео и исходным кодом. Вместе мы пройдём путь от базового примера захвата изображения до реализации алгоритмов компьютерного зрения и даже интеграции TensorFlow Lite для классификации объектов прямо на ESP32-CAM.

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

Ознакомиться

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

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

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

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

Читать далее

Записки оптимизатора 1С (ч.14.1). Любите свою базу данных и не забывайте обслуживать

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

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

Сегодня хочу затронуть тему регламентного обслуживания баз данных MS SQL. А позже поговорим и про обслуживание баз PostgreSQL.

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

Читать далее

Как мы в Авито автоматически лечим ноды в Kubernetes

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

Привет, Хабр! Это Станислав Егоркин, инженер юнита k8s департамента разработки Infrastructure в Авито. В одной из своих прошлых статей я описал, как мы детектируем проблемы на нодах Kubernetes-кластеров. Логичным продолжением этой работы стала автоматизация их лечения. В этой статье я расскажу, как у нас устроены механики Auto Healing.

Читать далее

GitOps для Airflow: как мы перешли на лёгкий K8s-native Argo Workflows

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

Привет! Меня зовут Александр Егоров, я MLOps-инженер в Альфа-Банке, куда попал через проект компании KTS.

За свою карьеру я построил четыре ML-платформы (одна из которых сейчас в Росреестре) и развиваю с командой пятую. Параллельно учусь в ИТМО по направлению «Безопасность искусственного интеллекта».

В этой статье я немного покритикую Airflow и поделюсь нашей историей миграции на связку Argo Workflows и Argo CD. Spoiler alert: технические подробности и результаты в наличии.

Читать далее

Как посчитать, сколько людей в лаборатории

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

Почти всё время существования лаборатории студенческих проектов Висконсинского университета в ней использовалась камера. Есть свидетельства наличия такой системы ещё в 1990-х: на древней версии сайта университета о ней говорится следующее:

…на стену приклеена изолентой камера ценой $15, подключённая к видеомагнитофону, который соединён с видеоразъёмом Mac IIcx, где запущены Timed Video Grabber (TVG) и FTPd. Рабочая станция HP Dax выполняет скрипт, который каждые 60 секунд пытается сохранить на FTP последнее изображение. Из-за отсутствия синхронизации часов время от времени происходят коллизии доступа к файлам, и вся схема ломается.

Прочитав это, я ненароком с восхищением взглянул на камеру, которая теперь установлена наверху аркадного автомата. Система, для создания которой требовалось оборудование на многие тысячи долларов, сегодня реализуема (в бесконечно лучшем качестве) на основе веб-камеры за $50, подключенной к Raspberry Pi.

Читать далее

Можно ли сделать мобильный интерфейс без человека.  Эксперимент с ИИ. Часть 1

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

Сегодня много говорят о том, что ИИ уже может полностью генерировать интерфейсы и сокращать процесс ревью. В Surf мы проверили это на практике: поручили ИИ вёрстку UI-компонентов и замерили эффект.

Читать о генерёнке в UI

Flight Recorder в Go 1.25 – точечная диагностика без лишних трассировок

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

Команда Go for Devs подготовила перевод статьи о новом инструменте диагностики в Go 1.25 — flight recorder. Он позволяет заглянуть в последние секунды работы приложения уже после того, как произошла проблема, и точно понять, что случилось «под капотом». Отличный способ находить тонкие баги и задержки в долгоживущих сервисах без гигабайтов бесполезных трассировок.

Читать далее