搜尋

搜尋結果

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查看 srcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidatacontrollerHomeController.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 @RequestMappingquot;apiquot; public class HomeController @GetMappingquot;someRecorduuidquot; public Map readSomeRecord@PathVariable String uuid return Map.ofquot;retquot;, quot;your uuidquot; uuid; 準備我們的test case,但這次我們預期它應該要出現登入失敗的結果。 srctestjavaiogithubmacauyeahspringboottutorialspringbootwebapidatacontrollerHomeControllerTest.java @SpringBootTest @AutoConfigureMockMvc public class HomeControllerTest @Autowired private MockMvc mockMvc; @Test void testNoLogin throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is4xxClientError .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.doesNotExist .andDoMockMvcResultHandlers.print; 在我們執行上述的測試,test case 成功過了。我們的基本設定跟上一節其實沒有多大改動,為何現在http api會回傳狀態 401? 那是因為我們在依賴中加了,Spring Security,它配合了Spring Web,就會自動為所有api加入權限檢測。我們的測試中,沒有任何用戶登入,當然會出現 http 401。為了讓我們可以好好管理誰可以使用api,我們就來設定一定Security。 我們加一個WebSecurityConfig.java,暫時指定所有的訪問路徑都必需有USER權限,並且用 http basic的方式登入。 srcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidataconfigWebSecurityConfig.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 securityFilterChainHttpSecurity http throws Exception http.authorizeHttpRequestsauthorizeHttpRequests gt; authorizeHttpRequests.requestMatchersquot;quot;.hasRolequot;USERquot;; 所有的訪問路徑都必需有USER權限 ; http.httpBasicCustomizer.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.withUsernamequot;adminquot; .passwordpasswordEncoder.encodequot;passquot; .rolesquot;USERquot;.build; 我們在記憶中體,加入一個測試用的User,它的名字為admin,密碼為pass,權限為User return new InMemoryUserDetailsManageruser; 然後加入新的測試,直接模擬Role。結果是通過的。 srctestjavaiogithubmacauyeahspringboottutorialspringbootwebapidatacontrollerHomeControllerTest.java @Test void testLoginWithRoles throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .contentTypeMediaType.APPLICATION_JSON.with SecurityMockMvcRequestPostProcessors.userquot;someonequot; .rolesquot;USERquot;, quot;ADMINquot;; 沒有使用密碼,只使用Role this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is2xxSuccessful .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;your uuid1234quot; .andDoMockMvcResultHandlers.print; 再來一個測試,改用密碼登入,分別輸入錯的和正確的密碼。 @Test void testLoginWithWrongPasswordAndNoRole throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .headerquot;Authorizationquot;, quot;Basic randompassquot; 輸入錯的密碼,應該回傳http 401 Unauthorized .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is4xxClientError .andDoMockMvcResultHandlers.print; @Test void testLoginWithPassword throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .headerquot;Authorizationquot;, quot;Basic YWRtaW46cGFzcw==quot; http basic 就是把 adminpass 轉成base64 .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is2xxSuccessful .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;your uuid1234quot; .andDoMockMvcResultHandlers.print; 最後,當然是正確的密碼才能通過。若果大家還是半信半疑,我們可以跑起真的正服務(IDE RUN或mvn springbootrun),然後用curl去試。 curl httplocalhost8080apisomeRecord1234 failed with 401 curl u quot;adminpassquot; httplocalhost8080apisomeRecord1234 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.withUsernamequot;adminquot; .passwordpasswordEncoder.encodequot;passquot; .rolesquot;USERquot;.build; return new InMemoryUserDetailsManageruser; springboottutorialspringbootwebapidatasrcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidataconfigUserServiceImpl.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 loadUserByUsernameString username throws UsernameNotFoundException 因為我們資料庫沒有資料,為了方便測試密碼的加密,我們在java code上直接插入一筆資料。 UserEntity defaultUser = new UserEntity; defaultUser.setUsernamequot;adminquot;; defaultUser.setPasswordpasswordEncoder.encodequot;passquot;; defaultUser.setRolequot;USERquot;; defaultUser.setUuidUUID.randomUUID.toString; userRepo.savedefaultUser; 上述為測試用插入資料,不應該出現在正式使用環境中。 UserEntity user = userRepo.findOneByUsernameusername .orElseThrow gt; new UsernameNotFoundExceptionusername quot; not foundquot;; 找找資料庫有沒有正在登入的該名使用者username List authorities = List.ofnew SimpleGrantedAuthorityquot;ROLE_quot; user.getRole; LOG.debugquot;got user uuid, username, role from databasequot;, user.getUuid, username, user.getRole; 如果前面的 findOneByUsername 有結果回傳,我們就給它一個ROLE_XXX的權限。 return new Userusername, user.getPassword, authorities; 這裏從沒有檢查過密碼是否有匹配,全部交給Spring Security去做 springboottutorialspringbootwebapidatasrcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidataentityUserEntity.java springboottutorialspringbootwebapidatasrcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidatarepoUserRepo.java 上述段落中,筆者省略了UserEntity和UserRepo,它們只是一般的springdatajpa概念,有需要可以經文末的連結查看完全原始碼。最需要注意的,是UserEntity的password欄位,在資料庫中是以加密的方式儲存。我們在配匹登入者與資料庫記錄時,也沒有自行檢驗密碼的需要。我們只是在加密過的密碼回傳給Spring Security,Spring框架會自行把登入者輸入的密碼與加密了的密碼作比較。

