URLが涼しくなったよヽ( ・∀・)ノ

  • 2008/07/29(火) 20:00:00

もうすぐ夏ですね!ちょっと涼んでみませんか♪


更新情報

ひがやすをさんを追加しました!
毎回思うんだけど、アルファギークって知れば知るほど魅力的。ありがとうございましたっ!
geek DataBase - ギークデータベース



CoolなURLはじめました♪

宿題:CoolなURLを作るには

目指すはプロフィールページのURLを

http://geekdb.jp/geek.php?id=数字
 ↓
http://geekdb.jp/geek/ギークの名前
  にすること!

またしてもだいぶ迷走したけど、上記エントリの最後に貼ったリンクなどを参考にmod_rewriteで書いた。
どこでどう迷っていたかというと、最初は

TOPの geek.php?id=1 というリンクをクリック
 ↓
geek.php?id=1 から geek/yusukebe にリダイレクト


っていうのをやろうとしていたが、その方法だと処理が遅くなる、ってどっかのサイトに書いてあってさ。
それに何より、その方法だとギークを追加するたびに.htaccessに追記しなくちゃならない。それが嫌。
URLをCoolにするために.htaccessが暑苦しくなるなんてスマートじゃないよね、gk!(ギーク的に考えて)

なので、DBに name_id というカラムを追加して、indexのリンク先を修正する方法を採用。
一応、リダイレクト処理の参考リンク貼っておくね!
.htaccessでリダイレクト機能を利用する方法


indexで直したのは以下の2行だけ。

echo "<a href="http://geekdb.jp/geek/";
echo $item['name_id'];


直す前のコード&解説は、下記エントリの14,15行目を見てね!
変更前:GETメソッドでデータを送る

っていうかあれ?前回URLの前で (エスケープ)してなくネ?なぜ動いたんだろう・・・コピペミスだろか。


今回の主役となるmod_rewriteは以下。

RewriteEngine on
RewriteRule ^geek/([0-9A-Za-z]+)$ geek.php?name_id=$1 [L]


ぶっちゃけ正規表現は全く理解していない。
ググって出てきた大量のサンプルコードから、私の場合はどうなるかを推測して書いただけなんだ><
なんとなく分かったのは

RewriteEngine on は絶対必要
・2行目に RewriteBase / を入れるのが正式? でも入れなくてもおkぽい
RewriteRule ^ 書き換え後のURL $ 書き換え前のURL [L](←終了の合図。セミコロンみたいなもの?)
([0-9A-Za-z]+) で数字と大文字・小文字のアルファベットをカバーできるようだ
mod_rewrite はスイス製のアーミーナイフ

このくらいか!ホントに何も分かってないな!ハハハ!!
これを「.htaccess」という名前でアップロードして、パーミッションを604に変更。
.htaccessのアップロード方法

置いたフォルダ以下にあるファイルに対して有効らしいので、私は同じ階層に置いたにょ。





最後はgeek.php。変えたのは1行だけ。

$sql="select * from geekDB where name_id = "$name_id"";


変える前のコード&解説は、下記エントリの7行目参照。
変更前:GETメソッドでデータを受け取る


おっと、もうひとつ変更点が。
//id=数字以外はエラーメッセージを表示 の部分のソースコードを削除した。
GETで渡してるデータはもう、$id じゃないからな・・・。
参考:ギークはベストなコードを目指すべし!


で!
これで問題ないはずなんだが・・・。



さんざんコードをごにょごにょいじってたけど、突如ハッとひらめいたことがあってさ!



あの、ごめん。最初に言っておくけど、すごい凡ミスだから!全く新しくないから!!
「K2Editor」っていうテキストエディタを使ってるんだけど、保存する時の文字コードが
UTF-8N っていうのと UTF-8(BOM付き) っていうのがあってね。



UTF-8Nを選んでいたんだけど、「もしや!?」と思ってindex.phpの方を確認したら、そっちはUTF-8(BOM付き) だったわけさ。

ってことはだよ(^ω^)
BOMを付ければいいんじゃないかな(・ω・)


過去の経験を踏まえて、文字化けしたときに確認すべきことは

・同一ファイル内の文字コードは統一されているか?
参考:GETメソッドでデータを送る
・テキストエディタで保存する際の文字コードは間違っていないか?

以上の2点だね!
失敗すればするほど次の開発がスムーズになると思えば!未来の作業時間を前借りしているだけさ!



ということで、長くなりましたが無事CoolなURLを作れました♪
ゆーすけべー先生、アドバイスありがとうございました!!



LINEで送る

近況報告

  • 2008/07/23(水) 17:00:00

更新情報

まつもとゆきひろさんを追加しました!Rubyのパピー♪感激!!ギークは黙ってMatzにっきだろ!
紅なんて毎晩、夢の中でもMatzにっきをひたすらリロードしてるからね^^^^
おっと、喋りすぎたようだ・・・。
geek DataBase - ギークデータベース


先週はまた京都へ行って、はてなオフィスにお邪魔してきた!
時差ボケというか休みボケ?で、頭の中がポニョ(流行語)っとしている。
うおぉーん。目覚めよ、紅の小宇宙よ>< アルファギークの位まで高まって><


すいませんCoolなURLの件、忘れてないです!ごめんなさいっちゃんとやるからぶたないで(つд・)




LINEで送る

「コードの中では、平気なの」

  • 2008/07/14(月) 18:30:00

