ラベル コマンド の投稿を表示しています。 すべての投稿を表示
ラベル コマンド の投稿を表示しています。 すべての投稿を表示
2014/07/06

[ShellScript]adb-screencap で Android 端末の画面をキャプチャしてPCに持ってくるコマンド

adbでスクリーンショットを撮るやつ - teshi04 / adb-screencap.sh
↑を実行するのに ./adb-screencap.sh とかするよりパスの通っているところに置いて
コマンドっぽく adb-screencap ってしたかったので書き換えてみた。
ついでに複数端末接続時に端末を指定してキャプチャできるようにしてみた。

man の書き方とか contribution の書き方とかライセンスとかどうすればいいのかわからないので
誰か良い感じにして下さい。
全然エラー制御していなくて、端末が認識されていないのに実行したり、
複数端末が認識されているのに端末を指定せずに実行した時はコマンドの分だけエラーが出ます。

入門UNIXシェルプログラミングを途中まで読んでいたので
制御文の書き方レベルしか知らなくて
初めてのシェルプログラミングだったので空文字チェックで地味に詰まりました。

if [ -z $SERIAL ] だと $SERIAL が null の場合
if [ -z ] と評価されて unary operator expected というエラーが出ます。
if [ -z "$SERIAL" ] のようにクォートで囲って
if [ -z "" ] と評価されるようにすれば
-z (Zero length) の引数にちゃんと空文字が渡されてエラーになりません。

あ、あとコメントの TODO にある通り、オプション引数の有無でコマンドを分けていて微妙なので
誰か良い方法を知っていたら教えて下さい。よろしくお願いします。
GitHub→ wada811/ADB-Tools

参考
シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Life is very short
Bash - 今更ながら抑えておきたいシェルスクリプト用チートシート - Qiita
シェルスクリプトの条件評価ではまりやすいところ - ritchiekotzen's blog
シェルスクリプトで空文字列かどうか調べる。 - masa.edw the ハバネロブリーダー
2014/06/23

[Git]リモートブランチを全て pull する

Git のリモートブランチを全て pull したいことがあっても
一つのブランチしか pull できません。
一つ一つブランチを指定するのは面倒です。
そんな時は以下のスクリプトを実行すると
origin の全てのブランチを pull することができます。

#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/origin/} $branch
done

参考: Piotr Yordanov : git clone all remote branches locally
2014/06/21

Eclipse のローカルヒストリの開き方、あるいは find -exec の使い方

Eclipse のローカルヒストリは便利ですね。
ちょっとしたお試しで変更して戻せて、使っていない人はいなんじゃないかと思います。
便利すぎてちょっとした変更を Git などでバージョン管理しておらず、
Eclipse が落ちるなどしてローカルヒストリが辿れなくなると悲惨です。

調べてみるとローカルヒストリの保存場所がありました。
FAQ Where is the workspace local history stored? - Eclipsepedia
cd WORKSPACE/.metadata/.plugins/org.eclipse.core.resources/.history/
開いたら履歴ファイルを find で検索・絞り込みつつ、 open で開きまくります。
find . -type f -exec open {} \;
便利です。

参考
findのexecが便利 - マツモブログ
2014/05/12

Brewfile + Homebrew + Homebrew-caskで Mac の環境構築をする

パッケージ管理システム「Homebrew」とその拡張版「Homebrew Cask」を使って
手に入れた iMac に環境を移行/構築してみました。
また、Homebrew で管理されているパッケージや、
Homebrew-cask で管理されているアプリケーションを
コマンド一発でインストールできる Brewfile も使ってみました。
この Brewfile + Homebrew + Homebrew-cask という構成で
環境構築/環境統一の手間が大幅に省くことができます。

追記(2014/12/05):更新しました

Homebrew + Homebrew-caskで Mac の開発環境を構築する | DevAchieve

Homebrew を導入する

Command Line Tools for Xcode をインストールする

