BUILD FAILED
/Users/komagata/android-sdks/tools/ant/build.xml:622: The following error occurred while executing this line:
/Users/komagata/android-sdks/tools/ant/build.xml:642: '${renderscript.opt.level}' is not a permitted value for com.android.ant.RenderScriptTask$OptLevel

Android Tools Rev20にアップデートしたらこのようにbuildできなくなった人のためにおいておきます。

renderscript.opt.level=O0

% git diff ant.properties 
diff --git a/framework/ant.properties b/framework/ant.properties
index 243b691..5ddf4f2 100644
--- a/framework/ant.properties
+++ b/framework/ant.properties
@@ -31,4 +31,4 @@
 #  'key.store' for the location of your keystore and
 #  'key.alias' for the name of the key to use.
 # The password will be asked during the build when you use the 'release' target.
-
+renderscript.opt.level=O0

cordovaを使う時にhamlとsassとcoffeeを使いたかったのでguardでそれぞれをwatchするようにした。

普段は何らかのWebサーバーが立ち上がってて出力を直接返すからこういう風にそれぞれの静的ファイルを必要とすることって意外と少ないですね。

$ gem install guard-haml guard-sass guard-coffeescript

Terminal — zsh — 80×24

このようなディレクトリ構成にする場合。

# Guardfile
haml_options = { format: :html5, attr_wrapper: '"', ugly: true } 
guard "haml", input: "haml", output: "www", haml_options: haml_options  do
  watch %r{^haml/.+\.haml}     
end
guard "sass", input: "sass", output: "www/stylesheets"
guard "coffeescript", input: "coffeescripts", output: "www/javascripts", bare: true

GUIのCodeKitってヤツを試したんだけど、ちょっとカスタマイズしたくなるとやっぱりCLIが便利ですね。

会社のブログにプログラマーのインターン募集について書きました。

Webサービスを作りたいインターン募集 « FJORD, LLC(合同会社フィヨルド)

インターン募集って普通どうやってるんだろう?

Facebookで募集するって聞いたんだけど、俺につながってる人なんてみんな既にプログラマーだから(プログラマーが好きなので…)対象者じゃない…。

後は「うわっ、無給とか超絶ブラック会社乙」ってなりそうなのでなるべく正直に包み隠さず書きました。

周りにプログラムやりたそうな人がいたら教えて下さい…。

jitter + growlもいいけど、vimでもっと素早く直感的にエラーを知りたい。

そんな時はsyntastic

" .vimrc
Bundle 'scrooloose/syntastic'
:BundleInstall

syntasticはIDEみたいにエラーがあったら左にマークを表示してくれる。デフォルトでファイル保存時に走るので便利。

Terminal — vim — 88×26

coffeescriptは最初から対応してて、coffeeコマンドでsyntaxをチェックしてくれる。プラグイン形式になっているので自分で書けば何でも行けるハズ。coffeelintが走るようにしたいなあ。

All My Files is really annoying.

Finder Preferences

怖話に自分の投稿した怖い話にコメントが付いたらメール通知する機能を付けました。

受信トレイ - komagata@gmail.com - Gmail

Userにメール通知する/しないフラグを追加して、CommentObserverを書く。

# app/models/comment_observer.rb:
class CommentObserver < ActiveRecord::Observer                                                                          def after_create(comment)
    if comment.story.user.notify_comment
      mail = NoticeMailer.comment_notice(comment)
      mail.transport_encoding = '8bit'
      mail.deliver
    end
  end
end

拡張子をfoo.html.hamlとかにしとくだけでHTMLメールになるのも便利ですね。

coffee-scriptはnpmで入るからいいだろということでhomebrewからhomebrew-altに移動したらしいです。なのでnodeを入れてソースからnpmを入れる。

% brew install node
% curl http://npmjs.org/install.sh | sh
% npm install coffee-script -g

元のjsがある場合はjs2coffeeでcoffee化する。

% npm install js2coffee -g
% js2coffee foo.js > foo.coffee

guardやjitterで変更を検知してcoffeeをコンパイルする。titaniumで使われてるスクリプト言語はpythonなのでGuardfileがリポジトリにあると発狂する人がいる(?)のでjitterを使ってみました。(via @yagi_)

