« 2007年11月 | メイン | 2008年01月 »



2007年12月 アーカイブ

2007年12月02日

ExtJSを使ってみました。

extjs.PNG

関連エントリ: ExtJSのフォームウィジェットとサブミットの方法
ExtJS2.0のチュートリアルがあるようです!
ExtJSとGoogleGears
ExtJSのリッチテキストフォームを使ってみました。
ExtJS2.0のデスクトップをムービーページにしてみました。


最近仕事のほうでも調査した、Ext JSのフィードビューアをデプロイしてみました。すごいすごいとは聞いていましたが、いままで使ったことなかったので、実感していませんでしたが、コレは本当にすごい。

目ぼしいユーザインターフェイスはほとんどそろっていそうですし、サーバサイドのスクリプトもちょっと手を加えれば(データストアなど)応用も利きます。

CMSやポータルサイトの構築にも使えるんじゃないでしょうか。そもそもそういうサーバ側スクリプトのパッケージがありそうな気がしますが見つからなかったです。


フィードビューアはそのまま配置しただけなので、ここにサンプルのデスクトップを使って、ムービーコンテンツをまとめてみました。

一応、下記にワタシが仕事でよく使うサイトをよせておきます。どれも有名なんですけどね。。。




[ 最近のエントリーとその関連エントリー ]


[ スポンサードリンク ]

2007年12月27日

ExtJSのリッチテキストフォームを使ってみました。

extjsform.PNG

ExtJSのexamplesディレクトリに入ってるdynamic.htmlのフォームインターフェイスがかっこいいなぁと思って使いたかったんですが、このsaveボタン押下時にpostやgetでページ遷移するにはどうすればよいのかよくわからなかったので調べてみました。

フォームの使い方はこっちのが本筋のようです。20080323

たぶんドキュメントにちゃんと書いてあるんだと思いますが、パタパタとコーディングしながらfirebugを使ってあーでもないこーでもないをやってたらできました。
Ext.Actionインスタンスを作ってsaveボタンに割り当ててあげればよいらしく、ページ遷移はdocument.formname.submit()を使っています。もちろん本来のやり方ではないかもしれません。動けばいいやと思ってやってみました。

<アクションを作る>

var action = new Ext.Action({
    text: '送信',
    handler: function(){
        document.getElementById( "hiddentextarea" ).innerHTML = Ext.get( 'extform' ).getValue();
        document.formname.action = "/hogehoge/mogemoge.php";
        document.formname.method = "post";
        document.formname.submit();
    }
});

これだけだと何をしているのか判りにくいんですが、Ext.get( 'extform' ).getValue()というのは、リッチテキストフォームからユーザが書いた文字を取得しています。
それをスタイルで隠した(style="display:none")フォームのテキストエリアであるhiddentextareaに渡して/hogehoge/mogemoge.phpにpostで渡すというものです。

ExtJSで表現されるリッチテキストフォームはこんな感じ。xtypeがhtmleditorと言うところでどんなコンポーネントなのか決まるみたいですね。

<リッチテキストフォームを作る>

var top = new Ext.FormPanel({
    labelAlign: 'top',
    frame:true,
    title: 'タイトル',
    bodyStyle:'padding:5px 5px 0',
    items: [{
        xtype:'htmleditor',
        id:'extform',
        fieldLabel:'',
        anchor:'100%'
    }],
    buttons: [ new Ext.Button( action ) ]
});

で、buttonsに割り当てられるのが先ほど作ったactionというインスタンスです。ボタンが押下されると、フォームに入力された内容がポストされると言う仕組みです。formnameとhiddentextareaが解決されていませんので、以下に記述しておきます。

<hiddenフォームを作る>

<div style="display:none">
<form name="formname" method="post">
<textarea id="hiddentextarea" name="hiddentextarea"></textarea>
</form>
</div>
スタイルで表示を抑制したフォームテキストエリアにスクリプトで入力値を与えてあげて、スクリプトでサブミットする感じです。

<サンプル>

