ラベル 環境構築 の投稿を表示しています。 すべての投稿を表示
ラベル 環境構築 の投稿を表示しています。 すべての投稿を表示

2011年8月4日木曜日

[Eclipse]: Autocomplete Feature Shows only "No Default Proposals" on Eclipse

A Japanese version of this document is in TechRacho. I got new MacBookAir (Mid 2011, Lion) and build my development environment from scratch. When I installed Eclipse 3.7.0 + ADT, the code assist feature (autocomplete) does not work. It shows only "No Default Proposals" and no any other nominations available.
I solved this problem. This may not be ADT dependent, it may apply to all other Eclipse-based IDE.

2011年6月24日金曜日

[Mac]: 捗るコマンドライン・ターミナル環境iTerm2

僕の周囲のエンジニアもほとんどがMacを使うようになり,今まで頑なにWindowsで開発してきた人たちも「そんなにいいなら試してみようかな・・・」といった感じでMacを試している人が最近増えている気がする.
初めてMacを使う人が困るのが,どんな環境を揃えれば良いのかがわからんという事だと思う.Windows時代に使って慣れていたGUI系のソフトウェアが使えないので,開発効率が落ちてしまわないかが心配になるというのもありそう.
そんなわけで,主にコマンドライン実行環境に絞って最近の自分の開発に使っているソフトや設定を晒してみる.主にWindowsではputty(jp)Poderosaを使っていた人が対象になるかと思う.

2010年8月13日金曜日

[Git]: gitサーバマシン上で行う初期設定

GitSubversionはもはやチーム開発に無くてはならないツールとして定着してきているが,Subversionがインストールしただけでとりあえず動くのに対し,Gitは初期設定をしてやらないとうまく動かない.
といってもそんなに面倒なわけではないので,とりあえず以下のコマンドを実行しておけば問題ない.

git config --global user.name "Your Name"
git config --global user.email youremail@example.com
git config --global core.editor emacs
git config --global color.ui true

特にcolor.uiの設定をするのとしないのではコンソールで作業をするときの効率が大きく違ってくる.
core.editorも設定しておかないと,debian系ディストリビューションだったりするとnanoが起動したりしてワケが分からなくなるので自分の使っているエディタに設定しておくべき.

2010年8月6日金曜日

[iPhone]: データ通信が不安定なときの対処法

iPhoneを使っているとたまに3Gデータ通信が不安定になり,完全に繋がらなくなる時がある.
特に大容量のデータ通信を続けて行なったときなんかに多い.
そういった時は「設定」メニューから「機内モード」を一時的にONにし,3Gが一時停止したのを確認したあとOFFにすることで,3G周りを再起動すると繋がるようになることが多い.

個人的な推測になるが,Softbank側で帯域制限か何かをやっているのではないかと思う.3Gを再起動することで,新しいIPを拾うので,それで回避できるのかも.
でもまあ,本気で帯域制限しようと思ったらSIM IDを使って帯域制限するだろうと思うので,この予想は外れてる気がしないでもない.

とりあえずの対症療法ということで.

2010年8月5日木曜日

[Mac]: 17インチMacBook Proでのノマドワーキング

17インチMacBook Pro Mid 2010を買ってからそれまでのコーディングライフが大きく変わった.
これまで自宅や仕事先など,大画面ディスプレイがないとがっつりコーディングするつもりになれなかったのが,このマシンのおかげでどこでも作業できるようになった.

いわゆる最近流行りのノマドワーキングへの一歩を踏み出して2ヶ月ほど経ったので,僕なりに考えた利点や使っているツールなどを書いていこうと思う.ツールなどはWebアプリケーション向けだが,ノマドワーキングの利点などは他の分野でも同じだと思う.

2010年7月29日木曜日

[iPhone][b-mobile]: b-mobile SIMをiPhone 3Gに刺してiPad Wifiを繋ぐ

今更ながらb-mobileSIM U300を買ってみた.目的はiPhone 3GをWifiテザリング端末として利用すること.

