Hatena::ブログ(Diary)

(旧)サンフラットの開発日記 RSSフィード

新しい方の日記(はてなブログ)へ移動

2015/06/12 はてなブログに移行しました このエントリーを含むブックマーク

はてなブログの方に移行してみました。

http://sunflat.hatenablog.com/

2012/12/16

Windows 8 で簡単シャットダウン

Windows 8をシャットダウンするのが面倒臭いので、ショートカットを作った。

以下のファイルを"confirm-shutdown.js"等の名前で作成し

var sh = new ActiveXObject("WScript.Shell");
if (sh.Popup("Are you sure you want to shutdown?",0, "Confirmation", 1+32) == 1) {
    sh.Exec("shutdown -s -t 0")
}

"wscript.exe [confirm-shutdown.jsのパス]"という内容のショートカットを作っておく。起動すると、シャットダウンを確認するダイアログが出る

おまけ1

こっちのほうがいいかも?(試してない)

http://crystaldew.info/2012/07/16/windows-8-sleep-shortcut/


おまけ2

Windows8アプリを出したよ

http://www.sunflat.net/windows/

2012/07/01

Haxe NME

NMEという、Haxe言語用のクロスプラットフォームライブラリがあり、Flash風のAPIを使って書いた単一のコードから、Flash、html5iOSandroidmacwindowsなど、色々なプラットフォーム向けの実行ファイルを出力できる。

JavaScript (中略) ハッカソンに参加したので、NMEを使って生成されたアプリの、いくつかのプラットフォーム上での実行時間を比較してみた。

比較には、id:yoshihiro503さん作のAOBench Haxe版を、NME用に移植したものを使った。ソースはこちら。html5版の生成されたアプリはこちら

f:id:sunflat:20120701203227p:image

実行にかかった時間(ms)

10回(iPhone 4sのhtml5のみ3回)測定した平均値です。

MacBook Pro (15-inch Mid 2010, Core i7 2.66GHz) で実行
html5 (JavaScript) Chrome html5 (JavaScript) Safari Mac nativeアプリ (C++) Flash
1574.1 ms 2812.3 ms 1092.9 ms 3601.8 ms
iPhone 4s で実行
html5 (JavaScript) Safari上 iOS nativeアプリ (C++)
47691.3 ms 7271.2 ms

感想
  • MacのChrome上でのJavaScriptがかなり速い。nativeアプリの1.4倍程度の時間。Flashよりも速い
  • iOSのSafari上でのJavaScriptは、nativeアプリの6.6倍程度の時間。

NME のセットアップメモ

追記:NMEのインストーラを使うと、いくつかの手順やコマンドの名前を省略てきて便利なようです(コメント欄参照)。

haxelibのインストール方法はこちら

Mac上でのNMEのセットアップ手順(うろ覚え)

sudo haxelib install nme
sudo haxelib run nme setup html5
   (jeashライブラリをインストール)
sudo haxelib run nme setup flash
sudo haxelib run nme setup ios
  (XCode4を別途インストール)
sudo haxelib run nme setup mac
sudo haxelib install hxcpp
  (これを忘れると、Source Path "libstd..." does not exists、などのエラーが出る)
sudo /usr/bin/xcode-select -switch  /Applications/Xcode.app/Contents/Developer
  (これを忘れると、/Developer パスが無いと言われる)

実行

haxelib run nme test application.nmml html5
haxelib run nme test application.nmml flash
haxelib run nme test application.nmml mac
haxelib run nme test application.nmml ios

2012/06/05

HaxeでJavaScriptゲームを作ってみた

最近、JSXやHaxeなどのJavaScriptを生成できる言語が流行っているみたいなので、Haxeを少し勉強してみた。

試しに、以前OCaml(ocamljs)で書いたシューティングゲームを、Haxeで書き直してみた。

Haxeの特徴と使い方


Haxeのインストール

  • Mac用のものもhomebrewにあったけど、現時点のバージョンではhaxelibがエラーが出て動かなかった。
    • 追記:@choplin さんが 解決法 を書かれています
  • 結局、Ubuntu 12.04 に入れた
    • Ubuntu標準のリポジトリにあるものは古いけど、haxeのリポジトリを追加すれば最新版をインストールできた
    • 参考: http://haxe.org/installation/ubuntu
    • そのままではライブラリが足りないのか実行時エラーになった
      • libneko0 を追加したら動作した(よく分からん)

実行したコマンド:

sudo add-apt-repository ppa:eyecreate/haxe
sudo apt-get update
sudo apt-get install haxe libneko0

html5ライブラリのインストール

  • haxelibをセットアップする前に、ライブラリ用のディレクトリ(/usr/lib/haxe/lib)を作っておく必要あり

実行したコマンド:

sudo mkdir -p /usr/lib/haxe/lib
sudo haxelib setup
sudo haxelib install html5

コンパイル方法

haxe -lib html5 -js game1.js -main Game1

または、ビルドファイルを使って: haxe compile.hxml


感想

  • 良さげな点
    • ActionScript3やJavaに近い文法なので、似たような感覚で書ける
    • 静的型チェックがあるので、メソッド名の間違いとかのエラーがコンパイル時に分かる
    • 生成されたJavaScriptのコードが読みやすい。インデントもされていて、そのままデバッグに使える
    • 型推論が強力なので、メソッドの引数/返り値の型を多くの場合省略出来る
    • インライン展開もできる
    • 他の言語(AS3/C++/PHP/C#)も出力できるらしい。Java出力も現在開発中らしいので、Androidアプリ開発にも使えそうで期待。
  • 気になった点(単に勉強不足なだけかも)
    • 整数の割り算や、整数用のmin, max, abs関数が、標準で用意されていない???
    • 無名クラスが書けないので、haxe.Timerを継承したクラスを作るために、別の場所に名前付きクラスを書く必要があった
    • インスタンスフィールドの宣言の場所に初期値を書けない。コンストラクタで代入する必要あり

2012/05/26

MSXでプレゼン

MSXでプレゼンしてみました。


プレゼン生成に使ったツールも公開しています:

https://bitbucket.org/sunflat/mlnagoya/

こんな感じのScalaコードから、プチコンのBASIC風の中間形式を経て、こんな感じのMSX-BASICコード(UTF-8版)を生成します。

補足

  • MSX2以降なら、「SHIFT+かな」でローマ字入力できるそうです(Twitterで教えてもらいました)。昔使ってたのはMSX1だったので知らなかった…
  • MSXでは、こんな感じの文字コード(半角ひらがなやグラフィック文字がある)を使っているので、Unicodeからの変換テーブルを作って変換しています
  • 実は、DEF FN文を使って1つの式だけの簡単な関数なら定義できたりします。でも、条件式や再帰などが使えないので、共通の処理をまとめたりするのには使いづらい(代わりにサブルーチンコールを使う)