Categories: "Programming" or "Erlang" or "Java" or "デバッグ"

2014/09/06

  14:43:00 by , Categories: Freesoftware and Open Source Software, Linux, Programming, Devops

Link: 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できます。やったー。

2013/09/15

分散タイルサーバを実現する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が生成された複数の凸多角形のデータです。

2011/12/24

2010年の上半期に、国際化の開発に協力したOSSプロダクトのひとつに、nixnote(旧Nevernote)がある。

Evernoteクライアントのフリークローンで、Java+QtJambiで書かれていて、プラットホームニュートラルに動く。そのころ、KoedoLUGで、紹介したことがあった。しばらく、開発協力した本人も使うことが無くなっていたのだが、KoedoLUG主宰のはとちゃんが地道に使い続けてくれていることが判明、ちゃんとみないと遺憾な、とgit repositoryをおいかけ直すことに。

ところで、この手のドキュメント管理ソフトウエアでは、全文検索のできがとても重要である。nixnoteは、データ保管には、H2 Database を使っている。H2は、Javaで実装されたオープンソースのDBMSである。

さて、nixnoteでは、設定可能な正規表現 [,\\s]+ で単語を切り分けて、インデックスを作成している。ご多分にもれず、これでは日本語の検索ができない。日本語などCJK言語の単語切り分けは、正規表現では表現できず、形態素解析を必要とするからだ。

さて、H2データベースには、内蔵の全文検索が2タイプあり、ネイティブとLucineによるものがある。Apache Lucineは有名な全文検索エンジンで、これを使うように改良できれば、nixnoteの機能も向上させられそうだ。そこで、H2データベースのLucineによるCJK全文検索をしらべると、H2追っかける日記にて全文検索を使う話が掲載されていた。

ということで、nixnoteのこの部分を改良する人、募集中なのである。(自分でやれ?)はとちゃんが、がんばれ!?

2011/01/16

  13:12:00 by , Categories: Freesoftware and Open Source Software, OpenOffice.org, Java, Ubuntu

Link: http://ubuntuguide.org/wiki/BigBlueButton#Install_BBB_.3C-.3E_Moodle_API

BigBlueButtonは、APIを持っており、CMSなどと連携させることができる。

デフォルトでは、APIのデモページがあり、JSPによる具体的な利用方法を理解することができる。

人気のあるCMSといえば、Joomla!やDrupalがあるし、BBBは教育用途を意図して作られているところもあるので、Moodleも考慮に値するだろう。

このページでは、MoodleとDrupalについて、連携方法を示している。

Drupalとの連携については、
http://drupal.org/project/bbbで、すでにモジュールも用意されている。

Moodleの連携については、 http://www.dualcode.com/bigbluebutton/に、プラグインが提供されている。

活用してみようと思う。

2010/05/23

Link: http://andymatuschak.org/articles/2008/05/07/more-on-launchpad-bazaar-vs-lighthouse-github/

最近、gpxviewerというアプリケーションをいじっている。これは、GPXファイルの管理を行う上で、容易に地図上でどこをトレースした物かを表示してくれる。
Python + GTKでかかれており、小さく、最低限必要な機能を満たしている。
多数のGPXファイルがあると、JOSMで開いて確認していくのでは、少々手間がかかりすぎる。また、できればファイル管理ソフトウエア(nautilus) から簡単に起動できた方がいい。

これは、まだリリースして日が浅く、コードベースも小さいので、こういった用途に向けて改良するには、ちょうどよかった。
わたしの改良点は、Githubリポジトリにおいてある。すでに、作者にパッチを送っており、gpxviewer on launchpadから最新のコードを入手できる。
5月に入ってから、7つのコミットに関わる貢献をしている。

