タグ

ブックマーク / blog-dry.com (8)

  • 『詳解Rustアトミック操作とロック』(Rust Atomics and Locks) - Don't Repeat Yourself

    昨年買っていたんですが、年末年始の時間を使って少し読めました。 著者はRustコンパイラにコントリビューションをしたことがあれば誰でも知っているかもしれない、Mara Bos氏です。 ちなみにですが、原著は下記サイトで無料でも読むことができます。 marabos.nl 書籍は下記です。 詳解 Rustアトミック操作とロック ―並行処理実装のための低レイヤプログラミング 作者:Mara Bosオーム社Amazon なおこの記事内で「書」と明記する場合、それは『詳解Rustアトミック操作とロック』を指します。また、「筆者」は私自身のことであり、「著者」はMara Bos氏のことです。 内容のメモ 1章 2章 3章 4章、5章 6章 Miri Loom 7章 8章 9章 10章 感想 日語での別の資料 内容のメモ 読んだ内容のうち、印象に残ったり初見だったものをメモしておきます。 1章 1章

    『詳解Rustアトミック操作とロック』(Rust Atomics and Locks) - Don't Repeat Yourself
    poad1010
    poad1010 2024/01/10
    この記事をおすすめしました
  • GitHub Actions 上の cargo install でインストールされるプラグインをキャッシュしつつ使いたい - Don't Repeat Yourself

    GitHub Actions 上で cargo install 経由でインストールされるプラグインを使いたいと思いました。しかし実際に使ってみると、そのプラグインのインストールとビルドに5分程度毎回時間を要することがわかりました。これはビルド時間を伸ばすことにつながり開発の生産性を下げるのので、解決策を探しました。 背景 今回解決したい事象の背景としては次のとおりです。 GitHub Actions 上で、SQL クエリビルダー sqlx のクライアント sqlx-cli を実行し、ビルド時とテスト時にデータベースにマイグレーションをかけたい。 sqlx はコンパイル時にデータベースに接続し、データベース上にテーブルがあるかどうかまでチェックする機能がある。それに必要。 ただ、sqlx-cli はインストールとビルドに時間がかかる。手元の GitHub Actions ではだいたい5分くら

    GitHub Actions 上の cargo install でインストールされるプラグインをキャッシュしつつ使いたい - Don't Repeat Yourself
  • Rustで型を強めにつけ、バリデーション情報を型に落とす方法 - Don't Repeat Yourself

    Rust を読んでいると、さまざまなものに型付けをするコードをよく見かけます。強めに(厳密に)型付けをする文化があるプログラミング言語、と言えるかもれません。 バリデーションチェックに対してもこうした強めの型付けが適用できます。具体的なバリデーションの情報を型情報として落としておくことで、コードを読むだけでバリデーション情報を把握できたり、あるいは誤った値の代入をコンパイルタイムで弾くことができるようになるというメリットを享受できるようになります。 一方で、型情報があまりに複雑化すると、あまりそうした型付け手法に慣れていないプログラマがキャッチアップするのに少し時間がかかったり、あるいはとんでもなく複雑になってそもそもその型を作り切るのが大変というデメリットも生じることになります。 今日紹介する手法は、さまざまなトレードオフの上に成り立つものであり、もし導入の結果、そのプロジェクトにとって

    Rustで型を強めにつけ、バリデーション情報を型に落とす方法 - Don't Repeat Yourself
  • Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself

    この記事は言語実装Advent Calendar 2020 25日目の記事です。(2022-11-06: 記事の内容を追記していますが、この記事の結論としては「似たようなものは作れるが、完全体にはならない」です) 前提知識 高階カインド型 モナド 従来のエミュレーション方法 Generic Associated Types を用いたエミュレーション(new!) 型クラスを定義する Functor を用意する Pointed を用意する Applicative を用意する Monad を用意する いくつか型を実装していく 現状実装できないもの do 記法 Generic Associated Types(GATs)とは何か 追記(2022-11-06) リポジトリ 参考文献 モナドに関する話題が言語実装アドベントカレンダーの範疇に入るのかわかっていませんが*1、プログラミング言語がお好きな方

    Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself
  • CPUエミュレータをRustで自作する - Don't Repeat Yourself

    この記事は Rust Advent Calendar 2020 ならびに CyberAgent Developers Advent Calendar 25日目の記事です。 今年のはじめの頃になりますが、『CPUの創り方』というに載っている TD4 という CPU を実装してみました。TD4 は「とりあえず動作するだけの4bit CPU」の略です。このに載っている CPU エミュレータを実際に実装してみました。ただし、書には GUI が載っていましたが、それは省略しました。 CPUの創りかた 作者:渡波 郁発売日: 2003/10/01メディア: 単行(ソフトカバー) 「最近話題の RISC-V などの CPU エミュレータを作ってみたいものの、いきなり作るにはハードルが高い。何か簡単なもので素振りをして CPU の動作の仕組みをまずは知りたい」という方にはかなりオススメできる教材だ

    CPUエミュレータをRustで自作する - Don't Repeat Yourself
  • 『実践Rustプログラミング入門』を書きました - Don't Repeat Yourself

    すごく今更感がありますが、先週末出版しました。 私のプライベートがとても忙しくしばらく書けませんでした。書籍を書きましたのでご報告です。 実践Rustプログラミング入門 作者:初田 直也,山口 聖弘,吉川 哲史,豊田 優貴,松 健太郎,原 将己,中村 謙弘発売日: 2020/08/22メディア: 単行 ちなみに、著者、まだ現物を受け取っていません。書店で現物を触りたいなと思って見に行きましたが、今週末は在庫切れで屋さんにありませんでした。 電子書籍は調整中です。 私の担当は1章、3章の一部、11章の一部です。 他の共著者のみなさんの記事 (2020/09/22 追記) 共著なのにこの記事のタイトルを「書きました」としてしまったので、私もだぞ、とみなさんがタイトルで煽ってきています(違 私も『実践Rustプログラミング入門』を書きました - matsu7874のブログ 私だって『実践R

    『実践Rustプログラミング入門』を書きました - Don't Repeat Yourself
  • Scalaのtrait、Rustのtrait、そしてScalaのimplicit - Don't Repeat Yourself

    Scala の trait と Rust の trait は微妙に使い方が異なる、とよく質問を受けます。たしかに、使い心地は微妙に異なるかもしれません。Scala はオブジェクト指向を中心に設計された言語ですが、Rust はそれを中心に設計されているとは言えません*1。こういった言語設計の差が、trait の使い心地の違いを生み出していると私は思っています。 両者の trait には、共通した特徴もあります。共通した処理をまとめあげるという意味では同じ目的をもっているといえますし、また、「犬は動物である」「は動物である」の共通性を示すことで、共通したものをひとまとめに処理しきることもまた可能です。 Scala には implicit という強力な機能が存在します。これは柔軟でスケーラブルなソフトウェアデザインを可能にする Scala の特徴のひとつです。非常にすばらしい機能です。この機能

    Scalaのtrait、Rustのtrait、そしてScalaのimplicit - Don't Repeat Yourself
  • async/await 時代の新しい HTTP サーバーフレームワーク tide を試す - Don't Repeat Yourself

    Rust Advent Calendar 2019 25日目の記事です。 tide は現在開発途中の、 Rust の async/await に対応した HTTP サーバーを構築するフレームワークです。not ready for production yet なので番にこれを使用するのは難しいかもしれませんが、いろいろな例を見てみた感じとても使いやすそうで、注目に値するフレームワークの一つです。 記事を少し読んでみたのですが、どうやら 2018 年に RustNetwork Service Working Group が開発に着手したフレームワークのようですね。現在のステータスを追いかけていないので詳しくはわかりませんが、Rust チームの方々が何かしら関わっているフレームワークということで、少し安心感がもてるかなと私は思っています。async/await が今年無事安定化されたの

    async/await 時代の新しい HTTP サーバーフレームワーク tide を試す - Don't Repeat Yourself
  • 1