php・mySQLの技術的なお話です。

これまで、mysql_connectでSQLを呼び出していたのですが、SQLインクリジョン対策がめんどくさい。とにかくめんどくさい。

「この平成の世の中で、こんな原始人みたいなチマチマした作業をする必要があるのだろうか、、、?」

と、疑問が湧いてきたので調べてみました。
すると驚くべき事実。


mysql_connect:この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。
PHP: mysql_connect - Manual


マジか。
知らんかった。←不勉強すぎ


で、調べてみるとPDOを使ってmySQLに接続するとSQLインクリジョン対策が楽と分かったので早速お勉強。
mysql - PHP での SQL インジェクション対策はどのように行いますか? - スタック・オーバーフロー

まぁ、楽勝ですわ。
『余計なことせんと、言うた通りにしたらええねん。』
と、天の声が聞こえてきそうなほどさくさくコーディングが進みました。


〜本題はここから〜


エラー周りのデバッグをしていると、どういう訳が下記のSQL文をprepareに突っ込むと、サーバが500エラーを返してくる現象に気が付きました。

$sql = "SELECT * FROM 存在しないテーブル名";
$sth = $pdo -> prepare($sql);

SQL文が間違っているからといって500エラーになるというのは、mysql_connectではなかった現象です。
「そもそも、テーブルが存在するかしないかは実行しないと分からんやないかいッ!!」

回避策を探そうにも、『テーブルが存在しなければprepareしない』という鶏が先か卵が先か的な問題で手詰まり感が半端ない。

「#php で #PDO を使って #mySQL に接続した時に、存在しないテーブル名を含んだ #SQL 文を #prepare に放り込んだ時に、500エラー出て止まるのはなんでか誰か教えろください。存在するテーブル名だと問題なく動くんですよ。」と、ツイッターに投げてみるも誰も返事なし。

「!! もしかして、そもそも、どこかでそういうエラーレベルをコントロールする設定があるのではないか?」

と、思いついてphp.iniをチェック。
ハズレ。

自分の書いたphpの1行目からよーく見てみる。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

エラーモードって書いてあるね。
調べる。
PHP: エラーおよびエラー処理 - Manual


『デバッグ時に有用で、エラーが発生した時点で スクリプトの実行を停止させることによりコード内の問題点を 見つけやすくなります』
『// このテーブルが存在しないとして、このコードを実行すると E_WARNING レベルのエラーになります。例外にはなりません。』


ちゃんとマニュアルに書いてあるね。
デバッグ用の設定してたらそりゃぁ止まるわね。


// $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
こうしたら動きました。

Twitterの高度な検索で使われてるものと一緒。
リツイート数やお気に入り数といったことで絞込が可能。

「条件1 条件2」 条件のAND演算(両方の条件に当てはまった発言)
「条件1 OR 条件2」 条件のOR演算(どちら片方、もしくは両方に当てはまった発言)
「-条件」 条件の否定。この条件を除外する
「"単語1 単語2"」 「単語1 単語2」「単語1_単語2」「単語1-単語2」などのフレーズにマッチする。「単語2 単語1」は除外。
また、半角スペースを含むアプリ名などをフレーズでまとめて指定できる。
「from:ユーザ名」 このユーザが投稿した発言
「-from:ユーザ名」 このユーザが投稿していない発言
「to:ユーザ名」 このユーザへのリプライ。つまり先頭の「@ユーザ名 」から始まる発言
「-to:ユーザ名」 このユーザへのリプライ以外の発言。
「@ユーザ名」 このユーザへの言及(mentions)。つまり内容に「@ユーザ名」を含む発言
「-@ユーザ名」 このユーザへの言及(mentions)以外の発言。
「#タグ名」 このハッシュタグを含む発言
「-#タグ名」 このハッシュタグを含まない発言

「filter:links」 URLを含む発言のみ。
「-filter:links」 URLを含まない発言。
「include:links」 URLも含む発言。
「exclude:links」 URLを含まない発言。

「filter:hashtags」 ハッシュタグを含む発言のみ。
「-filter:hashtags」 ハッシュタグを含まない発言。
「include:hashtags」 ハッシュタグも含む発言。
「exclude:hashtags」 ハッシュタグを含まない発言。

