swg2you
-
Публикации
219 -
Зарегистрирован
-
Посещение
-
Победитель дней
20
Сообщения, опубликованные пользователем swg2you
-
-
Какие опертаоры есть в этом моде? Мне нужны только названия, желательно все
Отличия: http://ocdoc.cil.li/api:non-standard-lua-libs
Языка Lua: http://www.lua.org/manual/5.2/manual.html
В моде: http://ocdoc.cil.li/
-
Меня смущает название темы. "Система визуального программирования" это немного другая штука. "Редактор форм" - больше подходит
-
3
-
-
Зач проверять, если все равно else условия нет, а результ работы уже пойдет неправильно?
Ага, я уже нашел, но пусть лучше записывает на первую попавшуюся.
Все там есть ) Это фрагмент функции же. Перебираем пока файл не откроется, как открылся - обрабатываем и выходим по return
Компоненты сортируются рандомно. И если у тебя в компьютере установлен только один жесткий диск, то В 50% случаев ты будешь попадать на /tmp файловую систему в 64 килобайта, и удивляться, почему не хватило места для записи.
Опять же это предположение, я не исследовал файловые системы роботов. И не знаю есть ли там temp fs
-
Насколько я понял, в библиотеке GUI подразумевается только динамическое создание форм внутри кода программы. Без возможности подгрузки/сохранения файла параметров формы?
Если это так, то было бы логичным добавить в библиотеку что-то вроде loadForm/SaveForm, чтобы иметь возможность статические параметры формы (цвета/размеры/флаги) хранить в отдельном файле и подгружать при необходимости. А в программе пользователя оставить только логику формы.
-
Я написал, что надо поменять на загрузочную bios.
Я хотел сделать универсальный загрузчик.
Ок, но я в api не нашел, как происходит выбор диска(да и писалось для Артема, ему для робота, значит только 1 диск будет)
О, в стандартном bios если функция поиска диска, на котором есть init.lua, можно оттуда почерпнуть)
Поменять eeprom - как вариант решения, вполне хорош.
Искать нужно перебирая все файловые системы.
Фрагмент кода bibi
... for addr in component.list("filesystem") do -- для каждого компонента filesystem local fs=component.proxy(addr) -- получаем прокси local h=fs.open(f) -- пробуем открыть файл if h then --если открылся --работаем ... fs.close(h) return s,f --и выходим end end ..."только 1 диск будет" - Не думаю. Там еще, как минимум, файловая система временного диска должна присутствовать. Поправьте меня если это не так.
-
Проект параметров формы сохраняется в отдельный файл?
Библиотека умеет подгружать этот файл?
-
Не проще взять код luabios и переделать. При включении проверять, есть ли нужные файлы, если их нет то качать, а потом грузиться с них.
Хорошее и правильное решение.
-
Поскольку мы (особенно я и @NEO
), как настоящие граммар-наци в программировании (назовем это явление "кодер-наци"), скрестили зубочистки, скатываясь в оффтопик в разных темах - предлагаю перенести эти вялотекущие холливарчики сюда, учинить здесь кровавую расправу и окончательно решить чем отличается теплое от мягкого, и чьей мордочкой нужно тыкать в лужу.
История вопроса:
Вначале была тема CC bios-net для централизованного управления сетью контроллеров/дронов/роботов/компьютеров, в которой на фрагмент моего поста:Дополнительные примеры: 1. broadcast(7, 'bebebe') 2. broadcast(7, 'bebebe()') ... 1,2 покажут обработку ошибок на стадии компиляции и выполнения;
было получено утверждение:
Lua интерпретируемый язык.
И хотя, сам факт столь очевидного высказывания у меня вызвал удивление, я поспешил с ним согласиться целиком и полностью, написав в ответ:
true~=nil -- в смысле - очевидная истина, как дважды два - четыре. (false~=nil - тоже истина, но менее очевидная)
Насколько я понимаю, NEO увидев слово "компиляция" в моем посте, поспешил уличить другого в "невежестве" и, блеснув "знаниями", немножко самоутвердиться указав простому смертному на "ошибку".
Остановлюсь на этом моменте, чтобы прояснить термины.Тезисно:
1. Трансляция из языка высокого уровня в язык более низкого уровня называется компиляцией.2. Вызов f=load('lua code',, 't',) компилирует (транслирует) исходный луа-код в байт-код
3. Вызов pcall(f, ...) запускает выполнение (интерпретацию) байт-кода
4. Языки, интерпретация (выполнение) которых происходит в специальной программе (интерпретаторе) называются интерпретируемыми языками.
5. Языки, которые интерпретируются аппаратным устройством (процессором) называются компилируемыми языками.
6. Луа - интерпретируемый язык.
Первый фрагмент текста означает именно то, что там написано: "(примеры) 1,2 покажут обработку ошибок на стадии компиляции и выполнения;" т.е. load() и pcall() соответственно.
Каким боком в фрагменте можно узреть утверждение того что "луа компилируемый язык" мне непонятно.
Продолжение истории:
Ололоканье продолжилось в другой теме: bibi или удобство разработки eeprom-кода и операционных систем, в которой есть фрагмент:... Ошибки компиляции нашего кода будут выглядеть так: ... Ошибки выполнения так: ...
Здесь уже другой пионер решил повторить опыт первопроходца и выдал:
Lua - интерпретируемый язык, компиляции там нет. В твоём случае это ошибка синтаксиса. Тех кто называет Lua компилируемым языком нужно сжигать на костре.
На что наш мэтр снисходительно, заметил:
Видимо человек так себе это представляет, хотя и не правильно.
В итоге оба пионера были посланы учиться, с подкреплением посыла цитатами и выдержками из первоисточников.
К моему сожалению посыл привел к обратному результату. Главный пионер, вместо того чтобы успокоиться и заняться самообразованием, начал обиженно, сбивчиво но при этом высокомерно кому-то что-то доказывать.Обижать людей (даже заносчивых) - нехорошо. Поэтому я принес свои извинения за грубость и понадеялся на исчерпание конфликта. Видно мои извинения были восприняты как слабость, потому что, как оказалось в последствии, конфликт не исчерпался и, беспокоя модераторов, волнительно брызжет оффтопиком в разных темах.
Предлагаю:
- Читать вышеуказанные тезисы, до просветления и последующего приобщения к вере в bibi.
или
- Опровергать их, учинив в этой теме веселый холиварчик с крестовыми походами и кострами.
или
- Быть мимопрокодящим бегемотом.
-
2
-
-
Исправил недочеты, должно работать.
Не будет. Даже беглый взгляд видит кучу ошибок.
Главный недочет в логике работы:
1. загрузил код из сети
2. сохранил его в файл (куда? на какую файловую систему? в тепм? на ридонли дискетку?)
3. а дальше что? твой код закончился и стоп-компьютер? а после рестарта опять грузит из сети?
И вообще, что значит "должно работать"? Проверять кто за тебя будет? Халтурщик

