2014年10月16日

OpenLayers 3でOpenStreetMap上にピンを打つ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
OpenLayers 3を使って、緯度経度で指定したポイントやポイントを結んだ形の図形をOpenStreetMap上に表示してみた。
OpenLayersは2から3へのアップデートで結構変わってる上にドキュメントは微妙、日本語での解説は2ばかりという状況なので、色々と試しながらです。

問題点は
・OpenStreetMapは球面メルカトル図法(EPSG:3857)で描画される
・ポイントは緯度経度(WGS84/EPSG:4326)で示したい
・EPSG:3857とEPSG:4326のレイヤーは同時に表示できない

最終的には
format: new ol.format.GeoJSON({
    defaultProjection: 'EPSG:4326'
}),
projection: 'EPSG:3857',
みたいな感じで解決できました。

以下、ソースコード

GeoJSONの仕様は
http://s.kitazaki.name/docs/geojson-spec-ja.html
を参考に。

上記コード内では、textで直接GeoJSONを書き込んでいるが、実際はurlで外部からjsonファイルを引っ張ってくる使い方が一般的(のはず)。

ちなみに、Polygonは閉路になる順にcoordinatesを指定してしないと捻れちゃうので、その辺も要注意。
そういうのを踏まえて、投げられた複数のジオタグから凸包を描くようなGeoJSONを吐くプログラムを現在製作中...

2014年10月9日

X220にArch Linuxを入れた時の覚書

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

ThinkPad X220にArch Linux、Xfceなどを入れて諸々の設定を行った時のメモ。
地味に初Archです。#普段はサクッとFreeBSDをインストールする派

使用したX220は、Core i5 2520M 2.5GHz、RAM 4GB(2GB*2)、HDD 320GBという構成のモデルナンバー4290RW4、2011年春発売のモデル。
指紋センサーあり、カメラは無し、無線LANはCentrino Advanced-N 6205を搭載、液晶は非IPSで視野角狭めな感じの、ベーシックタイプ。
これのHDDをIntel SSD 320 120GBに換装して、Arch Linuxをインストールしました。

インストール自体は既にネット上に大量にある情報とほぼ変わらないが、
・UEFI+GRUB
・指紋認証
・ファンコントロール
・音量ボリュームキー他の有効化
の4つは結構大事な情報で、これらも含めてまとまっている情報が無かったので、ここに残すことに。


Chrome、Eclipse、Wireshark等々を入れて落ち着いた状態が↑これ
スッキリ、シンプルで非常に快適。

以下、インストール時に行った操作など、まとめ。

2014年9月28日

X230tのHDDをCT512MX100SSD1に換装

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

前回、新装整備品のThinkPad X230 Tabletを買った記事を書きましたが、今回はこれのHDDを512GBのSSDに換装した話。
今回購入したのは、割と評判が良くて安価なCrucial CT512MX100SSD1です。
CrucialはMicron Technologyのブランドなので信頼性は高いイメージ。

まずは、現在入っているHDDからSSDにデータを移行します。
これには、CT512MX100SSD1に付属しているAcronis True Image HDを使ってディスククローンしてあげればOK。


USB-SATAケーブルはaitendoの実店舗で980円くらいで売ってあった(気がする)もの。
2.5インチサイズまでしか電源の関係で駆動できないけど、1本持ってると便利。


Acronis True Image HDは現在稼働中のWindowsが入っているHDDにインストールして使います。
自身が入っているディスクをクローンする時は、再起動後に独自のシステムが起動してクローンしてくれます。

クローンが終了したら、スタイラスペンが収納されている側にあるHDDスロットカバーをプラスドライバーで開けて、ベロを引っ張り古いHDDを引き抜きます。
レールを外して同じようにSSDに付け替え、元の様にスロットに戻し、スロットカバーを閉めれば終了。

手順を何も間違っていなければ、電源ONで今まで通りの環境が立ち上がるはずです。

ちなみに元から入っていたHDDはHGSTのHTS545032A7E380でした。
リカバリディスク製作済みorリカバリ領域もクローン済みなら、初期化して外付けHDDケースなどに入れて使うのも良いかも。(ただし5400rpmなので読み書きは遅め)

2014年8月22日

新装整備品Thinkpad X230 Tabletを購入

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

発売当初から欲しかったThinkpad X230 Tabletを買いました。
開封済み・新装整備品でお値段は54000円(税込)で、色々遊ぶには最高なんじゃないかと考えてたらポチってました。

ThinkPad X230 Tablet - 開封済み・新装整備品 | 3436XF1 | Lenovo Outlet (JP)
http://shopap.lenovo.com/jpoutlet/itemdetails/3436XF1/445/628C87959CB248F78E23CB2244F4AEC9

実際に買ったのは1ヶ月くらい前だけど、色々追加したり環境整えたりする作業をダラダラやってたので今更まとめということで。

その1:無線LANカードが載ってない

無線系はBluetoothしか載ってないので、無線LANカードを買って増設しました。
アンテナ線は3本(黒、灰、白)来てるので、WiMAXのカードとか3本アンテナ必要なカードとかも刺せる。
ちなみに、WWAN用のアンテナ線も2本来てます。(青と赤)
WWANカードを載せないなら、mSATA SSDカード用に使える。(ただし、SATA2の速度までしか出ない)


買ったのはIntel Centrino Advanced-N 6205。
FRU品じゃないとBIOSで弾かれるので60Y3253という型番のカードを買いました。
お値段2158円。

その2:メモリ搭載量が少ない

流石に2GBは少ないので、換装します。
Lenovoのサイトには2GB (空スロット:0)と書いてあるけど、実際には2GBが1枚刺さってるので、トータル4GBでよければ2GBを刺すのもあり。


まぁ、ここは積めるだけ積んでおこうということで8GB*2枚の16GBを買いました。
お値段14796円。
#エルピーダが死んでから高騰が激しくて辛いですね...

ここまでで、トータル71054円。
来月辺りで320GBのHDDを512GBのSSDに換装しようと考えているので、最終的には10万円弱になりそうですが...
デジタイザ搭載マシンが欲しかった&VMでは無い純粋なWindows機が欲しかったので、どちらも達成できて満足。
Linux走らせて遊ぶだけなら無線LANカードを追加するくらいで十分そう。

ここ数年ずーっとMacしか買ってなかったので、バラバラ分解可能でバッテリーも取り外せるThinkpadが斬新すぎる。
特に最近のMacBook系なんてRAMまでオンボだし...

そのうちmSATAなSSDでも買ってLinuxとデュアルブートにしたいなぁ

2014年8月19日

桜島が噴火したYoの裏側

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

作ってから1週間くらい経ってますが、プログラムの紹介というか詳解というか...
実は初めてのJava Servlet(&Tomcat)だったんですが、Eclipseからwar書き出して置くだけでdeploy完了というのは素晴らしい。
#小5の頃にPerlでCGI書いて動いた時くらいの感動

で、実際の仕組みは...
  1. 気象庁からPuSH(PubSubHubbub)で来るfeedを受け取る
  2. entryをSAX(Simple API for XML)で解析する
  3. 桜島に関する情報(噴火 or 爆発第1報)の場合はYoを送信
という感じ。

気象庁が公開している気象庁防災情報XMLフォーマットについては、下記を参照。
http://xml.kishou.go.jp/open_trial/

PubSubHubbubは以下。
https://code.google.com/p/pubsubhubbub/

ここ↑にはJavaで書かれたSubscriber Clientsの紹介もあるのですが、こちらはServletじゃないです。
特にServletに対するこだわりは無いけど、最近Scalaとかに興味あるのでWebサービスを書く為のJavaを学んでおこうかと...

セキュリティ上の都合で全てのコードを公開できる訳ではないのですが、PuSHの購読&受信とfeedの解析部分は以下の様な感じ。
#例のごとく酷いコードなので参考までに...

上がSAXハンドラ、下がPuSHサブスクライバです。
#Gistってファイル単位でバラしてコード貼り付けできないのね... (今更

実際には、このSAXハンドラのpublic void characters内で「現  象:噴火」「第1報 現  象:爆発」がcontent要素内に含まれる場合に分岐させてYoを送るメソッドを呼んでます。
それと、これも上記コードには含まれてませんが、受け取ったfeedに記載された全てのxmlは取得&保存しています。
#つまり、天気予報とか天気概要とか注意報警報なども"現在は"使ってないけど、保存はしてるっていうこと。

先日のYoアップデートの際にURLの添付が可能になったのですが、これに伴って噴火の詳細情報をYoにくっつけて送るアップデートをしようかなぁっと。
現在フロントエンドを書いてる途中で、これの仕組みは、保存されたxmlをパースして表示するだけですね。はい。

これに並行して、WebSocketでpushを... なんてのも準備中。
PuSHはネット上からアクセス可能なサーバでしか受けられないので、これを転送したいなぁっと。
これができると、噴火したら火口が赤LEDで光る桜島オブジェなんてものも作れちゃう訳です。

そういえば2週間弱くらい大学行って研究してない気がするけど... アッ(