Git で Version から当時のソースをあさりたいとき

背景

  • bundler / Gemfile.lock みたいに色んなバージョンが可視化されて、管理されていれば良いが実際はそんなユートピアでは無い。
  • 低意識で yum install とかした日には、最新版が入ってくる
  • 原因を特定する際にソースを漁ったりするが、その時に結構忘れるので、アレだな、って思ったのでメモっとく

具体例

  • 何となく puma の例で見る
$ git clone https://github.com/puma/puma
$ cd puma
  • タグを見る
$ git tag
v1.0.0
v1.1.0
v1.1.1
v1.2.0
v1.2.1
v1.2.2
v1.3.0
v1.3.1
v1.4.0
v1.5.0
v1.6.2
v2.0.0

version => revision

  • バージョンから リビジョンを見る
$  git rev-list -n 1 v1.0.0
cd4d8722ccd6027c4e6a6d7998d6e117998945a8
  • github でみる(プラットフォームにロックインしているので汎用的では無い)
ブラウザで 以下のURL を開く https://github.com/puma/puma/tree/cd4d8722ccd6027c4e6a6d7998d6e117998945a8

ローカルに clone して当時のソースを漁る

  • checkout するらしい
$ git checkout cd4d8722ccd6027c4e6a6d7998d6e117998945a8

Reference

  • 何かググったら出てきた気がする

高いバイオリンとそうでないものの違いについて

専門的にバイオリン弾いている人に聞いてみた所

  • 正直差は分からないと思う。
  • が、出る音の幅の違いは結構ある。
  • 「この曲にはこういう音色が必要だよね」っていうのがやっぱりあるらしい。
  • というわけで、良いバイオリンは色々な音色が出せる、また弾き手によって違うってこともあるかな、っていう。

top を ローカルでビルド => gdb でアタッチする

動機

  • なんかやりたかった

下準備 / インストー

$ git clone git@github.com:soarpenguin/procps-3.0.5.git
  • とりあえず 無意識で install すると、/usr/bin にインストールされるので、注意( VM ならまぁ問題なかろう)
  • tmp に作ることにする。
  • なお、Makefile の書き方も読み方も全く知らない
$ mkdir /tmp/sample

$ cd procps-3.0.5

$ make 

# 空気的に DESTDIR で ビルドディレクトリ指定するっぽいのでしている
$ sudo make install DESTDIR=/tmp/sample
install -D --owner 0 --group 0 --mode a=rx --strip uptime /tmp/sample/usr/bin/uptime
install -D --owner 0 --group 0 --mode a=rx --strip tload /tmp/sample/usr/bin/tload
install -D --owner 0 --group 0 --mode a=rx --strip free /tmp/sample/usr/bin/free
install -D --owner 0 --group 0 --mode a=rx --strip w /tmp/sample/usr/bin/w
install -D --owner 0 --group 0 --mode a=rx --strip top /tmp/sample/usr/bin/top
install -D --owner 0 --group 0 --mode a=rx --strip vmstat /tmp/sample/usr/bin/vmstat
install -D --owner 0 --group 0 --mode a=rx --strip watch /tmp/sample/usr/bin/watch
install -D --owner 0 --group 0 --mode a=rx --strip skill /tmp/sample/usr/bin/skill
  • ここまで来たら、ビルドしたバイナリにアタッチする
$ gdb /tmp/sample/usr/bin/top
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-92.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/sample/usr/bin/top...(no debugging symbols found)...done.
  • と思いきや、no debugging symbols found と出る
  • 明らかにダメっぽかったので、StackOverflow で聞いてみた。

stackoverflow.com

  • すると、gdb の オプションの strip がダメっぽかったので、--strip オプションを外してみた
  • 以下は git diff の結果

f:id:fjwr38:20170519232103p:plain

  • 今度はビルドメッセージに --strip が出なかったので、起動してみる
$ gdb /tmp/sample/usr/bin/top
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-92.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/sample/usr/bin/top...done.
  • すると今度は no debugging.. が出ない
(gdb) b configs_read
# Ctr-x + a で画面を出す
(gdb) r
  • すると、以下のような画面になる

f:id:fjwr38:20170519232354p:plain

  • どうやらアタッチ出来たっぽい。
  • これで恐らくソースを追うことが出来るだろう。
  • 次回に続く(多分)

歯医者さんに行った

  • 新たに知ったことを記す

寝たきりや植物状態の人の死因は肺炎やインフルエンザが多い

  • 何故かと言うと、「唾液が出づらくなり、口の中のウィルスが肺に行きやすくなるから」
  • 寝ていると唾液が少なくなる。唾液の殺菌効果が期待できなくなる。
  • 更に加齢により、食堂と肺の弁が上手いことロードバランスしてくれなくなる。
  • したがって、口の中のウィルスが肺に行きやすくなり肺炎やインフルエンザになる

