ATOM 230 ベアボーンのメンテナンス

嫁さん用に組んだATOM230のベアボーンの調子が悪い。
Windows 7 Home Premiun がフリーズする。
フリーズするのはフォルダ操作やドライブに関連する操作を行った場合が多い。
さすがに様子を見る段階ではないと判断して対策を行った。

ベアボーンキットは Jetway JBC200C91-230B
まず、BIOSがOSを起動するまでに1分以上かかっている。しかもDVDからのBOOTが出来ない。

とりあえず、DVD->SATA 1st、HDD->SATA 2nd となっていたので、HDD->1st、DVD->2nd に変更したところ、正常に動作した。
しかし、ベアボーンキットに含まれていたSlimline SATAケーブルのDVDへの挿し込みがグラグラしている。多分これが原因だ。
さらにケーブルが余ってケース中をのたうちまわっている。

後日、パソコン工房米子店でSATA関連のケーブルを購入して交換した。
ainex SATR-3102BK
ainex WA001SA
ainex SLS-3002SA
結果にはかなり満足している。ケース内を見るたびにイライラしていたが、すっとした。

2万円以下のベアボーンに3千円の追加投資はどうかとも思ったが、ブラウザー・メーラー・Skypeぐらいが主な利用目的で、まだまだ現役で使えるため、ちゃんと対策をしておいた。
将来は開発用のサーバなどにも転用できるし。

文字数に応じてフォントサイズを計算

関数を定義。

function fit_font_size( $width, $str, $max_font_size = 16 ) {
    return min( $max_font_size, $width / mb_strlen( $str ) * 72 / 25.4 ) ;
}

$width は表示領域の幅で単位は mm。
$str は表示する文字列。
$max_font_size は最大フォントサイズで単位はポイント。

式中の 72 は 1インチあたりのポイント数。
式中の 25.4 は 1インチのmm。

1文字あたりの幅(mm)を計算してポイントへ変換。
その後最大フォントサイズに丸める。

SQLの最適化

以下のクエリで一覧を表示したかったのですが、かなり時間がかかっていました。

select * from "test_order"
where ("order" is null)
and ("cart" in (select "cart" from "test_order_item"))
order by "cart" desc
;

総実行時間: 37,102.619 ミリ秒
とても実用ではありません。

古い PostgreSQL は IN句が極端に遅かったので、以下のように変更してみました。

select * from "test_order"
where ("order" is null)
and (exists(select "cart" from "test_order_item" where "test_order_item"."cart" = "test_order"."cart"))
order by "cart" desc
;

総実行時間: 47,345.715 ミリ秒
さらに悪化しました。

WHERE 条件から JOIN に変更してみました。

select "test_order".*
from "test_order"
join (select "cart" from "test_order_item" group by "cart") as "test_order_item"
on ("test_order_item"."cart" = "test_order"."cart")
where ("test_order"."order" is null)
order by "test_order"."cart" desc
;

総実行時間: 15,586.267 ミリ秒
劇的な改良となりました。

ちなみに GROUP -> DISTINCT とした場合。

select "test_order".*
from "test_order"
join (select distinct "cart" from "test_order_item") as "test_order_item"
on ("test_order_item"."cart" = "test_order"."cart")
where ("test_order"."order" is null)
order by "test_order"."cart" desc
;

総実行時間: 28,382.042 ミリ秒
改悪です。

IN 句よりもサブクエリで GROUP して JOIN の方が良い場合もあるようですね。

米子市はまた大雪

大晦日から元旦にかけての大雪が、まだ溶けきっていないのに、また大雪です。
我が家のあるアパートの隣は、一軒家で空き家なんですが、誰も雪を掻いていないためにスッポリと雪に覆われています。

どうか、この状態の米子市で、火事や地震が起きませんように。
そんな事になったら、まさに地獄ですね。

自分が市長や市議会議員や市の職員なら、安心して眠れませんね。
なんせ、家族の安全を確保するだけでも大変ですから。

今朝は、4キロ先の保育園まで、子供と嫁さんと歩く予定です。
でも、歩道が歩けないんですよね。
車を通行止めにしてでも、歩行者の安全は確保して欲しいものですね。

なんか、文字にするとすごく当たり前の事を言っているように感じますが、車優先で雪かきをして歩道は雪に埋まっているのが当たり前になってしまっています。
こんな状況では、効率より安全を優先して欲しいものです。

Ubuntu 10.10 で OpenJDK

Sun の Java の方が良いと思っていたのですが、OpenJDK を使ってみたら Eclipse が軽快に起動しました。
どうも OpenJDK 6 は、開発中の JDK 7 を元に開発されているようです。

RHEL と Fedora の関係のように、オープンソースのほうが進んでいるケースの一つですね。

Ubuntu から Windows 7 のフォルダにアクセス可能にする

あきらは日常は Windows 7 を使っています。
現状では DVD や YouTube など、メディアの再生についてはやはり Windows が良いです。
また、慣れれば Windows 7 の Aero は使いやすいですね。

開発マシンは VMware Player で、仮想マシンの Ubuntu 10.10 を起動しています。
まるごとバックアップができるのも利点です。

当然、仕事の書類(主にメールの添付ファイル)は Windows 7 で管理しているディレクトリに保存しています。
しかし、Ubuntu から Windows 7 のフォルダに SAMBA でアクセスできませんでした。
VMware の共有フォルダを使おうかと思いましたが、将来開発用のマシンを常時起動させておくつもりのため、VMware 限定の方法は使いたくありません。

あんまりにも不便なので調査しました。

Windows 7 と双方向のファイル共有をしたい
DC-MCNP1 Windows7共有にアクセス不可

「解決できたからいいや」じゃなくて、こうして経過を残して頂くとありがたいですね。

レジストリの更新ファイルを作成しましたので、自己責任で使ってください。
win7_samba.reg

Windows 7 側で上記ファイルを実行して再起動します。

いやぁ、快適になりました。

Androidアプリ開発環境は Ubuntu 10.10 で

開発環境の Ubuntu 10.10 を立ち上げるのが面倒なので、直接 Windows 7 上に JDK + Android SDK + Eclipse + ADP な環境を作成しました。

が…

Androidエミュレータを立ち上げるだけで数分必要で、何とかならんものかと困っていました。

試しに同じ環境を Ubuntu 10.10 で準備したところ、Androidエミュレータは10秒以内で立ち上がるし、パフォーマンスも良く、なんの問題もありませんでした。
※ 2011/01/13 「10秒以内で立ち上がる」→「1分以内で立ち上がる」に修正します。

最初からこうすれば良かった。

ちなみに、我が家の嫁さんは将来への投資には積極的なので、こういう新技術へのチャレンジは応援してくれます。
あきらはアンドロイド開発者として登録を済ませました。

米子市から愛を込めて

明けましておめでとうございます。

米子市は記録的な大雪だそうですが、正直、参っています。
家庭用のプラスチックの雪かきシャベルでは太刀打ちできません。ヒビが入ってしまいました。
スコップを買いに行くにも、路地は除雪がほとんどされていなくてひどい状況です。
なんとかヒビの入ったシャベルでクニャクニャさせながら雪をかいています。
というか、あきらは鳥取市出身ですが、米子市は気温が低いらしくて、圧雪というか、もう氷の板状態です。
所々に切れ目を入れて、地面との間にシャベルを滑り込ませて剥がしているような状態です。

今年ほどの大雪はないにしても、毎年1、2回は圧雪となって、こんな状態です。
もう分かり切っている事なので、市は対策をして欲しいですね。

っていうか、あきらが米子市に来る前からこの状態の繰り返しだったんでしょうね。
米子市民は何を考えて市長を選んでいるんですかね。