潮流特區

最新文章

Spring Data Jpa 自動化的選擇 - Code First

科技新知
MacauYeah・2025-01-22

Code First vs Database First 在早期SQL資料庫盛行的年代,在設計要使用資料庫儲存資料時,很經常遇到一個策略選擇的問題*Code First* vs *Database First* 這兩個策略的差異可能越來越講不清,筆者也找了一些現時網路上的講法。 Code First: 先從寫程式的角度出發,設計數據模型,再使用工具把你程式碼中的數據模型類(Class),生成一個對應用SQL資料庫的表(Table),自動編做好對應的數據結構(Schema)。這樣你在設計時,以程式設計為主導,方便熟悉程式的人使用。這常見於第一手開發設計,因為資料都是第一次收集和儲存,考慮收集程式的運作最為實際。 Database First: 先從SQL資料庫的儲存、取用資料的方式出發,先用SQL成生Table及Schema,再轉變成為程式碼中的數據模型。這樣的資料庫在日後作分析用途時,比較簡單易懂,方便使用熟悉SQL的人去使用。這也常見於二次開發程式,因為這樣可以確保不會錯誤地破壞原有資料庫。 那麼筆者為何講這兩個差異越來越講不清?那是因為現在的資料庫不能單純地只考慮初次或二次開發問題,而是需要考慮多個系統協調運行的問題。 多系統共享協定 - Database First 因為隨著資料系統發展,有些資料會作為數據源出現或用作共享媒界,如果一定要對設計策略作分類,在多系統協調運作下,這些應該叫使Database First。不論它們是SQL還是NoSQL資料庫,我們的程式碼都要為這個預先定義好的數據結構作出妥協。不論使用工具,還是人為分析,都要把共享的數據結構轉換成自己程式中的數據模型。 即使不是多系統協調運作,有時候因為要移植系統,但同時又要令兩個系統版本相容。新系統也是被逼使用Database First的方式設計。 自動化考量 - Code First 前述我們講到,很多時候我們也是從Database First的方式思考。不過筆者就這個Database First,也弄到滿身傷痕。 首先,拋開工具轉換的誤差,我們人為的把共享數據轉化為數據模型,共享數據有時會有一些先天的缺陷,例如: 資料沒有設計Primay Key (主鍵,唯一鍵)、日期時間的定義不明確等。面對一些意義不明的數據來源,要整合確實很要命。而且二次開發中,不可能100%重用原有的資料庫結構,很多時都會加入新的欄位或更多表格去計數。一旦加入新欄位,在團隊多人開發中,那麼使用唯一的共享開發環境,就變很易有程式碼上的衝突。 若需要多人開發,各人有一個Code First的開發用資料庫,是很必要的。這也可以在系統正式升級前,對比開發中資料庫及舊資料庫的結構,觀看它們之間的差異,評估升級的風險。 也許Code First並不是重點,重點是可以隨時建立一個測試用的資料庫,這才方便合作開發。自動化的地方,不單只限於數據結構,範例資料也該是如此。如果有維繫一個初始範例資料,可以在有需要時自動生成,對於多變的環境一定有很幫助。 現時,筆者基本上都會人為檢視資料庫,人工對照編寫程式中的資料結構(即是人工的Database First),並確保那時程式再次經自動化生成的測試用資料庫,並沒有失真(即是Code First)。至於範例資料,初期筆者也只使用SQL生成,但後期因為資料結構開始複雜,筆者也暫暫使用程式碼生成,雖然工作量會多了,但對於資料庫升級、品牌更換,這是很有效的手段,程式碼升級測試也更順暢,絕比SQL生成更易維護。 Ref - Code First vs Database First https://builtin.com/articles/code-first-vs-database-first-approach

快速做用 elasticsearch 做中文 n-gram 關鍵字全文搜尋

科技新知
MacauYeah・2025-01-16

