hiromasa.zone : o)

2007/3/29 Thursday 投稿時の月齢:10.1  月名:十日余の月  潮汐:若潮 Moon:10.1[十日余の月]今日の心技体 : 好調期低調期好調前不安定期

そろそろ HTML は本来の姿に戻るころだ このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴時々曇 ひろまさ @ 6:00

HTML はハイパー・テキスト・マークアップ・ランゲージ の略です。 ハイパーテキストというのは、

ハイパーテキスト – Wikipedia

ハイパーテキスト (hypertext) とは、複数の文書(テキスト)を相互に関連付け、結び付ける仕組みである。「テキストを超える」という意味から hyper- (~を超えた) text (文書) と名付けられた。テキスト間を結びつける参照のことをハイパーリンクと言う。ハイパーテキストは文書を表示するユーザインタフェースのパラダイムの1つであり、従来の文書の持つ、要素を組織化することについての限界(特にその線形性)を克服しようとするものである。

ということで、上は便宜上引用してしまいましたが、ハイパーテキスト(←これ)ですね。 🙂

ある単語の詳しい説明を”リンク”により、さらにたどることができる技術です。 これを、インターネットなどのネットワーク上で実装したのが、HTMLと http の組み合わせのいわゆる Web です。 http は、ハイパーテキストトランスファープロトコル。

この”リンク”を押すと詳しい内容が表示されるという非常に簡単なユーザインターフェースは一般にもうけいれられ、現在のインターネットのメインストリームである Web はおおうけ。 広く普及することになりました。

で、いつのまにかこのリンクインターフェースというやつは、本来の意味合いから外れいつのまにか、押すと”次の画面が表示される”という意識でみんな使うようになってしまいます。 そして”次の画面が表示される”は転じ、HTML は画面(ユーザインターフェース)の構築に使われるようになってしまいました。

HTML に form なんてタグがあるのも要因のひとつですが、そろそろ HTML は文書のマークアップという本来の姿に戻ってもいいころなのではないかと思います。

文書構造とデザインの分離というのは、HTML / CSS で棲み分けられました。 しかし、文書構造とユーザインターフェースの分離がまだできていないのです。

ブログなどは文書を記述することが主体なので、HTML にある程度ユーザーインターフェースをもたせても、まだ違和感はありません。 ただ、なにか”機能”があるサイトをみるとものすごくおかしな感じがします。 RSSリーダ、航空券発券やオンラインショッピング、、、カートに入れるというリンク先がはたして HTML の”文書”なんだろうか、ということです。

こういったサイトでは、いくら XHTML が valid でも目的からすると invalid です。 だから、機能をもつサイトを構築する人間からすると、「標準?どうでもいいよ。 画面でればいいんだから」 ということになります。 なんたって、もともと目的外使用ですからやる気もしないわけです。 (もちろんブラウザの後方互換など、技術的な側面で valid にするのは有益なことだとは思います)

CSS のデザイン部分をみても、これは文書を飾る規格です。 画面を描くものではありません。 ろくに斜めの線もかけないプレゼンテーションレイアにデザイナーの方も辟易しているのではないでしょうか。

前のエントリでも書きましたが、この Web プレゼンテーションレイアのパラダイムシフトがそろそろ起きてもいいころです。 Adobe Flash をベースとした Flexや、Microsoft の WPF/E、ちょっと弱いけど Mozilla の XUL。

これらは、HTML の中に埋め込まれて使われるものではなく、ユーザインターフェースのあるサイトの HTML を置き換える技術です。 もし”文書”があるのであれば、この上に包括された形で HTML が表示されることになるでしょう。

WPF/E は Community Preview 中で、そのうちリリース版がでてくるのではないかと思います。 これは、Windows / MAC OS X の IE / Firefox で今のところ動作しています。 Linux も予定に入っているとか。

WPF/E

どのプレぜーテンション技術がデファクトになるにせよ、ちょっとドキドキしませんか。 いやぼくは、

HTMLで、UI つくるのに疲れた

んですよ。。 もうやめようさ。 😛

2007/3/25 Sunday 投稿時の月齢:6.0  月名:七日月  潮汐:小潮 Moon:6.0[七日月]今日の心技体 : 低調期低調期低調期

Web におけるユーザーインターフェース このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 雨のち晴(14/5) ひろまさ @ 2:46

