ECB + CEDET

EmacsにはECB(Emacs Code Browser)という便利なパッケージがありまして、これを使うとEclipseのようなIDEを構築できるんですね。昔からあるので使ってる人も多いと思いますが。最近はもう開発止まったのかなぁ…


なんて思っていたら、しっかりバージョンアップして2.40になってましたね。いや4年ぶりですか、驚いた(笑)ちなみにこのバージョンではCEDET1.0 pre6が必須となってますね。

AspireOneにUbuntuNetbookRemix導入

Ubuntu9.0.4のNetBook Remix(UNR)がリリースされ、さっそく手持ちのAspire Oneに入れてみました。


必要な物


だけかな?とりあえずAspire One上でWindowsを起動して、UNRのイメージファイルをダウンロードします。ここを参考にすれば必要な情報はそろうでしょうか。

Installation/FromImgFiles - Community Help Wiki

作業するプラットフォームにもよりますが、WindowsLinux上で行うならUSBメモリにBootableにImageを書き込むGUIツールがあるのでそれを利用すると早いでしょう。MacOSXの場合はddコマンドを使って書き込みます。


あとはAspireOneを再起動し、起動画面でF12を押すと起動デバイスを選択できるので、そこでUSBメモリを選択するだけです。実に簡単ですね。パーティションに関しては、Installerの手順の中で任意のサイズで動的に使用領域を設定できるので、問題ありません。最近はNTFSもInstallerから設定できるようになったんですね。便利な時代です。


さて、実際に使ってみた感想ですが…実にイイです!ヤバイ!とにかくサクサク動くのでぶっちゃけこっちをメインにしても問題ないぐらいのレベルです。いやー快適だなぁ。ただ、うちだけの問題かもしれませんが…バッテリーが全然持ちませんwww実動1時間です。なぜ?ただ単にバッテリーがへたって来てるのかなぁ…消費が速すぎて出先でもちょっとしか使えません。残念すぎる…

Flex/AIRでのコンテキストメニュー実装

いやいや、ハマりましたよ…名前が似てるっつうかまぎらわしいっつうか…

var contextItem:ContextMenuItem = new ContextMenuItem("hoge");
hoge.addEventListener(ContextMenuEvent.MENU_SELECT, function(eve:ContextMenuEvent):void
  {
    trace("selected context menu hoge");
  });

var context:ContextMenu = new ContextMenu();
context.customItems.push(hoge);

//ビューのcontextMenuに新しく作ったcontextMenuオブジェクトを登録
this._view.contextMenu = context;

これで無名関数のtraceが実行されるかと思いきや、実行されない。なぜ!と思ってリファレンスみたらContextMenuEvent.MENU_SELECTとContextMenuEvent.MENU_ITEM_SELECTは全然別物だった…まあ、私の不注意と言えば不注意なんですが…

menuItemSelect

イベントオブジェクトの型: flash.events.ContextMenuEvent
ContextMenuEvent.type property = flash.events.ContextMenuEvent.MENU_ITEM_SELECT

ユーザーがコンテキストメニューからアイテムを選択したときに送出されます。ユーザーは、ポインティングデバイスの第 2 ボタンをクリックすることにより、コンテキストメニューを生成します。

menuSelect

イベントオブジェクトの型: flash.events.ContextMenuEvent
ContextMenuEvent.type property = flash.events.ContextMenuEvent

ユーザーが最初にコンテキストメニューを生成したときに、コンテキストメニューの内容が表示される前に送出されます。

ということなので

var contextItem:ContextMenuItem = new ContextMenuItem("hoge");
hoge.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(eve:ContextMenuEvent):void
  {
    trace("selected context menu hoge");
  });

として、無事解決

Flex/AIRでアプリを作る際に、ネイティブなメニューを作成する方法。

WindowsではWindow毎にメニューが存在するため、NativeWindow.supportsMenuの値がtrueになります。逆にMacではNativeApplication.supportsMenuがtrueになります。これを利用してNativeMenuのインスタンスを用意します。

//Windowsの場合
if(NativeWindow.supportsMenu) {
  var _menu:NativeMenu = new NativeMenu();
}

//Macの場合
if(NativeApplication.supportsMenu) {
  var _menu:NativeMenu = NativeApplication.nativeapplication.menu;
}

OSXではnativeapplication.menuを利用した場合に、デフォルトで用意される項目があります。よく使う「ファイル」や「編集」ですね。

この既存のメニューに項目を追加します。上記の方法でNativeMenuを用意した後で

var _item:NativeMenuItem = new NativeMenuItem("ほげほげ");
_menu.getItemAt(0).submenu.addItemAt(_item, 2);

とすると

となります。

ちょ!はてなのpre記法にactionscript無いのかよ!

package util
{
  import flash.errors.IllegalOperationError;
  import flash.events.EventDispatcher;
  import flash.filesystem.File;

  public class ExperimentalPreferenceManager extends EventDispatcher
  {
      private static var _instance:ExperimentalPreferenceManager;
      private static var _internallyCalled:Boolean = false;
      public function ExperimentalPreferenceManager()
      {
        if(_internallyCalled) {
          _initializedConfiguration();
          _internallyCalled = false;
        } else {
          throw new IllegalOperationError("Use EgetInstance() to get the instance");
        }
  }

なんで、あんなドマイナーな言語がいっぱいあるのにactionscriptが無いんだ…orz