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

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

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

Семантика exactly-once в Apache Kafka

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


Всем привет! Меня зовут Юрий Лилеков, я работаю в Server Team Badoo. На днях мне попалась довольно интересная статья о новой семантике exactly-once в Apache Kafka, которую я с радостью для вас перевёл.

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

Apache Kafka + Spring Boot: Hello, microservices

Время на прочтение12 мин
Количество просмотров128K
Привет, Хабр! В этом посте мы напишем приложение на Spring Boot 2 с использованием Apache Kafka под Linux, от установки JRE до работающего микросервисного приложения.

Коллеги из отдела фронтэнд-разработки, увидевшие статью, сетуют на то, что я не объясняю, что такое Apache Kafka и Spring Boot. Я полагаю, что всякий, кому понадобится собрать готовый проект с использованием вышеперечисленных технологий, знают, что это и зачем они им нужны. Если для читателя вопрос не праздный, вот отличные статьи на Хабре, что такое Apache Kafka и Spring Boot.

Мы же обойдёмся без пространных объяснений, что такое Kafka, Spring Boot и Linux, а вместо этого запустим Kafka-сервер с нуля на Linux-машине, напишем два микросервиса и сделаем так, чтобы одно из них посылало сообщения на другое — в общем, настроим полноценную микросервисную архитектуру.



Пост будет состоять из двух разделов. В первом мы настроим и запустим Apache Kafka на Linux-машине, во втором — напишем два микросервиса на Java.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии3

Представляем Spring Data JDBC

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

В предстоящий релиз Spring Data под кодовым именем Lovelace мы собираемся включить новый модуль: Spring Data JDBC.


Идея Spring Data JDBC заключается в том, чтобы предоставить доступ к реляционным базам данных без использования всей сложности JPA.

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

Docker под Windows для разработки, разбор подводных камней

Время на прочтение5 мин
Количество просмотров242K
imageДанная публикация является разбором особенностей контейнерной виртуализации Docker под системой Windows.

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

За практическим руководством с нуля советую обратиться к этой публикации.

Содержание


Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии26

Не работайте в плохих проектах

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

Частенько в дискуссиях на тему работы я встречаю тезисы о том, как плохо работать в том или ином проекте/компании/отрасли и т.д. И несмотря на то, что в отечественном IT в целом очень распространено нытье, многое из обсуждаемого действительно имеет место в реальности. Однако, спустя годы разработки, смены проектов, компаний и даже стека технологий, у меня выработалось понимание проблемы и ее решения с другого ракурса. Об этом и поговорим.


Читать дальше →
Всего голосов 220: ↑197 и ↓23+174
Комментарии574

Давайте разберём, почему покупатели задают «тупые» вопросы

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


— Добрый день! Почём мороженое?
— Вот же ценник!

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

Очень много явно странных вопросов имеют совсем не то значение, которое озвучивается. Это касается и продаж, и обычной жизни. Давайте разберём ещё пару примеров. Начнём с риторических вопросов в духе «А этот пазл точно собирается? Там все детали внутри?».
Читать дальше →
Всего голосов 182: ↑175 и ↓7+168
Комментарии386

N+7 полезных книг

Время на прочтение6 мин
Количество просмотров68K
Привет! Это очередной традиционый список книг, оказавшихся полезными за год. Сугубо субъективный, конечно. Но я серьёзно рассчитываю, что вы подскажете ещё классных штук почитать.



Думай медленно, решай быстро — Даниэль Канеман
Это самое волшебное, что случалось за последние годы в плане гиковой литературы. Эта штука последовательно открывает когнитивные искажения и учит настраивать мышление. При этом увлекательно. Вообще, подход к тому, что мышление — это набор техник, которые можно тренировать и оттачивать, он, наверное, правильнее подхода «это шаманство». Канеман в отличие от следующей в списке книги, показывающей особенности реверсивного мышления, не даёт новых техник — но показывает, где и какие ошибки мы совершаем при обычных процессах. Такой серьёзный дебаг мозга.
Читать дальше →
Всего голосов 73: ↑71 и ↓2+69
Комментарии80

