Home > Archives > 2008-06

2008-06

Flexビルダーにスニペット無い

Flexビルダーにスニペットとかテンプレートって無いんだ。
ショック。あるものだと思っていた。
Eclipseの機能の一部だと思ってたら違うんだ。
JDT(Javaエディタ)ではテンプレート使えるし、アクセサメソッドの自動生成も、もちろんある。
色々ショックだなぁ。FlashDevelopに戻ろうか考え中。

2009/01/14追記
Eclipse MonkeyというEclipseのpluginで実現可能なようです。

アクセサメソッドの自動生成もできるみたい。
【参考URL】
enhance Flex Builder – Rest Term
enhance Flex Builder – part 2 – Rest Term

コードフォーマットはこちら。
mxmlとasのソースコードフォーマットをするplugin Flex Formatter:nod::ぶろぐ:RIA::Flex/AIR/Flash

ActionScript3.0アニメーション

なんだか全くFlashを触っていなくて不安になったので、途中になっていたActionScript 3.0 アニメーションをやっています。
まだまだ途中ですが、この本のChapter8でこういうのが出来ました。本では3つのボールをバネで繋いでますが、何個でも増やせるようにしました。増やしすぎると訳が分からなくなりますが…。
黒いボールはドラッグ出来ます。


ピクチャ 3.png ピクチャ 4.png

バネ運動をやっているのですが、綾取りみたいになって面白い。
やっぱこの本凄い。基本的なところから徐々にレベルアップしていって、無理なく覚えられる。
全部一気に詰め込むのでなくて、細かい部品の作り方を徹底的に教えてくれて、あとでそれを組み立てて大きい面白い物を作ろう、ってかんじ。

欠点は大きくて分厚くて持ち運びに向かないこと。結構余白が残っている印象で、文字も小さくすればかなりコンパクトになると思うけど、見やすさの為しょうがないですね。

ここから先が楽しみ。

今までFlashDevelopでやっていけど、今回はFlexを使った。補完はFlashDevelopの方が使いやすいな。ガンガン補完してくれるんだもん。でもFlexは逐一文法エラーだとかを教えてくれる。
かなりうっかり者の僕にはありがたい。つまらないミスに気付かず何時間もハマルってのが減るかも?
それとリファクタリング機能がやはり便利。これはFlashDevelopには無い。そのうち実装される予定らしい?

一応コードを載せます。
まず、本の至る所で使うBall.as。サンプルのまんま。

package {
	import flash.display.Sprite;

	public class Ball extends Sprite {
		public var radius:Number;
		private var color:uint;
		public var vx:Number = 0;
		public var vy:Number = 0;

		public function Ball(radius:Number=40, color:uint=0xff0000) {
			this.radius = radius;
			this.color = color;
			init();
		}
		public function init():void {
			graphics.beginFill(color);
			graphics.drawCircle(0, 0, radius);
			graphics.endFill();
		}
	}
}

次に、今回用に拡張したBallクラス。

package
{
	public class CustomBall extends Ball
	{
		public function CustomBall(radius:Number=40, color:uint=0x000000)
		{
			super(radius, color);
		}

		private var _isDragging:Boolean = false;
		private var _id:uint;

		public function get isDragging():Boolean{return _isDragging;}
		public function set isDragging(value:Boolean):void
		{
			_isDragging = value;
		}

		public function get id():uint{return _id;}
		public function set id(value:uint):void
		{
			_id = value;
		}
	}
}

最後にメインとなるクラス。
コメントにも書いたけど、macのfirefoxだとstage.stageWidth、stage.stageHeightが0になる。
なんでだ。それとmacのブラウザで見るとCPUを喰ってる。parallels上のwinows版Firefoxは全然CPUを喰わないし、ローカルでの速さとほぼ同じ。なんでなんだ。

