Как стать автором
Обновить
29
0
Илья @MrAwesome

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

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

Анализ системы защиты от ботов на примере letu.ru

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

Анализ системы защиты сайта от ботов на примере letu.ru с использованием javascript reverse engineering.

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

Выбираем IAM в 2023 или, что есть кроме Keycloak

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

Гипотетическая ситуация — ваш работодатель поручил вам выбрать Identity and Access Management platform.

Обязательно: open‑source (Apache 2.0), self‑hosted, OAuth 2.0, OIDC, SAML, LDAP.

Для тех кому интересно узнать, что есть еще кроме Keycloak.

Узнать
Всего голосов 9: ↑7 и ↓2+5
Комментарии11

Основы Identity and Access Management (IAM) в архитектуре приложений

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

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

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

Identity and Access Management (IAM) выступает как наша первая линия обороны. Оно не просто защищает наши данные, но и гарантирует, что правильные люди имеют доступ к нужной информации в нужное время. Каждая вторая транзакция в мире происходит онлайн, безопасность становится не просто приоритетом, а необходимостью.

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

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

Цикл постов про Keycloak. Часть вторая: Контроль доступа на уровне приложения

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

Цикл постов про Keycloak. Часть вторая: Контроль доступа на уровне приложения.

Этот пост является продолжением данной статьи

В прошлый раз мы настроили ABAC (Attribute Based Access Control) с использованием Keycloak, теперь реализуем проверку разрешений на уровне приложения.

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

Тонкости авторизации: обзор технологии OAuth 2.0

Время на прочтение14 мин
Количество просмотров69K
Информационная система Dodo IS состоит из 44 различных сервисов, таких как Трекер, Кассы ресторана или Базы знаний и многих других. Чтобы не отвлекаться на несколько аккаунтов, 3 года назад мы написали сервис Auth для реализации сквозной аутентификации, а сейчас пишем уже вторую версию, в основе которого лежит стандарт авторизации OAuth 2.0. Этот стандарт довольно сложный, но если у вас сложная архитектура с множеством сервисов, то OAuth 2.0 вам пригодится при разработке своего сервиса аутентификации. В этой статье я постарался рассказать о стандарте максимально просто и понятно, чтобы вы сэкономили время на его изучение.


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

PMBoK — управление проектами с умом

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

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

Люди бережно собирают свои знания и лучшие практики и делятся ими с миром. Одним из важных источников информации для руководителя можно считать PMBoK, или Project Management Body of Knowledge. Это свод знаний по управлению проектами, где описаны процессы, их цели и способы их внедрения. Можно сказать, что этот сборник — это настольная книга руководителя или библия тимлида. Называйте как больше нравится, сути дела это не меняет.  

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

Я бы пересмотрел вообще всё

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

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


Вот примеры.


1) Например, DRY — don’t repeat yourself. Хорошее полезное правило, но его можно довести до маразма. Из того что я встречал на практике: есть два разных по бизнес-смыслу раздела, которые начинались с простого CRUD, и многие части (и фронта и бека) выглядели во многом абсолютно одинаково. Если их объединить с помощью общей высосанной из пальца абстракции и тем самым избавиться от небольшого дублирования кода, то потом (очень скоро) можно будет сойти с ума, потому что эти две вещи скоро разъедутся, обрастая кастомными фичами, и абстракция будет только вредить. Нельзя абстрагировать неабстрагуемое, даже если DRY нарушен.


«[Немного] дублирования обходится гораздо дешевле, чем неправильная абстракция» — Сэнди Мец

Т.е. DRY — хороший принцип, но бывают исключения.

Читать дальше →
Всего голосов 261: ↑219 и ↓42+177
Комментарии346

Камино-де-Сантьяго на минималках: как мы прошли 200 км за 5 дней и сколько это стоило

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

Если вы чувствуете профессиональное выгорание, то возможно лучший ответ на это... пойти в паломничество! Рассказываю о мало известном маршруте Камино-де-Сантьяго через Португалию, о том сколько стоит такой поход и о том почему паломничество это вообще один из лучших способов путешествовать. Хотя, по правде говоря, паломничество - это больше чем просто путешествие…

Buen Camino!
Всего голосов 39: ↑33 и ↓6+27
Комментарии18

Книга «Объекты. Стильное ООП»

Время на прочтение9 мин
Количество просмотров9.4K
image Привет, Хаброжители!

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

