Обновить
1657.94

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

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

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

S3 Архипелаг: как мы в Диасофте построили свое объектное хранилище

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

Лет десять назад объектное хранилище было экзотикой. Крупные компании обходились NFS‑шарами и надеждой, что RAID не развалится в самый неподходящий момент. Средний бизнес в целом не понимал, зачем это нужно. Но сегодня все изменилось. S3 API стал таким же стандартом, как REST или JSON. Мы в Диасофте построили «Фабрику данных» (Digital Q.DataFactory) в архитектуре Data Lakehouse на основе S3 Архипелаг, которая объединяет гибкость Data Lake с надежностью хранилища данных. В этой статье расскажем, как построили слой хранения.

Читать далее

Согласованность API по принципу единого источника истины

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

Представим ситуацию: идет тяжёлый спринт, вы выполнили кучу задач, написали тонну нового функционала, готовитесь к релизу и вдруг обнаруживайте, что часть фич перестала работать! Идёте разбираться и обнаруживайте, что оказывается бэкендер Вася в последний момент решил переименовать поля в json-е, а вам об этом не сказал!

Ситуация образная, но позволяет быстро обрисовать одну из болей во время разработки. В этой статье я бы хотел рассказать об одном из вариантов её решения в коде с помощью подхода Единого источника истины(Single source of truth).

Читать далее

ZIO Mock не может — ScalaMock поможет

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

Если вы пишете тесты на ZIO, то с моками, скорее всего, уже сталкивались. И почти наверняка — с ZIO Mock. Формально он решает задачу, но на практике ломает Arrange‑Act‑Assert, «краснит» в IDEA и иногда падает так, что вы видите только InvalidCallException: null. В Яндекс Вертикалях мы довольно долго жили с этой библиотекой — пока количество таких тестов не перевалило за пару сотен и они не расползлись по десятку команд.

Меня зовут Женя Веретенников, я тимлид в Яндекс Вертикалях и последние годы занимаюсь инструментами для Scala‑разработчиков и инфраструктурой бэкенд‑монорепозитория. Когда стало ясно, что ZIO Mock больше мешает, чем помогает, мы решили отказаться от него полностью — и подружить ZIO Test с классическим ScalaMock. Он даёт более предсказуемый синтаксис и понятные ошибки, но из коробки с ZIO не работает.

В этой статье я расскажу не о том, как пользоваться новой библиотекой, а о том, как мы её делали: какие ограничения ZIO‑стека пришлось учитывать, где пришлось лезть под капот ScalaMock и ZIO Test и во что в итоге превратилась эта инженерная затея. Это история про построение собственного test tooling в большой Scala‑кодовой базе — с честными компромиссами и практическими выводами.

Читать далее

BASIC не умер. Пора развеять мифы о Basic

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

Автор оригинала: Chris Boss, Опубликовано 16 ноября 2022 года
Оригинал статьи на www.codeproject.com
Перевод

Я программирую на языке BASIC с 1975 года и думаю, что пришло время объяснить, что такое BASIC на самом деле и чем он не является. На протяжении десятилетий BASIC подвергался критике из-за мифов о нём. Кто, как не программист, который профессионально использует BASIC на протяжении десятилетий, сможет объяснить, что такое BASIC на самом деле? Слушайте, как я рассказываю о том, как я узнал о языке Basic, о разных версиях Basic, которые я пробовал, и о том, чего мне удалось достичь за эти годы с помощью Basic.

Читать перевод

Перестаем бороться с компилятором TypeScript и начинаем писать безопасный и строго типизированный код

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

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

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

Читать далее

CodeWiki Skill: как заставить AI-агента написать документацию к вашему коду

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

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

Читать далее

Множество Мандельброта. 32-бит TrueColor. 60 FPS. 80-бит long double. OpenMP. Суперсэмплинг 2x2 (4 прохода). И цвета

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

Множество Мандельброта. 32-бит TrueColor. 60 FPS. 80-бит long double. OpenMP. Суперсэмплинг 2x2 (4 прохода). И цвета. Я хочу сказать. Это самая нужная вещь во Вселенной. Самая глубокое. И я сейчас за всю жизнь наконец стал писать код и сделал. Довольно сложное. И самое прекрасное. Скачайте и посмотрите! Это экзешник, в ГитХаб.

