搜尋

搜尋結果

【Summer Fashion】戴口罩也有好氣色,超強防脫妝底妝!
美容
Lifemagshopper・2020-06-19

不知不覺,口罩已成為出門必備的用品!我們的皮膚從一開始的過敏不適應,到慢慢習慣在這種「悶熱環境」中生存。但是戴口罩脫妝的問題相信令很多女生都很困擾,想戴口罩仍然漂漂亮亮,就接著看下去吧! 5分鐘快速出門日常妝 隔離 + 遮瑕 這個方法超簡單,適合平常要長期在辦公室需要戴口罩的OL們,而且不用5分鐘就可以出門,真的省時又省力!完成日常的護膚部驟後,塗上控油又帶有調色亮白肌膚效果的隔離霜,然後,在需要的地方上局部的遮瑕(眼下、額頭的位置)。最後,在全臉用沒有顏色的碎粉定妝。底妝就完成了!眼妝和眉毛的部分可以按照自己平常的方法來化,馬上就可以提亮氣色。 推薦產品: Sofina 持久控油底霜 Primavista UV Long Keep Base 圖片來源:Sofina 這個底霜小編用了很多瓶了,非常適合夏天,控油和持妝能力都很強,而且帶有提亮膚色的效果。推薦油性和混合性肌膚的女生用!如果是乾性肌膚可以試試它們的修護保濕精華底霜。 Nars Soft Matte Complete Concealer 柔霧完美遮瑕膏 圖片來源:Nars 這個遮瑕膏相信大家都不陌生,自推出以來一直好評如潮!小編自從用了這個之後就沒有再用其他牌子了。它的遮瑕可以不斷疊層,隨個人的需要調整,看起來也不會厚重。它的完妝效果非常自然,可以很好地和皮膚融為一體,就算沒有用底妝,也不會看起來「一撻撻」。雖然它是柔霧的質地,但用在眼下也不會乾。如果眼下非常乾、常常有浮粉的問題,可以試試看。 Too Faced 光澤美肌蜜粉 - Born This Way Ethereal Setting Powder 圖片來源:Too Faced 如果長期要戴口罩,還是建議用透明的蜜粉,這樣口罩才不會沾色。這款Too Faced的蜜粉帶有修飾毛孔的效果,粉質亦非常細緻,控油效果持久但不會令皮膚很乾。就算沒有上底妝,亦令皮膚看起來很好! 口罩防脫妝底妝 剛剛介紹了局部遮瑕的方法,那如果覺得遮瑕力不夠,還是想上底妝的話要怎麼化呢? 上妝前盡量用控油、清爽的護膚品,像是Gel狀的臉霜。妝前乳也是一樣,然後底妝的部分,用主打霧面、持久的底妝,其實一些夏天的底妝一般都非常適合。但千萬不要用光澤形或是保濕形的底妝,不然很容易會浮粉或沾口罩。底妝最好愈少愈好,不然會很悶。然後上碎粉用Baking的方式,在眼下、鼻翼、下巴這些較易脫妝的位置加強定妝。(如果不想用Baking的方法,也可以在這些位置多上一點粉,再用紙巾印一印。)最後上定妝噴霧,效果會更好! 推薦產品: Nars 極光亮顏粉底液 圖片來源:Nars 它的遮瑕度很好,平常只要一點點就足夠塗整張臉,持妝效果很好。小編試過帶妝上HIIT的課程,上完課妝還在。它的妝效是半霧半光感,非常提膚色,適合混合性肌膚使用! 希望這些上底妝的方法對大家都有效! 作者:Cher 更多文章分享: 提升返工幸福感!相逢恨晚的五款Office必備神器! 拯救不會下廚的你,五款高顏值的廚房小家電推介! 【Summer Fashion】突顯個人風格!5間高質感的飾物品牌推薦 【Summer Fashion】618 前必看!5間特色淘寶女裝店推介

Coding Anywhere 工作方案
科技新知
MacauYeah・2024-06-13

