無料ブログ「rentafree.net」の管理人ブログ

robots.txtへのリクエストに対してキャッシュを使うようにしました

robots.txtへのリクエストでエラーが発生し503が大量発生していることが判明したので、robots.txtの配信効率を上げるために、
robots.txtへのリクエストに対する応答時にLast-Modifiedを接続時刻で返し、100日以内の再接続時は304 Not Modifiedを返すように変更しました。

ただ、503が発生する前に1回だけ500が発生しているようで、その原因がApacheのモジュールレベルにある様で、
若干ログの出方が違うのですが、こちらの2014-12-30の記事に書いた件と症状が似て、
mod_aliasのバグが原因でmod_fcgidでエラーが発生しているような気がするので、mod_aliasの代わりにmod_rewriteを使うようにサーバー設定を変えてみました。

この記事を書いている間にエラーが発生していたのと同様と思われるリクエストが発生していたのですが、
正常に捌けているようなので、解決したと思います。

今後も問題が継続しているようなら、自動で監視と再起動をするようにして対応しようかと思います。


上記のmod_aliasバグは、ディストリビューター配信バージョンのApacheを使用しているのですが、
Apacheの公式ではこの件の修正がされているような記述を見たので、公式の最新バージョンでは存在しないのではないかと思います。
メモリエラーが発生した後にFastCGIのスロットがゾンビ化してmod_fcgidがエラーを吐く症状なのですが、
バグはmod_fcgidではなくmod_aliasに存在して、mod_aliasとmod_fcgidを併用すると問題が生じる気配。

XML-RPCメソッドを追加しました

ブログのXML-RPC機能のサポートメソッドに、
metaWeblog.getRecentPosts(新着数件の文章を含めた記事情報を取得)
mt.getRecentPostTitles(新着数件の文章を含まない記事情報を取得)
と記事一覧を取得するメソッドは用意してあったのですが、
特定の記事を取得するためのメソッドが実装されていないことに気づいたので、
新たに、
metaWeblog.getPost
に対応させました。

アプリ等を作る際に、記事一覧から取得した記事IDで特定記事を取得するという処理が考えられますが、
metaWeblog.getRecentPostsですと文章を含めた情報が返ってくるので転送量が多くなってしまうので、
mt.getRecentPostTitlesで記事IDを取得して metaWeblog.getPostで記事情報を取得するのが良いと思います。

また、metaWeblog.getRecentPostsとmt.getRecentPostTitlesが今までは最大100件になっていたのですが、
metaWeblog.getRecentPostsの方は100件だと大きいので10件に減らしました。

QRコードプラグインの仕様を変更しました。

今まではQRコードプラグインではモバイルページのURLをQRコード化して表示していましたが、
スマホの普及によりガラケーでWEBを閲覧するという行為が行われなくなっているので、QRコードはモバイルページのURLではなくPCページのURLを記載すべきと判断したためQRコードプラグインの仕様を変更しました。

今まではプラグイン作成時にURLをQRコード化した画像ファイルを作成して表示していましたが、
QRコード化する文字列を変更する機能を用意し、サーバー側が画像を作成せずにブラウザが生成して<canvas>で描画する仕様に変更しました。

変更内容
 変更前変更後
対応ブラウザ
画像が表示できるブラウザ<canvas>対応ブラウザ(IE8不可)
QRコードの内容モバイルページのURL未設定の場合はブログトップページURLとなりますが、
URL以外も含めて自由な文字列をQRコード化できます。(最大2953byteまで)

QRコードの作成は新しく公式JavaScriptに追加した機能によって行われるため、公式JavaScriptをロードしないテンプレートでは利用できなくなりました。
以前の仕様でQRコードプラグインを使用したことがある場合は、ユーザーのファイル保存領域にQRコード画像が作成されていますが、削除して問題ありません。


また、 http://ユーザードメイン/m/ がガラケー用URLとして用意されており、公式に用意されているCompact HTMLテンプレートで表示されていますが、
Compact HTMLテンプレートを廃止してガラケー用URL接続時もPCと同一のテンプレートを使用するように変更しようか検討しています。
ガラケーでWEBを閲覧するという行為が行われなくなっていると思いますので通常はガラケー用URLが不要であると思いますし、
標準のPC用テンプレートは条件分岐によりガラケー用URL時はCompact HTMLを出力するような高度なテンプレートを作成することが可能ですが、現在の仕様だとユーザーに編集権限がないため全くカスタマイズできないからです。

