RUST勉強中、7/3の積み上げ

逆ポーランド記法計算機にanyhowクレートを実装していきます。

use anyhow::{bail, ensure, Context, Result};

use clap::Parser;
use std::fs::File;
use std::io::{stdin, BufRead, BufReader};

struct RpnCalculator(bool);

impl RpnCalculator {
    pub fn new(verbose: bool) -> Self {
        Self(verbose)
    }

    pub fn eval(&self, formula: &str) -> Result<i32> {
        let mut tokens = formula.split_whitespace().rev().collect::<Vec<_>>();
        self.eval_inner(&mut tokens)
    }

    fn eval_inner(&self, tokens: &mut Vec<&str>) -> Result<i32> {
        let mut stack = Vec::new();
        let mut pos = 0;

        while let Some(token) = tokens.pop() {
            pos += 1;

            if let Ok(x) = token.parse::<i32>() {
                stack.push(x);
            } else {
                let y = stack.pop().context(format!("invalid syntax at {}", pos))?;
                let x = stack.pop().context(format!("invalid syntax at {}", pos))?;
                let res = match token {
                    "+" => x + y,
                    "-" => x - y,
                    "*" => x * y,
                    "/" => x / y,
                    "%" => x % y,
                    _ => bail!("invalid token at {}", pos),
                };
                stack.push(res);
            }

            if self.0 {
                println!("{:?} {:?}", tokens, stack);
            }
        }

        ensure!(stack.len() == 1, "invalid synyax");

        Ok(stack[0])
    }
}

#[derive(Parser, Debug)]
#[clap(
    name = "My RPM program",
    version = "1.0.0",
    author = "Your name",
    about = "Super awesome sample RPM calculator"
)]
struct Opts {
    #[clap(short, long)]
    verbose: bool,

    #[clap(name = "FILE")]
    formula_file: Option<String>,
}


fn main() -> Result<()> {
    let opts = Opts::parse();

    if let Some(path) = opts.formula_file {
        // ファイルから読み出す
        let f = File::open(path)?;
        let reader = BufReader::new(f);
        run(reader, opts.verbose)
    } else {
        // 標準入力から読み出す
        let stdin = stdin();
        let reader = stdin.lock();
        run(reader, opts.verbose)
    }
}

fn run<R: BufRead>(reader: R, verbose: bool) -> Result<()> {
    let calc = RpnCalculator::new(verbose);

    for line in reader.lines() {
        let line = line?;
        match calc.eval(&line) {
            Ok(answer) => println!("{}", answer),
            Err(e) => eprintln!("{:#?}", e),
        }
    }

    Ok(())
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_ok() {
        let calc = RpnCalculator::new(false);
        assert_eq!(calc.eval("5"), 5);
        assert_eq!(calc.eval("50"), 50);
        assert_eq!(calc.eval("-50"), -50);

        assert_eq!(calc.eval("2 3 +"), 5);
        assert_eq!(calc.eval("2 3 *"), 6);
        assert_eq!(calc.eval("2 3 -"), -1);
        assert_eq!(calc.eval("2 3 /"), 0);
        assert_eq!(calc.eval("2 3 %"), 2);
    }

    #[test]
    #[should_panic]
    fn test_ng() {
        let calc = RpnCalculator::new(false);
        assert!(calc.eval("").is_err());
        assert!(calc.eval("1 1 1 +").is_err());
        assert!(calc.eval("+ 1 1").is_err());
    }
}

ITニュース(07/04)

iPhone 日本の販売価格値上げ 世界的にみた割安感強まり背景か – nhk.or.jp

アップルが、国内で販売するiPhoneなどの価格を値上げしました。背景には、急速に進む円安によって世界的にみて日本での販…

Macにウイルス対策は不要?「これだけはやっておきたい」6つのセキュリティ設定 – PC Watch

