搜尋

搜尋結果

Steam OS 3.7 桌面模式下的中文輸入法 fcitx5+RIME
科技新知
MacauYeah・2026-02-21

上一篇我們提到,SteamOS的原生鍵盤不知為何失效,我們在桌面模式上的另一個選擇就是flatpak中的 Fcitx5。 因為Fcitx5是基於flapak安裝的,預設只在flapak下通用,後半部份,亦會介紹如何打破這個限制。 安裝Fcitx5 及倉頡五 我們可以在 Discovery App,輸入關鍵字 Fcitx5, 找到相關的套件。為更精準地安裝指定套件,可以直接在terminal 使用以下指令。 首次啟動時,需在start menu中,搜尋fcitx5,它就會長註在右下角的系統列中,選該iconrarr;右鍵rarr;input method settings,把「RIME」加入到fcitx5中,就可以使用了。 在此時,你可以打開Firefox,經controlspace的方式轉換輸入法試試。但之後你會發現,原生的Kate文字軟件,都無辦法輸入中文。因為只有Dsicovery flatpak 的 app 才能正常使用fcitx5。 大範圍套用Fcitx5 如果你找網上或AI的資訊,大部都會提示你修改系統設定檔,把fcitx5加到其中,但筆者就不成功。好在有Bilibili強者的筆記httpswww.bilibili.comopus1139601518269300768httpswww.bilibili.comopus1139601518269300768,原來SteamOS自帶的是ibus,但ibus又不讓設定(因為要換rootfs)。我們通過flatpak中安裝fcitx5,其實是可以通過ibus存到系統的。步驟如下: 如果你還未為當前的deck user配上密碼,你可以在terminal中使用 有密碼後,就可以使用 把所有module加為ibus 你沒有看錯,真的是那樣。基在上所有原生的桌面app及terminal,也可以切為到中文輸入法了。還有一個特例就是經 distrobox 生成的環境,依然無法存入ibus。 Reference httpswww.bilibili.comopus1139601518269300768

重入膠坑 8 | HG Mighty Strike Freedom 取件表
手機‧電玩
MacauYeah・2025-05-16

之前就為大家介紹過,想有效率地消除Gunpla山積,事前計劃好一個概定的流程,絕對是件很重要的事。 而流程中,預制取件表,絕對素組檔的一件神器,筆者習慣後,可以極大地減少筆者換剪、打磨工具的次數,也減少找不到零件的機會。 筆者就分享一下自己制作的Mighty Strike Freedom 取件表 Google Drive連結,有需要的讀者,可以直接下載或列印。 在這邊再簡介一下如何利用取件表作為素組之用 準備粗剪、薄刃剪、打磨砂紙400, 600, 800號、十二個零件盒 按照取件表,分區粗剪取件: 完整地粗剪頭部所有零件 放入頭零件盒 完整地粗剪身體所有零件 放入身體零件盒 依次粗剪各部份零件,放入對應的零件盒...... 分區薄刃剪修件 完整地修剪頭部所有零件 完整地修剪身體所有零件 依次完整地修剪各部份所有零件...... 選擇性分區打磨零件 完整地打磨頭部所有零件 完整地打磨身體所有零件 依次完整地打磨各部份所有零件...... 回到說明書,分區組合 依次地分區組合 選擇性記錄需要額外補色的位置。 選擇性滲線、補色 於粗坑線條上水性滲線液 Marker筆補色 選擇性保護漆 最後一定要提醒,在第4步組合以外,就必需要決定是否進行打磨,若是組合完再拆散,就有斷件風險。亦有因為上述流程不刻線,其實第5步很安全,沒有進一步打磨修補問題。 最後附上筆者速刷前四個步驟的HG Mighty Strike Freedom美照。

那些年,直在變的FF戰鬥系統|FF7 Remake Demo 試玩後感
手機‧電玩
MacauYeah・2020-03-13

