117
Haskell, распределённые системы. Разработка P2P CAS hbs2 и приложений для него Распределенный git aka hbs2-git hbs2.net Прочее https://t.me/genedrd47r (мото, EUC, скайдайвинг, дайвинг)
Пока неохотно, но коммиты расползаются по нодам. Бесплатно получаем зачаток чата, чем gossip не чат. по сути чем сплетни отличаются от трёпа? Учитывая, что распределенный сторейдж идёт в комплекте, можно уже запиливать еще один распределенный мессенджер. И везде сплошное UDP!
Читать полностью…
Когда работал в Keenetic, смотрел, как делается "операционная система" изнутри - т.е интегрированная куча софта на базе какого-то другого софта + сколько-то своего софта + клей. Всегда было какое-то зудящее чувство, что вот, хорошо бы всё это запилить на каком-то нормальном языке. Там еще и сетевые абстракции свои были, и всё это на подможестве плюсов - плюсы без самого вкусного, т.к. шаблоны раздували код, который не лез на маленькую внутреннюю флешку. Плюс там еще контуженное телекомовское сообщество породило стандарты типа TR-069, короче ехал SOAP через SOAP, можете в UPnP полюбоваться. Короче, впилили эрланг, эрланг в роутер влез (но больше ничего не влезло), но переписать огромную кодовую базу и передизайнить огромную модель на другом языке - с какого-то момента задача неподъемная. Так вот. Тогда в то время возникала какая-то идея, что надо всё потребное, например, для ноута - согнать в какой-то демон на приличном языке, и таскать с собой, время от времени портируя на новые модели железа. Идея умерла, т.к. дело это огромное, но почти бессмысленное. Но в итоге-то, оказалось, что на базе nix + помойка из всего — по факту вполне подъемно для одного. Ведь по сути ты делаешь свою ОС, где всё, как тебе нравится, она может деплоится на разные хосты, а системно-зависимые куски можно как-то абстрагировать. И на это не надо тратить весь остаток жизни. Да, в итоге адовая смесь из nix, haskell, bash, evlish, конфигов и бог знает чего еще. Но оно в целом работает, хоть всё и стрёмно изнутри (и в идеальном мире было бы написано на каком-то нормальном языке), но вроде довольно надёжно и работает. Самый треш, конечно, это когда ты никсом генеришь хакельный код (а не наоборот, как должно было бы быть в нормальном мире).
Читать полностью…
Признавайтесь, кто в нашему кластеру прицепился? Хотя б порт назад откройте, что бы пинговать можно было. Чувствую, пока мутабельные ссылки подъезжают, надо сделать перерыв в реализации гита и запилить NAT-PMP
Читать полностью…
надо в проект CoC запилить. думаю, такой: НОРМАЛЬНО ДЕЛАЙ - НОРМАЛЬНО БУДЕТ.
Читать полностью…
#fixme теперь вместо
fixme set workflow backlog XXXXможно определить макро в конфиге и писать
fixme backlog XXXXЧитать полностью…
@blaze к твоей реплике про переизобретение QUIC. сейчас в протоколе есть: подпротоколы (различные отдельные FSM), которые работают не мешая друг другу. То есть, если один поток ждёт 4 пакета, то вклинившийся туда пакет от другого подпротокола никак не помешает. Другие FSM занимаются своими делами: пингуют, передают PEX и так далее. В протоколе нет: ACK. Точнее, они есть или нет для подпротоколов. В каких-то (передача данных) - терять ничего нельзя. там есть ACK. В каких-то всё равно, там нет. Вся эта пачка протоколов работает на одном сокете/порту. Чего нет пока - шифрования. С одной стороны шифруются сами данные, с другой стороны просто временно открутили, ничего не мешает вкрутить обратно. Что есть еще: самодеятельный протокол CC, высосанный из пальца из общих соображений, но похожий на какие-то другие известные протоколы. Кажется, до переизобретения QUIC осталось вернуть на место шифрование и вкрутить нормальный CC. Однако, всё это намного меньше, чем QUIC, так как тут не пытались изображать потоки. Протокол ориентирован на датаграммы, просто по несчастью какие-то из них такие большие, что не лезут в один пакет
Читать полностью…
Что же. Ноды снюхиваются. Через NAT-ы вроде бы как-то пролезают (но это не точно). Референсы в процессе, решили сделать для начала простой вариант с одним автором, что бы не запариваться консенсусом. Вторым делом прикрутим DAG. Как только подъедут ссылки - сразу можно будет опять сделать git-remote. Второй забег до момента self-hosted займет, кажется, два месяца. Первый занял четыре. Да, мы тут не Торвальдс с его self hosted гитом за четыре дня (кстати, реально так-то). Багтрекер из говна и палок тоже работает. Прямо редкий момент, когда всё выглядит неплохо
Читать полностью…
Суда по бурлению в nix deployment tools, это такой же святой грааль, как во время PHP - CMS. Имеющееся никому не нравится,
все пытаются сделать своё, нормальное. Несходящийся процесс.
Посмотрел какой-то видос (видос! там какая-то девочка медленно зачитывает контент презентации, которую не выложила никуда!!) с медленным
и стрёмным английским, с обзором имеющихся для nix средств деплоймента. Кажется, их больше, чем вообще всех других остальных средств
деплоймента в мире вместе взятых. Что там в мире-то ? Выжило ансибль, да этот, как его.
Что произойдёт, если пользователю винды/юристу (т.е всякого рода примочки для разрабов у него точно не установлены) отправить в почте файл в формате markdown c юниксовыми переводами строки? Не откроется вообще? Откроется в нотепаде и и все строки склеятся?
Читать полностью…
к вопросу об ini, yaml и json:
fixme-attribs assigned workflow resolution
fixme-value-set workflow new backlog wip test fixed done
[ fixme-report all json
(render builtin:microstache report-wip.tpl)
(post builtin:columns | 10 8 8 10 _)
]
[ fixme-report wip json
(render builtin:microstache report-wip.tpl)
(post builtin:columns | 10 8 8 10 _)
(query ?workflow:test)
(query ?workflow:wip)
(query ?workflow:fixed)
(query ?workflow:done)
]
Еще несколько раз прислушался к себе, и ощущаю отчётливое отсутствие желания писать свой шаблонизатор какого-бы там ни было вида, а он нужен. Внешний. Берущий на вход json и налагающий на него некий процессинг. Есть работающий вариант - генерить текст и на него накладывать m4, но юзеры в ужасе бегут, полагаю.
Читать полностью…
Люди в идентификаторы добавляют неизвестные юникодные символы, глифы для которых могут отсутствовать у других. А мы стесняется писать коменты на удобном языке
Читать полностью…
У меня есть "консольная" считалка планов проектов (даже работает еще, как-то пользовался). Там в виде синтаксиса с отступами описывается WBS проекта с оценками, потом считается проект, потом строится из него всякое - WBS, Гантт. Гантт рендерится в PDF через латех через m4. m4 взял как "внешний" шаблонизатор. В целом, сам не особо использую: получилось 1) сложновато, забывешь синтаксис между использованиями 2) строить детальные планы довольно бессмысленное дело. Плюс m4 в качестве шаблонизатора чот не особо, но непонятно, что лучше. Я то найду какой-то хаскельный внешний шаблонизатор, то потеряю. В общем понятно, что надо это дело переработать — план должен генерироваться из сравнительно небольшого набора фактов и констрейнтов. Причем, для каждой области есть какой-то набор паттернов для этих самых проектов, типичную опердень зачастую можно оценивать просто рисуя некую матрицу, где для каждой задачи есть колонки
фронтенд|бекенд|база|тестирование|интеграция|деплойментТ.е каждая задача порождает N шаблонных/типичных "подзадач".
#fixme запилил тем временем утилитку для трекинга FIXME/TODO комментариев в коде вместо багтрекинга. Issue берёт из гитовых блобов (т.е сканит их, а не staged файлы), workflow их управляет при помощи лога операций, который коммитится в тот же гит. Никакой распределенный багтрекинг не прижился пока у нас, git-bug был лучшей попыткой, но что-то тоже не очень. Так что попробую пока вот, что из этого получится. Как-то так сложилось, что в трекеры тикеты писать лень, не говоря о том, что их нет, а вот комментарии TODO/FIXME в код - напротив. Бывает, и кода еще никакого нет, а коментариев таких полно. В общем, пре-альфа-версия для смелых тут: github:voidlizard/fixme
Читать полностью…
Каждый неизбежно в жизни напишет хотя бы одну игру, компилятор/транслятор и распределенный багтрекер.
Читать полностью…
Кстати, прo elvish. Нужен был язык для шельного скриптования получше, чем баш, по по факту elvish им не является, более того, в каких-то моментах он до смешного убог и проигрывает даже bash.
Читать полностью…
Так или иначе, но похоже, что полноценно работающий "распределенный" гит до конца этой недели заработает (со ссылками. без ссылок он и так как-то работает). Интересно, что же желать дальше — ликвидировать технический долг? прикручивать криптографию везде, где откручено? Запилить пару шоукейсов (распределенный чат ? шаринг файлов / каталогов ?) Написать какую-то статью/пост о том, как это всё работает (спойлер: наиболее простым и очевидным способом из возможных) Прикрутить другие типы ссылок, а не только линейные с одним писателем ?
Читать полностью…
То ли сишные приемы дают о себе знать, то ли в GHC 9.2.4 что-то сделали с управлением памятью. Такого вот, что сервер насосался и издох ни разу пока не было. Прокачиваешь гигабайт десять - двадцать, оно надувается, а потом сдувается постепенно до 15 мегабайт футпринта. Причем я даже банги забиваю расставлять, оно само как-то. Ехал кэш через кэш через таймер, который ходит и всё убивает, ровно как в си.
Читать полностью…
Есть ощущение, что для пущей крутизны файлы надо уже класть в hbs2, и приделать к нему http, который бы их отдавал по хэшу. тем более, что для этого уже все внутренние ручки есть. nginx только настроить с кэшированием
Читать полностью…
Тут подумалось, что в прошлом забеге на "распределенный git" был просто git-remote-хэлпер, который требовал явно делать пуш, что бы изменения поехали. но ведь можно лучше:
1) повесить inotify на гит, и на изменение репозитория его автоматом забрасывать в offgrid/hbs2 и делать анонс
2) сделать commit hook, который будет коммит забрасывать в offgrid/hbs2 и делать анонс
таким образом, тут даже не нужно будет никуда ничего пушить - само будет реплицироваться по git commit. немного погодя можно еще повесить inotify на сам каталог исходников,
и по таймеру (что бы не спамить) коммитить в какой-то временный бранч и его синкать - тогда даже незакоммиченные изменения будут сохраняться.
Спросил вопрос про NixOS в русскоязычном чате NixOS.Был накормлен вторичным продуктом. Вспомнил историю успеха получения поддержки в этом чате (равную нулю), и выпилился оттуда. Спросил свой вопрос у ChatGPT. Чувствую, скоро мы все пойдем на мороз
Читать полностью…
не ну что. подняли ноды разные везде, ноды снюхались и файло друг-другу раздали на приемлемой скорости. UDP для передачи больших объемов это, конечно, гемор еще тот. Через NAT, всё как положено
Читать полностью…
#offgrid #hbs2 шифрование контента для групп подвезли. прямо руки трясутся в предвкушении
шифрование-для-групп -> AccessControlBlock -> Reference -> DAG -> MVPЧитать полностью…
#fixme подсветка начало fixme в fixme cat, что бы было видно в контексте, какое именно fixme смотрим
Читать полностью…
Скучаю по временам, когда был XML. Не было особых вопросов с внешней шаблонизацией. XML+XSLT = профит. и XSLT был прекрасен, и xpath в рамках своих допущений (дикий наркоманский SGML-ный синтаксис). А теперь-то что делать? Где стандартный/общепризнанный аналог xslt/xpath для json ?
Читать полностью…
В целом, вся эта история с фактами / констрейнтами и выводом носит какой-то глобальный характер, особенно учитывая, что эти "факты", скорее всего иммутабельные, т.е всё представляется в виде потока фактов и журнала операций, который применяется к этим самым фактам, продуцируя некий стейт. Осталось выяснить, куда всё это барахло складывать, что бы потом в любой момент найти. Ну известно куда - в offgrid. Поэтому надо выпить еще кофе и пойти тыкать палкой в криптографию
Читать полностью…
fixmies захватываются прямо из git blobs, и показываются оттуда же. прикрутил внешний пейджер с подсветкой синтаксиса
Читать полностью…
#offgrid ускоряем протокол, переделываем в сторону упрощения криптографию. делаем для себя, поэтому можем позволить себе сделать как следует
Читать полностью…
к вопросу о том, что шумно, что не шумно. конструкция
fixme-prefix FIXME: bugs issuesделает следующее:
prefixes = {
"FIXME:" : [ "bugs", "issues" ]
"TODO:" : [ "bugs", "issues"]
}
ахаха, это провал. я не знаю, можно ли там повторяющиеся ключи, поэтомуprefixes =ахаха, а это секспы. покажите, как лучше Читать полностью…
[ ["FIXME:", [["bugs", "issues"]]
, ["TODO:", [["bugs", "issues"]]
]