Pull to refresh
0
0
George Ladutsko @ladutsko

Java engineer

Send message

Публикуем проект с помощью Gradle и Sonatype в Maven Central без рук

Reading time5 min
Views9.8K

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

Публикация проекта в Maven Central, имеено об этом я расскажу в этой статье. Как настроить Gradle, чтобы потом без труда настроить CI.

Читать далее ->
Total votes 14: ↑14 and ↓0+14
Comments7

Mikrotik QOS в распределенных системах или умные шейперы

Reading time57 min
Views95K
А что бы вы со своей стороны могли предложить?
— Да что тут предлагать… А то пишут, пишут… конгресс, немцы какие-то… Голова пухнет. Взять все, да и поделить.
— Так я и думал, — воскликнул Филипп Филиппович, шлепнув ладонью по скатерти, — именно так и полагал.
М. Булгаков, «Собачье сердце»


image Про разделение скорости, приоритезацию, работу шейпера и всего остального уже много всего написано и нарисовано. Есть множество статей, мануалов, схем и прочего, в том числе и написанных мной материалов. Но судя по возрастающим потокам писем и сообщений, пересматривая предыдущие материалы, я понял — что часть информации изложена не так подробно как это необходимо, другая часть просто морально устарела и просто путает новичков. На самом деле QOS на микротике не так сложен, как кажется, а кажется он сложным из-за большого количества взаимосвязанных нюансов. Кроме этого можно подчеркнуть, что крайне тяжело освоить данную тему руководствуясь только теорией, только практикой и только прочтением теории и примеров. Основным костылем в этом деле является отсутствие в Mikrotik визуального представления того, что происходит внутри очереди PCQ, а то, что нельзя увидеть и пощупать приходится вообразить. Но воображение у всех развито индивидуально в той или иной степени.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments15

Продвинутый GraphQL со Spring Boot

Level of difficultyEasy
Reading time13 min
Views8.9K

В этой статье вы узнаете, как использовать Spring for GraphQL в своем приложении Spring Boot. 

Spring for GraphQL — относительно новый проект. Версия 1.0 была выпущена несколько месяцев назад. До этого релиза нам приходилось подключать сторонние библиотеки, чтобы упростить реализацию GraphQL в приложении Spring Boot. Я уже описал два альтернативных решения в своих предыдущих статьях. В следующей статье вы узнаете о проекте GraphQL Java Kickstart. В другой статье вы увидите, как создавать более сложные запросы GraphQL с помощью библиотеки Netflix DGS.

Мы будем использовать очень похожую схему и модель сущностей, как и в этих двух статьях о Spring Boot и GraphQL.

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

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments2

Мой MikroTik – моя цифровая крепость (часть 1)

Reading time10 min
Views125K
В статье рассмотрены различные подходы к организации практической безопасности сетей, построенных на оборудовании MikroTik, в том числе при помощи дополнительного открытого программного обеспечения, расширяющего имеющиеся штатные возможности, что в комплексе позволяет качественно администрировать сетевые средства, а также своевременно реагировать на различные угрозы информационной безопасности.
Читать дальше →
Total votes 67: ↑64 and ↓3+85
Comments101

Сети для самых маленьких. Часть одиннадцатая. MPLS L3VPN

Reading time42 min
Views280K
В прошлый раз мы не оставили камня на камне при разборе MPLS. И это, пожалуй, хорошо.

Но до сих пор только призрачно прорисовывается применение его в реальной жизни. И это плохо.

Этой статьёй начнём исправлять ситуацию. Вообще же читателя ждёт череда из трёх статей: L3VPN, L2VPN, Traffic Engineering, где мы постараемся в полной мере рассказать, для чего нужен MPLS на практике.

Итак, linkmeup — уже больше не аутсорсинг по поддержке хоть и крупной, но единственной компании, мы — провайдер. Можно даже сказать федеральный провайдер, потому что наша оптика ведёт во все концы страны. И наши многочисленные клиенты хотят уже не только высокоскоростной доступ в Интернет, они хотят VPN.
Сегодня разберёмся, что придётся сделать на нашей сети (на которой уже меж тем настроен MPLS), чтобы удовлетворить эти необузданные аппетиты.

SDSM11-L3VPN
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments8

Мультиван и маршрутизация на Mikrotik RouterOS

Reading time30 min
Views258K
Адаптировано под ROS6 и ROS7. Редакция от 28.12.2021

Введение


Статья ориентирована на начинающих администраторов Mikrotik RouterOS (далее ROS). В ней рассматривается маршрутизация с резервированием для нескольких не связанных multihomed AS каналов интернет, работающих по протоколу IPv4. Так же есть настройки для обеспечения базовой безопасности. «Автоматическая» балансировка исходящего трафика по каналам в данной статье не описана по причине того, что ее реализация на таких исходных данных — это череда компромиссов и ограничений, требующая отдельного рассмотрения. Инструментарий для «ручной» балансировки в статье содержится и приведенные настройки являются хорошей базой для добавления «автоматической» балансировки, как минимум полудюжиной способов.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments24

