ラベル python の投稿を表示しています。 すべての投稿を表示
ラベル python の投稿を表示しています。 すべての投稿を表示

2011年8月19日金曜日

notepad++ : Function List の python の parsing rule をカスタマイズする。

皆さんは、Windowsでのテキストエディタは何を使ってるでしょうか。

自分は、いつかはバリバリのemacs使いになりたいなぁ、と思いながら、

notepad++ & xkeymacs

の組み合わせがお気に入りで常用しています。

notepad++の "Smart HighLighting" という、選択した単語と同じ文字列を自動でハイライトしてくれる機能が特にお気に入りです。


そして、notepad++の便利なプラグインに、"Function List" というものがあります。

その名の通り、関数リストを表示してくれる、というものです。

今回はこれをカスタマイズしよう、というお話です。


そもそもなぜカスタマイズしようと思ったかというと、関数の表示具合が自分好みじゃなかったから。
表示してくれるは表示してくれるのだけど、Class とか関係なく”ぶわっ”と一緒くたに表示されるから分かりづらくて、、、。

なので、Class毎に関数を表示してくれるようにカスタマイズしました。


notepad++は日本語化バージョンとか色々あるみたいなので、一応、バージョンを記載しておくと、

Notepad++ v5.8.7-6 (UNICODE) です。

Function List の方は、v2.1 です。

Function List それ自体のインストールは、notepad++ についてる、Plugin Manager では表示されないので、

http://sourceforge.net/projects/npp-plugins/files/Function%20List/

からダウンロードして、指示に従って導入しました。


で、Function List の解析ルールのカスタマイズですが、
完全に、こちらのblogを参考にさせて頂きました。


メニューバーの、 プラグイン>Function List>Language Parsing Rules を開く。

次に、右側の言語一覧より Python を選択。

デフォルトで DEFINE という Group が定義されているので、それをまずは Delete。

そして、次に、新しいグループを作るので、Add をクリック。

すると、、、

おぉ、、、強制終了。。orz

急になんだよー、と思いつつ再度実施してみると、、、

おぉ、、、強制終了。。orz

その後何度やっても、、、

おぉ、、、強制終了。。orz

結果は変わらず。


え、、、まじっすか、、これじゃカスタマイズできないじゃん!

一瞬諦めかけましたが、Function List をインストールした時に、FunctionListRules.xml というのを配置したことを思い出し、
「あ、じゃあこれ直接書き換えちゃえばいいんだ…」
ということで、このxmlファイルのpythonの部分を下記のように書き換えました。


    
    
        
    
    
        
    
    
        
    

※なんかbloggerの仕様なのかなんなのかよく分かりませんが、↑のxmlがどうしても"<タグ />の記法を許容してくれず、勝手に<タグ>に変換してくれちゃってます。。お手数ですが、お手元のxmlと微妙に違ったら読みかえてあげてくださいm(__)m

なんだ、意外と簡単、、、。
やってることは、グループとして、"Class"、"Function"、"GlobalFunction" の解析ルールを定義して、
"Class" のサブグループとして、"Function" を指定しているだけです。

さ、これで、notepad++ を再起動してみると、、、

お~、想定通り!

こんな↓感じ~。


これでまた1つ快適になったぜー。

そしてemacsが遠のいたかな~、、、


っていうお話でした。

おしまい。





2011年8月17日水曜日

AWS : boto 各リージョンへの接続

AWS の Python API である、boto について。

まず始めに躓いたところは、指定のリージョンに接続出来ないよ!ってこと。

AWSの公式紹介ページでは、AWSへのコネクションの作成に、

>>> import boto
>>> boto.connect_ec2()

みたいな感じで接続してるんだけど、これだけじゃリージョン指定出来なくて北米とかにつながってしまう。

で、ソースを見ると

RegionInfoっていうクラスに、リージョン名渡して~みたいな感じで出来るのですが、、、

、、、っていうか接続するだけなのに、めんどうだな(-.-;)

って思いました。

それで、よくよくソースを探ってみると、ありました。リージョン指定で接続するメソッドが。

