GIMP
>Gimp(GNU Image Manipulation Program)は、Photoshop にも匹敵する機能を備えた無料の画像編集ソフトです。
GIMP ダウンロード
http://www.geocities.jp/gimproject2/download/gimp-download.html
« 2007年03月 | メイン | 2007年05月 »
>Gimp(GNU Image Manipulation Program)は、Photoshop にも匹敵する機能を備えた無料の画像編集ソフトです。
GIMP ダウンロード
http://www.geocities.jp/gimproject2/download/gimp-download.html
以下のようなコードがある。
---------------------------------
class Point
def hello
z = "test"
self
end
endp0 = Point.new
p p0.hello.class
#selfがあると => Point
#selfがないと => String
selfがあるとないとでは、大違いですね。
今日、
「selfがあるのとないのとでどう違うの?」
と言う質問をうけて即答できなかった・・・。Rubyの基礎が足りませんね・・・。
「たのしいRuby」を今週は読み込もうと思います。
self は「擬似変数」
擬似変数は変数のように参照することができますが、いずれも値を設定することはできません。
代入を行うとエラーになります。
● 擬似変数●通常の変数以外に擬似変数と呼ばれる特殊な変数があります。
self
現メソッドのオブジェクトそのもの
nil
NilClass?クラスの唯一のインスタンス
true
TrueClass?クラスの唯一のインスタンス。真の代表値
false
FalseClass?クラスの唯一のインスタンス。偽を表す
__FILE__
現在のソースファイル名を表す
__LINE__
現在のソースファイル中の行番号を表す
SELECT subject FROM topics WHERE subject ~* 'JBUILDER';
ファイル名は
○○.user.js
と user.js を付ける。
あとは、FireFoxにドラックアンドドロップすればよい。
○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!')
-------------------------------------
これから、色々作っていこう。
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"がメッセージ
2.継承とは
継承とは「別のクラスの特徴を受け継ぐこと」
○差分プログラミング
class Kamesennin
def kamehameha
print "かめはめ波!"
end
end
class Goku < Kamesennin
def shunkanidou
print "瞬間移動!"
end
end
goku = Goku.new
goku.kamehameha #=>かめはめ波!
あの亀仙人(Kamesennin)の技「かめはめ波!」を引き継ぎ、
さらに「瞬間移動!」を身に着けた悟空(Goku)が現れた!
これが、差分プログラミング。
悟空は"かめはめ波!"、"瞬間移動!"が使える。
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という分身を作り、それが技(メソッド => 瞬間移動!とかめはめ波!)を使えます。
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
クラスの特異メソッドをクラスメソッドと呼びます。
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.
参考
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倍かめはめ波」になります。
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)です。
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)です。
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 が用意されています。具体的には、これらのライブラリを使用することによって、あるメソッド呼び出しを他のオブジェクトのメソッドに「たらい回す」ということを簡単に記述することができます。
参考
cat /path_to/access_log | awk '{print $4}' | sort | uniq -c | less
モデルでテーブル間のリレーションを宣言するときの注意。
>ややこしいのが参照先テーブル名の指定で、 belongs_to と has_one では単数形、 has_many と has_many_and_belongs_to では複数形で記述しなければなりません。
リレーションは、最初ややこしい...。
目的 : .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/トップレベルドメイン一覧
出てたんだ...。
ruby 1.8.5 が入ってるし。ナイス。
http://isoredirect.centos.org/centos/5/isos/i386/
CentOS
http://www.centos.org/
gem install rails --version 1.1.6 --include-dependencies
↑コンナ感じ。
わかりやすい。
CentOS使う人にとっては、このサイト良い。
○CentOS で構築する自宅サーバ
http://centos.oss.sc/