Перейти к содержимому
hohserg

HoverHelm - операционная система для дронов, микроконтроллеров и других устройств без собственного жесткого диска

Рекомендуемые сообщения

Я уже игрался с виртуализацией компонентов и здесь есть 1 трабла. Сетевая карта берет 1 тик на пересылку сообщения. И если на каждое действие использовать ее то проограма будет работач оч медленно. Здесь нужно пытатся чем поменьше ганнять данные по сети.

Если юзаеш к примеру робота/дрона и комп для норм монитора то лучше всего проги запускать на роботе/дроне, все гуи штуки рисовать как будто через двойную буферизацию (а точнее батчами) и отправлять все одним пакетом.

 

Если нужен диск то нужно иметь програму типо БД на компе с дисками и отдавать их по запросах.

 

 

Кул бы было сделать как хадуп делает. Он вместо того что б гонять данные к программе -- гоняет программы к данным. Тоесть я имею ввиду писать проги на компе а он что б перебрасывал части прог куда нада.

Изменено пользователем whiskas

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Верное замечание. Я уже думал над тем, чтобы сделать библиотеку io, аналогично буферизирующую обращение к диску. Также можно сделать отправку больших кусков лога по запросу, как только юзер открывает терминал конкретного устройства

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обнова!

Теперь есть инсталятор и апдейтер, процесс установки существенно упростился.

Для сравнения

До

Скрытый текст

Установка сервера:

  1. Установите OpenOS
  2. Создайте папку /home/hoverhelm/
  3. Загрузите в нее файл https://raw.githubusercontent.com/hohserg1/HoverHelm/master/server/home/main.lua
  4. Создайте папку /home/lib/hoverhelm/
  5. Загрузите в нее все файлы из https://github.com/hohserg1/HoverHelm/tree/master/server/home/libs/hoverhelm
  6. Откройте /home/lib/hoverhelm/config.lua для редактирования
    1. Добавьте желаемые к использования сетевые и связанные карты по образцу
    2. Можно настроить пути расположения пользовательских папок  и папки клиентского ядра
  7. Создайте папку ядра устройств(по умолчанию /home/hoverhelm/device_core/)
  8. Загрузите в нее файлы из https://github.com/hohserg1/HoverHelm/tree/master/core

