Обновить
256K+

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

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

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

Flutter на клиенте, Fletch на сервере: бэкенд на знакомом Dart

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

Вы пишете приложение на Flutter. Модели уже описаны, бизнес-правила продуманы. Осталась небольшая деталь: сервер, который будет принимать запросы и работать с данными.

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

Dart позволяет написать обе стороны приложения. А Fletch предлагает довольно понятный способ сделать серверную: знакомые по Express маршруты, middleware, обработчики запросов и немного инфраструктуры, которую не хочется каждый раз собирать вручную.

Разберёмся, как это выглядит в коде, откуда берётся скорость и какие мелочи стоит заметить до первого деплоя.

Читать далее

Новости

Passkey Editor: расширение для Burp Suite для пентеста WebAuthn

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

Пентест WebAuthn быстро упирается в трафик, который Burp показывает почти как непрозрачный набор байтов: нужные поля скрыты за CBOR и несколькими слоями кодирования. Passkey Editor снимает эти обёртки, позволяет менять данные прямо в запросе и собирать их обратно так, чтобы сервер продолжал обрабатывать процедуру.

В статье речь пойдет о том, как устроен этот инструмент, какие проверки он автоматизирует и где на практике остаётся поверхность для атак на passkey-аутентификацию.

Разобрать инструмент

Enterprise-защита задешево: что облако сделало с WAF

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

Привет, Хабр! На связи Егор Сапун, руководитель направления сертификации инфраструктуры Рег.облака.

Кибератаки касаются не только крупного бизнеса. За последний год с киберинцидентами столкнулись 82% российских компаний малого и среднего бизнеса. По данным Positive Technologies, в 2025 году 75% успешных атак на веб-приложения российских организаций приводили к нарушению их деятельности.

От части атак на сайты, веб-приложения и API защищает WAF. Но для многих компаний это все еще enterprise-решение: классический WAF необходимо развернуть в своей или арендованной инфраструктуре, встроить в путь трафика. Для этого нужны вычислительные ресурсы а также компетенции по настройке и сопровождению. У небольших компаний таких ресурсов может и не быть.

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

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

Читать далее

Внешний Fuzzy‑поиск для 1С: транслит, синонимы и любые реквизиты

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

Всем привет!
Меня зовут Шатохин Дмитрий, я работаю в компании SM Lab старшим программистом 1С.

Выносим полнотекстовый поиск за пределы кластера 1С. Нечеткое соответствие, учет опечаток и регистра без нагрузки на сервер и СУБД основной базы.

Sku-search: кроссплатформенный сервис полнотекстового поиска для 1С — находит все по наименованию, артикулу, штрихкоду и любым реквизитам
Когда стандартный поиск 1С сдается, а Elasticsearch кажется пушкой по воробьям.

Знакомая боль?

Оператор в вашей 1С создает новую номенклатуру и вбивает «Болт М16 оцинк.». Система молчит. Он сохраняет — и в базе появляется дубль, потому что «Болт М16х60 оцинкованный ГОСТ 7798-70» уже существовал три года.

Или другой случай. Приходит прайс поставщика. В нем артикул ART-000002, в вашей 1С — тот же, но записан как Art-000002. На первый взгляд безобидно: строки в 1С по умолчанию сравниваются без учета регистра, и «в лоб» эти значения не отличить друг от друга. А для акцизных марок, марок Честного ЗНАКА, серийных номеров и артикулов, где регистр различает модификации, это ловушка: 1С выдает кучу ложных совпадений, а поиск «с учетом регистра» из стандартного запроса не настроить.

Читать далее

Ссылка — не конец. Почему найденный URL ещё не доказывает, что материал из RSS опубликован

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

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

Что сломалось?

Сканер 152-ФЗ выписал нарушения Госуслугам, РЖД и Т‑Банку. Разбираем как так вышло

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

Ошибка линтера стоит пяти минут. Ошибка сканера, который проверяет сайты на соответствие 152-ФЗ, выглядит иначе: «ваш сайт нарушает закон». Если сайт при этом в порядке, а отчёт уже ушёл клиенту, расплачивается чужая репутация.

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

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

Все восемь ловушек

Capacitor: от веба к мобильным приложениям. Часть 5. Микрофронтенды в Capacitor

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

Ого, да это же следующая статья цикла про Capacitor. В ней мы рассмотрим нюансы реализации микрофронтендов в Capacitor приложении,а также разбирем схему, в которой команды могут выпускать MFE независимо и не ломать нативную часть приложения.

Читать далее

Трекер отказа от стиков и вейпа: вайбкодинг, веб‑приложение и ноль персональных данных

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

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

Какая разница, кого менеджерить

EventBus и CommandBus во frontend: когда прямых вызовов становится слишком много

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

Практический разбор двух простых шин: как разделить запуск действий и реакцию на изменения в реальном frontend-приложении.

Читать далее

Готовый рецепт интерактивного обучающего курса в одном файле

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

Внутреннее обучение без бюджета, без серверов и без "запишитесь на вебинар". Один html-файл на ~118 Кб, который открывается двойным кликом, работает без интернета, помнит прогресс и выдает сертификат. Внутри: 7 модулей, 15 интерактивных схем, 21 вопрос, полезный чек-лист, игровые баллы, глоссарий и сертификат на выходе. Без библиотек, сборщиков и бэкенда. Открывается двойным кликом, прогресс хранится в браузере. Разберу архитектуру и дам промпт, чтобы собрать такой же под свою тему. Готовый рецепт, который сэкономит время, если вдруг возникла такая задача.

