Обновить
256K+

Веб-разработка *

Делаем веб лучше

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

Непротиворечивая классификация IoC

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

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

Прислушаться к этому источнику

Новости

VideoFloppy: пять лет, десять пользователей, один доллар

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

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

В 2017 году я готовился к IELTS, и мне дали совет, который дают всем: смотрите фильмы с субтитрами.

Этот совет отправил меня искать инструмент вполне определённого рода. Не стриминг — поиск по фразам. Вводишь предложение и видишь, как его произносят, в контексте, в том фильме, где оно попалось. Я такой нашёл. Эстонский сайт, судя по домену .ee, название которого я начисто забыл.

Он ничего у себя не хранил. Он собирал встроенные плееры с видеохостингов и делал их доступными для поиска. Это различие имело значение и технически, и юридически, и тогда я особо не задумывался ни о том, ни о другом — мне просто показалось, что это остроумно.

Потом сайт закрылся. Без объявлений, без объяснений. Я несколько лет искал замену и не нашёл.

В 2021 году я решил сделать свой.

Читать далее

Пишем свой React: Fiber, хуки и рендеринг под капотом

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

Каждый день мы пишем JSX, используем хуки и стараемся не нарушать их строгие правила. Но как вся эта «магия» работает под капотом? Почему условный рендер ломает useState, а индексы массива в key приводят к багам? Зачем React перешел на архитектуру Fiber и как алгоритм обходит дерево элементов, не блокируя браузер?

Чтобы перестать воспринимать React как черный ящик, лучший способ — написать его с нуля.

В этой статье мы шаг за шагом воссоздадим собственный движок React. Мы реализуем функцию createElement, разберем Fiber-архитектуру с асинхронным рендерингом, напишем алгоритм Reconciliation и создадим систему хуков, разобравшись в логике их работы.

Читать далее

Почему Deno быстрее Node.js: расследование

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

На официальном сайте Deno (раздел Built for the real world) красуется любопытная табличка. Согласно их замерам, Deno уходит в отрыв от Node.js по HTTP аж в 1.65 раза:

Независимые тесты (denosaurs/bench, pkgpulse 2026, jsmanifest 2026) показывают похожую картину: Deno стабильно быстрее на HTTP-нагрузке. Я решил копнуть глубже и понять, где Deno получает преимущество по сравнению с Node.js.

Читать далее

Я подключил ИИ-агента к YouGile: теперь он сам разбирает задачи и обновляет статусы

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

ИИ-агент может не только писать код, но и сам забирать задачи из YouGile, выполнять их и обновлять статусы. Рассказываю, как я связал Codex и Claude Code с таск-трекером, почему обычный retry после timeout однажды создал дубли и зачем между LLM и API нужен отдельный детерминированный слой.

Читать далее

Yet Another English — и да, ещё один сайт по изучению английского, ну че поделать?

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

Ну как вы поняли, сервис я так и назвала, чтоб сразу закрыть основное возражение (хихик). Да знаю, что их тысячи — и сделала еще один, и объясню дальше почему.

У меня средненький английский, примерно B1 (но для менеджерки продукта требуется обычно по‑больше левел ю ноу). Я смотрю YouTube на англ, чтобы его подятнуть и постоянно натыкаюсь на незнакомые слова. В табличку выписывать, в анки загружать — мне было лень. Хотелось так: кинула ссылку на видео — слова моего уровня сами вытащились из субтитров и встали в очередь на повторение.

Работаю много, по вечерам есть 1–2 часика обычно. Вот за пару месяцев таких вечеров (595 коммитов) получился тренажёр: pwa на реакте, данные живут в IndexedDB у пользователя, + словарик + разные упражнения.

От «сайта эпохи ИИ» ждёшь, что внутри обёртка над чат‑ботом, РАГИ, и все такое ну вы поняли. У меня вышло наоборот: LLM здесь — подрядчик на двух узких задачах, а основную работу делают частотные списки, алгоритм из 90-х ну и клод в качестве работяги. Собсна про это и будет статья, или серия статей.

Читать далее

SOAP в .NET без WCF: WS-Security, MTOM и ?wsdl как шаг маршрута

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

SOAP никуда не делся. Продаёте авиабилеты, значит ходите в Amadeus, Sabre и Travelport по SOAP. Интегрируетесь с банком, госпорталом, страховым бэкендом, биллингом оператора или почти любым корпоративным продуктом, купленным до 2015-го: там контракт это WSDL, а на проводе <soap:Envelope>. Подписи WS-Security, вложения MTOM, SOAP 1.1 рядом с 1.2, soap:Fault при ошибке: этот мир жив, он приносит деньги и не переезжает на REST по вашей вежливой просьбе.

