發表於 Moodle

Moodle VS. Cron

cron/排定的工作/排程執行

Moodle 的 cron 是重要內建功能,它是一支 PHP 的腳本程式;一個正常運作 Moodle 站台,Cron 正常在背景執行是必要條件。Moodle cron 腳本會在定時執行各種類型的工作。(— Moodle 3.5 Cron )

Linux cron

如果我們需要定期執行某些程式,在 Linux 作業系統最常見的方式,就是使用 cron 來幫忙管理例行性工作排程。Linux 的 cron是一支服務,會在特定時間內執行我們定義好的工作(就像 Windows 的排定工作)。Cron 排程的資料是存在 crontab 中,也就是說,設定好 crontab 設定檔之後,系統就會自動依照設定的時間,定期執行重複性的工作。contab 所設定的工作將會循環的一直進行下去! 可循環的週期可為分鐘、小時、每週、每月或每年等。crontab 除了可以使用指令執行外,亦可編輯 /etc/crontab 來支援。 (至於讓 crontab 可以生效的服務則是 crond 這個服務喔!  — 鳥哥的Linux 私房菜– 第十五章、例行性工作排程(crontab))

查看自己的 crontab

crontab -l

編輯 crontab 內容

crontab -e or vi /etc/crontab

範例

校時

00 0,12 * * * root /usr/sbin/ntpdate 140.134.3.21;hwclock -w

還有其它的 cron 範例 

Moodle cron

Moodle 利用 cron 的功能,執行各個模組需要定時完成的工作,例如:發送信件、更新報表數據、計算活動完度…等。

admin/cli/cron.php 是要給 cron 執行的 PHP 腳本

 (排程執行) 的重要性,並不輸給其它 Moodle 功能;但卻是最常被忽略的。Cron 在 Moodle 是一支 PHP 的腳本(script)程式,要讓 Moodle 正常運作,cron 必須要定時的在作業系統背景運行。(一定要把 cron 設定好,否則你的 Moodle 會不正常!)

IMPORTANT: Do not skip setting up the cron process on your server for your Moodle. Your site will not work properly without it

從 2.9 開始官方不建議從瀏覽器執行 cron 網頁(之前可以從網頁 admin/cron.php 直接執行)。一個指令就可以完成,crontab 就是你需要的指令。crontab 裡面的指令在 admin/cli/cron.php ;cli(command line interprter,就是命令/指令),以下試著用幾個步驟完成 cron 的設定…

1. 測試 PHP

首先,你必須要確定你的環境,在您的伺服器能用命令的方式,跑 Moodle提供 cron 的 PHP 腳本(.Moodle cron script);也就是下一步中,要設定在 crontab 內的命令(就是 admin/cli/cron.php)。請測試以下這段: 

php /var/www/html/moodle3/admin/cli/cron.php 

var/www/html/moodle3/要換成你的路徑。

# php /var/www/htom/moodle_taiwan/admin/cli/cron.php
Server Time: Wed, 05 Dec 2018 07:53:10 +0800
...以下省略

你應該會看到:

2. 編輯排程

編輯 /etc/crontab 檔案, 加入以下內容,並儲存:

*/5 * * * * apache php /var/www/html/moodle_taiwan/admin/cli/cron.php

/var/www/html/moodle_taiwan/要換成你的路徑。

時間/日期格式說明如下表:

分鐘小時星期執行身份指令
0~590~231~31 (29,30)1~120~6(0是星期日,6是星期六)帳號cron.php

vi /etc/crontab
*/5 代表每5分鐘執行一次(時間自己決定);apache 代表執行帳號;cron.php 就是脚本。

3. 檢查

設定好了,也要有執行的證據才能安心吧? 檢查 log , 查看有無 cron 執行的記錄.

tail -f /var/log/cron

# tail -f /var/log/cron
Nov 28 23:05:02 MoodleTW CROND[1172]: (root) CMDOUT (Cron script completed correctly)
Nov 28 23:05:02 MoodleTW CROND[1172]: (root) CMDOUT (Cron completed at 23:05:02. Memory used 56.4MB.)
Nov 28 23:05:02 MoodleTW CROND[1172]: (root) CMDOUT (Execution took 0.523513 seconds)
Nov 28 23:10:01 MoodleTW CROND[1569]: (root) CMD (php /var/www/html/moodle_taiwan/admin/cli/cron.php)
...

