搜尋

搜尋結果

Spring boot web api 異常處理
科技新知
MacauYeah・2025-10-28

我們在編寫程式時,經常會遇到一些極端的情況,不會經過 function 的方式回傳結果。例如一個 function 原本是提供讀檔功能,但用戶傳入的並不是一個有效的檔案路徑,又或是誰路徑權限不足,無法讀取。這些不正常的結果,並不是原本 function 所協定的回傳值。那麼,我們會拋出異常 Exception ,中斷所有被呼叫中的 function ,讓上層用戶去考慮怎樣處理這個問題。 在 Web API 中,這些 Exception 就更常見。要求用戶傳入的參數,用戶就是有時候少了幾個。覆寫資料的時候,原本的資料已被刪除。但我們現在是經過 Web Api,不能像過去一直向上拋出異常就能通知用戶。我們需要的,是把異常轉成對應的 Http Status Code,讓用戶端可以快速識別異常的類型。 java 異常對應 Http Response Code 其實在 spring boot web 中,要做轉譯,是很簡單的。在定義 java Exception的時候,若有@ResponseStatus,spring boot web 就會自動回應對應的 http error code。 @ResponseStatusHttpStatus.FORBIDDEN public class CustomAuthenticationException extends RuntimeException public CustomAuthenticationException public CustomAuthenticationExceptionString message supermessage; 以後,任何一個地方拋出 CustomAuthenticationException (假設上層沒有人攔截)都會把該 Controller 的結果改為 http 403。Spring boot 也很聰明的,把異常中的 message 隱藏 ,免得有網安的問題。 若我們定義 Exception 時,沒有@ResponseStatus,Controller 就會變成 http 500,例如我在 controller 中拋個常見的 IOException,這次的結果就會變成 http 500。 @GetMappingquot;apiioErrorquot; public String forceIOException throws IOException throw new IOExceptionquot;force io errorquot;; 如果某些時候,我們想使用 java Exception 中的 message 欄位作為報錯信息,讓 http 客戶端,可以通過固定的 message 檔位找到問題訊息,我們可以在application.properties中,加入server.error.includemessage=always。有些特殊情況,在開發模式時 mvn springbootrun ,已經可以見到有 Exception message,但在投産後java jar又看不到。主要因為開發模式中, pom 有 optional springbootdevtools,會自動加入了server.error.includemessage=always,但 mvn package 後就沒有,因為 runtime 沒有 springbootdevtools 的覆蓋。 額外處理 異常處理除了想控制 http status code 外,有時還需要做一些額外處理,例如發出通知郵件等。若想做額外處理,需要另做一個 @RestControllerAdvice 的類,在接到指定的 exception 時,可以轉換不同的 http code ,而且還可以執行額外 java code ,改變 http ResponseBody 。 @RestControllerAdvice public class GlobalExceptionHandler @ExceptionHandlervalue = RuntimeException.class @ResponseStatusHttpStatus.INTERNAL_SERVER_ERROR public Map handleRuntimeExceptionException ex return Map.ofquot;retquot;, false, quot;anyfieldsquot;, ex.getMessage; 但要注意,一旦使用@RestControllerAdvice 後,就要考慮有沒有改變了某些預設的行為。例如上述的@ExceptionHandlervalue = RuntimeException.class,代表所有RuntimException.class的子類,都會歸由該 function 所處理。當然,你也可以多加幾個 function 來處理不同的子類。 Reference springbootwebapivalidate

Docker Swarm - Private Registry 私有影像倉庫
科技新知
MacauYeah・2025-09-10

