2011年12月4日日曜日

Io言語に触れてみた

"7つの言語 7つの世界"の2言語目
Ioに突入です。

Ioの1日目

検索するときには、【Io 言語】で検索する。

環境:Windows7 Home 32bit
*Ioのインストール
Javaとかでよくある、インストール手順みたいなのが
あるかと思ったが、Ioという名前からして
検索しても特にHITしなかったので、とりあえず
前に進むことにした。


http://iolanguage.com
から、iobin-win32-current.zipを落としてきた。

それを解凍して、README.txtを読んだら
まぁいい感じにやってくれ、みたいな感じを受けたので
いい感じにやることにした。

IoLanguage-win32-20111103.exe
をダブルクリックすると解凍される。

IoLanguage/io.exe
があるので、それをダブルクリックすると、
ウィンドウが立ちあがる。
とりあえずこれで会話ができる。

*まずは挨拶


Io> "Hi ho, Io" print
Hi ho, Io==> Hi ho, Io


次は打った履歴
Io> Vehicle := Object clone
==>  Vehicle_0x157e550:
  type             = "Vehicle"

Io> Vehicle message := "This is message."
==> This is message.
Io> Vehicle message
==> This is message.
Io> Vehicle message = "Message is updated."
==> Message is updated.
Io> Vehicle message
==> Message is updated.
Io> Vehicle timer ::= "10 min"
==> 10 min
Io> Vehicle timer
==> 10 min
Io> Vehicle setTimer("20 min")
==>  Vehicle_0x157e550:
  message          = "Message is updated."
  setTimer         = method(...)
  timer            = "20 min"
  type             = "Vehicle"

Io> Vehicle timer
==> 20 min
Io> Vehicle timer = "30 min"
==> 30 min
Io> Vehicle timer
==> 30 min


VehicleはObject をclone して
そこにmessage slot を定義している。

 "="   は、slotの名前が定義されているものの値を変える。
 ":="  は、slotの名前がなければ作成する。
 "::=" は、slotの名前がなければ作成し、setterも作る。

Io> Vehicle type
==> Vehicle
Io> Vehicle slotNames
==> list(timer, type, setTimer, message)

すべてのオブジェクトにはtype メソッドがある。
オブジェクトの種類を表す。


Io> Car := Vehicle clone
==>  Car_0x17853a8:
  type             = "Car"

Io> Car slotNames
==> list(type)
Io> Car type
==> Car
Io> Car message
==> Message is updated.
Io> ferrari := Car clone
==>  Car_0x157e820:

Io> ferrari slotNames
==> list()
Io> ferrari type
==> Car
Io> ferrari message
==> Message is updated.


ここまでの関係を簡単に図にすると、



Object

Vehicle

Car  --インスタンス--> ferrari



Ioのタイプは単なる便宜的な道具にすぎない。
大文字で始まる名前を持つオブジェクトに、typeスロット
が設定される。
ferrariのtype が Car となっているがそれが嫌なら以下のようにする。

Io> Ferrari := Car clone
==>  Ferrari_0x16df5d0:
  type             = "Ferrari"
Io> Ferrari slotNames
==> list(type)
Io> Ferrari type
==> Ferrari


ferrariは、typeスロットなし
Ferrariは、typeスロットあり

先頭文字が、大文字か小文字かの違いだけ。
動作にはまったく変わりはないそう。

*メソッド

Io> method("This is method." println)
==> method(
    "This is method." println
)
Io> method() type
==> Block
Io> Car drive := method("Vroom" println)
==> method(
    "Vroom" println
)
Io> ferrari drive
Vroom
==> Vroom
Io> Ferrari drive
Vroom
==> Vroom

スロットの内容を取得する方法として
getSlotがある。


Io> ferrari getSlot("drive")
==> method(
    "Vroom" println
)
Io> ferrari getSlot("type")
==> Car
Io> ferrari proto
==>  Car_0x17853a8:
  drive            = method(...)
  type             = "Car"


特定のオブジェクトのプロトタイプを取得するには
次のようにする。

Io> Car proto
==>  Vehicle_0x157e550:
  message          = "Message is updated."
  setTimer         = method(...)
  timer            = "30 min"
  type             = "Vehicle"



