Как стать автором
Обновить
1
0

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

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

Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров

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

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

Вот как сам Кокберн описывает эту архитектуру одним тезисом:

Добиться, чтобы приложение в равной степени могло управляться пользователями, программами, автоматизированными тестовыми или пакетными сценариями, а также разрабатываться и тестироваться в изоляции от устройств и баз данных, на которых оно впоследствии будет выполняться. — Алистер Кокберн, 2005 г.

В этой статье мы рассмотрим некоторые задачи, как правило, решаемые в типичных программных проектах. Затем мы поговорим о гексагональной архитектуре и о том, как она призвана решить эти задачи. Мы также рассмотрим некоторые детали реализации такой архитектуры и варианты тестирования.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+37
Комментарии45

Clean Architecture, DDD, гексагональная архитектура. Разбираем на практике blog на Symfony

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

Всем привет! Давайте знакомиться ;) Я Аня, и я php разработчик. Основной стек - Magento. С недавних пор начала посматривать налево на Symfony и писать свои Pet Projects на этом фреймворке.

Мне всегда нравилось писать решения которые легко бы расширялись / адаптировались под требования бизнеса (заказчика). И мне всегда хотелось сделать это более 'правильно' и красиво. Так я и познакомилась с понятиями чистой архитектурой.

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

Для нетерпеливых, вот прямая ссылка на гитхаб

Читать далее
Всего голосов 23: ↑20 и ↓3+23
Комментарии34

Как стать тимлидом?

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

Всем привет! Я Александр Яковлев, в Тинькофф руковожу разработкой бизнес-линии в нефинансовых сервисах.

Расскажу, чем занимаются тимлиды у нас в компании и что делать, чтобы вырасти до тимлида, а еще пройдусь по распространенным заблуждениям о работе. Добро пожаловать под кат!

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

Графический стек Linux

Время на прочтение19 мин
Количество просмотров100K
(оригинал — Jasper St. Pierre, разработчик GNOME Shell, взято отсюда)

Это обзорная статья о составных частях графического стека Linux и том, как они уживаются вместе. Изначально я написал её для себя после разговоров об этом стеке с Оуэном Тейлором, Рэем Строудом и Эдэмом Джексоном (Owen Taylor — мэйнтейнер Gnome Shell; Ray Strode — мэйнтейнер большого количества десктопных пакетов сообщества RedHat; Adam Jackson — разработчик графического стека Gnome Shell и интеграции с XOrg; прим. переводчика)

Я постоянно дёргал их, снова и снова расспрашивал о всяких мелочах, а потом эти мелочи благополучно забывал. В конце концов, я задал им вопрос — а нет ли какого-нибудь обзорного документа, уткнувшись в который я бы избавил ребят от своего назойливого внимания? Не получив утвердительного ответа я решил написать эту статью, которая по завершению была вычитана Эдэмом Джексоном и Дэвидом Эйрли. Они оба работают над этим стеком.
Читать дальше →
Всего голосов 196: ↑191 и ↓5+186
Комментарии49

Wayland на замену X Window System

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

В предыдущем посте мы узнали, почему X Window System — один из самых успешных проектов с открытым кодом в истории, пора заменить на новое решение для графического окружения Linux. В этой же статье мы узнаем, каков из себя Wayland — наиболее вероятный кандидат на замену X.




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

Что придет на замену X Window System?

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

Одним из знаменательных Linux событий прошлого года стал выход 25-й Федоры с графическим окружением Gnome 3.22 на базе дисплейного сервера Wayland, который призван заменить X Window System. Но зачем вообще после стольких лет возникла такая необходимость?




В последнее время экипаж МКС пересел с Windows на Linux.
— Хьюстон, у нас проблемы. Нас сносит на Юпитер.
— Вы что, опять возились с xorg.conf?
— Да. Хьюстон, за три последних дня у нас почему-то выросли бороды.

Далее, речь о том, почему Linux необходима новая графическая среда, хотя бы в 2017 г, а отдельным постом я расскажу про Wayland и Mir.

Читать дальше →
Всего голосов 95: ↑92 и ↓3+89
Комментарии215

Про кодировки и Юникод

Время на прочтение3 мин
Количество просмотров39K
Вначале стоит разъяснить пару терминов. Кодовая страница — таблица заранее известного размера, каждой позиции (или коду) которой сопоставлен единственный символ или его отсутствие. Например, кодовая страница размерностью 256, где 71-й позиции соответствует буква «G». Кодировка — правило кодирования символа в числовое представление. Любая кодировка создается для определенной кодовой страницы. Для примера, символ «G» в кодировке Абрвал примет значение 71. Кстати, простейшие кодировки так и поступают — представляют символы их значениями в кодовых таблицах, ASCII тоже к таким относится.
Читать дальше →
Всего голосов 23: ↑12 и ↓11+1
Комментарии16

Как придумали кодировку UTF-8: выдержки из переписки создателей

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