最近筆者一直在準備軟件開發的教材,因為各種原因,例如:新舊硬件交替,沒有固定的電腦等等,讓寫稿和設計教程的進行得很慢。但其實這種情況並不旱見,即便是真正的開發團隊,也會時時刻刻面對各種新舊設備的更換。在不久的未來,這種更替速度可能更頻繁,工作模式也很可能趨向這樣,為了打造更靈活的工作方案,適筆者一直為自己的coding anywhere情境物色合適的工具。 基本假設 在分享之前,有些前題條件必需要滿足,coding anywhere的基本條件是我們可以把一些厚重的資源變成cloud或遠端工作,如果你是開發主機遊戲,你的測試必需要在PS5上跑,那就沒有條件帶著裝備走。即使你可以設定遠端連線,但你人在外,其實沒法在PS5上做互動。真正有條件實行的工作,必需要可以在外由開發至測試都行得動。 在這個前題下,筆者就開始分享一些自己嘗試過不同組合。 不可或缺的東西 - 滑鼠、網絡 這件事,看似不重要,但筆者一直沒法找到完美的解決方案。 無線滑鼠是標準配置,筆者曾經想去掉滑鼠,但不太可行。這個大家還是選一個不太大,而且可以穩定在不同機器切換的滑鼠吧。至於鍵盤,視乎你的主機有沒有實體鍵盤,如果最後選擇平板或掌機的話,還是需要帶鍵盤外出,亦即是不論你選擇何種方案,鍵盤的重量也是不會消失的。 另一個就是網絡流量問題。我們處身的環境,並不一定有免費網絡。有時為了安全性,我們不想配對公用Wifi。那怕不考慮安全問題,公用Wifi都很常出現因為人流太多而被踢的情況,所以一般都考慮直接使用手機的4G/5G網絡。而為了節省流量,一般控制好大檔案/大更新的下載時機,都是可以達到的。 不同的工作模式,不同的選擇 上述第一個問題在筆者看來,都屬於沒有選擇,但下面的選擇,可以基於價錢、功能、需要而搭配。另外,我們還要假設我們有足夠的Remote資源可以用。但如果大家的開發,必需要帶著硬件資源,就不太可能實現coding anywhere。 一台入門級的Notebook 如果我們大部份工作,都可以經Cloud Service解決的話,其實我們不必投資太多在主機之上。Notebook帶著四處跑,壞的可能性也多,入門級的Notebook就算壞了也沒有那麼心痛。 全Cloud Service還有另外一個好處是不需要擔心備份問題,壞了Notebook就狠心換機。而且Cloud Service的好處是需要更新client software的網絡流量消費不高,不過想真省錢的話,就需要好好控制cloud service。 例子1,如果大家熟識或願意使用github codespace或gitpod等全cloud IDE,Notebook只需要安全Browser就夠。所有IDE, VM都由github或gitpod提供,它們各自有各自的免費用量,也就是說,當大家真的不夠用又不想付費,可以兩著切換用。真的不夠用,就時租codespace 2G 每小時$0.18USD,約為每小時1.44MOP。 例子2,如果大家有自己Cloud VM,可以用VS Code + SSH,除SSH的extension外,其他安裝及運行在VM中,對Notebook client的要求不高。Cloud VM品牌可以使用Digital Ocean、Linode等,2G機器價錢更低,每小時0.018USD左右,不過就要自己初始化各種工具。 一台高階的Notebook 這個方案可能就不需要再多解釋了,那就是你把家裏的核心電腦帶著到處走,一切都自給自足。在外的不可控因素可能就只有電量控制。另外一方面,長期的備份和維修成本也是需要考慮的。 輕便裝:一台中階大平板 跟上面的遊戲用PC掌機類似,不過螢幕更大,但缺點是配上鍵盤後,價錢比得上一台中階電腦,出門的重量也比得上電腦。在軟件上,你還必需要選擇Cloud VM,Local IDE也不一定有。所以在成本上來講,沒有很太優勢。大平板可能只對那些有專門APP需求的用戶有意義。 究極輕便裝,一台7/10寸入門平板 大平板最大的問題是價錢,但如果換成小平板,一切就不錯了,壞了也沒有那麼心痛。源用所有純Cloud解決方案。出門的負重最低,電量也最有保證。這是筆者最推薦的方案。 低成本高階機:遊戲用PC掌機 對,你沒有看錯,筆者指的是主打遊戲的PC掌機,也是筆者現時自己的最佳方案。假如你在工作室、家、公眾環境來回切換,很擔心傷到Notebook的話,那麼買台低成本的PC掌機絕對是可以接受。有些很重要的底層功能,需要多台Cloud VM,可能花費很高,所以還是需要經Local實現比較有性價比。 它最重主要的問題是螢幕小和沒有鍵盤,但這個程度,對比入門平板來講,其實都差不多。但它比平板有更強的CPU、RAM,作為移動核心電腦一定沒有錯。你還可以自由選擇Local VM、Cloud起VM。

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。 @ResponseStatus(HttpStatus.FORBIDDEN) public class CustomAuthenticationException extends RuntimeException { public CustomAuthenticationException() { } public CustomAuthenticationException(String message) { super(message); } } 以後,任何一個地方拋出 CustomAuthenticationException (假設上層沒有人攔截)都會把該 Controller 的結果改為 http 403。Spring boot 也很聰明的,把異常中的 message 隱藏 ,免得有網安的問題。 若我們定義 Exception 時,沒有@ResponseStatus,Controller 就會變成 http 500,例如我在 controller 中拋個常見的 IOException,這次的結果就會變成 http 500。 @GetMapping("/api/ioError") public String forceIOException() throws IOException { throw new IOException("force io error"); } 如果某些時候,我們想使用 java Exception 中的 message 欄位作為報錯信息,讓 http 客戶端,可以通過固定的 message 檔位找到問題訊息,我們可以在application.properties中,加入server.error.include-message=always。(有些特殊情況,在開發模式時 mvn spring-boot:run ,已經可以見到有 Exception message,但在投産後java -jar又看不到。主要因為開發模式中, pom 有 optional spring-boot-devtools,會自動加入了server.error.include-message=always,但 mvn package 後就沒有,因為 runtime 沒有 spring-boot-devtools 的覆蓋。) 額外處理 異常處理除了想控制 http status code 外,有時還需要做一些額外處理,例如發出通知郵件等。若想做額外處理,需要另做一個 @RestControllerAdvice 的類,在接到指定的 exception 時,可以轉換不同的 http code ,而且還可以執行額外 java code ,改變 http ResponseBody 。 @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = RuntimeException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public Map handleRuntimeException(Exception ex) { return Map.of("ret", false, "anyfields", ex.getMessage()); } } 但要注意,一旦使用@RestControllerAdvice 後,就要考慮有沒有改變了某些預設的行為。例如上述的@ExceptionHandler(value = RuntimeException.class),代表所有RuntimException.class的子類,都會歸由該 function 所處理。當然,你也可以多加幾個 function 來處理不同的子類。 Reference spring-boot-web-api-validate

