TOYOTA 86 エンジン始動時の動画
TOYOTA 86 のエンジン始動時の動画です。
レブカウンターの設定は 6900rpm でランプとブザー音で知らせるようにしました。
なかなか凝った演出で笑えてきますね。
いくつになってもこういったのは好きです。(*^o^*)
TAGS: Motor | 2012年5月31日12:01 PM | Comment : 0
2012年 5月
TOYOTA 86 のエンジン始動時の動画です。
レブカウンターの設定は 6900rpm でランプとブザー音で知らせるようにしました。
なかなか凝った演出で笑えてきますね。
いくつになってもこういったのは好きです。(*^o^*)
TAGS: Motor | 2012年5月31日12:01 PM | Comment : 0
我が家に新車がやってきました(^o^)
これまでにも今乗っている車が古くなってきたので買い換えようとしてましたが
いまいち踏み切れずにずるずると今日に至ってました。
と言うのも、我が家には軽自動車があり、私の趣味の延長線上に通勤用も兼ねて普通自動車もあります。
プリウス、MINI、S2000、Z、等いろいろ今までも候補はあったのですが家族の意見を聞き入れると
どれも誰かが嫌がる(;´Д`)
ある日セールスが東京モーターショウに出展している「TOYOTA 86」の冊子を持ってきてくれました。
懐かしのクーペスタイルです!
スバルとの共同開発ということで水平対向エンジンを積んでいます。
しかもヨタハチと同じ FR です。
このパッケージングは世界的にみてもあまり存在しないものですね。
私はクーペスタイルが好きなので駄目元で家族に意見を聞いてみました。
意外にも駄目とか MINI の時みたいに変な顔とか言われませんでした。
後席なんかただ付いてるだけのものなのに・・・
快適に座れると思っているのだろうか?
この情報は無かったことにして直ちに予約を入れました。
オレンジ色が良かったのですが約1名様に大反対されたのでそこは妥協してガンメタにしました。
待つこと約4ヶ月!
今日やっと納車されました(^_^)v
残念ながら TRD パーツは受注に対して生産が追いついてないらしく7月頃に入荷予定になりました。
今日ちょっとだけ乗ってみたんだけどノーマルでもかなり良い足回りです。
ファミリーカーとしてはきついけどモリゾーさんがスポーツカーと位置づけていたので OK です!
TRD パーツが入荷するまでは開発者のセッティングを堪能することにします。
TAGS: Motor | 2012年5月30日8:07 PM | Comment : 0
JDK 8 で採用される予定の Lambda についていろいろ調べているんですが
今回は Virtual Extension Methods または Defender Methods と言われている?
新たな(都合の良い?)ものについて調べてみました。
インタフェースを実装する場合 JDK 7 までは全てのメソッドを実装する必要でしたよね。
JDK 8 ではデフォルト実装を定義できるらしいんです。
具体的には次のプログラムを見てください。
jp\yucchi\virtual_extension_method_1\Virtual_Extension_Method_1.java |
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 |
package jp.yucchi.virtual_extension_method_1; interface Hello { void sayHello(); void sayHelloDefaulter() default { System.out.println("Default from interface : Hello World!"); } } public class Virtual_Extension_Method_1 { public static void main(String[] args) { HelloImplementer helloImpl = new HelloImplementer(); helloImpl.sayHello(); helloImpl.sayHelloDefaulter(); } } class HelloImplementer implements Hello { @Override public void sayHello() { System.out.println("Hello World!"); } } |
今までだったら sayHelloDefalter() メソッドを HelloImplementer クラスが実装していないので
コンパイルエラーになったはずですよね。
JDK 8 ではメソッドに defalt キーワードを付けることによって
デフォルト実装されます!
実際に動かしてみました。
ちゃんと動いてます。
もちろん、デフォルト実装されたメソッドも!
ここでちょっと疑問が・・・
デフォルト実装されたメソッドってオーラーライドできるの?
コードを次のように変更しました。
jp\yucchi\virtual_extension_method_1\Virtual_Extension_Method_1.java |
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 |
<font size="4"><span class="keyword-directive">package</span> jp.yucchi.virtual_extension_method_1; <span class="keyword-directive">interface</span> <span class="ST0">Hello</span> { <span class="keyword-directive">void</span> <span class="ST0">sayHello</span>(); <span class="keyword-directive">void</span> <span class="ST0">sayHelloDefaulter</span>() <span class="keyword-directive">default</span> { System.<span class="ST1">out</span>.println(<span class="character">"</span><span class="character">Default from interface : Hello World!</span><span class="character">"</span>); } } <span class="keyword-directive">public</span> <span class="keyword-directive">class</span> <span class="ST0">Virtual_Extension_Method_1</span> { <span class="keyword-directive">public</span> <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> <span class="ST2">main</span>(String[] args) { HelloImplementer helloImpl = <span class="keyword-directive">new</span> HelloImplementer(); helloImpl.sayHello(); helloImpl.sayHelloDefaulter(); } } <span class="keyword-directive">class</span> <span class="ST0">HelloImplementer</span> <span class="keyword-directive">implements</span> Hello { @Override <span class="keyword-directive">public</span> <span class="keyword-directive">void</span> <span class="ST0">sayHello</span>() { System.<span class="ST1">out</span>.println(<span class="character">"</span><span class="character">Hello World!</span><span class="character">"</span>); } @Override <span class="keyword-directive">public</span> <span class="keyword-directive">void</span> <span class="ST0">sayHelloDefaulter</span>(){ System.<span class="ST1">out</span>.println(<span class="character">"</span><span class="character">Defautler overridden from class : Hello World!</span><span class="character">"</span>); } }</font> |
それでは実行させてみます。
ちゃんとオーバーライドされてますね!(^^)
なかなか面白いですね。
この Virtual Extension Methods は Lambda を実装するのにおまけではなく
必要不可欠な実装らしいです。
私は Lambda のことはまだほとんど解りませんが JDK 8 がリリースされるのが少し楽しみになってきました。(*^_^*)
TAGS: Java | 2012年5月25日5:56 AM | Comment : 0
今日は皆既日食を見ることができた。
ただ、どうせ天気が良くなくて見られないだろうと思っていた私は日食グラスなるものを購入してなかった。
朝、目覚めた(起こされた)私は唖然とした。
快晴じゃん!
しかたないからサングラスに車の窓にはるフィルムのあまりを貼って光の透過率を調整した。
テレビで蛍光灯の光がうっすらでも見えるものはダメとかいってたので見えない状態まで貼った。
こんなので大丈夫かなと思いつつ見てみると・・・
太陽の力 恐るべしでした。
皆既日食 綺麗でした(^^)
もう、私が生きてる間に見ることはないだろう。
冥土の土産にいいものを見ることができて幸せだ。
2012年5月21日7:49 AM | Comment : 0
今朝から作ったプログラムを Lambda を使うように変更しようといろいろ調べてた。
そしたら以前 Fork/Join フレームワークについて調べていたときに発見したコードを目にした。
確か IBM のサイトにあった記事だがどうやらちょくちょくサンプルにあがってくるコードらしい。
日本語で Lambda の解説をしてくれているサイトにもあった。
ある年の学生のハイスコアを見つけ出すプログラムだ。
それを参考にしてこんなプログラムを組んでみた。
一番大きなバストを調べるプログラムだ。
ただし年齢制限を設けた。
16歳以上、26歳未満だ。
Java 7 でのコードは次のようになります。
jp\yucchi\hello_lambda_2\Hello_Lambda_2.java |
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 |
package jp.yucchi.hello_lambda_2; import java.util.ArrayList; import java.util.List; public class Hello_Lambda_2 { public static void main(String[] args) { List<Lady> ladies = new ArrayList<>(); ladies.add(new Lady(80, 20)); ladies.add(new Lady(70, 14)); ladies.add(new Lady(85, 30)); ladies.add(new Lady(90, 24)); ladies.add(new Lady(100, 10)); int maxBust = 0; for (Lady l : ladies) { if (l.age > 15 && l.age < 26) { if (l.bustSize > maxBust) { maxBust = l.bustSize; } } } System.out.println("16歳以上、26歳未満で一番大きな胸のサイズは" + maxBust + "です。"); } private static class Lady { int bustSize; int age; public Lady(int bustSize, int age) { this.bustSize = bustSize; this.age = age; } } } |
実行結果は
run:
16歳以上、26歳未満で一番大きな胸のサイズは90です。
構築成功 (合計時間: 0 秒)
期待通りの結果となります。
次にこれを Lambda を使ってみます。
jp\yucchi\hello_lambda_2\Hello_Lambda_2.java |
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 |
package jp.yucchi.hello_lambda_2; import java.util.ArrayList; import java.util.List; public class Hello_Lambda_2 { public static void main(String[] args) { List<Lady> ladies = new ArrayList<>(); ladies.add(new Lady(80, 20)); ladies.add(new Lady(70, 14)); ladies.add(new Lady(85, 30)); ladies.add(new Lady(90, 24)); ladies.add(new Lady(100, 10)); int maxBust = ladies.filter(l -> l.age > 15 && l.age < 26) .map(l -> l.bustSize) .reduce(0, (left, right) -> Math.max(left, right)); System.out.println("16歳以上、26歳未満で一番大きな胸のサイズは" + maxBust + "です。"); } private static class Lady { int bustSize; int age; public Lady(int bustSize, int age) { this.bustSize = bustSize; this.age = age; } } } |
なんか見慣れないものがちらほらありますね。
実行結果は
Good! (^^)
この部分が JDK 8 の新兵器 Lambda ですね。
1 2 3 |
int maxBust = ladies.filter(l -> l.age > 15 && l.age < 26) .map(l -> l.bustSize) .reduce(0, (left, right) -> Math.max(left, right)); |
見慣れないメソッドの正体は
filter メソッド : コレクションの要素のフィルタリングをする優れものです。
引数の Predicate オブジェクトの eval メソッドの戻り値が true の要素だけをフィルタリングします。
map メソッド : 新しいコレクションを作り直すメソッドです。
Mapper オブジェクトの map メソッドの戻り値を新たな要素としたコレクションを作ります。
reduce メソッド : 要素を減らして、最終的に一つにするためのメソッドです。
以上のように Lambda を使うポイントを少しだけ知ったつもりになった。(^0^;)
もっと詳しく知りたい方は参考にさせていただいたというよりは、まるっといただいたサイトを紹介します。
こちらのサイトが勉強になります。
ただし、上記のプログラムでパラレル処理をする方法も載っていましたが
なんと エラー になってしまいます。
Lambda はまだ開発途中なので紹介したサイトの情報もいつまで有効なのかは解りません。
日本語の情報はまだまだ少ないようなので、英語が得意な方は英語サイトをググって情報収集したほうがいいかもです。
TAGS: Java | 2012年5月20日10:20 PM | Comment : 0