« 2007年03月 | メイン | 2007年05月 »

2007年04月 アーカイブ

2007年04月04日

GIMP

>Gimp(GNU Image Manipulation Program)は、Photoshop にも匹敵する機能を備えた無料の画像編集ソフトです。

GIMP ダウンロード
http://www.geocities.jp/gimproject2/download/gimp-download.html

GIMP入門
http://www.tohoho-web.com/wwwgimp.htm

2007年04月10日

Ruby 擬似変数

以下のようなコードがある。

---------------------------------


class Point
def hello
z = "test"
self
end
end

p0 = Point.new
p p0.hello.class


---------------------------------

#selfがあると => Point
#selfがないと => String

selfがあるとないとでは、大違いですね。


今日、
「selfがあるのとないのとでどう違うの?」
と言う質問をうけて即答できなかった・・・。Rubyの基礎が足りませんね・・・。
「たのしいRuby」を今週は読み込もうと思います。


self は「擬似変数」


擬似変数は変数のように参照することができますが、いずれも値を設定することはできません。
代入を行うとエラーになります。



● 擬似変数●

通常の変数以外に擬似変数と呼ばれる特殊な変数があります。

self
現メソッドのオブジェクトそのもの
nil
NilClass?クラスの唯一のインスタンス
true
TrueClass?クラスの唯一のインスタンス。真の代表値
false
FalseClass?クラスの唯一のインスタンス。偽を表す
__FILE__
現在のソースファイル名を表す
__LINE__
現在のソースファイル中の行番号を表す

2007年04月11日

How to do case-insensitive searching with Postgresql

SELECT subject FROM topics WHERE subject ~* 'JBUILDER';

http://www.devdaily.com/blog/Content/2/7/62/

2007年04月12日

Ruby On Railsのクラスを解析してダイアグラムにしてくれる『Rails Road』

おおおおぉぉ

http://www.popxpop.com/archives/2007/04/ruby_on_railsrails_road.html

http://railroad.rubyforge.org/

使い方とか
http://blog.takeda-soft.jp/blog/show/157

greasemonkey の memo

ファイル名は

○○.user.js


と user.js を付ける。


あとは、FireFoxにドラックアンドドロップすればよい。

はじめてのGreasemonkey

○synth_jp_alert.user.js

-------------------------------------

// Copyright (C) 2007, shintaro fukushige.
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// ==UserScript==
// @namespace http://synth.jp/
// @name Welcome to synth.jp!
// @description Test
// @include http://synth.jp/*
// ==/UserScript==

alert('Welcome to synth.jp!')

-------------------------------------

これから、色々作っていこう。

Rubyとオブジェクト指向についてアウトプットしてみる【メッセージ】

1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~

print var1
var1.class  #=> String

上記の例だと、var1 がオブジェクト "class" がメッセージ。
"class"というメッセージを送ることで、オブジェクトの素性(クラス)情報を得ることが出来る。

1.class  #=> Fixnum
Fixnum.class  #=> Class

"1.class"とは"1"のクラスを知るためのメッセージであり、その結果から"1"は"Fixnum"クラス出身の
オブジェクトであることがわかりました。
またここで言う「出身」のように、「あるクラスから生まれた(所属している)」ことを、
そのクラスの「インスタンス」であると表現します。


・"1"とは"Fixnum"クラスのインスタンスであるオブジェクト
・"Fixnum"とは"Class"クラスのインスタンスであるオブジェクト

オブジェクト指向 比喩 Ruby
クラス 出身地(村) String
インスタンス 出身
オブジェクト 人(モノ) "hello"


p "hello".class #=> String
"hello"がオブジェクト、"class"がメッセージ





○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【継承とは】

2.継承とは
継承とは「別のクラスの特徴を受け継ぐこと」

○差分プログラミング
class Kamesennin
  def kamehameha
    print "かめはめ波!"
  end
end

class Goku < Kamesennin
  def shunkanidou
    print "瞬間移動!"
  end
end

goku = Goku.new
goku.kamehameha    #=>かめはめ波!


あの亀仙人(Kamesennin)の技「かめはめ波!」を引き継ぎ、
さらに「瞬間移動!」を身に着けた悟空(Goku)が現れた!
これが、差分プログラミング。
悟空は"かめはめ波!"、"瞬間移動!"が使える。


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【メソッドの実行】