有些時候,我們對一些文章資料,光是使用Ctrl-F文字區配搜尋,很難找到完全吻合的結果。這時候,我們可以試試看快速搭建自己的中文搜尋引擎,看看能不能更易地找到資料。而中文搜尋引擎,其實用免費的elasticsearch也可以做到。我們就來看看怎樣快速起lab吧。 經 docker 下載及運行 elasticsearch docker run -p 127.0.0.1:9200:9200 -d --name elasticsearch \ -e "discovery.type=single-node" \ -e "xpack.security.enabled=false" \ -e "xpack.license.self_generated.type=basic" \ -v "elasticsearch-data:/usr/share/elasticsearch/data" \ docker.elastic.co/elasticsearch/elasticsearch:8.17.0 建立資料庫。在elasticsearch 中,示作index,並建立自己的n-gram analyzer和tokenizer。 curl -X PUT "localhost:9200/book-ngram?pretty" -H 'Content-Type: application/json' -d' { "settings": { "index" : { "max_ngram_diff" : 4 }, "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "my_tokenizer" } }, "tokenizer": { "my_tokenizer": { "type": "ngram", "min_gram": 1, "max_gram": 5, "token_chars": [ "letter", "digit" ] } } } } } ' 假設資料庫每筆記錄有 record_id,title 和 content 三個欄位,其title, content都是中文內容。它們都套用 n-gram analyzer 。 curl -X PUT "localhost:9200/book-ngram/_mapping?pretty" -H 'Content-Type: application/json' -d' { "properties": { "title": { "type": "text", "analyzer": "my_analyzer", "fields": { "keyword": { "type": "keyword" } } }, "content": { "type": "text", "analyzer": "my_analyzer", "fields": { "keyword": { "type": "keyword" } } }, "record_id" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword" } } } } } ' 批量上傳內容。(如果要上載json檔,請把 -d'xxx' 改為 --data-binary @FILENAME) curl -X POST "localhost:9200/_bulk?pretty" -H 'Content-Type: application/json' -d' { "index" : { "_index" : "book-ngram" } } {"record_id":"1","title":"紅樓夢","content":"甄士隱夢幻識通靈賈雨村風塵懷閨秀"} { "index" : { "_index" : "book-ngram" } } {"record_id":"2","title":"西遊記","content":"混沌未分天地亂,茫茫渺渺無人見。自從盤古破鴻蒙,開闢從茲清濁辨。覆載群生仰至仁,發明萬物皆成善。"} { "index" : { "_index" : "book-ngram" } } {"record_id":"3","title":"水滸傳","content":"張天師祈禳瘟疫洪太尉誤走妖魔"} ' 多欄位搜尋,並指定title的權重為content的兩倍。 curl -X GET "localhost:9200/book-ngram/_search?pretty" -H 'Content-Type: application/json' -d' { "query": { "multi_match": { "query" : "開天闢地", "fields": ["title^2", "content"], "analyzer": "my_analyzer" } } } '

為程所困-是什麼讓你不想寫自動化測試?

科技新知
MacauYeah・2025-01-08

測試場 VS 自動化測試 筆者一直地更新自己過去所編寫的程式,很恐怖的是,那時的自己很少思考過怎樣寫測試Test Case。致使每次做更新時,都膽戰心驚,要手動建立測試場,人肉去測試每個可能有受影響的地方。在那些年的時候,有能力自己搭建測試場,已經是萬幸。但當面對一些要長期維護的程式,測試場的人肉測試並不是一個有效的方法,一來費時間,二來人腦記憶並不可靠。單靠自己去想想那些地方受影響,再測試,某程度是在挑戰人腦的記憶上限。如果是團隊合作,就更麻煩,你以為修改不會影響到其他人,結果卻是翻天覆地。 所以為求長治久安,編寫自動化測試,是有必要的。這些自動化測試,都算是回歸測試,每次程式有任何地方改動,都確保所有自動化測試被通過。理想始終是理想,但實際操作又會遇到怎麼的問題? 以筆者剛更新的程式為例,難以測試主要是當初沒有想過要測試這件事,所以程式結構通常是【連續順序】地執行。想分段測試?除非先重構。 Function中太多自己創建的Object 回顧自己的程式,初期編寫時,總會我手寫我心,每想要創建任何資源,在java中就會使用 new 字眼,或是自行呼叫某些 builder 類來取得資源,這是其中一個令自己無法寫測試的原因。 我們要想想,這些資源,是不是自己Function中所關心的核心。如果這個資源是被直接回傳的,我們要保留,如果它是HttpClient,只是要來獲取其他資源的媒介,我們或許可以利用依賴注入來取得它,即是把 HttpClient 改為經呼叫方傳入。注入的好處時,我們可以在Test中,修改那些資源的行為和結果。更進一步的是,把那些資源改為 interface 的方式存取,那麼在 Test 中就能更任意地控制該資源的行為。 首次重構某些資源成為依賴注入,大部份都會影響呼叫方,很多地方都要重寫。不論使用constructor injection, setter injection, annotation injection 等,上傳呼叫方,或多或少都會要加減改變參數。極致地,我們把構建都交給Program 框架去做,例如Spring Boot中,各種資源,都交給框架去自動配致。當然,這種做法的學習成本高,除錯成本也高。 【注入】其實是想在控作那些資源,在測試中運行得到固定的行為。使用前述的HttpClient例子,當我們業務邏輯是先訪問外部Web API,再根據結果做處理,那麼我們測試時,就會想模擬Web Api的結果。如果要做到自動化測試,最強硬的手段,就修改自己的HttpClient,模疑給出固定結果。 想要做到這種,在傳統的Java中,我們需要透過進一步抽離Interface去做。但這樣做很累,所以筆者通常會用如Mockito的程式庫,去修改HttpClient的行為。有興趣直接看程式碼的讀者,可以去看 github 。 當然,上述的 HttpClient 例子,使用測試場也有可做測試,自己再去模擬那些Web Api的回傳,有些情況下,這樣會更真實,但大家就必需好好定義測試場的行為。因為測試場可能與團隊的其他成員所共用,有機會其他人可能想要更多互動的測試方式,而非固定的結果。但並上非固定結果的測試場,自動化要測試的可控度就減少。

