ProgramCrafter
Пользователи-
Публикации
245 -
Зарегистрирован
-
Посещение
-
Победитель дней
41
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя ProgramCrafter
-
@ChillMouse Вроде бы OpenComputers не поддерживает нативно WebSocket. Но есть библиотека, которая обеспечивает поддержку на стороне Lua. Не так давно выпущена, кстати
-
ComputerCraft использует для получения ID компьютера os.getComputerID изнутри песочницы? И данные компьютера действительно сохраняются в другую папку? Т.е., если сделать ID ../../../etc/ (не учитывая то, что ID числовые, конечно), то можно будет считать файл passwd из системы?
-
Надо содержимое рюкзака помнить, а так /give <кому> <название предмета>:<метаданные>{<NBT-тег>} Дело в том, что у рюкзака как такового может не быть ID - его инвентарь хранится обычно в NBT-теге. Тоже, в принципе, можно. Если известно, что в рюкзаке было.
-
Вроде machine.lua в OpenComputers запрещал так делать. Что ли, ещё один баг в OC нашёлся?
-
OpenComputers 1.7.6
ProgramCrafter прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Хм, а я даже могу придумать этому применение. У тир3 видеокарты может быть 160*50*2 экранных буферов размера 1*1 (если используется разрешение меньше 160*50, то на буферы останется ещё больше памяти), у каждого буфера есть возможность хранить 57 байт (16 цветов палитры, 3 байта RGB; цвета текста и фона; палитровые цвета текста и фона в единственном символе; сам этот символ). В сумме 890 КБ доп. памяти, если кому-то надо . -
Лучше ~kv:t{pt(k,v)} (или как-то так), потому что циклы могут ведь вкладываться друг в друга.
-
Но всё-таки hpm install stem в разы удобнее, чем искать ту же ссылку на форуме.
- 51 ответ
-
- 1
-
-
- hpm
- repository
- (и ещё 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 и тому подобное) удаляется, и её место занимает новая запись. Без этой оптимизации плохо, поэтому это не недоработка.
-
А что такое EEPROM и где оно живет?
ProgramCrafter прокомментировал Totoro запись в блоге в Totoro Cookies
Нужный компонент точно поставлен в микроконтроллер/компьютер? Вариант №2: правильно написано имя компонента?- 21 комментарий
-
- eeprom
- контроллер
-
(и ещё 1 )
Теги:
-
OpenComputers 1.7.6
ProgramCrafter прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Можно попытаться впилить её в machine.lua, если Scala её экспортирует как коллбек. Только лучше в библиотеку computer впиливать, наверно. -
OpenComputers 1.7.6
ProgramCrafter прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Уже пофикшено, будет в релизе 1.7.7. Правда, есть подозрения, что там просто откатили новый шрифт целиком. -
В /bin/source.lua - когда фиксили /bin/sh.lua, сломался этот файл, исполняющий построчно команды из .shrc. Фикситься должно так: поставить в 33 строку process.internal.continue(source_proc, line) (убрать _ENV). https://github.com/MightyPirates/OpenComputers/issues/3550
-
Отсылаю issue. Я даже знаю, где баг и как его фиксить.
-
Да, файл надо закидывать с другой системы. Кстати, а всё сломалось на компьютере или на роботе? @eu_tomat говорил, что компьютеры, заспауненные через /oc_sc, работают.
-
Да, я вчера писал это в дискорде и в IRC. Фикс такой: добавить require('core/full_buffer') в какой-нибудь файл - например, /boot/95_robot_fix.lua.
-
Отрисовка четырёх основных форматов картинок (PNG, JPG, BMP, GIF) работает! В частности, BMP и GIF отрисовываются без использования временных файлов и поэтому работают внутри контейнера. У всех форматов, кроме PNG, даунскейл происходит по одному алгоритму. JPEG: GIF: BMP: PNG:
- 11 ответов
-
- 3
-
-
- work in progress
- png
-
(и ещё 3 )
Теги:
-
OpenComputers 1.7.6
ProgramCrafter прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Да ладно бы эти видеобуферы! Наконец компы на сервере перестанут выключаться не по делу - вот это да! И расширение шрифта - тоже неплохо. -
Контейнер был обновлён! Новая фича: правильная работа библиотеки 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: ...
- 4 ответа
-
- контейнеры
- программы
-
(и ещё 2 )
Теги:
-
Добавлен скрипт save-same-files: wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/save-same-files.lua Запаковывает в контейнер только те файлы, которые были в старой версии архива. Можно использовать для того, чтобы копировать только нужные файлы с рабочего компьютера и не раздавать оттуда все секреты и печеньки.
- 4 ответа
-
- контейнеры
- программы
-
(и ещё 2 )
Теги:
-
Даунскейлинг готов и интегрирован в отрисовку 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 работал!
- 11 ответов
-
- work in progress
- png
-
(и ещё 3 )
Теги:
-
Новая версия архиватора (enum-files.lua) спрашивает для каждого файла, включать его в архив или нет. Старую версию скрипта можно скачать здесь: https://gitlab.com/ProgramCrafter/lua-utils/-/raw/82d66b04b02118499cc577344fa4de924c177105/half-docker/enum-files.lua. Хотя смысла в этом немного - чтобы добавить в архив всё, достаточно запустить yes | enum-files.
- 4 ответа
-
- контейнеры
- программы
-
(и ещё 2 )
Теги:
-
Теперь полу-докер подменяет не просто io.open, а всю библиотеку filesystem и package - а это значит, что теперь загрузка модулей через require происходит внутри контейнера, как и должна! Минус - некоторые программы могут крашиться. Баг-репорты принимаются, хоть здесь, хоть на гитхабе, хоть на гитлабе.
- 4 ответа
-
- контейнеры
- программы
-
(и ещё 2 )
Теги:
-
Ваша программа требует особую версию какой-нибудь библиотеки и мешается другим программам в системе? Опасаетесь, что необходимые библиотеки потеряются в истории? Надо разворачивать одно и то же окружение на много опенкомпов?* Представляю вашему вниманию программу, позволяющая собрать программу и все её библиотеки в один файл! 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 (для управления множеством контейнеров) в комплект поставки не входит.
- 4 ответа
-
- 6
-
-
- контейнеры
- программы
-
(и ещё 2 )
Теги:
-
Добавлена экспериментальная поддержка PNG! Разумеется, обычная библиотека graffiti не подходит - нужно использовать патч, улучшающий производительность. wget -fq https://gist.githubusercontent.com/ProgramCrafter/d1b279aec9e473794df115d1301dcb27/raw/9048fa36feaaedccecf54c7ae626174af17abb42/graffiti.lua /usr/lib/graffiti.lua Картинка откопана на форуме)
- 11 ответов
-
- 3
-
-
- work in progress
- png
-
(и ещё 3 )
Теги:
