Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions homeworks/week1/hw1.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
## 交作業流程

- 先建立好本地的 Git
- fork 程式導師實驗計畫第五期課程這個 repository 到自己的頁面
- git clone到本地
- create 一個新的 branch,做一些 commit 修改內容,push 回去,然後去發起 pull request,讓自己建立的這條 branch 合併到原本的master去,沒問題之後助教或老師就讓它 merge 到 master 去,然後把自己 create 的這個 branch 給刪除
- fork 程式導師實驗計畫第五期課程這個 repository到自己的頁面
- git clone到本地
- create 一個新的 branch,做一些 commit 修改內容,push 回去,然後去發起 pull request,沒問題之後助教或老師就讓它 merge 到 master 去,然後把自己 create 的這個 branch 給刪除
12 changes: 12 additions & 0 deletions homeworks/week1/hw2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# 理解放鬆很重要

最近因為本身原本工作的關係比較忙,變成課程的部分整個進度落後,感到焦慮

平常偶爾會嘗試冥想或是在家裡陽台放空,要不然就是放下手機去外面散步

短暫放鬆之後在回想一下之前的問題,有時候的確會有突然想通的狀況

因為現在手機太方便,變成空閒時間也是不斷的在接收資訊,沒辦法達到真正的放鬆

之後每天要安排十分鐘進入停止接收資訊的狀態

27 changes: 27 additions & 0 deletions homeworks/week1/hw3.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,29 @@
## 教你朋友 CLI

CLI 的全名是 Command Line Interface,就是命令列介面,而平常電腦在使用所看到的視窗按鈕這些是 GIU,也就是Graphical User Interface,圖形使用者介面

CLI是使用指令跟電腦溝通的方式,利用指令讓電腦知道現在該做甚麼

如果是使用windows電腦的話,可以先去下載Git,裡面有內建一個Git Bash的功能,打開之後就可以用CLI的指令來操作電腦囉

一般比較常見的指令如下

- Print Working Directory - pwd 印出工作目錄,意思是我現在在哪裡
- List - ls 印出現在資料夾底下的檔案
- ls -al ls 後面留空格放上減號,後面可以加上參數,就可以秀出不同的格式,例如 -al 就可以秀出檔案的權限、擁有者、大小、最後修改日期、隱藏檔案
- -a 是印出名字是dot開始的檔案,通常是隱藏的檔案
- -l 是印出比較長的格式(大寫的L有不同的意思) 所以-al其實是兩個合著一起用
- Change Directory - cd 切換資料夾,可以跳到不同的資料夾裡面
- cd .. 跳到上一層
- touch 碰一下檔案,可以更改日期,如果碰的是不存在的檔案,那就會建立一個檔案
- mkdir 建立資料夾

所以如果h0w哥想要建立一個wifi的資料夾,裡面要有一個afu.js的檔案,那只要像下面這樣操作就可以惹

- 先打開Git Bash
- 輸入 cd desktop - 進入到桌面
- 輸入 rmkdir wifi - 建立一個wifi的資料夾
- 輸入 cd wifi - 進入wifi的資料夾
- 輸入 touch afu.js - 建立一個afu.js的檔案

以上,就可以達到h0w哥的目的囉!
80 changes: 80 additions & 0 deletions homeworks/week1/hw4.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,82 @@
## 跟你朋友介紹 Git

今天菜哥如果要幫笑話做版本控制,一開始的方法可能是建立一個資料夾,裡面會有很多個笑話的檔案,利用檔案的名稱來分門別類,笑話每進化成一個新的版本,可能就要在多建立一個檔案,像是諧音笑話 1、諧音笑話 1.1、諧音笑話 1.2......

而 Git 就是一個幫你做這些事情的程式,也就是版本控制,當你建立一個專案的時候,這個專案稱呼為 repository,一個倉庫的概念。

而 GitHub 這個網站,就是專門拿來放 repository 的地方,可以讓一群人來協同作業。

那今天在 windows 電腦上要使用 Git 的話,可以先去 Git 的官網下載程式,下載好之後進入 Git Bash,然後可以用下面的方式操作(假設要做一個諧音笑話的系列)

- 輸入 mkdir 笑話 - 建立一個笑話的資料夾
- 輸入 cd 笑話 - 進入笑話的資料夾
- 輸入 git init - 開始使用 git 版本控制
- 輸入 touch 諧音笑話 - 建立一個諧音笑話的檔案(假設其中一個系列是諧音笑話,如果有別的系列也可以新增別的檔案)
- 輸入 git add . - 把所有尚未加入版本控制的檔案給加入
- 然後去編輯好之後,就輸入 git commit XXX - 意思是把一個新的版本送出去,這樣就會留下紀錄,xxx 表示這一次 commit 的名稱

如果菜哥想要跟其他同好一起共同做這個笑話的專案,可以把這個 repository 給放到 GitHub 上面,這樣其他人也可以一起協同作業。

在 GitHub 上面的 repository 跟在自己電腦裡的 repository 可以視為兩個不同的 repository,它不是 Google 雲端硬碟,不會自己同步。

先到 GitHub 上面註冊帳號,創立一個新的 repository,然後依照指示到 Git Bash 上輸入下面三段的指令(我創立了 一個叫做笑話的 repository 當範例)

```
git remote add origin https://github.com/BenedictLin/笑話.git
git branch -M main
git push -u origin main
```

