cp2022 第三週課程

計算機程式第三週課程內容. 各教學影片均需透過 @nfu 登錄的 Onedrive 帳號登入後, 才能觀看.

針對 Proxy 設定無法存檔

有關電腦輔助設計室中, 代理主機設定無法存檔的問題, 可以參考cp2022 w3 cadlab 網路設定影片 (必須登入 @nfu Teams 帳號) 中的說明, 主要設定流程為直接進入 Windows Registry 進行設定後, 將設定內容匯出為 .reg 檔案後, 放入隨身碟, 下一次重新開機後, 可以利用滑鼠左鍵雙點擊 .reg 檔案, 就可以完成自動設定.

下載 cadlab_network_setup.zip

網誌與課程內容回顧

教學影片: 課程網誌製作與先前課程內容回顧

ethercalc 登錄與 RDT

教學影片: ethercalc登錄 Github 帳號 - 遠端桌面與虛擬主機介紹

https://ethercalc.net/

倉儲與 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 學員名單:

  1. 1a 計算機程式修課學員名單 (取自教務主機)
  2. 1b 計算機程式修課學員名單 (取自教務主機)
  3. 2a 電腦輔助設計與實習修課學員名單 (取自教務主機)
  4. 2b 電腦輔助設計與實習修課學員名單 (取自教務主機)