Всем известна кодировка UTF-8, что давно доминирует в интернет пространстве, и которой пользуются много лет. Казалось бы, о ней все известно, и ничего интересного на эту тему не рассказать. Если почитать популярные ресурсы типа Википедии, то действительно там нет ничего необычного, разве что в английской версии кратко упоминается странная история о том, как ее «набросали на салфетке в закусочной». 

На самом деле изобретение этой кодировки не может быть настолько банальным хотя бы потому, что к ее созданию приложил руку Кен Томпсон — легендарная личность. Он работал вместе с Деннисом Ритчи, был одним из создателей UNIX, внес вклад в разработку C (изобрел его предшественника — B), а позднее, во время работы в Google, принял участие в создании языка Go. 

Перед вами — перевод нескольких писем, в которых разработчики вспоминают историю создания кодировки. 
Читать дальше →
Всего голосов 36: ↑33 и ↓3+47
Комментарии12

Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор

Время на прочтение10 мин
Количество просмотров133K
Данная статья имеет цель собрать воедино и разобрать принципы и механизм работы кодировок текста, подробно этот механизм разобрать и объяснить. Полезна она будет тем, кто только примерно представляет, что такое кодировки текста и как они работают, чем отличаются друг от друга, почему иногда появляются не читаемые символы, какой принцип кодирования имеют разные кодировки.

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

О чем будет под катом: принцип работы одно байтовых кодировок (ASCII, Windows-1251 и т.д.), предпосылки появления Unicode, что такое Unicode, Unicode-кодировки UTF-8, UTF-16, их отличия, принципиальные особенности, совместимость и несовместимость разных кодировок, принципы кодирования символов, практический разбор кодирования и декодирования.

Вопрос с кодировками сейчас конечно уже потерял актуальность, но все же знать как они работают сейчас и как работали раньше и при этом не потратить много времени на это думаю лишним не будет.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+34
Комментарии41

Что происходит с рождаемостью в России и мире. И как это может отразиться на каждом из нас

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

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

С первого взгляда кажется, что эта тема очень узкая и уж точно не имеет отношения к IT. Но уменьшение населения, а что ещё более важно, изменение его возрастной и национальной структуры затрагивает все стороны жизни. Экономику - как пример длительная рецессия в Японии или поднятие пенсионного возраста в разных странах, общество - беспорядки на национальной почве как во Франции, право - обсуждение запретов абортов в России. Представьте, ваша девушка (или вы сами, если вы девушка) беременна, в стране аборты запрещены, а улететь можно только сдав кровь на ХГЧ, и если тест положительный за границу не пускают. Сейчас выглядит как бред, но в 2019 году наша реальность тоже показалась бы бредом.

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

Читать далее
Всего голосов 296: ↑248 и ↓48+250
Комментарии1961

Слои, Луковицы, Гексогоны, Порты и Адаптеры — всё это об одном

Время на прочтение4 мин
Количество просмотров57K
Перевод статьи Mark Seemann о популярных архитектурах разработки ПО и о том, что между ними общего.

Один из моих читателей спросил меня:
Вернон, в своей книге «Implementing DDD» много говорит об архитектуре Порты и Адаптеры, как о более продвинутом уровне Слоистой Архитектуры. Хотелось бы услышать ваше мнение на этот счёт.
Если не вдаваться в детали, то в своей книге я описываю именно этот архитектурный паттерн, хотя никогда не называю его этим именем.

TL;DR Если применить принцип инверсии зависимостей к слоистой архитектуре, то в конечном счете получим Порты и Адаптеры.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии9

Анонс Dart 3

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

100% sound null safety. Records, patterns, and class modifiers. And a peek into the future.

Привет с Google I/O 2023. Сегодня в прямом эфире из Mountain View мы анонсируем Dart 3 — крупнейший релиз Dart на сегодняшний день! Dart 3 содержит три мажорных улучшения. Во-первых, мы завершили путь к 100-процентной null-безопасности. Во-вторых, мы добавили новые языковые возможности: записи (records), паттерны (patterns) и модификаторы классов (class modifiers). В-третьих, мы даем предварительный прогноз на будущее, в котором расширим поддержку наших платформ, добавив нативный код для web с помощью Wasm-компиляции. Давайте углубимся в детали.

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

Модульный монолит. Начало

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

Модульный монолит — это подход к проектированию приложений, который позволяет, с одной стороны, отложить во времени операционную сложность использования микросервисов, а с другой — избежать превращения монолитной системы в большой комок грязи. Сама идея модульности не нова и основана на давно известных принципах Separation of Concerns и Information Hiding. Но не так-то просто перейти от абстрактных принципов к пониманию, как их реально использовать на практике.

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

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

Как самостоятельно прокачивать английский

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

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

Читать далее
Всего голосов 20: ↑17 и ↓3+15
Комментарии68

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

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

