最近’s works / Font Me / Gatorade Free Run

Font Me
石橋先生のblog
てことで天下のAdobeのキャンペーンのiPadリモコンアプリを書いてます.
キャンペーンは昨日今日明日の3日間. 参加するとスッテカーが貰えますよ.
石橋さんアプリ側で使ってるofxHTTPServerがなかなか癖が強くて最初はまりましたが基本的にはHTTP通信と一部OSCで通信してます. OSCはやっぱデータ取りこぼしが怖いのでキュー出しには向かないですね. 精神衛生上. 特にiPad側がWiFiだし.
Viva雑用プログラマ.

Gatorade Run / Fun Race
ゲータレードのキャンペーン.
スマフォアプリでレースに参加. ある特定順位だと景品が貰えます.
iPhone, Android共にやってます. 初AndroidではまりまくりGWが虚空に消えました.
天下のライゾマのテクニカルな仕切りの下, サーバーサイドが天下のマウントポジションさん, デザインが上のAdobeと同じく天下のDELTROさんと一緒にやってます.
きちんとGPS情報を使ってやってるので野外でのジョギングなら某Nike+より精度は良いのではないかと思います.
バックグラウンド処理難しいですね.

べ, 別にTwitterばっかやってるわけじゃないんだからね!!

最近スマフォアプリ多いなぁ

node.js謎の最適化

まずideoneの結果.
ideone (spidermonkey)

で, これと同等の

var loop = 5000000;

(function() {
	console.time("e1");
	var o = {};
	for(var i = 0; i < loop; i++) {
		o[i] = i;
	}
	console.timeEnd("e1");
})();

(function() {
	console.time("e2");
	var o = [];
	for(var i = 0; i < loop; i++) {
		o[i] = i;
	}
	console.timeEnd("e2");
})();

(function() {
	console.time("e3");
	var o = {0 : 0};
	for(var i = 0; i < loop; i++) {
		o[i] = i;
	}
	console.timeEnd("e3");
})();

(function() {
	console.time("e4");
	var o = [0];
	for(var i = 0; i < loop; i++) {
		o[i] = i;
	}
	console.timeEnd("e4");
})();

(function() {
	console.time("e5");
	var o = [];
	o[0] = 0;
	for(var i = 0; i < loop; i++) {
		o[i] = i;
	}
	console.timeEnd("e5");
})();

をnode.jsで走らせると

Now using node v0.7.7
e1: 604ms
e2: 569ms
e3: 590ms
e4: 408ms
e5: 596ms

と, e4だけ1.5倍くらい速い. loopをどんだけ増やしても1.5倍程度のスケールをする. 謎...

と思ったらRhinoはもっと謎.
ideone (rhino)

mosh入れてみた

今流行りのMIT謹製のmoshを会社のサーバーとMBAに入れてみた. (mosh: MITからモバイル時代のSSH代替品)

FedoraはyumあるけどCentOSのyumだと無い
けど、レポジトリどれかに入ってるだろうと思って探したけどよー分からんかった
ので、src.rpm落としてrpm rebuildしよう
としたら、MD5がゴニョゴニョと言われた
から、仕方無くrpm -ivh –nomd5したんだけどSPECS出て来ねー
ということで、gitから拾って来て./autogen.shをしたらautoreconfに怒られた
ので、漢ならtar玉だ!とtar.gz解凍して./configureしたらconfigure: error: Unable to find byte swapping functionsって怒られ
たので、ググったらgithubに Missing byte swapping functionsってのがあったのでまさにそれだ!とandrewgho氏のを丸々コピペして上手く./configure通ったのでmake!したらboost周りで怒られ
えー。。。と思いながらyumでboost141入れてみてもダメで, つうかそもそもconfigureで1.2以上って言ってんじゃんなんでだよ
とか思ったらboostのインクルードパス通してないだけでした.

大変.

で, 気を取り直してMBAにはMacPortsもhome brewも入れてないので楽にpkg使ってインストール.

いざ
mosh 192.168.1.xx
と, やってもうまくいかない. 多分俺のsshdとかの設定が悪いんだろうとは思いつつ言語がどうのと文句言われてるので色々試してたら
mosh 192.168.1.xx -server=”LANG=$LANG mosh-server”
とやったらうまく行った.
ので, vi ~/mosh.sh して
#/bin/sh
mosh $1 -server=”LANG=$LANG mosh-server”
って書いてchmod 777 mosh.shして.bash_profileに
alias mosh=”./mosh.sh”
として終わり.

でも上の記事でも書かれてるようにローカルエコーってのとネットワーク接続切れても大丈夫(IP変わっても!)というのは魅力的.
インストールの敷居がもう少し下がると良いよね. boost周りは… ね.
みんなもmosh入れよう!

アルバムって何だろう

iTunes/iPodを使う様になってアルバムの曲順とかどんどん覚えなくなって来た.
大容量化してデータもきちんとインデクス化されててすぐに切り替えれちゃうし.

