搜尋

搜尋結果

Spring Boot 05 - 為 http json api 加入登入要求
科技新知
MacauYeah・2024-07-02

本節,我們將為之前的http服務,加入認證機制,只有在資料庫現存的用戶可以登入及訪問我們的json api。 下戴模版 慣例,我們用Spring Initializr (Maven) 下載模版,Dependency主要選擇 Spring Web Spring Boot DevTools Spring Security Controller 跟上節一樣,我們起一個Controller,為簡化測試,我們只做http GET api。 由於本blog對於Source Code的顯示不太友好,有需要看source code的,請到Github查看 //src/main/java/io/github/macauyeah/springboot/tutorial/springbootwebapidata/controller/HomeController.java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") public class HomeController { @GetMapping("/someRecord/{uuid}") public Map readSomeRecord(@PathVariable String uuid) { return Map.of("ret", "your uuid:" + uuid); } } 準備我們的test case,但這次我們預期它應該要出現登入失敗的結果。 //src/test/java/io/github/macauyeah/springboot/tutorial/springbootwebapidata/controller/HomeControllerTest.java @SpringBootTest @AutoConfigureMockMvc public class HomeControllerTest { @Autowired private MockMvc mockMvc; @Test void testNoLogin() throws Exception { RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/api/someRecord/1234") .contentType(MediaType.APPLICATION_JSON); this.mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.status().is4xxClientError()) .andExpect(MockMvcResultMatchers.jsonPath("$.ret").doesNotExist()) .andDo(MockMvcResultHandlers.print()); } } 在我們執行上述的測試,test case 成功過了。我們的基本設定跟上一節其實沒有多大改動,為何現在http api會回傳狀態 401? 那是因為我們在依賴中加了,Spring Security,它配合了Spring Web,就會自動為所有api加入權限檢測。我們的測試中,沒有任何用戶登入,當然會出現 http 401。為了讓我們可以好好管理誰可以使用api,我們就來設定一定Security。 我們加一個WebSecurityConfig.java,暫時指定所有的訪問路徑都必需有USER權限,並且用 http basic的方式登入。 //src/main/java/io/github/macauyeah/springboot/tutorial/springbootwebapidata/config/WebSecurityConfig.java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class WebSecurityConfig { @Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(authorizeHttpRequests -> { authorizeHttpRequests.requestMatchers("/**").hasRole("USER"); // 所有的訪問路徑都必需有USER權限 }); http.httpBasic(Customizer.withDefaults()); // 使用http basic作為登入認證的方式 return http.build(); } } 上述例子,只是擋了沒有權限的人,我們還需要讓有登入身份的用戶可以成得取限User權限。 我們繼續修改,WebSecurityConfig,加入只在記憶體有效的InMemoryUser import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; public class WebSecurityConfig { //.. @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); // 我們的密碼不應該明文儲,比較保險,我們使用BCrypt演算法,為密碼做單向加密。 } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withUsername("admin") .password(passwordEncoder().encode("pass")) .roles("USER").build(); // 我們在記憶中體,加入一個測試用的User,它的名字為admin,密碼為pass,權限為User return new InMemoryUserDetailsManager(user); } 然後加入新的測試,直接模擬Role。結果是通過的。 //src/test/java/io/github/macauyeah/springboot/tutorial/springbootwebapidata/controller/HomeControllerTest.java @Test void testLoginWithRoles() throws Exception { RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/api/someRecord/1234") .contentType(MediaType.APPLICATION_JSON).with( SecurityMockMvcRequestPostProcessors.user("someone") .roles("USER", "ADMIN")); // 沒有使用密碼,只使用Role this.mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.status().is2xxSuccessful()) .andExpect(MockMvcResultMatchers.jsonPath("$.ret").value("your uuid:1234")) .andDo(MockMvcResultHandlers.print()); } 再來一個測試,改用密碼登入,分別輸入錯的和正確的密碼。 @Test void testLoginWithWrongPasswordAndNoRole() throws Exception { RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/api/someRecord/1234") .header("Authorization", "Basic randompass") // 輸入錯的密碼,應該回傳http 401 Unauthorized .contentType(MediaType.APPLICATION_JSON); this.mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.status().is4xxClientError()) .andDo(MockMvcResultHandlers.print()); } @Test void testLoginWithPassword() throws Exception { RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/api/someRecord/1234") .header("Authorization", "Basic YWRtaW46cGFzcw==") // http basic 就是把 admin:pass 轉成base64 .contentType(MediaType.APPLICATION_JSON); this.mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.status().is2xxSuccessful()) .andExpect(MockMvcResultMatchers.jsonPath("$.ret").value("your uuid:1234")) .andDo(MockMvcResultHandlers.print()); } 最後,當然是正確的密碼才能通過。若果大家還是半信半疑,我們可以跑起真的正服務(IDE RUN或mvn spring-boot:run),然後用curl去試。 curl http://localhost:8080/api/someRecord/1234 // failed with 401 curl -u "admin:pass" http://localhost:8080/api/someRecord/1234 // successed 使用SQL Database讀取用戶登入資訊 一般而言,我們不可能把所有用戶登資訊打在InMemoryUser中,通常背後有一個資料庫儲存所有的用戶資訊,我們在登入時,讀取它來做對比檢證。 為此,我們在maven中,加入 Spring Data JPA h2 database (或任何你的資料庫,如mysql 、 sql server) 最後一步,我們把InMemoryUser去掉,改為從資料庫讀取。因為原始碼太多,就不全部貼上。最主要的是WebSecurityConfig.java要關掉之前的UserDetailsService,改為提供一個UserServiceImpl類,它會實現UserDetailsService的功能。 @Configuration @EnableWebSecurity public class WebSecurityConfig { // 把原來的Bean先變成註解,其他不變 // @Bean // public UserDetailsService userDetailsService() { // UserDetails user = User.withUsername("admin") // .password(passwordEncoder().encode("pass")) // .roles("USER").build(); // return new InMemoryUserDetailsManager(user); // } } // spring-boot-tutorial/spring-boot-web-api-data/src/main/java/io/github/macauyeah/springboot/tutorial/springbootwebapidata/config/UserServiceImpl.java // other import import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; @Service public class UserServiceImpl implements UserDetailsService { @Autowired PasswordEncoder passwordEncoder; @Autowired UserRepo userRepo; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // 因為我們資料庫沒有資料,為了方便測試密碼的加密,我們在java code上直接插入一筆資料。 UserEntity defaultUser = new UserEntity(); defaultUser.setUsername("admin"); defaultUser.setPassword(passwordEncoder.encode("pass")); defaultUser.setRole("USER"); defaultUser.setUuid(UUID.randomUUID().toString()); userRepo.save(defaultUser); // 上述為測試用插入資料,不應該出現在正式使用環境中。 UserEntity user = userRepo.findOneByUsername(username) .orElseThrow(() -> new UsernameNotFoundException(username + " not found")); // 找找資料庫有沒有正在登入的該名使用者username List authorities = List.of(new SimpleGrantedAuthority("ROLE_" + user.getRole())); LOG.debug("got user uuid:{}, username:{}, role:{} from database", user.getUuid(), username, user.getRole()); // 如果前面的 findOneByUsername 有結果回傳,我們就給它一個ROLE_XXX的權限。 return new User(username, user.getPassword(), authorities); // 這裏從沒有檢查過密碼是否有匹配,全部交給Spring Security去做 } } //spring-boot-tutorial/spring-boot-web-api-data/src/main/java/io/github/macauyeah/springboot/tutorial/springbootwebapidata/entity/UserEntity.java // spring-boot-tutorial/spring-boot-web-api-data/src/main/java/io/github/macauyeah/springboot/tutorial/springbootwebapidata/repo/UserRepo.java 上述段落中,筆者省略了UserEntity和UserRepo,它們只是一般的spring-data-jpa概念,有需要可以經文末的連結查看完全原始碼。最需要注意的,是UserEntity的password欄位,在資料庫中是以加密的方式儲存。我們在配匹登入者與資料庫記錄時,也沒有自行檢驗密碼的需要。我們只是在加密過的密碼回傳給Spring Security,Spring框架會自行把登入者輸入的密碼與加密了的密碼作比較。

