July 12th, 2018

(no subject)

Задумался тут о странном - python позволяет разными способами перопределить иерархию наследования, так сегодня я делал наследование, где в основе лежат два базовых класса... На самом деле-то всегда один, но какой именно - зависит от параметров (один из них - файл конфигурации, так что свобода маневра есть). С одной стороны, создать абстрактный класс-фабрику, конструктор которого создает экземпляры конкретных классов-потомков - точно возможно, но есть сомнения - можно ли от такого счастья наследоваться дальще. Насколько помню, класс-предок это свойство именно класса, а не объекта и код не может работать в принципе. С другой стороны, ему просто не хватало одного параметра скорее всего по недосмотру и запустить его (пусть даже удалив этот параметр с корнем) точно можно, пусть сегодня я и предпочел поспешить на маршрутку.
Другое дело, как будет работать такой кадавр - будут ли наследникам доступны методы потомка - ради чего наследование и делалось? Конечно можно сделать и более топорно, создав базовый клас фасадом для спрятанного в нем драйвера-реализации, но есть и вторая проблема. Не получается сделать низкоуровневый драйвер ничего не знающим о тех классах, что будут его использовать - в разных высокоуровневых классах разный достаточно высокоуровневый код, достаточно зависящий и от драйвера и от предметной области, и я пока не придумал, как избежать декартова произведения.
Тут или делать методы в стиле "подготовить обучающие/тестовые данные в формате класса A/B/C под драйвер 1/2/3" или делать много низкоуровневых драйвероспецифичных методов. Второе вроде как правильнее, но тогда типы передаваемых параметров и возвращаемых результатов будут тоже зависеть от драйвера. Для языка с динамической типизацией это невелика беда, но как общее решение - так себе. Неаккуратненько как-то!
Пока еще думаю.
---- наутро --
Да! Верно говорят, что с проблемой нужно переспать - скорее всего самым интересным способом будет готовит данные в общем (numpy) формате, преобразуя перед самым использованием, а иногда и преобразовывать не нужно будет.

Остановился и слегка успокоился

Добрался таки до столярных дел. Неубираемое без специальных приседаний фрезером легко спилилось шлифмашинкой - где-то даже сохранились фото результата. Полки выровнял по высоте, где это нужно было - в основном и так хорошо. На торце фанеры промелькнули буквы "chi" - думал, китайская - нет,  там "Верхнее Синячино" написано - ничего себе название для деревни! Хорошо, конечно, когда в деревне не спиваются, а фанеру делают - ну если эти процессы считать взаимоисключающими (а это очевидно не так - история позднего СССР подтверждает). Раньше дети часто просили - "папа, не пили", чем сильно напоминали о социальной рекламе, где "папа, не пей!" Теперь же мои деревяшки просто теряются на толстом культурном слое игрушек и игрушечьих останков, а пыль от шлифмашинки пылесос хорошо собирает. На выходных бы прибраться, но какой с меня уборщик - с новой-то видеокартой?! Максимум полочки примерю/размечу чтоб на неделе морить и лакировать, а все остальное - только пока "оно считается".

У велосипеда камера, оказывается, не пробилась, а просто спустила - не знаю, как именно, но камера держит накачку и всё хорошо. Естественно выяснилось всё после смены камеры - конечно же, так (етить) интереснее! А вот насос сдыхает - именно поэтому тогда колесо не накачивалось.
Кроме извечного распознавания букв, есть еще пара идей, о которых я не буду писать, пока они не получатся (или пока они определенно НЕ получатся) и эти идеи как раз про нейронные сети и без видеокарты там нужны месяцы (а может и годы) экспериментов. Жаба придавлена безпооворотно, не квакает и не отсвечивает (насовсем так опасно, на воскресенье запланированы реанимационные мероприятия для земноводного), а до выходных девиз один - "на магазин"!