2011年11月27日日曜日

メタプログラミング?

7つの言語 7つの世界のRuby 3日目です。

モジュールについていろいろとありました。

method_missingは使い勝手がよさそう。
色々使えちゃうからどう使うかをよく考えないとかな。


最後の問題のところに関するところは
ちんぷんかんぷんな感じでしたw

頭が固いのか
単純に勉強時間が足りないだけなのか

途中まではmoduleって便利だねーと思っていたのに。

moduleに定義されていないメソッドの呼び出しがあったときとか、
そのmoduleをincludeしているクラス側に定義されていると
そのクラスの方のメソッドが呼び出される。
とかね。

今回ので少し混乱した。
混乱した感想?心境?を書いとこう。
  • moduleがいっぱいあるよ~
    moduleでmethod_missingは使えないのか~
  • moduleの中にclassって定義できるのか?
  • classの中にmoduleって定義できるのか?
  • あ~頭が寝てる~
  • なまってる
  • 体は筋肉痛、頭は脂肪まみれ、アンバランス


けど、一応ある程度は理解したから
今日はここまでで、また寝て起きたら
復習するとしよう。

寝て起きれば、次見た時には
なんだ!全然むずかしくないじゃん!!
っていう不思議な現象を待ちます。

完全にただの感想だけになりましたが、
あとで復習するっていう
宣言にしておきましょう。

復習するぞ!!

ちゃんと理解すること。

2011年11月20日日曜日

オープンクラス

Rubyのオープンクラス


クラスの定義をいつでも変更できる。

class NilClass
  def blank?
    true
    print "NilClass\n"
  end
end

class String
  def blank?
    self.size == 0
    print "String\n"
  end
end

["", "person", nil].each do | element |
  puts element unless element.blank?
end

実行結果

c:\code>ruby blank.rb
String

String
person
NilClass

まず最初の
""
が、Stringクラスなので、
Stringクラスに定義したblank?が呼ばれる。
そして、self.size==0がtrueとなるので、
unlessの左辺は実行されない。
(unlessはifの反対、falseのときに実行される。)

次に、"person"だが、
これもStringなので、Stringクラスのblank?が呼ばれる。
そして、self.size==0がfalseとなるので、
unlessの左辺が実行される。
その結果、personという文字列が表示されている。

最後に、nilだが、
これはNilClassなので、NilClassのblank?が呼ばれる。
そして、これが呼ばれた時には無条件でtrueを返す。
よって、unlessの左辺は実行されない。
よって、表示はNilClassと出力されるだけである。

オープンクラスは便利。

使えるようになっていきたい。


2011年11月19日土曜日

人生を振り返る

最近すごく寒いですね。

鼻水ずびずびです。



さて、今日は”人生を振り返る”ということについて書きます。
23歳の若造がもう振り返るのか!とか言われるかもしれませんね。

人生ってなんでしょう。
人それぞれ価値観が違うので、何をして生きていたいとか違うと思います。

人生というとちょっと大きいので少し小さくして考えていきましょう。

人生=80年くらいですかね。
1年、これも少し大きいですけど、1年の抱負とか考えますよね。
じゃあ3か月、これは考えてない人が多いかな?
1か月、このくらいは考えるでしょう。
1週間、これも予定とかあるから考えざるをえないでしょう。

1日、これって意外と曖昧なんじゃないかと思うのですが
どうでしょう。

会社員の方は1日の大半を働いていると思います。
私も会社員なので、朝7:30に家を出て、帰ってくるのは
21時くらいですかね。
なので、13時間半は会社のために動いているわけです。

残りは10時間半ですね。
ここから睡眠時間と食事の時間、フリーの時間になるわけです。
・睡眠時間は6~7時間くらい
・食事は30分くらい
なので
・フリー時間は3~4時間ですね。
今は仕事が忙しくないのでそこそこフリー時間があります。


平日はまぁ働いているので3~4時間のフリーなので
一旦置いておきます。



休日の時間についてお話しましょう。

理想の休日
って考えたことありますか?

一日フリーだったら?
あなたはどんな風に過ごしたいですか?
どんな風に過ごせたら幸せですか?

理想の休日を考えるにあたって、
どんな行動をするかは人それぞれでいいと思います。

ただ、それが数年後、何十年後、その行動をとっていて
自分が後悔しないかを考えれば、理想の行動へとつながるはずです。

