2012年11月13日火曜日

Garmin etrex 30を購入しました

まずは、VLGothicを入れてみた。

次にメニューを日本語化しようとして、Garminのサイトに行き、日本語版ファームを解凍し、
Japanese.gttを入手。
gttはxmlでグロッサリが記述されている。
utf-8でBOMつき、改行コードはCRLF、しかもなぜかアトリビュートは777だった。
喜び勇んで、そのままetrex 30に入れたのだが、動かなかった。
やっぱ日本語版 etrex 30J とは何か違うのか?
etrex30内部のSpanish.gttを見ると、項目が増えているように見える。
これらも入れてやらないと動かないってことだろうか?

こういうときに自分が使うのはperlだ。(Python でもいいと思うけど)
今回はxmlを使うので、cpan使ってXML::DOMとかXML::XPathを入れた。
(ちなみにmacでやってる。)

etrex 30に入っていたSpanish.gtt(別にGerman.gttでもいいんだけど)に対して、
etrex 30J用のファームを解凍して手に入れたJapanese.gttを当てていこうと、
以下のようにコーディング

【使い方】

入手したJapanese.gttはJapanese.gtt.orgへ変更しておく


./conv.pl > Japanese.gtt
とやってリダイレクトする

【注意】
お約束だけど、個人責任でよろしく
できあがったものはutf-8だけど、BOMなし、改行コードはLFのみになる。
アトリビュートは手動で変更したが、必要かどうかわからない。

--- conv.pl ---


#!/usr/bin/perl

use utf8;
use XML::DOM;
use XML::DOM::XPath;

my $parser = new XML::DOM::Parser;
my $jDoc = $parser->parsefile("Japanese.gtt.org");
my $sDoc = $parser->parsefile("Spanish.gtt");
my $jTags;

#日本語からtagstrの組を覚える
foreach $node($jDoc->findnodes("//gtt/str/*")){
$tag = $node->getTagName;
if($tag =~ /tag/){
$tagvalue = $node->getFirstChild->getNodeValue();
# print "$tagvalue\n";
}
# Garmin さん、XMLなのに順番に依存する作りは良くないよ
if($tag =~ /txt/){
$txtvalue = $node->getFirstChild->getNodeValue();
$jTags{$tagvalue} = $txtvalue;
# print "$txtvalue\n";
}
}

#スパニッシュのヘッダを書き換える
foreach $node($sDoc->findnodes("//gtt/hdr/*")){
$tag = $node->getTagName;
if ($tag =~ /lang/){
$node->getFirstChild->setNodeValue("Japanese");
}
if ($tag =~ /desc/){
$node->getFirstChild->setNodeValue("Japanese");
}
if ($tag =~ /cpage/){
$node->getFirstChild->setNodeValue("Japanese");
}
}

#スパニッシュのtagを読んで、Japanesestrを吐き出す
foreach $node($sDoc->findnodes("//gtt/str/*")){
$tag = $node->getTagName;
if ($tag =~/tag/){
$tagvalue = $node->getFirstChild->getNodeValue();
# print "$tagvalue\n";
}
if ($tag =~/txt/){
$txtvalue = $node->getFirstChild->getNodeValue();
if($jTags{$tagvalue} ne ""){
$txtvalue = $jTags{$tagvalue};
}
$node->getFirstChild->setNodeValue($txtvalue);
# print "$txtvalue\n";
}
}

print $sDoc->toString();



---- end ----

【ぼやき】
なんか巷のサイトを見ると、xmlをファイルから読み込むのに面倒くさい事してたり、
getElementsByTagNameでXPathも使わずに読み込んでたり、
どうも自分の感性と違う使い方をしてらっしゃる。

今回入手したGarmin のXMLもひどいもんだ。

こんな感じになってるんだけど
<str>
    <tag>TXT_NANTARA</tag>
    <txt>なんたら</txt>
</str>

<str>
    <tag>TXT_KANTARA</tag>
    <txt>かんたら</txt>
</str>


自分ならこうする
<str id="TXT_NANTARA">なんたら</str>

<str id="TXT_KANTARA">かんたら</str>


理由は上記スクリプトの中の文句を見れば、わかってもらえると思う。

2012年9月10日月曜日

iPhone/iPad用バーコード表示プログラム

以前Twitterのiphone_dev_jpで誰かが聞いていたので、作ってみた
iPhone/iPadでバーコードを表示するプログラム



エラーチェックは単純なチェックしかしてません。
最後尾はCheckDigitなので計算で出すようにしています。
番号も表示するようにしましたが、高さが短いと文字が小さくなりすぎると予想します。
その場合は、フォントの最小サイズを考慮するなどで対処するのがよろしいでしょう。

作成にあたり、こちらを参考にしました。

