ブックマーク / ysano2005.hatenadiary.org (18)

  • svnじゃなくてsvkでバージョン管理しよう - Accept Things

    MacBook Proを買った初日にsvkがインストールできるかどうか試してみたら、DarwinPortsからあっさりインストールできました。 今までsvnを使っていましたが、svkに乗り換えた方が良さそうです。 svkを使っていて便利だなと思ったことは、以下の通りです。 インターネットに接続していない環境でもバージョン管理できる。かなり便利。 grepが使いやすくなった。 % grep -rn "foo" . | grep -v svn とかやらなくて済む。 svnよりコマンドが高機能。 % svk desc r123 でリビジョン123の差分をコミット時のコメント付きで見られる。 svk addが賢い。 svk descのトリックはSix Apartの宮川さんにこの前コメントで教えて頂きました。ありがとうございました。もっと早くsvkを試しておけば良かったのですが、Linuxでうまくイ

    svnじゃなくてsvkでバージョン管理しよう - Accept Things
    jmala
    jmala 2006/05/07
    2006/05/07 16:44:01
  • zsh: 直前にうったコマンドをクリップボードに(Mac OS X限定) - Accept Things

    シェルで打った直前のコマンドをクリップボードにショートカットでコピーとかできたら作業メモとかとるのにえらいベンリだと思った。.zsh-hitory をうまく使ってとかでも。誰か作ってそう。 naoyaの日記より このネタで、初めてのzshカスタマイズプログラミングをしてみました。案外簡単にできてしまいました。 クリップボードへのコピーにpbcopyを使っているのですが、これは多分Mac OS Xにしかないと思います。ですので、このカスタマイズはMac OS X限定です。Linuxでも同等の機能を持ったコマンドがあれば、少しの改造で動くようになるはずです。 .zshrcに以下のコードを貼付けておけば、naoyaさんのご要望通り動くはずです。コードはちょっとダサイですが、動きます、、。Ctrl + kでクリップボードに直前にうったコマンドが入ります。キーバインドは好みに応じて変更して下さい。

    zsh: 直前にうったコマンドをクリップボードに(Mac OS X限定) - Accept Things
    jmala
    jmala 2006/05/07
    2006/05/07 16:04:01
  • はじめての英会話 with パキスタン人 - Accept Things

    久しぶりにちょっと長め文章のエントリ。就職活動で東京に日帰りで行ってきました。それでその帰りにあった出来事についてちょっと書いてみました。 東京から京都に帰る新幹線で、面白い出来事がありました。東京駅から乗車して最初は隣の席には誰もいなかったのですが、横浜駅で僕の隣にあやしい外国人が座られました。ひげが凄く濃くて、全身が白衣っぽい服で、石油が出る国の人のような感じがしました。一瞬、「ヤバイ、何かやられる」と思いました。 でも人は見かけで判断しちゃダメですね。当にそう思いました。 名古屋駅を過ぎた後、その外国人の方が席を立たれ、どこかへ行かれました。それでほっとしていると、両手にビールのおつまみのお菓子(ピーナツ系)を買って戻ってこられました。隣でぼりぼりそのおつまみをべておられると、突然そのおつまみを僕の方に差し出されて、ちょっとびっくりしましたが、顔を良く見てみると、良い感じの優しそ

    はじめての英会話 with パキスタン人 - Accept Things
    jmala
    jmala 2006/04/27
    2006/04/27 13:54:01
  • WEB+DB PRESSでSix Apartの宮川さんの連載が - Accept Things

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

    WEB+DB PRESSでSix Apartの宮川さんの連載が - Accept Things
    jmala
    jmala 2006/04/19
    2006/04/19 18:34:01
  • Haskell: ハイレベルになる勉強方法 - Accept Things

    Haskellの勉強をしている方へ。 Haskellの基文法をマスターしてから、Pugsのような難しいコードを読めば良いということはないと思う。 何となくHaskellの雰囲気がわかった時点で、難しいコードを読み始めるのをお勧めする。 その方が絶対勉強になるし、上達のスピードを加速させられる。 入門レベルのコードをいくら読み続けても、当然それ以上のレベルには行けない。 難しいコードでも局所的に見れば、基の塊。 だから、もし今読んでいるコードで文法的にわからなければ、Haskellの文法が説明されているドキュメントを読めば良い。それで良いと思う。 でも難しいコードを単に読めば良いというわけじゃない。 常に具体的な目標を持ってコードを読むように心がけるべき。 目標が大きすぎれば、その目標をブレークダウンして小目標にすれば良い。 お手になるコードが見つからないという方は、とりあえずPugs

    Haskell: ハイレベルになる勉強方法 - Accept Things
    jmala
    jmala 2006/04/17
    2006/04/17 16:24:01
  • Haskell: Readerモナドの実験 - Accept Things

    Readerモナドで定義されているlocal関数とasks関数の実験をしてみた。 local関数とasks関数を使うと、環境(データを記憶する領域のようなもの)を局所的に操作できることがわかった。 これらの関数をうまく利用すれば、プログラミング言語でおなじみの「スコープ」の概念を綺麗に表現できるようになると思われる。 Haskellでインタプリタを実装したい開発者にとっては嬉しい話に違いない。 コードは以下の通り。ReaderTでReaderモナドとIOモナドをレイヤー化している(多分)。こうしておけば、liftIO関数とputStr関数を組み合わせて、IOも同時にできてしまうようだ。(実はまだあんまりよくわかっていない) つまり、昔ながらのprintデバッグが可能になる。 % vim reader.hs import Control.Monad.Reader data Env = Env

    Haskell: Readerモナドの実験 - Accept Things
    jmala
    jmala 2006/04/13
    2006/04/13 00:04:02
  • Subversion: svn diffした時にコミットのログも一緒に表示するスクリプト - Accept Things

    最近、Pugsの初期のコードをよく読んでいる。コードを読んでいると、現在読んでいるコードとそれ以前のコードを比較したくなる時がある。そんな時は、Subversionのリポジトリからチェックアウトしてできたワーキングディレクトリで以下のようなコマンドを実行してやれば良い。これでリビジョン4とリビジョン5の差分が見られる。 % svn diff -r 4:5 Index: Lexer.hs =================================================================== --- Lexer.hs (revision 4) +++ Lexer.hs (revision 5) @@ -140,9 +140,9 @@ } <?> "literal string") -singleStrChar = quotedQuote <|> noneOf "

    Subversion: svn diffした時にコミットのログも一緒に表示するスクリプト - Accept Things
    jmala
    jmala 2006/04/09
    2006/04/09 15:34:01
  • Google Maps APIがVersion 2に - Accept Things

    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 additional satellite zoom levels Overview map control Custom map controls Fewer memory leaks Debugging log ライブラリのサイズが小さくなったのと、メモリーリークが軽減されたのは見逃せない変更点です。特にIEではメモリーリークの問題が実質的に解消されたようです。 また、GMarkerやGPoly

    Google Maps APIがVersion 2に - Accept Things
    jmala
    jmala 2006/04/04
    2006/04/04 19:14:03
  • Haskell: RubyインタプリタをHaskellで実装したRType - Accept Things

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

    Haskell: RubyインタプリタをHaskellで実装したRType - Accept Things
    jmala
    jmala 2006/04/04
    2006/04/04 09:54:01
  • YAPC::Asia 2006 Tokyo: Learning Haskell by Audrey Tang - Accept Things

    YAPC::Asia 2006 Tokyoの2日目の午後からAudrey Tangさんの「Learning Haskell」のプレゼンテーションがありました。 はてなから音声ファイルが公開されています。スライドも見られるようになりました。ありがとうございます。 Learning Haskell by Audrey Tang 話の内容が高度なだけに、理解するのが中々難しいです。予めHaskellの予習をしておいたので、前半は何を伝えようとされていたのかおおよそわかりました。 個人的には、後半の Monad Transformers QuickCheck Parsec Software Transactional Memory Foreign Function Interface の話題が興味深かったです。断片的ですが、今後のヒントが得られたような気がします。 間違いはあると思いますが、何かの

    YAPC::Asia 2006 Tokyo: Learning Haskell by Audrey Tang - Accept Things
    jmala
    jmala 2006/04/03
    2006/04/03 10:04:02
  • Haskell: 初期リリースのPugs 6.0.0をビルドしてみよう - Accept Things

    「Pugsが今熱い。」 そう思ってPugsの最新版であるバージョン6.2.11のソースコードを読んでみると、そのソースコードの量に圧倒されます。とてもじゃないけど、ソースコードを理解するのは難しそうです。開発が進めばもっとPugsの規模が大きくなって、もう追いかけるのは不可能。 でもそんなことで諦めるのは早いです。今がダメなら昔に戻ればいいんです。Pugsの初期バージョンなら、今とは違ってかなりシンプルなソフトウェアの構成になっているはずです。もしそうなら、Pugsのソースコードを理解できるようになる可能性が高くなります。(期待通り、今よりも遥かにシンプルでした!) PugsのソースコードはSubversionで管理されていて、開発者でなくても誰でもそれにアクセス可能です(当然コミットは不可)。そのため、Pugsの任意のリビジョンのソースコードを自由にゲットできます。「任意のリビジョン」と

    Haskell: 初期リリースのPugs 6.0.0をビルドしてみよう - Accept Things
    jmala
    jmala 2006/04/02
    2006/04/02 21:54:15
  • Haskell: ミニコンパイラの解体 - Accept Things

    前のエントリで、Haskellで実装したミニコンパイラを紹介しました。今回はこのミニコンパイラの字句解析のパーツだけを取り出して動かしてみます。必要最小限なコードを切り出して動作させてみたかったので、今回対応する計算式は「自然数の足し算」のみです。ミニコンパイラから、そのような興味のあるコードだけを抜き出してみると、以下のようになりました。 % vim calc.hs import Char data Token = NUM Int | PLUS instance Show Token where showsPrec p (NUM num) = showString "NUM " . shows num showsPrec p (PLUS) = showString "PLUS" tokenise :: [Char] -> [Token] tokenise [] = [] tokenise

    Haskell: ミニコンパイラの解体 - Accept Things
    jmala
    jmala 2006/03/24
    2006/03/24 16:54:10
  • Haskell: ミニコンパイラを試す - Accept Things

    Haskellで実装された勉強用のコンパイラがないか探していたらありました。Haskellでコンパイラを書きたいと思っている方や、Pugsの実装に興味のある方は、今回紹介するミニコンパイラに興味を持ってもらえると思います。 Simple compiler example このコンパイラは、計算式を架空のスタックマシンのコードに変換するというものです。私たちが普段使っているPentiumマシンに搭載されているFPUもスタックマシンの一種ですね。(参考) 例えば、「1+2-3」をこの架空のスタックマシンのコードに変換すると、以下のようなコードに変換されます。 PushConst 1 PushConst 2 PushConst 3 SubToS AddToSでは、ソースをゲットして、ghciで実際に試してみましょう。 % wget http://www.doc.ic.ac.uk/~phjk/Co

    Haskell: ミニコンパイラを試す - Accept Things
    jmala
    jmala 2006/03/24
    2006/03/24 08:34:01
  • Haskell: 再帰とI/O - Accept Things

    Haskellの勉強をはじめて1ヶ月ほど経ちました(実際勉強したのは1週間くらいです)。途中までは順調でしたが、モナドがやっぱり難しい。mapとかfilterのような高階関数は割とすんなり理解できたのですが。。 今日は久しぶりにHaskellをさわってみました。再帰とちょっとしたI/Oをするプログラムを作ってみました。 import System -- getArgs crazy :: String -> IO () crazy s = putStr s >> crazy s main = do [arg] <- getArgs crazy argコンパイルと実行は以下のようにします。(コンパイルにはGlasgow Haskell Compilerを使っています) 実行すると、プログラムの引数に渡した文字列(foo)が標準出力に繰り返し出力されます。終了条件が書かれていないので、ずっと出力

    Haskell: 再帰とI/O - Accept Things
    jmala
    jmala 2006/03/22
    2006/03/22 10:04:01
  • Google Maps API keyの仕様が変更され、鍵管理の負担が大幅削減 - Accept Things

    Google Maps APIを利用している開発者に朗報です。これまでGoogle Mapsを利用するために生成していたkeyの有効範囲が広くなりました。以前では、例えば「http://localhost/foo/」で生成したkeyは、fooディレクトリ直下でないと有効ではありませんでした。つまり、「http://localhost/foo/hoge/」や「http://localhost/foo/hoge1/hoge2/」といったサブディレクトリ以下では、そのkeyは機能しませんでした。ですので、このような厄介な仕様によって、Google Maps APIを利用する開発者はフラストレーションを感じていました。 ですが、最近アップデートされた仕様では、例えば「http://localhost」でkey生成を行うと、localhostのどこでもGoogle Mapsを利用できるkeyが発行さ

    Google Maps API keyの仕様が変更され、鍵管理の負担が大幅削減 - Accept Things
    jmala
    jmala 2006/03/10
    2006/03/10 23:34:02
  • Greasemonkey: prototype.jsでクロスドメインAjaxを可能にする - Accept Things

    以前、「Greasemonkeyでprototype.jsやscript.aculo.usを使う方法」を紹介しました。しかし、Greasemonkey内でprototype.jsが利用できるようになった恩恵を十分に受けられていませんでした。つまり、Greasemonkeyで提供されているGM_xmlhttpRequest()が可能にする「異なるドメインとの非同期通信」からの恩恵です。そこで今回は、Greasemonkey内で使えるようになったprototype.jsをさらにパワーアップし、クロスドメインAjaxができるようにしてみたいと思います。 問題 厄介な問題は、GM_xmlhttpRequest()はFirefoxやInternet Explorerなどで提供されているXMLHttpRequestとインタフェースが全く違うということです。 GM_xmlhttpRequest()は単な

    Greasemonkey: prototype.jsでクロスドメインAjaxを可能にする - Accept Things
    jmala
    jmala 2006/03/05
    2006/03/05 17:34:07
  • メジャーな動的型付け言語の仮想マシンが共通化されると? - Accept Things

    Audrey Tangさんのblogを見ていると、"Papers I'm reading"の所で興味深い論文を見つけました。 On the Architecture of the Parrot virtual machine Parrotとは次世代のPerl、すなわちPerl6の仮想マシンです。ただし、Perl6だけでなく、その他の動的型付け言語でもPrrotの上で(実装すれば)動作可能です。 この論文で特に興味を持った所を引用します。 Parrot is a very interesting project, and may well bring its own revolution. Perl has been a very popular language since its introduction, almost 20 years ago, although Perl has i

    メジャーな動的型付け言語の仮想マシンが共通化されると? - Accept Things
    jmala
    jmala 2006/02/22
    2006/02/22 02:44:03
  • AtomAPIで はてなブックマークにエントリーをpostするテスト - Accept Things

    はじめに 数日前、blog.bulknews.netの宮川さんが「del.icio.us と はてなブックマークに cross-post」という興味深いエントリーを書かれたのを知りました。ラッキーなことに、そのクロスポストするPerlスクリプトは公開されています。ソースを見てみると案外コード量は少なかった(100行程度)ので、読めそうかな?と思いました。そこで、早速ソースを印刷して読んでみることにしました。 そうして数日が経過しました。。。 これではいけない!と思いました。最近は忙しくてPerlの勉強ができていないので、早起きして頑張ってみました。 XML::Atomのインストール: ちょっとした困難との遭遇 まずは、XML::Atomのインストールをしました。なぜかXML::Atomで必要となるDateTimeモジュールがFedora Core 4の環境ではうまくテストをパスしてくれませ

    AtomAPIで はてなブックマークにエントリーをpostするテスト - Accept Things
    jmala
    jmala 2006/02/17
    2006/02/17 07:04:02
  • 1