voidlizard.online
116 subscribers
160 photos
6 videos
5 files
105 links
Haskell, распределённые системы.

Разработка P2P CAS hbs2 и приложений для него

Распределенный git aka hbs2-git

hbs2.net

Прочее https://t.me/genedrd47r (мото, EUC, скайдайвинг, дайвинг)
Download Telegram
Итак, пока наш замечательный offgrid (который на этой неделе, надеюсь, научится собирать файлы из "дайджестов" и скачивать из с n узлов и останется только придумать, как сделать механизм "топиков" и потом мутить всякий крипто pub/sub ) не заработал на полную мощность, перебиваюсь я так:

1) syncthing на нескольких узлах, включая телефон (понятно, что не узел). фотки и важный контент с телефона валится и расползается сразу по нескольким узлам

2) протестировал две юзерспейсные файловые системы - gocryptfs и encfs (над брать первую), которые зашифрованные каталоги поверх обычных, и монтируют расшифрованную версию каталога. это успешно работает и, вроде бы, успешно взаимодействует с syncthing если синхронизировать им зашифрованный каталог (а не расшифрованный смонтированный). Как шифровать контент с телефона (сканы документов) - непонятно. Разве что перекидывать вручную в зашифрованный каталог и убивать в незашифрованном. Смысл в этих fs против полного шифрования накопителя (которое никто тоже не отменял, но оно проблемное) в том, что сразу же делается и бэкап/раздача своего контента по другим своим узлам. Это, в общем, фейл в случае захвата этого самого другого узла, т.к. нет механизма экстренного отмонтирования или отмонтирования по таймауту. Так что критичные данные - нужно шифровать еще раз и расшифровывать только в момент использования. Для паролей и кошельков подходит, остальное неизвестно.

3) gnu pass для хранения паролей очень хорошо, простой, как тапок, всё очень понятно, если что-то пойдёт не так, можно починить руками. есть плагины и для браузеров, и для otp. если первоначально я пытался синхронизировать только bare git repository, и делать из него pull/push - (на мобиле не работает), то теперь забил и просто держу его каталог с паролями в synthing. Вроде бы работает.

4) rclone для бэкапов, помимо того, что синхронизированные каталоги сами по себе бэкапятся, но тут еще и в облако. Работает, но надо разбираться, что там с шифрованием.

Это всё подходит всем, ну, только если вы не отчаянно смелые люди, которые до сих пор пользуются виндой и маком. Надысь была инфа, что в icloud успешно бэкапит приватные кошельки метамаска с одной стороны, и без сомнения, кейлогает пароли с другой. Про винду, которая скринкастит на сервера MS, я умолчу.

Далее, открытые дыры во всем этом. Чем же заменить проклятый офис, если он вам нужен?

1) latex + git + (offgrid когда будет) это прекрасно, но требует железной воли и непрерывности практики. Пропустишь месяц, даже служебку написать вызовет боль и поиск шаблона с мейкфайлом незнамо где.

2) libreoffice это жалкое зрелище, конечно. древнегреческий ад как он есть.

3) с текстами еще ладно, а что делать с таблицами? haskell с бесконечными списками их заменяет, но это сильно не для всех, сложно делать простые вещи (зато легко - сложные), вообще никак не монтируется с гражданскими, даже если внедрить это всё в ihaskell/jupyter notebook. Тут бы, конечно, какой-то простой скриптовый язык, который бы помимо прочего давал возможность работать с бесконечными списками, что бы заменять ими таблицы. Что делать гражданским тут я не знаю вообще совсем.