重點在 cron.php 有執行了.

done.


PS: 如果您是我們加值服務的客戶,/var/log/cron 沒有記錄,您可以下:

journalctl -xe

Dec 05 12:01:01 MoodleTW crond[3722]: (*system*) RELOAD (/etc/crontab)

在 crontab 儲存後就應該會看到 RELOAD /etc/crontab 這行;當然有看到 admin/cli/cron.php 就更加確定OK了。

發表於 Moodle

NodeJS 版本備忘

不知道大家在維護/開發 Moodle 時,有冇常常搞不清楚 NodeJS 及 NPM 版本,就是裝了多個 Node 的套件後才出現/發現版本搞錯了。

NodeJS 版本

最新的RoadMap 請自行到這裡下載

ReleaseStatusCodenameInitial ReleaseActive LTS StartMaintenance LTS StartEnd-of-life
v10Maintenance LTSDubnium2018-04-242018-10-302020-05-192021-04-30
v12Active LTSErbium2019-04-232019-10-212020-11-302022-04-30
v14Active LTSFermium2020-04-212020-10-272021-10-192023-04-30
v15Current2020-10-202021-04-012021-06-01
v16Pending2021-04-202021-10-262022-10-182024-04-30

npm list -g --depth 0
可以查看目前安裝在 global 的套件

發表於 Moodle

影片浮水印Videos Watermark

一直以來,如何避免自己影片被他人盜用,都是重要的議題,除了文件保護機制外,在自己錄制的影片中加上浮水印,是最實際的作法:

moodletw-videos-Watermark-浮水印.jpg

影音教材搭配浮水印

或者像這樣也可以

影音教材搭配浮水印詳細規格請到我們網站查看,或到 http://www.moodle.com.tw 申請帳號測試使用,謝謝.

發表於 MoodleMoodle開發

MoodleSET with MinGW

What is MinGW

在協助 Moodle 開發的案子裡,因為 Moodle 是LAMP的系統,常會需要提到開發工具、環境;而在 Windows 系統要用 unix-like 的環境,就會想到 MinGW 及 Cygwin。MinGW (Minimalist GNU for Windows) (發音可以是「Min~G~W」或是「Min~W」, 也有人唸做 「名貴(台語發音)」 或是 min gnu 「明~格奴」)。Cygwin (發音-「賽葛-wing」)。

嚴格來說,Cygwin和MinGW並不是同一個範圍的東西,Cygwin模擬出POSIX環境,能夠編譯並運行大部分的類Unix程式。
而MinGW只是用來編譯能在Windows作業系統中執行的程式的工具鏈(toolchain)而已,跟MSVC才是同個範圍的。

moodleset-e8a893e7b7b4e88887e7a094e7bf92

Cygwin

Cygwin 的目的是希望透過一個 DLL (就是 Cygwin1.dll, 通常在 C:\Windows\System32 底下) 建立一個系統呼叫轉換層,將原先 UNIX 世界裡的 system call 呼叫,經由這個 DLL 把它們對應到 Windows 的系統呼叫,如此一來就可以很方便在 Windows 底下模擬出一個 UNIX 平台來,這樣你不需要一個 UNIX 機器照樣也可以開發 UNIX 程式。開發好的程式只要拿到 UNIX 平台上就可以使用。
同理原來UNIX上諸多 Open source 程式也可以拿到 Windows 世界來使用,當然啦!UNIX system calls 與 Windows APIs 不盡然可以一對一對應,Cygwin 的目標在於儘可能相容(Compatible),執行績效倒不是重點考量。

MinGW

MinGW 原來是 Cygwin 裡 GNU 開發工具的一個分支,但它沒有 Cygwin 複雜,而且目的也與 Cygwin 不同。(WiKi-MinGW )。它的目的反而是將 GNU 這個 open source、free 的開發工具移植到 Windows 平台,它直接產生出來的PC視窗平台機器碼,可以說與微軟 Visual Studio 做出來的一摸一樣,可以彼此互相通用。執行效率反而是重點。

MSYS2

