News
各種ブログテンプレート

最新記事

PHPのmktime()で取得したタイムスタンプが8ヶ月前になる事象について

September 2,2010 1:33 AM
Category:[PHP]
Tag:[, , ]
Permalink

PHPのmktime()関数を使ったカスタマイズで躓いたので情報展開しておきます... [ all ]

PHPのmktime()関数を使ったカスタマイズで躓いたので情報展開しておきます。動作確認したPHPのバージョンは5.2.13です。

1.問題

次のコードは、指定した日付のエポック秒(1970年1月1日0時0分0秒から、指定した時刻までの通算秒)を取得し、それを年月日時分秒に変換して表示する簡単なサンプルです。

<?php
    $date = mktime(01,23,45,08,01,2010);
    echo date('Y.m.d A H:i.s',$date);
?>

mktimeの引数は左から順番に、「時・分・秒・月・日・年」となります。このコードを実行すると、

2010.08.01 AM 01:23.45

という結果になるはずですが、実行すると、

2009.12.01 AM 01:23.45

となり、指定したタイムスタンプよりも8ヶ月前になってしまいます。

2.原因と対処

PHPでは、整数に「0」を付与すると8進数として扱われ、「08」は「0」として扱われることが原因です。つまり、指定した値「08月」をmktimeで評価すると「0月」となり、さらに「0月」は前年の12月として評価されるため、1項に記した動作となります。

月の「08」を1桁の「8」に変更することで、この問題は解消します。

<?php
    $date = mktime(01,23,45,8,01,2010);
    echo date('Y.m.d A H:i.s',$date);
?>

この事象は、月に「08」と「09」を設定した場合に発生します。

3.その他

この事象をみつけた経緯は、Movable Typeのテンプレートタグと組み合わせて、

$entry_date = mktime(<mt:EntryDate format="%H,%M,%S,%m,%d,%Y" />);

ということを行ったためです。この場合、「%m」を「%B」にすることで解消します。

$entry_date = mktime(<mt:EntryDate format="%H,%M,%S,%B,%d,%Y" />);

2010.09.02
をかもとさんからのコメントを受けて、2項を修正しました。

Comments [2] | Trackbacks [0] |

画像を鮮明に拡大するフリーソフト「SmillaEnlarger」の使い方

September 1,2010 12:03 AM
Category:[PC]
Tag:[, ]
Permalink

画像を鮮明に拡大するように見せてくれるフリーソフト、「SmillaEnlarger」と、その使い方を紹介します。

拡大画像(処理前)
SmillaEnlargerの処理前

拡大画像(処理後)
SmillaEnlargerの処理後

SmillaEnlargerは、1年前の2009年8月頃にライフハッカーで話題になったのですが、2010年4月にバージョンアップされて0.9.0になり、画面の構成や操作方法が旧バージョンよりかなり変わったようなので、改めて紹介したいと思います。

ここではWindows Vista を利用した方法が解説しますが、Macやlinuxでも利用可能です。

1.ダウンロード

SourceForge.JPのSmillaEnlargerのページにある「ダウンロード」をクリック。

SourceForge.JPのSmillaEnlargerのページ

ダウンロードページに進むので、Windows用のダウンロードリンクをクリック。

SourceForge.JPのSmillaEnlargerのダウンロードページ

なお、SourceForgeの本家のダウンロードページは以下です。

SmillaEnlarger

SourceForgeのSmillaEnlargerのページ

2.インストールと実行

Windowsの場合、ダウンロードしたアーカイブを展開すれば完了です。

展開したフォルダの中にある、SmillaEnlarger.exe(拡張子を表示していない場合はSmillaEnlarger)をダブルクリック。

SmillaEnlargerの起動

これで起動します。起動時は冒頭に示した犬の画像がサンプルで表示されるようです。

SmillaEnlarger

3.基本操作

拡大する画像を指定するには、メニューバーの「File」→「Open」で指定します。

拡大する画像を指定

ここでは当サイトの猫の画像を使ってみます。画像を開いた直後は次のような状態になります。右上のタブは「Cropping」を選択しておいてください。

拡大する画像を指定

右の画像上でマウスをドラッグすれば、拡大したい範囲を選択できます。ここでは猫の顔の部分を選択します。選択範囲は太い罫線で区切られ、未選択部分と区別しやすくなっています。さらに、

  • 罫線の上でマウスをポイントして左クリックすれば選択範囲を変更可能
  • 選択範囲上で左クリックすれば、選択した矩形の移動が可能

という機能があります。

選択範囲を指定

矩形のスタイルは、右画面の下にある「Cropping Format:」のプルダウンメニューで変更できます。「free」を選択すれば、選択範囲を自由に変更できます。

矩形のスタイル変更

選択範囲は左側の「Thumbnail Preview:」にサムネイルとして反映されます(実サイズでのプレビューについては後述)。

