2014年7月20日日曜日

ツーリング用ナビアプリ プロジェクト開始

ツーリング用の Android カーナビアプリを作るプロジェクトをおもむろに開始.

ツーリングでは特定の道を通ることが重要なので,経由地指定機能は必須なんだけど,Google マップのナビにはその機能はない.他の有料ナビアプリだと経由地を指定できるものもあるが,PC との連携が皆無なのでルート作成もスマフォ上で作らないといけないのでやってられない.

というわけで昔なつかしの gpshook テクノロジw で上記のことを実現することにした.
要は,次の経由地までのナビを起動して,経由地に到達したらまた次の経由地のナビを起動する,ということを繰り返すだけなんだけどw

ルート作成は PC の Google マップの「マイマップ」で作成して kml にエクスポートすればよさげ.
肝心のナビの起動はここにあるように,インテントを投げるだけなんで超簡単.

単に経由地に到達したら次のナビを起動,だけなら UI も何もいらないレベルなのだが,
・kml を読み込んだ時にルート全体を地図に表示する
・ある経由地をスキップして別の経由地を目指す機能.これも地図上の経由地マーカーをタップするとか,そんな感じの UI
を実現したいので,手始めに Google マップをアプリ内に表示させるようにしてみた.

これがハマルハマル(;´д⊂)
まず MapView についてググると API V1 についてのサンプルが多く,現在 API V2 しかサポートされてないので,どっちの記事かをわかっていないと,コードをコピペしても地図が真っ白とか,中途半端に動かない.更に API の仕様? も事細かに更新されているらしく,Google 公式サンプルですらコンパイルエラーとか(;´д⊂)

ぬるぽで死ぬたびにエラーメッセージググって修正,とういうのを繰り返して,やっと Google マップを表示できたよヽ(゜ーÅ)ノ

自分用メモ:
AndroVM で MapView が表示されない時は,AndroidManifest.xml の android:hardwareAccelerated="false" にする

2014年7月17日木曜日

DD-WRT につぶやかせてみる

DD-WRT は素の Linux に近いとはいえ,/var/log 系があまり充実していない.また出先から DD-WRT の状態を知ろうにも,Android で PPTP セッション張ってブラウザ立ち上げて…,とか面倒なので,DD-WRT に自発的に自分の状態をつぶやかせてみることにした.

最初は Basic Auth とかで wget で適当な URL + Query String を指定すれば ok だろうと軽く考えていたのだが,なんか Twitter は OAuth を採用していて (今更気づいた),wget + スクリプトで対応できる範疇を超えている.

んー,と思って色々探してみたら,StewGate-U というサービス発見!!
これは OAuth の認証を肩代わりしてくれるプロキシで,StewGate に対し簡単な http アクセスをするだけであとは StewGate⇔Twitter 間で OAuth 認証をやってくれる.

というわけで,DD-WRT からつぶやいてみたのが上の画像.
DD-WRT 内蔵の wget コマンドは POST データを送信するオプションが省かれていたので,curl をクロスコンパイルしてやってみた.