時代的眼淚!充滿童年回憶的 Tetris Battle 將要停運 T_T
手機‧電玩
Chrysalids 少爺・2019-04-24

又有一個童年回憶將要消失啦!經典懷舊遊戲 Tetris Battle 將於2019年5月31日正式停運。如果您都想懷念過去玩 Tetris Battle 的歡樂時光,就要好好把握時間,趁下個月底結束營運前,盡情地玩 Tetris Battle 啦! Tetris Battle 是一款於2010年6月左右在 Facebook 上推出的俄羅斯方塊遊戲。Tetris Battle 設有課金系統,讓玩家可以購買 Tetris Battle 遊戲內的小道具,增加對手的壓力之餘,亦能夠提高自己的勝算。除此之外,Tetris Battle 亦設有「能量消耗」,以避免玩家過於沉迷。因為 Tetris Battle 是一款免費的 Facebook 遊戲,所以有時候玩 Tetris Battle 時,都要先收看一段片長30秒的廣告。 傳統的「俄羅斯方塊遊戲」是一款講求反應速度、策略及預測能力的益智遊戲。玩法好簡單,只要把不同形狀、以四格方塊組成的四格骨牌,填滿某一條橫行的格子,就會立刻被消除,最多一次過可以消除四條橫行。當方塊到達頂點時,遊戲便會宣告結束。如果不想遊戲那麼快結束,就要嘗試不停地把方塊橫行消除、消除、再消除啦!假如想拿高分數,便要盡量一次過消除四條方塊橫行,不過風險會相對地較大。 Tetris Battle 的玩法和傳統的「俄羅斯方塊遊戲」一樣,但加入了線上對戰模式、輔助小道具、以及可與暫存的方塊對換功能等元素,令 Tetris Battle 剛推出的時候,深受大眾歡迎。Tetris Battle 經過多次改版後,增加了不同遊戲模式,時至今日,Tetris Battle 已經一共有七款不同對戰模式,以迎合休閒玩家和喜歡刺激玩家的需要。 Tetris Battle 休閒玩家必玩的就是這款「馬拉松」模式。一共有15關,關卡越高,方塊跌下來的速度便會越快。完成15層後,還可以和朋友比較分數。 因為少爺已經有一段時間無玩 Tetris Battle,所以只能夠去到第13層。看來少爺要加緊練習,把以前的反應速度練回來啦! 想玩得刺激一些,可以選擇以下的二人對戰模式。在兩分鐘之內,以擊倒 (K.O.) 對手的次數多寡而決定那位玩家勝出比賽。不斷贏出比賽,便能夠提升階級,遇到更強的對手。 每次玩家消除多少條方塊橫行,便會送多少條已消除的方塊橫行數量給對手,從而增加對手未消除的方塊橫行數量,令對手更快到達頂點而被擊倒。 如果您覺得「二人對戰模式」還是不夠刺激的話,少爺十分推薦挑戰以下這款「六人對戰模式」。 「六人對戰模式」可以說是「二人對戰模式」的究極加強版。玩家在一次比賽中,會對上其他五位玩家,互相送方塊橫行給隨機對手,可以想像得到會有多混亂。 Tetris Battle 還有其他的對戰模式可以選擇,少爺就留待大家去自行摸索啦!喜歡玩「俄羅斯方塊」的朋友,不妨在5月31日前,去試玩這款既經典、又懷舊、亦充滿童年回憶的 Facebook 遊戲「Tetris Battle」啦! 推薦閱讀: 口痕痕想食特式小食?試試美丹印尼小食店啦! 食黎食去都係豬扒包同葡撻,不如試間新野﹣﹣青洲灶記咖啡

[ 大發現 ] 堅! 馬交友一年四季外出旅遊恩物 4G環球上網卡15日
旅遊情報
. 小城閒人 .・2018-06-13

近日發現好東西 急不及待必須分享! 無他 踏入6月要開始旅遊旺季 不用等小朋友放暑假的大朋友們差不多應該要出發了~ 旅行攸關大過天 來 立即首度公開! ~~~~~~~~~~~~~~~ 前言: 是這樣的 … 啱啱日本返黎 今次出發前有點趕 怕煩 所以就無跟以往一樣走去租蛋 (諗住豪比佢算了 用日計數據漫遊計劃) 點知 一個唔覺 比我意外發現左張本地大台出既數據卡 自己因為是常出外兼不停上網一族 數據係一個旅程既”靈魂” (及時po相, 打卡是必須的) heheeeeee…. ~~~~~~~~~~~~~~~ 來 首先談談張卡 張卡一開就用15日支換全球60多個國家/地方 嘩! 無錯 真係60多個國家/地方 而且都是熱門用得著旅遊地點 (無厘頭山卡啦的 請別看下去) 閒人今次去日本七天 頭尾由香港出發/回程共九日 啱用wor! 抱著一試無妨心態 而且網上買有半價優惠 就馬上去馬係網上shop了一張 … 隔天 臨出發前行過店舖自取也方便(住氹仔就是近) 到步關西 一出機場上車 急不及待開卡試試先 (哈哈 雖然是有點壞 眼見朋友們真夠累 心裡暗自歡喜 --- 手中有卡就是方便 今次不用下機到步才買 又不用出發前去租蛋 不用煩心 用完就棄 爽 ) 放左SIM卡, 開機後 完全不需設定, 不用配對 爽~~~ 快, 自動有網 而且係NTT DOCOMO 嘩 不賴~~~ YouTube, Facebook, Instagram 無難度 車程較長時間高速山路上絕大部份時間OK! 比對朋友係香港慣常幫襯的租蛋公司蛋蛋的接收 還給力一點~ 網速也足夠使用~ 價錢嘛 以9日計 跟朋友租蛋差無幾 如果去足15日便是抵到無朋友~ 抵! 又唔駛去借去還比按金 今次”一試無妨”結果”真心有驚喜” 正! 而且比對原本諗住用日計數據漫遊計劃 堅慳 呵呵~ 同行朋友也非常同意閒人今次醒目 yeah! 唯一要提一下 閒人本身是用雙卡Andriod機 不用換SIM 如果用是用iPhone 記得帶定針換SIM (PS. 如果買SIM卡內附有針效果會更完美 哈哈) 除左去日本 接下來暑假還有長途trip planning 中… 試想想 以歐,美,加, 澳洲等熱門地點來講 15日/2GB上網 實在是抵用到無朋友 閒人現在已心有所屬 接下來定必帶住 ”環球上網卡” 隨身隨行! 整合資料: 4G環球上網卡15日 歐洲, 美加, 澳紐, 日韓星馬泰60多國家/地區包香港, 中國內地, 澳門 2GB數據上網 https://www.ctm.net/cportal/base/public/adminViewPromotionDetail.iface?dataType=mobilePromotions&fromOtherModuleFlag=Y&id=581N 電訊商現有優惠: $250 (原價: $400) https://shopping.macaugoodhands.com/shop/index.php?act=goods&op=index&goods_id=45165#content 除左以上的上網卡 最近亦接觸到呢部Travis 80 種語言AI 雙向翻譯機 口袋size , 離線也能支援20種語言 備用時間長達12小時 軟件可更新 更重要 … 可當WiF蛋用 … 呵呵 看了產品介紹 非常同意它是 ”旅遊恩物, 科技良品” 有左佢 英文唔普及的地方最啱用 good arh! 網址: https://searchingc.com/collections/travis/ 不過 有一點閒人才疏學淺不懂的… 究竟Travis 能翻譯的世界語”即是什麼語言呢? 會唔會係 … XYZ#@ (你明架啦啦 :D ) 再周圍睇睇 原來已經有得賣tim 參考電訊商現有優惠: https://www.ctm.net/cportal/base/public/adminViewPromotionDetail.iface?dataType=mobilePromotions&fromOtherModuleFlag=Y&id=600N 以上純屬個人分享 最終資料以有關商戶為準. 除左講開心有好東西介紹比朋友 又點會少分享行程靘相呢~ 近日一直下雨 好懷念 黃昏美景 酒店房間及窒外美景 酒店餐廳(上)及溫泉(下) 溫泉酒店很貼心提供的菓子點心 最愛的讚旗烏東 so yummy! 百吃不厭 參觀毛巾博物館 MOOMIN的出產商 沿途特式小吃 說到底始終是吃貨一枚 選了最喜歡的手信給家人帶回家