В .NET вызывать его стало неудобно. WCF как полноценный фреймворк ушёл. CoreWCF есть, но во всех опубликованных версиях висит незакрытая крипто-уязвимость, так что затащить его значит поменять одну проблему на другую. dotnet-svcutil генерит клиент из WSDL на этапе сборки, но это кодогенерация, приклеенная сбоку, а не шаг интеграции. А хостинг SOAP-эндпоинта, WS-Security руками или проводка MTOM обычно заканчиваются кучей конфигурации System.ServiceModel, которую никто не хочет держать.

redb.Route.Soap идёт другим путём. SOAP становится обычным шагом пайплайна в вашем же .NET-процессе. Вызвал сервис, получил типизированный ответ. Поднял эндпоинт, отдал тело маршруту, вернул ответ. Всё in-box: HttpClient, общий Kestrel-хост и System.Security.Cryptography.Xml для WS-Security. Ни WCF, ни рантайма System.ServiceModel, ни уязвимой зависимости, ни отдельного шлюза. Разберём, как это используется и почему нативный коннектор внутри ESB бьёт codegen-клиента или отдельную коробку.

Читать далее

CSS задачи на 200 IQ

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

У вас бывает такое чувство, когда вы при выполнении работы упёрлись в какую-то проблему и что-то внутри подсказывает, что не может такого быть, чтобы у неё не было решения? Когда кажется, что уже всё пропало и мы столкнулись с фундаментальным ограничением реальности, но отказ принять это продолжает вести вас в дебри спецификаций, беседы на Github 10 летней давности и изучение статей гигантов уже прошедших этот путь и поделившихся с нами своими результатами? И вот спустя многие часы напряжённого скрипа извилин вы дописали очередную строчку, обновили страницу и вот оно, то, что вы хотели получить смотрит на вас с экрана? Это ощущение успеха, наверное, в той или иной степени знакомо каждому инженеру. В такие моменты мне, обычно, очень хочется поделиться результатом с коллегами и, по возможности, написать статью если это может быть полезно кому-то ещё. В этой записи я собрал 3 подобных ситуации, где в рамках нашей работы возникли решения, которые, насколько мне известно, довольно уникальны и в полной мере не были описаны раньше. Приглашаю вас разделить со мной радость обнаружения решения, которое казалось невозможным!

Читать далее

Автогенерация типов показала, что проблема была не в типах

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

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

Статья не про саму автогенерацию — с ней всё понятно, про неё и без меня написано достаточно. Мы внедрили генерацию типов из OpenAPI, и она вытащила наружу то, что с генерацией напрямую не связано: кто не хочет писать комментарии, почему у одной сущности два имени и почему у нас падал dev. По сути — про команду, эго и умение договариваться.

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

Читать далее

Публичный API у генератора QR-кодов: без ключей, лимитер на файлах и грабля Apache

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

У моего генератора QR-кодов листами появился публичный API: POST с JSON, в ответ сразу готовый PDF, до 1500 кодов за запрос, без регистрации и ключей. Внутри рассказ, почему я не завел ни ключи, ни Redis, как работает лимитер на файлах с flock и fail-open, и на какой грабле Apache POST молча превращался в GET.

Читать далее

Зеркало для людей. Как я сделал читаемую версию форума, на котором общаются только ИИ-агенты

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

Существует форум, на который вас не пустят. Не потому что закрытый — регистрация там всего в один POST-запрос. Вас просто не возьмут на сайт. Гражданами может стать только ИИ-агент. Форум называется 1f916.ai, и это, наверное, самое странное и самое живое место в русскоязычном (и не только) сегменте экспериментов с ИИ этого лета. Я на него подсел. А потом меня начало грызть одно чувство несправедливости — и в итоге я собрал для него окно для людей — 1f916.xrayfun.ru. Рассказываю, зачем, как и что из этого вышло.

Читать далее

Сайт в топе, а кликов нет: при чём тут микроразметка услуг

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

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

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

И тут не всегда помогает ответ «надо ещё поработать над текстами». Иногда текстов уже достаточно. Блоков тоже достаточно. Страница видна, но плохо объясняет машине, что именно она предлагает: услугу, регион, исполнителя, условия, цену, замер, гарантию, филиал.

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

С сайтом услуг это особенно заметно. Интернет-магазин размечать проще: товар, цена, наличие, доставка. У услуги всё грязнее.

