アップデータ-ppBlog

category-icon

 こんばんは。個人的には、久しぶりのアップデートかなぁと思いましたが、そうでもなかったmartinです。

 大きめのバグがありました。コメント数がゼロなのに、コメント数が1個と表示されることがあります。おそらくコメントスパムを弾いたりした際に、生成されていた空のコメントファイルが消されずに、残っているからだと思います。なので、そのあたりの処理を入れました(→comment.inc.php)。このバグが発動するのは、最初のコメントがスパム関連だったときのタイミングだと思うので、そう頻出ではないと思いますが、詰めが甘いですね(TT)

 あとは、テーマの追加周りを変えました。テーマの追加インターフェイスは、以前から、どうもスマートじゃないなぁと思っていました。ゴチャゴチャしてましたしね。テーマファイル群を、なるべくppBlogの管理画面からアップロードしようと目論んでいたからだと思いますが、何だかんだいって、FTPソフトで、テーマフォルダをサクッとアップロードした方が早いですよね。なので、まず、テーマフォルダを丸ごとアップロードしていただいて、その状態で、管理画面から「テーマの追加」を選ぶと、自動的にアップしたテーマディレクトリが認識される、という流れにしました。「テーマ切り替えバー」に表示するテーマ名(日本語OK)を設定する手順があり、全自動というわけには行きませんが、だいぶマシになったと思います(→theme.inc.php/admin.php)。

 他には、殆ど使われていない気もするブロッグバー作成モジュールですが、カラーチャートの指定が古いままだったので、修正しました(→blogbar.inc.php)。使いこなせば、それなりにアクセントになるかなと思っていますが、まずは、自分のサイトで使わないといけませんね。。

 JavaScript周りでは、lib.jsで、気になるところを微妙に調整。あとは、editor.jsでのローカルプレビュースクリプトも少し整備。

 大体、こんなところでしょうか。例によって添付しておきます。

添付ファイル: 1153924114_DIFF060726.zipattachedIcon 

 


— posted by martin at 11:54 pm   commentComment [34]  pingTrackBack [2]

document.write()の実行タイミングをずらす方法

category-icon

関連エントリー: Google Adsenseの表示タイミングを制御するLink

 このサイトのppBlog's webRingのリストは、BlogPeopleLink からdocument.writeで書き出しています。というかBlogPeopleのスクリプトがそうなっているのですが。で、document.writeが、HTMLソースの最初の方にあると、document.writeによる書き出しが終わるまで、それ以降のページのレンダリング(HTMLの書き出し)はストップした状態となります。document.writeによって呼び出している外部サーバー(ここではBlogPeople)のレスポンスが速ければ、ページ描画で待たされることはありませんが、たまにはレスポンスが遅くて、ページの残りがなかなか表示されないという事態は起こりえます。このdocument.writeは、広告バナーなどでも当たり前のように使われていて、メインコンテンツの内容が知りたいのに、バナー広告がなかなか表示されず、イライラしたという経験もあるかと思います。確か、GoogleのADWordsなどでも使われているのではないでしょうか。

 こういう事態を避けるには、HTMLソースの最後の方で document.write を呼び出すというのがあり、これはこれで有効ですが、そう汎用性のあるやり方ではなく、また、スクリプト(JavaScript)がHTMLの中で、あちこちに散らばるのは美しくないです。

 ここでは、document.writeの内容をとりあえず配列などに一時的に退避させといて(この間にHTMLソースの描画は進んでいきます)、ページ読み込み完了と同時に、そのストックしておいたdocument.write内容を吐き出すという方法について書いておきます。

 まず、普通にdocument.writeを含んだ外部スクリプトを呼び出すやり方。これは、BlogPeopleがこうしましょう、と述べているものです。

<script type="text/javascript"
  src="http://www.blogpeople.net/display/usr/0f0d40535b5b4103.js"
  charset="euc-jp"></script>

これの実際の中身は、次のようになっています。

document.write('<div class=¥'blogpeople-main¥'>');
document.write('登録されたサイト')
     :
     :
document.write('</div>');
document.write('<div class=¥'blogpeople-powered-by¥'>');
document.write('<br /><a href=¥'・・・¥' target=¥'_blank¥'><img src=¥'・・・¥' border=¥'0¥' alt=¥'Powered By BlogPeople¥' /></a>');
document.write('</div>');

ここに使われているdocument.write内容をとりあえず配列に入れておけば良いのですが、それには次のようにします。

(function(){
  var alts = []; // document.writeの内容を入れておく配列を準備 
  d._write = d.write; // オリジナルはコピーしておく
  d.write = function(s){ alts.push(s);} // d.writeを新たに定義
  var src = "http://www.blogpeople.net/display/usr/0f0d40535b5b4103.js";
  var script = d.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('charset', 'euc-jp');
  script.setAttribute('src', src);
  d.getElementsByTagName('head')[0].appendChild(script);
  addEvent(window, "load", function(){
   o("_webRing").innerHTML = alts.join(""); // 指定した場所に流し込む
   d.write = d._write; // d.writeを元の定義に戻しておく
  });
 }());

 ポイントは、既存のdocument.writeを新たに、

document.write = function(s){ alts.push(s); }

