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

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

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

constexpr Game of Life

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

В C++ уже больше 10 лет существует constexpr, который позволяет программисту ушло возложить часть вычислений на компилятор. В свое время это взорвало мне мозг, ведь компилятор может посчитать какие-то достаточно сложные вещи еще до запуска программы!

В какой-то момент я подумал: если компилятор сможет сам посчитать все за тебя, то зачем тогда тебе вообще рантайм? Что ты там будешь делать — ответ выводить что ли? Глупости какие-то. Это неспортивно.

На этом моменте и зародился мой челлендж:

"Без рук" или "даже не думай запускать exe-файл"

Челлендж принят!

Пара тупых ответов про эволюцию

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


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

Проблема в том, что у него есть глаз. И другие сложные органы. А у тех же птиц есть крылья. И никакой жадный алгоритм не даёт понять, как можно тысячелетиями отращивать половинку крыла. Эта штука не просто не помогает, а откровенно мешает.

Крыло работает только тогда, когда целое. Половина крыла не даёт оторваться от земли.

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

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

Свои ответы я получил уже довольно поздно, но помню, как был рад их услышать. И наблюдая за идущим сейчас холиваром про теорию Дарвина, вижу много людей, которые задают те же самые вопросы.
Читать дальше →

Задача трёх тел (не китайская нефантастика)

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

Однажды, выполнив в Гугле запрос "Three body problem" ("Задача трёх тел"), я был просто поражен - первая страница результатов состояла только из ссылок на роман китайского писателя-фантаста Лю Цысиня с соответствующим названием, а также на телесериал, снятый по этому роману, т.е. ссылок на собственно задачу трёх тел не было вообще! Мне это показалось удивительным и несправедливым, поскольку сама по себе задача трёх тел тоже может выглядеть увлекательной в популярном изложении. В этой публикации я постарался привести некоторые доказательства этого утверждения.

Читать далее

Как положить приложение 21 запросом* к /actuator/health

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров1.9K
Уточнение для въедливых :)

* 21 и более параллельным запросом в определённых условиях :)


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

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

Вы точно хотите пойти программистом в gamedev?

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

Хочу вас огорчить, программисты не делают игры - их делают дизайнеры и арт. Можно уволить программиста и на его место придет другой и через условные месяц-два-полгода начнет закрывать таски не хуже. Если увольняется дизайнер, его монстр, пушка или контент повисает без хозяина и без "видения". Если её не перехватил сосед (а у соседа свой монстр), то в большинстве случаев его работа просто уходит в стол и монстра пишут заново на тех же ассетах и принципах, но заново.

Если увольняется арт-директор, который несет "видение" проекта, то проекту становится очень плохо, в большинстве случаев визуально он изменится до неузнаваемости, хотя ассеты могут быть те же самые. Программисты делают всё, кроме самой игры: рендер, звук, физику, сеть, AI, инверсную кинематику, поиск пути и т.д. Можем подискутировать в комментариях.

O, тепленькая пошла!

Рекрутинговый ад или как я в Канаде IT работу искал

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

Привет. Мне 32 года, идентифицирую себя как Middle Frontend Developer. У меня почти 7 лет опыта работы, из которых только три я считаю релевантными, где я работал с современными технологиями типа React, TypeScript, GraphQL и т.д. До этого работа заключалась в разработке сайтов с использованием JQuery.

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

Читать далее

Хитрые бактерии и антибиотики

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

Аптека в Африке, сейчас пациент получит одну таблетку доксициклина

Бактерии — мастера генетических рекомбинаций. У них очень короткий цикл жизни, большое потомство, миллиарды попыток на мутации и очень короткая петля обратной связи. Одного этого достаточно, чтобы если не забрутфорсить, то найти решение проблемы алгоритмами группы Монте-Карло.

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

Поэтому антибиотики уже через 15 минут после появления начали резко создавать эволюционное давление.

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

В общем, там есть пара суперинтересных историй про то, насколько бактерии хитрые и продуманные. Пора бы в этом разобраться. Сегодня мы это делаем с экспертом — Денисом Кузьминым, к.б.н., директором физтех-школы биологической и медицинской физики МФТИ.
Читать дальше →

Микросервисы в представлении среднего разработчика, и как всё на самом деле

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

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

Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.

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

погрузиться в микросервисы

Hibernate — проблема декартова произведения при запросах с пагинацией

Уровень сложностиСложный
Время на прочтение18 мин
Количество просмотров14K

Привет! Меня зовут Артём Гордиенко, я работаю Java/Kotlin-разработчиком в Росбанке и занимаюсь разработкой микросервисов, необходимых для внешнеэкономической деятельности интернет-клиент-банка юридических лиц. Реализация этого доклада стала возможной благодаря одному-единственному сообщению, обнаруженному в логах одного нового микросервиса. Как оказалось, причина сообщения серьезно влияет на производительность приложения. Мне это показалось довольно интересным, и захотелось поделиться информацией с другими разработчиками. 

