BlankTar

about | blog | works | photo

xargsってとっても便利なコマンドなのですが、あんまり複雑なコマンドは実行出来無いんですよね。例えば以下のようなコマンド。
$ ls | xargs -I{} avconv -i {} {}.mp3 && rm {}
mp3に変換して、成功したらオリジナルのファイルを削除したかった、的な。
これを実際に実行すると、変換が全て終わってから{}ってファイルを削除しようとします。意味ねぇ。

if文とかを使おうとすると状況はもっと酷くて、そもそもifなんてコマンドは無いとか言われます。シェル組み込みだものね、しかたない。

こういうときどうしたら良いのかというと、とくにどうしようも無いらしいので、shコマンドあたりを使います。
$ ls | xargs -I{} sh -c 'avconv -i {} {}.mp3 && rm {}'
こんな感じ。&&を使いましたが、もちろんパイプとかリダイレクトとかもろもろも使えます。

これならif文とかも使える。
$ ls | xargs -I{} sh -c 'if [ "{}" != "test" ]; then echo "{} is not test"; fi'
便利。
まあ、このコマンドに意味があるかどうかはともかくとして。

shじゃなくてもzshとかでも行けるはずなので、かなり高度なことが出来るかもしれません? …まあ、高度なことをシェルでやろうとするなという気もしますが。

参考:Bash - xargsで複数コマンドを実行する - Qiita

8月が半分終わりました。1日に始めた自由研究の中間報告です。
思いの他面白いデータが出て来なくてつまらない感じです。

ソースコードの行数と出力されるバイナリのサイズを比べたのですが、常に比例するというわけでは無いようですね。
ソースは増えたり減ったりしているのに対し、カーネルのサイズは割と安定して増加しているような印象です。
ソースコードの行数と出力されるカーネルのサイズ
黒いのがカーネル(bzImage)のサイズ、白いのがソースコード(.cと.h)の行数です。

さて、ここから推察されることは…とくに思い付きません。31日までにはなんとか考えておきます。

去年のbellumに引き続いて今年もハッカソン的なことをやりました。
今年作ったのはGPSと端末のジャイロセンサーを使ったARアプリ的なもの。
ハイブリットアプリとして動作させる予定だったのだけれど、アプリとしてコンパイルしたら上手く動かなかったので実際にはwebサービスになってます。

動く状態のものがwebで公開しているので試してみてください。新しめのandroidなら動作すると思います。
開発リポジトリも公開してありますのでそちらもどうぞ。

pacemとは?

AR空間上にビーコンという目印みたいなものを置くことができるアプリです。
ビーコンは誰でも見ることができるので、集合場所を伝えたりするのに使えるような気がします。

使用にはアカウントが必要ですが、IDとパスワードを決めるだけで登録できます。適当です。

サーバーサイド

去年と同じくnode.jsのサーバーで、socket.ioを使って通信しています。
データベースにはnode-sqlite3を使用。SQLは便利だね、やっぱり。
ホスティングはMicrosoft Azureを使いました。

クライアントサイド

three.jsを使って3Dの実装を行ないました。背景に出てる映像はMediaStream APIで取ったやつをvideoタグで流してるだけ。
3D空間の方をDeviceOrientationControlsっていうので端末の角度に合わせて回してやるとARっぽく。
位置情報はGeolocation APIを使いました。便利だねーHTML5。そのままだと取得に時間が掛かるので、適当にラッピングして使用。

アイコンなんかはgoogleが配布しているMaterial iconsをお借りしました。
手軽にそれっぽいUIが出来てありがたい。

去年よりもライブラリ自体は少ないのだけれど、なかなかヘビーな内容でした。ARって難しいね。まあ、それだけ面白くもあるのだけれど。
[ << ] [ 19 ] [ 21 ] [ 23 ] [ >> ]