hackugyo
5/17/2013 - 5:30 AM

My miscellaneous tips

My miscellaneous tips

=============
雑多Tips
=============

.. contents:: :depth: 2

- 便利なスニペットについてはここも見とけよ見とけよ

  - https://gist.github.com/hackugyo/6d148596c0f305b7d97d
  - とくに, https://gist.github.com/hackugyo/6d148596c0f305b7d97d#file-oneliners_ruby-sh

Mac
==================

--------------------
ショートカット
--------------------

- ファイル選択ではCmd + Shift + gでファイルのパスを入力できるようになる
- Cmd + deleteで行のカーソルから左側の文字だけを消せる
- Mission Controlの調子が悪いときは,ps aux | grep -i dock でDockを探してkillし,Dockを再起動させると直る
- historyコマンドの履歴は~/.bash_historyにたまっていく

  - http://apple.stackexchange.com/questions/34299/how-can-i-delete-saved-commands-from-terminal
    
- ファイル選択ダイアログではShift+Cmd+Gでパス入力ボックスを出せるので便利
- http://d.hatena.ne.jp/zariganitosh/20140523/minimum_bash_keybind

  - Opt+クリックで,カーソルをクリックした位置に移動
  - Ctrl+Wで,次の左側スペースまで削除(つまりオプションを削除できる)
  - Ctrl+-で,undoできる


- fn + Opt + F1; Opt + Lでシステム環境設定の検索バーに移動できるので,そこにDockとうちこめばDockに行ける

  - http://macfan.jp/guide/2012/04/04/post_843.html
- Alt + vで √ が入力できる
- スクリーンショット: コマンド+Shift+4
- Mac OS Xでの強制終了: Command + Opt + Esc
- Mac OS Xで,見つかったファイルをFinderで位置表示するには,Cmdを押しながらクリック

  - http://inforati.jp/apple/mac-tips-techniques/system-hints/how-to-show-a-macos-spotlight-search-result-with-finder.html

- スリープ復帰直後にBluetoothデバイスとの接続が切れるので,「よく使う項目」に設定した

  - http://d.hatena.ne.jp/minus9d/20130611/1370955363
- 行末移動はC-e

  - EclipseではCmd + ->なので注意

- 文節移動はOpt + < or Opt + >
- gitにシンボリックリンク先みたいなものをcommitする

  - http://www.zero4racer.com/blog/253

- Cmd + Opt + Tで入力可能な記号一覧が出せる
- ターミナルからの検索はmdfind

  - http://blog.layer8.sh/ja/2012/04/16/mac%E3%81%AE%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%8B%E3%82%89%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%AB%98%E9%80%9F%E3%81%AB%E6%A4%9C%E7%B4%A2/

- ファイル名でgrepしたいときはfind ./ -name file_name.exe
- `CodeRunner <http://veadardiary.blog29.fc2.com/blog-entry-4683.html>`_ を買おうと思ったら高かったので, `AppShopper <http://salarymanplus.com/otoku/app-shopper.html>`_ に放り込んでおいた

  - 購入しますた

- コマンドラインから通知センタを出すgem(terminal-notifier)を入れた

  - http://heartbeatheart.blogspot.jp/2012/08/terminal-notifier.html
  - terminal-notifier -message hogehoge

- ファイル検索してエディタで開くのが面倒なので,atomfind / emacsfindというシェル関数を作った.

  - atomfind *.sql # *.sqlファイルをfind ./ -nameして一覧表示し,選択されたものをatomで開く

- `Homebrew Cask <http://caskroom.io/>`_

  - brew install caskroom/cask/brew-cask
  - brew cask install macs-fan-control
  - brew cask install refresh-finder ## finderのリフレッシュが遅いので入れておく
  - brew cask install kext-utility

    - `Yosemiteにアップデートしたらwifiが途切れるので対処法を試してみた。 - MY ENIGMA <http://d.hatena.ne.jp/meison_amsl/20141115/1416049221>`_

--------------------
Mac App
--------------------

- `Mac用のiOSアプリのプロトタイプ作成ツールの決定版「Form」がGoogleパワーで無料解放!! <http://www.softantenna.com/wp/mac/relative-wave-form-free/>`_ 
- RecorditではなくLICECapを使おう

  - `Cockos Incorporated | LICEcap <http://www.cockos.com/licecap/>`_
  - Recorditは勝手にWebにアップしちゃうからな〜
  
--------------------
Dockのアイコン変更
--------------------

- IMG2ICNS で.icns画像を作成

  - http://www.img2icnsapp.com/
- アプリケーションのパッケージ内容を見て,Contents/Resourcesあたりに置く

  - http://dekoboko.org/pc/icon-change.html

--------------------
Excel
--------------------

- セル内の改行は Cmd + Opt + Enter(めんどくさいからCmd + Opt + Shift + Enterでもいいよ)
- 選択範囲のクリアは、fn + delete

ターミナル Terminal
====================

- shellの話だよー

- 入力待ちの突破にはexpect

  .. code-block:: bash

                  #!/usr/bin/env bash
                  (set -eu -o pipefail; \
                  scp_password=$1; \
                  version_tag=${2:-`date '+%Y%m%d'`}; \
                  expect <<EOF
                  set timeout 10
                  spawn scp -P 22 .//app/build/outputs/apk/myapp-debug.apk root@xxx.xxx.xxx.xx:/var/www/html/apps/${version_tag}.apk
                  expect "root@xxx.xxx.xxx.xx's password:"
                  send "${scp_password}\n"
                  expect eof
                  EOF
                  )

