Обновить
1024K+

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

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

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

База встала под нагрузкой: как найти, кто кого блокирует в PostgreSQL

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

CPU и диск свободны, а сервис уже задыхается: транзакции ждут блокировок, соединения заканчиваются, база перестаёт отвечать.

Разберём, как найти корневой процесс в PostgreSQL, отличить длинную транзакцию от конкуренции за строки и остановить каскадный сбой.

Читать далее

Блокчейн глазами разработчика: append‑only база данных, за запись в которую платят

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

Слово «блокчейн» испорчено маркетингом. За десять лет вокруг него наросло столько «революций», «иксов» и «цифрового золота», что нормальный разработчик при его звуке закрывает вкладку — и я его понимаю.

Проблема в том, что за хайпом прячется инженерно интересная конструкция. Если убрать из блокчейна всё маркетинговое и посмотреть на него глазами человека, который каждый день работает с Postgres, Kafka и git, останется знакомая до боли вещь: реплицированный append‑only лог, в котором состояние — это проекция, а запись — платная.

В этой статье я разберу блокчейн именно так: без «крипты», через аналогии с инструментами, которыми вы пользуетесь каждый день. А в конце мы подключимся к реальной сети из десяти строк TypeScript и пощупаем этот лог руками.

Читать далее

DB-клиент OpenIDE: от подключения к базе до EXPLAIN и экспорта данных

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

Когда нужно проверить запись в таблице, выполнить запрос из логов или понять, почему база выбрала странный план, разработчик обычно вспоминает про DBeaver, pgAdmin или DataGrip. Все три варианта решают задачу, но по-разному.

1. DBeaver и pgAdmin остаются отдельными программами: со своими окнами, подключениями и настройками. 
2. DataGrip можно получить как в отдельной IDE, так и внутри IntelliJ IDEA Ultimate, WebStorm, GoLand и других IDE от JetBrains.

Но сегодня путь от скачивания до работающей IDE с лицензией далёк от простого и легального.

OpenIDE это третий вариант: полноценный DB-клиент уже входит в состав IDE. Через него легко подключиться к базе, посмотреть ее структуру, написать SQL с комплишенами и подсветкой синтаксиса, запустить EXPLAIN, править и выгружать данные.

Читать далее

Отслеживание запуска приложения в Spring

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

Почему Spring-приложение запускается медленно, и на каком именно этапе оно тупит?

В новом переводе от команды Spring АйО разбираемся, как заглянуть внутрь процесса создания контекста и отследить инициализацию бинов.

Читать далее

Необратимая операция: как печатать чек, если непонятно, напечатался ли он

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

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

Читать далее

Чему десять лет в разработке научили меня о технологиях

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

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

Читать далее

Я собрал 33 ИИ‑агента на одном движке. Показываю, как устроены пять из них

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

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

Все они работают на одном движке. Один и тот же Docker-образ, одна и та же кодовая база. Форков ядра — ноль.

Различаются они ровно одним: где у каждого проходит граница между тем, что считает код, и тем, что говорит модель. Это и есть содержание всей работы. Не промпт-инжиниринг, не выбор модели, не RAG. Граница.

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

TL;DR

Читать далее

Бенчмаркая Enumerable.Chunk: почему батчей меньше, а проход до ×2,7 дольше

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

Chunk делит коллекцию на массивы — одна строка кода. Но есть размер чанка, после которого он замедляется в разы при тех же данных и той же памяти. А на массиве и на List<int> внутри разный код, и в самой строке этого не видно.

Читать далее

Как PVS-Studio улучшает качество embedded-проектов

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

Embedded-разработка отличается множеством уникальных настроек, компиляторов и систем сборки. А при использовании стандартных методов анализа могут возникать сложности. Для решения этой проблемы PVS-Studio предоставляет специально разработанный механизм. Давайте узнаем о нём больше и посмотрим, как его можно применять на практике.

Читать далее

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

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

Привет, Хабр! Кредиты и все, что с ними связано – тема для многих весьма чувствительная. Мы в Smart Engines выступаем за то, чтобы сделать самые раздражающие процессы удобными и быстрыми. И в этом смысле распознавание документов – это редкий пример технологии, где интересы банка (сократить издержки), сотрудника (меньше рутины) и клиента (не ждать решение неделями) действительно совпадают. Под катом рассказываем, как автоматическое распознавание документов может трансформировать процесс кредитования в банках и как такие технологии становятся ключевым звеном кредитного конвейера.

Читать далее

Kazry — новая кусочно‑заданная активация

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

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

Читать далее

Как мигрировать 1 млн строк кода с одного языка на другой за 2 недели

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

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

За последний месяц отдельные разработчики Anthropic с помощью Claude Fable 5, Claude Opus 4.8 и dynamic workflows перенесли десять проектов объемом от десятков до сотен тысяч строк кода. В этой статье мы разберем два примера и лучшие практики, сформировавшиеся в ходе этих проектов.

