ppBlog Notice: LINE 148 of log.php: Uninitialized string offset: 4

ppBlog official

メイリオのススメ

category-icon

たまにはCSSの話でも。あ、前の記事のオートポスト添付、060630が最新版です。lib.jsの最新版も同梱してます。SafariでもAjaxコメントが開くようにしたりとか、角丸スクリプトをちょい修正したりとか。

 Windowsの次期バージョンであるVistaには、日本語向けに新しく「メイリオ MeiryoG」が標準フォントとして搭載されるそうですが、Windows標準の日本語フォントでは初めてClearTypeに対応しているんじゃないでしょうか。

 マックOSXで日本語を含んだページを見るたんびに、何てフォントが綺麗なんだ!って思った方は自分だけではないはず。これは、アンチエイリアス処理を施してフォント境界のギザギザ(ジャギー)を目立たなくしているからスムーズに見えるんだと思うのですが、何でマックに出来てウィンドウズに出来ないんだ!と思ってしまいます(マック使いの方、失礼)。まぁ、来週の月曜にはマックブック(くろ)が自分の手元にも届くわけですが。。

 で、この進化したフォントのメイリオを今のWindowsXPにも入れてみて、とりあえず次世代の雰囲気を味わいたいですよね。ググればいくらでも出てくるのですが、結構いろんなとこで配布しています(ここLink とか)。純正の開発バージョンということらしいですが。インストールの仕方は各ブログを見ていただくとして、なかなかいい感じです。小さいサイズでもきちんとエイリアス処理が効いて(ClearType有効時)、これまでの、情けないくらいギザギザのMS P ゴシックなどよりは、はるかに見やすく、これでマックと肩を並べられるかもです。

 ちょっとだけ気になる点は、アンチエイリアス処理が微妙な文字があることです。例えば、このブログの3つほど前の記事のタイトルに「更新」という文字を含んでいますが、この「更」の字の最後の一筆が何だかジャギーじゃないですか? これは自分のPCのグラフィックの問題なのか、それともXPに入れているからなのか分かりませんが。

 あとは、カタカナの文字高が漢字のそれと同じだったり。通常、カタカナは全体のバランスを考えて、ひらがなのサイズと合わせているものですが。まぁ、この辺りはデザイナーのポリシーもあるんでしょう。慣れない内は、「何かカタカナでかくない?」って思います。

 ほかには、文字幅が若干広くなるので、もしブログなどのスタイルシート(CSS)で、このメイリオをフォント指定すると、ページのデザインによっては表示が崩れる可能性もあるかと思います。

 百聞は一見に如かずなので、各OSでのスクリーンショットを載せておきますね。
osx-shot
マックOSXでのショット。更新の「更」に注目。スムーズですね。
win-mspgothic
次がウィンドウズのMS P ゴシックでのショット。ギザギザですねぇ。
win-meiryo
これが次世代フォント「メイリオ」。総じてキレイ。だけど「更」に注目。マックに比べるとまだか?カタカナのサイズにも着目

 いかがでしょうか。メイリオは確かに明瞭ですが、「更」の字はまだジャギーな感じは否めません、マックに比べると。自分のPCだけの問題なら良いのですが。ズームアップした画像もどうぞ。

osx-zoom
マックOSX
win-meiryo-zoom
メイリオ。まぁまぁ。
win-mspgothic-zoom
MS P ゴシック。論外(笑)。

 どうでしょうか。何だかケチを付けてしまいましたが「メイリオ」が魅力的なフォントであることに変わりはありません。皆さん、現行のパソコンにもMeiryoフォントをインストールしましょう。 以下、余談になりますが、最初メイリオを見たとき、自分が中学生ぐらいのときに実家にあった東芝のワープロ「ルポ Rupo」のフォントを思い出しました。それに似ているよなと。昔は、パソコンなんてなくて文書作成はワープロでしたからね。あの頃が全盛期だったよなぁ、ワープロ。で、この東芝ルポのフォントというのが、明朝体でもゴシック体でもなく、何だかその中間のスタイルだったんですよね。軒並み、他社がこぞって明朝体を採用していたのに何でだろうと思ったものです。ブラザーの明朝体なんか、特にきれいだなぁと感じたものです。同じ24ドット(!)でもこんなに違うんだって、妙に感心したり。最初はルポのフォントに不満を持っていましたが、その内に、まぁ、これはこれでオリジナリティーがあってよいかもと思うようになりました。古き良き思い出ですね

