コレやってみたい! - ジェネレータを作るには

  • 2008/03/08(土) 00:00:00

日記

先日、一緒にディズニーランドに行った人から、「学習ブログとはこうあるべき」 という
興味深い意見を聞いた。
彼によると、プログラミングというのは突然、理解できる瞬間がある、という。
学習の結果だけをアウトプットするブログでは、書き手がその壁を越えた時、
急に読者がついていけなくなってしまう。
彼はまだ、その瞬間をうまく表現できているブログを見たことがないらしい。


思考の過程を公開することは恥ずかしい。
でも、恥ずかしいところでつまずいている人は他にもたくさんいるはずで、
そういう人の力になってこその Web じゃろがい、と思う。
教えて!ダンコーガイ!」 ならぬ、「教えて!インターネット!」 やん。
Google は偉大だ。


ついこの前も、Google の偉大さを再認識する出来事に遭遇した。





我々は完全に包囲されている。
正直、プログラミングのいろはさえ理解できてないんだけど、
ギークなお姉さんの名の下に恥をさらしておくよ。

さあ、紅の屍を越えていけ。





ジェネレータを作るには

ジェネレータを作りたいんだよね。
昨日まで 『疾走、ヤンキー魂。復活祭。』 なる祭りが開かれていて、
一週間だけヤン魂をプレイできる機会に恵まれたんだけど、
ヤン魂やりながらずっと、このゲームに関連した何かを作りたいと考えていた。
自分の好きなことと紐付ければ、頑張れるはずなのだ。


普通の名前をヤンキーっぽい名前に変換するジェネレータを作りたい。
たとえば、「よろしく」 と入力したら 「夜露死苦」 と返すようなジェネレータ。
これは名前じゃないので、例としてはあまり適切ではないけど。


おみくじの時の連想配列を使って、”あ” から ”ん” までのそれぞれの文字に
ヤンキーっぽい漢字を配置すればいいんじゃなかろか。
参考:4日目 おみくじとか作っちゃうかモナー!


その場合、ユーザには「ひらがな入力でヨロ^^」ってことになるけど、
それはまぁ、いいだろう。


ユーザが入力したデータをもらって、それを表示するというのは POST でいいんだろな。
参考:3日目 今度はあなたに挨拶したい><


この2つのエントリを基に、ちょっとだけ努力したらジェネレータ作れそうなんだけどなあ。
がんばろがんばろ。

LINEで送る

コレやってみたい! - べ、べつにブクマ禁止したいわけじゃないんだからっ!

  • 2007/11/26(月) 23:00:00

日記

19時前に会社出たのに、ちょっぴりスイーツ気取りで
「一駅歩いてみようかな☆」 なんて思ったのが間違いだった。
超☆迷子。結局おうちに着いたのは23時。これはひどい。
洗面台へ向かい、手を洗う。鏡をのぞくと、なぜか涙が流れていた。
きっとつらかったんだと思う。
紅は地図も読めないし話も聞かない女だ。
この前あきやんにそう言ったら 「そんなことないよー」 と言ってくれたけど
これだけは譲れない。だって絶対そうだもん。





はてブを禁止してみたい!

はてなブックマークを禁止する方法 ( Geekなぺーじ さま )


このエントリを見かけたときからあきやんに聞こうと決めていた。
で、昨日聞いた。
まだまだツメが甘い理解だけど、忘れないうちに理解した範囲でメモ。
※最初のタグは全角にしてあります。