「Macはウイルスに強いコンピュータだ」とよく言われますが、それは本当でしょうか。本記事では、現行のMacに搭載されているセキュリティ機能の中から、主にウイルスやインターネットセキュリティ関連の機能について見ていきます。また、たとえMacがウイルスに強いとはいえ、現代はユーザーのセキュリティ対策なしに安全は担保できません。すべてのMacユーザーが最低限しておきたいセキュリティ設定についても解説します。なお、記事中では、コンピュータやユーザーに害を与える悪意のあるプログラムの総称として「マルウェア」という言葉を用い…

【最新版】おすすめChromebook 9選。デタッチャブル/コンバーチブル/クラムシェルの3種でピックアップ – PC Watch

Windows、Macに続く第三の選択肢として着実に普及が進むChromebook。最近ではWindowsノートに匹敵するハイスペックなモデルに加えて、指紋認証やLTEといった機能を搭載するなどラインナップも充実しつつある。

メガソーラー曲がり角 相次ぐ規制条例、撤退事業者も(写真=共同) – 日本経済新聞

再生可能エネルギーの代表格だったメガソーラー(大規模太陽光発電所)が曲がり角を迎えている。岡山県美作市は全国初の太陽光パネルを対象とする「事業用発電パネル税」条例を制定。施行に向けて事業者と協議する。設置規制の条例は全国で少なくとも195。売電価格低迷に規制強化が重なり、撤退する事業者も出始めた。メガソーラーは発電出力1メガ(メガは100万)ワット以上の太陽光発電所をさす。2011年の東日本大

KDDI通信障害で宅配ドライバー「地図見られず配達が中断」歩合制のため収入減に(2022年7月3日) – ANNnewsCH

大規模な通信障害が続いているKDDIは、3日午後6時、全てのエリアで復旧作業を完了したと発表しました。最大で3915万回線に影響が及んだ今回の通信障害。補償の問題も浮上しています▽KDDI通信障害 スマホ使えず「公衆電話」に(KDDI 高橋誠社長)「お客様には多大なご迷惑をおかけいたしましたことを深くおわび申し上…

電力不足解消のヒントは“街に眠る資源”に?再生エネルギー最前線「バイオマス発電」(2022年7月3日) – ANNnewsCH

猛烈な暑さは、一旦落ち着きそうですが、政府による「節電要請」は9月末まで続きます。日本の抱えるエネルギー問題を少しでも解消するため、身近なところから電気を作り出す取り組みが行われています。▽電力不足の切り札!?街に眠るエネルギーゴミからエネルギーを作り出す その先進地が愛知県豊橋市です。生ゴミが生み出す経済的な効…

【速報】全面復旧は4日以降か auなど大規模通信障害からもうすぐ丸2日 | TBS NEWS DIG – TBS NEWS DIG Powered by JNN

auなどの携帯サービスで大規模な通信障害が発生してからもうすぐ丸2日となりますが、KDDIへの取材によりますと、全面復旧のめどは依然立っておらず4日以降にずれ込む可能性が高いということです。KDDIは、3日午後1…

au通信障害、県内でも影響 対応に不満を口にする人も|秋田魁新報電子版 – 秋田魁新報電子版

KDDI(au)の長引く通信障害を受け、秋田県内でも各消防本部が交流サイト(SNS)などで119番がつながりにくい場合は、固定電話や公衆電話を利用するよう呼びかけた。auショップを訪れ、状況を確認す…

KDDI障害最大3915万回線 復旧作業終了も通信制限 | 共同通信 – 共同通信

KDDI(au)の高橋誠社長は3日、大規模な通信障害について東京都内で記者会見し、影響は携帯電話の利…

通信障害から40時間…完全復旧はまだ KDDI高橋社長「深く反省」auで大規模通信障害 | TBS NEWS DIG – TBS NEWS DIG Powered by JNN

auなどの携帯サービスで大規模な通信障害が発生して、まもなく40時間です。KDDIは、午後5時半には復旧作業を終了する予定としていますが、サービスの完全復旧にはしばらくかかる見通しです。KDDI 高橋誠社長「お…