Повышаем производительность файлового I/O в JVM на Linux

Reading time19 min
Views7.2K

Все кто хоть раз касался разработки I/O интенсивных приложений, наверное, задумывался о повышении их производительности. Особенно когда у проекта много внешних хранилищ и они находятся по всему миру. Давайте разберем какие есть инструменты с их плюсами и минусами и как их лучше использовать на примере конкретного проекта, в котором принимал участие Дмитрий Бундин, старший Big Data-разработчик в Grid Dynamics.

Читать далее
Total votes 22: ↑20 and ↓2+27
Comments15

Всё про USB-C: паяльник Pinecil

Level of difficultyMedium
Reading time9 min
Views28K

Как многие правильно заметили, в случае с USB-C важен не просто сам стандарт, а то, как он реализован. В конце концов, мы имеем дело с реализациями, и именно на этой почве обычно возникает большинство проблем. Отчасти, конечно, вина лежит и на стандарте, например, в плане отсутствия маркировки кабелей. Хотя, на мой взгляд, он продуман намного лучше, чем некоторым кажется.

Я хочу познакомить вас с несколькими реализациями USB-C в некоторых интересных опенсорсных продуктах. Все они в том или ином смысле не идеальны – иначе и быть не может, поскольку им приходится иметь дело с беспорядочным реальным миром, где совершенство является редкостью.

Сегодня мы поговорим о Pinecil – недорогом и качественном паяльнике от Pine64, выпущенном пару лет назад. Для питания в нём предусмотрен и круглый разъём, и порт USB-C. Это стало долгожданным отступлением от стратегии компании Miniware, которая не применяла такое решение ни в оснащённой исключительно круглым разъёмом модели TS100, ни в маломощных паяльниках TS80. Кроме того, поскольку Pinecil разработан под использование жал T12 от модели TS100, он заслуженно завоевал популярность в мире электронщиков-любителей.
Читать дальше →
Total votes 77: ↑77 and ↓0+77
Comments18

Istio в разрезе: что умеет и не умеет самый популярный Service Mesh (обзор и видео доклада)

Level of difficultyHard
Reading time15 min
Views50K

В докладе я препарирую Istio, дабы понять, как он работает, какие у него подводные камни и как им правильно пользоваться.

Это мой второй доклад про Istio и Service Mesh. Первый я сделал на конференции Kuber Conf 2021: «Что ждать от внедрения Istio?». Рекомендую ознакомиться сначала с ним, будет несколько проще.

Читать далее
Total votes 57: ↑56 and ↓1+68
Comments8

Год в Польше по PBH

Reading time20 min
Views85K

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

С середины 2020 года Польша открыла возможность получения визы для сотрудников и предпринимателей в сфере IT по специальной программе PBH. В период европейского локдауна, это был один из немногих прозрачных способов получения шенген визы. Мне повезло, и моя компания предложила релокацию для желающих этого сотрудников. Как итог, в декабре 2020 года я начал путь в новой стране. В статье я постараюсь ответить на вопросы как для потенциальных релокантов, так и для тех, кто уже начал свой путь в стране.

Dalej
Total votes 49: ↑43 and ↓6+45
Comments71

Настройка jwt-username-password authentication через spring-security-oauth2-resource-server

Reading time9 min
Views17K

Добрый день!

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

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

VGA адаптер на ПЛИС Altera Cyclone III

Reading time9 min
Views103K
Привет хабр — в этой статье я собираюсь поделиться своими успехами в освоении ПЛИС Altera Cyclone III. После мигания лампочками и игр со счетчиками — решил сделать что то более серьезное. Сделал я простейший VGA адаптер. Об основных его частях и пойдет речь. Статья больше ориентирована на начинающих, так как для опытных эта задача не составит труда, но для освоения, на мой взгляд — хорошая тренировочная задача. Эксперименты я свои провожу на отладочной плате Altera DE0. Описывать схему я буду на Verilog, Среда — Quartus II v 12.0. Итак — добро пожаловать под кат:
Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments20

Облегчаем жизнь PostgreSQL таблице под нагрузкой

Reading time11 min
Views11K

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

На критическую бизнес логику тесты будут написаны сами, без них никуда. Мониторинг и хайлоад — это курица и яйцо. После того, как у вас появится кто-то один из этой пары, на горизонте появится и второй. А вот все те, казалось бы, “удачные” и “быстрые” решения, заложенные при рождении, придётся исправлять. И если кодовую базу можно спокойно переписать (ну или хотя бы закидать костылями), то вот база данных — это одна сплошная горячая точка. Запросы и миграции, которые легко проходили на момент становления вашего продукта, легко могут сейчас положить прод, потому что ваша база теперь под постоянной нагрузкой, а ещё она неприлично раздулась. 

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

