Android Studio で MacBook の TouchBar を活用するプラグインが超絶便利

ついにTouchBarを活用できる日が来た

f:id:travelhacks:20180416191522j:plain

MacBookProを購入してから全く日の目を見ることがなかったTouchBar

そんなTouchBarがついに日の目をみる時が来ました

今回はこちらの記事を参考にしました
RubyMineでも出来たのでJetBrainのIDEだと全部できるのかな??

syobochim.hatenablog.com

導入

早速導入方法ですが

f:id:travelhacks:20180416192105p:plain

Android Studio ⇨ Preferences ⇨ Plugins と選択して 画面下部の Browse Repositories を選択します

f:id:travelhacks:20180416192109p:plain

inttellij-touch を検索してインストール(上の画面はインストール済み)

TouchBarにボタンを割り当てる

f:id:travelhacks:20180416192055p:plain

Android Studio ⇨ Preferences ⇨ Appearance & Behavior ⇨ Menus and Toolbars を選択して
上の画像のように TouchBar を展開します

すでに配置されているボタンを選択して右側にある Add After... をクリックします

f:id:travelhacks:20180416193544p:plain

配置したいボタン(機能)を選択します

f:id:travelhacks:20180416192102p:plain

そして Preferences ⇨ Appearance & Behavior ⇨ Menus and Toolbars ⇨ Touch Bar と進んで
Refresh touch bar とすれば適用されます

これで選択したボタンの右側にボタンが配置されます
Add Separator を選択した場合はボタンとボタンの間にスペースが作られます
Edit Action icon.. を選択すると任意の画像をボタンにすることができます

f:id:travelhacks:20180416191522j:plain

筆者の環境では左から

Terminal
Logcat
Run
AVD Manager
SDK Manager
Sync Floating Mode

とりあえず手探りですが現時点では Terminal と Logcat の ON/OFF がワンタッチでできて超便利
さらに大画面で見たいときやエディターの表示領域も確保したいときは Floating Mode を押すことで別画面への出力を ON/OFF 出来ます

ボタン間隔が狭いため誤タップが時々あるのでSeparatorは必要かも

Floating Mode のようにアイコンが用意されていない機能の場合は文字になる模様
長い文字を必要とする機能の場合は多くの領域を占有するためアイコンを用意したほうがよさそう

Chromeでどうしても変換候補 or 変換履歴が消せない人はここをチェックしてみて

なかなか消せない検索履歴

普段使っているノートPCを持って面接に行くことや
勉強会に行くこと

その他にも自分のPCを使って人に何かを見せることって多々ありますよね

ただそういう時にChromeを使ってちょっと検索しようとした時に
一文字、二文字入れただけで過去の検索履歴が表示されて困ったりしますよね

他にも

ちょっとPC貸してって言われてブラウジングを始めたりすると自分の過去の検索履歴が表示されて
ハラハラします

それを解決した方法のメモ

Chromeのキャッシュを消去

support.google.com

Chromeの設定から履歴を消す方法ですが筆者の場合この方法だと消せませんでした

ブックマークを消去

全然情報がなかったのですがようやく気づきました

変換候補に表示されている候補がブックマークに登録されているサイトのタイトルだったことに気づき

ブックマークを消すと見事に何も検索候補に表示されなくなりました

これで遠慮なくノートPCをどこにでも持って行けますね

curlコマンドで入力フォームにテキストを入力してPOSTをするテスト

curlのDオプション

用途としてはログイン状態のHTMLをスクレイピングしたい時とかかな

某アパレルブランドのURLが
https://www.xxxxxx.com/jp/auth/login

ログインフォームが以下だった場合

<form action="/jp/auth/login" method="post">
  <input type="text" name="login_id">
  <input type="text" name="password">
  <input type="submit" value="送信">
</form>

この場合以下のコマンドでログインした時のHTMLが取得できる

curl -d login_id=xxxxxxxxxxx -d password=xxxxxxxxxxxxxx https://www.xxxxxx.com/jp/auth/login

プログラムから実行

これでHTMLは返って来ますが
他にもいろいろ処理をしたいときには

Rubyからcurlコマンドを叩くコードを自動生成する以下のサイトを使うと
コピペするだけでRubyからcurlコマンドを実行するコードが作れます

https://jhawthorn.github.io/curl-to-ruby/

require 'net/http'
require 'uri'

uri = URI.parse("https://www.xxxxxx.com/jp/auth/login")
request = Net::HTTP::Post.new(uri)
request.set_form_data(
  "login_id" => "xxxxxxxxxxx",
  "password" => "xxxxxxxxxxxxxx",
)

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

# response.code
# response.body

以下の記事を参考にしました

lovepeers.org

Ruby 2次元配列の作り方 そのほか2次元配列について学んだことメモ

2次元配列関係で学んだこと

そもそも2次元配列とは? 配列の中に配列があるものとどこかで読みました

何度もググってしまったので自分用にメモ

# 宣言時に代入
array = [[1,2,3], [4,5,6], [7,8,9]]
arr = []
#適当に3回ループ
3.times do
    val1 = "a"
    val2 = "b"
    arr << [val1, val2]
end

# 実行すると
=> [["a", "b"], ["a", "b"], ["a", "b"]]
3.times.map { %w[a b] }
=> [["a","b"],["a","b"],["a","b"]]
3.times.map {%w[a b c]}
=> [["a", "b", "c"], ["a", "b", "c"], ["a", "b", "c"]]

要素を取り出す

array = [["a", "b", "c"], ["a", "b", "c"], ["a", "b", "c"]]
array.each do |outer_array|
  outer_array.each do |inner_array|
    p inner_array
  end
end