3.メソッドの実行

亀仙人(Kamesennin)と悟空(Goku)達本人は実は技を使えません。

class Kamesennin
  def kamehameha
    print "かめはめ波!"
  end
end

class Goku < Kamesennin
  def shunkanidou
    print "瞬間移動!"
  end

  def kamehameha
    print "界王拳4倍かめはめ波"
  end
end

goku1 = Goku.new
goku1.shunkanidou      #=>瞬間移動!
newすることで、goku1という分身を作り、それが技(メソッド => 瞬間移動!とかめはめ波!)を使えます。


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【特異メソッド】

4.特異メソッド

#特異メソッド
class Foo
  def Foo.test
    print "this is foo\n"
  end
end

Foo.test   #=>this is foo

#通常
class Foo
  def test
    print "this is foo\n"
  end
end

o = Foo.new
o.test   #=>this is foo
クラスの特異メソッドをクラスメソッドと呼びます。


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【特異クラス】

5.特異クラス

class Foo
  def hello
    print "hello.\n"
  end
end

foo = Foo.new
foo.hello     #=>hello.

class << foo
  attr :name, true
  def hello
    print "hello. I'm ", @name, ".\n"
  end
end

foo.name = "Tom"
foo.hello     #=>hello. I'm Tom.
参考


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【オーバーライド】

6.オーバーライド

class Kamesennin
  def kamehameha
    print "かめはめ波!"
  end
end

class Goku < Kamesennin
  def shunkanidou
    print "瞬間移動!"
  end

  def kamehameha
    print "界王拳4倍かめはめ波"
  end
end

goku1 = Goku.new
goku1.kamehameha   #=> 界王拳4倍かめはめ波


悟空(Goku)は亀仙人(kamesennin)から教わったかめはめ波を進化させ「界王拳4倍かめはめ波」
にしました。Gokuの分身(インスタンス)がkamehamehaを使うと「界王拳4倍かめはめ波」になります。


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【Mixin(include)】

7.Mixin(include)

module Hiden_of_Kuririn
  def kienzan
    print "気円斬!"
  end
end

class Kamesennin
  include Hiden_of_Kuririn
  def kamehameha
    print "かめはめ波!"
  end
end

class Goku < Kamesennin
  def shunkanidou
    print "瞬間移動!"
  end

  def kamehameha
    print "界王拳4倍かめはめ波"
  end
end


goku1 = Goku.new
goku1.kienzan   #=> 気円斬!


亀仙人(Kamesennin)は昔、クリリンの書(Hiden_of_Kuririn)を取得して技を習得してました。
それは、悟空(Goku)も使うことが出来ます。

これが、Mixin(include)です。


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【Mixin(extend)】

8.Mixin(extend)

module Hiden_of_Kuririn
  def kienzan
    print "気円斬!"
  end
end

class Kamesennin
  def kamehameha
    print "かめはめ波!"
  end
end

class Goku < Kamesennin
  def shunkanidou
    print "瞬間移動!"
  end

  def kamehameha
    print "界王拳4倍かめはめ波"
  end
end


goku1 = Goku.new
goku1.extend Hiden_of_Kuririn
goku1.kienzan   #=> 気円斬!


今回の亀仙人(Kamesennin)は昔、クリリンの書(Hiden_of_Kuririn)を取得していませんでした。
しかし悟空(Goku)の分身は使わなければいけませんでした。
そこで、登場したのが extend です。
extend を利用して、悟空の分身(Gokuのインスタンス)は
クリリンの書(Hiden_of_Kuririn)を手に入れ、"気円斬!"を利用できるようになれるのです。
これが、Mixin(extend)です。


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

Rubyとオブジェクト指向についてアウトプットしてみる【委譲】

9.委譲

require 'forwardable'

class Kuririn
  def kienzan
    print "気円斬!"
  end
  def mekuramashi
    print "目くらまし!"
  end
end

class Gohan
  extend Forwardable

  def initialize
    @q = Kuririn.new
  end

  #気円斬を Kuririnに委譲(任せる)
  def_delegator :@q, :kienzan
end

gohan1 = Gohan.new
gohan1.kienzan   #=>気円斬


悟飯(Gohan)は、クリリンではないので、気円斬を使えない。
しかし、悟飯(Gohan)に気円斬を使う依頼が来た!
悟飯は気円斬を使え!と言われたが、クリリンに任せた。
これが委譲。



