Hatena::ブログ(Diary)

hogemanのコアダンプ(´皿`;)

  ∧_∧   |ここは俺の日記帳なんだ
 (´・ω・`) / チラシの裏とでも思ってくれ
 ( つ旦O   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 と_)_)  旦 ドゾー
2004 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 07 | 09 | 10 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 08 | 09 | 10 | 12 |
2013 | 01 | 02 | 03 | 10 | 11 | 12 |
2014 | 01 | 04 | 10 |
2015 | 01 | 07 |
 

2015-07-03 最近インフラしかやってない気がする

Nuleculeをぐぐったら『もしかして:ヌレヌレ』。ありがとうございます、でも今知りたいのはそっちじゃない。

トラックバック - http://d.hatena.ne.jp/hogeman/20150703

2015-01-04 喪中のような気がする

戸籍上はまだ生きてる

12月8日に父が亡くなった。父は日本と国交のない国に住んでいたため書類をそろえるのが非常に面倒くさい。父の死亡届を出そうとしたけど尼崎市役所書類に難癖つけられてリジェクトされ、こんどは書類を変えて年末地元市役所に出してみたけど、結局尼崎送りとかでまだ受理されてない。つまりバーチャルにはまだ生きてることになってる。

受理したかの連絡もないとのことで1月中旬ごろにこちらから尼崎市役所確認しろとのことで、まだ予断を許さない感じ。

このあと死亡届受理火葬許可証→埋葬許可証っていうのが正常フローらしいけど、故人を飛行機に乗せるために現地で火葬してきたから死亡届より先に手元に遺骨がある状態なんだけど、これどうしよう。

悲しんでる暇なさすぎ

現地の葬式で、日本語英語も通じない遺族(血縁はない)に調子よく「遺族年金が受け取れるように日本手続きしてきたる!」って後先考えず宣言してきたけど、エンディングノートとか書いててくれてなかったからどこから請求できるのかもわからんし、必要書類がいちいちi18nしてない。すげーたいへんです。

トラックバック - http://d.hatena.ne.jp/hogeman/20150104

2014-10-30 Google Maps APIにサインイン機能が付いてら

別々のサイトアプリ間でもPOIとか共有できちゃうと便利じゃね?ってことみたい。最近Google Maps APIに興味ひかれる拡張がなかったけど、こういう横方向に夢がひろがりんぐ系な変更はどんどんやってほしい。

トラックバック - http://d.hatena.ne.jp/hogeman/20141030

2014-04-05 モーサイは良い雑誌

八重洲出版の読者プレゼントは偽装じゃない!

めったにバイク雑誌とか買わないんだけど、モーターサイクリスト誌を買った。付録イベントカレンダー目当てで、初めて。

それでなんとなく読者アンケートはがき出してみた。

f:id:hogeman:20140405231243p:image

f:id:hogeman:20140405231240p:image

カウルナポレオンミラー左右+Ninja250('13〜)用アダプター!

買えば6000円x2(左右)+アダプター2000円+税=15120円もするっす!偽装当選とかエアプレゼント蔓延るこのいかれた時代八重洲出版△!!

クラッチ側がナポレオンミラースロットル側は純正

f:id:hogeman:20140405231338p:image

f:id:hogeman:20140405231337p:image

両方つけるとこんな感じ。

f:id:hogeman:20140405231409p:image

ナポレオンミラーの適合表には'13以降のZX-6Rは載ってないす。ただしNinja250には別売りアダプタ経由で適合するとのこと。Ninja250とZX-6Rのミラー部品番号違うけど見た感じ互換っぽいからNinja250用のミラーアダプター試したらOKだった。若干ミラーステーが短くてミラー位置も下がるけど視認性は合格点。格好も悪くないと思うけどどうだろ。

あえて欠点を探せば、ナポレオンミラーはステー部分が亜鉛ダイキャストなんで結構重い。純正アルミでステーも極薄で滅茶苦茶軽い。最近カワサキ車はホンダなどと違って純正ミラーの格好もいいからどっち常用するか悩む。

トラックバック - http://d.hatena.ne.jp/hogeman/20140405

2014-01-19 ZX-6Rのテックスペック

(間違った)張り方の補足説明

テックスペックだが、〜'12モデル用と、'13以降用で別の品番になってる。国内代理店で取り扱いがあるのは、前者は4ピースタンクフレームカバー)、後者は2ピースタンクのみ)しかないので要注意。

うっかり者なんで当然よく確認せずに'13用オーダーしたら2ピースタンク用)がきたでござる。

f:id:hogeman:20140119122430p:image

タンクの緑の部分が減るの嫌だからタンク用をフレームカバーに張ってみたけど意外としっくりきてる(足短いですが何か)。

両方に張りたい人は、本国からピースのを個人輸入するか、〜'12用買えば問題ないと思う。〜'12用は若干フレームカバー部分のパッドが小さいようだけど、曲面のせいで空気入れずに張るの難しいからむしろそっちのほうがいいかも。

トラックバック - http://d.hatena.ne.jp/hogeman/20140119

2014-01-01 ニューイヤー、ニューマシン

トライアンフ(手前)からカワサキ(奥)に乗り換えた。Ninja ZX-6R 2014。

f:id:hogeman:20140101173306p:image

実は第一便予約してたんで11月には入ってて、とっくに慣らしは終わってるんだけど。

見た目に反してとにかく静かでトルクも太くて乗りやすいバイクアイドリング調整スクリューも標準でついてるからエンスト知らず。八の字やUターンはたまにHMSで乗るCBR600RRよりもやりづらい気がする。ハンドル角度とかの問題か新車でびびってるからか。

タンクパッド張った

ZX-6Rは〜'12モデルまでは純正オプションタンクパッドの設定があったけど、'13〜以降には設定がない。通販サイトとかだと'13〜以降にはつかないとか注記してるとこもあるけど、タンク形状は変わってないので実際には〜'12用でOK。サイズがでかくて張りなおししづらそうなんできちんとセンター出して・・・

f:id:hogeman:20140101173305p:image

水張りした。

f:id:hogeman:20140101173303p:image

写真ではきれいに張れてるように見えるけど、サイズがでかい上に透明だから気泡やホコリ入ると目立つ目立つ。まじ気合入れて張ってください。

エアバッグハーネスつけた

フレームカバーがついてるせいでヒットエアのハーネスつける場所が少ない。さいわい、トップブリッジの裏にボルト穴が開いてるからここにつける。

f:id:hogeman:20140101173302p:image

近所のホムセンで、金具(鉄)\159-、亜鉛メッキワッシャ\6-、M6キャップボルト(鉄)\22-を2セット買ってきた。

f:id:hogeman:20140101173301p:image

トップブリッジのこの裏あたりにM6の穴が開いてるからここに締め付ける。電蝕とかは気にしない。

f:id:hogeman:20140101173259p:image

こうなった。ヒットエア装備して前傾姿勢とるとタンク上面ジョイント部がかちかち当たって小傷がつくけど気にするとハゲから見なかったことにする。気にする人はレース用の後ろ留めタイプのエアバッグのほうがいいと思う。

その他お勧め装備

ほかに絶対買ったほうがいいのはタンクの滑り止め。ノーマルだとフレームカバーがめちゃくちゃ滑るもんで革パン以外で乗るとブレーキングでち○こなんども切れそうになったからテックスペック張ったけど、これは絶対必要だわ。

早く春にならんかなあ。

トラックバック - http://d.hatena.ne.jp/hogeman/20140101

2013-12-30 ものぐさな人向きの位置データ置き場

※FOSS4G Advent Calendar 2013 参加記事です。

本当は別のネタ書こうと用意してたんだけど諸事情でオチを用意できなかった(?)ので、別の小ネタになってしまってごめん。そっちも後日書く。

AWSにPOIを入れる

趣味で位置データを配信されてる方は、昔は自鯖立てたりレンサバ借りたりしてたと思います。ここ数年は、物理サーバーを用意しなければならない特別な理由がない限りはAmazon EC2にPostGISとか入れて使うのが一般的だったと思います。サーバー構築だけでもまじめにやると1日はつぶれるので正直面倒くさかったです。

最近は、わざわざ自前でEC2にPostGISインストールしなくても、AWSで最初から地理情報を扱える方法が増えてきています。たとえば、

  • EC2でMongoDBプリインストールのインスタンスを動かす。
  • DynamoDBにオプションの地理情報ライブラリを使ってデータ出し入れする
  • RDS(PostGIS)使う

それぞれ一長一短あります。*1

利用の準備をしてみる

では、それぞれ使ってみます。

MongoDBの場合は、EC2のインスタンス作成のときに、"MongoDB" って入れてインスタンスを検索するとMongoDB入りのインスタンスが出てくる。

f:id:hogeman:20131230215326p:image

あとはインスタンスタイプ選んで起動ボタン押せばOK。ベースはAmazon Linuxなのでec2-userでsshログインして普通のec2インスタンスとして使えます。なお、標準ではmongodのインスタンスが起動してないようなので、

sudo chkconfig on mongod

とかしてください。ローカルのPCからつなぐには、セキュリティグループで27107ポートを開けてから、ローカルPCで、

pip install pymongo

して、ローカルPCのPythonでMongoDBが使えるようにしてから、Pythonの対話モードで

import pymongo
conn = pymongo.Connection('[EC2のホスト名]', 27107)