Xcode をインストールする
まずは AppStore から Xcode をインストールして下さい。
Command Line Tools for Xcode をインストールする
[ Xcode > Open Developer Tool > More Developer Tools... ] をクリックすると
Downloads for Apple Developer ページが開くので
Command Line Tools for Xcode をダウンロードしてインストールします。
参考: MavericksでCommand Line Tools for Xcodeをインストールする - Qiita

Homebrew をインストールする

Terminal で以下のコマンドを実行します。
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
参考: Homebrew — The missing package manager for OS X
Homebrew が正常にインストールできたか確認する
以下のコマンドを実行してエラーがあれば対処、再度実行します。
brew doctor

Homebrew-cask を導入する

Homebrew-cask をフォーミュラに追加する

Formula(フォーミュラ)は Homebrew で管理されているパッケージのことです。
Homebrew-cask は Homebrew では管理されていないので自分で追加する必要があります。
以下のコマンドで Homebrew-cask を Formula に追加することができます。
brew tap caskroom/cask
参考: これは便利!Homebrewに追加されたtapコマンドはリポジトリを追加して簡単にフォーミュラを増やせる | Macとかの雑記帳

Homebrew-cask をインストールする

Homebrew-cask を追加したら Homebrew の以下のコマンドでインストールします。
brew install brew-cask

おまけ: Homebrew-cask の使い方

アプリケーションを検索する
brew cask search chrome
google-chrome
アプリケーションをインストールする
brew cask install google-chrome
アプリケーションの実体は /opt/homebrew-cask/Caskroom に入り、
~/Applications にシンボリックリンクが作成されます。
それぞれのパスは以下のコマンドオプションで変更することができます。
--caskroom=/my/path, --appdir=/my/path
参考: homebrew-caskが良さそうなので導入してみた - About Digital
アプリケーションをアンインストールする
brew cask uninstall google-chrome
アプリケーションを更新する
brew cask update
古いアプリケーションを削除する
brew cask cleanup
その他の使い方
homebrew-cask/USAGE.md at master · caskroom/homebrew-cask

Brewfile で Homebrew パッケージを管理する

Brewfile を作成する

以下のようなファイルを作成します。
Install Packages と Install Applications の欄は自由にインストールしたいものを記述して下さい。
# Update Homebrew
update

# Upgrade Formulas
upgrade

# Install HomebrewCask
tap caskroom/cask
install brew-cask

####################
# Install Packages #
####################

install zsh

########################
# Install Applications #
########################

cask install google-chrome

# Remove outdated versions
cleanup
cask cleanup
参考までに僕の Brewfile にリンクをはっておきます。
dotfiles/Brewfile at master · wada811/dotfiles

Brewfile でインストールする

Brewfile のある場所で以下のコマンドを実行します。
brew bundle

参考:
BrewfileでHomebrewパッケージを管理する | SOTA
「BrewfileでHomebrewパッケージを管理する」をやってみた - sonots:blog

Brewfile を dotfiles と一緒に GitHub で管理する

環境移行/環境統一するためには他の Mac からアクセスできる場所に Brewfile を置いておかなければなりません。
ということで設定ファイルの dotfiles と一緒に GitHub で管理してしまいましょう。
手順は dotfilesをGitHubで管理する方法 | DevAchieve に書いています。

最後に

全部コマンドで環境構築しちゃう感じ、イケてるエンジニアっぽくて良いと思います。
2014/05/11

dotfilesをGitHubで管理する方法

ドットファイルと呼ばれるファイル名の先頭にドットがある設定ファイル(※)を
GitHub で管理する方法について調べたので書いておきます。(※ .zshrc とか)
Mac の移行時に環境構築で dotfiles リポジトリを clone するだけで
zsh とか git とかの設定が新しい環境でもすぐに反映されるので楽チンみたいです。
イケてるエンジニアがやってるって噂なので僕もやりたいと思います。

1. dotfiles フォルダを作成する

cd ~
mkdir dotfiles

