Lu-yeom / mentor-program-5th-self-learning

0 stars 0 forks source link

week1(2021/4/12~2021/4/18) #1

Open Lu-yeom opened 3 years ago

Lu-yeom commented 3 years ago

日期:110年4月12日(星期一)21:00~23:00

今日進度: [CMD101] Command Line 超新手入門


課程筆記:

O:今天學習如何用command line輸入各種指令,例如最基本的pwd,cd,ls等。 R:之前有接觸過Linux,操作介面和指令滿相似的,有一種在複習的感覺。 I:我覺得操作上滿直覺的,只要輸入正確指令就可以做到很多事情,但要能熟練操作前要多多練習。 D:雖然無法一天8小時的學習,但是努力的擠出2小時來跟課,下一段課程內容比較多,希望能夠跟上。

Lu-yeom commented 3 years ago

日期:110年4月13日(星期二)20:40~22:00 今日進度:[CS101] 初心者的計概與 coding 火球術1-1、1-2

課程筆記: 寫程式是什麼?→讓電腦去執行「我們的想法」,對電腦下指令,讓電腦照著我們的指令去做 為什麼要寫程式碼?→因為電腦只看得懂指令,所以標準化很重要,而寫程式的標準化就是程式碼 程式碼不重要,重點是如何解決問題 程式碼一個步驟只做一件事,要條列式的將指令寫出來 ex. computer 的p字在第幾個位置?

  1. 假設n是1,length是字串長度,A設成-1,代表找到的位置,p是要找的字 2.看第n個字是不是p,如果是讓A=n(把A變成n的值) 3.把n+1,如果n+1大於length,跳至第5步 4.跳回第2步 5.如果A<0,代表p沒出現過,否則A就是答案

O:今天學習程式的用途以及程式碼的意義,其實我們是在學電腦國的語言。 R:要讓電腦讀懂,需要很多步驟且明確的指令,一時之間還是無法切換過來,覺得挺難的。 I:電腦國的居民比較不聰明,所以要一個一個步驟下指令,不然電腦無法處理。 D:今天老毛病偏頭痛犯了,無法再多上一點課很可惜,明天要看完Git。

Lu-yeom commented 3 years ago

日期:110年4月14日(星期三)20:10~22:10 今日進度:[GIT101] Git 超新手入門

課程筆記: 一、版本控制→一個檔案有不同版本,但我們希望把所有版本都保存起來 二、Git→幫你做版本控制的程式 三、多人的版本控制基本流程:  1.需要新版本,開一個資料夾  2.不想加入版本控制,不要加入資料夾  3.避免版本號衝突:用看似亂數的東西當作資料夾名稱  4.知道最新版本:用一個檔案來存  5.新增一個檔案紀錄版本更新的歷史紀錄 四、啟動版本控制→git init 五、取消版本控制→rm -r .git 六、版本控制的狀態→git status 七、決定是否加入版本控制→git add (註:每次都要做) ex. git add code.js untracked:不加入 staged:加入版本控制 八、回復原本狀態→rm --cached code.js 九、將所有檔案加入版本控制→git add . 十、新建一個版本→git commit 十一、為版本增加敘述→git commit -m “_” 十二、歷史紀錄→git log (簡化版: git log --oneline) 可用亂碼的前7碼當作版本名稱 十三、流程簡記→git commit→git add “檔名”→git status→git commit -m “”→git log 十四、回到某個版本→git checkout +版本名稱 十五、回到最新狀態→git checkout master 十六、要忽略的檔案→ .gitignore 十七、加入版本控制並新建一個版本→git commit -am(但不會包含新增檔案) 十八、總複習:    1.第零步: git init -> git status 2.第一步: vim.gitignore -> 建立.gitignore忽略不要的檔案(將檔案排除在資料夾外) 3.第二步: git add . -> 先把所有檔案加入版本控制(將檔案移入資料夾) 4.第三步: git commit -am “init” -> 建立第一個commit(建立一個資料夾) 十九、專案建立後: 1.有新檔案要記得加入 git add. 2.想要新版本:git commit -am “msg” 3.可以確認加入commit前更改哪些內容: git diff

