Author Archives: admin

ウェブデザイン 10の掟

businessweek.comにウェブデザイン10の掟と題する記事が載っています。ウェブデザインの偉い人たちが人気のあるサイトを基準にして選んだものだそうです。

  1. FLASHを乱用しない
  2. メインのコンテントを隠さない
  3. ページを散らかさない
  4. ページをキラキラさせない
  5. Web2.0のサイト名を無意味に長くしたり、無意味に母音を省いたりしない
  6. 生テキストを崇拝する
  7. ユーザが夢中になれるサイトをつくる
  8. サイトはソーシャルであるべき
  9. 成功した技術を受け入れる
  10. 内容を充実させる

またBestサイトとWorstサイトをスライド形式で紹介しています。Worstサイトからいくつか抜粋してみます。

AT&T
散らかっててナビゲートしずらいそうです。

Smibs
名前がよくないそうです。

Pier1.com
家具を売っているところなんですが、お店らしくないそうです。

X Window Systemで他のディスプレイを使う

X Window Systemの特徴の一つは、アプリケーションの実行とその表示がクライアントサーバモデルになっていることだ。アプリケーションをあるマシンで実行し、その表示を別のマシンで行うことができる。通常は1台のマシンで実行、表示しているが、このときも内部的にはクライアントサーバモデルで動いている。このためWindowsなどと比べると表示がもっさりしてしまう原因にもなっていると思われる。Windowsでは表示命令は即座にカーネルレベルに入って表示されるため速い。

X Window Systemにおいては、アプリケーションを実行するマシンをXクライアントといい、それを表示するマシン、すなわちディスプレイがつながっているマシンをXサーバという。

ここではXサーバにFreeBSD7を使って実験してみた。というのもLinuxの多くのディストリビューションではXが-nolisten tcpオプションで起動されているため、ローカル意外のXサーバとして動かないらしいからだ。XクライアントにはUbuntuを使った。ネットワーク構成は以下のようになっている。

FreeBSD7=192.168.0.120
Ubuntu=192.168.0.228

まずFreeBSD7側でUbuntuからのアクセスを許可する。xhostを使って行う。

[freebsd7]$ xhost +192.168.0.228

つぎにUbuntu側で環境変数DISPLAYを指定して、アプリケーションを実行する。

[Ubuntu]$ DISPLAY=192.168.0.120:0 xeyes

成功すれば、freebsd7にxeyesが表示される。このときxeyesはUbuntuで実行されており、freebsd7にはxeyesが存在しなくても関係ない。またUbuntuではXが起動していなくてもいい。よってUbuntuのXがぶっ壊れて起動しなくなったときこの方法が役に立つかもしれない。

しかし実際にはこの様な機能はほとんど使用されておらず、通常はVNCなどを使うことが多い。アプリケーションなどもこのような使い方を想定してない場合も多いようで、firefoxなどは既にローカルで起動している場合、–no-remoteなどを付けてもうまくいかなかった。またサウンドはXクライアントから出力される。

freebsd7を元に戻す。

[freebsd7]$ xhost -192.168.0.228

▽関連記事
xorg.conf覚書

protocol buffer 覚書

protocol bufferはgoogleが作った、構造化データのシリアライズ方式。以下の特徴がある。

  • XMLより簡単で早い
  • 生バイトでやるとポービリティ問題になるが、それが大丈夫
  • IDLみたいだがIDLより簡単

使い方

最初に.protoファイルを作る。このファイルにデータ構造を定義する。例えば以下のようになる(googleより引用)

これをコンパイラ(protoc)を使ってコンパイルする。コンパイルの生成物はC++やJavaのクラスとなる。C++の場合出来上がったファイルをコンパイルするにはprotocol bufferのヘッダファイルやライブラリが必要になる。

protocol bufferで提供さているファイル一式にはVisual C++の.slnファイルが含まれているので、これをVC+ 2005 Express Editionなどで開けばライブラリをビルドできる。

コードのビルド時、libprotobuf.libを読み込ませる必要があり、実行時にはlibprotobuf.dllが必要になる。

サンプルプログラム

上記ソースを実行するとPersonのdtorでエラーが出る。読みきれなかったのでスルー。

Visual C++ 2005でデータブレークポイントを使う

データブレークポイントとはある変数の値が変更されたりしたときにブレークするブレークポイントです。以下のソースにおいて19行目のf3()の呼び出し後、iの値が変わったときブレークしたいとします。

まず普通にステップ実行して19行目まで来ます。ここでiのアドレスを知る必要があります。メニューからデバッグウインドウ逆アセンブルを開きアセンブラでステップ実行すると以下のようになります。


このときeaxレジスタに入るのがiのアドレスです。メニューからデバッグブレークポイントの作成新しいデータブレークポイントを選択し、この値を以下のようにデータブレークポイントで設定します。


(この例では実際にアドレスを調べる必要はなく、上のダイアログでは&iと打ち込めばよかったみたいです)

OKをクリックして、実行を再開すれば、以下のようにiの値が変化した直後にメッセージボックスが表示されブレークします。

Nautilusで常にフォルダを表示する

FedoraやCentOSのNautilus(ファイルマネージャ)は起動したときにフォルダビューを表示してくれない。コマンドラインで以下のように起動すればフォルダビューを表示できるが、それをパネルやデスクトップから起動した場合でも、デフォルトで表示させる方法。

コマンドラインでフォルダビューをつけて起動させる。

$ nautilus –browser

