試しにLynxでblog巡回してみた

Filed in 日記

 ふと気が向いたのでLynxでweb巡回。ついでなので各blogサービスはLynxで表示されるのかな? とクロール。

 うなぎ画伯のblogは何も表示されず。見事にアウト。
 はてなはいけるっぽい。
 MovableTypeも行けるらしい。
 Doblogもおk。
 Neverも大丈夫。
 MSNblogクッキー大杉、6個ですか。しかも不正なHTMLと出ましたよ? 糞いにも程がありますね。さすがマイクソソフト。
 FC3はおk。
 ばべタソところはEUCな為か部分的に文字化け。部分的ってなんでさ?

暫定的にサイト移行開始

Filed in お知らせ

 一応サイト移行開始しました。
 前サイトからプログラミングまめ知識とコラム、Wiki、お絵描き掲示板を移転。トップとリンクを書き直しでhttp://www.nagatsuki-do.net/に設置。
 前サイトでぐぐる的に好評をいただいていたC言語講座のページは書き直し中です。出来た分から随時UPしていきます。

スキン対応CGIのススメ

Filed in Perl, prog

 知り合いの日曜ぷるぐらまさんが「スキン対応CGIを計画中」とおっしゃって居たのでHTML::Templateモジュールを教えてさしあげました。
 で、ちょっと考えてみたんですが、自分も含めて作る立場から見て、スキン対応CGIの需要って高いんじゃないかと思うんですよ。
 使う側からしても面白いんですが、作る側から見るとUIとロジックの分離が出来るって事でお得なんですよね。本来アプリケーション構成の多層化って設計の基本なんですけど、CGIに於いては割と軽視されてると言うか、そう言う構成になっていないことも多いンじゃないかと思います。最近スタイルシートをいじってる所為か、見た目を変える為にソースをいじるのはナンセンスに感じるんですね。だからここ最近作ってるPerlCGIやPerlでHTMLを吐く類のプログラムではもっぱらHTML::Templateモジュールを使ってます。
 で、自分で便利だと感じる物は同じ事を考える人のために紹介しなきゃでしょと思ったので紹介してみようかと思います。
 まずはインストール、Perlのバージョンによっては入ってるかも知れませんが、うちのPerl環境 (ActivePerl 4.6.1) では入ってなかったのでCPANから落としました。ActivePerlを使ってる方ならPPMコマンドで適当に落として下さい。ppm install HTML-Templateでインストール出来ると思います。
 PPMコマンドの使い方はhttp://digit.que.ne.jp/work/index.cgi?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2F%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB(PPM)を見れば詳しく書いてあります。
 Windows + ActivePerl 以外の環境の方は適当に何とかして下さい。Linux何かだとRPMパッケージも用意してあったかと思います。
 インストールが済んだら取り説をざっと見てみましょう。perldocコマンドで取り説を読むことが出来ますが、文章が英語なので長月の様な英語だめぽな方はperldocJPプロジェクトで公開されている翻訳済みドキュメントを読みましょう。
 PerldocJP: http://perldocjp.sourceforge.jp/
 さて、取り説の説明に拠ると、HTML::Templateモジュールで読み込むテンプレートファイルは基本的にHTMLの様です。これなら簡単です。まずはHTMLで実現したいページを書いてみます。例として自作のHTMLジェネレータで使っているテンプレートを晒してみます。

<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta name="GENERATOR" content="Aoiro HTML Generator 1.0">
<title><!--TMPL_VAR NAME="title"--></title>
<link rel="stylesheet" type="text/css" href="<!--TMPL_VAR ESCAPE=HTML NAME="file_dir"-->CSS/base.css">
</head>
<body>
<div id="base">
<div id="main">
<div id="logo">
<img src="<!--TMPL_VAR ESCAPE=HTML NAME="logo"-->">
</div><!--/div id="logo"-->
<div class="navi">
<ul class="navi">
<!--TMPL_LOOP NAME="navi"-->
<li class="navi"><!--TMPL_VAR NAME="navi_item"--></li>
<!--/TMPL_LOOP-->
</ul>
</div><!--/div class="navi"-->
<!--TMPL_VAR NAME="body"-->
</div><!--/div id="main"-->
<div id="menu">
<!--TMPL_LOOP NAME="menu_captions"-->
<ul>
<li class="caption"><!--TMPL_VAR NAME="menu_caption"--></li>
<!--TMPL_LOOP NAME="menu_items"--><li><!--TMPL_VAR NAME="menu_item"--></li>
<!--/TMPL_LOOP-->
</ul><!--/TMPL_LOOP-->
</div><!--/div id="menu"-->
</div><!--/div id="base"-->
<div id="Copyright">
<hr>
Copyright (C) 2002-2005 September Software,<br>
長月 葵<aoi_nagatsuki@nagatsuki-do.net><br>
All Rights Reserved.<br>
<font style="color: red">スパム防止の為@を全角にしています。</font><br>
<img src="<!--TMPL_VAR NAME="file_dir"-->image/banner.gif">
</div><!--/div id="Copyright"-->
</body>
</html>

 なにやらHTMLにないタグがいくつか出てきてますね。<!--TMPL_VAR NAME="hoge"-->とか<!--TMPL_LOOP NAME="piyo"-->とか。これがHTML::Templateモジュール用テンプレートの制御タグです。詳しくはPODを読んで貰うとして、頻繁に使うであろう<!--TMPL_VAR NAME="hoge"-->と<!--TMPL_LOOP NAME="piyo"-->~<!--/TMPL_LOOP-->だけ解説してみます。
 制御タグの解説の前に、HTML::Templateモジュールを使う準備と、出力の方法を解説します。
 まず、モジュールを使うときにはお決まりのuseディレクティブを使います。