なにかネタブログ化していたので、たまにはまじめに。。 :-) え、ネタのほうがいいって?(笑)

というわけで Web ユーザインターフェースの話。

いわゆる業務用コンピュータシステムにはいくつかの形態があって、まぁはやり廃りもありましたが、おおまかに、ホスト、クライアントサーバ、Web、という進化をしてきました。

ホストコンピュータというのは、昔(いまでもあるところにはあるかも)チケットの発券をしてもらうときなんかにオペレータの方がいじっていた、グリーンの文字が出力される、いわゆる”端末”を用いるシステムです。 なんとなく覚えがある方もいるかもしれません。

端末は表示とキー入力しかできず、全てはホストコンピュータと呼ばれる大型コンピュータの上で処理されます。 キーが押されたら端末はそのことだけをホストに押されたことを通知し、ホストコンピュータは1文字追加した画面をかえすようなイメージです。 端末には CPU がありませんので一切処理的なことはできません。 というわけで、ホストコンピュータは非常に高額で性能の良いものを使う必要がありました。

そして、時代はクライアントサーバ型へ。 安くなった PC に目を向け、ホストで言うところの端末をインテリジェンスにした形態です。 PC 側(クライアント)にもソフトウェアを配置し、PC 上でできることは処理をまかせようという考え方。

たとえば、データのソートであるとかフィルタ処理であるとかは、元ネタだけをサーバからクライアントに渡し、PC 上で処理してしまいます。 サーバの負荷は下げることができ一見良さそうな方式ですが、ソフトウェアの配布の問題がありました。

クライアントに配置するソフトウェアはネットワークを介して配布されるわけですが、バージョン管理をしなければなりません。 何か機能が追加になった場合は、最新版をファイルで送信します。 要は .lzh を PC におくりつけてファイルを展開して上書きするわけですが、PCを使われている方なら分かるとおり、こんなことを何回もやっていたらなにかのタイミングでファイルの不整合がいつかおきます。

妙なバージョンのクライアントからのアクセスは、システムをおかしくする、、。 いろいろ技術は向上するも、そのうちこの方式は破綻することになりました。。。

えらい人は考えました。

サーバの機能も向上してきたし、たいした操作も案外しないもんだし、実はクライアントでやるのってユーザインターフェス(画面)だけでいいんじゃね? ソフトを配布するのなんかこえーよ。 つくるの大変だし。

ここでホストよりも派手な画面をだせるブラウザに目をつけたえらいひと。 めでたく、現在の Web を使ったシステムができあがりました。

HTML のフォーム機能と JavaScript により、単純ではありますが PC の CPU もつかいつつ、機能はサーバ側に実装するという、ホストとクライアントサーバのハイブリット的手法。

ただ、このいいとこどりの形態にもひとつ問題がでてきています。

HTML はもともと文書の定義をするためのもので、ユーザーインターフェースを定義するものではありません。 逆にことのとにより、文章的な説明文の入ったユーザーインターフェースが構築しやすいという部分もあるのですが、HTML の貧弱なフォーム機能は業務システムにはかなり厳しいものがあります。 WP の管理画面でさえ、結構大変な思いをしているわけです。

じゃー、UI を充実させようということで、一般的な AJAX がつかう DHTML なんかがあるのですが、所詮 HTML をつかった強引なもの。 限界はありますし、もともとそれ用途ではなかったため裏技的手法を使う必要があり、技術者も困惑することになりました。

ようやく、Web ユーザインターフェースの話。 最近、これを解決しようとする動きがいくつかあります。

長くなったのでみたほーがはやい!

XUL amazon@Firefox オンリー

Flexby Adobe

XUL はそれだけじゃないですが、こういった使い方も面白いかと思います。 次世代 Web 3.0 はこういうふうになるかもしれませんね。 🙂

2007/3/21 Wednesday 投稿時の月齢:2.7  月名:三日月  潮汐:中潮 Moon:2.7[三日月]今日の心技体 : 低調期低調前不安定期低調期

もしも hiromasa.zone がしょこたんブログだったら。 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴時々曇 ひろまさ @ 18:48

もしも hiromasa.zone がしょこたんブログだったら。

p1000084.JPG

━━━(゜∀゜)(゜∀゜)(゜∀゜)(゜∀゜)━━━