サムネイル

選択範囲が決まったら、右上の「Parameter」タブをクリックします。これで選択範囲の実サイズでのプレビューが表示されます。プレビュー画面に選択範囲がすべて表示されていない場合は、右クリックで表示内容をスライドすることができます。

選択範囲を指定

ウィンドウ左にある「Enlarger Parameter」、または「Parameter」タブ右下にあるプルダウンメニューで、拡大する際のおおざっぱなスタイルを決めることができます。

拡大するときのスタイル

スタイルを変更すれば、「Parameter」タブの右下の各パラメータが自動的に変わります。

defaultの場合
defaultの場合

sharp & noisy の場合
sharp & noisy の場合

さらにパラメータをカスタマイズしたい場合は、「Allow Changes」をチェックします。

パラメータのカスタマイズ

出力するファイルサイズはウィンドウ左上の「Output Dimensions:」で設定します。まず、値を設定する対象(画像の幅・高さなど)をプルダウンで選択します。

出力ファイルサイズ

選択した後、値を設定します。

出力ファイルサイズを指定

値を変更すると、プレビュー画面に表示されている画像のサイズも変更されます。

プレビュー画面

ウィンドウの左にある「Parameter!」、または「Parameter」タブ右下にある「Preview」をクリックすれば、拡大画像のプレビューが行なえます。ちなみに、キャプチャ画像の元画像サイズは122px × 128px で、その一部分を350pxに拡大しているので、結構なめらかになっていると思います。

パラメータを変更して「Preview」をクリックすれば何度でもやり直しが可能です。

スタイルのプレビュー

ファイルに保存するには、ウィンドウ左下にある「Enlarge & Save」をクリックします。

ファイルの保存

ファイル名は「Write Result to:」に表示されます。

ファイル名の指定

デフォルトの設定では、開いた画像ファイルと同じフォルダに出力します。フォルダを変更する場合は、「Use Source Folder」のチェックをはずして、「Change Folder」をクリックして任意のフォルダを選択します。

フォルダを変更

出力状況は、「Enlarge & Save」の左側にある緑色のプログレスバーなどで表示されます。

出力状況

それぞれの実行は「キュー」として登録されます。キューが完了すれば出力完了です。「Jobs:」タブをクリックすればキューの実行状況が分かります。キューに「finished」が表示されていれば出力完了です。右側の「clear queue」をクリックすればキューをクリアできます。

実行状況

右下にある「remove Job」や「clean up」も、同様の操作が行なえます。

キューの操作

4.その他

「File」→「Preferences...」でオプションを表示します。0.90では、出力ファイル形式の選択とファイル品質の選択のみです。

オプション1

「File」→「Mini Mode」を選択すれば、ウィンドウを縮小表示します。

オプション2

Comments [0] | Trackbacks [0] |

環境変数EntriesPerRebuildでMovable Typeの再構築時間を短縮する

Movable Typeのスタティックパブリッシング(静的生成)の再構築時間は、環境変数EntriesPerRebuildを設定することで短縮できる場合があります。

移転先のサーバで実験してみましたので、報告します。ただし、共有型のレンタルサーバでは500エラーになる可能性もありますのでご注意ください。

1.EntriesPerRebuildについて

環境変数EntriesPerRebuildは、1回のプロセスでブログ記事アーカイブを再構築するブログ記事数を設定します。デフォルトは「40」です。

この値を変更するには、mt-config.cgiにEntriesPerRebuildを設定します。「100」にする場合は次のように記述します。

EntriesPerRebuild 100

2.EntriesPerRebuildと月別アーカイブの関係

環境変数EntriesPerRebuildは、ブログ記事アーカイブだけでなく、月別アーカイブ(月別ブログ記事リスト)にも関係します。具体的には、指定した値のブログ記事に対応する月別アーカイブページを生成します。

この件については、小川さんの以下のページが参考になるでしょう。

Ogawa::Buzz - 今さらですがMTOS 4.23に乗り換えました

3.再構築時間測定

EntriesPerRebuildの値を振って、ブログ記事アーカイブと月別アーカイブの再構築時間を測定しました。占有型のマネージドサーバなので、ブレのない値がとれていると思います。再構築対象データの条件は次の通りです。

  • ブログ記事数:約3000件
  • 月数:82ヶ月

ブログ記事アーカイブの再構築時間は次の通りです。100あたりで頭打ちになっています。

ブログ記事アーカイブ再構築時間

月別アーカイブの再構築時間は次の通りです。再構築時間の単位は秒です。

月別アーカイブ再構築時間

こちらは400~500あたりで頭打ちになっています。

ということで、月別アーカイブの再構築時間を考えると、EntriesPerRebuildには400~500を設定すると良いようです。

Comments [0] | Trackbacks [0] |
 1  |  2  |  3  | All pages
All Menu
Now loading...
Introduction
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.02