<script type="text/javascript">
    var action = new Ext.Action({
        text: '送信',
        handler: function(){
            document.getElementById( "hiddentextarea" ).innerText = Ext.get( 'extform' ).getValue();
            document.formname.action = "/hogehoge/mogemoge.php";
            document.formname.method = "post";
            document.formname.submit();
        }
    });
    var top = new Ext.FormPanel({
        labelAlign: 'top',
        frame:true,
        title: 'タイトル',
        bodyStyle:'padding:5px 5px 0',
        items: [{
            xtype:'htmleditor',
            id:'extform',
            fieldLabel:'',
            anchor:'100%'
        }],
        buttons: [ new Ext.Button( action ) ]
    });
    top.render( document.body );
</script>
<body>
    <div style="display:none">
        <form name="extform" method="post">
            <textarea id="hiddentextarea" name="hiddentextarea"></textarea>
        </form>
    </div>
</body>
最近ExtJSにはまっているので、他のコンポーネントについてもそのうちポストしたいと思います。

[ 最近のエントリーとその関連エントリー ]


2007年12月25日

咲と五月女の今後について

countdown.PNG

カウントダウンをトップページ下部に装備してみました。何のカウントダウンかといいますと、咲と五月女の長編を作ろうかと思いまして。ちょうど1年後のクリスマスにリリースできればいいなと思います。セットも造って、プロットもちゃんと作っていこうかと思います。
ストップモーションのエントリについては、製作過程や息抜きで作ったものや、調べたものなどをポストしていきます。

そんなわけでメリークリスマス。

あと、使いやすいブログパーツなのでカウントダウンのほうも紹介しておきます。ほいでわ。
via : Flash Countdown Timer Generator


[ 最近のエントリーとその関連エントリー ]


2007年12月23日

トマトカレー作ったよ!

DSCF1068.jpg

トマトカレー作ったよ。酸味がきいていて美味しいです。ピリッとしていてさわやかなトマトの酸味。トリのコク!(は、あまり感じなかったけど)(ポストした後にルーをなめてみたら結構、鶏肉の風味がありました。)お薦めです。

鶏ガラが50円で売ってたので買いました。ブロードを作り置きしておこうと思ったのですが(ブロードとは日本料理で言うダシのようなものです)余らして腐らせてしまうのもイヤなのでカレーにしてみました。今日は適当に作ってみましたがかなり美味しかったので、ちょと紹介してみます。

<材料1>

  • 鶏がら
  • 玉ねぎ(半分)
  • にんじん(1本)
  • パセリ(1本。幹から生えてるのを1本てことです)
  • ローレル(1枚)
  • 黒胡椒(5粒~)
  • ニンニク(1かけ)
  • 水(800cc)

ニンニクをオリーブオイルでキツネ色になるまで炒めます。鶏がらを投入します。水を800cc投入して、他の材料を全部ぶっこみます。にんじんは後で使えるので、皮をむいて1本まるごと入れてください。玉ねぎは煮込むとバラバラになっちゃうので、捨てることになるかもしれません。(溶けてなくなるかも)
フタして中火~弱火で40分くらい。アクはとってあげた方がいいと思います。

<材料2>

  • トマトの水煮缶(1缶)
  • 普通のカレールー(半分)(ワタシはこくまろを使ってみました)
  • 香辛料適当に(ガラムマサラ、クミン、コリアンダー、ターメリック、チリパウダーなど)
  • あとはカレーの具。ワタシは目玉焼き、ベーコン、アスパラを使いました

出来上がったスープから、鶏がらや、ローリエ、パセリ、玉ねぎを抜きます。にんじんを残して全部取り出します。もったいなそうなものは残してもいいと思います。そこにトマトの水煮缶をまるごと投入。カレールーも投入。適当に香辛料を振りかけて調整してください。

盛り付けて出来上がり。酸味があるので、卵を載せておくと黄身がトマトの酸味とよくなじんで美味しいですよ。


[ 最近のエントリーとその関連エントリー ]


2007年12月22日

「僕の小規模な生活」 著:福満しげゆき買った!