Читать далее
Total votes 21: ↑18 and ↓3+19
Comments6

Ускоряем java-рефлексию в 2022

Level of difficultyMedium
Reading time11 min
Views11K

После прочтения заголовка у среднестатистического читателя наверняка возникнет весьма логичный вопрос: «Кто такая эта ваша рефлексия и зачем её ускорять?»

И если первая часть будет волновать только совсем уж откровенных неофитов (ответ тут), то вторая точно нуждается в пояснении.

К текущему моменту рефлексия (и особенно рефлективные вызовы методов) так или иначе используется в прорве самых разных фреймворков, библиотек и просто любых приложениях, по какой-либо причине требующих динамические возможности.

Однако в java рефлексия реализована не самым быстрым (зато надёжным) методом, а именно, через использование JNI-вызовов. JNI (Java Native Interface) – очень полезная штука, позволяющая машине вызывать код из «внешнего мира», библиотек, написанных на C/C++ или ассемблере.

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

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

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

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

Шпаргалка по коллекциям в Java

Reading time3 min
Views13K

Сравним коллекции Java по следующим параметрам:

На чем основана — какая структура данных или коллекция используется под капотом.
Дубли — разрешены или нет в коллекции повторяющиеся значения.
Null — позволяет ли коллекция вставлять null.
Синхронизированность — все ли методы коллекции синхронизированы.
Потокобезопасность — безопасно ли использовать коллекцию в многопоточной среде.
Тип итератора — поведение итератора в многопоточной среде.

Читать далее
Total votes 17: ↑11 and ↓6+5
Comments3

Как мы ускорили выполнение запросов PostgreSQL в 100 раз

Reading time10 min
Views41K

Существует великое множество статей об оптимизации PostgreSQL — эта «кроличья нора» весьма глубока. Когда несколько лет назад я начал разрабатывать бэкэнд аналитического сервиса, у меня уже был опыт работы с другими СУБД, такими как MySQL и SQL Server. Тем не менее, раньше мне не приходилось так фокусироваться на производительности. В прошлых проектах, над которыми я работал, либо не было жестких требований к времени обработки (DS/ML), либо не требовалось обрабатывать много строк одновременно (обыкновенные веб-приложения). Однако в этот раз мои запросы:

состояли из 3-10 JOIN-ов по коррелирующим запросам;

уielded от 10 до 1,000,000 строк;

должны были выполняться в течение времени, определенного UX-ом;

не могли быть hinted — пока Cloud SQL, управляемый PostgreSQL в Google Cloud, не стал поддерживать pg_hint_plan в конце 2021 года;

запрещали прямой доступ к серверному процессу, чтобы, например, хакнуть некоторые perf — потому что PostgreSQL был managed.

Получение целого миллиона строк в одном API endpoint сигнализирует о проблеме в алгоритме или архитектуре. Конечно, все можно переписать и перепроектировать, но за это нужно платить.

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

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

Встречайте UUID нового поколения для ключей высоконагруженных систем

Reading time3 min
Views30K

31 марта 2022 года на сайте IETF был официально размещен текст рабочего документа (копия 1, копия 2) New UUID Formats (далее – стандарт), который должен формально обновить, а фактически заменить давно устаревший и изначально ущербный RFC 4122.

В долгих и жарких спорах удалось выработать стандарт высокого качества. Можно надеяться, что этот стандарт заменит многочисленные «самоделки» энтузиастов и отдельных компаний: ULID, KSUID, CUID и т.д., а в СУБД будут встроены генераторы UUID новых форматов, предназначенных для ключей высоконагруженных систем.

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

Где хранить секретные файлы на случай БП

Reading time7 min
Views39K


Всю информацию человека можно разделить по степени важности, примерно так:

  • системные бэкапы (важность 1/10);
  • текущие рабочие файлы (3);
  • личный архив: фотографии, видео (6);
  • копии бумажных документов (8);
  • секреты: ключи, пароли, кошельки (10/10).

Терять файлы всегда неприятно. Поэтому мы делаем резервные копии. Но степень параноидальности усилий по защите информации зависит от важности. Есть категория файлов, которую нельзя терять ни при каких обстоятельствах, даже в случае БП. Это наши главные секреты, то есть ключи, пароли и кошельки.
Читать дальше →
Total votes 29: ↑27 and ↓2+37
Comments13

15 отличных Телеграм-каналов для поиска работы на удаленке

Reading time3 min
Views313K

С 2005 года спрос на удаленную занятость вырос на 140%. Очевидно, что эта тенденция будет продолжаться. Сегодня вакансии на удаленку можно найти и на job-бордах, и в социальных сетях, но мне ближе Телеграм-каналы. Делюсь с вами своей подборкой. Дополнения в комментариях приветствуются)

Читать далее
Total votes 11: ↑5 and ↓60
Comments5

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity