高専プロコン2009競技練習場

2009年6月19日

以下のページで、今年の高専プロコン競技部門の練習ができるようです。

高専プロコン2009競技練習場

いないとは思いますが、このページを見ている高専プロコン参加予定の方は活用してみてはいかがでしょうか。

Ramazeでセッション情報を生成しない方法

2009年5月28日

今日ふとPerfume Headlineのキャッシュディレクトリを開いてみると、セッション情報であふれていました。
そもそもPerfume Headlineにはセッションを必要とするような機能を何も実装していないので、削除したついでにセッション情報を生成しないようにしてみました。

というわけで、以下にその方法をメモしておきます。
記述する場所はstart.rbとかでいいんじゃないでしょうか。

Ramaze::Global.sessions = false
Ramaze::Global.no_cache_flash = false

なお、この方法はRamaze-2009.03で動作することを確認しています。
2009.04以降ではRamaze::Globalが廃止されたらしいのでたぶん動作しないと思います。

SmartWheel version 0.0.1

2009年5月22日

SmartWheelを公開しました。

ダウンロード / 詳細

マウスホイールの回転操作をカーソルがある位置のウィンドウにリダイレクトして操作性を改善するソフトはよくありますが、64bit OSに対応しているものが少ないようなので作ってみました。
Windows Vista SP1 x64およびWindows 7 RC x86で動作確認しています。

他にもいくつかほしいソフトに64bit非対応のものがあるので、それも作成する予定です。
なお、今回のプログラム名がSmartWheelになっているように、1つのソフトウェアに機能を詰め込むのではなく、目的ごとにそれぞれ単機能のプログラムにする方針です。
これはPCのリソースが増えていて多少贅沢な使い方をしても問題なくなりつつあること、機能の有効、無効を切り替えるユーザインターフェイスを用意する手間を省くことが主な理由です。

64bit OSでは32bit版と64bit版の両方が同時に動作することになってかなり気持ち悪いですが、たぶん仕様なのでご了承ください。

Ramazeでレンダリング結果をファイルにキャッシュする正しい方法

2009年5月2日

たまたまRamazeをインストールしたディレクトリを見ていたところ、ramaze/cache/file.rbなるファイルが。
というわけでstart.rbあたりに以下のような記述をするとキャッシュがファイルに生成されるようになり、CGIでもキャッシュを活用できるようになります。
前回書いたコードは忘れてください。

Ramaze::Global::cache = Ramaze::FileCache

あとはメモリキャッシュを用いる場合と同様にコントローラを記述すれば細かな制御が行えます。
とっても簡単できれいですね。
この方法だとCGI起動、ライブラリ読み込みのオーバーヘッドは発生してしまいますが、何もしないときよりは高速ですのでまあ十分かと思います。

ただし、Ramazeは「:(コロン)」を含んだファイル名でキャッシュを生成しようとするので、Windows環境だとローカルでのデバッグ時にエラーが発生します。
そのへんは各自対処してください。

ExUtilV version 0.0.8

2009年4月26日

ExUtilVを更新しました。

ダウンロード (32ビット) / (64ビット) / 詳細

今回の変更点は64ビットOSに対応したことです。
ただ、私の手元には64ビット環境がないので、32ビット版以上にまともなサポートは期待しないでください。

なお、32ビット版は内部の書き換えのみで機能追加、修正などはありませんので、すでに0.0.7をご利用いただいている方はバージョンアップする必要はありません。

Ramazeでレンダリング結果をファイルにキャッシュする

2009年4月19日

mod_rewriteを使ってCGI環境で超高速にキャッシュを返す」という記事を読んで、Ramazeで同じことをやろうとしたら結構困ったのでメモしておきます。
ちなみに、Ramazeに標準で用意されているキャッシュはメモリ上にキャッシュするものなので、CGIでは使えません。

キャッシュを生成するためにはレンダリング結果のHTMLが必要なわけですが、Ramazeにはレンダリング結果を読んだり書いたりする方法は(たぶん)用意されていません。
そのため、Ramaze内部のレンダリングを行っているメソッドを上書きして強引にデータを読み取ります。

module Ramaze
  class Action
    unless method_defined?(:static_html_original_render)
      alias_method :static_html_original_render, :render
    end
    def render
      # オリジナルのレンダリング処理を呼び出す
      content = static_html_original_render
      # ここで適当に content の内容を保存
      # full_pathでリクエストのパスがとれるのでこれを使うとよいです
      # オリジナルと同じ値を返す
      content
    end
  end
end

あとは冒頭で挙げた記事にあるように、.htaccessで制御、cronで古いキャッシュの削除を行えばOKです。

ExUtilV version 0.0.7

2009年3月23日

ExUtilVを更新しました。

ダウンロード 詳細

主な変更点は、一行選択の解除とリネーム補助がファイル選択ダイアログでも機能するようになった点です。
ファイルを開いたり保存するときに、操作性の違いでイライラすることがなくなるのではないでしょうか。

また、通知領域にアイコンを表示することもできるようになりました。
表示されるだけで特にできることはありませんが、見えないソフトが起動していると不安に感じるという方はご利用ください。
なお、Windows 7では通知領域に勝手にアイコンを表示してはいけないらしいのと、個人的に邪魔だと思うのでデフォルトでは非表示です。

ExUtilV version 0.0.6

2009年3月16日

ExUtilVを更新しました。今回からきちんとした説明ページも公開しています。

ダウンロード 詳細

主な変更点は、キーボードから検索バーを利用するときの操作性を向上させたことです。ファイル名を部分一致でインクリメンタルサーチし、そのまま開くことができるようになります。

なお、この機能をより快適に利用するためには、エクスプローラの設定を変更する必要があります。詳しくはreadme.htmlをご覧ください。

検索を終了して先頭の項目を開く機能が\(円マークおよびバックスラッシュ)キーに割り当てられていますが、これはEnterキーだとうまく動作しなかったため、ファイル名として使われることのない\に仕方なく割り当てたというだけです。この状態が理想であるとは考えていませんので、今後も改善方法を調べていきたいと思います。

今のところは、キーボードの割り当てを変更するソフトウェアのご利用をおすすめします。
以下は窓使いの憂鬱(のどか)での設定例です。

window SearchControlEdit /:WorkerW:ReBarWindow32:UniversalSearchBand:Search Control:Edit:Edit$/ : Global
  key Enter = Yen
window Explorer /:SHELLDLL_DefView:SysListView32$/ : Global
  key Backspace = M-Up

ExUtilV version 0.0.5

2009年3月12日

暇なのでExUtilVを更新してみました。新機能として右上の検索バーを消す機能を追加しています。

ダウンロード

検索バーを非表示に

既定では機能しないようになっているので、起動前にExUtilV.iniを編集してからご利用ください。

エクスプローラをMac風表示にしようとして失敗

2009年3月12日

Macのリスト表示は奇数行と偶数行で色が異なるストライプ状になっており、Windowsの全面真っ白(色自体は変更可能ですが)よりも見やすいように思います。

しかし、ただ羨ましがっているだけではどうしようもない。ということでフック、サブクラス化、カスタムドローを駆使して再現してみました。以下スクリーンショットです。

Mac風にしようとして失敗したエクスプローラ

ご覧のように並び替えの基準として用いられるカラムはWindowsによって勝手に色を変更されてしまい、失敗。簡単に解決できそうもないのでとりあえずあきらめることにします。