自我貯水槽

このブログを用い記憶を失った時の再現性を担保しています。

辛いものを食べて死にかけたログ

1/10

午後20時

新年会でチームメイトと激辛料理店に赤い壺という所に行く、とても美味しかった。唐辛子をいくつか胃に入れてしまう。

午後23時

家に帰る途中になにか薄めなきゃという使命感からプリングルスを買って食べる

1/11

午前3時

腹痛で目を覚ます。お腹を下している。普通にお腹が痛いので苦しみながらトイレにこもり、その後ベットへ戻り寝る。

午前7時

朝の輪読会の担当なので、起きて当該箇所を確認。普通に知っている箇所だったので大丈夫そうということで8時まで寝る

午前8時

起きてシャワーを浴びる。お腹の調子は当然悪い。トイレに行き苦しみをあじわう。

朝ごはん用のヨーグルトが一切喉を通らない

午前9時

輪読会、苦しいとか冗談を言いながら、ちょっとオレンジジュースを飲む

午前10時

始業、チームメイトの人と共に苦しみを分かち合う. まだ余裕がある

午後12時

熱が38度ぐらい出て帰宅を決意。帰宅後すぐ寝る。

午後2時

熱が39度台に上がる

午後10時

熱が38度台まで下がる、食べものが喉を通らないも、頑張ってりんごを食べる。

すぐりんごをもどしてしまう、胃の中でりんごが辛くなってて、戦慄する

1/12

午前8時

回復、インフルエンザかもと検査を受けに行くも陰性。

正午

お昼ご飯に山かけ蕎麦をたべる だいぶ回復、終戦宣言してもいいと思う感じになる。

その後

  • 食が細くなった。もともと食べ過ぎの傾向があるのでよかったかも
  • 辛いのを食べることに強烈な不安を覚えることになった

保守者のいないシステムは破綻してしまう具体例をみた

久しぶりに実家に帰ったら水槽がめっちゃ汚くなっていて悲しかった。

僕が東京に行くので

  • ガラスを拭く
  • 水を継ぎ足す

で普通に鑑賞可能な形が維持される水槽をつくっていたのに

水槽のユーザーの母上にとって日常に組み込むのは難しい感じだったみたい

ユーザーインタビューをすると

  • 自分が触るとなんか死ぬのではと思っている
  • まぁメダカが元気そうだったらいいっぽい
  • あんまり見た目は気にしてない。音は好き
  • 撤去するきはまったくない
  • 帰ってきたさいに面倒をみてほしい
  • さわってなにかあったら僕が嫌がりそう
  • 餌はやってくれている
  • 水槽が綺麗だと嬉しいと感じる

もうちょっとメタると

  • 僕が帰ってきた時のやることとして用意してくれている

ということっぽい?。しょうがないにゃぁ

訳あってAWSのコードを読んでたらいいなと思える実装に出会った

訳あってAWSのコードを読んでたらいいなと思える実装に出会った

+ (instancetype)defaultPinpointTargeting {
    static AWSPinpointTargeting *_defaultPinpointTargeting = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        AWSServiceConfiguration *serviceConfiguration = nil;
        AWSServiceInfo *serviceInfo = [[AWSInfo defaultAWSInfo] defaultServiceInfo:AWSInfoPinpointTargeting];
        if (serviceInfo) {
            serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:serviceInfo.region
                                                               credentialsProvider:serviceInfo.cognitoCredentialsProvider];
        }

        if (!serviceConfiguration) {
            serviceConfiguration = [AWSServiceManager defaultServiceManager].defaultServiceConfiguration;
        }

        // ↓この部分です。
        if (!serviceConfiguration) {
            @throw [NSException exceptionWithName:NSInternalInconsistencyException
                                           reason:@"The service configuration is `nil`. You need to configure `awsconfiguration.json`, `Info.plist` or set `defaultServiceConfiguration` before using this method."
                                         userInfo:nil];
        }
        _defaultPinpointTargeting = [[AWSPinpointTargeting alloc] initWithConfiguration:serviceConfiguration];
    });

    return _defaultPinpointTargeting;
}

(うわ、はてブobjective-cシンタックスハイライトサポートしていない...)

当該部分のコードはここですね。→ aws-sdk-ios/AWSPinpointTargetingService.m at f114d767fef60c61be595f4e614ced3c4d2600ef · aws/aws-sdk-ios · GitHub

疑似コードみたいに切り出すと

object = nil
if (condintion1) {
  object = hogehoge.create
}

if (condintion2) {
  object = fugafuga.create
}

if (object == nil) {
  throw “object is nil” 
}

return object

こんな実装になっていて、returnの前にnilチェックしているため、optionalな型が保証されてない世界でこの関数の帰り値がnilにならないことが読みとりやすい感じがする。すてき

はてなブログなんかに負けないんだから

会社のつよい先輩に 「情報発信したくてブログを作ろうと思っているけど、なかなかできない」と話したら 「手段と目的が倒錯している、さっさと適当にブログサービスに登録するんだ」という旨のアドバイスをいただきはてなブログを開設しました。(認知を認めたくないけど新年というのもありますね)

はてなブログmarkdownでコードをかけてエンジニアフレンドリーで良いですね。

print("hello")

簡単にコードかけちゃう! すごい!便利!

こんなのに屈せず、いつか自分でブログサービスつくってやるんだから