Net::POP3でメール受信

PerlのNet::POP2モジュールを利用したメール受信のサンプルです。このスクリプトをcronに登録し、定期的にメールボックスを確認させて、何かあったらコマンドを実行。なんて用途に使えます。パスワードも平文でのっけているので、セキュリティ的な注意は必要かと思います。

[perl]

!/usr/bin/env perl

use Net::POP3;

sub getmail()
{
my ($server, $user, $passwd, $delete) = @_;
my @result;
my $p = Net::POP3->new($server) or die "Couldn’t connect to $server.";
$p->login($user, $passwd);
foreach $id (keys(%{$p->list()})) {
push(@result, @{$p->get($id)});
$p->delete($id) if ($delete);
}
$p->quit;
return @result;
}

print &getmail(‘pop.example.com’, ‘example@example.com’, ‘mypassword’);
[/perl]

Tcl/Tkで簡易マップエディター

Tcl/Tkの勉強がてら、簡易マップエディターを書いてみました。マップデータは0から7までの色番号が並んだテキストファイル。16色カラー端末上で表示させる為のマップを想定しています。

実行結果

参考にしたサイト

  1. http://www.k5.dion.ne.jp/~minyu/script/tcltk.html
  2. http://homepage3.nifty.com/kaku-chan/tcl_tk/index.html
  3. 入門 tcl/tk 久野靖著・アスキー出版局

ビープ音でモールス信号を再生

以前、ブログでも取りあげたbsdgamesパッケージにあるmorseコマンドを利用して、ビープ音(PCスピーカー)でモールス信号を再生するスクリプトを書いてみました。 ビープ音の再生には、自由に周波数と再生時間を指定する事が出来るbeepコマンドを利用しました。

#!/usr/bin/env bash

f=1800 # 周波数

#正確な再生単位
b=60 # 単位長さ
t=$(($b*1)) # 短点長さ
w=$(($b*3)) # 長点長さ
s=$(($b*1)) # 無音長さ
n=$(($b*3)) # 次の文字との無音長さ

#こっちの方が聞き易い気がする
#b=50 # 単位長さ
#t=$(($b*2)) # 短点長さ
#w=$(($b*6)) # 長点長さ
#s=$(($b*1)) # 無音長さ
#n=$(($b*3)) # 次の文字との無音長さ

morse $@ | while read line
do
    echo $line
    opt=$(echo '$line' | sed \
    -e 's/dit/ -n -f $f -l $t -n -f 1 -l $s/g' \
    -e 's/daw/ -n -f $f -l $w -n -f 1 -l $s/g' \
    -e 's/^ *-n *//')
    if [ "$opt" ]; then
        beep $opt -n -f 1 -l $n
    else
        beep -f 1 -l $n
    fi
done

$(()) での計算を行っている為、bash依存です。適宜、exprなどに置き換えれば他のシェルでも使えるはずです。 無音部分は、周波数1Hzの音を再生する事によって実現しています。 実行すると、以下のように表示され、ビープ音でモールスが再生されます。

$ sh bmorse hello
dit dit dit dit
dit
dit daw dit dit
dit daw dit dit
daw daw daw

dit dit dit daw dit daw

ビープ音に加えて、赤外線送信デバイスをチカチカ光らせて遊んでみたいです。

※ 2020/07/02 度重なるブログ移転・ブログシステムのアップデートにより崩れた記事を校正。

NEC LifeTouch NOTE with SKK for Android IS01 ed. その2

NEC LifeTouch NOTE に、SHARP IS01 のハードウェアキーボード向けにカスタマイズされた SKK for Android をインストールし使ってみた感想を書きましたが、作者の ray_m さんにコメントを頂き、修正を施したとの事だったので、早速使ってみました。