Читать далее

Экспорт коллекции API‑запросов в файлы для git — и как мы чуть не отправили токены в открытом виде

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

Как работать с коллекциями в Http API‑клиенте...

В клиенте уже год как работал экспорт коллекции как патча — одного JSON‑файла с операциями вида upsertRequest / removeRequest / setCollectionMeta. Достаточно, чтобы переслать коллеге точечное изменение: поправил заголовок в одном запросе — экспортировал — коллега применил патч у себя. Рабочая штука для передачи «из рук в руки».

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

Читать далее

«Интернета нет — а сайт работает»: как мы учили PWA замечать авиарежим на iPhone

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

Мы делаем пет-проект «Чатограмма»: он считает статистику переписки прямо в браузере, файл с перепиской на сервер не уходит. Такое обещание проще всего проверить без чтения политик: включить авиарежим и посмотреть, посчитается ли. Для этого странице нужно ответить на, казалось бы, тривиальный вопрос: есть ли сейчас сеть? На iPhone ответ оказался неожиданным.

Читать далее

Штрафы от Роскомнадзора и ФАС за нарушения, допускаемые на сайте

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

Большинство экспертов, наставников, онлайн‑школ при запуске своего курса/обучения думают о том, как получить ту конверсию заявок и учеников, которые они поставили себе как цель. Думают также о своем продукте и его качестве, чтобы ученики получили и были довольны своими результатами. И совсем забывают обезопасить свой запуск с юридической стороны. Как итог: несут колоссальные убытки.

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

Читать далее

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

HTML и CSS помогут вам сделать ужасный интерфейс для пользователя

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

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

Я часто вам рассказываю, как HTML и CSS помогают улучшить пользовательский опыт в наших веб-интерфейсах. Мне это наскучило. Сегодня я хочу поговорить с вами о практиках, которые заставляют пользователей очень сильно ругать разработчиков.

Мы рассмотрим примеры, когда только использование HTML и CSS может привести к замешательству людей. Многие же думают, что эти технологии безопасны и не могут принести вреда. Вот и проверим это.

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

Читать далее

Возвращаем трассировку логов Quartz-задач после перехода на Spring Boot 3+

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

Привет! Меня зовут Александр Каненков, я backend-разработчик в компании Домклик.

После перевода сервиса со второго Spring Boot на третий (а у кого-то уже и на четвёртый) мы с командой заметили следующую картину: HTTP-запрос журналируется с traceId, цепочка собирается в трейсе, но стоит сработать задаче Quartz — в журналах worker-потока гордо красуется [NoTrace, NoSpan]. Задача исполняется «в никуда» — без единого идентификатора, вне какого-либо трейса, и связать её с запросом, который её запланировал, невозможно.

Давайте разберём по шагам, почему это случилось и как починить так, чтобы работало и с RAM (in-memory), и с JDBC job store.

Читать далее

Согласие на обработку ПДн требуется гораздо реже, чем думает бизнес

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

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

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

Главное: согласие - лишь одно из оснований обработки, причём самое хрупкое, потому что человек может отозвать его в любой момент. Если ваш процесс держится только на согласии, он держится на честном слове клиента.

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

Читать далее

Сделал сыну тренажёр слепой печати, потому что существующие показались ему скучными

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

Этой осенью сын пошёл в пятый класс, и я заметил странную вещь: со смартфоном он на «ты», а за обычной клавиатурой теряется. Мы попробовали несколько тренажёров слепой печати, но ему быстро стало скучно — и я решил сделать свой.

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

Читать далее

Экономика клиентской разработки с AI

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

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

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

Читать далее

10 браузерных API, заменяющих библиотеки, которые я раньше все время устанавливал

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

10 браузерных API, заменяющих пакеты NPM и плагины jQuery: dialog, popover, переходы отображения (view transitions), structuredClone, groupBy и Temporal с заметками о поддержке.

Читать далее

Книга из переписки без сервера: canvas, jsPDF и брошюра для печати прямо в браузере

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

Мы делаем пет‑проект «Чатограмма», который считает статистику переписки: кто пишет первым, кто быстрее отвечает, в какие часы вы на связи. С первого дня у него одно жёсткое правило: файл с перепиской не уходит на сервер. Всё считается в браузере пользователя, а сервер не видит ни одного сообщения — не потому, что обещает не смотреть, а потому, что сообщения до него физически не доходят.

Потом понадобилась подарочная книга: PDF формата A5, где самые яркие моменты переписки собраны по главам — с чего всё началось, первое «мы с тобой», лучшие моменты каждого года, общий словарь, квиз «Кто это написал?». Плюс вариант для печати дома брошюрой: A4, сложить пополам, скрепить степлером.

И здесь правило «ничего на сервер» перестаёт быть бесплатным. Книгу обычно верстают на сервере: headless Chrome, LaTeX, что угодно с нормальными шрифтами и без ограничений по памяти. У нас всё это должно работать на телефоне, в том числе на iPhone, в том числе во встроенном браузере мессенджера. Ниже — как это устроено и на какие грабли мы наступили.

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