Tomo のすべての投稿

(PHP) エラーログの保存先を一時的に変更する

目的別にPHPのエラーを別の場所に保存したい場合などに使います。
php.iniを編集せずに一時的に変更できます。ただし、syntax errorなどはini_set実行前に評価されるため、通常の場所に保存されます。

//画面にエラーを表示させない
ini_set(‘display_errors’, 0);
// ログに記録する
ini_set(‘log_errors’, ‘on’);
// ログの保存先
ini_set(‘error_log’, ‘/log/php_error.log’);

通常とは違う場所(ファイル)に分けて保存できます。書き込みができるよう、ディレクトリのパーミッションは適宜変更してください

QNAP TS-131にCrashplanをインストール

QNAP TS-131にCrashplanをインストールしました。Crashplanは有志の手でアプリが作られているので、簡単にインストールすることができます。

今回の環境は以下の通りです。

  • QNAP NAS TS-131 ファームウェア v4.1.3 build 0408
  • JRE_ARM 8.6
  • Crashplan v4.2.0 x31 ARM (CrashPlan_4.2.0_35_arm-x31.qpkg)

続きを読む QNAP TS-131にCrashplanをインストール

Lightroom CCが起動しない

本日(2015/4/22)にAdobe Lightroom のバージョンアップがありました。Lightroom 5(5.7.1)から、CCへと表記も変更になりました。Creative Cloudで契約しているので早速インストールしましたが、デスクトップに現れたアイコンを何度ダブルクリックしても、起動しません。タスクマネージャを確認しても、1,2秒プロセスが表示されては消えてしまいます。環境はWindows8.1 64bitです。 続きを読む Lightroom CCが起動しない

QNAP TS-120とTS-131の比較

QNAPのNAS TS-120を以前から使っていましたが、もう一台追加導入することとなり、TS-131を購入しました。TS-120の後継で、CPUが変更され、デュアルコアになっています。動作周波数こそ、1.6Ghzから1.2Ghzになっていますが、処理速度は向上しています。

とりあえず、NASとして機能させるためにネットワークに繋ぎ、CrystalDiskMarkでベンチマークをとってみました。 続きを読む QNAP TS-120とTS-131の比較

Pentax Kマウント 防塵防滴レンズ一覧 (2015春)

Pentax 防塵防滴レンズ一覧の2015年春版です。(以前のエントリ:2012年版,2014年春版)(2016年版を更新しました。「Pentax Kマウント 防塵防滴レンズ一覧(2016春)」

Pentaxの現行製品で防塵防滴(簡易含む)をカタログで謳っているレンズの一覧です。
ボディは現行では K-3、K-50、K-S2が、過去の機種ではK-5Ⅱ、K-5Ⅱs、K-5、K-30、K-7等も防塵防滴です(それ以前にも存在します)。

WRが防滴(簡易防滴)、AWが防塵防滴です。DA★シリーズは型番に表記はありませんが防塵防滴です。(以前のエントリでは簡易防塵防滴としていましたが、Pentax公式に合わせて簡易防滴という表記にしました。)

続きを読む Pentax Kマウント 防塵防滴レンズ一覧 (2015春)

QNAP NASのジャンボフレーム設定

QNAP NAS TS-120のパフォーマンスが以前より悪くなっている気がしたので、いろいろ試したところ、ジャンボフレームの設定に問題があったことがわかりました。Gigabit Ethernetにも関わらず、NASからの読み出しで10MB/sを切り、3MB/s程になることもありました。 続きを読む QNAP NASのジャンボフレーム設定

(PHP) 文字列から改行を削除(または置き換え)するときの方法と比較

文字列から改行を削除します。

ご存じの通り、改行コードはUnix系がLF(\n)のみ、DOS系(Windows系)がCR+LF(\r\n)、Mac系がCR(\r)のみとなっています。

PHPでこれらを置換しよう思った場合、改行コードがいずれか一つであることが明確なら良いのですが、なかなかそうはいきません。

置換に使う関数はいくつかありますが、str_replaceとmb_ereg_replaceを比較しました。str_replaceは文字列の単純な置換を、mb_ereg_replaceはマルチバイト対応、正規表現で一致する文字列の置換を行います。

改行の消去と置換では微妙にコードに違いが出ますが、今回は半角スペースに置換しました。

比較したコードは以下の通りです。

//元の文字列:$original

//#1 mb_ereg_replace 一つずつ置換
$str1 = mb_ereg_replace("\r\n","\n",$original); //CR+LFをLFに
$str1 = mb_ereg_replace("\r","\n",$str1); // CRをLFに
$str1 = mb_ereg_replace("\n"," ",$str1);//LFを半角スペースに

//#2 mb_ereg_replace 3通りを置換
$str2 = mb_ereg_replace("\r\n|\n|\r"," ",$original);

//#3 str_replace 一つずつ置換
$str3 = str_replace("\r\n","\n",$original); //CR+LFをLFに
$str3 = str_replace("\r","\n",$str3); // CRをLFに
$str3 = str_replace("\n"," ",$str3);//LFを半角スペースに

//#4 str_replace 3通りを置換
$str4 = str_replace(array("\r\n","\n","\r")," ",$original);

同じ文章(約40KB)を1000回ほど置き換え、時間を計測しました。文字列の置換結果はいずれも同じですが、かかった時間はかなり違いました。
#1 : 0.92秒
#2 : 0.30秒
#3 : 0.11秒
#4 : 0.09秒

やはりstr_replaceは高速です。正規表現は汎用性も高く便利な機能ですが、時間はどうしてもかかってしまいます。mb_str_replaceのような関数が標準であると便利だと思います。

MXレコードがらみのDNSの設定でCNAMEは使わない

Webサーバーとメールサーバーを別のIPアドレスに振り分けたく以下のようなDNSの設定をしました。メールはmail.example.com(IP:xxx.xxx.xxx.001)で処理し、wwwありexample.comとwwwなし.example.comを(IP:xxx.xxx.xxx.002)で処理するという例です。

cname @ www
a www xxx.xxx.xxx.002
mx mail 10

a mail xxx.xxx.xxx.001

しかし、これではメールは受け取りができません。以下のようにする必要があります。 続きを読む MXレコードがらみのDNSの設定でCNAMEは使わない

(PHP) TCPDFで外部フォントの指定(addTTFfontの修正)

PHPでPDFを動的に生成するライブラリ「TCPDF」のメモです。

標準で用意されているフォント以外を使う方法はWebで検索すると多数紹介されていますが、TCPDFの最新版(今回は6.2.3)でエラーが出てしまったので修正点を紹介します。 続きを読む (PHP) TCPDFで外部フォントの指定(addTTFfontの修正)