livedoor Readerで左のフィードをダブルクリックするとエントリが表示できなくなってしまう。厳密には、左のフィードをクリックしてから、右のエントリ表示に時間が掛かっているときに、もう一度左の同じフィードをクリックするとこうなる。再現率は狙ってやればかなり高い。
フィードをクリックできたのか判別が難しいので(たまにクリックしたつもりでずっと待ってることも)、毎日一回はこのエントリ消失をやってしまう。しかも、戻せないから辛い。
livedoor Readerは出た日から使っていて、最初のうちはすぐ直るかなと思っていたけれど、なかなか直らないので誰もこの現象に出会ってないのかと思うこの頃。
もし最速さんがこのエントリを見つけてくれたなら、何か対策を考えてやって下さいまし。
小説好きはダンジョンゲームをやってみよう
正確なジャンル名は知らないけれど、3Dで描画(ポリゴンの必要はない)されたダンジョンゲームは昔から好きだった。ダンジョン系のゲームではストーリーのないことが多い。あらすじくらいはあっても、実際のゲーム上では先に進むのみがほとんど。こんな無味乾燥なゲームがなぜ面白いのかと自分でも疑問だったけれど、ダンジョンゲームは総じてファンタジーなのではないかと思った。非日常の設定なのだと思う。迷路を解いたり、迷路を書いて遊んだりすることはあっても、実際の立体的な迷路に相対することは人生の中でほとんどないだろう。まして、モンスターなどは現れない。
ダンジョンゲームで一番有名な作品はWizardryではないかと思う。Wizではいくつか特徴的なシステムがいろいろあって、まず主人公という概念がない。キャラクターは自分で作り、パーティーも自分の思う組み合わせで組む。宿に泊まるとキャラクターが年をとったり、死亡すると灰になり最後にはロスト(消滅)するなど独特のシステムが際立っている。
こういったシステム的な面で衝撃的だったのがダンジョンマスターだ。ダンマスの最大の特徴はリアルタイムであること。自分が何も操作しなくてもモンスターは攻撃を仕掛けてくる。また、時間が経つと扉がしまったり、罠が発動したりと、本当に手に汗握る感覚がある。回復は寝るという行為で行うけれど、寝ている間もモンスターが近くにいれば攻撃されてしまい目を覚ます。安全に寝るためには扉で囲まれたような場所を探す必要がある。
こうしたリアルタイム性と3Dの表現を突き詰めるとKING’S FIELDのようになる。昔のダンジョンゲームでは地下1階、2階というように階層で立体を区別していたけれど、KING’S FIELDではポリゴンになっているため、階層の概念がない。階段を下りるときなどは感動した。1階と2階の間があるのだ。
その他、いろいろなダンジョンゲームをやってきたことが思い出される。ディープダンジョン、ダブルダンジョン、女神転生などなど。
小説を楽しく感じる人はきっとダンジョンゲームも楽しく感じられるのではないかと思う。何故なら画面の情報はほとんどなく、システム上に設定された状態をもとに想像を膨らませるしかないからだ。それゆえに楽しい。Wizで全員人間のパーティーを組むのとエルフとドワーフとホビットを混ぜるのでは、システム的なステータスが変動することよりも想像する内容に影響を与えることの方が大きいだろう。
最近はダンジョンゲームをあまり見なくなってしまったけれど、流行が来ないものかと陰ながら期待している。
スラッシュ×6でDos攻撃
URLの最後のスラッシュを重ねても遷移ができなくなったりはしない。
http://www.google.co.jp//
クリックしてもらえればわかるが、正常に遷移する。同じ容量で下のどれも正常に遷移できる。
http://www.google.co.jp///
http://www.google.co.jp////
http://www.google.co.jp/////
しかし、6個重ねるとNortonに怒られる。Nortonの入った端末の方は以下のリンクをクリックするとアクセス遮断されると思う。
http://www.google.co.jp//////
「HTTP Apache Redundant Slashes DoS」という警告なので、Apacheに向けたDoS攻撃でこういう手法があるのだと思う。それにしても、Nortonは外から守ってくれているだけでなく、使用者の監視もしていたとは。
算数・数学が得意になる本
読んでいる途中でエントリを書いてしまったけれど、読み終わったので改めてご紹介。
- 作者: 芳沢光雄
- 出版社/メーカー: 講談社
- 発売日: 2006/05/19
- メディア: 新書
- 購入: 7人 クリック: 46回
- この商品を含むブログ (44件) を見る
算数・数学の教科書の目次に出てきそうテーマがたくさんあって、それぞれのつまずきどころを紹介しているので、一つ一つ細かく探求するようなことはしていない。それだけに「前を理解していなければ次が理解できない」ということが少なくて読みやすい書籍ではないかと思う。
面白いと感じた部分を少し紹介すると、「0.999… = 1」が成り立つかという話に対して「0.333… = 1/3」の両辺3倍すれば良いという説明がほとんどだ、ということを指摘した上で、
この説明には「無限小数」の説明がありません。さらに、
とツッコミを入れるあたりは数学的見識が低い私にとっても新鮮で興味深い内容だった。引用の続きは実際に(上のアフィリエイトから購入して)書籍を手にとって読まれると良いかと思う。
次に読む本もすでにAmazonから届いているので、しばらく電車で退屈することはなさそうだ。
J2EEを捨てれば道は開かれるか
我らJava世代の課題
私にとってはJavaは最初の覚えた言語だから少し見え方が違うかもしれないけれど、最近Javaを仕事で使わなくなってから同じようなことを感じるようになった。
先日、Strutsで組まれたシステムを見る機会があって懐かしかった。流石Javaと思わせる型を意識したプログラミングが光っていた反面、幻滅したのは001Action.javaとか002Action.javaとかいった旧来システムのような命名。国内のJava案件はホストシステムなどの旧来システムからWebへ移行する開発が多かったように思う。そういう使われ方でJavaを覚えた人たちが、新たに一から外向きWebサイトを作ろうとしたときに頭の変換ができなくなっているのだと思う。
Java自体は今でも素晴らしい言語だと思っているし、GUIを手っ取り早く開発するなら間違いなくSwingを使うけれど、焦点をWebに絞ろう。Ruby on Railに代表されるようなスクリプト言語に多い高速開発フレームワークとStrutsに代表されるJavaのWebフレームワークでは土俵が大きく違う。Javaがいつも重量系フレームワークになってしまう原因の一つにServletの存在があると思う。JSPも裏ではServletだ。
このServletの存在のためにTomcatのようなJavaコンテナが登場する。これら一体でJ2EEフレームワークと考えることができるだろうか。ファイルの配置場所やXMLの設定、HttpServletの継承(ライブラリのパスとかEclipseがないと無理!みたいな)などの苦難を乗り越えて初めてブラウザ上にHelloWorldを表示できる。しかし、スクリプト言語の多くは
print "Hello World";
というファイルを作って、URLでファイル名を叩けば終わりだ。ただし、ApacheのようなWebサーバーが言語を解釈できる必要こそあるが。Javaな人は良くこれを設計レベルの話で反論する。Javaは安全にプログラムできるとか、生産効率を考えられているとか。そうではない。HelloWorldを出力するだけの差をもっと着目すべきだと思う。
その他にも、JSPって本当にViewとして切り離されているのか(タグライブラリは使いこなせるデザイナーに会ったことがない)とかも思うし、「Javaは遅い」というのは大分と解消されたように思うけれど「Javaコンテナはメモリを食う」は今でも問題な箇所だと思ったりもする。こういったことを考えていると、いつもJavaが不利な環境で無理やり戦っているような印象を受けて悲しい。本当に素晴らしい言語であることが強調される前に環境負けしている。
だから、JavaなWebに提案したいのは、J2EEの思想を全く踏襲しない開発だ。J2EEの良さを引き合いに出して反論するのではなくて、向いているものを開発しようという建設的な考えで。例えばVMをキックするだけのサーバーかApacheモジュールみたいなのを用意する。それで、例えばURLに
http://example.com/hello.class
とやると、普通にJavaが動く。標準出力だけWebのレスポンスに紐付けて置けばよいかな。コンテナもServletもない。だから、HttpServletの継承とかもないし。WEB-INFOなんていうディレクトリも存在しない。リクエストの取得はどうするのだとかあるけれど、それはハンドラクラスをhttpd.confに書いたらそこで引数として受け取れるくらいライトな感覚がいいかと思う。
何が重要かというと、Sun側で何でも提供しないことだ。Webサーバーが必要値を渡して一つのクラスを呼んでくれるところさえあれば、後は世界の素晴らしい技術者が最高のフレームワークを開発してくれる。その自由な開発土俵がJ2EEにはない。だから、いつまでたってもデファクトスタンダードとしてStrutsが不動の存在だ。ひょっとすると、Javaの思想に反するような無茶なフレームワークも出現するかもしれないけれど、そんな盛り上がりを見せるJavaが見たい。
と、思ったことを書いてみたけれど、実は「mod_java」みたいなのは既にあったりするのかなぁ。
VMwareでFedora Core 5
友人がVMWare Player のインストール方法でVMwareのインストール方法を紹介していたので、釣られてVMwareにFedora Core 5をインストールしてみた。せっかくなので、インストール手順などを書いておく。VMware Playerのみで新しいVirtualMachineを構築するも参考にさせてもらった。
まずは必要なものをダウンロード。
Download VMware Playerと、Browser Applianceをダウンロードする。あと、Fedora Core 5のCDイメージも落としておく。CDドライブがid:spiritlooseさんと同じくないので、Daemon ToolsでFedoraのdisc1をマウントしておく。
Browser-Appliance-1.0.0.zipを解凍すると中にBrowser-Appliance.vmxがあるので、テキストエディタで開いて
ide1:0.fileName = "ubuntu-5.10-install-i386.iso" ide1:0.deviceType = "cdrom-image" ide1:0.startConnected = "FALSE"
という箇所を
ide1:0.fileName = "auto detect" ide1:0.deviceType = "cdrom-raw" ide1:0.startConnected = "TRUE"
に変更してからBrowser-Appliance.vmxをダブルクリックでVMwareを起動する。起動したらすぐにVMwareのウインドウをクリックしてフォーカスを移してF2を押す。BIOS画面に入ったらBootメニューでCD-ROM Driveを+で一番上に移動する。そのあとはExitメニューでExit Saving Changesを選択すれば良い。再び起動してCDからブートするようになる。あとはCDマウントが正しくできていればFedoraのインストール画面となる。
Fedoraのインストール自体は割愛するけれど、パーティションの設定で現状を全てを削除してインストールすれば純粋なFedoraをインストールすることができる。かなり手っ取り早くFedoraのインストール画面まで辿り着けるので、面倒くさがりな方にはお勧め。
インストール後の設定としてはvmxをお好みにカスタマイズする。元ネタがBrowser-Appliance.vmxなので、FDDがない人ようの「floppy0.present = “FALSE”」とかもデフォルトで記述がある。一応、自分の設定した内容を以下に貼っておく。
config.version = "8" virtualHW.version = "4" displayName = "Fedora Core 5" uuid.action = "create" guestOS = "other26xlinux" nvram = "FedoraCore5.nvram" memsize = "256" usb.present = "FALSE" floppy0.present = "FALSE" ide1:0.present = "FALSE" ide1:0.fileName = "auto detect" ide1:0.deviceType = "cdrom-raw" ide1:0.startConnected = "FALSE" ide1:0.autodetect = "FALSE" scsi0.present = "TRUE" scsi0.virtualDev = "lsilogic" scsi0:0.present = "TRUE" scsi0:0.fileName = "FedoraCore5.vmdk" scsi0:0.redo = "" ethernet0.present = "TRUE" ethernet0.connectionType = "hostonly" ethernet0.virtualDev = "e1000" ethernet0.addressType = "generated" ethernet0.generatedAddress = "00:0c:29:f6:15:2e" ethernet0.generatedAddressOffset = "0" sound.present = "FALSE" sound.virtualDev = "es1371" sound.autoDetect = "FALSE" sound.fileName = "-1" checkpoint.vmState = "" priority.grabbed = "high" tools.syncTime = "TRUE" workingDir = "." svga.maxWidth = "1024" svga.maxHeight = "768" sched.mem.pShare.checkRate = "32" sched.mem.pshare.scanRate = "64" isolation.tools.dnd.disable = "FALSE" isolation.tools.hgfs.disable = "FALSE" isolation.tools.copy.disable = "FALSE" isolation.tools.paste.disable = "FALSE" logging = "TRUE" log.fileName = "FedoraCore5.log" log.append = "FALSE" log.keepOld = "1" keyboard.typematicMinDelay = 1000000 uuid.location = "56 4d 22 db 5f 17 4e 82-18 18 66 93 d3 f6 15 2e" uuid.bios = "56 4d 22 db 5f 17 4e 82-18 18 66 93 d3 f6 15 2e" tools.remindInstall = "TRUE"
デバイス系はほとんどFALSEにしているのでCDドライブなどを利用する場合はTRUEにすること。また、NICが認識できなかったので「ethernet0.virtualDev = “e1000″」に変更している。
あと、ファイル名もBrowser-Applianceのままだと気持ち悪いので以下のように変更した。
FedoraCore5.nvram FedoraCore5.vmdk FedoraCore5.vmsd FedoraCore5.vmx
次にネットワークの設定。Windows側にはVMwareをインストールした際に「VMware Network Adapter VMnet1」と「VMware Network Adapter VMnet8」というネットワークがインストールされている。natを利用する場合はVMnet8を、hostonlyを利用する場合はVMnet1を有効にする。逆に余った方は無効にして構わない。
このVMnetのIPアドレスは自由に変更して良いけれど、Fedoraから見たゲートウェイのアドレスとなるのでFedora側でデフォルトゲートウェイを設定するときに同じIPアドレスにすること。Fedora側のDNSサーバの設定はVMnetにせずにWindows側が利用しているDNS Servers(ipconfig /allで調べて)を設定しよう。
VMwareはcoLinuxに比べると少々重たい印象(Windows側に影響がある感じ)だけど、製品としての完成度は高いので、とりあえずLinuxを触ってみたい人などには打ってつけかと思われる。会社ではローカル端末上に6台のVMware Playerを同時に動かして、かなり本番に近い構成で作業してたりするのだけど、流石に鬱陶しいのでβ版ではあるけれどVMware Serverを使った方がいいのかもしれない。