でもアルバムの曲順って, やっぱり何か意味がある気がするし, 順番に聴きたいって思うんだよね.
(まあ, それが例え幻想だとしても, アーティストが適当に出来た曲並べただけだとしても.)
そういう意味でプレイリストを作ってiPodにぶち込む時でもアルバム単位で順番変えずにぶち込むんだけど, やっぱり覚えなくなってきてる.
一つは昔に比べて金に余裕が出来たから買える音楽の量が増えてアルバム一枚をずっと聞くみたいなことが減ったせいもあるだろうし, そこまで集中して音楽を聴けてないのもあるだろう. 専ら仕事のBGM的な.

デジタルリリースに移って来て細切れになったリリースだったり一曲ずつ買ったり, そういうのに慣れた人達ってのはまた違うんだろうね.
そういう意味では全部の曲がシングルカットと同じ様な意味合いを持ってるのかも知れない.

まあ, 曲順だけじゃなくて曲名も下手したらアーティスト名も思い出せないことが多々あるからただ単に年のせいかも.
おじいちゃんとか言わないで.

CodaにLESSのプラグインとか入れてみた

Macでの話.

2.x系だと動かないっぽいので

sudo gem install less -v "= 1.2.21"

LESS.modeはGithubからZip落としてディレクトリ名をLESS.modeに変更して入れてあげると良いよ.

あとは偉い人の記事を参照してね.
CodaにLESSを入れてみた

追記:

つうかやっぱ上の記事にもある通りLESS.app使った方が良い気がしてきた. 監視ディレクトリの設定別でやんなきゃいけないけど.

DOMに追加する前のjQueryオブジェクトのhtmlテキストを取得する方法

意外と無かったので(というか検索が下手)メモ

var $elem = $(‘

‘)
 .attr(“id”, “foo”)
 .css({backgroundColor : “#f00″, color : “#0f0″);
var htmlText = $elem[0].outerHTML;

頭の体操 : 奇素数pに対してp|Σ[i=0->m]i^pを満たす最小のmはp-1

2 < p : prime, min({m|∃k(>0) s.t. p|Σ[i=1 -> m]i^p}) = p – 1
∀m, m^p = m (mod p)より
Σ[i=1->m]i^p
= Σ[i=1->m](i+pk_i)
= Σ[i=1->m]i+pΣ[i=1->m]k_i
= m(m+1)/2+pk’
∴ p | Σ[i=1->m]i^p => p | m(m+1)/2
p : odd primeより,
p | m or p | m + 1
∴ {m|∃k(>0) s.t. pk=(Σ[i=1 -> m]i^p)} = {pk – 1, pk | 0 < k}
∴ min({m|∃k(>0) s.t. pk=(Σ[i=1 -> m]i^p)}) = p – 1

よく使う/使おうと思ってる開発ツールをまとめてみる

たまにははてダの人っぽいことやってみる. 全然はてダの人じゃないけど.
リンクとかは気が向いたら貼るけど取り敢えず貼らないのでググって.

・Coda
言わずと知れたhtmlエディタ. html/css/php/jsは勿論Python辺りまで.
最近はWeb系は殆どこれですね.
以前は小さい修正はCyberduck+CotEditorとかでやってたんですけどCotEditorのバージョン上げたら連携が上手くいかないので(早く修正されて欲しい…)一通りCodaに登録する様になりました.

・Cyberduck
そろそろTransmitに乗り換えようかな…

・CotEditor
色々便利. 随分前にmiから乗り換えました. 未だに正規表現周りで変にはまったりするけど(調べもしないので改善されない)

・CodeRunner
超便利. 最近これが無いと死ぬ.
AppStoreで現在850yen.
主にjs, php, pythonの簡易エディタ+実行環境.(jsは要node.js)
それだけじゃなくC/C++/Objective-C/Javaとかも勝手にコンパイルして走らせてくれる.
ヘッダのインクルードとか謎だけど.
まあ, 取り敢えず別にこれで大規模開発はしないし, コードスニペット的なアレ.

・Hex Friend
バイナリエディタ. 地味にあると便利.

・Launcher
bashも叩けて素敵.
Alt+Space -> open /usr
とか.

// 以下まだあんまり使ってないけどAppStoreで買った良さげなの

・Jellyfissh
複数サーバーとかやり始めるとsshやってらんねーっす.
と思って調べてこれが引っ掛かって, 一応ダイスケ先生に聞いたらやっぱこれって言ってたしこれじゃね?
まあ別にクライアントはTerminalで良いし.

・Cocoa JSON Editor
まだ殆ど使ってないけど便利げ.

・JSON Validator
たまに使う. 大体勘違い.

・Javascript Packer
まあWebでも出来るしコマンドラインでも出来るけどローカルなGUIでサクッと出来ると便利じゃね?的な.

・GraphicalHttpClient
cURLで良いじゃんって言わないで.
GUIだし. 便利そう.

なんかまとめてたらWeb屋さんみたいな感じになってるね.
まあiOSは基本Xcodeだけだし, oFもXcodeだし, Maxとか言っても今更感あるし.
Webはよく分からんかrあい路色試してるんですよね. 多分.

Android 2.2/AziLink/OSX Lionでテザリング

基本的には
オープンソースのAndroid用USBテザリングアプリ「AziLink」をMacで使う – ser1zw::diary
をそのままやれば出来ます. スマートにまとまってる良記事.

ただ, はまったのは
Tethering OS X Lion to Android
のシェルスクリプに関して.

なんてことない,

#!/bin/bash
#
# azilink for OS X Lion
# based on http://pastie.org/405289 but works with Tunnelblick only
# (no need to install a separate copy of OpenVPN2 from macports
# or building from source by hand, thankfully)
# Requires:
# – azilink running on android phone (http://code.google.com/p/azilink/)
# (run the app and check the box to start the service).
# – adb on system path (comes with the Android SDK;
# add its tools folder to your PATH in ~/.profile or
# place or symlink the sdk’s tools/adb file in e.g. usr/local/bin or somewhere else on the PATH)
# – Tunnelblick, a nice OS X packaging of OpenVPN (http://code.google.com/p/tunnelblick/)
# Install Tunnelblick to Applications. Tested with Tunnelblick 3.2beta32 (build 2817)

init() {
adb forward tcp:41927 tcp:41927
sudo /Applications/Tunnelblick.app/Contents/Resources/openvpn/openvpn-2.2.1/openvpn –dev tun \
–script-security 2 \ # ここ!2の後ろにスペースが必要
–remote 127.0.0.1 41927 \
–proto tcp-client \
–ifconfig 192.168.56.2 192.168.56.1 \
–route 0.0.0.0 128.0.0.0 \
–route 128.0.0.0 128.0.0.0 \
–keepalive 10 30 \
–up “$0 up” \
–down “$0 down”
}

up() {
tun_dev=$1
ns=192.168.56.1
sudo /usr/sbin/scutil << EOF
open
d.init
get State:/Network/Interface/$tun_dev/IPv4
d.add InterfaceName $tun_dev
set State:/Network/Service/openvpn-$tun_dev/IPv4

d.init
d.add ServerAddresses * $ns
set State:/Network/Service/openvpn-$tun_dev/DNS
quit
EOF
}

down() {
tun_dev=$1
sudo /usr/sbin/scutil << EOF
open
remove State:/Network/Service/openvpn-$tun_dev/IPv4
remove State:/Network/Service/openvpn-$tun_dev/DNS
quit
EOF
}

case $1 in
up ) up $2 ;; # openvpn will pass tun/tap dev as $2
down) down $2 ;;
* ) init ;;
esac

