Обновить
28
3.4

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

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

Как я проходил собеседование на Senior Java

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели17K

Всем привет!

Сейчас я работаю Senior Java Developer в банке, и за последние годы мне довелось пройти немало собеседований — разных по уровню, стилю и степени жесткости. Сегодня я хочу рассказать об одном из них и поделиться опытом, который может быть полезен тем, кто тоже готовится к новым вызовам.

Читать далее

Паттерн Transactional Outbox: от теории до продакшена

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.8K

Transactional Outbox часто подаётся как простой рецепт: записали событие в отдельную таблицу, фоновый воркер разберётся. В реальности именно этот «временный костыль» неожиданно превращается во вторую очередь со своей конкуренцией за блокировки, дубликатами, нарушенным порядком и тихо растущими таблицами.

В статье разберемся, что именно начинает ломаться в outbox-паттерне под нагрузкой, как выбирать и блокировать события в разных СУБД, почему ретранслятор стоит отделить от API и какие гарантии доставки на самом деле получаются. А ещё — почему консюмеры должны быть идемпотентными, как следить за внутренней очередью в базе и не узнавать о проблемах уже после инцидента.

Разобрать outbox

Встречаем Spring AI Agents и Spring AI Bench

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7K

Java-разработчикам теперь доступен мощный инструментарий для работы с агентными ИИ-системами: Spring AI представила проекты Agents и Bench. В новом переводе от команды Spring АйО рассмотрим, как первый обеспечивает удобную абстракцию для работы с CLI ИИ-агентами, а второй — предлагает реалистичные бенчмарки для оценки их эффективности в задачах enterprise-разработки.

Читать далее

Реактивное программирование со Spring, часть 2 Project Reactor

Время на прочтение15 мин
Охват и читатели114K

Это вторая часть серии заметок о реактивном программировании, в которой представлен обзор Project Reactor, реактивной библиотеки, основанной на спецификации Reactive Streams.

Читать далее

Внутренний мир: Java NIO

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели24K

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

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

Неблокируемый ввод/вывод был реализован в пакете java.nio Java SE 1.4. К сожалению, в ежедневной практике нечасто приходится иметь дело с низкоуровневым I/O, и намного чаще при необходимости используются стримы из java.io. В этой статье будет описано содержание Java NIO, несколько примеров и принцип работы неблокируемого I/O.

Читать далее

Как решать LeetCode? Легко! Нужно просто…

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели34K

Просто знать 15 важных паттернов, которые помогут облегчить тернистый путь в решении алгоритмических задач. Про эти паттерны мы и расскажем в этой статье.

На сегодняшний день алгоритмические задачи встречаются не только в FAANG. Многие компании и на отечественном рынке всё чаще вводят дополнительный алгоритмический этап на собеседовании – и знание алгоритмов становится отличным «плюсиком» не только при трудоустройстве, но и в решении повседневных задач. Взглянем подробнее на эти паттерны.

Подробнее о паттернах

Полное руководство по HTTP-кэшированию. Часть 2

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели11K

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

В основе кэширования лежит сокращение лишней работы. Каждый раз, когда браузер, CDN или прокси обращается к серверу за ресурсом, который не изменился, впустую тратятся время и трафик. Когда сервер заново формирует или повторно отдает идентичный контент, это лишь добавляет нагрузки и увеличивает затраты. А при пиковом трафике — например, в "черную пятницу", во время вирусной публикации или DDoS-атаки — такие ошибки стремительно накапливаются и приводят к сбоям всей системы.

Читать далее

Русские придумали гениальный способ обманывать игровые автоматы, от которого казино не могут защититься

Время на прочтение7 мин
Охват и читатели337K
image

В начале июля 2014 года бухгалтера из казино Люмьер Плейс [Lumiere Place] в Сент-Луисе обнаружили, что несколько их игровых автоматов сошли с ума на пару дней. Программное обеспечение, одобренное правительством, даёт автоматам фиксированную фору математическими методами, так, чтобы казино были уверены в том, сколько они заработают в долгосрочной перспективе – допустим, 7,129 центов на каждом долларе. Но 2 и 3 июля несколько автоматов из казино Люмьер выдали гораздо больше денег, чем приняли, несмотря на отсутствие каких-то особенных джекпотов. Такое отклонение на жаргоне индустрии называется отрицательным удержанием. И поскольку ПО не подвержено приступам безумия, единственным объяснением было то, что кто-то жульничает.

