トップ 最新 追記

誰も褒めてくれないから自画自賛する日記

nu-chon.org  「ぬ」あんてな  「ぬ」wiki  RSS
2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|06|07|
2012|01|03|05|06|08|09|
2013|01|08|09|
2014|01|03|05|08|12|
2015|01|04|09|10|
2016|01|
Sapporo RubyKaigi 02
Sapporo RubyKaigi 03
RubyKaigi
Sapporo RubyKaigi 2012
RubyKaigi 2013
2008年
4月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

2008-04-01 [長年日記]

EJS

http://embeddedjs.com/

サーバ側ではなくクライアント側がJavaScriptでテンプレートを利用してViewを生成するためのライブラリ

Railsのprototype等のHelperで生成されるHTML整形済みデータをクライアントに送信するとタグ等で非常にサイズが大きくなってしまうため、フルブラウザに対応している端末でも帯域が細いPDAでは非常に表示に時間がかかってしまう。ここで、JSON等のシンプルで軽量なフォーマットでデータだけをクライアントに送り、クライアントがあらかじめロードしたテンプレートにしたがってViewを生成すればよい。

ただ、単純にJavaScriptのString型でHTMLを書くと、可読性がかなり落ちるので、このライブラリを利用する。

テンプレートファイル(ejsファイル)やライブラリや処理が記述されたJavaScriptファイルはCache-Controlを指定しクライアントにキャッシュされるようにしておくことが重要。

本日のツッコミ(全3件) [ツッコミを入れる]

masuidrive [JSTかよw]

nkjm [おめでとう!スリランカいいところだよね。と空気読まずにお祝いしてみるテスト]

 [日本語で書くからJSTじゃないと! あまりウケがよくないのでエントリは削除(笑)]


2008-04-02 [長年日記]

EJSを引き続き使ってみる

EJSのView helperが微妙にRailsのものとは引数が違うため、ちょっと萎える。


2008-04-03 [長年日記]

オペラ座の怪人

近所のPerforming Arts Centerで行われているミュージカル「オペラ座の怪人」を見に行った。

ただでさえリスニングが苦手なのに、歌となるとさっぱり。

やっぱり予習が重要です。

というわけで、久しぶりスーツを着た。1年ぶりだ(笑)


2008-04-04 [長年日記]

libapache2-mod-rpaf

sarge, lenny, sidにあって、etchに無い、というのは素敵だな。


2008-04-05 [長年日記]

mongrel_clusterを使ってみた

Debianのlighttpdは1.4でmod_deflateが使えないので、フロントエンドはapacheにしようと思い、どうせなら最近のRails界隈では定番っぽい mongrel_clusterを使いapacheでロードバランシングすることにした。

でも、途中で設定が面倒になり、既存のlighttpdも残し、ほとんどのコンテンツが apache => lighttpd のリバースプロキシ状態になっており、非常に気持ち悪い状態。

lighttpdのほうには、PHPのコンテンツが含まれていたりする。apache+mod_phpでも良いのだが、mod_phpを使うと結構メモリを馬鹿食いしてくれて、しかも、いくら共有メモリの利用でRAMの使用量を抑えているとはいえ、モジュールモードだとPHPのスレッド数を制限できないし、だからと言ってCGIモードだと遅いしってのが非常に痛い。

ApacheでFastCGIを使えばよいのだが、FastCGIならいっそのことLighttpdでやっちゃったほうが楽だし、lighttpのほうがメモリの使用量が少なくて済むので良いね、というわけで。

ただ、今回は、外出時に遅くて有名なiPhone + EDGEネットワークを使ってページにアクセスしたく、そのためどうしてもdeflateを使いたかった。

Debian etchの公式パッケージのlighttpd 1.4.xにはmod_compressがあるのだが、あくまでも静的ファイルをあらかじめ圧縮して提供する機能しか持っておらずデータ送信時に圧縮するわけではないので動的コンテンツには使えない。

というわけで、Debian(etch)のlighttpdがdeflateに対応していれば良かっただけの事だ(と他人のせいにする)

Apacheは高機能で確かに素晴らしいのだが、最近ちょっと胸焼け気味である。

Lennyのリリースが待ち遠しい。

それはそれとして、作業中、Capistranoのmongrel関連の設定で嵌りまくった。

