搜尋

搜尋結果

幸村 - 惡人之光
環宇搜奇
幸村・2023-07-11

人氣漫畫《One Punch Man》(一拳超人)中有一個反派組織「怪人協會」,估唔到係現實中,真係有一個相似的組織。 日本有個惡人協會(悪役商会),由一班專演惡人的專業戶,所組成的專飾演嘍囉或惡人(惡役)工會。 呢個咁特別既工會,今年岩岩踏入40週年,由一開始只有12位創會成員,但到40年後的今日也只有總共70個位成員,因為會入會條件非常嚴格,而且要進入呢個邪惡的殿堂,係東洋演藝界惡人界的至高榮耀。 睇返入會簡介,基本要求係曾經係在演藝生涯中,無論電影或電視劇,累計殺死2千人同被殺7百次,即係話好似羅樂林咁一晚死三次,都要差唔多一年先達到呢個目標,仲要殺2千人,簡直匪而所思。 香港影壇四大惡人(何家駒、李兆基、成奎安及黃光亮)所殺既人加埋都無咁多。 不過日本惡役演員本身數量不多,特攝電影嘍囉角色多數通常可以循環再用、死完又死,一部作品死幾次不足為奇,特別係好似Kill Bill(追殺比爾)等血肉橫飛的電影,一部戲就可以貢獻不少被殺鏡頭。 跟據統計,一個演員專演惡人超過30年的話,退休前基本可以滿足到入會的要求。 只係做得惡人多,有無機會轉職做一次英雄? 擔任惡人只係工作,但現實中悪役商會除了為成員提供演出機會外,還會積極參與社會公益活動。 例如,悪役商會的成員曾參與多場慈善表演,為貧困地區的孩子們帶來歡樂。此外還與不少國內外的演藝團體結緣,共同推動演藝事業的發展。 喺唔少小朋友的眼中,他們才是真正的英雄。

點解漫改真人電影咁易出事?
環宇搜奇
幸村・2023-06-27

Netflix宣佈《海賊王》翻拍真人電影,網絡出乎意料見怪不怪,預告下面不少評論又一個IP慘遭真人化 。 所謂漫改電影,顧名思義就是漫畫改編成的真人電影。日本作為動漫大國,自然不愁改編電影的題材,製作人與其花錢冒險投資新的電影,不如將現有的漫畫IP真人化。 動漫作品本身己經有粉絲票房的基本盤,其次節省編劇的成本,動漫改編電影的數量就如同雨後春筍一樣野蠻增長。 劇本、對白一應俱全,買了版權稍為修改就可以開拍。 不過俗語有話:最危險的地方就是最安全的地方,反過來說,最安全也意味著最危險。 粉絲不是一群容易討好的觀眾,只要選角,劇情或情懷其中一環稍有不慎,隨時就演變成翻車現場,拍得太過粉絲向,大眾又難以接受,無法產生共鳴,重點是導演能否取得平衡點。 更重要的是現實無法還原漫畫的誇張的表達,包括漫畫中的角色濃厚的中二個性和特色,用力過猛就無比尷尬,有時不得不佩服演員們居然能夠不笑場,當然可能已經NG過無數次。 《鋼之鍊金術師》、《進擊的巨人》等不計其數的作品翻車,動漫真人電影可以說多數命途多舛。 世事無絕對,佼佼者也不是沒有,《今際之國的闖關者》(第一季),《浪客劍心》可以說是漫改真人電影的教科書級作品。導演準確拿捏到原著本身的世界觀、以及掌握粉絲對角色的感情寄託,可見導演本身也是漫畫的粉絲。 可惜優秀的真人化電影太少,對粉絲來說,不要把喜愛的作品真人化,已經是對原著最大的尊重,有點像《金閣寺》,美好的事物應該長存心中,而不是壓榨最後一點價值。

曉角Loungrun劇場系列《法吻》 一吻,賠上了靈魂
文化創意
LifeMag Editor・2017-07-21

