搜尋

搜尋結果

JavaMailSpringbootemail
科技新知
MacauYeah・2025-10-24

使用 Spring boot 對接 SMTP gateway 發 email ,相對是容易的。 基本上,它就是會使用自建的 org.springframework.mail.javamail.* , 對接 javax.mail.* / jakarta.mail.* 以前的所有設定值 ,都可以經 spring.mail.properties.* 傳入 例如 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.ssl.enable=true spring.mail.properties.mail.smtp.socketFactory.port=465 就等於過去 java.util.Properties props = new java.util.Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.socketFactory.port", "465"); 一個最簡單可以連去 google smtp 的簡易 code 如下 ### application.properties spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username= spring.mail.password= spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true // SpringBootEmailApplicationTests.java @SpringBootTest class SpringBootEmailApplicationTests { @Autowired private JavaMailSender javaMailSender; @Value("${spring.mail.username}") private String fromAddress; private static final Logger LOG = LoggerFactory.getLogger(SpringBootEmailApplicationTests.class); @Test void contextLoads() { try { SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setFrom(fromAddress); mailMessage.setTo("XXXXXXXX"); mailMessage.setText("this is backend email trigger for spring boot"); mailMessage.setSubject("spring boot test mail"); javaMailSender.send(mailMessage); } catch (Exception e) { LOG.error("Error while Sending Mail"); throw new RuntimeException(e); } } } github 原始碼 https://github.com/macauyeah/spring-boot-demo/tree/main/spring-boot-tutorial/spring-boot-email

CTM44
文化創意
Cheers!・2025-10-20

您要嘅快樂,從 CTM Home Media 開始!新劇、綜藝、好歌、熱門遊戲 每月更新,一個平台滿足晒您想要嘅娛樂 【秋「Gold」戲爽 劇迷至愛】 myTV Gold → 首 12 個月 $48 / 月《消失的孩子》、《天空之城》等新劇任睇,仲有《悠長假期》、《神啊!請多給我一點時間》 等經典神劇隨時翻睇! myTV SUPER → 低至 $10 / 月《巨塔之后》、《獨嘉瞓過界指南》、《剪裁魔法師2》、《香港美食匠人》 緊貼最新至 hit 嘅精彩內容! 【芒果 TV 國際 內地熱潮綜藝同步追 】→ 首 12 個月 $28 / 月 《向往的生活・戲如人生》、《初入職場・中醫季》、《海角 88 號》內地嘅熱門綜藝同劇集,第一時間就睇到! 【Blacknut 500 + 款雲遊戲 】→ 首 12 個月 $28 / 月《秋後的季節》、《阿基里斯:倖存者》、《切爾諾貝利》、《二擊必殺》、《碧波之下》 每月都有新 Game,一家大細齊齊玩 【JOOX 全天候靚歌相伴 仲免本地數據】→ $58 / 月 洪嘉豪《下世愛你》、Ian 陳卓賢《給千億顆星選中的二人》、周殷廷《想和你》等新歌即刻聽!仲有葉倩文《秋來秋去》、譚詠麟《愛在深秋》、張學友《秋意濃》嘅經典金曲聽唔完 屋企有 Home Media,每月都有新驚喜 全家齊齊快樂! ➤➤ 立即下載 :https://s.ctm.net/lxBa4➤➤ CTM Home Media 詳情:https://s.ctm.net/89nd1

SpringWebApi
科技新知
MacauYeah・2025-10-18

