日記マン

動画広告プロダクトしてます。Go, Kubernetesが好きです。

Kubernetesでcurl叩くだけのコンテナ一瞬作るやつ

いつも忘れる. $ kubectl run -it --rm=true busybox --image=yauritux/busybox-curl --restart=Never

error型の階層情報を失わずにjsonシリアライズ・デシリアライズする

Go

Goの error 型を json シリアライズ・デシリアライズ したいときのシリアライズ化条件と階層情報の失わないように拡張する話。

2019年振り返り

明けましておめでとうございます。あとで振り返る用に。

12月振り返り

まさかの一年ではなく今月に限定して振り返ってみる。。 実務と関係あること Go言語のランタイムの動作理解(netpoller周り) Kubernetesの拡張性 AdapterパターンとOperatorパターン システムパフォーマンス 継続的プロファイリング プロダクトを継続させるた…

GoはネットワークI/Oをどう実現しているか

Go

goroutine自体はOSスレッドに多重化してスケジュールされる。 ランタイムでは goroutine関数をG、OSスレッドをM、GをMに割り当てるスケジューラをP、と名称し実装されている。 qiita.com ではG全てがI/O実行を行いブロック状態になった場合、Gに紐づかれたM…

Goのサーバサイドアプリケーションのパフォーマンス可視化に向けたメトリクス設計

Go

最近はGoで書いたアプリケーションをKubernetesで運用し始めたが、 アプリケーションの内部状態を計測できるようにObservabilityの確保にトライしている。 「Observabilityがなぜ必要だと考えるか」について山口さんのエントリはとても学びになった。 ymoton…

GoにおけるDBクライアントの設計とObservabilityの確保

Go

