2019年4月16日 星期二

組員名單


組長:仝允丞 40623150
組員:簡稜雅 40623107
組員:廖彥霖 40623147
組員:黃盟泰 40623137
組員:黃子軒 40623136
組員:陳霖      40623155
組員:林國蓁 40423122
組員:蔡憲佳 40423249

網路故障排除

遇到學校伺服器IP掛掉問題
Step1.關閉網路第四版協定

打開IPV6
修改內容設定,打開DNS並輸入
2001:b000:168::1

修改proxy內容
[2001:288:6004:17::4]

完成修改後便能上網


Portable Python(.ssh)

進入mde.tw,進入2019 網際內容管理課程示範網,點入portable python
開始進入本次的編輯教學網頁:

-------------------------------------------------------------------------------------------------------------
使用
git config --edit --system
跳出此畫面

往下移動,使用按鍵"J"到最底下

連按兩次d鍵,刪除此行
接著按下Esc > 輸入 :wq   (儲存剛剛所刪之動作)
接著於Y:tmp下輸入"sh"會跑出下圖:

接著於scite貼上
ssh-keygen -t rsa -b 4096 -C "This is my key"
修改""內註解

修改後貼上

查看y:home底下是否有.ssh資料夾
若沒有就使用
mkdir .ssh
以用來建立資料夾

接著就持續Enter以建立key

後續到
Y:\home\.ssh
查看是否有無建立成功

使用scite打開"id_rsa.pub",把內容key複製起來
開啟github>登入個人帳號>setting>SSH and GPG keys>新增KEY

接著輸入下圖步驟:

完成後會出現

教師示範影片

可攜程式懶人包

課堂上老師釋出可攜系統懶人包於課程網站
課程網站連結:https://2019wcm.blogspot.com/
懶人包版可攜系統:請點此

導入ungit


1.下載 kmol_2019.7z, 接著再下載 nodejs_with_ungit.7z :

圖片來源:點此觀看
2.將 nodejs 放入 kmol_2019 的 data 目錄中:

3.設定啟動 start.bat 中的 ungit 命列列搜尋路徑(start_cadlab.bat同樣):
路徑指令:set path8=%Disk%:\nodejs;%Disk%:\nodejs\appdata\roaming\npm;

*此在"SciTE"程式編撰

4.將 path8 納入 path 設定:

5.設定 USERPROFILE 環境變數
路徑指令:set USERPROFILE=%Disk%:\home

6.關閉重啟查看是否ungit指令可否使用:

導入影片:https://www.youtube.com/watch?v=lB-spECfhr8
詳細步驟網頁:https://2019wcm.blogspot.com/2019/03/ungit.html


-------------------------------------------------------------------------------------------------------------
*首推時發現錯誤bug,問題如下:

查詢錯誤後發現是有一個檔案名叫"index.lock"去擋到上學期所學的版本推法。
2019.03.11解決辦法:
移除"Y:\tmp\ag6\.git"內的"index.lock"檔

但不知道此阻擋的檔案是否是為了讓我們利用ungit去推送、編輯網頁,此有待下次上課詢問老師,但當下解決辦法便為移除此檔。
參考網址:請點此

建立隨身系統

建立隨身系統

藉由隨身系統,以了解隨身系統(P37)運作方式,
學習系統的操作使用與設定,打造所需的隨身系統環境。

新增資料夾

建立一個資料夾
已用後續創建data資料夾來連結Y槽內容

SciTE使用

安裝SciTE檔案至剛才所創立的data資料夾中
使用windos的 full download版本
下載 SciTE程式::https://www.scintilla.org/SciTEDownload.html
開啟SciTE>設定檔案內容

使用Ctr+F找到"code.page"並改為下圖所示


安裝Python入可攜系統

1.安裝時點選自定義安裝

2.勾取所需功能選擇

3.設定安裝路徑

4.利用"HxD二位元編輯器軟體"
設定 > C:\p37\Scripts\pip.exe
使用Ctr+F功能找尋C:\p37並改為Y:\p37\
如下圖紅字處

更改完成後將p37資料移至data資料夾

start.bat製作

利用安裝的SciTE製作start.bat檔案

stop.bat製作

start.bat製作
利用安裝的SciTE製作stop.bat檔案

差異比對

在製作過程中想要快速了解兩個檔案之間的差異,
可以使用Kdiff3程式來快速比對出不一樣的地方。

2019年4月15日 星期一

Git Book L1-5重點整理

電子書

Git pdf手冊
線上觀看手冊
https://git-scm.com/book/zh-tw/v2

開始

版本控制系統


利用RCS指令可控制任一版本資料,其工作原理是在硬碟上保存一堆特殊格式的補丁集合,通過套用功能,便可以重新產生出每個版本的檔案內容。
Git控制方法分成集中化與分散式版本控制系統
集中化版本控制系統

好處:
1.清楚了解分組內各成員所做進度
2.管理員統一控制所有開發者權限
3.各用戶端統一使用統一版本系統,好管理
壞處:
1.中央伺服器發生故障,各開發者便無法協同合作
2.統一集中資料會有遺失資料風險
分散式版本控制系統

