2024年2月22日 星期四

AnswerSystem2022的開發

 

        這是補寫一下前一年的程式開發紀錄,因為我們學校有三個班級申請了「科技輔助自主學習」計畫,配到了二個班級60部平板(Microsoft Surface GO2)跑WINDOWS系統,這事其實應比較偏向「教學」,但這年頭只要用到電腦及網路都算到資訊組來,所以在學校端這事好像就變成由我來主導執行…

        除了配合上級長官學者那套A1A2…因材網、四學融入…那套之外,我想起了在遙遠的過去我自己的科技輔助專題,2006年時我自己寫了一個在課堂上使用的數位輔助教學的套組程式:AnswerSystem,那時一大堆學者教授及優秀的學校名師團隊都主張網際網路什麼都有,好像只要上網去就可以完成教學了!而我的主要想法是在課堂教學的階段,未必需要使用Internet,那些線上平台我認為比較偏向非同步運用。

        我著重教室內的科技,在那時提出了一種概念及實作:高互動教室,那時我的班級學生有分組平板,我建了如下的架構,不用什麼龐大的系統,使用WINDOWS電腦間的區域網路就可以了,依此開發了AnswerSystem,老師端投影教學、彙整多媒體教材、排程教學邏輯…派送題目給學生(在這時我就提出這種概念),學生端安裝的AnswerWizer則可以收到老師的派送,並有回答問題的介面,老師馬上得到所有同學的回答在投影幕上一起討論…



        剛好這又有這個話題,我就把以前這個概念全部重新開發…



也寫了較詳細的歷程在GoogleSite上:https://sites.google.com/cies.tn.edu.tw/codingrobot/%E7%A8%8B%E5%BC%8F%E4%BD%9C%E5%93%81/answersystem2022

2022年9月3日 星期六

學校NAS2伺服器維修紀錄

 

         繼前一陣子被停電弄掛的NAS伺服器(服務十幾年了),學校另一台NAS2竟然也無預警的掛掉了,在開學第一週很多事正忙的時候,把事情給擠到一塊了!就是9/1的上午突然有老師反應沒法讀到電子書光碟,一看還真的熄了…其實這種類型的機器是不太容易壞的,沒想到真遇上了~

        NAS是什麼?NAS 的全名為網路儲存伺服器 Network Attached Storage,是一台可以放在家中或辦公室的儲存設備,透過網路來存取,不論身處何方,都可以透過瀏覽器、手機應用程式或從區域網路,存取儲存在 NAS 內的文件、相片、影音,現在的產品都內建可擴充的豐富應用服務,可以用來建立私有「雲端」儲存設備。它的特色是網路傳輸是強項,檔案放在裡面不僅存取快也方便大家共用。

一開始就是這台proware的,服務了十多年才壞

        我在十多年前接了資訊組長的工作,就把這種設備及使用概念引入忠義國小,取代當時學校各處室及老師之間用WIN98網芳分享檔案的作法,忠義國小是一個活動很多的學校,行政常常要做成果,需頻繁地選用照片,有時找一張照片等目錄縮圖跑出來竟要十分鐘(一點都不誇張),換掉全校所有的SWITCH HUB及使用NAS伺服器大大地改善了這件事…

        因為NAS網路傳輸快的特色,我很早就規畫建立虛擬光碟系統網絡,使用映象檔放在NAS上共用比老師拿光碟本機播放還快速,而且一個映象檔共同存取就可以了。所以這次NAS2無預警地就熄火了,老師不能存取電子書就很抱歉了,必須儘快修復,根據判斷這種情形不是電源有問題就是主機板有問題…如果是主機板壞了麻煩就大了~
        測試方法是先把所有磁碟機抽出來(所有資料都以RAID6存在這幾顆硬碟中),拿一顆電腦用的POWER把24PIN總電源插上,按NAS的電源看一下狀況,以這台Synology的機器來說,一開始電源燈會不停地閃爍三分鐘內嗶了一聲後常亮: 幸好主機板是沒事的,那就是電供壞了吧!


        拆了NAS的久殼就會發現其實它跟電腦主機很像的,有塊主機板而且是那種陽春的單片機那種(被設計成某部份強大就行了,專精比較重要!),這台板子上的CPU完全比不上我們平常在用的電腦,記憶體也只有2G少得可憐,可是卻有四個GIGA網路PORT,接著五個槽的SATA擴充板,它的取向已經很明顯,作業系統跑的是Linux系的…既然拆開了,順道把它清一清~主要是把電源器拆下來換。

        拆了Power之後,馬上就發現一個討厭事:特規的電源,只有三組線24pin, 12pin, 8pin,其中24pin的主電源跟一般電腦的是一樣的,但另二組就沒辦法啦!有二個選擇,一是機器送回原廠修(來來回回兩個禮拜都不會好吧!價格一定又貴),二是上網去拍這顆power,我決定上網去找台達電的250(DPS-250AB-44B),呵呵!有人在賣(台達電不是臺灣的嗎?但都是大陸做的),唉!為了快修學校的東西,自己搞半天還得先壂錢買零件…※這賣家很有效率,二天就到貨了!

        假日到貨了,就把它換上試試吧!希望就這樣可以解決。





        說實在的修東西就是轉螺絲比較多,說不會的就不必動手,不過我是比較喜歡轉螺絲那種,能把東西給拆了再裝回去也是一種成就嘛!最後就是把電線網路線接回去最後開機測試,幸運地恢復了沒有其他問題~

