The Modern C++ Challenge 第12章

The Modern C++ Challenge 第11章 の続きです。

今回は第12章に挑戦します。

まずは目次を読む。

第12章 ネットワーキングとサービス

95 ホストの IP アドレスを見つける
96 クライアントサーバー Fizz-Buzz
97 ビットコインの為替レート
98 IMAP を使用したメールの取得
99 テキストを任意の言語に翻訳する
100 写真から顔を検出する

問題文を読む。

問95 ホストの IP アドレスを見つける

ホストの IPv4 アドレスを取得して出力できるプログラムを作成します。 複数のアドレスが見つかった場合は、それらすべてを印刷する必要があります。

ソースコードを斜め読みして実行する。 この章は外部ライブラリを使っていて、 すんなり実行できなかった。

問95 問96 にて asio ライブラリを使っている。

問97 問98 にて curlcpp ライブラリを使っている。 ビルドして共有ライブラリ( libcurlcpp.a) を作成する。

bppst asio

github curlcpp

問95 問9a にて マイクロソフトのインターネットサービスを使っている。
API Key が必要です。
面倒なので 今回はパスする。

Microsoftt Text Translation

Microsoftt Face API

問98 にて Gmail を使っている。
パスワード認証で接続している。
以前はパスワード認証が使えたが、 現在は OAuth認証だけになっている。

Google: 安全性の低いアプリと Google アカウント

今回は自前でIMAP サーバーを建てて プログラムを実行する。

参考 : ubuntuでIMAPサーバ構築

一通り実行できたので、
Modern C++ に着目して、ソースコードを読んでみる。

問99 にて std::make_unique を使っている。

cpprefjp: std::make_unique

問100 Face Detection (画像から顔を検出する) です。

マイクロソフトの代わりに Google のインターネットサービスを使ってみる。

Google Face Detection

ネットワーキングという設問の主旨とは異なるが、 OpenCV の顔検出の機能を紹介する。

OpenCV Cascade Classifier

第12章 のソースコードGithub に公開した。
https://github.com/ohwada/The-Modern-Cpp-Challenge/tree/main/The-Modern-Cpp-Challenge/Chapter12