Home > Archives > 2008-04

2008-04

Welcome The VisiBone PHP Skinny Sheet

先日購入した、VisiBone の PHP Skinny Sheet が、昨日届きました!

サイトでは ship って書いてあったので、船で来るんだと思ってたのですが、パッケージには AIRMAIL と書いてある。。。?
ともあれ、ルンルン気分で(表現方法は検討の余地があるな。。。)パッケージを開けてみると出てきたプロダクト。A4サイズのシート上にところ狭しと並べられた関数や言語仕様の説明が、如何に自分が勉強不足かを思い知らされます。全部英語なので(当たり前)解読に時間がかかるかもしれないけど、勉強しなおすいいきっかけになりそうです。

写真右のブックは Browser Book で、28ページにも及ぶ資料です。

Color Card
最近めっきり聞かなくなりましたが、Web Safe Color のカラーチャートです。大きなポスターやマウスパッドも持ってます。
Fonts
PC,Mac,Linux でサポートされているフォントの見本と、そのサポートの割合(?)なんかを表現しています。残念ながらこれは2004エディションのため、メイリオが乗ってないです。あと Osaka も欲しいところw
Characters
記号や特別な文字の実体参照を表すコード表。Netscape で使えないとか、バージョン4未満のUAで使えないなどといった情報と共に簡潔にまとめられています。
Tags
xhtml1.1、html4.01をベースに、タグのアトリビュートをまとめた見開き2ページ。
Styles
CSS2のプロパティ見開き2ページ。個人的にはどのチートシートよりきれいにまとまってると思う。
JavaScript
JScript,ECMAScript,ECMA-262 のチートシート、見開き2ページ×2(4ページ)。
DOM
LeveL 1,2 – JavaScript Document Object Model for web browsers 見開き2ページの DOM チートシート。最近のDOM流行りに乗りたいならこういう基礎のところちゃんとやっとかないとダメだと思うんだよね。
Regular Expressions
JavaScript 用の正規表現チートシート。見開き2ページ。正規表現の細かい差、みたいなのは複数言語を扱う人間からすると、めんどくささの象徴だと思うんだけれども、このシートがあればもう JavaScript では迷わないと思うw
Legend
要は凡例ページ。これだけたくさんの情報が紙面いっぱいにあるのに、混乱しないで済むのはこのページのおかげ。
MySQL CARD 1
裏表2ページの MySQL Statements カード。MySQL で利用できるSQL文の構文集。オラクルのマニュアルを見たことがある人にはかなりわかりやすいシート。
MySQL CARD 2
裏表2ページの MySQL Functions カード。MySQL で利用できる Function の紹介。正直使ったことのない Function がたくさん載ってます。(もちろん中規模以上のシステム開発ではよほどの事情がないかぎり専用関数の利用は極力避けるべきだと思うけど。)ちなみに、どちらもアルファベット順に並んでいて、結構見やすい。
PHP Big Book
今回の目玉w PHP 4,5 の言語仕様、関数、構文等々をまとめた8ページ。まだ全然読みきれてないけど、わかってるところとそうじゃないところを切り分けるのにもってこいだと思う。よく整理されてるし。
Visibone から届いたPHP Skinny Sheet と Browser Book

さーて、このGWはこの2つにかかりっきりになりそうです。

モバイルコンテンツ向け AdSense のイメージ広告対応に対応

  • 2008-04-24 (木)
  • test

しゃれでスポンサー枠にQRを貼って、細々と毎日難読漢字を出題している、漢字読めるかな?ですが、モバイル コンテンツ向け AdSenseがイメージ広告に対応しましたということなので、早速対応してみました。

漢字読めるかな?は、管理人がMTからWPに乗り換えた際の実験用として、また、プラグイン導入やテーマの記述テストなどのために作ったしゃれコンテンツなのですが、一応WPの未来日投稿(将来時刻で公開する)で、毎朝6時に難読漢字を紹介し続けています。なんら問い合わせを受け付けないスタンスなので、表示だけ、という条件で携帯CSS対応も全て統一したテンプレートでまかなうという暴挙もやっていますw

