たとえば絞込検索などで、1文字入力されるごとに検索処理を実行させたいとき、
イベントのトリガーには
1 |
onInput |
を使用します。
1 |
.addEventListener('input', 関数 ); |
jQueryなら
1 |
.on('input', 関数 ); |
在宅プログラマーの備忘録として2005年に始めたブログです。
たとえば絞込検索などで、1文字入力されるごとに検索処理を実行させたいとき、
イベントのトリガーには
1 |
onInput |
を使用します。
1 |
.addEventListener('input', 関数 ); |
jQueryなら
1 |
.on('input', 関数 ); |
PHPでdateやstrtotimeで取得した現在日時が9時間ずれているときは、
日本ではないタイムゾーンが設定されている可能性があります。
まず確認すべきは php.iniのdate.timezoneの設定です。
1 |
date.timezone = Asia/Tokyo |
になっていない場合は修正します。
もしレンタルサーバーなどの制限でphp.iniが編集できない場合は、コード上で
1 |
date_default_timezone_set('Asia/Tokyo'); |
でタイムゾーンを設定できます。
ほとんどの場合はこれで解決なのですが、
たまに、外部ライブラリを使用していると
上記のようにタイムゾーンを指定しているにも関わらず
時間のずれが直らない場合があります。
そんなときは、strtotimeでずれた分だけ時間をずらし返してやりましょう。
1 |
$now_date = date('Y-m-d H:i:s', strtotime('+9hour')); // 9時間遅れていたとき |
スマートではないかもしれませんが
こういう臨機応変な対応もときにはアリだと思います。
PHPExcelはPHPでExcelのブックやシートを読込み、作成、出力できるライブラリです。
CSVではなくExcelで出力することで
はじめから可視化しやすい形で出力できるのですが、
データ量やシートの複雑さによっては
出力にかなり時間がかかるようになってしまうことがあります。
もし何も考えずにループの中で
1 |
insertNewRowBefore |
や
1 |
getStyle |
を多用しているならば、チューニングによって
劇的に速くなるかもしれません。
例えば、帳票の出力などでは動的に行が増える場合が多いと思いますが、
ループの中で
1 |
insertNewRowBefore(2, 1) |
のように1行ずつ追加していくような処理は、
かなりパフォーマンスが悪いようです。
そういうときには、追加する行数を計算してから
1 |
insertNewRowBefore(2, 行数) |
を1回実行することでパフォーマンスが向上します。
もし行数を計算するためだけに追加でループさせる必要があったとしても
1行ずつ
1 |
insertNewRowBefore(2, 1) |
を実行するよりははるかに速い場合が多いようです。
また、
1 |
getStyle |
も、もしループの中で同じスタイルを1行ずつ実行しているのならば、
できる限りループの外で一括で実行することで
劇的にパフォーマンスが向上する可能性があります。
私の場合、実際にExcelで帳票を出力する場面があったのですが、
何も考えずに実装したときと、上記のとおりチューニングした場合とでは
10倍くらいの差がありました。
CentOS6、PHP5.3.3の環境でpecl_httpをインストールしようとしたところ、こんなメッセージが出ました。
1 2 3 4 5 6 7 |
# pecl install pecl_http pecl/pecl_http requires PHP (version >= 7.0.0), installed version is 5.3.3 pecl/raphf requires PHP (version >= 7.0.0), installed version is 5.3.3 pecl/propro requires PHP (version >= 7.0.0), installed version is 5.3.3 No valid packages found install failed |
最新バージョンのインストールにはPHP7.0.0以上が必要なようです。
しかしいくつものサービスが稼働中のサーバーでしたので
PHPのバージョンを上げるにはリスクがありました。
調べたところ、最新ではない古いバージョンのpecl_httpなら
インストールできるらしいので試してみました。
1 |
# pecl install pecl_http-1.7.6 |
すると先程のメッセージは出ず、処理が進んでいくので
インストールできたー
と思ったら、次のようなメッセージで止まりました。
1 2 |
configure: error: could not find curl/curl.h ERROR: `/var/tmp/pecl_http/configure --with-http-curl-requests --with-http-zlib-compression --with-http-magic-mime=no --with-http-shared-deps' failed |
curlを入れろということらしいので
curlを入れます。
1 |
yum install curl-devel |
そして再び
1 |
# pecl install pecl_http-1.7.6 |
これでインストールできました。
あとは /etc/php.ini に下記を追加します。
1 |
extension=http.so |
これでwebサーバーを再起動すればOKです。
viではブックマーク機能(mコマンド)を使って複数行を一括削除できます。
まず、削除したい最初の行と最後の行にマークをつけます。
マークをつけるのはmを押した後、任意のアルファベットですから、
たとえば最初の行で
1 |
ma |
と打ち、最後の行で
1 |
mb |
と打ちます。
次にコロンを打ってコマンドモードにして、
1 |
'a,'bd |
と打ちます。
「’最初のマーク,’最後のマークd」ですからわかりやすいですね。
これでaというマークを付けた行から
bというマークを付けた行までが一括削除されます。