Posts tagged class
ブログにコードを表示するときに便利な dp.SyntaxHighlighter
4今までのデザインでは pre タグ or code タグで PHP などのコードを表示していましたが、今回のサーバ移転&デザイン変更を機にコードの表示に SyntaxHighlighter を使用してみました。
syntaxhighlighter – Google Code
特徴
- 多言語対応のシンタックスハイライト
- 行番号を付加
- クリックするだけでクリップボードへのコピーが可能(IEのみ)
- 別ウィンドウでソースを表示可能
- コードの印刷が可能
- JavaScriptオフの状態では、テキストエリアにてコードが表示される
WordPress テーマを作成する(2)
1前回は style.css と index.php だけを作成して最低限のブログを表示させました。なぜこれだけのファイルで表示ができるかというと選択しているテーマに必要なファイルがない場合は wp-content/thmems/default 内のファイルを使用するためです。
今回はヘッダファイルとフッタファイルを作成します。
ヘッダファイル
テーマディレクトリに header.php を作成し下記のような内容にしました。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
<title><?php bloginfo('name'); ?> <?php wp_title(); ?></title>
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats -->
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<?php wp_head(); ?>
</head>
<body>
<div id="page">
<div id="header">
<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
<div class="description"><?php bloginfo('description'); ?></div>
</div>
ゼロから書くのは大変なので default/header.php をコピーして必要最低限のみ残してみました。
フッタファイルの作成
ヘッダ同様に footer.php ファイルを作成し、下記のようにしました。
<div id="footer">
<?php bloginfo('name'); ?> Powered by <a href="http://wordpress.org/">WordPress</a><br />
<a href="<?php bloginfo('rss2_url'); ?>">Entries (RSS)</a>
and <a href="<?php bloginfo('comments_rss2_url'); ?>">Comments (RSS)</a>.
</div>
</div>
<?php wp_footer(); ?>
</body>
</html>
ヘッダとフッタのみのブログができました
CakePHP1.2 バリデーションで共通ルールを作成するときに便利な userDefined
0CakePHP1.2 バリデーションのルールを調べているときに気になっていた Validation クラスにある userDefined に関して調べてみました。
cake/libs/validation.php
function userDefined($check, $object, $method, $args = null) {
return call_user_func_array(array(&$object, $method), array($check, $args));
}
と定義されています。
call_user_func_array は PHP の関数で、関数やクラスのメソッドをコールすることができます。
つまり独自バリデーションがこれを使用して実装できるということです。
使用方法はモデルに以下のようにバリデーションを定義します。
var $validate = array(
'field' => array('rule' => array('userDefined', 'Model', 'method_name')),
);
function method_name ($data) {
/*
バリデーションのチェック
エラーなら false 、エラーなしなら true を返す
*/
}
ただこれだと下記のように書けるのであまりありがたみがない。
var $validate = array(
'field' => array('rule' => array('method_name'),
);
何に使えばいいのかと考えたところ、クラス名、メソッド名が指定できるのでシステムで共通のバリデーションを設定するときに使えるのではと思いました。多分これが一番うれしいところではないかと思います。
※ただ、app_model.php に共通にしたいバリデーションチェック用のメソッド名を書けばそれでいけるような気もする。
PHP5.2 DateTime クラスのメモ
1PHP5.2 以降から日付の処理に DateTime クラスが使用できるようになりました。
PHP5.2 で開発していて DateTime クラスを使用する機会があったのでメモしておきます。
DateTime オブジェクトの生成
$date = new DateTime();または、
$date = date_create();
で生成します。
引数には strtotime 関数が理解できる形式を指定することができます。
指定しないとデフォルトは “now” です。つまり現在の日時になります。
日付の操作
strtotime と同じようなことが DateTime::modify() でできます。
$data->modify('+1 day');
指定方法は strtotime と同じです。
日付のフォーマット
date(‘Y-m-d’) のように出力する日付のフォーマットを指定できます。
$date->format('Y-m-d');
指定できる形式は date 関数と同じです。
まとめ
2008年3月12日の翌日を Y-m-d 形式で出力するには下記のようになります。
$date = new DateTime("2008-03-12");
$date->modify("+1 day");
echo $date->format("Y-m-d");
yetibot@naver.com対策
1最近サーバが少し重かったので調べてみると
Yeti/0.01 (nhn/1noon, yetibot@naver.com, check robots.txt daily and follow it)
という UserAgent が激しくアクセスしていました。このボットはあまり行儀のよいボットではないようですのでブロックすることにしました。
httpt.conf
<Directory />
SetEnvIf User-Agent Yeti badrobot
Order Allow,Deny
Allow from all
Deny from env=badrobot
</Directory>
ただ、よく UserAgent を変更するボットのようですが、これでしばらく様子みることにします。