Охрана казино подняла архивы видеонаблюдения и обнаружила виновника, тёмноволосого мужчину 30 с чем-то лет в рубашке-поло на молнии с коричневой прямоугольной сумкой. В отличие от большинства мошенников, он вроде бы никак не воздействовал на выбранные им автоматы. Он выбирал только старые модели, изготовленные австралийской компанией Aristocrat Leisure. Он просто играл, нажимая на кнопки игр типа Star Drifter или Pelican Pete, украдкой держа при этом свой iPhone ближе к экрану.
Читать дальше →

Akka, акторы и реактивное программирование

Время на прочтение10 мин
Охват и читатели72K
Здравствуйте, уважаемые читатели.

Сегодня мы хотели поговорить с вами на тему «все новое — это хорошо забытое старое» и вспомнить об акторах, описанных Карлом Хьюиттом еще в начале 70-х. А все дело в том, что недавно вышла вот такая книга:



Она довольно объемная — в переводе должна получиться более 500 страниц.

Несмотря на подчеркнутую элитарность книги (Akka и Scala), ее автор Вон Вернон (крупнейший специалист по DDD) уверен, что архитектурные паттерны, описанные в этой работе, вполне реализуемы на .NET и C#, о чем рассказывает в приложении. Мы же размещаем под катом перевод статьи, автор которой допускает перенос акторной парадигмы на язык Java. Поскольку рейтинг книги на Amazon стабильно высок, а тема универсальна, просим поделиться вашими мнениями как о ней, так и об акторной архитектуре в принципе.
Читать дальше →

Хватит бороться с ошибками CORS: разберемся, как они работают раз и навсегда

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели11K

Вы когда-нибудь видели в консоли сообщение вроде: «Access to fetch at '…' from origin '…' has been blocked by CORS policy»? Это как в том фильме: «Суслика видишь? — А он есть». CORS не бросается в глаза, пока все работает, но в нужный момент пресекает недопустимые действия. Например, чтение ответа на кросс-запрос без разрешения сервера.

Меня зовут Баир, я разработчик в команде fuse8. В этой статье я отвечу на вопросы о том, зачем была создана CORS политика, как она устроена под капотом, почему простого действия типа «поставить заголовок на бэке» может быть мало, и какие безопасные паттерны стоит выбирать во фронтенде.

Читать далее

Я купил игровую консоль и написал для неё… BIOS

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели35K

Осторожно: статья написана максимально простым языком. Так что если вы гик, но не умеете программировать — вам всё равно будет интересно!

Недавно я наткнулся на DIY-игровую консоль за 1.500 рублей — Waveshare GamePi13. Когда гаджет приехал ко мне, я запустил примеры игр от производителя... и оторопел от 5 FPS в Pong — это ж как плохо нужно код писать!

Не желая мириться с этим, я открыл схему устройства, даташит на RP2040 и принялся писать свой собственный BIOS. Если вам интересно узнать, как работают DIY-консоли «изнутри», можно ли запускать внешние программы на микроконтроллерах из RAM, как реализованы различные подсистемы BIOS, а в конце даже написать «Змейку» - добро пожаловать под кат!

Читать далее

Cybiko: социальный КПК с Mesh-сетью из 2000 года

Время на прочтение10 мин
Охват и читатели19K

Мы давно с вами привыкли к соц. сетям, мессенджерам и сайтам знакомств. За долгие годы пребывания в сети, я видел взлёт и падение ВК, закрытие ICQ и появление Telegram, переход знакомств из реальной жизни — в Badoo и, наконец, появление AI-контента.

