2010年8月7日土曜日

寺久保エレナ

明日は大学のジャズ研の時の先輩と「寺久保エレナ」を聴きに行く。

http://ameblo.jp/erenasax/
http://www.misterkellys.co.jp/

高校生のジャズアルトサックスというだけで話題になってしまう時代ですが、これがまたうまい。まだ「うまい」だけですが、将来が間違いなく期待できる逸材であることは間違いない。

自分が高校生の時もジャズアルトをやっていましたが、ほとんどコピーだけでアドリブを自由に取れる段階ではなかったのに、彼女はジャズからファンク、ロック、フュージョンまで何度もアドリブを華麗にこなす。

まだ高校生だし、「枯れる」とか「渋い」とか「深い」とかは時間がくれるとおもう。今は元気いっぱいサックスを吹いてもらいたい。そして聴いている人に元気を与えれば十分。

明日は元気をもらってきます。

eclipseでpython

eclipseの記事を見てたらPyDevを使えばeclipseでPythonできるとのこと。

http://pydev.org/index.html


eclipseを起動する
ヘルプ→新規ソフトウェアのインストールで「http://pydev.org/updates」を登録
自動的にPyDevがインストールされる
ウィンドウ→設定でPydevを選択、「Auto Config」でインストールされているPythonが自動で登録される、OK。これで準備完了。
ファイル→新規→プロジェクト、Pydev→Pydevプロジェクトを選択すると自動的にPythonのプロジェクトが作成される
srcで右クリック、新規→Pydevモジュール でモジュールファイルが作成される試しにPython2.6にインストールしてあるPybelを使ったソースを入れてみるとちゃんと補完されるし、smilesを読み込んで分子量も計算できる。
PythonのIDEとして使えるかもしんない。

eclipseのandrorid開発環境修復

久々にeclipseのandorid開発環境をいじろうとしてちょっとはまった。

状態
・SDKのアップデートで、フォルダー名が変えられない、ウィルスチェッカーを一時的に落とせ、とか言われたが、だめ。OSでもフォルダー名が変えられない。何かがひっつかんでいる感じ。
・エミュレーターが起動しない。

原因
1、マイドキュメントをC:からI:に移してた
2、android SDKフォルダーがおかしくなってた

1、のせいでエミュレーターが正常起動しなくなった。ググるとAVD ManagerはC:に設定ファイルがあるものとしてガンと言うことを聞かないらしい。OSレベルでごまかせばいけるらしいが面倒なのでC:に戻した。

2、のせいでSDKのアップデートが動かなくなった。しょうがないのでフォルダーごと移して新規にSDKを落としてフォルダーを作り直したら大丈夫になった。

ということで解決はしたものの、なにやら腑には落ちない。特に1、のところはC:しか認識できないのはどうなんだろう。

2010年8月2日月曜日

Python sqlite3を使う

import os, sqlite3

def regist():
    con = sqlite3.connect("data.db")    # 通常
    #con = sqlite3.connect('temp.db', isolation_level=None)  # 自動コミット
    #con = sqlite3.connect(":memory:")   #メモリーDB

    # テーブルを作成
    sql = u"""
create table 社員 (
  名前 varchar(10),
  年齢 integer,
  部署 varchar(200)
);
"""
    try:
        # Tableを作成
        con.execute(sql)

        # SQL
        sql = u"insert into 社員 values ('橋本', 26, '広報部')"
        con.execute(sql)
        con.commit()
        # SQL
        sql = u"insert into 社員 values (?, ?, ?)"
        con.execute(sql, (u"小泉", 35, u"営業部"))
        con.execute(sql, (u"亀井", 40, u"営業部"))
        con.commit()
        # SQL
        con.executemany(u"insert into 社員 values (?, ?, ?)",
                    [(u"堀", 44, u"営業部"),
                     (u"鈴木", 23, u"営業部")])
        con.commit()
    finally:
        con.close()
def retrieve():
    con = sqlite3.connect("data.db")    # 通常
    c = con.cursor()
    c.execute(u"select * from 社員")
    print "---------------"
    for row in c: # rowはtuple
        print row[0], row[1], row[2]

def main():
    regist()
    retrieve()
if __name__ == '__main__':
    main()

2010年8月1日日曜日

Pythonでシリアライズ

ちょっとした設定や計算の途中結果を一時保存するには便利な環境。


■marshalを使う


import os,marshal

def writedump():
    data1 = range(1,100,2)
    data2 = ['hori','suzuki','yamada']
    with open('datafile.dat','wb') as outfile:
        marshal.dump(data1,outfile)
        marshal.dump(data2,outfile)
def readdump():
    with open('datafile.dat','rb') as infile:
        print "1:" + str(marshal.load(infile))
        print "2:" + str(marshal.load(infile))
def main():
    writedump():
    readdump()

if __name__ == '__main__':
    main()


■cPickleを使う


import os,cPickle

def writedump():
    data1 = '0'*100000
    data2 = ['hori','suzuki','yamada']
    with open('datafile_pickle.dat','wb') as outfile:
        cPickle.dump(obj = data1,file = outfile, protocol = 2)
        cPickle.dump(obj = data2,file = outfile, protocol = 2)
def readdump():
    with open('datafile_pickle.dat','rb') as infile:
        print "1:" + str(cPickle.load(infile))
        print "2:" + str(cPickle.load(infile))
def main():
    writedump()
    readdump()

if __name__ == '__main__':
    main()

■さらにZip圧縮する


import os,cPickle,gzip

def writedump():
    data1 = '0'*100000
    data2 = ['hori','suzuki','yamada']
    outfile = gzip.open('datafile_pickle_zip.zip','wb')
    cPickle.dump(obj = data1,file = outfile, protocol = 2)
    cPickle.dump(obj = data2,file = outfile, protocol = 2)
    outfile.close()
def readdump():
    infile = gzip.open('datafile_pickle_zip.zip','rb')
    print "1:" + str(cPickle.load(infile))
    print "2:" + str(cPickle.load(infile))
    infile.close()
def main():
    writedump()
    readdump()

if __name__ == '__main__':
    main()