結局deploy.rb内で1行(mongrel_cluster提供のrecipeファイルをrequireする行)が足りなかっただけだったのだが、これがわかるまでに、apacheこれでかなり時間を使ってしまった。あまりにわからなかったので、rubygemsのRails2.0.2のライブラリのソースコードを追っかけてた。結局そこじゃなかったんだけど。

Railsで堕落

一昔前、「Debianで堕落し」とか「aptで堕落した」といった表現があったが、今の僕の状態は「Railsで堕落した」とか「rubygemsで堕落した」って感じだな、と思った。

ほかの言語ではWebアプリを作成する気になれん。

といっても時々PHPで作成されたアプリの改修があったりするので、触れないわけにはいかないのだが。

最近お祭りになっていたC言語、僕、かなりヤバイ。概念的なものはさすがに忘れないが、コードの書き方をすっかり忘れている。僕はC言語が使えないわ。


2008-04-06 [長年日記]

中華パン

中国系のパン屋でパンを買って食べた。想像以上に美味しかった. 地味に肉まんが旨かった. パンじゃないじゃん.


2008-04-07 [長年日記]

prototype.js is too big

prototype.jsの簡易版みたいのはないかな. Compress+deflateでも30kbくらいあるので 、iPhone だと結構辛い.


2008-04-08 [長年日記]

Google App Engine

朝4:30にいきなり目覚めtwitterをiPhoneでみたら Google app engineが話題になっていたのでそのままwaiting listに登録した。

さてこれまでさけつづけてきたpythonでも勉強するとするかー


2008-04-09 [長年日記]

外をブラブラする日

終業後、職場から家まで歩いた。かばんが重たかったので、公園で休憩したりしながら2時間ほどかけてゆっくりあるいた。

変質者に思われたかもしれんな。


2008-04-10 [長年日記]

今日は変な汗を掻くなぁ

寒気がすると思いきや暑く感じたり。


2008-04-11 [長年日記]

MySQL Proxy

以前一度試したことが会ったのだが、今回、ちゃんとやることに。

http://www.backports.org/debian/pool/main/m/mysql-proxy/

でetch用のdebも提供している。

ちなみに、failoverがなぜか機能しない。以前試したときは大丈夫だったのに。

BTSにも上がっているが解決していない様子。なぜじゃ?


2008-04-12 [長年日記]

気温30度超えた

まだ午前中だが、すでに外の気温が摂氏32度。Yahooの天気によると予想最高気温は33度。

ついにSouthern Californiaは真夏になった。


2008-04-13 [長年日記]

CarlsbadとNewport Beachに行ってきた

土曜日にCarlsbadの広大な花畑、日曜日にはNewport BeachのFashion Islandに行ってきた。

Fashion Islandは何度か行ったことがあったのだが、今回はアメリカ在住2年半にして初めて公共交通機関のバスを利用してみた。

主にメキシカンの乗客たちの中で、ゆっくり景色を見ながら移動できたので非常に良かった。しかも40分もバスに乗っていたのに、片道1.25ドルで格安だし。

気温は土曜日が摂氏35度、日曜日が摂氏34度を記録。さすがに暑い。

というわけで、撮影した写真の一部をさらす。

CARLSBAD, Fashion Island

FriendFeed

流行ってきたっぽいので、登録してみました。ニックネームはnununuです。


2008-04-14 [長年日記]

月曜日のわりに平穏

比較的平穏な一日。といってもやることてんこ盛りだったのだが。


2008-04-15 [長年日記]

jq4r

jQueryのヘルパー、RJSを利用するためのRails用plugin。

http://code.google.com/p/jq4r/

現在はversion0.2.0くらい(?)らしいが、ドキュメントがまともに整備されていない。

実際に使用してみたところ、field observerがまともに動作しなかった。ソースコードをチェックしてみたところ、構文的に間違っていたので、テストすらしていないと思われる。

