Перевод статьи по методу Ильи Франка.

Источник: ссылка
Structuring (структурирование) a Flask Project 
Introduction
Flask provides (предоставляет) such (такую) great (большую) flexibility (гибкость) when (когда/при) developing a web application, including (включая) the structure of the application. Flask applications can range (варьироваться) from (от) a single file to (к) larger (более крупным) projects with multiple Blueprints (дословно: "эскиз". используется для разделения приложения на части). In this blog post, I’m going to (собираюсь) describe (описать) how I like (как мне нравится) to structure (структурировать) a Flask application using (используя) Blueprints and an Application Factory function. 
For reference (для справки), the project that (который) I created (создал) as part (как часть) of writing (написанного) this blog post is available (доступен) on GitLab: Flask User Management Example.
Structuring a Flask Project

Introduction

Flask provides such great flexibility when developing a web application, including the structure of the application. Flask applications can range from a single file to larger projects with multiple Blueprints. In this blog post, I’m going to describe how I like to structure a Flask application using Blueprints and an Application Factory function.

For reference, the project that I created as part of writing this blog post is available on GitLab: Flask User Management Example.



Перевод по методу Ильи Франка. Сначала часть текста с вставками-переводами, потом без перевода.

Django development (разработка) environment (окружение/среда) (среда разработки) with Docker — A step by step (шаг за шагом) guide (руководство) (пошаговое руководство).

Django development environment with Docker — A step by step guide

About Docker

Docker is the software development and devops ("development и operations" - девопс) tool (инструмент) everyone wants to use for their (своих) projects. It’s a platform that allows (позволит) you to easily create isolated (изолированное) environments (aka Containers - так называемые Контейнеры) that can run specific pieces (определенные части) of software. In other words (другими словами), it provides (предоставит) a lightweight (легкий) mechanism to “virtualize” environments in a host computer (хост).

Docker is the software development and devops tool everyone wants to use for their projects. It’s a platform that allows you to easily create isolated environments (aka Containers) that can run specific pieces of software. In other words, it provides a lightweight mechanism to “virtualize” environments in a host computer.

Являюсь на данный момент судьёй отборочного этапа "Командного чемпионата России" 2018 года. В работу входит в том числе оформление турнирной таблицы. Таблицу я выгружаю из программы "Горефери" в Excel. Затем копирую в свою мега-таблицу с различными формулами. То, что получаю на выходе, публикую в гугл-таблицах. Ну и сегодня случился небольшой казус. 

Опубликовал итоговую таблицу после первого тура. Затем мне сообщили, что у двух команд, вместо "10.5" очков, показывает "11". Давай разбираться. Округляет при делении на два? Не должен, вон у других отображает "0.5" нормально. Копирую формулу в другую ячейку - и там показывает "10.5". Думаю - формат ячейки не тот! Проверяю - общий формат и главное в окне выбора формата издевательски показывает мне "10.5". И тут, дёрнуло меня - делаю колонку шире. Вуа-ля - "10.5", как и должно быть.

Такого я от Excel'я не ожидал. Мало того, что отображал "11", когда не влезало "10.5". Так еще, редиска такая, копировало в буфер обмена тоже "11"!
Gnome Commander открывал по умолчанию pdf в GIMP'е. Раздражало открывать каждый раз через контекстное меню. Наконец в очередной раз, при открытии pdf в gimp'е, раздражение пересилило лень. Итог:

'/home/username/.local/share/applications/mimeinfo.cache'
[MIME Cache]
application/pdf=evince.desktop
в той же папке создать файл 'evince.desktop':
[Desktop Entry]
Name=pdf viewer
MimeType=application/pdf;application/x-pdf;
Exec='/usr/bin/evince'
Type=Application
Terminal=false
Сейчас нормально открывает. Посмотрю еще - не потрёт ли перезагрузке. Если ничего не допишу сюда в течение пары дней - значит не трёт.

"Техника, блин!"

17.9.17
Представляю свой первый литературный опыт. Критику приветствую.

"Техника, блин!"

Пришел с работы уставший. Стряхнул ботинки на шузклинер. С привычным тихим жужжанием ботинки заехали в нишу для чистки, сушки и намазывания кремом. Утром меня будут ждать, как новые. Прошел в гостиную и устало плюхнулся на диван. Настроение паршивое. На работе завал, и добирался до дома долго. И ведь надо было случайно согласиться на обновление автопилота во время поездки. Совсем они уже там рехнулись в этом Гуглософте, чтобы такое предлагать во время движения. Пришлось ждать на обочине полчаса. В рекламе обещают обновления за 5 минут, но это на 16G, а в нашей провинции всё еще 13G. А после обновления еще и настройки своих мест сбились и никак не хотели синхронизироваться. Пришлось вручную настраивать. Техника, блин!

