Обновить

Бэкенд

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

Анти Бот для 1C Битрикс: как антиспам для WordPress обзавёлся родственником на Битриксе

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

Некоторое время назад я писал здесь про антиспам для WordPress – историю о том, как из недоступного клиентам Cloudflare и дырявых бесплатных решений родился свой плагин геоблокировки, а чуть позже – вторую часть с разбором критики и рассказом, что успело поменяться. В конце самой первой статьи была одна проходная фраза: «параллельно ведется разработка аналогичного решения для 1С Битрикс – задача там несколько сложнее архитектурно, но подход тот же». С тех пор модуль доехал до Маркетплейса, обзавелся парой обновлений и первыми покупателями. Расскажу, что получилось – и почему для Битрикса такая защита понадобилась даже раньше, чем для WordPress.

Читать далее

Новости

Почему O(1) проигрывает O(n): структуры данных в Go на реальном железе

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

Объясню структуры данных через очередь в поликлинике, а потом покажу, где эта аналогия ломается: почему связный список с «вставкой за O(1)» в прикладном Go обычно проигрывает обычному массиву.

Спойлер: асимптотика здесь не ошибается. Ошибается вывод, который мы из неё делаем.

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

Читать далее

Архитектура движка подбора билетов: три GDS, железная дорога и маршрут, который меняют в дороге

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

Референсная архитектура движка подбора билетов на redb: канонная модель, Scatter-Gather по трём GDS и ж/д, дерево-маршрут и saga-переоформление в дороге.

Сотруднику нужно долететь до одного города, доехать поездом до другого и вернуться тем же путём. Одна командировка, билеты из разных систем бронирования. А потом он уже в дороге пишет в телеграм: «планы изменились, летим не туда, перебронируй».

Три системы под самолёты (Amadeus, Sabre, Travelport) исторически несовместимы: разные XML-диалекты одного и того же понятия перелёта, выросшие из мейнфреймов 60–80-х, каждый со своими причудами и полями, которых нет у соседа. Плюс отдельная, никак не связанная с ними система бронирования под железную дорогу: свой формат, своя логика мест и классов, ничего общего по структуре с авиационными GDS. Запросить всё это параллельно, свести разноформатные ответы в одно и собрать валидный маршрут по стыковкам уже само по себе задача не для россыпи if и ручных мапперов.

А дальше человек в дороге меняет ...

Читать далее

Простые сложные сети: как устроена сеть в MWS Cloud Platform

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

Привет! Меня зовут Ренат Ахмеров, я один из руководителей направления по работе с виртуальными сетями и сетевыми функциями в MWS Cloud Platform. В этой статье я рассказываю про сетевые возможности нашей облачной платформы, приправляя рассказ своей личной историей взаимоотношений с компьютерными сетями. 

Чтобы наглядно объяснить, как работают сети в нашем облаке, мы рассмотрим по шагам построение некой e-commerce системы: от примитивного решения в одной «коробочке» до полноценной Enterprise Grade-архитектуры.

Читать далее

Проблема «принципал — агент» в эпоху ИИ‑агентов

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

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

В статье разберем этот конфликт через проблему «принципал — агент» и узнаем, почему особенно остро он проявляется в больших компаниях и open source.

К разбору

Что находится внутри файла PowerPoint?

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

Переименуйте любой .pptx в .zip, распакуйте – и увидите ZIP-архив, набитый XML-файлами. Внутри спрятана вся ваша презентация: слайды, темы, встроенные таблицы Excel, картинки. Разбираемся, как этот формат устроен на самом деле – и почему автоматизировать PowerPoint кодом так тяжело.

Читать далее

Пишем huntZip - Как я написал библиотеку для архивов на Python

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

Hello world!

Как то раз мне понадобилось работать с архивами в одном из своих проектов, но тут возникла проблема — Для ZIP тебе нужен zipfile, для какого нибудь TAR — tarfile, а для других (типа 7z и rar) вообще нужны rarfile и py7zr, И из за этого код превращается в не красивый забор из кучи и кучи импортов. И мне это надоело, вот где то 2–3 дня назад я начал делать свою библиотеку для архивов, которую я назвал huntZip.

Читать далее

Самое интересное в новой версии Go — 1.27

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

Всем привет! Меня зовут Паша Агалецкий, я техлид команды платформы разработки Авито. В этой статье я расскажу о новой версии Go — 1.27. Я выбрал для вас самые интересные фичи — те, что влияют на код или дают новые по-настоящему полезные инструменты.

