搜尋

搜尋結果

推坑SFC的神作
手機‧電玩
MacauYeah・2024-09-03

因為年紀漸大,筆者玩遊戲的機會越來越少。一方面是因為家庭,一方面則是因為身體大不如前,腦袋開始跟不上3D遊戲的場境,常常不是玩一玩就累了,就是玩一玩就暈了,那怕連手遊都一樣。 所以筆者現在什少會再開新坑試新世代遊戲,反而專注在舊世代中,體驗一下過去的名著。值得一提的是,過去的遊戲體量通常比較少但完整,對於繁忙的生活節奏,是適合的。相比手遊,舊世代的遊戲更無抽蛋要素,更沒有那種玩個空虛的感覺。所以若然大家主機有買會員,趁會籍到期之前,快試一試那些年被你跳過的遊戲,應該有所收獲。 今日筆者就選了NS online會員的SFC舊遊戲,《薩爾達 眾神的三角力量》。只要大家有NSO,應該都可以順利重玩這個遊戲。 向大家推坑這遊戲的原因主要有幾個。 薩爾達 Switch 兩作稱霸天下。過去的作品,很值得一試。 眾神的三角力量是平面遊戲,不會暈,而且 Switch 隨時待機,玩玩停停沒有壓力。 玩後的優點 那個古早的年代,已經發展出到處鼓勵四處探索的玩法。那怕只是2D平面,都感覺到世界的大。 攻略好找好看。薩爾達在 Switch 中的最後兩,好玩歸好玩,但攻略真的難攪,難以用文字來表達。即使各大出版社如何編制圖文包,還不如直接看影片攻略來得直接。眾神的三角力量,那怕筆者不看圖,筆者也知道攻略制作人想表達的意思和方向。不知道下一步去哪?不用怕,看一看網上攻略就攪掂。 偏向動作遊戲,穿插少量劇情。筆者過去都是接觸以劇情量為主的JRPG,以現在的生活形態,要好好地讀完一個新的JRPG故事真的很難。 沒有壓力。這真的很重要。Switch 兩代,都有一個很麻煩的資源系統。武器、道具、盾,都是會快速消耗的。除非大家對操作很有信心,不然每次戰鬥,那怕打贏了,也會覺得消耗過多,選擇重讀存檔重打。這樣的遊戲玩下去很有壓力,跟魂系遊戲有得比。多磨幾次,人也會累。但SFC 舊作,只有副武器為消耗性。你的劍和盾,可以一直用,副武用光,誰怕誰。 參考連結 筆者遊玩時看的攻略httpslasjargon.blogspot.com201412legendofzeldalinktopastchapter01.htmlm=1,雖然覺得不全,但至少讀得懂 由 本封面圖像可由任天堂處取得。, Fair use, httpszh.wikipedia.orgwindex.phpcurid=7663843

github flow - github 開發流程
科技新知
MacauYeah・2024-06-20

那些年那個很穩定卻又不受歡迎的 git flow 開發流程 多年前,朋友就向筆者介紹git的團隊整操作流程。筆者深思過後,的確實用,那些年的gitflow,很美滿,由開發、測試,到發佈、修補漏動(backport),都有清楚明確的指引。 原作者連結:gitflow 大家如果沒有更複雜的需求,真的可以照搬,筆者也很推這一個模型。 但在長期推廣下,筆者發現大部份人其實都不熟git的基本操作,什至連git graph也不看,現在看git flow,就更不可能接受。那怕是有常用git的個人團隊,也是不怎使用分支模型。 前一兩年,筆者也不懂,筆者也努力地簡化git flow。例如把master和develop合而為一,但最後也是少有人可以接受,很多人還是卡在分支那邊,對checkout、merge還是很陌生。在跟更多不同人的協作過後,筆者總於意會到一件事。其實大部份人,只想知道最後、最新的狀態,只會更新 master main ,也因為個人開發,所以連衝突也不會有,更不需要使用merge。那怕是少型團隊,頂多也是維護main的衝突,間中用用merge,而checkout還是用不著。 其實這個情況,並不限於小型團隊。因為 web app 和 DevOps 的流行,所以越來越少機會要維護多個舊的穩定版本。大家都專心於最後一個開發及發佈版本就完事,用戶的某個版本有問題?更新到最新版本吧。(註:越底層的應用開發模式,因為相容性問題,不可能只保留一個穩定版本。) 那麼我們就大力簡化吧 github flow 開發流程 既然大部份情況,大家都只在乎 main master 預設分支,那我們也沒有必要跟著複雜的 git flow 走。但在 DevOps 的角度下,為保證 main master 穩定性,大家還是至少要遵守branching 、pull merge request 、code review 、auto test 原則 。 github就最簡單的branching 、pull request 、code review 提出了它們的 github flow。 簡而言之,就是每個人在開發時,都先從 main 起一個新分支,不斷更新。待合適的時候,就透過 pull requst,向原項目負責人提出申請,只要項目負責人點頭,就可以把改動傳入 main 中。又因為Github 原本的定位在於個人與個人之間的協作,初時已經需要通過fork建立獨立的倉庫,那怕你不愛分支也必需分支。所以 pull request,code review 的作用更明顯,後逐的協作更理所當然。 但若果回到公司團隊協,Github flow 就應該像筆者之前提出協作方案,各自起分支,最後由某個人守門,把所有結果放到 main 中。(前文連結)

