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

ruby-oauth にブロックを渡せるようにする

Ruby には既に OAuth ライブラリ があるが,ブロックを渡せないのでちょっとずつ body を読み込みつつ何かする,というような処理ができない. 最終的には net/http を使っているので,適当にブロックを運ぶように書き換えて consumer = OAuth::Consumer.new…

C78

2日目と3日目に一般参加. 2日目 だいたい正午くらいにビッグサイトについて,まず最初に東方島に向かった. ひとつだけ欲しいものがあったのと,友人にいくつか頼まれていたものがあったのとで行ったけどホントに混雑がひどかった. 正直もう行きたくない.…

Twittperator 素敵

Vimperator からさくっと TL 見たりポストしたりするのに便利. ちゃんと各種コマンドで補完もきくのでわりと使いやすい. で,ちょっと不満な点があったので適当に書き足した. まず home_timeline, user_timeline, mentions の各 API に count が指定でき…

GHC API でモジュールが export している名前とその型を得る

./BrowseType Prelude のように使うと (snip) break = forall a. (a -> GHC.Bool.Bool) -> [a] -> ([a], [a]) catch = forall a. GHC.Types.IO a -> (GHC.IO.Exception.IOError -> GHC.Types.IO a) -> GHC.Types.IO a ceiling = forall a. (GHC.Real.RealFra…

ghc-mod を利用した neocomplcache のプラグイン neco-ghc (ghc_complete.vim) を書いた

せっかく Emacs とは独立して ghc-mod が書かれているので,これを Vim での補完にも利用したいなーと思って書いた. ghc-mod は hackage で公開されているため,cabal install ghc-mod でインストールできる. http://www.mew.org/~kazu/proj/ghc-mod/ http…

いつのまにか Cabal の syntax ファイルができてた

http://code.google.com/p/vim/source/browse/runtime/syntax/cabal.vim?r=b9e314fe473fadd54b861a3836ad96c9ca26bce3 しかしちょっと cabalStatement が適当すぎる… 先に license にマッチしてしまうので license-file が絶対にマッチしなかったり,license…

Cabal でテストを走らせる

今のところ標準的な方法はないけど,@shelarcy さんによると GSoC のプロジェクトで Cabal の test 機能を改善している最中だそうです. http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/haskell/t127230760295 http://cabaltest.blo…

let-polymorphism と value restriction

について,現時点での自分の理解をまとめておく. ML 系言語での話. let-polymorphism とは let によって束縛されたものが多相的に振舞えるためのもの. let twice = fun f x -> f (f x) let a = twice (fun x -> x + 1) 0 let b = twice not true このよう…

0530 Pyon-Pyon River Crossing (ぴょんぴょん川渡り)

AOJ

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0530 足場の位置とすべりやすさが与えられ,向こう岸に辿りつくルートのうち危険度の合計が最小になるときの値を求める問題. 最初はグラフとみて Dijkstra 法で解いて 00:19 sec,2988…

0530 Darts (ダーツ)

AOJ

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0529 N 個の得点が与えられ,この中から4つまで選んでその合計を最大値を求める問題. ただし,合計が M を超えてしまった場合は 0 点になってしまう. 最初 DP でいけるかと思ったけど…

0528 Common Sub-String (共通部分文字列)

AOJ

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0528 ある2つの文字列が与えられて,それの最長共通部分文字列の長さを答える問題. 空文字列は任意の文字列の共通部分文字列とし,空文字列の長さは 0 とする. 最初は最長共通部分文…

0527 Seting Go Stones (碁石ならべ)

AOJ

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0527 規則に従って白黒の碁石を並べていったときに,最終的に白が何個あるかとう問題. 言われた通りにシミュレーションすると最悪 O(n^2) になって n 連続する同じ色の碁石の数のリス…

2153 Mirror Cave

AOJ

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=2153 BFS するだけ. # だけじゃなくて部屋の端も # と同様に壁と見なされることに注意 (これで WA 出してしまった). なんか statistics 見ると自分だけメモリ使用量が少ないんだけど…

1168 Off Balance (Problem D: ぐらぐら)

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=1168&lang=jp 本番中に解けなかった問題. 入力がひどい(と思う)ので一旦それぞれのピースにユニークな id を割り振ってから解いた. check の型が若干アレだが,start の地点にあるピ…

ファイルから data URL を生成

そういう関数が用意されていてもよさそうな気もするけど. MIMEService で MIME type を得ているけど,どうやら拡張子から判断してるだけっぽい. function toDataURL(file) { // assert(file instanceof Ci.nsIFile) let type = 'plain/text'; try { type =…

Quiz

なんか見かけたので考えてみた. http://blog.hackers-cafe.net/2010/06/haskell-quiz.html 想定解っぽいもの (+), (!!), (==), sum, print に関しては didn't define と明言されているのに ($) はされてないからまぁこれを自分で定義しろということなんだろ…

ICPC 国内予選

id:osa_k くんと出てました.ABC の3問を解いて全体で27位,学内5位で敗退. A 最初に書いたのは少しミスがあったけど,すぐに気付けて問題無く解けた. B osa_k くんに任せた. C うまい解法が思いつかなくて,でもまぁとりあえず愚直にぐるぐる回しても答…

Mr. リトー郵便局

AOJ

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=2200&lang=jp Warshall-Floyd で陸路のみ・海路のみを用いた場合のそれぞれの最短経路を求めた後に DP. 街 j に船がある場合の i 番目の集配地への最小コストを dp[i][j] は,i 番目の…

Vim における文字列について その2

Vim

Vim には byteidx() という関数が用意されていて,これを使って文字単位のインデックスからバイト単位のインデックスに変換できる. " &encoding == 'utf-8' byteidx('abc', 2) " => 2 byteidx('あiうeお', 3) " => 7 これを用いると,例えばマルチバイト文…

2010年度 ICPC 模擬国内予選

初めて参加した.もっとできてもよかったなぁと思うけどまぁ実際にはできなかったのだし実力として認めなければならない. 問題文 http://acm-icpc.aitea.net/index.php?2010%2FPractice%2F%CC%CF%B5%BC%B9%F1%C6%E2%CD%BD%C1%AA%2F%CC%E4%C2%EA%CA%B8%A4%C8…

カーソル位置の文字を取得 + Vim における文字列について

Vim

現在のカーソル行の文字列を取得するには getline('.') とすればよく,さらに現在のカーソル列は col('.') で取得することができる*1ので echo getline('.')[col('.')-1] とすればカーソル位置の文字が表示される. というのはシングルバイト文字の場合でし…

Visual Brainf*ck

こんなもの書きました.きっと俺しか得しないと思う. http://eagletmt.appspot.com/brainfuck/index.html Javascript しか使ってないので GAE 上に置くこともないのですが,他に適当な置き場所も持ってないのでとりあえず. これは何 おそらく最も有名な難…

if/else を選択

Vim

a{ とか i{ によって対応する {} を選択することはできる*1けど,カーソル位置の if/else 全体を選択したいときがたまにあるので. 実装方法に悩んだけど,結局カーソル位置から前方に { を探していき,それが if/else によるものの場合はそこで止まって,そ…

1376 -- Robot

PKU

http://acm.pku.edu.cn/JudgeOnline/problem?id=1376 概要 直径 1.6 メートルのロボットがグリッドの交点上を動く.グリッド 1 マスの一辺は 1 メートル. 障害物に触れてはいけない. ロボットは 左に 90 度回転 右に 90 度回転 前に 1 マス進む 前に 2 マ…

ここの型を知りたい

こんなかんじに使う. % echo 'length x' | ./hint [a] % echo 'x + 1' | ./hint (GHC.Num.Num a) => a % echo 'foldl x 0 [2,3]' | ./hint (GHC.Num.Num a, GHC.Num.Num b) => a -> b -> a % echo 'nub x' | ./hint Data.List (GHC.Classes.Eq a) => [a]元…

コマンドラインで bang をトグル

なんか最近 Vimperator のことばかり書いてますね… たまに欲しくなるので bang をトグルするキーマップを定義してみた. 例えば :mr hoogle map とかした後,やっぱり個別のページで見たいなと思って すると :mr! hoogle map に切り替わる. bang がついてい…

ChirpUserStreams が変わった

このポストで気付いた. http://twitter.com/YarmUI/status/13397162500 今まではここにまとめてあるように,各 event に対して id しか渡されていなかった. http://ssig33.com/blog/2010-04-25-1.html しかし,手元のログだとちょうど今日5月5日の5時くら…

アクセスキーと Vimperator のキーバインドが衝突するあれ

Firefox のアクセスキーの設定は ui.key.generalAccessKey ui.key.chromeAccess ui.key.contentAccess で行うことができ,chromeAccess は chrome の要素に,contentAccess はページコンテンツの要素に使われるアクセスキーを指定する. generalAccessKey が…

YouTube の新 UI に対応

YouTube の UI が変わり,これが早速動かなくなってました… http://d.hatena.ne.jp/eagletmt/20100322/1269225540 yt がなくなってしまったけど,flashvars を見ればよさそう. それと,g:yt_save_dir が設定されていなかったときの保存先を Firefox の設定…

Evaluate Haskell code anywhere

http://chrisdone.com/posts/2010-04-05-haskell-json-service-tryhaskell.html Try Haskell が eval する API を提供するようになったようなので,適当に Vimperator のコマンドを書いてみた. :hseval take 10 $ scanl1 (*) [1..]とすると [1,2,6,24,120,7…