Aspire one D250 (AOD250-Bw18) + XP

職場の人に安いネットブックが欲しいと言われて所有のSOTEC C1を安く譲ったため、今度は高解像度のネットブックにしようとAOD250のWindows7Starterモデルを購入。スペックは大差無いものの解像度が上がって見易い。

暫くOSは7Starterのまま使おう、と思ったが1週間でその遅さに挫折。使い易いのは確かなのに。Aeroが使えないのが遅さの原因でしょう。XPだったC1がサクサク動いてただけに反応の遅さが辛い。

といいうことでXP Homeを入れることに。ただしメーカーHPにあるXPモデル用ドライバーを入れると起動不能になるという。チップセットドライバなのでインストール時にF6押してSATAドライバ読ませれば大丈夫だろう、と始めたが接続できるFDDが無くてドライバ読み込めなかった /(^o^)\。でも組み込んだインストールディスクをわざわざ作るのも面倒だし。

ということで下記の強引な方法でXP導入に成功。メモ取ってたわけじゃないので名称とか違うかもしれないけど、流れはあってるはず。

  1. BIOSで「MAIN」→「SATA Mode」を「IDE」にしてXPインストール。IDEモードでは遅いのでのんびり待機。
  2. SATAドライバをダウンロード、展開しておく。(Setupを実行してもエラーになる)
  3. 「管理」→「デバイスマネージャ」→「IDE ATA/ATAPIコントローラ」→「標準IDEコントローラ」を開く。
  4. 「ドライバの更新」→「特定の場所から」→「検索しないで選択」→「ディスク使用」で展開したSATAドライバ内の「f6flpy32」フォルダを指定。
  5. 色々警告が出るが無視してインストール。
  6. 再起動時にBIOSを開き、「SATA Mode」を「AHCI」に変更。
  7. チップセットドライバをインストール。

これであとは普通に他のドライバー等を入れてXP環境を作ることが出来ました。

ちなみにXPを入れる前にVistaを入れてみたら思いのほか快適。やはり7StarterはAeroが使えないために遅いのでしょうなぁ。

IE8でscrollIntoView()

以前作成したシステムで、IE8で選択した項目へスクロールしないという問い合わせがきた。職場のPCはIE8導入禁止だったから、というのは建前上の言い訳として、一応テストして動いたハズなのに?

調べるとscrollIntoView()が機能していないようだ。情報を探してみるが見付からないので自分で検証。適当なタグを並べてscrollIntoView()で飛んでみるとちゃんと動く。scrollIntoView()にIE8が対応していないわけではなさそうだ。

ともかくtr要素で飛ばそうとしても無理なので、内側のtd要素でscrollIntoView()を使うようにしたら解決した。

document.getElementById("<tr>のID").scrollIntoView(true);
 ↓↓
document.getElementById("<tr>のID").cells.item(0).scrollIntoView(true);

でも何でだろう。不可視タグ(?)だから表示させる位置が分からない、とかなのか。不思議だ。

システムアーキテクト試験

昨年に引き続き、システムアーキテクト(SA)試験(旧アプリケーションエンジニア)を受験。内容は組込み系分野が増えるくらいなので、前2回とも論文で落とされた僕は、論文中心に勉強して挑んだわけです。

午前1は春のDB受験のおかげでパス。ちなみにDBは新試験の罠にはまって落ちました。

午前2

知らない言葉が沢山。これは早急にオワタ感が強い。何とか感と運で乗り切って6割は超えた様子。危険だった。

午後1

4問中2問選択回答。(旧試験は問1,2必須で問3,4いずれか選択) 旧試験では時間制限がきつかったので、新試験では問題数が減って楽になる…、という話だったが内容が膨らんでた。

さっと読んで問1と問4を選択、問1に60分ほどかかってしまう。内容増えてるよ、そういや春のDBもこの罠にはまって時間切れしたんだっけな、と思い出しながら問4へ。問4は今回増えた組込み系だったが、組込み的な回答が必要なのは最初くらいで、あとは普通のシステム構築だった。SAの立場的には確かにその程度だよね。

後日公開されたTACとITECの回答であわせると6割前後といった感じでビミョー。

午後2

難関の論文。最低文字数が200字減ったが、設問イと設問ウの質問が変わった。TACの問題集ではIPAから出されてたサンプル問題をベースにした例題が作られてたので、それを元に構想を練っていたが、実際のものはそのドレともパターンが違った。

問1の「要件定義について」を選択したが、設問イが「どのような点に留意してユーザ要求をヒアリングし、どのように要件としてまとめたか」で、設問ウが「ユーザとの認識の相違をなくすために、重要と考え工夫した点について」となっており、イとウの内容の分け方に悩む。どうしても似た内容になってしまう。全体設計で悩んでるうちに30分近く経ってしまったので急いで書き始めたが、設問ウが書き辛くて進まない。アは700字程、イは900字程、ウは600字ギリギリくらいで、時間もギリギリに書き上げたので敗北感が強い。

まとめ

来年もよろしく。

