Lua に触れてみる 5

最近は 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

かなり速くなりました。

VBS からフォルダダイアログを開く

よくあるネタですが、自分メモとして。

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)

キャンセルすると空文字列が返ってくるみたいな。

Raspberry Pi と LuaJIT で 3D してみる (2)

以前試した 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 上で試しましたが 簡単に動きました。

WRITE_0788_01

[1] 〜 [6] を押すと、指が動きます。 終了したいときは [q] を押します。 その他、操作は [h] で表示されます。

3D モデルとアニメーションの定義が 取り込めて Lua のプログラムで利用できるようになっているのはすごいですね。

Raspberry Pi に MRTG を入れてみる (3)

前回の続き 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" が取得する情報の識別子です。

このコマンドを実行して、文字列がダーっと帰ってきたら成功です。

今回はここまで。

Google サイト内検索

Amazonアソシエイト