これで色々面白いことができそうヽ(´ー`)ノ

2014年7月2日水曜日

クラウドのトラブルを食らうど!

ここに次世代ブロードバンド時代の新たなギャグが誕生した.

いやね,アマゾンでは日替わりで有料アプリをタダで配っているので,有用なアプリはゲットしていた.
で,それらはアマゾンシステム的には ¥0 で「買った」ことになっているのでライセンス管理的なものがきっちりなされているっぽいのだが,ある日端末上で (¥0 で) 購入したアプリが Amazon Apps の購入リストから消え去っていたwww (左の画像)
でその状態で,買ってない扱いになったアプリを立ち上げると「コンテンツは所有されていません」というメッセージとともに強制終了されると(;´д⊂)

で結果から言ってアマゾンシステム側の問題っぽいのだが,アマゾン側も原因を掴みあぐねているのか解決に 1月程かかった.
今回はタダで貰ったものばかりだしアマゾン側もちゃんと対応してくれたから良かったけど,突然アカウントを消されたりする事例もあるし,メールなんか 100% Google に預けてるし,最近は写真も全部 Picasa に UP してローカルのは消してるし.

クラウド危険性にちょっとだけ触れた今日このごろ.

2014年5月25日日曜日

10年後のブロードバンド環境

NTT から電話がかかってきた.要は「eo光からフレッツ光に乗り換えませんか?」というセールス電話だったのだが,まぁ 1円でも安くなるんならと話を聞いていたけど,100M→1Gbps になる代わりに料金は +¥400/月,と聞いた時点で興味は失った.

で値段が上がるならイラネ,と伝えると,相手が言った言葉が
「フレッツに変えてもらったら,これからのブロードバンド環境に対応した 1Gbps で通信できて,10年先でもお使いいただけます!」
これからのブロードバンド環境ってなんだよw なにそのマニュアル感たっぷりの文言www って思った瞬間に電話口でブーって吹いてしまったwww 大体 1Gbps 必要になる状況ってファイル共有以外思いつかんけど,それがこれからのブロードバンド環境なんだろうか.

いや,10年後には YouTube で 8k4k を見る時代が来るってことを,セールスの人は見抜いていたのか.

2014年5月18日日曜日

Powwwwwweeeeeeeeeerrrrrrrrrr!!!!

by ジェレミー
ってこのネタもうやったっけ.

PC からストロボチャージ音のような「チュイーン」という結構大きい音がするようになった.最初は HDD が異音を発しているのかと心臓が凍りかけたが,結局音源は電源ユニットだったようで.それでも音程がだんだん上がっていくので,最終的に煙吹いたりしないかとかだんだん不安になってくるw

ちょくちょくアップグレードはしてるけど基本的には 6年前に組んだマシンなので,これを機に新規に組み直すか? と思ったけど,AMD は APU に力を入れているようで,CPU 性能自体は今より下がるくらいなのでパス (PC でゲームしないのでグラフィック性能はいらないし).殿様商売のインテルはハナから買う気がないし.

というわけで結局電源だけ買い直した.玄人志向の ATX電源 400W KRPW-L4-400W/A.
レビューではファンはうるさくないとの事で,確かにファンの風切音はほぼしないが,軸受け? がハズレだったようでわずかに異音がする.安物だから文句は言わないけど,静音に拘る人にはおすすめしないかも.
古い HDD とかの 4pin 電源コネクタがケースファンで多用されていてコネクタが足りなかったので,壊れた電源からケーブル切り出してコネクタ増設ケーブルを作った.

あと今回いろいろ調べて知ったけど,電源ユニットって結構消耗品なんだなぁ.

2014年5月17日土曜日

笠取山分屯基地 開設 58周年記念行事

今年も笠取山分屯基地の一般開放イベント (開設 58周年記念行事) に行ってきた.

展示内容は毎年あまり変わらないみたいで新鮮さは乏しいけど,基地 (青山高原) までの道は結構いいワインディングロードなので,毎年ソロツーリングを兼ねて行くことにしている.といっても去年は青山高原の道路が崩壊していて中止になったけど.

やっと見れましたパトリオット・ミサイル.一昨年の展示から (多分) 唯一増えた展示.
初めて知ったけど,この基地の割と近くに別の地対空ミサイル部隊の基地があって,そこのが出張してきているみたい.

全然関係ないけど,このムゥイィィィンって音聞くと,エイリアン 2 のドロップシップを思い出すわ.

あとは,まぁ…いつものw

と思ったら,前回は見ずに帰った捜索救助訓練展示 (要はヘリで吊り下げて救助するデモ) というのを初めて見たけど,これが結構すごい.
ビデオだと小さめにしか映らないので伝わりにくいけど,結構近い (30m くらい?) ところでホバリングしてるのですごい迫力だった.

2014年4月20日日曜日

DD-WRT でゲスト用 WiFi AP を作る

訳あってゲスト用 WiFi アクセスポイント (WAN とは繋がるが LAN の他機器とは繋がらない AP) を作ることにした.といっても物理的な WiFi ルータを増設するわけではなく,DD-WRT なら仮想 WiFi I/F を作れるので,設定だけで下のようなネットワークを構成できる.
WAN--DD_WRT-+-有線,WiFi I/F [192.168.0.x/24] ←本来の LAN
            +-仮想 WiFi I/F  [192.168.1.x/24] ←ゲスト用 WiFi
というわけでここを見ながら仮想 WiFi I/F の追加と DHCP の設定までしたところで,本来の LAN から外に一切出れなくなった.参照ページの後ろの方に iptables の設定が載っているので仮想 WiFi⇔WAN 通信には iptables 設定が必要なのだろうけど,I/F 足しただけでなんで本来 LAN に影響が出るんだ? と思って,iptables -nvL してみたら,
root# iptables -nvL
Chain INPUT (policy ACCEPT 46 packets, 4591 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 28 packets, 1912 bytes)
 pkts bytes target     prot opt in     out     source               destination
root#


ルールがカラなうえ,default が全部 ACCEPT とかもうね.内から外に出られないばかりか,外からは丸見え状態www
なんか仮想 WiFi I/F 足しただけで,iptables の設定はすべて吹っ飛ぶのね…

というわけで昔 Linux でルータ組んだ時のことを思い出しつつ下のような iptables スクリプトを組んだ.
長ったらしいけど,キモは FORWARD チェインのところで,*->WAN, WAN->* のパケットを先に ACCEPT なり DROP なりした後,ゲスト LAN->*, *->ゲスト LAN のパケットを全破棄すれば,「ゲスト LAN は WAN しかアクセス出来ない」ということが実現できる.
#! /bin/sh

WanIF=ppp0              # WAN I/F
LanIF=br0               # 本来 LAN I/F
LanGstIF=ath0.1         # ゲスト WiFi I/F
LanIP=192.168.0.0/16    # 本来 LAN とゲスト LAN をカバーする IP アドレス・マスク

echo 1 > /proc/sys/net/ipv4/ip_forward

### local service ############################################################

State(){
    iptables -A $1 -m state --state ESTABLISHED,RELATED -j ACCEPT   # 接続済みを許可
    iptables -A $1 -p tcp ! --syn -m state --state NEW -j DROP      # おかしいパケットを廃棄
}

# ポート開放用のサブルーチン
OpenLocalPort(){
    iptables -A WanIn -p tcp --dport $1 -j ACCEPT
}

# ポートフォワーディング用のサブルーチン
PortForward(){  # sport, dip, dport
    iptables -t nat -A PREROUTING -p tcp -i $WanIF --dport $3 -j DNAT --to-destination $2:$3
    iptables -A WanInFwd -p tcp -d $2 --dport $3 -j ACCEPT
}

### Flush & Reset ############################################################

iptables -F
iptables -t nat -F
iptables -X

### WAN in/out filter ########################################################

# WAN->lo 入力フィルタ
iptables -N WanIn
OpenLocalPort 80                        # ポート開放例
iptables -A WanIn -j DROP

# WAN->どこか (FWD) 入力フィルタ
iptables -N WanInFwd
PortForward 21211 192.168.0.13 21211    # ポートフォワーディング例
iptables -A WanInFwd -j DROP

# WAN へ出力フィルタ
#  ローカルアドレスを外に出さない
iptables -N WanOut
for ip in 10.0.0.0/8 176.16.0.0/12 192.168.0.0/16 127.0.0.0/8; do
    iptables -A WanOut -d   $ip -j DROP
done

# SMB 関係のパケットを外に出さない
for port in 137:139 445 111; do
    iptables -A WanOut -p tcp --dport $port -j DROP
    iptables -A WanOut -p udp --dport $port -j DROP
done

iptables -A WanOut -j ACCEPT

# ゲスト LAN からの入力フィルタ
#  ゲスト LAN からルータの http サーバや SMB サーバにアクセスさせない
iptables -N LanGstIn
for port in 80 8080 22 137:139 445 111; do
    iptables -A LanGstIn -p tcp --dport $port -j DROP
    iptables -A LanGstIn -p udp --dport $port -j DROP
done
iptables -A LanGstIn -j ACCEPT          # Guest LAN->lo を許可

### Deafult Rule #############################################################

iptables -P INPUT ACCEPT
State INPUT                                 # ステートフルパケットフィルタ
iptables -A INPUT -i $WanIF -j WanIn        # WAN->lo を filter
iptables -A INPUT -i $LanGstIF -j LanGstIn  # ath0.1 からのパケットフィルタ

iptables -P OUTPUT ACCEPT
State OUTPUT                                # ステートフルパケットフィルタ
iptables -A OUTPUT -o $WanIF -j WanOut      # lo->WAN を filter

iptables -P FORWARD ACCEPT
State FORWARD                                       # ステートフルパケットフィルタ
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -i $WanIF -j WanInFwd           # WAN->*   を filter
iptables -A FORWARD -o $WanIF -j WanOut             # *  ->WAN を filter
iptables -A FORWARD -i $LanGstIF -j DROP            # Guest->* を DROP
iptables -A FORWARD -o $LanGstIF -j DROP            # *->Guest を DROP

# NAT
iptables -t nat -A POSTROUTING -s $LanIP -o $WanIF -j MASQUERADE

2014年3月16日日曜日

ひとりでできるもん

ようやく暖かくなってきたので,オイル交換とブレーキフルード交換を行った.
で,ブレーキのエア抜きって (やり方が悪いのか) 2人でやっても,結局ブリーダーバルブのネジ部分からエアを吸ってエア抜きに成功した試しがない.なので今回は新兵器 (年末にエリパで買った EEZIBLEED なるワンマンブリーダー) を投入.

これはよくありがちなブリーダーバルブ側から負圧で吸い出したり,またはワンウェイバルブを用いたものではなく (自分のスキルでは,これらの方式はブリーダーバルブからエアを吸ってアウト),リザーバタンクを空気圧で加圧して,タンク側からフルードを押し出す方式のやつ.

この方式だと (間違ってリザーバータンクを空にしない限り) プレーキラインに空気が入る余地がない.
変わってるのは,エアポンプとかチャリの空気入れとかで加圧するのかと思ったら,なんとスペアタイヤのエアバルブにつないで,それを圧力源とするというなかなか合理的な仕組みで,途中で圧力切れを起こすこともない.

タンクとスペアタイヤに接続してブリーダーバルブを緩めるだけなんで,一人でも超楽ヽ(´ー`)ノ

