Как стать автором
Обновить
15
0
Stanislav Spiridonov @foal

Человек

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

Протокол ухода из жизни

Время на прочтение8 мин
Количество просмотров152K
image

Об авторе. Питер Хинченс — бельгийский разработчик, писатель и бывший президент Фонда свободной информационной инфраструктуры, ассоциации, которая борется с софтверными патентами в Европе. Автор более 30 протоколов и распределённых систем, основатель свободного проекта ZeroMQ и проекта Edgenet по созданию полностью безопасной, анонимной глобальной P2P-сети, исполнительный директор и ведущий программист компании iMatrix. Автор книг «Культура и империя: цифровая революция», «Код психопата», «Масштабируемый Си» и др.

Пришло время для моей последней статьи. Я мог бы написать ещё, есть время, но потом буду думать о других вещах: как удобнее устроиться в постели, когда принимать болеутоляющие и о людях рядом со мной.

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

Я был изолированным и одиноким юношей. Немного аутистичным, наверное. Я думал только о работе, плавании, своих домашних животных, снова о работе. Мысль о том, что людям может нравиться моё общество, была странной. По крайней мере моя работа, казалось, имеет значение. Мы писали генераторы кода на Cobol. Я написал редактор кода, который нравился сотрудникам, потому что элегантно работал на всём. Я самостоятельно выучил Си, ассемблер 8086 и писал программы shareware. Так медленно прошли 90-е.
Читать дальше →
Всего голосов 59: ↑52 и ↓7+45
Комментарии147

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

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

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

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

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

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

Читать далее
Всего голосов 7: ↑7 и ↓0+10
Комментарии0

Мониторинг и профилирование Spring Boot за две строчки

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

Эта статья посвящена использованию библиотеки для профилирования методов в приложениях Spring Boot. Она предоставляет механизм для мониторинга времени выполнения методов, используя аннотацию @ActuatorProfiling и Spring Boot Actuator для экспонирования данных профилирования через настраиваемые конечные точки (эндпоинты).

GitHub https://github.com/litefunction/spring-boot-starter-actuator-profiling

Введение

Профилирующее приложение предназначено для помощи разработчикам в мониторинге и анализе времени выполнения методов, аннотацией @ActuatorProfiling. Данные профилирования экспонируются через Spring Boot Actuator.

Особенности

• Профилирование времени выполнения методов.

• Настраиваемые параметры профилирования.

• Информация получения данных профилирования в actuator.

• Потокобезопасное управление данными профилирования.

Читать далее
Всего голосов 7: ↑3 и ↓4+1
Комментарии0

Trunk Based Development — кто такой и зачем нужен

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

Привет! Меня зовут Павел Лакосников, я тимлид команды бэкенд-инженеров в Авито. Сегодня расскажу про свой любимый подход к разработке Trunk Base Development, сравню его с другими моделями ветвления и подсвечу его достоинства и нюансы.

Краткий обзор трёх моделей ветвления: Central Workflow, Git Flow, Trunk Based Flow, с акцентом на моего фаворита — Trunk Based Flow.

Читать далее
Всего голосов 27: ↑22 и ↓5+21
Комментарии44

Нагрузи меня, Gatling

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

Привет. Это статья-туториал про выбор технологии и реализацию проекта нагрузочных тестов для API REST микросервисов. Про себя и специфику продукта, над которым работаю, я подробно описывал тут, когда рассказывал о интеграционных тестах. Здесь этому уделять внимание не буду. Если решитесь продолжать, то Вас ждет длинное чтиво. Результатом потраченного времени и внимания будет понимание того, зачем нужно нагрузочное тестирование, с чего начать, куда двигаться дальше и шаблонный проект нагрузочных тестов, который Вы сможете адаптировать под себя. Все используемые мной технологии в этой статье несут печать Java экосистемы. Это тоже может повлиять на то, решитесь ли Вы продолжать. Поехали ...

Читать
Всего голосов 4: ↑4 и ↓0+5
Комментарии2

Как совмещать основную работу и проекты на стороне

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

У многих из нас остается достаточно свободного времени в сутках. А почему бы не монетизировать это время, думает начинающий IT левак? Если работать по три часа в день в будние, брать по 2 тысячи за час, то получится 120 тысяч дополнительного дохода в месяц. Звучит отлично!

Меня зовут Даниил, и я через выгорание, увольнение, споры с заказчиками и успешные проекты научился совмещать карьеру в компании и ведение проектов на стороне.