MinGW 常與 MSYS(Minimal SYStem)搭配使用,Msys是在 Windows上的一個瘦身型 shell 功能,它也是從 Cygwin 改版過來的,但更在乎與GNU相關的事物,因此沒有 Cygwin 那樣肥大的缺點。
因為 MSYS 的長期停止更新,MSYS2後來便出現了。MSYS2繼承了MSYS的理念,整合了32位元和64位元的 MinGW,並使用「pacman」來管理套件,讓原本沒有什麼擴充能力的MSYS,也可以自由且迅速地安裝各式各樣的套件了。

GNU

GNU是一個類Unix(Unix-like)的作業系統,經常與Linux核心搭配在一起(GNU/Linux即為一般我們所說的「Linux作業系統」)。有許多軟體開發的程式都是運作在GNU的環境中,無法直接在Windows作業系統中使用,就得依靠如Cygwin和MinGW(Minimalist GNU for Windows)等軟體在Windows作業系統中,建立出GNU程式的開發環境。 繼續閱讀 “MoodleSET with MinGW"

發表於 Moodle企業內訓

徵 解決武漢疫情的「學習方案」?

徵 解決武漢疫情的「學習方案」.png
徵 解決武漢疫情的「學習方案」
徵求臺灣智慧學習產業協助解決武漢疫情的「學習方案」,我們會依據 貴公司產品或方案,整理成新聞稿發布,並於海內外展會或相關平台行銷。防疫期間,智慧學習是教育的口罩,臺灣智慧學習產業鏈在防疫工作上不能缺席!
舉凡 貴公司產品如銀離子抗菌螢幕(減少傳染)、遠距直播(學校不停課)、語言平台(不用坐飛機到海外學)、線上寫程式(在家也能跟企業講師學)、圖書專用紫外線除菌箱(借書安心)…等。都歡迎踴躍提供資訊。

防疫如救命,如有意加入考量時效緊急,懇請於2/10(一)下班前,「線上」填寫公司的「防疫學習產品」方案。

財團法人資訊工業策進會蒐集個人資料告知事項暨個人資料提供同意書
版本:P-V5-DEI-004

財團法人資訊工業策進會(下稱本會)為遵守個人資料保護法令及本會個人資料保護政策、規章,於向您蒐集個人資料前,依法向您告知下列事項,敬請詳閱。

一、 蒐集目的及類別
本會因辦理或執行業務、活動、計畫、提供服務及供本會用於內部行政管理、陳報主管機關或其他合於本會捐助章程所定業務、寄送本會或產業相關活動訊息之蒐集目的,而需獲取您下列個人資料類別:姓名、性別、電子信箱、手機、出生年月日、聯絡電話區碼(H)、聯絡電話(H)、居住縣/市、最高學歷、連絡人姓名、連絡人關係、連絡人電話、服務機構、統一編號(公司)、職稱、辦公縣/市。
※您日後如不願再收到本會所寄送之行銷訊息,可於收到前述訊息時,直接點選訊息內拒絕接受之連結。

二、 個人資料利用之期間、地區、對象及方式
除涉及國際業務或活動外,您的個人資料僅供本會於中華民國領域、在前述蒐集目的之必要範圍內,以合理方式利用至蒐集目的消失為止。

三、 當事人權利
您可依前述業務、活動所定規則或依本會網站(https://www.iii.org.tw/)「個資當事人行使權利專頁」公告方式向本會行使下列權利:
(一) 查詢或請求閱覽。
(二) 請求製給複製本。
(三) 請求補充或更正。
(四) 請求停止蒐集、處理及利用。
(五) 請求刪除您的個人資料。

四、 不提供個人資料之權益影響
若您未提供正確或不提供個人資料,本會將無法為您提供蒐集目的之相關服務。

五、 您瞭解此一同意書符合個人資料保護法及相關法規之要求,且同意本會留存此同意書,供日後取出查驗。

個人資料之同意提供:
一、本人已充分獲知且已瞭解上述貴會告知事項。
二、本人同意貴會於所列蒐集目的之必要範圍內,蒐集、處理及利用本人之個人資料。

發表於 Moodle

要開學了…焦慮中

這個學期有很多學校,從 Moodle2 昇級到 Moodle3;不只是 Moodle 昇級,作業系統、資料庫甚至 Moodle的資料(課程及教材),也都要跟著昇級,所以您(如果是有經驗的 Moodle管理員)就知道有多少事要做了 — 焦慮(有人在角落)。anxiety-smiley-2979107_640

除了前面提到各種議題外,我們最關心的是效能及穏定性。學期開始後我們監控 Moodle 平台,以確保學生及老師能在新的平台有好的使用體驗。=-=, 新的功能可以稍微慢點, 我說.

在台灣很多老師開學前就會開始準備課程,我們要提早訓練新平台;任何新的改變都會讓人焦慮(我不曉得是不是這麼說, 或許有心理學專家可以為我們解惑)。僅管如此,我們偉大的老師們,都克服了並很努力學習新版的 Moodle。光是這點就令我配服。

接著就是等開學第一天了,開學當天要準備解決隨時來的問題,在公司監看著儀錶板,最好能在校方管理者發現問題前就把問題解決。)