- パイプ対応には-pオプションを見る

  .. code-block:: bash

                  gsearch_d ()
                  {
                    ( if [ -p /dev/stdin ]; then
                        a=$(cat -);
                      else
                        a=$@;
                      fi;
                      argv=("$a");
                      str="$(echo -n $argv | nkf -wMQ | sed 's/=$//g' | tr = % | tr -d "\n")";
                      open https://www.google.co.jp/search?btnI'&'q="$str" & exit )
                  }
 
- パッケージ名を変更する(配下のディレクトリ内の文字列を変更する)

  .. code-block:: bash

    $ find . -type f -name '*' -print0 | xargs -0 perl -i.bak -pe 's/jp.co.hackugyo/jp.co.hackugyo2/g'
    $ find . -type f -name '*.bak' -print0 | xargs -0 rm -rf

- `[メモ書き] windowsから送られてきたzipがMacで文字化けするの何とかする - Qiita <http://qiita.com/gogotanaka/items/1830630d7558d1e03ff2>`_
   
  - $unar
    
- 画像のリサイズ

  - sips -Z 640 *.jpg
  - 比率を保って,高さまたは幅の最大値を640としてresize

- sshコマンドを自動補完するbash-completionを入れた

  - http://qiita.com/soramugi/items/846e6eac0ce1d3dc1e42

- findで検索した結果を次のコマンドに渡したいとき,ただパイプするだけではだめ。

  - find ./ -name *.sql | emacsclient --no-wait
  - find ./ -name *.sql | xargs -0 emacsclient --no-wait # こっちを使うこと
  - find ./ -name *.sql -print0 |  xargs -0 emacsclient --no-wait # はるかによい

    - http://openlab.dino.co.jp/2008/02/20/133431188.html
- printenvで環境変数一覧になる
- unsetで環境変数を削除できる
- setするときはexport ENV_NAME=env_value

- column -tでタブ区切りテキストをきれいに表示できる

  - http://qiita.com/__Bren/items/62d8c11e818e4cafb0d5
  - column -s cで"c"をデリミタにできるみたいだけどよくわからない

- echo $(whoami)で現在のユーザ名が出せる
- USB機器の一覧を出すusb_listというコマンドを作った,list_usbsというコマンドも作った

  - http://qiita.com/jumbOS5/items/98b84da339833e42df8a

- zipするときに特定フォルダを除外するには

  .. code-block:: bash

    zip -r whatever_you_want.zip ./what_you_zip/ -x ./what_you_zip/.git/\*

  - 最後のバックスラッシュアスタリスクがないとだめ
  - http://kagen88.blogspot.jp/2012/12/linuxzip.html

.. code-block:: bash

  chmod u+x ~/Desktop/SMBC_UNINSTALL.command

- `shell scriptを書くときにオプションを付与出来る <http://qiita.com/bsdhack/items/4f408b8b856a54e1c1b9>`_

.. code-block:: bash

  #!/bin/sh
  set -e # stop when an error happens
  set -x # show commands in strderr before execute it
  echo "mokotan"

  
- which コマンドで場所がわかるけど,type がよい

  - http://qiita.com/kawaz/items/1b61ee2dd4d1acc7cc94
  - http://d.hatena.ne.jp/kanonji/20100210/1265828299
  - whereis というコマンドはない

- for F in btn_z01_*; do mv $F ${F/z01/new};done
- seq -f "201303%02g.rst" 31 | xargs touch #create_serial_files
- nkf

  - コマンドラインから文字コード変換したかったのでsudo port install nkfした

- ファイル名置換

  - linuxのrenameコマンドがほしいよー
  - http://d.hatena.ne.jp/lurker/20061120/1163981280
  - 入れた! http://qiita.com/shuhei@github/items/cf1ddf373d1f83d5d667
  - これで置換可能

    .. code-block:: bash

      find . -type f -iname 'btn_cancel_*.png' -print0 | xargs -0 rename 's/.png/_off.png/i'

- ln -s source directory でシンボリックリンク作成

  - lnのリンク先を確認するにはreadlink
- grepでSEARCH_WORDを,カレントディレクトリ以下から再帰的に検索する

  .. code-block:: bash

    grep -rn -e SEARCH_WORD .

  - mdfind使ったほうが早い

- sipsコマンドを使うと画像の情報が見られる

  - sips -g pixelHeight -g pixelWidth *.png
  - http://blog.hekt.org/archives/5031

- update-alternativesはMac OS Xにはないのか
- echo "暗号化前" |  openssl enc -e -aes-256-cbc -salt -base64 -pass pass:password | openssl enc -d -aes-256-cbc -salt -base64

- bash_profileにlsで色をつける設定を書いた

  - sourceコマンドで再読みこみすると反映される
  - めんどくせえからrelaod_bashrcというaliasをつけた

- pathを出すときに改行を入れたいから'echo -e ${PATH//:/\\n}'を作った

  - これもめんどくせえからshow_pathというaliasを設定した

- aliasコマンドで現在のalias一覧がとれる
- bookmarkはC-x r b(一覧表示はC-x r l)

- binarycookiesファイルのリーダを入れた

  - http://www.securitylearn.net/2012/10/27/cookies-binarycookies-reader/
  - /Users/HACKUGYO/shellscripts/BinaryCookieReader.pyにしまった

- Cmd + Wでタブが閉じるのがうっとうしいので,ショートカットをOpt + Shift + Cmd + Wに変えた

  - http://blog.basyura.org/entry/20090130/p3
  - ターミナル.appはアプリケーション/ユーティリティの中にあるので注意

- Terminal内のブックマークを作れる `Bashmarks <https://github.com/Bilalh/bashmarks>`_ を入れた

  - http://stackoverflow.com/a/8859820/2338047
  
  .. code-block:: bash

    $ s shortname # save current path as `shortname`
    $ g shortname # cd to stored path
    $ o shortname # open the bookmark in Finder
    $ y shortname # open the bookmark in a new tab

- `percol <https://github.com/mooz/percol>`_

  - sudo easy_install percol
  - ps aux | percol
  - これで標準入力のなかから1行を選択して標準出力することができる
  - from: http://qiita.com/yuku_t/items/f53a9d3ea92614b0927d

- ターミナルから設定画面を表示するショートカットを作った

  - # Laucnch an app setting screen in the device
  - # http://qiita.com/t2low/items/4ec1e9cab8621cd23396
  - appinfo() { adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:$1; }

----------------------------------------
ag
----------------------------------------

- 検索はag使った方がよい

  - http://blog.glidenote.com/blog/2013/02/28/the-silver-searcher-better-than-ack/

  - http://qiita.com/yuyuchu3333/items/4c57186e37db9eb3db15
  - 正式名称は`The Silver Searcher <https://github.com/ggreer/the_silver_searcher>`_
  - ag.elを入れた
  - agの必殺技として,ディレクトリに.agignoreを置いておけばag searchword
  - ignoreオプションでファイル名を指定して除外できる

    - `Ignoring files with ag – silver searcher <http://minimul.com/ignoring-files-with-ag-silver-searcher.html>`_

- ptもいいのだが検索オプションが弱すぎる.たとえばこんなふうにしてptをjqと組み合わせるといい

  .. code-block:: bash

                  # $ ./find.sh dir
                  (set -eu -o pipefail; \
                   dirname $0; \
                   pt price=\"10000\" $@ | ag "year=\"201[45]" | \ # 条件にあったsearchedディレクトリのファイルを探す
                     percol | tee /dev/stderr | \ # 検索の途中経過はstderrに吐いて見えるようにする
                     cut -d ":" -s -f 1 | \ ag の結果を整形
                     sed 's/\/searched\//\/target\//g' | \ # searchedディレクトリにあったファイルと同名でtargetファイルにあるものを探す
                     xargs nkf -u | ag FUND_NAME # 文字コードをutf8にして内部を検索 \
                  )

----------------------------------------
jq
----------------------------------------

- コマンドラインでJSONを操れるjqをインストールした

  - http://stedolan.github.io/jq/
  - http://beatsync.net/main/log20130428.html

  - curl http://218.219.151.11/projects/load_img/API/api01.json | jq "."

    
--------------------
curl
--------------------

- オプション-Lでリダイレクトを追う
- オプション-wでいろいろな情報を直接吐き出せる

  - http://www.hcn.zaq.ne.jp/___/unix/curl_manpage.html#O-write-out

- httpieを入れた(curlのかわり)

  - http://qiita.com/yuku_t/items/5df06d50c4c349cc0c1b
  - POSTのときはhttp -f POST
  - http://d.hatena.ne.jp/toritori0318/20130405/1365180205
  - http://d.hatena.ne.jp/suer/20110125/wget_curl_session
  - なんと--session=mokotanと名前をつけることでセッションを引き回すことができる!
  - ちなみにcurlのときは curl -X POST -d "key=value" -d "key2=value2" url


Eclipse
==============================

- 最近閉じたタブ:メニューバーの黄色い「←」を触ってごらん
- いいかい?新規ワークスペースを作ったら文字化けするもんなんだよ

  - それを解消するにはGeneral>Content Types>Text>Java Soucre File>Default encodingにutf-8を入れる
  - `Eclipseの文字コードをutf-8に設定する <http://kaworu.jpn.org/kaworu/2009-01-10-1.php>`_
- Eclipse Quicksearch も入れたよ

  - http://spring.io/blog/2013/07/11/eclipse-quick-search/

- `行の途中で";"、"{"を入力した際に行末に追加してくれる設定は[Window]-[Preferences]-[Java]-[Editor]-[Typing] <http://neta-abc.blogspot.jp/2011/10/eclipse-java.html>`_
- General - keys - Build CleanにShift + Ctrl + Cを定義した!
- Opt + Cmd + DOWNで行コピー
- Alt + F11でAndroid Device Chooser(ビルド用)を出せるぞ
- Ctrl + Qで最後に編集した箇所に飛べる
- ビルドを高速化するFAAPTを入れた!

  - http://forum.xda-developers.com/showthread.php?t=1907281
  - /Applications/adt-bundle-mac-x86_64/sdk/platform-tools
  - ここのaaptを入れ替えた
- Cmd + Shift + Rでファイル名指定で開くことができる!
- シンタックスハイライトが消えてしまったときは,Java > Editor >  Mark occurenceを確認
- Shift + Cmd + O でインポートの編成を自動整理
- Cmd + Shift + Y で選択文字列を小文字化
- 一部だけautoindentさせたくないときは,"@formatter:off"
- ターミナルプラグイン

  - http://alexruiz.developerblogs.com/?p=2428
  - Google謹製
  - utf-8をちゃんと読んでくれない
- Eclipseが勝手にJUNOになった件
- Cmd + Opt + A で矩形選択
- EclipseのWorkingSetには,プロジェクトだけでなくディレクトリ単位で指定出来る
- EclipseのSearchビューのExpand Allは,じつはショートカットがある.Opt+->
- Eclipseで,見ていたタブをBackward Historyするには,Cmd + [
- 同じファイルを別のタブで開く場合,Windows -> New Editorを選択する
- caller検索はCmd + Shift + G

  - http://www.otchy.net/20120617/eclipse-warp/

- `Export時にExlipseが落ちるようになったらBuild Automaticallyを切る <http://stackoverflow.com/a/15518699/2338047>`_
- `Eclipseデバッガを活用する <http://kompiro.hatenablog.com/entry/2013/09/29/Eclipseデバッガを活用する31のTips>`_
- `EclipseのメニューにAndroid SDK Managerが表示されない時の対処法 - スマホアプリを作るのだ! <http://kforce-ueda.hatenablog.com/entry/2014/09/25/105407>`_

Android
====================

- 関数型

  - `気持ちよくAndroidを書くために - Qiita <http://qiita.com/petitviolet/items/531ce42775333644ea49>`_
- 状態管理
  
  - `FlowとMortarの使用について、Square製の2つのライブラリ - Realm is a mobile database: a replacement for SQLite & Core Data <https://realm.io/jp/news/using-flow-mortar/>`_
    
    - https://github.com/square/flow/
  - `Droidux: ReduxをAndroidに持ち込んで状態管理から解放されよう! - Qiita <http://qiita.com/izumin5210/items/549fd15d97e9fc3b1ef7>`_
  - `[Android]Fragmentとのつきあい方を考える <http://www.slideshare.net/ichigotake/thinkaboutandroidfragments>`_
  - `LeakCanary: Detect all memory leaks! <https://corner.squareup.com/2015/05/leak-canary.html>`_
- `[翻訳] android best practice - Qiita <http://qiita.com/kgmyshin/items/a2358d54ffb3c5435d11>`_

  - なんか,よいパッケージ構成もなんだかなっていう感じだな
  - network
  - models
  - managers
  - utils
  - fragments
  - activities # 極力すくなくする
  - views

    - adapters
    - actionbar
    - widgets
    - notifications

  - styles.xmlには,少なくともText用のStyleを入れよう
  - colors.xmlは色の名前で定義して,ボタンの名前はstyleで定義しよう
- Cloudinaryすげえな

  - `add_ons - Cloudinary | 画像管理クラウドサービス - Qiita <http://qiita.com/fakestarbaby/items/4dc162071b415c2f13bb>`_
    
- `Android - Chrome Custom Tabs でもトラッキングの夢は見られない - Qiita <http://qiita.com/akitaika_/items/383cf77851ef51159931>`_
- `これから Android 開発をするなら抑えておきたい環境構築AtoZ - Qiita <http://qiita.com/KeithYokoma/items/3e9cf6c1fc98f1ea80c3>`_

  - キーストアの設定は,build.gradleに `props.load` を埋め込むことで外側に出しておくべき
- AsyncTaskLoader

  - `AsyncTaskLoader の使い方 (1/8) 〜 Thread と AsyncTask <http://android.benigumo.com/20140116/asynctaskloader-%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9-18-%E3%80%9C-thread-%E3%81%A8-asynctask/>`_

- mipmap-

  - `Android - 【Andorid】アプリアイコンは「mipmap-」というリソースディレクトリに入れるのがいいらしい - Qiita <http://qiita.com/operandoOS/items/53b0f2074a806aacd290>`_
  - `Androidのmipmapとdrawableについて - Qiita <http://qiita.com/gamako/items/c6b8aa43660ff6e76c14>`_


- `Android's matryoshka problem <http://delyan.me/android-s-matryoshka-problem/>`_

  - Fragmentは難しい

- Kioskモード

  - `Developing Kiosk Mode Applications in Android - Arnab Chakraborty <http://arnab.ch/blog/2013/11/developing-kiosk-mode-applications-in-android/>`_

    
- `Androidアプリを新規リリースする際のあれこれ - クックパッド開発者ブログ <http://techlife.cookpad.com/entry/2015/09/04/183000>`_

  - PlayStoreの文言の準備(タイトル[30文字], 簡単な説明[80文字], 詳細な説明[4000文字])
  - PlayStoreのストア用画像の準備(スクショ2枚, 高解像度アイコン[512x512], 宣伝用画像 [1024x500])
  - Bugレポート系ツール(Crashlyticsなど..)の動作確認
  - ログ収集系ツール(Mixpanel, GoogleAnalyticsなど..)の動作確認
  - 通信するAPIが社外ネットワークからアクセス可能か確認
  - デバッグ用のActivityがmainのAndroidManifestに含まれていないか確認
  - release用のkeystoreでビルドされているか確認
  - 利用しているOSSのオープンソースライセンスが明記されているか確認
  - applicationIdの確認

- `Y.A.M の 雑記帳: Facebookとそれ以外でACTION_SENDで渡すテキストを変える <http://y-anz-m.blogspot.jp/2014/04/facebookactionsend.html>`_

  - chooserかましてどこに渡されるのか把握したあと,パッケージ名で内容物を切り替えて再発射
  - なお再発射時はIntent#setPackageではなくIntent#setClassNameがよいらしい

- Facebookアプリ(要するに自分が名前を管理してないアプリ)のAndroidMarketページに飛ばしたい場合、market://search?q=<seach_query>&c=apps

  - `Linking to Your Products | Android Developers <http://developer.android.com/distribute/tools/promote/linking.html>`_

- `Communicating with Other Fragments | Android Developers <http://developer.android.com/training/basics/fragments/communicating.html>`_

  - Fragment間の通知はActivityを経由して行うということ

- https://github.com/alamkanak/Android-Week-View
- `Android - 設定画面のインテントアクションまとめ - Qiita <http://qiita.com/nein37/items/087ef3ab6a11d6bbf9e6>`_

  - ACTION_SYNC_SETTINGSで動機設定を行うことができる

- `Advocating Against Android Fragments <http://corner.squareup.com/2014/10/advocating-against-android-fragments.html>`_

  - うーん
  - https://github.com/xxv/android-lifecycle

    - この絵は役に立った

- adbで入ってpermissionがないときは run-as パッケージ名

  .. code-block:: bash

    % adb shell
    $ run-as com.exmaple.package.of.mine
    $ cd databases
    $ cat purchase.db > /mnt/sdcard/purchase.db
    % adb pull /mnt/sdcard/purchase.db ~/Documents/morningstar/purchase.db



- pidcatの使いかたがわからないよおお

  - https://github.com/JakeWharton/pidcat

- BlueStacksを入れたけどエミュレータとしては動かないのか?

  - http://toomva.blog60.fc2.com/blog-entry-409.html
  - adb connect 127.0.0.1で動いた

- Genymotionsのほうがいい

  - バージョン2.0になって,Google Playはプリインストールされなくなったので,zipをD&Dして入れておくこと
  - http://nahareport.blogspot.jp/2013/09/android-genymotion.html

- 複数行入力可能なEditText(キーボードに改行マークが出る)にしたい場合,inputTypeをtextMultilineにすること

  - http://pentan.info/android/edittext_inputtype.html
- 4.2系で開発するときの注意:

  - 古いversionCodeのパッケージを上書きできない

    - https://github.com/android/platform_frameworks_base/commit/7767eac3232ba2fb9828766813cdb481d6a97584#L24R5983
  - JavaScriptにインてフェースを公開する場合,annotationがproguardにつぶされないように注意

    - -keepattributes *Annotation*
    - http://d.hatena.ne.jp/hyoromo/20130421/1366527295

- Locale.getDefault()は正しく動かない

  - getResources().getConfiguration().localeを使うこと
  - http://developer.android.com/guide/topics/resources/localization.html

- WebViewのloadUrl()はrun()ではなくrunOnUiThread()で呼ぶこと(必要なら)

  - http://stackoverflow.com/questions/9854796/unknown-issue-with-webview-on-ics
  - http://d.hatena.ne.jp/sakura_bird1/20120720/1342758548

- Stringには変数を入れておくことができる

  - <string name="buybooks">本を%1$d冊買います</string>
  - getString(R.string.buybooks, 4);
  - http://y-anz-m.blogspot.jp/2011/03/android-xml.html

- ThemeでAnimationをセットしてもICSでは動かない

  - overridePendingTransition()を使うこと
  - http://stackoverflow.com/questions/11451943/why-my-close-activity-animation-doesnt-work-on-android-4-0-ics

- アイコンパックを買った

  - ~/Pictures/AndroidIcons/android_developer_icons_2/
  - http://www.androidicons.com/
  - 「3連ライン」は,ic_action_list というらしい

    - githubにけっこう落ちているもよう

- スクリーンキャプチャ(動画)

  - androidscrencast
  - http://code.google.com/p/androidscreencast/
  - javaws ~/Downloads/androidscreencast.jnlp で動かせる

  
- リリース用キーをデバグ用キーとしても使えるようにする

  -  keytool -importkeystore -v -srckeystore <リリース署名のファイル> -destkeystore <出力先ファイル> -srcstorepass <リリース署名のStoreパスワード> -deststorepass android -srcalias <リリース署名のエイリアス> -destalias androiddebugkey -srckeypass <リリース署名のKeyパスワード> -destkeypass android
  - 要するにパスワードとエイリアスとを変更した新キーストアを作る
  - これらのキーストアはハッシュが同一
  - 試しにハッシュをとってみればわかる

    -  keytool -exportcert -alias エイリアス -keystore debug.keystore | openssl sha1 -binary | openssl base64
    - 

- ~/Desktop/ShowAppSetting.command を作ったので,引数としてアプリのパッケージ名,device名を指定して起動してみて
- `AndroidStudio - Android StudioでDataBindingを使う - Qiita <http://qiita.com/nakaken0629/items/d858c18282bd196a537b>`_
- Google Play Sercices APIの一覧

  - `Google Playサービスを必要なだけAndroidStudioプロジェクトに追加する - Qiita <http://qiita.com/niusounds/items/f9a0ab3cbe07878ed8f6>`_
  - Google Play GameってQuestを作れるらしいぞ!?

    - `【Android】Google Play 開発者サービスについてまとめてみた | スマホ研究部 by ブレイブソフト <http://www.bravesoft.co.jp/blog/archives/592>`_


- `「Android 4.4だとちゃんと文字選択できるのに、4.2だとできない」というときはClickableSpanを疑う - Qiita <http://qiita.com/YusukeIwaki/items/b778b6e0c326caf55108>`_
- Otto

  - `Android - Ottoを使ってて気づいたこと - Qiita <http://qiita.com/tsuyosh/items/0f352edae2e67e79f19f>`_

    - BusHolderにpostするイベントは,enumで作った定数でよい.#post(HogeEvent.FOO); とか
    
  - うーんなんかeventはこんなにぽこじゃか立てる必要ないなあ

    - https://github.com/pat-dalberg/ImageNom.git

- `AndroidのSQLiteDatabaseの覗き方 - Qiita <http://qiita.com/cattaka/items/b10ef658b03cfa489576>`_
- intent://#Intent;scheme=myapp;package=com.rakuishi.myapp;endというインテントを飛ばすと……

  - `[Android] アプリが存在していればアプリを起動し、アプリが存在しなければマーケットを開くリンク - rakuishi.com <http://rakuishi.com/archives/6550/>`_
  - `Android Intents with Chrome - Google Chrome <https://developer.chrome.com/multidevice/android/intents>`_

- https://github.com/kevinsawicki/Android_Pusher 

  - リアルタイム通信サポートのPusherというやつに対応させる
  - べんりそう

- `ジョブキューを作ってくれるやつ <https://github.com/path/android-priority-jobqueue>`
- `savedInstancesをやりやすくしてくれるやつ <https://github.com/frankiesardo/icepick>`
- `Calendarの代替 <https://github.com/JodaOrg/joda-time>`
- `SharedPreferencesの暗号化 <https://github.com/scottyab/secure-preferences>`
- `JSONPullParser <https://github.com/vvakame/JsonPullParser/wiki/JsonPullParser_ja>`
- `Guavaをどっぷり紹介(I/O編) - Kengo's blog <http://blog.kengo-toda.jp/entry/20111124/1322142690>`_

  - ByteArrayOutputStreamが重くて落ちる場合FileBackedOutputStreamを使うとよい

- `タイトルとか決めてないけどこのままでもいいかもしんない: AndroidUIテストフレームワークのEspresso2.0が出たので試してみた <http://toshihirock.blogspot.jp/2014/12/androiduiespresso20.html>`_
- `RecyclerViewはListViewの代替ではないよねという話 - visible true <http://sys1yagi.hatenablog.com/entry/2015/01/09/090000>`_

  - RecyclerViewはStaggeredGridLayoutManagerのようなLayoutManagerを使っていろいろできる

- `20141120 ぬるぬる動くandroid tips <http://www.slideshare.net/yusukekonishi758/20141120-android-tips>`_

  - Method TrackingをLogcatから起動できるのでやってみよう

- Android4.4ではServiceキルされるとSTART_STICKYが効かずに死んでしまう

  - `android - Androidでアプリキル時にコールバックする方法 - スタック・オーバーフロー <http://ja.stackoverflow.com/questions/10811/android%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%AD%E3%83%AB%E6%99%82%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95>`_
  
----------------------------------------
Mashroom(6.0)
----------------------------------------

- `【Android M】アプリ内からPermission設定画面に遷移する(失敗編) - Qiita <http://qiita.com/operandoOS/items/4cbb441de2d10d549969>`_
- `既存アプリに影響するAndroid 6.0での変更点 - Firespeed <http://firespeed.org/diary.php?diary=kenz-1822>`_
- `Android - M Permissions対応についての簡単な記事 - Qiita <http://qiita.com/LyricalMaestro0/items/4bb59762e586e3504f79>`_
- `M Permissionsに対応するためのアクティビティ図 - visible true <http://sys1yagi.hatenablog.com/entry/2015/11/07/185539>`_

----------------------------------------
View
----------------------------------------

- 振動するようにする

  - https://github.com/teoinke/ShakeAnimation
  - `Android Cookbook: Recipe Make a View Shake (Recipe 671, Revision 2151) | Android Tutorial <https://androidcookbook.com/Recipe.seam;jsessionid=184679960D7135D361B76DB5827C8393?recipeId=671&recipeFrom=ViewTOC>`_
  - `shaking / wobble view animation in android - Stack Overflow <http://stackoverflow.com/questions/9448732/shaking-wobble-view-animation-in-android>`_
    
- https://github.com/TechFreak/WizardPager

  - WizardPagerでWizardを作ろう

- `AndroidのTextInputLayoutの色をカスタマイズする - woshidan's blog <http://woshidan.hatenablog.com/entry/2015/11/15/160542>`_
- ワンページスタイルをAndroidで実現するdiscrollViewかっこいいね

  - https://github.com/flavienlaurent/discrollview

- `Android - スクロールしない固定サイズのListViewを作成する - Qiita <http://qiita.com/androhi/items/73d47c261a4d8850fef3>`_
- `手軽にチュートリアルが組み込めるAndroidのライブラリ、MaterialShowcaseViewを使ってみる。 - さまよえる、Android <http://araiyusuke.hatenadiary.com/entry/2015/10/28/175559>`_
- `Androidのボタン系ライブラリ、FancyButtonsが洒落てる。 - さまよえる、Android <http://araiyusuke.hatenadiary.com/entry/2015/10/28/103826>`_
- `Androidのダイアログライブラリ、material-dialogsを触ってみた。 - さまよえる、Android <http://araiyusuke.hatenadiary.com/entry/2015/11/01/012414>`_
- `Androidのグラフライブラリ、WilliamChartを使ってみた。 - さまよえる、Android <http://araiyusuke.hatenadiary.com/entry/2015/10/22/172415>`_
- `Androidライブラリ、LicensedDialogを使ってみた。 - さまよえる、Android <http://araiyusuke.hatenadiary.com/entry/2015/11/08/143642>`_
- `SlackのAndroidアプリで使われているライブラリ - Qiita <http://qiita.com/yyaammaa/items/b24654b488610590b307>`_
- https://github.com/googlecreativelab/landmarker
- https://github.com/pedrovgs/EffectiveAndroidUI
- `Android - CardViewでEdge-to-edgeなカードを作るときに気をつけるポイント - Qiita <http://qiita.com/nissiy/items/acd913f21ebba4a92f2f>`_
- `Android - EditText 2014 - Qiita <http://qiita.com/yyaammaa/items/e5d39d423dd9fe660979>`_

- カードUI的にしたいぞ

  - https://github.com/gabrielemariotti/cardslib
  - https://github.com/nhaarman/ListViewAnimations

- カルーセルを左右を見せるようなものにしたい
  
  - https://github.com/mrleolink/SimpleInfiniteCarousel
    
- `Android - SwipeRefreshLayoutをListFragmentで使うとゾンビ化することがある - Qiita <http://qiita.com/hide92795/items/82ca089fb62314d67670>`_

  - SwipeRefreshLayoutを拡張したSwipreRefreshListFragmentはそのままだと使えない
  - `SwipeRefreshListFragment.java | Android Developers <https://developer.android.com/intl/ja/samples/SwipeRefreshListFragment/src/com.example.android.swiperefreshlistfragment/SwipeRefreshListFragment.html>`_

- `カレンダUI <https://github.com/square/android-times-square>`
- `マテリアルなナビゲーションドロワー。 - なるようになるといいね <http://quesera2.hatenablog.jp/entry/2015/01/10/142604>`_

  - ioschedでは,ほんもののActionBarをThemeで非表示にして,ToolbarをActionBarとして利用することで,画面全体にナヴィゲーションドロワーが表示されるようにしている

  - ドロワーは各Activityで管理していることになる
  - ドロワーが閉じるアニメーションが終わったころにActivity遷移が起きるように,わざわざStartActivity()にディレイをかけている

    
----------------------------------------
Kotlin
----------------------------------------

- `Javaからの利用を視野に入れたKotlinコードで何をするべきか - Qiita <http://qiita.com/jmatsu/items/6c141ba0acb13409c7bf>`_
- `Simplest version | Try Kotlin <http://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt>`_
- `Android開発はKotlinで - Qiita <http://qiita.com/n_yunoue/items/3d05f671f94cc96268cd>`_
- `2015年のAndroid開発はKotlinで決まりかもしれない - みんからきりまで <http://kirimin.hatenablog.com/entry/2015/03/03/090603>`_
- https://github.com/citrous/palettesample/blob/master/app/src/main/kotlin/jp/citrous/palettesample/MainActivity.kt
- `Android開発を受注したからKotlinをガッツリ使ってみたら最高だった - Qiita <http://qiita.com/omochimetaru/items/98e015b0b694dd97f323>`_
- `Kotlin Android Extensionsを試してみた - Qiita <http://qiita.com/rei-m/items/c808fd0b6b83303bd3a2>`_
- `[Kotlin][Android] KotlinでAndroidアプリケーション [独特な書き方] | Developers.IO <http://dev.classmethod.jp/smartphone/android-kotlin-introduction-04/>`_
- `Android - KotlinでFragment書くときのテンプレート - Qiita <http://qiita.com/mattak@github/items/0979b87f33e8a158a1a7>`_
- `僕たちandroidエンジニアがkotlinを書かなければいけない理由 - Qiita <http://qiita.com/Yuki_Yamada/items/5696d26aae5f006bda51>`_
- `Android開発でKotlinを使って気持ち良かったこと3つ - Qiita <http://qiita.com/takaaki7/items/2dc3875b63b48cad70be>`_
- `次世代言語Kotlinを使ったAndroid開発とヤフーの新技術との向き合い方 - Yahoo! JAPAN Tech Blog <http://techblog.yahoo.co.jp/android/android-kotlin-introduction/>`_
- `今更ながらKotlin Android Extensionsを入れたら楽になったよというお話 – グロージェントの中の人 <https://www.g-gent.com/nakanohito/imasara-kotlin-android-extensions/>`_
    
----------------------------------------
RxJava
----------------------------------------

- `Top 7 Tips for RxJava on Android — Futurice <http://futurice.com/blog/top-7-tips-for-rxjava-on-android>`_

  - #cache()を使えば,同じObservableを複数のObserverが読み,しかも見る値は同じ,ということを実現できる

- `[Android] 夏休みだったので画像を検索してひたすらファボるTwitterアプリつくった <http://yslibrary.net/2015/09/12/twitter-app-created-during-summer-vacation/>`_
- `Async Android | jdamcd <http://jdam.cd/async-android/>`_
- `RxAndroid v1.0.0からのライフサイクルへのバインド方法 - Qiita <http://qiita.com/hide92795/items/02533c8593ce51070b57>`_
- `RxJavaに3日で入門し、Androidアプリのリスト操作、非同期処理、変更通知の課題を解決した話 - Qiita <http://qiita.com/yuya_presto/items/152fa80d073d865cfc90>`_
- `ReactiveX (リアクティブ エクステンション)に入門した - bati11's diary <http://bati11blog.hatenablog.com/entry/2015/04/30/170343>`_

----------------------------------------
通信
----------------------------------------

- `Matt Swanson - Durable Android REST Clients <http://mdswanson.com/blog/2014/04/07/durable-android-rest-clients.html>`_
- `jsonschema2pojo <http://www.jsonschema2pojo.org/>`_

  - `WebAPI - Web APIにはJSONベースのフォーマットを使おう - Qiita <http://qiita.com/tkawa/items/2841e155e5b51c09ed40>`_
- Retrofit

  - `Consuming APIs with Retrofit | CodePath Android Cliffnotes <https://guides.codepath.com/android/Consuming-APIs-with-Retrofit>`_
  - `[Android] OkHTTP + Retrofit + RxAndroid で REST クライアントを実装する | Developers.IO <http://dev.classmethod.jp/smartphone/android/okhttp-retrofit-rxandroid/>`_

  
----------------------------------------
Realm
----------------------------------------

- `AndroidアプリでRealmがクラッシュしたらSQLiteに変更する仕組みとその効果 - Qiita <http://qiita.com/takke/items/969e795c9a0538eca4b9>`_
- `Realmの暗号化とAndroid System <http://www.slideshare.net/keijiariyama/realmandroid-system>`_
- `AndroidのORMに求めること、あるいはOrmaを開発した話 - Islands in the byte stream <http://gfx.hatenablog.com/entry/2015/11/14/214559>`_
  
  - https://github.com/gfx/Android-Orma

----------------------------------------
テスト
----------------------------------------

- `Appium: モバイルアプリのテスト自動化はすごいことになった <http://appium.io/>`_
- `Nexus 5Xが届いた今こそ adb tcpip が見直されるべき | めがねをかけるんだ <https://blog.keiji.io/2015/10/adb_tcpip.html#more-572>`_
- uiautomatorviewer

  - `スマホ向け無料システムテスト自動化ツール(3):Androidテストで便利なuiautomatorviewer、UiScrollableの使い方、テキスト入力API制限事項の回避方法 (1/4) - @IT <http://www.atmarkit.co.jp/ait/articles/1411/05/news038.html>`_
  - 難しいUI構造を教えてくれる

- monkeyテストができる

  - adb shell monkey -v -p jp.hackugyo.navigationdrawersample 500
  - adb shell input swipe 400 100 20 100

    - これのドキュメントってどこにあるんだろうな

- `Faucet ~Fight against memory leak~ // Speaker Deck <https://speakerdeck.com/sys1yagi/faucet-fight-against-memory-leak>`_

  - https://github.com/sys1yagi/faucet
  - maven {url 'htts://raw.githubusercontent.com/sys1yagi/faucet/master/repository' }

    - buildscript#dependenciets#repositories と
    - dependenciets#repositories との2箇所にかく
  - apply pulgin: 'faucet'
      
----------------------------------------
Gradle
----------------------------------------

- これは便利なのでは

  - https://github.com/gfx/gradle-android-utils
- `gradle - Android開発してて不要なresourceを削除したい - Qiita <http://qiita.com/stenpel/items/524d74b3fe4c725282ad>`_

  - $sudo easy_install android-resource-remover
  - $ ./gradlew clean build lint && android-resource-remover --xml app/build/outputs/lint-results.xml # gradlew lintが生成したlint-results.xmlファイルを利用する
  - なんか,app/build.gradleに android { lintOptions { abortOnError false } }を追記しないとgradlewがlintを吐かなかった

----------------------------------------
Ant
----------------------------------------

Ant ビルド
--------------------

- まず,android list targetsでAVD一覧をとる.

  - ここでとったAVDのidを,次のところで用いる.
    

.. code-block:: bash

  /Users/HACKUGYO/android-sdks/tools/android update project -p . --target 34 --subprojects

- これで,build.xmlが正しく生成されるはず.
  
- http://qiita.com/items/30131635a221a1dace3e
- `Jenkinsとの連携 <http://qiita.com/items/4b7d5e0bfa667e65eb49>`_

--------------------
IntelliJ
--------------------

- http://d.hatena.ne.jp/kamekoopa/20130427/1367042044

----------------------------------------
Android Studio
----------------------------------------

- AndroidStudioのビルドを止めるには./gradlew --stopが有効 
- `Android Studio on Mac でオプションキー ⌥ のキーバインディングが効かないときの対処方法 - Qiita <http://qiita.com/hkurokawa/items/df06f9e037d197c96fcb>`_
- `AndroidStudio - El CapitanにしてAndroid Studioのフォントがみすぼらしくなった時に見るページ - Qiita <http://qiita.com/FumihikoSHIROYAMA/items/062695fc9bb4c27154f7>`_
- `gitignoreの初期値を増やす <http://qiita.com/kgmyshin/items/5d92915b3d0b8c69cfd4>`_
- Undo回数を増やす

  - http://ja.stackoverflow.com/a/8040/230
  - Help>Find Action > Include non-menu actionsしたうえで,registryで検索
  - undo.documentUndoLimitを2147483647に設定
- Android StudioでModuleを削除するには

  - http://stackoverflow.com/a/24592192
  - Cmd + ;で出るProject Structureから削除する
    
- JavaDocが表示されないと思ったら単にウィンドウのサイズが小さすぎるだけ

  - http://stackoverflow.com/a/16947002
- 移動するにはCmd + oやCmd + Shif + oやCmd + Alt + oを使おう
- http://d.hatena.ne.jp/bs-android/20130519/1368971834
- http://d.hatena.ne.jp/bs-android/20130517/1368718470
- `Android Studio で on the fly な 自動インポート を。 <http://android.benigumo.com/20130519/android-studio-%E3%81%A7-on-the-fly-%E3%81%AA-%E8%87%AA%E5%8B%95%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88-%E3%82%92%E3%80%82/>`_
- `Solving the Android image loading problem: Volley vs. Picasso | Big Nerd Ranch <http://www.bignerdranch.com/blog/solving-the-android-image-loading-problem-volley-vs-picasso/>`_
- `[Android Studio] 快適にコーディングできるように設定をカスタマイズしてみた | Developers.IO <http://dev.classmethod.jp/smartphone/android/android-studio-customize-settings/>`_

- Android Studio Plugins

  - `JetBrains Plugin Repository :: Save Actions <https://plugins.jetbrains.com/plugin/7642?pr=idea>`_
  - `AndroidStudioのPostfix Completionで爆速コーディング - Qiita <http://qiita.com/takahirom/items/ac1d1b08351610dfcc43>`_


Emacs
====================

- バッファ一覧(C-x C-b)のうち指定したものを閉じるには,kでマークしてxで一括実行

  - `Emacsのバッファ・ウィンドウ操作の基本を覚える - CLOVER <http://d.hatena.ne.jp/Kazuhira/20120408/1333885399>`_

- Emacsで狙った括弧の閉じ括弧に移動するにはCtrl+Opt+n

  - `Emacsで対応する括弧(ブレース)にカーソル移動する方法 - yinkywebの日記 <http://d.hatena.ne.jp/yinkyweb/20100421/1271855035>`_

- re-builderを使うといま書いている正規表現がちゃんとしたものかどうか判断しやすい

  - http://shibayu36.hatenablog.com/entry/2013/01/15/201827
  - M-x re-builderして書くと現在のマッチング状況がプレビューされる
- hiwin-modeを入れたので非アクティヴなウィンドウをグレーにするようになった

- 選択した行の先頭(複数行の先頭)にスペース挿入

  - http://qiita.com/shimomai@github/items/97bf729f4a4b8f04d0ce
  - C-u 4 C-x Tabで選択範囲行頭にスペース4つが入る
- Emacsで選択範囲をコードとして実行するにはM-| (Opt + Shift + ¥)

  - http://jutememo.blogspot.jp/2008/03/emacs.html
  - http://tech.kayac.com/archive/shell-command-on-emacs.html

    - これはよくわからなかった.'&'をつけるっていうのはどこでつけるの?
  - 練習してみよう!

    .. code-block:: bash

      puts (1..100).to_a.join(',') # ruby code!

- Emacsでカーソルを次の文節に移動するにはM-f
- Emacsで狙った文字列をハイライトするにはM-s h r

  - highligiht-regexp
- Emacsで同じ文字を100回入力: C-u 1 0 0 -
- Emacsで開きカッコの移動

  - C-M + n
  - C-M + p 

- EmacsでJSON整形: json-modeでM-x beautify-json

  - しかし,残念ながらJSONに"¥"が入っていると,pythonがutf8として理解できず落ちてしまう.
  - 日本語が入っていると,そこが消えてしまう
  - とおもったら,コマンドラインから叩くといけるので,Emacs側の問題なのかも
  - さっきやったらUTF8として正しくデコードしてくれた!?

- smooth-scrollを入れた

  - http://qiita.com/items/429199542c38625c5554

.. role:: red

文字に :red:`色を` つけることができる

.. raw:: html

    <style> .red {color:red} </style>

- file-cache

  - ディレクトリをあらかじめ追加しておくとファイル開くとき保管してくれるが……
  - Emacs起動後に作成したファイルを対象にするには,M-x file-cache-add-directory-recursively とかしないといけない
  - http://www.bookshelf.jp/soft/meadow_23.html#SEC228

- bookmark

  - C-x r m でカレントバッファを追加
  - C-x r l でブックマーク一覧を表示
  - C-x r b でブックマーク名を指定して開く
  - http://maruta.be/intfloat_staff/53

- ディレクトリ内検索

  - http://akio0911.net/archives/3426
  - C-x C-f で、検索対象のディレクトリを開いておき,M-x grep-find

- 矩形選択

  - cua-mode: リージョン選択中にもう一度C-<enter>

- `Emacs - 複数行の先頭にスペース挿入/削除コマンド - Qiita [キータ] <http://qiita.com/shimomai@github/items/97bf729f4a4b8f04d0ce>`_

  - C-x r tでスペースを好きなだけ叩いてRET
  - 覚えかたはRegion Text

- diredで一括文字コード変換

  - C-x dでdiredモードにして,directory editを開始
  - この状態でmキーでファイル選択をして,dired-mode-hookに追加したとおり"T"で一括置換
  - http://d.hatena.ne.jp/gan2/20070705/1183640419

- json-modeのbeautify-jsonと,通常インデントとが合わないので設定変更

  - http://blog.ainam.me/2011/12/13/emacs-js2-mode-indent/

- android-mode

  - http://qiita.com/items/bab8c1d27255b03b9ee1
  - プロジェクト作成,DDMSやエミュレータの起動,アプリインストールまでできる
  - サンプルアプリを ~/git/android_emacs_mode_sample に作った

- kill-all-buffer ?

  - C-x C-b でbufferのリストが出せる

- 対応するカッコに飛ぶ

  - C-M

- Emacsをターミナルの外で開くようにする

  - emacscというエイリアスを設定した

- bookmarkを開く

  - Ctrl-x r b

----------------------------------------
org-mode
----------------------------------------

- `org-mode による論文作成入門 - 勉強日記 <http://akisute3.hatenablog.com/entry/2013/12/28/144918>`_

  - Tex

    - `Mac OS X MarvericksへのTeX環境のインストール - Qiita <http://qiita.com/lethe2211/items/4faf76cb498a37a43312>`_
    - `MacTeX - TeX Users Group <http://tug.org/mactex/mactex-download.html>`_
    - めちゃくちゃ重たいのでまたこんどだな

  - `Org-Modeで日本語を含むファイルをPDFにエクスポートする方法 - 今日もサラダ日和ですかね <http://d.hatena.ne.jp/mokimokisan/20120624/1340558857>`_

- Pandoc

  - `org-mode で書いたテキストを Pandoc で Restructured Text に変換する | Futurismo <http://futurismo.biz/archives/2403>`_

- `org 文書をはてな記法に変換する ox-hatena.el (旧 org-export-hatena) を作った - 勉強日記 <http://akisute3.hatenablog.com/entry/2013/08/23/150311>`_
- `EmacsでMarkdown記法での執筆環境を整えた | Futurismo <http://futurismo.biz/archives/2137>`_


vim
====================

- wで次の単語に移動.bで前の単語に移動.$で行末に移動

  - 当然,コマンドモードのときだけ
  - 挿入モードのときに1回だけコマンド入力してすぐ戻りたい場合,Ctrl+oがおすすめ
  - 何発もコマンド入力したい場合はEscで切り替える

- エディタ上に行表示するには:set number

  - http://www.lovebug.jp/index.php?viエディタ上に行番号表示

Git
====================

- `git checkout $BADCOMMIT^ $DELETED_FILE_PATH` で,削除したファイルをもとに戻せる
- `git log --follow --name-status $FILENAME` でファイル名変更を含めてステータスを追える
- diff-highlightがない

  - `diff-highlightを使用してみる | Gerolian <http://gerolian.xyz/2013/12/04/929/>`_
  - 落としてこないとだめ
    
- CRLFの撲滅

  - `nkf -w -Lu --overwrite *.bat`
    
- `Git - masterのpushを常に禁止する - Qiita <http://qiita.com/ota42y/items/4fcc7300ec90c25773e2>`_

  - 以下のpre_pushシェルスクリプトを配置しておく

    .. code-block:: bash

                    #!/bin/sh
                    # if the branch is master, then fail.
                    branch="$(git symbolic-ref HEAD 2>/dev/null)" || \
                    "$(git describe --contains --all HEAD)"
                    if [ "${branch##refs/heads/}" = "master" ]; then
                      echo "Do not commit on the master branch!"
                      exit 1
                    fi
                    
- `git diff head^..head | diff-highlight | less -r` で文字単位の差分比較
- git rebase -i --autosquash で,コミットメッセージがfixup! nnnから始まっているものを自動的にコミットnnnにfixupしてくれる
- find ./ -name NAME | percol | xargs git log --follow #見つけたファイルをリネーム追跡しつつgit logする

- 既にgit管理しているファイルをあえて無視する

  - git update-index --skip-worktree [ファイル名]
  - git update-index --no-skip-worktree [ファイル名]
  - git ls-files -v
  - http://qiita.com/items/56d0d3ba7a1300625f92

- gitconfigからも,emacsclientでエディタを開くようにする

  - http://d.hatena.ne.jp/syohex/20101224/1293206906
  
- gitignore生成にはgibo(gitignore-boilerplates)を入れてある

  - gibo emacs osx android > .gitignore
- diff-hightlightを入れた

  - https://github.com/git/git/tree/master/contrib/diff-highlight
  - /opt/local/share/git-core/contrib/diff-highlightからシンボリックリンクで/opt/local/binに置いてある

- 連続してcherry-pick

  - rebaseだともとのブランチ消えちゃうもんね
  - 書式「..」を利用してgit cherry-pick example_01..example_03
  - http://shigemk2.hatenablog.com/entry/20130115/1358244775

go lang
========================================

- go install がうまくいかないときはGOPATH配下のディレクトリ構造をみなおせ

  - `osx - Go install always fails no install directory outside GOPATH - Stack Overflow <http://stackoverflow.com/questions/18149601/go-install-always-fails-no-install-directory-outside-gopath/18151220#18151220>`_

Ruby
====================

- 特定のディレクトリでだけrvm設定を強制するには,.rvmrcファイルを置く

  - rvm use 1.9.2

- pryのshow-source最強

  - http://qiita.com/gfx/items/a268f745bf8c67d95b38

- QRCode生成用にrqrcodeを入れた

  - http://dharry.hatenablog.com/entry/2013/09/08/164335
  - sizeの値を12ぐらいにしないとURLの長さによっては入らないので注意(QRコードの規格)

--------------------
Sinatra
--------------------

- 起動時はconfig.ruを書いてRackup

  - http://shrkw.hatenablog.com/entry/ruby-sinatra-for-novice

--------------------
rubocop
--------------------

- Rubyコードの可読性をチェックできるrubocop https://github.com/bbatsov/rubocop
- 各アラートの意味 https://github.com/ryshinoz/rubocop_sample/blob/master/README.md

--------------------
ruby-lint
--------------------

- https://github.com/YorickPeterse/ruby-lint

--------------------
gimli
--------------------

- textile(Redmineのwiki記法)をpdfに変換できる

  - Redmine本体ほど寛容でないので,仕上がりを確認すること

- nokogiri1.5.10を使うのだが,nokogiriは不寛容で,invalid UTF-8が入っているやつを読んでくれない

  - nokogiriのdocument_fragment.rbを改造するとパスできる.

  .. code-block:: ruby

          if ctx
          preexisting_errors = document.errors.dup
          node_set = ctx.parse("<div>#{tags}</div>")
          node_set.first.children.each { |child| child.parent = self } unless node_set.empty?
          self.errors = document.errors - preexisting_errors
        else
          # この2行を追加
          # http://blog.livedoor.jp/sonots/archives/23652294.html
          tags.force_encoding('UTF-8')
          tags = tags.encode("UTF-16BE", "UTF-8", :invalid => :replace, :undef => :replace, :replace => '?').encode("UTF-8")
           # ここまで追加 
          # This is a horrible hack, but I don't care
          if tags.strip =~ /^<body/i
            ...

nodejs
====================

- npmツールで強力なモックになるeasymockがすごいのでは?

  - `APIのモックを簡単に作成できる「node-easymock」 - 大学生からはじめるWeb開発 <http://karur4n.hatenablog.com/entry/2013/11/29/213428>`_
  - ディレクトリにuser_get.jsonを置いて起動すると,localhost:3000/userにGETできる
  - ルーティングもconfig.jsonで可能
  - `API Documentation <http://localhost:3000/_documentation/>`_ を自動生成してくれる

Mou
====================

- 縦書きができるMarkdownエディタ!?

  - `Mou - Markdown editor for web developers, on Mac OS X <http://mouapp.com/>`_


rst to Presetntation
========================================

- pdf 化

  - rst2pdf -s ja --font-path=~/fonts/migu-1m-20120411-2/migu-1m-regular.ttf wgaoi.rst

- landslide -d dest.html *.rst でOK

- gimp が入らねえ

  - デスクトップアプリとして入れて,

    .. code-block:: bash

      open -a gimp ~/Desktop/sample.png

- sphinx_bootstrap_themeを入れた

  - pip install sphinx_bootstrap_theme
  - conf.pyにて設定

Markdown to Presetntation
========================================

- slideshow gemを入れた

  - http://crifff.tumblr.com/post/22917038236/markdown
  - テーマとしてshowerを入れてトップ画像だけ変更
  - /Users/HACKUGYO/.slideshow を参照

iOS
====================

- プロジェクト内の依存関係を図示する

  - `objc_dep <http://qiita.com/shu223/items/170b899df86952544c17>`_
  - Graphvizによって.dotファイルを読み込む
  - その前に,brew install gts / brew install graphviz
  - brewしたら,dot -Tpng 生成したdotファイル.dot -o sample1.pngJ
  - /Users/HACKUGYO/git/objc_dep

- iPhone5用のスケッチシート

  - http://ge.tt/93SyTAO/v/0

- `iOSアプリのリバースエンジニアリング:Lyftをハックする, with Conrad Kramer - Realm is a mobile database: a replacement for SQLite & Core Data <https://realm.io/jp/news/conrad-kramer-reverse-engineering-ios-apps-lyft/>`_
- `⚡️Brew Sparkling: homebrew for iOS - みずぴー日記 <http://mzp.hatenablog.com/entry/2015/09/17/095644>`_

  - `$ brew sparkling install SparklingSample`

- AutoLayout

  - `UIViewAlertForUnsatisfiableConstraints - Google 検索 <https://www.google.co.jp/search?q=UIViewAlertForUnsatisfiableConstraints&ie=utf-8&oe=utf-8&hl=ja>`_

----------------------------------------
Swift
----------------------------------------

- `Swift 1.2のif let複数宣言と例外処理 - Qiita <http://qiita.com/boohbah/items/84e9d76a8ceaf9f56077>`_
-  `既存コードSwift2.0とiOS9対応の暫定措置 - Qiita <http://qiita.com/bloody_snow/items/9d7571552614655250cc>`_
- `Swift - ローディング時のズルい進捗表示 - Qiita <http://qiita.com/mono0926/items/ead7c576170277a5e83d>`_
- `Swizzling with Swift, by Sash Zats - Realm is a mobile database: a replacement for SQLite & Core Data <https://realm.io/jp/news/sash-zats-swift-swizzling/>`_
- generate a random UIColor

  - https://gist.github.com/kylefox/1689973

- `iPhone - Swiftで作られたイケてるUIライブラリたち - Qiita <http://qiita.com/susieyy/items/1f28531a1c58d9158896>`_
- https://github.com/fullstackio/FlappySwift

  - SwiftでFlappybird

- `iPhone - SwiftのRSS Readerを100行で作ったよ - Qiita <http://qiita.com/susieyy/items/749c4ac5d82d765c12c6>`_
- `Swift - iOSのトラッキング実装ベストプラクティスを考える - Qiita <http://qiita.com/horimislime/items/71702594363b17483567>`_
  
--------------------
Xcode
--------------------

- XCodeだよー
- UIApplicationMain Exception(EXEC_BAD_ACCESS)の対応

  - `Xcode: One Weird Debugging Trick That Will Save Your Life <http://natashatherobot.com/xcode-debugging-trick/>`_
  - po $arg1
  - なぜか正しく動作しない
- poがクラスメソッドに対して正しく反応しない問題

  - (lldb) po [[[[(Class)objc_getClass("UIApplication") class] sharedApplication] keyWindow] recursiveDescription]
  
- Xcode5のデバッガが変数をちゃんとinspectしない問題

  - `cocos2d-x Xcodeのデバッガでまともに変数が表示されない問題 : やっちんのゲーム製作日誌 <http://yattelin.exblog.jp/20962655/>`_
  - xcodeProjのBuild Settings#Other C Flags#Debugのオプションとして、 -O0 っていうのを追加してやったらOK
    
- `http://wazanova.jp/post/66156067230/spotify-ios <Spotify: iOSのビルド作業時間を短縮する>`_

  - ビルドの “Debug Information Format” を “DWARF with dSYM File” から “DWARF” に変更。
- `iOS9 - Xcode7GMでビルドすると「does not contain bitcode.」とか言われる - Qiita <http://qiita.com/Takumi_Mori/items/ace01198c43c8bac6df0>`_

  - 「Build Settings」から「Enable Bitcode」の項目を検索し、NOにしましょう。
  
- Xcode6で追加された"Debug View Hierarchy"機能はXcode7だとどこにあるの
  
  - `objective c - Xcode 6.1 can't find 'debug view hierarchy' button - Stack Overflow <http://stackoverflow.com/questions/26728940/xcode-6-1-cant-find-debug-view-hierarchy-button/29283448#29283448>`_
  - Debug AreaではなくDebug Navigatorに移ってまーすwwww
    
- `iOSアプリのコーディング規約を考える時はGoogleよりもNYTimesのObjective-Cスタイルガイドを参考にすべき - Steel Dragon 14106 <http://raimon49.github.io/2015/03/21/review-nytimes-objective-c-style-guide.html>`_
- `Xcode: One Weird Debugging Trick That Will Save Your Life <http://natashatherobot.com/xcode-debugging-trick/>`_

  - Exception BreakPointをしかけるときにActionとして"po $arg1"を仕込むことができ,これによってエラーの中身を見やすくすることができる
- はあああ!?エミュレータのサイズってCmd + 2, Cmd + 3で小さくできるの!?
- `iOS - Xcode6のiPhone Simulatorのディレクトリが分かりにくかったけどいいアプリめっけた! - Qiita <http://qiita.com/singo405/items/b84f81ee2daaef27d0a2>`_

  - SimPholders2を使え
- Cmd + Shift + ] でタブを右に移動できる

  - http://blog.primeswit.ch/?p=120

- AppleDocというのを導入した

  - brew install appledoc
  - http://qiita.com/mtgto/items/c97c59d93fe67d748055
  - だめだ! AppledocException: Typedef with name TextFieldType is already registeredが出る
  - 原因もよくわからんので捨てましょう

- ログに色をつけた

  - XcodeColorsというプラグインがある
  - 特殊な記法を使って色をつけることができるようになった

  .. code-block:: objective-C

    NSLog(@"\033[fg255,0,0;%@\033[;", @"Red log");

 - さらにいくつかpluginを入れた

   - https://github.com/Maxwin-z/XLog_test/tree/master/XLog_test
   - https://github.com/onevcat/VVDocumenter-Xcode
   - https://github.com/holtwick/HOStringSense-for-Xcode
   - 

- インデントはCtrl + i
- エディタの右上の+マークを押すとタブが増える

  - Cmd + Tでもよい
- Command+Shift+Oでファイル名orメソッド定義での検索ができる
- Command+Clickでメソッド定義に遷移できる
- クラス階層はSymbol Navigatorを使う

  - `AppCode IDE <http://developer.smartnews.be/blog/2013/07/16/appcode-increases-objective-c-productivity/>`_ との比較が逆説的に参考になる

- Xcodeではタブの動きはひどいので使わないほうがいい.

  - シングルクリックを極力やらないようにして(設定ではオフにできない),別ウィンドウで開く.
  - http://d.hatena.ne.jp/cooking_3min/20121205/1354689415
  - いちおう,opt+Clickで新規タブに出すようにはできるが

    - http://stackoverflow.com/a/6666097/2338047
  - Opt+Cmd+Oでファイル探査し,ファイルを開く際にShft+Optを押していると,新規タブで開くようにできる.

- 恥ずかしいコメントを消すために,以下の正規表現で検索

  .. code-block:: ruby

    regexp = "\/\/[[a-zA-z0-9]|\s|:]*[[ぁ-ヶ]|[亜-黑]]+"
    # "// FakeIt: 日本語コメント"
    # "// 日本語コメント
    # のような記述に該当する

- 端末がXcodeに読み込まれないときの対処

  .. code-block:: none

    Xcode has encountered an unexpected error (0xC002)
    No such file or directory, at ‘/SourceCache/DTDeviceKit/DTDeviceKit-867/DTDeviceKit/DTDeviceKit_Utilities.m:864’

  - Xcodeを閉じて、以下のパスに移動

    - "~/Library/Developer/Xcode/iOS DeviceSupport/5.0.1(9A405)/Symbols/System/Library/Caches/com.apple.dyld/"
  - 空のファイルを作る

    - .copied_dyld_shared_cache_armv7
    - .processed_dyld_shared_cache_armv7
    - dyld_shared_cache_armv7

  - http://stackoverflow.com/a/10029540/2338047

- Shift + Cmd + Xで,イコール記号両辺の整形を行うXAlignを入れた

  - https://github.com/qfish/XAlign
  - 

--------------------
iOS
--------------------

- キャッシュの消しかた

  - http://stackoverflow.com/a/14958261/2338047
  .. code-block:: objective-c

    [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    [[NSURLCache sharedURLCache] setDiskCapacity:0];
    [[NSURLCache sharedURLCache] setMemoryCapacity:0];

  - さらに,NSURLRequestのcachePolicyに,NSURLRequestReloadIgnoringLocalCacheDataを指定する

    - http://qiita.com/u1_fukui/items/39ad04fc702718d7f9be

iOS7対応
--------------------

- 潜り込み対応

  - edgesForExtendedLayoutだけだとうまくいかない場合があるもよう
  - self.extendedLayoutIncludesOpaqueBars = NO;
  - self.automaticallyAdjustsScrollViewInsets = NO;
  - http://qiita.com/kouchi67/items/cfd39c8c0b97baeb8f48

--------------------
Objective-C
--------------------

- CodeRunnerを入れたのでObjCをある程度対話的に動かせるようになった

  - http://veadardiary.blog29.fc2.com/blog-entry-4683.html

- Selectorの存在確認は,-BOOL:respondsToSelector:で行える.

  - hasSelectorとかではないので注意

Python
====================

- pip が入ってなかったじゃねーか

  - easy_install pip

Java
====================

- Java7 on Macで日本語ファイルが扱えない問題

  - http://veadardiary.blog29.fc2.com/blog-entry-4759.html
  - http://piyopiyoducky.net/blog/2013/06/03/encoding-of-java-application-in-os-x/
  - launchctl setenv LANG ja_JP.UTF-8

JavaScript
====================

- `今見てるページタイトルとURLをコピーし、Amazon商品ページだったらアフィIDを付けるブックマークレット | Stocker.jp / diary <http://stocker.jp/diary/amazon-bookmarklet/>`_

.. code-block:: javascript

  javascript:
    (function(){
      if(document.URL.indexOf('amazon.co.jp') == -1){
        prompt('コピーしてください','`'+document.title+'%20'+'<'+document.URL+'>`_');
      }
      else {
        var title = document.getElementById('btAsinTitle').textContent;
        var b = document.getElementsByTagName('b');
        var r;
        for(i=0;i<b.length;i++)if(/ISBN-13/i.test(b[i].innerHTML))r=b[i].parentNode.innerHTML.match(/(\d{3})-(\d+)/);
        var isbn = r[1]+r[2];
        prompt('Amazon Hatena mode','isbn:'+isbn+':detail:small'+'%20"'+title+'"');
      }
    })();

Firefox
====================

- 「ツリー型タブ」アドオンがすごい

  - https://addons.mozilla.org/ja/firefox/addon/tree-style-tab/

- セッションが復帰しなくなったときのスクリプト

  - https://gist.github.com/hackugyo/e7ef610b0213eca8b2b8

Elixir
========================================

- `Elixir - Actor modelが好きすぎて勢いだけで作ってしまったナニカ - Qiita <http://qiita.com/keithseahus/items/dbccf15ae3b37395194a>`_
- `[翻訳] Elixir - 次に来る大物Web言語 - Qiita <http://qiita.com/HirofumiTamori/items/0dfdbada30c7d8f183fd>`_

MQTT
========================================

- もしかしてMQTTって

  - `Android向けpahoライブラリを使えるようにしてみた - 漆黒な技術メモ <http://3116pitchdarktech.hatenadiary.jp/entry/2015/05/12/012959>`_
  - `AndroidのMQTTクライアントを導入する - 発熱するマイナ魂 <http://minor.hatenablog.com/entry/2015/02/15/214730>`_
  - https://gist.github.com/voluntas/8238751

    - Facebookでも使っている!
    - Macでインストールできるよ
  - `MQTTについてのまとめ — そこはかとなく書くよん。 <http://tdoc.info/blog/2014/01/27/mqtt.html>`_
  - `MQTTを使って通信するAndroid アプリの開発を始めてみる - No Bugs, No Life <http://kazyury.hatenadiary.jp/entry/2015/07/01/233714>`_


Webサービス
====================

--------------------
DevInfoNotification
--------------------

- `DevInfoNotification - Android Apps on Google Play <https://play.google.com/store/apps/details?id=com.kogitune.devinfonotification>`_

--------------------
ngrok
--------------------

- `簡単に自分のローカルサーバをオンラインに公開·ngrok MOONGIFT <http://www.moongift.jp/2013/07/20130714/>`_

--------------------
httpbin
--------------------

- 任意のhttpレスポンスを返してくれる!?
- http://httpbin.org/

--------------------
cloudconvert
--------------------

- https://cloudconvert.org
- 140 formats supported
- DropboxやGoogle Driveに投げてくれる


--------------------
infogr.am
--------------------

- グラフ作成サービス
- https://infogr.am


--------------------
apiary
--------------------

- `APIモックをドキュメントmarkdownから自動生成 <http://apiary.io/>`_

  -  http://private-a1b8a-hackugyo.apiary-mock.com/notes

--------------------
v7-palette
--------------------

- `v7-paletteっていいな,画像から合う色を生成できる <http://developer.android.com/tools/support-library/features.html#v7-palette>`_

----------------------------------------
Android Holo Colors Generator
----------------------------------------

- `Android Holo Colors <http://android-holo-colors.com/>`_

------------------------------------------------------------
Rubularで一致しているどうか見ながら正規表現づくり
------------------------------------------------------------

- `Rubular: ^[\w+\-.]+@[a-z\d\-.]+\.[a-z]+$ <http://rubular.com/r/0Hovxu2I9a>`_
- `Regexper <http://regexper.com/#%5E%5B%5Cw%2B%5C-.%5D%2B%40%5Ba-z%5Cd%5C-.%5D%2B%5C.%5Ba-z%5D%2B%24>`_
- `Regexper <http://regexper.com/#%5C!%5C%5B(%3F!.*png).*%24>`_