Don't Repeat Yourself

Don't Repeat Yourself (DRY) is a principle of software development aimed at reducing repetition of all kinds. -- wikipedia

ScalaMatsuri 2020に行ってきた! #ScalaMatsuri

2020/10/17-2020/10/18で開催されていた ScalaMatsuri に参加してきました。お忘れかもしれませんが本職は Scala エンジニアです。会社のスポンサー枠で参加しました。 聞いたセッション 自由、平等、ボックス化されたプリミティブ型 Caliban: Functional Gr…

My Rust 2021

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 について

x.py とは Rust コンパイラ向けのツールです。Python が事前にインストールされている必要があります。 Rust コンパイラのビルド とっても簡単。下記コマンドを実行しましょう。 まずはクローンします。 git clone https://github.com/rust-lang/rust.git ビ…

TwitterFuture の Future#collect と並列処理

よく忘れるのでメモします。Scala です。 Future#collect とは 実験内容 実験1: 逐次実行することを確かめる 実験2: 並列実行することを確かめる 余談: sequence 3兄弟 まとめ Future#collect とは com.twitter.util.Future についている便利関数で、Seq[Fut…

『実践Rustプログラミング入門』を書きました

すごく今更感がありますが、先週末出版しました。 私のプライベートがとても忙しくしばらく書けませんでした。書籍を書きましたのでご報告です。 実践Rustプログラミング入門作者:初田 直也,山口 聖弘,吉川 哲史,豊田 優貴,松本 健太郎,原 将己,中村 謙弘発…

riscv-gnu-toolchain を macOS にインストールする

RISC-V のエミュレータを実装する際などに使用する riscv-gnu-toolchain を macOS にインストールしてみたので、メモを残しておきます。 github.com インストール手順 git clone と make linux でかなりの時間を要します。時間に余裕をもって実行することを…

Shinjuku.rs#10 に参加した #Shinjukurs

ブログ枠で参加しました。なので、書きます。 forcia.connpass.com RustでProperty-Based Testing (自分の職場のデスクで聞いていたので、めっちゃ話しかけられて半分くらいしか聞けませんでした…) Rust で Property-Based Testing する際にはどういったク…

Rust のイテレータを使いこなしたい

最近、 Project Euler を Rust でコツコツと解いているのですが、イテレータ(Iterator)を使いこなせるときっといい書き方ができそうだなあと思う場面が多く、イテレータに改めて入門したいと思いこの記事を書きます。 書き始めていまいちまとまりのない感…

async-trait を使ってみる