萌B百日下水禮-游樂寶寶
兒童成長
MacauYeah・2022-09-23

夏日炎炎,筆者那熱愛游泳的老婆大人初為人母,雖然產後仍未能下水暢泳,但十分期待帶住萌B首試享受水中嬉戲的樂趣。 在本澳有多間嬰幼兒游泳館,比較多人熟悉的有游樂寶寶、Water Babies、Love U Baby hellip;.. 在選擇合適的游泳館時,最緊要考慮如下因素 地點:小寶貝容易哭鬧的時間較多,且若想經常游泳,選擇距離近、易停泊車輛的游水永館可減低出行成本及減低嬰兒煩燥的可能性; 環境及水質:舒適的環境及干淨的水質對小寶貝的健康十分重要,稍有細菌會引致小寶貝出現不同程度的皮膚問題; 服務人員的素質:作為客人,服務員的態度直接影響消費感受,溫柔耐心的服務員可讓你的小寶貝笑容滿臉,十分享受游泳服務的過程; 價格:Well,最多人關心的因素,個人接受度不同,不宜置評。 由於筆者的個人條件,經考慮比較後,選擇先試位於東望洋新街的游樂寶寶,游樂寶寶位置不算方便,位處栢棆水果店旁,泳館門口很細差點略過。然而,該館採用美國技術的循環池,保證每一小時對池水進行一次循環更新成人池是每六小時循環一次,而且采用安全無氯全臭氧水處理池水,不會對小寶貝的脆弱肌膚造成傷害,而且自稱場內有執牌醫生護士註場,令爸媽們安個心。 入到場內見到色彩賓紛的裝潢及先看到一個長方形多人池,再進內會看到數個單人細池、沐浴池及按摩枱。服務員先替小寶貝做個簡單按摩熱身,再為小寶貝套上浮圈,由於是初生所以會使用一人池,待池中注滿水後便將小寶具放入池中並調教時間15分鐘是的一次只能游15至20分鐘左右,因為怕小心臟負荷不了,先讓小寶貝熟習,初時小寶貝十分緊張,但很快便放鬆暢泳了。 開心時間特別快過,夠鐘上水,服務員便幫小寶貝洗頭沖涼,從來沒見過小寶貝像大爺一樣享受過程。 最後再幫小寶貝清潔耳朵、口腔及鼻孔,上水,首次體驗價是MOP100,付款離場,完滿結束。 一上車小寶貝已靜靜入睡,而當晚小寶貝在大量消耗體力後也睡得安穩。 嬰幼兒多游泳,幫助消化,加強免疫力,有助生長,所以有興趣的爸媽可以考慮。 最後附上參考價目表 泳館資料 地址 東望洋新街189號新興大廈地下B座 電話 853 2835 4079 備註 游泳時可選擇用尿片或裸泳,筆者係選擇裸泳,因為尿片會有重量。 最好食飽奶後半小時後才去,防嘔奶。 去前最好預約時間,因為約了還是要等,早上較下午少人去。 另外,聞說套頸浮圈對項椎不好,大家可自備綁腋下的浮圈,科普資料見httpshealth.ettoday.netampamp_news.php7news_id=1861540

