hrkt0115311の、迷えるプログラミング教室  RSSを登録する

プログラミングに興味はありますか? 素人が入門書片手にソースコード書いたりcgi作ったり、迷子になったりするメルマガです。広大なプログラミングの森で、一緒に迷子を楽しんでみませんか?

最新号をメルマガでお届けします    
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。
2008/10/24

「hrkt0115311の、教えて習うRuby教室。」Vol.84 ~AmazonWebServiceなんとか動いたよー、あと英語も少々の巻~

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

              〜 怒濤のPHP編 〜
                                             
                 「hrkt0115311の、教えて習うRuby教室。」Vol.84

━━━━AmazonWebServiceなんとか動いたよー、あと英語も少々の巻

おはようございます。一週間のご無沙汰です。hrkt0115311です。毎回メルマガを
読んでいただきありがとうございます! LDRでRSSを登録して下さっている方も
ありがとうございます。
http://reader.livedoor.com/about/http://archive.mag2.com/0000267290/rss10.xml
バックナンバーをご覧下さっている方にも感謝します。励みになります!
皆様お元気ですか? それから、新たにご登録下さった方々、ありがとうございます。
どうぞよろしくお願いいたします。

笑えない冗談なんですが、自分で書いたRubyのソースコード(EX↓)を読むことは
http://enjoy-programming.g.hatena.ne.jp/hrkt0115311/20080903/1220444175
できるんですけど、パッと書こうとすると「ウッ」てつまる感じが出てきました。
ちょっと危機感覚えていたりします。でも、PHP分かるようになりたいし。

Rubyのメルマガとしてスタートしてるのに、いつの間にか、「PHP編」に
突入していてすみませんですm(__)m

では、今週号をお届けいたします!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

○目次
 ・AWSおそろしす・その後
 ・「ハッカナー」をSmartyで書き直したよ
 ・なぜか英語始めました(プログラミング関係ないし)
 ・編集後記

━━━━━━━━━━━━━━━━━━━━━━━━━━━免責事項

 ソースコードは、発行者が実際に動かし、構文チェックなどもしていますが
 ご利用になられて万一損害が生じた場合、保証することができません。
 ご利用になられる際は、ご自身でご確認になられた上で、お試し下さい。

━━━━━━━━━━━━━━━━━━━━Rubyの導入方法について

 OSは何をお使いですか? LinuxでもMacOSでもWindowsでも、Rubyの
 公式ページでインストール方法が説明されています。

 ○Ruby Install Guide
 http://preview.tinyurl.com/4ghc3o

━━━━━━━━━━━━━━━━━━━━━PHPの導入方法について

 Ruby同様、PHPもOSを選ばず環境を構築できます。

 ○日本PHPユーザ会
 http://www.php.gr.jp/

 ○XAMPP
 http://www.apachefriends.org/jp/xampp.html

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

○AWSおそろしす・その後

http://archive.mag2.com/0000267290/20081017070000000.html
上記先週業で、「返り討ちにあった、うわーん」て泣いていた
AmazonWebServiceの件ですが、その後、動くようになりました。

お手本にしていたスクリプトを見直して、別の書き方に切り替え、
できることを最小限に絞り込んだら、私のlocalhostでも、レンタルサーバでも
同じように動いてくれました。

 「まとめんしゃいβ」
 http://hrkt0115311.nuts-choco.com/php/6z/

と、いいます。方言が好きで、「よかったらまとめませんか」みたいな
言葉が欲しかったのですが、ちょっと見つからなくて、この名前にしました。

機能は三つ。

1.検索結果にチェックボックスも表示し、複数の商品をAmazon.co.jpの
 ショッピングカートに放り込むことができる。

2.http://amazon.jp/dp/4873112575
 Amazon.co.jpの商品を表示するなら、おそらく上記が一番短いと思います。
 アソシエイトIDを埋め込めないので、アフィリエイト的にはありえないのですが、
 短いURLって美しくないですか? 以前、Rubyで正規表現の文字列処理を利用して、
 ASIN(商品番号)引っこ抜いて整形するツールを作ったことがあります。

 EX) http://hrkt0115311.so.land.to/ruby/az/asinhelp.html

 AWSの場合、検索すると検索結果が連想配列の形で返されます。ASINを
 正規表現で引っこ抜くまでもなく、文字列に足してあげればURLを
 作成することができます。

 私のアソシエイトID経由で買ってくれる人がいたら嬉しいけれど、
 そもそもAmazon.co.jpのURLは長すぎると僕は感じるので、短いURLを
 使いたいのです。検索してURL把握して短くするという工程じゃなくて、
 検索結果が出た時点で「最短URLはこれだよ」って表示するのが
 本来の検索結果なんじゃなかろうかと考えました。

 ユーザーの導線考えると、買い物を続けないで、URL切り取って友達とメールや
 チャットでおしゃべりする時に、「この商品なんだけどね」ってデータだけ
 使われてしまうこともあるかもしれないから、公式には実装されないだろうけど、
 ユーザーが運営するレベルならあってもいいんじゃないかなと思って作りました。

