Haskellの進捗

 勉強がてらに作っていたhtmlパーサですがだいたいできてます。htmlファイルを解析していって代数的データ型にデータを全部保存しておき、それを標準出力で表示するようにしています。

ただ現状では解析できるhtmlはそれほど多くないです。属性の取り込み形式や、コメントなどに対応してないので途中で止まるはずです。あと"<"などを表現している&...;という書式に対応してません。それはとりあえず対応してなくてもいいと思ってるんですが、web上に公開されているhtmlファイルを読み込んで解析結果を表示できるというところまではもってきたいと思います。
 

Haskell

 久しぶりの雑記です。今まですごい放置してましたが、その間はHaskellの勉強とかしていました。

 入門書を読んで、後は簡単にパーサを作れるライブラリ、Parsecがあるということがわかったので、それの勉強をしていました。最初はParsecの解説記事を見てもよくわからなかったのですが、「ふつうのHaskellプログラミング」のモナドとか代数的データ型などの部分を読み直して、今ではなんとか使えるようになりました。

 せっかく覚えたのでHTMLパーサでも作ってみようかと思います。とりあえず実用レベルで不正なHTMLファイルをパースできるようにするのは結構難題なので、正規のHTMLだけを解析するパーサを作ってみようと思います。

 階層構造とか考えるとそれでも面倒なことは結構あります。まあ練習なので気楽いこうと思います。

プログラミングの目的

http://d.hatena.ne.jp/LIBERTY/20061103の続きみたいなもんです。
突然ですが私、今まで学校とまったく関係なく自分の意志でソフトを作ろうとした時はほとんどゲームしか作ったことがありません。そもそもプログラミングを始めたきっかけがゲームを作ろうとしたことです。まあこうやって良く作ってるゲームにしてもまともに完成させたものは少ないんですが。

まあともかくこれからプログラマとして働くなら、ゲーム以外のソフトでも作って少しはアピールのネタでも作っておくかーと考えたんですが、やっぱり何を作ればいいかがわからんなあと。自分が使っているような種類のソフトならなんでもいいということはわかってるんですが、やはり車輪の再発明感が。Wikiとか作ろうとか思いましたが、これって誰が作ってもあんまり変わらないなあと思いました。

でも世の中再発明的なものが流行ることはよくあることです。ftpとあまり変わらないhttpとかそんな感じです。だからまあ気にせずに作るのがいいのかもしれないですね。ゲームだと外枠は似ていても割と簡単にオリジナリティが出せるんで、そこらへんの感覚の違いは仕方ないのかもしれません。

それと仮に同じものを作っていたとしても作っている間に何か閃くというのもあるかもしれません。内部的な挙動を知るとアイディアが出てくることもあります。それはやっぱり実際に作ってみないとわからないですし。

どうせ元から役に立たないことが好きなんだから細かいことは気にせずに車輪の再発明をしてみようと思います。ひょっとしたら性能の高い車輪ができる可能性もありますしね。

近況とか

 かなり久しぶりの日記です。とりあえずマザーボードを交換したら故障は直りました。しかしマザーボードを変えたら今まで使ってたCeleronのチップが使えなくなってしまったのは計算してませんでした。そういうわけでCPUも少し奮発してCore2Duoに変えてみました。Celeronでもそれほど不満はなかったけどやっぱりスピード速いです。

 でまあLinuxRubyとかはとりあえずXML関連は人狼への熱意が薄れているので放置、でCodeGolfとか少しやってみました。上位層のコードが軽すぎて異常ですね。これやってるうちに少しは小さく書けるようになるのかな。

 HSPのほうはもうストレスがたまってしょうがないのでやめました。とりあえず作ってる途中だったのをC#YaneSDKに移植しているけどこれはあんまり進んでないです。

 まあこんな感じです。さてプログラミングをがんばろう。

Ubuntuに満足

Linux初心者なんでよくわからないといえばよくわからないけどとりあえずUbuntuにはそれほど不満はないです。Rootがないのも素人だから特に気にならないし。一応Linuxを設定するときに使ったページなどをリストアップ

http://www.a.phys.nagoya-u.ac.jp/~taka/linux/ubuntu610.html
OSインストール後に入れるパッケージや設定などについて書かれてる。