提前半年預訂!澳門君悅酒店 Mezza 9 超人氣自助餐
澳城餐飲
Cheers!・2018-04-24

環境:★★★★★ 食物種類:★★★★★ 服務:★★★★★ 口味:★★★★★ 君悅酒店的「Mezza 9」自助晚餐甫推出已長期 Full booking,小編上星期採訪時再向酒店查詢,預約已去到十月。如此爆場,不單因為任叫任食龍蝦、鮑魚等多款貴價海鮮,更因為食材即叫即煮,還有蒸、炒、炸、椒鹽等十多種煮法任君選擇! 自助餐以「與廚共饗」為名,餐廳分為蔬菜、海鮮、魚生、冷盤、燒烤等區域,每一區都有廚師駐場,就算心大心細未能決定煮法,廚師都會從旁給你建議。就算零煮食經驗的朋友亦可趁機取經,和酒店大廚交流一番。 大部分菜式即叫即煮,師傅從未停手。 Mezza 9 坐無虛席,場場爆滿,想試記得提早訂位。 每個區域都掛有一個 LED 大電視,食客可以全程欣賞大廚煮菜過程,參與感十足。 海鮮區有飽魚、肉蟹、黃花魚、螺、蜆等,就連獅蚶都有! 小編想試試斑,師傅就建議:「條魚咁新鮮,就清蒸啦!」 「菜檔」按時令入貨,今期就有少見的塔菜。 湯品真材實料,逢周五至日更會升級加料,必飲! 這裡最受歡迎的,當然是即撈即劏即煮的龍蝦區,原隻生猛龍蝦在你面前即劏即煮,配合上湯、燒烤、薑葱炒、芝士焗等九種煮法,想一次試勻各種口味都並非易事。 龍蝦即捕即煮,勁新鮮! 意粉檔同樣即叫即煮,新鮮熱辣。 邊等菜式上檯的同時,不妨到壽司刺身區走一趟。這裡除了刺身是即叫即切,握壽司也是接柯打後即席炮製,保證新鮮之餘,亦可減少浪費,雙贏! 吃得興起,更可升級配上各種酒類,享受真正飲飽食醉。 連橙汁也是鮮榨的,無可挑剔。 Mezza9 Buffet 地址:澳門君悦酒店 3 樓 晚餐:18:00 - 23:00 費用:周一至四 $ 569;周五至日 $ 669 * 6 - 12 歲小童可享半價優惠。 網站:https://macau.grand.hyatt.com/zh-Hant/hotel/dining/mezza9Macau.html ► 註:餐廳 6 月起價錢將作以下調整: 周一至四 $ 599 周五至日 $ 699 更多自助餐攻略:澳門最全自助餐攻略,必食人氣推薦!

【HUAWEI Mate 10 新機玩】神級 AI 功能到底係乜?
專題報導
Cheers!・2017-11-13

夥拍德國頂級相機品牌「Leica」的 HUAWEI 上星期推出旗艦作 Mate 系列,新作除了主打攝影功能,更大推 NPU(Neural-Network Processing Unit)人工智能晶片。小編就將其強大的 AI 功能整理出兩大賣點,並以 Mate 10 進行開箱實測,一試便知龍與鳳! 賣點一:智能辨識拍攝場景 Mate 10 系列繼續沿用 Leica 的雙鏡頭設計,鏡頭部份升級至 F1.6 大光圈,輕鬆搞掂唯美景深照;並透過 NPU 即時辨識多達 13 種場景和物體,再根據景物的特點和屬性自動調節參數設置。而前置鏡頭亦配有 800 萬像素,具備 F2.0 光圈及 FF 追蹤對焦等功能。 相機可透過 AI 辨識出 13 種不同場景和物體(包括文字、食物、藍天、雪地、狗、貓、夜景、日落、植物、人像等)。 小編分別以雜誌及花進行實試時,相機即時自動辨別,效果非常好! 花的攝影模式可以將植物的細緻完美呈現,F1.6 大光圈令景深的美感表露無遺。 賣點二:聯手 Microsoft 快速翻譯 除了 Leica 以外,HUAWEI 更找來 Microsoft 合作,為 Mate 10 系列加入翻譯功能,最把炮是可以進行離線翻譯,更支援多達 50 種語音。除可將語音和相片中的文字翻譯,更具備雙向語音翻譯功能,實測時雖然翻譯結果未算好精準,但在 AI 的加持下,翻譯速度非常快,甚至做到即時翻譯的效果。 程式支援多達 50 種語音,不過小編嘗試以廣東話測試時,成功率較低。 雙向語音翻譯功能強大,不出兩秒即可完成翻譯,速度勁快! 小編將日本零食包裝紙上的成分拍下來,馬上出現中文翻譯,精準度 90%。 《出機小貼士》 想用至抵價錢出機,快啲去 CTM 申請 $296 / 3GB 三地共用月費,即享上台機價 $1,880!(HUAWEI Mate 10 )/ $3,280(HUAWEI Mate 10 Pro)。而「尊壹會」會員及「大豐 CTM Visa Signature 信用卡」客戶亦可享淨機價 88 折優惠,仲可以用半價換購 HUAWEI MateDock 2 擴展塢同埋 HUAWEI 360 全景相機添!仲唔去出機? HUAWEI MateDock 2 擴展塢(左);HUAWEI 360 全景相機(右)。

亞洲萬里通花式兌換(四) │ 用單程里數換長途來回機票!假單程教學
旅遊情報
MO560・2019-07-14

