搜尋

搜尋結果

SpringBoot05 - httpjsonapi
科技新知
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框架會自行把登入者輸入的密碼與加密了的密碼作比較。

202471-77
玄學星相
熊神進・2024-06-30

一周生肖运程预测 鼠:今个星期事业可能会有转变,所以属鼠的朋友应该主动求变去增旺自己的运势;你可以在工作之余的时间找一些新东西学习,又或者尝试其它的工作;对于职位已经不甚稳定的朋友更要加倍留意,主动求变可令你的运势增强。财运亨通,你努力完成订下的业务目标,只要保持善念及正能力,业务发展自必有神助。身体很健康,心灵也很快乐。 牛:有五黄煞入命,同时比肩之日,气场不吉,需要注意休息和睡眠,避免身体产生疾病或者血光之灾,今个星期不适宜外出旅游或者游山玩水,最好能避开危险性质的工作或者项目,安全为上,不可冒险。财运方面,容易有好坏两个情况,投资需要谨慎为上。为家庭、亲人或房子牵挂,油漆美化、修缮收纳、社交联谊破费,所得变动不大。爱情是单身公害恐惧症。 虎:本周应该多出去旅游或者是走动,这样也有助于提升个人的运势。桃花运不错,随着交际圈扩大而认识更多优秀的异性,宜把握住机会争取脱单。已婚或已有伴侣的你要异性保持距离,以免不必要的肢体亲近接触,令你的伴侣感到不好受。你对工作一丝不苟,务实而真诚,让客户对你留下良好印象。放工后应多留在家里休息,拥有更佳精神状态方能使工作顺利。 兔:运势再度攀升,受到「福德」的加持,各项运势都有极强的表现,尤其在感情运势上。如身体不健康的朋友,建议请一件「化病葫芦」开运吉祥物助身,放在床头以保平安。今星期的财运方面体现在生活上,小心跟人发生一些碰撞,有失财的可能,要多留意随身物品。幸运号码是1, 11号。 龙:本星期有凶星入命宫,可能会有一些突然发生的状况,避免受伤,需要多多注意,做事之前也要谨慎小心。如果去郊外, 请穿长裤保护自己。感情运中无桃花,夫妻不冲不克,不会影响双方之间的关系。只要相互凉解,避免发生纠纷,无需再自寻烦恼,未婚属龙人士尽量争取,建议摆放「心意雨花石」开运吉祥物,旺婚姻招桃花,有利于增强感情。 蛇:未来两三个星期虽仍有挫折,但已渐能降低损害,找出有利突破点,并一一兑现承诺。中长期远景看好,值得为自己一路捱过来而感到自豪。爱情是一种幸福交易。表面看上去财运似乎不错,但不义之财千万不能取,凡事小心谨慎,因为多半会因财招灾,一不小心就会有法律方面的麻烦出现,甚至可能会招致牢狱官灾。 马:今个星期会有自寻烦恼,自作自受的情况。故遇到问题或困难时,不要钻牛角尖,多向专家及有能力的请教,胜过自己独坐苦思。2002年出生的生肖马尤其需要调和心绪,避免因为个人原因而耽误一切工作事宜的进展,拖团队后腿,也会让你的上司对你有不满,阻碍事业发展。幸运数字是0,2号。晚上如果有空,请做一次烧供。 羊:今个星期抵抗力会比较弱,所以病痛自然会多,但如果平日健康没有太大问题的话只需要注意养生之道就可以了。对于单身人士,有机会展现自己的魅力,在团体活动、或朋友的撮合引介下,可以促进你的机缘。能够认识交心对象时,也要懂得把握时机,若能够彼此真心对待,也将会成就良好姻缘。 猴:工作、事业运势较差,会有人、事上的纷争,应息事宁人,以免官司临身。还有就是人际关系方面,要注意口舌之争,不能轻易和别人发生争吵,会影响到你们的情绪。要注意饮食健康以及少抽烟喝酒,多到空气好的地方旅游这样可以有一个好的身体来开创你的新的征程。幸运吉祥物是门冲石。 鸡:由于本周桃花太旺,应该注意感情纠葛而出现三角恋爱之关系而导致感情破裂家庭不稳之事情。要注意保重身体。小心因为感情问题惹祸上身。健康方面,因有「伏尸星」出现,故此属鸡的人必须密切注意身体健康,并要小必留意家居安全,请记住平安二字值千金。吉利方位:西南方、正东方、西北方。 狗:因命宫中有众多的吉星拱照,在运程上会大有起色。有桃花星及红鸾星入命,故未婚者会有机遇,已婚者则要小心谨慎,约束自己的言行了。本周要特别注意交通安全,如有不慎易引发血光之灾。感情方面矛盾重重,应互相体谅包容。对于男孩子家长要看护好眼睛,多吃温性食物,电视、电脑等伤眼的电器最好让孩子少玩。感情吉位:东南、正西。 猪:在这个星期的压力会很大,这会让你们的心情变得焦躁不安,从而老是想要向别人发泄你们的脾气,这就会让你们的家人朋友感到困恼,你们的朋友也会慢慢疏远你们,对你们的人际关系会有很大的影响,所以你们一定要注意调节你们的压力,不能够无形给自己太大的压力,可以的话你们和家人一起出去旅游多看看大自然,能够让你们能够保持愉悦的心情。