2014年2月9日日曜日

余裕の音だ、馬力が違いますよ


カートで走ってきたので久々に動画 up.
久々に 6人集まるかと思ったら,一人は寒いとか言って出場拒否,もう一人は名神上で早すぎるマシントラブルでリタイアwww

レースの方は,コーナーで差されてストレートで抜き返すという自分としてはレベルの低いレースをしてしまったがw,まぁ楽しかったのでよしとしよう.

2014年2月8日土曜日

Desire + KitKat

この期に及んでまさかの Desire ネタ.

Desire に Android4.4 (KitKat) が入れられることがわかったので,入れてみた.
もうすぐ 4年落ちの端末に最新 OS を入れるのは一見無謀に思えるけど,KitKat は非力な端末にも最新 OS を入れることに主眼を置かれて開発されたので,Desire でも期待が持てる.

入れたのは Evervolv の nightly build の 2014.02.07 版,
Google apps はこれには含まれていないので,Nikes の [KK] GApps Core - 2013/11/24 を入れた.
これらのインストール・初回起動後にここを見ながら a2sd を有効に設定.

で無事インストールが完了したのでしばらく使ってみた.
なんか普通に使えるw
心配していたハード的な不具合もなく,カメラ・GPS・WiFi・SMS 等も普通に動いた.
ただし Google マップや Chrome 等,重めのアプリで多少もっさり感は否めない.まあ入れた ROM 自体がまだ開発途中なので,今後のアップデートに期待.
長期的な安定性とか,バッテリの持ち具合なんかはこれから調べてみるつもり.

←お約束のツーショット.

しかし,さすがはグローバル展開機種,こんなに古い機種でも最新 OS を移植してくれる人がいるとはありがたいヽ(´ー`)ノ.IS01 が一瞬で寿命を迎えたのとはえらい違いだ.