http://www.ubuntulinux.jp/wiki/FrontPage
Ubuntu JapanのWikiです。How Toのemacsのところに.emacsの例があるのでこれをそのまま使うといいと思います。


http://ubuntuguide.org/wiki/Ubuntu:Edgy_ja
「拡張レポジトリを追加するには」をやっておいたほうがいいと思います。これがないと結構インストールしたいパッケージがないです。

Linuxのほうはemacsの日本語入力やruby-modeになるようにがんばってました。それにしてもRubyはもともと全然やってなかったけどほとんど忘れているなあ。繰り返しのやり方ですら覚えてないし。


まあそれはそうとして壊れたPCはとりあえずまず先にマザーを交換、そしてそれでも駄目なら電源をということにしました。まあこわれたものはこわれたのでしょうがないですね。しばらくはノートで我慢です。

デスクトップPCと不良部分

さっき日記を書いて少し後にデスクトップPCからディスプレイへの出力が突然無くなるという現象が起きました。それが起きたのはVisual C# 2005を動かしていたのでそこらへん周りのソフトが原因なのかなと思いとりあえず久しぶりにOSを再インストールしてみました。しかし何回やっても途中で止まる。ハードディスク自体に問題があるかもしれないし、しかたないのでインストールするハードディスクを新しいハードディスクに変更してみて実行してみてもやはり途中で止まる。そうなるとパソコン内部の接触不良を疑ってパソコンを開けてみる。ビデオカードのファンの部分にコードがかかっていたのでそれを移動させる。あと熱がたまりすぎたという可能性もあるので久しぶりのフロント部分のカバーを開けてみる。フロント部分は一度開けると取り付けるのが大変なので全然開けていなかっただけあってホコリがたくさん。そりゃ熱もたまるなと思いホコリをよけてもう一度作業を再開してみるととりあえずインストールはうまくいきました。しかしその後ドライバをインストールしてSleipnirをいれるかと思って検索したところでまたディスプレイが入力信号なしと通知してきました。


その状態のときはハードディスクの読み込みが無いのでビデオカードは多分原因じゃないと思います。となるとどこかのケーブルが不良を起こしているか、CPUとメモリとマザーボードのどれかあたりなのかと思ってます。それとPCいじってるときは思いつかなかったけど、今になってみると電源不足になったとかそういうことも考えられます。しかしこれらのどれが原因かは調べるのがかなりつらいです。原因と思われるパーツを新しく用意して交換していけば原因が特定できるけどそれがなあ……。CPUはCeleron使ってるし変えてみるいい機会とも思えるけど新しくPCを変えたほうが早いような。その場合はケーブルの故障でも対応できるし。


新しいPCを買うならもう少し小さいPC(現在のはミドルタワーで大きい)が欲しかったけどそれ買うとケースとかが無駄なものとして残るんだよなあ。そしたらまたマザーボード買わないといけないし。さて本当にどうしようか困った困った。

Linuxとかプログラミング最近の動き

前回Linuxを使う必要性が出てきた、と書いたとおりLinuxいじりとかやってました。とりあえず3月の時点では実家に帰っていたのでノートPCしかもっていませんでした。我慢してもよかったんですが、なんとなくいじりたくなったんでVMWareをインストールしてUbuntu仮想マシンを持ってきて使ってみました。最初の時点でsshとかemacsとか入ってなかったのは驚いたけど、aptを使えばすぐにインストールできるので特に問題ありませんでした。

VMwareUbuntuはデスクトップマシンでVineとかFedoraとか動かしている時より軽く感じます。VMwareが速いのかUbuntuが速いのか、X Windowが起動されていても特に気になりません。

とりあえずこれでLinux使える環境が揃ったなあって思ってましたが、家に帰ってみるとCATV接続で固定プライベートIPを貰っている状態なので仮想マシンからネットワークに接続することができませんでした。そしてルータを買ってみたけど、繋がりませんでした。恥ずかしながらネットワークについてよく知らないけど、ルータの外もプライベートIPの空間の場合そのIPへの変換ってできるものなのかという疑問は持っていたのでこれは当然なのかな。グローバルIPをもらえればサーバとかも設置できるからそれもいいかもしれないと思いとりあえずグローバルIPを追加してもらえるように頼んでみました。これでも繋がらなければおそらくただの設定ミスなんだろうなあ。こういうことを知らないというのも微妙だし今度ネットワークの本でも読むかな。