Книга «Объекты. Стильное ООП» познакомит вас с профессиональными техниками написания ОО-кода. Маттиас Нобак раскрывает правила создания объектов, определения методов, изменения и извлечения состояний и многое другое. Все примеры написаны на простом псевдокоде, который легко перевести в любой язык программирования. Кейс за кейсом вы изучите ключевые сценарии и задачи проектирования объектов, а затем шаг за шагом создадите простое веб-приложение, которое покажет, как должны взаимодействовать объекты разных типов.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии5

Обзор книги «Securing the Perimeter: Deploying Identity and Access Management with Free Open Source Software»

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

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

Тема Identity and Access Management на данный момент является достаточно закрытой, что создает проблемы для нас, в первую очередь, с подбором высококвалифицированных специалистов от ведущего разработчика до РП и архитектора. Подготовка же таких специалистов, перешедших из другой предметной области, занимает немало времени. Не меньшей проблемой является настороженное отношение к данной сфере многих заказчиков, не понимающих «зачем нам это все», если есть нормальная доменная инфраструктура. Несмотря на то, что автор книги ориентирует читателя на создание IAM-инфраструктуры на базе OSS и приводит примеры конкретных решений, основная ценность книги, на наш взгляд, заключается в систематизации области, классов продуктов, предназначенных для решения задач в области идентификации, аутентификации и управления доступом, а так же в доступном описании открытых стандартов и технологий, собранном в одном месте и разложенном по полочкам.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Как понять свой стиль управления, выбрать компанию и проект

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

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

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

Озон.Профит — личный опыт

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

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

Некоторое время назад Озон громко заявил о создании платформы для удалённого заработка, под названием "Озон-Профит". Заявлялось, что данная платформа позволит, имея компьютер и доступ в интернет, зарабатывать до 20 тысяч в месяц, работая по четыре часа в день, не выходя из дома. Мой сын не так давно экспериментировал с "Яндекс-толокой", поэтому я примерно понимал, о каких масштабах "заработка" может реально идти речь. Тем не менее - у меня есть пожилые родственники, которым не хватает пенсии, и у которых много свободного времени, и я подумал, что им это будет интересно.

Первый звоночек прозвенел, когда первый же из тех, кому я предложил посмотреть «Озон.Профит», категорически отказался от этой затеи сразу после попытки пройти обучалку. Отказ сопровождался словами "что-то как-то совсем бредово, можно только в глубокий минус уйти". Если что - человек на тот момент на полном серьёзе рассматривал варианты фулл-тайм работы за 1 МРОТ. Дальше я решил почитать отзывы в интернете, и обнаружил, что реально народ там зарабатывает по пять тысяч рублей в месяц максимум, а самой распространённой суммой месячного заработка было "2-3 тысячи в месяц"... Мне стало прямо совсем интересно, поэтому было принято решение выделить пару-тройку вечеров на то, чтобы составить своё собственное мнение.

Читать далее
Всего голосов 153: ↑142 и ↓11+131
Комментарии204

Римские и средневековые доспехи. Что лучше?

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

Знаете, что меня всегда удивляло? Если вернуться на 1000 лет в прошлое, то мы увидим воина, радикально отличающегося обликом от современного солдата (здесь и далее речь про Европу). Однако стоит нам от отметки XI века снова отступить на те же 1000 лет в прошлое, как мы увидим примерно такого же воина, который не так уж чтобы отличался обликом от своего средневекового собрата. Та же кольчуга или даже пластинчатый доспех, тот же меч и щит. Конечно, различия есть, но в большей степени отражают специфику военных действий, нежели разницу в технологиях, которые, вроде как, должны были куда-то двигаться за прошедшее тысячелетие.

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

Читать далее
Всего голосов 167: ↑158 и ↓9+149
Комментарии110

Руководство по NestJS. Часть 1

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



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


В этой серии из 3 статей я расскажу вам о Nest (NestJS) — фреймворке для разработки эффективных и масштабируемых серверных приложений на Node.js. Данный фреймворк использует прогрессивный (что означает текущую версию ECMAScript) JavaScript с полной поддержкой TypeScript (использование TypeScript является опциональным) и сочетает в себе элементы объектно-ориентированного, функционального и реактивного функционального программирования.


Под капотом Nest использует Express (по умолчанию), но также позволяет использовать Fastify.



В первой статье рассматриваются основы работы с Nest, во второй — некоторые продвинутые возможности, предоставляемые этим фреймворком, в третьей — приводится пример разработки простого React/Nest/TypeScript-приложения.


