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

<input type="color">の実装を検討

Firefox 26 が12/10にリリースされますが、その次の27で<input type="color">が実装されるようなので、
当サービスのブログエディターの色選択ツールで採用を検討します。

<input type="color">はHTML5の標準機能で、今後WEBの色選択ツールの標準になると思われるので標準UIを使用すべきな気もするのですが、
この機能は恐らくブラウザによってデザインが大きく違うのと、
現在の独自UI色選択ツールはシンプルなパレットとスライダーでの色選択で、複雑なツールよりも現在のツールの方がわかりやすいと思うので、採用するか微妙なところです。

URLの変換処理に関して

サーバーでのURLの変換処理をmod_rewriteで行っていた箇所があるのですが、
機能の大半はmod_rewriteを使わなくても実現可能なため、サーバー設定を見なおしています。

変更は順次行っていきます。
表面上の変化は発生しません。

既に大部分は変更を完了していますが、まだ一部mod_rewriteを使う必要がある箇所が残っているので、
それらも順次対応させて変更するつもりです。

大規模修正の経過と予定

先日からこのブログでお伝えしていますが、
サービスの管理をしやすくするための大規模修正を行っています。
表面上の変化はありませんが、システムのほとんど全てのスクリプトファイルが修正されます。

公式サイトのメインシステムと、ユーザーサイトのメインシステム以外の個別スクリプトに関しては、
既に、こっそり更新されています。

メインシステムに関しても手元では修正がほぼ終わったのですが、対象ファイルが多いので、まだ差し替えられない状況です。
修正漏れチェック、全機能チェック、セキュリティーチェックが完了したら人いなそうな時間に差し替えます。
予定よりだいぶ早く作業進んだので、年内には更新できそうです。

大規模な修正を行います

表面上の変化は発生しませんが、
こちらでメンテナンスを行いやすいように設定のスクリプトからの分離と共通処理のパッケージ化を進めます。

システムのスクリプトファイルは150ファイル程度かと思うのですが、
ほぼ全てを見直して修正します。

メイン部分はテストサーバーで十分に確認してから公開サーバーを更新しますが、
一部にテストサーバーを利用できない箇所もあります。


障害が発生したらごめんなさいです。

アクセス解析のログについて

アクセス解析(ブログ等のサービス内の解析ではなく外部サイト用の)のログについてですが、
アクセス解析用のサーバーを今月中を目処に変更しようと思うのですが、
その際に以下の理由から、ログデータを移動させずに消そうと思います。
  1. 利用者がほとんどいない。
  2. アクセス解析サービスは、"試運転中"の表記がある。
  3. ログデータは元々保存期限がある。
  4. 移動させると作業が面倒。

ログデータが消えてもツール自体は残るようにし、解析用のタグもそのままで新規分は記録されるようにします。

405 Method Not Allowedを実装しようかと

ブログのトラックバック上限設定を初期値で0にしてからスパムトラックバックの被害はほとんど発生していませんが、
相変わらず存在しないアドレスへのトラックバックを試みた不正アクセスが多い(全リクエストの1割ほど)ので、
スパムトラックバック目的と思われるリクエストはPOSTでくるので、
405 Method Not Allowed
を導入して不正アクセス受信時の処理による負荷を軽減しようかと思います。

現在ユーザードメインに対する正規リクエストがPOSTで来る可能性があるのはWikiの編集機能のみなので、
それ以外でPOSTがきたら即エラー返す感じに。

Wikiの編集機能以外で、ブログのメールフォームプラグインと掲示板でもPOSTを利用しますが、この2つは受信用の別ドメインを経由して受け付けるので、
Wikiの編集機能も同じ様に別ドメイン化して、ユーザードメインではPOSTを一切受け付けないようにするかも。

独自コンテキストメニューの仕様を再度変更すると思います

今日のブログエディターの修正で、
<details>を利用して縦方向にサブメニューを展開するUIで独自コンテキストメニューを作り、Webkitブラウザで新エディターが利用されるようにしましたが、
<details>を利用しなければIEも新エディターに対応させられるので近いうちに変更すると思います。