Virtual IP | 為客戶端提供的流動IP
科技新知
MacauYeah・2025-06-11

Virtual IP 雖然我們Docker Swarm、Galera等服務可以很容易地提供到Cluster的功能。但以用戶來講,怎樣知道該連線去那台伺服器,又是另一個問題。用戶不可能逐台伺服器逐台IP去訪問。通常,大家會以為在Cluster服務外部,加個 Load Balancer(負載均衡器)就已經可以解決問題。但其實Load Balancer本身也需要做Cluster,其中一個掛了,別的也需要頂上。那麼用戶到底是怎樣訪問伺服器的? 我們簡單地,可以經過 Virtual IP (簡稱VIP) 來解決這件事。即是把我們網絡服務的域名,綁到VIP上,然後這個VIP可以在不同伺服器上游走,只要有一台伺服器活著,都可以回應這個VIP的請求。而這個VIP的功能,可以經keepalived簡單地做到。 配置 假設我們的配置如下 node 1 IP: 192.168.0.2, network interface: eth1 node 2 IP: 192.168.0.3, network interface: eth1 node 3 IP: 192.168.0.4, network interface: eth1 virtual IP: 192.168.0.5 每個node,都有自己的IP,而virtual IP只會附在其中一台機上。 如果在 GaleraCluster 的情況下,可以看成只有virtual IP剛好附在其上的那台機工作,即是以 active passive 的方式運作。 如果在 Docker Swarm 的情況下,在預設模式下就已經有的mesh IP的機制,即使用virtual IP只在其中一台機上運作,但ingress networks都會擴散到所有機器上,所以是active active的方式運作。 設定 Keepalived 在三個node上,都各自安裝 keepalived。以下以 ubuntu 24.04 為例 # ubuntu 24.04 apt-get update && apt-get install keepalived -y node 1 的 keepalived 設定 # vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { # change interface according to machine status interface eth1 # one node is MASTER, other nodes are BACKUP state MASTER # all nodes in same group must be same value virtual_router_id 101 # higher value will become master # ex, node1 priority 100, node2 priority 200, node3 priority 150. # if node 1, 2, 3 alive, node2 will become master. # if node 2 gone, node 3 will become master. priority 100 # VRRP Advert interval in seconds (e.g. 0.92) (use default) advert_int 1 virtual_ipaddress { 192.168.0.5 } } node 2 的 keepalived 設定 # vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { # change interface according to machine status interface eth1 # one node is MASTER, other nodes are BACKUP state BACKUP # all nodes in same group must be same value virtual_router_id 101 # higher value will become master priority 99 # VRRP Advert interval in seconds (e.g. 0.92) (use default) advert_int 1 virtual_ipaddress { 192.168.0.5 } } node 3 的 keepalived 設定 # vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { # change interface according to machine status interface eth1 # one node is MASTER, other nodes are BACKUP state BACKUP # all nodes in same group must be same value virtual_router_id 101 # higher value will become master priority 98 # VRRP Advert interval in seconds (e.g. 0.92) (use default) advert_int 1 virtual_ipaddress { 192.168.0.5 } } 然後在各node上執行。 systemctl restart keepalived 上述設定中,除了 priority 外,應該所有 config 都一樣。state指的是初始化狀態,在 priority 不為255的情況下,即使設定 MASTER 或 BACKUP ,也會動態改變。又因為 priority 不是動態改變的,為方便管理及人眼辨識,筆者認為priority最高的那個node應該預設為MASTER,可以減少日後發生誤會。 如果一切正常的話,192.168.0.5只會出現在node1上。當node1掛了,192.168.0.5才會出現在node2。當node1、node2同時掛了,192.168.0.5才會出現在node3上。這個VIP,同一時間只會出現當時活著的機器中,priority最高的那一台。priority 最高的那一台,它的狀態為MASTER。這些狀態,我們可以經以下指令確認 # confirm state systemctl status keepalived # confirm ip ip a | grep 192.168.0.5 Keepalived 可能的異常 如果 Keepalived 之間無法溝通,每個node都自認為MASTER,192.168.0.5會同時出現在所有node上。這個情況下,網絡請求還是可能的,但當真正出現 failover (故障轉移)時,因為 ARP (Address Resolution Protocol) 等問題,路徑可能無法那上跳到活著的機器上,通常要等個十幾秒才會恢復。在前述的設定中, advert_int 就是各node溝通的時間間隔,以秒為單位。正常若果只有一個MASTER的話,failover可以在一至兩秒內完成。 造成 keepalived 無法溝通的原因很多,其中一個就為設定上的失誤,筆者初期就試過誤設定 virtual_router_id 。在有需要溝通的機器中,應該設定為相同的值。另一個原因則是防火牆,所幸的是 ubuntu 24.04 中, iptables 預設就接受它們之間的連線。如果是其他 Linux 版本,遇到無法溝通的情況,所以先關掉 iptables 服務,或者把 iptables 上的所有 rule 刪掉再試試。