iPad Wifiは自炊した本を読んだりするのには非常に便利なのだが,ちょっと大きい画面でTwitterを見たり,Evernoteのノート更新をしたいと思ったときにいちいちWifiのあるところまで行くのがなかなか面倒だったりする.
と言ってもiPad 3Gの為だけに新しくもう一回線契約するのも固定費がかさむ.現状iPad Wifiをインターネットに繋ぐにはWifi経由でインターネットに接続するしか無いので,こちらの記事にあるようなモバイルルータという機器を使う事になる.

しかし,このモバイルルータが実は結構高い.大体3万円〜5万円くらいするので,2年で減価償却すると考えても月1500円程度の固定費が発生するのと同じになる.
モバイルルータとは別に3G網の回線契約も必要になるので,このコストはちょっと受け入れ難い.

そんな時,手元にiPhone 3Gがあれば,これをモバイルルータとして使う事ができるので,その方法をまとめてみた.
接続イメージは下図の様な形になる.


2010年2月22日月曜日

[PHP][Symfony]: Symfonyプロジェクト内にSymfonyライブラリを含める

require_once dirname(__FILE__).'/../lib/vendor/symfony/autoload/sfCoreAutoload.class.php';
多数のSymfonyプロジェクトを扱っていて困るのは、既にリリースして安定稼働中のSymfonyプロジェクトと、新規で開発するSymfonyのバージョンが異なるというケースだ。
一応Symfony公式ページではupdate方法も書かれているが、安定稼働中の本番サイトのバージョンアップはやはりリスクが大きい。
なので、バージョンの違うSymfonyを共存させる方法を書いておく。

基本的にはSymfonyのライブラリディレクトリを丸ごとプロジェクトディレクトリ内(SF_ROOT以下のどこか)にコピーし、コンフィグファイルにそのディレクトリを指定してやれば良い。

古いバージョンのSymfonyだと、config/config.phpというファイルがあり、ここにSymfonyのパスを指定するようになっている。これを「dirname(__FILE__)."/../pear/symfony"」などに変えてやれば良い。

$ cat config/config.php
<?php

// symfony directories
$sf_symfony_lib_dir = '/usr/local/lib/php/symfony';
$sf_symfony_data_dir = '/usr/local/lib/php/data/symfony';
最近のバージョンの場合は、config/ProjectConfiguration.class.phpというファイルに設定があるので、最初にあるinclude行を

require_once dirname(__FILE__).'/../lib/vendor/symfony/autoload/sfCoreAutoload.class.php';

といった形で書きかえる。これでプロジェクトを丸ごと他のサーバに移動したときなども、問題なくSymfonyごと移行することができる。

2010年2月19日金曜日

[VMWare]: VMWare Playerを使っていてもメモリサイズを変更する方法

前回の記事に関連して,VMWare Playerを使っているときの仮想マシン構成の変え方について.

基本的にVMWareはMacであれWindowsであれLinuxであれ,拡張子vmxというファイルに設定が書かれている.vmxファイルはただのテキストファイルなので,テキストエディタで編集することができる.変更可能な項目については以下のサイトが詳しい
仮想マシン構成.vmx - VMware まとめ Wiki
よく変更する項目としては,以下の二種類くらいだろう
  • memsize: メモリサイズ.MB単位で記述する
  • *.present: デバイスを有効にするかどうか.TRUEで有効,FALSEで無効
とりあえずこれだけ覚えておけばVMを他に持って行ったときも安心だと思う.

2009年9月26日土曜日

[Mac OS X][Java]: Mac OS XのデフォルトのJVMを変更する

Mac OS X用のJava SE 6がダウンロードできるようになってずいぶん経つが,未だにOS XのデフォルトのJVMはJ2SE 5.0である.

コンパイルされたクラスファイルであれば動作すると思うが,Java 6で追加されたアノテーション周りのコードをコンパイルしようとするとJ2SE 5.0のコンパイラではエラーを吐いて止まってしまうため,これが原因で色々とプログラムが動かなかったりすることがある.