開發者在Steamdeck上的另一個選擇: Gnome box
科技新知
MacauYeah・2024-05-28

前些日子,因為升級podman的關係,筆者對Steamdeck的限制就更為了解。因為Steamdeck是一個修改過的Arch linux,不單止代表是某些區塊是唯讀不可寫。更深一層的問題是,有些依賴包,不能簡單地通過安裝或自行編輯來解決。 例如早前podman 5.0.x需要的pasta依賴,雖然Arch linux官方有這個lib的發佈,但Steamdeck沒有選用,那些我們自己下載原始碼,你地會發現steamdeck的gcc或cc編譯指令還法完全執行,一來是編譯器指令沒有預設對,另一方面則是缺少了更多的c lib .h 依賴包。最後筆者只好選擇下載pasta官方預編譯的二進位程式。能用,但就總是多少有點不安心。因為pasta的預編譯只是針對x86_64的CPU,並沒有考慮link lib的問題,不過這次運氣還算可以,沒有無盡依賴的問題。 回來講Steamdeck的情況,之前筆者介紹brew,其實是macOS帶過來的,雖然他們對其他linux的支援很不錯,但多少都基於某些低層的依賴包可以隨時更新。而Steamdeck這個限制版,就沒有保證linux 依賴包的預安裝。那怕是Ubuntu也是一樣,只是我們可以通過進一步的指令案裝就可以了。所以在Steamdeck上,長遠還是要找一些官方維護的軟件比較安全。 Steamdeck上預設的是依賴安裝是【Flatpak】,雖然它不像yum, apt, dnf這些仔細可以安裝原始碼依賴,但它們可以安裝App,例如Firefox、Chrome、輸入法等。遺憾的是,Flatpak上沒有podman, docker,對於開發者來說就很不方便。 但最後,筆者終於在【Flatpak】上發現一套【BOX】VM解決方案。它的功能不算強大,但至少可以經ISO安裝自己想要的OS,也有快照功能只限關機狀態下。BOX官方亦表明,這套VM不是針對自動化或企業管理所做的,只有一些基本操作。 官方連結 httpsapps.gnome.orgBoxes 官方原始碼 httpsgitlab.gnome.orgGNOMEgnomeboxes Flathub載點 httpsflathub.orgappsorg.gnome.Boxes 對於筆者來說,能裝到VM,代表就有更多的操作空間。如果大家不介意多了一些虛擬層,會太影響效能,其實很多操作可以在VM內使用。例如不需要再用podman,可以直接在VM中使用docker、安裝k8s等。對於效能問題,我們必需要在Steamdeck操作時,至少我們可以在VM中先安裝Arch linux,找回必要的依賴包,編譯我們想要的link lib,再抄回Steamdeck下執行。過程的確比較轉折,但若然Steamdeck這台機器只適合打機的話,就真的很可惜。

測試驅動開發 | 系統邊界Mock
科技新知
MacauYeah・2024-04-23

好一段日子之前,筆者就介紹了一些寫Test Case的大方向 。對於大部份情況來說,有分隔的開發環境,有整個配套,測試起來是順暢的,想做單元測試可以,做整合測試也可以。但如果沒有,我們其實也要想辦法寫Mock。 Mock這個概念,對於寫前端程式的朋友應該比較熟悉,因為前端開發者總不能等後端準備好之後,才開始慢慢設計。前端很早期就要模擬一些情況,做介面設計,做各種思考。而且這個Mock不是指在運行單元測試時,才使用的臨時修改隨機數據。而是針對開發時,自行模擬的後端或外部環境。不過因為前端介面涉及很多主觀設計,很多元素冇辦法做固定的自動測試,所以前端的測試通常要人幫測試。 而後端開發,邊界Mock這一概念也很有用。在外部環境不足的情況下,為自己系統的邊界部份自建一個Stub Dummy 等的模疑數據,是很有幫助的。不論我們對外部環境的掌控度有多少,我們走測試驅動開發(Test Driven Development),好好地定義這個外部環境的期待行為是很重要的。 例如,你有個功能,需要存入數據,但資料庫未準備好,也沒有所謂的In Memory資料庫可以用。這時,自己架空寫一個什麼都不做或回傳固定結果的函數作為中轉接口,然後在你的Test Case可以規劃你的想要結果。 也許你會說,這個函數就是存下資料,我不會需要它的回傳結果,但我們其實還是可以在Test case 中定義一些錯誤檢測,確保這個函數沒有Throw Exception 。再進一步想,我們主程式是否真的不負任何儲存失敗的責任?要定義其他回傳變數,方便寫Log讓追蹤?或者我們至少要知道成功後的Primary Key ?若然業務上真的不在乎儲存結果的有效性,我們不存入數據也是可以的? 所以歸根究底,我們還是在乎儲存的成功與否。還是有必要去驗證驗寫入是否成功。 上述例子,因為資料庫不存在,開發途中可能Test Case 有好長一段時間也通過不了,但至少當資料庫完備後,可以直接驗證,不用人手手工測試。 舉另外一個例子,我們要從某個地方,例如API或資料庫,讀取數據。我們也可以先寫中轉接口,並為它寫Test Case定義應有的行為。雖然明明就只是讀取,我們沒法控制太多。但在接口做好異常狀態處理,是很重要的。例如Handle exception、檢查某些重要業務值會不會是空、確保後續部份可以正常使用,這是因為我們不能被外部系統的失誤而導致自身系統癱瘓。 其實測試驅動,本質上就是強逼大家想多一點,好好定義預期的行為,不論內部條件怎樣變化,都有一自動的檢收標準。

