acd_cli で Amazon Cloud Drive を FUSE mount する

Posted over 3 years ago by yoosee.
  linux cloudstorage

2017/07 追記: ACD側のポリシー変更なのか、acd_cli を始めとするAPIを多用するツールが押しなべて利用不可になっているようで、下記方法は使えなくなっている。またACDの無制限プラン(Unlimited Everything)もUSでは廃止になっているため、個人的にも継続利用はしない方針。

去年の Black Friday で Amazon Cloud Drive Unlimited Everything プランが通常 $90 / year のところ $5 というお試し価格になっていたので試しに契約してみた。

Amazon Cloud Drive Unlimited Everything

しかし Amazon から提供されるクライアントは Windows 向けや Android/iOS 向けで、Linux 向けがないので自宅 Debian マシンにファイルを溜め込んでいる身からは使いにくい。ちょっと調べると API を用いた CLI ツールの実装が幾つかあったのでその中でも acd_cli というものを試してみた。結論から言えば素晴らしく使い物になる。

yadayada/acd_cli: A command line interface and FUSE filesystem for Amazon Cloud Drive

ポイントは FUSE として仮想 mount point を作れることで、容量無制限の Amazon Cloud Drive を自分のマシンのディレクトリとして管理できる。ファイルのアップロードはそこにコピーするだけなので大変簡単だ(同等のことはWebdavがあるBox.comなどでも出来るのだが)。一応最大ファイルサイズなどに制限があるようではあるが、バックアップを含めた普段使いでは特に困っていない。

adc_cli のインストール

インストールだが、基本的には docs/setup.rst にある通り Python の pip でインストールする。Debian stretch だと pip のバージョンが古くてそのままでは使えなかったので、python-virtualenv 及び python3 を使った下準備から始める。

% virtualenv -p /usr/bin/python3 acdcli
% source acdcli/bin/activate
...
% bin/pip3 install --upgrade git+https://github.com/yadayada/acd_cli.git

認証と利用

導入が終わったら認証を設定する。これも基本的には docs/authorization.rst のまま。Amazon App としての認証をお任せにする設定方法もあるが、今回は自前で Amazon Developer 登録で取得できる Key pair を使って設定した。

https://developer.amazon.com/public/apis/experience/cloud-drive/content/getting-started

Developer ConsoleLogin with Amazon タブから Create a New Security Profile で新しい Profile を作ると OAuth2 Credentials として Client ID 及び Client Secret が生成される。これを ~/.cache/acd_cli/client_data というファイルとして以下のフォーマットで記載する。

.. code :: json
 {
     "CLIENT_ID": "amzn1.application-oa2-client.0123456789abcdef0123456789abcdef",
     "CLIENT_SECRET": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
 }

これを設定した上で初期化コマンドを実行。

% bin/acd_cli -v init

URLが出るのでブラウザで表示して認証を進めると、oauth_data というファイルがダウンロードされる。これを以下のように配置する。

% mv oauth_data ~/.cache/acd_cli/

これでもう使えるようになっているはずだ。acdcli コマンドでステータスを表示したり単体ファイルをプッシュ・プルしたりできる。FUSE mount するのはパラメータに mount を指定して mount 先のディレクトリを記載するだけ。先に一度 sync しておく。

% acdcli sync
% acdcli mount ~/var/acd

これで ~/var/acd (ないし上記で指定する任意のディレクトリ)に Amazon Cloud Drive のトップディレクトリが表示され、操作やファイルの転送ができるようになる。

ちなみに df で確認すると容量は 100TB となっているようで、実際 Quota を見ると

% acdcli quota
...
    "quota": 109951162777600
}

という数字が返ってくる。Unlimited Plan なはずなので、100TB 近辺になると Quota が増えるんだろうか。まあ自分の用途で100TBどころか10TBを超えることもまず無いだろうと思うので何ら問題のない数値ではあるが。

 

スマートフォンをケーブルの軛から解き放つ! ケーブルレスでのスマホライフ

Posted over 3 years ago by yoosee.
  neta android

