2013年7月4日木曜日

beagle bone black

ラズベリーパイが流行っているようなので、違う方を買ってみた。
beagle bone black
http://www.itmedia.co.jp/news/articles/1307/01/news115.html

Cloud9 IDEで色々いじっているうちに、IDEが立ち上がらなくなってしまった。
SDカードで最新にしてなかったので、やってみようとしたのだが、
イメージサイズが3Gくらいあって、手持ちの2GマイクロSDには書き込めなかった。

cloud9の立ち上げに失敗してるんだろうなと思って、
GateOneSSHClientで見てみたら以下を発見

/lib/systemd/system/cloud9.service
cat してみたら以下のラインがあった。
ExecStart=/usr/bin/node4 /usr/share/cloud9/bin/cloud9.js -l 0.0.0.0 -w /var/lib/cloud9 -p 3000
これをコマンドラインから打ち込んだ。
/usr/bin/node4 /usr/share/cloud9/bin/cloud9.js -l 0.0.0.0 -w /var/lib/cloud9 -p 3000

/var/lib/cloud9が無い!とか言われるので、フォルダを作成し、再度実行したところ立ち上がってくれた。

うーん、なんで消えちゃったんだろう?
しかしまぁこれ、、、JavaScriptで、PWM制御とかのコーディング出来ちゃうよ?
もうあれです。
自分でボード作ったりFPGAとかしたりする時代じゃないんじゃないのかと・・・
だってここに5000円で1GHzのLinuxが立ち上がっちゃう子が居るわけで、
コーディングだってスクリプトで出来ちゃうし、、、
世の中どうなってしまうんでしょうねぇ?

2013年6月12日水曜日

ajaxplorer5

ドメインキング借りてるのだが、
ajaxplorerはPHP5.3以降を必要とするので動かなかった。
仕方なくajaxplorer 4.2.3に戻して使っている。
結構前からajaxplorerを使っているのだが、
iPhoneのクライアントもあってこのWEBツールはとても良いと感じている。

最初の頃は文字化けをしたり、
PHPのセッションテンプレートフォルダを作るのにapache ユーザーとグループのフォルダを必要としたりで、消せないフォルダを作ってしまったりもして大変だった。

今はそんな苦労も無く普通に動かせる。
最早必須。
お勧めします。

2013年4月15日月曜日

Vulkano Lava

実は結構前にVulkano Lava を購入していた。
うちのネットワーク構成は以下のような感じである。

光回線-A t e r m B L 1 9 0 H W-Fonera 2.0n-Vulkano、その他PC

 ※Atermには一台だけFAX用のハードウェアがつながっている。

つまり全パケットはFoneraを介している。
アドレスは以下のような感じになってる。
光回線-(Global Address)Aterm(192.168.a.b)
                   -(192.168.a.c)Fon2.0n(192.168.d.e)-(192.168.d.f)Vulkano

まぁ、よくある二重ルータ状態です。

外からVulkanoを使うため、
(1)Atermに静的ルーティングを設定
宛先IPアドレスは192.168.a.c/24
ゲートウェイは192.168.d.eを設定
※保存すると、宛先IPアドレスは192.168.a.0/24になる(?)

(2)Fon2.0nのポートフォワーディング
設定→ファイアウォール→ポートフォワーディングで
tcp 49177 192.168.d.f
tcp+udp 56123 192.168.d.f
※ターゲットポートは空

(3)Vulkanoから普通にネットワークの設定をしてあげる。

これで、iPhoneやiPad等を使って外から自宅のVulkanoにつなぐことができる。

ちなみに自分は自宅のblu-rayデッキにつなげている。
帰り損ねてビジネスホテルなんてときに、自宅の録画を再生して見ている。

vulkanoのリモコン操作はお世辞にも使い勝手のいいものではないが、
必要充分かなぁと思っている。

fonでつくったDLNAにはm4vでいろいろ入っているが、
それもvulkanoやPS3なんかで再生できる。
笑っちゃうのが、vulkanoはカタカナの伸ばし棒が表示できないらしいw
でも日本語もぎりぎり表示できる。
あと、PS3だと余裕で再生できるのに、Vulkanoだとちょっとビットレートが高いと再生きつい。
かなり低めに設定してやらないとだめかもしんない。



