タグ

rustに関するdelegateのブックマーク (175)

  • Rust でバイナリを配布する

    これは天久保 Advent Calendar 2022 二日目の記事です。明日は休日なのでやすみです。 記事は全部 GNU/Linux においての話で、ELF 実行可能形式のファイルのことを指してバイナリと呼びます。 Rust で書いたプログラムをビルドして配布したいことがあるでしょう。サーバーアプリケーションなどとなればコンテナイメージを配布するのがまっとうに思えますが、コマンドラインアプリケーションとなると実行の手軽さや起動オーバーヘッドへの配慮からやはりバイナリを配布する必要が出てくると思います。一方で Rust でビルドしたバイナリは[1]システムの glibc に動的リンクされており、可搬性が低い可能性があります。つまり、ビルドした環境より glibc のバージョンが低い環境でそのバイナリは動かない可能性があるということです。実例を見てみましょう。下のプログラム[2]は Deb

    Rust でバイナリを配布する
  • Rustで始めるWebアプリケーション

    RustでWebアプリケーションを開発する際に基礎となる要素技術からRustの応用まで、Rustに関するあれこれを解説する連載。第3回は、Rust製の高速データ分析ライブラリであるPolarsの速度を簡易的に検証し、考察する。

    Rustで始めるWebアプリケーション
  • Rustで気軽にWebSocketサーバを作ったら意外と大変だった件 - クソ雑魚エンジニアのメモ帳

    概要 この記事はRustその2 Advent Calendar 2019の16日目です。17日に若干時間はみ出ていますが気にせずいきましょう() 誰? Rustは今年の夏ぐらいから興味持ってちょこちょこやってる morifuji です。actix-webちょこっと触ったりとかスクレイピングで遊んだりぐらいしかないです。実務未経験の初心者です。(下記のスライドはこの前のLTで発表した内容です) speakerdeck.com やりたいこと ブラウザーのgetDisplay というAPIを最近ちょこちょこ見て、WebRTCと組み合わせたらオモシロソウダナーと思ったので、Rustで気軽にWebSocketサーバを作ってみようかと思ったのでした。 NodejsのSocket.ioがとても有名ですが、Rustにも ws-rsというライブラリがあったので勉強がてらに使ってみました。 やりたいこととし

    Rustで気軽にWebSocketサーバを作ったら意外と大変だった件 - クソ雑魚エンジニアのメモ帳
  • GoとRust - 並行プログラミング編

    はじめに こんにちはnasaちゃんです。 goroutine何も分からん!async/await何も分からん!となったのでそれぞれを比較しつつ理解を深めてみよう。という考えのもとGo, Rustの並行プログラミングの解説記事を書いてみました。 ところどころふわっとしているため、補足や指摘を貰えると大変助かります。 今回話すこと goroutineとは結局何なの Goの並行処理の仕組み goroutine(Go)とasync/await(Rust)の比較 Goのランタイム、Rustのランタイムの話 話さないこと 構文の違いについては特に触れない どちらが優れているとい言う話はしない ベースになっている思想については特に触れない TL;DR Goには標準のランタイムがあるよ、Rustではランタイムライブラリを使う必要があるよ Goはランタイムが中断再開を管理するよ、Rustではプログラマーが管

    GoとRust - 並行プログラミング編
  • GoとRust - 並行処理編

    GoRustの変更処理を比較することで両者を深く理解する試みです。 詳しい内容やスライドでは省いたところをブログに書きました https://zenn.dev/nasa/articles/compare_rust_go_concurrency

    GoとRust - 並行処理編
  • 「Rustでやると知らないうちに詰む設計」を避けるためのTipsを集めてみる

    とりあえず、よく言われてるやつから埋めていこうと思う。 構造体にライフタイムを持たせない 構造体にライフタイムを持たせるのは「基的に」避けよ、というのが重要なのは間違いないのだけど、これをもう少し実践的な内容にしたい。ちょっと考えてみたけど、こういうのはどうだろうか。 ある関数呼び出しの中でしか絶対に使わない。returnするまでにその構造体のデータは全て破棄される。static変数に退避させることもできない。アロケーションもその関数が面倒を見る。そういう一蓮托生できる関数呼び出しに心当たりはあるか? ある→ 構造体にライフタイムを持たせてもよい。 ない→ ライフタイム禁止。 そう考えてみると、DIとかReduxとかとも通じるところがあるかもしれない。「つべこべ言ってないで全部の責務を一番外側に持っていく」という決断ができるときは構造体ライフタイムが選択肢に入る。

    「Rustでやると知らないうちに詰む設計」を避けるためのTipsを集めてみる
  • 『手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた』を読みました - Don't Repeat Yourself

    先日発売になった『手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた』を、一通り目を通していました。感想を記しておきます。なお感想は、例のごとく全体に軽く目を通して、いくつかサンプルプログラムを写経してみた程度の上でのものです。あらかじめご了承ください。 手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた 作者:クジラ飛行机ソシムAmazon Python から Rust に入門するという切り口 最近はRustが多く出版され始めており、読むよりも買うほうがだんだん多くなってきてしまっています。とくに単なる言語の入門にとどまらず、さまざまな切り口から解説するが増え始めているように思います。書もそのひとつで、Python から Rust に入門しようという非常に特異な切り口の一冊です。 Python から Rust という切り口は、多少なりと

    『手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた』を読みました - Don't Repeat Yourself
  • システムプログラミングが得意なRustを学ぶなら今!『詳解Rustプログラミング』発売

    Rustは2006年に開発がスタートし、Mozillaが開発を支援。近年では開発者向けのQ&Aサイト「スタック・オーバーフロー」でも好きな言語ランキングで人気を博しています。 システムプログラミングに適した言語であり、CやC++からの移行を考えている方もいるのではないでしょうか。 『詳解Rustプログラミング』ではRustの基礎や独自機能だけでなく、システムプログラミングのノウハウについても解説されています。 【書で取り上げるジャンル】 ・メモリ操作 ・ファイルとストレージ ・ネットワーク ・時間管理 ・プロセスとスレッド ・カーネル ・割り込みと例外処理 Rustをしっかり学びたいとき、読み通すことで確かな知識を得られる1冊となっています。 目次 第1章:はじめに 第1部:Rust言語の独自機能 第2章:言語の基礎 第3章:複合データ型 第4章:ライフタイムと所有権と借用 第2部:シス

    システムプログラミングが得意なRustを学ぶなら今!『詳解Rustプログラミング』発売
  • Rustのメモリ管理機能とその特徴

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

  • Rustでサイトを再実装

    このサイト r7kamura.com の実装言語をRubyからRustに変えてみた。 アプリケーションの概観 このサイトには、大別すると次の6種類のルーティングパターンがある。 GET / トップページ GET /articles/:article_id 記事ページ GET /feed.xml RSSフィード GET /links リンク集 GET /sitemap.txt サイトマップ (Google Search Console等が利用する) GET /* その他の静的ファイル (CSSや画像など) Rubyの実装では、適当なRackアプリケーション + rack-captureという構成で、Webアプリケーションとして実装しつつGitHub Pagesのために静的ファイルも吐き出せるという仕組みになっていた。 Rustの実装もほぼ同じで、適当なHTTPサーバー + 適当なHTTPクラ

    Rustでサイトを再実装
  • 『Zero To Production In Rust』を読んでいる

    初学者用のRustの教材として、RustでWebアプリケーションのサーバーサイド側をつくる一連のチュートリアル記事、『Zero To Production In Rust』を読んでみている。 https://www.lpalmieri.com/posts/2020-05-24-zero-to-production-0-foreword/ 一気に読んでいるかのような雰囲気でさらりと書いているが、仕事と遊びの合間に少しずつ、数日に1章程度の速度でゆっくり読み進めている。 問題駆動型の学習方法が嬉しい 知らない知識を複数同時に与えると学習効率が悪くなりがちなので、ある程度基礎部分を学んだら、少し難易度の高い領域であっても、自分の馴染みのある分野でどう使うかという話を例に学んでいく方が良いと考えている。今回の自分のケースの場合、Webアプリケーション開発という題目がそれにあたる。分からないところが

    『Zero To Production In Rust』を読んでいる
  • なぜわざわざ学習コストを払ってまでRustを採用するのか? Webエンジニア目線でRustを考察

    なぜわざわざ学習コストを払ってまでRustを採用するのか? Webエンジニア目線でRustを考察:WebエンジニアからみたRust(1) Web開発者としての興味、関心に基づきRustを端的に紹介し、その強みや弱みについて理解を深める連載。第1回では、Rustを採用するモチベーションとは何かを整理、考察します。 Rustへの関心の高まり 近年、プログラミング言語「Rust」に関する重要なニュースを多く見るようになりました。例えば以下のような記事です。 Androidの開発へ「Rust」を導入、なぜなのか Microsoft、「Rust for Windows v0.9」を公開 実装言語を「Go」から「Rust」に変更、ゲーマー向けチャットアプリ「Discord」の課題とは これらの記事が指し示すことは、いわゆる「GAFAM」(GoogleAmazon.com、Facebook、Appl

    なぜわざわざ学習コストを払ってまでRustを採用するのか? Webエンジニア目線でRustを考察
  • Rustでドメイン固有型を作る際のコツ

    ドメイン固有型である、ドメインオブジェクトをRustで実装する際のコツみたいなものを簡単にまとめました。まぁ「ドメイン固有型」というと大袈裟なので、「独自に型を作る」を想定してもらえばよいと思います。OOPに慣れている人がハマりやすい点も簡単に言及しています。ご参考までに。 アドレス帳型を作る アドレス帳型を例にします。 先にコードを以下に示します。コード全体はGitHubリポジトリを参照してください。 #[derive(Debug, Clone)] pub struct AddressBook { name: String, entries: Vec<AddressEntry>, } impl Default for AddressBook { fn default() -> Self { Self { name: String::default(), entries: Vec::def

    Rustでドメイン固有型を作る際のコツ
  • [全部無料]最小限で理解しつつ作るELF parser入門 in Rust

    誰も書いていなさそうだったので. Linux OSで標準採用されているexecutable formatのELFを理解するために, Rustでnom(parser combintor)を使いながらサクッとELF parserを実装します. かなり初歩的なことから話すので,前提知識はほぼ必要ないと思います. 有料にしている理由も特にないので, 最終の空ページのみ有料にしています.

    [全部無料]最小限で理解しつつ作るELF parser入門 in Rust
  • Pure Rustな近似最近傍探索ライブラリhoraを用いた画像検索を実装する - Stimulator

    - はじめに - 記事は、近似最近傍探索(ANN: Approximate Nearest Neighbor)による画像検索をRustを用いて実装した際のメモである。 画像からの特徴量抽出にTensorFlow Rust bindings、ANNのインデックス管理にRustライブラリであるhoraを利用した。 RustとANNの現状および、実装について触れる。 - はじめに - - RustとANN - - pretrainモデルによる特徴量化 - - 画像特徴のインデックスと検索 - - 検索結果 - - おわりに - - RustとANN - Rust機械学習関連クレート、事例をまとめたリポジトリがある。 github.com この中でも、ANN関連のクレートは充実している。利用する場合は以下のようなクレートが候補になる。 * Enet4/faiss-rs * lerouxrgd/

    Pure Rustな近似最近傍探索ライブラリhoraを用いた画像検索を実装する - Stimulator
  • Rust で Web バックエンド開発をはじめる | CyberAgent Developers Blog

    こんにちは。サイバーエージェント AI 事業部 Dynalyst にて、ソフトウェアエンジニアをしている豊田(@helloyuki_)です。また、Rust 領域における Next Experts も務めています。 先日、CA BASE NEXT という CyberAgent が開催する20代が中心のカンファレンス[^1]に、私も一応20代ということで登壇させていただきました。 内容は Web アプリケーション開発を Rust で行った体験談を語るというものでした。実際に2018年〜2020年頃に Rust をとあるチームのアプリケーションに導入し、引き継ぎのために何をしたかという内容をお話させていただきました。 セッション自体は25分しかなく、またコード例をスライドからかなり削るなど、CG スタジオ仕様への対応が必要でした。というわけで、十分に伝えたいことを盛り込めたわけではありませんで

    Rust で Web バックエンド開発をはじめる | CyberAgent Developers Blog
  • 「ゼロからのOS自作入門」を Rust でやる (第1章~第4章) - gifnksmの雑多なメモ

    ゼロからのOS自作入門 を 一通り写経 したところ、 Rust に移植したくなったのでやっていきます。 次回: 「ゼロからのOS自作入門」を Rust でやる (第5章) - gifnksmの雑多なメモ 関連記事一覧: ゼロからのOS自作入門 カテゴリーの記事一覧 - gifnksmの雑多なメモ github.com Rust で OS なので名前は "錆OS" です。安直です。 "sabios" でざっとググったところ、スペイン語で "賢い" って意味があるようです。 良いですね。 クレバーな実装を目指したいところです。 方針 「ゼロからのOS自作入門」の章立てに沿って1章から順番に実装していきます。 C++ で一通り写経は完了しているので完成形の OS と関係ない節はスキップしていきます。 せっかく Rust で実装するので安全性や抽象化という点で MikanOS との差異を出せたら良

    「ゼロからのOS自作入門」を Rust でやる (第1章~第4章) - gifnksmの雑多なメモ
  • RustなしでLayerX Labsの開発は語れない - LayerX エンジニアブログ

    はじめに こんにちは。LayerX Labs(以下、Labs)エンジニアのきむ(@jkcomment)です。秘匿化モジュール「Anonify」の開発や大手金融機関や行政等との実証実験に携わっています。 Labsの開発はRustからはじめ、Rustで終わる tech.layerx.co.jp 先日、恩田(さいぺ)の方からAnonifyとRustについての話をしましたが、Rustは速度・安全性・効率的な並行性を特徴とし、C,C++と同等な性能を発揮しつつ、システムプログラミングに適した言語です。Anonifyはハードウェアレベルの機密性を実現するために Trusted Execution Environment (TEE) の一種であるIntel SGXを活用しています。Intel SGXはIntelのCPUが提供しているメモリ上に「Enclave」と呼ばれるハードウェア的に厳重に保護された領

    RustなしでLayerX Labsの開発は語れない - LayerX エンジニアブログ
  • Rust の最初のステップ - Training

    利用が広がり人気が高まっている新しいプログラミング言語の習得に関心がありますか? ここから始めましょう。 Rust で高速で効果的なプログラムを構築するために必要な知識の基盤を築きましょう。 このラーニング パスの内容は次のとおりです。 Rust コードの最初の行を記述するために必要なツールをインストールする。 Rust の基的な概念を学ぶ。 エラーを処理する方法を学ぶ。 Rust でメモリを管理する。 ジェネリック型と特性を使用する。 パッケージとクレート用のモジュールを設定する。 自動テストを記述して実行する。 コマンドライン プログラムを作成する。

  • Writing a storage engine in Rust: Writing a persistent BTree (Part 1)

    As part of a recent personal journey to better understand databases and better learn Rust, I have recently took on the project of writing a simple key-value storage engine. Crazy, right? Lets get started! B-Trees vs LSM TreesThe first thing one must think of when writing a key-value storage engine is -”How should I store my data so that I can perform reads and writes efficiently?”; The two most co

    Writing a storage engine in Rust: Writing a persistent BTree (Part 1)