うがいはいきなり喉をガラガラやるのはアンチパターン

  • 何故なら口の中のウィルスを喉や肺に通して体内に入れてしまうことになるから
  • 対策として一度口をゆすいでから(グチュグチュぺ~して、ウィルスを外に出す)、ガラガラやると良いらしい。

感想

  • お医者さんに行くと素朴な疑問を聞けるので楽しい。お医者さんとの会話は基本的に楽しい。
  • まぁ真実かどうかはわからんし、調べるのも面倒くさい

月光密造の夜@東京キネマ倶楽部 2017/05/02

これまでの経緯

前回の月光密造の夜(2015年春頃、確か場所は渋谷の WWW)も行きたかったのだが、会社の打ち上げとかぶってしまっていけなかった。 というわけで、「今度開催されたら絶対行くぞ!」と意気込んで行った。

月光密造の夜について

  • 結構歴史が長くスカートの澤部さん曰く「2008年くらいからやってる」と言っていた。
  • 「ミツメ・スカート・トリプルファイヤーで 5 年くらいやっている」とも言っていた。
  • 「だんだん(ミツメ・トリプルファイヤー)乗っ取られている」と苦笑していた。

トリプルファイヤー

  • 相変わらず演奏がかっこいい
  • 吉田さんの MC も相変わらずだった。登場するだけで面白い、というのが凄い。
  • 最後の 「カモン」が最高だった。会場をありとあらゆる手で煽っていて、それが毎回爆笑を取っていた。
  • 新曲を確か 4曲ほどやっていた。(「銀行に行った」とか「俺は好き勝手にやっていく」とか「キノコが欲しい」みたいな歌詞が出てきていた)
    • 新曲は、前作とは変わってニューウェーブっぽい感じだった。
    • あとは以前より複雑なリズムでこれもかっこよかった。
    • 次のアルバムがいつになるか分からないが、即買い決定だった。

ミツメ

  • 相変わらず曲と演奏がかっこいい。
  • マオさんがジャガーじゃなくてムスタングを使っていた(と思う)。
    • 相変わらずショートスケールなんだな。
    • そして相変わらずサーフグリーンなんだな、と思った。
  • 初めてライブで「Alaska」「どうしてこんなに晴れているのに」を聴いた。
  • 「煙突」を久々に聴いたのだが、シンセを使わなくなったんだな。
  • 「次やったら殴る」を初めて聴いた。
    • ナカヤーンさんが、途中でテンション上がってマイクを倒していったのが面白かった。
    • とりあえず怖かった。

スカート

  • なんだかんだライブを三組の中で一番観ていなかった。
  • 新曲・アルバムの告知をしまくっていた
    • 結構次のアルバムが気になるような曲ばかりだった
  • 「曲の構成がちゃんとしていると自分の中で評価が高い」と澤部さんが言っていた。確かにそういう曲書きそうだし、好きそうだ。
  • アンコールでミツメの川辺さんと、トリプルファイヤーの吉田さんを呼んで「disco」と「スキルアップ」をやっていた。
  • 良い意味でもインディーっぽくないキャッチーで良い曲が多い、というのが、スカートをいつも聴いていて思う。

東京キネマ倶楽部について

  • 結構見やすくて、かつ昭和の雰囲気がしていいライブハウスだった。
  • ステージ下手の階段がいい味を出していた。
  • 二階の指定席が良い感じだった。次行くときは指定席狙いで行きたい。

Linux カーネルの挙動を追うとき

sqljissen.connpass.com

  • 上記の勉強会の終わり際で @furandon_pig さんに「カーネルの挙動を追いたい時って、やっぱり printf してビルドするのが良いんですか?」と質問してみた。
  • その所

    • systemtap が良い。
    • ただし引数とかを扱うとかなると、ちゃんと絵とか書いてデータ構造を把握した方が良い。
    • GUI とかの色んなプロセスが立ち上がっていると厳しいので、シングルユーザモードで起動するのが良い。
  • と アドバイスいただいた。

  • ありがとうございます。

何故寄生虫を殲滅出来ないのか?

寄生虫について

  • 何となくエキノコックスについて昨日調べていて、色々動画を観ていた。
  • ふと、「天然痘のように、やり方によっては絶滅することが出来るのにも関わらず、何故寄生虫は殲滅出来ないのか?」という疑問が降ってきた。
  • 会社の生物を専攻されていた人が仰るには、
    • 寄生虫はウィルスより構造が複雑。
    • 細菌などと違って人間に近いので、いい感じに寄生虫だけ grep 出来ない。
    • 副作用などが怖い。実際に開いてみるしかない。
  • では、生物兵器として寄生虫を用いればいいのでは?と聞くと
    • 寄生虫が効果を発揮するのには、かなりの時間がかかる、とのことだった。
    • 生物兵器としては、威力を重視するので、意味が無いのでは、とのことだった。