Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

@Transactional в Spring и исключения

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

Привет! В этой статье я бы хотел рассказать, как Spring'овая аннотация @Transactional ведет себя при возникновении исключений. Про это немало написано, в том числе на Хабре. Например, тут или тут. Поэтому, чтобы не повторяться, я не буду подробно расписывать как и почему исключения влияют на откат транзакций, а вместо этого просто покажу несколько примеров.

Читать далее
Всего голосов 12: ↑11 и ↓1+12
Комментарии0

Решаем задачу по взаимодействию микросервисов на Python тремя способами

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

Когда речь заходит про взаимодействие микросервисов, все сразу вспоминают о сложных архитектурных паттернах, вроде Event Bus и CQRS. В этой статье я расскажу, как выполнить простенькую задачку для двух микросервисов без навороченной архитектуры. В моем случае это создание сервиса, который агрегирует события компании в единую ленту событий.
Читать дальше →
Всего голосов 43: ↑42 и ↓1+51
Комментарии38

Туториал по основам Apache Kafka: установка и работа с кластером из одного брокера

Время на прочтение14 мин
Количество просмотров52K

Собрали туториал по Кафке для того, чтобы вы могли быстро научиться с ней работать, получить фундаментальные навыки и безболезненно приступить к более высокоуровневому функционалу в дальнейшем.

Читать далее
Всего голосов 11: ↑10 и ↓1+11
Комментарии3

Kotlin/Golang работа в двух языках

Время на прочтение17 мин
Количество просмотров11K

Так уж получилось, что у нас в компании используются разные стеки и языки. И в частности у нас есть большое подразделение, основным стеком которого является JVM с Kotlin в качестве языка разработки (вместо ванильной Java, на бэкенде). Но при этом этому же отделу регулярно приходится использовать в работе GoLang.

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

Читать далее
Всего голосов 15: ↑13 и ↓2+14
Комментарии12

Все еще работаете с access token на клиенте? Тогда мы идем к вам

Время на прочтение15 мин
Количество просмотров56K

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

В статье рассмотрим причины необходимости работы с токеном на клиенте веб-приложений, узнаем ,что лучше для хранения токена: localStorage, sessionStorage или cookie без флага HttpOnly (спойлер, ничего из этого), а также посмотрим на меры воздействия, которые можно использовать для снижения риска утечки токена посредством различных уязвимостей.

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

Читать далее
Всего голосов 37: ↑35 и ↓2+40
Комментарии40

Spring Data JPA: метод save и границы его применимости

Время на прочтение13 мин
Количество просмотров31K

Привет! Меня зовут Семён Киреков, я Java-разработчик и тимлид в Центре Big Data @МТС Digital и Java-декан в МТС Тета — образовательном стартапе в рамках МТС. На митапе Росбанка и Jug.ru я рассказывал о том, как устроен метод Save в Spring Data JPA, почему он может вызвать лишний select, как решить эту проблему и при чем здесь доменные события Spring. Здесь я поделюсь этой информацией с вами.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии4

Бытовой инфобез. Что делать, если украли мобильный телефон?

Время на прочтение5 мин
Количество просмотров8.3K

Если брать в расчет только коммуникационную составляющую, то телефон неразрывно связан с человеком и его социализацией. Соцсети, мессенджеры, мобильные приложения, просмотр и съемка фото и видео – всем этим мы пользуемся каждый день.

Но как же быть, если вдруг Ваш мобильный телефон украдут? Сценарий вполне реальный учитывая формфактор устройства, а ведь внутри, без преувеличения, вся наша жизнь.

А у Вас есть план действий на такой случай? Вы можете вот прямо сейчас выстроить у себя в голове логическую цепь действий что и как делать по шагам если вдруг поймете, что мобильный телефон украден?

Читать далее
Всего голосов 20: ↑12 и ↓8+6
Комментарии17

