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

Class::Stdを使用したインサイドアウトクラスの作り方の基本

Perlベストプラクティスを参照してClass::Stdを利用したインサイドアウトクラスを使うようにしてみたので、基本のところを整理しておきます。 前提など 確認環境は、perl5.8.8です。 Class::Stdを使用するのでcpanよりインストールします。 $sudo cpan insta…

attachment_fuプラグインの保存先を変更

前回、attchment_fuでとりあえず画像アップロードをしてみたが、今回、保存先と画像を参照するurlを変更する実装を行っていみる。 アプリケーションとは別のディレクトリで画像を管理したいということと、 railsではなくapacheで画像のリクエストを処理させ…

attachment_fuプラグインで画像アップロード

前提 RMMagicをインストールしておく。 インストール railsアプリケーションのトップでscript/pluginを実行してインストール>ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/attachment_fu 今回の例 既存の商品モデル(product)…

RMagickインストールメモ

環境はMacBook Pro / MaxOSX 10.5.7 参考させていただいたのは、篳篥日記,Installing RMagick on OS X using MacPorts,Goodpic ブログなど。 とりあえず,jpeg,png,gif,tiffあたりのファイルタイプを使えるようにインストール。 png,jpeg, freetype /usr/loca…

i18nの整理

Rails2.2のi18nの使い方を整理しておきましょうっと。 初期化 「/config/initializers/locale.rb」で基本の設定を行う。 主な設定属性は以下のとおり。 I18n.load_path 翻訳テキストファイルのパス I18n.default_locale デフォルトの言語 I18n.locale 現在の…

コルーチンのお勉強

プログラミングGaucheのコルーチン(19.8)内容のお勉強。P299に載っているexitのための手続きが定義されるほうのコルーチンを定義するためのマクロ定義の解読。 (use util.queue) (define *tasks* (make-queue) ) (define-syntax define-coroutine (syntax-ru…

継続のお勉強

プログラミングGaucheのcall/ccでの継続(19.4-19.6)内容のお勉強。 break/next名前付き for-each 本のサンプルより単純な例(受け取るリストを可変ではなく1つに限定)で実装してみる。 (define-syntax for-each-ext (syntax-rules () [ (_ break next expr l…

メソッド適用のカスタマイズ

プログラミングGaucheの[17.5.3 メソッドの適用のカスタマイズ]の内容を復習。総称関数を標準のクラスのインスタンスではなく、これを継承した独自のクラスのインスタンスとすることによりメソッドの適用方法をカスタマイズ(今回はログ出力)する。 総称関…

sumとaverage

プログラミングGaucheを読んでいる途中ですが、リストの再帰処理の復習として合計と平均算出を実装してみる。 sum 0を初期値とし、要素の値を加えた値を引数として渡して再帰していく。最後にその値を返すという末尾再帰による実装。 (define (sum lis) (let…

プログラミングGaucheの練習問題(オブジェクト-外部表現文字列変換)

プログラミングGaucheの14.3の練習問題(P203)をしてみる。 write-to-string オブジェクトを外部表現文字列にしたものを結果として返す手続き。 write手続きで文字列ポートへ書き込めば、call-with-output-stringがそのポートに書き込んだ内容を結果として返…

プログラミングGaucheの練習問題(入れ子リストへの手続き適用)

プログラミングGaucheの7.2の練習問題(P68)をしてみる。 for-each-numbersとmap-numbers これらは、filter関数でnumberのみにフィルタリングされたリストに対して、for-eachまたはmapを適用するだけなので、以下のとうり。 (define (for-each-numbers pred l…

cookieを保持、参照するplugin

クッキーの値をDBに格納しておき(Visitorというモデル名にする)、 次回同じユーザがアクセスしたときに格納しておいた情報を参照できるようにするというもののPluginを作ってみました。 マイグレーション まず,cookieを保存しておくテーブルを生成。Pluginの…

cookieで前回アクセス時の情報を復元

クッキーの値をDBに格納しておき、 次回同じユーザがアクセスしたときに格納しておいた情報を参照できるようにするするためのベースの仕組みの試作を行ってみました。 テーブル定義 まず,cookieを保存しておくテーブルは以下のように定義します。 class Crea…

will_paginateでのDISTINCT指定など

railsでwill_paginate使う場合で結果をdistictしようとしてすこしはまったのでメモです。 selectオプションにDISTINCTを指定 まず、単純にpaginateメソッドのselectオプションに「DISTINCT」を指定してみました。 self.paginate(:all, :joins => joins, :con…

MeCabのラッパーを実装

Mecabのインストール、Mecabのrubyバインディングのインストールを行ったので、Mecabのrubyバインディングのラッパークラスを作ってみました。 目的 商品名や説明分を形態素に分解してキーワードのインデックスを作り、そのキーワードインデックスからの検索…

Macabのモジュールの導入メモ

MAC OSX10.5へのMacabのためのrubyモジュールの導入メモです。 取得 http://sourceforge.net/project/showfiles.php?group_id=177856&package_id=205294:sourceForgeより取得。 今回はmecab-ruby-0.97.tar.gzを取得 インストール $tar xvzf mecab-ruby-0.97.…

Mecabの導入

Mac OSX10.5へのMecab(形態素解析ツール)の導入とphp拡張モジュール導入のメモ 本体と辞書のインストール http://mecab.sourceforge.net/からmecab-X.X.tar.gz(本体)とmecab-ipadic-2.7.0-XXXX.tar.gz(辞書)と 本体をインストール % tar zxfv mecab-X.X.tar…

Page not found

マッチするルーティンが無かったときに 「Page not found」のページを出すためのはどうするのだったか? と調べてみる。"*anything"というパターンに対してルールを書けばよかったんでしたね。 map.conect "*anything", :controller => '/error', :action => …

raill2.2.2へ更新

railsの2.0.2でアプリケーションを作っていましたが、今回2.2.2へアップグレードしてみました。 環境はMacBookPro上のMacOSX10.5です。 gemでrailsをインストール とりあえず、あまり考えずの「gem update rails」とインストールしてみました。それから,アプ…

MacOSX 10.5(Leopard)上にPHP5.2(5.2.6または5.2.8)を入れるさいにはまったことをメモ

libiconvのリンクに失敗する。 コンフィギュ時に「--with-iconv」オプションを指定して、libiconvを含める指定をしたがリンク時にシンボル解決できずエラーになりました。 それで、こちらであったように[--with-iconv=shared,/usr]というようにsharedにすれ…