《法吻》講述一名牧師與他的秘書熱吻之後被控性騷擾。一個法吻,讓他賠上事業、名譽、家人朋友,還有他的靈魂。他自此銷聲匿跡,直至數年後,在一個酒會上與她狹路相逢……是誤會、計謀還是別有內情?兩人翻閱記憶中每一個角落,重組真相,讓這一個吻,在法庭外重新審判。法裡法外,一個糾纏不清的吻。 編劇Playwriter:莊梅岩 Candace Chong (香港Hong Kong,2011年度香港藝術發展局頒發年度最佳藝術家獎(戲劇),四度獲得香港舞台劇獎最佳劇本獎) 導演Director:黃樹輝 Su Fai Wong 演員Performer: 楊螢映 Anna Ieong (第23届香港舞台劇獎「最佳女主角(悲劇/正劇)」) 陳飛歷 Philip Chan 蔡澤民 Sam Choy (香港Hong Kong,第24 屆香港舞台劇獎最佳男配角) 《法吻》獲第十五屆香港舞台劇獎最佳劇本獎,2016年曾被袁劍偉改編電影《暗色天堂》,並由張學友與林嘉欣主演,成為2016年金馬奇幻影展之開幕電影。 演出地點: 南灣舊法院大樓黑盒劇場 演出日期: 8月5日 1930 8月6日1500、1930 8月7日休演 8月8日1930 8月9日1930 8月10日1930 8月11日1930 8月12日1500、1930 8月13日1500 票價:MOP150 票價優惠: 【早鳥優惠】7月10日前購票可獲七折優惠【手牽手套票】二人同行可享260元套票優惠【團購優惠】購買任何場次,合共五張票,可獲八折優惠。

GoPro 的「Omni」VR 拍攝套件搶先看
科技新知
LifeMag Editor・2016-04-16

說到 GoPro 的 VR 拍攝套件,你首先想到的,可能是他們跟 Google 聯手打造的「大殺器」Odyssey。但其實在那之前,這家公司就已經確定了自產裝置的開發計畫。去年年中時,這款後來被命名為「Omni」的產品,就已經跟空拍機一起,得到了 GoPro CEO Nick Woodman 的親口證實。在那以後,我們陸續見過幾款 Omni 的原型機,但直到今天,廠方才終於公開了成品的外觀設計,並且拿出了實拍樣本與大家分享。 跟裝載 16 台 GoPro 相機、總價 US$15,000 還不是人人能買到的 Odyssey 相比,「只」需要 6 台 Black(大概價值 US$3,000)的 Omni,門檻無疑要低了不少。而且對許多專業用戶或 Pro-sumer 來說,可能目前擁有的裝置數量就已經達到了要求。不過,Omni 跟 Odyssey 有一處明顯的不同是,它並不會以 3D 形式來拍攝內容。但 GoPro 聲稱自己能在相機之間實現「畫素級別」的同步效果,而且整套系統也可搭配 Kolor 合成軟體(去年四月被 GoPro 收購)無縫使用。值得一提的是,在新發佈的產品圖中,Omni 內部看起來似乎無法容下相機的防水外殼,這跟之前流出的照片不太一樣,看來還有待官方進一步的確認。 實際上,類似的第三方 VR 拍攝組目前在市面上也有不少(你甚至可以用很低的成本去 3D 列印一個出來),但在相機調配、影片合成等方面,總不如原廠方案來得到位、省心。而 Omni 就是至今為止第一款完全由相機廠商自己開發出來的套件,照理來說,在使用上的優勢應該還是非常明顯的。當然囉,其價格多半也會更貴一點,雖然具體的數字現在還沒確定,但在即將舉行的 NAB 大展上,GoPro 應該會告訴我們更多的發售細節吧。 轉載自:Engadget

已定!准媽媽帶薪產假調升,最低工資法案也正式出爐!
其他
澳門生活圈・2019-06-06