Развертывание Spring Boot приложения с помощью Nginx, Let's Encrypt и Docker Compose

Время на прочтение7 мин
Количество просмотров22K

Привет, Хабр! В своей первой статье я бы хотел поделиться опытом в развертывании Spring Boot приложения. Но для начала небольшое отступление, которое должно ответить на вопросы зачем и почему.

Недавно я столкнулся с задачей разработать Telegram бота. Казалось бы, что тут сложного? Ну раз надо, то разрабатывай, где тут могут быть сложности? Но вот беда, ранее я не сталкивался с задачей развертывания проекта, тем более было много вопросов касаемо получения SSL сертификата так как Telegram API работает только с HTTPS протоколом. Увы после долгих поисков я так и не нашел статьи, которая ответила бы на все вопросы, поэтому процесс деплоя затянулся из-за того, что пришлось собирать весь материал по кусочкам. Теперь, когда у меня получилось разобраться с этой проблемой, я бы хотел вам рассказать как это сделать, чтобы сэкономить вам время и бонусом 2000 рублей за SSL сертификат.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии10

Apache Kafka: основы технологии

Время на прочтение9 мин
Количество просмотров426K

У Kafka есть множество способов применения, и у каждого способа есть свои особенности. В этой статье разберём, чем Kafka отличается от популярных систем обмена сообщениями; рассмотрим, как Kafka хранит данные и обеспечивает гарантию сохранности; поймём, как записываются и читаются данные.


Статья подготовлена на основе открытого занятия из видеокурса по Apache Kafka. Авторы — Анатолий Солдатов, Lead Engineer в Авито, и Александр Миронов, Infrastructure Engineer в Stripe. Базовые темы курса доступны на Youtube.

Всего голосов 29: ↑29 и ↓0+29
Комментарии10

Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana

Время на прочтение37 мин
Количество просмотров95K

Туториалы делятся на две больших категории: либо "как нарисовать сову", либо подробно расписанные тысячи шагов в формате "напиши туториал для дурака - и только дурак захочет его читать".

Как какой из двух категорий относится эта статья — решать вам.

В этой статье вы увидите пошаговое создание cloud-native микросервиса на Amazon AWS, пригодное для "чтения с листа". Чтобы понять, что здесь происходит, не нужно разворачивать проект - достаточно обладать живым воображением и прочитать текст по диагонали. Если же вы всё-таки захотите повторить шаги, вам будут жизненно нужны знания вида, как создавать классы в IDE и что такое Spring.

Вначале мы напишем пару простых микросервисов на Spring Boot, докеризуем их, зальём в AWS, настроим красивые доменные имена и HTTPS, прикрутим логирование и мониторинг, Prometheus и Grafana. Это небольшое путешествие по всем кругам ада, из которого вы не вернетесь прежним.

Текст написан на основе текстов и демо-проекта microservice-customer за авторством @kamaruzzaman. Если вы потеряли нить повествования, всегда можно зайти на GitHub и найти весь код в пригодном для запуска виде. Если захочется закопаться в тему, то бро Дима Чуйко (@Teapot) написал вам ещё две части статьи "Микросервисы: от CRUD до Native Image" (раз, два).

Последняя важная оговорка. В этом гайде будут использоваться технологии Amazon и обычные дистрибутивы OpenJDK. Автор осознает, что мы живём в России, и возможно, вместо Amazon куда лучше подойдет что-то вроде SberCloud или MTS Cloud, а вместо обычного OpenJDK - Axiom JDK с сертификацией по ФСТЭК. Особенности российских технологий - тема для отдельной статьи. Если вы захотите таковую после чтения этого гайда - отметьтесь в комментариях.

Читать далее
Всего голосов 66: ↑65 и ↓1+83
Комментарии27

[Карьера в IT] Софт-скилы: типовые вопросы, которые ждут на интервью, и шаблоны ответов для IT-инженеров

Время на прочтение6 мин
Количество просмотров57K

