搜尋

搜尋結果

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

Trip.com 酒店預售優惠 – 澳門高級酒店平售!免費取消!
專題報導
MO560・2020-06-23

Trip.com 推出限時酒店預售優惠 澳門高級酒店兌換券平售!包括威尼斯人、銀河、JW萬豪、巴黎人、新濠影匯、四季 抵玩!先預訂,之後再確認入住日期!而家無得去旅行,大家都開始入住澳門酒店先,而Trip.com全新推出「酒店預售兌換券」,澳門大酒店都有份!兌換券只需提前數日網上預訂即可,兌換券使用之前更可以隨時取消並退款,非常彈性!唔好諗啦,即刻買咗先,之後再決定去唔去啦,數量有限!手快有手慢無! 所有「酒店預售兌換券」都可以隨時免費取消,而每間酒店都有各自的不可用日期,例如9月30日10月7日、聖誕節等等,請點擊酒店後查看詳情。 另一方面,因為Trip.com預訂是以HKD結算的,所以有香港AE卡的讀者更可以額外享有AE早前推出的簽賬回贈優惠! 點擊進入Trip.com 限時酒店預售優惠 威尼斯人 酒店房門票價錢:HKD$2532 2晚房型:豪華皇室套房2晚升級:7月31日前入住可免費升級至奢華皇室套房附送:酒店泳池、按摩池、健身中心、teamLab門票、玩樂通用券(貢朵拉船、巴黎鐵塔、Qube及水世界)預訂:Trip.com限時酒店預售優惠 威尼斯人 只有酒店房價錢:HKD$2110 2晚房型:豪華皇室套房2晚升級:7月31日前入住可免費升級至奢華皇室套房附送:酒店泳池、按摩池、健身中心預訂:Trip.com限時酒店預售優惠 銀河酒店價錢:HKD$889 1晚房型:城市景觀豪華大床房1晚附送:天浪淘園入場門票預訂:Trip.com限時酒店預售優惠 JW萬豪酒店價錢:HKD$1000 1晚房型:豪華大床客房1晚附送:天浪淘園入場門票預訂:Trip.com限時酒店預售優惠 巴黎人 週日至週五價錢:HKD$1331 2晚房型:豪華大床房2晚升級:7月31日前入住可免費升級至艾菲爾套房附送:酒店泳池、健身中心預訂:Trip.com限時酒店預售優惠 巴黎人 部份週六、大床房價錢:HKD$1553 2晚房型:豪華大床房2晚升級:7月31日前入住可免費升級至艾菲爾套房附送:酒店泳池、健身中心預訂:Trip.com限時酒店預售優惠 巴黎人 部份週六、雙床房價錢:HKD$1553 2晚房型:豪華雙床房2晚升級:7月31日前入住可免費升級至艾菲爾套房附送:酒店泳池、健身中心預訂:Trip.com限時酒店預售優惠 新濠影匯酒店價錢:HKD$1433 1晚房型:明星經典景觀大床房1晚附送:MOP$200餐飲現金券、MOP$200手部及足部護理現金券、影滙之星摩天輪門票、傳奇英雄科技城2小時門票、延遲退房至下午2點預訂:Trip.com限時酒店預售優惠 四季酒店價錢:HKD$4378 2晚房型:豪華房2晚附送:兩位用英式下午茶、免費早餐預訂:Trip.com限時酒店預售優惠 皇冠假日酒店價錢:HKD$659 1晚房型:皇冠高級房1晚附送:免費早餐預訂:Trip.com限時酒店預售優惠 十六浦索菲特大酒店價錢:HKD$759 1晚房型:高級客房1晚附送:免費早餐預訂:Trip.com限時酒店預售優惠 假日酒店價錢:HKD$499 1晚房型:高級房1晚附送:免費早餐預訂:Trip.com限時酒店預售優惠 緊貼最新最潮澳門信用卡、飛行里數、旅遊資訊,記得讚好MO560的Facebook! 如想查看更多詳情,請到MO560的網站查看。 更多詳情關於本次活動,可查看 ndash; Trip.com 限時預售優惠 喜歡小編的文章嗎?比個Like支持我啦 Facebook MO560Instagram mo560_travelWebsite httpsmotravel.info 想追蹤最新最潮澳門信用卡、飛行里數、旅遊資訊?將MO560設定為 「搶先看See First」!

