2012年8月17日金曜日

pythonでGUIプログラミング(1)

最近組込み用のARMボードが沢山売られるようになってきた中、ホビー用に買って自分でLinuxカーネルをビルドしたりする人が増えてるんじゃないだろうか。
こういった組込みボードは、スマホよりIOやUSBホスト機能などが豊富な資源が使えるようになっていて、 便利なんだけど、RAMが少ない!っていう状況に出くわしてる方も増えていると思う。

そこで、解決方法として専用機として仕上げる方法があって以下にまとめてみた。


・xfceを動かしてその中でアプリを起動(メモリー使用:多い)
・ブラウザOSというようにフレームバッファでブラウザnetsurfを動かして、ハード制御はWebサーバ経由で操作する(メモリー使用:普通)
・ブラウザの代わりにcruseを使って操作(メモリー使用:少ない)
・PythonでGUIアプリ(メモリー使用:多い)


まずxfceを起動してアプリを起動する方法は、起動が遅い。そしてメモリーも沢山使うけど汎用性はある。 xfceの代わりにawesomeなどを使ってもやはりxfree86を使う時点で重くなる。

そこでフレームバッファ直接操作するアプリを起動させて早くしようとしたのが2番目。
起動速度は速く、netsurfというブラウザも速度が速くて快適。しかしjavascriptに対応してないので、リアルタイムに処理するようなものはできない。

3番目のcruseを使って操作は日本語問題があって、まだいい結果が出せてない。

最後にPythonを使ってGUIからすべてやってしまおうというのが今回。


まずはどのようなモジュールがあるのか調べてみたところ、Qtが一番よさそう。

今日はここまで。

参考サイト:
http://ginstrom.com/scribbles/2008/02/26/python-gui-programming-platforms-for-windows/

2012年8月2日木曜日

[python]multiprocessingとthreadingについて

threadingだとGIL問題があって遅くなる!っていう話をネット上でちらほら見かけるので
multiprocessingというものを使ってみた。
使い方はthreadingとほぼ互換なんだけども、pickle化できないといけない制約が付いてくる。
あともう一つ、プロセス間通信するのにManagerクラスを使ったりしたりしなかったり。

それにforkしたようなものなので、
メインプロセスがいて、そこにCTRL+ALT+DELETEで出てくるプロセス一覧に
multiprocessingで作ったプロセスが出てきて、その中にthreading処理が動いて・・・っていう
スコープになるし、単純に置換えすると逆に共有メモリ回りで慣れて無いと
ローカルでやればすぐ済む作業もプロセス間通信を使ってやらないといけないとか、色々めんどくさくなる。

もし使うなら、工場で一連の作業が円滑に回ってるんだけど依頼が多くて困る!
別の工場を作って仕事を振り分けたいなーって場合のときに有効な手段だとおもう。

2012年6月13日水曜日

vmware上debian(squeeze)でマウスの挙動がおかしい

左クリックしてドラッグなんかすると左クリックが離れなくなる問題がある。
ALT+TABを2回押せば直るけど、今まで不便に感じてたし、
なんとかならないものか調べてみた。


参考サイト:http://communities.vmware.com/thread/391797

アンインストールして、apt経由でvmwareToolを入れるというやり方。


Step.1 手動でインストールしたVMWARE Toolをアンインストールする。
/usr/bin/vmware-uninstall-tools.pl 


Step.2 ソースリストにcontribを加える
vim /etc/apt/source.list

deb
 http://xxxx/debian/ squeeze main contrib

deb-src
 http://xxxx/debian/ squeeze main contrib

...


Step.3 インストールする
apt-get update
apt-get install open-vm-toolbox open-vm-tools


Step.4 再起動
再起動


これでおk。
完全には解決してないけどマシになった気がする。

2012年6月12日火曜日

debianにAndroid開発環境をインストールする

DebianでAndroid開発環境の構築方法をまとめた。
ここでやることは、
 ・Aptget経由でインストールするものは1つ、「JDK」
 ・ダウンロードするものは2つ、「Android SDK」「Eclipse」
 ・Eclipseの設定。
この3点。