像是Moodle 平台的回應速度太慢、資料庫的逾時(timeout)時間或是 Apache 有過多的行程…一切的一切都讓人自我懷疑是不是要再加機器?

Moodle伺服器群下載網頁速度
Moodle伺服器群下載網頁速度

這時就不得不提到拆分Moodle的服務,想法是將 Apache/PHP 與 MariaDB(MySQL) on 在兩台不同的機器,藉以改善 Moodle的效能。很多學校都進行了 Moodle 服務拆分,效能上也的確有改善。

Moodle 服務拆分
Moodle 服務拆分

簡單的步驟說明如下:

  1. 備份,一定要備份。
  2. 複製 Moodle Data 到新的 Apache/PHP 主機,或者直接用舊的 Moodle, 只是要把 MariaDB(MySQL)停用
  3. 如果你選擇複製Moodle資料,可能會花比較久的時間。
  4. 然後將資料庫備份(用 mysqldump ), 拿到(copy)新的 MariaDB 還原。
  5. 確定兩台互通,沒有因為防火牆擋住。

還有我們建議的 Apache 設定也分享給大家:

  • MaxClients 設成新主機 8成的記憶體, 然後除以 100MB就可以得到.
  • MaxRequestsPerChild 建議設成 1000
  • KeepAliveTimeout 設成 10(s)

以上資訊僅供參考,在不同的環境,不同的作業系統、Apache/Nginx、MariaDB/MySQL/PostgreSQL/Oracle/Synbase/MSQL 都有不同的設定,無法一一說明,請見諒。

你們也有相同的問題嗎? 當我們在準備新平台的同時,一起討論吧。

發表於 Moodle

Moodle 主機更新時山現 GPG error

Ubuntu 14.04 只維謢到 2019年4月, 所以有不少學校客戶(企業好像都用RedHat?)的 Moodle 主機都進行更新, 但在 update 時會遇到簽章無法進行驗證(…couldn’t be verified…)的訊息, eg:

W: GPG error: http://sgp1.mirrors.digitalocean.com trusty InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY CBCB082A1BB943DB

Moodle GPG error

解法有很多種,在這只提供最簡單的:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CBCB082A1BB943DB

再重新跑 apt-get update 即可。

ref: https://chrisjean.com/fix-apt-get-update-the-following-signatures-couldnt-be-verified-because-the-public-key-is-not-available/

ref: https://itsfoss.com/solve-gpg-error-signatures-verified-ubuntu/

 

發表於 Moodle操作教學

校定班級群組選課

前幾天教了大家如何批次匯入校定班級群組的成員,而今天要教大家的是利用校定班級群組選課。利用校定班級群組選課的優點有很多,像是可以省去一個一個加選的麻煩,跟批次匯入比較起來,則是不需要在每次加選時都製作匯入的 CSV 檔案,讓選課的效率提升許多。

校定班級群組有兩種選課方式,差別在於使用「校定班級群組同步化」時,若群組人員有異動,則選課名單也會跟著異動;而在選課名單中「加入校定班級群組到此課程」,則會以選課當下的名單為主,若群組人員名單有異動,選課名單不會跟著異動。接下來看看兩種方式如何操作吧~

校定班級群組同步化

路徑:課程管理 > 用戶 > 選課方式
展開新增方式的下拉式選單,選擇「校定班級群組同步化」,輸入名稱並選擇校定班級群組,設定完成後點選「新增方式」,則該群組的使用者皆會被加選進入課程,且選課名單會依群組名單異動而自行更新

加入校定班級群組到此課程

