---
# System prepended metadata

title: 專案建立流程
tags: [Programming Notes]

---

# Reverence
 - chatGPT3.5
 - https://learn.microsoft.com/zh-tw/windows/terminal/tutorials/ssh
 - https://learn.microsoft.com/zh-tw/windows-server/administration/openssh/openssh_install_firstuse?tabs=powershell#connect-to-openssh-server
 - https://learn.microsoft.com/zh-tw/windows-server-essentials/manage/manage-user-accounts-in-windows-server-essentials


在開始新專案時，以下是一些通用的步驟和最佳實踐，有助於組織和管理您的代碼。
全部都是GPT3.5說的，我還沒自己查，因為我一直忘，所以記在這邊。

# 1. 創建專案資料夾
開啟終端
```bash
windows+R
```
```bash
cmd
```
在終端中，移動到您的目標位置並創建資料夾

```bash
cd path/to/parent/folder
mkdir your_project_name
```

# 2. 使用 VS Code

打開 Visual Studio Code，然後通過 `File -> Open Folder` 選擇您創建的專案資料夾。或在終端機中執行以下命令（請確保您已經將 Visual Studio Code 添加到系統的環境變數中，這樣 `code` 命令才能在 CMD 中被識別。如果您在安裝 Visual Studio Code 時選擇了 "Add to PATH" 選項。）

```bash
cd your_project_name
code
   ```
打開終端機 panel
```bash
ctrl+J
```

# 3. 初始化 Git 存儲庫

在專案資料夾中執行以下命令，這會初始化一個新的 Git 存儲庫：

```bash
git init
```

# 4. 使用虛擬環境
```
使用虛擬環境（Virtual Environment）有多個好處，特別是在開發軟體時。以下是一些常見的優勢：
1. 隔離依賴關係： 虛擬環境允許您在專案之間隔離依賴關係。每個專案可以有自己的虛擬環境，這樣就不會發生依賴版本衝突的問題。這特別對大型專案和同時進行多個專案開發的情況很有幫助。
2. 版本管理： 虛擬環境使您能夠指定特定的套件版本，從而確保您的應用程式在不同環境中運行時依賴的是相同版本的套件。這有助於減少由於套件更新而引起的不一致性問題。
3. 清理： 虛擬環境讓您能夠在不影響系統全局環境的情況下安裝和卸載套件。這使得在專案結束或不再需要時能夠輕鬆地清理環境。
4. 測試環境： 對於測試，虛擬環境是非常有用的。您可以在虛擬環境中安裝測試所需的依賴，並確保這些依賴不會影響全局環境。
5. 跨平台支援： 由於虛擬環境是專案本地的，因此它可以輕鬆地在不同操作系統上運行，確保了跨平台支援。
6. 環境重建： 如果您需要與他人共享代碼，虛擬環境的配置文件（如 `requirements.txt` 或 `Pipfile`）允許其他人快速構建相同的環境，確保一致的開發環境。
7. 簡化部署： 將虛擬環境與持續集成/持續部署（CI/CD）系統結合使用，可以確保在不同階段的部署中使用相同的套件版本。
總的來說，使用虛擬環境可以提高代碼的可移植性、可維護性，並減少由於不同環境配置帶來的問題。
```

在專案資料夾中執行以下命令，這會創建一個虛擬環境：

```bash
python -m venv venv
```

或者，如果您使用的是 Python 3.x：

```bash
python3 -m venv venv
```

然後（每次都要）　啟動虛擬環境：

- 在 Windows 中：

  ```bash
  .\venv\Scripts\activate
  ```

- 在 macOS/Linux 中：

  ```bash
  source venv/bin/activate
  ```

啟動虛擬環境後，您將在命令提示字元前看到虛擬環境的名稱。

# 5. 創建項目文檔

## requirements.txt

在專案根目錄中創建一個 `requirements.txt` 文件，例如：

```plaintext
Flask==2.0.1
requests==2.26.0
```