2025年澳門經濟預測

宗教玄學
熊神進・2025-01-07

Previsões Económicas de Macau em 2025 Macau is only a tiny spot on the world map. It is fortunate enough to be free from major natural disasters. When a typhoon is approaching, Taiwan protects it as a natural barrier. Typhoons first pass through Taiwan before reaching Macau, so the storm weakens. Regarding earthquakes, Macau is not located in the Plate tectonics active area. What worries Macau is the world economy. Today, Mickey Hung will analyze Macau's economic situation in 2025 from the perspective of "I Ching." The Beginning of Spring on the Feng Shui calendar is the beginning of the year. It is 11:11 pm on February 3, 2025. 天干地支are 乙巳、戊寅、癸卯、癸亥. , the star of water represents the Macau government in 2025, the star of the earth is the security star, the star of fire is the wealth star, Macau'sMacau's economic pillar is mainly based on turismo and entretenimento, as for Imobiliário, comércio, serviços, retalho, and restauração, Because different "五行" will have a different emphasis, which fields the city will focus on developing depends on the government's decision. 2015's wealth star will be relatively prosperous, so the Festival da Primavera will record the highest number of inbound tourists, and the income from Imposto sobre entretenimento e jogos will be considerable. However, the wealth star will be crashed at the end of the year, resulting in a decrease in treasury income. In the "Five Elements" (no need to translate), water grows wood, and wood is the conqueror of Earth. The official star is Earth, and Earth is the security star. Fire engenders Earth. There are more cyber crimes in the Year of the Snake than last year, so be vigilant with telephone scam calls and financial frauds. There will be some scams in the name of metaphysics, including Feng Shui. Metal generates water, so the financial market and stock trade will be hot in 2025. public participation in the financial market will be very popular. Please be conscious of not being obsessed with it. From the "I Ching" perspective, many people don't have much critical thinking, and some take advantage of the herd mentality to make money. Everyone should be thoughtful and analyze their financial positions and risks before investing. Mainland investors have overheated Macau's property market in recent years, and property prices have skyrocketed. In 2025, the star of the Earth will not be substantial. In addition, the construction of new development areas has accelerated the construction of habitação económica. Mickey Hung predicts that the real estate growth rate will slow in 2025, and the second-hand property market will stagnate. Macao's economy will still face external uncertainties and be influenced by other uncontrollable factors in 2025. However, from a macro international perspective, Macao's relatively small economic scale has the advantage of being flexible. With the support of the PRC government, we can maintain a prudently optimistic attitude toward Macao's economy. The GDP forecast for 2025 is estimated to be approximately 400 billion patacas, an annual increase of roughly 5%. The new executive chef will have many reforms, such as opening a wider road network, technology, and medical facilities. The following year, the government will reduce unnecessary expenditures on celebrations and spend more on people's livelihood expenditures.

在黃檀樹下修行、悟了人生

宗教玄學
熊神進・2025-01-07