Mie からもらったタンブラー、ギザワードプレス(^ω^)

Eclipse イトカワユス、

JavaScript クオリティ━━━━(゜∀゜)━━━━━

 

〓ひろまさ〓

…今は後悔している…。

2007/3/19 Monday 投稿時の月齢:0.8  月名:新月  潮汐:大潮 Moon:0.8[新月]今日の心技体 : 低調期好調期低調前不安定期

セッション管理とクッキー このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々晴 ひろまさ @ 21:49

Masayan さんからメールをいただきました。 PHP の session_start とはなんぞや、と。

出先からメールを読んでいたのですが、ねてないぼくのあたまに、妙なお話が浮かびました。 せっしょん、せっしょん?、くっきーくっきーおいしい。 ほわわわん。。

あるところに、小さな小さなおもちゃやさんがありました。そこの店主のおばーちゃんは、お客の子供の顔を覚えられなく、また覚える気もありません。最近はよく似た子が多いのです。

でも子供達はおもちゃの入荷がまてなくって、予約をいれてきます。名前を書いてもらいますが、来店されても顔が分からない。

おばーちゃんは考えました。 ぴこん。

おばーちゃんはきてくれた子供一人一人に、手作りのクッキーをあげました。 クッキーの裏にはそれぞれ番号を入れました。

おばーちゃんはいいました。「このクッキーが壊れないうちにまたきてくれたら予約したおもちゃをあげるよ」

子供達はもらってクッキーをもって、おばーちゃんのところに予約したおもちゃをもらいに行きました。おばーちゃんはクッキーの裏に書かれた番号と自分の帳簿をつきあわせて、うまくおもちゃを子供達にあげることができました。

しかし幸せに続いたこの日々もそう長くは続きませんでした。ある子供が、他の子のクッキーをうばっておばーちゃんのところにおもちゃをとりに行ってしまったのです。

おばーちゃんは他の子のおもちゃを、悪い子にあげてしまいました。

とほほ。

Cast

おばーちゃん / Webサーバとアプリケーション

子供達 / サイトにアクセスしてくれる人

クッキー / cookie

クッキーの裏の番号 / セッションID

クッキーが壊れないうちに / セッションの保持期間

他の子のクッキーをうばって / セッションハイジャック

悪い子 / ひろまさ(友情出演)

– 完 –

PHP の session_start(); はこういったセッション管理を簡単にできるように提供された関数なわけですねっ!!、てまったくわからんですね。。。 orz