Джарред Самнер, сооснователь Bun и технический специалист Anthropic, использовал Claude Code, чтобы перенести Bun с Zig на Rust. Менее чем за две недели было создано миллион строк кода. До слияния ветки 100% существующих тестов Bun проходили в CI. После слияния обнаружилось 19 регрессий, все они уже исправлены. В июне версия на Rust вошла в состав Claude Code.

Майк Кригер, один из руководителей Anthropic Labs, за выходные перенес кодовую базу на Python в 165 000 строк TypeScript. В процессе работали сотни агентов, использовались восемь контрольных этапов, три раунда состязательного ревью и финальная проверка, которая сравнивала вывод каждой команды с результатом оригинальной версии на Python.

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

Читать далее

VK Security Gate: наша платформа для разработчиков

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

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

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

Читать далее

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

Лень, Modbus и ИИ: как я сделал инструмент, которого мне не хватало на пусконаладке

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

Когда я работал инженером АСУ ТП, мне часто приходилось проверять связь с устройствами по Modbus. Существующие утилиты помогали, но почти в каждой чего-то не хватало. Спустя несколько лет я вернулся к старой идее и с помощью ИИ-инструментов разработал ProtoLink — простой локальный клиент для Modbus TCP и RTU. Рассказываю, как появился проект, что он уже умеет и в какую сторону будет развиваться дальше.

Читать далее

React Update Lifecycle: что происходит при обновлении компонента

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

В этой статье последовательно разобран полный цикл обновления React: от Virtual DOM до внутреннего устройства Fiber Reconciler.

Разобраться в жизненном цикле React

Невероятно быстрый алгоритм нахождения простых делителей огромных составных чисел

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

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

Читать далее

Месяц, 500M токенов и симулятор завода: как мы с ИИ-агентом построили имитационную модель производства чипов

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

Когда я прочёл о том, что Андрей Карпати больше не пишет код руками, а перешёл на агентное программирование, я, честно говоря призадумался. Скажи об этом кто-то другой, пропустил бы мимо ушей, но именно его слова стали сигналом - в своей работе, и в группе разработчиков придётся что-то менять. Как известно, личный пример - лучший способ убедить коллектив и повести за собой, поэтому пришлось пробовать.

Первой же пробой пера стал вовсе не Todo-app, а самый что ни на есть хардкорный энтерпрайз. Задача - создать полноценный аналог интеграционной шины CellWorks MBX. Это ключевой элемент автоматизации завода по производству полупроводников: она связывает в единое целое MES-систему и сотню единиц технологического оборудования. Мы как раз начинали перенос легаси-стека с PA-RISC-серверов на x64, и вопрос портирования старого транспорта стоял остро.

Вторым проектом стала имитационная модель этого производства. Нет-нет, это не аналог factorio, в ней ни намёка на 3D или игровые механики. Это симулятор реального цеха: с моделями оборудования, технологическими маршрутами, реальным незавершённым производством, производственным планом на годы вперёд (при желании). Эта модель отвечает на вопрос: какую продукцию и в какой срок я потенциально смогу выпустить, если запущу в работу вот столько-то сырья, и оборудование не встанет надолго из-за поломки или отсутствия материалов. Результат превзошёл ожидания. Софт, который раньше создавался большими коллективами, благодаря ИИ и open-source, теперь можно создавать практически в одиночку, и активно внедрять в реальное производство!

Читать далее

Симулятор программирования космических аппаратов

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

Лет 8 назад пришла идея создать игру, где игрок сможет программировать космические аппараты, управлять его системами, управлять полётом и так далее. Концептуально игра должна была быть похожей на Kerbal Space Program, но вместо конструирования космических аппаратов игрок должен их программировать. Также KSP мне не нравился тем, что игрок по сути управляет космическим аппаратом вручную, вручную совмещает точки, стыкует космические аппараты «на глаз». Хотелось больше автоматизации (космическая станция должна расти). И в этот момент у меня зародилось приблизительное и далёкое видение моей игры.

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

Читать далее

Вам не нужны микросервисы

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

Какое‑то время назад, проработав 3 года на позиции Java Middle+‑ разработчика на крупном монолитном легаси‑проекте (естественно, модульном), я столкнулся с тем, что не имел практики в создании приложений на микросервисной архитектуре. При этом я понимал, что работа с микросервисами — это работа с актуальным стеком технологий в мире Java. И если ты не работаешь с микросервисами, то ты вроде как не имеешь необходимой квалификации для большинства вакансий на рынке труда. По крайней мере, если судить по самим вакансиям.

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

Читать далее

Как мы вынесли алгоритм ценообразования из кода Яндекс Такси (и почему это не было очевидно с самого начала)

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

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

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

Читать далее