# 學習過程 ## First Step 觀察全國競賽得獎名單,找出適合團隊的作品目標 ## 作品題目 1. 讀書紀錄app 2. ## Python學習計畫 https://www.w3schools.com/python/python_intro.asp https://www.geeksforgeeks.org/ 1. Variables 2. Data Types 3. Numbers 4. Strings 5. Boolean 6. Operators 7. List 8. Tuple 9. Set 10. For loop 11. If else 12. Function ## 刷題 https://leetcode.com/ ## Framework學習計畫 1. Flask 2. Django ## Q&A Rock, Leon: Data Types的list、tuple、set差別在哪? Ans: List跟Tuple的區別: 1. 可變性: List是可以隨便新增刪除修改元素的,但Tuple不行 2. 資源消耗: Tuple比較省資源 3. 語法: List使用[],tuple使用() ## 學習歷程 ### 03/10 #### 會議記錄 同學們提出開發防毒軟體的點子,但由於開發防毒軟體所需要的資源以及技術門檻相當的高,雖鼓勵同學有不同的創意發想,但須考量到現實層面的問題,所以需重新討論作品主題,且由於大家對於基礎程式設計尚未純熟,先安排程式設計的大方向與學習計畫給同學們,讓大家可以自主學習一週,於下週進行Python教學。 #### 本週學習紀錄 - Rock: - Variables - Numbers - Leon: - Hank: - Variables - Data types - Numbers ### 03/19 #### 會議記錄 進行了Python基礎教學,並且告訴大家可以透過ChatGPT與教學網站把上面的範例實際做一次看他的結果,並於下次上課會進行Github指令與概念的教學 - Github https://backlog.com/git-tutorial/tw/ - Python基礎教學 https://ithelp.ithome.com.tw/articles/10200558 https://github.com/haru3613/self_learning_class #### 本週學習紀錄 - Rock: - Boolean - Operators - List - git入門篇 - Leon: - Variables - Numbers - Hank: - casting ### 04/02 #### 會議記錄 作業: - Git練習: Push自己的script到Github上面(自己的branch) - Selenium 4.0: 隨便與一個網站進行互動 ### 04/09 #### 會議紀錄 ![](https://hackmd.io/_uploads/B1pIljyG2.png) ![](https://hackmd.io/_uploads/rJKQMj1Gh.png) 作業: - IDE - VS code - Sublime Text - Eclipse - 用惠文高中的網頁練習Selenium - 把code建在自己的分支,推到遠端,開啟Pull request - Github GUI - SourceTree - Fork #### 本週學習記錄 - Rock: - Leon: - strings - booleans - Hank: - strings - Booleans - Operators ### 04/16 #### 會議記錄 - String method ![](https://hackmd.io/_uploads/HkwMemuzn.png) - List method ![](https://hackmd.io/_uploads/H18JWX_G2.png) - Flask https://pypi.org/project/Flask/ https://pypi.org/project/Flask-RESTful/ 作業: - Leetcode https://leetcode.com/problems/two-sum/ - Flask Flask寫一個簡單的api - Postman #### 本週學習記錄 - Rock: - Leetcode練習 - Sets - If else - While loops - Leon: - List - If else - Hank: - List ### 04/23 #### 會議紀錄 - HTTP method - python學習物件導向: https://www.learncodewithmike.com/2020/01/python-class.html 作業: - Leetcode: https://leetcode.com/problems/two-sum/ - Selenium爬蟲 - Flask - 3n+1 problems: https://k3331363.pixnet.net/blog/post/40231588 #### 本週學習記錄 - Rock - 3n+1 problems(放在git) - Hank - Selenium 搜尋 ### 05/03 #### 會議記錄 MySQL - https://dev.mysql.com/downloads/mysql/ - https://ithelp.ithome.com.tw/articles/10215161 **作業** - MySQL - 安裝MySQL - 連線到自己mysql - 用語法建立資料 - 學習常用的MySQL常用語法 ![](https://hackmd.io/_uploads/rJhKnRJVh.png) ![](https://hackmd.io/_uploads/ryq9nCJEn.png) ![](https://hackmd.io/_uploads/HJl3hRy43.png) - Leetcode - Python物件導向 -> 05/03 meet recording - Flask #### 本週學習記錄 - Rock - MySQL - function - Leon - set - function - Hank - list ## 05/21 * PEP 8 https://peps.python.org/pep-0008/ * Function https://www.learncodewithmike.com/2019/12/python-function.html ### 作業 - Python物件導向 - 挑自己喜歡的東西把它變物件,之後定義他的屬性、函式 #### 本週學習記錄 - Rock - python物件導向 - count用法 - try-except - Hank - 物件導向的文章(有試著做但不知道對不對 - Leon - 物件導向(嘗試做跟上網找其他影片但還是有點模糊 ## 06/11 Line bot webhook: https://steam.oxxostudio.tw/category/python/example/line-webhook.html 網路爬蟲selenium 新增使用者 - 前端 Html, js, Vue -> 後端 Flask -> MySQL ### 作業 - Rock: - Hank: - Leon: #### 本週學習記錄 Rock: https://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw Hank: Leon:複習物件導向 ## 07/09 複習網路爬蟲 Selenium Cypress: https://www.cypress.io/ ### 作業 #### 本週學習記錄 Rock: 練習comment、lambda Hank: function Leon: 認識Line Bot ## 07/16 Python基礎 Python進階: - https://hackmd.io/@harvey-chan/ByMY9ev5E - https://hackmd.io/@harvey-chan/B1wp22hGK MySQL Github 物件導向 網頁後端 +2 網頁前端 Line Bot自動回覆 +1 多國語言翻譯網頁 ### 多國語言翻譯網頁: #### 功能 - 一次性多種翻譯 #### 技術 - 後端: Flask - 前端: Vue.js - Google翻譯API ## 07/23 網頁後端 https://ithelp.ithome.com.tw/ - Flask - Django #### 學習記錄 - Rock: flask簡單複習、介紹 https://ithelp.ithome.com.tw/m/articles/10296880 https://reurl.cc/N08GEx - Leon: line bot ## 07/31 網頁後端教學 https://medium.com/itsems-frontend/api-%E6%98%AF%E4%BB%80%E9%BA%BC-restful-api-%E5%8F%88%E6%98%AF%E4%BB%80%E9%BA%BC-a001a85ab638 Virtualenv Docker ## 08/06 ### Google翻譯API API KEY: AIzaSyAQXuBdWPPS4RM5o70cf_2sjM4qu0f7Xjw ``` $ export GOOGLE_APPLICATION_CREDENTIALS="/Users/harveychan/Documents/google_translation/wise-reporter-395102-fb9d82325474.json" ------- from google.cloud import translate_v2 as translate client = translate.Client() text = "Hello, world!" lang_list = client.get_languages() for language in lang_list: target_language = "{language}".format(**language) result = client.translate(text, target_language=target_language) print(f"Translated text: {result['translatedText']}") print("Detected source language: {}".format(result["detectedSourceLanguage"])) ``` ## 09/03 ``` # Django指令 # 安裝django $ pip install django # 建立專案 $ django-admin startproject translation_project # 建立指定的app $ python manage.py startapp translator # 啟動伺服器 $ python manage.py runserver ``` ## 09/10 - 研究搶課 ``` from selenium import webdriver from selenium.webdriver.chrome.options import Options import time from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver import ActionChains # 創建一個選項對象來存儲你的自定義選項 chrome_options = Options() chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36") # 初始化webdriver對象 driver = webdriver.Chrome(options=chrome_options) driver.maximize_window() # 首先導航到主網頁 driver.get('https://1campus.net') time.sleep(1) driver.delete_all_cookies() # 添加你的cookies cookies = [ {"domain": ".1campus.net", "expirationDate": 1728871669.678601, "hostOnly": False, "httpOnly": False, "name": "_ga", "path": "/", "sameSite": "None", "secure": False, "session": False, "storeId": "0", "value": "GA1.1.1763465071.1688870172", "id": 1}, {"domain": ".1campus.net", "expirationDate": 1728871671.521719, "hostOnly": False, "httpOnly": False, "name": "_ga_0XS98J4028", "path": "/", "sameSite": "None", "secure": False, "session": False, "storeId": "0", "value": "GS1.1.1694311474.2.1.1694311671.0.0.0", "id": 2}, {"domain": "1campus.net", "expirationDate": 1694916470.593094, "hostOnly": True, "httpOnly": True, "name": "@ecoboost-web3", "path": "/", "sameSite": "None", "secure": True, "session": False, "storeId": "0", "value": "19a43522-900d-43bf-be36-1ceee0d6a78c", "id": 3}, {"domain": "1campus.net", "expirationDate": 1694916470.593118, "hostOnly": True, "httpOnly": True, "name": "@ecoboost-web3.sig", "path": "/", "sameSite": "None", "secure": True, "session": False, "storeId": "0", "value": "bs4mFWRL-hmbVYKXhTtHoBcRuNo", "id": 4} ] for cookie in cookies: driver.add_cookie(cookie) time.sleep(1) # 現在導航到特定的子頁面 driver.get('https://1campus.net/s/h.hwsh.tc.edu.tw/r/student/7006/g/agent/75036378-359E-4D92-8A9B-15437CBEDB6D') iframe = WebDriverWait(driver, 30).until( EC.presence_of_element_located((By.XPATH, '//iframe[@name="gadget-iframe-agent"]')) ) driver.switch_to.frame(iframe) nested_iframe = WebDriverWait(driver, 30).until( EC.presence_of_element_located((By.XPATH, '//iframe[@title="Web2 Gadget"]')) ) driver.switch_to.frame(nested_iframe) club = "吉他社" club_selector = WebDriverWait(driver, 30).until( EC.presence_of_element_located((By.XPATH, f'//td[contains(text(), "{club}")]')) ) if club_selector.is_displayed(): club_selector.click() else: print(f'元素存在但不可见: {club}') time.sleep(60) ``` # 09/17 - 爬蟲 - Line Bot # 10/15 https://github.com/kamranahmedse/developer-roadmap * Frontend Roadmap / Frontend Beginner Roadmap * Backend Roadmap * AI and Data Scientist Roadmap * QA Roadmap * JavaScript Roadmap * Vue Roadmap * Java Roadmap * Android Roadmap * SQL Roadmap ### 每週作業 1. 分享畫面.講解一下自己上週看的東西, - 看到哪個階段(詳細) - 花費多少時間 3. 預先規劃下週要看什麼內容 - 花費多少時間 # 11/05 子恩:Android Developer https://roadmap.sh/android https://play.kotlinlang.org/byExample/01_introduction/02_Functions 軟體: Android Studio Language: Kotlin 版本控制: Github # 11/12 Xampp教學 Laravel: https://ithelp.ithome.com.tw/articles/10265303