← All posts tagged Haskell

agr

первую страницу налабал на новом фреймворке:
— 1 тип данных рендерится,
— 10 разных рекордов
— 4 вида элемента
— 5 событий
— рендеринг через blaze-html
— если проводить аналогию с Data.Aeson, то для "Value" ещё не покрыт "Object".
— куча бойлерплейта.
— связь событий с моделью прописывается отдельно, т.е. потенциально: "забыл", и привет баги в рантайме.. надо думать новый констрейнт, чтобы прямо в MarkupM (или обёртке) можно было события назначать, ну чтобы хотя бы как в пурскрипте.

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

под размерностями я понимаю:

1. модель коммуникации
— broadcast/multicast
— выделенная сессия
2. реализации MVC концепта, нужны примеры (список простых примеров уже есть, бери и делай)
3. формат данных:
— текстовый (+)
— бинарный (на следующей странице обкатаю)
4. клиентские (JavaScript) события (условно, тысячи их.. это целый мир джаваскрипта, на который я замахнулся). Пока покрыто лишь 5.

agr

одолел, короче, эту ботву с базой пакетов. есть замечательный пакет ghc-paths. в нём пути к тулам определяются через переменные окружения, например, GHC_PACKAGE_PATH.
cabal-install, ghc и ghc-pkg растут и развиваются. и тут приходит стэк и начинает переписывать переменные окружения, т.к. у него есть минимум 2 базы пакетов (от снапшота, компилятора) в ~/.stack. ещё есть ~/.../.stack-work. там тоже есть, да. по ходу дела во время билда stack делает своё страшное дело и затирает HASKELL_SANDBOX_CONFIG, устанавливая его в базу пакетов снэпшота (!). вот это вообще ни разу не тривиально. я думал, что "песочница" — это база локальная, из .stack-work. а оказалось, что нет. снэпшот — это песочница. таким образом, все extra-deps, которые кладутся в .stack-work, остаются не удел и не видны.

придумал вообще рабочий костыль.
если вижу в пути ".stack", то пускаю "stack exec — ", иначе — оставляю значение из ghc-paths (либо дефолтное).

agr

Решил, наконец, поиграться в метамодельки. Веселье заключается в том, что каждому рекорду соответствует ещё его метадата. В связи с чем, возникает хороший вопрос... Допустим, у меня есть тип данных A с именем объекта (aName) и ещё 8 рекордами (aParam1 .. aParam8). Поскольку я помимо данных из базы тяну ещё и метаданные, по которым их идентифицировать, и не люблю ддосить базу, то мне надо вытащить за раз одним селектом 19 полей (имя, идентификатор и тип объекта (3) + параметр и его айдишник x 8 (16)) из базы. Persistent со своим RawSql отваливается на подступах с 8 колонками.

postgresql-query потянет? или что-т другое?

agr

хочется странного.
1. host=osx.
2. stack docker собираю под линукс
3. в локальной pkg-db, соответствующей ghc-8.4.3-linux, есть пакет, лежит в .stack-work внутри соответственно.
4. в глобальной pkg-db, соответствующей ghc-8.4.3-linux, нету этого пакета.
5. в родительском пакете юзается ghc-paths, в котором явно триггерится ghc-pkg. опытным путём было установлено, что глобальный.

как поместить пакет из local db в global db?

сейчас проект собирается с хаком:

export GHC_PACKAGE_PATH=$(stack path --ghc-package-path)

agr

Офисное барахло то падает, то взлетает, по ощущениям тяжело даётся, но эскалации отбили.. По сайту прогресс остановился, т.к. ряд действий вовлек меня в череду задачек, цель которых — себя поучить лишний раз и подумать о своём поведении. Одни даются хорошо, другие — хуже.. Потихоньку покрываю интерфейсы разные..

Добавил haskell, т.к. столкнулся с тем, что в пакете HDBC-odbc по умолчанию модуль пытается считать DSN из C:\Windows\System32\odbcad32.exe, а не C:\Windows\SysWoW64\odbcad32.exe. Сил никаких нет, хочу заполучить данные из MS Access, попутно простреливая себе колени. Есть идеи, куда нажать?

agr

Хочу систематизировать лапшу из команд и конфигов:
— для билда (с докером или без) и деплоя (scp/rsync)
— на локальную машину, тестовый стенд и продакшн.

Смотрю в сторону Shake. Как оно в целом? Или что другое посоветуете?