在黃檀樹下修行、悟了人生 # 降香黃檀黃花梨油梨老料108顆念珠鏈 在我們的生活中,常常聽到老人們提到“各自修行”。這其實是對「修行」的另一種理解。對于佛教徒而言,我們鼓勵信衆共同布施、行菩薩道、做烟供,幷一起修行。筆者常常鼓勵讀者走出第一步,將「善知識」傳遞到朋友圈,共同弘揚大愛。 學生們經常問我,「修行」究竟是什麽?我的回答非常簡單:修行就是不斷修正自己錯誤的行爲。每個人來到這個世界上,都背負著自己所帶來的「業」,而「業」的種類可分爲三類:善業、惡業和無記業。所謂的善業,指的是合乎道德規範和國家利益的行爲;而損人利己、破壞社會秩序的行爲則被稱爲惡業。至于無記業,則是指那些不受自我意識控制的行爲,例如被奪舍等。 不少人認爲,單純地吃素、念經或做慈善就算是「修行」,因此古人有雲“各自修行”。事實上,修行不僅僅是個人的心態(如修正貪、瞋、痴、慢、疑等缺點),更重要的是學會爲衆生服務的行爲。古時候,人們通常在家中修行,或在寺廟拜神,甚至在山林中學習神通。然而,今天的情况有所不同。許多師傅在課堂上講解善知識,通過社交平臺弘揚佛法,甚至有些師傅將自己的學佛心得寫成文章,發布在微博、小紅書或面書上。總之,修行已不再是隱秘的過程,而是一種公開的分享。 一位真正修行深厚的人,除了公開分享善知識,還會主動介紹自己的念佛珠。我在修行的過程中,看到籬笆上挂滿了「降香黃檀念珠」,地上還擺滿了「七脉輪轉運水晶盤」。有人會問,爲什麽師傅不專心修行,却要讓佛器占據周遭?其實,「修行」是一個包羅萬象的詞匯,「打坐」和「入定」都是「修行」的方式之一。我用「入定」來洞悉人生的真僞,幷爲「降香黃檀念珠」進行加持和開光,給以念力和正能量。 許多打坐的人在樹下或屋內進行沉思,他們究竟在思考什麽呢?有人說他們是在半睡半醒,有人則認爲他們在懲罰自己。其實,這是一種對「修行」的誤解,以爲修行就是躲藏在深山野嶺,獨自修煉。 降香黃檀,作爲國家二級保護植物,從栽植到形成心材需要七到八年的時間。爲何選用「降香黃檀念珠」呢?主要因爲它的紋理自然形成了獨特的圖案(俗稱“鬼臉”),同時耐腐耐磨,不易裂開,幷且散發著持久的芳香,符合開光和加持的條件。 大家在打坐或念經時,可以將「降香黃檀念珠」和「七脉輪轉運水晶盤」放在身旁,當然,你也可以在念經的時候將念珠握在手中。其實,筆者想强調的是,你可以在家中的神壇上擺放一串「降香黃檀念珠」,或者將其放在今年的東方和東北方位,因爲這兩個方位被視爲凶位,可能會影響家人的健康。 作爲一位修行人,我常聽信衆提到「檀香手串」在坊間存在許多僞品,因此我需要一個公平的視聽。我已請求「中金國檢金銀珠寶檢驗檢測中心」對我的三款佛珠進行詳細檢測。正如玄學界流傳的一句話:「真的假不了」,證書上所寫的都是第三方的客觀評價,也是還修行人的一個公道。我們爲每一串佛珠提供專屬驗測和驗證,確保其真實性和價值。 在這樣的修行旅程中,我們不僅是在修正自己,更是在與世界建立聯繫,傳遞善意與愛。希望每位修行者都能够把握這份靈氣,讓自己的修行之路更加自在、更加光明。 我吸取了老樹的靈氣,很自在。

免費自用的私人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,則可以在每句對話之前,經左上方選擇不同模型。

Steam OS 內建 podman DNS 問題解決方法

科技新知
MacauYeah・2024-12-20