DSCF1058.jpg

僕の小規模な生活が発売してたので買ってみました。モーニングで全部読んじゃってるんですが、福満氏の本は一通りそろえてるので買いました。カバーを外した裏表紙にモーニングの編集さんと思われる後姿の写真が載ってました。あんなかに福満氏もいるのでしょうか。(よく漫画に出てくるしぐさの)片手を挙げている方がそうなのかな。

ばーっと読み終えた感じ、コレまでの作品より小奇麗になったなぁという印象です。ワタシは福満氏をモーニングで知って、過去の作品を読んで見たというライトユーザなのですが、小規模な失敗が1番好きです。

小規模な生活は福満氏のダークな部分や難解なトコロをずいぶんそぎ落とされています。というか、皆無。あれがイイって言う人は置いてけぼりですね。ワタシは大好きなんですけど。モーニングとか大きな規模の商業紙では当たり前なのことなのかな。
他の短編のようなモノを小規模な生活で出してくるってコトはなかなか難しいかもしれないですし、そもそも、おおよそフィクションじゃないみたいなので(巻末に明記してた)、ちょっと変な福満節は他の作品で期待するしかなさそうですね。

あとは、小規模な生活からだと思うんですが、絵に矢印を引いて手書きで説明してる吹き出しがよく見られるようになりました。そういうチッコイ説明より、油断してると見逃すような説明のない絵がおもしろいです。食卓のマグロのカマみたいなのとか。
それから、小規模な失敗から続いている静かな「オチ」かたはワタシはかなり好きです。第7話8話のオチみたいのがかなりイイですよ。変な薦め方しますけど。

2月に再開すると巻末に書いてあるんですが、待ち遠しいです。早く再開しないかなー。最近モーニングで楽しみにして見てるのって「エレキング」と「誰も寝てはならぬ」とかです。「GIANT KILLING」も結構面白い。


[ 最近のエントリーとその関連エントリー ]


2007年12月21日

相鉄線がストライキを決行するかもしれないです。。。

DSCF1055.jpg

http://www.sotetsu.co.jp/
ローカルネタなんですけど、相鉄線がストライキを決行するかもしれません。

(平成19年12月21日18時現在) 相模鉄道労働組合は、「2007年秋闘要求」の会社側回答を不服として、今後の交渉によって解決できない場合は、平成19年(2007年)12月24日(月)始発から交渉妥結まで、最長96時間に及ぶ電車・バス等のストライキを計画しています。現在、お客様にご迷惑をおかけすることのないよう最大限の努力を尽くし、労働組合と交渉を進めております。 ※海老名市・綾瀬市を事業エリアとする相鉄バス㈱の全路線、および相鉄自動車㈱の高速バス羽田空港線・河口湖駅線は、通常通り営業いたします。

昨日、海老名駅を降りるとこんなビラを配っていましてちょっとびっくりしました。交通機関のストライキは単純にこまるなぁ。当たり前の感想なんですけど。決行されたら来週いっぱい会社休みとかにならないかな。なるわけないんですけど。


[ 最近のエントリーとその関連エントリー ]


myminicityで街作ったよ。

myminicity.PNG

http://mojalog.myminicity.com/
アクセスするとシムシティみたいに町がどんどん大きくなっていきます。最終的にどうなるんだろ。楽しみだ。ちなみに、日本のランキング1位はhttp://oblivion.myminicity.com/から見れます。メトロポリスだ!それでも郊外は結構閑散としてるのね。シムシティやりたくなってきたなぁ。

404 Blog Not Foundさんのとこで、この人口や、歳入などのステータスが見れるapiを作られていました。本家myminicityもブログパーツかなにかを公開してくれればいいのにね。


[ 最近のエントリーとその関連エントリー ]


2007年12月20日

Firefoxビデオアワード授賞式に行ってきましたよ!

<Firefoxビデオアワードの授賞式に行ってきました!>

firefoxバッヂ

