「プログラム」カテゴリーアーカイブ

UNIXコマンドのメモ

主にパイソン関連

~.tar.gzというファイルから必要な物をインストールする場合。

wget ‘URL’
tar zxvf ファイル名.tar.gz
cd ファイル名
python setup.py install

wgetでURL先よりファイルをダウンロードしてくれる。
tar zxvfで圧縮ファイルを解答(そのフォルダに解凍される)
cdで解凍されたフォルダに移動
pythonの場合は、大抵python setup.py installだけでインストールが完了。

たまにこれで上手くいかないものがある。

グラフとか

pythonでグラフを描いてみた。

データを入れたファイルからデータを読み取って、自動でグラフを作り画像データにして指定した名前で保存してくれる。cronで定期的に動かせば自動で更新されるグラフを作れる。これは面白い。

sample

 

見た目が野暮ったいけど、これは一番シンプルなグラフでいろいろ見た目もいじれるようなので今週中にひと通り遊んでみる。

Google App Engine for PythonのXML解析方法

Google App Engine for PythonでXMLの解析。
何箇所かでつまずいて泣きそうになった。解決まで6時間くらいかかった。

最初に見つけたのはElementTreeというものを使う方法。
最初は凄く簡単にXMLの解析ができるので感動していたけど、エラーが出て解析できないものに遭遇。
なので次にBeautifulSoupというものを使った。BeautifulSoupを使うと上手く行ったけど、BeautifulSoupでも解析できない場合があったので再びElementTreeへ戻りいろいろ調べてやっと解決。

つまづいたのは、findall(‘//名前’)のようにして、全て検索する場合。なぜかうまくいかない場合があった。
なので、ツリーを順番に上からたどってあげると上手く行った。
以下一部

from xml.etree.ElementTree import XML, ElementTree, Element
import urllib
import urllib2

まず上の3つを使うので読み込んでおく。全部最初から揃ってるらしいので上の3行を書くだけでOKらしい

url = “http://~”
xml = ElementTree(file=urllib2.urlopen(url))
root =xml.getroot()

次にURLを読み込み、ElementTreeのオブジェクト?にして、getroot()でルートに移動。

for find in root.getiterator():
if’entry’ in find.tag:
for id_find in find.getiterator():
if’id’ in id_find.tag:
self.response.out.write(id_find.text)

この部分で必要な情報をXMLから取り出す。(コピペしたらタブが消えてる)

getiterator()は全ての要素をゲットするのでforで回転させる。
次に、ifを使い、例えばentryという要素を見つけた場合は、entryより下の要素をgetiterator()ですべて取り出す。
要素名はfind.tagのようにして取り出せるので、これで判別する。

次にentryの下にある、例えばidという属性の中身を取り出したい場合は、if’id’ in id_find.tag:として
self.response.out.write(id_find.text.encode(‘UTF-8’))で書きだす。
.encode(‘UTF-8’)を付けないと日本語が入る場合エラーが出るみたい。基本的に全部.encode(‘UTF-8’)を付けるようにしてる。

こうやってXMLを使ってみたんだけど、凄く面倒なことをしてる気もする、findall(‘//名前’)やgetiterator(”名前”)で上手くいけばかなり楽なのになぜかエラーが出るので
取り敢えずこれで済ませる。

Google App Engine for Pythonの文字化けエラーまとめ

Pythonの文字化けで検索すると同じようにはまってる人がたくさんいた。

よくわかってないけど、取り敢えず先に進めるようになったので中途半端なメモ

Pythonの中ではunicode型というものが標準で使われていて、これが問題の中心っぽい。
なので外から入れるときにunicode型に変換して、中から外に出すときにunicode型からutf-8に変換する、ということを頭の中に入れておくと見通しがよくなるみたい。

文字関係で出てくる

decode
encode

の意味は

decode=元の型に戻す
encode=元の型から、ある型に変換する

というのを初めて知った・・・。なので

encode(‘UTF-8’)、utf-8へunicode型から変換
decode(‘UTF-8’)、utf-8からunicode型へ変換

という意味らしい。

もう一つ

unicode(str, ‘utf_8’)

というのがあって、これも使い方はdecodeと同じらしい。

Google App Engineを一通りいじり終わる

Google App Engineって何ができるのか?
趣味で素人が1週間ぐらい触ってみた時点でのメモ

Google App Engineは、サイトを作る環境を丸ごと提供してくれるもの。
専用のツールをダウンロードすれば、あとはエディタだけでも全部作れる(たぶん)。
サイトを作る側は、サイトを作ることに集中できる、あとは全部丸投げ。
使えるプログラムはJAVAかpython
サイトを1アカウントで10個作れる。グーグルのサブドメインを使うなら基本全部無料。独自ドメインももちろん使える。
一定のアクセスまでは無料で、もし無料枠を超えたら、お金を払うとすぐ対応できる。
間違えてヒットしてアクセスが急増しても、グーグル側で資源を振り分けて、対応してくれる。(こういうのがクラウド?)
用意してあるサンプルを理解すれば、フレームワーク、テンプレート、データベースが理解できる。PHPで簡単なことができる人なら1週間ぐらいでわかる、と思う。
データベースは独自の物だけど簡単。データベースをいじれる画面も用意されてる。
データベースの中身のダウンロード、アップロードも簡単。

使えば使うほど凄い、と思えてきた。