JPA не предоставляет first-class модель для частичных вложенных графов как концепта. Для этого нужны JDBC (ручная сборка), jOOQ (MULTISET) или Blaze Persistence (Entity Views).
Большинство обсуждений вокруг persistence начинается не с той проблемы. Мы сравниваем фреймворки, SQL-инструменты, ORM… Но реальная проблема проще и фундаментальнее:
Реляционный JOIN результат имеет плоскую форму по умолчанию.
Приложениям нужны вложенные объектные графы или специализированные формы данных.
Реляционная реальность
Рассмотрим простую модель: Owner → Pet → Visit
В реляционной базе — три таблицы с foreign key связями. После JOIN:
Читать далееKODE.market: Как я написал первый в мире поисковик по GitHub и GitLab + P2P-раздатчик open-source кода + Антивирус.
Без модерации, комиссий и SEO-мусора. Мгновенный поиск, проверка идей + гибридная раздача релизов в одном инструменте.
Привет, Хабр! На связи TechnoL0g. Если вы хоть раз пробовали опубликовать своё детище в официальных сторах или годами поддерживали open-source репозиторий, то прекрасно знаете, сколько боли приносит классическая дистрибуция.
Читать далееВыбор мощной нейросети для создания эскиза тату во многом определяет качество будущей работы. Разбираем проверенные ИИ для татуировок, алгоритмы генерации и рабочие схемы составления промптов.
Читать далееРазрабатывая приложения, мы стараемся не злоупотреблять дублированием кода. Из часто встречающегося кода мы формируем библиотеки, а для их соединения в инфраструктуре ASP.NET Core приложения используем DI-контейнер. Инфраструктура тестирования для ASP.NET Core API, как правило, тоже повторяется, но какие инструменты помогают нам переиспользовать тестовый код?
Разработчики Python решают эту задачу с помощью pytest.fixtures, однако в dotnet-экосистеме (xUnit) хорошего аналога пока нет.
В статье рассмотрим пример, как в несколько строк собрать полноценное интеграционное окружение с изолированной БД, фейковым временем и случайностью, а также как донастроить это окружение для отдельно взятого теста.
Для кого эта статья: для бэкенд-разработчиков (на .NET), технических лидов, QA-инженеров, которые пишут код, и всех, кто устал от бессмысленно повторяющегося кода в тестах.
Если вы пишете на C#, но хотите добавить тестам элегантности Python — добро пожаловать.
Читать далееВ прошлом посте я предложил концепцию «Паспорта бана»: любая блокировка должна сопровождаться чёткими фактами, указанием причин и фиксацией ответственного лица.
Мне возразили:
«Без жёсткой модерации любой цифровой сад сгниёт. Пацифизм губит ухоженные пространства, сорняки нужно пропалывать без лишних разговоров» (мне ответили не именно так, но по тому с чем мне предложили ознакомиться я это так понял)
Модерацию невозможно сделать правильно. Но без неё ваше сообщество точно умрёт.
Пацифизм губит ухоженные сады. Элиезер Юдковский
Хорошо. Давайте проследим, куда ведёт эта логика, и докрутим её до конца.
ПродолжитьРиэлтор за рулём. Звонит собственник трёшки на Соколе: “Видел ваше объявление, хочу обсудить продажу”. Двадцать минут живого разговора - район, перепланировка, срочность, вилка по цене. Разговор кончается, риэлтор едет на показ, к вечеру у него ещё пять звонков. Утром он помнит, что “был кто-то по трёшке”, но не помнит ни имени, ни цены, ни телефона. Лид потерян не потому, что плохо отработали, а потому, что между звонком и CRM стоит человек с памятью и руками, которые в этот момент держат руль.
Читать далееКак же я люблю метонимичный технологический термин «задача cron». Несмотря на то, что реальным демоном, выполняющим задачи по расписанию, может являться совсем не cron, мы называем этим именем всё, что «ходит» как cron и «крякает» как cron. Как говорит Патрик Маккензи, задачи cron — это одни из самых полезных вычислительных примитивов. Их ценность легко демонстрируется множеством контекстов применения, с которыми сталкиваются почти все, кому требуется регулярно выполнять задачи, например, на ежедневной или ежемесячной основе.
И всё же использовать для планировки задач реальный cron вам, пожалуй, не следует. В 2026 году уже есть более продуманные варианты, и моим любимчиком является скромный таймер systemd. Я люблю таймеры systemd. И если вы о себе пока так сказать не можете, то я приведу аргументы, которые заставят вас пересмотреть свой взгляд.
Читать далееЯ соло-фаундер и единственный разработчик нишевого B2B-продукта. Лендинги для него я переделывал не раз: новая гипотеза — новая посадочная, под кампанию — ещё одна, плюс блог. Каждый раз повторялась одна и та же возня: не забыть мета-теги и Open Graph, прикрутить аналитику, не сломать индексацию, выкатить, проверить. Claude Code заметно ускорял это, но каждый запуск был «с нуля» — качество зависело от того, насколько удачно я в этот раз сформулировал промпт.
В какой-то момент я понял, что повторяю один и тот же процесс, и его можно зафиксировать. Так получилась Landforge — небольшая система Claude Code skills, которая доводит лендинг от брифа до задеплоенной измеримой страницы. Я обезличил её, отвязал от своего продукта и выложил в open-source (MIT). В статье — как она устроена и какие решения за этим стоят. Ссылка на репозиторий в конце; сначала — польза.
Читать далееЗдесь мы разбираем реализации основных возможностей расширений Кана и некоторые частные случаи. Большое внимание уделено устройству свободной монады, как монады коплотности различных забывающих функторов.
Читать далееНо почему, почему, почему
Был светофор зеленый?
А потому, потому, потому,
Что был он в жизнь влюбленный.
В новом дайджесте победители Apple Design Awards 2026 и эффективность использования памяти в Android 17, обертки свойств в Swift и корутины на низком уровне, PWA после блокировки в App Store, игровая реклама 2026, дообучение LLM, метрики, практики, компромиссы и многое другое. Заходите!
Читать далееГотовиться к собеседованию по списку из StackOverflow — значит знать ровно то же, что знают все остальные. Интервьюеры это чувствуют. В этой статье — 10 вопросов, которые реально задают на Python backend собеседованиях, с разбором так, как это объяснили бы вам после интервью на обратной связи.
Читать далееАрбитражные суды возвращают или оставляют без движения значительную часть исковых заявлений ещё до того, как судья изучает позицию сторон по существу спора. Причина — не слабость правовой позиции, а нарушение процессуальных требований, которые можно и нужно проверять до подачи. Разбираем механику четырёх наиболее распространённых ошибок и алгоритм их предотвращения.
Читать далееРазработчики и системные администраторы, которые имеют дело и с Windows, и с Linux, давно привыкли к одной проблеме: скрипты и команды нормально функционируют на сервере, но не пойдут без адаптации на локальном компьютере. Для запуска привычных утилит вроде ls, cp, grep или find обычно приходилось использовать WSL, Git Bash или другие слои совместимости.
Microsoft решила упростить этот сценарий и выпустила пакет Coreutils для Windows, добавляющий популярные Unix-команды прямо в их систему. Решение ориентировано прежде всего на разработчиков, DevOps-инженеров и администраторов, которым приходится регулярно переключаться между разными платформами. Давайте разберемся, что это за пакет и как он устроен.
Читать далее →Предположим, вы пишете интерпретатор машины Тьюринга, запущенный в Web Worker’е. UI должен показывать трейс — как машина шагает от состояния к состоянию, что пишется на ленту, как двигается каретка. Чтобы пользователь успевал считывать изменения в UI, между итерациями движка нужна короткая задержка — миллисекунды, регулярно, на каждом шаге. Это приостановка движка между итерациями — регулярная и предсказуемая, не «пауза» в смысле UI-кнопки «Пауза» (та останавливает машину до клика «Продолжить»).
Возникает вопрос: где именно в цикле итерации воркеру нужно реализовать приостановку? Кандидатов два, и выбор между ними фиксирует сразу два контракта: хуков движка и протокола между воркером и основным потоком. Выбрать точку — это спроектировать обе стороны сразу; промахнуться — испортить обе. Эта статья — про этот выбор.
Где живёт паузаВторая часть по нанисанию своего языка программирования с нуля на Rust: Написание парсера для выражений.
Читать далееБыл у меня знакомый стажёр. Толковый, исполнительный, делал всё, что скажешь, и ровно так, как скажешь. Проблема была одна: если в задании написали глупость, он делал глупость. Не потому что дурак — потому что доверял написанному больше, чем себе.
Так вот, ИИ-браузер — это тот самый стажёр. Только теперь у него ваша почта, ваш банк и корпоративный портал, а вы ушли пить кофе.
Меня зовут Сергей Куриленко, я ML-разработчик, соавтор курса «Нейросети для работы» и ревьюер на курсе «Нейросети для бизнеса» в Яндекс Практикуме. В этом тексте я расскажу, какие риски несёт использование ИИ-браузеров, какие кейсы уже случились и какие правила стоит соблюдать, чтобы сохранить данные и деньги на счету.
Читать далееИнтернет дал человеку доступ к практически неограниченному объему информации. До его появления знания приходилось добывать буквально вручную: искать книги, выписывать цитаты и сопоставлять источники. Интернет радикально упростил этот процесс, но оставил человеку важную работу — поиск, фильтрацию и интерпретацию информации. Если ответов на вопрос миллион, все равно приходится самостоятельно решать, каким из них доверять и как собрать из разрозненных фрагментов цельную картину.
Генеративный ИИ сделал следующий шаг. Теперь он не просто помогает найти информацию, а сразу выдает готовый результат: объяснение, конспект, аргументацию, решение задачи или даже целую статью. По запросу «объясни мне преобразования Фурье» можно за несколько секунд получить ответ, на который раньше ушли бы часы работы с учебниками и поисковиками.
С технической точки зрения это огромный прорыв. Но, как говорится, есть нюанс. Если раньше мы были вынуждены активно участвовать в процессе получения знания, то теперь появился соблазн передать часть этой работы ИИ, доверившись готовому ответу: не проверить данные, не разбирать выводы по шагам, не строить собственное понимание, а просто принять как данность. Глобально мы к этому не были готовы.
Один мой товарищ любит повторять, что образование — это форма насилия. И я с ним согласна. Задачи решают не потому, что хочется, а потому, что только через повторяющееся когнитивное усилие формируется и тренируется нейронная «мышца». И чем проще становится обход этого усилия, тем выше требования к намерению самого человека учиться. Здесь-то и начинаются сложности.
Предлагаю обсудить, как генеративный ИИ постепенно усиливает кризис доверия в системе образования…
Читать далееЕсли игры перестали вас радовать или вы думали, что проекты в жанре выживания уже ничем не способны удивить, Project Zomboid довольно быстро объяснит, насколько сильно вы ошибались. На первый взгляд PZ выглядит как неприметная инди-песочница, но стоит дать ей шанс — и вы сами не заметите, как оставите в ней десятки, сотни, а то и тысячи часов!
Когда сравниваешь такие игры с дорогими AAA-релизами, особенно хорошо понимаешь, в чём их настоящая ценность, ведь они берут не графикой, не бюджетом и не дорогими рекламными трейлерами, а устройством мира, проработкой механик и количеством возможностей, предоставленных игроку. За 13 лет раннего доступа Project Zomboid превратилась в один из самых цельных симуляторов выживания, где можно тонко настроить под себя почти каждый аспект игры. Хотите лютый хардкор, где любая ошибка фатальна? Пожалуйста. Хотите лайтовую песочницу в духе The Sims, где вы отстраиваете дом, контролируете нужды героя, разводите кур и следите за огородом, попивая пивко на фоне умирающего мира? Без проблем! Это не история про героя, который спасает мир, это история про обычного человека, который просто пытается дожить до завтра, именно этим она столь притягательна!
Так что, если вы давно хотели попробовать что-то необычное, глубокое и по-настоящему цепляющее, сегодня я расскажу, почему Project Zomboid заслуживает вашего внимания. А заодно поделюсь сборкой с последним на данный момент обновлением, чтобы вы смогли лично проверить, насколько опасно бывает «просто зайти в игру на часок» =)
Читать далееСпустя почти два года с момента выхода прошлой стабильной версии (бета-версии выходят практически каждый месяц), опубликована новая стабильная версия программы для хранения заметок OutWiker 4.0. Особенностью программы является то, что заметки хранятся в виде каталогов с текстовыми файлами, к каждой заметке можно прикреплять произвольное количество файлов, программа позволяет писать заметки с использованием различных нотаций: HTML, вики, Markdown (если установлен соответствующий плагин). Также с помощью плагинов можно добавить возможность размещения на викистраницах формул в формате LaTeX и вставки блока кода с раскраской ключевых слов для различных языков программирования.
( читать дальше... )