3.http://crossreview.jp/product/4873112575
 crossreview(クロスレビュー)へのリンクもASIN把握していれば簡単に表示できます。
 参照したり、書きに行く際にあると個人的に便利なのでこれも搭載しました。


1は、アフィリエイト的に意味があるかもしれないですが、2と3は、私には何の得もありません。
ただ、Amazon.co.jpは自分で購入しても紹介料は発生しません(レポートに反映されても
差し引かれる)。でも、2・3の機能は、購入関係ないし、私自身も使いたい機能なのです:-)

Amazon.co.jp使うから、あいつんとこ経由して購入してやるかーって、Donation的に
使ってもらえたらとても嬉しいけれど、ささやかなツールでも、作った人間としては
使ってくれる人がいたら、それもまた嬉しいのです。

足りない点もあると思うけどとりあえず動きますので、気が向かれたら

 「まとめんしゃいβ」
 http://hrkt0115311.nuts-choco.com/php/6z/

↑で、遊んであげて下さい。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

○「ハッカナー」をSmartyで書き直したよ

 ・ハッカナー version 0.03
  友達は閑古鳥、儚くハッカナー
  http://hrkt0115311.nuts-choco.com/php/5s/

↑これ、Smartyで書き直しました。まだ直すべき点があるのだけど、ちょっと
PHPの基礎やSmartyの基礎が足りなくて、今はこれで精一杯なのであります。

PHPテンプレートエンジンさんがきちんと動いてくれてよかった><

最初、再帰を使って、フォームからPOSTで情報を渡す時に自分宛に
送信させて処理行ったのですが、これやると、F5連打でどんどんMySQLに
データを挿入できちゃうんです。さすがにまずいだろうと思って、
再帰はやめて、ファイルを二つに分離しました。

今回、Smartyで書き直すにあたり、「$_POST」が空の時はフォームを
表示し、データが既に存在するなら表示しない、という仕組みに切り替えて
みました。セッション管理をしていないので、「入力画面に戻る」で
リンクを押してもらえばPOSTで受け取ったデータも消えます。

ただ、投稿完了したページでF5連打すると、やっぱり同じ問題が起こるので
前よりはましになったけど、解決はしていないことが分かりましたorz


ちなみに、Smartyで書いてるので、PHPファイルと、テンプレートファイルの
二つが存在するのですが、今回はPHP側のみソース公開しますね。


<?php
//Smarty設定
require_once("Smartyのパス");
$smarty=new Smarty();
$smarty->template_dir="テンプレートフォルダパス";
$smarty->compile_dir="コンパイルフォルダパス";

//PHPをテンプレート内で使うため
//デリミタタグを設定変更
$smarty->left_delimiter="{{";
$smarty->right_delimiter="}}";

//MySQL接続部分
require_once("MySQL設定ファイルのパス(変数格納)");
$s=mysql_connect($SERV,$USER,$PASS);
mysql_select_db($DBNM);
mysql_query("SET NAMES utf8");

//関数定義
function h($str){
	return htmlspecialchars($str,ENT_QUOTES,"UTF-8");
}

//両方のPOSTから受け取ったデータが空の場合に、フォームを表示する
if ((empty($_POST["no"]))and(empty($_POST["text"]))){
  $f1 = '<form action="index.php" method="POST"><input type="text" name="text">
<br><input type="submit" name="mode" value="つぶやく!!"></form>';
  $smarty->assign("f1","$f1");

  $f2 = '<form action="index.php" method="POST"><input type="text" name="no"><br>
<input type="submit" name="mode" value="該当番号を入力して削除する!"></form>';
  $smarty->assign("f2","$f2");
}

//削除用スクリプト部
//数字以外ははじく設定
  if(!empty($_POST["no"])){
    $no=h($_POST["no"]);
    if(preg_match("/[^0-9]/",$no)){
        $smarty->assign("info","<font color='red'>制作者からのお願い。数字以外は入力しないでくらさい!</font><br>");
    }
    else{
        mysql_query("DELETE FROM 【テーブル名】 WHERE 【テーブル名】.no=$no LIMIT 1");
        $smarty->assign("info2",'正常に削除されました。<br>→<a href="index.php">登録画面に戻る。</a>');

    }
  }


