2011年3月5日土曜日

あるユーザ会に行ってきました

昨日はとある創薬ITツールのベンダーユーザ会に行ってきました。東京・大崎が会場でした。

そのツール自体にはもうあまり進化性は期待していないのですが、生物系向け実験ノートが最近少しづつ流行ってきているのでその調査を兼ねてです。

懐かしい面々に会うことができたし、T社さんの美女にも会えたし、そういう意味で楽しかったな。わはは。

2010年12月16日木曜日

R.NETというのが出てた。

http://rdotnet.codeplex.com/

これなら.NETからもデバッグできるし、開発がラクチンになるわ。

ただ.NET4対応ということで3.5に対応していないこと。
どうしてVS2010でつくるかなー。せめて3.5にしてくれよ。

この本も欲しいな。



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()




2010年6月20日日曜日

matplotlib

matplotlibはPythondeグラフが使えるようになるモジュール。

まずはnumpyを入れる。

easy_install numpy

インストール時にかなりのエラーがでるが、無視。

http://matplotlib.sourceforge.net/index.html
https://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.3/

からインストーラーをダウンロードしてインストール。

サンプルはhttp://matplotlib.sourceforge.net/gallery.html#にいっぱいあるし。
楽しいね。



2010年6月16日水曜日

AndroidでPython カメラで写真を撮って自動保存

import android
import time

droid = android.Android()

fileName = time.strftime("%Y%m%d%H%M%S")

droid.cameraTakePicture('/sdcard/My Documents/' + fileName + '.jpg')

print 'end'

2010年5月29日土曜日

PythonからTwitterに投稿

インストールは

easy_install python-twitter

Pythonからは


import twitter
api = twitter.Api(username='xxx', password='xxx')
ret = api.PostUpdate(u"Test")

2010年5月16日日曜日

HTS Desire (X06HT) のケースが来た

先日機種変したHTS Desire (X06HT) のケースが来ましたので報告を・・。

買ったのはこれです。
Leather Case for HTC Desire/HTC Bravo - Flip Type (Black)
http://www.amazon.com/gp/product/B003LAWM3Y/ref=oss_product

国内にはレザーケースがまだ出てなくて、Amazon USAではたくさん種類が出ています。

今回は黒で落ち着いた物を選択しました。モノが$23でその他もろもろ(税金や送料)が$10で$33です日本円で3000円ってとこかな。

Amazonが販売して発送が香港のショップと言うことで、安心して買えます。

今月9日に注文して来たのが今日なのでちょうど1週間で来ました。

まずは包装から。HONG KONGと書いてある通り、まじで香港からの直送です。怪しげ~。

袋を開けるとこんな感じで、ちゃんと包装されています。
開けると本体とベルト装着グッズが入っているだけで、なんの説明書もショップの広告も入っていません。ベルト装着グッズの仕方がわからなくて、ちょっと困りました。そんくらいの説明書があってもいいのにね。
で、本体を装着してみます。遊びはないのですが、レザーということですっと奥まで入ります。
必要なところがちゃんと見えるようにサイズはバッチリです。

ただ、カメラの位置には穴が開いてなく、フタのカバーを広げないと写真が取れないのがちょっとマイナス。
レザーなのでちょっと厚みがありますが、カバンに入れたりポケットに入れるときの安心があります。
ベルト装着グッズを使った感じはこんな感じ。本体側にフックをつけて、それをベルト側の洗濯バサミのようなツールに入れる仕様です。わりとがっちり噛み合せますので、万が一におちるというリスクはありません。
操作感ですが、レザーの厚みの分やや操作感が落ちてしまうのは仕方ありません。特に画面下のレザーに指が引っかかってしまうので、スクロールがちょっとしにくくなります。

ということで、メリット・デメリットはありますが、万が一の事態に対する安心感、可搬性の安心感が格段に向上しますので良い買い物だったと思います。

2010年5月5日水曜日

Androidプログラミング入門

第4章の3を読み中。バインドとコールバックは難しいわ。ヤマにさしかかってるな。

2010年5月4日火曜日

ATH-A900