Установка клиента:

  1. Загрузите в /home/hoverhelm/ файл https://raw.githubusercontent.com/hohserg1/HoverHelm/master/eeprom-client/primary-eeprom.lua
  2. Откройте /home/hoverhelm/primary-eeprom.lua для редактирования
  3. Если устройство будет использовать сетевую карту, то замените строку ---[[#if_def tunnel на --[[#if_def tunnel
  4. Если устройство будет использовать связанную карту, то замените строку ---[[#if_def modem на --[[#if_def modem
  5. Прошейте свободный EEPROM: flash -q primary-eeprom.lua <deviceName>
  6. Если устройство будет использовать сетевую карту, то
    1. Откройте интерпретатор lua
    2. Запишите в eeprom.setData адрес сетевой карты сервера, порт и адрес сетевой карты устройства через ":"
      • eeprom.setData("server-address:111:device-address")
      • адрес сетевой карты устройства указывать необязательно, если имеется только одна сетевая карта

После

Скрытый текст

Установка сервера:

  1. Установите OpenOS
  2. Выполнить команду pastebin run xh61Yx8a
  3. Отредактируйте открывшийся конфиг
    1. Добавьте желаемые к использования сетевые и связанные карты по образцу
    2. Можно настроить пути расположения пользовательских папок  и папки клиентского ядра

Установка клиента:

  1. Запустите HoverHelm server
  2. Выполните команду prepare_eeprom <имя устройства> <адрес сетевой карты со стороны сервера или ее тип(если она одна)> <порт> <адрес сетевой карты со стороны клиента, необязательно если карта одна>

 

Оптимизирован сетевой диск: появился файл конфигурации /frequentlyReadedFiles.txt, задающий список часто читаемых файлов. Контент этих файлов отправляется устройствам на ранней стадии инициализации без запросов со стороны устройств. Когда устройству в дальнейшем нужно будет прочитать этот файл, то вся необходимая информация уже имеется локально и не требуются вызовы сетевой карты.

Время инициализации снижено с 5.5сек до 3.5сек. А время второй и последующих инициализаций снижено до 2.9сек благодаря сохранению кэша файлов во временной файловой системе.

 

Добавлена программа lua repl - можно в интерактивном режиме выполнять код на устройствах

NxIokIR.png

 

Добавлена серверная команда about - краткое описание, ссылки, версия и благодарности

 

Изменено пользователем hohserg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я хочу сразу извиниться за то, что буду дальше писать. Потому что это будет критика и не по коду.

 

Тема оформлена странно. По описанию в первом посте я решительно ничего не понял. Как будто я какую-то книжку начал читать, которая 4 тома неспешно длиться будет. Это меня огорчает: я же вижу, что это какая-то крутая программа.

 

Всё становится логичным, если признать, что истинная цель — это "продать" программу. Заинтересовать читателей. Принципы: всё главное — вверх; что можно делать пикчей — сделать пикчей, не текстом; а текст же делать последовательным и легкодоступным. Дальше я перечислю, что конкретно можно исправить, чтобы офигенной проге сопутствовал офигенный пост.

 

1. Описание

Нет ни одного абзаца, который бы сказал, что делает программа. Абзац это должен быть первый и прямо под картинкой:

Цитата

HoverHelm — сетевые диски для тех, у кого нет жёсткого: дронов, микроконтроллеров. Вставляем диски в сервер — через модемы клиенты получают к ним доступ. И пару вкусных фич вдобавок.

 

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

 

2. Список фич

Есть пункт "Преимущества". Я скажу прямо: у этой программы конкурентов нет. Соответственно, преимуществ перед кем-то нет тоже. Можно или перечислить фичи, или сказать зачем.

В оригинальном посте ближе второй вариант. Тогда назвать пункт своим именем: "Зачем", — и переписать список. Схема каждого пункта: что за фича, запятая (или тире, или двоеточие), комментарий (какая проблема решается). Кратко и ёмко — подробнее можно дальше написать.

 

Пример:

Цитата

Зачем:

  • неограниченный размер файлов, чтобы забыть про 4 кБ;
  • прозрачная эмуляция диска: в программе не придётся ничего менять;
  • легко обновить программу: не нужно перешивать каждого дрона;
  • не нужны клава и моник.

Список дополнить, разумеется. 4 пункта не предел.

 

3. Минимальные требования

Пункт можно переименовать в "Железо". Это короче и удобоваримее. И ради кода, делайте требования картинкой. Это в пятьсот раз нагляднее, чем список. Уже ведь даже майнкрафт не нужен для пикч: в десктопном оцелоте можно склеить пикчи.

 

У форума уродские инструменты форматирования, но таблицы вставлять он умеет. Откроем редактор HTML, пропишем:

<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>Клиент</th>
          <th>Сервер</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><img src="..." alt="Клиентская сборка"></td>
          <td><img src="..." alt="Серверная сборка"></td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Копипастим, вставляем в адресную строку, в начало добавляем data:text/html,, жмём Enter. Ctrl-A, Ctrl-C и копируем сюда.

Цитата
Клиент Сервер
Клиентская сборка Серверная сборка

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

 

4. Команды

Команды надо выделять. Или курсивом, или в блок кода, или вот так, но не плейнтекстом. Особенно команды с кучей аргументов.

 

5. Использование

Это же не просто библиотека. Инструкция по использованию — это полезно, но опять второстепенно. Нужен новый пункт, назвать "Практика". Здесь можно сделать короткое и ёмкое видео (скорее всего, придётся кадрировать, снимать в несколько дублей).

 

План сценария:

  1. Надпись "Установка".
  2. Запускаем сервер, ставим программу.
  3. Собираем биос.
  4. Открываем гуи ассемблера, в котором уже выложен рецепт дрона. Пихаем биос.
  5. Жмём по кнопке, получаем результат (делать в креативе, чтоб не ждать).
  6. Включаем дрона и запускаем что-нибудь цветастое. Например, мерцанием лампой дрона под такт музяке. Или что-нибудь ещё.

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

 

Если видео не хочется делать, то переписать инструкции. Вернее, дополнить их примерами. Разберём один пункт.

В 18.08.2020 в 03:19, hohserg сказал:

Выполните команду prepare_eeprom <имя устройства> <адрес сетевой карты со стороны сервера или ее тип(если она одна)> <порт> <адрес сетевой карты со стороны клиента, необязательно если карта одна>

Не знаю, как вам, а я ничего так и не понял. А теперь следите за руками:

Цитата

Пропишите:


$ prepare_eeprom <имя устройства> <адрес серверного модема> <порт> <адрес клиентского модема>

Если на сервере одна сетевая карта, вместо адреса её можно вписать тип (modem или tunnel).

Адрес клиентского модема можно убрать вообще, если на клиенте только одна сетевая карта.

Пример:


$ prepare_eeprom Вася modem 31337

У меня вопросов больше не осталось. В том же духе переделать остальные пункты инструкций и сделать их полезными для людей.

 

6. Слишком мелкие придирки, чтобы выделять на каждую по пункту

  • По-русски logging лучше назвать логированием. Или просто логами.
  • Перед открывающей скобкой ставить пробел (вот так).
  • Сделать форматирование команд однородным. Сейчас там где-то цвет особый, где-то курсив, а где-то ни того, ни другого. Хотя семантически элементы не отличаются.
  • Причастие прошедшего времени глагола read пишется так же. @Fingercomp reads manuals. — Yesterday I read manuals. — The manual was read.

 

7. Что в топике хорошо

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

  1. Пикча в начале. Самое главное — странная пикча в начале. Это интереснее.
  2. Принцип работы умещён в информативную картинку. Дополнительный текст не потребовался.
  3. Есть ссылка на код. Во многих постах авторы ограничиваются командой загрузки. Мне интересно почитать и сырцы.
  4. Охрененная идея, которая побудила меня писать это.

8. Живой пример

Я писал этот пост для Cyan на oc.cil.li: https://oc.cil.li/topic/2350-cyan-bios/. Там люди очень скупы на лайки, а здесь их целых 3. Оформление оказалось очень важным.

 

9. Почему я написал пост здесь, а не стукнул автору в ЛС

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

 

Если же этот пост покажется оффтопом, прошу модераторов перетащить пост в мой блог. Я дальше сам поправлю контекст.

  • Нравится 6
  • Одобряю 1
  • Спасибо 2
  • Грусть 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...