2012年9月6日木曜日

SetWindowLong with GWL_HWNDPARENT

Windowsにおいてウインドウには親、子、オーナーが居る(もっと居るけど)
SetParentを使うと、親をセットできる。
SetParentすると、親の領域内で子のウインドウはクリッピングされる。

Zオーダーを静的に維持したいということをよく聞いたりする。
CのオーナーをB
BのオーナーをAとすると、
A→B→CというZオーダーは維持される。

通常オーナーを設定出来るのはCreateWindowExの第八引数にインスタンスを指定したときだけだ。
昔のVBでは frm.Show(vbModeless,Me) とかすると、オーナー指定でウインドウを開く事が出来る。

ところで、オーナーを後から付け替える方法として、大昔から以下のようなAPI呼び出しが使われてきた。
SetWindowLong(hWnd,GWL_HWNDPARENT,parent);
これをやると、後からオーナーの付け替えが出来る。(SPY++で確かめた)
しかし、MSDNによると、これはやってはいけないことらしいのだ。
「親の付け替えを行いたい場合、SetParentを使え」と書いてある。
そして「オーナーを付け変えるAPIはWindowsには無い」ことになっている。

つまり、SetWindowLongにGWL_HWNDPARENTを指定するのは、
サポート外の使い方という事になり、
「オーナー指定はウインドウ作成時に限る」というのが正しい解釈である。

オーナーを付け変えることによる副作用が何かあるのかもしれない。
なんだかわからないけど、使わない方がいいだろう。

2012年8月27日月曜日

PAD型電子デバイス

人間はアルゴリズムを考えるべきで、機械的作業は一切行うべきではない。
例えば数独を解く行為は時間の浪費でしかない。
それはゲームをするよりも酷い作業だ。
数独を解くアルゴリズムを考えるのが人間の行うべき作業である。
考える行為は創作活動であり、数独を解く事も漫画を読むことと同様、
ただの暇つぶしであり消費行為でしかない。

さて、ここから本題である。
PAD型電子デバイスは、ただの消費端末になるべきではない。
書き込めるノートであり教科書であり、思考をまとめる道具であり、
いつでもどこでも使える物になるべきである。

と、言うことで、
自分が望むPAD型電子デバイスの姿は以下。
・最低1ヶ月切れないバッテリー。
・指ではなくペンで書け、消しゴムで消せる。
・100m防水、防塵、防弾、酸やアルカリに対して腐食しない。
・-30℃~60℃まで正常に動作する
・成層圏から落としても壊れない。
・たとえ壊れてもメモリーは保持、復旧可能。

これが出来ないということは、
極地でも砂漠でも深海に沈んでいても1000年前の記録さえ復帰できる(可能性がある)紙にも劣るということだ。
そんな物(PAD型電子デバイス)は、本来作る意味さえ無い。

ちょっと大げさな要求仕様だが、
そういう物が作れて、ようやく創作活動に使うにあたり、
必要充分なデバイス足り得る。(まぁ大げさだけど)

これまで、人間の記憶も行為も、すべて時の彼方に消え去ってきた。
個体の寿命はせいぜい60年から70年だ。
出来ることはとても少ない。
しかし、今、人間は互いに積極的に討論する場を得、
第三者の評価も得られ、その行為も未だかつてない正確さで残せるという時代になった。

ここから人間は進化をし始めるのではないかと期待している。
(もうくだらない歴史を繰り替えして欲しくは無い。)

電子化、そしてその操作端末は、これからの人間の進化に必須だが、
今、実現可能な最良と思われる電子デバイスは作られていない。

みな、ジョブズやGoogleの発想に負けない、自分の思い描く最良の電子デバイスを創造してみて欲しい。
すぐに、PAD型にこだわる必要さえない事に気がつくだろう。

自分は、創造を忘れた評論家とは話す口を持たないが、
創造をする人たちとは積極的に話をしたいと思う。

2012年6月11日月曜日

BORG 50FL

小学校の頃、知り合いのお父さんが天体望遠鏡を持っていた。
小学生の自分にとっては、かなり巨大だった印象がある。
とくに覚えているのは赤道儀のバランサーの大きさ、
あれだけ大きいということは鏡筒もでかかったはずだし、
三脚もかなりがっしりしてた。

あんな巨大な物を持っているなんて、家の中のどこに置いているんだろう
うちじゃ無理だ、置き場所が無い。高いだろうし、絶対無理だ。

諦めるしか無かった。

それに天文学に関しても、ただ星の名前を覚えるだけのものだと思い。
たいした興味も持てなかった。

しかし、こないだの月食で、同じく小さい頃あきらめていた一眼カメラ(Olympus EP-1)を使って撮影したところ、
どうも満足できなくなったのだ。