すべての名前付きオブジェクトが含まれる、
マスター名前空間、Lobbyがある。

Io> Lobby
==>  Object_0x1416388:
  Car              = Car_0x17853a8
  Ferrari          = Ferrari_0x16df5d0
  Lobby            = Object_0x1416388
  Protos           = Object_0x1416328
  Vehicle          = Vehicle_0x157e550
  _                = Object_0x1416388
  exit             = method(...)
  ferrari          = Car_0x157e820
  forward          = method(...)
  set_             = method(...)
 
 
 


*リストとマップ
まずはリスト

Io> toDos := list("One", "Two", "Third")
==> list(One, Two, Third)
Io> toDos size
==> 3
Io> toDos append("Four")
==> list(One, Two, Third, Four)
Io> numList := list(1,2,3,4)
==> list(1, 2, 3, 4)
Io> numList average
==> 2.5
Io> numList sum
==> 10
Io> numList at(1)
==> 2
Io> numList append(5)
==> list(1, 2, 3, 4, 5)
Io> numList pop
==> 5
Io> numList prepend(0)
==> list(0, 1, 2, 3, 4)
Io> numList isEmpty
==> false
Io> numList push(5)
==> list(0, 1, 2, 3, 4, 5)

次はマップ
Io> pika := Map clone
==>  Map_0x157b490:

Io> pika atPut("home" , "Tokyo")
==>  Map_0x157b490:

Io> pika at("home")
==> Tokyo
Io> pika atPut("like" , "FPS")
==>  Map_0x157b490:

Io> pika asObject
==>  Object_0x16d9690:
  home             = "Tokyo"
  like             = "FPS"

Io> pika asList
==> list(list(like, FPS), list(home, Tokyo))
Io> pika keys
==> list(like, home)
Io> pika size
==> 2

*シングルトン
Io> Highlander := Object clone
==>  Highlander_0x177f3a8:
  type             = "Highlander"

Io> Highlander clone := Highlander
==>  Highlander_0x177f3a8:
  clone            = Highlander_0x177f3a8
  type             = "Highlander"

Io> fred := Highlander clone
==>  Highlander_0x177f3a8:
  clone            = Highlander_0x177f3a8
  type             = "Highlander"

Io> mike := Highlander clone
==>  Highlander_0x177f3a8:
  clone            = Highlander_0x177f3a8
  type             = "Highlander"

Io> fred == mike
==> true
Io> Highlander == fred and Highlander == mike
==> true

Highlanderは1人。
fred も mike も等しくなる。


普通に作ると等しくはならない。

Io> one := Object clone
==>  Object_0x15727f0:

Io> two := Object clone
==>  Object_0x1579780:

Io> one == two
==> false


*Object clone を破壊する。
  Object clone := "xxxxxxxxxxxx"
とか書くと、
以降はオブジェクトを一切作成できなくなる。
元に戻すには、プロセスを終了する必要がある。

逆にいいことは、以下のこと。
 オブジェクトを形造っている演算子とスロットに
 自由にアクセスできるため、数行の短いコードで
 ドメイン固有言語を作成できる。

*セルフスタディ

 *Ioのいくつかの問題点
  *検索しづらい
  *日本語リソースが少ない
 *質問に答えてくれるIoコミュニティ
  *http://tech.groups.yahoo.com/group/iolanguage/
  *Ioプログラミングガイド
   *http://xole.net/docs/IoGuide_ja.html
 *Ioのイディオムに関するスタイルガイド
  *http://en.wikibooks.org/wiki/Io_Programming/Io_Style_Guide
 
 
 確認してみよう:
 *Ioは強く型付けされた言語化、それとも弱く型付けされた言語か?
Io> 1+1
==> 2
Io> 1 + "one"

  Exception: argument 0 to method '+' must be a Number, not a 'Sequence'
  ---------
  message '+' in 'Command Line' on line 1


 *0は真か偽か?空文字列は?nilは?
Io> 0 and true
==> true
Io> "" and true
==> true
Io> nil and true
==> false

 *プロトタイプに存在するスロットを確認するには?
Io> Car proto slotNames
==> list(timer, type, setTimer, message)
Io> Vehicle slotNames
==> list(timer, type, setTimer, message)
Io> Car slotNames
==> list(type, drive)

 試してみよう:
 *スロットの名前を指定して格納されているコードを実行せよ
Io> ferrari drive
Vroom
==> Vroom
Io> ferrari getSlot("drive")
==> method(
    "Vroom" println
)
Io> ferrari getSlot("drive") call
Vroom
==> Vroom

driveはメソッドだったので、callをつけた。

 *ファイルからIoのプログラムを実行せよ。
c:\IoLanguage>io ../code/io/test.io
Hello, world

これは、パスを通しておくと楽ですね。

コンピュータ
⇒システムの詳細設定
⇒環境変数
⇒Path
に、c:\IoLanguage
を追加すればOK.

コマンドプロンプト上で、io
と打てば、io.exeが起動します。

先ほどの例も、
c:\code\Io>io test.io
Hello, world

となる。



*おわり
Ioはわかりやすくて、書きやすい。
楽しい言語だ。

量が増えてきたら、頭が混乱してしまいそうだけど、
適宜メモとか取りつつ書いていけば
けっこう使えそう?
すぐにコードが打てたのもよかった。

落としてくるだけ。

それではまた次回。

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テーマでもできるといいんですが。

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

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


2011年10月16日日曜日

vimを使いやすくしてみた

vimでRuby開発をしようと思い、オムニ補完できるようにしてみよう!ってことでやってみました。
(実際はオムニ補完使いこなせるほどRubyの知識ないんだけどね!)


Windows7 32bit で開発しようとしているので
使用するvimはKaoriYa
さんから落としてきました!

さて、次にしたこと
以下のサイトを参考にオムニ補完について知る。
プラグインを入れる。
1つ目のリンク先の
AutoComplPop - Automatically opens popup menu for completions : vim onlineから取得した
"autocomplpop.vim"を、vimの\runtime\pluginフォルダ配下に配置。

ここを参考にオムニ補完をいれた。
落としてきたファイルを解凍して、
\ns9tks-vim-autocomplpop-tip\plugin\acp.vim
このacp.vimを以下に配置した。
\vim73-kaoriya-win32\plugins\acp.vim

これでオムニ補完OK.
<Ctrl-x> ⇒ <Ctrl-o>で補完されます。

2回おすのが面倒なので、
2つ目のリンク先より、
vimrcに以下の記述を追加した。
"<C-Space>でomni補完
imap <C-Space> <C-x><C-o>

そうすると、Ctrl+Space で補完されるようになります。
いい感じ!便利になってきました。



あとWindowsらしくしてしまうかということで
1つ目のリンクを参照して、
vimrcに以下を追加した。
"CTRL+Cをサポート
source $VIMRUNTIME/mswin.vim

こうすると、Ctrl-zとかCtrl-vがいつものWinの切り取りとかコピーになる。
(こうすると、もとからの動作であった、<C-z>の新しいシェルとかはどのキーバインドだよって思ったけど、切り取りとコピーのが使うかなと思って今はこの設定にしてみる)

本当ならここまででさくっと終って
じゃあちょっとコード書くか!ってなるんだけど、
この先の微妙なところでしばらくつまづいたので書いときます。

hoge.rbとかのファイルを開くときに、
今までは関連付けされていたのがサクラエディタなんですけど、
vimを設定したんだし、vimに設定しとくかってことで
さっき解凍したデスクトップにあるvimを選択したわけですね。

それでまあ、オムニ補完とかやって、
おー!すげー!とかやってたわけです。

そして、vimをProgram Filesとかに移して、
もう一回プログラムから開くで設定しなおそうと思ったら、
設定されない。
どういうこと?
ってことでググって

これを試した。
「ファイルを開くプログラムの選択」からプログラムを削除する方法

たしかに、この記事の通り、
プログラムから開くのところからは消えた。
が、しかし!!
結局選択はできないわけですよ。。。

そしてまたまたググった!!
(この時点でどのくらいの時間がたったことか。。。
たぶん30~1時間くらいは経ったかな。。。
酔ってるから曖昧です。。。)


