搜尋

搜尋結果

韓國嘻哈男團「防彈少年團」巡回歸澳門!
音樂聯合國
LifeMag Editor・2017-09-05

《2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR IN MACAO》 11月4日 (星期六) , 澳門威尼斯人®金光綜藝館 9月5日門票火熱開搶 韓國大勢嘻哈男團「防彈少年團」 (BTS) 繼拿下「2017 BILLBOARD MUSIC AWARDS TOP SOCIAL ARTIST」後,再度被美國《時代周刊》封為「全球25位最具影響力網路人物」之一!擁有超高人氣的 BTS 再次把世界巡迴演唱會帶來澳門! LIVE NATION呈獻 《2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR IN MACAO》將於2017年11月4日 (星期六) 於澳門威尼斯人金光綜藝館舉行,定必再次成為城中熱話!門票由港幣/澳門幣680起,將於9月5日(星期二)上午10時起透過金光票務售票處、快達票及澳門廣星傳訊公開發售。 關於藝人:防彈少年團 韓國嘻哈男團「防彈少年團」BTS 為韓國男子音樂團體,由JIN、SUGA、J-HOPE、RAP MONSTER、JIMIN、V 及 JUNG KOOK七名成員組成,隸屬BIG HIT娛樂經紀公司旗下,為BIG HIT娛樂第一個獨立製作培養的團體。 BTS在2016年發行的第二張正規專輯《WINGS》是韓國2016年度銷售量最高的專輯,也締造了97國 iTunes音源冠軍的紀錄、並拿下美國BILLBOARD專輯榜200強第26名,是目前韓國藝人在BILLBOARD專輯榜上的最高名次。 另外根據韓國GAON 銷售排行榜公布2017年上半年銷售排名,BTS防彈少年團也以 2 月發行的專輯《WINGS 外傳: YOU NEVER WALK ALONE 》毫不令人意外地登上了冠軍寶座,這張專輯至今累積銷量為 72 萬 9295 張,並在美國BILLBOARD專輯榜拿下61名,這讓BTS成為首位連續4張作品皆在全美BILLBOARD二百強專輯榜中佔有一席之地的韓國藝人。 最近《時代周刊》所公布的25名「最具影響力網路人物」中,防彈少年團打敗Justin Bieber、Donald Trump、Rihanna、Katy Perry等人並列榜上,同時也是韓國唯一上榜代表。 BTS自2017年2月以韓國首爾為起點展開的「2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR」世界巡迴演唱會,截至7月初已在香港、日本、泰國、智利、巴西、美國、澳洲、菲律賓、印度尼西亞等城市舉行共32場公演的世界巡迴演唱會,預計這次世界巡迴動員約40萬人次參加。 《2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR》澳門站 日期 2017年11月4日(星期六) 時間 晚上8時 地點 澳門威尼斯人 金光綜藝館 門票 企位 VIP套票 (包括企位門票一張、soundcheck入場資格、優先進場): 港幣/澳門幣2380 A 區: 港幣/澳門幣1880 坐位 B 區: 港幣/澳門幣1680 C 區: 港幣/澳門幣1280 D區: 港幣/澳門幣980 E區: 港幣/澳門幣680 公開發售 2017年9月5日(星期二)上午10時 網上訂購 www.cotaiticketing.com 、www.hkticketing.com 及macauticket.com 主辦 Live Nation 查詢 (852) 2989 9239

澳門今期盛事特別多,留喺屋企亦有 Home Media 為您帶嚟無限精彩!
娛樂殿堂
Cheers!・2024-11-20

澳門今期盛事特別多,留喺屋企亦有 Home Media 為您帶嚟無限精彩! 雲遊戲、劇集、電影、綜藝等多元化娛樂每月更新, 國際、亞洲以至本地最新娛樂資訊,全部都可以喺 Home Media 電視盒子 / App 一站式盡享 ,CTM流動電話 / 光纖寬頻客戶仲享免費體驗! 本月為您精選: 雲遊戲 #OnePlay:《Elden Ring》全球最火熱遊戲之一,無需頂級裝備,只要一個 OnePlay 賬號即可喺任何裝置暢玩! #Blacknut:《Kawaii Deathu Desu》最新上架 Blacknut,超過 500 款遊戲適合全家玩樂 劇集 + 綜藝節目 #myTV SUPER 緊貼 TVB 台慶鉅著 《黑色月光》、王牌綜藝《中年好聲音3》,仲有 最新男團選秀節目《星光閃耀的少年》,由 #李聖經 擔任 MC,#李昇基 #姜大聲 作為導師,見證來自全球各地星光少年嘅出道之路 升級 myTV Gold 睇亞洲人氣劇集《孤獨的美食家》、《隱藏》 #芒果TV國際 追蹤內地熱門話題綜藝 《再見愛人 4》、《花兒與少年 6》 電影 #hmvod 搶先睇: 荷李活驚悚片《小丑:雙瘋》,以及高分好片《全職乖孫》大放親情催淚彈 依家申請 5.5G 月費計劃即送 12 個月 myTV SUPER(基本版)服務,更享優惠價 $28 / 月 Blacknut 雲遊戲 / hmvod / 芒果 TV 國際服務 居家光纖寬頻客戶低至 $0 即可換購 Home Media 娛樂套裝:Home Media 電視盒子 + myTV SUPER(基本版)+ hmvod + 芒果 TV 國際服務! Home Media 優惠詳情:https://s.ctm.net/vBr1D 立即下載 Home Media App,一個賬號盡享最新體育賽事直播、電視劇、電影、綜藝等豐富娛樂:https://s.ctm.net/0X0oD

