2012年8月28日火曜日

Python製Wikiエンジンmoinmoinを使ってみた。

ローカルで簡単に使えるWikiエンジンがほしかったので探してみたらMoinMoin
というものを発見。

さっそく使ってみた。
(今回はWin環境で行った。)

Step1 ダウンロード&インストール。
http://moinmo.in/MoinMoinDownload

公式ページから最新版をダウンロードして解凍ファイルをどこかに展開する。

Step2 起動

Wikiserver.pyを実行。
(ローカルにPythonがインストールされている事が前提)


Step3 スーパーユーザ作成

トップページが出てきたらまず、Login画面に移動して新規アカウント作成する(メールアドレスまできっちり入れる事)

次に「HelpOnConfiguration」ページを開き、ページの新規作成

superuser = [u"YourLoginName", ]

を入れて(YourLoginNameには先ほど作ったユーザ名が入る)

サーバ再起動→ログインする。


Step4 言語設定

「install help and system page packages」ページを開き、Japaneseを選択。

全体を日本語にしたければ、「All page」をクリック。

Step5 フロントページ設定
# Choose this, if most wiki content is in a single language.
# If English is not your wiki's main language, choose something in YOUR wiki language
page_front_page = u"MyStartingPage"

「FrontPage」ページを開き、上記文字を入れる。

節電方法について

いよいよ電気代の値上げが始まります。
家庭にもよると思いますが、普段通りに使うと月平均でおおよそ2000円前後値上がりすると思います。
そこで節電についてまとめてみました。

従量電灯について
http://www.tepco.co.jp/e-rates/individual/menu/home/home02-j.html

深夜電灯について
http://www.tepco.co.jp/e-rates/individual/menu/home/home04-j.html

三段階料金制度とは
 電気の使用料によって料金が変わるもの。
 ケータイの通信料みたいなもので3段階に分けて値段が変わるらしい。
 1段階:120kWhまで    18.89円
 2段階:300kWhまで    25.19円
 3段階:300kWh超え    29.10円

1段階と3段階を比べれば電気料金は54%UP。
もし3段階に到達していたらまず基本料金を下げる前に必要ない家電をコンセントから外すようにした方が良いと思う。

節電のコツは、まず3段階で使う電気使用料を減らすことである。これをするにはまず、
常時使う家電(B)、都度使う家電(A)の2つに分ける。
常時使う家電(冷蔵庫など)は24時間稼動するので、電気料金のベースとなり、
都度使う家電(洗濯機やIHなど)は、ベースからプラスアルファの部分になる。

これを数式にすると、
 Y = AX + B

 Y=電気料金
 A=都度使う家電(総ワット数)
 B=常時使う家電(総ワット数*1ヶ月分)
 X=使用時間

となり、
Aのカーブは大きくても使用時間を短くする事で電気使用料は減り、
Bは、使わない家電をコンセントから抜く事で電気使用料が減る。

あと温調機(エアコン、冷蔵庫)などは、廃熱部分が室外機、背面部分にあります。
温調機の仕組み的に、廃熱部分が常温に近いほど稼働時間が減るので結果的に電力が下がります。
この部分のスペースを空ける事で節電とTVでいってますが、より効率的にするならファンで強制的に風を送ってあげるのがいいと思います。
こういった部分はエアフローといい、空調や自作パソコンに詳しい方がいれば、パソコン用のDCファンやダクトの取り付けなど詳しいアドバイスがもらえると思います。


ここまでの話をまとめると、
・使ってない家電はコンセントから外す。
・W数の大きな家電は使用時間を出来る限り短くする。
・温調機の廃熱部分は風通し良くする。(DCファンなどで風冷もOK)

こういった努力の結果が翌月の電気使用料に反映されます。

2012年8月17日金曜日

debian コンソール画面で文字化け

debianでデスクトップ環境を入れなかった場合、
最初のコンソール画面で日本語の文字が発生する問題を解決する方法は以下の通り。
LANG=C
su
 パスワード入力して、rootになる
aptitude update
aptitude install jfbterm
echo vga16fb >> /etc/modules
exit
LANG=ja_JP.UTF-8

動作確認でmanコマンドを実行してみる。

参考サイト:
 http://www005.upp.so-net.ne.jp/develop-tom/console-deb.html

スマホの活用方法

最近、「白ロム」という言葉を良く聞くけど、これは一体何?
SIMカードの色が白いから「白ロム」っていうの?って思ってる人もいるだろうw
ちなみにそれ、間違ってます!

正しくは、SIMロックフリーという意味です。
SIMロックフリーだと何ができるの?という質問については、
まず、
・海外SIMが使える
・別のSIMが使える

というメリットがある。

通常は、SIMロックされているので、解除するにはキャリアの店舗に持っていって3150円の手数料を払うとやってくれるそうです。

しかし白ロムを手に入れたからといって、全部のSIMは使えないので注意が必要。
電話というのは周波数と通信方式が決められていて、900MHz帯とか1.8GHz帯、3G、CDMA、Xiなど聞いた事があると単語がそれにあたります。
つまり、AU端末は3G対応してないので、AUのスマホでDocomoやソフトバンクのSIMは使えないって事である。

最近の流行っているMVNOなSIMはDocomo回線使っているので、docomoのスマホ使えばまず間違いないです。

あと1つ良い点はSIMを入れなくてもワンセグ見れたりWifiが使えるので、
へたな中華パッドを買うより、中古のスマホのほうが性能もいいってことである。
もし、古いケータイ使ってるけど、スマホアプリが使いたいって方には中古スマホで遊んでみてはどうだろう。

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(日本語訳)

Androider