ここ最近のスマホ業界を眺めるに、USB Type-C だの Lightning だの「ケーブルの上下を気にしなくていい」などといつの時代なのだとツッコみたくなる事で盛り上がっていて見るに耐えない。むしろ嘆かわしい。21世紀を生きる現代人たるもの、ケーブルなどという過去の遺物にとらわれず、スマホはケーブルレスで使うべきである。

No Cable!

さてそう言われても諸兄らは困惑するかもしれない。ここに簡単ではあるがスマホをケーブルから解き放つ幾つかのステップを記載したい。

クラウドにデータがあるアプリを使う

賢明な皆さんであれば既に大抵のアプリはクラウド連携していることだろう。例えば写真のバックアップなら Google Photos でも Dropbox でも Amazon Cloud でも Facebook でも選び放題である。音楽もストリーミングサービスを使うなりクラウドにmp3を置くなりできる。クラウドにデータが保存されていればスマホのデータなどいつ消えても問題がないという安心もついてくる。ケーブルを繋いでローカルのPCと同期を行うなどの原始的行為はPalmOS時代の終焉と共に卒業すべきであろう。ぴろりーん。

PCとのファイルのやり取りをWi-Fi経由でする

それでもPCとファイルをやり取りしたい事情はまだあるかもしれない。例えば自炊した書籍のファイルを転送したい時などだが、わざわざそのためにケーブルを繋ぐ必要はない。NAS経由やPC側にLAN共有フォルダを作って X-plore File Manager のようなLANフォルダ対応のファイルブラウザで転送するもよし、AirDroid のようなアプリでスマホをブラウザから操作可能にしてもいい(X-plore にも同等の機能がある)。

Bluetooth ヘッドホンで音楽を聴く

次に消滅させるべきはヘッドホンケーブルであり、収納して取り出すとエントロピーの法則により必ず数カ所で絡まって人の神経を逆なでするケーブルは全ての人類の敵であり無くなるだけでも貴方の Quality of Life は 30ポイント以上改善する。最近はBluetoothヘッドホンの音質もだいぶマシになってきたし、また逆に音質にこだわらなければ2000円前後で手に入る。Taskerを使えば接続したBluetooth機器によって違う自動アクションを設定するなど、更に便利さを増すこともできる。惜しむべくはスマホをケーブルレスにしているのにBluetoothヘッドホンの充電にはケーブルを使わないといけない場合が多いことであろうか。

Qi でワイヤレス充電する

最後に残る最大の関門が充電であろう。こればかりはスマホ側がワイヤレス充電に対応している必要がある。ここは一般的な規格として Qi (チー) 対応スマホを選ぼう。悲しいことに新しい Nexus までもワイヤレス充電非対応になってしまったが、まだ Motorola や Samsung が最新機種でも Qi 対応端末を出している。また場合によっては Qi を外付できるケースの導入を検討しよう。幸い Qi 充電器は最近どんどん安くなっていて、充電台のみだと $10-20 程度で手に入るし、車載マウントにQiがついたモデルもある。スマホをホルダに置くだけで充電が始まる車載Qiは文明開化の音がする。

特に防水端末を使う場合は充電端子にカバーキャップが付いていることがあり、充電のたびにカバーを外して電源を差し込むなど現代人とはとても思えない野蛮な作業を強要される屈辱を味わう羽目になるのでワイヤレス充電は必須である。唯一の欠点は Qi は通常の充電と比べて充電速度が遅い(端末にもよるが手元の計測で 640mA/h)ことだが、充電ホルダをオフィスや自宅数カ所に置いておき、使わない時はポンとその上に載せる習慣にしてしまえばこまめに充電されるのでさほどは気にならなくなる。どうしても困ったら、まあポリシーを曲げてケーブルを繋げばいいのである。

このように幾つかの簡単なステップだけで貴方のスマートフォンもケーブルレスで運用できる。21世紀を生きる現代人として、ぜひケーブルにとらわれないスマートライフを目指していただきたい。

 

TeslaUnread が Galaxy S5 Email のカウントを更新してくれなくなった問題への対応

Posted over 3 years ago by yoosee.
  android