追記

「東芝ルポ フォント」でGoogleで検索したら、一番上のサイトLink に、上述フォントのショットがありました。そうそうこんなんでした:)http://rupo.nanzo.net/tosfont.htmlLink

 


— posted by martin at 05:56 am   commentComment [8]  pingTrackBack [0]

Ajaxによる自動投稿スクリプト

category-icon

 フォーラムで,一旦投稿した後に,引き続き編集作業を継続できないかという問い合わせがありました。ppBlogでは,公開される通常の投稿であれ非公開のドラフト投稿であれ,ポストした後は一旦トップページを表示するような流れになっている訳ですが,確かに,そんなのもありだなぁと思った次第。編集画面から投稿後のトップページへの切り替えはJavaScriptを使っていて,とりあえずは,この行き先を変更すれば,投稿後に編集画面に戻ることが出来ます。これはnaoKさんLink が解決法をフォーラムの方に書いてくれてます。 →http://forum.p2b.jp/index.php?mode=box&UID=2870&display=allLink

 で,ppBlogはAJAXWの技術をコメント表示などに用いており,またログイン認証ではAJAXでポストということもしています。なので,記事の投稿もAJAX経由でいけば,編集画面から離れることなく,バックグラウンドでのドラフト投稿が出来そうだと思い,スクリプトを書いてみました。

 まずは,AJAX経由でポストするので,そのための準備をします。POST送信で送るパラメータは Array.push() メソッドを用いて,どんどん追加していって,最後に Array.join('&') で連結すればOKです。これをppBlogに組み込まれているAjax.post()メソッドを使ってPOST送信すれば良いです。これは以下のような感じになります(細かな条件振りなどは省略して書いています)。

function AjaxAutoPost(){
 var posts = [];

 posts.push('mode=update');
 posts.push('UID='+o('UID').value);
 posts.push('draft=1');
 posts.push('type=autopost');
 posts.push('category='+o('category').value);
 posts.push('title='+encodeURIComponent(o('_title').value));
 posts.push('author='+encodeURIComponent(o('author').value));
 posts.push('com='+encodeURIComponent(o('Page1').value));
 
 posts = posts.join('&'); // posts配列を&で連結

 Ajax.post("admin.php", posts, function(data){ // AJAXでPOST送信
  [data processing]
 });
}

 これをバックグラウンドで,自動的に一定時間ごとに行いたいので,setTimeoutを用いて,この関数を繰り返し呼び出せばOKです。

 次にサーバーサイドですが,こちらはPHPでの処理となります。日本語をJavaScriptでエンコードすると,もとの文字コードが何であれ,必ずUTF-8化して送出してくれます。なので,ppBlogで扱う文字コードがUTF-8以外の場合は(例えばデフォルトでのEUC-JP),その文字コードに変換してからログに記録するようにします。

autopost-shot1
新規作成画面での初期状態。