2. dotfiles フォルダにドットファイルを移す

mv .gitconfig dotfiles
mv .gitignore dotfiles
mv .vim dotfiles
mv .vimrc dotfiles
mv .zsh dotfiles
mv .zshrc dotfiles

3. ドットファイルのシンボリックリンクを作成するシェルスクリプトを作成する

cd dotfiles
vi dotfilesInstaller.sh
#! /bin/bash
ln -s ~/dotfiles/.gitconfig ~/.gitconfig
ln -s ~/dotfiles/.gitignore ~/.gitignore
ln -s ~/dotfiles/.vim/ ~/.vim
ln -s ~/dotfiles/.vimrc ~/.vimrc
ln -s ~/dotfiles/.zsh/ ~/.zsh
ln -s ~/dotfiles/.zshrc ~/.zshrc
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

4. dotfiles を GitHub で管理する

git init
hub create
git add .
git commit -m "Initial commit"
git push -u origin master

GitHub で管理された dotfiles リポジトリの完成

wada811/dotfiles
これでイケてるエンジニアの仲間入りですかね!

新しい Mac で dotfiles をインストールする

cd ~
git clone git@github.com:wada811/dotfiles.git
clone したら dotfiles フォルダの dotfilesInstaller.sh を以下のように実行したら移行完了です。
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

参考
dotfilesをGitHubで管理,vimプラグインをNeoBundleで管理する方法メモ - Programming Log

dotfiles を追加する際には dotfilesInstaller.sh に追記しなければなりませんが、
以下のように記述すれば追記の必要もないようです。
なんとなく意味はわかりますが、完全に理解しているわけではないので採用していません。そのうち調べます。
#!/bin/sh
cd $(dirname $0)
for dotfile in .?*
do
    if [ $dotfile != '..' ] && [ $dotfile != '.git' ]
    then
        ln -Fis "$PWD/$dotfile" $HOME
    fi
done
DotfilesをGitHubで管理する | fixture.jp
2014/05/10

シェル変数を一覧表示、設定、削除する

環境移行中なのですが、以下の記事でインストールした Terminal-notifier.app を
新環境で HomeBrew でインストールしなおしたら
移行データのシェル変数が引き継がれてしまいました。
[Mac][zsh]時間のかかるコマンドが終わったら自動で通知する | DevAchieve

SYS_NOTIFIER が旧環境のパスのままだったのでコードから削除しましたが、
設定がそのままになってしまっているようでした。
確認のためにシェル変数を以下のコードで一覧表示してみました。
set
...
SYS_NOTIFIER="/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier"
...
上記のように設定されていたので削除したい場合は以下のように記述すれば良いです。
unset SYS_NOTIFIER

設定する場合はシェルで以下を実行すれば良いです。イコールの前後は空白あけてはいけません。
SYS_NOTIFIER="/usr/local/bin/terminal-notifier"

参考
シェル変数の一覧を表示するには
シェル変数を定義したり、削除するには
2014/05/09

ディレクトリのシンボリックリンクの作成

ディレクトリのシンボリックリンクの作成で毎回ハマるので備忘録として書いておきます。

うまくいくやつ

ln -s ~/dotfiles/.zsh/ ~/.zsh
ディレクトリが存在していた場合は
ln: ~/.zsh File exists という notice が出ます。

以下のように記述すれば存在しない場合のみ実行することができます。notice を消したいときに?
if [ ! -d ~/.zsh ]; then ln -s ~/dotfiles/.zsh/ ~/.zsh > /dev/null 2>&1; fi

参考
ディレクトリのシンボリックリンクでハマったこと - OpenGroove
linux - Create a symbolic link of Directory in Ubuntu - Stack Overflow

ダメなやつ

ln -s ~/dotfiles/.zsh ~/.zsh/
ln: ~/.zsh/: No such file or directory と表示されてエラー。

ln -s ~/dotfiles/.zsh/ ~/.zsh/
ln: ~/.zsh/: No such file or directory と表示されてエラー。