Javascript ― язык весьма оригинальный. Его можно любить, ненавидеть и даже бояться, но равнодушным он вас вряд ли оставит. Не знать или не понимать, с чем ты работаешь ― самая частая ошибка, допускаемая современными фронтенд‑разработчиками. Вам бы понравилось, если бы дантист, к которому вы пришли, не понимал, какой он инструмент использует и какие у него особенности работы? Очевидно, что нет. И рано или поздно, если вы действительно хотите стать профессионалами, вы разберётесь во всём, но как сделать так, чтоб это случилось раньше?

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

Читать далее
Всего голосов 94: ↑93 и ↓1+115
Комментарии43

8 книг по PostgreSQL: от баз данных с «нуля» для самоучек до руководства про БД в облаках

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

В целом, эта объектно-реляционная СУБД в дополнительном представлении не нуждается. Разработанная более 20 лет назад, она предназначена для создания и поддержки баз данных серверных приложений, в том числе ресурсоемких аналитических БД. Одна из особенностей PostgreSQL — открытый исходный код. Мы любим ее за развитое комьюнити и возможность развернуть «постгрю» самостоятельно и бесплатно.

Подготовили подборку полезных книг для тех, кто только начал или собирается работать с PostgreSQL. В нее вошли актуальные руководства на русском и английском языках. Если знаете еще одну-две отличных книги, смело рекомендуйте в комментариях.
Читать дальше →
Всего голосов 52: ↑50 и ↓2+62
Комментарии17

Про аудирование, или Из чего состоит знание иностранного языка

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

Часто люди, отчаявшись добиться желаемого прогресса после многих лет нерационального изучения языка, делают вывод: «Учу-учу, ничего не получается… Что-то идёт не так. Наверно, сделать качественный рывок мне поможет только погружение в языковую среду».

Покупают курс в Лондоне. Возвращаются с отличными впечатлениями, почти без денег и растущей убеждённостью: «Мой случай уникален, нужен какой-то особый подход».

Ни черта уникального на самом деле нет, ситуация очень типичная. Всё это — от тотального повсеместного непонимания, из чего, собственно, состоит знание иностранного языка. Да и разобраться непросто — весь эфир забит рекламной демагогией. 9 из 10 жалуются: я плохо воспринимаю речь на слух… что делать… У рекламщиков ответ уже готов: «Улучшить восприятие на слух? — Не проблема! Приходите! Поможем!»

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

Во-первых, не верьте знакомым, которые говорят, что хорошо понимают носителей на слух. Носители сами друг друга часто переспрашивают, даже понимая контекст разговора. И если ты не вырос в Англии, у тебя ВСЕГДА будут проблемы с восприятием речи британца. Сейчас расскажу, почему.

Вспомните ситуации, когда вы понимали носителя, пока он говорит с вами, но мгновенно переставали его понимать, когда он начинал говорить с другим носителем. Как так?

Реальные живые носители произносят не совсем те слова, которые мы ожидаем услышать, читая субтитры. Ни в одном словаре нет слова forya (ударение на первый слог), а оно, между тем, распространённое (в субтитрах будет написано for you). Не менее распространено слово whaddaya (в субтитрах пишут what do you). То же самое происходит в скоростной русской речи: вместо «он говорит» в реальной жизни мы обычно используем слово «онгрьт» с невнятной «н». Очсомневаюсь, что оно есть в словаре. Однажды при мне темнокожий парень объяснял посреди Москвы темнокожей девушке: «…and instead of “shto” they say “chyo” (вместо «што» они говорят «чё»). «Чё» даже не похоже на «что».

Читать далее
Всего голосов 57: ↑52 и ↓5+60
Комментарии125

Вам нужен чистый код? Используйте правило шести

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

Все хотят писать чистый код. Этому посвящены целые книги.

Но вам не нужно читать книги, чтобы начать писать более чистый код прямо сейчас. Есть одна «хитрость», которой может научиться любой кодер, она делает код гораздо менее запутанным.

Решение таково:

Каждая строка делает только одно действие


Одна строка, одна задача.

Но не стоит слишком перебарщивать.
Читать дальше →
Всего голосов 52: ↑41 и ↓11+42
Комментарии87

Как НЕ надо строить надежные системы

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


При проектировании системы знание анти-паттернов и подвохов зачастую оказывается более полезным, чем знание самих паттернов. Отталкиваясь от этой идеи, я решил написать данную статью, чтобы рассказать о факторах, которые, на мой взгляд, приведут к созданию ненадёжных систем. В её основе лежит мой собственный опыт проектирования преимущественно распределённых корпоративных приложений. Будет здорово, если ниже вы поделитесь собственным опытом и полезными идеями по теме.
Читать дальше →
Всего голосов 50: ↑45 и ↓5+59
Комментарии3

IT не уникально

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

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

Этого всего нет в других индустриях, так ведь? Или есть?

Читать далее
Всего голосов 84: ↑68 и ↓16+71
Комментарии129
1
23 ...

Информация

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