[評] 狂野飆車9:競速傳奇(Asphalt 9: Legends) | 我只推介良心遊戲
手機‧電玩
MacauYeah・2019-06-17

前幾天是PC主機遊戲的重大發表會 E3遊戲展。不過太多大作都有相當時間才會發售,會不會跳票還是未知之數。 但稍前的日子,Apple亦有自己的發表會WWDC2019,大家不要以為它只介紹科技元素,其實遊戲設計亦有頒獎項目進行。就是因為這樣,我才知道有些什麼遊戲值得試玩下海。 狂野飆車9:競速傳奇 就是其中一款 值得大家一看。 現今的手機遊戲,課金元素很多,這款不例外,有消耗性體力制quot;汽油quot;、有收集升級制quot;汽車設計圖quot;。真的一打開遊戲,就給你抽抽抽充充充的感覺。 原本我是打算負評的通常負評的遊戲都不會出現在這裏,但玩了幾天後。又覺得這遊戲都算有良心有誠意,所以有繼續玩下去。 首先第一點要讚的是,操作有簡化的自動駕駛,也有挑戰難度的手動駕駛。 自動駕駛模式下,玩家只需要選擇性加速、甩尾、選擇路線就可以了,入彎角度全由AI來負責。一來這是手機遊戲,要適應某不安定環境而做的簡化。二來因為制作團隊也做了這系列好幾代遊戲,了解到大部份非核心玩家的能掌握的部份有多少,大大地提意了非核心玩家的滿足感。這模式下體驗真的一流。 消耗性體力制quot;汽油quot;的計算方式也很獨特,當你只有一台車時,你只有6桶汽油;當你有第二台車時,就各有6桶,即是共12桶。雖然12桶不能互補,但這是一個很巧妙的方式讓你換車,挑戰不常用少強化的車。 圖 解鎖後左邊兩台的車可以單獨使用。各自有各自的汽油量 手動模式就是給賽車核心玩家所挑戰的,入彎扭呔,全部自已決定,唯一沒法改變的,就是要課金慢慢升lv。 這......都很普通對不對? 不,那是一個沉浸性很強的設計 初體驗 自動模式,讓你易上手,不會馬上棄Game; 重複遊玩 不重疊的消耗體力制,是可以給你最大限度的長期遊玩。讓你學習使用新車新車通常比已升級舊車弱一點,重複提升個人技巧。 深度體驗 手動模式,是再一次的難度升級,讓一個玩到爛的關卡再一次加入新元素,亦更進一步提升個人技巧。 圖 挑戰自我,才是遊戲本身的魅力,同一副圖,在不同時間點看,有不同的體會 所以體驗了這樣的設計,就算課金抽抽抽的介面一直出現,我也忍了下去。亦推介大家試玩這個遊戲。 想睇遊戲直播,記得訂閱我地嘅 Twitch YouTube Facebook

「葡到路環」!坐船欣賞澳門新八景
創意生活
Cheers!・2019-05-22