github: Download Latest Version Windows And Source code

Читать далее

Три стакана на двоих: самая эффективная коммуникация

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

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

Наиболее эффективная техника, реализующая подобное взаимодействие, известна как тройная буферизация (Triple Buffering). Именно о ней и о её небольших обобщениях пойдет речь в данной статье.

Читать далее

Забыть про Backprop: Как я собрал «Термодинамический Мозг» с фазой сна и митозом, который влезет в Arduino

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


Мы (человечество) очень хотим создать разум. Инопланетян мы пока не нашли, поэтому пытаемся собрать его сами из кремния и электричества. Но то, куда свернула индустрия сегодня, вызывает вопросы. Мы греем планету мегаваттами энергии, перемножая гигантские матрицы в дата-центрах, чтобы обучить LLM. Backpropagation и современный инференс - это непозволительно дорого и энергозатратно.

А что если вернуться к истокам? Что если интеллект — это не градиентный спуск, а кристаллизация связей под давлением информации?

В этой статье я расскажу о концепте Термодинамического Мозга. Это самоорганизующийся граф, который обучается в один проход O(1), непрерывно адаптируется к новым данным, спит по ночам, чтобы не сойти с ума, и настолько нетребователен к ресурсам, что его можно запустить хоть во вкладке браузера, хоть на Arduino.

Запустить митоз

Фотонный проц на одной инструкции: как Akhetonics строит комп из чистого света. И почему это куда сложнее, чем кажется

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

Представьте, что вы читаете громкий заголовок: «Самая простая Turing‑complete архитектура SUBLEQ (всего одна инструкция!) и реализовали её на фотонных логических вентилях». Звучит как настоящий прорыв из научной фантастики — один‑единственный тип команды, и вот уже у нас полноценный универсальный компьютер, работающий на скорости света, без кремния, без транзисторов, с терагерцевыми частотами и энергопотреблением в разы ниже.

Но если копнуть глубже, сразу вылезают два больших «но». Первое — SUBLEQ действительно может быть Turing‑полной, но только при очень конкретных условиях. Второе — реализовать даже такую «простую» архитектуру на настоящих фотонных вентилях в железе оказывается совсем не тривиальной задачей. И именно об этом мы сегодня поговорим подробно, без хайпа, но и без излишнего скепсиса.

Эта статья — разбор реальной истории, которая происходит прямо сейчас, в 2026 году. Немецкий стартап Akhetonics из Мюнхена всерьёз взялся за all‑optical general‑purpose processor и выбрал для доказательства концепции именно SUBLEQ. Мы пройдёмся по всем нюансам: от теории одной инструкции до проблем фотонной памяти, от лабораторных прототипов до того, почему чистый SUBLEQ, скорее всего, останется красивым PoC, а в реальном продукте придётся расширять набор команд.

Готовы? Поехали.

Полетели!

Законъ о запрете иностранных словъ… в разработке

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

Разговор будет серьёзный. С 1 марта 2026 вся публичная информация для потребителя должна быть на русском — N 168-ФЗ. Пока что разработку это не касается, но стоит быть готовыми. Предлагаю договориться о словаре разработчиков Российской Федерации.

Читать далее

Непотребные алгоритмы, ненормальные трюки и всевозможные хаки на C

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

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

Если вы видите эту статью, значит еще не все тайны C раскрыты. В этом материале будет еще больше свежих хаков, фанов, трюков, еще больше магии и скорости! А также нетипичных алгоритмов и структур данных, что позволит вам почерпнуть и полезную информацию тоже.

Добро пожаловать в восьмую часть. Прошу под кат — там будет жарко, быстро и очень, очень интересно.

Читать далее

git-wt — AI First обёртка для git worktrees на чистом Bash

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

