小枝から幹をめざして

今は小枝しか拾えてないけどいつか幹にたどり着くんだ。個人的な勉強の忘備録PHP,MySQL,javascript

【自分用】URLを管理するシステムを作る

MySQLの話。url文字列をtextのカラムに入れようとしたら
#1170 - BLOB/TEXT column 'url' used in key specification without a key length
というエラーが出た。
TEXT型カラムにUNIQUEキーは張れない
http://www.deftrash.com/blog/archives/2009/11/mysql_keylength.html

http://hamamuratakuo.blog61.fc2.com/blog-entry-963.html
このようにハッシュ値を格納した別カラムにUNIQUEキーを張れば良い。

ハッシュについて勉強。
http://d.hatena.ne.jp/ryster/20110615/p1
>パスワードとかをDBに生で保存するのはほんとやめましょう。
…すみません。

ハッシュの種類
http://sehermitage.web.fc2.com/crypto/digest.html

web上で様々な種類のハッシュ計算ができる
http://good-tool.net/webtool/wt11hash.php

なるべく見ないようにしていたvarcherのサイズ問題
varcher(x)のxはバイト数なのか文字数なのか…
http://togetter.com/li/54358
http://oshiete.goo.ne.jp/qa/1778566.html
ここを見ると半角文字(1バイト文字)と書いてある。あ、でもこれは2005年の質問か。

今はマルチバイト文字数が入るとどこかで読んだはず!
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1197858716
>MySQL5.0.3以降、varcharは文字数です
うん、やっぱりね。カラムに設定してある文字セットの文字数が入るのであって、バイト数は関係ないと。

今回はハッシュ値(1バイト文字)を入れたいのでvarcher(128)

http://kaworu.jpn.org/kaworu/2008-04-02-2.php
mhash?なんだそれ。

http://stackoverflow.com/questions/1996934/in-php-what-is-the-difference-between-hash-and-mhash
「気にするな。mhashはもはや時代遅れだ」
と書いてある気がするので、mhashでなくhashでやることにする。

<?php
$sha512 = hash(sha512, $url);
//128byteのハッシュ値が帰ってくる
?>