グランプリを受賞したのは、クレイアニメ"The Night"でエントリしたパンタグラフさんでした。おめでとうございます!残念ながら私の作品は受賞できなかったのですが、今回のアワード。それは本当にすばらしい体験が出来ました。


イベントが開始されると、数人のクリエイターさんたちのアピールタイムが始まりました。作品の説明や、テーマなどが発表され、ビデオがプロジェクターで壁に大きく映し出されるわけですが、正直ビビったです。次々と映し出されるクオリティの高い作品群。これと一緒にワタシの作品が並べられるのが非常にコワイ。どうりでお酒が進むわけです。嫁さんはオナカが減ってるらしく、となりでとてもよく食べています。おいしいねーなんて。お気楽です。

そんなこんなで、アピールタイムが終了するのですが、後はただずーっとビデオが流されているだけで、なんだか会場はまったりとした雰囲気。お隣さんに話しかけて「あなたはどの作品でエントリされたんですか?」なんて聞ける空気じゃないですし、聞いて答えられた作品を見てなかったりしたら(103作品もの出品数でした)、「あー。アレですね!スゴイ良かったです!」と言いながらも「どこが良かったですか?」という突っ込みを許さない空気を作り上げなきゃ聞けないしなんて失礼なことを妄想していました。それでも、他のクリエイターさんたちには本当に興味があるわけで、話を聞いてみたいと言うジレンマです。お酒だけが進むわけです。嫁さんはとなりでとてもよく食べているわけです。もう1皿取り入っちゃおーかなー。なんて迷ってます。

主催者側はそんなワタシの妄想をすばやく察知したのか(しません)インタビュー形式で出品者たちに突撃を始めました。インタビューされたら嫌だなぁと言う気持ちと、オレに突撃しろという気持ちが交互にやってきます。つまり酔ってきているんでしょうか。あははは。

で、突撃されたわけです。嫁さんが。

スッとこちらにマイクを向けられた瞬間うわぁあオレんとこくんなあっちいけなどと思っていたらスルっと華麗にワタシの目の前を通り過ぎてあぁなんだよオレんとこ突撃まだー?という残念な気持ちが膨らんできてマイクの方向を追うと、嫁さんがマイク食ってる。

なぜかハキハキと場慣れした雰囲気で質問に答えてます。ステキすぐるwww。そしてワタシにそのままマイクが振られるのですが、この絶好のアピールタイムをアウアウとよくわからないことをしゃべった記憶だけが残っています。同じことを何度も言ったような気がします。

それでも、ワタシのビデオがプロジェクターに流されて大きな音で映し出されたときは感動しました。大きな拍手までもらって本当に嬉しかったです。初めてストップモーションアニメを撮り始めて半年ですが、こうやって実際に、現実に拍手をいただけるとは思いもよらなかったので、本当に思い出になりました。

インタビューして頂いたことからか、ロフトワークのスタッフの方にもご挨拶いただき、なんだか本当にクリエイターのような気分になりました。ワタシはロフトワークを今回のビデオアワードで知ったというくらいのクリエイター業界初心者なのですが、「ビデオのアップロード時に便利です」とアワードの応募方法に記載されていてアカウントだけ取得して、利用していませんでした。なんだかゴミアカだけ作っちゃったみたいで申し訳ない気持ちでした。これから利用させて頂こうかと思います。

Artmic8neoさんと会った!>

会場に入ったときに、今日はネオさん来るのかなぁなんて嫁さんと話していたのですが、以前、せっかく携帯番号を教えてもらったのに地下のクラブなので電波は入りませんし、実際に会ったことはありませんのでこちらから見つけることは出来ません。ですが、インタビューを受けたときにワタシを見つけていただいて、やっとお会いすることが出来ました!これも嬉しかったことのひとつです。

ネオさんはスッと背が高くて、終始ニコニコしていました。奥さんもご一緒されていて、お二人とも非常に感じの良い方なのです。一方ワタシのほうは少し緊張していて、また、アパアパとよくわからないことをしゃべった記憶があります。ウチの嫁さんが色々とフォローしてくれて助かりました。

