タグ

luaに関するaki77のブックマーク (16)

  • ハイパフォーマンスngx_lua | メルカリエンジニアリング

    Site Reliability Engineering(SRE) Teamの@cubicdaiyaです。 今回は数あるnginxのサードパーティモジュールの中でも一際強力で、メルカリでも活用しているngx_luaの便利な活用方法や最適化集について紹介します。 ngx_luaは軽量スクリプト言語のLuaでnginxを拡張できるモジュールです。 nginxの設定ファイル内にLuaのコードを埋め込んだり、nginxの拡張モジュールをCではなくLuaで開発することができます。以下はngx_luaにおける「Hello, World!」です。 location / { content_by_lua 'ngx.say("Hello, World!")'; } 上記のロケーションにHTTPでアクセスするとnginxはボディが「Hello, World!」のレスポンスを返します。 なお、先月末にリリースさ

    ハイパフォーマンスngx_lua | メルカリエンジニアリング
  • Nginx + Lua から MySQL を使う - 昼メシ物語

    この記事は MySQL Casual Advent Calendar 2013 の 12 日目です。 みんな大好き Nginx + Lua ですが、その Lua から MySQL が叩けるとなると、Nginx だけでウェブアプリケーションが書けちゃうという夢が広がりますね。 難しそうというイメージがあるかもしれませんが、実は OpenResty を使うと、そんな環境が簡単に作れてしまうので、今日はその方法を紹介します。 ngx_openresty のインストール 今回は Ubuntu 12.04 での例ですが、ほとんど同様の手順で CentOS 6.5 でも動くことを確認しています。 *1 $ sudo apt-get -y install gcc make libpcre3-dev libssl-dev perl5 wget $ sudo apt-get -y install libmy

    Nginx + Lua から MySQL を使う - 昼メシ物語
  • nginx-lua-moduleでLuaスクリプト書いてみた - アルパカDiary Pro

    プロダクトでWebサーバ上の現在時刻出したい要件がありました。 これぐらいの処理ならアプリケーション介さずともnginxだけでやりたいですね。 現在時刻ヘッダーにつけるならnginx標準機能で出来そうなんですが、 深淵なる理由からコンテンツとして欲しいとのこと。 今後、Nginx+Lua試してみたいなーという要件もありましたし、 せっかくなのでこの機能をLuaスクリプトで書いてみることにしました。 NginxでLuaを動かす環境 まず環境整えるのが若干大変でした。*1 以下のような手順でインストールするようです。 LuaJITインストール ngx_devel_kitインストール lua-nginx-moduleインストール ライブラリのパスなど気をつけないとハマるかもしれませんね。 nginxレシピ opscodeのnginxクックブックにはluaをインストールするレシピもありました。 し

    nginx-lua-moduleでLuaスクリプト書いてみた - アルパカDiary Pro
  • Nginx + mod_lua で認証フィルタを作ってみる

    画像サーバーなどでログインチェックを Apache + mod_perl で実装していましたが、古代のクライアントへの対応はもう不要だろうということで、mod_perl やめたいし、もっとシンプルな実装にできそうだから nginx + mod_lua を試してみようとやってみました。 キャッシュとして memcached を使いたかったので https://github.com/agentzh/lua-resty-memcached も込で全部入れてくれる OpenResty をインストールしました。 OpenResty のインストール $ tar xvf ngx\_openresty-1.4.2.9.tar.gz $ cd ngx\_openresty-1.4.2.9 $ ./configure --prefix=/opt/ngx\_openresty-1.4.2.9 --with-lu

    Nginx + mod_lua で認証フィルタを作ってみる
  • RedisのLuaスクリプティング機能について – Rest Term

    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言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作

    RedisのLuaスクリプティング機能について – Rest Term
  • RedisのLuaで時間のかかる処理をするとどうなるか? - (ひ)メモ

    Redis は基的にシングルスレッド、イベントドリブンモデルなので、時間のかかるLua スクリプトを実行したらどうなるかというのは想像に難くないのですが確認してみました。 Redis は 2.6.14 です。 redis-cli eval 'while true do print("hello") end' 0な感じのを実行します。 実行中に、別クライアントから GET, INFO, PING すると全てブロックされて結果が返ってきません。 redis.conf で lua-time-limit 5000 と設定している場合は、5秒後に redis-server のログに [18068] 22 Jul 13:51:23.798 # Lua slow script detected: still in execution after 5000 milliseconds. You can t

    RedisのLuaで時間のかかる処理をするとどうなるか? - (ひ)メモ
  • Using ngx_lua / lua-nginx-module in pixiv

    https://ntt-developers.github.io/ntt-tech-conference/2022/ 従来は Docker がコンテナエンジンとして幅広く利用されてきましたが、最近は KubernetesDocker 対応を打ち切るなど、風向きが変わってきました。 セッションでは、Docker に代わって普及しつつあるコンテナエンジンである containerd について、Docker との違いや移行方法を紹介します。 P2P でのイメージ配布など、最新の機能についても紹介します。

    Using ngx_lua / lua-nginx-module in pixiv
  • Redisを使ったレコメンド機能の実装 - maaash.jp

    それRedisでできるよ、期でしょうか。 最近Redisでレコメンド機能をつくってみたのでご紹介です。 ここで”レコメンド機能”というのは、 Amazonでいう”この商品を見たお客様はこれも見ています”や、ブログの関連記事を出す機能のこと。 user:1がproduct:Aをみたときに、product:Aに似ているproduct:Bをレコメンドしたい。 product:Aとproduct:Bがどれくらい似ているか:類似度 を算出した後は、 Redis得意のSorted Setを使って類似度のランキングをつくれば 似ているproductを出すことができます。 類似度の算出にはいろいろ方法があるようですが、 Redisのデータ構造と相性のよい Jaccard [wikipedia]という方法を使いました。 この例に適用すれば、 product:Aを見たユーザー群(RedisのSet)と、pro

  • Yak Shaving: Adding OAuth Support to Nginx via Lua - ChairNerd

    Jobs at SeatGeek We are growing fast, and have lots of open positions! Explore Career Opportunities at SeatGeek **TL;DR:** We built OAuth2 authentication and authorization layer via nginx middleware using lua. If you intend on performing this, read the docs, automate what you can, and carry rations. As SeatGeek has grown over the years, we’ve amassed quite a few different administrative interfaces

  • 変換してLuaのコードを生成するCoffeeScriptライクな言語·MoonScript MOONGIFT

    MoonScriptはCoffeeScriptライクな記法でLuaのコードを生成するソフトウェアです。 個人的にもCoffeeScriptは好きでよく使っています。そんなCoffeeScriptにインスパイアされて開発されたのがMoonScriptです。CoffeeScriptライクな記述をするとLuaに変換してくれます。 こちらはMoonScriptのコード。確かにCoffeeScriptに似ています。 右側がLuaに展開したコード。MoonScriptのが分かりやすく、コード量も少なそうです。 関数を使う例です。 これはどちらもさほど変わらない印象です。 importという構文がサポートされています。 構文は若干拡張されている感はありますが、CoffeeScriptが書ける人であれば十分理解できるのではないでしょうか。サンプルは特化した例を記述しているとは思いますが、Luaに比べるとM

    変換してLuaのコードを生成するCoffeeScriptライクな言語·MoonScript MOONGIFT
  • 1日1億超のトラフィックをさばく広告配信システム「AdStir」を支える技術とエンジニアの実態を探る

    そんな中、モーションビートが提供する「AdStir」(アドステア)は、特にスマートフォン向けに特化した広告配信サービスとして注目を集めているものの一つである。AdStirは、アドサーバ機能、複数のアドネットワークを一元管理して広告配信の最適化を行うイールドオプティマイゼーション(SSP)機能を持ち、近年特に関心が高いリアルタイム入札(RTB)にも対応したサービスとなっている。 スマートフォンユーザーの急激な増加に伴う多様な広告配信ニーズの増大により、その基盤となるシステムに対しては高い信頼性と可用性、そして高速性が求められている。AdStirでは、どのような技術と体制によって、その要求に応えているのだろうか。モーションビート、メディアプラットフォーム事業部でAdStirの開発に携わる、メディアプラットフォーム事業部の落合省治氏とfukata氏に話を聞いた。 LVSをベースにnginxとLu

    1日1億超のトラフィックをさばく広告配信システム「AdStir」を支える技術とエンジニアの実態を探る
  • Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?)

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 といいつつも、そこまで大したことはしていない。 luaという高速に動作する組み込み系のスクリプト言語で遊んでみたかったのと、それだったmod_luaで遊んでみればいいなと思っただけである。で、実際にmod_luaをコンパイルして遊んでみた。コンパイルオプションは以下。 ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --enable-modules=all --enable-mods-shared=all --enable-mpms-shared='prefork worker event' -

    Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?)
  • プログラマならば使うべき:GitHubでDNS管理ができる Luadns | Everyday Deadlock

    さきほどTwitterで流れてきたのでたまたま見つけたのですが、LuadnsというDNSホスティングサービスがかなり凄いです。Luaスクリプトでゾーン設定を書いてGitHubにpushするだけで即座にDNS設定ができてしまいます。 DNSホスティングサービスというと、多くの場合ブラウザを開いてログインしてコントロールパネルからポチポチと入力して送信して、、、という手順を踏まないと設定が更新できないわけですが、Luadnsは違います。example.com.lua ファイルをEmacsやVim(やその他エディタ)で開いてLuaスクリプトを書き、git commit & git push で設定が完了してしまいます。push にフックして Luadns の設定が自動的に更新されます。 マウスまで手を動かすのが無限に遠く感じられるプログラマにとっては、これほど素早く簡単にDNSが設定できるのはか

  • Lua | NGINX

    Analytics cookies are off for visitors from the UK or EEA unless they click Accept or submit a form on nginx.com. They’re on by default for everybody else. Follow the instructions here to deactivate analytics cookies. This deactivation will work even if you later click Accept or submit a form. Check this box so we and our advertising and social media partners can use cookies on nginx.com to better

  • lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案 - hibomaの日記

    Nginxは非常に強力なhttpdですが、独自のモジュールを実装しようとするとこれまた非常に敷居が高い印象です。 追記 この記事よりも前に http://openresty.org/#DynamicRoutingBasedOnRedis でほとんど同じ内容のエントリが書かれていました。こちらも参照ください モジュールの開発はむずかしい まず開発用のドキュメントはほとんどありません。必然 既存のモジュールをお手としますが、コメントも少ないのでソースだけが頼りです。 {ファイル,ネットワーク} I/O を伴う処理では、Nginxのノンブロッキング/イベントドリブンのアーキテクチャにのっとってコールバックを駆使したCで実装する必要があり、LLで育ったゆとり脳では太刀打ちできませんでした lua-nginx-module が代わりになるかも なんらかのNginxモジュールを開発しなければならない

    lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案 - hibomaの日記
  • Lua 5.1 リファレンスマニュアル

    by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2006 Lua.org, PUC-Rio. All rights reserved. 0 - 日語訳について この文書は、 Lua 5.1 Reference Manual を原著者に無断で日語に訳した、非公式の Lua 5.1 リファレンスマニュアルである。 誤訳の指摘は歓迎するので、yuno@users.sourceforge.jp へよろしく。 1 - 概要 Luaは拡張プログラミング言語である。 データ記述機能を持ち、汎用の手続き型プログラミングをサポートするようデザインされた。 オブジェクト指向プログラミング、関数型プログラミング、データ駆動型プログラミングもサポートしている。 Luaは、パワフルで軽いスクリプト

  • 1