最近WireSharkを使用することが多くなってきた。地図情報が送られてきているかの確認に使用することが多い。WireSharkとはWireSharkは高機能なパケット取得・プロトコル解析ソフトで、ネットワークに流れるパケット情報をリアルタイムで調査することが可能だ。ネットワークエンジニアには必須のツールであるといえる。※最も私はネットワークエンジニアではないがWireSharkは以下からインストールすることができる。https://www.wireshark.org/download.htmlインストール時に特に困ることはなかった(と思う)。起動すると、キャプチャしたいインタフェースを聞かれるので、ダブルクリックして起動する。キャプチャを開始すると、メイン画面に次々とパケットが表示される。フィルタリングたくさんのパケットが次から次へ流れてくるため、フィルタしないと見づらい。そこで、下記の表示フィルタに検索条件を入力して絞り込む。IPを指定して検索たいてい、確認したいパケットのSourceのIPやDestinationのIPが分かっていると思うので、それらを指定して検索。192.168.1.122ポートを指定して検索これもかなり使う。指定したポートで通信できているかを確認するときに使う。地味に使うことが多い。tcp.flags.ack==1以上です。2分C++で書いているけど、Cのソースコードを読み込みたいときがある。'a()'というエラーになってしまう。調べてみると、C++コンパイラは、マングル(mangle)と呼ばれる仕組みがあり、オーバーロードの実現のためなどに、引数の型やクラス・名前空間名を使って修飾された一意の名前を作成して、引き当てに使っているらしい。Cコンパイラはマングリングしないため、マングル前の素の名前になっている。それで引き当てに失敗してしまうということだ。対策としては、C++コンパイラに対して、Cの関数であることを明示し、マングリングしないようにさせる必要がある。そのためには、以下のようにするだけで、Cのソースコードを利用できるようになる。自分は英語が大っ嫌いだ。嫌いなのかは自分でもわからない。新しい英単語や文法を覚えるのは大っ嫌いだ。これまで英語にできるだけ関わらないように生きてきた。大学時代も最低限しかやってこなかった。社会人になってもほとんど英語を使うことなくやってきた。使うとしてもgoogle翻訳にすぐ頼って生きてきた。そんな自分が英語メインの会社に出向することになってしまった。こればっかりはサラリーマンなので、拒否することはできない。英語ができる意識高い系の人間になればいいのではないか?そうだ、英語をやろう!!ということで、英語を頑張ることにした。恥ずかしながら、最近になってようやくQGISを使い始めた。内製で作ったビューワーのほうが便利だと思って(信じて)あえてQGISを使わずに生活してきた。内製のビューワーでは、スクリプトを書く必要があったので、もっと簡単にできないかと思ったらQGISにたどり着いていた。他のビューワーの機能もみてみて、それを内製のビューワーに生かすのもいいなぁとも思ったので、QGIS3.0をWindowsインストールして、軽く使ってみることにした。その結果、めちゃめちゃ便利でびっくりした。なんということでしょう。画面上にベクトル地図が表示されるではありませんか!!QGISやるな。試してみたが、会社の環境では表示されなかった。いう時はたいていプロキシである。プロキシの設定プロキシの設定をしてみた。「設定」→「オプション」こちらに適切な値を入力。これでベクターも表示できるようになると思います。これが無料で提供されているとか、どゆこと!?さらにpythonでプラグインを追加できる模様。今後QGISの記事を書いていくかもしれません。地図を扱っていると、2点間の距離を計算することがよくある。平面上での2点間の距離は、学生時代に数学で習った式で計算することができる。それでは正確な距離とは言えない。地球の丸みを考慮した距離を計算したいときにはどうすればよいか。方法はたくさんあるが、最も簡単でそれなりの精度が計算できる、ヒュベニ(Hubeny)の公式を用いることが多い。詳細な計算式や概念は他のサイトを探せばたくさん見つかるためここでは割愛させていただく。以下のサイトはとても分かりやすい。私はC++を使っているため、C++でHubenyクラスを作成した。HUBENY_H使い方は簡単である。std::endl;計算すると以下の値となり、参考サイトと同じ値となった。an:57.678今度時間があればヒュベニ(Hubeny)以外の計算も試してみたいところ。