兼ねてより聞きたかった作品のことを丁寧に教えていただいて、これからの活動のことや、個展の話なども聞かせていただいて充実した時間を過ごすことが出来ました。ワタシも、嫁さんも、ネオさんも、ネオさんの奥さんもみんな笑顔だったなぁと思います。
咲と五月女(さくとさおとめ)についても、このブログを見つけていただいたときのことから話して頂きました。はじめは「なんだか不思議」に思って興味を持っていただいたそうです。これは嬉しいことでした。友人や知り合いは何でそんなことやっているのかと不思議がるんです。あははは(怒)


そんなこんなで、パーフェクト・デイとも呼べる様な1日を過ごしたわけですが、ネオさんが興味を持って話しかけて(コメント)頂いたことから、こうしてアートなセカイに出品まで出来たことを本当に心より感謝しています。ありがとうございました!
このアワードの作品で第5話になる咲と五月女ですが、これからも淡々と続けていきたいと思います。今回の作品もyoutubeとニコニコにポストしました。よかったら見てみてください。ほいでわ。

youtube


ニコニコ


[ 最近のエントリーとその関連エントリー ]


2007年12月17日

明日Firefoxのビデオアワード授賞式に行ってきます。

明日はFirefoxビデオアワードの授賞式なので、ちょっと行ってきます。
ビデオを見ていただきまして本当にありがとうございます。たくさん投票していただいて、コメントもたくさんいただきました。見るたびに嬉しくて小躍りしていました。次回の咲と五月女にこのモチベーションをつないでいきたいと思います。本当にありがとうございます!

授賞式の会場は六本木のスーパー・デラックスというところらしいです。なんだかバブリーな屋号ですね。ギロッポンのデラスーとか言っているのでしょうか。恥ずかしい。(股間を隠しながら)いえ。恥ずかしいのはワタシの貧相な発想なのですが、その六本木のスーパーデラックスでパーリーピーポーなわけです。たぶん受賞できない悔しさで飲んだくれて失意のうちに夜の闇に消えるんだと思います。探さないでください。(嫁に引きずられながら帰るんだと思います☆)


[ 最近のエントリーとその関連エントリー ]


2007年12月15日

太刀魚(タチウオ)のクリームリゾットを作ったよ!

DSCF1053.jpg

太刀魚(タチウオ)のクリームリゾットを作ったよ!すげぇうまかったっす。タチウオをスパゲティのソースの具にするか迷ったのですけどリゾットにしてよかったです。
実はワタシ、このタチウオってのを食べたことなくて、どうやって料理しようかなぁとフライパンで焼いてみましたら白身魚の淡白さと、やわらかさが美味しかったので今回のソースの具にしみました。
ポン酢に軽く漬け込んでいるのですがこのサッパリ感とクリーム、アーモンドがとてもマッチしてました。これは今まで作った料理の中でもオススメですよ!

<材料>

  • タチウオ切り身
  • ごはん
  • 牛乳200ccくらい
  • 生クリーム50cc~くらい
  • スライスチーズ1枚
  • 玉ねぎ半分
  • ニンニクひとかけ
  • パセリ少々
  • アーモンド3粒くらい
  • 昆布茶(だしなど)顆粒少々
DSCF1049.jpg

あまり分量は当てにしないほうがいいと思いますが、こんな感じです。今日はひとり分でつくってみました。嫁は美容室に出かけてしまいましたので。
腹が減ったのでこのカップラーメンにしようか、料理しようか迷った結果料理してよかったです。ちなみに、ミルクシーフードヌードルって牛乳沸かして入れんのかな?