ln -s ~/dotfiles/.zsh ~/.zsh
→ 作成できるが、再度実行すると~/.zsh/.zshが生成される。
2014/05/08

sudoでリダイレクトをしたい

環境移行中なのですが、ログインシェルを zsh に変更したくなりました。
GitHub の README.md にコマンドを書いておいて
移行時に実行するだけにしたかったので
MacにHomeBrewとzshを導入してみた | DevAchieveの工程を
以下のように変更してみました。
echo '/usr/local/bin/zsh' >> /etc/shells
以下のように見事に拒否されます。
zsh: permission denied: /etc/shells
以下のように sudo を付けても同様に拒否されます。
sudo echo '/usr/local/bin/zsh' >> /etc/shells

shのオプションに-cを付ける

sudoでリダイレクトをしたいとき - Yuta.Kikuchiの日記
回避策1 : shのオプションに-cを付ける

man sudoを見てみます。そうすると以下のように実行せよという記述がありました。-cとして実行したいコマンドを""でくくるみたいです。
To make a usage listing of the directories in the /home partition.
Note that this runs the commands in a sub-shell to make the cd and file
redirection work.

$ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
というわけで以下のように記述すると成功しました。
sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"
chsh -s /usr/local/bin/zsh
活用事例:wada811/dotfiles#change-default-shell-to-zsh
2014/03/16

[Git][GitHub]hub コマンドでターミナルから Pull Request を送る

[Git][GitHub]Pull Request を送る手順、あるいは GPUImage for Android に PullRequest を送った話 | DevAchieve を書く際に色々調べていたら
以前導入した hub コマンドで Pull Request を送る方法があったのでまとめてみました。
hub: github/hub
導入記事: HomeBrew を zsh で使えるようにする。ついでに hub コマンドも。
参考記事: GitHubユーザーのためのhubコマンド - Qiita

Pull Request したいリポジトリをクローン

hub clone octocat/Spoon-Knife
Cloning into 'Spoon-Knife'...
remote: Reusing existing pack: 10, done.
remote: Total 10 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (1/1), done.
Checking connectivity... done

作業ディレクトリに移動

cd Spoon-Knife

作業用ブランチを切る

git checkout -b Spife
Switched to a new branch 'Spife'

編集してコミット

vi README.md
git add README.md
git commit -m "Spife is spoon, it's also knife."
[Spife 0758961] Spife is spoon, it's also knife.
1 file changed, 1 insertion(+)

リポジトリをフォーク

hub fork
Updating wada811
From github.com:wada811/Spoon-Knife
* [new branch] master -> wada811/master
new remote: wada811

変更をプッシュ

git push wada811 Spife
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 388 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:wada811/Spoon-Knife.git
* [new branch] Spife -> Spife

Pull Request を送る

hub pull-request
https://github.com/octocat/Spoon-Knife/pull/1778

hub コマンドを入れたものの全然使ってなかったので積極的に使っていこう。
2013/12/30

2013年に @wada811 が読んだ技術書まとめ

2013年も終わりに近づいているので@wada811が読んだ技術書を振り返ってみようかと思います。
2012年はこちら→2012年に @wada811 が読んだ技術書まとめ | DevAchieve(約40冊)

2013/03/02 [書評]正規表現辞典 | DevAchieve

正規表現辞典は本当に良い。
通読しても良し、かいつまんで読んでも良し、辞書としても良しの三拍子揃った素晴らしい書籍です。
正規表現が使えれば大抵のテキスト処理は簡単にできるのでエンジニアもそうでない人も読んだほうが良いです。
ついでに僕の Amazon リンクから買うとアフィリエイト料が入ってなお良しです。
(最近、アフィリエイト料率が下がって全然儲からないです。つらい。)

2013/05/31 [書評]モバイルデザインパターン | DevAchieve