さて、作者のAndrew Geeさんからは、BazaarをつかってLaunchpadにブランチを開いてくれ。そしたら、マージもレビューも簡単だ、といわれている。たしかに、bazaarを使ってlaunchpad からコードを入手して開発しているが、bazaarはその使い勝手が気持ち悪くて、git-bzrをつかって、(たとえば、git-bzrの使いかた),gitにインポートして開発し、ブランチの歴史をきれいにしてから、git format-patchを用いてパッチを生成して送っている。送ったパッチをそのままインポートしてくれれば、リポジトリに取り込むときに面倒はないのだけれども、Andrewは(bzrにそんな機能はないのかもしれないが)、パッチをあてて適当なコメントをつけてupstreamにマージをするので、パッチを送った後は、upstreamの最新から再度ブランチを切って作業をする羽目になる。

そもそも、プロジェクトのオーナーがlaunchpad+bazaarを使っているのだから、選択するのはオーナーだ。それに不満はない。けど、開発する方は、使いたい奴を使いたいではないか。

閑話休題

その選択にあたっても、プロジェクトオーナーは、pros/consがあって悩ましいはず。launchpadのサイトとしての機能はすばらしいが、bazaarよりgitのほうが使いやすいじゃん。という悩みをこの記事では吐露してくれているのである。

2009/06/05

  20:29:00 by , Categories: Freesoftware and Open Source Software, Linux, 書籍, デバッグ

Link: http://www.informit.com/store/product.aspx?isbn=0131492470

実践デバッグ 技法」を眺めていて、改めて「DEBUG HACKS」を眺めていたところ、書棚に標記の「Linux(R) Debugging and Performance Tuning」が転がっていることに気がついた。本書は、大学院でのOSの授業で、参考書として紹介したことがある。

  1. Bottleneck identification
  2. Code coverage
  3. Debuggers: gdb, kgdb, and KDB
  4. Memory management
  5. /proc kernel data analysis
  6. System process monitoring
  7. Network performance
  8. Oops bug messages
  9. Syslog and event logging
  10. Execution traces
  11. Profiling kernel behavior
  12. Cache misses
  13. User-Mode Linux
  14. Dynamic probes
  15. Crash dump analysis

といった内容で、ユーザプログラムとカーネルとバランスよく取り上げている。

  • gprof, kprof
  • gdb,ddd, insight
  • electric fence, valgrind
  • ps,pgrep,top,strace,lsof,tcpdump,ethereal
  • syslogd,ksyslog,
  • ksymoops,LTT,oprofile,crash,UML
  • Kprobe,Dprobe
  • kgdb,kdb,LKCD,NetDump,diskdump

など、幅広く網羅している。2005年の出版時点では、この網羅状況はすごいとおもう。現在であれば、
LKCD,NetDumpの代わりに、kexec/Kdumpははずせないし、Kprobeではなく、SystemTAPにふれたいところ。でも、このような内容では、事例ベースの「DEBUG HACKS」と双璧をなす、とおもう。
SAFARIで、オンラインで読めるので、興味が有ればお試しあれ。

人気ブログランキングへ

2009/06/03

Link: http://www.oreilly.co.jp/books/9784873114064/

O'Rellyから、デバッグ最新刊、「実践 デバッグ技法」がでる。これは、The art of Debugging with GDB, DDD and Eclipseの訳本だ。
いわば、デバッグ三部作(?)の三部目だ。一部目は、「GDBハンドブック」とすれば、二部目は5月に刊行された「DEBUG HACKS」そして、「実践 デバッグ技法」である。なんと、いただきました。

推薦の辞を、DEBUG HACKSをまとめた吉岡氏が寄せている。

彼はふれていないが、DDDを取り上げているのに、XemacsでのGDB利用にほぼふれていない。でも、vimにふれているあたり、こだわりを感じる内容である。

興味を持った御仁には、1999年くらいのアスキー出版局「GDBデバッギング入門」やそのオンラインドキュメント、新バージョンなら、GDB6.8対応 9版を読まれると良い。折しも、このは、昨日2009年6月1日にリリースされたばかりである。

Book cover

::

April 2017
Sun Mon Tue Wed Thu Fri Sat
 << <   > >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
A blog about social, software and technology by Hiroshi Miura, aka momokuri, who are working for Free/Libra/Open Source Software over 10 yrs.

Search

  XML Feeds

blogging software