「filter:replies」 リプライを含む発言のみ。
「-filter:replies」 リプライを含まない発言。
「include:replies」 リプライも含む発言。
「exclude:replies」 リプライを含まない発言。

「filter:retweets」 公式/非公式retweetを含む発言のみ。
「-filter:retweets」 公式/非公式retweetを含まない発言。QT形式は含む。
「include:retweets」 公式/非公式retweetも含む発言。(デフォルト)
「exclude:retweets」 公式/非公式retweetを含まない発言。QT形式は含む。

「source:アプリ名」 このアプリケーション(クライアント)で投稿された発言。
公式Webは「Web」ツイートボタンは「tweet_button」
「-source:アプリ名」 このアプリケーション(クライアント)で投稿されていない発言。
「lang:言語コード」 この言語の発言のみ。「lang:ja」で日本語の発言。
「until:YYYY-MM-DD」 指定日付以前の発言。YYYY-MM-DD形式で年月日を指定。
「since:YYYY-MM-DD」 指定日付以後の発言。YYYY-MM-DD形式で年月日を指定。
「place:opentable:ID」 OpenTableIDで指定した地域からの発言(地域情報を送っている人のみ)
「place:geocode」 geocodeで指定した地域からの発言(地域情報を送っている人のみ)
「near:地域」 その地域の発言。「near:Tokyo」など。APIでは使えない。関係ない発言が拾われることもある?
「within:距離」 nearと組み合わせる。その地域から指定距離内の発言。「within:15km」など。APIでは使えない。

「青空をバックに撮影したかったのに、当日は薄曇りだった」という残念現象が風景写真の現場ではよくあることと思います。
で、薄曇りを現像で少しでも晴れに持って行こうというのが今回の趣旨。
現像ソフトはAdobe Photoshop Lightroom 5を使います。


20131015233953.jpg
ゴールはここです。

1)元画像
20131015233714.jpg
撮りっぱなしの画像です。
現場で見えてた風景もこれとほぼ同じで残念なぐらいの薄曇りでした。
人っ子一人いない満開の桜という好シチュエーションなのにね!

2)色温度&プロファイル補正
20131015233800.jpg
20131015234041.jpg
色温度は薄曇りですが若干だけ青にふっておきます。
なぜかというと後で青空を作るから。(実はこれが今回のハイライト)
僕は安い安いレンズを使ってるためレンズの歪みが酷いのでプロファイル補正も一緒にかけておきます。
あとは画像内のゴミの除去をプチプチと。。。

3)カラー調整
20131015233940.jpg
20131015234218.jpg
 強制的に青空を作る作業です。
 色温度を青に降っているので本来グレーだった部分が青くなっています。これをブーストします。
 スライダーで彩度と照度のブルーをおもいっきり動かします。
 今回は桜の写真なので、花の色や新緑の色を一緒に微調整します。

4)ハイライト・シャドウ調整
20131015233953.jpg
20131015234237.jpg
 もっと明るい感じに仕上げたかったので、上記の設定にしました。
 以上で現像設定は終わりです。
 これで天候に恵まれなくても安心ですね!

20130712234040.jpg
スマホ用のページを作りましたよ。
CSSで切り替えるのでアドレスは全く同じです。
んで、ついでにFacebookのシェアボタンとかつけてみたり。

個人的にメモ
それぞれTerminalで下記のコマンドを入力すればOK。


・通知センターを非表示に
launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist

・Spotlightを非表示に
※コマンド入力後要再起動
sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search


元に戻すには、

・通知センターを表示に
launchctl load -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist

・Spotlightを表示に
※コマンド入力後要再起動
sudo chmod 755 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search

20130705084537.jpg電車の中吊りみてたら、AneCanのキャッチコピーでちゅん顔と言うキーワードを見かけ、気になって調べました。
上にある写真みたいな表情のことらしいです。
簡単に言うと、

・メイク薄め
・上目使い
・口を少し開けて口角を上げる

がポイントだそうで。

20130705084942.jpg

、、、それって、デイブ・ムステインのキメ顔だよね。

DSC_1507.jpg先日、『日本のマチュピチュ』とか『天空の城』と言われる有名な史跡である竹田城跡に行って来ました。