デザイン系の書籍は [書評]iPhoneアプリ設計の極意 ―思わずタップしたくなるアプリのデザイン に続いて2冊目。
会社にあったので読んでみた。内容的にはiPhoneアプリ設計の極意とそんなに変わらないかも。
それぞれのデザインパターンについて簡潔な説明でまとめた付録がわかりやすかった。どちらか一冊で良さそう。
もう一冊読むなら一味変えてインタフェースデザインの心理学を読んだほうが得るものありそう。
あと、ユーザビリティで有名っぽいニールセン博士のモバイル・ユーザビリティも微妙に気になってる。
へいしゃー!買ってくれー!間に合わなくなっても知らんぞー!!

2013/08/25 [書評]HTTPの教科書 | DevAchieve

概要を知るには良い感じの本です。挿絵とか文体とか読みやすくてわかりやすかったです。
Web 関連の技術や必要な知識についてHTTPの教科書のテイストで解説している本があったら
Web 系プログラマの新人教育に使えそうな気がします。
Web への攻撃技術という章でセキュリティ関連の解説もわかりやすく行われているので大変良いです。
(引越に際して売ろうかと思っていたけど取っておこうかな)

2013/08/29 [書評]達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ | DevAchieve

データベース初心者がSQLを極めるためのオススメ書籍6冊の本のうち、読んだ本3冊目です。
ちなみに達人に学ぶ SQL徹底指南書は読んでません。
結構 SQL は書けるようになって複雑なのとか行けるようになったから
そこまで切羽詰まってないので達人に学ぶ SQL徹底指南書はいいかなぁって感じです。
それより DB 設計とかパフォーマンスチューニング的な所を身につけていきたいです。
DB 設計については達人に学ぶDB設計 徹底指南書が良かったので何とかなりましたが、
パフォーマンスチューニングはどこから知識を得ればいいんでしょうね?
数十万件規模のテーブルをジョインジョイントキィするとサービスをKOしてしまって
開発第二ラウンドが発生してしまうので勘弁願いたいんですよねぇ。

1年で書籍4冊の書評を書いた!

2012年は約40冊読んで25冊くらい書評書いたのに今年少なすぎじゃないか?アカン…。
まぁその分DevCameraの開発にかなりの時間を割いたし、
書籍を読む以上に Androider としての技術力が上がったから良いかな?
Android の NDK とか OpenGL, OpenCV のような特殊な事以外だったら
書籍無くてもリファレンスとか見てだいたい実装できそうな気がする。
まぁアニメーションとか UX 的な気持ちよさみたいな部分の実装能力はまだまだだけど。

読んだけど書評を書いていないのは以下の7冊かな。
【改訂新版】 Linuxコマンド ポケットリファレンス
良かった。手元においておきたい感じだけど
普段使うコマンドってそんなに変わらないから使用機会が少ないのが難点。
しかも家に置いてあるという。会社だったらググって解決なので使い所が難しい。
入門UNIXシェルプログラミング
まだ読み途中で積ん読になってる…。
興味はあるし、ちょっとしたシェルスクリプトで手間が省けたら嬉しいから学びたいけど
いかんせん使用機会の少なさがモチベーションの低さになってしまう。
入門 Androidアプリケーションテスト
UnitTest やろうというのが2013年の目標だったので買ってみた。
しかし、開発したアプリがカメラ機能がメインなのでテストがやりにくくて全然やってない。
仕事でカメラとか端末機能を使わないアプリでは UnitTest をやれたので良かったと思う。
Smashing Android UI レスポンシブUIとデザインパターン
デザイン系の書籍3冊目で、珍しく Android をテーマにしたデザインパターン本です。
凄く良い本だったし、ちゃんと書きます。放置しててごめんなさい…!
書きました→[書評]Smashing Android UI レスポンシブUIとデザインパターン | DevAchieve
OpenGL ES 2.0 Androidグラフィックスプログラミング
OpenGL ES を Android から呼び出す方法を解説している本です。コレも記事書きます…!
年をまたいでしまう…!ごめんなさい…!
書きました→[書評]OpenGL ES 2.0 Androidグラフィックスプログラミング | DevAchieve
Effective Java 第2版
ピアソン桐原社の技術書などが在庫限りという事で入手困難に陥る前に買いました。
記事書きます…!読んだらすぐに書評書かないとダメだ…!
書きました→[書評]Effective Java 第2版 | DevAchieve
プレゼンテーションZen 第2版
こちらもピアソン桐原社の書籍で、会社にあったので読みました。
4月になる前にこのへんの書籍の書評を書こう…!