路徑:課程管理 > 用戶 > 已經選課的用戶
點選「加入用戶到此課程」,在選擇同期生的下拉式選單中選擇群組,最後點選「將被選出的用戶和同期生加選」,則該群組的使用者皆會被加選進入課程,但選課名單不依群組名單異動而更新

發表於 Moodle操作教學

Moodle XML 題庫匯入

Moodle 題庫匯入的方式有很多種,像是 GiftAiken 都是小編比較常用的格式,如果忘記格式可以點連結進去複習哦,而今天要跟大家介紹的格式則是 Moodle XML。

跟 Gift、Aiken 格式比較起來,Moodle XML 格式又更複雜一點,比較難製作可直接匯入的檔案。因此,我們會先製作簡易版的格式,再藉由格式轉換網站,轉換為 Moodle XML 格式。

1.製作 TXT 檔

首先,先以文字檔編輯試題,並以 UTF-8 編碼儲存。每個試題第一行皆為題型;第二行則為題目;第三行為選項或答案,請參考以下各題型範例::

是非題:若答案為「是」則寫 true,若答案為「否」則寫 false。
truefalse
太陽從東方升起。
Answer:true

選擇題:第三行開始為選項,每個選項一行,最後一行則為正確答案的編號,若是多選題則以半形逗號區隔。
multichoice
貨物輸入本國後再輸出,稱為
A.過境貿易
B.轉口貿易
C.復運進口貿易
D.復運出口貿易
Answer:D

簡答題:第三行為正確答案,若有多種解答則以半形逗號區隔。
shortanswer
二加二等於
Answer: 4, 四

配合題:第三行為選項,第四行為配對的答案,以此類推。
matching
請將下列國家與其首都對應起來。
A. 加拿大
match: 渥太華
B. 義大利
match: 羅馬
C. 日本
match: 東京

克漏字:需填空的地方皆以 { } 顯示,先輸入配分,兩個冒號間則為題型,每個選項用 ~ 區隔,正確答案則在 ~ 後加上 %100%。
cloze
美國的感恩節是在十一月的第{1:MULTICHOICE:~二 ~三 ~%100%四} 個星期四。

題庫格式

2.線上格式轉換

進入線上格式轉換網站,登入後點選 Quiz XML,設定選項編號後,選擇檔案上傳或直接貼上試題文字。

  • Choices:依據所製作的試題選擇,用以上的試題為例,選項標號皆為 A. B. C.,則選擇 A. B. C. or A) B) C)
  • Answer Numbering:轉換成 XML 格式的選項標號

設定完成後,可點選「Preview」先預覽試題,亦可直接點選「Download」下載 XML 檔案。

格式轉換

3.匯入題庫

取得 Moodle XML 格式檔案後,即可到 Moodle 進行題庫匯入。
路徑:課程管理 > 題庫 > 匯入
檔案格式選擇「Moodle XML」,再加檔案上傳,點選匯入即可。

題庫匯入

4.匯入結果

匯入成功後即可預覽試題。

匯入結果
發表於 Moodle操作教學

討論區分組評比

分組的應用範圍十分廣泛,像是作業、討論區,都可以小組的方式進行。最近就有老師詢問到討論區是否可以分組進行評比,答案是可以的,請看以下說明:

1.權限設定

若是由老師進行評比,則可以跳過此步驟。
若要讓學生互相評比,管理者需先開啟學生評比的權限。
路徑:網站管理 > 用戶 > 定義角色
編修學生角色,找到 文章評分 mod/forum:rate 權限後,設定為允許。

2.分組

進行分組討論評比前,需要先確認課程已經分好組別
路徑:課程管理 > 用戶 > 分組
如果還不會使用分組,請點擊 Q:如何設定分組/分群 複習哦!

3.討論區 – 評比設定

建立討論區,輸入名稱、簡介等基本資訊後,展開「評比」的設定,教師可設定「彙整統計類型」、「分數最大值」、「評比期限」等。

4.討論區 – 分組設定

展開「共通的模組設定」,群組模式可選擇「分隔群組」、「可視群組」,兩種群組模式說明如下:

  • 分隔群組:無法瀏覽其他組別的討論內容
  • 可視群組:可瀏覽其他組別的討論內容

5.評比畫面

設定完成後,同組成員即可互相評比,非該組成員可以瀏覽但無法評比。