Чиста архітектура в Python: покрокова демонстрація. Частина 5


Зміст
REST-шар (частина1)
Git tag:Step12

Настав завершальний етап нашого пригоди за чистою архітектурою. Ми створили моделі предметної області, сериализаторы, сценарії та сховищі. Але поки відсутній інтерфейс, який склеює всі разом: отримує параметри виклику від користувача, ініціалізує сценарій зі сховищем, виконує сценарій, який отримує моделі предметної області з сховища, і перетворює їх у стандартний формат. Цей шар може бути представлений за допомогою безлічі інтерфейсів і технологій. Наприклад, за допомогою інтерфейсу командного рядка (CLI): отримувати параметри за допомогою ключів командного рядка і повертати результат у вигляді тексту на консолі. Але та ж базова система може бути використана і для web-сторінки, яка отримує параметри виклику з набору віджетів, виконує описані вище кроки, і розбирає повернені дані у форматі JSON для відображення результату на тій же сторінці.

незалежно від обраної технології для взаємодії з користувачем, збору вхідних даних та надання вихідних результатів, нам необхідно взаємодіяти з нещодавно створеної чистої архітектурою. Тому зараз ми створимо шар для винесення назовні API для роботи з HTTP. Реалізовано це за допомогою сервера, який надає набір HTTP-адрес (кінцевих точок API), при зверненні до яких повертаються деякі дані. Такий шар зазвичай називають REST-шар, тому що, як правило, семантика адрес схожа з рекомендаціями REST.
Читати далі →

Чиста архітектура в Python: покрокова демонстрація. Частина 4


Зміст
Сценарії (частина 3)
Git tag:Step09

Наша реалізація відповідей і запитів, нарешті, завершена. І тепер ми можемо реалізувати останню версію нашого сценарії. Сценарій коректно повертає об'єкт
<font color="#900">ResponseSuccess</font>
, але досі не перевіряє коректність вхідного запиту.

Давайте змінимо тест у файлі
<font color="#900">tests/use_cases/test_storageroom_list_use_case.py</font>
і додамо ще 2 тіста. Отриманий набір тестів (після фікстури
<font color="#900">domain_storagerooms</font>
) виглядає наступним чином:

Читати далі →

What the flask?