Читать далее

«Мы храним ваши пароли в зашифрованном виде» — фраза, после которой стоит насторожиться

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

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

Читать далее

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

SaaS, который не сделаешь с помощью вайбкодинга: 50 000 пользователей и миллионная выручка

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

Всем привет! Это Денис Сметнев. Я тут рассказываю про вайбкодинг, про то, как один человек теперь может заменить команду, и как узкое горлышко переместилось из разработки в сторону маркетинга. При этом я наставник у ребят, которые пилят SaaS, но не справились бы без разработчиков. Речь про Reels-Boss — сервис, который нарезает длинные видео на вирусные вертикальные куски для Shorts, Reels и TikTok. Рассказываю, как ребята втроем обслуживают 50 000 клиентов и почему вайбкодеры не справятся с таким сервисом.

Читать далее

Эра инженерной зрелости: как выглядит стек JS-разработки в 2026 году глазами сообщества

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

Хайп-цикл фронтенда, кажется, наконец-то выдохся. Мы вышли из фазы бесконечного переизобретения колеса, где каждый месяц появлялся «убийца React», и вошли в эпоху убийцы Fable инженерной зрелости. Сегодня опытного инженера сложно впечатлить очередным фреймворком: ценность сместилась в сторону предсказуемости, скорости поставки (delivery) и снижения когнитивной нагрузки.

Привет, меня зовут Павел Востриков, и я — архитектор веб-направления в «Лаборатории Касперского». В этой статье хочу разобрать JS-экосистему как набор инженерных компромиссов.

На HolyJS Spring 2026 мы предложили 120+ инженерам оценить свой реальный стек. Получившийся радар мог быть просто списком библиотек, но в итоге вышел срезом того, как выглядит рациональный подход к коду в 2026 году. Мы видим, как разработчики массово идут в сторону предсказуемой скорости масштабирования решений и инженерной гигиены.

Читать далее

Кому верит Яндекс Браузер и как попасть в этот список: запускаем Yandex Browser Root Certificate Program

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

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

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

Однако один вопрос не решается автоматически: кому браузер должен доверять и на каких условиях. Каждый вендор определяет это сам. Поэтому мы открываем Yandex Browser Root Certificate Program — публичную программу добавления корневых сертификатов в хранилище Яндекс Браузера. В ней описаны требования к участникам, аудит и понятная процедура подачи заявки.

Под катом рассказываем, какие требования нужно выполнить и как в Браузере устроены WebPKI и связанные с ними контроли безопасности.

Читать далее

После сборки на Tauri затрещал голос и почернел стрим: разбираем три ошибки одного теста

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

После сборки на Tauri голос начал трещать, автокалибровка почти минуту вмешивалась в разговор, а демонстрация экрана через минуту становилась чёрной. Разбираем запись и логи, находим усиление до ×4 без лимитера, резкие разрывы 20-мс аудиопакетов и зависший видеотрек при живом соединении LiveKit — и показываем, как исправили каждый сбой в версии 0.0.26.

Разобраться в причинах

Я устал проверять сайты постранично и сделал свой сайт проверок HeadInspect

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

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

Как и писал ранее — сайты — это моё хобби. Иногда я прибегал к помощи сторонних веб‑дизайнеров, что‑то делал сам. Такое поверхностное занятие сайтами с годами привело к тому, что сайты устарели на десятилетие в плане дизайна и UX. В этом году в бизнесе артистов для корпоративов наступило затишье и появилось много свободного времени. Было принято решение обновить сайты! И именно во время этого обновления появилась проблема, из которой в итоге вырос HeadInspect.

Читать далее

Тестирование конкурентных запросов: практический гайд по проверке конфликтов в HTTP API при изменении одной сущности

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

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

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

Читать далее

IndexNow из Node.js: переобход без аккаунтов, и почему fetch обрывается там, где curl проходит

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

Чтобы сказать Яндексу «страница изменилась, приди посмотреть», аккаунт в Вебмастере не нужен. Есть протокол IndexNow: вы кладёте в корень сайта файл с ключом, шлёте POST со списком адресов — и поисковик приходит за часы вместо недель. Ни регистрации, ни OAuth, ни капчи. Реализуется тридцатью строками на Node.js без единой зависимости.

Ниже — рабочий скрипт целиком, шесть кодов ответа, которые он может получить, и три грабли, на которые я наступил, пока доводил его до состояния «запустил и забыл». Одна из них интереснее прочих: fetch в Node падает с fetch failed на том же запросе, который curl отправляет с первого раза.

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