手元では<details>を使わずに左右にサブメニューを並べる一般的な仕様のコンテキストメニューのブログエディターの準備はできているのですが、
mouseenterとmouseleaveでサブメニューのON/OFF切り替えをしますが、これにChromeが対応していないのでChromeが対応してからになります。
現行のChrome 29は非対応ですが、BetaのChrome 30は対応しています。
IEは9からでSafariも既に対応しているようです。

ただ、項目へのmouseenterでサブメニューを表示するUIだと、マウスのないタッチパネル端末だと困ったことに・・・

セッション認証の仕様を変更しようかと思います

現在のセッション認証の仕様は、
セッションは全ユーザー中でユニークであり、セッションIDでユーザーを識別してIPアドレスが一致すれば認証可能ですが、
セッションIDだけでなくユーザーIDもサーバーに送信させ、ユーザーIDで識別してセッションIDの一致を確認する仕様に変更しようか検討中です。

セッションIDはパスワードの代わりではなくユーザーIDの代わりのユーザー識別用と考えて認証システムを作ったためこのような仕様になっていますが、
ユーザーIDを常に送信させて識別は常にユーザーIDを使用すればセッションIDをユニークにする必要はなくなり処理を簡単にできるので仕様を変更しようか検討中です。


変更を行う際はサーバーは稼働させたまま行いますが、
更新した後に一度再ログインが必要になるかもしれません。

Mobile版Firefoxの問題について2

今朝の記事で書きましたMobile版Firefoxの問題についてですが、
コンテキストメニューと上部メニューの2点の問題の回避を試し、その点はそれなりにうまく行ったのですが、
ロングタッチでコンテキストメニューが表示されると、同じくロングタッチで行うテキストの選択ができなくなるという重大な問題が生じました。
以前の実験でもこの点は判明していた記憶もありますが・・・

というわけで、今回の変更については現時点では見送りなのですが、
メニューに「1行選択」の様な項目を追加し、
rangeを変更することでテキスト選択のUIを出現させることはできないか?
とか実験してみようと思います。
多分解決不能だと思います・・・

Mobile版Firefoxの問題について

当サービスでは、ブログエディターでHTML5の<menu>によりコンテキストメニューに独自の項目を追加しており、それが現状Firefox以外で不可能なためFirefoxのみを推薦ブラウザとしていますが、
Mobile版Firefoxでは複数の重大な問題があるため、タッチパネル端末には推薦できるブラウザが存在しない状況となっています。


Mobile版Firefoxの問題の1つ目は、
PC版Firefoxではマウスの右クリックによりコンテキストメニューを表示し、タッチパネル端末ではロングタッチでコンテキストメニューが表示されるはずですが、
当サービスのブログエディターでは表示されていませんでした。
これについては、エディターでcontextmenuイベント時に処理をした後にイベントの伝達停止をしていますが、イベントの伝達停止をするとコンテキストメニューが表示されないことがわかっています。
ブラウザのバグですが、こちらの修正でイベントの伝達停止処理を外すことで問題を回避することは可能です。

Mobile版Firefoxの問題の2つ目は、
テキスト選択状態で上部ボタンから修飾を行うことができませんでした。
こちらもブラウザの挙動がおかしいのですが、
touchendイベントの後にclickを含めたマウス系イベントが発生しますが、
マウス系イベント時にselectionが破損?しているようで、touchendイベントよりも後にrangeを取得しようとするとスクリプトエラーが発生していたようです。
これについては、タッチパネルとマウスの両方を備えた端末で両方を使用して編集した場合に問題が生じる可能性がありますが、
応急の問題回避はできそうです。


この2点の問題回避を試し、別の重大な問題が発生しないようなら、
ブログエディターを差し替えてMobile版Firefoxをタッチパネル端末(Android)の推薦ブラウザにできるかもしれません。