Ubuntuでxournalを使ってPDFを編集する

PDFを編集するためにMacを使ったり高額なソフトを購入する必要はなかったのだ。いろいろなアプリを試したけど、特段これが使いにくいということはなく、慣れてしまえば普通に使える。

sudo apt install xournal

ちょっとした書類を記入する時わざわざ直筆するのはあほらしくてキーボードで打ち込みたかったのがこのアプリケーションに出会った経緯です。

ちなみに、PDFを編集することを共通化できないものかと思う。Adobeのクラウドあるみたいだけどとても高額だし、クラウドと言っている割にLinux上で動かない(2019/11/19現在)のが悲しかった。

参考

https://qiita.com/3attoC/items/b5a52d3980104b6e0145

「どうせやるなら楽しんでやったほうがいい」という言葉

昔とても辛い労働をしていた時に

「どうせやるなら楽しんでやったほうがいいだろ?」

と言われたことがあるんだけど、楽しくないことはどこまで行っても楽しめない。

私はそれから転職して子供の頃から憧れていた仕事に就くことができたけど、それも10年経てば好きでもなくなってくる。でももともと好きだったから、好きな気持ちを思い出したり、新たな発見があったら楽しんで仕事ができる時がある。

でも元から大嫌いな仕事は、毎日続けてたらもっと嫌いになるだけじゃないかな。(嫌いだったけどやってみたら好きになったケースは別。)

Rustで`enumerate`を使って何回目のループかを確認しながら回す

enumerateってのがあるみたいです

fn main() {
    let lines = vec![1, 2, 3].into_iter();

    for (linenumber, line) in lines.enumerate() {
        println!("{}: {}", linenumber, line);
    }
}

回すとこんな風になります

$ cargo run
   Compiling iter v0.1.0 (/home/user/dev/test/rust/iter)
    Finished dev [unoptimized + debuginfo] target(s) in 0.24s
     Running `target/debug/iter`
0: 1
1: 2
2: 3

スマホ壊れたら地獄の苦しみを味わった

スマホが壊れたら

  • 壊れたら修理すればいい保険入ってるし
  • ちょっとくらいスマホなくても大丈夫でしょ
  • その時考えれば十分

なんて思ってたけど、そんなことなかった。

  • スマホがないことでどこにも出かけられないし
  • 電子マネーで買い物もできないし
  • ちょっとした空いた時間に情報収集することもできない。
  • 仕事の連絡を受けることもできないし
  • SNSも確認できない

まとめると生きていられない。

1万円弱のサブ機を買った

  • スマホなんてちょっと遅くても我慢できるでしょ
  • 最悪テザリングにしてiPad miniで接続すればいいでしょ

って思ったけどそんなことなかった。遅いことでとてつもないストレスを感じたしGoogle Mapとかも動かなかった。iPad miniを使えば確かに高速だけど、ポケットに入らないからカバンの中に入っていて出先で簡単には開けないし。

最強のスマホが絶対いる

格安とかだとだめ。やっぱり最強のスマホがいる。10万くらいするやつ。それくらいの価値がやっぱりスマホにはあるなと体感した。

かといって10万近くのスマホを使わないのにとりあえず持っておくってのは無茶な話ですな。

で、調べてみたらレンタルスマホってのがあるみたいです。使ったことないですけど、下手なもの買うよりこういうの使ったほうがいいかもですね。

おわり

もしレンタルが微妙でもいいものを一度買って、使い終わったら売るとか、そういうことしてでもスマホを持っていない期間ってのはなくしたほうが良かったです。スマホのありがたみとスマホになにかあった時の保険をかけておくべきだと思いましたまる。

RustでCursorをread_to_endを経由して文字列に変換する

まずサンプル用に文字列をバイトに変換してCursorを生成しました。

Cursorの中身を読み込むにはread_to_endを使う方法を知りました。read_to_endではバイトを取り出せるので、取り出したあとに、String::from_utf8()を使って文字列に戻すみたいです。(他の方法もあるので後日追記。)

use std::io::Read;

fn main() {
    let string = "example";

    let mut cursor = std::io::Cursor::new(string.as_bytes());
    let mut out = Vec::new();

    assert!(cursor.read_to_end(&mut out).is_ok());

    assert_eq!(
        format!("{}", String::from_utf8(out.to_vec()).unwrap()),
        string
    );
}

参考