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

Ansible best practice #1

Да, мне потребовалось два года, чтобы догадаться, что "так надо":

Ни один темплейт не имеет права работать с глобальными переменными. только то, что определено в секции vars. То, что глобальные перменные вообще доступны в темплейте - большая ошибка дизайна.

То есть не:

template:
  src="foo.j2"
  dest="foo"
with_items: '{{mylist}}'

+ 
foo.j2:
{{item.username}}, {{item.foobar}}, {{ansible_default_ipv4.address}}


а вот так:

template:
  src="foo.j2"
  dest="foo"
vars:
  username: '{{item.username}}'
  foobar: '{{item.foobar}}'
  ip: '{{ansible_default_ipv4.address}}'
with_items: '{{mylist}}'

+ 
foo.j2:
{{username}}, {{foobar}}, {{ip}}


Количество боли, которое я от первого подхода огрёб, словами не описать. Всё потому, что я не задумывался о том, что var можно определять в каждой таске раздельно.

Особенно это хорошо сочетается с include_role.
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

Prison School

Довольно чоткий и дерзкий фемдом, по самым каноническим канонам. Местами приятный сёнен-гротеск в дизайнах второстепенных персонажей. Анимация скудноватая даже в опенинге, зато заменяемая множеством добротных стилл-фреймов.

Дизайны местами откровенно порнушные (а чо вы от фемдома-то хотели), но презентация истории довольно выразительная и яркая. Я бы сказал, по формату рассказа оно примерно как 20% от бакемоноготар. Почувствуйте масштаб и грандиозность!

Кстати, анимация оказывается лучше, чем казалось по первым кадрам, и даже такая неиллюзорная шафтовость проглядывает.. (даже полез перепроверить, не шафт ли это. Нет, не шафт).

Рисунок крайне нестандартный - помимо линейной пластики при разговоре (если кто не понимает - в зависимости от положения рта и лица разные линии в разных местах видны, а не "анимация говорящего рта поверх статичного лица"), ещё появляется хоть и не очень яркий, но всё же меняющийся тон.

Избыток тональной пластики (её только у шафта видно и только в "суперкадрах") даже несколько отвлекает, потому что очень непривычно.

По сюжету средней руки комедия, хотя интригуют и обещают больше.

Не. Оно офигенно режисурой, интересно рисунком и продуманностью в мелочах. Это, однако, не отменяет сортирной эро-комедии, как основы всего.

PS Для тех, кто не понимает, что такое фемдом:



Пока что в обязательный watch list.
404

Споконы этого года

Уже можно подводить какие-то промежуточные итоги

Haikyuu!! - я ожидал, что они сольются, несколько раз. Сёдзе-типажи, повторяющиеся эмоции, средней руки сеттинг. Но - вытягивают. Оно смотрябельно, причём именно на линейных коньюктурных эмоциях (как и положено любому спокону). Простую эмоцию - но её раскрывают и доносят.

Baby Steps - почти полная противоположность первому. Почти нет эмоций, персонажи откровенно некрасивые (в сравнении с огнеными, хоть и сёдзе, дизайнами в Haikyuu), почти нет драйва. Зато совершенно непропорциональное спокону присутствие интеллекта. Причём не в смысле "гений у станка", а в стиле "бытовой разумности". Очаровывает. Так же, как и стратегическая композиция, раскрывающая карьеру спортсмена.

В любом случае, если на 1-5 я их смотрел, скорее, с кредитом доверия, то сейчас (18ая серия) оно имеет однозначный уровень "уверенно смотрябельно". Местами, даже хорошо. Если они сумеют сохранить настрой, то будет даже отлично. Причём, для Haikyuu точно видно, что оно не может быть долгим, с большой вероятностью - 26 серий и всё. А вот Baby Steps точно тянет на формат 60+, а то и 100+.
404

как правильно отбрёхиваться (админское)

Разбираю старую почту. Совсем старую. Нашёл письмо, решил сохранить для потомков.

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

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

Ключевое тут не "какой я весь из себя белый" (я в курсе как оно должно быть по совести), а в том, как отбрёхиваться в процессе выяснения виновных в проблеме, которую никто толком и не понимает.

(Предыстория переписки: дизайнер сказала что она не ожидала, что админка смотрит попой наружу и предположила, что закрывать доступ к админкам с паролем qwerty должен админ).
Collapse )
404

онгоинг Onii-chan Dakedo Ai Sae Areba Kankeinai yo ne

Очередной бразокон, который есть быть фэнсервис для сискона. Больше ничего особенного сказать нельзя, кроме новомодного моэблобнутого дизайна девочки (губки а-ля Denpa Onna).

Очень много говорят прямым текстом, так что звучит оно более-менее свежо и неизбито, так что пока что смотрим.

(это я написал к середине серии)

Но его превратили в обычный гарем, так что нет.
404

Gundam -> Zeta

Собственно, самое сильное изменение произошло в технической части.

Гандам был прорывом из меха 70ых, но был всё-таки "из 70ых". Отсюда и гантанк, ганканнон, гандам хамма, и довольно идиотские гаттаи, и фетишизация тентаклей (м... э... это не атрибут 70ых) у меха.

В Зете выкинули хлам 70ых и полностью посвятили себя гандамизации. Mobile Suit is serious business, bro. Патетичная серьёзность мех, фактически, именно в зете определяет суть франшизы на ближайшие 20 лет.

... Надо сказать, дизайны мех довольно сильны - я насчитал минимум два прототипа будущих ангелов Евы в дизайнах мех (Psyco Gundam и ещё один мелкий).

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