page_adsence

2012年12月17日月曜日

MySQLのIN句のインデックスに関して

IN句はインデックスが使用されない。
なぜかというと、1レコードごとに全レコードの値を取ってきているから。

あと、インデックスの使うためには、本来あるフィールドに対して、関数を利用したものと比較する際には、インデックスは使用されない。

これはインデックスが使われる
TO_CHAR(YYYY-MM-DD, 'YYYYMMDD') = 20121217

本来は逆であるべきだが、

YYYY-MM-DD = TO_DATE('YYYYMMDD')

みたいなのはインデックスが使用できない。Oracleの場合はfunctionIndexが使えるので、それで対応できるらしい。

2012年3月22日木曜日

word-breakに関して

普通、半角英数字に関してはブラウザで折り返ししてくれないのですが、
それを折り返すために以下のように書いたりするのですが、
IE独自の仕様のためFirefox等のブラウザでは別途対応が迫られてしまいます。

.word_break {
    word-break: break-all
}

で、折り返しをするためにJavascriptを使うのが定石だと思っていたのですが、
CSSの記述だけでいけるってのを教えてもらって、それを何度か使っていたくせに
毎回書き方を聞かれて忘れているのでメモしておく。

.word_wrap {
    word-wrap: break-word;
}

若干情報が古いですが、よくまとまっているので参考。
http://blog.sakurachiro.com/2010/06/control-break/

2012年3月16日金曜日

mkdirは実は再帰的にディレクトリを作ることができたらしい

今まで知らなかったけど、実はmkdirはphp5から再帰的にディレクトリを作ることができるみたい。

なので早速やってみた。

使い方は以下の通り。
mkdir(ディレクトリのパス, パーミッション, 再帰処理フラグ);

mkdir('/path/to/dir', 0775, true);

こうすると「/path/to/dir」へのディレクトリが一気に作成される。
ちなみに、「/path/to」までのディレクトリが存在していても、エラーになるわけではないみたいです。

もうphp4で開発する機会も大分減ってきたし、がんがん使っていこうと思います。

2012年3月15日木曜日

Firefox11のページインスペクタが3Dで見ると面白い

先日、帰り際にFirefox11がリリースされているってのに気づいたので、早速アップデートしてみた。
とりあえず必須アドオンだけ動くのを確認してアップデート。

で、リリースノートを見てみたらすごいよくわからない機能があった。

「Google Chrome から、ブックマーク、履歴、Cookie を
インポートできるようになりました。」

ふむ、まぁ便利だね。

「Firefox Sync でアドオンを同期できるようになりました。」

これも会社と自宅のアドオン同期できるようになるので、まぁ便利だ。

「ページインスペクタの 3D ビュー を使って、
Web ページの構造を立体的に視覚化できるようになりました。」

ん??

3D??

3Dにする必要あるのか?と思いながらも、早速使ってみました。
使ってみた感想としては・・・。

すごいっ!!

Webページ構造を立体的に見るとこういう風に見えるのかと。
なんかpositionとかマイナスにして画面外に吹っ飛ばしている要素まで、
ぐるぐる回していると見つかってしまいます。
試しにYAHOOとかGmailのページにアクセスして使ってみたのですが、面白いです。
非常に。
これから無駄に使っていこうと思います。

ちなみに使い方は以下の通り。

1.ブラウザ上で右クリックしてコンテキストメニューを表示させる
2.要素を調査
3.すると画面右下に3D、HTML、スタイルと3つのボタンが並んで出てくるので、3Dをクリック。

そうするとこうなります。


以上。
簡単ですね。

2012年3月14日水曜日

JsonpでAjax通信時にネットワーク系のエラーが発生した際のエラーハンドリング

Twitterからタイムラインを取得してきて、表示するという単純な処理を書いていたのですが、
IP別に1時間のリクエスト数が150を超えると400 Bad Requestとなってしまうため、
callback関数が呼ばれずに処理が途中で終了してしまうという現象に遭遇した。

てっきりJSONPの場合もerrorとかの関数も呼ばれていると思っていたのですが、そうではない様子。
試しにerrorとか書いてみても全く反応なし・・・。

調べてみたらどうやらJSONPの場合はsuccessとcomplete以外はコールされないらしい。
とりあえずググってみたら、案の定出てきました。

「jquery.jsonp.js」

これを使えば普通にエラーハンドリングができそうです。

$.jsonp({
    url: "http://hoge.jp/",
    callback: "callback_function_name",
    success: function(json) {
       // This will be called in case of success no matter the callback name
    },
    error: function() {
       // This will be called in case of error no matter the callback name
    }
});

jqueryを使って配列をPOST

