« 2009年06月 | メイン | 2009年08月 »

2009年07月30日

yellowBird : VR Video

山田くん!山田くん!
これすごいよー

テンイチリュウ : yellowBird : VR Video
http://www.nitenichiryu.org/articles/yellowbird-release-vr-video-system

外人見放題っていう意味でも面白いけど笑

2009年07月23日

無闇やたらにアップデートはしない方が良いorz

ぎゃー!
CPANモジュールを一括アップデートしたら全てが文字化けした!!
先生に相談してUNIXコマンドを使って修正しました。もうヤダ。。
でも後々配布を考えているとなると、なるべくPerl内で処理したいですよね。
diffもそうだし、Perlモジュールもそうなんだけど。どうしたもんかなー。

県教センターからの依頼
Web::Scraperが上手く動作せず難航していたので、正規表現を使ってのデータ取得に切り替えました。
正規表現楽しいですね。マッチすると嬉すい。
ほぼ出来ていますが、メール送信部分だけ上手くいってないので早いとこ直します。
(多分単純なミスな予感)
で、上手くいったら他の2つも正規表現を使って取得しよう。

UIの話
実装済み
・メールの文字化け修正
・パスワードを暗号化して送る⇒忘れないうちにまとめをエントリーにまとめる。
・24時間を過ぎた仮登録の削除(→cronを使うにはどうしたらいい?)

また&&進行中
・パスワードリマインダ(パスワードをリセットするためのURLをメールで送る)
・ログインページ
・会員用ページの作成(+DB項目)

まだ&&優先度高い
・登録確認ページの作成
・テキストエリアにhtmlspecialcharsを設定
・ユーザー登録画面のエラー文の位置の統一
・httpsの実装
・メールアドレスの変更(ログイン後)

まだ&&優先度低い
・退会
・ログインエラー回数による、ログインロック
・同時ログイン制限

2009年07月21日

CPANモジュール一括アップデート

Web::Scraperを使って欲しいデータだけ拾おうとしているんですが、
Webサイトによって上手くいったり上手く行かなかったり。
今ターゲットにしているサイトは上手く行かないタイプで、XPATHを書いて取得しようとしても
最初の1件しかデータを取って来れない。
(何か書き方に問題があるのかな?原因不明。。。orz)

藁をもすがる思いでWeb::Scraperをアップデートしようと思ったんですが…
TerminalでCPANに入ったとたん何か言ってきた。
CPAN is the world-wide archive of perl resources. It consists of about
300 sites that all replicate the same contents around the globe. Many
countries have at least one CPAN site already. The resources found on
CPAN are easily accessible with the CPAN.pm module. If you want to use
CPAN.pm, lots of things have to be configured. Fortunately, most of
them can be determined automatically. If you prefer the automatic
configuration, answer 'yes' below.