ということで快適テザリング生活になると良いなー.

うちから親父が消えた日

昨日は毎年恒例の12/4, もう11年目です.
もう11年, 親父と会ってないんだなとか思ったりすると同時に, じゃあ16年くらいは親父と会ってたんだな, とか当たり前の事も思ったり.
多分今日か明日か明後日が本当に死んだ日なんだろうけどそれはもう分かんない事ですね. 真実は闇の中.
どんどん記憶って曖昧になっていくもので, そのまま綺麗に忘れたいと思うけど, やっぱりうちにも親父が居たっていうことくらい覚えておいてあげないとなって. で, 大体毎年思い出して書いてる.
きっと, 本当に忘れてしまったらそれはそれで悲しいし, そんな薄情な自分が嫌いになったりするんだろうな, とか.

もう8より大きい数は難しくて分かんない上に「〜年目」みたいな数え方難しいから本当に11年目なのか丸11年なのか分かんないんだけど, まあそんくらい経ったんですね. あのとき16歳だったはずで今27歳だから11年目?
そんだけの時間が流れれば覚えてたこともどんどん忘れて行くし, そんなことより大事なことも一杯起こったし, しゃーないですね.
生きてたら59?老けてんだろうな. 生きてないけど.

そういえばあの頃小学生だったのに今度成人する弟も無事就職が決まったらしいです. 県内で. おめでとう. だいぶ安心ですね.
あと, 母が今度還暦です. 県内で. めでたい, の? まあ, めでたいってことにしとこう. 何がめでたいか分からんけど. 赤い何かを送らなきゃ. やっぱフェラーリかな.
婆ちゃんが今度86?最近特に母親との電話での話題にも上がらんけど話題に上がらんってことはまだ元気なんでしょう. 正月は帰って顔見せな.

還暦祝いって何かするもんなんですかね, よー分からん. やるなら正月にやってしまいたいんだけどね. 親戚も少ないしなぁ. 適当に近場で美味い飯屋でも探しとくか. 弟に運転させて行ける範囲で.

あと成人祝いって何あげたら良いんですかね. スーツって感じの職場でも無さそうだし, うーん. 良いグローブでも買ってやるか. 野球少年. もう少年でも無いけどな. むしろ車の免許持ってる分俺より社会人だ. 実家帰ったらドライブ行こう. 弟の運転で.

いやぁ, 免許. 持ってないと不便だな, 田舎って.

つうか今年もあと30日切ってますね. やばいやばい.