Search
Write a publication
Pull to refresh
0
Roman Surkoff @s-rbread⁠-⁠only

Java-developer

Send message

Мне 34, я был в 65 странах, и у меня есть для вас лайфхак

Level of difficultyEasy
Reading time4 min
Views101K

Вы же попались на этот кликбейт?

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

За первый же месяц с ботом я купил перелёт в США и обратно в два раза дешевле стандартной цены. А сколько времени сберёг на мониторинг — не сосчитать. Поделюсь ссылками на мой проект в GitHub и названием бота. Вы сможете собрать похожее решение под свой запрос и летать в отпуск, испытывая меньше фрустрации от ценника на билеты и туры.

Читать далее

Делаем форму обратного звонка: лендинг, Go и SMS-уведомления

Reading time10 min
Views3.3K

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner личного кабинета платформы МТС Exolve. Сегодня расскажу, как создать простую, но эффективную форму обратного звонка с SMS-уведомлениями. Дам пример для сценария, когда клиент оставляет заявку через форму, а менеджер связывается с ним через Callback API. После успешного разговора система автоматически отправляет SMS через SMS API с подтверждением договоренностей и следующими шагами.

SMS-уведомления здесь играют роль надежного канала для закрепления результатов разговора и напоминания о договоренностях. Они не требуют интернета или установки приложений и работают везде, даже при слабом сигнале связи.

Причем пример будет без громоздких фреймворков — только Go и чистый HTML с щепоткой JavaScript.

Читать далее

Как закрыть критерий «Членство в ассоциации» IT-специалисту для визы таланта

Reading time6 min
Views3.3K

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

Читать далее

Как сократить время ответа в 2 раза, добавив одну строку кода

Level of difficultyMedium
Reading time9 min
Views39K

Okko – один из крупнейших онлайн-кинотеатров в России c нагрузкой в несколько тысяч запросов в секунду, в котором персональные рекомендации занимают важное место. Для улучшения пользовательского опыта нужно не только предоставить качественные рекомендации, но и обеспечить быстрый доступ к ним.

В этой статье мы поделимся:

1. Описанием, как мы использовали инструменты Jaeger и Grafana для выявления узких мест в производительности, что привело к выявлению критических проблем со сборщиком мусора;

2. Анализом влияния различных настроек сборщика мусора на время ответа, что позволило сократить его вдвое для 99% запросов;

3. Когда и почему стоит рассматривать изменение стандартных настроек сборщика мусора (на примере нашего случая).

Читать далее

Создание Telegram Web App с FastAPI: Генерация, сканирование QR-кодов камерой устройства и деплой за 5 минут

Reading time30 min
Views16K

Привет, друзья! Ваш теплый отклик на мою прошлую статью о разработке Telegram-ботов с использованием технологии MiniApp вдохновил меня на создание нового проекта.

Сегодня вы узнаете, как создать Telegram Web App с помощью FastAPI и Aiogram 3, который сканирует и генерирует QR-коды. В статье приведены шаги от установки зависимостей и настройки вебхуков до написания кода на фронте и бэке, и до деплоя проекта.

Читать далее

Ваше лицо кажется знакомым: разведка, анализ и методы атак на ML в системах распознавания лиц

Level of difficultyMedium
Reading time18 min
Views4.3K

Мы живем в мире, где системы распознавания лиц (далее — CРЛ) используются практически везде: от валидации возраста и биометрической идентификации в режиме онлайн до наблюдения и проведения оплаты в реальном мире. Технологические аспекты таких алгоритмов развиваются на наших глазах: начиная с простых систем, основанных на базовых алгоритмах, мы перешли к системам, использующим алгоритмы машинного обучения, однако и их развитие еще далеко от завершения.

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

Пораспознаем лица?

Импортозамещаю Netflix себе в дом

Reading time7 min
Views39K

В связи с уникальной сложившейся политической ситуацией в Российской Федерации, меня отключили от моей честно оплаченной подписки на сервис Netflix. Также, с уходом больших кинокомпаний с российского рынка, не остается большой надежды на трансляцию свежего кино и сериалов в отечественных онлайн кинотеатрах. Поэтому я принял волевое решение создать домашний сервер для видеохостинга, а также скачивания и раздачи торрентов на одноплатном компьютере Raspberry Pi, который был куплен по наитию и, как и у тысяч программистов-энтузиастов по всему миру, лежал без дела который год.

Читать далее