西班牙︱地中海的天堂小島 馬略卡 帕爾馬
走遍世界
行走世界記錄・2019-07-30

渡假天堂 馬略卡島 西班牙東部沿海有多個小島組成的巴利阿里群島 Islas Baleares,屬於加泰羅尼亞地區管治。巴利阿里群島主要由4大群島組成,當中最為人熟悉的是馬略卡島 Mallorca,每年有數千萬的旅客到來享受小島的地中海的陽光。位處西地中海的馬略卡島,夏天陽光充沛而溫暖,冬天清涼而多雨,偶爾下雪,確實是歐洲人的渡假天堂。 古羅馬 馬略卡王國 巴利阿里群島曾經給不同的民族統治,汪達爾 拜占庭 摩爾 亞拉貢,13世紀時建立了馬略上王國Reino de Mallorca,馬略卡島為王國的政治中心,直至亞拉貢王國把它吞併。 馬略卡島於14世紀後成為自治區,由於悠久的歷史及多元的文化植根小島,19世紀開始吸引不少名人到來,慢慢發展成旅遊熱點,吸引不少英國及德國的遊客蜂擁而至。西班牙就是流傳著一則笑話:來馬略卡島學西班牙語? 絕對不是,你應該到馬略卡島學習德語呢! 首府 帕爾馬 帕爾馬 Palma 曾經是馬略卡王國的首都,如今仍然是馬略卡島的首府,要領略馬略卡島的風情,首要領略帕爾馬。從西班牙城市乘搭飛機或者渡輪到達首府帕爾馬,然後自駕或乘搭公共交通工具,開啟地中海小島的體驗之旅。 帕爾馬機場 帕爾馬是馬略卡主要機場,帕爾馬機場 Aeropuerto de Palma de Mallorca 代碼PMI座落於首府帕爾馬 Palma,它的繁忙程度僅次於馬德里機場,個多小時便到達這個地中海風情小島,一踏出機場便感覺像到了泰國似的,真想稱呼它為歐洲小泰國呢! 出機場到右手邊的車站乘21號巴士便可到市中心,建議選擇機場沿線的旅館住宿,往返機場很方便,從機場到市中心約30分鐘,途中會經過帕爾馬水族館,水族館對面便是人氣旺盛的海灘以及美食酒吧街。 21號機場巴士 星期一至日,運行時間 7002100 往機場方向 7002210 往 Srsquo;Arenal方向,每30分鐘一班車。如需要到迷人的海灘酒吧街,可在Ses Fontanelles Aquagrave;rium Palma 站下車;如果需要到租車公司則可在總站Srsquo;Arenal下車,注意的是21號巴士不往帕爾馬市中心的。 1號市內巴士 星期一至日,運行時間 600凌晨110 ,每15分鐘一班車。 另外亦有城際巴士往返帕爾馬機場: Line A11 PegueraMagalufAirport Line A32 Can PicafortPlatja MuroAlcuacute;diaAirport Line A42 Cala BonaCala MillorAirport Line A51 Camposs'Arenal de LlucmajorAirport 交通 帕爾馬的交通很簡單,市內及市外的巴士以及的士是一般的大眾集體運輸工具,另外自駕遊玩的亦為數不少。由於小島很多景點是位於山崖海邊,自駕遊相對方便,但小編的習慣素來偏向不自駕,因此,公交資訊不可缺。 市內巴士 市內巴士由EMT營運30多條巴士路線到達帕爾馬各個地方,市中心可在西班牙廣場Placcedil;a d'Espanya下車。如需要轉至馬略卡島的其他小鎮,可以在西班牙廣場Placcedil;a d'Espanya的中央車站轉乘城際巴士。 相片來源:EMT 中央車站 帕爾馬市中心的西班牙廣場有中央車站,可選乘地鐵或汽車。帕爾馬有兩條地鐵線,由於站點不靠近旅遊景點,旅客不會選擇地鐵。汽車則可到達馬略卡島的各個城鎮。 地鐵 城際巴士 中央車站內右手旁設有售票處,查好汽車班次,購票後往下層便見到汽車停靠站,從帕爾馬乘汽車到法德摩薩只需30分鐘,以一個海島來說,除了自駕,交通也相當便利。 Soller木頭小火車站 中央車站旁邊有一個圓拱鐵花門,寫有Ferrocarril de Soacute;ller ,就是古頭火車的名字。在售票窗問好時刻表,跳上月台邊的一列木製小火車,轟隆轟隆出發到Soller海港,享受地中海的海港風情。 水族館 這次旅程選擇住進海灘附近的酒店,當飛機降落帕爾馬機場,乘搭21號巴士到達下榻的酒店,下車時看到帕爾馬水族館,於是趕緊在關門前進去跑一轉。 帕爾馬水族館 Palma Aquagrave;rium地方不算很大,但來自地中海,太平洋和大西洋的海洋生物也有200多種,吸引我進入水族館的賣點是觀鯊船,坐在船上腳踏玻璃,大大小小的魚群游走在你的腳下,不時有鯊魚在你腳下游來游去。可惜的是,關門前的1小時進場,跑到觀鯊區時,這個區域已關閉,只好跑回下層隔著玻璃欣賞海洋世界。 由於遊客不多,看到很多大人小孩坐在地上靜心探索來自世界各地的海洋物種的美態,跟一般亞洲地區的觀賞文化好像有一點點的不同。另外這裡亦有一個全西班牙最大的屋頂叢林,喜歡大自然的話,也值得在這個水族館花上時間。 帕爾馬海灘 水族館前就是帕爾馬的海灘 Playa de Palma,藍天白雲下襯托下的海灘成為著名的渡假勝地。綿長的海岸線酒店林立,有各種水上活動與水上樂園,游泳、漫步沙灘,真的是動靜皆宜。 黃昏時份,靜靜地坐在沙灘上,觀賞美麗而浪漫的夕陽,這是地中海風情的一部份吧! 沙灘旁有一條長長的海濱長廊,長廊左右兩旁種滿高高的棕櫚樹,充滿亞熱帶風情,難怪會禁不住稱它為歐洲小泰國。海濱長廊一旁靠近沙灘,另一旁亦很多酒吧和餐廳,當置身於長廊之中,周圍的環境會讓你有一種迷失的感覺,為什麼呢? 棕櫚樹下人來人往,一張一張的歐洲人面孔,說著的是一口流利的德語,路旁的餐廳門前放著一個又一個的餐牌,看著牌子上面寫有的文字,心裡暗叫:不可能吧!這些不像是西班牙語,也不似是加泰羅尼亞語,這更像是德語啊!是時空混淆了嗎?原來德國人到帕爾馬,就像我們經常到泰國一樣,因此商舖也因應顧客對象而換上德語以示歡迎。 帕爾馬市中心 市中心是帕爾馬的繁忙地段,大街上的百貨公司與中央車站,人來熙往的大街小巷。不過,市中心的生活面貌跟西班牙一般城市沒甚麼兩樣,不太像置身於地中海的渡假小島,但是生活機能非常便利。 西班牙廣場 幾乎每個西班牙城市都有一個西班牙廣場,馬略卡的帕爾馬亦不例外,主幹大道上的西班牙廣場是以加泰羅尼亞語作標記 Placcedil;a d'Espanya,街道小巷也是沿著廣場向四周擴散,商舖林立的小巷是旅人們探秘尋寶的好去處。 阿爾穆德納皇宮 帕爾馬的遊艇俱樂部附近有一座摩爾式皇宮,在西班牙的收復失地運動前,這片土地的主人為信奉伊斯蘭教的摩爾人,這座摩爾人皇宮名叫阿爾穆德納皇宮 Palau de la Almudaina。 眾所周知,西方國家在過往的歷史當中,伊斯蘭教與羅馬天主教在國土爭奪戰中一直你追我逐,只能一王稱霸,勝方為土地的擁有者。馬略卡島上的伊斯蘭教舊主也逃不過這法則,犘爾人原為帕爾馬的主人,他們所建造的皇宮,花園的格局,極具伊斯蘭教風。 帕爾馬大教堂 摩爾風格的阿爾穆德納皇宮旁邊則有一座帕爾馬大教堂 Catedral de Santa Mariacute;a de Palma de Mallorca,哥德式教堂是在原清青寺上建起的,成為羅馬天主教在馬略卡上的教區主教堂,就是這片土地的新主人。帕爾馬大教堂的一大特色就是教堂前的大水池,跑到對面便可看到倒影中的大教堂,獨特的小島風情使教堂看起來非常休閒美麗。 超現實主義大師 米羅博物館 帕爾馬保留了數百年的歷史風貌,又不失地中海風情,古今兼備的環境吸引不少德國與英國的富豪來到小島的首府過著寫意的退休生活,住進富宅駕駛遊艇,閒時繪畫散步,,帕爾馬一躍成為退休天堂。 米羅是西班牙現代藝術三傑之一,名氣絕不亞於畢卡索,這裡有米羅的博物館 Fundacioacute;Pilar I Joan Miroacute;。太陽 女人 小鳥與星星是米羅的創作特色,以鮮艷奪目的顏色襯托出一幅又一幅米羅作品。小島吸引米羅來到並渡過人生的最後時光,米羅博物館內展出後多米羅的作品,同時亦有米羅的創作工作室,擺放著很多畫作及雕塑工具以及巨大的畫作,因此,他的離去卻留下大量了創作靈感與巨大財富。 地中海的渡假天堂 富豪的退休之選 西班牙馬略卡島 更多精彩遊記 在行走世界記錄