これを試した。
Windows 7 ファイルの関連付け 登録できない「関連付け できない」

助かった~~~!!!!
設定できましたw
まさかこんなところでつまづくとはw
意外と、プログラムから開くの設定がデリケートであることを知りましたw

余力があればジャンプ機能も使えるようにしときたかったんですが、余力がないのでまた次回にしときます。

てか、プログラム書いてねぇー!!!!!

千里の道も一歩から。
がんばりましょう。

2011年10月15日土曜日

iCloud体験してみた

iPhone4Sの予約をしましたが、まだまだ届かないようです。。。

待ち切れなかったので、手持ちのiPhone3GSとiPadをiOS5にアップデートしました。

まず、iPadから。
マルチタッチジェスチャーをすごく楽しみにしていたのですが、
残念ながらiPad2のみ対応しているらしく、今はまだできません。
仕様なのか、バグなのか定かではないので今後もできないかも。

そして、今日、iPhone3GSの方をアップデートしたら、、、
なんと、
ミュージックやらアプリやら連絡先やらがふっとんでる!!

どういうことだ!と思いつつも
復元祭り。

なんとかかんとかで
ミュージックはとりあえずPCに元データはあるので
なんとかそれで復元。(でも、レート★とかプレイリストとか再生回数とか全部消えましたorz...

連絡先もよくわからないですけど、しばらくしたら戻りましたw
表示するときに、いったん
"すべての連絡先"->"グループ"
という順番で操作したら連絡先が見えるようになりました。

アプリなんですが、、、
ライブラリから消えていました。。。。
AppleIDとは紐づいているので、ダウンロードすればいいだけですが、アプリを並べ替えるのがめんどくさい。。。
アプリの並びを記憶してくれる機能が欲しい。

まぁアプリはすっきりした!くらいに思って先に進みましょう。

まず、良かった点。
SMSがすごく使いやすい。
書くときも、読むときもすごく良くなってます。
フリック入力のみ、とかにするとフリック好きにはいいですね。
手間が少し減りました。

他にもリマインダーとか公式Twitterアプリとか触りましたが
どれもいい感じですね。
公式=微妙
ではなく、普通に使えます。
というかTwitterアプリは機能をそんなに使わない人なら
全然問題ないです。ブックマークとかもあとから追加できるみたいだし。


さぁ前置きが長くなりましたが、
iCloud体験してみました

PC、iPad、iPhone
これを無料で同期、しかもすらすらと
これはいいですよ。

新しく@me.com のメールアドレス作りましたけど
連絡先も同期してるから簡単にメールが送れるね。
Webから送れるだけなら、gmailでいいんだけども、
連絡先がgmailには置いてないもんで、こっちのが
その点は使い勝手がいい。

あとは、Keynoteとかの作業を共有してくれるのもいい感じかも。
しょっちょう自動バックアップとってくれてるし
助かる。

容量増やすのも+10GBで1か月+150円くらい。
+30GBはたぶん1か月+300円くらいだったはず。
どれも年間で払うはずだけどね。

とにかく、いい感じのデバイスです。
いや、いい感じのサービスです!にしとこう。

これからもっと便利になるでしょう。
今日はこの辺で。

参考URL:
http://mikan8929.blog6.fc2.com/blog-entry-393.html

2011年10月8日土曜日

LT祭りに参加してきた

GLT×とべとべ×DevLOVE LT祭り再び!~あなたの5分を創る1日~

へいってきました!!

会場は品川にある、コクヨ「エコライブオフィス品川」

です。とってもきれいでした。

写真は夜+画質悪い

資料を3面に映し出せる

外の庭

                              

 

場所がすごくきれいではじめはちょっと緊張しましたが、

楽しくLTについて学びました。

マインドマップを作りました。

これを作ることで、LTのネタが広がりやすくなったと思います。

Toolもいいけど、手書きがいいみたいです。

ちなみにToolだと、FreeMindやastah*があるみたいです。

簡単なあらすじを作って、20分くらいでLT資料とネタができました!!テーマがある程度きまっているとあっさり決まるかもと思いました。以下はワークショップで作成したLT資料です。

2011 LT祭り アボカド
View more presentations from ikedalight
学びを入れるところが自分にとっては少し意識しないといけないなと思うところでした。

魅せ方については、あえてよませる、というところが勉強になりました。

あとは、やっぱり文字が大きいと読みやすいのと、テンポがいいので、飽きにくいですね。

野良LT初LTデビューしました!

前日につくってみたLTネタ

「FPSあるある」を発表しました。

以下がそのスライドです。

発表者が多かったので、3分のLTでした。

練習では5分に納めるようになっていたのですが、

いざ、発表してみたら3分でちょうどよかったです;;;

早口になってしまい、短くなりました。

テンポをよくしちゃおうかな、とかそんな感じでぽんぽんとやってしまいました。練習のときにも本番と同じテンションで行えるようにしたいですね。おすすめは壁に無って本番のテンションで練習するといいみたいです。けっこうその練習事態が恥ずかしいみたいなので。

懇親会2次回でも少しLTがあったり、とっても楽しく、勉強にもなってすばらしかったです。


後日、Befour、Afterとして、参加する前の資料と
参加した後の資料でどんな変化があったか、書きたいと思います。
 

2011年10月7日金曜日

交渉術学んできた

交渉術を学んできました!

講師は藤田 尚弓先生です。
以下に学んだことをまとめてみたいと思います。

交渉とは…
  • 誰でも子供のころからしている
  • Win-Win交渉ならお互いが幸せ
  • 人生は交渉の連続である
交渉に必要な5つの基本
  1. 交渉幅を考えて、目標を定める
  2. 条件提示は、相手の反応を推測して行う
  3. 譲れる内容をひねりだして考えておく
  4. 悪い情報は開示するタイミングを考える
  5. プランBを考える(NASA風)
1.交渉幅を考えて、目標を定める
  これは、自分の上限下限を決めておけばいいってことです。
たとえば、家を買う時の予算とか、
2000万から2500万の間で収まるようにする、と決めておくとか。

2.条件提示は、相手の反応を推測して行う
相手の交渉幅がいくらかわからない状態で条件を提示するということは、相手に自分の交渉幅が少しでもわかってしまうということ。相手はその条件を見てじっくり考えられる。
だが、その条件でうまく相手を納得させることができれば交渉成功ということもあるため、一概には悪いとはいえない。

3. 譲れる内容をひねりだして考えておく
これが相手を落とすときの切り札、とはならなくても軽いジャブくらいにはなるだろう。
ただし、譲る内容は絶対にどうでもいい内容とすること。
自分にとって譲るととても厳しいことを譲る必要はない。
そのために、どうでもいいことで譲れることがないか真剣に考えておくこと。どうでもいいことなので、真剣に考えないとでてこない。

4.悪い情報は開示するタイミングを考える
不動産屋では、ネットですごくお得そうな物件を掲載していますね。都心で家賃5万で駅まで徒歩2分でオートロックのマンション。いい感じですよね。でも実際話を聞きに行くと、「実は…●●事件があって…」とかわけあり物件だったりするわけです。でもこれで不動産屋にとってはいいのです。実際に店舗まで足を運んでもらったわけですから。他の物件を紹介すればいいのです。
ここでもテクニックがありますね。
まずはひどい物件をみせる。
次に、ほどほどの物件をみせる。
最後に、良い物件をみせると大体きまります。
これを、知覚コントラストといいます。

5.プランBを考える(NASA風)
これも不動産でたとえましょう。
あなたが、家を内見しにいったとしましょう。
もう3件目です。不動産屋もここで決めてほしいと思っています。あなたは悩んでいます。するとそこに、不動産屋の人に電話がかかってきます。なんとこのタイミングでほかにもこの物件を内見したい方がすぐそこにいるというのです。もうすぐそこのドアの外です!!(この場合は電話じゃなくてもベルがなったり。)
そこで、あなたは不動産屋にこういわれます。
「一緒に内見、させていただいてもいいですかね」
しかし、あなたはこの物件がいいと思っています。
もし、後から入ってきたその人が即決でここにします!
といわれてしまったらそれまでなのです。という旨を不動産屋に脅されます。あなたの心境はどうなるでしょうか?きっと今すぐ決めなくては!となったり、他に欲しい人がいるなら譲ってもいい。と今すぐ決断するような心理状況になったのではないでしょうか。
これが、プランBの効果です。
あなた以外にもお客様はいる、取引できるというのをちらつかせるのです。そうすることで不安になります。
実際には外には誰も待っていなくても、こういう一芝居を打たれるだけでコロッとだまされてしまうわけです。

交渉に必要な能力
  • 交渉スキル
  • コミュニケーション
  • 人間力
交渉とは、人間関係から影響を受ける部分が多い
何を頼まれるかより、誰に頼まれるか」である。

ザイアンスの法則
人間は知らない人には攻撃的、冷淡な対応をする

美人、イケメン、お世話になっている人、尊敬している人に頼まれたら少し甘くしてしまいませんか?
なので、大事な交渉をあったばかりの人とすることはとても危険なことなのです。ビジネスライクに丁重にお断りすることが相手には容易にできてしまうのです。
じゃあ、初めての人と交渉だったらどうすればいいの!!もう終わりだわーーー!!!!なんて思わないでください。大丈夫です。次で説明します。

交渉しやすい土壌づくり
  • 知り合いの場合
    知り合いの場合には簡単です。
    自分が相手に何かをしてあげればいいのです。
    日ごろから何か恩を売っておきましょう。
    返報性の法則というのがあり、人は何かを与えられると、
    返さなくてはいけない、という気持ちになります。
    積極的に恩送りをしましょう。
  • 初対面の場合
    挨拶は先攻、自己紹介は後攻で行う。
    そして、共通点を探す。
    これは、後から自己紹介すれば相手の話に合わせて
    いろいろな引出しから自分の自己紹介する内容を決めることができるわけですね。
    相手の話を聞くのが重要です。相手に、この人は話を聞いてくれている、と思わせるの重要です。
    簡単なテクニックだけ紹介します。
    便利な三語
    • そうなんですね
    • さすがですね
    • 質問する(○○とはどんなものですか)
      ほかにも色々ありますが、割愛します。



色々話を割愛します。
以下備忘録をぱぱぱっと残します。

交渉をしないと、いい条件で成立しても、勝者の呪縛にかかってしまい、お互い損した気分になる。


黄金法則
大事なところは譲らない、どうでもいいところをしぶしぶ譲る
⇒あなただから譲った、みたいな小芝居はお互いを幸せにする。

値引きするときとかは複数回にわたってコツコツとする。
そして、徐々に値引きする額を小さくしていく。
そうすると相手もそろそろ限界なんだな、と思う。


不利をいきなり言う必要なし
⇒言うときはさらっという。大したことありませんと思わせる。
⇒ほかの内容がかたまってから、もう後戻りしづらい状況で言う

必要性⇔許容性
どちらか一方だけではだめ、必要性だけいっても相手には通じない。許容しても大丈夫だということまで言うことで相手は安心して決めることができる。

シミュレーション大切!!!!

ハッピー合意か、さわやか決裂
必ずしも交渉は合意する必要はない。
さわやか決裂ならば次もある。
お互いがWin-Winでないならばさわやか決裂でいい。

人は、
メリットよりもデメリットを聞いた時の方が動く!

理由があると成功率アップ!!!
たとえば、行列がある時に、
「急いでいるので割り込ませてください!」
大した理由になってないが、なんでもいいから理由をつけると
成功率があがる。


”でも”とは言わない。否定しない。

交渉にいく際には次のアポはいれない。
自分で自分の首を絞めているだけ。

「言葉は人間が用いる最も強力な麻薬だ」

以上です。
交渉って覚えると楽しいかもしれないですね。
闇雲に話すよりも、お互いが自分のいる場所を納得して進んでいるかのような錯覚でも、安心感がある方が幸せなのかもね。
なんか、マトリックスを思い出した。



2011年10月5日水曜日

Windows7 32bitにRuby1.9.2を入れてみた

Virtual BoxでUbuntuでRubyを触っていこうと思ってたんですが、

バージョンが1.8.6だったり、

irbが起動しなかったり、まぁなんとも微妙な印象を受けたので

Windowsで環境構築してないなってことでWin7に入れてみた。

なんか普通に1.9.2を落としてきて

ぽんぽんぽんっとインストールして

パス通して

という感じですねぇ…

特にトラブルもなく、Winでもいいじゃん!!とか思いました。

ただコマンドプロンプトからだと

なんだか使いづらい感じがあります。

Windows上でRubyの開発環境構築だと何がいいんだろうなー。

RDE?みたいなのもあったような。


徐々にその辺は考えてみます。

いいやつ見つけてどんどん改善!


参考:
http://www.mapee.jp/ruby/ruby191windows.html

2011年10月3日月曜日

SVN入れてみた

TortoiseSVNいれた。

SVNサーバがないんだけれどもw


あと、Ecogrep2をいれた。

よくローカルの情報を検索するときにつかってる。

find とか使ってスクリプト書いたら

もっといい感じなのできるんじゃないのって聞こえてきそう。


現状は力を借りているということで。

ときどき固まるのはなぜかわかりませんが、まぁ我慢して使ってます。



2011年10月2日日曜日

レインボーシックスベガスでの設定

レインボーシックスベガスをプレイする際に


設定が必要だったので簡単にまとめた。

  1. 言語を英語(米国)に設定。
  2. 管理者としてSteamを起動。(Microsoft AppLocaleの設定は不要?)
  3.  レインボーシックス起動
    すごく大雑把にまとめるとこんな感じ。

    参考:

                  2011年9月3日土曜日

                  XP祭りに参加してきた

                  これからは色々残しておきたいこと、勉強したこととかを
                  ブログに書いていこうと思う。 
                   
                  先月のことになります、2011/09/03 (土)
                  
                  
                  早稲田大学の門をくぐろうとしたら駅を間違え、無駄に時間をロス・・・
                  ワセダ=高田馬場 という印象があったので。。。(麻雀の方だった
                  20分くらい歩けばよかったんですけど、20分以上電車に乗りました。
                  
                  こんな始まりで少しぐったりしつつ
                  「XPのワークショップ」に参加しました。
                  
                  "白本"と呼ばれる、この本の読書会を行っている、
                  新宿読書会の方主催のワークショップでした。
                  
                  白本とは、
                  "XPエクストリーム・プログラミング入門―ソフトウェア開発の究極の手法"

                  XPエクストリーム・プログラミング入門―変化を受け入れる

                  これです。
                  
                  第一章と第七章をテーブルごとに読んで、それぞれ
                  感じたこと、わからないこと、なにこれ?って思ったことを
                  話しました。
                  
                  白本をはじめて読みましたが、何言ってるかわかりづらい…
                  そんな言い回しが多かった。
                  しっかり考えることが大切ですね。
                  
                  改めて人の意見をしっかり聞く機会があまりなかったので、
                  定期的にこういった刺激を受けると何か進化する気がします。
                  
                  
                  ワークショップ後は
                  LT祭りでした。
                  
                  テーマは特にきまっていないのですが、
                  今回は皆さんまじめなテーマが多いかもーと思いました。
                  
                  "アジャイル"関連が多かったですね。
                   ・アジャイルサムライ
                   ・闇アジャイラー2.0
                   ・アジャイルナデシコ
                  ますますアジャイルが何かわからなくなった瞬間であります。
                  
                  ほかに感じたことは、発表がうまい、です。
                  LTグランプリみたいなところで優勝しました!という人もいたり、
                  有名人は発表がうまい!法則があると思います。
                  
                  一番驚いたのは、
                  銅鑼の音
                  がぴったり5分で鳴らされて話がすぱっと切れると
                  自然と次が聞きやすいです。
                  
                  銅鑼の音、おすすめです。
                  
                  
                  全てが終わり、懇親会があったのでそれも参加してきました。
                  私はわからなかったのですが有名な人がたくさんいたらしく
                  社長っていう職業の人もたくさんいました。
                  
                  普段は話せないような人とも
                  気軽に話すことができるので良い機会だと思います。
                  
                  毎月こういったイベントは開催されているので
                  余裕がある、冒険したい、そんな方は参加することを
                  強くおすすめします。 
                   
                  投稿を編集