【爆笑】「1 1 5 8 だけで合計数字が10になる計算しろや」 2009-07-19 CGI,数学
ひさびさにいいこと 2009-04-08 Blogger,CGI,Web
(続) Blogger のブログリストにサムネイル 2009-03-31 Blogger,CGI
Shell 要らないもんね 2009-03-21 Blogger,CGI,Web,自然言語,数学
Blogger のブログリストにサムネイル 2009-03-20 Blogger,CGI
BDN: Feeds now include Media RSS thumbnails 2009-03-19 Blogger,CGI
フィードが… 2009-03-14 Blogger,CGI,数学


2009-07-19

【爆笑】「1 1 5 8 だけで合計数字が10になる計算しろや」

これは、昔からあるパズルだ。「切符パズル」とか「小町算」とか呼ばれる。

元エントリは「1 1 5 8 だけで合計数字が10になる計算しろや」アルファルファモザイク。

「1 1 5 8 を10にする」際のルールは、
  • 用いるのは + − × ÷ と ( ) だけ
  • 数字の順番は変えて良い
というもの。

で、まあ、これはしばらくやれば解けるわけだが、上記エントリでは正答を書き込んだ人への出題者の反応が笑える。また、外野の人の反応も爆笑。

とにかく、上のリンクをクリックして元記事をお楽しみくださいませ。

---

さて、今回は私の blog のほうの内容的にはこれで終了なのだが、それだけではあまりにも。。。

というわけで、おまけ: 大昔に私が作ったものを引っぱり出してきた。この手のパズルを解くプログラムだ。まあ、しらみつぶしをしているだけで何の工夫もないのだけれど。ちょうどいい機会なので4年ぶりに再公開。(笑)

あ、「3 3 8 8 で24を作る」という問題もお勧め。ルールは上と同じね。

4つの数字を + − × ÷ して、ある値にしましょう (カッコ使用可)

4つの数字:


どんな値にする?


数の並び順:
変更不可

(答は別ウィンドウで出ます)

注意:
  • 手抜きなので、数字以外を入力したりとかそういう意地悪はしないでください。
  • 数字は4つということで固定です。
  • 4つの数字で作る値と、順番を変えていいかどうかは選べます。
Enjoy!

2009-04-08

ひさびさにいいこと

[2009-04-07T21:46:00+09:00に携帯圏外にて]

思いついた。

---

今、東京・竹芝から父島へ向かう、おがさわら丸の船内だ。

到着まで25時間半かかるので、ずっと眠り続けるわけにもいかず、考え事してた。

「自分のブログの中だけでも、自動的に記事間のクロスリファレンスをしたい」

と何日か前に書いた件だが、できうる最善策をみつけた。

よく見かける、記事のラベル(分類)に頼って関連記事を表示する方法は最初から採用の余地すらなかった。そもそもラベル付け自体、投稿時に手動で行うこと。私は怠け者なので、超いいかげんになってる。だからラベルに頼って「関連」を表示するのは私のブログの場合はほとんど無意味なのだ。

早く、プログラム書きたい。

---

でも、連休明けまで小笠原でダイビング三昧。(笑)

だから、実際にプログラム書くのは帰ってから。

実際に動かしてみないとスピードがわからないが、機能をどこまで盛り込むかで調節できる。

---

帰ってからの楽しみができた。まだ目的地に行ってもないのにね。

(写真は、おがさわら丸Cデッキのず〜っと変わらない風景)


2009-03-31

(続) Blogger のブログリストにサムネイル

3月20日のエントリ で、 Blogger のブログリストにサムネイルが付くようにAtom フィードをする CGI を作って、レンタルサーバに設置してみた、と書いた。

今日の記事は、その続編。

Seesaa で公開されているブログにも、私のブログリスト上でサムネイルが付くようにしてみた。とは言え、 Seesaa のこのお方のブログは、もともと RSS 2.0 のフィードがあり、サムネイルへのリンクを img タグに持っている。だから、それをそのまま利用して media:thumbnail タグにするパイプを作った。その仕上がりは、いま現在のこのブログの右段のようになり、予想以上にかっこ良い。

