Хочу поделиться опытом изучения Tarantool. Про все преимущества и особенности самого Тарантула я писать не буду, на эту тему было много статей (например, эта, эта и эта). Этот пост рассказывает о том, как начать работать с тарантулом и про некоторые особенности и вкусности которые можно получить из коробки.
Читать полностью »
Метка «lua» - 3
Изучаем Tarantool + Lua
2013-09-02 в 6:42, admin, рубрики: Lua, nosql, tarantool, Блог компании Mail.Ru Group, метки: lua, tarantoolСоздание несложного бота для WoW, программирование маршрутов
2013-08-12 в 7:56, admin, рубрики: autoit, diy или сделай сам, game development, Lua, tutorial, world of warcraft, wow, робототехника, метки: autoit, bot, lua, tutorial, world of warcraft, wow, аддон, робототехникаВведение
Прочитал недавно пост, в котором автор рассказал о своём боте для торговли на аукционе в игре World of Warcraft. Его персонаж бегал челноком на небольшие расстояния и выполнял конкретные действия, строго заданные в управляющей программе. Воспользовавшись его идеями, я решил пойти немного дальше: пусть персонаж будет способен бегать по маршруту длительностью хотя бы пять минут, при этом должна быть возможность записывать маршрут и выполняемые действия извне, не прибегая к изменению самой программы управления. Описанное мной является развитием поста-оригинала, тем не менее я постарался, чтобы его чтение не было обязательным.
В посте я опишу
- Процесс создания тривиального аддона для пользовательского интерфейса WoW на языке Lua
- Сериализация данных для передачи между частями системы
- Передача с помощью цвета пикселей
- Процесс управления персонажем на языке AutoIt
- Программа для записи выполняемых действий
- Программа для воспроизведения
- Мат.расчеты направления перемещения
- Почему не стоит прибегать к чтению/записи памяти процесса
- Программа управления (ро)ботом с командами, понятными непрограммисту
Lua за 15 минут
2013-06-25 в 5:37, admin, рубрики: Lua, обучение, топик-ссылка, метки: lua, обучение, топик-ссылка
Для всех, кто хотел разобраться с Lua, но никак не находил времени, Tyler Neylon приготовил небольшой подарок:
http://tylerneylon.com/a/learn-lua/
Посвящается всем, кто предпочитает один большой список из говорящих самих за себя сниппетов кода (с небольшими комментариями к 95% case'ов) длинным мануалам с огромной иерархией. Очень удобно для тех, кто уже умеет программировать и просто хотел бы разобраться с новым для себя языком. Весь «мега-сниппет» на английском, но примеры несложно читаются.
P.S. А для всего остального есть Читать полностью »
Классы в lua, или избавляемся от двоеточия
2013-06-03 в 19:13, admin, рубрики: Lua, классы, ненормальное программирование, ооп, метки: lua, классы, ооп Как всем известно, в lua нет как таковых классов и объектов. Однако есть метатаблицы и синтаксический сахар.
С помощью указанных механизмов достаточно просто реализовать подобие классов.
В итоге и получается нечто такое:
local MyClass = {} -- the table representing the class, which will double as the metatable for the instances
MyClass.__index = MyClass -- failed table lookups on the instances should fallback to the class table, to get methods
-- syntax equivalent to "MyClass.new = function..."
function MyClass.new(init)
local self = setmetatable({}, MyClass)
self.value = init
return self
end
function MyClass.set_value(self, newval)
self.value = newval
end
function MyClass.get_value(self)
return self.value
end
local i = MyClass.new(5)
-- tbl:name(arg) is a shortcut for tbl.name(tbl, arg), except tbl is evaluated only once
print(i:get_value()) --> 5
i:set_value(6)
print(i:get_value()) --> 6
Всё это конечно хорошо, даже при определённой сноровке можно реализовать наследование…
Но где public и private члены класса? Дефакто в этом примере они все public. Да ещё и надо помнить, где использовать двоеточие:
MyClass:myFunc()
а где просто одну точку:
MyClass.myOtherFunc()
А статические члены класса? Неужели придётся отказываться?
Читать полностью »
Terevaka — фреймворк высокого уровня на Lua для мобильных платформ
2013-04-16 в 6:41, admin, рубрики: android, iOS, Lua, moai sdk, mobile development, разработка под iOS, метки: android, iOS, lua, moai sdk, mobile developmentДорогие друзья, сегодня я расскажу вам о фреймворке высокого уровня на Lua для мобильных платформ собственной разработки. Как вы уже, наверное, догадались из названия, этот фреймворк использует другой низкоуровней фреймворк для отрисовки графики и для взаимодействия с системой. В качество него выступает MOAI. Для минимального ознакомления с ним, я рекомендую прочитать мою предыдущую статью habrahabr.ru/post/176765/
Прежде всего, какие задачи должен был решить новый фремворк?
Во-первых, проблемы с фрагментацией экранов. А во-вторых (та-дам), хотелось иметь какой-то, пусть и простейший, графический редактор интерфейсов. В третьих, фреймворк должен был определить архитектуру и файловую структуру приложения в целом. Хочу сказать, что кода получилось немного (менее 600 строк), поэтому, даже если фреймворк вам не подойдет, как есть, будет несложно разобраться с его работай и заточить его под свои нужды.
Warning: фреймворк заточен под landscape приложения, поэтому если вам нужен портретный режим, то скорее всего придется потратить некоторое время на доработку.
Читать полностью »
Краткое введение в MOAI Framework
2013-04-16 в 6:40, admin, рубрики: android, iOS, Lua, moai sdk, mobile development, Разработка под android, разработка под iOS, метки: android, iOS, lua, moai sdk Когда речь идет о бизнес приложениях, принято писать несколько копий под каждую из популярных мобильных платформ. Это вполне оправдано, т. к. Android/iOS/etc платформы столь специфичны, что реализовать по принципу «Code at once — run everywhere» довольно сложно. Однако, ситуация совсем иная, когда речь идет о мобильных играх. У игр как правило свой собственный стиль графических элементов — кнопок, меню и т. д., и вся графика построена либо на спрайтах, либо на 3D (прим. — в дальнейшем речь будет идти только о 2D движках). Появляется вполне закономерное желание написать приложение один раз и собирать его под разные платформы.
Достичь этого нам поможет кросплатформенный фреймворк MOAI.
Учим язык, смотря сериалы: vlc + lua + stardict + wordnet + anki = l’amour
2013-02-19 в 11:07, admin, рубрики: anki, Lua, StarDict, vlc, WordNet, английский язык, изучение иностранных языков, разработка, Учебный процесс в IT, метки: anki, lua, StarDict, vlc, WordNet, английский язык, изучение иностранных языковОчень уж мне нравится смотреть сериалы, а еще я учу с их помощью языки. И если раньше я прилежно останавливал видео на непонятном месте, перематывал назад, включал субтитры и забивал незнакомые слова в Анки, то сейчас я делаю то же самое. Разве что лень заставила этот процесс автоматизировать, что привело к созданию расширения Say It Again для проигрывателя VLC со следующими особенностями:
- Навигация по субтитрам (переход к предыдущей, следующей фразе) — клавиши y, u;
- Сохранение слова, его транскрипции и перевода вместе с контекстом (см. скриншот) — клавиша i;
- Функция «Еще раз»: переход к предыдущей фразе, показ субтитра и пауза — клавиша backspace;
- Подключение любых словарей в формате Stardict (в сети лежат словари из Lingvo x3);
- Экспорт в Anki или другую программу, понимающую файлы в формате csv;
Шаблоны с переменным количеством аргументов на примере обертки для Lua
2013-01-14 в 10:44, admin, рубрики: c++, c++11, Lua, templates, tuple, ооп, метки: c++, c++11, lua, templates, tupleПонадобилось мне прикрутить Lua к проекту на C++. Писать обертки в ручную — лень (слишком много писать), готовые не подходили по тем или иным причинам. Решил написать свою. А потому задался вопросом, как максимально упростить интерфейс? От одной только мысли об этом в голову лезли жутчайшие конструкции из шаблонов. Так оно в последствии и оказалось, но гораздо проще, чем представлялось.
В C++11 появились шаблоны с переменным числом аргументов, это позволяет писать шаблонные функции/классы так, как в C++03 было невозможно вовсе. Такие шаблоны сильно упрощают задачу.
Первым делом понадобилось написать обертку над простейшими действиями с интерпретатором (можно было бы обойтись простыми вызовами к C API Lua, но держать в памяти кучу индексов различных значений в стеке мне не хочется. Поэтому я обернул их в несколько функций, которые помимо того, что избавляют от необходимости передавать в каждую функцию указатель на состояние интерпретатора, практически не требуют индексов, так как они имеют значения по умолчанию.
В итоге хотелось увидеть интерфейс близкий к следующему:
lua.export_function(some_function);
Большое обновление ObjectScript 0.99-vm3. Часть 1: Регистровая виртуальная машина
2012-11-06 в 3:47, admin, рубрики: javascript, Lua, ObjectScript, open source, ruby, метки: javascript, lua, ObjectScript, rubyObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby и PHP. Вы можете ознакомится с первоначальным синтаксисом языка в этой статье.
ObjectScript 0.99-vm3 — новая быстрая виртуальная машина и новые возможности.
Убраны некоторые операторы, например, clone, numberof
и др. заменены функциями. Последнее значение в функции возвращается автоматически. Добавлена короткая запись для доступа к членам объекта — @varname
, новый короткий синтаксис для объявления функций и мн. др.Читать полностью »
ObjectScript, разработаем спецификацию совместно: операторы сравнения
2012-10-10 в 1:05, admin, рубрики: api, javascript, Lua, ObjectScript, objectscript api, open source, php, Программирование, спецификация, метки: javascript, lua, ObjectScript, objectscript api, open source, PHP, спецификацияObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP. Синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами — из PHP.
Проект ObjectScript совсем молодой, только недавно появились первые рабочие и стабильные версии. Тем не менее вопрос о спецификации некоторых моментов языка не решен окончательно и находится в стадии проработки. Например, операторы сравнения в разных скриптовых языках работают по-разному, это зависит от того, какие типы данных участвуют в сравнении и какой алгоритм используется в конкретном языке программирования.
Вопрос довольно щекотливый, т.к. от результата булевского выражения зависит, не много не мало, выполнится кусок кода или нет. Русская пословица «одна голова хорошо, а много лучше» подсказывает мне, что лучше обратится к программерскому сообществу и разобраться наверняка в том, какое поведения при сравнении (это операторы >=, >, <=, <, ==, !=) разных типов данных в скриптовом языке является наиболее уместным. Выработать коллегиональное решение и закрепить результат в спецификации ObjectScript.Читать полностью »