Androidエミュレータにテキストをペーストすることができない時代がありました
Androidエミュレータは母艦とクリップボードの共有がされないので、パスワードなどの複雑なテキストを毎回手打ちしなくてはならなくて面倒でした。
そこで、簡単にコピペできるような関数を作りました。
function paste_in_android() { e=$(pbpaste | sed -e "s/ /\\\\ /g" | sed -e "s/'/\\\\'/g" | sed -e 's/"/\\"/g') adb shell input text "$e" }
クリップボードに入っているテキストをadb経由で入力します。
input text
を使っているためマルチバイト文字を渡すことはできなく、さらにIMEの状態によって入力のされ方が変わります。 adbを経由するので、エミュレータだけではなく実機でも使うことができます。面倒なURLの入力にも使えるんじゃないでしょうか。
うまくうごかなかったら、エスケープすべき文字があるんだと思います。sed
でエスケープ処理を追加してください。
私はターミナルで入力するのすら面倒なのでAlfred workflowにしておきました。(リポジトリのgifアニを見ればどういう風に使うのか一発で分かると思います。)
github.com
べんり〜
という時代もありました。 現代のAndroidエミュレータではいい感じにしてくれるので、EditTextなどを長押しすればペーストすることができます。
テキストボックス長押しとかでコンテキストメニューだしてペーストできない?
— Sosuke Masui ⋈ (@esmasui) August 28, 2019
コマンドラインから特定のクラスのみテストする
次のコマンドで実現できる
./gradlew connectedAndroidTest -Pcom.android.tools.instrumentationTestRunnerArgs=class=com.example.Util
com.android.tools.instrumentationTestRunnerArgs
にはいろんなオプションが指定でき、どんなオプションがあるかは次のURLから見ることができる
AndroidJUnitRunner | Android Developers
複数の引数を指定する場合はカンマで区切る
./gradlew connectedAndroidTest -Pcom.android.tools.instrumentationTestRunnerArgs=class=com.example.Util,size=medium
キーが重複するハッシュをマージする
2つのハッシュをマージするときにキーが重複するとレシーバを優先されてしまう
$ pry [1] pry(main)> h1 = {a: [1, 2, 3], b: [1, 2, 3]} => {:a=>[1, 2, 3], :b=>[1, 2, 3]} [2] pry(main)> h2 = {a: [10], c: [10,11]} => {:a=>[10], :c=>[10, 11]} [3] pry(main)> h1.merge(h2) => {:a=>[10], :b=>[1, 2, 3], :c=>[10, 11]}
Hash#mergeはブロックを受け取ることができて、キーが重複した時の挙動を指定することができる
$ pry [1] pry(main)> h1 = {a: [1, 2, 3], b: [1, 2, 3]} => {:a=>[1, 2, 3], :b=>[1, 2, 3]} [2] pry(main)> h2 = {a: [10], c: [10,11]} => {:a=>[10], :c=>[10, 11]} [3] pry(main)> h1.merge(h2) { |key, h1v, h2v| h1v + h2v } => {:a=>[1, 2, 3, 10], :b=>[1, 2, 3], :c=>[10, 11]}
Array#shuffleで同じ結果を得る
shuffleの引数に同じRandomオブジェクトを渡せば何度シャッフルしても同じ結果になる
$ pry [1] pry(main)> Array(1...10).shuffle(random: Random.new(473)) => [6, 4, 9, 5, 8, 3, 2, 1, 7] [2] pry(main)> Array(1...10).shuffle(random: Random.new(473)) => [6, 4, 9, 5, 8, 3, 2, 1, 7] [3] pry(main)> Array(1...10).shuffle(random: Random.new(473)) => [6, 4, 9, 5, 8, 3, 2, 1, 7]
配列の重複を取得する
@tomorrowkey ブログ読んでて気になったんですけど、Arrayは&&をoverloadしてるのでこれで重複要素取れます! https://t.co/dkNFp9fW5Y https://t.co/5vChxCdXdF
— ぎぎにゃん@脱北者 (@giginet) November 7, 2015
たしかに〜
$ pry [1] pry(main)> Array(1..10) && Array(5..6) => [5, 6]
超簡単だった。
重複を除外するならuniq使えばいいけど、重複を取得するのはメソッドがなかった。
こんな感じに書けば重複した値が取得できる
$ pry [1] pry(main)> require 'active_support/all' => true [2] pry(main)> (Array(1..10) + Array(5..6)).group_by{|i| i}.reject{|k, v| v.one?}.keys => [5, 6]
Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`
rails newして、herokuにデプロイしてアクセスしたけど、以下のメッセージが表示される
Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`
以下のファイルを.gitignoreからコメントアウトする
config/secrets.yml
環境変数にsecret_key_baseを設定する
heroku config:set SECRET_KEY_BASE=`bundle exec rake secret`
以上
簡単にモザイクがかけられるSketch3 Pluginを作りました
今作っているアプリのリソースを作っているところ。アプリのスクリーンショットを撮影して、広告はそのままだとアレだからモザイクかけたいなーと思っていろいろ調べてたら、いつのまにかプラグイン作っていました。
Sketch3でモザイクのかけかた
そもそもぐぐっても情報がでてこなかった。blurでごまかせないかな―とやってみたけど、今ひとつ使えるものではなかった。 インターネットで調べてもやり方がでてこないから、自分でなんとかせんとなーと考えていると、Fireworksでのモザイクの書け方を思い出した。
Fireworksではレイヤーを縮小して拡大することでモザイクを実現していた。縮小するときに複数のピクセルが1つのピクセルになることを利用して実現していた。Sketch3でもできるんじゃないかと試したところ、できた。
- モザイクをかけたいレイヤーを選択
- Scaleで5%に縮小
- Layer > Image > Reduce Image Size
- Scaleで2000%に拡大
ただ単純にScaleを変更するだけだと、元の解像度に戻るだけなので、途中でReduce Image Sizeすることで解像度が落ちた状態の画像にするところがポイント 5%って数字はテキトーなんでモザイクかけたい強度によって変える
Sketch3 Pluginにする
モザイクかけたい時に、温かみのある手作業でやってもよかったんだけど、そーいやプラグインってあるよなと思い出したので、プラグイン化しました。
- Bohemian Coding - Sketch Developer
- 公式ページ
- クラスのリファレンスあったんだけど、ほとんど嘘だった…。
- Sketch.app Plugin の開発メモ - Qiita
- ざっくりと理解したい場合におすすめ
公式のリファレンスがあまり充実してないっていうのと、cocoascriptの情報自体が少ないので、他のプラグインのソースを読むのがオススメです。
インストールと使い方
GithubのREADMEに書いたので、それを読んで下さい github.com
要望があったらissueにて受け付けます。