Чтобы немного развеяться решил посмотреть фильм. Положил ладонь на сканер. На экране высветились показатели настроения - 5 основных шкал и итог. Так и есть, паршивое, -45 баллов. Из текущей фильмотеки ничего не подошло. И неудивительно: -45 это за гранью для меня. Появилось предложение сгенерировать из имеющихся. Для основы предложили три: "Матрица", "Побег из Шоушенка" и "Реальная любовь". Прочитав последний вариант, сильно удивился. Комедийную мелодраму предлагает переделать под -45 баллов. Что же там такое должно получиться? Из любопытства запустил генерирование, и пошел на кухню за ужином. Открыл мульти-шкаф - там уже меня ждал горячий аппетитный стейк ... с пастой. Аппарат на удивление быстро стал учитывать мои вкусы. Консультант говорил, что его через 2 месяца стало устраивать меню. А у меня уже через 10 дней какие-то чудеса показывает. По калориям вопросов нет - арифметика. Но вкус! Я, конечно, не сильно притязателен к пище, но он уже чуть ли не желания мои угадывает. Ведь пока ехал, у меня действительно возникала мысль о стейке. Но паста?! К стейку?! Действительно, чужой алгоритм - потёмки. Техника, блин!

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

Когда появились титры, свет стал ярче. Я аж заморгал - всё забываю настроить плавность возвращения нормальной яркости после окончания фильма. Кто же задаёт такие настройки по-умолчанию?! Заметил, что всё еще держу вилку с куском остывшего стейка, а на тарелке еще пол-порции. Придется идти греть. Вот же умудрились переделать. В виде триллера я еще "Реальную любовь" не смотрел. Зашло на ура. Приятно было наблюдать знакомых персонажей в новых перипетиях сюжета. При чем по внешности и мимике изменения были незначительные. Больше всех, как обычно досталось Кире Найтли. По-моему, движку явно не нравится её настоящая актерская игра. Но тут с ним сложно спорить. По привычке нажал на сохранение в коллекцию, хотя редко возвращаюсь к сохраненным - предпочитаю генерировать под текущее настроение. Иногда и отличий немного, но всегда замечаю их с одобрением. А в прошлый раз это кино, помню, с друзьями смотрели под пиво, так там генератор учёл наше коллективное настроение и переделал его в нигерскую идиотскую комедию - при появлении негритянки, с чертами, напоминающую всё ту же Киру Найтли - лежали все. Техника, блин!

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

Например, имеем данные:


Получаем из него словарь методом, описанным выше:


А сейчас получим тот же результат с помощью метода .setdefault():


