Skip to content

Instantly share code, notes, and snippets.

@CyJimmy264
Last active December 11, 2022 13:35
Show Gist options
  • Save CyJimmy264/fb360e649b39623bdb40b11cf2f4df90 to your computer and use it in GitHub Desktop.
Save CyJimmy264/fb360e649b39623bdb40b11cf2f4df90 to your computer and use it in GitHub Desktop.
Book заметки по разработке

Содержание

Предыстория/Обсуждения

Timeline

11/01/2022

12:51:47

Надо ответить на вопрос, в чём в целом заключается идея.

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

Суть примерно такая.

  1. Голосующий создаёт кошелёк.
  2. Публикует открытый ключ (или просто осуществляет любую транзакцию), чтобы иметь возможность ставить свою проверяемую подпись под транзакцями других участников.
  3. Публикует сведения подтверждающие личность: ФИО, номер паспорта, …
  4. Голосует отправкой соответствующего опросу кода на соответствующий поставленному вопросу кошелёк.
  5. По возможности ставит свою подпись транзакциям, свидетелем которых он является.
  6. Голос/данные идентификации засчитывается при 2+ свидетелей.

А не так давно, подумал, зачем вообще нужен блокчейн? Может быть можно подумать над альтернативными структурами распределённого реестра. С возможностями оффлайн записей, и последующей синхронизацией.

Кажется, в похожую сторону смотрят проекты:

14:04:11

Сам процесс голосования с такой системой будет потенциально не ограничен временными рамками, можно будет иметь возможность проверить наличие своего голоса в реестре, самостоятельно посчитать результаты, изменить свой голос, …

Становятя не нужны центризбиркомы и прочее, как места сбора голосов. Впрочем, если они пойдут навстречу, то лишним их ресурс не будет. А так, можно хоть мобильными бригадами, ходить и собирать голоса у всех желающих. Для безопасности можно это начинать делать среди друзей и друзей друзей. Одновременно разъясняя суть процесса и вопросов повестки.

По теории 6-ти рукопожатий таким образом должны все посчитаться. Велика вероятность (100%), что будут и проблемы, с ложными свидетельствами и прочее. Для чего предусмотреть протоколы проверок.

14/01/2022

15:39:39

— А какие проблемы должен решить этот сервис?

Основная — подделка результатов голосования. Побочная — гегемония центральных СМИ.

Живой фидбэк.

— Какие решения предполагается принимать с его помощью?

Любые, насколько технически это возможно.

— И наконец, как предполагается, что эти решения будут обретать юридическую силу?

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

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

Спецификации

Хранение данных

Что?Где?Когда?

Что? Действие

Регистрируемое действие.

Дерево действий.

Регистрация → Пользователя

База данных

SQL

На локальной ноде, для упрощённой работы

Файловая система

Структура

Действие[/Поддействие[…]]/Страна/Регион/Район/Населённый пункт/Адрес/Год/Месяц/День/Время/

Истории

Создание пары ключей, и адреса из них

Создание записи удостоверяющей личность

Журнал

06/02/2022 что же делать

00:55:39

Итак, продолжаю мысль о no chain решении.

Можно создать набор утилит с разными системами хранения данных. Самое простое — файловая система. Каждый может сделать свой бэкап на бесплатном облаке, и даже расшарить его.

30/03/2022 rails new book, чтобы уже можно было потрогать

22:56:37

Три дня назад задумал проект Book на Ruby on Rails.

Кажется что надо начать с этого.

Если начинать совсем вручную, то непонятно как хранить действия.

31/03/2022 chain?, начало документации, OpenPHP.js, тоториал

00:40:02

Завис на вопросе, делать ли цепочку записей?

01:53:33

Порисовал. Не знаю, конечно, зачем, но можно. Вряд ли это сильно усложнит на первых порах систему.

Появилась мысль ограничиться документацией.

02:33:53

Скучно без кода.

С чего тогда начать? Поковырять OpenPGP.js?

14:24:40

Видимо да.

Можно пройтись по туториалу https://medium.com/@nerdgeschoss/end-to-end-encryptionin-rails-with-stimulus-and-openpgp-js-444bafc9121e

01/04/2022 проект сходу по туториалу