<作り方>

  • タチウオ切り身を適当なサイズに切ってフライパンでよく焼きます。タチウオって骨が鋭く尖っているので食べるときに気をつけてくださいね。焼きあがったら取り出してポン酢に浸しておきます
  • そのままつぶしたニンニクと玉ねぎのスライスを炒めます。白ワインで香りをつけてみてもいいかもしれません。(つかうの忘れた)
  • 色がついてニンニクの香りが立ち込めてきたら火を弱くして牛乳を投入します。続けて生クリーム、チーズ、昆布茶を投入します
  • 最後にご飯を入れてよく混ぜます。ここで塩胡椒で味を調えてください。
  • ポン酢につけていた太刀魚を盛り付けます
  • みじん切りにしたアーモンドとパセリを振りかけて出来上がりです。刻んで水気で固まったパセリは手で振り掛けると散らばらないので包丁ですくって振り掛けると綺麗に盛り付けることができますよ

[ 最近のエントリーとその関連エントリー ]


ExtJS2.0のデスクトップをムービーページにしてみました。

desktop.PNG

mojalogデスクトップはコチラ
静的なhtmlに手を加えただけですが、見栄えがいいですね。今のところはちょっと寂しい感じですがムービーとか、画像なんかもここに放り込んでおけば見やすいかもしれないです。メディアコンテンツをおいておけば、あまり迷うことなく直感でダウンロードできるって言うのはいいですね。
サーバサイドのスクリプトを組むにはもうちょっと勉強してからになりそうです。いまのところは、直接htmlをいじっていこうかと思います。


[ 最近のエントリーとその関連エントリー ]


2007年12月13日

Q&Aメッセージジェネレータ作ったよ!

ブログ更新できない言い訳ジェネレータのスクリプトを少し見直して、Q&Aメッセージジェネレータ作りました。
設問に対して答えが返ってくるという対話型のメッセージを組み立てたい時に使ったらいいんじゃないかと思いますが、まぁお遊びスクリプトです。
設置方法は、generator.jsとanswer.xml、question.xmlをサーバに置いて呼び出すhtmlにタグを打ってあげるだけです。

<question.xmlとanswer.xmlについて>

question.xmlとanswer.xmlに質問と解答を書いてあげます。全体の質問数と、回答数が同じでなければスクリプトエラーが起こると思います。

たとえば、「お金かして欲しいんだけどメールジェネレータ」を作ったとするとquestion.xmlはこのようになります。

<forms>
	<form>
		<title>誰に宛てますか?</title>
		<description>彼女に</description>
		<description>妻に</description>
		<description>親に</description>
		<description>友達に</description>
	</form>
・・・・

質問が1つ出来ました。今回は選択数が4つあります。この選択数にあわせてanswer.xmlに回答を書いていきます。

<fields>
	<field>
		<description>あのさ。ちょっと聞きたいんだけど、彼がサラ金に手を出したら嫌だよね!</description>
		<description>今月、家計苦しいのはよくわかってるんだけどね。</description>
		<description>今年の正月は帰るよ。で、ちょっとお願いがあるんです</description>
		<description>こんなことお前にしか頼めないんだけどさ</description>
	</field>
・・・・

これで回答が4つそろいました。このように、質問と回答を紐付けていってメッセージを作ることが出来ます。注意することは質問の数(formタグの数)と回答の数(fieldタグの数)が同じであることと、選択数(descriptionタグ数)がquestion.xmlとanswer.xmlであっているということです。

<generator.jsについて>

あとスクリプトの46行目と47行目に2つのxmlのパスを書いてあげてください。

    // set file on your server space, modify path
    var answerXmlPath   = 'http://ご自身のパス/answer.xml';
    var questionXmlPath = 'http://ご自身のパス/question.xml';

<htmlタグについて>

htmlには、表示させたい場所に以下のタグを打ってください

<div id="curform"><input type="button" value="start" onclick="QAGenerator.init()" /></div>
<div id="setField"></div>

レッツQ&Aジェネレータ!ダウンロードはこちらです。


<javascript method overload>

で、スクリプトのほうは勉強がてら作ってみたんですが、今回はjavascriptでメソッドの(見た目)オーバーロードをやってみましたのでちょっとメモしておきます。

ajaxでxmlを取得すると、これをパースするgetElementなんちゃらというメソッドを遣うことになると思うのですが、このメソッドを

function $( param ){
    return document.getElementById( param );
}