Из справки: "dict.setdefault(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ с значением default (по умолчанию None)."
Переставил debian (stretch) и перестала работать клавиатура в Chrome - вообще ни на что не реагировала. Погуглил - оказалось из-за xNeur (аналог punto swither'а). Вырубил его - действительно заработало. Зашел в настройки xNeur и добавил "Google-chrome" в исключения "Приложения-Не обрабатывать эти приложения". Клава заработала в хроме, но переключения раскладки у уже набранного текста не хватало. Потом нашел совет поставить галку в хроме "Использовать системные рамки и строку заголовка". Поставил, перезагрузил хром, убрал хром из исключений xNeur - действительно реагирует на клаву при включенном xNeur. Всё стало ок. Но лишняя строка заголовка в хроме съедает пространство. Увы.

Нагабику (29). Отчет

25.5.17
C 15 по 20 мая проходил двадцать девятый турнир "Нагабику". Было рекордное количество участников: 74. Диапазон уровня игроков тоже был очень широк: от 23k до 6d. До последнего дня из игроков 5d+ был только один - Трубицин Степан. Но в последний день регистрации зарегистрировались: Бурнаевский Игорь (5d), Тычко Игорь (5d), Инагаки Сатоси (6d), Черных Антон (6d).

Стоит отметить гостя из Японии, временно проживающего в Астрахани: Инагаки Сатоси (хотя сам он записывался, как "Сатоши", но в РФГ его ввели по принятым правилам транскрипции, как Сатоси). Как раз перед Нагабику проходил Чемпионат Москвы и Московской области, где он принял участие вне конкурса и занял первое место, проиграв только гостю из Китая. Думаю, что его регистрация в турнире повлияла на решение Игоря Бурнаевского и Антона Черных, которых он одолел на том турнире - хотели взять реванш. 

фото Акинфеева Кирилла

В этот раз решил перейти на новую схему деления на группы Мак-Магона. Раньше я делил на 3, 4 и 5 групп. А тут выделил верхнюю группу в 6d-2k, а остальных поделил по рангам. Получилось 19 групп. Слышал, что это называют деление "по-европейски". Соответственно пришлось изменить и схему награждения призами. Учитывая еще тот момент, что иногда люди сетовали на то, что выигрывали разбор, а хотел книгу, или наоборот, решил ввести бальную систему. Призовых мест осталось только три верхних, а остальные награждались баллами за 5 и 6 побед. Баллы можно копить и обменивать на призы. Здесь подробности.

С первых же туров завязалась нешуточная борьба. Например, можно вспомнить игру Реутова Бориса (ferz), с которым мы играем в одной команде в проекте "Чосэй"от Кухаркина Дмитрия. Он в первом туре попал на Игоря Тычко (AcidBee). И отыграл отлично. Проиграл всего пол-очка. И какого же было его удивление, когда после подсчета очков Игорь Бурнаевский показал пункт, с виду нейтральный, который ни AcidBee, ни ferz не заметили, а его занятие Борисом вынуждало Игоря защищаться и тем самым Борис побеждал бы на пол-очка.


Во втором туре Сатоси попал на первого игрока близкого по уровню - Степана Трубицина. Степан не смог одолеть соперника. (sgf)
А Черных Антон одолел Игоря Тычко.

HappyLook был готов уже в третьем туре сразиться с Сатоси, но нет - соперником у него стал Антон. Борьба, огромное ко и победа за Игорем. (sgf)

Четверг. Четвертый тур. Игорь HappyLook дождался - соперник Инагаки. На чемпионате Игорь проиграл ему 7.5 очков. В тяжелой борьбе Игорь взял абсолютный реванш - 7.5 очков в его пользу. (sgf)

В пятом туре уже Антон брал реванш у Сатоси за чемпионат Москвы. Но не получилось. (sgf)

К шестому туру топ-даны уже друг с другом поиграли, и соперники были попроще. Но это порождает опасное чувство расслабленности. Антон чуть за это не поплатился - Борису Реутову отдал преимущество в первой половине игры и потом пришлось поднапрячься, чтобы одержать победу (7.5 очков). (sgf)

В связи с тем, что делил по рангам, соперники большей частью у всех были под стать им. На большой разброс никто не жаловался. Это повлияло на отличную корректировку некоторых игроков, которые обогнали свой рейтинг РФГ. При обычном делении на несколько групп, таких игроков после первых побед над игроками, которые равны по рейтингу РФГ, зачастую кидает на более сильных игроков, которые сильнее их не только по рейтингу, но и по уровню игры. И при пересчете у них получается не очень большая прибавка. Здесь они двигаются постепенно, поднимаясь приблизительно по рангу вверх после каждой победы. В итоге, призеры, у которых были 6 побед прилично прибавили в рейтинге:
Девятайкин Михаил (real1st), Нижний Новгород, 1115→1638 (+523)
Карпов Александр (Tribyn), Волгодонск, 795→1365 (+570)
Федотов Александр (IskanderDM), Екатеринбург, 173→843 (+670)
Игроки, набравшие 5 побед прибавили от 50 до 300 очков

Также хорошо прибавила Лиза Саламатова. У неё 4 победы. 246→569 (+323)

Хочется отдельно поздравить Игоря Бурнаевского с достижением заветных 2600!

Молодцы!

Немного по спортивным достижениям в разрядной сетке:
Девятайкин Михаил (real1st) - достиг уровня второго спортивного разряда
Порошков Николай (SnowLem) - достиг уровня третьего спортивного разряда
Карпов Александр (Tribyn) - достиг уровня третьего спортивного разряда
Для присвоения данных разрядов, необходимо еще занять опеределенные места в официальных оффлайн турнирах.

Полезные ссылки:

Во второй половине июня планирую провести Нагабику.Сибирь (2). А во второй половине июля планирую провести Нагабику (30). Подробности позже, когда определюсь с датами

Отзывы, впечатления, пожелания, критику можете оставлять либо на форуме, либо в группе вконтакта (там меня уже поругали за слишком оперативную работу).