Archive for the 'PHP' Category

WordPressでTITLEタグの中身をカスタマイズする

8月 31 2009 Published by hkitago under PHP,WordPress,コーディング

wordpressのタイトルを表示形式を変更[to-R]にて説明されているやり方を参考に/blog/wp-content/themes/default/header.phpのtitleタグの中身を下記の通りに設定した。

引用元: WordPressでtitleタグの中身をカスタマイズする.

Twitter や WordPress に投稿をする際にブックマークレットを使う機会が増えているのだが、WordPress のタイトルタグの出力方法に癖があって空白文字が題名そのものの先頭や末尾に付与されてしまう問題を解決しようと試みた。条件としては引用した投稿で述べられているようにトップページの表示にのみブログのタイトルを表示し、個々の投稿や検索、カテゴリ別に表示する場合はブログのタイトルを表示せず、投稿の題名や検索語、カテゴリ名だけを表示するというものになる。
screenshot(2009-08-31 13.38.32)
具体的な作業は wp-includes/general-template.php にある wp_title 関数の $sep 前後に付いている空白文字を削除するだけだ。

if ( !empty($title) )
  $prefix = "$sep";
 
// Determines position of the separator and direction of the breadcrumb
if ( 'right' == $seplocation ) { // sep on right, so reverse the order
  $title_array = explode( $t_sep, $title );
  $title_array = array_reverse( $title_array );
  $title = implode( "$sep", $title_array ) . $prefix;
} else {
  $title_array = explode( $t_sep, $title );
  $title = $prefix . implode( "$sep", $title_array );
}

余談まで、この関数を呼び出している header.php のタイトルタグの中にある PHP コードも三項演算子を使うと3バイト分だけより短いものになる。:-)

!wp_title('', false)?bloginfo('name'):wp_title('');
wp_title('');if(!wp_title('', false))bloginfo('name');

WordPress のコードそのものは学習するのに不向きと言われているが、製品として多くの人に愛されているのは素晴らしいことだと思う。経験上から現実はそんなものだと理解しているつもりでも実践するのは難しい。

No responses yet

文字連結の処理速度

7月 13 2009 Published by hkitago under JavaScript,PHP,コーディング

具体的に文字列連結はHTMLタグを出力するために使用することが多く処理の速度は気になるところだ。

文字列を加算していくのは、計算の途中で、abcde、abcdeabcde、abcdeabcdeabcdeという文字列オブジェクトがその都度生成されていくのでメモリにやさしくない。巨大な文字列の連結にはjoinを使ったほうが良い。数が大きくなると速度に差が出てくる。

引用元: 最速インターフェース研究会 :: 実践JavaScriptリファクタリング.

PHPの結果が気になったのでこちらの記事を参考に(若干コードを変更)して実験してみたところ、連結の方法が最も速いと言う結果になった。元記事のサンプルコードでも統計的に同じ結果(DoS攻撃してスミマセン)なので、PHPのバージョンや環境の明記が必要だと思った。尚今回の環境はMac OS X 10.5.7のPHP 5.2.8 (cli) (built: Feb 5 2009 21:21:13) をApache/2.2.11 (Unix) (Server built: Feb 3 2009 01:54:45)のモジュールとして利用している。

特にIEで顕著なのだが、JavaScriptはappendChild関数を使うより文字連結したタグをinnerHTML関数で差し込む方が速いということも同種の問題が起因しているのだろうか。これらの問題は、コンピュータ上のWebkitやChromeであれば意識する必要もあまりないのかもしれないが、iPhoneなど非力ハード上ではまだまだ注意すべき問題だろう。

screen-capture-11

// 追記編
$time1 = getmicrotime();
$str = null;
for($n = 0; $n < $count; $n++){
    $str.= $str1;
    $str.= $str2;
    $str.= $str3;
}
$time1 = getmicrotime() - $time1;
 
// 連結編
$time2 = getmicrotime();
$str = null;
for($n = 0; $n < $count; $n++){
    $str.= $str1.$str2.$str3;
}
$time2 = getmicrotime() - $time2;
 
