搜尋

搜尋結果

【澳門3月演出一覽】
娛樂殿堂
Cheers!・2025-02-26

3月將有多位歌手及巨星喺澳門開show,各位粉絲絕對唔可以錯過!當中包括IDOL RADIO LIVE、藝聲、Dreamcatcher、張杰、珉豪、CRAVITY、陳慧嫻、韋禮安、楊丞琳、Kep1er、圭賢、金在中、竇靖童、HYUKOH x 落日飛車,都有份喺澳門3月演唱!以下小編整合咗2025年3月人氣熱唱演唱會場次,一文即知所有資訊! 2025 IDOL RADIO LIVE IN MACAU 日期及時間: 2025年3月1至2日 (星期六、日 晚上600、下午400) 地點:威尼斯人綜藝館 門票價錢 澳門幣港幣: $2288 $1788 $1288 $888 詳情:httpswww.sandsresortsmacao.cnentertainmentidolradio2025.html 藝聲|2025 YESUNG CONCERT Itrsquo;s Complicated in Macau 日期及時間: 2025年3月2日 (星期日 晚上600) 地點:新濠影滙綜藝館 門票價錢 澳門幣: $1780 $1480 $1180 $880 詳情:httpswww.studiocitymacau.comtcoffer2025yesungconcertinmacau Dreamcatcher|Dreamcatcher 2025 World Tour Finale 7 Doors 澳門站 日期及時間: 2025年3月2日 (星期日 下午500) 地點:「澳門百老匯trade;️」 百老匯舞台 門票價錢 澳門幣港幣: $1380 $980 $680 詳情:httpswww.broadwaymacau.com.mozhhanteventdreamcatcher2025finale7doorsmacau 張杰|2025張杰未middot;LIVEmdash;「開往1982」世界巡迴演唱會澳門站 日期及時間:2025年3月7、8至9日(星期六、日)晚上 600 地點:銀河綜藝館 門票價錢 澳門幣: $1780 $1480 $880 $580 詳情:httpswww.galaxymacau.comzhhantoffersentertainment2025jasonzhangfutureliveleave1982worldtourmacau 珉豪|2025 MINHO CONCERT MEAN of my first IN MACAU 日期及時間:2025年3月8日(星期六)晚上600 地點:「澳門百老匯」 百老匯舞台 門票價錢 澳門幣港幣: $1688 $1188 $788 詳情:httpswww.studiocitymacau.comtcofferleeminhofansmeetingtour CRAVITY|2025 CRAVITY FANCON lt; BEYOND YOUR MEMORIES gt; IN MACAO 日期及時間:2025年3月8日(星期六)晚上700 地點:威尼斯人劇場 門票價錢 澳門幣港幣: $1688 $1088 詳情:httpshk.venetianmacao.comentertainmentcravity2025.html 陳慧嫻|The Fabulous 40 Priscilla Chan Live in Macao 日期及時間:2025年3月8日(星期六)晚上800 地點:威尼斯人綜藝館 門票價錢 澳門幣港幣: $1488 VIP $1188 $888 $688 $388 詳情:httpshk.venetianmacao.comentertainmentpriscillachan2025.html 韋禮安|「如果可以,我想和你明天再見again」2025 澳門演唱會 日期及時間:2025年3月8日(星期六)晚上700 地點:倫敦人綜藝館 門票價錢 澳門幣港幣: $1388 $888 $588 詳情:httpshk.londonermacao.commacaueventsshowsweibird2025.html 楊丞琳|楊丞琳Another STAR限定演唱會 日期及時間:2025年3月15日(星期六)晚上800 地點:威尼斯人綜藝館 門票價錢 澳門幣港幣: $1680 $1480 $1080 $780 $480 詳情:httpshk.venetianmacao.comentertainmentrainieyang2025.html Kep1er|2025 Kep1er FANCON TOUR BEYOND THE STAR IN MACAO 日期及時間:2025年3月15日(星期六)晚上700 地點:威尼斯人劇場 門票價錢 澳門幣港幣: $1599 $1199 $799 詳情:httpshk.cotaiticketing.comshowskep1er2025.html 圭賢|KYUHYUN 10TH ANNIVERSARY ASIA TOUR COLORS IN MACAO 日期及時間:2025年3月22日(星期六)晚上600 地點:倫敦人綜藝館 門票價錢 澳門幣人民幣: $1699 $1399 $999 詳情:httpshk.londonermacao.commacaueventsshowskyuhyun2025.html 金在中|2025 KIM JAE JOONG ASIA TOUR CONCERT JPARTY quot;HOMEquot; IN MACAU 日期及時間:2025年3月22至23日(星期六、日)下午500、下午400 地點:「澳門百老匯」 百老匯舞台 門票價錢 澳門幣港幣: $1799 $1099 詳情:httpswww.broadwaymacau.com.mozhhantevent2025kimjaejoongasiatourconcertjpartyhomemacau 竇靖童|竇靖童ldquo;狀況外rdquo;巡迴演唱會澳門站 日期及時間:2025年3月22日(星期六)晚上800 地點:威尼斯人劇場 門票價錢 澳門幣港幣: $1280 $1080 $780 $480 詳情:httpshk.venetianmacao.comentertainmentleahdou2025.html 李敏鎬|2025 LEE MINHO ASIA FANMEETING TOUR lsquo;MINHOVERSErsquo; IN MACAU 日期及時間:2025年3月29日(星期六)晚上700 地點:新濠影滙綜藝館 門票價錢 澳門幣港幣: $1580 $1380 $1080 $880 $580 HYUKOH x 落日飛車|AAA TOUR BY HYUKOH SUNSET ROLLERCOASTER IN MACAU 2025 日期及時間:2025年3月29日(星期六)下午500 地點:「澳門百老匯」 百老匯舞台 門票價錢 澳門幣港幣: $1288 $1088 $888 $688 詳情:httpswww.broadwaymacau.com.mozhhantevent2025aaatourhyukohsunsetrollercoastermacau 各位粉絲記得留意演出時間同地點啦~

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 varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 aptget autoremove y ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 aptget update ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 aptget install y linuxgeneric linuxheadersgeneric linuximagegeneric ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 reboot 上述最大的假設,是第一、三步,更新 kernel 時不會因為網絡問題導致 ssh 斷線,因為它們都是系統級別的改寫,中斷後並不能確保可以重來。第二步就很安全,隨時重來也沒有問題。 這樣,我們就可以在任一台管理機,經過一個 shell script for loop,更新所有其他機器。 如果我們對於網絡還是有些疑慮,我們也可以試用一次性排程式的方式去做。 ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 echo 'yourscriptlocation' at 0800 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 jointoken manager # node 1 gt; docker swarm init gt; docker swarm jointoken manager To add a manager to this swarm, run the following command docker swarm join token SWMTKN1xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx2377 其餘的管理員節點就根據上述的提示,使用 docker swarm join token SWMTKN1xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx2377 就好。只要總數的管理員節點有奇數個就可以了(包括當初的node 1)。即是1、3、5等都可以。這是因為在容錯的情況下,必需由管理節點作出多數決,才能容易地知道判斷是哪些節點出現問題。 如果不為容錯,只想增加可工作的機器,那麼我們只需要增加工作節點。我們可以在任何管理員節點生成docker swarm jointoken worker gt; docker swarm jointoken worker To add a worker to this swarm, run the following command docker swarm join token SWMTKN1yyyyyyyyyyyyyyyyyyyyyyy yyy.yyy.yyy.yyy2377 若想要檢查各個節點的工作狀態,在管理員節點上執行 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 全部教學請見 httpsmacauyeah.github.ioAProgrammerPreparesVMDockerNotesSwarmModeCommandCN.html

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