Android も良いけど他のことももっと色々出来るようになっていこう!
そしてちゃんと書評記事を書こう!速さが足りない!
2013/08/16

[HomeBrew]正規表現でファイル名を置換するrenameコマンド

Android Asset Studioでランチャーアイコンを生成するのだけど
ファイル構成が以下のようになっていて毎度ファイル名を修正するのが面倒だったので
rename コマンドをインストールしてみた。
rename // plasmasturm.org

res
├── drawable-hdpi
│   └── ic_launcher.png
├── drawable-mdpi
│   └── ic_launcher.png
├── drawable-xhdpi
│   └── ic_launcher.png
└── drawable-xxhdpi
    └── ic_launcher.png
brew install renameでやってみると何故か失敗するので調べてみると以下のようになっていたので
require 'formula'

class Rename < Formula
  url 'http://plasmasturm.org/code/rename/rename', :using => :nounzip
  version '0.1.3'
  homepage 'http://plasmasturm.org/code/rename'
  sha1 'a2235a402d18495513edf690445e0030f31c9ab3'

  def install
    system 'pod2man', 'rename', 'rename.1'
    bin.install 'rename'
    man1.install 'rename.1'
  end
end
以下のように修正したら成功しました。
require 'formula'

class Rename < Formula
  homepage 'http://plasmasturm.org/code/rename'
  url 'https://github.com/ap/rename/archive/v1.600.tar.gz'
  sha1 'a7946ce3602e3810aaa70300674ccb26832634ed'

  def install
    system 'pod2man', 'rename', 'rename.1'
    bin.install 'rename'
    man1.install 'rename.1'
  end
end
これで rename コマンドが使えるようになったけど再帰的にリネームはできなっぽいので
以下のようなコマンドで対応しました。
find res -type f -name 'ic_launcher.png' | xargs rename 's/launcher/orientation_landscape/'
res
├── drawable-hdpi
│   └── ic_orientation_landscape.png
├── drawable-mdpi
│   └── ic_orientation_landscape.png
├── drawable-xhdpi
│   └── ic_orientation_landscape.png
└── drawable-xxhdpi
    └── ic_orientation_landscape.png
正規表現使ってないけど rename コマンドが便利な時が来るはず。

きっかけ


これよりは便利。@gabuさんありがとうございます。
2013/06/03

[zsh]Gitのコマンドやブランチ名を補完できるようにする

zshでgitのコマンドやブランチ名を補完できるようにする - QNYP Blogを見て、
記事中の動画のブランチ名がターミナルに常に表示されているせいか
何故かブランチ名をターミナルに常に表示させる方法として記憶が刷り込まれて
設定完了するまで気が付かなかった @wada811 です。

とりあえず色々補完ができたら便利そうなので設定しました。
Mac に最初から Git 入っていたと思う(とりあえず HomeBrew でインストールした記憶はない)ので
補完定義ファイルをダウンロードして設定する方式で設定しました。

まずは ~/.zsh/completion/ に補完定義ファイルを入れるためのディレクトリを作成します。
mkdir -p ~/.zsh/completion/
次は以下の2つの補完定義ファイルをダウンロードしてきます。
cd ~/.zsh/completion/
curl -O https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
curl -O https://raw.github.com/git/git/master/contrib/completion/git-completion.zsh
curl -Oでリモートファイルをローカルファイルに書き込み保存してくれるらしい。Output か。
git-completion.zsh を _git にリネームする。
mv git-completion.zsh _git
以下のような構造になっていれば良いらしい。
tree ~/.zsh/completion
/Users/wada/.zsh/completion
├── _git
└── git-completion.bash