Git Worktree
科技新知
MacauYeah・2024-04-09

看了Git 大神的影片 part two,才知道原來切換git分支還是有不同的做法。傳統中,我們使用git checkout BRANCH_NAME_1 來切換到我們想要的分支。通常這樣做,代表我們放棄原來的工作環境,換到另一個工作環境中。 這樣做很好,對不對? 是的。但有些時候,我們只是被逼離開原本的工作環境,跳到一個過去的分支節點去查一些東西,或者修正一些東西。更什的是我們原本的工作環境都還是混亂狀態下,我們不想做commit(提交),我們只好用git stash,暫時將工作環境存起,然後再git checkout BRANCH_NAME_1。在你想做的事做完後,再git checkout OLD_BRANCH。 看起來其實也沒有很麻煩,是不是? 但其實當你的專案有一定大小,你在不同版本跳來跳去,你的IDE就會不斷地重新編譯。更不幸的是,當你的不同版本中有模組數量的差異,弱一點的IDE,什至會攪死它的cache,之後就會發生鬼打牆。為解決IDE引發的問題,筆者有時會直接cp r YOUR_PROJECT TEMP_PROJECT,在一個新資料夾下另起爐灶。那就是有兩個不同的資料夾裝載著你的專案。 這樣應該沒有問題了吧,是不是?這次是真的可以了,扣除了筆者個人健忘的問題,就沒什麼問題了。 不知大家有沒有經驗,連續commit了幾次,但最後一次commit卻忘了push(與伺服器同步),然後就跳到其他地方繼續工作。如果我們在同一個git repository下,我們commit了但忘了push,即使我們git checkout去了其他分支,用git GUI畫出commit graph時,也至少可以提醒筆者有一個未與伺服器同步的分支。但如果當初我們用的是cp,那就沒戲唱了,什至乎當初複制了去哪裏都忘了。(當你老闆同時要你跟多個專案,健忘真的很容易發生。) 這問題有解嗎?有的,git在2.5版本以後,就提供了一個git worktree的指令。它有點像cp 指令,更重要的是,它打通了兩個資料夾下的隱藏資料庫.git,當大家在那兩個資料夾底下,都可以看到另一方的存在。大家可以用git branch a或git log oneline graph來看看。 詳細的指令介紹:git worktree git 大神的影片 Part 2

如何衡量課金制遊戲的價值
手機‧電玩
MacauYeah・2024-03-05

