Обновить
1140.61

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

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

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

Ликбез о плавающей точке: сложение, катастрофическое сокращение и бабушка Кэхена

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

Давайте продолжим обсуждение самой неоптимизированной в мире 32-битной библиотеки для работы с плавающей запятой TinyFloat. Библиотека написана на C++ и намеренно избегает встроенных типов плавающей запятой, полагаясь исключительно на 32-битные целые числа. Цель состоит в том, чтобы сделать код максимально читабельным — без бит-хаков и хитроумных уловок.

Библиотека пишется в рамках борьбы с неграмотностью населения, поэтому, я хочу иметь подробную документацию о том, что происходит «под капотом». Оказалось, что лучший способ документировать код C++ — это полностью переписать его на Python :-)

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

Читать далее

Вы доверяете ИИ больше, чем своим разработчикам. И это ваша главная ошибка

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

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

Но…

Читать далее

Почему архитектурный долг опаснее технического?

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

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

Читать далее

Вам стоит написать своего агента

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

Некоторые концепции легко усвоить абстрактно. Кипящая вода: греем её и ждём. Другие нужно попробовать самому. Вы думаете, что знаете, как работает велосипед, пока не попробуете покататься на нём.

В вычислительных системах есть большие идеи, которые легко понять. Например, AWS S3 API — самая важная за последние двадцать лет технология хранения данных, и она похожа на кипящую воду. Для понимания других технологий нужно сначала покрутить педали.

К ним относятся и LLM-агенты.

Мнения о LLM и агентах невероятно разнообразны. Но даже если это мошенничество, это серьёзная идея. Они не обязаны вам нравиться, но вы должны быть правы относительно них.

И это одна из причин, по которой вам следует написать агента. Но есть и другая, гораздо более убедительная причина...

Читать далее

Koda CLI: AI-помощник прямо в терминале – бесплатно, без VPN, с топовыми моделями

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

Мы в Koda верим, что современные инструменты должны быть доступны каждому разработчику, независимо от инфраструктурных ограничений, VPN или способов оплаты. Поэтому после релиза Koda для VS Code мы сделали следующий шаг – представляем Koda CLI.

Это полноценный AI-помощник в терминале, который работает без VPN, мгновенно отвечает, понимает русский язык и предоставляет лучшие модели – прямо там, где вы кодите каждый день.

Что умеет Koda CLI?

Читать далее

Сказ о том, как мы автоматизировали озвучку видео через нейросети

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

Всем привет!

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

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

Читать далее

Система объектов из Quake: шелл-скриптинг для игр

Время на прочтение11 мин
Охват и читатели6.8K

Игровой движок Quake невероятно сильно повлиял на технологию разработки игр. Он активно лицензировался, в том числе, для использования в таких топовых играх как «Half-Life», «Call of Duty» и «Star Wars: Jedi Knights». Вероятно, наиболее серьёзное влияние оказали те многочисленные разработчики, которые научились писать игры, занимаясь его моддингом, а затем принесли с собой его принципы в другие студии, обогатив ими развитие других движков.

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

В этой статье будет сделан краткий обзор системы объектов, сложившейся в Quake, и рассказано, на основе каких принципов она была спроектирована. С моей точки зрения особенно интересно, насколько сильно эта философия схожа с принципами, заложенными в основу UNIX. Оба решения можно резюмировать как системы, в каждой из которых есть одна базовая субстанция (в UNIX это файл) и язык, на котором можно описывать сочетание простых поведений, комбинирующихся в эмерджентном порядке (оболочка).

Читать далее

Специфика перехода к сервисной архитектуре в финтех-проектах: кейс команды разработки финтеха ВКонтакте

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

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

Меня зовут Анатолий Яшкир. Я руководитель разработки финтеха ВКонтакте. В этой статье расскажу о специфике финтеха и нашем кейсе рефакторинга исторического кода с переходом на сервисную архитектуру. 

Читать далее

Основы 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 — и заодно разбирает, почему карго-культ масштабирования и «инфраструктура ради резюме» только мешают делать работу.

Читать далее

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