Обновить
1118.1

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

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

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

Основы DSL в Kotlin

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели5.5K

Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным. 

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

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

Читать далее

Как я добавил on-chain награды и NFT в Solana Quiz: практические находки, ошибки и рабочие советы

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели4.8K

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

Вот ссылка на ту статью - чтобы не повторять архитектуру и базовые вещи:

👉 https://habr.com/ru/articles/956186/

С тех пор я значительно расширил функционал: я добавил on-chain награды, 7-дневные стрики и самое интересное - NFT за серию полностью правильных ответов.

Казалось бы, задача простая: получил событие - начислил токены - иногда выдал NFT.

Но за этим "иногда" скрывается целая гора нюансов: от Solana PDA до порядка вызовов в метадате и странных ошибок, которые не объяснены ни в одном официальном гайде.

Читать далее

Закрепи меня покрепче: Pin, самоссылки и почему всё падает

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели7.1K

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

Сегодня я хочу поделиться своим опытом и знаниями о pinning в Rust, замечательной конструкции Pin, которая поначалу вызывает вопросы, зачем нужен какой-то пин, если и без него всё работало?

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

Закрепиться

QML без шапочек из фольги: чего реально достигли к 2025 году

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

Привет! Меня зовут Михина Полина, сейчас я аналитик в Cloud.ru, а в прошлом занималась разработкой противоопухолевых препаратов в ФИЦ ПХФ и МХ РАН. Этот опыт позволяет мне смотреть на развитие квантовых технологий, в частности на квантовое машинное обучение (QML), через призму конкретной проблемы, которую она может решить.

Ранее я убедилась, что процесс драг-дизайна устроен крайне сложно. Каждая потенциальная молекула — это месяцы расчётов, синтеза и экспериментов, где малейшая ошибка возвращает исследователя в начало. Квантовые методы, как QPE  (Quantum Phase Estimation, алгоритм квантовой оценки фазы), могли бы радикально сократить этот цикл, позволяя моделировать взаимодействия молекул и их энергетические состояния с точностью, недостижимой для классических вычислений. Это особенно важно, когда сложность исследуемых систем растет, и приходится прибегать к приближениям, что снижает точность и увеличивает время вычислений.

В этой статье мы трезво посмотрим на QML: где оно уже работает (и работает ли?), с какими ограничениями сталкивается и что из этого может быть полезно IT-специалистам без громких заявлений о «квантовом будущем через наносекунду».

Читать далее

Теория мёртвых фреймворков

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

Команда JavaScript for Devs подготовила перевод статьи Пола Кинлана о том, почему новые веб-фреймворки сегодня оказываются «мёртвыми при рождении». Автор утверждает: сочетание сетевых эффектов, экосистемы React и обучения LLM формирует замкнутый цикл, в котором альтернативы просто не успевают набрать критическую массу.

Читать далее

Реверс-инжиниринг шифрования прошивки радиостанции

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

Любительские радиостанции — интересный способ знакомства с работой радиоспектра; что ещё более важно, это встроенные устройства, на которых могут быть установлены странные чипы/прошивки! Мне стало любопытно, насколько просто взломать мою Yaesu FT-70D, поэтому я приступил к расследованию. Единственный ресурс по радиостанциям Yaesu — это пост на Reddit о кастомной прошивке для Yaesu FT1DR.

Пользователь Reddit написал, что если выполнить процесс обновления прошивки через USB, то радиостанция раскрывает микроконтроллер Renesas H8SX, флэш-память которого можно изменить при помощи Renesas SDK. Отличное многообещающее начало, но SDK было не так легко настроить, а я не был даже уверен, сможет ли он сдампить прошивку... поэтому долгое время не брался за него.

Читать далее

Python 3.14 без GIL: что это значит для веб-разработки

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

Команда Python for Devs подготовила перевод статьи о том, как "free-threaded" Python меняет правила игры для веб-сервисов. Автор сравнивает Python 3.14 с GIL и без него на реальных ASGI и WSGI приложениях — и приходит к неожиданному выводу: несмотря на локальные просадки в производительности, "free-threaded" Python уже сейчас может упростить масштабирование и снизить накладные расходы.

Читать далее

Добавляем MapReduce в этот наш SQL: генераторы на основе курсоров

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели7.7K

Вот уже который год я потихоньку разрабатываю SQL-ный движок на основе Apache Spark, специализированный под задачи ETL. И хотя диалект языка изначально называется «Transform Definition Language», писать трансформации данных непосредственно на нём самом было до сих пор невозможно. Вместо этого на фазе Transform предполагалось использовать подключаемые модули, которые рантайм интерпретатора предоставляет из Java classpath.

Это очень эффективный с точки зрения производительности, но довольно долгий с точки зрения внедрения, и дорогой в разработке способ. Сначала трансформацию надо описать формально в виде статьи-whitepaper'а (это делает data scientist), потом написать прототип на Python (ответственность data analyst), отладиться на сэмпле реальных данных (тоже аналитик), и тогда уже делать и оптимизировать финальную имплементацию на Java с использованием низкоуровневого API Spark (собственно, задача разработчика). Неудобно.

Нельзя ли его как-нибудь сократить? Например, дать аналитикам инструмент для написания трансформаций непосредственно в самом SQL, вынеся некоторую часть функциональности MapReduce как разновидность итерирующих функций? Можно, конечно!

Давайте узнаем, как именно

Workflow like it’s hot или почему Temporal.io это база для бизнес логики

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

Из первых уст рассказываю как переход на Temporal обеспечил надежную доставку клиентских услуг в контексте обычного хостинга.

Читать далее

