仕事した.
Galaxy Nexusを4.1にアップデートしたり.
*Galaxy Nexus で Android4.1(Jelly Bean)を試す
Nexus7のFactory Imageが公開されたので,Galaxy Nexusももうすぐだろうと思ってたのですが,我慢できずに非公式なROMをダウンロードしてきて入れてしまった.rootはいらないのでなるべく素のままっぽいやつを.ビルド番号はJRN84D.
もう試してる人たくさんいるので,スクリーンショットとかは他を見てください.
今回は4.0.4からのアップデート.ブートローダーもアンロック済み./cacheはwipeしたけど/dataはそのままでいけました.なので,アプリケーションの再インストールもしなくて大丈夫だった.もちろん何も保証はしませんが.
一番目を引くのは,通知領域が拡張されたことですね.まだ慣れてないので,良いのかどうか.いままでの状態で通知が溢れ気味だった人間としては,一つ一つの通知が大きくなると困るかも.
表示周りが色々改善されていますね.アニメーションのフレームレートがあがったおかげで,操作がかなり滑らかに感じられるようになりました.
あと,USBデバッグ接続中のアイコンとかも変更になっている.この変な生物がJelly beanのマスコットっぽい.バージョン情報連打してると出てくるアレも変わっていた.
Google Nowは出かけてると自宅までの経路とかが出て面白い.今日,Google Latitudeが妙に重たかったのは,大勢の人が一気に使い始めたからとかあるんだろうか.
b-mobileのsimでアンテナをちゃんと表示する
ちょっと期待したけど,b-mobileのsimだとやはりアンテナが立たないので,framework.odexにパッチを当てる.API Levelが16になったけど,baksmaliは問題なく動いた.もう何度も繰り返してるので,何も考えずにすんなり完了…と思ったら,起動せず.odexファイルが何かダメなようだ.
dexopt-wrapperで作ったodexがダメなのかな,と思って一度framework.jarにclasses.dexを組み込んだ状態で動かして,起動に失敗したところでdata/dalvik-cacheの下からfraneworkのキャッシュファイルをとってきて,それをodexにして署名コピーした上で/system/frameworkに置いたら起動した.
一応,framework.jarをdexファイルが入ってない版に戻して,dalvik-cacheも消す.
アンテナ表示も正常になって一件落着.
気のせいかもしれないけど,4.1になってWiFiや3Gの電波つかむの早くなったかも.設定変わったのかな.
まだソースが公開されてないので分からないですが,smaliの力を借りてdiffをとった感じだと結構こまかいたくさん修正がされてるっぽい.
*Google I/O Extended
http://googledevjp.blogspot.jp/2012/05/google-io-extended.html
日本時間だと昨日の24時~
眠い.
15時に起きて,16時半に出社.21時から飲み会だった気がしないでもない.休みにしたかったのだけど,忙しいので仕方ない.
Google I/O Extendedのために仕事終わってから六本木のGoogleオフィスに.
24時開始とかとても眠い…….
眠い.
Google playのデベロッパーコンソールの統計情報,クリックしても反応が無いことがあって使いにくいな.完了してないAjaxリクエストがあるとオプションを選択できないのか….
maven-android-pluginで作ったapkがうまく動かなくて嵌ったり.
昼過ぎまで寝る.洗濯した.
4ヶ月ぶりに,ニコニコプレーヤー(仮)をアップデート.ほとんど不具合修正だけ.htmlをスクレイピングしたりしてるので,放置していると色々な機能が動かなくなるので困る.まともなAPIを外から使えるようにして欲しいな.
そういえば,やっとPayPalで本人確認が出来た.紙を郵送したり,電話かけたり,書留受け取ったり,難易度高すぎる.
今の時代,メールアドレスとパスワード入れたら,3回くらいクリックして2秒後には法律的にも有効な本人確認が完了しているべきです.各自治体は,はやく住民票や免許証をOAuthあたりで利用できるAPIを整備しなければいけないと思う.
*msysgit + BASIC認証
少し前から,msysgitでBASIC認証かかってるリポジトリのgit clone失敗することがあるのが気になっていたのだけど,Git-1.7.11-preview20120620.exeにしたら良くなった気がする.気がするだけかも.
普段はssh://~でアクセスしているので気づかなかったのですが,たまたま会社のPCからhttp経由で見ようとしてダメで理由が分からなかった.ログやtcpdumpでリクエスト見ていると,一度,認証成功しているのに,なぜか途中でパスワード送るのをやめてしまう.
http://blog.mylab.jp/20110518.html この問題と同じっぽいな.ユーザーIDだけ指定しても回避できなかったけど….
仕事した.
メール周りをAppsに移行してから,spfとDKIMの設定してなかったことに携帯にメール送れなくて気づいた.設定した.
*cmd.exeの使い方
Windows使ってるエンジニアの多くの人がcygwin入れたりVM起動したりしてるみたいですが,cygwinもVMもWindowsじゃないと思うし,それなら最初からWindows消してLinuxとかで良いと思ってしまいます.
というわけで,Windowsユーザを名乗るなら,ちゃんとcmd.exe上で作業するべきです.
ckw.exe
まず,素のコマンドプロンプトは使い物にならないので,ckwを拾ってきてインストール.コンソールが変わっただけでシェルはcmd.exeです.
一時期,色々な人がパッチを当ててたバージョンを作ってて,どのパッチに何が入ってるのか確認するのが面倒だったのですが,今は大丈夫っぽい.
https://github.com/deflis/ckw-mod/wiki/
cd.bat
ホームディレクトリに戻ろうとしてpwdな動作して悲しくなるcdコマンドはバッチファイルを書きましょう.cdはcmd.exeの組み込みなので,バッチファイル作っただけでは起動できませんが,DOSKEY使えば組み込みコマンドも置き換えられる.
@echo off
if %1. == . cd /d %HOMEDRIVE%%HOMEPATH% && goto end
cd /d %1
:end
title %CD%
exit /B
date.bat
日付知りたいだけなのに,時計変更しようとするdateコマンドとかも,DOSKEYの力を借りてバッチファイルに置き換えます.
@echo off
@setlocal
if %1. == . (
for /F "usebackq" %%s in (`date /T`) DO SET DATE=%%s
for /F "usebackq" %%s in (`date /T`) DO SET TIME=%%s
echo %DATE% %TIME%
) else (
date %*
)
exit /B
ls.bat
dirコマンドの引数もいつまでたっても覚えられないので,ls.batを作る.
@echo off
setlocal
set prm=_
if /i "%1"=="-l" shift /1 && set prm=/Q
if /i "%1"=="-a" shift /1 && set prm=/W /A
if /i "%1"=="-la" shift /1 && set prm=/Q /A
if "%prm%"=="_" (
for /F "usebackq" %%t IN (`dir /B %*`) do (
set /P X="%%t " <NUL
)
echo.
) else (
dir /ON %prm% %1 %2 %3
)
cmdrc.bat
あとはckwを起動するときに,以下のようなcmdrc.batを実行するようにしておけば大丈夫.
rm,mv,cp,pwdなどは,DOSKEYでエイリアスを作りましょう.
@echo off
DOSKEY cd=C:\bin\cd.bat $*
DOSKEY settime=time $*
DOSKEY time=C:\bin\time $*
DOSKEY date=C:\bin\date $*
DOSKEY pwd=cd
DOSKEY mv=ren $*
DOSKEY rm=del $*
DOSKEY cp=copy $*
DOSKEY env=set
DOSKEY ll=ls -l
prompt %USERDOMAIN%%%
set PATH=C:\bin;%PATH%
cd.bat .
sudo,su
最近のWindowsだと,たまに管理者権限が欲しくなるので,suやsudoが欲しくなります.バッチファイルでは手が出ないのでここはWSHで.
sudo_.js
function sudo(cmd, args) {
var shell = WScript.CreateObject("Shell.Application")
shell.ShellExecute(cmd, args, "", "runas")
}
if (WScript.Arguments.Count() > 0) {
var args = "";
for (var i = 1; i < WScript.Arguments.Count(); i++) {
args += "\"" + WScript.Arguments(i) + "\" ";
}
sudo(WScript.Arguments(0), args );
} else {
WScript.Echo("usage: sudo COMMAND [PARAMS]");
}
sudo.bat
@echo off
cscript //nologo "%~dpn0_.js" %*
残念ながら同じコンソールでは実行できず,別ウインドウが開きます.suはsudoを使ってckwを新たに起動しとく.
他
kill,ps,sleep,time,uptimeなどはそれっぽいプログラム書いてC:\binとかに置く.他にも,catとか #.exeとか [.exeとかも作ると良いです.
バッチファイルだと,別のバッチファイルから呼び出すときに少し不便なので,余裕があれば同名の.exeとかも作ったり.perlとかrubyでも良いですが.
sshとscpはPuTTYに入っているやつをリネームして使ってます.
grep,diff,find,patchあたりは,たぶんWindows用のものがダウンロードできるのでそれを入れておきましょう.
vistaやwin7からは,mklinkが使えるので,lnコマンドもバッチファイルだけで実現可能でうれしい.
そのうちgithubとかに大量のバッチファイル類を上げておこう.
ただ,10年以上使っているうちに,かなり変なバッチファイルが増えてカオスになってるし,時期によってバッチファイル以外にも,C++,perl,ruby,hspだったりで書かれてて,メンテナンス性がとても悪いのが難点……
6/24 追記:http://itsme.home.xs4all.nl/projects/misc/patching-cmdexe.html以前はcmd.exeとかcommand.comとか書き換えて自分好みにしていたけど,最近は素のまま使ってます.
新gTLDの申請リストに,fletsとかが含まれて無いことに気づいたのだけど,取得されてNTTのフレッツスクエア乗っ取られたりしないんだろうか?
*Googleロゴとチューリングマシンとフラクタルと何か
Googleのロゴがチューリングマシンになってたので遊んでたら,怪しげなプログラムが出てきたのでしばらく眺める.
やってることは単純で,1から始まって,桁を順番に見つつ,0だったら1を,1だったら10を末尾に加えてるだけ.ためしに普通の言語で同じ文字列生成して眺めると0/1の列が規則的なフラクタル模様を作っている.フラクタルな数列といったら,フィボナッチ数列が有名なのだけど,何か違う.他の似たような性質の数列を探したけれど見当たらない.
ダメもとで適当に切り取った断片でググったら,http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibrab.htmlこんなのが.
http://ja.wikipedia.org/wiki/フィボナッチ列 これの0/1を反転させた版っぽいな.
フィボナッチ列って知らなかったのだけど,フィボナッチという名前のせいで最初の時点で候補からはずしてしまっていた.面白いな.
kmuroiが東京に来たっぽいので,恵比寿でご飯食べた後,kmuroiの新居に行く.
いまどき8GBのメモリ認識しないPCとか滅多にないでしょと思ってsaishinjiに8GBのメモリを買わせた結果,Windowsが起動しなかったらしい.夜中に8GBのメモリ持ってきてくれたので,代わりに4GBのメモリを渡す.X220のメモリが12GBになった.なんだか中途半端なので同じメモリ買って16GBにしたいところだけど,8GBで十分足りていたので,12GBのまま使おう.
来週からうちのチームにも2012年新卒の子がやってくるらしい.大丈夫かな.というのも,今忙しいのでどうやったら面倒見れるのか分からない.
今日も天気が悪いので,本を読んだり寝たりを繰り返す.
レンタルサーバやVPS契約したり解約したりしているうちにDNS登録わけわからないことになってるし,そろそろ整理しないと.さくらのネームサーバどうなんだろ.
いまさらだけど初めてRedis使った.
*Ruby1.9の正規表現で名前付きキャプチャ
名前付きキャプチャが使えたり使えなかったりする?そもそも動作が謎で心配になって調べてみる.
ぐぐってみると http://d.hatena.ne.jp/ku-ma-me/20090331/p1 ということらしい.
正規表現リテラル =~ 文字列
の場合だけ使えるっぽい.順序を逆にしたり,正規表現を一度変数に代入したりするとダメ.これは気持ち悪い.そもそも動いたら動いたでスコープの名前空間がさりげなく汚されるのがrubyっぽくない.
本当は,String#scanとかでも配列じゃなくて名前から引けるハッシュかMatchDataが渡されるようになってると良いんだけどな.
いままで知らなかったのだけど,rubyはPCREじゃなくて鬼車使ってるのか.
久しぶりに何もする予定が無いのでひたすら寝る.あとは掃除とか洗濯とか読書とかで一日終わった.
エンジニア決起集会という名前の毎年やってる新卒歓迎会のような会があった.去年は銀座だったけど,今年は浜松町か.会社が分かれてオフィスの場所が分散したせいで,みんな集まれる機会はあとは忘年会くらいか.
去年は風邪引いてて料理の味分からなかったけど,今年は大丈夫だった.
仕事でやっておきたいことがあったので会社へ.でも上手くいかず.どうしたものかなぁ.
部屋にある本が邪魔なので,ずいぶん前から電子化したいと思ってはいたのだけど面倒くさくて放置していた.部屋に本を増やしたくないので,買ったラノベとコミックは会社に置くようにしていたら,今度は仕事する机が狭くなってきたので,どうにかしなければいけない感じ.
というのも今日,Trapezoidが本を裁断してScanSnapでスキャンする様子を眺めていたら,慣れれば簡単に出来そうな気がしたので,自炊環境を整えるか考えている.
でも,もともとデジタルなデータをわざわざ印刷して製本してあるのに,それをばらしてまたデジタルに戻すという無駄な行為にとても抵抗がある.
理想的なのは全ての本が基本電子書籍で買えて,紙が欲しければ+αで料金払うと本が届くという状態だなぁ.