2010バージョンアップも見送り

バージョンアップ案内が届きました。2009は予算的に見送ったので次は買えれば、と思って見ていると気になるものが。

Professional
- (各DB)へのローカルデータベース接続
Enterprise
- (各DB)へのリモートデータベース接続

あれ、Proではリモート接続できない? 慌てて2007の機能比較を見たら同様のことが書いてあった。何てこった、接続しまくりなんですけど。

ただし調べてみたら、EULAでPro版のリモート接続禁止されてるのは2009からの様子。じゃぁ2007での接続は一応セーフなのかな。Dllの配布もOKになってるし。

というわけで、2010を購入するにはEnt版でなければならないわけで。アップデートパッケージで160k。「買えますか?」「無理でーす」オワタ。せめてPro版の46kなら何とかなったかもしれないのに。

そんなわけで2010もバージョンアップ見送り。自宅でバージョンが違うと使い辛いので自宅用も見送り。これは他への乗換え(VisualStudioくらいしかないけど)を検討しなければならないのかな……。

LAST_INSERT_ID()

dbExpress経由でmysqlへ接続したところ、LAST_INSERT_ID()で0しか取得できなかった。これではAUTO_INCREMENT値が読み出せない。接続維持されてれば残るはずなのに。トランザクション処理で手動ID生成すれば良いがスッキリしない。

ググっても良情報が無かったので、C++Builderのヘルプから探すとこんなプロパティが。

TSQLConnection::AutoClone
データベース接続が必要な場合にSQL接続が自動的にデータベース接続を複製するかどうかを指定します。(default: true)

これによって連続したクエリはクローン接続を作成して処理しているそうな。ゆえにLAST_INSERT_ID()のクエリはクローン接続で処理されていたために正常に動作しなかった。これを動的にfalseすることで解決。

オブジェクトインスペクタのプロパティリストに並んでれば、これで一日費やすことも無かっただろうに……。

svnリポジトリの整理

職場のHDDがエラー出すようになったので交換。整理するついでにsvnリポジトリを整理することにした。

最初に構成決めるとき、参考にできるものが無くてフォルダ構成そのままで作ってしまったのでこんな状態でした。

 svn
  +--BCB6
  |   +---_プロジェクト1
  |   +---プロジェクト2
  +--BDS2007
  |   +---プロジェクト3
  +--CCB2007
  |   +---プロジェクト1
  |   +---プロジェクト4
  +--document
  +--VC7

コンパイラ毎に大別して、その中にプロジェクトを作る形。さらにBCB6からCCB2007に切替えた場合はブランチをCCB2007に作成し、元のBCB6のフォルダには「_」を付けて移行済みであることを示すわけです。

ヒドイものです。全て一つのリポジトリなのは、コンパイラ移行時にブランチで分けれないからでした。(最初はコンパイラ毎にリポジトリを分けていたがそのことに気付いて統合した)

Tracを使ってみたくなったので解説書を見ていると「プロジェクト毎にリポジトリを分けなければ使えない」ということだったので、この機会に整理して分割しようかと。

どういう構成にしようか調べてみると、こういう形が基本であるとsvnのマニュアルに書いてあるじゃないですか。何で最初これ見なかったんだろう…。

 project
  +--trunk
  +--tags
  |   +--tag1
  |   +--tag2
  +--branches
      +--branche1
      +--branche2

単一コンパイラのプロジェクトはtrunkに投げ込めば完了だが、複数コンパイラをまたいだプロジェクトは上手く行かず。最初のプロジェクトの方に新しいコンパイラ用ブランチをマージしてしまえば良いけど、そうするとコミットログが無くなってしまう。ブランチのほう見れば良いけど、これでは使い辛い。

ということでこんな妥協形式に。

 project
  +--trunk
      +--BCB6
      +--CCB2007

dumpを上手く操ればコミットログ残してマージしたり出来るんだろうけど、そこまでやれなかった。

さらに、プロジェクト毎に分かれたところでリポジトリ分割しようとdump > loadするが、フォルダをあちこち移動してしまったためか上手く分けれない。結局単一リポジトリのままで運用することになってしまった。

Tracはまだ使えそうにありません…。

CppUnit

他人の作ったソフトのリファクタリングに使えないかと、CppUnitをC++Builder2007で使ってみたので準備手順を。実際の使い方は各解説サイトへ。

1. contrib/bc5/bcc-makefile.zipを解凍

2. 出来たbccフォルダをcppunit直下にコピー

3. makefileの「BCC=」をCCBのインストールフォルダに変更

スペースは「%20」にしないとエラーになる
BCB=C:\Program%20Files\CodeGear\RAD%20Studio\5.0

4. mksrclist.cppの「#include

」を「#include 」に変更 5. mksrclist.cppをコンパイルしてmksrclist.exeを作成

bcc32 mksrclist.cpp

6. makeするとdllとlibが色々生成される

      • -

使えるようにしたものの、そのソフトが複雑難解すぎてそれどころじゃなかった。困ったものです。