Mail script

メールを出すスクリプト。sendmailコマンドは、postfixのsendmail互換コマンドを使って確認をしました。mailaddressをメールアドレスへ置き換えれば、そこへメールが出せます。

$ smail.sh mailaddress

smail.shは次の通りです。「iconv -t iso-2022-jp」の代わりに 「nkf -j」を使ってもいいです。
——–
#! /bin/sh
PATH=/usr/sbin:/usr/bin:/bin ; export PATH
LANG=ja_JP.utf8 ; export LANG

smail() {
{
cat <<EOD
TO: $1
Subject: Thank you
FROM: hiro345

Hello $1.
メールありがとう
あとで返事するね

EOD
} | iconv -t iso-2022-jp | sendmail -it
}

smail $1
——–
こういうのが簡単にできるあたり、Linuxはやっぱり便利です。大量の同じ内容のメールを出す必要があって、Mewとか使っていれば楽にだせるのですが、最近流行のGUIメーラではそういった処理には弱いので、スクリプトで対応をすることにしてみたわけです。もちろんJavaでもできるのですが、スクリプトの方が断然らくにすぐにできてしまいます。ライブラリ化などが難しいので、何度も使うというのには適しませんが。

Fedora 8

SSHサーバをFedora 8 へバージョンアップしてみた。これまで、Fedora 3 あたりだったような気がするので、ずいぶん高いバージョンになったということになります。

インストールではLVMがデフォルトだったのですが、途中でディスクのアンマウントで失敗したとかいって先に進まなくなってしまいました。仕方がないのでリセットボタンを押して、最初からインストールしなおしました。LVMはやめて普通にディスクを使うようにしてインストールしたところ、無事インストールできました。ずいぶん古いマシンなのですが、X Window Systemもきちんと動作して、なんとか使えない事はありません。

とりあえず、最大の目的であるSSHサーバをさっそく設定したところ、再起動ができません。SELinuxの問題だと思うのですが、「めんどうだなー」と思いつつ、とりあえず yum update をしました。すると、SELinuxのポリシーファイルも更新対象となっていたので、これで問題が解決する予感がしました。

アップデートが終わってからサーバを再起動して、SSHの再起動を試してみたら、無事できました。良かった良かった。とりあえず、これで最新のSSHサーバが用意できたということで、安心して外からでもSSHアクセスできるようになりました。

あまり機会がないといえばないのですが、使えるようにしておくということが大切です。

ps2pdf, xlhtml

ps2pdf を久しぶりに使いました。Windows環境でPDF印刷環境を用意してからはあまり使っていなかったのですが、Vistaへ移行したときに、その環境を捨ててしまったので、Linuxを使ってみました。ちなみに、Mac OS Xでは印刷するときに、オプションでPDFへ印刷するという機能がデフォルトでついているそうで、そのあたりに差を感じてしまったりします。

VistaでMS Image Publisher だかを使ってファイルへPS形式で出力をして、そのファイルをFedora Core 5 を使った変換したのですが、かなりきれいに出力できました。PHPとかであればファイルのアップロードからPDFへ変換するまで簡単に実装できそうなので、プリンタの共有とか面倒なことをせずに、PSファイルさえあればPDFへ変換するWebアプリとか用意すれば便利そうだなぁ、と思いました… でも、これは世の中にありそうな予感がします。

ついでに、ExcelファイルをHTMLへ変換するコマンドを調べたところ xlhtml というのがあるらしいです。Wordも確かビューアがあったような気がします。もちろん、OpenOfficeの機能でも変換ができるはずですから、それを使うという手もあります。

もう少しWebアプリをさくさく開発して、クライアントアプリがなくてもデータが表示できる環境を用意するというのは大切ではないかと思ったりします。Google SpreadSheetとかは編集までできてしまうので、いまさらビューアだけ用意しても意味がないかもしれませんが…

まぁ、便利な世の中になったという事で。

PHP Smarty

Smarty

PHPのテンプレートエンジンとして有名なものにSmarty(http://smarty.php.net/)があります。Mac OS X 10.3.9 で使ってみました。

まずはサイトからダウンロード
http://smarty.php.net/download.php

次の手順で sample.smarty ディレクトリの下にセットアップしました。

mkdir sample.smarty
mkdir sample.smarty/htdocs
mkdir sample.smarty/lib
mkdir sample.smarty/lib/Smarty
tar xzf ~/Smarty-2.6.18.tar.gz
mv Smarty-2.6.18/libs/* sample.smarty/lib/Smarty/
rm -fr Smarty-2.6.18/
mkdir sample.smarty/etc
mkdir sample.smarty/etc/templates
mkdir sample.smarty/etc/templates_c
mkdir sample.smarty/etc/cache
mkdir sample.smarty/etc/configs

PHPファイル(sample.smarty/htdocs/index.php)は次のようになります。
<?php
require(‘../lib/Smarty/Smarty.class.php’);
$smarty = new Smarty();

$smarty->template_dir = ‘../etc/templates’;
$smarty->compile_dir = ‘../etc/templates_c’;
$smarty->cache_dir = ‘../etc/cache’;
$smarty->config_dir = ‘../etc/configs’;

$smarty->assign(‘name’, ‘hiro345’);
$smarty->display(‘index.tpl’);

?>

テンプレートファイル(smarty.sample/etc/templates/index.tpl)を用意します。

<html>
<head>
<title>Smarty</title>
</head>
<body>
Hello, {$name}!
</body>
</html>

カレントディレクトリをsample.smarty/htdocsとして実行すると、次のようになります。
———
$ php -f index.php 
<html>
<head>
<title>Smarty</title>
</head>
<body>
Hello, hiro345
</body>
</html>

簡単ですね。ディレクトリの指定が相対ディレクトリなので、実際のWebアプリケーションを開発するときには、絶対ディレクトリにする必要がありそうです。コマンドラインだけで確認してみたわけですが、本格的に使うには、GETパラメータやPOSTパラメータが必要なので、きちんとApacheなども準備しなければならなそうです。

Ruby

Ruby 1.6で動作するプログラムがあるのですが、いまから移植するならやっぱり Ruby 2.0 でしょうか。JRuby 1.0という手もあるのですが。などと考えてみたりする今日この頃。

Kyoto

東京、新大阪と行ってきましたが、帰りに京都駅に寄ってきました。京都ではなくて京都駅だというのがポイントなのですが、たまにはこういうことがあってもいいかな、と思いました。今週は湘南に行く事になったのですが、ちょっと移動が多くて大変なので、前か後のどちらかに宿泊をつけようかと考えています。