2006年1月20日 (金)

携帯ドボン

僕の携帯、SO504i。

永らく大事に使ってきたわけなんですが、とうとう壊れ(壊し)ました。水場に置いていて、不注意で水の中に落としちゃったんですよ。

落とした瞬間に手で何とか捕まえて完全水没は免れたので、携帯自体が飛んじゃったわけじゃないのですが(アドレス帳とか、メール送受信の履歴とか、メモリは残ってる)、スピーカーと、ジョグダイヤル(の上下スクロール)がやられちゃったんですよ。

スピーカーはちょっと音が変かな?ってくらいなんで、まぁ、良いのですが・・・。

SO504iって、ジョグダイヤルが使えなくなると、アドレス帳は開けないわ、メール閲覧もほぼ出来ないは、メールは作れないは。まぁ、ほとんどこちらからアクションを起こせない状態になっちゃったわけです。

さすがに、この状態だと携帯の意味を成さないので、新しく買い換えるしかないかないわけでして。

本当は、SO902iが発売されてから様子を見つつ、本命はSH902iとか思ってたんだけど、強制的にSH902iって感じなってしまった。

SH902iを買うとすると、色は赤か黒のどっちかが欲しいのですが、今日、携帯を見にいった所、黒は人気のようで売り切れでした。結局、決心が付かず(値段もまだちょっと高いし)、今日のところは買わず終いです。

とりあえず、今の状態で放置していると、いつの間にか完全にお釈迦になった時に困るので、アドレス帳データとかのバックアップのために、「携帯万能16」って言うバックアップソフトを買ってきました。

アドレス帳、メール等のメモリのバックアップの他に、携帯のキーエミュレート(PC上から携帯を操作)とか、メール作成・携帯へ転送とかも出来るので、一応、携帯メールの作成、送信は出来るようになりました。勿論、PCがないと使えないわけで、"携帯"としては役に立たないんですけどね。

SH902i購入の決心が付くのが先か、SO504iが完全に壊れるのが先か。いずれにしろ、しばらくはこれで用を足す事にします。

ちなみに、添付のケーブル構成によって値段も様々なんですが、僕が買ったのはPDC用・FOMA用(どうせ、FOMAに乗り換える予定なので)のケーブル同梱の物で4000円弱でした。

この手のソフトを買うのは初めてだったんで、ハードが添付されてる事もあるし7、8000円は覚悟してたんですが、思いのほか安くて想定外。

まぁ、それよりも、買った後に店頭カタログを眺めてたら、「想定外のトラブルに対応。ホリエもん推薦」とか書いてあった事が一番の想定外だったんですけどね(皆さんご存知だと思いますが、現在、ホリエもん率いる、livedoorグループは相次ぐ証券取引疑惑が取り立たされているため、存亡の危機とも言われちゃっています)。


帰宅してから調べて見ると、ホリエもんは単にイメージキャラクタとして起用しただけ見たいで、販売元のTriStarとlivedoorは直接の資本関係にはないみたいだし(僕の調べなんてたかが知れているので、この認識は間違ってるかもしれないですが)、livedoorショックの直撃を受けたりは無さそう。無駄な心配だったみたいです。


そういえば、livedoorといえば、TurboLinuxも子会社にしてたりするし、一般の人向けではブログサービスやら、某巨大掲示板風の掲示板サービスやら・・・。色々Web関連サービスを展開しているわけで(実際、僕もこことは別に、livedoor blogを借りていたりします)。

一応、今回の問題によるlivedoorポータルサイト関連のサービスへの影響はないとの発表もあったので、この辺は大丈夫なんだろうなと思いますが、その他にも知らない間に色々な会社を子会社にしているわけで、今回の騒動の着地点如何によっては、直接IT業界に関係無さそうな分野でも色々影響が出て来るかも知れませんね。

| | コメント (0) | トラックバック (0)

2005年12月24日 (土)

骨折り損かも

その後、Mozillaを入れ終わったんですが、結果としては起動せず。

表示されるエラーメッセージはFireFoxのときとは違って、起動スクリプト絡みの問題ぽかったんで、その辺をグーグルさんに問い合わせたりはしたんですが良くわからず。

で、半分あきらめ気分で、日本語化パッチ(ja-mozilla-jlip)をpkg_deleteしてみたら、あら不思議。あっさり動いてしまいました。

もしかしてFireFoxも同じ理由なのか?と思ったんで、ja-firefox-ja_JPもpkg_deleteしたら、こっちも動いてくれました。

なんのための日本語化パックなんだかわかりませんが、MozillaもFireFoxもportsの日本語化パックを使うのではなくて、いったん起動後、Preferenceから各ローカライズセンタにある日本語パックをダウンロードして適用するのが正解だったみたいです。

使い勝手は、MozillaもFireFoxもどちらもMozilla系列なんでほとんど変わらないんですよね。なんかもったいない事しちゃったな。

ちゅうわけで、本題のFlashPluginの適応。

すでに、

  • linuxバイナリ互換
  • linuxpluginwrapper
  • linux-flashplugin6
  • linux-flashplugin7
をインストールして、
# cp /usr/local/share/examples/linuxpluginwrapper/libmap.conf-FreeBSD6 /etc/libmap.conf

としてコピーするところまではやってあったりするんで、後は残り。

konquerorはこれだけで、flasyplugin6はすぐ認識してくれるんですが、MozillaとかFireFoxは/usr/X11R6/lib/browser_pluginsにあるライブラリを見るとの事なので

# cd /usr/X11R6/lib/browser_plugins
# ln -s /usr/X11R6/lib/linux-flashplugin7/flashplayer.xpt flashplayer.xpt
# ln -s /usr/X11R6/lib/linux-flashplugin7/libflashplayer.so libflashplayer.so

として、シンボリックリンクで代用。と、ここまでやってみた所、

  • Mozilla→起動しなくなった。
  • FireFox→起動するが、Flashを使っているページを開くと落ちる。

って状態になってしまいました。これまた、これまでの手順だけじゃダメらしくて/usr/ports/www/flashplugin-mozillaを入れていないとダメだって事がわかったので

# cd /usr/ports/www/flashplugin-mozilla
# make install clean

でさっくりインストールして、無事、MozillaでもFireFoxでもFlashが見られるようにはなりました。

けどねぇ。

手探りでやってるんで、どっか設定が間違ってるのかもしれないですが、一応Flashは動いている様なんですが、ちゃんとした動作になってくれていないんで、これならkoqueror+Flashplugin6の方がましなような。

| | コメント (0) | トラックバック (0)

2005年12月23日 (金)

キツネ vs ゴジラ

ここのところ、FreeBSDネタばっかで携帯の話なんか微塵もしていないので、サブタイトルをちょこっと変えてみました。なんにも捻っていないですが。


前回までで、日本語環境はほぼ完璧になりまして、むしろ、scim-anthy-0.8.0だと前方予測変換なんかがあるので、MS-IMEより使い勝手がよいかも。

ブラウジングはKDEに基本添付されている、konquerorを使っていまして、これまたIEより使い勝手がよい感じではあるのですが、難があるといえば、flashとかのプラグインへの対応がいまいち。

