• LUA в nginx: горячий кеш в памяти


      Решил пополнить копилку статей на Хабре про такой замечательный ЯП, как lua, парой примеров его использования под капотом nginx. Разбил на два независимых поста, второй тут.

      В этом посте nginx используется как «горячий кеш» неких постоянно пополняемых данных, запрашиваемых клиентами по интервалу с опциональным группированием (некий аналог BETWEEN и GROUP BY/AGGREGATE из SQL). Подгрузка данных в кеш осуществляется самим же lua+nginx из Redis. Исходные данные в Redis складываются ежесекундно, а клиенты хотят их от сих до сих (интервал в секундах, минутах, часах...) с агрегацией по N (1<=N<=3600) секунд, отсортированные по дате и в json формате.
      С хорошим hitrate на имеющейся машине получается обеспечить 110-130к «хотелок» в секунду, правда с плохим — только 20-30к. Что, в общем-то, тоже приемлемо для нас на одной инстанции nginx.
      Читать дальше →
      • +58
      • 24,5k
      • 3
    • LUA в nginx: слегка интеллектуальный firewall


        Данный пост является продолжением применения lua в nginx.

        Там обсуждалось кеширование в памяти, а тут lua будет использоваться для фильтрации входящих запросов в качестве этакого фаервола на nginx-балансере. Нечто подобное было у 2GIS. У нас свой велосипед :) В котором разделяем динамику и статику, стараемся учесть NAT и белый список. И, конечно же, всегда можно навернуть еще специфичной логики, что не выйдет при использовании готовых модулей.
        Данная схема сейчас спокойно и ненапряжно (практически не сказывается на использовании cpu) обрабатывает порядка 1200 запросов/сек. На предельные величины не тестировалось. Пожалуй, к счастью :)
        Читать дальше →
      • Что такое скрипты и с чем их едят — Lua & C++

        • Tutorial
        Добрый день, Хабрахабр!
        Решил написать этот топик на тему скриптов

        Что нужно знать?


        • С++ на приличном уровне (в уроке будут шаблоны — template)
        • Lua, очень легкий скриптовый язык. Советую этот урок.

        Почему писать диалоги игры в .cpp файле было большой ошибкой


        Если вы разрабатывали большие проекты (к примеру, масштабные игры), замечали, что с каждой новой сотней строк кода компиляция идет медленней?
        В игре создается больше оружия, больше диалогов, больше меню, больше etc.
        Одна из самых главных проблем, возникающих в связи с нововведениями — поддерживать бессчетное множество оружия и бейджиков довольно сложное занятие.
        В ситуации, когда просьба друга/босса/напарника изменить диалог или добавить новый вид оружия занимает слишком много времени, приходится прибегать к каким-то мерам — например, записи всей этой фигни в отдельные текстовые файлы.
        Почти каждый геймдевелопер когда-нибудь делал карту уровней или диалоги в отдельном текстовом файле и потом их считывал. Взять хотя бы простейший вариант — олимпиадные задачи по информатике с файлом ввода

        Но есть способ, на голову выше — использование скриптов.

        Читать дальше →
      • Использование Lua и C++ для обработки и хранения данных

        Код статьи можно посмотреть здесь.
        Чем так хорош Lua?

        Когда-то я разрабатывал свою игру и задался вопросом: а какой формат данных лучше использовать для конфигурационных файлов?
        Ведь удобно, когда создаёшь какой-либо объект, задавать различные начальные параметры не в самом коде, а в отдельных файлах. Это позволяет изменять некоторые параметры объектов без рекомпиляции, да и вообще даёт возможность менять их людям далёким от программирования.
        Разработчики используют разные форматы: одни используют JSON, другие — XML, либо другие форматы данных. Ну а некоторые вообще хранят данные в .txt файлах или пишут свои парсеры. После рассмотрения различных форматов я остановился на Lua.

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

        Вот, что выделяет Lua на фоне других форматов:
        • Lua легко использовать без дополнительных зависимостей (кроме одной библиотеки Lua и трёх .h файлов).
        • В Lua файлах данные можно инициализировать с помощью математических выражений или функций, написанных на Lua. Например:
          some_variable = math.sqrt(2) * 2
          some_variable2 = 64 * 16 - 32
          

        • Lua — очень быстрый язык, который к тому же не занимает много памяти.
        • У Lua лицензия MIT, которая позволяет использовать этот язык как в бесплатных, так и в коммерческих проектах, причём без всякой возни с бумагами. Как написано на сайте: «просто скачайте и пользуйтесь».
        • Lua комплируется практически везде, т.к. он написан на чистом C без использования дополнительных библиотек.
        • Данные можно хранить и сортировать в приятном глазу виде. Их легко читать и модифицировать в любом текстовом редакторе.

        Начнём с простого примера, а затем я перейду к реализации класса.
        Читать дальше →
      • Создание несложного бота для WoW, программирование маршрутов

        Введение


        Прочитал недавно пост, в котором автор рассказал о своём боте для торговли на аукционе в игре World of Warcraft. Его персонаж бегал челноком на небольшие расстояния и выполнял конкретные действия, строго заданные в управляющей программе. Воспользовавшись его идеями, я решил пойти немного дальше: пусть персонаж будет способен бегать по маршруту длительностью хотя бы пять минут, при этом должна быть возможность записывать маршрут и выполняемые действия извне, не прибегая к изменению самой программы управления. Описанное мной является развитием поста-оригинала, тем не менее я постарался, чтобы его чтение не было обязательным.
        В посте я опишу
        1. Процесс создания тривиального аддона для пользовательского интерфейса WoW на языке Lua
          • Сериализация данных для передачи между частями системы
          • Передача с помощью цвета пикселей
        2. Процесс управления персонажем на языке AutoIt
          • Программа для записи выполняемых действий
          • Программа для воспроизведения
          • Мат.расчеты направления перемещения
          • Почему не стоит прибегать к чтению/записи памяти процесса
        3. Программа управления (ро)ботом с командами, понятными непрограммисту

        Читать дальше →
      • Lua за 15 минут

          image

          Для всех, кто хотел разобраться с Lua (скриптовый язык для разработки игр и не только, список), но никак не находил времени, Tyler Neylon приготовил небольшой подарок:

          http://tylerneylon.com/a/learn-lua/

          Посвящается всем, кто предпочитает один большой список из говорящих самих за себя сниппетов кода (с небольшими комментариями к 95% case'ов) длинным мануалам с огромной иерархией. Очень удобно для тех, кто уже умеет программировать и просто хотел бы разобраться с новым для себя языком. Весь «мега-сниппет» на английском, но примеры несложно читаются.

          P.S. А для всего остального есть Hyperpolyglot.
        • Ой, у вас баннер убежал!

          Ну. И что?
          Реклама
        • MySQL On air. Мониторим SQL запросы

          • Tutorial
          image
          Разбираясь как работает та или иная CMS приходится использовать различные инструменты, облегчающие работу.
          Наиболее интересная тема — это работа с баз(ой|ами) данных. Естественно для изучения запросов и результатов запросов нужно использовать что-то универсальное. Что-то, что будет работать стабильно как с известным движком, так и с самописной системой.
          Предположим у вас оказалась система управления контентом и вам необходимо посмотреть как реализовано добавление новых пользователей или смена паролей.

          Большинство инструментов позволяющих мониторить работу с БД являются платными [раз, два]. Я хотел что-то более легкое и удобное, поэтому выбрал mysql-proxy. Хотя возможности утилиты гораздо шире чем мне требуется, я опишу лишь основное. Работает как под Windows, так и под Unix системами.
          Как я это использую?
        • Учим язык, смотря сериалы: vlc + lua + stardict + wordnet + anki = l'amour

            Очень уж мне нравится смотреть сериалы, а еще я учу с их помощью языки. И если раньше я прилежно останавливал видео на непонятном месте, перематывал назад, включал субтитры и забивал незнакомые слова в Анки, то сейчас я делаю то же самое. Разве что лень заставила этот процесс автоматизировать, что привело к созданию расширения Say It Again для проигрывателя VLC со следующими особенностями:

            • Навигация по субтитрам (переход к предыдущей, следующей фразе) — клавиши y, u;
            • Сохранение слова, его транскрипции и перевода вместе с контекстом (см. скриншот) — клавиша i;
            • Функция «Еще раз»: переход к предыдущей фразе, показ субтитра и пауза — клавиша backspace;
            • Подключение любых словарей в формате Stardict (в сети лежат словари из Lingvo x3);
            • Экспорт в Anki или другую программу, понимающую файлы в формате csv;


            Say It Again screenshot


            Зачем все это нужно и как это работает?
          • Lua: как перестать встраивать и начать жить

              Lua: как перестать встраивать и начать жить



              За Lua прочно закрепилась слава полуязыка — инструмента, который при случае можно встроить, чтобы заскриптовать приложение, написанное на компилируемом языке вроде С++. Тем не менее Lua является вполне самостоятельным языком, имеющим свой интерпретатор, возможность создания модулей, большое число библиотек, и при этом данный ЯП обладает минимальным размером среди аналогов. Проще говоря у нас есть все, чтобы создавать такие же приложения как на perl, python, и вообще любом другом распространенном языке программирования.

              Читать дальше →
            • Пишем на iPad'е под iPad

                Недавно в App Store появились первые игры написанные прямо на iPad, что лично меня очень радует. Можно сказать, что планшет становится не только средством потребления контента, но и его производства.

                image
                Под катом я расскажу, как и где это сделано, покажу простенький Hello World.

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