デフォルトでフォルダビューをつけて表示させる

デフォルトで表示させるためにはgconfの設定を変えればいい。gconfとはWindowsでいうところのレジストリみたいなもの(参考)。gconfの設定を変えるにはgconf-editorを使うのが簡単。

gconf-editorを起動して、以下のように/apps/nautilus/preferences/always_use_browserをチェックすればフォルダビューつきで起動するようになる。

Fedora9でAudaciousを使ってmp3を再生する

audaciousはwinampライクなサウンドプレイヤー。

1、事前準備 リポジトリへlivnaを追加

livnaのページからFedora 9用のリポジトリRPMをダウンロードしてインストールする。以下のように直接URLを指定しても可能。

# rpm -Uvh http://rpm.livna.org/livna-release-9.rpm

2、audaciousとプラグインをインストール

# yum install audacious audacious-plugins\*

3、再生してみる

普通に再生

ディレクトリを指定してもいい

m3uを指定

m3uはshift-jisで記述してあるとうまく開けない。utf-8に変換すると開ける。改行もlinuxスタイルに変える必要がある。以下の方法で変えられる。

4、日本語が化ける

タグの日本語が化ける。以下の設定で直す。

プレイヤー部分も化ける場合は、外観の設定でビットマップフォントを使わないようにする。

5、スキン

スキンはwinamp2系のスキンを利用できる。wszファイルをダウンロードし、~/.local/share/audacious/Skins/ に置けばいい。

また、xmms-skinsパッケージにスキンがあるので以下のようにして持ってこれる。

ここで中にあるzipファイルをスキンのディレクトリへもってくる。

MySQLでrootのパスワードを変更する

WindowsのMySQL 5.0を想定しています。

MySQLのユーザ名とパスワードはMySQL自身が管理している物で、OSのものとは関係がありません。

1,コントロールパネル管理ツールサービスを開き、MySQLを停止させます。

2,以下のようなテキストファイルを用意し、C:\mysql-init.txtとして保存します。MyNewPassのところは実際のパスワードに変えます。

3,管理ツールのサービスのMySQLをダブルクリックして開き、「実行ファイルのパス」を確認します。ここでは以下のようになっています。

4,コマンドラインから以下のコマンドを実行します。このとき上記のパスを参考にします。

入力待ちになったらCtrl+Cを押して停止します。

5,管理ツールのサービスからMySQLを起動します。

参照元

csrss.exeとサブシステム

Windows2000やWindowsXPのNT系で必ず動いているcsrss.exe。

Windowsにはサブシステムという概念があり、WindowsアプリケーションはWindowsサブシステムの上で動いている。WindowsサブシステムはKernel32.dllやUser32.dllなどの基本的なDLLと上記のcsrss.exeによって提供されている。

世に出ているほとんどのWindows用の実行ファイルはWindowsサブシステム上で動くアプリケーションで、通常はほとんどの稼動しているWindowsはWindowsサブシステムしか動いていない。

Windows Services for UNIXはPOSIXサブシステムを提供する。3.5から無料でで利用できるようになった。

POSIXサブシステム用に作られたアプリケーションはkernel32.dllなどとリンクしていないのでWin32APIが呼び出せない。そのかわりにforkなどのWin32では作りづらい機能を提供している。

POSIXサブシステムが動くとpsxss.exeが動く。これはcsrss.exeに対応するプロセス。

postfixでバーチャルドメイン覚書

一つのマシンでいくつかのホスト名をapacheなどのVirtual Hostを使ってホスティングしていて、それぞれのホスト宛のメールを受け取りたいときのpostfixの設定。

設定方法は簡単なものから複雑なものまで色々あるがここでは簡単な2つの方法を示す。ここではa.example.comとb.example.jpをホスティングしているとする。

1、もっとも簡単な方法。

以下のように、/etc/postfix/main.cfのmydestinationにホストを加える。

上記のようにした場合、info@a.example.com宛のメールとinfo@b.example.jp宛のメールは両方共OSアカウントのinfoさんのメールディレクトリ /home/info/Maildir/に入る。inaiuser@a.example.com宛でinaiuserのOSアカウントがない場合はエラーが返る。

2、もうちょっと複雑な方法

以下のように、/etc/postfix/main.cfに記述する。

/etc/postfix/virtualを以下のように記述する。

こうすると、info@a.example.com宛のメールはOSアカウントのabeさんのメールディレクトリに入り、info@b.example.jp宛のメールはOSアカウントのfukudaさんのメールディレクトリに入り、xxx@a.example.com宛のメールなどのここで定義されていないのもはkoizumiさんのメールディレクトリに入り、yyy@b.example.jp宛などのメールはエラーになる。

この方法を使う場合は、1のようにmydestinationを定義しないこと。

元ネタともっと複雑な方法についてはこちら

JavaScript 配列の基礎

・配列を作成する。


・配列の要素にアクセス


・配列の長さを知る


・境界を考えないでいきなりアクセスできる


・配列の末尾に要素を追加する。push
・配列の先頭に要素を追加する。unshift
・配列の末尾から要素を削除する。pop
・配列の先頭から要素を削除する。shift


・配列に配列を追加する。concat(追加する配列)


・配列内の部分配列を取得するsliceメソッド。slice(開始インデックス,終了インデックス)


・配列内の部分配列に別の配列を挿入する。splice(開始インデックス、削除する要素数、追加する要素、追加する要素、・・)


・配列を文字列に変換する。join(separator) デフォルトのseparatorは”,”