その作業で分かったこと:Blogger のブログリストで表示できるサムネイルのサイズに、制限は無い。もちろん、サイズが大きすぎれば表示しきれないが、Blogger は関与しない。

3月19日のエントリで触れた、 Blogger Developers Network のアナウンスでは、確かに、ブログリストのサムネイルのサイズに言及していない。72 x 72 というのは、 Blogger の各投稿の最初の1画像をサムネイルとして用意する(そして、サムネイルへのリンクをフィードする)ときのサイズだ。  Blogger の外からのフィードの media:thumbnail タグの画像をわざわざ 72 x 72 にリサイズするわけではない。

というわけで、サムネイルは 150 x 150 程度になるようにしてみた。写真が美しいブログは、ブログリスト上でも写真が大きい方がいい、と思う。

2009-03-21

Shell 要らないもんね

レンタルサーバを借りている、という話は、最近、何回か記事にした。今回はレンタルサーバの話題。

---

「自作の CGI が設置できること」

このたった1つの条件の下、なるべく安いレンタルサーバのプランを探した。そして、見つけた格安サーバと契約した。その時点では、
プログラミング言語は Perl とか PHP とかのスクリプト系しか使えない、だって、 shell (ssh) が使えないから、 ftp しか手がないもんな

と思っていた。

でも、気がついてしまった:なーんだ、ちょっと頭を使えば(使わなくても?私が馬鹿だっただけ?)なんでもできるじゃん。理論的には、値段がかなり高い「shell 利用可能プラン」と完全に同じことができる。違いは、 shell 無しはとんでもなく不便、という点のみ。そういうのは私はむしろ面白いと思うほうなので、我慢して、楽しんじゃう。よかったよかった、 安いプランにしておいて。(笑)

---

手始めに、mathTeX



をレンタルサーバ上にインストールした。 mathTeX は、 数式を画像として表示させる CGI だ。サーバ上の本物の LaTeX と、画像ツール dvipng を動的に実行してくれる。

mathTeX は C で書かれているので、レンタルサーバ上でコンパイルする必要がある。念のため: 自宅とレンタルサーバは環境が違うから、自宅でコンパイルしたバイナリをサーバに持って行ってもダメ、動くわけないからね。

mathTeX のインストールが終わったのを一人で祝して、テストしてみる。 TeX などの数式清書系 (?) では一番最初に書くべきお約束の数式だ (いわば、Hello World! に相当する、かな?)。

わーい!

ちなみに、上の数式は HTML で
<img src="http://myservername/mypath/mathtex.cgi?$$x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$">
と書かれている。緑色部分は LaTeX そのもの。(ちなみに、どうせばれるのに隠した部分は qwnp 避け。)

これで、きれいな数式を blog で手軽に使える。実は、他人のサーバにある mathtex.cgi を勝手に使って負荷かけちゃ悪いと、長いあいだ遠慮してたんですよ。ちなみに私のサーバは、えーとえーと…負荷対策で制限かけてます。ですから、他のサイトからは私が今回設置した mathTeX は使えません。ごめんなさい。(この制限をクラックして破るのはほんの一瞬でできますが、ご遠慮ください。自分でサーバ立てましょう。笑)

数式も blog にいっぱい書いちゃうぞ。
CGI だって C で書いちゃうぞ。

2009-03-20

Blogger のブログリストにサムネイル

昨日の記事で書いた、サムネイルが表示される機能。

私が借りたレンタルサーバ上の、 CGI スクリプトの1つにさっそく実装してみた。



ついでなので、公式の The W3C Feed Validation Service で Atom フィードとしてダメですよ、と大量にエラーが出ていた部分も直した (☆)。これで完璧、なはず。。。

この手のことは、できてしまえば簡単。逆に、すぐにできないものはいつまでたってもできない。

でも、実は必要になったので、陰でこっそり、libjpeg だの ImageMagick+PerlMagick だのをソースを拾って来てコンパイルしていた(ソースから始めたのは、安直にバイナリパッケージを拾って来たら動かなかったから)。あははは。最近、画像で遊ぶときには Photoshop でばかりやっていて、自分のマシンにこういう必須アイテムがないのを気づかずにいたとはね。(汗)

