GDB で php プロセスの覗き見

phpGDBデバッグするのが便利。 以下のエントリで手法が説明されている

qiita.com

blog.anatoo.jp

stackoverflow.com

以降、私が書くのはこれらのエントリに書かれている手順を真似たものなので、詳細を知るにあたっては是非リンク先も読んでほしい

検証: GDB で実行中の php プロセスを覗き見る

GDB は実行中のプロセスを解析の対象とすることもできる。このエントリでは、無限ループするバグった phpGDB で覗いてみよう

続きを読む

Python + folium で Strava の "全"記録を地図で可視化 (2) - ヒートマップ編

hiboma.hatenadiary.jp

前回の続きで Strava の記録をヒートマップにする

ヒートマップをつくる

folium のプラグインでヒートマップも手軽に生成できることを知ったのでスクリプトを書いた。大したモノじゃないんだけど。

  • よく通るルートは目立つように
  • 滅多に通らないルートは控えめに

という可視化ができるんじゃないかと試行錯誤して、結果、なかなかビジュアル映えするものができて満足

サンプル1

過去の走行データを全てまとめてプロットすると よく走っているエリアが赤くなって表示される。練馬付近が真っ赤だ

f:id:hiboma:20170914154242p:plain

ズームレベルを上げると、どの道路を頻繁に通っているか色で判別できる

続きを読む

php の文字列連結時に呼び出される mremap(2), mmap(2)

イントロ

とある php なサービスを動かしている production サーバで、 100% CPUバウンドな php-fpm プロセスが複数いたので調査をしていた。

調べていた内容

strace を取ると、 mremap(2) をひたすら繰り返しているだけのプロセスだった。 gdb でphp レベルのバックトレースを採取 してソースコードと照らし合わせた読んだ所、アプリケーションのバグで以下のような挙動になっていた

  • ループの内部で文字列連結を行っている
  • バグで無限ループしちゃってる

というものだった。ああ、無限文字列連結 …

文字列が長くなるほど必要なメモリが増えるので、 php のランタイムがメモリを割り当てる際に mremap(2) を呼び出しているのだろうとアタリをつけた

擬似コードで再現

続きを読む

東京〜仙台 🚲

9/15(金) 東京から仙台まで走った

  • 走行距離 356 km
  • 獲得標高 1570 m
  • 経過時間は 20時間38分 (実走時間は 14時間25分)

今年の夏休暇に二日かけて走破したルート を一日で走った。ひたすら丸一日 自転車で走ってみるのをやってみたかったのが、ようやく実現できた

ルート

前回とほとんど同じで国道4号線を北上する。寄り道は最低限

03:00 出発

続きを読む

Python + folium で Strava の "全"記録を地図で可視化 🚲

昨年から自転車で遠出をする機会が増えて、走ったルートを Garmin Edge で記録していた。Garmin Edge の記録は Garmin ConnectStrava 等の Web サービスで可視化できる

f:id:hiboma:20170315113719p:plain

記録が増えてくると 過去の記録を全部重ね合わせた1枚の地図 を作ったらおもしろいんじゃね?という疑問がでてきた。 自分の知る限りでは複数回の走行記録を表示できるサービスはないようなので自作した

(追記)

Strava で有料プランを使うとよいっぽい。後からみつかるんだよな。こういうの〜〜

blog.strava.com

Python + folium がよいかんじ

いろいろ試行錯誤してみたところ Pythonfolium というライブラリを使うことで 期待に沿った地図がつくれた

過去に記録した緯度・経度をプロットするだけで こんな地図になる。花弁のように青く広がっている線が、私が過去に走行した全軌跡

f:id:hiboma:20170912172822p:plain

地図は HTML + JS で生成されていて、移動やズームできる

続きを読む

国道299号線〜刈場坂峠〜彩の国ふれあいの牧場 🚲

国道299号線で正丸トンネルまで向かい、刈場坂峠、彩の国ふれあいの牧場までのぼってきた

走行距離 108km 獲得標高 1647m

国道299号線

残暑で暑いデスネー

先週 も見つけた、青い タヌキ 猫型ロボットを拝む

続きを読む