在構建投産環境時,如果 server 群沒有互聯網,又或對私隱很有要求,需要自建一個最簡單的 registry ,可以用這個。當然,那台機第一次必需經互聯網。架起後就可以斷網,並由其他 client 提送新的 registry image更新。 Registry Server 起動方式 最簡單的起動方式,但什麼都不設定。 docker run d p 50005000 name registry registry3 若想要加入 SSL,讓你的 client 不會認為它是不安全的 registry ,最簡易可以寫成 docker compose, 由 docker compose up d 執行。 # dockercompose.yml registry restart always image registry3 ports 50005000 environment REGISTRY_HTTP_TLS_CERTIFICATE certsdomain.crt REGISTRY_HTTP_TLS_KEY certsdomain.key volumes pathdatavarlibregistry pathcertscerts 上述的 environment 中,有條件的話,還請設定需要登入才能訪問限制。最簡單,可以使用 apache http header 驗證方式。 # dockercompose.yml registry restart always image registry3 ports 50005000 environment REGISTRY_HTTP_TLS_CERTIFICATE certsdomain.crt REGISTRY_HTTP_TLS_KEY certsdomain.key REGISTRY_AUTH htpasswd REGISTRY_AUTH_HTPASSWD_PATH authhtpasswd REGISTRY_AUTH_HTPASSWD_REALM Registry Realm volumes pathdatavarlibregistry pathcertscerts pathauthauth REGISTRY_AUTH, REGISTRY_AUTH_HTPASSWD_PATH, REGISTRY_AUTH_HTPASSWD_REALM 的值照抄就好,然後pathauthhtpasswd 就需要以 htpasswd 的格式提供內容 apache password_encryptions。即是以下那個樣子 USERNAME_1BCRYPT_HASH_1 USERNAME_2BCRYPT_HASH_2 USERNAME_3BCRYPT_HASH_3 Client 連線方式 一切都設定好後,在 client 端,就可以登入並推送你的 image,題外話,cli登入的都是以明文的方式存在電腦中,所以不要隨便在公開的地方存入自己的帳號 # login docker login YOUR_DOMAIN5000 # try reupload image docker image tag registry3 YOUR_DOMAIN5000registry3 docker image push YOUR_DOMAIN5000registry3 如果 server 端沒有提供SSL,那麼 client 就只能設定 http 的不安全連線。 httpsdistribution.github.iodistributionaboutinsecure 修改 client 端的 etcdockerdaemon.json Windows Docker Desktop請經 Gui修改,然後重啟 client 端的 docker quot;insecureregistriesquot; quot;YOUR_DOMAIN5000quot; Registry Server 維護 Garbage collection 垃圾回收 當我們設立了自己的 Registry 倉庫之後,少不免就是要維護硬碟的用量。很多過期的 Image ,沒有需要,那就手動刪除,然後進行 Garbage collection 垃圾回收。另一種情況,就如前述教學中,大家使用統一版本號,例如 latest ,表面上看似只有一個 tag ,但其實底下可能已經藏有多個不同的版本,也需要經過Garbage collection來清理空間。 因為回收過程比較危險,所以官方並不建議自動做,以下就簡單講講為了做刪除和回收,設定檔要怎樣改。為方便改設定,我們更新 docker compose yaml 檔,把 server config 都帶到 container 外面。 registry restart always image registry3 ports 50005000 environment REGISTRY_HTTP_TLS_CERTIFICATE certsdomain.crt REGISTRY_HTTP_TLS_KEY certsdomain.key REGISTRY_AUTH htpasswd REGISTRY_AUTH_HTPASSWD_PATH authhtpasswd REGISTRY_AUTH_HTPASSWD_REALM Registry Realm volumes pathdatavarlibregistry pathcertscerts pathauthauth pathconfig.ymletcdistributionconfig.yml config.yml 就如下所示,為了提供 API 刪除 image 的可能,storage.delete.enbled 要為 true,又為著之後進行回收時,可以避免有人於回收中途上載,所以預先加入 storage.maintenance.readonly.enabled 的控制項。回收之前要把readonly改為true,回收後再調為false。 每次修改完,記得重啟一下 docker service 。 storage filesystem rootdirectory varlibregistry delete enabled true maintenance readonly enabled false Garbage collection 指令 # inside container # binregistry garbagecollect dryrun deleteuntagged quiet pathtoconfig.yml binregistry garbagecollect deleteuntagged=true etcdockerregistryconfig.yml # outside container, at host level docker exec it YOUR_CONATINER_NAME binregistry garbagecollect deleteuntagged=true etcdockerregistryconfig.yml

升級 Spring Boot WebClient SSL (Reactor Netty 1.2.6):重新配置 SSL 設定
科技新知
MacauYeah・2025-08-27

因為SSL provider 更新了的關係,好多 HttpClient WebClient 設定SSL的部份都要重寫以免出現 deprecated 問題 reactor.netty.http.client.HttpClient 在 1.0.x, 中可以這樣自行設定SSL逾時的部份,但當中的spec.sslContext.defaultConfiguration 在新版本,例如1.1.x後就會出現 deprecated。 deprecated version HttpClient.create .securespec gt; spec.sslContextSslContextBuilder.forClient .defaultConfigurationSslProvider.DefaultConfigurationType.TCP .handshakeTimeoutDuration.ofSeconds30 .closeNotifyFlushTimeoutDuration.ofSeconds10 .closeNotifyReadTimeoutDuration.ofSeconds10; 觀看各大網站,都未有更新,唯有自行研究官方說明。 筆者撰寫本文的時候,netty 發行版本為 1.2.6, 1.3.0 還里程碑M6的階段。所有參考皆來自1.2.6版本,實際上我們要使用新的後綴為ContextSpec類,看Class名應該有分http 1.1, 2, 3的版本,筆者就試用最基本的http 1.1。Http11SslContextSpec, 有條件的朋友可以試用Http2SslContextSpec, Http3SslContextSpec import reactor.netty.http.Http11SslContextSpec; import reactor.netty.http.client.HttpClient; import java.time.Duration; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.http.client.reactive.ReactorClientHttpConnector; ... Http11SslContextSpec http11SslContextSpec = Http11SslContextSpec.forClient; HttpClient httpClient = HttpClient.create .securespec gt; spec.sslContexthttp11SslContextSpec .handshakeTimeoutDuration.ofSeconds30 .closeNotifyFlushTimeoutDuration.ofSeconds10 .closeNotifyReadTimeoutDuration.ofSeconds10; WebClient webClient = WebClient.builder.clientConnectornew ReactorClientHttpConnectorhttpClient .build; ... 雖然這個寫法來看netty 1.2.6,但似乎1.1.x 通用。大家有需要可以交互測試一下。 Reference netty 1.2.6 httpclienttimeout 的設定 netty 1.1.30 timeoutconfiguration 的設定 netty 1.2.6 java api doc netty release version 更多筆者的程式開發分享,見請 github

重入膠坑2
手機‧電玩
MacauYeah・2024-11-21