Ceph Storage 水很深
科技新知
MacauYeah・2024-09-25

筆者不才,早前為大家介紹了一篇關於Ceph Storage的最入門安裝教學。但在後續測試中,發現了一些概念上的問題,需要盡早說明,不然就會像筆者一樣,要砍掉重來很多次。 OSD HDD Ceph Storage的主要功能,就是為Contiainer提供外置儲存空間,它對儲存空間有特定的要求。我們最好在建立ceph clustercephadm bootstrap之前,就為每個node上增加合適的HDD 引述官方說明 OSD Object Storage Daemons The device must have no partitions. The device must not have any LVM state. The device must not be mounted. The device must not contain a file system. The device must not contain a Ceph BlueStore OSD. The device must be larger than 5 GB. 簡而言之,大家需要準備新的HDD,不要做任何格式化,讓OS見到HDD但不作任何操作。筆者試過,使用hyperv VM hyperv HDD,也是可以做到的。不過之前筆者於教學中用的 multipass 就沒有這個模擬HDD功能,我們需要使用比較強大的VM作為實驗。 若然HDD是在ceph clustercephadm bootstrap建立之前,就存在的。我們可以經過ceph的網頁介面,或經指令自動加入。 ceph orch apply osd allavailabledevices 若然HDD是在ceph clustercephadm bootstrap建立之後,才加入的。那麼ceph有機會沒法自動發現它,筆者當前的dev版本就出現這問題。我們就需要經指令手動增加 ceph orch daemon add osd NODENAMEdevsdb OSD 官方說明文件 httpsdocs.ceph.comenreefcephadmservicesosd#cephadmdeployosds Reset 在我們做實驗時,若我們想回復到上一個狀態,測試不同的參數差異,Ceph指令並不會即時執行。例如前一句的add osd,想倒回來自行刪掉一些osd,即 ceph orch osd rm OSDID 它就會排隊慢慢做刪除。 但這個過程筆者未有成功過,OSD一直處於繁忙狀態。有機會是因為系統需要保持同步狀態,待成功遷移資料前,什麼都不能動,所以一直都在待刪除的狀態中。 同樣地,當我們想要刪除一些node時,我們使用以下指令 ceph orch host drain NODENAME ceph orch host rm NODENAME 最後也是會卡在刪除OSD的情況 Removing Hosts 官方說明文件 httpsdocs.ceph.comenreefcephadmhostmanagement Static IP 因為 container 技術,很多都需要固定 IP ,我們做實驗之前,最好先了解你的VM engine如果提供Static ip 。以 hyperv 建立的 VM ,其實可以同時建立兩張網卡的,一張為預設網卡,用於連網用,另一張則設定為內部網絡。在安裝 ceph 時,經 cephadm bootstrap 所引用的IP則設定為內部網絡的IP。之後基本上使用任何一張網卡的 ip ,也可以訪問到cephadm的網頁介面。如果不是在一開始的階段上準備Static IP ,我們又會在重設解綁cluster時,同樣因為機器繁忙而卡在不上不下的狀況。

