Saturday, May 31, 2008

Rails DOM要素の操作

RailsでDOM要素をクリック、マウスオーバーしたときに、アクションを実行したいんだけど、やりかたわかる人いる?

Rails link_to_remoteでmouseover

 link_to_remote "#{d[0].day}", {:update => 'deadline' , :url => {:action => 'deadline', :id => d[0]}}, {:onmouseover => "alert('hello')" }
curly braceが必要

Wednesday, May 28, 2008

Rails Calendar進捗状況

できたこと
  • 月のタイトルをクリックして個別月を表示できた
  • 個別月の日付をクリックしてデッドライン(30、40、50日後の日にち)を表示できた
できてないこと
  • 振替休日
  • 月のページでの送り(進む戻るボタン)
  • RESTライクな画面遷移(ex. pcal/2008/5)

人生は信頼できる人との共有時間を増やすことに費やすべきだ

生きている喜びはどこからくるんだろう
人は生物の一つでありその視点からすると
生命の安全が確保されていると感じるときに
生きている喜びを感じるのだろうと思う

ではどのようなときに人は生命の安全が確保されている感じるのだろう
それはきっと信頼できる人や人たちに囲まれているときだ
人が愛を求めたり親友を求めたりするのは
きっと信頼できる人を求めているんだろう

それだけではなく
本を読んだり音楽を聴いたり映画を見たり遠い国に住む人の生活を見たり
つまり誰かの作った作品を鑑賞するすべての行為も
きっとその先に信頼できる人を求めているんだろう

人生の基本的姿勢というのは信頼できる人との出会いの旅である
だから信頼できない人との時間はできるだけ無くさなければいけない
そして信頼できる人との共有時間を増やすことに費やすべきである

Tuesday, May 27, 2008

Rails Calendar

Calendarのコードを書き進めている
祝祭日に対応した1年分のカレンダーを表示する
今日の日付も表示する
ただ、振替休日にまだ対応していない

食事と健康

驚くべきことに昨年7月からの健康に留意した食事および生活がいまも続いている
具体的には、
  • 朝食は、1杯のニンジンジュース(缶製、常温)と1杯ちょっとの生姜紅茶(ホット)
  • 昼食および夕食は、玄米ごはん、蕎麦、フランス又はドイツ系の硬いパンのいずれか
  • 野菜(特に根菜類)、豆類、海藻類中心のおかず。肉や乳製品の摂取量は極端に少ない。魚も食べない
  • 飲み物は、温かい生姜紅茶、ほうじ茶、紅茶がほとんどで、冷たいものは飲まない。ビールは飲まず、たまに常温の赤ワイン程度
  • 3−4時のおやつとして、炒り豆、添加物の少ないポテチやさち手製のクッキーやパウンドケーキ、たまに物産展などの和洋菓子
  • 食事はよく噛み時間をかけてゆっくりと。食後も会話をしてすぐには動かない
  • 昼食後に30〜1時間程度の散歩(雨天中止、さぼる日もある)
  • 夜9時過ぎから30分のストレッチ
  • 朝6時半には起きて、午前中はプログラミングなどに集中
  • 昨年11月と今年の5月に一週間ほど断食道場へ
その結果、
  • 昨年7月時点の体重66kgが現在53kgを切るほどに
  • 下痢というものに縁がなくなった
  • 体のだるさがなくなった
  • 皮膚がすべすべになった
  • 高脂血症が改善された(総コレステロール値:250→204(07/11)→230(08/05))
  • 花粉飛散量が多いと言われた今年、20数年ぶりに症状がでなかった
  • 薬を一粒も飲んでいない
  • 風邪を引かない。他の病気もない(痔を除く)
  • 頚椎ヘルニアの症状が緩和された
まさに驚くべきことだ


What I am interested in

  • Ruby & Rails
  • Stephen King
  • Corinne Bailey Rae & Ingrid Michaelson
  • DTD, Dr.Mario, Mario Cart
  • 海外ドラマ i.e. LOST, Prison Break, Korean
  • French & German Breads
  • Food for health

Monday, May 26, 2008

DTD

DesktopTowerDefenseというOnlineゲームは異常に中毒性が高い
久方ぶりにはまっていてこの一週間毎日少なくとも一回はやっている
そのDTDを今日攻略した
つまりCreepsを一匹も活かさずに最後まで辿り着いた
得点は5,000点台だが正確な数字は忘れた

Green Mile

スティーブン・キングのグリーン・マイルを読み終えた
巧みなストーリ展開と卓越した表現力の両方を持っている希有な作家
すっかりこの作家の虜になっている自分がいる
ホラーだからと敬遠していた自分を反省し
図書館で偶然にこの作家の作品に出会えた幸運に感謝する