# 実行すると
"a"
"b"
"c"
"a"
"b"
"c"
"a"
"b"
"c"
array = [["a", "b", "c"], ["a", "b", "c"], ["a", "b", "c"]]
array.each do |first_array, second_array, third_array|
 p first_array, second_array, third_array
end

# 実行すると
"a"
"b"
"c"
"a"
"b"
"c"
"a"
"b"
"c"

以下のサイトを参考にさせていただきました

d.hatena.ne.jp

qiita.com

標準出力でファイルを上書きしようとしたら file exists: と出るときの解決法

上書きしたいのにエラーになる

[標準出力 上書き] とかで調べても

echo "hoge" > fuga.txt 

>
これで上書きできると書かれているサイトが多いですが

# 一回目
echo "hoge" > fuga.txt 
hoge
# 二回目
echo "hoge" > fuga.txt 
zsh: file exists: fuga.txt

調べても > これで上書きできると書かれている

この時の解決法のメモ

これで解決

echo "fuga" >| fuga.txt 

>| 標準出力記号にパイプをつけるだけ

cat fuga.txt
fuga

これで解決しました

あと筆者の環境ではteeコマンドだと file exists: と表示されずに上書きできました

echo "fuga" | tee fuga.txt

詳しいことはこちらに書かれています

qiita.com

hogem.hatenablog.com

桜満開!? 皇居の乾通りの一般公開に行ってみた 待ち時間や桜の咲き具合をリポート

開花宣言から1週間のタイミングで一般公開開始

f:id:travelhacks:20180324153902j:plain

皇居の乾通りの公開は
桜が満開になる春と
紅葉が綺麗な秋に行われることが多いですが
年によっては行われない時もあります

2018年の春は公開されましたので行ってきました

皇居の乾通り一般公開

筆者はあまり理解していなかったので皇居の一般公開について整理すると

まず普段から皇居東御苑は一般公開されています

そして年に1〜2回乾通りが一般に公開されます(桜と紅葉の時期)

それぞれの位置関係を地図で見ると

f:id:travelhacks:20171204034430p:plain

上の画像の赤線が年に1〜2回公開される乾通り

f:id:travelhacks:20171204034419p:plain

そしてその東側に位置しているのが普段から一般公開されている皇居東御苑です

皇居の乾通りの一般公開のタイミングについてはこちらで確認できます
皇居乾通り一般公開について - 宮内庁
皇居東御苑の公開時間についてはこちらで確認できます
皇居東御苑 - 宮内庁

何時に行くのがいいのか?

入門時間は午前10時から午後3時30分まで

乾門からの退出時間は,午後4時まで
東御苑から退出される方は,午後4時30分まで

紅葉の季節はもう少し早い時間に閉門していたけど春は暖かいからか長いんですね

土曜日、しかも今年の公開の初日に来たこともありかなりの混雑
休日の午前なのに続々と来ていました

場所は?

入門は坂下門からになります

f:id:travelhacks:20171205205841p:plain

地下鉄なら 二重橋前駅大手町駅
JRなら 東京駅 が近いです

f:id:travelhacks:20171205210857p:plain

普段と違い通行が規制されて上のような動線になります

行ってみた

筆者はJR沿線沿いに住んでいため東京駅に到着

f:id:travelhacks:20180324153541j:plain

時間は午前10時10分
暖かくて天気も良くて最高の散歩日和です
数日前に雪が降っていたなんて信じられませんね

f:id:travelhacks:20180324153526j:plain
f:id:travelhacks:20180324153534j:plain

すでにとんでもない量の人たちが並んでいます

この時点で10時20分くらい
みなさん早いですね

さすがにこれだけ並んでいると1時間くらい待つのかな。。。

f:id:travelhacks:20180324153603j:plain

1時間くらい待つことを覚悟していたのですが
荷物チェックや誘導の警察官もとんでもない数の方が来ているため
思いの外早く進んでいきここまで25分くらい

まあ思ったよりは早かったからいいか。。。

去年来た時もそうでしたが(3回来た)
とんでもない数の人が来ますが、そんなに入場で待たされるということはありません
25分を長いと考える人には苦痛かもしれませんが

1時間待ちとかはなさそう

f:id:travelhacks:20180324153746j:plain

f:id:travelhacks:20180324153731j:plain

いざ坂下門から入場

f:id:travelhacks:20180324153709j:plainf:id:travelhacks:20180324153738j:plain

桜なんですが
開花宣言から1週間経過していますが

まだもう少しといった感じ

そして普段は一眼レフで写真を撮るのですが
今日は残念なことに iPhone

カメラが残念なこともありますが、肉眼で見ても桜は綺麗ですが少し物足りないので
もう少し待ったほうがよさそう

f:id:travelhacks:20180324153833j:plainf:id:travelhacks:20180324153847j:plain

まだちょっと寂しい感じですね

f:id:travelhacks:20180324153911j:plainf:id:travelhacks:20180324153902j:plainf:id:travelhacks:20180324153854j:plain

来ることを検討している方は時間が自由に使えるのであれば もう少し遅らせると満開の桜が観れるかもしれません
3/28~3/31くらいがいいんじゃないかなぁ

www.travelhacks.tokyo

www.travelhacks.tokyo

Ruby pryを使用中にファイルに変更を加えた時の再読み込み

表題の通り

pryを使用中にちょっとファイルを変更して再度動作確認したい!ってときはありますよね

reloadとかないのかな?
requireで再読み込みとかしないかな?

とか調べたけどダメで

あまり情報がなかったのでメモ

解決法

# 一度pryから出て
pry(main)> quit

# 再度pry
❯ pry

これでもよかったのですがあまりスマートではないし
ちょっとめんどくさい

#ファイル名とパスは適宜読み替え
load './xxxx.rb'

これでできた

f:id:travelhacks:20180324075940j:plain