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

swg2you

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

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

  • Посещение

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

    20

Сообщения, опубликованные пользователем swg2you


  1. Какие опертаоры есть в этом моде? Мне нужны только названия, желательно все

    Отличия: http://ocdoc.cil.li/api:non-standard-lua-libs

    Языка Lua: http://www.lua.org/manual/5.2/manual.html

    В моде: http://ocdoc.cil.li/


  2. Зач проверять, если все равно else условия нет, а результ работы уже пойдет неправильно? 

     

     

    Ага, я уже нашел, но пусть лучше записывает на первую попавшуюся. 

    Все там есть ) Это фрагмент функции же. Перебираем пока файл не откроется, как открылся - обрабатываем и выходим по return

     

    Компоненты сортируются рандомно. И если у тебя в компьютере установлен только один жесткий диск, то В 50% случаев ты будешь попадать на /tmp файловую систему в 64 килобайта, и удивляться, почему не хватило места для записи.

     

    Опять же это предположение, я не исследовал файловые системы роботов. И не знаю есть ли там temp fs


  3. Насколько я понял, в библиотеке GUI подразумевается только динамическое создание форм внутри кода программы. Без возможности подгрузки/сохранения файла параметров формы?

    Если это так, то было бы логичным добавить в библиотеку что-то вроде loadForm/SaveForm, чтобы иметь возможность статические параметры формы (цвета/размеры/флаги) хранить в отдельном файле и подгружать при необходимости. А в программе пользователя оставить только логику формы.


  4. Я написал, что надо поменять на загрузочную 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 диск будет" - Не думаю. Там еще, как минимум, файловая система временного диска должна присутствовать. Поправьте меня если это не так.


  5. Поскольку мы (особенно я и @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

  6. Исправил недочеты, должно работать.

    Не будет. Даже беглый взгляд видит кучу ошибок.

     

    Главный недочет в логике работы: 

    1. загрузил код из сети

    2. сохранил его в файл (куда? на какую файловую систему? в тепм? на ридонли дискетку?)

    3. а дальше что? твой код закончился и стоп-компьютер? а после рестарта опять грузит из сети?

     

    И вообще, что значит "должно работать"? Проверять кто за тебя будет? Халтурщик :D

     

    Заюзай bibi сохрани свой код как boot.lua и тестируй.


  7. Нет, но через load можно будет загрузить код скомпилированный из C, но тут я подумал: а почему его так боятся? Он вроде должен быть загружен с использование указанной среды или песочницы по умолчанию)

    Песочница у луа довольно дырявая ) но несмотря на это я не думаю, что можно сильно навредить изнутри такой матрешки.


  8. Не было обмана, я не знал и не тестировал) А что можно использовать вместо io?

    http://ocdoc.cil.li/component:filesystem

    Не апи, который добавляется позже, операционной системой, а именно вызовы методов компонента.

     

    Пример работы можешь в биби глянуть. Он использует гпу и файловую систему для загрузки файла.

    • Нравится 1

  9. Идея появилась в разговоре с Артемом)

    Суть: программа для eeprom, которая загружает какие-то файлы(ему надо было OpenOS) с пасты.

    http://pastebin.com/FF384rL4

    Эм-м. io в eeprom не существует же кажись?!

     

    и 

    1. local i=component.internet 
    тоже не должно работать
     
    это точно из eeprom запускается?
    • Нравится 1

  10. Тьфу на Вас. Ленивые Вы все тут. Вам бы лишь бы все готовое использовать :)

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

     

    Любая программа должна быть рутинной, а не состоящая из 3 строк.

    И если Вы не разбираетесь в той или иной области, то не стоит считать что это рутинная работа и это невозможно сделать.

     

    P.S. Честное слово друзья, за ту неделю что тут после своего возвращения я столько бреда перечитал, что аж начинаешь думать, а нужно было ли вообще возвращаться.

    Не надо тьфу на нас ) Просто вместо того, чтобы пилить облака да тучки, реализовали бы базовые протоколы вначале.

    Тот же телнет, фтп или вообще SSH. Чтобы можно было на линупсовом сервере работать через цомпутеркрафт. А то все сразу мегапроекты берутся пилить, и быстро стухают.

    Утилит для опенос тоже нехватеат очень. Обычных консольных, и чтоб пайпы умели. Элементарный more и тот кривокосячный.

    • Нравится 1

  11. Эта опция не особо охотно делает заказанное.

    Эта опция запрещает/разрешает загрузку скомпилированного байт-кода через load(), каким боком сюда затесалось слово из буквы С я не в курсе )

     

    Вы считаете, что интерпретатор даст доступ байт-коду к функциям С?


  12. А теперь ткни пальцем в строчку конфига, где это показывается. И в любом случае этого не поставят, ибо зачем?

    Палец подымается, и медленно ползет по тексту файла 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=false
    
    2 NEO: Слово "precompiled" в первой строке комментария сможешь интерпретировать? ;)

  13. Значит все это сводиться к тому чтобы ссылки хранить в локальной сети (компьютерах), а на них будет некая база (из таблиц) в которой будет:

    id->название программы->ссылка на нее->если надо пароль.
    Ну это так приблизительная схема, конечно можно замудреннее, но я так показал пример.

     

    {{пастбин бЛаБлаБла, тег1, тег2, ..., тегN}...} + нечеткий поиск-фильтр по тегам = рульная база софта


  14. Я вот про это и подумал, то есть ничего еще подобного не делали? А где почитать про спецификацию lua-bytecode?

    Спецификация байт-кода - вопрос конкретной реализации.

    Гугл выдает кучу тем по декомпиляции, в т.ч. и готовых (работоспособных ли?) утилит.

     

    Тривиально, задача сводится к трансляции байт-кода в эквивалентный луа-код, который, в свою очередь, сможет компилироваться с помощью родной load() в исходный байт-код. Думаю смотреть исходники луа машины, в частности функции лоад - самый верный путь. Именно она транслирует луа- в байт-, и именно её необходимо реверснуть.


  15. А из результата string.dump никак не получить объект?

    А толку? Ну получишь ты строку с байт-кодом функции, но она годится только для изучения. Выполнить её не удастся, поскольку в конфиге мода, по умолчанию, отключена загрузка байт-кода. 

     

    Её легко включить, но разработчики грозят гипотетическими проблемами с безопасностью. Теоретически, джава-луа машину можно ковырнуть и заставить выполнить любой код на стороне сервера. Но практически, флагом "безопасности", имхо, машут сторонники опенсорса, поскольку возможность запуска байт-кода открывает возможность проприетарщины, ну и много других интересных фишечек.

     

    Хотя никто не мешает заняться реверсом и написать декомпилятор из байт-кода обратно в луа ) тоже интересная задача.


  16. Нечего программировать? У меня есть идейка для тебя.

    Такое файловое хранилище, что бы в нем каждый с любого компа мог оставить файлы, а потом с другого места их забрать. Еще логин и пароль будет. А называться должно как то легко, невесомо... Например, "Воздушное хранилище", хотя наверняка можно придумать лучше название.

    FTP?


  17. Велосипедист

    У нас здесь клуб велосипедистов )

     

    Решил сделать TeamViewer на базе твоей программы, а фигу. Модем может передать максимум 8 КБ, а картинка весит 25 КБ. Вот согласен с Тоторо.

    Передавать скриншотами - моветон. 

     

    Заключай GPU-шные ф-и вывода в конверт и, при их вызове, передавай их на удаленный хост, а от хоста передавай события клавиатуры мыши и пуль их в очередь событий.

    Вот и весь тимвьювер.

    • Нравится 2

  18. Только не байт-код. Байт-код в компилируемых языках, а у нас луа — интерпретируемый. (Хотя компилировался-бы, через LuaJIT)

    Опять 25 )

    load() на выходе дает скомпилированный чанк в форме байт-кода, а уже байт-код интерпретируется луа машиной. Луа интерпретирует скомпилированный байт-код программы а не текст!!!!111адинадин

     

    Много базара, мало кода.

    Как в lua получать указатели, если можно так сказать? Как работать с памятью через указатели?

    Никак.

     

    Даже загрузка байткода, полученного извне, изначально отключен по соображениям безопасности.

     

    Если очень хочется, то можно load с помощью которой все компилится, заключить в конверт с нужным функционалом. Но это имитация. 

×
×
  • Создать...