それを念頭に、理想の一日の流れを作ってください。

時間がたっぷりある時はその理想の一日に沿って行動すれば、
後悔しない人生が待っています。

時間がたくさんないときは、理想の一日と比較して、
ここの部分はできるけど、こっちはできない、
と判断して行動を制限すればよいでしょう。

理想の一日の中でも優先度・重要度を作っておくと
スムーズに決まると思います。


理想の一日ができたら、次です。

明日の予定を立てる、です。

もう理想ができたわけですから、それに沿ってあとは
作るだけです。

休みの日に何時間もだらだらと寝ているのは
理想の一日に組み込まれているのでしょうか?
組み込まれているのならそれでいいですが…
(そんな人がいたら何かお勧めしますのでそれを
だまされたと思ってやってみてください。
人生が変わります。)

睡眠時間を6時間とすると、残りは18時間です。
何をしましょうか。

理想が人脈を広げたいのであれば、
外へ出かけて誰かとお話すればいいでしょう。

女の子と遊びたいのであれば、
ナンパして、仲良くなって、遊んで
という流れでいいでしょう。

スキルアップがしたいのであれば、
計画的に勉強を行えばいいでしょう。

好きなことをすればいいわけです。
好きなことをし続けていれば、後悔も少ないでしょう。
(遊んでばっかりで何も考えていないのでは後悔もあるかも)

自分の将来に対しての目標があり、それに向かうのが
苦しくても楽しいのであれば、
それを理想の一日に組み込みましょう。

そうすることで、一日一日、理想へと近付いていきます。

一日くらいだったらその計画通りに行動できるはずです。
それを繰り返していくだけです。

30歳、40歳になってから
今まで何をやっていたんだろう。
とか後悔しないように、楽しく過ごしましょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━
追記:ジョブスがいいこと言ってます。






2011年10月27日木曜日

JUnit触ってみた

今度会社の研修でJavaで開発するということで、
JUnitとか使うのかなとか思いつつ、
ちょっと触ってみました。

JUnitは普通に
http://www.junit.org/
からjunit-4.9.jarが最新だったのでそれを落としてきました。

それを以下のlib内にコピー

プロジェクト名
┣src
┗lib
  ┗junit-4.9.jar
(ProjectName\lib\junit-4.9.jar)


junit-4.9.jarを右クリック
ビルド・パスに追加
参照ライブラリーに追加されていればOK.

追加してもなんだか反映されないぞっ
ってときはF5とかで更新してください。

あとは、適当にテストコードを書けばOKです。

ためしに書いた雰囲気をつかむ用。
(特にテストしたいソースがなかったので
内容は超適当)

package hello;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

public class HelloWorldTest {
   
    @Before
    public void before(){
        System.out.println("テストが呼ばれる前に実行される。");
        System.out.println("■開始");
    }
   
    @After
    public void after(){
        System.out.println("テストが呼ばれた後に実行される。");
        System.out.println("■終了");
    }
   
    @Test
    public void testNormal(){
        String[] actual = { "Hello", "World", "!!" };
        assertThat(actual,is(actual));
    }
   
    @Test
    public void testFailed(){
        fail();
    }
}
 久しぶりにEclipseを使ったせいか、ショートカットキーの忘れが激しくて少し書きづらかった…