% npm install jitter -g
% jitter coffee Resources

coffeeディレクトリ以下のファイルに変更があると、同じ名前のjsがResources以下に出来る。

Xcodeを入れる。

Titanium Studioを入れる。(Titanium SDKがインストールされる)

最小限サンプル。komagata/titanium-foo

// Resources/app.js
var window = Ti.UI.createWindow({
  backgroundColor:'#ffffff',
  navBarHidden:true,
  exitOnClose:true
});
  
var label = Ti.UI.createLabel({
  color:'#000000',
  text:'foo',
  height:'auto',
  width:'auto'
});
window.add(label);
window.open()

プロジェクトディレクトリに入って下記。(.などの相対パスだと駄目なのでpwd (via @yagi_))

% ~/Library/Application\ Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/builder.py run "`pwd`"

skitchUl2P0b

できた。

何かおかしい場合は下記で大抵直るらしい。

% rm -rf build

家でもMacbook AirをTVにつないで使ってたんですが、Diablo3をプレイするために、リビングPC用に以前買っていたマウスコンピューターの安いWindows PCに戻しました。

Diablo3はやはり3万円切ってる安物では厳しく、最低限設定にしても常にテクスチャがおかしかったり、ダンジョンでは真っ暗になって(前面のテクスチャが黒になってる?)プレイは厳しい感じでした。

そこで久しぶりにビデオカード(最近はあんまりこう言わないですねグラボっていいますね)を購入。

SapphireのRADEON HD 7750を買いました。確か9000円台だったと思います。

何年もノートPCで来たので、最後に買ったビデオカードはMatroxのG400だった気がします。ググってみるとG400は1999年発売だそうなので13年も経つらしいです…。

時は流れて、最近のビデオカード事情を調べてビックリ。スロットはPCI Expressとかいうのになってるし、ハイエンドじゃなくても2スロット占有するのが普通。外部電源を必要とするのも普通。

どんだけ電力食うんだっつー話ですが、時代は流れましたね。

とりあえず、どのくらい効果があるのか定量的に知りたかったので3D MARK Vantageというベンチマークソフトで測ってみました。

3D MARK Vantage ベンチマーク

旧環境

  • CPU: Athlon II X2 220
  • GPU: RADEON HD 4250(オンボード)

新環境

  • CPU: Athlon II X2 220
  • GPU: RADEON HD 7750

スコアが257から7361と約28倍にもなってる!

同じ機種でシリーズ名も同じで数字がちょっと大きいのに変えただけだから対して変わらないだろう。せめて真っ黒になっちゃうバグさえ直ればいいかなと思ってたら大違い。

最低解像度、最低設定でやっと動いてたのがFull HD、最高画質でもサクサクに。これは予想外に嬉しい。

そういった嬉しい誤算とは裏腹に悲しい誤算もあります。

「これを見てくれ、こいつをどう思う?」

「すごく・・・大きいです」

自分のPCにはロープロファイル対応しか収まらないということすら失念していました。(オープンエアで動かしてるので動作には支障ないが…)

要らないMicroATXのケースをもしお持ちの方であげても良いという方がいらっしゃれば@komagataまでMentionいただけるとありがたいです…。

今日、Cordovaでようやく具体的なアプリを書き始めて今回のアプリにはCordova使えないことがほぼ確定してしまった。

冷静に考えれば当たり前っぽいけど、

「サーバー上にあるHTML・Javascriptなどのリソースはローカル上のリソース(アプリ内)にアクセスできない」

Cordova(元PhoneGap)を選択したのは、Web版・Android版・iPhone版の殆どを共通のソースで作れるハズという仮説に基づいていたが、それが瓦解した・・・。

3種類が共通のソースでできず、新規に書く必要がある状況ではカクカクした動きになってしまうCordovaを使うメリットは無い。

需要の無い問題を解決してしまった!

今月中にリリースとか思ってたけどこれはヤバイ。

投稿できないビューワー専用にしてでも、機能最低限版を作らねば。

となると、ネイティブよりTitaniumの方が早くできそうだ。殆ど選択肢は無い・・・。