📰 Topics

先週に続いてアウトプット少なめです。
久々にネットワークに関する知識を得られたのは良かったです。

Table of Contents

書いたこと

【TypeScript】リリースノート v3.1

TypeScript v3.1のリリースノートをまとめ終わりました。

Version selection with typesVersionsは初めて知りました。
ライブラリを開発する場合は使えそうだなと。

学んだこと

NAPT (Network Address Port Translation)

NATはNetwork Address Translationですが、似たものとしてNAPTがあります。
Network Address Port Translationの略らしいです。

NATはプライベートIDアドレスをグローバルIPアドレスを変換します。
基本的に?相互変換が可能で1:1で紐付いています。

プライベートIPアドレス グローバルIPアドレス
192.168.0.1 2.123.0.101
192.168.0.2 2.123.0.102
192.168.0.3 2.123.0.103

しかし、1:1ではプライベートIPアドレスの数だけグローバルIPアドレスが必要です。
NAPTを使うと、ポート番号を使うことでN:1の紐付けが可能になるとのこと。

プライベートIPアドレス ポート番号 グローバルIPアドレス
192.168.0.1 100 2.123.0.101
192.168.0.1 200 2.123.0.102
192.168.0.2 100 2.123.0.103

なお、AWSでのNAT GWはNAPTらしいです。
NATはInternet GWのほう。

  • Public SubnetのマシンはInternet GWを通ってNATでやりとりする
  • Private SubnetのマシンはPublic SubnetのNAT GWを経由してNAPTでやりとりする

【Golang】 rune

runeとは何かについて。

以下の理解です。

実体 Pythonだと..
string utf-8のバイト列を実体に持つ文字列型 Python2のstring(UTF-8に限る)
rune コードポイントのint32型 Python3のstring(Unicode)
byte[] 文字列のバイト列(utf-8とは限らない) Python2のString

キャストはstringを経由する必要がありそうですが、直接変換する関数も用意されているらしいです。

byte[] <---> string <---> rune

読んだこと/聴いたこと

風になりたい奴だけがEmacsを使えばいい 2020

カッコイイタイトルの記事ですね!
自分はVimmerですがEmacの思想を少し知ることができて良かったです。

なお、私のエディタ使用歴は以下のような感じです。

秀丸 → サクラエディタ → Sublime Text2 → VS Code → Vim → JetBrains

最近はMarkdownもJetBrainsのIDEで書いています。
見出しやテーブルの整形を面倒に感じている方は是非試してみて下さい👍

io.Readerをすこれ

Go言語でio.Readerは強いよという記事。
Go使用歴が浅いので実感あまり沸きませんが、インタフェースをio.Readerに寄せられるよう務めてみます。

【レポート】インフラエンジニアは働かない~AWSのフルマネージドサービスでメンテフリーになるまで~

インフラエンジニアではないですが、かなり共感できました。

インフラ管理で一番めんどくさいこと あえて言おう、DBの管理であると。

本当にこれですよね。
DBに夢を見すぎたり、運用を軽視するケースは多いと思っています。

慣れてるメンバー多いから…という理由だけで選んでいないか? 「私SQL書けます!」という言葉は信じてはいけない とんでもないクエリを書く人は(残念ながら)存在する

(・∀・)

クエリもそうですが、ロック地獄から逃げるためにトランザクションを諦めたコードは本当辛いですね。
ロックがかからないようにトランザクションを1つずつ追加していくのはオペに近いと思います。

新卒エンジニアに送る、新卒の頃に僕が知りたかったこと : 自立と依存編

これは素晴らしい記事です。
新卒エンジニア以外の方にも是非読んでほしい。

つまり、一人でなんでもできるようになるのではなく、依存先を増やすことこそが真に自立することだ。と初めて気づきました。

誰にも聞かず1人で仕事を完遂させること..と思い込んでいる人は多いと思います。
むしろ、周りを巻き込むことが評価されるべき。

間違っても『お前が一人でやったのか? そうじゃないならお前の成果とはいえんな..』とか言っちゃダメです!

昔の先輩に言われた言葉が今でも残っています。 「会社の全てはリソースだと思え、存分に使って自分に投資しろ」 使わないともったないという発想ではなく、使い倒してもっと大きなリターンを得ろ。という意味だと記憶しています。もし会社に所属しているのであれば、それを利用するチャンスがあると思った方が良いです。

これもほんとそう。
以前の上司も同じことを言ってましたし、視座を上げて..少なくとも会社目線で見れば自明だと思ってます。

また、本の中身を完全に覚える必要はないとも思います。困った時に、「あの本の、この辺に確かそんなことが書いてあったな。」ぐらいを覚えておけば、オーケーだと思ってます。(大体それで解決することが多い。)学校の試験のように、覚えてないとダメという概念が仕事では少なくなりますしね。。。

情報の正しさは時と共に変わりますからね。
その場合、暗記していることはむしろ害悪です。

新卒最強の武器「新卒です」というプレフィックス的な免罪符の有効期限は1年間ぐらいなので、その間に多くの人にいろんなことを聞いたりして依存先を増やすチャンスだと思っていただけると!(たとえ新卒でなくてもですが。)

これだけは少し引っかかりました。
『新卒特権』というワードが2年目以降に『自分でなんとかしなければ..』を牽引している気がします。
※ カッコ内の補足がそのフォローかな

もし『新卒特権』にあるとしたら、その方法でしょうか。
何年経っても知識や経験が0の分野はあり、都度いろんなことを聞いたり依存先を増やす必要はあります。
そのアプローチを主体的に行えるか..は求められると思います。

これが『自立』ということですね。繋がった😆

良いプログラマーは実はコミュ力が高すぎて、逆にコミュ力が低く見える説

これ、とてもよく分かります。

コミュ力が高い人は無駄な発言を一切しないんですよね。
だから、コードもキレイなことが多いです。

コミュニケーションに無駄がある人は、コードも冗長になる傾向ありそう。

IntelliJ IDEA 2020.3 EAP: New Welcome Screen, Full Support for Sealed Classes, and More

IntelliJ IDEA 2020.3のEAP版が出ました。

個人的に気になった点です。

  • D&Dによるタブの分割
  • 利用中のVCSに沿ってメニューを最適化
  • quick fixがtypoなどの言語エラーに対応
  • Markdown強化(formatやsynced scrollなど)

Markdownのプレビューかなり重いので、その辺も改善されたら嬉しいなーと思ってます..。

試したこと

なし。

調べたこと

【Golang】配下のpackageすべてにテストを実行する方法

こんな感じでmaincmdのpackageが存在するとき..
go testだけではmain_test.goのテストしか実行されません。

  .
├──   cmd
│  ├──   root.go
│  ├──   root_test.go
│  └──   show.go
├──   go.mod
├──   main.go
└──   main_test.go

以下のコマンドを実行するとmain_test.goだけでなく、root_test.goも実行できます。

go test ./...

整備したこと

なし

今週のリリース

なし