// 非連結編
$time3 = getmicrotime();
$str = null;
for($n = 0; $n < $count; $n++){
    $str.= "$str1$str2$str3";
}
$time3 = getmicrotime() - $time3;
 
// 配列編1
$time4 = getmicrotime();
$arr = array();
for($n = 0; $n < $count; $n++){
  array_push($arr, $str1, $str2, $str3);
}
$str = implode('', $arr);
$time4 = getmicrotime() - $time4;
 
// 配列編2
$time5 = getmicrotime();
$arr = array();
for($n = 0; $n < $count; $n++){
  $arr[] = $str1;
  $arr[] = $str2;
  $arr[] = $str3;
}
$str = implode('', $arr);
$time5 = getmicrotime() - $time5;

No responses yet

Fw: F’s Garage:OpenIDが面白いのはWebサービス間の連携

3月 04 2008 Published by hkitago under PHP,ネットワーク

F’s Garage:OpenIDが面白いのはWebサービス間の連携
RSSを近視眼的に「ただのブログの更新情報取得ツール」として捕らえると世界が狭くなる。

OpenID について、このように判断が曖昧なままだったので考えてみた。

hkitago.com blog: Re: ウェブを「匿名の卑怯者」の楽園から脱却させるには – 池田信夫 blog
OpenID に関しては面白い取り組みではあるが、これは全てではないし何よりもまだ歩き出したばかりだ。ディレクトリサービスと認証サービスに関してはプラットフォームを問わずいつも問題となることでもある。

使う側の視点で具体的に、コメント機能は Twitter で実装して欲しいと願う。タブ機能が付いたiChat から投稿できるという利点は捨てられない。しかし今のところ Jabber の対応を待つことになるのだが、それも時間の問題だろう。

参考:Jabber, OpenID And “teh shiny” [tail -f carlo.log]
“shiny” という単語が印象的ではあるが、以前に日本にシリコンバレーを作るには神風を起こして気候を変えるしかないと思っていたのは満更うそばかりでもなく、The Burning Man Project に参加した知人も飽きるばかりの太陽を浴びたと言っていたことを思い出す。そして海岸沿いで変化の小さい温度、適度な湿度環境があればハードにもソフトにも最高の環境が生まれることに間違いがない。(と、オレンジ色を妄想してみる。)

話を戻すと、組み込まれたサービスではあるが Youtube のコメント機能も Ajax を使った非同期投稿を可能にしているし、同様に Frickr の場合は編集作業に心地良さを覚える。

さて PHP を使ってもサービスを始めることができる OpenID について技術的に考えると、”I can’t find anything that is technically superior. ” なのかもしれない(開発以上に運用努力が必要になると予想している)が、発想を実行に移し保守と運用を行うという意志は素晴らしいことだと思うし、世界を変えることに繋がることを期待している。

そう言いつつも、未だアカウントを作成していないのは2つのドメインネーム、openid.comopenid.net の whois 結果が異なっていたからである。一方はドメイン保持目的のようなので特に気にはならないが、それでも心配であれば日本版でアカウントを取得した方が無難だろう。

結局のところ、まずサーバー構築を考えるのは性分としか言いようがない。丁度アカウント管理を導入したい案件があるのでやってみようと思う。

No responses yet

Setting your Apache2 and PHP5 after upgrading Leopard

10月 26 2007 Published by hkitago under PHP

After upgrading Leopard (not clean install), I could not browse my local web server. Then I have decided to set Apache2 and PHP5 as follows.

  1. Copy the old config file to the new directory for Apache2.
    sudo cp /etc/httpd/users/{user_name}.conf /etc/apache2/users/{user_name}.conf
  2. Comment out this line in /etc/apache2/httpd.conf to enable PHP5.
    #LoadModule php5_module  libexec/apache2/libphp5.so
  3. Restart Apache.
    sudo apachectl restart

That’s it. Now, my only question is whether or not I should change the group name in my home directory. On Tiger, the group name is same as the owner name, but it has changed to “staff” (like past OS X Server system) on Leopard.
Apple Store(Japan)

No responses yet