Swarm mode 上線 5 - load balancer | 還有那些事該考量?
科技新知
MacauYeah・2024-11-18

前面介紹了 ingress network ,亦介紹了 proxy gateway 。能做到的基本都做到了,再來就是考量安全性的問題。因為加了 proxy gateway ,前述的例子是所有 service ,都放在同一個 yaml 檔中。好處是,所有相關的東西存放在同一個檔中, gateway ,背後的 service 都一眼看到。但壞處就是有其中一個 service 更新,都要改那個 yaml 檔。更大的問題是, stack deploy 的指令,不單只更新其中一個 service ,就連其他 service 都會自動取得最新 image 而 redeploy 。 對於一個緊密的系統來講,同步更新可能不是大問題。但對於一些預定排程發佈的系統可不能這樣因為副作用而更新了。如果你也有這樣的分開管理需求,可以參考下面做法,把 gateway service 及 upstream service 放在不同的檔案中,然後經過 external network把所有 service 串連起來。 # nginx-stack.yaml, docker stack deploy -c nginx-stack.yaml nginx services: http-gateway: image: http-gateway ports: - 8080:8080 deploy: replicas: 1 update_config: delay: 10s restart_policy: condition: on-failure # manager-stack.yaml services: managerhttp: image: bretfisher/httpenv networks: - nginx_default - default deploy: replicas: 3 update_config: delay: 10s restart_policy: condition: on-failure placement: constraints: - node.labels.zone==manager networks: nginx_default: external: true # dmz-stack.yaml services: dmzhttp: image: bretfisher/httpenv networks: - nginx_default - default deploy: replicas: 2 update_config: delay: 10s restart_policy: condition: on-failure placement: constraints: - node.labels.zone==dmz networks: nginx_default: external: true 這樣,不同 service 的維護人員,就可以獨自控制自己的檔案。在第一次發佈時,確認 nginx-stack.yaml 先行發佈就可以了。對應的發佈指令是docker stack deploy -c nginx-stack.yaml nginx,它會自動産生一個 nginx_default (即 stack名字_default )的網絡。之後其他service,就可以經networks的設定找到它了。 services: YOUR_SERVICE: networks: - nginx_default - default networks: nginx_default: external: true 上述即使分離檔案,在安全性考量時還是有一個問題,就是 ingress network 的問題。試想一下,dmzhttp (Demilitarized Zone)原本被設定的原因,就是想限制某些訪問只能一些可以公開的服務。但因為經過 ingress network 之後,它們會在所有機器上開放這些 port。那就是,以下面的例子來講,若 dmzhttp 是公開的服務, intrahttp 是內部服務,即使用 intrahttp 使用不同的port 8889。但一經 swarm mode 預設的 ingress network ,在node.labels.zone==dmz的那些節點,還是可以訪問到 intrahttp 。 services: dmzhttp: image: bretfisher/httpenv ports: - 8888:8888 deploy: replicas: 2 update_config: delay: 10s restart_policy: condition: on-failure placement: constraints: - node.labels.zone==dmz intrahttp: image: bretfisher/httpenv ports: - 8889:8888 deploy: replicas: 3 update_config: delay: 10s restart_policy: condition: on-failure placement: constraints: - node.labels.zone==intra 我們前述介紹的 proxy gateway ,其實已經有一定程度可以解決這個問題。因為 proxy gateway 是根據 http 協定中的 host header 去做分流。在邊界網絡進來的「合法」訪問,道理上會好好地經引導到我們的 dmzhttp 。不過網路的邪惡可容小看, proxy gateway 也會有被騙的一日。有特定能力的攻擊者,只需找到目標域名,還是可以接觸到 intrahttp 。 若要做進一步隔離,在這種情況下,我們可以在 dmz , intra 機器中各設定一套 swarm ,完全獨立,這是最安全的做法。但這樣做的管理成本就會變高,因為兩個網段都會有自己的 manager 節點,而且在 dmz 網段的 manager 節點也有被攻擊的可能。 若我們回到單一 swarm 的方向,可以修改各個 service 中的 port 和 deploy 。利用 post mode 中的「host」,配合 deploy mode 中的「global」,完全跳開 ingress network。 services: dmzhttp: image: nginx ports: - target: 80 published: 8888 mode: host deploy: mode: global update_config: delay: 1s restart_policy: condition: any placement: constraints: - node.labels.zone==dmz intrahttp: image: bretfisher/httpenv ports: - target: 8888 published: 8888 mode: host deploy: mode: global update_config: delay: 10s restart_policy: condition: on-failure placement: constraints: - node.labels.zone==intra 上面的例子中, dmzhttp 會在所有 dmz 的機器中,每個節點只運行一份服務,而且直接使用該機的 8888 port ,外面不會再有 ingress network 的 存在。同樣地,intrahttp 會在 intra 的所有節點,運行一份服務,佔用它們的8888 。這兩個服務,即使使用一個 port ,swarm 也不會說有任何問題。因為它們不會經 ingress network 搶佔其他人的 8888。 可能會有讀者問,如果 host mode 這麼安全,為什麼預設會是 ingress network,那我們就要先了理清 ingress network 與 host mode 有有什麼分別?假設我們只運行一個service,它佔用8888。 功能ingress modehost mode replicas 數 同一個 service replicas 為任意數量,什至比節點的數目多 因為有 port 限制,每個節點最多只能運行一份 Virtual IP Virtual IP 任意在節點中跳轉也可以,因為 ingress 會自動找到對應的 service 所在的節點 Virtual IP必需要與 service 所在節點綁定,其他節點訪問不到 load balance 有 沒有 host mode 就像我們傳統在各自的節點上自行佈署自己的程序,各個節點只有一份。所以不會有自動 load balance 的效果,如果客戶端訪問固定的IP,就會得到是固定的接器接受請求。我們有需要,就要在前面加一個 Proxy Gateway (或 HA proxy )。 Virtual IP 也一樣, host mode 下需要好好地自動跟著 service 的生命期,不過幸運的是, Docker 預設己經有自動重啟 service 功能,即前文中的 restart_policy ,它在 host mode 下也適用。如果大家有配合 deploy 中的 global mode , Virtual IP 的並沒有實際變動。但如果沒有 global mode ,就要再想想辦法了。 最後考慮 load balance 的問題,如果進入點的 service 的真的不太消耗資源,沒有 load balance 也是可以的 ,但若超負荷,就必需要自建 proxy gateway 。經過進入點後,若我有背後的 service 就沒有所謂的 ingress 和 host mode 選擇。

