タグ

Rustに関するrin51のブックマーク (38)

  • 一休レストランのふつうのRustバックエンド開発 - 一休.com Developers Blog

    この記事は一休.com Advent Calendar 2023 25日目の記事です。 一休レストランでは、よりスムーズな予約体験の提供を目的とするシステムのリニューアルを進めています。その一環として、2023年10月から、レストラン個別ページの表示から予約までのスマートフォンビューにおいて、バックエンドのサーバをRustで書かれたものに置き換えました。 一休レストランの Rust バックエンドが正式リリースされました。https://t.co/7N4VGv5ej9 このページのスマートフォンビューはバックエンドが Rust で書かれた GraphQL になってます— naoya (@naoya_ito) October 4, 2023 番運用が始まって3か月近く経ちましたが、これまで安定して継続的な開発と運用ができています。これはRustだからと構えることなく、「ふつう」のバックエンド

    一休レストランのふつうのRustバックエンド開発 - 一休.com Developers Blog
    rin51
    rin51 2023/12/26
  • 組込みRust実装例集―Raspberry Pi Picoで電子工作

    概要この記事は、Raspberry Pi PicoにRust言語を使って組込みを行う際のTips集です。 各電子パーツを使って実現したいことから、対応するコードの記法を探せるようになっています。 適宜追加するので、ちょくちょく見に来てもらえると良いことがあるかもしれません。 (この記事は「Rust Advent Calendar 2021|25日目に登録されています)

    組込みRust実装例集―Raspberry Pi Picoで電子工作
  • Raspberry Pi Picoで組込みRust開発(開発環境構築編) - Qiita

    はんだ付けが難しい場合、価格は少々高くなりますが、スイッチサイエンスからピンヘッダ実装済みのPicoが販売されているので、それを購入するのもよいでしょう。 ピンヘッダのはんだ付けが完了したら、ブレッドボードに挿入します。PCとUSBケーブルで接続するので、ケーブルが出る方の端に配置すると、残りの部分に部品を置きやすくなります。 それでは、以下より開発環境を構築していきます。 実行環境 Mac mini (2018) macOS Big Sur 11.5.2 HomebrewでGitをインストール済み Macでの手順を記述しますが、Linuxでも同様に実行できると思います。 開発に必要なツールの準備 まず、Rustのツールチェインをはじめとした、開発に必要なツールをインストールします。 Rustツールチェインの準備 https://rustup.rs/ の手順に従い、Rustのツールチェイン

    Raspberry Pi Picoで組込みRust開発(開発環境構築編) - Qiita
  • 『Rust Design Patterns』を翻訳してみました(Idiom 編) - Qiita

    はじめに rust-unofficialというところの出しているRust Design Patternsの日語訳が見つからなかったため、理解のために翻訳してみました(分からないところは DeepL に頼りました)。 今回は Introduction と Idioms の部分です(デザインパターン・アンチパターン編の翻訳はこちらにあります)。 FFI の部分はよく分からなかったためスキップしています。 不慣れなため翻訳間違いなどある可能性が高いです(教えていただきたいです)。 以下から文です。 Introduction デザインパターン プログラムを開発するとき、私たちは多くの問題を解決しなければなりません。プログラムは問題の解決方法と見ることができます。また、プログラムは多くの異なった問題の解決方法の集まりと見ることもできます。これらの解決方法の全てが一緒に大きな問題の解決へと働きかけ

    『Rust Design Patterns』を翻訳してみました(Idiom 編) - Qiita
  • 『Rust Design Patterns』を翻訳してみました(デザインパターン・アンチパターン編) - Qiita

    はじめに 前回に引き続き、Rust Design Patternsを翻訳しました(分からないところは DeepL に頼りました)。 今回はデザインパターン以降の部分です。 FFI の部分はよく分からなかったためスキップしています。 翻訳間違いなどあるかもしれません(教えていただきたいです。) 長くなってしまいましたが、この記事には以下の内容が記されています。 デザインパターン Rust におけるデザインパターン YAGNI 振る舞いに関するパターン Command Interpreter Newtype RAII とガード Strategy(別名 Policy) Visitor 生成に関するパターン Builder Fold 構造に関するパターン 構造体をまとめる 小さなクレートがよい unsafety を小さなモジュールに閉じ込める アンチパターン 借用チェッカーを満足させるために cl

    『Rust Design Patterns』を翻訳してみました(デザインパターン・アンチパターン編) - Qiita
  • Rustでマルチインターフェースパケットキャプチャを実装する - 逆さまにした

    この記事は Rust Advent Calendar 2018 の3日目の記事です。 記事では、タイトルの通り、Rustでマルチインターフェースパケットキャプチャを実装します。 今回の記事で達成したい目標は以下2点です。 Rustでネットワークプログラミングをしたい マルチインターフェースにすることでマルチスレッド対応したい どうやって低レイヤを扱うか Rustでネットワークプログラミングを行うには、libpnetが便利なので、今回はこちらを利用します。libpnetを使えるようCargo.tomlには以下を記載しておきます。 [dependencies] serde = "1.0" serde_derive = "1.0" [dependencies.pnet] version = "0.21.0" アーキテクチャ 今回実装するパケットキャプチャのアーキテクチャは以下です。 I/F1か

    Rustでマルチインターフェースパケットキャプチャを実装する - 逆さまにした
    rin51
    rin51 2023/10/27
    pcapみたいな
  • Rust のエラーハンドリングはシンタックスシュガーが豊富で完全に初見殺しなので自信を持って使えるように整理してみたら完全に理解した - Qiita

    Rust のエラーハンドリングはシンタックスシュガーが豊富で完全に初見殺しなので自信を持って使えるように整理してみたら完全に理解したRust はじめに Rust の Result や Option を使ったエラーハンドリングは機能が豊富なので便利な半面、初心者にとっては難しく感じられてしまいます。 とはいえよく見るとシンタックスシュガーが豊富なだけですごく難しいということはなかったので、自分の理解のためにも整理してまとめてみました。 Result とは Result は失敗する可能性のある関数の返り値のために用意された列挙型で、関数が成功した場合の返り値のバリアントと失敗した場合の返り値のバリアントを提供します。

    Rust のエラーハンドリングはシンタックスシュガーが豊富で完全に初見殺しなので自信を持って使えるように整理してみたら完全に理解した - Qiita
  • Cargoで任意の共有ライブラリをリンクするには - Qiita

    #[link(name = "raiburari")] extern { fn foo(script: *const libc::c_char, cb: extern fn(* const libc::c_char) -> c_int ) } rustcのコマンドラインでは-Lオプションがあるので、Cと同様に共有ライブラリの パスを指定することが可能。コード中で指定したlibraiburariがどこにあっても参照できる。 しかし、Cargoを使ってこれをするやり方がなかなか分からなかった。 驚きの結果 なんと、build.rsをいうファイルを作成して、rustで標準出力にオプションの 文字列を出力するコードを書くことで、これが可能になることが分かった。 共有ライブラリの検索パスは以下のオプション cargo:rustc-link-search build.rsの中身

    Cargoで任意の共有ライブラリをリンクするには - Qiita
  • はじめてのRustをFFIとゲームエンジンで。 - Qiita

    このエントリは Rust 3 Advent Calendar 2020 の25日目の記事です。 個人開発ゲームエンジンを作っている LRIKI と申します。 去年のちょうどこの時期は こんなかんじ でしたが、この一年間でようやくゲームっぽいものが作れるようになりました。 さて普段は公私共に C++er ですが、以前から Rust がイイらしい噂を聞いていて、ずっと気になっていました。しかしイマイチそれを学ぶ動機が持てず、「Rust 勉強したいなー」とか言い続けている間に数年が過ぎ、また今年も終わろうとしています。 ただ今年は何となくいいかんじに動くようになってきたオレオレエンジンがあります。さらにこのエンジンはいろいろな言語から呼び出せる Flat な C-API を持ってます。勉強しながらグラフィカルにいろいろできたほうがモチベにつながる気がするので、ひとまず導入ということで表題の通り

    はじめてのRustをFFIとゲームエンジンで。 - Qiita
  • Rustで動的リンクライブラリを作る / 読み込む - 正論なんて諭んないで

    こんにちは。 しばらくぶりの投稿になります。 シンプルにRustで動的リンクライブラリを作って読み込む記事が少ないように感じたので記事を書くことにしました。 Rustで動的にリンクするライブラリを作りたい!、Rustで動的リンクライブラリを読み込みたい!という方は読んでいっていただければと思います。 Rustで動的リンクライブラリを作る Rustで動的リンクライブラリを作ります。 Cargo.toml の編集 Cargo.toml を次のように編集します。 [package] name = "dylib" version = "0.1.0" authors = ["cordx56"] edition = "2018" [lib] crate-type = ["cdylib"] [dependencies] 重要なのは [lib] 以下の2行です。 crate-type に ["cdyli

    Rustで動的リンクライブラリを作る / 読み込む - 正論なんて諭んないで
  • Rustスマートポインタ比較表 - Qiita

    以下補足です。 効率 トレードオフを強調するために、相対的な効率を星の個数で表しています。しかし、効率をことさら気にする必要はありません。他の多くのプログラミング言語では、Rustでいうところの Arc<Mutex<T>> をデフォルトで使っているような状況です。要件にあったものを使うことが大事です。 ライフタイム 「短命」とついているものは基的に、ある関数のスコープに紐付いた形でしか使えません。特に慣れないうちは、これらの型を構造体に入れて使うのはやめておいたほうが無難でしょう。 例外として、グローバル変数 (static, lazy_static!) は &'static 参照として扱うことができます 共有 「ポインタ」と聞くと、参照先が共有されている様子を思い浮かべる人が多いと思いますが、所有権の概念のあるRustでは必ずしもそのイメージは当てはまりません。 &mut T と Bo

    Rustスマートポインタ比較表 - Qiita
  • Rustでの 抽象化 3パターンについて

    ※この記事は全然入門記事ではないです。Javaなどのオブジェクト指向言語とRustをある程度理解している前提での記事です。あと、メモ程度に雑に書いています。 今回は抽象化がテーマです。オブジェクト指向の多態相当のことをRustでどうのように解決すればいいのでしょうか。個々の実装型の都合によらず、呼び出し側は統一的なインターフェイスで操作するケースはRustでもあるはずです。 オブジェクト指向言語の設計に慣れていると、Rustで設計するときにどうしたらいいかわからないことがあります。なぜならRustには継承がないからです…。まぁJavaと比べるとだいぶ違うので頭を切り替える必要があります。今回はそういう感じの記事です。 では、早速デザインパターンを題材にして考えてみましょう。 抽象化について 簡単なコマンドパターンから考えます。 ここでは単純に渡した文字列を標準出力するコマンドを考えます。以

    Rustでの 抽象化 3パターンについて
    rin51
    rin51 2023/10/12
    rustで動的ディスパッチ(スマートポインタ使用)と静的ディスパッチを使いcommandパターンを実装
  • Rustのメモリ管理機能とその特徴

    初出:技術評論社刊「ソフトウェアデザイン 2021年9月号」 先日、技術評論社よりRustのメモリ管理機能についての特集に寄稿させて頂きました。 この記事は自分が寄稿させていただいた記事をブログ用に一部推敲・加筆を加えたものです。 なお、ソフトウェアデザインでの特集ではより実践的な例でのメモリ管理についての解説もあるので、興味のある方は誌のほうも手にとっていただければと思います。 プログラム言語におけるメモリ管理の課題プログラミングにおける課題の一つとしてどうやってメモリ領域(ヒープ領域)を管理するかというものがあります。 C言語ではmalloc/free関数などを用いて手動でメモリを管理しています。 これらの関数はメモリアドレスを示すポインタを介してメモリ管理を行います。 malloc関数は必要なメモリ領域を確保してその先頭番地のポインタを返し、プログラム内ではその番地のメモリを読み書

  • Writing an OS in Rust

    このブログシリーズでは、ちょっとしたオペレーティングシステムをRustプログラミング言語を使って作ります。それぞれの記事が小さなチュートリアルになっており、必要なコードも全て記事内に記されているので、一つずつ読み進めて行けば理解できるでしょう。対応したGithubリポジトリでソースコードを見ることもできます。 最新記事: Async/Await

    rin51
    rin51 2021/07/28
    > このブログシリーズでは、ちょっとしたオペレーティングシステムをRustプログラミング言語を使って作ります。
  • Rust製ターミナルマルチプレクサのZellijに入門してみる

    K8sの基礎力を高めるため、久しぶりに Kubernetes The Hard Way (K8sをスクラッチ構築するチュートリアル)を行おうとしていたところ、あることを思い出しました。 それは、tmuxのようなターミナルマルチプレクサ(平たく言えばターミナルの画面分割や切り替えなどが簡単にできるツール)の利用が推奨されていた、ということです。 その理由としては、Hard Wayでは作業を進める上で各ノードで同じようなコマンドを何回も入力する必要があるのですが、tmuxを使えば複数ノードに対して一斉に同一コマンドを実行できるので、スムーズに作業ができるためです。 ただ、以前Hard Wayを行った時点ではtmuxにあまり習熟しておらず、かつとにかく手を動かして覚えることを目的としていた関係でtmuxを使ってはいませんでした。 一方で、今回はそろそろtmuxに入門し直そうかと思っていたところ、

    Rust製ターミナルマルチプレクサのZellijに入門してみる
    rin51
    rin51 2021/07/21
    screenやtmuxやbyobuみたいなやつ
  • RustCoder ―― AtCoder と Rust で始める競技プログラミング入門

    AtCoder のジャッジシステムを利用しながらプログラミング言語 Rust について解説します.C++python のような他の言語に触れたことのないプログラミング初心者でも読めるよう努めています.更新履歴は github ( https://github.com/fiveseven-lambda/zenn/commits/main/books/rust-atcoder ) から見られます.内容に関するご意見やご指摘などは,プルリクエストか twitter ( https://twitter.com/57tggx ) で遠慮なくお願いします.カバー画像: GRAPHY 筧様

    RustCoder ―― AtCoder と Rust で始める競技プログラミング入門
    rin51
    rin51 2021/03/29
  • Rust は何を解決しようとしたのか;メモリとリソースと所有権

    みなさん、 Rust 書いてますか?最近は Rust が楽しくてたまりませんが、のんびりやっていたらなんとなく理解するまで 1 年くらいかかってしまいました。 良い言語なので、できればみなさんにも気軽に手を出してもらいたく、 Rust の中で特に難しい概念とされている話「所有権(ownership)」について簡単にまとめることにしました。 おことわり 今回記述する「所有権」は、英語で "ownership" として表現されるものを和訳した単語です。 今回説明している概念は、「所有権」という言葉よりも "ownership" (およびその対訳である「所有」、「持ち主であること」) のほうが的確であると思いますが、このドキュメントでは「所有権」という言葉を使います。 所有権とは 所有権とは、簡単に言えば「値(データ)を持っている」 「その値を解放することに責任を負っているもの」のことを指します

    Rust は何を解決しようとしたのか;メモリとリソースと所有権
  • Rustを実践的に学ぶには

    Stack Overflowの愛され言語ランキングでここ最近ずっと一位のRustを、2020年の年末から気を出して学んでます。ようやくまともに書けるようになったので、どんなやり方で学んだかを簡単にまとめたいと思います。 著名なRust関連の書籍は買いそろえて学習していたのですが、実際にモノ作ったほうが早いよねということで、ULID生成器を実装してみました。ちょっと前にScalaでも同様に作っていたので、ちょうどいい習作課題でした。 実際の実装は以下。 学習の進め方 書籍などの情報は、以下を中心に読みました。というか、一通りの概念を把握するという感じです。すでに何かしらのプログラミング言語を扱える人なら(Rustを第一言語にする人少なそうですが…)、どういった機能があるか、浅く理解しておくとよいと思います。そのうえで、実装の際に具体的な知識が必要ならば、「あ、このあたりはあの書籍に書いてあ

    Rustを実践的に学ぶには
    rin51
    rin51 2021/01/05
  • Rust で UEFI のハローワールド - 借り初めのひみつきち

    2020-12-23: cargo xbuild が不要になったので一部修正しました。 さいきん Rust のべんきょうはじまりました! github.com Rust とは 安全に低レベルプログラミングができるナウい言語っぽいです。 メモリ管理が厳しいので初学者はコンパイルを成功させるだけでも一苦労です。 UEFI とは 2000年ごろに BIOS を代替する目的で開発された PC 向けの新しいファームウェアです。 当初はマイナーな存在でしたが Window 8 の登場とともに市販の PC に広く利用されるようになり、今後は PC の BIOS は廃止されて UEFI が搭載されることになっています。 UEFI で Hello World さて、 Rust で UEFI のプログラミングするにはどうすればいいでしょうか。 まずは公式から Rust をインストールしましょう。 $ curl

    Rust で UEFI のハローワールド - 借り初めのひみつきち
  • rust-lang/rustへのcode contributionをはじめからていねいに

    降り積もる雪はすべての罪を覆い隠してくれるので初投稿です はじめに rust-lang/rustはいわゆるrustcをビルドするためにそのソースコードだけでなく、CIコンフィグや各種ツール群、ブートストラッピングのあれこれなどを含んでおり、なかなかに巨大です そのような巨大なコードベース上だと、簡単なbugfixでもPRを提出するまでにいくつかのroadblockに出くわすことがあります また、日語圏内でのRustの知名度も上がってきており、rustcにPR投げてみてぇ~という人もそれにつれて増加していることが予想できます しかし、上述した複雑さ、あるいは日語が使えない場でのコミュニケーションに対して奥手になり、したくてもできない状態がそこそこの頻度で発生していそうです この記事では、その後の貢献を促せるといいなあという意図のもと、とにかくはじめての貢献を手助けすることを主眼においてい

    rust-lang/rustへのcode contributionをはじめからていねいに
    rin51
    rin51 2020/12/11