Читать далее
Всего голосов 91: ↑89 и ↓2+107
Комментарии48

Как я стал IEEE Senior Member

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

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

Читать далее
Всего голосов 26: ↑17 и ↓9+16
Комментарии3

Простой сервис аутентификации и авторизации по JWT на основе фильтров SpringSecurity

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

Напишем простой сервис аутентификации с выдачей JWToken. Для реализации будем использовать Java 17, Maven, SpringBoot 3.2.0, h2 в памяти. Авторизация и аутентификация будет реализована на основе фильтров SpringSecurity.

Ссылка на проект GitLab

Читать далее
Всего голосов 5: ↑3 и ↓2+3
Комментарии8

Облачный умный дом: что нужно знать, чтобы избежать проблем

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

В обычной жизни я не только тестирую оборудование умного дома, но и очень много путешествую. Любимое хобби в поездках – трекинг, особенно в холмистой местности. Ходил я и по лестницам Непала, и по левадам Мадейры, и по козьим тропам Азорских островов. К чему это я? Многим облака кажутся милыми, белыми и пушистыми. Но когда ты поднимаешься по тропе, и тебя после определенной высоты накрывает облако, мало не покажется. Сыро, мокро, противно, а потом еще и скользко. Приходится разворачиваться и спускаться обратно, по скользкой каменистой тропе подниматься нельзя.

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

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

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии22

Как вылечить зубы на год вперёд перед долгой поездкой

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

Таких запросов всё больше и больше. Раньше они были связаны с эмиграцией в Европу и США, где лечить зубы просто очень дорого. Теперь появилась потребность лечить зубы так, чтобы не обращаться к врачу вообще.


Пациент внезапно уехал в парусную кругосветку без того, чтобы поставить коронки на импланты. Под ними снизилась трофика, через 3 года (!) кость уменьшилась и образовалась дыра в челюсти.

Классическая модель подразумевает кратность визитов: 2–4 раза в год нужно ходить к стоматологу на профессиональную гигиену, и это позволит не покупать новые зубы в зрелом возрасте.

Тем не менее мы умеем лечить и «на год вперёд». И вы можете заказать это в любой региональной клинике тоже. Это называется «протокол полярника», когда мы готовим людей к арктическим экспедициям и подобным приключениям.

Кратко: нужна глубокая санация, чтобы убрать все источники инфекции, в том числе постоянные в каналах, которые так не любят кардиологи. Мы снижаем нагрузку на иммунитет, убирая постоянные воспаления. Затем убираются все восьмёрки (зубы мудрости — это частое требование страховых и контрактов полярников). Затем проводится глубокое ТО имплантов и других конструкций.

В дорогу полярникам мы даём наборы бактерий-антагонистов стрептококков. К счастью, сейчас они очень хорошо протестированы и доступны во многих крупных аптеках. Вам нужен Blis M18.
Читать дальше →
Всего голосов 79: ↑71 и ↓8+83
Комментарии62

Устранение неисправностей в приложении Java под Kubernetes

Время на прочтение7 мин
Количество просмотров3.8K
image

Когда взаимодействуют разработчики и операторы


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

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

В Kubernetes всё устроено немного иначе. Вам наверняка рекомендовали добавить отдельную конечную точку для проверки работоспособности, поэтому k8s уже успеет перезапустить под до вашего вмешательства. После этого под выглядит свежим, и в нём потеряна вся информация, которая вам требовалась. В этом посте будет показан очень простой способ, позволяющий снять информацию в такой ситуации.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+11
Комментарии1

Красота в консоли

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

Если верить статистике MacOS то топовые приложения которые я использую для работы это Chrome, VS Code, iTerm и VK Teams. При этом в консоли я провожу от часа до трех ежедневно. На самом деле время в терминале больше, потому что часть того что трекается как VS Code тоже является временем работы в консоли, только встроенной в VS Code. Поэтому консоль хочется сделать удобнее и красивее. Особенно этой поздней осенью. Этими красивостями и удобностями и хочется поделиться. И не просто поделится, а что бы с красивыми картинками, некоторые из которых были бы не совсем статичны. Ну или совсем не статичны. Это как кому нравится.

Читать далее
Всего голосов 27: ↑24 и ↓3+27
Комментарии23

Настраиваем память JVM-приложения в Kubernetes

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

Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на  использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.

 

Читать далее
Всего голосов 36: ↑34 и ↓2+38
Комментарии9

