
Сегодня я хочу поделиться с вами решением, которое позволит вам реализовать подписание PDF-документов электронной подписью и их визуализацию прямо на вашем Laravel сервере.
Делаем веб лучше
Сегодня я хочу поделиться с вами решением, которое позволит вам реализовать подписание PDF-документов электронной подписью и их визуализацию прямо на вашем Laravel сервере.
Мы никогда не скрывали, что используем ИИ в своей работе. Более того, считаем, что такие инструменты, как Cursor – это настоящее спасение для разработчиков. Cursor не только ускоряет рутину, но и помогает поддерживать крутое качество кода (если правильно им пользоваться, конечно же), а главное – снимает с команды кучу головной боли, связанной с повторяющимися задачами.
В то же время у нас есть и собственная гордость – open source фреймворк Admiral, которую мы развиваем для быстрой и удобной разработки административных панелей. В нем уже реализовано множество готовых решений: бери нужные, кастомизируй и запускай свой проект без лишних усилий.
Недавно нам пришла идея объединить два продукта. Так мы интегрировали систему правил .cursor/rules прямо в Admiral, чтобы создавать админки можно еще быстрее. Например, теперь не нужно каждый раз перепроверять, правильно ли оформлены CRUD-страницы, корректно ли используются компоненты или соблюдаются стандарты при написании хуков. Все эти моменты изначально заданы в правилах, и Cursor подскажет, если что-то идет не так. Это экономит время, снижает количество ошибок и позволяет сосредоточиться на действительно важных задачах.
В результате, мы не просто оптимизировали и ускорили процесс, а получили готовые инструкции для ИИ при работе с Admiral, которые помогают поддерживать высокое качество кода на всех наших проектах благодаря Cursor. Расскажем, как теперь работает автоматизация и какие преимущества от нашего фреймворка можете получить и вы.
Эта статья описывает изощренную технику обхода Content Security Policy (CSP) на основе nonce-значений через эксплуатацию механизмов кеширования браузера. Автор демонстрирует, как комбинация CSS-инъекций, CSRF-атак и особенностей работы bfcache и дискового кеша может привести к выполнению произвольного JavaScript-кода даже при наличии строгой CSP.
На нескольких проектах я сталкивался с ситуацией, когда есть Kubernetes с разными окружениями типа dev, stage, prod и т. д.
Код сервисов в эти самые окружения попадает в процессе CI/CD: то есть мы мержим какую‑то ветку с разрабатываемой фичей или исправлением бага в ветку, которая «привязана» к окружению и дальше наш код деплоится в кластер. Думаю, для многих — это уже стандартная история.
Давайте представим, что нужно сделать задачу, относящуюся к какому‑нибудь микросервису, эта задача подразумевает запрос по сети к другому микросервису, а тот, в свою очередь, посылает запрос к еще другим микросервисам. Как быть, когда мы хотим, чтобы нам были доступны данные из других микросервисов, чтобы протестировать то, что мы сделали не в тестах с моками, а в условиях, похожих на «боевые». Тут самым очевидным, как мне кажется, является разворачивание локально микросервиса, код которого мы «ковыряем» и проброс портов до целевого микросервиса в dev кластере (или в другом кластере, предназначенным для тестирования), например:
Делюсь опытом как я сделал интерактивную карту Республики Коми: от QGIS и D3.js до графиков и API Wikidata. Карта визуализирует социально‑экономические показатели районов и населённых пунктов, поддерживает масштабирование, позволяет переключать слои, выбирать тёмную и светлую темы, а также получать справочную информацию об объектах.
Мой веб-сайт — это путешествие по волнам памяти. Я не хочу сказать, что нужно прекратить современную веб-разработку. На моём веб-сайте используются технологии, которые в обсуждаемые на нём времена были ещё недоступны. Он работает на мобильных (протестировано в Firefox для Android), отсутствует только фоновое изображение.
Свой первый веб-сайт я создал где-то в начале 2000-х, и как и большинство веб-сайтов того времени, он был очень простым. Это неудивительно, учитывая то, что большинство (включая и меня) писали такие веб-сайты в Блокноте, что накладывало ограничения на сложность. Можно было выбрать или Блокнот, или какой-то из WYSIWYG-редакторов, которые привязывали к себе тем, что сгенерированный ими HTML было бы совершенно невозможно поддерживать без них, а если вносить изменения вручную, то это вполне могло поломать всё в редакторе.
Тогда не было iPhone, почти не было SEO, а JavaScript, как и CSS, использовать было совсем необязательно.
Цветопередача первых ЖК-экранов была плохой, поэтому лучше было выбирать цветовую схему с высокой контрастностью.
Оптимальным разрешением было 1024×768 (или 1280×1024, если вы могли себе это позволить), однако стоило и обеспечить работоспособность размеров окна и панелей в 800×600. Вам же не нужно, чтобы контент выходил за левый или правый край экрана?
9 июля для ректората Российского нового университета (РосНОУ) при поддержке Университетского консорциума исследователей больших данных прошёл семинар сервиса «РосНавык». Этот мониторинговый сервис представила Дарья Олеговна Дунаева, менеджер проекта, ведущий аналитик научно-исследовательской лаборатории прикладного анализа больших данных Томского государственного университета.
Всем привет. Я сеньор и тимлид на .NET (C#). До недавнего времени работал в Росатоме, пока там внезапно не сократили целую дирекцию по цифровизации. Так что пришлось срочно выходить на рынок, причём, впервые в моей жизни (до этого работа находила меня сама). По результатам нескольких циклов собеседований получился неплохой дневник, который я здесь привожу.
В последнее время владельцы доменов в популярных зонах site, .online и .store всё чаще сталкиваются с внезапными блокировками своих ресурсов. Администратор этих доменных зон — международная компания Radix, специализирующаяся на управлении новыми доменами верхнего уровня (TLD) .tech, .space, website, site, online, store и другие — объясняет происходящее усиленным мониторингом и выявлением так называемых “подозрительных шаблонов регистрации” (Suspicious Pattern). При этом владельцы сайтов редко получают объяснения причин блокировки. Интернет-магазины, блоги и корпоративные сайты массово теряют доступ к доменам - неожиданно и без предупреждения.
Разберёмся, что происходит и как можно защитить свои домены от блокировки.
Привет, Хабр!
Сегодня разберём один из самых гибких инструментов в RabbitMQ — topic exchange
. Именно он позволяет не просто отправить сообщение «куда‑то», а превратить очередь в маршрутизатор уровня BGP, но только внутри твоей системы.
Наш кейс: в приложении есть русский (наш нативный) и английский языки. Надо быстро и просто добавлять другие (по запросам от клиентов). В файлах с переводами был хаос: дублирование строк, конкатенация вместо плейсхолдеров, разный порядок строк в файлах переводов для ru/en, висячие пробелы и многое другое.
Я решил написать вспомогательный инструмент, который помог решить все эти проблемы. Сейчас мы добавляем новый язык буквально за 40 минут и 2$. Все получилось настолько хорошо, что решил причесать и выложить в open-source
Главная фишка: перевод на новые языки делается сразу с 2х языков (в нашем случае с ru и en) что на практике делает его супер-качественным
Оптимизация формы оплаты на Stripe: анатомия успешного микроплатежа
Как мы снизили отклонения с ~5% до ~1% — без обхода системы, исключительно в рамках UX-улучшений.
Я починил плохой перевод силами ИИ, написав расширение при помощи ИИ. И я удивлён, что до сих пор такого не сделали.
Компании уделяют много внимания внешнему виду сайта и его юзабилити. Это действительно важно, но в погоне за красотой нельзя упускать главное: сайт должен быть производительным и устойчивым к высоким нагрузкам. Подготовили для вас гайд, с которым получится обезопасить сайт от перегрузок в высокий сезон — на основе нашего опыта работы с Ариель.
Привет! 👋 Меня зовут Алина. Я маркетолог и давно работаю в ИТ, но с безопасной разработкой познакомилась только когда пришла в продуктовую студию по кибербезопасности Axel PRO. И знаете, эта область заинтересовала меня в процессе работы. А еще у меня есть интересное хобби — я люблю играть в Dungeons&Dragons, иначе говоря — ДНД 🎭. И вот что я заметила: процесс разработки ПО очень похож на эту игру. Сейчас расскажу, почему.
Представьте, что разработка ПО — это ваша игра в Dungeons&Dragons. Вы собрали отряд: разработчиков, тестировщиков, продакт‑менеджеров, выбрали для них роли и отправились в приключение — создавать крутой продукт 🚀.
Но вот загвоздка: пока вы исследуете подземелья (пишете код) 🏰, на каждом шагу вас поджидает разная нечисть — уязвимости‑ловушки 🕳️, баги‑драконы 🐉 и орки‑ошибки конфигурации 🪓. Если вы не взяли с собой защитные свитки с политиками и шаблонами безопасности 📜, зелья исправления уязвимостей 🧪 и доспехи из безопасных практик 🛡️ — ваша команда рискует быстро проиграть.
Собираем команду
Как и в мире ДНД, в безопасной разработке у каждого участника команды есть своя уникальная роль и задачи. Например:
⚔️ Бэкенд‑разработчик — это воин, который создает и защищает код, отражая атаки.
🧙♂️ Тестировщик — маг, исследующий систему с помощью «заклинаний» тестов, чтобы найти слабые места.
⛩️ Администратор инфраструктуры — жрец, поддерживающий стабильность и безопасность серверов и окружения
🎶 HR‑менеджеры и менеджеры проекта — подобно бардам, поддерживают коммуникацию и помогают команде достигать общих целей.
Всем привет! Сегодня хочу рассказать, как можно протестировать Личный кабинет банка с помощью Postman, на примере простого Веб-приложения. Будет проверено: создание пользователя, авторизация, отображение продуктов клиента в Личном кабинете, подача заявки на потребительский кредит и отображение результатов ее рассмотрения в ЛК. Приступим
Было разработано небольшое Веб-приложение на Node.js. После запуска приложения и открытия его на локальной машине по адресу - http://localhost:5000/, на странице отображается форма входа в Личный кабинет.
Привет, Хабр! На связи разработчик Peakline — аналитической платформы для Strava. Сегодня я хочу поделиться опытом внедрения Cloudflare Turnstile в веб-приложение на FastAPI.
Это решение позволило мне отказаться от назойливых CAPTCHA, улучшить пользовательский опыт и при этом надежно защитить формы регистрации и входа от ботов.
От хаоса в Markdown-файлах до стильного, быстрого сайта с поиском, темами и мультиязычностью за один вечер.
В жизни почти каждого IT-проекта наступает момент, когда количество файлов README.md
, GUIDE.md
, docs.txt
и заметок в Confluence достигает критической массы. Документация становится фрагментированной, поиск нужной информации превращается в квест, а новые члены команды тратят часы на то, чтобы просто понять, "что где лежит".
Я родился и вырос в небогатой рабоче‑крестьянской семье, в неблагополучном районе города, в смутные времена. У меня был интерес и склонность к языкам, но я не мог его реализовать, упираясь в ограничения внешнего и внутреннего мира (застенчивость, необщительность, депрессивность).
В 20 лет, будучи студентом математического факультета в Сибири, в Томске, я самостоятельно выучил арабский язык. В 25 — английский. И мной овладела идея облегчить этот путь всем желающим, а особенно тем, кто оказался в ситуации подобной моей в детстве.
Как сержант Калашников, побывавший в грязи окопов с ненадежным оружием, задумал винтовку, стреляющую в воде, песке, жаре и холоде, недорогую, простую и дешевую в производстве и эксплуатации... Я задумал путь изучения языка, надежный, даже если у ваших родителей нет денег на репетиторов, если у вас синдром дефицита внимания, а школа — ниже средней и процесс обучения там не пробуждает в вас любознательности.
Привет, Хабр! Меня зовут Александр, я разработчик и, как многие в IT, стараюсь уравновешивать сидячую работу спортом — в моем случае, это велосипед и бег. И, как многие спортсмены-любители, я пользуюсь Strava.
В этой статье я хочу провести вас «под капот» моего проекта и показать на реальных фрагментах кода, как с помощью Python, щепотки NumPy и капли JavaScript можно построить собственный мощный инструмент для анализа спортивных данных. Это история не только про код, но и про философию открытых данных и желание сделать профессиональные инструменты доступными для всех.