• ブログ
  • ふぉとす
  • キーワード
  • ブックマーク
  • 写真
  • ログイン

Title

« 2007年02月 | 2007年04月 »
  • 近代工業的ベルトコンベア式健康診断 2007-03-01 00:00:00

     昨日は日本橋のあたりまで健康診断のために行ってきました。息をすったり吐いたりベッドに横になったり口をひらいたり、素直にいわれたとおりに動くのが子供のころを思い出させてくれてなんだか楽しかったです。血を取られるのだけがイヤだったけど。注射は大嫌い。

     ubuntuでは仕事の書類も作成できたし印刷もできたしデジカメの写真や動画もUSB経由でWindows以上にスムーズにもってくることができて、想像以上にできる感じです。あとはデザインとかフォントがもっとよくなれば……と思う人がMacBookを買ったりするのでしょう。coLinuxとかなしに、ローカルに開発環境をおけるのは思っていたよりもストレスが軽減されていいですね。素晴らしい。

     それから、ubuntuを6.06から6.10へアップグレードしました。本家サイトのやり方ではうまくいかなかったけど、こちらのサイトを参考にやってみたらうまくいきました。よかったよかった。

     ユルさんと新宿で待ち合わせてぶらぶら。ヨドバシカメラでMacBookを見ます。やっぱりいいなあ、MacBook。でも、やっぱり白はみんな薄汚れています。これはちょっとイヤ。といって、黒はおさがりの学ランみたいに手が触れるところがテカテカしているし。買うならMacBook Proがいいですね。

     ubuntuからYoutubeに動画がアップできるかやってみました。これも簡単でしたね。まあWebなんだからプラットフォームが関係ないのは当り前なんだけど。動画はぼくのVAIOでubuntuが起動するところです。

    Commentコメント(0) Pageリンク元(11) Append 74
  • まるごとJavaScript & Ajax ! Vol.1
    メディア: 大型本
    ビューティフルコード
    作者/アーティスト: Andy Oram,Greg Wilson,久野 禎子,久野 靖
    メディア: 大型本
  • Try and say my name! 2007-03-02 00:00:00

     藤堂さんからすごいプレゼントがやってきた!
    83
     ケロロだ。
    84
     うおー、ジャキ様だ。すごい。誕生日プレゼントにこんなのもらったのは初めてです。なにより、ネタのためにプレゼントをする藤堂さんがすごい。ありがとうございます。大事にお家にいるときにだけ着させていただきます。

     「2007年02月10日」の日記でkaeruspoonのAmazon機能のソースをちょっとのせていたけど、オーバライドを使うのが自然だと思ったので以下のようにしてみました。

    class AmazonList < ActiveRecord::Base
      include REXML
      has_and_belongs_to_many :diaries
    
      ASSOCIATE_TAG = 'アソシエートID'
      AWS_ACCESS_KEY_ID = 'ECS用ID'
      SEARCH_ELEMENT = 'ItemLookupResponse/Items/Item/'
    
    
      def self.find_by_asin(asin)
        Net::HTTP.version_1_2
    
        item = super(asin)
        if (item == nil) || (item.updated_on.to_time.since(7.days) < Time.now)
          amazon_list = Hash.new
          Net::HTTP::start('webservices.amazon.co.jp') do |http|
          ……以下略
    

     それからかえる記法のパーサに関しては、Windowsぶっ壊れ事件のごたごたでまだ手を付けていません。一時はコントローラにパーサの処理を持ってこようとも思ったのだけど(解析しながらAmazonのデータを取得する必要があるから)、habtmを使って日記とAmazon商品の間にリレーションシップをはりました。でもこれって、ヘルパー上のパーサで実際にAmazonデータを取得するときにDBにアクセスする気がする。コントローラ上でfindしたときはリレーションシップ先のレコードまで読まないよね?(違うかもしれないけど)
     Viewの処理中にDBにアクセスしていると思うとちょっと気持ち悪い気がするけど、ここまで気にしなくてもいいのかな。

    Commentコメント(2) Pageリンク元(7) Append 75
  • 仕事をしていると、十年前のPCを使っているみたいな気分になることがある 2007-03-03 00:00:00

    p:85:none
     Macのデスクトップのスクリーンショットみたいだけど、実はぼくのVAIOの上のubuntuのデスクトップだったりします。Lauri Taimilaさんのサイトにあった、Make ubuntu look like OSXのページを参考にしました。Taimilaさん本人はもう飽きちゃってるみたいだし、ぼくもそのうち違うデザインに変えるとは思うけど、とりあえずしばらくこのなんちゃってOSXデザインを使っていこうと思います。LinuxとfreeBSDベースということもあって、なんだかホントにOSXを使っている気がしてくるし、実際にそれほど大差はないでしょう。これがすべて無料なんだからすごい世の中です。
     それにしてもubuntuの出来はすばらしい。なんだかずっとこれを使いつづけたくなってきました。もうWindowsには戻らないかもしれません(Macにも行かない)。

     近所に住んでいる猫と遊びました。名前はシロさんです。ぼくの名前じゃなくて、猫の名前ですよ。

    Commentコメント(0) Pageリンク元(9) Append 76
  • Life is Playing 2007-03-04 00:00:00

     どうでもいいお話ですが、今、ジャキ様のシャツを着ていたりします。

     どうでもいいお話ですが、ジャキ様の名前はジャキ様ではなくジャギ様でした。最後のキが濁るのです。あれだけ彼が「俺の名を言ってみろ」といってたのに、ぼくは間違えてました。

    Commentコメント(0) Pageリンク元(7) Append 77
  • I had gone to Samezu where the people in Tokyo renew their licenses. 2007-03-05 00:00:00

     今日の一言に、その日のできごとを英語で書いてみることにしました。間違っていたらびしばしつっこんでください。

     「2006年12月20日」の日記で書いていたかえる記法のパーサですが、以下のようになりました。

      def view_text(diary)
        html = ''
        lines = diary.text.chomp.gsub(/\r(?=\n)/,'').gsub(/\r/,"\n").concat("\n").scan(/.*\n/)
    
        until lines.empty?
          case
          when lines[0] == ">||\n"
            lines.shift
            buffer = ''
            until lines.empty?
              if lines[0] == "||<\n"
                lines.shift
                break
              end
              buffer << lines.shift
            end
            html << exchange_pre(buffer)
          when lines[0] =~ /^\[amazon:(.+?):detail\]$/
            lines.shift
            html << exchange_amazon_detail(Regexp.last_match[1], diary.amazon_lists)
          else
            buffer = ''
            until lines.empty?
              break if /^((>\|\|)|(\[amazon:(.+?):detail\]))$/ =~ lines[0]
              break if !buffer.empty? && (/^((\[p:(\d+?)(|:none)\])|(\[amazon:(.+?):image\]))$/ =~ lines[0])
              buffer << lines.shift
              break if buffer[-2..-1] =~ /\n\n/
            end
            html << exchange_paragraph(buffer.chomp, diary.amazon_lists)
          end
        end
    
        return html
      end
    

     仕様が変わったりしていますが(引数がStringからDiaryクラスに)、やっていることはほぼ同じです。けっこうすっきりしました。tDiaryのパーサみたいに一行ずつ処理するやり方です。でもまだちょっと不満はあります。正規表現のあたりとか……。Rubyで初めて正規表現に触れたし、なおかつほとんど触っていなかったのであまりまだ考え方がよくわかっていないのです。

    Commentコメント(0) Pageリンク元(16) Append 78
  • Yuru who is my wife has just cut my hair. 2007-03-06 00:00:00

     「ザクとは違うのだよ、ザクとは」は、渋いおっさんランバラルのセリフで、藤堂さんにもらったTシャツにも書かれています。ユルさんはそのシャツを「ザクティ(ザクのTシャツの意)」なんて呼んでいたので、
    「違うよ、これはザクじゃなくてグフのことを言っているんだよ」
    と教えてあげると彼女は
    「ザクとは違うのだよ、グフだよ」
    なんて言ったので大爆笑でした。おもしろい奥さんだ。

     今さっき、ユルさんに髪を切ってもらいました。すっきりです。

    Commentコメント(1) Pageリンク元(14) Append 79
  • I met the people who work in the new office at which I'm going to work next month. 2007-03-07 00:00:00

    • プログラミング言語C ANSI規格準拠
    • 作者/アーティスト: 石田 晴久
    • 出版社/メーカー: 共立出版
    • メディア: 単行本
    • 発売日: 1989-06

     「「プログラミング言語C ANSI規格準拠」」を書庫の奥から引っ張り出してきて再読しています。というのも、今度仕事でC言語を使うことになりそうだからです。何年ぶりでしょうか。ひさしぶりに読み返すとなかなか楽しいですね。ホントはぼく、Cが好きなんだ。

    Commentコメント(1) Pageリンク元(12) Append 80
  • I decided that I went to bed before midnight. 2007-03-08 00:00:00

     最近、「「すらすらと手が動くようになるSQL書き方ドリル」」をようやくやりはじめたんですが、これすごいです。めちゃくちゃわかりやすいし、SQLの書き方から内部の動き方も理解することができてひとつひとつが納得。group byとかhavingとか、よく理解できてなかったところもばっちりになりました。このグループ単位の集計を使えば、kaeruspoonのリンク元の集計なんてSQL一発でできちゃうな(いまはいろいろとぐりぐりやってます)。find_by_sqlを初めて使ってみようかな。次のお休みの日のサンデープログラムはこれにしよう。

     ubuntuの唯一の不満が日本語入力の部分。Anthyはちょっと不安定で、入力した文字を変換すると文字ごと消えてしまうことがあるのです。「ATOK X for Linux」とか欲しいなあ。

    Commentコメント(2) Pageリンク元(14) Append 81
  • Today, I may go to bed after midnight... 2007-03-09 00:00:00

     find_by_sqlを使用して、リンク元の集計処理をするようにしてみました。

      def self.get_referer(id = nil)
        if id
          condition = "diary_id = #{id}"
        else
          condition = "diary_id IS NULL"
        end
    
        self.find_by_sql(<<-SQL)
          select
            url
          , COUNT(*) as 'count'
          from
            counters
          where
            #{condition}
          group by
            url
          order by
            count DESC
          ;
        SQL
      end
    

     すげー、超シンプル。今まではソートしたりなんだりいろいろやっていたのが、Rubyでのコードは一切不要になりました。たったこの一行のSQLだけで。SQL最高。なにより速いし。もっと勉強していろいろやってみよう。楽しくなってきました。method_missingを使うfind_by_*よりも、find_by_sqlを使うほうが全然速いんだろうなあ。

    Commentコメント(0) Pageリンク元(7) Append 82
  • Sometimes, The various people have come to write various comments at my diary's board. 2007-03-10 00:00:00

     今日はkaeruspoonのこまごましたバグをなおしました(リファラのリンク先とかタグの大文字小文字とかAmazon管理用のあれこれとか)。そろそろリファクタリングというか、コードをきれいにしたいな。まだキャッシュも使っていないのでそいつも適用していかないと。あと、やっぱりfind_by_*は重いみたいなので、find(:conditions)に変えようかと考えてます。それとSQLにしたほうがよさそうなところはfind_by_sqlに。あとはJavaScriptでフォームの値をリアルタイムにバリデートするライブラリまとめにあるように、いろいろと便利そうなライブラリがあるのでコメントのバリデートに使ってみようかと思います。

    Commentコメント(0) Pageリンク元(4) Append 83
  • I and Yuru went to the Doutor which is coffee shop eating Zuwaigani bagels. 2007-03-11 00:00:00

     今日はkaeruspoonのコードをちょっとリファクタリングしました。そこで今さらというかなんというか、初めて例外処理を使ってみました。

        begin
          album = Album.find(params[:id])
        rescue ActiveRecord::RecordNotFound
          redirect_to(unknown_url)
          return
        end
    

     コントローラ内の処理です。findはデータベースにないidが指定されたとき、RecordNotFound例外を発生させます。rescue節の中でリダイレクトのあとにreturnしているのは、実際にリダイレクトされるのはメソッドが終了したときで、ここでreturnを入れてないと以降の正常処理を走らせてしまうからです。
     でも、こんな使いかたでいいのかな? それにただ一行のfindのために例外処理を使うのも大げさな印象がある。find(:conditions)を使えば、レコードが存在しないときはnilが返ってくるのだから、それを見て処理をわければいいだけのような気もする。どちらがいいのでしょう。でもとりあえずぼくは、例外処理でやっていくことにします。

     こうすればいいことに気づいた。

        begin
          album = Album.find(params[:id])
          ……以降、通常処理
        rescue ActiveRecord::RecordNotFound
          redirect_to(unknown_url)
        end
    

     こっちのほうが従来の使いかたなのかな。begin節内の複数のfindに対応できるし。なんとなく突然、C言語のエラー処理で例外的にgotoを使うやり方を思い出しました。

     create系のDBアクセスも例外処理を入れてみました。今までは何も考えずにcreateメソッドばかり使っていたけど、例外を発生させてやるためにnew→save!もしくはbuild→save!を使うようにしてみました。これで大丈夫なのかな? いろいろと調べてみたのだけど、このあたりの動きがよくわからなかったのです。第8回のRails勉強会@東京に参加したときに、どなたかがこのあたりの話をしていたのだけど、どうだったか忘れてしまいました。このように、常にいろいろ興味を持っていないと、結局いつかは自分が困ることになります。

    Commentコメント(0) Pageリンク元(36) Append 84
  • We enjoyed to play the Wii which is game machine which was made by Nintendo, in the house which Takeishi-san, Sima-san and Kazuho started to live in. 2007-03-12 00:00:00

     ユルさんと一緒に武石さんたちの新居に遊びに行きました。他にはなつめさんと新婚のタケゾウ夫妻も。ぼくはちょっと風邪気味だったので、子供のカズ坊には近付かないようにしてました。彼はどんどん大きくなっています。
     ごはんをご馳走になって、あとは任天堂のWiiで遊びました。初めてやったのだけど、あのコントローラの出来はいいなあ。とてもおもしろかったです。

    • アイレム コレクション ポンコツ浪漫大活劇バンピートロット
    • 出版社/メーカー: アイレムソフトウェアエンジニアリング
    • メディア: Video Game
    • 発売日: 2006-09-14

     武石さんが貸してくれたゲームをさっそくやってみました。おもしろいね、これ。腹ぺこになるところとか(そこかよ)。

     「2007年01月11日」の日記でcronによって更新pingを送信するスクリプトを書いていたけど、その部分をWebAPIみたいにとあるURIにアクセスすると更新pingを打つような仕様に変更してみた。もちろん、自サーバからのアクセスの場合のみに適用されて、それ以外はエラーページに飛ぶようにしています。
     WebAPIの部分は

      def (WebAPIのメソッド名)
        if request.remote_ip == '(サーバのIPアドレス)'
          diary = Diary.find(:first, :conditions => ["open_date = ?", Date.today])
          ping_send(diary) if diary
          render(:text => 'ping_check end', :layout => false)
        else
          redirect_to(unknown_url)
        end
      end
    

    毎日零時すぎに実行されるcron呼出のスクリプトは

    #!/usr/local/bin/ruby
    require 'net/http'
    Net::HTTP.version_1_2
    
    Net::HTTP::start('kaeruspoon.net') do |http|
      http.get("(WebAPI用のURI)")
    end
    

    という感じでシンプル。これでいちよ動いています。

    Commentコメント(0) Pageリンク元(9) Append 85
  • I was suffering from a so bad asthenopia with headache and nausea today afternoon. 2007-03-13 00:00:00

     しばらくリファクタリングをやっていましたけど、これをやりながらいろいろな不具合に気づくので困りものです。リファクタリングは動く状態で機能は変えずにコードの整理整頓をやるものだと思うのだけど、動かない状態があることを次々に発見してしまうのでそこからやり直しているような状況です。普段、ちゃんと動いていて不具合がないように思えても、いろいろとバグがあるものですね。まあ、ソースを見て気づけるようなものなのだから、最初からちゃんと見ておけよというお話です。
     コントローラに関してはとりあえずリファクタリングを終了です。モデルとビューに関してはまた後日。しばらくSQLの勉強とC言語の復習に時間を使おうかと思います。

     最近、ようやくscreenを使いはじめました。うわー、すごい便利だね、これ。もっと早く使っておけばよかったよ。あと残るはEmacsか……。でもぼくはvimでいきます。

    Commentコメント(0) Pageリンク元(8) Append 86
  • I'm always disgusted at members of a labor union and their activity. 2007-03-14 00:00:00

     C言語の復習をちょっとやってみました。関数へのポインタとかなつかしいです。関数へのポインタは構造体のメンバになれるんだっけ、と思ったので試してみました。
     まずはヘッダファイルのkaeru_string.h。

    #ifndef _INCLUDE_KAERU_STRING_
    #define _INCLUDE_KAERU_STRING_
    
    typedef struct kaeru_string {
            int (*str_set)();
            char *(*str_put)();
    } *String;
    
    extern String str_new(void);
    extern void str_free(String);
    
    #endif
    

     次にkaeru_string.c。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "kaeru_string.h"
    
    static int string_set(const char *);
    static char *string_put(void);
    
    static char *data;
    
    String str_new(void)
    {   
        String  new;
    
        new = (String)malloc(sizeof(String));
        new->str_set = string_set;
        new->str_put = string_put;
        data = NULL;
    
        return new;
    }
    
    void str_free(String self)
    {   
        free(data);
        data = NULL;
        free(self);
        self = NULL;
    }
    
    static int string_set(const char *source)
    {   
        int size;
    
        size = strlen(source);
        if (size < 0) {
            return -1;
        }
    
        data = (char *)malloc(size + 1);
        strcpy(data, source);
    
        return 0;
    }
    
    static char *string_put(void)
    {
        return data;
    }
    

     そしてmain.c。

    #include <stdio.h>
    #include "kaeru_string.h"
    
    int main(void)
    {   
        String a;
    
        a = str_new();
    
        if (a->str_set("I'm C Programmer!")) {
            printf("error\n");
            return -1;
        }
    
        printf("%s\n", a->str_put());
    
        str_free(a);
    
        return 0;
    }
    

     結果は

    I'm C Programmer!
    

     クラスみたいなものが作れないのかな、と思ったので関数へのポインタを構造体のメンバにしてみたのだけど、すぐにおかしいことに気づいた。main.cを

    int main(void)
    {
        String a;
        String b; 
    
        a = str_new();
        b = str_new();
    
        if (a->str_set("I'm C Programmer!")) {
            printf("error\n");
            return -1;
        }
    
        if (b->str_set("And I'm Ruby programmer!!")) {
            printf("error\n");
            return -1;
        }
    
        printf("%s\n", a->str_put());
    
        str_free(a);
        str_free(b);
    
        return 0;
    }
    

    こうすると結果は、

    And I'm Ruby programmer!!
    

     シングルトンみたいになってしまった。外部変数のchar *dataはただひとつの変数なのだから当然だけど。さらにfreeでdataを何度も開放していることになってしまっていてヤバそう。
     そういえば、static指定の関数でも、関数へのポインタ経由なら他ファイルからもアクセスできてしまうみたい。static指定の情報まではポインタに引き継がれないんだね。当然と言われれば当然なのだろうけど。

     シングルトンはイヤなので、dataを構造体の中にいれてみよう。こっちのほうがクラスっぽくて自然だろうし。
     と思ったけどすぐにダメなことに気づいた。構造体の中のdataを指すためにStringへのポインタ自体を関数の引数にしなくちゃいけなくて、結局構造体の中へ関数へのポインタを入れる意味がなくなっちゃうのです。つまりは、薄々感じていた平凡な形になってしまうわけです。kaeru_string.h, kaeru_string.c, main.cの順に並べると、

    #ifndef _INCLUDE_KAERU_STRING_
    #define _INCLUDE_KAERU_STRING_
    
    typedef struct kaeru_string {
            char *data;
    } *String;
    
    extern String str_new(void);
    extern void str_free(String);
    extern int string_set(String, const char *);
    extern char *string_put(String);
    
    #endif
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "kaeru_string.h"
    
    String str_new(void)
    {   
        String  new;
    
        new = (String)malloc(sizeof(String));
        new->data = NULL;
    
        return new;
    }
    
    void str_free(String self)
    {   
        free(self->data);
        self->data = NULL;
        free(self);
        self = NULL;
    }
    
    int string_set(String self, const char *source)
    {   
        int size;
    
        size = strlen(source);
        if (size < 0) {
            return -1;
        }
    
        self->data = (char *)malloc(size + 1);
        strcpy(self->data, source);
    
        return 0;
    }
    
    char *string_put(String self)
    {   
        return self->data;
    }
    
    #include <stdio.h>
    #include "kaeru_string.h"
    
    int main(void)
    {
        String a;
        String b;
    
        a = str_new();
        b = str_new();
    
        if (string_set(a, "I'm C Programmer!")) {
            printf("error\n");
            return -1;
        }
    
        if (string_set(b, "And I'm Ruby programmer!!")) {
            printf("error\n");
            return -1;
        }
    
        printf("%s\n", string_put(a));
        printf("%s\n", string_put(b));
    
        str_free(a);
        str_free(b);
    
        return 0;
    }
    

    結果は

    I'm C Programmer!
    And I'm Ruby programmer!!
    

     とりあえず形にはなったけど、なんだかクラスっぽさはなくなったね。本来ならprivateにしたいchar *dataにアクセスできちゃうし、そのデータと関数との関連も疎になった感じ。C言語でクラスみたいなものを作ろうというのが変なのかも。

     追記です。

    typedef struct kaeru_string {
            char *data;
    } *String;
    

     これってもう構造体の意味がなかったね。ただのcharポインタでOKです。

    Commentコメント(0) Pageリンク元(20) Append 87
  • I took a walk near my house with Yuru. 2007-03-15 00:00:00

     ゲームばかりやってたような気がする一日です。こんなにゲームするのはひさしぶり。何年ぶりだろう。バンピートロット、めちゃくちゃおもしろいです。

    Commentコメント(4) Pageリンク元(12) Append 88
  • I've just rented an apartment in the HappyGarland city today. It's story in the game. 2007-03-16 00:00:00

     またゲームをしてました。ピアノを弾くのが楽しいのです。「2」が制作中みたいですね。絶対買います! ゲームをしなくなったぼくにここまで言わせるとは……。

     C言語の勉強はちょっとだけ。そういえば共用体ってあったね。今も昔もなんに使えるのかいまいちピンときません。

    Commentコメント(1) Pageリンク元(7) Append 89
  • One year passed though I think that you know that this is the story in the game. 2007-03-17 00:00:00

     いけませんいけません。ゲームのやりすぎです。しばらく、一日一時間制限です。だって大人なんだもの。

    Commentコメント(0) Pageリンク元(8) Append 90
  • Yuru and I were invited in for a meal to their house where Sakura-san and her husband live. 2007-03-18 00:00:00

     今日は食事に招待されたのでさくらさんのお宅におじゃましてきました。初めてお伺いしたのですが、ペンションみたいに素敵なところでした(料理も)。さくらさんの旦那さんとはバイクのお話。ひさしぶりに人とバイクの話ができてとても楽しかったです。時間をまったく気にせずに、テーブルを囲んで他にもずいぶんといろいろなお話をしました。リラックスしてゆったりとしたひととき。素晴らしい一日でした。

    Commentコメント(0) Pageリンク元(6) Append 91
  • I won't go out home today because I've been a little tired. 2007-03-19 00:00:00

     kaeruspoonのリンク元としていろいろな検索サイトが増えてきたので、ちょっとコードをさわりました。

      def search_engine_check(ref_url)
        engine = nil
        engine = "google" if ref_url.index("http://www.google") == 0
        engine = "google blogsearch" if ref_url.index("http://blogsearch.google") == 0
        engine = "blogpeople" if ref_url.index("http://bst.blogpeople") == 0
        engine = "yahoo" if ref_url.index("http://search.yahoo") == 0
        engine = "yahoo blog" if ref_url.index("http://blog-search.yahoo.co.jp/") == 0
        engine = "goo blog" if ref_url.index("http://blog.goo") == 0
        engine = "Ask" if ref_url.index("http://ask.jp/") == 0
        engine = "technorati" if ref_url.index("http://www.technorati") == 0
        engine = "Live Search" if ref_url.index("http://search.live.com/") == 0
        engine = "Matome" if ref_url.index("http://www.matome.jp/") == 0
    
        if engine
          url = ref_url + '&'
          url.scan(/.*(MT|p|q|keyword|tag|search)(=|\/)(.+?)(&|\?)/) do |id, mark1, words, mark2|
            word_array = words.split(/[  \+]+/).select{|word| word.size > 0}.uniq
            ref_url = "#{engine}検索 [#{word_array.join(' ')}]"
          end
        end
    
        return ref_url
      end
    

     ああ、やっぱりRubyは気持ちいいな。

     ちょっと疲れがたまっている感じ。のんびり好きなことして過ごそう。

    Commentコメント(0) Pageリンク元(10) Append 92
  • I've moved to Kamome-sou which is an apartment in the Suhmsuhm city. 2007-03-20 00:00:00

     サーチエンジンのリンク元の処理のところは以下のようにしてみました。

      def search_engine_check(ref_url)
        sites = [ 
                  {:name => 'google', :url => 'http://www.google'},
                  {:name => 'google blogsearch', :url => 'http://blogsearch.google'},
                  {:name => 'blogpeople', :url => 'http://bst.blogpeople'},
                  {:name => 'yahoo', :url => 'http://search.yahoo'},
                  {:name => 'yahoo blog', :url => 'http://blog-search.yahoo'},
                  {:name => 'goo blog', :url => 'http://blog.goo'},
                  {:name => 'Ask', :url => 'http://ask.jp/'},
                  {:name => 'technorati', :url => 'http://www.technorati'},
                  {:name => 'Live Search', :url => 'http://search.live'},
                  {:name => 'Matome', :url => 'http://www.matome.jp/'}
                ]
    
    
        engine = nil
        sites.each do |site|
          if ref_url.index(site[:url]) == 0
            engine = site[:name]
            break
          end
        end
    
        if engine
          url = ref_url + '&'
          url.scan(/.*(MT|p|q|keyword|tag|search)(=|\/)(.+?)(&|\?)/) do |id, mark1, words, mark2|
            word_array = words.split(/[  \+]+/).select{|word| word.size > 0}.uniq
            ref_url = "#{engine}検索 [#{word_array.join(' ')}]"
          end
        end
    
        return ref_url
      end
    

     瑣末な修正。今日はあまり頭が働いていない感じです。お風呂でゆっくりしよう。

    Commentコメント(0) Pageリンク元(8) Append 93
  • My side has been hurting since yesterday. Yuru is saying it may be intercostal neuralgia. 2007-03-21 00:00:00

     ぼくはぐりぐり君(どんぐりの木)とカンタロー(いよかんの木)を育てているのですが、最近土が痩せてきたので裏山の土を取りに行きました。土をスコップで掘っていると、女の子がやってきてじーっとぼくの作業を見つめます。ぼくは「こんにちは」とあいさつだけして早々に引き上げました。親とか現れて、変なおっさんとか思われたら嫌だもの。

    Commentコメント(3) Pageリンク元(11) Append 94
  • We looked a rainbow after a long time when Yuru and I ware driving in Odawara. 2007-03-24 00:00:00

     ずいぶんひさしぶりに日記を書きます。というのも、サーバが起動しなくなっていたから。原因は停電によってMBRが壊れてしまったこと。なんだかやる気が起きなくてしばらく放置してました。ドライブに行ったりとかトロットビークルに乗ったりしていたし……。
     MBR上のGRUBが壊れたようだと考えたのは、起動中に「GRUB」のメッセージが出てそれ以上処理が進まなくなってしまうから。
     回復するためにSystemRescueCdを使います。CDブートさせたら「boot:」のプロンプトはリターンキーで進めて、「22」のjaを選択、あとはgrub-installをかますだけです。

    mkdir /mnt/mydir
    mount /dev/hda1 /mnt/mydir
    grub-install --no-floppy --root-directory=/mnt/mydir /dev/hda
    

    こんな感じ。
     で、無事に起動できたのですが、実はGRUBだけでなくてその他のデータもあちこちが飛んでいて使いものにならなかったという悲惨な状況が待っていたのでした。とほほ。停電恐いよ。次期サーバはノートPCを使おう。
     というわけで、またサーバの構築しなおしです。DebianにしようかFreeBSDにしようかとも考えたりしていますが、メンドくさいのでやっぱりcentOSにするかもです。

    Commentコメント(0) Pageリンク元(13) Append 95
  • I may be getting tired because it's rain today. 2007-03-25 00:00:00

     というわけでサービスは回復しました。結局、ディストリビューションはCentOSにしました。FreeBSDにも心惹かれたのだけど。
     バックアップのタイミングのせいで、最近のコメントの一部が失われています。書き込みしてくれていた武石さん、すみませんでした。

    Commentコメント(0) Pageリンク元(6) Append 96
  • 英語とか写真とかドライブとか列車 2007-03-26 00:00:00

     日記のタイトルが内容に関係ないものだと、あとから記事を探すときに苦労するということを今日実感しました。英語の一言日記は本文の中に書くことにしましょう。

     写真を一枚追加しました。

    87
     おとといは伊豆にドライブに行きました。天城峠を越えて河津のほうまで。

     ドライブ中に立ち寄った萬城の滝です。

     I saw the trains which had connected each other when I went to Shinagawa station.

     ダイナミックDNSへの登録を忘れていて、外部から接続できないことに会社で気づきました。すぐさま登録して解決。LAN内にいたから気づきませんでした。忘れないようにしなくちゃだよ。

    Commentコメント(0) Pageリンク元(11) Append 97
  • マネージメントとか 2007-03-27 00:00:00

     今の仕事はマネージメント的なこともやっているのだけど、マネージメントってのは雑用係みたいなもので別にえらくもなんともないし、主役は実際に現場の仕事をやっているメンバたちなのだ。
     ということをこの仕事を始めるまで全然気づいていなかった。そして、始めるまでは到底ぼくにはこなせないと思っていたこの仕事も、今では自分の庭にいるみたいに気楽にやれている。なんでもやってみなければわからないものだ。

    Commentコメント(0) Pageリンク元(7) Append 99
  • 送別会がありました 2007-03-28 00:00:00

     今週で今の仕事が終わるので送別会がありました。いろいろお話してすごく一体感を覚えたというか、みなさんがぼくの思いを理解してくださっていたんだなあと実感できてうれしかったです。素敵な送別会でした。

    I passed at the station that should be gotten off, and I went to the Machida station.

    Commentコメント(0) Pageリンク元(6) Append 100
  • kaeruspoonとはてなのサーバ 2007-03-29 00:00:00

     はてなのサーバは自作のものでFedoraCoreを使っているのは有名だったけど、さくらインターネットのデータセンタへサーバを移行したのを機に、はてなブックマークではDellのサーバを使い、OSはCentOSを使うようになったみたい。
    88
     kaeruspoonはOSこそ同じCentOSだけど、マシンは自作のタワー型で、CPUはPentium3の800Mhz、メモリは512MB、ハードディスクは80GBx2のソフトウェアRAID1という貧弱な構成。こんな感じで玄関の収納の上のほうに置いてあります。もちろん空調もなにもないし台所とつながっているから調理の熱がもろに行くし実際に去年の夏にはハードディスクがお亡くなりになったりしています。
     もう少しコンパクトで強固なサーバにしたいなあとも考えていますが、欲しいものがいろいろあってなかなか手を出していません。はてなのDellサーバがうらやましい。一番安い構成で15万円くらいみたい。安いよね。

    Commentコメント(0) Pageリンク元(13) Append 101
  • 404エラーを返さなくちゃだよ 2007-03-30 00:00:00

     ステータス200なのに「その商品はありません」の記事を読んでたしかにそのとおりだと思いました。なので、kaeruspoonでも404エラーに該当するunknownのページはステータス404を返すようにしてみました。

      def unknown
        render(:status => 404)
      end
    

     超簡単。

    I've just finished to work at current office today. It was office like high school.

    Commentコメント(0) Pageリンク元(17) Append 102
  • ソースコードに色をつけるgoogle-code-prettifyを使ってみた 2007-03-31 00:00:00

     高校の学習指導計画書に「高橋メソッド」と「もんたメソッド」が!という記事。ここまで有名だったのか。すげー。笑ったけど。Rubyの名前まで出てるし。

     Javascriptでソースコードに色をつけるgoogle-code-prettifyを使ってみました。使いかたはとても簡単(こちらを参照)。さっそくkaeruspoonに適用してみました。

    1.まずはここでprettify.cssとprettify.jsを手に入れます。それぞれのファイルを、RailsRoot/public/stylesheets/とRailsRoot/public/javascripts/に置きます。

    2.ヘッダでprettify.cssとprettify.jsをインクルードします。

    <%= javascript_include_tag "prototype", "effects", "prettify" %>
    <%= stylesheet_link_tag 'kaeru', 'prettify' %>
    


    3.bodyタグにonload="prettyPrint()"を指定します。

    <body onload="prettyPrint()">
    


    4.preタグ、またはcodeタグにclass="prettyprint"を指定します。

      def exchange_pre(text)
        "<pre class=\"prettyprint\">\n#{h(text)}\n</pre>\n"
      end
    


     これだけです。ホントはC言語とかJava用みたいだけどRubyでもいけるね。スタイルシートのほうで色指定できるので、後で調整してみよう。

    Commentコメント(0) Pageリンク元(45) Append 103
« 2007年02月 | 2007年04月 »

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.restful_authenticationを使ってみた
  • 6.ubuntu8.04でデュアルディスプレイを使う
  • 7.URLなど、長い英字を折り返して表示する方法
  • 8.MySQLコンファレンス2008 2日目に参加してきました。
  • 9.RailsとPostfixで受信メールを処理する方法
  • 10.Rspecでコントローラのspecファイルを書く

コメント

  • 武石(へぼ将棋にいそしむ)
  • ユル(しろさん、小鳥を食べるの巻)
  • おおいしつかさ(今読んでいる本)
  • 武石(今読んでいる本)
  • ユル(プログラマが若隠居をしたら)
  • ユル(風邪ひいた)
  • ユル(バイクがへたくそになっていた)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2009年
1月

キーワード一覧

ActionScript AmazonResources Erlang git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画