最近は Raspberry Pi で LuaJIT を少し触りましたが、 以前 Apache2.4.1 に mod_lua が追加されたときにも 少しだけ Lua を触っていました。
Lua が結構速いということで、 その時に 他の言語と 超簡単な速度比較をしていたのですが、 今回は LuaJIT も含めて Raspberry Pi 上で比較してみたいと思います。
$ time bash -c 'for ((i=0;i<1000000;i++)) do j=i; done' real 2m51.676s user 2m46.940s sys 0m3.620s $ time perl -e 'for($i=0;$i<1000000;$i++){$j=$i;}' real 0m2.782s user 0m2.740s sys 0m0.020s $ time lua -e 'for i=1,1000000 do j=i end' real 0m0.337s user 0m0.330s sys 0m0.010s $ time luajit -e 'for i=1,1000000 do j=i end' real 0m0.041s user 0m0.010s sys 0m0.000s
luajit は 速いですね。
変数を局所化した方が早くなるそうなので そちらもお試し。
$ time lua -e 'local i, j; for i=1,1000000 do j=i end' real 0m0.171s user 0m0.160s sys 0m0.010s $ time luajit -e 'local i, j; for i=1,1000000 do j=i end' real 0m0.022s user 0m0.010s sys 0m0.000s
かなり速くなりました。
よくあるネタですが、自分メモとして。
Const ssfDESKTOP = &H0 ' Desktop Const ssfPERSONAL = &H5 ' My Documents Const ssfMYPICTURES = &H27 ' My Pictures Const ssfWINDOWS = &H24 ' Windows Function GetNewFolderPath(IstrMessage, IlngRoot) GetNewFolderPath = "" Dim objWShell, objFolder Set objWShell = WScript.CreateObject("Shell.Application") Set objFolder = objWShell.BrowseForFolder(0, IstrMessage, 0, IlngRoot) If (Not objFolder Is Nothing) Then GetNewFolderPath = objFolder.Self.Path End If Set objFolder = Nothing Set objWShell = Nothing End Function Msgbox GetNewFolderPath("Select Folder", ssfPERSONAL)
キャンセルすると空文字列が返ってくるみたいな。
以前試した LjES が ver.2.00 になったということで さっそく試してみたいと思います。
[参考]
Raspberry Pi メモ (29) - LuaJITでお手軽3D (5)
今回のバージョンでは Blender で作成し Collada 形式でエクスポートした 3D モデルを読み込む機能が追加されていて お手軽に 3D アニメーション ができるそうです。
上記サイトにも書いてありますが、 以下のコマンドを実行するだけで デモを動かすことができます。
$ cd /tmp $ curl -O http://www.mztn.org/rpi/ljes-2.00.tar.gz $ tar zxf ljes-2.00.tar.gz $ cd ljes-2.00 $ cd examples $ luajit hand.lua
2014-01-07-wheezy-raspbian 上で試しましたが 簡単に動きました。
[1] 〜 [6] を押すと、指が動きます。 終了したいときは [q] を押します。 その他、操作は [h] で表示されます。
3D モデルとアニメーションの定義が 取り込めて Lua のプログラムで利用できるようになっているのはすごいですね。
前回の続き SNMP の設定です。 とりあえず SNMP からデータを取得できるように設定していきます。
まず snmpd の設定ファイルを編集します。
$ sudo vi /etc/snmp/snmpd.conf
内容は次のような感じです(全文)。
############################################################################### # # AGENT BEHAVIOUR # # Listen for connections from the local system only agentaddress udp:161 ############################################################################### # # ACCESS CONTROL # # sec.name source community com2sec PI_LOCAL localhost RASPBERRY_PI com2sec PI_NETWOEK 192.168.3.0/24 RASPBERRY_PI # group.name sec.model sec.name group LOCAL_GROUP v1 PI_LOCAL group LOCAL_GROUP v2c PI_LOCAL group LOCAL_GROUP usm PI_LOCAL group NETWORK_GROUP v1 PI_NETWOEK group NETWORK_GROUP v2c PI_NETWOEK group NETWORK_GROUP usm PI_NETWOEK # view.name incl/excl subtree mask view all included .1 80 # group.name context sec.model sec.level match read write notif access LOCAL_GROUP "" any noauth exact all none none access NETWORK_GROUP "" any noauth exact all none none ############################################################################### # # SYSTEM INFORMATION # syslocation Raspberry Pi raspbian syscontact Studio ODIN <xxxxx@xxxxx.xx.xx> sysservices 72
ネットワークは 192.168.3.x を使用しているので、その範囲からのアクセスを許可しています。 community 名の "RASPBERRY_PI" はパスワードの意味も含まれているので、 コピペする場合は、適宜変更してください。
syslocation と syscontact は、ただの情報ですので適当に。
設定ファイルの編集が終わったら サービスを再起動します。
$ sudo service snmpd restart
あとは試しに snmpd にアクセスしてみます。
$ sudo snmpwalk -v 2c -c RASPBERRY_PI localhost 1.3.6.1.4.1.2021
"RASPBERRY_PI" は、設定ファイル内の community 名、 "1.3.6.1.4.1.2021" が取得する情報の識別子です。
このコマンドを実行して、文字列がダーっと帰ってきたら成功です。
今回はここまで。