プログラム

125件の投稿

コンピュータの組み立て 1

2台分のコンピュータの部品がそろいました。
一番気がかりは、オークションで買ったQ6600用のマザーボードに
新規に購入したDDR3メインメモリがマッチするかということです。

CPUとヒートシンクを密着させるためのグリスの扱いに自信がなかったので、
熱伝導シートを買いましたが、
現物をみて不安になりメーカーに問い合わせましたら、
メーカーもQ6600には使わない方がいいような口ぶり。
実際手持ちのセラミックグリスの熱伝導率が5.1W/mkに対しシートは1.0以下。
こんなものが役に立つのかね。
結局セラミックグリスを使うことにしました。

静音設計のケースは重量もありしっかりした作りなのでとりあえず満足。

さてオークションで買ったCPU’775対応のMSI製マザーボードに、
部品を組み込みスイッチをおしましたが、画面には何も表示されません。

メインボードの電源だけを接続するとファンは動きますが画面には何も表示されません。
更にCPU用電源をつなぐとファンも動かなくなり、当然画面には何も表示されません。

MSIのサポートに電話するとショートの可能性があるので、
ボードを一度ケースから出してテストしてみるように指示がありましたので、
そのようにしてみましたが駄目です。

CPUと電源の不具合の可能性があるので調べてみましたが、結果こちらは問題なしです。
ボードの不具合と結論しました。

オークションの出品者に連絡しました。
予想をしていたのですが、予想どおり次のような回答が返ってきました。
「こちらでは正常に動作していた。部品のアンマッチが考えられる。
返品不可の商品だから返品には応じられない」

第一ラウンド終了です。
新たなCPUとボードとメモリで再構成することにしました。
幸いツクモではCPUとメモリに交換保障のオプションをつけていましたので、
一度返品してショップで店員に相談しながら、
今度は間違いのないもにを買いたいと思います。

手持ちの古いCPUに合わせようとしたのが間違いの元でした。
オークションでマザーボードを購入し、不足部品を別途購入したり、
安全を期して交換保障オプションをつけてCPUを買ったりしたので、
結局1万円近くを無駄にしました。

勉強代と考えましょう。
おかげで最近のパソコンパーツのトレンドを学ぶことができました。

秋葉原のショップ

Windows95が出た当時は、秋葉原のショップはラオックスをよく利用していました。
本を買うときは必ずラオックスのコンピュータ館に行きました。
その後書籍は別館に移りましたが、
洋書もあるしほしい本は大抵そろっていたのでコンピュータ関連の本といえば先ずラオックスでした。

最初にコンピュータを組み立てたのもやはりラオックスで、
中央通に面した店舗で店員に色々教えてもらいながら部品を買い、
組み立てコーナーがありましたのでその場で組み立て、
重い思いをしながらJRを乗り継ぎながら持って帰った記憶があります。

何台か組み立てているとDosVパーツはツクモが安く品揃えもいいと気づき、
パーツはよくツクモで買いました。
ハードディスクはこの店で大抵はIBM(後に日立)のDeskstarばかり買っていました。

やがて自分で組み立てることが少なくなり、
本はもっはらアマゾンを使うようになったので、
秋葉原の西口方面のショップにはあまり行かなくなりましたし、
特にヨドバシカメラが東口に出来てからはもっぱら、
コンピュータといえばヨドバシカメラを利用するようになりました。
ヨドバシカメラは必ずしも安くないかも知れないが、
なんといっても品数豊富だし、商品が新鮮だし、ポイントカードを使えば、
やはりう安いかもしれないと思って何かといえばヨドバシカメラに行きます。

ヨドバシカメラを利用するもう一つの理由は、実は私はつくばエクスプレスの沿線に住んでいて、
このつくばエクスプレスがとても気に入っているのです。
線は基本的に高架か地下で、高架部分は家の建て込んでいない緑多いところを通り、
眺めがいいのです。高速で電車もきれいなので可能な限りこの路線を利用します。
その終点はヨドバシカメラ(専用?)という訳です。

さてコンピュータの組み立てですが、今回はオークションで買ったボードとQ6600を使うことにしました。
LGA775のCPUをもう一つ購入し、一昨年オークションで買ったコンピュータを復元し、
新しいケースにはリムーバブルケースに1Tのハードディスクを積んで、
Win7+Office2010+VS2010の最新の構成を実現したいと考えています。
ボードはレイド対応なのでレイドにも挑戦しようかと思っています。

不足部品(CPU、DDR3メモリ、DVD)は、ツクモのネットショップに注文しました。
2、3日内には届くと思います。
楽しみにしています。

コンピュータを自作します

IDE/HDDのコンピュータはWindows95の時代から20台以上組み立てたと思います。

SATAになって自作が面倒になったので、一昨年自作しないでヤフーのオークションで一台購入しました。
CPUはQ6600で当時としてはそれなりに上位ランクだったと思います。
ただ音がうるさく、CPUファンを変えてみたり、電源を変えてみたりしたのですが、
思ったほどに効果がありません。
それにリムーバブルディスクに改造しようと思っていたので、
ディスクは小さく160Gです。

