Обновить
358.61

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

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

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

Как я пришёл в open source в 2025-м (с утилитой для бекапа PostgreSQL), чуть не потеряв проект на ~$1500\мес в 2023-м

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

Однажды я столкнулся с проблемой, когда почти потерял коммерчески успешный пет-проект из-за устаревших резервных копий БД (ещё до того, как он стал коммерчески неуспешным). При этом, даже после частичного восстановления, все-таки потерял ~30% прибыли от проекта, много нервов и времени.

Это подтолкнуло меня на разработку своего открытого инструмента для бекапа PostgreSQL. С разными хранилищами, уведомлениями при сбоях и health check'ом. Собственно, о том, как я потерял деньги и затем разработал проект — хочу рассказать в статье ниже.

Читать далее

От React всё так же веет безумием, но все об этом молчат

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

Недавно работал над хобби-проектом, который описал в другой своей статье. В процессе его реализации у меня возникло желание чиркануть пару абзацев о том, почему React — отстой, но в итоге я не смог удержаться и решил высказаться по полной…

Так что вот она полноценная статья, ещё больше той, из которой она родилась. Здесь я подробно опишу все проблемы React и поясню, почему это может не быть виной разработчиков.

Читать далее

Laravel: электронная подпись на сервере с PDF визуализацией

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

Сегодня я хочу поделиться с вами решением, которое позволит вам реализовать подписание PDF-документов электронной подписью и их визуализацию прямо на вашем Laravel сервере.

Читать далее

Разработка административных панелей без боли: наш опыт с .cursor/rules

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

Мы никогда не скрывали, что используем ИИ в своей работе. Более того, считаем, что такие инструменты, как Cursor – это настоящее спасение для разработчиков. Cursor не только ускоряет рутину, но и помогает поддерживать крутое качество кода (если правильно им пользоваться, конечно же), а главное – снимает с команды кучу головной боли, связанной с повторяющимися задачами. 

В то же время у нас есть и собственная гордость – open source фреймворк Admiral, которую мы развиваем для быстрой и удобной разработки административных панелей. В нем уже реализовано множество готовых решений: бери нужные, кастомизируй и запускай свой проект без лишних усилий.

Познакомиться с ней можно тут

Недавно нам пришла идея объединить два продукта. Так мы интегрировали систему правил .cursor/rules прямо в Admiral, чтобы создавать админки можно еще быстрее. Например, теперь не нужно каждый раз перепроверять, правильно ли оформлены CRUD-страницы, корректно ли используются компоненты или соблюдаются стандарты при написании хуков. Все эти моменты изначально заданы в правилах, и Cursor подскажет, если что-то идет не так. Это экономит время, снижает количество ошибок и позволяет сосредоточиться на действительно важных задачах. 

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

Читать далее

Обходим CSP nonce через дисковый кеш браузера

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

Эта статья описывает изощренную технику обхода Content Security Policy (CSP) на основе nonce-значений через эксплуатацию механизмов кеширования браузера. Автор демонстрирует, как комбинация CSS-инъекций, CSRF-атак и особенностей работы bfcache и дискового кеша может привести к выполнению произвольного JavaScript-кода даже при наличии строгой CSP.

Читать далее

Локальная разработка с Kubernetes. Немного танцев с бубном

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

На нескольких проектах я сталкивался с ситуацией, когда есть Kubernetes с разными окружениями типа dev, stage, prod и т. д.

Код сервисов в эти самые окружения попадает в процессе CI/CD: то есть мы мержим какую‑то ветку с разрабатываемой фичей или исправлением бага в ветку, которая «привязана» к окружению и дальше наш код деплоится в кластер. Думаю, для многих — это уже стандартная история.

Давайте представим, что нужно сделать задачу, относящуюся к какому‑нибудь микросервису, эта задача подразумевает запрос по сети к другому микросервису, а тот, в свою очередь, посылает запрос к еще другим микросервисам. Как быть, когда мы хотим, чтобы нам были доступны данные из других микросервисов, чтобы протестировать то, что мы сделали не в тестах с моками, а в условиях, похожих на «боевые». Тут самым очевидным, как мне кажется, является разворачивание локально микросервиса, код которого мы «ковыряем» и проброс портов до целевого микросервиса в dev кластере (или в другом кластере, предназначенным для тестирования), например:

