2008年12月31日水曜日

くるりアイコン on Androidデスクトップ


Androidアプリのアイコンをミドリフグ俳優くるりにしてみました。

2008年12月30日火曜日

howmでEmacsデビュー


メモはテキストエディタでとる派なのですが、テキストのみで表現するので最近のマルチメディア(今こそマルチメディアという言葉を使っても時代は追いついてきていると思うので敢えて使ってみました^^;)な環境の中では使い勝手が悪くなってきて、ハイパーリンクと検索が上手く融合したテキストエディタが無いかと探していました。

すると、まさにそういうものを作って公開してくださっている方がおられました!howmというEmacsで断片的なメモをどんどんとる為の環境!
テキストメモなのに、メモ間でリンクを張れたり、特定のメモをある単語に結びつけて全メモ中の同じ単語からリンクを張らさせたり、バラバラに保存されているメモ中のToDoを自動でひろってきて意味のある順に並べてくれたり、拡張機能で画像を取り込んだりもできるみたいでいたれりつくせりです。

個人的にEmacsを使うのを おっくう に思っていたので、これまで一度もちゃんとEmacsを使った事がなかったのですが、howmを使いたい一心でEmacsデビューすることにもいたしました。
とりあえずインストールだけしてみました。

2008年12月25日木曜日

Androidアプリのバックアップとリカバリ用スクリプト


せっかくの Android Dev Phone 1 なので、時々中身を入れ替えたりいろいろ触ってファクトリーリセットしたりするのも良いかも・・という気分になってきました。
そうなると、リセットの度にお気に入りのアプリを再インストールするのが面倒になりそうなので、現在Android携帯にインストールしてあるアプリのバックアップと復元用のPythonスクリプトを用意しました。

Android SDKは既にインストールしているので、下記の2ファイルを <SDKホーム>/tools フォルダに保存後、chmodで実行権限を与えておきます。(Mac/Linuxの場合)


backup.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import re

cmd = """adb shell<<EOM
su
ls /data/app
exit
exit
EOM
"""

res = os.popen(cmd).readlines()

for line in res:
if line.find('.apk') > 0:
cmd = 'adb pull /data/app/' + re.sub('^[#$ ]+', '', line.strip()) + ' .'
print cmd
os.popen(cmd)




recovery.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import re

files = os.popen('ls -l').readlines()

for file in files:
if file.find('.apk') > 0:
cmd = 'adb install ' + re.findall('^.* ([^ ]+)$', file.strip())[0]
print cmd
res = os.popen(cmd).readlines()
for line in res: print '\t'+line.strip()




後は、バックアップ用フォルダを生成&そこに移動して、 backup.py や recovery.py を叩けばバックアップ/バックアップしたアプリの自動インストールが行えます。

2008年12月24日水曜日

Android Dev Phone 1 をSIMカード無しでアクティベートする方法

[備忘録]
『ちょっと、やったこと/思うこと』さんのBlog記事を参考に設定をしてみました。

