2015年2月25日水曜日

RaspberryPi2

BeagleBoneBlackは、CNC専用マシンとなり、RaspBerryPiは無線アクセスポイント兼DLNAサーバ&ファイルサーバになったのだが、レンタルサーバーに入れていたPydioがPHPのバージョンのせいでバージョンアップ出来ず、WEB上のファイル共有スペースが作りたくて仕方なかった。
RaspberryPiにその役目をさせようとしたら遅くて使い物にならず、Edisonを使おうとしたらストレージが少なすぎて、カスタマイズしようとクロスコンパイル環境を作ってみたらコンパイルに40Gくらいかかったり使いづらく、どうしようと思ってた所にRaspberryPi2がでたので、速攻飛びついてPydio入れてみた。
使えます。
レンタルサーバーより自宅サーバのがレスポンスいいくらいです。
外付けHDDは給電能力が足りず認識してくれなかったので、64GのマイクロSDにOS入れてたのだが、ルートに割り当てていたところから少しパーティションを削りだして、USBにもう一つ64G接続して、両方からLVMでVG作って、だいたい100Gの容量にして、PydioのDataに割り当ててある。
しばらくはこれで運用してみます。

2014年4月2日水曜日

SetForegroundWindowについて

ちょっとね、今日は少しイラっときてます。
今更SetForegroundWindowについて語ることになるとは・・・

http://msdn.microsoft.com/ja-jp/library/cc411039.aspx

日本語のMSDNの記述によると、
「次の条件が満たされていなければ、プロセスがフォアグラウンドウィンドウを設定することはできません。」
と書かれてて、
その下に条件がいくつか書かれてるのです。

自分はその条件が全部満たされないとこの関数は動かんのだなぁと理解しました。
(多分日本人はみんなそう理解すると思います)

ところが・・・
 http://msdn.microsoft.com/en-us/library/windows/desktop/ms633539%28v=vs.85%29.aspx
こっちには以下の様に書かれてます。
「A process can set the foreground window only if one of the following conditions is true: 」

「どれか一つがTrueだったら」って書かれてるわけですよ

おいおい・・・日本語間違ってんじゃん!

だから、SetForegroundWindowを成立させるために、
AttachThreadInput使ったり、SystemParametersInfo使ったりと、
その他本来必要の無い前提条件をクリアするためのコードが散乱するわけです。

一個でいいんだって!
みんな気をつけるように!

2014年1月17日金曜日

ajaxplorer から pydio へ

重宝している ajaxplorer だが、いつの間にか pydio という名前に変わったようだ。
iPhone 用のクライアントも pydio バージョンが出ている。

ところで、アップデートはそこそこ頻繁に行われているので、
気軽にアップデートしまくっていたのだが、
その間に、日本語のファイルやフォルダが作れなくなっていた。

まぁ、きっとどこかにlocaleあるんだろうなぁと思って検索したら、
bootstrap_conf.php のコメントに書いてあった。

conf/bootstrap_conf.phpに以下を追加すると良い。
//define("AJXP_LOCALE", "en_EN.UTF-8");
define("AJXP_LOCALE", "ja_JP.UTF-8");

コメントアウトしてるサンプル部分だが、
en_EN.UTF-8じゃなくて、
en_US.UTF-8じゃないのだろうか?
javaのプロパティと同じルールだと思うんだが・・・

2014年1月6日月曜日

OpenVPN on fonera 2.0n with iPhone

fonera 2.0nは、Atermルータの後ろに居る。
ブリッジで接続している状態だ。
うちはau光なのだが、AtermのWAN側アドレスはどうも固定のようだ。
ずっと使っていて変わったことがない。 
AtermからDMZでfonera 2.0n の IP アドレスを登録し、
外からアクセスした時にfonera 2.0nの画面が出るようにした。

次にOpenVPNの設定で、
AtermのWAN側アドレスを設定、
OpenVPNを有効にし、
新しいクライアントを登録し、iPhone用のパスフレーズを設定した。
適当にあちこちリンクをたどって、元の場所に戻ると、
設定ファイルをダウンロードできる様になっていた。
適当な場所に設定ファイルをダウンロードし、
iPhoneにはOpenVPNをインストールし、
iTunes→App→ファイル共有→OpenVPNのところに先ほどダウンロードしたファイルを解凍した中身をごそっとドラッグ&ドロップする

iPhoneからOpenVPNを立ち上げると設定ができてるので、
先ほどのパスフレーズを入れConnectする。
(自宅の場合、WiFi切っておかないとつながらない)

これで、iPhone から VNC Viewer を使って自宅マシンに接続できるようになる。