筆者因為作息調整,可以花時間花資源去深玩的遊戲越來越少,需要專攻一款價值高的遊戲是一個很重要的課題。隨着年紀增長,家庭環境改變,大家都可能會遇到相同的問題。所以筆者很想探討一下,一年只玩一款遊戲的話,CP值是否有所保證?也就是滿意度和支出的比例是否保持一個高水平? 好多老一派玩家會支持傳統主機遊戲,主要係因為免費課金制,品質很差。初時下載遊戲免費,但遊戲無法通關,過程也很重複無趣,所以滿意度很差。正好筆者最近重回手遊,就來分享一下時間和滿意度比例。 本文為了方便討論單一手遊的價值,先只以「不課金」,只討論時間成本支出。日後再以「課金上限」來對比不同的課金情況或是與主機遊戲對比。 定義 成本:時間 CP值 rArr; 淨滿意時長 淨成本 rArr; 即成本越高,每單位成本的滿意度越低。 CP值 = sum 分段內容時長 分段滿意度 (時間 ) 註:分段滿意度可能為負,為方便倍數計算,最大為10,最少為10。 崩壞:星穹鐵道 主觀評分 主線序 第一章:20小時 8 = 160 五角色養成,累積前70等的升級素材:30小時 2 = 60 因為很多時候都是內卦刷戰鬥,不怎開心,但還未至於要吐 第二章:15小時 8 = 120 筆者有幸以不課金的陣型,以完成主線第二章。主角(火)、娜塔莎(物理)、希露瓦(雷)、景元(雷,劇情指定角色)。除了主角滿級其他都很素。 角色養成,累積7080(封頂等級)的升級素材:30 1 = 30 7080等級就開始跳躍性質變,借助外援也無法快速囤積資源。 筆者只有主角的等級存護命途可以練滿,另一角色也只有等級練滿。其他連突破70級的資源都不夠。 模擬宇宙部份挑戰:5小時 8 = 40 忘卻之亭部份挑戰:1小時 2 = 2 有難度,但沒什麼樂趣 淨滿意度middot;時長 :160 60 120 30 40 2 = 412 淨成本:20 30 15 30 5 1 = 101 CP值 412101 = 4.08 以上,就是星穹首年來的內容,對應六季的更新。目前遊戲新剛推出2.0更新,筆者也會花一點時間了解一下是否有等級門檻。 不過以長期遊玩的角度,還要考慮如何提升高等級刷素材的滿意度。

澳門教育家陳康妮:換我照顧你
文化創意
陳康妮・2024-01-25

澳門教育家陳康妮:換我照顧你 「爸爸,你記得今日午餐吃過什麼嗎?」這是澳門教育家陳康妮每週日去護老院探訪換肝後的陳爸爸時,總是要問的一句話。陳爸爸因為肝硬化而接受了肝臟移植手術,但手術後卻出現了腦退化的症狀,記憶力逐漸衰退,有時甚至不認得自己吃過什麼。陳康妮作為長女,每週日都會從忙碌的工作中抽出時間,去陪伴和照顧父親,這已經持續了五年。 「我希望能夠讓他感受到我的愛和關懷。」陳康妮說,她每次去探訪父親時,都會帶上一些他喜歡的食物,和他聊天,嘗試喚起他的記憶。讓他保持身體的健康和舒適。「我不想讓他覺得自己是一個負擔,而是一個被尊重和愛護的人。」她說。 陳康妮表示,成為照顧者的過程並不容易,她也曾經遇到過很多困難和挑戰,她說,她能夠堅持下來,是因為她深深地感恩父親對她的養育之恩,也因為她相信孝順父母是一種美德和責任。「我從小就是父親的掌上明珠,他總是無微不至地照顧我,教導我,支持我。他是我最好的老師,也是我最親密的朋友。」陳康妮回憶說,父親曾經帶她去認識他不同的朋友,培養了她的多方面的興趣和才能。「他總是對我說,你要做自己,不要被別人的眼光所束縛,你要追求你的夢想,不要放棄你的理想。」陳康妮說,正是父親的鼓勵和支持,讓她成為了一名優秀的澳門教育家,獲得了社會的尊重和認可。 「現在,換我照顧你。」陳康妮說,她希望能夠用自己的行動來報答父親的恩情,也希望能夠用自己的故事來鼓勵更多的市民孝順父母,關心老人,讓他們感受到溫暖和幸福。陳康妮說:「我相信,只要有愛,就沒有什麼是不能克服的。」

街霸六-如何不要被【贏】成為競技遊戲的唯一目標?
手機‧電玩
MacauYeah・2024-01-19

眾所週知,玩遊戲普遍都是圖開心。很多朋友玩遊玩競技遊戲時,【贏】都是一個很重要的樂趣指標,但競技總不可能每個人都贏,輸的人反而是大多數。所以競技遊戲若沒有其他樂趣,玩著玩著,就會越來越少參與者。 問題是,競技遊戲真的有其他方面的樂趣嗎 筆者認為是有的,但至少參與者的心態要放開。 就像求學不是求分數一樣,探索一門新知識比分高低要來得重要,玩遊戲也更是如此。以筆者玩街霸六的情況來講,可以探索的地方實在很多 目押、取消連技 對空 對策動力衝擊 對策突進 狗昇、防狗昇 打亂動、搶制Abare 壓起身 Meaty 安全跳 Safe Jump 立回 Neutral 確反 Punish 差合 Whiff Punish 打拆 Shimmy 最後才引伸不同的角色對策。 而大部份人都一定會陷入的低潮就是當等級越高,對手的熟練度就越高,對機制的理解就越深,然後就會對戰得越沮喪。筆者因為一些原由,看到別人都爬分時都有非常沮喪的練歷,也看到退遊戲的心路歷程分享。 筆者屬低分區,無條件指導別人如何進步,但筆者可以提的意見是,要逆向思維自己會輸,是因為對方是強者,跟強者對戰,其實是在學習、在感受。有時候,筆者也會因些微差距而輸了對局。有時候,筆者也會想,是不是對方運氣好。 但感謝街霸六的對戰大堂,只要對方願意,可以很方便的跟同一位對手重複對戰。經過重複對戰,你就會知道是不是真的只是對方運氣好。更重要的是,重複對戰可以有助於大家熟知對手的策略,只要有對策,對局就不一樣。就算當下無解,也可以在訓練室再進一步研究。 街霸六的對戰機制和訓練室的各項細微功能,是眾多手遊、什至是主機遊戲,都無法提供的。可以隨時與陌生對手匹配友誼賽,可以自定義對戰,可以重播比賽,觀看對手的輸入按鍵,訓練室還可以查幀表,錄動作,混合抽樣播放動作,讓你可以有目的性地實驗、練習反應對策。 在分數線機制上也有一些保障,不同角色分數獨立,打上特別段位後有一次跌級保障。讓大家在排名賽上,輸掉也不至於十分心痛。若果心理上實在受不住排名賽的壓力,友誼賽絕對低分爬上高分區的一個試招的好選擇。在對戰大堂的友誼賽中,很易會遇到比自己排名高的對手,多找對方實戰看看,輸了沒有成本,但贏得了經驗。

