Pull to refresh
63
0.2
Send message

Создание компонента Apache Camel

Level of difficultyEasy
Reading time6 min
Views648

Приветствую, сообщество!

Меня зовут Александр, я java разработчик в компании БФТ. Тружусь я на проекте СМЭВ-адаптера, где мы занимаемся транзитивной обработкой сообщений. В нашу зону ответственности входит несколько микросервисов, которые обрабатывают очень много сообщений, почти ничего не пишут в БД, но часто обращаются в сторонние прикладные сервисы.

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

Хотелось эту логику как-то элегантно встроить в роут Camel, но существующие средства такой возможности не предоставляли.

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

Встречайте! Гайд по написанию собственного Camel-компонента!

Читать далее
Total votes 6: ↑5 and ↓1+6
Comments1

Регулярные выражения простыми словами. Часть 1

Level of difficultyEasy
Reading time7 min
Views9.8K

Разработчики делятся на два типа: тех, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой, и тех, кто все еще боится и всячески их избегает. Эта статья специально для вторых, чтобы им было проще стать первыми. Она либо поможет преодолеть «регекспофобию», либо усугубит ее. В любом случае, добро пожаловать под кат.
Читать дальше →
Total votes 82: ↑81 and ↓1+94
Comments26

Абсолютно все способы обхода блокировки Ютуб

Level of difficultyEasy
Reading time5 min
Views78K

В связи с этим решил собрать в 1 статью абсолютно все доступные способы ускорения YouTube, начиная от GoodByeDPI и подробными мануалами для Smart TV, Android и настройкой своего личного сервера

Читать далее
Total votes 58: ↑23 and ↓35-9
Comments57

far2l в Ubuntu 24.04 LTS готов для повседневного использования

Level of difficultyEasy
Reading time5 min
Views18K

Несколько дней назад вышло обновление, устраняющее последние шероховатости UX, и мы рады представить вам долгожданный полноценно работающий Far Manager в составе LTS-версии Ubuntu 24.04! В этой статье я расскажу, как получить максимум удовольствия от его использования. Поехали!

sudo apt update

sudo apt install far2l

Читать далее
Total votes 103: ↑103 and ↓0+125
Comments109

Ещё один набор параметров для разблокировки Ютуба: теперь мобильный

Level of difficultyEasy
Reading time2 min
Views12K

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

На десктопе эта проблема была мною решена достаточно давно, спасибо Валдику. Пошли Господь этому человеку сибирского здоровья, кавказского долголетия и яхту из чистого золота. А вот на Андроиде в ночь на прошлый понедельник, вероломно, без объявления войны обход блокировок работать вдруг перестал.

Выбор инструмента для обхода на этой ОС был невелик: из списка на Гитхабе Валдика есть ровно три Андроид-решения: PowerTunnel, SpoofDPI и ByeDPI. Два последних у меня изначально не заработали, а первый заработал из коробки так хорошо, что я даже не узнал, что под капотом у него целый набор плагинов, в том числе LibertyTunnel, который и обеспечивает обход.

После того, как в понедельник PowerTunnel перестал справляться, я потыкался в настройки, но безуспешно. К сожалению, на Гитхабе автор проекта ничем не смог мне помочь, но я всё равно хочу выразить ему благодарность за два месяца работы мобильного интернета! (А не пародии на него).

Но мир не без добрых людей, и они помогли мне заставить работать ByeDPI. Этими настройками я и хочу поделиться с теми, у кого, как и у меня, недавно перестали работать прежние инструменты.

Читать далее
Total votes 30: ↑27 and ↓3+30
Comments19

История глазами араба XIV века

Reading time12 min
Views8.6K

Сегодня я предлагаю вам посмотреть на историю глазами Абу Зейда Абдуррахмана ибн Мухаммада аль-Хадрами, более известного под именем Ибн Хальдун.

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

· Именно он по поручению гранадского эмира вёл переговоры о мире с Педро Кастильским,

· Он занимал высокие посты при дворе султана Туниса,

· Был письмоводителем при дворе султана Феса,

· Вёл переговоры между египетским султаном и Тамерланом,

· Многократно занимал должность верховного кади (верховного судьи) маликитов.

Читать далее
Total votes 42: ↑38 and ↓4+40
Comments39

Вирус бешенства. Беспощадная непостижимость

Level of difficultyMedium
Reading time19 min
Views30K
Мой первый урок по бешенству начался с инструктора который молча вышел и нарисовал на доске огромные «100%» © LAB-66

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

