パルカワ2

最近はFlutterをやっています

プール行ってる

もともとはジムに行ってたんだけど、時間効率を考えると水泳だな…と思い始めて区のスポーツセンターに通い始めた。

最初は、仕事が終わってダラダラして21時頃に勢いで下の水着(正確には水陸両用パンツ)だけ持っていったら帽子が必要ですってプールサイドで言われて「入り口の注意事項に書いてなかったやん」とは思ったんだけど、どうせならもろもろ揃えるかと思って、2時間分の入場料払って5分でそのまま帰った(スポーツセンターの売店で買えるらしかったけど)

次の日、大きめのスポーツ用品店で度付きのゴーグルとしっかりした水着と帽子を買って二回目。 夜は人が少なくて目立つのが嫌だったので、人間がたくさんいそうな時間帯を狙った。16時くらい。 レーンへの入り方みたいなのもわかってなかったので、最初はプールを眺めて雰囲気を理解した。このとき、変質者と思われないか不安だった。

中学生くらいまではプール教室?に行ってたので泳ぐのは出来たんですけど、まともに泳ぐのは中学生ぶりだし今は泳げるか不安だったのでまずは水中で歩いた。 水の中での歩き方にも色々あると思うんだけど、何も知らないのでそれも雰囲気でやった。

歩くのは余裕すぎるな〜という感じだったので、初心者レーン25mにシュッと入って泳いだら案外泳げて楽しい。 こりゃあいいと思って、25mを何度か往復していたらまあ疲れる。疲れたら歩いて休憩。回復したらまた泳ぐを繰り返した。

そしたら、足と胸あたりの筋肉が悲鳴を上げ始めたのでジャグジーに入って帰宅した。筋肉痛になりたくないので筋膜リリースして終わり。 想像してたより楽しかったので続ける。ジムは解約する予定

アマニタ・パンセリナ を読んだ

アマニタ・パンセリナ (集英社文庫)

アマニタ・パンセリナ (集英社文庫)

中島らも自身がドラッグに関する情報について、咳止めシロップの項目でこう書いてる。

問題は情報にはなくほとんどいつも中毒者の側にある。
つまり、なるべくして中毒になるような、そういう器質の一群があるのだ。

情報として重要なのは、たとえばこの文章のような「正確な」情報だろう。
こうすればこうなりますよ、という臨床例に近いような情報だ。
かくすより「知らせる」ことの方が大事なのである。

grpc-java/protobuf-lite では JsonFormat がない

Unable to find JsonFormat class in Android · Issue #276 · google/protobuf-gradle-plugin · GitHub

Androidprotobuf-liteを利用したまま、JSONをオブジェクトにする必要があったので、Gsonで頑張ることにした。InternalなAPIを呼ぶ必要があり困っている。ちなみに grpc/grpc-swiftは頑張る必要もなくシュッと出来ます。

  • protoで定義されたフィールドは、生成されたクラスのメンバー変数では最後に_ がつく
    • 例えば、 name というフィールドを持ってるとすると生成されたクラスのメンバー変数では name_ になる
  • protoで定義されたフィールドでリピートするものは、ただのListではなくInternal.ProtobufList<T>で表現されている
    • TypeAdapter がないとエラーになる

以上をふまえて、以下のようなコードを書いた。

package com.google.protobuf

open class ProtobufListTypeAdapter<T>(val parser: (JsonElement) -> Collection<T>): TypeAdapter<Internal.ProtobufList<T>>() {
    override fun write(out: JsonWriter?, value: Internal.ProtobufList<T>?) {
        // 利用していないので実装していない
    }

     override fun read(jsonReader: JsonReader): Internal.ProtobufList<T> {
        val list = ProtobufArrayList<T>()
        list.addAll(parser(JsonParser().parse(jsonReader)))
        return list
    }
}

// 型ごとに作ることになるが、リフレクションで頑張ればどうにかできそう(試していない)
 class DeliveryTimeListTypeAdapter: ProtobufListTypeAdapter<DeliveryTimeOuterClass.DeliveryTime>({
    it.asJsonArray.map { element ->
        DeliveryTimeOuterClass.DeliveryTime.newBuilder()
            .build()
    }
})

ProtobufArrayListが、com.google.protobuf内でしか利用できないので、package com.google.protobufにしている。