03:49:32

Тупо конспектировать дальше туториал нет смысла. Надо кодить.

Можно делать это в отдельной ветке проекта, и возможно развивать это дальше.

06:47:31

Создал проект и задачу в гитхабе, на основе сделал ветку. Но прежде надо видимо подключить RSpec.

04/04/2022 настройка slim, devise, webpacker

21:32:13

И Slim

И Devise с Webpacker-ом.

06/04/2022 обновление Ruby, боремся с devise

10:43:29

Вроде всё. Вернуться к статье.

12:55:41

Блин, крашится rspec.

Даже в мастере.

Ага, после того как настроили Devise.

Смотрим home_spec.

Devise тут не при чём. Просто крашится непонятно почему.

13:42:07

Обновил Ruby до 3.1.1 :)

14:39:54

Продолжаю добавлять пользователя.

Совершенствую среду разработки. ruby layer lsp.

16:38:58

Сделал. Споткнулся на:

undefined method `authenticate_user!’ for #UsersController:0x0000000000be00

Непонятно что делать.

16:49:19

Попробовать сначала.

21:26:44

Ниче не работает :/

23:03:39

Нашёл где собака порылась) Ошибка в статье, походу.

Вместо rails g devise:install User должно быть rails g devise User.

Хотя, может быть если не устанавливать до этого devise, то такая команда и сработвет.

07/04/2022 User creates Records

17:42:13

Наконец-то добавляются пользователи и ключи к ним.

Можно завершать Issue?

18:18:50

Да. Только пока не отправлюсь в свободное плавание после туториала тесты писать не хочется.

21:05:56

Добавляются записи.

OpenPGP.js!

08/04/2022 что нового в Rails 7, JavaScript frameworks

10:07:51

Походу в Rails 7 надо использовать что-то отличное от Webpacker, а его самого удалить.

10:51:18

Посмотреть Rails 7: The Demo.

14:57:38

Круто!

Для добавления OpenPGP.js просто воспользуемся importmap.

16:04:28

А вот для использования, видимо надо сначала вникнуть в Stimulus, и как вообще делать JavaScript на Rails 7.

https://world.hey.com/dhh/rails-7-will-have-three-great-answers-to-javascript-in-2021-8d68191b

23:03:48

Всю статью конспектировать не стал.

Дошёл до видоса Alpha preview: Modern JavaScript in Rails 7 without Webpack (https://www.youtube.com/watch?v=PtxZvFnL2i0)

09/04/2022 продолжение туториала, сам OpenPGP.js

11:58:22

Довольно доходчиво наглядно показываются крутые возможности последней рельсы.

13:19:33

Надо возвращаться к туториалу.

Можно даже конспектировать, чтобы не пропустить непонятное чего.

11/04/2022 OpenPGP.js работает, Heroku; размышления по тестам и документации

10:49:36

Продолжить.

13:36:10

Вопрос, что делать с ключами. Как их хранить и какие рекомендации давать пользователям для их резервного копирования?

Определённо сейчас ясно, что использование мнемонических seed фраз, во первых будет не тривиально реализовать для PGP, во вторых есть сомнения в собственно их безопасности.

Ладно, пока это отложим.

14:54:27

Так, как пользоваться OpenPGP.js понятно, всё работает.

Теперь надо пилить истории.

20:15:19

Заодно сразу отправил проект на heroku, чтобы можно было демку показать.

21:22:14

Посмотрел чем тестировать. Шибко нет смысла искать альтернативу RSpec.

А точнее Capybara.

С чего начать?

С документации.

22:44:57

https://blog.prototypr.io/software-documentation-types-and-best-practices-1726ca595c7f

Вот тут пробежаться бы хотя бы. Но лучше, конечно, конспект. Но потом.

29/04/2022 RoR on Termux

15:03:46

Удалось завести проект на Android в Termux.

08/06/2022 терминология, примеры голосований

09:17:27

Так, большую таску закрыл. Что дальше?

Теперь нужно научиться голосовать.

Гуглил тему.

21/06/2022 потеря данных?

21:39:57

Беспокоит один вопрос фоном довольно давно. А что если что-то потеряется? Ну какая-нибудь запись. И кажется, будто если все эти данные находятся не в цепочке, то обнаружить это будет сложнее. Ситуация усугубляется отсутствием централизованного хранилища в архитектуре по замыслу.

Ничто не мешает делать бекапы в централизованных хранилищах распределённо.

Да, всё ок.

08/09/2022 довести до приличного вида

19:12:29

Что-то нужно сделать прежде чем заканчивать возможность голосования?

CSS, Dialogs/Modals, TDD, Hotwire?

Да, это всё, пожалуй.

10/09/2022 hotwire?

01:41:41

Залип на роликах на YouTube. В основном по Hotwire тематике.

07/10/2022 tailwindcss? cucumber!

15:31:44

Думал с чего начать. Сначала хотел TailwindCSS. Но, возможно, есть смысл взяться за тесты.

По идее разницы никакой с чего именно.

Как-то не тянет сейчас заниматься фронтом.

Devise+Turbo

Tasks

16/11/2022

00:14:48

Прежде чем что-то кодить надо пройтись по Turbo Handbook.

О, нашёл хорошую статью по теме: https://eagerworks.com/blog/devise-with-hotwire-utilizing-a-modal

16:23:19

Handbook!

09/12/2022

17:33:45

Можно сказать, что прочитал handbook.

Теперь что там с интеграцией с Devise-ом.

11/12/2022

18:26:16

Поправил поведение в соответствии со статьёй. Всё ок теперь.

Use TailwindCSS

Tasks

  • [X] Setup
    • [X] tailwindcss-rails
  • [X] TW-Elements? No!
  • [X] Rewrite UI?
    • [X] Fix forms layout

28/10/2022

17:32:01

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

Так что git reset –hard и заново.

02/11/2022

22:29:37

Setup

03/11/2022

00:12:15

Чёт, tw-elements не хочет с полпинка заходить. Фтопку…

Если только исходники ковырять, и что-то заимствовать.

14/11/2022

19:39:20

Начал пробовать править css применением стилей tailwind.

16/11/2022

00:08:50

Сегодня (уже вчера) обнаружил, что нажимая на кнопку Log in в конец html добавляется сообщение от Devise. Причём не то, которое должно там быть по идее. А именно, что email не тот.

И вот, стал смотреть не проихошло ли это после добавления tailwindcss, что было бы странно, но всё же. И нет. Эта ошибка была и ранее.

И, по всей видимости, нужен какой-то хак для того чтобы заставить работать эту комбинацию (Rails+Devise+Turbo) как следует.

Вынесу в отдельную задачу.

А что сейчас?

16:22:27

Поправил внешний вид формочек. Думаю достаточно.

Features/Specs

Tasks

  • [X] Погружение
  • [-] Cucumber
    • [X] bundle cucumber-rails
    • [X] setup cucumber
    • [X] javascript driver
    • [X] first steps
    • [X] user/registration.feature
      • [X] opens the book
      • [X] signs
        • [X] fix: The action ‘show’ could not be found for UsersController
    • [-] user/key_management.feature
      • [X] I am logged in
      • [X] Scenario: user creates key pair
      • [ ] Scenario: user adds his own private key
  • [X] SimpleCov
  • [ ] Unit tests

07/10/2022 Need some cukes

17:08:55

Решил посмотреть что там по тестам у Diaspora. И захотелось Cucumber BDD.

09/10/2022 Fix UsersController

14:45:45

Набросал основные настройки и первые шаги для тестов.

fix: The action ‘show’ could not be found for UsersController

Странно, что отличается поведение в test и development средах.

Надо проследить последовательности запросов в обеих.

18/10/2022 SimpleCov

22:07:51

Надо покрыть feature тестами всё.

21/10/2022 Cuke: Key management

09:50:51

Или не всё?

26/10/2022 Need to rewrite Key management UI

12:41:52

Вот дошёл до места где уже надо пилить модалку для ввода пароля.

Но! Вот столько времени искал как это сделать по-современному, и всё зря.

Лучше обходиться без модалок.

Всё-равно надо разделить интерфейс для этих двух сценариев.

15:25:17

Решил что лучше разделить с помощью табов.

А как сделать табы, подключать tailwindcss или нет?

Есть https://tailwind-elements.com/. Вроде этого должно быть достаточно для того чтобы относительно нормально оформить фронт.

Если чего-то будет нехватать, TailwindCSS классы всё-равно можно будет использовать вместо чистых стилей. Должно быть быстрее.

19:03:09

И https://tailwindtemplates.io/templates?category=tab.

Feature: Voting

Tasks

  • [X] Пропись задумки механики
  • [X] Nav
  • [ ] Form

21/06/2022 механика

00:03:11

Что-то не зафиксировал никакого результата. Помню про голосование в википедии. Там была табличка проведённых голосований.

Дата начала, дата итога, организаторы, тема, статус, коммантарий.

02:03:59

Может поэкспериментировать теперь набросками? Сразу как-то сложно всё предусмотреть. Начать с формы, …

18:16:35

Сначала немного подумать над процессом.

Создаётся запись темы.

Чтобы отдать голос за то или иное решение создаётся запись голоса.

Можно сделать кнопку создания голоса, как кнопку подписать.

Для верификации голоса ставится подпись.

Варианты ответов голосования?

Для просто посмотреть на внешний вид YAML:

---
тип: голосование
ветка:
  варианты:
  - |
    aasdf asdfwer
    asdfawer
  - b
  - c
что-нибудь ещё: okokoko

22:01:43

Что тогда?

28/06/2022 Voting link

07:14:17

nav.

30/06/2022 Voting form

13:55:24

Form.

Не понимаю, надо ли ещё что-то кроме топика?

13/07/2022 ступор

21:22:53

Значит пока только топик.

08/09/2022 что-то пошло не так

18:50:13

Ничего не нравится, иду в журнал.

Feature: Sign record

Tasks

  • [-] Если у пользователя сохранён приватный ключ, он может подписать им запись.
    • [-] views
      • [-] home/index
        • [-] Sign button
          • [X] sign_record_path
          • [ ] Enabled/Disabled ~ Private Key
    • [X] fingerprint
    • [X] Идентификатор записи
      • [X] Хэш? 01/05/2022 19:35
    • [X] record_controller.js
    • [X] records/signature_controller
    • [X] связать signature и record в базе
      • [X] GPGME: отказаться
        • [X] Read the docs
      • [X] OpenPGP.js on Node.js
        • [X] verify
      • [X] модель
      • [X] прежде чем связывать запись с подписью проверить подпись
    • [X] отображение подписавшихся пользователей
    • [ ] автоматическая подпись, в Introduction, во фронте
  • [X] Profile
    • [X] Generate fingerprint along with keys
    • [X] Customize username and passphrase
    • [X] User table: fingerprint
    • [X] Update keys saves fingerprint
  • [X] Introduction
    • [X] record includes datetime
    • [X] public key
    • [X] fingerprint

30/04/2022 формулирование

19:18:37

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

01/05/2022 как идентифицировать пользователя, совместомость OpenPGP.js с GnuPG

18:33:01

Сначала кнопку.

19:35:19

Для добавления подписей в записи, нужен идентификатор записей.

Можно использовать хэш от [ pgp fingerprint, даты, контента, ].

Но для этого это всё уже должно быть в Record.

19:59:20

Для secure pgp fingerprint прочитать: https://mshelton.medium.com/how-to-lose-friends-and-anger-journalists-with-pgp-b5b6d078a315

А не.

Походу это просто научпоп статья.

22:33:24

Что завис? Смотрел что за ключи генерирует OpenPGP.js, и насколько они совместимы с KGPG.

Вроде всё ок. Можно пользоваться.

Что делать дальше?

02/05/2022 кнопка Sign

19:38:58

Для начала, зафиксировать уже сделанные изменения.

20:55:27

А теперь?

Нужно определиться со структурой данных.

Или опять набросать.

03/05/2022 обновить формат Introduction

08:46:03

Набросать конечно.

Сейчас нажимая на кнопку Sign, видно только success notice.

Чего бы хотелось добавить?

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

И подписывать надо не только запись, но и дату. Хотя дату можно добавлять и в запись.

То есть, доделать сначала Introduction.

12:28:52

Подпись ставить следующей записью?

14:52:21

Давай думай!

06/05/2022 обновление Introduction, отвлёк Yandex Autofill, User fingerprint

00:37:48

Представление должно включать поле fingerprint.

Или сразу открытый ключ?

И то и другое.

01:10:12

Странно что в Ruby нет PGP… ну практически. upd: GPGME

09:40:49

Работа над профилем. Пробую сделать так, чтобы не мешал Yandex Autofill.

12:30:31

До конца не исправить во всех местах косяки. Забить.

User table: fingerprint

16:21:53

Introduction

17:11:47

Вот блин. А подпись то в Ruby никак не поставить. Значит автоматически это пока невозможно. upd: в бакэнде вообще подпись не поставить, ключ у клиента

Закоммитить промежуточные изменения, но сначала обновить документацию.

Для этого зарегаться шаблонным пользователем.

08/05/2022 record_controller.js

13:08:52

Ну что, теперь подпись!

Но здесь начинать надо не с Ruby, а с JavaScript.

14:30:48

record_controller.js upd: странное название, лучше signature_controller.js

20:16:28

А теперь в контроллер.

Зачем мне там надо было sha3?

09/05/2022 created_at == дата записи

13:41:08

А, это ссылка на запись.

А что если таких записей будет несколько? Добавить дату записи.

15:55:09

Где завис? А, дату одинаковую сделать надо записи. В content и created_at.

Блин, псих. Зачем? В прототипе то…

10/05/2022 signature_controller.rb

10:17:26

Ну надо было) Так. По джаваскрипту готово.

Теперь records_controller#sign.

Не. Надо создать records/signature_controller

11/05/2022 подпись пишется в книгу

13:55:20

Маршрут поменял. Завис на необходимости указывать id подписываемой записи.

А, указывать можно, но отправлять через параметры, а не строку запроса.

Прежде чем связывать в базе записи с подписями, закоммитить.

А прежде потыкать что получилось.

17:20:55

Мысли по поводу удаления записей.

Если это не чейн, то можно. Проверяя ключ спецзапросом.

12/05/2022 обзор сделанного, GPGME

23:00:00

Резюмировать работу по дням.

23:25:13

Обнаружил GPGME, и похоже там можно работать.

Зачем мне это надо было? Для проверки подписей, и на основе этой проверки связывание подписей с записью.

И что делать? Добавлять это в прототип? Не обязательно. Но… Чтобы всё было по честному, надо. А то потом окажется, что надо пилить ещё свою pgp ruby библиотеку.

18/05/2022 GPGME или как проверять подпись?

19:17:07

Промкоммит.

21:03:11

Походу, чтобы понять как проверить подпись в том виде в каком у меня есть, и желательно без использования keychain, надо читать документацию по GPGME.

19/05/2022 .

15:47:57

Всё как-то мудрёно. Ну ладно. Попробовать на высоком уровне.

22:58:47

Походу там без привязки к системному gnupg вообще никак…

Не нравится, чёт…

Но похоже что без вариантов. Или если использовать OpenPGP.js через Node.js, как внешнее приложение.

Как использовать OpenPGP.js прямо из Ruby с ExecJS я так и не понял. Может быть и можно, даже. Но зачем?

20/05/2022 OpenPGP.js on Node.js, verify

14:06:40

Короче. OpenPGP.js на Node.js.

16:07:35

Наваял простой скрипт, подпись верифицирует.

Надо сделать так, чтобы на Heroku можно было запускать node из рельсы.

Можно воспользоваться советом из https://stackoverflow.com/questions/18694887/rails-heroku-how-to-install-javascript-dependences-that-needs-npm-install

А можно https://devcenter.heroku.com/changelog-items/2283.

В последнем говорится, что можно package.json добавить в корень проекта и всё.

17:26:58

Просто засунуть всё в корень?

24/05/2022 Record self joins

00:00:13

Надо пожалуй сразу и использовать этот скриптик.

А нет, забыл. Это несколько подзадач.

01:07:14

Дорабатываем модели, для ассоциаций записей с подписями.

Self joins?

02:45:57

Готово.

31/05/2022 Signed users

17:20:22

Вроде бы я проверил как это работает и всё ок.

Ага. Надо только добавить отображение пользователей, подписавших запись.

06/06/2022 Signature validation

20:33:34

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

Проверить.

20:54:20

Ага, проверка подписи последнее. И что делать в случае невалидной подписи.

07/06/2022 Review, Deploy

00:26:27

Походу всё в коммитах уже.

Надо мержить. Дорабатывать до совершенства не хочется фичу, пусть будет в таком состоянии пока.

Надо только сделать ревью.

Поправить документацию.

07:40:12

A little more action: on public key change.

18:46:37

Не устанавливается npm на heroku :(

Помогла ссылка на стэковерфлоу выше.

heroku buildpacks:add --index 1 heroku/nodejs

22:27:56

Всё теперь работает как должно.

Feature: Introduction

Tasks

  • [X] routes
    • [X] records/introduction
      • [X] new
      • [X] create
  • [X] views
    • [X] home
      • [X] index
        • [X] nav introduction
        • [X] introduction always active? yes
    • [X] records/introduction
      • [X] new
        • [X] Fields
          • [X] Name
          • [X] Birthdate
          • [X] Address
  • [X] сontrollers
    • [X] records/introduction
      • [X] create
  • [X] introduction format
    • [X] YAML
    • [X] keys
      • [X] russian?
      • [X] list

12/04/2022 Всё для прототипа, всё для победы!

21:56:56

Истории.

22:36:29

Нет.

Не сейчас.

А сейчас, прототип. Прототип это не продукт, можно мусорить, и забыть о красоте.

Но! Хотя бы тесты может быть? Да ну, или?

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

Поэтому увлёкся “чистотой”. Можно и побыстрее делать.

Но без историй всё-равно никуда. Хотя бы текстом.

23:10:57

Devise-User-Profile: https://dev.to/skrix/devise-user-profile-1f0h

На будущее. А пока чтобы совсем косячно не было при создании пары ключей.

Или ладно пока. Это не главное.

Сейчас главное определиться что дальше самое важное для прототипа сделать.

Вот! “Создание записи удостоверяющей личность”

Для этого нужны модели:

  • Действие Action
  • Страна
  • Регион
  • Район
  • Населённый пункт
  • Улица

13/04/2022 Запись Introduction - Представление

10:57:03

Продолжить.

11:32:39

Когда и для чего нужен адрес?

Для верификации записей. Вводить можно на шаге представления.

Пока, пожалуй можно оформить как одно поле, чтобы не плодить моделей.

14/04/2022 Trim up

13:56:21

Так, для начала надо оформить желаемое в виде документации, чтобы было понятно что вообще делать.

15:26:40

Начать с формы или модели? С формы.

Но сначала привести в порядок текущее состояние.

22/04/2022 Routes

16:02:18

Для перехода к форме Introduction использовать пока ссылку.

17:40:55

Routes /records/introduction/index|new|create|show

Как-то так.

21:40:50

Пробежался по гайду по маршрутам.

27/04/2022 Solargraph

14:57:37

Solargraph rocks!

Правда пока ещё далеко от того что хотелось бы в идеальном варианте. Типа автокомплит всего что только может быть в зависимости от контекста.

28/04/2022 Reorg

21:52:17

Как дела?

Пора записывать журнал по отдельной ветке на каждую таску.

Можно даже перенести часть настоящего журнала.

22:21:40

Да! Solargraph really rocks! Теперь можно переходить по определениям и знакомится с наследуемым кодом.

22:56:15

Итак, как всё-таки дела?

29/04/2022 YAML

01:39:02

Ну примерно разложил по подзадачам, на основе кода.

Надо закончить форму.

02:10:31

Всё?

Допустим. Что дальше?

09:24:59

Дальше надо что-то делать с данными. Куда-то их девать.

12:29:48

Хороший вопрос.

Пока есть только таблица records. С одним смысловым полем content.

По идее, я планировал именно туда и записывать все сообщения.

Вот, в формате YAML можно, отлично парсится даже по русски и читается легко.

30/04/2022

00:34:23

Ну что? Не помещается в голове.

Тогда тут. А что сложного? Экспортируешь хэш как в примере, и всё?

То есть надо идти и писать контроллер.

15:20:05

Захардкодить названия.

16:44:59

Запись добавляется. Что можно сделать дальше?

19:16:42

Хватит.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment