State of the Map JAPAN 2014 CFP締め切りは今週末

著者: momokuri  

リンク: http://stateofthemap.jp/2014/

State of the Map JAPAN 2014が、12月13日(土曜)に東京大学の駒場キャンパスで開催される。
多くの来場者と講演が予想されるため、開始時間が11時に早められることになった。

講演枠のCFP(Call for presentation)が現在行なわれており、今週末18日に締め切られる。

はじめての日本だけのSotM開催とあり、技術解説、ビジネス活用、自治体での活用や期待、防災などの発表が行なわれる見込みだ。

11月にはライトニングトーク枠の募集が行なわれ、全国のコミュニティ活動について、報告される。

http://stateofthemap.jp/2014/cfp/

サイトで会員登録すると、プロフィールを登録するダッシュボードが表示される。
そこで、プロフィールを登録すると、CFP提出メニューが現れる。
すべてWebブラウザで完結するので、ぜひ気軽に提案してほしい。
講演は、Q&A含めて、15分または20分枠となっている。

vagrantで作業中に、scpしたくなったら

著者: momokuri  

リンク: http://minimul.com/ssh-and-scp-into-a-vagrant-box.html

Vagrantは便利ですね。
vagrantで作業中にscpしたくなることがあります。virtualboxやkvmなど、ローカルのVMの時は、そんなに面倒ではありません。
しかし、AWSプロバイダーのようにクラウドを使っている場合、アドレス等が決め打ちできないので、面倒デス。

そんな時は、vagrantでssh設定を生成すればいいのです。


vagrant ssh-config > ./vagrant.ssh.config
scp -F vagrant.ssh.config default:/etc/httpd/conf.d/ssl.conf ./

このようにすると、いちいちインスタンスのIPアドレスを調べなくても、SCPできます。やったー。

AWSにSSHログインでToo many authentication failuresエラー

著者: momokuri  

リンク: http://theandystratton.com/2012/ssh-returns-too-many-authentication-failures-error-hostgator

リンク先の記事のおかげで、問題が解決した件を記します。

情報セキュリティに敏感になってきたので、漏洩リスクを下げるために、SSHキーを使いわけるようになりました。
Publicキーについても、GithubやAWSなど、登録するサービスが有るのですが、別々にするようにしています。

そしたらですね、エラーがでるようになりました

Too many authentication failures for username

なぜそうなるかというと、Gnomeの環境では、.sshの下にあるSSHキーを、ログインのときにすべてssh-agentに登録するわけです。
sshログインの時は、ssh-agentに登録されているキーを順次適用してログインできるか試します。
あまりたくさんのキーが.sshの下にあると、上記のエラーになるというわけです(たくさんと言っても、5ことか6こでエラーになります)

Amazon Web Service EC2を使うと、ログイン用のKey Pairを、Webから創ることができます。
sshコマンドで、 -i オプションをつけることで指定できる、とされています。

しかし、上記のような事象が起こる環境ですと、-i オプションにつけた鍵を試す「前に」,ssh-agentに登録された鍵を試してエラーになっちゃうので、ログインできないという事象が起こります。

そのため、ここ1週間くらい、ちょっと悩んでしまいました。(調べる余裕なかったし)

でも割合簡単に解決しました。

全投稿 »

ポリゴン処理

著者: momokuri  

分散タイルサーバを実現するTileManプロジェクトで、つかうため lua-nginx-osm ライブラリというのを、コアライブラリとして開発しています。

この中で、次のような機能を実現しています。

  1.  ポリゴン指定した地域をデータとして持っている。
  2. タイルサーバで、タイル要求されたX/Y/Zoomについて、 そのタイルが、(1)の地域に含まれているかどうかを判定する。
  3. 含まれている場合、タイルを生成する。

地域データは、geofabrikのデータを意識しています。

DBとして、特定の地域のデータだけPostGISに持っておいて、タイル要求がきたときに、それがDBに入っていればレンダリング実施、そうでなければ、アップストリームのtile.openstreetmap.orgへ要求、みたいな処理を実現しています。

typical configuration of tileman

これは、他の製品でもありそうな機能ですよね。

さて、上記の処理を行うために、is_inside_regionという関数を定義しました。計算速度を上げるために、
簡易なアルゴリズムを採用しました。ポイントは以下です

res = (y1 - y2) * nx + (x2 - x1) * ny + x1 * y2 - x2 * y1

(x1, y1) (x2, y2) は、地域を指定するポリゴンの一辺のベクトル
(nx, ny)は、判定するタイル要求の位置

上記は外積をとっており、全ての辺について判定して、すべて負でなければ、
すべての辺の内側に、判定するタイル要求の位置があることが分かります。

しかし、この判定ロジックには、弱点があり、比較するポリゴンは、かならず
convex polygon (凸多角形)である必要があるのです。

そこで、たとえば japan.kmlのような凹凸多角形(concave polygon)を凸多面体に分割することにしました。
単純なケースでは、手作業でも可能ですが、複雑になると、手作業では不可能になります。

このような問題は、計算幾何学で研究されていて、素晴らしいライブラリがすでに提供されています。
例えば、アルゴリズム設計マニュアルの下巻には、第17章計算幾何学の中に、17.11多角形分割 として解説されており、CGALというライブラリがつかえることが記されている。また、上記の判定についても、17.7 点位置決定で詳細に書かれている。

