Как стать автором
Обновить
4.68

Lua *

Скриптовый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Библиотека эмуляции терминала ROTE и Lua привязки

Время на прочтение6 мин
Количество просмотров7.3K
boxshell

ROTE — простая библиотека на языке C, служащая для эмуляции терминала VT100. Она создает терминал и предоставляет доступ к его состоянию в виде структуры языка C. В терминале можно запустить дочерний процесс, «нажимать» в нем клавиши и смотреть, что он рисует на терминале. Кроме того, есть функция для отрисовки состояния терминала в окне curses.

Зачем на практике может потребоваться эмулировать терминал и взаимодействовать через него с дочерним процессом? В первую очередь это нужно для автоматического тестирования программ, рисующих что-то на терминале с помощью curses, по моему мнению. Как иначе написать тесты для программы, которая ждёт, что пользователь нажмёт клавишу, и выводит результаты в определенное место экрана средствами curses?

Несмотря на всё удобство и внутреннюю красоту ROTE, использовать её напрямую в тестах было бы громоздко. Поэтому я решил упростить задачу, привязав ROTE к языку Lua, который я очень люблю и знаю, как писать тесты. Так и родилась библиотека lua-rote, о которой я хочу рассказать.
Читать дальше →

Corona SDK стала бесплатной

Время на прочтение1 мин
Количество просмотров32K

Создатели известного движка для разработки кроссплатформенных мобильных приложений Corona SDK 2 марта объявили о том, что отныне Corona SDK будет бесплатна.

Четыре месяца назад, в ноябре 2014 Corona была куплена компанией FusePowered. Многие предрекали грядущие изменения в политике компании и в выборе путей ее развития. Вопрос был, в какую сторону будут эти изменения. И вот сегодня случилось — Корона объявила, что возможности, доступные раньше только в платных подписках, теперь будут бесплатны.
Разберемся, что же они теперь нам предлагают.
Читать дальше →

Raspberry и Telegram: предпосылки создания умного дома

Время на прочтение3 мин
Количество просмотров87K


