<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>ありんく tech-log</title>
	<atom:link href="http://www.alink.co.jp/tech/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alink.co.jp/tech/blog</link>
	<description>株式会社ありんくのウェブ技術ブログ。主にPerlとjQueryを扱っています</description>
	<pubDate>Wed, 01 Sep 2010 05:16:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>ja</language>
			<item>
		<title>[perl] SledgeでText::Xslateを使う</title>
		<link>http://www.alink.co.jp/tech/blog/2010/09/01/perl-sledge%e3%81%a7textxslate%e3%82%92%e4%bd%bf%e3%81%86/</link>
		<comments>http://www.alink.co.jp/tech/blog/2010/09/01/perl-sledge%e3%81%a7textxslate%e3%82%92%e4%bd%bf%e3%81%86/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 05:16:36 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=1001</guid>
		<description><![CDATA[
こんにちは、松本です。
3月の最終エントリ以後、暑すぎて ダラダラし過ぎました。Blogをちゃんと書くようにします。
今回はperlのフレームワーク &#34;Sledge&#34; でテンプレートエンジンの &#038;qu [...]]]></description>
			<content:encoded><![CDATA[
<p>こんにちは、松本です。<br />
3月の最終エントリ以後、<a href="http://tenki.jp/rader/" target="_blank">暑すぎて</a> ダラダラし過ぎました。Blogをちゃんと書くようにします。</p>
<p>今回はperlのフレームワーク &quot;<a href="http://sl.edge.jp/" target="_blank">Sledge</a>&quot; でテンプレートエンジンの &quot;<a href="http://search.cpan.org/dist/Text-Xslate/" target="_blank">Text::Xslate</a>&quot; を使います。</p>
<div class="modPuki_contents">
<a id="contents_Object id #302"></a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #302_0"> Template-Toolkitについて</a></li>
<li><a href="#content_Object id #302_1"> Text::Xslate</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #302_2"> インストール</a></li>
</ul>
</li>
<li><a href="#content_Object id #302_3"> Sledgeのテンプレートクラス</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #302_4"> Prog/Pages.pm （一部）</a></li>
<li><a href="#content_Object id #302_5"> Proj/Template/Text/Xslate.pm</a></li>
</ul>
</li>
<li><a href="#content_Object id #302_6"> 速度比較</a></li>
<li><a href="#content_Object id #302_7"> 気になった点、ハマッた点</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #302_8"> ハマッた点</a></li>
</ul>
</li>
<li><a href="#content_Object id #302_9"> まとめ</a></li>
</ul>
</div>
<h2 id="content_Object id #302_0" class="modPuki_head">Template-Toolkitについて</h2>
<p>Sledgeで利用するテンプレートエンジンは <a href="http://template-toolkit.org/" target="_blank">TT（Template-Toolkit）</a> がデファクトスタンダードであります。<br />
（HTML::Templateも使えますが・・・）</p>
<p>TTは、テンプレートエンジンとして非常に柔軟性が高く、大変に使いやすいのですが何せ、処理が重いです。</p>
<p>6A（シックス・アパート）のBlogサービスの、Voxも<a href="http://www.slideshare.net/miyagawa/how-we-build-vox" target="_blank">Template-Toolkitを利用しているらしい</a>のですが</p>
<pre class="modPuki_pre">Template Toolkit: profile. Wow! Template Toolkit takes 60% of the request time.</pre>
<p>との事で、リクエストの処理全体の6割をTTが占有してしまっているという驚愕の事実らしいです。</p>
<p>弊社でも <a href="/tech/wiki/index.php?Perl%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%88MVC%EF%BC%89%2FSledge%2FClearSilver" target="_blank">ClearSilver</a> 、 <a href="/tech/wiki/index.php?Perl%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%88MVC%EF%BC%89%2FSledge%2FText-MicroTemplate" target="_blank">Text::MicroTemplate</a> 、 <a href="/tech/wiki/index.php?Perl%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%88MVC%EF%BC%89%2FSledge%2FTenjin" target="_blank">Tenjiin</a> などを Sledge に組み込めるか、試行錯誤してみたのですが<br />
TTと全く違う文法で記述されたHTMLテンプレートが、プロジェクト毎に混在するとなると、運用面で人的負荷や稼動コストが増える可能性があったため、見送っていました。</p>
<hr class="modPuki_full_hr" />
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>（参考）How we build Vox - SlideShare</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://www.slideshare.net/miyagawa/how-we-build-vox" target="_blank">http://www.slideshare.net/miyagawa/how-we-build-vox</a></li>
</ul>
</li>
<li>（参考2）Sledgeから利用する各種テンプレートエンジンの設定例 - ありんく Tech Wiki
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="/tech/wiki/index.php?Perl%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%88MVC%EF%BC%89%2FSledge#rfeaae0e" target="_blank">http://www.alink.co.jp/tech/wiki/index.php?Perl%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%88MVC%EF%BC%89%2FSledge#rfeaae0e</a></li>
</ul>
</li>
</ul>
<h2 id="content_Object id #302_1" class="modPuki_head">Text::Xslate</h2>
<p><a href="http://search.cpan.org/dist/Text-Xslate/" target="_blank">Text::Xslate</a> は、<a href="http://search.cpan.org/~gfuji/" target="_blank">藤 吾郎さん</a> が CPAN で公開されているモジュールで、精力的にUPDATEされているテンプレートエンジンです。</p>
<p>TTとほとんど同一の文法でHTMLテンプレートを記述することができ、更に高速動作するモジュールでして<br />
先の 6割の処理の部分を抑える事ができるのでは？と期待大です。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>Text::Xslate</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://search.cpan.org/dist/Text-Xslate/" target="_blank">http://search.cpan.org/dist/Text-Xslate/</a></li>
</ul>
</li>
<li>Text::Xslate 公式ページ
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://xslate.org/" target="_blank">http://xslate.org/</a></li>
</ul>
</li>
</ul>
<p>TTの文法により近づけるために <a href="http://search.cpan.org/perldoc?Text::Xslate::Bridge::TT2Like" target="_blank">Text::Xslate::Bridge::TT2Like</a> モジュールも併せて利用します。</p>
<h3 id="content_Object id #302_2" class="modPuki_head">インストール</h3>
<p>cpanm で さっくりインストールです。</p>
<pre class="modPuki_pre">cpanm -S Text::Xslate Text::Xslate::Bridge::TT2Like</pre>
<h2 id="content_Object id #302_3" class="modPuki_head">Sledgeのテンプレートクラス</h2>
<p>ズバリ、以下のテンプレートクラスをPages.pmから呼び出しています。</p>
<h3 id="content_Object id #302_4" class="modPuki_head">Prog/Pages.pm （一部）</h3>
<p>シンタックスハイライトを付けてある、全コードは <a href="/tech/wiki/index.php?Perl%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%88MVC%EF%BC%89%2FSledge%2FText-Xslate#lf839495" target="_blank">こちら</a></p>
<pre class="modPuki_pre">sub create_template {
    my ($self, $file) = @_;
    my $tmpl = Proj::Template::Text::Xslate-&gt;new($file, $self);
    return $tmpl;
}</pre>
<h3 id="content_Object id #302_5" class="modPuki_head">Proj/Template/Text/Xslate.pm</h3>
<p>シンタックスハイライトを付けてある、全コードは <a href="/tech/wiki/index.php?Perl%2F%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%88MVC%EF%BC%89%2FSledge%2FText-Xslate#h2f3f9a9" target="_blank">こちら</a></p>
<pre style="height:24.6em;" class="modPuki_pre">package Proj::Template::Text::Xslate;

use utf8;
use strict;
use warnings;
#use base qw/Sledge::Template/;

use Text::Xslate;
use Scalar::Util;

use vars qw($Tx);
$Tx = '';

sub new {
    my($class, $file, $page) = @_;
    bless {
        _options =&gt; {
            filename =&gt; $file,
        },
        _params  =&gt; {
            config  =&gt; $page-&gt;create_config,
            r       =&gt; $page-&gt;r,
            session =&gt; $page-&gt;session,
        },
    }, $class;
}

sub add_associate       { Sledge::Exception::UnimplementedMethod-&gt;throw }
sub associate_namespace { Sledge::Exception::UnimplementedMethod-&gt;throw }

sub output {
    my $self = shift;
    #my %config = %{$self-&gt;{_options}};
    #my $input  = delete $config{filename};
    my $input  = delete $self-&gt;{'_options'}-&gt;{'filename'}
                           || Sledge::Exception::TemplateNotFound-&gt;throw(
                                   &quot;No template file detected. Check your template path.&quot;,
                              );
    if(!$Tx) {
        my %config = %{$self-&gt;{_options}};

        $config{syntax}    = 'TTerse';
        $config{header}    = [ qw/commons.inc/ ];
        $config{module}    = [ qw/Text::Xslate::Bridge::TT2Like/ ],
        $config{path}      = [ $self-&gt;{'_params'}-&gt;{'config'}-&gt;tmpl_path, $self-&gt;{'_params'}-&gt;{'config'}-&gt;tmpl_path . '/includes' ];
        $config{cache}     = 1;
        $config{cache_dir} = $self-&gt;{'_params'}-&gt;{'config'}-&gt;cache_dir . '/text_xslate_cache';
        $config{type}      = 'text';
        $config{function}  = {
            nl2br      =&gt; \&amp;Text::Xslate::Bridge::TT2Like::html_line_break,
            uri_escape =&gt; \&amp;Text::Xslate::uri_escape,
        };
        $Tx = Text::Xslate-&gt;new(%config);
        #warn &quot;[ CREATE TX ]&quot;;
    }
    unless (-e $input) {
        Sledge::Exception::TemplateNotFound-&gt;throw(
             &quot;No template file detected. Check your template path.&quot;,
        );
    }
    $input =~ s@/path/to/proj/view/@@;
    my $output = $Tx-&gt;render($input, $self-&gt;{'_params'});
    $self-&gt;finalize;
    return $output;
}

sub param {
    my $self = shift;
    if (@_ == 0) {
        return keys %{$self-&gt;{'_params'}};
    }
    elsif (@_ == 1) {
        return $self-&gt;{'_params'}-&gt;{$_[0]};
    }
    else {
        while (my($key, $val) = splice @_, 0, 2) {
            $self-&gt;{'_params'}-&gt;{$key} = $val;
        }
    }
}

sub finalize {
    my $self = shift;
    for my $key ($self-&gt;param()) {
        if( ! ref( $self-&gt;{'_params'}-&gt;{$key} ) || $key eq 'session' || $key eq 'r' || $key eq 'config') { next; }
        if (!Scalar::Util::isweak($self-&gt;{'_params'}-&gt;{$key})) {
            #warn &quot;[ WEAKEN ] &quot;.$key;
            eval { Scalar::Util::weaken($self-&gt;{'_params'}-&gt;{$key}) };
        }
        delete $self-&gt;{'_params'}-&gt;{$key};
    }
}

1;</pre>
<h2 id="content_Object id #302_6" class="modPuki_head">速度比較</h2>
<p>Template-ToolkitからText::Xslateに変更することで、大よそ 150% ぐらい、リクエストの処理速度が向上しました。</p>
<p>今まで 100req/sec だったものが 150req/sec に高速化された形です。</p>
<h2 id="content_Object id #302_7" class="modPuki_head">気になった点、ハマッた点</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>mod_perlのプロセスサイズが 120%ぐらい増えました。 メモリが少ない環境では要注意かも。</li>
</ul>
<h3 id="content_Object id #302_8" class="modPuki_head">ハマッた点</h3>
<p>Docsにも書いてある点がほとんどなので、ちゃんと読め！という部分なのですが・・・</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>[% INCLUDE &quot;header.inc&quot; %] など、 &quot;（ダブルクォーテーション）でファイル名を囲まないといけないです。</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>TTのオプションに存在する、&quot;ABSOLUTE&quot; が使えないので INCLUDE内のファイルに明示的に変数を渡さなければならないので</p>
<pre class="modPuki_pre">[%- INCLUDE &quot;header.inc&quot; WITH
    FOO = 'ふー'
 -%]</pre>
<p>などとWITHで記述します。</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>TTでいう、PROCESS、INSERT は使えないです。</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>マクロを呼び出すときに、[% macro_func %] でなく、[% macro_func() %] と () を付ける必要があります。</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>render($file,$param) で指定する $fileは path で指定された以下のファイルパスを指定します。（絶対パスではないです）</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>TTの PRE_PROCESS は Text::Xslate の new時に渡す引数の header に相当します</li>
</ul>
<h2 id="content_Object id #302_9" class="modPuki_head">まとめ</h2>
<p>Template-Toolkitとほとんど同一の記法で、基本差し替えるだけで<br />
Webアプリ全体の処理速度が向上しますので、是非ご利用されてみてはいかがでしょうか。</p>
<p>150%の処理速度向上が見込めましたので、次回プロジェクトでは試行してみたいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2010/09/01/perl-sledge%e3%81%a7textxslate%e3%82%92%e4%bd%bf%e3%81%86/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[PHP] peclのmemcachedを使ってみる</title>
		<link>http://www.alink.co.jp/tech/blog/2010/03/18/php-pecl%e3%81%aememcached%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/</link>
		<comments>http://www.alink.co.jp/tech/blog/2010/03/18/php-pecl%e3%81%aememcached%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 08:53:42 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=986</guid>
		<description><![CDATA[
peclでは memcacheモジュール が有名どころでありますが、 memcachedモジュール （&#34;d&#34;が最後にくっついた）というものもあり、こちらは libmemcached をベースにしたモジ [...]]]></description>
			<content:encoded><![CDATA[
<p>peclでは <a href="http://pecl.php.net/package/memcache" target="_blank">memcacheモジュール</a> が有名どころでありますが、 <a href="http://pecl.php.net/package/memcached" target="_blank">memcachedモジュール</a> （&quot;d&quot;が最後にくっついた）というものもあり、こちらは <a href="http://tangent.org/552/libmemcached.html" target="_blank">libmemcached</a> をベースにしたモジュールとの事です。</p>
<p>memcachedモジュールは digg の中の人が作成されたモジュールとの事で、リリース後まだ1年ぐらいですが<br />
get_multiをサポートなど今後の期待大のモジュールです。</p>
<p>ということで早速インストールしてみます。</p>
<h2 id="content_Object id #755_0" class="modPuki_head">libmemcached のインストール</h2>
<p><a href="http://tangent.org/552/libmemcached.html" target="_blank">http://tangent.org/552/libmemcached.html</a><br />
libmemcached 本体をDLします。</p>
<p>現時点（2010.3.18）では0.38が最新版ですのでこれをDLします。</p>
<p>※CentOS4でのインストール時には、gccのバージョンが違うためでしょうか、make時にエラーになりました。この場合にはlibmemcachedのバージョンを落として利用しました。（今回は0.32に落としたら通りました）</p>
<pre class="modPuki_pre">wget http://download.tangent.org/libmemcached-0.38.tar.gz
tar xvzf libmemcached-0.38.tar.gz
cd libmemcached-0.38</pre>
<p>32bit環境だとそのままのconfigureでエラーが発生するので、configure で若干の指定を追加します。<br />
※<a href="http://redbeardtechnologies.wordpress.com/2010/01/26/libmemcached-undefined-reference-to-__sync_fetch_and_add_4/" target="_blank">こちらのBlog</a> を参考にしました。</p>
<p>64bitの場合 （そのままで指定なし）</p>
<pre class="modPuki_pre">./configure</pre>
<p>32bitの場合</p>
<pre class="modPuki_pre">./configure -disable-64bit CFLAGS=&quot;-O3 -march=i686&quot;</pre>
<p>make -&gt; インストールします。</p>
<pre class="modPuki_pre">sudo make install</pre>
<h2 id="content_Object id #755_1" class="modPuki_head">pecl memcached をインストール</h2>
<p>以下から最新版のをDLします</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://pecl.php.net/package/memcached" target="_blank">http://pecl.php.net/package/memcached</a></li>
</ul>
<p>※github版はこれですかね・・？</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://github.com/digg/php-memcached" target="_blank">http://github.com/digg/php-memcached</a></li>
</ul>
<p>※memcached モジュールはdiggの中の人が作ったらしいです</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://codezine.jp/article/detail/3535" target="_blank">http://codezine.jp/article/detail/3535</a></li>
</ul>
<h3 id="content_Object id #755_2" class="modPuki_head">pecl コマンドでインストール</h3>
<p>一発でインストールです。楽ですね</p>
<pre class="modPuki_pre">sudo pecl install libmemcached</pre>
<h3 id="content_Object id #755_3" class="modPuki_head">ソースからインストール</h3>
<pre class="modPuki_pre">wget http://pecl.php.net/get/memcached-1.0.1.tgz
tar xvzf http://pecl.php.net/get/memcached-1.0.1.tgz
cd memcached-1.0.1
phpize
./configure
make install</pre>
<h2 id="content_Object id #755_4" class="modPuki_head">PHPに認識させる</h2>
<p>/etc/php.ini に以下を追加します</p>
<pre class="modPuki_pre">[memcached]
extension=memcached.so</pre>
<p>mod_php でも認識させるため Apache(httpd)を再起動させます</p>
<pre class="modPuki_pre">sudo service httpd restart</pre>
<h2 id="content_Object id #755_5" class="modPuki_head">確認する</h2>
<p>phpinfoでmemcachedモジュールとlibmemcached のライブラリが認識されているか確認します</p>
<pre class="modPuki_pre">$ php -R ' phpinfo(); exit(); ' | grep memcached

memcached
memcached support =&gt; enabled
libmemcached version =&gt; 0.38
Registered save handlers =&gt; files user sqlite memcached tokyo_tyrant</pre>
<p>ブラウザ越しに mod_php での挙動も確認します</p>
<pre class="modPuki_pre">&lt;?php
phpinfo();</pre>
<h2 id="content_Object id #755_6" class="modPuki_head">サンプルプログラム</h2>
<p>弊社ではCacheクラスを作り、それをインスタンス化して利用しています。</p>
<h3 id="content_Object id #755_7" class="modPuki_head">コマンドラインでのスクリプト</h3>
<p>きちんと実行されれば、 &quot;hoge&quot; と &quot;array&quot; をキーにした値が表示されると思います。</p>
<pre class="modPuki_pre">#!/bin/env php
&lt;?php

ini_set('memory_limit','-1');
set_include_path(&quot;.&quot;);

include_once('./Proj_Cache.class.php');

define('MEMCACHED1_HOST','localhost');
define('MEMCACHED1_PORT','11211');

$cache = Proj_Cache::get_instance();

$cache-&gt;set('hoge','ほげ');
$cache-&gt;set('array',array(1,2,3,4,5,6,7,8,9,10));

var_dump($cache-&gt;get('hoge'));
var_dump($cache-&gt;get('array'));</pre>
<h3 id="content_Object id #755_8" class="modPuki_head">Cacheクラス</h3>
<pre style="height:24.6em;" class="modPuki_pre">&lt;?php
class Proj_Cache {

    private static $singleton;
    private static $memcache;

    private function __construct() {
        $this-&gt;memcache = new Memcached();
        $this-&gt;memcache-&gt;addServer(constant('MEMCACHED1_HOST'),constant('MEMCACHED1_PORT'),0.1);
        if(defined('MEMCACHED2_HOST') &amp;&amp; defined('MEMCACHED2_PORT')) {
            $this-&gt;memcache-&gt;addServer(constant('MEMCACHED2_HOST'),constant('MEMCACHED2_PORT'),0.1);
        }
    }

    public static function get_instance() {
        if (!is_object(self::$singleton)) {
            self::$singleton = new Proj_Cache();
        }
        return self::$singleton;
    }

    public function get ($key) {
        // error_log(&quot;[ GET CACHE ] key:&quot;.$key);
        $var = $this-&gt;memcache-&gt;get($key);
        return $var;
    }

    public function set ($key,$value,$exp=60) {
        //error_log(&quot;[ SET CACHE ] key:&quot;.$key.&quot; exp:&quot;.$exp);
        $var = $this-&gt;memcache-&gt;set($key,$value,$exp);
        return $var;
    }

    public function remove ($key) {
        //error_log(&quot;[ REMOVE CACHE ] key:&quot;.$key);
        $this-&gt;memcache-&gt;delete($key);
    }

    /* @throws RuntimeException */
    public final function _clone() {
        throw new RuntimeException ('Clone isn now allowd against '. get_class($this));
    }

}</pre>
<p>いかがでしょうか、ほとんど自分の覚え書きだったりもするのですが・・・<br />
お役に立ちますと幸いです。</p>
<h2 id="content_Object id #755_9" class="modPuki_head">関連リンク</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>pecl-memcached</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://pecl.php.net/package/memcached" target="_blank">http://pecl.php.net/package/memcached</a></li>
</ul>
</li>
<li>新しいPHP用memcached拡張を diggが公開 PECLでバージョン0.1.0をリリース （codezine）
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://codezine.jp/article/detail/3535" target="_blank">http://codezine.jp/article/detail/3535</a></li>
</ul>
</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>libmemcachedライブラリ</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://tangent.org/552/libmemcached.html" target="_blank">http://tangent.org/552/libmemcached.html</a></li>
</ul>
</li>
<li>libmemcachedライブラリの configure 時のエラーへの対処法など
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://redbeardtechnologies.wordpress.com/2010/01/26/libmemcached-undefined-reference-to-__sync_fetch_and_add_4/" target="_blank">http://redbeardtechnologies.wordpress.com/2010/01/2&#8230;</a></li>
</ul>
</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>PHPのワンライナープログラム（phpinfoなどの確認でこの方法を良く使っています）</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://d.hatena.ne.jp/hnw/20090621" target="_blank">http://d.hatena.ne.jp/hnw/20090621</a></li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2010/03/18/php-pecl%e3%81%aememcached%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[PHP] PHP 5.3.2 を早速インストール</title>
		<link>http://www.alink.co.jp/tech/blog/2010/03/06/php-php-532-%e3%82%92%e6%97%a9%e9%80%9f%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/</link>
		<comments>http://www.alink.co.jp/tech/blog/2010/03/06/php-php-532-%e3%82%92%e6%97%a9%e9%80%9f%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 12:46:55 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=969</guid>
		<description><![CDATA[
こんにちは、松本です。
熱かったり寒かったり 中々でありますが、いかがお過ごしでしょうか。
TwitPepper（ツイットペッパー）の解説も完結しない中、perl案件をこなしつつ、PHPで動的にJSを書いていると中々なカオスであります。

PHP5.3.2のリリース に伴い、早速にアップグレードしまして メモがてらインストールログです。



 configure

 x86_64（64ビット）
 i386（32ビット）


 インストール
 eAcceleratorをインストール

 php.ini に記述追加
 phpのバージョンを再度確認
 eAccelerator を使う環境で VirtualHost をする


 関連リンク


configure
configureは CentOS5.3 で PHP5.3をインストール（YUM風オプションで） に倣いまして、yum風な設定にしています。
x86_64（64ビット）
以下をコピペしてお使い下さい
./configure &#8211;with-apxs2=/usr/sbin/apxs &#8211;build=x86_64-redhat-linux-gnu &#8211;host=x86_64-redhat-linux-gnu &#8211;target=x86_64-redhat-linux-gnu &#8211;program-prefix= &#8211;prefix=/usr &#8211;exec-prefix=/usr &#8211;bindir=/usr/bin &#8211;sbindir=/usr/sbin &#8211;sysconfdir=/etc &#8211;datadir=/usr/share &#8211;includedir=/usr/include &#8211;libdir=/usr/lib64 &#8211;libexecdir=/usr/libexec &#8211;localstatedir=/var &#8211;sharedstatedir=/usr/com &#8211;mandir=/usr/share/man &#8211;infodir=/usr/share/info &#8211;cache-file=../config.cache &#8211;with-libdir=lib64 &#8211;with-config-file-path=/etc &#8211;with-config-file-scan-dir=/etc/php.d &#8211;with-pic &#8211;with-bz2 &#8211;with-curl &#8211;with-exec-dir=/usr/bin &#8211;with-freetype-dir=/usr &#8211;with-png-dir=/usr &#8211;enable-gd-native-ttf &#8211;with-gettext &#8211;with-gmp &#8211;with-iconv &#8211;with-jpeg-dir=/usr &#8211;with-openssl [...]]]></description>
			<content:encoded><![CDATA[
<p>こんにちは、松本です。<br />
<a href="http://tenki.jp/forecaster/diary/detail-1909.html" target="_blank">熱かったり寒かったり</a> 中々でありますが、いかがお過ごしでしょうか。<br />
TwitPepper（ツイットペッパー）の解説も完結しない中、perl案件をこなしつつ、PHPで動的にJSを書いていると中々なカオスであります。</p>
<hr class="modPuki_full_hr" />
<p><a href="http://www.php.net/archive/2010.php#id2010-03-04-1" target="_blank">PHP5.3.2のリリース</a> に伴い、早速にアップグレードしまして メモがてらインストールログです。</p>
<div class="modPuki_contents">
<a id="contents_Object id #1105"></a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1105_0"> configure</a></p>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1105_1"> x86_64（64ビット）</a></li>
<li><a href="#content_Object id #1105_2"> i386（32ビット）</a></li>
</ul>
</li>
<li><a href="#content_Object id #1105_3"> インストール</a></li>
<li><a href="#content_Object id #1105_4"> eAcceleratorをインストール</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1105_5"> php.ini に記述追加</a></li>
<li><a href="#content_Object id #1105_6"> phpのバージョンを再度確認</a></li>
<li><a href="#content_Object id #1105_7"> eAccelerator を使う環境で VirtualHost をする</a></li>
</ul>
</li>
<li><a href="#content_Object id #1105_8"> 関連リンク</a></li>
</ul>
</div>
<h2 id="content_Object id #1105_0" class="modPuki_head">configure</h2>
<p>configureは <a href="/tech/blog/2009/10/02/php-centos53-%E3%81%A7-php53%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%EF%BC%88yum%E9%A2%A8%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%EF%BC%89/" target="_blank">CentOS5.3 で PHP5.3をインストール（YUM風オプションで）</a> に倣いまして、yum風な設定にしています。</p>
<h3 id="content_Object id #1105_1" class="modPuki_head">x86_64（64ビット）</h3>
<p>以下をコピペしてお使い下さい</p>
<p>./configure &#8211;with-apxs2=/usr/sbin/apxs &#8211;build=x86_64-redhat-linux-gnu &#8211;host=x86_64-redhat-linux-gnu &#8211;target=x86_64-redhat-linux-gnu &#8211;program-prefix= &#8211;prefix=/usr &#8211;exec-prefix=/usr &#8211;bindir=/usr/bin &#8211;sbindir=/usr/sbin &#8211;sysconfdir=/etc &#8211;datadir=/usr/share &#8211;includedir=/usr/include &#8211;libdir=/usr/lib64 &#8211;libexecdir=/usr/libexec &#8211;localstatedir=/var &#8211;sharedstatedir=/usr/com &#8211;mandir=/usr/share/man &#8211;infodir=/usr/share/info &#8211;cache-file=../config.cache &#8211;with-libdir=lib64 &#8211;with-config-file-path=/etc &#8211;with-config-file-scan-dir=/etc/php.d &#8211;with-pic &#8211;with-bz2 &#8211;with-curl &#8211;with-exec-dir=/usr/bin &#8211;with-freetype-dir=/usr &#8211;with-png-dir=/usr &#8211;enable-gd-native-ttf &#8211;with-gettext &#8211;with-gmp &#8211;with-iconv &#8211;with-jpeg-dir=/usr &#8211;with-openssl &#8211;with-pcre-regex=/usr &#8211;with-zlib &#8211;with-layout=GNU &#8211;enable-exif &#8211;enable-ftp &#8211;enable-magic-quotes &#8211;enable-sockets &#8211;enable-sysvsem &#8211;enable-sysvshm &#8211;enable-sysvmsg &#8211;enable-wddx &#8211;enable-ucd-snmp-hack &#8211;enable-shmop &#8211;enable-calendar &#8211;with-libxml-dir=/usr &#8211;enable-pcntl &#8211;enable-mbstring &#8211;enable-mbregex &#8211;with-gd=shared &#8211;enable-bcmath=shared &#8211;enable-dba=shared &#8211;with-db4=/usr &#8211;with-xmlrpc=shared &#8211;with-mysql=/var/lib/mysql  &#8211;with-mysql-sock=/var/lib/mysql/mysql.sock &#8211;with-mysqli=shared,/usr/bin/mysql_config &#8211;enable-dom=shared &#8211;enable-soap=shared &#8211;with-xsl=shared,/usr &#8211;enable-xmlreader=shared &#8211;enable-xmlwriter=shared &#8211;with-pdo-mysql=shared,/usr &#8211;enable-zip &#8211;enable-zend-multibyte &#8211;with-mcrypt</p>
<h3 id="content_Object id #1105_2" class="modPuki_head">i386（32ビット）</h3>
<p>以下をコピペしてお使い下さい</p>
<p>./configure &#8211;with-apxs2=/usr/sbin/apxs &#8211;build=i386-redhat-linux-gnu &#8211;host=i386-redhat-linux-gnu &#8211;target=i386-redhat-linux-gnu &#8211;program-prefix= &#8211;prefix=/usr &#8211;exec-prefix=/usr &#8211;bindir=/usr/bin &#8211;sbindir=/usr/sbin &#8211;sysconfdir=/etc &#8211;datadir=/usr/share &#8211;includedir=/usr/include &#8211;libdir=/usr/lib &#8211;libexecdir=/usr/libexec &#8211;localstatedir=/var &#8211;sharedstatedir=/usr/com &#8211;mandir=/usr/share/man &#8211;infodir=/usr/share/info &#8211;cache-file=../config.cache &#8211;with-libdir=lib &#8211;with-config-file-path=/etc &#8211;with-config-file-scan-dir=/etc/php.d &#8211;with-pic &#8211;with-bz2 &#8211;with-curl &#8211;with-exec-dir=/usr/bin &#8211;with-freetype-dir=/usr &#8211;with-png-dir=/usr &#8211;enable-gd-native-ttf &#8211;with-gettext &#8211;with-gmp &#8211;with-iconv &#8211;with-jpeg-dir=/usr &#8211;with-openssl &#8211;with-pcre-regex=/usr &#8211;with-zlib &#8211;with-layout=GNU &#8211;enable-exif &#8211;enable-ftp &#8211;enable-magic-quotes &#8211;enable-sockets &#8211;enable-sysvsem &#8211;enable-sysvshm &#8211;enable-sysvmsg &#8211;enable-wddx &#8211;enable-ucd-snmp-hack &#8211;enable-shmop &#8211;enable-calendar  &#8211;with-libxml-dir=/usr &#8211;enable-pcntl &#8211;enable-mbstring &#8211;enable-mbregex &#8211;with-gd=shared &#8211;enable-bcmath=shared &#8211;enable-dba=shared &#8211;with-db4=/usr &#8211;with-xmlrpc=shared &#8211;with-mysql=/var/lib/mysql  &#8211;with-mysql-sock=/var/lib/mysql/mysql.sock &#8211;with-mysqli=shared,/usr/bin/mysql_config &#8211;enable-dom=shared &#8211;enable-soap=shared &#8211;with-xsl=shared,/usr &#8211;enable-xmlreader=shared &#8211;enable-xmlwriter=shared &#8211;with-pdo-mysql=shared,/usr &#8211;enable-zip &#8211;enable-zend-multibyte &#8211;with-mcrypt &#8211;enable-mbstring</p>
<h2 id="content_Object id #1105_3" class="modPuki_head">インストール</h2>
<pre class="modPuki_pre">sudo make install</pre>
<p>以下のコマンドでPHPのバージョンが&quot;5.3.2&quot;と表示されればOKです。</p>
<pre class="modPuki_pre">$ php -v

PHP 5.3.2 (cli) (built: Mar  6 2010 20:49:38)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies</pre>
<p>httpd を再起動してPHPを読み込み直します。</p>
<pre class="modPuki_pre"># service httpd restart</pre>
<h2 id="content_Object id #1105_4" class="modPuki_head">eAcceleratorをインストール</h2>
<p><a href="http://eaccelerator.net/" target="_blank">eAccelerator</a> をデフォルトで利用しています。<br />
こちらも make し直して、新規にインストールします。</p>
<pre class="modPuki_pre">cd /usr/local/src
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
tar jvxf eaccelerator-0.9.6.tar.bz2
cd eaccelerator-0.9.6
phpize
./configure --enable-eaccelerator=shared
export SED=sed
sudo make
sudo make install</pre>
<h3 id="content_Object id #1105_5" class="modPuki_head">php.ini に記述追加</h3>
<p>※zend_extension は eaccelerator.so のインストール先を指定します。</p>
<p>※eaccelerator.cache_dir の指定先ディレクトリは予め作成しておきます。</p>
<pre class="modPuki_pre">[eaccelerator]
zend_extension=&quot;/usr/lib/20090626/eaccelerator.so&quot;
eaccelerator.shm_size = &quot;32&quot;
eaccelerator.cache_dir = &quot;/var/php-cache/eaccelerator&quot;
eaccelerator.enable = &quot;1&quot;
eaccelerator.optimizer = &quot;1&quot;
eaccelerator.check_mtime = &quot;1&quot;
eaccelerator.debug = &quot;0&quot;
eaccelerator.filter = &quot;&quot;
eaccelerator.shm_max = &quot;0&quot;
eaccelerator.shm_ttl = &quot;86400&quot;
eaccelerator.shm_prune_period = &quot;0&quot;
eaccelerator.shm_only = &quot;0&quot;
eaccelerator.compress = &quot;1&quot;
eaccelerator.compress_level = &quot;9&quot;
eaccelerator.keys     = &quot;shm_and_disk&quot;
eaccelerator.sessions = &quot;shm_and_disk&quot;
eaccelerator.content  = &quot;shm_and_disk&quot;</pre>
<h3 id="content_Object id #1105_6" class="modPuki_head">phpのバージョンを再度確認</h3>
<p>以下のコマンドでPHPのバージョンが&quot;5.3.2&quot;と表示され、eAccelerator がその下に記述されていればOKです。</p>
<pre class="modPuki_pre">$ php -v

PHP 5.3.2 (cli) (built: Mar  6 2010 20:49:38)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
   with eAccelerator v0.9.6, Copyright (c) 2004-2010 eAccelerator, by eAccelerator</pre>
<h3 id="content_Object id #1105_7" class="modPuki_head">eAccelerator を使う環境で VirtualHost をする</h3>
<p>eAccelerator を使う環境で VirtualHost をする場合、httpd.conf の 同 VirtualHost 内の セクションに以下を記述します。</p>
<p>name_space 名は、他と重複しなければ何でも良いです</p>
<pre class="modPuki_pre">   php_value eaccelerator.name_space &quot;project_name&quot;</pre>
<p>メモがてら程度の簡単なログですがお役に立てますと幸いです。</p>
<h2 id="content_Object id #1105_8" class="modPuki_head">関連リンク</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>PHP本家</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://php.net/" target="_blank">http://php.net/</a></li>
</ul>
</li>
<li>eAccelerator本家 ※0.9.6 がリリースされています。
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://eaccelerator.net/" target="_blank">http://eaccelerator.net/</a></li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2010/03/06/php-php-532-%e3%82%92%e6%97%a9%e9%80%9f%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[perl] TwitPepper・Webアプリの中の人（その1）</title>
		<link>http://www.alink.co.jp/tech/blog/2010/02/21/perl-twitpepper%e3%83%bbweb%e3%82%a2%e3%83%97%e3%83%aa%e3%81%ae%e4%b8%ad%e3%81%ae%e4%ba%ba%ef%bc%88%e3%81%9d%e3%81%ae1%ef%bc%89/</link>
		<comments>http://www.alink.co.jp/tech/blog/2010/02/21/perl-twitpepper%e3%83%bbweb%e3%82%a2%e3%83%97%e3%83%aa%e3%81%ae%e4%b8%ad%e3%81%ae%e4%ba%ba%ef%bc%88%e3%81%9d%e3%81%ae1%ef%bc%89/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 10:33:05 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[Apache]]></category>

		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=927</guid>
		<description><![CDATA[
こんにちは、松本です。寒い中 いかがお過ごしでしょうか。
1月冒頭に 年始の抱負 を書いた後、忙しさにかまけ、jQuery と PHP の新バージョンに心踊らせるのに精一杯で、Corei7の低TDP版 &#34;Cor [...]]]></description>
			<content:encoded><![CDATA[
<p>こんにちは、松本です。<a href="http://tenki.jp/forecaster/diary/" target="_blank">寒い中</a> いかがお過ごしでしょうか。</p>
<p>1月冒頭に <a href="/tech/blog/2010/01/05/%E9%9B%91%E6%84%9F-%E4%BB%8A%E5%B9%B4%E3%81%AE%E7%9B%AE%E6%A8%99%EF%BC%86%E6%89%80%E8%A6%8B%E3%81%AA%E3%81%A9/" target="_blank">年始の抱負</a> を書いた後、忙しさにかまけ、<a href="http://jquery.com/" target="_blank">jQuery</a> と <a href="http://php.net/" target="_blank">PHP</a> の新バージョンに心踊らせるのに精一杯で、Corei7の低TDP版 &quot;<a href="http://akiba-pc.watch.impress.co.jp/hotline/20100220/graph/gi_1ci7_860s.html" target="_blank">Corei7-860S</a>&quot; の登場にも気付かず今日気づきました。<br />
ついに Core2 Quad シリーズも世代交代か・・・と考え始めております今日この頃です。</p>
<p>今回弊社のサービス&quot;<a href="http://twitpepper.jp/" target="_blank">TwitPepper（ツイットペッパー）</a>&quot;の技術面から見た中身についてご紹介したいと思います。</p>
<hr class="modPuki_full_hr" />
<div class="modPuki_contents">
<a id="contents_Object id #1616"></a>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1616_0"> TwitPepper（ツイットペッパー）とは</a></li>
<li><a href="#content_Object id #1616_1"> TwitPepperのWebアプリケーション概要</a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1616_2"> L・・・Linux (CentOS 4 i386)</a></p>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1616_3"> 搭載するメモリ量について</a></li>
<li><a href="#content_Object id #1616_4"> ノウハウ集約のためにOSを統一</a></li>
<li><a href="#content_Object id #1616_5"> 関連リンク</a></li>
</ul>
</li>
<li><a href="#content_Object id #1616_6"> A・・・Apache 2.2 + Apache 1.3</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1616_7"> リバースプロキシ（Reverse Proxy）とは</a></li>
<li><a href="#content_Object id #1616_8"> Proxy側（フロント）・・・Apache2.2</a></li>
<li><a href="#content_Object id #1616_9"> App（アプリケーション）側・・・Apache1.3</a></li>
<li><a href="#content_Object id #1616_10"> Proxy 側（フロント）側の設定</a></li>
<li><a href="#content_Object id #1616_11"> App（アプリケーション）側の設定</a></li>
<li><a href="#content_Object id #1616_12"> 関連リンク</a></li>
</ul>
</li>
<li><a href="#content_Object id #1616_13"> M・・・MySQL 5.0</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1616_14"> MySQLのUTF8対応</a></li>
</ul>
</li>
<li><a href="#content_Object id #1616_15"> P・・・Perl（mod_perl）</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #1616_16"> 参考リンク</a></li>
</ul>
</li>
<li><a href="#content_Object id #1616_17"> 次回に続きます。</a></li>
</ul>
</li>
</ul>
</div>
<h1 id="content_Object id #1616_0" class="modPuki_head">TwitPepper（ツイットペッパー）とは</h1>
<p>TwitPepperとは、Twitterのデザインを外部から簡単に変更できるサービスを提供しているサイトです。</p>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td"><a href="http://twitpepper.jp/" target="_blank"><img src="http://www.alink.co.jp/images/works/twitpepper_top_240_170.jpg" alt="http://twitpepper.jp/" /></a></td>
<td class="modPuki_style_td">Blogサービスのスキン変更のように、自分もTwitterページをお手軽に色々なデザインに変更することができます。詳しくは <a href="http://twitpepper.jp/docs/about" target="_blank">TwitPepper内の解説ページ</a> をご覧下さい。</td>
</tr>
</tbody>
</table>
</div>
<p>遅ればせながらなのですが、昨年12.21にリリースしまして本年冒頭にプレスリリース、1月末に月間カレンダーシリーズをリリースしまして、好評頂いておりますサービスです。（3月分のカレンダーももうすぐアップされると思います。）</p>
<h1 id="content_Object id #1616_1" class="modPuki_head">TwitPepperのWebアプリケーション概要</h1>
<p>TwittPepperは、いわゆるLAMP構成で構成されています。LAMP構成の詳細は以下になっています。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>L・・・Linux (CentOS 4 i386)</li>
<li>A・・・Apache 2.2 + Apache 1.3</li>
<li>M・・・MySQL 5.0</li>
<li>P・・・Perl（mod_perl）</li>
</ul>
<p>それぞれの概要を記述していきます。</p>
<h2 id="content_Object id #1616_2" class="modPuki_head">L・・・Linux (CentOS 4 i386)</h2>
<p>TwittPepperのサーバは、<a href="http://server.sakura.ad.jp/dedicated/" target="_blank">さくらインターネットの専用サーバ</a> を使っています。OSはCentOS4（i386/32bit）を利用しています。現在はまだそれほどのトラフィックが発生していないので、いわゆる<a href="http://server.sakura.ad.jp/dedicated/old_connect.html" target="_blank">10Mスタンダード</a> がデフォルトで付いていますのでそちらを利用しています。<br />
※サーバを借りた時期がやや以前なので、旧ネットワークプランにリンクしています。</p>
<p>さくらさんでは、OSは他に<a href="http://server.sakura.ad.jp/dedicated/os.html" target="_blank">Ubuntu、FreeBSDなども選択可能</a> ですが、弊社では新規のサーバは全てCentOSで統一しています。</p>
<p>また、バージョンは基本5、で i386（32bit）を選択しています。<br />
（今回借りているサーバはやや以前に借りたサーバなので、バージョン4ですが、現在はデフォルトでバージョン5を選択しています。）</p>
<h3 id="content_Object id #1616_3" class="modPuki_head">搭載するメモリ量について</h3>
<p>x86_64（64bit）を選択しない理由は、64bit化するとWebアプリケーションのプロセスサイズが肥大化し、メモリ増強が必要になります。なのですが、さくらさんではメモリが月額料金にのっているため、月々のランニングコストに乗ってしまいます。</p>
<p>ランニングコストの内訳は以下になります。</p>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td">合計搭載メモリ量</td>
<td class="modPuki_style_td">専用サーバのランニングコスト</td>
</tr>
<tr>
<td class="modPuki_style_td">2G</td>
<td class="modPuki_style_td">専用サーバ標準料金のまま</td>
</tr>
<tr>
<td class="modPuki_style_td">4G(2G+2G)</td>
<td class="modPuki_style_td">+2,100円/月</td>
</tr>
</tbody>
</table>
</div>
<p>弊社ではできるだけランニングコストを抑えたいので、メモリサイズを最小で運用できるi386（32bit）で運用し、まずはデフォルトのメモリ2Gで運用。その後メモリが必要であれば+2G（月額2,100円追加）で最大4G(2G+2G)に拡張し、32bitOSの上限値までメモリを利用できる形で1つのWebアプリケーションを完結させています。</p>
<h3 id="content_Object id #1616_4" class="modPuki_head">ノウハウ集約のためにOSを統一</h3>
<p>もちろん、案件によってはメモリ8Gを必要とするサーバの構築もありますので、そういった場合は x86_84（64bit）のOSを積み、そもそもメモリ4Gの壁が存在しない形にしています。</p>
<p>以前はFreeBSD、RedHaｔLinux、FedoraCoreが混在していたのですが、CentOS以降は書籍・ネット上の資料がCentOSが一番多いと判断しまして、ノウハウの集約をする為にも、OSは統一しています。</p>
<p>自分は以前からFreeBSDをずっと使ってきていて、慣れている部分も多かったのですが・・・ yumの利便性と、案件によってはJavaが動作する環境が必要だったため、Linuxに移行しました。</p>
<h3 id="content_Object id #1616_5" class="modPuki_head">関連リンク</h3>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>さくらインターネット・専用サーバTOP</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://server.sakura.ad.jp/" target="_blank">http://server.sakura.ad.jp/</a></li>
</ul>
</li>
<li>さくらインターネット・専用サーバ サービス仕様
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://server.sakura.ad.jp/dedicated/specification.html" target="_blank">http://server.sakura.ad.jp/dedicated/specification.html</a></li>
</ul>
</li>
</ul>
<h2 id="content_Object id #1616_6" class="modPuki_head">A・・・Apache 2.2 + Apache 1.3</h2>
<p>WebサーバはApacheを利用しています。こちら、表記が2つあり Apache 2.2 と Apache 1.3 の2つが存在しています。<br />
これは、&quot;リバースプロキシ（Reverse Proxy）&quot; という技術を使ってWebアプリケーションを運用しているため、1つのサーバに2つのWebサーバが混在しているという形になっています。</p>
<h3 id="content_Object id #1616_7" class="modPuki_head">リバースプロキシ（Reverse Proxy）とは</h3>
<p>&quot;リバースプロキシ（Reverse Proxy）&quot; という技術は色々な場面で使われています。<br />
弊社では主に &quot;Webサーバを多段構成にする事で、負荷軽減を狙うための技術&quot; として用いています。<br />
とても簡単な図解なのですが、以下の様に構成しています。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>リバースプロキシ（Reverse Proxy）の構成例<br />
<a href="MOD_PUKI_WIKI_URL?%5B%5Bhttp%3A%2F%2Fwww.alink.co.jp%2Fimages%2Fworks%2Freverse_proxy_sample.gif%5D%5D" title="http://www.alink.co.jp/images/works/reverse_proxy_sample.gif"><img src="http://www.alink.co.jp/images/works/reverse_proxy_sample.gif" alt="http://www.alink.co.jp/images/works/reverse_proxy_sample.gif" /></a></li>
</ul>
<h3 id="content_Object id #1616_8" class="modPuki_head">Proxy側（フロント）・・・Apache2.2</h3>
<p>Proxy側（フロントエンド）は yum 経由でインストールできる、 <a href="http://httpd.apache.org/docs/2.1/ja/" target="_blank">Apache2.2</a> を利用しています。 yum が使えない場合はソースコードからApache2.2をインストールします。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>yum から Apache2.2をインストール</p>
<pre class="modPuki_pre">sudo yum install httpd</pre>
</li>
<li>ソースコードから Apache2.2をインストール
<pre class="modPuki_pre">./configure --enable-mods-shared=all
--enable-so
--enable-proxy
--enable-proxy-connect
--enable-proxy-http
--enable-proxy-balancer
--enable-ssl
--enable-dav
--enable-cache
--enable-disk-cache
--enable-mem-cache 

sudo make install</pre>
</li>
</ul>
<p>Apache2.2 を利用している理由は、まず Apache2.x 以上のApacheは SSLの扱いが簡単という点と、Apache2.2 以上では<a href="http://httpd.apache.org/docs/2.1/ja/mod/mod_mem_cache.html" target="_blank">mod_mem_cache</a> / <a href="http://httpd.apache.org/docs/2.1/ja/mod/mod_disk_cache.html" target="_blank">mod_disk_cache</a> と、 <a href="http://httpd.apache.org/docs/2.1/ja/mod/mod_proxy_balancer.html" target="_blank">mod_proxy_balancer</a> が使える点が大変に大きいです。</p>
<p>この2つが最初から使えることで、後々スケールアウトの必要が出てきた場合も柔軟に対応できます。</p>
<p>※＜参考＞Apache 2.0 のインストール<br />
何らかの事情でApache 2.2 ではなく、Apache 2.0 をインストールしなければならない場合は以下のように configure のセッティングを行っています。<br />
prefix の指定は、今後Apache2.2がインストールされたとしてもインストールディレクトリ先が重複しないための措置です。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>Apache 2.0.x 本体のインストール</p>
<pre class="modPuki_pre">./configure --prefix=/usr/local/apache20
 --enable-mods-shared=all
 --enable-so
 --enable-proxy
 --enable-ssl
 --enable-dav</pre>
</li>
</ul>
<h3 id="content_Object id #1616_9" class="modPuki_head">App（アプリケーション）側・・・Apache1.3</h3>
<p>アプリケーション側は Apache1.3を利用しています。<br />
TwitPepperでは <a href="http://perl.apache.org/" target="_blank">mod_perl</a> を利用しています。Apache1.3 のmod_perlを利用するために<br />
必要なミドルウエア、モジュールをソースからインストールします。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>Apache 1.3 本体のインストール</p>
<pre class="modPuki_pre">./configure
 --enable-shared=max
 --enable-module=all
 --disable-module=auth_dbm

sudo make install</pre>
</li>
</ul>
<p>続いて <a href="http://perl.apache.org/" target="_blank">mod_perl</a> をインストールします。 <a href="http://perl.apache.org/" target="_blank">mod_perl</a>  自体のダウンロードは <a href="http://perl.apache.org/download/index.html" target="_blank">こちら</a> から行うことができます。<br />
今回はApache1.3用のmod_perlですので、 &quot;For use with Apache 1.3.x &quot; の &quot;Download&quot; のリンク先をダウンロードします。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>Apache 1.3 に mod_perlをインストール</p>
<pre class="modPuki_pre">wget http://perl.apache.org/dist/mod_perl-1.0-current.tar.gz
tar xvzf mod_perl-1.0-current.tar.gz
cd mod_perl-1.31

perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache/bin/apxs EVERYTHING=1

make install clean</pre>
</li>
</ul>
<p>APXSの指定先はApache 1.3をインストールしたディレクトリを指定します。<br />
今回はデフォルトのprefixですので &quot;/usr/local/apche/&quot; 以下の &quot;bin/apxs&quot; になります。</p>
<h3 id="content_Object id #1616_10" class="modPuki_head">Proxy 側（フロント）側の設定</h3>
<p>Proxy（フロント）から、バックエンドのアプリケーションサーバにリクエストを飛ばすために、Proxy（フロント）のhttpd.confに以下のように記述しています。</p>
<p>/usr/local/apache2/conf.httpd.conf に記述</p>
<pre style="height:7.44em;" class="modPuki_pre">ProxyRequests Off
ProxyPreserveHost On
RewriteRule ^/(.*)/([a-z_]+)-([0-9]+).html$ http://localhost:xxxx（ポート番号）/project_path/$1/$2?id=$3&amp;%{QUERY_STRING} [P,L]
RewriteRule ^/(.*).html http://localhost:xxxx（ポート番号/project_path/$1?%{QUERY_STRING} [P,L]
RewriteRule ^/(.*) http://localhost:xxxx（ポート番号/project_path/$1 [P,L]</pre>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>1行目・・・フォワードプロキシサーバとしての動作を無効化しています <a href="http://httpd.apache.org/docs/2.1/ja/mod/mod_proxy.html#proxyrequests" target="_blank">ProxyRequestsについての詳細はこちら</a></li>
<li>2行目・・・HTTPヘッダのHost:行をProxy側と同じものをApp側にも飛ばすための設定です。<a href="http://httpd.apache.org/docs/2.1/ja/mod/mod_proxy.html#proxypreservehost" target="_blank">ProxyPreserveHostについての詳細はこちら</a><br />
これを行わないと、Host部での解釈ができないためApp側でのVirtualHostが有効に働きません。</li>
<li>3行目～5行目・・・Proxy条件・設定です。この部分で記述した書式に従い、Proxy先にリクエストを飛ばします。<br />
各行の最後に &quot;[P.L]&quot; と終わっていますが、これはmod_rewriteの書式で&quot;Proxyして（P）、条件定義はこの行で終了（L）&quot; という意味になります。</li>
</ul>
<h3 id="content_Object id #1616_11" class="modPuki_head">App（アプリケーション）側の設定</h3>
<p>App側は基本的には、リクエストがReverseProxyかどうかを判別する必要はありません。なのですが、REMOTE_ADDR（リモートアドレス・接続元）が全てProxy元（今回は同一サーバなので、127.0.0.1＝ローカルホスト）になってしまい、アクセスログにも全てProxy元のIPアドレスが記述されます。</p>
<p>アプリ的、ログ解析的にも特に気にしない場合はいいのですが、やはり、アクセス状況を知りたいという場合が来るケースが多いと思いますので<br />
Proxy元が受けたREMOTE_ADDRと同じ値（ユーザーのIPアドレス）をProxy先にもとどくよう、設定します。</p>
<p>設定には mod_extract_forarded モジュールを使います。<br />
（配布されている方のURLをリンクしようと思ったのですが、現在サーバが存在していないようです。もう1.3用のモジュールの配布は終了されてしまったのでしょうか？）</p>
<p>mod_extract_forarded を Apache1.3に適用するには以下のようにしています。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>mod_extract_forarded をインストール<br />
※mod_extract_forwarded.c が存在するディレクトリに移動して、</p>
<pre class="modPuki_pre">/usr/local/apache/bin/apxs -i -a -n 'extract_forwarded' mod_extract_forwarded.so</pre>
</li>
<li>/usr/local/apche/conf/httpd.conf の設定<br />
以下を追加</p>
<pre class="modPuki_pre">
LoadModule extract_forwarded_module libexec/mod_extract_forwarded.so

AddModule mod_extract_forwarded.c

&lt;IfModule mod_extract_forwarded.c&gt;
    RemoveAcceptForwarder all
    AddAcceptForwarder all
&lt;/IfModule&gt;</pre>
</li>
</ul>
<p>※＜参考＞ Apache2 の mod_extract_forwarded<br />
Apache 2.x 用の mod_extract_forwarded については、以下からダウンロードできるようです。<br />
（Apche2.0.x 用と書いてありますが、Apache 2.2 でも一応インストールできました。）</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://www.cotds.org/mod_extract_forwarded2/" target="_blank">http://www.cotds.org/mod_extract_forwarded2/</a></li>
</ul>
<h3 id="content_Object id #1616_12" class="modPuki_head">関連リンク</h3>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>Apache 公式</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://httpd.apache.org/" target="_blank">http://httpd.apache.org/</a></li>
</ul>
</li>
<li>mod_perl 公式
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://perl.apache.org/" target="_blank">http://perl.apache.org/</a></li>
</ul>
</li>
</ul>
<h2 id="content_Object id #1616_13" class="modPuki_head">M・・・MySQL 5.0</h2>
<p>MySQLは全て、yum経由の 5.0.x を利用しています。 現在主流のMySQL5.1 も利用したいのですが、 yum で簡単にインストールできるという部分が、マニュアル化・アプリ全体の品質の統一に大変有効だと思いまして、現在は yum でのインストールのみを利用しています。</p>
<p>yumでのインストールは簡単です。perl用のDBDドライバも同時にインストールします。</p>
<pre class="modPuki_pre">yum install mysql mysql-server perl-DBD-mysql

sudo service mysqld start</pre>
<p>起動後、すぐにRootのパスワードを設定します。</p>
<pre class="modPuki_pre">mysqladmin -u root password 'xxxxxxxxxxx'</pre>
<h3 id="content_Object id #1616_14" class="modPuki_head">MySQLのUTF8対応</h3>
<p>MySQLをUTF8対応するために /etc/my.conf で以下のように記述しています。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>[client] に以下を追記</p>
<pre class="modPuki_pre">default-character-set = utf8</pre>
</li>
<li>[mysqld] に以下を追記
<pre class="modPuki_pre">default-character-set = utf8
character-set-server=utf8</pre>
</li>
</ul>
<p>mysql に接続して、以下のように表示されれば、UTF8での扱いはほぼ問題ないのでは無いかと思います。</p>
<pre class="modPuki_pre">mysql&gt; SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+</pre>
<p>mysql は chkconfig にも登録して置き、 boot時に起動するように設定しています。</p>
<pre class="modPuki_pre">sudo config add mysqld
sudo chkconfig mysqld on</pre>
<h2 id="content_Object id #1616_15" class="modPuki_head">P・・・Perl（mod_perl）</h2>
<p>App側の動的処理は 全て mod_perl で書いています。弊社では案件によっては PHPを利用するケースもありますが、ほとんどの場合は mod_perl でソリューションしています。<br />
特に自社内システムは100％ perl/mod_perl で動いています。</p>
<p>mod_perl 自体のインストールは先ほど書いたとおりになります。</p>
<p>mod_perl の上に乗せて動かすアプリケーションですが、コーディングルールの統一化を図るため、MVC（フレームワーク）を利用しています。<br />
弊社では mod_perl用のフレームワークは Sledge を利用しています。<br />
通常のSledge は、基本 EUC-JP を前提としているのですが、弊社ではデフォルトがUTF8ですので、UTF８で動かすためにカスタムモジュールを追加しています。</p>
<p>このSledge を mod_perl 上で扱い、その上に DB との通信するためのORマッパー（今回は <a href="http://search.cpan.org/perldoc?Class::DBI" target="_blank">Class::DBI</a> ）、そしてテンプレートとして <a href="http://template-toolkit.org/" target="_blank">template-toolkit</a> を利用しています。</p>
<h3 id="content_Object id #1616_16" class="modPuki_head">参考リンク</h3>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>Sledge (sourceforge)</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://sourceforge.jp/projects/sledge/releases/" target="_blank">http://sourceforge.jp/projects/sledge/releases/</a></li>
</ul>
</li>
<li>SledgeのApache2（mod_perl2）対応＋UTF8
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="/tech/blog/2009/06/19/sledge%E3%81%AEapache2%EF%BC%88mod_perl2%EF%BC%89%E5%AF%BE%E5%BF%9C%EF%BC%8Butf8/" target="_blank">http://www.alink.co.jp/tech/blog/2009/06/19/sledge%E3%81%AEapache2%EF%BC%88mod_perl2%EF%BC%89%E5%AF%BE%E5%BF%9C%EF%BC%8Butf8/</a></li>
</ul>
</li>
<li>Class::DBI
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://search.cpan.org/perldoc?Class::DBI" target="_blank">http://search.cpan.org/perldoc?Class::DBI</a></li>
</ul>
</li>
<li>template-toolkit
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://template-toolkit.org/" target="_blank">http://template-toolkit.org/</a></li>
</ul>
</li>
</ul>
<h2 id="content_Object id #1616_17" class="modPuki_head">次回に続きます。</h2>
<p>少々記事が大きくなってしまいまして・・・ mod_perl ＋ Sledge + Class::DBI + TT(template-toolkit) については<br />
&quot;TwitPepper・Webアプリの中の人（その2）&quot; に続きます。</p>
<p>memcached などもカリカリ使っていますので、こちらに付いても書きたいと思っています。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2010/02/21/perl-twitpepper%e3%83%bbweb%e3%82%a2%e3%83%97%e3%83%aa%e3%81%ae%e4%b8%ad%e3%81%ae%e4%ba%ba%ef%bc%88%e3%81%9d%e3%81%ae1%ef%bc%89/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[雑感] 2010年の目標＆所見など</title>
		<link>http://www.alink.co.jp/tech/blog/2010/01/05/%e9%9b%91%e6%84%9f-%e4%bb%8a%e5%b9%b4%e3%81%ae%e7%9b%ae%e6%a8%99%ef%bc%86%e6%89%80%e8%a6%8b%e3%81%aa%e3%81%a9/</link>
		<comments>http://www.alink.co.jp/tech/blog/2010/01/05/%e9%9b%91%e6%84%9f-%e4%bb%8a%e5%b9%b4%e3%81%ae%e7%9b%ae%e6%a8%99%ef%bc%86%e6%89%80%e8%a6%8b%e3%81%aa%e3%81%a9/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 10:07:16 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[web技術]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=922</guid>
		<description><![CDATA[
明けましておめでとうございます、寒すぎます。松本です。
年末年始はちょっとコードを書きながら、魚介類をサバいて終えました。たまには駅伝をみながらまったりお雑煮を食べたいです。



 今年の目標

 Perl/mod_p [...]]]></description>
			<content:encoded><![CDATA[
<p>明けましておめでとうございます、<a href="http://tenki.jp/satellite/?satellite_type=japan_near" target="_blank">寒すぎます</a>。松本です。</p>
<p>年末年始はちょっとコードを書きながら、魚介類をサバいて終えました。たまには駅伝をみながらまったりお雑煮を食べたいです。</p>
<div class="modPuki_contents">
<a id="contents_Object id #2069"></a>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2069_0"> 今年の目標</a></p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2069_1"> Perl/mod_perl</a></p>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2069_2"> 参考リンク</a></li>
</ul>
</li>
<li><a href="#content_Object id #2069_3"> PHP</a></li>
<li><a href="#content_Object id #2069_4"> その他のプログラム言語</a></li>
</ul>
</li>
</ul>
</div>
<h1 id="content_Object id #2069_0" class="modPuki_head">今年の目標</h1>
<p>今年はプログラム技術力、Webアプリケーションを開発する技術力を向上させ<br />
もっと効率的に柔軟なシステムを作れるようになりたいと思っています。</p>
<h2 id="content_Object id #2069_1" class="modPuki_head">Perl/mod_perl</h2>
<p>弊社で利用しているプログラム言語は <a href="http://perl.apache.org/" target="_blank">mod_perl</a> なのですが、これをベースにSledgeというMVCを使い、Webアプリケーションを開発する事が主です。</p>
<p>mod_perlもSledgeも非常に高速で、素晴らしいアプリケーションなのですが、これの上にのせていくORマッパやその他モジュールが相当にメモリ食いで、<a href="/tech/blog/2009/12/31/%E9%9B%91%E6%84%9F-%E3%81%82%E3%82%8A%E3%82%93%E3%81%8Ftech%E7%9A%842009%E5%B9%B4%E3%81%BE%E3%81%A8%E3%82%81/" target="_blank">[雑感] ありんくTech的2009年まとめ</a> でも言及していますが、利用するモジュールによって、メモリ消費っぷりがエラく違います。</p>
<p>結果的に1台のサーバで処理出来る量が、メモリの使用量によって左右されることの無いように省エネでエコなプログラムを意識して参りたいと思います。<br />
CPUはもうQuadCore任せで。</p>
<h3 id="content_Object id #2069_2" class="modPuki_head">参考リンク</h3>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="/tech/blog/2009/10/01/perl-sledge%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%BE%E3%81%A8%E3%82%81/" target="_blank">[perl] Sledgeドキュメントまとめ</a></p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li>mod_perlのMVC&quot;Sledge&quot;についてリンクをまとめています</li>
</ul>
</li>
<li><a href="/tech/blog/2009/04/26/perl-mod_perl%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%AEstartuppl%E3%81%A7%E3%81%AE%E4%BE%BF%E5%88%A9%E3%81%AA%E6%89%8B%E6%B3%95/" target="_blank">[perl] mod_perl起動時のstartup.plでの便利な手法</a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li>httpdの起動時に共通するモジュールを読み込む事により、プロセス毎に共有メモリを効率的に扱える手法です</li>
</ul>
</li>
</ul>
<h2 id="content_Object id #2069_3" class="modPuki_head">PHP</h2>
<p>弊社でperl以外に扱っているプログラム言語が <a href="http://php.net/" target="_blank">PHP</a> です。</p>
<p>PHPは5.3.x以降を利用するようにしていて、perlと同様ですがメモリ消費を抑えたいと思い、ガベージコレクションの恩恵に預かりたいという意図であります。</p>
<p>PHP5.3の最新バージョンは 5.3.1 ですが RCバージョンの5.3.2 も登場し、安定性のある形になってきていると思います。<br />
必須ツールである、<a href="http://pecl.php.net/package/Xdebug/" target="_blank">XDebug</a>、<a href="http://pecl.php.net/package/APC/" target="_blank">APC</a> も5.3に対応しています。</p>
<p>※<a href="http://pecl.php.net/package/memcache/" target="_blank">memcache</a> モジュールが memcached1.4のDELETEの仕様変更に対応していないので、こちらが惜しまれるのですが・・・</p>
<h2 id="content_Object id #2069_4" class="modPuki_head">その他のプログラム言語</h2>
<p>サーバサイドはperl/PHPですが、フロントエンド側の JavaScript CSS/HTML も引き続きやっていきたいと思っています。</p>
<p>特にCSSついては、ブラウザの種類が増えるほどに意識しないといけない事が増えていきますので<br />
常にいじり続けたいと思っています。</p>
<p>JavaScriptはもうjQuery以外はほとんど扱っていません。jQueryは多分今年1.4がリリースされると思いますので、更に便利になると思います。<br />
※jQueryについては <a href="/tech/wiki/index.php?jQuery" target="_blank">tech-wiki</a> にまとめてあります。</p>
<p>ActionScriptもトライ＆エラーしたいのですが、先にiPhone/iPod用に対するWebアプリケーションの学習が発生しそうな予感です。</p>
<p>次の振り返りは多分5月末の35歳になりましたエントリ辺りの予感です。</p>
<p>ということで、今年もどうぞよろしくお願いいたします。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2010/01/05/%e9%9b%91%e6%84%9f-%e4%bb%8a%e5%b9%b4%e3%81%ae%e7%9b%ae%e6%a8%99%ef%bc%86%e6%89%80%e8%a6%8b%e3%81%aa%e3%81%a9/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[雑感] ありんくTech的2009年まとめ</title>
		<link>http://www.alink.co.jp/tech/blog/2009/12/31/%e9%9b%91%e6%84%9f-%e3%81%82%e3%82%8a%e3%82%93%e3%81%8ftech%e7%9a%842009%e5%b9%b4%e3%81%be%e3%81%a8%e3%82%81/</link>
		<comments>http://www.alink.co.jp/tech/blog/2009/12/31/%e9%9b%91%e6%84%9f-%e3%81%82%e3%82%8a%e3%82%93%e3%81%8ftech%e7%9a%842009%e5%b9%b4%e3%81%be%e3%81%a8%e3%82%81/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 20:03:42 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[web技術]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=893</guid>
		<description><![CDATA[
こんにちは、松本です。
tech-logで2009年の総括をまとめるつもりで、ずるずるしていまい、大晦日にまとめてみました。
&#34;34歳になりました＆抱負&#34;の記事 で書いていた事を全ては実践出来ず、若干 [...]]]></description>
			<content:encoded><![CDATA[
<p>こんにちは、松本です。<br />
tech-logで2009年の総括をまとめるつもりで、ずるずるしていまい、大晦日にまとめてみました。</p>
<p><a href="/tech/blog/2009/05/29/34%E6%AD%B3%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%86%E6%8A%B1%E8%B2%A0/" target="_blank">&quot;34歳になりました＆抱負&quot;の記事</a> で書いていた事を全ては実践出来ず、若干に心残りではありますが、やれた事はおおよそ以下です。</p>
<div class="modPuki_contents">
<a id="contents_Object id #2333"></a>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2333_0"> TwitPepperのリリース</a></li>
<li><a href="#content_Object id #2333_1"> 本ブログの本格化</a></li>
<li><a href="#content_Object id #2333_2"> CPANやGoogleCodeでのプログラム公開</a></li>
<li><a href="#content_Object id #2333_3"> Perlの高速・軽量なORマッパの学習</a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2333_4"> ORMごとのメモリ消費量</a></li>
<li><a href="#content_Object id #2333_5"> 参考リンク</a></li>
</ul>
</li>
<li><a href="#content_Object id #2333_6"> jQuery1.3を早々に利用開始できた</a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2333_7"> 参考リンク</a></li>
</ul>
</li>
<li><a href="#content_Object id #2333_8"> PHP5.3.x の利用開始</a></li>
<li><a href="#content_Object id #2333_9"> 弊社HPのiPhone版のリリース</a></li>
</ul>
</div>
<h1 id="content_Object id #2333_0" class="modPuki_head">TwitPepperのリリース</h1>
<p>12月中順に　<a href="http://twitpepper.jp/" target="_blank">TwitPepper（ツイットペッパー）</a> をリリースしました。Twitterのデザインを簡単に変更したり、シェアリングできるサイトなのですが、とりあえず、まず1つサービスを定義する事ができた事が大変に良かったです。</p>
<h1 id="content_Object id #2333_1" class="modPuki_head">本ブログの本格化</h1>
<p>2009年3月より本ブログを本格的に書き始め、最低でも毎月2回程度は更新できました。お陰さまで色々な人に見て頂くことができました、ありがとうございます。</p>
<h1 id="content_Object id #2333_2" class="modPuki_head">CPANやGoogleCodeでのプログラム公開</h1>
<p><a href="http://search.cpan.org/~matsumoto/" target="_blank">CPAN</a> にモジュールが公開できたのも大変に嬉しかったです。<br />
自分はmod_perl + Sldegeを使う機会が多いので、Sledgeのモジュール中心ですが、こちらもお役に立てると大変に嬉しいです。</p>
<p><a href="http://code.google.com/p/jquery-easy-str-validate/" target="_blank">GoogleCode</a> では、jQueryのプラグインをUPしました。</p>
<h1 id="content_Object id #2333_3" class="modPuki_head">Perlの高速・軽量なORマッパの学習</h1>
<p><a href="http://search.cpan.org/perldoc?DBIx::Skinny" target="_blank">DBIx::Skinny</a> や <a href="http://search.cpan.org/perldoc?Data::Model" target="_blank">Data::Model</a> 、 <a href="http://search.cpan.org/dist/DBIx-MoCo/" target="_blank">DBIx::MoCo</a> など、Perlの軽量なORマッパがリリースされた事が大変インパクトが大きく感じました。（MoCoの最終更新は2008年ですが・・・）</p>
<p>実際に今までプロダクション環境では <a href="http://search.cpan.org/perldoc?Class::DBI" target="_blank">Class::DBI（CDBI）</a> を使うことが大変多かったのですが、 <a href="http://search.cpan.org/perldoc?DBIx::Class" target="_blank">DBIx::Class（DBIC）</a>は、移行するにはモジュールの規模が大きすぎたり、ちょっともっさり過ぎなどオーバーヘッドを相当に感じたため、躊躇していました。</p>
<p>それもあり、省エネ・軽量のORMに注目しています。この中で特に <a href="http://search.cpan.org/dist/DBIx-MoCo/" target="_blank">DBIx::MoCo</a> を学習していて、使い方としては一番CDBIに近いのかなと感じています。<br />
saveメソッドだけが、CDBIのUPDATEと大きく違うのでここの取扱がまだ慣れていないです。</p>
<h2 id="content_Object id #2333_4" class="modPuki_head">ORMごとのメモリ消費量</h2>
<p>現在メインで使っているCDBIを含め、ほぼ同じ動作をする際のメモリ消費量を比べてみました。<br />
メモリ消費量の計測は <a href="http://tech.lampetty.net/tech/index.php/archives/344#gtop" target="_blank">おいぬま日報さんのgtop.pl</a> を使用させて頂きました。</p>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td">モジュール名</td>
<td class="modPuki_style_td">メモリ消費量（x86_64/64bit）</td>
<td class="modPuki_style_td">メモリ消費量（i386/32bit）</td>
</tr>
<tr>
<td class="modPuki_style_td"><a href="http://search.cpan.org/perldoc?Class::DBI" target="_blank">Class::DBI（CDBI）</a></td>
<td class="modPuki_style_td">120M</td>
<td class="modPuki_style_td">24M</td>
</tr>
<tr>
<td class="modPuki_style_td"><a href="http://search.cpan.org/dist/DBIx-MoCo/" target="_blank">DBIx::MoCo</a></td>
<td class="modPuki_style_td">30M</td>
<td class="modPuki_style_td">8M</td>
</tr>
<tr>
<td class="modPuki_style_td"><a href="http://search.cpan.org/perldoc?Data::Model" target="_blank">Data::Model</a></td>
<td class="modPuki_style_td">29M</td>
<td class="modPuki_style_td">6M</td>
</tr>
<tr>
<td class="modPuki_style_td"><a href="http://search.cpan.org/perldoc?DBIx::Skinny" target="_blank">DBIx::Skinny</a></td>
<td class="modPuki_style_td">15M</td>
<td class="modPuki_style_td">2M</td>
</tr>
</tbody>
</table>
</div>
<p>※メモリ消費量は1の位で四捨五入しています。<br />
※<a href="http://search.cpan.org/perldoc?DBIx::Class" target="_blank">DBIx::Class（DBIC）</a> は対象に入れていません。（そもそもメモリ食いなので）</p>
<p>64bit環境と、32bit環境でのメモリ消費量の違いも格段に目立ちますが、それでも <a href="http://search.cpan.org/perldoc?DBIx::Skinny" target="_blank">DBIx::Skinny</a> の省エネっぷりは目を引きます。</p>
<p>ORMはその習得自体のラーニングコストが結構にかかるため、ある程度目星をつけてからのトライ＆エラーの方が望ましいとは思います。<br />
が、<a href="http://search.cpan.org/dist/DBIx-MoCo/" target="_blank">DBIx::MoCo</a> に慣れつつある昨今、それにしても <a href="http://search.cpan.org/perldoc?DBIx::Skinny" target="_blank">DBIx::Skinny</a> のメモリ消費の少なさに驚き、いきなり食いついてしまった次第であります。</p>
<h2 id="content_Object id #2333_5" class="modPuki_head">参考リンク</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>DBIx::Skinny - JPerl Advent Calendar 2009</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/" target="_blank">http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/</a> <br />
DBIx::Skinnyに関するHowToが大変詳しく掲載されています。</li>
</ul>
</li>
<li>Data::Model Track - JPerl Advent Calendar 2009
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://perl-users.jp/articles/advent-calendar/2009/data-model/" target="_blank">http://perl-users.jp/articles/advent-calendar/2009/data-model/</a><br />
Data::Modelに関するHowToが大変詳しく掲載されています。</li>
</ul>
</li>
</ul>
<h1 id="content_Object id #2333_6" class="modPuki_head">jQuery1.3を早々に利用開始できた</h1>
<p><a href="http://jquery.com/" target="_blank">jQuery1.3</a> のリリースで、セレクタの速度向上とliveイベントの新機能が大変便利になったと感じました。</p>
<p>liveイベントは本当に便利で、例えば既存のエレメントのノードに新しいエレメントを追加し、同じ挙動を適用させたい場合、<br />
以下の様に書いていました。</p>
<pre class="modPuki_pre">//イベントハンドラの定義
var event_function = function(){ /* event function */ };
// 既存のクラスにイベントハンドラを適用
$('.hoge').click(event_function);
//エレメントの作成
var $element = $('&lt;div class=&quot;hoge&quot;&gt;NewElement&lt;/div&gt;');
//イベントハンドラの追加
$element.click($event_function);
//エレメントの追加
$('#old_element').after($element);</pre>
<p>これをjQuery1.3（実質は1.3.2）では、イベントハンドラとエレメント作成を完全分離できるので<br />
以下の様に定義出来ます。</p>
<pre class="modPuki_pre">// イベントハンドラの定義
$('.hoge').live('click',function(){  /* event function */ });
//エレメントの作成→追加（イベントは自動で定義）
$('#old_element').after('&lt;div class=&quot;hoge&quot;&gt;NewElement&lt;/div&gt;');</pre>
<p>動的なエレメント追加にもイベントが追いかけてくれますので非常にシンプルに実装できる点が大変魅力です。<br />
jQuery1.2.x環境から 1.3.2に移行しましたが、jQueryUIのライブラリ周りで若干ハマる程度で、jQuery本体は差し替えても<br />
ほぼ綺麗に移行できるはずです。</p>
<p>蛇足ではありますが、jQuery1.4ではこのliveイベントでほぼ全てのアクションが定義できるようになるため、さらに便利になります。<br />
※jQuery1.4については<a href="/tech/blog/2009/12/05/javascript-jquery14%E3%81%AE%CE%B1%E7%89%88%E3%81%8C%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%95%E3%82%8C%E3%81%9F%E3%82%88%E3%81%86%E3%81%A7%E3%81%99/" target="_blank">「jQuery1.4のα版がリリースされたようです」</a>の記事で更に詳細を書いています、よろしければご覧下さい。</p>
<h2 id="content_Object id #2333_7" class="modPuki_head">参考リンク</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>jQuery色々まとめリンク（ありんく tech-wiki）</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="/tech/wiki/index.php?jQuery" target="_blank">http://www.alink.co.jp/tech/wiki/index.php?jQuery</a></li>
</ul>
</li>
</ul>
<h1 id="content_Object id #2333_8" class="modPuki_head">PHP5.3.x の利用開始</h1>
<p>すでに <a href="http://www.php.net/archive/2009.php#id2009-11-19-1" target="_blank">PHP5.3.1</a> がリリースされているPHPですが、5.3のリリースで 無名関数、staticコール、ガベージコレクションが実装されたのが相当にインパクト大でした。</p>
<p>現在は全てのPHPを利用する環境のVerを5.3にすべく、調査している段階です。</p>
<h1 id="content_Object id #2333_9" class="modPuki_head">弊社HPのiPhone版のリリース</h1>
<p>弊社HP（<a href="/" target="_blank">http://www.alink.co.jp/</a>）で、同一URLでiPhoneからのアクセスの時だけ<br />
iPhone様のデザインでのサイトをリリースしました。</p>
<p>iPhone様のHTMLはCSSのfont-sizeの感覚が違ったり、UIの想定する動作が指（マウスではない）などでやや詰まりますが<br />
全体としてそこまで難易度は高くなかったと思います。</p>
<hr class="modPuki_full_hr" />
<p>ざっと考える限りは以上の様な具合です。</p>
<p>本当に歳を経るほど、時間の流れが速く感じまして<br />
やろうと目標に掲げた事の半分も実践出来なかったような体感っぷりです。</p>
<p>来年は35歳になります。時の流れはどんどん高速になって行きますが<br />
PGとして定年にならないよう、もっとソースコード自体をきちんと書き、保守性の高い、品質の良いプログラムを書けるように精進したいと思っています。</p>
<p>来年もどうぞ <a href="/" target="_blank">株式会社ありんく</a> をよろしくお願いいたします。</p>
<p>2009.12.31 松本 修士</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2009/12/31/%e9%9b%91%e6%84%9f-%e3%81%82%e3%82%8a%e3%82%93%e3%81%8ftech%e7%9a%842009%e5%b9%b4%e3%81%be%e3%81%a8%e3%82%81/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[JavaScript] jQuery1.4のα版がリリースされたようです</title>
		<link>http://www.alink.co.jp/tech/blog/2009/12/05/javascript-jquery14%e3%81%ae%ce%b1%e7%89%88%e3%81%8c%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%95%e3%82%8c%e3%81%9f%e3%82%88%e3%81%86%e3%81%a7%e3%81%99/</link>
		<comments>http://www.alink.co.jp/tech/blog/2009/12/05/javascript-jquery14%e3%81%ae%ce%b1%e7%89%88%e3%81%8c%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%95%e3%82%8c%e3%81%9f%e3%82%88%e3%81%86%e3%81%a7%e3%81%99/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 05:39:17 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=856</guid>
		<description><![CDATA[
こんにちは、松本です。またまた雨で、悩ましい雨雲の動き であります。
jQuery1.4のアルファ版がリリースされたようです。

jQuery 1.4 Alpha 1 Released - jQuery Blog

まだ [...]]]></description>
			<content:encoded><![CDATA[
<p>こんにちは、松本です。またまた雨で、<a href="http://tenki.jp/rader/pref-16.html" target="_blank">悩ましい雨雲の動き</a> であります。</p>
<p>jQuery1.4のアルファ版がリリースされたようです。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://blog.jquery.com/2009/12/04/jquery-14-alpha-1-released/" target="_blank">jQuery 1.4 Alpha 1 Released</a> - <a href="http://blog.jquery.com/" target="_blank">jQuery Blog</a></li>
</ul>
<p>まだα版ではありますが、jQueryはバージョンアップ毎に処理が高速化されているので、大変楽しみです。まだ <a href="http://docs.jquery.com/Downloading_jQuery" target="_blank">Downloadのページ</a> には記載がありませんが、 <a href="http://blog.jquery.com/2009/12/04/jquery-14-alpha-1-released/" target="_blank">同Blogの記事内</a> からダウンロードできます。</p>
<hr class="modPuki_full_hr" />
<div class="modPuki_contents">
<a id="contents_Object id #2666"></a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2666_0"> ダウンロード</a></li>
<li><a href="#content_Object id #2666_1"> 変更点1 : live eventsの大幅な強化</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #2666_2"> live events が機能するイベントハンドラ</a></li>
</ul>
</li>
<li><a href="#content_Object id #2666_3"> 変更点2 : append prepend周りなどの最適化</a></li>
<li><a href="#content_Object id #2666_4"> 変更点3 : add の返り値の調整</a></li>
<li><a href="#content_Object id #2666_5"> 変更点4 : その他の最適化</a></li>
<li><a href="#content_Object id #2666_6"> さらにその他の変更点</a></li>
</ul>
</div>
<h2 id="content_Object id #2666_0" class="modPuki_head">ダウンロード</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://blog.jquery.com/2009/12/04/jquery-14-alpha-1-released/" target="_blank">こちらから</a> ダウンロードできます。<br />
※まだα版（試験版）ですのでご利用には十分ご注意ください。</li>
</ul>
<p>主な変更点は以下のようです。（適当日本語訳です。）<br />
※下記英語記述は <a href="http://blog.jquery.com/2009/12/04/jquery-14-alpha-1-released/" target="_blank">jQueryBlog</a> より引用しています。</p>
<h2 id="content_Object id #2666_1" class="modPuki_head">変更点1 : live eventsの大幅な強化</h2>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td"><strong>live</strong> was drastically overhauled and now supports submit, change, mouseenter, mouseleave, focus, and blur events in all browsers. Also now supports context and data.</td>
</tr>
</tbody>
</table>
</div>
<blockquote><p class="modPuki_quotation">
live 機能が大幅にオーバーホールされました。submit、change、mouseenter、mouseleave、focus、blurがサポートされました。</p>
</blockquote>
<p>jQuery1.3以降、 <a href="/tech/blog/2009/04/06/javascript-jquery13%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%80%8Clive-events%E3%80%8D/" target="_blank">live events</a> という機能が追加されました。これは動的処理などで新しく加えたHTMLのノードに対して、予めイベントハンドラを定義しておく機能です。　詳しくは <a href="/tech/blog/2009/04/06/javascript-jquery13%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%80%8Clive-events%E3%80%8D/" target="_blank">こちら</a> をご覧下さい。</p>
<p>jQuery1.3.2までは、この機能は click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、keydown、keypress,、keyup に対して定義されており、submit、change、mouseenter、mouseleave、focus、blur のイベントには定義されていませんでした。jQuery1.4a 以降は全てのイベントでlive eventsが使えるようです。</p>
<p>表にすると以下のような具合です。（※ <a href="http://semooh.jp/jquery/api/events/live/type%2C+fn/" target="_blank">jQuery日本語リファレンス・live(type, fn)</a> を参考にさせて頂きました）</p>
<h3 id="content_Object id #2666_2" class="modPuki_head">live events が機能するイベントハンドラ</h3>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td">jQueryのバージョン</td>
<td class="modPuki_style_td">click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、keydown、keypress,、keyup</td>
<td class="modPuki_style_td">submit、change、mouseenter、mouseleave、focus、blur</td>
</tr>
<tr>
<td class="modPuki_style_td">1.2.x</td>
<td class="modPuki_style_td">×</td>
<td class="modPuki_style_td">×</td>
</tr>
<tr>
<td class="modPuki_style_td">1.3.x</td>
<td class="modPuki_style_td">○</td>
<td class="modPuki_style_td">×</td>
</tr>
<tr>
<td class="modPuki_style_td">1.4.a</td>
<td class="modPuki_style_td">○</td>
<td class="modPuki_style_td">○</td>
</tr>
</tbody>
</table>
</div>
<h2 id="content_Object id #2666_3" class="modPuki_head">変更点2 : append prepend周りなどの最適化</h2>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td"><strong>append</strong>, <strong>prepend</strong>, <strong>etc</strong>. have been heavily optimized.</td>
</tr>
</tbody>
</table>
</div>
<blockquote><p class="modPuki_quotation">append prepend その他（の機能）は相当に最適化されています。</p>
</blockquote>
<p>&quot;その他&quot;が何を意味するのかが大変気になりますが、少なくとも append/prepend 機能が最適化されています。</p>
<p>私見ですが、ここでいう最適化とは、ブラウザでのレンダリングスピード＋メモリの省エネ効果を表していると推測しています。</p>
<h2 id="content_Object id #2666_4" class="modPuki_head">変更点3 : add の返り値の調整</h2>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td"><strong>add</strong> has been adjusted to always return elements in document order.</td>
</tr>
</tbody>
</table>
</div>
<blockquote><p class="modPuki_quotation">add は常にドキュメントの中の列内のエレメントを返すように調整されました。</p>
</blockquote>
<h2 id="content_Object id #2666_5" class="modPuki_head">変更点4 : その他の最適化</h2>
<div class="modPuki_ie5" >
<table class="modPuki_style_table" style="">
<tbody>
<tr>
<td class="modPuki_style_td"><strong>find</strong>, <strong>empty</strong>, <strong>remove</strong>, <strong>addClass</strong>, <strong>removeClass</strong>, <strong>hasClass</strong>, <strong>attr</strong>, and <strong>css</strong> have been heavily optimized.</td>
</tr>
</tbody>
</table>
</div>
<blockquote><p class="modPuki_quotation">find、empty、remove、addClass、removeClass、hasClass、attr、css　の機能が大幅に最適化されました。</p>
</blockquote>
<p>変更点2の「その他」に該当する部分でしょうか、上記機能が最適化されているようです。</p>
<h2 id="content_Object id #2666_6" class="modPuki_head">さらにその他の変更点</h2>
<p>という感じです。その他の様々な変更点は <a href="http://ejohn.org/blog/talks-at-the-2009-jquery-conference/" target="_blank">こちらをご覧下さい</a> との事で、見ていたのですが・・・ jQuery1.3.3 もリリースされる予定？？</p>
<p>ｊQueryUIや各種プラグインの対応状況が気になるところではありますが、jQuery本体が毎回大幅にチューニングされていますので、移行しない手は無いと思います。<br />
今回も正式リリースがされ次第、移行Todoに入りたい所存であります。</p>
<hr class="modPuki_full_hr" />
<p>関連コンテンツ</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="/tech/blog/category/javascript/jquery/" target="_blank">ありんく tech-log / カテゴリ / jQuery</a></p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="/tech/blog/2009/04/06/javascript-jquery13%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%80%8Clive-events%E3%80%8D/" target="_blank">jQuery1.3の新機能「live events」</a></li>
</ul>
</li>
</ul>
<p>外部リンク</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://jquery.com/" target="_blank">jQuery本家</a></p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://blog.jquery.com/" target="_blank">jQueryBlog</a></li>
</ul>
</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://semooh.jp/jquery/" target="_blank">jQuery日本語リファレンス</a>  （いつもお世話になっています）</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://semooh.jp/jquery/api/traversing/add/expr/" target="_blank">jQuery日本語リファレンス（live eventsについて）</a></li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2009/12/05/javascript-jquery14%e3%81%ae%ce%b1%e7%89%88%e3%81%8c%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%95%e3%82%8c%e3%81%9f%e3%82%88%e3%81%86%e3%81%a7%e3%81%99/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[perl] DBIx::MoCo::SaveTrigger</title>
		<link>http://www.alink.co.jp/tech/blog/2009/12/03/perl-dbixmocosavetrigger/</link>
		<comments>http://www.alink.co.jp/tech/blog/2009/12/03/perl-dbixmocosavetrigger/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 11:08:18 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[Perl]]></category>

		<category><![CDATA[サーバー]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=849</guid>
		<description><![CDATA[
こんにちは、松本です。やはり雨でした。
弊社ではperlのORマッパーは CDBI をメインに使ってきましたが、最近では DBIx::MoCo をよく利用しています。
DBIx::Class も検討したのですが、依存する [...]]]></description>
			<content:encoded><![CDATA[
<p>こんにちは、松本です。やはり<a href="http://tenki.jp/forecast/point-693.html" target="_blank">雨</a>でした。</p>
<p>弊社ではperlのORマッパーは <a href="http://search.cpan.org/perldoc?Class::DBI" target="_blank">CDBI</a> をメインに使ってきましたが、最近では <a href="http://search.cpan.org/perldoc?DBIx::MoCo" target="_blank">DBIx::MoCo</a> をよく利用しています。</p>
<p><a href="http://search.cpan.org/dist/DBIx-Class/" target="_blank">DBIx::Class</a> も検討したのですが、依存するモジュールの量が多く、またラーニングコストも若干高く感じ、現在まだ使っていません。</p>
<p>DBIx::MoCoは <a href="http://www.hatena.ne.jp/" target="_blank">はてな</a> 製のORマッパーでCDBIに構造が良く似ています。</p>
<p>なのですが、1点 before_update/after_update の挙動が違いまして、以下となっています。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>CDBI</p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li>UPDATEするSQL文を発行する前後でHookが実行される。</li>
</ul>
</li>
<li>DBIx::MoCo
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li>カラムの要素を更新した際にHookが実行される。</li>
</ul>
</li>
</ul>
<p>DBIｘ：：MoCoでもCDBIでいう「before_update/after_update」を実現するために、追加モジュールを作成しました。</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li>DBIx::MoCo::SaveTrigger （<a href="/tech/wiki/index.php?Perl%2FOR%E3%83%9E%E3%83%83%E3%83%91%2FDBIx-MoCo%2FDBIx-MoCo-SaveTrigger" target="_blank">ソースコードはこちらになります</a>）</li>
</ul>
<p>このモジュールをuse すると save メソッド（UPDATE文の実行）前後に「before_save/after_save」を実行してくれます。<br />
独自のCacheをかけていたり、UPDATEする際に必ず更新するカラムが存在する場合など、またCDBIからの移植でも<br />
便利になるかと思います。</p>
<p>使っていただけますと幸いです。</p>
<hr class="modPuki_full_hr" />
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="/tech/wiki/index.php?Perl%2FOR%E3%83%9E%E3%83%83%E3%83%91%2FDBIx-MoCo%2FDBIx-MoCo-SaveTrigger" target="_blank">DBIx::MoCo::SaveTrigger</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2009/12/03/perl-dbixmocosavetrigger/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[ PHP ] PHP 5.3.1 を早速インストール</title>
		<link>http://www.alink.co.jp/tech/blog/2009/11/20/php-php-531-%e3%82%92%e6%97%a9%e9%80%9f%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/</link>
		<comments>http://www.alink.co.jp/tech/blog/2009/11/20/php-php-531-%e3%82%92%e6%97%a9%e9%80%9f%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 06:14:43 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=840</guid>
		<description><![CDATA[
こんにちは。寒くてプラモも作れません、松本です。
PHP5.3.1が今日未明（2009-11-19）にリリースされていまして、早速インストールしてみました。
インストール時のconfigure周りの設定などは CentO [...]]]></description>
			<content:encoded><![CDATA[
<p>こんにちは。<a href="http://tenki.jp/forecaster/diary/detail-1554.html" target="_blank">寒く</a>て<a href="http://bandai-hobby.net/gunpla/mastergrade/mg_gundamexia/index.html" target="_blank">プラモ</a>も作れません、松本です。</p>
<p>PHP5.3.1が<a href="http://www.php.net/archive/2009.php#id2009-11-19-1" target="_blank">今日未明（2009-11-19）</a>にリリースされていまして、早速インストールしてみました。<br />
インストール時のconfigure周りの設定などは <a href="/tech/blog/2009/10/02/php-centos53-%E3%81%A7-php53%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%EF%BC%88yum%E9%A2%A8%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%EF%BC%89/" target="_blank">CentOS5.3 で PHP5.3をインストール（YUM風オプションで） （過去の記事）</a> をご覧下さい。</p>
<p>インストール作業自体は何の問題も無く行えました。<br />
アップデートした後のアプリケーションの挙動も特におかしな点はありませんでしたので、<br />
運用しているシステムのアップデートもすんなりいけそうな予感です。</p>
<p><a href="http://pecl.php.net/package/APC/" target="_blank">APC</a>や<a href="http://eaccelerator.net/" target="_blank">eaccelerator</a>の対応具合が若干気になります。</p>
<h2 id="content_Object id #2934_0" class="modPuki_head">PHP5.3.1について</h2>
<p>5.3.1 はメジャーバージョンのリリース後、最初のマイナーバージョンアップだけあって相当な数のバグ取りや調整などが行われています。<br />
まずは安定化への第一歩という感じです。</p>
<p><a href="http://www.php.net/" target="_blank">PHP本家のサイト</a>の<a href="http://www.php.net/releases/5_3_1.php" target="_blank">アナウンス</a>によると</p>
<p>一回の処理でアップロードできるファイル数の設定を定義する</p>
<pre class="modPuki_pre">max_file_uploads</pre>
<p>の値のデフォルト値が20と定義されたようです。</p>
<p>1つのページでアップロード数を20個以上定義するのはgmailぐらいしか思いつかないのですが、そういう方向性という事で。</p>
<p>その他、特に目立った機能追加はないようでして、ほぼほぼがbugfixといった具合に見受けられます。</p>
<p>PHP自体の雑感ですが、引き続きSmartyは捨て、PHP＝テンプレート＋ロジックという認識でありまして、<a href="http://www.graphicsmagick.org/" target="_blank">Gmagick</a>や<a href="http://pecl.php.net/package/hidef" target="_blank">hidef</a>周りをもうすこしいじってみたい所存であります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2009/11/20/php-php-531-%e3%82%92%e6%97%a9%e9%80%9f%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[雑感] 最近のWeb技術周りの所感（なんでも）</title>
		<link>http://www.alink.co.jp/tech/blog/2009/10/02/%e9%9b%91%e6%84%9f-%e6%9c%80%e8%bf%91%e3%81%aeweb%e6%8a%80%e8%a1%93%e5%91%a8%e3%82%8a%e3%81%ae%e6%89%80%e6%84%9f%ef%bc%88%e3%81%aa%e3%82%93%e3%81%a7%e3%82%82%ef%bc%89/</link>
		<comments>http://www.alink.co.jp/tech/blog/2009/10/02/%e9%9b%91%e6%84%9f-%e6%9c%80%e8%bf%91%e3%81%aeweb%e6%8a%80%e8%a1%93%e5%91%a8%e3%82%8a%e3%81%ae%e6%89%80%e6%84%9f%ef%bc%88%e3%81%aa%e3%82%93%e3%81%a7%e3%82%82%ef%bc%89/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 08:24:48 +0000</pubDate>
		<dc:creator>matsumoto</dc:creator>
		
		<category><![CDATA[web技術]]></category>

		<category><![CDATA[サーバー]]></category>

		<guid isPermaLink="false">http://www.alink.co.jp/tech/blog/?p=826</guid>
		<description><![CDATA[
久しぶりに雨ですが、こんにちは、松本です。
今年度が半分過ぎましたが、Web技術周りはトレンドの入れ替わりが激しいです。
なのですが、メンテナンスを継続している案件もあり、一概に新しいものだけを追い続けるわけにもいかない [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://tenki.jp/forecast/city-63.html" target="_blank">久しぶりに雨ですが</a>、こんにちは、松本です。</p>
<p>今年度が半分過ぎましたが、Web技術周りはトレンドの入れ替わりが激しいです。<br />
なのですが、メンテナンスを継続している案件もあり、一概に新しいものだけを追い続けるわけにもいかない現状でして<br />
古いものと新しいものが混在するのが世のDEVの方々の常だと思います。</p>
<p>新旧混ぜつつ、ここ最近でありんくのWeb技術まわりでトレンドであったり、特に注力していたりする事柄をつらつらと挙げてみます。</p>
<div class="modPuki_contents">
<a id="contents_Object id #3186"></a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #3186_0"> mod_perl</a></li>
<li><a href="#content_Object id #3186_1"> perl</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #3186_2"> perlORマッパー</a></li>
<li><a href="#content_Object id #3186_3"> perlテンプレートエンジン</a></li>
</ul>
</li>
<li><a href="#content_Object id #3186_4"> PHP</a>
<ul class="modPuki_list3" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #3186_5"> アクセラレータ</a></li>
<li><a href="#content_Object id #3186_6"> PHPのORマッパー</a></li>
<li><a href="#content_Object id #3186_7"> PHPのテンプレ</a></li>
</ul>
</li>
</ul>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #3186_8"> OS</a></p>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #3186_9"> CentOS</a></li>
<li><a href="#content_Object id #3186_10"> FreeBSD</a></li>
<li><a href="#content_Object id #3186_11"> WindowsXP</a></li>
</ul>
</li>
<li><a href="#content_Object id #3186_12"> ミドルウェア</a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #3186_13"> MySQL</a></li>
<li><a href="#content_Object id #3186_14"> Memcache</a></li>
<li><a href="#content_Object id #3186_15"> Tokyo Tyrant</a></li>
</ul>
</li>
<li><a href="#content_Object id #3186_16"> フロントエンド</a>
<ul class="modPuki_list2" style="padding-left:16px;margin-left:16px">
<li><a href="#content_Object id #3186_17"> CSS</a></li>
<li><a href="#content_Object id #3186_18"> JS</a></li>
</ul>
</li>
</ul>
</div>
<h2 id="content_Object id #3186_0" class="modPuki_head">mod_perl</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://perl.apache.org/" target="_blank">http://perl.apache.org/</a></li>
</ul>
<p>もう何年もお世話になっているモジュールです。適度に枯れていて、バージョンアップの頻度もぼちぼちといったところでいい感じに運用できます。<br />
今まではずっとApache1.3系で利用してきているのですが、いい加減2.0系の方がいいのかな？と思いまして<br />
<a href="/tech/blog/2009/06/21/perl-mod_perl%E3%81%A8%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%B5%E3%82%A4%E3%82%BA/" target="_blank">1.3系と2.0系を比較してみました。</a></p>
<p>自分の比較テストでは1.3系、2.0系ともにほぼ同様の結果がでており、であれば</p>
<pre class="modPuki_pre">使い慣れた1.3系でまだまだ行ってもいいんじゃないかな？</pre>
<p>という感じです。</p>
<p>絶版になってはしまいましたが、Apache拡張ガイド（<a href="http://www.oreilly.co.jp/books/4873110181/" target="_blank">上</a>/<a href="http://www.oreilly.co.jp/books/487311019X/" target="_blank">下</a>）は、mod_perlの日本語で解説された貴重な書籍です。（これも1.3系）</p>
<p>2.0系は<a href="http://books.google.com/books?id=wuCn1ilh7BcC&amp;lpg=PP1&amp;dq=template%20toolkit&amp;as_brr=3&amp;hl=ja&amp;pg=PP1#v=onepage&amp;q=template%20toolkit&amp;f=false" target="_blank">洋書（Practical modp̲erl）</a>ではあるようなのですが、まだ読んでないです。</p>
<h2 id="content_Object id #3186_1" class="modPuki_head">perl</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://www.perl.com/" target="_blank">http://www.perl.com/</a></li>
</ul>
<p>CentOS5のYUMに依存したUPDATEをするような体制を作っていますので、Perl自体の管理もYUMです。<br />
なので、バージョンは5.8.8で、これを使い続けています。</p>
<p>もう<a href="http://search.cpan.org/~dapm/perl-5.10.1/" target="_blank">perl 5.10.1</a>もリリースされ、5.8.x/5.9.xからの移行も本格化しそうなのですが、<br />
これはOSマター（というかyumに頼って）で行いたいと思っています。</p>
<h3 id="content_Object id #3186_2" class="modPuki_head">perlORマッパー</h3>
<p>メンテナンス対象のシステムでは<a href="http://search.cpan.org/perldoc?Class::DBI" target="_blank">Class::DBI</a>を継続しての利用が多いです。これはもうママにメンテを続けていく方向で。</p>
<p>新規に作る分に関しては<a href="http://search.cpan.org/perldoc?DBIx::MoCo" target="_blank">DBIx::MoCo</a> を使っています。<br />
拙作なのですが<a href="http://search.cpan.org/perldoc?DBIx::MoCo::Pageset" target="_blank">DBIx::MoCo::Pageset</a>でページング処理もらくらくです。</p>
<h3 id="content_Object id #3186_3" class="modPuki_head">perlテンプレートエンジン</h3>
<p>Template-ToolKit（TT）</p>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://template-toolkit.org/" target="_blank">http://template-toolkit.org/</a></li>
</ul>
<p>6Aがサービスされている、「Vox」もmod_perlで構成されているようなのですが、</p>
<pre class="modPuki_pre">TTの処理が全体の60%になっている</pre>
<p>ということで、TTの重さに愕然とします。</p>
<p>なのですが・・・あまりの便利さ＆融通の利きやすさゆえに、離れる事ができず、ずっとTTを利用する形になっています。</p>
<p>Text::MicroTempolate や Tenjin もちょっと調べつつあるのですが微妙です。<br />
TTより数倍速いのは速いっぽいのですが、mod_perl環境ではコンパイルができるため、TTに比べ、そこまでの速度の差は出ませんでした。</p>
<p>TT便利すぎます。</p>
<h2 id="content_Object id #3186_4" class="modPuki_head">PHP</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://php.net/" target="_blank">http://php.net/</a></li>
</ul>
<p>PHPは、メンテの対象となっているサービスはママそのバージョンを継続なのですが<br />
今後は基本、PHP5.3をベースに考えたいと思っています。</p>
<p>ORM共通の悩みの、リファレンスカウントがそのまま＆メモリリークなどという部分を<br />
<a href="http://jp.php.net/manual/ja/function.gc-collect-cycles.php" target="_blank">gc_collect_cycles</a>でばっさりソリューションしてくれるのかしらという、淡い期待を持っています。</p>
<p>またPHPで特にやっかいなのが、YUMのPHPのバージョンが5.1.6であるという部分で、相当古いです。最低でも5.2系を使いたいところで。</p>
<p>こればっかりは仕方ないので<a href="/tech/blog/2009/10/02/php-centos53-%E3%81%A7-php53%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%EF%BC%88yum%E9%A2%A8%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%EF%BC%89/" target="_blank">YUM風のオプションを持ったPHP5.3をソースコードからインストール</a>しています。</p>
<h3 id="content_Object id #3186_5" class="modPuki_head">アクセラレータ</h3>
<p>PHP5.3に対応したアクセラレータを探して<a href="/tech/blog/2009/08/14/php-php53%E3%81%A7apc313%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/" target="_blank">右往左往</a>していたのですが、一応<a href="http://pecl.php.net/package/APC/" target="_blank">APC</a>に落ち着いています。<br />
<a href="/tech/blog/2009/09/22/php-php530%E3%81%A7%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%BF%E5%B0%8E%E5%85%A5/#content_Object%20id%20#57_1" target="_blank">eAccelerator</a>は、後から自分の環境ではいきなりhttpdがCoreDumpしたりしてやや不安定でした。</p>
<h3 id="content_Object id #3186_6" class="modPuki_head">PHPのORマッパー</h3>
<p>自作していますので、そのうちUPします</p>
<h3 id="content_Object id #3186_7" class="modPuki_head">PHPのテンプレ</h3>
<p>Smartyはやめました、もう素のPHP＝テンプレ。</p>
<h1 id="content_Object id #3186_8" class="modPuki_head">OS</h1>
<h2 id="content_Object id #3186_9" class="modPuki_head">CentOS</h2>
<p>弊社ではデフォルトで利用するOSです。<br />
Fedoraはバージョンアップが激しいので何とも。</p>
<p><a href="http://www.jp.redhat.com/rhel/virtualization/" target="_blank">そろそろ5.4が出るのでしょうか</a> 基本ド安定で素晴らしすぎます。<br />
あとはReadTekのNICのドライバをきちんとフォローアップしてくれるととてもうれしい感じで。</p>
<h2 id="content_Object id #3186_10" class="modPuki_head">FreeBSD</h2>
<p>昔はメインで利用していたOSです。</p>
<p>最近はもっぱらCentOSで、FreeBSDで作られたシステムはだんだん少なくなってはいます。</p>
<p>やっぱりJavaが動かないのがなんとも。＜Solrまわりなど。</p>
<h2 id="content_Object id #3186_11" class="modPuki_head">WindowsXP</h2>
<p>別にサーバーで使っているわけではないのですが、クライアントPCはずっとXPです。<br />
普段はFireFox＋Firebugで、IETesterでIEみる感じで。</p>
<p>最近BootCampでWin7を立ち上げられれば移行したいなーという感じです。</p>
<h1 id="content_Object id #3186_12" class="modPuki_head">ミドルウェア</h1>
<h2 id="content_Object id #3186_13" class="modPuki_head">MySQL</h2>
<p>これもCentOSのyumマターで管理しているので 5.0.x系です。<br />
DBIなどのライブラリ周りも一括で管理できる辺りが楽で・・・</p>
<h2 id="content_Object id #3186_14" class="modPuki_head">Memcache</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://www.danga.com/memcached/" target="_blank">http://www.danga.com/memcached/</a></li>
</ul>
<p>絶対使いましょう。</p>
<p>Memcache使いまくりです、使って損することはまったくありません。</p>
<h2 id="content_Object id #3186_15" class="modPuki_head">Tokyo Tyrant</h2>
<ul class="modPuki_list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://1978th.net/" target="_blank">http://1978th.net/</a></li>
</ul>
<p>1200万件のレコードからLIKE検索で０．ｎ秒という数値がでまして、今今で検証中です。<br />
相当にすごいミドルウェアかと。</p>
<h1 id="content_Object id #3186_16" class="modPuki_head">フロントエンド</h1>
<h2 id="content_Object id #3186_17" class="modPuki_head">CSS</h2>
<p><a href="http://developer.yahoo.com/yui/" target="_blank">YUI</a> のCSSをベースに使っています。<br />
特に<a href="http://developer.yahoo.com/yui/reset/" target="_blank">Recet.css</a>は大変便利です</p>
<p>コーディング時はなるべくCSSスプライトを用いて、Apacheへの負荷を削減しています。</p>
<p>Clearfixは<a href="/tech/blog/2009/04/13/css-clearfix%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Fdiv%E3%81%AE%E6%AE%B5%E7%B5%84%E3%81%BF%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF/" target="_blank">こちらのエントリ</a>の通りで、おおよそ同一の書き方が多いです。</p>
<h2 id="content_Object id #3186_18" class="modPuki_head">JS</h2>
<p>おおよそ <a href="http://jquery.com/" target="_blank">jQuery</a> を使っています。<br />
jQueryは全てバージョンアップを行い最新の1.3.2を利用しています。</p>
<p>ドラッグ＆ドロップなどのウィジェット機能もすべて <a href="http://plugins.jquery.com/" target="_blank">jQueryのプラグイン</a> や <a href="http://jqueryui.com/" target="_blank">jQueryUI</a> を利用しています。</p>
<p>JSはheadタグに入れるとオーバーヘッドが大きすぎるので、すべてHTMLの終了部分に近い場所に配置します。<br />
＝HTMLとCSSのレンダリングが終了してからJSを実行させるためです。</p>
<hr class="modPuki_full_hr" />
<p>つらつらと書きすぎですが、現状の流行はこのような感じです。</p>
<p><a href="http://d.hatena.ne.jp/tasukuchan/20090417/nicopedia_hardware" target="_blank">ネットブックでのPCルーター作成</a> や LVS をネットブックで運用なども非常に突っ込んでみたい所存であります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alink.co.jp/tech/blog/2009/10/02/%e9%9b%91%e6%84%9f-%e6%9c%80%e8%bf%91%e3%81%aeweb%e6%8a%80%e8%a1%93%e5%91%a8%e3%82%8a%e3%81%ae%e6%89%80%e6%84%9f%ef%bc%88%e3%81%aa%e3%82%93%e3%81%a7%e3%82%82%ef%bc%89/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