Заюзай bibi сохрани свой код как boot.lua и тестируй.
-
Нет, но через load можно будет загрузить код скомпилированный из C, но тут я подумал: а почему его так боятся? Он вроде должен быть загружен с использование указанной среды или песочницы по умолчанию)
Песочница у луа довольно дырявая ) но несмотря на это я не думаю, что можно сильно навредить изнутри такой матрешки.
-
Не было обмана, я не знал и не тестировал) А что можно использовать вместо io?
http://ocdoc.cil.li/component:filesystem
Не апи, который добавляется позже, операционной системой, а именно вызовы методов компонента.
Пример работы можешь в биби глянуть. Он использует гпу и файловую систему для загрузки файла.
-
1
-
-
Идея появилась в разговоре с Артемом)
Суть: программа для eeprom, которая загружает какие-то файлы(ему надо было OpenOS) с пасты.
Эм-м. io в eeprom не существует же кажись?!
и
- local i=component.internet
тоже не должно работатьэто точно из eeprom запускается?-
1
-
-
Не надо тьфу на нас ) Просто вместо того, чтобы пилить облака да тучки, реализовали бы базовые протоколы вначале.Тьфу на Вас. Ленивые Вы все тут. Вам бы лишь бы все готовое использовать

Для Вас надо команды типа (идентичный синтаксис): робот ехай, робот ломай блок или компьютер отправь сообщение плиз, компьютер посчитай 2+2