Релокейт-обзор: 10 стран для переезда ИТ-специалиста

Reading time10 min
Views107K


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

И все равно регулярно получаем просьбы написать о той или иной стране. Именно поэтому мы решили собрать в одном месте сводный обзор топовых направлений для релокейта ИТ-специалистов.

Примечание: текст получился длинным, в нем много ссылок, в том числе на наши подробные статьи по каждой стране. Так что устраивайтесь поудобнее, поехали!
Читать дальше →

Job Market в США моими глазами

Level of difficultyMedium
Reading time11 min
Views7.3K

Привет сообществу, в свободный час, решил поделиться с вами историей поиска работы в США в 2023-2024 году. На текущий момент живу в Беркли в Калифорнии. Нахожусь тут с лета 2021-го. И это, можно сказать, мой второй поиск работы.

Сейчас работаю в Realm, занимаюсь там созданием фичей вокруг генеративного ИИ и выведением их в прод. Два года довольно интенсивной работы, в настоящем кремнево-долинном стартапе. До этого работал в Сколтехе, в группе компьютерного зрения Е. Бурнаева, с ним и с другими невероятно талантливыми людьми.

Читать далее

JWT-аутентификация при помощи Spring Boot 3 и Spring Security 6

Level of difficultyMedium
Reading time15 min
Views97K

Переход от базовых приложений к более сложным требует использования Spring Security для обеспечения безопасности. Новая версия, Spring Security 6, изменяет некоторые базовые реализации, а русскоязычных материалов на эту тему очень мало. В этой статье мы рассмотрим JWT-аутентификацию и авторизацию с помощью Spring Boot 3 и Spring Security 6, чтобы помочь начинающем разработчикам разобраться и начать пользоваться базовым функционалом этой библиотеки. Цель данной статьи - показать, как использовать JWT-аутентификацию с API-интерфейсами.

Читать далее

Учимся разворачивать микросервисы. Часть 1. Spring Boot и Docker

Reading time7 min
Views101K


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


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


Изначально я разбил создание проекта на несколько шагов:


  1. Создать два сервиса — 'бекенд' (backend) и 'шлюз' (gateway), упаковать их в docker-образы и настроить их совместную работу


    Ключевые слова: Java 11, Spring Boot, Docker, image optimization


  2. Разработка Kubernetes конфигурации и деплой системы в Google Kubernetes Engine


    Ключевые слова: Kubernetes, GKE, resource management, autoscaling, secrets


  3. Создание чарта с помощью Helm 3 для более эффективного управления кластером


    Ключевые слова: Helm 3, chart deployment


  4. Настройка Jenkins и пайплайна для автоматической доставки кода в кластер


    Ключевые слова: Jenkins configuration, plugins, separate configs repository



Каждому шагу я планирую посвятить отдельную статью.


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

Читать дальше →

Интеграция Keycloak в приложение Spring Boot 3 с использованием протокола OAuth2.0

Level of difficultyMedium
Reading time27 min
Views36K

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

В данной статье мы рассмотрим процесс интеграции Keycloak в наше приложение Spring Boot 3 в качестве сервера авторизации с использованием протокола OAuth2. Обсудим смысл OAuth2, его механизм работы и сравним его с другими протоколами. Кроме того, мы настроим Keycloak с использованием Docker Compose, воспользовавшись PostgreSQL в качестве базы данных для Keycloak. Затем мы интегрируем Keycloak с нашим приложением Spring Boot 3, используя протокол OAuth2. Также мы подключим Keycloak Admin Client и, наконец, проверим функциональность всей системы.

Читать далее

Как мы используем Confluence для разработки требований к продукту

Reading time6 min
Views50K


В статье описаны наши подходы к использованию Confluence в качестве инструмента для работы с требованиями к продукту. Не претендуем на универсальность, но, возможно, эти подходы будут полезны для решения ваших задач, которые не обязательно связанны с процессами разработки требований (ведение пользовательской документации, описание внутренних регламентов работы отдела, организация базы знаний и пр).
Читать дальше →

Как выжать максимум из Confluence. Глава первая

Level of difficultyEasy
Reading time10 min
Views64K

Привет, Хабр! Я Ульяна, старший аналитик в направлении продуктового и системного анализа в отделе Tinkoff Mobile Core. Наш отдел разрабатывает общие технические решения — библиотеки, которые используются в мобильных приложениях экосистемы Тинькофф.

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