しばらく前から Nova Launcher + TeslaUnread のバッジ表示が Galaxy S5 の Email 未読数を更新しなくなる問題が発生していて困っていたのだが、ようやく解決できた。

一度問題が起こると、Email アプリ側で未読数がどう変わろうともバッジの数字が全く更新されなくなる。TeslaUnread や Email の Cache, Data を消去したり再インストールしてみたりしても全く修正されず、一度故あって Factory Reset した際にようやく直ったのだがしばらくしたら再発してしまい、仕方がなく諦めて Email のバッジ自体を無効にするハメになっていた。

その後ふと思いつきで改めて調べてみると、そのものずばりの解決方法が見つかった。

Teslaunread no longer updating - Android Forums at AndroidCentral.com

分かってみれば単純な話で、Galaxy S5 の Email は Email 自体ではなく、Samsung 独自 Launcher である TwLauncher に Badge Count を供給するための Badge Provider というプログラムがあり、TeslaUnreadも恐らくこれから Count を取得している。これは設定から “Applications → Manage Applications → (右から左にスワイプして) All” を探すと出てくる。

BadgeProvider

こいつを “Clear Data” して “Force Stop” し、改めて Email を起動するとバッジのカウント数が正しく表示されるようになった。…Galaxyはハードウェアはよく出来ているんだけどソフトウェアにこういう無駄な癖があるのが嫌なんだよな。

 

My EDC キーチェイン

Posted over 3 years ago by yoosee.
  edc keychain

EDC という言葉をご存知だろうか。Every Day Carry の略で、つまりは「毎日持ち歩く(もの)」の意味になる。「俺はこんな格好良い○○を持ち歩いてるぜ」とか「この組み合わせが素晴らしいのだ」とか「この小さいパッケージにサバイバル用品をまとめたぜ」とか、そういう自慢をする趣味だと思えば大体あってる。米国ではそこまでマイナーではないが、とは言え職場でランチの話題に出る程でもない。

EDC自体は「毎日持ち歩くもの」なので範囲が広いが、定番になるのはナイフ、ツールナイフ、LEDライト、ペンとノート、それにキーチェインといった辺りだろうか。米国なので銃というのもあるがさておき、EDCForums というのがこちらだとメジャーな掲示板であり、そこにもキーチェインのスレッドがある。写真を眺めるだけでも結構楽しい。

Keychain Pics, the Fourth Installment. | EDCForums

なんだかんだと前口上を述べているが、なんのことはない、自分のEDCキーチェインを自慢したいという話である。ということで今のキーチェインはこんな感じだ。日本でも売っているのを見つけたものは (JP) で主にAmazonへリンクしている。

2016年3月のキーチェイン

写真左側とキーホルダー

写真右側上から

ホイッスルは都市でのサバイバルでは必須のアイテムで、地震などの災害で瓦礫に閉じ込められた際に大変重要な役割を果たす。防犯にも使えるので、諸兄らもひとつ持ち歩くことをお勧めする。Nano Light は超小型だがそれなりに光量の大きいライトで、今時ならスマホを使ってしまうかもしれないが、これも役に立つシーンはある。Swiss+Tech Utili-Key はナイフやドライバーが鍵型のフォームにまとまったツールで、この素晴らしさは別記事を起こそうと思っている。

KeySmart は何年か前に KickStarter で手に入れたがその後製品化され、最近は類似品も結構見かけるキー整理アイテム。鍵を折りたたんでしまうことができるので、比較的場所を取らずに複数の鍵を持ち歩くことが出来る。

EDCたるものキーホルダー側にもこだわりを持つ(まあ上記フォーラムの人達はこんなアピールばっかりだしチタン大好きである)。TECのP7 Clip と GambleMade FM1 Titanium の組み合わせは、ポケットの縁に Clip を引っ掛けて FM1 がアイテムをフラットに配置することで、キーチェインがポケットを膨らませずにスマートな収納ができる。Isotope Fob は中に発光体を入れて夜間落とした時でも灯りでキーチェインを見つけられるように付いている。

nanoSTRIKERファイアスターターとUtili-Key