「去澳門・葡一葡」海上遊又有新主題!適逢路環漁村剛獲全球票選為「澳門新八景」,今年「去澳門・葡一葡」就用「葡到路環」為主題。平時到路環, 大多去吃葡撻、拍拍照。但現在有全新玩法,就是在路環碼頭上船,從另一角度欣賞澳門。 路環除了美食多,拍照地點亦非常多,例如海邊、聖方濟各教堂、路環碼頭等。而路環碼頭除了拍照之外,現在更可從這開始「澳門海上遊」之旅。對於坐船,大部份澳門人都不陌生,但由路環坐船到氹仔,相信只有老一輩才試過,現在有機會讓大家重溫昔日風情了。 以前來往路環的航線都是在這裡上落船的。 路環漁村獲票選為澳門新八景。 今次和我們一起航行的就是「路環一號」,船內設有 43 個座位,舒適寬敞。座位及船艙以「澳門古今景點」、「中西文化交融」元素的插畫佈置,營造輕鬆的遊覽氣氛,亦很適合拍照。除此之外,船艙內的大玻璃窗,視野一流,方便大家和景點合照。整個旅程約40分鐘,由路環碼頭出發,可從海上欣賞整條路環漁村,往路氹方向行駛時,看到澳門大學橫琴校區、紅樹林區域、路氹的多個大型綜合旅遊娛樂項目,繼續往北行就會到西灣大橋,及昔日在航海有重要地位的十字門水道,在此開始船隻就往東行並穿過西灣大橋橋底。 船隊分別有「氹仔一號」及「路環一號」,充滿澳門特色。 船艙座位以多個澳門景點作佈置。 大家飽覽完路氹及橫琴沿線彼岸的景色後,是時候欣賞澳門半島的景點,包括有媽閣廟、旅遊塔、西望洋聖堂、東望洋燈塔及東望洋山等,然後船隻就駛到氹仔客運碼頭,結束海上遊。現時航線有由路環出發以及由氹仔出發,而購買海上遊的旅客,可乘坐來往氹仔官也街及路環碼頭的接駁專車,方便大家來往各個景點。 啓航不久就會看到路氹及蓮花橋的景色。 在船上可從另一角度,欣賞澳門景色 。 澳門海上遊 航程:約40分鐘 票價:$100 網上訂票:httpwww.macaucruise.combookinglang=TC

【北上尋歡】跟著小紅書裝逼!遊走珠海古村落、呷咖啡、食農家菜
專題報導
Cheers!・2019-04-18