とか打ってエラーが出なければOKです。


DynamoDBの場合は、特に何の準備も要りません。いきなり使えばよいです。

やったぜ!といいたいところですけど、基本的にJavaのAPIでしか操作できないのでプログラム書かないことには何もできへんという・・・。


PostGISの場合は、RDSのインスタンス起動で"PostgreSQL"を選びます。

f:id:hogeman:20131230215327p:image

あとはいろいろ聞いてくるので適当に選択して"次へ"ボタンを押していきます。こっちはMongoDBの場合と違ってmicroインスタンスも選べるんで別垢作ってFree Tierで試すこともできてお得!。

初期状態ではなんもextensionが入ってないのでPostGISエクステンションを追加します。

すでにPCにpgAdmin3とか入ってる方は普通に接続してExtensionを右クリックでPostGIS追加できますよ。

f:id:hogeman:20131230215328p:image

2.1です。

f:id:hogeman:20131230215329p:image

データ入れる

手元にあるGeoJSONのデータ入れてみます。

MongoDBの場合は、Pythonの対話モードとかで入れるのが楽かと思います。GeoJSONのデータをテキストエディタ使って行頭行末を以下のように加工します。

前:{"type":"Point","coordinates":[135.874343,35.076685]}
後:src.append({"type":"Point","coordinates":[135.874343,35.076685]})

で、加工した行を、以下のスクリプトの指定箇所にコピペしてPython上で実行します。

import pymongo
conn = pymongo.Connection('[EC2のホスト名]', 27017)
gdb  = conn.geodb
gcol = gdb.geocol
gcol.ensure_index([('coodinates', pymongo.GEO2D)])
src = []
# この下にコピペする
gcol.insert(src)

データが入ったことを確認する場合はこんな感じで。

for data in gcol.find():
    print data


DynamoDBの場合は、Amazon提供のJavaクラスを使ってプログラム組んでデータ入れます。わざわざプログラム組むとかそのコードをここに延々張りつけるとかそんな面倒くさいこと年の瀬のこんな時期に(コードとかもろもろ略)。


気を取り直してPostGISの場合。GDALが入った環境をどっかに持ってればコマンド一発でデータ入れられます。普通はPostGIS入ってるインスタンスにGDALもある・・・はずなんですが、Amazon RDSの場合は直接インスタンスにsshログオンすることができないので、今回はSQLで入れてみます。

例によってGeoJSONのファイルをテキストエディタで加工してこんなSQLに変換します。

前:{"type":"Point","coordinates":[135.874343,35.076685]}
後:insert into testgeom (the_geom) values (ST_GeomFromGeoJSON('{"type":"Point","coordinates":[135.874343,35.076685]}'));

pgAdmin3のSQLウインドウで

create table testgeom (oid serial primary key, the_geom geometry);

した後にそのままコピペして実行すればOK。プログラム書く必要はありません。

PostGISは楽ちんだなあ。

表示してみる

QGISで表示してみます。

DynamoDBのQGISプラグインはないです。AmazonのライブラリがJavaベースなんで作るのもたぶん面倒。


MongoDBは一応QGISのプラグインあります。ただ、多くの人が使っているであろうWindows版QGIS同梱のPythonにはMongoのドライバが入ってないので、別途インストールしたPythonからドライバを抜いてきてQGISのPythonに入れてやったりたりとか、まあ面倒ではあります。


PostGISは何も考えずににレイヤ追加ボタン押すだけで表示されます。

f:id:hogeman:20131230215330p:image

簡単だなあ。

結論

プログラミングなしで位置データを使いたければ黙ってPostGIS使っちゃいなよ!

PostGIS以外も機能的なことや周辺ツールについては改善されていくとは思いますが、実はMongoDBもDynamoDBも空間インデックスの内部実装はGeohashベース()なので、そのあたりが変わらない限りは、POIを矩形検索か距離検索する用途以上のことにはほとんど使えません。

結局、2013年時点でAWSで地理データを配信したい場合は、面倒くさがり屋さんや空間処理初心者こそPostGISを使うしかないということになります。

異論は受け付けません。*2

(ていうかCartoDBはこのきのこ先生?)

*1:ほかにも方法あるけどきりがないからこの3つを選んでみた

*2:スケーラビリティを気にする人やイベントストリームとして座標を扱いたい人は・・・お好きなように。データ量やスケール変えたときの性能とか、性能あたりの課金額とかの細かい検証をまとめてくれる人がいたらありがたく参考にさせてもらうけれど(もみ手)

トラックバック - http://d.hatena.ne.jp/hogeman/20131230

2013-11-01 ここは俺様のメモ帳

なんというか日記やブログ減りましたね。いまや「ブログ」っていったら「ネット掲示板の記事をまとめてアフィるもの」って感じですよねー。日記文化が滅ぶのを見届けたところで、あえて日記でMapServerネタです。しかも小ネタ。

MapScriptって便利だな

前の日記にもMapServerとGeoServerの使い分けを書いたりしましたが、MapServerを使ったほうが確実に楽できるシチュエーションのひとつに、たとえばプログラムロジックでオンザフライで作った地物を画面に出したいときなんかがあります。こういうのはMapScript使うと簡単に実装できます。ただ、地物を動的にclassifyしようとか欲を出すと公式ドキュメント見ただけじゃやり方がわからない人がおおいのではないかと思います。

たとえば

こういうMapFileがあったとします。"SENKAN" レイヤに置く点の種類、"KONGO_TYPE", "FUSO_TYPE", "NAGATO_TYPE" で違う見た目で表示したいと。

MAP
  # 略
  LAYER
    NAME "SENKAN"
    # 略
    TYPE POINT
    CLASS
      EXPRESSION "KONGO_TYPE"
      STYLE
        # 略
      END
    END
    CLASS
      EXPRESSION "FUSO_TYPE"
      STYLE
        # 略
      END
    END
    CLASS
      EXPRESSION "NAGATO_TYPE"
      STYLE
        # 略
      END
    END
  END
END

ここにMapScriptで動的に点を置きたい場合のコードは・・・

PHP MapScriptの場合

PHP MapScriptだとこんな感じだったかと。(最近書いてないので間違ってたらごめん)

$clsidx = 0                  # KONGO型の表示スタイルをもった点を作る
$coords = ms_newLineObj();
$coords->addXY($lon, $lat);
$feature = ms_newShapeObj(MS_SHAPE_POINT);
$feature->set('classindex', $clsidx);
$feature->add($coords);
$lyr->addFeature($feature);
$coords->free();
$coords->free();

KONGO型を選ぶには、CLASSの順番を指定すればいいのでーす。

知らないとちょっとわかりにくいですよね。

SWIG MapScriptの場合

基本的にMapScriptのオブジェクトモデルはSWIGもPHPもほとんど変わりないので、PHPのコードを機械的にPythonとかに置き換えればいい…はずなのですが。実際はこんなコードが必要です。

clsid = "KONGO_TYPE"        # KONGO型の表示スタイルをもった点を作る
point = mapscript.pointObj(lon, lat)
coords = mapscript.lineObj()
coords.add(point)
feature = mapscript.shapeObj(lyr.type)
feature.add(coords)
feature.initValues(1)
feature.setValue(0, clsid)
lyr.addFeature(feature)

最後にSetValueした値がCLASS EXPRESSIONと一致したスタイルがえらばれるのでーす。

・・・こんな仕様どうやってわかれと。

MapFile改二

わかってる人はドキュメンテーションが多少不明瞭でも困らないからか、いまだにアンドキュメンテッドなノウハウが要求されることがけっこうあります。最近はSTYLE定義をJavaScriptで動的制御できるように魔改造するRFCとかも出されてるようですし、MapFile先生のさらなる満艦飾化にご期待ください。

トラックバック - http://d.hatena.ne.jp/hogeman/20131101

2013-10-15 GeoServerの紹介の紹介

ちょっと前ですが、GeoServerの日本語紹介記事がIBMDeveloperWorksに出ています

GeoServer とその REST API を導入する

GeoServerとMapServerの使い分け

私はどっちも使ってますけど、JavaとCの文化の違いを感じます

OSSに詳しくない人にサーバー管理させたい場合GIS基盤的なものを作りたい場合シングルサインオンなどが絡む場合にはGeoServer選ぶし、慣れたひとだけで管理する場合、とにかくてっとりばやく構築したい場合、軽量言語スクリプティングしたい場合はMapServer選ぶかなー。

どっちもそれなりにバッドノウハウがあるので、お金取ってやるお仕事で構築する場合は悪いこと言わんのでプロ相談するのが早いとは思います*1

*1:よく自分バイクの整備をやるんですが、これも工具代や手間賃考えればプロに頼んだほうが安いとは思うけど、いろいろ試行錯誤して整備すること自体が面白いからつい自分でやっちゃうんですよね。そういうのを楽しめる人ならぜひ自力でがんばって

トラックバック - http://d.hatena.ne.jp/hogeman/20131015

2013-10-13 生きてる

どっこいいきてる。

最近いそがしくて、どらえもんの道具に頼りたいとか思ってたら、

f:id:hogeman:20131013220225p:image

リアルで「ぼくどらえんもん」になってしもた。

今はずっとマシな見た目になってて今週包帯取れる予定。

トラックバック - http://d.hatena.ne.jp/hogeman/20131013
 
あなたは311584人目の騙されて来た人です。ごめん。