水性漆上色 雖然筆者已經砌模型很久了,但很少試著自行上色。但多得模型開模技術的進步,以及水性漆、補色筆的出現,模型預設的分色再加上少量自行補色,就已經效果不錯了。以下是筆者完全使用水性漆+補色筆重塗的作品。打灰底後全部重新上色,白色為水性漆海棉干掃,紅色、藍色、黃色則為Marker筆。 海棉干掃要注意幾點,因為是白色,遮蓋力弱,一定要多層掃。而家每層一定要足夠輕透。筆者太貪,想半小時內就掃第二層,效果不是特別好。有條件的話,放個半天會好一點。感覺上白色遮蓋力弱,掃完第三層後,第四、五層的差別就不太大。大家可以自行取捨。 關於刮漆 大家留意自己的補色筆是不是水性,若果為水性,就跟水油的刮漆情況差不多。再加上小制作的情況下,使用補色筆都是為了方便,九成都不會預先打灰底,所以附著力會更弱。把玩時要更小心。(感謝賢者模型工作室關於水性油的選擇及指導。) 拍照把玩 作為經驗尚淺的筆者來看,老實講,在「上色」與「把玩」之間,還找不到共存的地方。前面已經提到,刮漆是會發生的問題,那怕大家用的是油性漆。更什的是,即使大家只打磨、素組、滲線,把玩多了也是會斷關節的。當花了一百小時精心制作,然後玩壞了,可痛心阿。若換成金錢來衡量,100元的高達模型,找代工精修上色,最後埋單可能要400以上,跟買一隻入門的成品模型差不多。所以大家在把玩之前,一定要做心理準備,斷了,就讓他去吧。塑膠,始㚵是不耐操。 雖然模型易壞,但放著不玩,就跟鹹魚沒有分別。所以筆者就拼著一去無回頭的決心,把高達模型扭下去(但也的確扭壞了兩三隻高達)。在這裏分享一些拍照的姿勢。 支架 拍照環境光不可控的情況下,不要拘泥於背景及支架。有條件搭個攝照棚,打光充足,誰不想。但條件不允許就要要拘泥那些了,找個有燈光的地板,手持拍照就好。選擇手持的原因是,拿得比較穩,重力干涉的因素較少,可以容易地調整模型的面向,使光源看來起比較充足。 構圖 如果是戰鬥模型,例如是高達,盡量選一些對角線構圖,會讓模型看來起更猛。另一個重點就是手機不要貼太近拍照,因為會變型。至少距離一個成人的手位,最後再把圖栽成合適的大小。或者在一個遠的位置,再使用1.5倍或2倍放大,拍出來的效果就跟肉眼感覺得差不多了。手機太近,一定是筆者卡關的問題,好不容易筆者才發現這一點。

Swarm mode 上線 5 - load balancer | proxy gateway 代理伺服器
科技新知
MacauYeah・2024-11-11

前面的例子,我們已經成功設定 ingress Network,也加了 virtual ip 。如果大家的目標是單一 web 應用,應該就已經很足夠。但作為一個足夠節儉的老闆,怎會讓一個 Swarm 只跑一個 Web 應用?但問題來了,一個 docker swarm service 就已經佔用一個公開端口 例如上述的8888,或是更常見的443。怎麼可以做到多個 service 分享同一個端口?答案就是回到傳統的 Web Server 當中,使用它們的 virtual host 及 proxy 功能,以達到這一效果。我們就以 Nginx 為例,去建立一個守門口的網關 gateway 。 以下就是一個最簡單的例子,最前端的 httpgateway nginx 對外公開端口 8080 ,它根據 virtual host,去分派對應的請求去 dmzhttp bretfisherhttpenv 及 managerhttp bretfisherhttpenv 。構架圖就是以下這樣。 ┌───────────┐ ┌──────────────►│ dmzhttp │ │ └───────────┘ │ ┌───────────────┐ │ httpgateway │ ────────►│ nginx8080 │ └──┬────────────┘ │ │ ┌─────────────┐ └─────────────►│ managerhttp │ └─────────────┘ 換成 docker stack ,就大概如下 services httpgateway image httpgateway ports 80808080 deploy replicas 1 update_config delay 10s restart_policy condition onfailure dmzhttp image bretfisherhttpenv deploy replicas 2 update_config delay 10s restart_policy condition onfailure managerhttp image bretfisherhttpenv deploy replicas 3 update_config delay 10s restart_policy condition onfailure docker stack有一個很好的功能,就是 service 名會自動成為同一段網絡中的 hostname 。即是httpgateway中,它可以經DNS,找到 dmzhttp 、 managerhttp,也就是它的 nginx 可以設定成如下的樣子。 # default.conf server listen 8080; listen 8080; server_name managerhttp; resolver 127.0.0.11 valid=30s; location set $upstream_manager managerhttp; proxy_cache off; proxy_pass http$upstream_manager8888$request_uri; server listen 8080; listen 8080; server_name dmzhttp; resolver 127.0.0.11 valid=30s; location set $upstream_dmz dmzhttp; proxy_cache off; proxy_pass http$upstream_dmz8888$request_uri; 上面的例子中,就是一般的 virtual host nginx proxy 設定。特別要說明的是 resolver 那一行,它指向 docker DNS 127.0.0.11, 而且還可以讓nginx在找不到上游時,不要馬上死亡。這樣 docker swarm 中各個 service 隨時加加減減,有保命的作用。 最後我們的 httpgateway 就是 nginx image default.conf 上述的 docker 就可以用以下方式打包。 # Dockerfile # docker image build t httpgateway . FROM nginxlatest COPY default.conf etcnginxconf.ddefault.conf 上面的 docker stack 和 nginx config,只要同步增加 service 及對應的 proxy pass,就可以o讓同一個端口,根據不同hostname做分流。當然,如果大家可以共用端口及 hostname 也可以,分流就改用 nginx location 來設定,不過這是更加偏向 nginx 的內容,日後有機會再介紹。本篇就先集中於 docker 相關的議題。 在安全性的角度, docker 還有一些配置可以做,就是讓 dmzhttp 和 managerhttp 在不同的機器上發佈。假設我們的網絡分開兩段,一段是 manager 專用,一段是 dmz 專用。在建立 docker swarm 後,我們可以為不同的節點加入對應的標簽。 docker node update labeladd zone=manager YOUR_MANAGER_NODE docker node update labeladd zone=dmz YOUR_DMZ_NODE 然後我們通過修改 docker stakc 中的 placement gt; constraints ,限制不同的 service 在不同的節點上運行。 services httpgateway image httpgateway ports 80808080 deploy replicas 1 update_config delay 10s restart_policy condition onfailure dmzhttp image bretfisherhttpenv deploy replicas 2 update_config delay 10s restart_policy condition onfailure placement constraints node.labels.zone==dmz managerhttp image bretfisherhttpenv deploy replicas 3 update_config delay 10s restart_policy condition onfailure placement constraints node.labels.zone==manager 使用上面的例子,我們就可以達到簡單分離的效果。但大家緊記,這個分離效果始終是一個規則式功能,它與防火牆的隔離還是有本質上的區別。除了利用傳統的防火牆技術外,我們的docker swarm network,其實也可以做更多隔離,我們日後再慢慢加強這個例子。