0 directories, 2 files
と、tree とか出てきて、なにこれ便利!いいな!と思ったらbrew install treeで使えるようになります。
あとは、vi ~/.zshrcで以下のように記述してsource ~/.zshrcする。
fpath=(~/.zsh/completion $fpath)

autoload -U compinit
compinit -u
rm -f ~/.zcompdump; compinitもした方が良いらしい。

ブランチ名の補完が効くようになったので今度はブランチ名を常に表示させる設定をしたい。
2013/05/13

コマンドラインJSONプロセッサ jq をインスールする

JSON をフォーマットしてくれたり抽出したりしてくれるすごいやつです。

インストール方法は Download jq にあるように
brew install jqとすればできるようなのだけどエラーで失敗するので
バイナリの方をダウンロードしてきてchmod +x jqで実行権限を付与して
パスの通ったところに置けば使えます。

簡単に使い方を説明すると以下のような JSON あったとして、
{"Exception":{"stacktrace":["at [SplashActivity#onCreate:46]","at [Instrumentation#callActivityOnCreate:1047]","at [ActivityThread#performLaunchActivity:1623]","at [ActivityThread#handleLaunchActivity:1675]","at [ActivityThread#access$1500:121]","at [ActivityThread$H#handleMessage:943]","at [Handler#dispatchMessage:99]","at [Looper#loop:130]","at [ActivityThread#main:3701]","at [Method#invokeNative:-2]","at [Method#invoke:507]","at [ZygoteInit$MethodAndArgsCaller#run:866]","at [ZygoteInit#main:624]","at [NativeStart#main:-2]"],"name":"java.lang.OutOfMemoryError"},"PackageInfo":{"packageName":"com.wada811.devcamera","versionCode":1,"versionName":"1.0"},"SharedPreferences":{"isLatestversion":true},"Build":{"VERSION.RELEASE":"2.3.4","DEVICE":"SO-01C","MODEL":"SO-01C","MANUFACTURER":"Sony Ericsson","BRAND":"docomo","VERSION.SDK_INT":10}}
これをjq . report.jsonで以下のように表示することができます。
{
  "Build": {
    "VERSION.SDK_INT": 10,
    "BRAND": "docomo",
    "MANUFACTURER": "Sony Ericsson",
    "MODEL": "SO-01C",
    "DEVICE": "SO-01C",
    "VERSION.RELEASE": "2.3.4"
  },
  "SharedPreferences": {
    "isLatestversion": true
  },
  "PackageInfo": {
    "versionName": "1.0",
    "versionCode": 1,
    "packageName": "com.wada811.devcamera"
  },
  "Exception": {
    "name": "java.lang.OutOfMemoryError",
    "stacktrace": [
      "at [SplashActivity#onCreate:46]",
      "at [Instrumentation#callActivityOnCreate:1047]",
      "at [ActivityThread#performLaunchActivity:1623]",
      "at [ActivityThread#handleLaunchActivity:1675]",
      "at [ActivityThread#access$1500:121]",
      "at [ActivityThread$H#handleMessage:943]",
      "at [Handler#dispatchMessage:99]",
      "at [Looper#loop:130]",
      "at [ActivityThread#main:3701]",
      "at [Method#invokeNative:-2]",
      "at [Method#invoke:507]",
      "at [ZygoteInit$MethodAndArgsCaller#run:866]",
      "at [ZygoteInit#main:624]",
      "at [NativeStart#main:-2]"
    ]
  }
}
すごい!
詳しい使い方は jq Manual を見てください。
2013/05/12

figlet コンソールで文字列をAA化できるコマンド

