- Сделайте бинарник, который поднимет локальный сервер и откроет дефолтный браузер. - а ui верстайте на web-components / гоняя дифы через web-socket - на ocaml такой бинарь занимает 1.2 MB (после upx)
- Сделайте бинарник, который поднимет локальный сервер и откроет дефолтный браузер. - а ui верстайте на web-components / гоняя дифы через web-socket - на ocaml такой бинарь занимает 1.2 MB (после upx)
так идея не нова, но чому-то не популярна, различные админки и тулинг так работает. последнее что помню, например, neo4j - поднимает сервер, пускает браузре там админка до бд. про то как это там свёрстано вообще хз
имутабельную key-value базу как раз сделать проще всего, если - у каждой записи есть версия - добавление/удаление всегда создает новую запись
а чтение делается условным
SELECT * FROM ? WHERE version < ? ORDER BY version GROUP BY key
Я кстати допер как делать функциональную бд.
- Все изменения стора делаем отдельными событиями - Пишем два редьсера -- Один редьюсит локальный стор в памяти (1) -- Второй асинхронно редьюсит те же события в хранилище на диск (2) (к примеру sqlite) - все чтения (query) делаются из стора в памяти (1) - при старте восстанавливаем состояние в памяти (1) по данным с диска (2)
- Все изменения стора делаем отдельными событиями - Пишем два редьсера -- Один редьюсит локальный стор в памяти (1) -- Второй асинхронно редьюсит те же события в хранилище на диск (2) (к примеру sqlite) - все чтения (query) делаются из стора в памяти (1) - при старте восстанавливаем состояние в памяти (1) по данным с диска (2)
а если они разойдутся? в память сохранишь, а на диск не получилось по каким-то причнам
- Все изменения стора делаем отдельными событиями - Пишем два редьсера -- Один редьюсит локальный стор в памяти (1) -- Второй асинхронно редьюсит те же события в хранилище на диск (2) (к примеру sqlite) - все чтения (query) делаются из стора в памяти (1) - при старте восстанавливаем состояние в памяти (1) по данным с диска (2)