Про бешенство. Под катом


Что он такое? Вирус бешенства
Total votes 188: ↑181 and ↓7+215
Comments218

Как доказать теорию относительности Эйнштейна за 10 000 рублей

Level of difficultyMedium
Reading time11 min
Views16K

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

По всей Вселенной, от звёзд, чёрных дыр, галактик и т. д. испускаются космические лучи — частицы, несущиеся через Вселенную с высокими энергиями. Они попадают в атмосферу Земли и вызывают ливни как стабильных, так и нестабильных частиц. Те из них, которые живут достаточно долго, прежде чем распасться, в конечном итоге попадают на поверхность Земли. Каждую секунду через ваше тело проходит от 10 до 100 мюонов — нестабильных, тяжёлых кузенов электрона. При среднем времени жизни в 2,2 микросекунды можно подумать, что они не могли бы пройти всю толщину атмосферы, ~100 с лишним километров, от космоса до вашей руки. Тем не менее, теория относительности утверждает, что это происходит, и тот факт, что эти мюоны проходят через ваше тело, более чем достаточен для доказательства её правоты.

Читать далее
Total votes 42: ↑42 and ↓0+61
Comments60

Паттерны применения многопоточности на коммерческом проекте (на примере Java)

Level of difficultyMedium
Reading time22 min
Views2.4K

После прочтения у вас сложится понимание того как работать с многопоточностью на реальном проекте

Список рассмотренных паттернов:

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

При этом в статье я намеренно не касался низкоуровневых механизмов, таких как synchronized, lock, volatile, барьеров (разве что semaphore), потому что они значительно реже применяются в работе

Читать далее
Total votes 9: ↑9 and ↓0+12
Comments1

Просто о сложном: используем концепцию каталога услуг для интеграции с сложными веб-сервисами и не только

Level of difficultyMedium
Reading time10 min
Views612

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

Читать далее
Total votes 6: ↑6 and ↓0+9
Comments0

Блеск и нищета WebAssembly

Level of difficultyHard
Reading time20 min
Views11K

Всем привет! Сейчас за окном осенние деньки 2024 года. Вещает Пройдаков Евгений. Сейчас я руковожу группой разработки среды исполнения языка eXtraction and Processing в R&D департаменте Positive Technologies.

Доменно специфичный язык eXtraction and Processing является важной частью движка поведенческого анализа, используемого в таких продуктах Positive Technologies, как MaxPatrol SIEM и PT ISIM. Сегодня хотелось представить вашему вниманию выжимку нашего R&D процесса в экспериментах с WebAssembly. Узнаем, что такое WebAssembly. Поймём, как его можно встроить в программный продукт. Коснёмся инструментов разработки и сред исполнения WebAssembly. А также в рамках одной статьи пройдём путь от постановки задачи до результатов по разработке среды исполнения для доменно специфичного языка программирования. Кроме того, мы разберем некоторые проблемы, которые могут появиться у вас при попытке собрать и отладить большой С++ проект под WebAssembly. Материал может быть особенно полезен тем, кто хочет использовать WebAssembly за пределами веб‑браузера.

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

На старт, внимание, поехали!
Total votes 40: ↑39 and ↓1+50
Comments14

Паттерн «Интерпретатор»: что такое и как использовать

Level of difficultyMedium
Reading time13 min
Views6.3K

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

Я Дима, Python-разработчик из 21YARD, сервиса поиска строительных подрядчиков.

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

Читать далее
Total votes 9: ↑8 and ↓1+11
Comments6

«Голая Java» или разработка без всего

Level of difficultyHard
Reading time33 min
Views21K

Рассказываю что можно сделать на одном только голом JDK. Это старое и ныне почти забытое искусство разработки без внешних библиотек и фреймворков. Работать будем «как в былинные времена» — киркой и лопатой голыми руками и немного мозгом.

Читать далее
Total votes 72: ↑66 and ↓6+78
Comments107

Деконструкция монолита: Максимально производительный подход к проектированию программ

Reading time10 min
Views6.3K

Как и почему компания Shopify перешла от монолитной архитектуры к модульно-монолитной.


image

У компании Shopify одна из крупнейших баз кода на Ruby on Rails. Над ней трудились более десяти лет свыше тысячи разработчиков. Она включает множество разнообразных функций, например, выставление счетов продавцам, управление сторонними приложениями, обновление информации о товарах, обработка доставки и так далее.