次は何を読もうか

Sunday, May 25, 2008

rails pcal

さらに進展
  • link_to_remoteで画面遷移なく一年分のカレンダーを表示できた
  • link_to_remoteからのパラメータをparams[:year]で拾って、session[:year]に入れ、翌年のカレンダーを表示できるようにした
  • 土日のカラーリングに対応した
  • pcal.rbをlibに導入したが、holidaysのカラーリングがうまくいかない。holidaysを含む月の開始曜日がずれてしまう

Saturday, May 24, 2008

Rails Pcal

RailsでPcalというパテ助ライクなカレンダーを作る計画
現時点
  • 1年分のカレンダーを表示することができた。
  • 表示する年度を変更する際のYearパラメータの受け渡し方がわからない。

Friday, May 23, 2008

Ruby Patesuke

パテ助の期間計算プログラムをRubyで作った。
  • 手続き期間(Deadline)、権利期間(ExpireDay)に対応
  • 春分の日、秋分の日、ハッピーマンデー法に対応

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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

require "date"

require "active_support"


class Date

  alias cwday_old cwday

  HOLIDAYS = ['1/1','2/11','4/29','5/3','5/4','5/5','7/20',

  '9/15','9/22','11/3','11/23','12/23']

  IRR_HOLIDAYS = ['shunbun','shuubun','seijin','umi','keiro','taiiku']

  JPO_HOLIDAYS = ['12/29','12/30','12/31','1/02','1/03']


  def deadline(term)

    dl = self + term

    while dl.cwday > 5 #postpone till first weekday

      dl += 1

    end

    dl

  end


  def expire_day(term)

    self + term

  end


  # 1-5:weekdays, 6:sat, 7:sun, 8:holiday, 9:jpo holiday

  def cwday

    @irr_holidays = irr_days(IRR_HOLIDAYS, self.year)

    @holidays = (HOLIDAYS + @irr_holidays).map do |date|

      date.split('/').map { |e| e.to_i }

    end

    @jpo_holidays = JPO_HOLIDAYS.map do |date|

      date.split('/').map { |e| e.to_i }

    end


    if @holidays.include?([self.mon, self.day])

      8

    elsif @jpo_holidays.include?([self.mon, self.day])

      9

    else

      cwday_old

    end


  end


  private

  def irr_days(irr_days, year)

    base1 = 0.242194 * (year - 1980) - ((year - 1983)/4)

    base2 = 0.242194 * (year - 1980) - ((year - 1980)/4)

    irr_days.map do |date|

      monday = 0

      case date

      when 'shunbun'

        case year

        when 1851..1899

          day = 19.8277 + base1

        when 1900..1979

          day = 20.8357 + base1

        when 1980..2099

          day = 20.8431 + base2

        when 2100..2150

          day = 21.8510 + base2

        end

        "3/#{day.to_i}"

      when 'shuubun'

        case year

        when 1851..1899

          day = 22.2588 + base1

        when 1900..1979

          day = 23.2588 + base1

        when 1980..2099

          day = 23.2488 + base2

        when 2100..2150

          day = 24.2488 + base2

        end

        "9/#{day.to_i}"

      when 'seijin'

        if year > 1999

          (8..14).to_a.each do |day|

            d = Date.new(year,1,day)

            monday = day if d.cwday_old == 1

          end

          "1/#{monday}"

        else

          '1/15'

        end

      when 'umi'

        if year > 2002

          (15..21).to_a.each do |day|

            d = Date.new(year,7,day)

            monday = day if d.cwday_old == 1

          end

          "7/#{monday}"

        else

          '7/20'

        end

      when 'keiro'

        if year > 2002

          (15..21).to_a.each do |day|

            d = Date.new(year,9,day)

            monday = day if d.cwday_old == 1

          end

          "9/#{monday}"

        else

          '9/15'

        end

      when 'taiiku'

        if year > 1999

          (8..14).to_a.each do |day|

            d = Date.new(year,10,day)

            monday = day if d.cwday_old == 1

          end

          "10/#{monday}"

        else

          '10/10'

        end

      end

    end

  end

end


if __FILE__ == $0

  days = [[1998,1,15],[2008,7,21], [2008,9,15], [2008,10,13],[2120,3,21]]

  days.each do |day|

    d = Date.new(day[0],day[1],day[2])

    print d.strftime("%Y/%m/%d %a")

    print " new:#{d.cwday}, old:#{d.cwday_old}\n"

    f = 1.year

    dl = d.deadline(f)

    ex = d.expire_day(f)

    print "deadine is #{dl}. #{dl.cwday}\n"

    print "expire date is #{ex}. #{ex.cwday}\n"

    puts ""

  end

