今日の差分。

category-icon

 こんにちは。今回はちょっと多いです・・・。皆さんからの貴重なフィードバックに対するバグ退治が中心です。他には、これはこれで大事なのですが、このppBlogでのバックアップ形式として、MHTファイルG形式を採用していますが、これを止めました。もともとIEでしか見れなかったし(Firefoxでも大丈夫かな)、そもそもこの形式が個人的にあまり好きでないです。じゃ、なぜこの方式にしたのかというと、数年前の時点で、画像も含めた単一ファイルの生成方法として、小生自身がMHT形式しか知らなかったというのが一番の理由です。画像を含むログは別フォルダを作成してサーバー上でZIP圧縮なりしてダウンロードというのが簡単かなと考えましたが、これだとサーバー依存の部分が大きく汎用性に欠けるかなと。まぁMHT形式も思いっきり汎用性に欠けますが。

 というわけで、新しいバックアップ形式ですが、単なるHTMLファイルです。でも、この単一ファイルの中にアップした写真などの画像も含めることが出来ます。仕掛けは、画像に対するソースをbase64形式Gで圧縮してIMGタグ内で呼び出すという方法です。

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABA…" />

スタイルシートなんかの背景画像も同様に呼び出すことが可能です。

foo.style.background = "url('data:image/gif;base64,R0lGODlhCgA…')";

 数年前は、このテクニックを知りませんで(-o-)でもマイクロソフトのIEはこれに対応していないと言われています。実際に試したところ、うまく行ったり行かなかったり。その辺りの違いがイマイチつかめませんが、まぁ、それ以外のモダンなブラウザではすべて問題なく表示できるのでバックアップとしては何ら問題ないと思います。で、具体的な実装ですが、HTMLソースの途中に、このエンコードされたデータが入り込むのは(base64データは概して大きい)、著しくソースの可読性を低下させるので、HTMLソースの一番下でJavaScriptで処理するようにしました。なので生成されたHTMLソースを見れば分かりますが、ソースの下に、エンコードされた画像データがずらっと並んでいます。途中に入り込むよりずっと良いです。画像ファイルに対するドロップシャドウも再現していますが、これはブログでの表示とはちょっと変えてGIFファイルでの影にしています。ファイルサイズが小さくて済むからというのが理由です。まぁ、それなりにきれいに見えます:) あ、ちなみにバックアップファイルとしてのアーカイブは、月毎のログ単位で生成されますが、記事に画像ファイルが含まれていなければ、このエンコードされた画像データが含まれることはありません。

 技術的な話ですが、用意した影のためのGIFファイルは、base64エンコードしたデータをPHPのソースに埋め込みましたが、そのまま埋め込むとPHPファイルサイズが大きくなるため、以下のような工夫をしてサイズを抑えています。

var bg = "url(¥'data:image/gif;base64,R0lGODlhCgAKAPcAAO3t7f///z'.str_pad('', 253*4, '09PT').'09PSH5BAEAAAEALAAAAAAKAAoAAAgfAAEEEEhwYACDBQkmRHhwoUKGBSEidGhQ4kOKFgcGBAA7¥')";
 つまり、エンコードされた文字列に'09PT'という4文字が繰り返しで253回連続して現れていたので、この部分をstr_pad()Link 関数で短く纏(まと)めてます。
もっと読む»
全く関係ないですが、ヒトのゲノム(DNAの束)を構成している塩基配列には、このような繰り返し配列が山ほどあって、この長さには個人差・人種差があり、これが病気の発症に関係していることもあります。

 そろそろ本題に。主な修正点は以下の通り。

  • 「続きを読む」が機能していない → lib.jsを修正。
  • ページ作成時の画面でJavaScriptエラーが出る → editor.jsを修正。ついでにページ作成画面でもローカルプレビュー出来るようにしました。
  • 検索で、記事タイトル語の一部がヒットしたときに、結果リンクが変になるときがある → search.inc.phpを修正。
  • トップページ以外からのログインが出来ない場合があるようで、admin.phpでのリンクもフルパスにしました。
  • 画像管理画面でページリンクが効かないことへの対処。
  • カテゴリー名の修正が効かないことへの対処。
  • 静的モードで、画像ギャラリーとタグエントリーの静的化が手つかずでしたが、これも対応させました。
  • 上述のように、記事のバックアップ機能の見直し。archives.inc.phpというモジュールが追加になり、従来のmht.inc.phpは不要となります。
  • 静的モードに関して、.htaccessの記述の中にApache1.3x系のサーバーが解釈できない正規表現を含んでいたので、その修正。
  • あと、使い勝手向上のために、細かいところを修正しています。

 例によって差分ファイルと、あと、アーカイブ化したログがどんなHTMLファイルになるのかの具体例として、今月のアーカイブ(4月16日時点)へのリンクLink を張っておきます。HTMLファイルだと、このようにウェブ上でも公開できるので使い勝手が良いです。ダウンロードして、ローカルで見ても画像がちゃんと再現されると思います(あ、冒頭の記事リンクはウェブ上に行きますね…。後で修正しときます)。