2013年3月30日土曜日

fon2.0n + 2.3.0.7 Beta3 + mindlna(MediaTombから乗り換え)

つい先日(多分3月14日)fon2.0n の開発ファームウェア、2.3.0.7のBeta3が出たらしいので入れてみた。
そしてmediatombを入れ直してみたところ、ダッシュボード→MediaTomb→Installが出来ない
あれ?
新しいmediatombがあるかと探してみたが、
それどころが以前のmediatombさえ見つからなくなってしまっている。
まぁLuaが変わったとか書いてあったのでそのあたりが原因なのだろう。
この際、お手軽なminidlnaに乗り換えてみようかと思ってやってみた。
minidlnaのtgzを落としてきてFON Router GUIから入れるまでは出来た。
各種フォルダが出来上がっているのも確認し、動画を入れてさて見てみようかと思ったところ、あれ、PS3から接続出来ない。
仕方ないので、fonのダッシュボードからminidlnaをQuickRestart、これでPS3から見れるようになった。
minidlnaのが定期的に更新されてるし、お手軽なようなので、
今後はクロスコンパイル環境も作って自分でtgzまで作れるようにしておいたほうがいいかもしんないなぁ

2013年2月12日火曜日

Ogre on iPad mini

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=ogreOnIphoneFast
こちらを参考にiPad mini で Ogre を動かしてみた。

ただ動かしただけなのでOgreはよくわかりません。
http://www.youtube.com/watch?v=9p0hFdP4O7k

ちなみにOgreSDKのビルドを色々試みたんだけど、Boost関連で失敗しつづけ動かない。
(Boostもちゃんと使えるようにしておけばよかった・・・)

Ogre Templates for XCODE4 をインストールして、
後は普通にビルド・・・とはいかず、
最初のリンクに書かれている通り、libパスの先頭にスラッシュを入れる。
あと、boostのパスが通ってなかったので、そこだけ通して動かした。

とりあえず、60フレームで頭は表示出来てる。
OgreはOpenGLなんかの薄いラッパーになっているようなので、
ゲームに使うにはUnityよりもいいような気がする。
(まぁUnityもよく知らんのだけど)

2013年1月8日火曜日

ajaxplorerを入れてみた

以前、ajaxplorerをドメインキングのサーバに入れた事があるのだが、
そのときには、ファイル名の日本語が化ける事があって、
アップロード自体が失敗する事もあった。
ファイル名の先頭に半角の"-"をつけたり半角の"+"をつけたりすると、
アップロードが出来るとかいう訳のわからん状況だったのだが、
最近どうなっているのかと本家サイトを見てみたら、
かなり進化しちゃってるようではないですか?
http://ajaxplorer.info
なんとiOSクライアントもある。

ajaxplorerとは、
WEB上でエクスプローラーライクな操作で、ファイルのアップロード、ダウンロードが出来、ユーザーとロールも作れるので、このユーザーはこのロールでここまでしかアクセス出来ないようにするとかカスタマイズも出来る。

ようするにWEB上にドライブがあるような使い方が出来、ユーザ毎のアクセス権も設定出来る。
ここまで出来てしまったら、ガンガン使いますよ

DropBoxみたいに自動的にSyncするとか高等なことは出来ないけど、
普通に共有フォルダがあると考えればとても良い。
しかも容量はドメインキングのMプランだったら、
色々設定した残り容量だけでも40GB以上は使えるはず。

最新のajaxplorerは文字化け問題も無く、特に何をする事もなく普通にインストール手順に従ってインストールすればきっと動かせるでしょう。
唯一、PHPのアップロードサイズに制限があるので、
ajaxplorerのベースフォルダにある.htaccessを編集して、
自分は以下のように追記した。

php_value memory_limit 512M
php_value post_max_size 512M
php_value upload_max_filesize 512M
php_value max_input_time 800
php_value max_execution_time 800
まぁ大き過ぎると思うんで、もうちょっとサイズはしぼってもいいかもしれない。

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機能も使い方がわからなかったし、
微動雲台も赤道儀も何をするものなのかよく分からなかった。

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