トップページ | 2005年10月 »

2005年9月29日 (木)

フィッシュ&チップス

CSSは大して知らないので、ちゃんとした本を買ってきました。

・オライリー CSS完全ガイド


オライリーのPerl本は通称「ラクダ本」(表紙がラクダ)と言うそうなので、CSSの場合は差し当たり「魚本」とでも言うのでしょうか。

オライリーは所謂IT分野の専門書としてはかなり有名でして、内容もかなりボリュームがあるので、まだ斜め読みでしか読めていませんが、さしあたり覚えたこと。

a {font-size: 32px;}

table.foo a {
font-size: 20px;
}
とすると、

通常のaタグのフォントサイズを32pxにする。但し、fooクラスのtable内にあるaタグのフォントサイズは20pxにする。という意味になる。

CSSをちゃんと知っている人にとっては、何をいまさらなのかもしれないですが、自分にとっては画期的、目から鱗な内容でして、これを使えば今まで書いていたスタイルシートがかなりシンプルに書けるのではないかと思います。


と、Tips的な読み方しかしないのなら、こんな専門書は要らないわけで、もうちょっとちゃんと読まなければいけません(悪い癖です)。

第一章ではお決まりのように、CSSが策定されるに至った経緯が書いてあるわけですが、ちょっと耳が痛くなる事も。

ほとんどのサイトではマークアップがテーブルとfont要素でほぼ占められている。これらはWebに表示されるものの意味を実際に伝えるものではない。構造という面から見て、これらのページはでたらめに並べられた文字列となんら変わらない。

例示としても書かれているのですが、例えば見出しとして大きい文字を書きたいと言う時に、h1タグを使わずにfontタグのsize属性で指定したり、レイアウト調整のために複雑なtable組みを使ったりなんかは往々にやってしまう事で、CSSを学ぶと言う事は、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月25日 (日)

QRコード

ドコモ 902iシリーズの発表をまだかまだかと待っているのですが、全然発表がありません。902iを買ったら、携帯用のコンテンツをアップしようかと思っているので、QRコードも一緒に貼れるとダウンロードする時に便利そうです。

ドコモではQRファクトリーというQRコード生成アプリを公開しているのですが、なぜか私の環境では上手く動きません。ドコモが発表している動作環境は満たしているのですが・・・。

動くように色々やって見ようにも全然情報がないので、すっぱりあきらめて他の方法でQRコードは作成する事としました。

「QRコード」というキーワードでググるだけで、色々候補が出てきますが、QRのススメという所が有名所のようです。

それにしても、902iが出る気配が全然ないので、しばらくQRコードは使えないわけでして、この投稿がメモで終わらないことを祈ります。


さて・・・。なぜいまさらQRコードの話をしたかというと。

実はこのサイト、アクセス解析を入れているのですが、今日アクセス履歴を見てみたら携帯からアクセスされた方がいらっしゃったみたいでして。

サイドバーに、何となくこのサイトURLのQRコードを貼り付けていたせいだと思うのですが(今は消してしまいました)、良く調べてみるとココログはPC専用で、基本的に携帯から見るように出来ていないそうです(ココログリーダーというiアプリはあるそうですが、それでもパケットはかなり食うらしい)。

携帯からのアクセスで大分パケットを使わせてしまったものと思います。

ごめんなさい・・・です。

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

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)

Perl備忘録 -文字列成型-(BlogPet)

前はtom


*このエントリは、BlogPet(ブログペット)の「輪輪」が書きました。

| | コメント (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)

2005年9月17日 (土)

携帯選び

携帯を買い換えようと思っている。

今使っている携帯はドコモ SO504i。さして不満は無いのだけれど、今や携帯では当たり前になっているカメラ機能が付いていない。

とりあえずデジカメは持っているが、光学10倍ズームの付いたそれなりに大きな物なので、カメラを持ち歩く習慣は今のところない。

だから、カメラ付きでなくても何も問題はないわけだけれど、逆に考えると携帯にカメラが付いていれば常時カメラを持ち歩く習慣が出来るわけで、何かしら使うかもしれない(使わないかもしれないとも言う)。

実際、カメラで何かを撮影するという機会はあまり無いとは思うのだけれど、最近携帯向けサイトでよく使われるQRコードが読み取れるのは魅力だと思う。


そんなことを考えている所、11/1よりドコモの料金プランが改定されて、movaとFOMAの料金プランが統合されるとの事で今まで料金プランの面で敷居の高かったFOMA端末が欲しくなってきた。

色々情報を集めてみると、そろそろ902iシリーズが発表されそうとの事で、噂ではソニー(エリクソン)も902iよりFOMA端末に参入するらしい。

初代携帯(tu-ka)から、SO502i、SO503i、SO504iとずっとソニー端末を使ってきたので、かなり期待してはいるのだが、現行機種のPreminiシリーズやSO506i等を見るに、今までソニー端末を選んできた最大の理由であるジョグダイヤルは採用されないような気がする。

また、携帯を買い換えようという動機の原点に立ち返ると、"カメラ付き"にしたいという事なので、現行機種の傾向から考えるとカメラ機能に定評のあるシャープ製の方が良いのかもしれない(902iの情報を目にするまではSH901isを買おうと思っていた)。

とりあえず、902iシリーズが発表されるまで、色々悩む猶予を与えられたのかもしれない。

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

2005年9月16日 (金)

はじめまして

トムヤンことトム楊ことtom016と申します。

大分前にNiftyに同名のWebサイトを持っていたのですが、ほとんど更新するわけでもなく、その後完全放置状態となっていました。

しばらくNiftyのサービス情報を全く見てなかったのですが、久しぶりに見てみると、HPスペースが10MB増+ブログサービスが開始されているとの事。

タダで使えるものはつかわにゃ損損という性格なんで、旧サイトを閉鎖しまして本ブログ開設と相成りました(本当は、今やっているオンラインゲームのギルドサイトを設置した事が閉鎖の一番の理由なのですが)。

ここの他に、オンラインゲームのプレイ日記ブログなんかも書いているので、こちらは完全に個人的なメモ書きの様な物が多くなると思いますが、以後よろしくお付き合い下さい。

ここで飼っているブログペットなる者が、偶に変なことを書くみたいですが、あまりお気になさらぬよう。

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

トップページ | 2005年10月 »