2009年05月29日

Railsでtimestamp with time zone

最近Ruby on Railsの勉強中なのですが、Railsの流儀に逆らわないようにするのは大変ですね。

さて、そんなRailsでPostgreSQLのtimestamp with time zone型を取り扱おうと思ったのですが、どうも意図したとおり動いてくれません。

timestamp with time zone型はDB内部ではグリニッジ標準時(GMT)で値を持っていてクライアントで指定したタイムゾーンで変換して時間を返してしてくれるのですが、config/environment.rb

config.time_zone = 'UTC'
を指定していても、Railsの動作マシンのローカルタイムゾーンでDBから時刻を取得してくれます。

もちろん、

config.time_zone = 'Tokyo'
なんか指定した日にはDBが9時間加算してくれた時間をさらに9時間加算してくれて酷いことになります。

まぁ、config.time_zone自体をコメントアウトすれば、Rails 2.1未満のようにタイムゾーン無しで動いてくれるらしいのですが、昔の仕様に戻して動かすのはRailsの流儀ではないと思い、色々調べた結果下記のように対応することにしました。

続きを読む...

Posted by Takuchan at 01:21 | コメント (0) | トラックバック(0)

2009年05月05日

Custom Buttons用PukiWikiリンクメーカ

FireFoxのCustom Buttonsアドオン用のPukiWikiのリンクを作成するボタンを追加するスクリプトです。

Custom Buttonsアドオンが有効なときにツールバーの空いているスペースを右クリックで出てくる「Add new button...」をクリックして「Button URL」に下記を入力すればボタンを追加出来ます。
(すごく横に長いので注意してください(^^;)

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EPukiWiki%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAOZ/AO31+tnq9KXN5RJ8u6y91EWE0+Hu9qvR5x2CvtHm8pbF4QJzt93s9Yex4/z9/p3J48Hd7bXW6rmmvZjG4Y3A3vr8/SuKwtbo8w15un+42kuby/D2+1Whzsfg71qk0KOErL3a7Gut1XGx1jGNxHm12ejy+GWq0+bx+Mnb8qyVtZl9qLLU6Xy32bvS7yOFwLSbt7jX6+Tw967S6DuSx6HL5MTe7vf6/JDB34a83IC524+Mscrh8Mzj8JHC387k8UKWyUaZyvL4+6jP5urz+QZ1uKPM5fj7/cba8lCezYq/3gp3ufT5/Nvr9Xaz2JisyYq+3bDT6D6UyHim34e83KmMsLrZ64S73L/c7PL4/NPn8prH4jaQxoy/3oK624i93eTt+R+Dv2Cn0Z/A6fP4+2mc3PX6/MLX8TJ4z5/K47vZ7Nbk9SeIwa3J7Nfp9NDg9IO62xh/vZPD4JTE4FyU2aDK5Mjg7/X5/KG30cDX8I2hwb6+0Qh1uMDJ2jN5z/////8AACH5BAEAAH8ALAAAAAAQABAAAAfGgH+Cg4SDPUCCTR4zW4V/GC5bSCFVcU0RTRYDTDwyGCGCIUkBK4NlG3ALPxECg0J/PII2fmULEUQwAnKCNX8xMSdBNgsxFx1Euk8dgwYMJQslDD4QKws9XgGEPgtMAQk1MAdaCySFRDs7dRIvOjRxLHuFayswEVQfTgpJLBxIg3A0BBQRQEeLHC4ZMkSAM2jNnwkGFdzYl/BPGDB/1vgQxOXJGyskKv7xYeHPj0IPchwohGjChEE+NsYc5HLQkSEGCsXc+CcQAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bconst%20loc%20%3D%20content.document.location%3B%0Aconst%20slc%20%3D%20window._content.getSelection%28%29%3B%0Aconst%20ttl%20%3D%20document.title.replace%28/%20-%20Mozilla%20Firefox%24/%2C%27%27%29.replace%28%27%5D%5D%27%2C%27%uFF3D%uFF3D%27%29%3B%0AnewTab%20%3D%20gBrowser.getBrowserForTab%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%27%27%29%29%3B%0AnewTab.addEventListener%28%22load%22%2C%20function%28%29%20%7B%20newTab.contentDocument.body.innerHTML%20%3D%20%22%3Chtml%3E%3Cbody%3E%3Cform%3E%3Ctextarea%20cols%3D%2760%27%20rows%3D%278%27%3E%22%0A%20%20+%20%27%5B%5B%27%20+%20ttl%20+%20%27%3A%27+%20loc%20+%20%27%5D%5D%27+%20%22%5Cn%22%0A%20%20+%20slc%20%0A%20%20+%20%22%3C/textarea%3E%3C/form%3E%3C/body%3E%3C/html%3E%22%3B%20%7D%2C%20true%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
すると、FireFoxのツールバーアイコンとして登録されますので、通常のツールバーアイコンと同様にツールバーの開いている部分をクリックして「カスタマイズ(C)...」から好きな場所に追加を行ってください。

なお、このスクリプトは自分が便利なように、以前Sleipnir用に作成したSleipnir用リンク作成Script(2)と同一の動きをするように作っていますのでご注意下さい。

実際の動作は以下の通りです。
ボタンを押すと、押した瞬間に開いていたページのタイトルとURLからPukiWiki用のリンクを作成して、新しいタブにテキストエリアを作成して、その結果を表示します。
(なお、テキストが選択されていた場合、それも一緒に表示されます。)

続きを読む...

Posted by Takuchan at 05:49 | コメント (0) | トラックバック(0)

2009年05月04日

suPHP on SUSE 11.1

こちらのエントリの最新版です。

suPHPをopenSUSE 11.1(Apache 2.2)上で簡単に導入するためのレシピです。

1年前のエントリと同様にsuphpを導入する意味とか役割はわかっているものとしてここでは一切説明しません。

【用意する物】

  1. suphp-0.7.1.tar.gz
  2. mod_suphp-0.7.1-1_suse11.nosrc.rpm
【手順】
(root権限で実行する場合の手順です)

1. まずダウンロードしたmod_suphp-0.7.1-1_suse11.nosrc.rpmをインストールします。

rpm -ivh mod_suphp-0.7.1-1_suse11.nosrc.rpm

2. 続いてダウンロードしたsuphp-0.7.1.tar.gz/usr/src/packages/SOURCESに移動します

mv suphp-0.7.1.tar.gz /usr/src/packages/SOURCES

3. 次のコマンドを実行してパッケージを作成します

rpmbuild -bb /usr/src/packages/SPEC/mod_suphp.spec

4. 作成したパッケージをインストールします

rpm -ivh /usr/src/packages/RPMS/i586/mod_suphp-0.7.1-1_suse11.i586.rpm

(この際に「php5-fastcgi」を要求される場合がありますがその場合は下記のようにしてインストールして下さい。)
zypper in php5-fastcgi

5. apacheでmod_suphpを読み込むように設定します。

vi /etc/sysconfig/apache2
 にて「APACHE_MODULES=」が記載されている行を探してその中に「php5」があれば削除して、末尾に「suphp」を追加します。

 (デフォルトではmod_php5とは共存できません)

6. paranoidモードでコンパイルしていますので、

vi /etc/apache2/conf.d/mod_suphp.conf
 を編集して「suPHP_UserGroup」をコメントインして適切なユーザ名とパスワードを記載してください。

 例) suPHP_UserGroup hogeuser bargroup