というわけで、ヘルプによると、最大48時間以内にイメージ広告の配信が始まるようなので、土曜の朝までにはイメージ広告が出稿される、はず?なので、ぜひ注目して見ててください!(なんで?w

あ、一応補足しておくと、サイドバーのところにあるQRコードがソレで、一応パソコンからでも各携帯からでも見れるようになってます。今回の対応は、モバイルコンテンツ向けアドセンスなので、QRから辿って携帯で見てくださいね。そしてついでにしゃれでブックマークに。。。w

wp-contact-form-7 に簡単に定数(っぽいもの)をつける方法のメモ

WordPress 2.5 でも使えるコンタクトフォームプラグインは数多くありますが、当サイトでは、Contact Form 7 Plugin を使わせていただくことにしました。

比較的わかりやすい設定ですし、デフォルトでもそこそこ使えるので重宝しているわけですが、どうしてもメール本文中に、送信日時や、送信者のUA情報などを含めたいと考えました。しかし、上記ページ中のコメント欄にあるとおり、デフォルトの機能の中にはそういった機能はついていません。

というわけで、ちょっとだけいじってみたところ、とりあえずうまくいったので公開してみます。あくまでこのプラグインを使いつつ、どうしても利用者情報が欲しいという場合の応急処置であること、利用に関しては自己責任、ということでお願いします。また、この情報は2008年4月20日現在の最新版である、7.1.7.7 を対象にしています。

    function mail_callback($matches) {
        if (isset($_POST[$matches[1]])) {
            $submitted = $_POST[$matches[1]];
            if (is_array($submitted))
                $submitted = join(', ', $submitted);
            return stripslashes($submitted);
        } else {
            return $matches[0];
        }
    }

wp-contact-form-7.php の160行目付近の上記 function を、下記のように修正します。

    function mail_callback($matches) {
        if (isset($_POST[$matches[1]])) {
            $submitted = $_POST[$matches[1]];
            if (is_array($submitted))
                $submitted = join(', ', $submitted);
            return stripslashes($submitted);
        } else {
// メール送信時に定数(っぽいもの)を追加
            if ( $matches[1] === 'WPCF7_SEND_DATE'){return date("Y/m/d G:i:s T");}
            if ( $matches[1] === 'WPCF7_SEND_UA')  {return $_SERVER['HTTP_USER_AGENT'];}
            if ( $matches[1] === 'WPCF7_SEND_HOST'){return $_SERVER["REMOTE_HOST"] ? $_SERVER["REMOTE_HOST"] : $_SERVER["REMOTE_ADDR"];}
            return $matches[0];
        }
    }

これにより、管理画面でメールのメッセージ本文のテキストエリアに、[WPCF7_SEND_DATE]、[WPCF7_SEND_UA]、[WPCF7_SEND_HOST]を加えることで、メールの本文中にそれぞれ、送信日時、ユーザーエージェント(ブラウザ)、送信元ホスト情報(サーバ名かIPアドレス)を出力することが可能になります。実際にはUSER_AGENTの出力には少し気を使ったほうがいいはずですが、お問い合わせという性質上、とりあえずこれで問題ないと思います(基本的に受け取るのは自分だけでしょ?)。もしセキュリティ的にこうしたほうが安全だ、というのがあれば教えていただけたら幸いです。

作者の方には特にコンタクトしないままいじってしまったのですが、とりあえず勝手処理、ということで。くれぐれもこの修正で生じた問題などで作者の方にご迷惑をおかけしないようにお願いします。

注意(よく読んでください)

  • 本当に、作者の方に迷惑かけるのだけは止めてください。
  • 自分の作業メモなので、これについてのサポートは勘弁してください。
  • メッセージ本文でしかテストしていませんw タイトル欄やメールアドレスのところにこれらを設定することはないと思いますが、もし設定して何かよくないことが発生しても自己責任でお願いします(たぶんメールが送れないとかそういう目にあいます)。
  • 定数名の WPCF7 部分を、適宜書き換えて使ってください。単にメール送信直前の処理で、値を置き換えているに過ぎません。もしハッキング目的でコレを悪用しようと思えば、例えば POST データに対して、この定数名でデータを送り込まれた場合、そのデータが優先されてしまいます(一応処理速度と自己設定優先で後ろに置いているので)。この意味がわからない場合は、この修正を行わないほうが無難です。

ついでだから利用者情報を取得したい主な理由とか書いておこうかな(コメント6093へのレスじゃないけどw)

  • 入力されたメッセージ以外にも、情報を整形してコピーを送信者に返す場合に、送信日時は必要
  • 受信したメールを元にやり取りを始める場合、受け取るメーラの種類によっては返信時に元の投稿日時を引き継がないものがある(なので日時が入ってると便利)
  • UA情報を追加することで、単なる閲覧利用者ではなく、問い合わせをしてくれる利用者のUAの傾向を把握しやすくなる。それによりサイトのデザインやそのチェックの方向性を定めやすくなる
  • 送信元ホスト情報は(たとえ気休めでも)セキュリティ向上に一役買う。また、いざという時に、IP-BANしやすくなる。
  • まぁ、ぶっちゃけ友人に問い合わせのメールにそういうデータ入れたいんだけど、って言われちゃっただけなんだけどねw

The VisiBone PHP Skinny Sheet

懐かしいサイトから久しぶりのアナウンスがありました。The VisiBone PHP Skinny Sheet の発売のお知らせです。

Visibone はもう何年も前から素敵なプロダクトを提供していて、うちにもいくつかのプロダクトがあります(写真参照)。今回は、php のシートのお知らせだったわけですが、現在のメインの作業がphpなこと、このサイトもWordPress(つまり php & MySQL )で動いていることなどから、躊躇なくお買い上げしてしまいましたw だって、A4サイズの両面印刷、ラミネート加工の上に、php4 と php5 の違いを色つきで表示、様々なトピックまでついて $10 とは!もう買うしかないじゃないか。ジャマイカ。

さらに、メインの作業でも MySQL を使っているので、今回は奮発して、Skinny Sheet の他に、同ページの下のほうにある、Browser Book, PHP Big Book, MySQL のフルセット、ラミネート加工版($90)もあわせてお買い上げw 都合 $100 我ながら苦笑が止まりません。大丈夫か、俺。。。

それはさておき、デザインも素敵で実用的なこのプロダクト。Office L では自信を持って技術者の皆さんにお勧めします!

以下余談。。。
以前(もう6年くらい前と10年くらい前?)、写真のプロダクトを買った時に、管理人さん(Mr.Bob Stein)とひーひー言いながら翻訳ソフトを駆使してメールのやり取りをした時、Perl のSheet を作ってくれって話をしていて、がんばって作るよ!ってなことを言ってたんだけど、まだ出てこない。。。もう Perl 6 がいつでるかいつでるかって感じなのになぁ。

カラーチャートのマウスパッドですカラーチャートのポスターです

我が家にあるプロダクトの一部。この他にも HTML のブックや他のマウスパッドなども。

function.php で widget の出力内容を変更するメモ

WordPress 2.5 のデフォルトテーマなどに含まれている function.php はサイドバーの名称が数字で表される上に、なぜか全体を <li> で囲むという仕様になっています。(これはもちろん、sidebar.php が widget 全体を <ul> で囲っているからだが。)別にそれがダメだと言い切るつもりはないけど、イマイチ気持ち悪い感は否めないんです。

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '<li id="%1$s" class="widget %2$s">',
        'after_widget' => '</li>',
        'before_title' => '<h2 class="widgettitle">',
        'after_title' => '</h2>',
    ));
}