Switch / Steam Deck / Mobile 使用體驗大比拼 (三)
手機‧電玩
MacauYeah・2023-12-14

上兩期,筆者從機身重量、續航性兩方面,對於遊戲機身便攜性的影響,今期最後一期,就從穩定性方面去討論,最後再做一個綜合影響。 沒有對比也就沒有傷害 Mobile Smart Phone 筆者所講的穩定性,其實就是正常運行一個遊戲,不會出現閃退的情況,讓你可以正正常常玩完一款遊戲。但因為Mobile原本是多用途機器,你玩著玩著,可以就要跳出遊戲回覆信息,但再次回到遊戲後,能不能正常運行的不知道。 大部份iOS遊戲,因為舊iphone機能限制,基本上跳出去後,都因為不夠RAM,回來後遊戲會重置。除非你打死不切換,否則一款遊戲沒有頻繁auto save功能,根本玩不下去。Android可能會好一點,有不同機型可以選擇,多一點RAM總是安全一點。 強行地用Linux運行Windows的黑科技 Steam Deck 老實說,Windows已經不夠穩定,用Linux運行Windows Game,會比較穩定嗎?不過最幸運的是,Steam Deck有技術支援,更有社群支援,各遊戲經過Steam官方驗證,連續遊玩下閃退情況都很少。不穩定的原因,反而是Steam Deck主機本身。 在筆者遊玩的經驗中,待機後再打開,有一定機會率會整個遊戲閃退。這些問題在遊玩大作,特別是3A大作,會引來一個很不愉快的體驗。因為它們的auto save位置點一般都是以情節點來做考量,而以上班族來講,三步一待機的使用情境也很常見,那麼觸發閃退的機會率就很高。某次啟動會隨機引起閃退遊戲,真的欲哭無淚。 筆者也翻查過網上的資料,一年多前就有這個問題存在,而官方亦無法根治。筆者在寫稿的途中,還在測試坊間一些可能的補救方式,但因為時間不長,不敢說這問題是可以解決的。 穩定發揮 Switch Switch在穩定性真的無可挑剔,多次待機後都沒有太多問題。完全貼合它的市場定位在家可以隨時在電視玩,出外也可以四處走。隨時隨地停,隨時隨地再開。最多最多都是遊玩實體卡帶時,因為接觸不良而閃退。但這些不可避免的,因為實體卡始終是物理型態存在,跟著Switch四處奔波,難免會出問題。但下載數位版,存放於SD卡就不會有閃退。至少SD卡不會像實體卡會經常替換,所以出問題的機會也較少。 綜合體驗 其實討論了幾個方面,筆者都從是省心遊玩的角度出發去討論。 Mobile在裝備上會最少煩惱,想最輕鬆出問,這個是不二選擇,但考慮玩非課金類遊戲就最沒有保障。 Steam Deck優點是移動堡壘,若你玩的是高性能需求的遊戲,你只能選它。但想隨時玩就未必做得到。 Switch 在重量和穩定性上面最有優勢,考量延續性體驗,這個是首選。

Spring官方教學 | Spring Certified Professional 2023
科技新知
MacauYeah・2023-11-07