EP-1は旧型機だが、EP-1の所為じゃない。
レンズ・・・というかもはや天体望遠鏡レベルじゃないと満足できない。
そこで目についたのがBORGだった。

ネイチャーショップKYOEI TOKYOで50FLを買った。

三脚は2700円のやっすい奴。
これで、金環日食はかろうじて撮影できた。
黒点まで写って、結構満足している。
しかし、はっきりいって、画面内に被写体を入れるのはかなり苦労する。


月面、クレーターも結構写ってる。
これも大体満足

金星、火星、木星、土星・・・まだ撮影できてない。
どれがどれかまだよくわかってない。

手持ちで谷津干潟の鳥を撮影してみた。
無理だったw

重すぎて手ぶれ補正無理!
ピント合ってるのに、像が二重に!!

てか同じ場所でBORG使ってる人がいた!
セット内容は自分のと違って、
BORGのサイトで紹介しているのと同じフィールドセットだと思う。
ユーザーはそんなに多くないと思っていたのだが、結構いるんだろうか?

BORGの微動雲台(黒)を買った。
BORG 50FL で8秒ほどシャッターを開けたまま、EP-1で3mほど離れた薄暗い室内を撮影した。
3m離れた位置から、薄暗い場所の電化製品についた指紋の跡が撮影できた。
なんじゃこれ・・・すごすぎる

50FLを使うまでは、
EP-1のマニュアルピント合わせ補助機能も、BULB機能も使い方がわからなかったし、
微動雲台も赤道儀も何をするものなのかよく分からなかった。

シャッター開けっ放しで星を撮影するには、赤道儀が要る。
でもすっごい高い。
欲しいのだけどなぁ・・・作っちゃうかなぁ・・・

2012年2月20日月曜日

MVPen EN309i

MVPen EN309iを購入。
一万円以上するのだが、自分には必要だった。
MVPen自体は使っていたことがあるので、その解像度が充分であることは知っていた。

前回もそうだったように記憶しているのだが、iPadから購入した時にはカード決済がエラーになる。
サポートページにはエラーになったときは一度取り消しをさせていただきますと書いてあるので、もう一度今度はMacBookから購入し、カード決済も無事に終わった。

中一日挟んで製品が届いた。(とても早い)
その間に、FlyNotesという専用アプリに不具合があったということで、ipaファイルが届いた。一般の人はこれをどうやってインストールするのかわからないんじゃないだろうか?
FlyNotesは、AppStoreで購入したもので問題がなければそのまま使ってくださいというので、AppStoreから購入(というか無料なんだけど)

肝心の使い勝手だが、キャリブレーションをする時に、ペンの傾きを変えてはいけない。
この点に注意すれば普通に書ける。
ただし、パッドの上部と下部では、ペンの持ち方が変わるだろうから、そうなってくると、キャリブレーションしててもズレるし、おいおい不良品じゃないの?とか思ってしまう。

いつまでたっても使えない人は、意識的にペンの傾きを一定に保ち、キャリブレーションを行い。そのまま書くように心がければきちんと書けるようになる。(ハズ)

ところで、送られてきていたFlyNotesのipaだが、こっちに変えたらもっと使い勝手が良くなるのかと試してみたくなった。
MacでもWinでもデスクトップにあるiTunesにiPaをドラッグアンドドロップすれば「置き換えますか」と聞かれるので「はい」と答える。
その後、iPadをつついてAppを開き、FlyNotesのアイコン無しバージョンのみにチェックを入れて「適用」

この時、当然のように今まで書いていたノートも消えるのでとっておきたいノートは画像にでもしてEvernoteにでも入れとくといいと思う。

んで、FlyNotesは一体どこが変わったんだろうか・・・
実感出来る変更点は特になかった。
お世辞にもFlyNotesは出来が良いとは言いがたい。
(自分にもMVPenアプリを作らせてくれないもんだろうか・・・)

普通にメモを取ることが出来るようにはなるので、買ってみたい人は買うべきだと思うが、NoteShelfで満足している人は購入の必要は無い。

自分はNoteShelfではメモしきれないくらいに細かい図形とかがあるので、そういうのをメモしたい人には必要な物だと思う。

どうして完全にお勧めできないかと言うと、やはりペンの傾きを保持しないと書けない点が痛い。

自分は絵も描くので、わりとペンの傾きまで意識して絵を描くのだ。
できたらGペンや丸ペンのエミュレーションまで欲しいくらいだが、そこまでのペンタブレット製品はWACOMでも出してない。

簡単なボールペン書きメモを残せるようになるという感覚で使うべきなんだろうと思う。

いずれにしろ、このままFlyNotesで続けるのは辛いので、NoteShelfが対応してくれるのが自分としては一番望ましかったりもする。