前幾天筆者在介紹SteamDeck 內建的podman時,沒有測試得很清楚。在長期使用下,的確有些問題需要進一步處理,這裏就補充一下解決方法。 我們前一篇介紹的 Steam Deck 內建 podman ,配上再自行安裝 podman-compose 有時會出現warning :`WARN[0002] aardvark-dns binary not found, container dns will not be enabled`。這不單影響到沒有在 service 之間自動産生 DNS 記錄,還會令互聯網功能失效,因為它會是整個 DNS 解釋功能丢失了,只是在 service 中定義 DNS 的地址並不會解決問題。筆者亦測試過,照著原本的 docker 思路,使用最傳統的做法,自己起 network ,自己起 container ,然後再串連在一起,依然會出現問題:`Error: "slirp4netns" is not supported: invalid network mode`。所以根源問題應該不在 podman-compose 上,而是在內建的 podman 依賴上。 緊急的解決方案,我們需要用到 "network_mode: host" 的方式去解決。例如以下例子 "network_mode: host" 的主要作用,就是讓 container 直接在主機的網段上執行。上面的例子中的 postgres 資料庫,它預設使用5432端口,我們並不需要再獨立宣告,即使在 container 內外,都可以直接使用 localhost:5432 溝通。而使用了主機的網段後,DNS 也可以正常運作。但這個做法的缺點就是 container 內的所有 port 都自動佔用了 host 上的使用,有時候那怕我們並不需要,它也會被暴露在外。更可能的是增加了不同 container 之間的 port 衝突。不過筆者要用於開發環境,所以這並不會是很太大的問題。

Docker 來源掃瞄 - Docker Image Scan

科技新知
MacauYeah・2024-12-19

當網安要求越來越高時,我們也要留心 docker image 的來源是不是有漏洞問題。 docker hub 本身就已經有一些安全掃瞄報告,以 nginx 的 1.27.3 版本為例, docker hub nginx 1.27.3 , docker hub 已經列出相當多的CVE漏洞。 不過對於不公開的 docker image ,安全描瞄可是要收費的。作為小團隊,可能想先尋求一些簡單的免費方案。如果你想同樣的需求,可能Trivy會幫到你。 Trivy Trivy 是一個用於描瞄軟件版本依賴或設定檔是否引用到一些有漏洞問題的軟件,它也能檢測 docker image 是否有漏洞或錯誤設定的問題。而且更好的是, Trivy 本身亦有 Docker Image 版本,我們就不用煩惱怎樣弄一個 Trivy 的執行環境,只要可以運行 docker ,有網路就可以了。但使用 Docker Image 版的 Trivy 有一個額外要求,就是它要有主機上的 docker.sock 權限。 描瞄的指令如下,其中 docker.sock 就是為了讓 containers 內部的程式可以存取主機的 docker daemon , .cache 則是為了方便暫在下載資源。 上面故意用 nginx 的兩個同版本號不同平台的 docker image,其實就是為了引出一些潛在問題。nginx 預設是使用的debain OS的,在筆者寫文章的當下,已經更新到最近的 image ,但始終有一大部份可能的漏洞。反觀 alpine OS 版本,就找不到這麼多問題。 這是因為 alpine 預設安裝的依賴較少,所以找到的漏洞也少。正所謂,做多錯多,唔做唔錯(大誤)。這其實有好有不好,因為在發生問題時,在 alpine 下可能連基本的除錯工具都沒有。除非大家有完整測試,或者對 alpine 有相當的認識,你才會選擇一個非官方預設的版本。但就以事論事,引用較少的依賴,長久之下的確是不會有那麼多隱患。大家如果有條件,也可以試試 alpine 或其他版本。 前一節我們可以看到,Trivy需要經過 socket 的方式才能存取主機上的 container daemon 操作權。但 podman 作為一個不主張 daemon (daemon less),亦主張不需要 root (rootless),那麼它該怎樣執行? 其實podman也有user層面上的 socket,而且 trivy 也有對應的方式去轉用第三方 socket (有點像使用遠端主機 socket,但官方並未宣佈正式支援遠端的方式。) 具體使用方式,筆者亦已在 steam deck 上測試,使用方式如下。不過因為 steam deck 預設沒有 root,筆者就省略 cache 指令,免得之後要有權限問題要手動清理。 Ref Podman socket activation Trivy: Support for rootless podman

steam deck 辦公用途工具資訊 2024/12更新

科技新知
MacauYeah・2024-12-17