筆者作為一個網頁程式開發者,使用Spring Boot開發已經有六年。從當初Spring Boot 1.x開始,查看官方Tutorial七零八落,慢慢摸索,到大改版升級2.x,都碰過不少釘。最近Spring Boot亦要升級到3.x,正式進入Java 17時代。筆者亦不斷Update自己,保持程式於一個可支援的狀態。 相對以前,現在入門Spring Boot已經比1.x年代輕鬆很多。主要前些年某些網頁開發的概念,例如REST API,已經深入行業,大家不再糾結要走傳統MVC還是RESTFul API,也使得Spring Boot這樣的Framework,可以有一個受眾比較廣的統一入門教學。 筆者最近也正式參與Spring Academy的官方教學,好好地厘清一些概念。 官方連結 httpsspring.academypathsspringcertifiedprofessional2023 在讀過官方的幾個章節後,真的覺得很適合有興趣的人去看一看。主要是因為 官方以一個經典例子作為切為點,教學REST API,In Memroy Database。它還介紹了一些簡易的HTTP Code Standard、Test Case。真的比其他民間教學更有系統性。 提供一個可以在網頁上就實驗到的Lab實習環境。那是極為重要的一件事,因為九成人,在setup java 及library dependency maven, gradle時,都碰釘到直接放棄。有時是因為公司工作環境比較有要求,並不允許你使用一鍵安裝的java套件及它的library dependency;有時則因為網路安全,java把你公司的firewall當作a man in the middle MITM attack擋了,也有時是因為你公司的firewall把java擋了。Spring Academy在一個遠端的https網頁提供實驗環境,真的比本機開發要易入門很多。 Spring Academy可要多謝vscode、codeserver,及其他VM、Container技術。 在真實環境中,筆者也有自己的codeserver,打包java os cert等等,盡量減少firewall問題。 因為官方教學持續以Spring boot的最新版本作為教材,它更新的速度總比民間要快。只是官方的教學不會全面覆蓋到所有Spring project。如果大家作為Web入門的話,還是有推薦的。 在Spring boot 3.x當中,因為要求Java 版本至少為17以上,那些教材也有使用一些Java 17的新語法Syntax,實在也令人驚喜。 基本上Java 17現在可以簡化getter setter switch statement,這些在開發Web的環境下都是很重複的事。在Java 11或以前,只能經過IDE去生成getter setter等,但似始都有會一大堆Code佔據你的頁面。 官方教學及Lab環境暫時免費,除非大家很在意的修業證書,不然都可以自由免費看。 官方教學真的值得一看,雖然距離真正開發還差很遠,筆者日後若有條件,會針對官方沒有提及的內容作補充,分享一些在技術面上所需求的最少可運行配置。

Steam Deck With Podman
科技新知
MacauYeah・2023-10-06

Steam Deck With Podman 眾所週知,Steam Deck預裝的是一台Linux主機。但它的系統比較特別,為了可以安全更新,所以系統最主要的部份都設定為唯讀read only。也就是,傳統你可以直接在Linux上經管理員權限安裝的軟件包,全部都會被擋,即使你把唯讀部份設為可讀寫read write,在下次更新時,都會被一次過覆蓋掉。 筆者作為一個負責任的機迷開發者,怎樣可以白白讓一台Linux機只可以玩遊戲呢 怎樣跟老婆交代呢 所以筆者千辛萬苦,找到一個折衷方案,讓他可以當為開發機使用,那就是Podman。當然,若果大家有條件有金錢,直接改裝Windows就可以了。 Podman是什麼 Podman跟Docker一樣,都是一些管理和運行Container的主程式。跟Docker不一樣的是,它是Open source,而且是daemonless。 所謂的daemonless,就是不會有一個背景程式去長期管理Container。好處是不會因為背景程式死了,就全部Container一起掛掉,預設也不需要走管理員權限路線。但也因此跟Docker有一些使用上的差異,例如Podman沒有原生的dockercompose結構,即使坊間有python寫的podmancompose去硬對應dockercompose,但某些network是跟結構還是不能直接從Docker轉移過來。 就筆者早期的踩雷經驗而言,用Podman跑起一兩個獨立固定Port的Container來說,都很夠用,也不會遇到奇怪的Bug。所以這次,亦用來作為Steam Deck運行整合式開發的Container。 不平凡的安裝之路 install homebrew Steam OS 3,雖然可以使用更改read write,再使用pacman來安裝podman。但因為Steam OS更新後,全部要重來,工作量和網路流量都不少,所以筆者改為使用homebrew來安裝podman。homebrew只需要首次安裝時使用管理員權限,之後就會在home資料夾下留下可執行的程式,所以它不會被Steam OS更新所破壞。 install podman 記得記得重新開機,之後應該就可以成功運行container

異界鎖鏈心得分享
手機‧電玩
MacauYeah・2023-08-18