autopost-shot2
オートポスト起動中はアイコンが変わっています。

 このオートポスト機能を追加したppBlogでの記事作成画面のスクリーンショットを載せておきます。図にあるように,自動ポスト開始ボタンがあって,それをクリックすることによって,一定時間毎でのオートポストが開始されます。始動中は,ボタンが「一時停止」のボタンに変化していて,もう一度ボタンを押すと,オートポストを中断します。ボタンの隣のテキストボックスには,最後に自動ポストした時刻が表示されます。ボタンで自動投稿オンオフの切り替えが可能です。

 この機能を取り入れることの利点は,バックアップも兼ねる点でしょうか。記事をシコシコ書いて,いざ送信!って送信するとサーバーのレスポンスが悪かったりして,折角したためた記事がパーになってしまった経験が,自分は少なくとも3回あります。この自動ポストを使って,初めのうちからドラフト投稿しておけば,こういう痛い状況は極力減ると思います。

 当初は,記事をブラウザのクッキーに保存するオートセーブ機能みたいなやつも念頭にあったんですが,クッキーにはせいぜい4キロバイトぐらいが限度で(参照:クッキーの最大サイズ制限についてLink ),この容量ではとても長文には耐えられませんし,そもそもクッキーの用途とはずれている気もしますし,ここはppBlogで比較的簡単に実装できるAjaxを使うアプローチを取ってみました。

 まだ細かいところまでチェックしたわけではないんですが,試しに使ってみたいという方はどうぞ。簡単な説明文も一緒にZIPしておきます。ちなみに,editor.jsのお尻の方に今回のスクリプトを追記していますが,そこにでてくる60000という数字が,自動投稿の間隔を表しています。この場合は,60000ミリ秒すなはち1分おきにオートポストするということです。ここの数字を変えることでお好きな間隔に設定できます

 


— posted by martin at 09:35 pm   commentComment [15]  pingTrackBack [0]

ppBlog1.5RC2最終版

category-icon

 ワールドカップのサッカーボールが,どうもゴレンジャーのマスクに見えてしまうmartinです。黒いゴーグルのようだからクロレンジャーということになるのかな。そういえば,とうとうMacBookのクロを注文してしまいました。これからは,1つのノートに複数のOSが入ってるなんてのが当たり前になっていくのかな。  前置きはこれぐらいにして。なんだかこれから忙しくなりそうな感じなので,いい加減ppBlogのRC2も最終版にして,次のリリースを正式版とします。正式版でバグが見つかっても,それはマイナーアップデートでカバーしていくということで。

 前回のリリースが6/22でした。そのリリースでmoby.phpを大幅に書き換えたんですが,共有ユーザのことを忘れていまして,6/22版のままでは管理者以外の共有ユーザも記事の編集が出来てしまいますので,これは最新版で上書きして下さい。moby.phpとmoby_admin.phpはセットです。

 あと,モブログ関連では,自分のブログにSO902iから投稿して分かったのですが,タイトル文字が空白で区切られていると,タイトルの前半部分しか投稿に反映されなかったのと,あと,本文に文章がなくて写真のみ添付というパターンでも上手く投稿できなかったので,その辺りを修正しています。

 ppBlogには,星の数による段階評価(以下スター評価)を簡単に挿入できるボタンも用意してあるんですが,あまり使われていないせいか,先日になって初めて,これに関する不具合が見つかりました。星の数を10個以上に設定すると上手くプロンプトダイアログが動きませんで。あと,1つの記事にスター評価は1つの場合しか想定していなかったのですが,複数のスター評価を付けれる(←こういう表現はもうそろそろ正しい日本語として定着したかなぁ,「付けることが出来る」って書くと長いから)ようにしました。こんな感じで。  これは,editor.jsをいじっています。

 同じJavaScriptでいくと,角丸コーナースクリプトあたりをちょっと変更しています。js/lib.jsです。角丸コーナースクリプトは,class="corner-play"というクラス名をもつ任意のブロックを自動的に角丸化するスクリプトですが,インラインでボーダーの色を指定できるようにしました。例えば,次の記述は,

<div class="corner-play" style="border-color:red;">
 これは角丸コーナーのデモ
</div>

ppBlog上では,自動的に,

 これは角丸コーナーのデモ

となります。ちなみに次のように,幅や背景色を一緒に指定してもOKです。

<div class="corner-play"
 style="border-color:gold; width: 230px; background:whitesmoke;">
 これは角丸コーナーのデモ
