All streams
Search
Write a publication
Pull to refresh
1
@Redemaxread⁠-⁠only

User

Send message

Полезные и неизвестные библиотеки Java

Level of difficultyEasy
Reading time14 min
Views12K

Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java. Это вторая статья из серии «Полезное и неизвестное». Предыдущая описывала несколько привлекательных, но малоизвестных возможностей Java. Подробнее об этом можно прочитать здесь.

Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test, то одновременно мы включаем такие библиотеки, как mockito, junit-jupiter или hamcrest. Конечно, это известные библиотеки для сообщества.

На самом деле существует множество различных Java‑библиотек. Обычно мне не нужно использовать многие из них (или даже они мне не нужны) при работе с такими фреймворками, как Spring Boot или Quarkus.

Однако есть несколько очень интересных библиотек, которые могут пригодиться везде. Возможно, вы не слышали ни об одной из них. Я собираюсь представить 5 моих любимых «полезных и неизвестных» Java‑библиотек. Давай начнем!

Читать далее

Библиотека «Room» для начинающего Android-разработчика

Reading time9 min
Views53K

Здравствуй, дорогой читатель. Каждый Android-разработчик сталкивался (или столкнётся во время своей профессиональной карьеры) с задачей, в которой необходимо хранить большое количество изменяемых данных. В данной статье будет разобрана библиотека от Google - Room.

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

Статья предназначена для новичков, не знакомых с данной библиотекой, но, желательно, имеющих базовые знаниях о SQLite, Kotlin Coroutines, Kotlin Flow, MVVM.

Читать далее

Java 20: огромные разреженные сегменты памяти

Reading time4 min
Views4.1K

Знаете ли вы, что можно выделять сегменты памяти, которые больше, чем физический размер оперативной памяти вашего компьютера, и даже больше, чем размер всей вашей файловой системы? Прочтите эту статью и узнайте, как использовать сопоставленные (mapped) сегменты памяти, которые могут быть или не быть «разреженными», и как выделить 64 терабайта разреженных данных на ноутбуке.

Читать далее

9 продуктов для создания дашбордов

Reading time8 min
Views51K

Семь Open Source и два low-code-продукта для визуализации BI-аналитики от AFFINAGE

Для решение клиентских задач мы постоянно ищем способы сделать лучше. И очень часто сделать лучше значит сменить продукт. Поэтому мы постоянно анализируем рынок различных nocode-решений. Мы решили поделиться накопленными знаниями о такой важной задаче как построение аналитических дашбордов.

Читать далее

Почему KRaft заменил ZooKeeper

Reading time12 min
Views25K

Зачем менять ZooKeeper на встроенный лог Apache Kafka® для управления метаданными? В этой статье вы узнаете, зачем нужна была эта замена, какие преимущества даёт протокол консенсуса на основе кворума, вроде Raft, и как работает контроллер кворума поверх протоколов KRaft.

Читать далее

Глубокое погружение в Java Memory Model

Reading time53 min
Views211K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

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

Перспективен ли российский космос

Reading time11 min
Views30K

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

Произошли значительные улучшения в администрировании такого неповоротливого хозяйства как доставшаяся нам в наследство советская космонавтика, успевшая к тому же побывать космонавтикой 90-х. Да, я про коррупцию тоже. Она весьма заметно снизилась. Как следствие — снижение аварийности и прочие достижения. Удалось спасти от разложения ключевые компоненты отрасли (я про космодром Восточный, центр Хруничева и пр). А далее перечислим: Ангара, Наука, Союз-2, клиновоздушный двигатель, работы по Пирсу, Нуклону, Орлу, РОСС. Как это всё сейчас воплощается — об этом ниже.

Читать далее

Golang-дайджест № 15 (1 – 30 марта  2022)

Reading time4 min
Views4.9K

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены версии Go 1.18, 1.17.8, 1.16.15 взлом типов sum с помощью generics, используйте графический процессор Mac M1 с Go, набор инструментов для обфускации сборок Go, библиотека в стиле Lodash для Go 1.18

Приятного чтения!

Читать далее

«Страна-бензоколонка» и другие распространённые предубеждения о российской экономике

Reading time15 min
Views22K

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

Читать далее

Минутка DevOps-а для Java-разработчиков

Reading time10 min
Views13K

В этой статье мы поверхностно затронем сборку Java-приложений в GitLab CI, но сделаем так, чтобы в вашем merge request-е были отчёты о пройденных юнит-тестах и code coverage. А ещё мы соберём приложение при помощи образа с JDK, который тоже соберём сами.