Perl で、自動的に画像を弄れるのは楽しい。せっかく CGI を動かせるレンタルサーバを借りたのだから、何か、別の面白いこともやろうかな。
「Blogger のブログリストに表示されるようにサムネイルを送信するということ」は簡単でした

というご報告だけで、詳しい内容の説明はしなくていいでしょ?

Atom フィードの規格が理解できて、閲覧者のブラウザやフィードリーダの攻撃に負けない CGI を書ける人なら、昨日のエントリのリンクを辿るだけで全ての情報にアクセスできて、充分なはず。

あ、プログラミングには自信があるけど英語が読めないって?うーん、強い要望があれば、和訳をやってもいいけど。。。そういう人は、英語の勉強したほうが、将来のためにはいいんじゃないですか?

---

最後に☆の件: <entry> の子要素の <id> の中身が問題だった。フィードの中で一意であればいいのかと、私が誤解していた。ちゃんとした URI である必要があった。まあ、たいていのフィードリーダは良きに計らってくれるから実害はない。

で、<id> に使える、ちゃんとした URI なのだが。

ポピュラーだという点で、世界で日本が一番な、MovableType という「世界標準の CMS プラットフォーム」がある。MovableType が blog エントリの <id> の中身として、 RFC4151 の tag: で始まる URI を使っている、という話を以前どこかで読んだ。だから、まず、真似をしてみた。

だめじゃんか。上記の The W3C Feed Validation Service には「tag: ってのは正式な URI として認めてあげないからね」って、怒られた。大ショック。大手さんとこ(?)の真似しただけなのに…。というわけで、 "http://怪しいサーバのアドレス/こんな/ディレクトリ/実際には/ないよ" という形式で <id> を付けた。すると、怒られなかった。それどころか「おめでとう!あなたのフィードは完璧です」と褒められたよ。(笑)

五十歩笑百歩じゃないかなあ…。

2009-03-19

BDN: Feeds now include Media RSS thumbnails

Blogger の「ブログリスト」(blogroll とも言う)の関係で、フィードで遊んでいた。設定用画面に



"Thumbnail of most recent item" という怪しいチェックボックスがあるのが気になった。

で、まじめに調べてみた。すると、この記事Blogger Developers Network: Feeds now include Media RSS thumbnails を発見。

おお。面白そう。

自前で立てた Atom フィードサーバに実装しちゃおうかな、っと。

---
今日は、上の情報の在処を忘れないように、 blog をメモがわり。

2009-03-14

フィードが…

前の投稿(2009年3月10日)で「フィードがどうの」と調べたおかげで、フィードがない日記風のサイトが気になりだして、JavaScript でいろいろ遊んでいた。

確かに自分の blog に「おすすめ blog」としてリストアップしている脇に個別の最新の情報がちょびっと記されるのは素敵だ。

---

フィードがないサイトをフィードに変換するというサービスを調べてみた。検索をかけたらすぐに、「RSSを配信していないサイトをRSSリーダで読む方法」と題する blog の記事がヒット。でも、この人、列挙してるだけで技術的な説明が全然ないよ。営業の人なのかな?

そこで挙げられている4つのサービスのうち、サーバを自前で持たずに使えるのは3つ。そのうちで、東京工業大学の奥村研究室以外の2つ (MyRSS, goo フィードメーカー) は、ほぼ同じ方法だ。以下、いいかげんに説明する:

あるページ(goo の場合は div ブロックでも可)をユーザが指定する。するとサーバは、指定された範囲内の A 要素をなるべく頻繁に監視する。ただし、 A 要素を踏んだ先のページは見に行かない。 監視範囲内で、 A タグ href 属性の右辺 "RCDATA" の変更、あるいは A タグの増加(実は両者は区別できない)があったら、それに気がついた日時とともにリストアップして保存する。細かいことだが、既にリストアップされていた "RCDATA" を持つ A タグが消滅した場合、リストからは消去する。そうやって作った「新着リスト」は、ユーザが訊けば、フィードという形式で(最大15件とか24時間以内の全てとかを)教えてくれる。 ちなみに、ユーザが何回訊いたって、「新着リスト」自体が更新されてなければ同じリストしか返ってこない。