Один итальянский магазинчик нащупал новые способы использования Телеграма (и ранее WhatsApp'а), установив его на одноплатный миниатюрный компьютер Raspberry Pi. Как выясняется, мессенджер можно использовать для удалённого общения с собственной техникой. Ниже – перевод статей (1, 2) с сайта Instructables.com. Если есть уточнения по переводу, напишите об этом в комментариях.

Читать дальше →

Lua API for D language

Время на прочтение5 мин
Количество просмотров6.4K

Предисловие


Данная заметка не будет слишком уж объемной, а скорее даже наоборот, небольшой.

Достаточно продолжительное время я слежу за серией статей о языке D, публикуемой на Хабре. Ознакомившись с рядом источников, начиная от Википедии и заканчивая официальными руководствами по данному языку, пришел к выводу о целесообразности использования оного в своих научных проектах. Главный проект по докторской диссертации зашел в состояние тупика, требовал переработки (всплыл ряд механических вопросов). Переработку проекта и изучение нового для меня языка было решено совместить.

Сказано сделано — большая часть кода довольно быстро была перенесена с C/C++ на D. Не смотря на различные мнения по поводу D бытующие в среде разработчиков ПО, язык пришелся мне по вкусу.

Одна беда — в старом варианте проекта для задания параметров модели поезда и изменения логики работы без перекомпиляции использовался Lua-скриптинг. Те кто сталкивается с ним по роду деятельности знают, что существует хорошо разработанный и достаточно документированный API для разработки на C/C++.

Что касается Lua-скриптинга в D, то существует ряд проектов, например LuaD, привносящий в программы на D возможность работы с Lua. Однако LuaD рассчитан на предыдущую версию 5.1. Попадался мне проект и для 5.2 — DerelictLua, однако навскидку с «легкого пинка» завести его не удалось. При наличии времени можно разобраться, но времени как всегда нет. Пришлось напрячь мыслительные мощности и придумать более быстрое и простое решение. Если читателю интересно, что из этого вышло, добро пожаловать под кат.
Читать дальше →

Генератор умных перечислений, EnumGenerator

Время на прочтение5 мин
Количество просмотров6.2K
Привет всем!

Несколько лет назад меня начал беспокоить вопрос создания статических (создаваемых и изменяемых до процесса компиляции) перечислений. Перечислений я хотел не простых, которые реализованы в С/С++, а с набором дополнительных возможностей, в том числе и ассоциированными столбцами данных произвольного типа, своего рода статическая база данных с доступом по уникальному идентификатору.

Тогда в моем понимании ясно выделились три типа объектов, которые могут быть уникальным идентификатором: числовой индекс, числовой идентификатор, символьный идентификатор. При попытке применить каждый из них для решения задачи перехода от ключа к значению сформировались основные их недостатки и преимущества:
Читать дальше →

One-liner для компиляции шаблонов на Lua

Время на прочтение2 мин
Количество просмотров7.5K
Синтаксис Lua позволяет реализовать шаблоны в стиле PHP буквально несколькими регулярными выражениями.
Для начала посмотрим, что из этого выйдет.

Подстановка переменных


<a href="<%url%>"><%label%></a>

Логические конструкции


Будет
<? if 1 > 2 then ?>
лучше
<? else ?>
хуже
<? end ?>

Циклы


<ul>
<? for i = 1, 9999 do ?>
  <li>ФЗ №<%i%></li>
<? end ?> 
</ul>

Читать дальше →

Asterisk+Lua — IVR и некоторые другие моменты

Время на прочтение3 мин
Количество просмотров11K
И снова здрасьте! IVR — сегодня это даже не фишка, а некий стандарт работы предприятия. В некоторых случаях многие, как клиенты, так и конкуренты считают, что если этого самого IVR нет, то «там» низкое качество предоставляемых услуг. Этой штукой нынче никого не удивишь. Однако, мы же говорим про реализацию IVR на языке lua под Астериском. И если вы переходите от обычного плана набора к Lua, то тут можно кое-что пояснить.

Читать дальше →

Asterisk+Lua+регулярное обновление DEF кодов

Время на прочтение3 мин
Количество просмотров5.8K
Снова всех приветствую. После написания прошлой статьи про использование lua в астериске, пришла мысль про небольшое пояснение об использовании DEF-кодов совместно с lua. Ранее тут пролетала статья про генерацию кодов используя скрипт на php. Я этим скриптом успешно пользовался и пользуюсь, но с небольшими (совсем не большими) доработками.

Читать дальше →

Диалплан на LUA для Asterisk

Время на прочтение8 мин
Количество просмотров28K
Приветствую всех. Когда-то тема использования языка программирования lua при написании диалплана в Астериске для меня стояла довольно жёстко. Дело в том, что мне сильно не нравится работать с различными GUI (типа FreePBX) при настройке Астериска.

Когда я всё настраивал в первый раз, работал с обычным линейным extensions.conf. Время шло, потребности в функционале телефонии росли. Язык lua постепенно немного изучил. И вот пришёл я работать админом в одну крупную компанию в нашем городе (одно крупное агентство недвижимости) — около 45 филиалов на тот момент было, примерно 650 — 700 пользователей, включая межгород и т.д. Там уже стоял Asterisk, но всё настроено было с использованием FreePBX.

Почти сразу руководство начало меня заваливать различными вопросами по наворотам Астериска. Например, хотели, чтобы при входящем звонке в какой-то филиал, звонки внутри филиала были распределены случайным образом. Хотели иметь запись разговоров в mp3, хотели сделать общую группу, куда можно было бы включить вообще все филиалы и при наборе какого-то номера, чтобы случайно попасть на один из филиалов и т.д. Задачи вроде простые, однако сидеть решать даже такие вопросы средствами графического интерфейса лично мне было не очень интересно.
Читать дальше →

Cocos2d-x: Используем собственный C++ класс в Lua

Время на прочтение6 мин
Количество просмотров7.6K
Всем доброго времени суток.

Так уж сложилось, что про использование cocos2d-x Lua в природе существует довольно мало информационных материалов, даже с учётом англоязычных источников. Поэтому во многом приходится разбираться самому, копаясь в чужом коде и читая (часто не особо содержательную) документацию.

В этой статье я хочу хотя бы частично исправить эту несправедливость и рассказать о расширении стандартного функционала доступного в cocos2d-x Lua с помощью нативных классов.

С этой задачей я столкнулся, можно сказать, лицом к лицу после осознания собственных скудных знаний Lua. Тогда же и созрело решение часть игровой логики написать на старом добром C++.

Итак, кому интересен данный процесс прошу под кат.
Читать дальше →

Отслеживаем время отклика NFS сервера с помощю tshark и lua

Время на прочтение2 мин
Количество просмотров8.1K
На днях встал перед задачей, как определить, сколько времени тратит NFS сервер на запрос.
Оказалось, что это не так уж и просто посмотреть. Но на помощь пришёл любимый молоток инструмент — wireshark. Для wireshak можно написать своё расширение на LUA.

О, и мне надо!

Ближайшие события

LuCI переехал на GitHub

Время на прочтение1 мин
Количество просмотров13K
Было время, когда ожидание рассмотрения ваших правок для этого проекта длилось месяцы. Некоторые патчи вообще были обделены вниманием. Trac или игнорировался, или за ним некому было следить.
10 октября эта эра завершилась. Теперь этот замечательный web-интерфейс доступен на GitHub и поддерживется основным сообществом OpenWrt. Pull-запросы рассматриваться довольно быстро.
Поздравляю всех пользователей и разработчиков интерфейса с этим событием.
Теперь почти все основные элементы OpenWrt доступны на GitHub, что не может не радовать.
Спасибо за внимание.

OpenWrt — Популярная операционная система для маршрутизаторов и встраиваемых систем.
LuCI — Один из самых популярных web-интерфейсов для систем на базе OpenWrt.

Создание модели электронного компонента для Proteus на Lua

Время на прочтение10 мин
Количество просмотров36K
Есть у меня несколько проектов-долгостроев, один из которых — создание компьютера на базе CDP1802. Основную плату моделировал на бумаге и в Proteus.
Довольно скоро встал ребром вопрос: как быть с элементами, которые отсутствуют в Proteus?
На многих ресурсах подробно описано, как создать свою модель на С++ в Visual Studio.
К сожалению, при сборке под линуксом этот вариант не очень удобен. Да и как быть, если не знаешь С++ или нужно редактировать модель на лету для отладки?
Да и просто хочется сосредоточиться на моделировании, максимально упростив все остальное.
Так появилась идея делать симуляторные модели с помощью скриптов — на Lua.
Заинтересовавшихся прошу под кат (гифки на 2Мб).


Читать дальше →

Поиск-фильтр по сообщениям скайпа

Время на прочтение6 мин
Количество просмотров8.4K
Вчера внезапно узнал, что логи скайпа хранятся в .sqlite. Отлично, подумал я, будет занятие на выходной.
Сегодня посмотрел хабру, нашел тему, посвященную описанию самой базы — тема, а также по восстановлению этой самой базы — тема и упоминание программки SkypeLogViewer. Замечательно, подумал я, пора писать очередной упоротый велосипед.
Идея проста: выборка и фильтрация чатов через lua — для тех, кто желает немножко попрактиковаться в использовании lua, sql-запросах и lua-аналога linq, а также тем, кого не устраивает стандартный поиск скайпа. Само приложение написано на C#(WPF).
Что получилось — смотрите под катом.
Читать дальше →

Lua API++

Время на прочтение19 мин
Количество просмотров22K
Здравствуйте, коллеги.
Хочу познакомить вас с моим небольшим проектом, который, надеюсь, сможет пригодиться и вам.

С Lua я познакомился несколько лет назад, когда подыскивал внедряемый скриптовой язык, отличающийся скромным размером и высокой производительностью. Lua не только отвечает этим запросам, но и подкупает удивительной простотой и выразительностью.

Не могу сказать, что я недоволен Lua API: это отличный набор функций, удобный и простой в использовании. Интеграция языка в своё приложение и добавление собственных расширений не вызвали трудностей, никаких «подводных камней» тоже не возникло. Но всё же при использовании этого API, ориентированного на Си, меня не оставляла мысль, что этот процесс мог бы быть и поудобнее. Первая попытка сделать удобную объектно-ориентированную обёртку потерпела неудачу: имеющимися средствами мне не удалось создать что-то заслуживающее существования, всё выходило чересчур громоздко и неочевидно.

А потом появился C++11, который снял все мешавшие мне препятствия (точнее говоря — добавил то, чего не хватало), и головоломка постепенно начала складываться. Второй заход оказался удачным, и в результате я сумел создать достаточно легковесную библиотеку-обёртку с естественным синтаксисом большинства операций. Эта библиотека, которую я назвал Lua API++, призвана служить удобной заменой для Lua API. Этой статья, написанная по мотивам моего выступления на Lua Workshop, поможет познакомиться с основными понятиями Lua API++ и предоставляемыми ей возможностями.
Читать дальше →

Awesome WM и Dbus

Время на прочтение11 мин
Количество просмотров13K
Я думаю ни для кого не будет секретом, что у Awesome есть «узкое место», если мы запускаем внешний скрипт, который например должен считать данные из файла, или интернета и вернуть результат в виджет или саму систему, то мы периодически можем наблюдать явлениие «фриза», т.е. когда система перестает реагировать на нажатия клавиш и мыши до получения результата обработки (правда активный клиент при этом продолжает работать). Чаще всего это происходит при использовании io.popen или awful.util.pread
Читать дальше →

Cocos2d-x: Пишем на Lua

Время на прочтение6 мин
Количество просмотров37K


Доброго времени суток.
Начнем с того, что я не нашел на хабре туториалов по Cocos2d и Lua, поэтому мне пришлось много страдать и чтобы вы не повторяли моих ошибок я решил написать пост. В этой статье я расскажу как создать простую игру используя Сocos2d-x, Cocos Code IDE и Lua. Ранее, я уже писал про создание игр на Love2d. В этой статье я адаптирую старый туториал для кокоса и как это запустить на андроиде (Ни яблока, ни мака у меня нет).
Читать дальше →

Приглашаем на Lua Workshop 2014

Время на прочтение2 мин
Количество просмотров5.3K
13 и 14 сентября (суббота и воскресенье) в Москве, в офисе Mail.Ru Group пройдёт крупнейшая ежегодная конференция, посвящённая языку программирования Lua — Lua Workshop 2014. Эта международная англоязычная конференция проводится в этом году в 9-й раз. В 2012 году она проходила в Рестоне (США), в 2013 — в Тулузе (Франция), ну а в этом году конференция приезжает в Москву.

Если вы пишете на Lua, вопрос посещать или не посещать конференцию не возникнет: когда ещё будет возможность вживую пообщаться с создателем языка и автором «Programming in Lua» Роберто Иерусалимским? Да и просто (бесплатно!) поучаствовать в конференции, узнать больше о вашем языке программирования из первых рук.
Читать дальше →