○Javaのインストール&設定
 1.aptパッケージの設定。
  vi /etc/apt/sources.list
 
  「main」の後ろに「non-free」を加える。

 2.jdkインストール
  apt-get update
  apt-get install sun-java6-jdk

 3.gij→javaに切り替える。
  update-alternatives --config java  

○"Android SDK"のダウンロード
 http://developer.android.com/sdk/index.html

 vi .bashrc
  最後の行にパス設定を入れる。
 export PATH=${PATH}:/home/user/android-sdk-linux/platform-tools

○"Eclipse IDE for Java Developers"のダウンロード
 http://www.eclipse.org/downloads/
 
○Eclipseの設定
 http://developer.android.com/sdk/eclipse-adt.html#installing

 1.Eclipseを起動する。

 2.ADT Pluginの設定
  Help→Install New Software→Add「ADT Plugin、https://dl-ssl.google.com/android/eclipse/」
  で表示されたパッケージをインストール。
  もし、上記URLでエラーになるなら「http://dl-ssl.google.com/android/eclipse/」で試してみること。

  インストール後再起動。

 3.Android SDKとリンクする。
 
  Android SDKの保存場所を選択。

 4.Android SDKから必要パッケージをダウンロード。
  もしSSL関係でエラーになった場合は、JAVAではなくGIJを使ってる可能性がある。
 
 5.Window→Show View→Other...→Android→Deviceを選択。これでUSB接続した実機一覧が表示される。

VMWATR上Debian6にVMWareToolsを入れる

http://mo.kerosoft.com/0177 上記参考サイトを見ながら。 コンパイル環境を整えてインストールすれば良いのだが、 Kernelビルドする時gccのバージョンがずれているとインストールがうまく進まないようだ。 その点を気をつけること。 まず、端末内でsuでスーパーユーザでログイン。 aptitude install build-essential aptitude install linux-headers-`uname -r` ./vmware-install.pl 上記コマンドを打ち込んでENTERでずっと進む。もちろん変更したい箇所あれば変更すること。 インストールが終わったら再起動する。

2012年6月7日木曜日

dhcpクライアントのタイムアウトするのは待ちたくない人向け

久しぶりの投稿になります。 mini2440を久しぶりに使い出す用事ができたので、LANケーブルをつなげないで起動したら2分くらいブート画面で固まっていらいらしてしまった。 そんな時にタイムアウト時間を短くしようかと思ったけど、もっといい方法を探したら ifplugd というものがあることを知った。 さっそく aptitude install ifplugd いつもなら動作確認して終わりといきたいところだけど、 今回はサイズミスマッチエラーになって使えなかった。 今日はここまで。

2012年3月26日月曜日

PyPy1.8を使ってみた

標準Pythonより高速といわれているPyPy1.8を使ってみた。

まず思った事は、Python2.7.2互換といわれているほど成熟されていないようだった。
djangoは動くけども、周辺モジュールのDjango-southを使えばRPythonのエラーが出でるし、
Win32APIを直接使うようなpyserialなどはまだ使えない。

という事で実用レベルになるまで様子見。

2012年3月7日水曜日

スクリプトでUML図作成

UML図を簡単に使えそうなものを探していたら
sphinx拡張のseqdiagというものにたどり着いた。
Graphvizみたいにスクリプトを書くと図にしてくれるぽい。
ちなみにこれはPythonのモジュールです。

1.インストール
easy_install sphinxcontrib-seqdiag


2.図の作成
C:\work> actdiag -f C:\Windows\Fonts\msmincho.ttc test.diag


サンプルデータ:test.diag
---
diagram {
  クライアント -> サーバー [label="要求"];
  クライアント <- サーバー [label="応答"]; 
}


参考URL:
http://blockdiag.com/ja/seqdiag/sphinxcontrib.html
http://d.hatena.ne.jp/torutk/20110522/p1

2012年3月2日金曜日

django-southの使い方。

Models変更をSQLiteなどDBに反映するツールsouthの操作手順をまとめておく。


前提条件
・south導入する前に、modelsの変更は含まないものとする。

~導入~
1.southインストール
2.プロジェクト(settings.py)にINSTALL_APPに「south」を加える。
3.「python manage.py syncdb」コマンドでDBにsouthテーブルを作成。