一応、Flash Player6相当のlinux-flashplugin-6はlinuxpluginwrapper経由で割と簡単に認識できるのですが、7になるとパスを通してあげたりlibmap.confをそれらしく編集しても無駄無駄状態でして、いろいろ調べたけどflash7を動かすのは無理っぽそう。

Flash6でも、まぁ、問題がないといえばないのですが(表示させる事よりも、エラー表示がうざいから入れている感じなので)、たまーにflash7以上じゃないと何が書いてあるかもまったくわからないようなサイトもあったりするんで、Flash7が動かせそうな、FireFoxを入れてみようと思ったのです。

とりあえず、規模が大きそうなんで「pkg_add -r firefox」で入れてみる。意外にすぐ終わる。

起動してみる。libなんちゃらが見付からんよとか言われる(細かいメッセージはメモるのを忘れました)。

この手のエラーは、バイナリパッケージの動作環境と、自分の環境でライブラリファイルのバージョンが違うと起こったりするそうでして、解決するには自分の環境でコンパイルするのがいちばん良いとの事。

うーん。いったい何時間かかるんだろう?って感じなんですが、すでに就寝時間に近付いていたので、とりあえず「/usr/ports/japanese/firefox-ja_JP/」で「make install clean && shutdown -p now」として寝てしまいました。

コンパイルが終わってたみたいなんで、FireFoxを起動してみたんですが、起動はするけどエラーが発生してブラウザとして機能しないわけでして。
翌朝起きた時に勝手に電源が落ちてくれていたんで、きっとコンパイルは成功したに違いないのですが、原因がよくわかりません。感嘆に調べた範囲でも良くわからなかったので、あっさりとあきらめて、ただいまMozillaをコンパイル中(こっちもpkg_addでうまくいかなかったので)。Mozillaもかなり大きなパッケージらしいんで、いったいいつ終わるのやら。

| | コメント (0) | トラックバック (0)

2005年12月11日 (日)

スクロールマウス解決!

dmesgの

psm0: failed to get status (doopen).

ってのは全然関係なかったようで、その後調べていたらビンゴな情報が見付かりましてあっさり解決。

わたしのマウスにはホイール機能が付いているのですが、X で使うことはできますか?

思いっきり日本公式関連のサイトっぽいし。まずは公式から見ないとダメですね(^-^;)

僕の場合はX環境以外でマウスが使える必要はないので、b.の「X サーバを使ったホイールイベントの変換」っていう方にしました。

・/etc/rc.confのマウス関連をコメント化

#moused_enable="YES"
#moused_flags="-z 4"
#moused_port="/dev/psm0"
#moused_type="auto"

※ mousedが動いているとpsm0が使用中になってXでpsm0を使えません。



・/etc/X11/xorg.confを変更

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
# Option "Device" "/dev/sysmouse" # ここを
Option "Device" "/dev/psm0" # psm0を使うように変更
Option "CorePointer"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection

ぐんと使い勝手が良くなりましたですよ。

| | コメント (0) | トラックバック (0)

スクロールマウス

FreeBSD用にマイクロソフトのスクロールマウス(コンパクトオプティカルマウスというやつ)を使っているので、KDEでホイールを使えるようにしようと設定とかやってみたんですが、全然ホイールが有効になってくれません。

調べた範囲では

/etc/rc.conf

moused_flags="-z 4"

/etc/X11/xorg.conf 「Section "InputDevice"」の「Identifier "Mouse0"」に

Option "Buttons" "5"
Option "ZAxisMapping" "4 5"

ってのを設定してあげれば良いだけみたいなんですが・・・(Mozillaとかはそれとは別に設定が必要みたいですが)。

どうもうまく行ってくれません。

そこで、dmesgで認識状況を見てみると

# dmesg | grep psm
psm0: irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse, device ID 3
psm0: failed to get status (doopen).

なんか、最後の行でマウスの認識がちゃんと行っていないような気配が。

カーソルは普通に使えてはいるので、さしあたり問題はないのですがホイールが使えるのと使えないのでは、使い勝手がずいぶん違うんですよね。

なんとか解決したいところ。

| | コメント (0) | トラックバック (0)

日本語入力とか

結局、コンパイルアップデートは、予想通り寝るまでに終わらなかったんで、PCを動かしっぱなしで寝てしまったんですが、今日の昼すぎくらいまで動かしてもアップデート終わらず・・・。

諦めてCtrl+Cで強制終了しました。パッケージバージョンの依存関係が良く分からなくなってしまったので、またOSを1から入れ直しにして、KDE関係はpkg_addでバイナリインストールにしました。これで何回目のインストールだろうか・・・。

まぁ、最初のうちは失敗を重ねて、できるだけ効率良くシステムアップさせる手順を自分で見付けるしかないって感じで、勉強になったってことにします。



話は前後しますが、昨日までに書いた手順では、KDEの表示を日本語にすることはできるのですが、まだ日本語「入力」はできない状態だったりします。

FreeBSDをはじめとしてオープンソース系のUNIX環境では、日本語入力方式が様々あるようでして、それぞれインストールしなくちゃいけないパッケージも違う様なのです。


当初は、割りと古典的な方式(なのかな?多分)の「kinput2+Canna(or FreeWnn)」ってのでやってみたのですが、やたらと自分で設定ファイルを用意しなくてはいけない割りに、Windows育ちの僕としては、操作性がいまいちでして(設定でどうにかなるんだと思うのですが、自分でも何を設定して入力ができるようになったのか分からない状態だったし)、他のものも試してみました。



ビギナーズバイブルによると、「SCIM+Anthy」というのが割りと最近の方式だそうで、バージョンアップも活発に行われているとの事なので試してみたんですが、「kinput2+Canna」であんなに大変だったのが嘘のようで、とりあえず使うだけならパッケージインストールと環境変数を定義してあげるだけで使えちゃうのですよ。最初からこっちを使えば良かったなぁ。


使い勝手も、MS-IMEライクで日本語入力モードになると

SCIM

こんな感じのウィンドウが表示されて、細かい設定もGUIからできるので、まんまWindowsの言語バーって感じですね。



というわけで、「SCIM+Anthy」のセットアップ方法

・パッケージのインストール

SCIM

# cd /usr/ports/textproc/scim
# make install clean

Anthy

# cd /usr/ports/japanese/anthy
# make install clean

SCIM-Anthy

# cd /usr/ports/japanese/scim-anthy
# make install clean

・設定
Anthy Wikiを参考に、環境変数を設定し、「~/.xinitrc」でSCIMを起動してあげるだけ。

全部、「~/.xinitrc」で設定するとすると

XMODIFIERS="@im=SCIM"
export XMODIFIERS
GTK_IM_MODULE="scim"
export GTK_IM_MODULE

scim -d &

exec startkde

こんな感じでしょうか。

結構快適に日本語が入力できるようになったんで、今日はFreeBSDから投稿していたりなんかして。

| | コメント (2) | トラックバック (2)

2005年12月 9日 (金)

落とし穴

