Обновить
256K+

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

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

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

Логирование с Serilog: как повысить отказоустойчивость и скорость

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

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

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

Читать далее

Как мы запустили кредитное приложение за 6 месяцев. Опыт

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

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

Читать далее

JavaScript Distributed Assets — это просто

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

Идея вот в чем: берем стандартные JavaScript модули (ESM) и делаем их прямыми эндпоинтами для генерации любых текстовых веб-ассетов, таких как HTML-файлы, CSS, SVG или даже JSON или Markdown, используя простое соглашение о именовании исходных файлов и дефолтный экспорт результата в виде строки (JavaScript Template Literal). Проще некуда и чем-то похоже на PHP, верно? Но, что это нам дает?

Давайте разберемся, почему JSDA (JavaScript Distributed Assets) - это то, что может сделать веб-разработку "грейт эгейн", после тысячи поворотов "не туда".

Читать далее

.NET C# и RabbitMQ Streams: превратить кролика в Kafka легко, нужно всего лишь…

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

Работа с очередями сообщений — важная часть современных систем обработки данных. В нашей команде мы используем брокер сообщений RabbitMQ, но нам пришлось столкнуться с проблемами при обработке большого объема данных. В поисках решений я начал изучать различные способы оптимизации, и таким образом познакомился с RabbitMQ Streams – плагином, добавляющим log-based потоки, работающие по аналогии с Kafka

Я потратил некоторые время, вникая в принципы работы RabbitMQ Streams с .NET и хочу представить вам краткий обзор, который призван упростить погружение в эту систему

Читать далее

Что выбрать новичку для домашнего веб-сервера: Nginx, Caddy или Apache

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

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

Читать далее

Внешний мониторинг доступности IT-приложений

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

Всем привет! Иногда внутренний мониторинг не даёт полной картины, что все работает как надо. И полезно сделать внешний пинг и посмотреть, действительно ли нужный проект доступен.

Сегодня мы расскажем, как решали эту задачу для себя, и выложим код в Open Source, который вы сможете применить для простого мониторинга своих проектов. И да, мы знаем про существование специализированных сервисов для решения этой задачи, но всегда веселее написать свой скрипт.

Читать далее

OWASP Top Ten: как оценивали веб-угрозы 20 лет назад и сейчас

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

Первый список OWASP Top Ten был выпущен в 2004 году. И с того момента появилось 7 обновлений, последнее из которых представлено в ноябре 2025 (пока в статусе Release Candidate). Эксперты WMX проанализировали все выпуски, чтобы разобраться, как с каждым годом и даже десятилетием менялась оценка угроз.

Путь осы

Методы массивов. Часть 1

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

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

Привет, Хабр! Меня зовут Александр Дудукало, я автор базового курса по JavaScript. Сегодня мы поговорим о методах массивов. Если коротко, вы узнаете, как легко и элегантно работать со списками данных, не используя громоздкие циклы. Детали внутри.

Читать далее

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

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

Привет, Хабр! На связи Никита Ли, я Frontend-разработчик в Рунити. Вокруг сборщиков последние годы кипят страсти: большинство боготворит Vite, кто-то экспериментирует с esbuild, а энтузиасты активно продвигают инструменты на базе Rust — прежде всего Rspack и SWC. На фоне этого Webpack нередко называют пережитком, который якобы тормозит развитие команд.

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

Читать далее

Postgresus 2.0: новая версия open source инструмента для резервного копирования PostgreSQL

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

С момента первого релиза Postgresus прошло 6 месяцев. За это время проект получил 246 коммитов, новые функции, а также ~2.7 звёзд на GitHub и ~40к загрузок из Docker Hub. Сообщество проекта тоже подросло, сейчас в проекте числится 11 контрибьюторов, а группа в Telegram — 85 человек.

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

Читать далее

Что такое LLMs.txt и LLMs-full.txt и как заставить AI знать документацию наизусть

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

Мы привыкли к классическому набору любого сайта: robots.txt экономит ресурсы сервера, запрещая поисковикам сканировать мусорные страницы, а sitemap.xml, наоборот, скармливает поисковикам каждую доступную страницу для полной индексации.

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

Понадобился новый способ доставки актуального, очищенного контекста в сжатом виде специально для AI-агентов и языковых моделей.

В сентябре 2024 года Джереми Ховард (создатель fast.ai) предложил решение в виде стандарта /llms.txt. Давайте разберемся, как он работает, чем отличается от llms-full.txt, какую пользу из этого могут извлечь разработчики и как быстро добавить его поддержку в свой проект.

Читать далее

Книга: «Head First. Изучаем программирование на JavaScript. 2-е изд.»

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

Привет, Хаброжители!

Новое, полностью переработанное издание легендарной книги проведет вас по всему пути изучения JavaScript, начиная с фундаментальных понятий и заканчивая самыми актуальными современными возможностями. Вы погрузитесь в тонкости типов JavaScript и его функций, научитесь разбираться в классах, объектах и замыканиях, приобретете практический опыт работы с DOM (Document Object Model) в браузере и откроете для себя неожиданные возможности JavaScript. Вас ждет не просто чтение — вы будете играть, решать головоломки, размышлять над загадками и взаимодействовать с JS так, как никогда не пробовали ранее. А еще вы будете писать реальный код (и много!) и сразу приступите к построению собственных приложений.

Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым «горячим» языком програм- мирования — JavaScript! Особенностью этого издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O'Reilly в ряду множества скучных книг, посвященных программированию.

