Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Jubatus
Jubatus の運用を行う際によく欲しくなるツールを jubatus-utils としてまとめて公開しました。

現在、以下の 4 つのコマンドを提供しています。
  • jubafetch: Jubatus のメモリ上に構築された学習モデルを、指定したファイルに保存 (save) / 指定されたファイルから復元 (load) することができます。クラスタ構成の Jubatus に対して一括で save/load することもできます。
  • jubamodel: Jubatus の学習モデルファイル (バイナリ) の内容をダンプして表示します。
  • jubatop: top コマンドのようなインタフェースで Jubatus サーバやクラスタのステータスを表示します。
  • jubacfg: jubaconfig コマンドを使い易くするラッパーコマンドです。
Jubash と併せて、活用していただければと思います。
Category: Xojo
Xojo IDE の undocumented feature ですが、/tmp/XojoIDE に Unix Domain Socket が配置されています。ここにスクリプトを流し込むと、コマンドラインから IDE スクリプトを実行することができます。自動ビルドなどに便利です。
$ cat test.txt
Print "Hello"

$ cat test.txt | nc -U /tmp/XojoIDE
Category: Xojo
Xojo の UAC 周りのノウハウです。

ボタンに UAC ロゴを描画する

ボタンに UAC のロゴを描画するには、SendMessage Win32 API を使ってボタンに BCM_SETSHIELD メッセージを送信します。ボタンの Open イベントハンドラに以下のように記述します。
Sub Open()
#If TargetWin32
Soft Declare Function SendMessage Lib "User32" Alias "SendMessageW" _
(hWnd As Integer, Msg As UInt32, wParam As Integer, lParam As Integer) As Integer
Const BCM_SETSHIELD = &h0000160C
Call SendMessage(Me.Handle, BCM_SETSHIELD, 0, 1)
#EndIf
End Sub

上記のように、他の Windows アプリと同様のアイコンが描画できます。

UAC を使って外部プロセスを起動する

UAC を使って外部プロセスを昇格させて起動するには、ShellExecute 関数を使います。その際、Verb として runas を指定します。
例えば、ここでは DNS キャッシュを flush する操作を行っています。SW_HIDE などはお好みで。
Sub Action()
#If TargetWin32
Soft Declare Function ShellExecute Lib "Shell32" Alias "ShellExecuteW" _
(HWND As Integer, verb As WString, file As WString, params As WString, directory As WString, cmd As Integer) As Integer

Const SW_HIDE = 0
Dim result As Integer = _
ShellExecute(0, "runas", SpecialFolder.System.Child("ipconfig.exe").ShellPath, "/flushdns", SpecialFolder.System.ShellPath, SW_HIDE)

If result <= 32 Then // 32 より大きい値であれば成功
MsgBox "failed: " + str(result)
End If
#Endif
End Sub
Category: Xojo
昨年 5 月から途絶えていた Xojo 勉強会 @ 東京に参加してきました。
今回はアルファサード株式会社さんの東京オフィスの会議室で開催されました。 (駅近で快適な環境をありがとうございました!)

2014 年の Xojo トピック

今年の主なトピックは以下とのこと。盛りだくさんで楽しみです。合わせて BKeeney Software 社の Xojo Guesses for 2014 を読むと面白いでしょう。
  • Xojo Cloud
    • Xojo Web アプリのホスティング。近日登場予定 (早ければ 2014r1 or r2?)。価格未定(月額)。DB も提供あり。
  • iOS アプリの開発
    • 今夏登場予定。ライセンス価格未定。大きな開発遅延はなし。
  • 64-bit アプリのビルド
  • バックエンドの LLVM 化による高速化
  • IDE の改善
  • 新しいフレームワーク
    • Desktop, Web, iOS の間でコントロール (例えば PushButton と WebButton) や各種クラスの相互乗り入れが可能になる。
  • 品質向上の取り組み
iOS サポートは個人的にも期待大。今夏登場は正式版なのか Beta なのか不明ですが、2015 年の夏くらいには安定して使えるようになっているかなぁと想像。

Xojo Cloud デモ

簡単なチャットができる Web アプリを Xojo Cloud にデプロイして、参加者全員でアクセスするデモを見ました。デプロイ先は Rackspace VPS (CentOS) の模様 (デモ時点での情報です/リリース時点で変更されている可能性もあります)。

現状はまだ「コピーして起動しました」というレベルに見えましたが、手元でさっきまで作っていた Web アプリがワンクリック (1分足らず) でデプロイされてすぐにサービスインできるのはインパクト大。ステージングはできるのか、ファイアウォール書けるのか、アクセスログは取れるのか、DB 連携はどうするのか、システム依存の機能は使えるのか (Shell など)、SSH でログインしてデバッグはできるのか、etc. 気になる点は多々ありますが、しばらくは情報待ちという感じですね。

一番気になる価格は「未定」とのことですが... Rackspace VPS の価格表 にボリュームディスカウントを適用して利益を乗せたら... うーん、DB 抜きの最安プランで月額 $59 くらいかなぁと妄想。

Shell クラスの活用

アルファサード株式会社の代表、野田純生さんのセッション (スライド)。OS X 組込のインタプリタやシェルコマンドを Shell クラス経由で使うと Xojo で簡単に GUI wrapper が書けて便利、というお話。実際に ColorQuest などをリリースされています。
Xojo に限らずシェルのサブプロセスを使うアーキテクチャは経験上ハマりどころも多いですが(ファイル名に改行コードが入っているときの闇とか IO バッファのデッドロックの闇とか...)、プロトタイピングとか限定された条件下でサクっと開発するときには低コストで良いですね。
Category: Computer
Lyrics Master の最新版となる v2.3.9 を本日リリースしました。ダウンロードはこちらから

今回も、前回に引き続きメンテナンスリリースとなっています。各サイト最新仕様への対応や、細かい改善/バグフィックスを行いました。また、「致命的なエラー」が以前よりも頻繁に表示されてしまう問題も併せて修正されています。詳しくは更新履歴をご覧ください (Mac OS X / Windows)。

2014 年ということで、Lyrics Master の初版 (当時は HyperCard で書かれていました) が出てから 10 年目を迎えることができました。今年はさらに大きな動きがお見せできると思いますので、ご期待ください。今年もよろしくお願いします!