Для обеспечения работы всех наших внешних продуктов мы используем популярный nginx. Это быстро и это надежно. Проблем с ним почти нет. Наши продукты также постоянно развиваются, появляются новые сервисы, добавляется новый функционал, расширяется старый. Аудитория и нагрузка только растет. Сейчас мы хотим рассказать о том, как мы ускорили разработку, неплохо увеличили производительность и упростили добавление в наши сервисы этого нового функционала, при этом сохранив доступность и отказоустойчивость затронутых приложений. Речь пойдет о концепции “nginx as web application”.
А именно, о сторонних модулях (в основном LUA), позволяющих делать совершенно магические вещи быстро и надежно.
Читать полностью »
Рубрика «Lua» - 19
Nginx на стероидах — расширяем функционал с помощью LUA
2013-10-29 в 10:26, admin, рубрики: Lua, nginx, Блог компании 2ГИС, системное администрирование, метки: lua, nginxЧто такое скрипты и с чем их едят — Lua & C++
2013-10-14 в 16:13, admin, рубрики: c plus plus, c++, game development, Lua, метки: c plus plus, game development, lua Добрый день!
Решил написать этот топик на тему скриптов
Что нужно знать?
- С++ на приличном уровне (в уроке будут шаблоны — template)
- Lua, очень легкий скриптовый язык. Советую этот урок.
Почему писать диалоги игры в .cpp файле было большой ошибкой
Если вы разрабатывали большие проекты (к примеру, масштабные игры), замечали, что с каждой новой сотней строк кода компиляция идет медленней?
В игре создается больше оружия, больше диалогов, больше меню, больше etc.
Одна из самых главных проблем, возникающих в связи с нововведениями — поддерживать бессчетное множество оружия и бейджиков довольно сложное занятие.
В ситуации, когда просьба друга/босса/напарника изменить диалог или добавить новый вид оружия занимает слишком много времени, приходится прибегать к каким-то мерам — например, записи всей этой фигни в отдельные текстовые файлы.
Почти каждый геймдевелопер когда-нибудь делал карту уровней или диалоги в отдельном текстовом файле и потом их считывал. Взять хотя бы простейший вариант — олимпиадные задачи по информатике с файлом ввода
Но есть способ, на голову выше — использование скриптов.
Использование Lua и C++ для обработки и хранения данных
2013-10-12 в 18:46, admin, рубрики: c++, game development, Gamedev, Lua, обработка данных, разработка игр, хранение данных, метки: c++, Gamedev, lua, обработка данных, разработка игр, хранение данныхКод статьи можно посмотреть здесь.
Чем так хорош 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 без использования дополнительных библиотек.
- Данные можно хранить и сортировать в приятном глазу виде. Их легко читать и модифицировать в любом текстовом редакторе.
Начнём с простого примера, а затем я перейду к реализации класса.
Читать полностью »
Определение веса значимости пользователей по отношению друг к другу на основании их действий (Tarantool+Lua)
2013-10-10 в 6:13, admin, рубрики: AnyEvent, Lua, perl, tarantool, Блог компании Mail.Ru Group, метки: AnyEvent, lua, perl, tarantoolЕсть система с множеством пользователей. Каждый пользователь системы может осуществлять действия по отношению друг к другу. На основании этих действий рассчитывается вес. Необходимо иметь возможность для каждого пользователя получать список остальных пользователей системы, отсортированный в порядке убывания веса. Характеристики весов у бездействующего пользователя меняться не должны.
В своей прошлой статье я описал базовые понятия и средства для начала роботы с тарантулом. В этой статье попробую уделить больше внимания использованию хранимых процедур в Тарантуле на примере одной игровой задачи.
Опять XMP тэги лиц. Все плохо, но это поправимо
2013-09-17 в 3:47, admin, рубрики: adobe, lightroom, Lua, Picasa, обработка изображений, фотоархив, метки: lightroom, Picasa, фотоархивНа хабре уже несколько раз поднимался вопрос про хранение метатегов распознаных лиц для фото-архива, к сожалению из приведенных рецептов ни один не оказался достаточно рабочим, да и гугление не помогло, поэтому пришлось писать свой велосипедик.
Оригинальные статьи: раз и два.
Все там написано хорошо и правильно, но счастья все равно нет.
Картинка для привлечения внимания:
Задача простая — отметить людей на фотографии и иметь возможность пользоваться этим в максимальном количестве мест любым удобным для меня способом.
Лица отмечать буду в пикасе, потому как привязка к гугловским контактам, кроссплатформенность, авто определение, хранение тегов внутри файла (с нюансами). А вот смотреть и использовать эти теги хочу везде в gallery3 потому что она это умеет, в lightroom потому что именно им пользуюсь как каталогизатором, в microsoft explorer потому как он у меня есть и в Microsoft Live Photo Gallery, просто потому что это второй популярный формат и почему бы и его тоже не использовать.
Кто тоже хочет заморочиться — добро пожаловать под кат.
Читать полностью »
Изучаем Tarantool + Lua
2013-09-02 в 6:42, admin, рубрики: Lua, nosql, tarantool, Блог компании Mail.Ru Group, метки: lua, tarantool
Хочу поделиться опытом изучения 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 приложения, поэтому если вам нужен портретный режим, то скорее всего придется потратить некоторое время на доработку.
Читать полностью »