續前篇 經過幾年的再磨練,FF7 Remake終於要出來。 新式ATB模式 普通場景下,動畫、音樂以及NPC對話動作都十分不錯。戰鬥糸統就像FF15一樣,以無鏠接合的方式進入。這些應該都是期待中的事,對不? 好,來點新鮮的改動吧。 戰鬥中,角色有HP、MP、ATB 3個數值,HP當然就最直觀啦,到0就掛掉,而MP就是供魔法使用,估計中後期召喚獸都是靠MP來召喚舊版FF7也是。而ATB的角度就有點不一樣。ATB以往是所有行動的先決條件,現在則是使用魔法、技能以及道具的必要數值,而且必需要以基本攻擊來增加其ATB數值當然你躲著什麼也不做也是可以累積ATB,只是更慢。試玩版中ATB只有2格,戰鬥中每個角色戰鬥都需要好好進行管理。遊戲故意設計成,自己當前操作的角色ATB增加比較慢,而AI的角色就相對增加得快,所以切換角色就變得很必要,而切換角色速度都十分方便。 如果要講問題的話,就是敵人鎖定問題,例如敵人是在玩家背後,則鎖定切換不到,必需要將角色方向調向另一方才能進行鎖定,令戰鬥流暢度卡卡的,而敵人則有類似眩暈值、弱點值等等,有效累積之下,可以使戰鬥更加順心,整體來說,試玩版體驗都十分良好,正式版是值得期待。 想睇直播,記得訂閱我地嘅 Twitch YouTube Facebook

iOS 上的「備忘錄」
手機‧電玩
Lawrence・2017-10-11

近年智能手機使用上,除了日常電話、WhatsAPP、上網等,有很多朋友都會好好咁利用部手機,使用「備忘錄」是其一,應用場景可以是當靈感一到、有野要記底、隨手畫下點子或執行其他操作時。 在iOS 11上的『備忘錄』中,APPLE 加入了一項貼心 功能 ,可以在「備忘錄」中掃描文件 ,掃描後的文件,甚至也可以加入簽名或手動簽署文件。當然如果在 iPad Pro 中,簽名時可以使用 Apple Pencil 。 掃描文件操作步驟: 開啟『備忘錄』或 製作新的『備忘錄』。 點一下 ,然後點一下「掃描文件」。 將文件放在裝置相機的取景窗下。 如果裝置處於「自動」模式,將會自動掃描文件。如果需要手動擷取掃描,點一下 或其中一個音量按鈕。 拖移四個角落來調整掃描內容以配合頁面,然後點一下「保留掃描檔」。 您可以將其他掃描內容加入文件中,或在完成時點一下「儲存」。 你還可以為掃描的文件,變換模式,包括黑白等。 若要簽署文件: 點一下備忘錄中的文件。 點一下 ,然後點一下「標示」。 若要加入簽名,點一下 ,然後點一下 。若要手動簽署文件,請選取要使用的工具,接著使用手指或 Apple Pencil(若您使用 iPad Pro)來簽名。 「備忘錄」搭配 iCloud 使用時,亦可以隨時使用瀏覽器 httpswww.icloud.com 查閱,如果你同時有多台iOS 設備,亦可以存取編輯內容,十分方便!

Spring Boot 04 - 進入http json api 世代
科技新知
MacauYeah・2024-05-23