今日の失敗

  1. portsからlinux-ttfontsをインストールしようと思ったら、distfilesが見つからず。ports情報が古いらしい。
  2. CVSupでportsツリーを更新。linux-ttfontsは無事インストール完了。
  3. その後、SCIMをインストールしてみる。glibのバージョンが古いと怒られる。
  4. glibを「portupgrade -r」でアップデートしてみる。依存関係のあるパッケージもアップグレードがかかる。
  5. なにやらKDE関連らしきパッケージもアップグレード対象だったらしい。

とてもじゃないけど、今日中にはアップグレードが終わらない予感(-_-;)

portsは便利ですが、良く考えて使わないと大変なことに(放っておくだけではあるのですが)なりますね(ノ∀`)

| | コメント (0) | トラックバック (0)

2005年12月 8日 (木)

デスクトップを構築しよう

統合デスクトップ環境のKDEまでは入れたので、次はKDEを日本語環境で使えるようにしてみます。


・ja-kde-i18nのインストール
KDE日本語化パッチ。さしあたりこれをインストールすると、KDEの言語設定で日本語を選択できるようになります。

CDには入っていないので、portsからインストールします。portsからインストールする場合は、対象ディレクトリに移動してから「make install clean」とするだけです。

# cd /usr/ports/japanese/kde3-i18n
# make install clean


・X.Orgの設定
一つ一つ説明すると長くなるので、さらっと流してしまいますが・・・。

# Xorg -configure
# cp /root/xorg.conf.new /etc/X11/xorg.conf
# xorgcfg -textmode

とすると、GUIっぽい画面がでるので、各デバイスの設定→「Write xorg.conf and quit」で設定を保存します。

# xinit

とすると、X.Orgが起動します。起動しない場合は、先程の設定が誤っているか、VGAカードが対応していないって事になります。

ここではX.Orgの設定を確認するだけなので、表示されているプロンプトで

# exit

とするか、Ctrl+Alt+BackspaceでX.Orgで終了します。


・KDEを起動する
X.Orgの設定がうまくいっている事を確認したら、「~/.xinitrc」に以下を記述して保存します。

#!/bin/sh
export LANG="ja_JP.eucJP"
export LC_ALL="ja_JP.eucJP"

exec startkde

.xinitrcを作成したら、またX.Orgを起動します。

# xinit

と、今度はX.Orgが起動した後にKDEが起動します。


・sazanami-ttfのインストール
ここまでの設定をやっておくと、大半のメニュー表示、メッセージ表示は日本語になるのですが、ついでに日本語TrueTypeフォントも入れておきます。

日本語TrueTypeフォントをインストールしておくと、日本語表示にアンチエイリアスを掛けられるようになるので、表示がなんとなく素敵になります。

1

さざなみフォント以外も日本語TrueTypeフォントがportsにはあるのですが、さざなみフォントが標準的なフォント(WindowsでいうMSゴシック、MS明朝のような感じ)なので、とりあえずはこれを入れておきます。

# cd /usr/ports/japanese/sazanami-ttf
# make install clean

実は、ここでめちゃめちゃはまったんですが、新規にフォントをインストールするとフォント情報(フォントキャッシュ?)を管理している部分を更新してあげないといけないらしく、インストールしたままにしておくと、KDEのメニュー表示はおろか、ターミナルまで化け化けに化けてしまいました。

ので、次のコマンドでフォント情報(フォントキャッシュ)を更新します。

# fc-cache -f -v

さらに、さざなみフォントをX.Org(ここではKDE)で使用するには、ロードディレクトリを追加してあげなくてはいけないので、「/etc/X11/xorg.conf」の「Section "Files"〜EndSection」の間に以下を追加して、KDEを立ち上げ直します。

FontPath "/usr/X11R6/lib/X11/fonts/TrueType/"

と、ここまでで日本語"表示"はできるのですが、問題は日本語"入力"の方でして・・・。

これまた長くなりそうなので、次回に続くって感じで。

| | コメント (0) | トラックバック (1)

パッケージのインストール

差し当たり使う予定のあるパッケージをインストールしてしまいます。


CDからインストール

別にCDからインストールしなくても対応ports(例えばkdeであれば/usr/ports/x11/kde3)で「make install clean」としても良いのですが、portsからインストールする場合は、

1.WANからソースファイルをダウンロード
2.コンパイル
3.インストール

という手順を踏むので、kdeのように依存関係が多いパッケージの場合は、インストールに恐ろしく時間がかかります(1回kdeをportsからいれようとしたことはあるのですが、丸1日かけても終わらなかったので途中であきらめました)。CDに入っているものは、とりあえずsysinstallからインストールしてしまうのが手っ取り早いと思います。

追記:
「pkg_add -r」を使えばバイナリインストールになってコンパイルはしないですむのでそんなに時間はかからないらしい。

まず、rootでログインして

# sysinstall

とすると、OSインストール画面と同じものが表示されるので、CDドライブにCD1かCD2をいれて「Configure→Packages→CD/DVD」と選択するとパッケージ一覧が表示されます。

・cvsup-without-gui
portsツリー(パッケージバージョン管理情報)を最新のものに更新するのに使います。

・portupgrade
portsツリーに従って、インストールしてあるパッケージをバージョンアップするのに使います。

・kde
統合GUIデスクトップ環境。デスクトップ環境は他にgnomeとWindowMakerが入っていましたが、それぞれ試した所操作性がWindowsに似ていて取っ付きが良かったので、kdeを使うことにしました。

依存関係にあるパッケージは、Dマークが付いて同時に入れてくれるので、必要なものにチェック(Xマーク)を入れるだけでよいです。

他にも色々あるので必要に応じてインストールしてください。

| | コメント (0) | トラックバック (0)

2005年12月 7日 (水)

カーネル再構築

普通は特に理由がなければカーネル再構築を行わなくても問題ないみたいですが、僕の場合はマルチCPU環境なので、マルチCPUを有効にするためにはカーネル再構築を行わなくてはいけないようです。

1.カーネル設定ファイルの作成
デフォルトのカーネル設定ファイル(GENERICカーネル)を基本にして、カスタムカーネル設定ファイルを作成します。僕のhost名はgemini(デュアルCPUなんで双子座としました)なので、GEMINIという名前でファイルを作成します。

rootでログイン

# cd /usr/src/sys/i386/conf/
# cp GENERIC GEMINI

コピーしたファイルを編集します。

ident GEMINI
# カーネル名を変更します。通常は設定ファイル名を設定するのが通常のようです。

options SMP
# SMP(非対称マルチプロセッサ機能)を有効
options SCHED_ULE
# スケジューラを有効
#options SCHED_4BSD
# 4BSDスケジューラを無効

スケジューラはデフォルトでは4BSDが使われているのですが、ULEスケジューラの方がマルチCPU環境に適しているそうなので、4BSDからULEに変更しました。

ついでに、dmesgを参考にして、使っていないデバイスなんかも消してカーネルをコンパイルします。

# cd /usr/src
# make buildkernel KERNCONF=GEMINI

ここで、設定ファイルの記述が間違っていたり、有効になっているデバイスと依存関係にあるデバイスが無効になっていたりするとエラーとなって途中でコンパイルが止まります。

エラーが発生しないで無事にコンパイルが終了したら

# cd /usr/src
# make installkernel KERNCONF=GEMINI

として、コンパイルしたカーネルに置き換えます。ここまで問題なく終了すれば、再起動後に新しいカーネルが適用されます。僕の環境だとカーネルのコンパイル(buildkernel)に1時間半程度、インストール(installkernel)に5分程度かかりました。


もし、再起動後に立ち上がらなくなってしまった場合は、OS起動モード選択画面で6を選択し

load /boot/kernel.old/kernel

として、古いカーネルで立ち上げて、


# make buildkernel installkernel

上記の標準のカーネルに戻してから、設定ファイルを再度編集しなおします。
(今のところカーネル再構築で立ち上がらなくなったことはないので、やったことはないんですけどね)


| | コメント (0) | トラックバック (0)

FreeBSD6.0を入れてみる

やっとインストール環境が揃ったので、OSインストールに取り掛かります。

PC-UNIXで、無料で手に入るものというと色々あるのですが、今回はFreeBSDを入れてみることにしました。

FreeBSDの最新は6.0とメジャーバージョンアップしたばかりだったので、旧バージョンの5.4とどちらにするか迷ったんですが、

・6系は安定バージョン
・5.4と大きく変わった点はあまりない
・マルチCPU環境でのパフォーマンスが向上している

って、事だったので6.0を入れる事としました。

基本的には、表示される手順に従えばそんなに難しいことは無いのですが、一応、「FreeBSD ビギナーズバイブル」という本を買ってきました。
あと、かつをぶしというサイトがインストールについて良く纏まっていたので、この二つを参考に作業を進めます。


環境によって選択項目とかは変わってくるので、下記は僕の環境での備忘録みたいな感じです。

・インストールCD
OSをインストールするだけならば、CD1だけでインストールは出来ますが、CD2から追加パッケージを入れられると便利なので、CD2もダウンロードします。
CD1,2を両方ダウンロードすると僕の環境(ADSL)で2~3時間くらいかかるので、そこは覚悟が必要。

・インストール方法
かつをぶしでは「Custom」インストールで説明がありますが、「Standard」でもCustomと設定項目は変わらないので、面倒くさかったのでStandardを選びました。

・パーテーション
swapは実メモリの2倍程度を目安。Autoで割り当ててもいいですが、半端な数字になって気持ち悪いので手動で1024MB(搭載512MB)で割り当て。
/varはAutoモードで割り当てるとかなり少なくなるのですが、システムログファイルなどは/var以下に入るので、できるだけ多い方が良いそうです。とりあえず、僕は2048Mを割り当て。

後のシステム領域はAuto(Aキーを押下)で作成。

それとは別に、/home以下にユーザディレクトリが出来るので、10GBHDDをフルに割り当て。後は今後MySQLとPostgreSQLをインストールしようと思っているので、DBファイル用にそれぞれ10GBずつパーテションを作成して下記みたいになりました。
/    512MB
/var  2048MB
swap  1024MB
/usr  15.5GB
/temp 512MB
/home 10GB
/mysql 10GB
/pgsql 10GB

・ディストリビューション
デスクトップ環境を使いたいので、「X Developer」を選択。この時「Ports Collection」を入れるか聞かれるのですが、これはYesにします。Portsを入れておくと、パッケージのインストール、バージョン管理なんかが非常に楽になるので、容量に余裕がないとか言うのでなければ、なるべく入れたほうが良いです。

ここから先は、OSファイルコピーが終わってからの各種設定になります。ここで設定した内容は後から変更することは勿論出来ますが、差し当たり使う予定のあるものは設定してした方が良いでしょう。

・ユーザ
telnetやftpを使う時に、管理ユーザ(root)ではログインできないので、別にユーザを作成。かつをぶしだとsuを使うためには「member group」を「wheel」にするとあるんですが、ビギナーズバイブルを見ると
・suを使うためには「group」を「wheel」
・shutdownを使うためには「member group」に「operator」
となっていたのでそちらに従いました。

・ネットワーク設定
IPV6→使わないのでNo。
SSH→ローカルネットワークで使うだけだし、今のところtelnetで十分なのでNo。SSHを有効にすると起動時にSSHの初期化で結構時間がかかるので使わないのならNoにした方が良いです。
inetd→すぐにftpやtelnetは使いたいのでYes。その後設定ファイルが表示されるので、ftpとtelnetのコメント(#)を削除しておきます。
NFS Server,Client→今のところ使う予定はないのでとりあえず両方ともNo。
Gateway→今のところGatewayとしては使わないのでNo。
DHCP→IPは固定設定でやっているのでNo。

ここまでやったら、OS自体のインストールはおしまいなので、インストーラを終了して再起動。

所要時間は僕の環境で20~30分くらいでした。

| | コメント (0) | トラックバック (0)

2005年12月 1日 (木)

PC-UNIX奮闘記 その1

ほぼ1ヶ月くらい更新してなかったわけですが、その間に何をやっていたかというと・・・。

先日、PHPの使えるland.toにサイトスペースを借りたのをきっかけに、PHPとかXOOPSとかを勉強していまして、どうせなら、自宅にWWWサーバを立ててしまおうかなと、UNIXサーバを構築していました。

色々トラブルがあって、やっとインストールが終わった所なんですけどね(^_^;)

WWWサーバを立てるだけなら、Windowsに入れても良いのですが、PHPとかMySQLを入れる事とかを考えると、いわゆるUNIX系のOSのほうが都合がいいわけで、2年ほど使っていないPentiumIIIPCも有効活用しようかということでもう一台を復活させることにしました。

古いPCのスペックは
MB: ABIT VP6
CPU:PentiumIII 866MHz(デュアル構成)
Memory:512MB
HDD:40GB+10GB
VGA:Matrox Millenium G450

現在の3Dバリバリのゲームとかに使うにはきついですが、今でも現役で使える位のスペックではあるのでやっぱり使わないのはもったいないですよね。

と、いうわけで古いPCを引っ張り出してきてとりあえず電源を入れてみたものの・・・。

うんともすんとも言わない!放っておいている間に、どこかパーツが逝っちゃったようです。

チェックしてみたところ配線に異常はないですし、電源スイッチを押しても何も反応がないので、電源が死んでると踏んで、近所の某大型電気店でTORICAの400W電源を購入。7000円くらいでした。思いのほか電源って高いのですね・・・。

そんな感じで電源を付け替えて、電源投入。

チュイィィィン

HDD、CPUファンなんかが回りだしたので、快調快調!と、思いきや・・・・。

後日に続く

| | コメント (0) | トラックバック (0)

2005年11月 3日 (木)

land.to

先日、PHPとMySQL、PostgreSQLの使える無料レンタルサーバサービスのland.toにスペースを借りました。

PHPはC、C++とPerlを併せたような言語で、HTMLのタグ記述の中に条件式なんかを埋め込めるので、PerlでCGIを作るより簡単な気がします。

折角PHPとかがつかるので、XOOPSをインストールして、今はXOOP用の外部モジュールを作っています。

| | コメント (0) | トラックバック (0)

2005年10月16日 (日)

livedoorBlogとSEO

僕は、ここ(ココログ)とは別にlivedoorのblogも使っているんですが、この二つのアクセス解析を見ると大きな違いがあります。ココログのアクセスはほとんどがgoogleやyahoo等のサーチエンジンから。対して、livedoorBlogの方はサーチエンジンからのアクセスは0といっていいくらいありません(内容が違うので単純に比較は出来ませんが)。

livedoorBlogの事を調べていると結構この手の話が多くて、サーチエンジンからのアクセスが少ない理由はサンプルとして用意されているHTMLソースにあるようです。

具体的に言うと、livedoorBlogのテンプレートの構造は

h1 blogタイトル
h2 日付
h3 記事タイトル

なんと、記事タイトルより日付の方が重みのあるタグを使っているのですよ。さすがにこれはアクセス云々の前にHTML構文として問題ありそうだなと言うことで、日付のh2を失くして、記事タイトルの方をh2に変更しました。

これで、多少はアクセスアップするでしょうか。

参考記事
livedoor Blogの簡単なSEO対策の仕方

| | コメント (0) | トラックバック (0)

2005年10月 9日 (日)

雨のち雨

3連休だと言うのに、天気が思わしくありません。急に土砂降りになったりするので、中々外にもいけないので、かねてより変えようと思っていた、livedoorのBlogを二日かけてカスタマイズしてみました。

最初はどう見てもHTMLではないタグ<$~$>なんてのがあったので、Movable Typeとか言うやつかと思ったのですが(実際そうなんでしょうけど)、記事書き出し機能とかその辺はカプセル化してあるみたいで(XMLとかその辺は全然知らないんで、的が外れた解釈かもしれません)、テンプレートソースとにらめっこしていれば、まぁ何とかいける感じだったんで、当初思っていたよりは難無く終わった感じでして。

普通のHTMLと違ってlivedoor側が定義したタグが入っていたりするので、ローカルで試しながら作るのが困難だったり、ソースのアップロードもFTPを使えなかったりなんかで、結構手間取ってしまって、一番時間がかかったのは、基本レイアウトとCSS、サイトデザインを考える所でした。

とりあえず、外観は無難な所に落ち着いたことは落ち着いたのですが、果たしてBlogとして本当に機能しているのかどうかが疑わしかったりなんかします。

ココログのデザインも自分仕様に変えたいと思い始めたのですが、ソース改変可能なのはココログプロにしないといけないわけで、それだけのためだと追加料金がもったいないなぁと思っている次第です。

| | コメント (0) | トラックバック (0)

2005年10月 5日 (水)

CSS備忘録-背景画像を複数指定-

背景画像として指定できる画像は1要素辺りひとつしかないので、ひとつの領域に複数の背景画像を適用するためには、ひとつの領域に複数の要素を重ねあわせる(セル画を重ねていくイメージ)ようにして実現します。

考え方としては、サンプル1のように背景画像を適用した要素のいっぱいに、さらに背景画像を適用した要素を内包させます。

サンプル1ではbodyに画像1、div要素に画像2を適用し、(当たり前ですが)divを内包するbodyとして記述します。body、divのスタイル指定はサンプルのソースを参照してください。

画像1
画像1

画像2
画像1


上記の方法を応用するとサンプル2のように、ウィンドウ幅を変更しても上下左右、左上、右上、左下、右下が崩れないフレームのような領域を作ることも出来ます。サンプル2では装飾フレーム用に上下左右、左上、右上、左下、右下毎に8個のdiv要素を重ね合わせています。

| | コメント (0) | トラックバック (0)

2005年10月 1日 (土)

aとulの関係

最近、参考書を買ったり立ち読みしたり、Web上で検索したりしてCSSのサンプルを見ているのですが、リンクメニューの例示では必ずと言っていいほど

CSSの記述
ul{スタイル}
ul li {スタイル}
ul li a {スタイル}
ul li a:hover {スタイル}

HTMLの記述
<ul>
  <li><a href="xxx">リンク1</a></li>
  <li><a href="yyy">リンク2</a></li>
  <li><a href="xxx">リンク3</a></li>
</ul>

と言うように、ulとliを使っています。


単にリンクの外観指定だけならば

CSSの記述
a {スタイル}
a:hover {スタイル}

HTMLの記述
<a href="xxx">リンク1</a>
<a href="yyy">リンク2</a>
<a href="xxx">リンク3</a>

と言う風にすれば同様の効果は得られるのに、なぜわざわざulとliを使う必要があるのか疑問に思っていました(逆にulとliを使う方がリスト特有のスタイルを解除しなくてはいけないので手間がかかります)。


僕は標準ブラウザとして、今はIEでなくてOpera8.5を使っています。

Operaでは(IE、NNでもできますが)、Webページが使用しているスタイルを解除して、テキストブラウザ風の表示等に簡単に切り替えることが出来ます。

_1

テキストブラウザ風にしてみると、リンクメニューをulで書く理由が良く分かりました。


ul、liを使わなかった場合

Link Menu
Top
Information
Links
Contact us


ul、liを使った場合

Link Menu


要はリンクメニューというのは、そのサイトを案内するためのリンクリスト、現実世界で言う所の目次に当たるわけです。

「魚本」のfontタグとh1タグの例にもありますが、HTMLの本来の意味で考えると、ulとliを使ってメニュー「リスト」として定義しているって事ですね。

ulで閉じていないリンクメニューは、単なるaタグの羅列なだけであって、HTML的に言うと「メニュー」でもなんでもないわけです。


実際は、作成したWebページは人間が見るわけで、h1タグを使っていなくても、他の文字より大きな文字で書いてあれば標題だと分かるし、リンクが並んでいればリンクメニューなんだなと分かるわけなんですが、サーチエンジン(Webクローラ)のような機械(プログラム)相手ではそうは行かなかったりします。

<meta name="Keywords" content="xxx・・・・">でWebクローラに読ませるキーワードを指定できますが、最近のサーチエンジンではmetaタグより、サイトの内容、特にtitleやh1~h6に書かれている物を重視して分類するそうです。

正確にタグの意味通りにHTMLを記述していると、的確なサーチにかかりやすくなるので、その分サイト来訪者を増やす結果になるのかもしれません。


単純に画像が並んでいるだけのデザインの場合でも

スタイルの記述
h2 {display: none;}

HTMLの記述
<h2>街の風景</h2>
<img src="xxx1" alt="街の風景1">
<img src="xxx2" alt="街の風景2">
<h2>公園</h2>
<img src="yyy1" alt="公園1">
<img src="yyy2" alt="公園2">
<img src="yyy3" alt="公園3">
<h2>空</h2>
<img src="zzz1" alt="空1">
<img src="zzz2" alt="空2">

とすると、良いのかもしれません。


HTMLの本来の意味を守ることは、読み手への恩恵だけでなくて、書き手への恩恵もあるって事ですね。

| | コメント (0) | トラックバック (0)

2005年9月26日 (月)

クロスブラウズその3

W3Cのソースチェッカーを使っていて感じたこと。

結局の所、FLASHやその他、複数のブラウザで動作させるためにembedタグを使用すると、絶対に通らないという事で。

W3Cに完全準拠すると、当初の目的である"クロスブラウズ"は実現出来ないという事になって本末転倒です。

ただ、その他の部分ではHTML4.01に準拠するようにHTMLを書き直しました。

今まで間違った(というよりは、W3Cの標準仕様に即していない)書き方だったのは

  • table、tr、th、tdなどのテーブル関連要素のheight属性(高さ)は、本来は指定できない。指定する場合はstyle属性で「style=(height:20px;)」のように指定しなければならない。
  • テーブル関連要素のwidth属性(幅)を指定する場合は、割合指定(EX.width="20%")が望ましい。絶対値で指定する場合は、style属性で「style=(width:20px;)」のように指定する
  • imgタグには必ずalt属性を指定する。
  • scriptの文字列変数にタグを代入する場合の終端タグは「<\/font>」のようにエスケープを入れる。
  • scriptの指定は「script languege="javascript"」とするより「script type="txt/javascript"」のようにタイプで指定するほうが望ましい。尚、タイプ指定は省略してはならない。
  • URL内に&が含まれる(CGIを複数の引数付けて呼び出すときなど)は「http://xxx.com/yyy.cgi?zzz=aa&amp;ZZZ=AAA」のように記述しなければならない(2005/09/29 追記)

といった感じでしたが(まだ他にもあったかもしれないですが)、「HTMLの記述は要素のみ。外観を決める属性はスタイルシートで指定する」という考えが根幹にあるそうです。

あまりに、W3C準拠にこだわると逆に見辛いソースになってしまうのではないかなという気もするので、プロでもない限りはそこまでこだわらなくても良いのかなとも思います。

それよりも、やはり優先されるべきは色々な環境から見れるような記述にする事。なのではないのかなと思います。

実は今他で運営しているギルドサイトは、インラインフレームなんかを使ってしまっているので、もしかしたら見られないブラウザもあるのかもしれません(基本的にはWindowsのみのゲームサイトなのでIEだけにターゲットを絞っても問題ないはずですが)。

まぁ、折角勉強を始めたわけですし、今度は"クロスブラウズ"という観点から作り直そうかなと思った次第でした。

| | コメント (0) | トラックバック (1)

2005年9月24日 (土)

クロスブラウズその2

NNをインストールしたという話を投稿してみた所、トラックバックして貰った様で、そちらのサイト様の話を見るに、Operaも完全無料になったそうで。

前にも書きましたが、タダで使えるものはつかわにゃ損損なので、早速ダウンロードして使ってみました。

実はNNでは、僕が管理しているオンラインゲームのギルドサイトで使用しているJavascriptが、上手く動いてくれていなかったりしていたのですが、Operaで見てみた所、それなりに動いていたりなんかするので、NNよりもIEとの互換性が高いのかもしれないです(Operaの事はほとんど知らないので「そうじゃない!」ってツッコミが来るような気もしないでもないですが・・・。)

Operaは全く初めて使ったんですけど、かなり使い勝手が良いブラウザだとおもいます(NNのインタフェースは僕はあまり好きじゃ無いのですが)。タブブラウザなので、ぽんぽんウィンドウが開かないのも良いですし。

それよりも良かったのはページソースをW3Cのソースチェッカーに送信できる所ですね(手動でやれば勿論Operaじゃなくても良いわけですが)。

そんなわけで、ギルドサイトをチェック。

記述ミスとかIEライクな書き方になっている部分が結構あったらしく、NNでJavascriptが動かなかったのもこの辺に原因があったりするのかもしれません。

とりあえずは、エラー0になるように修正しなければ。


おそらくOperaの良い所というのはもっとあると思うので、しばらく標準ブラウザとして使ってみようかと思います。

| | コメント (0) | トラックバック (0)

クロスブラウズ

基本的にブラウザはIEしか使わないので、Webサイトの動作確認はIE6.0でしかしてこなかったのですが、WebTipsをブログに書くようになったので、サイトの確認用にネットスケープナビゲーター(NN)をインストールしてみました。

とりあえず、今までにあげた方法はNNでも大体動くのですが、いざ本番(?)サイトに実装してみると、色々な要素の絡みがあるのか、上手く動いてくれていなかったりします。

Web作成を専門にしているわけでは無いのですが、脱Web初心者のために、今後はクロスブラウズ(ブラウザ毎の互換性)の観点からも勉強する必要があるようです。

ある程度メジャーなブラウザというと、インターネットエクスプローラー(IE)、ネットスケープナビゲーター(NN)、Opera、FireFox・・・と色々あるわけで(まだあるかもしれないですが)、ある程度複雑な仕掛けを入れているWebページだと、これら全部に対応させるとなると結構大変そうです。


と、ちょっと固めの話になってしまったので。My Petって所のブログアクセサリを変更してみました。

前は、BlogPetと言うのを使っていたのですが、これはゲームプレイ日記の方で使っていて代わり映えがしないので、こちらではHarbotというのにしてみました。色々動き回ってくれるので中々面白いです。

| | コメント (0) | トラックバック (1)

2005年9月23日 (金)

DHTML備忘録-ストリーミング再生-

HTML上でメディアファイルをストリーミング再生する方法は何種類かあるが、今回はWindows Media Player(以下WMP)でwma(Windows Media Audio)ファイルをwaxファイル(メタファイル)で指定して再生する方法を記す。

・wmaファイルの作成

Windows Media Encoder(無料で入手可。以下WME)を使ってwmaファイルを作成する。元ファイルは、wav、mp3等が使用可能。

WMEではavi、mpg等から、wmv(Windows Media Video)ファイルも作成できるが、以降の手順を使えばwmvもストリーミング再生が可能(但し、メタファイルの記述方法はwaxと同じだがメタファイルの拡張子はwvxとなる)。
言うまでもないが、他人の著作物を無断で公開するようなことの無い様に!


・waxファイルの作成

後述するWMPオブジェクトに直接wmaを指定しても良いが、今回はwaxファイルを作成して、WMPで再生する方法にする。

テキスト形式のファイルを作成し拡張子を「.wax」に変更する。ここでは仮に「test.wax」を作成した事にする。

test.wax内の記述

<ASX version = "3.0">
  <Title>リスト名</Title>

  <Entry>
    <Title>曲名</Title>
    <Author>作成者</Author>
    <Copyright>著作権</Copyright>
    <Ref href = "http://xxx/xxx.wma" />
  </Entry>
</ASX>


上記は曲情報等も記述しているが、最低限必要なのは

<ASX version = "3.0">
  <Entry>
    <Ref href = "http://xxx/xxx.wma" />
  </Entry>
</ASX>

だけとなる。


さらに詳しい情報も記述できるが割愛。詳細はWindows Media™ メタファイルの活用を参照の事。


尚、下記のように<Entry>~</Entry>を複数記述することで、複数の曲を順に再生させる事が出来る。
<ASX version = "3.0">
  <Entry>
    <Ref href = "http://xxx/xxx.wma" />
  </Entry>
  <Entry>
    <Ref href = "http://xxx/yyy.wma" />
  </Entry>

  ~中略~

</ASX>

・WMPオブジェクトの定義

下記のタグをHTMLファイル内の<body>~</body>内の表示したい部分に記述する。

<object ID="MediaPlayer1" width=176 height=45 classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading MicrosoftR WindowsR Media Player components..." type="application/x-oleobject">
<param name="FileName" value="http://xxxx/test.wax">
<param name="ShowControls" value="true">
<param name="autostart" value="false">
<embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" SRC="http://xxxx/test.wax" width=176 height=45 autostart=0 showcontrols=1>
</embed>
</object>

上記でIEの場合object(ActivXコントロール)による再生、NNではembed(プラグイン)再生となる。

尚、<param name="~">の部分でプレイヤの外観を変更できる。「WEBに音楽を」内にあるWindowsMediaPlayer埋め込み用タグ自動生成スクリプトが便利。

文中の太字部分はファイルパス。環境に合わせて必ず変更すること。

| | コメント (0) | トラックバック (0)

2005年9月22日 (木)

DHTML備忘録-動的に文字列を変える-

「あるアクションをすると動的に文字列が変わる」という動作には「document.all[id].innerHTML = String;」を使用する(※ IEの場合。NNの場合はサンプルを参照)。

サンプルは「<div id="TXT_01"></div>」というようにdivタグにid属性を持たせて、onMouseOverイベントでリンク上にマウスカーソルが来ると文字列が変わるようになっている(マウスカーソルが外れると元の文字に戻るようにonMouseOutイベントも使用している)。

なお、ブラウザの種類、バージョンによって記述方法が違うため、ブラウザバージョンチェック後に処理を分岐している。

NN4では未確認。

2005.09.26 追記
NN(6以上?)ではid属性を与えたdivタグにpositionスタイルを明記しなければ動作しない(事がある)。
NN4以下ではdivではなくlayerタグを使用する事になっていたが、現行バージョンではlayerタグは廃止されているので上手く動作しない。NN4まで動作対象とするのならば、ブラウザバージョンによってdivタグとlayerタグを入れ替えるようスクリプトを記述しなくてはならない。

| | コメント (0) | トラックバック (0)

FLASH備忘録-FS Command(JavaScriptとの連携)-

例えばFLASHムービー内のボタンを押すと、JavaScriptを介してポップアップウィンドウを開く等、FLASHムービーとHTMLでの連携した動作を行うには、「FS Command」を使用する。

fs_com

画面はFLASH4。FLASH5以降ではActionScript実装により、アクション定義が大幅に変わっている可能性はあるが、基本的な考え方はおそらく一緒。

シンボル(ここではボタンシンボル)を定義して、シンボルのアクション設定に「FS Command」を加える。「コマンド」、「引数」に与える値については後述。


publishset

「FS Command」の動作を有効にするには、パブリッシュ設定でのHTML書き出しで「Flash(FSCommandサポート)」を選択する必要がある。

下記のようにパブリッシュ実行時にOBJECTタグにID属性が付与されるだけなので、自分で付け加えても可。尚、パブリッシュ実行で付与されるIDはflaファイル名が使用される様子。

<OBJECT classid="xxxx" codebase="xxxx" ID=command WIDTH=xxx HEIGHT=xxx>


HTMLファイルの<head>~</head>に下記のように記述する。

    <SCRIPT LANGUAGE="JavaScript">
    <!--
      function command_DoFSCommand(command, args)
      {
        if(command == "window_open")
        {
          var strURL = "./" + args + ".html";
          window.open(strURL, "popup","width=240 height=240");
        {
      }
    // -->
    </SCRIPT>

    <SCRIPT LANGUAGE="VBScript">
    <!--
      Sub command_FSCommand(ByVal command, ByVal args)
        call command_DoFSCommand(command, args)
      end sub
    // -->
    </SCRIPT>


「FS Command」での呼び出し関数名は

JavaScriptの場合…「objectタグのid属性名」+「_DoFSCommand」
VBScriptの場合…「objectタグのid属性名」+「_FSCommand」

となる。ここではid属性名が「command」なので、それぞれ「command_DoFSCommand」、「command_FSCommand」としている。

それぞれの引数には

command…FLASHのアクション設定で「コマンド」に与えた文字列
args…FLASHのアクション設定で「引数」に与えた文字列

が渡される。

ブラウザがNNの場合、JavaScript関数が呼び出されるが、ブラウザがIEの場合はVBScript関数が呼び出されるため、VBScriptの関数では引数をそのままJavaScript関数に渡して実行する形にすることで、両ブラウザに対応しつつ処理の記述を簡潔にしている。

この方法でNNでは上手く動作しないという話もあるので、あくまでIEでの動作を主眼に置いた方法であることに注意。


今回の例では、FLASHムービーのボタンを押下すると、引数で設定したHTMLファイルを幅240ピクセル、高さ240ピクセルのポップアップウィンドウで表示する。

・2005/9/25追記
「FS Command」を使用するより、GetURL()呼び出しで「javascript:」する方が汎用性が高いようなので追記。

FLASHでのシンボルのアクション定義で、GetURLを追加しURLに「javascript:関数名(引数)」とし、HTMLには対応する関数を定義する。

前述の例で言うと


FLASHのGetURL()の設定
URL→javascript:popup("window_open","test")
ウィンドウ→空欄
変数→送信しない

HTML内の関数定義
    <SCRIPT LANGUAGE="JavaScript">
    <!--
      function popup(command, args)
      {
        if(command == "window_open")
        {
          var strURL = "./" + args + ".html";
          window.open(strURL, "popup","width=240 height=240");
        {
      }
    // -->
    </SCRIPT>

参考リンク
Flash でポップアップブラウザウィンドウを作成する方法

| | コメント (0) | トラックバック (0)

CSS備忘録-リンク表現色々-

リンク(aタグ)のスタイル指定で、サンプルのように、様々なリンク表現が出来る。

基本は下記の4つの状態それぞれで文字色や文字装飾を変えてる事によって表現を変える。linkとhoverのスタイルに変化を持たせる事によって、視覚的な変化を作りやすい。

a:link・・・通常(未訪問)状態
a:visited・・・通常(既訪問)状態
a:active・・・選択状態
ここで言う"選択"とは、文字列が選択された状態の事で、後述するカーソルで選択された状態とは別。
a:hover・・・カーソルが上に来た状態

以下、サンプルのポイント(詳細はサンプルのソースを確認の事)

サンプル1「color:」により各状態の色変化で選択状態を表現
サンプル2horver時のみ「background-color:」を指定して、背景色で選択状態を表現
サンプル3horver時のみ「text-decoration: underline overline;」を指定して、文字の上下に線を表示して選択状態を表現
サンプル4link時とhover時で、「border:outset」と「border:inset」を切り替えてボタン押下風に選択状態を表現
サンプル5link時とhover時で、「color:」と「background-color:」の色指定を反転させて選択状態を表現
サンプル6link時とhover時で、「margin:」のleft位置を変えてリンク表示位置を動かして選択状態を表現

| | コメント (0) | トラックバック (0)

2005年9月21日 (水)

Perl備忘録 -文字列成型-

掲示板CGIなどユーザが入力した文字を使う場合、文字化けを防いだり処理に適合させるため、文字列成型が必要となる事がある。


・半角カナは文字化けする事があるため、全角カナに変換する方が無難である(Shift-JISの場合)。

  &jcode'h2z_sjis(\$sorce);    #半角カナ→全角カナ

※ jcode.plが必要


・入力内容をファイル名にする等、英数字を半角で統一したい場合

  local($han) = "0123456789"
    ."abcdefghijklmnopqrstuvwxyz"
    ."ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  local($zen) = "0123456789"
    ."abcdefghijklmnopqrstuvwxyz"
    ."ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  &jcode'tr(*sorce,$zen,$han);  #全角英数→半角英数


・改行コードはHTMLに出力しても表示上の改行にならないので、改行を表すbrタグに変換する

  #改行コードを変換
  $sorce =~ s/\r\n/<br>/g;
  $sorce =~ s/\n/<br>/g;
  $sorce =~ s/\r/<br>/g;


・入力内容にHTML上意味のある文字(タグなど)を含むと、表示を崩したりセキュリティの問題があるのでそれぞれを表す記号(&xxx)に変換する。

  #HTMLで意味のある文字列を変換する
  $sorce =~ s/"/&quot;/g;
  $sorce =~ s/&/&amp;/g;
  $sorce =~ s/</&lt;/g;
  $sorce =~ s/>/&gt;/g;


・前後の全角半角スペースを削除(Shift-JISの場合)

  local($1) = "";
  local($Zspace_sjis) = '(?:\x81\x40)';
  local($oneByte_sjis) = '[\x00-\x7F\xA1-\xDF]';    #1バイト SJIS文字
  local($twoBytes_sjis) =
    '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';  #2バイト SJIS文字
  local($character_sjis) = "(?:$oneByte_sjis|$twoBytes_sjis)";

  $sorce =~ s/^(?:\s|$Zspace_sjis)+//o;            #前
  $sorce =~ s/^($character_sjis*?)(?:\s|$Zspace_sjis)+$/$1/o;  #後

※ jcode.plが必要


おまけ

・数字3桁ごとに","(カンマ)を入れる(EX.10000→10,000)
  while($sorce =~ s/(.*\d)(\d\d\d)/$1,$2/){}

| | コメント (0) | トラックバック (0)

2005年9月20日 (火)

CSS備忘録-スクロールバーをカスタマイズ-

IE5.5以降のブラウザであれば下記のようにbodyタグのスタイル指定を行うと、スクロールバーの外観を変更することが出来る。

body
{
  scrollbar-face-color:    #ffffff; /* スクロールメイン部分 */
  scrollbar-highlight-color:  #a9a9a9; /* 右と上のバー外周部分 */
  scrollbar-shadow-color:    #a9a9a9; /* 右と下のバー外周部分 */
  scrollbar-arrow-color:    #a9a9a9;
  scrollbar-darkshadow-color:  #ffffff;
  scrollbar-base-color:    #ffffff;
  scrollbar-3d-light-color:  #ffffff;
}

上記のように指定すると、サンプルの様な外観になる。

各部の「#FFFFFF」等の記述は、その部分の色を示している。


HTMLファイルに上記スタイルを埋め込む場合は<head>~</head>内に


<style type="text/css">
<!--
  body
  {
    scrollbar-face-color:    #ffffff; /* スクロールメイン部分 */
    scrollbar-highlight-color:  #a9a9a9; /* 右と上のバー外周部分 */
    scrollbar-shadow-color:    #a9a9a9; /* 右と下のバー外周部分 */
    scrollbar-arrow-color:    #a9a9a9;
    scrollbar-darkshadow-color:  #ffffff;
    scrollbar-base-color:    #ffffff;
    scrollbar-3d-light-color:  #ffffff;
  }
-->
</style>

と、記述する。


また、styleタグを使わないで、下記のように直接bodyタグにスタイルを埋め込むことも出来る。

<body style="scrollbar-face-color:#ffffff;scrollbar-highlight-color:#a9a9a9;・・・中略・・・">

尚、外部ファイルにて指定する場合はこちらを参照の事。

| | コメント (0) | トラックバック (0)

2005年9月19日 (月)

CSS備忘録-外部ファイルでスタイル指定-

WEBページを作成する時、スタイル指定を下記のように<head>~</head>内に直接書き込んでも良いのだが


<style type="text/css">
<!--
~スタイル指定~
-->
</style>


サイト内に複数のHTMLコンテンツがある場合、外部ファイルでスタイル指定をしておく事によって、内容は変えないがページの外観(背景色とか文字サイズとか)だけを変える時等、外部ファイルのみを編集すれば一括でスタイル指定を変更できるので、スタイル指定は外部ファイルで行うと便利だ。

まず、TEXT形式でファイルを作成し適当なスタイル指定を記述する。この時HTMLファイル内に記述するように<style type="text/css">~</style>を記述する必要はない。

ここでは仮にbodyタグのスタイル指定をstandard.cssというファイルに記述した事とする。


standard.css内の記述

body
{
  background-color:      #ffffff;
  font-family:        Verdana, 'MS Pゴシック';
}


standard.cssで指定したスタイルをHTMLファイルに適用するには<head>~</head>内に下記のように記述する。

    <link rel="stylesheet" href="standard.css" type="text/css">

「href="standard.css"」の部分は外部ファイルのパスを記述するので、例えばHTMLファイルパスが「home/html/index.html」、standard.cssが「home/css/standard.css」の場合は「href="../css/standard.css"」となる。

| | コメント (0) | トラックバック (0)

2005年9月18日 (日)

Perl備忘録 -CGI呼び出し-

掲示板CGI等でFORMより送信された内容は、「引数名1=値1&引数名2=値2・・・」という形で渡されるため、CGIで処理を行う場合に、各引数を分離する必要がある。

※ 引数名1,引数名2・・・・の引数名は<form>~</form>内の<input>タグのname属性に指定した文字列になる。


まず、CGIに渡される形式は"GET"と"POST"という形式があるが下記のように記述すれば、GET,POST共に対応できる。

    # 引数を$bufferに格納する
    if($ENV{'REQUEST_METHOD'} eq "POST") #POSTの場合
    {
        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    }
    else #GETの場合
    {
        $buffer = $ENV{'QUERY_STRING'};
    }

POSTで送信された場合は、標準入力に引数が書き込まれるため「read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});」としている。POSTの場合読み取りサイズ指定が必要なので「$ENV{'CONTENT_LENGTH'}」で指定している。

GETで送信された場合は、引数はURIとしてURLに引数が付加された形で送られてくるため、「$ENV{'QUERY_STRING'}」をそのまま格納している。


下記の記述で引数を分離する。引数の形式は「引数名1=値1&引数名2=値2・・・」という形で渡されるため、まず「local(@pairs) = split(/&/,$buffer)」で変数毎に分離した引数リストを作り、foreachで各引数要素に「local($name, $value) = split(/=/, $pair);」して、各引数名と値に分離している。

    #引数解析
    local(@pairs) = split(/&/,$buffer);
    local($pair);
    foreach $pair (@pairs)
    {
        local($name, $value) = split(/=/, $pair);
        #デコード処理
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

        &jcode'convert(*value,'sjis');

        #引数を格納
        $FORM{$name} = $value;
    }

尚、掲示板CGI等、日本語(2バイト文字)での送信がある場合、引数に渡される文字列はURIエンコードされて渡されるため、処理を行う前に元の文字列に戻す(デコード)する必要がある(ここではShift-JISに変換している)。

変換処理にはjcode.plを利用しているため、予め「require './jcode.pl';」する必要がある。

| | コメント (0) | トラックバック (0)