輸入完之後,就可以利用 push 跟 pull 功能,讓自己電腦裡的 repository 跟 GitHub 上的同步了。

**git push** - 可以把本地的 branch 推到 GitHub 上面,這樣才可以讓自己電腦跟 GitHub 上同步。

**git pull** - 可以把 GitHub 上面的 branch 給拉下來,讓 GitHub 上的 repository 跟自己電腦的 repository 同步。

branch 是分支的意思,今天如果有其他人要一起開發這個笑話專案,只要在自己的電腦裡面建立一個新的 branch,開發好之後在 push 回去,發起一個 pull request 的功能,討論之後沒甚麼問題,原本repository的管理者就可以把新的 branch 合併到原本的 branch 裡面了。

另外以下這些是常用到的指令,也可以記一下

- git status - 可以查看目前的狀態,有哪些檔案已經被加入版本控制了,那些還沒

- git log - 可以看到過去commit的紀錄,上面會有每個commit的編號

- git checkout - 可以切換到特定 commit 的版本,也可以切換到不同的 branch

- git diff - 在 commit 之前,可以看到這次和上次之間改過什麼

- git branch XXX - 可以建立一個新的分支,XXX是分支的名稱

- **git branch -v** 可以看到目前有哪些branch、branch最後一個commit的訊息和版本號

- git branch -d XXX - 可以刪除名為XXX的分支

- **git clone** 可以從GitHub上複製別人的repository。在GitHub的網站上面,可以直接用點的複製下來(↓ code的綠色按紐),或是複製網址,在command line上面打 git clone XXXXXXX(剛剛那個網址),就可以把這個repository給抓下來,也可以進行修改然後commit,因為是在自己電腦裡面操作,但是如果要push回去,就會被拒絕,因為需要權限。

可以把本地的repository跟遠端的repository視為兩個不同的repository,只是可以利用push跟pull讓它們同步。

那如果真的很想改又想保存在GitHub上,可以在GitHub的網站上,用fork按紐,把它fork到自己的帳號上。

備註:git clone是完整複製別人的檔案,通常用在第一次,未來要更新的時候,通常都是用git pull

- **git commit --amend** 可以修改最近一個commit的commit message

- **git checkout – 檔案名稱** 如果你更動了一個檔案,還沒commit,但是你不想要改過的內容了,可以用這個指令回到改變之前。

如果是打 git checkout – . 這樣就是把所有還沒commit的檔案都回到改過之前的狀態。

備註:checkout 和–之間有空格,–和檔案名稱之間也要有空格

- **git merge** 合併分支**進來**溜,git merge XXX(branch-name)

假設現在有兩個branch,master和new-feature

如果我現在在master這條branch裡面,我打git merge new-feature,那new-feature就會合併到master裡面,改變的是master,而不是new-feature,不然我合併完還要git checkout到new-feature去看,這樣不合理

- **conflict** 這個不是可以輸入的指令,而是當git在合併兩個branch,發現有兩個檔案很相似,但是有地方不同的時候,會跳出這個提示,那只要進入檔案去看,會顯示出衝突的地方(你在現在的branch的檔案是長這樣,被merge進來的檔案是長這樣),那只要手動去更改完之後在commit即可解決

- **git hook** 發生某事情的時候通知我,像是有人commit的時候,或是有人push的時候之類,可以想成鉤子勾在一個東西上面,當它有變動的時候鉤子就會動,像釣魚一樣。

git init之後,會出現一個.git的資料夾,裡面就有一個叫做hooks的資料夾,下面很多sample檔,通常是用來設置一些規範,如果違反規範就不讓你commit或是push之類,規範可能像是不能在程式碼裡面改某些東西,或是輸入甚麼東西之類,這樣的好處是讓自己和協作者不用每次都自己手動去檢查。

- **git reset HEAD^** 可以回到commit之前,後面如果加上–hard,表示你要回到這個檔案更動之前,所以你改的東西全都會不見,如果是加上–soft,那就只是回到commit之前,改動的部分還是在,如果都不加東西在後面其實就是預設–soft,這其實也比較常用,因為通常只是小地方沒改到而已,不太需要整個都取消
19 changes: 18 additions & 1 deletion homeworks/week1/hw5.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,25 @@
## 請解釋後端與前端的差異。

前端一般就是我們可以直接看見的東西,像是打開Google首頁看到的畫面,而後端是看不到的。

前端是呈現出來的畫面,而後端則是資料庫與伺服器。

## 假設我今天去 Google 首頁搜尋框打上:JavaScript 並且按下 Enter,請說出從這一刻開始到我看到搜尋結果為止發生在背後的事情。

前端一般就是我們可以直接看見的東西,像是打開Google首頁看到的畫面,而後端是看不到的。

今天在 Google 首頁打上 JavaScript 並且按下 Enter,瀏覽器就會發出一個 request 給 Server,而 Server 會向資料庫去搜尋你所要找的資料,然後資料庫會將搜尋結果傳回去給Server,Server 再把 response 回傳給前端,呈現出你要搜尋的資料。



## 請列舉出 3 個「課程沒有提到」的 command line 指令並且說明功用

**whoami** 可以印出使用者名稱

**explorer .** 打開目前所在資料夾的視窗

**date** 印出日期

**less** 後面加上檔案名稱,可以分頁式的看檔案內容

## 請列舉出 3 個「課程沒有提到」的 command line 指令並且說明功用
**restore** 把變更過,但是尚未加入staged的檔案給回到變更之前