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

kaeruspoon

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

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

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

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

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

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

    Commentコメント(0) Pageリンク元(18)
  • Try and say my name! 2007-03-02 00:00:00 Append 75

     藤堂さんからすごいプレゼントがやってきた!
    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リンク元(11)
  • 仕事をしていると、十年前のPCを使っているみたいな気分になることがある 2007-03-03 00:00:00 Append 76

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

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

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

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

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

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

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

     「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リンク元(35)
  • Yuru who is my wife has just cut my hair. 2007-03-06 00:00:00 Append 79

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

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

    Commentコメント(1) Pageリンク元(22)
  • 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 Append 80

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

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

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

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

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

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

     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リンク元(15)
  • Sometimes, The various people have come to write various comments at my diary's board. 2007-03-10 00:00:00 Append 83

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

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

     今日は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リンク元(44)
  • 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 Append 85

     ユルさんと一緒に武石さんたちの新居に遊びに行きました。他にはなつめさんと新婚のタケゾウ夫妻も。ぼくはちょっと風邪気味だったので、子供のカズ坊には近付かないようにしてました。彼はどんどん大きくなっています。
     ごはんをご馳走になって、あとは任天堂の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リンク元(17)
  • I was suffering from a so bad asthenopia with headache and nausea today afternoon. 2007-03-13 00:00:00 Append 86

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

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

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

     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リンク元(30)
  • I took a walk near my house with Yuru. 2007-03-15 00:00:00 Append 88

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

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

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

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

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

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

    Commentコメント(0) Pageリンク元(9)
  • 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 Append 91

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

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

     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リンク元(14)
  • I've moved to Kamome-sou which is an apartment in the Suhmsuhm city. 2007-03-20 00:00:00 Append 93

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

      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リンク元(12)
  • My side has been hurting since yesterday. Yuru is saying it may be intercostal neuralgia. 2007-03-21 00:00:00 Append 94

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

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

     ずいぶんひさしぶりに日記を書きます。というのも、サーバが起動しなくなっていたから。原因は停電によって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リンク元(18)
  • I may be getting tired because it's rain today. 2007-03-25 00:00:00 Append 96

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

     ステータス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リンク元(47)
  • ソースコードに色をつけるgoogle-code-prettifyを使ってみた 2007-03-31 00:00:00 Append 103

     高校の学習指導計画書に「高橋メソッド」と「もんたメソッド」が!という記事。ここまで有名だったのか。すげー。笑ったけど。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リンク元(108)
« 2007年02月 | 2007年04月 »

プロフィール

おおいしつかさ

過去の記事

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月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2010年
1月 2月 3月

キーワード一覧

ActionScript Ajax AmazonResources Erlang git github iPhone javascript Javascript Kaerukeyword kaeruspoon Mac merb milook MiyazakiResistance NSR Objective-C perl Perl Rails Ruby Ruby on Rails RubyKaigi speedpetal subversion Thin Thinkpad tokyobike TRPG twitter ubuntu Ubuntu VAIO VAIO typeZ Waves WordScoop Xen ぐりぐり しろさん カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 宮崎 日本酒 模型 猫 町田 真中洋嗣 自転車
Baner