Swarm mode 上線 4 | IP 設定
科技新知
MacauYeah・2024-07-23

單機模式 IP設定 平常我們自己做測試,網絡功能通常用預設的就好。但當我們的Docker Container需要存取在區域網內的其他資源,避晚IP網段相衝是必需要的事。 大部份情況下,單機Docker使用的預設IP段會是 172.17.0.016 172.18.0.016 ... 若然現在區域網中,有一段172.18.0.024,大家不想Docker踩到其中,可以修改設定檔,加入預設的defaultaddresspools,以後它就只會從指定的區段使用。 # vim etcdockerdaemon.json quot;defaultaddresspoolsquot; quot;basequot; quot;172.17.0.016quot;, quot;sizequot; 24 , quot;basequot; quot;172.19.0.016quot;, quot;sizequot; 24 , quot;basequot; quot;172.20.0.016quot;, quot;sizequot; 24 其中base,是docker可以操作的總區域,size指的是Docker要自行分段的話,每段的大小是多少,上述的例子,就代表未來可能有以下Docker 網段。 172.17.0.024 172.17.1.024 ... 172.17.255.024 172.19.0.024 172.19.1.024 ... 172.19.255.024 172.20.0.024 172.20.1.024 ... 172.20.255.024 修改完設定後,重啟Docker就會生效。當然,重啟前,先刪除所有不在預設範圍的所有Container。 Swarm模式 IP設定 Swarm模式,與單機差不多,它需要在初始化Swarm就要定義,而且它不能與單機的網段有重疊。單機會預設使用Private IPv4 Class B,Swarm則是預設使用Private IPv4 Class A段,所以我們若就更改,就使用10.x.x.x吧。 docker swarm init defaultaddrpool 10.1.0.016 defaultaddrpoolmasklength 24 經上述例子初始化的 ingress 網段,將會是 10.1.0.024,隨後每個stack 則會是 10.1.1.024 10.1.2.024 10.1.3.024 重置Swarm 跟單機的情況類似,如果已建立Swarm後才修改網段,還是要整個刪掉重來。 每個節點都要執行以下指令。 docker swarm leave force 實測swarm leave這個指令也會把所有運行中的stack刪掉。 各節點重新建立swarm # in node 1, init new swarm with new ip docker swarm init defaultaddrpool 10.1.0.016 defaultaddrpoolmasklength 24 # in node 1, get new manager token docker swarm jointoken manager # in node 2 and node 3, join node 1 with new token docker swarm join token XXXXX YOUR_NEW_NODE1_IP2377 雙管齊下 如果大家同想要修定單機及Swarm的網段,還要留意有一個特別的網段docker_gwbridge。它雖然是Swarm的附帶產物,但它則是受單機的網段控制。也就是,如果大家有需要同時修改單機及Swarm的網段,則需要手動刪除Swarm及docker_gwbridge 在每個節點先刪掉舊有的Swarm及docker_gwbridge,並關掉docker docker swarm leave force docker network rm docker_gwbridge 在每個節點為docker_gwbridge修改設定,然後重起docker # vim etcdockerdaemon.json quot;defaultaddresspoolsquot; quot;basequot; quot;172.17.0.016quot;, quot;sizequot; 24 然後像前述一樣,重起Swarm。

星穹鐵道:模擬宇宙系統簡介
手機‧電玩
MacauYeah・2024-02-22