nanoSTRIKERは、その、なんだ、火打ち石である。そう、火打ち石。ファイアスターター。こすると火花が飛び散るアレだ。諸兄らはこれを何に使うのかと疑問に思うだろうが、もちろん普段の使いみちなど無い。ロマン、そうロマンのためだけだ。どこでも何かあれば火を起こせる、男子たるものそうしたロマンも必要なのだ。それが分からぬ者は Man vs Wild でも見てサバイバルとは何かを学ぶのがよかろう。

キーチェーンに限らず EDC に何かしら興味のある人は、 Everyday Carry あたりが面白い EDC 紹介をしているのと、また日本でも インマイバッグ という「カバンの中身をシェア」するサイトがあるので覗いてみると楽しめると思う。他のEDCについてはまたそのうち記事を書くつもり。

 

Let's Encrypt + Nginx の導入

Posted over 3 years ago by yoosee.
  ssl nginx security letsencrypt

Update: この記事中のやり方は古くなっているので2017年7月現在は以下の記事を参考。 Let’s encrypt の証明書を certbot を使って更新する - W3er

このブログをSSL化するにあたって Let’s Encrypt - Free SSL/TLS Certificates の証明書を導入しているのでその備忘録。Let’s Encrypt は最近のブラウザであれば標準で利用できる証明書(ドメイン認証:DV)を無料で発行してくれる。現在 Public Beta の状態だが、登録すれば誰でも利用が可能だし、Valid な Cert が提供されている。

SSL in blog.yoosee.net

登録後に必要なツールを持ってきてセットアップする。下記を実施したのは 2016-03-09 だが、去年12月にやった時と少しやり方が変わっている気がするので、実施時にはドキュメントや –help などを見てやったほうがいいかもしれない。

% git clone https://github.com/letsencrypt/letsencrypt
% cd letsencrypt
% ./letsencrypt-auto 

Debianであれば必要なパッケージがインストールされる(当然内部で sudo が求められている)。libssl-dev などが入るので予め apt で入れておくといいかも。letsencrypt 自体は何も指定しなければ ~/.local の下にインストールされるようだ。

SSL Cert の作成は、Apache であれば設定ファイルの変更まで勝手にやってくれるらしいが、Nginx 対応はまだのようなので certonly --standalone オプションで Cert の作成のみを行う。

% sudo ~/.local/share/letsencrypt/bin/letsencrypt certonly --standalone -d blog.yoosee.net
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/blog.yoosee.net/fullchain.pem. Your cert will
expire on 2016-06-07. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If like Let's Encrypt, please consider supporting our work by:

上記の通り、中間証明書を merge した fullchain が /etc/letsencrypt/live/blog.yoosee.net/fullchain.pem に生成される。有効期限は生成日より約3ヶ月といささか短いので、Let’s Encrypt でも cron などで更新を自動化することを推奨している。例えば下記のような cron を仕込んでおくと /etc/letsencrypt/live/blog.yoosee.net.conf に自動生成されている設定ファイルに従って renew をかけてくれるようだ。

0 4 1 * * /home/yoosee/.local/share/letsencrypt/bin/letsencrypt renew

Nginx の SSL 関係の設定はこんな感じ。上記コマンドは Certificate Key も /etc/letsencrypt/live/blog.yoosee.net/privkey.pem に作っているのでそれを指定する。

server {
        listen 443; # listen for ipv4
        server_name blog.yoosee.net;
#...
        ssl on;
        ssl_certificate /etc/letsencrypt/live/blog.yoosee.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.yoosee.net/privkey.pem;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
#...
}

上記ではついでに Diffie-Hellman key exchange のパラメータも作成して指定している。これをやっておかないと Key Exchange の強度で Cipher DHE 関連で微妙にディスられたのだが、ちゃんと設定すると SSL Server Test: blog.yoosee.net (Powered by Qualys SSL Labs) でも今のところ A 判定をもらっている。

% sudo openssl dhparam 2048 -out /etc/nginx/ssl/dhparam.pem

過去に仕事でやった商用Certの導入や更新に比べたらものすごく簡単で素晴らしいことである。