Обновить
512K+

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

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

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

Детектор не приступов, а тряски. Приложение для часов Garmin

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

Приложение называлось SeizureDetector — «детектор приступа». Под таким именем Connect IQ Store публиковать его отказался. Слишком много ответственности. И правильно сделал. Так что теперь это ShakeDetector, детектор тряски. Никогда не думал, что столкнусь с этой темой.

Читать далее

Новости

Агентный RAG, бенчмарк TRuST и при чём здесь Нафаня?

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

Тестирование агентного RAG на многошаговых задачах бенчмарка TRuST: эволюция архитектуры, сравнение моделей и правила работы с промптами для сложных поисковых задач.

Читать далее

Одна статья, 90 языковых версий и Google: как пет‑проект превратился в платформу

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

Я начинал с учебной социальной сети на Vue/Nuxt и NestJS, а в итоге собрал платформу, где одна публикация превращается в отдельные редактируемые версии на разных языках. Рассказываю о выборе LLM, культурных адаптациях, расчёте стоимости переводов, изменениях интерфейса после запуска и первых результатах индексации в Google.

Читать далее

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

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

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

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

Process Forge — фреймворк для создания AI-процессов

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

На новогодних каникулах 2026 в одном из чатов Joomla-сообщества коллега по цеху поделился промптом для ИИ-агента и результатом этого промпта. За неделю до этого он впервые попробовал Gemini CLI. Я до этого ИИ пользовался только в веб версиях и в целом меня это устраивало. Увидев простыню текста, запрос в CLI и простыню ответа первое, что меня охватило: "Я НЕ ХОЧУ вот это всё изучать! Опять что-то новое, надоело...".

Потом были стадии проб и ошибок, попыток использовать готовые пакеты community skills с гитхаба с ролевым внушением "ты супер-пупер мега-бэкенд-Joomla разработчик с 40-летним опытом, сделай мне красиво". Где-то в середине этого полугодия я стал формализовать свои процессы (а это не только разработка). Формализация привела к моему пониманию некоторых базисов, которые общие для всех процессов. Об этом чуть ниже.

Теперь я хочу представить на суд уважаемой публике свои наработки по фреймворку для создания формализованных процессов работы для ИИ-агентов - Process Forge (GitHub).

Читать далее

Offline‑first PWA на примере фитнес‑трекера

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

Привет, меня зовут Сергей Цибульченко, я fullstack‑разработчик. На хабре уже есть несколько статей про PWA, но они не раскрывают всех подводных камней данной технологии, я с этим лично столкнулся когда делал пет‑проект по этим статьям.

Для начала, что такое PWA? Это веб‑страница которая выглядит и ведёт себя как приложение, но при этом имеет технические ограничения веб‑страницы.

Читать далее

Я написал мессенджер в одиночку. Поможете устроить ему краш‑тест?

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

Дисклеймер: Это статья-проверка на прочность. Проект работает на PHP + MySQL + Polling каждые 3 секунды. Если вы кликнули по ссылке, а сервер отдаёт 502 или упорно молчит — значит, поллинг взял своё под нагрузкой Хабра, а я прямо сейчас судорожно оптимизирую запросы и чиню базу!

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

Я в одиночку разработал web‑мессенджер Conlink Messenger. Его главная фича — полный отказ от привязки к номеру телефона: только email, пароль и никакого сбора персональных данных.

Я долго откладывал публикацию в ожидании «идеального кода», но понял, что этот момент никогда не наступит. Поэтому выкатываю MVP в том виде, какой он есть — с простой архитектурой, поллингом вместо WebSocket и кучей спорных решений.

Если после этой статьи окажется, что половину backend'а стоит переписать — значит, опубликовал не зря. Приглашаю устроить проекту честный краш‑тест!

Узнать, как устроен Conlink →

Хостинги для сайтов на Django и других приложений на Python

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

В этой статье мы рассмотрим, какие есть типы сервисов для запуска проектов на Python. А в частности, различных админ-панелей, сайтов и веб-приложений на Django. И на что обратить внимание при выборе сервиса для хостинга Django-приложений.

Начнем с того, что Django проекту не подойдет хостинг статических сайтов и нужен именно сервис, поддерживающий работу backend-кода. И такие сервисы бывают очень разные и со своими особенностями.

Читать далее

О чём писать в книге о браузере, если ChatGPT уже знает все Web API?

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

Здравствуйте, уважаемые читатели.

Рады предложить вам одну из самых долгожданных новинок на тему современной веб-разработки - книгу уважаемого Александра Гусева @flancer "Браузер как операционная система для разработки современных приложений". Ниже предлагаем обзорный материал, в котором автор рассказывает о концепции книги, роли больших языковых моделей в современной веб-разработке, об истинных возможностях браузера как рабочего инструмента и о системном понимании Интернета.

Читать далее

Частые ошибки в вёрстке, которые встречаются даже на крупных проектах

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

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

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

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

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

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

Читать далее

