2010年7月9日金曜日

Coreserverに最初からMeCabが入ってた件

ひどい、今気がついた。
自力でMeCab入れて、MeCabのRuby用バインディング入れるところまではOK。でもいざ使ってみると毎回コア吐くし、意味がわからんと思ってたら…

なんか最初からMeCabとRuby用バインディング入ってるんですけど!
しかも最初から入ってるやつがCore吐いてるっぽい
(追記) Core吐いてる理由は、使っている辞書(UNIDIC)にあった可能性が。下に詳しく追記。

使えないもの入れてるんじゃねーよ…

というわけなので、デフォで入ってるMeCabのバージョンは最新の0.98だけど、自分で入れ直した方がよさそうです。

2010年7月7日水曜日

CoreserverにRuby1.8.7入れてみた

いいかげん CoreserverのRubyが1.8.5でイライラしてたので、思い悩んで自分で入れることに。
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.gz
tar fvxz ruby-1.8.7-p299.tar.gz
cd ruby-1.8.7-p299
nice -19 ./configure --prefix=$HOME/local –-disable-install-doc
nice -19 make
nice -19 make install
nice -19しておかないと、CPU負荷制限にひっかかってコンパイル途中で中断されます。

CGIでRuby1.8.7を使うときは、、、、シバンに#!/virtual/himika/local/bin/ruby って指定しないといけないね。ちょっとだるい。何か良い方法は無いかなぁ。

2010年6月28日月曜日

IEのメモリリーク問題

前に書いた javascript のクロージャと ローカル変数 に関連するメモ。
というか、これを書くための前置きとして書いたものだったり。


2010年6月26日土曜日

短縮URLぽいことをしてみる

ヒマだし面白そうだから、短縮URLっぽいことをするスクリプト書いてみた。
準備するもの
  • .htaccessを置けて mod_rewrite が使えるサーバー
  • CGIが利用可能&Rubyが使える
  • ドメインかサブドメインでのホスティング


public_html 直下に置く .htaccess を作成

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/REDIRECT_DATA%{REQUEST_URI} -f
RewriteRule ^(.+)$ /redirect.cgi%{REQUEST_URI} [L]
これで、http://www.hoge.com/FooBar にリクエストが来た場合
いままでは /FooBar が存在しない場合は404 Not Foundだったのが

/REDIRECT_DATA/FooBar が存在するなら、404ではなく
リダイレクト用のCGIスクリプト(/redirect.cgi)が呼ばれるようになる。

/REDIRECT_DATA/FooBar が見つからなければ、今まで通り404 Not Found

リダイレクト用のCGIスクリプト redirect.cgi を設置

#!/usr/bin/ruby

begin
file = "REDIRECT_DATA#{ENV['PATH_INFO']}"
raise File.dirname(file) unless %r{^REDIRECT_DATA/} =~ (File.dirname(file)+'/')

File.open(file) do |f|
location = f.gets.chomp
if %r{^/} =~ location
server_name = ENV['SERVER_NAME'] or raise
server_port = ENV['SERVER_PORT'].to_i or raise

if ENV.has_key?('HTTPS') and /off/i !~ ENV['HTTPS']
port = (server_port == 443) ? '' : ':' + server_port.to_s
location = "https://#{server_name}#{port}#{location}/"
else
port = (server_port == 80) ? '' : ':' + server_port.to_s
location = "http://#{server_name}#{port}#{location}/"
end
end

puts "Status: 302 Found"
puts "Content-Type: text/plain; charset=UTF-8"
puts "Location: #{location}"
puts ""
puts location
end
rescue
puts "Status: 500 Internal Server Error"
puts "Content-Type: text/plain; charset=UTF-8"
puts "Cache-Control: no-cache"
puts ""
puts "Internal Server Error"
end
これで準備OK

短縮URLとリダイレクト先の設定

http://www.hoge.com/Foo/Bar へのアクセスを
http://www.hoge.com/abcd/1234/hoge.html に飛ばしたいなら
/REDIRECT_DATA/Foo/Bar というファイルを作成して
http://www.hoge.com/abcd/1234/hoge.html
リダイレクト先のURLを書いておけばOK。
リダイレクト先が同じドメインなら、http://www.hoge.com は省略可
/abcd/1234/hoge.html
↑これでもOK

2010年6月24日木曜日

javascriptのクロージャとローカル変数

javascriptのクロージャは下のどちらのタイプなのかを調べてみた
  1. クロージャの中から参照されているローカル変数のみ保持される (Perl Python型)
  2. 参照されているかどうかにかかわらず、アクセスできるすべてのローカル変数がクロージャの中でも保持される (Ruby型)

Google検索からの訪問で

検索ワードをハイライトするようにしてみました。
こんなかんじに

まだGoogleからの訪問しか対応してないので
気が向いたら他のサーチエンジンもそのうち。