2022年8月2日 星期二

小貓藍芽音箱

 

        網購平台上有一家店在我家附近,我本來都跟他們訂「風力仿生獸」(很便宜,陸製產品的格實在很有競爭力…),上次去看到這個小貓藍芽音箱,看了一下內容零件和價格,也是很便宜的選擇,所以買了一堆,想說可以給今年畢業的資訊小組小朋友一個小禮物…誰知!突然又停課,打亂了原本的計畫,直到畢業都沒能再遇到那些小孩~

        這個套件的好在於要自己組裝,且也算是時下的科技→藍芽音響,年輕人也會喜歡,我不喜歡送人家直接的禮物,尤其是對小朋友,我希望給小朋友的東西都能有點教育意義,最好能動手做…我把製作過程記錄一下:
1.鎖定二個單體

2.把電池盒鎖定在背板上,可看出要用四顆三號電池(6v的電)
3.焊接電源開關線路(不焊就是用轉的但容易接觸不良)

這個部份需要使用電烙鐵和熱風槍(吹熱縮套),是可以調整的課程內容,如果小孩子還算精明、手腳俐落,我會選擇指導他們在我的眼下學會焊接,否則這部份就由老師代勞學生旁邊看著~
4.把所有零件依組合狀態擺盤,有一塊很小的藍芽主板要用螺絲鎖上底板
5.開始組合音箱


其實這個套件的板子都也預做好了接合的卡榫,只要不是太手殘應該都能順利組起來,只不過便宜的東西用料還是有差,這種組合板是薄又脆弱沒錯!

組好了!這東西還是又電源設計,中間0為OFF,切到Ⅰ使用電池開機,切到Ⅱ使用USB電源(接電腦或行充)開機,開機後提示藍芽等待連接,手機或平板→藍芽→LuckyCat Bluetooth→配對。



※說這東西對小朋友到底有什麼教育意義呢?我覺得就是「動手」及「簡易的電工原理」,外國人對小孩子的教育不分男女,都希望他們動手去做自己的玩具,很小就讓他們學一點器具的使用及關於電流的知識,我覺得這是值得我們這邊學習的


2021年5月11日 星期二

做一個逐格動畫播放機


         在教小朋友影像動畫原理時,我經常用一些youtube上的影片來說明視覺暫留的原理,雖然小孩能接受這樣的道理,但其實蠻抽像的,前陣子偶然的機會去逛一下W先生的店(主要是去補一下風力仿生獸的貨),看到了一台動畫播放器…就買回來玩玩(要千元大洋),立馬組裝起來~



※是印度人的創意呢?我就想著來仿做一個,純樂趣沒有侵犯人家版權的意思,因為我覺得買來的用料是聚合板,很容易就壞掉的感覺…

就畫設計圖囉

再來就是雷切零件
        參考了原版的概念(並不是完全仿製),重新繪圖再用雷切把零切弄出來,我用的是壓克力,自覺得質感升級了…其中的轉盤將一個圓分成36等分,要不是用電腦來作圖我想是很困難的,更不用說切割的部份了~

一種自造的樂趣
        在這個設計中,轉軸的部份我加入了培林來增加順暢度及耐用度,效果很不錯


        以上只是硬體的部份,這個話題最核心的部份應該是動畫圖卡的設計,常見最標準的教材就是火柴人動畫囉!隨著手動的轉盤開始轉動,本來靜態的圖卡中的小人跑起來了,感覺十分療癒,又可以明確地了解這動畫的原理

        這一個簡單的動畫需要由36張慢慢變化的圖卡接力完成,大家一定會想:自己的美術不好不太可能畫出這些小卡片的,其實不會畫畫有不會畫畫的方法,我上網去GOOGLE一下動畫GIF可以找到一些正夯的卡通動畫,利用一個名為GifSplitter的程式可以將GIF檔反解成分解圖

將這些分解圖排列一下,再編輯成圖卡的規格後印出來裁剪就OK了,我是使用InkScape來製作這些圖卡的…,做一點手工還是必要的~


再來就可以欣賞作品了





2020年11月8日 星期日

寫一些關於數學練習的程式(2)


         應該是太容易就把分數類型及轉換的程式給寫好,加料的壞習慣又來了,想說應該要有分數計算的部份才對吧!想不到這個念頭又讓自己陷入很損耗腦細胞的程式碼漩渦中…想起來很簡單自然的事情,在實現面常常都是複雜的…※不是艱難而是複雜!

