Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

13 декабря в Москве пройдет Lua in Moscow Meetup

Блог компании Mail.ru GroupПрограммированиеООПLuaTarantool


В пятницу 13 декабря в московском офисе Mail.ru Group пройдёт открытый Lua митап — встреча сообщества Lua in Moscow, где можно обсудить Lua, его использование, проблемы, новые наработки, получить ответы на наболевшие вопросы. Наши докладчики поделятся победами, неудачами, помогут вам извлечь лучшее из своего опыта. Подробная программа под катом.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Просмотры817
Комментарии 0

Gmail Notifier своими руками

Настройка Linux
image Начал я обустраиваться под Linux'ом и обнаружил, что мне сильно не хватает тех красивых попапов, уведомляющих о приходе новой почты, которые умеет показывать Google Talk под Windows. Гугление обнаружило несколько готовых скриптов, позволяющих реализовать подобные попапы (среди прочих: bash-скрипт, bash-скрипт + python-скрипт, плюс pidgin умеет проверять почту), но все подходы слегка уродливы были мне не по душе и требовали доработки напильником, поэтому я решил сделать всё с нуля (пусть будет уродливое, но своё!). О вещах, с которыми я столкнулся в процессе и пойдёт речь…

Читать дальше →
Всего голосов 137: ↑128 и ↓9+119
Просмотры4.7K
Комментарии 111

Встреча в Донецке: Скриптинг, CSS, GAE, HD video

Я пиарюсь
Дата: 20.06.2009 12:00—15:00
Место: Донецк, ул. Артема 110, кофейня Изба-читальня

Неформальные доклады по 30-60 минут. Общение.

Скриптинг для desktop-приложений
python, lua,…
Константин Галайко

Нововведения в CSS3
css, html,…
Дмитрий Подгорный

www.HOTAROUND.com/ABOUT
python, gae, javascript,…
Артем Дударев

Веб-хранилище HD video
zfs, python, django, mediatomb, javascript,…
hd.litovchenko.com
Александр Литовченко

Пожалуйста, зарегистрируйтесь:
spreadsheets.google.com/viewform?formkey=cnU0dlBlc3VJbkNZR00zMkxyT1JvQ0E6MA
www.izba4i.com/meetings
Всего голосов 5: ↑5 и ↓0+5
Просмотры402
Комментарии 0

Добавление скриптинга в программу с помощью Lua

Разработка веб-сайтов

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

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

Примеров программ, которые используют Lua достаточно много. Далеко не полный список программ, использующих Lua, можно посмотреть здесь Lua Wiki и здесь Wikipedia
Читать дальше →
Всего голосов 58: ↑53 и ↓5+48
Просмотры17K
Комментарии 120

Контроль типов аргументов функций в Lua

Разработка веб-сайтов

Задача


Lua — язык с динамической типизацией.

Это значит, что тип в языке связан не с переменной, а с её значением:

= "the meaning of life" --> была строка,<br/>
= 42                    --> стало число

Это удобно.

Однако, нередко встречаются случаи, когда хочется жёстко контролировать тип переменной. Самый частый такой случай — проверка аргументов функций.

Рассмотрим наивный пример:

function repeater(n, message)<br/>
  for i = 1, n do<br/>
    print(message)<br/>
  end<br/>
end<br/>
 <br/>
repeater(3"foo") --> foo<br/>
                   --> foo<br/>
                   --> foo

Если перепутать местами аргументы функции repeat, получим ошибку времени выполнения:

> repeater("foo", 3)
stdin:2: 'for' limit must be a number
stack traceback:
	stdin:2: in function 'repeater'
	stdin:1: in main chunk
	[C]: ?

«Какой такой for?!» — скажет пользователь нашей функции, увидев это сообщение об ошибке.
Читать дальше →
Всего голосов 34: ↑27 и ↓7+20
Просмотры8.9K
Комментарии 20

nginx+FastCGI(over spawn-fcgi)+lua

Nginx
И так у нас есть задача. Заставить работать вместе легкий веб-сервер nginx и lua(в данном случае lua через wsapi(lua web server API)-fastcgi).
Что нам потребуется? Ну для начала голова на плечах. Ну то есть не то, что бы она особо нужна, но пригодится.
А далее… А далее сервер в нашем случае с GNU/Linux на борту(но думаю что сойдет и, скажем FreeBSD), мы будем рассматривать на примере Ubuntu GNU/Linux, так сложилось исторически.
интересно?
Всего голосов 8: ↑5 и ↓3+2
Просмотры7.4K
Комментарии 8

Основы декларативного программирования на Lua

Разработка веб-сайтов
Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

Отдельные части логики приложения часто бывает удобно описывать в декларативном стиле. Декларативный стиль программирования отличается от более привычного многим императивного тем, что описывается, в первую очередь, каково нечто а не как именно оно создаётся. Написание кода в декларативном стиле часто позволяет скрыть лишние детали реализации.

Луа — мультипарадигменный язык программирования. Одна из сильных сторон Луа — хорошая поддержка декларативного стиля. В этой статье я кратко опишу базовые декларативные средства, предоставлямые языком Луа.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Просмотры39K
Комментарии 18

Что можно ожидать от Луа 5.2?

Разработка веб-сайтов

Опубликована первая превью-версия Луа 5.2


Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

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

То, что выложено на публику даже не альфа — это просто снапшот рабочего кода. К релизу может измениться всё, что угодно.

Анонс здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61229

Дополненный список изменений от авторов здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61505

Скачать исходники можно здесь: http://www.lua.org/work/lua-5.2.0-work1.tar.gz

Сборка под Windows здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61528

Посмотреть исходники в онлайне можно, например, здесь.

Update: Выложен 5.2.0-work2, анонс здесь.
То, что написано ниже, скорее всего, будет интересно только людям, близко знакомым с языком.
Всего голосов 70: ↑60 и ↓10+50
Просмотры4.7K
Комментарии 57

Составление строк из множества частей

АлгоритмыLua
Перевод
Роберто Иерусалимши рассказывает, как эффективно соединять немодифицируемые строки.
Несмотря на то, что код написан на Lua, алгоритм подойдёт и для других языков, в которых строки нельзя изменять.
Читать дальше →
Всего голосов 38: ↑28 и ↓10+18
Просмотры8.1K
Комментарии 32

Пишем HTTP proxy сервер с плагинами

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

Итак, задача:
Хочется, чтобы каптчу вводить не приходилось. Хоть если играешь сам, хоть если играет за тебя бот, если ты спишь.
Дополнительное условие: 40 часов времени (ибо паника на корабле).
Желательное условие: установочный файл под Windows.
Ещё одно желательное условие: результат должен занимать не более мегабайта.
Решение задачи с нуля под катом
Всего голосов 49: ↑34 и ↓15+19
Просмотры15K
Комментарии 36

Пишем интерпретатор Brainfuck на Lua

Ненормальное программированиеLua
Из песочницы
Lua Logo
Каждый программист за свою жизнь успевает изучить множество языков, в нескольких из них специализируется и продолжает работать продолжительное время, а остальные проходят мимо. По разным причинам. Стоит ли тратить время на изучение новых языков, когда уже определился с областью в которой будешь работать? Лично я уверен что стоит, хотя, быть может, многие скажут что важны фундаментальные знания в computer science, а на каком языке писать код не критично. В сущности так и есть. И тем не менее изучать языки интересно и полезно.
Читать дальше →
Всего голосов 49: ↑39 и ↓10+29
Просмотры6.7K
Комментарии 15

Lua vs. JavaScript

Алгоритмы
SmallPic

Недавно я написал пост о том как сделать рейтрейсер. Код рейтрейсера тогда был написан на JavaScript. Мне стало интересно, как с этой же задачей справится Lua, а именно LuaJIT 2.0. Ниже результаты сравнения.

Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Просмотры15K
Комментарии 91

Lua+FFI vs. JavaScript

Алгоритмы
SmallPic

Эта небольшая заметка не претендует на звание статьи.

В прошлый раз я сравнивал LuaJIT 2.0 Beta 5 и JavaScript в различных браузерах на примере простого рейтрейсера. Результат сравнения: JavaScript в Chrome набрал 20,000 RPS и занял 1-ое место, а LuaJIT — 5,000 RPS и последнее место.

С выходом LuaJIT 2.0 Beta 6 ситуация изменилась: Lua легко вышел на первое место обогнав Chrome. Посмотрим как это получилось.

Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Просмотры7.5K
Комментарии 22

Тяжелая жизнь антиспамеров или как это происходит на самом деле

Блог компании Mail.ru Group
Поводом для этой публикации послужили недавние серьезные изменения, внесенные в механизм борьбы со спамом в рамках нашего почтового сервиса. Нам хочется поделиться новостью, но не в форме сухого пресс-релиза. Поэтому мы решили рассказать о том, как устроен АнтиСпам в Почте@Mail.Ru, и конечно — с удовольствием ответить на ваши вопросы. Итак…

Архитектура антиспама Mail.Ru


Собственный антиспам в Mail.Ru существует уже много лет. Желание разработать собственный продукт вполне объяснимо, т.к. на определенном этапе развития проекта требования к качеству и масштабируемости механизма борьбы со спамом стали слишком велики, чтобы их могли удовлетворить даже очень сильно кастомизированные «чужие» продукты. Конечно, какие-то сервисы и компоненты независимых поставщиков мы используем по-прежнему (например, для проверки писем на вирусную составляющую), но их роль сейчас уже не является определяющей.
Читать дальше →
Всего голосов 81: ↑63 и ↓18+45
Просмотры36K
Комментарии 90

Вызов Lua скриптов из Java и наоборот

Java
Из песочницы
image
Недавно столкнулся с такой проблемой и был крайне удивлен, что в сети материалов по ней очень мало, учитывая популярность Lua. Как выяснилось, существует довольно много библиотек для работы с Lua-скриптами из java, но все они имеют свои нюансы. Лучше всего, как выяснилось, использовать библиотеку LuaJava от тех же разработчиков, что написали Lua.
Читать дальше →
Всего голосов 2: ↑1 и ↓10
Просмотры12K
Комментарии 5

Lua что новенького в BitTorrent DHT?

Децентрализованные сети
Какое-то время назад я написал для Shareaza внешний DHT Tracker на Lua (GitHub). Для Shareaza это обычный локальный трекер, а по сути это BitTorrent DHT клиент, который позволяет ей качать торенты по магнет ссылкам без трекера.

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

Итак, что новенького мы наловили в BitTorrent DHT.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Просмотры2.6K
Комментарии 10

Проксируем Cookies на Nginx при помощи модуля lua-nginx

Nginx


Я уже писал о том, как с помощью Nginx трансформировать контент на лету. С момента публикации статьи на базе описанного метода запущен и развивается реальный проект ecommerce. Помимо перевода и трансформации также реализован и SEO рерайт по заветам руководства для начинающих от Google.

Однако, до полной победы изделия русских программистов над заграничным контентом, не хватало одной небольшой, но очень важной вещи — проксирования Cookies.

В чем суть проблемы


Проблема заключается в том, что любой нормальный сервер приложений всегда выставляет Cookie, например для того, чтобы сохранять сессию клиента или корзину с его товаром. Если этот сервер (точнее его администратор) озабочен поддержанием определенного уровня безопасности, то он выставляет в теле Cookie домен и путь, например domain= backend.org; path=/path1. Наш Nginx запущенный в режиме Reverse Proxy замечательно меняет все ссылки в теле документов с backend.org на frontend.org, но не делает этого для кук! Это означает что браузер клиента отвергнет такие куки.

Этот вопрос с давних пор волнует умы администраторов nginx, в рассылках он всплывает по 1-2 раза в год. Большинство вопрошавших, по-видимому, решили свои проблемы подкручивая логику backendа, но не я! После очередного апдейта оригинального сайта стало понятно, что костыль с PHP + Curl тянуть больше невозможно и надо непременно найти решение с помощью Nginx!

Я вернул тему в рассылку, попутно перебирая варианты из ngx_http_perl_module и переменной $upstream_http_set_cookie, даже заглянул в дебри сорсов с призрачной надеждой написать модуль самому. Но все было неудачно пока в один прекрасный момент я не получил письмо от Mikhail Mazursky, который дал ценный совет. Благодаря этому совету я не только с легкостью решил задачу проксирования Cookie, но и получил новый инструмент, с помощью которого можно создать версию 2.0 своего проекта.

Решение


Название этого инструмента lua-nginx-module, который написан еще одним китайским самородком с корнями из Taobao. Из названия легко понять, что речь об языке скриптов Lua встроенном в Nginx — но это больше чем просто интерпретатор! Эти ребята создали полностью неблокируемую реализацию с производительностью десятки тысяч операций в секунду, которая имеет хуки ко всем событиям внутри Nginx. То что раньше можно было реализовать только написав свой модуль на C, теперь можно сделать несколькими строчками на Lua. Заинтересовались?
Тогда добро пожаловать под кат!
Всего голосов 64: ↑63 и ↓1+62
Просмотры26K
Комментарии 18

Codify: нативная среда разработки для iPad

Разработка под iOS
В App Store появился редактор Codify — первая среда разработки под iPad, с нативным интерфейсом и поддержкой тачскрина. Очень удобно: нажимаете пальцем на характеристики объекта — и видите всплывающее окно со списком вариантов. Но самое главное, что в любой момент написанный код можно запустить, чтобы на ходу проверить работу акселерометра и мультитача. Никаких больше мучений с эмуляторами!



Codify построен на языке Lua, это простой и элегантный язык программирования, который хорошо подходит для создания игр под iPad.
Читать дальше →
Всего голосов 50: ↑42 и ↓8+34
Просмотры3.5K
Комментарии 33