ppBlog Notice: LINE 953 of utils.php: A non well formed numeric value encountered:

ppBlog Notice: LINE 1008 of utils.php: A non well formed numeric value encountered:

ppBlog Notice: LINE 1016 of utils.php: A non well formed numeric value encountered:

ppBlog Notice: LINE 1034 of utils.php: A non well formed numeric value encountered:

ppBlog official

差分です。

category-icon

 こんばんは。今日のやつをアップしておきます。変更は以下の通り。

  1. 検索モジュールで、デバグ用の出力をそのまま残していました → search.inc.php
  2. 静的リンクモードに関して、作成ページへの処理をちょっと修正しました → utils.php
  3. バックアップファイルの冒頭にある記事リンクがウェブ上のページにリンクしないような処理を入れ、また静的モードで作成時のカテゴリーリンクの不具合を修正 → archives.inc.php
  4. 管理者画面でのバックアップ作成画面にて、ログへのリンクが月毎になっていなかったのを修正 → backup.inc.php

 とりあえず、今日はこれだけです。

添付ファイル: DIFF080417.zipattachedIcon 

— posted by martin at 08:36 pm   commentComment [4]  pingTrackBack [0]

今日の差分。

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]

週末差分アップデート

category-icon

 こんばんは。修正ファイルがまとまった数になって、ちょっと落ち着いたので。今回は、それなりにファイル数があって、しかもキモの設定ファイルであるini.inc.phpも数カ所変わっています。

 まず、廃止にしたppBlog用の定数として、サムネイル画像作成時にサーバー側でドロップシャドウを付けるオプションのTHUMBNAIL_SHADOWとリファラーをメインページに表示するのを定義したREFERRERです。これらは、殆ど使われていないでしょうし。この2つを廃止して新たに2つの定数を追加しました。

 ひとつは、CSSでの画像ドロップシャドウをポラロイド風にするか、普通の写真風にするかを決めるPICTURE_POLAROIDです。デフォルトでは、従来の写真風にしています。もうひとつは、カテゴリーの集計に関してですが、SEE_CAT_HIERARCHYという定数を設けました。これはサブカテゴリーの記事数を親カテゴリーに含めるかどうかの問題ですが、これは各人好みがあるでしょうから、選択できるようにしました。

 アップデートに関しては、この設定ファイルの書き換えをしないと最新のutils.phpに上書きした場合うまく動かないと思います。添付ファイルにセーフモード版に付属しているini.inc.phpを付けているので参考にされて下さい。ini.inc.phpはownerディレクトリにあります。以下に主な修正点を挙げておきます。

  • CSSでの画像ドロップシャドウに関して、write.inc.php, edit.inc.php, utils.php, theme/basic/のbasic.cssおよび追加の画像ファイル。このドロップシャドウに関して、クラス名の変更があるので、テーマファイルを配布されている方々には、お手数ですが、書き換えをお願いします。photo-linerphoto-shadowといったクラス名がなくなって、代わりにphotopolaroid, shadowというのが追加されています。ドロップシャドウは、もうこれに決めうちします。
  • .js関連では、ちょこちょこ手を加えてます。oParts.jsでは、CSSの透明度の設定opacityあたり、editor.jsはツールバーの固定モードをクッキーに保持して、次にエディタを開いた際に、前回の状態が再現されるようにしています。lib.jsは、静的モードのリンクに関して修正してます。
  • 管理画面で、ログイン時のデフォルトモードを記事一覧にしていると、ページリンクが効かない不具合を修正しています→article.inc.php。
  • modules関連では、上記のものに加えて、MovableTypeのログのバックアップ形式であるMTファイルの読み込みのスクリプトが古いままだったので書き換えました→backup.inc.php。
  • 記事の個別設定で、トラックバック不可にしても、Ajaxで読み込んだときにTBへのリンクが表示される不具合に関連してlib.jsやcomment.inc.phpなど。
  • 静的モードに関連して、サイドバーでのトラックバック一覧のリンクが変なのを修正。
  • ppBlogではBMP(ビットマップ)形式の画像ファイルも普通にアップできますが、画像管理画面で、このBMP画像がNotFoundの画像になるのを修正したimager.inc.php
  • index.phpは、廃止した定数REFERRERに関して、下の方にあるこの記述を削ってます。

