Пока неохотно, но коммиты расползаются по нодам. Бесплатно получаем зачаток чата, чем gossip не чат. по сути чем сплетни отличаются от трёпа? Учитывая, что распределенный сторейдж идёт в комплекте, можно уже запиливать еще один распределенный мессенджер. И везде сплошное UDP!
Читать полностью…Когда работал в Keenetic, смотрел, как делается "операционная система" изнутри - т.е интегрированная куча софта на базе какого-то другого софта + сколько-то своего софта + клей. Всегда было какое-то зудящее чувство, что вот, хорошо бы всё это запилить на каком-то нормальном языке. Там еще и сетевые абстракции свои были, и всё это на подможестве плюсов - плюсы без самого вкусного, т.к. шаблоны раздували код, который не лез на маленькую внутреннюю флешку. Плюс там еще контуженное телекомовское сообщество породило стандарты типа TR-069, короче ехал SOAP через SOAP, можете в UPnP полюбоваться. Короче, впилили эрланг, эрланг в роутер влез (но больше ничего не влезло), но переписать огромную кодовую базу и передизайнить огромную модель на другом языке - с какого-то момента задача неподъемная. Так вот. Тогда в то время возникала какая-то идея, что надо всё потребное, например, для ноута - согнать в какой-то демон на приличном языке, и таскать с собой, время от времени портируя на новые модели железа. Идея умерла, т.к. дело это огромное, но почти бессмысленное. Но в итоге-то, оказалось, что на базе nix + помойка из всего — по факту вполне подъемно для одного. Ведь по сути ты делаешь свою ОС, где всё, как тебе нравится, она может деплоится на разные хосты, а системно-зависимые куски можно как-то абстрагировать. И на это не надо тратить весь остаток жизни. Да, в итоге адовая смесь из nix, haskell, bash, evlish, конфигов и бог знает чего еще. Но оно в целом работает, хоть всё и стрёмно изнутри (и в идеальном мире было бы написано на каком-то нормальном языке), но вроде довольно надёжно и работает. Самый треш, конечно, это когда ты никсом генеришь хакельный код (а не наоборот, как должно было бы быть в нормальном мире).
Читать полностью…Признавайтесь, кто в нашему кластеру прицепился? Хотя б порт назад откройте, что бы пинговать можно было. Чувствую, пока мутабельные ссылки подъезжают, надо сделать перерыв в реализации гита и запилить NAT-PMP
Читать полностью…#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"]]
]