と再定義している点です。ここではaltsという配列に退避させています。こうすることで、document.writeによる書き出しを待つことなく、残りのページレンダリングを進めていくことが出来ます。このスクリプトで、SafariでもIE6でもFirefoxでもきちんと動くことを確認しています。

 小生のブログであるmartin.p2b.jpのwebRingLink と、このサイトにあるwebRingLink とは同じ外部スクリプトを呼び出しているのですが、比較のために、このサイトのwebRingは上記の手法で、martin'sの方は従来の方法で呼び出しています。BlogPeopleのサーバーレスポンスは素早いので、なかなか差が実感できにくいかと思いますが、このサイトのやつは、(サイドバーのHTMLソースはdocument.writeよりも後にもかかわらず)サイドバーが先に表示されて、最後にwebRingのリストが表示されるのに対して、martin'sの方は、HTMLソースの順序通り、webRingリスト→サイドバーという順序で表示されています。

 ちなみに、このサイトのwebRingは、ppBlogの「ページ作成機能」を使って作成しているのですが、具体的に、どのような内容になっているのか、理解の一助のために添付しておきますね。

 まぁ、こんなアプローチもありますよということで

添付ファイル: webRing.txtattachedIcon 

 


— posted by martin at 05:09 pm   commentComment [14]  pingTrackBack [1]

mob.phpアップデート au 1XWINに対応

category-icon

 こんばんは。au使いのユーザーの方から、モブログ投稿が出来ないということで、モブログのデバッグモードファイルを送付していただき、対応出来た様なので、mob.phpの最新版を添付しておきます。ちなみに、今回新たに対応したであろう機種は

  1. A5518SA au CDMA1X機(三洋)
  2. W41H au CDMA1X WIN機(日立)

の2種です。情報を下さったユーザーの方に、この場を借りてお礼申し上げます。

添付ファイル: mob.phpattachedIcon 

 


— posted by martin at 08:23 pm   commentComment [3]  pingTrackBack [1]

タグ機能、モブログ、ローカルプレビュー周り

category-icon

 おはようございます。タグ機能関連で不具合があったのでそれのフィックス版です。あと、モブログに関して、ケータイの機種によっては、タイトルが取得できなかったり、添付ファイルつきの投稿が上手く出来ないなどの症状があり、とりあえず原因が分かった所のfixと、ローカルプレビュー周りの正規表現を少しいじってみました(my_parser関数)。

 ここでひとつ、みなさんにお願いがあるのですが、ケータイからの投稿が上手くいかないという方は、管理画面のモブログの設定のところで「デバッグモードを有効にする」をオンにして投稿すると、デバッグモードとなり、ownerディレクトリに、デバッグ用のテキストファイルが作成されるので、これをinfo@p2b.jpもしくはmartin.info.jp@gmail.com宛てに添付していただければ、可及的な対処が可能になると思います。こればかりは、実際にケータイが出力する文字列を見てみないと何ともしがたい部分なので。。生成されるファイルには、本来ならば、送信元のメールアドレスが記載される部分があるのですが、これは自動的にfoo@example.comに置換するような処置を入れています。お手数ですが、ご協力いただけると助かります。

 例によって、差分ファイルをば(7月17日版から18-19日にかけての修正含む)。

 


— posted by martin at 07:47 am   commentComment [10]  pingTrackBack [1]

現時点でのlib.jsほか動画ファイル関連

category-icon

 Opera9でのAjax関連のスクリプト動作がちょいと怪しいので、一応Opera9でも何とか動くようにlib.jsを修正してみました。以前から、OperaのinnerHTMLの挙動は不審な点があるんですよね。バージョン9になっても、それほど改善はされていないのかなぁ。自分のところにくるOpera使いは3パーセント台で決して多くはないのですが、モダンなブラウザであることに変わりはなく無視するわけにもいきませんので。

 あと、バージョンアップに際して、動画ファイルの扱いを見落としていました。バージョン1.5からは、今後のポッドキャストや音楽ファイルの配布なんかを見据えて、これまでの動画ファイルは画像ファイルと切り離して、画像ファイルと、その他のメディアファイルという扱いにしています。それに伴い動画ファイルのログ形式もちょっと変えたのでした。これは、スクリプトの方で、1.4系もカバーするようにします。ついでといっては何ですが、メディア関連の画像が抜けていたり、ほかに、メディア関連の出力タグに、これまでスタイルシートのクラス名を指定していなかったので、これもクラス名を設けました(class="media-part")ので、添付しておきますね。

 現状では、画像データベースは備えていますが、メディアデータベースはまだです。まぁ、これは画像データベースの流用で、ある程度簡単に実装できると思いますが、動画・音声系は、もうちょっと機が熟してからでよいかなと思っています。バージョン1.5.5ぐらいで? 個人的には、ポッドキャストを勉強して、それをある程度扱えるようになったらと思っています。外枠を捉えるのはそう難しいものではないでしょう。実際のコンテンツ作成は別として。

 というわけで、1.4系の動画ファイルを考慮した、そして、今後のメディア関連の扱いもある程度意識したutils.phpとutils_admin.phpを添付しておきます。その他、メディアアイコンと最新版のlib.jsを添付しておきます。

添付ファイル: 1153060946_DIFF060717.zipattachedIcon 

 


— posted by martin at 12:32 am   commentComment [15]  pingTrackBack [2]

T: Y: ALL: Online:
Created in 0.0052 sec.
prev
2006.7
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