package
{
	import flash.display.Sprite;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;

	public class SpringTest extends Sprite
	{
		public function SpringTest()
		{
			init();
		}

		private var balls:Array/* of CustumBall */;
		private var ballNum:int = 5;
		private var friction:Number = 0.95;
		private var spring:Number = 0.05;
		private var springLength:Number = 100;

		private function init():void
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			balls = [];
			for(var i:uint = 0; i < ballNum; i++)
			{
				var ball:CustomBall = new CustomBall(20);
				ball.id = i;//動作確認用

				//trueにすると多少軽くなる?が、エッジが欠ける
				//ball.cacheAsBitmap = true;
				ball.addEventListener(MouseEvent.MOUSE_DOWN, onBallMouseDown);
				ball.addEventListener(MouseEvent.MOUSE_UP, onBallMouseUp);

				//mac firefoxだとstage.stageWidth、stage.stageHeightが0になる
				//ball.x = Math.random() * stage.stageWidth;
				//ball.y = Math.random() * stage.stageHeight;

				var STAGE_SIZE:uint = 600;
				ball.x = Math.random() * STAGE_SIZE;
				ball.y = Math.random() * STAGE_SIZE;
				balls.push(ball);
				addChild(ball);
			}
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}

		private function onEnterFrame(e:Event):void
		{
			for(var i:uint = 0; i < ballNum; i++)
			{
				var ball:CustomBall = CustomBall(balls[i]);
				if(!ball.isDragging)
				{
					for(var j:uint = 0; j < ballNum; j++)
					{
						var objectivePointBall:CustomBall = CustomBall(balls[j]);
						//自分以外のボールに対して位置を調整する
						if( objectivePointBall != ball)
							springTo(ball, objectivePointBall);
					}
				}
			}

			//ラインを引く
			graphics.clear();
			graphics.lineStyle(1, 0x000000);
			graphics.moveTo(CustomBall(balls[0]).x, CustomBall(balls[0]).y);
			for(var i:uint = 1; i < ballNum; i++)
			{
				graphics.lineTo(CustomBall(balls[i]).x, CustomBall(balls[i]).y);
			}
			graphics.lineTo(CustomBall(balls[0]).x, CustomBall(balls[0]).y);
		}

		private function onBallMouseDown(e:MouseEvent):void
		{
			var ball:CustomBall = CustomBall(e.target);
			ball.startDrag();
			ball.isDragging = true;
		}

		private function onBallMouseUp(e:MouseEvent):void
		{
			var ball:CustomBall = CustomBall(e.target);
			ball.stopDrag();
			ball.isDragging = false;
		}

		/**
		 * バネ運動の処理
		 * @param ball 動かす対象のボール
		 * @param objectivePointBall 目標位置とするボール
		 *
		 */
		private function springTo(ball:CustomBall, objectivePointBall:CustomBall):void
		{
			var angle:Number = Math.atan2(objectivePointBall.y - ball.y, objectivePointBall.x - ball.x);
			var targetX:Number = objectivePointBall.x - Math.cos(angle) * springLength;
			var targetY:Number = objectivePointBall.y - Math.sin(angle) * springLength;
			ball.vx += (targetX - ball.x) * spring;
			ball.vy += (targetY - ball.y) * spring;
			ball.x += (ball.vx *= friction);
			ball.y += (ball.vy *= friction);
		}
	}
}

トルコ料理屋でかかっている音楽

シン石丸の電脳芸事ニッキ: トルコ料理屋でかかってる、あのイカス曲は何て曲!!??
似たような曲を知っていたので書いてみます。
コメント欄に書けばいいのですが、トラックバックを打ってみたかったので…。長くなってしまいますし。

もしかして、BasementJaxxのTake Me Back To Your Houseという曲かも?
下記URLで試聴できます。4曲目です。
ベースメント・ジャックス「クレイジー・イッチ・ラジオ」 – Crazy Itch Radio / Basement Jaxx ベガーズ・ジャパン – Beggars Japan

BasementJaxxはトルコっぽい、というかインドっぽい、というか、ムトゥ踊るマハラジャっぽい曲が他のアルバムにもあって、下記のアルバムにもしかしたら入っているかもしれません。
5曲目のJUS 1 Kissも怪しいと思う…。これはあまりトルコっぽくないけど。
ベースメント・ジャックス「ルーティー」 – Rooty / Basement Jaxx ベガーズ・ジャパン – Beggars Japan

HP by Psyop かっこいい

むちゃくちゃかっこいい。


HP Touch Maestro
by firat

ニテンイチリュウさんのRSSフィードより。

::::::PSYOP::::::persuade::change::influence::::::

rails、MySqlインストールでやった事

前回の本で練習するため、mySqlをインストール。