公衆電話、KDDI通信障害で注目も過去1年間で「利用せず」7割超 – 産経ニュース

KDDI(au)の大規模な通信障害で公衆電話が注目を集めた。インターネット上では「公衆電話のありがたみを感じた」といった意見も見られたが、公衆電話の設置数は年…

プライムデーのおトク度をUPする方法、ぜんぶまとめて教えます【もうすぐAmazonプライムデー】 – GIZMODO JAPAN

まもなくAmazonプライムデー。事前準備をしっかりしておくことで、Amazonプライムデーはさらにおトクになるって、知ってました? ここでは、それらの賢いお買い物Tipsを紹介していくので参考にしてください。

スマホの角度UP! 姿勢をサポートしてくれるモフモフなスマホリング – GIZMODO JAPAN

猫のようなモフモフのスマホリング「猫-ring NYANTO(ニャント)」が登場。特許取得の仕組みを使用した新しいスマホリングで、手や首の負担を軽減して、姿勢改善もサポートします。吸着素材なので何度でも取り外し可能。

米FCC、TikTok削除をAppleとGoogleに要請 – すまほん!! – すまほん!!

TikTokは、中国の巨大企業であるByteDanceが中国国内で提供する「抖音」の海外版であり、その安全性が度々問題となってきましたが、アメリカではその動きが再発したようです。CNNが報じたところによると、アメリカの連邦通信委員会(FCC)のコミッショナーであるBrendan …

ゲーム機やスマホにも。超軽量13gのUSBハブ「miniDOCK」のお得な先行販売が終了間近 – GIZMODO JAPAN

「miniDock」はわずか13gの中にHDMI、PD100W対応のUSB Type-C、USB Type-A端子の必要最低限を備えた極小USB Type-Cハブ。映像は4K60Hzまで対応しNintendo SwitchやノートPC、タブレットと一緒に持ち出すのにも最適なアイテムです。今回は実際に使ってみたレポートをお届けします。

高レベル放射性廃液冷却設備が約8時間停止 青森の再処理工場 – nhk.or.jp

青森県六ヶ所村にある使用済み核燃料の再処理工場で2日、高レベルの放射性廃液を冷却する設備がおよそ8時間停止するトラブルが…

【格安スマホまとめ】KDDI大規模障害でMVNOや楽天にも影響 障害対策にデュアルSIMが注目を集める? – ASCII.jp

KDDIが大規模障害でUQ mobile、povoを始め、au網を用いるMVNOや楽天モバイルにも影響。障害対策に異なるネットワークのSIMを持つことが注目を集めそう? また、SEや12を含む、iPhoneの値上げも話題になった。

ノキアから8インチ小型サイズで5,100mAhのAndroidタブレット登場か – デイリーガジェット

ノキアから、新型の8インチ片手サイズAndroidタブレットが登場するかもしれません。mysmartpriceによると、FCCの認証サイトで同社のTA-1462というモデル番号の機種が登録され、8インチディスプレイと5,100mAhバッテリ

キーボードだけでサクサク使える電卓アプリ「Calctus」レビュー、変数を用いた複雑な計算も可能 – GIGAZINE(ギガジン)

Windowsには電卓アプリが標準インストールされていますが、標準電卓アプリはマウスやタッチでの操作に最適化されており、「キーボードから手を離さずに使いたい」というシチュエーションには向いていません。シャポコ氏が開発している電卓アプリ「Calctus」ならキーボードだけで四則演算したり、平方根を求めたり、変数を用いた複雑な計算を実行したりできるとのことなので、実際に使ってみました。

経済ニュース(07/04)

iPhone 日本の販売価格値上げ 世界的にみた割安感強まり背景か – nhk.or.jp

アップルが、国内で販売するiPhoneなどの価格を値上げしました。背景には、急速に進む円安によって世界的にみて日本での販…

本格化する「値上げ」2万品目の食品が対象に 値上げカレンダーも登場 – M&A Online