というわけで,以下はMac OS XでデフォルトのJVMをJava 6にする方法.

「アプリケーション->ユーティリティ->Java Preferences」を開く


「概要」タブにリストされているJVMの項目をドラッグ&ドロップで,一番上に「Java SE 6」が来るように移動する.


これでOK.

2009年8月31日月曜日

[Snow Leopard]: Snow Leopardにして動かなかったソフト:MenuMeters


手持ちのMacのうち一台(Macbook黒)をSnow Leopardにアップデートしてみた.
その結果,普段常駐させているアプリの一つであるMenuMetersが動かなくなった.

以下,公式サイトからの引用
  • MenuMeters 1.3 does not run on Snow Leopard because the process that hosts the MenuMeters plugins (SystemUIServer) is now 64-bit. There are a number of subtle 64-bit bugs in MenuMeters so more than a simple recompile is needed.

    I'm working on an update to MenuMeters and expect to have a public beta shortly after Snow Leopard retail availability.


どうやら64bit版のSystemUIServerがバグバグで簡単には対応できないそうな.

ちなみにMenuMetersは画面上部のメニューバーにリソースの使用状況を表示できるアプリ.

特にメモリ,CPU,HDDの状態が常に確認できるのが良くて重宝している.システムが遅くなったときなどにこれがあればI/Oで止まってるのか,CPUで止まってるかなどの切り分けの役に立つ.

普段お世話になっているだけに早く対応してくれるといいなぁ

2009年8月14日金曜日

[Java on Linux]: Ubuntu 9.04で日本語がトウフにならないようにする設定

Ubuntu 9.04でJava(JDK, JRE)をSUNからダウンロードしてインストールしている場合,フォントの設定がされていないため日本語が白い四角(□,一部では豆腐,トウフとも言う)になってしまう問題を解決した.

Java 1.6ではフォントに関する定義は$JRE_HOME/lib/fontconfig.propertiesというファイルで置けば良いみたいなので,JVMをインストールしたディレクトリに以下の内容のファイルを配置する.
# Version

version=1

# Component Font Mappings

allfonts.chinese-cn-iso10646=-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
allfonts.chinese-tw-iso10646=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
allfonts.lucida=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1

serif.plain.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.plain.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.plain.latin-1=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1

serif.bold.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bold.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bold.latin-1=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1

serif.italic.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.italic.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.italic.latin-1=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1

serif.bolditalic.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bolditalic.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bolditalic.latin-1=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1

sansserif.plain.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.plain.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1

sansserif.bold.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bold.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1

sansserif.italic.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.italic.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1

sansserif.bolditalic.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bolditalic.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1

monospaced.plain.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.plain.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1

monospaced.bold.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bold.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1

monospaced.italic.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.italic.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1

monospaced.bolditalic.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bolditalic.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1

dialog.plain.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.plain.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1

dialog.bold.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bold.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1

dialog.italic.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.italic.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1

dialog.bolditalic.japanese-iso10646=-japanese-gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bolditalic.korean-iso10646=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1

dialoginput.plain.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.plain.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1

dialoginput.bold.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bold.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1

dialoginput.italic.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.italic.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1

dialoginput.bolditalic.japanese-iso10646=-japanese-mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bolditalic.korean-iso10646=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1

# Search Sequences

sequence.allfonts=latin-1
sequence.allfonts.UTF-8.ko.KR=latin-1,korean-iso10646
sequence.allfonts.UTF-8.ja.JP=latin-1,japanese-iso10646
sequence.allfonts.UTF-8.zh.CN=latin-1,chinese-cn-iso10646
sequence.allfonts.UTF-8.zh.TW=latin-1,chinese-tw-iso10646
sequence.allfonts.UTF-8.zh.HK=latin-1,chinese-tw-iso10646
sequence.fallback=lucida,chinese-tw-iso10646,chinese-cn-iso10646,japanese-iso10646,korean-iso10646

# Exclusion Ranges

exclusion.japanese-iso10646=2200-22ef,2701-27be,20a0-20aa,2153-215f,2166-2168,216a-216f,2173-2182

# Font File Names

filename.-arphic_technology_co.-ar_pl_mingti2l_big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_TW/TrueType/bsmi00lp.ttf
filename.-misc-baekmuk_batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/ko/TrueType/batang.ttf
filename.-misc-baekmuk_gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/ko/TrueType/gulim.ttf
filename.-misc-kochi_gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf
filename.-misc-kochi_mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/ja/TrueType/kochi-mincho-subst.ttf
filename.-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_CN/TrueType/zysong.ttf
filename.-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaSansRegular.ttf
filename.-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaBrightRegular.ttf
filename.-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaBrightDemiBold.ttf
filename.-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaBrightItalic.ttf
filename.-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaBrightDemiItalic.ttf
filename.-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaSansDemiBold.ttf
filename.-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaSansRegular.ttf
filename.-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaSansDemiBold.ttf
filename.-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1=$JRE_LIB_FONTS/LucidaTypewriterRegular.ttf
filename.-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1=$JRE_LIB_FONTS/LucidaTypewriterBold.ttf
filename.-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1=$JRE_LIB_FONTS/LucidaTypewriterRegular.ttf
filename.-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1=$JRE_LIB_FONTS/LucidaTypewriterBold.ttf

# AWT X11 font paths
awtfontpath.chinese-tw-iso10646=/usr/share/fonts/zh_TW/TrueType
awtfontpath.chinese-cn-iso10646=/usr/share/fonts/zh_CN/TrueType
awtfontpath.japanese-iso10646=/usr/share/fonts/truetype
awtfontpath.korean-iso10646=/usr/share/fonts/ko/TrueType
RedHat用のファイルを元にEmacsでReplace Stringしただけだけど,とりあえずこれで動いたので良しとする.

でも,JREをアップデートしたらまた配置し直すのを忘れそうだ・・・

2009年4月18日土曜日

[Windows][Qt]: Windows&Qt 4.5環境でstatic linkedなプログラムを作る



Windows上でQt SDK 4.5を使ってコードを書いていて,コンパイルすると,通常はshared libraryなコードがはき出される.
shared linkはファイルサイズが小さくなって良いのだが,動作環境にQt 4.5のライブラリが無いと動かないので,配布には不向きである.

というわけで,Qtでqmakeしたコードがstatic linkになるように設定する.
Qt公式ドキュメントでは,Qtのインストールディレクトリで
configure -static
すればいいことになっている.

しかし,Qt 4.5でこれをやると途中で止まってしまい,Makefileが生成されない.具体的には

Generating Makefiles...
Could not find mkspecs for your QMAKESPEC(win32-g++) after trying:
C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/qt\mkspecs
Error processing project file: C:/Qt/2009.01/qt/projects.pro
Qmake failed, return code 3

といって止まってしまう.

エラーメッセージをよく見ると,mkspecsのパスがC:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/qt\mkspecsというところに決め打たれているのが原因であることが分かる.
そもそも本来のmkspecsはデフォルトではC:\Qt\2009.01\qt\mkspecsになるはずである.

調べてみると,とりあえずの回避策が見つかった.
http://www.qtcentre.org/forum/archive/index.php/t-19227.html

具体的には,JunctionというWindows上でシンボリックリンクを実現するソフトを使い,決め打たれているパスから正しいmkspecsへのリンクを貼ってやる事になる.
まずはJunctionのダウンロードページからJunctionをダウンロードし,インストールする.

その後,C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Trollディレクトリまでを手動で作成し,以下のコマンドをコマンドプロンプトで実行する.

junction C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0 C:\qt\2009.01

この後,Qtのインストールディレクトリで通常通り
configure -static
mingw32-make.exe

すれば良い.Qtの再コンパイルには相当な時間がかかる.僕の手元では7時間以上かかった.

コンパイルが終われば,後は通常通りQt CreatorからプロジェクトをCleanしてBuildすれば良い.
これでstatic linkされたバイナリが作成できる.

2009年1月20日火曜日

[ThinkPad]: TPFanControlでCPUファンの騒音を軽減する

現在,Lenovo(IBMと書けないところが何となく寂しい)のThinkPad X61 TabletをWindowsメインマシンとして使っているのだが,どうもファンがやたらとうるさい.
どうやら全力で回ったり止まったりを繰り返しているようで「ファン停止状態->温度上がる->ファン全力回転->ファン停止」を繰り返しているようだ.

これではファンが動作しているときにうるさくてたまらないので,ファンをもっと低速で回す方法は無いかと思い,インストールしたのがTPFanControlである.

TPFanControl by troubadix


TPFanControlはその名の通りThinkPadのファンを任意の動作で動かすことのできる常駐ソフトで,Modeを「BIOS」にすればThinkPad標準の動作,「Smart」にすればTPFanControlの設定ファイル(TPFanControl.ini)を元にした動作,「Manual」にすれば一時的に強制的にファンを回したり止めたり,と言ったことができる.

基本的にはデフォルト設定で「Smart」で起動させておけば問題ない.
インストールされたTPFanControl.exeのショートカットを「プログラム->スタートアップ」にでも入れておけばいちいち起動する手間も省けて良い.

もし自分で動作を変更したい場合は「プログラム->TPFanControl->TPFanControl.ini」をテキストエディタで開き,編集する.
編集すべき所は最終行の辺りで,僕は現在以下の設定にしている.

// Celsius: // Fahrenheit: (Level FAN 0>80 -> Fahrenheit) Level=60 0 // Level=140 0
Level=70 1 // Level=150 1
Level=75 3 // Level=170 3

見て分かる通り「Level=[温度] ファンの状態」の書式で書けば良く,上記の設定であれば,

摂氏60度以下 -> 停止
摂氏70〜75度 -> 1(最低速)で稼働
摂氏75度以上 -> 3(3/7)の速度で稼働

と言うことになる.
ファンの回転速度は最高が7で最低が0(停止)の8段階で,最高速で回るとうるさいので僕は早くても3で回すようにしている.

また,回転速度は各温度に達した時点で判定される様なので,上記の例なら70度になるとファンが回転し始め,60度になるまでは止まらない.
この辺りは細かく設定したい人は好きなように設定すれば良い.
ただ,コメントアウト部分にも書いてあるが,温度の部分を80よりも大きい値にすると華氏温度と認識されるので注意が必要である.

そんなわけで最近のThinkPadの動作音がやかましいと感じる人は試してみると良い.
・・・それにしてもThinkPadはLenovoになってから品質が下がってしまったのが残念である.キーボードとか,細かい部分への配慮が足りなくなっている様に感じる.
個人的な一番の名器はX40/X41なのだが,さすがに今メインで使うのにはスペックが低くて厳しい.
# それでもThinkPadを使い続けてるのは,品質が落ちてもなお他社製ノートPCよりも使いやすいからなのだけれどね :-P

2009年1月18日日曜日

[Linux]: LinuxでSATA HDDの型番とシリアルナンバーを調べる

最近Seagate製SATA HDDの一部の型番の製品に,電源投入時にHDDが認識されないFirmwareのバグが存在するらしい.

Seagateナレッジベース

GALACTIC FUNC | seagateがやばい

というわけで,手元のLinuxマシンでHDDの型番を調べる方法を紹介.
やり方は,
$ cat /proc/scsi/scsi
するだけ.

(1/19追記)Seagateから手持ちのHDDが該当する個体かをシリアルナンバーから確認するフォームが提供された.

http://support.seagate.com/sncheck.html

シリアルナンバーを調べるには,
# hdparm -i /dev/[HDDデバイスファイル]
とする.
$ sudo hdparm -i /dev/sdb

/dev/sdb:

Model=ST31000333AS , FwRev=SD15 , SerialNo= XXXXXXX
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=?8?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=no WriteCache=enabled
Drive conforms to: unknown: ATA/ATAPI-4,5,6,7

* signifies the current active mode

Firmwareアップデートで対応できるみたいだけど,以下の型番に該当しないか動いている内に調べて,もし該当していたらとりあえずデータを退避させることを勧める.

Barracuda 7200.11
ST31000340AS/1TB
ST31000640AS/1TB
ST3750330AS/750GB
ST3750630AS/750GB
ST3640330AS/640GB
ST3640630AS/640GB
ST3500320AS/500GB
ST3500620AS/500GB
ST3500820AS/500GB
ST31500341AS/1.5TB
ST31000333AS/1TB
ST3640323AS/640GB
ST3640623AS/640GB
ST3320613AS/320GB
ST3320813AS/320GB
ST3160813AS/160GB

Barracuda ES.2 SATA
ST31000340NS/1TB
ST3750330NS/750GB
ST3500320NS/500GB
ST3250310NS/250GB

DiamondMax 22
STM31000340AS/1TB
STM31000640AS/1TB
STM3750330AS/750GB
STM3750630AS/750GB
STM3500320AS/500GB
STM3500620AS/500GB
STM3500820AS/500GB
STM31000334AS/1TB
STM3320614AS/320GB
STM3160813AS/160GB
# 1/18 : 容量を併記
# 1/19 : シリアルナンバーの取得方法を追記

2009年1月16日金曜日

[Mac OS X]: Mac OS XでWindowsのスタートメニュー風な起動メニューを実現する

WindowsからMac OS Xへ移行した人にとって,アプリケーションを起動するためのスタートメニューが無いのに戸惑っている人は結構多いと思う.
実際,いちいちFinderを開いて,アプリケーションリストからプログラムを起動するのは面倒だと思う.


そこで,通常使っているDockにスタートメニューの様なランチャ機能があると便利である.
具体的には以下の画像のような開き方ができれば,Windowsのスタートメニューと同じ使い方ができる.


これを実現するには,以下の手順で操作を行う.
まず,Finderを開き,左のメニューにある「アプリケーション」を右クリックし,「内包するフォルダを開く」を選ぶ.



すると,新しく「System」というタイトルのFinderウィンドウが開く.これは実はMac OS X自体のルートディレクトリ(/)なのだが,これは分かる人だけ分かればOKである.

ここで,この中の「アプリケーション」アイコンをドラッグして,Dockの右の方(ゴミ箱の隣くらいが良い)に持って行く.

すると,アプリケーションへのショートカットがDockに作成される.

さて,この状態でこのショートカットをクリックすると,タイル上にアプリケーションアイコンが表示される.



このままでも良いという人は良いのだが,この表示方式は見た目はきれいな代わりに一覧性が悪く,必要なアプリケーションが探しにくい.
なので,アプリケーションアイコンを右クリックして「内容の表示形式」から「リスト」を選択する.


ここまで設定すると,最初に紹介した画像の様に,アプリケーションリストが文字のリスト表示になる.
アプリケーションが増えてくるとDockにアイコンをいちいち追加していられないので,色々とアプリケーションを入れている人や,Windowsの操作に慣れてしまった人にはお勧めである.

[Mac OS X]: Mac本体のシリアル番号を調べる

Mac OS Xでシリアル番号を調べるには,二種類の方法がある.

一つは,左上のAppleメニューから「このMacについて」を開き,出てきたウィンドウの中の「Mac OS X」と書かれた下の部分(バージョンが表示されている部分)をクリックする.
すると,クリックするたびにバージョン番号->ビルド番号->シリアル番号の順に表示が切り替わる.


もう一つは,上記の「詳しい情報」をクリックするか「アプリケーション->ユーティリティ->システムプロファイラ」を開き「ハードウェア」を表示する.


下の方にシリアル番号が表示されている.

サポートセンターに繋ぐときなどにはこれで調べてから電話すると,話が早い.