北上一日遊,已逐漸變成大家周末的出遊首選。為了尋找珠海最強的裝逼點,咱們CyberCTM編輯部在出遊前特意在小紅書搜刮一番,最後鎖定了位於珠海市唐家灣鎮西南的「會同村」。村內既有碉樓、石橋,又有別樹一格的咖啡廳,還有風味十足的農家菜,保證可以秒殺相機記憶體! 交通資訊:這次我們使用了共享汽車出遊,詳細介紹請點擊 gt;gt; 共享汽車!拱北租商場還!珠海自駕無難度! 會同村到處都是嶺南建築風格的古建築,有種穿越時光的感覺! 會同村中的餐飲選擇也不少。 【棲霞仙館】古樓變文青聚腳地 棲霞仙館是幾年前,中國一部恐怖片《碟仙詭譚》在此地取景,繼而走紅。如今這座中西合璧、擁有上百年歷史的古樓已變成文青聚腳地!一樓是文藝展覽館,定期舉辦藝術展;二樓是「最享咖啡」,除了提供高質咖啡,還有一些輕食。 一踏入棲霞仙館,就是一個大庭園,小編們玩得樂此不疲! 由樹上懸吊的鞦韆,裝逼一流! 二樓的「最享咖啡」內部裝潢走美式復古風,與棲霞仙館形成一種奇妙的衝突感。 棲霞仙館入場券十元一位,可於「最享咖啡」作抵用,聽說這裡的冰滴味道很好。 我們點了幾杯咖啡和蛋糕,咖啡水準很不錯,蛋糕卻一般。 咖啡廳更有戶外位置,只要略加瀘鏡,唯美照輕鬆到手。 【會同電影小館】幫星爺配音 今年1月才正式開館的「會同電影小館」展出了很多電影相關的展品,如充滿歷史感的劇本、電影道具等。館內還有一些互動裝置,必玩的當然是配音室,小編當日就為《大話西遊》重新配音,過過戲癮! 古裝試穿裝置。 配音室有多套經典電影可供大家配音,趣味滿分。 電影相關的展品很多,電影迷不容錯過。 【燴坊】必點泥煨雞 裝逼也會累!逛到餓了,不妨前往會同村中主打「泥煨雞」的「燴坊」,店鋪門前掛有一個招牌,大大的寫了「泥煨雞」三隻大字,還在一部播著店家被不同媒體報導的畫面, 「燴坊」的門口佈置得像個歐洲小花園一樣,讓人一秒置身外國! 「泥煨雞」是把沙姜、蒜蓉、芫荽等調料醃製並填滿雞肚,以荷葉包裹,再用泥燴熟。雞肉雖然不是非常滑嫩,但剝開雞肉一刻,香氣撲鼻、肉汁四濺,非常吸引! 菜色選擇很多,價錢公道,難怪成為會同村的網紅店。 小編醒你: 穿著素色衣服,以免和花草搶戲。 蚊怕水是必須的。 建議早上到達,趕在黃昏時結束行程。畢竟是古城,晚上有點陰森的氛圍。

全球教育新點子:結合未來技能與傳統教學的力量
文化創意
陳康妮・2024-05-24

全球教育新點子:結合未來技能與傳統教學的力量 在當今這個快速變化的世界中,教育不僅僅是知識的傳遞,更是技能和能力的培養。澳門教育家陳康妮認為,未來技能教育應該成為全球教育的核心,這包括批判性思考、創造力、協作和溝通能力等。然而,隨著教育科技的發展,我們也必須認識到聯合國教科文組織(Unesco)所強調的,即線上教學永遠不能取代老師的面對面指導。 未來技能教育的重要性 未來技能教育的目標是為學生提供在21世紀社會和職場中成功所需的技能。這些技能包括: 批判性思考:能夠分析問題,提出解決方案。 創造力:在面對挑戰時能夠想出創新的方法。 協作:與他人共同工作,達成共同目標。 溝通:清晰地表達想法,並有效地聆聽他人。 線上教學與傳統教學的結合 雖然線上教學提供了靈活性和可訪問性,但它不能完全取代傳統教學。老師的面對面指導對於學生的情感發展和社交技能至關重要。因此,我們需要一個結合了線上教學和傳統教學的混合模式,這樣學生既可以利用科技的便利,也能從老師那裡獲得必要的指導和支持。 實施策略 為了實現這一教育新點子,我們需要以下幾個策略: 教師培訓:提供教師培訓,使他們能夠有效地結合線上教學和傳統教學。 技術整合:在課堂上整合最新的教育科技,以增強學習體驗。 課程設計:設計以未來技能為中心的課程,並確保這些技能能夠在真實世界中得到應用。 評估改革:改革評估方法,以衡量學生在未來技能上的進步。 這些關鍵技能將幫助澳門的學生在競爭激烈的世界中脫穎而出,為他們的未來鋪平道路。澳門教育應該不斷進步,以適應不斷變化的需求,並為學生提供最佳的教育體驗。

斷捨離與個人成長之關係 放下過創造自己的未來
文化創意
陳康妮・2023-10-19

