logic
-
Публикации
287 -
Зарегистрирован
-
Посещение
-
Победитель дней
13
Сообщения, опубликованные пользователем logic
-
-
12 часа назад, cyber01 сказал:А что такое brainfunc?
я немогу написать настоящия найвания языка так как оно содержит мат(вполне характеризующий сам язык кстате)
-
15 минут назад, Asior сказал:Что, где, как? примеры, инструкции, описания? Как использовать, зачем оно ... опять реклама. И ни одного слова даже о том, как она именуется
что? всмысле неодного слова, я написал api чуть чуть, а названия ей guix
-
тут был "brainfunc" bios...
в общем я решил очисть раздел "операционные системы" от мусора. начав с себя
-
2 минуты назад, eu_tomat сказал:@rootmaster А какое API этой библиотеки? Есть примеры использования?
скоро будут
-
начнем с того что данная библиотека зависима от моего мода для openOS и поставляется с ним в комплекте:
что поваляет делать данная библиотека:
- создавать многосценные приложения
- создавать многопоточные приложения средствами библиотеки
- библиотека позваляет создавать таймеры слышатели и потоки операясь на главный объект gui или на конкретную сцену билиотека сама закроет все таймеры слушатели и потоки при выходе, таймеры слушатели и потоки созданные на конкретной сцене будут работать только тогда когда она выбранна
- удалять элементы и/или сцены
- перерисовка ведется автоматически или же самостоятельно, можно перересовать сцену целеком(gui.redraw()) а можно конкретный элемент(obj.draw()) пересовываться элемент будет только если выбрана его сцена
- открывать контекстное меню
- кастомное разрешения вплоть до отдельных сцен
оптимизация под слабое железо:
- я настоятельно рекомендую использовать функцию для выбора цвета в зависимости от выдеокарты (gui.selectColor(main, level2(опционально), level1(опционально(можно использовать boolean))))
- библиотка может работать даже на экране первого уровня(да даже на роботе) но для этого придеться использовать демон курсора которого пока что не существует но я его сделаю он должен сообщить библиотеки о своей работе чтобы она позволила открыть программу на мониторе первого уровня
поддерживаемые элементы:
- button, имеет 3 режима, кнопка, переключатель, автоотпускаемый переключатель(кнопка реагирующяя на отжатия)
- label, думаю тут все понятно
- seekBar, может быть не кликабельный, поддерживает прокрутку колесиком мыши
- list, может использоваться для отображения строк, позваляет узнать о нажатии строки, обладает отключаемым автоскролом, автоперересовку тоже можно отключить, по умалчанию сам удаляет элементы когда их много чтобы люди с нерабочим колесиком могли увидеть все пункты
в планах:
- тягаемые окошки(сделано)
api:
- для создания объекта gui необходимо вызвать метод create у библиотеки
- все обрашения в библиотеки через одинарную точку
- вызвать контекстного мен., gui.context(x, y, tbl) таблица может содержать строки или таблицы такого плана {str, on} если on, false то тогда данный пункт нельзя будет выбрать, вункция вернет значения, str, num или все будет nil если нечего не выбрано
- создания сцены gui.createScene(backgroundColor, sizeX, sizeY)
- получения api видеокарты gui.gpu
- получения выжных значений, gui.screen, gui.keyboard
- получения настроик видеокарты, gui.depth, gui.userX, gui.userY, gui.maxX, gui.maxY
- отключения звукового соправождения gui.soundOn = false
- создания теймеров слушателей потоков createTimer(time, callback) createListen(eventName or nil(all), callback) createThread(func, ...) данные методы необходимо вызывать от имени обекта gui(работа в всем приложении) или же от имени сцены(работа только на ней)
- создания объектов на сцене, scene.createButton(x, y, sizeX, sizeY, text, callback, mode, state) createLabel(x, y, sizeX, sizeY, text) createSeekbar(posX, posY, size, text, callback, mode, min, max, value, touch, onlyIntegers) createList(posX, posY, sizeX, sizeY, callback)
- настройки объекта button, backColor, foreColor, invertBackColor, invertForeColor
- настройки объекта seekBar, backColor, foreColor, scrollCount, scrollWheel(можно ли колесиком крутить(запрет можно использовать например если есть желания переопределить это код(так сделано в list)))
- настройки объекта list, backColor, foreColor, autoScroll, autoRedraw(выключите если будет добавлять много элементов за раз а потом лутще включить), autoRemove, maxStrsCount, для изменения настроик seekBar обратитесь к нему как к list.seekBar методы addStr, clear
- inputbox создаеться как createInputbox(posX, posY, sizeX, sizeY, text, callback) у него есть настройки viewData(показываеть последний ввод(изначально true))
- drawer создаеться createDrawer(posX, posY, drawer) где drawer это функция вызываемыя каждую перересовку отрисовщика в функцию приходит 3 аргумента(gpu(proxy видеокарты), posX, posY(тут нада начать отрисовку размер отрисовываемого изображения выберает сам отрисовши(делайте как хотите)))
- и наконецто окошки, их можно таскать(если записать true в userMove) они могут использоваться для груперования элементов создания маленькиз минюшек, как создать окно? вот так createWindow(posX, posY, sizeX, sizeY) как настроить его? вот так: color(вебарает цвет окна изначально nil(нивидимый)) и window.attachObj(позиция иск на окне, тоже но y, и обект который на окно нада поместить)
- для перемешения обекстов используйте метод move(работает и с окошками и перетягивает все элементы на них) метод не обновляет картинку по этому вызовите gui.redraw сомастоятельно(для того чтоб снизит нагрузка кода много действий)
- если вы хотите временно отключить обект то нада setActive(true/false) не обновляет сцену(для того чтоб снизит нагрузка кода много действий) так что вызовите gui.redraw самастоятельно, setActive прячет обект запрешяя его отрисовку и недает ему реагировать на касания
примеры кода:
- https://drive.google.com/file/d/19mpdK9sxy4Yf9AxzdPpy8YkXan7AZU8g/view?usp=sharing (плохой пример, делал чисто для отладки и только для себя, на второй сцене должна midi играть, но для этого ее нада разместить по обсалютному пути пути /mnt/ded/as16.mid(у мена миди на диске ded лежат а у вас пару будет в /usr/midi там midi1.mid и midi2.mid они в комплекте с модом(моим для openOS) идут и вы можете путь на них в примере поменять чтоб все работало как у меня))
-
18 минут назад, ECS сказал:С/Assembly все кто с Windows играют знают, без этого не как
как не как а удаленный доступ к фски и lua робота лутще так и можно с планшета проявлять, такой вариант больше нравиться
-
В 04.04.2022 в 00:37, Krutoy сказал:Моя версия проще. Лешего, не нужно учить луа. Скрафтил и вперёд.
lua все кто с этим модом играют знают, без этого не как
-
хочу видеть результат с которым завершилась программа но не знаю как его получит, подскажите пожалуйста
-
В 17.03.2022 в 08:05, ProgramCrafter сказал:И библиотека bigModem, от которой всё это зависит (она занимается, видимо, пересылкой больших сообщений и ретрансляцией сообщения по всем компьютерам в сети, как Zn):
local component = require("component") local event = require("event") local serialization = require("serialization") local su = require("superUtiles") local computer = require("computer") ------------------------------------------ ------------------------------------------ local lib = {} lib.devices = {} function lib.create(address, maxPacketSize, dupProtectTimeout, dupProtectUpdateTimeout) local obj = {} obj.address = address obj.maxPacketSize = maxPacketSize or 7168 obj.proxy = component.proxy(obj.address) obj.dupProtectTimeout = dupProtectTimeout or 8 obj.dupProtectUpdateTimeout = dupProtectUpdateTimeout or 1 obj.objCode = su.generateRandomID() obj.listens = {} obj.codes = {} obj.timeouts = {} local function addcode(code) if su.inTable(obj.codes, code) then return false else table.insert(obj.codes, code) table.insert(obj.timeouts, computer.uptime()) return true end end table.insert(obj.listens, event.timer(obj.dupProtectUpdateTimeout, function() for i, code in pairs(obj.codes) do local timeout = obj.timeouts[i] if computer.uptime() - timeout > obj.dupProtectTimeout then table.remove(obj.codes, i) table.remove(obj.timeouts, i) end end end, math.huge)) function obj.send(targetAddress, port, ...) local proxy = obj.proxy local sendData = serialization.serialize({...}) local parts = su.toParts(sendData, obj.maxPacketSize) local randomCode = su.generateRandomID() for i, part in ipairs(parts) do local endflag = i == #parts local unicallCode = su.generateRandomID() addcode(unicallCode) if component.type(obj.address) == "tunnel" then proxy.send(unicallCode, endflag, randomCode, i, part) else if targetAddress == true then proxy.broadcast(port, unicallCode, endflag, randomCode, i, part) else proxy.send(targetAddress, port, unicallCode, endflag, randomCode, i, part) end end end end function obj.broadcast(port, ...) obj.send(true, port, ...) end local buffer = {} table.insert(obj.listens, event.listen("modem_message", function(_, uuid, sender, port, dist, unicallCode, endflag, randomCode, index, dat) if uuid ~= obj.address or not addcode(unicallCode) then return end if not buffer[randomCode] then buffer[randomCode] = {} end buffer[randomCode][index] = dat if endflag then local sendData = serialization.unserialize(table.concat(buffer[randomCode])) buffer[randomCode] = nil event.push("big_message", uuid, sender, port, dist, obj.objCode, su.unpack(sendData)) end end)) function obj.kill() for i = 1, #obj.listens do event.cancel(obj.listens[i]) end table.remove(lib.devices, obj.indexInTable) end table.insert(lib.devices, obj) obj.indexInTable = #lib.devices return obj end return lib
если у вас чтото не работает не значит что не работает у всех, я только так сеть и делаю, нет буквально только через networks и она точно работает, покажите пример кода который не работает, и нет bigModem не ретранслирует сообщения это задача лежит на networks, bigModem защищает от повтаряюшихся сообщения разбавит пакет и позволяет передать таблицу(это функционал(не разбивка а только зашита от повторения из за циклов в сетях) продублирован в networks так как когда я убрал это дублирования функционала чтото стала работает не так(я уже не помню что))
-
1
-
-
В 06.03.2022 в 16:30, Krutoy сказал:Роботы OC очень сложны в сборке и программировании.
С этим биосом робота можно программировать через переименование на наковальне.
Ссылка на английский Readme с большим количеством инфы.
Установка
Соберите робота минимальной конфигурации
- Корпус
- CPU
- RAM
(Кстати, в моем модпаке Enigmatica 2: Expert - Extended этот чип будет крафтиться, так что игрокам даже не нужен стационарный компьютер что бы пользоваться чипом.)
-
Скачайте программу из интернета:
wget https://gist.githubusercontent.com/Krutoy242/db63637d605c2c247bc95e939c7f7ddd/raw/lostuser.min.lua
-
Запишите прогу на чип:
flash -q lostuser.min.lua LostUser -
Вставьте чип в робота
Использование
Робот программируется путем его переименования. Можно использовать наковальню
или вот такой инструмент из мода
Integrated Dynamics.
Назовите своего Робота \3, поставьте на землю, включите и посмотрите, как он будет щелкать по блоку впереди.
Для тех кто заинтересовался, о синтаксисе программирования робота через имя можно посмотреть в англ. Readme.
Примеры
IC2 растения
Мы будем использовать робота для разведения культур Industrial Craft 2.
Для этого нужно посадить семена в шахматном порядке, а между ними поставить поперечные палочки. Робот должен бегать по грядке и нажимать правой кнопкой мыши с инструментом, чтобы собирать сорняки.
Имя такого робота будет \0ZZ
Видео во вложении.
Ferrous-Juniper ферма
А вот пример более сложной программы
?(y0)'E9nS18''^9/0s18|0'ZЭта программа:
- Выкидывает предметы из слотов 9-16 вниз
- Засасывает предметы в слоты 1-8 сверху
- Перемещается зигзагообразно, ломает блок под собой и ставит новый
Давайте ее разберем.
-
С начала идет условный оператор ?. Он принимает 3 аргумента:
1) Условие (y0),
2) Блок then 'E9nS18'
3) Блок else '^9/0s18|0' - Условие это программа y0, где y - сокращение команды inventory_controller.getInventorySize. Некоторые сокращения записаны в исходном коде.
- Блок then выполняет две программы. E9n - слить слоты с 9 по n вниз. S18 - набрать предметы сверху.
- Блок else выделяет 9 слот ^9, ломает блок под собой /0, выбирает первый не-пустой слот s18, устанавливает блок вниз |0.
- В самом конце проги стоит буква Z, которая означает Зигзагообразное движение.
Фидбэк
Если кому то понравилась идея, пишите как можно улучшить.
Особенно интересно, какие операторы стоит добавить в заранее записанные сокращения, а в каких сокращениях лучше сменить букву.
Главный принцип - возможность писать сложные программы используя всего несколько символов.
главный вопрос, а зачем? я в своих роботов либо ставлю монитор, либо подключаю к сети дома, регистрирую на нем удаленную файловую системму(чаще всего и то и другое)(мои софтом(netoworks, distfs2)) и открываю доступ в его lua по сети, и вооля все роботом можно управлять удаленно на диск записал /start.lua(запускаеться моим модом для openOS) и как тока включил он пойдет копать
-
В 13.06.2015 в 23:06, Sharplook сказал:Pig's Airline
Потому что джетпаки - для слабаков
Описание:
Программа даст вам возможность использовать свинью
как воздушное средство передвижения.
Чтобы управлять таким транспортом, вам потребуется планшет, дрон, свинья и сиденье для неё.
Минимальные требования к комплектации планшета и дрона:
Планшет:
Дрон:
(Беспроводная сетевая плата должна присутствовать и в планшете, и в дроне)
Использование:
Для начала вы должны установить на планшет программу:
Далее вы должны установить программу для дрона на eeprom:
(Для этого включите компьютер, вытащите из него eeprom с lua bios, вставьте чистый eeprom. Загрузите на компьютер программу для дрона и пропишите команду:
flash -q <название программы> <метка eeprom>
Так она будет сохранена на чипе.
Если вы еще не собрали дрона, то при его сборке засуньте eeprom с программой в сборщик. Если вы дрона уже собрали, то добавьте его в верстаке к дрону. Не забудьте вставить чип с lua bios обратно в компьютер.)
В обеих программах в коде вы должны изменить значение переменной port на другое. Оно должно быть одинаковым в планшете и в дроне.
Запустите программу на планшете и запустите дрона. Управлять с помощью клавиатуры, используя планшет:
H - показать/скрыть помощь
W/S - перемещение по оси Z
A/D - перемещение по оси X
E/R - перемещение по оси Y (вверх/вниз)
C - поймать свинку
(Дрон должен быть возле нее)
Z - отпустить свинку
(Вы не сможете этого сделать в полете, т.к. она должна быть возле дрона)
P - перемещение по заданным координатам (По X и Z)
(Пока дрон не умеет спускаться по оси Y самостоятельно, потому что если свинка заденет блок, то ей конец
. Поэтому после полета вам придется спускаться с помощью E и R. Сначала вы должны будете указать координаты дрона по осям X и Z и координаты точки, к которой вы собираетесь отправится. Далее вы указываете кол-во блоков, на которые дрон поднимется вверх, чтобы между точками с шансом 99% не было препятствий. Чтобы остановить дрона, надо перезапустить его вручную)
V - выключить дрона
U - включить дрона
I - выход из программы на планшете
(После перезапуска программы на планшете дрон не отключится и вы сможете продолжить им управлять)
Вы находите свинью, надеваете на нее седло, тащите к дрону и с помощью кнопки C ловите ее. Далее вы на нее садитесь и отправляетесь в далекое путешествие (далекое, значит не дольше 30 минут, т.к. дрон и планшет могут разрядиться)
P.S: Это моя почти первая программа. Потихоньку я буду ее обновлять, добавлять новые функции и исправлять ошибки.
я думал сделать(и сделаю(не люблю использовать чужой софт)) это но оказалось что это уже кто то сделал))))
-
1 час назад, eu_tomat сказал:Странность мерок — штука относительная. Тебе кажется странным желание вписаться в стандартный размер EEPROM. А другим кажется странным называть этот BIOS лучшим при том, что его невозможно использовать на большинстве серверов.
Когда читатель видит в названии слово "лучший", он ожидает, что твоя программа, как минимум, работает на всех серверах и не требует общения с администраторами. По большому-то счёту именно это слово и порождает все претензии к тебе. Тут, как говорится: назвался груздем — полезай в кузов. А назывался лучшим — выслушивай критику.
А саморазвитие — штука полезная. Мы тут в основном ради этого и собрались на форуме. Кстати, мне кажется, у тебя есть прогресс. Я когда первый раз читал эту тему, испытал дискомфорт, спотыкаясь на ошибках. Но сейчас вспомнил твои предыдущие темы и понял, что это описание лучше предыдущих. Так что, не смотря на мои претензии, за старание я поставлю лайк.
спасибо, рад что это хоть кому то понравилась а заголовок темы я поменял
-
11 час назад, ECS сказал:Разве это несет какую-то пользу для конечного потребителя? Кроме спортивного интереса, в чем профит сбора кучи фич в одном скрипте, который не влезает в дефолтные лимиты еепрома?
в удобстве, хоть фичь и по вашим странным меркам "много" они все необходимы и очень выжны да и вообще это саморазвития
-
3 часа назад, eu_tomat сказал:Почему же бред? Это довольно логично. Сейчас это BIOS-переросток по меркам OpenComputers. Запуск приложений — это типичная задача для операционной системы. На полноценную операционную систему это ПО, конечно, не тянет, но всегда возможны промежуточные варианты вроде каких-то узкоспециализированных операционок с минимальной фунциональностью. К слову, широкая функциональность не всегда является благом. Зачастую больший приоритет имеют скорость и компактность. Но чаще всего применяются компромиссные, промежуточные варианты.
Расскажу об одном успешном промежуточном варианте. Помню, @Doob любил писать копалки для EEPROM. Но по мере расширения функционала рос и объём кода. В итоге код, даже сжатый, перестал вмещаться в EEPROM, и @Doob был вынужден разместить код на жёстком диске. Это решение выгодно отличается от обычных копалок тем, что не требует установленной операционной системы. Благодаря этому включение робота происходит быстрее, а требования к размеру ОЗУ заметно снижаются.
Рекомендую рассмотреть похожий вариант. Конечно, это уже будет называться не BIOS, а как-то иначе. Но суть останется прежней. Или работа без жёсткого диска является для тебя принципиально важной?
да евляеться важной, это биос а не ос, он не предаставляет никаких api все функции в нем локальны, так что это именно bios
-
9 минут назад, ECS сказал:Хех, в публичные сборки даже опенкомпы мало кто ставит, а ты про правку конфига и подозрительные для среднего админа операции с лимитами. Однако по функционалу твой продукт выглядит вполне вкусно. Почему бы не перевести его из гипертрофированного биоса в самостоятельную ОС? И кодить станет проще, и простор для творчества шире, и костылей в виде минификации/конфигов не потребуется, и конкуренция какая-никакая имеется
На текущий момент topBiosV7 би лайк:
из биоса в ОС? бред каройто, спосибо что похвалил, я кста до сих пор думаю как сжать/придумать кастыль
-
1
-
-
1 минуту назад, ECS сказал:Это гуишный биос для гуишной оськи, я не вижу смысла в фиче запуска без GPU. Изначально он был приложением к майноси поверх опеноси, и поддерживал все тиры оборудования, а затем майноська ушла в стенделон, и нужда в первых двух тирах отпала. Ссылка была оставлена на всякий пожарный
Оригинал можно найти в истории версий, но не думаю, что он кому-то понадобится:
https://github.com/IgorTimofeev/MineOS/blob/349085db4b627529bcbc48609f536656e52b31e9/EFI/Full.lua
отпала и отпала а зачем ее было выпиливать?
-
Только что, eu_tomat сказал:Теперь понял. Этот BIOS лучший по твоим личным критериям. Я-то пытался оценивать с точки зрения игры на публичных серверах.
с администрацияй можно договорить, это биос можно легло сдать до 8 кб(даже меньше но7) так как он находиться в фазе активной разработки стоит увеличить обьем чипа до 16/24 кб об этом можно договориться с администрацией показав функционал
-
Только что, eu_tomat сказал:От чего ж невнимательно? Всё видел:
Сжать пока не удалось. Значит, и BIOS пока не лучший. Но заголовок вводит читателя в заблуждение.
по моим критериям он лутщий, по функционалу ему равных навных нет, и нет биос не обязан не куда помешаться, для этого и создан конфиг мода чтобы играть в свое удовольствия
-
1
-
-
1 минуту назад, eu_tomat сказал:А разве BIOS, претендующий на звание лучшего, не обязан умещаться в стандартные 4096 байт?
Главный вопрос: как убедить администраторов серверов увеличить объём EEPROM?
ты наверное не внимательно читал пока ужал но 4 кб
-
1
-
-
-
продолжаю чистить раздел "операционные системы" от мусора. начав с себя
-
2
-
1
-
-
В 15.03.2022 в 19:53, Asior сказал:Как работать с ней? Опции, настройки, документация? Скрины, принципы работы, настройка? Ничего не понятно ...
networks библиотека сетей, distfs2 библиотека дистанционной файловой системмы нада сам разберись все работает без нариканий
-
1
-
-
В 27.10.2015 в 13:01, ECS сказал:
Простая программа, дающая возможность наглядно управлять файлами, которые будут поставлены в очередь автозагрузки при включении компьютера.
Команда для скачивания:
pastebin run Tg2YLrcc
Пример выполнения скриптов:
Структура файла autorun.lua:
/autorun.lua? вы серьезно? он же будет запускаться всеми компами к которым будет подключен диск, толь дело /start.lua в моем моде для openOS запускаться будет только системмой на которой лежит и даже если автозагрузка отключена запушен будет только после полной инициализации систмеммы но до запуска shell
-
2
-
-
мой мод для openOS(а вернее библиотека networks)
позволяет объединять компьютеры в одну локальную или не очень сеть
функционал:
- пересылка таблиц и под таблиц(для работы таблиц в event нужен мой мод для openOS)
- отправка пакетов с любым количеством элементов и размерностью
- ретрансляция между устройствами(можно поставить серверную стойку с 8 туннельных карт а в публичных местах поставить компы с туннельными картами и модемом к которому уже будут подключаться конечные пользователи) но следует помнить что избыточное количества ретрансляторов приводит к заторможенности сити
distfs2:
отдельная библиотека позволяющая удобно хостить файловые системы/папки и подключаться к ним
тема мода для openOS:
-
1



удалите пожалуйста :) x3
в Корзина
Опубликовано:
лол, этот язык не имееет доступа к api компов