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

ProgramCrafter

Пользователи
  • Публикации

    245
  • Зарегистрирован

  • Посещение

  • Победитель дней

    41

Все публикации пользователя ProgramCrafter

  1. @ChillMouse Вроде бы OpenComputers не поддерживает нативно WebSocket. Но есть библиотека, которая обеспечивает поддержку на стороне Lua. Не так давно выпущена, кстати
  2. ComputerCraft использует для получения ID компьютера os.getComputerID изнутри песочницы? И данные компьютера действительно сохраняются в другую папку? Т.е., если сделать ID ../../../etc/ (не учитывая то, что ID числовые, конечно), то можно будет считать файл passwd из системы?
  3. Надо содержимое рюкзака помнить, а так /give <кому> <название предмета>:<метаданные>{<NBT-тег>} Дело в том, что у рюкзака как такового может не быть ID - его инвентарь хранится обычно в NBT-теге. Тоже, в принципе, можно. Если известно, что в рюкзаке было.
  4. Вроде machine.lua в OpenComputers запрещал так делать. Что ли, ещё один баг в OC нашёлся?
  5. ProgramCrafter

    OpenComputers 1.7.6

    Хм, а я даже могу придумать этому применение. У тир3 видеокарты может быть 160*50*2 экранных буферов размера 1*1 (если используется разрешение меньше 160*50, то на буферы останется ещё больше памяти), у каждого буфера есть возможность хранить 57 байт (16 цветов палитры, 3 байта RGB; цвета текста и фона; палитровые цвета текста и фона в единственном символе; сам этот символ). В сумме 890 КБ доп. памяти, если кому-то надо .
  6. Лучше ~kv:t{pt(k,v)} (или как-то так), потому что циклы могут ведь вкладываться друг в друга.
  7. Но всё-таки hpm install stem в разы удобнее, чем искать ту же ссылку на форуме.
  8. Неправда. Tail call - это вызов, сделанный в строке return: local function f2() return error('tail call') end local function f3() return f2() end print(xpcall(f3, debug.traceback)) --[[ false input:2: tail call stack traceback: [C]: in function 'error' input:2: in function <input:1> (...tail calls...) [C]: in function 'xpcall' input:8: in main chunk [C]: in function 'pcall' demo.lua:60: in main chunk [C]: in ? ]] Это оптимизация, позволяющая использовать бесконечную рекурсию без переполнения стека - запись о старой функции (её upvalues и тому подобное) удаляется, и её место занимает новая запись. Без этой оптимизации плохо, поэтому это не недоработка.
  9. ProgramCrafter

    А что такое EEPROM и где оно живет?

    Нужный компонент точно поставлен в микроконтроллер/компьютер? Вариант №2: правильно написано имя компонента?
  10. ProgramCrafter

    OpenComputers 1.7.6

    Можно попытаться впилить её в machine.lua, если Scala её экспортирует как коллбек. Только лучше в библиотеку computer впиливать, наверно.
  11. ProgramCrafter

    OpenComputers 1.7.6

    Уже пофикшено, будет в релизе 1.7.7. Правда, есть подозрения, что там просто откатили новый шрифт целиком.
  12. ProgramCrafter

    Неправильный .shrc

    В /bin/source.lua - когда фиксили /bin/sh.lua, сломался этот файл, исполняющий построчно команды из .shrc. Фикситься должно так: поставить в 33 строку process.internal.continue(source_proc, line) (убрать _ENV). https://github.com/MightyPirates/OpenComputers/issues/3550
  13. ProgramCrafter

    Неправильный .shrc

    Отсылаю issue. Я даже знаю, где баг и как его фиксить.
  14. Да, сам так делаю. Слишком новый питон, в котором удалили поддержку Windows 7 (вроде бы и 8). @Wolframoviy надо даунгрейдить до Python 3.8.
  15. Да, файл надо закидывать с другой системы. Кстати, а всё сломалось на компьютере или на роботе? @eu_tomat говорил, что компьютеры, заспауненные через /oc_sc, работают.
  16. Да, я вчера писал это в дискорде и в IRC. Фикс такой: добавить require('core/full_buffer') в какой-нибудь файл - например, /boot/95_robot_fix.lua.
  17. Отрисовка четырёх основных форматов картинок (PNG, JPG, BMP, GIF) работает! В частности, BMP и GIF отрисовываются без использования временных файлов и поэтому работают внутри контейнера. У всех форматов, кроме PNG, даунскейл происходит по одному алгоритму. JPEG: GIF: BMP: PNG:
  18. ProgramCrafter

    OpenComputers 1.7.6

    Да ладно бы эти видеобуферы! Наконец компы на сервере перестанут выключаться не по делу - вот это да! И расширение шрифта - тоже неплохо.
  19. Контейнер был обновлён! Новая фича: правильная работа библиотеки process, /dev/null и /dev/full. Чтобы запустить команду с перенаправлением, можно пользоваться sh. Если sh не работает, убедитесь, что у вас установлена самая новая OpenOS (например, проверьте ту же команду в хост-системе). Похоже, что шелл не работал минимум 2 года (требовал первым аргументом таблицу, которую невозможно передать из терминала), и фикс был всего три месяца назад. Запись файлов внутри контейнера всё ещё не поддерживается. /home # container sh "echo 1 >/dev/null" /home # container sh "echo 1 >/dev/full" /home # container ls /dev components eeprom eeprom-data null random zero /home # container sh time "set >/dev/null" real 0m0.250s cpu 0m0.012s /home # container save-same-files /home/container.lua:155: unsupported open type: wb: stack traceback: ...
  20. Добавлен скрипт save-same-files: wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/save-same-files.lua Запаковывает в контейнер только те файлы, которые были в старой версии архива. Можно использовать для того, чтобы копировать только нужные файлы с рабочего компьютера и не раздавать оттуда все секреты и печеньки.
  21. Даунскейлинг готов и интегрирован в отрисовку GIF и JPG. Последствия: JPG открывается плохо, с OOM. Рекомендую использовать для запуска программы контейнер (https://computercraft.ru/topic/6134-polu-docker/), в котором лежат графические библиотеки со всеми нужными патчами: wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/images-drawer/archive.bin До масштабирования JPG работал!
  22. Новая версия архиватора (enum-files.lua) спрашивает для каждого файла, включать его в архив или нет. Старую версию скрипта можно скачать здесь: https://gitlab.com/ProgramCrafter/lua-utils/-/raw/82d66b04b02118499cc577344fa4de924c177105/half-docker/enum-files.lua. Хотя смысла в этом немного - чтобы добавить в архив всё, достаточно запустить yes | enum-files.
  23. Теперь полу-докер подменяет не просто io.open, а всю библиотеку filesystem и package - а это значит, что теперь загрузка модулей через require происходит внутри контейнера, как и должна! Минус - некоторые программы могут крашиться. Баг-репорты принимаются, хоть здесь, хоть на гитхабе, хоть на гитлабе.
  24. ProgramCrafter

    Полу-Docker

    Ваша программа требует особую версию какой-нибудь библиотеки и мешается другим программам в системе? Опасаетесь, что необходимые библиотеки потеряются в истории? Надо разворачивать одно и то же окружение на много опенкомпов?* Представляю вашему вниманию программу, позволяющая собрать программу и все её библиотеки в один файл! wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/enum-files.lua Программа, сохраняющая "образ" файловой системы компьютера, на котором запущена. Чтобы не сохранять образ всей OpenOS, сохраняется только разность между корневой папкой и дискетой с чистой OpenOS. Путь к этой дискете необходимо прописать на строке 6. Образ сохраняется по пути /home/archive.bin. wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/unpack-files.lua Программа, распаковывающая образ поверх файловой системы. Осторожно, не открывайте зловредные архивы, потому что они могут затереть даже EEPROM (указав путь для распаковки /dev/eeprom)! wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/container.lua Сам полу-докер - скрипт, позволяющий запустить программу с подменой её файловой системы на образ. Так как OpenOS не записывается в образ, этой программе тоже необходимо указать путь к дискете с чистой OpenOS. Подменяется только io.open - to be fixed soon, потому что из-за этого могут грузиться неправильные версии библиотек. Образ является read-only - неясно, каким образом фиксить это. *Kubernetes (для управления множеством контейнеров) в комплект поставки не входит.
  25. Добавлена экспериментальная поддержка PNG! Разумеется, обычная библиотека graffiti не подходит - нужно использовать патч, улучшающий производительность. wget -fq https://gist.githubusercontent.com/ProgramCrafter/d1b279aec9e473794df115d1301dcb27/raw/9048fa36feaaedccecf54c7ae626174af17abb42/graffiti.lua /usr/lib/graffiti.lua Картинка откопана на форуме)
×
×
  • Создать...