gsutilコマンドでGoogle Cloud Storageのオブジェクトを操作する

gsutilgcloudに付属しているのかな。インストールにはgcloud initを使うといいみたいです。私はUbuntuが新しすぎていろいろ動かないので、google/cloud-sdk:latestを使っている。

まずは認証する

gcloudで認証する。

gcloud auth activate-service-account --key-file ./service.json

バケットの一覧

サービスアカウントの認証などだとバケットを閲覧することはできない。

gsutil ls

オブジェクトの一覧

/を改装扱いにしてくれるので、実行しても/区切りで直下のオブジェクトのみ一覧にされる。すべてのオブジェクトをaws-cli的に見るには、duコマンドがそれに近いかもしれない。後述します。

gsutil ls gs://bucket

ファイルのアップロード

put のようなコマンドがあるわけではなく、ローカルのファイルをコピーするような記述になる。下記のようにすると gs://bucket/file.txt が作成される。

gsutil cp file.txt gs://bucket/

下記は gs://bucket/hoge が作成される。

gsutil cp file.txt gs://bucket/hoge

このような挙動で基本は問題ないが、空階層を作成したい場合は/で終わるファイルを作成したい場合がある。このケースにgsutilで対応する方法がわからなかったので、こういうケースはcurlでPUTするのが良いだろう。末尾を %2F で終わらせている。

curl -X POST --data-binary @[OBJECT_LOCATION] \
-H "Authorization: Bearer [OAUTH2_TOKEN]" \
-H "Content-Type: [OBJECT_CONTENT_TYPE]" \
"https://www.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]%2F"

含まれるオブジェクトをすべて一覧にする

これで階層関係なしに指定したパス以降のファイルを一覧にしてくれる。

gsutil du gs://bucket

なお、このように同じパスが2回出力されることがある。これはhoge/というファイルが存在してるためにおきる。Google Cloud的にはそこにファイルがある時点でhoge/というパスを表示するのだが、それに加えてhoge/というファイルがあればそれも表示するという仕組みたいだ。hoge/が2回出力される構造になっているので、これについては注意が必要だ。

# gsutil du gs://bucket
9           gs://bucket/hoge/
0           gs://bucket/hoge/file.png
27          gs://bucket/hoge/

オブジェクトの削除

gsutil rm gs://bucket/file.txt

ディレクトリ配下をすべて削除

-rを付けることで再帰的に配下を削除する。なおパス配下ではなく、ディレクトリ配下となるようで、同名のプレフィックスを含むディレクトリの名前を指定しても巻沿いをくったりせずに削除される。削除された件数が表示されるので、どんな処理をしたかは一目瞭然である。

gsutil rm -r gs://bucket/dir

オブジェクト・ディレクトリをリネーム

これでディレクトリ毎移動できます。

gsutil mv -r gs://bucket/old-dir gs://bucket/new-dir

こんな風にしてファイルも移動できるはず。

gsutil mv -r gs://bucket/file.png gs://bucket/file2.png

なおディレクトリの移動の時にディレクトリの移動を下記のように書くと、gs://bucket/new-dir/old-dir/ に移動されるので、発行したコマンドの見た目と結果に少しズレがあるように感じるので注意が必要です。

gsutil mv -r gs://bucket/old-dir/ gs://bucket/new-dir/

参考

もう何もしたくない人のためのAndroidランチャー「Niagara Launcher」

Niagara Launcher

  • 機種変した時にホーム画面を再構築するのが面倒 *1
  • 自動でカテゴリ分けしてくれるランチャーもなんか変
  • もう何もしたくない(ホーム画面荒れ地)

そんな風に思っていたところ、Niagara Launcherなるものを見つけました。

こいつはもうデスクトップをカスタマイズすることもなく、ただ一覧でアプリを表示してくれる代わりに、右側に凄まじく使いやすい目次がでてきて、単にそれをタップするだけで良いっていう。

「フォト」は英語で「Photo」ってスペルだと思うんで開く時は、Pにあると思ったんですがFにあるとか少しだけ使いにくい瞬間もあるんだけど、まあ覚えてしまえば下手に自分で整理するより便利。