1 <?php
2  $agent=$_SERVER['HTTP_USER_AGENT'];
3 if(strncmp('Hatena',$agent,6)==0{
4  header("HTTP/1.0 302 redirect");
5  header("Location:http://www.geekpage.jp/ ");
6 }
7 ?>



知らない単語がいっぱいある。
でも if は昨日やったから分かる。ナイスギーク! >べにぢょ


ここに書かれてる内容を日本語に訳すと、
「はてなが見にきたら http://www.geekpage.jp/ に飛ばせ」って言ってるぽい。ざっくりだけど。
あきやんのありがたいメモがあるのでうpしとこう。


     


これは分かりやすい。
最落ナシ1円〜でどうだろう?ダメだろう。


はてブするときっていうのは、どうやらはてながそのページを見に来てるらしい。
あれが JavaScript だというのは知ってる。
最初ブックマークレットの使い方が分からなくて、JavaScript うんちゃらかんちゃらというのを
アドレスバーに直接コピペしていた。知ってるといってもその程度なんだけど。



コードを解釈する。
2行目は、すごくちゃんと説明してもらった気がするけど忘れた。
あ、いや!ヒントもらえば思い出す!聞いてたって!ちゃんと話聞いてたって!!
泡盛飲みながら聞いてたのが良くなかったか・・・でも大丈夫。頭のどっかにはあるはず。


とりあえずググる。


サーバ変数とはサーバが生成する変数です。
サーバはヘッダやパス・スクリプトの位置などいろいろな情報を持っていますが、
そのサーバの情報にアクセスできる変数だと思って下さい。
「ブラウザ情報」だとか「IPアドレス」だとかもこのサーバ変数で取得できます。
この変数1つで取得できちゃうので、よくある「あなたのお使いのブラウザは○○です」
なんて表示も1行スクリプトで済ませられちゃいます。

参考:サーバ変数について


OH!Yes!!
そだそだ。そういえばそうだった。思い出してきた。
あきやんにサーバ〜ブラウザ間でやり取りしてる情報を見せてもらった。
んで、このへんの記事を思い出して納得した記憶。
当時はなんでバレてるのか全然分からなかったにょ。



コードに戻る。
その情報の中の HTTP_USER_AGENT の情報を見ろ!って指定してる、んだった気がする。
して、それを $agent に代入する、と。


3行目。
もし、ふにゃららが0だったら、って言ってる。
ふにゃららの中身はよく分からない。
どこが分からないか?まず strncmp が分からない。
ググろう。


strncmp - 最初の n 文字についてバイナリセーフな文字列比較を行う

参考:strncmp - Manual



strncmpn は数字を意味してる、って聞いた。



この関数は strcmp() に似ていますが、 各文字列から(最大)文字数(len ) を
比較に使用するところが異なります。



おぉ。記憶と説明がつながった。文字数が関係してるから n が入るのね。
(カッコ)の中を見る。
'Hatena',$agent,6 は、確か $agent の最初の6文字を見ろ、ってこと。
その6文字が Hatena だったら、ってことだよね。
うん。だったらなんなのさ!
あぁ、さっきのサイトに戻ろう。せっかちイクナイ。まだ慌てるような時間じゃない。


返り値
str1 が str2 より小さい場合に < 0、str1 が str2 より大きい場合に > 0 、
等しい場合に 0 を返します。



つまり、6文字目までが Hatena だったら0が返ってくるってことか。
それが超イコールで0と結ばれてるから、3行目を日本語に訳すと
ブラウザがサーバーに送ってきたデータの HTTP_USER_AGENT の部分、
ココの最初の6文字が Hatena だったら if の条件式が成り立つ、という意味。
条件式が成り立ったら { 以下を実行するのが if。そう勉強した。
参考:5日目 もし私が女子高生だったら



4,5行目。
header は関数らしい。


header - 生の HTTP ヘッダを送信する

参考:Header


ぜんぜん関係ないけど、コレ最初見たとき ”一生(いっしょう)のHTTP ヘッダ” かと思って
ちょっとわらたw
一生てなんだよ!すごいウケる。そぐわない。場違いな言葉だ。



また逸れた。
ていうか、header はぶっちゃけよく分からないの。
だからとりあえずいいや。
でも4行目の HTTP/1.0 302 redirect は、リダイレクトしろよ、って言ってるんだと思う。
で、5行目でリダイレクトする場所を指定してるんだと思う。それはガチ。




オーケー!
今日はこのへんでおk。とりあえずやってみる。
サンプル:hateb.php



Σででできるじゃん!!!!!!!!!!!

あ。Geekなぺーじの追記に書いてあった。そっか、できるんだ・・・
いいの。いいの別に。ただ、ちょっとやってみようかなって思っただけだし・・・。





寝よう。





追伸

画像出力の件、コメントくださった方ありがとうございました!
あと、あと、おみくじやってくれた人!すごく嬉しかったですありがとうございます!!
+++++!!

LINEで送る