Читать далее

Код пишет нейросеть. Что остается разработчику?

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

Все говорят, что скоро Claude и GPT заменят программистов. Я руковожу студией разработки и вижу другую картину: AI не заменяет инженеров, но беспощадно наказывает за лень и отсутствие архитектурного мышления.

В этой статье я на живом примере покажу разницу между популярным «вайб-кодингом», который порождает неработающих монстров, и подходом Spec-Driven Development. Продемонстрирую, как превратить LLM из генератора случайного кода в костюм Железного человека для инженера, поделюсь ссылкой на репозиторий с реальным кодом и спецификацией, написанными ИИ, и расскажу, какие 5 навыков теперь нужны разработчику, чтобы оставаться в профессии.

Читать далее

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

Как сделать ужасный интерфейс для пользователя. Моя коллекция простых лайфхаков

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

Привет, Хабр!

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

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

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

Давайте посмотрим, что я вам подготовил.

Читать далее

React vs Vue: Что выбрать в 2026?

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

Привет, Хабр! Меня зовут Карлен, я Lead Fullstack разработчик в ITFB Group. В этой статье хочу поделиться своим мнением о том, как выбрать библиотеку или фреймворк для вашего следующего проекта. 

Этот выбор напоминает мне подбор гардероба для важного мероприятия: ошибешься — и проект ждут дополнительные проблемы, угадаешь — и ты на вершине успеха! Чтобы не попасть в просак с выбором, давайте детально разберем ключевые различия между React и Vue и определим, на что стоит обратить внимание.

Читать далее

Кому на Рунете жить хорошо: ТОП/АНТИ-ТОП уязвимостей ноября

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

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

Так и эксперты СайберОК весь ноябрь бродили по цифровым тропинкам и всё пытались понять: кому в Рунете жить хорошо, а кому достаётся участь тревожная. Прошлись по инстансам, сверили телеметрию, посмотрели, где есть PoC’ы, а где только шум, и составили ТОП / АНТИТОП уязвимостей ноября.

Читать далее

CLI-инструменты в Битрикс: используем консоль вместо ручек

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

Всем привет! CLI-инструменты являются неотъемлемой частью любого PHP-фреймворка, они удобны для выполнения службных операций. В данной статье поговорим о том, какой инструментарий предоставляет нам Битрикс для разработки и обслуживания сайтов.

Читать далее

Как работают современные браузеры. Часть 1

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

Веб-разработчики нередко воспринимают браузер как «черный ящик», который каким-то чудом превращает HTML, CSS и JS в интерактивные веб-приложения. На самом деле современный браузер — будь то Chrome (на базе Chromium), Firefox (Gecko) или Safari (WebKit) — представляет собой чрезвычайно сложное программное решение. Он управляет сетевыми запросами, разбирает (парсит) и выполняет код, рендерит графику с ускорением на графическом процессоре (GPU) и изолирует контент в отдельных процессах для обеспечения безопасности.

В этой серии статей мы подробно рассмотрим, как устроены современные браузеры, сделав акцент на архитектуре и внутреннем устройстве Chromium, но также отметим ключевые отличия в других браузерах. Мы рассмотрим весь цикл: от сетевого стека и конвейера парсинга до рендеринга с помощью Blink, выполнения JS с помощью движка V8, загрузки модулей, многопроцессной архитектуры, песочниц безопасности и инструментов разработчика. Главная цель — дать понятное и доступное объяснение того, что происходит в браузере "под капотом".

Читать далее

Статичный сайт на webpack5 с svg sprite

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

Этот стартовый сборка для разработки статичного сайта на Webpack5. Максимально упростил разработку: можно подключать встариваемы модули шаблонов для страниц (header/footer), использовать SASS с удобными миксинами, автоматически собирать SVG-спрайты для иконок. Для продакшна - минификация CSS/JS, удаление console.log и разделение кода на чанки для кэширования.

Ключевые части сборки: html-webpack-plugin генерирует HTML из src/html/views, raw-loader подтягивает include-фрагменты.

SCSS миксины для удобных медиа запросов, краткой их записи +r($md).

Автоматическая генерация SVG-sprite, svg-sprite-loader собирает все src/icons/*.svg в inline-спрайт — иконки затем вставляются в шаблоны через .

Читать далее

Реактивная Архитектура: Пишем надежный Optimistic UI на чистом RxJS (Pattern Compensating Transaction)

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

Пользователи ненавидят спиннеры. Они хотят видеть лайк сразу после клика. Optimistic UI решает эту проблему, но создает новую: что делать, если сервер вернет ошибку?

В императивном коде (Promise/async-await) откат состояния превращается в ад из try/catch и ручных мутаций переменных, порождая Race Conditions.

В этой статье я покажу, как реализовать надежный паттерн Compensating Transaction на чистом RxJS. Мы построим архитектуру, где состояние это поток, который невозможно "сломать" частыми кликами или сетевыми сбоями. Никаких if/else, только чистые потоки.

Построить реактивный UI