StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

Python

urllib? urllib2? いやいや、requests?

久々に簡単なスクリプトを書いていたが、httpアクセスできるPythonのライブラリを探してみた。 はじめにurllibがひっかかる。直訳調で、かつクオリティが高いため、少し読むのがめんどくさいでおなじみのIBM Developersのリソースだ。 urllibの関数名で再度…

class Hoge:と、class Hoge(object):の違い

定義は以下のとおり。 class Hoge: def __init__(self): self.x = 'hoge' class Hoge(object): def __init__(self): self.x = 'hoge' これをhelp()で比較してみた。 Help on class Hoge in module __main__: class Hoge | Methods defined here: | | __init_…

TODO: class Hoge: と、class Hoge(object): の違い

表題がわからない。とりあえず、どっかのOSSに従って、class Hoge(object):と書いていたんだが、 vars()が使えないことがあり、class Hoge: にしたら、使えた。ここはどっかで調べる必要がある、ということで、TODO。

Pythonでスクレイピング

BeautifulSoupというライブラリを使ってみました。 BeaultifulSoup: http://www.crummy.com/software/BeautifulSoup/ なんと便利。 str = "<a href='#'>test</a>"; なんて文字列があったとすると,中身のtestだけ取り出したいときは以下のように書きます。 from bs4 import B…

global文

なんと!びっくり。global文をつかわないと,問答無用にローカル変数の代入となるらしい。そうか。完全に変数宣言なるものがないとこうなるのか。普通名前空間はカスケーディングするもんだけど...いや、global文なくてもカスケードして問題なさそうだけ…

sql injectionに備える

さて.SQL文ですが,書き込まれたデータをいれるため,以下のように書いてました. sql = "insert into storytable values('%s', '%s');" % (name, story); まぁこれだと,story,つまり,ユーザが書いた文章の中にsqlを埋め込めば,簡単にinjectionできてし…

Pypyを使ってみる

サーバには入っていないんだけど,興味本位で.あるPythonで書いたプログラムの時間がかかりすぎているので,高速化したいと思い,とりあえずCythonをいれる.しかし,CythonはC言語変換を行うため,どうもWrapperの作成に用いられているらしいと知る.そこ…

Pythonでのis演算子と'=='演算子の違い

is演算子と'=='演算子の違いですが,いろいろ書かれてはいるものの,端的にいえば,「isは同じインスタンスをさしているかどうか,==は__eq__がTrueを返すかどうか」の比較になります.数値の例がわかり易かったのですが, a = 2 b = 1+1; print a is b prin…

Pythonでデバッグprint関数を作る

C言語なんかではマクロでデバッグ関数を定義して,printfデバッグに,ファイル名と行数を出力させたりしますね.Pythonでも同じように,デバッグprintfの関数を作ってみました. #debug.py __all__ = ["D"]; import inspect; DEBUG=True; def _debug(msg) : …

Python __all__について

なんか,役に立つのか立たないのか微妙なところになってきた.__all__は,モジュールの外に公開するかしないかを決める,C言語でもがんばって関数の公開,非公開を無理矢理記述するように,結局シンボルテーブルを変更する,,,らしい.その動作を知るため…

Mercurialを読む(Pythonの慣例を知る)

どうやらMercurialで用いるclass名は小文字みたいだ. ジャバジャバしてきた私には,大文字で始まってないと気持ち悪い. そして_で始まる関数名とそうでないのがある.internal useというところか. Rubyではあるまいし. if feature and exceptions: retur…

Pythonで__slots__を使う

Pythonも遊び程度で使ってきたので詳しくしらなかったのですが,便利な機能があるのですね.てわけで,とりあえず気に入った__slots__について.スクリプト言語は,クラスを作ったとして,フィールドをいつでもどこでも加えられるように辞書型のフィールドを…