近日,澳門行政會完成討論 修改《勞動關系法》法律草案 以及完成《僱員的最低工資》法案 相關修改到底有什麼變動 以下,讓我們一起來探討... 產假調升及補貼 行政會完成討論修改《勞動關系法》法律草案。 法案建議 法案建議女士有薪產假由56日調升至70日,增設5日男士有薪侍產假。 其中,設過渡規定,首3年內56日產假薪酬由僱主支付,餘下薪酬由政府補貼,3年後再檢討政府補貼措施。 法案建議自公布翌日起生效。 本月5號,行政會發言人表示: 預計政府每年對產假的補貼金額約4,000萬元,預計政府3年的補貼金額約為1.2億元。 另外,該補貼措施於法案生效後,首3年期間屆滿後進行檢討是否仍需再補貼? 勞工局副局長吳惠嫻回應表示: 法案生效後,僱主須向本地女性僱員安排70日產假,並支付56日薪酬,剩下的14日薪酬則由政府補貼支付。 男士有薪侍產假 法案建議 男性僱員因成為父親,可享有5個工作日的有薪侍產假。 在嬰兒出生前,又或於出生後30日內,連續或間斷地享用,且勞動關系已滿1年的男性僱員有權收取侍產假期間的薪酬。 法案生效後,外地女性僱員方面,僱主需安排70日有薪產假及支付70日薪酬。 對於有薪產假由現行的56 天調升至70 天,勞工界議員認為,70天產假過少,香港早已將有薪產假提升至98 天。 本澳作為國際化城市,勞動政策應跟隨國際趨勢及發展,提高產假天數,讓婦女產後有足夠時間休養生息、調理生理狀態。 對於增設5天男士有薪侍產假 鄰近地區早已推行 男士有薪侍產假措施多年 現時,本澳起步實則太遲 不過,總歸是來了 爸爸們也不用那麼辛苦兩頭跑了! 周假與強制性假日重疊 《勞動關系法》法案還引入周假與強制性假日重疊的處理方法。 法案建議 僱員享受有薪休息時間與強制性假日出現重疊時,重疊當日按強制性假日處理; 僱主須在30日內另行安排僱員的周假。 增設可選擇性的補償制度 此外,勞資雙方得以書面選定周假及強制性假日工作而獲得補償的方式: 「一工一假」的補償,協商為以「兩假」作補償,而強制性假日工作後獲得的額外「兩工」可協議選擇金錢補償或補休。 強制性假日補償休假 法案建議 法案建議將僱員於強制性假日工作後可享受補休的期間,由現行規定的30日內享受,延長至3個月內享受。 同時,增設按比例計算補償的處理方法; 如:僱員在周假或強制性假日工作期間,因自身原因而終止工作,除當日的報酬外,有關的額外補償均按其已工作的時數計算。 月薪最高可賠21,000元 另外,政府調升用於計算「不以合理理由」解除勞動合同的解僱賠償的月基本報酬最高金額, 法案建議由現行澳門幣20,000元調升至澳門幣21,000元。 法案規定 適用於生效前訂立的勞動合同及協議,如於生效前訂立的合同條款為本法律不容許者,自動被本法律的強制性規定取代。法案建議自公布翌日起生效。 除以上相關法案意外 僱員的最低工資的法案 也在同日中新鮮出爐 相關月薪以及報酬都有所改動 大家也要對此了解一番! 月薪最高可賠21,000元 本月5號,行政會公布《僱員的最低工資》法案內容。 全面最低工資法案正式出爐,最低工資以基本報酬計算,不包括: 超時工作報酬、夜間工作或輪班工作的額外報酬、雙糧或其他同類性質的給付,若按實際生產結果計算報酬,則以當月基本報酬除以當月實際工作時數,平均每小時不低於32元。 最低工資金額出爐 按月計算為6,656元; 按周計算為1,536元; 按日計算為256元; 按小時計算則為時薪32元。 法案建議 僱員提供超時工作,有權收取按《勞動關系法》規定計算的超時工作報酬,且用於計算超時工作報酬的每小時正常報酬,不得少於其所適用最低工資金額的平均每小時基本報酬。 例如,僱員薪酬為每月6,656元,按時計算則除以30日,再除8小時,約為時薪27.7元,在自願加班情況下,即以27.7元加20%的額外報酬,得出33.2元; 在強制超時工作情況下,則是27.7元加50%的額外報酬,得出40.5元,令時薪不會低於32元。 按照2017年統計, 現時時薪低於32元、 月薪低於6,656元的僱員 約為55,000人, 扣除24,000名家傭, 預計法案將惠及30,000名勞工。 局方希望透過全面最低工資立法,在制度上保障僱員獲得基本工資保障。 家傭月薪不低於3,000元 對於為何豁免家傭與殘疾勞工,勞工局副局長吳惠嫻指: 由於家傭僱主並非以營利性質聘請家傭,經公開咨詢後決定將家傭排除在外,但強調當局在審批家傭申請時,會視僱主提出的薪資條件,令家傭月薪基本不低於3,000元。 殘疾僱員 至於殘疾僱員方面,要平衡殘疾僱員就業權益及工資水平,且政府已對殘疾僱員實施臨時性補貼津貼,每月約3,450元,目前沒有考慮取消津貼。 法案規定適用於生效前已訂立且於該日仍存續的勞動合同及協議,但就之前的事實效力或狀況已完結的情況除外。 時薪32元仍偏低 現時,政府建議的平均32元最低時薪,比香港2015年的港幣32.5元最低時薪還要低。 舉個例子,香港最低工資委員會在2年1檢期間,會提交檢討報告及調升最低工資建議予行政長官。 澳門此前一行業兩工種最低工資法律規定1年1檢,但到現時才建議提升到32元。有議員建議,全面性最低工資應該是1年1檢,否則不知何時才能調升到香港現時37.5元的水平。 法案適用於 全澳各行各業僱員,但家務工作僱員及殘疾僱員可豁免,有關法案將送交立法會審議,法案通過並公布後180日起生效,其後每2年檢討1次,按經濟發展情況調整有關金額。 看到這裏 相信市民都有所了解 產假、疊假、最低工資 都已按相關修改完成的法案來定 對於以上這幾類修改 您們有什麼看法呢? 素材來源:力報、行政會、網絡 圖片來源:力報、攝圖網、表情包 如有侵權,請聯系我們刪除 版權屬於原作者 編輯撰寫:小嚕

