<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>devneko is not cat.</title>
	<atom:link href="http://devneko.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://devneko.net/blog</link>
	<description>simple is cat.</description>
	<lastBuildDate>Sat, 04 Feb 2012 05:48:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>業務でSilverlightとAdobe Flexを使ってみた感想</title>
		<link>http://devneko.net/blog/archives/235</link>
		<comments>http://devneko.net/blog/archives/235#comments</comments>
		<pubDate>Sat, 04 Feb 2012 05:48:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=235</guid>
		<description><![CDATA[ここ１年でSilverlightとAdobe Flexをフロントに据えたプロジェクトを経験した。もちろん実業務で。 感想箇条書き ・Flexバグ多すぎ。Silverlightの品質が良いのではない。Flexの品質が圧倒的に悪い。 ・FlexはUIコンポーネントだけでなく、コンパイラも誤ったエラー検出をしたりする。 ・AS3(ActionScript3.0)よりはC#の方が使いやすかった。クロージャの記述やコレクションなどはC#の方が楽だった。 ・XMLの扱いはe4xのあるAS3の方が楽。 ・AdobeはFlex捨てた。(AdobeはHTML5に注力すると宣言したうえ、FlexはApacheに寄贈された) ・Silverlightもしばらくしたら消えるだろうけれど、開発スタイルはWinRTなどへ引き継がれるし移行もおそらく簡単。 ・SilverlightのMVVMはなかなか良い。 まとめ： SilverlightかFlexかだったらSilverlight一択。Flexは既に死んでいる。]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/235/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlexのAlert.show()でテキストが折り返される問題の回避。</title>
		<link>http://devneko.net/blog/archives/230</link>
		<comments>http://devneko.net/blog/archives/230#comments</comments>
		<pubDate>Sun, 18 Dec 2011 11:34:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=230</guid>
		<description><![CDATA[Alert.show()を使った場合、ダイアログの縦幅、横幅の最大サイズが設定されているおかげで想定外の表示を してしまう場合がある。これを回避するために、Alertの拡張などを考えたのだけれど、肝心な部分がmx_internalだったり privateだったりして、うまく拡張できなさそうだった。結局は一から作るハメになる。Flexではよくあること。 とりあえず MessageBox.mxml を作って以下を実現した。 ・最大height,widthの拡張 ・最大heightを越える場合はスクロールバーを表示。 ただのPanelを継承してるだけなので、あとは自由にカスタマイズできる。]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AdvancedDataGridでセルの内容をコピーするには。セル選択モード、階層データ対応。</title>
		<link>http://devneko.net/blog/archives/228</link>
		<comments>http://devneko.net/blog/archives/228#comments</comments>
		<pubDate>Wed, 07 Dec 2011 15:18:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=228</guid>
		<description><![CDATA[AdvancedDataGridでセルの内容をコピーする方法は各所で紹介されているが 階層データやセル選択モード(MULTIPLE_CELLS)に対応しているものがない。 いろいろ試行錯誤した結果、AdvancedDataGridを継承して、下記のようなコードを書けば 選択中のセルの情報を取得できそうなことがわかった。 最初はlistItemsを使おうと思ったのだけれど、listItemsは基本的に表示中のアイテムしか 保持していないため、選択中のデータの取得には使えなかった。 それにしても、この程度のことが簡単にできないFlexにちょっと萎えた。 public var selectedCellDatas:Array = []; override protected function addCellSelectionData(uid:String, columnIndex:int, selectionData:AdvancedDataGridBaseSelectionData):void { var column:AdvancedDataGridColumn = columns[selectionData.columnIndex] as AdvancedDataGridColumn; var label:String = column.itemToLabel(selectionData.data); selectedCellDatas.push({ rowIndex: selectionData.rowIndex, columnIndex: selectionData.columnIndex, label: label }); super.addCellSelectionData(uid, columnIndex, selectionData); } override protected function clearCellSelectionData():void { selectedCellDatas = []; super.clearCellSelectionData(); }]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/228/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AdvancedDataGridでコンテキストメニューを開いた位置の列と行を取得する。</title>
		<link>http://devneko.net/blog/archives/224</link>
		<comments>http://devneko.net/blog/archives/224#comments</comments>
		<pubDate>Tue, 29 Nov 2011 16:44:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=224</guid>
		<description><![CDATA[AdvancedDataGridにコンテキストメニューを開いた位置を取得したいときがあるのだが、なかなかうまい方法がなかった。 itemRollOverが発生した時に行と列を保存しておくという手法がちらほら書かれているが、試してみたところうまく機能しない場合があった。 稀にロールオーバーのイベントが飛んで来ずに、マウスのポイントしている位置とコンテキストメニューを開いた時に取得できる位置がずれてしまう。 そこで別の方法を探すことにしたのだが、なかなか良さそうな方法を見つけた。 AdavancedDataGridはデフォルトの状態で、マウスがポイントしている行やヘッダの背景色を変更する。 この背景色を変える処理を参考にして、ポイントしている位置を取得すればいい。 AdvancedDataGridはソースコードが公開されているので、mouseOverHandler()の実装を参考にして うまくマウスのポイント位置から行と列を取得することができた。 この下記のサンプルだとコンテキストメニューのアイテムをクリックしたときに保存された行と列の情報にアクセスしているが コンテキストメニューを開いた瞬間のマウスポイント位置のデータをうまく取得できる。 どうやら、コンテキストメニューを開いたあとはAdvancedDataGridのmouseOverHandler()が呼び出されないらしい。 もしメニューが開いたあともmouseOverHandler()が呼ばれる場合はContextMenuEvent.MENU_SELECTの発生時に データを他に逃がす処理などを入れなければならなかったが、その必要はなくシンプルに実装できた。 &#60;?xml version="1.0" encoding="utf-8"?&#62; &#60;mx:AdvancedDataGrid xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="advanceddatagrid1_creationCompleteHandler(event)"&#62; &#60;fx:Declarations&#62; &#60;/fx:Declarations&#62; &#60;fx:Script&#62; &#60;![CDATA[ import mx.controls.Alert; import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; import mx.controls.listClasses.IDropInListItemRenderer; import mx.controls.listClasses.IListItemRenderer; import mx.events.FlexEvent; [Bindable] public var mouseOveredHeaderColumn:AdvancedDataGridColumn; [Bindable] public var mouseOveredColumn:AdvancedDataGridColumn; [Bindable] public var mouseOveredRow:int = -1; override protected function mouseOverHandler(event:MouseEvent):void { mouseOveredHeaderColumn <a href='http://devneko.net/blog/archives/224'>[...]</a>]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/224/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BigDecimalの演算速度を検証してみた。</title>
		<link>http://devneko.net/blog/archives/219</link>
		<comments>http://devneko.net/blog/archives/219#comments</comments>
		<pubDate>Thu, 17 Nov 2011 14:45:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=219</guid>
		<description><![CDATA[BigDecimalの演算速度を検証しました。 検証の結果、以下のことがわかりました。 ・ div/reminder は遅い ・ doubleのコンストラクタを使うと遅い ・ longのコンストラクタでも毎回newすると計算時間が増える。(まぁあたりまえだけど) ・ 桁が増えると遅くなる BigDecimalは桁数に応じて内部データの持ち方を変えるようです。 桁が大きくなればなるほど遅くなると思われます。 データがintで表せる数である場合とlongで表せる数値の場合ではガクッと計算速度が変わります。 検証方法： Core i 5 2500K 3.2GHz のマシンで100万回単純計算 検証コード： import java.math.BigDecimal; import java.math.MathContext; public class Main { public static void main(String[] args) { long start,end; int repeat = 10000 * 100; start = System.currentTimeMillis(); testAdd1D(repeat, 100000); end = System.currentTimeMillis(); System.out.println("add1 loop内new double <a href='http://devneko.net/blog/archives/219'>[...]</a>]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/219/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>子ノード(childrenField)の判定を柔軟に行えるIHierarchicalData実装</title>
		<link>http://devneko.net/blog/archives/214</link>
		<comments>http://devneko.net/blog/archives/214#comments</comments>
		<pubDate>Wed, 16 Nov 2011 14:14:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=214</guid>
		<description><![CDATA[AdvancedDataGridにXMLをdataProviderとして与えてツリー表示をする場合などに、HierarchicalDataを使います。 HierarchicalData#childrenFiedlで子ノードを格納する要素名を指定できるのですが、特に表示用に作ったわけでもないXMLである場合、子ノードを 格納する要素の名前が同じであるとは限りません。この場合、childrenFieldでは対応できなくなります。 そこで、子ノードの判定を行う関数を指定できるIHierarchicalDataの実装があると便利です。 というわけで作ってみました。コンストラクタで判定関数を指定できるようになっています。 あと、Xmlに特化している分、HierarchicalDataより高速に動くというメリットもあります。(たぶん) import flash.events.EventDispatcher; import mx.events.CollectionEvent; import mx.events.CollectionEventKind; import mx.collections.IHierarchicalData; public class XmlHierarchicalData extends EventDispatcher implements IHierarchicalData { private var _source:XMLList; private var getChildrenFieldName:Function; public function XmlHierarchicalData(value:XMLList, childrenNameFunc:Function) { source = value; getChildrenFieldName = childrenNameFunc; } public function get source():XMLList { return _source; } public function set source(value:XMLList):void { _source = <a href='http://devneko.net/blog/archives/214'>[...]</a>]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/214/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlexのTitleWindowを代替オブジェクトでリサイズする。</title>
		<link>http://devneko.net/blog/archives/210</link>
		<comments>http://devneko.net/blog/archives/210#comments</comments>
		<pubDate>Tue, 15 Nov 2011 22:12:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=210</guid>
		<description><![CDATA[FlexのTitleWindowをリサイズ可能にする方法が各所でとりあげられています。 しかし、低スペックマシンで中身が一杯あるTitleWindowをリサイズするとマウス移動のたびに再描画が発生して激重だったりします。 そこで、代替オブジェクトを使ってMOUSE_UPイベントが来たときだけリサイズすることで、この問題を回避することを考えました。 とりあえず、代替オブジェクトを使ってリサイズするTitleWindowが下記です。(リサイズの実装は適当) これを各所で紹介されているリサイズの実装と組み合わせれば、軽いリサイズができると思います。 &#60;?xml version="1.0" encoding="utf-8"?&#62; &#60;mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="680" height="494" initialize="titlewindow1_initializeHandler(event)"&#62; &#60;fx:Declarations&#62; &#60;!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 --&#62; &#60;/fx:Declarations&#62; &#60;fx:Script&#62; &#60;![CDATA[ import mx.core.*; import mx.events.CloseEvent; import mx.events.FlexEvent; import mx.managers.PopUpManager; private var dragProxy:Sprite; protected function titlewindow1_initializeHandler(event:FlexEvent):void { dragProxy = new Sprite(); this.addEventListener(CloseEvent.CLOSE, onClose); this.systemManager.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); this.systemManager.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); this.systemManager.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); this.rawChildren.addChild(dragProxy); } private function <a href='http://devneko.net/blog/archives/210'>[...]</a>]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/210/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AdvancedDataGridでComboBoxを使う。</title>
		<link>http://devneko.net/blog/archives/207</link>
		<comments>http://devneko.net/blog/archives/207#comments</comments>
		<pubDate>Thu, 10 Nov 2011 13:24:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=207</guid>
		<description><![CDATA[AdvancedDataGridにComboBoxを表示するためのコンポーネント「AdvancedDataGridComboBoxColumn」を作成してみました。 実際にComboBoxを使う場合、[{ラベル,データ値},{ラベル,データ値}・・・] というデータ構造でComboBoxに表示するラベルと実際の値を表現できると便利です。 AdvancedDataGridComboBoxColumnはそこらへんも考慮に入れて汎用的な作りにしました。 _labelFunction()内のデータ値の比較は少し乱暴(toStringして===)かもしれませんが、ほとんどの場合はこれで足りると思います。 パッケージ：net.devneko.components ファイル名：AdvancedDataGridComboBoxColumn.mxml &#60;?xml version="1.0" encoding="utf-8"?&#62; &#60;mx:AdvancedDataGridColumn xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" editorDataField="value" labelFunction="_labelFunction"&#62; &#60;fx:Script&#62; &#60;![CDATA[ // ComboBoxの値とラベルのペアー [Bindable] public var valueLabelMap:Array = []; // valueLabelMapの値を示すフィールドの名前 [Bindable] public var comboBoxDataField:String = "data"; // valueLabelMapのラベルを示すフィールドの名前 [Bindable] public var comboBoxLabelField:String = "label"; // valueLabelMapに該当しない値であるときのラベル public var defaultLabel:String = ""; // コンボボックスで値を設定していない場合の値 public var comboBoxDefaultValue:Object = <a href='http://devneko.net/blog/archives/207'>[...]</a>]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/207/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>無料ではじめるFlex</title>
		<link>http://devneko.net/blog/archives/204</link>
		<comments>http://devneko.net/blog/archives/204#comments</comments>
		<pubDate>Fri, 14 Oct 2011 16:13:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/blog/?p=204</guid>
		<description><![CDATA[FlexってAdobe製品を買わないと開発できないと思ってたんですが、そうでもないみたいです。 Flexの開発に必要な基本ツール群であるFlexSDKはAdobeのサイトで無料配布されています。 かといって、IDEがないんじゃ辛いわけですが、それもありました。 FlashDevelopというオープンソースIDEがあるようです。 とりあえずFlashDevelopとFlexSDKをダウンロード。 FlashDevelopはインストーラ形式なのでNextを押しまくって標準インストール。 FlexSDKは解凍して当方Windows7(64bit)なのでAppData\Roamingに放り込みました。 FlashDevelopを起動して[Project -> New Project -> Flex4 Project]を選びウィザードに従ってプロジェクトを作成。 とりあえず実行してみると Java のスタックトレースが吐かれました。 BadImageFormatException　です。 どうやら JAVA_HOME に設定している JRE が 64bit版になっているのがいけないようなので JAVA_HOMEを32bit版に向けてFlashDevelopを再起動したところうまくいきました。 Hello WorldがわりにMain.mxmlに適当にどこかからもってきた下記のコードを貼りつけて実行するとちゃんとでました。 &#60;mx:Button id=&#8221;myButton&#8221; label=&#8221;I&#8217;m a button!&#8221; /&#62;]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/204/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chrome14で縦書きの文章にルビ(ruby)を振るとずれる</title>
		<link>http://devneko.net/blog/archives/197</link>
		<comments>http://devneko.net/blog/archives/197#comments</comments>
		<pubDate>Mon, 19 Sep 2011 05:01:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://devneko.net/?p=197</guid>
		<description><![CDATA[CSS3の縦書きを試していたところ、ルビの位置がずれることに気づいた。正常な位置より1文字分ほど上からルビがふられてしまう。 現象を確認したのは「Chrome 14.0.835.163 m」 おそらくChromeのバグと思われる。 参考にしていたページでは正常に表示できているので、色々実験して調べてみたところ scriptタグの有無で表示位置が変わってしまうことがわかった。 scriptタグは完全な空でなければなんでもよく、空白なり改行があればルビは正常に表示された。 もしルビの位置がずれて困っている人がいたら、headタグ内に下記のコードを入れたら治るかも知れない。 &#60;script language="Javascript"&#62; &#60;/script&#62; 正常に表示されるサンプル]]></description>
		<wfw:commentRss>http://devneko.net/blog/archives/197/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