## .editorconfig 文件
這裡提到的是 [EditorConfig](https://editorconfig.org/) 文件，它是一種用於定義和維護代碼風格的配置文件。通常，當多個開發者協同工作時，他們可能使用不同的文本編輯器或集成開發環境 (IDE)，這導致代碼在不同的編輯器中顯示可能不一致。

EditorConfig 文件的目標是確保在不同的編輯器中使用相同的基本代碼風格設置，從而提高代碼的一致性。
```plaintext
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true

# Matches multiple files with brace expansion notation
# Set default charset
[*.{js,py}]
charset = utf-8

# 4 space indentation
[*.py]
indent_style = space
indent_size = 4

# Tab indentation (no size specified)
[Makefile]
indent_style = tab

# Indentation override for all JS under lib directory
[lib/**.js]
indent_style = space
indent_size = 2

# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2
```

- `root = true`：這表示這是最頂層的 EditorConfig 文件，它將應用於整個專案。在整個專案中只能有一個 `root = true`。

- `[*]`：意味著這是一個通用的設定，這指定了這些設置將應用於所有文件。

- `end_of_line = lf`：這指定使用 Unix 樣式的換行符（LF）。

- `insert_final_newline = true`：這表示在文件的末尾插入一個空行。

## README.md

在專案中創建一個 `README.md` 文件，例如：

```markdown
# Your Project Name

This is a brief description of your project.

## Installation

- Step 1: Clone the repository
  ```bash
  git clone https://github.com/your-username/your_project_name.git
  ```

- Step 2: Install dependencies
  ```bash
  pip install -r requirements.txt
  ```

...



### License 文件
（可以用github用）　

是一個用於定義程式碼授權條款的文檔。這個文檔規定了其他人在使用、修改和分發您的程式碼時應該遵循的規則和條件。在這裡，我們使用了MIT許可證作為範例，讓我們來解釋一下：

```plaintext
MIT License
```

這一行指定了這個文件的類型是MIT許可證。

MIT許可證是一種寬鬆的開源軟體許可證，允許其他人以自由的方式使用、修改和分發您的程式碼。接下來的部分通常包括條款和條件的具體說明。

在MIT許可證的例子中，通常會有類似以下的條款：

```plaintext
MIT License

版權所有（版權擁有者的名字）

...

無論在本軟體和相關文檔（以下簡稱「軟體」）中的任何人，都可以無限制地進行本軟體的使用、複製、修改、合併、發布、發布的副本、出售及/或出售的軟體的副本，並允許軟體提供給本軟體的用戶提供軟體的使用或其他交易，條件是：

上述版權聲明和本條款聲明應包含在本軟體的所有副本或實質性部分中。

軟體是「按原樣」提供的，不提供任何形式的明示或暗示的保證，包括但不限於對適銷性、特定目的的適用性和非侵權的保證。在任何情況下，作者或版權擁有者將對任何索賠、損害賠償或其他責任，無論是因合同、侵權行為還是其他原因而起，概不負責，軟體或使用軟體或其他交易中的其他行為。

...
```

這是MIT許可證的簡化版本，它大致聲明：

- **任何人都可以使用、修改和分發這個軟體。**
- **提供的軟體是「按原樣」提供的，沒有任何形式的保證。**
- **作者或版權擁有者不對使用軟體而產生的任何損害負責。**

將這樣的許可證添加到您的項目中，明確指定了其他人使用您的程式碼的權利和責任。當其他人使用您的軟體時，他們知道他們可以以特定的方式使用它，同時也知道使用它的風險。

請注意，不同的開源許可證有不同的條款，規定使用和分發程式碼的方式。選擇適合您項目需求的許可證是重要的。

# 6. 設定 Git 忽略文件

在專案根目錄中創建一個 `.gitignore` 文件，例如：

```plaintext
# Virtual Environment
venv/

# Byte-compiled / optimized / DLL files
__pycache__/
*.pyc
*.pyo
*.pyd

# Compiled Python files
*.pyc
__pycache__/

# VS Code directory
.vscode/
```

# 7. 配置文件（如 settings.json）

如果您的專案需要某些配置，例如應用程式的設置、環境變數、連接數據庫的信息等，您可以創建一個配置文件。對於某些開發工具，例如 Visual Studio Code，您可以使用 `settings.json` 文件來配置編輯器的行為。這裡以一個簡單的例子為例：

```json
{
  "python.linting.pylintEnabled": true,
  "editor.tabSize": 4
}
```

# 8. 測試文件

如果您實行測試驅動開發（TDD）或希望在專案中包含單元測試，則可以創建一個或多個測試文件夾，並在其中添加測試文件。例如，您可以在專案根目錄中創建一個 `tests` 文件夾，然後在其中添加測試文件。

# 9. 編譯配置（例如 Makefile）

如果您的專案需要進行

編譯或其他自動化任務，您可以創建一個編譯配置文件，例如 `Makefile`，以便輕鬆執行這些任務。以下是一個簡單的例子：

```make
build:
    python build_script.py

clean:
    rm -rf build/
```

# 10. Dockerfile

如果您計劃使用 Docker 容器來部署您的應用，您可以創建一個 `Dockerfile` 來定義應用的容器環境。這是一個簡單的例子：

```dockerfile
FROM python:3.8

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "app.py"]
```

這些例子只是基本示範，您可以根據您的具體需求和專案類型進行修改。


# 補充

打開 Source Control 連結 github （我只想用按ㄉ）
```bash
ctrl+shift+G
```
按 `Publish Branch`


## IDE（集成開發環境）

是一種軟體應用程序，旨在提供一個統一的界面，集成了各種開發工具，以便開發者可以更輕鬆地編寫、測試和除錯軟體。IDE通常包括以下主要功能：

1. **程式碼編輯器：** 提供編輯程式碼的界面，具有語法突顯、自動完成和程式碼導航等功能。

2. **編譯器/解釋器：** 允許開發者將其程式碼轉換為機器碼或解釋並執行。

3. **除錯器：** 提供除錯工具，允許開發者在代碼中找到和解決錯誤。

4. **版本控制：** 整合版本控制系統，如Git，以便開發者可以管理代碼的版本。

5. **構建工具：** 提供構建和自動化工具，用於構建、測試和部署應用程序。

6. **項目管理：** 允許開發者組織和管理其專案中的文件、資源和依賴項。

7. **GUI設計工具：** 對於GUI應用程序，IDE通常包括可視化的GUI設計工具。

8. **性能分析工具：** 允許開發者分析其應用程序的性能，以找到並解決性能問題。

一些流行的IDE包括：

- **Visual Studio：** 由Microsoft開發，支援多種語言，包括C++、C#、Visual Basic等。

- **Eclipse：** 一個開源的IDE，支援多種語言，包括Java、C++、Python等。

- **IntelliJ IDEA：** 面向Java開發的IDE，由JetBrains公司開發。

- **PyCharm：** 面向Python開發的IDE，也由JetBrains公司開發。

- **Xcode：** 面向iOS和macOS開發的IDE，由Apple公司提供。

- **Android Studio：** 面向Android應用程序開發的IDE，也由JetBrains公司開發。

選擇IDE通常取決於開發者的偏好和他們正在開發的項目的要求。