你是否曾經感到自己的生活太過複雜和混亂?你是否曾經想要擺脫過去的陰影和束縛?你是否曾經渴望自己的未來更加明亮和美好?如果你有這些想法,那麼你可能需要嘗試一種叫做斷捨離的方法。 斷捨離是一種簡化生活的方法,意思是斷絕不必要的東西,捨棄多餘的物品,離開對自己不利的環境。斷捨離不僅可以讓我們的空間更寬敞、整潔,也可以讓我們的心靈更清爽、自由。斷捨離可以幫助我們減少壓力、提高效率、增加幸福感 斷捨離也可以促進我們的個人成長,尤其是與我們的原生家庭有關的成長。原生家庭是指我們出生和成長的家庭,它對我們的性格、價值觀、信念、行為等有很大的影響。然而,原生家庭並不一定都是健康和正面的,有些原生家庭可能存在著暴力、虐待、冷漠、過度保護、控制等問題,這些問題會給我們留下深刻的傷痕和陰影,影響我們與自己和他人的關係。 因此,我們需要對自己的原生家庭進行一次斷捨離,也就是放下過去,走出陰影,創造自己的未來。這並不意味著我們要否定或忘記自己的原生家庭,而是要正視和接受自己的過去,並從中學習和成長。 我們可以通過以下幾個步驟來實現斷捨離與原生家庭: 斷:意識到自己與原生家庭之間存在的問題和衝突,並決定改變自己的狀態和態度。這需要我們有勇氣和決心,也需要我們有足夠的自信和自愛。 捨:釋放自己對原生家庭的執著和依賴,並放下自己對原生家庭的怨恨和期待。這需要我們有寬容和謙卑,也需要我們有足夠的自由和自主。 離:距離自己與原生家庭之間不健康和負面的影響,並建立自己與原生家庭之間健康和正面的關係。這需要我們有智慧和技巧,也需要我們有足夠的尊重和溝通。 通過斷捨離與原生家庭,我們可以從過去中解放出來,並開始創造自己想要的未來。我們可以發現自己的潛能和價值,並實現自己的夢想和目標。我們可以與自己和他人建立更深刻和更美好的關係,並享受更豐富和更幸福的生活。 斷捨離不僅是一種生活方式,也是一種成長方式。它可以幫助我們釋放自己的負擔,發揮自己的潛力,創造自己的幸福。讓我們一起開始斷捨離吧! (澳門斷舍離學會 供稿)

的等待-《戰神:諸神黃昏》下
手機‧電玩
MacauYeah・2022-12-09

筆者總算全破遊戲,但感覺上有些失落,劇情上和戰鬥難度上也有些期待的落差。以下部份涉及劇透,不想受影響的朋友趕緊回頭。 本篇以預言來作為故事的引線,但預言的反轉並沒有帶來合理的戲劇張力。 預言中,一直強調『提爾』帶領眾人對抗奧丁。隨着劇情發展,玩家會找到提爾,但最後這個提爾,只是奧丁假扮的。目的就是要從中引誘主角一行人向一個錯誤方向走,而且在重要時刻奪取關鍵道具。但這個詭計,最後並沒有導向成功,也一步一步讓奧丁陷入困局。 這個不明顯的反轉,讓預言變得不像是全知,缺乏自圓其說的戲劇張力(就是缺乏那種聰明反被聰明誤的感覺) 還有,劇情中去找命運三女神的作用就完全不明所以,主角一行人從中知道了海姆達爾會殺死阿特柔斯這個預言,但最後這個預言就如大家所知的一樣,沒有發生(主角怎會死?)。 在這個結構下,本篇中所謂的『預言』,更像很多電影題材中的平行宇宙或者是量子世界: 並不會有必然的後果, 只是在多個平行世界中,通常阿特柔斯會死在海姆達爾中。 當奎爺得知海姆達爾會殺死阿特柔斯,就去做一把新武器對抗海姆達爾,而這把武器的名字居然是德羅普尼爾,是原神話中奧丁的裝備之一。而更讓人感到可惜的,就是奎爺打海姆達爾要做新武器,打奧丁同雷神就不需要,感覺海姆達爾比奧丁更強。 而阿特柔斯方面,因為幫奧丁拿取面具而釋放出赫爾,這段劇情更是令人費解。因為去拿最後的面具碎片,本來是阿特柔斯、斯露德、海姆達爾三人去拿,而到達目的地後,海姆達爾第一時間就離開,而正當阿特柔斯釋放赫爾,海姆達爾又突然回來鬧場,嘲弄他放走赫爾,最後陰差陽錯令任務失敗。這段劇情又是一段令人費解。 全篇劇情都表現得很情緒化,有前一刻希芙一直想阿特柔斯死,後一刻又為斯露德、阿特柔斯化解矛盾;前一刻雷神要殺死阿特柔斯,後一刻因不願再打就被奧丁桶死。最有劇情反轉效果的,就是奧丁分身扮提爾, 但這有讓遊戲的『主軸』變得不夠嚴謹。 而且這集Boss有點少,配不上諸神黃昏的背景,由頭到尾就死奧丁,雷神,海姆達爾以及光明神,就四個神級人物,感覺配不上原著。到最後奎爺做代理神王,希望還能有下一集吧。