Кстати, у этого материала есть видео-версия. Вы можете ознакомиться с обновлением Go, посмотрев мой обзор на YouTube, VK Видео или RuTube

Читайте про обновление под катом

Читать далее

librats: Выпуск версии 2.1.x (библиотека для распределённых P2P-приложений). Так же релиз rats-search 2.2.2 и rasync

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

Всем привет! Я продолжаю развивать свою библиотеку для создания распределённых приложений. Она уже легла в основу новой версии rats-search (распределённый торрент-поисковик) и rasync (синхронизация папок, файлов и исходников между устройствами), а также, судя по всему, используется в стороннем клиенте UltraVNC (VNC-клиент).

Библиотека позволяет развернуть собственную P2P-сеть, связать пользователей между собой и выстроить обмен данными через потоки разных типов — бинарные, строковые и другие. Главная особенность — автоматическое обнаружение участников (peer discovery), что особенно актуально в условиях постоянных блокировок и сетевых ограничений.

На данный момент поддерживаются C/C++, Java (Android), Python и Node.js.

Это очередное обновление: ещё больше стабильности в работе различных функций. Обо всём подробнее — далее.

Последний стабильный релиз на сегодня — 2.1.2. Исходный код и собранные бинарные файлы доступны для:

Читать далее

Как ИИ убивает карьеру джунов и что с этим делать.  Полный перевод статьи Руссиновича и Хансельмана о будущем разработки

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

По мере развития искусственного интеллекта дискуссии о будущем многих профессий становятся все жарче. Мы попадаем в заколдованный круг: компании ищут людей с опытом, а задачи начального уровня автоматизируют с помощью ИИ. Но чтобы стать опытным, опыта нужно где-то набраться, а как это сделать, когда на работу берут только с опытом? Особенно остро кадровая проблема ощущается в сфере разработки. 

Этой теме посвящена глубокая статья «Переосмысление профессии разработчика ПО в эпоху ИИ», которую написали корифеи ИТ-рынка: Марк Руссинович – технический директор Microsoft Azure, прославившийся созданием мощных системных утилит (набор Sysinternals) для белого хакинга Windows, и Скотт Хансельман – вице-президент и член технического совета Microsoft CoreAI и GitHub. Материал показался нам настолько интересным, что мы перевели его целиком, без купюр, чтобы вы могли сами ознакомиться с идеями авторов.

Спойлер: в статье есть о чем подискутировать.  

Читать далее

Pods как Workers, а не агенты: переосмысление единицы развёртывания для ИИ-агентов в Kubernetes

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

Команда VK Cloud перевела материал о посте Lin Sun в блоге CNCF: остаётся ли Pod правильной единицей развёртывания, идентичности и жизненного цикла для ИИ-агентов на Kubernetes. Материал будет полезен платформенным инженерам, DevOps- и SRE-инженерам и всем, кто разворачивает ИИ-агентов в кластере.

Читать далее

One Branch To Rule Them All

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

Всем привет. На связи Михаил, технический лидер проекта Axelix.

Я уже довольно давно хотел написать небольшую статью о нашей модели ветвления git в надежде, что она может пригодиться и другим.

В мире существует немало стратегий ветвления git, например: Gitflow, GitHub-flow, Trunk-Based-Development (TBD) и так далее.

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

Читать далее

5ⁿ → 4n+1: сколько на самом деле дают редукции в explicit‑state model checking

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

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

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

Три результата, ради которых стоит читать дальше:

Читать далее

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

Как довериться AI-агентам, чтобы не ревьюить код

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

Навайбкодить 10k строк кода за час — дело нехитрое. Но как проверить, что этот код рабочий? Можно потратить много часов на ревью классическим способом, а можно прочитать эту статью и применить у себя новый метод. В материале архитектор Mindbox Саша Кальницкий рассказывает, как перестроил работу с AI‑агентами, чтобы больше им доверять и не тратить время на код‑ревью.

Читать далее

Летальное трио агентской разработки: как ИИ‑агенты открывают доступ к инфраструктуре и что с этим делать

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

