Category: дизайн

Category was added automatically. Read all entries about "дизайн".

404

Речекряки ансибловые

Всё-таки у дизайнеров языка представление о выразительной способности вырвиглазно вырвательное.

Всё что мне нужно — исключить из словаря (объекта) ключи у которых значение кастится к false.

Питон:

{k:v for k,v in somedict.items() if v}

Ансибловое прекрасное что удавить/ся хочет/ся:


'{{ somedict|dict2items|rejectattr("value", "equalto", "")|list|items2dict }}'

Я думал, что более мерзкого, чем assertEqual в testunit не придумать. Оказалось, придумать.


404

freecad'ное

Я нашёл для себя один workflow, которому и следую (задача - создать план квартиры, достаточный для дизайн-проекта, включая монтаж/демонтаж, сантехнику и электрику).

Это медленный процесС, в котором 70% тратится на обучение freecad'у, 28% на обучение технике замеров, и 2% на сами замеры.

Я, вроде бы, освоил некий workflow. Его основная фича - использование формул в параметрах и placement элементов.

На практике он состоит в том, что каждая стена измеряется раздельно и представляет собой Rectangle. Все коррекции, колонны и т.д. будут выполняться поверх этого rectangle (у меня не решённый вопрос что делать со стенами у которых углы не 90°, думаю).

Каждая стена имеет размерность либо от замера, либо 'dependent' от другой стены. Placement каждого элемента, кроме BaseWall (стены с входной дверью) всегда формула от других стен. В этом случае изменение любого замера автоматически пересчитывает всю квартиру, что я считаю, офигенно (см про 28% на замеры).

Все комнаты комнаты и помещения сначала делаются цельными блоками (без дверных проёмов), дверные проёмы будут вычитаться. (Я не уверен, возможно, наоборот, все окна-двери будут дырами, которые будут потом заполняться доп. элементами).

В целом - когда найдёшь workflow, то просто, пока ищешь и думаешь - страдаешь.
404

программерское

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

То есть какой-то тривиальный конструктор из "class Device" с методами сбора информации и разных операций я делал с пятой попытки, изобретая какие-то адские речекряки с глобалами, в которые лазали три разных класса и "всё равно" получалась путаница.

Я не знаю как это у "настоящих программистов" происходит, но в программировании я ощущаю ровно три проблемы:

1) Ошибки дизайна среднего уровня (которые приводят к постоянному недоперерефакторингу, сильно замедляющему всё и вся).
2) Чрезмерные обобщения и универсализация того, что универсализировать не надо (условно, у того же class Device метод update_info зачем-то принимает параметром "устройство" помимо self, да ещё и делает с десяток проверок, чтобы понять, что этот 'device' это то, для чего можно выполнять проверки - хотя чуть раньше почти они же делались в __init__/
3) Острую нехватку знаний о том, "как делать правильно".

Вот написал я класс Device, который данное блочное устройство с разных мест облизывает. И точку монтирования для него находит, и номер в энкложе, и букву диска, и статусы, и смарты, и uuid файловой системы, и даже делает всякое полезное типа монтировать/отмонтировать.

А теперь как бы мне для него юнит-тесты-то написать?

__init__ дёргает кучу внутренних функций, которые лезут в реальные блочные устройства (по абсолютному пути) и что-то там выискивают.

И как я его тестировать должен?

Допустим (упрощая задачу):

class Device:
    def __init__(self, device):
        with file('/sys/block/%s/device/status' % device, r) as f:
            self.status = f.read().strip()
        self.device = device

И как мне для такого unit-test писать?
404

онгоинг Hayakko

Колоссальный фейл. Весь кредит на просмотр авторы умудрились просрать за тизер до опенинга. Опенинг добил.

Персонажи никакие, дизайны унылы, сюжета нет (я уже отсюда вижу). И даже сейю "от Конаты" не катит - такое впечатление, что озвучивала в полсилы.

УНЫЛО. Дроп.