Любая программа должна быть рутинной, а не состоящая из 3 строк.
И если Вы не разбираетесь в той или иной области, то не стоит считать что это рутинная работа и это невозможно сделать.
P.S. Честное слово друзья, за ту неделю что тут после своего возвращения я столько бреда перечитал, что аж начинаешь думать, а нужно было ли вообще возвращаться.
Тот же телнет, фтп или вообще SSH. Чтобы можно было на линупсовом сервере работать через цомпутеркрафт. А то все сразу мегапроекты берутся пилить, и быстро стухают.
Утилит для опенос тоже нехватеат очень. Обычных консольных, и чтоб пайпы умели. Элементарный more и тот кривокосячный.
-
1
-
-
Эта опция запрещает/разрешает загрузку скомпилированного байт-кода через load(), каким боком сюда затесалось слово из буквы С я не в курсе )Эта опция не особо охотно делает заказанное.
Вы считаете, что интерпретатор даст доступ байт-коду к функциям С?
-
Палец подымается, и медленно ползет по тексту файла OpenComputers.cfg в поисках секции lua{}, найдя её, тыкает в первый параметр:А теперь ткни пальцем в строчку конфига, где это показывается. И в любом случае этого не поставят, ибо зачем?
lua { # Whether to allow loading precompiled bytecode via Lua's `load` # function, or related functions (`loadfile`, `dofile`). Enable this # only if you absolutely trust all users on your server and all Lua # code you run. This can be a MASSIVE SECURITY RISK, since precompiled # code can easily be used for exploits, running arbitrary code on the # real server! I cannot stress this enough: only enable this is you # know what you're doing. allowBytecode=false2 NEO: Слово "precompiled" в первой строке комментария сможешь интерпретировать?
-
Значит все это сводиться к тому чтобы ссылки хранить в локальной сети (компьютерах), а на них будет некая база (из таблиц) в которой будет:
id->название программы->ссылка на нее->если надо пароль.
Ну это так приблизительная схема, конечно можно замудреннее, но я так показал пример.{{пастбин бЛаБлаБла, тег1, тег2, ..., тегN}...} + нечеткий поиск-фильтр по тегам = рульная база софта
-
Я вот про это и подумал, то есть ничего еще подобного не делали? А где почитать про спецификацию lua-bytecode?
Спецификация байт-кода - вопрос конкретной реализации.
Гугл выдает кучу тем по декомпиляции, в т.ч. и готовых (работоспособных ли?) утилит.
Тривиально, задача сводится к трансляции байт-кода в эквивалентный луа-код, который, в свою очередь, сможет компилироваться с помощью родной load() в исходный байт-код. Думаю смотреть исходники луа машины, в частности функции лоад - самый верный путь. Именно она транслирует луа- в байт-, и именно её необходимо реверснуть.
-
А из результата string.dump никак не получить объект?
А толку? Ну получишь ты строку с байт-кодом функции, но она годится только для изучения. Выполнить её не удастся, поскольку в конфиге мода, по умолчанию, отключена загрузка байт-кода.
Её легко включить, но разработчики грозят гипотетическими проблемами с безопасностью. Теоретически, джава-луа машину можно ковырнуть и заставить выполнить любой код на стороне сервера. Но практически, флагом "безопасности", имхо, машут сторонники опенсорса, поскольку возможность запуска байт-кода открывает возможность проприетарщины, ну и много других интересных фишечек.
Хотя никто не мешает заняться реверсом и написать декомпилятор из байт-кода обратно в луа ) тоже интересная задача.
-
Облака (cloud)?
Типа дропбокса, драйва и т.д.
Облака это всего лишь морда для какого-либо протокола. Начинать полюбэ нужно с него. Или забить, и заюзать существующие. Например пастбин )
-
Нечего программировать? У меня есть идейка для тебя.
Такое файловое хранилище, что бы в нем каждый с любого компа мог оставить файлы, а потом с другого места их забрать. Еще логин и пароль будет. А называться должно как то легко, невесомо... Например, "Воздушное хранилище", хотя наверняка можно придумать лучше название.
FTP?
-
Велосипедист
У нас здесь клуб велосипедистов )
Решил сделать TeamViewer на базе твоей программы, а фигу. Модем может передать максимум 8 КБ, а картинка весит 25 КБ. Вот согласен с Тоторо.
Передавать скриншотами - моветон.
Заключай GPU-шные ф-и вывода в конверт и, при их вызове, передавай их на удаленный хост, а от хоста передавай события клавиатуры мыши и пуль их в очередь событий.
Вот и весь тимвьювер.
-
2
-
-
Только не байт-код. Байт-код в компилируемых языках, а у нас луа — интерпретируемый. (Хотя компилировался-бы, через LuaJIT)
Опять 25 )
load() на выходе дает скомпилированный чанк в форме байт-кода, а уже байт-код интерпретируется луа машиной. Луа интерпретирует скомпилированный байт-код программы а не текст!!!!111адинадин
Много базара, мало кода.
Как в lua получать указатели, если можно так сказать? Как работать с памятью через указатели?
Никак.
Даже загрузка байткода, полученного извне, изначально отключен по соображениям безопасности.
Если очень хочется, то можно load с помощью которой все компилится, заключить в конверт с нужным функционалом. Но это имитация.
-
Есть 2 компьютера, одного есть в оперативной памяти функция, как ее передать другому?
Неясный вопрос.
Ты хочешь извлечь байткод функции из окружения?
-
Зойчем анекдоты? Запилите рсс башорга.

Операторы Computer Craft
в Разные (отсортировать)
Опубликовано:
Я их путаю.
Если компьютер крафт то http://www.computercraft.info/wiki/Main_Page, и доки по луа соответствующей версии.