更新情報

yokoletさん、ひげぽんさんを追加しました!
yokoletさん、本当に素敵。あこがれる・・・!生まれ変わったらbeniletていうHNにすると誓った!
ひげぽんさんは過去にタイトルをパロった(ごめんなさい!)くらい、リスペクトしているすごい方です。
やっぱりギークが好きだ!大好きだ!!もうギークしか見えない><
geek DataBase - ギークデータベース


最近、プログラミングさぼってて GOMEN,World><
今週は更新できぬかもだけど、コード忘れないように、キックは日課にするぞ!

はっ。そうそう。
今日のタイトルは、新しくDBに参加してくださったyokoletさんのまねっこ動物。
マジでシビれる!こんな人がいたなんて!!
プログラミングやっててよかった(*・∀・)v 素敵な出会いをありがちょーん!

LINEで送る

CoolなURLを作るには

  • 2008/07/06(日) 07:30:00

更新情報

力武さんを追加しました!だー(;∀;) ご協力うれしすぎる・・・スーパーサンクス!ウルトラソウルっ!!
geek DataBase - ギークデータベース



宿題の途中経過

やっべ、すんごい勘違いしてた。この前のさ、ゆーすけべーさんからの宿題。

http://geekdb.jp/geek.php?id=1

http://geekdb.jp/geek/yusukebe

完全に甘く見ていた。「変数をごにょごにょすればできるっしょ^^」とタカをくくっていた。
ぜんぜん違う。そんな小手先の修正じゃダメだ。

当初、紅の脳内では、geek.php のこの行

$sql="select * from geekDB where id = " . $id;

$id$name に変えるなどして、indexをチョチョイといじればなんとかなると思っていた。
ぜんぜん違う。あらためて上の2つのURLを見比べてゆーすけべー吹いた。

geek. php? id=1


php?


Σちょ!こいつクセモノ!!!
あーびっくりした。下のURLに php? ないやんけ!なんだこれ!誰だおまえ!!

いろいろググったところ、動的URLを静的URLに変える、という手法はよくある?ことらしい。
SEO的にその方がいいとかナントカ。
【PHP TIPS】 41. mod_rewriteを使いこなそう
動的だけど静的なページの作成 (mod_rewrite)


途中、迷走してひたすらURLエンコードについて調べてたからね。方向音痴もいいとこだ><
どうやら正規表現を使うらしいが・・・もうちょい調べてみる。


追記:とってもためになる関連エントリ 言及ありがとうございました!
CoolなURLを作るには - Web屋のネタ帳さま
画像もDBに格納して管理する話とCoolなURLの作り方の話をまとめて補足。 - Web屋のネタ帳さま
よりCoolなURLを作るには - まちゅダイアリーさま


LINEで送る

ギークはベストなコードを目指すべし!

  • 2008/07/03(木) 19:00:00

更新情報

あきやんをアップデートしました!ニコ動の戀塚さんを追加しました!
ありがとうございます!ありがとうございます!!
geek DataBase - ギークデータベース



geekML作ったんだヽ( ・∀・)ノ

前回の更新で、掲載geeksが2桁の大台に!
せっかくなので、geekさん同士でつながるネットワークがあったら素敵やん!とひらめき、
geekMLを作成したにょ\(^o^)/
情報交換や勉強会・イベントの告知、飲み会のお誘い、「や ら な い か」の誘惑 などなど!
ギークさん同士が気軽に交流を深める場として使っていただければ、わたくし・べにぢょ、
この世に生まれてきた甲斐があるというものです。
いつか日本のgeeks発で、世界に向けたでっかいサービスを開発できたらすごいなあーなんて、
1人夢見て今日も心ここにあらず。ていうか言語作りたい(・∀・)
#ごめんなさい、突拍子もないこと言ってるんだろうなという予感はあるんですが><
 どうかお気を悪くしないでください、生まれてきて本当に申し訳ありません!!!




より無駄のないコードに

nipotanさんからアドバイスをいただいた!

mysql_connect(), mysql_select_db(), mysql_query() が続いている箇所は
if(!is_numeric($id)){ ... } 後の else { ... }ブロックで実行したほうが、
余計なコネクションの生成や実行する必要のないクエリが走ることが無いので、
パフォーマンスのために良いと思いますよ。


わぉ!なるほど!シリコンバレー!!ありがたや・・・ありがたや・・・。
さっそく書き換えた!

if(!is_numeric($id)){
echo "該当データがありません";
}
else{
mysql_connect('localhost','ユーザ名','パスワード');
mysql_select_db(''データベース名'');
mysql_query("set names utf-8");

こうですね!わかります!
そか、動かすことしか頭になかったけど、ギークを目指すなら”どうすればよりスマートか?”ということも考えていかねばなるまいて・・・。そいや以前、すごいギークについて書いた記憶が。
参考:すごいギークとは何がすごいのか - 1日目 見つけて 私のセキュリティホール



宿題

あぶねえ!うっかり忘れるところだった>< 宿題があるんだよ宿題が・・・。
いっちゃん最初に、ゆーすけべーさんからご意見を頂戴したのだ!

URLがモロパラメータ丸出しだけど
こんな風にできたらCoolだと思います。

http://geekdb.jp/geek.php?id=1

http://geekdb.jp/geek/yusukebe


間違いない!ちょ、これ早急に実装せねば(`・ω・´)



LINEで送る