Fingercomp
-
Публикации
1 629 -
Зарегистрирован
-
Посещение
-
Победитель дней
283
Сообщения, опубликованные пользователем Fingercomp
-
-
В чём смысл этой программы? Никаких SSH в OpenOS не имеется, часовой пояс никем не используется, а «ограничение компьютеров» вообще непонятно на что влиять может. Программа даже не интерактивна, просто забивает один и тот же файл захардкоженными значениями. Причём неоптимальным образом для этой цели! Четыре раза один и тот же файл читать, десериализовывать, модифицировать содержимое, сериализовывать и записывать, когда достаточно одного? Программу можно втрое сократить, не потеряв функциональность и даже улучшив производительность.
-
В общем случае схема действий, когда надо писать код для платформы, на которой это делать сложно, одинакова: нужно перенести разработку туда, где это делать легко, отладить всё основное, а затем допилить так, чтобы работало и на исходной. В случае с OpenComputers можно использовать эмулятор Ocelot Desktop: сделать в нём аналогичный сетап компьютеров/серверов, а код писать в полнофункциональном редакторе кода вроде VS Code или vim. Можно редактировать напрямую файлы сейва либо делать в отдельной директории, а в эмуляторе потом через ПКМ по жёстким дискам и EEPROM прикрепить их содержимое к этой директории.
-
В 12.06.2024 в 15:13, PetyaBorisov сказал:Тем более 1.12.2 поддерживает 8 версию джавы
Не надо путать два разных понятия: версию языка и версию JRE.
Да, игра работает на Java 8, но это только язык. У самой JRE ещё есть приписка — вроде 8u42. Здесь 42 — номер обновления. Думаю, очевидно же, что если в JRE баг, то фикс его язык никак не меняет? Проблема ведь не в языке, а в его реализации.
Поэтому, хоть Java всё так же восьмая, реализация её получала множество обновлений различного характера. В частности, почти 8 лет назад один из таких апдейтов, 8u91, добавил в список дефолтных сертификатов те, которые нужны на замену протухавшим старым, и именно их использует GitHub.
В 10.06.2024 в 17:35, PetyaBorisov сказал:@ECS Java автоматически скачивается лаунчером а OpenComputers 1.8.3
Возникает вопрос: какого чёрта качается JRE лишь немногим новее, чем MC 1.7.10, чтобы запускать MC 1.12.2?
Решение этого вопроса — уж точно не область ответственности ни меня, ни @ECS, которого ты нещадно пингуешь. Скачай последний апдейт восьмой JRE (это, на секундочку, 8u411 — более, чем на 320 апдейтов новее, чем у тебя) и заставь лончер юзать её.
P. S. Это форум, а не мессенджер какой-то. Здесь есть кнопка «Изменить». Не надо постить миллиард сообщений по одному предложению в каждом.
-
4
-
1
-
-
Прямо библиотеку colors я бы менять не советовал, но можно завести свою:
local colors = { white = 0xffffff, black = 0x000000, cyan = 0x66dbff, -- ... }
P. S. В прошлом сообщении ошибся: градаций синего там пять, а не шесть.
-
1
-
-
colors для указывания цветов видеокарты не подходит (ну, если не юзать палитру). Там true color нужен, 24-битный:
gpu.setForeground(0xffffff) -- белый: 0xff красного, 0xff зелёного, 0xff синего gpu.setBackground(0x000000) -- чёрный
А так он пытается поставить цвет 0x00000f (colors.white — это вроде число 15). Градаций синих в цветах T3-видеокарты — 6: 0, 51, 102, 153, 204, 255. OpenComputers ищет ближайший цвет к 0x00000f из имеющихся и получает чистый чёрный (15 ближе к 0, чем к 51). И итого рисуется чёрным по чёрному.
-
1
-
-
Надо не компонент клавиатуры подключать, а библиотеку:
local keyboard = require("keyboard")
Эта такая извечная проблема: имя одно и то же, а вещи совершенно разные. Аристотель был бы недоволен. Нам, простым смертным, остаётся только смириться...
-
2
-
-
11 час назад, BenniShifer919 сказал:У него нету сильных недостатков перед OC
Я так понимаю, отсутствие персистентности компьютеров из CC сильным недостатком не является? Неограниченное потребление вычислительных ресурсов, из-за чего мод нельзя ставить на публичный сервер, — тоже? Так, первое, что на ум пришло.
9 часов назад, BenniShifer919 сказал:в CC это есть по стандарту всё
Да разве? Загляните на oc.cil.li и посмотрите на список встроенных в мод компонентов.
P. S. Автор, а вы вообще программировать пытались под какой-то из этих модов? Кажется, словно только готовые программы запускали.
-
1
-
-
Пинговать людей, когда их прямо ничего не касается, есть очень дурной тон. Прошу так больше никогда не делать.
В качестве исключения отвечу так: дискета бесполезна, давно устарела, еле работает, не имеет документации, и кто-то из разрабов мода вообще собирался всех их выкинуть за ненадобностью. Если это не останавливает, разбираться прошу самостоятельно.
-
2
-
-
5 минут назад, WheatComp сказал:@ECS Выдает ошибку:
Там банальная опечатка внутри ipairs: вместо tanksTable должен быть tankTable.
-
1
-
-
computer.pullSignal ждёт первого сигнала определённое время. То, что ей передана пятёрка, означает, что ждать будет не дольше 5 секунд, но если какое-то событие придёт раньше (что здесь и происходит: возможно, подключение компонентов), то выйдет раньше.
UPD. @ECS уже говорил про это в предыдущих сообщениях. Просьба внимательнее читать ответы.
В 21.05.2023 в 02:24, ECS сказал:Эта штука ждёт каких-либо сигналов в течение 3 секунд. Если сигнал получен - pullSignal вернёт информацию о нём досрочно. Если сигналов не было - pullSignal будет честно ждать 3 секунды, а затем вернет nil
А os.sleep так не заработает: синтаксис
function tbl.func() ... end
создаёт новую функцию и кладёт её в поле "func" таблицы tbl. В данном случае функция кладётся в поле "sleep" таблицы os. Но такой таблицы в биосах нет.
Либо нужно определить табличку эту:
local os = {} function os.sleep(timeout) --[[ сюда код функции ]]-- end
Либо вообще не пытаться класть функции в таблицы (что наиболее разумно):
local function sleep(timeout) checkArg(1, timeout, "number", "nil") local deadline = computer.uptime() + (timeout or 0) repeat computer.pullSignal(deadline - computer.uptime()) until computer.uptime() >= deadline end
Здесь ещё пропал event.pull, потому что event в биосах тоже отсутствует. (Да и в OpenOS event сначала нужно получить через require.) computer.pullSignal для наших целей достаточен.
-
3
-
-
2 часа назад, Oleshe сказал:извините я не мастер в этом чуде .-.
"поставить либы" - как? куда? консольную команду прописать?
скомпилировать - программу? как?
запустить на видосике - всм на нём? загрузить его туда? нипон
пустить какую-то из прог в репе на него - что такое репе? куда пустить?
проще будет сказать что программирование у меня это хобби, но я стараюсь
Я примерно так и предполагал. Софт выложен без доков, и я его не собирал (когда появился ice2, у меня процессор не умел в SSSE3). Инструкций по сборке тоже нет. Поэтому, если не быть знакомым с языком C и его... традиционными системами сборки, будет очень сложно. Если очень хочется, лучше просить помощи в ирке или дискорде, чтобы реал-таймовое взаимодействие было. Там есть люди (и не только я), которые в C достаточно разбираются для такого.
Лично рекомендую надешикодек (третья ссылка): если собирать на линуксе, всё довольно прямолинейно (описываю исключительно свой опыт).
-
1
-
-
1 час назад, Oleshe сказал:2-е, там файлы, как запустить "конвертер"? надо ли что-либо в OC или выдаст просто файл? библиотека в ОС или в системе?
Поставить либы, скомпилировать, запустить на видосике, получить закодированный файл, влить его в опенкомпы, пустить какую-то из прог в репе на него, получить видео.
FFmpeg, разумеется, не в опенкомпах. Его там вообще нету. Это ж самый известный набор софта для работы с видео/аудио, какие тут могут быть опенкомпы.
-
Можно, и вариантов целых три.
-
https://github.com/ChenThread/ice
160×50, может проигрывать звук через кассеты Computronics.
Енкодер написан на C, требует наличия либ ffmpeg с хедерами. -
https://github.com/ChenThread/ice2
160×50, должно быть лучше качество, может проигрывать звук через кассеты Computronics.
Енкодер написан на C с примененем векторных расширений SSSE3, требует наличия либ ffmpeg с хедерами. -
https://github.com/asiekierka/opencomputers-hires-video-prototype
До 320×200, брайль, без звука.
По словам автора, несмотря на более низкое разрешение, кодек ice2 гораздо качественнее.
Енкодер написан на Java, для сборки требует байндингов к ffmpeg.
-
2
-
https://github.com/ChenThread/ice
-
3 часа назад, DJHayC_RUS сказал:А на какую версию майна писали?
1.10.2
-
Его написал великий @Totoro специально для ивента. Вот ссылка: https://github.com/MoonlightOwl/Unreality
Плазмаган там разрушал только роботов, поэтому вне ивента вряд ли полезно будет.
-
1
-
-
17 часов назад, ECS сказал:В этом и заключается вопрос топикстартера: в чем смысл такой защиты, фича ради фичи? Если у дурака имеется доступ к eeprom, то не всё ли равно, вызывать eeprom.makeReadonly() или eeprom.makeReadonly(eeprom.getChecksum())?
Ну, в проге lua есть автоподстановка, поэтому случайно натабать makeReadonly() и тыкнуть энтер, не одумавшись вовремя, очень реально (похоже, но не с этим методом, косячил сам). А внутрь подставить вызов другого метода неосознанно несколько сложно. Поэтому некоторый смысл оно имеет.
-
1
-
-
18 часов назад, Anon сказал:Надеюсь, проект ещё жив, но на свежую OpenOS ставиться отказывается
[...]
Бага machine.lua. Пофикшено в 1.7.6.
2 часа назад, Anon сказал:Ругается на церт от Let's Encrypt. Проблема древних Java. Можно было бы и поновее юзать версию. Если проблема не в этом, то надо смотреть в хранилище корневых цертов и решать проблему там.
P. S. В общем и целом hpm и hel мы не обновляем, даже если там найдутся баги. Проект заброшен и доживает свои дни.
-
4
-
-
34 минуты назад, Bumer_32 сказал:Игооорь
после обновы OC система сломалась!
конкретно проблемы с символами браиля (или с double buffering)
у меня лично сломались кнопки и на иконках в местах с символами браиля тоже проблемы
Думаешь, он магическим своим влиянием шрифт тебе в OC заменил внезапно?
-
1 час назад, ProgramCrafter сказал:Я пытаюсь писать на всех языках в одном стиле.
Это уже несколько оффтоп, конечно, но я считаю это дурным начинанием: на каждом языке есть свои устоявшиеся стилевые конвенции. В Java везде писатьКакВерблюд, в C# методы, как в жаве, но с заглавной буквы, чтобы выпендриться, а на си и питоне snake_case. Для удобства других программистов их следует соблюдать. Ты уже читал код jpg-либы: ощущаемый диссонанс или даже дисфория — прямое следствие написания не как надо.
Особенно это я нахожу важным при написании библиотек (не наш случай, то есть): когда код пестрит то_такими, тоТакими, ТоСякими, товообщевоттакими вызовами и переменными (был проект на плюсах такой, со всеми вариантами, кроме разве тотального капса...), и читать неприятно, и писать тоже затруднительно, потому что нужно постоянно вспоминать и чинить регистр каждой конкретной библиотеки.
1 час назад, ProgramCrafter сказал:Вроде read отдаёт максимум данных, сколько может (+ в заданном размере буфера)?
Ну там буфер-то крохотный, порядка кибибайта всего. Причём сначала он исчерпает буфер кибибатным возвратом, следующий вызов отдаст пустую строку и только повторный read следующий кибибайт отдаст. Как минимум при пустой строке спать несколько лениво.
1 час назад, ProgramCrafter сказал:Для этого надо пиксель дробить на R,G,B составляющие. Поэтому пока затруднительно.
local r, g, b = (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff
Вроде не очень сложно.
Если в буферах хранить уже уменьшенные версии картинок (а полноразмерные всё равно не нужны, так что их даже не собирать и на лету ресайзить надо), то конечный буфер можно будет уменьшить до 16 килобайт (160×100). Чтобы не конкатить строки при сборке буфера, можно хранить таблицу из 2000 чисел, где каждое число хранит 8 пикселей по 8 бит: скорость доступа на изменение будет выше, чтение тоже не особо замедлится, и памяти буфер будет стабильно потреблять 32808 байт (которые OC зачтёт как 18227) всё время работы. (Без упаковки будет 256808 байт — для OC 142671. Если использовать вложенные таблицы, результат можно улучшить.)
-
10 часов назад, VincentVelasco сказал:Спасибо за разбор, буду исправлять.
Но насчёт последних трёх, я не понял.
Так как они все обновлены до актуальной версии.
@ProgramCrafterМожно заметить, что первая строчка у всех незагруженных плагинов одна и та же, и догадаться, что причину ошибки следует искать ниже. Так и поступим.
Проблема номер 5: UTitleAuth
Если посмотреть на стэктрейс, то можно заметить упоминания PluginClassLoader, JarFile и ZipFile. И сделать разумный вывод, что жарник плагина какой-то порченый.
Разумные действия: попробовать открыть файл в zip-архиваторе; перекачать плагин; сверить чексуммы; пересобрать из исходников.
Проблема номер 6: SCore
Здесь он пишет, что не может найти класс MysqlDataSource. Он был при компиляции (иначе б плагин не собрался), значит, этот класс поставляется как-то отдельно от плагина. Если ещё знать, что значит JDBC, то становится ясно, что в classpath отсутствует JDBC-драйвер для MySQL.
Разумные действия: скачать этот драйвер (нужно брать версию 5.x, потому что 8.x — это некий connector/j с другими классами, а используется не он) и доставить в libs; поменять СУБД; пересобрать плагин.
Проблема номер 7: ExecutableItems
Он, кажется, хочет класс из плагина SCore, который мы выше не смогли загрузить.
Разумные действия: решить проблему номер 6.
-
3
-
-
13 часа назад, ProgramCrafter сказал:Даунскейлинг примитивный: если картинку надо уменьшить, то из каждого квадрата 2x2 пикселя выбирается левый верхний.
Было ли билинейную интерполяцию сделать затруднительным? Значение каждого входного пикселя делить на четыре, прибавлять к выходному значению и после декодирования округлить. Элементарный алгоритм, причём в данном случае можно ещё существенно упростить: просуммировать значения каналов пикселей в блоке 2×2, поделить на 4 и округлить. А лучше обобщить алгоритм для уменьшения пикчи с произвольным масштабом.
Алсо:
- в коде смешан snake_case и camelCase (причём в луа обычно юзают второе, не вижу смысла отходить от этого)
- busy-loop в ожидании finishConnect: читать пункт 3 и не насиловать процессор
- неудовлетворительная обработка ошибок (см. выше): на той же строке 75 следует хотя бы в assert обернуть stream.read
- 127 строка пугает: можно было определить нужную степень двойки и затем иметь готовый и быстрый результат `((x - 1) << scale) + 1`
- каждый хендлер рисует пикчу, как вздумается: с точки зрения чистоты лучше бы все либы заставить каждый распаршенный блок пикселей отдавать в коллбэк, который бы был единым для всех форматов, выполнял интерполяцию и отдавал на буфер
- (костыли с жпг непередаваемы)
- спать один тик на каждый read звучит не очень здорово
- насколько я могу судить, никакая из либ не требует бэктрекинга, поэтому кэширование выглядит излишне
Дальше мне смотреть было лень.
-
В 25.07.2022 в 19:08, ProgramCrafter сказал:Поставляется в комплекте с OpenComputers на дискете IRC.
$ diff -U 0 irc.lua irc.1.lua --- irc.lua 1970-01-01 00:00:00.000000000 +0000 +++ irc.1.lua 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ --- A (very (very!)) simple IRC client. Reference: --- http://tools.ietf.org/html/rfc2812 - @@ -25 +22 @@ -local host = args[2] or "irc.esper.net:6667" +local host = args[2] or "irc.Esper.net:6667" @@ -374 +371 @@ - print("Welcome to OpenIRC!") + print("Welcome to UnionICE") @@ -455 +452 @@ - local channel = text.trim(line:sub(7)) + local channel = "#cc.ru" @@ -461 +458 @@ - line = "JOIN " .. channel + line = "JOIN " .. "#cc.ru"Ловко.
-
1
-
1
-
1
-
-
Напомню, что есть /dev/eeprom и /dev/eeprom-data. С тех пор, как эти файлы реализовали в OpenOS, надобность в утилите flash отпала совершенно.
# cat bios.lua > /dev/eeprom # echo > /dev/eeprom-data # cat /dev/eeprom > bios.lua
-
4
-
1
-
-
Здесь заявляется, что пароли хэшируются. Хотя это определённо прогресс по сравнению с плейнтекстом, мне кажется, готовую хэш-функцию в силу религиозных убеждений ты юзать побоялся и сделал свою.Можешь ли тогда выложить не избитую минификатором используемую тобой функцию хэширования?Кроме того, солишь ли ты пароль перед хэшированием?

Интеграция с OpenComputers HBM Nuclear Tech (NtmSpace)
в Инфраструктура
Опубликовано:
На всякий случай, если не хочется ставить программу, то в OpenOS можно воспользоваться командной components:
Выводит все методы всех компонентов с документацией. Палка и less в команде, чтобы можно было скроллить.