メインで使っているヘッドフォンがこれ。実売で3万円くらいで、それほど高いものではない割に良い音を出します。

ヘッドフォンなんて何でも一緒と思っている方がいないとも限りませんが、一度iPodで最高音質で録音したものを持って、オーディオ専門ショップに行ってみてください。

10万くらいするヘッドフォンはびっくりするほど高音から低音まで鳴りきってます。

これに対して1万円以下のいわゆるドンシャリ系は何も考えないで聴くのにはいいけど、一度10万円のヘッドフォンを聴くと、もう聴けなくなります。

ATH-A900はちょうど中間の値段と質で、満足度が高いヘッドフォンです。

そんな中で1万程度のクセに良い音してたのがこれ。

ROXY/JBL Reference 430

スピーカーメーカーの巨星JBLがなぜかブランドROXYとコラボして作ったヘッドフォン。JBLの音がそのままヘッドフォンになったような質の高い音が出ます。ビックカメラで視聴したときは良い音すぎて驚いたほど。

残念なのはデザイン重視(?)で超派手なのと、音が漏れるので電車等では使わない方がいいかも。

あまり売っていないのですが、Apple Storeでは買えそうでした。

Androidプログラミング入門

これで本格的に勉強中。

ServiceとIntentの理解がヤマだな。

2010年4月30日金曜日

Android携帯を買った Softbank X06HT (HTC Desire)

初めてスマートフォンとやらにかえてみた。4月12日に予約して発売日の27日朝イチにGETした。Softbankの店員もよくわかってなくて、料金プランやキャンペーン内容を私が教えるという逆転現象のなか、なんとか40分ほどで機種変手続き終了。

Softbank X06HT (HTC Desire)というやつです。

●いまどきiPhoneじゃなくてAndroidにしたわけ

  • 最初はまじで夏~秋に出る次のiPhoneを狙っていた。でも今回の機種が出たので悩んでこっとにした。
  • iPhoneはメーカー、通信会社とも1社づつなのに対して、Androidは制限がないため、いまは複数のメーカから出ていてキャリアも全3社から出ており、今後は間違いなくシェアは逆転する。そうなるとアプリも環境もすぐにiPhoneを追い抜いて充実する。(MacとWindowsの関係と一緒です)
  • 携帯アプリを作ってみたかったが、iPhoneの場合はAppleの規制が厳しく配布するのが難しい。それに開発環境がMac+ObjectiveCという、いまどきありえない環境。それに対してAndroidはOSは何でもOK+EclipseでのJavaなのでらくちん
まだいろいろ触りまくってお試し中です。

●使ってみた感想やわかったこと


  • 機能はほとんどiPhoneと一緒、iTuneで曲管理するアプリもあったが入れてはいない。iPhone用のアプリをAndroidに移植したものが結構出ていた
    • 音楽を聞かせて曲名を当てる「Shazam」があってびっくりした
  • 標準のTwitterクライアントが使いにくい、そこで国内製の「twicca」に替えた
    • 標準のは写真がアップロードできない、Twitter検索ができない
  • フリック入力のできるSimejiを入れてみたが、私には使いにくく標準に戻した。標準のIMEでUndoができるのはうれしい
  • 充電中、本体が結構温かくなる。
  • 普通に触りまくっていると、電池がすぐなくなる。なので、画面の明るさをギリギリまで落としている。GPSとかも必要のないときは切っておく。
  • 壁紙にソフトバンクのおとうさん犬を入れて触ったらしゃべった
  • Wi-Fiについて
    • 家の無線LANにつなぐ設定がめんどうだった。SIDとパスワード(16桁)を入れるのは大変だった
    • Softbank提供の公衆無線LANの設定は最初から入っていて、アクセスポイント内に入ると勝手に繋がった
  • ケースが欲しいがまだほとんどない。UKのメーカーにいいのがあるので、問い合わせ中。
    http://www.mobilefun.co.uk/alu-leather-case-htc-desire-google-nexus-one-p23580.htm

2010年4月11日日曜日

iPhoneとAndroidを比較調査した

そろそろ携帯を変えようかと思ってiPhoneとAndroidを比較調査した。

