Почему Apache Kafka стала стандартом и основой архитектуры микросервисов. Как Kafka не только заменяет другое промежуточное ПО, но и позволяет создавать сами микросервисы с помощью DDD и нативных API Kafka: Kafka Streams, ksqlDB и Kafka Connect.
Андрей Шишкин @compilator
Senior software engineer
Как подружить Java и C++. Часть первая
5 min
100KЗдравствуйте.
Как вы, наверное, уже догадались, речь пойдет о JNI. Для тех, кто не знает что это, объясняю: JNI (или java native interface) — это такая штука, которая позволяет делать вызовы нативного кода из java машины и наоборот.
Зачем это может потребоваться? Есть несколько причин: необходимость использовать код, который уже написан для нативной платформы, необходимость реализовать что-то такое, что невозможно сделать с помощью одной JVM (например, работа с какими-нибудь специфическими железками), ну и ускорение выполнения критических кусков кода (правда, это весьма спорный момент).
Как вы, наверное, уже догадались, речь пойдет о JNI. Для тех, кто не знает что это, объясняю: JNI (или java native interface) — это такая штука, которая позволяет делать вызовы нативного кода из java машины и наоборот.
Зачем это может потребоваться? Есть несколько причин: необходимость использовать код, который уже написан для нативной платформы, необходимость реализовать что-то такое, что невозможно сделать с помощью одной JVM (например, работа с какими-нибудь специфическими железками), ну и ускорение выполнения критических кусков кода (правда, это весьма спорный момент).
+37
Коллекции в Java: о чём многие забывают
6 min
141KTutorial
Из опыта code-review и ответов на StackOverflow набралось немало моментов, касающихся Java Collections API, которые мне казались очевидными, но другие разработчики о них почему-то не знали или знали, но не чувствовали уверенности их применять. В этой статье я собираю в общую кучу всё, что накопилось.
Содержание:
- List.subList
- PriorityQueue
- EnumSet и EnumMap
- Set.add(E) и Set.remove(E) возвращают булево значение
- Map.put(K, V), Map.remove(K), List.set(idx, E), List.remove(idx) возвращают предыдущий элемент
- Map.keySet() и Map.values()
- Arrays.asList может быть ключом
- Collections.max
- LinkedList, Stack, Vector, Hashtable
+56
Software versioning
10 min
57KTranslation
Методология изменения версий продукта программного обеспечения
Software versioning — это процесс создания уникальных имен или номеров для различных версий продуктов программного обеспечения.
При имеющейся категории номера версии (главная, второстепенная), номера обычно выставляются в возрастающем порядке и соответствуют новым разработкам в программном обеспечении. На начальном уровне отслеживанием постепенно появляющихся версий электронной информации занимается система управления версиями, позволяющая хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определяя, кто и когда сделал то или иное изменение и многое другое. Вместе с тем для отслеживания изменений программного обеспечения было создано большое количество схем присвоения номеров версиям.
+61
Рабочий стол в облаке
9 min
35K В каком случае необходимо отдать предпочтение тому или иному решению для организации «виртуальных рабочих столов» и как найти условия оптимальные для их работы?
Разработчики средств виртуализации уже не один год продвигают различные решения для рабочих станций, однако, в отличие от виртуализации серверов, широкого распространения в массовом сегменте они не получили.
+9
Мастер-класс Бориса Вольфсона. Основы Agile
25 min
108KTutorial
Этот пост написан по мотивам мастер-класса Бориса Вольфсона (директора по развитию HeadHunter), посвященного (сюрприз!) основам Agile. Материал будет полезен всем, кто либо совсем не знаком с данной методологией разработки сложного ПО, либо имеет о ней смутное представление.
+31
Netcracker приветствует Хабрахабр
1 min
43KДавай знакомиться! Мы – Netcracker.
У нас:
• Более 6 тысяч программистов, инженеров, аналитиков, тестировщиков, прочих айтишников и не только.
• Сотня крупных и очень крупных внедрений в таких компаниях как AT&T, France Telecom, Deutsche Telecom, DHL.
• Портфолио из нескольких десятков продуктов, начиная от eCommerce порталов для абонентов и CRM систем для сотрудников Call-центров, заканчивая мобильными приложениями для сетевых инженеров, в полях разворачивающих сетевую инфраструктуру.
И тем не менее, о компании Netcracker и ее продуктах мало кто знает.
+10
Функциональное программирование для всех
33 min
351KTranslation
Доброго времени суток. Это статья — перевод заинтересовавшего меня поста в блоге аспиранта Университета штата Нью-Йорк в Стоуни-Брук. Статья в доступной форме описывает основные концепции функционального программирования, их преимущества и недостатки. Думаю она будет полезна широкому кругу читателей, которые сомневаются, нужно ли им углубляться в мир функционального программирования или нет. Пожелания, предложения и замечания по переводу и терминологии принимаются по личной почте.
Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.
UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
+174
Information
- Rating
- Does not participate
- Location
- Саратов, Саратовская обл., Россия
- Date of birth
- Registered
- Activity