Recent Posts

Archives

Blog Ranking

Favorite

ExchangeRate

Update: 2010-09-11 04:00
by ロイター
 

Archive for 3 月, 2009

« Previous Entries
 

Subversion+WebDAV+Tracでバージョン管理(プロジェクト管理)

土曜日, 3 月 28th, 2009

ボクはいくつかのサイトを運営しています。
運営上、何かと不便なことが出てきたので、バージョン管理を入れることにしました。

有名どころのsubversionを使います。
外出時でも使えるようにしたいのでwebdavと組み合わせます。

「trac」というプロジェクト管理ツールがあるということなので、ついでにそれもいれます。

まずはsubversionとwebdavのインストール。

 # yum install mod_dav_svn

これだけで必要なものは全てインストールされます。

次はtracのインストール。
本家サイトにはソースしか置いてませんが、yumでインストールする方法がありました。

 # vi /etc/yum.repos.d/deg.repo
 —–
 [dag]
 name=Dag RPM Repository for Redhat EL4
 baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
 gpgcheck=1
 enabled=0
 gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
 —–

 # yum install mod_python
 # yum install trac –enablerepo=dag

tracはpythonで実装されているので一緒にmod_pythonもインストールします。

続いて、tracの日本語化。
これはyumではできません。

 # wget http://www.i-act.co.jp/project/products/downloads/Trac-0.11.2.1.ja1.zip
 # unzip ./Trac-0.11.2.1.ja1.zip
 # cd ./Trac-0.11.2.1.ja1
 # python setup.py install

インストール完了です。

それではSubversionのリポジトリを作成します。
プロジェクト名を「hogehoge」、ディレクトリを「/var/proj/svn」とします。
Apacheからファイルの読み書きができるようにパーミッションを変更、Basic認証でアクセス制限もかけます。

 # mkdir /var/proj
 # mkdir /var/proj/svn
 # svnadmin create /var/proj/svn/hogehoge
 # svn mkdir file:///var/proj/svn/hogehoge/trunk file:///var/proj/svn/hogehoge/tags file:///var/proj/svn/hogehoge/branches -m ‘init repository layout (trunk,tags,branches)’
 # chown -R apache.apache /var/proj/svn/hogehoge
 # htpasswd -c /var/proj/.htpasswd kimura

Apacheの設定をします。

 # vi /etc/httpd/conf.d/subversion.conf
 ———-
 <Location /svn>
  DAV [...]

 

pearで携帯の画面サイズ取得

木曜日, 3 月 26th, 2009

携帯サイトをつくろうと思い立ちました。

写真画像の表示がメインのコンテンツです。

当然、端末の画面サイズに合わせて写真もリサイズして表示したい。

各キャリアのサイトにあるスペック一覧のデータをシコシコとテキストファイルに書いて・・・、というやり方では新機種が出るたびに更新作業をしなければいけないので却下。

で、いろいろと調べると、pearに「Net_UserAgent_Mobile」なんてものがあるそうです。

さっそくインストール。

 # pear install -f Net_UserAgent_Mobile
(2009/03/26時点でBETA版なので「-f」が必要)

サンプルのソースを書いてみる。
 —–
 require_once(”Net/UserAgent/Mobile.php”);

 $agent = &Net_UserAgent_Mobile::factory();
 if($agent->isDoCoMo()){
  echo “docomoだよ”;
 }
 elseif($agent->isVodafone()){
  echo “softbankだよ”;
 }
 elseif($agent->isEZweb()){
  echo “auだよ”;
 }
 else{
  echo “それ以外だよ”;
 }

 $disp = $agent->getDisplay()
 $dispsize = $disp->getSize();
 echo “横は” . $dispsize[0] . “で、縦は” . $dispsize[1] . “だよ”;
 —–

OK。縦横とれた。
これは便利だ。

ただ、DoCoMoは端末リスト(XMLファイル)を別途用意しないといけないらしい。インストールされたソースを見ると、たしかに機種情報がベタ書きしてある。これでは最新機種に対応できないね。

このXMLファイルもコマンド一発でつくれるらしい。
CPANのHTTP-MobileAgentにmakexmldocomomapというのがあって、こいつを動かすとサクッと作れるそうです。

ではインストール。
いろいろ足りないのがあって結構てこずった。

 # cpan
 cpan> install HTTP::MobileAgent
 cpan> install XML::SAX::Expat
 cpan> install XML::Simple
 cpan> install HTML::TableExtract
 cpan> install WWW::MobileCarrierJP

インストール完了。
よし、早速やってみよう。

・・・と思ったら

あれ

makexmldocomomapが見つからない。

小一時間探してこんなところに見つけました。

/root/.cpan/build/HTTP-MobileAgent-0.27/bin/makexmldocomomap

で、これを実行すると、

画面にズラズラとXMLが表示される。
お、標準出力じゃん。

 # /root/.cpan/build/HTTP-MobileAgent-0.27/bin/makexmldocomomap > DoCoMoMap.xml

これでOK。

さっきのサンプルソースに1行追加。
 —–
 $_SERVER["DOCOMO_MAP"] = “/path/DoCoMoMap.xml”;
 —–

完璧です。

あとはこのXMLが定期的に更新されるようにしてやれば言うことなしです。

参考URL
Net_UserAgent_Mobileを使って、携帯端末の情報を取得
PEAR::Net_UserAgent_Mobile 3G対応携帯判別(ケータイ判別)
DoCoMoマップ利用 PEAR::Net_UserAgent_Mobile_DoCoMoDisplayMap

↓役に立ったと思ったら・・・

 

 

jQueryとは

土曜日, 3 月 14th, 2009

jQueryとは、JavaScriptライブラリの1つ。
ライブラリの有名どころでprototype.jsライブラリというものもある。

jQueryはファイルサイズが小さく、prototype.jsライブラリに比べ、軽量且つ高速である。

jQuery日本語リファレンス

↓役に立ったと思ったら・・・

 

 

セマフォ(Semaphore)とは

火曜日, 3 月 10th, 2009

ざっくりと言うと、Linuxで使われる排他制御のしくみのこと。
(Linux以外でも使ってるかもしれませんが)

↓この辺が詳しくて分かりやすいかも。

セマフォ とは:ITpro
オペレーティング・システム講座 並行プロセス
セマフォ

↓役に立ったと思ったら・・・

 

 

XenのDomainUで時刻同期

金曜日, 3 月 6th, 2009

Xenのバーチャルサーバ(DomainU)の時計がずれていたので、ntpdateで時刻同期をとりました。

 # ntpdate www.xxx.yyy.zzz
  5 Mar 23:22:45 ntpdate[7860]: step time server www.xxx.yyy.zzz offset -209.707158 sec

よし。

ん?

あれ?

同期できてない。

・・・なぜ?

いろいろ調べてみたところ、どうやらXenの仕様で、Domain0からしか時刻を更新できないらしい。
ただ、Domain0で時刻を合わせていれば、DomainUも正確な時刻を得ることができるとのこと。

なるほど。

で、一応DomainU側での制御もできるらしい。
カーネルパラメータ「xen.independent_wallclock」の値を『1』にすればいい。

 # sysctl xen.independent_wallclock=1

もしくは

 # echo 1 > /proc/sys/xen/independent_wallclock

うん、今度は同期できました。

↓役に立ったと思ったら・・・

 

« Previous Entries