Pull to refresh
29
0
Илья @MrAwesome

User

Send message

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

Level of difficultyMedium
Reading time40 min
Views5.4K

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

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

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

Reading time4 min
Views12K

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

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

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

Узнать
Total votes 9: ↑7 and ↓2+5
Comments11

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

Reading time16 min
Views4.5K

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

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

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

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

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

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

Level of difficultyEasy
Reading time2 min
Views6.3K

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

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

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

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments11

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

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


Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments18

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

Level of difficultyEasy
Reading time11 min
Views23K

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

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

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments7

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

Reading time4 min
Views76K

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


Вот примеры.


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


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

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

Читать дальше →
Total votes 261: ↑219 and ↓42+177
Comments346

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

Level of difficultyEasy
Reading time10 min
Views13K

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

Buen Camino!
Total votes 39: ↑33 and ↓6+27
Comments18

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

Reading time9 min
Views9.4K
image Привет, Хаброжители!

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

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

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

Reading time19 min
Views5.4K

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

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

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

Level of difficultyEasy
Reading time12 min
Views2.1K

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

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments0

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

Reading time4 min
Views54K

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

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

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

Читать далее
Total votes 153: ↑142 and ↓11+131
Comments204

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

Reading time25 min
Views46K

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

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

Читать далее
Total votes 167: ↑158 and ↓9+149
Comments110

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

Reading time34 min
Views87K



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


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


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



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


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


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

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments4

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

Reading time28 min
Views47K


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

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

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

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

Reading time6 min
Views16K

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

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

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

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

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

Reading time5 min
Views46K


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


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

Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments87

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

Reading time5 min
Views122K


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

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

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

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




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

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

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

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

Reading time4 min
Views5.5K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Your statement is 100% correct but misses the entire point».

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

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

Information

Rating
Does not participate
Registered
Activity