體驗一刻 - 此生必造訪的全世界25間咖啡店之一 ?!
全球飲食
莫雪・2019-08-15

此生必造訪的全世界25間咖啡店之一 ?! 體驗一下了! 韓國京畿道楊平郡之 - 夢想相機咖啡館 文字之描述, 素來為人們帶來無限憧憬, 為著那個宣傳: 美國知名網站BUZZFEED選出 - 此生全世界必造訪的25個咖啡店之一 不會吧, 世界那麼大, 真的假的?! 去韓國, 大家多數想到是… SHOPPIN, SHOPPING… 還是美食、美顏一大堆?! 上述之餘, 也感受下當地郊區的山景與寧靜愜意一刻 - 咖啡吧! 酷愛攝影的咖啡店老闆將它設計為特殊的相機外型, 獨特的造型配上四周的山野、 田園與童話小屋。 照相機咖啡館的建築外型設計就是一座放大了的菲林型照相機, 不高不低座立在山野與綠草叢中與及童話小屋傍, 感覺夢幻! 店內小小的, 樓上樓下剛好是兩個大大的圈圈玻璃窗, 正好給你遠眺近望…窗外。 照相機咖啡館, 當然要點一杯咖啡品嚐著,看看…窗外, 也可瀏覽一下貼滿店內各處別人的夢想! 或者獨個兒好好發白日夢一番, 哈哈… 然後... , 寫下自己的夢想, 店主會翻拍印出一張小張的給你喔! 喜歡欣賞和懂相機的, 當然不容錯過陳列著的各款各年代相機了。 夢想照相機咖啡館可能真的是 一個讓人想要 儲存夢想的地方?! 最後, 要注意的是: 咖啡館不會在周日和周一開放, 館主也是要追求夢想以外, 多點享受悠閒的生活節奏呵! #日式茶館 ~平安京茶事 #亞列斯可湖 【編輯聲明】 本篇文章、相片版權屬作者所有,經由版權持有人授權CyberCTM.com發表 聯絡及邀約:irene801802@hotmail.com

