---
# System prepended metadata

title: Homework 00
tags: [Homework]

---

# Homework 00

> 這份作業主要由國立臺北科技大學 109 資工系黃漢軒所命題，若有任何的問題，非常歡迎使用以下的聯絡方式提問：
>
> Email: t10950031@ntut.org.tw／MS Teams: 黃漢軒／Telegram: @xuan910625

⚠️ Due: 11:59 p.m., dd / MM / yyyy ⚠️

## 作業目標

這份作業主要希望你能夠熟悉以下的事項，以利於跟進未來課程的發展：

- [x] 【環境與工具】學習如何使用 Git。
- [x] 【環境與工具】學習如何操作 Jenkins 與 GitLab。
- [x] 【環境與工具】學習如何使用 CMake 來編譯與執行目前的專案 


## 檔案架構

請確認提交是否符合以下的檔案架構，否則無法進行評分。

```
<To Be Implement>
```

## 題目敘述

 > 嗨，歡迎參加 OOP 課程。
 > 
 > 想必你已經完成了第一週的課程，並已經瞭解這一門課環境相關的設施
 > （若還不了解的話，可以看一下第一週第一堂的簡報）
 > 
 > 期望你可以在這一個功課上更佳瞭解作業相關的環境，GL & HF！


給你一個「絕對會通過隱藏測試」的 Hello World 專案範本（在 `homework` 專案上）

請嘗試完成任務，並在 Jenkins 上拿到綠色的 Correct 勾勾。


## 任務敘述

### 任務 1：將專案從 GitLab 上複製

你可以使用 `git clone` 來將專案複製下來。

::: warning
當你使用 `git clone` 時，remote 會是 `homework` 的專案，所以你會需要進行更改。
:::

### 任務 2：將專案的 Remote 更改為自己的專案

考慮你已經有了專案內容，請將專案 Remote 進行修改。

你可以：

 - 使用 `git remote set-url <remote> <url>` 來設定某個 `remote` 的連結。
 - 使用 `git remote get-url <remote>` 來取得某個 `remote` 的連結。
 - 使用 `git remote add <remote> <url>` 來為專案加上某個 `remote`。

例如：`git remote set-url origin some_url`，可以將 `origin` 這個 remote 設上 `some_url`。

### 任務 3：編譯與運行專案

使用 CMake 來編譯，並運行 `./bin/ut_all` 來運行專案。

### 任務 4：推上分支

當你成功更改了專案的 Remote，你可以使用 `git push origin <branch_name>` 來推上分支。

例如：`git push origin master` 可以將當前的專案推上 `master` 分支。

若 origin 並沒有該分支時，GitLab 會幫你建立這個分支。

:::warning
為了可以評測，你必須要在專案上建立名為 master 或 main 的主分支。
:::

### 任務 5：得到 HW 專案的綠勾勾

為了要在 Jenkins 上得到 HW 專案的綠勾勾，你會需要做到：

 1. 通過自己寫的測試
 2. 專案上沒有 Memory Leak 的問題
 3. 專案上的 Test Coverage 大於 95%

Jenkins 會自動逐步幫你確認，若滿足了以上三項，則會給你一個綠色的勾勾。

為了能夠更加瞭解評測系統，請你逐步瞭解 Jenkins 是怎麼確認以上三點。


### 任務 6：得到 TA 專案的綠勾勾

為了要在 Jenkins 上得到 TA 專案的綠勾勾，你會需要做到：

 1. 通過助教寫的測試
 2. 專案上沒有 Memory Leak 的問題

Jenkins 會自動逐步幫你確認，若滿足了以上兩項，則會給你一個綠色的勾勾。

為了能夠更加瞭解評測系統，請你逐步瞭解 Jenkins 是怎麼確認以上兩點。


## 題目評分

 - [100 分] 取得兩個綠勾勾
     - 若在功課截止時依然沒有取得兩個綠勾勾，判定本次功課為 $0$ 分。


## 注意事項

 - 你不應該上傳 `/bin` 資料夾至專案上。
   - 你的功課不應該出現 Memory Leak，否則將會扣除作業總分 $10$ 分。
   - 你不應該上傳 `/bin` 資料夾至專案庫，編譯結果不應該上傳至專案庫上，若在助教確認功課評分時 `/bin` 資料夾存在在專案庫中，扣除作業總分 $5$ 分。


## 作業迷因

![](https://hackmd.io/_uploads/S1Wx2oKRn.png)