2020-01-01から1年間の記事一覧
この記事は Rust Advent Calendar 2020 ならびに CyberAgent Developers Advent Calendar 25日目の記事です。 今年のはじめの頃になりますが、『CPUの創り方』という本に載っている TD4 という CPU を実装してみました。TD4 は「とりあえず動作するだけの4bi…
この記事は言語実装Advent Calendar 2020 25日目の記事です。(2022-11-06: 記事の内容を追記していますが、この記事の結論としては「似たようなものは作れるが、完全体にはならない」です) 前提知識 高階カインド型 モナド 従来のエミュレーション方法 Gen…
この記事は Rust Advent Calendar 2020 その3の4日目の記事です。今日は Rust に関する話ではあるのですが、技術的な話ではない記事になってしまうことをお許しください。 1ヶ月ほど経ってしまいましたが、Rust の全世界的なカンファレンス RustFest Global …
Idris Advent Calendar 2020 3日目の記事です。 2020年今年の言語に Idris を選んで年始に Hello, World していたのですが、見事にその後 Python をしていた1年でした(仕事で使うことになったので Python を覚える必要が出てきました)。 完全に Idris は初…
ド。(いつものやつ) 2020年時点で改めてよさそうな Java のインストール方法についてまとめておきます。 ちなみにですが、 Scala(sbt)を利用する。 Scala のプロダクトでは Java 8 を使用し、プライベートでは Java 14 を使用する。 Open JDK そのものの…
画面をポチポチしながらインスタンスを立てて…といったことを考えるのが辛くなってきたので、そろそろ terraform 使いこなせるようになりたいと思い、チュートリアルをコツコツはじめてみました。 普段は CDK を使ってるんですが、最近少しだけ terraform を…
タイトルは記号のググラビリティ確保のためにわざとつけています(笑)。動作はすべて、Rust 1.47.0 (stable) です。nightly を使用した場合は nightly と文中に記載しました。 TL; DR Rust には ! という「何も返さないことを示すモノ」が存在する。 never …
2020/10/17-2020/10/18で開催されていた ScalaMatsuri に参加してきました。お忘れかもしれませんが本職は Scala エンジニアです。会社のスポンサー枠で参加しました。 聞いたセッション 自由、平等、ボックス化されたプリミティブ型 Caliban: Functional Gr…
It will be 3 years since I started to code in Rust. I had started to code 6 years ago, so half of my career have been dedicated to write code in Rust. Over recent years, I organised a Rust conference happened in Japan, and I'm now organisi…
x.py とは Rust コンパイラ向けのツールです。Python が事前にインストールされている必要があります。 Rust コンパイラのビルド とっても簡単。下記コマンドを実行しましょう。 まずはクローンします。 git clone https://github.com/rust-lang/rust.git ビ…
よく忘れるのでメモします。Scala です。 Future#collect とは 実験内容 実験1: 逐次実行することを確かめる 実験2: 並列実行することを確かめる 余談: sequence 3兄弟 まとめ Future#collect とは com.twitter.util.Future についている便利関数で、Seq[Fut…
すごく今更感がありますが、先週末出版しました。 私のプライベートがとても忙しくしばらく書けませんでした。書籍を書きましたのでご報告です。 実践Rustプログラミング入門作者:初田 直也,山口 聖弘,吉川 哲史,豊田 優貴,松本 健太郎,原 将己,中村 謙弘発…
RISC-V のエミュレータを実装する際などに使用する riscv-gnu-toolchain を macOS にインストールしてみたので、メモを残しておきます。 github.com インストール手順 git clone と make linux でかなりの時間を要します。時間に余裕をもって実行することを…
ブログ枠で参加しました。なので、書きます。 forcia.connpass.com RustでProperty-Based Testing (自分の職場のデスクで聞いていたので、めっちゃ話しかけられて半分くらいしか聞けませんでした…) Rust で Property-Based Testing する際にはどういったク…
最近、 Project Euler を Rust でコツコツと解いているのですが、イテレータ(Iterator)を使いこなせるときっといい書き方ができそうだなあと思う場面が多く、イテレータに改めて入門したいと思いこの記事を書きます。 書き始めていまいちまとまりのない感…
完全な小ネタです。使ってみた記事です。 Rust ではトレイトの関数を async にできない Rust では、現状トレイトのメソッドに async をつけることはできません*1。つまり、下記のようなコードはコンパイルエラーとなります。 trait AsyncTrait { async fn f(…
現時点で 0.8.1 まで出てしまっていますので、まとめて触ってみます。 変更の概要はこちらのリリースノートに詳しくまとまっています。0.8.0 でかなり大掛かりなモジュールの構造に対する変更が入っており、もともとドッグフーディングのために使用していた…
ちょっとおもしろいツイートを見つけたので、メモがてら書きます。 Oh no.#rustlang pic.twitter.com/vWwuQOMGvg— Mara Bos (@m_ou_se) April 22, 2020 次のようなコードはコンパイルが通ってしまいます。 fn main() { let a; let b; let z = (a = 10) == (b…
Rust の async-std ベースの HTTP サーバーフレームワーク tide を触ります。0.6.0 に引き続き、先ほど 0.7.0 がリリースされていたようなので試してみたいと思います。前回の記事は下記です。 yuk1tyd.hatenablog.com 今回も私が気になるところだけメモしま…
社会人5年目が終わってしまいました。社会人4年目の終わりにも記事を書いたので、毎年恒例にしていきたいと思って今年も書きます。 今年できたこと 5年目で目標としていたもの データサイエンスに触れてみる 分散システムに詳しくなる 関数型プログラミング…
会社で使っている PC を変えてもらったんですが、環境構築が大変だなあと思ったのでいろいろ同僚に教えてもらいながら dotfiles を整えてみました。 とりあえず言われたことは「oh-my-zsh を使うんじゃねえ」だそうです 詳しいことはわかりませんが、メンテ…
Scala の trait と Rust の trait は微妙に使い方が異なる、とよく質問を受けます。たしかに、使い心地は微妙に異なるかもしれません。Scala はオブジェクト指向を中心に設計された言語ですが、Rust はそれを中心に設計されているとは言えません*1。こういっ…
EC2 インスタンス上に存在する Web サーバーを VisualVM 接続してで見たいと思った際に、どのようにして見たらよいかをまとめておきます。 なお、ローカル環境が Mac OS X での場合です。 手順 java の起動コマンドに引数をいくつか追加する。 SOCKS プロト…
async/await に対応した HTTP サーバーの tide を先日紹介し、先日も記事を書きました。 同様に async/await に対応した HTTP クライアントの surf というライブラリがあるようなので、それを軽く紹介したいと思います。執筆時点での surf のバージョンは 1.…
tide 0.6.0 がリリースされていたようなので、使ってみます。リリースノートはこちらです。 Cookie、CORS と Route にいくつか新しい関数が足されたというリリースでした。Cookie と CORS はどちらも Web アプリを作る上では必須要件なので、追加されて嬉し…
先日の Rust LT 会でグラフを実装してみる話がありました。そこではおそらく隣接リストを説明していたと思うのですが、そういえば Rust で実装してみたことはなかったなと思ったので、実装してみました。 『みんなのデータ構造』という本を参考にして実装し…
2020年、Rust をどうしていくかというロードマップが例年通り策定されているようです。まだ草案なようなので変わる可能性がありそうですが、現時点での情報をまとめておこうかなと思います。 github.com まとめると Rust 2021 Edition への準備の年。 現在進…
今回は cats.effect.IO (以下、 IO ) を理解する上で最低限必要となる*1実装を選定して、cats を参考に IO を実装してみました。具体的には、下記の機能を実装してみます。 IO#pure IO#delay or IO#apply IO#raiseError IO#map IO#flatMap IO#unsafeRunSync …