end

Date Class inheritance

Dateクラスを継承してイニシャライズするとどうもうまくいかない。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

require "date"

class SDate < Date

  attr_reader :year

  def initialize(year,mon,mday)

    super

    @year = year

  end

  

end


d = SDate.new(2008,5,23)

p d.year

d2 = SDate.today

p d2.year



Output:

1

2

Rational(4909219, 2)

2008

Wednesday, May 21, 2008

refeの文字化け

以下を.zshrcに追加
refe_utf8() {
refe $@ | nkf -Ew
}
alias refe="refe_utf8"

考え尽くす

昨日の出来事から「徹底的に考え尽くすことが重要だ」ということがよくわかった
という話を今日の散歩のときにさちとした
それがブレイクスルーとなる
だから自分たちは意識的に徹底的に考え尽くすということをやることにした
第一弾として「現在の資産活用の見直し」をする
手順としては
  1. 現状の資産運用に関する情報の整理
  2. 日時を設定しての考え尽くすミーティングの実施

3つの大発見

さちとのけんかから3つの大発見が生まれる
  • 無意識あるいは神あるいは何らかのエネルギーが語ることがある
  • サナトリウムに通う人々の特性
  • 追いつめられた脳の能力

Wednesday, May 14, 2008

Barbar Sati

昨日さちに髪を切ってもらった
クシを使ったら少し虎刈りになった
今日からさち母と共に断食道場だ
さち母の改心を期待している
図書館で買ってもらったTheRubyWayを読むのが楽しみだ
台風の影響か外は激しく雨が降っている
さちはミサ廃人になっている
今も横で「ごめん、愛してる」の関連情報を漁っている
じゃあおいらはRuby廃人になろう

Monday, May 12, 2008

Rails: AcriveRecord::basis

ORM
Create
  order = Order.new(:name => "Kyo Endo", :age => 45)
  order.save
    or
  order = Order.create(...)
  orders = Order.create([
    {:name => "Kyo Endo", :age => 45},
    {:name => "Keyes Jarrett", :age => 20}
    ])