О правильной и аккуратной остановке потоков в Linux

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

Предположим, вы пишете многопоточное приложение для Linux, которое рассчитано на длительную работу. Может — это СУБД или какой-нибудь сервер. Представим ещё, что ваша программа не рассчитана на какую-нибудь среду выполнения кода (скажем — на JVM, Go или BEAM), которая берёт на себя управление низкоуровневыми вещами. Вы сами управляете порождением потоков (thread), прибегая к системному вызову clone. Когда пишут на C — потоки создают с помощью pthread_create, а в C++ применяется std::thread. (1)

Читать далее

Как работают федеративные системы: рассказываем на примере YDB

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

YDB — отказоустойчивая геораспределённая СУБД класса Distributed SQL. Она появилась в недрах Яндекса более десяти лет назад и прошла длительный путь от узкоспециализированного хранилища, применявшегося в поисковом движке, до полновесной СУБД общего назначения. Открытие исходного кода YDB в 2022 году стало одной из наиболее ярких опенсорс-инициатив Яндекса.

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

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

Читать далее

Kafka реально быстрая, но я возьму Postgres

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

Команда Go for Devs подготовила перевод статьи о том, почему большинству проектов не нужна Kafka, «веб-масштабные» очереди и зоопарк из пяти баз данных. Автор на бенчмарках показывает, как далеко можно уехать на одном Postgres — и заодно разбирает, почему карго-культ масштабирования и «инфраструктура ради резюме» только мешают делать работу.

Читать далее

Мнение: почему ИИ не заменит начинающих разработчиков

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

По данным Google, более 75% разработчиков уже используют нейросети каждый день. Новичков это пугает: вдруг их навыки скоро окажутся бесполезными?

В Яндекс Практикуме прошёл вебинар «Почему ИИ не заменит начинающих разработчиков» — эксперт с 20-летним опытом в IT Алексей Мартынов рассказал, какую роль играет ИИ в разработке, почему он не лишит джуниоров работы и как использовать ИИ в работе и жизни. Делимся самым интересным.

Читать далее

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

Ваши тесты упали по причине JavaScript

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

Рассказываем, как безобидная строка JavaScript-кода привела к нарушению стабильности тестов продукта, а также о том, как можно избежать подобных ошибок.

Читать далее

Выпущена версия Jmix 2.7

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.6K

Мы рады сообщить о выпуске Jmix 2.7! Эта версия представляет обновленный дизайнер ролей в Jmix Studio, новые UI-компоненты и включает ряд других улучшений фреймворка. Полный список изменений вы можете посмотреть в разделе "Что нового" документации Jmix.

Ниже приведен краткий обзор основных новых функций Jmix 2.7.

Читать далее

Маркетинг или аналитика? Что не так с отчётом Anthropic о кибершпионаже

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

Команда AI for Devs подготовила перевод статьи о том, почему свежий отчёт Anthropic о «кибершпионаже с помощью ИИ» вызывает больше вопросов, чем даёт ответов. Автор критикует отсутствие технических деталей, IoC и доказательной базы, а сам документ считает больше маркетинговым, чем аналитическим.

Читать далее

Дайджест препринтов научных статей в области Информатики

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

Свежая подборка ключевых препринтов научных статей в области Информатики, опубликованных на arXiv.org.

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

Материалы затрагивают вопросы верификации систем, основанных на машинном обучении, сравнительный анализ архитектур FPGA и GPU для специализированных вычислительных задач, а также глубокие темы в области языков программирования — от всенаправленного вывода типов до линейности в функциональных Core-языках.

Читать далее

Реализация гео-блокировки на основе eBPF/XDP

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

В 2022 году финансовый сектор, в частности банки, столкнулся с волной продолжительных и достаточно мощных DDoS-атак разных векторов. Среди них были и банальные L7 HTTP-флуды, не представлявшие собой ничего сложного в техническом плане, но для организаций с несколькими сотнями пользовательских сервисов и защитой от L7-атак только критичных из них, это стало серьезным вызовом.

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

Этот опыт наглядно показал, что иногда простые решения оказываются наиболее эффективными в критических ситуациях. Гео-фильтрация, будучи грубым инструментом, в условиях DDoS-атаки может стать тем самым «спасательным кругом», который позволяет локализовать проблему и выиграть время для более тонкой настройки.

Технология XDP (eXpress Data Path) идеально подходит для таких сценариев — она позволяет обрабатывать пакеты на самом раннем этапе, еще до того, как они попадут в сетевой стек ядра, что обеспечивает беспрецедентную производительность.

Данной статьей хочется продемонстрировать, как с помощью XDP можно достаточно легко реализовать собственный гео-фильтр. Эту защиту можно реализовать, например, модулями nginx, но в таком случае все нежелательные запросы будут проходить полный сетевой стек операционной системы и потреблять ресурсы веб-сервера, прежде чем быть отклоненными. В нашем же случае защита отрабатывает до того, как пакеты поступят в сетевой стек ядра.

Читать далее

Ваш антивирус мёртв. Его убил искусственный интеллект

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

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

Совсем недавно я разговаривала с сестрой, и она предположила, что нечто подобное может скоро произойти. Я тогда отмахнулась, сказав, что это случится не так уж скоро, но теперь мне кажется, что вредоносное ПО действительно научилось думать самостоятельно.

Мой кофе остыл, пока я смотрела на экран. Так началось моё утро понедельника.

Читать далее

HalChatLocalAI: как я встроил офлайн-ИИ прямо в мессенджер

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

Большинство ИИ-ассистентов работают в облаке. А я сделал локальный — прямо внутри мессенджера HalChat.

Читать далее

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