2019-01-01から1年間の記事一覧

2019年読んで良かった本、記事

2019年に読んだ本と読んで良かった記事のリスト。自分用。 リストは、必ずしも今年に発表されたものではなく、自分が読んだタイミングが今年。 以前は年度ごとに振り返っていたが、ここ2年ほどやらなくなってしまったので再開(年末のほうが他の方に触発され…

【Rust】mapとand_thenの違い

この記事は Rust Advent Calendar 2019 の9日目の記事です。 最近、すごいHaskellを読み終わりました。 HaskellやってからRustに戻ってくるとmapとand_thenの違いがわかってよいな— さいぺ (@cipepser) 2019年10月15日 Rustに戻ってきたので、改めてmapとand…

GoでCount-min sketchを実装する

この記事は Go Advent Calendar 2019 の2日目の記事です。 こんにちは!さいぺです。 サムネのGopherくんは最近趣味で描いたものを、せっかくなので載せました。 オリジナルのThe Go gopher(Gopherくん)は、Renée Frenchによってデザインされました。 さて…

Go1.13のError wrappingを触ってみる

2019年9月3日にGo 1.13がリリースされました。 リリースノートを見ていて、Error wrappingが気になったので触ってみます。 何はともあれ、ドキュメントを見てみます。 errorsのドキュメントを確認すると、以下4つの関数が存在します。 func As(err error, ta…

Rustでprotobufのゼロ値がどうやって実現されているか

以前、以下の記事たちを書きました。 cipepser.hatenablog.com cipepser.hatenablog.com Rustで0byteを読み込むとどうなるのか(Option型になるのか)気になったので検証してみます。 0byteをrust-protobufで読み込む protobufを読み込むコードは、Golangで…

実践Rust入門を読んだ

実践Rust入門 言語仕様から開発手法まで, κeen, 河野達也, 小松礼人を読みました。本書の特徴は以下の3つでしょう。 2018 Editionに対応している FFIについて日本語で書かれた書籍 実践 を意識した内容になっている 本記事では、特に3つ目の実践的という観点…

Rustでsliceをシャッフルする

メモ書きです。 O'Reilly Japan - プログラミングRustを読んでいたら rand::Rng - Rustでsliceのシャッフルができるとあったので試したところrand::Rng::shuffleがdeprecatedになっていました。 SliceRandom::shuffleを使った例を残します。 Cargo.tomlは以…

メモリをダンプしてRustのsliceとVecを理解する

タイトルの通りなんですが、RustのsliceやVecがしっくり来ていないので、メモリ上でどのように表現されているのかという観点で理解を深めようと思います。 環境 ❯ cargo version cargo 1.32.0 ❯ rustc --version rustc 1.33.0 また今回の環境ではusizeは8バ…

BLS署名について

以下を書いたので、BLS署名についてもまとめておく。 cipepser.hatenablog.com なお、本内容はブロックチェーン系プロジェクトで着目される暗号技術 のP.22に書かれているBLS署名について自分なりに理解するためのメモである。1 BLS署名はその名の通り、署名…

BLS署名における双線形性(ペアリング)について

ブロックチェーン系プロジェクトで着目される暗号技術のP.21-22を理解するために双線形性(ペアリング)について調べた。自分が理解するに至った軌跡をメモベースで残す。 余談だが、調べる過程で双線形写像(Bilinear maps)とペアリングの違いが気になった…

Raspberry Pi 3 Model b+でビットコインフルノードを構築する

背景 フルノードの重要性とLightning NetworkやProof of Stakeがノード運営インセンティブに与える影響 - YouTube やフルノードの重要性とフルノードが広がった世界について改めて考える - ビットコインダンジョン2.0 を読んで(見て)、ビットコインフルノ…

【Raspberry Pi】マウントするファイルシステムを間違えて起動できなくなった

ラズパイを買ったので RaspberryPi 3 にUSBの外付けHDD(NTFSフォーマット)を接続する - min117の日記を参考に、外付けHDDをマウントしたところ、ntfs-3gをインストール後rebootしたらラズパイの起動ができなくなりました。 ファイルシステムに明るくないた…

haskell-ide-engineで ld: symbol(s) not found for architecture x86_64 のエラーが出る

vscode と haskell-ide-engine で Haskell 開発環境を構築する - Qiita をもとに環境構築を進めていたところ以下のエラーが出て、haskell-ide-engineをmakeすることができませんでした。 ❯ make hie-8.6.3 (中略) cabal-install-2.4.1.0: configure Complete…

Writing A Compiler In Goを読んだ

Writing A Compiler In Goを読みました。 本書は、Writing An Interpreter In Go(邦訳:Go言語でつくるインタプリタ)の続編で、前作で開発したプログラミング言語MonkeyのコンパイラとVirtual Machine(以下、VM)を実装する内容となっています。 本書を読む…