陳康妮:澳門教育管理:幼兒奧福音樂教育
文化創意
陳康妮・2022-09-09

澳門教育管理:幼兒奧福音樂教育 奧福教學法是二十世紀著名的作曲家奧爾夫為兒童設計的一種音樂教學法,是二十世紀四大音樂教學主流之一。這種教學方法根據本土文化的特性,依據本土文化的素材,以一種易懂、自然、活潑的方式去開啟兒童的藝術視野,受到了各國音樂教師和音樂愛好者的肯定與支持,這種音樂教育的目標是通過提高人們的音樂素養去造就更多擁有完整人格的人。 結合澳門目前的音樂教育情況,對於幼兒進行音樂教育勢在必行。幼兒是一個人成長的關鍵階段,是培養良好習慣的關鍵階段,這一時期的孩子思想天真,模仿能力強,有很多潛力需要開發,如果能在這一時期對於幼兒進行優秀的藝術教育薰陶,會在最基礎的階段,讓幼兒感受到藝術的魅力,儘管他們可能對於藝術音樂的概念還不了解,但是可能會產生興趣,我們經常說興趣是最好的老師,只有對一件事情有興趣,才會想要去探究這件事情,才會將更多的注意力專注在這件事情上,這樣才有可能將事情做好。奧福音樂教育的關鍵在於探索和經驗,通過激發探索者的想像力與幻想力,邀請學習者進入音樂情境中,感受音樂氛圍,領悟音樂魅力,進而發展潛在的音樂性。強調的是一種創造性教學、漸進式教學、本土化教學、完整性教學、社會性教學、平衡性教學、專門性教學,讓學習者在學習的過程中激發出自己的潛能,在循序漸進的引導中走進音樂的殿堂,這樣就自然而然的能進入音樂情境,避免了刻板的、生硬的教學,是一種自然而然、潛移默化的教學。在這樣的過程中,幼兒會慢慢地欣賞到歌曲的美妙,在其中發現學習音樂的樂趣,享受音樂合奏的愜意,在這個過程中獲得成就感和滿足感。 奧福教學是藝術教育的基礎,特別適合幼兒啟蒙期,現在隨著物質生活不斷得到滿足,人們對於精神的需求越來越高,掌握壹門藝術對壹個人未來的發展大有脾益,如果我們能註重對於幼兒的音樂教育,註重對於幼兒藝術素養的培育,就可以讓幼兒朝著德智體美的方向發展,培養成更好的人,為社會所需要的人才添磚加瓦。

西雅圖 | Pike Place Chowder
走遍世界
原來世界這樣大・2019-06-21

