項目基礎及工具
文章目錄
- 項目基礎及工具
-
- GIT簡介
- GIT使用
-
- 基本概念
- 初始配置
- 基本指令
-
- @擴充延伸
- 版本控制
- 儲存工作區
- 分支管理
- 遠端倉庫
- GitHub介紹
- 擷取項目
- 建立删除git倉庫
- 遠端倉庫操作指令
- 軟體項目開發流程
-
- 項目注意事項
- 項目工具的使用
- 線上詞典
-
- 功能說明
- HTTPServer
-
- 功能
GIT簡介
- 什麼是GIT
git是一個開源的分布式版本控制系統,用于高效的管理各種大小項目和檔案。
- 代碼管理工具的用途
- 防止代碼丢失,做備份
- 項目的版本管理和控制,可以通過設定節點進行跳轉
- 建立各自的開發環境分支,互不影響,友善合并
- 在多終端開發時,友善代碼的互相傳輸
- git的特點
- git是開源的,多在*nix下使用,可以管理各種檔案
- git是分布式的項目管理工具(svn是集中式的)
- git資料管理更多樣化,分享速度快,資料安全
- git 擁有更好的分支支援,友善多人協調
- git安裝
sudo apt-get install git
GIT使用
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-O3ZBZ1ig-1593321546474)(img/git.jpeg)]
基本概念
- 工作區:項目所在操作目錄,實際操作項目的區域
- 暫存區: 用于記錄工作區的工作(修改)内容
- 倉庫區: 用于備份工作區的内容
- 遠端倉庫: 遠端主機上的GIT倉庫
注意: 在本地倉庫中,git總是希望工作區的内容與倉庫區保持一緻,而且隻有倉庫區的内容才能和其他遠端倉庫互動。
初始配置
配置指令: git config
- 配置所有使用者: git config --system [選項]
配置檔案位置: /etc/gitconfig
- 配置目前使用者: git config --global [選項]
配置檔案位置: ~/.gitconfig
- 配置目前項目: git config [選項]
配置檔案位置: project/.git/config
- 配置使用者名
e.g. 将使用者名設定為Tedu
sudo git config --system user.name Tedu
- 配置使用者郵箱
e.g. 将郵箱設定為[email protected]
git config --global user.email [email protected]
- 配置編譯器
e.g. 配置編譯器為pycharm
git config core.editor pycharm
- 檢視配置資訊
git config --list
基本指令
- 初始化倉庫
git init
意義:将某個項目目錄變為git操作目錄,生成git本地倉庫。即該項目目錄可以使用git管理
- 檢視本地倉庫狀态
git status
說明: 初始化倉庫後預設工作在master分支,當工作區與倉庫區不一緻時會有提示。
- 将工作内容記錄到暫存區
git add [files…]
e.g. 将 a ,b 記錄到暫存區
git add a b
e.g. 将所有檔案(不包含隐藏檔案)記錄到暫存區
git add *
@擴充延伸
在Git項目中可以通過在項目的某個檔案夾下定義.gitignore檔案的方式,規定相應的忽略規則,用來管理目前檔案夾下的檔案的Git送出行為。.gitignore 檔案是可以送出到公有倉庫中,這就為該項目下的所有開發者都共享一套定義好的忽略規則。在.gitignore 檔案中,遵循相應的文法,在每一行指定一個忽略規則。
.gitignore忽略規則簡單說明
file 表示忽略file檔案
*.a 表示忽略所有 .a 結尾的檔案
!lib.a 表示但lib.a除外
build/ 表示忽略 build/目錄下的所有檔案,過濾整個build檔案夾;
4.取消檔案暫存記錄
git rm --cached [file]
- 将檔案同步到本地倉庫
git commit [file] -m [message]
說明: -m表示添加一些同步資訊,表達同步内容
e.g. 将暫存區所有記錄同步到倉庫區
git commit -m 'add files'
- 檢視commit 日志記錄
git log
git log --pretty=oneline
- 比較工作區檔案和倉庫檔案差異
git diff [file]
- 将暫存區或者某個commit點檔案恢複到工作區
git checkout [commit] – [file]
- –是為了防止誤操作,checkout還有切換分支的作用
- 移動或者删除檔案
git mv [file] [path]
git rm [files]
注意: 這兩個操作會修改工作區内容,同時将操作記錄送出到暫存區。
版本控制
- 退回到上一個commit節點
git reset --hard HEAD^
注意 : 一個^表示回退1個版本,依次類推。當版本回退之後工作區會自動和目前commit版本保持一緻
- 退回到指定的commit_id節點
git reset --hard [commit_id]
- 檢視所有操作記錄
git reflog
注意:最上面的為最新記錄,可以利用commit_id去往任何操作位置
- 建立标簽
标簽: 在項目的重要commit位置添加快照,儲存當時的工作狀态,一般用于版本的疊代。
git tag [tag_name] [commit_id] -m [message]
說明: commit_id可以不寫則預設标簽表示最新的commit_id位置,message也可以不寫,但是最好添加。
e.g. 在最新的commit處添加标簽v1.0
git tag v1.0 -m '版本1'
- 檢視标簽
git tag 檢視标簽清單
git show [tag_name] 檢視标簽詳細資訊
- 去往某個标簽節點
git reset --hard [tag]
- 删除标簽
git tag -d [tag]
儲存工作區
- 儲存工作區内容
git stash save [message]
說明: 将工作區未送出的修改封存,讓工作區回到修改前的狀态
- 檢視工作區清單
git stash list
說明:最新儲存的工作區在最上面
- 應用某個工作區
git stash apply [[email protected]{n}]
- 删除工作區
git stash drop [[email protected]{n}] 删除某一個工作區
git stash clear 删除所有儲存的工作區
分支管理
定義: 分支即每個人在原有代碼(分支)的基礎上建立自己的工作環境,單獨開發,互不幹擾。完成開發工作後再進行分支統一合并。
- 檢視分支情況
git branch
說明: 前面帶 * 的分支表示目前工作分支
- 建立分支
git branch [branch_name]
說明: 基于a分支建立b分支,此時b分支會擁有a分支全部内容。在建立b分支時最好保持a分支"幹淨"狀态。
- 切換工作分支
git checkout [branch]
說明: 2,3可以同時操作,即建立并切換分支
git checkout -b [branch_name]
- 合并分支
git merge [branch]
沖突問題是合并分支過程中最為棘手的問題當分支合并時,原分支和以前發生了變化就會産生沖突
當合并分支時添加新的子產品(檔案),這種沖突可以自動解決,隻需自己決定commit操作即可。
當合并分支時兩個分支修改了同一個檔案,則需要手動解決沖突。
- 删除分支
git branch -d [branch] 删除分支
git branch -D [branch] 删除沒有被合并的分支
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-ypzOguhy-1593321546476)(img/merge.png)]
遠端倉庫
遠端主機上的git倉庫。實際上git是分布式結構,每台主機的git倉庫結構類似,隻是把别人主機上的git倉庫稱為遠端倉庫。
GitHub介紹
github是一個開源的項目社群網站,擁有全球最多的開源項目。開發者可以注冊網站在github建立自己的項目倉庫。
網址: github.com
代碼管理工具:git
擷取項目
- 在左上角搜尋欄搜尋想要的擷取的項目
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-4xjwcrlx-1593321546476)(img/1.png)]
- 選擇項目後複制項目git位址
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-NN6aRigP-1593321546477)(img/2.png)]
- 在本地使用git clone方法即可擷取
git clone https://github.com/xxxxxxxxx
注意: 擷取到本地的項目會自動和github遠端倉庫建立連接配接。且擷取的項目本身也是個git項目。
建立删除git倉庫
- 點選右上角加号下拉菜單,選擇新的倉庫
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-jocvZ9AH-1593321546478)(img/4.png)]
- 填寫相應的項目資訊即可
- github倉庫相對本地主機就是一個遠端倉庫 通過remote連接配接,如果需要輸入密碼輸入github密碼即可。連接配接後即可使用遠端倉庫操作指令操作。readme檔案會被自動作為項目介紹
- 如果是在自己的倉庫界面選擇settings,在最後可以選擇删除倉庫。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-acqZF0sT-1593321546480)(img/5.jpg)]
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-DylQTxbV-1593321546481)(img/6.jpg)]
遠端倉庫操作指令
所有操作在本地git倉庫下進行
- 添加遠端倉庫
git remote add origin https://github.com/xxxxxxxxx
- 檢視連接配接的主機
git remote
注意: 一個git項目連接配接的遠端主機名不會重複
- 删除遠端主機
git remote rm [origin]
- 将本地分支推送給遠端倉庫
将master分支推送給origin主機遠端倉庫,第一次推送分支使用-u表示與遠端對應分支建立自動關聯
git push -u origin master
- 推送代碼到遠端倉庫
git push
- 推送标簽
git push origin [tag] 推送本地标簽到遠端
git push origin --tags 推送本地所有标簽到遠端
- 推送舊的版本
git push --force origin 用于本地版本比遠端版本舊時強行推送本地版本
- 删除遠端分支和标簽
git branch -a 檢視所有分支
git push origin [:branch] 删除遠端分支
git push origin --delete tag [tagname] 删除遠端倉庫标簽
- 從遠端擷取代碼
擷取遠端分支代碼
git pull
将遠端分支master拉取到本地,作為tmp分支
git fetch origin master:tmp
差別pull将遠端内容直接拉取到本地,并和對應分支内容進行合并
fetch将遠端分支内容拉取到本地,但是不會和本地對應分支合并,可以自己判斷後再使用merge合并。
軟體項目開發流程
需求分析 ----》 概要設計 ---》 項目計劃 ----》詳細設計---》編碼測試 -----》項目測試 ----》調試修改 ---》項目釋出----》後期維護
需求分析 : 确定使用者的真實需求
- 确定使用者的真實需求,項目的基本功能
- 确定項目的整體難度和可行性分析
- 需求分析文檔,使用者确認
概要設計:對項目進行初步分析和整體設計
- 确定功能子產品
- 進行可行性分析 搭建整體架構圖
- 确定技術思路和使用架構
- 形成概要文檔指導開發流程
項目計劃 : 确定項目開發的時間軸和流程
- 确定開發工作的先後順序
- 确定時間軸 ,事件裡程碑
- 人員分工
- 形成甘特圖和思維導圖等輔助内容
詳細設計 : 項目的具體實作1.形成詳細設計文檔 : 思路,邏輯流程,功能說明,技術點說明,資料結構說明,代碼說明
編碼測試 : 按照預定計劃實作代碼編寫,并且做基本檢測
- 代碼編寫
- 寫測試程式
- 技術攻關
項目測試 : 對項目按照功能進行測試
- 跨平台測試 ,使用測試
- 根據測試報告進行代碼修改
- 完成測試報告
項目釋出1.項目傳遞使用者進行釋出
2.編寫項目說明文檔
後期維護1.維護項目正常運轉
2.進行項目的疊代更新
項目注意事項
- 按時完成項目工作和項目時間不足之間的沖突
- 項目實施人員之間的沖突
項目工具的使用
編寫文檔: word ppt excel markdown LaTex
項目流程圖 : Mindmanager visio
項目管理 : project
代碼管理 : svn git
線上詞典
參考代碼:day18/dict
功能說明
使用者可以登入和注冊
- 登入憑借使用者名和密碼登入
- 注冊要求使用者必須填寫使用者名,密碼,其他内容自定
- 使用者名要求不能重複
- 要求使用者資訊能夠長期儲存
可以通過基本的圖形界面print以提示用戶端輸入。
- 程式分為服務端和用戶端兩部分
- 用戶端通過print列印簡單界面輸入指令發起請求
- 服務端主要負責邏輯資料處理
- 啟動服務端後應該能滿足多個用戶端同時操作
用戶端啟動後即進入一級界面,包含如下功能:登入 注冊 退出
* 退出後即退出該軟體
* 登入成功即進入二級界面,失敗回到一級界面
* 注冊成功可以回到一級界面繼續登入,也可以直接用注冊使用者進入二級界面
使用者登入後進入二級界面,功能如下:查單詞 曆史記錄 登出
* 選擇登出則回到一級界面
* 查單詞:循環輸入單詞,得到單詞解釋,輸入特殊符号退出單詞查詢狀态
* 曆史記錄:查詢目前使用者的查詞記錄,要求記錄包含name word time。可以檢視所有記錄或者前10條均可。
HTTPServer
參考代碼:day19/HTTPServer
功能
httpserver部分擷取http請求
解析http請求
将請求發送給WebFrame
從WebFrame接收回報資料
将資料組織為Response格式發送給用戶端
WebFrame部分從httpserver接收具體請求
根據請求進行邏輯處理和資料處理
将需要的資料回報給httpserver
特點采用httpserver和應用處理分離的模式,降低了耦合度
采用了使用者配置檔案的思路
webframe部分采用了模拟後端架構的處理方法
技術點httpserver部分需要與兩端建立通信
webFrame部分采用多路複用接收并發請求
資料傳遞使用json格式
項目結構:
|--httpserver --HttpServer.py (主程式)
| --config (httpserver配置)
project--|
|
|
|--WebFrame --WebFrame.py (主程式代碼)
--static (存放靜态網頁)
--views.py ( 應用處理程式)
--urls.py (存放路由)
--settings (架構配置)
互動資料格式協定
httpserver-->webframe {method:'GET',info:'/'}
webframe-->httpserver {status:'200',data:'ccccc'}