kyo: 2007年9月アーカイブ

ハッカーと画家読了

| | コメント(0) | トラックバック(0)

会社でちまちま読んでたので半年近くかかった。

内容は面白いけど、目新しい内容は少なかったな。
プログラマなら結構考えてることだと思う。
ただ、それまでその考えにそこまで確信がなかったので、ちゃんと書籍化されてる文書で肯定されてたのはうれしかった。

格差に関する部分は感心した。普段あまり考えてなかったので。
確かに10%のプログラマが90%の価値のあるプログラムを生み出していると聞いても驚かない。
多分その10%のプログラマは富の90%はもっていなくても、とくのが面白い問題の90%を持ってるんだろうな。

ハッカー同士の話は普段感じていたので、読んで安心した。
やはりコードを見ないと良くわからない。

rails

| | コメント(0) | トラックバック(0)

ようやく再開。
前回の作成物は無かったことにする。

やっててちょっと詰まったこと。

def set_charset
@headers['Content-Type'] = 'text/html; charset=utf-8'
end

@headersをつつくとこんな感じで怒られる。headersにしろとのこと。
DEPRECATION WARNING: @headers is deprecated! Call headers.[]= instead of @headers.[]=. Args: ["Content-Type", "text/html; charset=utf-8"] See http://www.rubyonrails.org/deprecation for details.


create_at、update_atには:null => falseつけちゃだめ。
(:default => '0/0/0 00:00'とかでいけるかもしれないけど、これはこれで困りそうなので)


rakeするとエラー
StandardError: No fixture with name 'first' found for table 'hogehoge'
ここ見て解決
http://chinmo.daa.jp/blog/2007/01/rails-12-ruby-on-rails2.html

test/functional/hogehoge_test.rb内のhogehoge(:first).idをhogehoge(:one).idへ変更

優駿

| | コメント(0) | トラックバック(0)

次にめぼしいものがなかったので読んでみる。
ほかは外で読むとやばそうなものが多いので。

イベント

| | コメント(0) | トラックバック(0)

5時に家を出て5時に帰宅する。
ぎりぎりだが楽しかった。

リーズのアトリエ

| | コメント(0) | トラックバック(0)

不具合一覧
このシリーズ好きだったんだけど、これはひどいね。
まあ、何があったかはなんとなくわかるので同情はするけど。。。
どこもぎりぎりだね。

キーボード

| | コメント(0) | トラックバック(0)

壊れる。
所詮は安物か。
ばらす材料が増えたけど、代わりを入手せんと。

jQueryとprototype

| | コメント(0) | トラックバック(0)

jQuery何回か使ってみたけど、確かに$('.class')は便利。
これprototypeでも実装してくれれば良いのに。
ただ、何であとから出てきたのに$()を使用するのか疑問。
併用できへんやん。
(そりゃ回避法はあるけど。。。)

なんで$class()とか$id()にしなかったんだろう?
($class()が長かったら$c()でも良いと思う)

google map apiで住所を示す感じにする

| | コメント(0) | トラックバック(0)

結局こんな感じに組み替え。

$(document).ready( function(){
if ( !GBrowserIsCompatible() ) {
return false;
}
var conf_val = init();
var map = new GMap2( $('#map')[0] );
var point = new GLatLng( conf_val['l'], conf_val['r'] );
var icon = new GIcon();
icon.image = 'http://www.google.com/intl/en_ALL/mapfiles/arrow.png';
icon.shadow =
'http://www.google.com/intl/en_ALL/mapfiles/arrowshadow.png';
icon.iconSize = new GSize(39, 34);
icon.shadowSize = new GSize(39, 34);
icon.iconAnchor = new GPoint( 12, 34 );
icon.infoWindowAnchor = new GPoint( 12, 3 );
var marker = new GMarker( point, icon );
map.setCenter( point, 16 );
map.addControl( new GLargeMapControl() );
map.addOverlay( marker );

GEvent.addListener( marker, 'click', function() {
marker.openInfoWindowHtml(
conf_val['message']
);
$('.gmapWindow').get(0).parentNode.style.paddingTop = '10px';
} );
} );
$(document).unload( function(){ GUnload() } );