kdpv
Взагалі-то, це картинка від wtforms, але у мене гімпу чомусь не запускається (
Цю статтю я пишу в барі. Дуже хочеться похоливарить, але бармен на мене круглими очима дивиться, а кальянщик просто посміхається і мотає головою :(
Одного разу, мене запитали: що поганого в flask? Тоді мене повністю влаштовував цей милий фреймворк. Попрацювавши з ним якийсь час, я написав все, що думаю, в робочий слак, на що мені відповіли: "Мурад, будь добрішим". Взагалі, я добрий і пухнастий, але wtf?!
Читати далі →

Чиста архітектура в Python: покрокова демонстрація. Частина 3

Зміст
Сценарії (частина 2)
Git tag:Step06

Тепер, коли ми реалізували об'єкти запиту і відповіді, додаємо їх. Поміщаємо в файл
<font color="#900">tests/use_cases/test_storageroom_list_use_case.py</font>
наступний код:

Читати далі →

Чиста архітектура в Python: покрокова демонстрація. Частина 2

Зміст
Доменні моделі
Git tag: Step02

Почнемо з простого визначення моделі
<font color="#900">StorageRoom</font>
. Як було сказано раніше, моделі чистої архітектурі дуже легкі, принаймні, легше, ніж їх ORM-аналоги в фреймворках.

Раз ми слідуємо методології TDD, то перше, що ми напишемо, це тести. Створимо файл
<font color="#900">tests/domain/test_storageroom.py</font>
і помістимо всередині нього цей код:

Читати далі →

Чиста архітектура в Python: покрокова демонстрація (частина 1)

Примітка перекладачаДана стаття є переводом. Дослівний переклад зайняв 35 сторінок А4 в ворді. Планую розбити її на 5-6 частин. Думаю, дана тема повинна бути корисна багатьом програмістам, бажаючим писати свої web-додатки краще і чистіше. Так само стаття корисна тим, хто хоче навчитися писати web-додатки з методологією TDD із застосуванням саме модульних тестів, а не інтеграційних, як це зазвичай робилося в тих статтях, що траплялися мені на очі. Якщо десь використані неправильні терміни або переклад здається занадто машинним — напишіть мені в лічку, навряд чи це гугл-транслятор, швидше за все справа в моїй косноязычности і посередньому знанням англійської мови.

Рік тому мій друг Roberto Ciatti познайомив мене з концепцією, яку Роберт Мартіном називає чистої архітектури. Дядько Боб багато говорить про цю концепцію на конференціях і написав про неї дуже цікаві статті. «Чиста архітектура» являє собою спосіб структурування системи програмного забезпечення, набір угод (щось більше ніж строгі правила) про різних шарах і ролі їх учасників.

Як він ясно виражається в пості, влучно названих «Чиста архітектура» переклад на хабре), ідея цього підходу не нова, будується на безлічі концепцій, які проталкивались багатьма розробниками програмного забезпечення протягом останніх 3-х десяти років.
Читати далі →

Генерація фіктивних даних з Elizabeth


Elizabeth — це бібліотека для мови програмування Python, яка допомагає генерувати фіктивні дані. Один з найпростіших прикладів використання бібліотеки — це заповнення баз даних для додатків на Flask або Django. На даний момент бібліотека підтримує 16 мовних стандартів і 18 класів-провайдерів, що надають різного роду дані.
Можливість генерувати фіктивні, але в той же час валідні дані буває дуже корисна при розробці програм, які передбачають роботу з базою даних. Ручне заповнення бази даних представляється досить складним та виснажливим процесом, але по-справжньому все ускладнюється в той момент, коли потрібно згенерувати не 10-15 користувачів, а 100-150 тисяч. У цій статті я постараюся звернути вашу увагу на інструмент, який значно спрощує процес початкового завантаження бази даних на етапі тестування.
Читати далі →

«Flaskr» — введення у Flask, розробка через тестування (TDD) і jQuery

Flask – це чудовий мікро веб фреймворк, заснований на Python. Flaskr – це миниблог, який описаний в офіційному керівництві Flask. Я продирався через це керівництво більше, ніж можу в цьому зізнатися. Тим не менше, я хотів би взяти це керівництво для наступного кроку, додавши в нього розроблення через тестування (test driven development) і трошки jQuery.
Читати далі →

Web-додаток для роботи з markdown нотатками


За довгий час у мене накопичилося багато різних заміток, підказок і шпаргалок на різні теми, пов'язані з it, так і зовсім не пов'язані. З'явилася необхідність це зручно та структуровано зберігати.

Я спробував різні wiki движки, але не все мені в них подобалося, іноді функціоналу було недостатньо, а іноді було дуже багато. Я подумав, що якщо хочеш зробити добре — зроби це сам потрібно написати свій велосипед.

Мені давно хотілося написати web-додаток на Python, тому вибір припав на цю мову. Під катом вихідний код і опис, а також посилання на репозиторій.

Читати далі →

Зроби сам веб-сервіс з асинхронними чергами і паралельним виконанням

rqКожен повинен робити свою роботу якісно і в строк. Припустимо, вам потрібно зробити веб-сервіс класифікації зображень на базі навченої нейронної мережі за допомогою бібліотеки caffe. В наші дні якість — це асинхронні неблокирующие виклики, можливість паралельного виконання декількох завдань при наявності вільних процесорних ядер, моніторинг черг завдань… Бібліотека RQ дозволяє реалізувати все це в стислі терміни без вивчення тонни документації.
Зробимо веб-сервіс на одному сервері, орієнтований на несильно навантажені проекти і порівняно тривалі завдання. Природно, його застосування не обмежується цими вашими нейронними мережами.
Читати далі →