プログラミング

Sublime Text 2 + vintage で Emmet の Ctrl+E を使う時は 挿入モードで。

最初コマンドモードで Ctrl+E してて何か変だな?ってなってた。 挿入モードならすいすい動きます。参考: http://leko.jp/archives/442

WindowsのSassでエラーになる時

Windows で Sass を使おうとすると以下のようなエラーが出ることがある。 Encoding::UndefinedConversionError on line ["NUMBER"] of C: "\x[HEX-CODE]\x[HEX-CODE]" from Windows-31J to UTF-8 この対策として、コマンドプロンプトの文字エンコーディング…

pydoc とかの書き方サイト

参考 Google サイト Python プログラムを書く前に - 大カフェイン ちゃんと調べてないけど、 pydoc の書き方、 pep にあったりしないのかな。 pydoc の引数や返り値に型を書く書式を知りたい。

2つのリストの要素のペアのリストが欲しい

[1,2,3]と[4,5,6]の2つのリストがあった時、 [(1,4), (1,5), (1,6), (2,4), ...] というリストが欲しい。リスト内包で作れる。 >>> a = [1,2,3] >>> b = [4,5,6] >>> [(x, y) for x in a for y in b] [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, …

すごいHaskell七章後半(7.4〜7.6まで)

自分が疑問に思ったり、理解できなかったところを埋めるために書いてたのが、いつのまにか本のコピペになってたので軌道修正したい。 型コンストラクタと値コンストラクタ 3次元ベクトル型 Vector data Vector a = Vector a a a deriving (Show) の、 Vector…

lxml で XML で子要素のテキストをフラットにする。

下のような XML があったとする。 <document> out outer1 <outer> in outer1 <inner> in inner </inner> in outer2 </outer> out outer2 </document> ここで、 document 以下のテキストを一気に書き換えたい。 期待するのは以下の様な動作。(上記 XML を sample.xml とする) >>> import lxml.html >>> xml = op…

子要素をもつ XML のテキストを lxml で消したい

以下のような XML があったとする。 <document> <deleteme>この要素をタグごと消したい。<wac/> あああああ </deleteme> </document> ここで、 要素のテキストを消したい。 >>> xml = open('sample.xml', 'rb').read() >>> root = lxml.html.fromstring(xml) >>> elements = root.xpath('//deleteme') >>> for…

XMLの属性の値とテキストを入れ替える in Python + lxml

後で使いそうなのでメモ。 文の添削をXMLで表したファイルがあるとする。 <document> 私<correct value='は'>を</correct>元気です。 </document> ここでは「私『を』元気です。」を「私『は』元気です。」に訂正している。 要素が誤った文字を指し、それに対する正しい文字を value 属性で表している。 ここで、…

すごいHaskell七章(後半 7.4まで)

型コンストラクタ・型引数 data Maybe a = Nothing | Just a ここでの Maybe が型コンストラクタ。 a は型引数。 Maybe が型引数に型を受けとることで、 Maybe Int, Maybe Char などの型を作ることが出来る。例えば、 Just 1 の型は Num a => Maybe a …これ…

リストアップされたファイルを別のディレクトリに移すバッチファイル

ファイルをリストアップしたファイル list.txt があって、そこに記述されたファイルのみを別のディレクトリに移す。 gist → https://gist.github.com/3051671 バッチファイル。第一引数にリストファイルを、第二引数に移動先ディレクトリを指定する。 @echo …

pyhtonの整数同士の割り算

解を小数で欲しい時は浮動小数点数にキャストするんだけど、どのタイミングでキャストするのか調べる。 整数同士 >>> 1 / 2 0 整数なので0になる。 それぞれキャストしてみる。 >>> float(1) / 2 0.5 >>> float(1) / float(2) 0.5 >>> 1 / float(2) 0.5 >>> …

『入門 自然言語処理』の4.8.1のプログラム正誤表

表とういほどじゃないんだけど、検索用に。 Matplotlibを使ったグラフの表示のところ、例4-10のプログラムの6行目が間違ってる。 width = 1 / (len(categories) + 1) 整数の1を整数で割ってるから、グラフの幅が0になってしまってる。 正しくはこう。(他に…

『入門 自然言語処理』の4.7.3、動的計画法のところ

結構難しい…多分ここだけで理解するものでもないんだろう。動的計画法ってそれだけで教科書があるし。 virahanka2() の挙動 def virahanka2(n): lookup = [[""] , ["S"]] for i in range(n-1): s = ["S" + prosody for prosody in lookup[i+1]] l = ["L" + p…

『入門 自然言語処理』かじり

今から入門してる時間はない気もするけど、今までの勉強不足がたたって入門することになった。 アニーリング(焼きなまし)法って何… 『入門 自然言語処理』の3.8.2節の終わりに出てくる。温度という上限を更新しながら、ランダムにパラメータを当てはめてい…

pythonのファイル名の先頭に数字を使うとimportできなくなる。

多分そういう制限があるんだと思う。 PEP-8にはlowercaseとしか書かれてない。仕様はちょっと探したけどまだ見つかってない。 http://oldriver.org/python/pep-0008j.html 多分変数名の制約と同じだと思う。 roundを初めて使ったのでメモ round( x[, n]) x …

すごいHaskell七章(前半)

もうこの辺から一筋縄じゃいかなくなる。 データ型の用語 Boolを例に見る。 data Bool = False | True dataキーワードを使って新しいデータ型を定義する。 等号の前の部分は型の名前。 等号の後の部分は値コンストラクタ。値コンストラクタはこの型が取り得…

なんか

関数型言語って関数をどんどん組み合わせて作っていく感じだから、どんな関数があるのか知ってるのが結構重要になりそうだなあ。なんか「標準ライブラリは全部読むでしょ」って言ってる人がいたな…。確かに、標準ライブラリだったら効率とかも考えつくされた…

すごいHaskell六章 (後半6.3から終わりまで)

連想リスト 山場が来たぞー!ドコドコドコドコドコドコドコドコ キー(Stringだけど)が重複してる(ペアのリスト型)連想リストにfindKey(Maybeでない)を使うとどうなるか。 phoneBook :: [(String, String)] phoneBook = [("betty", "555-2938") ,("bonnie", "45…

すごいHaskell六章(後半 6.2まで)

この章、五章以上にヘビーなんですが。(だが我々はこの時気づいていなかった…六章をさらに上回る強大な章の存在に。) 六章が急激に難しくなった気がするのは、五章までは文法中心だったからかな。あと、ここから型引数とかMapとかHaskellが本気出し始めた…

すごいHaskell六章(前半)

文法三昧から少しソフトウェアっぽくなってくる import モジュールのインポート。qualifiedで名前空間を分けられる。qualified as で別名を付けて短縮できる。 単語数えたりするところ ちょっとwordsやgroupの挙動が気になったので。 wordsはスペースでsplit…

すごいHaskell五章(後半)

畳み込ぞ 「基底部は空リストとし、x:xsパターンを使ってリストを先頭要素と残りのリストに分解する」 というパターンを関数にしたものがfold…多分。 毎度のことだが、最初の概要を見ただけじゃ何もわからない。例を見て、自分で処理を追わないと。 本の例は…

すごいHaskell五章(前半)

高階関数 引数として関数を受け取ったり、返り値として関数を返す関数。 カリー化 グワーッ!キモン! 複数の引数を取る関数は、1つ引数を受け取るたびに、引数が一つバインディングされた新しい関数を返す。 ghci> :t max max :: Ord a => a -> a -> a ghci…

すごいHaskell四章

関数型言語の花形、再帰の章。 Haskellでは命令形言語のように計算をどうやってするかを指定するのではなく、求めるものが何であるかを宣言して計算を行うからです。(52p) 問題の基底部 これ以上分解できなくて解を明示的に(再帰を使わずに)定義しなけれ…

すごいHaskell三章

パターンマッチ 引数の値、構造でマッチさせる。 if文で書くと sayMeIf :: Int -> String sayMeIf x = if x == 1 then "One!" else if x == 2 then "Two!" else if x == 3 then "Three!" else if x == 4 then "Four!" else if x == 5 then "Five!" else "Not…

すごいHaskell二章

型 型があるとか関数定義の時は型の定義も書くとか。 型変数 どんな型も取りうることを示す変数。 同じ名前の型変数は、同じ型が入る。 多分コンパイルする時に特定の型に決定されるんだろうな。 中置関数 1 + 2 の" + "みたいな置き方をする関数。つまり演…

すごいHaskell一章

リストとタプル リストは要素の型まで含めて型。 タプルはさらにサイズまで含めて型なのか。 リストは同じ型の要素しか持てないけど、タプルは異なる型の要素を持てる。 リストはサイズ(要素の数)を変更できるけど、タプルはサイズ固定。 [1,2] [1,2,3] は…

CGIメモ

CGIサーバーはcgi-bin以下にあるスクリプトを実行し、標準出力に返って来た結果を表示する。python #!/usr/bin/env python print "200 OK" print "Content-Type: text/plain" print "" print "Hello CGI!" ruby #!/usr/bin/env ruby puts "200 OK" puts "Con…

UbuntuServer 11.10 32bit に Python2.5 をインストールする

参考: http://99blues.dyndns.org/blog/2011/06/install_python_2-5/上記記事ではUbuntuが64bitだが、今回は32bitの場合。違いは .configure時に指定する libsqlite3-dev のパス。(libsqlite3.*)は /usr/lib/i386-linux-gnu/ にインストールされている。の…

VitualBox4.1.10上 の UbuntuServer 11.10 32bit に Windows 7 32bit から Putty0.60 でSSH接続

参考: http://chocokanpan.net/archives/374 『Pyhton プロフェッショナルプログラミング』読んで環境設定してた時に詰まったところ。Ubuntu上でSSHサーバーを立ち上げるところまではに書かれてる通り。 その後のホストOSからSSHで接続するところで詰まった…

『Pythonプロフェッショナルプログラミング』2章まで読んだ

レビューとかじゃなくて、個人的な走り書きです。 知ったこと Appendix+1章 Appendix Appendixは基本的な環境構築について解説されている。 具体的には、VirtualBox上でのUbutuServerで開発するための環境構築について。 ここで学んだことは、 VirtualBoxの…