搜尋

搜尋結果

Spring Boot Web App 更新期間的維護模式:從唯讀到全鎖的解決方案
科技新知
MacauYeah・2025-08-25

在營運 Web App 的時候,雖然我們有 Docker K8s 可以滾動更新,但難保用戶在更新的過程中,有一半訪問去到了舊版,另一半去了新版。如果可以,Web App 本身自帶維護模式,可以自我判斷什麼時候應該忽略新的訪問,當然最好。但要做到這一點,前期需要很多規劃。狠心一點,可以直接關掉對外的服務,讓用戶無法訪問。 但在另一些情況下,例如升級搬遷的情況,下線時間比較長,完全關掉服務並不是一個很好的方向,我們至少還可以提供唯讀的選擇。而且這個可以從資料庫出發,讓 Web App 少處理一點邏輯。 如果 Web App 背後的資料庫是 MSSQL 或 MySQL,唯讀這件事應該是簡單的,只要你把 service account 的權限改變就好。但如果你用Oracle,就要想想辦法。 筆者想到的方法,暫時有兩個。第一個就需要大家寫寫 Script ,一口氣把所有 Table 給鎖起來。例如 第二個,就是生成一個新的唯讀 User schema,給他所有Select的權限。然後更新 Web App 使用那個唯讀 User schema存取資料。 兩個方法有什麼差異呢? 前者就全部鎖起來,沒有任何一個資料庫用戶可以改寫資料。如果你的業務沒有差異性,全部一起封起來就完事。但如果你只想 Web App 轉成唯讀,但其他背景程式還可以執行更新。那你就只能用後者了。但後著也不是百分百的完全無痛,至少你 Web App 要支援登入與操作的 Schema分離。 例如用Spring boot JPA的話,可以在 application.properties 可以讓登入及操作的Schema不一樣。 spring.datasource.username=READ_ONLY_USER spring.jpa.properties.hibernate.default_schema=ORIGINAL_SCHEMA 又或者在 java 層面指定。 @Tableschema = quot;ORIGINAL_SCHEMAquot; 這看上去,是很有彈性的。但其實也是有些局限。如果你本來的JPA有寫特制的 JPQL 或 Raw Query,又或者你在Java層面加了 @Subselect,由於這些都是程式原作者所 hard code 的,JPA沒法幫你改寫。改來改去,可能還是前述寫Script的方法,一口氣把所有 Table 給鎖起來實際一些。 Reference 更多筆者的程式開發分享,見請 github

龍年,龍爺生氣了,過100年,龍年是怎麽樣?
宗教玄學
熊神進・2024-04-11

近日筆者收到很多內地讀者查詢,他們都是玄學愛好者,大家對于「天象」的啓示有幾分擔心,有些還說「是不是龍爺生氣了?」筆者是公衆人物,不敢怪力亂神,只是把「學說」印證,喜歡的同學聽聽也是善哉。 在玄學上2024年陽曆2月4日才是龍年第一天開始不好意思,這是跟國家公布的日子不同,我們迎來甲辰龍年,甲木是天干之首,直沖向上,地支辰龍當權,土氣旺盛。在甲木透幹,干支相沖相克情况下,民間老風水師傅也雙手合什,提醒大家晚間做烟供,行大愛布施各地衆生。 龍年也是風水的下元第九運開始,凡是交接運之年月,都是有一些异象,這是不用過于恐懼,只要我們順「道」道,是自然,不逆 而行,我們多行善,不行霸權,愛衆生,我們就可以逢凶化吉。 龍年是十二年一次循環,在過去的一百年,龍年留下很多「人爲」的不人道歷史,1940年、1952年、1964年、1976、1988年的傷痛是給子孫留下惡因。 水逆從4月1日開始,水逆加速了權勢的毒火,海上紛爭全年擴展,擦鎗走火爲「赤馬紅羊」鋪路,龍的傳人要買單。 踏入農曆三月,立春日木火較旺,在風水九運「離火」下,中國香港第一個辰年辰月辰日辰時,佐敦道華豐大厦發生一場三級火,造成5死40傷,本身今年已經較「火旺」,再加上農曆踏入三月初一,辰、巳月在奇門巽宮屬木,農曆五月離九宮屬火,筆者推斷未來3個月香港火旺,仍有多宗火灾。 龍年幷不是只有中原地域才中伏,龍年是世界性的循環天體,今年各地都有不同程度的天灾地震,我們要行大愛,晚上做烟供布施衆生,廣結善緣。烟供是衆多善事中最簡易的一種亦是年青人常做的一種,讀者們可以把筆者的善知識轉去朋友圈,一人的力量很薄弱,只有集體行善,才是大愛,只有大愛,世界更美好。 辰月才剛剛開始,有危才有機,有動才會永恒,請大家不要過分恐懼。 我們可以通過做烟供回向給六道衆生以求平等受惠,减少灾劫,這是無上大愛。

