2006年12月31日

HTML を分解する正規表現

たのしいRuby」に載っていたものです。ただの正規表現ですから、Perl などでも使えるはずです。

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?

これで、$2 がスキーム名、 $4 がサーバアドレス、 $5 がパス名、 $7 がクエリー名、 $9 がフラグメントとして取り出せます。例えば次のような、Ruby のソースがあり、

str = "http://www.din.or.jp/~ohzaki/perl.htm#URI"
%r|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?| =~ str
print "スキーム名: ", $2, "\n"
print "サーバアドレス: ", $4, "\n"
print "パス名: ", $5, "\n"
print "クエリー名 :", $7, "\n"
print "フラグメント: ", $9, "\n"


実行すると次のようになります。

スキーム名: http
サーバアドレス: www.din.or.jp
パス名: /~ohzaki/perl.htm
クエリー名 :nil
フラグメント: URI

なかなか使えそうです。
posted by n_shimizu at 00:14| Comment(2) | TrackBack(0) | 日記2

2006年12月30日

Gmail 裏技

Gmail をメインのメールとして使うようになり何週間か過ぎました。

もちろん今までのメールソフトに溜まった10年分ほどのメールが必要だったり、他のアドレスを受信する必要があったりするので、Becky! は離せないのですが、何となく Gmail の良さ、不都合が分かってきました。

さて、表題の裏技ですが、はてなのページに次のようなものがありました。

Gmail の TIPS,裏技,アクセスキー,活用方法,ソフトウェア等を URI 参照系でなるべく多くあげていってください。

1年前の「質問」なので、その後の Gmail の大変化からすると、ちょっと古いものもあります。

その中で全部を見たわけではありませんが、使えるものを2,3あげてみます。

Gmailでメールアドレスの流出経路を調べる方法

つまり、「a@gmail.com」というアドレスなら、「a+(任意の文字列)@gmail.com」でも届く、という技。有名ですね。懸賞サイトなどに+懸賞サイト名で登録すれば、そのアドレスが、スパムに使われたとき、どの懸賞サイトから漏れたのかが分かる。それ以外にも使えそうです。

Gmailの送信先にグループを作る方法

アドレスの登録方法を工夫することであたかも「グループ」を登録したように使える技。

Gmailをスパムフィルタとして活用してみる

普通のプロバイダから提供されるメールアカウントなどに届くメールを一度 Gmail を経由することでスパムを振り分ける方法です。ここでのポイントは、「-in:spam」などのキーワードで迷惑メールボックスをフィルタに掛けることができるらしい、ということです(試していません)。

それ以外にもいろいろありそうですね。

【追記】2007/1/3

最後の「スパムフィルタ……」は現在では無効でした。「in」などを含む語をフィルタには掛けられないとのメッセージが出ます。しかし、転送や pop では迷惑メールをデフォルトではじくようになったようで、この「裏技」は必要なくなりました。
posted by n_shimizu at 16:23| Comment(2) | TrackBack(1) | 日記2

2006年12月26日

Vista は文字が化けるらしい

色々なところで報告があります。

IE7にオンライン・ストレージやWebメールで日本語ファイル名が化ける不具合
Vistaで化ける字,化けない字
Vistaで化ける字,化けない字(続報)

最初のものは正真正銘の文字化け(勝手にコードが変わる)、あと二つのものは Unicode の処理の問題と、インストールされているフォントの字形の問題。

名簿を扱う我々にとってまた悩ましい問題が起きてきたものです。
posted by n_shimizu at 22:16| Comment(0) | TrackBack(0) | 日記2

2006年12月23日

冬期休業……

12月22日をもって年内の通常の登校日は終了。12月25日より冬期休業日が始まります。本校は弾力的な運用の元、他の学校と夏期休業や冬期休業がずれています。通常ですと二学期終了!となるわけですが、二期制ですので「なんでもない」休みの開始です。もっともお休みなのは生徒だけですから、私自身は月・火あたりも通常に出勤(その後は休暇を取る予定)です。