Изначально система была построена как монолит, то есть все эти разные функциональные возможности были встроены в одну кодовую базу без каких-либо разграничений между ними. В течение многих лет эта архитектура работала нормально, но в конце концов мы достигли точки, когда недостатки монолита перевесили преимущества. Нам предстояло сделать выбор, как действовать дальше.
Читать дальше →
Total votes 12: ↑12 and ↓0+19
Comments4

Java. Мое решение для поиска изменений между двумя объектами. ChangeChecker

Level of difficultyMedium
Reading time15 min
Views4.2K

Во время работы над аддоном для Jakarta-валидации мне пришлось писать логику по проверке изменений в модели по собственной аннотации CheckExistingByConstraintAndUnmodifiableAttributes.

Долго разглядывал получившейся код, и в голову пришла светлая (наверное) идея: почему бы не вынести все это в полноценный настраиваемый класс?

Читать далее
Total votes 12: ↑11 and ↓1+12
Comments15

Spark Essentials: Руководство по настройке и запуску проектов Spark с помощью Scala и sbt

Reading time18 min
Views682

В этой статье представлено подробное руководство по инициализации проекта Spark с помощью Scala Build Tool (SBT). Это руководство охватывает все этапы процесса, включая создание проектов, управление зависимостями, локальное тестирование, компиляцию и развертывание проекта Spark на кластере.

Это руководство было тщательно продумано, чтобы помочь новичкам, так что даже те, кто только начинает изучать Spark, смогут легко ему следовать. Более того, эта статья послужит ценным пособием для тех, кто хочет создавать, тестировать и развертывать пакетные задания Spark в среде JVM.

Цель этой статьи — предоставить вам подробное руководство по инициализации проекта Spark, в котором будут подробно рассмотрены все ключевые идеи. В руководстве будет рассмотрен пошаговый процесс создания проектов с помощью Scala Build Tool (SBT), а также продемонстрировано управление зависимостями, локальное тестирование, компиляция и развертывание проекта Spark на кластере.

Читать далее
Total votes 8: ↑7 and ↓1+10
Comments0

Он был в мистическом бреду: был ли этот математик-отшельник гением, чьи идеи могли преобразовать ИИ, или сумасшедшим?

Reading time16 min
Views11K

В сентябре 2014 года в одном из селений на склонах Пиренеев садовник Жан-Клод, которому было под 60, был удивлен появлением соседа у своих ворот. Они не разговаривали почти 15 лет после спора о плетистой розе, которую Жан-Клод хотел подрезать. Старик, которому было 86 лет, жил в полном уединении, ухаживая за садом в своей неизменной джеллабе и проводя ночи за письмом, ни на кого не обращая внимания. Но на этот раз старик, с длинной бородой и видом ищущего истину, казался обеспокоенным.

«Ты можешь сделать мне одолжение?» – спросил он Жан-Клода.

«Если смогу».

«Можешь купить мне револьвер?»

Читать далее
Total votes 29: ↑21 and ↓8+19
Comments21

Как работает интернет

Level of difficultyEasy
Reading time30 min
Views87K

Если вы полный ноль в интернет-технологиях, и хотите получить общее понимание Интернета, прочитав всего одну статью, то эта статья - для вас.

Здесь вы узнаете о 4 уровнях модели TCP/IP. О том, что такое MAC-адрес и IP-адрес, и зачем нам 2 типа цифровых адресов. Как работает DNS. Зачем нужны коммутаторы и роутеры. Как работает NAT. Как устанавливается защищённое соединение. Что такое инфраструктура открытых ключей, и зачем нужны TLS-сертификаты. Чем отличаются три версии протокола HTTP. Как происходит HTTP-аутентификация. И в конце будет несколько слов о VPN.

Читать далее
Total votes 106: ↑99 and ↓7+112
Comments61

Виртуальные потоки Java 21 — чувак, где мой lock?

Level of difficultyEasy
Reading time12 min
Views10K

Как показывает опыт Netflix, использование виртуальных потоков, представленных в Java 21, может спровоцировать возникновение неожиданных проблем. В новом переводе от команды Spring АйО мы подробно исследуем уникальные трудности, возникшие у команды Netflix при интеграции виртуальных потоков в Spring Boot на Tomcat. 

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

Читать далее
Total votes 20: ↑19 and ↓1+20
Comments27

Information

Rating
2,485-th
Registered
Activity