除了到三藩市的Pier39一帶吃海鮮、嚐Clam Chowder之外,難得去到西雅圖的Pike Place Market都來一碗Clam Chowder吧。 以前在西雅圖生活,實在太不懂得找好吃的。要不是同行朋友在資料搜集,我也不知道原來西雅圖的Pike Place Chowder是這麼出名的! Pike Place Clam Chowder是在Post Alley入面,雖然餐廳空間不大,但卻擠滿人群。這邊的用餐模式是要付款拿到食物後才可以找座位的,即使有同行朋友打算一人排隊下單,一人負責找座位都是不容許的。要是遇上了不友善的客人,隨時會被罵、趕走的。所以,來到Pike Place Clam Chowder還是要跟規則,不要亂來。 Pike Place Clam Chowder 多年來都拿到多個獎項,也對周打蜆湯作出深入的研究。單單只是Clam Chowder都有多個不的款式作選擇,像是奶油般柔滑的New England Clam Chowder、配上鱈魚的以奶油蕃茄為湯底的Seafood Bisque、不含麩質規蜆肉加入蕃茄湯的Manhattan Style Chowder、以市場時令雜燴的Market Chowder、烤扇貝檸檬汁配搭的Seared Scallop Chowder和專為Vegan而設的椰子雜燴Lime amp; Coconut Chowder,這麼多款一定要找多點朋友一齊來才可以嚐到各種Clam Chowder的特色。 Clam Chowder 濃稠質感配上豐富的配料,入面的薯仔、洋蔥、蜆肉,還有用來盛載周打湯的麵包都是可以填滿肚子,我們這個午餐簡單又美味。 不過吃飽了就好快點走了,以免阻礙其他人到Pike Place Clam Chowder 進食嘛!現在我只可以看著照片流口水hellip;看來明天要去煮個罐頭周打蜆湯來懷念一下! 1530 POST ALLEY, SEATTLE, WA 98101 206 2672537Daily 11AM ndash; 5PM

2017蕭敬騰《愛的樂章》 澳門音樂會門票今日公開發售
音樂聯合國
LifeMag Editor・2017-06-07

蕭敬騰自去年與范瑋琪同台於「亞洲娛樂總滙」新濠影滙演出後,將於8月重臨舉行首個在新濠影滙綜藝館的個人音樂會mdash; 2017《愛的樂章》音樂會澳門站。 金曲歌王蕭敬騰以一鳴驚人的唱腔打動無數歌迷,憑藉其「搖滾」與「抒情」兼備的獨特曲風展現著截然不同的舞台風采。8月12日,蕭敬騰將在新濠影滙綜藝館的舞台上為一眾歌迷帶來獨有的「蕭式」情歌魅力,演繹首首動人搖滾金曲。音樂會門票將於6月7日(星期三)早上11時後公開發售。 lt;2017蕭敬騰 愛的樂章 音樂會gt; 酒店住宿套票 ndash; 只需港幣$2,698起 優惠適用於2017年8月12日入住,包括: 明星經典路氹景觀客房一晚住宿 「2017蕭敬騰 愛的樂章 音樂會」C區門票兩張 澳門幣200元娛樂門票現金券 港幣$100娛樂消費券 可於室內恆溫游泳池,戶外游泳池及「綠野遊蹤」河道暢泳 免費無線上網 銀行優惠:中銀全幣種銀聯信用卡、中銀全幣種信用卡及中銀卡購票享有88折ndash; 適用於貴賓廂房、A、B、C及D區 門票 門票類別 門票票價 澳門幣港幣 貴賓廂房 24座 $35,0001 12座 $20,0001 A 區 $880 B 區 $680 C 區 $4802 D 區 $280 1 貴賓廂房包含與歌手見面合照 (24座 兩張 12座 一張)及餐飮。如欲查詢及預訂貴賓廂房,可電郵至 scecsales@scmacau.com 2 102及113區 ndash; 視線受阻。 票價以澳門幣港幣計算;座位表只供傪考之用,與實際場地略有偏差。