Основное про API-шлюз в Kubernetes

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

Существует множество альтернатив для доступа к модулю извне кластера. Шлюз API - это определенно новинка этой области, и потому выбран темой этой статьи.

Ранее мы описывали несколько способов доступа к модулям Kubernetes. Так, например, доступ к модулю pods можно получить через его IP-адрес, но важно учитывать, что поды по своей сути являются временными. Штатный способ - настроить Service: в этом случае IP-адрес стабилен, а задача Kubernetes - обеспечивать мапироание между Service и соответствующими ей подами. В настоящий момент доступны различные виды сервисов: только внутренние, NodePort, позволяющий открыть доступа извне кластера, и LoadBalancer, который полагается на сторонний компонент - обычно это на облачный провайдер. Не будем забывать и об Ingress, обеспечивающем маршрутизацию.

Ну а API-шлюз, как новинку в этой области, мы оставили на десерт, решив посвятить ему целый пост.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии0

Не трогайте разработчиков. Отстаньте. Просто не беспокойте

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


Всем привет! Меня зовут Ян, я руководитель разработки Департамента ИТ инвестиционного бизнеса Газпромбанка. Совершенно неожиданно я занял первое место на конференции Highload++ с докладом про то, как организована работа в наших командах разработки.

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

В результате из простой задачи «не трогайте разработчиков» получилось сделать и очень правильное обучение (если вы дежурите, то у вас нет шансов не разбираться во всех процессах команды), и снижение техдолга (дежурный не берёт таски по фичам на спринты, но может заниматься документацией и всякими вещами в наведении порядка, до чего обычно не доходят руки), и много чего ещё. Сначала казалось, что за это мы платим снижением эффективности команды на 8–10 % (ведь мы выключаем дежурного из разработки), но на деле оказалось, что эффективность даже растёт. Есть ряд вещей, которые очень поменялись и в управлении такими командами в лучшую сторону.

Естественно, такой подход имеет кучу подводных камней и подходит далеко не всем и не каждому типу команд.

Сейчас расскажу про практический опыт.
Читать дальше →
Всего голосов 157: ↑139 и ↓18+154
Комментарии79

Фиксим снижение производительности до релиза

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

OpenID Connect (OIDC): Как получить токен?

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

Эта статья повествует о наиболее распространенном методе обмена токенами в потоке OpenID Сonnect: грантах [grants]. Обещаем – путешествие будет увлекательным, так что устраивайтесь поудобнее.

Читать далее
Всего голосов 29: ↑28 и ↓1+34
Комментарии4

Как попробовать ELK-стек за один вечер и наконец-то перестать grep'ать логи

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

Как часто вы, в очередной раз матерясь и grep'ая простыню текста, говорили себе, что вот-вот перестанете хранить логи в файлах и переедете на ELK?

Я - часто, а виной тому кажущаяся сложность настройки всей системы в целом.

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

Дисклеймер: я не знаю всех тонкостей ELK стека и возможно данный сетап не подойдет для огромной компании с сотней проектов и терабайтами логов, но там и без этой статьи все знают. Судите строго, давайте советы мне и другим в комментариях - я буду только рад.

В данной статье мы: разберем компоненты ELK стека и развернем его одной командой; законфижим Filebeat и научим его собирать и отправлять логи; рассмотрим интерфейс Kibana и научимся искать по логам; настроим Kibana и разберемся с правами доступа; поговорим об индексах, шаблонах и об автоудалении индексов (неактуальных логов);

Читать далее
Всего голосов 11: ↑9 и ↓2+11
Комментарии20

Лекарство от забывчивости: как я получал доступ к Node на OpenShift без ssh-ключа

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

Типичная ситуация с отвалившейся Node на OpenShift решается лёгким перезапуском забагавшего элемента. Но что делать, если ssh-ключ был забыт или остался на работе? Можно попробовать получить доступ с помощью смекалки и знаний команд Linux. Главный разработчик ГК «Иннотех» Ренат Гараев рассказал, как решал этот ребус и что получилось.

Читать далее
Всего голосов 11: ↑8 и ↓3+8
Комментарии9

Как обновить необновляемое: кастомная замена для @RabbitListener

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

Динамически обновляем конфигурацию клиента Spring Cloud Config Server и параметры слушателя RabbitMQ

Читать далее
Всего голосов 9: ↑7 и ↓2+6
Комментарии0
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Praha, Hlavni Mesto Praha, Чехия
Дата рождения
Зарегистрирован
Активность