Option.mapの中でResult型を返したい

業務でRustを書いている時に受けた質問を元に一記事書きます。 Rustを書いているとたまにイテレータのmapメソッドの中でResult型の値を返したい時があります。 例えば以下のようなコード fn i32_to_u16(x: Option<i32>) -> anyhow::Result<Option<u16>> { x.map(|x| x.try_int</option<u16></i32>…

Rust製のWebアプリケーションのトランザクション管理方法について

業務でRustでWebアプリケーションを書いています。 同然データベーストランザクションを扱っているのですが、トランザクションの管理方法が煩雑で不具合になったりしていました。 これについて解決方法を考えてみたのでブログ記事として残してみます。 前提 …

tmux利用時にPATHが重複する問題

普段ターミナルエミュレータを利用する際は必ずと言っていいほどtmuxを使っている。 複数のシェルを横に並べたりタブに分けられる上にショートカットで自在にカーソル移動が出来て便利。そんな便利なtmuxだが、利用時に環境変数PATHの値が一部重複しているこ…

RustでOSを自作する (1)カーネルの呼び出しまで

数年前に「30日ででできる! OS自作入門」を読みながらOSを作ったことがあった。 当時はふむふむと思い一通りOSができたことでOSを理解していたつもりになっていたが、 最近になって「OSよくわからん」みたいな気分に再びなってきた。 また当時はgitのような…

AtCoderでテストを簡単に行うツールを作成した

少し前から競技プログラミングに興味を持ち、AtCoderの過去問を解いている。 AtCoderの過去問は以下のサイトにまとめられている。 AtCoder Problems 解答プログラムのテストについて 解答プログラムができたらテストを行いたいと考える。 AtCoderのサイトで…

React+Express+Node.js+MongoDBでブログっぽい何かを作る (2)React編前半

前回はExpressでAPIサーバを作った。 itto-ki.hatenablog.com今回はReact+Reduxでフロントエンドを作っていく。 ただ、フロントエンドはやたらとコード量が増えたので、 ReactやReduxのtutorialを見れば分かるようなことには触れず、要点だけをまとめていく…

React+Express+Node.js+MongoDBでブログっぽい何かを作る (2)Express編

前回はDocker上で環境の構築を行った。 詳細は以下の記事の通り。 itto-ki.hatenablog.com今回はExpressフレームワークでAPIサーバを作っていく。 API設計 単純化のため、ユーザ認証機能などは省く。 記事一覧と単体の記事に関するAPIさえあれば良い。 よっ…

自宅ネットワークを見直した話

3月末に今の部屋に引っ越してきてから約3ヶ月が経つ。 それ以来、自宅のネットワーク構成は、ISPから貸与されたモデムルータに全ての機器をぶら下げているという面白みのない状態が続いていた。 このままではいけない、ちゃんとしたネットワークを組まねばと…

自宅ネットワーク内にハニーポット(T-Pot)をVMで構築する

「セキュリティ」という単語を見続けていたらハニーポットを構築したくなった。 T-Pot 手軽に構築できるハニーポット環境としてはT-Potが有名だろうということで、 これを用いてハニーポットを構築していく。 github.com 詳しくは他のブログ等を参照していた…

React+Express+Node.js+MongoDBでブログっぽい何かを作る (1)環境構築編

今までWebアプリケーションを作る時には、バックエンドであればDjango+Postgres+nginx(もしくはApache)、フロントエンドであればjQueryやその周辺を主に用いてきた。 しかし、そろそろ何か別のものを学習したくなってきたので、React + Express + Node.js + …

セグメンテーションでのメモリ管理について

IA-32 プロセッサには以下に挙げる2つの動作モードがある。 リアルモード 8086用に書かれたプログラムを実行するモード 16bitで動作する プロテクトモード メモリ管理やタスク管理、保護機能等の80386で拡張された機能を利用するためのモード 32bitで動作す…