亞洲萬里通花式兌換(四) │ 用47000里就可以兌換亞洲來回歐美紐機票!假單程教學 MO560 教你玩轉飛行里數 -------------------- 1. 簡介 這是亞洲萬里通標準賞的兌換表格,所有里數以單程計算。當我們用亞洲萬里通換機票時,就要付出一定數量的里數,而換機票的所需里數是以距離計算的。只要符合規則,不管你怎樣飛,所需要的里數都是一樣的! 今次花式兌換類似上次的Stopover香港教學,但今次的內容是關於長線旅遊﹝歐美紐﹞的兌換,長途的話可以把Stopover放在歐美城市,然後使用單程的里數就可以去兌換來回的機票!兌換出來的將會是一張「假裝單程,實際來回」的長途機票,文章最尾更有小編推介的「澳門換法」! 更多其他花式兌換,請留意Facebook更新Facebook: MO560 開始之前先簡單認識相關遊戲規則:1. 一張單程機票最多可以包含兩個航段2. 必須在出票日起353日內完成兩段飛行3. 如果涉及夥伴航空公司會貴一點4. 第六區間的總飛行距離7501+是沒有上限的 緊貼最新最潮澳門信用卡、飛行里數、旅遊資訊,記得讚好MO560的Facebook! 如想查看更多詳情,請到MO560的Facebook或Website查看。 -------------------- 2. 規則說明 如果你覺得以下內容有點複雜或你有其他疑問的話,可以在Facebook向小編查詢喔。 首先,你要有一個新概念:「香港-紐約-東京」是一張 香港-東京 的單程機票,你只是在紐約轉機和轉機時間有點長。 然後,進入正題之前,你一定要先認識一下國泰航空的合作夥伴:1. 寰宇一家 oneworld – 詳情2. 寰宇一家以外的合作夥伴 Q1: 為甚麼我要認識國泰的夥伴?A1: 因為今次的兌換教學是一定會用到夥伴航空公司的。 上圖是寰宇一家的成員 上圖是寰宇一家以外的合作夥伴 小編在Blog中已經整理了這些夥伴們的簡介和注意事項,有興趣的話請到MO560的Website中查看吧。 -------------------- 認識各位好朋友之後,就可以進入正題了:由於第六區間的總飛行距離7501+是沒有上限的,換言之不管你如何飛,7502里抑或15000里的距離,所需要的里數都是一樣的!例子如下: 1. 使用42000 Asia Miles兌換國泰│香港-紐約 8072里總飛行距離為8072里 (屬於第六區間) 2. 使用47000 Asia Miles兌換國泰│香港-紐約 8072里美航│紐約-東京 6745里總飛行距離為14816里 (屬於第六區間) 比較以上兩個例子已經可以發現!多加5000Asia Miles你就可以多加一張回程的長途機票!原因就是第六區間的總飛行距離7501+是沒有上限的,所以不管你要飛多遠,Miles收費都不變!只是因為有一程涉及夥伴航空公司所以里數收費由原本的42000變成47000。 Q2: 如何知道總飛行距離?A2: 使用GCMAP或在官網搜尋。如果你不清楚GCMAP的使用方法,可以在Facebook inbox小編查詢。 Q3: 為甚麼例子二是47000Miles?A3: 涉及夥伴航空公司所以里數收費會貴一點。 Q4: 可以來回香港點對點嗎?A4: 不可能,因為這樣就是來回機票了,國泰來回盛惠84000Asia Miles。 Q5: 有一程不到香港那要怎麼辦?A5: 看下面小編的兌換例子。 緊貼最新最潮澳門信用卡、飛行里數、旅遊資訊,記得讚好MO560的Facebook! 如想查看更多詳情,請到MO560的Facebook或Website查看。 -------------------- 3. 兌換例子 如果你覺得以下內容有點複雜或你有其他疑問的話,可以在Facebook向小編查詢喔。 以下是來回都在香港,並全部使用里數的換法,文章最尾亦有小編推介的「澳門換法」喔。 英國航空British Airways (BA) 作為oneworld成員之一的英航,顧名思義就是以英國倫敦作為樞紐的航空公司,所以倫敦是一個作為「假單程」的「目的地」的好地方,你要去倫敦的話英航絕對是一個配合「假單程」的好夥伴。 香港 來回 倫敦 │ 57000里 回程可以順便出境首爾 機票一 │ 紅色 │ 47000里2月15日 – 香港 – 倫敦 │ 國泰2月22日 – 倫敦 – 首爾 │ 英航總飛行距離為11514里 (屬於第六區間) 機票二 │ 藍色 │ 10000里2月26日 – 首爾 – 香港 │ 國泰可以再配一程Free One-Way! 你要去倫敦旅遊的話,第一程坐國泰從香港出發到倫敦後(下圖紅色),回程坐英航除了上面的首爾例子之外,還可以飛到以下的城市(下圖藍色):中國北京、上海、日本東京、大阪、泰國曼谷、馬來西亞吉隆坡、新加坡,然後再接駁回港澳。這些都是英航設有直航的目的地,透過它們便可以使用57000里兌換到來回倫敦的「假單程」! -------------------- 日本航空Japan Airlines (JL) 同樣作為oneworld成員之一的日航,服務一直都是一級棒!雖然日本不是一個長途的目的地,不過由於鄰近香港,所以它十分適合作為「假單程」的「終點」。除此之外,日航還可以填補大量「假單程」的城市! 喜愛日航的你可以選擇以下這些地方作為「假單程」的「目的地」:(下圖紅色)英國倫敦、法國巴黎、德國法蘭克福、加拿大溫哥華、美國三藩市、洛杉磯、芝加哥、波士頓、紐約、西雅圖。這些都是國泰和日航都設有直航的目的地,所以全部都是57000里就可以透過「假單程」兌換國泰+日航來回該「目的地」! 小編在Blog中已經整理了英航、芬航、美航、日航、馬航的兌換例子,有興趣的話請到MO560的Website中查看吧。 -------------------- 澳門換法 今次的「澳門換法」主要是運用LCC﹝廉航﹞或其他交通工具,從而避開香港從澳門出發/回來,並可以節省接駁「假單程」所需的10000里數,例如: (澳門換法)來回 赫爾辛基 │ 47000里 + HKD80* 回程可以順便出境廣州 機票一 │ 紅色 │ 47000里3月1日 – 香港 – 赫爾辛基 │ 芬航3月9日 – 赫爾辛基 – 廣州 │ 芬航總飛行距離為9635里 (屬於第六區間) 機票二 │ 藍色 │ HKD80*3月11日 – 廣州 – 澳門 │ 高鐵 *HKD$80為折算港幣後的高鐵票價。 小編在Blog中已經整理了好幾個澳門換法的兌換例子,有興趣的話請到MO560的Website中查看吧。 緊貼最新最潮澳門信用卡、飛行里數、旅遊資訊,記得讚好MO560的Facebook! 如想查看更多詳情,請到MO560的Facebook或Website查看。 -------------------- 喜歡小編的文章嗎?比個Like支持我啦 :) Facebook: MO560Instagram: mo560_travelWebsite: https://motravel.info 想追蹤最新最潮澳門信用卡、飛行里數、旅遊資訊?將MO560設定為 「搶先看/See First」!

如果把一款課金手遊當成單機speedrun遊戲玩會怎樣?
手機‧電玩
MacauYeah・2025-04-24

很久沒有介紹遊戲了,適逢最近有新的高達手遊推出,筆者親試下,遊戲整體還算不錯。所以打算就來個企畫,試試看用不同的方式去攻略這款遊戲。 以前的手遊玩不下去主要有幾點: 【農】味高,重要資源取得有限,有些需要週期性登入才能取得。登入取得資源,但過程又無聊;不登入又會浪費,多少有點壓力。 課金抽角色+練滿的金錢及時間成本極高,所以錯誤投資角色的成本就更高 所以最近筆者都鮮少有開始新手遊。這次的G世代,也是一款課金手遊,但為免陷入上述的困局當中,筆者就打算以研究Speedrun的角度去切入遊戲。即是不追求完美或者穩定通關的做法,只要本篇的能過關,越快過關越好。除此之外,Speedrun項目一般都會因為有公平性考量,在手遊上會禁止任何課金、什至是抽卡的做法,排除因為錢作怪,而非玩家的技巧。所以筆者也會跟隨這一方面的考量,除首抽可以選取特定的EX高達外,之後一律不會抽卡,即使有免費的抽卡卷或課金額,都不會抽卡。Speedrun也可以設定不同的比賽目標,例如限定從零到第一章結尾,並不一定要直到終章。目標一般會設定為可以重複為主。 這樣的做法可以讓自己免受前述情緒困境之中。 不需要為每日任務、完美過關的免費石而登入。想玩、有空玩時,再玩。 不需要為稀有角色的進一步團積它們的資源,因為它們的資源一般更難最得、更耗時間。 集中於本篇可以取得的機體,以不同的方式實驗不同的戰術效果,取代【農】的策略。 以推進本篇的主線為目標,而非收集角色為目標,也不是以平衝育成角色為目標。即使刪號重來也不心痛。 上圖為遊戲的第一、二、三章節 筆者經過零碎時間,剛通過了元祖本篇的章節,感受還不錯。筆者在開局,主要目標是選擇有【額外行動】、【支援攻擊】的機體為主,其次才考慮【支援反擊】、【支援防禦】的使用。當然這個遊戲推出時間還短,不同的機體取得時間上也有差異,筆者的策略絕對不是普偏的最優解。 上圖為開始攻略第二章所有在主線中取得的機體 如果各位讀者,覺得這個策略可以幫到你保持遊玩的好心情,就一齊來留言分享你的Speedrun策略吧。如果各位讀者想睇到更多關於這遊戲的策略更新,歡迎留言1212,讓筆者知道大家的期待。