新濠影滙呈獻 炫音狂熱《‘愛是信仰 ’唱會 - 蕭敬騰 x 范瑋琪》於4/14正式公開發售
音樂聯合國
LifeMag Editor・2016-04-14

新濠影滙綜藝館 (下稱「綜藝館」)延續「炫音狂熱」台灣音樂紅人騷的音樂精髓,蕭敬騰和范瑋琪的《’愛是信仰’ 演唱會》將於二零一六年五月十四日登陸亞洲娛樂總匯 – 新濠影滙。搖滾狂野的蕭敬騰加上深情感性的范瑋琪,更將首度合體現場演唱兩人甜蜜作品《鈴鈴》,兩位華語樂壇巨星屆時將以其一連串的金曲爆發現場最高感度的音樂衝擊,門票將於二零一六年四月十四日(星期四)上午十一時公開發售。 票價詳情: 演唱會 炫音狂熱 ‘愛是信仰’ 演唱會 - 蕭敬騰 x 范瑋琪 日期/時間 2016年5月14日 晚上八時(星期六) 地點 新濠影滙 - 新濠影滙綜藝館 票價 貴賓廂房-港幣/澳門幣25,000元(12座位)/50,000元(24座位)* 貴賓席 – 港幣/澳門幣1,580元** A區–港幣/澳門幣1,080元B區–港幣/澳門幣880元C區–港幣/澳門幣680元 D區–港幣/澳門幣480元 *詳情請參閱連結附件 **貴賓席門票包含專享貴賓廊服務、特色餐飲選擇(需額外收費)和派馳免費入場 網上訂票 票務處 查詢熱線 新濠影滙網站www.studiocity-macau.com 微票兒show.wepiao.com 快達票www.hkticketing.com 新濠影滙 – 新濠影滙綜藝館票務處 澳門– 853 8865 3333 香港 (免付費電話) – 800 906 282 中國 (免付費電話) – 4001 208893 酒店住宿套票 炫音狂熱 愛是信仰 蕭敬騰 x 范瑋琪酒店住宿套票由$3,798++起,詳情請瀏覧新濠影滙網站www.studiocity-macau.com 。

Ubuntu 的簡易日常更新
科技新知
MacauYeah・2025-12-17

早陣子跟新認識的朋友聊天,聽到他們因為要轉伺服器平台,煩惱如何做作業系統層面的定期更新。筆者亦都分享一下自己是如何做 Ubuntu OS 層面的定期維護。 沒錢,就用最原始的方式解決 因為Ubuntu也算是常見的linux品牌,所以基本有有商用軟件可以偵測OS的狀態,並針對它推送更新。不過如果你像筆者一樣,是個貧窮的革命家,那就只有土炮一點自己做鏡像點及做測試。 建立一個 ubuntu 的 deb 包 mirror。手動單次地用步 mirror,確保自己其他 server 同一個時間段都只會取得同一個更新。 停了 ubuntu 的 kernal 自動更新。不然的話,mirror 有更新,ubuntu 亦會偷偷地自動安裝了新的kernal,只是等待你的重啟。 使用一個測試機,先經 mirror 更新到最新的狀態。運行一段日子後,其他機再陸續更新。如果你投産環境有多於一種配置,就考慮要多個不同的測試機。更新指令直接做成 script,方便在其他機器中重複。 輪流 ssh 登入各台機,執行相同的更新指令。更新指令經 git 同步到其他機器。為確保不受 ssh 斷線的風除,必要時還需加入 tmux 。 多機器的煩惱 上述的做法雖然可行,不過當你有十台以上的機器,重複做 ssh, tmux, git checkout, script 互動,也是很累人。考慮一次性地全自動化執行,還是有必要的。筆者對上述的第四步驟,作出一些取捨,以確保更新速度足夠快,可以順暢地執行。 什麼是必需要更新的? 筆者觀察到,在 container 技術出現後,其實很多時安裝應用都不會直接在 OS 層安裝 deb / rpm 包,都是直接經 docker image 去做。所以OS層面,或者很多服務都不會被啟動。筆者亦發現,至少在ubuntu下,只更新kernel,對比無腦全更新所有 deb 包,會快很多很多。 如果可以,我們只更新kernel,再加對應的 container runtime,是不是更新對令相對地穩定,而且可以經外部統一管理。也就是不用在每一台機中進行 tmux + git checkout ,全數在外部推送 ssh 指令? 筆者就用 multipass VM + ssh key,表達一下執行概念。 ssh -i /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa ubuntu@10.115.189.200 -- apt-get autoremove -y ssh -i /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa ubuntu@10.115.189.200 -- apt-get update ssh -i /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa ubuntu@10.115.189.200 -- apt-get install -y linux-generic linux-headers-generic linux-image-generic ssh -i /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa ubuntu@10.115.189.200 -- reboot 上述最大的假設,是第一、三步,更新 kernel 時不會因為網絡問題導致 ssh 斷線,因為它們都是系統級別的改寫,中斷後並不能確保可以重來。第二步就很安全,隨時重來也沒有問題。 這樣,我們就可以在任一台管理機,經過一個 shell script for loop,更新所有其他機器。 如果我們對於網絡還是有些疑慮,我們也可以試用一次性排程式的方式去做。 ssh -i /var/snap/multipass/common/data/multipassd/ssh-keys/id_rsa ubuntu@10.115.189.200 echo '/your/script/location' | at 08:00 PM 17.12.2025 這樣的好處是,我們可以連 tmux 的開啟也省略,git checkout 也可以經固定的 script 執行(只是很煩鎖)。但這也會有壞處,就是看不到執行的情況,只能事後檢查系統狀態,是否已更新過。 當然前述 ssh key 的方法也可以加入 git checkout 更加深化不同的更新 script,但這又會增大斷線可能。ssh key 還是以快速完成指令更實際。 註:因為網安原因,筆者把上述 script 中的 S U D O 關鍵字去掉,這樣 blog 才能發出。

