Как стать автором
Обновить
0
0
Зеленев Николай @c-addict

Пользователь

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

Идеальный REST-клиент для iOS

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

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

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

Загадки Enum'ов

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

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


Давайте попробуем разобраться.

Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии19

Удивительный мир бинов банковских карт

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

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

Разобраться
Всего голосов 26: ↑23 и ↓3+35
Комментарии5

Аутентификация и авторизация в проекте с микросервисной архитектурой: стратегии, практический пример

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

Привет! На связи Олег Казаков из Spectr.  Мы занимаемся разработкой цифровых сервисов, в том числе высоконагруженных систем с микросервисной архитектурой и большим количеством различных интеграций.

В статье расскажу об одном из кейсов при работе над проектом с микросервисной архитектурой — реализации единой системы авторизации и аутентификации.  Поговорим про теорию, рассмотрим различные стратегии реализации и особое внимание уделим паттерну API Gateway.

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

Использование Kotlin и WebFlux для выполнения задач ML в Apache Spark на GPU

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

В предыдущей статье для создания Spark Driver приложения использовался сервлетный стек Spring (Boot 2.7.11) и JDK 8.

На дворе вторая половина 2023 года, у многих в проде уже используется Boot 3+ (а то и 3.1+), совсем скоро должна выйти новая LTS версия Java, и, мягко говоря, Boot 2+ и JDK8 устарели. Использовались они намеренно, так как для задач тренировки моделей машинного обучения на GPU в среде Spark частью системы является ускоритель вычислений на GPU NVidia Rapids. Поддержка JDK 17 появилась только в релизе v23.06.0 от 27.06.23, с ее выходом появилась возможность перейти на актуальную LTS версию Java, а с ней - на Spring Boot 3+.

В данной статье описывается миграция с Boot 2 и JDK 8 До Boot 3 и JDK 17, со Spring Web на Spring WebFlux, в конце сравниваются Web и WebFlux версии по потреблению аппаратных ресурсов и скорости выполнения.

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

Разница между загрузкой и инициализацией классов в Java на любопытном примере

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

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


Поводом для написания статьи стал вопрос на StackOverflow. Откройте, но не торопитесь читать ответ ;)

Читать дальше →
Всего голосов 21: ↑20 и ↓1+23
Комментарии2

14 глаз против VPN: что нужно знать про то, как главные разведки мира совместно шпионят за пользователями

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

«Пять глаз», «Девять глаз» и «Четырнадцать глаз» — это реально существующие международные альянсы по массовому наблюдению, включающие в себя, соответственно, 5, 9 и 14 западных стран, а также партнёрские страны-сателлиты. На основе соглашений в основе этих альянсов, спецслужбы развитых стран образуют единую машину слежения и контроля практически за любой коммуникационной активностью людей в их странах и по всему миру, включая все виды онлайн-коммуникаций.

Корнями эти альянсы уходят к секретному соглашению США и Великобритании об обмене сигнальной разведкой между странами-союзниками в годы Холодной войны. Это соглашение оставалось секретом для общественности до 2005 года, потому что один из методов альянса — помощь спецслужб друг другу в обходе законов своих стран: если законы одной страны не позволяют спецслужбам копаться в интернет-делах своих граждан, то выполнить грязную работу для них могут коллеги из другой страны. Например, спецслужбы Великобритании попались на использовании возможностей американского Агентства национальной безопасности (АНБ) для сбора данных о жителях Соединенного Королевства.

Сегодня мы расскажем о том, устроен этот международный шпионский «коллаб», почему беспочвенны обещания VPN-реклам помочь избежать попадания под этот глобальный колпак, и что про это нужно знать обычным пользователям VPN и интернета.

Читать далее
Всего голосов 27: ↑25 и ↓2+32
Комментарии71

Никто (почти) не знает, что такое авторизация

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

За время работы архитектором в проектах внедрения IdM я проанализировал десятки реализаций механизмов авторизации как во внутренних решениях компаний, так и в коммерческих продуктах, и могу утверждать, что практически везде при наличии относительно сложных требований они сделаны не правильно или, как минимум, не оптимально. Причиной, на мой взгляд, является низкое внимание и заказчика и разработчиков к данному аспекту на начальных этапах и недостаточная оценка влияния требований. Это косвенно подтверждает повсеместное неправильное использование термина: когда я вижу словосочетание «двухфакторная авторизация», у меня начинаются боли чуть ниже спины. Ради интереса мы проанализировали первые 100 статей на Хабре в выдаче по запросу «авторизация», результат получился неутешительный, боли было много:
Читать дальше →
Всего голосов 23: ↑22 и ↓1+31
Комментарии110

Введение в Java Process Memory Model

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

Каждое Java приложение, после запуска, создаёт десятки, сотни, тысячи объектов в памяти компьютера на котором оно запущено. Память, при этом, ресурс не бесконечный, и поэтому необходимо использовать его эффективно. Виртуальная Машина Java (Java Virtual Machine, далее JVM) умеет грамотно распоряжаться памятью и помогает нам, разработчикам, управляя ею автоматически.

