[ 0036: 2次元ブックマーク ]
[ 湯会老人の出題 ]
私は既存のブラウザーのブックマークが好きではないのです。
縦に並べるにせよ、横に並べるにせよ 1 次元。
項目が多いとスクロールが面倒。
2 次元ブックマークの HTML ファイルを自動で作るプログラムを書いてください。
Perl で書くのであれば、実行は:
$ perl create_bookmark.pl < list > bookmark.html
テキストファイル list の各行は:
① URL (非空白文字列)。
② 1個以上の空白文字。
③ 説明 (非空白文字列)。
こんな感じになります。
http://obiwan3.greater.jp/ 奇想天外ホーム
https://mail.google.com/mail/u/0/?pli=1#inbox Gmail
https://www.wolframalpha.com/ Wolfram|Alpha
http://kubrick.blog.jp/archives/52018394.html HAL9000の反乱
https://www.youtube.com/watch?v=h8PzQODTw_k Caro_mio_ben
https://www.youtube.com/watch?v=9jK-NcRmVcw Final_countdown
....
https://www.youtube.com/watch?v=lFktfr1kmHc Queen_of_the_Night
https://www.nfl.com/ NFL_Official
https://www.youtube.com/watch?v=r5BGIi84arY Ramanujan
https://www.youtube.com/watch?v=cvG77iyFvlU 1869MIT問題
....
[ 浅見多絵さんの回答 ]
とりあえず書いてみました。Perl と HTML の基礎はわかります。
わからないところは疾矢君に聞きました。
いつもの口癖で「多絵さん、こんなの朝メシ前だよ」と言いますので、
つい私も頑張ってしまいました。
...
print <<"EOS";
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
<head>
<style>
body {line-height : 6px ; }
</style>
<title>
2次元ブックマーク
</title>
</head>
<body bgcolor="#00ddcc">
<table border="1" bgcolor="#cceeff" cellpadding="3">
EOS
$td = '<td valign="middle" ';
$td .= 'align="center" ';
$td .= 'width="150" ';
$td .= 'height="15" ';
$td .= 'bgcolor="#ffeeee">';
$n = 0;
@lines = <STDIN>;
foreach $line (@lines) {
goto match_error unless $line =~ /(\S+)(\s+)(\S+)/;
$n++;
print '<tr>' if ($n % 4 == 1);
print "$td";
print "<a href=\"$1\">";
print "$3";
print '</a>';
print '</td>';
print '</tr>' if ($n % 4 == 0);
print STDERR "Matching OK\n\"$line\"\n($1) ($2) ($3)\n";
next;
match_error:
print STDERR "Matching error\n\"$line\"\n($1) ($2) ($3)\n";
}
print <<"EOS2";
</body>
</html>
EOS2
|
[ 湯会老人のコメント ]
多絵さん、ご苦労さま。やることが速いですね。
ところが、実際に実行しますと、「Matching error」が出る行がいろいろあります。
私にも原因がわかりません。しばらく考えてみます。
/(\S+)(\s+)(\S+)/ というパターンマッチングの指定は全く間違っていません。
Perl のバグなのかな。
[ 千手春弥さんのコメント ]
私が気がついたのは: $td を一つの文字列("....")であらわすと
syntax error になること。変ですね。
多絵さんもそれにぶち当たって、文字列の結合にしたのでしょう。
[ 湯会老人のコメント ]
iPhone である設定をすると、 iPhone を横向きした場合、
画面表示も横長にすることができます。
[ 千手春弥さんのコメント ]
私もやってみました。メール機能に使うと見やすいですね。
[ 湯会老人のコメント ]
横長表示にすると、画面にあらわれるキーボードが大きくなります。
押し間違えがなくて快適ですね。
|