呼び出し側は「script src="hoge.js"」で読み込んだ後、こんな感じで値を設定。

function init() {
return {
'l' : 37.4419,
'r' : -122.1419,
'message' : 'hogehoge'
};
}

住所から座標の変換は以下のサービスから行う。

http://www.geocoding.jp/

前回のものでは「iconAnchor」がおかしかったので拡大率によって座標がずれてたけど、以下のページで紹介されてる方法で正しいGSizeを設定したらうまく行くようになった。

http://ecogis.sfc.keio.ac.jp/developers/gmaps/tut_3_1.html

HTML_QuickForm::addFormRule()をクラスからcallする

| | コメント(0) | トラックバック(0)

HTML_QuickFormを継承した中でaddFormRule()を呼び出す場合、普通に$this->addFormRule( 'hoge' )では呼べない。

この場合は「$this->addFormRule( array( $this, 'hoge' ) )」こう。
確かに他のHTML_QuickFormのmethodもこんな感じで呼ぶけど、addFormRuleのマニュアルには記述なし。

書こうよ。。。

google mapのアイコン変更

| | コメント(0) | トラックバック(0)

google maps APIで住所検索時に表示される緑の矢印アイコンを使う場合のサンプル
jQuery.js使用(prototype.jsのほうが好きなんだけどな。。。)

$(document).ready( function(){
if ( !GBrowserIsCompatible() ) {
return false;
}
var map = new GMap2( document.getElementById( 'map' ) );
var point = new GLatLng( 37.4419, -122.1419 );
var icon = new GIcon();
icon.image = 'http://www.google.com/intl/en_ALL/mapfiles/arrow.png';
icon.shadow =
'http://www.google.com/intl/en_ALL/mapfiles/arrowshadow.png';
icon.iconSize = new GSize( 39, 34 );
icon.shadowSize = new GSize( 39, 34 );
icon.iconAnchor = new GPoint( 0, 0 );
icon.infoWindowAnchor = new GPoint( icon.iconSize.width / 3, 0 );
var maker = new GMarker( point, icon );
map.setCenter( point, 16 );
map.addControl( new GLargeMapControl() );
map.addOverlay( maker );

GEvent.addListener( maker, 'click', function() {
maker.openInfoWindowHtml(
'hogehoge'
);
$('.gmapWindow').get(0).parentNode.style.marginTop = '10px';
} );
} );
$(document).unload( function(){ GUnload() } );

ちなみに、「icon.infoWindowAnchor」がないと「main.js」の757行でエラーになる。
(ちょっとはまった。独自アイコンの場合は必須らしい)
あと、表示文字自体のstyleはそのまま「class=""」で指定できるけど、表示文字上部の空白はmarginとか、paddingでは変更できない。
(上のほうで「position: absolute」が指定されているので)
なので、表示分の親要素をjsでいじってる。

PHPの功罪

| | コメント(0) | トラックバック(0)

正規表現、無名関数、参照を使いにくくしたのは
学習難易度を低くした点で成功していると思う。
まず大抵の初心者はこの辺で詰まる。
中でも特に参照を受ける側で明示するのはうまいと思った。
(「function(&$hoge){}」で定義して、呼び出し側は考慮しない)
関数を使う側と、作る側なら作る側のほうが技術力が高い可能性が高いし。
あと、配列とハッシュをごっちゃにしたところとか。

ただ、上の三つが使いにくい点で
PHPは言語としての記述力が低いと思う。
Perlと比べてPHPが言語として優れている点は
foreachの書式くらいかな。。。

ただ、環境の選択(基本的にapache module)、
標準libraryの選択(SQLiteとか)、
document(普通に日本語)なんかはPerlより良い。

まあ、早い話つかってて詰まらん。

充電

| | コメント(0) | トラックバック(0)

3日くらい前に電池が切れた。
2週間くらいか。