#nginxbook
![Practical nginx lua in KAYAC](https://cdn-ak-scissors.b.st-hatena.com/image/square/2581ef225d0b22aae4863ddefb73277ca7bedfd0/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fe10dd3d3125649329ed9691f57421c63%2Fslide_0.jpg%3F5856116)
isuconアプリを書いてみましたシリーズ。 生でOpenresty+Luaで書いても良かったんですが せっかくなのでLapisというWebフレームワークを使ってみました。 実は自分も初触り。 最初にLapisの概要など http://leafo.net/lapis/ LuaのWebアプリケーションフレームワークです。*1 バックエンドはOpenresty(Nginx)を利用しています。既に速そうな感じがしますね…! WebFrameworkBenchmarksでも割と上位にいます。 Lapis、実は生のLuaスクリプトではなく moonscript で書くのを推奨しているようです。 JavaScriptにおけるCoffeeScriptのようなものですね。 構文も似ているのでJS書いている人には取っ付き易いかもしれません。 コーディング/サーバ起動 moonスクリプトを書いたあとに moo
lua-users.org is an internet site for and by users of the programming language Lua. To find out what Lua is and for documentation, downloads, mailing list info, etc. please visit the official Lua web site. The lua-users.org web is not affiliated with Tecgraf. Currently available resources: lua-users wiki - collaborative web site lua-l archive - searchable web archive of the official Lua mailing li
ネットで、pcallを使うと遅くなると書いているサイトがあった。 その仕組みからいえばパフォーマンスに大きな影響を与えないだろうという予想があったので、調べた。予想そのままな結果になったため新規性は無いが、記録として書く。 結論 pcallは呼び出しコストは使用しない場合と比較すれば高いが、驚くほどではない。 また、内容の処理時間自体は特に差が無い。 呼び出しコストを調べる ベンチマーク pcallの呼び出しが通常の関数呼び出しと比較してどれくらいパフォーマンスに影響するかを調べた。 関数を繰り返し呼ぶコードの計算時間を、pcall呼び出しか否かで比較した。 function testfunc() end local start = os.clock() for i = 0, 10000000 do -- with pcall pcall(testfunc) -- without pcal
How Tarantool works Tarantool keeps all the data in random-access memory (RAM). Solutions of this class are fast, but they often lack data persistence. Tarantool helps overcome these problems. Try Tarantool to see how fast, flexible, and scalable it is. Download When to use in-memory? In-memory solutions are very fast because they work in RAM. This helps you avoid overhead associated with caching
Lua のコルーチンはとても便利ですが、意外とあんまり使われていないようなので、簡単な使い方をまとめてみたいと思います。 基本 Lua コルーチンは、関数に対して「途中で抜けて、あとで戻る」ための機能を追加した物です。 coroutine.yield コルーチンの中心的な機能である「途中で抜ける」には coroutine.yield という関数を使います。 function ex1 () coroutine.yield "HELLO!" coroutine.yield "HELLO AGAIN!!" return "SEE YOU!" end こんな風に使うと、関数の途中で抜けてそのときに、返り値として "HELLO!" や "HELLO AGAIN!!" という文字列を返します。 ただし、ここで定義した ex1 という関数はこのままでは「ただの関数」なので、この yield は使えません
こんにちは、@tkuchiki です。 このエントリーは tech.kayac.com Advent Calendar 2013、9 日目のエントリーです。 本エントリーでは、弊社で主に利用している Web サーバ (Nginx) の bundle OpenResty について簡単に紹介したいと思います。 OpenResty OpenResty (ngx_openresty) は、lua-nginx-module を始めとする多数の 3rd party module を内包した Nginx です。 作者は、lua-nginx-module のメンテナを務める agentzh さんです。 lua-nginx-module Nginx を Lua / LuaJIT で処理するためのモジュールです。 API は 全て Non-Blocking I/O で書かれています。 使用したモジュール 以下
このリファレンスマニュアルは Lua 言語の公式の定義です。 Lua プログラミングの完全な導入には Programming in Lua を参照してください。 スタート · 目次 · 索引 Copyright © 2011 Lua.org, PUC-Rio. Freely available under the terms of the Lua license. by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2011 Lua.org, PUC-Rio. Freely available under the terms of the Lua license. 目次 · 索引 0 – 日本語訳について この文章は、 Lua 5.2 Reference Manual を原著者に
the Lua interpreter built into Redis 僕のRedisについての知識はv2.2くらいで止まっていたので、それ以降のRedisに備わった機能を調べているんですけど、その中でもv2.6からサポートされたLuaスクリプト実行環境について今回は整理します。 技術Wikiの方にもRedisについてのメモを残しています。 * Redis – Tech Note 環境 CentOS 5.8 (x86_64) Redis 2.6.10 (malloc=jemalloc-3.2.0 bits=64) Pythonクライアント (redis-py 2.7.2) ※ Redis 2.6で利用できるLuaのバージョンは5.1です。 Lua言語について Lua – Wikipediaによると、 Lua は、C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作
You’ve heard that Redis has an embedded scripting language, but haven’t given it a try yet? Here’s a tour of what you need to understand to use the power of Lua with your Redis server. Hello, Lua! Our first Redis Lua script just returns a value without actually interacting with Redis in any meaningful way: This is as simple as it gets. The first line sets up a local variable with our message, and
luaのテーブルは配列用のエントリとハッシュ(連想配列)用のエントリを別々2つを持ってて、別々に管理している、、、っていうのは何となくは知っていたのだけれど、具体的にどうであるかとか全然分かってなかった。ので、最初 Luaで空テーブルかどうか判定する -- sh1.2 pyblosxom これ見た時「ん? #でlenを調べちゃダメ?」とか初心者丸出しのことを考えてしまった。 実際やってみるとわかるけど、 > array = {11,22,33} > print(#array) 3 > hash = {a=1, b=2} > print(#hash) 0 となって「どひーん」となる。要するにlen(#)は array側しか見てくれていなくって、hashの要素数なんて知らん*1仕様になっている。結局はshunuhsせんせーのやっていた通り next()が一番良い解法になりそうな感じ。 中はどう
こんにちは。開発部最後の良心、mikioです。今回はLua処理系の並列化とそこでのKyoto Cabinetの利用法についてご紹介します。 サーバサイドスクリプティングといえばLua Kyoto CabinetのLuaバインディングは後回しにしてKyoto Tyrant的なサーバの設計を進めていたのですが、やはりそのサーバにもスクリプティング機能を持たせたくなりました。つまり、サーバがデフォルトで提供する機能群だけでなく、ユーザがスクリプト言語で記述した任意の機能を追加して利用できるようにするということです。 Tokyo TyrantではLua拡張と呼ばれる機能を用いてそれを実現しています。サーバの起動時にLuaのスクリプトを記述したファイルを読み込ませて、そこで定義した関数をリモートから呼び出せるようにしています。そこで実行されるLuaの処理系にはTTが管理するデータベースを操作するため
Nginxは非常に強力なhttpdですが、独自のモジュールを実装しようとするとこれまた非常に敷居が高い印象です。 追記 この記事よりも前に http://openresty.org/#DynamicRoutingBasedOnRedis でほとんど同じ内容のエントリが書かれていました。こちらも参照ください モジュールの開発はむずかしい まず開発用のドキュメントはほとんどありません。必然 既存のモジュールをお手本としますが、コメントも少ないのでソースだけが頼りです。 {ファイル,ネットワーク} I/O を伴う処理では、Nginxのノンブロッキング/イベントドリブンのアーキテクチャにのっとってコールバックを駆使したCで実装する必要があり、LLで育ったゆとり脳では太刀打ちできませんでした lua-nginx-module が代わりになるかも なんらかのNginxモジュールを開発しなければならない
Automated, browser-based testing is a key element of web application development, benefiting both simple and complex applications. Writing effective tests for browser-based apps can be a complex, tedious and often repetitive task. In this post, I will be discussing a general approach to write meaningful, loosely-coupled UI tests for web applications by going beyond the Page Object Design Pattern i
nginx + lua-nginx-moduleのインストール 手順を公式で確認すると、 を見ると、nginx_devel_kit、ngx_luaが必要とのこと。 nginxについては先日(2013-04-24)リリースされたnginx1.4.0を利用する。 git clone したり、 git checkout したり。 > mkdir -p /usr/local/sandbox/nginx_lua_module > cd /usr/local/sandbox/nginx_lua_module > > git clone git://github.com/simpl/ngx_devel_kit.git > git clone git://github.com/chaoslawful/lua-nginx-module.git > curl -O http://nginx.org/downl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く