因為模擬宇宙是遊戲中一個很重要的資源獎勵來源,所以就來全面的講講它的運作方式。 模擬宇宙玩法 模擬宇宙分為多個世界,目前筆者已知的世界有八個,分別對應遊戲序章、一章、二意的地圖和敵人,除了Boss外的敵人種類都有一定隨機性。第三世界至第八世界需要根據主線遊戲進度而開啟。 積分獎勵 每次挑戰不同世界都有積分獎勵,即使沒有到達終點也會有積分。第三世界開始有不同的難度選擇,積分當然也會因為難度提高而變得更高。 每週積分到達上限後,可以取得重要的行跡升級素材 【命運的足跡】。而模擬宇宙一週積分會重置一次,也就是一週可以取得一個。這是角色養成後期的必要道具,只能經過不同的獎勵途徑取得(例如無名勳禮、餘燼兌換,但因為週期更長,所以暫不推薦)。 敵人道具掉落 平常角色行跡升級素材,需要經過刷普通敵人取得,同樣原理,刷模擬宇宙不同世界也可以取得。最大差異是,普通敵人刷新率受時間限制,而模擬宇宙重新挑戰就可以一直刷。要變新角色的話,刷模擬宇宙是一個可行的選擇。 積分和道具掉落獎勵也當然會因為難度提高而變得更豐厚。 命途、祝福 在主線中,不斷地提及這個遊戲中很有多個古神之類的存在。而這些神明,在模擬宇宙中就以【命途迴響】、及【祝福】來為玩家加Buff。 玩家在進行世界時,選擇角色時,亦要選擇命途。然後每次戰鬥後,就可以在三個隨機祝福中選一個。當目標命途底下對應的祝福齊夠六個以後,就可以取得命途迴響,一個更強大的Buff。指定祝福越多,命途迴響有更多額外功能,所以模擬宇宙中的Buff有很大的隨機性。 我們要降底隨機性,就只能通過有限度的置換來選取掉落的祝福。 解鎖一定量的命途、祝福,也可以取得一次性的收集進度獎勵,所以去到第七、八世界,你就會開始糾結,該選新的祝福但沒有命途加成,還是先加成後收集? 奇物 更隨機的道具,筆者認為大部份都是Debuff,因為它很大機會嚴重地干擾命途和祝福的配搭。因為同樣有收集進度獎勵,所以第一次遇到的話,也是要取舍。 筆者建議就先收集,後通關。因為低機率的物品真的百年難得一遇。 沉浸獎勵 一定難度開始,在挑戰過程中會出現沉浸獎勵,可以使用【開拓力】或【沉浸器】來兌換。它也是取得後期遺器的重要來源。

嫁錯了,我應該離婚嗎?
宗教玄學
熊神進・2022-04-30