При рассказе о Nest я буду в основном придерживаться структуры и содержания официальной документации.


Это первая часть руководства.

Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии4

Блеск и нищета модели предметной области

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


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии46

Если вы используете моки, то вы хоть что-то тестируете?

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

Было ли у вас ощущение, что ради тестирования вы делаете код труднее для чтения? Допустим, у вас есть код, который ещё не тестировался. У него есть ряд побочных эффектов, и вас просят сначала прогнать тесты. Вы начинаете следовать советам вроде передачи глобальных переменных в виде параметров или извлечения проблемных побочных эффектов, чтобы сделать вместо них заглушки в тестах.

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

Вы останавливаетесь и задумываетесь: «Допустимо ли менять сигнатуры кода ради тестирования? Тестирую ли я реальный код или совершенно другой класс, в котором не происходит то, что нужно?» Перед вами может возникнуть дилемма. Вы уверены, что стоит и дальше придерживаться этого подхода? Или это потеря времени?

Вопрос на миллион: для устаревшего кода нужно писать модульные тесты или интеграционные?
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии19

Как мы сэкономили время курьерам. Логистика в Яндекс.Еде

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


Всем привет! Меня зовут Роман Халкечев, я руковожу отделом аналитики в Яндекс.Еде. Одно из ключевых направлений этого сервиса — логистика. Эффективность алгоритмов логистики во многом и определяет само существование сервисов доставки. Сегодня я расскажу читателям Хабра о нашем новом алгоритме, который помог курьерам сократить время простоя. Вы узнаете, из чего складывается время ожидания доставки заказа и зачем мы считали скорость приготовления килограмма условной еды. Но обо всём по порядку.


Яндекс.Еда представляет собой маркетплейс: на сервисе есть спрос и есть предложение. Спрос — это заказы пользователей. Предложение — курьеры. Разумеется, под предложением мы также понимаем рестораны, но в контексте этого поста остановимся именно на курьерах. Главная задача сервиса — поддерживать баланс: тогда будут счастливы и пользователи (они быстро получат еду), и курьерские службы (заказов хватит всем курьерам). Чтобы сохранять баланс и переживать локальный рост или падение спроса, нам необходимо повышать эффективность доставки. Под эффективностью мы понимаем оборачиваемость — среднее число заказов, которые курьер успевает доставить за час. Чем выше этот показатель, тем эффективнее работает доставка в целом.

Читать дальше →
Всего голосов 69: ↑67 и ↓2+65
Комментарии87

Я мечтал вырваться из Узбекистана и стать крутым разрабом. Больше не хочу — но разработка не отпускает

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


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

На меня никогда не давили с учебой. Говорили, отучись и иди работай, не важно кем, главное без дела не сиди. Я не сидел — я рубил в игры, прям дико, даже операцию на глаз пришлось делать. Начал зависать в прокуренных клубах, и одобрение пацанов поднял тем, что хорошо играл в варчик. Потом стал деградировать на районе. Среди друзей никогда не было ни одного разработчика — но это мне в них скорее нравится. Никаких клубов по интересам, даже рэпером никто не хотел стать — просто обычные ребята.
Читать дальше →
Всего голосов 210: ↑195 и ↓15+180
Комментарии306

Реализации кэша в C# .NET

Время на прочтение8 мин
Количество просмотров39K
Привет, Хабр! В преддверии старта курса «C# ASP.NET Core разработчик», подготовили перевод интересного материала о реализации кэша в C#. Приятного прочтения.




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

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

Кэширование отлично подходит для данных, которые изменяются нечасто. Или, в идеале, не меняются никогда. Данные, которые изменяются постоянно, например, текущее время, не должны кэшироваться, иначе вы рискуете получить неправильные результаты.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии2

Ваше утверждение на 100% правильно, только упускает всю суть

Время на прочтение4 мин
Количество просмотров5.5K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Your statement is 100% correct but misses the entire point».

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

Это довольно нейтральное утверждение, с которым согласилось бы большинство людей, даже если бы они работали над кодом, к которому предъявляются строгие требования ко времени отклика. И все же, неизбежно кто-то представит такой контраргумент:
Нет! Если у вас есть висячие указатели, то память никогда не освободится и вам в любом случае придется исправлять это, выполняя ручное управление памятью. Сборщики мусора волшебным образом не исправляют все ошибки.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии26
1

Информация

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