しかし大変でした。

定期考査は通常の学校と同様12月にありました。情報でも試験を行いましたので、テスト問題の作成、採点。2学年に亘っているので約640名分です。また、テスト直前の最後の授業を Web作成最終日 としていましたので、直前の放課後は5F、1F それぞれに満員になるほど、作業をする生徒たちがやってきました。今回のハードルはかなり高く、


  1. 3ページ以上

  2. 表紙のファイル名は「index.html」

  3. 各ページにオリジナルな画像(写真でも、ペイントで描いた絵でもいい)

  4. 作ったページには表紙からリンクで辿れること

  5. 内容の充実度も含めて総合的に判断する



というものです。全部をクリアするのはかなりきついと思います。今まで情報の授業の内容が物足りなかった生徒や、今までの授業をしっかり身につけた生徒が達成できるレベルです。

やはり、3年生にとってはある意味「集大成」を問わないといけません。そのなかでみんなよく頑張ってくれました。

1FのLL教室では「Netscape Composer」、5Fのパソコン室では「Homepage Builder」を使いました。やはり1年生は全体的にスキルが高く Homepage Builder を良く使いこなしていました。しかし、3年生は内容面で充実していたものが多かったと思います(Composer は使いにくかったことでしょう)。

採点は……大変でした。やはり、ちゃんとリンクできていないもの、表紙が index.html になっていないものなど多くあり、生徒フォルダ内を調べながら見ていかなければなりません。自前のスクリプトも失敗し、全部手動で確かめました。

授業では「必ず新規ページは一度保存してから画像などを貼り付けるように」と言っていたにもかかわらず、先にぽんぽんと入れてしまう生徒が多数。すると画像のアドレスが、

file://///w2kserver/s1305$/DCV00031.jpg

のようになってしまいます。今現在編集中のファイルが一度も保存されていないと、画像ファイルとの相対的な位置が決まらないために絶対アドレスになってしまうからです。「百害あって一利なし」の機能だと思います。

しかしながら、このアドレスはパソコン室内では有効で、各生徒フォルダは全ての生徒に読み取り権限があるので、このままでも生徒達には普通に表示されます。ところが、全ファイルを一括してバックアップを取り、他のPCでローカルに表示させようとするとできません。パソコン室内でのみ有効な表記なのです。つまりきちんと採点するにはパソコン室で行うしかないのです。

そんなわけで、採点は 5F や 1F での部屋にこもって黙々と見ていきました。

採点の最後の日は気がつくと11時半を回っていて、最終電車を逃してしまいました。
posted by n_shimizu at 13:35| Comment(4) | TrackBack(0) | 日記2

2006年12月18日

Gmail 本格導入

メインのメールに Gmail を本格導入することにしました。

個人アドレスはリムネットという老舗プロバイダなのですが、ここがなんともヒドイ。もう運営会社は3回ほど変わってしまい、現在全くやる気がありません。

アクセス回線として Yahoo!BB を使っているのですが、ついに2007年1月より「Outbound Port25 Blocking」を行うことになりました。しかし、リムネットはSubmissionポート(587番)に対応する気は全くありません。つまり、自宅にいながら自分のメール送信ができなくなるのです。

そこで、リムネットに送信されるメールは全て Gmail に転送を掛け、Gmail の設定として送信元をリムネットのアドレスにするということで当分しのぐとします。

でも、「あちら側」を完全に信用しているわけではないので、どういう風にバックアップを取るか、よく考えなければなりませんね。
posted by n_shimizu at 02:31| Comment(6) | TrackBack(1) | 日記2

リンク検索プログラムは諦め

ずいぶん長い時間を掛けてしまいましたが、名誉ある撤退(?)です。

考えはこうでした。