Документацию мы ведем в Confluence — и обычно, когда я рассказываю про Confluence, у многих он вызывает, мягко говоря, неприятные ассоциации. Миллион разделов, неудобная навигация, портянки бесконечного текста и многое другое, что отбивает желание даже открывать любую wiki. Но я спешу вас обрадовать — все может быть совсем иначе!

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

Читать далее

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

Reading time7 min
Views37K

99% того, что я делаю — использование ошибок, которых можно избежать. Сегодня я расскажу про IDOR — одну из самых распространенных и простых в использовании веб-уязвимостей. С ее помощью можно посмотреть чужие фотографии в социальной сети или получить скидку в интернет-магазине, а можно заработать тысячи долларов баг-баунти.

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

Читать далее

Практический кейс: как быстро развернуть Testcontainer PostgreSQL для Spring Boot API

Reading time7 min
Views19K

Тема с testcontainer-ами относительно не новая, первые статьи на англоязычных ресурсах встречаются с 2016 года, но не смотря на это, до сих пор на просторах веба крайне мало гайдов для их развертывания из коробки. В большинстве своем это туториалы, где собрана солянка из зависимостей и аннотаций, которые мало того, что не нужны, но еще и могут запутать разработчика, решившего  с ними познакомиться. В этой статье я опишу свой практический кейс по развертыванию тестовых контейнеров для базы данных PostgreSQL. Основная задача их использования - быстрый deploy нужного сервиса в контейнере за небольшое время. В дополнении для наглядности запустим туда FlyWay миграции.

Читать далее

Хорошо подумайте, прежде чем использовать Docker-in-Docker для CI или тестовой среды

Reading time6 min
Views54K


Docker-in-Docker представляет собой виртуализированную среду Docker-демон, запущенную в самом контейнере для сборки образов контейнера. Основной целью создания Docker-in-Docker была помощь в разработке самого Docker. Многие люди используют его для запуска Jenkins CI. Поначалу это кажется нормальным, но затем возникают проблемы, которых можно избежать, установив Docker в контейнер Jenkins CI. В этой статье рассказывается, как это сделать. Если вас интересует итоговое решение без подробностей, просто прочитайте последний раздел статьи «Решение проблемы».

Читать дальше →

Важные основы фреймворка Скрам, про которые забывают

Reading time4 min
Views6.6K

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

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

Читать далее

Как держать 20 тысяч VPN клиентов на серверах за $5

Reading time24 min
Views89K
Месяц назад мы с друзьями сделали бесплатный сервис для обхода блокировок сайтов в Украине Zaborona.Help. За это время сервис стал довольно популярным, аудитория выросла до 20 000 пользователей. Число одновременных подключений в пиковые часы — ≈6 000 клиентов.

Главная особенность нашего сервиса в том, что через VPN маршрутизируется трафик только к заблокированным сетям, остальные сайты работают напрямую. Это не влияет на скорость интернета и не подменяет IP-адрес для остальных сайтов.

В статье описываются тонкости настройки OpenVPN для большого числа клиентов, на дешевых VPS.

  • Как выбрать подходящий хостинг. Отличительные черты плохого хостинга. История о том, как мы долго искали и нашли хостинг в России.
  • Почему IPv6 — хорошо. Правильная настройка IPv6-адресов для VPN-клиентов.
  • Изменение конфигурации OpenVPN на лету, без перезапуска сервера и отключения клиентов.
  • Балансировка нагрузки между серверами и процессами OpenVPN
  • Тонкая настройка Linux для большого числа подключений
  • Особенности кривых операционных систем и роутеров пользователей

Наш опыт будет полезен для тех, кто собирается развернуть VPN для личных нужд, и тех, кто хочет создать сервис с большим числом клиентов.
Читать дальше →

Как мы работаем с логами (сбор, хранение, анализ при помощи Graylog)

Reading time12 min
Views134K

Всем привет! В этой статье мы хотим поделиться нашим опытом использования полезной платформы Graylog, которая ежедневно помогает собирать, надежно хранить и анализировать логи с десятков серверов, окутанных заботой нашей поддержки :)

Это первая часть статьи, в которой мы расскажем почему выбор пал на Graylog, как его установить и произвести базовую настройку.

Читать далее

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer, Web Developer
Lead
From 6,000 $
Git
Java Spring Framework
English
SQL
Java
Spring Boot
Junit
Restful WebServices
Docker
PostgreSQL