Spring Data Jpa 自動化的選擇 - Code First
科技新知
MacauYeah・2025-01-22

Code First vs Database First 在早期SQL資料庫盛行的年代,在設計要使用資料庫儲存資料時,很經常遇到一個策略選擇的問題*Code First* vs *Database First* 這兩個策略的差異可能越來越講不清,筆者也找了一些現時網路上的講法。 Code First: 先從寫程式的角度出發,設計數據模型,再使用工具把你程式碼中的數據模型類(Class),生成一個對應用SQL資料庫的表(Table),自動編做好對應的數據結構(Schema)。這樣你在設計時,以程式設計為主導,方便熟悉程式的人使用。這常見於第一手開發設計,因為資料都是第一次收集和儲存,考慮收集程式的運作最為實際。 Database First: 先從SQL資料庫的儲存、取用資料的方式出發,先用SQL成生Table及Schema,再轉變成為程式碼中的數據模型。這樣的資料庫在日後作分析用途時,比較簡單易懂,方便使用熟悉SQL的人去使用。這也常見於二次開發程式,因為這樣可以確保不會錯誤地破壞原有資料庫。 那麼筆者為何講這兩個差異越來越講不清?那是因為現在的資料庫不能單純地只考慮初次或二次開發問題,而是需要考慮多個系統協調運行的問題。 多系統共享協定 - Database First 因為隨著資料系統發展,有些資料會作為數據源出現或用作共享媒界,如果一定要對設計策略作分類,在多系統協調運作下,這些應該叫使Database First。不論它們是SQL還是NoSQL資料庫,我們的程式碼都要為這個預先定義好的數據結構作出妥協。不論使用工具,還是人為分析,都要把共享的數據結構轉換成自己程式中的數據模型。 即使不是多系統協調運作,有時候因為要移植系統,但同時又要令兩個系統版本相容。新系統也是被逼使用Database First的方式設計。 自動化考量 - Code First 前述我們講到,很多時候我們也是從Database First的方式思考。不過筆者就這個Database First,也弄到滿身傷痕。 首先,拋開工具轉換的誤差,我們人為的把共享數據轉化為數據模型,共享數據有時會有一些先天的缺陷,例如: 資料沒有設計Primay Key (主鍵,唯一鍵)、日期時間的定義不明確等。面對一些意義不明的數據來源,要整合確實很要命。而且二次開發中,不可能100%重用原有的資料庫結構,很多時都會加入新的欄位或更多表格去計數。一旦加入新欄位,在團隊多人開發中,那麼使用唯一的共享開發環境,就變很易有程式碼上的衝突。 若需要多人開發,各人有一個Code First的開發用資料庫,是很必要的。這也可以在系統正式升級前,對比開發中資料庫及舊資料庫的結構,觀看它們之間的差異,評估升級的風險。 也許Code First並不是重點,重點是可以隨時建立一個測試用的資料庫,這才方便合作開發。自動化的地方,不單只限於數據結構,範例資料也該是如此。如果有維繫一個初始範例資料,可以在有需要時自動生成,對於多變的環境一定有很幫助。 現時,筆者基本上都會人為檢視資料庫,人工對照編寫程式中的資料結構(即是人工的Database First),並確保那時程式再次經自動化生成的測試用資料庫,並沒有失真(即是Code First)。至於範例資料,初期筆者也只使用SQL生成,但後期因為資料結構開始複雜,筆者也暫暫使用程式碼生成,雖然工作量會多了,但對於資料庫升級、品牌更換,這是很有效的手段,程式碼升級測試也更順暢,絕比SQL生成更易維護。 Ref - Code First vs Database First https://builtin.com/articles/code-first-vs-database-first-approach

【澳門深夜宵夜】行過路過別錯過>至潮火鍋店「SOAR花無椒」
專題報導
Lifemagfoodie・2019-10-23

週末閒來無事,心血來潮,突然想吃個辣,於是筆者就與友人選了一家酒吧風格的火鍋店 無錯,你沒有看錯,我也沒有寫錯,這的確是酒吧火鍋店。平常大家如果真的有路過,還真不一定會發現它是火鍋店。 那為何要選這家店呢?那就是因為它出名的酸菜魚啦 筆者本身對水煮魚、酸菜魚都特別愛好,而聞說這家的酸菜魚很有特色,很潮,所以早早就抽空來食食 來來來,先來個酸菜魚與水煮牛蛙湯 火鍋底 筆者一般情況下都只會點小辣,真的有條件、很好吃,才會叫中辣 而上面這個水煮牛蛙小辣,未會食到要流汗,everything under control。 不過味道一般,不知道是不是辣道不夠,還是辣的方式跟川菜不一樣,筆者沒有怎麼愛好。不難吃,但不會令我愛吃。 再來酸菜魚,就更加不辣,但反而令我想多吃幾口。 果然紅花雖好,也要綠葉扶持,酸菜魚在水煮牛蛙的相伴之下,特別好吃。 (其實是兩種辣的口感不一樣,其中一種刺激完味蕾之後,會對另一種口感產生變化作用) 最後介紹一個火鍋新花式:Magic 可能是筆者太大鄉里,一直沒見過這種設計。其實這個設計真的很有道理,平時吃火鍋,會長期有些食材消失了在鍋中,找不回來;就算能拿回來,也因為長期腌著,找到時也不好吃了。而這個上升金鍋設計,可以讓食材煮好後可以離開湯底,方便又快捷。型,真心型。 再來就叫了兩杯飲品,一杯香蕉奶,一杯雞尾酒 奶是用來解辣的,雞尾酒就是配合一下現場氣氛,辛苦一下調酒師拋拋杯,為我們調調酒。 總結評話: 1. 型:整體感覺新鮮,正常海鮮火鍋食得多,想換一下風格,可以試它 2. 味:不錯,辣不會難入口,不是死辣。有酸菜魚在調節水煮辣,就算不太能吃辣的朋友也可以嘗試。 3. 慢:可以選擇的菜色不多,上菜速度也慢,大家只能耐心等候 人均消費230 店名:SOAR 花無椒火鍋店 地址: * 澳門黑沙環東北大馬路南澳花園第一座地下IH舖 * 99078 Cheoc Ca Chün, Ilhas, Macau 試業時間: 18:00 - 00:00 營業時間可能會改變,想去的明友記得去它的FB page先問問 https://www.facebook.com/SOARHOTPOT/ 作者:兔寶

激平!康維他45°南島三葉草蜂蜜1000g 特價Mop179 (原價Mop299)
購物‧時裝
LifeMag Editor・2016-05-31

又有福利啦!澳門好幫手-購物平台(shopping.macaugoodhands.com)又推出新優惠啦!現在買 Comvita 康維他45°南島三葉草蜂蜜1000g 原價MOP299,現於「MGH購物」只售MOP179! 只要你嘗試過,這款蜜糖的滋味絕對讓你無法忘懷,來自新西蘭南緯45度的甜蜜體驗,濃香細膩,絲絲潤滑,只要打開蓋就可以令你驚喜重重! 男女老少均可飲用,助你美容養顏、清熱潤肺、鎮靜安眠、潤燥通便,小小一匙的蜂蜜擁有不簡單的營養,還有許多維生素,微量元素及酚類,健康維持又沒有負擔。康維他所採用的三葉草生長於新西蘭南島南部 (南緯45度) 的平原,遠離人煙,因此可生產出特別純淨、香甜的三葉草蜂蜜。 蜂蜜的功效: 潤燥通便 滋潤喉嚨 清熱潤肺 鎮靜安眠 改善肌膚乾燥 天然甜味劑 適合: 轉季 / 天氣乾燥期間 常在冷氣地方工作者 便秘人士 睡眠質素差的人士 容易疲倦的人士 Comvita是全球最大的UMF麥盧卡蜂蜜生產及銷售商,其所有蜂蜜產品絕對是品質保證。康維他的蜂蜜均有獨立測試實驗室進行測試,濃醇蜜香,不用擔心買到假蜜,我們知道你想要的都是最好的。 仲有咩理由唔買返去屋企享用呢?快d點擊以下鏈接搶購吧! ⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ 優惠一:Comvita 康維他45°南島三葉草蜂蜜1000g 原價MOP299 商城價MOP179 立即搶購 優惠二:Comvita 康維他45°南島三葉草蜂蜜500g+Leed麗的化妝棉 原價MOP214 商城價MOP209 立即搶購

