Search
Write a publication
Pull to refresh
3
0.5

WEB-программист, сетевой администратор

Send message

Domain-Driven Design: чистая архитектура снизу доверху

Level of difficultyMedium
Reading time18 min
Views42K

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

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

Да, мы уже знаем самые популярные практики: KISS, DRY, YAGNI, SOLID, что там ещё... Мы умеем их применять. Но нас не покидает чувство, что все эти практики объединяет общая научная основа. Знаете, это как с Менделеевым, который на основе закономерностей практически по наитию составил периодическую систему, а потом открыли электроны и всё встало на свои места.

У меня для вас хорошие новости: научная основа есть. Это предметно-ориентированное проектирование.

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

Но есть ещё одна хорошая новость: в статье ниже я постараюсь дать максимально понятный ответ, что же такое предметно-ориентированное проектирование.

Начнём.

Читать далее

Как надёжно стереть секретную информацию из базы данных

Level of difficultyMedium
Reading time5 min
Views4.2K

Зачем вообще "надёжно" стирать данные? Главное же, чтобы пользователь через интерфейс СУБД не мог их достать. Мало ли, что там за остатки данных в файлах болтаются, это же не проблема. Или нет?

Читать далее

OAuth 2.0, OpenID Connect и SSO для самых маленьких

Level of difficultyMedium
Reading time17 min
Views21K

Всем привет! Меня зовут Павел, я Head of Development в Банки.ру. Сегодня хочу погрузиться с вами в, кажется, уже давно заезженные темы: Single sign-on, OAuth, OpenID и нюансы их реализации. 

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

Я решил восполнить этот пробел и подготовил именно такой материал.
В этой статье погрузимся в теоретическую часть и рассмотрим: 

– основные Flow OAuth 2.0 и отдельно Authorization Code Flow with Proof Key for Code Exchange;
– OpenID Connect (OIDC);
– Single Sign-On или SSO: схему реализации и применение SSO в мобильных и веб-приложениях.

Читать далее

Сложно о простом. Самые популярные протоколы и принципы их работы. ARP, ICMP, IGMP, TCP, UDP, SCTP, DNS и DHCP. Часть 1

Level of difficultyEasy
Reading time11 min
Views74K

Приветствую, коллеги! Меня зовут @ProstoKirReal.

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

Читать далее

Слабоумие и отвага: как найти ликвидные облигации с доходностью до 40% и ежемесячными фиксированными выплатами

Level of difficultyEasy
Reading time5 min
Views9.4K

Что может быть привлекательнее депозита в Сбербанке под 21%? Видимо только депозит в ВТБ под 24%. А еще можно рассмотреть облигации с доходностью до 40% и ежемесячной выплатой купонов. Посмотрим, что они предлагают и какие существуют риски.

В статье будем искать такие варианты при помощи скрипта поиска ликвидных облигаций, который выложен на GitHub.

Вообще покупки высокодоходных облигаций с низким рейтингом (ВДО) на фоне роста ключевой ставки Центрального банка Российской Федерации – задача не для слабонервных. Высокие процентные ставки означают повышенный риск дефолта, особенно для эмитентов ВДО.

Ищем %

Регулярные выражения простыми словами. Часть 1

Level of difficultyEasy
Reading time7 min
Views57K

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

Многослойная архитектура FrontEnd-приложений на основании SOLID, часть 2

Level of difficultyMedium
Reading time6 min
Views11K

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

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

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

Читать далее

Немного про Тайм-менеджмент или «спасите от насилия менеджера Василия»

Level of difficultyEasy
Reading time4 min
Views16K

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

Вы договорились по пяти задачам на сроки готовности? – вам прилетело еще 5, более срочных. Потом еще пара. И еще одна, напоследок, от Генерального. А сделать надо все, от вас ждут.

Это очередная статья посвященная софтскилам и лайфхакам, о которых руководителям не рассказывают на курсах по менеджменту. Если вам интересна эта и подобные темы – подписывайтесь на мой ТГ канал «Морковка спереди, морковка сзади» и читайте другие статьи здесь, на Хабре.

Классическое желание новичка – это сделать все, что дали. «Я же хороший, я же должен показать, что меня не зря сделали менеджером, я должен все успеть». Ничего, что для этого надо задержаться до 9ти, разок можно 😊

Читать далее

Создание блога на FastAPI с нуля: JWT, Markdown и современный веб-дизайн

Reading time38 min
Views19K

В этой статье мы создадим полноценный мини-блог на FastAPI с нуля, используя современные технологии веб-разработки. Вы узнаете, как реализовать JWT-аутентификацию, работать с Markdown и создать привлекательный пользовательский интерфейс.

Мы рассмотрим асинхронную работу с SQLAlchemy 2, включая сложные запросы и связи ManyToMany, а также интеграцию фронтенда с использованием Jinja2.

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

Читать далее

Регулярные выражения простыми словами. Часть 2

Level of difficultyEasy
Reading time10 min
Views27K

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

Полезные веб-ресурсы для OSINT

Reading time3 min
Views7.3K

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

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

Читать далее

Не SPANом единым: о способах зеркалирования трафика

