RustでBase64処理プログラム Rust言語でBase64処理プログラムを書いてみた。Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。 ウィキペディア"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"これらの64文字を使ってバイナリデータを表現する。ちなみに"Rust"文字列はBase64で"UnVzdA=="と表される。24bit毎のデータを6bit単位で分割して4文字で表現するので、データが24bitに満たない場合は'='文字で残りを埋めて4文字単位に調整する。 ITTech RUST
Rust言語のlet-else制御構文を試す Rust 1.65から使えるようになったlet else 制御文を試してみた。Rust言語には、他の言語ではあまり見かけないようなif-let-elseのような便利な制御構文があるが、更にlet elseが追加された。The Rust RFC Bookにはlet-elseはrefutable(反駁可能)なlet文だと説明してる。let PATTERN: TYPE = EXPRESSION else DIVERGING_BLOCK;実際のコードでやってみる。 /// Key number… RUST ITTech/Rust 画像生成AI Stable Diffusion rust-stable-diffusion
キタキツネは非同期で居眠り中(Rustの非同期処理) Rustの非同期処理のサンプル。キタキツネは5秒間居眠りしてますが、この間でも別の処理を待たずに実行できます。 RUST ITTech/Rust 横浜の夜 非同期処理 async
難しくないRustで画像表示そして画像認識(Rust+PyTorch) Rust言語は難しいと思われているが、実際使ってみると実用的な優れた言語だと思う。初心者殺しに会わないように、簡単にWindows表示ができて、描画、画像表示、画像認識ができるプログラムを紹介する。RustでWindowを作成して、画像表示、描画をしたい、キーボードやマウスも操作したいとなると、標準のimage クレートではそこまでできない。そこで適当なクレートを探そうとしても、多すぎて見つけるのが困難だ。そういう人にこの記事が参考になると嬉しい。show-imageクレートを使うと、Window作成とキーボード操作が簡単になる。分かりやすいように、エラー処理は省いている。プログラムは以下の様な感じになる。 use show_image::{ImageView, ImageInfo, create_window}; #[show_image::main] fn main() -> Result<(), Box<dyn std::error::Error>> { // 事前にpixel_dataに画像をロードする let image = ImageView::new(ImageInfo::rgb8(1920,… pytorch RUST 機械学習 ITTech/Rust show-image
Rust 2021 EditionでWebアプリケーション Rust 2021 Edition(Version 1.56.0) が公開された。今回、この最新版でRust 2018 Editionで開発したWebアプリケーション(横浜の夜)を再ビルドして試してみた。動作環境はUbuntu 20.04 x86_64。 RUST Webアプリ ITTech/Rust Rust 2021 Edition 横浜の夜
Rust + Actix-Web + Handlebars + MysqlでWebアプリケーションの開発 Rust言語でWebアプリケーションを開発してみた。WebクレートにはActix-web、template-engineはHandlebars、データベースにはmysql(diesel経由)を利用した。アプリの内容はフリースタイルのブログサイトのようなもので、名称/分類の2階層のページ指定で自由にMyページを作成して、DBに記録できる。ドラえもんの風呂敷みたいなもので、なんでも入れて使える。例えばタイトルページの"夜は千の眼を持つ。昼飲みは桜木町で"のメッセージは横浜/XXXX ページに投稿した内容をランダムに表示したものです。SNS、社内コミュニケーションツール、ブログ、TODOリスト、日記、連絡帳、備忘録、メモ帳、終活ノートなど色んな利用法がある。使い方はシンプルで、例えば山田さんがブログページを作りたい場合は、山田/ブログ とページを入力するだけで、あとはこのページに記事をどんどん投稿するとページが蓄積されます。データベースと連動しているので、投稿された記事の内容は記録されて、データベースに保存されます。日記帳の場合は山田/日記帳 でOKです。名称/分類 は任意ですので、誰でも、なんでもフレキシブルに使えます。 以下の例は横浜/居酒屋 がテーマです。 ITTech RUST Webアプリ Actix Handlebars diesel mysql ITTech/Rust 横浜の夜
RustとWebAssemblyでマンデルブロー・ナビゲータ Rust言語のwasm(WebAssembly)を使ってJulia集合と姉妹関係のマンデルブロー集合のナビゲーターを作ってみた。今まで色んなプログラム言語でマンデルブロー・ナビゲータを開発したが、今回はどうかな。Front処理はjavascriptで、高速、安全性を求める処理部分はRustで開発してwasmでバインデイングする。最新のMozillaのFirefoxブラウザはこの手法で、再開発されてるらしい。どうりでレスポンスが良くなったと思った。Rust解説本を元に、マンデルブロー集合を描画するサイトの記事があったのでこれを参考にした。残念ながらこの記事の内容ではマンデルブロー集合の全体を静的にモノクロ画像で表示するだけだったので、カラー画像表示で、マウスクリックした点を中心にマンデルブロー集合を自在にズームインできるように、プログラムを書き換えた。カラーパレット用のクレイトを新規に追加作成して、マウスのクリック操作でインタラクテイブにナビゲートできるようにした。マンデルブローの画像表示は、いままでのカラーパレットの経験を活かした。 やはりマンデルブロー集合は色が命です。 ブラウザー上のrenderボタンをクリックすると、全体表示に戻り、マウスのクリックでズームインを繰り返す。レスポンスもかなりいいので、暇つぶしの楽しみになる。繰り返しズームインしていくと、全体像の相似形のようなものが現れます。 Mozillaの最新版FirefoxとGoogleのChromeブラウザで動作を確認したが、Firefoxの方がレスポンスが高速だった。Rust言語の解説本も色々でてるので、そのうち読んでみようかな。 ITTech google RUST WebAssembly マンデルブロー wasm Mozilla Firefox Chrome javascript ITTech/Rust
Rust言語で機械学習、PyTorchそして日本語BERT Rustプログラミング言語でPyTorchを使って日本語BERTを試してみた。GPU(CUDA)が使用できるようにした。機械学習ではPythonインタープリター言語などが人気があるが、長年、C++などのコンパイラー言語を使ってきた人にはPythonに限界を感じることもあるだろう、かく言う私もだが。Rustではどうかな。 ITTech/AI pytorch 日本語BERT RUST 機械学習 ITTech/Rust