</div>
 これは角丸コーナーのデモ

 さらに言っておくと,引用を表すHTMLタグであるBLOCKQUOTEclass="quoted" というクラス名を指定すると,これは引用符付きの角丸コーナーとなります。例えば,次の指定だと,

<blockquote class="quoted">
 <p style="font:italic 500 16px/1.5 Times New Roman;">
 These boots are made for walking, and that's just what they'll do
one of these days these boots are gonna walk all over you.
—Nacy Sinatra</p>
</blockquote>

These boots are made for walking, and that's just what they'll do one of these days these boots are gonna walk all over you. —Nancy Sinatra

 ppBlogでは,これらを自動的にやってくれるので楽チンですね。あ,中には,別にこんな効果は必要ないよという方もいると思います。その際は,js/lib.jsの最後の方825-826行目にあたりを

//roundedStyle(d);
//roundedStyle(d, true);

とコメントアウトすればOKです。

 JavaScript関連が長くなってしまいました。あと,大事な変更点としては,「排他的ログイン」というのを実装してみました。これは,管理者を含む共有ユーザーがログイン中は,ほかのユーザーは,管理者といえど別のパソコンからでもログイン出来ないというものです。これを解除するには,明示的にログアウト処理を行うか,あるいはセッションの有効期限が切れれば自動的に解除となります。デフォルトではこの機能はオフになっています。この機能のために,owner/ini.inc.phpに定数が1つ追加になりました。あまり定数は追加したくないので,定数追加はこれが最後でしょう。EXCLUSIVE_LOGIN という定数がそれです。

 他,個人的に気になるところはちょくちょく手直しをしています。例えば,PHP5.1.3からは,TRUEFALSE,NULLが本当の定数として扱われるようです(参照→PHP 5.1.3の地味なパフォーマンスチューニングLink )。なので,プログラムソース上で目に付いたTruetrueは,大文字に直したりしてます。いや,やっぱり定数は大文字というのが落ち着くので。すべてを書き直したわけではないんですが。。

 長くなりましたが,例によって,エクスプローラー上でみて,6/22以降に更新のあったファイルを軒並みピックアップしたものを添付しておきます。ふぅ。

添付ファイル: DIFF060626.zipattachedIcon 

 


— posted by martin at 08:34 pm   commentComment [58]  pingTrackBack [0]

moby.phpは大幅更新

category-icon

こんばんは,martinです。

 前々回あたりで,キモの関数集であるutils.phpを一般表示用と管理者用の2つに分割しましたが,同じことがモバイル機器からのアクセス用であるmoby.phpにも言えるなぁと思ったり,ほかにも修正・改善すべき点がありましたので,moby.phpは大幅刷新となりました。結果,一般表示向けのmoby.phpmoby_admin.phpとの2つに分かれています。moby.phpはファイルサイズも小さくなり(25%減ぐらい),モバイル向けとしてはベターな選択ではと。

 これまでのmoby.phpでは,ppBlog本体では有効な対コメントスパムの仕組みを導入していなかったので,これもコメントスパム関連設定が効くように修正しています。ナビゲーション周りのインターフェイスも微妙に変えています。

 また,moby.phpの修正に伴い,編集や削除処理をutils_admin.phpと共通化させたので,utils.phpやutils_admin.phpも変更があります。

 他は,write.inc.phpedit.inc.phptabindexを加えたり,js/lib.jsのcomment_in_situ関数を修正したりしてます。

 皆さんからの貴重なフィードバックにより,RC2の完成度としては,かなりプラトーに達してきた感があります。ここで大きなバグがないようなら,そろそろ正式版のリリースとしても良い頃合かなと思っています。感謝です。

 一応,修正のあったファイル群をまとめて添付しておきます

 ここからは余談ですが…,
