搜尋

搜尋結果

死亡島2- 心得分享
手機‧電玩
MacauYeah・2023-07-07

系統篇 死亡之島2 玩法與第一代類似,遊戲多出技能卡牌選擇,相關選擇會影響角色主要攻擊及防禦手段,包括使用格檔還是使用閃避作防禦手段。而攻擊技能都有三種選擇,所有技能都有相應卡片強化效果。 角色相互的差異到中後期已經無太大差別,故無需煩惱使用哪個角色,因為對劇情結局都無影響。如有朋友一起遊玩,還可以分工合作,使得遊玩多樣化。 而喪屍種類就有十數種,包括屬性不同的喪屍,角色可以利用不同環境屬性攻擊,例如可以先用水炸彈弄濕,再用電攻擊可加速中電擊屬性累積,所以活用屬性關係攻擊可以事半攻倍。 裝備系統強化則看稀有度以及級數,除橙色裝備無法掉落得到外,其他稀有度都可以從喪屍以及裝備箱得到。屬性強化則可以選擇火、雷、出血、切割、腐蝕等強化,而稀有度就影響強化數量,即越稀有,可強化數量越高。 而升級裝備所需要的金錢並不是小數,需要做取捨。但以筆者經驗來看,升級裝備並不是必要的,因為隨角色升級更換裝備效果會更佳,而且3級以內裝備差別不大,再上才有一定差別。 劇情篇 遊戲劇情可以說是今集敗筆之作,劇性相當荷里活,而角色毫無特點,直接可以用三無來形容無感動、無高潮、令人無記憶點,總括來講不及第一代劇情好。 而遊戲性就可以說是中規中矩,如有朋友一起遊玩,則可以更好。 總結 還是等等等吧 劇情評分2分滿分五分,遊戲性3分,建議打折再進行購買。

釜山航空飛日本HKD2710起
激安優惠
OHChance 旅遊誌・2015-11-19

釜山航空推出了一個11月中至12月中澳門出發,經釜山轉機飛大阪及福岡的優惠,來回未稅價MOP1,880,連埋稅的話: 大阪:MOP2,840 福岡:MOP2,710 (以上價錢為估算,可能與實際查詢時有差異) 如果以last minute 來計,其實呢個價都唔錯!加上呢個優惠仲可以加大概MOP190中停釜山,一票玩兩地!現在買11月12月澳門-釜山來回飛已經要差不多MOP2500,加多少少玩埋日本真心fit。 另外坐釜山航空飛大阪福岡,澳門半夜上機,計埋轉機,飛到日本都仲係朝早(大阪早上10點、福岡早上8點半),然後回程都是黃昏機返(大阪下午6點50、福岡晚上7點40),返到澳門半夜12點,絕對可以玩盡d 時間。相當唔錯! 不過這個優惠無法在網上預訂(網上都買到轉機去日本的票,但會貴很多),請以以下方式向釜山航空澳門買飛: 提交以下資料到 karmen@airbusan.com 旅客姓名(護照上的英文名字,寫法是 姓名,例如 CHANDAMEN) 性別 目的地(大阪/福岡) 出發回程日期 聯絡電話 如有其他問題亦可以直接向釜山航空查詢,電話 8898 2327 另外機票限制是 no change no refund,出發前退票,只會稅回稅款及燃油附加費;已出發的話就什麼都沒得退。 優惠資訊整理: 【促銷公司】釜山航空(Air Busan) 【搭乘日期】11月18日至12月17日 【販賣時間】11月18日至12月4日 【最長停留】7天 【航班限制】沒有 編輯聲明====================================== 相關連結:httpohchance.infop=3504 來源:OH!Chance!澳燦旅行資訊|FaceBookOhChance 經版權持有人授權CyberCTM.com發表。 ======================================

你開始寫 Spring Boot 測試案例了嗎?
科技新知
MacauYeah・2025-11-29