收藏高質遊戲攻略 - UCG典藏攻略系列
手機‧電玩
MacauYeah・2022-11-15

早前在5月份的時候,就為大家介紹了UCG這個內地的國產遊戲雜誌。當時筆者購入的攻略典藏並不多,就只有《鬼泣 終極檔案》一本,其他都只屬於設定集,所以並不敢斷言它的攻略質量。直到最近,筆者看了它的【艾爾登法環攻略本】和【掌機王 NS Vol.SP 怪物獵人 崛起】內地譯怪物獵人,港台譯魔物獵人後,實在大開眼界,所以不得不再一次推薦它。 先說一說筆者比較攻略質量的準則。首先筆者並不以最快攻略為目準,反而更看重有沒有完整介紹一隻遊戲,再來就是編章整理找尋資料的難易度。 以各類網媒來說,例如巴哈、HK01、游俠網,這些網站都著重於快速攻略,加上搜尋引擎的幫助,突發地找些資料,總是很方便的找到。但以遊戲指引來說,他們都很少可以從頭到尾有一個體貼的教學,跟著他們走而又想大大地體驗不同支線,要走兩、三週目一定少不了。一來看他們攻略產生的方式都以素人各自編寫為主,二來一切也是用愛發電,能有效校正已正已經很偉大。想要有條理地,盡可能完整地介紹,變得不太可能。 但作為網媒和紙媒混合的UCG來說,推出典藏攻略,就成了他們最有能力的事。作為有資歷的媒體,他們有機會取得遊戲先行版,可以提前開始編寫攻略。而且他們並不是跟網媒拼首發搶流量,不需要隨遊戲發售第一時間就推出典藏攻略當然他們也有週刊的短期攻略,他們反而是在遊戲更新穩定後才推出經修訂的典藏版,整體品質高下立見。 以【掌機王 NS Vol.SP 怪物獵人 崛起】為例,它所載的內容是以3.1.0版本為準,而3.0.0是DLC發售前的最後一個遊戲內容正式更新,距離遊戲首發,中間可是經歷了兩個大版本的改變。在以【破關了就封存】的Game迷民俗習慢來說,經歷了一段時間才推出的話,受眾讀者絕不是隨便玩玩的Game迷。就本書而言,它的資料搜集量真的大,各種武器、防具的制作素材都有列出,雖然未能做到配裝推薦,但這份強逼症,而夠顯示制作組的恆心。再來就是怪物攻略要點,對完全沒有接觸過系列作的新人們,很具有參考價值。而且各項練金迷一樣的遊戲設定,都以表格條列式解釋。這可不是一般制作組願意附出的努力對比之前香港的Great Game電玩文庫的魔物獵人世界的狩獵手冊,GG的實在太沒有誠意 比較遺憾,遊戲的DLC編章還在有序更新中,想要現在就買到對應攻略,應該還要等個幾個月。不過適逢雙十一,筆者亦繼續加購UCG的其他作品。待筆者好好檢閱後,再為大家推介值得一看的書籍收藏品。 UCG商城連結筆者就不在這裏分享了,大家在某寶上搜【UCG商城】就可以找到,它還有一家【UCG奧特萊斯】,就專賣一些過氣大作的攻略本,價錢上會更有優勢

