WebminのapsupsdモジュールをRHEL/CentOS6対応にしてみた


RHEL/CentOS 6.4にて、Webminを使って管理をおこなおうとしている。

サーバはapcupsdを使って停電対策をとることにした。
apcupsdの中には、WebでUPSの状態を確認できるようにcgiが添付されている。
これをWebminに組み込めないか確認した。

公式サイトでは「http://download.webmin.com/download/modules/apcupsd-0.81-2.wbm.gz」にそれっぽいものがある。

とりあえず、これを使ってみたところ、以下の問題点があった。

・cgiのパスが、apcupsd-0.81-2.wbm.gzの標準設定では/etc/apcupsd/
・WebminでUPSステータスを見ると、ヘッダが見える形で表示されてしまう。

これをとりあえず解消したものを作成した。

http://blog.osakana.net/sw/apcupsd/apcupsd-mod4.wbm.gz

githubメモ帳


githubの使い方を忘れてしまうので、メモ。

・githubに自分のssh keyを登録する
ssh-keygenでキーを作る
githubのwebでssh key(id_rsa.pub)を登録

・githubから最初に持ってくる

$ git clone git@github.com:自分のユーザ名/~.git

・githubから2回目以降持ってくる

$ git pull git@github.com:osakanataro/Superuser.git

・githubへ上げる

$ git push git@github.com:自分のユーザ名/~.git

・fork元から持ってくる
$ git pull git@github.com:元/元~.gif

詳細は、hnwの日記「GitHubへpull requestする際のベストプラクティス」を参照。

pcsensor-1.0.2 for TEMPerV1.2 with multi device support


USB温度計 TEMPer V1.2向けの温度計測ソフトウェアpcsensorを、自分の使い道にあうように改造しました。

http://blog.osakana.net/sw/pcsensor/pcsensor-1.0.2.tar.gz

元となったプログラムは以下の2つ。
・Juan Carlos Perezさん製作: http://www.isp-sl.com/pcsensor-1.0.1.tgz
・Momtchil Momtchevさん製作: pcsensor-1.0.0-multi.tgz (Juanさんのpcsensor-0.0.1.tgzを元にしている)からマルチデバイスサポートのやり方

追加した機能
・マルチデバイス時にデバイス名を出力するオプション “-d”

# ./pcsensor -d
2013/01/20 14:42:13 Bus 002 Device 003 Temperature 88.47F 31.38C
2013/01/20 14:42:13 Bus 003 Device 003 Temperature 74.30F 23.50C
#

・接続されているTEMPerのリスト表示 “-D”

# ./pcsensor -D
0 is Bus 002 Device 003
1 is Bus 003 Device 003
#

・接続されているTEMPerの個別表示 “-D番号”

# ./pcsensor -D0
2013/01/20 14:43:48 Temperature 88.47F 31.38C
# ./pcsensor -D1
2013/01/20 14:44:16 Temperature 74.30F 23.50C
#

・摂氏/華氏表示の同時指定を可能にした

# ./pcsensor -c
2013/01/20 14:44:49 Temperature 31.38C
2013/01/20 14:44:49 Temperature 23.50C
# ./pcsensor -f
2013/01/20 14:44:53 Temperature 88.47F
2013/01/20 14:44:53 Temperature 74.30F
# ./pcsensor -f -c
2013/01/20 14:45:02 Temperature 88.47F 31.38C
2013/01/20 14:45:02 Temperature 74.30F 23.50C
#

Android上で効率的にサーバ側に問い合わせる通信をおこなうには?


ドコモから日本語の資料が出てきたので、それ以前に公開されていたソニーの資料と併せてメモ書き。

Androidアプリ作成ガイドライン ~効率的な通信制御に向けて~

Androidにおいて、ネットワークを使って定期的に外部サーバから情報を取得する場合に、どのような実装を取るべきか、という点を日本語で解説。

このドコモの資料は、下記2記事の内容を含んだ、よい日本語の資料では無いかと思われる。

・SONY Developer world:「Reducing power consumption of connected apps」(2010/08/23)

アプリで情報を取得しにいくタイミングを合わせましょう、という記事。
ドコモ資料の「3.2. 1携帯電話あたりの通信回数を減らす手法」に相当する内容。
SONYのでは「AlarmManager.RTCを使え、 AlarmManager.RTC_WAKEUPは使うな」とある。
(ドコモのでは「AlarmManager.ELAPSED_REALTIMEを使うことを推奨」)

Web上には細かい処理までは書かれていないため、サンプルソースをダウンロードしてから、ソースを見つつ確認のこと。

・Ericsson Lab: ネタ元blog記事消滅?
sladeshareに講演で使用したスライドがある:「Understanding Smartphone Traffic – DroidCon 2010」(2010/10/28)

こちらは、無線通信側から見た資料。
ドコモ資料の「2章 モバイルネットワーク概要」あたりの話。


・SONY Developer world:「Android Application Coding Guidelines – Power Save」(2010/04/19)
これは、今回の件にはあまり関係ないけれども、wakelockの使い方について、良い例/悪い例を挙げている。
Ericsson Labの資料で触れられていたので紹介。

perl CGI.pm 渡される引数の取り扱い


perlでCGI.pmを使ってCGIを作る際の話。
・CGIに渡されたパラメータは、別のサーバに対してのコンテンツ取得に使用する
・渡されるパラメータが何がどれくらいあるのかが特定できない
・こちらの内部管理用で不要なパラメータとして特定の文字列があるが、それは引き渡さない

こんな条件がある時に、どーやって、パラメータを取得するか、というところ。

use CGI;
my $q = new CGI;
# 不要なパラメータを消去
$q->delete('sessionid');
# 残ったパラメータを表示
foreach my $name ($q->param) {
    # $nameが持っている値が複数の場合もあるため
    # @_=$q->param($name)に格納して
    # それをforeachする
    foreach my $value ($q->param($name)){
        print "$name=$value <br>\n";
    }
}