不知道在澳門的朋友,有多少可以正常接觸openai?因為地方政策問題,像openai這種國外的大型語言模型下稱LLM,澳門區都沒法接觸到。但隨著時間過去,即使我們不能直接接觸到算力很強的收費AI,我們只要有電腦,也可以佈署一些開源版本的LLM。只要我們可以安裝到ollama這套本地運算軟件就好 ollama是一個giuthub上的開源工具,讓用戶能夠在自己的電腦上運行各種大型語言模型(LLM)。基本上只要電腦是普通的桌上型windows, linux, mac,都可以運行它。下以面就介紹一下筆者的安裝經驗。 windows windows ollama windows 本地安裝ollama,真的很簡單,就是直接去官網下載就好 httpsollama.comdownloadwindows 安裝完成後,在windows cmd再加一個基本的模型就可以了 ollama pull llama3.2 之後就可以開始跟llama問問題 ollama run llama3.2 windows openwebui 如果大家不習慣windows cmd的醜醜介面,想經過瀏覽器存取,我們可以再加裝openwebui。但這個必需要經第三方python或docker安裝。openwebui github指引 httpsgithub.comopenwebuiopenwebui 經python pip install openwebui openwebui serve 經docker docker run d p 80808080 addhost=host.docker.internalhostgateway v openwebuiappbackenddata name openwebui restart always ghcr.ioopenwebuiopenwebuimain 最後,打開browser,訪問 httplocalhost8080,openwebui就會要求大家先設立管理員帳號。 就那麼簡單,大家就有一個真正的私人AI助理。 steamdeck steamdeck 因為很多linux功能都有被限制,所以筆者就直接使用 podman 安裝 git clone httpsgithub.commacauyeahollamasteamdeckpodman.git cd ollamasteamdeckpodman podman compose f podmancompose.yaml up d podman exec it ollama ollama pull llama3.2 同樣地,打開browser,訪問 httplocalhost8080就可以了,因為這個版本已有預設的管理員帳號,立即打開就可以使用了。 Ollama的開源模型 上文中一直提及 llama3.2 其實是 Meta 公司的開源模型,因為它的參數相對少,算力要求較低,可以在沒有GPU的環境下執行。若然大家算力足夠,可以使用其他模型,詳見 httpsollama.comlibrary 。見到合心水的模型,大家可以經 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 amp; Ubuntu 安裝 sudo aptget update amp;amp; sudo aptget install tmux 運行:tmux 進入tmux後,你就會至少有一個分頁,而且不會因為Terminal關閘而中斷 用法一 建立兩個分頁,並切換 增加分頁 先按 ldquo;Ctrl brdquo; 前置鍵,再按rdquo;crdquo; create 切換分頁 在多於一個分頁的情況下,先按 ldquo;Ctrl brdquo; 前置鍵,再按rdquo;nrdquo; next 用法二 同一個分頁中,建立左右並排的窗口 增加水平窗口 先按 ldquo;Ctrl brdquo; 前置鍵,再按 ldquo; 雙引號 切換窗口 在多於一個窗口的情況下,先按 ldquo;Ctrl brdquo; 前置鍵,再按方向鍵左或右 用法三 回到前一個tmux session中 因為不小必關閉了terminal,又或是remote ssh中,ssh斷線後,需要回到之前的工作狀態 未進入tmux 的狀態下:tmux attach 要留意tmux 可以有很多個session,要去到指定的session,就要為session命名。但這個不是筆者常用的情境,原本多個分頁已經很夠用,還要多個session,會很混亂。但不排除它在某些情況下有特別用途,有興趣的朋友可以自行挖挖看。 進階 回頭看過去的terminal screen output 在現代的Terminal中,原本按滑鼠滑輪向上滾,就可以看到過去的資訊,但tmux下反而不行,所以我們需要進入特殊模式 進入Copy Mode 先按 ldquo;Ctrl brdquo; 前置鍵,再按 開括號中括號 向上翻頁 上方向鍵或PageUp 離開Copy Mode Copy Mode中任何時候按rdquo;qrdquo; 進階 複制貼上 進入Copy Mode 先按 ldquo;Ctrl brdquo; 前置鍵,再按 開括號中括號 選擇範圍 移到需要複制的文字起點,ldquo;Ctrl Spacerdquo; ,然後再移動到結束點,再按rdquo;Ctrl wrdquo; 複制 貼上 離開Copy Mode後,再按rdquo;Ctrl brdquo; ,然後 關括號中括號 進行貼上 進階 複制貼上2 某些情況下,我們不允許使用ldquo;Ctrl Spacerdquo; 或 rdquo;Ctrl wrdquo;,因為它們可能跟系統的組合鍵有衝突,所以需要改為單鍵。 讓tmux使用類似vim的操作模式 echo ldquo;setwindowoption g modekeys virdquo; gt;gt; .tmux.conf 關掉所有使用中的tmux,重開tmux 進入Copy Mode 先按 ldquo;Ctrl brdquo; 前置鍵,再按 開括號中括號 選擇範圍 移到需要複制的文字起點,按單鍵ldquo;Spacerdquo; ,然後再移動到結束點,再按rdquo;Enterrdquo; 複制 貼上 離開Copy Mode後,再按rdquo;Ctrl brdquo; ,然後 關括號中括號 進行貼上 筆者常用的功能就這些,有興趣的朋友可以再深挖一下。 Reference httpstmuxcheatsheet.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 都己處理,只是必需要很懂處理版本衝突問題。

