2007年9月9日日曜日

Boot Camp

Mac に Windows をインストールするには Boot Camp を使う。
いわゆるデュアルブート環境が作成できる。

流行の VM 方式に比べると同時に使えないのが弱点だが、
ネイティブに実行されるため動作が速いという利点がある。

今回、MacBook + Vista DSP 版 + メモリ 2 GB で試してみた。

現在の最新は 1.4 となっている。
ガイドに従っていくだけで簡単にインストールできた。

以下は覚え書き。
  • 32 GB を Vista に割り当てしようとすると、「移動できないファイルが~」みたいなエラーになってしまった。指示通りにバックアップして再度ファイルコピーするのは面倒なので、25 GB に変更してインストール。
  • Boot Camp で作成した Windows 用のドライバ CD をインストールしなくても、ある程度動作するが、キーボードやマウスが若干おかしいし、無線LANも認識しない。インストールすれば OK。
  • 「英数」キーを IME OFF に設定すると Mac っぽく IME を切り替えられる。「Microsoft IME のプロパティ」「編集操作」「キー設定」で無変換キーの割り当てを IME OFF に変更。
  • Vista をインストールするだけで 10 GB 程度消費した。
  • Aero もOK。パフォーマンスはプロセッサ 4.9、メモリ 4.5、グラフィックス 3.1(3D も同じ)、ハードディスク 4.3。なかなか優秀。視覚効果をフル設定しても特にもたつきは感じない。
  • alt キーと win (command) キーは入れ替えたほうが Windows っぽい。レジストリを書き換えて入れ替え。「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout」に Scancode Map という名前で種類は REG_BINARY で追加。データは「00 00 00 00 00 00 00 00 03 00 5B E0 38 00 38 00 5B E0 00 00 00 00」。

2007年8月15日水曜日

MacPorts

MacPorts は数ある UNIX ツールの管理システムのようなもの。
これさえあれば、コマンド一つで vim や w3m 等をインストールできる。

【準備】
インストール説明のページに従って準備する。

簡単に説明すると、、、

(1) Xcode をインストール
OS CD に付属しているものではなく、
最新版をダウンロードしてインストールしておくのが無難。
ちょーでかいけど(約 1 GB)。

古い Xcode だと、いくつかのツールのインストールに失敗するみたい。

(2) X11 をインストール
OS CD の Disk1 から Optional Installs
・MacPorts をインストール

【使い方】
port コマンドの簡単な使い方

2007年8月12日日曜日

mfiler2

Finder でもいいんだけど、
2 窓のファイラが欲しくて the Minnu's filer2 をインストールしてみた。
  1. ソースを展開
  2. ビルド&インストール(うちの mac ではこの手順)
    % ./configure --with-ruby-header-path=/usr/lib/ruby/1.8/universal-darwin8.0/ --with-ruby-lib-path=/usr/lib --with-ruby-lib-name=ruby
    % make
    % sudo make install
前に試してみたときは途中でエラーになる箇所があって、
ごにょごにょしないとビルドできなかったけど、
何やら3.1.5で正式対応ってことになったみたい。

エラー対応のビルド手順をまとめておこうと思ったら、
必要なくなってました。。

2007年7月16日月曜日

vimrc - 最低限の設定


"-- 2008/10/01: 文字コード周り見直し
"-- 2008/09/03: スクロール補助 (space -> page down, bs -> page up)
"-- 2008/04/28: fencs の並び順を修正。utf-8 の優先順位を上げた。

""" 文字コード
set enc=cp932 " vim 内部文字コード: Mac/linux=utf-8, Windows=cp932
set fencs= " 空白設定すると常に enc で開く(file open 速度上昇)
set langmenu=japanese

" 文字コード判定コマンドを定義(全角文字が化けたら :Fenc を実行)
command Fenc call s:Fenc()
function! s:Fenc()
if &modified
echo "ERR: No write since last change"
else
set fencs=iso-2022-jp,utf-8,euc-jp,cp932,ucs-2le,ucs-2
exec "se fencs-=".&enc
e!
set fencs=
endif
endfunction


""" インデント
set smartindent " インデント調整あり、コメント維持
set shiftwidth=4 " tab 文字の入力幅
set tabstop=4 " tab 文字の表示幅
set expandtab " tab を空白文字に置き換え

