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

mod_rewriteのコンテキストとサブリクエストについて調べた。

発端 WordPressでパーマリンクをカスタマイズすると、下の設定を.htaccessに書くように言われる。 Using Permalinks « WordPress Codex RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRu…

RubyでハッシュをパラメータにしてHTTPリクエストを送信する。

以下の3つのことをまとめて実行するメソッドを書いた。 Hashからクエリー文字列作成。 URLのパース。 Basic認証。 response = http_request("get", "http://www.example.com/search", {:id => 123, :name => "koseki"}, "user", "pass") みたいにして使う。 …

Mac OSXでPostfixが勝手に起動する仕組み

Mac

メールを送ろうとしたら送れたので驚いた。 Macではメールサーバの設定をしなくても、外にメールが出ていく。 プロセスリストを見ても気づかない。 sendmailコマンド実行時にpostfixが勝手に起動し、静かに終了する。 sendmailを実行するアプリケーション(PH…

WordPressをアプリケーションフレームワークとして使う。

WordPressを使ってアプリケーションを開発した。これまでWordPressは使ったことがなかったが、簡単に機能を追加できた。ブログ的なアプリケーションを効率よく開発できる環境になっていると思う。 ビュー: テーマをカスタマイズする ./wp-conent/themes/defa…

はてダ記事の変更履歴を表示するGoogleガジェットを作った。

こんな感じ。github APIからコミットログをXMLで取得して表示している。 ソース http://github.com/koseki/hatenadiary-writer/commits/master/lib/google_gadget.xml TODO 自動的にガジェットの高さを変えたい。_IG_AdjustIFrameHeight()はiGoogleでしか動…

github上に裏はてなダイアリーを構築する。

はてなダイアリーの記事をgithubでバージョン管理する。 - こせきの技術日記 の続き。github にコミットしたはてなダイアリーの記事を直接表示するサーブレットを作った。 スクリーンショット hatenadiaryを含むプロジェクト一覧。descriptionにid:***が含ま…

Github APIメモ

Github API (version 2)のメモ。主に情報取得系のAPIについて。 概要 ドキュメント http://develop.github.com/ フォーマットにxml,yaml,jsonを指定できる。以下ではXMLを指定する。ブラウザで見やすいので。 http://github.com/api/v2/:format (URLのベース…

Firefox 3.5にしたらS3 Organizerが使えなくなった。

S3

Error connecting to the server! と言われてしまう。ドットを含むバケット名をつかっているのが原因らしい。 AWS Developer Forums: SUBDOMAIN - CNAMEs - SSL ... www.example.com.s3.amazonaws.com のようなドメインはSSLの証明書 *.s3.amazonaws.com で…

はてなダイアリーの記事をgithubでバージョン管理する。

github や code repos のような公開リポジトリを使って、ブログに履歴管理機能を追加できるのではないかと考えた。この記事では、はてなダイアリーの記事をgithubでバージョン管理する方法を検討する。また、ブログ記事の履歴を公開するメリットについて考え…

Rails の定数に SVN のリビジョン番号を設定する。

config/environment.rb の末尾に以下を追加した。 SVNVERSION = %x{svnversion #{RAILS_ROOT}}.sub(/^$/,"NA") 最新の状態で起動しているか。 複数のアプリケーションやサーバが、同じリビジョンで動いてるか。 起動時に作業ディレクトリに変更が加えられて…

実行中のアプリケーションを外から観察するコマンド。

strace システムコールをトレース。カーネルと何を話しているか。 strace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 straceを使ったデバッグ - SourceForge.JP Magazine : オープンソースの話題満載 Linuxカーネルの作り出す世界 − @IT自…

Rails2.xでログを独自のフォーマットで出力する。

現時点(Rails2.3.2)では、BufferedLoggerのフォーマットは変えられないらしい。 #1307 BufferedLogger should support message formatting. - Ruby on Rails - rails formatterを設定するパッチが出てるけど、まだ取り込まれてない。 loggerで出すログのフォ…

mod_rewriteの考え方。

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html を見ながら。 URLが正規表現(A)にマッチし、かつ 文字列(B)が条件(C)を満たす場合に、 URLを(D)に書き換える。 というのが基本。 RewriteRule URLが(A)の正規表現にマッチしたら(D)で書き換える。正…

JavaScriptのString#splitについて書いた。

引数に正規表現が使えないという話を書き足した。 JavaScript正規表現メモ。 - こせきの技術日記 以下の焼き直しだけど。忘れてた。 String#splitで正規表現を使わない。 - こせきの技術日記

Tokyo TyrantでテーブルDBを指定するとtcrtestがエラーになる。

Tokyo Cabinet / Tokyo Tyrant を使ってみているのだが、テーブルDBにTTのRuby binding経由で読み書きを繰り返していると、 エラーコードがずっとEMISC(9999)のままになる。 結果がたまに空で返ってくる。 再接続すると正しい結果が返る。 この時のエラーコ…

JavaScript正規表現メモ。

タイトル変えました。旧タイトル「JavaScriptでよく使う書き方」。よく使うけど毎回忘れる。 正規表現にマッチするかどうか。 RegExp#testを使う。 /abc/.test("abcdefg") // => true String#searchはマッチした位置を返す。マッチしない場合は-1。先頭にマ…

Amazon EC2 (Xen) では ntp の設定は不要。

EC2

らしい。 We use NTP to synchronise all our servers. I believe that the EC2 time inside instances is actually sourced from the host machine (there's some Xen setting for this which escapes me at the moment). AWS Developer Forums: How accura…

Railsでrenderする時のステータスコードの指定方法。

http://api.rubyonrails.org/classes/ActionController/Base.html render :text => "error", :status => 500 render :text => "error", :status => :internal_server_error statusをシンボルで指定する場合は、lib/action_controller/status_code.rbを参照。…

Mac OSXにTokyoCabinetをインストールした。

ファーストトライ 本体はportで入れた。(→ダメでした。後述) $ port search tokyocabinet tokyocabinet @1.4.5 (databases) Tokyo Cabinet is a library of routines for managing a database. $ port search tokyotyrant tokyotyrant @1.1.14 (databases) T…

gemをホームディレクトリにインストールしない設定。

gem installでsudoを付け忘れると~/.gem/以下にgemがインストールされてしまう。予想外なgemを参照していたりして気持ち悪い。 アンインストール --install-dirを付ける。 $ gem uninstall activerecord --install-dir ~/.gem/ruby/1.8gemの一覧を得る方法は…

find -execをゆっくり実行する。

nice -19 find . -exec sleep 1 \; -exec echo {} \; nice -19 find . -exec usleep 500000 \; -exec echo {} \; -execは複数書ける。先行するexecが失敗すると残りは実行されないっぽい。

地雷だらけのrsyncを理解する。

rsync -avz --exclude-from=pattern-file --delete SRC/ DEST SRCの末尾に/をつける。たいてい必要。 SRCスラッシュの有無は、mv SRC DEST と mv SRC/* DEST の違いと一緒。スラッシュの後ろに*が省略されているものと考える。 DESTのスラッシュの有無は関係…

erbのタグをエスケープするには <%% とパーセントを2つ書く。

erbでerbを出力したいことがたまにあるのでメモ。 <%% escaped %>閉じるほうは2つ書く必要なし。<% %>の中に%>を書きたい時は閉じるほうの%を2つ書く。以下例。 $ irb >> require "erb" => true >> ERB.new("<%% test %>").result => "<% test %>" >> ERB.ne…

GmailのSMTPサーバを使ってメールを送信する。

gistにsendgmail.rbを足しました。smtp.gmail.comでメールを送ります。 http://gist.github.com/86778 Rubyで日本語のメールを送る。 - こせきの技術日記

Railsのバリデーションについて。

バリデーションの階層 ActiveRecord::Validations::ClassMethods の一番上にバリデーション方法の階層について書いてある。高レベルな順に、 validates_presence_of :firstname みたいなやつ。modelのクラスレベルで呼ぶ。 validates_each クラスメソッドの …

RubyでSkypeのシェルを作る。

Mac用。rb-skypemacをインストール。 $ sudo gem install rb-skypemac以下を保存。 #! /usr/bin/env ruby require "rubygems" require "rb-skypemac" require "readline" include SkypeMac while buf = Readline.readline("skype> ", true) if buf == "help"…

Rubyで日本語のメールを送る。

なるべく少ないライブラリで正しい日本語のメールを送る方法について。 結論 先に結論から。 require "nkf" require "net/smtp" def sendmail(from, to, subject, body, host = "localhost", port = 25) body = <

文字列をCDATAで出力するメソッド。

文字列をCDATAに変換。 def cdata(str) str = str.to_s.gsub(/\]\]>/, "]]]]>") return "" end Railsのhelperでブロック内をCDATAで出力する。application_helper.rbなどに追加。 def cdata(&block) src = capture(&block) src = src.to_s.gsub(/\]\]>/, "]]…

MacPortsでRuby 1.8.6と1.8.7を切り替えられるようにした。

MacPortsにruby186が追加されていました。今年の1月に追加されたようです。 New port - lang/ruby186, Ruby at version 1.8.6 for those who need it for compatibility reasons (not heavily tested) Changeset 45292 for trunk/dports/lang/ruby186 – MacP…

Ruby cursesで日本語が文字化けする。

Rubyの標準ライブラリcursesでUTF-8の日本語が文字化けする。Rubyのバージョンは、MacPortsで入れた1.8.6。 #! /usr/bin/env ruby require "curses" Curses::init_screen Curses::setpos(5,5) Curses::addstr("テスト") Curses::getch Pythonだと日本語も表…