修正がほどこされた点をかいつまんで紹介します。

  • Shift キー押下しっぱなしでの連続入力に対応。修正前のバージョンでは、「入れる」と入力する際、タイプでは「IReru」となりますが、I と R を Shift キーを押しっぱなしにして連続で入力する事が出来ませんでした。( Shift+i、Shift+r の間で、Shift キーを”離す”必要があった。) ray_m さんによると、IS01 のタイプ方法をベースに作成されていた為という事でそれを受けてすぐに修正して頂きました。LifeTouch NOTE は持ってらっしゃらないようなのに、迅速に修正して頂けるなんて頭が下がるばかりです。

IS01 の特殊キーは、同時押しではなく、キーを押した次のキーに作用するように出来ています。 これは QWERTY ハードウェアキーボードを搭載していても、サイズ自体が小さい為、同時押しがしづらい物理的な問題に対処するものだと考えられます。例えば、IS01 で大文字の ‘A’ を入力する場合、Shift キーを押した上で、( 押しっぱなしにしても、離してしまっても、Shift 押下状態が続くので、その直後に ) a キーを押す事によって入力する事が出来ます。自分の IS01 は電話専用機になってしまっているので、SKK を導入する必要はないですが、LifeTouch NOTE や Dynabook AZ のようなネットブックに匹敵するサイズの QWERTY キーボードを搭載している Android 端末上では、SKKer にとって、キラーアプリになるくらい外せないアプリになっています。

  • z キーでの記号入力に対応。カタカナ入力モードのトグルキーである q キーや、半角英数モードにする l キーは以前から利用出来ていましたが、日本語でよく利用する記号を 2 タイプで呼び出す z キー機能がありませんでした。これ自体はクリティカルに SKK の使い勝手を落とすわけではないのですが、新しいバージョンではサポートされるようになりました。これで、『』~・…‥←↓↑→ といった記号を 2 タイプで入力する事が出来ます。
  • 一時的に半角英数を入力する際、▽の表示に対応。ちょっと細かな話ですが、/ キーを押して一時的に半角英数文字をタイプする際に、最初の 1 文字を入力するまで、SKK による入力中である事を示す▽が出てきませんでした。最新版では、これもちゃんと出ている模様で、/ キーを押した状態で「えーと、スペルどうだっけ」と一瞬ディスプレイから目を離した時に、再度、/ キーを押してしまって「▽/」という入力状態にならなくなりました。
  • 通常の Android 端末にはまず付いていないであろう Delete キーは、LifeTouch NOTE 専用のテキストエディタである「ライフノート」では、IM がオンの状態でも使う事が出来ます。コピー C-c、ペースト C-v、カット C-x、アンドゥ C-z、全選択 C-a などのライフノート・ショートカットキーを使うにはは、IM をオフにする必要があります。

前回の記事は、SKK for Android をインストールしたその夜に使い勝手を調べながら書いたものですが、それから 1 ヶ月以上使ってみて、ますます満足しています。残すは変換候補の表示位置のみといったところでしょうか。

LifeTouch NOTE は、せっかく左にある Menu キー( IBM-PC キーボードで言う CapsLock の位置 )を Ctrl キーに変更する設定項目まで搭載してくれているのに、Android 自体の仕様が全体的に Ctrl キーをサポートしていないのが残念な限りです。自分に課題を出すとすれば、確定 C-j やキャンセル C-g を多用している SKKer としても、”C” になるキーを指定させてそれらをサポートしたいところです。

2011/09/23 追記

ray_m さんから新しいバージョン 1.4 のご連絡があり,早速試してみると,変換候補の表示位置がずれてしまう現象が解消されたようです.

また,上の記事には書いていませんでしたが x キーによる小文字(っ,ぁ,ぃ,ぅ …など)にも今回のバージョンから対応しているようで,使用感はほとんど Emacs や SKKIME と変わらなくなっています.

さらに SKK 使いでフルキーボードを搭載している Android 端末ユーザには,離せないアプリになっていると思います.

※ 2020/07/02 度重なるブログ移転・ブログシステムのアップデートにより崩れた記事を校正。