いや、本気でおもいついたんですよ。。。(←あほここにきわまる

2007/3/12 Monday 投稿時の月齢:22.4  月名:弓張月(下弦)  潮汐:小潮 Moon:22.4[弓張月(下弦)]今日の心技体 : 低調前不安定期好調期好調期

あなたにDoS – eurobeat tune – このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々雪(-1/-4) ひろまさ @ 2:03

以前出していました、あなたにDoS – eurobeat tune – の楽譜と歌詞。 歌詞は本邦初公開!。

aka さんとひろまさと遊んでいて、突如としてできあがったこの曲、歌詞とあわせて聞いてみてください。 🙂

あなたにDoS
作詞: aka & hiromasa
作曲: hiromasa


あなたに DoS
振り切る事なんてでき無いわ

わたしだけが あなたの全て
もう逃げら れないわ絶対

※Aメロ
未だ見ぬあなたへとどけ この First Ping
異国からの spam だって わたしの思いには かなわない

教えてあなたの Status Online
Firewall Packet Filtter わたしにはね disable

※Bメロ
他の誰とも 交信できないよう 回線埋めてあげる わたしの思いで
切ない心は 途切れないように

だから押すの Function Five
ファンはいつも フル回転

※サビ
あなたに DoS
振り切る事なんてでき無いわ

わたしだけが 貴方の全て
もう逃げら れないわ絶対

こころに DoS
裏切る事なんてでき無いわ

初めてみせたこの素顔
貴方しか知らないの


Creative Commons License

Bメロが最高ですね。 もし歌ってくれる方とかアレンジとかしてくださる方いらっしゃいましたら、トラックバックいただけると嬉しいです。 パラパラも大募集(笑) 楽譜載せておきます。 😉

あなたにDoS - 楽譜
# キーは C になっています。

そうそう、このエントリかいている途中でたまたまみつけた音楽。 この手の曲が好きな人は気に入るかも。 :mrgreen:

Last Blade 2- Grant 2@youtube

わはは。 これくらいつくれるようになりたいなぁ。(←気に入った

2007/3/11 Sunday 投稿時の月齢:22.2  月名:弓張月(下弦)  潮汐:小潮 Moon:22.2[弓張月(下弦)]今日の心技体 : 好調期好調期好調期

ハッピーバースデー! このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴のち雪 ひろまさ @ 21:56

WP 使っている人はなぜか、11 日生まれがおおい? ということで、今日は自分の誕生日でした。

10台も今日で終わり。 0x20 歳? &h20 歳? ついに 16 進数で成人してしまいました。。

昨日 10 日は事務所で 23 時すぎまでお仕事。 「おなかをすかせておいてください」と同僚の方が、謎のメッセージをくれ、なにかあるのかな、、と思っていたら、仕事帰りにカウントダウンお誕生会をひらいてくれました(笑)

スパークリング

何か行くお店お店で、スパークリングワインあけてくれてとても楽しかったです。 ありがとうございました。

今日の夜ご飯はちらし寿司。

ちらし

ケーキ。

けーき

おなかいっぱい、満足じゃ。

2007/3/9 Friday 投稿時の月齢:19.3  月名:更待月  潮汐:中潮 Moon:19.3[更待月]今日の心技体 : 好調期好調期好調期

すいません、すいません このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴時々雪(2/-5) ひろまさ @ 0:50

ただいま若干(!?)仕事に追われております。

せっかく PHP のコードにトラックバックいただいた、よしともさんnaokiさんごめんなさい。。

if と 変数だけしばりの3個ソートのソースコードで、とても楽しくすぐにでも取り上げさせていただきたいのですが、時間が・・・。 せっかくなのでじっくり書きたいと思っています。 ややお待ちいただければと思います。

今日は健康診断の結果がきていました。

ガンマGTP値一桁だった!

ぼく唯一の健康自慢。 たぶん。。 :-) そして不健康な生活はあと1ヶ月確定で続きます… がんばろう。。

2007/3/5 Monday 投稿時の月齢:15.4  月名:満月  潮汐:大潮 Moon:15.4[満月]今日の心技体 : 好調期好調前不安定期低調期

PHP で遊ぼう(6) – if と 変数と このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 雨時々雪(8/1) ひろまさ @ 3:31

毎回蛇足の多い、~遊ぼうシリーズ。 おじさんになると、こうなんというか昔話を若い者にしたくなるもんですが、コンピュータの世界ではぼくも中年?。 まぁまぁ、古き良き昔話にもお付き合いください。 コンピュータ同世代の方は、なつかし~と思って読んでいただけたら幸いです。 🙂

プログラム言語というのは物事の処理の手順をきわめて紛れなく記述できる、人間のための言語です。 一般的にはコンピュータに指示させるための言語として位置づけられていますが、究極的には人間のためにもなるもんです。なんて、まぁいまのプログラム言語は純粋な手順以外にも余計なことを書かなければいけないので、これは極論です。ぼくはそうなることを期待しているのですが…。

では前置きはともかく。

たとえば、日常生活で数字を順番に並べ替えるなんてことはトランプとか麻雀しているとよくやることですが、みなさん実際にやるとするとどーやっていますか?

8, 4, 2, 6, 3, 1, 5, 7

このように並んだカードを小さい順番に並べ替える方法。 意外と無意識でやっちゃいますが、ぼくは一番小さい数字を探して左にもっていき、いま一番左のカードといれかえる、その後の左においたものは最小数字の検索対象から外す、という方法を基本的にはとるようです。

コンピュータの世界では並べ替えをソートといい、上のような方法を逐次選択方といいます。 たしか。。

じゃーこの手順を箇条書きで日本語で書いてみましょう。

  1. 対象のカードから一番小さいものを探す。 初回の対象は全カード
  2. 見つけたらそのカードを一番左にもってきて、現在の対象の一番左のカードと入れ替える。
  3. 1. に戻る

プログラミングというのは、こういった手順をプログラム言語に直すことです。別にコンピュータにやらせるからといって特殊なことはありません。 ほとんどの場合、一般的な常識(人間の思考の流れ)をそのまま記述するだけです。

しかしながら、コンピュータは日本語では分からないのです。 なぜならば言葉の定義に紛れがあるから。「対象のカード」「小さいもの」全てをうそなく教えてあげる必要があります。

そのために使われるのが、変数とか制御構文とかそういった言語に備わった機能になります。

で、事前にひとつ謝ることが。 WordPress のプラグインを次の回で取り上げようと思っていたのですが、もう一回先に回させてください。 お気づきの通り、このペースで書いているとものすごい一回が長くなりそうなので、、ご勘弁を。。

さてさて、上でやったようなカードの並べ替え、今回はこれを変数と if でやってみたいと思います。 まずは話を簡単にするために、カードは2枚であるとしましょう。

8, 4

こういったカードが机に並べてあることを想像してください。 そして、これが数字の小さい順番に左から並べば完成です。

プログラム言語の世界では、情報を変数という入れ物にいれて管理します。変数には分かりやすいような”名前”をつけることができ、これを変数名といいます。

PHP ではこの変数名は頭に”$” をつける決まりとなっていて、たとえば2枚のカードの左側においてあるものを left 、右側を rigth とすると、上のカードの並びは以下のように表すことができます。

  1.  <?php
  2.      $left = 8;
  3.      $right = 4;
  4.  ?>

左には8が、右には 4 が置いてあります。

変数名に続けて = を書くことで右辺の値を “代入” することができます。 また、右辺には数字だけでなく様々なものが書けるのですが、ここに変数名を書くこともできます。

たとえば、

  1.  <?php
  2.      $hoge = 10;
  3.      $hogehoge = $hoge;
  4.  ?>

こうすると、$hogehoge は $hoge の値が代入されて 10 になります。前回までの解説の通り、プログラムは上から順に実行されます。

また、右辺で四則演算等もできますので、

  1.  <?php
  2.      $hoge = 10;
  3.      $hogehoge = $hoge + 1;
  4.  ?>

とすると、$hogehoge は 11 になります。

昔高校生のとき、プログラム言語を知らない友達がぼくの印刷したソースをながめていて、「この式はおかしい」といったことがありました。 結構目から鱗だったのですが以下のようなコードでした。

  1.  <?php
  2.      $hoge = 10;
  3.      $hoge = $hoge + 1;
  4.  ?>

プログラム言語に慣れちゃっているとまったく違和感がないのですが、数学的な”等価”式としてみると確かにおかしいです。 $hoge = $hoge + 1 ですからこの式は解けません。 🙂

多くのプログラム言語において、 = は代入のみを表します。 なのでこのように自分自身を右辺に書くことができます。 この場合、自分自身 $hoge の 10 に対して 1 を足した 11 が $hoge にはいります。 右辺から順に評価されるわけです。

変数には他にも文字などいろいろなものが入るのですが、今回はここまで。 まずは、コンピュータ言語で何かを処理するには、必ずデータを変数に格納する必要があるという感覚を身につけます。 逆に言えば、処理できる形にデータを格納できてしまえば半分はプログラムが完成したと言っても過言ではないでしょう。

今回は変数に対してカードの”位置”を割り当てています。左($left)が8のカードで、右($right)が4のカードです。

  1.  <?php
  2.      $left = 8;
  3.      $right = 4;
  4.  ?>

変数と言うだけあって、変わる数。 本来ならば、左の数と右の数は画面からの入力によってその値を変えたりします。でも、まだその方法までたどり着いていませんので、ここを変えたいときは手作業でソースを修正することにしましょう。 🙂

やりたいことは、左と右を比べて小さい順に並べ替えることです。

ここで登場するのが、if という制御構文です。 これは比較演算を行いその結果に伴って”処理の流れ”を変えることができます。 書き方は以下のようになります。

  1.  <?php
  2.      if(比較演算) {
  3.          やりたいこと1;
  4.          やりたいこと2;
  5.          ...;
  6.      }
  7.  ?>

比較演算というのは、今回まさにやりたい値の大小判定やイコールの判定などが書けます。そして、その条件に”合致”していた場合は、if の後の { 中括弧から } までの間を実行します。 そうでなたっか場合はその中は実行されず、 } の下におちます。 いままでは上から下に順に実行されていましたが、その内容をスキップできるようなイメージです。

