跳到主要內容

發表文章

目前顯示的是有「校務系統」標籤的文章

Ubuntu 22.04 安裝PHP 7.4

目前最新的 Ubuntu LTS 是 22.04 版,其預設的套件庫 PHP 是 8.1 版本。 相較於 Ubuntu 20.04 用的是 PHP7.4,PHP8.1對於變數的宣告和陣列的 KEY 值有很嚴格的限制,未事前宣告的變數或陣列 KEY值就會報錯。如果是小一點的程式,在報錯的地方再針對變數和KEY 多做一個判斷可以解決;但是大一點的程式就很傷腦筋了。 網路上有提供新增套件庫,將原本的 PHP8.1 降級成 PHP7.4 的方法,以前設定時還蠻順利的,但是最近新設定一台虛擬主機時,欲一直遇到 python 的問題,最後利用手動增加套件庫的方式才解決這個問題。 參考資料: https://askubuntu.com/questions/1393381/unable-to-add-ondrej-repository-apt-in-ubuntu-20-04 1、在 /etc/apt/source.d 中新增 ondrej-ubuntu-php-jammy.list 2、在 ondrej-ubuntu-php-jammy.list 中新增: deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main # deb-src https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main 3、匯入所需的金鑰: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4f4ea0aae5267a6c  然後再作 apt update 及 apt install php7.4-fpm 及 php7.4 的相關套件即可。 設定系統主要啟用 PHP 版本 sudo update-alternatives --config php

firebase 1:簡介

  firebase 是 Google 推出的網站整合性服務,提供認證(Authentication)、資料庫(Realtime Database、Firebase Database)、雲端空間(Storage、Functions、Extensions)、網頁空間(Hosting)、雲計算(Machine Learning)…等。 相關網站: Google Firebase Console  https://console.firebase.google.com/ 文件: https://firebase.google.com/docs?authuser=0&hl=zh 參考資料: Firebase 教學 - Firestore 安裝、寫入和讀取  https://www.oxxostudio.tw/articles/201905/firebase-firestore.html Firebase 教學 - 簡單的使用者註冊功能  https://www.oxxostudio.tw/articles/201905/firebase-simple-signup.html Firebase 教學 - RealTime Database 安裝與使用  https://www.oxxostudio.tw/articles/201904/firebase-realtime-database-start.html Day29 前端福音(4/4): Firebase-帳號系統&資料讀寫規則  https://ithelp.ithome.com.tw/articles/10206354 Firebase網頁教學[二] - 驗證篇  http://sj82516-blog.logdown.com/posts/1050619 用 Firebase Authentication 做一套簡易會員系統 – 電子郵件 密碼  https://www.letswrite.tw/firebase-auth-email/ 利用 Firebase Authentication 來實現註冊帳號和登入的功能  https://franksios.medium.com/ios-%E5%88%A9%E7%94...

CI4 + Google Oauth2

因自己在教育處寫的系統無法使用 SSO OpenID 的認證服務,所以改以使用 Google OAuth2.0 作 gm.kl.edu.tw 網域帳號的認證。不過,後來發現把這一部份研究清楚也很有好處,首先不會受限於一定要是 OpenID 帳號才能使用的系統,因為現實面上有很多老師和承辦還是不習慣使用 OpenID 附帶的 gm.kl.edu.tw 帳號;再後來用了 firebase 服務後,更可以擴大到更廣的 OAuth(如FB、Github…等)。  Google API 提供 OAuth2.0 的帳號認證服務,主要的功能是提供網頁系統可以認證 Google 帳號,並提供認證帳號的基本資訊。 Google Cloud 網址: https://console.cloud.google.com/ 在CI4要使用 Google OAuth2.0須先在 CI4 系統中安裝 「Google APIs Client Library for PHP」 composer require google/apiclient:^2.12.1 認證程式參考資料:Login with Google for Codeigniter  https://github.com/angel-of-death/Codeigniter-Google-OAuth-Login Google Cloud API 設定 1. 到 Google Cloud 建立專案 2. 在專案的 「API和服務」功能下建立 OAuth2.0用戶端憑證: 用戶端憑證有兩種情形:內部及外部。 「內部」表可以直接使用來認證與專案同網域的帳號,「外部」表可以用來認證任何網域的 Google 帳號,但需要經過 Google 的程式審查,我還沒試過!後來用了 firebase 後就可認證其他網域的帳號了。 在憑證的設定中,最重要的已授權的重新導向URI的部份,也就是一般的 Call Back URI,成功經過 Google 認證後會自動導向的網址,並會附帶 token,利用這個 token 就可以進一步取得使用者的基本資訊。 而同時有好幾個網站都用這一個用戶端憑證時(基本上我寫的所有網站都是用這個憑證…),要如何分辨是哪個網站來的?要回去哪邊? 就是用設定來指定 redirectURI: 我採用上述的範例程式改的,所以...

DNS 新增 CAA 紀錄