Причем тут, кстати, вообще offgrid? Ну те, у кого есть привычка заводить каналы в телеге на одного себя и постить туда своё барахло, что бы потом найти и получить на любом устройстве - те понимают. Единственная проблема в этом кейсе, что этой информацией владеешь только ты, Дуров и ФСБ. А, ну и еще плохо автоматизируется и неудобно. Попробуйте так гит синхронизировать, задолбаетесь
Пережили (с потерями) Кубок России. Не все цели достигнуты, но опыт получен в любом случае.
В следующий раз, когда буду писать компилятор (никогда), все AST прошью уникальными идентификаторами, при перестроениях AST буду сохранять отношения, кто кого породил, все факты, появляющиеся в процессе, буду держать в графовой БД с привязкой к этим идентификаторам
Легче отправить деньги самолётом, чем сделать перевод крипты типичной "кипрской" или "швейцарской" или "дубайской" компанией
У провайдера стоит модуль от РКН, работает без их ведома, просто чёрная коробка. DNS-ы раздаются по DHCP по умолчанию. Какое-то время назад стали тормозить сайты, например, с гитхаба контент плохо отдаётся. Лечилось включением прокси, что выносило мне мозг. Ну, разобрался наконец. Видимо, настало время сидеть через VPN фуллтайм или делать что-то хитрое. Хочется сжечь... всех.
Кто видел, как эфир учитывают в 1С, тот видел всё
Началось. Люди максимально далёкие от цыфры вообще насколько это возможно - т.е даже не отличающие вацап от телефона и не особо понимающие, что они в принципе делают и в каком приложении - затребовали себе VPN для инстаграмма. Это конец.
Какой UI сделать в linux liveced для гражданских? У нас сейчас GNOME3, мне хочется вырвать себе глаза, когда я его вижу. Не помню, как выглядит мак, но кажется не совсем так. Какие есть еще опции? Задачи - кликнуть на три иконки и поработать с парой приложений, после чего бросить флешку в шреддер
Работа над offgrid продолжается, отладка и всё очень wip. Главное, не сдуться, тем более, что CAS часть уже работает, т.е недостающий кусок - это eventually consistent синхронизация топиков. Всё получается сложнее, чем казалось сверху.
Оставлю тут только IT-шное, всякое прочее пойдёт в t.me/voidlizardonlineblog
А вы знаете, что если вы решите сделать свой, простите, токен, например, в сети эфира и, например, продавать его за другие строчки из какой-нибудь другой распределенной недо-бд - вас, в зависимости от юрисдикции, будут неистово штрафовать и может быть, даже посадят? а что бы иметь возможность писать определенные циферки в чью-то какую-то опенсорсную поделку - надо, значить, обложиться бумажками от государства какого-то, а не то плохо будет? Просто поразительно. Особенно то, что те, кто эти законы принимает - даже не вполне понимает, что это всё такое и как оно работает. Но одно он понимает точно: люди это планктон, а куда планктон - туда надо и им. И регулировать, регулировать.
могу гарантировать, что в бложике будет гораздо больше фана, чем в айтишном журнале. ойти наше изрядно закисло с одной стороны, с другой стороны не более, чем один из инструментов дискурс-монгеров.
Микро-отчёт по поездке за картой армянского банка на мотоцикле - в блоге про жизнь: https://t.me/voidlizardonlineblog
Проект offgrid жив, ноды стартуют, синхронизируют контент и топики. Первый шоукейс будет - обмен файлами, soon. Следующими, предполагается, будет простой распределенный чат и всё-таки обмен git bundle-ми, пока что число cli и в виде расширения git, которое, слава авторам гит, написать достаточно легко. Идёт тяжело, потому, что распределенщина это всегда тяжело
Кто-нибудь понимает, как в принципе можно сделать распределенные видеоконференции?
Что же, стало понятно, что p2p видеоконференция - крайне плохой шоукейс для offgrid, хоть и был бы эффектный, а так же выявлены основные проблемы видеоконференций вообще, понятно, что тема затратная, хоть и нужная.

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

Тем временем уже offgrid умеет в файлы и скоро можно будет переходить к плагину для git, концепцию попробую описать. Думаю, что ядро offgrid мы откроем, как только станет возможным хостить разработку его на нём же.
Что можно сказать про "распределённый git".
Основное, что про него говорят --- что "git и так
распределённый".

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

Что не так с гитхабом в сложившейся обстановке?
Тема отдельная, сейчас не хочется на этом
останавливаться.

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

Что хочется (в распределённом сеттинге):

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

2. PR, как на гитхабе. Ну, тут просто. PR это патч
+ описание + дискуссия + правила приёмки (не
так-то просто в распределённом сеттинге)

3. Поддержание неких одинаковых бранчей у всех
участников.

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

