uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

paypayブームに乗ってPS4 Proを買った

www.jp.playstation.com www.biccamera.com

paypay.ne.jp

12/6から始まったPS4のキャンペーンと12/4からのpaypayの20%還元キャンペーン(40,20,10回に1回タダ)を併用してPS4 Proを購入した。

しかも今 PS4/ PS4 Proを買うとソフトが2本タダでダウンロード出来る特典つき。 store.playstation.com

今夏ちょっと迷ったあげくに買わなかったPS4だがこれだけ買う理由が揃ったら買うしかなかった。 もらったダウンロード・コードでスパイダーマンGRAVITY DAZEをもらっておいた。 store.playstation.com store.playstation.com

GRAVITY DAZEは今月無料で出来るんだけど今月は他のゲームやるだろうし買ったほうがオトクな感じがした。

余談で、購入したあとで箱にクーポンコードがついてなくてクーポンコードもらうためだけに店を再訪するってトラブルもあったけどいい買い物が出来た。

完全ワイヤレスなイヤホンを買ってみた

Aamzonのタイムセールで上の商品を買った。

まだ3日目ぐらいなのですべてを把握してないが今のところの感想を書いてみる。

  • 充電ケースに入れておけば意外となくさない。前にBluetoothのイヤホンをなくしたことがあるので完全ワイヤレスにすることでもっとなくしやすくなるかと思ったけどそんなことはなかった
  • 1回の稼働時間が4時間で思ったよりは持つ
  • ケースの充電がマイクロUSBなのが不満。AndroidケータイがUSB Type-Cなので端末の種類を揃えたかった。。。

あとはタッチしたときの操作などがまだ分かってないのでそろそろその辺を読んでいこうと思う。

Bluetoothのワイヤレスイヤホンを買った

[フォーカル(Focal)]Spark Wireless Black (スパーク・ワイヤレス・黒)

[フォーカル(Focal)]Spark Wireless Black (スパーク・ワイヤレス・黒)

最近、Bluetoothのワイヤレス・イヤホンを買って使っている。 ジムで運動するときに普通のイヤホンだとケーブルがからまったりケータイ電話をもつ必要があったりと面倒くさくなってきたのでワイヤレスのものにチェンジした。

使用感はほとんど問題なしBluetoothの接続に時々問題がある。 原因がプレイヤー側かイヤホン側か切り分けは出来てないが人混みなどで多数の電波があるようなところだと音飛びが激しい印象。

また、自分は音質にそこまでこだわりがないのでこれで十分問題なし。

あと意外と充電が面倒くさい。充電する際の端子がmicro USBで自分の持ってるものだとPS Vitaと家で使ってるヘッドホンぐらいしか利用してないやつ。携帯電話とMacbook ProがUSB Type-Cで充電できるのでイヤホンもそれなら良かったんだけど現在の主流はほとんどmicro USBなのでもうしばらくは複数の端子使っていく必要がありそう。

Bluetoothイヤホンに一切の不満がないってわけではないがいい買い物したと思って積極的に使っていきたいという所存。

Essential Phone PH-1への機種変更を検討中

store.google.com

昨日Pixel3について詳細が発表されましたが価格がiPhoneよりは安いが一番安いもので9.5万円からとなかなかいいお値段という印象を持ちました。7.5〜8万円台なら即決で買っただろうが2年程度で買い換えるスマホに9.5万円はちょっと高いなということで別の機種も検討しようとTwitterのタイムラインを眺めていた。 するとEssential Phone PH-1を何人かが代替として検討しているのを見かけた。 自分も過去にEssential Phoneを買うか検討したことがあったのでこの機会に改めて調査してみたところなんとタイミングが良いことにIIJがEssential Phone 購入キャンペーンを打っていることに気づいた。

www.iijmio.jp

キャンペーンの内容はEssential Phone PH-1を購入したらAmazonギフト券1万円がもらえるキャンペーンなので4.6万円+消費税 - 1万円で実質4万円程度新機種を購入出来るものだった。4万で1年前の機種に機種変更出来ることに自分はかなり魅了された。

ityarou.com nattonn01.hatenablog.com www.gizmodo.jp

レビューをみても評判も悪くないのでこれは真剣にPixel3をやめてPH-1に乗り換えを検討するレベルかなと。 Pixel3との差額5.5万円で何が出来るか考えると今回はEssential Phone買って周辺機器も揃えたほうが随分とコスパが良いように思い真剣に購入を検討中です。

自分と同じことを考えているのが日本中で何人かいるだろうし品切れにならないうちに早めに決断を下したいなと思う秋の夜でした。

3分間DNS基礎講座を読んだ。

3分間DNS基礎講座

3分間DNS基礎講座