Привет, Хабр! Я Денис Макрушин, работаю в Яндексе, и вместе с командой SourceCraft Security строю платформу для безопасной агентской разработки, а в свободное время ищу уязвимости в ИИ‑агентах и иногда рассказываю об исследованиях в своем блоге. Чем дольше этим занимаюсь, тем лучше вижу тенденцию: индустрия обсуждает, что агенты умеют делать, но реже говорит о том, какие решения и как проще внедрять, чтобы сделать агентскую инфраструктуру безопаснее. Вместе с моими коллегами Ратмиром Самархановым и Андреем Погирейчиком мы решили проверить гипотезу: «наши ИИ‑агенты в разработке могут быть скомпрометированы и существуют простые средства для контроля их безопасности». Расскажем о первых результатах.

Читать далее

Мой опыт переноса интерпретатора «Эллочка» из DOS в Windows на Zig

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

Две недели назад в комментариях к моей статье про скриптовый язык для Wiremock со мной связался автор языка «Эллочка» — Эрих Генрихович Гаузер, создавший этот интерпретатор ещё в 1999 году для DOS. Мне стало дико интересно, что это за зверь: никаких исходников, только описание синтаксиса на сайте автора. За час с помощью ИИ я реализовал базовый интерпретатор на Zig под Windows, а за 9 часов — все 62 оператора языка. В статье рассказываю, как воссоздать язык программирования по одному лишь описанию, почему пришлось «укрощать» Claude через промежуточные вопросы в других нейросетях, и как запустить оригинальные DOS-игры «Змейка» и «Питон», написанные автором четверть века назад.

Читать далее

WordPress и Tilda глазами разработчика: чем они отличаются на техническом уровне

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

Сравнений WordPress и Tilda в интернете уже достаточно. Обычно они сводятся примерно к одному и тому же набору критериев: стоимость, простота освоения, скорость создания сайта, SEO, количество шаблонов и необходимость заниматься техническим обслуживанием.

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

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

Она становится особенно заметной, когда сайт перестаёт быть набором из пяти-десяти страниц и на нём появляются повторяющиеся данные: услуги, проекты, сотрудники, объекты, товары, характеристики, отзывы. А затем эти данные начинают зависеть друг от друга.

Поэтому в этой статье я хочу сравнить WordPress и Tilda не столько по внешним возможностям, сколько по их внутренней логике:

Читать далее

Go 1.27: generic-методы, которых не видит reflect

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

Go 1.27 (на момент написания rc3, финал обещают в августе) приносит generic-методы: метод наконец может объявить собственный тип-параметр. Взял golang:1.27rc3 в Docker и проверил, где у фичи границы. reflect новый метод не видит вообще, хотя go/types на том же типе показывает его в method set — метод доступен компилятору и недоступен через рефлексию, поэтому ни один интерфейс им не удовлетворить, а валидаторы и ORM его не заметят. Померил цену: на 200 инстанцирований с запретом инлайна бинарь с методом больше на 2264 байта, из которых 2000 приходятся на длину имён символов, а не на код; по времени разницы нет — это generic-функция с ресивером и тот же gcshape-стенсилинг. А вот что реально заметит прод на апгрейде: GODEBUG=asynctimerchan=1 теперь роняет процесс до main, encoding/json v1 на движке v2 меняет байты вывода на битом UTF-8, json.RawMessage обзавёлся String() и поменял ваши логи. Плюс замеры нового аллокатора: минус четверть времени на new(16 B) и ноль на 128 байтах.

Читать дальше →

Опухший C++ код

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

Есть такая старая программистская байка, что нельзя платить программистам за строки кода, так как тогда они будут писать длинный бестолковый код и любить метод copy-paste. Будущее наступило. Только теперь этими “программистами” является генеративный ИИ (GenAI), которому как раз платят за строки кода. Иронично.

Один из моих интересов — изучение сгенерированного С++ кода, чтобы понимать, как развивается индустрия создания ПО, какие проблемы уходят, а какие наоборот возникают. После заметки “Дайте посмотреть на нормальный С++ проект, созданный вайб-кодингом” мне предложили заглянуть в проект VibeTensor, что я и сделал.

Читать далее

Ананкастное расстройство личности — проклятье и сила программиста

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

У каждого есть навык или черта, которые его выделяют среди других, определяют многое в его поведении и в том числе то почему он занимается тем делом, которым занимается. Есть подтип программистов, которым присуща педантичность, аккуратность, желание привести все в порядок, расставить по своим местам, в общем упорядочить хаос. Я как раз такой. Если вы тоже из “этих”, то прошу под кат, обсудим как с этим жить :)

Читать далее
1
23 ...