agr

обкатываю промежуточный результат в действии:

— публикация/снятие с неё (custom actions),
— сохранение/удаление состояния в базе,
— подсветка модифицированного объекта

за каких-то тридцать минут сделаны..
скоро доберусь до трансфера картинок и кейса с суммой типов!
посмотрим, как с ним справится эта хреновина..

agr

столкнулся с нежданчиком. если
1. именовать аргументы одинаково в разных функциях,
2. вызывать одну функцию в другой,
то после трансляции в JS — может бомбануть..

примерно то же самое при паттерн-матчинге. ну а чего ещё можно было ожидать от мёртвого компилятора?!

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

agr

ивенты заработали! CPS заюзал, и всё разрулилось! говоря по совести, не до конца врубился, как этот трюк сработал, но rigid type variable назойливая проблема ушла, а это главное.

теперь на очереди мост-клиент, тут всё забавнее..

agr

имея в распоряжении минимум 15 минут в день, можно психануть и просидеть до глубокой ночи, что вчера и случилось.

старый MarkupM так устроен, что в него трансформироваться из нового из-за полиморфизма не удалось..

уже хотел было взять пилить интеграции со всеми веб фреймворками, но решение нашлось! взял рендеринг в текст, а потом конвертнул preEscapedText в старый Html, с которым все дружат.

теперь код, содержащий одно дерево как для Html, так и для JS, рендерит DOM. как следствие, убрал костыль, которым раньше доставлял события на клиент, чуть поехала структура моста, надо фиксировать.

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

agr

— поставил плагин Protein (ключевые слова: Kotlin, swagger).
— искал минут двадцать, как им воспользоваться.
— наткнулся на кнопулю в правом верхнем углу в ряду справа от дебага и пр.
— натравил Protein на swagger.json.
— сижу теперь разгребаю, хаскельные типы на местные меняю. переименование называется рефакторингом в этих ваших IDE.
— кажется, что думать не нужно. чисто механическая работа.

agr

это кошмар:
— открываем Android Studio.
— всплывает 100500 сообщений об обновлениях (собственно, ради чего это и затевалось).
— читаем все лицензионные соглашения снова (и тут же забываем).
— ждём, пока всё это зло студия подгрузит и поставит.
— попутно проходим квесты вида "установка в установке" с чтением доп. соглашений.
— затем студия предлагает ребутнуть себя. соглашаемся.
— после чего студия рекомендует обновить gradle до более новой версии. окей.
— компиляем/запускаем проект под эмулятор "Android 9 Pie".
— PROFIT! [2 часа (с чтением)!]

agr

прямо blaze-html заюзать как оно есть — не получается. для ивентов в blaze-react добавляют дополнительный тип и по сути переписывают blaze-html под капотом, добавляя туда EventHandler ev и всякие эффекты.

мне эффекты нахрен не сдались, т.к. я их упакую в TChan и на другом конце провода поймаю уже от клиента, там все эффекты полезут.

рендерить это добро мне тоже не нужно, поэтому все атрибуты, наводящие потенциально на события (атрибут "onclick" и т.п.) от греха надо занулять, DOM не нужно об этом знать, чтобы не попортить ничего.

т.е. для корректной "работы" Markup ev мне нужны a) чистая функция renderHtml, которая сделает текст, который бери и рендери уже как угодно, и б) чистая функция registerEvent, которая создаст мапу с идентификатором элемента DOM в качестве ключа и событием для передачи на клиента в качестве значения.

agr

наконец, став мейнтейнером fay, добавил поддержку сборку проекта с fay через stack. теперь stack может сколько угодно перезаписывать переменные окружения GHC_PACKAGE_PATH и HASKELL_SANDBOX_INIT, а проверка пакетов и псевдотайпчек феечкой будет проходить! отлично, теперь ещё версию надо на hackage занести и переключаться с локального пакета с фиксом на внешнюю зависимость. затем повторить круг для yesod-fay. тут я уже мейнтейнер, должно проще быть.

когда меня совсем перекроет, надо ещё поддержку nix воткнуть.

agr

еду в сапсане, рядом чувак сидит и пырится в мой экран. пусть смотрит. фильм там показали годный. 12й человек. много крупных планов, но они там по делу. саамам респект.

agr

теперь я понимаю, почему у Саймона перелопачен был весь blaze-html. нельзя просто взять и параметризовать AttributeValue. у него поменялся kind.

затащил к себе всю модификацию, начал склеивать всё воедино и интегрировать с примером страницы, чтобы из одного стейта получить сначала Markup, а из него уже оба Html и JS, как и планировал.

agr

прочёл в инете опыт чувака, который откликался на всю рекламу подряд в вебе в течение месяца, и его забанили как бота, перестав показывать ему рекламу.. интересно, если запилить кликер, каков шанс потерять доступ, например, к другим сервисам гугла или яндекса с такими пирогами?