Можно ли лучше? Да. Если мы примем предположение,
что "релизные" бранчи должны гарантированно
собираться автоматически при помощи merge и/или
rebase, принятые в них патчи одобряются неким
голосованием (approve) от остальных участников,
включая их порядок.

Сделать участником голосования можно и CI c
тестами, и какие-то голоса сделать обязательными.

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

Суммарно: "распределенный git" можно собрать из
механизма распространения топиков + блобов (CAS)
(уже есть) + плагин к git, который будет уметь
ходить в ноду и забирать свои топики и
соответствующие блобы (надо писать).

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

Во втором приближении --- автоматически собираемые
бранчи, с приёмкой патчей с голосованием (как в
gerrit).

Уже видно, что если голосование не будет делаться
консенсусом, а будет требовать всего-лишь
несколько голосов --- то могут возникать ситуации
split brain. Но мы исходим из того, что каждый
узел/разработчик заинтересован в том, что бы его
топики были синхронизированы с мейнстримом,
соответственно, просто надо дать ему механизмы для
того, что бы узнать, какое состояние топиков
является мейнстримом, залить эти топики себе и
сделать их "мейнстримом" у себя, а потом свои
изменения накатить поверх этих топиков. Как и
везде, надо не только придерживаться линии партии,
но и активно выяснять, что же является сейчас этой
самой линией партии, что бы не попасть в неловкую
ситуацию. В данном случае, это приемлемо,
особенно, если автоматизируемо.


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

Пока так.

А, ну да. Что бы всё это вообще работало с нулевой
настройкой, придётся сделать уже механизмы peer
exchange и бутстрапа, а так же криптографическая
подписка/отписка. Так, что бы peer exchange
работал для всех, а вот топики были изолированы
между группами, которые с ними работают.

Вероятно, эта самая подписка будет сделана
попозже, первое время подойдет только для хостинга
опенсорса.
#offgrid В процессе: автоматическая синхронизация топиков, acl что бы хоть как-то ограничить распространение топиков —- понятно, что это не криптография, но по крайней мере нода не будет раздавать всё, что имеет всем подряд, и зачатки peer exchange. последний делается через те же самые "топики", просто топик определенного формата + есть идеи, как его формировать автоматически. Это делается сейчас для того, что бы можно было где-то размещать релейные ноды, что бы запущенные в рандомных местах ноды могли найти друг друга и синхронизироваться. Ну то есть ты поднял ноду, твой знакомый поднял ноду, хоба, друг друга нашли через релей и можете файлы синхронизировать.
В своё время наблюдал за реакцией на научную публикацию, в которой было моё имя. Цитирования и т.д. Тогда в первый раз возникла мысль о распространении идей - от первого мира ко второму, далее к третьему. Т.е одно и тоже можно продать сначала в первом мире, потом во втором, потом в третьем. Наверное, и капитализация на каждом переходе падает на порядок, но всё равно неплохо получается. Ну и истории есть - сначала в США, потом через пару-тройку лет в РФ, потом лет через десять — во Вьетнаме. Ну и в Африке в целом движуха началась сравнительно недавно. Интереснее, что же из себя представляют на самом деле эти миры (коммуникационные кластеры?), казалось бы, идеи должны распространяться не обращая внимания на границы, а вот нет.

Ну и еще интересно, что то, что не полетело в одном месте, вполне может полететь в другом в силу другого бэкграунда. Т.е. в более диком месте могут выжить более прогрессивные технологии, а на старых местах не очень, там и без них всё нормально
При отладке многопоточных серверов логи становятся малополезны. Надо заводить метрики/счётчики и выводить снапшоты состояния системы. По метрикам можно и графики строить, бывает. Полезнее бывает пялиться в график, чем в бесконечную портянку лога. Отладка же распределенных систем это вообще дичь. Хотя сейчас переполнение нашли методом пристального вглядывания в логи и хаскельный код. В течение часов в трёх в сумме. Могло быть и хуже #offgrid
#offgrid ну что же, чихает, пердит, но едет. приступаю к прикручиванию git, что бы хоть как-то можно было уже совместно разрабатывать offgrid на нём самом