趁此機會讓畫面有點樂趣
        我在這支程式的畫面中,用了許多「憤怒鳥」的圖,它是我女兒小時候很喜歡的卡通人物,※這組Angry bird的圖是取自https://snap2objects.com/ (https://creativecommons.org/licenses/by/3.0/)而程式的icon及裡頭的關於頁用的Garfield,則是我個人很喜歡的,用的圖也是我女兒小時候手繪的~




        在寫分數的加減乘除這個部份,比較費神的加減的部份,主要是因為分母通分的部份,還有讓電腦亂數出題,有可能會出一些答案是負數的,這個在小學可是不適用的…

還有,我不僅想讓程式自己出題、自己給出答案,還希望它能列出建議的計算過程,最後也能有語音講出來的功能,這些都是費功的地方,一時間開始思考分數的SOP算法是我個人的收獲…發現在這些計算中,求二數的「最大公因數」的能力非常重要,所以五年級的課程中,因數這個話題,小朋友一定要學好…

在程式中,我就要先寫一個取最大公因數的演算式才行,找了一下資料最棒的方式應該是「輾轉相除法」又稱歐幾里得算法(英語:Euclidean algorithm),而在中國則可以追溯至東漢出現的《九章算術(幾千年前的人智慧怎麼如些高呀!)

我實作出下列CODE

--求最大公因數

function gcd(m,n)

  local remainder = Math.Mod(m, n);

  while remainder ~= 0 do

   m = n;

   n = remainder;

   remainder  = Math.Mod(m, n);

   if remainder == 0 then

     break;

   end

  end

 return n;

end

--求最小公倍數

function lcm(m,n)

  local product = m*n;

  local gcd_n = gcd(m,n);

  return product/gcd_n;

end

        因為 二數乘積 = 最大公因數*最小公倍數,所以找出最大公因數後,鐵定能算出最小公倍數。在程式中需要二個數字,就把原始值送進涵數去,不過要避開0,否則程式就可能會掛掉了…

        在避開負數這個問題方面,則是善用了While迴圈:

   n2x = Math.Random(min_num, max_num);

   n3x = Math.Random(min_num, max_num);

while n2x < n3x do

   n2x = Math.Random(min_num, max_num);

   n3x = Math.Random(min_num, max_num);

  if n2x > n3x then

    break;

  end

end

在程式中若希望亂數產生的n2x必須大於n3x,就判斷一下,萬一不是這樣就進入while巡迴中重跑到合適再跳出


寫一些關於數學練習的程式(1)

 

        最近突然想到,又寫了一些跟數學相關的教學及自學程式,當然這是我一直有興趣的事,前陣子剛好家中女王提到中年級小朋友關於分數的學習問題,一時動了來寫寫相關教學程式的念頭…

寫個可以教小朋友分數程式
       分數相關的程式,我以前沒有寫過,因為處理分數「顯示」方式的問題很讓人覺得麻煩…,不過這次就玩玩看吧!頂多寫不好,又沒什麼壓力~一開始很單純的,就是希望畫面上動態地出現某個分數,讓小朋友可以去辨識是真分數、假分數或是帶分數,因為中年級的範圍好像就中有這樣,再往後一點就是假分數與帶分數的互換…對於電腦程式來說,這其實沒有什麼難度就是Math.Radom就解決了,當然花了許多功夫在分數的呈現方式上,六分之五又不能寫成5/6,雖然有點麻煩,但設計一些涵數就也解決了

認識分數的種類

分數轉換

    為了增加撰寫樂趣,我就想著若能讓這程式講話,唸出題目唸出答案,好像是不錯的點子,找到了https://soundoftext.com/ 這個網站可以讓人家輸入文字,下載成mp3所以就把預想中程式可能會說的字眼都分別存成獨立的mp3,我的策略是:要說話時就在程式中讓多個mp3音檔湊出那句話,一開始我把那些音檔一一送進播放器,問題出現了:雖然會講,但音檔與音檔在播放器交替時會有延遲,導致講話會鈍…

這是九十九的音檔波形
        怎麼解決這個問題呢?我想必須先能在送進播放器之前,將各音檔先動態合併起來,方法當然是去爬文(英文不好但又得去爬外國人說的),別跟我說用Audacity、用格式工廠、用Audio Joiner呀!這些沒用的…,我的需求是在我的程式中可以動態將多個聲波檔合併成一個聲波檔的方法,原則上就是CommandLine工具或是指令或是dll涵式庫之類的,想不到外國工程師的文中提到用Windows內建指令就行了,語法如下:> copy /b 1st.mp3+2st.mp3+3st.mp3 output.mp3
在程式中呼叫了cmd.exe來執行這樣的語法,果然可以將多個音檔合併成一個,不過很快就發現了問題,怎麼產生的mp3明明檔案大小是多個檔加起來的,但卻只唸2秒就沒了,原來這種方法合併mp3,會將mp3帶著的ID3 Tag也一起加起來,當ID3 Tag混亂的時候就會出現這種狀況…怎麼解決?想了一下午,終於…我試著用Gold wave 將所有音檔轉成同一個屬性(取樣率及位元率),這問題被解決了!

這算是寫這支程式自己學到了一點!
※要不然前一陣子都是在研究後推式的動力紙飛機怎樣才會飛