その名も

connect_to_region('リージョン名')

ずばりですね。

ってことで、これで簡単にリージョン指定で接続できます。

下記は、インタラクティブシェルを使って、東京リージョンのEC2で新規インスタンスをあげる例です。

>>> import boto.ec2
>>>
>>> ec2_conn = boto.ec2.connect_to_region('ap-northeast-1')
>>>
>>> ec2_conn
EC2Connection:ec2.ap-northeast-1.amazonaws.com
>>>
>>> rsv = ec2_conn.run_instances('ami-2e0ca72f', instance_type='t1.micro')
>>>
>>> rsv
Reservation:r-845a0e85
>>>
>>> rsv.instances
[Instance:i-44095645]
>>>
>>> instance = rsv.instances[0]
>>>
>>> instance
Instance:i-44095645
>>>
>>> print instance.region
RegionInfo:ap-northeast-1
>>>
>>> print instance.placement
ap-northeast-1a
>>>


3行目で、東京リージョンに接続。
8行目で、インスタンス起動。
21行目で、リージョンを確認。
24行目で、アベイラビリティゾーンを確認。

うん、ちゃんと取れてるみたいです。

同様に、自分が使用して出来たものとして、RDS(※注)・ELBがあります。
他も同様だとは思いますが、ソースを見て確認してみてください。

S3 と IAM は、接続の感じが違うみたいで、それぞれ普通に、

@S3
>>> import boto
>>>
>>> s3_conn = boto.connect_s3()

@IAM
>>> import boto
>>>
>>> iam_conn ~ boto.connect_iam()

と、します。
S3は、なんかリージョンの考え方が違うのかな。
IAMは、そもそもリージョンが無いからそれはそうか。

※RDSは、2011/08/17現在、pypiでの最新バージョンであるboto2.0では、リージョンのエンドポイントが
間違っていて、コネクションは作れるものの、インスタンスの作成等は出来ません。
boto/rds/__init__.py の def regions() に記載されているエンドポイントを自分で書き換えるか、
githubより最新のものをダウンロードする必要があります。
各AWSサービスのエンドポイント一覧は、こちら。


おしまい。

2011年8月16日火曜日

AWS : boto API の導入

AWS(Amazon Web Service) の Python API である boto を使用する機会があったので、それについてちょくちょく書いていこうと思います。

まずは導入手順。

これは、基本的にはAWSの公式ページのままなので、別になんてことはないです。

◆pythonのパッケージ管理用のpipをインストール
(pipを入れる前に、easy_installも入れておく。)

# easy_install pip

◆botoライブラリをインストール

# pip install -U boto

これでインストールは完了。

なのですが、botoの開発は今もガンガンされているっぽいので、これだと最新のものが入らなくて困ることがあります。
例えば、2011/8/16現在では、pypiに登録されているboto2.0では、rdsのendpointの値が正しくないため、接続がうまくいきません。

なので、出来ればgithubから最新のソースをダウンロードして、

# python setup.py install 

とした方がいいと思います。
まぁとにかく、これでboto自体のインストールはOKです。

次に、アカウントに接続するためにクレデンシャルファイルというものを作ります。

◆クレデンシャルファイルを作成

・Linuxとかの場合
/etc/boto.cfg or ~/.boto に下記内容を記載

・Windowsの場合
任意の場所に下記内容を記載し、環境変数に
名前:AWS_CREDENTIAL_FILE
値 :作成したファイルのパス
として登録する。
※http://code.google.com/p/boto/wiki/BotoConfigによると、BOTO_CONFIG として登録でもいいらしいけど未検証。

作成するファイルの内容
[Credentials]
aws_access_key_id = {ACCESS KEY ID}
aws_secret_access_key = {SECRET ACCESS KEY}
※{}はいらない。

インタラクティブpythonを起動して、

>>> import boto

で、特になにも出なければオッケーです。

おしまい。

ぐぐってもなかなかまとまった情報が手に入らないので、次からもっと色々と書いていく予定。