Сейчас эти ленты с мемами, каналы, шортсы, свайпы — всё это кажется такой обыденностью, будто это существовало всегда. Однако в конце 90-х, общение и потребление контента выглядели совсем не так и главный тому пример — уникальный КПК для общения Cybiko, способный создавать беспроводную локальную сеть в радиусе 300м. Что за гаджет разработала компания Давида Яна и что у него внутри — читайте в сегодняшней статье!

Читать далее

Попытка одомашнить лису. Одомашнить получилось

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели72K

Приручить это не одомашнить. Одомашнить, это когда зверь становится минимально агрессивным всю жизнь и рождаются от него такие же не агрессивные животные. Его как минимум можно гонять из пункта А в пункт Б, без ружья и вил. Скажем коровы не совсем и ручные, особенно постоянно пасущиеся, но одомашненные. Например пасти и гонять собачками стадо зебр или гну просто невозможно. Тоже самое лошади — они часто не ручные, но одомашненные. Если просто взять щенка волка или лисы из леса, то первый месяц он может быть даже добренький, а потом дикость ( которая есть выражение регуляции генов ) полезет буквально из пасти, он вас грызть начнёт, выть, биться об стенки, в общем вы поймёте что он не приемлем для жизни среди людей. Иногда дикие волчата до полового созревания туда‑сюда, приемлемы. Но после всё — суши воду, расплетай канаты, зверь есть зверь и может даже тебя сожрать.

Эксперимент с одомашниванием лис мягко говоря известный, но не все факты на широкую аудиторию вышли. Современные генетики всё таки нарыли способы как одновременно получать красивую, пушистую лису и не злобную. У Беляева с 1959 года получилось сделать лис добрыми, но тут же просело качество меха, а заодно он не смог даже к 1985 гарантированно получать по 2 сезона размножения от лис, хотя были планы выйти на уровень размножения собак. Дикие лисы размножаются строго 1 раз в год, включая всех лис содержащихся на фермах. Современная генетика за три десятка лет с 1980х, баг почти исправила. Почти, не не все баги и не полностью.

У Дмитрия Беляева в 1950-х был со всех сторон СССР, а значит отпадал вопрос в той же звероферме. В СССР это дело было связано с колхозами и значит не реагировало на понятие — выгодно‑не выгодно. Сегодня ему б никто не выдал такие ресурсы. А тогда ферма в Эстонии — 60 гектаров, 1500 чернобурок и вот готов первый опыт отбора лис. Важность меховой продукции была такой, что в Москве существовал отдельный — Московский пушно‑меховой институт, 1929 — 1954. Мех тех же чернобурок шёл на экспорт, это валюта. В общем на этой звероферме Беляев познакомился с будущими коллегами по одомашниванию, присмотрелся к проблемам, приметил нужный способ проверки животных, которых можно размножать.

Читать далее

Сквозь горизонт: фильм, обречённый на провал

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели50K

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

У фильма не было шансов на успех в прокате: он вышел в неудачное время и был совершенно неправильно прорекламирован. А в ту эпоху официальная реклама была едва ли не единственным источником информации о картинах. «Сквозь горизонт» обогнал своё время — это внежанровое произведение, настолько мрачное, жестокое и пессимистичное, что не могло заинтересовать рядового зрителя. А «нерядовой» зритель даже не знал о его существовании.

Таким образом, «Сквозь горизонт» стал одной из самых серьёзных маркетинговых ошибок Paramount Pictures. Давайте начнём рассказ об этом фильме именно с этой провальной кампании, а затем перейдём к его содержанию, философско-религиозным подтекстам, внежанровости и влиянию на кинематограф.

«Туда, куда мы летим, глаза не нужны»

Настраиваем приватный Docker-репозиторий

Время на прочтение3 мин
Охват и читатели102K

Docker одна из горячих тем в разработке. Большинство новых проектов строится именно на Docker. Как минимум, он отлично зарекомендовал себя для распространения ПО, например, наша система поиска по документам Ambar устанавливается с помощью docker-compose.


В начале работы над Ambar мы использовали публичный docker-репозиторий, но с ростом проекта и появлением enterprise версии мы задумались над созданием собственного приватного репозитория. В данной статье мы поделимся своим опытом развертывания селф-хостед репозитория: пошагово опишем весь процесс, попытаемся обойти все подводные камни.

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