1.大元のディレクトリを指定するとその内部のディレクトリを検索する。
 (「www」ディレクトリ内の「s1101」「s1102」……などの生徒ディレクトリ)
2.ディレクトリ内の「index.html」を探す。無ければ終了。
3.index.html の内部HTML のリンクを探す。
4.さらにそこから再帰的にその対象ファイルにたいしても検索を掛ける。
5.結果として、表紙(index.html)から二つのファイルを辿れればOK
(自作のファイルが合計3つになればOK)

というものです。

前回リンクの正規表現は何となくできました。
ディレクトリ内のindex.htmlを探すのもできました。

しかし、色々問題があって。

結果としてindex.htmlから次のページへのリンクはいいとして、次のページからindex.htmlに戻っていたりすると永久に循環してしまいダメだったり、リンク先がファイル名のみのもの、「http」で始まっているもの、「file」で始まっているもの、「¥¥server¥〜」等になっているもの、「T:¥〜」のように、ホームディレクトリを割り当てたドライブ名から始まっているもの……などもうばらばら。外部にリンクが張ってある場合もありました。

それらをいちいち場合分けして、自分のディレクトリ内だけのリンクの中から別ファイルを数えていくのは、労多くして功少なしとようやく気がつきました。

地道に、一つずつ開いていくことにします……。
posted by n_shimizu at 02:13| Comment(0) | TrackBack(0) | 日記2

2006年12月17日

リンクの正規表現

生徒が作った Web ページの採点をしなければならない。ところが、生徒が自由に作ったページはどこにリンクが張ってあるか見た目では分かりにくい。一見して分からないものはソースを見なければならない。しかし、ただ「リンクがある」ということだけならスクリプトでできないかと思い、考えているのだが、これまた難しい。

HTMLというのはかなり柔軟性(そして規則破り)が多数あるので、正確さは二の次として、次のような正規表現を試してみた。

/href="(.*?)">/

これでファイルの中に「href="ファイル名など">」という記述があった場合「ファイル名など」を取り出すことができる。ただし「target=」などという属性が付いているとそれまで抜き出してしまう。

採点のために少しでも楽をしようとプログラミングで唸っている自分はなんなのでしょう(笑)。
posted by n_shimizu at 02:23| Comment(0) | TrackBack(0) | 日記2

2006年12月16日

Winny(P2P技術)について考える

「Winny自体は価値中立で有意義」の司法判断、その影響は!?(@IT)

Winny そのものは使ったことはない。恐ろしくて使えない。しかし、技術そのものにはずっと注目している。上記記事の裁判長が言っているとおり「有意義」なものだと思う。一番大きなものとして「センターサーバを必要としない」ということだ。使ったことがないし、余り勉強していないので間違ったことを言っているかも知れないが、次のようなことを考えた。

学校のパソコン室を例に取ると、40人が一斉に100MBのファイルをダウンロードしたとすると、かなりの時間待たされることになる。40台のPCを相手にサーバがアップアップになるからだ。

しかし、Winny のような P2P 技術を使ったらどうだろう。最初にファイルを持っていたPCから1台目のPCへとコピーが完了した瞬間にサーバが2台になる。その2台からコピーが完了したPCはまたサーバになる。スイッチングハブがちゃんと動作すれば、100Mの帯域は、Peer to Peer としてフルで活用できるはず。

とても高速に全PCに亘るのではないか。

これが可能なら動画の大きなファイルを気軽に扱うことができる。今は「できない」と思っているからそのような授業を考えないのだが、「できる」ということになれば、また違うフェーズが見えてくる気がする。

ただ、全くサーバを使用しなくていいとも思わない。やはりセキュリティのこともあるし、一元管理という点でも「中央」は必要だと思う。

そこで双方の利点を生かしたシステムがあってもいいと思う。

各クライアントがこれだけ高性能になった。つまりクライアントPCがサーバを肩代わりできるようになったということだ。サーバをより巨大化する方向より、このような複合技術(それでいて安全に使える)がでてくることが望まれる。
posted by n_shimizu at 00:46| Comment(4) | TrackBack(0) | 日記2

