年中アイス

いろいろつらつら

GoでSSH port forwarding

今までPort Forwardingはbashrcに書いて呼び出していましたが、量が多い時など手間が多くなっていたので、Goで呼び出せるようにしようと調べてみました。ちょうど同時期にGoで実装している方がいたので、参考にしてサンプル実装を作ってみました。

go-memo/ssh_port_forwarding at master · reiki4040/go-memo · GitHub

vagrantで踏み台(bastion)とHTTPサーバを起動して、bastion経由でHTTPサーバの80ポートにforwardingする形でサンプルを作っています。

参考にしたページではSSHの認証がパスワードだったので、公開鍵認証に変更して実装しています。この公開鍵認証の実装例がGoDocにあるんですが、その通りにやると動かず地味にはまりました。

調べてみたらExampleはここの一部とのこと。HostKeyをデフォルトでチェックしてないGoの脆弱性(CVE-2017-3204)があってそうなったようですね。とりあえず、サンプルではそこまで要らないのでInsecureIgnoreHostKeyで対応しています。実際使うときは、適宜チェック機構があった方が良いです。多分known_hostsファイルの対応でいいと思います。

実装してないので、ツール的に必要だと思うのは以下あたりなので適宜実装していこうかと。

  • 複数のport forwardingの一括起動
  • remote hostのDNS解決(A record, SRV record)
  • 定期的な接続先の再解決(DNS追従など)
  • ServiceDiscovery的なもので自動解決(AWS CloudMapあたり)
  • 暗号化されているprivate keyの読み込み対応(GoDocにもありますがx509でやる必要がある様子)
  • remoteが複数ある場合のバランシング(これはできるんだろうか?)
  • 多分色々エラーハンドリング

参考

LINEのLive Photo投稿をOFFにする

今月2018/11の後半ごろに、妻からLINEの写真の拡大表示時にダウンロードが発生するようになって面倒だという指摘をもらいました。

投稿写真にLiveという文字が入るようになったので、気づいてはいたのですが、Live Photo(iOSの写真の機能で、シャッター前後の動きがみれる写真)の送信に対応したようです。ただ、調べてみたら、Live Photoの送信自体は、2018/05のアップデートからのようです。

しかし、最近2018/11前半までは、デフォルト静止画として投稿されていました。これはトークルームの写真一覧で確認しました。特にLive Photoである必要のない写真も多いので、LINEで送信時にOFFにする方法はあるのかなと思い、トークルームの設定を見ましたが、特に見当たらず。試しに、写真選択画面でサムネイル左下の二重(三重?)丸太陽みたいなアイコンをタップすると斜線が入り、OFFにすることができました。

ただ、現状デフォルトONで、自分でOFFにする必要があるオプトアウト方式になっています。アプリ全体かルーム単位ぐらいでデフォルト共有ON/OFFを選びたいです。

※LINEから直接写真を撮る場合はLive Photoにはなりませんが、iPhoneのカメラで撮った写真をライブラリから投稿する場合にこれに該当します。

事故に注意

Live Photoが共有できるようになったこと自体は良いのですが、今まで静止画として送られていたものが、Live Photoとして送られるように変わっています。これによって意図しないプライバシー情報の漏洩を起こす可能性があるので気をつける必要があります。

Live Photo自体は、前後の状況が残るので、シャッターチャンスを広くとるために使うケースもあると思います。編集で代表の画像を選べるので、動きのある被写体を撮る場合に重宝します。

しかし、頻繁にON/OFFを切り替えるものではないので、常にLive Photoで撮影している場合に、前後に共有する際に気をつけるもの(写り込んだ人や、部屋の一部や窓の外、意図して隠している部分など)が写っていた場合に、それを意図せず送信してしまう事故が起こり得ます。

androidの友人に送ってみたら、ムービーとしては見えないというので、iOS系の対応機種だけかもしれませんが、注意しましょう。

Kindle Paperwhite 2018購入しましたが…

新しいkindleを購入しました。ちょうど4年前ぐらいにvoyageを買ったんですが、最近、容量不足と若干バッテリーがへたり気味かなと思い、買い替えを検討していたところに、ちょうど発表されたので予約しました。購入理由は、容量がvoyageの8倍、おまけで防水機能付きになったという点です。oasisは、さすがに高すぎて対象外です。

ただ、最初に書いておくと、個人的にvoyageのほうが読書体験が良いという感想です。良くも悪くもPaperwhiteの正統進化系でした。

使用歴と課題

Paperwhite(2014) -> voyage(2014) -> 今回Paperwhite(2018)です。カラーや大判のものはiPad mini 4で見ています。

一番大きな課題は、容量不足です。漫画はもう余程のものでない限りは、kindle版しか買わないことにしています。そのため、voyage(4GB)で、新しい本のダウンロードが止まっていました。古いものは消しますが、あー、ちょっと読みたいと思った時に、じゃどれか消して、数分待ってねってのは、ストレスです。iPadは容量はありますが、文字や白黒ばかりを見ると、やはりE-ink端末のほうが目が疲れません。

バッテリーは数日は持ちますが、年数考えると次のを検討してもいいかなと思いました。防水は、頻度は低いですが、お風呂でそのまま読めるとziplockの手間がないなーという程度です。

Paperwhite 2018

購入したのはKindle Paperwhite 2018 WiFi/広告なし32GBモデルです。容量は初期状態で27GB弱でした。

一通り持っている漫画等をダウンロードしたところ(すごく時間かかった)残りは9.47GBとなっており、すでに2/3の18GB弱を使っています。voyage(4GB)で足りないはずです。防水機能は、まだ試していません。

操作は画面タッチのみで、物理ボタンは下部の電源のみです。丸みのある形状も特に変わり無さそうです。スペック的には以前のPaperwhiteより軽くなっています。

個人的なvoyageの優位点

voyageの後に、Paperwhite使って感じたのは、「進む」と「戻る」を、あまり手を動かさずに行える、というのが思った以上に大きかったことです。

voyageの場合、左右のベゼルの真ん中あたり(持つと触れる部分)に進むボタン*1があり、持っている状態で少し押し込むと、次に進むことができます。戻るはその少し上にあり、これも少し上に親指を動かして押し込む動きになります。

Paperwhiteの場合は、画面に触れる必要があり、指を横に動かすことに加えて、左向きフリック、右向きフリックと使い分ける必要があります。これが毎ページとなると、大きな差になります。また、本のリスト時は、リストを進めたい時に、別の本を誤って開いてしまうことがあり、ストレスです。

まとめ

voyageは、価格高めだと思っていましたが、Paperwhiteに戻ってみて読書体験の良さを再認識しました。しかし、販売ラインナップからは消えてしまいました。容量少ないのが不満なので、32/64GBあたりで新機種+価格下げて出し欲しいですが、Paperwhite 2018と真正面からぶつかるので無さそうです。

Paperwhiteしか使ったことのない人は、そのままなので特に違和感はないかと思います。voyageまたはoasis常用してた方は、このボタンの差は大きいかもしれません。

*1:正確にはボタンというよりは、iPhoneの押せないけど押してる感のあるホームボタンと同じ?感触