Reading time6 min
Views2.7K

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

Кроме безопасников зеркалирование трафика может потребоваться например, сетевикам в процессе отладки межсетевого взаимодействия. В общем, копия трафика — вещь полезная, но как ее можно получить?

Читать далее

Redux для новичков: база, с которой можно стартовать

Level of difficultyEasy
Reading time9 min
Views14K

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

Сегодня рассмотрим библиотеку Redux для JS, зачем она нужна, и стоит ли она вашего внимания. Redux — это библиотека для управления состоянием приложения. Redux создан для тех случаев, когда:

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

Читать далее

Postman: Basic авторизация через скрипт

Level of difficultyEasy
Reading time8 min
Views5.1K

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

О чем пойдет речь?

Читать далее

10 инструментов для облегчения backend-разработки

Level of difficultyEasy
Reading time11 min
Views14K

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

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

Сегодня мы познакомимся с 10 инструментами, которые сделают backend-разработку проще.

Этот список вас удивит.

<h2>1. Encore — фреймворк для backend‑разработки на TypeScript и Go, предназначенный для создания надёжных и типобезопасных приложений.</h2>

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

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

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

Encore предоставляет opensource-фреймворк для backend-разработки (на TypeScript и Go), который позволяет определять инфраструктуру в виде типобезопасных объектов прямо в вашем приложении, объединяя инфраструктуру с кодом приложения. Encore автоматически занимается предоставлением инфраструктуры и DevOps, анализируя код приложения.

Это позволяет быстро создавать готовые к продакшену backend’ы, используя такие инструменты, как микросервисы, Postgres и Pub/Sub, без излишней сложности и забот о DevOps. Дополнительно вы получаете:

Читать далее

VPN: последний выпуск. Завтра об этом писать нельзя

Level of difficultyEasy
Reading time5 min
Views171K

Закрываем двери в свободный интернет: завтра, 30 ноября, вступает в силу закон №406-ФЗ запрещающий распространять информацию о способах обхода блокировок.

Кто знает о визитах на Pornhub?
- Какие именно данные сохраняют провайдеры о нас — с VPN и без.
- Что нового запретят обсуждать о VPN (и почему).
- VLESS — замена VPN, которую ещё можно упомянуть (пока).
- ТРИ способа как вычислить, что вы зашли через прокси или VPN.

Читайте, пока это ещё не заблокировали!

Читать далее

Как финансовый аналитик может использовать нейросеть ChatGPT / ТОП-10 Промптов:

Level of difficultyEasy
Reading time6 min
Views19K

Вы — финансовый аналитик, часто сталкиваетесь с большим объемом данных и задач, требующих точного и быстрого анализа? Думаю, да, но времени на выполнение дел всегда мало, и сил в том числе. Человечество придумало множество вещей, ускоряющих обыденные дела, чтобы времени было больше, но, к сожалению, его все равно нет. Но вот чудо: в ноябре 2022 года компания OpenAI выпустила ChatGPT — помощника, который всегда тут, всегда работает и всегда развивается. Время пришло, и на момент выкладки этой статьи все финансовые аналитики, да что греха таить, почти все офисные работники могут применять ChatGPT в своей работе, экономя время!

Чем поможем и что изучим:

- Что такое ChatGPT и как он работает

- Автоматизация отчетности

- Анализ данных

- Риск-менеджмент

- Подготовка презентаций

- Бенчмаркинг

И многое другое...

Читать далее

Препарируем слои образов Docker

Reading time4 min
Views9.6K

Технологии контейнеризации сейчас являются неотъемлемой частью процессов DevOps. Контейнеры активно используются в микросервисных архитектурах для изоляции отдельных микросервисов. Наиболее распространенным решением по контейнеризации на сегодняшний день является Docker, и именно о небезопасной работе с контейнерами Docker мы и будем сегодня говорить.

Читать далее

Структурный дизайн. Древний секрет простого и быстрого кода

Level of difficultyMedium
Reading time30 min
Views13K

Я пишу коммерческий код с 2005 года и с 2014 года ищу способ систематически писать хороший код.

В рамках этих поисков я изучил всю популярную литературу о хорошем коде и его дизайне — от «Чистого кода» Анкл Боба до «DDD» Эрика Эванса. Однако все популярные подходы в значительной степени субъективны: они не дают объективного и последовательного судьи, который бы решал, какой код лучше.

Например, в чистом коде я до сих пор не знаю способа за конечное время дать ответ на вопрос «Сколько уровней абстракции в этой функции?». А если взять DDD — то я до сих пор не знаю способа, который бы позволял стабильно и за конечное время находить границы между ограниченными контекстами (прошу прощения за каламбур) или агрегатами.

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

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

Поэтому в 2020 году поиски своего Святого Грааля я продолжил в «эзотерических» и древних книгах. Одной из таких книг стал «Структурный дизайн» Ларри Константина. И в этой книге я, наконец, нашёл простой и понятный принцип, который лёг в основу моего текущего подхода к проектированию и кодированию, и для которого можно быстро и однозначно дать ответ, соответствует ли тот или иной кусочек кода этому принципу или нет.

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

Читать далее

Information

Rating
3,620-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity