Totoro
-
Публикации
1 950 -
Зарегистрирован
-
Посещение
-
Победитель дней
289
Сообщения, опубликованные пользователем Totoro
-
-
Тут как раз "метатаблица" и есть неблагозвучный калькированный с английского неологизм.
Если бы документацию писали, а не переводили, то термин скорее всего был бы "суб-таблица" или составной, но более точный по сути "таблица операторов".
Немного не соглашусь.
У неологизма "метатаблица" есть как минимум пара преимуществ, по сравнению с другими вариантами.
Первое - он широко распространен (в контексте Луа). Как в английском так и в русском языке.
Второе - это наиболее точный перевод термина "metatable" на русский. То что перевод так похож на оригинал - лишь облегчает понимание мануалов.
Так что тут уже все решено за нас создателями языка.
Термин "суб-таблица" возможно прижился бы. Но он звучит менее определенно. "Под-таблица". Это таблица-элемент? Таблица операторов? Или что-то еще?
Приставка "мета-" носит в русском языке (хотя она несомненно иностранного происхождения) смысл абстрактности и обобщенности. Что вполне подходит к случаю, на мой взгляд.
-
2
-
-
Да, термин "таблица" рябит в глазах, особенно если это замечаешь.
Однако, на мой взгляд, в статье на подобную тему это неизбежно. И уж тем более не стоит заменять термин "метатаблица" на неологизм собственного сочинения, вводя в заблуждение читающих статью новичков.
- setmetatable(table, table) — эта основная функция при работе с метатаблицами, она устанавливает таблице метатаблицу. Первый аргумент здесь — таблица, второй — метатаблица. Такая функция работает только с таблицами.
Можно использовать синтаксис описания команд, подобный тому, что можно увидеть на http://ocdoc.cil.li/
И переформулировать фразы немного, чтобы избежать излишней тавтологии.
- setmetatable(table: table, metatable: table) — это основная функция, которая позволяет установить таблице метатаблицу.
Т.е. тип аргументов и какой идет куда, становится понятно из сигнатуры.
-
Получается я могу написать свой кодовый замок, только с другими надписями, и получить байт-IV (которого нет)?
Для него эта программка - прогресс. А для тебя регресс. Так что обойдешься без четвертого байта )
-
2
-
-
Воот. А я уж все сделал и оформил. И с анимацией.
Еще пара дней есть же.
За это время я могу еще свой проект выкатить успеть. ))
-
1
-
-
то есть как минимум поиск по ключу нужно написать вроде
...
ну и патерн как-то универсальным сделать, чтобы можно было прочитать name='Big Bob', тогда хоть какой-то смысл в библе есть.
Ага. Паттерн можно сделать такой: "(%S+)%s*=%s*(.*)".
Таким образом будут корректно парситься строки вроде
name=Вася Пупкин age = 99 tab_len= 2 are_you_crazy =true
Если после равно не будет текста, value примет значение "".
Если добавить экранирование строк-комментариев (например знаком #), будет вообще отлично.
-
1
-
-
Там стоят строки
local key, value = string.match(line,"(.*)=(.*)") if value ~= nil and key == key then
Т.е. считанная строка разбивается на key и value, а затем идет проверка на то что value содержит какое-нибудь значение, и key совпадает с нужным.
В противном случае идет чтение строк из файла дальше.
Однако key == key всегда будет равно true, потому что локальная переменная key закрывает видимость аргумента key.
А также паттерн "(.*)=(.*)" не подразумевает возможности пробелов перед или после равно. Если конфиг пишет программа - это не важно, но в случаее ручной правки конфига может вызвать ошибки.
-
О, а что тогда у меня там было?
Кинь скрин выполнения команды df (запускать через консоль), или команды for a, b in component.list('filesystem') do print(a, component.proxy(a).getLabel()) end (запускать из интерпретатора lua).
-
Традиционно, временная файловая система имеет метку tmpfs. Она автоматически монтируется по адресу /tmp/.
Не встречал названия ram.
-
-
Играл как-то давно в нее. Интересная игрушка.
Было прикольно писать роботов бойцов, и роботов электриков, которые заменяли другим роботам батарейки )
-
Просто интересно: А зачем копалкам нужен командный блок?
Это суровый админский копатель. Он сетит через командный блок руду, а затем едет ее копать.
-
7
-
-
Ребят, обновляйтесь до OC 1.5.13 и будет вам счастье.
Fixed: Command block driver now properly returns numeric value from executeCommand.
-
1
-
-
Кот-нибудь знает,как перевести код символа в символ,кроме elseif-ов?
Глянь тут: http://lua-users.org/wiki/StringLibraryTutorial
(в частности string.byte и string.char)
А также тут: http://ocdoc.cil.li/api:keyboard
-
1
-
-
Я не совсем понимаю что с инициализации системы... Но он так специально сделан! Так нужно! Он специально сделанный без клавы и монитора, он был рассчитан на удалённое управление! У него есть жёсткий диск с обычной OpenOS и я хочу получить доступ к этому винту без постоянно собирания и разжигания робота...
В таком случае пиши и тестируй программу в сингле. Отключи буферизацию в конфиге OpenComputers. У тебя будет доступ к диску через папку с миром. И удобный редактор, чтобы писать.
Когда закончишь тестирование - зальешь программу на сервер и будешь уже управлять роботом через сетевую карту (или как оно у тебя задумано).
-
ну к HDD робота!!!
Не появляется его диск в mnt
Глянь через df еще.
P.S. Сябро. Уже 10 часов прошло. У тебя есть робот, без клавиатуры, без монитора, без инициализированной файловой системы (если я правильно понял). Нафиг он тебе нужен в таком виде? За это время ты вполне успел бы его пересобрать заново с недостающими деталями.
-
1
-
-
так нету! Нету файловой системы робота!
А к чему ты тогда пытаешься получить доступ?
-
Замечательный мультфильм.

-
К сожалению, я ввел в заблуждение.
Существует функция, которая позволяет задать расстояние, на котором объект виден для игрока. Однако она не возвращает расстояния.
Работает чисто как параметр объекта.
-
А если взять голопроекторы, то память эффектней и эффективней +понтов больше
На самом деле память получается не настолько эффективная, как из экрана третьего уровня.
Каждый воксель голограммы может быть погашен, либо иметь один из трех цветов палитры. Т.е. - 4 состояния. Это 2 бита информации.
Размерность голограммы - 48 на 32 на 48. То есть - 73 728 вокселей. Делим на четыре, и получаем 18 432 байт.
Т.е. сама по себе матрица голограммы вмещает не очень много информации.
Можно добавить еще конкретные значения цветов палитры: 3 цвета по 3 байта = 9 байт
Масштаб голограммы, и значения сдвига дает еще четыре number'а. Т.е. 4 * 8 = 32 байта.
Итого, голограмма максимального уровня хранит: 18 473 байт информации.
-
1
-
-
То есть пахать, пахать, и еще раз пахать :/
Как завещал великий Ленин

P.S. Могу помочь по конкретным вопросам, но не здесь, а, например, в Mumble.
-
О, великие программеры всея Lua, можно ли скинуть ссылочку на нормальный гайдик по очкам? А то мне даже страшно от кода становится))
Нету гайдиков, к сожалению. Придется перекопать методы компонента, и поизучать програмки которые под него есть.
-
Кстати, я придумал как, вроде.
Поделишься с нами?
-
Комикс хороший, но я не понял как он относится к теме.
Способ хранения и обработки информации, в условиях отсутствия жесткого диска.

-
1
-
-

OBJ: Виртуальные трехмерные модели [OpenGlasses]
в Графика
Опубликовано: · Изменено пользователем Totoro
Библиотека для загрузки трехмерных моделей в формате OBJ и вывода их на очки OpenGlasses.
(Формат OBJ - один из самых широко распространенных форматов моделей. Практически все пакеты трехмерного моделирования его поддерживают. Помимо этого, большое количество готовых моделей можно найти в интернете.)
Исходный код:
http://pastebin.com/JyK7KTCQ
Используя несложный интерфейс, вы легко можете сделать что-то вроде этого:
Единственный минус - скорость отрисовки, которая возврастает пропорционально количеству полигонов. Череп на скриншоте состоит приблизительно из 9000 полигонов и отрисовывался около 5 минут.
API библиотеки
Пример использования
local obj = require('obj') local com = require('component') local glasses = com.glasses glasses.removeAll() obj.load('wolf.obj') obj.setScale(0.01) obj.setPosition(0, 0, 5) obj.setColor(1, 1, 1) obj.draw(glasses) print('Vertex: '..obj.getVertexNum(), 'Poly: '..obj.getPolyNum())Файл библиотеки при этом должен иметь название obj.lua.
Результат выполнения будет выглядеть примерно так:
P.S.
Модели с большим количеством полигонов будут мерцать, так как очень сильно увеличат расход энергии на терминал очков. На сервере рекомендуется использовать менее полигональные модели. А в сингле - отредактировать файл конфигурации мода OpenGlasses и снизить расход энергии.