學校的網頁伺服器採用 HTTPS 模式時,均使用 Let's Encyrpt 認證服務。大多數的伺服器都依 Let's Encrypt 官網的說明,使用 Certbot 用戶端自動於過期前更新。 今天遇到 6/16 到期的 radius.tsh.tp.edu.tw 出現久違的 https 警告,發現該主機的 Certbot 並沒有自動更新。查詢相關資料後,用 sudo certbot renew 手動指令更新,出現下列的錯誤: 發現是 DNS CAA 錯誤問題。 摘錄「 https://ezbox.idv.tw/112/dns-caa-protec-ssl-tls-certificate/ 」說明: 目前全球簽發 SSL/TLS 憑證的機構已超過百個 要避免這些機構在某些情況下錯誤簽發憑證 (WoSign曾發生過) 就需要在簽發憑證前做一些檢查動作 在 RFC 6844 中定義了 DNS CAA Record 透過 DNS 的 CAA 紀錄,申明網域授權哪些機構可以簽發該網域的憑證 如果沒有設定 CAA 紀錄,則代表任何機構都可以簽發該網域的憑證 2013年1月 CA可以決定是否檢查該記錄,非強制性 2017年3月 CA/Browser 論壇決議 2017年9月起強制所有憑證發行機構在簽發憑證前必須檢查 DNS CAA 紀錄 如果是代管 DNS,則現行多數的DNS代管單位都可以直接設定 CAA 紀錄 若無法新增 CAA 紀錄,只能聯繫代管服務商要求提供協助設定 如果是自行管理DNS,則需要在自己的 DNS Server 上自行設定 解決方式只要用 SSLMate 提供的 CAA Record Helper 來協助產生紀錄,再輸入 BIND9 設定檔中即可。

MySQL 字串取代 UPDATE … REPLACE

學校的網頁由 http 改成 https 後,原本的內容是後台中,利用線上編輯 ckeditor 和 ckfinder 製作,圖片的連結已經是用 http:// 的網址方式寫入資料庫了。改換成 https 後會變成網頁中有 https 和 http 兩種連線的內容。在瀏覽器中還是會被辨識為「不安全」,看起來有點礙眼! 重新逐一修改網頁內的圖片不切實際,反正相關的網址都是儲存在 MySQL(MariaDB)資料庫中,所以一次用 REPLACE 字串取代的方式搞定。 SQL 語法: Update activity Set cover = Replace( cover, "http://www.tsh.tp.edu.tw", "https://www.tsh.tp.edu.tw") Where cover Like "http://www.tsh.tp.edu.tw%" 在資料表 activity 中,將 cover 欄位以 http://www.tsh.tp.edu.tw 開頭的內容,以 https://www.tsh.tp.edu.tw 取代 http://www.tsh.tp.edu.tw。其實這個 SQL  可以再簡化一點,不過,已經完成就算了。   

校務系統使用的幾個附加功能程式

校務系統結合數個知名的javascript或php程式來增加功能,最近陸續利用時間查看是否有更新,以便更新最新的版本。發現有部份程式的官方網站忘記了,還要利用google大神找出來…而且也忘了當初是如何和校務系統裡面的資料接軌,從頭再把程式推演一遍慢慢修改。先把這些系統的網站記下來當作備忘,之後再把各個系統與校務系統資料交換的方式也記下來,以後也好參考。 一、編輯器(Ckeditor): 網址: http://ckeditor.com/ 用於校務系統公告、訊息等輸入的線上編輯器。 二、DHTML UI: 網址: http://www.dhtmlx.com/index.shtml 用在學生資料的顯示上,不過它提供的 UI 項目很多,找時間把其他的控制項也放上去。 三、Email Function (phpmailer): 網址: http://phpmailer.worxware.com/ 校務系統線上發信功能。 四、編輯器(Tinymce) : 網址: http://tinymce.moxiecode.com/ 用於網誌系統的內容編輯器。 五、Ajax函式組(Mootools): 網址: http://mootools.net/ 用於首頁中 Ajax 功能 六、線上繪圖函式組(JpGraph): 網址: http://jpgraph.net/ 用於校務系統線上繪圖功能(成績單、各科人數…等)

利用gnuplot製作3d圖形

最近班級的第一次月考成績出爐,想說看看月考成績和班級座位是否有任何關係,找出 gnuplot 這套強大的函數繪圖軟體來作圖觀察看看。 做出的圖形如下,還真的可以看出座位表和成績之間的關係呢。 把製作的過程記起來,以免以後忘記了。 [@more@] 這個製作的過程很早之前就試過了,還在校務系統的程式上多加上成績項目和座位表的報表輸出的功能。因為 gnuplot 是利用指令作圖,太久沒用幾乎都忘光了,所以把完整的過程記錄下來當作以後的參考。 1.下載 gnuplot gnuplot 的官方網頁: http://www.gnuplot.info/ 到 sourceforge 下載最新版 下載後,將壓縮檔解開後,在「bin」資料夾內就有gnuplot的執行程式「wgnuplot.exe」。 2.至校務系統下載成績檔 校務系統內的「課程中心」的成績功能裡,有各項成績報表匯出的功能。 匯出的成績報表裡包含學生資料、成績和座位行列。 匯出的資料是純文字格式,資料用「Tab」分隔,共有7欄,有#開頭的行是註解,並不會用在繪圖。 其中成績是第5欄,座位是6, 7欄,定位的方式是站著講台往學生方向,坐標原點在左下方。其中第6欄是X,第7欄是Y。 把資料存成純文字檔,例如檔名:testdata.txt,放在gnuplot主程式同一個資料夾內。 3.執行 gnuplot   gnuplot主要是利用命令來執行繪圖的動作。 輸入「splot "testdata.txt" using 6:7:5」利用testdata.txt 中第6,7,5欄的資料順序來繪製3d圖形。 可以利用滑鼠拖曳圖形來旋轉。 輸入「set isosamples 100,100」設定100的取樣值,讓圖形可以更平滑,再輸入「replot」重新繪圖,可以看到變化。 輸入「set dgrid 40,40」增加繪圖點。 輸入「set pm3d」繪製更好看的3d圖形。   原本預設的顏色並不是很好,所以重新設定調色盤「set palette model HSV functions gray,1,1」重新上色   紅色的十字看起來很礙眼,所以利用「set hid...