【馬交慳多拿baby】聚餐必備餐飲優惠!自助餐、日料、中西餐優惠大集合 - 29.10.2021
生活在我城
Cheers!・2021-10-29

歡迎收睇《馬交慳多拿Baby》,臨近年尾,又點少得同親朋好友聚下餐,update下近況!今期為大家帶嚟多個餐飲優惠,想知就繼續睇落去啦~ 1.西班牙餐廳巴塞隆拿單點 85 折 氹仔舊城區嘅西班牙餐廳巴塞隆拿推出單點優惠,全部菜品都係 85 折!想搵個地方同朋友chill返下可以考慮下! 2.江戶日本料理外賣壽司盤一盤 $350,兩盤 $600 向來小貴嘅江戶日本料理,依家推出嘅外賣壽司盤非常抵食,雜錦壽司拼盤一盤 $350,兩盤 $600!特色卷物仲買一送一,平時堂食絕對唔止呢個價,打電話預訂就得啦~ 3.澳門上葡京「自助山」及「茶樓」8 折 澳門上葡京擁有高人氣嘅「自助山」同埋「茶樓」都推出澳門人專享優惠。逢星期一至五去「自助山」食午巿自助餐即享 8 折,而夜晚去「茶樓」叫單點菜式都係 8 折,優惠期到 11 月底咋,快啲把握機會喇! 4.澳門十六浦十六八餐廳推出「富貴佛跳牆」,提前一日預訂$138 澳門十六浦嘅十六八餐廳推出滋補養生嘅「富貴佛跳牆」,加入各款高級食材包括鮑魚、魚翅、花膠等熬製,依家提前一日預訂只要 $138!天氣轉涼,同屋企人一齊補下喇~ 5.澳門旅遊塔嘅自助套餐 聖誕節一於預訂澳門旅遊塔嘅自助套餐啦~包括澳門旅遊塔觀光層門票 10 張、餐飲現金券 $500,每枱更送一支精選紅酒!大家族啱晒~