ってとこです。1.7.3のアップデートに関しては、ローカルで設定ファイルのini.inc.phpの書き換えをして、これをownerディレクトリにアップ、その後、すみやかにutils.phpなど該当するファイル群を上書きアップロードして、最後にcacheディレクトリにあるcache.dbをFTP上で削除、あるいは管理画面の「各種ツール」→「エクスプローラー」からcache.dbを削除して下さい。これでトップページにアクセスすれば問題ないかと思います。

添付ファイル: DIFF080412.zipattachedIcon 

— posted by martin at 11:46 pm   commentComment [27]  pingTrackBack [1]

画像のドロップシャドウ ~ テスト

category-icon

 この辺に落ち着こうかな。

オオハシ
従来のノーマルタイプ。キャプションは画像の下に表示されます。

オオハシ
ポラロイド風。キャプションが画像のボーダー内に含まれるパターン

オオハシ
ドロップシャドウあり、ボーダーなしのパターン

オオハシ
ドロップシャドウなし、ボーダーありのパターン

オオハシ
ドロップシャドウもボーダーもなしのパターン。

 今回の試行で分かったことは、IE7のみに適用されると思っていたCSSハックが、実はOpera9.xにも有効だったこと。

*+html body div.shadow { margin-bottom: -15px; } /* just for IE7 */

 何かOpera9.27での表示がおかしいなと思ったら、このハックがOperaにも適用されていました(追記:XML宣言するとOperaにも通ってしまうみたいです)。なので、純粋にIE7のみをターゲットとしたい場合は、以下のようにすると良いらしい。

*:first-child + html div.shadow { margin-bottom: -15px; } /* just for IE7 */

 ちょっとググった感じでは、IE6とIE7とを一緒にハック対象とする方法が分からなかったんだけど、個別に書かないとダメかなぁ。

 近々、ドロップシャドウのまとめ記事を書こうかと思っています。

 


— posted by martin at 10:11 pm   commentComment [4]  pingTrackBack [0]

lib.jsのアップデート

category-icon

 こんばんは。静的出力モードで動作させている際に、トップページ以外からログインしようとすると、

ppBlog::Bad Request!

と表示される不具合の報告がありましたので、その修正版をアップしておきます。いくつかのアプローチが考えられますが、lib.jsの書き換えで対処しました。要は、admin.phpに至るパスがトップページ以外だと(静的出力モードの場合)変になるので、JavaScriptで正しいパスを取得してあげようという訳です。具体的には、以下のようなグローバル変数を用意しました。グローバルな変数はあまり使いたくないのですが、まぁ(--)

scriptPath = o('BASE') ? o('BASE').$.href : window.location.pathname.toString().replace('index.php', '');

 この修正されたlib.jsを添付しておきます。syntax.js用の記述はコメントアウトしてあるので、必要に応じて参考にされて下さい。あ、後、静的出力モードな方でsyntax.jsを使いたいな、という方は、このスクリプトの呼び出しに、oParts.loadScriptを使うのであれば、単にjs/syntax.jsではなく、フルパスでの記述にして下さい。例えばこのサイトであれば、以下のような感じです。

oParts.loadScript('http://p2b.jp/js/syntax.js'); /* ちなみに同じドメインでの呼び出ししか出来ません */

 (エディタの固定モードは、しょっちゅう使うからこれはクッキーに食わせて、次回からモードを復元するようにすると良いな)

 あと、アップロードした画像のドロップシャドウですが、これはIE6での表示が不安定のようなので、以前のバージョンに戻そうかと思っていますが、どうでしょうか・・・。

添付ファイル: lib.jsattachedIcon 

— posted by martin at 10:11 pm   commentComment [20]  pingTrackBack [0]

Created in 0.0042 sec.
prev
2024.11
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