//投稿用スクリプト部
if(!empty($_POST["text"])){
    $text=h($_POST["text"]);
    mysql_query("INSERT INTO 【テーブル名】(A,B,C) VALUES (NULL, Now(), '$text')");
    $smarty->assign("info3",'投稿完了しました。<br>→<a href="index.php">登録画面に戻る。</a>');

  }

$smarty->display("index.tpl");
?>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

○なぜか英語始めました(プログラミング関係ないし)

英語もう間に合わない、バスは出てしまったのだ、と思っていました。
読みたい洋書買ってきて、どうやれば読めるようになるのか教えてもらい
実際にやった分だけ訳した部分は英語が読めるようになっても、あんなに
たくさん辞書引くの耐えられないっす。私には向かないと諦めました。

でも、プログラムの延長線上には英語があって、英語分かれば
もっと楽しくなるのが分かると、諦めきれなくて、何か方法ないかなと
模索しました。英語が特別なものではなくて、もう獲得した方たちから
刺激をいただいた、というのもあると思います。

調べて、英作文しました。blogで公開しました。私の理解度に応じて
少しずつアドバイス下さる方がいました。それで、流れとして、Bloggerを
利用して、英語日記をつけてみることにしました。

もちろん、英語のリファレンスマニュアル読んだり、Twitterで英語で
やりとりしたり、なんてことをできるようになりたいのですが、英語と
接する方法として「英作文」が私には向いてるのかな、と思いました。


そんなわけで、英作文日記はじめました:-)
ソースコード書かないでなにやってんだって感じですが、力配分を
考えつつ、英語もやってみますー。

RubyでもPHPでもいいのだけど、メーリングリストや掲示板をROMする
だけでもいいから、利用できるようになったら世界変わるだろうなぁ……。
と、夢見つつ、「これはぺんです」みたいなところからスタートします。

 ・hrkt0115311’s blog
  http://hrkt0115311.blogspot.com/


■ 編集後記
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「hrkt0115311の、教えて習うRuby教室。」を最後までお読みいただき
ありがとうございます。いかがでしたか?

今週は、1つ作って、1つ作り直して、あとは英語日記立ち上げてました。
動物本もちょっとずつ読んでます。あとは、漫画も読んでみたり。

しばらくぶりに、あだち充『ラフ』を読んだのですが、脳の中で美化
していたり、子供の頃読んだ時と、今とでは感じ方やドキドキ度が
違ったりはしましたけれども、再読してみてやっぱりこの作品好きだと
感じました^^

ではでは、また来週。

何かお気づきの点がありましたら、お気軽にご意見・ご感想をお寄せ下さい。
メールアドレスは enjoy.ruby@gmail.com をご利用下さい。
また、Twitter( https://twitter.com/hrkt0115311 )や
Wassr( http://wassr.jp/user/hrkt0115311 )でのコンタクトも
大歓迎です。フィードバック、お待ちしております。

それではまた、次号でお会いしましょう。

■ いただいた反響について
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「こんな仕組み作れないかな」とか「説明不足で分からないよ」といった
ご指摘をお寄せいただけると嬉しいです。みなさまの声で、メルマガを
育てていただければ嬉しいです。また、メルマガで、頂戴したメールの
一部を紹介させていただく可能性があります。差し支えがある場合は
「発行者のhtkt0115311に読んで欲しいだけで、メルマガには掲載しないで」
とお書きいただければ幸いです。

■ 転送や再配布について
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 blogなどでご紹介いただく際は、 http://www.mag2.com/m/0000267290.html
 などを並記していただき、私の書いた文章であることが分かる形に
 していただけると幸いです。またメルマガの転送については、転送者さんと
 転送したメルマガを受け取られた方が迷惑でない範囲であれば歓迎します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 メールマガジン「hrkt0115311の、教えて習うRuby教室。」

 ○発行者     htkt0115311
 ○発行システム  『まぐまぐ!』 http://www.mag2.com/
 ○配信中止はこちら http://www.mag2.com/m/0000267290.html
 ○公式サイト    http://enjoy-programming.g.hatena.ne.jp/hrkt0115311/
 ○日記       http://d.hatena.ne.jp/hrkt0115311/
 ○Twitter     https://twitter.com/hrkt0115311
 ○Wassr      http://wassr.jp/user/hrkt0115311
 ○お問い合わせ   enjoy.ruby@gmail.com

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
最新号をメルマガでお届け
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。

最近の記事

上へ戻る