台灣虎航多同行優惠、平均每來回連稅HKD764起!
激安優惠
OHChance 旅遊誌・2020-01-03

下載 OHChance 手機 APP, 特價資訊直送你手!   台灣虎航今天推出多人同行優惠,23人同行75折、4人或以上同行打65折(只要是佔位的都算一人,所以大人及2歲以上小童票都計)。跟過往一樣,如果票價高到某個程度(目測是單程1000左右)就不會折。今次出行日期有包括暑假,都有可能打到折平返少少。  再提提大家,未有護照資料不要緊,只要確定姓名、性別、出生日期打對就ok,護照資料可以預訂後自行上官網修改。方法請參考:httpsohnote.infotigerair_manage_booking  《平均每人優惠價錢(來回連稅及預訂費)》 (75折65折)*澳門-台北台中高雄:HKD820 764*台北台中高雄-澳門:TWD2,968 2,768   《出發日期及最長停留》.出發日期:即日起至10月24日.最長停留:不限  《購票日期及方法》.購票日期:1月5日2359前預訂.預訂方法:台灣虎航官網或機票預訂網站.預訂網址:httpswww.tigerairtw.comzhtw       【行李資訊】.虎航tigerlight票價只包10KG手提行李額  附註:上述最低價錢為航空公司公告之最優惠價格,或本站能找到的最低價格;每一航班有否優惠票價及所存票量由航空公司決定,優惠票量有限售完即止。  價錢 Sample - 4人同行澳門飛台灣三航點價格(未包括HKD130預訂費) === 想搵平機票去玩,即上 OH!Chance!澳燦旅行資訊 httpsohchance.info 去日本旅行買咩 JR Pass好?即上 OH!Note!小燦的旅行筆記做功課 httpsohnote.info 唔知間航空公司好唔好坐?馬上 Subscribe OH Chance Youtube 睇睇佢:httpsyoutube.comcOHChanceTravel 睇埋 Facebook 專頁 httpsfb.comohchance 第一時間獲得最新旅遊資訊!

ANA BlackFriday 大促銷!香港飛東京、大阪來回連稅HKD2,455起!
激安優惠
OHChance 旅遊誌・2019-11-29