■Androidの方がいいかなと思う点

  • 真のマルチタスク
  • 通知機能の充実によるアプリ連携性
  • Flash対応
  • Googleのクラウドサービスとの連携性
  • 開発のしやすさ、公開のしやすさ
■iPhoneの方がいいかなと思う点

  • OS、画面のCool性
  • 音楽機能
  • アプリの充実(これはそのうちAndroidに追い越される)
  • アプリの信頼性
マニアにはAndroid、普通の人はiPhoneという構図が見えてきた。

というわけで、明日にでもAndroidスマートフォン「HTC Desire(X06HT)」を予約に行く可能性大。

2010年4月6日火曜日

Listオブジェクトから特定のIndex(複数)をRemove

Listオブジェクトを使っていると、特定のIndexに相当する値を除去したくなる時があります。

単一のIndexならRemoveメソッドを使えば取り除けますが、複数の項目を同時にRemoveしようとするとうまくいきません。これはひとつの項目を除去するとListのIndexが更新されるので、次のIndexに相当する項目が変わってしまうからです。

Delegateを使ってRemoveAllメソッドを使えばできるようですが、私はこのDelegateがどうも苦手でダメなので、代わりに除去したListを返す関数を作ることで対応してます。

これってたぶん亜流なんでしょうね。



using System.Collections.Generic;
using System.Diagnostics;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create Start List
            List<int> Ints = new List<int>();
            for (int i = 0; i < 100; i += 10)
            {
                Ints.Add(i);
            }
            
            //Create Delete Index List
            List<int> Deletes = new List<int>();
            Deletes.Add(2);
            Deletes.Add(4);


            // Do Delete
            List<int> result = DeleteFromIndex(Ints, Deletes);


            // Show Result
            foreach (int value in Ints)
            {
                Debug.WriteLine(value.ToString());
            }
            foreach (int value in result)
            {
                Debug.WriteLine(value.ToString());
            }


        }
        /// <summary>
        /// Delete values from index
        /// </summary>
        /// <param name="inList">Original List</param>
        /// <param name="inDeleteIndex">Index list for deletion</param>
        /// <returns>Deleted list</returns>
        private static List<int> DeleteFromIndex(List<int> inList,List<int> inDeleteIndex)
        {
            List<int> rt = new List<int>();


            for (int i = 0; i < inList.Count; i++)
            {
                if (!inDeleteIndex.Contains(i))
                {
                    rt.Add(inList[i]);
                }
            }
            return rt;
        }
    }
}

2010年4月3日土曜日

.NET開発系ユーザミーティングに参加

.NET系のユーザミーティングに参加してみた。

2010 Community Open Day with INETA Japan - Osaka ~ Microsoft Visual Studio 2010 編 ~


主に今年出るVS2010周りの話題でした。


収穫:

  • 関数型プログラミングをサポートするF#という言語が入るらしい。HaskellとScalaの間くらいの言語
  • やろうと思えばVS上でHaskell(GHC)が動かせる
  • 並行・並列処理の組み込みが楽になる(Task Parallel Library; TPLなど)
  • どのように動かすかではなく、何をしたいかを実装しよう
  • テストプロジェクトをもっと積極的に使おう
  • プラグイン(機能拡張)の実装が簡単になる

全体感想:

  • ユーザコミュニティというのに初めて参加したが、なんとなく私のような初参加は居心地が悪かった、身内だけで盛り上がっている感じがした
  • 会全体の目的がイマイチ理解できなかった

何回か行ってみる必要がありそう。

2010年3月31日水曜日

Haskell本

本格的にHaskellの勉強を開始。

最初はこちらの本を読んでた。

小さいので持ち運びに便利で、学術的な書き方で好感が持ているものの、サンプルが見にくい。もっぱら電車の中読み専用。
こちらはぶ厚いので持ち運びは無理ですがサンプルがGHC対応なので、もっぱら自宅で使ってます。

さ、がんばろ。

2010年3月10日水曜日

Python本

師匠のおすすめの本を買った。


すでに「ポケットリファレンス」をだいたい読んだ後なので復習的な感じですな。