直接先講結論:好玩,但節奏就差了一點。而這個節奏差,已經算是還不錯的了,起碼比之後發售的獵天使魔女3要好。 一個成功的大膽新嘗試 本作採取單手制雙角色操作,左搖桿為主角行動,右搖桿為召喚前為視角控制、召喚後為雷基恩行動。 經典動作遊戲操作:主角使用ZR作普攻、按ZL召喚雷基恩自動攻擊。在攻擊、極限躲避時,可以在特定時機按ZL與雷基恩發動(多從)同步攻擊。按R與雷基恩作合體技。 以上操作,大家都可以示為單人操作,雷基恩就像武器Buff一樣使用。(像不像DMC系列?) 大膽就玩法:在召喚出雷基恩後,雙角色在交換走位後有一些策略行動:追擊、跳躍、捆綁等組合攻擊。重按ZL可以拉回雷基恩,同時按ZLZR可以跳躍到雷基恩身邊。再跳躍過程中,可順帶對沿途敵人攻擊(一個比DMC4的NERO 魔抓更自主的機制)。這些動作因為要用左右搖桿操作兩角色走位,體驗非常新奇。 筆者動作遊戲的能力一般,沒有研究極限操作,但光是玩它的基本操作,就已經體會到它的樂趣。動作遊戲方面,絕對對得起白金工作室的招牌。筆者亦無法言喻太多,總之玩就對了。 好的說完,就要講講它的毛病。 那個還是不太好的關卡節奏 白金工作室,在很多人眼中會認為是很夠誠意。因為它會加入很多不同的小遊戲小關卡,讓大家可以在高強度的戰鬥中,有時間轉換心情。小關卡或解迷或收集物品,操作也多樣化。 但對筆者來說,這些都很打擾遊玩主線的心情。特別是以最近的獵天使魔女3為例,突然提示你去收集、整個關卡變2D潛行、不適時的動畫過場、特定遲鈍的召喚獸追逐戰,都讓你想好好地玩人型動作遊戲的情緒比打斷。 好在,異界鎖鏈這方面都控制得比較好。小遊戲可以跳過不玩,整關轉變操作模式的情況沒有出現。 雖然如此,但戰鬥過程中總是要加入一些跳躍平台的操作。即便最後打尾王,還是要那樣的調性,一失足又要整段重來。如果你的體驗也於設計跑酷類動作跳躍,我也算了,但一邊格鬥一邊跳,跳完一點都不讓人覺到爽快,那就很礙事。到後來筆者就只能說服自己,這就是白金工作室眼中覺得最有挑戰的東西,如果成功了一定會讓玩家自豪。 綜合評價 總體來講,如果你對各種動作解迷類型都很接受,異界鎖鏈的整體表現一定讓你很滿意。如果你不喜歡在同一個章節中被小遊戲支線打斷、不喜歡突如奇來的平台跳躍,只喜歡專注地挑戰難度格鬥,你就不要對本作有太大的期待。就筆者而言,以5分為滿分,劇情4分,遊戲性3分如果遊戲性只談格鬥操作及流暢度的話一定有5分,但因為節奏問題,整體感覺只能說中規中矩。

[教學] 平民雲端服務不是夢 | 5分鐘教你如何快速起VM
科技新知
MacauYeah・2023-05-11

前言 原本筆者只是想做docker cluster,但因為在實機中建VM極其麻煩,所以就研究了好一陣子如何快速起VM。 HyperV有預設的Ubuntu template,但只有ubuntu desktop版,沒有server版。而且desktop gui顯得浪費資源,要clone VM也很廢時,放棄。 Windows Subsystem Linux起VM很方便,但同一個Linux version只有一個instance,沒法起cluster,放棄。 Virtual box沒有Ubuntu template,若要clone的話就變得跟HyperV差不多,放棄。 經過一輪資料搜集,發現了一個Ubuntu multipass engine,聲稱可以跨平台快速起VM。裏面有一些很吸引的功能,可以自己建立images、使用固定IP。 那怕即使是沒有snapshot,在自定義images的配合下預裝docker,要隨時加減cluster node都是一件容易的事。 重大決策點 醜話說在前頭。經過一輪測試,multipass最大的問題,就是custom image、fix IP都只能在bare metal ubuntu 中才能使用。如果你沒有一台閒置實體機安裝Ubuntu,還是要再多考慮一下。 重點 詳細的流程,筆者記錄了在Packer template 和Multipass Static IP中,在這裏就只說一些重點。 packer是使用cloudinit和qemu的技術,行起template中指定的cloud image 在筆者的例子中就是ubuntu22.04servercloudimgamd64.img 大家可以定義image行起後進行一些操作,而那些操作都是經過qemu vnc、ssh進去操作的。 操作完後就會直接儲存當時的image。所以在操作結束之前,盡可能地刪cache或刪去不要的user group settings。 最後生成的image,還是一個cloud image。若要再運行它,必需要使用支援cloudinit的VM來讀取。 cloudinit是用來指定初次運行時要設定的事,例如hdd size, user account password, ssh key import等。 使用工具cloudlocalds可以生成一個seed.img,這樣qemu也可以cloudinit。 HyperV應該也可以經過類似方式,進行cloudinit,但筆者未有去實測。如有更簡便的方法請告知。 multipass預設就已經有cloudinit,在bare metal ubuntu就可以直接執行。 multipass也可以設定不同的cloudinit參數。 成品 最後筆者就選擇了用packer用來預裝docker,經mulitpass無腦起VM,再使用shell script對多個node設定docker,達到即時起docker node的功能。這樣就減省了VM的安裝時間,也省去了docker的安裝問題。 說到底,如果只想測試docker cluster,其實windows, macOS中的multipass也可以實現相同的功能。因為安裝docker那些都可以經過shell script自動化,只是每次重複操作,都變得相當慢。另外,因為multipass在windows, macOS不支援fix ip,對於指定docker cluster interface又會再多一重功夫。