CLI-обёртка над git worktree на чистом Bash. Автоименование worktrees, централизованное хранение в ~/.git-wt/, копирование .env файлов, shell-автодополнение и поддержка AI-агентов через SKILL.md. Сделана для параллельной работы нескольких Claude Code / Cursor / Windsurf на одном репозитории, но полезна и для код-ревью, хотфиксов и тестирования. Ноль зависимостей, установка за 5 секунд.

Читать далее

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

Как читать новости об ИИ и отличать прорыв от пресс-релиза. И как относиться к заголовкам про «ИИ отнимет работу»

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

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

Эта статья научит,что проверять, когда выходит новая модель, как читать бенчмарки, на что смотреть в model/system card, чтобы понимать реальный смысл анонса, чем open-weight отличается от закрытых моделей и почему это влияет на рынок.

А заодно, как читать без паники и самообмана статьи вроде "ИИ отнимет у вас работу".

Читать далее

Долг оптимизацией красен: как мы в МойОфис объединили борьбу с легаси и увеличение производительности таблиц

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

Долг оптимизацией красен: как мы повышали производительность таблиц

Ещё Достоевский на примере своих героев-картёжников показал: быть должником удовольствие сомнительное в любую эпоху. В разработке тоже есть своя «долговая яма» — технический долг. Если продукт большой и развивается годами, полностью избежать его невозможно. Функциональность реализована, всё математически корректно работает, но из-за накопившихся архитектурных компромиссов всё сложнее укладываться в пользовательские ожидания по скорости и отзывчивости.

Меня зовут Дмитрий Шубин, я занимаюсь оптимизацией производительности в компании МойОфис — конкретно в Ядре редакторов (о нём ранее рассказывал мой коллега в статье «Как мы создаём редакторы документов. Ядро и его роль в кроссплатформенной разработке»).

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

В этой статье разберём, почему возникает такой долг и как мы с ним работаем на практическом примере оптимизации редактора «МояТаблица».

Читать далее

История о том, как я устал от галлюцинаций ИИ и собрал инструкцию для нейронки

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

Делал проект с помощью нейросети — бесконечные галлюцинации довели. Начал собирать инструкцию для ИИ. Через 14 версий и 25 000 слов получил систему с адаптивным Deep Compute Engine, Red Teaming и двухмерной системой статусов.

В статье:

Эволюция от v1.0 до v7.7.2 — что добавлял и зачем

Какая версия подойдёт под вашу задачу

Инструкция по внедрению в системный промпт

Режим Brainstorming для креатива

Пасхалка: иммерсивная «БРО» версия для фана

Для тех, кто устал объяснять агенту, что он выдумал параметр.

Читать далее

Приведение типа в C++

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

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специфичных. Это десятая статья из серии, список предыдущих статей приведен в разделе 9. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Данная статья посвящена приведениям типа.

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

Итак, попробуем рассказать о приведениях типа максимально подробно.

Читать далее

ИИ в Agile-команде. Цифровой помощник, железный дровосек или коллега?

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

Всем привет! На связи команда «Клаудмастер» («Инферит FinOps»). Хотим рассказать вам про то, как мы используем ИИ в нашей работе.

Помните март 2025-го? Дарио Амадей, генеральный директор Anthropic, обещает, что очень скоро почти весь код будет писать ИИ, регуляторы и рынок труда должны будут адаптироваться (ну вы поняли). 

Тогда мы с командой спешно затеяли эксперимент: решили проверить, каков реальный КПД от ИИ на практике и стоит ли нам в него вложиться.

Читать далее

Агглютинативный код: почему будущее IT требует смены лингвистического фундамента

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

Каждые несколько лет IT-индустрия переживает очередной ренессанс. Мы пишем новые языки программирования - Rust для безопасной работы с памятью, Go для идеальной конкурентности, Swift для экосистемности. Мы плодим новые фреймворки, стандарты и сетевые протоколы, пытаясь превзойти существующие ограничения.

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

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

Читать далее

Генерация лабиринтов с использованием алгоритма Recursive backtracker

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

Расскажу о том, как сгенерировать рандомный лабиринт, используя алгоритм Recursive backtracker. Все подробности об алгоритме, структуре кода, асимптотике и итоговых лабиринтах здесь.

Читать далее