7. あとはApache2を再起動すればsuphpにて動作するようになります。

続きを読む...

Posted by Takuchan at 03:17 | コメント (0) | トラックバック(0)

2009年05月03日

さよならSleipnir

いい加減Sleipnirのフリーズ祭りに耐えかねてついにFireFoxにメイン環境を引っ越してしまいました。

まだ若干不便なところもありますが、おおむねSleipnir時代より快適になって良い感じです。

とりあえず、Sleipnir化のために利用しているアドオンの一覧を晒してみます。

    • タブ管理のためにはこれがないと始まりません。
      ただ、多段タブは嫌いなのでにあるカスタムスタイルをさらに改変&TabMix自体も書き換えて極限まで横幅16pxでタブが描画できるようにしています。
      まぁ、これでも60タブぐらいで破綻してしまいますが、個人的にはこれですごく使いやすくなりました。

    • マウスジェスチャアドオン。
      これも無いとお話になりません

    • いろいろなショートカットキーを使うためのアドオン。
      そのままでは対応バージョン定義の関係で最新のFireFoxで動かないため、その部分を書き換えてインストールしています

    • 右クリックメニューを整理するためのアドオン。意外に必須ツールです

    • これが以降の決め手になったアドオンです。
      英語→日本語翻訳ボタンとか自作スクリプトの起動ボタンを簡単に追加できるのでこれ無しでは以降の決心は付かなかったと思います。
      翻訳ボタンは下記のサイトで入手可能です。


    • セキュリティ的にはダメダメな事をしりつつ、どうでも良いサイトへの自動ログインで便利に利用していたSeahouseのAuto Login Creatorの代わりとして導入しました。
      Auto Login Creatorよりは比較的セキュアですし、自動ログインではないですが、ショートカットキーを有効にすることでほぼ自動ログインとなるので、大体満足しています。
      (完全自動も出来るらしいですが、うちの環境では余りうまく動かないので・・・)

    • Seahouseの代わりです。
      また、無駄に「AUTOCOMPLETE="OFF"」が設定されていてSecure Loginが動いてくれないサイト対策にを居れるのに必要ですし、便利なでも必要になるので、これもFireFoxを使うなら手放せないアドオンです。

他にもSpleipnir以上に便利にするためにNo ScriptとかAdblock Plusなど多数のアドオンをいれていますが、そちらの紹介は別の機会にしたいと思います。

続きを読む...

Posted by Takuchan at 23:59 | コメント (0) | トラックバック(0)