必要なアプリをホームにいつまでも持ってくるのを忘れていて

  1. 一旦ホーム画面にあるのか調べる
  2. ないのでアプリドロワーを開いて検索する
  3. タップして開く

という手順を踏んでいたアホな私に取っては便利でした。

注釈*1 バックアップから復元しても機種によって画面の広さ違うんでね。

Ubuntuでxournalを使ってPDFを編集する

PDFを編集するためにMacを使ったり高額なソフトを購入する必要はなかったのだ。いろいろなアプリを試したけど、特段これが使いにくいということはなく、慣れてしまえば普通に使える。

sudo apt install xournal

ちょっとした書類を記入する時わざわざ直筆するのはあほらしくてキーボードで打ち込みたかったのがこのアプリケーションに出会った経緯です。

ちなみに、PDFを編集することを共通化できないものかと思う。Adobeのクラウドあるみたいだけどとても高額だし、クラウドと言っている割にLinux上で動かない(2019/11/19現在)のが悲しかった。

参考

https://qiita.com/3attoC/items/b5a52d3980104b6e0145

「どうせやるなら楽しんでやったほうがいい」という言葉

昔とても辛い労働をしていた時に

「どうせやるなら楽しんでやったほうがいいだろ?」

と言われたことがあるんだけど、楽しくないことはどこまで行っても楽しめない。

私はそれから転職して子供の頃から憧れていた仕事に就くことができたけど、それも10年経てば好きでもなくなってくる。でももともと好きだったから、好きな気持ちを思い出したり、新たな発見があったら楽しんで仕事ができる時がある。

でも元から大嫌いな仕事は、毎日続けてたらもっと嫌いになるだけじゃないかな。(嫌いだったけどやってみたら好きになったケースは別。)

Rustで`enumerate`を使って何回目のループかを確認しながら回す

enumerateってのがあるみたいです

fn main() {
    let lines = vec![1, 2, 3].into_iter();

    for (linenumber, line) in lines.enumerate() {
        println!("{}: {}", linenumber, line);
    }
}

回すとこんな風になります

$ cargo run
   Compiling iter v0.1.0 (/home/user/dev/test/rust/iter)
    Finished dev [unoptimized + debuginfo] target(s) in 0.24s
     Running `target/debug/iter`
0: 1
1: 2
2: 3

スマホ壊れたら地獄の苦しみを味わった

スマホが壊れたら

  • 壊れたら修理すればいい保険入ってるし
  • ちょっとくらいスマホなくても大丈夫でしょ
  • その時考えれば十分

なんて思ってたけど、そんなことなかった。

  • スマホがないことでどこにも出かけられないし
  • 電子マネーで買い物もできないし
  • ちょっとした空いた時間に情報収集することもできない。
  • 仕事の連絡を受けることもできないし
  • SNSも確認できない

まとめると生きていられない。

1万円弱のサブ機を買った

  • スマホなんてちょっと遅くても我慢できるでしょ
  • 最悪テザリングにしてiPad miniで接続すればいいでしょ

って思ったけどそんなことなかった。遅いことでとてつもないストレスを感じたしGoogle Mapとかも動かなかった。iPad miniを使えば確かに高速だけど、ポケットに入らないからカバンの中に入っていて出先で簡単には開けないし。

最強のスマホが絶対いる

格安とかだとだめ。やっぱり最強のスマホがいる。10万くらいするやつ。それくらいの価値がやっぱりスマホにはあるなと体感した。

かといって10万近くのスマホを使わないのにとりあえず持っておくってのは無茶な話ですな。

で、調べてみたらレンタルスマホってのがあるみたいです。使ったことないですけど、下手なもの買うよりこういうの使ったほうがいいかもですね。

おわり

もしレンタルが微妙でもいいものを一度買って、使い終わったら売るとか、そういうことしてでもスマホを持っていない期間ってのはなくしたほうが良かったです。スマホのありがたみとスマホになにかあった時の保険をかけておくべきだと思いましたまる。