use HTML::Template;

 そしてHTML::Templateのインスタンスを作ります。

$tmpl = HTML::Template->new(filename => 'tmpl.html');

 newメソッドの詳しい使い方はPODを参照して下さい。一般的にはテンプレートファイルを読み込むでしょうから、 filename => ファイル名 として読み込むテンプレートを指定して下さい。
 これで準備が出来ました。後はparamメソッド経由で色々設定した後出力と言う流れでしょう。
 出力にはoutputメソッドを使います。outputメソッドは文字列を返すので、print関数なんかで受け取ってお好きな所に出力します。

# 標準出力への出力
print $tmpl->output();
# ファイルへの出力
open(FILESTREAM, ">hoge.html");
print FILESTREAM $tmpl->output();
close(FILESTREAM);

 次に制御タグの意味とスクリプト側での使用方法です。
 <!--TMPL_VAR NAME="hoge"-->は、この場所に文字列を挿入します。
 Perlスクリプト側では、HTML::Templateモジュールのインスタンスにparamメソッドを通してNAMEで指定した名前に対して文字列を設定します。

use strict;
use HTML::Template;
my $tmpl = new HTML::Template(filename => 'tmpl.html);
$tmpl->param(hoge => 'hogepiyofuga');

 <!--TMPL_LOOP NAME="piyo"-->はテンプレートにループ構造を与えます。<!--TMPL_LOOP NAME="piyo"-->と<!--/TMPL_LOOP-->で括られた範囲内にある物を反復表示する事になります。範囲内に<!--TMPL_VAR-->が無いと空ループになり何も挿入しないことになるようです。
 スクリプト側は<!--TMPL_VAR-->に比べると複雑になります。paramメソッド経由で設定した名前にオブジェクトを与える事自体は<!--TMPL_VAR-->と変わりませんが、<!--TMPL_LOOP-->に相当する名前に与えるオブジェクトは、<!--TMPL_LOOP-->内に置いた<!--TMPL_VAR-->に対応したハッシュへの参照の配列への参照になります。ややこしいですね。

# <!--TMPL_LOOP NAME="piyo"--><!--TMPL_VAR NAME="hoge"--><!--/
TMPL_LOOP--> に対するparamメソッドの例
use strict;
use HTML::Template;
my $tmpl = new HTML::Template(filename => 'tmpl.html);
my @tmpl_loop;
push(@tmpl_loop, { hoge => 'hoge' });
push(@tmpl_loop, { hoge => 'piyo' });
push(@tmpl_loop, { hoge => 'fuga' });
push(@tmpl_loop, { hoge => 'foo' });
push(@tmpl_loop, { hoge => 'bar' });
push(@tmpl_loop, { hoge => 'baz' });
$tmpl->param(piyo => \@tmpl_loop);

 多重にループした場合とてもややこしくなるので気を付けましょう。多重ループの可能性が高そうなtableタグ関連にはHTML::Tableというモジュールもあるのでそちらを使っても良いかも知れません。
 以上ざっと説明しましたが、CGIを作ったりしてる方、この機にHTML::Templateを使ってみては如何でしょうか?

ぱんつ先生の要望にお応えして

Filed in お知らせ

 文字の大きさを変えてみました。
 しかしスタイルシートをいじった物の、うちの環境では1ポイント変わった? ぐらいしか変わってないぽです。変わってないように見えるよ? という方はコメントでお教え下さい。

本を売った

Filed in 日記

 Book offに本を売った。計138冊、3450円でした。世知辛い世の中です。(´・ω・`)
 そしてゴスロリファッションの資料が見つかりません、多分間違えて売りました。もうだめぽ……orz

コメントの設定変えますた

Filed in お知らせ

 コメントの投稿にメアドが必要だったのをメアドの記入無しでコメントできるように設定変更しました。
 正味メアドっぽい文字列入れる手間が省けただけなのであんまり変わりませんが(´・ω・`)

りりこー先生もですか(´・ω・`)

Filed in 日記

 りりこー先生も本のおかげで部屋が狭くなってるらしい、長月も同類なので「あ~確かに困るよなぁ、買い控えりゃ良いのに買っちゃうしなぁ(´・ω・`)」と共感。
 どうでもいいけどなんだかりりこー先生へのTrackback率高し。

お絵描きロジックに大ハマリ

Filed in 日記

 最近ノノグラム、所謂お絵描きロジックに大ハマリです。やらなきゃ行けないことをほったらかしてまでやってます。最近2ch棋院に顔を出さないのも作りかけのプログラムを放置してるのもノノグラムのおかげです。でもD&Eは読んでます。もしかすると長月の一番の趣味は読書なのかもしれません。

またもりりこー先生のblogから

Filed in 囲碁

 りりこー先生がまたネタ振りしてるので便乗。
 今回のテーマは「対局中に用意するもの」
 長月が対局の時に用意する物は三つあります。一つは必須で残りはオプショナルです。
 長月は冷え性です。末端が物凄く冷えます。そしてキーボードとトラックボールはガラスのテーブルに置かれています。
 何が言いたいかと言うと、要するに冷えるんです。春夏秋冬関係無しに冷たいんです。放置すると手が物凄く痛くなりますし、思考に回せるはずのカロリーが生命維持に回されてしまいます。長月は集中すると呼吸を忘れるような人なので、気が付けば手がぷるぷるしてボールさばきが怪しくなることもしばしばです。なので対策が必要です。
 そこで用意するのがタオル。これをキーボードの手前とトラックボールの下に敷くと随分違います。冬だとこれでも足りないので、タオルの下に電気アンカーを置くこともあります。当然毛布にくるまっております。ストーブとかファンヒータとかエアコンとかが嫌いな長月は暖房器具を部屋に設置していないため、こんな事をしないと割と死ぬかもな状況にいるのです。
 そんなわけで対局の時とかチャットするときとかプログラム書くときにタオルは必須なのです。
 次にオプショナルだけどほぼ必ず用意されているのがコーヒー。
 長月はコーヒーが好きです。諸君、私はコーヒーがs(ry とか語れそうなぐらい好きです。通ではありません。割とインスタントとかでも無問題に暴飲します。いい加減肝臓が可哀想です。
 それぐらい好きな物なので対局時などのPCの前から動かなくなる時にはまず確実に用意されます。用意しないときもありますが、休憩がてら淹れたりするのでほぼ必須です。
 最後の一つはタバコです。
 これは本当にオプショナルです。集中すればするほど吸いませんから、正直無くても問題ありません。むしろタバコの本数で集中の度合いを測ってる所があります。
 別に集中できてないからどうこうという訳でも無いんですが、今回はあんまり集中してないなぁとか考えてる事もあります。そんなときにこそ勝ったりするのが皮肉です(´・ω・`)

対局中の癖

Filed in 囲碁

 是非2ch棋院bloger達にテーマとして送りたい題材です。ネタ元はりりこー先生のblog
 今回のテーマは「対局中の癖」
 りりこー先生は色々あるみたいですが、長月は癖と思える行動を一つしか持っておりません。そして出現条件は集中することの様です。モニタに向かってる時の方が出やすい様です。
 長月は囲碁に限らず集中すると呼吸を忘れます。割と危険です。プログラム書いたり読書したり囲碁打ったり、割と集中することが多い人なので余計に危険です。
 集中するとその内もうろうとしてきます、アレ? と思った時、思いだしたかのように呼吸が再開されます。
 いい加減その内死にそうです(´・ω・`)


Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
Oenology Post Formats
Click to view/hide

Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
Posts Calendar
Click to view/hide
2017年11月
« 12月    
 1234
567891011
12131415161718
19202122232425
2627282930  

Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
アーカイブ
Click to view/hide

Warning: sprintf() [function.sprintf]: Too few arguments in /home/users/2/lolipop.jp-dp07042166/web/wordpress/wp-includes/widgets.php on line 1042
最近の投稿
Click to view/hide