2006-01-01から1年間の記事一覧

WEB+DB PRESSでSix Apartの宮川さんの連載が

始まるようです。 楽しみです。 WEB+DB PRESS で連載を開始

Haskell: ハイレベルになる勉強方法

Haskellの勉強をしている方へ。Haskellの基本文法をマスターしてから、Pugsのような難しいコードを読めば良いということはないと思う。何となくHaskellの雰囲気がわかった時点で、難しいコードを読み始めるのをお勧めする。その方が絶対勉強になるし、上達の…

Haskell: Readerモナドの実験

Readerモナドで定義されているlocal関数とasks関数の実験をしてみた。 local関数とasks関数を使うと、環境(データを記憶する領域のようなもの)を局所的に操作できることがわかった。 これらの関数をうまく利用すれば、プログラミング言語でおなじみの「スコ…

Haskell: Pugs 6.0.5をビルドするためのパッチ

Pugs 6.0.5(リビジョン29)をビルドするためのパッチを作ってみた。 http://vaio.redirectme.net/pugs/patch/build_pugs6.0.5_r29.patch ただし、このパッチは完全じゃない。makeはできるけれども、make testが通らない。本当に単純なexpression、例えば「1+2…

Subversion: svn diffした時にコミットのログも一緒に表示するスクリプト

最近、Pugsの初期のコードをよく読んでいる。コードを読んでいると、現在読んでいるコードとそれ以前のコードを比較したくなる時がある。そんな時は、Subversionのリポジトリからチェックアウトしてできたワーキングディレクトリで以下のようなコマンドを実…

Haskell: Pugs 6.0.2の評価関数に関するメモ

自分用のメモなので、何をやっているのか気にしないで下さいw。Pugs 6.0.0におけるレクサとパーサの動作は、大よそわかった。 問題はパーサが出力したASTをevalするやり方。Pugs 6.0.2から変数とサブルーチンがサポートされた。それによってsrc/Eval.hsに新…

Google Maps APIがVersion 2に

Google Maps APIのバージョンが2006年4月3日(昨日)にVersion 2になったようです。 Google Maps API Version 2 Documentation Google Maps API Version 2 Upgrade Guide Version 2の新しいfeatureは以下の通り。 Much smaller JavaScript download Two additi…

Haskell: RubyインタプリタをHaskellで実装したRType

RType。 オープンソースマガジン2006年04月号の「ハッカー養成塾」で知りました。 RubyインタプリタをHaskellで実装されている方がおられるようです。 凄いです。 パーサにはPugsで使われているParsecではなく、Happyと呼ばれるまた違ったものを利用されてい…

YAPC::Asia 2006 Tokyo: Learning Haskell by Audrey Tang

YAPC::Asia 2006 Tokyoの2日目の午後からAudrey Tangさんの「Learning Haskell」のプレゼンテーションがありました。はてなから音声ファイルが公開されています。スライドも見られるようになりました。ありがとうございます。 Learning Haskell by Audrey Ta…

Haskell: 初期リリースのPugs 6.0.0をビルドしてみよう

「Pugsが今熱い。」そう思ってPugsの最新版であるバージョン6.2.11のソースコードを読んでみると、そのソースコードの量に圧倒されます。とてもじゃないけど、ソースコードを理解するのは難しそうです。開発が進めばもっとPugsの規模が大きくなって、もう追…

YAPC::Asia 2006 Tokyo

今日はYAPCに参加するために東京に来ています。各プレゼンの詳しいことは京都に帰ってから書こうと思っています。今日は普段絶対にお会いできないスーパハカな方々を生で見られて大変満足しています。特にSix Apartの宮川さんやPugsの作者であるAndrey Tang…

Haskell: Forthインタプリタの実装

完全ではないもののForthパーサが動作するようになったので、次にForthインタプリタの実装を行ってみました。Harrothチュートリアルの説明を読みながら実装すると、それほど大きな問題もなくインタプリタが動作するようになりました。ForthのコードをASTに変…

Haskell: Harrothチュートリアルを読みながら実装したForthパーサ

Pugsの勉強をしようと考えている方は、以下のリソースを読むと面白いかもしれません。 Harrothチュートリアル ソースコード Harrothチュートリアルでは、Forthというプログラミング言語のパーサをHaskellで実装しながら、パーサについての理解が深められるよ…

Haskell: ミニコンパイラの解体

前のエントリで、Haskellで実装したミニコンパイラを紹介しました。今回はこのミニコンパイラの字句解析のパーツだけを取り出して動かしてみます。必要最小限なコードを切り出して動作させてみたかったので、今回対応する計算式は「自然数の足し算」のみです…

Haskell: ミニコンパイラを試す