當一對夫婦向筆者吐心事的時候,筆者會耐心聆聽,然後注視對方眼神(心靈之窗),手指在搯算她他的配偶星,最重要是集氣七輪,測試他她們的負能量。 苦主嫁了一位有家暴的男人,筆者看了一看苦主的birth chart,第7宮夫妻宮落在射手座,星盤給筆者三個啟示: 1) 她一定很欣嘗能力比自己強的男人,因為她的上升星座 ASC 在雙子座,她很難接受又窮又沒本事的男人做丈夫。 2) 她很想跟丈夫有些浪漫,例如一家人去去國外走走, 又或去去海邊大叫幾句。 3) 她的丈夫沒有給她在經濟上的支助,難聽說句,她喜歡了一件名牌手袋,可是丈夫根本沒有財力買給她。 她的宿命點在天蠍座( 0deg;53'26quot;),筆者認為第5宮是分析她的祖蔭,她不是富二代,父母也不是做生意,沒有良好人脈關係,這種基礎是需要知識提升,用知識改變命運,很可惜,天蠍座的埋怨心比向上奮鬥心弱,她從離開學校至今,她根本沒有再想過繼續讀書,她早早已把丈夫看成是生命中的救命稻草,如果筆者推算沒有失准,她每天的時間就是用在手機上, 很心痛。 她可以改變命運嗎?筆者看了她的幸運點, 是雙子座 ,正如大家都知道,第1宮命宮在雙子座的女生必定是先苦後甜,她之前是不是嫁錯,這是很主觀問題,玄學家是不會貿然下定論,只是告訴她,雙子的精神就是勤奮好學有想像力,她需要的不是金錢,而是自由。她的小孩在6歲後上了小學,她就要有個人創業目標,不要靠男人養家,今天,很多女生都是有個人事業,並不是一結婚就要向丈夫宣佈退休。 她的丈夫,面相告訴筆者,他不是浪漫男人,很現實,很有城府,如果離婚,他會在法庭爭取很多。其實他自少就缺乏好運,父母不懂他的內心追求,他很需要ldquo;戰鷹神牌rdquo;幫他沖出框框,從黑暗中飛到光明,他很需要成就,請苦主行大愛, 送給枕邊人一件優質法寶,感恩。 命運是掌握在強者手上,並不是決定在玄學家口中,熊老師只是善心提點有緣人,ta應該積極面對人生,而不是消極逃避問題。熊老師已為有緣人關上命盤,並祝福她。 如有任何問題,歡迎聯絡: 林小姐 13726267799晚8時後 熊神進:澳門 85366618785 Facebook httpswww.facebook.com熊神進風水法器店MasterMickeyHungFortuneWorkshop252635158482455 中國澳門風水掌相學會會長政府註冊 公共微信 macaumasterxiong 淘寶風水法器店:httpmacauhung.taobao.com 今日頭條作者歡迎關注

嫁錯了,我應該離婚嗎?
宗教玄學
熊神進・2022-04-30

當一對夫婦向筆者吐心事的時候,筆者會耐心聆聽,然後注視對方眼神(心靈之窗),手指在搯算她他的配偶星,最重要是集氣七輪,測試他她們的負能量。 苦主嫁了一位有家暴的男人,筆者看了一看苦主的birth chart,第7宮夫妻宮落在射手座,星盤給筆者三個啟示: 1) 她一定很欣嘗能力比自己強的男人,因為她的上升星座 ASC 在雙子座,她很難接受又窮又沒本事的男人做丈夫。 2) 她很想跟丈夫有些浪漫,例如一家人去去國外走走, 又或去去海邊大叫幾句。 3) 她的丈夫沒有給她在經濟上的支助,難聽說句,她喜歡了一件名牌手袋,可是丈夫根本沒有財力買給她。 她的宿命點在天蠍座( 0deg;53'26quot;),筆者認為第5宮是分析她的祖蔭,她不是富二代,父母也不是做生意,沒有良好人脈關係,這種基礎是需要知識提升,用知識改變命運,很可惜,天蠍座的埋怨心比向上奮鬥心弱,她從離開學校至今,她根本沒有再想過繼續讀書,她早早已把丈夫看成是生命中的救命稻草,如果筆者推算沒有失准,她每天的時間就是用在手機上, 很心痛。 她可以改變命運嗎?筆者看了她的幸運點, 是雙子座 ,正如大家都知道,第1宮命宮在雙子座的女生必定是先苦後甜,她之前是不是嫁錯,這是很主觀問題,玄學家是不會貿然下定論,只是告訴她,雙子的精神就是勤奮好學有想像力,她需要的不是金錢,而是自由。她的小孩在6歲後上了小學,她就要有個人創業目標,不要靠男人養家,今天,很多女生都是有個人事業,並不是一結婚就要向丈夫宣佈退休。 她的丈夫,面相告訴筆者,他不是浪漫男人,很現實,很有城府,如果離婚,他會在法庭爭取很多。其實他自少就缺乏好運,父母不懂他的內心追求,他很需要ldquo;戰鷹神牌rdquo;幫他沖出框框,從黑暗中飛到光明,他很需要成就,請苦主行大愛, 送給枕邊人一件優質法寶,感恩。 命運是掌握在強者手上,並不是決定在玄學家口中,熊老師只是善心提點有緣人,ta應該積極面對人生,而不是消極逃避問題。熊老師已為有緣人關上命盤,並祝福她。 如有任何問題,歡迎聯絡: 林小姐 13726267799晚8時後 熊神進:澳門 85366618785 Facebook httpswww.facebook.com熊神進風水法器店MasterMickeyHungFortuneWorkshop252635158482455 中國澳門風水掌相學會會長政府註冊 公共微信 macaumasterxiong 淘寶風水法器店:httpmacauhung.taobao.com 今日頭條作者歡迎關注

Monster Hunter Rise 力求革新的一作
手機‧電玩
MacauYeah・2021-12-29

Monster Hunter Rise 在本年(2021)年初就發售,但發售之後,風評都不算太好。網路上有讚美,也有很多負評的聲音。而且負評的基本都是老玩家,一致的認為MHR不再有原本的味道。很多不應該改的地方都改了,例如:改得簡單了;改得變成快餐了;為了加入新元素,硬把原有功能削弱。 筆者不算是舊系列的玩家,只有在MHW上小有遊玩,也只有三個月前,才正正式式體驗MHR。三個月來,大概遊戲60小時。有些體驗,其實筆者很想分享,因為這遊戲沒有老玩家講的這麼糟。 主機遊戲的發展與Capcom這些年來的政策 首先要先講講一些時代背景,好像太家知道為什麼MHR要設計成這樣。 在手機遊戲搶佔市場之前,主機單機遊戲對比起電腦MMORPG,都算是有利可圖的一個領域。但在手遊出現後,輕便性、隨手刷一刷的享受,變得更為吃香。在主機系列中,便攜幾乎不太可能做到,Switch看似可以有這個優勢,但因為重量和手柄手感問題,其實都不宜帶出門。它的主要優勢,只能說是家庭樂。在原本創新性越來越少的主機遊戲中,也要慢慢想辦法吸引新血來維持IP的魅力。 由PS4年代起,Capcom的好幾個老IP,都有類似改動:降低操作下限,增加操作上限。 街霸五,就正是這樣,最初發售時,很多老手都有一個問題,怎麼Combo和Hit confirm變得人人都做得到?整體難度都一起變低了?街霸五變成了純綷的猜謎博奕? 的確,街霸五在發售之初,夾雜一些技術問題,入門難度低了。但隨著技術的修正,入門門檻雖低,但其實上限無變,天花版依然是只有經過苦練的電競選手才有機會碰到,而且更講求策略性。真的越玩越有不同體驗 面對 Cammy 真的不要亂發波|屢敗屢戰Ryu Devil May Cry 5也是一樣,某些Combo變易,更重要的是角色性能變強了,在低難度下,可以讓新手採取更穩健的,直接用資源換輸出,讓新手不用苦於完美捕足按鍵時機。但一如以往,高難度下,都是難得嚇人。遊戲提供了更多選擇,但也必需要求玩家都熟習後,同時操作才能成功過關,天花板再一次被拉高。能感受到這些細微差異的朋友,只有在重複遊玩時才會發現。 MO廣東話 DMC5 M20 DMD 難度 S Rank 無傷 比較不一樣的是,只有MHW是沒有把下限大改的一款Capcom遊戲。MHW成功只用畫面的提升、無縫地圖、操作便利,就吸引了一大波新血進入。 但一定要提的一個是,在商業角度來說,MHW很成功。但以遊玩的角度來說,MHW是筆者遊玩最少的一款Capcom遊戲。一個字來形容:「難」,難到讓筆者連主線結局都過不了。 跟著一群朋友組隊,雖然可以享受被carry好處,但自己並不知道這遊戲該怎麼玩,更沒有心情去刷任務,也不知道網絡上各位大神都底講的配裝是配什麼? 難,是MH系列的傳統沒錯,而且這不是遊戲設計問題,只是筆者個人能力問題。遊戲依然老手向,老手們在經歷系列各代的磨練,魔物習慣、到底怎樣走位、團資源,都很有心得。 但筆者很肯定的講一句,如果以同樣難度,再出一款續作,應該就不會像之前的商業成功了。老手會買,但新手可能並不會。 MHR也嘗試從降低入門門檻發展 MHW入過坑,但它的魅力程度未吸引到可以讓我突破它的關卡難度。我想官方在設計MHR時,也在思考怎麼降低入門門檻這件事。 它取消了冷熱飲,刪去了一個純Debuff的功能,讓大家可以集中地準備有必要意義的行裝。 它刪除了找盲目找怪的前置要素,讓新朋友知道自己要去哪裏。 它加入了蟲絲技,越級地提高了玩家的性能,但對等地提高了原本的一些技能的要求,例如充能斧的GP時間點變得更短,硬要讓各位玩家初期放棄GP而嘗試蟲技。 它加入了操龍,讓爬龍更易,觸發條件更加直觀。以前是要待魔物氣弱時,才有條件爬龍,現在只要引兩隻魔物打架,基本就可以爬龍。 在很多老手眼中,細節被改了,傾向快速刷刷刷。但在新人眼中,還是那麼的一頭冒水。因為遊戲可以深究的硬核設定很多,需要大家長時間摸索才能發現。 新人只要有條件慢慢體驗,老手只要跳過前期的任務,後期的關卡,應該不會讓大家失望。 MO 混剪獵人|新米上位集會所|MHR MHR的平均型難度提升 筆者覺得調整後的難度,更加有長期遊玩的吸引力。首先,遊戲的村任務,可以很好的讓新人遊玩、感受遊戲,配裝並不需要太多考慮,參考防禦值和屬性已經很夠。再者,集會所下位難度,讓新人有另一份認知,開始知道要刷素材,知道有配裝的選裝的必要。上位難度中,怪物不是單純的能力值上升,而是模式的改變。這更要玩家重新熟習自己的武器,到底位置要怎樣走、蟲技要怎樣配,武器怎麼用才能獲得更佳更安全的輸出。再上一級,就是挑戰任務,在沒有隨從的幫忙下,如何立回走位,令玩家真正的熟悉戰鬥的精粹。但有一點必需改善的,其實是挑戰任務的數量,因為實在太少,而且被指定武器所限制,有點美中不足。 但以商業角度來說,遊戲有一個做得最壞的地方,就是以超慢步伐更新最有強度的DLC。很多老玩家,一下就肝完沒東西好玩。如果當初,就準備了一堆硬核活動任務,應該就不會一堆人馬上轉賣二手。可能官方覺得慢慢更新,可以更有條件延長壽命,其實明智的消費者,都會買一手放二手,再等DLC出齊以後再回購二手。 Hardcore挑戰任務,這個後期DLC更新才出來的挑戰任務妃蜘蛛 Newbie Time Attack|新米 挑戰任務05 妃蜘蛛 5rsquo;13rdquo;63|MHR Challenge Quest 05 RaknaKadaki 總結 總括來講,它值得一玩,如果你是老手,現在遊戲更新到3.7,有足夠難的任務讓你挑戰,雖然整體格調不一樣了,但它的改進也是值得一試的。如果你是新手,請一定要先練成線下單刷,因為線上抱大腿只會讓你更不了解遊戲機制,你會越玩越迷失,線上也會因為被拖後腿的情況而越來越少人玩(整團被貓三次就會任務失敗)。

抗疫同時都可實踐綠色生活?
有機健康
皓芯・2021-09-25

新冠疫情發生以來,全民衛生意識普遍提高,種種抗疫措施無可避免地影響到我們的生活節奏,甚至是「實踐綠色生活」步伐! 抗疫措施不只在表面,回到家裡一樣要做好!其實留在家中,照樣可以在日常的清潔工作細節中實踐,同時不減抗疫力度!保障家人健康,也令環境更健康。 位於澳門連興街的 WE Living Store 生活店 文末有詳細地址,店內售賣的商品都離不開ldquo;純素rdquo;、ldquo;有機rdquo;、ldquo;裸買rdquo;、ldquo;公平貿易rdquo;,價錢牌似是從用剩的紙皮箱上截取;其中店內一個貨架看似銷情不錯,一桶桶整齊排列著,地下放有容器以供quot;祼買quot;,細看原來是有機天然清潔用品品牌ndash;BioD。 筆者站在一旁細聽店主向客人介紹,BioD為英國製造的天然家庭清潔用品,多項系列商品包括洗潔精、家庭清潔劑、浴廁清潔劑、洗衣液等,使用可持續的純天然原材料,樽身更採用100%循環再造物料製造、不含有害成份、不含任何動物性原料、不做動物實驗測試商品,因此敏感性肌膚人士都可以安心使用。 BioD 更榮獲多項認證:英國素食協會、英國廢除活體解剖聯盟、英國過敏協會、英國倫理消費者雜誌 、英國零售商協會全球標準、英國評估局。 店內更有售賣每日鮮製手工雪糕ndash; 抹茶瘋子 Matcha Mania ,低糖、低脂、無添加人工色素,聽店主透露早前在會展中,大受客人歡迎的特濃抹茶雪糕,便是使用有機公平貿易抹茶粉,其中純素檸檬雪糕、純素抹茶雪糕更是素食人士之選。 現今愈來愈多人尋求「天然」、「純素」、「環保」的產品,不僅無毒環保,又能不傷害寶寶、對家人好、對毛孩好,用起來也安心。天然溫和的清潔品,讓居家環境更乾淨舒服,讓您我都能為地球出一份力。 店內的quot;塗鴉牆quot;可讓家長放心購物 售賣地點: WE Living Store生活店 更多貨品連結httpsshop.mycart.aiwelivingstore FB welivingstore WeChat welivingstore IG welivingstore 地址:澳門連興街17號A, 方興大廈地下 (佳景樂園土地公對面,見到小明髮型屋直行入巷內, 面向石級方向前行,沿路就會見到) 電話: 6326 8812 營業時間: 星期一、三、四、五:12:0019:00 星期六、日:13:3019:30 星期二休息 (店主有時會外出送貨,建議到店前先致電確認)

本週遊戲重點推介|2021/08/02 - 08/08
手機‧電玩
MacauYeah・2021-08-09

極地樂園 華語區的遊戲開發中,以中國大陸的市場最蓬勃,但也大部份使用課金制。課金制最大的壞處,就是開發者常以吊命的方式限制遊玩的樂趣,很少可以隨心所欲地暢遊。反觀台灣的遊戲類型就不太一樣,還有一些走一次性買斷路線。就像現在介紹的《極地樂園》,就是一個買斷式的解迷遊戲,可以讓你以明確的價格,取得整體的遊玩體驗。 《極地樂園》是一款以北極冰洋為背景的益智解謎遊戲,你將規劃一條條順暢的路線,引領北極熊回到小熊的身旁。當冰層不斷融化,北極熊的回家之路將變得越來越艱難⋯⋯ 遊戲裏面有十幾種獨特的地圖機制交織成 150 個精心設計的關卡,不限時、無壓力、不用追求高分、可以隨時悔棋或前往別關,讓大家可以靜心體驗每一個挑戰。 預約連結 iOS Android 傳奇 4 說起遊戲開發,早年的亞洲線上遊戲大部份都由韓國所包辦。韓國也出了不少IP,WEMADE的《傳奇》就是其中一個由PC時代一路流傳到Mobile時代IP。介紹這個的原因,不單是因為這是大IP,更還是因為過往的一些華語地區代理者,也為這個系列作出很大的貢獻。 當初傳奇3手遊版要推出時,是2010左右的年份。以當時的開發技術力來看,能玩到這款遊戲的韓版也有最高階的手機才能暢遊。代理商在當時接收到手遊程式碼的時候,基本上是要完全自行全新開發一次做優化,以確保遊戲的可玩性。雖然當時也是讓人感到不那麼原汁原味,但這樣也總比無法暢遊要好。 知乎原文連結 httpswww.zhihu.comquestion28983625 為開發者的角度來看,大家對這個系列的支持,真的是揭盡所能的地步。系列延續到最新作《傳奇 4》,回到由WEMADE直營,進行為期四天全球刪檔封測活動。此外,事前預約及雙平台預註冊進行中,參與活動即可領取獎勵,助玩家增添戰力。 由於考慮到文章刊登日時,封測活動和事前預約連可能己經有改動,所以最新資訊請到官方網站瀏覽 httpswww.mir4global.com 瑪奇Mobile 另一款要介紹的遊戲,也是當年韓國IP《瑪奇英雄傳》的手遊續作。當年的《瑪奇英雄傳》雖然是以MMORPG當位,但在筆者心中,真的是可以稱得上是Hardcore動作遊戲(因為筆者沒有課金?)。不知何原因,手機作品《瑪奇Mobile》在2018年公佈初期消息後,就一直沉默。直到最近,終於有更消息公佈。 現時的遊戲畫風由原本的韓系真人比例,改為Q版動漫風的設計,除了原作的營火、打獵等原元素,遊戲中亦會加入原創村莊、建築,讓玩家有更多新鮮的感受。 不過遊戲就未有正式的發售口期,暫時預計會在2022年推出。