ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

常時テザリングONのススメと、スタミナモードの相性

Blutooth vs Wi-Fi

多くのタブレットはモバイル通信を自前で持たないが、ポケットWi-Fi的なルータを持ち歩くか、スマホでテザリングをすることで外出時でもインターネットに接続できる。

テザリングには2種類あって、BluetoothテザリングとWi-Fiテザリングがある。

BluetoothテザリングはWi-Fiテザリングに比べて通信速度こそ遅いものの、スマホ側(接続される側)を常時テザリングオンにしておいても電池持ちがさほど悪くならないというメリットがある。

常時オンということは、テザリング時にスマホに触ることなくタブレット側をインターネットに接続することが出来る。

Wi-Fiテザリングでは、タブレットをインターネットに繋ぐためにまずスマホを取り出す、という少し不自然な操作になる。

それに対し、タブレットを繋げたいからタブレットだけ操作する、という操作系で完結するBluetoothテザリングはかなり自然で使いやすい。

スマホ側の設定

初回のみ設定が必要である。

f:id:mczh:20160331233934j:plain

Bluetoothテザリングをオンにする。

機器同士のペアリングも済ませておく。

再起動するとテザリングの設定がOFFになってしまうため、BTAutoTetherというアプリで自動的にテザリングがONになるようにする。

play.google.com

以降、テザリングを使いたくなったときに、スマホ側はいっさい触る必要がない

タブレット側の設定

一方、タブレット側は毎回以下の操作が必要となる。

ここでのタブレットは、先日買ったXperia Z3 Tablet compactだ。

f:id:mczh:20160331233652j:plain

Bluetoothの下の▼を押す。

f:id:mczh:20160331233659j:plain

ペアリング済みの機器が出るのでタップして接続する。 これで、インターネット接続が可能な状態になる。

初回のみ以下の設定がいるかも

f:id:mczh:20160331233704j:plain

最初にペアリングした際に、ペアリングされた機器の設定にある「インターネットアクセス」にチェックがついていることを確認すること。

XperiaのスタミナモードとBluetoothテザリングの相性

f:id:mczh:20160331233645j:plain

スタミナモードがオンだと、使っている途中でも通信が出来なくなることが何度か起きている。Bluetooth的には接続済みのアイコンになっているのだが、ブラウザはタイムアウトする。

スタミナモードは、電源をOFFにしているときにバッテリを節約する仕組みである。なので、スリープさせていない今回の件では関係ないと思ったのだが、スタミナモードを切ると起きていないので、恐らく相性が悪い。残念だが、タブレット使用時にはスタミナモードを切る運用にする。

実際の運用方法

なので、実際の利用時には

  • タブレット側のBluetoothをON

  • スマホと接続

  • スタミナモードをOFF

終わるときには、

  • スタミナモードをON

  • タブレット側のBluetoothをOFF

の運用にしている。

タブレット側のBluetoothは別にOFFにしなくてもいいかと思うが、気が付いたらなるべくオフにしている。

問題は、スタミナモードをオンに戻すのを忘れることだ。Bluetoothを無効にしようと思った場合には、画面上部をスワイプして出てくるクイックメニュー中にスタミナモードのトグルスイッチもあるので気が付く。だが、Bluetoothもオンのままでいいや、と放置した場合には気が付くことなくスタミナモードがオフのままで、電池が無駄になってしまう。

スリープ復帰とともにスタミナモードをオフ、スリープ時にスタミナモードをオン、みたいなアプリが欲しい。

スタミナモードのON/OFFはAPIが公開されているだろうか?

git push -f を捨てよ、--force-with-leaseを使おう

japan.blogs.atlassian.com

そもそもforceで上書きするなという話もあるが、master/develop以外の作業ブランチでは、developにマージリクエストを出す前に、すでにpushしているコミットを綺麗にrebaseするためにpush forceすることはある。

最初から綺麗なコミット単位のみをpush出来ればいいのだが、翌日急に休んだときに誰かが引き継げるようにとか、ローカルのデータが吹っ飛ぶ可能性を考えてバックアップの意味でpushするとか、諸々の理由をつけて作業がきちんと完結していない状態でpushすることもある。もちろん、そんなことをするのは作業ブランチ限定で、developやmasterには仮コミットはpushしてはいけないし、あとで消す仮コミットであることがわかるようにコミットログを書いておくのが良いと思う。

そうしたわけで、push -fをする機会はあるのだが、せめて、うっかりミスで他の人のコミットを吹き飛ばした!という事態を防ぐために、git push -fを使うのはやめて、--force-with-leaseを使うようにしたい。

--force-with-leaseとは

他の人がすでにそのブランチへpushしていると、--force-with-leaseは失敗してくれる。 これにより、誤って上書きするのを防ぐ。

ただし、push --force-with-leaseする前にfetchをしていると、pushが成功してしまう(つまり上書きしてしまう)。

しかし、fetchしていれば何かしらの変更があったことには普通気がつくし、fetchするということはmergeもするだろうから、あまり問題は起きないだろうとは思う。

少なくとも、-fでいきなりpushするよりは事故が減るだろう。

もっとも、自分以外が操作する(それも自分が気がつかないうちに)可能性のあるブランチでforceを使う運用が良くないとは思う。

エイリアス

長くて覚えられないので~/.gitconfigにエイリアスを書いておく。

[alias]
push-f = push --force-with-lease

コマンド的には以下で追加できる(はず)

git config --global alias.push-f "push --force-with-lease"

実際に使うのはこうなる。

$ git push-f origin develop

現在の私の.gitconfig

[alias]
        lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Crese\
t' --abbrev-commit --date=relative
        lga = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an\
>%Creset' --abbrev-commit --date=relative
        co = checkout
        br = branch
        ci = commit
        st = status
        pull = pull --prune
        fetch = fetch --prune
        push-f = push --force-with-lease

いつかのブログに書いたdiff-so-fancyも使っている。

ターミナル上では見やすいのだが、差分をコピーして他のエディタに移す+-がないためわかりにくいので、乗り換えようかと検討している。