Как мы делали доступными 37 госсайтов: грабли, скринридеры и никакой горизонтальной прокрутки

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

Уже более 10 лет мы сопровождаем Единый официальный сайт органов власти Ханты-Мансийского автономного округа — Югры (admhmao.ru, далее – сайт), в структуру которого входят ещё 36 сайтов органов власти округа. За это время требования к доступности государственных сайтов несколько раз менялись.

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

Читать далее

Next.js, optimistic UI и autosave

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

Optimistic update меняет клиентское состояние до ответа сервера. Autosave отправляет новую версию после паузы во вводе. До завершения action в приложении одновременно существуют локальные данные, запрос в работе и последняя подтверждённая версия на сервере.

При optimistic create клиент может показать сущность с временным id, а сервер вернуть другой id. Ошибка после частичной записи оставляет сущность на сервере и запускает локальный rollback. При autosave ответы приходят не в порядке отправки. Старый ответ меняет статус уже после сохранения новой версии. updatedAt может перейти вперёд до завершения записи.

В учебном проекте Workbench optimistic create использует clientId для одинакового id на клиенте и сервере. Autosave-демо передаёт requestId в каждый запрос. Редактор хранит статусы saving, saved и error отдельно от текста заметки.

Читать далее

“Половина денег уходит на оплату LLM”: как мы автоматизировали чаты поддержки и продаж с помощью ИИ

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

Текст написан по мотивам интервью с Дмитрием Бусовым, CEO проекта LeaderChat.

Разбираю историю LeaderChat — сервиса, который начинался как обычный онлайн-чат с живыми операторами, а после появления современных LLM-моделей полностью изменил подход к работе. Спойлер: главным изменением стало даже не внедрение ИИ, а полный пересмотр того, как вообще должна работать автоматизация общения с клиентами.

Читать далее

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

Почему кнопка «Войти через VK» заняла три дня. Кейс

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

На первый взгляд, Social Login — одна из самых простых функций современного веб-приложения.

Добавить кнопку «Войти через VK». Добавить кнопку «Войти через Яндекс». OAuth 2.0 давно стандартизирован, OpenID Connect тоже. Документации и библиотек полно. Да и AI сегодня умеет писать интеграции быстрее человека. Поэтому, когда я решил добавить VK ID и Яндекс ID в Авторизу, честно рассчитывал уложиться в один рабочий день:

Свою систему знаю. OIDC знаю. Подобные интеграции раньше проектировал. Под рукой ChatGPT, Claude и AI-агенты.

Что вообще может пойти не так?

Спойлер: получилось почти три дня. И самой сложной частью оказался не OAuth.

День первый. Самоуверенность

Читать далее

Как я сделал общие доски в Telegram, которые живут прямо в чате

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

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

До общих досок бот уже умел личные заметки и задачи. Пользователь заходит, пишет заметку, ставит задачу с чекбоксом — всё как в обычном блокноте, только внутри Telegram.

Читать далее

Никто не показывает, как стандарты ИБ связаны друг с другом поэтому пришлось собрать самому

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

OWASP, лаборатории, CVE, инструменты и патчи обычно живут в разных местах. Каждый раз собирать этот маршрут заново утомительно, поэтому и сделал RØØT — автономный полигон, который связывает всё в один процесс:

понять → проверить → доказать → исправить → перепроверить

Читать далее

<usermedia> — новый HTML элемент

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

Вместо запросов, которые вызываются из JavaScript, <usermedia> предлагает декларативный подход, при котором действие инициирует сам пользователь. Это позволяет сократить объём шаблонного кода, повысить безопасность и упростить повторный запрос доступа для пользователей, которые ранее его запретили. Тем самым элемент решает давнюю проблему, связанную с восстановлением отклонённых разрешений.

Читать далее

Приложение открывается только с VPN. Разбирался почему

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

Пользователи из регионов начали писать в поддержку одно и то же: приложение не открывается. Симптомы у всех разные. У кого-то вечная загрузка, у кого-то белый экран, у кого-то заходит, только если включить VPN.

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

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

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

Читать далее

Next.js, localStorage в App Router без hydration-ошибок

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

localStorage существует только в браузере. App Router может подготовить HTML на сервере и для Client Component. Код с директивой use client получает состояние, эффекты и обработчики событий, но первый рендер всё ещё может пройти без window и localStorage. И возникают два сбоя. Прямое чтение localStorage падает на сервере. Проверка через typeof window возвращает разные данные на сервере и в браузере. Сервер строит пустое избранное, браузер видит сохранённые id, React получает разные деревья при hydration.

Читать далее

Реальная и мнимая многопоточность в JS

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

JS — однопоточный язык, но асинхронный код нередко описывают как «выполняющийся параллельно» — и это не совсем так. В статье разберёмся, что на самом деле происходит, когда вы вызываете fetch или setTimeout, и почему настоящая многопоточность в браузере — это отдельная история про Web Workers, а не про промисы.

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