2012/02/26: Apache HTTP Serverの2.4が出ていたので新機能をチェッキングゥ
InfoQ: Apache、HTTP Server 2.4で17周年を祝う
Apache HTTP Server の 2.4 が出てたらしい。17周年なんだ・・・、知らなかった。パフォーマンスが nginx と同等かそれ以上に改善し、追加の機能も多数追加されているようだ。
というわけで、2.4 の新機能を確認してみた。
Overview of new features in Apache HTTP Server 2.4 - Apache HTTP Server
まずはこれ。
Event MPM の Experimental が外れた。クライアントとの TCP 接続維持は親玉がしっかりしつつも、TCP keepalive しているだけの通信の合間は子プロセスを専有しないというすぐれものだ。Web ソケットなんかで大量のクライアントと TCP 接続を維持しなければならないけれどロジック自体はあんま働いていないような場合、今までだと nginx とか nodejs とかを検討しなければならなかっただろうが、それも Apache で可能になるかもしれない。
今まで通り prefork を使い続けていたら何も変わらないけどね。
これは普通に嬉しい。
使用するメモリの量が少なくなったらしい。
FastCGI をバックエンドとして使用する際のモジュールが取り込まれた。
自分はあんま縁がないけど、喜ぶ人はけっこういるのではないだろうか。FastCGI サービスを起動するコマンドも付属している。
fcgistarter - Start a FastCGI program - Apache HTTP Server
大量なドメインのプロキシ設定を外部ファイルとして管理することができるようになった。
いちいち再起動しなくてもプロキシ対象のドメインを追加できるようになるようです。まー、マニュアルにも書いてあるけど、今までも mod_rewrite を使えば可能だったんだけどね。あ、でも ProxyPass と ProxyPassReverse をエミュレートしてくれるってのは嬉しいかもね。
同じくプロキシ関連で、バランサーの自動制御用の新機能。
Apache のバランサーでのメンバーサーバの障害検知は、実際にリクエストを投げて応答が帰ってくるか、で判断していたはずです。が、それを専用の通信でやってくれるってことでしょうか?今度検証しなきゃだな。
プロキシで重要になってくるのは、これ。
プロキシするときに HTML 内のリンク等も修正してくれる。前からサードパーティーで存在していたものが取り込まれたらしい。
上の mod_proxy_html と同じことができそうな、こいつ。
sed を知らなかったら何の感情も湧かないと思うけど、コマンドラインで使う人は「おっ」と思うのではないでしょうか。自分も思いました。
使用できる HTTP メソッドを指定できるようになった。
過去には TRACE メソッドを禁止するのに TraceEnable なんてディレクティブも追加されたりしたけど、それも不要になるのかなぁ。
ファイルの内容を URL エンコードして出力できるようになった。
細かい画像なんかを mod_data と mod_include でがっちゃんこして出力できるようになるのね。通信コストの低減が期待できます。そういう風にシステムを再構築する必要があるけどね。あと、キャッシュを適切に設定しないと CPU を食われそう。
クライアントが使用できる帯域幅を制限できるようになった。
もう iptables で頭を悩ませなくていいのかしら。でも、接続数の上限には注意だね。
みんな大好き mod_rewrite が強化された。
一番気になるのは最後のやつ。RewriteMap で DB に接続できるようになった。これで Apache だけのブログシステムの夢も近付いたかも。
rotatelogs コマンドのローテーションタイミングでカスタムのスクリプトを起動してもらえるようになった。
アクセスログのローテーションを cron ではなく rotatelogs で行っていた人には朗報ですね。Apache 設定内にログ解析スクリプトのキックも記述できるんですから。
まー、他にも新機能はたくさんありますねぇ。自分はなじみがないですが、Lua なんていうスクリプト言語が実験的にモジュール化されたりもしています。そのうち検証しなきゃだなー。
Apache HTTP Server の 2.4 が出てたらしい。17周年なんだ・・・、知らなかった。パフォーマンスが nginx と同等かそれ以上に改善し、追加の機能も多数追加されているようだ。
というわけで、2.4 の新機能を確認してみた。
Overview of new features in Apache HTTP Server 2.4 - Apache HTTP Server
まずはこれ。
"Event MPM The Event MPM is no longer experimental but is now fully supported."
Event MPM の Experimental が外れた。クライアントとの TCP 接続維持は親玉がしっかりしつつも、TCP keepalive しているだけの通信の合間は子プロセスを専有しないというすぐれものだ。Web ソケットなんかで大量のクライアントと TCP 接続を維持しなければならないけれどロジック自体はあんま働いていないような場合、今までだと nginx とか nodejs とかを検討しなければならなかっただろうが、それも Apache で可能になるかもしれない。
今まで通り prefork を使い続けていたら何も変わらないけどね。
これは普通に嬉しい。
"Reduced memory usage Despite many new features, 2.4.x tends to use less memory than 2.2.x."
使用するメモリの量が少なくなったらしい。
FastCGI をバックエンドとして使用する際のモジュールが取り込まれた。
"mod_proxy_fcgi FastCGI Protocol backend for mod_proxy"
自分はあんま縁がないけど、喜ぶ人はけっこういるのではないだろうか。FastCGI サービスを起動するコマンドも付属している。
fcgistarter - Start a FastCGI program - Apache HTTP Server
大量なドメインのプロキシ設定を外部ファイルとして管理することができるようになった。
"mod_proxy_express Provides dynamically configured mass reverse proxies for mod_proxy"
いちいち再起動しなくてもプロキシ対象のドメインを追加できるようになるようです。まー、マニュアルにも書いてあるけど、今までも mod_rewrite を使えば可能だったんだけどね。あ、でも ProxyPass と ProxyPassReverse をエミュレートしてくれるってのは嬉しいかもね。
同じくプロキシ関連で、バランサーの自動制御用の新機能。
"mod_heartmonitor, mod_lbmethod_heartbeat Allow mod_proxy_balancer to base loadbalancing decisions on the number of active connections on the backend servers."
Apache のバランサーでのメンバーサーバの障害検知は、実際にリクエストを投げて応答が帰ってくるか、で判断していたはずです。が、それを専用の通信でやってくれるってことでしょうか?今度検証しなきゃだな。
プロキシで重要になってくるのは、これ。
"mod_proxy_html Formerly a third-party module, this supports fixing of HTML links in a reverse proxy situation, where the backend generates URLs that are not valid for the proxy"
プロキシするときに HTML 内のリンク等も修正してくれる。前からサードパーティーで存在していたものが取り込まれたらしい。
上の mod_proxy_html と同じことができそうな、こいつ。
"mod_sed An advanced replacement of mod_substitute, allows to edit the response body with the full power of sed."
sed を知らなかったら何の感情も湧かないと思うけど、コマンドラインで使う人は「おっ」と思うのではないでしょうか。自分も思いました。
使用できる HTTP メソッドを指定できるようになった。
"mod_allowmethods New module to restrict certain HTTP methods without interfering with authentication or authorization."
過去には TRACE メソッドを禁止するのに TraceEnable なんてディレクティブも追加されたりしたけど、それも不要になるのかなぁ。
ファイルの内容を URL エンコードして出力できるようになった。
"mod_data Convert response body into an RFC2397 data URL"
細かい画像なんかを mod_data と mod_include でがっちゃんこして出力できるようになるのね。通信コストの低減が期待できます。そういう風にシステムを再構築する必要があるけどね。あと、キャッシュを適切に設定しないと CPU を食われそう。
クライアントが使用できる帯域幅を制限できるようになった。
"mod_ratelimit Provides Bandwidth Rate Limiting for Clients"
もう iptables で頭を悩ませなくていいのかしら。でも、接続数の上限には注意だね。
みんな大好き mod_rewrite が強化された。
"mod_rewrite mod_rewrite adds the [QSD] (Query String Discard) and [END] flags for RewriteRule to simplify common rewriting scenarios. Adds the possibility to use complex boolean expressions in RewriteCond. Allows to use SQL queries as RewriteMap functions."
一番気になるのは最後のやつ。RewriteMap で DB に接続できるようになった。これで Apache だけのブログシステムの夢も近付いたかも。
rotatelogs コマンドのローテーションタイミングでカスタムのスクリプトを起動してもらえるようになった。
"rotatelogs May now create a link to the current log file. May now invoke a custom post-rotate script."
アクセスログのローテーションを cron ではなく rotatelogs で行っていた人には朗報ですね。Apache 設定内にログ解析スクリプトのキックも記述できるんですから。
まー、他にも新機能はたくさんありますねぇ。自分はなじみがないですが、Lua なんていうスクリプト言語が実験的にモジュール化されたりもしています。そのうち検証しなきゃだなー。
2012/01/31: SOPA/PIPAからインターネットの自由を考える
最近、巷を賑わせている SOPA/PIPA。え、知らない?自分もあんま知りません。
InfoQ: SOPA, PIPA - 技術者としての関心
そんなわけで、とりあえず Wikipedia を見てみる。
Stop Online Piracy Act - Wikipedia
長い、ので途中まで読んでやめた。
まとめると、著作権を守らせたい議員がそういう法案を出したけど、インターネットの自由を守りたい人たちが反対してストライキみたいなこともして、ぐちゃぐちゃになっちゃったのね。大変だぁ。
自分からすると、法案反対派の人たちは過剰な反応をしているのではないかと思う。つか、自由を履き違えているのはないかと思う。
著作権の侵害は、デジタルでコピーしているだけだと気づかないかもしれないけど、強盗みたいなものだよ。その作品が果たせたかもしれない経済的効果を奪ったんだから。そういう感覚があるのかないのか、データを違法にコピーしておきながら、表現の自由を主張するとしたら、ひどい話だ。
Twitter、Facebook といったユーザ投稿型サイトが萎縮してしまうという話もある。けれど、それは必要な萎縮ではないかと思う。そこが世界とつながっているという自覚が必要だと思う。好き勝手やることが許される訳ではないことをしっかりと啓蒙しなければならない。
大体、法案に反対した Wikipedia はクリエイティブ・コモンズなんてのを提唱していて、一定の許諾条件を提示している。
Wikipedia:クリエイティブ・コモンズ 表示-継承 3.0 非移植 - Wikipedia
すなわち、これにそぐわない利用、二次配布をしたら怒るわけでしょ。なのに他人の著作権には無関心なのかよ、って感じ。
まー、SOPA は定義が曖昧なままで審議にかけられているのも問題らしいから、急ぐことはないと思うけど、インターネットも含め、全世界がまともな方向に進んでくれることを祈っています。
InfoQ: SOPA, PIPA - 技術者としての関心
そんなわけで、とりあえず Wikipedia を見てみる。
Stop Online Piracy Act - Wikipedia
長い、ので途中まで読んでやめた。
まとめると、著作権を守らせたい議員がそういう法案を出したけど、インターネットの自由を守りたい人たちが反対してストライキみたいなこともして、ぐちゃぐちゃになっちゃったのね。大変だぁ。
自分からすると、法案反対派の人たちは過剰な反応をしているのではないかと思う。つか、自由を履き違えているのはないかと思う。
著作権の侵害は、デジタルでコピーしているだけだと気づかないかもしれないけど、強盗みたいなものだよ。その作品が果たせたかもしれない経済的効果を奪ったんだから。そういう感覚があるのかないのか、データを違法にコピーしておきながら、表現の自由を主張するとしたら、ひどい話だ。
Twitter、Facebook といったユーザ投稿型サイトが萎縮してしまうという話もある。けれど、それは必要な萎縮ではないかと思う。そこが世界とつながっているという自覚が必要だと思う。好き勝手やることが許される訳ではないことをしっかりと啓蒙しなければならない。
大体、法案に反対した Wikipedia はクリエイティブ・コモンズなんてのを提唱していて、一定の許諾条件を提示している。
Wikipedia:クリエイティブ・コモンズ 表示-継承 3.0 非移植 - Wikipedia
すなわち、これにそぐわない利用、二次配布をしたら怒るわけでしょ。なのに他人の著作権には無関心なのかよ、って感じ。
まー、SOPA は定義が曖昧なままで審議にかけられているのも問題らしいから、急ぐことはないと思うけど、インターネットも含め、全世界がまともな方向に進んでくれることを祈っています。
2012/01/21: Upstartをちゃんと調べてdaemontoolsを起動させた
前回の CentOS 6 に daemontools を入れようとしていた時に出会った upstart を調査した。前回書いたのはこれ。
久々にdaemontoolsをインストールした、CentOS 6に
CentOS のサイトではドキュメントは見つからない。RedHat のマイグレーションガイドには書いてあった。
4.2. Service Initialization
日本語はこっち。
4.2. サービスの初期化
コマンドの詳細は man を見ろ、だとさ。
とりあえず分かったのは、古くから使われきた SysVinit 系の init デーモンが Upstart プロジェクトで開発されているイベントベースの init デーモンに置き換えられたということ。Upstart プロジェクトはこちら。
upstart in Launchpad
まー、使い方は man 5 init、man 8 init を読めば大体分かる。/etc/init/ にタスクごとにファイルを作成し、initctl コマンドで制御する感じ。
詳しい説明が欲しいなら、ここがいいのかな。
Upstart をもう少し使い込んでみる - いますぐ実践! Linuxシステム管理 / Vol.189
あと、Ubuntu のクックブックは量が多い。
Upstart Intro, Cookbook and Best Practises
というわけで、早速 daemontools を起動してみる。設定ファイルはこんな感じ。
ランレベル 2345 では起動し、その他は停止、落ちたら再起動で、最後に起動コマンドを指定。ファイルを作っただけだと何も起こらない。なので /etc/init/ 下で直接ファイルを編集して中途半端なファイルが存在していても問題はない。再起動までにはキレイにしておきましょう。
設定ファイルができたら initctl list で認識されているか確認。たぶん stop/waiting とかになっていると思う。そこで initctl start <設定ファイルの名前> を実行。起動するはず。kill しても復活する。
そして満を持してサーバを再起動。起動してきたところでプロセス確認。起動してる。素晴らしい。
この Upstart の init デーモンは単なる SysVinit 系の置き換えではない。色々と機能が追加されている。サービス起動前後に特定のスクリプトを実行したり、OOM killer の対象外とすることでメモリ逼迫時にも落ちないように指定したり、メモリや CPU の上限を指定したり、他にも色々な機能がある。すごい。がんばって daemontools を起動させたけど、もう daemontools はいらないね。
久々にdaemontoolsをインストールした、CentOS 6に
CentOS のサイトではドキュメントは見つからない。RedHat のマイグレーションガイドには書いてあった。
4.2. Service Initialization
日本語はこっち。
4.2. サービスの初期化
コマンドの詳細は man を見ろ、だとさ。
とりあえず分かったのは、古くから使われきた SysVinit 系の init デーモンが Upstart プロジェクトで開発されているイベントベースの init デーモンに置き換えられたということ。Upstart プロジェクトはこちら。
upstart in Launchpad
まー、使い方は man 5 init、man 8 init を読めば大体分かる。/etc/init/ にタスクごとにファイルを作成し、initctl コマンドで制御する感じ。
詳しい説明が欲しいなら、ここがいいのかな。
Upstart をもう少し使い込んでみる - いますぐ実践! Linuxシステム管理 / Vol.189
あと、Ubuntu のクックブックは量が多い。
Upstart Intro, Cookbook and Best Practises
というわけで、早速 daemontools を起動してみる。設定ファイルはこんな感じ。
start on runlevel [2345]
stop on runlevel [S016]
respawn
exec /usr/local/sbin/svscan /serviceランレベル 2345 では起動し、その他は停止、落ちたら再起動で、最後に起動コマンドを指定。ファイルを作っただけだと何も起こらない。なので /etc/init/ 下で直接ファイルを編集して中途半端なファイルが存在していても問題はない。再起動までにはキレイにしておきましょう。
設定ファイルができたら initctl list で認識されているか確認。たぶん stop/waiting とかになっていると思う。そこで initctl start <設定ファイルの名前> を実行。起動するはず。kill しても復活する。
そして満を持してサーバを再起動。起動してきたところでプロセス確認。起動してる。素晴らしい。
この Upstart の init デーモンは単なる SysVinit 系の置き換えではない。色々と機能が追加されている。サービス起動前後に特定のスクリプトを実行したり、OOM killer の対象外とすることでメモリ逼迫時にも落ちないように指定したり、メモリや CPU の上限を指定したり、他にも色々な機能がある。すごい。がんばって daemontools を起動させたけど、もう daemontools はいらないね。
2012/01/19: 久々にdaemontoolsをインストールした、CentOS 6に
久々に CentOS に daemontools を入れてみた。
CentOSにdaemontoolsをインストールした
の改訂版。
公式の手順に従うと /command とかいうディレクトリを作らなければならない、など、非常にイライラします。/usr/local/ の下で収めろよって言いたい。そこで、非公式手順が必要になります。
まずはダウンロード。公式のページから落としてくる。
http://cr.yp.to/daemontools/install.html
そして解凍する。
まずはパッチを当てる。Gentoo のリポジトリから持ってきた。手元にあった Gentoo から。
次にコンパイル。解凍したディレクトリの admin/daemontools-*/src/ に移動。コンパイルオプションのカスタマイズは conf-cc に書き込む。まー、負荷のかかるプロセスではないのでデフォルトでいいと思うんだけどね。せっかくだから -march=core2 ぐらい書き足しておくかね。
さっそく make しようかという逸る気持ちを抑えて touch home。なぜだかは知らない。そうしておかないと make がコケる。そして、ようやく make。普通に完了すると嬉しいね。
最後にインストール。前に書いた記事では cp を使っていたけど、今回は install コマンドを使おう。strip もできる。エッチなやつじゃないよ。あんま詳しく知らないけど、余分なものを削り取ってくれるのかな?まー、なんとなく。
CentOSにdaemontoolsをインストールした
の改訂版。
公式の手順に従うと /command とかいうディレクトリを作らなければならない、など、非常にイライラします。/usr/local/ の下で収めろよって言いたい。そこで、非公式手順が必要になります。
まずはダウンロード。公式のページから落としてくる。
http://cr.yp.to/daemontools/install.html
そして解凍する。
まずはパッチを当てる。Gentoo のリポジトリから持ってきた。手元にあった Gentoo から。
次にコンパイル。解凍したディレクトリの admin/daemontools-*/src/ に移動。コンパイルオプションのカスタマイズは conf-cc に書き込む。まー、負荷のかかるプロセスではないのでデフォルトでいいと思うんだけどね。せっかくだから -march=core2 ぐらい書き足しておくかね。
さっそく make しようかという逸る気持ちを抑えて touch home。なぜだかは知らない。そうしておかないと make がコケる。そして、ようやく make。普通に完了すると嬉しいね。
最後にインストール。前に書いた記事では cp を使っていたけど、今回は install コマンドを使おう。strip もできる。エッチなやつじゃないよ。あんま詳しく知らないけど、余分なものを削り取ってくれるのかな?まー、なんとなく。
install -o root -g root -m 755 -s -t /usr/local/sbin/ $(grep -v svscanboot ../package/commands )
install -o root -g root -m 755 svscanboot /usr/local/sbin/
全部 /usr/local/sbin/ に入れとくよ。
後は起動設定だよねー、って /etc/inittab に起動設定を入れました。こんな感じ。
sv:2345:respawn:/usr/local/sbin/svscan /service
だけど、サーバを再起動しても起動してこない。設定したコマンドを普通に叩いたら起動する。なんだー?って思って man init とか見てたら、なんか CentOS 6 で起動の仕組みが変わったっぽい。パッケージ名は upstart。なんだこりゃ。
軽く見た感じでは、inittab で使っていた respawn も使えて、稼働中に追加した設定ファイルも読んでくれそう。それって、daemontools いらなくねー。ってことで、upstart を検証しなければ。
2012/01/15: CentOS 6.2にGentoo Prefixを入れてみた
Gentoo Linux Projects -- Gentoo Prefix
Gentoo Prefix というものがある。OS 自体を Gentoo で構築するのではなく、Unix ライクな OS の一部に Gentoo をインストールするものだ。レンタルサーバでは Gentoo を利用するのが難しいが、これを利用すれば手軽に Gentoo のパッケージを利用できるかもしれない、と思って試してみた。
で、この Gentoo Prefix、Linux に入れる手順はリストされていない。あるのは Mac OS X、Solaris 10、FreeBSD 8.x の三つだけ。なんだかなぁ、と調べていたら、Solaris 向けの手順が使えるとの情報。
UbuntuへGentoo Prefixを入れてみた
では早速、ということで、仮想マシンのまっさらな CentOS 6.2 に入れてみた。こちらの Solaris 向けの手順。
Gentoo Linux Documentation -- Gentoo Prefix Bootstrap Process for Solaris
上手くいくかと思いきや、ちょいちょい emerge に失敗する。CentOS 側に必要そうなライブラリを yum してあげたら進んでいった。後で気づいたけど、Development tools をグループインストールすれば良かった。
つか、同じ Linux で GNU のツールも取得できる CentOS なら、もっと手順を簡略化できるよなー、って思っていたら、普通にあった。Linux に Gentoo Prefix を入れる手順。
Gentoo Linux Documentation -- Gentoo Prefix Bootstrap Process for x86-linux on Gentoo Linux host
とりあえずコンパイル済みのバイナリを持ってくる感じだ。こっちは最後まですんなり行った。
これで出来たのか?と思い、とりあえず Apache と PHP を入れてみようとしたら、マスクされている様子。emerge の出力に従ってキーワードを追加し、再挑戦。PHP は上手くいかない。なんか色々ライブラリが足りない。libiconv は CentOS では提供されていないようなのでソースから導入。
GNU Project Archives
とりあえずインストールはできたっぽいけど、Apache で init スクリプトは入れてくれないのね。まー、本体の /etc/init.d に入れるわけにもいかないだろうし、そこは自分で用意するのがいいか。
そんな感じでインストールは完了し、試し起動。コマンドラインから
まー、それなりに使えるんだろうけど、やっぱメインのシステムとして使うには物足りない感じだな。
Gentoo Prefix というものがある。OS 自体を Gentoo で構築するのではなく、Unix ライクな OS の一部に Gentoo をインストールするものだ。レンタルサーバでは Gentoo を利用するのが難しいが、これを利用すれば手軽に Gentoo のパッケージを利用できるかもしれない、と思って試してみた。
で、この Gentoo Prefix、Linux に入れる手順はリストされていない。あるのは Mac OS X、Solaris 10、FreeBSD 8.x の三つだけ。なんだかなぁ、と調べていたら、Solaris 向けの手順が使えるとの情報。
UbuntuへGentoo Prefixを入れてみた
では早速、ということで、仮想マシンのまっさらな CentOS 6.2 に入れてみた。こちらの Solaris 向けの手順。
Gentoo Linux Documentation -- Gentoo Prefix Bootstrap Process for Solaris
上手くいくかと思いきや、ちょいちょい emerge に失敗する。CentOS 側に必要そうなライブラリを yum してあげたら進んでいった。後で気づいたけど、Development tools をグループインストールすれば良かった。
つか、同じ Linux で GNU のツールも取得できる CentOS なら、もっと手順を簡略化できるよなー、って思っていたら、普通にあった。Linux に Gentoo Prefix を入れる手順。
Gentoo Linux Documentation -- Gentoo Prefix Bootstrap Process for x86-linux on Gentoo Linux host
とりあえずコンパイル済みのバイナリを持ってくる感じだ。こっちは最後まですんなり行った。
これで出来たのか?と思い、とりあえず Apache と PHP を入れてみようとしたら、マスクされている様子。emerge の出力に従ってキーワードを追加し、再挑戦。PHP は上手くいかない。なんか色々ライブラリが足りない。libiconv は CentOS では提供されていないようなのでソースから導入。
GNU Project Archives
とりあえずインストールはできたっぽいけど、Apache で init スクリプトは入れてくれないのね。まー、本体の /etc/init.d に入れるわけにもいかないだろうし、そこは自分で用意するのがいいか。
そんな感じでインストールは完了し、試し起動。コマンドラインから
apache2 -D DEFAULT_VHOST -D PHP5 -k start。うむ、phpinfo() もちゃんと表示される。まー、それなりに使えるんだろうけど、やっぱメインのシステムとして使うには物足りない感じだな。
2011/12/31: 年賀状宛名印刷の記録
思いつきで年賀状を作ってみたので記録しておく。
絵柄面は人それぞれだと思うのでいいが、宛名が強敵だと思う。けど、やってみたら強敵ではなかった。こちらを参考にさせていただきました。
GreetingCards-HOWTO_2 - OpenOffice.org Q&A
このリンク先で紹介されているのは OpenOffice.org だったけど、自分が使っているのは、それがフォークした LibreOffice。まぁ、ほぼ同じなので問題なし。
そういや、Sun が Oracle に買収されて、OpenOffice.org がコミュニティから見放されて LibreOffice がフォークして、でも結果的に OpenOffice.org が Apache のプロジェクトになって、来年はどうなるんだろうなぁ。試しに入れた Ubuntu は Libre だったな。
まー、そんな感じで説明された通りにやったら、簡単に宛名の差込印刷ができました。あて先に二人目・三人目の名前を入れるなら、フィールドを追加する必要がありました。DL したファイルそのままだと郵便番号がズレる感じがあったので半角スペースで調整しました。そんなもんです。
差込のファイルを最初から作ってみたい人はこちら。
縦書き宛名印刷
で、いざ印刷、と思ったらプリンターが寿命を迎えてしまいました。朝一でヨドバシカメラに行って、適当なプリンターを買い、サクッと帰って印刷、プリンター等はほったらかして空港へ出てきました。ってのも三日ぐらい前の話なんですが。
買ったプリンターは、たぶんこれ。
キヤノン:インクジェットプリンター PIXUS MG3130 概要
急いで買ったからモデルとか覚えていない。前に使っていたのは5年以上前の機種なので、何を買っても性能は上がっているだろうから、あまり気にしなかった。LAN でつながるってのが決め手かな。前に使っていたのはこっち。
キヤノン:Q&A検索|【インクジェットプリンター】BJ F870機種仕様
友達にもらったやつだったけど、友達ももらったって言ってたな。
しかし、新しいプリンターも買ったし、来年は風景写真とかを印刷してみようかな。上位機種じゃないから、そんなにきれいじゃないかな・・・。まぁ、インクジェットプリンターは定期的に印刷してないと目詰まりであっさり壊れるなんて情報もあるので、何か印刷しよう。
絵柄面は人それぞれだと思うのでいいが、宛名が強敵だと思う。けど、やってみたら強敵ではなかった。こちらを参考にさせていただきました。
GreetingCards-HOWTO_2 - OpenOffice.org Q&A
このリンク先で紹介されているのは OpenOffice.org だったけど、自分が使っているのは、それがフォークした LibreOffice。まぁ、ほぼ同じなので問題なし。
そういや、Sun が Oracle に買収されて、OpenOffice.org がコミュニティから見放されて LibreOffice がフォークして、でも結果的に OpenOffice.org が Apache のプロジェクトになって、来年はどうなるんだろうなぁ。試しに入れた Ubuntu は Libre だったな。
まー、そんな感じで説明された通りにやったら、簡単に宛名の差込印刷ができました。あて先に二人目・三人目の名前を入れるなら、フィールドを追加する必要がありました。DL したファイルそのままだと郵便番号がズレる感じがあったので半角スペースで調整しました。そんなもんです。
差込のファイルを最初から作ってみたい人はこちら。
縦書き宛名印刷
で、いざ印刷、と思ったらプリンターが寿命を迎えてしまいました。朝一でヨドバシカメラに行って、適当なプリンターを買い、サクッと帰って印刷、プリンター等はほったらかして空港へ出てきました。ってのも三日ぐらい前の話なんですが。
買ったプリンターは、たぶんこれ。
キヤノン:インクジェットプリンター PIXUS MG3130 概要
急いで買ったからモデルとか覚えていない。前に使っていたのは5年以上前の機種なので、何を買っても性能は上がっているだろうから、あまり気にしなかった。LAN でつながるってのが決め手かな。前に使っていたのはこっち。
キヤノン:Q&A検索|【インクジェットプリンター】BJ F870機種仕様
友達にもらったやつだったけど、友達ももらったって言ってたな。
しかし、新しいプリンターも買ったし、来年は風景写真とかを印刷してみようかな。上位機種じゃないから、そんなにきれいじゃないかな・・・。まぁ、インクジェットプリンターは定期的に印刷してないと目詰まりであっさり壊れるなんて情報もあるので、何か印刷しよう。
2011/12/10: これからはIS01のFMトランスミッタを有効活用できる
素晴らしいアプリを見つけた。一年前のだけど・・・。
IS01とIS03で標準プレーヤ以外でもFMトランスミッタを使用する。 – Nanoseconds Diary
IS01 って FM トランスミッターを内臓していて、車乗りとしては期待していた機能だったんだけど、アプリ側での対応が必要っぽくて、標準のメディアプレーヤぐらいでしか使えませんでした。しかもメディアプレーヤで曲を選びなおしただけでも標準の出力に戻ってしまったりと、全く使えない感じだったんです。
そこでこのアプリ。素晴らしいです。当時は標準のブラウザでダウンロードするとインストールできなかったようですが、自分は大丈夫でした。逆に SD カードに入れたらインストールできなかった。
で、インストールしてテスト。アプリから FM トランスミッタを有効にしてワンセグを起動、そして家のラジオで再生してみる。イケる。素晴らしい。これで車に色々な音楽を持っていける。今さら MD 生活に戻ろうかと思っていたけど、その必要はなさそうだ。
ありがとう、開発者さん。
IS01とIS03で標準プレーヤ以外でもFMトランスミッタを使用する。 – Nanoseconds Diary
IS01 って FM トランスミッターを内臓していて、車乗りとしては期待していた機能だったんだけど、アプリ側での対応が必要っぽくて、標準のメディアプレーヤぐらいでしか使えませんでした。しかもメディアプレーヤで曲を選びなおしただけでも標準の出力に戻ってしまったりと、全く使えない感じだったんです。
そこでこのアプリ。素晴らしいです。当時は標準のブラウザでダウンロードするとインストールできなかったようですが、自分は大丈夫でした。逆に SD カードに入れたらインストールできなかった。
で、インストールしてテスト。アプリから FM トランスミッタを有効にしてワンセグを起動、そして家のラジオで再生してみる。イケる。素晴らしい。これで車に色々な音楽を持っていける。今さら MD 生活に戻ろうかと思っていたけど、その必要はなさそうだ。
ありがとう、開発者さん。
2011/11/27: 「紅椿の湯」を堪能してきた
温泉してきた。
道志川温泉「紅椿の湯」オフィシャルホームページ
前にも行ったことのある紅椿の湯。出発の時、ナビに間違って「椿の湯」って入れたらぜんぜん違うのが出てきて焦った。
ナビどおりに行くと道志道経由を勧められるんだけど、あそこは細くて気を使うので避けてドライブ。でも結局細い道を通ったので意味なかったかも。あそこに行くには必ず細い道を通らなきゃならないのね。
日曜の午後というタイミングでもあり、対向車が多数いたものの、なんとか無事故で到着。できればちゃんと二車線あるとこを通りたいよね。って北海道出身ならではの感覚なのかなぁ。北海道では山奥の砂利道でも二車線あった気がする。気のせいかな・・・。
紅椿の湯、というか道志川温泉、意外とパワーを持っているようです。浴室に貼ってあった説明の受け売りですが、色んなプレートがぶつかり合っているところで湧いている温泉で、自然湧出、ミネラル豊富なんて謳っていました。
ライトアップとかしていないので夕方以降に行くと何も見えない。つか、見るほどの紅葉もなく、はるか彼方の飛行機を眺めていました。あとは内湯のぬる湯でまったり。最後はジャグジー的なところで仕上げ。サウナもあったけど、あんま好きじゃないので入りませんでした。
当初の予定ではさっさと帰って家で飯の予定だったが、意外と時間が遅かったので夕食をいただくことに。軽く蕎麦にすることは決まったものの、何を乗せるかを悩む。食べたいのは特製のかきあげ。地元のクレソンが入っている。クレソンが何か知らないけど。でも、そこにあるのは「天ぷらそば」と「山菜そば」。天ぷらで海老が乗ってきたらガッカリだし・・・、とか思いながら天ぷらそばを注文。
出てきた天ぷらそばに乗っていたのは、あのかきあげでした。美味い。野菜のかきあげ。いいね、こういうの。
そんな充実した休日を過ごし、あとは帰るだけ。ナビは道志道を示す。細い道はなー、って思って20号を目指すことに。でもたどり着いた20号はあえなく渋滞。先のほうを見ると災害で通行止めらしい。逃げるかどうか悩みつつもそのまま行くと、あんま関係なかったみたいで普通に帰ってこれました。
往復の道は、車を道具として考えている人にはつらい道のりだろうけど、走るのが好きな人には楽しい道だね。ぐにゃぐにゃでワクワク。自分はティアナで、走る車ではないけど、それなりに楽しかった。同乗者がいたら酔ってただろうな。
よかったよかった。いい休日を過ごしました。本当は買い物に行こうと思っていたんだけど、平日に早めに帰ろう。やっぱ休日は大自然がいいわ。
道志川温泉「紅椿の湯」オフィシャルホームページ
前にも行ったことのある紅椿の湯。出発の時、ナビに間違って「椿の湯」って入れたらぜんぜん違うのが出てきて焦った。
ナビどおりに行くと道志道経由を勧められるんだけど、あそこは細くて気を使うので避けてドライブ。でも結局細い道を通ったので意味なかったかも。あそこに行くには必ず細い道を通らなきゃならないのね。
日曜の午後というタイミングでもあり、対向車が多数いたものの、なんとか無事故で到着。できればちゃんと二車線あるとこを通りたいよね。って北海道出身ならではの感覚なのかなぁ。北海道では山奥の砂利道でも二車線あった気がする。気のせいかな・・・。
紅椿の湯、というか道志川温泉、意外とパワーを持っているようです。浴室に貼ってあった説明の受け売りですが、色んなプレートがぶつかり合っているところで湧いている温泉で、自然湧出、ミネラル豊富なんて謳っていました。
ライトアップとかしていないので夕方以降に行くと何も見えない。つか、見るほどの紅葉もなく、はるか彼方の飛行機を眺めていました。あとは内湯のぬる湯でまったり。最後はジャグジー的なところで仕上げ。サウナもあったけど、あんま好きじゃないので入りませんでした。
当初の予定ではさっさと帰って家で飯の予定だったが、意外と時間が遅かったので夕食をいただくことに。軽く蕎麦にすることは決まったものの、何を乗せるかを悩む。食べたいのは特製のかきあげ。地元のクレソンが入っている。クレソンが何か知らないけど。でも、そこにあるのは「天ぷらそば」と「山菜そば」。天ぷらで海老が乗ってきたらガッカリだし・・・、とか思いながら天ぷらそばを注文。
出てきた天ぷらそばに乗っていたのは、あのかきあげでした。美味い。野菜のかきあげ。いいね、こういうの。
そんな充実した休日を過ごし、あとは帰るだけ。ナビは道志道を示す。細い道はなー、って思って20号を目指すことに。でもたどり着いた20号はあえなく渋滞。先のほうを見ると災害で通行止めらしい。逃げるかどうか悩みつつもそのまま行くと、あんま関係なかったみたいで普通に帰ってこれました。
往復の道は、車を道具として考えている人にはつらい道のりだろうけど、走るのが好きな人には楽しい道だね。ぐにゃぐにゃでワクワク。自分はティアナで、走る車ではないけど、それなりに楽しかった。同乗者がいたら酔ってただろうな。
よかったよかった。いい休日を過ごしました。本当は買い物に行こうと思っていたんだけど、平日に早めに帰ろう。やっぱ休日は大自然がいいわ。
2011/11/13: /proc/statの値をmod_rewriteで拾う
Apache には mod_rewrite というモジュールがあることは良く知られています。ですが大体の人は URL を書き換えることしかしていないと思います。それはもったいないです。
この mod_rewrite は非常に高機能で、マップという Key-Value の対応をベースにリライトする機能があります。一番単純なマップはテキストファイルによるもの。
mod_rewrite - Apache HTTP Server
テキストで、スペースなどで区切ったファイルを作り、1対1の変換をすることができます。
そこで、ちょっと組み合わせたいのが proc です。いや /proc です。この /proc には Linux カーネルの状況がテキスト形式で置かれています。まー、HTTP サービスに直接関連するものは少ないかもしれないけど、面白いことができます。
これ。
Man page of PROC
まぁ、実際の /proc/stat には他にも色々な値が反映されているんだけど、この実行中プロセスを使って面白いことができます。
実行中プロセスとは何か。その名のとおり実行中のプロセスです。実行中ということは何か。システムに負荷をかけているということ。まさに CPU リソースを必要としているプロセスになります。
ついでに /proc/stat にある procs_blocked というのは I/O の完了を待っているプロセスです。I/O ってのは CPU/メモリ の外との通信で、大抵はハードディスクや通信になります。
この二つの値は vmstat というコマンドで左端に出てくるので関わりのある人も多いと思います。
で、たまにあるのが、負荷が高い時はそういうメッセージを表示して追加の負荷をかけたくない、という要望です。
そういう場合、プロセス数を絞ってしまったり、アプリケーション内で判別させたりするのが多いと思うのですが、RewriteMap と /proc/stat の組み合わせで解決できます。
/proc/stat はテキスト形式なので、そのまま mod_rewrite のマップに利用できます。すなわち、その時の負荷に応じて応答するコンテンツを調整することができる。しかもアプリへの修正なし、定時実行バッチも不要です。
こんな感じ。
ちなみに RewriteMap はホストレベルの設定内でしか書けません。なので全てを .htaccess に書くとエラーになります。
上の例は実行中のプロセスが 0 か 1 以外だと Forbidden になります。後は要望に従って、って感じ。
まー、でも、vmstat だと一定時間の平均値を表示していたり、uptime コマンドだと 1、5、15 分の平均値だったりするので、その場の実行中プロセス数をそのまま動作に反映するのは微妙な気もしますが・・・。
まー、言いたかったのは mod_rewrite は可能性があるってこと。/proc とか /sys とかを組み合わせると他にも何かできるかも。随時 vmstat の出力を拾ってテキストのマップを更新する仕組みもアリかも。
この mod_rewrite は非常に高機能で、マップという Key-Value の対応をベースにリライトする機能があります。一番単純なマップはテキストファイルによるもの。
"Standard Plain Text
MapType: txt, MapSource: Unix filesystem path to valid regular file
This is the standard rewriting map feature where the MapSource is a plain ASCII file containing either blank lines, comment lines (starting with a '#' character) or pairs like the following - one per line."
mod_rewrite - Apache HTTP Server
テキストで、スペースなどで区切ったファイルを作り、1対1の変換をすることができます。
そこで、ちょっと組み合わせたいのが proc です。いや /proc です。この /proc には Linux カーネルの状況がテキスト形式で置かれています。まー、HTTP サービスに直接関連するものは少ないかもしれないけど、面白いことができます。
これ。
"/proc/stat
procs_running 6
実行中状態のプロセス数 (Linux 2.5.45 以降)。
"
Man page of PROC
まぁ、実際の /proc/stat には他にも色々な値が反映されているんだけど、この実行中プロセスを使って面白いことができます。
実行中プロセスとは何か。その名のとおり実行中のプロセスです。実行中ということは何か。システムに負荷をかけているということ。まさに CPU リソースを必要としているプロセスになります。
ついでに /proc/stat にある procs_blocked というのは I/O の完了を待っているプロセスです。I/O ってのは CPU/メモリ の外との通信で、大抵はハードディスクや通信になります。
この二つの値は vmstat というコマンドで左端に出てくるので関わりのある人も多いと思います。
で、たまにあるのが、負荷が高い時はそういうメッセージを表示して追加の負荷をかけたくない、という要望です。
そういう場合、プロセス数を絞ってしまったり、アプリケーション内で判別させたりするのが多いと思うのですが、RewriteMap と /proc/stat の組み合わせで解決できます。
/proc/stat はテキスト形式なので、そのまま mod_rewrite のマップに利用できます。すなわち、その時の負荷に応じて応答するコンテンツを調整することができる。しかもアプリへの修正なし、定時実行バッチも不要です。
こんな感じ。
RewriteEngine on
RewriteMap stat txt:/proc/stat
RewriteCond ${stat:procs_running} !^[0-1]$
RewriteRule ^(.*)$ - [F,L]
ちなみに RewriteMap はホストレベルの設定内でしか書けません。なので全てを .htaccess に書くとエラーになります。
上の例は実行中のプロセスが 0 か 1 以外だと Forbidden になります。後は要望に従って、って感じ。
まー、でも、vmstat だと一定時間の平均値を表示していたり、uptime コマンドだと 1、5、15 分の平均値だったりするので、その場の実行中プロセス数をそのまま動作に反映するのは微妙な気もしますが・・・。
まー、言いたかったのは mod_rewrite は可能性があるってこと。/proc とか /sys とかを組み合わせると他にも何かできるかも。随時 vmstat の出力を拾ってテキストのマップを更新する仕組みもアリかも。
2011/11/11: FireFox 8.0対応でFaviconを作った
FireFox 8.0 になって、Favicon を指定していない場合のアイコンは四角い点線を表示するようになった。味気ないので favicon.ico を作ることにした。
作ったのはここ。
favicon.ico Generator
たぶん有名なサイトだと思う。
最初はローカルでそれっぽい画像を作ってアップしてみた。が、ちょっと大きめなサイズで作ってしまったため、16x16 にすると何を描いたのか分からない感じになってしまった。
仕方がなく、ベタで描くことにした。とりあえず適当にアルファベットを並べる。うーん、微妙なスペースが。気づくと、「s」が足りない。でもスペースが微妙でフルサイズは入れられない。右上のやつね。細いでしょ。
次に気づいたのは「i」は大文字だったということ。サイトには書いていないんだけど、英語で自分を示す「I」なんでね。
上手くスペースが埋まったところで、味気ないのをどうにかしたくなった。ので影を付けることにした。影。とりあえず背景を暗くした色を用意。それを文字の色を置いた場所の右下に配置していく。でも、「y」の下の方の影が上手くいかない。単純に右下に影を置いて行くと、文字の下なのに影になっていない 1 ドットができちゃうんです。
ってなわけで、そんな微妙な 1 ドットには微妙な影を付けてやりました。もちろん、そこだけだと変なので、全体的に影を付けたドットの上下左右には微妙な影を配置しました。
うーん、いい感じ。わりと気に入りました、この Favicon。
作ったのはここ。
favicon.ico Generator
たぶん有名なサイトだと思う。
最初はローカルでそれっぽい画像を作ってアップしてみた。が、ちょっと大きめなサイズで作ってしまったため、16x16 にすると何を描いたのか分からない感じになってしまった。
仕方がなく、ベタで描くことにした。とりあえず適当にアルファベットを並べる。うーん、微妙なスペースが。気づくと、「s」が足りない。でもスペースが微妙でフルサイズは入れられない。右上のやつね。細いでしょ。
次に気づいたのは「i」は大文字だったということ。サイトには書いていないんだけど、英語で自分を示す「I」なんでね。
上手くスペースが埋まったところで、味気ないのをどうにかしたくなった。ので影を付けることにした。影。とりあえず背景を暗くした色を用意。それを文字の色を置いた場所の右下に配置していく。でも、「y」の下の方の影が上手くいかない。単純に右下に影を置いて行くと、文字の下なのに影になっていない 1 ドットができちゃうんです。
ってなわけで、そんな微妙な 1 ドットには微妙な影を付けてやりました。もちろん、そこだけだと変なので、全体的に影を付けたドットの上下左右には微妙な影を配置しました。
うーん、いい感じ。わりと気に入りました、この Favicon。