MySqlはMacPortsを使ってMacにMySQLをインストール – 佐藤伸吾(akio0911)のデジタルライフスタイルハック
を参考に。ほぼそのまま。

ただ、
■パスワード設定
■自動起動の設定
■Rails向けのDBとアカウントの作成
はまだやってない。
パスワード設定は本によると設定しないでローカルでの開発は進めてしまうらしい。(賛美両論あると書いてあったけど。)

ダウンロードが凄く重いときは以下を参考に。
MacPorts でダウンロード先のミラーが重くて先に進まない場合の対処方法 – IT戦記
$ sudo port -v install mysql5っていうふうに、v オプションを付けるとダウンロードの経過を見られた。
MacPorts でダウンロード先のミラーが重くて先に進まない場合のまっとうな対処方法 – otsune’s SnakeOil – subtech

次にruby、railsのバージョンを本と同じバージョンにしようとした。
本で使われているバージョンは
rubyが1.8.4(執筆時にrails作者が推奨していたバージョン)。railsが1.2。

sudo port -v install ruby -v 1.8.4
ってやったけど、
ダウンロード先に無いって言われたり、エラーが出たりで結局入らなかった…。
仕方ないからちょい古めの1.8.6でやることに。

一度1.8.7を入れてしまったので、ターミナル上で
1.8.7を無効化
sudo port deactivate ruby @1.8.7-p17_1+mactk+thread_hooks
1.8.6を有効化
sudo port activate ruby @1.8.6-p114_0+darwin_9+mactk+thread_hooks
とやって切り替え。
@以降は僕の環境なので、人によって違います。
でも、@以降を確認できる方法が分からなかった。ruby -vの時とは表示が違う。
じゃぁなんで分かったのかというと、
deactivateとかactivateとかやっている時に、君が持ってるバージョンは
@1.8.6-p114_0+darwin_9+mactk+thread_hooksですよ、みたいなメッセージが出たから。
直接はどう確認するんだろう。

次にrails1.2をインストール。
sudo gem install -v=1.2 rails

≪参考リンク≫
MacPorts覚書 – Railsをインストール | FB2
Rubyのインストール – なかぽん。のMacな日々

rails入門本

以前、コメント欄moriBlogのmoriさんに教えてもらったんですが、RailsによるアジャイルWebアプリケーション開発 第2版を買おうとしていた所、この本の中で扱われているrailsとrubyのバージョンが古い為、新しい本を探した方が良いかも、との事でした。

そして色々調べてみることに。
…しかし、サンプルを作成しながら学ぶ本で、今でもrails2.0以上のバージョンに対応した本はまだまだ少ないよう。
Ruby1.9.0とRails2.0.xがリリースされてしまった現時点で、初心者が Ruby と Rails を勉強するには? – tmaeda 日記
上記リンクは2008年1月3日の記事ですが、今もあまり状況は変わっていない様子。

■他の参考リンク
ヽ( ・∀・)ノくまくまー(2008-05-15)
2008-05-17 – 思っているよりもずっとずっと人生は短い。

ただ、下記の本はrails2.0に対応していた。


"Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~" (Plan de Sens, 清水 智雄)

かなりプログラムの教本としては異色。技術書とは思えないおしゃれさ。内容も悪くはないらしい。デザインの本かと思った。
DBにはrails2.0で標準となるSQLite3を使うようだ。かなりここで悩んだ。rails2.0とSQLiteを習得したほうが良いのかな?とか。

けど、結局安定を求めて、ここは正統派?を選んだ。結局下記のRailsによるアジャイルWebアプリケーション開発 第2版を買い、先のリンクにもある通りバージョンを落として、MySqlと共に勉強することにしました。


"RailsによるアジャイルWebアプリケーション開発 第2版" (Dave Thomas, David Heinemeier Hansson, Leon Breedt, Mike Clark, Andreas Schwarz, James Duncan Davidson, Justin Gehtland)

結局この本になりましたが、moriさん、ご助言有り難うございました!

netbeansでrubyやることにした

いきなりキャプチャを載せます。これ見るだけでも便利さが伝わるかと。

netBeans

以前、eclipseのrubyプラグインをつかっていたものの、
(これは僕の環境のせいなのかもしれないけど、)
これが凄く使いにくい。変なトコでタブが入ったり、
補完も殆ど役に立たたなかった。

