# 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)