【Macau Best】食肉獸最愛,5間澳門高質燒肉店推介!
生活在我城
Lifemagfoodie・2020-08-23

有時候晚餐想食得盡興,燒肉就是最佳選擇!沒有什麼比一口肉,一口啤酒來得暢快!去吃燒肉最看重就是肉的質感和口感,以下為大家推介5間澳門高質烤肉店,快點來試下吧。 阿里郎 相信大家對阿里郎都不陌生,它是澳門最悠久的韓國餐廳之一!經過重新裝修後,環境更舒適寬敞。小編已光顧很多年了,每次一入坐都會送上很多餐前小菜, 非常開胃!無論是烤肉或是主菜都非常正宗有水準,燒肉的質感和價位相若,還會有專人幫你燒好,避免自己燒得太老的情況!除了燒肉是必點外,泡菜湯和辣炒年糕亦非常推介,它們的調味非常適中,辣度很夠,香口好下飯。 阿里郎 地址:氹仔馬拉松圓形地45號美景花園第三座美景閣地下W座 電話:2883 5562 爀樂燒肉 位於銀河Broadway的人氣日式燒肉店,長期Full booking,高峰期要提早1個月訂位!它的價位亦相對較高,所以午市比較抵食!因為會有套餐包括湯、白飯、一份肉,還有甜品。主打是日本和牛,所以雞肉、豬肉相對沒有這麼出色。和牛入口即溶,配上白飯驚為天人! 圖片來源:爀樂燒肉Facebook 圖片來源:爀樂燒肉Facebook 圖片來源: e.c foodie 圖片來源: e.c foodie 圖片來源: e.c foodie 爀樂燒肉 地址:百老匯美食街, H-G006-G011 電話:2899 1106 叢林 極尚海陸燒烤放題 這間任食烤肉亦是長期滿座!CP值非常高,款式非常多,光是選牛肉就已經開始選擇困難了。雖然是任食,但是它們亦非常注重肉的質量,調味亦控制得很好!食材非常新鮮!它們亦有一個特別的環節,就是大頭蝦可以自己夾自己燒,蝦的鮮味十足!另外,它的炸芝士年糕味道非常特別,裹面是流心的芝士!在外面比較少吃到這種年糕,喜歡芝士的朋友必試! 圖片來源:叢林Facebook 圖片來源:叢林Facebook 圖片來源:叢林Facebook 叢林 極尚海陸燒烤放題 地址:漁翁街486號亨達大廈地下AC鋪 電話:6331 8883 澳門新麻蒲韓國烤肉店 澳門新麻蒲韓國烤肉店是一間韓式烤肉連鎖店,它們的食材和醬汁亦是由韓國空運過來,非常有範模。而且烤肉爐旁邊的會有烤蛋,和烤肉非常配。推介它們的牛肉二人套餐,肉質可口!另外,還會包括大醬湯和壽司,非常豐富抵食。特別推薦它們的飯團,可以自己搓成飯團球!味道和韓國吃的一樣,喜歡飯團的朋友不妨試一試! 圖片來源:Openrice 圖片來源:Openrice 澳門新麻蒲韓國烤肉店 地址:澳門筷子基船澳街海擎天第三座地下O號舖96號 電話:2823 4012 「宴」刺身烤肉 這間日式烤肉店就在氹仔中央公園附近,非常好找!它的和牛套餐非常抵食,包括不同的牛部位,還會配蔬菜,是非常高質的日本烤肉口感!它們除了烤肉外,菜色選擇很整全。刺身、壽司、飯麵類、甚至是下酒菜都有很多款式。而且亦有味道保證,小編基本上沒有試過踩雷的菜式。 圖片來源:「宴」刺身烤肉Facebook 圖片來源:「宴」刺身烤肉Facebook 「宴」烤肉 X 刺身 地址:氹仔成都街343-351號濠景花園第21-23座Shop B地舖 電話:2875 0560 作者:Cher 更多文章推薦: 【Macau Best】一麵入魂!心水推介,澳門精選4間拉麵店! 【一日實習生】【澳門情懷】傳統好味道,超過80歷史的老字號,禮記雪糕 【Macau Best】健康飲食無難度!澳門5間必試沙律店推介

【Macau Best】夏天透心涼,澳門特人氣雪糕店!
澳城餐飲
Lifemagfoodie・2020-07-17

又到了最適合吃雪糕的季節,在汗流浹背的天氣,吃著冰涼的雪糕,最能消暑降溫!以下小編為大家介紹5間澳門特色人氣雪糕店,一起去試一試吧! Kika 圖片來源:Openrice 圖片來源:Openrice Kika 是一間日本人開的手工雪糕店,更譽獲米芝蓮推介,味道質量有保證!雪糕口味選擇很多,其中人氣抹茶口味更有分四個濃度,給喜愛抹茶的朋友多種選擇!另外,它們亦有很多特色口味像是櫻花味、豆腐味、沖繩海鹽。小編私心喜歡豆腐味和柚子味,非常清新。 Kika 地址: 澳門大堂巷11號 更多資訊:https://www.facebook.com/kikagelato/ 禮記 圖片來源:Openrice 圖片來源:Openrice 禮記雪糕是澳門最傳統的雪糕老店,至今已有80年歷史,第三代經營,仍然保持以往的特色味道。它們有幾樣特色雪糕都是每次去必點的,像是雪糕磚或是雪糕三明治。雪糕磚推薦椰子口味,口感非常特別,厚實有質感!另外,小編還很喜歡它們的花生雪糕,花生味非常濃郁但又不會很甜,童年的味道。 禮記 地址:荷蘭園大馬路12號地下 更多資訊:https://laikei-icecream.com 莫義記 莫義記亦是澳門不可錯過的經典老店之一,有非常多的傳統甜品,味道都相當有保證!今次就要介紹它們的榴連雪糕,每次經過官也街必食!它的口感順滑得來不會很甜,榴蓮味也很清香。它們亦推出了貓山王榴蓮雪糕,但是價錢是普通的2倍。榴蓮超級愛好者不妨試一試。 圖片來源:Openrice 圖片來源:Openrice 莫義記 地址: 氹仔官也街9號A舖 更多資訊:https://www.facebook.com/pages/category/Dessert-Shop/莫義記-1450196238531719/ 檸檬車露 圖片來源:Openrice 圖片來源:Openrice 檸檬車露是澳門極多人推薦的意大利手拉雪糕店,它的招牌Lemon Cello非常經典,深受大眾喜愛。檸檬味很清新,但不會過酸。小編亦非喜歡它的紅蕃石榴, 有一種淡淡的甜味,保留水果的原味道!它的雪芭質感非常幼滑,鮮果含量更達8成,比起一般奶味雪糕更消暑,夏天必食! Lemon Cello 地址: 地堡街店:氹仔地堡街115號J鋪 主教巷店:澳門主教巷6-A號地下 銀河店:澳門銀河渡假城地下商戶 高士德店:澳門高士德大馬路53號E座地鋪 更多資訊:https://www.lemoncello.com.mo DiGreen滴果林 圖片來源:Openrice 圖片來源:Openrice DiGreen滴果林是澳門比較新派的雪糕店,主打低糖無添加。它經常推出一些特別的口味,非常有本地特色。它們之前就推出了期間限定的芫茜雪糕,出奇地清新好吃。另外,它們亦有一款焦糖蛋竹碳脆筒,把焦糖布蕾做成雪糕,創意十足! DiGreen滴果林 地址: 澳門店:賈伯樂提督街43號永聯大廈 (培正鮨味亭對面) 新濠影匯店:購物大道二樓2073號 新濠天地店:SOHO蘇濠 更多資訊:https://www.facebook.com/DigreenMacau/posts/2008584789270798/ 延伸閱讀: 【Macau Best】品嘗地道美食,澳門人氣必食之選! 【Macau Best】一試令你回味無窮,5間必試地道薄餅推介! 【Macau Best】甜到入心!澳門5間糖水鋪大推薦

