Квест в консоли на Python. Часть 2

Итак, продолжаем продолжаем писать квест в консоли на языке Python. Первая часть описана здесь. В ней мы реализовали автоматическую загрузку и сохранение состояния прохождения квеста. Сейчас же займемся (начнем по крайне мере) отрисовкой локации, и реакцией на нажатые кнопки. В локации предусмотрим возможность отображения картинки из ASCII. Например json стартовой локации может выглядеть примерно так:

Создадим класс TLocation, при инициалиизации будем передавать в него инициализированный класс player. В переменной класса data — будем хранить загруженную локацию.

Далее нарисуем верхнее меню, где сообщаем игроку, на какие локации он может перемещаться, и что он держит в руках:

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

В результате картинка (квест в консоли) на мониторе выглядит уже чуть симпатичнее:

 квест в консоли

Квест в консоли на Python. Часть 1

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

Сначала определимся что где и как:

  1. Локации будем описывать в формате json
  2. Локации будем складывать в папку locations. Имена файлов — номер локации.
  3. В ходе квеста можно «сохраняться», чтобы была возможность продолжить квест
  4. Сохранения будем хранить в папке saves
  5. Все классы храним в папке classes

В результате у меня получилась такая структура папок и файлов:

квест в консоли

Первым делом нарисую минимальный json стартовой локации:

Т.е. начинаем на стартовой локации (0), доступны переходы в локации 1,2,3 и 4.

Далее реализуем класс игрока, с реализацией функционала сохранения и стадии прохождения квеста:

В главном файле (main.py), реализуем проверку аргументов командной строки и переход к началу квеста:

Разработка «квест в консоли» может быть действительно просто.. Вы можете посмотреть и другие мои статьи посвященные разработке на Python

Дата истечения сертификата

Неожиданно задался вопросом как проверить дату истечения сертификата сайта (дата истечения сертификата сайта), если нет возможности воспользоваться для этого онлайн-сервисами, а еще коварный AVP Kaspersky на ПК в браузере подменяет сертификат на свой. В самих файлах *.key *.crt визуально даты не наблюдаются.. Остаётся несколько вариантов: посмотреть по дате создания файла, и прибавить год ;). Ну так себе вариант. Второй, правильный — воспользоваться утилитой командной строки openssl. Примерно так:

Ну или если используете letsencrypt,то файл с расширением pem:

На выходе будет примерно так:

дата истечения сертификата сайта

Will-change потребляет слишком много памяти

На днях на одном из сайтов, столкнулся с интересной ошибкой, которая выводится в консоли браузера Firefox:

Will-change потребляет слишком много памяти. Лимитом бюджета является площадь поверхности документа умноженная на 3 (510230 пикселей). Вхождения will-change, превышающие бюджет, будут проигнорированы

Проведя небольшое расследование, понял что проблема кроется в коде галереи WordPress, которая выводит картинки на страницы в слишком хорошем качестве (читай в оригинальном). И когда картинок становится на странице больше чем несколько, соответственно и происходит данная оказия. Исправил, покопавшись в исходном коде. А именно заменил функцию wp_get_attachment_metadata(), которая выдает url оригинального файла, на wp_get_attachment_image_src, которая может выдавать URL уже нужного размера. При использовании стандартной медиабиблиотеки в wordpress, она при загрузке автоматически режет файл на наиболее востребованные размеры.

Will-change потребляет слишком много памяти

Другие статьи по wordpress

Картинка из base64

Довольно типичная задача — нужда чтобы изображение полученное в виде данных при помощи например запроса ajax (картинка из base64), отобразилась на веб странице. Решение простое, и даже не требует никаких перекодировок, так как, движёк браузера уже позволяет отображать такие картинки, достаточно указать ему формат данных источника. Например так:

Картинка из base64

Ну а если задачу рассматривать в комплексном виде (картинка из base64), то готовый код с запросом данных для отображения картинки может выглядеть так:

1 2 3 4 283