排程執行任務 | Linux Schedule Job
科技新知
MacauYeah・2023-09-07

在Linux底下,crontab是一個最簡單建立Schedule Job的方法。大家用crontab e 就可以進入設定。 # crontab e 1 optrun.sh 其中每個星號,順序代表的是分、時、日、月、星期。上面的例子就是不論何月何日何時,只要每一分鐘就執行一次optrun.sh Singleton Job 問題是,實際情況下,你想執行程式的時間都不一定會少於1分鐘。所以你總是有機會上一個job未跑完,下一個job就開始了。為了保障自已,需要一些參考機制,去決定是否讓job開始跑。 有些情況,可能你會想用job server去做監管,但若只為單線執行的工作,起一個job server還是會增加管理上的複雜性。 最簡單的做法,就是根據不同的程式語言,使用file lock(鎖上)的機制,先上鎖,再做事。但要注意考慮有沒有出現異常情況,令你自己反鎖自己。即是你的process死了,但不懂自己解鎖,這樣以後你也不能再執行了。 在Linux Bash Shell下,就有一個很簡單的做法,就是使用flock指令。用它的最大好處,就是從OS層面下,去鎖上。只要process結束了,不論正常還是不正常結束,都會自動解鎖。 以下例子就是在執行optrun.sh前,先要取得tmprun.lockfile的鎖。如果沒法取鎖,就自動放棄執行後面的指令。 flock n tmprun.lockfile optrun.sh # crontab e 1 flock n tmprun.lockfile optrun.sh Timeout 引入singleton的概念後,其實會引發另一個問題。因為異常的情況,還有機會是不生不死,process hang。所以我們還需要設定一個最大的執行時間,讓你的process在異常的情況下,被強行清走。 例如,ping指令在linux預設是永遠不會自動停止的,可以模擬process hang的情況。如果我們想定時從外部收走ping process,就可以使用timeout指令。以下指令就是2分鐘後殺指ping process。 # in file optrun.sh timeout 2m ping localhost # to check process id, you could use # gt; ps aux grep ping # you will see two different id for ping and timeout 配合errorcode使用,你可能還會在想在timeout時送出一個email通知自已。 # in file optrun.sh timeout 2m ping localhost exitCode=$ if $exitCode eq 124 ; then echo quot;timeoutquot; # enter email alert with timeout elif $exitCode gt 0 ; then echo quot;exit with errorquot; # enter email alert with timeout else echo quot;exit normalquot; fi 配合docker使用,你可能需要考慮signal怎樣傳遞。 在筆者測試的環境中,似乎SIGTERM會被擋,也有可能是SIGTERM太強,它只把前景的docker container run收走,但其內的ping process還在docker daemon中行走。所以最後改用SIGINT,讓docker container run可以好好地把SIGINT傳入其內。 # It seems that docker captured the SIGTERM. Send SIGINT instead # in file optrun.sh timeout signal=SIGINT 10s docker container run rm pingtest c 20 exitCode=$ if $exitCode eq 124 ; then echo quot;timeoutquot; # enter email alert with timeout elif $exitCode gt 0 ; then echo quot;exit with errorquot; # enter email alert with timeout else echo quot;exit normalquot; fi Full demo, github repo cronjobWithDocker