В прошлой статье нашей серии «Карьера в IT» мы обсуждали собеседования в крупные компании. В них (да и в некоторых стартапах) вас обязательно будут тестировать на софт-скилы. Разберем, что под ними обычно имеют в виду, посмотрим на типовые вопросы и на примерах покажем, как грамотно пройти тестирование на софт-скилы, чтобы не потерять должность мечты.

Читать далее
Всего голосов 23: ↑19 и ↓4+17
Комментарии9

Как бы вы реализовали форму аутентификации на сайте? Вопрос для собеседования на Junior/Middle/Senior?

Время на прочтение9 мин
Количество просмотров56K

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

Тема с одной стороны в общем-то простая, а с другой - многогранная. Можно сделать “на коленке”, а можно и “по-взрослому” -  зависит от знаний конкретного девелопера и технического задания. Ну и не привязывается к конкретному языку. Что nodejs, что .net, что PHP - на ответы это не влияет. Ну и отлично же! Давайте попробуем.

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

Как бы вы ответили на конкретный вопрос? Попробуйте проверить себя и потратить пару минут на обдумывание прежде чем читать ответ.

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

Итак, за вёсла!

Читать далее
Всего голосов 59: ↑49 и ↓10+49
Комментарии211

Асинхронный python без головной боли (часть 1)

Время на прочтение14 мин
Количество просмотров307K

Почему так сложно понять asyncio?

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

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку
Всего голосов 135: ↑135 и ↓0+135
Комментарии58

Алгоритм Дейкстры. Разбор Задач

Время на прочтение7 мин
Количество просмотров68K


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

Если вы хотите найти ответить на вопросы, чем этот алгоритм лучше BFS (поиска в ширину), при каких условиях алгоритм применим, и какие теоретические и практические задачи можно с его помощью решать, читайте далее.

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии5

Reactor, WebFlux, Kotlin Coroutines, или Асинхронность на простом примере

Время на прочтение12 мин
Количество просмотров21K


Многие сервисы в современном мире, по большей части, «ничего не делают». Их задачи сводятся к запросам к другим базам/сервисам/кешам и агрегации всех этих данных по различным правилам и разнообразной бизнес-логике. Поэтому неудивительно, что появляются такие языки, как Golang, с удобной встроенной конкурентной системой, позволяющей легко организовывать неблокирующий код.


В JVM-мире всё немного сложнее. Есть огромное количество фреймворков и библиотек, блокирующих потоки при использовании. Так и сама stdlib может делать то же самое порой. Да и в Java нет аналогичного механизма, похожего на горутины в Golang.


Тем не менее, JVM активно развивается и появляются новые интересные возможности. Есть Kotlin с корутинами, которые по своему использованию очень похожи на горутины из Golang (хоть и реализованы совершенно по-другому). Есть JEP Loom, который в будущем привнесёт fibers в JVM. Один из самых популярных веб-фреймворков — Spring — не так давно добавил возможность создавать полностью неблокирующие сервисы на Webflux. А с недавним релизом Spring boot 2.2 интеграция с Kotlin стала ещё лучше.


Предлагаю на примере небольшого сервиса по переводу денег с одной карты на другую самим написать приложение на Spring boot 2.2 и Kotlin для интеграции с несколькими внешними сервисами.

Читать дальше →
Всего голосов 26: ↑25 и ↓1+33
Комментарии15

Как научиться разработке на Python: новый видеокурс Яндекса

Время на прочтение6 мин
Количество просмотров250K
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии41

Open Session In View в Spring Boot: Скрытая угроза

Время на прочтение5 мин
Количество просмотров42K
Все здесь правы, каждый по-своему, и, следовательно, все здесь не правы.
"Сказка о Тройке" (А. и Б. Стругацкие)

Если вы используете Spring Data JPA, то после обновления на Spring Boot 2 при старте приложения можете заметить в логе новое предупреждение:


spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning.

В этой статье попытаюсь объяснить, что это значит, кто виноват и что делать.


Для поднятия полноценного приложения на Spring Boot требуется всего лишь одна аннотация @SpringBootApplication. Для того, чтобы это было возможным, фреймворк использует большое количество автоконфигураций и настроек по умолчанию. Более того, для работы "из коробки" разработчикам Spring Boot пришлось выбрать некие концепции разработки приложений из нескольких альтернативных вариантов для каждой, чтобы пользователю не нужно было выбирать их явно. С одной стороны это хорошо для быстрого старта и легкой разработки, но с другой – через некоторое время может оказаться, что некая используемая по умолчанию концепция/парадигма/настройка не подходит для проекта, а для отказа от нее придется многое переделать. Одной из таких концепций является режим Open Session In View (OSIV), включенный в Spring Boot по умолчанию.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии2

Стив пишет заклинания на Python. Обучение детей программированию в Minecraft

Время на прочтение5 мин
Количество просмотров31K

Хочу поделиться наработками домашнего обучения детей программированию. Даже не столько обучению, сколько привлечения детского внимания и интереса. Ведь согласно Сократу, человек - не сосуд для наполнения, а факел, который нужно зажечь. Изначально были попытки начать со Scratch, но несмотря на понятный графический интерфейс, желание продолжать и что-то делать в среде быстро угасло. Minecraft пошел намного лучше, потому что дети уже были хорошо знакомы с игрой по мобильной версии и любимому creative mode.

Я не имею в виду создание и использование модов, это слишком высокий уровень входа. Первые попытки были после знакомства с первым изданием книги "Minecraft. Программируй свой мир" и удачной настройки сервера Bukkit на домашней машине. На данный момент (начало 2021 г.) есть второе издание, а также несколько похожих книг других авторов.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии16

Мой опыт обучения детей 8-10 лет программированию на Scratch

Время на прочтение8 мин
Количество просмотров270K
Давно собирался написать об этом, но, модная болезнь прокрастинация брала вверх…

Знакомство со Scratch


Когда сыну Артёму исполнилось 7 лет и он пошел в школу, мы ему подарили компьютер, чтобы он не отставал от жизни. Несколько месяцев он играл в разные игры, наслаждался, развлекался и т.п. Мне стало немного обидно, что такой дорогой и сложный прибор как компьютер используется только для развлечений, и я решил придумать, как использовать компьютер для обучения. А чему можно научиться на компьютере? Конечно, программированию! Тут я и вбил в «Яндекс» заветную фразу «обучение детей программированию».
Читать дальше →
Всего голосов 77: ↑74 и ↓3+71
Комментарии62

Венера или первые 60 kpx с другой планеты

Время на прочтение8 мин
Количество просмотров214K
Когда мы слышим «фотография с поверхности другой планеты», то первым на ум, как правило, приходит Марс. Оно, конечно, и не удивительно: в последние годы мы избалованы стереоскопическими снимками HRSC, панорамами HiRISE с огромным разрешением, и марсоходом Curiosity с почти ежедневными фотоотчетами. И даже когда речь заходит об истории вопроса, вспоминаем успех американских миссий «Викинг». Но мало кто помнит (или даже знает) о том, что первая в истории фотография с поверхности другой планеты получена не на Марсе и не американским аппаратом, а советской станцией «Венера-9» в 1975 году.

В этом топике я хочу восстановить историческую справедливость и рассказать о том, как советским инженерам удалось создать устройство, которое успешно осуществило панорамную съемку в условиях крайне агрессивной среды при температуре более 470°С и давлении в 93 атм.



Читать дальше →
Всего голосов 231: ↑229 и ↓2+227
Комментарии187

Информация

В рейтинге
6 067-й
Зарегистрирован
Активность

Специализация

Backend Developer
Java
Kotlin
Python