バージョン8以下のIEにメッセージを表示するようにしました

バージョン8以下のInternet Explorerで公式サイトを利用しているユーザーさんがまだ居るようなのですが、
いずれは対応ブラウザから外して利用できないようにしたいので、
バージョン8以下のIEで公式サイトトップページを表示した場合にブラウザの変更をお願いするメッセージを表示するようにしました。

コード量が多いのはブログエディターですが、
JavaScriptのコードを書く際に、バージョン8以下のInternet Explorerは他のブラウザと共通コードを利用できない箇所が多くなってしまうので、
現在のところブログエディターのスクリプトはバージョン8以下のInternet Explorerとその他のブラウザで完全に分けています。
既にバージョン8以下のInternet Explorer用スクリプトには機能追加等は行っていませんが、他ブラウザと処理内容が違うので完全に廃止してコードを統一したいです。

Windows Vista のInternet Explorer初期搭載バージョンが7なので、IE7及びIE8はMicrosoftのサポートを2017年まで受けられると思いますが、
VistaではIE9が利用可能ですのでIE9へのバージョンアップをお願いします。
IEではなくFirefoxの利用への変更をおすすめします。

IE8を利用している方は主にWindows XPの方だと思いますが、Windows XPは既にMicrosoftのサポート期限が切れているので、XPでインターネットに接続するのは危険です。
XPを使い続ける場合はFirefoxの利用をお願いします。
XPで最新のFirefoxを使う場合、XPにService Pack 3を適用する必要があります。


公式サイトの方はバージョン8以下のIE利用者がいなくなれば、すぐにでもバージョン8以下のIEを非対応にしたいです。

公開されるユーザーサイトに関しては、機能追加スクリプトでバージョン8以下のIE専用のコードが使われていますが、
こちらの方はコード量もさほど多くなく滅多に更新も行いませんので、少なくともWindows VistaのMicrosoftサポート期限までは維持するつもりです。

ログイン履歴の表示機能をつけました

以前このブログで、ログイン履歴の表示機能の実装を検討していることをお伝えしましたが、
できましたので実装しました。

ログイン日時、種別、IPアドレス、の3項目を最大100件表示します。
種別はHHTP,SSL,XML-RPCのいずれかとなります。
パスワードログインのみ記録され、セッション認証は記録されません。


以前お伝えした時は、
ログイン履歴は、公式サイトトップページとSSLログインは区別しておらず、
公式サイトログインとXML-RPCの2種が記録されているものと認識しており、そのようにお伝えした記憶がありますが、
これは誤りで、公式サイトトップページとSSLログインの2種が別に記録されており、XML-RPCの認証履歴は記録されていませんでした。

検討しましたが、XML-RPCの認証履歴も記録するようにし、
表面上は違いがありませんが、XML-RPCの認証処理を若干変更しています。

XML-RPCの認証ではアカウントの編集はできませんし、認証が必要な接続では毎回パスワードが利用されるので、
1回の操作で連続して履歴が残るのもどうかと思いますので、履歴記録の仕様を再度変更するかもしれません。

200日以上ログインしていないアカウントのドメインを停止しました

先日告知しておりましたが、
放置アカウント対策で、200日以上ログインしていないアカウントのドメインを停止しました。

この処理は以後、日毎に自動的に行われますので、アカウントへの前回ログインから200日以上経過するとアカウントに属するドメインが配信停止となります。
この条件により配信停止となった場合、ログイン(メールアドレスとパスワードにて)することで即時再開します。


[追記]
条件となるタイムスタンプはセッション認証でも更新されますので、
ログアウトせずに200日以内にセッション認証で公式サイトへ接続している場合は停止条件に該当しません。

日毎処理で200日経過している場合に対象となりますが、タイムスタンプに最大24時間の誤差が生じますので、199日で該当する可能性もあります。

メール投稿機能を再修正しました

昨日のメール投稿機能の件で再修正を行いました。

