Size: a a a

Programming Offtop

2020 May 13

(

( in Programming Offtop
бля лол
источник

I

Igor in Programming Offtop
Anton Korotkikh
браузер изобрели
Ну вот кстати я уже несколько месяцев говорю:

- Сделайте бинарник, который поднимет локальный сервер и откроет дефолтный браузер.
- а ui верстайте на web-components / гоняя дифы через web-socket
- на ocaml такой бинарь занимает 1.2 MB (после upx)
источник

AK

Anton Korotkikh in Programming Offtop
Igor
Ну вот кстати я уже несколько месяцев говорю:

- Сделайте бинарник, который поднимет локальный сервер и откроет дефолтный браузер.
- а ui верстайте на web-components / гоняя дифы через web-socket
- на ocaml такой бинарь занимает 1.2 MB (после upx)
так идея не нова, но чому-то не популярна, различные админки и тулинг так работает. последнее что помню, например, neo4j - поднимает сервер, пускает браузре там админка до бд. про то как это там свёрстано вообще хз
источник

I

Igor in Programming Offtop
Igor
===

имутабельную key-value базу как раз сделать проще всего, если
- у каждой записи есть версия
- добавление/удаление всегда создает новую запись

а чтение делается условным
SELECT * FROM ?
WHERE version < ?
ORDER BY version
GROUP BY key
Я кстати допер как делать функциональную бд.

- Все изменения стора делаем отдельными событиями
- Пишем два редьсера
-- Один редьюсит локальный стор в памяти (1)
-- Второй асинхронно редьюсит те же события в хранилище на диск (2) (к примеру sqlite)
- все чтения (query) делаются из стора в памяти (1)
- при старте восстанавливаем состояние в памяти (1) по данным с диска (2)
источник

I

Igor in Programming Offtop
Это еще хорошо ложится на TEA подписки.

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

AK

Anton Korotkikh in Programming Offtop
Igor
Я кстати допер как делать функциональную бд.

- Все изменения стора делаем отдельными событиями
- Пишем два редьсера
-- Один редьюсит локальный стор в памяти (1)
-- Второй асинхронно редьюсит те же события в хранилище на диск (2) (к примеру sqlite)
- все чтения (query) делаются из стора в памяти (1)
- при старте восстанавливаем состояние в памяти (1) по данным с диска (2)
а если они разойдутся? в память сохранишь, а на диск не получилось по каким-то причнам
источник

I

Igor in Programming Offtop
ну пиздец будет конечно (но считаем что это не возможно)
источник

QH

Quantum Harmonizer in Programming Offtop
Igor
Я кстати допер как делать функциональную бд.

- Все изменения стора делаем отдельными событиями
- Пишем два редьсера
-- Один редьюсит локальный стор в памяти (1)
-- Второй асинхронно редьюсит те же события в хранилище на диск (2) (к примеру sqlite)
- все чтения (query) делаются из стора в памяти (1)
- при старте восстанавливаем состояние в памяти (1) по данным с диска (2)
троллейбус_из_буханки.жпг
источник

I

Igor in Programming Offtop
не сказал бы,
то же "Все изменения стора делаем отдельными событиями" это классика event-soursing

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

(

( in Programming Offtop
бля, просто ебани каппу в один дистрибутив
источник

(

( in Programming Offtop
вместо кафки+стрим+редис просто одна твоя бд
источник

(

( in Programming Offtop
у тебя есть AOL ивентов, которые стримятся в лёгкое фаст-рид дерьмо (вроде редиса) и если последнее дропается, восстанавливаешь его из лога
источник

AK

Anton Korotkikh in Programming Offtop
(
вместо кафки+стрим+редис просто одна твоя бд
есть компактная и минималистичная штука для стрима логов - nats-streaming, один бинарь, можно собрать под что угодно, хоть под арм на андрюхе
источник

(

( in Programming Offtop
Anton Korotkikh
есть компактная и минималистичная штука для стрима логов - nats-streaming, один бинарь, можно собрать под что угодно, хоть под арм на андрюхе
справедливо
источник

(

( in Programming Offtop
ну короче, нужна AOL хуйня, стриминг хуйня и семи-персистент хуйня
источник

I

Igor in Programming Offtop
(
бля, просто ебани каппу в один дистрибутив
А как бороться с разрастанием лога?
источник

(

( in Programming Offtop
Igor
А как бороться с разрастанием лога?
не бороться
источник

I

Igor in Programming Offtop
источник

(

( in Programming Offtop
или делать время от времени снапшоты семиперсистента и брать его за начальное состояние, а лог чистить
источник

(

( in Programming Offtop
я как-то был на докладе в альфа-банке как раз про эту архитектуру, у них там лог чёт под петабайт уже выжрал
источник