下載 OHChance 手機 APP, 特價資訊直送你手!   今次 BlackFriday ANA 放大絕!坐全日空飛日本連2500都唔使,轉飛日本國內其他航點只需俾稅金,好像北海道極北稚內3000唔使,仲可以中停東京大阪,真係史無前例咁抵玩! 《優惠價錢(來回連稅)》 直飛航點:*東 京:HKD2,923*大 阪:HKD2,455  轉機航點:*札 幌:HKD3,005*稚 內:HKD2,965*女滿別:HKD2,965*函 館:HKD3,115*帶 廣:HKD2,965*釧 路:HKD2,965*旭 川:HKD2,965*八丈島:HKD2,965 (尚有更多日本國內航點可自行查詢)   《出發日期及最長停留》.出發日期:1月6日至19日大阪      1月8日至15日東京      2月1日至3月19日大阪      2月1日至3月31日東京      4月15日至22日東京大阪      5月8日至6月18日東京大阪      7月2日至9日東京大阪      8月27日至9月24日東京大阪.最長停留:10天   《購票日期及方法》.購票日期:12月3日2359前預訂.購票方法:全日空航空官網.預訂網址:httpswww.ana.co.jpzhhk  【行李資訊】.ANA票價包括2件各23KG託運行李及手提行李10KG  附註:上述最低價錢為航空公司公告之最優惠價格,或本站能找到的最低價格;每一航班有否優惠票價及所存票量由航空公司決定,優惠票量有限售完即止。  價錢 Sample ndash; 香港飛稚內、回程札幌飛東京停留回港,全程來回連稅HKD3,008 === 想搵平機票去玩,即上 OH!Chance!澳燦旅行資訊 httpsohchance.info 去日本旅行買咩 JR Pass好?即上 OH!Note!小燦的旅行筆記做功課 httpsohnote.info 唔知間航空公司好唔好坐?馬上 Subscribe OH Chance Youtube 睇睇佢:httpsyoutube.comcOHChanceTravel 睇埋 Facebook 專頁 httpsfb.comohchance 第一時間獲得最新旅遊資訊!

真航空增班促銷!澳門直飛首爾來回連稅HKD1,152起!
激安優惠
OHChance 旅遊誌・2019-10-10

真航空10月27日起增加澳門-首爾航線班次至一天兩班,終於出增班優惠,連單程都有喔!所以同過往一樣,就算買來回都可以分拆成兩張單程買,會慳百幾蚊燃油附加費架! 真航票價包埋15KG行李,1200唔使就可以飛轉韓國,而且新季度航班有日間機添,唔鐘意深夜機的版友可以試試啦。 如果碰上付款出現問題,可以嘗試在付款頁面 ldquo;認證方法rdquo; 部份,選 ldquo;未驗證付款rdquo;,這樣就不用收 sms 驗證碼,但注意以此方法付款需要付款人為乘客之一,且航空公司有機會在櫃檯要求出示買機票時的信用卡。 《優惠價錢(來回連稅)》*澳門首爾:HKD1,302(來回)*澳門首爾:HKD627(單程)*首爾澳門:HKD525(單程) (兩張單程自組來回 = HKD627525=HKD1,152)    《出發日期及最長停留》.出發日期:10月27日至12月19日.最長停留:不限  《購票日期及方法》.購票日期:10月26日2259前預訂.預訂方法:真航空官網.預訂網址:httpswww.jinair.com  【行李資訊】.真航空票價包括15KG托運行李額及10KG手提行李  附註:上述最低價錢為航空公司公告之最優惠價格,或本站能找到的最低價格;每一航班有否優惠票價及所存票量由航空公司決定,優惠票量有限售完即止。 下載 OHChance 手機 APP, 特價資訊直送你手!     價錢 Sample ndash; 澳門飛首爾及回澳單程 === 想搵平機票去玩,即上 OH!Chance!澳燦旅行資訊 httpsohchance.info 去日本旅行買咩 JR Pass好?即上 OH!Note!小燦的旅行筆記做功課 httpsohnote.info 唔知間航空公司好唔好坐?馬上 Subscribe OH Chance Youtube 睇睇佢:httpsyoutube.comcOHChanceTravel 睇埋 Facebook 專頁 httpsfb.comohchance 第一時間獲得最新旅遊資訊!