こんな感じでラップすることがよくあります。タグインスタンス?が返ってきて、使う側は

    $( "myid" ).innerHTML = "

hoge

";

このように実装します。で、このgetElementなんちゃらというメソッドをラップしたものをオーバーロードして使ったのが147行目あたりで使ってみました。

    var formList = Elem.getByNm( xmlData, "form" );
    var titleVal = Elem.getByNm( formList[ param ], "title", 0 ).childNodes[ 0 ].nodeValue;
    var itemList = Elem.getByNm( formList[ param ], "description" );

ElemというインスタンスのgetByNmをオーバーロードしています。こういう感じのことがしたかったというイメージが以下のスクリプト。

    // ※この実装例は飽くまでイメージです。
    function getByNm( name ){
        return document.getElementByName( name );
    }
    function getByNm( obj, name ){
        return obj.getElementByName( name );
    }
    function getByNm( obj, name, pos ){
        return obj.getElementByName( name )[ pos ];
    }
これではもちろんうまく動きませんので、これを実現するコードが1行目から記述してあります。
var Elem = function(){
    return {
        // add method.
        add : function( object, name, fn )
        {
            var old = object[ name ];
            object[ name ] = function(){
                if ( fn.length == arguments.length )
                    return fn.apply( this, arguments );
                else if ( typeof old == 'function' )
                    return old.apply( this, arguments );
            };
        },
        
        // overload methods.
        init : function(){
            this.add( this, "getById", function( name ){
                return document.getElementById( name );
            });
            this.add( this, "getById", function( object, name ){
                return object.getElementsById( name );
            });
            this.add( this, "getById", function( object, name, pos ){
                return object.getElementsById( name )[ pos ];
            });
            this.add( this, "getByNm", function( name ){
                return document.getElementByTagName( name );
            });
            this.add( this, "getByNm", function( object, name ){
                return object.getElementsByTagName( name );
            });
            this.add( this, "getByNm", function( object, name, pos ){
                return object.getElementsByTagName( name )[ pos ];
            });
        }
    };
}();
このjavascriptのメソッドのoverloadはJavaScript Method Overloadingにあったものです。もうちょっとうまく使えば、すっきりするのかもしれませんね。

[ 最近のエントリーとその関連エントリー ]


2007年12月12日

デュボネ買ってきた!

DSCF1051.jpg

酒屋にビールを買いに行ったら懐かしいお酒がおいてありました。デュボネって言うのですが、食前酒として飲まれているお酒です。酒屋さんによっては1000円ちょっとで変えるお手ごろ価格です。
ワタシ、昔バーテンをやっていたのですが、お店をはけた後によくロックで飲ませてもらっていました。結構美味しいんですよ。14.8度のアルコール度数で、仄かな甘みがある赤ワインのような感じの味です。
バーにだったら大抵置いてあると思うので頼んでみてはいかがでしょうか。レモンとよくマリアージュ(笑)します。

マリアージュ(笑)で思い出したのですが、「神の雫」はギャグ漫画だよね。演出に突っ込むのは野暮ったいですが、ワイン飲んでて、真剣に城やモナリザが見えちゃったらいいなぁなんて思います。俺も見せろー。
デュボネを飲んで、「こ、これは城だよ!城が見える!」なんて遊んでいるとスッと水を出されると思います(嫁に)(水とよくマリアージュ(笑)しますなんて)(ちっとも面白くない)


[ 最近のエントリーとその関連エントリー ]


2007年12月11日

ブログ更新できない言い訳ジェネレータ作ったよ!

ホームページを作る人のネタ帳さんのブロガーなら必ず一度はするであろう『更新のいいわけ』について今更考えるが面白かったので『ブログ更新できない言い訳ジェネレータ』を作りました!暇なんですねとか言わないでください。あはは。というか200エントリー目の内容がコレかよ。


