2008-01-01から1年間の記事一覧

Request URI is too long.

長いURLなどで、「414 Request URI is too long.」エラーが発生してしまう問題。 具体的にはヘッダが1KB以上の場合にこのエラーが発生する模様。対応するには、ソースを一部修正すればよい。 (configureのオプションでって情報もあったけど、うまくいかなか…

ActiveRecord tips

気づいたこと、ちょっとしたことを書いていこうかな。対象バージョン 2.0.2 SQLを生成 ActiveRecord::Base.findが内部で使ってるメソッドを呼べば、findと同じパラメータを使って、同様のSQLを組み立てられる。サブクエリなんかに使えるよね。行儀悪いけど。…

Webプログラミングと技術

プログラミングのジャンルと難易度(および Web プログラミング批判) Web に可能性があるというのなら、 Web アプリケーションを構文解析に劣る程度の文字列処理、あるいは GUI プログラムの焼き直しで終わらせちゃいけない。違いませんか? ごもっとも。 た…

Rails2.0.2のjavascript_include_tagのcacheはRailsがルート以外(/appとか)で動いてるとバグる

タイトルの通り。 たとえば、mongrel_clusterなんかをつかってて、 prefix: /railsとかやってて、アプリのURLが http://taslam.example.jp/sampleなんかになってると、javascript_include_tag(*, :cache => 'cache')の動作がおかしくなる。Railsのソースを追…

DelegateによるFTP/SMTP/POPプロキシの構築

ソースコードの入手〜コンパイル 公式から落としてきてmake wget ftp://ftp.delegate.org/pub/DeleGate/delegate9.8.1.tar.gz tar zxvf delegate9.8.1.tar.gz cd delegate9.8.1 make インストール srcの中にdelegatedってのが出来てるので適当なところにコピ…

has_many :throughな関連テーブルでの検索について

関連テーブルでカテゴリみたいな多対多の関連を実装したとき、一番安易なのはとのかくJOINで全部連結しちゃう方法だけど、これだと重そうだ。なるべく連結の規模が小さくて拡張しやすそうなSQLを考えてる。SQL素人の癖に。いろいろ試してみたけどこんな感じ…

3.開発環境

ソース管理の実施 ソースのバージョン管理「元に戻す機能」。 ロックを使用すると競合の問題はなくなるが、ロックの解除を忘れると悲惨だったり欠点あり。 tagはマイルストーンに対して意味のあるラベルとして使える。 branch リリース時にbranchを作り、保…

JavaScriptとサーバーの間で双方向のRPC

id:viverさんのところで、Comet/Ajaxの上を行く技術として紹介されてた。 Ajaxもそうだが、個々の技術は目新しいことはないのに、それらを組み合わせることで面白い技術を生み出せるってのは興味深いね。おもしろそうなので使ってみたいと思う。

集約関数ではNULLのフィールドは除外される

sql

Web+DB Press vol.44の特集「SQLアタマ養成講座」を読んでてちょっと不思議だった点。 (p65) MAX関数を使ったのは、どうせ切り分けた集合が一行しか含まないのだから [NULL, 100, NULL]とかNULLを含んだ集合になんじゃね?集約関数,GROUP BY句,HAVING句…

鎌倉の自宅ではたらく、父子2人のIT企業

ITmedia 鎌倉の自宅ではたらく、父子2人のIT企業 就職活動はしていない。何となく行きたい会社がなかった。脱サラを考えていた父と「2人で会社を作ろう」と話もしていたが、しばらくはニートにでもなるつもりだった。 私立の院まで出といてなんというブルジ…

使ってみたけど

良いと思った点 分散リソースがかんたんに使える 特に更新などが楽 システムの疎結合化を 不便だなぁと思った点 ページネーション。limitとoffsetで検索範囲を指定できるように実装しても、ページネーションに関する情報は付加できないので、どうしてくれよ…

2.ウェブアプリケーションのアーキテクチャ

ただ読むだけじゃ理解できない低脳なのでノートとりまーす。 Webアプリケーションにおける階層化アーキテクチャ プレゼンテーション層 飾りつけ CSS マークアップ層 ユーザに見える形で、下位層へのアクセス手段を提供 受け取ったデータをHTML、XMLに落とし…

ソフトウェアRAID

RAIDレベル 断然1がおすすめ。 5はArray崩壊のトラウマが・・・ RAIDデバイスのつくる際の注意 ややこしいので/bootもswapもミラーリングする。 grub OSのインストール後、ブートローダGRUBをsda,sdbそれぞれの/bootにインストールしておく。こうしておかないと…

ActiveRecordでPostgreSQLのバージョンを調べる

Ludia 1.5でPostgreSQL 8.3対応が行われ、@@演算子が「%%」に変更になった。これに対応するため、PostgreSQLのバージョンを判別する必要があった。ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#postgresql_version で取得できる。 # PostgreSQL 8.1…

Slony-Iをrpmで導入

CentOS 5.1 x86_64 PostgreSQL 8.3.1(yum.postgresql.orgのもの) RPMづくり http://slony.info/:公式からソースを拾ってきてrpmをつくる。 wget http://slony.info/downloads/1.2/source/slony1-1.2.13.tar.bz2 tar jxvf slony1-1.2.13.tar.bz2 cd slony1-…

Syslog-ngとpoundでpoundのアクセスログをApache風に出力させる

poundでロードバランシングさせていると、Webサーバ1台で運営するのに比べ、アクセスログが分散して全体を把握しにくい。Railsアプリなんかの振り分けもしてると余計に。 Poundの設定 「LogLevel 3」がミソ。「4」にするとバーチャルホストのないタイプにな…

pgsnmpdのインストール(失敗)

Web+DB Press vol.43に載ってたので入れてみる。 今回の環境 CentOS 5.1 x86_64 PostgreSQL 8.3.1 net-snmpが必要らしい syslog-ngを入れるときにもう入れてたが、入れてなければyumで。 yum install net-snmp.x86_64 落としてくる http://pgfoundry.org/pro…

APCUPCDで自動シャットダウン

APCのAPCES725を買った。 オープンソースのapcupsdで、バッテリ駆動になったとき自動シャットダウンできる。 入手 APCUPSDのサイトで、RHEL5(x86_64)用のRPMパッケージを拾ってきた。 インストール net-snmpも必要なので一緒に入れる。 yum install -y net…

エントリ毎に認証するユーザを変更する

そのままだとモデル毎に接続を設定することになるが、これでは複数のユーザがそれぞれのアカウントで接続して、それぞれの権限でエントリを編集するといったことはできない。コードを追ってみたところ、エントリの更新などの際にはActiveResource#connection…

rssadがうざい。

なんかあるブログのRSSに「PR:」とかついた、そのブログの記事ではないエントリがついてきてた。 で、調べてみたら、RSS広告社ってところのTrendMatchというサービスらしい。すごく・・・うざいです・・・新着記事を効率よく取得するためにRRSを使ってる人に…

エイプリルフールネタ

ネット上ではもはや恒例となっているエイプリルフールのジョークサイト。 GIGAZINE エイプリルフールに便乗しているサイトまとめ2008年版 コーヒー吹いたwww

ドコモ、携帯電話の「識別番号」・コンテンツ会社に通知

http://www.nikkei.co.jp/news/main/20080330AT1D280EI29032008.html NTTドコモは31日から携帯電話の「識別番号」をコンテンツ会社に通知するサービスを開始する。コンテンツ会社は識別番号を活用し、携帯でサイトを閲覧した履歴などが把握できるようにな…

ActiveRecord::Base#to_xmlをキャッシュ

to_xmlが遅いので適当に作ってみた。developmentモードではキャッシュ無効。 ただし memcache-clientが必要。 :builderオプションが渡されたときは、キャッシュを使わない。(Entry.find(:all).to_xml とか) Rails 2.0.2でしか試してない。 無保証。 インス…

いまさらActsAsVersioned

やっぱり便利ですね。 既存のアプリにインストール script/plugin install acts_as_versionedモデルにacts_as_versionedを追記。 class Entry < ActiveRecord::Base acts_as_versioned end マイグレーションを追加。 require 'entry' class CreateEntryVersi…

ActiveResourceでWSSE認証

Basic認証以外に対応させるの例として、WSSE認証。 require 'digest/sha1' require 'base64' class ActiveResource::Connection::WSSE < ActiveResource::Connection private def authorization_header if @site.user || @site.password { 'Accept' => 'appl…

Basic認証以外に対応させる

HTTPリクエストヘッダに認証情報を付加する場合(WSSEとか)。 ソースを追ってみるとActiveResource::Connection#authorization_headerをオーバーライドしてやれば良い様だ。 # Sets authorization header; authentication information is pulled from crede…

ActiveResourceを試すための準備。

RESTって? http://yohei-y.blogspot.com/2005/04/rest_23.html:REST入門 ActiveResourceって? RESTアーキテクチャでいうところのリソースをActiveRecordと同様のインタフェースで扱うためのマッパ。 TwitterAPIをActiveResourceで TwitterのAPIでRailsのAc…

インスタンスメソッド内でアクセサを使う際の注意点

ちょっとしたことだけど、知っておかないとよくわかんないバグになるよ。 インスタンスメソッド内で、アクセサを使ってインスタンス変数を変更する際の注意点。 たとえば、 class Sample attr_accessor :a, :b # インスタンス変数@a,@bを文字列連結して返す …

チベットでの抗議デモを、中国政府が武力弾圧

ソースはBBC。 こんな国でオリンピックとかwww なんで日本じゃ詳しく放送しないんだろう( ´゚д゚)(゚д゚` )ネー チベット問題 解説

テストで@requestが拡張されていない→携帯のテストができない

超お手軽に対応するにはtest_helper.rbとかに、 class ActionController::TestRequest # 環境変数 HTTP_USER_AGENT を返す。 def user_agent env['HTTP_USER_AGENT'] end # 環境変数 HTTP_USER_AGENT を設定する。 def user_agent=(str) self.env["HTTP_USER…