雖然筆者過往做 spring boot framework 教學中,都有滲入一些測試用例。筆者也曾經困惑了很長一段時間,所以就獨立開一個主題,聊一下筆者在實務上對spring boot test 的理解。 測試案例究竟測試什麼? 測試用例 test case 是確保你的程式碼正確性與穩定性的重要步驟,但在 framework 下,並不是所有功能都很容易寫成測試。所以在討論 framework 測試之前,釐清測試的本質。 function input business logic function output 這意味著我們輸入某些資料(input),然後經過業務邏輯(business logic)的處理,最後產生結果輸出(output)。 我們的測試目標,其實就是確保業務邏輯正確。而我們的手段就是經檢查概定的輸入資料,核對輸出結果。 那麼只要我們可以生成輸入資料,就一定可以檢查輸出結果了吧?其實不是的,因為實務上的輸入和輸出沒有這麼簡單。筆者常接觸到的輸入輸出如下 輸入 function 輸入參數 系統狀態資料,例如:資料庫狀態、外部API結果。 輸出 function 輸出參數 寫入系統(影響到)的資料,例如:資料庫狀態、使用外部API時的輸入參數。 總之就是考慮了狀態機 state machine 的問題,每個狀態外部輸入都是一個測試用例,然後核對狀態機去了下一個什麼狀態。 言下之意,我們就是暴力地生成輸入參數和模擬狀態資料,道理上就是可以進行測試。 Spring boot web framework 中,我們又會測試什麼? function input business logic function output在Spring boot web就變成如下 controller request business logic controller response在 Spring Boot test 中,我們可以用模擬的 MVC MockMvc 測試來驗證 controller 的行為。不過,其實進入 controller 前經過很多系統轉換,而這些道理上跟Framework的技術大相關,與業務邏輯小相關。所以為免折磨自己,可以將業務邏輯單獨封裝成服務(service)。之後直接測試服務 ,易寫也易讀。 controller request service input business logic service output controller response道理上 controller 能做的業務邏輯,服務 service 都可以無腦重現。這樣還可以重用服務,減少測試的數量。 如何實現輸入? 直接 new Object。大部份的情況下,因為業務是自己編寫的,應該都可以直接 new 出來。 經 json 檔讀入。如果輸入的參數量太多,逐個經 java new 是很耗時的,我們可以經 json 反序列化變成 Object。但這亦只限於自己可以操作改寫的類。 Mockito 模擬那些無法簡易經 new 或 json 反序列化的 Object。例如:spring security authentication object 我們在使用時,其實只看到 interface。我們難似自己實現一個可以反序列化的類,那麼我們可以使用 Mockito 來模擬這些資料。一些外部API的結果,我們也可以用使 Mockito 來模擬。 什麼情況下不進行測試? 有些情況下,我們可能選擇不對某些功能進行測試,原因可能包括對功能的了解不足或是單純的懶惰。以下是一些例子: 僅進行配置的Function:如果你的 Function 只是在 Framework 中填寫配置,而且你並不太了解它的運作原理,可能就不需要進行測試了。例如,Spring boot web 中,需要大家配置一個SecurityFilterChain Object,它要求大家將 HttpSecurity 轉換為 SecurityFilterChain 。因為輸入的 HttpSecurity 是系統固定的參數,我們亦沒有檢查它的狀態。這種情況下,它的輸入及輸出,其實我們都沒有真正理解。我們硬測試的話,測試功能可能只流於表面。若我們真的要做測試,也是經過MockMvc進行端到端測試(endtoend testing),測試它在事後的影響範圍。 單純的框架功能:例如資料庫的儲存庫介面(repository interface),雖然是在框架下生成的,對於自己手動調整的部份功能,筆者通常亦不會進行單獨測試,通常都會搭配業務邏輯一起進行。它可以使用 Mockito 進行模擬測試,或用測試環境的真實資料庫進行測試。 面對的挑戰 總括來講,筆者盡可能地把測試用例限定在業務邏輯中,就可以大大地降低寫測試的技術難度。但筆者還是有些問題並未完美解決。 測試用例的數量可能很多,因此共用與維護變得相當困難。逐個用例獨立編寫輸入也是很累的。對於 Mockito 的使用,筆者還是可免則免。因為要逐個功能模擬,編寫量就指數提高,這亦難似配合外部變化。一般來說,能優先使用測試環境或者 Docker 來模擬環境的,就盡量用。 離線開發、離線測試。系統依懶的外部功能越多,想做單機開發的難度就越高。即使前述有 Docker 測試,對於持續整合(CI)來講也是有一定難度。那麼這時,Mockito 就是一個可取的選擇。但這又回到編寫量及難以偵測外部變化問題。 希望這篇文章能幫助你更好地理解測試案例的編寫方向,並在Spring boot web開發中加入你自己的測試!