7月以降値上が本格化する。食品をはじめ日用品、交通費、光熱費、火災保険など多岐に渡っており、中でも食品は年間2万品目に及ぶ見込みで、正に値上げラッシュの様相を呈している。

児童手当「年収1200万円」は廃止に「パワーカップル」共働き世帯の場合はもらえるかどうか – Yahoo!ファイナンス

2022年12月に児童手当が見直され、年収が1200万円程度以上の場合は、特例給付が廃止されることになっています。気になるのは、共働き世帯の場合「年収1200万円は夫婦合算か」ということではないでしょうか。…

テスラ販売減速・特養の「医療」にメス・猛暑日9日連続 – 日本経済新聞

一時的な現象でしょうか。自動車市場で存在感を高めるテスラの2022年4~6月世界販売台数は前年同期比27%増の25万4695台にとどまりました。年間目標である50%超の伸び率を大きく下回っています。中国・上海市が新型コロナウィルス封じ込めに向けロックダウン(都市封鎖)を実施。同市郊外にあるテスラの電気自動車(EV)工場の操業停止を余儀なくされたためです。世界の各社がテスラ対抗車を投入し始めるなか

役員賞与に社員の働きがい反映 パナソニックHD系 – 日本経済新聞

パナソニックホールディングス(HD)の自動車部品を手掛ける子会社、パナソニックオートモーティブシステムズ(PAS)は従業員約6千人のエンゲージメント(働きがい)が大きく改善すると、執行役員の年間賞与が増える制度を導入する。働きがいが悪化すると賞与は減る。経営幹部に働きがいを強く意識させ、従業員満足度の向上や業績改善につなげる。2023年3月期から導入し、23年夏からの支給分で適用する。年間賞与

KDDI通信障害で宅配ドライバー「地図見られず配達が中断」歩合制のため収入減に(2022年7月3日) – ANNnewsCH

大規模な通信障害が続いているKDDIは、3日午後6時、全てのエリアで復旧作業を完了したと発表しました。最大で3915万回線に影響が及んだ今回の通信障害。補償の問題も浮上しています▽KDDI通信障害 スマホ使えず「公衆電話」に(KDDI 高橋誠社長)「お客様には多大なご迷惑をおかけいたしましたことを深くおわび申し上…

なにげないドアの開閉が大迷惑! 車中泊キャンパーがやってはいけないNG行為5選(Auto Messe Web) | 自動車情報サイト【新車・中古車】 – carview! – carview!

キャンプブーム禍で一気に高まった車中泊キャンプの功罪 新型コロナウイルスが猛威を振るい、不要不急の外出を控えることが当たり前となり、夜の歓楽街や混雑するアミューズメントパークへと足を向けることが「悪」とされてから久しい。その“言い訳“として…

なぜ楽観主義者は長生きなのか?どうすれば楽観主義者になれる? – GIGAZINE(ギガジン)

これまで行われてきた複数の研究により、楽観主義者は長生きなことが分かっています。そこで、一体なぜ楽観主義者だと長生きなのかや、生まれついての楽観主義者ではない人でも楽観主義者と同じ健康メリットを得る方法について、専門家が解説しました。

最新のノア/ヴォク・ステップワゴン? それとも熟成のセレナか? 商品力と納期で考えるミニバン選び – 自動車情報誌「ベストカー」 – ベストカーWeb

人気の高いボックスタイプミニバン。納期遅延の影響を受けるホンダ ステップワゴンやトヨタ ノア/ヴォクシーを尻目に販売台数を増やしているのがモデル末期の日産 セレナだ。そこで3車の商品力や納期などを元に、それぞれの魅力を比較する。

公衆電話、KDDI通信障害で注目も過去1年間で「利用せず」7割超 – 産経ニュース

KDDI(au)の大規模な通信障害で公衆電話が注目を集めた。インターネット上では「公衆電話のありがたみを感じた」といった意見も見られたが、公衆電話の設置数は年…

