Hatena::ブログ(Diary)

Islands in the byte stream

2014-08-23

comaint(1)でCPAN moduleのcomaintainerを追加する

Perlを書かなくなるなどの理由でCPANモジュールをメンテしなくなるということはあるもので、そういう場合は App::PAUSE::Comaint を使うと簡単にcpan authorをcomaintに加えることができます。

comaint UNIVERSAL::DOES SYOHEX

私のCPANモジュールも最近は積極的にメンテしていませんが、必要に応じてどんどんcomaintにしていきますのでよろしくお願いします。

2014-08-13

fb-adb - 改良版adb shell

Facebookが adb shell の改良版を開発しているみたい。

https://github.com/facebook/fb-adb

"adb"とつけてはいるけど、実際には"adb shell" と "adb rcmd" だけを処理して他のサブコマンドはadbにフォワードしているだけ。

改良したところはREADMEによれば以下の点だ。

  • Binary clean (no LF -> CRLF mangling)
  • transmits and updates window size
  • distinguishes standard output and standard error
  • properly muxes streams with independent flow control
  • allows for ssh-like pty allocation control
  • propagates program exit status instead of always exiting with status 0
  • properly escapes program arguments
  • kills remote program
  • provides a generic facility to elevate to root without re-escaping

ざっくり言うと、いろいろまともにしたってことだけど、特に「adb shell $command」のstatus codeを返すようにした」とか「adb shellのstderrをちゃんとstderrとして出すようにした」あたりはかなりうれしくて、adbをwrapするツールを作りやすくなったと思われる。

例:

# exit status
$ adb shell false
$ echo $?
0

$ fb-adb shell false
$ echo $?
1

# stderr
$  adb shell 'echo foo >&2' >/dev/null # 何も表示されない
$  fb-adb shell 'echo foo >&2' >/dev/null
foo

当初GenyMotionで動かない という問題がありましたが、現在は解消されています。

2014-08-09

The Renaissance of TypeScript in Ruby

More and more TypeScript toolchains emerge in these days but unfortunately it was not true in the Ruby world: typescript-rails didn't work on Rails4.

Now it works on Rails4. typescript-rails, which provides us with the power of TypeScript in Ruby on Rails, is now controlled under the typescript-ruby group and new maintainers. We are also waiting for more maintainers and pull requests to employ tons of TypeScript best practices.

2014-07-16

YAPC::Asia 2014でninjinkunといっしょにモバイルアプリ開発について話します

以下のトークが採択されました。2日目の藤原洋記念ホールにて、15:20からです。

Mobile First Development for Perl Mongers

最近はPerlはあまりやっていないのですが、サーバーサイドとクライアントサイド(モバイルアプリ)をいい感じに協調して働くための仕組みを考えたりしています。YAPC::Asiaにくるエンジニアはサーバーサイドの方が多いと思うので、そういう方たちにとって面白い話ができたらいいなと思っています。

ところで、このトークは ninjinkun といっしょにやります。トークの内容が似た感じなので合体してみたのですが、せっかくだから2人でお互いの状況を話つつ、モバイルアプリ開発やサーバーサイドとの連携についてディスカッションしようと思います。

2014-07-09

maven artifactsのupload/downloadサーバは簡単につくれる

Androidのエコシステムをなんとかしないといけないとの思いから、maven repository serverを作り始めた。

https://github.com/android-frontier/tiny-maven-repository

要は、特定のパスにPUT(bodyはjarなどのbinaryがそのまま渡る)でアップロードし、GETでPUTしたファイルを配信する仕組みだけがあれば最低限の機能としては十分だ。上のサーバはアップロードしたファイルの maven-metadata.xml を読んでgradleのdependencies宣言を生成するなど、多少の便利機能をつけてある。

今後の予定としては、アップロードをgithubアカウントでできるようにしたり、aarの場合は要求するAndroidのバージョンや依存ライブラリを表示したりなどしたい。また、いまはRailsで実装しているが、Androidとの親和性を考えてJavaで実装しなおそうと思っている。