02 Mar 2013, 07:25

CppcheckをEclipse CDTに組み込んで静的解析!C/C++ユーザに嬉しい『cppcheclipse』

Eclipse CDT からCppcheckの結果が見れたら便利だなーなんて思って、Eclipseのプラグインを探してみたら、こんなのを見つけた。

cppcheclipse – Integration for cppcheck with Eclipse (CDT) – Google Project Hosting

なんと語呂がいい名前。座布団一枚だ。 というわけで、試してみる。

環境

  • Eclipse 4.2 Juno
  • Windows 7
  • Cppcheck 1.58(注:1.58でないと、Eclipse 4.2 Junoで動かなかった」

cppcheclipseのダウンロードとインストール

Eclipse CDTとCppcheckはインストールされていることが前提で。
Cppcheckがインストール方法は過去記事を参照ください。

CppCheckでC言語/C++のメモリリーク(解放漏れ)を静的解析で検出する。 | Futurismo

注:cygwinからのcppcheckでは動かないので注意すること。

cppcheclipseのインストールは、ツールバーから[ヘルプ] > [Eclipse マーケットプレイス]を選択して、cppcheckで検索すると見つかるので、インストールを選択。

image

Eclipseでの設定

インストールして再起動したら、ツールバーの[ウィンドウ] > [設定] > [C/C++]を選択する。選択項目にcppcheclipseが現れる。

まず、Cppcheckの実行バイナリを選択する。

image

次に、[設定]を選択して、cppcheck実行時のオプションを選択する。
とりあえずは、”–enable=all”だけでよい。

130302_1.png

 

cppcheckを実行する

プロジェクト・エクスプローラからcppcheckを実行したいファイルやフォルダを選択して、右クリック。[cppcheck] > [run cppcheck]を選択して、実行。

実行の結果、エラーがあった場合は[問題ビュー]から確認できる。
そのまま、該当箇所にもジャンブで移動可能なのが嬉しい。

エディタにも、エラー箇所は赤く表示される。

130302_2.png

 

[Ctrl + Alt + C]がCppcheckの実行に割り当てられている。
これで、アクティブなファイルに対して即座に静的解析が実行できる。とても便利だ。

cygwinにインストールしたcppcheckは使えない

cygwinにインストールしたcppcheckだと、cppcheckの結果を正しくEclipseがパースしてくれない。templateの指定方法が間違ってるようで、”問題”ビューにあらわれてくれない。
下のような感じで、表示されてしまう。

‘{file}:{line},{severity},{id},{message}’

WindowsにインストールしたCppcheckを使うこと。

02 Mar 2013, 02:10

setup.exeはもういらん!Cygwinでコマンドラインからインストール/アップデートする[apt-cyg]を試す

Cygwinをツールをアップデートするときに、いちいちsetup.exeを起動するのが面倒だ 。

LinuxやRubyとかみたいに、コマンドラインからインストール出来ないかなと思って調べたらありました。それが

apt-cyg

です。以下、詳細をメモメモφ(`д´)メモメモ

apt-cygとは

apt-cygとは、apt-getみたいにコマンドラインからツールのインストールやアップデートをするためのコマンド。

GoogleCodeで公開されている。

apt-cyg – A command-line software installer for Cygwin – Google Project Hosting

 

 

apt-cygのインストール方法

事前準備として、以下のコマンドをcygwinに入れておくこと。apt-cygの中で使う。

  • Base/gawk
  • Archive/bzip2
  • Base/tar
  • Net/wget

wgetで取得。

$ wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg

apt-cygは内部的にwgetを使っている。proxy環境でうまくいかない時は、wgetのプロキシ設定が必要。自分は以下の記事を参考にしました。

実行権限を与えて、パスの通った場所に置く。

$ chmod +x apt-cyg
$ mv apt-cyg /usr/bin

これだけで、インストール完了。簡単簡単。

$ apt-cyg --version
apt-cyg version 0.57
Written by Stephen Jungels

Copyright (c) 2005-9 Stephen Jungels.  Released under the GPL.

ミラーサーバの設定

cygwinの取得先を日本のサーバに指定しておく。

// 32 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86/ update
// 64 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86_64/ update

apt-cygの使い方

helpを参照

$ apt-cyg --help
apt-cyg: Installs and removes Cygwin packages.
  "apt-cyg install <package names>" to install packages
  "apt-cyg remove <package names>" to remove packages
  "apt-cyg update" to update setup.ini
  "apt-cyg show" to show installed packages
  "apt-cyg find <patterns>" to find packages matching patterns
  "apt-cyg describe <patterns>" to describe packages matching patterns
  "apt-cyg packageof <commands or files>" to locate parent packages
Options:
  --mirror, -m <url> : set mirror
  --cache, -c <dir>  : set cache
  --file, -f <file>  : read package names from file
  --noupdate, -u     : don't update setup.ini from mirror
  --help
  --version

リポジトリ(setup.ini)をアップデートする

ローカルで持っているツールの更新情報をアップデートする。

apt-cyg update

ツールをアップデートしてみる

ここでは、すでにインストールされたcppcheckをアップデートしてみる。

既存のcppcheckをまずは削除。

$apt-cyg remove cppcheck

次に、新しいcppcheckをインストールする。

$ apt-cyg install cppcheck

これで、cppcheckのバージョンが1.56から1.58にアップデートされた。

いろんなツールの更新を調べて、一気にアップデートするのはsetup.exeを使ったほうがよさそう。

追記 13/08/12

Cygwinに大きな仕様変更があったようで、32bit版と、64bit版で、Cygwinは分けられたようだ。64bit版には、inetutilsも見つからない・・・。

、久しぶりにapt-cygを実行したらエラー。

$ apt-cyg update
Working directory is /setup
Mirror is http://ftp.iij.ad.jp/pub/cygwin/
--2013-08-12 23:12:06--  http://ftp.iij.ad.jp/pub/cygwin//setup.bz2
ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.143, 202.232.140.144, 2001:240:bb8f::f:300, ...
ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.143|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2013-08-12 23:12:06 エラー 404: Not Found。

--2013-08-12 23:12:06--  http://ftp.iij.ad.jp/pub/cygwin//setup.ini
ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.143, 202.232.140.144, 2001:240:bb8f::f:300, ...
ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.143|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2013-08-12 23:12:06 エラー 404: Not Found。

Error updating setup.ini, reverting

404 Not Found…だと?

原因は、setup.iniが 32bit番と64bit番でディレクトリが分けられるようになったからだった。

http://ftp.iij.ad.jp/pub/cygwin/にアクセスすると、ディレクトリ構造が変更されていた。

ミラーサイトは以下のように、32bitと64bitで区別する必要がある。

// 32 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86/ update
// 64 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86_64/ update

正式版のapt-cygはこの仕様変更には対応していないみたい。forkしたapt-cygをみつけたので、しばらくはこっちを使うのが良さそう。

Cygwinをツールをアップデートするときに、いちいちsetup.exeを起動するのが面倒だ 。

LinuxやRubyとかみたいに、コマンドラインからインストール出来ないかなと思って調べたらありました。それが

apt-cyg

です。以下、詳細をメモメモφ(`д´)メモメモ

apt-cygとは

apt-cygとは、apt-getみたいにコマンドラインからツールのインストールやアップデートをするためのコマンド。

GoogleCodeで公開されている。

apt-cyg – A command-line software installer for Cygwin – Google Project Hosting

 

 

apt-cygのインストール方法

事前準備として、以下のコマンドをcygwinに入れておくこと。apt-cygの中で使う。

  • Base/gawk
  • Utils/bzip2
  • Utils/tar
  • Web/wget

wgetで取得。

$ wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg

apt-cygは内部的にwgetを使っている。proxy環境でうまくいかない時は、wgetのプロキシ設定が必要。自分は以下の記事を参考にしました。

実行権限を与えて、パスの通った場所に置く。

$ chmod +x apt-cyg
$ mv apt-cyg /usr/bin

これだけで、インストール完了。簡単簡単。

$ apt-cyg --version
apt-cyg version 0.57
Written by Stephen Jungels

Copyright (c) 2005-9 Stephen Jungels.  Released under the GPL.

ミラーサーバの設定

cygwinの取得先を日本のサーバに指定しておく。

// 32 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86/ update
// 64 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86_64/ update

apt-cygの使い方

helpを参照

$ apt-cyg --help
apt-cyg: Installs and removes Cygwin packages.
  "apt-cyg install <package names>" to install packages
  "apt-cyg remove <package names>" to remove packages
  "apt-cyg update" to update setup.ini
  "apt-cyg show" to show installed packages
  "apt-cyg find <patterns>" to find packages matching patterns
  "apt-cyg describe <patterns>" to describe packages matching patterns
  "apt-cyg packageof <commands or files>" to locate parent packages
Options:
  --mirror, -m <url> : set mirror
  --cache, -c <dir>  : set cache
  --file, -f <file>  : read package names from file
  --noupdate, -u     : don't update setup.ini from mirror
  --help
  --version

リポジトリ(setup.ini)をアップデートする

ローカルで持っているツールの更新情報をアップデートする。

apt-cyg update

ツールをアップデートしてみる

ここでは、すでにインストールされたcppcheckをアップデートしてみる。

既存のcppcheckをまずは削除。

$apt-cyg remove cppcheck

次に、新しいcppcheckをインストールする。

$ apt-cyg install cppcheck

これで、cppcheckのバージョンが1.56から1.58にアップデートされた。

いろんなツールの更新を調べて、一気にアップデートするのはsetup.exeを使ったほうがよさそう。

追記 13/08/12

Cygwinに大きな仕様変更があったようで、32bit版と、64bit版で、Cygwinは分けられたようだ。64bit版には、inetutilsも見つからない・・・。

、久しぶりにapt-cygを実行したらエラー。

$ apt-cyg update
Working directory is /setup
Mirror is http://ftp.iij.ad.jp/pub/cygwin/
--2013-08-12 23:12:06--  http://ftp.iij.ad.jp/pub/cygwin//setup.bz2
ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.143, 202.232.140.144, 2001:240:bb8f::f:300, ...
ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.143|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2013-08-12 23:12:06 エラー 404: Not Found。

--2013-08-12 23:12:06--  http://ftp.iij.ad.jp/pub/cygwin//setup.ini
ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.143, 202.232.140.144, 2001:240:bb8f::f:300, ...
ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.143|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2013-08-12 23:12:06 エラー 404: Not Found。

Error updating setup.ini, reverting

404 Not Found…だと?

原因は、setup.iniが 32bit番と64bit番でディレクトリが分けられるようになったからだった。

http://ftp.iij.ad.jp/pub/cygwin/にアクセスすると、ディレクトリ構造が変更されていた。

ミラーサイトは以下のように、32bitと64bitで区別する必要がある。

// 32 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86/ update
// 64 bit
$ apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/x86_64/ update

正式版のapt-cygはこの仕様変更には対応していないみたい。forkしたapt-cygをみつけたので、しばらくはこっちを使うのが良さそう。

28 Feb 2013, 23:32

汚いコードをハイライト表示するEclipseプラグイン[Bracketeer for C/C++]

複雑な条件分岐に死にたくなったことがよくあると思います。たとえば、

if(1) {
  if(2) {
    if(3) {
      if(4) {
          printf("4重カッコだお(´・ω・`)");
      }
    }
  }
} 

とか、

  if (((i_am_sleepy == true) || (i_am_happy == false))&&
      ( (i_am_angry == true)|| (i_am_sad == true))) {
     printf("わけがわからないお(´・ω・`)");
  }

Bracketeer for C/C++でできること

こんなときには、コードをハイライト表示してわかりやすくしてくれるEclipseプラグイン[Bracketeer for C/C++]がかなり便利です。

C言語/C++用のEclipseプラグイン、Bracketeer for C/C++をつかうと、カッコの対応関係がハイライトされて見やすくなる。

C/C++用のCDTの他に、Java用のJDT版もあるようだ。

Bracketeer for C/C++のインストールは、[ヘルプ] > [Eclipse マーケットプレイス]から[Bracketeer for C/C++]で検索する。

カッコの対応関係が分かる

{} だったり、 ()の対応関係が色付きのハイライト表示されるので、どこがどのカッコに対応するかがわかりやすくなります。

20130301_breaketeer_0.png

画面からはみ出る条件の表示とジャンプ

一画面に収まらない{}や()、#if/#endifの対応関係の場合、条件の終わりから先頭へジャンプするためのリンクが挿入される。ジャンプは[Ctrl]を押しながらクリック。

色で確認することもできるが、ジャンプして直接確認もできる、ということ。便利!

20130301_breaketeer_1.png

28 Feb 2013, 12:56

検索ハヤッ!Eclipseユーザにオススメのインデックスサーチするプラグイン[InstaSearch]の紹介

Eclipseのデフォルト機能での検索、けっこう遅いですね。Eclipseでも、インデックスサーチできないかなと思って調べてみたら、ありました。それが、今回紹介する、InstaSearchです。

InstaSearch – Eclipse plug-in for quick code search

 

 

インデックスサーチとは

インデックスサーチとは、検索高速化技術の一つ。
検索を事前に実施してインデックスを作成しておくことで、検索が早くなる。
Googleデスクトップだったり、Windowsサーチとかにつかわれている。

一文字ごとに検索結果が変化していく高速性が素敵だ。

InstaSearchとは

InstaSearchはインデックスサーチを利用するので、検索がとても早い。

一文字一文字入力するたびに、検索結果が絞り込まれていくので、検索にまったくイライラを感じない。もちろん、Eclipseなので、検索結果をクリックすれば検索場所にジャンプできる。拡張子やワークスベースによる絞り込み検索も可能だ。

インストールはEclipse マーケットプレイスから。
ツールバーの[ヘルプ] > [Eclipse マーケットプレイス] から[InstaSearch]で検索。

InstaSearchを使ってみる

インストールして再起動すると、すでにインデックスが構築されている。
InstaSearchというビューが増えているので、試しに検索してみよう。

20130228_instasearch

拡張子の設定は、設定画面の[Exentions of files to index]で設定。
ここは必須なので、自分が検索したい拡張子を指定しよう。

image

キーバインドを割り当てよう

[ウィンドウ] > [設定] > [一般] > [キー]からキーバインドを設定すると便利。
InstaSearchで検索して[ビューの表示]にキーバインド(例えば[Ctrl + Shift + J])を割り当てる。

インクレメンタルサーチもいっしょに高速化しよう

前回紹介した、インクレメンタルサーチを改善するプラグインも合わせて使うとオススメ。

Eclipse プラグイン「Glance」でのインクリメンタル検索が便利な件 | Futurismo

 

 

しっかり調べたいときは、InstaSearchを、
サクッと調べたいときは、Glanceを、

なんて使い分けがいいと思います。色がカラフルなのはGlanceのほう。
ただ、InstaSearchでも、開いたエディタのインクリメンタルサーチを兼ねているので、Glanceの代わりになるかも。

28 Feb 2013, 11:21

百科事典のようなワクワク感!IT技術者のための「ストレージの原則と技術」を読みました

ストレージ技術を学ぶための決定版(だと思った)、「ストレージの原則と技術」について1/3くらい読んだので書評します。

網羅的な内容盛り沢山で座右の字引に

ストレージ技術についての広範囲な内容が、網羅的に記述されている。

ディスクのことから始まり、RAIDやキャッシュの機能、ネットーワークの仕組み、セキュリテイ、コピー技術などなど・・・

全ては書けないので、詳しくは以下のリンクから目次を参照されたし。
http://www.impressjapan.jp/books/3351

まるで、こどもの時の百科事典を開くようなワクワク感を感じながら読んでいる。知っている知識でも、しばらく思い出さないと記憶が薄れてきてしまうので、良い復習でもある。

この本は、EMCの教育部が書いたものらしい。
ところどころに、EMC製品の宣伝が出てくるのはご愛嬌。

ストレージとホストの関係、ネットワークでのつながりについて理解できる

仕事では、ストレージ側のソフトウェアを解説している。しかし、未だにサーバやネットワークとの関係性を知らなかった。いつか網羅的に記述されている書籍で、まじめに勉強しようと思っていたが、本書がまさにその題材にうってつけだった。

SANやNASの仕組みやホストインタフェースなど、詳しく書いてある。
不足していたネットーワークやサーバ分野の知識を学べることは嬉しい。

最新技術についていくための勉強ができる

最新技術用語も詳しく解説されている。以下、書籍より引用。

  • デデュプリケーション
  • ユニファイドストレージ
  • 仮想プロビジョニング
  • FCoE
  • フラッシュドライブ
  • ストレージ階層化
  • ビッグデータ

最新技術は、ITmediaだったり、ITproのRSSを購読することで付いて行こうとしてたつもりだったが、知識が断片的だったり、やる気がなかったりでちっともついていけてないのが現状だ。

最新技術に関するトピックが詳しく書かれているので、足りない用語や技術を補填できる。
メールを読んでも、会議にでても理解できないことがままあったりして、そういうときにすぐ調べたりすればいいんだけれども、そこをいつも怠けてしまう。

この機会に、集中して知識を入れ込むことで、置いてけぼりにならないようにしたい。

26 Feb 2013, 14:12

C言語のデバッグ加速!Eclipse CDTでのgdb機能がメチャクチャ便利だ。

Eclipse CDTには、グラフィッカルなgdbインタフェースがついてきます。

これが最近便利すぎるので、オススメ機能をここらでまとめときます。

基本的な設定方法

コンパイルオプション

まずは実行ファイルを作るときにコンパイルオプションで以下を追加。

CPPFLAGS += -g -O0

-g : GDB用のデバッグ情報を実行ファイルに含める。

-Oo : コンパイラに最適化をさせない。

ルックアップパスの設定

デバッグ・パースペクティブにソースが現れないときは、ソースのパスが設定されていない。

Can’t find a source file at : hogehoge…

[ウィンドウ] > [設定] > [C/C++] > [デバッグ] > [ソース・ルックアップ・パス] から追加したいソースがあるフォルダを追加する。

GDBを実行してみる

デバッグ・パースペクティブからF11を実行できればOK。

ソースを見ながらブレークポイントをはって、ステップ実行

ソースを見ながらブレイクポイントをはれるのが嬉しい。

貼る方法も、解除する方法も、クリックひとつだ。

はった場所は、別のビューから確認できる。

2013_0226_gdb_0.png

構造体や変数のなかもスケスケ丸見え

gdbの恩恵は、変数や構造体の中身を見て、さらに値を書き換えて実行できるところだ。

構造体のネスト構造を中の中まで確認できるのがとても嬉しい。

また、xUnitではテストしづらい部分もブレークを貼って手動で値を書き換えてテストスルことができる。痒いところに手が届くとは、ここから始まった。

変数や構造体の参照は、[変数ビュー]で確認できる。

図は複雑怪奇なaddrinfo構造体とsockaddr構造体。

中身の値まで丸見えだ。なんなら、書き換えも同じビューで可能。

2013_0226_gdb_01.png

また、ソース上で変数の上にカーソルを移動するだけでも確認できる。

ステップ実行で、セグメンテーション違反した箇所まで移動できる

これについては、以前記事にまとめたので、こちらを参照。

ステップ実行のためのよく使用するショートカットも以下にまとめます。

起動 F11 gdbを起動する
再開 F8 gdbを再開する。
はじめはmainで止まるので、F8でブレイクポイントまで移動することを
ステップイン F5 ステップ実行をする。
一行ずつプログラムを進めることができる。
ステップオーバー F6 関数単位で実行する。
関数の頭でステップオーバーすると、
関数内にはいらずに次の処理へすすむ。
結構使う。
ステップ・リターン F7 現在の関数がreturnするまでを実行する。
まあまあ使う。

 

他にも、ウォッチポイントを簡単に設定できたり、逆アセンブリ結果を表示できる。

とにかく高機能だ。

こんな便利なものが、無料で使えるならば、利用しない手はないだろう。

補足

  • Eclipse 3.7 Indigoでは、gdb7.4以降のバージョンが動作しないようだ。

Undefined maintenance set command: “python print-stack off”. Try “help maintenance set”.

のようなメッセージが出るはず。そんなときは、

  • Eclipse 4.2 Junoにアップグレードする。
  • gdbをダウングレードする。

のいづれかが必要。自分はcygwinで一つ前のgdbのバージョンに設定したら動いた。

Eclipse Community Forums: CDT ≫ Error message from debugger back end

  • Eclipseを使ってない場合はInsightという方法もある。

26 Feb 2013, 12:41

Eclipse プラグイン「Glance」でのインクリメンタル検索が便利な件

Eclipse CDTを使っていると、インクリメンタルサーチがけっこう貧弱に感じる。
かといって、検索機能を起動するまでもなくさくっと調べたい。

そんなときには、「Glance」がけっこう良かった。

eclipse-glance – Incremental Text Search and Highlight in Eclipse – Google Project Hosting

 

 

Glanceプラグインを利用すると、インクリメンタルサーチがサクッと、ハイライトが綺麗に検索できます。便利!


Glanceインストール方法

ツールバーの[ヘルプ] > [Eclipseマーケットプレイス]から[Glance]を検索。
あとは、指示に従ってインストール。

Glanceのキーバインドを変更する

標準のキーバインドだと「Ctrl + Alt + F」が割り当てられている。
これは、Eclipse CDTキーバインドのデフォルトでのキーバインドと重複している。

既存のインクリメンタルサーチ[Ctrl + J]をGlanceでのサーチに置き換えるのがよい。

ツールバーの[ウィンドウ] > [設定] > [一般] > [キー]を選択。
検索窓から[Ctrl + J]で引っかかったコマンドをアンパインドする。
次に[Open Glance]のキーバインドを[Ctrl + J]に割り当てる。

Glance使用例

こんな感じ。

24 Feb 2013, 22:19

[本]Jenkins (オライリー・ジャパン)を読んだ読書メモ

オライリー社から出版されている[Jenkins](かえる本)を読んだ読書メモです。

 

トピック満載な網羅的説明

この本を読んで思ったことは、

とにかく詳しい

です。 400p近くあり、けっこう分厚いです。
インストール方法、設定方法も、いろんなOSに対する方法が書かれています。
(Ubuntu,OpenSUSE,Redhat,CentOS,Windows….etc.)
手とり足取りといった感じです。

言語はJavaをベース。ただ、多言語への言及も詳しいです。

コード品質のためプラグインの解説、通知方法なども、網羅的に様々なものが紹介されています。 つまり、これ一冊あればなんでも載っているような印象を受けました。

高度な話題としては、分散ビルドや自動化デプロイメント、継続的デリバリなども取り扱われています。(熱を入れて解説されています)このへんは個人的にはよくわかりませんでした。

gitによるJenkinsの使い方の解説が詳しい

版数管理については、Subversionとgitによる解説がされています。

Gitの説明が詳しくて重宝しました。Git Pluginの設定方法が細かく説明されていました。
gitとJenkinsを組み合わせようとすると、ネット上の情報が頼りでした。
他の書籍では、ここまで詳しくはないです。

継続的インテグレーションの目的を明確に

以下、印象に残ったフレーズの覚書。

継続的インテグレーションとは、フィードバックを素早く返すようにすることで、リスクを低減させるものです。

定期的にビルドジョブを走らせる方法は、実際には継続的インテグレーションではありません。

とくに先週は、静的解析ツールを実行しわすれたばっかりにけっこう泥沼にハマってしまったので、そんな体験を思い出す度に、フィードバックを速く返すことの重大さを意識するのだった。

おまけ

なお、この本はネットでも無料でダウンロードできるみたい。(英語だけど)

Download Jenkins: The Definitive Guide

 

 

 

17 Feb 2013, 10:25

[本]IPv6ネットワークプログラミングを読んだ感想

仕事で、ひょんなことからIPv6のコーディングが必要になったので、読んでみた。

この本のよいところは、IPv4からIPv6へ移植する方法が豊富なコードとともに紹介されているのところだ。言語はC言語。

IPv6に関する知識的な部分よりも、実装方法があるところがよい。
個人的には、手っ取り早く実装して定時退社したいという考えなので、そんな思いに合致した。

前半では、IPv4からv6へ移行するための新しい関数や構造体が解説されている。
getaddrinfo関数の使い方やsockaddr構造体の使い方など、ことこまかく解説されている。

こういう知識はネット上にも探せばあるのだけれども、ネットの情報は断片的なので、本にまとまっている知識を読んだほうがずっとはやく吸収できる。

さらには、この関数たちはIPv6へ移植するときはもう使ってはいけないとか、こうやって移植するんだよという例も紹介されている。

addrinfo構造体はOpen-Closed Principleに従っている?

IPv6への移植だけではなくて、今後さらにアドレスファミリーが増えたときにも拡張できるような、より汎用的な方法が紹介されている。

  • Switch文はなるべくつかわないようにしよう
  • sockaddr_in/in6ではなく、sockaddr_strorage構造体をつかいましょう

C言語のソケットプログラミングで使うaddrinfo構造体が、
Open-Closed Principleな構造なことであることに気づいた。

Open-Closed Principle、略してOCP。
“拡張性に優れて修正不要な設計原則”の意味。

開放/閉鎖原則 – Wikipedia

addrinfo構造体は今後のアドレスファミリーが増えた場合にも備えて、
sockaddr構造体を、ポインタとして保持するという設計が、
拡張性を考慮しているんだなーと思った。

17 Feb 2013, 09:44

TC 技術検定 3 級 テクニカルライティング試験 (TW) 受験しました

はじめに

TC 技術検定 3 級 テクニカルライティング試験を受験した感想です.

ここにも合格体験記がたくさんあるみたい.

動機について

去年の重点目標の一つは, 日本語を正しく書くこと.

産まれた時から日本人をやっているが, まだまだ日本語をうまく使えないため, なにかテコ入れしておくかなと思ったのが動機だ.

また, 仕事では, コーディングする時間よりも, ドキュメント作成に割く時間の方が圧倒的に多い. メールや仕様書, 障害報告資料作成などなど, いままで人格を否定されるまでにイジメを受けてきたので, なんとか見返したいと思い立ったのが, 動機だ.

資格として頑張れば, モチベーションを保てるかと思った.

試験対策・勉強法について

テクニカルコミュニケーション協会の公式参考書を利用して学習を進める.

当日の感想

試験は新宿の工学院大学で実施された.

東京だけで, 140 人くらい. うん, まだまだマイナーな試験だと思った. 試験時間は 1 時間半. 途中退室可.

全て記号を選ぶ選択形式. マークシートではないところも, なんだかマイナー. ちなみに, 試験申し込みもネットからはできずに, 資料請求と郵便振込みなところもマイナーさを感じた.

リーダブルドキュメントを目指せ!

この資格の勉強は, リーダブルコードを読むのと同時進行で進めた.

おわりに

これからも, ブログを書くことで, 文章力を向上させていこうと思う. 試験問題は知識的な部分も多いか, 大事なのは普段の生活で実践できるかだ.

別に, 不合格だって, くやしくないもん.

追記

不合格だった…orz