O:今天學習程式的版本控制,huli老師用了資料夾的概念來呼應,我覺得淺顯易懂。 R:我昨天看錯順序,先看了火球術的課程,所以今天的課程連接到第一天的command line內容,我還要回去翻個筆記才能回想起來。 I:在進行一個專案時,不可能一下子就完成,其中修正內容的過程,就是版本控制。不僅要記錄自己修正的版本,在多人合作的場合更是要嚴格控制,我覺得很不簡單 D:因為明天有很重要的會議,所以先進行到Git總複習課程,明天繼續branch課程。

Lu-yeom commented 3 years ago

日期:110年4月15日(星期四)21:20~23:00 今日進度:[GIT101] Git 超新手入門

課程筆記: 一、Git的另一個重要功能branch(分支): 如果從穩定版要開發新功能,便創造一個branch,如果新功能開發未完成發生bug,要從穩定版來修正bug,等新功能開發完成、bug fix完成,再合併兩個branch。 二、branch的好處是可以同時進行開發和修正,等兩個branch都完成後再合併。 三、建立branch→git branch “名稱” 四、確認branch→git branch -v 五、刪掉branch→git branch -d “branch名稱” 六、切換到其他branch→git checkout “branch名稱” 七、把目標branch合併進來→git merge “branch名稱” 八、當合併branch時發生conflict,可手動改檔案內容更新

O:branch和commit的差別好像還有一點不太清楚。 R: I: D:

Lu-yeom commented 3 years ago

日期:110年4月16日(星期五)20:05~22:30 今日進度:[GIT101] Git 超新手入門 + [CS101] 初心者的計概

課程筆記: 一、Github→可以放git repository的地方 二、Git vs Github→要分享git不一定要用github,可以用其他管道(例如架server),但如果使用github,就一定會用到git 三、如何把code放上github:   1、new repository→輸入repository name→create repository   2、上傳code→git push -u origin master(master是預設,可以改成自己設定好的branch名稱) 四、如何把最新更新的branch拉下來→git pull origin master 五、下載別人的repository→git clone +”網址”   但如果下載後想更動內容再push上去,可按fork按鈕 六、流程簡記:   1、先fork專案   2、開新的branch   3、修改完push上自己的github repository   4、pull requests合併 七、Github pages→git repository的靜態網頁版 八、Github flow→專案協作的建議流程 九、如果commit message打錯字→git commit --amend 十、如果commit了但是又反悔→git reset HEAD^ +”--hard” 或 “--soft” 1、--hard表示最新的commit版本都不要 2、--soft還會留存最新版的commit,可再修正後commit 十一、還沒commit但是修改的東西也不要了→git checkout --”檔案名稱” 十二、改branch的名稱→git branch -m “新的branch名稱” 十三、下載遠端的branch→git checkout branch名稱 十四、hook→發生某事(如commit、push)時通知

O:git的80%功能都教到了,github flow的部分我也覺得很受用。 R: I:huli老師在課程中有一直強調commit branch push等用途和順序,我覺得很實用。 D:明天要把火球術4-1、4-2、11看完,再嘗試寫作業。

Lu-yeom commented 3 years ago

日期:110年4月17日(星期六)21:00~23:00 今日進度:[CS101] 初心者的計概與 coding 火球術4-1、4-2、11

課程筆記:

一、範例: 1.令n=1,L=總共幾道菜(用符號表示為變數variable[需要儲存資訊的時候]) var n=1, L = menus.length 2.看菜單的第n樣菜