Привычка делать сейчас

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

Привычка делать сейчас Нила Фиоре — это самоучитель о понимании и преодолении прокрастинации.


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


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

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

Пятничный формат: Как писать код, который никто не сможет сопровождать

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


Благодаря советам экспертов в области Java вы научитесь писать код, который будет настолько сложно сопровождать, что любому, кто будет с ним работать после вас, потребуются годы, чтобы внести даже малейшие правки. Более того, если будете неизменно следовать этим правилам, вы сможете гарантировать себе пожизненное рабочее место, так как никто кроме вас не сможет разобраться в вашем коде.
Читать дальше →
Всего голосов 89: ↑74 и ↓15+59
Комментарии119

Откуда растут ноги у Java Memory Model

Время на прочтение19 мин
Количество просмотров76K
Современное железо и компиляторы готовы перевернуть с ног на голову наш код, лишь бы он работал быстрее. А их производители тщательно скрывают свою внутреннюю кухню. И все прекрасно, пока код выполняется в одном потоке.

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

Но все уже осознали, ведь жить с этим как-то надо. А Java программисты даже неплохо живут. Потому что в Java есть модель памяти — Java Memory Model (JMM), которая предоставляет достаточно простые правила для написания корректного многопоточного кода.

И правил этих достаточно для большинства программ. Если вы их не знаете, но пишите или хотите писать многопоточные программы на Java, то лучше как можно скорее ознакомиться с ними. А если знаете, но вам не хватает контекста или интересно узнать откуда растут ноги у JMM, тогда статья может вам помочь.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии10

Spring Data JPA: что такое хорошо, и что такое плохо

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

Крошка-сын к отцу пришел
И спросила кроха
— Что такое хорошо
и что такое плохо

Владимир Маяковский


Эта статья о Spring Data JPA, а именно в подводных граблях, встретившихся на моём пути, ну и конечно же немного о производительности.

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

Запускаем инспекции IntelliJ IDEA на Jenkins

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

IntelliJ IDEA на сегодня обладает наиболее продвинутым статическим анализатором кода Java, по своим возможностям оставившим далеко позади таких «ветеранов», как Checkstyle и Spotbugs. Её многочисленные «инспекции» проверяют код в различных аспектах, от стиля кодирования до характерных багов.


Однако пока результаты анализа отображаются лишь в локальном интерфейсе IDE разработчика, от них мало пользы для процесса разработки. Статический анализ необходимо выполнять в качестве первого шага конвейера сборки, его результаты должны определять quality gates, а сборка должна фейлиться, если quality gates не пройдены. Известно, что TeamCity CI интегрирован с IDEA. Но даже если вы не используете TeamCity, вы вполне можете попробовать запускать инспекции IDEA в любом другом CI-сервере. Предлагаю посмотреть, как это можно сделать, используя IDEA Community Edition, Jenkins и Warnings NG plugin.

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

Паттерны проектирования, используемые в Spring Framework

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

Привет, хабровчане! Длинные выходные завершились, а это значит, что пришло время поделиться новым полезным переводом. Сегодня поговорим о паттернах проектирования, используемых в Spring Framework. Как вы догадались, данный материал приурочен к старту набора новой группы по курсу "Разработчик на Spring Framework", который стартует 28 мая. Начнем.



В этой статье сделаем обзор нескольких паттернов проектирования, которые широко используются в Spring Framework. Паттерны проектирования описывают приёмы программирования в объектно-ориентированной разработке программного обеспечения.

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

Используем все возможности индексов в PostgreSQL

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

В мире Postgres индексы крайне важны для эффективной навигации по хранилищу базы данных (его называют «куча», heap). Postgres не поддерживает для него кластеризацию, и архитектура MVCC приводит к тому, что у вас накапливается много версий одного и того же кортежа. Поэтому очень важно уметь создавать и сопровождать эффективные индексы для поддержки приложений.