Читать далее

Интерактивная карта Республики Коми с отображением социально-экономических показателей

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

Делюсь опытом как я сделал интерактивную карту Республики Коми: от QGIS и D3.js до графиков и API Wikidata. Карта визуализирует социально‑экономические показатели районов и населённых пунктов, поддерживает масштабирование, позволяет переключать слои, выбирать тёмную и светлую темы, а также получать справочную информацию об объектах.

Читать далее

Простой веб-сайт

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

Мой веб-сайт — это путешествие по волнам памяти. Я не хочу сказать, что нужно прекратить современную веб-разработку. На моём веб-сайте используются технологии, которые в обсуждаемые на нём времена были ещё недоступны. Он работает на мобильных (протестировано в Firefox для Android), отсутствует только фоновое изображение.

Свой первый веб-сайт я создал где-то в начале 2000-х, и как и большинство веб-сайтов того времени, он был очень простым. Это неудивительно, учитывая то, что большинство (включая и меня) писали такие веб-сайты в Блокноте, что накладывало ограничения на сложность. Можно было выбрать или Блокнот, или какой-то из WYSIWYG-редакторов, которые привязывали к себе тем, что сгенерированный ими HTML было бы совершенно невозможно поддерживать без них, а если вносить изменения вручную, то это вполне могло поломать всё в редакторе.

Тогда не было iPhone, почти не было SEO, а JavaScript, как и CSS, использовать было совсем необязательно.

Цветопередача первых ЖК-экранов была плохой, поэтому лучше было выбирать цветовую схему с высокой контрастностью.

Оптимальным разрешением было 1024×768 (или 1280×1024, если вы могли себе это позволить), однако стоило и обеспечить работоспособность размеров окна и панелей в 800×600. Вам же не нужно, чтобы контент выходил за левый или правый край экрана?

Читать далее

Российский новый университет подключился к «РосНавыку»

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

9 июля для ректората Российского нового университета (РосНОУ) при поддержке Университетского консорциума исследователей больших данных прошёл семинар сервиса «РосНавык». Этот мониторинговый сервис представила Дарья Олеговна Дунаева, менеджер проекта, ведущий аналитик научно-исследовательской лаборатории прикладного анализа больших данных Томского государственного университета.

Читать далее

Как я собеседовался в Ozon, Т-Банк, Mindbox и другие крупные компании

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

