2012-01-01から1ヶ月間の記事一覧

Pythonのsplat演算子

StackOverFlowで見つけて面白かったのでメモdictに*を1つつけるとキーが順番に渡されますが、2つつけるとキーと同名の引数に値が渡されるんですね def draw_point(x, y): print x, y point_foo = (3, 4) point_bar = {'y': 3, 'x': 2} draw_point(*point_foo…

Pythonのfor〜else構文

今まで知らなかったんですが、Pythonだとfor〜elseが使えます elseブロックが処理されるのは、breakされることなく、ループ処理が終了した後です for i in 10: if i == 0: break else: print("foo") この場合、breakでループを抜けるので、elseブロックは処…

Rubyでhideshow.elのフォールディングが効かない件

普段fold-dwim.el経由でhideshow.elを使ってます。 で、先日ひさびさにrubyコードを読んでて気づいたんですが、ruby-modeでのフォールディングは対応していないので効きません。 ちょっと調べたところ、以下の情報を見つけましたElisp/hideshow.el http://ww…

EmacsでC-M-dが効かない件について調べたメモ

pareditでparedit-forward-downというファンクションがあって、デフォルトでC-M-dに割り当ててあるんですが、どうも使えないので調べてました。 describe-keyでC-M-dを叩いても、無反応で、ミニバッファに「C-M-d is undefined」と出力すらされません。 emac…

emacsでメソッドを全部フォールディングする

emacsでコードフォールディングするのに、以下の設定でfold-dwim.elを使っています (global-set-key (kbd "<f7>") 'fold-dwim-toggle) (global-set-key (kbd "<M-f7>") 'fold-dwim-hide-all) (global-set-key (kbd "<S-M-f7>") 'fold-dwim-show-all) 便利なんですけど、メソッ</s-m-f7></m-f7></f7>…

emacsでPythonを編集するとき、backword-kill-wordでアンダースコアまでをkillして欲しい

普段、C-wをbackword-kill-wordに割り当ててます。(シェルと同じ挙動にしたいので) kill-regionは別のキーを割り当ててます (global-set-key "\C-w" 'backward-kill-word) (global-set-key "\C-x\C-k" 'kill-region) (global-set-key "\C-c\C-k" 'kill-reg…

Python、Rubyでディレクトリの存在確認をする

ruby FileTest.directory?('/Applications') # => true FileTest.directory?('/Application') # => false python import os os.path.isdir('/Applications') # => True os.path.isdir('/Application') # => False

argparseが生成するusageは環境変数COLUMNSを見て適当に改行してくれる

タイトルそのままですが、気づいたのでメモ import os import argparse parser = argparse.ArgumentParser() parser.add_argument('source-file') parser.add_argument('output-file') parser.add_argument('-F') parser.add_argument('-f') parser.add_argu…

Pythonでsys.exitやsys.stderrへの書き込みをテストする

エラー時にstderrへメッセージを出力し、sys.exitするスクリプトをテストするのに以下のように書いてみました sys.exitについてはSystemExitで補足できますので、それでテストできます。 sys.stderrについてはmockに置き換えて、writeされた値を保存しておい…

Pythonで月末のdatetimeオブジェクトを得る

rubyのActiveSupportを使うとDate型にend_of_monthというメソッドが追加され、Dateオブジェクトから月末のDateオブジェクトを得ることができます require 'active_support/core_ext/time/calculations' today = Date.today() puts today # => 2012-01-21 put…

Pythonで2つのdatetimeオブジェクトの期間の1日ごとに処理をする

2つのdatetimeオブジェクトがあって、その期間の1日ごとに処理を行いたいケースがあったので、調べたところ以下のような感じに落ち着いた from datetime import datetime, timedelta start = datetime.strptime('201201', '%Y%m') end = datetime.strptime('…

Pythonで文字列からdatetimeオブジェクトを生成する

文字列からdatetimeオブジェクトを生成する場合、2.5で追加されたdatetime.strptimeが使えます from datetime import datetime datetime.strptime('20120120', '%Y%m%d') # => 2012-01-20 00:00:00 第1引数に日付を表す文字列を、第2引数にフォーマット文字…

Emacsのbookmarkを使いだした

Emacsを使い出して、もう5、6年経つはずなんだけど、未だに発見があります 今までbookmarkを使っていませんでした よくdiredで開く、いくつかフォルダがあって、いままではわざわざパスを指定してたんですが、急にめんどくさく感じるようになったので、なに…

Emacsでanything起動中にanythingを起動してしまう

anything-for-filesをkbd("C-:")に割り当てて使ってます (global-set-key (kbd "C-:") 'anything-for-files) ファイル開くときは全部これで開きます。便利です ただ、anything起動中にanythingを起動してエラーを発生させてしまうことがたびたびあってイラっ…

expand-region.elを使ってみた

expand-region.elを試してみましたhttps://github.com/magnars/expand-region.el 名前を見たときに、「あ、これよさそう」と思ったんですが、いい感じです 使わなくなって、設定を消してしまう拡張機能も結構あるんですが、これは生き残りそう インストール/…

Ruby,Pythonで動的プロキシ

メタプログラミングRubyで動的プロキシというものが紹介されていますどのメソッドにも当てはまらないメッセージを他のオブジェクトに委譲する、というものです下記はメタプログラミングRubyで紹介されているサンプルコードとほぼ同じものです class MyDynami…

Ruby、Pythonで動的ディスパッチ/動的メソッド定義

動的ディスパッチ 動的ディスパッチは、「実行時に呼び出すメソッドを決める」ことを指します。 rubyではsendによって動的ディスパッチができます method_to_call = :upcase obj = "abc" obj.send(method_to_call) # => "ABC" pythonではメソッドがオブジェ…

Ruby、Pythonでインスタンス変数を動的に取得/設定する

ちょっと前まではrubyで、最近はpythonで仕事をしているので、rubyでやっていたアレ、pythonだとどうやるんだろ?と思うことがたまにあります。 逆にpython書いてて、あれこれrubyで(ry とか で、インスタンス変数の操作ですが、 pythonではあらかじめ定義を…

Ruby、Pythonでクラスのインスタンスメソッドを追加する

ちょっと前まではrubyで、最近はpythonで仕事をしているので、rubyでやっていたアレ、pythonだとどうやるんだろ?と思うことがたまにあります。 で、クラスへのインスタンスメソッド追加ですが、 rubyではオープンクラスによって、インスタンスメソッドが追…

PythonのコマンドラインツールClintを試す

pythonのコマンドラインツールclintが面白そうなので試してみますhttps://github.com/kennethreitz/clintclint自体がコマンドラインツールというわけではなく、pythonでコマンドラインツールを作成するときに便利なライブラリです インストール pip install …

emacsでタグジャンプ後、カーソル行を1行目にもってくる

emacsでコードを読むとき、タグジャンプが便利です。 僕はanything-etags+.elを使ってます。 で、今日も思ったんですが、行数の多い関数の定義に飛んだ後とか、カーソル行を1行目に持ってきて欲しい、と思うときがあります。 デフォルトでそういう挙動にで…

backbone-boilerplateを触ってみる

backbone-boilerplate https://github.com/tbranyen/backbone-boilerplate クライアントサイドMVCフレームワークであるbackbone.jsを使用したアプリケーションのテンプレートですね なんかbackbone.jsってこういうの多いですね。 使ってみる 上記URLからzip…

Emacsのファイルローカル変数について

ファイルローカル変数とは、ファイルの1行目に以下のようなコメントを設定しておくことで、ファイル内で有効なemacsの変数を定義できる、というものです (1行目に設定する以外の方法もあります) # -*- mode: python; coding:utf-8; -*- 上記の設定でmajar-mo…

124の言語でFizzBuzz

http://rosettacode.org/wiki/FizzBuzz新しく言語を習得しようとするときに、その言語のFizzBuzzを読むとなんとなく雰囲気がつかめる、、かもしれない 他にも数独ソルバーとか http://rosettacode.org/wiki/Sudoku

Pythonで表データを扱うライブラリ「tablib」を試す

仕事してるとテストデータを作ったり、またはシステムのデータをダウンロードさせたりとかで、結構csvやxls形式を使います そんなときに便利そうなライブラリがあったのでちょっと試して見ましたtablib https://github.com/kennethreitz/tablibdocument http…

Twitter Streaming APIのstatuses/filterを試す

なんとなくTwitterStreamingAPIを試してたのでメモ キーワードでレスポンスを絞り込む trakingというファイルを用意して、以下を入力 キーワードは400まで指定できるみたいだけど、ヒット件数が多くなると取りこぼしも多くなるんだと思う。 track=basketball…

Python、Ruby、Node.jsで1分後、1時間後、1日後の日付を求める

python from datetime import datetime, timedelta today = datetime.today() today + timedelta(minutes=1) # => 1分後 today + timedelta(hours=1) # => 1時間後 today + timedelta(days=1) # => 1日後 ruby require 'date' today = DateTime.now() today …

デザインパターン in python

pythonのデザパタ本をDLしてPDFで読めます。http://dpip.testingperspective.com/紹介されているパターンは以下の7つ。 1. Model-View-Controller Pattern 2. Command Pattern 3. Observer Pattern 4. Facade Pattern 5. Mediator Pattern 6. Factory Patte…

node.js + backbone.js + mongodb + coffeescriptのコードサンプルとUI駆動開発

node.js、backbone.js、mongodb、coffeescriptなどを使用したシンプルなCRUDアプリのサンプルがgithubで公開されていましたので、動かして遊んでました フレームワークはexpressを使用しています。https://github.com/gelnior/ponyoちゃんと動きます そもそ…

oh-my-zshの導入メモ

今使っているmacを買ったときにいろいろとツールのインストールやらなんやら環境設定をしたけど、なんとなくシェルがbashのままだった。 新年ということで今年からめんどくさがらずにちゃんとzshを使おうと思い立ち、とりあえず導入したのでメモを残す イン…