# 2020q3 專題: Faceboo"C"
## 目標
1. 理解網頁伺服器和其上的 Web 應用程式運作原理: [facebooc](https://github.com/jserv/facebooc)
2. 在 Raspberry Pi 4 執行 Faceboo"C" 並量化分析其效能
3. 撰寫自動測試的客戶端套件
4. [引入 epoll](https://github.com/jserv/facebooc/pull/27) 並改進程式碼的模組化
## Faceboo"C" 的實驗
> 下方共筆有對應的解說錄影
* [web server with CGI](https://paper.dropbox.com/doc/web-server-with-CGI--A_9cduQJiMDD9AdLHt88_HXrAg-jahbA8DSIuKRffMbxUljp)
* [Web server with cgi on linkit smart 7688](https://paper.dropbox.com/doc/Web-server-with-cgi-on-linkit-smart-7688--A_8OqNRrZcLOrpDUAIVp55LcAg-sU8wcCn47CmrGsY3gYob0)
## 自動登入/測試
* [curl](https://curl.se/docs/manpage.html)
* 撰寫測試腳本
* [clock_gettime](https://man7.org/linux/man-pages/man2/clock_gettime.2.html)
* 留意 concurrent access
* 目前是使用 select
* ab = Apache Bench
## 資料庫
* 使用 sqlite3
```shell
$ sqlite3 db.sqlite3
```
執行 `.dump` 命令 (注意前方有 `.`) 可印出目前資料庫內容
## MISC
編譯時期偵測 Linux
```cpp
#if defined(__linux__)
#elif defined(__APPLE_) /* macOS */
#endif
```
## 靜態分析
* [Clang Static Analyzer](https://clang-analyzer.llvm.org/)
---
* [Faceboo"C" - 事前準備](https://hackmd.io/@dalaoqi/rkXSAiljw)
* [Faceboo"C" - 正確性驗證](https://hackmd.io/@dalaoqi/HyZeMwjsw)
* [Faceboo"C" - web server & web application](https://hackmd.io/@dalaoqi/ByqOv5YaP)