Многие сталкиваются с реализацией вывода списочных данных с пагинацией из БД. В Spring Data и в самом Hibernate есть стандартные решения, которые позволяют достаточно просто решить эту задачу. Но у предлагаемых решений есть подводные камни, и со временем или даже сразу они могут серьезно повлиять на производительность. В худшем случае — и вовсе привести к падению приложения.

В этом посте, основанном на моем докладе с JPoint 2023, я расскажу, при использовании каких стандартных решений вы столкнетесь с падением производительности и какие есть эффективные варианты реализации запросов с пагинацией. Также обсудим баги в Hibernate 6, которые я обнаружил.

Читать далее

Zeebe и Camunda: сравниваем известные BPM-системы под высокими нагрузками

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

Всем привет! Меня зовут Николай Первухин, я Senior Java Developer в Райффайзенбанке. В последнее время я активно занимаюсь BPM-системами Camunda и Zeebe (основа Camunda-cloud). Если вы, как и я, с ходу не можете ответить на вопрос, кто быстрее — Camunda или Zeebe, насколько, и в каких случаях они могут тормозить, то добро пожаловать под кат.

Читать далее

Helidon 4 вышел, а никто и не заметил

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

Те, кто использует Helidon в проде, наверняка точно знают, зачем им это нужно. Что делать остальным? Основная задача хомячка — объяснить детям концепцию смерти. Кажется, точно так же основная задача Helidon для широких народных масс — посмотреть на самые новые фишки Java и понять, нужно вам это или нет. Посмотрим, что же произошло в версии 4.0.0...

Интересно. Читать далее

Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ

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

Для тестирования Java-приложений создано столько полезных инструментов, что в них немудрено запутаться. Вместе с тем с помощью каждого из них можно решить строго определенный круг прикладных задач. Меня зовут Константин Шибков, я старший Java-разработчик CDEK и программный директор курсов по Java в Skillbox. Сегодня расскажу о практике использования фреймворка для модульного тестирования JUnit 5, а также покажу на конкретных примерах, как проводятся стандартные юнит-тесты и параметризованные тесты. Вы сможете самостоятельно повторить их, воспользовавшись подготовленным репозиторием с готовыми примерами тестов на Java. 

Читать далее

Распределённые транзакции

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров52K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

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

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

Читать далее

Асинхронный API First

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

API-First — один из популярных подходов к проектированию серверных приложений. Для обеспечения этого подхода создано множество программных продуктов. Однако сложно найти продукт, который поможет реализовать этот подход для серверных приложений, использующих брокеры сообщений в качестве средства интеграции —  такие, как Apache Kafka, RabbitMQ, Apache ActiveMQ. Мы решили это исправить и представляем вам свое решение AxenAPI.

Читать далее

Аннотации и рефлексия в Java

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


Привет, уважаемые читатели Хабра!

Аннотации и рефлексия являются ключевыми концепциями в Java, предоставляя разработчикам мощные инструменты для создания более гибких, адаптивных и понятных приложений. Аннотации предоставляют способ добавить метаданные к классам, методам и полям, что позволяет компилятору и другим инструментам анализировать код более глубоко. Рефлексия, с другой стороны, позволяет программам анализировать и модифицировать свой собственный состав и поведение во время выполнения.
Читать дальше →

Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров28K

Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?

Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.

Читать далее

Микросервисы в банке: на чем их лучше писать? Java/Kotlin, а может Go?

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

В июле в офисе РСХБ-Интех (технологической дочки Россельхозбанка) состоялся бесплатный митап для Java-разработчиков — RSHB Backend Dev Meetup. Обсудили Kotlin, Go, маппинг и разные аспекты бэкэнд-разработки. В числе докладчиков выступал Иван Кочергин, руководитель центра собственной разработки РСХБ-Интех. Иван более 10 лет занимается разработкой на Java, последние три года — на Kotlin. В своем докладе он сравнил, на чем лучше писать микросервисы в банке: Java, Kotlin или Go. Делимся расшифровкой доклада. Запись всего митапа можно посмотреть на Rutube.

Читать далее

Разработка высоконагруженного игрового WebSocket сервера на Java, Netty с поддержкой BattleRoyale/Matchmaking

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

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

Читать далее

Garbage Collection и JVM

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

Привет, Хабровчане!

JVM работает как хорошо отлаженный механизм, автоматически распределяя и освобождая память. Это и есть суть Garbage Collection. Это процесс, который автоматически находит и удаляет объекты, которые больше не используются вашим приложением. Благодаря этому, разработчики могут сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.

Знание того, как работает GC и JVM, необходимо каждому Java-разработчику. Правильное управление ресурсами напрямую влияет на производительность и стабильность приложений.

Читать далее

CompletableFuture. Глубокое погружение

Уровень сложностиСложный
Время на прочтение20 мин
Количество просмотров44K

java.util.concurrent.CompletableFuture - класс не новый. Он предстал перед нами во всём своём величии в 2014-м году вместе с выпуском Java 8. Много лет с тех пор прошло, а проще он не стал.

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

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность