2009年6月14日日曜日

Counter Strike:SourceをLinuxにインストールしてみる

Ubuntu 9.04、Wineは最新。 4枚組CDからインストールしようとした。まずSteamは全部1枚目に収まっているのでインストールできた。が、CS:Sでは入れ替えがあり、アンマウントできないとのこと。強制アンマウントさせたが、エラーで続行できない。Steamも更新ができないので、一旦アンインストールして、Valveで落とせる最新のSteamインストーラからインストールする。 wine msiexec /i SteamInstall.msi その後、CS:SはSteamからダウンロードできる(アカウントさえあれば同じようにゲームをプレイできるSteamの利点である)。 で、早速プレイ。リソースのロードも速い!起動した!が、5秒後くらいに落ちてしまう。 E: shm.c: mmap() failed: Cannot allocate memory E: memblock.c: Assertion 'b' failed at pulsecore/memblock.c:438, function pa_memblock_acquire(). Aborting. PulseAudioあたり?と思ったが以下によるとPulseAudio関係なく落ちるようだ。 http://appdb.winehq.org/objectManager.php?sClass=version&iId=3731

2009年6月13日土曜日

Counter Strike:Source Deathmatch

CS:S Deathmatch(CS:S DM)最新版の正しいインストール方法が判ってきたのでメモする。
metamod:Source 1.7.1
Sourceエンジンのためのプラグイン。
SourceMod 1.2.1
metamodのプラグイン。多分。
CS:S DM 2.1.0
本体だが、metamodとsourcemodを要する。

1.metamodとsourcemodのインストール

  1. metamodをcstrike下に展開する(cstrike\addons)。
  2. sourcemodを同様に展開する(addonsは統合される)。
  3. VDFジェネレータでmetamod.vdfを生成する(OSにWindows、GameにはCounter-Strikeを選ぶ、Game Folderは空欄でよい)。
  4. metamod.vdfをcstrike\addonsに加える。

CS:Sを起動してサーバーを建ててコンソールから"meta list"と入力する。SourceModの文字が確認できれば、sourcemodが正常に読み込まれている。

2.CS:S DMのインストール

metamodとsourcemodのインストールが済んだら、CS:S DMを展開してインストールはおわり。そのままBOTと対戦することでDeathmatchになる。

2009年5月9日土曜日

フリーのオンラインストレージ

Web上のスペースにファイルをアップロードできる、オンラインストレージが便利すぎることに気づいたので、使用感をメモすることにした。なお分類は無料版のもの。

同期を主体としたサービス

エクスプローラから「それがオンラインストレージである」ことを意識せず、ローカルの記憶装置と同様に利用可能なサービス。

Dropbox(2GB)
クライアントは、My Dropboxフォルダに保存したファイルを自動でアップロードし、ローカルに無い(又は更新可能な)ファイルを自動でダウンロードする。この方法だと同期中の全てのコンピュータで同じ容量を喰う。ファイルごとにバージョン管理ができる。クライアントはWin, Mac, Linux, iPhone等で利用可能。安定していて実用性もあるが、アップロード速度は30KB/secくらいしか出ず、遅いのが不満。Amazon S3を利用している。Webインターフェイスは直感的で使いやすく、zipで落とす機能もある。
Zumodrive(1GB)
クライアントは、Z:ドライブに保存したファイルを自動でアップロードし、ファイルの要求時にキャッシュとして自動でダウンロードする。使用していないキャッシュは自動的にローカルから削除される(ファイル自体はWeb上に保存されている)。この方法だとディスクスペースを節約できるが、一部ソフトでは問題が発生した。クライアントはWin, Mac, iPhoneのみ。同じAmazon S3でもアップロード速度は100KB/sec前後出た。WebインターフェイスはFlashで独特の操作を強いられる。

ブラウザとか

Windows環境でOpera10 alphaをインストールしてみたのでメモ。 Operaといえば、昔こそレンダリングが速いと言われ続けていたものの、IEやFirefoxの進化、更にはChromeの登場で影は薄くなった。Javascriptの実行速度競争で完全に乗り遅れて、torrentだのサポートしている内に遅いブラウザになっちゃったと思っていたのだが、新エンジンの搭載で改善される模様。更にUIのデザインが粋になっていたので入れてみた。

早速起動してみる。何だコレ。スタートページが激重。笑っちゃった。 スタートページが重いってどうなん?スクロールもそうだけど、ウィンドウリサイズだと超重い。

もしかしてこのスタートページが特別に重いのかと思い、FirefoxやIEで開くと、URIは同じながら別のページが表示されてしまった。どうやらOpera 10でアクセスしたときだけこのページが表示されるらしい。検証も面倒なのでこの件は保留に。

OperaはFlashが遅いってことでYouTubeなど閲覧してみたが特に問題なし。次にJavascriptだがDropboxやdeliciousも実用速度で何ら問題はない。あれって思って次はGMailを試してみた。 ( ゜д゜) ねーよw
ちなみに同じ時間にFirefoxで試したが、勿論問題無し。まだalphaだしJavascriptエンジンは新調中だし...あるあ...ねーよwという訳でOperaは見送りに。

http://www.w3.org/Style/CSS/current-work
このページ、Firefoxで激重な訳ですが。3.5b4で若干改善された模様。まだ重いけど。IEはリサイズだと重くなるが、スクロールは速い。Iron(ChromeのGoogle機能削除版)はスクロールもリサイズも速い。Operaはスクロールに難ありか。

2009年5月6日水曜日

Ubuntu 外観の設定

フォントの設定を編集
cp /etc/fonts/conf.avail/69-language-selector-ja-jp.conf ~/.fonts.conf
vi .fonts.conf フォントは上から順に使われ、文字が無い場合は次のフォントが読まれる。上位に英字フォントを指定しておけば、日本語フォントに付属している劣化グロテスク体英字を使わなくて済むNE!
但し、色んな所で取り上げられているように、Adobe Flash Playerでは豆腐になる。これはFlash Playerがsans-serifの最上位のフォントしか見ないという仕様によるものらしい。
GNOMEの外観の設定
前の記事を参照。
Compizの設定
Compizは、グラフィックの制限付きドライバをインストールしたなら既に利用可能になっているらしい。「外観の設定」の「視覚効果」の「追加効果」を選択して使用できる。しかしこれではGUIによる設定ができないので、
sudo aptitude install compizconfig-setting-manager
黙って設定マネージャをインストールする。「システム」の「設定」から起動できる。面白そうな効果がきらびやかに並んでいるが、誘惑されずに左ペインの「設定」から新しいプロファイルを作成してから弄ることにする。
Emerald
Metacityに代わるウィンドウデコレータ。 sudo aptitude install emerald
「システム」の「設定」から設定マネージャを起動できる。
まず、デフォルトのテーマをエクスポートしておく。

2009年5月5日火曜日

Audacious

音楽ファイルはcueシートとflacで管理している(cueシートはEAC等のリッパーが吐き出すファイルで、トラックの情報を波形ファイルとは別に管理できる。flacは可逆圧縮で、無圧縮wav形式と等価である)。Windowsではfoobar2000と心中するので問題ないが、Linuxではどうだろう。実は対応プレイヤーは殆ど無い。GNOMEのソフトは全滅なうえ、Amarokの対応は限定的だし、Amarok2は対応していない。Audaciousを使ってみることにする。AudaciousはWinampのようなクラシカルなファイル指向のプレイヤーで、ライブラリ指向ではないが仕方ない。なおAudaciousはWinampのクラシックスキンをサポートしている。

まずはAudaciousをインストールする。
sudo aptitude install audacious
メニューは「サウンドとビデオ」内に作成されるが、反映にはログアウトが必要である。
audacious
しかし何故かこのままではcueシートを再生できない。右クリックし、Audaciousの「設定」の「オーディオ」欄の「フォーマットの検出」の2つのチェックボックスをオフにする。続いて「プレイリスト」欄の「自動エンコーディング検出」が日本語になっていることと、代替キャラクタエンコーディングにShift-Jisが入っていることを確認する。テキストボックスのツールチップが言うには、UTF-8は自動で確認するらしい。これでようやくcueシートを再生できるようになる。

なおcueシートの文字コードがShift-JISの場合、音楽ファイル名に日本語が含まれていると再生できない(泣)。おとなしくUTF-8に変換するしかない。現状では、Wine上でのfoobar2000を併用している。

2009年5月3日日曜日

今後

とりあえず、やりかけで放置していた明解C言語入門編を終わらせた後で
プログラミング言語C、K&Rでも買ってみようか。しかしやる気が出ない。

gksudo

弄っているとどうしても管理者権限が必要になる場面が多いことに気づいた。
その度に端末からsudo nautilusしているわけだが面倒である。
Ubuntuでは管理者権限が必要になる場面では、ダイアログボックスが出て
パスワードの入力を要求される。これを使えないかと思いググったところ
gksudoなるコマンドがあるらしい。
早速、GNOMEのショートカット(ランチャ)に登録してみた。
gksudo nautilus
これで簡単に管理者権限でのファイラが出て、一見落着。

GNOME テーマ

前に使用していたテーマを思い出せないでいたが、
ここに発見した。
テーマ名はNodoka colorsで、Shiki-Colorsとの因果関係は不明。
インストールしてみると何か面倒なことにエンジンとやらが必要になっている。
コンパイルする必要があるらしいので上記に従ってやってみるが、
needs GTK+-2.8ということでコンパイルできない。
sudo aptitude install libgtk2.0-dev
これでやっとコンパイルできた。

2009年4月26日日曜日

Ubuntu Jaunty フォントの設定


cp /etc/fonts/conf.avail/69-language-selector-ja-jp.conf ~/fonts.conf
vi ~/fonts.conf

フォントがどうもアレだと思い、見てみることに。
既定ではIPAモナー、IPAフォントはインストールされていないので
さざなみ、東風というフォントが使用されるようだ。
気に入らないのでさっさと変更。

Ubuntu Jaunty もろもろ設定

プロプライエタリなドライバの使用
ホスト名を変更
 sudo vi /etc/hostname
アップデート
 sudo aptitude update
 sudo aptitude upgrade
SKKのインストール
 sudo aptitude install uim
 sudo aptitude install uim-skk
 sudo update-alternatives --config xinput-ja_JP
Vimのインストール
 sudo aptitude install vim
 sudo aptitude install vim-gnome
Dropboxのインストール
 deb -i nautilus-dropbox
Truecryptのインストール
 deb -i truecrypt
Wineのインストール
 sudo aptitude install wine

fstab

Linuxではデバイスをファイルとして扱い、/etc/fstabを見てマウントするらしい。
WindowsのCドライブ、Dドライブを既定でマウントするために編集した。


# マウントポイント(マウントして入れるディレクトリ)作成
sudo mkdir /media/c
sudo mkdir /media/d
# 下記を/etc/fstabに追記
/dev/sda1 /media/c ntfs,ro,user,auto
/dev/sda2 /media/d ntfs,rw,user,auto

Ubuntu JauntyにFirefox 3.1 beta3をインストールする

まだ本も読んでないし、正直Linuxはよくわからん。Firefoxは3.0.9が入っているが、
プロファイルは3.1b3用なので使えない。3.1b3のパッケージは当然ながら提供されていないので、
自力でインストールする必要がある。。。のか?

とりあえず、Firefoxのインストール先を探したところ、
/usr/lib/firefox-3.0.9であった。でもここってライブラリじゃ。。。
とりあえず、/usr/lib/firefox-3.1b3に展開。firefoxを実行で起動できる。

しかし、ターミナルでfirefoxを実行すると、当然ながら3.0.9が起動する。
そういえばパスという概念があって、コマンド名だけで起動するときは
システムに登録しないといけないんだったような。
Linuxでは特定のディレクトリに置いたファイルにパスが通る?
ググってみたところ、/bin, /usr/bin, /usr/local/binがそれらしい。
ここにシンボリックリンク(ショートカットみたいな?)を置くことで実現している。
見てみると/usr/local/binは空で、/usr/binにfirefoxとfirefox-3.0がある。


ls -lでリンク先を表示できるらしい。
ls -l /usr/bin/firefox
  firefox -> firefox-3.0
ls -l /usr/bin/firefox-3.0
  firefox-3.0 -> ../lib/firefox-3.0.9/firefox.sh

というわけで、これをfirefox-3.1b3へのシンボリックリンクに置換すればいいのか?
ものは試し。


シンボリックリンクの作成はln -s [target] [source]だそうな。
sudo mv firefox firefox.org
sudo ln -s ../lib/firefox-3.1b3/firefox firefox

これで無事、Firefox3.1b3が起動するようになった。
めでたしめでたし。

2009年4月25日土曜日

GNOME マウスの設定

Ubuntu 9.04では、GNOMEのバージョンが上がったのかどうかは知らん
(そもそもマウスの設定がGNOMEによるのかどうかも分からない)が、
(多分)マウスの設定画面が更新されているように思える。
FPSゲーマー(しかしnoob)としては、

  • 加速を切る
  • センシティビティを最適化する
この二つの設定で快適になるが、加速を切るのは加速のスライダーを最小にし、
カーソル移動量をマウスのカウントと1:1にするには、感度のスライダーを最大にすればよい。
以前(8.10)はもっと違っていたが今回はわかりやすくなっており感嘆ものである。

Ubuntu 9.04 インストール

今インストールが終わり、初回であるが非常にスムースに起動した。
既定の日本語フォントが変更されているようだが、個人的にあまり好みではない。
英字フォントは多分変更されていない。可読性は良いが、こちらも変更するだろう。

予定
  • UIM/SKKのインストール(完了)
  • Dropboxのインストール(完了)
  • Firefoxのプロファイル
  • マウスの設定(完了)
  • ドライブのマウント設定(fstab)
  • フォントのインストール
  • 外観の変更

2009年4月24日金曜日

Ubuntu 9.04 リリース

正式版のリリースは昨日だったが、日本語Remix版は今日。
わざわざuTorrentというツールをインストールして落としたが、
ダウンロード速度が約7MB/sという爆速で、2分2秒で完了してしまった。

2009年4月19日日曜日

Counter Strike : Source インストール

久しぶりにCounter Strike:Source(CS:S)をインストールしたのでメモ。

CDからAutorun.exeを起動し、Steamをインストールする。
SteamはValveの常駐プラットフォームで、ゲームの配信、その著作権の管理や
自動アップデート、アンチチートなどを担っているため、入れないとプレイできない。
次にCS:Sをインストールするが、HL2とDOD:Sも含まれているので外す(遊ぶ場合は入れる)。
SteamとCS:Sのアップデートの後、Steamのアカウント登録となる。
既に持っている人は入力するだけ。ここでようやくプレイ可能になるが、
デフラグを推奨された場合は焦らずにかけておくことをお勧めする。
Steamのデフラグはゲームに関連する領域にのみ行われる。
CS:SはSteamのマイゲーム タブか、スタートメニューから起動できる。

追記:
CDからインストールしたが、更新中の画面から進捗せず、Steamがアップデートできないときは、VALVe公式から最新のSteamのインストーラ(msi形式)をダウンロードして、こちらをインストールする。

2009年3月28日土曜日

ZEN Stone 購入記

HitachiのHMP-X702がお亡くなりになったので、新調の必要に迫られた。このMP3プレイヤーは安かろう悪かろうで、再生ファイルの変更に時間がかかるしiPodに比べて音は悪いしノイズっぽいし気にいっていなかったが、液晶付だった。しかし予算はない。そこでAmazonで2,100円で販売されているCreativeのZEN Stone 2GB 黒を購入した。この価格だと外れでもアレだし、使わないだろうけどスピーカー内蔵というのも気になる。以下まじめにレビュー。

Amazon代引、手数料込みで2,360円だった。いつも通り薄めのダンボール箱で届いた。この時はパッケージが小さいね、と思ったが、よく考えればiPod nanoもこのくらいだったな。驚いたのはその付属品の多いこと。本体、開放型イヤホン、接続用USBケーブル、本体につけるクリップ、専用シリコンカバー、簡易説明書が揃っている。この価格でよくここまで揃えられるもんだ(特にシリコンカバー)。USB端子は内蔵かと思ってたが。本体の質感は普通。カバーは装着するとデザインが悪化するが気にしない。出荷時にはデモ用と思しきサンプルのmp3ファイル(全部インスト)とソフトのインストーラが入っていた。ソフトはインストールしても良いが、しなくてもよいようだ。が、電池残量確認ができるようなのでインストールした。

操作性について。ディスプレイはない(ディスプレイ付モデルもある)が、フォルダスキップができるので困らなかった。プレイリストで管理する人間にとってはいたって無難である。ボタンは応答性も良い、誤動作するということもなく、快適である。シーク時も再生されるので現在位置がわかりやすい。激安製品としてはかなり秀逸。さすがCreative。

肝心の音質について。結論から言えば悪い。解像度が低く、増幅処理が変なのだと思った。
なお、曲変更時には独特のノイズが入るが、HMP-X702よりはマシ。
以下ヘッドフォン別試聴レビュー。価格は記事執筆時のAmazonから。

Creative EP-630 ¥2,674 密閉型カナル(ドンシャリ傾向)
まずは自分が普段外で使用していたイヤホン、Creative製(但しOEMらしい)だが相性や如何に。結果から言うと大変残念だった。分解能が低く、分解というよりはむしろ混合しているという感じで、ベールをかぶっているというレベルではない。何かもう最低の音質。それぞれのHMP-X702 / 同イヤホンより悪く聞こえる。何というか、ボリュームの切り替えが不自然で、多分このファームウェアの増幅処理の精度がクソだからこんなに音が悪くなるのではないかと思った。
Victor HP-FXC50 ¥3,024 密閉型カナル(高音寄り)
09/04/01追記(但しエイプリルネタではない)。NTTの通販サイトから、無くしていたイヤーチップが届いたのでレビュー。初め聴いた時は「おや?そんなに悪くないが。」と思った。解像度はやや低いがこんなもん。しかし音量を常用域まで下げるとやっぱり音悪いね、と。
Audio-technica ATH-A500 ¥7,180 密閉型オーバーヘッド(弱ドンシャリ~フラット)
次に、普段家で使用している入門用の密閉型(このヘッドフォンにあまり満足はしていないが)。相変わらず解像度は低く、音場感は壊滅的。ただ、音量を上げる必要があるからか、EP-630で聴いた時ほど悪くは感じない。
Creative ZEN Stoneに付属のイヤホン 開放型(ゴミ)
電子辞書についているものより低レベルだった。僅かでも期待した自分が愚かだったね。こんなもん付けんなよ。。。
Creative ZEN Stoneのスピーカー
こちらもおもちゃ。高域はしょっぱなから音が割れており中音はスカスカ、低域に至っては音が「無い」。まあこっちはね、最初から期待なんかしてなかったさハハハ。

結論としては、値段通りよりちょっといいかな、という程度。衝動買いするようなものではないかな。肝心の音質が駄目なのは残念だ。コスパは良いんだろうけど、音質重視の人間には絶対的な価値が低いから、どうも肯定的なレビューにならなかった。スピーカーを廃してイヤホンも別売にして値段は据置き、その代わりに音質を上げ、USB端子は内蔵にして、電池交換を可能にしてくれればこの商品の価値は激増すると思ったんだが。

どうもこの手の激安製品は絶対的な能力を上げようとせず、付属品やデザイン、バリエーションで対抗してくる傾向にある。価値がほしいなら金を出せということか。こうやって考えていると、高かったがiPod nano + Rockboxは贅沢だったのだなと思う。そこが一流ベンダとの違いなのかな?三流さんはその差を縮めるよう努力してほしい。

CreativeといえばSound Blasterで有名。ちなみにSound Blaster以外のCreative製品は音が悪いという評判だ。俺はSE-90PCI(ONKYO)だけど。個人的にこのベンダには期待しているのでもうちょっと頑張ってほしい。

スマートブックマーク

Firefox3ではブックマークメニュー、ブックマークツールバー、その他のブックマーク、履歴を統合して扱うPlacesシステムが導入された。同時に追加されたスマートブックマーク(スマートフォルダ)は、Placesから任意の条件に該当する結果を抽出するクエリである。標準機能なのだが大々的な宣伝はなく、知らない人が多そうなのでメモすることにする。

クエリの書式はPlaces query URIsにある。place:で始まり、条件を付加すればよい。使い方は簡単。ブックマークツールバーなどに新規ブックマークを作成、URL欄にクエリを記入すればそれがスマートブックマークとなる。

効能クエリ
履歴最新20件place:queryType=0&sort=4&type=0&maxResults=20
ブックマークメニューplace:folder=BOOKMARKS_MENU&expandQueries=true

完全に思いつきだったが何とブックマークメニューでさえクエリにできる。さらに3.1 beta3ではそれにタブなどをドロップしてブックマークに追加できるなど完全に機能するようになっていた。素晴しいね。

2009年3月27日金曜日

Firefox 3.1 beta3

Fx3.1b3を使っているが、対応アドオンも徐々に増えており、なかなか快適。
  • javascript.options.jit.chrome
  • javascript.options.jit.content
多分だけどchromeがFirefoxのUI部分でcontentがWebページなのだろう。
chrome側でのJITもONにしているが、特に不安定だとは思わない。
地味な変更なのかもしれないが、ブックマークツールバー上のブックマークのクエリにドロップで追加できるようになっている。あっぱれ。
しかし、アドオンを増やすとやはり重くなるね。
Google Chrome並に高速になってくれればいいのに。まあ無理だけど。
ちなみに、Fast Dialが元に戻ったようで、今はこちらを使用している。
だけどこれ重くない? 画像を表示するだけだろうに結構時間かかる。
まあスクリプトを使ってるからか。

改行タグ(brタグ)挿入プログラム

先の記事を投稿したところ、改行がなされていなかった。
そういえば自分はタグ打ちもするので、改行は無視する設定にしたのだった。
そのため手動で<br>タグを打たなければならないのだが、
どうにも面倒だったので、勉強がてらプログラムを書くことに。
改行コードがCRでもLFでもCRLFでもいいはず。
しかし1バイトずつの処理だから何か不安。
2バイト文字で2バイト目が改行コードと同じとかそんなん無いよね?

#include
#define CR 0x0D
#define LF 0x0A
#define BR "<br>"

int main(int argc, char* argv[])
{
FILE* fp_in;
FILE* fp_out;
fpos_t pos;
char ch;

if(argc != 3) {
printf("Usage: %s [input] [output]\n", argv[0]);
return 1;
}

fp_in = fopen(argv[1], "rb");
if(fp_in == NULL) {
printf("Can't open a file for input, %s.", argv[1]);
return 1;
}

fp_out = fopen(argv[2], "wb");
if(fp_out == NULL) {
printf("Can't open a file for output, %s.", argv[2]);
fclose(fp_in);
return 1;
}

while((ch = fgetc(fp_in)) != EOF)
{
fputc(ch, fp_out);
if(ch == CR || ch == LF) {
/* Add Tag and Original Code */
fseek(fp_out, -1, SEEK_CUR);
fwrite(BR, sizeof(BR) - 1, 1, fp_out);
fputc(ch, fp_out);
/* CR-LF */
if(ch == CR) {
ch = fgetc(fp_in);
if(ch == LF) fputc(LF, fp_out);
else fseek(fp_in, -1, SEEK_CUR);
}
}
}


fclose(fp_in);
fclose(fp_out);

printf("Operation completed.\n");
return 0;
}

当初fseek(fp_in, -1, 0);としていたのだが挙動が妙なことに気づき、時間を費やすとSEEK_CURでなければならないと判った。どおりでシークできなかったわけだ。

ミニマックス法

ミニマックス法(minimax)は、どの手が最善か算出するときに用いるアルゴリズムだそうだ。
自分は最も高い評価値を選び、敵は最も低い評価値を選ぶと仮定すると、次に選ぶべき手が一つに定まる。
まず、考えられる全ての手について探索し、ノードの末端(一定の深さ)の評価値を得て、
自分の手なら最大を、敵の手なら最小を選ぶようにすれば、次に取る手がわかるのだ。

プレイヤーA, Bがいると仮定し、ここでは、Aがミニマックス法で打つ手を探すものとする。
ルートの次(最初の分木)ではAの手であるから、片っ端から打てる場所に打つ。
そのノードについて、Bの手が何通りかあるので、これも片っ端から打っていく。
そのノードについてもAの手が何通りかあるので、以下省略。
一定の深さに達したら(ノードの末端)、その場面での評価値を計算する。
打てる手(同じ階層のノード)が3つあり、それぞれの評価値が8, -4, 6だったとする。
この末端ノードがAの手番だった場合、自分にとって有利となるように、必ず最大の評価値のノードである8を選ぶ(max)ので、1つ親のノードに8を返す。
※評価値が定まるとはどういうことだろう。ここでBの気持ちで考えてみよう。もしBがこの手を選ぶと、次のAの手番に8, -4, 6とあろうと、Aは必ず8を取ってくる筈だ。だからその手を選ぶとその時点では「Aが得る評価値は8に定まる」のだ。
この「1つ親のノード」は当然Bの手番であり、8を吸い上げる。同じ階層のノードの評価値にこの8と、他に9, 12があったとする。
※ 評価値が定まるとはどういうことだろう。今度はAの気持ちで考えてみる。もしAがこの手を選ぶと、次のBの手番に8, 9, 12があろうと、Bは必ず8を取ってくる筈だ。だからその手を選ぶとその時点では「Aが得る評価値は8に定まる」のだ(次の手まで考えると、Aには8, -4, 6とあり、Aは8を選ぶ)。
当然、BはAが有利になる手を選ぶはずがない。だからBは最も評価値の低い8の手を選び(min)、その親のノードに8を返す。
その親の手はAの手番である。同じ階層のノードに8, 2, 4があったとしたら、Aは8を選ぶ。
こうしていくことで次に取るべき手がわかる。
というよりは、実は始めから一つに定まっているものを選んでいるだけなのだが。

2009年1月26日月曜日

Windows用ソフト

基本
  • Firefox
  • Vim
  • QTTabbar
マルチメディア
  • foobar2000
  • Qonoha / Media Player Classic
  • ffdshow
  • Exact Audio Copy
  • FLAC Encoder
  • Helix MP3 Encoder - LAMEより速い
  • MP3Gain
  • MP3tag - MP3以外にも多くのフォーマットに対応
システム セキュリティ その他
  • Visual C++ Express
  • MinGW
  • Dropbox - シェルと統合するオンラインストレージ

2009年1月24日土曜日

foobar2000をWineで動作させる

Ubuntu Intrepid、Wine(1.0.1-0ubuntu2)を前提に書いている。
Wineをaptでインストールする。
sudo aptitude install wine
EXEアイコンのダブルクリックで起動するには、NucleusでWineに関連付けする。
foobar2000 最新版(0.9.6)をダウンロードする。
http://www.foobar2000.org/
インストーラを起動し、Portable Installを選択して疑似ドライブ内に展開する。Wineを信頼するなら、Full Installationでインストールしても良いかもしれない。
そのまま起動しても、Default UIなら一応動作するし、Columns UIでも既定なら問題ない。素晴らしい。ただ、ジャケット画像が歪だったり、イコライザダイアログを開いたら固まったりする。流石にPanel Stack SplitterやELPlaylistあたりは動作しないようだ。WineはDLL毎にエミュレートするようだが、問題のあるDLLは「本物」を使うことも可能である。Windowsからgdiplus.dllを持ってきて、foobar2000のディレクトリに配置し、winecfg->ライブラリからgdiplus.dllをNative->Built-inの順に設定する。Windowsには複数のgdiplus.dllがあったが、試して動作するものを選んだ。これで上記の問題は解決される。
Wineでは、フォントにビットマップが埋めこまれている場合、そちらを優先して使うようで、どうにもフォントが汚い。これは自分でビルドするしか解決方法が無いらしいのでパスした。代わりにビットマップの入っていないフォントを使うしかないが、レンダリングが綺麗でない。レンダはfreetypレンダリングeとは別なのだろうか。更に標準のテーマも野暮である。これはwinecfgでXPの.msstylesファイルを読ませるとある程度Windowsに近くなる。Vistaは知らん。
何だかんだで快適に動作するのでこれで良し。

配列とポインタ

配列
メモリ上に、1要素が型のサイズである連続領域を作成。
規格より、要素は必ず連続領域にあることが保証されている。
配列の識別子だけ書くと、配列の実体への参照(配列そのもの)を指す。
多次元配列も、結局は、型サイズの一次元配列として扱う。
式中の配列への参照は、例外を除き、その型の先頭要素へのポインタに成り下がる。
要素数は、定数しか認められていない(動的確保は不可能である)。
ポインタ
アドレスを格納し、型でサイズを表わす。
間接参照演算子*を付加すると、ポインタの指す先への参照となる。
ポインタに加算すると型のサイズだけ増える。
int array[M][N];
array[A][B] は *(*(array + A) + B) と結果的に同等である。
但し(0 <= A < M)&&(0 <= B < N)ってことで^^;
  1. 2次元配列とはいえ、結局int[N]型で要素数Mの一次元配列と考える。
  2. そうなるとarrayは、int[N]型配列の参照(そのもの、配列全体、要素全部)である。
  3. int[N]型配列の参照は、その型の先頭要素へのポインタに成り下がるから、すぐint[N]*型ポインタとなる。
  4. int[N]*型ポインタにAを加算する。
  5. int[N]*型ポインタの参照は、int[N]型の変数の実体である。
  6. そういえばint[N]型の変数は、int型で要素数Nの配列だったね。
  7. int型配列への参照は、その型の先頭要素へのポインタに成り下がるから、すぐint*型ポインタとなる。
  8. int*型ポインタにBを加算する。
  9. int*型ポインタの参照は、int型の変数の実体である。おめでとう。
あー、解かったときすごいすっきりした。C Language FAQ、ありがとう。 てか、頼むから本に書いていてくれ。K&Rには書いてあるのか?

Firefox 拡張一覧

必須

  • Tab Mix Plus - 高機能タブブラウジング
  • FireGestures - 新鋭の軽量マウスジェスチャ
  • XUL/Migemo - Migemo検索
  • bbs2chreader - 2chブラウザ
  • テキストリンク - URI文字列をダブルクリックで開ける
  • セッションマネージャ - セッションを自動保存する

次点

  • Speed Dial - Operaのスピードダイアル
  • Extended Statusbar - Operaのステータスバー
  • Download Statusbar - ステータスバーに収まるダウンロードマネージャ
  • Adblock Plus - 広告を軽減する
  • Firebug - 高機能Web開発ツール
  • Flagfox - ロケーションバーに接続先の国旗を表示する
どうもUbuntuではSpeed DialはGMailと相性が悪いようだ。

Firefoxの検索バーを日本仕様にする

Ubuntuでは既定で検索エンジンに米国のサイトが登録されている。google.comとgoogle.co.jpを頻繁に併用するとき、検索エンジンが米国版になったりして鬱陶しい。Mozillaから定義ファイルが落とせるようだが、Googleは同梱済みといってダウンロードできない。解決策を以下に示す。
  1. Firefoxのバイナリをダウンロードし、解凍する
  2. アーカイブ内、searhplugins配下のファイルを/usr/lib/firefox-addons/searchplugins/に移動する
  3. XMLファイルを適宜編集する

GNOME 外観構築メモ

GTK

  • Clearlooks-Colors
  • Murrine-Colors(要Murrine SVGエンジン)
  • Shiki-Colors
  • SoftWhite
  • Black-Diamond

Metacityのウィンドウデコレータ

Emeraldと排反
  • Clearlooks-Colors
  • Murrine-Colors
  • Shiki-Colors

Emeraldウィンドウデコレータ

Metacityのそれと排反
  • Shiki-Colors
  • Clear-euh

GNOME アイコン

  • GNOME-Colors
  • KDE4 Oxygenstyle
  • Vibrant
  • Meliae

壁紙

  • The Inspiration Gallary