型別對程式語言的重要性
科技新知
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. 弱型別」 httpsblog.tarswork.compostprogramminglanguagetypesystem Typed JavaScript httpsdepthfirst.comarticles20211103typedjavascript

MHR 單機遊玩心得
手機‧電玩
MacauYeah・2022-06-17

在付費DLC出來之前,終於趕得上打通了1.0, 2.0, 3.0的內容,總計遊玩時間約142小時。 筆者沒什麼太多遊戲系列基礎,之前只有打過MHW世界的下位。亦因為之前筆者查攻略查了很多都有看沒有懂,很多遊戲系統都都攪不清楚,所以斗膽以新手的角度來寫個心得文,整理一下那些曾經讓我看不懂的事 先講大概現況,筆者剛打通1.0, 2.0, 3.0的內容,總計遊玩時間約142小時。但筆者對於遊戲配裝了解還是不足,各位如果發現問題還望糾正。 1.0 心得 1.0部分為村任務和集會所下位、上位任務。 村任務 村任務的怪物Combo相對少,新朋友記得把防具和武器都升一升,基本就可以打通結局。 另外對一些系統了解的必要進程 防具可以選擇用初期防具直接強化到最大,或者生產一套看起來防禦力數字不錯套裝來開發和強化,武器也是。 弄懂道具合成。了解回復藥大、地洞、麻痺陷阱和捕獲用麻痺球的合成素材, 弄懂捕獲技巧,最簡單就是帶貓出戰,它會提示你什麼時候可以捕獲。然後放陷阱,在怪中陷阱後,投兩個捕獲用麻痺球,就可以結速戰鬥。 弄懂武器的蟲技怎用。 集會所下位 下位的怪物攻擊力比村強一些,有需要就要換防具和武器,小心一點就能過關。筆者造了一套火龍裝都強化完,用著怨虎龍武器,成功過了下位。 另外對一些系統了解的必要進程 打自由支線任務,取神火點數和鎧玉。鎧玉是強化防具很重要的東西,跟錢一樣重要。 了解自己武器的迴避或防禦手段。以筆者當初誤選充能斧的情況來講,打下位時只會以quot;B鍵quot;及蟲技quot;反擊全填充quot;來做迴避、防禦,其實很虧。但畢竟學習動作遊戲,都要長時間的領悟,所以不強求。但如果可以,大家盡量看看自己的武器怎樣才有大位移。這是我打完2.0才比較有領悟的事。 集會所上位 上位怪物開始Combo,做好連續防禦或躲招的準備,也要開始配裝。裝備無腦一點可以堆防禦和攻擊力,小弟先做防禦力高的防具再加攻擊珠。基本上RARE 5的裝備,小心一點也可打完1.0的內容。不用特別做所謂的畢業裝。 另外對一些系統了解的必要進程 招募不同的貓和狗,了解一下它們之間的差異。(1.03.0我用的狗狗都用吸仇恨的,1.02.0貓貓都用回復系,但3.0之後因為要刷素材,所以貓改成有搶奪技能) 合成鬼人藥、硬化藥,之後都大派用場 弄懂武器的蟲技的冷卻時間 2.0 心得 打完1.0主線後,開放HR之後,開始籌備畢業裝。基本上2.0也可以靠1.0的防具來過,使用蟲技來來增加出手機會是重點。2.0的怪物主要有爆鱗龍、霞龍、鋼龍、炎王龍,能刷滿一套鋼龍裝備,之後3.0主線就會很穩。 另外對一些系統了解的必要進程 配裝技能對輸出很重要,著手準備畢業裝 因為換了不同RARE的裝備,防禦力可能就沒有之前高了,所以用蟲技作為立回的手段是必要的事 在刷怪的同時,鍊金刷護石。了解護石的等級以及出現機率。護石在打完1.0全部內容以後,應該就會全部開放,多弄幾個RARE 7護石對配裝很有幫助,但沒有的話也不用強求。 3.0 心得 風雷神又再出來亂,對付它,不外乎弄懂出招模式,或像小弟一樣,用鋼龍裝防禦硬撐過去。3.0還有一隻新怪天慧龍和其他首領怪。就天慧龍比較新鮮,比較有意思挑戰,其他首領怪就是惡意的難度升級。 對系統的必要理解 打肉質重要,還不如打頭重要。連續打到怪物的頭是最終課題。 不論你的裝備數值有多高,其實都會封頂。面對後期的怪,不打頭的話,它還是亂跑。亂龍車,亂咆