phantomjs

今更ながらに軽く触ってみた。

http://www.phantomjs.org/

インストールはhomebrewで。

$ brew install phantomjs

Javascriptのコマンドライン実行環境らしい。APIとしては、他のWebkitブラウザと同じJavascript APIに加え、主に以下の2つのが追加されている。

  • phantom: 実行環境へアクセスするためのオブジェクト。args, scriptName, exitなどを持つ。
  • WebPage: webページをカプセル化したオブジェクト。URL経由でHTMLページを読み込んだり、外部のjsをincludeしたり、イベントを発行したりできる。

ちょっとしたツール作ったりとか、ユニットテストとかに便利そうな感じ。

Androidで画面が出ている時だけ音を鳴らす

ActivityのonResume()とonPause()で制御すれば良いと考えられる。

が、ロックスクリーンが表示されてても音がなってしまって困る。

そんな時はonWindowFocusChanged()を使いましょう。

サンプルではonResume()だけを置き換えているけれど、条件によってはこのメソッドだけでハンドルできないかしら。

サンプルコード

Function::arguments

argumentsは引数リストだと思っていたら、実はオブジェクトらしい。
arrayにそのまま渡したい時に困るのだが、変換できる。

Array.prototype.slice.call(arguments)

https://developer.mozilla.org/en/JavaScript/Reference/functions_and_function_scope/arguments

Function::apply and call

JSのapplyってずっとよくわかってなかったので調べてみた。
schemeの(apply )と同じようなもんと考えて納得。

あるオブジェクトの関数を別のオブジェクトに適用する。

"hoge".slice()
//=> "hoge"

[].slice.apply("hoge")
// => ["h", "o", "g", "e"]

似たメソッドでcallがあるが、引数の取り方が異なる。

Array.prototype.slice.apply("hoge", [3,4])

Array.prototype.slice.call("hoge", 3, 4)

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call

JDEEを使ってみる

Android書くときに、Eclipseもいいんだけど、やっぱり手馴れたエディタを使いたいよねってことでJDEEを試してみる。

というわけで、自分用コマンドリファレンス。

インストール

http://jdee.sourceforge.net/
JDEEとelibをダウンロードしてmake install

設定

Android SDK にもパスを通しておく
JDKのバージョンとか場所は適宜。書いてあるのはUbuntu環境でのもの。

;; jdee
(add-to-load-path "elib")
(add-to-load-path "jdee/lisp")
(autoload 'jde-mode "jde" "Java Development Environment for Emacs" t)
(setq auto-mode-alist (cons '("\.java$" . jde-mode) auto-mode-alist))

;; cedet
(add-to-load-path "cedet/cogre")
(add-to-load-path "cedet/common")
(add-to-load-path "cedet/contrib")
(add-to-load-path "cedet/ede")
(add-to-load-path "cedet/eieio")
(add-to-load-path "cedet/semantic")
(add-to-load-path "cedet/speedbar")
(add-to-load-path "cedet/srecode")

(setq semantic-load-turn-useful-things-on t)
(load "cedet")
;;(semantic-load-enable-code-helpers)

;; jde-mode-config
(custom-set-variables
 '(jde-jdk-registry (quote (("1.6.0.24" . "/usr/lib/jvm/java-6-sun/"))))
 '(jde-global-classpath (quote (
                                "~/lib/android-sdk/platforms/android-4/android.jar"
                                "~/lib/android-sdk/platforms/android-7/android.jar"
                                "~/lib/android-sdk/platforms/android-8/android.jar"
                                "~/lib/android-sdk/platforms/android-10/android.jar"
                                "~/lib/android-sdk/platforms/android-11/android.jar"
                                ))))

(add-hook 'jde-mode-hook
          '(lambda ()
             (c-set-offset 'arglist-intro '+)
             (c-set-offset 'arglist-close 0)
             (c-set-offset 'topmost-intro-cont 0) ;; new line on annotation
             (c-set-offset 'func-decl-cont 0)
             (setq indent-tabs-mode nil)
             (setq c-basic-offset 4)
             (setq c-set-style "java")
             ))

;; custom variables
(setq compilation-window-height 8)
(setq bsh-vm-args '("-Duser.language=en"))
(setq jde-import-auto-sort t)

;;; ant on jdee
(setq jde-build-function '(jde-ant-build))
(setq jde-ant-enabled-find t)
(setq jde-ant-program "/usr/bin/ant")
(setq jde-ant-read-target t)

;;; check style on jdee
(setq jde-checkstyle-option-rcurly (list "alone"))

(let ((elem (assq 'encoded-kbd-mode minor-mode-alist)))
  (when elem
    (setcar (cdr elem) "")))

コマンドリファレンス

  • テンプレート生成
Key Event
M-x jde-gen-class クラスのテンプレート生成
M-x jde-gen-xxx テンプレート自動生成
M-x jde-gen-get-set or M-x jde-wiz-gen-get-set-method Getter/Setter 生成
M-x jde-wiz-implement-interface インターフェースの実装ひな形生成
C-c C-v C-o オーバーライドメソッドのひな形生成 (jde-wiz-override-method)
Key Event
C-c C-v C-c コンパイル
C-c C-v C-r 実行
C-c C-v C-b antビルド
C-x ' or M-g n 次のエラー箇所へジャンプ
M-g p or M-g M-p 前のエラーへジャンプ
C-c C-v C-d デバッガ起動
M-x jde-bug-set-breakpoint カーソル位置にブレークポイントを設定
M-x jde-bug-clear-breakpoint カーソル位置のブレークポイント解除
M-x compile => ant -emacs build.xmlに従ってビルド
M-x compile => ant -emacs junit junitの実行
コンパイルエラー表示行でC-m エラー行へジャンプ
  • Import
Key Event
C-c C-v z 必要なimportをすべて追加する (jde-import-all)
C-c C-v C-z import文単体の挿入
M-x jde-import-kill-extra-imports 不要なimport文を削除
  • Edit
Key Event
C-c C-v C-. コード補完 (jde-complete)
C-c C-v C-l println
C-c C-v C-y カーソル位置のクラスのソースを表示
C-c C-v C-w カーソル位置のクラス名のマニュアルを表示
C-c C-v j Javadocコメント生成
C-c C-v C-s Speedbar起動
C-c C-v C-n JDKのドキュメントを表示
C-c C-v C-w クラスのJDKドキュメントを表示
C-c . 編集スタイルの切り替え
  • Othres
Key Event
M-x jde-chckstyle checkstyle
C-c C-v C-f プロジェクト内のgrep検索 (jde-find)
M-x jde-find-dig 実行時に設定可能なgrep検索
M-x jde-bsh-exit BeanShellの終了