goの勉強がてらに作った
サンプル
特徴
GitHub
なんでCLIなんだよ感あるけど思ったより便利だった Webアプリにしようか悩み中
Webアプリ作るぞ〜〜〜〜だとだれるけどCLIだととりあえずサクッと作るかってなるという知見を得た
HashMapってhashCodeで計算したハッシュからキーと値を引ける構造があって、ハッシュから値を引けるから早い、みたいな理解があって、あとはhashCodeがぶつかったらequalsの結果が等しいかチェックしてる、みたいな理解だったんだけどそもそも「ハッシュからキーを引ける構造」ってなんなん?となったのでHashMapのコードを見ている。そして今のところ全然わからん。
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/HashMap.java
putするときにハッシュを作り直してるが何をしたい?
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/HashMap.java#l320 この辺りのコメントを見ているが全然わからん。
以下よくわからんまま訳したやつ。訳以外は🍙をつけている。
key.hashCode()
を計算し、ハッシュの高位ビットを低位に持ってきた値との排他的倫理和を計算します。
🍙こんなん
hashCode():1001 h>>>16 :0010 hash :1011
テーブルは2の冪でマスクされた値を使うので、カレントのマスクよりも上のビットだけが異なるハッシュの組み合わせは常に衝突するためです。
🍙https://ja.wikipedia.org/wiki/マスク_(情報工学)#2の冪の剰余
(よく知られた例は、小さなテーブル内の連続したFloatのキーのセットです。)
そのため、高位ビットの影響を下位に展開する変換を行います。これに速度、有用性、ビット展開のトレードオフがあります。
多くの一般的なハッシュの組み合わせは、すでに合理的に分散されています。(そのため拡散による利益をえません) そして、binsに置ける衝突の大きな集合をハンドルするために複数のツリーを利用するので、体系的な損失を減らすための最も効率的な方法のいくつかのシフトされたビットのXORを計算します。 加えて、テーブル境界のためインデックスの計算に使われない高位ビットの影響を組み込むことができます。
そうした方が効率が良いからそうしているらしいということくらいしかわからんけど次はそのままputを見てみる。
欲しい
こういうのいけるんなら作れそう https://chrome.google.com/webstore/detail/chrome-audio-capture/kfokdmfpdnokpmpbjhjbcabgligoelgp
あとは翻訳APIの費用を誰が払うんだ問題
この本のp95のDataボリュームコンテナの下りがいまいち理解できなかったのでなんとなくググってたらそもそも使うなという話が出てきたので読んでた。
Dataボリュームコンテナのメリットがいまいち理解できてないんだけど、ざっくりとアプリケーションのコンテナがホスト(のパス)に依存するのはよくないから、コンテナを一個噛ませてあくまでアプリケーションのコンテナは、コンテナ間のボリュームを扱う感じでやろうぜ、的な話なのかなと理解している。
でこの記事の話は、1.9.0からそもそもボリューム用のコンテナなんか立てなくてもいいAPIができたので、そっちを使おうね、という話。
$ docker volume create --name test
で、testボリュームができて、
FROM busybox RUN mkdir -p /test CMD ["ls", "/test/a"]
こんな感じのDockerfileから作ったimageを起動して、ボリュームにtestを使って、
$ docker container run -v test:/test test
コンテナを落としてから
FROM busybox CMD ["ls", "/test"]
のイメージを同じボリュームを指定して起動すると、
$ docker container run -v test:/test test2 a
最初の起動時のデータが残ってる、という話。
volume apiのドキュメントはこれ。 https://docs.docker.com/engine/reference/commandline/volume_create/
Docker Composeの下まで読んだ。
複数のコンテナ実行を一括管理できる。
Docker Composeの設定ファイル。 https://docs.docker.com/get-started/part3/#your-first-docker-composeyml-file
docker-compose.ymlのあるディレクトリでdocker-compose up
で起動、docker-compose down
で停止。
up
で起動したコンテナはdown
で全部停止できる。
services.サービス名.build
にDockerfileがあるディレクトリを指定すると、まだイメージがなくてもそのDockerfileを使ってビルドしたイメージを使ってコンテナを起動できる。
services.サービス名.volumes
に指定したディレクトリがコンテナ/ホスト間で共有される。
volumes: - ./test:/sample
で、ホストのカレント直下のtest
が、コンテナ側の/sample
と共有される。
要するにローカルのストレージになんか永続化するようなイメージで、その領域をホストと共有しとくとコンテナ停止して再起動しても残ったデータをそのまま使える。
docker-compose.ymlのサービスにlinksを定義して、コンテナ名を指定するとlinksに指定したコンテナ間での通信ができる。
UdemyのGolangのチュートリアル的なやつ。 最後まで見終わって修了証もらった。ちょっと嬉しい。
GitHubのTrendingをみるためのツールでしっくりくるものがないので作ろうとしてるが、なんとなくファイルベースでデータを記録するときに簡素なKVSが欲しい気がしたので、それを書いてみた。
色々足りてないけどまあとりあえず動くって感じ。
半分くらい読んだ。会社で読んでるがここ最近のお昼休みはプレステをやってしまっていて進捗があまり出てない。
学んだところを使いこなせてない感がえぐいので、それもなんとかする必要がある。遊びで書いてるGoをVSCodeからintelliJ(GoLand?)にするとか考えてるけど金どうしよっかなーって感じ。
70ページまで読んだ。若干停滞気味。Dockerってなあに?レベルのところはなんとなくわかった気がする。
今の所説明がわかりやすくて良い。
イングリッシュベルをやり続けている。 今月は80レッスン=33時間受講した。明らかにリスニング力が増している気がする。10月のTOEICに期待。そしてそのまま11月のラスベガスへ。 スピーキングはかなり怪しいので一区切りついたところでフリートークをしようかなと思いつつ、とりあえずDME Teensの完走が先かなー。いろんなことするとテンポが崩れそう。
Web上のテキストエリアをマークダウンエディタ化するChrome拡張。すげー便利だと思う。
Gitのリポジトリ内だけでバグレポートを管理するツール。概念実証だけどこれがメジャーになるとGitホスティングサービスの世界観が変わってくる気がしている。
英語以外停滞してるのでその辺をなんとかする。とりあえずDocker/Kubernetes本が優先かなーといった感じ。 あとergodox EZ買ったが全然使えてないのでなんとかしなくては・・・。
若干の可能性を感じる てゆーかGoogleカレンダーに予定調整のサジェスト機能欲しくない?