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を使って色々遊んでみようと思う。

2011年12月5日月曜日

Pythonでバーコード作成

昔から使われてる線が一杯並んでる一次元バーコードや、最近流行りの二次元バーコードを
印刷したかったり、しなかったりする時どうしたら良いか。

解決策はPythonでhubarcodeを使うこと。

いつもeasy_installやpipで楽にインストールしていると、
Readmeやexampleを見ずに環境が整ってしまうわけなんだけど
「一体どんな機能があるの?」という部分で盲目になってしまいがちであるこの頃。

hubarcodeって1次元でしかもEAN13(13桁)だけじゃないの?って自分一人で思っていたら
実はCode128もQRコードも使えてしまうわけです。

ココ参照。
https://github.com/hudora/huBarcode

使い方はいつもの手順で。

Step.1
easy_install -U hubarcode

Step.2 コードを書く。
from hubarcode.ean13 import EAN13Encoder
from hubarcode.qrcode import QRCodeEncoder
from hubarcode.code128 import Code128Encoder

#バーコード画像作成
_barcode1 = EAN13Encoder(bcode)
_barcode1.save(fname)

_barcode1 = Code128Encoder(bcode)
_barcode1.save(fname)

_barcode1 = QRCodeEncoder(bcode)
_barcode1.save(fname)

これで怖いものなし。

2011年9月24日土曜日

PDCruseをコンパイルしてみた

Windows/Linuxともに使えるTUI(Text user interface)が使いたくて探してみたら
PDCursesというものを見つけた。

http://pdcurses.sourceforge.net/
VC++2010でコンパイルする方法は
まず、スタートメニューからVC2010のDOSプロンプトを起動する。

次に、上記サイトからダウンロード・フォルダ展開した場所へ移動して
set PDCURSES_SRCDIR=C:\pdcurs34
nmake -f vcwin32.mak

を実行するだけ。
生成されるのはスタティックライブラリで
pdcurses.lib
panel.lib

の2つで
curses.h
panel.h

をあわせた4ファイルをどこかにまとめておけばおk。

使っているうちにボールドやブリンク機能、256Colorに対応とかカスタマイズしたくなってくると思う。
そんな機能を追加した人がいて
http://www.projectpluto.com/win32a.htm

ここのパッチを使うとより見栄えの良いTUIが使える。

余談だけど、PDCrusesで下記サイトのような事が出来たらいいなって思ってる(願望)
http://code.google.com/p/bashsimplecurses/


<コンパイル編>
VC++2010環境でサンプルプログラムをコンパイルできるかチェックしてみた。

VC++で新規作成:コンソールアプリケーション
インクルード・ライブラリパスと
使用するライブラリ:pdcurses.lib、panel.lib
を設定する。

firework.cからコピペしてコンパイル。
#include "stdafx.h"
#include "curses.h"
#include 
#include 

#define DELAYSIZE 200

void myrefresh(void);
void get_color(void);
void explode(int, int);

short color_table[] =
{
    COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN,
    COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE
};

int _tmain(int argc, _TCHAR* argv[])
{
    int i, start, end, row, diff, flag, direction, seed;

#ifdef XCURSES
    Xinitscr(argc, argv);
#else
    initscr();
#endif
    nodelay(stdscr, TRUE);
    noecho();

    if (has_colors())
        start_color();

    for (i = 0; i < 8; i++)
        init_pair(i, color_table[i], COLOR_BLACK);

    seed = (int)time((time_t *)0);
    srand(seed);
    flag = 0;
       
    while (getch() == ERR)      /* loop until a key is hit */
    {
        do {
            start = rand() % (COLS - 3);
            end = rand() % (COLS - 3);
            start = (start < 2) ? 2 : start;
            end = (end < 2) ? 2 : end;
            direction = (start > end) ? -1 : 1;
            diff = abs(start - end);

        } while (diff < 2 || diff >= LINES - 2);

        attrset(A_NORMAL);

        for (row = 0; row < diff; row++)
        {
            mvaddstr(LINES - row, row * direction + start,
                (direction < 0) ? "\\" : "/");

            if (flag++)
            {
                myrefresh();
                erase();
                flag = 0;
            }
        }

        if (flag++)
        {
            myrefresh();
            flag = 0;
        }

        explode(LINES - row, diff * direction + start);
        erase();
        myrefresh();
    }

    endwin();

    return 0;
}

void explode(int row, int col)
{
    erase();
    mvaddstr(row, col, "-");
    myrefresh();

    --col;

    get_color();
    mvaddstr(row - 1, col, " - ");
    mvaddstr(row,     col, "-+-");
    mvaddstr(row + 1, col, " - ");
    myrefresh();

    --col;

    get_color();
    mvaddstr(row - 2, col, " --- ");
    mvaddstr(row - 1, col, "-+++-");
    mvaddstr(row,     col, "-+#+-");
    mvaddstr(row + 1, col, "-+++-");
    mvaddstr(row + 2, col, " --- ");
    myrefresh();

    get_color();
    mvaddstr(row - 2, col, " +++ ");
    mvaddstr(row - 1, col, "++#++");
    mvaddstr(row,     col, "+# #+");
    mvaddstr(row + 1, col, "++#++");
    mvaddstr(row + 2, col, " +++ ");
    myrefresh();

    get_color();
    mvaddstr(row - 2, col, "  #  ");
    mvaddstr(row - 1, col, "## ##");
    mvaddstr(row,     col, "#   #");
    mvaddstr(row + 1, col, "## ##");
    mvaddstr(row + 2, col, "  #  ");
    myrefresh();

    get_color();
    mvaddstr(row - 2, col, " # # ");
    mvaddstr(row - 1, col, "#   #");
    mvaddstr(row,     col, "     ");
    mvaddstr(row + 1, col, "#   #");
    mvaddstr(row + 2, col, " # # ");
    myrefresh();
}

void myrefresh(void)
{
    napms(DELAYSIZE);
    move(LINES - 1, COLS - 1);
    refresh();
}

void get_color(void)
{
    chtype bold = (rand() % 2) ? A_BOLD : A_NORMAL;
    attrset(COLOR_PAIR(rand() % 8) | bold);
}

マルチバイト対応する場合は、下記定義を入れておくこと。
#include 
setlocale( LC_CTYPE, "jpn" );

2011年8月20日土曜日

squeezeアップデートしたら起動しなくなった。

udevd[803]: unable to receive ctrl connection: Function not implemented

こんなエラーが出た場合、Kernelの設定不足らしい(詳しくは見ていない)
とりあえず動くように戻したいのでダウングレードの手法を取ってみた。

やり方は、udevのバージョンを戻してあげれば元通り動くようになります。

例:
 dpkg --install libudev0_164-3_armel.deb udev_164-3_armel.deb

Androider