• Делаем игру с Gideros

    Давненько была статья про Gideros (разработка игр на LUA), но продолжения я так и не нашел. Поэтому сделал небольшую статейку о том, как разрабатывать игры на Gideros Studio. Исходники и апкшник проекта в конце статьи. Продолжение под катом.


    Читать дальше →
    • +16
    • 12,1k
    • 4
  • Lua, ООП и ничего лишнего

    Однажды судьба свела меня с ней. С первого взгляда я был ослеплен и долгое время не мог отвести от нее взгляд. Шло время, но она не переставала меня удивлять, иногда казалось, что я изучил ее вдоль и поперек, но она снова переворачивала все мои представления. Ее гибкости не было предела, а потом я узнал, что она умеет еще и… ООП!

    Как-то я всерьез занялся покорением ООП в lua. И все, что я находил в интернете по этой теме, было вырвиглазными нагромождениями кода с обилием нижних подчеркиваний, которые никак не вписывались в элегантность этого языка. Поэтому я решил искать простое решение.

    После прочтения множества умных книжек и разбора нескольких ужасных реализаций ООП, я, крупица за крупицей, собирал все самое полезное и простое, пока не выработал свой стиль объектно ориентированного программирования на lua.
    Читать дальше →
  • Прототипное ООП для Lua

      Привет, я придумал свой велосипед для реализации прототипного подхода ООП в Lua.

      Основные фишки
      • Single inheritance
      • Traits
      • LuaJIT


      Перейдем сразу к примерам.

      -- подключаем модуль
      local object = require("object")
      
      -- определяем наш класс, который на самом деле объект
      local HelloClass = object:extend(function(class)
        -- конструктор (необязательно)
        function class:init(name)
          self.name = name
        end
      
        -- метод класса
        function class:sayHello()
          print("Hello " .. self.name)
        end
      end)
      
      local hello = HelloClass:new("John")
      hello:sayHello()
      

      Читать дальше →
      • +10
      • 9,2k
      • 4
    • Tarantool 1.6 — давай начнем

      Не так давно на Хабре была опубликована статья о NoSQL базе — «Tarantool 1.6 от первого лица». Уверен, в своих кругах эта база данных отлично известна и уже завоёвывает популярность. Уверен так же и в том, что есть те начинающие, руки не дошли, кто хотел бы попробовать Tarantool в действии. Именно для таких желающих я приведу несколько простых примеров, помогающих начать знакомиться с этим интересным продуктом. Как понятно из названия статьи — речь идет о версии Tarantool 1.6.
      Читать дальше →
      • +25
      • 32,3k
      • 5
    • Библиотека эмуляции терминала ROTE и Lua привязки

        boxshell

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

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

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


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

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

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

          • Перевод


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

          Читать дальше →
        • Lua API for D language

            Предисловие


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

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

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

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

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

              Привет всем!

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

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

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

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


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

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


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

                Циклы


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

                Читать дальше →
              Самое читаемое