[goo の場合は、「監視」して(その必要があれば)リストを更新するという作業は1日おきだが、お金を払えば30分おきになるというあざとい商売もやっている。そもそも、goo では指定ブロックの中から特定のタグを監視除外に指定できる機能があるんだけど、これはよく考えれば(★)仕様自体がバグ。無料の場合は指定できるブロックの総数に制限があり、お金を払えば緩和されるので、それと関連付け誤解させようというあざとい手口だ。]

東工大奥村研の方法は全然違う。日記風の1ページが対象だ。指定されたページから、まず、年月日の情報らしきパターンとそれに伴う本文らしきテキストを自動的に抽出する。ユーザが訊くと、抽出された日記情報のリストを、フィードの形式にして教えてくれる。なかなかのすぐれものだと思う。しかし、ここは学術的な実験サーバである。だから、指定されたページの情報を、直後の30分間、保持してくれるにすぎない。もし30分以内に日記に変更があったとして、ユーザが訊きかえしても、「抽出」の作業を繰り返したりはしない。つまり、実用には全然使えない。

ちなみに、MyRSS は10日、 goo は3ヶ月、ユーザが訊かずに放置すると、「監視」すること自体をやめる。長期で僻地へ旅行してフィードが読めなかったというような場合、帰ってきたときこそ「新着」が読みたくなりそうだが、そういう用途には全く向かない。もし、自分は読まないけど、監視はやめさせたくないなら、たとえば、blog のサイドバーの中で MyRSS や goo で作ったフィードを使うとよい。すると、誰かが blog を訪れるたびにサイドバーからフィードが参照され、放置にならない(厳密にいうと、 Blogger のシステムの場合はページの表示を速くするために Blogger 自身がキャッシュしている気配があるが)。あ、 FeedBurner を使うという手もあるな。

---

「RSSを配信していないサイトをRSSリーダで読む方法」という上の blog のタイトルで、もっとすごい技術のように誤解してしまった。これは私が悪いんだろうな。ごめんなさいね、お馬鹿で。

というわけで、これだけコンピュータの性能が上がったのに、もし有料ならせこいサービスかも、と思ってしまった。

まあ何にせよ、クライアント側で blog に埋め込まれた JavaScript が動いてやる作業ではあり得なかった。(笑)

---
2009/3/17 20:31 追記: けっきょく、 blog 風のページだけど既存のサービスではフィードにできない、そういうページに関しては、 Perl で CGI を書いて個別に Atom フィード対応した。それをこの blog で受け取って右段に表示してある。 CGI が設置できるレンタルサーバってけっこう安いし、 CGI 書くのも難しくなかった。(フィードの元のページのデザインが変わると、CGI をそれに合わせるというメンテナンスが必要、というのが大問題だけど…。)

★: 自然数 (時刻) t で定まる集合 A(t) とする。 A(t+1) と A(t) の「新着」とは差集合 A(t+1)-A(t) だ。オプション「時刻 0 での A(0) の要素 x は新着から除外する」が意味をもつのは、 t=0 より後に x がいったん A(t) に含まれなくなり、訊いた時刻 (にもっとも近い監視時刻) に含まれた場合のみだ。そもそも、「除外する」というユーザの希望をサーバは永遠に保持するのか?3ヶ月で忘れたりしないのか?それに、消滅した A タグが復活する(そしてそれは新着から「除外」したい)というページ範囲は、おそらく、ユーザが「除外」したくなるような A タグが他にも 消滅/復活 を繰り返す性質を本来持っているのではないか。だから、今は存在してないけど、将来、現れたときにいちいち「除外」という希望を新規設定しに goo にログインするの?それでは自動でも簡単でもなんでもなくて、面倒くさすぎ。フィードじゃなくて、元ページを自分で巡回したほうがいい。完全に不要な機能だと思う。