スキップしてメイン コンテンツに移動

投稿

2月, 2019の投稿を表示しています

Rust でテキストファイルのインデントを整形

インデントが不揃いなテキストファイルを整形したくなったので Rust コードを書いたお話。 いつかまた使えそうだけど保管するのが面倒なので、ここに放流しておく。 use std::fs::File; use std::io::{BufReader, BufRead, BufWriter, Write}; fn main() { // ファイル読み込み let file = File::open("input.md").unwrap(); let mut reader = BufReader::new(file); // 出力ファイルの確保 let file = File::create("output.md").unwrap(); let mut writer = BufWriter::new(file); // メインループ (各行ごとに処理) loop { // 一行ずつ読み出す let mut buf = String::new(); let num_bytes = reader.read_line(&mut buf).unwrap(); if num_bytes == 0 { // EOF に到達したらループを抜ける break; } else { // そうでないとき, 整形してファイルに書き出す. let output = format_text( buf ); writer.write(output.as_bytes()).unwrap(); } } } // 先頭が " " のとき 4 文字インデントに整形して返し, // そうでなければ入力を返す関数. fn format_text( buf: String ) -> String { if buf.chars().next() == Some(' ') { format!(&

Python 3.7.2 のソースビルド

Debian 9.7 2019-02-04 依存パッケージの導入 build-essential は当然として sudo apt install libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev libgdbm-dev libbz2-dev liblzma-dev zlib1g-dev uuid-dev libffi-dev libdb-dev tk-dev コンパイル ユーザー環境に pip つきでインストールする例. ./configure --prefix=/home/name/.local --with-ensurepip --enable-optimizations make -j4 make altinstall ただし手元の WSL 環境ではなぜかいくつかのテスト (signal 等) が終了しない (ファイアウォールのせいかと思うけれども切っても失敗した) ので, その場合フル最適化は諦めて --with-lto でリンク時の最適化だけ行う.