Search
Write a publication
Pull to refresh
2
0

Java dev

Send message

Event Loop в деталях

Level of difficultyMedium
Reading time7 min
Views94K

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

JS был спроектирован как однопоточный язык программирования. Это значит, что он может выполнять только одну операцию одновременно. Тем не менее у JavaScript есть такой механизм как Event Loop, который как раз и позволяет выполнять "асинхронные" операции. Почему "асинхронные" в кавычках? Да просто потому что JavaScript тоже выполняет их синхронно, асинхронности в самом JavaScript как таковой нет. Вперед под кат, будем разбираться)

Promise.then()

Типизированные формы в Angular

Level of difficultyMedium
Reading time4 min
Views6.3K

Всем привет! В июне 2022 года наша фронтенд команда наконец-то дождалась строго типизированных форм от разработчиков Angular! Через какое-то время мы заметили что не все работает так, как интуитивно ожидаешь. Позже я создал небольшой внутренний документ с “фишками”, которые явно не описаны в официальных доках. И подумал: “А почему бы мне не выложить наш небольшой гайд на Хабр?”. И вот, выкладываю.

Читать далее

Почему исключения в Kotlin Coroutines это сложно и как с этим жить?

Reading time10 min
Views23K

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

Читать далее

Измеряем скорость кода Java правильно (используя JMH)

Reading time7 min
Views57K

Привет, Хабр!


Это вводная статья про то, как следует делать тесты производительности на JVM языках (java, kotlin, scala и тд.). Она полезна для случая, когда требуется в цифрах показать изменение производительности от использования определенного алгоритма.


Все примеры приведены на языке kotlin и для системы сборки gradle. Исходный код проекта доступен на github.


КДВП

Читать дальше →

Есть ли смысл начинать писать мобильное приложение не на Kotlin Multiplatform и Compose Multiplatform?

Level of difficultyMedium
Reading time6 min
Views12K

Всем привет! Меня зовут Борис Вербицкий, и я представитель того редкого типа iOS разработчиков, которые тепло относятся к Kotlin Multiplatform Project и рады появлению Compose Multiplatform. Здесь я решил поделиться своим опытом использования этих технологий, а также кое-какими размышлениями вокруг процессов с такой разработкой. Цель этой статьи - это поднять обсуждение предложенного мной подхода, послушать все за и против в комментариях.

Приятного чтения!

Читать далее

MBA: когда его стоит делать? толковая инвестиция или детский сад для взрослых?

Reading time4 min
Views6.3K

Где-то лет семь-восемь назад я очень загорелся идеей сделать MBA, причём не просто MBA, а что-то прямо топовое, так чтобы сложно было поступить, дорого, а потом я как ракета должен был полететь вверх по карьерной лестнице!

Сегодня поделюсь своим ходом мыслей о том, делать или не делать MBA лично мне и почему я в конце концов отказался от этой идеи (ну почти...). Тут у каждого, конечно, своя собственная уникальная ситуация, но возможно мой ход мыслей наведёт вас на какие-то новые идеи.

Читать далее

Все еще работаете с access token на клиенте? Тогда мы идем к вам

Reading time15 min
Views70K

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

В статье рассмотрим причины необходимости работы с токеном на клиенте веб-приложений, узнаем ,что лучше для хранения токена: localStorage, sessionStorage или cookie без флага HttpOnly (спойлер, ничего из этого), а также посмотрим на меры воздействия, которые можно использовать для снижения риска утечки токена посредством различных уязвимостей.

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

Читать далее

Хранение токена доступа в сервис-воркере

Level of difficultyMedium
Reading time14 min
Views7.6K


Привет, друзья!


На днях прочитал эту интересную статью, посвященную различным вариантам хранения токена доступа (access token) на клиенте. Мое внимание привлек вариант с использованием сервис-воркера (service worker) (см. "Подход 4. Использование service worker"), поскольку я даже не задумывался о таком способе применения этого интерфейса.


СВ — это посредник между клиентом и сервером (своего рода прокси-сервер), который позволяет перехватывать запросы и ответы и модифицировать их тем или иным образом. Он запускается в отдельном контексте, работает в отдельном потоке и не имеет доступа к DOM. Клиент также не имеет доступа к СВ и хранимым в нем данным. Как правило, СВ используется для обеспечения работы приложения в режиме офлайн посредством кэширования критически важных для работы приложения ресурсов.


В этой статье я покажу, как реализовать простой сервис аутентификации на основе JSONWebToken и HTTP Cookie с хранением токена доступа в сервис-воркере.


Для тех, кого интересует только код, вот ссылка на соответствующий репозиторий.


Интересно? Тогда прошу под кат.

Читать дальше →

Книга «Python. Лучшие практики и инструменты. 4-е изд.»

Reading time14 min
Views12K
image Привет, Хаброжители!

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

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

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