そこで、CGALを用いて、ポリゴンを複数の多角形に変換し、LUAのプログラムを生成するようなユーティリティプログラムを書くことにしました。

$ git clone https://github.com/miurahr/lua-nginx-osm.git
$ cd lua-nginx-osm
$ apt-get install libcgal-dev cmake make
$ make

これでプログラムが生成されるはずです。実行は、

$ utils/poly2lua/poly2lua -t

ここで(-t)をつけると、テストモードで、内蔵の日本の定義データを元に、複数の多角形(緯度経度)を示すデータを生成します。
また、osm/data/*.kml が元データで、 osm/data/*.luaが生成された複数の凸多角形のデータです。

貧乏になるということ。

著者: momokuri  

リンク: http://d.hatena.ne.jp/monyakata/20130105/1357342795

会社やめていないけど、しまむらとユニクロを来て、忘年会と新年会の出費と投資対効果を考えている自分は、貧乏根性が板についてきたかしら...

時間コストと、移動コストと、市場価格を計算しながら買い物するのは貧乏だからかというと、仕事での購買でも同じようなことをやっていることに気づいたり。購買の見積もりと市場価格を睨みながら、人件費(時間コスト)と効果を比較して決定していく。

世の中の企業で、利益を上げているところは、結構シビアにやっていると思うのだが、家計でもやったらいいんだろうと思う。安ければいいではなくて、時間との見合いではあるけどね。

あ、そうそう。自由であることは、コストのかかることだよね。 会社やめて900万円減で、"自由"になったという事は、平日平均10時間を年間200日自由にしたとして、一時間あたり4500円で(みなし)買ったという事だ。 つぎに自分の時間を、会社か顧客に売るまでは。:)

もしかしたら大変な贅沢かもしれない。

Linux kernel Hyper-V and Virtual-PC detection

著者: momokuri  

Recent kernel detect MS Hyper-V and use VMBUS technology for disk access. It works fine on Hyper-V VMM but kernel mis-detect Virtual-PC on Windows 7. Because there is not VMBUS technology in Virtual-PC, so kernel cannot find root disk and fails to boot. Kernel should detect Virtual-PC than Hyper-V. It is known that Hyper-V has a bios vendor name 'VRTUAL' now but it is easily changable. Patch is as follows: /drivers/ata/ata_piix.c
static int prefer_ms_hyperv = 1;
 module_param(prefer_ms_hyperv, int, 0);
 
 static void piix_ignore_devices_quirk(struct ata_host *host)
 {
 #if IS_ENABLED(CONFIG_HYPERV_STORAGE)
 	static const struct dmi_system_id ignore_hyperv[] = {
 		{
 			/* On Hyper-V hypervisors the disks are exposed on
 			 * both the emulated SATA controller and on the
 			 * paravirtualised drivers.  The CD/DVD devices
 			 * are only exposed on the emulated controller.
 			 * Request we ignore ATA devices on this host.
 			 */
 			.ident = "Hyper-V Virtual Machine",
 			.matches = {
 				DMI_MATCH(DMI_SYS_VENDOR,
 						"Microsoft Corporation"),
 				DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
+				/* DMI_MATCH(DMI_BIOS_VENDOR, "VRTUAL"), */
 			},
 		},
 		{ }	/* terminate list */
 	};
+	static const struct dmi_system_id find_virtual_pc[] = {
+		{
+			.ident = "Microsoft Virtual-PC",
+			.matches = {
+				DMI_MATCH(DMI_SYS_VENDOR,
+						"Microsoft Corporation"),
+				DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
+				DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
+			},
+		},
+		{ }	/* terminate list */
+	};
 	const struct dmi_system_id *dmi = dmi_first_match(ignore_hyperv);
 
 	if (dmi && prefer_ms_hyperv) {
-		host->flags |= ATA_HOST_IGNORE_ATA;
-		dev_info(host->dev, "%s detected, ATA device ignore set\n",
-			dmi->ident);
+               if (!dmi_first_match(find_virtual_pc)) {
+			host->flags |= ATA_HOST_IGNORE_ATA;
+			dev_info(host->dev, "%s detected, ATA device ignore set\n",
+				dmi->ident);
+		}
 	}
 #endif
 }
The patch is not tested and just a concept to fix problem. You can escape the problem with kernel option 'ata_piix.prefer_ms_hyperv=0'.

Ubuntu 12.04(LTS)で、Evernote(WINE上のWindows版)の同期が失敗する(続報)

著者: momokuri  

リンク: http://bugs.winehq.org/show_bug.cgi?id=30598

先日、レポートしたEvernoteがUbuntu12.04で動かないよ、という件だが、その後、OpenSSLの問題だというのは濡れ衣で、OpenSSLが TLS1.1/1.2をサポートするようになったけど、WINEでそのあたりをうまく取り扱っていないことが、問題の発端であることがわかった。

すでに、
http://source.winehq.org/patches/
http://source.winehq.org/patches/data/89343

提案をして、議論しているところだ。
ぜひ、パッチをレビューしたり、さらなる改善を提案したり、動作試験をしたりしてほしい。
http://permalink.gmane.org/gmane.comp.emulators.wine.devel/91356

1 3 4 5 6 7 8 9 10 11 ... 52