放射状

勉強のメモ。

とりあえずコードリーディング環境を作るのです

優れたコードを書くための最短経路として、優れたコードを読む、という行為がまず一番に挙げられるわけです。自分もコードを読んでスキルのベースアップを図らなければ給料のベースアップは実現しなかろうよ…ということで、コードを読むことにしたのです。(目的に対し間接的過ぎる気がする手段)コードリーディングと言えばオープンソースオープンソースと言えばlinuxlinuxといえばコマンド。
というわけで基本的なコマンドのソースコードをひととおり追ってみたいと思います。

環境準備

WindowsGUIに慣れきったぬるましいプログラマなので、viとかemacsとか全く触りたくありませんね…なので、そういう条件で環境を整えます。

  1. WindowsVirtualBoxをインストールする。
  2. VirtualBoxにcentOS7の仮想環境を作る。ぬるいプログラマなのでGentooとかBSDとか知りません。
  3. ここsublime text 3を落としてwindowsに入れる。本当はBracketsでやりたいなあとか思っている。
  4. このあたり見てsublime textにパッケージコントロールをインストールする。
  5. sublime textに以下のパッケージをインストールする。これ以外はお好みで。sublimeは優秀なのでcとかmakefileシンタックスハイライトぐらいは余裕でやってくれる。
    1. IME Support
    2. SFTP

pingを読んでみる

基本的なコマンドと言えばlsとかかな? と思ったのですが、Cのソケット通信ってそういえばよく知らないや、ということでpingに。

  • tera termとかでcentos仮想環境に接続。
  • 以下のコマンドで、pingコマンドがどのrpmパッケージにインストールされているかを調べる。
[root@localhost hogehoge]# rpm -qf /usr/bin/ping
iputils-20121221-6.el7.x86_64

iputilsにあるのかー、と納得する。

  • 以下のコマンドでsrpmをとってくる。
[root@localhost hogehoge]# yumdownloader --source iputils-20121221-6.el7.x86_64
iputils-20121221-6.el7.src.rpm                             | 222 kB   00:02
  • srpmを解凍する。
[root@localhost hogehoge]# rpm2cpio iputils-20121221-6.el7.src.rpm|cpio -id
443 blocks
  • 「****.tar.gz」とかいうファイルがカレントディレクトリにできているはずなので、解凍する。
tar -jxf iputils-s20121221.tar.bz2
  • iputils-s20121221とかいうディレクトリが出てくる。それがソースコードなので、あとはsublimetのsftpパッケージで適当なwindowsのフォルダと同期して読んだりちょっと改変したり(linux上で)自分でコンパイルしてみたりしたらいいですよね。

こうなった経緯

MinGWとかでwindowsだけで完結できないかなと思ったのですが、MinGWにsys/socket.hは入っておらず、コンパイルを通すためには色々しなければいけないということが分かり、全てが面倒になり今回のようなことになりました。