ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

部屋片付け他 #350

部屋片付け

ずっと途中のまま放置してた部屋片付けをやった。研究室で集中できて家で集中できないのは明らかに部屋や机上が散らかってるのが原因だと思うのでこれは大事(言い訳)

おおよそ片付けられた…と思う。大量の書類やら本やらが部屋を占有しているのでそれらを処分して残りの片付けをすれば完了かな…。

研究

研究の調べ物をした。(が、思った情報は得られず。結構頑張って調べたんだけど。)

一個今日知ったTipsとして、ChromeのDevToolsで複数のリクエストの優先度を確認する方法を知った。

DevToolsのNetworkタブを開いて項目?のところを右クリックするとみられる。

f:id:uutarou:20180505230812p:plain

この優先度をいじりたいんだワシは…。クライアント側の制御は厳しそうなのでサーバー側でやりたいんだけど方法が見つからない。調べ方が悪いのだろうか。

雑談

さっきコンビニに行ったので久々に(多分1ヶ月ぶり)酒を飲んでる。

とてもおいしい(酔っ払った)

f:id:uutarou:20180505231338j:plain

ラップトップの上に中身の入った缶を置くのはやめましょう。

チュートリアルを流したり #349

チュートリアル

昨日か何かに書いたこちらの記事。

sgykfjsm.github.io

まぁとりあえずやってみなきゃわからんでしょということで、最初からやってみた。

記事ではルーティングのライブラリを使っているが、私はそれ以前にEchoに触っていたのでEchoに置き換えてやってみた。

EchoではJSONのレスポンスを返す時に、以下のように書くことができる。

func TodoIndex(c echo.Context) error {
    todos := Todos{
        Todo{Name: "Learn golang"},
        Todo{Name: "Learn aws"},
    }

    return c.JSON(http.StatusOK, todos)
}

encoding/jsonの使い方を知らなくても書くことができるのは大変良いことなんだが、今回はGoのお勉強をしたいというのが主目的なので後ほどちゃんとドキュメントを読んでみようと思う。

json - The Go Programming Language

このへんか。

go runでハマった

あまりにも初歩的なミスで大変恥ずかしいのだが、mainパッケージを複数のファイルに分割したのちに、go run main.goとやると、他のファイルに移動した関数がundefinedと言われてしまって実行できなかった。「なぜだ」と、10分くらい思考停止してたが、答えは簡単で分割したファイルをgo runの引数に含めていなかったから。

つまり、go run *.goとかやってやれば動く。気が付いてみれば当たり前のことなのだが、ぼーっとしてたのだろうか。

雑談

完全に言い訳なんだけど、家にいるとどうにも集中できない。すごく気が散る。なんだろうこれ。

研究の調べ物をしたり #348

研究の調べ物をした

RFCを読み直す前に外観をざっくり把握しておきたくて以下の記事を読んだ。

developers.google.com

主にストリームの優先度の制御に関しての部分を知りたかったのでその辺を重点的に。

仕様は理解できたので、実際問題どのように制御されているのかを明日は調べたいと思います。

あと、先ほどの記事の原著であるハイパフォーマンスブラウザネットワーキングが欲しい。

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

お高い……。電子版を買おうかと思ったけどちょっと厳しいなぁ。

Golang

いきなりGORMとEchoと……といろいろ手を出したら混乱してきたのでキレイに書くというよりは最初はシンプルに作って後々リファクタリングしたりするのするようにしようと思った。当たり前か…。

少し古いが、この記事が進め方としてとても参考になった。

GoでJSON APIを書く - sgykfjsm.github.com

雑談

何だかんだレジャーとかについて行ったりしてたらゴールデンウィークも後半になってしまったので、やることやっていく。つらい。

GoやったよGo #347

毎日Goやってる。

今日は標準のnet/httpパッケージを使って簡単にRESTっぽいことをしたり、WAFであるEchoを使ったりしてみた。

前評判でnet/httpパッケージは機能が充実しててそのままでも結構イケるという話を聞いていたのですが、リクエストメソッド別にハンドラを分けたりということができないっぽくて流石に辛そうだったのでWAFを探してみた結果、EchoかGinがスタンダードっぽかったのでEchoを選んでとりあえず使ってみることにしました。Echoちょこちょこ書いてみた感じは、Node.jsのKoaやExpressにかなり近いような印象を受けました。

あとは、Goのインタフェースについて少し詰まったのでまとめた。

Goはinterfaceを使ってダックタイピングを実現することができる。具体的にはnet/httpHandlerは以下のようなインタフェースで実装されている。

type Handler interface {
        ServeHTTP(ResponseWriter, *Request)
}

このfunc ServeHTTP(ResponseWriter, *Request)を任意の型をレシーバーに取って実装すると、Handlerとして扱うことができる。(net/httpパッケージのHandleの第2引数に渡すことができる)

