開発系ツールまとめ(未整理)

wikiに書いていた内容を、試しにコピーしてきた。
少しの間、こちらをメンテしてみる。

ソースを読む・書く [#fdca464e]

SourceInsight(お勧め) [#rb653675]
  • 特徴
    • 有料のソースビューアー
    • インクリメンタル検索や参照先の検索が可能
    • マクロを作成することも可能
    • カーソル位置の変数などの定義位置を、別のウィンドウで表示してくれる。
    • ファイルにある関数等の一覧を、別ウィンドウに表示してくれる
  • 欠点
    • 表示中のファイルの、パスの取得をするメニューがない。(マクロで解決)
    • 開いてるファイルをVC++で開くメニューがない。(マクロ作成予定)
    • 日本語が化ける(設定あるの?)
  • カスタマイズ

現在開いているファイルのパスをクリップボードにコピー(マクロ)
macro MyCopyPathToClipboard()
{
hbufCur = GetCurrentBuf()

bufProps = GetBufProps(hbufCur)

hbufClip = GetBufHandle("Clipboard")
EmptyBuf(hbufClip)

AppendBufLine(hbufClip, bufProps.NAME)
}

  • TortoiseSVNとの連携(Custom Commandsを使って、ショートカットに割り当てることができる)
    • 開いているファイルをblameする
      • "パス"\TortoiseProc.exe /command:blame /path:%f
    • 開いているファイルのリポジトリとの差分を表示する
      • "パス"\TortoiseProc.exe /command:diff /path:%f
    • 開いているファイルのSVNログを表示する
      • "パス"\TortoiseProc.exe /command:log /path:%f
VisualStudio6 + WorkspaceWhiz(お勧め) [#kf3b4261]
  • WorkspaceWhizは、シェアウェアのVisualStudioの機能拡張
  • WorkspaceWhizによって、VisalStudioにインクリメンタル検索の機能などをつけることができる
  • WorkspaceWhizの機能のキーカスタマイズは、WorkspaceWhizの設定画面のkey bindingでは変更しても効かない。VisualStudioのツール->カスタマイズ->キーボードで設定する。
  • VC++meadowの連帯をさせるのがいいかとも思うが、これからはIDEがより便利になるし、IDE標準を使えっていうのが、時代の流れ?
  • カスタマイズ
    • TortoiseSVNとの連携
      • 開いているファイルのCommitLogを表示する。

コマンド: C:\soft\dev\TortoiseSVN\bin\TortoiseProc.exe
引数: /command:log /path:"$(FilePath)"
実行時のディレクトリ: $(FileDir)

      • 開いているファイルのDiffを表示する。

コマンド: C:\soft\dev\TortoiseSVN\bin\TortoiseProc.exe
引数: /command:diff /path:"$(FilePath)"
実行時のディレクトリ: $(FileDir)

      • 開いているファイルのBlameを表示する。

コマンド: C:\soft\dev\TortoiseSVN\bin\TortoiseProc.exe
引数: /command:blame /path:"$(FilePath)"
実行時のディレクトリ: $(FileDir)

コマンド: explorer.EXE
引数: "$(FileDir)"
実行時のディレクトリ: $(FileDir)

Visual Studio2005 + WorkspaceWhiz(お勧め) [#m1163c78]
  • Visual Studio6に比べた、Visual Studio2005の機能
    • defineの無効領域の灰色化
Eclipsejava/perl(お勧め) [#k2521cc0]
  • 特徴
    • javaの開発環境として有名で、プラグインが豊富。
    • C/C++の開発環境としても使えなくはないが、C/C++の開発環境としてはVisualStudioに劣る。
    • プラグインを入れてJavaPerl(ステップ実行などが可能)の開発に利用中。
MeadowとVisualStudioの連携(todo: 記述) [#y8bc7cd2]

ソースを比較する・マージする [#y1ba72ec]

Araxis Merge(お勧め) [#u574ef7d]
  • 特徴
    • 有料のマージツール
    • フォルダ比較ができる
    • 3ファイル比較ができる(分岐したソースのマージ作業が大分楽になる)
  • 欠点
    • Key Bindingが変更不可(オプションに"Ctrl + カーソルキーを使ってマージ操作を実行する"という項目はある)
  • カスタマイズ
    • TortoiseSVNのマージツールとして利用する

diff viewerとして"Compare.exe /max /title1:%bname /title2:%yname %base %mine"を指定する。

他(WinMerge, Beyond compare, Rekisa) [#r4140d89]
  • WinMerge, Beyond compareは3ファイルの比較ができない
  • Rekisaは直接編集ができない

開発ドキュメントを書く [#j98080da]

JudeUMLを描く(お勧め) [#lefc0116]
  • UMLを掛ける
  • 有料版と無料版がある
  • 現状、Cの開発が多くてUMLとソースの同期機能などは必要ないので、これで十分。
DyamicDraw(お勧め)で図を描く [#ac40d0e4]
  • 決まった記法のない図を書く時に使う。
他のツール(Visio, PowerPoint)で図を描く[#r9b64a9f]
  • Visio
    • 重いし、いまいち気軽に扱えないので、利用していない。
  • PowerPoint
    • wordに図を書く必要のあるときぐらい?

プロファイルを取る [#t05e0a7a]

GlowCode(お勧め)[#fee9ea5f]
  • 有料のプロファイルツール。プロファイラとしては安いほう。4万程度。
  • 関数の実行時間を測れる。(もちろん、呼び出し回数・平均時間なども)
  • 実行した関数をツリーで表示してくれて、視覚的に占めている時間の高いものを見つけることができる。この機能が、私が薦めて利用した人にはすごく好評。
  • UIが独特で、初めての利用では戸惑う。
  • 30日試用版があるからとりあえず使ってみることをお勧め
  • プロファイルの取得中でも、DevPartnerに比べて軽い。
他(VisualStduio6, DevPartner) [#k557f5c9]
  • VisualStduio6
    • プロファイルの機能があるが、計測結果が非常に怪しい。2005はましになっている?
  • DevPartner
    • 有料のプロファイルツール。とても高い。
    • 関数の中のそれぞれの行で占めている時間を出すことができる
    • プロファイルの取得中、非常に重い。

デバッグをする [#j332f25a]

VisualStduio6(お勧め) [#jbd48b13]
  • デバッガとして非常に優秀
  • 特定アドレスの内容を書き換えたらブレークポイントが発生して止まるようにできる。(案外知らない人が多いが、変な値になった変数を、誰が書き換えたか見つけるときによく使う)
filemon(お勧め) [#qafdaf8c]
  • ファイルへのアクセスの監視ができる
regmon(お勧め) [#qe51725a]
他(DependencyViewer, dumpbin, WinDBG) [#q28f38bb]
  • DependencyViewer
    • 依存しているdllを調べることができる。
  • dumpbin
    • バイナリのオブジェクト情報取得
  • WinDBG
    • VisualStduio6では特定のアドレスを書き換えたらブレークポイントを発生することは可能だが、アドレスの参照時にブレークポイントを発生させることはできない。
    • WinDBGではそれが可能。詳細はWinDBGのbaのヘルプを参照。
      • 例) ba r 1 0x0664aaff
    • UIがひどい

ソースを管理する(todo:記述) [#s9038e94]

TortoiseSVN(お勧め)(todo:記述) [#iea078ac]
VisualSourceSafe(todo:記述) [#r93d946c]
他(jit)(todo:記述) [#z56b5728]

開発ドキュメントを検索する [#ddcb6075]

Namazuでローカルドキュメントを検索する [#o85d022e]
  • HDD内のドキュメントを検索する
  • Google Searchは、1ファイルの単語数の制限などを変更できないため、Namazuを利用している。

 Namazuは検索対象が特定の1つのフォルダ以下なのが問題で、別の場所にあるファイルを検索対象に含ませるには、Namazuの検索対象のフォルダの下に、コピーしてこないといけない。

 これを解決するために、「リンク作成シェル拡張」というフリーソフトでジャンクションを作成して利用している。

 また、WinLocateというフリーソフトを使い、Unixのlocateコマンドのようにファイル名からファイルを検索することもできる。

freemindのメモを、namazu検索に入れたいが、
フィルターがなかったので、作った。
とりあえず動くレベル。


http://park16.wakwak.com/snow/data/freemind.pl

エディタ [#y9e46c40]

Meadow(todo: 記述) [#w107c25d]
Meadowのviperモード(お勧めできない) [#a932d162]
  • 私が利用中。
  • meadowの機能と、viのインターフェイスという、両方のいいとこ取りなのにのはずだが、利用者が非常に少ないためお勧めできない。
  • meadowの新しいマイナーモードが出るたびに、viperモードと併用すると問題が起こる。そして、解決策はネットを探しても大抵見当たらないので、自分で解決するしかない。
Vim [#n9ba03b6]

ここまで整理した[2008/03/15] [#l84dec3d]

複数のPCを利用する(ローカル) [#m14eea9f]

  • 基本、Sambaでファイル共有
  • CygwinでX-Windowを入れれば、Unixのアプリの画面をwindowsに出すことは可能だが、実用的かは微妙。
  • データの同期方法がいまいち決定しない。Subversionなのか?Web?(todo: 要検討)
Synergyでマウス・キーボードを共有する [#l7979bc1]
  • 類似ソフトに"どこドア"などがあるが、bluewindと同時に使うと、操作されてる側のPCで、キー操作でbluewindが前に出せない問題が出たので、Synergyに落ち着いた

複数のPCを利用する(リモート) [#ybc5d1d2]

TightVNCで遠隔地のデスクトップを操作する [#wf68eb8b]

バックアップ [#vb4e31d5]

UNIXでのバックアップ [#ma09e40b]

pdumpfsで、ハードリンクを利用した効率的な、1日毎のスナップショットバックアップ。

利点:

  • 別の物理HDDなので、クラッシュ時も安心。
  • ハードリンクを利用して、容量が安心。
  • 特定の日時の設定ファイルなどを取り出せるので、設定を戻すときに便利。
Windowsでのバックアップ [#daa8a5f4]

WindowsPCのバックアップは、realsyncを使う。
1日毎にマウントしたUNIXのPCのHDDへファイルの更新差分コピーをする。

利点

  • 別の物理HDDなので、クラッシュ時も安心。


設定ファイル等は、Subversionを利用。

利点

  • 設定の更新履歴が取れて、間違った設定を戻せる。
  • Subversionのサーバが別PCなので、別の物理HDDでクラッシュ対策になる。

ディレクトリ構造 [#a108f0bd]

理想のDirectory構造とは?(todo: 補足) [#x3d286d4]

C:
├ Program Files {VC++とか、パスを変えると問題が起きそうなソフトのインスト場所}
├ data {ドキュメントや、その他様々なデータ}
│ ├ backup {realsyncのバックアップ対象}
│ ├ document
│ ...
├ soft {ほとんどのソフト}
│ ├ net {それぞれの分野で分ける}
│ ├ dev
│ ...
├ SubversionData {subversionで管理してるデータ}
│ ├ emacs {emacsの設定ファイル等}
│ ├ sh {shの設定ファイル等}
│ ...
...

f: {仮想CDドライブ}
[h-zのいくつか]: {ネットの共有ドライブ}

{realsyncのバックアップ対象}
バックアップしたいフォルダ|ファイルのジャンクション|ハードリンクがある。
リンクの追加だけですむので、簡単にバックアップ対象のフォルダ・ファイルを追加できる。

{subversionで管理してるデータ}
以前は、SubversionDataは、windowsPCとlinuxPCで共有にするために、ネットの共有フォルダだった。
しかし、ノートを持ち歩くようになったので、どのPCにデータを置くかに迷い、subversionで同期させるようにした。
設定ファイルの更新に、コメントを付けることができ、便利。

ランチャー [#e0410102]

bluewindを利用した最速インターフェイス(todo: 実現方法の記述) [#e0c96121]

ほとんどのインストール済みソフトを1秒以内に呼び出せる。
また、"特定のソフト","特定のファイル","特定のサイト"を同じ方法で呼び出せる。

以下のように、入力と機能を関連付けている。

vcpp: Visual Studio起動
cyg: cygwin起動
ama [$word]: Amazonで$wordを検索する
bug [$id]: 会社のbug tracking systemのサイトを開く。$idをつけた場合、そのIDのバグが表示される。
pub: 会社に来たら最初に起動するソフト群を、全て起動させる。
pri: 家に帰ったら最初に起動するソフト群を、全て起動させる。
data: データディレクトリを開く
tm: temporaryメモファイルを開く


万能検索デスクトップテキストボックス開発
http://d.hatena.ne.jp/ndruger/20060514#1147569989

メモを取る・参照する[#w804e6db]

現状(todo: 現状を記述) [#o7dcd074]
理想のメモソフトとは?(todo: 整理) [#ld4614d1]

現在はhowm+自作スクリプト

 私の求めるメモソフトの条件は以下。

1. 全文検索ができること
2. 使い慣れたエディタ(meadow)で利用できること
3. メモに添付ファイルを付けれること(ソフトウェアの設定(たとえばApache)をメモするとき、メモといっしょに設定ファイルなどを保存したいため)
4. 速度が速いこと
5. 簡単にBackupができること

上記の条件をすべて満たすメモソフトが見当たらない。

howmでは、3の条件を満たせない。
wikiでは、4の条件が満たせない。あと、2の条件も

よって、howmを修正し、添付ファイル追加を可能にして、それを利用している。

更に、以下の条件を満たすメモソフトが最近ほしい。

6. 分類キーワードでメモが分類されること。

 これは、"Windows"で"Rescue"という分類キーワードを指定して検索した場合、
その分類に当てはまるメモが一覧される機能。

 実現の方法は、分類キーワードの包含関係を設定しておいて、メモの登録時に分類キーワードを付ける。

 そして、分類キーワードでの検索時に、分類キーワード同士の包括関係により、適切なメモが一覧される。


 また、これとは別に、雑誌などでしらなかった技術用語が出てきたとき、free mindというmind mapを書くフリーソフトを使ってメモをしている。

 この利点は、用語間の関連を、簡単に作成することができ、次に見たときに一目でわかること。

ファイルを探す [#t80eacad]

WinLocateを使ってインデックス化する [#uf85c820]
  • Windows環境でも、Unixのlocateのようなことを可能にするため、WinLocateというソフトを使う。共有フォルダもインデックス対象に含める。

データの同期を取る (todo: 詳細を記述&もう少し検討)[#hbcd7918]

メールデータの同期 [#n3708aa1]

UNIX PCで、procmail&fetchmail&imapサーバを利用して、メールボックスの一元化。
メーラーIMAP対応のBecky

  • 欠点:メーラーであるBeckyから、メールのフォルダ振り分けを変更できない。
メモや設定ファイルの同期 [#y734fb51]

Subversionを利用。

  • 利点:リビジョン管理もできる

ファイルを操作する [#vdb26582]

explorer + explorer拡張 + zsh [#qb72fad4]

基本はexplorer
"fire file copy", "拡張コピー", "右クリックからコマンドプロンプト"など、Explorer拡張のフリーソフトを入れている。

複雑なファイル操作をする時は、cygwinzsh

日本語ファイルがないなら、常にzshが一番楽だけど、そういうわけにはいかないので。
以前、zshで、日本語ファイルに強制的に読み仮名(=別名)をつけて、その別名で操作できる機能を追加しようかと思ったが(chasenでそんなのしてた人がいた気がする)、正しく読み仮名がつかない気がするので、止めた。

ファイル操作は、改善の余地あり。
ただし、これというアイデアがない。

自宅ネットワークの管理(todo: 要整理) [#fa0132cf]

セキュリティ [#rfb64776]

ほとんどルータ依存。IPマスカレードだから、たぶん大丈夫じゃない?って考え。
自宅鯖には、Tripwire(ファイル改ざん検出)・chkrootkit(rootkit検出)・iptables(ファイアーウォール)などが入っている。

snortは今は動いてない。

自宅鯖 [#w82290c5]

PC ATX Pen3 1G
Fedra Core 2
ftpサーバとか、webサーバが動いていたが、最近動いていない。

ルータ [#bf3e76cb]

Fedra Core 2でPCルータ。
このPCがないとネットにつなげれないため、このPCを使って実験ができない。
これはありえないので、高機能ルータを買う予定。

ケーブリング [#hc0404e5]

100Mbps。
現状不満はない。
無線LANやGbpsはおもしろそうだが、あまりにコストに見合わないので、見送り中。