Haskellで実装された勉強用のコンパイラがないか探していたらありました。Haskellでコンパイラを書きたいと思っている方や、Pugsの実装に興味のある方は、今回紹介するミニコンパイラに興味を持ってもらえると思います。 Simple compiler example このコンパ…

希望

最近Haskellをさわっていて、またコンパイラにちょっと興味が出てきました。実は、学部生の時にflexとyaccを使って電卓を作る実験の授業がありました。結構楽しかったです。それで、その実験のために、O'REILLYの「lex & yacc」という洋書を買いました。Hask…

Haskell: 再帰とI/O

Haskellの勉強をはじめて1ヶ月ほど経ちました(実際勉強したのは1週間くらいです)。途中までは順調でしたが、モナドがやっぱり難しい。mapとかfilterのような高階関数は割とすんなり理解できたのですが。。今日は久しぶりにHaskellをさわってみました。再帰と…

1冊の本との出会いと自分の課題の発見

今まで、自分の中で何か物足りない感じがしていた。でもそれが何かよくわからなかった。 今日、本屋に行った。いつもなら足を運ばない、絵や写真のある書棚に行きたくなった。そこで、1冊の本と出合った。「廃墟漂流」だ。人がかつて利用していた建物などの…

Greasemonkey: prototype.jsでクロスドメインAjaxを可能にする

以前、「Greasemonkeyでprototype.jsやscript.aculo.usを使う方法」を紹介しました。しかし、Greasemonkey内でprototype.jsが利用できるようになった恩恵を十分に受けられていませんでした。つまり、Greasemonkeyで提供されているGM_xmlhttpRequest()が可能…

メジャーな動的型付け言語の仮想マシンが共通化されると?

Audrey Tangさんのblogを見ていると、"Papers I'm reading"の所で興味深い論文を見つけました。 On the Architecture of the Parrot virtual machine Parrotとは次世代のPerl、すなわちPerl6の仮想マシンです。ただし、Perl6だけでなく、その他の動的型付け…

Jemplate登場によるMVCアーキテクチャ進化の可能性

2005年はAjaxが流行ました。AjaxによってWebアプリケーションの操作性が劇的によくなりました。しかしその一方で、Ajaxの登場によってWebアプリケーションのアーキテクチャに歪みが生じました。サーバーサイドのコードはMVCアーキテクチャによって綺麗に各層…

W!ボタンの開発で利用したテクニックと参考文献の紹介

先日公開しました はてなブックマークを拡張するW!ボタンですが、想像していたよりも反響があり驚きました。ありがとうございました。さて、今回はそのW!ボタンの開発に利用したテクニックの一部と参考文献を紹介します。W!ボタンの開発には以下が役に立ちま…

Greasemonkey: W!ボタンで快適はてなブックマーク生活

気に入ったページをはてなブックマークでブックマークするのはとても簡単で便利です。しかし、せっかくブックマークしたページをあまり効率よく活用できていないと感じたことはありませんか?それはどんな時に感じるのでしょう?では、具体例で説明してみま…

W!ボタン出現

Greasemonkeyではてなブックマークを改造中です。

Developer Notes for prototype.jsが1.4.0対応に

去年の夏、prototype.js 1.3.1の英語ドキュメントが出て話題になりました。はてなでも多くのユーザーがブックマークしました。Developer Notes for prototype.js covers version 1.4.0そのドキュメントが1.4.0対応になりました。ご存知でしたでしょうか?久…

Greasemonkeyでprototype.jsやscript.aculo.usを使う方法

Greasemonkeyでprototype.jsやscript.aculo.usが使えたら便利だろうな、と考えたことのある開発者は少なくないのではないでしょうか。ちょっとそんなアイデアを試してみたことのある方ならわかると思うのですが、Greasemonkeyでそういった外部JavaScriptライ…

新ブックマークアプリ開発開始

面白そうなブックマークアプリができそうな予感。 はてなブックマークではカバーできない領域を便利にする予定です。 アイデアは秘密。ちょっと作ってみたいと思います。

Hatena::Graph Hack: zshでの日々のトレーニング量を全自動でグラフに

bashからzshにswitchしてからもう少しで2ヶ月になります。最近はzshに加えてscreenも利用するようになり、さらに快適な環境で作業ができるようになってきました。zshとscreenの組み合わせは本当に便利です。それで、昨日の夜、ふとこんなことを考えました。z…

Catalyst: スタックトレースをデバッグスクリーンに表示するプラグインを試す

はじめに Catalystで使える興味深いプラグインがリリースされました。そのプラグインとは、Catalyst::Plugin::StackTraceです。プラグインの名前から予想できるように、スタックトレースをデバッグスクリーンに表示してくれるというものです。待ってました!…