添付ファイル: DIFF080416.zipattachedIcon 

— posted by martin at 08:02 pm   commentComment [8]  pingTrackBack [0]

この記事に対するコメント・トラックバック [8件]

scrollUp1. 初心者 — 2008/04/17@10:50:05

差分を適用しました。
Xreaでも静的モード、バッチリになりました:P
また、使い勝手の細かな配慮、嬉しく思っています。

なお、ひとつ、ページ設定に関して気づきがあります。
Admin>ページ管理の「サイト上」からは表示されるのですが、
ブロッグトップの「メニュー」のリンからだと、
「どうもそのページはないようです。。」が:(

これは私の設定ミスでしょうか?f(--;

ご助言頂ければ幸いです。

Owner Comment martin Website  2008/04/18@01:18:21

この辺りはサーバーの設定と絡んでくるのですが、.htaccessファイルを以下のようにして、

RewriteEngine on
RewriteBase /
RewriteRule ^pages/(.*)$ index.php?path=pages/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [L]

utils.phpの133行目を以下のように変えてみたらどうでしょうか。

$mode = 'pages'; $aim = str_replace(array('pages/', '.txt', '/'), '', $path);

 あるいは、.htaccessはそのままでutils.phpの上記変更だけでいけるかもしれません。

3. ちらみ Website — 2008/04/17@17:55:44

多くの修正ありがとうございます、そしてお疲れ様です。
早速試しましたー。

ブログ内検索については修正されていますが、何故かうちのblog内で検索すると、検索結果が出るのはいいですが、ページのヘッダ部分に検索結果の文字がずらーーっと表示されてしまい、デザインがずれこんでしまいます。
ただ、こちらのblogでは現象が起こらないので、私のデザインテンプレートがいけないのかもしれませんが、basicテンプレートでも問題が出てしまいました。
時間があれば、私のblogで検索してみてください。確認できるはずです。

それから、htmlバックアップはイイ感じなのですが、例えば2008年04月等のアーカイブ日付の文字のリンク先がindex.php?date=20080401になっているので、クリックするとその記事へ行き、該当の日付の記事がない場合「その記事はないようです」と表示されてしまうので、リンク先はindex.php?date=200804と、月までで止めておくのがいいと思います。

その他の修正に関しては私が確認した限りでは直っていると思います:)

Owner Comment martin Website  2008/04/18@01:11:23

 こんばんは。これはデバグ用関数の消し忘れです?;w)すみません。search.inc.phpの255行目に、P($results);という一行があるので、これを削除して下さい。開発する分には便利な関数でいつも使いますが…。たまに配布版でやらかします。

5. ちらみ Website — 2008/04/17@22:39:00

>初心者さん
私も静的URLモードでは、ページの閲覧でそうなりました。
.htaccessを前のVerに戻すと直りました。う~ん

scrollUpOwner Comment martin Website  2008/04/18@01:22:24

上記返答のようにしたらいかがでしょうか?
「どうもそのページはないようです。。」という文言が出るのであれば、リンク分け自体はうまく行っていということなので、.htaccessの変更なしにutils.phpの133行目の変更だけでいけるかもです。

7. 初心者 — 2008/04/18@02:32:00

こんばんは。

ページの件、ご支持どおりでOKになりました。
なお、一致に両方修正しましたので、
utils.phpだけでよかったのか、すみません、不明です。

早々のご対応、ありがとうございました。

Owner Comment martin Website  2008/04/18@03:39:00

 ご報告ありがとうございました。utils.phpの方は、この修正を入れても特に影響はないので、アップデートに反映させました。

この記事に対する TrackBack URL:

設定によりTB元のページに、こちらの記事への言及(この記事へのリンク)がなければ、TB受付不可となりますのであらかじめご了承下さい。

コメントをどうぞ。 名前(ペンネーム)と画像認証のひらがな4文字は必須で、ウェブサイトURLはオプションです。

ウェブサイト (U):

タグは使えません。http://・・・ は自動的にリンク表示となります

:) :D 8-) ;-) :P :E :o :( (TT) ):T (--) (++!) ?;w) (-o-) (**!) ;v) f(--; :B l_P~

     
T: Y: ALL: Online:
Created in 0.0040 sec.
prev
2024.3
next
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31