【混血王子養成記5】幼兒麻煩三寶﹕不睡覺、不吃飯、常生病——總有一項在你附近(下)
生活在我城
Lifemagparents・2020-04-27

在上一篇中,我介紹了大Jul王子進行的食飯特訓(請看第四篇《幼兒麻煩三寶﹕不睡覺、不吃飯、常生病——總有一項在你附近(上)》),後來,許多人都問我﹕「在特訓後,小孩不吃飯的毛病是否就能解決?」而我的答案是﹕「不吃飯」是不能完美解決的,大Jul在特訓後,充其量只是由「極度不吃」提升到「勉勉強強地吃完」,而過程中仍然是充滿催促和哄騙的。 圖片來源:Michigan Health 小孩子「不吃飯」的另外一個情況,莫過於「含飯」這回事。他並非堅決地不吃,但當食物被送到他的嘴裏時,他的嘴巴卻像蚌一樣懶得動,非得要把一口飯含到變成「泥」為止。我有一個朋友的孩子,他的每一餐飯都要吃一個小時以上,他並非不吃,而是每一口都含在嘴裏好像要讓它自動溶化一樣,而像肉類或橙子等的食物,更可以在我們以為他吃完飯的一個小時後再從嘴巴中挖出來,這個可愛的小孩,我們戲稱他為「含飯小精靈」。這個問題的原因,究竟是因為他的咀嚼能力有待加強還是其他?真值得我們深究。 在吃飯這件事上,母親(當然有一些父親也很會煮飯的,但通常都是母親)要花的心思實在不少,有一些母親會每天變換花樣,使每餐都美味而充滿變化,而有一些則採取「佛系」的態度——即完全不管孩子吃還是不吃,且相信他們時候到了便會自動吃——每一個選擇都是對父母的挑戰。 說完「不睡覺」和「不吃飯」,便輪到「常生病」了。尤其是在現時新冠肺炎流行的情況下,一點點風吹草動都會讓父母大為緊張。 從初出生到九個月左右,小嬰兒的抵抗力通常來說都是較好的,這得益於從母胎那裏繼承過來的抗體,喝母乳的嬰兒抵抗力會更好一點,因為母乳會為小嬰兒提供源源不絕的抗體。一般初生嬰兒最大的健康問題往往是濕疹,如果父母有過敏的情況(無論是鼻敏感還是其他過敏),小嬰兒出現濕疹的機會和程度相對而言也會高一點。濕疹的成因複雜多變,往往難以處理,每當我看到臉上和身上滿是紅彤彤的濕疹的小嬰兒圖片時,我的心都會猛地抽動一下,那多可憐,因為我們知道那是又癢又痛的。濕疹往往要等小嬰兒長大,免疫系統較為成熟才會變好,其中用藥還是塗抹的,可能只是治標不治本。而可喜可賀的是,我的兩個小王子都沒有濕疹問題。 待小孩子一歲後,他們會較多接觸到其他人,生病的頻率會開始高起來。至入讀托兒所後,便成了一個月生病三次的高峰期了。托兒所的小孩子較多,被傳染的機會很高,在托兒所一經傳染通常會立即發病,輕微的是咳嗽或發燒兩三天,嚴重的可能需要入院治療,這樣的頻率怎會不令父母心痛?許多家長會問﹕如何加強孩子的抵抗力,使之不那麼容易生病?多喝湯水、多做運動當然會強身健體,然而,我們必須有一個心理準備,托兒所時期「常生病」是很「正常」的。因為小嬰兒對於很多細菌和病毒是沒有抗體的,托兒所時期可算是他們的「疫苗接種期」,普通如一般感冒、甲型乙型流感、扁桃腺炎,麻煩的如手足口病、合胞病毒、猩紅熱,十天半個月便會「接種」一次,輕微或嚴重發病乃至以後產生抵抗力,在「接種」了十多二十次後,小孩子的抵抗力便漸漸地被鍛鍊出來了。 此外,小孩子生病的另一個特點,是經常發高燒,其體溫通常一下子就迅速飇升到攝氏39度或以上,且退燒後容易復發,往往反反覆覆發燒三至五天。這是因為小孩子體溫調節的能力較差,所以一下子便飇得很高,而反來覆去地發燒則是因為他們需要以這個方法去消滅體內的炎症或病毒。我記得大Jul王子在托兒所時期,雖然發燒不多,但還是經常感冒和流鼻水,在持續了數個月的反覆流鼻水後,他便得了腺體肥大的問題,導致睡眠呼吸道阻塞,發出很大的鼻鼾聲,幸好在經過半年的治療後康復,不然可能要動手術呢,因此該吃藥時還是要吃藥,咳嗽流鼻水也不是一件小事。小Will王子在感冒時偶然也會有鼻鼾,可是因為還未上托兒所,最近又少出門,故暫時較為健康。 小孩子生病時,父母可累了,由於身體不舒服,他不能吃也不能睡,每時每刻都在耍脾氣,父母就只能時時刻刻像袋鼠媽媽一起去抱着他哄着他。對於小孩子「常生病」,真的沒有甚麼招數應付,可謂﹕一字記之曰「捱」,捱過了便是晴天。 作者:王子媽媽 更多文章推薦: 【澳門圖書閣】和孩子一起靜下心來閱讀吧!5本學齡前兒童圖書推介