澳城餐飲
Cheers!・2024-06-28

夏天就係食芒果嘅季節!今期小編就推介澳門嘅芒果系列比大家!芒果迷嘅你一定唔可以錯過! 特式糖水舖 呢間一定好多人都知!係夜晚先開嘅佢都好多人排隊!佢嘅粒粒芒椰系列係鎮店之寶,好多人都叫!不過大家記得佢夜晚先開呀! 粒粒芒椰小丸子 招牌楊枝金撈小丸子 地址:筷子基南街綠楊花園第三座Q舖 糖朝盛世 呢間係澳門都好出名!不過最近佢嘅開心果芒果班戟比較多人食!佢喺開心果味嘅cream同新鮮芒果嘅配搭!鐘意煙韌口感嘅仲可以叫QQ版嘅開心果芒果班戟(加麻糬)!鐘意開心果同芒果嘅人一定會好鐘意呢款甜品! 開心果芒果班戟 開心果芒果QQ班戟 地址: 澳門:渡船街美心餅店對面、關閘信託花園、墨山街41號堂食店(永樂戲院巴士站對面直入) 氹仔:氹仔泉鴻花園堂食店(新濠鋒酒店對面) 雍記甜品 如果鐘意食糯米糍嘅人就一定要試下雍記甜品嘅芒果糯米糍!除左普通嘅芒果糯米糍之外,仲有芒果汁皮糯米糍,更加有芒果香!大大粒芒果比糯米皮包裹,一口咬落去真係好滿足! 芒果糯米糍 芒果汁皮糯米糍 地址: 澳門:亞豐素街分店、祐漢店、雅廉訪分店 氹仔:氹仔分店 Roro Eatology 鍋鍋食研 呢間嘅水果三文治系列睇落去好吸引!想食創新嘅芒果甜品?其中嘅朱古力椰香芒果味都好岩鐘意食芒果嘅你!佢仲有分大細size,岩曬想食少少嘅小鳥胃 XD 朱古力椰香芒果三文治 地址:澳門大纜巷富耀樓9-A地下鋪 Merci.creation 呢間出名水果馬卡龍!真係好創新!想食馬卡龍又想食芒果可以試下佢嘅「夏日芒果馬卡龍」!中間夾住嘅係新鮮嘅芒果肉!齋食馬卡龍會覺得膩,但如果有鮮果中和就岩岩好! 夏日芒果馬卡龍 地址:墨山街聯安大廈地下36AB(永樂附近) 麥當勞 為左宣傳《壞蛋獎門人4》電影上映,最近麥當勞都出左芒果系列!包括芒果Oreo麥旋風、McCafe嘅Double芒果冰雪!而甜品站就有雙重芒果新地同芒果新地筒! 芒果Oreo麥旋風 Double芒果冰雪 芒果新地&芒果新地筒 今期嘅芒果系列推介希望大家鐘意!有咁多唔同嘅芒果甜品選擇真係好正!不坊可以試哂佢!如果仲有其他大家鐘意嘅芒果系列大家都可以同小編分享架! *以上圖片來源至商家網站

?
小城角落
MacauYeah・2024-06-28