そこでこの <li> を外して <div> に変更してみました。ついでにCSSで処理しやすいように内側に <div> を追加し(ソコdiv厨とか言わないw)さらにきれいに改行して見栄えもよくしてみました(注:2008年4月16日現在の当サイトでは使っていません。別のサイトで採用しています)。

if ( function_exists('register_sidebar') ){
    register_sidebar(array(
        'name' => 'sidebar1',
        'before_widget' => "\\n<div id=\"%1\$s\" class=\"widget %2\$s\">\\n<div class=\"widget-inner\">\\n",
        'after_widget' => "\\n</div>\\n</div>\\n",
    ));
}

参考になるのは次の点

before(after)_title の記述は削除
デフォルトと同じ記述だったら不要なので。もちろん class 名を変更したい場合にはつければOK。
name で名前をつけた
管理画面で表示されます。複数のサイドバーをセットする際に管理しやすいです。
before(after)_widget への代入を”(ダブルクォーテーション)にする
\n(改行のしるし)を活かせるので、出力結果をきれいにフォーマットできます。ただし、中に含まれる”をエスケープする必要があります。
閉じ忘れない
内部的に div を増やしたので閉じ忘れないこと。MT でのCSS作成に慣れた人には、inner class は使い勝手がよいと思います。これの最大のメリットは、最近流行りのビッグフッターをウィジェットで作成するときのコントロールのしやすさだと思うので(横に並べてマージンをとったり、背景画像で装飾したりしやすくなる)。

WP に限らずテンプレートシステムからのアウトプットは汚くなりがち。ソース上の見栄えがちょっとでもきれいになって、それをうれしい、と思う人の参考になれば幸いです。

WPのバージョンアップとテーマ変更

最近他のサイトのことばっかりで、本体をいじる暇がなかったんだけど、ちょっと時間ができたので、このサイトのWordpressを、RC1から正式版にアップグレードし、ついでにテーマのテストで、Wordpress Magazine にしてみました。

インストールガイドもついてて丁寧なんだけど、ちゃんとやってないのでいろんなところが壊れているwぼちぼち直していかなきゃ。。。

Home > Archives > 2008-04

Search
Feeds
Meta


Return to page top