はてブロ@ama-ch

https://twitter.com/ama_ch

Program

超セレブな携帯向け割り勘電卓をPythonで書いてみた

携帯電話向け「割り勘電卓」を公開します - 頭ん中 さんを見て、PythonでCGIを書く勉強に書いてみました。 本体: http://ama-ch.com/cgi-bin/warikan.cgi 均等割り電卓と同じ「ような」動作をします。携帯向けとか言いながら携帯向けにWebを作ったことなど…

カレントディレクトリ以下すべてのファイルの文字コードを変換する

Macを使い始めてから、文字コードに悩まされる機会が増えました。ファイルを貰ったりすると、大抵EUCやShift-jisでうまく表示できません。各エンコーディングに対応しているエディタを使えば読むことはできますが、やっぱりターミナル上で表示できないと不便…

MacにMySQL-pythonをインストールする

PythonでMySQLを扱うためのモジュールMySQL-pythonをインストールしました。 ダウンロード SourceForge.net: MySQL for Pythonから、MySQL-python-1.2.2.tar.gzをダウンロードする。 インストール ダウンロードしたファイルを解凍するとMySQL-python-1.2.2と…

Pythonのデフォルトエンコーディングをutf-8にする

以前、site-packagesディレクトリの位置がわからなくて放置していたデフォルトエンコーディングが、久しぶりにやったらわかったのでメモ。 以下の内容を、「sitecustomize.py」という名前で保存。 import sys sys.setdefaultencoding("utf-8") このファイル…

動物の分類でクラスのお勉強

初めてのPython p.475 #!/usr/bin/env python # -*- coding: utf-8 -*- """ zoo.py 以下のような関係を持つクラスを定義し、対応する動物にふさわしいメッセージを表示する Animal | Mammal ┌---+---┐ Cat Dog Primate | Hacker """ class Animal: def repl…

モジュールの一括リロード

「初めてのPython」p.353より #!usr/bin/env python # -*- coding: utf-8 -*- """ reloadall.py 引数として指定したモジュール自身と、そのモジュール内で インポートしているすべてのモジュールをリロードする """ import types def status(module): print …

組み込み関数dir()をカスタマイズする

「初めてのPython」p.344に載っていたdir()のような動作をするソースがなかなか良い感じです。 #!usr/bin/env python # -*- coding: utf-8 -*- """ mydir.py 組み込み関数dir()をカスタマイズする例 指定のモジュールの名前空間に属する変数名の一覧を出力す…

初めてのPythonでよくわからないとこ

p.265に載っている以下のソース >>> t, f = 1, 0 >>> x, y = 88, 99 >>> a = (t and x) or y >>> a 88 >>> a = (f and x) or y >>> a 99 ふむふむ。 これに以下の説明が続きます。 これで一応、問題はないのですが、このコードは「xが決してfalseになること…

printステートメントの処理

初めてのPython p.167 printステートメント オブジェクトのデータをテキストに変換して標準出力ストリーム(stdout)に書き込むステートメント Hello, Worldでまず触れるステートメントだし、これを知らない人はいませんね。 >>> X = 256 >>> print X 256 こ…

回文の判定

初めてのPython 第2版作者: マークルッツ,デイビッドアスカー,Mark Lutz,David Ascher,夏目大出版社/メーカー: オライリージャパン発売日: 2004/11メディア: 単行本購入: 4人 クリック: 286回この商品を含むブログ (104件) を見る Python クックブック 第2版…

Twitterの友達の発言から未フォローのIDを取り出す

Twitterで友達の発言を眺めていると、 「@hoge バカスwww」 なんて発言があって「@hogeってフォローしてたっけ?」なんてことがよくありますよね。・・ありますよね?とにかく僕はよくあります。 そんな僕のジェラシーを解消すべく、python-twitterを利用し…

python-twitterでフレンドリストをファイルに保存する

課題の英語に追われるだけで1日が終わるのはまっぴらゴメンだったので、少しだけPythonで遊びました。 これからpython-twitterで色々遊ぶのに、フレンドリスト*1をファイルに保存しておくと便利なので、さくっとファイルに保存するコードを書きました。 pyth…

すべての文字を各1回使ってできる文字列パターン

codeなにがし::すべての文字を各一回使ってできる文字列のパターン 回答者様の答え(アルゴリズム)がとても綺麗だったので、勉強がてらPythonで書いてみました。 #!usr/bin/env python # -*- coding: utf-8 -*- def pat(arr, level=0, base=""): num = len(…

コマンドライン(ターミナル)からPHPを実行する

MacでコマンドラインからPHPを実行する方法を調べました。 シェルスクリプトとして実行します。以下のようなファイルを用意。(test.php) #!/usr/bin/php 1行目は以下のコマンドを実行した時の結果を貼り付けます。 $ which php /usr/bin/php これで、実行…

python-twitterのGetFriends()で100人以上取得する