""" 削除
set backspace=indent,eol,start " BS で indent,改行,挿入開始前を削除
set smarttab " BS でインデント幅を削除

""" 検索
set hlsearch " 検索文字列を色づけ
set ignorecase " 大文字小文字を判別しない
set smartcase " でも大文字小文字が混ざって入力されたら区別する
set incsearch " インクリメンタルサーチ

""" バックアップ
set backup " ファイル上書きでバックアップファイルを作成
" set backupdir=/vim_back " バックアップファイルの保存場所
" set directory=/vim_back " 一時ファイルの保存場所

""" 表示
set background=light " 背景の明るさ。light or dark。(配色に影響)
syntax on " シンタックスの色づけ有効
set ruler " 左下に行列位置を表示
set showcmd " 入力中のコマンド(キー)を右下に表示
set wildmenu " コマンド入力をタブで補完
set wildmode=list:longest,full " 補完動作(リスト表示で最長一致、その後選択)
set showmatch " 括弧の入力で対応する括弧を一瞬強調

""" その他
set mouse=a " ターミナルのマウスを有効
set hidden " 編集中に他ファイルを開ける (undo 履歴は消えない)
filetype plugin indent on " ファイル別 plugin (~/.vim/ftplugin/拡張子.vim)

""" 機能追加
" enter で検索ハイライトをクリア
nnoremap <silent> <cr> :noh<cr><cr>
" visual 選択中に * で選択文字列を検索
vnoremap * y/\V<c-r>=substitute(escape(@@,"/\\"),"\n","\\\\n","ge")<cr><cr>gV

""" オリジナルコマンド追加(例)
command TimeStamp call s:TimeStamp()
function! s:TimeStamp()
call append(".", strftime("%Y/%m/%d %H:%M"))
endfunction

"""""""""""""""" vim online : tip #305

2007年6月24日日曜日

GUIプログラミング

仕事が組み込み系というのもあって、GUI関係に弱い気がする。。

マルチプラットフォームだしQTでも勉強すっかな。
Qt Reference Documentationでも見てみよう。
4.0はこっちかな。

2007年6月16日土曜日

Graphviz

グラフ作成ツールのGraphviz。

適当に図を作成するときに楽できるかも。

2007年6月9日土曜日

ソフトウェア工学とは何か

面白い文書を見つけた。

ソフトウェア工学とは何か

潜在意識レベルではわかっていたことに気付かされる文章。
次のように考えるべきかな。適度にコーディングするのがポイント。

自分流に置き換えるとこんな感じかな。

基本設計フェーズ
  • 実現する機能をまとめた「管理文書」作成。
  • モジュール分割方針と全体シーケンス作成(外部サブシステムとの意識合わせ用)。
  • 外部サブシステム用のインタフェース仕様書を作成する。実際に空実装でコーディングして、呼び出し側も作ってみてビルドし、イメージを膨らませる。

詳細設計フェーズ
  • 補助ドキュメントとして「実装方針」を文書化する。
  • 内部のモジュール分割と処理シーケンスを図示する。詳細に書くと「真の設計であるコード」と乖離するので「適度に省略するのが重要」。
  • 内部処理なしの関数コールだけのコーディングを進める。データのインプット(引数やメンバ変数)とアウトプット(戻り値やメンバ変数)を意識しておく。
  • 外部からのイベントによって状態が変化して、その後のイベントによる振る舞いが異なる場合は、状態遷移表でパターンを網羅しておく(表にするのがポイント)。

実装フェーズ
  • 関数の内部実装を完成させる。
  • 異常系以外の正常動作レベルを確認する。

単体テストフェーズ
  • 外部インタフェースの引数/戻り値を網羅してテストパターン作成。
  • 内部処理で気になる部分はそこだけ取り出してでもテストする。
  • 基本的に全パスを通す。

結合/システムテストフェーズ
  • いろんなことをしてみる。