Предлагаю вашему вниманию несколько советов по оптимизации и улучшению использования индексов.

Примечание: показанные ниже запросы работают на не модифицированном образце базы данных pagila.
Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии3

HabraСonf №1 — похабрим за бэкенд

Время на прочтение2 мин
Количество просмотров5.2K
Когда мы чем-то пользуемся, редко задумываемся, как оно устроено изнутри. Вы едете в своей уютной машине и вряд ли у вас в голове крутится мысль о том, как ходят поршни в двигателе или смотрите очередной сезон любимого сериала и точно не представляете себе хромакей и актёра в датчиках, которого потом превратят в дракона. С Хабром та же история. А между тем, у нас сильная команда разработки, в которой ничего не обходится без крутых бэкендеров. Так почему бы на первой конференции Хабра HabraСonf не поговорить именно о бэкенде? Да легко! Приходите, будет хардкор.

TLDR: 3 июня Хабр проводит конференцию для бэкенд-разработчиков. Будет два выступления спикеров, круглый стол с экспертами рынка и, конечно, море нетворкинга.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии7

Управление командой программистов: как и чем их правильно мотивировать? Часть первая

Время на прочтение11 мин
Количество просмотров24K
Эпиграф:
Муж, глядя на чумазых детей, говорит жене: ну, что, этих отмоем или новых нарожаем?


Под катом рассуждения нашего тимлида, а также директора по развитию продукта RAS — Игоря Марната об особенностях мотивации программистов.

image
Секрет успеха в создании классных программных продуктов известен — возьмите команду крутых программистов, дайте команде классную идею и не мешайте команде работать. Крутые разработчики — ребята редкие и востребованные. Некоторые рекрутеры даже говорят, что у них создаётся такое впечатление, что родить крутого программиста проще, чем нанять его с рынка. Помимо трудностей с наймом, как таковым, опыт каждого конкретного разработчика, его знания о существующем продукте и истории его разработки зачастую незаменимы или восполняются тяжело и долго. Поэтому если вам повезло, и у вас уже есть крутая команда программистов, важно работать над их мотивацией. Нанять, обучить новых разработчиков, сделать из них команду — почти так же трудно и долго, как родить и вырастить детей.
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии32

Честное резюме программиста

Время на прочтение3 мин
Количество просмотров207K
image

Раздел 1. Soft Skills


  1. Я молчу на совещаниях. Стараюсь делать внимательное и умное лицо, даже если мне все равно.
Читать дальше →
Всего голосов 450: ↑410 и ↓40+370
Комментарии284

Модульное тестирование Json сериализации в Spring Boot

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


Введение


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

В данной статье будет рассмотрен один из сценариев, когда нам может понадобиться учесть особенности бизнес-логики приложения при сериализации (сценарий округления денежных сумм), на примере которого мы столкнёмся с механизмом сериализации в Spring Boot, а также описан возможный способ тестирования.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии0

Я провел сто собеседований, отказал сотне людей — и только потом научился собеседовать

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

Не желал бы я вам попасть ко мне на собеседование года два назад. Я провел их около сотни, и за все время взял может человек четырех. Не знаю почему, но эйчары считали, что это круто. Слава строгого интервьюера шла впереди меня. Знакомые звали меня собеседовать для чужих команд, и даже для чужих компаний, о которых вы слышите каждый день. И везде — не проходил никто.
Читать дальше →
Всего голосов 253: ↑228 и ↓25+203
Комментарии431

Docker: невредные советы

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

В комментариях к моей статье Docker: вредные советы было много просьб объяснить, чем так ужасен описанный в ней Dockerfile.


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



Сейчас разберемся, что не так с этим Dockerfile.


Итак, прошла неделя.

Читать дальше →
Всего голосов 61: ↑57 и ↓4+53
Комментарии75

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность