Declarative Internal DSLs in Lua A Game-Changing Experience Alexander Gladysh, ag@logiceditor.com LogicEditor.com CTO, co-founder Lua Workshop 2011 1 / 64 Outline Introduction Ad-hoc approach A case study The ”proper” solution Where do we use DSLs ourselves? Why game-changing? Questions? 2 / 64 Internal Declarative DSL in Lua namespace:method "title" { data = "here"; } 3 / 64 ...Without sugar _G["
What is the point of lua_lock and lua_unlock? The following implies it's important: LUA_API void lua_gettable (lua_State *L, int idx) { StkId t; lua_lock(L); t = index2adr(L, idx); api_checkvalidindex(L, t); luaV_gettable(L, t, L->top - 1, L->top - 1); lua_unlock(L); } LUA_API void lua_getfield (lua_State *L, int idx, const char *k) { StkId t; TValue key; lua_lock(L); t = index2adr(L, idx); api_ch
require "Cocos2d" require "Cocos2dConstants" local GameScene = class("GameScene",function() return cc.Scene:createWithPhysics() end) function GameScene:ctor() end function GameScene.create() local scene = GameScene.new() return scene end -- レイヤーの作成 function GameScene:createLayer() end -- パドルの作成 function GameScene:createPaddle() end -- ボールの作成 function GameScene:createBall() end -- ラベルの作成 function G
ホーム < ゲームつくろー! < Lua組み込み編 その4 会得必須!Luaの真髄「テーブル」 C言語との親和性、複数の戻り値のサポート、コルーチンと魅力的な機能を沢山持つLuaですが、実はLuaの真髄は「テーブル」にあります。 テーブルというのは、イメージするなら以下のような名前がついた変数の塊です: 各変数それぞれではなくてこの塊が一つのテーブルです。テーブルはLuaが扱うことができる変数型の一つで、保持している値一つ一つに必ず名前が付けられます。値はLuaが定義する型ならば何でも入れられます。Lua側でテーブルを作るには次のようにします:
local lapis = require "lapis" local app = lapis.Application() app:match("/", function(self) return "Hello world!" end) return app lapis = require "lapis" class extends lapis.Application "/": => "Hello world!" How does it work? With OpenResty, Lua is run directly inside of the Nginx worker using LuaJIT, giving you the smallest barrier between the webserver and your code. Have a look at Web Framewor
OpenRestyはどれくらいお気軽なウェブアプリ環境なのか。 まとめの後に追記を追加。 OpenResty は Nginx をダイナミック・リバースプロキシーサーバに仕立て上げたり、テンプレートエンジンを仕込んでバックエンドの JSON API サーバにリクエストしたレスポンスデータを元にレンダリングして返したり、と色々便利に使えるお気楽ウェブアプリ環境なのだけれど、画像処理系のCPUに負荷のかかりそうなものでもお気軽にいけるのかなとふと疑問に思ったの実験してみる。 OpenResty や LuaRocks のインストールは homebrew でさっくり入るし、windows はパソコン初心者並の知識しかないのではしょる事にして、とりあえずテーマを決める。 「nginx 画像処理」でググってみると「簡単!リアルタイム画像変換をNginxだけで行う方法 | cloudrop」ってのが一番上
Install your own Firefox Sync server with PHP-FPM and Nginx Jean Baptiste FAVRE 2011 february La version Française est disponible ici: Installer son propre serveur Firefox sync avec PHP-FPM et Nginx Introduction Mozilla foundation offers synchronisation facilities, so that you can get back you browser environment when you work on another desktop. If you can just use Mozilla's storage infrastructur
Nginxのlua-nginx-moduleでドキュメントルート(root)は変更できるのかと、同僚 id:lamanotramaさんに質問もらってたので検証です。 ちょっと前に書いた lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案 と比べて小粒なエントリです。こちらは proxy_passを動的に変更する例でした。 結果から言うとできる ホスト名を見て 適当に ドキュメントルート $root を振り分けるサンプル設定です worker_processes 1; error_log /dev/stderr debug; events { worker_connections 256; } http { server { listen 8080; server_name localhost; location / { s
参考 http://wiki.nginx.org/Phases (2016.3追記)上記のURLは ページがなくなっていました。残念ながらオフィシャルページで似た記載が見当たりません。下記あたりを参照してください。 http://www.aosabook.org/en/nginx.html#sec.nginx.internals http://www.nginxguts.com/2011/01/phases/ http://www.programering.com/a/MzN4MzMwATY.html http://www.slideshare.net/joshzhu/nginx-internals/37 lua-nginx-module がフックする処理 lua-nginx-module は、上記の nginx の Phase のうち、Rewrite, Access, Content,
Nginxは非常に強力なhttpdですが、独自のモジュールを実装しようとするとこれまた非常に敷居が高い印象です。 追記 この記事よりも前に http://openresty.org/#DynamicRoutingBasedOnRedis でほとんど同じ内容のエントリが書かれていました。こちらも参照ください モジュールの開発はむずかしい まず開発用のドキュメントはほとんどありません。必然 既存のモジュールをお手本としますが、コメントも少ないのでソースだけが頼りです。 {ファイル,ネットワーク} I/O を伴う処理では、Nginxのノンブロッキング/イベントドリブンのアーキテクチャにのっとってコールバックを駆使したCで実装する必要があり、LLで育ったゆとり脳では太刀打ちできませんでした lua-nginx-module が代わりになるかも なんらかのNginxモジュールを開発しなければならない
4. Luaとは ブラジルの Pontifical Catholic University of Rio で開発されているプログラミング言語 埋め込み型のプログラミング言語として開発され、 ゲーム業界を中心に浸透、現在は汎用的なプログラ ミング言語として一定の地位を得ている ガーベジコレクション、コルーチン 6. OpenResty nginx-lua の現在のメンテナの agentzh (章亦春さ ん) が提供しているバンドル つぎのモジュールが全部入り array-var / auth-request / coolkit / echo / encrypted-session / forminput / headers-more / iconv-nginx / lua / memc / postgres / redis / redis2 / set-misc / srcache / xss
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く