これで更新できない言い訳もネタにできるよ!
ちなみにジェネレートされた文章が支離滅裂だったりすることを見なかったことにしていただけるとワタシの心の平安がジェネレートされます(ちっとも面白くない)
ちなみにこのジェネレータ、カスタマイズが簡単なので、スクリプトなども公開してみます。好きなようにいじってみてはいかがでしょうか。そのうち簡単な説明を加えたエントリをポストします。
※配置などはご自身の環境に合わせてください。
ダウンロード
<スクリプトはこちら>

function crtXMLHttpReq(){
    var xmlHttpInst = null;
    try{
        xmlHttpInst = new XMLHttpRequest();
    }
    catch( e ){
        try{
            xmlHttpInst = new ActiveXObject( "Msxml2.XMLHTTP" );
        }
        catch( e ){
            try{
                xmlHttpInst = new ActiveXObject( "Microsoft.XMLHTTP" );
            }
            catch( e ){
                return null;
            }
        }
    }
    return xmlHttpInst;
}

function setField( param )
{
    var selectList = document.selectForm.selectbtn;
    var value;
    for( idx = 0; idx < selectList.length; idx++ ){
        if( selectList[ idx ].checked ){
            value = selectList[ idx ].value;
            break;
        }
    }

    var renderItem = "";
    var xHttpInst  = crtXMLHttpReq();
    if ( xHttpInst ){
        // your place
        var sendUrl = 'http://***/answer.xml';
        xHttpInst.onreadystatechange = function(){
            if ( xHttpInst.readyState == 4 ){
                var xmlData = xHttpInst.responseXML;
                var formList = xmlData.getElementsByTagName( "field" );
                var itemList = formList[ param ].getElementsByTagName( "description" );
                renderItem = itemList[ value ].childNodes[ 0 ].nodeValue;
            }
        }
        xHttpInst.open( "GET", sendUrl, false );
        xHttpInst.send( null );
        $( "setField" ).innerHTML = $( "setField" ).innerHTML + '<br /><br />' + renderItem;
    }
}

function getForm( param )
{
    // if start
    if( param == 0  ){
        $( "setField" ).innerHTML = '';
    }
    // if end
    else if( param >= 4 ){
        $( "curform" ).innerHTML = '<table><tr><td>' + 'できた(゚∀゚)!' + 
        '</td></tr><tr><td align="left"><input type="button" value="もう1回言い訳してみる(゚3゚)" onclick="getForm( 0 )" /></td></tr></table></form>';
        return;
    }

    var renderItem = "";
    var xHttpInst  = crtXMLHttpReq();
    if ( xHttpInst ){
        // your place
        var sendUrl = 'http://***/question.xml';
        xHttpInst.onreadystatechange = function(){
            if ( xHttpInst.readyState == 4 ){
                var xmlData = xHttpInst.responseXML;
                var formList = xmlData.getElementsByTagName( "form" );
                var titleVal = formList[ param ].getElementsByTagName( "title" )[ 0 ].childNodes[ 0 ].nodeValue;
                var itemList = formList[ param ].getElementsByTagName( "description" );
                var itemLen = itemList.length;
                for( idx = 0; idx < itemLen; idx++ ){
                    renderItem = renderItem + 
                    '<tr><td><input type="radio" name="selectbtn" value="' + idx + '" ' + 
                    ( ( idx == 0 ) ? 'checked="checked"' : '' ) + 
                    '/>' + itemList[ idx ].childNodes[ 0 ].nodeValue + '</td></tr>'
                }
                renderItem = '<b>Q' + ( param + 1 ) + '.' + titleVal + '</b><br /><table>'+ renderItem + '</table>';
            }
        }
        xHttpInst.open( "GET", sendUrl, false );
        xHttpInst.send( null );
        $( "curform" ).innerHTML = '<form name="selectForm"><table><tr><td>' + renderItem + 
                                    '</td></tr><tr><td align="left"><input type="button" value=">次へ(ノ∀`)" ' + 
                                    'onclick="setField(' + param + ');getForm(' + ( param + 1 ) + ')"></td></tr></table></form>';
    }
}

function $( param )
{
    return document.getElementById( param );
}


[ 最近のエントリーとその関連エントリー ]


2007年