2006年12月12日

またまたトラックバックスパム

IP 晒します。

69.13.185.99
69.13.185.98
69.13.185.100
69.13.185.101
69.13.185.102
69.13.185.103
66.221.55.23
66.221.55.24
66.221.55.28
66.221.193.2
66.221.193.5
66.221.225.231
66.221.225.233
66.221.225.238

日本で60から始まるIPアドレス自体あり得ないですから、ばっさりと切ってもいいんですけど、拒否しまくるのもどうかと思ってしまうのです。
posted by n_shimizu at 20:18| Comment(2) | TrackBack(0) | 日記2

2006年12月03日

そろそろ……

じっくりと取り組む必要が出てくる時期です。

仕事に役立つExcel VBA実用サンプルコレクション
渡辺 ひかる著 / 大村 あつし監修
ソフトバンククリエイティブ (2006.10)
通常24時間以内に発送します。



いわゆる、「技」本です。ある程度わかった後に「こんなことをやるのにはどうするのかなぁ」と辞書的に調べるのに使うのです。が、初めから、「おっ?」と思ったものはコードも見ながら、読んでいます(笑)。

かなり勉強になりますが、解説は殆どありません。



P.S.こうして試験問題を作るために夜更かししていたはずが、ブログに3つもエントリーして無駄な時間を過ごす n_shimizu でありました。
posted by n_shimizu at 03:15| Comment(0) | TrackBack(0) | 日記2

めちゃ読みたい

日本SF大賞に萩尾望都氏の「バルバラ異界」

がまんがまん。


バルバラ異界 1
萩尾 望都著
小学館 (2003.7)
通常2-3日以内に発送します。
posted by n_shimizu at 03:02| Comment(0) | TrackBack(0) | 日記2

Apacheのリダイレクト設定2(IISでは失敗)

前回と似て非なるリダイレクト設定のお話。

前回は自前で構築した教室のサーバでした。

今回は元々ある5Fのパソコンルーム(以下PC室)、つまり業者のリース物件です。ユーザ登録その他多少いじることはあったとしても、余り手を付けるのが怖い存在です。

PC室のサーバは、Windows 2000 server、Webサーバには IIS が起動しております。一応授業用webメールなどのセットの一部なのですが、ほとんど使っていないのが現状です。昨年の記事(12月31日ですね!)でも書いたように、生徒アカウントのホームディレクトリには、いわゆる「Documents And Settings」の中にユーザフォルダがありますが、まさにその中身そのものが入っている状態です。その中の「My Document」フォルダが生徒機の「My Document」からリダイレクトされている状態です。ここをそのまま公開したいのです。

しかし、たとえ前回の記事同様に、

E:¥userdata¥students¥

をドキュメントルートにしたところ、

http://(サーバ名)/(ユーザ名)/My%20Document/

という形でしかアクセスできません。去年はフォルダのアクセス権の変更方法が分からず、強引に全生徒分のデータを公開フォルダにコピーするバッチファイルでしのいでいましたが、それは余りにも……です。

IIS でのリダイレクト設定も色々試しました。しかしうまくできませんでした。そこで「えーい、こっちも Apache にしてしまえ!」と、サービスからIIS を止め、Apache をインストールしてしまいました。

設定は前回の記事とほとんど同様で、「L.361 付近」のエイリアスの設定が、

    AliasMatch ^/([^/]+)/(.*) "E:/userdata/students/$1/My Document/$2"

になっただけです。「My Document」の間のスペースがあるために「"」で括る必要があります。「"」で括る場合ドキュメントルートからの相対パスでは表せず絶対パスでなければならないそうですが、最初からそうしていたので今回は影響無しです。

これでうまくいきました。
posted by n_shimizu at 02:34| Comment(0) | TrackBack(0) | server