一番簡単な方法は対象のフォームを要素をセレクタで選択してシリアライズしてPOST。
あとはサーバサイドでよしなにすればOK。

Jquery
var postData = $('form').serializeArray();

$.post(
    'index.php',
    postData,
    function(data){
        console.log(data);
    }
);

php
var_dump($_POST);

但し、通常のフォームでPOSTされてきたように送りたい場合はJS側で色々と手を入れないといけない。
ソースに関してはその部分が出来次第公開予定。

2012年3月13日火曜日

mysqlに接続できない

会社で用意してもらったテスト用のサーバでローカル上のmysqlを使おうと思ったら
以下のようなエラーで出て接続ができなかった。

$ mysql -uroot
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

とりあえずググってみたら、mysqldが起動してない可能性があると。
で、psコマンドで調べてみた。

$ ps aux | grep mysqld

いない・・・。

じゃあmysqlを起動させようと思って、
$ /etc/init.d/mysqld start

へ移動しようと思ったらmysqldが存在してない!

mysqlコマンド自体は使えるから、インストールとかに失敗してるのかと思って、
何度かアンインストールしてから、再インストールしてみたりとかしたのですが、状況は変わらず・・・。

なぜかわからず、ググり続けてみたらありました。
mysql-serverがインストールされていないんじゃないかという・・・。

というか、よくよく見てみたら結構色々とインストールされていなかった・・・。
mysql-serverだけでなく、php-mysqlとかも入ってなかった。
勝手に使える状態だと思っていたのですが、確認は大事ですね。

2012年2月29日水曜日

SimpleXMLElementを配列に変換(簡易版)

SimpleXMLを配列に変換するのがどうにもこうにも面倒くさいなーと思っていたのでググってみた。

$array = json_decode(json_encode($SimpleXMLElement), true);

この1行のソースで対応可能らしい。
但し属性等がある場合には使えないので、そういう属性がつかないことが保障されている場合には使える。
1行でいけるのは結構便利だなー。

2012年1月26日木曜日

iPhoneでYoutube等の動画をバックグラウンド再生する方法

Youtubeやニコニコ動画等にあがっている作業用BGMを再生したい場合、
画像はずっと変わらないのに、ディスプレイをつけっぱなしにしないといけないので、
ちょっと触れただけで、いろいろと面倒くさいことになるし、
バッテリー消費がすざましいことになってしまいます。

しかし、ディスプレイを消そうとして電源ボタンを押してスリープ状態にしようものなら、
問答無用で再生が止まってしまいます。

じゃあどうするのか?

1.Youtube等で動画を選んで再生する。
2.ホームボタンを押してアプリを終了させる。
3.ホームボタンダブルクリックでタスクバーを表示させる。
4.フリックしてipodコントロールの画面を表示させる。
5.再生ボタンをタッチ

こうするとYoutubeの動画をバックグラウンド再生することができます。
これ、ものすごく便利です。
普通に再生するよりはバッテリーを喰いますが、
画面に触っても問題ないので、ポケットとかに入れて再生が可能になります。

2012年1月10日火曜日

mysql_real_escape_stringはMySQLの接続を確立していないと使えない

CSVを取り込む際にmysql_real_escape_stringを使ってエスケープする処理を入れていたのだが、
処理の順番を変更した際に、なぜかWarningが出てくるようになってしまった。
何かと思って原因を調べてみたら、MySQLと接続していなかったのが原因だった。

確かに、よく考えてみたらmysqlとの接続を確立できてないのに、
phpからmysqlの関数呼ぶことなんてできないよなーと納得の回答。

mysql_real_escape_stringを使う前にmysql_connectするように修正したんですが、
いまいち綺麗に書けてる気がしない・・・。
もうちょっと考えてソースを書こう。

2012年1月4日水曜日

久々にバスツアーでスノボに行ってきた。

学生の頃以来のスノボバスツアーに行ってきた。
行き先は野沢温泉だったんですが、夜23:00に出発して到着したのはなんと9時過ぎ。
そこからレンタルを借りにいったら、さらにそこでも待たされること30分。
結局滑り始められたのは11時過ぎ。
しかも帰りのバスの出発時刻は14:10。
1泊のツアーだったけど、結局1日分くらいしか滑れてないというなんとも悲しいツアーでした。

とはいえ、乗ったバスの品質はちょっと上がってた気がする。
たまたま一番後ろの席だったせいもあるのかもしれませんが、
長時間座っていたけど、ケツが痛くなることもほとんどなかったし、
窓際の席だったけど寒いと思うことはありませんでした。
つか、逆に熱すぎて寝れなかった・・・。