6698 | 二つの発見 | はくぶん | 2015-06-23 02:16:48 |
昨夜はいくつか新しい事を発見した一夜だった。 1)SQLのDSNにオプション設定項目 前々からあることは知っていたが、何に使うのかわからなかったので、設定した事がなかった。 昨夜、CGI側ではなくSQL側でUTFフラグをONに出来ること知り、俄然このDSNに興味が湧いた。 DSNのオプション項目に“mysql_enable_utf8”と記述すればいいらしい。 現在のスクリプトは、すべてCGI側でUTFフラグをONにしている。 今からすべてのDSN文を変更するのは面倒だし、エラーが誘発される恐れもあるので、次回何かを作る時から、SQL側でUTFフラグをONにするようにしよう。 2)UTFフラグをONにする SQLから読み出したデータは、そのままだとUTFフラグがOFFのままだから、decodeしてUTFフラグをONにする必要がある。 SQLから読み出すデータは、配列になっていることが多いので、最近は配列のリファレンスで受け取るようにしている。 以前は配列で受け取っていたが、どこかのQ&Aサイトを見たとき、皆配列のリファレンスで受け、誰も配列で受け取っている人がいなかったので、そういうものなのかと思って、それ以降、俺も配列のリファレンスで受け取るようにしている。 配列で受けようと、配列のリファレンスで受けようと、その後にdecodeという作業が来るわけだが、decodeは変数単位(配列なら要素単位)の作業なので、配列を一発ドンでdecode出来ない。 俺はforのループで回して、要素単位でdecodeしていた。 しかし、map関数を使えば、一発ドンでdecode出来ることを知る。 一発ドンと言っても、実際には要素単位でdecodeしているのだが、ループで回すわけではないので、要素を一つずつdecodeしているという印象はない。 今まで4行使って書いていた部分が、1行で済んでしまった。 パフォーマンス的には変わらないのかもしれないが、コードが見た目にシンプルで美しい。 というわけで、昨夜はF1を観戦し、その後、ナショナルジオグラフィーを観ながら、二つの新たな発見を楽しんだのであった。 |
|||
メッセージ文字数:887/907 | |||