Goで sql.DB を扱ってMySQLを扱うとき、 インターフェイスの実装、チューニングできる設定値への理解、Observabilityをどのように確保すればよいか。 ある程度知識がまとまってきたのでアウトプットする。 (実際は sql.DB にない構造体バインディングが欲し…

KubernetesのServiceAccount/RBACによる認証・認可

ユーザではなくプログラムからKubernetesのリソースを操作する際、認証はServiceAccount, 認可はRBACの方法が一般的になる。 ServiceAccountの挙動周りを知りたかったのでまとめ。 Kubernetesの認証・認可 Kubernetesのアカウントは人間によるユーザアカウン…

Goでプログラムを正常に終了する

Go

CNCF系のOSSをコードリーディングしていると、(KubernetesとかPrometheusとかLokiとか) Go言語の模範的な書き方を学ぶことができて有意義だったりする。 今回は読んでてためになったリファレンスな記述の1つとして、 OSシグナル(ctrl-C)などを受け取ったと…

Lokiとpromtailことはじめ

Grafana チームから、ログ収集ソリューションとして Loki がOSSとして公開された。 GAに向けてベータリリースであるがすでに GitHub Star も 7000 に届く勢い。 Prometheus のようなラベリングが可能で、軽量なログソリューションと謳ってる。 https://githu…

DaemonSetの名前解決でハマったのでメモ

Kubernetesで、Pod内部のコンテナ同士は、localhostで通信できる。 では、Pod同士の通信には、基本的にはServiceで公開したもの同士で、割り振られるDNSを利用して通信できる。 https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#p…

HTTPリクエスト・レスポンスレベルのテストユーティリティ

Go

JSON/XML 構造データのアサーション HTTPのAPIは多くの場合、JSONやXMLのフォーマットでレスポンスする。 実際にHTTPリクエストを投げて、期待するレスポンスを検証する際に、 ツリー構造であるJSONやXMLに対し特定のフィールドのみ一致するかを検証したい場…

Apache Beam Streaming をGCPサービスに書き込む備忘録

Apache Beam のストリーミングモードによる実装 (Cloud Pub/Subからプルしてくるとか) で、 ファイルストレージサービスである Google Cloud Storage , NoSQLの Cloud Datastore , そして Cloud Firestore , へ書き込む方法を個人的備忘録メモ。 公式のexamp…

GoのコードからPlantUMLコードを生成する静的解析ツールを作っている

Go

tl;dr go/types パッケージがめちゃくちゃ便利 https://golang.org/pkg/go/types/ https://github.com/golang/example/tree/master/gotypes gouml の紹介 Goのコードを静的解析し、PlantUMLのコードを吐くパーサを開発している。 github.com

Go言語による「ネット広告」ビジネスに対するドメイン駆動設計の具体例

ネットに転がっているドメインモデリングの実例は少ない。 というのも、その性質上、扱うドメインに対し答えがバラバラで一般化できるものではないから。 というかそもそも外部公開できないような、競合と差別化要因となるロジックだったりするから。 だから…

ドメイン駆動設計のドメイン駆動とはなにか

ここ最近の仕事は、かなり硬直化した自社サービスをリファクタリングしている。 そのなかでアプローチのひとつとして、ドメイン駆動設計を勉強して、取り組んでいる。 エバンスDDD本を手に取り、ネットで様々な知見を調べながらも、理解が定着してきている。…

Goにおけるドメインオブジェクト設計の考察

仕事で、PHPで書かれた硬直したWebサーバシステムを、Go言語でリプレイスしています。 Go言語本来のらしさを壊さず、ドメイン駆動のオブジェクトパラダイムを導入する際の、 自分なりの設計方針を公開して、オープンに意見交換などができればと思いブログに…

Go言語の例外を必ず扱うような言語機能のありがたさ

Go

僕はGo言語が好きだ。そのGoがもたらす恩恵のひとつとして、例外周りのセマンティクスがある。 Goでは例外はerrorという型の値に抽象化され関数の返り値として記述することが多いというのはご存知だと思う。 func GetUser(id int) (*User, error) { // do so…

Ethereumに入門した

ここ最近、Ethereumについて今更ながら調べていて、 ものごっつおもろいやんけー!となったので、一旦アウトプットしてみる。 Ethereumとは 調べる前までは「ビットコインと同様のブロックチェーン技術にSmart Contractsという工夫を施したヤーツ」 ぐらいの…

ビルドツールをGradleに乗り換えた (Kotlinによる開発, 外部依存jarの生成方法も記載)

Apache Beam (Cloud Dataflow)をJava SDKで開発している。(さらにいうと言語はKotlinで開発) ビルドツールにMavenを利用していたが、Gradleに乗り換えた。 ディレクトリ構成はこう。 . ├── README.md ├── src │ ├── main │ └── test └── build.gradle build.…

社会人1年目振り返り

金沢から上京して、システムエンジニアとしての1年目を終えた。 つらつらと振り返ってみる。 4月入社。最初の2ヶ月に技術研修という題目で外部のスクールに通った。 WebやPCの基礎のキソの座学からJavaによるチーム開発演習までのカリキュラムで、 初学者に…

Kotlinで書いたプログラムをデーモン稼働させた時のメモ

OS上で常にバックグランド稼働し続けるプロセスをデーモンといいます。 自作のアプリケーションをCentOS6系にてデーモン稼働しておけば、管理が楽です。 普段はcronで定期実行するバッチプログラムを書くことが多く、単純にjarファイルを定期的に実行してま…

Pythonで乃木坂46公式ブログをクローリング・スクレイピングしてCloud Storageに永続化する

tl;dr 2017年も残りわずかなので、乃木坂46のブログをスクレイピングし、Cloud Storageに保存しておきましょう。 卒業していくメンバーのブログも永遠のものとなる!!!!!優勝!!!!!!!!!!!! 注意: 勢いで書いたコードなので、例外周りとか適当…

Kotlinでデータ加工クエリのDSLを書く

tl;dr ありとあらゆるクエリをなんでもかんでもメソッドチェーンDSLで書きたい メソッドチェーンシンタックスでパイプラインを考える データ加工にはイマドキMapReduceとしてApache Beam *1 が優れています。 Beam Modelではそれぞれデータ加工ロジックを任…

VAEと時系列を扱うVRAE

Google日英翻訳がNMT(ニューラルネットワークを利用した翻訳モデル)になったらしいです。 文語ベースでバリバリ翻訳してくれてるみたいで、 単語にマウスオーバー当てても単語間の対応関係がわからなくなったのはさみしいけど、 たしかに精度がよくなったよ…

情報幾何学の参考書2つ。

情報幾何学を勉強中。 目的はDeep Neural Networkの解析。 情報幾何学? Fisher情報量(情報行列) 確率変数がパラメーターに関して持つ情報量 Riemann計量 微分幾何学ででてくる計量 若き頃のC.R.Raoが「Fisher情報行列とRiemann計量って一緒じゃね?」と言い…

情報幾何の勉強。機械学習の数理的研究。

(勉強中のブログです。気をつけてるんですが厳密さに欠けることも書きがちなので、あくまで備忘録という免罪符を利用します。暖かい目でみてください。) tl;dr 情報幾何学という分野を知った 機械学習、深層学習の仕組みを理解する一つの方法論 日本から生ま…

Kerasつかってみた。紹介とか。おすすめサイトとか。

深層学習フレームワークとしてKerasを使ってみたら結構楽しかったです。 直感的なレイヤー型記述はChainerに似てます。 Theano または TensorFlowのラッパーとして動くので低レベル記述も効いて汎用性は高そうです。 おすすめのサイト(随時更新するつもり)

機械学習・深層学習の勉強したこと・したいこと、このブログの方針

ちょっと予告とは違う更新だけど。。 深層学習(Deep Learning)というものを知り、いろいろ調べて勉強したりした一年 紆余曲折がありつつも、Pythonを初めて扱い深層学習以外の機械学習全般に興味を持った 今取り組んでいることは、「機械学習を基礎から身に…

確率的なDeep Learning。生成モデル。~その1~

深層学習(Deep Learning)がバズワードになって何年目だ。 画像認識コンテストでDeepなヤツが優勝したのが2012年で4年前だ。 Deepの先駆者DBN[Hinton 2009]からだと7年か。 2014-2015の間だけでも1500もの関連論文が発表されているらしい。鬼のようだ。 軽く…