詳しく説明すると・・・

オブジェクトの機能を再利用する手法の一つとして、Ruby では言語仕様としてクラスの継承とモジュールの Mix-in を提供しています。これらは、元になるクラスやモジュールの実装までもをそのまま取り込んでしまいますが、他の手段で機能の再利用を実現する手法として、委譲があります。

委譲では、再利用したい機能を自分に取り込むのではなく、その機能を持つオブジェクトに処理を依頼します。

Ruby では特に言語仕様として委譲がサポートされているわけではありませんが、委譲を実現するためのライブラリとして forwardable と delegate が用意されています。具体的には、これらのライブラリを使用することによって、あるメソッド呼び出しを他のオブジェクトのメソッドに「たらい回す」ということを簡単に記述することができます。

参考


○Rubyとオブジェクト指向についてアウトプットしてみる○
1.メッセージ ~オブジェクトは「問いかけたらきちんと返事をしてくれる」~
2.継承とは
3.メソッドの実行
4.特異メソッド
5.特異クラス
6.オーバーライド
7.Mixin(include)
8.Mixin(extend)
9.委譲

2007年04月19日

Apacheアクセスログで集中してアクセスのある時間帯がないか調べる

cat /path_to/access_log | awk '{print $4}' | sort | uniq -c | less

Ruby on Rails : テーブル間リレーションシップ

モデルでテーブル間のリレーションを宣言するときの注意。

>ややこしいのが参照先テーブル名の指定で、 belongs_to と has_one では単数形、 has_many と has_many_and_belongs_to では複数形で記述しなければなりません。


リレーションは、最初ややこしい...。


http://webos-goodies.jp/archives/50773406.html

2007年04月23日

.mobi ドメインは2文字で登録できないのか

目的 : .mobi で2文字のドメインは取得可能なのか

結論:できないっぽい

理由: http://whois.mtld.mobi/index.phpで2文字で登録しようとすると、「Invalid Query Format. Domains must be at least three characters in length.」と言われる。

http://whois.mtld.mobi/index.phpは何者かと言うと、.mobiwiki説明によると、「mTLD global registryによって運営されている。」と書いてある。つまり、管理者だ。
そこが、ダメって言うのだから、ダメなのだろうという結論です。







ちょっと、方向を変えて・・・・。

Q.基本的に登録できるのって3文字からなの?

A.2文字ドメインを取るのは容易ではない。


まず、以下のアドレス。
http://ab.com/
http://tt.com/
.com では存在することは分かった。

でも、お名前.comでやると、3文字以上ぢゃなきゃダメっていうぢゃないですか...。

xreaでは、
<------------
お取り扱いしているドメインは、3-64文字となります。「am」「la」「tc」等では2文字以下で登録可能ですが、保証外となります。
------------>
と書いてあり、基本3文字以上の様子。

Yahoo!JAPANでもそうだ。
<------------
ドメイン名に使用できる文字は、3文字以上、63文字以下で、半角英数字(a~z、0~9)、半角ハイフン(-)です。ただし、文字列の最初と最後にハイフンは使えません。また、3文字目と4文字目に続けてハイフンを使うことはできません。
------------>

2文字のドメインが使えないのではなく、2文字のドメインを取り扱っているところがないってこと??

色々見ているが2文字以下のドメインについては書いてない...。
http://ja.wikipedia.org/wiki/トップレベルドメイン
http://ja.wikipedia.org/wiki/トップレベルドメイン一覧

2007年04月26日

CentOS 5.0

出てたんだ...。

ruby 1.8.5 が入ってるし。ナイス。


http://isoredirect.centos.org/centos/5/isos/i386/

CentOS
http://www.centos.org/

2007年04月27日

rails 特定のバージョンを指定してインストール

gem install rails --version 1.1.6 --include-dependencies

↑コンナ感じ。

RubyGems の導入

わかりやすい。

http://centos.oss.sc/ruby/gems/

CentOS で構築する自宅サーバ

CentOS使う人にとっては、このサイト良い。

○CentOS で構築する自宅サーバ
http://centos.oss.sc/

2007年04月

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Map

About 2007年04月

2007年04月にブログ「プログラマ 福重 伸太朗 ~基本へ帰ろう~」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年03月です。

次のアーカイブは2007年05月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。