2013年10月26日土曜日

今更Sleepについて書く事になろうとは・・・

どうも書かなくてはならないネタが出来てしまった。
マルチスレッドには欠かせないSleep(0)についてだ。
自分はSleep(0)を多用していた。
MSDNの記述によると
「中断時間として 0ms を指定してこの関数を呼び出すと、現在のスレッドは自らに割り当てられているタイムスライスの残りの部分を放棄します。」
という事なのだ。
つまり、「ここまででいいや」って時にSleep(0)を挟むと、他のスレッドが起動し始めるということだ。
これによって、OS全体の動きがスムーズになるはずなのだ。
Sleep(1)として1を入れる人も居るが、1についてはMSDNのどこにも記述が無い。

ところが・・・
最近作ったプログラムで、Sleep(0)を使ったところ、CPUの使用率が100%になってしまった。しかも単純なループで・・・
調べてみると、INTELの記述があった。
ちなみに日本語参考訳もある。
「Sleep(0) の呼び出しは、命令パスがかなり長く、約 1,000 サイクルも消費する ring3 から ring 0 への遷移があるり、プロセッサーは、この “スリープループ” が有効な作業を行っていると思い込む。さらに、無駄なエネルギー消費が起きてしまう。」

Core2やAMD64あたりのCPUでは普通にSleep(0)で動いていた筈なんだが・・・

そこで、INTELの推奨している方法は、_mm_pause() を使う事だ。
_mm_pause() はSSE2命令をサポートしていないシステムではnopになるらしい。 

INTELのサイトではサンプルが提供されているが古いシステムでnopになったら、あれだとCPUパワーを他のアプリに割り振ることが出来ないので駄目じゃないのかと思う。

最後に、INTELの記述に笑った
「我々は、数年にわたって調査と測定を行うことで、これらの問題に対処することができました。」

本当に数年かかったよ!

2013年9月10日火曜日

ajaxplorer Version 5.0.3 - 2013-09-02

現在会社で使ってるドメインキングのレンタルサーバには空きがあるので、
ajaxplorerをセットアップしている。

以前レンタルサーバのPHPバージョンが古かったため、
仕方なく4.xx系のajaxplorerを使っていたのだが、
こないだちょっと気が向いて調べてみたら、いつの間にかPHPが5系になっているのに気がついた。

おいおい、いつからだよ、、、

そしたらajaxplorerも5系にしたいよねぇ?
ということでやってみた。

FTPでajaxplorerのフォルダごと書き込み権限くっつけて、
WEBブラウザからajaxplorerにadminでログインし、設定からUpgradeを選択した。
するといくつかのパッチが当たりますけどいいですか?と出る。
続行すると、何の苦もなくアップグレード完了

FTPで後から見てみるとなにやらやばそげなファイルのパーミッションはきっちり変わってる。
良く出来てるなぁ

インターフェースに関してははっきり言って以前の方がセンスあったように思う。
気がついた問題点としては、MBCSのフォルダを作成すると、フォルダ名が空状態になってしまっている。
作成自体はできているようなので、リフレッシュすると出てくる。
i18n問題が残ってると使う気がめっきり減ってしまうので、後で報告しとこうと思う。

2013年8月19日月曜日

fon2303 developer firmware

http://blog.fonosfera.org の情報を元に、2012/12/13に出た fon 2303 用 2.3.7.0 developer firmware をインストールした。

こないだ2.3.7.0 beta 3をインストールした時点ですでにstableリリースが出ていたようなのだが、なんで気がつかなかったんだろう?

気を取り直して、いつも通りWEBインターフェースから入れようとしたら出来なかった。
しかたないので、sshで接続してimageを直接入れる事にした。

mac から Terminal開いて以下のように入力

ssh root@192.168.xx.xx
パスワード入れて、接続したら続きを入力

cd /tmp
wget http://download.fonosfera.org/2.3.7.0_Paco/FON2303_2.3.7.0_DEV.img
mtd -r write /tmp/FON2303_2.3.7.0_DEV.img image

意味はよくわからんが、mtdてのはフラッシュするコマンドのようだ。

しばらくすると、fonの再起動かかってデフォルト状態のfonが立ち上がる。
初期設定から言語を日本語にしたり色々やり直し、minidlnaもインストールしなおして、うちは2重ルーターで使っていたが今回は面倒くさいのでbridgeにして、、、あ、つながらなくなった。仕方ないので電源抜いて再起動、、、などなどやってきちんとdlnaも動いて今まで通りになった。

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まで作れるようにしておいたほうがいいかもしんないなぁ