Switch / Steam Deck / Mobile 使用體驗大比拼 (三)
手機‧電玩
MacauYeah・2023-12-14

上兩期,筆者從機身重量、續航性兩方面,對於遊戲機身便攜性的影響,今期最後一期,就從穩定性方面去討論,最後再做一個綜合影響。 沒有對比也就沒有傷害 Mobile Smart Phone 筆者所講的穩定性,其實就是正常運行一個遊戲,不會出現閃退的情況,讓你可以正正常常玩完一款遊戲。但因為Mobile原本是多用途機器,你玩著玩著,可以就要跳出遊戲回覆信息,但再次回到遊戲後,能不能正常運行的不知道。 大部份iOS遊戲,因為舊iphone機能限制,基本上跳出去後,都因為不夠RAM,回來後遊戲會重置。除非你打死不切換,否則一款遊戲沒有頻繁auto save功能,根本玩不下去。Android可能會好一點,有不同機型可以選擇,多一點RAM總是安全一點。 強行地用Linux運行Windows的黑科技 Steam Deck 老實說,Windows已經不夠穩定,用Linux運行Windows Game,會比較穩定嗎?不過最幸運的是,Steam Deck有技術支援,更有社群支援,各遊戲經過Steam官方驗證,連續遊玩下閃退情況都很少。不穩定的原因,反而是Steam Deck主機本身。 在筆者遊玩的經驗中,待機後再打開,有一定機會率會整個遊戲閃退。這些問題在遊玩大作,特別是3A大作,會引來一個很不愉快的體驗。因為它們的auto save位置點一般都是以情節點來做考量,而以上班族來講,三步一待機的使用情境也很常見,那麼觸發閃退的機會率就很高。某次啟動會隨機引起閃退遊戲,真的欲哭無淚。 筆者也翻查過網上的資料,一年多前就有這個問題存在,而官方亦無法根治。筆者在寫稿的途中,還在測試坊間一些可能的補救方式,但因為時間不長,不敢說這問題是可以解決的。 穩定發揮 Switch Switch在穩定性真的無可挑剔,多次待機後都沒有太多問題。完全貼合它的市場定位在家可以隨時在電視玩,出外也可以四處走。隨時隨地停,隨時隨地再開。最多最多都是遊玩實體卡帶時,因為接觸不良而閃退。但這些不可避免的,因為實體卡始終是物理型態存在,跟著Switch四處奔波,難免會出問題。但下載數位版,存放於SD卡就不會有閃退。至少SD卡不會像實體卡會經常替換,所以出問題的機會也較少。 綜合體驗 其實討論了幾個方面,筆者都從是省心遊玩的角度出發去討論。 Mobile在裝備上會最少煩惱,想最輕鬆出問,這個是不二選擇,但考慮玩非課金類遊戲就最沒有保障。 Steam Deck優點是移動堡壘,若你玩的是高性能需求的遊戲,你只能選它。但想隨時玩就未必做得到。 Switch 在重量和穩定性上面最有優勢,考量延續性體驗,這個是首選。

[教學] 平民雲端服務不是夢 | 5分鐘教你如何快速起VM
科技新知
MacauYeah・2023-05-11

