計算機程式第三週課程內容. 各教學影片均需透過 @nfu 登錄的 Onedrive 帳號登入後, 才能觀看.
針對 Proxy 設定無法存檔
有關電腦輔助設計室中, 代理主機設定無法存檔的問題, 可以參考cp2022 w3 cadlab 網路設定影片 (必須登入 @nfu Teams 帳號) 中的說明, 主要設定流程為直接進入 Windows Registry 進行設定後, 將設定內容匯出為 .reg 檔案後, 放入隨身碟, 下一次重新開機後, 可以利用滑鼠左鍵雙點擊 .reg 檔案, 就可以完成自動設定.
網誌與課程內容回顧
教學影片: 課程網誌製作與先前課程內容回顧
ethercalc 登錄與 RDT
教學影片: ethercalc登錄 Github 帳號 - 遠端桌面與虛擬主機介紹
倉儲與 Github Pages
教學影片: 課程倉儲與 Github Pages 網頁設定教學
從教務主機擷取學員名單
原先配置在 Heroku 的 [nfulist] 網際程式, 由於校務主機已經排除台灣境外網段連接, 且 Heroku 也即將終止免費帳號使用. 因此只能將程式配置在系工作站室中的電腦. 程式如下, 目前以 Ubuntu 22.04 實體主機下的 Virtualbox Win10 虛擬主機運行. 採 waitress 模式配置, 以 nssm 安排成為系統服務.
# 以 Flask 作為網際框架, from flask import Flask, request # 允許跨網站擷取資料 from flask_cors import CORS # 利用 requests 取回網站中的頁面資料 import requests # 利用 beautifulsoup 解讀超文件網頁內容 import bs4 # 若在近端啟動也要採用 SSL 時導入 #import ssl ''' 2022 Fall 各班課程代號 1a - 2b ?semester=1111&courseno=0747&column=True ?semester=1111&courseno=0761&column=True ?semester=1111&courseno=0773&column=True ?semester=1111&courseno=0786&column=True ''' proxies ={ 'http': 'http://account:password@[2001:288:6004:17::4]:3128', 'https': 'http://account:password@[2001:288:6004:17::4]:3128' } app = Flask(__name__) CORS(app) @app.route('/studlist') @app.route('/') def studlist(): semester = request.args.get('semester') courseno = request.args.get('courseno') column = request.args.get('column') if semester == None: semester = '1091' if courseno == None: courseno = '0762' headers = {'X-Requested-With': 'XMLHttpRequest'} url = 'https://qry.nfu.edu.tw/studlist_ajax.php' post_var = {'pselyr': semester, 'pseqno': courseno} # 可透過 Proxy server 執行程式 #result = requests.post(url, data = post_var, headers = headers, proxies = proxies) result = requests.post(url, data = post_var, headers = headers) soup = bs4.BeautifulSoup(result.content, 'lxml') table = soup.find('table', {'class': 'tbcls'}) data = [] rows = table.find_all('tr') for row in rows: cols = row.find_all('td') cols = [ele.text.strip() for ele in cols] data.append([ele for ele in cols if ele]) # Get rid of empty values output = "" for i in data[2:]: #print(i[0]) if column == "True": output +=i[0] + "" else: output +=i[0] + "\n" return output #return str(pselyr) + " + " +str(pseqno) # 即使在近端仍希望以 https 模式下執行 #context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) #context.load_cert_chain('localhost.crt', 'localhost.key') if __name__ == '__main__': app.run(host='127.0.0.1', port=8080, debug=True)
2022 Fall 學員名單:
- 1a 計算機程式修課學員名單 (取自教務主機)
- 1b 計算機程式修課學員名單 (取自教務主機)
- 2a 電腦輔助設計與實習修課學員名單 (取自教務主機)
- 2b 電腦輔助設計與實習修課學員名單 (取自教務主機)