трек из трейлера к миньёнам вторым.

Beastie Boys — Sabotage — YouTube

Этот трек играет когда в трейлере желтые угоняют самолёт и идут на взлёт. К слову — в фильме было иначе. Если в трейлер вставили довольно бодрый и драйвовый звуковой ряд, который прям очень подходил к моменту предположительной аварии (врезания самолёта в диспетчерскую вышку). То вот в фильме в этом месте играет просто классическая музыка. Которая полностью рушит атмосферу напряжённого момента.

Объявление. Определение. Инициализация

Запишу в чём разница, чтоб закрепить в голове.

Объявление

Это когда для «всех» объявляем что мы будем использовать нечто с определённым именем и определённого типа. Никто не знает что «это» из себя представляет. Как с ним взаимодействовать и что «оно» в себе содержит?

Определение.

Это когда мы говорим что «ЭТО» с таким то именем работает вот так то и устроено так то. Таким образом «все» присутствующие кроме имени также теперь имеют представление что это такое, как оно выглядит и как с ним работать.

Инициализация

Это когда уже зная название, внешний вид, внутреннюю конструкцию , мы говорим что этот объект/сущность содержит в себе вот такое конкретное значение. То есть — она НЕ пустая теперь. А заполненная.

Абстрактный пример из окружающего мира:

Объявление

мы будем использовать чашку

но какую?

Определение

это чашка снаружи зелёная, внутри белая, её высота 10см, её диаметр 7 см, она выдерживает температуру до 200 градусов и пригодна для пищевых напитков. У неё нет крышки а стенки тонкие — она не годится для сохранении температуры содержимого длительное время.

а что в ней есть?

Инициализация

В чашку (согласно определению выше) налит чай чёрный с лимоном и сахаром. Горячий

Python, class, self. Немного о том что такое self в конструкторе класса и зачем он(и в методах класса). Моё понимание

Данная интерпретация имеет свободный характер и не претендует на истину последней инстанции.

Я понимаю это так. Когда создаём объект класса, то отдельно в памяти выделяется под неё место, куда записываются имя объекта, параметры (унаследованные от родительского класса) и их значения (заполненные конструктором класса). Но также объект наследует от своего класса и методы. Но метод это не переменная. Это некий программный код, который имеет входные значения, что-то с ними делает и выдаёт или нет результат. Значит нет необходимости дублировать код методов для каждого объекта — он будет для всех объектов одинаков. Потому он хранится (код методов ) в единичном экземпляре где-то в теле класса. И если для конкретного объекта необходимо вызвать его метод — то программа в этом месте просто переходит к тому самому, единственному экземпляру кода этого метода, который хранится в классе — передаёт ему на вход параметры и выполняет его. Но если код единственный, то как он поймёт с данными какого объекта он сейчас работает? Вот для этого и используется self — здесь неявно передаётся указатель на конкретный объект. И когда метод выполняется и внутри него есть сочетание self.переменная — то программа понимает что вместо self на самом деле как бы можно поставить имя конкретного объекта. И обращение происходит к конкретной переменной конкретного объекта.

Почему неявно передаётся указатель на объект? Потому, что при вызове метода объекта — мы не передаём имя объекта в качестве параметров. Обычно мы вызываем метод в виде Объект.Его_метод(параметры,..). Мы в начале указываем имя объекта. Это для простоты понимания кода. Но в само деле выглядит это как Класс.Его_метод(указатель_на_объект,параметры,….)

Оставлю себе на память.

Onenote low speed text enteryng медленный ввод текста

Уже не единожды сталкиваюсь с проблемой в программе Onenote: когда я набираю текст, то в окне ввода он отображается с задержкой порядка 1-2 секунды. Что дико бесит.

Проблема кроется в ошибке синхронизации. Если выставлена автоматическая синхронизация книг и возникает какая то ошибка — программа пытается выполнить синхронизацию во что бы то ни стало. Если машина слабая — то заметно как программа тормозит с обработкой команд ввода от оператора.

Решение: просто перевёл синхронизацию книг в ручной режим. Теперь можно работать гораздо комфортнее.

Pygame. Snake — простая «змейка» на питоне

Использование библиотеки PyGame для пайтона. Скопировал чужой код игры «змейка».

Первое — необходимо установить библиотеку питона. Это делается просто. В командной строке ОС набрать :

Pip install pygame

Если не сработает — запустить консоль от имени администратора.

Код приведён здесь Snake Game in Python using Pygame — copyassignment.com

Для практики запоминания синтаксиса  — я набирал код ручками по оригиналу, кое где внося изменения. Изменения вносил незначительные — в основном заменял длинный выводимый текст на более короткий.

Однако после первой попытки запустить код — я лишь на мгновение увидел черное окошко программы и на этом её выполнение успешно завершилось. Без каких либо ошибок.

Чтоб выявить в чём проблема — решил создать новый файл программы, скопировать туда код с сайта «как есть» и попробовать выполнить. Результат — код рабочий. Я увидел игровое окно и смог поиграть. Ага — значит где-то я накосячил переписывая код.

Значит необходимо сравнить текст программы, набранный мной, с текстом оригинала. Построчно.

Сперва я решил воспользоваться онлайн ресурсом для сравнения текстов. Использовал первый что попался в выдаче поисковика — Compare text online

Я остался очень недоволен удобством этого ресурса. Никак не понял — нужно ли перезапускать проверку, если я внёс коррективы в текст прямо на этом сайте, или нет.

Вспомнил что в моём любимом Total Commander  есть плагин/встроенная утилита для сравнения файлов по содержимому. И — да! Она оказалась очень практичной.

Ошибок было около 5-6. И главная из них заключалась в несоблюдении правила табуляций в языке Пайтон. Функция вызова циклической отрисовки окна находилась не в своей позиции. И из-за не соблюдения табуляций, она оказалась внутри функции, которая срабатывает только раз, если не была вызвана функция закрытия окна. А она тоже как то так оказалась в таком месте — что она вызывалась не тогда, когда задумано.

Внёс поправки. Запустил код и получил рабочую программку.

Следующий этап — разбор кода.