前言 原本筆者只是想做docker cluster,但因為在實機中建VM極其麻煩,所以就研究了好一陣子如何快速起VM。 HyperV有預設的Ubuntu template,但只有ubuntu desktop版,沒有server版。而且desktop gui顯得浪費資源,要clone VM也很廢時,放棄。 Windows Subsystem Linux起VM很方便,但同一個Linux version只有一個instance,沒法起cluster,放棄。 Virtual box沒有Ubuntu template,若要clone的話就變得跟HyperV差不多,放棄。 經過一輪資料搜集,發現了一個Ubuntu multipass engine,聲稱可以跨平台快速起VM。裏面有一些很吸引的功能,可以自己建立images、使用固定IP。 那怕即使是沒有snapshot,在自定義images的配合下預裝docker,要隨時加減cluster node都是一件容易的事。 重大決策點 醜話說在前頭。經過一輪測試,multipass最大的問題,就是custom image、fix IP都只能在bare metal ubuntu 中才能使用。如果你沒有一台閒置實體機安裝Ubuntu,還是要再多考慮一下。 重點 詳細的流程,筆者記錄了在Packer template 和Multipass Static IP中,在這裏就只說一些重點。 packer是使用cloudinit和qemu的技術,行起template中指定的cloud image 在筆者的例子中就是ubuntu22.04servercloudimgamd64.img 大家可以定義image行起後進行一些操作,而那些操作都是經過qemu vnc、ssh進去操作的。 操作完後就會直接儲存當時的image。所以在操作結束之前,盡可能地刪cache或刪去不要的user group settings。 最後生成的image,還是一個cloud image。若要再運行它,必需要使用支援cloudinit的VM來讀取。 cloudinit是用來指定初次運行時要設定的事,例如hdd size, user account password, ssh key import等。 使用工具cloudlocalds可以生成一個seed.img,這樣qemu也可以cloudinit。 HyperV應該也可以經過類似方式,進行cloudinit,但筆者未有去實測。如有更簡便的方法請告知。 multipass預設就已經有cloudinit,在bare metal ubuntu就可以直接執行。 multipass也可以設定不同的cloudinit參數。 成品 最後筆者就選擇了用packer用來預裝docker,經mulitpass無腦起VM,再使用shell script對多個node設定docker,達到即時起docker node的功能。這樣就減省了VM的安裝時間,也省去了docker的安裝問題。 說到底,如果只想測試docker cluster,其實windows, macOS中的multipass也可以實現相同的功能。因為安裝docker那些都可以經過shell script自動化,只是每次重複操作,都變得相當慢。另外,因為multipass在windows, macOS不支援fix ip,對於指定docker cluster interface又會再多一重功夫。

為什麼要擇日辦事?
宗教玄學
熊神進・2021-10-29

通勝宜忌如何看 易經說吉凶悔吝生乎動,我們只要有一個動作,就會出現福禍悔恨的事情。自古以來我們開店、進宅、婚嫁、落葬、過契等,我們都想選個吉日去開始,玄學婚姻是男女緣結于婚姻殿堂前的幸福樹。因此很多藝人都會聘請政府註冊玄學家為他她們選擇吉日做個好開始。 中國人有很多禁忌,掃墓上墳必須是吉日,人們之所以重視選日,就是相信黃道吉日可以幫助一個人做事情順利。在過去,很多讀者通過一本黃曆來選擇日,我們沒有說這方法是錯,反而我們提倡大家看黃曆選吉日。 黃曆上注明ldquo;宜rdquo;和ldquo;忌rdquo;,它是用紅色,黑色表示,紅色是吉,而紅色分大,中、小三個尺寸表示,我們稱ldquo;紅課 rdquo;,黑色叫ldquo;黑期 rdquo;。ldquo;課rdquo;和ldquo;期rdquo;是我們業內人士交流使用,你們只要知道紅色是宜辦喜事,黑色宜辦巫事,這裡的ldquo;巫rdquo;只是拜四角,破土,潔體淨心日子。 黃曆最令人自在的,就是我們只要一翻開書本就能夠找到理想的日子。如果你還未明白如何選吉,筆者告訴你一個最簡單方法,這就是只要在黃曆上選較大的紅格子辦喜事就是了,如果要細明一些,我們就要考慮個人的資料,由於這是專業的,一般民眾甚少能精通,我們才用通勝去擇日。 圖中有幾個圖示,寛的,紅色的是大吉日,大凶日是黑色的,我們辦喜事就要選大吉的紅日。 如有任何問題,歡迎聯絡: 林小姐 13726267799晚8時後 或加微信號 13726267799 熊神進:澳門 85366618785 公共微信 macaumasterxiong 私人微信 macaumickey 淘寶風水法器店::httpt.cnR212476 Facebook 熊神進澳門風水師 中國澳門風水掌相學會會長(澳門政府註冊) 熊神進玄學信箱 httpsgoo.gljAVv8U