じゃー、今回の2枚のカードの左からの小さい順番での並べかえは以下のようにできそうです。

  1.  <?php
  2.      $left = 8;
  3.      $right = 4;
  4.      if($left > $right) {
  5.          $left$right の内容をいれかえる;
  6.      }
  7.  ?>

もし(if)、左のカードのほうが大きかったら右と入れ替える、デス。

比較演算には数学と同じように、<、>、 <=、 >=、などが使えます。

一点注意するのは今回は使いませんが、イコールの判定です。 先ほど上で出てきたように、PHP において = は代入です。 等価の意味ではありません。 等価を表すには == とイコールを重ねて書きます。 これはよく間違うところですので、十分気をつけてください。 とりあえず、最初は if の中は == って覚えておきましょう。

実はたとえば他言語、Visual Basic などでは = は等価として使えたりします。 ちゃんぽんで言語やっている人も要注意です。(←恥ずかしいことに先日間違った

さあ、あとは「$left と $right の内容をいれかえる;」という処理を PHP で書けば完成です。実はぼくが書くまでもなく、ここまでの知識で変数の入れ替えの処理は書くことができます。どうするでしょう? なんて。:-)

難しいことではないです、一般的に考えるだけで十分です。 二つのグラスの異なるジュースの入れ替え、みたいなもんです。 ですね、もーいっこグラス(変数)を使えば良いわけです。 え、空中で入れ替えるって? 大道芸はコンピュータには無理です。 😛