完全な小ネタです。使ってみた記事です。 Rust ではトレイトの関数を async にできない Rust では、現状トレイトのメソッドに async をつけることはできません*1。つまり、下記のようなコードはコンパイルエラーとなります。 trait AsyncTrait { async fn f(…

tide 0.8.0 を試してみる

現時点で 0.8.1 まで出てしまっていますので、まとめて触ってみます。 変更の概要はこちらのリリースノートに詳しくまとまっています。0.8.0 でかなり大掛かりなモジュールの構造に対する変更が入っており、もともとドッグフーディングのために使用していた…

Rust における直観に反するように見えるコード

ちょっとおもしろいツイートを見つけたので、メモがてら書きます。 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…

tide 0.7.0 を試してみる

Rust の async-std ベースの HTTP サーバーフレームワーク tide を触ります。0.6.0 に引き続き、先ほど 0.7.0 がリリースされていたようなので試してみたいと思います。前回の記事は下記です。 yuk1tyd.hatenablog.com 今回も私が気になるところだけメモしま…

社会人5年目が終わった

社会人5年目が終わってしまいました。社会人4年目の終わりにも記事を書いたので、毎年恒例にしていきたいと思って今年も書きます。 今年できたこと 5年目で目標としていたもの データサイエンスに触れてみる 分散システムに詳しくなる 関数型プログラミング…

今さらだけど dotfiles を書いた

会社で使っている PC を変えてもらったんですが、環境構築が大変だなあと思ったのでいろいろ同僚に教えてもらいながら dotfiles を整えてみました。 とりあえず言われたことは「oh-my-zsh を使うんじゃねえ」だそうです 詳しいことはわかりませんが、メンテ…

Scalaのtrait、Rustのtrait、そしてScalaのimplicit

Scala の trait と Rust の trait は微妙に使い方が異なる、とよく質問を受けます。たしかに、使い心地は微妙に異なるかもしれません。Scala はオブジェクト指向を中心に設計された言語ですが、Rust はそれを中心に設計されているとは言えません*1。こういっ…

Mac OS X から EC2 インスタンス上に存在する JVM に VisualVM を接続する

EC2 インスタンス上に存在する Web サーバーを VisualVM 接続してで見たいと思った際に、どのようにして見たらよいかをまとめておきます。 なお、ローカル環境が Mac OS X での場合です。 手順 java の起動コマンドに引数をいくつか追加する。 SOCKS プロト…

Rust の HTTP クライアント surf を試してみる

async/await に対応した HTTP サーバーの tide を先日紹介し、先日も記事を書きました。 同様に async/await に対応した HTTP クライアントの surf というライブラリがあるようなので、それを軽く紹介したいと思います。執筆時点での surf のバージョンは 1.…

tide 0.6.0 を試してみる

tide 0.6.0 がリリースされていたようなので、使ってみます。リリースノートはこちらです。 Cookie、CORS と Route にいくつか新しい関数が足されたというリリースでした。Cookie と CORS はどちらも Web アプリを作る上では必須要件なので、追加されて嬉し…

【競プロノート】グラフを Rust で実装してみる

先日の Rust LT 会でグラフを実装してみる話がありました。そこではおそらく隣接リストを説明していたと思うのですが、そういえば Rust で実装してみたことはなかったなと思ったので、実装してみました。 『みんなのデータ構造』という本を参考にして実装し…

2020年の Rust

2020年、Rust をどうしていくかというロードマップが例年通り策定されているようです。まだ草案なようなので変わる可能性がありそうですが、現時点での情報をまとめておこうかなと思います。 github.com まとめると Rust 2021 Edition への準備の年。 現在進…

作って学ぶ、cats.effect.IO モナドのしくみ

今回は cats.effect.IO (以下、 IO ) を理解する上で最低限必要となる*1実装を選定して、cats を参考に IO を実装してみました。具体的には、下記の機能を実装してみます。 IO#pure IO#delay or IO#apply IO#raiseError IO#map IO#flatMap IO#unsafeRunSync …

async/await 時代の新しい HTTP サーバーフレームワーク tide を試す

Rust Advent Calendar 2019 25日目の記事です。 tide は現在開発途中の、 Rust の async/await に対応した HTTP サーバーを構築するフレームワークです。not ready for production yet なので本番にこれを使用するのは難しいかもしれませんが、いろいろな例…

【競プロノート】bit全探索を学ぶ

全探索にもいろいろ種類があるそうで、今日は bit 全探索という方法を勉強したのでそれについてまとめてみます。まとめないと忘れる。 解きたい問題 この記事に載っている部分和の問題を解きます。説明のために問題文を拝借します qiita.com n 個の正の整数 …

今年読んだ技術書(2019年)

今年も多くの技術書を読みました。その中で印象に残ったものをご紹介したいと思います。今年は忙しくて休日しか時間がなかったので、読んで知識を体系的に整理できたと思った本の冊数は少ないですが… Functional Programming 2019年の4月くらいに5年目がはじ…

群、モノイド、半群

数学を勉強している最中に話が出てきたので、少しまとめておこうと思います。理解に誤りがあったら教えて下さい‍♀️ なお、私はモノイドやモナドといった言葉は、その成立条件について Functional Programming in Scala などの本でさらっと理解しています。一…

クリエイティブ担当者から見た Rust.Tokyo #rust_tokyo

Photo by: @katsumata_ryo まずはお礼をさせてください。10月26日に Rust.Tokyo を開催しました。ブログ等での反響を見る限り、みなさんお楽しみいただけたようで、主催者としては何よりです。カンファレンスを初めてやるメンバーが多い中で、前日まで準備に…

ターミナルに色をつけられる crate 「ansi_term」

Rust を書いてる際にコンソールでいろいろ出力を出して遊びたいことがあると思います(?).コンソールの出力にふと色をつけたくなって,コンソール文字列の色づけって Rust ではどうやってつけることができるんだろう?と思って調べたらこういう crate が…

logback で環境ごとにロギング設定を変えたい場合にやること

ググると Spring も込みの設定方法しか出てこなかったので,メモしておきます.言語は Scala,ビルドツールは sbt を使用しています.logback-classic を使用しているようです. やろうとしていること logback.xml 内で,開発環境/ステージング環境/本番環…

『実践 Rust 入門』

思い返すと、Rust をはじめて知ったのは2年前でした。ある Googler が記事の中で Rust に対して惜しみない賛辞を送っていた記事でした。私はこの記事に大変共感し、感銘を受けました。Rust がやりたくなった。 当時の私は、金融業界で使われるリスク管理計算…

社会人4年目が終わった

先週で社会人4年目が終わり,今週から社会人5年目になりました.3年目で新卒入社した金融の会社を辞め,今は2社目に1年半弱在籍しています.振り返りをしておきたいと思います. ちなみに私は社会人になってからプログラミングをはじめたので,プログラミン…