在設計網頁應用時,總會有某些功能,是特別消耗時間的,例如我們的應用要提供報表,或長時間搜索。如果,我們的 Web Api 的連結,要強制客戶端等待結果,那麼中途斷線需要重做的機會就變得很高,客戶端的體驗一定不太好。 面對這些情況,我們最好就把原本一個 API 功能分為三個 API 去做。 工作生成 API 查詢狀態 API 查詢結果 API 如果大家有信心,可以把2和3混合在一起,對於客戶端,也是一件好事。不過,2,3 因為回傳的結構可能不一樣,分開處理,程式碼會更易讀。 以下,筆者就以一個模擬報表生成的應用,去解釋如何設計可以即時回傳的 API。 source code: spring-boot-web-api-async ReportController.java 詳細解析 假設我們有一個 ReportController,它負責處理與報告生成相關的 HTTP 請求,它提供三個核心 API 端點。 啟動報告生成端點 @PostMapping("/reportJob/create") public ResponseEntity createJob() { String uuid = String.format("%d_%s", (new Date()).getTime(), UUID.randomUUID().toString()); CompletableFuture.runAsync(() -> { try { orderStatus.put(uuid, PROCESSING); Thread.sleep(10000); // 10-second simulated delay reportService.genAndSaveReport(uuid); orderStatus.put(uuid, COMPLETED); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } }); return ResponseEntity .accepted() .header(HttpHeaders.LOCATION, "/reportJob/status/" + uuid) .body(Map.of("uuid", uuid, "status api", "/api/reportJob/status/" + uuid, "download api", "/api/reportJob/download/" + uuid)); } 運作原理: 立即生成唯一的 uuid 來標識這次任務 在 CompletableFuture.runAsync 運行長時間的操作。 API 本身即時回傳了 HTTP 202 (Accepted) 狀態,告訴客戶端請求已被接受但尚未完成 在回傳的結果中,還有提示可以查詢狀態和查詢結果的API。 這種設計避免了 HTTP Gateway Timeout,因為回應是即時的 。 檢查進度端點 @GetMapping("/reportJob/status/{uuid}") public ResponseEntity getStatus(@PathVariable("uuid") String uuid) { String status = orderStatus.get(uuid); if (status == null) return ResponseEntity.notFound().build(); if (COMPLETED.equals(status)) { // return ResponseEntity.status(HttpStatus.SEE_OTHER) return ResponseEntity.ok() .header(HttpHeaders.LOCATION, "/api/reportJob/download/" + uuid) .body(Map.of("status", COMPLETED)); } return ResponseEntity.status(HttpStatus.ACCEPTED) .body(Map.of("status", PROCESSING)); } } 單純以 map orderStatus.get(uuid) 查看狀態結果。這個map 必需是多線程下使用還是安全的 (ConcurrentHashMap)。 下載結果端點 @GetMapping("reportJob/download/{uuid}") public ResponseEntity download(@PathVariable("uuid") String uuid) { String status = orderStatus.get(uuid); if (status == null || !COMPLETED.equals(status)) { return ResponseEntity.notFound().build(); } else { // 下載檔案 } } } 如果大家並不計較是否需要重做失敗的請求,這個例子已經可以簡單地達到即時異步回傳的效果。如果大家還需求考慮請求是否有效完成,就需要用到 message queue 或其他 job server ,這就不是同一個網頁應用的操作範圍。 Reference source code: spring-boot-web-api-async Building a Long-Running Async REST API in Spring Boot (with 202 + 303 Status Codes)

§ §
環宇搜奇
莫雪・2025-10-12

秋意染黃秘境 § 白川鄉合掌村 § 秋收時節, 日本名古屋白川鄉合掌村, 一個被群山環繞的小村落, 除了看染黃染紅的 楓葉點綴的山巒和田野之間, 還有一片一片的金黃稻田。 踏入白川鄉, 感覺穿越在日本古時的美好時光, 接觸動人的秋日黃染一片禾稻秋收圖, 與及大自然原始生態風光, 深吸一口禾稻原野之味、 欣賞著仍保留日本原始風貌的田園風光, 還有那裡獨特一座座三角形茅草屋頂傳統合掌造房屋, 手掌般厚度層層厚厚茅草屋頂角在田園間, 在村鎮上, 都那麼可愛又特別, 茅草襯托住田園翠野, 格外清新又獨特! 令人驚喜的日本文化人文景觀, 現今這裡保存著 100多座大大小小的合掌造房屋, 是日本規模最大的合掌造集村落。 當天剛巧遇上霧雨, 串串雨珠簾垂絲掛於最外層的 茅草合掌屋, 日間與及最裡層的好像不受水氣影響到, 相信遇上冬雪時屋內一樣可以保曖防風, 只是披上白茫茫雪衣外觀, 成為一處處經典的秘境風境線。 往白川鄉合掌村, 須在「名古屋」站步行大約5分鐘, 在「名鐵巴士中心」搭乘高速巴士前往, 在「白川鄉巴士總站」下車,所需時間約2小時50分鐘。 白川鄉完好地保留了日本原始生態風景, 一處被人 稱為秘境的地方, 於1995年被登錄為 聯合國教科文組織的世界遺產, 稱是一生人一定要去看一次的絕色景點之一。 抵達「白川鄉巴士總站」後, 我們先沿田園靠邊僕斜坡 步行登上「城山天守閣展望台」, 沿坡路上 一片綠意金黃稻田之色、茅草合掌屋點睛其中, 原野風光盡收眼底, , 斜坡一處留下一大片紅葉, 像是捕鋪上一層軟軟地毯迎客往上, 相信樹上黃葉、紅葉剛且更替不久。 抵達山頂展望台, 視野居高更為廣闊, 白川鄉山野村落盡收眼底, 只見山下田園間 禾稻田添上一抺抺金黃, 茅草合掌屋站立其中, 把守添彩, 形成一片和諧亮麗風景圖, 環繞於四周的山巒被霧氣披掛一縷, 更添上白川鄉秘境的迷離色彩。 山頂天守閣上除了盡收山下自然風光外, 也有食店和手信店舖, 隨你逗留閒蕩與買買。 天守閣上閒蕩溜瀏覽完畢, 信步下山穿梭遊走山下村落, 其中「神田家」是規模最大,也是唯一被指定為 國家重要文化財的建築物, 這棟3層樓的住宅 現在己成為一座展覽館, 購票可入內參觀。 地面層大廳中庭處仍保留著展示著昔日的四方木柴明火圍爐, 進入的遊客紛紛靠攏圍爐取暖感受一下 日本江戶時代舊時的生活樣貌, 從二樓古老木窗外望出去的田園風景格外優美。 交通: 古屋「名鐵巴士中心」搭乘高速巴士, 直達「白川鄉巴士總站」車程所需時間大約2小時50分鐘 #米蘭 ¶斯福爾紮城堡¶ # #日本廣島四國櫻花怒放# 其它文章, 詳情請點擊澳門科學館「蒸氣誌(電子月刊)」 內之「近代中國科學家事蹟及其精神」 https://www.msc.org.mo/zh/flipbook/55/S-TEAM-ISSUE 本篇文章、相片版權屬作者所有, 經由版權持有人授權CyberCTM.com發表。 聯絡及邀約: irene801802@hotmail.com

】※AQUARIUM × ARTátoa (PART1)
走遍世界
80後愛旅行✈️・2025-10-12

神戶的 AQUARIUM ✕ ART átoa 水族館位於神戶港旁邊,鄰近美利堅公園與神戶塔。 離遠看就是一棟水泥建築,下車後非常好找! ​ (Google map 截圖) 建築設計極具現代感,外牆以幾何切割與金屬質感呈現,宛如一件大型藝術品。 ​ (Google map 截圖) 神戶的 AQUARIUM ✕ ART átoa 是一座融合水族展示與藝術創作的劇場型水族館,打破傳統水族館的框架,讓你彷彿置身於一場沉浸式的視覺與感官盛宴。 ​ ​ 1F 1F │ 美 食 廣 場 一踏入這棟水泥建築,一樓就是美食廣場。 這裡是神戶最大的美食廣場之一,擁有源自神戶的品牌TOOTH TOOTH精選的9間店舖。 涵蓋洋食、漢堡、蛋包飯、章魚燒、拉麵、烤肉盤、甜點及地方特色飲品等。 美食廣場最特別的是這裡的屋頂連接著水族箱的設計,座椅區可以觀賞到水族館內的巨大水槽,是非常特別的用餐環境! ​ 有時間的話真的要到1F的美食廣場吃點東西,坐在這裡頭頂頂著水族箱的水槽底部,魚群在頭頂悠游,真的超夢幻! ​ 1F │ 博 物 館 商 店 除了美食廣場外,一樓還有博物館商店。 這裡販售水族館限定毛絨玩具(如水豚、象龜)、地元品牌聯名商品(如神戸紅茶調配茶)等。 ​ (官網圖片) 我們吃完午餐後,就往上一層出發。 來到二樓才是水族館買票的地方。 ​ ​ ​ 館內共設有八個主題空間,每一區都有其獨特的演出方式與展示形式,宛如踏入電影或舞台劇場景中。

手機‧電玩
MacauYeah・2025-10-09

之前筆者就高達模型中,籠統地比較不同的1/144比例產品。現在筆者也正式入手更多不同的系列,看看有沒有哪些適合不同需求的玩家。 SD系列:Mobile Join Gundam 明盒盒蛋,拼裝模型,但不需要剪鉗也可以隨手取件。要補色、滲線或進行一步加工制作。優點是可動性高,官方有提供補色貼紙,但距離足夠分色,還是有一段距離。 筆者並不在意它的分色不完美,以這個不足百元的商品來講,可動性足夠讓筆者快樂一個下午。 SD系列:FW Gundam Converge 明盒盒蛋,有少量件需要拼裝,大部份都已經有預塗裝。因為制作比較精緻,人氣商品比MJG會再貴一點。但可動度就很低,幾乎只有手臂、手碗、頭的平轉,腿腰不可動。筆者購入這個系列的原因,主要是當時已經無力再自行塗裝,把它當完成品直接買回來當擺設,也是一番享受。 兩者二選一的話,筆者更偏好MJG,因為有可動性,強行把玩也勉強可玩,一起擺場景也更耐玩。而FW的話,它的優勢反而是選擇多,方便整個系列收藏。因為有塗裝,而且有少部份可動,想拍照也不是不可以,耐玩度不高就是了。 FW就筆者跟朋友交流,在另一個系列MSE的出現下,FW似乎不太受樂。不過筆者未入手過MSE,難以作比較。但外觀上,似是MJG的另一個版本,但沒有骨架。

2Halloween!
創意生活
Cheers!・2025-10-08

2025嘅萬聖節,澳門新濠影滙為您準備好「驚嚇」同「歡樂」雙重體驗~膽大王必挑戰嘅「心寒片場」可以一站式體驗以七大電影為主題的解謎鬼屋,沉浸式感受被鬼嚇住動腦!一家大細都啱玩嘅「玩『懼』萬聖節」Toy Story 主題攤位遊戲、面部彩繪、免費爆谷同「Trick or Treat」等緊您! 9月19日至11月2日,無論您係膽大王定係家庭樂,總有一樣啱您玩! 門票現已發售,立即預訂:https://s.ctm.net/jpvOc 心寒片場 (Creepy Studio) |解謎鬼屋等您體驗 平時睇鬼片就多,親身被鬼追您又試過未?今個萬聖節,新濠影滙「心寒片場」解謎鬼屋強勢回歸!七大恐怖電影主題輪住嚇您 —《娃鬼回魂》、《鬼新娘迎親》、《邪靈娃娃》…… 一邊解謎一邊逃出,包您嚇到尖叫唔停口! 日期:2025年9月19日至11月2日(逢星期五至日)時段: 下午 15:00 - 19:00(最後入場 18:30) 晚上 19:00 - 23:00(最後入場 22:30) 地點:澳門新濠影滙一樓(巨星酒廊對面) 膽大王想獨闖「心寒片場」?標準門票MOP $144即刻出發,新濠會員更可享9折優惠!如果自問「膽細細又驚又要玩」,不如拉埋班FD一齊挑戰四人行套票,MOP 444(原價MOP $576)平均每人只需MOP $111,抵玩又刺激~ 專程從香港過來玩?咁就一定要訂「港澳船票套票」啦!MOP $404即包「心寒片場」門票1張同香港澳門來回船票1套(「香港-澳門」船票僅限於門票當天或提前一日使用;「澳門-香港」需於門票當日計算七日內來使用。),原價成MOP $584,而家慳咗成百幾蚊真係超值! 玩完驚到餓?我哋幫您諗埋~「心寒片場」星滙自助午餐套票 MOP $404(原價MOP $538),包「心寒片場」門票同自助午餐1位 (*僅限門票當日或翌日使用) ;或者選擇「嘉宴」餐飲禮券套票 MOP 404(原價MOP $544),包「心寒片場」門票同MOP $400餐飲禮券,等您可以盡情補充能量!(*僅限活動期間使用) 無論獨闖、組隊、定係遠道而來,總有一套啱您玩!立即預訂:https://s.ctm.net/jpvOc 玩「懼」萬聖節|一家大細放心玩~遊戲攤位+面部彩繪+免費爆谷! 萬聖節小朋友Cos得咁得意,點可以唔帶佢哋出嚟威?今個萬聖節就去「澳門新濠影滙一樓時代廣場」!場內設有多個《反斗奇兵》主題攤位遊戲,MOP$20換一個遊戲代幣,挑戰成功即有機會贏得Toy Story獨家禮品,大人細路都玩得開心! 新濠會員尊享優惠: MOP $200 換10個遊戲代幣,免費送「反斗奇兵三眼仔糖果桶」,小朋友可以拎住去Trick or Treat啦! 面部彩繪體驗:用2個遊戲代幣,即可為小朋友畫超應節嘅萬聖節彩繪,可愛定恐怖任您揀! 免費爆谷派發:喺時代廣場(DFS 附近)仲有免費派發爆谷,首200名客人更可獲《反斗奇兵》主題爆谷,送完即止! 遊戲攤位開放時間:2025年9月19日至11月2日(逢星期五至日) 時間:13:00 - 21:00 (面部彩繪體驗 & 爆谷派發時間:13:00 – 18:00 ) 地點:澳門新濠影滙1樓時代廣場 Trick or Treat?|糖果大放送! 小朋友最愛環節嚟啦!9月19日至11月2日期間(每日都有!),只要喺新濠影滙精選商戶門口大叫「Trick or Treat?」,即可免費拎糖!實現糖果大豐收~ 萬聖節點止有得玩?新濠影滙「搞怪美食」驚喜登場! 玩到肚餓?唔使驚!新濠影滙四間餐廳齊推萬聖節主題限定套餐,搞怪得黎又好味,絕對係視覺與味覺嘅雙重享受~ 載運美式餐室嘅木乃伊開心套餐 / 骷髏骨頭開心套餐 / 惡魔魅影開心套餐,隨餐仲送萬聖節公仔掛飾,即時補充您係鬼屋尖叫流失嘅能量! 甜品控必衝羅浮餅廊及輕食嘅造型蛋糕, 小編最期待嘅就係「骷髏朱古力紅桑子蛋糕」同「紅桑子十字架丹麥 」,造型驚悚但味道驚喜,保證您相機食先! 想同朋友Chill 住打卡? 巨星酒廊萬聖節Tea Set絕對唔輸蝕 — 「怪獸之眼」、「吸血南瓜」、「木乃伊手指」、「女巫紅寶石」… ……款款精緻得嚟帶點詭異,包您一邊驚一邊笑! 最後當然唔少得星滙餐廳自助餐,多款萬聖主題美食任您放題,仲有一系列可愛到「嚇死人」嘅甜品,等您視覺同味覺同時被攻擊! 驚聲睇好戲|萬聖節電影優惠 喺鬼屋尖叫完,點可以唔睇返場戲壓壓驚?活動期間憑當日「心寒片場」門票,或者著住萬聖節服飾,去「影滙戲院」買飛即享: 第二張戲飛只要 MOP 60元! (即場出示當日「心寒片場」門票或穿著萬聖節主題服飾即享優惠) 一邊食爆谷一邊睇戲,萬聖節之旅完美收官~ 活動日期:2025年9月19日至11月2日地點:澳門新濠影滙戲院票務處 今個萬聖節唔使諗去邊,新濠影滙包大人同細路盡興而歸!記得約實朋友、帶埋一家大細嚟玩啦!