昨日、フレンドリストを100人以上取得するためにtwitter.pyを色々いじりました。その結果、 users = api.GetFriends(取得ページ番号) こんな感じで呼び出せるようになりました。ページ番号で3を指定すると、ID*1順で201〜300番を取得します。 でもこれだとい…

python-twitterで遊んでみた 基本編

python-twitterで遊んでみたよ!とりあえず基本的な使い方のお勉強。 ちなみにドキュメントはここにあるからね! http://static.unto.net/python-twitter/0.5/doc/twitter.html モジュールの機能自体シンプルだから、ドキュメントも短くて読みやすいです。僕…

今日のPython

スレッドのロック p.374 RLockオブジェクトを使ってクリティカルセクション(ロック〜アンロック)を作る例 lock = threading.RLock() #クリティカルセクションを開始 try: # スレッドの実行コード finally: lock.release() #ロックを解放 pythonでCGIを利用…

python-twitterまとめ 〜導入まで

python-twitterというものを使うと簡単にTwitterのAPIなどで遊べると噂に聞き、導入してみました。 まずは必要なものをダウンロードする python-twitter - Google Codeで、python-twitter-0.5.tar.gzをダウンロードする。 Python Package Index : simplejson…

今日のPython

アトリビュートやメソッドのカプセル化 p.273 Pythonでアトリビュートやメソッドをカプセル化するためには、2つの方法がある。 ・アトリビュート名やメソッド名の先頭にアンダースコアを1つ(_)つける 名前の先頭にアンダースコアがひとつついたアトリビュー…

今日のPython

リスト内包表記(リストコンプリヘンション) p.239 文字列の各文字を文字コードに変換してリストを作成 >>> char = [] >>> for s in "Python": ... char.append(ord(s)) ... >>> char [80, 121, 116, 104, 111, 110] これをリスト内包表記で書いたものが、…

FizzBuzz問題が難しかった

codepad(http://codepad.org/)という素晴らしいサイトを昨日初めて知り、FizzBuzz問題でもやろうと思って書いてみました。 for n in range(1, 101): if n % 15 == 0: print "FizzBuzz" elif n % 3 == 0: print "Fizz" elif n % 5 == 0: print "Buzz" else: p…

今日のPython

正規表現 わからねえ・・・ http://www.python.jp/doc/release/lib/module-re.html p.211 urlopen()を使ったサンプル >>> import re >>> import urllib >>> url = "http://python.org/channews.rdf" >>> src = urllib.urlopen(url).read() >>> # ここがよく…

今日のPython

GWはバイト地獄+輪講の資料作成が重なって、全然Pythonに触れなかった・・・ 気合いを入れ直していざ!やるぞー リストや辞書の中のユニコード p.187 >>> a = [u"あいう", u"かきく", "あまの"] >>> a #中身を確認 [u'\u3042\u3044\u3046', u'\u304b\u304d\…

今日のPython

if文と組み込み型 inを使ってオブジェクトの要素を調べる p.156 >>> s = "hello,mynameisama-ch." >>> if "name" in s: #文字列の要素を検索 ... print "name is found!" ... name is found! >>> list = [1, 2, 3, 4] >>> if 3 in list: #リストの要素を検索…

今日のPython

リストで利用できるメソッド一覧 p.147 メソッド 説明 S.sort(ソート関数名) Sを対象に並べ替えを行い、S自体を書き換える。ソート関数を指定することで、比較方法をコントロールできる。 S.reverse() Sの並び順を反転し、S自体を書き換える。 S.remove(取り…

今日のPython

オブジェクトのコピーを作る p.125 lista = [1, 2, 3] listc = lista[:] このようにスライスを使って代入すると、オブジェクトのコピーができる。 動作確認してみよう! >>> lista = [1, 2, 3] >>> listb = lista >>> listc = lista[:] >>> lista, listb, li…

今日のPython

スクリプトファイル やっとファイルだ! p.115 コマンドラインから与えた引数を表示するargtest.py #!/usr/bin/env import sys print sys.argv 実行する ama-ch$ python argtest.py 1 2 3 ['argtest.py', '1', '2', '3'] コマンドライン引数を受け取るために…

今日のPython

breakとcontinue p.84 >>> for item in range(10): ... if item == 5: continue ... if item == 8: break ... print item, ... 0 1 2 3 4 6 7 while文 whileの条件はbool型(真or偽)で判定される。 p.86 >>> n = 0 >>> while n < 10: ... print n, ... n +=…

今日のPython

タプル タプルとは リストによく似たデータ型。書き換えることができない。 タプルを定義する p.62 >>> t = (1, 2, 3, 4, 5) >>> t (1, 2, 3, 4, 5) 丸カッコでくくる。 書き換えられないけど タプル同士を連結して新しいタプルを作ることはできる。 p.63 >>…

MacBookでPHPを動かす

研究室でPHPもよく使うみたいなので、一応PHPの実行方法も調べた。 PHPのパスを確認する ama-ch$ which php /usr/bin/php which phpでパスを確認。 /usr/bin/php だとわかる。 ソースを用意する # hello.php echo 'Hello, world!'; exit; 調べたパス使わない…