class ProtoExclusionStrategy: ExclusionStrategy {
    override fun shouldSkipClass(clazz: Class<*>?): Boolean {
        return false
    }

    override fun shouldSkipField(f: FieldAttributes?): Boolean {
        if (f == null) {
            return true
        }
        // proto で定義されたフィールド以外は、JSON化しない
        return !isProtoField(f.name)
    }

    fun isProtoField(name: String): Boolean {
        // filedに _ があると proto で定義されたフィールドとする
        return name.contains("_")
    }
}

val gson = GsonBuilder()
    .setFieldNamingStrategy { it.name.replace("_", "") }
    .setExclusionStrategies(ProtoExclusionStrategy())
    .registerTypeAdapter(
        object : TypeToken<Internal.ProtobufList<DeliveryTimeOuterClass.DeliveryTime>>(){}.type,
        DeliveryTimeListTypeAdapter()
    )
    .create()

gson.fromJson(...)

もっといい方法があったら知りたい。

阿佐ヶ谷姉妹ののほほんふたり暮らし を読んだ

阿佐ヶ谷姉妹のことはよく知らないけど喧嘩とかせずに仲良くニコニコして過ごしてる話かと思ったら、あけすけにシチューをよそってもらえなくてムカついたみたいなのが書かれてて人間らしくてよかった。そうだよな、ムカつくことあるよな 人間だもの ひさを

天才はあきらめた を読んだ

天才はあきらめた (朝日文庫)

天才はあきらめた (朝日文庫)

漠然と「天才じゃねーか」と思いながら読んでたんだけど、最後のオードリー若林正恭による(尊敬と嫉妬にまみれた)解説で「天才とは、尽きない劣等感と尽きない愛のこと」と書かれていて、良いって思った。

今夜もカネで解決だ を読んだ

今夜もカネで解決だ

今夜もカネで解決だ

前に神宮球場で野球を見に行った時に id:soh335 が良いと言ってたのを聞いて読んだ。
体の不調やストレスを、お金で解決していくエッセイ。主にマッサージの話なんだけど、時々バッティングセンターの話とかも出てくる。読んでるとマッサージとかに行きたくなる。

僕はマッサージに行くとヨダレをダラダラ垂らしながら爆睡してしまうのであまり行けてない。肩こりが原因で頭が痛すぎてヤバイときは行って解消するようにはしてるんだけど、施術されてるときは痛すぎて「コイツ絶対殺してやる」みたいな気持ちになりながら施術されてる。たぶん、マッサージ師は「コイツ、毎度ヨダレ垂らしやがって」と思ってると思う。ごめん。

ヨダレを垂らすのが恥ずかしいし、マッサージを予約したり行ったりするのはめんどくさいので最近は家でストレッチローラーというのを使っている。ゴロゴロと「は~〜疲れた〜」って言いながらやってる。自分の体重によってほぐすので大変じゃないしなかなか良い。結局、家で出来るのが最高

僕自身、お金で解決できることは無限にあると思っていて、家事とかまさにそんな感じで解決していきたい。今も洗濯などなるべくお金で解決していってるんだけど、元気がないときは服を脱ぎっぱなしにして部屋がグチャグチャになるので、そこもお金で解決できるのならしたいものである。

Google Pixel3 を交換する 2

そんなことある?って感じなのだけどまた壊れたので問い合わせた。
いろいろ質問されて最終的にまた交換することになった。すぐ交換してもらえるのはありがたいが壊れないでほしい。

今回も前回同様にPixel Phone Helpからチャットで問い合わせている。

以下を伝えると迅速だろうなと思ったので、次回参考にする。(次回はないほうが嬉しい)

## どのような症状が起きているか?

## 症状の動画などのURL

## その症状は、いつから起きているか?

## この症状が発生する直前に起きた出来事(水没・落としたなど)

## 今の端末で出来ること・出来ないこと

## 画面に保護カバーは貼っているか?

## 端末の再起動をしたか?

## 端末のファクトリーリセットを行ったか?

## 問い合わせ前、他に行ったことはあるか?

交換することが決まったら、端末IDを聞かれる。端末IDは、箱かSIMカード取り出し口か購入時のメールに記載されている。端末が操作できる場合は、設定からも見れるぽい。僕はメールを見た。
また1度でも交換したことがある場合は交換したことがあることを伝えて、端末IDを答えると相手が手間取らないのでよい。

前回
hisaichi5518.hatenablog.jp