因集中化控制的不便,進而衍化出分散式控制系統

優點:
1.任一協同伺服器故障,事後都能以任一用戶端鏡像還原
2.能與許多遠端倉儲互動,使不同地方群組能在不一樣的地方完成同一專案協同合作
3.階層式的分工合作

-------------------------------------------------------------------------------------------------------------
Git完整性

1.Git 中所有的物件在儲存前都會被計算校驗碼(checksum)並以校驗碼參照物件。
2.計算較驗碼機制稱為 SHA-1 雜湊演算法。 一個校驗碼是由 40 個 16 進位的字母(0–9 和 a–f)所組成,Git 會根據檔案的內容和資料夾的結構來計算。
3. Git 的資料庫內,每個檔案都是用其內容的校驗碼來儲存,而不是使用檔名。
Git狀態
1.已提交(committed):
檔案己安全地存在你的本地端資料庫。
2.已修改(modified):
檔案已被修改但尚未提交到本地端資料庫。
3.已預存(staged):
已預存代表這檔案將會被存到下次你提交的快照中。


Git工作流程
1.你在你工作目錄修改檔案。
2.預存檔案,將檔案的快照新增到預存區。
3.做提交的動作,這會讓存在預存區的檔案快照永久地儲存在 Git 目錄中。

Git基礎

取得倉儲
命令格式:git clone [url]
1.https://
2.git://
3.user@server:path/to/repo.git

檢查檔案狀態
命令格式:git status
用來偵測哪些檔案處在什麼樣的狀態下的主要工具
使用git status -s 或 git status --short會得到一種較精簡的修改

新增檔案
命令格式:git add.
用以追蹤新的檔案、預存檔案使用
提交修改
命令格式:git commit
預備提交本次變更使用
移除檔案
命令格式:git rm
從預存區中移除已追蹤檔案
變更檔案
命令格式:git mv file_from file_to
於 Git 中重新命名一個檔案
復原檔案
命令格式:git commit --amend
復原上一個提交內容
推送檔案
命令格式:git push
完成近端內容,推回上游
新增別名
命令格式:git config
替指令設定別名
標籤
命令格式:git tag
用此功能來標出發行版本
檢視遠端
命令格式:git remote
檢視已設定的遠端版本庫, 列出每個遠端版本庫的「簡稱」

使用Git分支

用於
  1. 開發一個網站。
  2. 建立一個分支以實現一個新故事。
  3. 在這個分支上進行開發。
用於分支(branch)與合併(merge)工作流程
建立分支
使用指令:git branch
此會在目前提交上新建一個指標

切換分支

使用指令:git checkout
切換到一個已經存在的分支

分支歷史

使用指令:git log
查出提交歷史,顯示分支指標所在與歷史如何被分離開來。

伺服器上的Git

通訊協定種類:
Local protocols

優點:
1.可將倉儲副本傳送到各開發者具共享權限的位置,
並同於設置其他共享目錄一樣設置存取、編輯的權限。
2.運用git指令,使共同開發者更方便推送到遠端,同時也方便存取使用。
缺點:
1.共享存取通常更難以從多個位置進行設定和存取。
2.若使用個人電腦的話,則需安裝遠端系統,否則會連基本網路存取都還要來得困難與慢上許多。
3.每個共同編寫者都具有對“遠端”目錄的訪問權限,無法限制或阻擋使用者更改或刪除內部Git文件或破壞遠端倉儲。
SSH通訊協定(Secure Shell)
優點:
1.SSH相較容易設置,且保護程式較多。
2.透過SSH存取資安是安全的,所有數據傳輸都經過加密和身份驗證。
3.像HTTP/S、Git與Local protocols一樣,讓數據在傳輸前盡量接近。
缺點:
1.無法通過它對倉儲進行匿名存取。
2.如果想允許匿名存取並且仍使用SSH,則需設定SSH以利推送,但其內容可能會被其他人獲取。
Git協定
優點:
1.目前最快的網絡傳輸協議。
2.若為共同倉儲或為不需身份驗證進行讀取,則需設定Git保護程式。
3.Git倉儲可供所有人clone。
缺點:
1.缺乏身份驗證。
2.通常為唯一存取權限(即推送、寫入等),若開啟推送存取權限,則擁有此URL的任何人都可推送到倉儲內。
HTTP
可分為兩種,分別為新制與舊制。
新制:
與SSH或Git協定的運行方式非常相似,它可以設置為像git://協議一樣匿名服務,也可以通過SSH協議等身份驗證和加密來推送。
舊制:
直接將Git倉儲提供設置為來自Web服務器的普通文件。優點於設置的簡單性。但此外,任何皆可訪問倉儲Web服務器的人都可以存取此倉儲。
以下優缺點於新制HTTP
優點:
1.能夠使用用戶名和密碼進行身份驗證。
2.通過HTTPS以讀取方式提供倉儲。
缺點:
與某些服務器上的SSH相比,在HTTP/S上使用Git可能會有點棘手。
--------------------------------------------------------------------------------------------
在伺服器上佈署Git:
要clone倉儲以新增倉儲,使用該--bare選項運行clone命令。將指令尾端輸入.git。
使用指令: git clone --bare my_project my_project.git
使用後在目錄中會有Git目錄數據的副本my_project.git。
以下指令等同於上述指令,但文件部分會存在些許細微差別。
使用指令:cp -Rf my_project/.git my_project.git
將倉儲複製到下來設置新的倉儲:
假設/srv/git存在於該服務器上,並已設置一個名為git.example.com的SSH服務器,而希望將所有Git存儲庫存儲在該/srv/git目錄下。
使用指令:scp -r my_project.git user@git.example.com:/srv/git
接著對有這目錄及SSH的權限的用戶便可以clone,也有推送訪問權限。
使用指令:git clone user@git.example.com:/srv/git/my_project.git
如果git init使用該--shared選項執行命令,Git將自動將寫入權限正確添加到倉儲。
使用指令:

cd /srv/git/my_project.git

git init --bare --shared
-----------------------------------------------------------------------------------------------------------
個人的SSH公鑰:
輸入指令後有出現文件為id_dsa(id_rsa)為自己私人的密鑰,而文件後方多了.pub則為公鑰。
如下:
~/.ssh為目錄
 cd ~/.ssh
 ls
authorized_keys2
id_dsa
known_hosts
config
id_dsa.pub
*若無金鑰時,可輸入下列指令來創建。
指令:ssh-keygen
接著會需要確保密鑰(.ssh/id_rsa)的位置,需輸入兩次密碼,不需要則可空白。
如用戶需要複製有公鑰文件的內容,輸入下列指令。
~/.ssh/id_rsa為公鑰位置
cat ~/.ssh/id_rsa.pub
-----------------------------------------------------------------------------------------------------
伺服器的設定:
如需設定SSH存取的服務端,則需使用下列方式來進行身分驗證。
<<git為用戶名、 .ssh為目錄、authorized_keys為驗證>>
指令:
sudo adduser git
su git
cd
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
如需要新增開發人員的SSH公鑰,並將其保存到臨時文件中。
指令如下:
<<範例為john為開發人員的SSH公鑰>>
cat /tmp/id_rsa.john.pub
在一個沒有工作目錄的情況下設置一個空儲存庫。
cd /opt/git
mkdir project.git
cd project.git
git init --bare
將文件推送至遠端倉儲。
<<myproject為文件>>
-----------------------------------------------------------------------------------------
Git常駐程式
若不想將所有人都新增SSH金鑰時,以維護近端的方式運行下列指令:
*此方法設定方便而快速,但因沒有密鑰的身分驗證,所以任何人都可以存取裡面的內容*
git daemon --reuseaddr --base-path=/opt/git/ /opt/git/
--reuseaddr是允許服務器重新啟動而無需等待舊連接超時
--base-path是允許人們克隆項目而不指定整個路徑
>>最後的路徑則需宣告Git維護程序在哪查找所要導出的倉儲<<
若防火牆正執行,還需在正在設置它的資料夾上的檔案9418處打一個洞。
但建議將此維護方法作為擁有倉儲的唯讀權限的用戶使用。
在Ubuntu計算機上,您可以使用Upstart的腳本,並在文件中放入腳本。
*文件為/etc/init/local-git-daemon.conf*
腳本:
start on startup
stop on shutdown
exec /usr/bin/git daemon \
--user=git --group=git \
--reuseaddr \
--base-path=/opt/git/ \
/opt/git/
respawn
要在不重新啟動的情況下運行計算機時
initctl start local-git-daemon
允許未驗證的用戶存取指定的倉儲。
cd /path/to/project.git
touch git-daemon-export-ok

分散式的Git

分散式工作流程
分散式工作流程分為三種
集中式工作流程、整合式管理員工作流程、企業型工作流程
集中式工作流程:
如前者有人推送,後者必須合併前者的版本,不然會無法推送至儲存庫,是因為避免前者的資料被覆蓋。
整合式管理員工作流程:
倉儲維護人=A、開發人員=B
A推送到公共倉儲。
B clone該倉儲並進行改動,並推上他們的版本。
B向A發送一封電子郵件,要求A提取更改。
A將B的repo添加為遠端,合併原先的資料,推送到主倉儲。
企業型工作流程:
老闆=A、副手=B、開發人員=C
正常的C會在他們主題的分支上工作,並在重新定義他們在master上的工作。而master分支是獨裁者的分支。
B將C的主題分支合併到B的master分支中。
A將B的master分支合併到A的master分支中。
A將他們推master送到倉儲,以便其他C可以對其進行重新定義。
------------------------------------------------------------------------------------
分散式的Git-對專案進行貢獻
個人:進入分支後的歷史圖(示意圖)

團體:整合分支圖(示意圖)

Ungit用法

Open

輸入ungit

開啟後頁面

Commit&Push

有任何更新,這邊會跳出此視窗,可以用來做COMMIT的動作
在此更新commit可輸入中文,更能表達出想commit的東西

在title裡輸入commit註解,接著按下按下commit&push

輸入github帳號密碼

輸入完後便推送完成

手足球電腦對電腦(版本二)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...