タグ

codereadingに関するyheldのブックマーク (8)

  • GNU catを読む - 全体的な流れ - ボクノス

    GNU catのソース読んでます。長くなってきたので分割しました。 ソースコードのありか オンラインで見るときはCVSを sources Index of /coreutils/coreutils/src ソースはftpからゲットせよ。 Coreutils - GNU core utilities グローバル グローバル変数static int input_descが入力ファイルディスクリプタ。超重要。 小さな関数 usageの処理はGNU定番の超絶テク。必見。 行番号の処理が凄い。写経しよう。 解析結果 -> ボクノス - GNU catを読む - next_line_num()編 main() getopt_longは定番の処理。 fstat (STDOUT_FILENO, &stat_buf)の意味がイマイチわからん。STDOUTのfstat??何が出てくる?? 調べた。cat >

    GNU catを読む - 全体的な流れ - ボクノス
  • GNU catを読む - next_line_num()編 - ボクノス

    昨日、catのソースを読んでいて謎だったnext_line_num()の処理を解析してみた。 実際の動作を確認する。 cat -nで行番号表示が出来る。 % cat -n next_line_num.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define LINE_COUNTER_BUF_LEN 20 5 static char line_buf[LINE_COUNTER_BUF_LEN] =表示桁数が固定なのが痛いが、catで行番号を表示することはまず無さそうなので、こんなもんかなぁと思う。 解析してみる。 next_line_num()を抜き出して遊んでみた結果。 解析結果はコメントに書いた。 #include <stdio.h> #include <stdlib.h> // 頭悪すぎコメント。 /* Buffer for li

    GNU catを読む - next_line_num()編 - ボクノス
  • GNU Global

    GNU Global ソースコードタグシステム GNU Global は、ソースコードに索引付けを行うことで、大規模システムのハックやレビューを効率化するソフトウエアです。 ソースファイル中の指定したシンボルを高速に見つけ出し、素早くその場所に移動することができます。多くのサブディレクトリからなり、#ifdef や main() 関数を沢山含んでいるような、いわゆる巨大なプロジェクトをハックするのに役立ちます。 ctags やetags に似た働きをしますが、エディタには依存せず、emacs, vi, less等の様々な環境でご利用になれます。ハイパーテキスト化してブラウザで読む事もできます。 最新の機能については、「新機能の御紹介」をご覧ください。 GNU Globalは GNU GPLv3 にもとづいた 自由なソフトウエア です。 動機 次の二つの条件を満たすソースコードタグシステムを

  • メモを書き込みながらコードリーディングする方法 - (ひ)メモ

    調べたいことがあってApacheやらlighttpdやらkeepalivedやらのソースコードを読むときはGNU GLOBALを使ってたんですが、常々、メモが書き込めたらいいのになーと思ってました。 フローのメモ 関数の動作、影響のメモ マクロのメモ とかとか その場では覚えてられるんですが、最近は性能劣化のため日をまたぐと脳内バッファがフラッシュされるようになってきたので、howmでメモったり紙に印刷して手書きでメモったりしてたんですが、なんかどうもいまいち。 GLOBALのページに直接付箋はれるといいのになぁと思ってちょっと探したところ、InternoteというステキなFirefoxのextensionがありました。 こんな感じです: みんなでメモをシェアするのには向きませんが、個人的なメモをとるのにはよさげです。

    メモを書き込みながらコードリーディングする方法 - (ひ)メモ
    yheld
    yheld 2007/07/23
    ウホッ!丁度こういうのがほしかった!
  • Part1 オープンソース/C言語に学ぶ「ソースコードの読み方」:ITpro

    「Code Reading―オープンソースから学ぶソフトウェア開発技法」(毎日コミュニケーションズ発行,写真1)というがあります。私はこのの監訳者ですから,やや自画自賛になってしまいますが,ソースコードの読み方を主題にしたはほかにはあまりありません。技法からツール,データ構造,アーキテクチャ,さらには実際にコードを読んで利用する実例まで紹介している網羅的で良いだと思います。 このの「はじめに」で「達人プログラマー」として知られるDave Thomas氏は以下のように書いています。 他人の作品を読まなかった偉大な作家,他人の筆づかいを研究しなかった偉大な画家,同僚の肩越しに技を盗まなかった腕のよい外科医,副操縦席で実地の経験を積まなかった767機長――果たして,そんな人たちが当にいるのでしょうか? たしかにその通りです。ソフトウエア以外の領域では修行することとはすなわち,他の人の

    Part1 オープンソース/C言語に学ぶ「ソースコードの読み方」:ITpro
  • コードを読む必要 | tarosukeの日記 | スラド

    他人のコードをたくさん読む必要があるというのは即ち自明でない、あるいは言語側が知らないことが山程あるという事でもある。みんなで他人のコードを読んで勉強するというのはライブラリのコードを書き写しているようなもので、他人のコードを読まずに書くだけというのは狭義の車輪の再発明の可能性が高い。だが、他人のコードは膨大で、結局の所車輪の再発明は避けられない。 むしろモレは、「他人のコードを読む必要があればある程その言語は言語として未完成なのかも知れない。デザインパターンという存在も同様に言語の未熟さ故。」と考えたりする。そんな手順あるいは特定の記述はもっと隠蔽されてもいいんじゃないかと思う。手順を言語に隠蔽するというのは宣言型言語でその片鱗が見えているわけで。 これは最適化に対しても同様で、拙い手順を解析するのは相当無駄なんじゃなかろうかと。

    yheld
    yheld 2007/06/19
    最近自分は他人のコードを読む必要性に駆られている。だが、できるだけ読みたくない。読むよりも書いていたい。しかし、書くには読む必要がある・・・
  • DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫

    C言語で書かれたソースコードを読んでいるとき、関数ポインタから呼び出されている機能の実体がどこに書かれているのかを探すのに苦しんだ経験はありませんか? 私はあります、いっぱいあります!! そんなときはどうするかというと・・・ 手順1: まずは気分転換をする! 手順2: そして気合いを入れ直す! 手順3: さらに気力で読み砕く! 手順4: 最後に根性で発見する! これが、ごく一般的な作業手順(?)かと思います・・・(ごめんなさい嘘です) でもまあ、実際にここまで出来れば、そのプログラムの大まかな構成とか癖みたいなものはだいたい把握できているはずなので、他の関数ポインタについてもある程度当たりをつけて見つけだすことが出来るようにはなるかと思います。 ・・・・・が、、できれば気合いと根性を使わずに追えるなら追いたいのが人情ですよね。 straceやltraceを使えばシステムコールやライブラリコ

    DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫
    yheld
    yheld 2007/06/17
    [あとでhamanoさんをトレース]
  • ひらメソッドを読んでみた。 - ボクノス

    最近、人気の高いコードリーディング手法であるひらメソッドを読んでみました。 ひらメソッドの重要ポイントは、 ボトムアップに関数を読んでいく 安心して忘れることができる環境 記憶しなければならない箇所を絞り込むことができる ってところですね。 今までの僕のコードリーディング手法を振り返ると・・・ カーネルソースコード解析に失敗。 短いソースコードから読むことから始めた。 lsの場合 「lsのコードを読んだことのない奴はプログラマじゃない!!」と、青木さんが言ってたので、GNU lsソースコードを入手。 GNU lsが読みにくかったので、FreeBSDのlsのソースコードを読んでみることに。 lsのusage()から読んだ。 (void) fprintf("Usage: ls ...");という謎のコードを発見。 manを読んで、fprintfの戻り値を確認した。 確信した この手法は間違って

    ひらメソッドを読んでみた。 - ボクノス
  • 1