На КДПВ шутка — а в тексте всё серьёзно.

Читать далее

Golang-дайджест № 5 (1 – 31 мая  2021)

Reading time4 min
Views4.7K

Свежая подборка новостей и материалов

Интересное в этом выпуске

выпущены версии Go 1.16.4 и 1.15.12, эмулятор Atari VCS, эмулятор Game Boy, фантастическая библиотека 2D-игр

Приятного чтения!

Читать далее

Избавляемся от мусора в Java

Reading time6 min
Views82K

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

Кто занимается этой очисткой? Как и когда очищается память? Как выглядит структура памяти? Давайте разберем с этим подробнее.

Читать далее

Go: распространенные антипаттерны

Reading time7 min
Views14K
Программирование — это искусство. Мастера своего дела, создающие потрясающие работы, могут ими гордиться. То же самое относится и к программистам, которые пишут код. Чтобы достичь вершин мастерства, творцы постоянно ищут новые подходы к работе и новые инструменты.

Так поступают и разработчики, которые, не прекращая профессионально развиваться, постоянно стремятся найти ответ на самый важный свой вопрос: «Как писать хороший код?». Вот что говорит об этом Фредерик Брукс в книге «Мифический человеко-месяц, или Как создаются программные системы»:

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


Как писать хороший код (источник)

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

Собственный провайдер пользователей для Keycloak

Reading time9 min
Views8.4K

Интегрируя Keycloak в уже существующую систему, высока вероятность столкнуться с необходимостью во время аутентификации загружать пользователей из древней базы данных, где информация о них может храниться в довольно причудливом виде. Такая задача решается созданием собственного провайдера пользователей (User Federation Provider в терминологии Keycloak). Ниже будет представлено краткое руководство по написанию такого провайдера.

Читать далее

I2P over Yggdrasil: анонимность в меш-сетях

Reading time5 min
Views21K

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

Yggdrasil – один из немногих работоспособных протоколов меш-сетей. Основная концепция заключатся в автоматической маршрутизации во внутренней IPv6 подсети (200::/7) и абсолютной масштабируемости. Yggdrasil является полностью одноранговой сетью: не существует каких-либо «мастер-узлов», которым делегируется какая-то глобальная ответственность.

С версии 2.36.0 i2pd имеет несколько новых конфигурационных параметров, главный из которых meshnets.yggdrasil = true Этот параметр не зависит от конфигурации IPv4 и IPv6. В частности, реальные сетевые интерфейсы могут быть отключены. В таком случае I2P-роутер будет работать в режиме Yggdrasil-Only.

Подробнее об этом

Go: Хороший, плохой, злой

Reading time26 min
Views65K

У Go есть некоторые замечательные свойства, которым посвящён раздел «Хороший». Но когда речь заходит о применении этого языка не для создания API или сетевых серверов (для чего он и был разработан), а для реализации бизнес-логики, то я считаю Gо слишком неуклюжим и неудобным. Хотя даже в рамках сетевого программирования найдётся немало подводных камней как в архитектуре языка, так и в реализации, что делает Go опасным, несмотря на его кажущуюся простоту.

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

Job — шаблон проектирования для новичков и опытных Go программистов

Reading time4 min
Views13K

Я начал программировать на Go после достаточно продолжительного периода программирования на PHP. Полагаю судя по последним тенденциям, мой случай далеко не единичный. Go в целом набирает популярность среди Web разработчиков.

Читать далее

Telegram на go, часть 2: бинарный протокол

Reading time6 min
Views6.6K

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


Клиент на Go продолжает развиваться, а мы вернемся в прошлое и вспомним, как писался для него сериализатор и десериализатор протокола.

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

JPoint и Joker: какие доклады запомнились мне больше всего

Reading time5 min
Views5.5K

Ушедший 2020 год, как мы все знаем, выдался тихим и спокойным, даже вспомнить нечего. Дом-работа, тихие будни, уютные посиделки — ничего интересного. Разбавить скуку нам помогли онлайн-конференции, и я как джавист поучаствовал в JPoint и Joker.


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


Примечание от автора: хотя пост написан по предложению JUG Ru Group, я пишу только о том, что интересно мне самому, и моё мнение может не совпадать с мнением организаторов.


Доклады по теме Performance


Начну я, пожалуй, с доклада Свена Рупперта «Hidden pearls for high-performance-persistence in Java».


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

Information

Rating
Does not participate
Registered
Activity