~最初のMigrate(既にテーブルが存在する場合)~
1.既にDBにテーブルが存在する場合、「python manage.py convert_to_south 」を実行。
注意1:特定Models内のclass Metaにあるapp_labelを書き換えてあるModelは、APP名ではなくapp_label名になる。
注意2:一度convert_to_southをすると2回目以降は変換済みとなる。
注意3:app/migration/0001_initial.pyファイルは捨てないようにする事。(fakeでmigrateされた初期値)
注意4:0001_initial.pyを作るコマンド「python manage.py migrate --initial」

2.最初の「0001_initial」が適用されているかチェックする。「python manage.py migrate --list」
注意1:もし、適用されていなかったら「python manage.py migrate 0001 --fake」コマンドを実行する。


~2回目以降~
1.Models.pyに変更を加える。
2.「python manage.py schemamigration --auto」を実行する。
 modelsフィールドにdefault値を設定していない場合は、
 コンソール操作で初期値を入れる必要がある。
 操作を終えると、migrate用ファイルが作成される。
3.「python manage.py migrate 」実行。


参考サイト
South
South v0.7 documentation(英文)
South v0.7 documentation(日本語訳)

2012年2月27日月曜日

djangoの解析メモapp_lanel

models.pyのclass Metaにapp_labelとdb_tableで定義できる。
southでmigrateする時はapp_labelの名前で行う。(もちろん他のモデルと一緒にmigrate)

django上ではこのあたりの処理を、
  django\db\loading.py

あたりがメインぽい。

ちなみにここ、1.4のソースやトラッカー見てしばらく解析しないと分からなかった部分。

2012年1月24日火曜日

django管理画面の一覧をCSV出力する。

ここの記事を見て自分もこれ導入しようと思いさっそくインストールしてみた。

コマンドライン上で
easy_install.exe https://bitbucket.org/tokibito/django-csvutils/get/6c2ddaf1e92f.zip

これを打つだけ。いたって簡単。

CSV出力を設定したいAdmin.pyを編集すればComboxに削除しかなかった欄に「export to CSV」が追加される。
この名称はローカライズ対応になっているんだけど、Localeファイルをどこに入れればいいんだろうなあ。

2012年1月23日月曜日

djangoの翻訳テキストをカスタマイズする。

Windows上で翻訳テキストをコンパイルするには、
gettext ver0.15以上が必要のようです。

1.まずは必要なライブラリをダウンロードする。

http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/
上記サイトから
gettextのver0.17をダウンロード。
ダウンロードしてきた
 gettext-runtime-0.17-1.zip
 gettext-tools-0.17.zip

を展開してbinフォルダ内の中身を全てpython.exeと同じフォルダに入れた。


2.翻訳テキストを編集する。
拡張子.poファイルが編集する翻訳テキストになっていて、
拡張子.moファイルがコンパイルされた翻訳テキストという構成になっている。

まず変更したいアプリ内にある翻訳ファイル.poを編集する。


3.編集した翻訳テキストをコンパイルする。

コマンドライン上でアプリフォルダまで移動してから
python manage.py compilemessages -l ja

と打ち込むとdjango.moを作ってくれる。

例:
.\django\contrib\admin\locale\ja\LC_MESSAGES\django.po を編集した時は

コマンドライン上で
.\django\contrib\admin

まで移動してからコマンドを打ち込めばOK。

2012年1月5日木曜日

中華タブレット tPad P76 Ti

あけましておめでとうございます。
相変わらず更新が遅いですが、ネタが尽きたわけじゃないです。
そういうわけで久しぶりの更新、タイトルの通り、中華Pad買いました。
中華パッドも何世代かグレードも上がり、ハードもソフトも一通りこなれて来た頃だろうと
思いきって1万円を切る中華タブレット「tPad P76 Ti」を買ってみた。
OSはAndroid 2.3.4がプリインストール済み。
この端末の凄いところは、Youtubeがサクサク再生できて1万円切る値段。
しいて言えば、ボタンの押しやすさやBluetoothやGPSは無いけど、マーケットアプリも使えるし悪くない。

もう少し使いこなしたらフォーム更新や、USBを使って色々遊んでみようと思う。

Androider