2025 個人年度模型總結(下)|唔上唔落,特別有愛再入手系列
手機‧電玩
MacauYeah・2025-12-25

SDEX 巴巴托斯天狼座 / SDEX 命運 不過這一兩個模的問題,而是整個SDEX都需要大量補色。雖然外型不錯,強行把玩還是可以的。但因為工作量問題,沒有時間或者耐性,就盡量不要碰。想要練手嘅朋友反而可以多買。 EG Nu 主體套件是沒有問題的,問題就是官方一直沒有推出配件包。筆者試過買Fake Nu 背包,能安裝,但會有重量不平問題。正式配件包,據說下年是會推出的。有愛可以考慮先團主體,然後等配件包,避免事後加價。不想等的話,可以買副廠配件包也可以。那為何筆者會買它呢?主要是初期練手刻線為主。EG的特點是造型可以,但板件數不多,可以快速到實驗你想試的事。 HG EXIA 舊模,純情懷向,需要補色。第三方水貼亦唔見有,真係要靠自己。可動唔算好好,但得益於輕裝甲的設計,裝甲干涉唔多。能做完還是很有吸引力的,但真的要花功夫。 RG Wing Zero EW 天使翼有一個很特別嘅吸引力,上支架可以做出好多華麗嘅造型。因為呢款係舊款RG模型,所以有軟骨問題,好在佢唔係走Seed 系路線,靠一雙翼都可以有好多變化。硬要走手持巨炮的路線,就要考慮使用多支架。 HG Mighty freedom 去年劇場版模型,雖然係新設計,拼裝體驗是很好的。但外型對比MR魂,榮耀防衛者有一些決定性的缺陷,翼的張開角度沒能完好配合身體。除非大家識自行改造,如果唔係背包會有少少奇怪。平時亦需要支架支撐。 原本還有兩隻想介紹的模型,不過因為真係純粹吐槽,就不介紹了。今年嘅分享就到呢一度,新嘅一年,祝大家心想事成,事事順利。