docker swarm 回到最基礎的群集組建
科技新知
MacauYeah・2025-11-21

雖然筆者都知道,全世界在講 k8s ,全世界都叫筆者放棄 docker swarm,但無獨有偶,docker swarm 還是有使用的價值。 你只有單個服務在運行,只想要做冗餘或分流。快速地用 docker swarm 做最小可行性産品,推出市場。 傳統的HA功能做到了,但你沒有中央匯整日誌的功能。而你也不想把事情攪得太複雜,使用docker swarm 可以讓你在任何一個管理節點上查看不同 container 的日誌。 你的客戶只提供VM,他可能有自己的k8s平台,但不讓你使用。自建一套docker swarm ,先入場,事後擴展再要求客戶提供k8s,對於客戶來講,先證明系統是有價值的,在金錢成本上或能力上,一定是件比較可以接受的事。 筆者之前介紹過一系列的 docker swarm 教學,但生成群集的部份一直沒有做介紹。因為實在太簡單,所以一直都沒有收納在教學內容當中。但現在考慮其完整性,以及為了讓大家感受一下它有多簡單,所以重新寫了組建群集的步驟。 組成群集 以前各家不同的軟件,想要起一個群集,要左攪右攪,又要重啟。而docker swarm真的很簡單,只要各機中有 docker ,再在各機中順序打指令就好。 node 1 使用docker swarm init docker swarm join-token manager # node 1 > docker swarm init > docker swarm join-token manager To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx:2377 其餘的管理員節點就根據上述的提示,使用 docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx:2377 就好。只要總數的管理員節點有奇數個就可以了(包括當初的node 1)。即是1、3、5等都可以。這是因為在容錯的情況下,必需由管理節點作出多數決,才能容易地知道判斷是哪些節點出現問題。 如果不為容錯,只想增加可工作的機器,那麼我們只需要增加工作節點。我們可以在任何管理員節點生成docker swarm join-token worker > docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-yyyyyyyyyyyyyyyyyyyyyyy yyy.yyy.yyy.yyy:2377 若想要檢查各個節點的工作狀態,在管理員節點上執行 docker node ls 看到了。 docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION xxxxxxxxxxxxxxxxxxxxxxxxx * node1hostname Ready Active Leader 28.5.1 yyyyyyyyyyyyyyyyyyyyyyyyy * node2hostname Ready Active Reachable 28.5.1 全部教學請見 https://macauyeah.github.io/AProgrammerPrepares/VMDockerNotes/SwarmModeCommandCN.html

免費自用的私人AI助理 | Ollama - 本地大型語言模型
科技新知
MacauYeah・2025-01-06

不知道在澳門的朋友,有多少可以正常接觸openai?因為地方政策問題,像openai這種國外的大型語言模型(下稱LLM),澳門區都沒法接觸到。但隨著時間過去,即使我們不能直接接觸到算力很強的收費AI,我們只要有電腦,也可以佈署一些開源版本的LLM。只要我們可以安裝到ollama這套本地運算軟件就好 ollama是一個giuthub上的開源工具,讓用戶能夠在自己的電腦上運行各種大型語言模型(LLM)。基本上只要電腦是普通的桌上型windows, linux, mac,都可以運行它。下以面就介紹一下筆者的安裝經驗。 windows windows ollama windows 本地安裝ollama,真的很簡單,就是直接去官網下載就好 - https://ollama.com/download/windows 安裝完成後,在windows cmd再加一個基本的模型就可以了 ollama pull llama3.2 之後就可以開始跟llama問問題 ollama run llama3.2 windows openwebui 如果大家不習慣windows cmd的醜醜介面,想經過瀏覽器存取,我們可以再加裝openwebui。但這個必需要經第三方python或docker安裝。openwebui github指引 - https://github.com/open-webui/open-webui 經python pip install open-webui open-webui serve 經docker docker run -d -p 8080:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main 最後,打開browser,訪問 http://localhost:8080,openwebui就會要求大家先設立管理員帳號。 就那麼簡單,大家就有一個真正的私人AI助理。 steamdeck steamdeck 因為很多linux功能都有被限制,所以筆者就直接使用 podman 安裝 git clone https://github.com/macauyeah/ollama-steamdeck-podman.git cd ollama-steamdeck-podman podman compose -f podman-compose.yaml up -d podman exec -it ollama ollama pull llama3.2 同樣地,打開browser,訪問 http://localhost:8080就可以了,因為這個版本已有預設的管理員帳號,立即打開就可以使用了。 Ollama的開源模型 上文中一直提及 llama3.2 其實是 Meta 公司的開源模型,因為它的參數相對少,算力要求較低,可以在沒有GPU的環境下執行。若然大家算力足夠,可以使用其他模型,詳見 https://ollama.com/library 。見到合心水的模型,大家可以經 pull 指令下載。例如:小紅書的網紅們很多都推薦qwen2,我們可以 ollama pull qwen2 備註: openwebui 及 ollama 並不直接支援自己建立自己的資料庫。我們需要其他工具去補完,但筆者觀看各種教學,自己建資料庫的效果都不太好,所以暫時不做任何教學。 只要我們一直經ollama pull,就可以更新語言模型。但如果大家追求即時的網絡最新資料,大家可以看看LLM RAG的相關文章。但筆者亦未有成功的案例,有更新會另作教學。 opewebui並不是PDF閱讀器,但它可以預覽PDF中的文本,我們需要手動複制PDF中的文件後,才能經ollama分析文件內容。 若想切換模型,在指令介面中,我們多開一個分頁就可以了。若經openwebui,則可以在每句對話之前,經左上方選擇不同模型。

