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

Лидеры


Популярный контент

Показан контент с высокой репутацией 03.01.2021 во всех областях

  1. 2 балла
    Иногда надо уместить программу на EEPROM, но она никак не хочет туда влезать. Есть решение - карта данных любого уровня, может упаковывать и распаковывать программу, а код распаковки не занимает много места. Благодаря алгоритму Deflate теперь есть где развернуться. Я наконец-то смог запрессовать свою копалку, даже без оптимизации кода, и еще свободное место осталось. Требования: Data-card любого уровня. Интернет карта для установки программы. Установка: pastebin run KThbTuZr или wget https://raw.githubusercontent.com/zgyr/bpacker/master/installer.lua && installer && rm installer.lua или oppm register OpenPrograms/zgyr-Programs oppm install bpacker Использование: bpacker [опции] <имя файла> Опции: -q тихий режим, не показываются статусные сообщения -m минификация кода перед упаковкой (работает не всегда) -l использовать алгоритм lzss (Data card не требуется) -h справка Программа сожмет указанный файл и запишет на EEPROM. Код должен быть адаптирован для работы без OpenOS. TODO: Сделать упаковщик немного умнее. (сейчас код распаковки захардкожен, занимает лишние байты и может не работать в очень редких случаях) Улучшить минификатор. (он лучший среди Lua-минификаторов, но иногда ломает код) Ссылки: Github программы. Github минификатора.
  2. 2 балла
    Многие разрабатывают компьютеризированные хранилища, но мало кто публикует. Захотелось мне свое доработать и опубликовать... и я его не нашел. Либо затер сохранение, либо я его писал в каком-то кастомном клиенте, который удалил. В общем, печаль-беда. Предлагаю коллективно разработать умное хранилище на транспозерах, в которое, можно загружать/выгружать предметы, не заморачиваясь с проектированием и стройкой. Вот примерная архитектура моей системы, которую восстановил по памяти. К серверу подключена сеть из транспозеров и сундуков. При первом запуске, системе надо определить и сохранить свою топологию. Для этого, пользователь выбирает сундук, через который будет происходить ввод-вывод предметов, закидывает в него предмет, который будет играть роль метки при сканировании хранилища. Запускает сканирование в терминале. Система проверяет все транспозеры и находит метку. Сундук помечается как корневой и начинается сканирование. При сканировании, система выбирает еще не помеченный сундук и перемещает туда метку. Сундук помечается и путь к нему от корня записывается в базу данных. При повторном прохождении предмета через сундук в направлении от корня, путь перезаписывается, чтобы избежать конфликта в петлях. Представление данных: Адреса транспозеров записываются в список, позиция в этом списке используется во всех операциях с транспозерами. транспозеры = { [1] = uuid_1, [2] = uuid_2, [3] = uuid_3, ... } Имена предметов хранятся в двойном словаре, это позволяет не хранить в базе полное имя предмета, а только ссылку. Полное имя выглядит так: мод:имя_предмета:мета. предметы = { [1] = идентификатор_1, [идентификатор_1] = 1, [2] = идентификатор_2, [идентификатор_2] = 2, [3] = идентификатор_3, [идентификатор_3] = 3, ... } Для каждого сундука хранятся ссылки на смежные транспозеры, это позволяет перемещать предметы в любом направлении и очень быстро обновлять информацию о содержимом, даже если кто-то залез в хранилище руками. Под нулевым индексом хранится путь от корня. сундуки = { [1] = { [0] = {транспозер_1, транспозер_4, транспозер_10, ...}, транспозер_1 = сторона_1, транспозер_2 = сторона_2, транспозер_3 = сторона_3, ... }, ... } В основной базе данных хранится информация о расположении предметов, идентификатор сундука указывает на таблицу предметов, идентификатор предмета это ссылка на словарь, он указывает на таблицу слотов сундука, в которых лежит данный предмет. база_данных = { сундук_1 = { предмет_1 = { [слот1] = количество, [слот2] = количество, [слот3] = количество, ... }, ... }, ... } Счетчик это вспомогательная таблица для визуализации в терминале и транспортировки предметов. Ссылки на предметы служат указателями на таблицу, в которой первым элементом хранится суммарное количество этого предмета в системе, а дальше следуют ссылки на сундуки, которые содержат этот предмет. (У меня эта таблица была разделена на две, но зачем не могу вспомнить) счетчик = { предмет_1 = {суммарное_количество, сундук_1, сундук_2, ...}, предмет_2 = {суммарное_количество, сундук_1, сундук_2, ...}, предмет_3 = {суммарное_количество, сундук_1, сундук_2, ...}, ... } Первый слот во всех сундуках (кроме корневого) всегда свободен, это транспортировочный слот, по которому перемещаются предметы. Алгоритм импорта предмета очень прост, система находит свободный или неполный слот, берет путь из таблицы сундуков и перекачивает предмет, командуя транспозерам записанное направление, обновляет базу данных. Для экспорта ищется предмет, если он есть в ненулевом количестве, то выбираются сундуки и слоты с требуемым суммарным количеством и по очереди в корень переносятся предметы (в обратном направлении) и обновляется база. Для принудительного обновления информации, системе достаточно просканировать сундуки и записать хранящиеся в них предметы. А вот при добавлении транспозеров или сундуков, необходимо производить ту же операцию, что и при первом запуске. База данных получается полностью реляционная, с неполной связью. Ничего лишнего, кроме ссылок не хранится, в памяти сложных операций с таблицами не производится. Последний раз тестировал больше полугода назад, кажется использовал креативную шину, так что транспозеров было больше нормы, никаких проблем с памятью не наблюдалось.
  3. 1 балл
    Можно использовать алгоритм для динамической маршрутизации, сеть сама будет перестраиваться после любых изменений.
  4. 1 балл
    Еще до нового года, пришла в голову мысль свести майночасы и реальные. Вышел вот такой простой код: https://github.com/BrightYC/Other/blob/master/realtime.lua Работает в фоне, можно настроить свой часовой пояс и время обновления таймштампа(Нужно для того, если сервер остановился/вышли из игры). Для работы требуется только карта отладки, ничего больше. Пара фотографий: Время 23:20 Получилась довольно забавная штука, но на практике - не очень. Чаще всего заходишь в игру вечером - в итоге у тебя всегда в игре луна.
  5. 0 баллов
    Так этот Зион роботы Матрицы уничтожили, выжил только единственный комп. Его оставили специально, чтобы он сохранил информацию о пережитом ужасе и сломил дух сопротивления. По этим событиям даже фильм сняли.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...