這個土豪國家以前去不到,以後可以落地簽去了。。。
旅遊情報
OHChance 旅遊誌・2019-09-27

沙特阿拉伯過去幾乎是完全沒有旅遊業的地方,因為是沒有普通的觀光簽證。 今天起改變了!沙特宣佈向49個國家地區開放落地簽證,當中包括中國(澳門及香港特區護照適用),葡國護照也是可用之列! 目前 IATA的簽證資訊頁面已更新,顯示中國護照、澳門香港特區護照、葡國護照都是可獲得落地簽證。 落地簽證費為300沙特里亞爾(80美元),而且需要購買一份沙特適用的醫療保險(140里亞爾)及提供在沙特的暫住地址。最長可以停留30天,但非伊斯蘭信徒仍然禁止進入麥加及麥地那。 沙特阿拉伯首都利雅特是非常現代化的都市 當然廣大的沙漠是不可以少的。。。 如果想去的話,最近是有廣州直飛,另外馬來西亞、馬尼拉也有航班前往。 不過去馬尼拉飛最划算,8000蚊就坐到 business 來回了! 有興趣的話plan plan佢啦~ 下載 OHChance 手機 APP, 特價資訊直送你手!   想搵平機票去玩,即上 OH!Chance!澳燦旅行資訊 httpsohchance.info 去日本旅行買咩 JR Pass好?即上 OH!Note!小燦的旅行筆記做功課 httpsohnote.info 唔知間航空公司好唔好坐?馬上 Subscribe OH Chance Youtube 睇睇佢:httpsyoutube.comcOHChanceTravel 睇埋 Facebook 專頁 httpsfb.comohchance 第一時間獲得最新旅遊資訊!

聯合航空香港經關島轉機夏威夷 HKD3,828起!
激安優惠
OHChance 旅遊誌・2018-06-06

聯合航空目前有一批不錯價格的夏威夷機票,香港出發經關島轉機唔使4000,而且唔怕辛苦仲可以搭 ldquo;跳島航線rdquo; 架(雖然唔能夠停島玩)。另外發現去程或回程可以選擇中停東京,雖然要加成1400銀,但去完夏威夷玩水再去東京玩呢口價都ok! 另外可能會發現去程在關島的轉機時間只有35分鐘、回程轉機時間 45分鐘。聯合航空於關島的最短轉機時限是30分,他們亦會視情況讓接駁的航班等埋轉機客先起飛。如果真係擔心,亦可以選擇經東京轉機的航班,最低只貴70蚊,一般就貴200左右。 如果想去程或回程中停東京,請使用預訂系統的 ldquo;多個城市rdquo; 功能。另外中停日數似乎無特別限制,只要由香港出發至返回香港(即整個行程)是在1個月內都ok。 《優惠價錢(來回連稅)》 (經關島)*香港hArr;夏威夷檀香山:HKD3,828 (經東京)*香港hArr;夏威夷檀香山:HKD3,898 (去程或回程中停東京)*香港hArr;夏威夷檀香山:HKD5,222 (如經東京轉機或中停東京,香港-東京的航班由 ANA執飛)  《出發日期及最長停留》.出發日期:9月3日至12月17日.最長停留:1個月   《購票日期及方法》.購票日期:售完即止.購票方法:至聯合航空官網.預訂網址:httpswww.united.comualzhhkhk  【輔助訊息】.聯合航空經濟艙票價已包2件各23KG免費託運行李及餐點。.美國簽證申請經驗:httpohnote.ohchance.infousavisa  附註:上述最低價錢為航空公司公告之最優惠價格,或本站能找到的最低價格;每一航班有否優惠票價及所存票量由航空公司決定,優惠票量有限售完即止。  價錢 Sample ndash; 香港飛夏威夷檀香山來回連稅HKD3,828 ===== 想搵平機票去玩,即上 OH!Chance!澳燦旅行資訊 httpohchance.info 去日本旅行買咩 JR Pass好?唔知間航空公司好唔好坐?即上 OH!Note!小燦的旅行筆記做功課 httpohnote.ohchance.info 睇埋 Facebook 專頁 httpsfb.comohchance 第一時間獲得最新旅遊資訊!