本節,我們將會建立一個http服務,提供json api讓程式訪問。 下戴模版 我們跟上節一樣,使用Spring Initializr Maven 下載模版,但細節筆者就不再講啦。Dependency主要選擇 Spring Web Spring Boot DevTools 下載後,可以直接運行測試,可以用指令 mvn test 或經IDE運行。Spring會至少測試下能不能成功取用預設的8080端口。 Controller 我們若要實作 http json api,需要在 spring 中加入一個類,附註為 @RestController ,那方便起見,類名我們也命名為 XXXController 吧。作為示範,我們弄一個 HomeController.java ,裏面有最常見的 http GET, POST功能。 srcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapibasiccontrollerHomeController.java import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; ... other import @RestController @RequestMappingquot;apiquot; public class HomeController @GetMappingquot;someRecorduuidquot; public Map readSomeRecord@PathVariable String uuid return Map.ofquot;retquot;, quot;your uuidquot; uuid; @PostMappingquot;someRecordquot; public Map createSomeRecord@RequestBody Map requestBody HashMap ret = new HashMaprequestBody; ret.putquot;retquot;, quot;got your requestquot;; return ret; HomeController裏,完整的URL 其實為 GET httplocalhost8080apisomeRecorduuid POST httplocalhost8080apisomeRecord URL中的api之後的路徑,都是定義在 HomeController 中,而前半的8080及context path,是使用預設值。在正式環境下,可能隨時會被重新定義。但我們做本地測試,只需要驗證預設值就可以了。 我們真的運行起程式mvn clean compile springbootrun,再使用最簡測試工具進行測試。Windows的朋友,可以選擇Postman作為測試,它有圖形介面。而linux的朋友,請用curl,預設安裝都會有。下列為方便表示測試參數,筆者選用curl。 測試GET,其中1234會自動對應到spring裏的uuid。 curl httplocalhost8080apisomeRecord1234 # return quot;retquot;quot;your uuid1234quot; 測試 POST,其中的 d 參數,會對應 spring裏的 @RequestBody, H 參數則是設定 http header 的意思,我們就使用約定俗成的 json 作為 header 。 curl X POST httplocalhost8080apisomeRecord H quot;ContentType applicationjsonquot; d 'quot;requstquot;quot;did you get itquot;' # return quot;requstquot;quot;did you get itquot;,quot;retquot;quot;got your requestquot; 上面的兩個操作,都回傳了我們輸入的資訊,這代表了我們成功用spring架起了http json api,而且正常讀入資訊。 Test Case 雖然我們可以正常地架起 api,但每次開發都要 postman curl這種工具額外試一次,其實也有一些成本。而且 api 數量變大,或經多次修改後,就重複人手執行,就變得相當討厭。 面對這個問題,筆者會建議寫測試用例,即是Test Case,而且用Spring內置的@SpringBootTest來寫。 產生一個空的Test類,vscode中,最簡單可以Source Action =gt; Generate Test,然後加入這次要測試的參數。 srctestjavaiogithubmacauyeahspringboottutorialspringbootwebapibasiccontrollerHomeControllerTest.java import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.RequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; @SpringBootTest @AutoConfigureMockMvc public class HomeControllerTest @Autowired private MockMvc mockMvc; @Test void testGetSomeRecord throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;your uuid1234quot; .andDoMockMvcResultHandlers.print; @Test void testPostSomeRecord throws Exception String request = quot;quot;quot; quot;requstquot;quot;did you get itquot; quot;quot;quot;; RequestBuilder requestBuilder = MockMvcRequestBuilders.postquot;apisomeRecordquot; .contentTypeMediaType.APPLICATION_JSON .contentrequest; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.jsonPathquot;$.requstquot;.valuequot;did you get itquot; .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;got your requestquot; .andDoMockMvcResultHandlers.print; 最後就是執行 mvn test 或經IDE運行,應該都會得到所有測試都通過的結果。 mvn test # other test result ... INFO Tests run 2, Failures 0, Errors 0, Skipped 0, Time elapsed 0.368 s in io.github.macauyeah.springboot.tutorial.springbootwebapibasic.controller.HomeControllerTest # other test result ... 上面的程式碼很多,我們逐一來。 @SpringBootTest 寫在類的外面,代表執行這個測試類時,需要運行起整個Spring程序,當然也包括http的部份。 @AutoConfigureMockMvc 寫在類的外面,代表執行這個測試類時,可以模擬一些發向自己的 http 請求。 @Autowired private MockMvc mockMvc 寫在類的裏面,因為之前有定義了可以模擬 http 的請求,Spring在運行時為大家提供了那個所謂的模擬http client的實例。 MockMvcRequestBuilders,則是建造要測試的URL及Header參數。 MockMvcResultMatchers,則是檢查回傳的結果是否如遇期的一樣。 為何這個http client叫模擬 Mock 因為在測試用例中,可能連Controller 內部依賴組件也需要進一步模擬,這樣才能把測試目標集中在Controller裏,這也是單元測試的原意。只是本次的例子看不出模擬與否的差別。 MockMvcResultMatchers.jsonPath,這是用來檢測json的結構是否跟預期一樣。有些網路上的其他例子會簡寫成 jsonPath ,但因為vscode IDE的自動import功能比較差,筆者還是保留傳統的寫法。 如果大家覺得@SpringBootTest很難,想折衷地把其他測試方法,那麼把 postman curl好好管理起來,每次修改完程式,都完整地執行一次 postman curl ,也可以達到測試的效果。只不過大家還是要好好學會整合 postman curl,知道如何檢測json結構,什麼時候有錯,什麼時候叫測試通過,所以也要花一樣功夫來實現。 最後,大家千萬不要因為測試難寫而逃課,因為寫測試絕對地可以減輕日後重執行的工作量。除非你的程式碼即用即棄,否則都建議寫測試。測試跟寫文檔不一樣,有了測試也不能沒有文檔。好消息的是,文檔現在越來越多自動生成的工具,我們日後再找機會介紹。 Source Code spring boot web api basic