少しめも…
Ctrl+Shift+M: import補完(なんか選択している単語についてだけだったのは気のせい?
  Alt +Shift+T: JUnitテストを実行

実行結果はこんな感じ。


@Beforeと@Afterは
casesetupとteardown。
1つ1つのテストが実行される前に実行される
初期化メソッドと、後始末メソッドです。

テスト開始時と終了時に1回だけ実行したい場合には、
@BeforeClassと@AfterClassアノテーションを使えばOK。

@Ignoreを使うと、テストメソッドと認識されない。

@Test(expected=NumberFormatException.class)
とか書くと、NumberFormatExceptionがthrowされることを
期待するテストメソッドとなる。



あと、他に
EclEmmaというのも入れました。
これは、実行されたコードを色付きであらわしてくれます。
そして、どの何%実行されているとかもみれるので、
すべてのコードの組み合わせを網羅しているかのチェックにもなります。
(だからといって、仕様を全て満たしたという意味ではない。
あくまでコードは全て通ったかどうかのチェック)

これは、Eclipseのメニューの
[ヘルプ]
⇒[新規ソフトウェアのインストール]
⇒ロケーションに、http://update.eclemma.org/と入力
⇒EclEmmaを選択
⇒次へ、とかを選択してインストールをする。
⇒再起動

実行するとこんな感じです。
緑が実行されたコード
赤は実行されなかったコード


それにしても、このブログ使いづらいかもw

画像を簡単に追加はできるんだが、
追加されるところが少しずれて、
自分で修正が結構必要。カーソルのところに
追加されるんじゃないの?

まぁいいや。

Cのテストよりも色々できそうな雰囲気を感じ取りました。
Javaの他のテストフレームワークは使えるほど
いい感じのがたくさんあるのかな。


EMMAとStrutsアプリでカバレッジ取得ができるみたいなので
テストするときにはこれは役にたってくれるのかな。

そしたらStrutsを使うことになってしまうけれど。

目的別、フレームワークの長所短所をもっと知る必要が
ありますね。

眠い。
ショーシャンクの空に
という映画をやっと見る機会ができたので、
見ようと思っていたはずなのに
JUnitに負けた!!

早く名作みたい。
それではまた次回。






2011年10月23日日曜日

簡易TreeをRubyで作ってみた

7つの言語7つの世界
という本の2日目の試してみようで作ったソースでも
メモ程度に置いておきます。

後になってみたときに、ひどいコードを書いていたなぁ~
と思えるようにw

class Tree
  attr_accessor :tree, :node_name

  def initialize(tree)
    tree = tree.to_a.first if tree.is_a?(Hash)
    @tree = tree
    @node_name = @tree[0]
  end

  def visit_all(&block)
    visit &block
    visit_all_child(@tree , 0)
  end

  def visit(&block)
    block.call self
  end

  def visit_all_child(children , nest)
    children[1].map do |child|
      for i in 0..nest do
        print " "
      end
      printf("%s\n",child[0])
     
      if child[1] != []
        visit_all_child(child, nest + 1)
      end
    end
  end
end

tree =  {
  'grandpa' => {
    'dad' => {
      'child 1' => [],
      'child 2' => []
    },
    'uncle' => {
      'child3' => [],
      'child4' => []
    },
    'newDad' => {
      'child5' => [],
      'child6' => {
        'child6_1' => [],
        'child6_2' => []
      }
    }
  }
}

ruby_tree =  Tree.new(tree)


puts "Visiting a node"
ruby_tree.visit {|node| puts node.node_name}

puts "Visiting entire node"
ruby_tree.visit_all {|node| puts node.node_name}


2011年10月22日土曜日

FXはじめてみた

今週のはじめ、
2011/10/17に、FXの口座が開設されたので、その日からFXはじめてみました。

はじめて5日の戦績を公表したいと思います。

あっ、その前に、やってみての感想をはじめに一言。



これは、
「稼げる!!」
って思いましたねw


まぁ結果をみて
笑ってやってくださいww



注文番号 約定日時 取引 対象注文 通貨ペア 売数 買数 約定レート 新規手数料 円貨レート 売買損益 スワップ 決済手数料 決済損益
48798867 2011/10/21 23:33 決済 48754323 EUR/JPY 2
105.52 0 1 10400 0 0 10400
48754323 2011/10/21 22:03 新規 48754323 EUR/JPY
2 105 0 1 0 0 0 0
48751168 2011/10/21 0:56 決済 48750949 EUR/JPY 2
105 0 1 -7400 0 0 -7400
48750949 2011/10/21 0:41 新規 48750949 EUR/JPY
2 105.37 0 1 0 0 0 0
48750633 2011/10/21 0:36 決済 48735999 AUD/JPY
2 78.4 0 1 3000 0 0 3000
48738183 2011/10/20 22:30 決済 48737382 EUR/JPY 2
105.84 0 1 4200 0 0 4200
48737382 2011/10/20 22:21 新規 48737382 EUR/JPY
2 105.63 0 1 0 0 0 0
48736840 2011/10/20 22:17 決済 48735919 EUR/JPY
2 105.6 0 1 0 0 0 0
48735999 2011/10/20 22:11 新規 48735999 AUD/JPY 2
78.55 0 1 0 0 0 0
48735919 2011/10/20 22:11 新規 48735919 EUR/JPY 2
105.6 0 1 0 0 0 0
48664157 2011/10/19 12:49 決済 48663908 EUR/JPY
2 105.77 0 1 0 0 0 0
48663908 2011/10/19 12:32 新規 48663908 EUR/JPY 2
105.77 0 1 0 0 0 0
48651356 2011/10/19 1:31 決済 48650752 EUR/JPY
2 105.21 0 1 1600 0 0 1600
48650752 2011/10/19 1:02 新規 48650752 EUR/JPY 2
105.29 0 1 0 0 0 0
48649399 2011/10/19 0:30 決済 48649079 EUR/JPY
2 105.06 0 1 800 0 0 800
48649079 2011/10/19 0:22 新規 48649079 EUR/JPY 2
105.1 0 1 0 0 0 0
48648392 2011/10/19 0:09 決済 48646944 AUD/JPY
5 78.23 0 1 1500 0 0 1500
48646944 2011/10/18 23:46 新規 48646944 AUD/JPY 5
78.26 0 1 0 0 0 0
48646125 2011/10/18 23:34 決済 48645834 AUD/JPY
2 78.2 0 1 -2000 0 0 -2000
48645834 2011/10/18 23:30 新規 48645834 AUD/JPY 2
78.1 0 1 0 0 0 0
48645513 2011/10/18 23:25 決済 48644404 EUR/JPY 1
104.94 0 1 500 0 0 500
48644404 2011/10/18 23:10 新規 48644404 EUR/JPY
1 104.89 0 1 0 0 0 0
48640655 2011/10/18 22:21 決済 48639131 EUR/JPY 1
105.2 0 1 -500 0 0 -500
48639131 2011/10/18 21:54 新規 48639131 EUR/JPY
1 105.25 0 1 0 0 0 0
48637646 2011/10/18 21:35 決済 48634507 EUR/JPY 3
105.17 0 1 8400 0 0 8400
48634507 2011/10/18 20:43 新規 48634507 EUR/JPY
3 104.89 0 1 0 0 0 0
48633945 2011/10/18 20:38 決済 48630116 EUR/JPY 3
104.85 0 1 -900 0 0 -900
48630116 2011/10/18 18:55 新規 48630116 EUR/JPY
3 104.88 0 1 0 0 0 0
48619447 2011/10/18 16:04 決済 48619031 AUD/JPY 1
78 0 1 -2000 0 0 -2000
48619031 2011/10/18 15:18 新規 48619031 AUD/JPY
1 78.2 0 1 0 0 0 0
48607723 2011/10/18 6:14 決済 48607721 AUD/JPY 5
77.94 0 1 -5500 500 0 -5000
48607721 2011/10/18 5:44 新規 48607721 AUD/JPY
5 78.05 0 1 0 0 0 0
48607278 2011/10/18 5:07 決済 48606831 AUD/JPY
1 78.27 0 1 500 0 0 500
48607237 2011/10/18 5:06 決済 48589522 AUD/JPY 2
78.22 0 1 -17200 0 0 -17200
48606831 2011/10/18 4:10 新規 48606831 AUD/JPY 1
78.32 0 1 0 0 0 0
48606767 2011/10/18 4:03 決済 48606473 AUD/JPY 1
78.35 0 1 1300 0 0 1300
48606473 2011/10/18 3:41 新規 48606473 AUD/JPY
1 78.22 0 1 0 0 0 0
48589522 2011/10/17 22:50 新規 48589522 AUD/JPY
2 79.08 0 1 0 0 0 0
48586896 2011/10/17 22:28 決済 48586194 AUD/JPY
3 79.12 0 1 -4200 0 0 -4200
48586194 2011/10/17 22:22 新規 48586194 AUD/JPY 3
78.98 0 1 0 0 0 0




バッと貼ってみたww

初日に25000円ちょっと負けてます。
正直なんにも勉強しないではじめるとこうなります。

このときの私は損切りをまったくしてなかったので
(同時にその重要性も理解していなかった)、
だらだらと値段が下がるのをみて、なんとなくやばくなったから
売っているって感じでした。

次は、5000円くらいプラスになってよかったーってなって、

8000円くらいプラスになったと思って、
適当に買ったら、今度は同じくらいマイナスになったり、
適当はだめでしたww


明確に自分の中で理論を確立することが
成功への地道な一歩だと思います。

そうすれば、仮に失敗したとしても
その自分の理論と結果を比較して、
軌道修正すればいいわけです。

比較して、修正すればいいだけなので
そんなに難しいことではありません。

私のルールは、
リバウンド狙いであること。
だったり、
たまにはちょっと様子見したり。

損切り値を大きく設定しておくとかですかね。

リバウンド狙いのときは損切り値を-20pipsくらいが
多いですね。

買うときにはその前に損切り値を決めています。
なんかこの辺が面白かったです。

プログラムを書く際に、TDDという方法がありまして、
テストを先に書くのです。
なんかそれに似た感覚を覚えました。

先に決めておかなければ、損切りの決断が鈍ったり、
あいまいになるのです。

利益に関しては柔軟に指値を変えてもいいですが、
損切りはだめだったら、切る!と決めて買っておいた方が
いい場合があります。

まぁ、きちんと買うタイミングを間違わない、という前提が
ある程度あると思いましたが。

自分の理論だとここから先にはあがるだとか、さがるだとか、
そういうのを持って、買えば、
その勝率が60%もあれば同じように買い続けるだけで
儲けになりますね。

1つ目購入:+2000円
2つ目購入:-2000円
3つ目購入:+2000円
収支   :+2000円

こういうことですね。

でもはじめて5日ですが
色々
優柔不断でマイナスが多かったです。

損切りを覚えたのは良かったのですが、
中途半端な損切りはよくなかったかなと思います。

先ほどの例は、リバウンド狙いの時の私の損切りルールです。
ですので、そんなに高い値段の上がりじゃなくてもよいのです。
短期間でさっと買ってちょろっと売るくらいの
ライトな関係がよかったのです。
(日中は仕事中なので、そんな時に値段をあまり気にしたくなかったので。)


ここまでは、値段があがる!と見込んで買ったものに関しては、
それと同等の損切りを設定するべきでした。

ぬるかった私は
リバウンドと同様の損切りをあまり考えもせず設定したので
中途半端な損切りとなってしまったのです。

その結果、2時間後とかには目標の値に到達していたのに、
途中のあがりさがりで、中途半端な損切りに引っ掛かり、
ただ損をしただけ、ということになりました。

理論通りに動いていたとはいえませんでした。

とはいえ、
はじめてたった5日ですが、
稼げると思っています。

初日に25000円負けた時はやばい!と思いましたが、
今週はその悔しさをばねに、
睡眠不足になりまくりつつ、勉強して、
17000円は取り戻しました。

そして、これは
お金をたくさんかけて多くを購入したからといって
負ける確率があがるわけではありません。

理論はいっしょでいいのです。
低いレートで訓練して、
勝率をあげていき、
あとは機械的に売り買いすればいいのです。

時々例外もあるのでしょうが、
それはレートを変えるときに注意すればいいでしょう。

と、まぁこんな感じです。

2011年10月21日金曜日

LT祭り2011BeforeAfterやってみた

LT祭り2011にいってきて、LT作成ワークショップがありました。

その前日にとりあえず自分なりに作ってみようと思って作ったのが
あるんですが、改めて、作成したLT資料を改造したらどんな風になるのか?

ちゃんとワークショップが活かされているのか簡単に考えてみます。

まず、BeforeのLT資料
2011 LT祭り fpsあるある




次に、改善した、After
LT資料

2011 lt祭り fpsあるある+


さて、何が変わったでしょうか。

まずは、
大事なことは最初に伝える

これですかね。
FPSあるあるというタイトルだったのですが、
なんかいまいち伝えづらかったので、FPSが好き、というタイトルに変わりました。

次は、
写真を使う

ですね。
前よりも写真を使ってみました。

それと、多少ですが、写真を見せる前の前置きなんかも意識してみました。

それでもなんかうまいこと言ってる感じがしません。

これは慣れていい感じの間をつかむことにします。

大きくはこの2つを意識して修正しました。

良い方向には改善されていると思います。

相変わらず作成するのにかかる時間は
結構かかるなーとか。
凝ろうとしたり、画像を探すのが大変だったりします。

まぁ作ってる間も楽しいのですが。

シンプルに作ってみるってのもいいかもしれません。

というか、話の内容がFPS好き!にはあまりないというか。

そういえばワークショップでもこんなのがありました。

学びを入れる

そうでした。これでした。
FPS好き!ってのにはあんまり学びと思えることが少ないのかなってのはあります。

次は、学びがあるような内容のLTテーマでもできるといいんですが。

そのためには、地道に学びを続けていきます。

さくっとですが以上です。
スライドにパワーを吸い取られました。