昨年Dellを買いましたら、驚くほど静かで、
コンピュータはこんなに静かなのだと認識しました。

うるさいのがいやでどうしても変えたくなっていたので、
秋葉原にいったついでに、
まずSATA用のリムーバブルケースと2つのトレイを買いました。
HDはこれまでずっと日立(その前はIBM)のDeskstarを使っていました。
静かだし、安いし、故障がないので愛用してきました。
この際変わったものを使ってみようと、
シーゲイトを買いましたが、なんと1T3年保障で6千円弱です。

更に念願の静音設計のケースを購入しました。
頑丈で内部に防音シートが張ってあります。
HDやCDがボルトを使わないでもよくなっています。
期待しています。

今のマザーボードは安物なので、
新たにオークションでLGA775用のボードを7千円程で購入。
それにあわせてこれもオークションでグラフィックボードを3千円程で購入しました。
ゲームをする訳ではないので、解像度が1920×1080あればいいのです。
多分これで十分でしょう。

ところがここに来て「この一連の行動に方針がはっきりしなかったな」と少し反省しています。
CPUがQ6600でこれは使おうとなんとなく考えていて、
気に入らないマザーボードとケースを換えたかったのです。
その結果CPUは採ってこれに合わせて色々買い揃えていました。

昨日息子が来たので「コンピュータは要らないか」ときいたところ、
「要る」ということなので、結局オークションで買ったコンピュータをそっくり譲ることにしました。
すなわち、その結果わたしはそっくり一台部品が必要なわけで、
最初からそのつもりなら
「まずCPUから選定すべきで、初めにボードを決めることはなかった」
と思っています。

今新たにCPUとメモリとDVDを買うこととなり、マザーボードの選定に疑問が残りました。

明日期待のケースが届きます。
それを眺めて再度方針を検討しようと思います。

久しぶりにコンピュータの組み立てに取り掛かり、
数週間でも色々調べて自分で手を動かすとハードのトレンドが分かります。
逆に数年間自分で組み立てなかったので、パソコンハードの流れに疎くなったと実感します。

SQLチューニング 2

手伝い仕事が続いています。

SQLの[Exists]や[Not Extists]は便利な機能です。
例えば、

Select Name, Ordered  From Orders O
Where Exists (Select * From Customer C Where C.Name = O.Name)

これもサブクエリーの結果が大きい場合パフォーマンスが極端に落ちます。

前回と同じ手法を使いました。
すなわち、メインのSelect部分をワークテーブルに書き出し、
クライアントでサブクエリー部分を高速のレコードセットに変更し、
このテーブルとの照合をします。
結果は4分の処理時間が20秒弱にすることができました。

ところで今回はあるソフト会社で突然技術者が退社したらしく、
トラブルの山が残りました。

急遽応援を頼まれてこの一ヶ月およそ10個のバグ潰しをしました。
ちょっとしたコードの手直しは他に影響も少ないので、
修正すればそれで終わりですが、
ルーティンをそっくり変えるとなると、
実働システムでは慎重なテストが必要です。
まだ、2週間くらい必要かもしれません。

SQLチューニング

受注テーブルJと売上テーブルUがあって、
ある条件の受注に対して売上の情報を付加して画面に表示したいとします。

受注に対して全部売上がたっているとは限りません。
売上があれば当然そのデータを付加しますが、
まだ売上のたっていない受注の売上情報にはNULL(空白)を表示したいのです。
SQLでは左外部接合を使って次のように書けます。

Select J.A, U.B From J Outer Left Join U On J.受注ID = U.受注ID Where J.C = ‘xxx’

このような計算は多々あることです。

問題は、ここで受注は受注期間等の検索条件を設定し絞り込むことができますが、
売上は何らかの理由で絞りこみが出来なくて大きなテーブルだとします。

これが予想外の処理時間を使います。

試行錯誤の末私がとった解決策は、
まず条件にあった受注データをワークテーブルに書き出します
(このテーブルには後で売上データを書き込むフィールドを作っておきます)。

Insert Into Work_Table Select J.A FromJ WhereJ.C = ‘xxx’

後は、クライアントプログラムで、この受注ワークテーブルに対して、
売上テーブルのデータを付加していきます。

ここで二つのRecordsetを作ります。
一つは[Work_Table]に対応したもので更新可能にします。
前方向に一度移動するだけです。

問題は、このデータに付き合わせる売上データ用のRecordsetを高速にすることです。
色々試しましたが最終的には次のようにしました。

Dim rs売上 As New ADODB.RecordSet
With rs売上
     .CursorLocation = adUseClient
     .LockType = adLockReadOnly
End With

rs売上(“受注ID”).Properties(“OPTIMIZE”) = True

ここで重要なのは、[rs売上.Find]で使用する[受注ID]列のPropertiesの設定です。

実際の結果は、SQLのみでの処理が約15分、改善コードでは20秒にすることができました。
なお、テスト環境は[Dell Studio 540]、[SqlServer 2008]、[Access 2003 ADO]です。