ファンド主導のそごう・西武売却交渉 提示額2000億円超 – 日本経済新聞

セブン&アイ・ホールディングス(HD)傘下で百貨店を展開するそごう・西武の売却を巡って、投資ファンドの米フォートレス・インベストメント・グループが優先交渉権を得た。過去には同業同士の合従連衡で再編が進んできた百貨店業界。ファンド主導で進むそごう・西武の売却交渉は、百貨店という事業の厳しい状況も浮き彫りにしている。そごう・西武の売却を巡っては、投資ファンドの米ローンスターとシンガポール政

「悪魔」の父、いじめにあった10代 イーロン・マスクとは何者か – 朝日新聞デジタル

電気自動車(EV)の世界最大手テスラや宇宙ビジネス「スペースX」など多くの斬新な事業を手がけ、米ツイッターの買収や型破りな言動で注目を集めるイーロン・マスク氏。1億人超のフォロワーを持つ「世界一の富…

プライムデーのおトク度をUPする方法、ぜんぶまとめて教えます【もうすぐAmazonプライムデー】 – GIZMODO JAPAN

まもなくAmazonプライムデー。事前準備をしっかりしておくことで、Amazonプライムデーはさらにおトクになるって、知ってました? ここでは、それらの賢いお買い物Tipsを紹介していくので参考にしてください。

USBメモリー紛失業者、30年以上の「ベンダー・ロックイン」 – 読売新聞オンライン

兵庫県尼崎市の全市民の個人情報が入ったUSBメモリーが一時紛失した問題で、情報システム会社「 BIPROGY(ビプロジー) 」(旧日本ユニシス)が、市の住民情報を管理するシステムを開発し、30年以上関連業務を受託してい

電力逼迫で太陽光発電の危うさ露呈 供給力は天候次第、夕方には低下 – 産経ニュース

東京電力管内に電力需給逼迫注意報が出されてから3日で1週間。経済産業省は6月30日、火力発電所の再開など供給力が積み増しされたとして注意報を解除した。電力需要…

ステルス機みたいなカーボン製フレームの未来的なeバイク「SPECTER 1」。最高時速は45km! – GIZMODO JAPAN

ベルギーにて、フル・カーボンファイバー製で重さ19.8kgの電動アシスト自転車「SPECTER 1」が作られました。空気抵抗を考慮したデザインなので、パっと見た印象はまるでステルス戦闘機「F-117」。700Wのモーターで最高時速が45kmと、電アシなのに爆速です。

米FCC、TikTok削除をAppleとGoogleに要請 – すまほん!! – すまほん!!

TikTokは、中国の巨大企業であるByteDanceが中国国内で提供する「抖音」の海外版であり、その安全性が度々問題となってきましたが、アメリカではその動きが再発したようです。CNNが報じたところによると、アメリカの連邦通信委員会(FCC)のコミッショナーであるBrendan …

“山手線”に残る2つの「開かずの踏切」遠い解消 打つ手なし? さらに深刻化の可能性も – 乗りものニュース

「山手線最後の踏切」は向こう10年以内にもなくなることが決まっていますが、山手線内にはまだ、踏切が残っています。しかも、かなり深刻な「開かずの踏切」と化しているものの、打つ手なしという状態です。

高卒女性が銀行の取締役に 結婚機に辞めるつもりが…自転車で営業へ:朝日新聞デジタル – 朝日新聞デジタル

■高知銀行・三宮晶子さん(65) 地元高知銀行の取締役に就任して7年。金融庁によれば、最終学歴が高校卒の女性で取締役になったのは銀行業界で初という。 入行して手形の交換業務に就いた。結婚や出産で退職す…

高レベル放射性廃液冷却設備が約8時間停止 青森の再処理工場 – nhk.or.jp

青森県六ヶ所村にある使用済み核燃料の再処理工場で2日、高レベルの放射性廃液を冷却する設備がおよそ8時間停止するトラブルが…