If you prefer to enter a dialog instead, you can answer 'no' to this
question and I'll let you configure in small steps one thing after the
other. (Note: you can revisit this dialog anytime later by typing 'o
conf init' at the cpan prompt.)
Would you like me to configure as much as possible automatically? [yes] 

え?初期設定?前にやったはずだけど…と思いながらそのままEnter。
自動的にだーっとやってくれるんだけど、最後に以下の文章が。
 
If no urllist has been chosen yet, would you prefer CPAN.pm to connect
to the built-in default sites without asking? (yes/no)? [no]

Autoconfigured everything but 'urllist'.
Please call 'o conf init urllist' to configure your CPAN server(s) now!

これは参照URLを設定しろってことなのね、ということで。
CPAN> o conf init urllist
すると「URL入力して」って言われるので、ここら辺りから適当に近いとこをコピペ。

で、最後にそれを反映させる。
CPAN> o conf commit

多分これで設定はOK。
しっかし何も触ってないはずなんだけど、なんで再設定になったんだろう?

あとは本題のCPANモジュール一括アップデート。
su して root になってから行う。
# 古いモジュールを一覧表示
$ perl -MCPAN -e 'CPAN::Shell->r'
# 一括アップデート
$ perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'


2009年07月16日

暑いっすね…

とりあえず現状を整理してみる。

実装済み
・メールで本登録の成功
・タイムスタンプを押す(合ってる??)
・パスワードの入力制限(記号と文字数)
・メールアドレスの正規表現
・登録の項目を作って、仮登録なら0、本登録なら1にする
・メールアドレスをPRIMARY KEYにする⇒テストしたいので一旦外す

まだ&&優先度高い
・テキストエリアにhtmlspecialcharsを設定
・メールの文字化けを直す(またかー涙)
・ユーザー登録画面のエラー文の位置の統一
・登録確認ページの作成
・パスワードを暗号化して送る⇒ハッシュを使えば良いっぽい?このページを見ながら。
・httpsの実装
・ログインページ ※作成中
・会員用ページの作成(+DB項目)※作成中
・24時間を過ぎた仮登録の削除(→cronを使う模様。削除用programが必要?参考
・メールアドレスの変更
・パスワードリマインダ(パスワードをリセットするためのURLをメールで送る)
まだ&&優先度低い
・退会
・ログインエラー回数による、ログインロック
・同時ログイン制限


おまけ
macコマンド「say」を使ってちょっと面白いPHP書きました。


昨日の悲しい出来事
<?php
 if(冷凍庫開ける && ハーゲンダッツ){
  echo "幸せー!";
 }else{
  echo "無い…orz";
 }
?>

実行結果:無い…orz

※追記
今日根本くんが研究室に来て差し入れ=ハーゲンダッツを持ってきてくれました!
というわけで、実行結果:幸せー!

2009年07月15日

PHP内でSQL文を書くとき気をつけること

PHP内でmysql_query()を使ってSQL文を書くのがまだ慣れず、
ミスばっかするし複雑になるしで困ってたところ、以下のページを発見。

Mysql UPDATE出来ません
http://oshiete1.goo.ne.jp/qa3663217.html

回答者が言ってる通り、以下のことを意識して書くとミスが減る!
(1)SQL文はヒアドキュメントをつかう
(2)テーブルやフィールドはバッククォート、値はシングルクォートでくくる
(3)変数は{$hoge}形式で参照する
(4)SQL文の最後になるべく;はつけない
(5)エラーはmysql_error()で確認する。

因みに書き方の例としては、これもコピペになっちゃうけど
$sql=<<<eof
UPDATE `{$DATANAME}`
SET `rem`='{$new_rem}'
WHERE `id`='{$id}'
eof;

$result=mysql_query($sql) or die($sql.mysql_error());

因みにバッククォートは、[ Shift + @ ] で打てる。

2009年07月14日

MacOSX Leopard に Eclipse(PHP Development Tools)を入れてみる

Perlのコードを書いたり、最近はPHPなんかも書いたりしてますが、エディタはず〜っとmiを使ってます。
しかーし、miのPHPモードが個人的に凄く見にくくて。
配色とかが薄くてダメで、カスタマイズしようと思っていじったら、
いじり方が微妙に分からず更に酷いことに…orz

これなら標準の方がマシだ!と思って標準でやってたんですが、やっぱ見づらい…
(特に長いコードのファイルを開くとその威圧感に泣きそうになりません?>あっくさん)

という訳で、前からちょいちょい名を聞いていたEclipseをインストールしてみました。

インストールは簡単。私はMacOSX cocoaの方をDLしました。
(確かOSXってcocoaで作られてるんじゃなかったっけ?相性良いかな〜と思って。)
以下のページを参考にしました。手順が詳しいから助かるー。
symfonyで開発Blogさんのインストール日本語化

因みに日本語化のところで、初回の起動はTerminalから
/Applications/eclipse/eclipse -clean
しないとダメ的なことが書いてあったけど、
私の場合だとこのコマンド打ってもエラーが出てしまうので
仕方なくそのままEclipse.appダブルクリックで起動しました。
それでもちゃんと日本語化はできてたよ。

機能が沢山あるみたいで全然使い切れてないけど、
とりあえずPHPのコードは見やすくなったので、それだけでも快適。笑

あとは、Perlの時も含めてこれまでは
・コードを書いて保存→ブラウザで実行→エラーのオンパレードでチーン…orz
だったのが、Eclipseを使うことで
・コードを書いて保存→Eclipse「ここ間違ってない?」と教えてくれる
ので、無駄に凹まなくてすみそうです。

2009年07月12日

macでapacheが403 Permission Error

家のMacbookでphpを動かそうと思い、
サイトの中に作ったファイルを入れてlocalhostでアクセスしたら、
You don't have permission to access /~username/test.php on this server.
というエラーが起きて、見せてくれない。

macOSXでPHPを動かす@m6 Blogで書いた設定はきちんとできている。
パーミッションもきちんと設定してある。
それなのに何故??

調べたら、httpd.confの設定を変えることで解決できるのだそう。
参考:ヒジからヒザにかけてのラインさん

httpd.confの内にある記述、
「Deny from all」⇒「Allow from all」
に変更するとあったので、allowに書き直したところ見れるようになった。

一般的にはこれだと全部許可されるので、
ディレクトリごとにAllow from allするみたいだけど、
とりあえず今は全部でもいいや。


※追記
これで解決しない場合は、/etc/apache2/users に「ユーザ名.conf」が無いからかもしれません。
この問題はTigerなどからLeopardにアップグレードした時に起こる問題のようですが、
私はアップグレード関係なくこの問題に直面しました。
詳細は、「続・macでapacheが403 Permission Error」にて。

2009年07月03日

PHPに関することのメモ

ブログが続かないわけさんとこに、
PHPに関係して凄く参考になりそうなエントリーがあったのでメモしておく。
(しっかしWeb::Scraperの時もそうだけど、お世話になりっぱなし!)

初心者プログラマーが簡単なフォームを作るときにやりがちな6つのミス
ログイン処理が簡単と言い切れるか 〜 フィッシング対策も忘れずに
ログイン時にIDとパスワード以外の属性を聞くのはなぜ?


おまけ
僕の感じるPerlとPHPの最大の違い(差と言ってもいいかもしれない)

PHPでパスワードを扱う

PHPでパスワードを扱う時に、平文は論外。
という訳でちょっと調べてみたところ、一般的にハッシュが用いられているみたいです。
参考:オープンソースCMSでのパスワードのハッシュ化方法を調べてみた

これを見ると、昔はsalt(塩?)があまり使われていなかったけど、今は使ってると。
一般的に?MD5()よりもsha1()の方が良いハッシュ関数らしい。
sha1()+saltで作るのが今の主流なんですかね??

参考:
SHA1でハッシュ化したパスワードは危険になった(2007.1.25)
[PHP]パスワードのハッシュ化にはcrypt を使ってはいけない


MacOSに喋らせてみる。

気分転換に外人に片言喋らせて遊んでたりしてたんだけどw
$ say watashi wa nihon jin death
$ say sensei watashi kaeri math

女の人の声ってないのかな〜と思って調べてみたら、何かいっぱいいたw
$ cd /System/Library/Speech/Voices/
ls
---
Agnes.SpeechVoice	Boing.SpeechVoice	GoodNews.SpeechVoice	Ralph.SpeechVoice
Albert.SpeechVoice	Bruce.SpeechVoice	Hysterical.SpeechVoice	Trinoids.SpeechVoice
Alex.SpeechVoice	Bubbles.SpeechVoice	Junior.SpeechVoice	Vicki.SpeechVoice
BadNews.SpeechVoice	Cellos.SpeechVoice	Kathy.SpeechVoice	Victoria.SpeechVoice
Bahh.SpeechVoice	Deranged.SpeechVoice	Organ.SpeechVoice	Whisper.SpeechVoice
Bells.SpeechVoice	Fred.SpeechVoice	Princess.SpeechVoice	Zarvox.SpeechVoice

とりあえずVictoriaは女の人だろうな〜。
$ say -v Victoria usb memory oh o curry si math

Perlとかでエラーが起きたときとか喋らせたら面白そうだけど後々イラっとしそうw
$ say file ooh he ra k ma sen

さぁ続きやるか。。

2009年07月01日

no title

やったこと
・PHPをガシガシ書いた

これからやるべきこと
・メールアドレスをPRIMARY KEYにする
・パスワードを暗号化して送る⇒ハッシュを使えば良いっぽい?
・テキストエリアの全角弾き
・メールアドレスの正規表現
・メールで本登録の成功
・タイムスタンプ
・登録の項目を作って、仮登録なら0、本登録なら1にする
・メールアドレスの変更
・パスワードリマインダ
  ⇒パスワードをリセットするためのURLをメールで送る
・退会
・DBの項目を考える
・会員用ページの作成(1枚作ってユーザーごとにDBから読み込む形?)