同様の箇所が沢山あったため、片手間にパッチだけでは済まなそう。jRuby( http://ennerchi.com/projects/jrails )もあるが、既存のprototype.js, scriptaculousのhelper類を置き換えてしまうので、ちょっと敬遠気味(ちゃんと調査していないが、テストケースの記述ができない可能性があるので)

というわけで、今回はjq4rの利用は諦めた。

もともとPrototype.js + scriptaculous(effect.js)だと不要な機能が多すぎてjsファイルのサイズが大きくなりすぎるのでjQueryを採用しようかと考えていたのだが、ページ内コンテンツ(今回の場合はJavaScript)の軽量化は一段落させることにした。そもそも3G対応iPhoneが出そうだし。

別の箇所の機能強化に取り組もうと思う。


2008-04-16 [長年日記]

AWStatsのDebian etchでの利用方法

もうAnalogは使わないことにした。

Debian etchでの導入はとっても簡単。いつもこんなものは書き残さないのだが、ちょっと自分の日記を多少マトモに見せようといった邪念が生まれたため、かなり適当だがメモしておく。この時点で終わっているのだが。

とりあえず、VirtualHost環境で利用することを踏まえて設定を書くことにするが、特に目新しいことを書くわけではなく、最低限必要なことだけを書いたので、識者の方にはまったく役に立たない。

サーバ1台をAWStats専用サーバにし、サイト内の全WEBサーバのログをNFSやrsync, scp等の方法でこのサーバに集めて、すべての統計情報をこのサーバで解析、表示する、といった使い方が良いかな、と今は思っている。というのも、WEBサーバのそれぞれの環境に合わせてAWStatsをインストールする必要もないし、Webサーバのログ形式は製品やバージョンに関わらず、比較的統一されているので。

前提条件

  • awstatsを導入するサーバはdebian etch
  • バーチャルドメイン www.example.com 用に設定
  • ログファイルは、rotatelogs により分割され、ファイル名が /var/log/apache2/www.example.com/access_log.123456789 のようになる。
  • ログフォーマットは、apacheでいう「combined」
  • ログは、http://www.example.com/cgi-bin/analysis/awstats.pl にアクセスして閲覧
  • http://www.example.comのDocumentRootは /var/www/www.example.com/htdocs
  • http://www.example.com/cgi-bin のディレクトリ(ScriptAlias)は、/var/www/www.example.com/cgi-bin

aptでババンと導入

aptでawstatsおよびawstatsのRecommended、suggestedになっているパッケージをごっそり導入する。(apt-cache show awstats等で見ればsuggested, recommendedのパッケージが判るし、単にaptでインストールする際にも表示される。IPアドレスの逆引きやwhois用のPerlライブラリが一緒にインストールされる。)

設定ファイルの編集

/etc/awstats/awstats.conf を編集しても良いが、バーチャルホスト設定をしていて、複数のログが存在する場合は、それぞれ別々の設定ファイル、統計計算を行わせることも可能である。

その場合のファイル名は、

/etc/awstats/awstats.abc.conf 

のように、「awstats.」 と 「.conf」の間に適当な識別子を入れてファイル名をつけると、ドメインごとに設定ファイル及び出力を分けることができる。

LogFileの指定においては、単独のファイル名をLogFileに指定することも可能。また、以下のように、

LogFile="cat /var/log/apache2/www1/access_log.*|"

とコマンドとパイプを利用すると、rotatelogs等により分割されたログファイルを纏めて解析してくれるようになる。また、設定ファイルにサンプルが書いてあるが、awstatsパッケージと一緒にexampleとしてインストールされるlogresolvemerge.pl(/usr/share/doc/awstats/examples/logresolvemerge.pl)を利用すると、負荷分散等でログファイルが複数に分割された場合でも時系列で結合して標準出力に出力してくれる。(私は試していない)

次に、

LogFormat=1 (etchでは、デフォルトは4)

にしておくと、apacheでcombined形式の出力に対応し、Referer、User-agentの統計も解析してくれる。

解析するバーチャルホスト名のFQDNを

SiteDomain="www.example.com"

と設定する。これを設定しないと解析してくれない。

これが最低限(+α)の設定である。実のところ、パッケージインストール時にインストールされる /etc/awstats/awstats.conf 内のコメントがかなりしっかりしているので、これを参考にすれば、ほぼ普通の要件は満たせると思う。

Cronの設定

定期的に解析するためcronの設定をする。

/etc/cron.d/awstatsがインストールされているが、/etc/awstats/awstats.confファイルを利用する設定になっているので、

*/10 * * * * www-data /usr/lib/cgi-bin/awstats.pl -config=abc -update >/dev/null

と設定しておくと、設定ファイル /etc/awstats/awstats.abc.conf を使って統計情報をアップデートしてくれる。

ついでに一度動作チェック&最初の解析のために、

 su www-data -c '/usr/lib/cgi-bin/awstats.pl -config=abc -update

を実行して動作することを確認すると良い。

CGIの設置

VirtualHostの設定(debian etchの場合は、sites-availableへの設定の追加, a2ensiteの実行)、CGIモジュールの有効化(debian etchの場合は「a2enmod cgi」の実行)はあらかじめ行ってあるものとする。

.plもCGIとして動作するよう設定しておく。(/etc/apache2/apache2.confに該当箇所があるので、コメントアウトを解除し、以下のように.plも追記しておく。apache2.confを編集したくない場合は、/etc/apache2/conf.d/cgi-handler と言ったファイルを書き、同じく以下の行を記述しておく。)

AddHandler cgi-script .cgi .pl

設定記述後は、/etc/init.d/apache2 reload 実行する。(a2enmod cgiを実行した場合は、reloadではなくrestart)

データ解析スクリプトとCGIスクリプトは同じファイル。(/usr/lib/cgi-bin/awstats.pl)

apache等のWEBサーバでCGIが動作する領域(前提条件より、/var/www/www.example.com/cgi-bin/analysis/以下等)に、/usr/lib/cgi-bin/awstats.pl のsymlinkかコピーを置く。

/usr/share/awstats/icon のsymlinkもしくはコピーを /awstats-icon のURI(この位置は、設定ファイルでURIを指定可能) で外部から見れるように配置する(前提条件より、/var/www/www.example.com/htdocs/awstats-icon)。

表示

ブラウザから次のように設定ファイルの識別子(今回はabc)アクセスして結果が表示されれば成功。

http://www.example.com/cgi-bin/analysis/awstats.pl?config=abc

あとは、パスワード認証の設定などにより他人に見られないようにするだけ。


2008-04-17 [長年日記]

昨日に引き続き設定作業

サーバの台数が多いので結構面倒だったりする。

しかも、それぞれにインストールされているLinux Distributionがバラバラだったりするので。

台数がもっと増える前に、統一的に管理する方法を決めておかなければいけないと思う。


2008-04-18 [長年日記]

WebサーバをApache2.2に戻した

特に技術的に面白い話ではない。与太話。

これまでlighttpd(1.4.13)を使っていたが、mod_deflate(transparent content compression データの転送過程において透過的にコンテンツをgzip圧縮するアレ)を利用したかったので、apache2.2に戻した。

そもそもlighttpdを使い始めたきっかけが、Railsのコンテナとして試しに使ってみることだったので、mongrel + apache(balancer)構成にしたことで、lighttpdのメリットが薄れていた。(バックエンド側ではSource AddressがフロントエンドのIPアドレスになっちゃうし。)

実際には、Lighttpdからapache2.2に一期に切り替えたのではなく、ここ2週間ほどは、以下のような状態で動作させていた。

apache2.2 -- lighttpd
  (front) |    (back)
          -- mongrel
               (back)

なぜこのような移行期間を作ったかと言うと、単純にVirtualHostの設定を個々に書くのが面倒だったから。

というわけで、重い腰を上げて、lighttpdはバッサリ切り捨てることにした。

(実際のところlighttpdにはPHPをfastcgiで動作させるのがラク(よって、プロセス数の管理がラク)というメリットやapacheに比べれば軽量・高速というメリットがあるのだが)

deflate(transparent content compression)について

lighttpd-1.5やmod_deflateの1.4へのバックポートを利用すればlighttpdでもdeflateが利用可能なのだが、Debianで堕落して9年、そこまでやるわけが無い。(む、transparent content compressionがサポートされたバージョンのetchへのバックポートdebパッケージ ( http://packages.debian.org/etch-backports/lighttpd )があるな。でも、今は やらない。後ほど気が向いたらゆっくり考える。)

mod_railsについて

mod_railsを使えば、mongrelすら要らなくなるが、今使っているサーバのVMの領域に割り当てているRAMが少ないので、今回はやめておく。mod_railsはlibraryの参照方法によってはメモリを馬鹿食いするらしいので。そもそも今のところ、Railsのアプリは一つか設置していないし。(masuidriveさんのblogより。http://blog.masuidrive.jp/index.php/2008/04/14/mod_rails_uses_triple_memory_than_mongrel/ )

つまりは、

はい、自己満足ですが、何か?


2008-04-19 [長年日記]

久しぶりの昼寝

気持ちよかった。でも、ちょっと寒かった。

前日まで暑かったのに、急に寒くなってきたので、体調には気をつけようと思う。


2008-04-20 [長年日記]

イチローをやっつけに行った

そして負けて帰ってきた。4対2。

もちろんAngelsの赤いTシャツを着て行った。

2008-04-20


2008-04-21 [長年日記]

The secret to making money online by DHH

http://toshio.typepad.com/b3_annex/2008/04/ruby-on-railsda.html

Railsの生みの親DHHによるオンラインビジネスについての講演。

いたって現実的なことを言っているのだが、なかなか面白い。

Running at your own pace.である。

それにしても、彼はデンマーク人(デンマークの公用語はデンマーク語)だが、これだけ英語が話せれば問題ないな。


2008-04-22 [長年日記]

iPhoneのヘッドフォンが完全に壊れちゃった

iPhone付属のヘッドフォンが以前から切れそうで心配だったのだが、今日、ついに、右側のイヤフォンから音が出なくなった。右側にはマイクもついているので、おそらくハンズフリーで利用できなくなってしまっただろう。

結構ショックだ。


2008-04-23 [長年日記]

Parmalink

最近ずっと製造していたサービスである情報をsessionで保持していたため、Parmalinkが取得できない状態だったので、思い切って仕様変更した。

そんだけ。

こうやって思いっきり変更を入れられるのも、UnitTest様のおかげだ。


2008-04-24 [長年日記]

Debian Lenny to be shipped with qmail and djbdns in main

http://www.debian.org/News/weekly/current/issue/

ニュースとしては古いのだが、書いておこう。

DJB先生がライセンスを変更することにしたそうで、バイナリ配布できるようになるので、早速Lennyのmainに入ることになるらしい。

というか、もう、qmailはやめてほしい。

qmailがインストールされたマシンを見ると、気分が悪くなるのは僕だけ?

本日のツッコミ(全2件) [ツッコミを入れる]

TJ [俺も > qmailがインストールされたマシンを見ると気分が悪くなる とくに virtual domain の屋上屋..]

 [もうそろそろqmail撲滅委員会でも立ち上げますか(笑) 賛同する人が結構沢山いると思うんですが。]


2008-04-25 [長年日記]

見積もりを作成しまくる日

最近、開発費用の積算をするのがイヤなんだなぁ。

まっとうな金額を出しているのに、文句言ってくるし。どれくらいの金額を考えているのか聞いたら、5分の1くらいの金額を言ってきたりする。ありえん。


2008-04-26 [長年日記]

Smog Check

今年は車のSmog Check(車の排気の法定点検)だったので、近所の日系のメカニックのところでチェックしてもらった。

問題なかった。

実は排ガスが黒煙になっているときがあり、点検でひっかかるのではないかと思っていたので、ちょっとホッとした。

本日のツッコミ(全2件) [ツッコミを入れる]

こいわかもしれない人 [たまに黒煙になるのは、マフラーの触媒が劣化してるんじゃなかろうか。 ディーゼルだっけか?]

 [ハイオク限定車ですが、何か?w]


2008-04-27 [長年日記]

Firefoxのメモリ消費

最近、Firefoxのメモリの消費量が半端でなく、昨日は300MBにもなってしまっていたので、以下の設定をabout:configに追加

 // メモリキャッシュ量(単位はKB)
 user_pref("browser.cache.memory.capacity", 16384);
 // ウィンドウ最小化時にメモリ使を節約(only Win)
 user_pref("config.trim_on_minimize", true);
 // 最大保存履歴数(0:機能を無効, -1:無限)
 user_pref("browser.sessionhistory.max_total_viewers", 10);

あまり効果がない

なぜじゃー


2008-04-28 [長年日記]

1000万ユーザー規模のサービスを京都から--はてな近藤氏が目指すもの

http://japan.cnet.com/interview/story/0,2000055954,20372299,00.htm

他人が言うのを聞くと「当たり前だ」と思うことでも、実際は自分で体験しない限り真の意味が判らないことって沢山あるし、近藤さんはそのことをよく理解しているんだなぁ、と勝手ながら僕はそう解釈した。


2008-04-29 [長年日記]

なんだか釈然としない

どれほどのウェイトか判断できず、リソースの用意もできないのに、いついつまでにこれこれをやってくれ、と依頼(というか命令)するのは間違っているだろ。


2008-04-30 [長年日記]

本来やらないといけない仕事に着手できない

なんというか、そういう日々。やばいな、完全に遅れが出ている。

しかも帰宅直前に緊急でサーバセットアップの依頼が入るという羽目にあうし。


2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|06|07|
2012|01|03|05|06|08|09|
2013|01|08|09|
2014|01|03|05|08|12|
2015|01|04|09|10|
2016|01|

2008年
4月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Copyright (C)2005-2015 nu-chon.org.