Привет, человек, %хабраюзер%, %юзернейм%, программист.
Этот пост является оплотом ненависти. Так уж вышло. Но тебе, как программисту пора перестать оправдываться.
Пользователь
Привет, человек, %хабраюзер%, %юзернейм%, программист.
Этот пост является оплотом ненависти. Так уж вышло. Но тебе, как программисту пора перестать оправдываться.
С некоторой регулярностью мне приходится видеть перспективных ребят, которые явно засиделись в джунах. Это удручает и разочаровывает - ведь я знаком со многими из них, и отлично знаю, что у них есть все необходимое для быстрого роста. И часто причина не в чем-то одном, а в сочетании некоторых, возможно неочевидных, недостатков. Я постарался собрать здесь весь список подобных минусов, которые приходится наблюдать довольно регулярно.
Итак, что обычно мешает условному джуну подтянуться до условного мидла?
Надеюсь для вас не секрет, что поход в кино это не только про посмотреть фильм, обед в ресторане не только про еду, а поиграть в футбол с друзьями не только про спорт. Двигаясь по выбранному сюжету, мы всегда невольно отмечаем детали, которые порой составляют до 80% впечатления.
Удобно ли расписание сеансов? Вовремя ли начался фильм? Как много было рекламы? Насколько комфортны кресла? А какое качество звука? Повезло ли с соседями – или опять чавкали и шелестели чипсами?
В ресторане нас ждет уже другая линейка сопутствующих впечатлений: встреча, ожидание меню, подача блюд, расторопность официанта и его манера обслуживания.
Общее
Умер Фредерик Брукс, отец 8-битного байта, автор "Мифического человеко-месяца", "Design of Design" и "Серебряной пули не существует".
Java, язык и платформа
SlashData провели опрос по состоянию экосистемы разработки и по нему видно, что использование Java выросло со времен 2020 года процентов на 10.
Новые JEP для Java 20:
Продолжаю серию постов про свои клубничные приключения. В этом хочу рассказать, как дорабатывал систему выращивания клубники, с какими проблемами столкнулся, каких результатов достиг и почему решил остановить проект «Коробка 2.0».
Меня зовут Андрей Вербицкий и я столкнулся с тем, что мое знакомство с RabbitMQ, а в частности его запуск на локальной машине и отправка сообщений в очередь с помощью приложения на Spring Boot, вылилась в несколько дней поисков информации о том, как это вообще работает, какие есть сущности и как в итоге переслать это сообщение. Я решил собрать все это в одном месте и сделать из этого практическое руководство, которое поможет из ничего получить рабочий прототип и понять как это работает. Эта статья ориентированная на новичков, которые только хотят познакомиться с RabbitMQ. Целью я поставил максимально простыми словами и по шагам рассказать, как быстро и легко поднять все окружение локально, отправить и получить сообщения через очередь.
Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!
При работе с инструментом важно знать теоретические основы. Во-первых, вам будет значительно проще искать ответы на вопросы в Google и понимать официальную документацию. Во-вторых, при обращении в профильные чаты вы будете называть вещи своими именами, что позволит быстрее получить ответ (или вообще получить его: если ваши слова и термины будут непонятны другим, вряд ли они смогут ответить вопрос).
Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект, который поможет понять терминологию и базовые сущности RabbitMQ.
Все, что смотрит в бесконечную даль Интернета, находится в той или иной степени под угрозой атаки вездесущими ботами, хакерами, школьниками и прочими темными сущностями глобальной сети. Это не в последнюю очередь касается мощностей арендных серверов (выделенных или VPS/VDS). Провайдер может обеспечивать базовый функционал защиты от атак на свою инфраструктуру, но то, что юзер творит со своей машиной, провайдера абсолютно не касается. Разве что за доп. плату он может добавить некоторые настройки к VPS, мониторить и фильтровать трафик, поступающий с определенной интенсивностью. Поэтому хочешь не хочешь, а приходится задуматься об обеспечении безопасности своего сервиса вот этими вот маленькими ручками, желательно с минимальными временными и материальными издержками.
Под катом рассмотрим несколько простых настроек, которые сведут к минимуму угрозу для вашего VPS, а в конце статьи рассмотрим пару более сложных, но эффективных техник защиты. Примеры команд приведены для ОС Ubuntu.
Повтор (retry) операции является старейшим механизмом обеспечения надежности программного обеспечения. Мы используем повторы при выполнении HTTP запросов, запросов к базам данных, отсылке электронной почты и проч. и проч.
Hibernate 6 был выпущен некоторое время назад, и я вижу, как все больше и больше команд мигрируют свои уровни персистентности или, по крайней мере, готовятся к миграции. Как это часто бывает, объем работы, необходимой для перехода на Hibernate 6, зависит от качества вашего кода и версии Hibernate, которую вы используете в настоящее время.
Для большинства приложений, использующих Hibernate 5, миграция будет относительно быстрой и простой. Но вам придется исправить и обновить некоторые вещи, если вы все еще используете более старую версию Hibernate или некоторые функции, устаревшие в Hibernate 5.
В этой статье я расскажу вам о самых важных шагах по подготовке вашего приложения к миграции и о том, что необходимо сделать при миграции вашего приложения.
Меня зовут Наталья Кобякова, я Product owner и техлид клана аналитиков в Ak Bars Digital. В этой статье я расскажу, почему для проектирования функциональности наших продуктов вместо стандартных ТЗ мы используем методологию User Story Mapping и как это помогает нам вести разработку быстро и качественно.
Это была самая первая встреча с командой заказчика на проекте, которым я руководил. Мы должны были провести модернизацию инфраструктуры в крупном банке. Один из участников встречи, назовем его Миша, возглавлявший у заказчика поддержку крупной ИТ-системы, начал набрасывать. Сначала проблемы с предыдущего проекта. Потом Мишу понесло, и досталось прошлой команде («криворукие умники»), архитекторам как таковым («да что эти дебилы понимают в том, что проектируют»). Его ворчание перебросилось на «тупые процессы» и «отстойный менеджмент». Это не было энергичное возмущение, скорее монотонное гудение, что «всё не так». Так я понял, что у нас в команде человек «Всё — г..но». А дальше предстояло разобраться с тем, как нейтрализовать Мишу, чтобы он не портил атмосферу в команде. Или даже обратить его суперсилу на пользу делу.
Как разработчики или тестировщики, мы часто сталкиваемся с необходимостью тестирования наших систем. В этом процессе, будь то модульное тестирование, интеграционное тестирование или любая другая форма тестирования, данные часто являются ведущим и решающим фактором.
Но получить доступ к хорошим тестовым данным не всегда просто. Иногда данные являются весьма конфиденциальными, например, медицинские или финансовые данные. В других случаях данных недостаточно (например, при попытке нагрузочного тестирования), а иногда искомые данные трудно найти. Для случаев, подобных описанному выше, есть решение называемое Datafaker.
Datafaker — это библиотека для JVM, предназначенная для генерации фиктивных данных, похожих на производственные данные.
Эти данные могут быть сгенерированы как часть ваших модульных тестов или могут быть сгенерированы в виде внешних файлов, таких как файлы CSV или JSON, чтобы они могли служить в качестве входных данных для других систем.
В этой статье вы узнаете, что такое Datafaker, что он может делать и как его можно эффективно использовать для улучшения стратегии тестирования.
Всем привет! Сегодня мы расскажем о полезной возможности СУБД Ред База Данных - создании внешних подпрограмм, то есть процедур, функций и триггеров на языке Java. Например, язык PSQL не позволяет работать с объектами файловой системы или сети, а Java запросто решает такие задачи и существенно расширяет возможности встроенного языка.
Привет, Хабр! В своей первой статье я бы хотел поделиться опытом в развертывании Spring Boot приложения. Но для начала небольшое отступление, которое должно ответить на вопросы зачем и почему.
Недавно я столкнулся с задачей разработать Telegram бота. Казалось бы, что тут сложного? Ну раз надо, то разрабатывай, где тут могут быть сложности? Но вот беда, ранее я не сталкивался с задачей развертывания проекта, тем более было много вопросов касаемо получения SSL сертификата так как Telegram API работает только с HTTPS протоколом. Увы после долгих поисков я так и не нашел статьи, которая ответила бы на все вопросы, поэтому процесс деплоя затянулся из-за того, что пришлось собирать весь материал по кусочкам. Теперь, когда у меня получилось разобраться с этой проблемой, я бы хотел вам рассказать как это сделать, чтобы сэкономить вам время и бонусом 2000 рублей за SSL сертификат.
Реактивные паттерны программирования становятся всё более востребованы при реализации высоконагруженных сервисов. Вот уже и в Spring законсервировали RestTemplate. В тоже время, реактивные фреймворки предоставляют инструменты, позволяющие с минимальными затратами на кодирование использовать механизмы асинхронности и многопоточности.
В качестве примера, предлагаю рассмотреть реализацию сервис индексации данных в ElasticSearch. Данные хранятся в MongoDB, ключевые атрибуты которых синхронизируются с ElasticSearch (функционально похоже на Logstash). В проекте используется стек: Java/Spring Boot/Reactor/WebFlux/WebClient/RabbitMQ/MongoDB. На выбор RabbitMQ и MongoDB повлияло, в том числе, наличие реактивных драйверов.