Tmux - 繼 Screen以後的Linux多工神器
科技新知
MacauYeah・2024-10-08

因為各硬件/軟件的發難,筆者又不得不回到那個只有純純linux tty console的世界。很多時候,那怕使用tty,我們在Desktop mode,也有現代terminal 可以用,需要多分頁,滑鼠選取文字、複制、貼上,都可以輕易做到。 但在mobile / tablet device 上,手指操作真的很不方便。又或者你像筆者一樣,即使有電腦,但要操作一些Linux VM,它們連ssh都沒有,只能直接登入它們的tty,那麼懂得使用Tmux進行分頁及複制、貼上,就變得很重要。 Tmux 是什麼? Tmux 就是可以在Linux Terminal 同一個窗口中,實現多工處理的小程式。就像我們利用多分頁一樣,不同分頁做不同的事。不過最大的差異就是,生成分頁,排列分頁,我們都要使用鍵盤來完成。有時筆者也會用它來作為背景程式,以免不小心關了Terminal就會把所有運行中的指令都停掉。 我們就馬上來看實際例子吧 前置事項: 安裝Tmux及運行Tmux Debain & Ubuntu 安裝: sudo apt-get update && sudo apt-get install tmux 運行:tmux 進入tmux後,你就會至少有一個分頁,而且不會因為Terminal關閘而中斷 用法一: 建立兩個分頁,並切換 增加分頁: 先按 “Ctrl + b” (前置鍵),再按”c” (create) 切換分頁: 在多於一個分頁的情況下,先按 “Ctrl + b” (前置鍵),再按”n” (next) 用法二: 同一個分頁中,建立左右並排的窗口 增加水平窗口: 先按 “Ctrl + b” (前置鍵),再按 “ (雙引號) 切換窗口: 在多於一個窗口的情況下,先按 “Ctrl + b” (前置鍵),再按方向鍵左或右 用法三: 回到前一個tmux session中 因為不小必關閉了terminal,又或是remote ssh中,ssh斷線後,需要回到之前的工作狀態 未進入tmux 的狀態下:tmux attach 要留意tmux 可以有很多個session,要去到指定的session,就要為session命名。但這個不是筆者常用的情境,原本多個分頁已經很夠用,還要多個session,會很混亂。但不排除它在某些情況下有特別用途,有興趣的朋友可以自行挖挖看。 進階: 回頭看過去的terminal screen output 在現代的Terminal中,原本按滑鼠滑輪向上滾,就可以看到過去的資訊,但tmux下反而不行,所以我們需要進入特殊模式 進入Copy Mode: 先按 “Ctrl + b” (前置鍵),再按 [ (開括號中括號) 向上翻頁: 上方向鍵或PageUp 離開Copy Mode: Copy Mode中任何時候按”q” 進階: 複制貼上 進入Copy Mode: 先按 “Ctrl + b” (前置鍵),再按 [ (開括號中括號) 選擇範圍: 移到需要複制的文字起點,“Ctrl + Space” ,然後再移動到結束點,再按”Ctrl + w” 複制 貼上: 離開Copy Mode後,再按”Ctrl + b” ,然後 ] (關括號中括號) 進行貼上 進階: 複制貼上2 某些情況下,我們不允許使用“Ctrl + Space” 或 ”Ctrl + w”,因為它們可能跟系統的組合鍵有衝突,所以需要改為單鍵。 讓tmux使用類似vim的操作模式: echo “set-window-option -g mode-keys vi” >> ~/.tmux.conf 關掉所有使用中的tmux,重開tmux 進入Copy Mode: 先按 “Ctrl + b” (前置鍵),再按 [ (開括號中括號) 選擇範圍: 移到需要複制的文字起點,按單鍵“Space” ,然後再移動到結束點,再按”Enter” 複制 貼上: 離開Copy Mode後,再按”Ctrl + b” ,然後 ] (關括號中括號) 進行貼上 筆者常用的功能就這些,有興趣的朋友可以再深挖一下。 Reference https://tmuxcheatsheet.com/

為何Python這麼熱門?
科技新知
MacauYeah・2024-08-27

在資料處理、資料科學領域,什麼是最近的AI模型,Python都是做這些事的熱門選擇。對於以前從未用過Python來處理業務的筆者來講,實在不懂為何Python會那麼大熱。不過最近,筆者實戰過後,真心覺得它是提高生產力的重要工具,而且並不限於資料科學上面,一些簡單的腳本操作也是很有優勢的。 筆者前述有討論過 型別對程式語言的重要性,到現時這一刻,筆者都會覺得【型別】是有助於長期的程式開發。而Python這個語言,大部份人都會介紹它是動態語言,可以使用弱型別,然後,就沒有其他講法了。動態弱型別,筆者一直都不認為它的根本上的原因。就像Javascript一樣,它亦發展出類靜態強型別的Typescript版本,而且它亦不因此而被人棄用。所以Python的強大,動態語言並不一最重要的原因,它也可以模疑寫出有規有距的type hinting。 或者用另一個方向問,大家覺得 Excel / SpreadSheet 好用嗎?它們可以很簡易地做出資料計算、篩選。而且可以一邊做,一邊調整公式。例如要大家做一個陣列的總和,大家會想打開一個Javascript,初始化陣列的每個數字,然後寫個For迴圈去計算總和嗎?還是打開 Excel / SpreadSheet,打下一欄或一列的數字,然後叫出Sum函數?筆者一定會選擇後者,不單止因為寫函數比較方便,那怕之後要調整數字,也比較方便。 大家有感受到差異嗎?筆者想表達的是,在操作 Excel / SpreadSheet 我們並不是整個程式重新執行一次,我們是修改完一部份,那上看到結果。但傳統的語言,例如C、Java、那怕是Javascript,我們都難以局部地更新或執行特定某一個區塊。那怕是現在我們有hot reload,但其實我們編寫的思維,都是讓我們完整執行起一個頁面,再人手輸入,看結果。如果我們只想運行某個單一Function函數,我們只能寫test case測試,但寫test case又是一個很大的入門門檻。 但大家如果看看Python,在古早的年代,Python已經有Python shell,那就像是Linux Shell或Window CMD一樣,可以一邊寫腳本,一邊看結果。寫了10行的程式,發現在第10行引用第5行的部份有問題,修正並執行第5行後,就可以回來馬上重跑第10行的語句,就馬上有結果了。第6至9行,因為沒有關聯性,就不需要逐一重新執行,那是多麼的方便阿。道理上,我們若沒有完整執行整個程式,可能還是有一些盲點,開發重要的,需要長期維護的程式,還是要像傳統一樣,有test case,有程式進入點,整個運行。但對於臨時性的操作,看看效果,我們實在無必要寫一個原整程式。 舉個例子,假如我們臨時有需要,要取得某個政府網站的即時數據,例如澳門的停車場資訊,空位的上下限是多少,我們絕對可以用python寫幾行就取得結果,然後順便做個資料運算。我們沒有必要很嚴僅地為考慮不同數據的出現情況,我們什至可以hard code - 硬編碼地計算某個Array的元素。直到突然有一天,這個操作變得恆常化,我們還是有條件把之前的python程式碼,改寫成一個規規矩矩的完整腳本,包括異常處理,函數複用。(其實Javascript在改用 NodeJs 作為引擎後,我們還是可以經過 Node.js REPL,來做互動操作,只是Python Shell出現得更早,也是官方支援的功能。) Python這個臨時操作的便利,對於資訊爆炸的年代來講,實在很幫得上忙。再加上現在除了Python Shell以前,還有Jupter Notebook,讓大家可以在Web頁面上,執行像Python Shell的互動操作,對於修過特定區域的程式碼,就更加方便。這些便利,都是不是因為動態語言來創造的優勢,而是實實在在的Coding Anywhere。

Github flow 沒有提及的發佈 - 佈署 | Release - Deployment
科技新知
MacauYeah・2024-08-23

不知道之前為大家介紹的github flow,大家覺得怎樣?好用嗎?今天,筆者又來講講筆者心中認為它沒有好好給出指引的地方。 我們的信心指數,其實沒有那麼高 在前文中,經過 pull request 、 code review 、 auto test ,道理上,開發者可以做的都已經做過了,然後就是等待發佈 - Release。 對於單純的庫類型的程式碼,筆者認為,的確沒有事可以再做,實務上就是直接找人其他程多員試用最新版本,看看有沒有問題。只要 main / master 上,明確的表示版本號的變更,就差不多等於直接發佈。有需要提供binary版本的,就還需要觸發上載binary的流程,但這個跟 pull request 觸發 auto test 差不多, auto test 成功後就上載。 對於服務類型的程式碼,例如 Web App 等,直接發佈到正式環境還是有些不妥吧?始終會即時影響到業務,我們至少有個測試場,經用戶做實際的業務操作去驗收。但這個時機,應該是在Github flow的什麼時候做? 在原始的git flow中,有一個叫做 develop 的相對穩定分支,僅次於 main 。它是功能開發完成後第一次pull request 的地方,我們可以用這個概念來做自動發佈到測試場。但若在github flow 中加入了這個 develop / uat / staging 分支,其實就等於複雜地回到過去傳統的 git flow中,對好多新手來講難以接受。Github flow 的成功簡化,其實很大依賴著自動化測試。現在的測試用例,並不再限於單元測試。就連整合測試,也可以經Docker等容器化技術去做,只要我們的自動化測試有足夠信心,就可以發佈。但反觀我們的 Web App 例子,我們認為自動化測試難似涵蓋所有情境,也難以開發。所以我們還在有個時間發佈到測試場,進行人工測試。 pull request + 快速迭代 筆者結合自己的經驗,配上國外討論區 Stack overflow 的內容,筆者認為Github flow上進行 pull request 後,就是最好的發佈測試場時機。所以我們需要盡快進行驗收測試,完成後在Git commit上加上Tag,以示通過驗收測試,可以發佈正式環境的版本。 不過這個模式是有一個很重要的前題假設:快速迭代。當我們驗收完成後,盡可能快地發佈到正式環境,不然會阻礙下一個功能的pull request驗收,或是覆蓋了上一個pull request的驗收環境。 用反面的例子來說明,如果我們有很多功能需要驗收,或變化很多,或存在多輪的里程碑開發,我們就不適宜那上述模式。最保險的做法,還是回到傳統的 git flow ,引入 develop / uat / staging 分支。但如果大家還是那麼討厭傳統 git flow,筆者還是有另一個提議。 既不想回到傳統 git flow ,但又需要慬㥀的考慮驗收發佈流程 如果開發的功能變化比較大,需要多方面協調、測試、驗收,經歷多次里程碑後,才有一個對外發佈的版本,大家可以考慮分開 Repository 做開發。例如: v1,v2的 Repository 完全獨立。 v1 是已發佈的版本,有獨立的測試場,任何即時候需要修正,就在v1的 Repository 做 pull request。 v2 則是未發佈版本,亦有獨立的測試場。加入任何新功能後,就在v2的 Repository 做 pull request,用自己專用的測試場做驗收。到 v2 正式發佈後, v1 就封存處理,再開一個 v3 作為下一個大版本的開發。這個模式,那怕在庫類型的程式碼也用得上。 這樣做的好處是 git Repository 和歷史記錄都會獨立,自動發佈的腳本程也會簡單明確一些。壞處則是 v1 v2 難以做功能對比,我們只能靠人腦記著 v1 有沒有什麼後期加入的修正和功能,需要同步移植到 v2 中 (相對的,著是同一個Repository,可以利用merge 功能確保 v1 有的,v2 都己處理,只是必需要很懂處理版本衝突問題。

型別對程式語言的重要性
科技新知
MacauYeah・2024-07-08

JavaScript等程式語言的流行,好大一個原因是因為它很簡潔。而筆者認為,動態語言的特性,即是可以省略型別,是讓它簡潔的一個很大原因。(動態、靜態與強型別、弱型別並一定對等,詳見Ref) 動態語言的特性,就是同一個變數,在不同時候可能代表不同的數據類型,有時候是String,有時候是Integer。所以編寫時,乾脆就不寫數據類型,因為寫了也可能是白寫。 因此初學者並不需要處理大多導入(import)問題,也不用考慮很多compile error問題,至少程式可以運行一半,到了最後出錯的地方才停下,也就是不會因為型別問題而整個程式開不了。 不過筆者在接觸了JavaScript後,始終沒有大量使用。一來因為筆者慣用的Java,有著更大的基礎套件,改用JavaScript未必有優勢。而且動態語言還有一個長久的管理問題,我們該如何知道更新的影響有多大? 測試用例不是萬能藥 有一部份的人認為,動態語言管理難,是因為大家不愛寫測試用例。的確,若然大家寫的測試覆蓋率足夠多,一定可以預先發現問題。但筆者在Java上實踐了寫測試的習慣一段時間,依賴測試報錯,其實也是後知後覺。 IDE的界入 筆者認為,若想好好地管理程式碼,光寫測試是不夠的,我們還需要好好地讓IDE了解我們的程式碼,認它可以很有效地重構我們的程式碼。更強的IDE,還有機會可以提醒我們有一些設計上問題。 老實講,寫Java多的朋友,都可能都知道Intellij Ultimate的名字。筆者試用後,的確很有幫助。相較之下,vscode對於Java的支援,並不十分智能。但這裏筆者還覺得vscode對於java的編寫、重構、測試,在免費的情況下,都已經足夠是足夠佛心。對於網頁應用來講,vscode差的是對javascript的支援。 vscode對javascript的支援有限,其實不能怪它不夠努力。你想多一個免費的IDE怎樣去了解你的javascript程式? 我們連型別都沒有寫出來,它能怎樣推敲? 實時去模擬各種輸入?CPU又會不會耗乾?那麼寫到一半的程式碼又怎樣輸入? 直到最近筆者採用TypeScript之後,筆者看到曙光了 TypeScript - 一個變相的JavaScript的靜態型別 原本的JavaScript其實也有型別的,只是不強制。若想IDE支援,需要以特定型式寫註解。但這樣寫註解,工作量並不比引用靜態型别來得輕鬆。所以最後,筆者還是覺得直接套用TypeScript,讓自己在每一次引用參數,都要好好地先了解函數的輸入輸出型別寫法。 說實在,從JavaScript到TypeScript並不輕鬆。一些原本很無腦的Axios, Promise, Vue語句,TypeScript寫起上來,都變得很複雜。但這個套用,對於IDE來講,真的很大幫忙。它就像突然讀懂了我們的程式一樣,可以跳入跳出,可以知道在多少處被引用。重構也變得更有信心,而不是等待事後測試報錯。 有一點要補充,TypeScript並不像Java那般需要完全預先宣告型別。例如函數的回傳結果,TypeScript就不會強制要求寫出型別,因為它可以有限度地猜得出來。當然,如果大家願意宣告,就更好。 總結 總括來講,型別就像厠所的衛生情況一樣。初期當然什麼都不處理也可以,但越用越久也沒有人理會,大家也不想用下去。若然大家都願意努力維持它的品質,大家會更有意願重複使用。 參考資訊 「靜態型別 vs. 動態型別」與「強型別 vs. 弱型別」 https://blog.tarswork.com/post/programming-language-type-system Typed JavaScript https://depth-first.com/articles/2021/11/03/typed-javascript/

數字教育引領塑造未來
文化創意
陳康妮・2024-03-06

(2024年3月6日 - 澳門日報) 數字教育引領塑造未來 澳門作為一個國際化的城市,一直以來致力於提供高質量的教育,為學生們塑造未來。在這個快速發展的時代,數字教育成為了教育領域的一個重要焦點。數字技術的快速發展和應用,為教育帶來了全新的機遇和挑戰。澳門正積極引領教育,將數字教育納入教育體系,以培養學生的數字素養和創新能力,為他們的未來鋪平道路。 教導數字世界中思考 數字教育不僅僅是指教授學生如何使用電腦和互聯網,更重要的是教導他們在數字世界中如何思考、解決問題和創造。這需要學生具備數字素養,即理解和應用數字技術的能力。澳門教育體系已經意識到這一點,並將數字素養納入學校課程中。學生們在早期階段就接觸到基礎的數字技能,學習如何使用計算機、互聯網和其他數字工具進行資訊搜索和處理。隨着他們的成長,還學習如何利用數字技術進行創新和解決現實世界的問題。 數字教育的核心是培養學生的創新思維和問題解決能力。這需要學生學會提出問題、分析問題、找到解決方案,並將其應用到實際情境中。在澳門的教育體系中,學生們通過各種數字工具和平台,如編程、虛擬現實和人工智能,來培養這些能力。他們被鼓勵參與到跨學科的項目中,與其他學科的知識相結合,共同解決複雜的問題。這樣的教育模式不僅能夠激發學生的創造力和想像力,還能夠培養他們的合作和溝通能力。 教師提能力應對變革 澳門教育體系還重視教師的專業發展,以確保他們能夠教授和指導學生進行數字教育。教師們參加各種培訓課程和研討會,學習如何運用數字技術來教授不同的學科。他們也被鼓勵參與到數字教育的研究和創新中,將最新的數字技術應用到教學實踐中。這樣的支持和培訓使教師們能夠成為數字教育的引領者,激發學生的學習興趣和動力。 澳門的數字教育還注重與其他國家和地區的合作交流。通過與國際教育機構和學校的聯繫,澳門的教育體系能夠分享最新的教學方法和經驗,並將其應用到實際中。這種國際合作不僅能夠豐富學生的學習經驗,還能夠促進教育領域的創新和發展。 數字教育的引入和推廣,為澳門的教育體系帶來了巨大的機遇和挑戰。通過培養學生的數字素養和創新能力,澳門的學生將能夠更好地適應未來的數字化社會和職場。同時,教師們也需要不斷提升自己的專業知識和技能,以應對教育領域的變革和挑戰。 澳門引領教育,塑造未來。數字教育的推廣和應用,將為澳門的學生帶來更廣闊的發展空間,並為他們的未來鋪平道路。我們相信,通過持續的努力和創新,澳門的教育體系將繼續在數字化時代中引領教育,為學生們打造更美好的未來。 澳門教育工作者 陳康妮

git 分支整合問題
科技新知
MacauYeah・2024-02-20

不知道大家的開發團隊、專案規模有多大,但只要系統或程式已發佈,同時又要做維護更新,git 庫都至少會有兩條分枝: 新功能 - main / feature 最新的穩定發佈版本 - Release / v1.x.x 最好的情況下,在開發完新功能之前,穩定版本都沒有需要緊急修正的地方,開發者可以專心開發新功能(main / feature)。然而這個情況並不能經常維持。 情況1:有Bug要馬上修正 最常見到的情況,就是穩定發佈版本有瑕疵,可以經過小修小改來止血,由v1.x.x ⇒ v1.x.y,這些可能對用戶來說,是沒有太大感覺的改動。不過對於開發流程,就免不了由v1.x.y整合(merge)回main時,出現修改衝突的問題。 建議 若屬於日後不再需要的改動,不需於整合到main中, 當然什麼都不用做。但若屬於必要的更新,就需要早早整合到main中。整合雖然痛苦,但延後整合沒有好處。以筆者的經驗,每次整合時有衝突,而越早整合越有條件知道該取用自動混合的那個版本。以整合工具的語言來說,就是更容易的作出use mine / use theirs / edit。 情況2: 不同功能之間有衝突 上述情況1,已經算是可控的。主要因為穩定發佈版本都只會接受小修小改,大改都會直接在main中開當為新功能開發。當你有多個很重要的功能在不同時期被提出,而有些功能你沒有信心在下個發佈中提出,你就會選擇以獨立分支來實現不同的功能,最後選擇信心度高、權重也比較高的功能來發佈。這樣的好處是你可以有限時間先完成最必要的功能,但問題是多個功能分支之間,更容易地有衝突,後期也需要很廢心力地整合。 建議 少做資料夾層面的改動,因為git rename的功能並不是萬能的,會令很多git自動選擇版變得不可讀。筆者的經驗,就是錯把後端和前端的資料夾混在一起,令後端的一些重命名影響到前端。前端也因為有重寫的需要,對資料夾結構大改。最後結果就是很多看不懂的git自動選擇版。有一些有選對,但有一些就選錯。 可以做一些事前處理,來減經痛苦。在筆者的資料夾問題情境,在把後端將要整合的多個commit中,挑選最早前沒有命名問題的commit先整合一次。然後前端先手動模擬後端的人工命名,自行commit一次,最後再把後端剩餘的commit再做整合。這個做法不是完全解決問題,但至少可以讓use mine / use theirs / edit更新易理解。 而另一個建議是,縮短發佈週期,逼使其他開發中的功能越早做整合,也逼使每個功能不要做太大規模的改動。如果真的做大規模改動,就要有心理準備要多次重要的整合。 情況3: 多個穩定發佈版本需要同時維護 若然大家面對的工作規模真的很大,同時有多個版運行版本,就如gitlab,每一個月都有一個新功能版本(16.0.x, 16.1.x, 16.2.x,… 16.9.x),但它不會強逼大家更新,對於過去一段時間的功能版本,也會推出安全性更新(前述的x會不斷修正問題)。 這是一個很負責任的發佈模式,不過對於開發者來講就一定很地獄。因為16.0.x的安全更新並不能無痛地整合到16.9.x中,可能每個版本重新人工修改還要來得穩健。 建議 各個分支人工修改可能更適合。最後就是取決於商業政策的考量,到底公司願意為已發佈的功能版本提供多久的支援。就以gitlab為例,其實它也只承諾維持兩三個月前的功能版本。是否會backport到多個月之前的版本,就看問題的嚴重性和backport難易度。 也分享一些筆者朋友的經驗,他們開發的是軟件跟硬件整理的軟件庫。但因為硬件有限制,例如庫的大小、算力的差異,所以最後分支多到爆炸。這也是軟硬整合的痛,問題暫時無解。除非老闆肯放棄市場。

全球教育創新|陳康妮:啟發讀者對未來教育的思考和探索
文化創意
陳康妮・2023-10-24

全球教育創新是指在教育領域中,採用新的理念、方法或技術,以提升教育質量、效率或公平性的行為。全球教育創新的新聞不斷涌現,展現了各國教育工作者和學者的創意和實踐。以下是一些近期的全球教育創新新聞的摘要: 全球最大教育獎項「一丹獎」2023年得獎名單揭曉。一丹獎是由香港的一丹獎基金會設立的全球性教育獎項,旨在表揚對教育研究和發展有卓越貢獻的人士。2023年度的「一丹教育研究獎」得主是美國亞利桑那州立大學的Michelene Chi教授,她提出了「ICAP認知科學理論」,將學習方式分為互動、構建、主動和被動四個類別,幫助教師設計更有效的課程和教學活動。「一丹教育發展獎」得主是University of the People創辦人Shai Reshef,他創立了全球首間非牟利、免學費、受美國政府認可的網上大學,主要為弱勢群體提供計算機科學和工商管理等專業的優質高等教育。 全球教育創新大賞 台灣四件傑出案例獲獎2。全球教育創新大賞是由溫世仁文教基金會與芬蘭教育創新組織合辦的徵選活動,旨在表揚華文地區的教育創新者。在近百件參賽作品中,評選出蘊含生涯價值力的七件傑出案例,其中四件來自台灣。這些案例包括:「VR/AR科技應用於地理教學」、「以遊戲化設計提升學生英語能力」、「以社群媒體推廣閱讀素養」、「以實境模擬培養學生跨領域能力」等。 翻轉教育:OECD 2022最新報告:形塑未來教育的全球趨勢3。OECD是一個國際性的政府組織,致力於促進各國間的合作與發展。OECD在2022年發布了《2022年形塑教育的趨勢》(Trends Shaping Education 2022)報告,檢視了全球主要的經濟、政治、社會與科技趨勢,對於從早期學齡到終身學習等教育層面的影響。報告指出,未來教育需要關注以下幾個方面:第一是多元化和包容性,即如何讓不同背景、能力和需求的學習者都能獲得公平和優質的教育機會。第二是數位化和創新,即如何利用數位技術和資源,提升教育的效率和效果,並培養學習者的創造力和批判思考。第三是永續發展和全球公民,即如何讓學習者關心全球性的議題,如氣候變遷、貧窮、人權等,並培養他們的社會責任感和行動力。 以上是一些全球教育創新新聞的摘要,希望能讓讀者了解不同國家和地區在教育領域中的創新理念和實踐,並啟發讀者對未來教育的思考和探索。 陳康妮Miss Chan Connie澳洲墨爾本大學教育管理學碩士愛爾蘭都柏林大學工商管理學士澳門教育家澳門教育專欄作家澳門教育學作家:澳門教育創新澳門國際培訓師(創新創業/全球職涯發展師)澳門兒童文學作家澳門斷捨離學會主席

「斷捨離工作坊」吸引澳門市民參加 倡減負情緒提升生活品質
文化創意
陳康妮・2023-10-06

【《大灣區時報》消息】澳門斷捨離學會(Macao Declutter Association)於9月27日(星期一)在澳門新口岸區舉辦了一場主題為「客廳斷捨離工作坊」的活動,吸引多位澳門市民參加。活動旨在教導參加者如何利用斷捨離的理念和方法,整理和美化自己的客廳空間,提升生活品質和幸福感。 活動由澳門斷捨離學會主席陳康妮女士(Miss Connie)親自主持,她首先介紹了斷捨離的定義和原則,並分享了她自己實踐斷捨離的經驗和收穫。她說,斷捨離不僅是一種整理收納的技巧,更是一種生活哲學和心理療法,可以幫助人們擺脫對物品的過度依賴和執著,減少負面情緒和壓力,重視內在價值和自我實現。 接著,陳主席透過互動環節分享幫助參加者明確自己對物品的需求和喜好,並學會放棄不需要的東西。陳主席表示,希望通過這次活動,讓更多的澳門市民認識和學習斷捨離的智慧,並將其應用於日常生活中,提升個人和社會的幸福感和生活質量。 澳門斷捨離學會是一個非牟利的社團組織,成立於2020年12月,旨在推廣斷捨離的理念和方法,並組織各種相關的活動和服務。目前該學會已有超過26000名會員,在Facebook上設有專頁和群組,歡迎有興趣的市民加入。該學會也在小紅書平台上註冊為社會服務組織,並接受各種形式的支持和合作。