Playdigious 良心手機遊戲移植開發商
手機‧電玩
MacauYeah・2023-05-05

現時手機遊戲營運商,大部份都是課金、online、每日任務重覆刷這種方向走。真正可以讓筆者感受到流暢、不需要為刷而刷的類單機遊戲真的很少。 有發行單機遊戲的公司,如Square Enix ,筆者都很慷慨地支持。但Square Enix 可真不厚道,每逢手機OS升級,就總有幾款遊戲不能開。例如FF9久經處理,終於解決問題,但去年年底,Last Remnant又再碰上同一難題,升級後無法遊玩,而且到現在都還沒有修復,實在令人失望。 暫時未見有問題的,筆者又願意花錢買它遊戲的,就只有Playdigious這一家。筆者前後買了Evoland、Evoland 2、Dead Cells、Streets of Rage 4四款遊戲,一直遊玩至今,都沒有升級上的問題。 Evoland 2屬於故事類,但因為遊戲概念主打「進化」,隨著遊戲發展,2D、3D、解迷、回合制RPG、橫向清關、空戰射擊、戰棋、格鬥、跑酷、炸彈人、音樂遊戲,都在遊戲中一次過出現,可謂誠意滿滿。Evoland 首作的遊戲類型比較少,劇情較短,也沒有太大起伏,但也因此比較便宜。 Dead Cells就是出名的類銀河戰士惡魔城的遊戲,配上手柄玩就一流。沒有手柄,要用搓玻璃的方法玩一定比較痛苦,但好在優化到位,要玩還是玩得下。實在不行的話,遊戲還有自帶修改器,可以減輕敵人攻擊傷害,以調整適合的難度。最近官方也持續出DLC,讓遊戲保持有新關卡可以挑戰。 Streets of Rage 4就是一款橫向清關遊戲,系列作在以前在街機廳十分常見。Streets of Rage 4作為系列最新作,終於登上主機平台,亦同步進入手機之中。這類遊戲,看似很無腦,沒有什麼花樣可以做。但原來傳統3個操作按鍵在互相配搭之下,打得出的花樣我還真是猜不到。一個攻擊、一個捐血攻擊和一個跳鍵,就這些配合方向鍵,可以玩出投技、蓄力技、特技(如升龍)、轉身技、空中變化技。熟習機制的朋友,想打出一整套倒地、彈牆連招,並不是難事。 總括來說,Playdigious這家公司的移植遊戲重玩度很不低,Dead Cells更是隨手拿來刷兩場的好遊戲。如果大家見到它的遊戲中,有你常玩的類型,可以買一兩款來試試。又或者等它們特價,再來入手。

老IP新攪作|手機遊戲情報 | 2021/11/01-11/07
手機‧電玩
MacauYeah・2021-11-08

之前筆者因為參加一些主機遊戲Speedrun的節目,停更了手機遊戲情報一個月。現在將會回到原本的步伐,為大家搜羅每週值得關注的手機遊戲資訊。 FINAL FANTASY VII THE FIRST SOLDIER 首先要介紹,是一款老IP的新嘗試。年中的遊戲發表會,就一直預告會有一款FINAL FANTASY的食雞遊戲。以筆者的角度來看,其實並不太看好食雞類型。但這次看著FF的最終宣傳片,又比預期中的新鮮有趣。大家要知道,FF系列之前都以魔法RPG出名。如果直接套在射擊型食雞遊戲,就真是沒有賣又沒有傳統。但本次我們可以在預告片中看到,玩家並不是只能選擇射擊型的角色參戰,中間還融合了動作、格鬥、魔法的玩法。場地中也不只有人型敵人,還有系列中常見的魔物。 有興趣的朋友,真的不防預約遊戲,11月17日就正式推出啦。 官方連結 httpswww.ffviifs.comzhTW iOS Android Street Fighter Duel 再來介紹的,是一款街霸的衍生作品卡牌遊戲Street Fighter Duel。同樣地,它也不是一款無腦的換皮遊戲。它在出牌的機制上,讓QTE與格鬥風格完美融合,光看遊戲畫面,真的有很主機遊戲Street Fighter V的打擊感。 澳門地區,遊戲暫時只有事前預約。正式推出後,筆者一定要來試試它的故事模式,看看它能怎樣改寫傳統。 官方連結:httpstw.streetfighterduel.compreloginiOS Android