メモ

fish(friendly interactive shell)メモ

「fish」(Friendly Interactive SHell)を使ってみる - レオメモ - s21gを読んで、とってもクールなシェル、fishを知ったので試してみる。とりあえずドキュメントを読んで、zshユーザのボクが素敵だと思った機能をメモしてみる。 参考 http://www.fishshell.o…

パッケージ関連のABC

パッケージ関連のABCを淡々と貼るよ。 要約 publicな関数はNamespaceを使う internalな関数はInternalNamespaceを使う グローバルや階層パッケージ(flash.display.*など)は特別扱いされない グローバルでinternalな関数 package{ function f(){ return "glob…

HP2133にUbuntu/Ratpoisonを入れるためのメモ

HP2133にUbuntu/Ratpoisonを入れるためのメモ。みんなもRatpoison使うといいと思うよ。 わりと情報がまとまっているところ LaptopTestingTeam/HP2133 - Ubuntu Wiki - Ubuntuをいれるための方法 ratpoison i18n: The Simplest Window Manager Ratpoisonがロ…

はてブのコメントを簡単表示

Operaのお気に入りに javascript:window.location='http://b.hatena.ne.jp/entry/'+escape(location.href); を登録して、cというニックネームをつけておく。あとは、好きなページでアドレスバーにcを入れるだけで、はてブコメントが表示できるよ。# いい加減…

モナドを理解するには

各個撃破しかないと思う。 圏論のモナドの話を聞いてもよく分からないし、理解したからといってHaskellプログラムがすらすら書けるようになる気がしない。 ボクには「モナドとは何ぞや」は荷が重すぎる。「Stateモナドとは何ぞや」ぐらいがちょうどいい。

ファイルごとにコマンドを実行するシェルスクリプト

コマンドのなかには、複数のファイルを引数にとってくれないのがある。 例えば、unzipは複数のファイルを解凍したい場合は次のようにしないといけない。 $ unzip a.zip $ unzip b.zip # NG: unzip a.zip b.zip こういうときはfor .. inを使えばいい。 $ for …

haXeをビルドしよう

最近、ocaml-nagoyaではhaXeのコードリーディングをやってる。コードを読むには、やっぱりビルドできないと始まらない。というわけで、haXeをビルドしてみよう。まず、install.mlをダウンロードする。 そして、おもむろにコマンドラインを叩く。 $ ocaml ins…

複数ディレクトリにまたがるomake

こんな風にソースコードが複数ディレクトリに分かれている場合のomakeの書き方。 +-project_name/ | +-main.ml | +-OMakefile | +-OMakeroot | +-test/ | +-OMakefile | +-OMakeroot | +-test_main.ml OMakefileの書き方 まず各ディレクトリにOMakefileを用…

Scalaのforは値を返す

Scalaのfor式はなんと値を返してくれます。 普通にforを書くと、返ってくるのはUnitなので嬉しくないです。でも、 for(x <- 1 to 3) yield x * 2と書くと、[2,4,6]という配列(に似たイテレータ)が返ってくる。 ちょうすげぇ。 id:Gemmaさんに自慢したら、「m…

w3mのpre_formちょう便利ー

~/.w3m/pre_formに、あらかじめパスーワードを書いておくと、特定のサイトを開いたときにユーザ名やパスワードを自動で補完してくれる。例えば、以下のように書くと url /www.hatena.ne.jp/login/ text name mzp passwd password hoge submithttp://www.hate…

Macでswfmillのビルド

Macでswfmillをビルドしようとしたら、次のようなエラーがでてしまった。 g++ -I/opt/local/include/libxml2 -I/opt/local/include ... Undefined symbols: "_GetHandleSize", referenced from: _FT_New_Face_From_LWFN in libfreetype.a(ftbase.o) _FT_New_…

タプルの第2要素にのみ関数を適用したい

タプルの第2要素にのみ関数を適用したいことがよくあると思います。Janestreet coreのTupleモジュールにはこれをやる関数が用意されています。 # Core.Tuple.T2.map2;; - : f:('a -> 'b) -> ('c, 'a) Core.Tuple.T2.t -> ('c, 'b) Core.Tuple.T2.t = <fun> # Core</fun>…

OCamlで_による桁区切り

OCamlでもPerlやRubyみたいに_で数字を区切れるんだぜ。 # 1_000;; - : int = 1000 # 1_000.;; - : float = 1000. マスクパターンみたいな数字が長くなる場合、これを使うとだいぶ読みやすくなるよ。

レコードの名前空間

モジュールAの中でレコードを宣言する。 module A = struct type t = {a:string; b:string} end 各フィールド名はモジュールに属するので、このレコードを作るには次のようにしないといけない。 let f () = { A.a="foo"; A.b="bar"; } でも、全部のフィール…

swfでABCが実行されるまでの流れ

swfmillとバイナリエディタを活用していろいろ試してみた。 普通にmxmlcでコンパイルするとActionScriptをコンパイルしたABCはDoABCタグに含まれる。ただ、kLazyInitializeFlagが立っているので、ロードしただけでは実行されない。仕様書には「finddef」によ…

swfのフレームアンカーがおもしろそう

swfの仕様書を読んでいて気がついたんだけれども、FrameLabelにNamedAnchorFlagというのがある。 これが1だと、HTMLからそのフレームにhoge.swf#framelabelでアクセスできるようになる。さらに、FlashPlayerがそのフレームに到達すると、URLも書き換わる。こ…

SWFをダンプしてみた

SWFの仕様書とHello,worldのダンプを見比べてみた。あいかわらず、アンドキュメントな仕様があるっぽいな。 使ったHello,worldはこんなの。 package{ import flash.display.*; import flash.text.*; public class Hello extends Sprite { public function He…

swfからabcの切り出し

swfからabcを切り出してディスアセンブルする方法は、OSS で SWF をデコンパイルする(2) - swfassist と abcdump で亜流デコンパイラ - てっく煮ブログ 跡地あたりに書いてある。ただ、AIRが必要だったり、入力ファイル名が固定だったするあたりが嫌だったの…

TwitterもMSNもIRCにまとめちゃう

TwitterやMSNメッセンジャーをターミナルで使いたいなぁ->ターミナルで使えるチャットソフトといえばIRC->TwitterやMSNメッセンジャーのゲートウェイを使おう、というわけで色々試してみた。この図のように サーバ上でTwitterのゲートウェイ(tig.rb)とMSNの…

契約によるプログラミングとQuickCheckは相性がいいんじゃないだろうか

EffeleとD言語ぐらいしかサポートしている言語は知らないけれど、契約によるプログラミングというのがある。(噂によるとassertさえあれば、契約によるプログラミングだ、と言いはってもいいらしいけど。) これを使うと、関数に入るときに満しているべき事前…

w3mでもFastladderが読みたい!

w3mでもFastladderが読みたい。でも、touch用のインタフェースを使おうにも、w3mはFastladderを相当嫌って This cookie was rejected to prevent security violation.と言われて、ログインすらできない。参考。 w3mにパッチをあててこれを回避したりするのは…

w3m

最近、またw3mを使い始めました。HP 2133みたいな小さいマシンには、Firefoxとかよりもw3mのほうがあっている気がしたので。 google コマンドラインから、Googleで検索できるように簡単なシェルスクリプトを書いた。bashとかで配列をjoinする方法がわからな…

JaneStreet coreを使ってみた

多相なSetが使いたかったので、Janestreet coreを試してみた。一番分かりやすい変化は、mapとかがラベル付き引数を取るようになっている。 val map : 'a list -> f:('a -> 'b) -> 'b list なので標準ライブラリと同名でインタフェースが違うモジュールがたく…

クラス関係のABC

クラス関係のABCを淡々と貼るよ。 空定義 class Hoge{} class private::Hoge extends Object { function private::Hoge():* /* disp_id -1*/ { // local_count=1 max_scope=1 max_stack=1 code_len=6 0 getlocal0 1 pushscope 2 getlocal0 3 constructsuper …

コマンドラインからGODIを使う

いままで、GODIは対話的にしか使えないとおもってたら、実はコマンドラインから直接使えた。ただ、検索機能がないっぽいので、grepとかと組合せないといけないかもしれない。 # 一覧出力 $ godi_console list # OUnitのインストール $ sudo godi_console per…

Javascriptはメタクラスが簡単に扱える

Javascriptのクラスは、Prototypeでつながっているだけだから、クラスとインスタンスの違いがすごくあいまい。だから、ごくあたりまえにメタクラスやら、メタメタクラスが扱える、すごい言語なのかもしれない。 ただ、MOPが使えるわけじゃないから、あんまり…

Gaucheの+.ってR5RS違反じゃね?(字句的な意味で)

R5RS(日本語訳)を読む限りは+.は、字句的に識別子に使えない気がする。 <識別子> → <頭文字> <後続文字>* | <特別な識別子> <頭文字> → <英字> | <特殊頭文字> <特殊頭文字> → ! | $ | % | & | * | / | : | < = | > | ? | ^ | _ | - <特別な識別子> → + | - |…

はてダラ エラー?

はてダラが"Day too big"とか言うんだけれど、何事だろう。ソースには該当する文字列がないから、ライブラリ側か? $ hw Skip login. Post 2008-06-17. Day too big - 24997 > 24855 Sec too small - 24997 < 74752 Sec too big - 24997 > 11647 Post OK. Skip…

再帰関係のABC

再帰関係のABCを淡々と貼るよ。callerとcalleeは意図的に無視してるよ。あと、Yコンビネータとか。 普通の再帰 function forever(){ forever(); } var undefined():* /* disp_id 0*/ { // local_count=1 max_scope=0 max_stack=1 code_len=7 0 findpropstric…

ObjectiveCはLLっぽい

詳解 Objective-C 2.0作者: 荻原剛志出版社/メーカー: ソフトバンククリエイティブ発売日: 2008/05/28メディア: 大型本購入: 52人 クリック: 603回この商品を含むブログ (146件) を見る最近、詳解 Objective-C 2.0を読んでる。id:banjunにいつまでも負けてら…