珠海半小時車程一家大小可以去邊玩? 緊係要試上年新開今年初營業的珠海毛林金灣大酒店!!! 筆者聞說友人極推位於大灣區半小時車程新開的大酒店,內有中小童足夠喪玩的兒童遊樂城及冰雪運動城,酒店對面就是金灣華發商者,所以筆者當然要找個周末一家人上去放鬆一下。 國內酒店很方便,可以網購或找澳門旅行社訂都十分優惠,筆者比價後選擇了向本澳某大旅行社代訂兩天一夜套票,價格1,000澳門元,不過筆者揀咗車車主題房所以要再加多500澳門元。 雙人套票:包括早餐、兒童遊樂城、冰雪運動城、泳池及健身。 筆者訂購的是周五連周六(公眾假期)的兩天一夜套票,下午才可check in 酒店,但可於11:00後便可入場玩。筆者只有澳腳北上,所以過關後就直接約順風車,約40分鐘直達珠海毛林金灣大酒店。一到酒店,望落豪華的大堂大到呢…..應該有大半個足球場咁大 由於筆者的小朋友還嫰,當然係先去兒童遊樂城探個究竟先啦,一入到場,職員會俾廿個遊戲幣俾客人,但原來幣仲可以用黎夾公仔!!!正呀! 而場內所有遊玩設施都係免費任玩!!即刻沖入去睇吓: 場內樓高兩層: 下層有適合細B玩的大型波波池、迷你飄流、各式電動車、撈魚同積木等等;旁邊仲有岩大人玩的VR 遊戲!而另一邊仲有好多適合中童的大運動攀爬設施! 上層有其他電動遊戲、電動車、迷你war game場、當然唔少得各式玩具同零食夾夾機同小食區! 小朋友真係玩到樂而忘返,到咗晚飯時候當然要同佢講明天仲可以繼續玩先肯乖乖離開。 返到酒店房,唔洗多講一睇間房,嫰B十分喜歡嘩了幾聲,房間清潔,設備齊全仲備有兒童清洗用品,場內仲設有小帳幕同窗外望到開洋的美景。 房間隔音十分好,大家安睡一夜後,翌日先去嘆個自助早餐先! 同澳門五星級酒店有得揮喎,食物多,干淨服務不錯! 食飽轉場去冰雪運動城…… 場內有夠哂玩的仿雪滑梯 雖然哩兩日都十分大雨,幸好哩間酒店內有齊所有娛樂設施,大家都玩得十分滿足,總結哩個行程,性價比高! 溫馨提示:筆者首日同翌日入場的感受有好大差別,首日周五場內冇乜人,干淨安全不用排隊,但翌日是公眾假期,人山人海呀!!!所以雖是新酒店,但係內地玩都係要揀D冇咁多人的時間去比較輕鬆。 最後補充吓套票包咩,套票錢已包括酒店內所有設施,大家可盡情暢玩,但值得注意的是像我們一家三口,即多了一個人需要加購早餐及各場所入場門票。加購規則如下: 早餐:入住客人現場加訂早餐,獲門市價的8折(135人民幣/位(大小同價);身高1.2米以下小童免費,每一位成人限帶一名免費小童; 冰雪運動城:199人民幣/位大人,159人民幣/位小童,大人及小童必需穿帶指定裝備入場,裝備免費提供,但需付押金,離場後退回; 兒童遊樂城:79人民幣/位大人,99人民幣/位兒童; 備註:未滿18歲為兒童,18歲以上為成人,1歲以下免費入園,12歲以下兒童必須由一名成人陪同; 套票內包含的是2位成人門票,如入住時2大1小,小童需要現場加購小童價格的門票。 慳錢TIPS: 筆者獲酒店櫃檯職員告知雙人套票包的入場之手帶其實冇分大人定小童,持手帶便可入場,因此筆者帶同年僅兩岁的幼兒入場時,只加購了一張成人陪同票(成人票比兒童票便宜哦)

宗教玄學
熊神進・2024-06-25

#为什么女生喜欢佩带玛瑙手串 一位网红留言给笔者,她说自从请了笔者的开光玛瑙手串,她接了很多大客户,生意翻倍,笔者请她多些做烟供,布施三恶道。 笔者留意到在国内很多年青姑娘都喜欢佩带玛瑙手串,尤其是刚刚大学毕业的女生,有一次我在北京大学工作时,发现有几位女学生,她们手上佩带了玛瑙手串。 玛瑙手串的价格不贵,一条原石手串,目前是300元以下,这是一个大众可以接受的价格。玛瑙是地球上最常见的矿石,人们早在3000多年前就发现它的存在,可是,厉害的商人在「阿拉善玛瑙」(几十块元一斤)原石的表面进行人工染色来提升鲜艳,有些更将多个「阿拉善玛瑙原石」粘合在一起,制造成较大的形态和斑块,从而提高卖价。 在风水师傅的开光过程中,人工打磨的石太过光滑,我们很难把玄粉浸入石髓, 失去效果。 自古以来,风水师傅便把玛瑙视为宝石中的“第三眼”,象征着「希望」。一条貌不惊人的玛瑙(暗红/暗黑)可改善内分泌,加强血液循环。 大家知不知道为什么大学毕业后,我们做第一份工总是有些不愉快,理由是什么,很简单,就是年轻入世未深,喜欢表现自我,日子久了他/她们才知道七分人事三分工作的道理。我常常建议他/她们佩带玛瑙手串,第一是因为价格大众化,不是很贵;第二是因为它可以产生欢笑正能量,减少我们对工作的不满。 很多年青人喜欢「阿拉善玛瑙」,理由是他/她们被七彩色素迷惑,我认为原生态的玛瑙原石才是符合年轻人的需要,它可以平顺急躁情绪,走上成功之路。 笔者读过水晶检测课程,对于玛瑙手串是有要求的,在巴西工作的时间,我拣选的原石必须含有二氧化硅的水(熔岩本身中的硅酸盐成分分解所产生),因为这种岩石中的蒸气空腔可以给我把元气打进去,形成更大的空腔,产生正能量。 目前这些手串珠子是10mm左右,适宜体重55至65公斤女生佩带,可以佩带左手,亦可以放在包包里,我们建议回家脱下。 玛瑙手串是给女生正能量,如果妳想爱情美满,工作顺利,妳可以佩带这款。

玄學星相
熊神進・2024-06-25

#为什么女生喜欢佩带玛瑙手串 一位网红留言给笔者,她说自从请了笔者的开光玛瑙手串,她接了很多大客户,生意翻倍,笔者请她多些做烟供,布施三恶道。 笔者留意到在国内很多年青姑娘都喜欢佩带玛瑙手串,尤其是刚刚大学毕业的女生,有一次我在北京大学工作时,发现有几位女学生,她们手上佩带了玛瑙手串。 玛瑙手串的价格不贵,一条原石手串,目前是300元以下,这是一个大众可以接受的价格。玛瑙是地球上最常见的矿石,人们早在3000多年前就发现它的存在,可是,厉害的商人在「阿拉善玛瑙」(几十块元一斤)原石的表面进行人工染色来提升鲜艳,有些更将多个「阿拉善玛瑙原石」粘合在一起,制造成较大的形态和斑块,从而提高卖价。 在风水师傅的开光过程中,人工打磨的石太过光滑,我们很难把玄粉浸入石髓, 失去效果。 自古以来,风水师傅便把玛瑙视为宝石中的“第三眼”,象征着「希望」。一条貌不惊人的玛瑙(暗红/暗黑)可改善内分泌,加强血液循环。 大家知不知道为什么大学毕业后,我们做第一份工总是有些不愉快,理由是什么,很简单,就是年轻入世未深,喜欢表现自我,日子久了他/她们才知道七分人事三分工作的道理。我常常建议他/她们佩带玛瑙手串,第一是因为价格大众化,不是很贵;第二是因为它可以产生欢笑正能量,减少我们对工作的不满。 很多年青人喜欢「阿拉善玛瑙」,理由是他/她们被七彩色素迷惑,我认为原生态的玛瑙原石才是符合年轻人的需要,它可以平顺急躁情绪,走上成功之路。 笔者读过水晶检测课程,对于玛瑙手串是有要求的,在巴西工作的时间,我拣选的原石必须含有二氧化硅的水(熔岩本身中的硅酸盐成分分解所产生),因为这种岩石中的蒸气空腔可以给我把元气打进去,形成更大的空腔,产生正能量。 目前这些手串珠子是10mm左右,适宜体重55至65公斤女生佩带,可以佩带左手,亦可以放在包包里,我们建议回家脱下。 玛瑙手串是给女生正能量,如果妳想爱情美满,工作顺利,妳可以佩带这款。

宗教玄學
熊神進・2024-06-25

#为什么女生喜欢佩带玛瑙手串 一位网红留言给笔者,她说自从请了笔者的开光玛瑙手串,她接了很多大客户,生意翻倍,笔者请她多些做烟供,布施三恶道。 笔者留意到在国内很多年青姑娘都喜欢佩带玛瑙手串,尤其是刚刚大学毕业的女生,有一次我在北京大学工作时,发现有几位女学生,她们手上佩带了玛瑙手串。 玛瑙手串的价格不贵,一条原石手串,目前是300元以下,这是一个大众可以接受的价格。玛瑙是地球上最常见的矿石,人们早在3000多年前就发现它的存在,可是,厉害的商人在「阿拉善玛瑙」(几十块元一斤)原石的表面进行人工染色来提升鲜艳,有些更将多个「阿拉善玛瑙原石」粘合在一起,制造成较大的形态和斑块,从而提高卖价。 在风水师傅的开光过程中,人工打磨的石太过光滑,我们很难把玄粉浸入石髓, 失去效果。 自古以来,风水师傅便把玛瑙视为宝石中的“第三眼”,象征着「希望」。一条貌不惊人的玛瑙(暗红/暗黑)可改善内分泌,加强血液循环。 大家知不知道为什么大学毕业后,我们做第一份工总是有些不愉快,理由是什么,很简单,就是年轻入世未深,喜欢表现自我,日子久了他/她们才知道七分人事三分工作的道理。我常常建议他/她们佩带玛瑙手串,第一是因为价格大众化,不是很贵;第二是因为它可以产生欢笑正能量,减少我们对工作的不满。 很多年青人喜欢「阿拉善玛瑙」,理由是他/她们被七彩色素迷惑,我认为原生态的玛瑙原石才是符合年轻人的需要,它可以平顺急躁情绪,走上成功之路。 笔者读过水晶检测课程,对于玛瑙手串是有要求的,在巴西工作的时间,我拣选的原石必须含有二氧化硅的水(熔岩本身中的硅酸盐成分分解所产生),因为这种岩石中的蒸气空腔可以给我把元气打进去,形成更大的空腔,产生正能量。 目前这些手串珠子是10mm左右,适宜体重55至65公斤女生佩带,可以佩带左手,亦可以放在包包里,我们建议回家脱下。 玛瑙手串是给女生正能量,如果妳想爱情美满,工作顺利,妳可以佩带这款。

》《
手機‧電玩
MacauYeah・2024-06-25

好久沒有寫Game心得分享,那是因為筆者也真的很久沒有開新坑。最近因為《魔物獵人》有新作預告,大家又好好地重新把《魔物獵人世界》拿出來練練手。筆者也順便把過去的買了沒有怎玩的《冰原》DLC拿出來,好好地玩一遍,總算完了一個心願。 因為玩了兩款近作,對於魔物獵人系統多少有一點入門心得,就來梳理一下,方便新朋友入坑時不再碰壁。 防具 隨著主線推進,不單武器可以強化,防具也可以繼續強化。強化等級因為階段推進而有突破。筆者以前就是不知道這件事,前期以為防具早已升滿,但後來一直貓車,才知道防具防禦力太低,需要經過重複強化提高防禦力。 防禦、體力增幅技能 防禦力、體力最大值兩者當然是越高越好。但在推進度前期,什至後期因為需要額外技能,防禦、體力不一定全滿。有必要時防禦增幅時選一半,體力增幅點滿比較好。因為後期挨怪物一套連招,即使防禦多高,也不能不回血。而體力增幅通常較易點滿,避免因為異常狀態影響而被連招到死,可以增加容錯率。而且後期回血道具一般直接使用秘藥,一次過回滿血條。所以筆者認為體力增幅比防禦增幅更有效。 防禦力疊加 若果你像筆者一樣菜,後期必需要使用各種方式疊加防禦力。主要方式有三個。食貓飯、道具持有、道具使用。貓飯在《魔物獵人世界》和《魔物獵人崛起》,都有機率成份,不過好在後期,總有票卷可以提升機率,筆者都偏向把投資在防禦力上。道具持有,主要在XX之爪和XX護符之上,帶著出戰就好,兩者最多各帶一份,但可以疊加。道具使用,就是硬化藥、硬化粉塵、忍耐種子。三種可以同時使用,可疊加,但硬化粉塵、忍耐種子有時效。 精靈加護 有一定機率減少傷害,但筆者後期不夠技能欄位,沒有去配。它也是增加容錯的機率,但防禦、體力、精靈加護全要的話,攻擊技能就更少了。所以筆者放棄它。 龍車 中後期,魔物都會四處跑,發怒時更是撞來撞去,總之就是讓你打空氣。筆者初時也不知道怎樣對策,總是跟著魔物屁股走。但其實這樣更費時,其實你可以原地等待,有空就調合或為武器上Buff,反正它很快就會回頭。想更有效的提升DPS,應該花時間去量度回來時的落點。魔物從遠處過來,但其實中途很少變向,比較有條件預判和輸出。若為團戰,因為有隊友分散仇恨,才需要主動追上魔物。 打點 初接觸這系列時,筆者就不斷看到【肉質】這一詞,但其實玩到現在,筆者都不太掌握。但通常都是集中打魔物的頭就了事。當打頭都出現彈刀時,再攻擊其他地方。有條件有心情,可以逐隻魔物研究,長期打到有效位置,傷害差很多,才能會易出現魔物倒地的狀態。 配裝 別人的配裝,其實自己並不一定能用,特別是那些TA影片(Time Attack)。MH系統的技能取得,都很有運氣成份,所以想要的技能不一定馬上能配到,大家主要去找自己武器的核心技能就OK。有些武器可能有多個流派,而且隨著時間累積,素材的隨機出現,我們有必要定期整理裝備組合。不同攻略網站,都會分享畢業裝,不過筆者到現在,都未去到這個攻守兼備的狀態。還是忘提畢業裝吧,後期的強怪,還是要針對性地重點挑整。 救援、團戰 有時卡關,有條件就叫救援吧,不必刻意自己打。因為進度限制,主線沒有推進的話,強化功能不開放,死磨也不一定有裝備提升。來救援的人一般是已推完主線,回來刷素材的,他們有較高的防禦去吸收傷害。他們不一定比你強,但貓的機率就比較低。但也不排除有時人沒打完主線就來抱大腿,結果搭沉船一起貓車。所以一定一定要準備【生命粉塵】,有必要時,就為殘血的同伴回血。那怕團友很強,也有機會出現異常狀態疊加的情況,為他回個血,他能更加集中輸出。 主機版都要買額外的會員制,才能聯機求助。PC版就沒有這個限制,接通網路就可以招外援。筆者推薦PC版,因為會員制的其他贈品都很雞肋,還不如PC版來得清靜。 以上,就是筆者玩完《魔物獵人世界》和《魔物獵人掘起》兩作的心得,雖然筆者還是很菜,但至少後期也玩得下去。希望以上各點可以為沒通關的朋友帶來實際的幫助。

宗教玄學
熊神進・2024-06-24

相傳釋迦牟尼誕生時,天人獻下八寶。藏語把佛門八寶稱「扎西達杰,亦叫達杰明蘇」,而我們淨土宗稱「右旋白海螺」,南方地區大部份信衆稱它「法螺」,而風水師傅叫它做「鎮宅法寶」。 古代的電影都常常看到男武士吹「法螺」, 其實「法螺」有三個明顯用途: 法螺用來召集僧衆。 古人在深山修行時,爲避免猛獸追逐, 可吹起「法螺」驅散野獸。 法螺可以呼喚天神,《千手千眼觀世音菩薩廣大圓滿無礙大悲心陀羅尼經》有一句話說:“若爲召呼一切諸天神,當用寶螺手。” 法螺降伏邪魔外道。 在風水學上, 筆者還發現「法螺」可以幫助男女解脫感情煩惱, 因爲「右旋白海螺」是佛的法音,其力量可以廣大悠揚,使一切煩惱人得到解脫。紅塵世界, 男女之間的感情總沒有對與錯, 在筆者眼中, 男女的愛都是債, 你不是前世欠了他, 今生又爲何會遇上?很多女生(已婚,未婚)都會把「法螺」放在家裏, 就是爲瞭解脫俗世煩惱。 「右旋白海螺」是佛教中最重要的法器之一,我們都是把它用來供養上師、三寶。在北方地區, 信衆會把它放在家裏、壇上。在西藏,最受尊崇,被視爲三千世界回蕩不息的聲音。在南方,有些女生把它放臥室,用來趕走「爛桃花」。 「右旋白海螺」是一種佛相, 這是因爲佛陀說法之音好像法螺般美妙,佛陀臍紋以及所有的毛髮都是右旋,眉間衪的白毫右旋而威嚴,這就是佛教說的右旋白螺之相。 據佛經記載:聞法螺聲可滅諸重罪。《不空罥索神變真言經》中說:“若加持螺,諸高處望,大聲吹之,四生之衆生,聞螺聲滅諸重罪,能受身舍已,等生天上。”這段話告訴我們,當你犯了大罪,你供養「右旋白海螺」, 你可以减罪。什麽是大罪,一位女生做了「打胎」「人流」,這就是大罪。 「右旋白海螺」的圖案有幾款, 款款都是佛教人士的心血結晶, 筆者熊神進一直把它們放在尼泊爾精舍, 白色是海螺殼, 銀色是尼泊爾銀的佛吉祥圖案, 手工認真, 由于供養久長,又是天然的,總有色差, 如果追求完美的讀者, 不應該考慮擁有。 人生總有起落, 如果遇到事業不順, 婚姻不好, 健康出問題的日子, 我們可以拿起「右旋白海螺」向西方吹幾口, 在玄學上有個說法: 一吹順風順水; 二吹時來運到; 三吹心想好事用。 佛有八寶添吉祥, 你家中有多少件寶?

生活在我城
Cheers!・2024-06-23

喺紅街市聚龍軒附近,同朋友仔喺度覓食,發現咗一間特別嘅「船長泰國麵」店,當然要打卡啦!一睇到門口白色小清新嘅店面配上夏日棕櫚葉裝飾,真係忍唔住入去試下! 店內環境 呢間澳門泰國船面一入去就見到門口掛住嘅泰式蝦片包裝,牆面有象徵泰國嘅大象圖騰,同埋桌面上好多泰國風味嘅調料。客人仲可以自行調配泰式甜醬、酸辣醬、辣椒面,呢d小細節都透露出店家嘅細心同用心。 澳門泰國美食推薦 呢到嘅船麵,一共4款湯底,14種配料任選,可以DIY任意搭配出只屬於你嘅澳門船面自選好味道! 今次我哋點咗招牌船長冬陰功貴刁同濃味嘅船湯貴刁。冬陰功湯底雖然望落去好紅,但係其實味道酸酸地唔會太辣。而自家製泰式香料融合泰麵嘅出品,小編就覺得無傳統甘重甜味、味道清新,適合鍾意食泰國野又想食得健康d嘅朋友仔! 船面湯頭乃係點睛之筆。每日用慢火熬制豬骨湯底,等釋出精華後再加入原產泰國香料,單論湯頭嘅製作過程就要3個鐘,湯頭同香料之間互相拉扯達到平衡,呈現出黎嘅味道就會更加濃香。 老闆本人唔止鍾意食船麵,過往仲曾經多次去泰國學煮正宗船麵,身體力行,用最合理嘅食材搭配出符合自己風格嘅泰式船麵,先開咗間店!依家去幫襯仲有機會見到船長本人親自落廚添! 船面特色 其實泰國傳統船面係細細碗嘅,因為喺船上顛簸大碗唔方便。呢度嘅船面係經過fusion融合改良嘅澳門泰國菜,一碗船面等於5份傳統份量!大份得嚟,符合本地人口味!自選船麵+飲品+小食套餐都係$49咋~ 細食嘅朋友就可以考慮自選船麵+一杯飲品,盛惠$38蚊~依家喺澳門街嚟講,呢種澳門平民美食已經唔多見,真係十分抵食(2點後有得供應,認真點讚)!鍾意食辣嘅朋友一定要試下佢哋自家製嘅泰式蒜蓉甜醬。 更多創意美味小食 呢到特色嘅泰式茶凍有3種口味,分別係椰汁斑蘭、椰子咖啡、同泰奶茶凍,後兩款配有食用金箔玫瑰花,全部都係自家製嘅新嘗試,出邊唔係咁容易食到㗎! 小編就最鍾意椰汁斑蘭葉茶凍,據老闆介紹因為係採用天然食材,所以顏色會無出面咁深,但入口duangduang停唔低,打卡點影都靚!重點係唔會太甜!食落唔怕濟。本來想食多個甜香汁泰辣蝦,可惜每日限量新鮮供應,唯有下次早d嚟啦! 冬陰功味薯條味道都好吸引,喺呢個悶悶哋嘅大熱天食唔停口,真係開胃又惹味!而呢款椰子咖啡茶凍都唔錯,椰子嘅清甜同咖啡嘅香醇相互融合,令人回味無窮~ 今次分享到呢度啦!唔好忘記附近仲有紅街市、三盞燈等澳門美食區,可以體驗最接地氣嘅本地生活同其他澳門東南亞美食!快d去船長泰麵尋寶啦! 船長泰麵店鋪資訊: 營業時間:11:00-20:30 船長泰麵在澳覓、mFood已上線啦! 電話:6331 7778 地址:惠愛街37號(星期日休息,切勿跑空) 導航: https://bit.ly/355tBTO

澳城餐飲
Cheers!・2024-06-20

呢排真係好熱!所以小編又推薦一下澳門雪糕系列幫大家消暑!睇完都覺得心透涼! 軟雪糕系列 Sofu 呢一間有就咁睇外表都已經好吸引好少女心!每款雪糕都用北海道特濃6.8牛奶,口感好順滑!原來同埋前一排仲有(G)I-DLE嘅應援添呀! 扁牛角軟雪糕 泡芙杯軟雪糕 地址: 氹仔官也街山治美蘭打前地12號(鉅記手信和鳳城茶樓中間進去) 聽海 位於路環嘅聽海係主打食雪糕,佢哋嘅雪糕口味係會成日轉換,仲有每週期間限定口味!同埋一出門就係對住海邊!買完仲可以一邊睇風景一邊食雪糕~聽海的聲音XD 北海道牛奶X海鹽味雪糕 地址:路環十月初五馬路206號 Gelato系列 Blooom 呢間咖啡係澳門已經好出名!除左咖啡好飲之外,佢出品嘅雪糕都好好食架!每款口味都好特別! 小編嘅top 1係白菊花碎可可口味,清香嘅菊花茶味真係好fresh! 小編仲試埋百毒不侵味!其實係京都念慈枇杷膏味~真係好特別! 地址: 新馬路店:澳門南灣大馬路599號羅德禮商業大廈 Bricolage拿住雪糕 Bricolage近排係小紅書都好紅!見到好多網民都有推介,經過門口都好多人排隊!有好多唔同口味嘅雪糕比你揀! 雪榚樂園 (1杯裝 + 3個mini甜筒) 佢仲有家庭裝版,一次過滿足你多種口味! 地址:澳門聖祿杞街41號(婆仔屋附近) 懷舊雪糕系列 禮記 禮記雪糕係全澳門最經典嘅雪糕店!係澳門真係開左超耐!無論係入面環境同雪糕都好懷舊!想體驗復古可以去下! 雪糕三文治 雪糕磚 地址:荷蘭園大馬路12號地下 洪馨椰子雪糕 澳門仲有另一間老字號都好出名:洪馨椰子雪糕!佢已經開咗100幾年!仲要係手工同用真椰子去整雪榚,靠近就會聞到椰子香味~真係又有heart又懷舊! 地址:澳門新馬路果欄街14號地下 大家睇完有冇覺得好有想食雪糕嘅衝動呢?心動不如行動!快啲去試下啦!如果有你心水嘅雪糕店都可以同小編分享下!

」,
生活在我城
Cheers!・2024-06-20

澳門影迷們注意啦!影滙戲院即將在6月26日正式開幕,暑假檔期還有超多開幕優惠,準備好用超抵價享受頂級的影音享受了嗎?影滙戲院擁有9間獨立影院,其中最令人期待的莫過於港澳第一間杜比影院,另更有不同影院,無論一家大細朋友情侶來看電影都可以有超滿足體驗。所有座椅舒適寬敞, 全院座椅都有超長腿部空間,不怕久坐會酸痛,加上戲院鄰近停車場,泊好車步行到戲院只需不到1分鐘,讓你輕鬆享受電影世界!最後還有影滙戲院開幕優惠,千萬別錯過!
 「杜比影院」有什麼分別? 「杜比影院」採用了杜比視界(Dolby Vision) 4K雙雷射HDR放映系統,搭配杜比全景聲 (Dolby Atmos)沉浸式音效系統。HDR 畫面對比度甚至高達 100 萬 : 1,是一般影院的 500 倍,3D 亮度也接近普通銀幕亮度 5 倍,即使看3小時以上的電影,眼睛也不會感到疲勞。而音效系統讓聲音不再局限於周圍,而是延伸至頭頂,讓你彷彿置身電影場景中,無論是激烈的動作場面,還是細膩的對白,都能讓你感受到前所未有的真實感。加上環抱式座椅排列和經過特殊設計的曲面銀幕。如果你在「杜比影院」看《沙丘2》等電影大作,就可以完整地感受到電影中浩瀚的場景和澎湃的配樂,是與以往不同的震撼觀影體驗。 Dolby Atmos全景聲雙人影院 影滙戲院還有Dolby Atmos全景聲雙人影院,配備雙人座位,可自行調較角度的座椅,扶手更有手機充電功能。看電影幫自己充電,還可以幫手機充電,快約另一半一起去享受浪漫二人世界! 貴賓影院 想體驗更尊貴的觀影享受嗎?每個貴賓影院只有16-30個座位,有寬敞空間,除了自行調較角度及可以充電的舒適座椅,貴賓影院門票包含歡迎小食 、任食爆谷和任飲汽水,入場後服務大使會將餐飲送到座位。觀影期間亦可隨時掃描二維碼 ,服務大使即親臨招待,提供貼心服務,讓觀眾享受星級體驗。 影滙戲院開幕優惠 優惠一:任何日子及時段均享開幕優惠價觀賞指定電影: 適用日期:6月26日31日 2D影院門票: 澳門幣78/單座 ; 澳門幣156/雙座(原價澳門幣110/單座;澳門幣220/雙座) 杜比影院門票:澳門幣98(原價澳門幣140) MX4D影院門票:澳門幣98(原價澳門幣140) 貴賓影院門票:澳門幣228/單座 ; 澳門幣456/雙座(原價澳門幣300/單座;澳門幣600/雙座),包含歡迎小食、任食爆谷及任飲汽水 優惠二:慿當日電影實體門票可於精選餐飲商戶享有8折優惠 優惠適用日期: 6月26日- 8月31日適用餐廳: 意滙 ‧ 手工薄餅 意滙 瀛菊拉麵 瀛菊 玥龍軒 港式車仔麵 巨星酒廊 蒲點 Mark Coffee 大益茶 松花湖水餃 金澤茶屋 許留山 趁暑假好戲陸續上映,叫親朋好友一起來影滙戲院,開啟一場精彩的電影之旅吧!開幕日期:2024年6月26日活動詳情可到此了解:https://s.ctm.net/tVf7c

githubflow - github
科技新知
MacauYeah・2024-06-20

那些年那個很穩定卻又不受歡迎的 git flow 開發流程 多年前,朋友就向筆者介紹git的團隊整操作流程。筆者深思過後,的確實用,那些年的git-flow,很美滿,由開發、測試,到發佈、修補漏動(backport),都有清楚明確的指引。 原作者連結:git-flow 大家如果沒有更複雜的需求,真的可以照搬,筆者也很推這一個模型。 但在長期推廣下,筆者發現大部份人其實都不熟git的基本操作,什至連git graph也不看,現在看git flow,就更不可能接受。那怕是有常用git的個人團隊,也是不怎使用分支模型。 前一兩年,筆者也不懂,筆者也努力地簡化git flow。例如把master和develop合而為一,但最後也是少有人可以接受,很多人還是卡在分支那邊,對checkout、merge還是很陌生。在跟更多不同人的協作過後,筆者總於意會到一件事。其實大部份人,只想知道最後、最新的狀態,只會更新 master / main ,也因為個人開發,所以連衝突也不會有,更不需要使用merge。那怕是少型團隊,頂多也是維護main的衝突,間中用用merge,而checkout還是用不著。 其實這個情況,並不限於小型團隊。因為 web app 和 DevOps 的流行,所以越來越少機會要維護多個舊的穩定版本。大家都專心於最後一個開發及發佈版本就完事,用戶的某個版本有問題?更新到最新版本吧。(註:越底層的應用開發模式,因為相容性問題,不可能只保留一個穩定版本。) 那麼我們就大力簡化吧 - github flow 開發流程 既然大部份情況,大家都只在乎 main / master / 預設分支,那我們也沒有必要跟著複雜的 git flow 走。但在 DevOps 的角度下,為保證 main / master 穩定性,大家還是至少要遵守branching 、pull (merge) request 、code review 、auto test 原則 。 github就最簡單的branching 、pull request 、code review 提出了它們的 github flow。 簡而言之,就是每個人在開發時,都先從 main 起一個新分支,不斷更新。待合適的時候,就透過 pull requst,向原項目負責人提出申請,只要項目負責人點頭,就可以把改動傳入 main 中。又因為Github 原本的定位在於個人與個人之間的協作,初時已經需要通過fork建立獨立的倉庫,那怕你不愛分支也必需分支。所以 pull request,code review 的作用更明顯,後逐的協作更理所當然。 但若果回到公司團隊協,Github flow 就應該像筆者之前提出協作方案,各自起分支,最後由某個人守門,把所有結果放到 main 中。(前文連結)