$left と $right 変数の入れ替えの処理だけ書いてみましょう。

  1.  <?php
  2.      $left = 8;
  3.      $right = 4;
  4.      //入れ替え
  5.      $temp = $left;
  6.      $left = $right;
  7.      $right = $temp;
  8.  ?>

$temp という変数を新設して、$left を保持させておいて $right で $left を上書きします。 保持しておいた $temp($left) の値を $right にいれればいれかえ完成です。

ジュースをグラスから移すのと違って、= で代入しても元の値はそのままだということに注意してください。変数間のやりとりはあくまで代入、コピーとなります。 移動ではありません。

じゃー先ほどの if と組み合わせてみましょう。

  1.  <?php
  2.      $left = 8;
  3.      $right = 4;
  4.      if($left > $right) {
  5.          //左のほうが数字が大きかったら入れ替え
  6.          $temp = $left;
  7.          $left = $right;
  8.          $right = $temp;
  9.      }
  10.  ?>

完成! って、これだけでは動かしても画面出ませんね。 じゃー最後に仕上げに 結果を HTML で出力させてみましょう。

  1.  <?php
  2.      $left = 8;
  3.      $right = 4;
  4.      if($left > $right) {
  5.          //左のほうが数字が大きかったら入れ替え
  6.          $temp = $left;
  7.          $left = $right;
  8.          $right = $temp;
  9.      }
  10.  ?>
  11.  <html>
  12.  <body>
  13.  <p>左が<?php echo $left;?>で、右が<?php echo $right;?> です。</p>
  14.  </body>
  15.  </html>

前回出てきた、画面に表示を行う echo ですが、変数の表示も行うことができます。上で処理された $left、$right の値を下の HTML で表示してみました。

左が4で、右が8 です。

うまく入れ替わってくれたようです。 $left、$right の数字を変更して遊んでみましょう。マイナスの数字とかでもうまくいくハズです。

さてさて、以上で今企画している WordPress プラグインを作る知識はお伝えできたはずなのですが、実は if や変数には多くの機能があります。