5分程度の間ですが、作業中にまた不完全な投稿が数件発生しています。
申し訳ございません。

一応、作業は完了したつもりですが、
変更が多くなったので、メール投稿に不具合が生じる可能性があります。

アクセス解析のUserAgentグループ化処理を変更しました

MSIEの11以降のUserAgent表記変更に伴い、アクセス解析のUserAgentグループ化処理を変更しました。
MSIE以外の抽出処理も見直しています。


主要ブラウザをChrome、Firefox、Trident、MSIE、Safariの順で判別するようにしました。

MSIE11以降はUserAgentのバージョン表記が気に入らないので、Tridentを名乗るブラウザは今後MSIEではなくTridentとして分類されます。
MSIE11以前もMSIE8以降はTridentに分類されると思われます。

ChromeはこれまでGoogle Chromeと表記していましたが、Chromeと表記するようにしました。

Chrome、Firefox、Trident、MSIEについてはバージョン分けを行いますが、
SafariはUserAgentのバージョン表記が気に入らないのでバージョン分けは行わないようにしました。


主要ブラウザの判別後は主要BOTの判別を行います。
Googlebot、Yahoo! Slurp、Baiduspider、bingbot、NaverBot、LWP
がグループ化されます。
バージョン分けは行われません。


主要BOT判別の後は携帯等の組み込み機器等の判別を行いますが、
DoCoMo、SoftBank、UP.Browser(au)、jig browser、NetFront、Nintendo、PlayStation
の順で行われます。
以前はバージョンで分類していましたが、数も少ないと思いますのでバージョン分けはしないようにしました。
スマホ等にはChrome等の主要ブラウザが搭載されていますので主要ブラウザとして分類されます。


組み込み機器等の判別の後は、「bot」が含まれるUserAgentは「BOT」とグループ化されます。


BOT判別後は、
Opera、Netscape、KHTML、Gecko
の順で判別されます。
主要ブラウザに分類されている場合はそちらに分類されます。
バージョン分けは行いません。
Operaは以前は主要ブラウザとしていましたが、バージョン12.x系列を最後にPrestoではなくなったため現在は主要ブラウザとは認識していません。
最新のOperaはChromeを名乗るのでChromeに分類されると思われます。(現在のOperaの中身はChromeです)


残りのブラウザは「undefined」としてグループ化されます。

ブログエディターを微修正しました

Firefox 29で<input type="color">が実装されたんで、当サービスのブログエディターで利用しようか検討したんですが、
IEがまだ未実装なのと、他のCSS項目とのUI統一性が崩れてしまうので、見送ることにしました。
ブログエディターのコード量のうち、色選択ツール分が1割以上を占めてそうなので利用すればかなり減らせそうなのですが・・・

そんな感じで、<input type="color">の方は見送りましたが、Firefox 29では<input type="number">も実装され、
そちらの方は当サービスで既に利用しているのでブログエディターの色選択ツールにも利用されていると思っていましたが、利用されていなかったので修正しました。
色選択ツールでのRGB数値入力部分がマウスでの数値変更ができるようになり、入力可能範囲が0-255に制限されました。


他に<input>関連で、ブログ記事の日時設定部分が通常の<input type="text">になっており、
この部分も<input type="number">に変えようか検討しましたが、
HTML5にはnumber以外に日時入力用のものが存在し、それらはFirefoxが未実装なのと、
時分秒の分割入力が出来ないと思うのでサーバー側の互換性の点から利用しないことになるかなと思います。

メインサーバーの移転を行いました

メインサーバーの移転を行いました。

作業時のダウンタイムは1時間程度です。

旧サーバーにつながった場合、
www.rentafree.net
ssl.rentafree.net
ユーザードメイン
の場合はメンテナンスページに飛びます。

DNSの正引きはすぐに反映するはずですので基本的に新サーバーにつながりますが、
逆引きの方は反映するのに時間がかかるので、
メール送信を伴う機能
ssl.rentafree.net
への接続時に警告が発生する可能性があります。

新サーバーでの正式ドメインでのテストはまだ不十分なので、
しばらくの間サービスの機能に不具合が生じる箇所があるかもしれませんがご了承ください。