К концу книги вы освоите разработку эффективного и простого в сопровождении кода на Python.
Читать дальше →

RxJS: как операторы высшего порядка упрощают код

Level of difficultyEasy
Reading time7 min
Views11K

Если вы работали с Angular, то наверняка встречались с RxJS. Потоки, развесистые конструкции, много аргументов у метода pipe, а каждый аргумент возвращают разные функции с разным количеством аргументов. Есть интуитивно понятные функции типа filter или map. Первый явно фильтрует значения в потоке, а второй эти значения меняет. Такие функции называют операторами. И чем глубже вы проваливаетесь в RxJS, тем больше самых разных операторов вы узнаете. И со временем добираетесь до потоков потоков. То есть вместо обычных значений такой поток эмитит другие потоки. Такие потоки называют Higher Order Observables. И для работы с такими потоками существуют специальные операторы. Возможно, вы слышали, что такие операторы называют Higher Order Operators (HOO). Они могут выравнивать потоки или, другими словами, делать их обычным.

В этой статье я покажу, что в HOO нет ничего мифического, и расскажу в каких случаях вам нужно использовать операторы высшего порядка. Сейчас вы подумаете, что это скучный лонгрид, но не торопитесь. Мы рассмотрим всего 4 оператора: switchMap, exhaustMap, concatMap и mergeMap.

Читать далее

Разрабатываем свой браузер с нуля. Часть первая: HTML

Reading time15 min
Views64K


Всем привет!


Продолжаем цикл статей по разработке браузерного движка.


В данной статье я расскажу как создать самый быстрый HTML-парсер c DOM. Мы рассмотрим HTML спецификацию и чем она плоха относительно производительности и потребления ресурсов при разборе HTML.


С данной темой я докладывался на прошедшем HighLoad++. Конференцию не каждый может посетить, плюс в статье больше деталей.


Я предполагаю, что читатель обладает базовыми знаниями об HTML: теги, ноды, элементы, пространство имён.

И так, начнём!

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

Level of difficultyMedium
Reading time9 min
Views14K

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


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

Читать дальше →

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 1

Reading time8 min
Views17K

Квантовые компьютеры. С точки зрения традиционного программиста-математика.
Часть 1. Основы. Квантовый регистр.

О чем эта публикация

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

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

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

Читать далее

Строим свой SSO. Часть 2: PostgreSQL и ролевая модель

Level of difficultyMedium
Reading time44 min
Views10K

Всем привет, и мы продолжаем нашу серию статей по созданию собственного SSO. В предыдущей статье мы создали замечательную основу приложения и проработали множество нюансов связанных как с Spring Authorization Server, так и с Spring Security, Spring OAuth2 Client. Подключили "Social login" через Google, Github и Yandex. Теперь настало время превращения этого SSO в реальный проект.

Читать далее

Запускаем PostgreSQL в Docker: от простого к сложному

Level of difficultyEasy
Reading time12 min
Views643K

О простых и продвинутых способах запуска PostgreSQL в Docker: добавляем healthcheck, ставим на мониторинг, настраиваем параметры.

Читать далее

Кредитные карты как легаси-система

Reading time14 min
Views8K

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

В разработке это бы назвали «легаси-системой». Она важна? Определённо. Её сложно менять? Очень. Не совсем то, что бы мы создали сегодня? Безусловно.

Читать далее

Kotlin: взгляд изнутри — преимущества, недостатки и особенности

Level of difficultyMedium
Reading time32 min
Views49K

Всем привет! На связи Сергей Керенцев, Android-разработчик Студии Олега Чулакова на проектах Сбера.

В данной статье мы углубимся в мир Kotlin, рассмотрим его основные преимущества, недостатки и особенности. Мы обойдем такие важные аспекты, как безопасность работы с null-значениями, гибкость типизации с помощью Generics, возможности расширения функциональности с помощью extension-функций, inline-функции, а также многое другое.

Давайте начнем наше увлекательное путешествие в мир Kotlin и раскроем его потенциал!

Читать далее

Книга «Data Science в действии»

Reading time8 min
Views6.2K
image Привет, Хаброжители!

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

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

Заметки об основах программной архитектуры

Reading time9 min
Views24K
Это вводное руководство для архитекторов программного обеспечения. В настоящее время звание «архитектор» очень популярно во всем мире, но не существует настоящего руководства, как стать архитектором программного обеспечения.

1. Общая концепция архитектуры программного обеспечения
2. Архитектурные стили
3. Технология
4. Софт скиллз (принятие архитектурных решений, методы анализа рисков, навыки подачи материала, отношения с командой менеджеров, ведение переговоров, планирование карьеры архитектора)
5. Принципы проектирования
Читать дальше →

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

Level of difficultyMedium
Reading time7 min
Views33K

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

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

Читать далее

Information

Rating
Does not participate
Date of birth
Registered
Activity