霧の中に浮かぶ幻想的な写真を押さえるためには早朝に現地でスタンバイする必要があります。

大阪を夜中の2時に出て2時間ほどで竹田城跡の無料駐車場に到着。そこから15分ほど山路を登って行くと竹田城跡に出ます。
電車の場合は山のふもとから登る事になりますが、駐車場は山の中腹にありますので撮影目的であれば車の方がだいぶ楽です。

当日の天気は微妙な曇り空。
道中の高速道路で見た霧は幻覚だったのかと言うほど、空気が澄んでいました。

DSC_1516.jpg
なので、『天空の城』と言うよりは『丘の上の城』感が半端なかったです。
現場では分からなかったのですが、現像時にデータ上に薄く霧が残っている事に気が付いたので、Lightroomで霧を持ち上げて『天空の城』感を出しました。
目で見た風景と全く違う仕上がりになりました。現像ってすごい。

時期が良ければ雲海に浮かぶシチュエーションもあるらしいので、機会を見つけて再チャレンジしたいと思います。

DSC_1591.jpg
DSC_1642.jpg
DSC_1714.jpg

photo.jpg
ネットで話題になってるサイレントイヤホンピースを買ってみました。
注文が殺到してるのか、注文から5日ほどで届きました。


詳しい情報はメーカーのページを見れば分かるんですが簡単に説明しますと、

1)イヤホンピースが耳栓になってる
2)それだけだと音質がこもるので、別途用意された音質改善ソフト(以下、UBiO)で音質を改善する

という商品です。

で、以下に実際使ってみた感じをまとめます。

・まさに耳栓。どれくらい音が消えるのかは耳栓と同じと考えて問題ないです。
・電車の中で使用しても周囲の雑音がノイズリダクションイヤホン(SONY MDR-NC33)と同等くらい軽減されていました。
・UBiOの機能は色々と用意されていますが、サイレントイヤホンピースで失われた音を持ち上げるだけでしたらボタン一つです。
・ただし、UBiOがないとただのこもったイヤホンができるだけ。

安価で静寂なリスニング環境を作るには良い商品じゃないかな、と思います。

サイレントイヤホンピース
http://www.soundscience.co.jp/products/SilentPiece/

音質改善アプリ UBiO for iPhone
http://www.soundscience.co.jp/products/UBiO/

JN-511.jpg
普段はコンタクトレンズを使用しており、これまでも眼鏡をかけて生活したことがなかったのですが、花粉の季節に入りやたらと目に違和感を感じた事と、以下の記事を読んだことにより眼鏡デビューを決意したんですよ。

視力検査医の大学が行った調査によると、面接の際に眼鏡をかけていると、面接官の印象がよくなりそうだという結果が導き出されたそうです。
回答者のうち3分の1の人たちは、メガネを着用している人はより専門知識に詳しそうに見えると回答し、また43パーセントの人たちが、メガネをかけているとより知的に見えると答えたそうです。
就活の面接時にメガネをかけると好印象を与えられる可能性がアップする - GIGAZINE

面接の予定はないですけど印象が良いと言われたことがありませんので、ちょっと気になります。
いや、だいぶ気になります。

〜はじめに〜
前回iPhoneの画面を割ったのが2010年10月30日
あれから我が子もすくすく育ち、立って歩くようになりました。
そんな我が子の成長を見守る父親はちっとも成長しておりません。

ま た i P h o n e の 画 面 を 割 っ て し ま っ た

今回で3回目です。
年に1回は割ってる計算になります。トホー

原因は1回目と同じで車から降りるときにコートのポケットから滑り落ちました。
ちなみにこれまでに車の乗り降り時に壊したものは以下の通りです。

iPhone3Gの画面
NIKON D300本体
iPhone4の画面 ←NEW!

駐車場のコンクリートをはがそうかしら。。。

このブログを書いてる人

Te2 名前 Te2
現在地 大阪
自己紹介 広告デザイナで遊ぶの大好きで食べるの大好きで運動も好きで楽器を演奏するのも好きで本を読むのも好きで写真撮るのも好き。▼出身は長崎県で第二の故郷は香川県で現在は大阪。
tumblrfollow me!flickrこのブログのRSSフィードを取得

カコログ

移行前の過去のコンテンツはこちら

月別 アーカイブ