Паттерны ООП c примерами на Java: порождающие шаблоны

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели14K

Привет! Меня зовут Бромбин Андрей. В этой статье мы рассмотрим порождающие паттерны ООП. Обсудим, что такое хороший дизайн и почему не стоит начинать всё с нуля каждый раз, когда перед нами новая задача. Также разберёмся, где эти паттерны действительно помогают и какую пользу несут — всё это с наглядными примерами на Java, приближёнными к реальным.

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

Шаблонизироваться

Освоение Unicode в Java: создаём на Quarkus REST API, готовый к глобальной аудитории

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели5.3K

В этом руководстве мы разберем непонятности вокруг Unicode и узнаем, как строить надёжные, интернациональные Java-приложения. Разберём теорию, укажем на подводные камни, а затем соберём «Глобальный сервис приветствий» на Quarkus, который переживёт весь хаос реального текста.

К концу статьи вы разберётесь с тем,

– как устроен Unicode и как Java на самом деле хранит текст;
– почему длина строки и перебор символов сложнее, чем кажется;
– как нормализация предотвращает неприятные несоответствия;
– как настроить REST-сервис и базу данных для безопасной работы с Unicode.

Unicode без боли

Контейнеры для взрослых (Часть 01): Практический гид по терминологии

Время на прочтение16 мин
Охват и читатели29K
Вы можете спросить, зачем разбираться с терминологией, если концепция контейнеров выглядит вполне простой и понятной? Однако, довольно часто неверное использование терминов создает препятствия на пути к освоению контейнеров. Например, люди часто считают, что термины «контейнеры» и «образы» взаимозаменяемы, хотя на самом деле между ними есть важные концептуальные различия. Другой пример: в мире контейнеров «репозиторий» означает вовсе не то, что вы думаете. Кроме того, контейнерные технологии – это гораздо больше, чем только docker.



Так что, не владея терминологией, будет сложно понять, чем docker отличается от CRI-O, rkt или lxc/lxd; либо оценить роль Open Container Initiative в деле стандартизации контейнерных технологий.
Читать дальше: Практический гид по контейнерной терминологии

Крипта без костылей, профилирование без боли, многопоточность без хаоса: Axiom JDK 25 уже в OpenIDE

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.2K

Синхронно с Oracle мы выпустили Axiom JDK Pro 25 — новый долгосрочный релиз российской Java-платформы. Это LTS-версия с поддержкой до 2034 года — на год дольше, чем Oracle JDK 25. Для бизнеса это гарантия, что инфраструктура и критичные сервисы будут жить спокойно много лет. Для разработчиков — шанс сразу прыгнуть в JDK 25 и работать с новыми инструментами без страха, что их скоро «снимут с поддержки».

Под капотом — больше 2800 изменений в ядре. Мы прогоняем каждую сборку через 160 тысяч тестов на десятках аппаратных конфигураций, так что релиз выходит не «как есть», а уже готовым к российским сценариям. И важно — Axiom JDK 25 доступен в OpenIDE.

Итак, что внутри:

Читать далее

Путеводитель по больничным

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.5K

Мы ни на что не намекаем, ведь в этом вопросе мы солидарны с Минздравом: переносить болезнь на ногах – вредно для здоровья. Как вашего, так и  окружающих вас коллег. Тем более, если вы работаете по трудовому договору, ваша нетрудоспособность оплачивается, а значит никаких преград для безопасного выздоровления не существует. 

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

Привет, хабр! Я Оксана, эксперт по расчетам с персоналом в IT-компании SimbirSoft, в феврале я написала статью о том, как получить налоговый вычет. И теперь решила помочь с ещё одной близкой всем темой. Понимаю, что материалов о больничных много, но, как показывает практика, иногда вопросов больше, чем ответов. Это я и постараюсь исправить. И раз уж я назвала свою статью «путеводитель», то просто обязана расписать всю схему взаимодействия со всеми участниками процесса вашей нетрудоспособности.

Итак, вы заболели….

Узнать подробности и не болеть🤞

Информация

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