• Nginx + Lua + Redis. Эффективно обрабатываем сессию и отдаем данные

      image
      Предположим, у вас есть данные, которые вы хотите кэшировать и отдавать, не используя тяжелые языки, как php, при этом проверяя, что пользователь аутентифицирован и имеет право на доступ к данным. Сегодня я расскажу, как, используя связку nginx lua redis, выполнить эту задачу, снять нагрузку с сервера и увеличить скорость отдачи информации сервером в десятки раз.
      Читать дальше →
    • «Хранимые процедуры» в Redis

      • Tutorial
      image

      Многие знают про возможность хранить процедуры в sql базах данных, про это написано немало пухлых руководств и статей. Однако мало кто знает, что схожие возможности имеются и в Redis, начиная с версии 2.6.0. Но так как Redis не является реляционной БД, то и принципы описания хранимых процедур достаточно сильно отличаются. Хранимые процедуры в Redis — практически полноценные Lua скрипты (на момент написания статьи в качестве интерпретатора используется Lua 5.1).
      Подробности тут
    • Lua 5.3 Справочное руководство


        Перевел на русский язык «Lua 5.3 Справочное руководство». Его chm-версию можно взять на файлообменнике.

        Собственно, переводил для себя, поэтому в текст оригинального руководства понаставил множество примечаний, как во всплывающих окнах, так и в виде текстовых вставок (со спойлерами и без них) мелким серым шрифтом на желтоватом фоне.

        Я не программист, базовых знаний у меня нет, так что везде, где «спотыкался» на терминах, старался таким образом облегчить себе понимание.

        Кроме того, для тех, кто, возможно, захочет что-то изменить, вложил в архив файлик Lua5.3.hhp — чтобы любой мог разобрать/собрать chm-файл программой HTML Help Workshop.

        Ну и наконец, я не знаю английского языка, переводил в основном онлайновыми программами перевода (с помощью программы QTranslate).
      • Использование Remote API в робосимуляторе V-REP



        V-REP представляет собой среду для симулирования (sandbox) различных видов роботов, при этом пользователю нет необходимости иметь физический доступ к реальной машине, что экономит деньги и время. Среда V-REP предоставляет удобный интерфейс для визуализации действий робота в трёхмерном виртуальном пространстве намного раньше, чем реальный прототип робота будет создан. При помощи данного руководства вы убедитесь, что для того, чтобы работать в данной среде, программисту не нужно иметь большого технического опыта в области роботостроения.

        Причиной создания данного руководства стало отсутствие (на то время) знаний языка Lua, на котором по умолчанию написаны все скрипты управления роботом, и его меньшая популярность. Цель данного руководства показать как пользоваться удалённым (Remote) API данной среды на примере языка Python.
        Читать дальше →
        • +7
        • 14,7k
        • 2
      • Asterisk Manager Interface в диалплане

          Как и все АSTERISK'еры я не раз сталкивался с проблемой того, что на PBX существует несколько транков, которые используются для исходящей связи. И как у многих, у моих заказчиков тоже часть этих транков является основными, а остальные играют роль резервных, на случай падения/занятости/чего-либо еще первых.

          Читать дальше →
        • Делаем игру с Gideros

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


          Читать дальше →
          • +16
          • 12,6k
          • 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,8k
            • 4
          • Tarantool 1.6 — давай начнем

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

              boxshell

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

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

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