もっと読む»
サッカー,なかなか厳しいものがありますね。「ブラジルに2点差以上で勝つことが最低条件っ!」と至るところで言われているので,それだけで良いような気分になりますが,これってオーストラリアがクロアチアに勝たない場合という条件下での話なんですよね。オーストラリアが勝った時点で,日本が5−0で勝とうがアウトのようで。

 そもそもサッカーは狩猟採集民族向きのスポーツと思うわけで。サッカーボールなんてのは,まさに仕留めるべき獲物です。日本人は農耕民族だろうから,キビキビ動かないといけないスポーツは苦手なんじゃないでしょうか。体格がそういう風には出来ていない。バスケットボールしかりです。日本人は,野球みたいな,のんびりとやれるスポーツが向いているに決まっています。

 あー,でも日本には決勝トーナメントにぜひとも進んでもらいたいなぁ。絶対盛り上がるだろうに。2年後ならまだしも,4年後って長いですよね。。そろそろ巻先発で。

 あ,あとここまでの2試合,日本にいるとどうも都合の良い時間に試合が行われるなぁと思った方も多いのではないだろうか。自分は,午後10時からなんてタイミング良いなぁと思ってました。以下に挙げるリンクが参考になるかもしれない。事実がどうなのかは,当事者のみぞ知るところであるが,こういう情報って,ブログがあればこそ,ネット上で瞬く間に広がるんですよね。一昔前では考えられないことです。いい時代に生きているものです →W杯 クロアチア対日本 0-0 日本苦戦の戦犯は…Link

 


— posted by martin at 02:07 am   commentComment [29]  pingTrackBack [0]

いくつか修正

category-icon

追記[2006/6/20 22:39:28]

trackback.phpですが,utils_admin.phpをインクルードする記述が抜けていました。ローカルから,この記事にテストのPINGを打って,消そうとしてエラーが出たので気づきましたf(--; 8行目あたりに
include_once('utils_admin.php');

の追加をお願いします。</追記ここまで>

ppBlogでは,複数のページにわたる記事を簡単に作成できますが,2ページ目以降に画像を挿入すると,画像パスのスラッシュが投稿処理の際に抜けるために,画像がきちんと表示されないというご指摘がありました。これはutils_admin.phpの101行目あたりを

$extended = str_replace("/$id".'_', "/${_id}_", $extended);

とされて下さい。スラッシュがひとつ抜けていました。あと,強制改行をオンにしていると,タグのLIDT,DDの後に<br />が入るようなので,これは,utils.phpの602行目あたりを

$blockLevel = 'div|pre|ol|ul|dl|li|dt|dd|form|blockquote|fieldset|table|tr|td|p|center|object|h[r123456]|!';

とすればよいと思います。ブロックレベルのタグに追加しました。

 あとは,細かいとこですが,stat/view.phpにて,相手ホストが適切なURLを返さない場合にNoticeレベルのエラーが出ることがあるようなので,その辺りを回避しています。

 他には,テーマディレクトリの画像でinfo2.pngが抜けていました。これはトップレベルのImagesディレクトリにもあると思うので,それをコピーなどされて下さい。あ,あと,modulesディレクトリ中にgallery2.inc.phpがあると思いますが,これはバックアップ用に取っておいたのをそのままにしていました。これは削除されて構いません。  最後に,トラックバックのスクリプトで,NGワードなどにひっかかったIPアドレスをブラックリストに登録する仕組みを入れてあるのですが,IPアドレスの変数をきちんと設定していませんで。これも修正しています。なお,ソースを見れば分かりますが,ブラックリスト入りのIPアドレスなどをメールで知らせる処理も入れていますが,これはコメントアウトしています。試されたい方は,コメントアウトを外して有効にしましょう。もっとも,スパム業者は,IPアドレスは偽装したり返さないことがあるので,IPアドレスはいつも取得出来るわけではないですが。

 以上,修正のあったファイルを添付しておきます(utilsadmin.phpはutils_admin.phpです)。

添付ファイル: utilsadmin.phpattachedIcon  utils.phpattachedIcon  view.phpattachedIcon  trackback.phpattachedIcon 

 


— posted by martin at 12:48 pm   commentComment [2]  pingTrackBack [0]

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