【澳門必飲手搖】鮮奶的絕配!一芳黑糖粉圓鮮奶
澳城餐飲
Chrysalids 少爺・2018-08-28

鍾意飲手搖的澳門朋友,一定不會對位於澳門水坑尾的一芳台灣水果茶感到陌生。最初少爺見到一芳台灣水果茶招牌寫著「水果茶」三個字,心思思想點一芳台灣水果茶的水果茶,但隨行的公主卻推薦一芳黑糖粉圓鮮奶;再加上少爺最近愛上飲鮮奶,所以決定要試一芳台灣水果茶的黑糖粉圓鮮奶。 澳門除了三盞燈出名多著名手搖飲品店之外,水坑尾近麥當勞亦有為數不少的手搖飲品店。可惜的是,一芳在水坑尾分店的位置卻不是在水坑尾巴士站附近。 一芳台灣水果茶店舖 行人落巴士後,要行大約30秒的路程才能到達不太顯眼的一芳台灣水果茶。對於那些對澳門道路不太熟悉的行人來說,可能要花一點心思才能察覺到一芳的存在。可能是因為這個原因,少爺當日並沒有見到長長的排隊人龍,亦不用花太多等候時間,便可以領取一芳黑糖粉圓鮮奶。 一芳台灣水果茶的地理位置 坐標:22.193360,113.543041 地址:澳門美麗街31A號祐好大廈地下C座 電話:(853) 2855﹣3903 巴士路線:M144 水坑尾街﹣2,2A,5,7A,8,9,9A,12,16,22,25,25X,N2 圖片來源:Google Map 一芳黑糖粉圓鮮奶有分大杯和中杯,分別是 34 元和 27 元澳門幣。甜度是固定不能改變的,但冰度方面,少爺記得當時是可以選擇冰的份量,但下面的價錢牌上卻寫冰度是固定的,好奇怪,可能是少爺記錯吧?!最後少爺選擇了中杯的一芳黑糖粉圓鮮奶,如果無記錯的話,應該是微冰。 一芳黑糖粉圓鮮奶價錢 首先,一芳會提供兩款不同大小的手搖尺寸選擇,這種生意手法很好。不同大小可以迎合不同人士的需要,收入也會有所提升。一芳中杯的手搖尺寸,比起近期開設在三盞燈大熱的那間手搖店還要更加大杯,價錢也相對便宜。其次就是手搖價錢,27 元澳門幣一杯中杯手搖是相當便宜,絕對值得一試。 不得不提的是一芳黑糖粉圓鮮奶的味道。鮮奶的味道很普通,就是那種在超級巿場內都可以買得到的某牌子盒裝鮮奶。雖然鮮奶平平無奇,但令少爺為之興奮的卻是黑糖粉圓。少爺終於發現,與鮮奶最佳的配搭就是細細粒、容易嘴嚼、質感柔軟的黑糖粉圓。因為粉圓完全不彈牙,也不滑溜溜,所以完全不用擔心會卡在喉嚨,小朋友也大可放心慢慢飲用。 一芳台灣水果茶﹣黑糖粉圓鮮奶 少爺覺得鮮奶和黑糖粉圓的匹配度就好像牛郎和織女、羅密歐和茱麗葉、梁山伯和祝英台般那麼合襯。平平無奇的鮮奶,配上在家中也可以烹煮的黑糖粉圓,兩者相結合,居然會產生令人難忘的化學反應,令少爺感到相當意外。 一芳台灣水果茶在澳門已經有一段相當長的日子,在手搖界也有一定的知名度。無論您是手搖控,或者是鮮奶控,絕對值得一試一芳黑糖粉圓鮮奶。粉圓不但細小,而且咬下去很柔軟;雖然不彈牙,也不滑溜溜,但勝在容易咬嚼,所以不用花費太多牙力嘴嚼便可以安心吞下,非常適合只想好好享想手搖味道的朋友。倘若您和少爺一樣,不太喜歡嘴嚼香口膠那種咬口感的話,更加要一試,保證一試便會慢慢喜歡一芳黑糖粉圓鮮奶。 一芳黑糖粉圓鮮奶 延伸閱讀: 【澳門人的回憶】颱風「天鴿」襲澳一周年 【避險須知】澳門避險中心﹣塔石體育館 【澳門必去熱點】菠蘿控的天堂!澳門旅遊塔菠蘿夏日派對 【澳門隱世美食】不可不試!連勝街《泰友麵》海南雞髀飯

和愛的人一起分享Pierre Hermé:馬卡龍中的愛馬仕
專題報導
澳門舟周刊MACAU・2016-03-08

和愛人在一起,每天都是情人節,不一定只有愛馬仕才能表達愛意,還可以和愛的人分享可愛的小圓餅Pierre Hermé,一起沉浸在甜蜜喜悦當中。本期周刊介紹了新濠影匯新開的甜品店Pierre Hermé-馬卡龍中的愛馬仕。 馬卡龍Macaron這玩意可謂甲之蜜桃,乙之蜜蜂啊,還記得我第一次吃Macaron,還在讀書,在澳門新濠天地的Café用幾天的飯錢買了一盒,想一品這少女之酥胸,點知就是一陣糖霜化在口中,雖也是入口即溶,卻令人不想回味呀。 後來Macaron漸漸在港澳風靡起來,但感覺也是一陣糖霜吹過,激不起愛的漣漪,就連大名鼎鼎的The Laudrée也無法讓我愛上Macaron,感覺還是偏甜,而且口感層次不夠豐富。 但The Laudrée還是有其可取之處,除了Macaron,還把其Café從巴黎搬來,讓朝聖少女可以不再遠赴巴黎,也可以體驗一下法式風情,還和日本知名化妝品牌Albion(健康水她家)跨界合作推出化妝品,一俘少女的芳心。 就在我以為這輩子和Macaron沒有緣分的時候,澳門新開的新濠影匯迎來了Pierre Hermé,聽這名字就知道她不同凡響,還Herme,難道真的是Macaron中的Hermès嗎? 馬卡龍界的少女皆知,Pierre Hermé被Vogue雜誌譽為“甜點界的畢加索”,“以優質的材料,秉承法式高級糕點一絲不苟的製作傳統,加入細膩跳脫的獨特創意Haute Patisserie以嶄新的面貌呈現,他於1997年創立PierreHermé Paris,現於全球10個國家及地區開設分店”(摘自新濠影匯官網)。 周舟慚愧,對畢加索了解不多,但憑著對愛馬仕的了解和信心,決定買一顆來試試,就指著一顆跟店員說“給我包起來”,店員愕然“一盒十二個,沒有單賣的”,想想一盒MOP320元,萬一難吃,豈不虧大,離開Pierre Hermé心情如畢加索的名畫《夢》一样。 事隔一個月,有老友訪澳,周舟去新濠影匯一盡地主之誼,經過Pierre Hermé時想想老友來一趟不容易,應該和她試試新野,就買了一盒,帶著少女雀躍的心情和老友和老伴一起分享了這可愛的小圓餅。 第一顆吃的是玫瑰味兒,感覺像打開了潘多拉的盒子,一口一口吃到憂愁停不下來,甜而不膩,口感酥脆,層次分明,關鍵是玫瑰味香味四溢,一親芳澤后口齒留香,餘韻猶存,給人一種繞樑三日不絕於耳的感覺。 其他口味也是給人一種“我只想要一陣春風,你卻給了我整個春天”的感覺,推薦第一次試的話,可以嘗試“玫瑰花瓣”,“茉莉花”,“榛子果仁”,“熱情果橙醬忌廉”等讓人耳目一新,口齒留香的口味。 老伴向來不好甜食,但是PierreHermé讓他一改“Macaron就是死甜”的糟糕印象,真是“讓男人都愛上的馬卡龍”。不一定只有愛馬仕才能表達爱意,還可以和愛的人分享可愛的小圓餅Pierre Hermé,一起沉浸在甜蜜喜悦當中。 地址:新濠影滙購物大道一樓1081號 電話:(853) 8865 3450 價格:MOP320(12顆)齊備所有味道! 泊車:消費一百蚊,免費三小時! 停車場入庫:正面進去,看到P標誌,有人指引 周舟到訪時間:2016年1月31日 掃描二維碼,關注澳門最具態度的旅遊和生活方式周刊 本文章所有圖片來自品牌官網 文字皆為原創 如需轉載請聯繫微信:JOMACAU853 歡迎讀者轉發和點讚!