3分間DNS基礎講座:書籍案内|技術評論社

DNS周りで有耶無耶にしてきた知識を簡単に復習したいというう意味合いで本書を読んだ。 DNSの仕組み、レコードの種別、やりとりされるデータの中身などエンジニアが利用者として必要になる知識を覚えたいのであればこの本を読むだけで十二分な知識が得られる。

bind, unboundのような具体的なDNSサーバーの運用に関しては全く書かれていないのでそういったものを期待するならオライリーDNS本を読むのが良い。

また、個人的に印象に残ったのがTCPのウインドウサイズやフロー制御にもふれている部分があってそれを学べる本があったのは意外だった。

シリーズの他の本は電子版が出ているんだがこの本だけ電子版になっておらず身近な本屋さんにもなかったためブックオフで見つけてきた。 本書の後半でFTP, Telnetに関してふれられているがモダンな環境では使われるものではないのでその部分を簡素化・再編して電子版が出版されてもいいように感じた。

JavaのAutoCloseableを使ってみた

【Java】try-with-resources構文について - TASK NOTES

Java7 AutoCloseableを使ってスマートにリソース解放する - ほげにっき

import java.io.IOException;

public class App {

    public static void main(String[] args) {
        try (JCLOSEFile jcloseFile = new JCLOSEFile()) {
            jcloseFile.getX();
        } catch (IOException e) {
             e.printStackTrace();
        }
    }

    public static class JCLOSEFile implements AutoCloseable {

        public void getX() throws IOException {
            System.out.println("throw exception from getX");
            throw new IOException("my exception");
        }

        @Override
        public void close() throws IOException {
            System.out.println("close Method is Called!");
            throw new IOException("from close method");
        }
    }
}
% <Java>
throw exception from getX
close Method is Called!
java.io.IOException: my exception
    at io.github.yuokada.App$JCLOSEFile.getX(App.java:19)
    at io.github.yuokada.App.main(App.java:9)
    Suppressed: java.io.IOException: from close method
        at io.github.yuokada.App$JCLOSEFile.close(App.java:25)
        at io.github.yuokada.App.main(App.java:10)

出力結果を確認するとgetX() から例外を投げられて呼び出されたclose()メソッドからも例外が投げられてます。
それをcatch節で捕まえてます。SuppressedExceptionsにはclose()から投げられた例外がセットされています。

簡単に全ての例外を捕まえられるのでAutoCloseableは使っていきたいですね。

やっぱり、実際に実装すると理解が深まりますね。

swagger-codegenをやってみた。

github.com

仕事でWebAPIを作る必要があってせっかくだからswaggerをやっている。 本当はgrpcかthriftみたいなバイナリプロトコルでやりとり出来るものがやりたいんだけどリクエスト数も少なくブラウザからリクエストすることもありそうなので素直にHTTPでやりとり出来るWebAPIを作っている。

thrift, grpcなら定義ファイル自体がドキュメントになるんだがWebAPIのドキュメントを書くとなるとメンテナンス性なども考えることが出てくる。 WebAPIを長期間運用したことがあるけどいろいろな理由をつけてドキュメントの更新は後回しになりがちなのでそうならないようにちょっとswaggerでドキュメントの生成とさらにコードの生成を自動化したいなと思い使ってみている。

今はSwagger Editorのサンプルコードを動かしつつswaggerがどういったものかの理解を進めている。

Swagger Editor

それに合わせてyamlを更新したら簡単に成果物を生成したかったのでgradleの設定を書いている。

plugins {
    id 'org.hidetake.swagger.generator' version '2.12.0'
}

group 'io.github.yuokada'
version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    swaggerCodegen 'io.swagger:swagger-codegen-cli:2.3.1'
    swaggerUI 'org.webjars:swagger-ui:3.10.0'

    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile 'org.codehaus.groovy:groovy-all:2.3.11'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

swaggerSources {
    petstore {
        inputFile = file('src/main/resources/swagger/v1.yaml')
        code {
            language = 'spring'
            configFile = file('src/main/resources/swagger/config.json')
            outputDir = file('output')
            // Generate only models and controllers
            components = ['models', 'apis']
            dependsOn validation

            doLast {
                copy {
                    from "${code.outputDir}/src/main/java/io/github/yuokada/swagger/demoapi"
                    // from 'output/src/main/java/io/github/yuokada/swagger/demoapi/impl/*.java'
                    into "src/main/java/io/github/yuokada/swagger/demoapi"
                }
            }
        }
        ui {
            doLast {
                copy {
                    from 'index.html'
                    into outputDir
                }
            }
        }
    }
}

github.com

これでyamlを更新したら適宜コード生成をする環境が整ったのでガンバっていけそう。