Happy Developing

楽しい開発ライフ 🦀

RUST FOR RUSTACEANSを読んだ感想

読んだ本 きっかけ まとめ FOUNDATIONS TYPES Types In Memory Alignment Layout Dynamically Sized Types and Wide Pointers Traits and Trait Bounds Compilation and Dispatch Generic Traits Coherence and the Orphan Rule Trait Bounds Marker Existen…

proconio::input!の仕組みを追ってみる

この記事ではRustのproconio::input! macroについて書きます。 documentやtest caseで想定されているユースケースをどうやって実現しているのかを追っていきます。 versionは記事を書いている時点で最新のp-v0.4.3 を対象にしています。 proconio::input! と…

Parser combinator nom 入門

この記事ではparser combinator nom1について書きます。versionは v6.1を前提にしています。 nomは小さいparserを組み合わせて、目的とするデータ構造を入力から読み取るためのpackageです。 nushell のコードを読んでいてみかけたのが初めてでしたが他のpac…

Rustのlifetimeとvariance

nomicon を読んでいてSubtyping and Variance の話がでてきたときにどうして継承の概念がないRustにvarianceの話がでてくるのかなと思っていました。 その後、Rustの動画をyoutubeに投稿されているJon Gjengsetさん のCrust of Rust: Subtyping and Variance…

Web APIの設計を読んだ感想

読んだ本 https://www.shoeisha.co.jp/book/detail/9784798167015 本書を読みながら、参考になったところ、普段自分が開発していて思ったところなんかを書いていきます。 本書でいうところのWeb APIはもっぱらRESTが前提です。(GraphQL,gRPCについても言及は…

Key Value Storeを作りながら学ぶtokio

本エントリーではKey Value Storeをtokioで作るうえで学んだことを書いていきます。 RustのLT会 Shinjuku.rs #13で話させていただいた内容です。 発表時のスライド source code 作ったもの TCP Server Max Connection Graceful shutdown Stream read/write w…

Mini-Redis Tutorialからはじめるtokio

この記事ではRustの非同期runtimeのひとつtokioの公式Tutorialを通じてtokioのAPIに入門していきます。 TutorialではMini-RedisというRedisのclient/serverを実装したlibraryを通してtokioとfuture/asyncの概念を学んでいきます。Redisについての前提知識は…

りあクト! 第3版がすごくよかった

会社のフロントエンドエンジニアの方にReact/Typescript関連のおすすめのドキュメントを聞いたところりあクトを教えてもらいました。 読んでみてとてもおもしろく、おおげさですが感動してしまったので感想を書きます。 読んだ本 りあクト! TypeScriptで始…

自作キーボードLily58Proを組み立てる

この記事では自作キーボードLily58 Proの組み立て工程について書いていきます。 普段はHHKBを使っていたのですが分離型キーボードを試してみたいと思っていました。 HHKBに近い感じがよく、CapsLock、FunctionKeyがなくてUS配列あたりで探していたのですがし…

Rustでgitのtagをbumpする

同じチームのメンバーがnodegitというnodeのlibgit2のbindingを利用して、便利なツールを作っているのをみて各言語にgitを操作するためのライブラリーへのbindingがあることを知りました。 そこで、今回はRustのlibgit2 bindingであるgit2-rsを利用して、git…

Rustでネットワークの速度を測ってみる

会社の回線が遅いなと感じ、具体的な数字を測ってみたくなったので、Rustでtcpのthroughputを計測するcliを作ってみました。 source codeはこちら install cargoとbrewでinstallできます。 brew $ brew tap ymgyt/netspeed $ brew install netspeed cargo ca…

RustのcliをHomebrewで公開する

この記事ではRust製のcliをbrew installできるようになるまでの手順について書きます。(CI上で実行できるようにしたいのですが、まずは手でやります) サンプルとして利用するのは、前回の記事で紹介した、MySQLにpingをうつだけのcli, mysqlpingerです。 bui…

RustでMySQLにpingをうつ

local環境でdocker-compose等を利用してDBを立ち上げた際に、DBの"ready"を待ちたいことがありました。 最初は、tcp接続でよしとしていたのですが、やはりprotocol的な"ready"が必要だったので、pingをうつ必要がありました。 ということで、RustでMySQLにpi…

RustでRui Ueyama先生の低レイヤを知りたい人のためのCコンパイラ作成入門をやってみる1(環境構築から四則演算まで)

compilerbookこと低レイヤを知りたい人のためのCコンパイラ作成入門をRustでやっていきます。 本記事では、環境構築から四則演算のtestを通すところまでおこないます。compilerbookのステップ5: 四則演算のできる言語の作成までです。 概要 概要としては、計…

Kubernetes Meetup Tokyo #23にいってきました

2019年9月27日に開催されたKubernetes Meetup Tokyo #23にブログ枠で参加させていただいたので、その模様について書いていきます。 会場 会場は渋谷ストリームの隣に誕生した渋谷スクランブルスクエアです。ビルの正式オープンが11月からとのことで絶賛内装…