たとえば、if の条件の中に and や or の複合条件を書けたり、if 後に else や else if といった構文を書くと条件以外の時の処理を書けたり、if の中括弧 { の中にさらに if を入れるなどの技もあります。

if の構文で言えば以下のようになります。

  1.  <?php
  2.      if(条件1) {
  3.          条件1にあったときやること1;
  4.          if(条件2) {
  5.              条件2にあったときやること1;
  6.              条件2にあったときやること2;
  7.          } else if(条件3) {
  8.              条件2じゃなく条件3にあったときやること;
  9.          }
  10.          条件1にあったときやること2;
  11.      } else {
  12.          条件1じゃなかったときやること;
  13.      }
  14.      必ずやること;
  15.  ?>

よーくみれば、必ず分かると思います。

では今回の例題カードならべかえの3枚版を。 $center が真ん中です。 😛

  1.  <?php
  2.      $left = 8;
  3.      $center = 2;
  4.      $right = 4;
  5.     
  6.      並べ替えの処理;
  7.     
  8.  ?>
  9.  <html>
  10.  <body>
  11.  <p>左が<?php echo $left;?>で、真ん中が<?php echo $center;?>で、右が<?php echo $right;?> です。</p>
  12.  </body>
  13.  </html>

ぜひぜひ挑戦してみてください。これがうまくできたときの爽快感を味わったらもう後には戻れません。プログラミングの世界にようこそ。 :-P できたらトラックバックくれたりすると嬉しかったり。 変態コードもお待ちしております(笑)

さぁぱっとみ3枚でも大変そうなのに、これが4枚になったらと思うとゾっとしませんか? 10枚になったら? 変数名考えるだけでもいやになります(笑)

実は変数にはこういった同種類のデータを同じように扱える、配列という機能があります。 これとループと呼ばれる技と組み合わせると、データがいくつあっても同様に処理できるようになります。

でも便利なものは後から。それでこそ使い道が身につくというものです。最近はソートすら関数一発だからねぇ。。

とおじさんの戯言が始まったところで、また次回。

2007/3/4 Sunday 投稿時の月齢:14.3  月名:十五夜  潮汐:大潮 Moon:14.3[十五夜]今日の心技体 : 好調期好調前不安定期低調期

借りるのに試験が必要なレンタルサーバ このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々晴(4/0) ひろまさ @ 0:34

海外の無料レンタルサーバに MyJavaServer というのがあります。 たしか昔は MyCgiServer って名前でした。

特に意味はなかったのですが、そういやサーバサイド Java が動くレンタルサーバってあんまないよな、と思って久しぶりに見てみたのです。

実はこのサーバ、以前から借りるときにとある問題を解かないとサインアップできなかったのですが、

うぉ、問題が変わっている!

このサーバの趣旨は Java の開発者用途なので、前も Java にまつわる問題だったのですが、まぁちょっとやってればすぐ分かるものでした。

MyJavaServer

MyJavaServer provides a development environment for Java web applications.

An open environment like MJS is a target of malicious users who abuse our services for illegal or simply inappropriate activities.
In order to minimize abuse and yet provide our services to all interested Java developers for free, we require you to demonstrate your Java skills. The challenge is easy to master but does require some knowledge of the Java programming language.

今回みてみたら、いつから変わったのか難易度アップ。 しかも、出題の仕組みが面白い。

  • 問題はあるメソッドに入力を与えたときに、正しい出力がでるかどうかを試される。
  • テキストボックスに Java のソースコードをかくとサーバサイドでコンパイルされる。
  • コンパイルされたコードに、自動的にテストケースが渡され全て正しい値が帰れば正解!。

問題の内容的には、ある URL が渡されたときにどのクラスを呼ぶのかを決定するようなメソッドをつくるものです。 URL の最長一致で決定するのがキモでしょうか。 そう、答えはさまざま。 一種類ではないのです。

疲れているんですよ、、仕事で一日中コードみてたわけですよ。。

でもやってしまうぼく。。

ちょこちょこやって、提出! がーん、fail した。 あ、条件にあたらなかったとき空ストリングかえしてた。 ”miw1SQ” を返すのか。 ちょいとなおして、

きたー!

与えられるテストケースが隠されているところが面白いところですね。 🙂

最長一致ということで、ぼくは引数をオブジェクトに詰め直して、ソートした上でパターンマッチングする方法をとりました。 まぁこんなことしなくても、順次みて一番一致長が長いのをとれば簡単にできるかな。

コードが書きたくてたまらない方、Java の勉強をはじめた方、あるいはなにか憂鬱な方(!?)は遊んでみるといいかもしれません。 🙂

このサイトについて

このブログは引っ越しを行いコンテンツはフリーズしています。hiromasa.anotherへどうぞ。

Powerd By WordPress

We (Heart) WordPress

WordPressME Logo
WordPress Plugins

ブログ内検索

Todays Popular

WordPress Ring

はてなリング - WordPress -

情報

20 queries. 0.126 seconds.

このページの先頭へ