陳康妮:元宇宙教育一詞頻繁出現在我們的視野
文化創意
陳康妮・2022-09-19

元宇宙教育這一詞最早出現在2020年。當年因為疫情的影響,全球頂級AI學術會議之一的ACAI,主辦方將研討會放在了任天堂的《動物森友會》上舉行;同年,中國傳媒大學為了不讓學生因為疫情錯過畢業典禮,在沙盤遊戲《我的世界》裏重建了校園,學生化身成為遊戲人物形象齊聚一堂完成儀式。 在2022年,元宇宙教育一詞頻繁出現在我們的視野中。在新聞媒體的不斷宣傳下,元宇宙教育也慢慢揭開了神秘的面紗。我認為的元宇宙教育,是將教育融入到虛擬世界和現實世界中。主要有以下優點: 一、可以切實提高學生們的學習效率。元宇宙教育能夠運用先進的VR技術,讓學生開展沉浸式學習,創造了更身臨其境的學習空間,對學生們進行多重感官刺激,提高了學習的效率。以學習歷史為例,元宇宙技術下的課件、教材可以不僅僅局限於書本、幻燈片,學生可以自己行走在古代街頭,見證那時的社會風俗,甚至能夠和李白、杜甫吟詩作對。 二、元宇宙教育可以節約教育成本。我們知道,國家每年在教育設備中的投入是驚人的,僅澳門地區為例,2021年的投入超過了5000萬元,在進行科研教育中,元宇宙技術可以模擬出昂貴的教學設備,還原機械設備的同時,還能夠輔助教師進行教學,這就大大節約了教育的成本。 三、元宇宙教育中還會提升課堂效率,激起學生學習的興趣。在VR技術的支持下,教師在授課時,可以根據不同的場景,設置設定學生們喜歡的人物,例如史記的司馬遷,萬有引力的牛頓等等。此外,還可以將學生的每個反應變成一個具象化的符號,比如某個學生對教師的講解表示疑惑,頭上就會蹦出一個問號,方便教師及時捕捉回饋。rdquo; 當然,元宇宙教育在擁有諸多優點的同時,也有待改進的地方,例如帶有沉浸感和互動性的VR技術用在教育領域的應用後發現了人機交互技術還不夠成熟,VR技術還有待完善,應用場景還很有限,且VR設備也存在一些穿戴不適、發熱、電池供電時間短等問題,影響了學生的使用體驗。總之,在科技發展日新月異的今天,僅元宇宙教育這一塊而言,教師們在熟練掌握元宇宙教育相關技術的前提下,需要改變教學生態,及時適應新模式,結合自己的教學經驗進行授課。這些都對教師們帶來了全新的挑戰。 【作者簡介】陳康妮 Miss Connie澳門科技大學講師澳洲墨爾本大學主修高等教育管理學澳門高等教育管理學專家(Digital Educator)澳門培訓師 (Digital Trainer)澳門教育專欄作家 (Digital Writer 全球職涯發展師從事高等教育管理培訓工作26年

[大和見聞] 鹿児島ラーメン豚とろ
走遍世界
君尋・2020-09-21

筆者於去年聖誕節到訪鹿児島期間,除了上次介紹的屋台村外(詳細可看 這裡 ),這家位於鹿児島中央駅附近的拉麵店亦是一家讓筆者留下深刻印象的餐廳。「鹿児島ラーメン豚とろ」在日本餐廳評價網站Tabelog上有3.6分的不錯成績,而在鹿児島市內亦算是評分較高的一家店,加上風格是正宗的九州豚骨拉麵,於是便選擇到此用餐。 店面非常細小,不影響品質之餘還能感受到另類風味 主打叉燒的這家拉麵店,他們的叉燒是使用豬頸位置再後一點的部份製成,而此部位更被稱為是豬的「拖羅」。果不其然,叉燒的口感非常鬆軟,加上叉燒保留了不少肥豬肉,也使得叉燒入口不夠便融於口中。店家使用的拉麵是幼麵,煮的時間較短,因此亦較有嚼勁。湯底就不用多說了,地道的九州豚骨湯底極為入味。 濃郁的湯底是豚骨拉麵引人入勝之處 有別於一般很大塊的叉燒 用餐後感是不愧為Tabelog拿到3.5分以上的拉麵店,值得一試,除非你是抗拒肥豬肉的。 豬拖羅的秘密 看餐紙也能知道主打的是什麼 餐廳:鹿児島ラーメン豚とろ鹿児島中央駅前店 地址︰鹿児島県鹿児島市中央町33 神宮ビル1F 營業時間︰1100~2400 參考網站:httpstabelog.comkagoshimaA4601A46010146006579 關於大和見聞 本欄目專門分享筆者遊日的心得記錄,包括但不限於古城、列車、食物、各類型的觀光景點。

[議劇論映] 保持高水準的《半澤直樹2》(上半部)
娛樂殿堂
君尋・2020-08-31

時隔7年,日本超高收視率的人氣日劇《半澤直樹》終於在今年7月強勢回歸,即使在疫情的影響下,劇集依然維持原定的集數以及保持高質量的內容。《半澤直樹2》改編自原作小說的《失落一代的反擊》及《銀翼的伊卡洛斯》,而首4集的內容就是源自於前者。 被調職到證券公司的半澤及年輕下屬森山 成功令仇敵大和田董事在一眾高層面前下跪認錯的半澤,受到行長的處分被調職到東京中央銀行的子公司,東京中央證券。半澤在此擔任營業企畫部長,並接到一單大型的收購案件,卻在幾乎成功的時候,被母公司東京中央銀行搶走這單生意。劇情發展和過往有不少相似之處,這季半澤再次被東京中央銀行的上司以不公平的手段欺壓以及多次刁難,甚至揚言要讓半澤負責任再次調職到更偏遠的小公司。其後,半澤與年輕的下屬一起獻計給將要被收購的初創IT公司,和該公司並肩作戰、一同反擊母公司的收購計劃,對壓迫子公司的高層「加倍奉還」! 上半部的奸角伊佐山與半澤 除了以理據「以下犯上」的爽快劇情外,《失落一代的反擊》篇最核心的主旨是,描述一群付出努力與收獲不成正比的年輕人,向於泡沫經濟時輕易獲得金錢與權力的上一代,進行反擊的故事。不論是半澤的年輕下屬,還是初創IT公司的年輕社長,都不約而同被上一代所建立的體系和制度所壓迫、無法展現自身的才能。而半澤的出現,就讓他們突破一直備受限制的框架、掃除上一世代對他們的阻撓,從而發揮出年輕一代的真正實力,這亦是半澤能再一次成功「加倍奉還」的原因。 究竟半澤如何帶領失落的一代反擊 更多日劇評論: 虎頭蛇尾的《搏命保鑣2》 (《BG~身邊警護人~2》) 關於議劇論映 本欄目將會分享日本及歐美的影集和電影。除最新上映及流行的作品外,亦會推薦值得回味的滄海遺珠。

【街市美食每款 MOP 8】下環街市、營地街市及祐漢街市都有優惠
生活在我城
澳門優惠・2019-01-23

用豐付寶於下環街市、營地街市及祐漢街市於指定商戶付款有優惠,美食只需 MOP 8。勁慳勁抵! 其他優惠推介 【電子支付優惠】平安夜消費 除夕消費 農曆新年消費 = MOP 200 現金獎賞 活動日期: 2019年1月1日至2019年1月31日每週五; 活動內容: 1、客戶於澳門營地街市熟食中心ldquo;梓記牛雜rdquo;門店,以「豐付寶」掃碼支付購買咖喱雞翼麵,即可享優惠價MOP8份原價MOP24份,每週限量100份,先到先得; 2、客戶於澳門營地街市熟食中心ldquo;泰皇咖喱rdquo;門店,以「豐付寶」掃碼支付購買冬菇麵,即可享優惠價MOP8份原價MOP24份,每週限量100份,先到先得; 3、客戶於澳門下環街市熟食中心ldquo;吳廷記rdquo;門店,以「豐付寶」掃碼支付購買紅豆餅及紅豆冰,即可享優惠價MOP8份原價MOP24份,每週限量100份,先到先得; 4、客戶於澳門下環街市熟食中心ldquo;碗仔翅糖水美食rdquo;門店,以「豐付寶」掃碼支付購買大份碗仔翅,即可享優惠價MOP8份原價MOP17份,每週限量100份,先到先得; 5、客戶澳門祐漢街市熟食中心ldquo;強記特色美食rdquo;門店,以「豐付寶」掃碼支付購買招牌喇沙米,即可享優惠價MOP8份原價MOP23份,每週限量100份,先到先得。 詳情: httpwww.taifungbank.comzh_TWpage1115 所有優惠及條款以官方網站為公布為準。 更多澳門優惠情報、有獎活動及有獎遊戲,可瀏覽 httpslifemag.cyberctm.comzh_TWbloggerMacauJetso。