んで、検索しているうちNetBeansでのruby開発が凄くやりやすいという情報に当たった。
【連載】Java開発者のためのRuby / Ruby on Rails入門 (2) 困ったときに役立つ! Ruby学習に必須の3点セットを揃える | エンタープライズ | マイコミジャーナル

3. NetBeans for Ruby

さらに、Rubyに特化したNetBeans Rubyが存在する。
こちらではNetBeansからRubyに関係しないものを除いた
「Ruby-Only IDE」というパッケージを提供している。
プロジェクト単位でファイルを管理する機能やコード補完機能等が便利である。

InfoQ: NetBeans: Ruby開発者の新しい親友
ここも見ると分かるとおり、
補完とかすごく充実している。

早速入れた。
NetBeans Ruby
ここのGetting Started With NetBeans Ruby Supportにある
Installing and Configuring Ruby Support
に飛んで、
NetBeans IDE 6.1 ダウンロード
からダウンロード。
もちろんベースIDEとrubyしか入ってないのをダウンロード。
最初から日本語化されてた。

これは快適かも。感覚としてはFlashDevelopに似てる。
≪2008/06/19 2:34 追記≫ FlashDevelopは言い過ぎた。
あんなに自動で補完のポップアップが出る訳じゃないけど。

補完のポップアップに出る説明は日本語にならないかな。
探したけど分からなかった。
javaだとあるみたいなんだけど。

しかし型宣言とか無いのに補完するのって凄いな。
Matz:コード補完を実現しているのがすごい–CodeGear Ruby IDE:ニュース – ZDNet Japan

「Rubyは動的言語なので、IDEを作る人間にとっては”地獄”のはず。
にもかかわらず、コード補完を実現しているのがすごい」(まつもとゆきひろ氏)

上の記事はnetbeansの記事じゃないけど。

<emacsへの憧れ>
やっぱemacsがいいのかな?って思って1日がかりで調べたけど
やり方が分からず。敷居が高すぎた。検索しても、使いこなしている人用の
情報ばかりで、全くの初心者には意味が分からなかった。

ズブの素人からのEmacs入門は厳しい…。
職場とか、すぐ近くに愛用している人がいて、
教えてもらいながらでないとキツイかも。
調べていて、激しく時間をロスしている気分になってしまった。
キーバインドは魅力的だと感じてるて、KeyRemap4MacBookを使ってemacsキーバインドを他のアプリでも使っててて、つかいやすいなーって思うんだけど。

mac版 Flex3、eclipseの日本語入力

Flexビルダーで初めて日本語でコメント入れようとしたら、
インライン入力が出来なくて焦った。
調べてみたらMac版ではインライン入力できないらしい。ショック!

さらに調べたら、eclipseの次期バージョン3.4だとインライン入力が出来るようになったらしい。
晴れ – まさたか日記

早速下記からダウンロードしてインストールした。
Eclipse Project

■2008/06/19追記 最新版は以下からダウンロード。
Eclipse Ganymede RC4 Packages | Eclipse Packages

Flex3をインストール中に、eclipseのディレクトリを指定する際、3.4には対応してません、
といった内容の注意が出たけど、「注意してインストール」を押して普通にインストール出来た。

■更に追記
最新版だとFlexがインストール出来なかった。

結果、無事インライン入力が出来るように。
ちゃんと動くか分からないけど。
もう3度目のeclipse、Flexのインストールだ〜。

eclipseプラグインの形でなければ普通にインライン入力できるのかな?

<2008/06/16追記>
[#ROR-412] Could not create view Ruby Explorer in Eclipse 3.4M4 – ASAP – The Aptana Issues Tracker
ここに報告されてたけど、Eclipse 3.4M4だとredRailsの表示がおかしくなる。
しかたないから3.3に戻そう…。
長年macでeclipse使ってる方は日本語のインライン入力ができなくてもそのまま使ってるのだろうか?

Ads of the World

tumblr見てて知った。
Ads of the World: Creative Advertising Archive & Community | Your Daily Dose of Creativity from Around the World
Ads of the World
かっこいいポスターがいっぱいあった。

dysonのブログパーツがカッコイイ


曲もカッコイイ。
しかし結構CPU消費するな…。常設するにはキツイかな。

Home > Archives > 2008-06

Return to page top