Read
  orders = Order.find(:all, :conditions => params[:order])
  orders = Order.find(:all, :conditions => ["name = :name and pey_type = :pay_type", params[:order])
  orders = Order.find(:all, :conditions => ["name like ?", params[:name]+"%"])
  orders = Order.find(:all, :conditions => "name='Dave'",
                      :order => "pay_type, shipped_at DESC",
                      :limit => 10)
  order = Order.find(:first, :conditions => "name = 'Kyo'",
                     :order => "id DESC")
  order = Order.find_by_sql("select line_items.* from line_items, orders " + "where order_id = orders.id" + "and orders.name = 'Kyo Endo'")
  
  average = Order.average(:amount)
  total = Order.sum(:amount)
  number = Order.count
  minimum = Order.minimum :amout, :conditions => "amout > 20"
  
  order = Order.find_by_name("keyes")
  order = Order.find_all_by_email(params['email'])
  user = User.find_by_name_and_password(name, pw)
Update
  order = Order.find(123)
  order.name = "Fred"
  order.save
  
  order.update_attribute(:name, "Barney")
  order.update_attributes(:name => "Barney", :email => "barney@bedrock.com")
Delete
  Order.delete(123)
  Order.delete([12,13,15])
  Product.delete_all(["preice > ?", @expensive_price])
  
  order.destroy
  Order.destroy_all(["shipped_at < ?", 30.days.ago])
Aggregation
  composed_of :name to Customer Class
  customer = Customer.find(123)
  puts customer.name.first
  

Sunday, May 11, 2008

What I am NOT doing recently

  • read blogs
  • write blogs
  • watch TV
  • work for money

What I am doing recently

  • read Agile Web Development with Rails 3nd Edition
  • read Stephen King's "Green Mile"
  • play Mario Cart Wii
  • play Dr. Mario
  • play Desktop Tower Defence
  • listen to Corinne Bailey Rae & Ingrid Michaelson

Friday, May 09, 2008

AWDwR3

TaskE:Checkoutまで来た
いやあ〜ミスが多い
っていうか、チェックが全然入ってないよ
ベータだからってちょっと悪すぎだ
一応赤帯のところはできてるってことなんだし
チュートリアルはここで一旦中断しよう
さきにRailsFrameworkを読むか
ここはまだRails2に対応してないんだけど

Screen

Screen をzsh起動時に立ち上げる

.zshrc
if [ $TERM != "screen" ]
 then 
 exec screen -S main -xRR
fi 

back scroll
^T [ or Esc
then move command
 ^U, ^V, hjkl

split region
^T S
kill region 
^T X
move focus to another region
^T tab 

Thursday, May 08, 2008

Stephen Kingが面白い

スティーブン・キングが面白い
ホラーというイメージしかなかったので今まで敬遠していたけど
まったくもってそれは無意味なことだった
最初図書館で「幸福の25セント硬貨」という短編集を借りた
「第四解剖室」と組で13編のホラーではない物語で構成されている
物語の構成はもとより文章が素晴らしい
表現力がすばらしい
端的にその情景を読者にイメージさせる至極の表現が淀みなく出てくる
だから物語に直ぐに引き込まれていく
一流作家の卓越した能力を垣間見ることができる

新たに「グリーン・マイル」「第四解剖室」「IT」を借りた
断食にどれを持っていくか今から楽しみだ

AWDwR 3rd

5日にAWDwR3rdベータのPDF版を$24で購入
最初のチュートリアルのところを毎日読んでいる
ところがあまりにもミスが多い
今版は新たに執筆陣に加わったSamRubyという人が中心になっているようだが
改定なのにこれはちょっと酷い感じがする
Railsのフォーラムなどを覗いて見ると
やはり評判が悪いのがわかる
チュートリアルは書き直したほうがいいんじゃないかと思う
完成は秋ということなので(ずいぶん先だなあ)
それまでの方針変更なりを望みます

Tuesday, May 06, 2008

TextMate Bundle

  • ⌘+alt+↓, ⌘+shift+alt+↓:create view,switch view
  • ⌘+T, ⌘+shift+T, ⌘+control+T:switch file, bungle, method
  • cotrole+shift+L: make a link
  • name shift+return: make method
  • ⌘]: indent selection
  • add html.erb to filetype of html lang bundle


Textmate Tips/Tricks/Themes - Rails Forum - Ruby on Rails Help and Discussion Forum
http://www.railsforum.com/viewtopic.php?id=1336

Saturday, May 03, 2008

Ajax on Rails

Ajax on Railsを5章(RJS)まで読んだ
RailsのAjaxの概略はここまでの説明で飲み込めたので一旦ここで区切りとしよう
学んだこと
  • Javascriptの主要なライブラリにはPrototypeとScript.aculo.usがある
  • これらを使えばWebPage上のDOM要素を自由に操作できるようになる
  • RailsではRuby言語でこれらJavascriptライブラリを使うことができる
  • 特にRJSを使えば一つのアクションにたいして複数の処理を記述できる

Friday, May 02, 2008

Rails2.0 Droppable&Sortable need url

Rails2.0 require pseudo url with drop_receiving_element and sortable_element helper, like as
<%= sortable_element :drop, :url => {:action => 'hello'} %>



但し、onUpdateはリストにunderscore+serial numberを付けてこうやる

<ul id="list">
<li id='item_1'>Buy milk
<li id='item_2'>Take out trash
<li id='item_3'>Make first million
</ul>

<%= sortable_element :list, :onUpdate => "function(el){alert(el.innerHTML)}" %>

パンが好きだ

フランスパンやドイツパンが好きだ
バケット、カンパーニュ、ルヴァン、ライ麦パンどれも好きだ
でも実は違いがよくわかっていない
それは問題だ

ちょっと調べたら
パン・ド・カンパーニュ、パン・オ・ルヴァンというのは
フランスパンの種類のようだ
でも原材料の種類の違いというよりも形の違いのような感じだが
よくわからない

パンの原材料は基本的には小麦かライ麦だ
小麦に水、酵母、塩など加えた生地をイースト菌で発酵させたものを焼いて作る
小麦は、米(イネ)、トウモロコシと並ぶ三大穀物(生産量が高い)の一つらしい
小麦はイネ科に属し、イネ科の他の穀物には、先の米、トウモロコシのほか、
大麦、ライ麦、きび、ひえ、あわ、ハトムギ、サトウキビ、タケがある

パンは国によって作り方が違っており
フランス、ドイツ、イギリス、他のヨーロッパ地域、アメリカによって
それぞれ独特の製法がある


ネットではあまり有益な情報は得られそうにない
本が必要かもしれない


図書館にあるかな?

Thursday, May 01, 2008

Rails Droppable

どういうわけか
<%= drop_receiving_element :dropHelperDIV, :hoverclass => 'hover' %>
がnoMethodErrorになる
<%= javascript_tag "Droppables.add('dropHelperDIV', {hoverclass:'hover'})" %>
はOK