亞洲萬里通花式兌換(三) │ 每10000里就有兩張機票!Free One-Way教學
旅遊情報
MO560・2019-06-22

亞洲萬里通花式兌換(三) │ 每10000里都是兩張亞洲單程機票!Free One-Way教學 MO560 教你玩轉飛行里數 -------------------- 1. 簡介 這是亞洲萬里通標準賞的兌換表格,所有里數以單程計算。當我們用亞洲萬里通換機票時,就要付出一定數量的里數,而換機票的所需里數是以距離計算的。只要符合規則,不管你怎樣飛,所需要的里數都是一樣的! 今次花式兌換類似前兩次的Stopover教學,不同的是今次會教大家把香港當作兩次旅程之間的連接,從而使每10000里就有兩張短途單程機票,運用單程機票自製來回並一直無限延伸,亦稱「Free One-Way」。文章最尾更有小編推介的「澳門換法」! 更多其他花式兌換,請留意Facebook更新Facebook: MO560 開始之前先簡單認識相關遊戲規則:1. 來回機票可以理解為兩張單程機票2. 一張單程機票最多可以包含兩個航段3. 必須在出票日起353日內完成兩段飛行4. 如果涉及夥伴航空公司會貴一點 緊貼最新最潮澳門信用卡、飛行里數、旅遊資訊,記得讚好MO560的Facebook! 如想查看更多詳情,請到MO560的Facebook或Website查看。 -------------------- 2. 規則說明 如果你覺得以下內容有點複雜或你有其他疑問的話,可以在Facebook向小編查詢喔。 首先,你要有一個新概念:「東京-香港-台北」是一張 東京-台北 的單程機票,你只是在香港轉機和轉機時間有點長。 然後,你要選擇兩個國泰自己經營的亞洲航點,由於10000 Asia Miles可以兌換到總飛行距離不超過2750里的兩個航段,所以兩個國泰航點的總飛行距離都必需在範圍內,例子如下:使用10000 Asia Miles兌換東京-香港 1842里香港-台北 501里總飛行距離為2343里 (屬於第二區間) Q: 如何知道總飛行距離?A: 請到MO560的Website查看。 里數新手可能已經滿頭問號,所以小編以下先簡單說明,再進入兌換例子。A、B、C可以是任何符合條件的地方1. A – HK – B │ 10000里2. B – HK – C │ 10000里 由此可見,每10000里就有兩張短途單程機票,使用20000里就有四張,運用單程機票自製來回,組合起來就是0.5+1+0.5趟旅程﹝注意不是2趟旅程喔!因為A和C是100%不可能組成來回的!﹞。 A和C只有單程所以是0.5,而中間的B可以組成來回所以是1,最後的0.5可以一直無限延伸,因為以後會兌換C-HK-D,D-HK-E…FGHIJK…的單程,每次兌換都是承接上次的0.5,然後再留下一條尾巴,這條尾巴是為下一次旅行鋪路的,這種花式兌換亦稱為「Free One-Way」。 緊貼最新最潮澳門信用卡、飛行里數、旅遊資訊,記得讚好MO560的Facebook! 如想查看更多詳情,請到MO560的Facebook或Website查看。 -------------------- 3. 兌換例子 如果你覺得以下內容有點複雜或你有其他疑問的話,可以在Facebook向小編查詢喔。 以下是來回都在香港,並全部使用里數的換法,文章最尾亦有小編推介的「澳門換法」喔。 來回大阪(1) 送單程沖繩(0.5)20000里 機票一 │ 10000里3月2日 – 香港 – 大阪 機票二 │ 10000里3月8日 – 大阪 – 香港藍色 │ 9月11日 – 香港 – 沖繩總飛行距離為2445里 (屬於第二區間) -------------------- 相信聰明的MO560讀者s已經發現了,當你兌換上次Free One-Way的回程機票時,還可以再多加一段再下次的去程機票,永遠不停地製造結尾的Free One-Way,「每次兌換都是承接上次的0.5,然後再留下一條尾巴,這條尾巴是為下一次旅行鋪路的。」重覆剛才的例子,多加一程的話就會變成: 大阪(1)+沖繩(1)+新加坡(0.5)30000里 機票一 │ 10000里3月2日 – 香港 – 大阪 機票二 │ 10000里3月8日 – 大阪 – 香港9月11日 – 香港 – 沖繩總飛行距離為2445里 (屬於第二區間) 機票三 │ 10000里9月17日 – 沖繩 – 香港藍色 │ 10月1日 – 香港 – 新加坡總飛行距離為2494里 (屬於第二區間) 「Free One-Way」從此無限延伸!每增加10000里就可以多一個旅行! 小編在Blog中已經幫大家整理了另一個兌換例子,北京(1)+檳城(1)+濟洲(0.5),詳情請轉到MO560的Website中查看。 -------------------- 另外,第一區間﹝總飛行距離1-750里﹞的城市也可以靈活運用的,特別是你想節省一點里數的時候。因為第一區間只需要7500里去兌換,很適合作為Free One-Way的起點,或者替Free One-Way作收尾。同樣地,行程中間每增加10000里就可以多一個旅行。 峴港(1)+札幌(1)+台北(1)35000里 兌換詳情請轉到MO560的Website中查看 -------------------- 澳門換法 今次的「澳門換法」主要是運用LCC﹝廉航﹞,從而避開香港從澳門出發/回來,並可以節省Free One-Way頭尾的7500/10000里數,例如: (澳門換法) 首爾(1)+福岡(1)+布吉(1)20000里 + HKD$1000* 機票一 │ 藍色 │ HKD500*4月10日 – 澳門 – 首爾 機票二 │ 紅色 │ 10000里4月15日 – 首爾 – 香港8月3日 – 香港 – 福岡總飛行距離為2556里 (屬於第二區間) 機票三 │ 紅色 │ 10000里8月9日 – 福岡 – 香港11月2日 – 香港 – 布吉總飛行距離為2697里 (屬於第二區間) 機票四 │ 綠色 │ HKD500*11月6日 – 布吉 – 澳門 同樣地,以上只是個例子,你可以在中間加插大量的行程,行程中間每增加10000里就可以多一個旅行。 除了布吉和首爾,還有很多適合買澳門單程機票的地方,例如台北、台中、高雄、馬尼拉、曼谷、釜山、濟洲、吉隆坡、新加坡、清邁、宿霧,以及一堆中國大陸的航點。實在太多了,小編以後再整理一個list吧!詳情請留意Facebook更新。Facebook: MO560 *HKD$500為單程機票最低價時的參考價。 緊貼最新最潮澳門信用卡、飛行里數、旅遊資訊,記得讚好MO560的Facebook! 如想查看更多詳情,請到MO560的Facebook或Website查看。 -------------------- 喜歡小編的文章嗎?比個Like支持我啦 :) Facebook: MO560Instagram: mo560_travelWebsite: https://motravel.info 想追蹤最新最潮澳門信用卡、飛行里數、旅遊資訊?將MO560設定為 「搶先看/See First」!