- Step 9 (S-16694)
- Общие рекомендации по решению задач на bash
- QR код начнёт действовать через 21 день после даты введения однокомпонентной вакцины что делать?
- Спутник Лайт и QR-код — что важно знать?
- QR код начнёт действовать через 21 день после даты введения однокомпонентной вакцины — что это значит?
- Иммунитет после вакцинации
- Мне нужен QR-код уже сейчас – что делать?
- Заключение
- Стильный код на Python, или учимся использовать Flake8
- Flake8: Your Tool For Style Guide Enforcement
- Почему Flake8?
- Flake8: pep8 + pyflakes + more
- Легкость установки и конфигурации
- Интеграция Flake8 с редакторами и IDE
- Наличие Version Control Hooks
- Подробнее о конфигурации Flake8
- Базовая конфигурация
- Модули, расширяющие функциональность
- Послесловие
Step 9 (S-16694)
Общие рекомендации по решению задач на bash
В рамках нашего курса вам будет предложено 5 заданий, в которых вам потребуется написать bash-скрипт. Эти рекомендации расскажут как стоит подходить к решению таких задач, а также покажут наиболее распространенные ошибки и варианты их исправления.
Перед отправкой скрипта на проверку мы настоятельно рекомендуем запустить его в своем терминале, чтобы »»убедиться, что в немнет синтаксических ошибок и что он корректно работает хотя бы на примерах из задания. Результаты должны совпадать с результатами из задания один в один, т.е. важны все символы, например, количество пробелов!
Для отправки скрипта на проверку вам нужно скопировать текст скрипта в соответствующую форму и нажать кнопку «Submit/Отправить». В скрипте вы можете пропустить строку шебанг (например, #!/bin/bash), т.к. наша система проверки её игнорирует и использует для запуска свою версию интерпретатора bash. Кроме того, учитывайте, что если вы копируете скрипт из текстового редактора в Windows, то в каждую строку скрипта может быть добавлен невидимый символ «возврата каретки», который вызовет ошибку проверки.
Наша система проверки не будет исследовать ваш код и искать в нем необходимые команды. Вместо этого она запускает отправленный скрипт на нескольких тестах и сверяет результаты его работы с эталонными. Таким образом, каждую задачу можно решить множеством различных способов, главное чтобы выполнялись поставленные условия. Для проверки мы используем обычный интерпретатор bash, но из-за некоторых технических особенностей и в целях безопасности на ваши скрипты накладываются небольшие ограничения, которые описаны ниже.
Если вы получаете от системы проверки ответ «Incorrect/Неверное решение», то для того, чтобы разобраться в причинах отказа стоит нажать на кнопку Feedback. Вы увидите сообщения одного из следующих видов:
Failed test #1 (или 2). Wrong answer. Результаты работы вашей программы на первом тесте отличаются от правильных. Первый тест полностью совпадают с первым примером из задания, поэтому если он у вас не работает, то проверьте ваш скрипт на этом примере. Если в задании есть второй пример, то тест №2 соответствует ему. Наиболее частые ошибки-расхождения это:
- Отсутствие пробела или наоборот лишний пробел. Например, «Alexey,your group is adult» не то же самое, что «Alexey, your group is adult» (сразу два расхождения).
- Отсутствие двоеточия. Например, «enter your age» не то же самое, что «enter your age:».
- Опечатки в словах. Например, «buy» вместо «bye» или «abult» вместо «adult».
Failed test #3 (4, 5, и т.д.). Wrong answer. Результаты работы вашей программы на третьем тесте отличаются от правильного. В заданиях нет третьего (и всех последующих) примеров, но они проверяют те фрагменты из задания, которые не покрыты первыми тестами. Например, если в задании написано, что калькулятор должен уметь выполнять сложение, вычитание, умножение и деление, а примеры описывают только сложение и вычитание, то тест №3 может проверять работу умножения, а тест №4 — деления. Проверьте, что ваш скрипт выполняет все условия из задания.
Failed test #1. Run time error: jailed_code: line 14: syntax error: unexpected end of file. Ошибка в синтаксисе bash. Синтаксические ошибки бывают разных видов, обычно сообщение подсказывает как номер ошибочной строки, так и то, в чем собственно ошибка. Например, «unexpected end of file» обычно означает, что вы начали какую-то конструкцию bash, например, if, но забыли завершающее слово, например, fi (возможно оно потерялось при копировании скрипта в форму). Рекомендуем перечитать слайды лекций и исправить ошибки в синтаксисе.
Failed test #1. Run time error.Ошибка во время выполнения программы. Чаще всего это вызвано тем, что код возврата вашего скрипта отличен от нуля (обычно это означает в Linux ошибку выполнения программы). Например, вы выходите из скрипта при помощи exit 1 (следует исправить на exit 0). Вы можете проверить код возврата вашего скрипта, запустив в терминале echo Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response («Math extension cannot connect to Restbase.») from server «https://api.formulasearchengine.com/v1/»:): <\displaystyle ? сразу после его завершения (должно быть напечатано на экран число 0).
Failed test #1. »’Time limit exceeded.»’ Ваш скрипт «завис». Например, он содержит цикл, который выполняет бесконечно или скрипт ждет ввода данных от пользователя, когда их уже не должны давать на вход. »’Проверьте»’, что вы правильно описали »’условие»’ »’выхода»’ из цикла.
Failed test #1. Run time error: jailed_code: »’fork: retry: No child processes»’ . »’Resource temporarily unavailable»'». В скрипте используются «внешние» вызовы, которые запрещены на нашем сервере в целях безопасности, чтобы, например, нельзя было удалить какие-то файлы из нашей системы при помощи rm. Под «внешний» вызов может попасть и совершенно неочевидные конструкции, поэтому к этой ошибке надо отнестись наиболее внимательно. Рассмотрим наиболее частые ситуации:
# echo «GCD is `gcd > \$$arg1 Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response («Math extension cannot connect to Restbase.») from server «https://api.formulasearchengine.com/v1/»:): arg2` — вызываете свою функцию gcd (т.е. не внешнюю), но в косых кавычках. Можно исправить перенеся печать «GCD is Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response («Math extension cannot connect to Restbase.») from server «https://api.formulasearchengine.com/v1/»:): results» прямо внутрь функции gcd, а в основном коде вызывать функцию как gcd Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response («Math extension cannot connect to Restbase.») from server «https://api.formulasearchengine.com/v1/»:): arg2 .
- echo Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response («Math extension cannot connect to Restbase.») from server «https://api.formulasearchengine.com/v1/»:): result» .
- while (true) — вызов в круглых скобках также является внешним (по аналогии с косыми кавычками), стоит заменить на просто while true .
- pwd, touch, mkdir, rm и т.п. — запрещены.
Иногда опечатки и синтаксические ошибки также могут быть восприняты как внешний вызов:
- Забыли пробел после »’ (или »’перед). Например, конструкция if [[«exit» == Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response («Math extension cannot connect to Restbase.») from server «https://api.formulasearchengine.com/v1/»:): var1 и ]] .
- Поставили пробелы около =. Например, var1 = 10 воспринимается как вызов внешней программы var1 с аргументами = и 10 .
- Поставили знак Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response («Math extension cannot connect to Restbase.») from server «https://api.formulasearchengine.com/v1/»:): var1=test2 , то bash воспримет это как вызов программы test=test2 (из-за знака доллара вместо переменной будет подставлено её значение, т.е. test ).
- Опечаталисьв команде языка bash. Например, Echo вместо echo или braek вместо break .
Чаще всего такие ошибки легко найти, если вы запустите свой скрипт в терминале. Например, при ошибке описанной в пункте 2, терминал сообщит вам «var1: command not found/var1: команда не найдена».
Если вы проверили свой скрипт всеми описанными способами, но всё-равно не можете понять что не так, а в терминале у вас всё работает, то вам может помочь чтение комментариев других участников под этой задачей. Многие ошибки повторяются, так что возможно и для вашей проблемы уже написано решение!
Источник
QR код начнёт действовать через 21 день после даты введения однокомпонентной вакцины что делать?
Сегодняшнюю социальную жизнь уже сложно представить без QR-кодов. Они требуются для посещения абсолютного большинства заведений, и желая сохранить привычный уклад многие идут на вакцинацию и получают желанный сертификат с куар кодом. И если большинство отечественных вакцин являются двухкомпонентными, то вакцина «Спутник Лайт» ранее позиционировалась как однокомпонентная, позволяющая получить QR-код после всего одной дозы. Получив укол вакциной «Спутник Лайт», мы начинаем ждать желанный куар код, но вместо него получаем уведомление, что QR-код будет доступен лишь через 21 день. Что делать в сложившейся ситуации мы и расскажем в нашем материале.
Спутник Лайт и QR-код — что важно знать?
Как известно, из четырёх отечественных вакцин три предполагают двухэтапную вакцинацию, в ходе которой вначале колется первая вакцина, а через 14 — 21 день – вторая. После получения второй дозы вакцины и внесения соответствующих данных в регистр привитых автоматически формируется электронных сертификат вакцинированного, который поступает в приватный кабинет человека на сайте Госуслуг. Оттуда вы можете его скачать, и в дальнейшем использовать для посещения различных мероприятий, доступ к которым ограничен из-за КОВИД-19.
Несколько в стороне от двухэтапных вакцин стоит вакцина «Спутник Лайт». Изначально она позиционировалась как одноэтапный, облегчённый вариант «Спутника V», позволяющий получить иммунитет от коронавируса за всего один укол. После вакцинации «Sputnik Light» системой также формировался сертификат привитого и соответствующий куар код, действующий один год и дающий право на посещения различных заведений.
Из-за своей одноэтапной особенности «Спутник Лайт» приобрёл определённую популярность, позволяя быстро получить куар код людям, которые в нём остро нуждались. Особенно он приглянулся мигрантам, которые после укола Спутник Лайт могли получить необходимый им допуск на работу.
В начале ноября 2021 года правительством было принято решение использовать вакцину «Спутник Лайт» только для ревакцинации. Использование данной вакцины как однокомпонентного препарата в России постепенно будет прекращено.
QR код начнёт действовать через 21 день после даты введения однокомпонентной вакцины — что это значит?
В методических рекомендациях, которые были опубликованы Министерством здравоохранения, утверждается, что граждане могут получить куар код после вакцинации однокомпонентной вакциной «Спутник Лайт». После прохождения вакцинации в тот же день им выдаётся сертификат вакцинации, их данные заносятся в систему, и они считаются официально вакцинированными.
Тем не менее, в ноябре 2021 года многие люди, прошедшие вакцинацию вакциной «Спутник Лайт» пожаловались, что срок их сертификатов вместо одного года внезапно сократился до полугода. А через несколько дней и вовсе стало отображаться сообщение, что сертификат о вакцинации не найден, а QR-код начнёт действовать только через 21 день.
И если перевод перевод сертификата с одного года до полугода был объяснён сбоем системы (система случайно начала воспринимать сертификат вакцинированного как сертификат переболевшего, действующий полгода), то аннулирование сертификата вакцинации и срок в 21 день возмутил многих. Что же произошло?
Иммунитет после вакцинации
После массовых жалоб граждан на пропажу сертификата вакцинации и соответствующего QR-кода, чиновники Минздрава сначала отказались комментировать данную ситуацию. Позже появились официальное письмо Минздрава, в котором утверждалось, что поскольку иммунитет после укола «Спутник Лайт» формируется лишь через три недели (21 день), то и QR-код после укола данной вакциной будут выдавать только через 21 день.
Таким образом это сравнивает данную одноэтапную вакцину с двухэтапной «Спутник V». У последней второй укол должен быть произведён через 21 день после получения первой дозы с целью достижения максимального иммунитета.
Таким образом, Минцифры и Минздрав считают, что лишь спустя 21 день после укола «Спутник Лайт» вакцинированные данной вакциной смогут получить свой сертификат с куар кодом. Поскольку срок ещё не прошёл, и иммунный ответ организма должным образом не сформирован, чиновники считают преждевременным давать людям QR-код.
Мне нужен QR-код уже сейчас – что делать?
В случае, если после даты введения однокомпонентной вакцины еще не прошёл 21 день, и вам нужен QR-код для работы, посещения нужных мероприятий и других целей, тогда может помочь жалоба об отсутствии куар кода на сайте Госуслуг. Для этого на странице https://www.gosuslugi.ru/10092/1 нажмите на расположенную справа кнопку «Написать сообщение».
В открывшейся форме опишите суть проблемы, с которой вы столкнулись, укажите на отсутствующий и так необходимый вам куар код.
Вполне возможно, что администрация Госуслуг пойдёт вам навстречу, и скинет временный код, действующий несколько недель. Это поможет временно закрыть необходимость в куар коде, и посещать интересующие вас мероприятия без каких-либо преград. Далее по прохождению 21 дня вы получите свой куар код привитого, которым сможете пользоваться в течение полугода. Напомним, что ранее Министерство здравоохранения ограничило срок действия сертификатов вакцинации и соответствующих кодов с одного года до полугода.
Другие способы получения куар кода до истечения 21 дня после первой вакцинации, на текущий момент недействительны.
Заключение
В нашем материале мы рассмотрели, почему отображается уведомление о работе куар кода спустя двадцать один день после получения вакцины. Поскольку Минздравом было принято решение выдавать сертификат вакцинации с куар кодом только спустя 21 день после вакцинации вакциной «Спутник Лайт», текущие сертификаты вакцинации полученные от указанной вакцины были временно аннулированы. Вы можете подать жалобу на отсутствие сертификата, и вам может быть выдан временный сертификат с куар кодом, действующий несколько недель. Слишком надеяться на выдачу временного кода мы не рекомендуем – поддержка Госуслуг идёт на это неохотно, рекомендуя подождать необходимые три недели до выдачи причитающегося вам кода.
Источник
Стильный код на Python, или учимся использовать Flake8
Автор: Анатолий Соловей, developer
Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:
Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.
В результате добавления новых правил количество требований к оформлению кода увеличилось настолько, что удержать их в голове стало очень трудно. При этом обращение к гайдам может занимать много времени и отвлекать от процесса разработки.
За долгое время работы у программистов вырабатывается собственный стиль написания кода, предпочтения в стайлгайдах и прочие мелочи, которые оставляют авторскую печать на программах девелопера. Убедить разработчиков отказаться от привычных им кодстайлов очень сложно, но, даже если это удастся, велик шанс, что в их коде будут проскакивать старые фишки, добавленные в силу привычки.
Когда каждый апдейт проходит строгий код ревью, включающий в себя проверку стилей, подобные ошибки могут очень сильно замедлять процесс разработки. А если ошибки в итоге не заметят даже в процессе ревью, в системе контроля версий проекта очень скоро появится куча нечитаемого и непонятного кода.
На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.
Flake8: Your Tool For Style Guide Enforcement
Сам Flake8 — инструмент, позволяющий просканировать код проекта и обнаружить в нем стилистические ошибки и нарушения различных конвенций кода на Python.
Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины, поэтому в дальнейшем в этой статье я буду отталкиваться от правил из Google Python Style Guide.
Почему Flake8?
Flake8: pep8 + pyflakes + more
Создатель Flake8 Тарек Зиаде ставил перед собой цель объединить главные популярные инструменты контроля кодстайла в одной библиотеке, с чем в итоге успешно справился — Flake8 получился действительно универсальным.
Легкость установки и конфигурации
Чтобы проверить, отвечает ли код в вашем проекте основным требованиям PEP 8, достаточно установить Flake:
и запустить его — просто ввести в командной строке:
после чего вы получите список с именами файлов и номерами строк, где были допущены ошибки, и подробное описание самих ошибок:
Великолепно, не правда ли? Но и это не всё. Если вы не любитель работать с консолью, то вы можете настроить интеграцию Flake8 с IDE или редактором, который вы предпочитаете использовать.
Интеграция Flake8 с редакторами и IDE
Интеграция с PyCharm
Так же актуально и для любой другой IDE от JetBrains.
Интеграция проводится всего за пару несложных шагов.
Откройте настройки External Tools в File → Settings → Tools и нажмите на “+”, затем заполните поля по этому шаблону:
После этого нажмите на Output Filters, а затем на “+”, чтобы добавить новое правило для вывода сообщений от флейка:
Здесь мы говорим PyCharm, что хотим, чтобы в выводе строки с ошибками были кликабельными и открывали в редакторе файл и место с ошибкой
Все. Интеграция Flake8 с PyCharm закончена. Чтобы вызвать флейк и проверить свой код, кликаем правой кнопкой мыши на файл/директорию, которую мы хотим проверить, и в контекстном меню выбираем External Tools → Flake8.
В выводе PyCharm появится кликабельный список нарушений в выбранном файле/директории:
Интеграция с Atom
Чтобы установить инструмент Flake8 для Atom, используйте Atom package manager в Settings и найдите там linter-flake8:
из командной строки.
Затем перейдите в linter-flake8 settings и укажите путь к директории, где установлен flake8:
У linter-flake8 есть собственный ReadMe по настройке, с которым при желании вы можете ознакомиться на странице самого linter-flake8 в Atom.
Наличие Version Control Hooks
Именно это я считаю главным достоинством Flake8, которое выделяет его среди других линтеров. В отличии от большинства подобных инструментов, где для настройки VCS-хуков используются целые отдельные библиотеки и модули (как, например, в Pylint), настройка хуков в флейке проводится буквально в две строчки.
На момент написания этой статьи, Flake8 умеет использовать pre-commit-хуки для Git и Mercurial. Эти хуки позволяют, например, не допускать создания коммита при нарушении каких-либо правил оформления.
Установить хук для Git:
И настроить сам гит, чтобы учитывать правила Flake8:
Я продемонстрирую, как Git hook работает на проекте, который я использовал для примера интеграции Flake8 с PyCharm. В модуле flake8tutorial.py мы видим очевидные ошибки: импортированные и неиспользованные модули, остсутствие докстринга и пустой строки в конце файла.
Первым делом проинициализируем в этом проекте git-0репозиторий, установим flake8 хук и скажем нашему git, что он должен прогонять флейк перед коммитами:
Затем попробуем провести первый коммит:
Как видите, flake8 был вызван перед коммитом и не позволил нам закоммитить невалидные изменения.
Теперь фиксим ошибки, отмеченные флейком, и пытаемся закоммитить валидный код:
Коммит успешно создан. Отлично!
Настройка Flake8 для Mercurial практически идентична. Для начала нужно установить Flake8 Mercurial Hook:
И настроить сам Mercurial:
Вот и все, хук для Меrcurial установлен, настроен и готов к использованию!
Подробнее о конфигурации Flake8
Базовая конфигурация
Список дополнительных опций и правил можно передать прямо при вызове из командной строки таким образом:
(в этом примере опцией select мы говорим, чтобы Flake сообщал о нарушениях только правила E123 (это код правила “closing bracket does not match indentation of opening bracket’s line”)).
Кстати, полный список опций с описанием вы можете найти в документации к самой библиотеке.
На мой взгляд, куда предпочтительнее настраивать Flake с помощью конфигурационных файлов, вы можете хранить настройки в одном из файлов setup.cfg, tox.ini или.flake8. Для ясности я предпочитаю использовать последний вариант.
Файл с настройками позволяет контролировать использование библиотекой тех же опций, что настраиваются для командной строки, базовый конфигурационный файл выглядит так:
В этом файле мы сообщаем Flake, что он не должен оповещать нас о нарушениях правила D203 (“1 blank line required before class docstring”), а также не должен проверять файлы .git, __pycache__, docs/source/conf.py и директории old, build, dist.
В конфигурационных файлах можно оставлять комментарии, это полезно делать, если вы предоставляете большой список правил, которые Flake должен игнорировать:
Также можно добавить в исключения отдельную строку в вашем модуле, просто оставив на этой строке комментарий noqa. Тогда при проверке модуля Flake8 будет игнорировать ошибки, найденные в строках, помеченных этим комментарием:
Модули, расширяющие функциональность
Так как Flake позволяет создавать и использовать кастомные плагины, для него можно найти большое количество open-source плагинов. Я опишу только те, которые использую сам и считаю особенно полезными:
Плагин, проверяющий порядок импортов в проекте: в стандартной конфигурации первыми должны идти импорты стандартных библиотек (stdlib), затем импорты сторонних библиотек, а потом локальные пакеты, причем каждая группа отделена пустой строкой и отсортирована в алфавитном порядке.
Этот плагин расширяет список предупреждений Flake, добавляя туда три новых:
- I100: Your import statements are in the wrong order.
- I101: The names in your from import are in the wrong order.
- I201: Missing newline between sections or imports.
Установка:
Более подробно о настройке flake8-import-order можно прочитать на странице библиотеки на Github.
Плагин, добавляющий поддержку функционала из pydocstyle — проверку докстрингов на соответствие конвенциям Питона.
Список добавляемых этой библиотекой правил можно найти в документации pydocstyle.
Сама по себе эта библиотека никак не настраивается, однако добавленные правила можно внести в исключения, если какое-то из них неактуально для вашего проекта:
Страница библиотеки на Github тут.
Плагин, проверяющий код на использование встроенных имен в качестве переменных или параметров.
Как и в случае с flake8-docstrings, у плагина нет дополнительных настроек, но добавленные им правила можно, например, внести в исключения флейка:
Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.
Плагин, позволяющий контролировать тип кавычек, которые будут использоваться в проекте.
Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.
Послесловие
Хотя настройки, описанные выше, в 97,5 % случаев смогут предотвратить появление некачественного кода в репозитории, он так или иначе может оказаться запушенным (например, если деву было лень вводить две строчки для настройки pre-commit hook). Поэтому я настоятельно рекомендую добавить вызов Flake8 на этапе билда пул-реквестов в используемой вами системе continuous integration, чтобы предотвратить мердж невалидных пул-реквестов и попадание ошибок в мастер.
Надеюсь, эта статья была вам полезна и позволит в дальнейшем максимально гибко и качественно настраивать рабочий процесс и стайлгайды в ваших Python-проектах. Всех благ.
Источник