Ubuntu で Eclipse PDT が不安定なので

編集中にいきなり落ちたり、もう最悪です。

もう調査に疲れました。
CentOS 5.x + Eclipse PDT 3.5.2 で良いです。
CentOS 5.x で DockbarX  が使えないのは残念だけど、サクサク開発作業が行える方が楽です。

後で、Scientific Linux 6.1 でも Eclipse が安定して使えるか調べてみます。

あ、Ubuntu を使う理由が無くなった…

Eclipse の PDT で CPU使用率が 100% になってしまう対策

Linux Mint 11 (Ubuntu Linux 11.04) の Eclipse で PDT を使っていると、CPU 使用率がほぼ 100% となって、操作のレスポンスが悪くなっていました。
最近、Linux Mint 11 で Eclipse を使う機会が少なかったので放置していましたが、久しぶりに必要となったため、不便な思いをしました。
気合を入れてぐぐってみると、以下を /usr/lib/eclipse/eclipse.ini に追加すると良さそうでした。

-XgcPrio:pausetime
-XpauseTarget:250

今のところ、良いみたいです。快適になりました。

すいません!上記は失敗でした。

Eclipse にガベージコレクションをさせれば良いようです。
「ウィンドウ」→「設定」→「一般」→「ヒープ・ステータスを表示」

すいません!また失敗でした。

しばらく最新版 Eclipse 3.7 Indigo を使ってみます。

 

Scientific Linux 5.6 on VMware Player

RHEL 5.6 って、 EPEL や RPMForge のリポジトリを追加すると、まだまだ使えちゃうんですよね。

なんか CentOS が信用できなくなったので、Scientific Linux 5.6 を VMware Player でインストールしてみました。
しかも今回は、無謀にも以下の環境です。

・Mother Board : D410PT (ATOM D410)
・Memory : DDR2 2GB×2
・HDD : 160GB SATA 2.5inch
・Windows 7 64bit
・VMware Player

結構トラブルが出たのでメモしておきます。

仮想マシンの作成

仮想マシンを作成したら、一旦 VMware Player を終了して、.vmx ファイルに以下を追加しておきます。
今回のように非力なマシンだと、大幅に体感速度が向上します。OSのインストールを楽に行うため、この時点で行っておきます。

mainMem.useNamedFile = "FALSE"
MemTrimRate = "0"

カーネルオプション

今回は以下を追加する必要がありました。

divider=10 apiccalibrationdiff=10000

udev設定の修正

udev に VMware が追加設定するのですが、誤りがあるため、以下のファイルを修正します。

/etc/udev/rules.d/99-vmware-scsi-udev.rules

内容は以下の URL を参考にしてください。
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1023898

yum-fastestmirror のインストール

CentOS と違って、インストール直後には yum-fastestmirror がインストールされていないので、以下のコマンドでインストールします。

# yum install yum-fastestmirror

その他、EPEL と RPMForge のリポジトリの追加をお勧めします。

参考 :

http://old.ikoinoba.net/wiki/?VMware#i82c51c6
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1032607
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1023898

http://old.ikoinoba.net/wiki/?VMware#i82c51c6

Ubuntu 11.04 で ibus のアイコンが表示されない場合の対応

インジケーターの ibus のアイコンが表示されなくなりました。

漢字キーを押してもこの通り。

パネルに通知領域を追加したら表示されましたが…

漢字キーを押したらこの通り。アイコンが…進入禁止?

~/.cache/ibus/ を削除して再起動すると、インジケーターにちゃんと表示されるようです。
ibus の起動直前に削除してやれば大丈夫なはず。
/etc/X11/Xsession.d/80im-switch の先頭15行目あたりに以下を追加。

rm -rf "$HOME/.cache/ibus/"

パネルから通知領域を削除します。

ログイン直後。

漢字キーを押しても大丈夫。

Windows 7 SP1 はダウンロードセンターからのダウンロードを

大きな機能追加がないので、大したボリュームではないだろうと思っていましたが、とんでもない。
2台以上のアップデートをする場合には、Windows 7 SP1 はダウンロードセンターからのダウンロードすることを強くおすすめします。
特に x64 の場合は無駄な時間を省けます。

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

関数を定義。

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 の方が良い場合もあるようですね。