[小ネタ]コンソールの文字をAA化して表示するツール-Figlet | Developers.IOを見て
HTML ソースとかにこういうのが入っていたら遊び心があって面白いなーとか思うので
入れてみた。
Terminal から HomeBrew で以下のようにインストールするだけで使える。
brew install figlet

figlet "DevAchieve"
 ____              _        _     _                
|  _ \  _____   __/ \   ___| |__ (_) _____   _____ 
| | | |/ _ \ \ / / _ \ / __| '_ \| |/ _ \ \ / / _ \
| |_| |  __/\ V / ___ \ (__| | | | |  __/\ V /  __/
|____/ \___| \_/_/   \_\___|_| |_|_|\___| \_/ \___|
等幅フォントじゃないとズレるし、 line-height が小さめじゃないと少し微妙かも。
2013/05/10

[zsh]Terminalでhistoryからのコマンド補完

Terminal で history からのコマンド補完ができるよ!
という記事を読んだので設定してみたが動かなかったので
漢のzsh から該当部分を見つけ出して設定した。
【コラム】漢のzsh (4) コマンド履歴の検索~EmacsとVi、どっちも設定できるぜzsh
漢のzsh 読まなきゃなぁ。

vi .zshrc で以下を記述して
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
source .zshrc で設定を読み込んだら Ctrl + p で遡ったりできる。便利。
2013/04/22

[Subversion]svn:ignoreなど設定値のみコミットする

Subversion 面倒臭い @wada811 です。
なんか Android で Subversion 使っていたら
bin とか gen とかコンフリクトするんですけど。
めんどくさいやめてください force commit とかないんですか。

調べてみるとまずコミットするべきではないようです。
xsharing | 自動生成されるファイル/ディレクトリをコミットすんじゃねーよ

じゃあ svn:ignore というやつを設定してやろうではないかということで
svn propedit svn:ignore --editor-cmd vi とかやって bin とか gen とか 追加するわけですよ。
んじゃあ確認してみるかと
svn proplist -v とかやってみるといないわけですね。
なんだと!と思ってググってみるとどうやらコミットしてやらなければいけないらしい。面倒臭い…。

安西先生…。 git が使いたいです…。

どうせ学ぶなら git が学びたいのですよ。

話しそれたけど設定値もコミットしないといけないのでコミットするかと思うけど
まだソースコードはコミットしたくないのでどうしようかと思ったら
StackOverflow神は言った。
設定値だけコミットできるよ、と。
svn commit --depth empty . -m "Modify svn externals definition only."
svn - Commit only property changes on root of repo, not files - Stack Overflow

ところで Android で Subversion 使う時コミットに入れないのは bin と gen だけでいいんです?誰か教えてー
2013/04/21

[Subversion]指定ディレクトリ以下の「.svn」フォルダを全て削除する

Subversion というやつはトラブルとなんだかよくわからず面倒くさいので
バックアップを残して再度チェックアウトすることが度々あるのだけど、
チェックアウトしてきたプロジェクトにバックアップから
変更とか新規のファイルを持って行くと「.svn」フォルダが残ってたりして
これまた面倒臭いことになるので「.svn」フォルダを全滅させたいとよく思います。
僕は Subversion に面倒臭い思いしかさせられていないので。

そんな時は以下のコマンドを実行して貴様らの命はあと僅かだ!とか心の中で呟きながら
find . -type d -name ".svn"
以下のコマンドで「.svn」フォルダを殲滅してやりましょう。
find . -type d -name ".svn" -print0 | xargs -0 rm -rf

解説

find . -type d -name ".svn": カレントディレクトリ内の「.svn」というディレクトリを検索する
find . -type d -name ".svn" -print0 | xargs -0 rm -rf
-print0: パス名にヌル文字をつけて標準出力に出力する
xargs -0: 区切り文字をスペースや改行からヌル文字に変更して以降のコマンドを実行する
rm -rf: 通常ディレクトリの削除でエラーになるところを強制的にディレクトリごと削除する

タグ(RSS)