購入steam deck 已經有一年多的時間,之前亦發過一些安裝教學。適逢筆者系統重裝,又有機會重新檢視工具的可用性。 Podman / Distrobox 一項很重要的更新,Steam OS已經有預安裝podman,不需要經home brew安裝。但預裝的podman 沒有內置DNS,可能會對K8S等進階應用有影響,不過筆者只作為單機測試用,普通的podman compose沒有問題。 另一項很重要的更新,就是 distrobox,它可以經 podman 讓大家方便地執行不同的 linux 版本,想在Steam OS上使用Ubuntu?沒問題,開箱即用;想用VScode官方維護版本,沒問題,安裝指定Linux再按裝VScode就好。 詳見上一期的介紹。Steam OS 3.5更新,內建 podman, distrobox 中文輸入法 我們不需要再安裝Fcitx5 + Rime,如果大家在遊戲模式下,已經設定好中文輸入法,那麼在輸到桌面模式下,照樣以Steam Button + X Button的方式,打開內鍵輸入法。你會見到有虛擬鍵盤彈出,它會覆寫桌面模式的。此時,即使你關掉虛擬鍵盤,並用實體鍵盤,中文輸入法都會保留。不過大家要確認,彈出當下必需要是【中文】。 若然你彈出的虛擬鍵盤是英文,請按【地球】轉換到【中文】後,關掉虛擬鍵盤,再重來一次(重按Steam Button + X Button),確保彈出的時候是經【中文】覆寫。 Discovery Discovery 是 Steam OS 預設用來安裝第三方程式的地方,它經 flathub / flatpak 存取程式。但筆者一定要先強調,它提供的第三方程式,並不一定會得到原開發者的支援,它屬於打包移植之類。 例如 flathub 中可以找到 Google Chrome (https://flathub.org/apps/com.google.Chrome) ,但它實際是經過一個github 專案移植過去的 (https://github.com/flathub/com.google.Chrome)。它有提供持續更新,但筆者不保證當中有沒有任何被植入過任何不正當軟件。 相反,flathub中有一些程式是經過原開發者支援的,例如 Firefox (https://support.mozilla.org/en-US/kb/install-firefox-linux), Gnome Boxes (https://gitlab.gnome.org/GNOME/gnome-boxes), Gimp (https://www.gimp.org/downloads/) ,這類可以比較放心使用。 筆者過去使用 Discovery ,的確有遇到一些權限問題,但最後估計應該是筆者安裝 Homebrew 所影響。筆者在重裝 Steam OS 後,直接使用 Discovery,就沒有問題。過去需要經 Homebrew 安裝的東西,現在經 podman , distrobox 或 Gnome boxes 就可以了,不再需要經Homebrew去折騰一輪。而且Homebrew也不是萬能的,因為Steam OS有限制一些套件的事用,即使安裝Homebrew也解決不了。若想要完全開放套件限制或解決依賴問題,還不如直接開啟Steam OS覆寫權限,轉用Arch Linux的安裝包。

Steam OS 3.5更新,內建 podman, distrobox

科技新知
MacauYeah・2024-12-10

之前筆者有介紹過如何在Steam OS上安裝podman,但都必需要自行折騰一番,特別是遇到一些依賴缺失時,還要逐個除錯。在Steam OS 3.5更新之後,官方已經有預安裝的 podman,筆者建議,如果有機重刷OS,就直接使用預安裝版本就好。更重要的是,不但有預設podman,連另一個神器distrobx,也在Steam OS 3.5之後引入。 podman-compose Steam OS 3.5,雖然已經有預安裝 podman ,但在實際環境下,多安裝一個 podman-compose 可以更方便地一體化操作。 我們可以經 python 安裝。 剛安裝 podman-compose ,會出現在自己的 home 目標的隱藏目錄。最後一步就是要加到自己的 PATH 環境變數裏面。 修改保存後,就重啟。之後 podman-compose 的指令就可以任意存取了。 要補充一點,就是官方預安裝的 podman 還是缺少了一些 DNS 的元件,大家會看到 warning 提示。不過在筆者單個 container 的使用情境下,並不受影響。之後要在其上二次引用的 distrobox 也可以順利執行。 神器 distrobox 在 Steam OS 3.5 中,除了 podman 外,還有預裝 distrobox 。 distrobox 其實是基於 container 技術的擴展應用,它目標是讓用經過 container 就可以輕鬆使用到不同 linux 的發佈版本。例如我想在 Steam OS 中使用 Ubuntu ,經過 distrobox 就可以用到。道理上, distrobox 基於 container (podman) 操作的,所以它能做到的,其實自己手動經 podman 也是可以做到。但若果大家想使用跨 Linux 版本的 GUI 程式,筆者還是建議優先使用 distrobox 。因為 distrobox 預設已為不同版本的 Linux 的 Image (來源影像檔) 加入部份調整,在運行時亦有x11等互通,指令也較為簡單。 以下做來例子,示範在 Steam OS 中就執行 Ubuntu 版本的 vscode。 註: Distrobox 也不是萬能的,例如它的 Ubuntu 版本內沒有 snap ,所以不能執行 Ubuntu 版本的 Firefox。 snap will not works (firefox not works)

國模內卷作-摩動核-威遠式劍鬥型

手機‧電玩
MacauYeah・2024-12-04

隨著模型愛好者的增多,中國的拼裝模型市場逐漸崛起,尤其是原創拼裝模型,不少廠商都在研發自己的機甲拼裝模型,價錢宜人,份量十足,所以吸引了越來越多的目光。 今日,筆者亦來分享一下自己首款的原創國模拼裝體驗-摩動核-威遠式劍鬥型 一般來講,國模機甲有以下特色 分件量多,但也因此可能太過細碎 好多隱藏水口。有好有唔好,精修隱水口一定比傳統水口易處理,但處理不好,會導致不完全咬合。 摩動核的特色 內卷的大廠,分件量多之餘,還有金屬骨架。亦因為有成品骨架,所以少了骨架的拼裝體驗,換來的就是更強的關節。 外型尖刺多,吉手(扎手),要小心。 有送支架 摩動核-威遠式特色 原本的角色分類為小兵機,尖刺量已經大大減少,但腳部還是有一些,把玩時要小心。 隱水口設計不太合理,導致剪鉗不好下刀。若強行用薄刃剪修水口,長久會因為位置不當,令薄刃剪變型。筆者薄刃剪就中招了,應該需要用筆刀做精修清理。 隱水口量多,所以不需要做任何打磨。 除手掌部份有個別掌型難以組裝,其他都易於組裝,不需要擴孔或削柱,精密度讓筆者很感動。雖然比不上日本Bandai,但都算流暢。 單手、單腳的可動性高,手型多,裙甲亦有三款,有潛力地擺出各種(奇怪的)姿態。 胸部、腹、胯部裙甲有相連,站屍很好看,但攞動就變得很有干涉。需要拆了裙甲,才能同時平轉腰部及抬腿。 站立沒有煩惱。因為沒有背包負擔,站立沒有配重不良的問題。再加上有合金骨架,初期不會有腳軟、腰軟問題,但緊合度有待時間的驗證。 如果一定要評個分,那就分幾個方面逐評分,以下各項以5分為滿分。 拼裝流暢度及體驗:組合度OK,但剪零件、修隱水口很花時間。組合體驗就很一般,以貼皮為主。3.5分。 造型:分件多,而且成型色好,亦有預塗裝件,成品一流。美中不足就是扎手,4.5分。 性價比:官方售價99RMB,性價比高。5分 因為性價比高,如果各位對那個小兵造型不太討厭,都可以入手一款,試下手感,支持原創。 但若果各位對機械感很有要求,就不要入手了,因為拼裝部份就是貼皮,沒有很驚艷的體驗,簡說講就是沒有結構感覺。但要補充,在99RMB這個價錢,有金屬骨架+預塗裝的貼皮,已經是成本上的極限。


九龍城寨之圍城
MX4D 劇場版 世界計畫 崩壞的世界與無法歌唱的初音未來
4DX  劇場版 世界計畫 崩壞的世界與無法歌唱的初音未來
雷霆特攻隊
怪獸 8 號: Mission Recon
IMAX with Laser 雷霆特攻隊*
4DX  ATEEZ WORLD TOUR TOWARDS THE LIGHT : WILL TO POWER IN CINEMAS
獵狐行動
獵狐.行動
關於我和鬼變成家人的那封利是
獵金.遊戲
怪獸8號:Mission Recon
死神來了:血脈
300呎窒息倒數
鐵拳驅魔
獵金•遊戲
送院途中
水餃皇后
4DX  雷霆特攻隊*
雷霆特攻隊*
Until Dawn 死亡輪迴
不說話的愛
暗算2
虎毒不
OMG! 阿媽有喜
劇場版忍者亂太郎 毒菇忍者隊最強之軍師
破。地獄 加長版
破.地獄 加長版
貓貓的奇幻漂流
英語版  MINECRAFT:我的世界大電影
MINECRAFT:我的世界大電影
MINECRAFT :我的世界大電影
PUI PUI 天竺鼠車車 電影版 MOLMAX
贖夢
九龍城寨之圍城
MX4D 劇場版 世界計畫 崩壞的世界與無法歌唱的初音未來