2025 個人年度模型總結(中)
手機‧電玩
MacauYeah・2025-12-24

續上編分享,繼續曬一下筆者推薦的模型 HG 炮型脈衝 呢一款係筆者第一款買嘅PB 模型。因為算係新生系列中比較舊嘅款,所以若要效果好,就要大量補色。而且因為係PB,所以說明書說上沒有官方作例,筆者只可以參考RG模型作補色。 另外,筆者都做咗一個嘗試,就係加入花紋貼紙(RG 借來的),整體即刻提升咗一個層次。所以若果唔想做太多功夫嘅朋友,都可以搵搵有冇第三方水貼。 HG 命運 呢款係模型圈裏面唔少人推介嘅模型,有些玩家都話可以直接平噴,唔需要做複雜嘅遮蓋上色。筆者就理解為,對於素組玩家嚟講應該更友善,唔需要自己補色。筆者製作之後,覺得翅膀還是有點素,如果唔買水貼嘅話,要喺翅膀補色落返啲功夫。 整體可動性唔錯,但唔可以同MR魂比,翅膀比較受限,大刀同大炮亦冇MR嗰種局部放大的設計,如果你按照MR官圖去拍攝,你可能會覺得HG 少咗一份氣勢。除此之外都算正常發揮。 HG 維爾達 便宜好物,只要你識補色就可以。呢款模型有一啲白色或者奶白色嘅補色貼紙,真係要落筆補色要考慮遮蓋力問題。想偷懶嘅話,用返貼紙亦都OK。其他部份都係深灰色補色,遮蓋力,一般都冇問題。因為肩甲上邊有花紋,前裙甲亦係特殊造型,唔需要特別買水貼去提升線條感。 HG GQuuuuuux 今年嘅新作品,結構真係好特別,冇進行補色,亦冇滲線,整體顏色已經好鮮艷。 唯一比較難接受嘅,就係佢嘅頭部造型。如果你接受到造型嘅話,只要唔係價錢出現溢價,都可以買。最近(年底)亦見到有價格回落嘅情況,所以係一個好好嘅出手時機。 和模線 塔斯提爾 上年發售嘅國模產品,筆者今年先正式完成。和模線唔算係一個內卷廠商,無合金骨架,但係佢嘅設計嘅産品都仿人形,比例做得唔錯,構造有心思,體驗好過魔動核好多。唔洗補色,亦唔使靠水貼去提升細節。部份地方有蝕刻貼,只限於眼睛部份。 值得推薦的部份已經講得差不多了,下一期就介紹一下筆者踩過的坑。

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 選擇。

Spring Boot 03 - 做好Database的模組化及測試用例
科技新知
MacauYeah・2024-04-12

這節,我們將會使用spring-data-jpa,寫一個業務上的資料庫模組,提供資料表的存取,讓你的好同僚可以直接使用。這樣可以在多模組的環境中,減少同一個資料表在不同地方重複又重複地重定義。將來要更新,也可以使用jar檔的方式發佈。 下戴模版 我們跟上節一樣,使用Spring Initializr (Maven) 下載模版,但細節筆者就不再講啦。Dependency主要選擇 H2 Database Spring Data JPA 對pom.xml作一些微調,並把spring-boot-start-data-jpa,h2改為只在測試中生效。 並把Java檔案搬一搬位置 # old location src/main/java/io/github/macauyeah/springboot/tutorial/springbootdatatest/SpringBootDataTestApplication.java src/main/resources/application.properties # new location src/test/java/io/github/macauyeah/springboot/tutorial/springbootdatatest/SpringBootDataTestApplication.java src/test/resources/application.properties 以上的操作,主要是因為我們的目標是提供Schema,或者叫資料表規格。其他用於做連線的操作,我們不需要打包在jar內。所以把那些次要的東西都放在test資料夾中。我們這時可以先用mvn test指令,確保一切功能還是正常。 Entity folder 然後我們入正題,在pom.xml中加入hibernate-core,spring-data-jpa, 然後在main資料夾下加入 Entity、Repository,例如前述用過的Apple和AppleRepo,最後資料夾就像是這樣。 . |-- pom.xml |-- src | |-- main | | `-- java | | `-- io | | `-- github | | `-- macauyeah | | `-- springboot | | `-- tutorial | | `-- springbootdatatest | | |-- Apple.java | | `-- AppleRepo.java | `-- test | |-- java | | `-- io | | `-- github | | `-- macauyeah | | `-- springboot | | `-- tutorial | | `-- springbootdatatest | | |-- SpringBootDataTestApplication.java | | `-- SpringBootDataTestApplicationTests.java | `-- resources | `-- application.properties 然後我們在Test Case中使用AppleRepo @SpringBootTest class SpringBootDataTestApplicationTests { @Autowired AppleRepo appleRepo; @Test void contextLoads() { Apple apple = new Apple(); apple.setUuid(UUID.randomUUID().toString()); apple.setWeight(100.0); apple.setGravity(1000.0); appleRepo.save(apple); } } 這個跟前述02-spring-data-jpa最大的差別,就是我們的main中只有Entity相關的Class,我們發佈jar,別人引用我們的class,別人不會解發其他不相干的商業邏輯。假如發佈02的例子,因為Spring有自動初始化Component的原因,很可能會誤觸發02中的BasicApplicationRunner.java Source Code spring boot data test