DJI Spark 掌上自拍無人機誕生!起降•空拍全靠手勢操作
手機‧電玩
Jackst・2017-05-25

大疆創新(DJI)終於加入風靡一時的「飛行相機/自拍無人機」陣營,正式發表旗下首台迷你無人機 DJI Spark,可謂繼 DJI Mavic Pro 後更迎合廣大眾消費者拍攝需要的空拍飛行器。DJI Spark 號稱起飛至到拍照只需「幾秒鐘」,全賴猶如出至《Iron Man(鐵甲奇俠/鋼鐵人)》的手勢操作功能;如此富科幻感的遙控方式,在 1 年前就以視像避障震撼市場的 DJI 就是要跟飛友說辦得到! 全手勢空拍 DJI Spark 的最大亮點毫無疑問是手勢操控:飛友可用直觀的肢體動作遙控無人機起飛、移動、降落,難怪發布會講者 DJI 策略合作總監 Michael Perry 形容,操作 DJI Spark 就像玩魔術一樣!Perry 在發布會現場示範了以下動作,DJI Spark 由掌上起飛,至自動返航降落,加上中途取景和拍照,都可以只用手勢做到: 起飛:伸出手臂,把大疆 Spark 置於掌心,再按兩下開機鍵,無人機便可辨識並鎖定用戶面孔,逕自起飛; 移動:Spark 按用家手臂揮動方向,往上下前後左右飛行; 向後飛:對準鏡頭揮手,Spark 會向後飛 10 米,並持續令拍攝主體保持在畫面正中間; 拍照:對著鏡頭用食指和姆指組成矩形,即可指令大疆 Spark 進行拍攝,Mavic Pro 已可這樣做了; 降落:舉高雙手並揮手。 按兩下電源鍵後,DJI Spark 的鏡頭會先辨認用戶臉容,然後自行起飛。 DJI Spark 可跟隨用家手掌方向移動,實現手勢操控! 自動飛行和錄影 遙控飛行操作藉由各種手勢大幅簡化,拍攝方面則內置多種自動模式,乾脆省卻用戶操作的需要。除過往已亮相的智能跟隨(ActiveTrack)和指點飛行(TapFly)之外,Spark 還加入了幾款「一鍵拍片」模式:空拍機一面螺旋、環繞、沖天(垂直上升)或漸遠(退後兼上升),一面錄影短片,有點像 Zerotech Dobby 的「短視頻」功能。 大疆 Spark 機首的航拍相機以兩軸雲台系統懸掛著,可俯仰 85 度至 0 度;相機內置 12.3 吋 CMOS 感光元件,可拍攝 1,200 萬畫素照片,以及可錄影 1080p @ 30fps 影片;對焦距離為 2 米至無限遠,亦備有一個 ShallowFocus(景深)模式,以軟體後製方式模擬單眼相機的淺景深拍攝效果。 DJI Spark 的鏡頭以兩軸雲台固定,可拍 1,200 萬像,但重點其實是內置的多種自動空拍選項。 DJI Spark 定位感像陣容豐富,前方一對鏡頭既能實現自動跟拍,亦能迴避障礙hellip;hellip; 還有模擬淺景深! 是的,「ShallowFocus」為 DJI Spark 重點功能之一,可模擬單眼相機的淺景深效果,文青和潮人必備。 16 分鐘續航力 Spark 的手勢操控和自動空拍功能,全部收藏在軸距 170 毫米、重量 300 克的小小機體內,預設以《DJI Go 4》APP 遙控;用戶亦可另購實體遙控器和 DJI Goggles 飛行眼鏡輔助操作。它的有效遙控距離為遠 100 米、高 50 米,前方自動避障距離則為 0.2 至 5 米。更叫人驚喜的是,DJI 宣稱 Spark 的續航時間可達 16 分鐘,可說同類型機種中最強,並可替機體接上 USB 線直接充電。 DJI Spark 遙控器形如 Mavic Pro 遙控器,但自身不設屏幕;遙控器為全能套裝配件之一。 大疆 Spark 備有紅、黃、藍、綠、白色 5 色版本可供選擇,即日起在DJI 官方商城及旗艦店接受預訂,預計 2017 年 6 月中出貨。DJI Spark 售價為 3,899 港元/15,900 台幣;附帶槳翼保護罩、實體遙控器、電池管家、收納肩包等配件的全能套裝,定價則為 5,459 港元/22,500 台幣。 原文網址: httpswww.dronesplayer.com