Всем привет. Я сеньор и тимлид на .NET (C#). До недавнего времени работал в Росатоме, пока там внезапно не сократили целую дирекцию по цифровизации. Так что пришлось срочно выходить на рынок, причём, впервые в моей жизни (до этого работа находила меня сама). По результатам нескольких циклов собеседований получился неплохой дневник, который я здесь привожу.

История длинная, но интересная

Массовая блокировка доменов .site, .online и .store! Что происходит и как себя защитить?

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

В последнее время владельцы доменов в популярных зонах site, .online и .store всё чаще сталкиваются с внезапными блокировками своих ресурсов. Администратор этих доменных зон — международная компания Radix, специализирующаяся на управлении новыми доменами верхнего уровня (TLD) .tech, .space, website, site, online, store и другие — объясняет происходящее усиленным мониторингом и выявлением так называемых “подозрительных шаблонов регистрации” (Suspicious Pattern). При этом владельцы сайтов редко получают объяснения причин блокировки. Интернет-магазины, блоги и корпоративные сайты массово теряют доступ к доменам - неожиданно и без предупреждения.

Разберёмся, что происходит и как можно защитить свои домены от блокировки.

Читать далее

Как использовать topic exchange в RabbitMQ для роутинга по шаблонам

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

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

Сегодня разберём один из самых гибких инструментов в RabbitMQ — topic exchange. Именно он позволяет не просто отправить сообщение «куда‑то», а превратить очередь в маршрутизатор уровня BGP, но только внутри твоей системы.

Читать далее

Lokilizer — бесплатный инструмент для перевода приложений с двух языков на любые другие

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

Наш кейс: в приложении есть русский (наш нативный) и английский языки. Надо быстро и просто добавлять другие (по запросам от клиентов). В файлах с переводами был хаос: дублирование строк, конкатенация вместо плейсхолдеров, разный порядок строк в файлах переводов для ru/en, висячие пробелы и многое другое.

Я решил написать вспомогательный инструмент, который помог решить все эти проблемы. Сейчас мы добавляем новый язык буквально за 40 минут и 2$. Все получилось настолько хорошо, что решил причесать и выложить в open-source

Главная фишка: перевод на новые языки делается сразу с 2х языков (в нашем случае с ru и en) что на практике делает его супер-качественным

Читать далее

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

Как я навайбкодил ИИ-переводчик для браузера, потому что остальные — унылый мусор

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

Я починил плохой перевод силами ИИ, написав расширение при помощи ИИ. И я удивлён, что до сих пор такого не сделали.

Читать далее

Гайд: как не дать сайту упасть в сезон

Время на прочтение5 мин
Охват и читатели348

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

Читать далее

Почему разработчики не делают «по уму», даже когда знают как

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

Почему даже сильные разработчики делают на авось?

Команда вроде опытная, но в проде — баги, архитектура — костыль на костыле, а фичи заливаются «на нервах»?

Читать далее

Безопасная разработка как игра в Dungeons & Dragons

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

Привет! 👋 Меня зовут Алина. Я маркетолог и давно работаю в ИТ, но с безопасной разработкой познакомилась только когда пришла в продуктовую студию по кибербезопасности Axel PRO. И знаете, эта область заинтересовала меня в процессе работы. А еще у меня есть интересное хобби — я люблю играть в Dungeons&Dragons, иначе говоря — ДНД 🎭. И вот что я заметила: процесс разработки ПО очень похож на эту игру. Сейчас расскажу, почему.

Представьте, что разработка ПО — это ваша игра в Dungeons&Dragons. Вы собрали отряд: разработчиков, тестировщиков, продакт‑менеджеров, выбрали для них роли и отправились в приключение — создавать крутой продукт 🚀.

Но вот загвоздка: пока вы исследуете подземелья (пишете код) 🏰, на каждом шагу вас поджидает разная нечисть — уязвимости‑ловушки 🕳️, баги‑драконы 🐉 и орки‑ошибки конфигурации 🪓. Если вы не взяли с собой защитные свитки с политиками и шаблонами безопасности 📜, зелья исправления уязвимостей 🧪 и доспехи из безопасных практик 🛡️ — ваша команда рискует быстро проиграть.

Собираем команду

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

⚔️ Бэкенд‑разработчик — это воин, который создает и защищает код, отражая атаки.

🧙‍♂️ Тестировщик — маг, исследующий систему с помощью «заклинаний» тестов, чтобы найти слабые места.

⛩️ Администратор инфраструктуры — жрец, поддерживающий стабильность и безопасность серверов и окружения

🎶 HR‑менеджеры и менеджеры проекта — подобно бардам, поддерживают коммуникацию и помогают команде достигать общих целей.

Читать далее

Тестирование упрощенного Личного кабинета банка (Postman, dBeaver, MySQL, DevTools)

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

Всем привет! Сегодня хочу рассказать, как можно протестировать Личный кабинет банка с помощью Postman, на примере простого Веб-приложения. Будет проверено: создание пользователя, авторизация, отображение продуктов клиента в Личном кабинете, подача заявки на потребительский кредит и отображение результатов ее рассмотрения в ЛК. Приступим

Было разработано небольшое Веб-приложение на Node.js. После запуска приложения и открытия его на локальной машине по адресу - http://localhost:5000/, на странице отображается форма входа в Личный кабинет.

Читать далее

Прощай, reCAPTCHA! Как я защитил формы входа с помощью бесплатной и невидимой CAPTCHA от Cloudflare

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

Привет, Хабр! На связи разработчик Peakline — аналитической платформы для Strava. Сегодня я хочу поделиться опытом внедрения Cloudflare Turnstile в веб-приложение на FastAPI.

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

Читать далее

Как мы подняли современный портал документации из россыпи .md файлов: пошаговое руководство по MkDocs + Material

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

От хаоса в Markdown-файлах до стильного, быстрого сайта с поиском, темами и мультиязычностью за один вечер.
В жизни почти каждого IT-проекта наступает момент, когда количество файлов README.md, GUIDE.md, docs.txt и заметок в Confluence достигает критической массы. Документация становится фрагментированной, поиск нужной информации превращается в квест, а новые члены команды тратят часы на то, чтобы просто понять, "что где лежит".

Читать далее

Вклад авторов