でも、DBまでいじらなくても下記の方法で簡単にアクティベート(というか使える状態に)できそうな気がしています。(追記:その後、ファクトリーリセットを行ったので試したら下記はできませんでした・・


0. 事前にMac/PCにAndroid SDKのインストールをしておく
1. 開梱後、Android Dev Phone 1 にバッテリーを入れて起動
2. 『No SIM card』の表示画面でMENUボタンを押して、Android君をクリックしてGmailアカウントの登録画面に進む
3. USBでMac/PCとつなげて、ターミナルから『adb shell』と打って携帯用Shellに入る
4. 『am start -a android.intent.action.MAIN -n com.android.settings/.Settings』と入力すると、WiFiの設定画面が現れるのでWiFi設定を行う。これで2.の続きからアクティベートが可能

と、思ったのはいいのですが、実はもっと簡単な方法があるのかも・・
1. Dev Phoneの起動
2. MENUボタン押してAndroid君をクリック後、Gmailアカウントのセットアップのところをスキップ
3. ホーム画面が出たら、MENUボタン→Settings→Wireless controlsで無線LAN設定後、Gmailアプリを起動するとサインアップの続きから始められる

のかも。

2008年12月23日火曜日

Android用アプリ開発 HelloWorld編


開発環境を用意できたので、とりあえず Hello, World. を作ってみます。
ファイル → 新規 → Android プロジェクト
として、Androidプロジェクトのひな形をEclipseに生成してもらいます。

プロジェクト名、パッケージ名、アクティビティ名、アプリケーション名を入力します。
アクティビティ名というのが見慣れませんが、これはアプリケーションで最初に表示される画面を制御するJavaクラスの名前のことです。Javaのクラスなので必ず大文字で始めます。

自動的にHello World と表示するアプリケーションが生成されているので、文言を日本語に変えてみました。
ソースを追っていくとわかるのですが、自動生成された状態では string.xml で定義された hello という名前の要素の値を表示するようになっているので、該当部分を編集してみました。文字はUTF-8で扱われています。

アプリの実行前に、
実行 → 実行構成...
を開いて、『Android Application』の上で右クリック(Ctrl+クリック)し、「新規」を選択します。
すると、上のような画面になるので、起動設定の名前を適当に入力(上記では Android Conf)し、更にプロジェクトも選択しておきます。

ちなみに、ターゲットタブを選択すると、どんな端末上で実行するかを設定することができます。
Device Target Selection Mode を「自動」にしておくと、Android携帯電話の実機(Android Dev Phone 1)がUSB経由でつながっていれば実機上でプログラムが実行され、つながっていなければエミュレータが自動起動されてその上で実行されるようになります。

実機を手に入れたので、確かめてみた図です。
やはりリアルなもので確認ができると感動します。

Android開発環境の設定方法


Android携帯用のアプリの開発環境の準備に関する備忘録 for Mac(他OSでもほぼ同様)

1. Android SDKのインストール

http://code.google.com/intl/ja/android/download.html

から、Mac OS X用のファイル(android-sdk-mac_x86-1.0_r2.zip)をダウンロードしてインストール
.bash_profileに、
export PATH=$PATH:/Users/foo/bar/android-sdk/tools
みたいな感じで tools ディレクトリにパスを通しておくと何かと便利



2. Eclipseのインストール

[2-1] 英語版のインストール
(ここからUbuntu Linuxでのみ必要な設定)
Ubuntu 8.4 または 8.10 のSynapticパッケージマネージャ経由だとEclipse 3.2のインストールになってしまうので、下記URLを参考に手動で Eclipse 3.4 をインストールするとよい。
http://ubuntuforums.org/showthread.php?t=941461
(ここまでUbuntu Linuxでのみ必要な設定)

http://www.eclipse.org/downloads/

より、好きなパッケージのEclipseをダウンロード(特に好みがなければ "Eclipse IDE for Java Developers" が無難)
そのファイルを解凍してできたフォルダを、任意の場所に移動させるだけで英語版のインストール完了(=解凍した時点でインストールが完了)
もしJDKがインストールされていなかったら予めインストールしておく必要あり。確認は、ターミナルで
$ javac -version
のようにしてみて 1.5 以上のバージョンだったらOK

[2-2] 日本語化プラグインのインストール
http://mergedoc.sourceforge.jp/

より、『Pleiades 本体ダウンロード』というところからDLしたものを解凍して出てくる plugins と featuers フォルダの中身を、2-1のそれぞれのフォルダ内にコピーする

(ここからMacのみ必要な設定)
更に、Eclipse起動ファイルを Ctrl+クリック で出てくる"Show Package Contents"メニュー経由で Contents/MacOS/eclipse.ini にアクセスし、内容に下記を追加(最後尾行に追記でOK)することで、プラグインを認識させる

-javaagent:/Users/foo/bar/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=no.mnemonic
(ここまでMacのみで必要な設定)



3. Android ADKのインストール

http://code.google.com/intl/ja/android/intro/installing.html#installingplugin
の通りにEclipseを操作する。
ソフトウェアアップデートの対象となるようにサイトを登録して→ADKをチェックして→インストールして→Eclipseを再起動させる だけの簡単な手順

インストール後、メニューの「Eclipse」→「Preferences..」を開いて「Android」の項を選択すると、SDKへのパスを聞いてくるので
/Users/foo/bar/android-sdk
のような感じで入力して完了

これでプロジェクトからAndroidプロジェクトが選択できる



備考
Android ユーザーグループ

日本Androidの会: Android開発環境概要

 

2008年12月20日土曜日

ミドリフグ俳優くるり 復刻版


2004年〜2007年にかけて運営していたサイト『ミドリフグ俳優くるり』ですが、この度一部の方々からのあたたかいお声がけによって復活することになりました。

 復刻版 ミドリフグ俳優くるり

復活というと続きがあるみたいなのですが、閉じたサイトで特に更新は予定していないので復刻版という感じです(URLもGoogle App EngineでGSP(グリーン・スポッテド・パファー)の名前がとれたので gsp.appspot.com に移動しております)

このサイトは、もともと個人的な実験としてWebサイトのUIをテストする目的で作っていました。
当時はCSSがプロのWebデザイナーの間では当たり前になりつつあったのに対し、ブラウザによってCSSの解釈にばらつきがかなりあったりしました。(あ、私はWebデザイナーではないです・・)
また、ブロードバンドが主流とは言われながらもまだ細い回線なユーザーも多い時代でした。当然、昔ながらのシンプルで軽いページを望む人とリッチなインタフェースを望む人がいたり。

そんな過渡期だったので、実際にどんなUIが人気で、どんな配置が好まれるのか試行錯誤するテストページが欲しかったんです。
あと、何か楽しいコンテンツをつくりたかったという気持ちもあって日記形式にしました。

ちなみに一番最初のころのページレイアウトはこんな感じでした。
最初は背景も白で内容ももっとシンプルにしていました。その後順次付け足したり付け足したものを変更したり、文言を変えたししながら試行錯誤していました。

今みると、現在ではWebサイトでポップアップさせるという行為自体が御法度になってしまったので、もし更新するとしたらAJAX使ってサイトの一部だけを変更するスタイルにしなきゃですね。
それに、今ならCSS使わない方が変ですし。
時代の流れは速いですね。。

ディズニーランドに最適なLumix LX3


PanasonicのコンデジLUMIX DMC-LX3を購入して以来、その「軽さ」と「チャンスを逃さないバランスのとれた作り」が便利すぎて、この頃はコンデジでばかり写真を撮っています。
それに、有名デジカメ情報サイトの dpreview.com で、LX3が大御所コンデジの部門総合1位のお勧めカメラに輝いていました〜。


今日のBlogの写真はいずれもLX3で撮ったTDLのエレクトリカル・パレードです。
サイズの縮小以外は補正もシャープネスも全く手を加えていない状態のものです。(jpegの圧縮率を落としているので、オリジナルより画質は多少悪くなっている状態ではあります)
全てのフロート(山車)を撮ったのですが、ISO200以下という感度で1つも手ぶれ・被写体ブレがないという素晴らしい性能でした。
さすがにアップにした上でキャラクターが素早く動いていたり手を振っているとその部分だけは被写体ブレしますが、ズーム状態で撮ってもフロートの電飾はブレていないので正直驚きました。ISO400以上の画質でも良しとするなら更にバシっと止めることができそうです。


ディズニーランドで一眼レフというのも趣味のカメラとしては楽しいですが、コンデジだと取り回しが効くのでその場を楽しみやすくなります。(欲を言えば携帯のカメラが一昔前のデジ一並みのクオリティを持ってくれるようになるといいのですが・・)
現時点では、LX3はディズニーリゾートを楽しみつつ思い出を残すには最強コンデジだと思ったのでした。

2008年12月19日金曜日

スケアクロウマン現る


自由が丘にあるスイーツフォレストの夜の姿です。
スケアクロウマンが階段に現れ、とても良い感じになっていました。

2008年12月18日木曜日

初心者に最適なプログラミング言語とは?


初心者がどうプログラミング言語を学ぶかについてのトピックが熱いですね。

Geekなページさんの「初心者はプログラミングをどうやって学ぶと良いのだろうか?」
304 Not Modifiedさんの「プログラミング初心者はギークから学べるのか」
404 Blog Not Foundさんの「いきなりCの方がよっぽど難しい」
Geekなページさんの「プログラミング学習に求められるのは夢と想像力かも」
など

昔からこの議論は絶えないところにコンピュータ言語の面白さを感じます。
私はポケコンから始めたのでBASICしか選択肢が無く、BASICをやっていくうちにマシン語に必然性を感じ、マシン語が簡単につかえる&速いということでC言語、その辺りから言語が楽しくなってPascal、Modula-2、LISP、FORTRAN、Prolog、Oberon、Smalltalk等々と進み、最近はPythonやJavaで落ち着いています。

今思うと、選択肢が無いというのはとても良かったと感じていて、私の性分だと今の時代から言語学習をスタートしたら迷ったあげくに何も手つかずになりそうです。

私のような人をも救済してくれるというのであれば、何でも良いので学校レベルで「今はこの言語しかやる必要ありません」と決めを作ってくれればどんな言語でも良さそうです。
これしかやる必要ないと言い切る為には理由が必要なので、「今一番使われている言語がこれだから」とか「あなた方の用途に最も便利なのはこの言語だから」という基準でお題の言語を与えてくれさえすればよいかと思います。

私が学生時代に最初に習った言語はFORTRANだったような気がします。もしくはPascalだったかも。。
社会では一番使われている言語だから(FORTRAN)という理由で、Pascalは言語学習用に作られた言語だからという理由だったような・・
どちらの言語も言語に意義を感じたので、違和感なく入り込めました。

でも、今の学生さんはJavaとかから始めたりするんですよね。。
私から見るといきなりJavaって恐ろしいですが、「Javaが一番仕事になりやすいから」みたいな理由を最初にきかされてたらすんなり学べそうです。
逆に、今の学生さんにいきなりFORTRANを教えたりしたら、なんでそんなに制約が必要なのか理解できないかもですね。

私は理由さえあれば&決めを作れば、言語はなんでも良いと思っています。

2008年12月7日日曜日

Macのスワップとハイバネーションを止める方法


[備忘録]
・十分なメモリがあってもスワップしてしまって作業効率が悪くなる場合、下記のようなプログラムを提供してくれるblogがあった.
http://blog.livedoor.jp/dankogai/archives/51101101.html

・MacBookのスリープモード初期設定は、サスペンドとハイバネートの両方を使うセーフスリープモードになっている。基本はメモリを使った移行と復帰をするが電源供給がなくなっても復帰できるようにと結局ハイバネートと同様の処理を移行時に行うのでスリープするまでに時間がかかる。下記のコマンドで変更可能。
$ sudo pmset -a hibernatemode 0 (サスペンドのみ)
$ sudo pmset -a hibernatemode 3 (サスペンド+ハイバネート : デフォルト設定)
$ sudo pmset -a hibernatemode 1 (ハイバネートのみ)

現在のスリープモードの確認は下記コマンドで。
$ pmset -g

2008年12月6日土曜日

W-ZERO3からtwitしてみる


Macからだと
#!/bin/sh
curl -u ユーザー名:パスワード -d status="$1" http://twitter.com/statuses/update.xml

なんて内容を実行形式のシェルとして保存してエイリアスをつけておけば
$ twit ランチ中
みたいにして簡単につぶやけることを知ったのですが、できれば W-ZERO3 からもつぶやけるようにしてみたかったので、簡単なPythonスクリプトを書いてみました。

import urllib
url = 'http://ユーザー名:パスワード@twitter.com/statuses/update.xml'
message = raw_input('twit?')
data = urllib.urlencode({'status': message})
urllib.urlopen(url,data)

を、「マイ デバイス」の直下に twit.py のような適当な名前で保存。
あとはPythonCEのインタプリタから
>>> execfile('¥¥twit.py')
とすることで、つぶやけるようになりました。
日本語でつぶやけるようにと、調整し易くする為に複数行にわけてスクリプトを書いてみたのの、しばらく試行錯誤した後なんとなく日本語が通らない風味だったので諦めました・・
#{'status':message}を{'status':message.encode('UTF-8')}とかして通したかったのですが・・
あと、事前にネットにつないでおかないとIOErrorになってしまいます。

平文でパスワードがネット上を流れる上にソースファイルに直書きなのでセキュリティ的に甘々です。何時盗まれてもよいような&自分でも忘れてしまうようなパスワードにして利用しています。

2008年12月4日木曜日

UTF-8なCSVファイルをExcel用に変換するコマンド


[備忘録]
iconvで文字エンコードを変換すると、UTF-16BE/LEのBOM付加を制御できない(BOMがつかない)。
しかし、エクセルでUnicodeなCSVファイルを読み込ませる為には、BOM付きのUTF-16LEである必要がある。
nkfを使えば良いが、マシンにインストールされていなかったりする場合には、下記のように手動でBOMを付加するワークアラウンドでなんとかなる。

$ shopt -s xpg_echo
$ (echo '\xFF\xFE\c' & iconv -f UTF-8 -t UTF-16LE file_utf8.tsv) > file_excel.csv

csvという拡張子にしているが、タブ区切りのまま変換するのがミソ(つまり、変換前のファイルはタブ区切りで用意しておくこと)

2008年12月1日月曜日

師走始まる


いよいよ今年もラスト1ヶ月となりました!
景気付けに、うなぎの川信さんの鰻丼定食(1,155円)の写真をアップしてみました。
ここで頂く鰻は、ごはんモチモチ&鰻やわらか〜でめちゃうまです。