3.如果是 牛肉漢堡


     makebeefburger();
}else if (menus[n]==’雙層牛肉漢堡’){
    makedoublebeefburger();
}else if(menus[n]==’牛肉三明治’){
    makebeefsandwich();
}else {
  throw new Error(‘菜單寫錯了’);
}
4.就拿漢堡麵包 放肉 放生菜 抹醬→簡化:請參考牛肉漢堡食譜
                                                 (函式function:把冗長的程序切開,分成許多小程序)
5.如果是 雙層牛肉漢堡
6.就拿漢堡麵包 放兩層肉 放生菜 抹醬簡化:請參考雙層牛肉漢堡食譜
  (如果要更改函式的內容,可以再把重複性高的部分獨立出來,如放生菜→請參考:放生菜)
7.如果是 牛肉三明治
8.就拿三明治 放肉 放生菜 抹醬簡化:請參考牛肉三明治食譜
9.如果都不是
10.告訴外場:菜單寫錯了
11.如果n<L,把n+1,回到第2步(迴圈Loop→重複做一樣的事情)
   if(n<L) {
      n = n+1;
     goto line2;
}else {
  return food;
}
12.把做好的菜交給外場

二、菜單(輸入input)→條件判斷comditional→迴圈loop→變數variable→函式function→輸出output

三、網路基礎概論:
  1.IP位置→由四個數字組成,範圍是0~255
        2.域名domain→常用的網址,如google.com
        3.Domain Name System→簡稱DNS,把域名轉換為IP位置
        4.網頁前端→看得到的部分;網頁後端→看不到的部分
        5.範例:從輸入google.com到顯示畫面,這過程中發生了什麼事?
            (1)瀏覽器問DNS伺服器:google.com怎麼走
            (2)DNS回覆:你去10.1.1.1
            (3)瀏覽器送request去10.1.1.1
            (4)位在10.1.1.1的server收到request
            (5)server去問資料庫,查詢你要的關鍵字
            (6)資料庫找到了,回傳資料給server
            (7)server回傳response給瀏覽器
            (8)瀏覽器解析回傳的資訊並顯示出來
四、內網與外網→公司的網路會形成一個「內部網路」,大家的 IP 是虛擬 IP(會有不同的IP但都屬於同一個網路),只在內網裡面才看得到;但對外網而言都是同一個IP
五、Virtual Private Network→VPN,有些服務會鎖IP,只開放特定IP存取,可透過VPN,先連至公司內部,再從公司內部連到其他地方,如中國的「翻牆」

O:我覺得huli老師把程式的運作流程講解得非常平易近人,尤其是迴圈部分的設定;還有網頁前端後端的作業是如何進行的,流程講解也非常容易理解。
R:
I:我特別喜歡迴圈和函式、變數的部分,讓我釐清相互的關係。
D:明天要嘗試寫作業。
Lu-yeom commented 3 years ago

日期:110年4月18日(星期日)19:00~22:30 今日進度:第一週作業 + [JS101] 用 JavaScript 一步步打造程式基礎(環境建置、第一支小程式、基本運算)

課程筆記: 一、該如何執行 JavaScript?→Node.js(運行環境),能讓Javascript跑在瀏覽器外 二、下載→Nodejs.org下載安裝檔,開啟Git bash,輸入node -v 三、在瀏覽器寫javascript:   1.輸入vim index.html 2.輸入console.log 123 3.按esc,輸入:wq存檔 4.輸入start index.html 四、你好,世界! 1.輸入vim index.html 2.輸入console.log (‘hello world!’) 3.按esc,輸入:wq存檔 4.輸入start index.html 五、用Node.js執行: 1.輸入node index.js 六、基本運算 1.輸入node 2.可輸入數字做加減乘除運算(取餘數%) 3.離開輸入ctrl+c 七、邏輯運算and or not 1.or的顯示方式為 || 2.and的顯示方式為&& 3.not的顯示方式為! 八、|| 與 && 的短路性質→若前面的條件為true,則為true,反之為false

O:第一次使用javascript,還不熟悉相關流程。 R: I: D:上課時間要安排得更加妥當才行。