Spring Boot 02 - 快速接入Database的選擇: Spring Data JPA
科技新知
MacauYeah・2024-03-08

快速下戴模版 使用Spring initializr,可以很容易就建立一個以Spring boot starter為底的java project。大家可以使用Spring 官網又或是vscode plugin 快速地建立一個maven或gradle project。筆者較為熟悉maven,就以maven起一個範例。 在使用Spring initializr有幾件事必需要指定的: Spring boot version: 3.x.y 或以上 Language: java Group Id: 請選擇有意思的域名,如果你用github,可以選 io.github.yourusername artifactId: 這個範例的名字,例如commandline Packaging type: 本次使用jar,日後若開發web 應用,可以使用war Java version: 17或以上 Dependency: Spring Data JPA, Spring Boot DevTools 這次不像過去順利,因為這裏欠缺了Database連線資料,為了方便測試,我們先在pom.xml加入 h2與spring的整合很好。即使用什麼都不設定,直接運行mvn spring-boot:run,都可以成功執行了。但如果可以,在application.properties加入資料庫設定,會方便日後移植到其他常用的資料庫品版牌。 # src/main/resources/application.properties spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:mem:testdb; spring.datasource.usename=random spring.datasource.password=random 然後我們就可以做靠Spring Data JPA去生資料庫的表 (table)。Spring Data JPA預設使用的是Hibernate。假設,我們有一個表叫APPLE。我們就可以開一個class Apple和一個interface AppleRepo去接它。 // src/main/java/io/github/macauyeah/spring/tutorial/springbootdatabasic/Apple.java @Entity public class Apple { @Id String uuid; Double weight; // getter setter } // src/main/java/io/github/macauyeah/spring/tutorial/springbootdatabasic/AppleRepo.java public interface AppleRepo extends JpaRepository{ // no content here } 注意,因為不同需要,AppleRepo可能繼承不同的XXXRepository,它們大部份都是用來觸發寫入資料庫的指令。而這個也晚除了直接存取Hibnerate EntityManager的需要。 亦因為我們現在用的是h2Database,其實資料表並不存在。我們需要在執行Spring Boot時,同步先建立表,所以在application.properties 加入自動建表的設定。 # src/main/resources/application.properties spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=update 然後在Spring Boot Context的環境下,可以隨時執行寫入的操作。 @Autowired private AppleRepo appleRepo; public void saveApple() { Apple apple = new Apple(); apple.setUuid(UUID.randomUUID().toString()); apple.setWeight(100.0); appleRepo.save(apple); } Source Code spring boot data basic 因為h2Database只是用作測試用,所以spring-boot執行完,資料庫就會被刪除。而上述原始碼當中,還附上了一些dump sql的方法,至少可以讓大家驗證己儲存的結果。