О том, как именно JVM работает с памятью во время работы Java приложения мы поговорим в этой статье.

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

Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка

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

Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?

Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.

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

Раскладываю Swift Runtime на детали

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

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

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

Привет, меня зовут Александр Пахомов, я работаю в Альфа-Банке на проекте для юридических лиц Альфа Бизнес Мобайл. В статье расскажу про Runtime:

— покопаемся в исходниках: узнаем на каком языке написан и что делает;
— напишем простой код, скомпилируем и посмотрим как он выглядит на уровне SIL и IR;
— добавлю в мой исходный код функцию swift_releaseи посмотрю результат;
— узнаю, что будет, если не учесть ‘name mangling’;
— и покажу ненастоящую функцию.

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

Инструментация байт-кода Java

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

В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или другим языком, внесения изменений в компилированный файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.

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

Сколько стратегии у СТО

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

CTO часто воспринимается, как вершина технического развития. К этой роли стремятся все инженеры (ну или явное большинство).

Во многом, это правда, CTO – главный технический эксперт. Но помимо этого, CTO – директор. Он отвечает за стратегию, за финансы. А не только за выбор стека и архитектуру.

Какие стратегические задачи решает CTO и какой объем они занимают – об этом в нашей статье.

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

Микросервисы в банке: на чем их лучше писать? Java/Kotlin, а может Go?

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

В июле в офисе РСХБ-Интех (технологической дочки Россельхозбанка) состоялся бесплатный митап для Java-разработчиков — RSHB Backend Dev Meetup. Обсудили Kotlin, Go, маппинг и разные аспекты бэкэнд-разработки. В числе докладчиков выступал Иван Кочергин, руководитель центра собственной разработки РСХБ-Интех. Иван более 10 лет занимается разработкой на Java, последние три года — на Kotlin. В своем докладе он сравнил, на чем лучше писать микросервисы в банке: Java, Kotlin или Go. Делимся расшифровкой доклада. Запись всего митапа можно посмотреть на Rutube.

Читать далее
Всего голосов 28: ↑18 и ↓10+13
Комментарии17

Функциональное тестирование в SpringBoot

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

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

Начнем. Из пререквизитов у нас есть код приложения BookController.java.

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

Прожарка java.lang.String

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

Давайте абьюзить баг в java.lang.String, который позволит делать очень странные строки. Мы сделаем "Hello World", который не начинается с "Hello" и покажем, что не все пустые строки равны между собой. Научимся прожаривать строки в чужих классах.

Вкуснотища. Читать далее.
Всего голосов 23: ↑21 и ↓2+26
Комментарии14

Что читать техлиду: 7 увлекательных книг

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

Какие качества отличают хорошего технического лида? Уверены, как минимум инициативность, стратегическое видение, интерес к новым практикам и инструментам, идущие рука об руку с желанием постоянно развиваться. Немалую роль в lifelong learning техлида могут сыграть правильно подобранные книги.

Немет, Луц, Лав, Танненбаум, Страуструп, Олифер, Лукас — вот лишь некоторые известные авторы, о которых мы сегодня не будем говорить. Надеемся, что раз вы стали лидером технической команды, то с фундаментальной литературой в своей области знаний знакомы не понаслышке.

Под катом рекомендуем 7 изданий о soft-skills, методологиях, управлении командами и проектами.

Читать далее
Всего голосов 57: ↑55 и ↓2+60
Комментарии16

Android-разработка для новичков: 20+ полезных ресурсов

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

Всем привет! Меня зовут Миша Вассер. Я руковожу мобильной разработкой в AGIMA, а ещё я наставник на курсе «Android-разработчик» в Яндекс Практикуме. Мы на курсе регулярно делимся со студентами полезными материалами. Сегодня публикую подборку, которая поможет новичку начать свой путь в Android-разработке.

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

Как создать dApp за три шага

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

Децентрализованные приложения или dApps - это приложения, которые не полагаются на централизованный сервер или бэкэнд, а используют технологии Web3, такие как блокчейн и оракулы для хранения своей логики и функций бэкэнда, что делает их защищенными от взлома и безопасными.

В этом техническом руководстве вы узнаете как создать простой dApp, который позволяет пользователю получать и хранить текущую цену Ethereum в смарт-контракте. Готовую демонстрационную версию можно найти на GitHub.

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

От «Hello World» до включения программы в реестр российского ПО

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

В 2017 году я начал изучать Java. И, чтобы как-то визуализировать результат трудов, я решил сделать десктопное приложение (функционал продублирован в Telegram боте).

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

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

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

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность

Специализация

Backend Developer
Git
Linux
PostgreSQL
Docker
OOP
Java
Hibernate
Java Spring Framework
Spring Boot
Kubernetes