良書
2001年3月31日(土) 00:00神崎正英さんの『ユニバーサルHTML/XHTML』毎日コミュニケーションズ(ISBN4-8399-0454-5) は前から買おう買おうと思っていた一冊。やっと購入。 これは良書です。お勧めします。
結城浩の日記
神崎正英さんの『ユニバーサルHTML/XHTML』毎日コミュニケーションズ(ISBN4-8399-0454-5) は前から買おう買おうと思っていた一冊。やっと購入。 これは良書です。お勧めします。
[JN] 書き書き。
[EP] 書き書き。
[JN] 連載執筆週間その1。 UNIX USERの連載原稿書き書き書き書き。 今回はlog4jの話題。
[EP] 連載執筆週間その2。 C MAGAZINEの連載原稿書き書き書き書き。 今回はHTML::Parser, HTML::Filter, HTML::LinkExtor, HTML::HeadParserの話題。
家内に「ねえねえ、perl-lesson MLに高校一年生の女の子が登場したんだよ」と話したところ、 その喜び方はおじさんっぽいわねえ、と苦笑される。 ごもっともです(^_^;
[DP] 今日は、編集部でデザイナーさんと打ち合わせ。 その後、編集の方々と一緒に食事の予定…。 とても楽しみ。
[MAP] すごく久しぶりに翻訳の仕事に戻る。 編集の方には申し訳ないけれど、これからまたがんばることにしよう。
【今日の単語】 The big trick for constructing elaborate data structures is ... 凝ったデータ構造を構築するための大きなコツは…
[DP] コンセプト図の欠けていたものを描き、編集部へ送付。 読者の方からときどき、 『Java言語で学ぶデザインパターン入門』はいつ出版されるのかというメールをいただく。 とてもうれしい。現在誠意校正中です。 春の終わり頃には出版されるでしょうか、どうでしょうか…。
今週は連休前進行連載原稿集中執筆週間になる予定。
[Letter] 購読者(というのだろうか…)は現在約200名。感謝します。
[IGEN] 異言のページをごらんになった読者からメール。 感謝します。
\documentclass{jarticle} \begin{document} \begin{displaymath} \sum_{n=0}^{N-1} x_{n} \end{displaymath} \end{document}
[JN] log4j調査中。
[JB] 読者から誤りの指摘をいただく。本当にありがたいものである。
[DP] 編集部の丁寧な原稿整理作業は続く。 今週打ち合わせ予定。
[EP] 次回の原稿ネタはHTMLになる予定。 HTML作成の話になるはずが、いつのまにかHTML解析の話になりつつある不思議。
以下は、HTMLメールは避けたほうがいいという結城の意見に対する読者からのコメント(抜粋)。
初心者にとっては、色もつけられない、強調も難しいテキスト形式よりHTML形式の方がはるかにいいと思うのですが。 テキスト形式に、MS-Wordのファイルを添付されるよりはHTMLメールの方がいいと思いませんか? 容量が増えるとか言ってる人がいますが、画像などの添付ファイルが あたりまえになってる時代に、テキストが10倍になっても関係ないと思うのですが…。
結城は、この読者のお気持ちは理解できますし、 テキスト形式とHTML形式があるということを理解した上で、 意識的にHTML形式を選んでいる人にまで文句を言おうとは私も思いません。 でも、結城はやはり「テキスト形式をお勧め」するのはよいことだと思っています。 なぜって、(これは私の想像ですが)HTML形式を使っている人の大半は、 テキスト形式とHTML形式のことを知らずに使っているのですから。 そして、メーリングリストに参加して、周りの人から「HTMLメールですよ」と言われ (場合によっては叱責されたり、無知扱いされたり…)、 いやな思いをすることになるからです。
要するに、 知っててやってるなら文句を言う筋合いじゃないけれど、 知らなくては損をする可能性があることを言っておくのはよいことじゃないかな、 と結城は思うのです。
というわけで、引っ越し完了。 今回は、 0123のアート引っ越しセンター を使いました。 とても手際がよく、またスタッフ全員がたいそう礼儀正しい人たち。 電話応対、見積もり、梱包、搬送と搬入、開梱は全部別スタッフだったのですが、 すべて同じトーンで礼儀正しかったです。 満足度は◎です。 好印象だったので、ここでご報告いたします。 ◎になったポイントを以下に列挙します。
読者の方(特に初心者の方)へ。 自分が送っているメールが 「HTML形式」 になっているか 「テキスト形式」 になっているかご存知ですか。 メールは「テキスト形式」にすることを強くお勧めいたします。 もしもあなたが、自分の送っているメールがどちらの形式かわからないなら、 HTML形式になっている可能性が高いです。 自分の使っているメールソフトのオプションメニューなどで、 メール送信の形式を「テキスト形式」に直しておきましょう。
特に、あなたが技術系のお仕事をしているなら、 すぐにチェックしておきましょう。 特に必要がない限り、HTML形式でメールを送ると 「メールを使い始めたばかりの初心者」という印象を相手に与えます。
備忘録。
メールマガジン発行についてのメモ(まぐまぐの場合)
結城浩の[Letter]を「まぐまぐ」に移行しました。 もしよろしければ、あなたもご登録ください。 あなたのメールアドレスを登録していただくと、 結城からの[Letter]が、あなたのメールボックスにときどき届くようになります。
[Letter]では、特に決まった話題はありません。 結城がいつも この日記に書いているような内容のメールになるでしょう。 日記と違うのは、[Letter]の文章はいつも 「あなたへのお手紙」というスタンスで書かれる点です。
登録・解除もすぐにできますので、お気軽にぜひどうぞ。
長男の卒園式。泣けてくるものですね。 特に、最後に、賛美歌をみんなで歌う中、 子どもたちが順番に退場するのを見ていて、 涙が止まらなかった。
とても場違いなのだが、私はそのとき、 「死」というものについて考えていた。 この世ではひととき別れても、天国ではまた会える。 この世の死というのは(ある意味では)卒園式、卒業式のようなものかもしれない、と。
子どもたちは幼稚園で力いっぱい遊ぶ。 風邪を引くときもあるし、友達とけんかをするときもある。 泣いたり、笑ったり、どろんこになったりする。 けれども幼稚園という場所で時を過ごし、 そこでなすべきことをなし、成長していく。 定められた時が過ぎ、卒園の時をむかえる。
「ああ、この楽しい日々がいつまでも続けばいいのに。 明日も、あさっても、いつまでも。 どうして終わりが来るのだろう」
けれどもなぜか始まりがあり、終わりがある。
私たちの人生もこれと似てはいないだろうか。 なぜかは知らず、あるときある場所に生まれ、 人生という時を過ごす。 喜んだり、悲しんだり、愛したり、憎んだりする。 そしていつの日か、主が定められた時に、 この世の命は終わりをむかえる。
「ああ、どうして死などというものがあるのだろう」
けれども確かに「死」というものがある。 そしてそれをしっかりと見すえなければ、 「生」の輝きも、意味も、その大半を失ってしまう。
私たちのこの世の人生には確かに、終わりがある。 そして、かけがえのない今がある。
[JN] UNIX USER向けの原稿書き。 夜中に送付。
クイズ : 誰の日記でしょう。
こうやってみると、巡回する日記って、昔からあまり変化がない。
[JN] UNIX USER向けのプログラム一応完成。次は原稿書き。
[PQ/P] メールマガジン『Perlクイズ』≪パズル≫を送付(問題編)。
昨日は早めに帰宅し、夕食の後、こんこんと眠り込む…
結城を眠らせ。結城の上に雪ふりつむ。
…気がつくと今日の朝である。 体調はだいぶ回復している。 睡眠は偉大である。 そもそもここ一日二日ほど低気圧が来ているのがよろしくないし。
[JN] UNIX USERの原稿書きで大忙し。
[JB] 『Java言語プログラミングレッスン』が増刷されるというメールを編集長よりいただく。 ご購入くださる読者のみなさんに心から感謝し、 恵みをたまわってくださる主なる神様に栄光をお返しいたします。 そうだ、この本は神さまにささげた本なのであった(献辞参照)。 感謝、感謝。
このクイズは出しましたっけ。 『Java言語プログラミングレッスン』上下巻を通して、 「祈」(いのり)という字が二箇所、 「贖」(あがない)という字が一箇所登場します。どこでしょう。
その他にも、 例えば「この世のおわり」とか「すべてが益になるとは限りません」なども 『Java言語プログラミングレッスン』の中にあります。
いや、だからどうだというわけじゃないんですが…。
確かに、卒園式は泣けるかもしれない。 うちの長男も今年、卒園。
午前中、雪。 何だか体調がすぐれず、午前中はこんこんと眠り込む。 午後はぼうっとしながらプログラムを書く。 しかし、Googleは便利だ。わからないことをそのまま検索してしまうと、 とりあえずの答えがすぐに得られる。 と思っていると、YAMDAS Projectの薀蓄linksでGoogleが取り上げられていた。
[Letter] 2000年9月から送っていなかった[Letter]を久しぶりに送付。 現在、[Letter]をメールマガジン配信の「まぐまぐ」に移行させようと思って申請中である。 これまで、[Letter]は自作のメール配信システムを使っていた。 しかし、アドレス不達がけっこう頻繁に起こり、少し手間が増えてきた。 そこで、新年度、新学期というアドレスが変わる時期になる前に、 もう少しちゃんとしたシステムに移そうと思ったのである。
[perl-lesson ML] Perlのメーリングリストperl-lesson MLは、 参加者が180人を越えました。 感謝します。 平和で楽しいメーリングリストになっています。
[PQ] メールマガジン『Perlクイズ』Wakaba.0040を送付。 今回は初心者向けの≪若葉マーク≫である。
エクストリームプログラミングの中に、 ペアプログラミングという技法がある。 私自身はペアプログラミングを行ったことはないが、 直感的に「よい技法」であるような印象を受けた。 しかし、実際にペアプログラミングを日常で行える人は まだ少ないかもしれない。 そこで、ペアプログラミングのよいところのいくぶんかでも、 1人でプログラミングしているときも享受するための 方法(矛盾していますが)を考えてみたいと思った。 まだ書きかけのメモ程度だけれど、以下に公開。
ふと気が付いて、サーバのアクセスログを解析してみたところ アクセスカウンタサービスの負荷が半端ではなくなっていたので、 新規作成を一時中止します。
[EP] 編集部へ原稿送付。今回はXML::RSSの簡単な例。 要するに、www.TEXTFILE.orgを作成するためのスクリプトである。
1歳半になる次男の語彙が増えつつある。 私のことは「とー」、 家内のことは「かー」という。 バナナのことは「ばー」、 リンゴのことは「くんごー」。 長男の影響で「ピカチュー」ははっきり言う(^_^;。 最近は、みかんを「ミカチュー」と呼ぶようになった。
[PQ/Web] Web連載『結城浩のPerlクイズ』は隔週連載で早くもVol.17になった。 メールマガジン『Perlクイズ』を元にして結城が整理したものを SOFTBANK BOOKSさんに掲載していただいている。 アクセスログを見ると、SOFTBANK BOOKSさんからwww.hyuki.comに やってくる読者もいて、うれしいことである。 また『Perl言語プログラミングレッスン』入門編出版後は、 書籍の宣伝もそのコーナーでやっていただいている。感謝。
アクセスログを見ていると、 無料アクセスカウンタサービスからジャンプしてくる人もいることがわかる。 無料アクセスカウンタサービスというのも地道に広がる宣伝方法ですね。 ところでこの無料アクセスカウンタサービス以上に 簡単にアクセスカウンタを作成できるサイトはない、 と私は自負しています。 何しろ「作成」というボタンを押すだけなのですもの。
Linuxのディストリビューションの1つMLDのMedia Lab.さんからメール。 何かと思ったら、Xpdfの紹介ページでサンプルPDFとして結城の『賢者の贈り物』の スクリーンショットを出しているとのこと。 なるほど、フリーの文書はこういう使い方もあるのか…。
こんな風に利用されるのはとても気分がいいので、日記にてご紹介(^_^)
[EP] Cマガジンの連載原稿書き。 今回はRSSのお話。 textfile.orgでの経験を書きます。 それにしてもPerlは本当に便利な言語だ。 プログラムがすぐにできる。 無駄な前置きはいらず、すぐに本題に入れる話し相手みたいですね。
日記ダイジェストを更新しました。
共有日記を模様替えした話はここでアナウンスしましたっけ。 少し春めいて。
「あなたは好きなことをしていて仕事になるからいいわねえ」 と家内からよく言われる。 確かに自分でもそう思うんですが、 もともと、好きなことしかしていない、という話はあります。 でも好きなことをどんどん推し進めていると、 いつかどこかで仕事に結びついてくれるからうれしい。 私はお金儲けってあまりうまくないし、 お金のことを考えて仕事をすることって少ない (そして会計担当の家内からは「もっとちゃんとして!」とクレームがつくのだが)。 プログラム書きでも、雑誌の連載でも、ホームページの運営でも、 本を書くことでも、メールマガジンでも、メーリングリストでも、 自分の心に響くこと、「これは面白い」と心から思えることをやっていると、 それがいつか仕事として形になり、結果としてお金にもなる。 そういうパターンが多くてとてもありがたい。 感謝なことである。 神さまの恵み(というか、あわれみ)なのかもしれない。
しかし、今でこそ、こんなに達観したような、 偉そうな文章を生意気に書いているけれど、 20代の頃はずぇんずぇんこんな感じではなかった。 いろんなことがつらかった。自分の居場所がない、 自分はいったい何をしているんだろう、何をすればいいんだろう、 どうするどうする、…とドタバタしていたのをよく覚えている。 無駄なこともたくさんしたし、馬鹿なこともたくさんした。 荒れ狂う波に浮かぶ木の葉のようにふらふらゆらゆら…。
だから、思うのだ。 あの頃の私のような時期を、いま、過ごしている人がいる、と(実年齢とは無関係)。 そういう人に、心からエールを送りたい。 「人生」には本当にいろんなことがある。 あなたの現在の知性ですべてを判断しないで。 本当にいろんなことがある、いろんなときがある。 喜ぶときがあり、悲しむときがある。 愛するときがあり、別れるときがある…。
これを読んでいるあなた。あなたのことを、応援しています。
神さまの励ましが豊かにありますように。
忙しい仕事がちょっと一段落した。 ほっと一息。感謝、感謝。 そして次の忙しい仕事へ。
[PQ] メールマガジン『Perlクイズ』No.0066を送信。 購読者数はいつのまにか4020人にも上っていました。 購読くださる読者のみなさんに感謝します。 ちなみに解答を送ってくださるのは毎回20〜40人くらい。 つまり購読者の1%未満ということですね。
家内の熱は下がりました。 癒し主なる主の御名を賛美し、 お祈りくださったみなさまに感謝します。
読者からの質問 C言語でCGIの作り方を勉強したいです。 何から始めたらいいですか。 いろいろ調べましたが、getenv()とか知らない関数が出てきて困っています。 CGIを基礎から勉強するにはどうすればいいですか。 返信 結城浩です。 ・CGIを基礎から学ぶには、 拙著『Perlで作るCGI入門』基礎編をお勧めします。 http://www.hyuki.com/cgibook/ ・CでCGIを書く例は以下にあります。 http://www.hyuki.com/cmcgi/ ・CでCGIを書いている本は、本屋さんに行けばたくさん見つかると思います。 ・getenvについては、 UNIXならman getenvで解説が見られるでしょう。 ・あとはCGIのメーリングリストの過去ログを調べたり、 質問したりするのがよいでしょう。 http://forest.ne.jp/cgi-ml/ (ここは結城が管理しているMLではありません) Enjoy CGI!
家内が熱を出して床に着く。お祈りください。
[DP] 原稿と図版の不整合を全部チェックしなおす。 もう一度プログラムを全部コンパイルしなおして、実行テストを行う (原稿からJavaのソースを切り出して、 コンパイルと実行を自動的に行い、ZIPで固めるようなPerlスクリプトを作ってあるのだ)。
そして夜。 『Java言語で学ぶデザインパターン入門』の原稿を編集部に送付。 ようやく、一区切りである。 応援してくださる皆さんに、レビューアの方々に、家族に、そして神さまに、感謝。
春は、もうすぐ。
[DP] Memento, Flyweight, Command, Interpreterパターンおよび付録を校正。 StateとProxyのサンプルプログラムを、 レビューアからもらった意見を参考にしつつ修正しようと試みるが、難しい…。 実際に書き直そうとすると、 なぜもとのサンプルプログラムがそうなっていたのかの理由がよくわかる。 プログラムは絶妙なバランスの元にあるのだなあと思ったりする。 でも、そんなところで感心ばかりしてはいられない。 修正するならする、しないならしないときっちり考えなくては。 残り作業はプログラムの修正と、それにともなう図版の変更など。 何とか明日くらいに一区切りつけたいなあ…。 加筆しているときりがないし…。
今月は、住まいの引っ越しもあって忙しい。 長年住んだ武蔵野ともお別れである。
[DP] ChainOfResponsibility, Facade, Mediator, Observerパターンを校正。
なんだかむちゃくちゃ忙しいんですけれど…。
こういう時には、祈って、平安のうちに仕事。
ところで昨日の'E'の件ですが、 さっそく2人の方から提案がありました。 2人ともまったく同じでしたので、それを採用させていただきました。 感謝します。
East of Eden (John Steinbeck)
[DP] Iterator, Strategy, Composite, Decorator, Visitorパターンを校正。
急募:'E'で始まる有名な本の名前をどなたか何か知りませんか。
bookShelf.appendBook(new Book("Around the World in 80 Days")); bookShelf.appendBook(new Book("Bible")); bookShelf.appendBook(new Book("Cinderella")); bookShelf.appendBook(new Book("Daddy-Long-Legs")); bookShelf.appendBook(new Book("E")); bookShelf.appendBook(new Book("Frankenstein")); bookShelf.appendBook(new Book("Gulliver's Travels")); bookShelf.appendBook(new Book("Hamlet"));