このようにしてオブジェクト指向っぽいことを実現していくのがGoの基本的なやり方なのかな?(こういうのなんていうんだったっけ)

雑談

研究の方はもう一回ちゃんとRFC7540を読む必要が出てきたぞ…おいおい…

一回読んでるから次はちゃんと内容が入ってくることを祈って。

しょーがいたいおー #346

書くことが………ない……。

障害対応

ボスから某サービス動かないんだが(意訳)みたいなメールが昼頃に届いていたので数時間熟成させた後に(?)対処した。

てきとーにサービス再起動させたら直るやろーと思っていたらそうはいかず。

頭を抱えていたのですが、さまざまな複合要因でバグってたことが判明。終わってみたらなんだそんなことか、という感じで虚無…。

学んだこととしては、Systemdのログはjournalctlコマンドを使う。

これだとありとあらゆるログが出て来てしまうので、grepして対処したけど、特定のサービスのログだけ吐かせたりする方法は無いのだろうか。

雑談

にゃーーーーーーーん

細々といろいろ #341

研究の調べ物をしていた

ちょっと興味深い話。

postd.cc

私が興味深いと思ったのは、HTTP/2ではパケット損失の多い環境下では1つのTCPコネクションを用いるため、パフォーマンスに与える影響が大きい(HTTP/1.1では、通常複数のコネクションを張るのでパケットロスが発生した際に影響を受けるのは該当のコネクションだけで済む)という点。

HTTP/2にはこんな盲点があったとは。

記事にもあるように、通常の環境下でこれほどのパケットロスが継続的に発生するということは現代においてはそうそう無いとは思いますが、場合によってはHTTP/1.1を用いた方がパフォーマンス的に優れてしまう場合があるというのは意外でした。なにかこの辺でうまいことできると良いのだが…。

Medium読んでた

新しい技術にどうにも疎いのが結構悩みだったので、どうしてるのかを聞いてみたらMediumとかいいよと勧められたので、電車内とかSA中とか、ちょっとソファーで休憩中とかに読んでみました。

英語を読む練習にもなるし、いろいろと知らなかったことを知れてめっちゃいい。

↓今日読んだ記事たち

medium.com

最近熱いPWAの話。Androidではネイティブアプリとかなり近いことができる(Bluetoothとかすら扱えるらしい)けどiOSはかなり機能的にも制限があるという話。

iOSは実用的になるにはまだ時間がかかりそうだなぁという印象。Appleがここからちゃんと気合い入れて使えるようにしてくれるかが見ものかなと。

medium.freecodecamp.org

ES2016 - 2018の新機能総ざらい。

正規表現のあたりが便利そう。あと、paddingはついこの間やる機会があって汚いコードで自前実装してしまったので身近に感じた。

medium.com

DNSサーバー比較。TLDLしか読んでないけどCloudFlareの1.1.1.1を使っとけってことで良さそう。

漫画村の件でCloudFlareあんまり心象よくないですけど。。。

AWSについて少し調べた

近いうちに使うことになりそうだし、SA中暇だったのでAWSについて調べてた。

EC2使ってアプリケーション動かすんやろ、DBはRDBやろ?という知識しかなかったのですが、VPCという仮想ネットワークを構築できるものがあって、それを使ってRDBにはインターネットからのアクセスを不可能にしたりということをするのが一般的らしい。

あとは実際アプリケーションを動かす必要が出てきた時に動かしながら学ぶ感じでいいかなぁと思ったのでこれはとりあえず終わり。

RDBは普通にMySQLとか使えるということがわかったのでOK(それが知りたかった

雑談

やれることをコツコツと。

たくさん進捗が出たぞ #340

今日は慌ただしく都内を移動してました。

六本木に行った

ある相談をしに六本木へ。

目的を済ませつつ、美味しいランチを食べて、テレビ朝日のグッズショップに行ってでんぱの神神のグッズを買いました。

田舎っぽい修学旅行生っぽい人がたくさん居てちょっと恥ずかしかった。

午後からは研究室へ

午後からは八王子に移動して研究室へ。

六本木→八王子は普通に遠いな…。

研究室では研究のことを進めたりした。

github.com

HTTP/1.1とHTTP/2を使用する設定になっている2つのNginxを立ち上げてくれるdocker-composeさん。

これを使って、100枚の画像を読み込むテストをしてたらちょっと面白いことがわかりました。

比較用にGIF作ったのですが、はてなの上限なのかなんなのかアップロードできず。

まぁまた今度書きますかね。ボスからの反応も上々で最高。

DNS

先日の技術書典で頒布されていたらしいDNS本。

booth.pm

ずっと気になっていたので、移動時間に読むために電子版をBoothで購入。

先ほど読了したのですが、とってもよかった。

"浸透"の正体がちゃんとわかったり、ネガティブキャッシュの話はとても参考になりました。

インフラやるひとじゃなくてもためになるなぁと思った。

雑談

眠い!