搜尋

搜尋結果

架設 Squid proxy,作為國産 Linux RPM 安裝包更新的 RPM proxy
科技新知
MacauYeah・2026-02-26

前編我們介紹了 Qemu 運行國産OS做快速測試。應該基本使用大家都可以實驗到。 在投産環境上,我們通常還要控制它的kernel或lib版本更新,但這麼多的不同OS版本,想一次過做rpm mirror,並不太實際。 若以監管為目標,那些不同種類的OS,限制互聯網存取,統一經過某個http proxy的取得RPM更新,應該是一個最低成本的做法。 本文就來介紹一下,使用Ubuntu 24建設 Squid http proxy,達到rpm proxy的結果。 ubuntu 24.04 squid settings aptget update amp;amp; aptget install squid vim etcsquidsquid.conf 約在1404行,指定一個新的aclaccess control list名字,fixip, 它的允許來源IP是你的rpm base OS # around line 1404, add acl fixip src xxx.xxx.xxx.xxx 約在1627行, 放行新的acl # around line 1627, add http_access allow fixip rpm os settings 在rpm base的OS上,通常在 etcyum.repos.d 低下就找到它們的 rpm 包來源為置,在每個來源上加上 proxy 設定,就可以了。 Anolis OS 8 因為rpm來源眾多,我們只想讓其中兩個經proxy更新,例如 etcyum.repos.dAnolisOSAppStream.repo, etcyum.repos.dAnolisOSBaseOS.repo, 最在後加入 proxy=httpyyy.yyy.yyy.yyy3128。 yyy.yyy.yyy.yyy 就是設了 Squid的機器 AppStream name=AnolisOS$releasever AppStream baseurl=httpmirrors.openanolis.cnanolis$releaseverAppStream$basearchos enabled=1 gpgkey=fileetcpkirpmgpgRPMGPGKEYANOLIS gpgcheck=1 proxy=httpyyy.yyy.yyy.yyy3128 BaseOS name=AnolisOS$releasever BaseOS baseurl=httpmirrors.openanolis.cnanolis$releaseverBaseOS$basearchos enabled=1 gpgkey=fileetcpkirpmgpgRPMGPGKEYANOLIS gpgcheck=1 proxy=httpyyy.yyy.yyy.yyy3128 OpenEuler 22 來源檔只有一個,etcyum.repos.dopenEuler.repo, 但內存多個section, 需要在每個section的尾段,加入 proxy=httpyyy.yyy.yyy.yyy3128 OS name=OS baseurl=httprepo.openeuler.orgopenEuler22.03LTSSP4OS$basearch metalink=httpsmirrors.openeuler.orgmetalinkrepo=$releaseverOSamp;arch=$basearch metadata_expire=1h enabled=1 gpgcheck=1 gpgkey=httprepo.openeuler.orgopenEuler22.03LTSSP4OS$basearchRPMGPGKEYopenEuler proxy=httpyyy.yyy.yyy.yyy3128 everything name=everything baseurl=httprepo.openeuler.orgopenEuler22.03LTSSP4everything$basearch metalink=httpsmirrors.openeuler.orgmetalinkrepo=$releasevereverythingamp;arch=$basearch metadata_expire=1h enabled=1 gpgcheck=1 gpgkey=httprepo.openeuler.orgopenEuler22.03LTSSP4everything$basearchRPMGPGKEYopenEuler proxy=httpyyy.yyy.yyy.yyy3128 ... ... update name=update baseurl=httprepo.openeuler.orgopenEuler22.03LTSSP4update$basearch metalink=httpsmirrors.openeuler.orgmetalinkrepo=$releaseverupdateamp;arch=$basearch metadata_expire=1h enabled=1 gpgcheck=1 gpgkey=httprepo.openeuler.orgopenEuler22.03LTSSP4OS$basearchRPMGPGKEYopenEuler proxy=httpyyy.yyy.yyy.yyy3128 ... ... 指令 我們可以先用curl,來測試一下最基本的連線。請確保指令是在最初定義的xxx.xxx.xxx.xxx範圍內。 curl v x httpyyy.yyy.yyy.yyy3128 httpmirrors.openanolis.cnanolis8.10 部份更新指令 由於我們前述 rpm 包並不是所有都加了proxy,我們只限定某些進行更新,所以我們使用disablerepo enablerepo來限制指定的更新來源。 # anolis dnf install disablerepo='' enablerepo='BaseOS' 'tmux' dnf upgrade disablerepo='' enablerepo='kernel5.10' 'kernel' # openeuler dnf install disablerepo='' enablerepo='everything' tmux dnf upgrade disablerepo='' enablerepo='update' 'kernel' 參考連結 squid tutorial httpswww.digitalocean.comcommunitytutorialshowtosetupsquidproxyonubuntu2004 yum proxy tutorial httpswww.baeldung.comlinuxyumdnfrepositoriessetproxy

Spring boot 10 - openapi 生成器 - spring boot java client
科技新知
MacauYeah・2025-08-19

之前我們在介紹Spring Boot Web 調試工具 ,就試安裝 openapi 相關的元件。其實 openapi 並不單是為了提供 swagger 測試介面,它主要是提供一個描述的方式,讓我們針對一個特定 openapi 文件,生成對應的 api server 或 api client 接口。也就是,如果 server 方有提供該文件,道理上可以經 openapi 的工具,生成一個可以直接訪問 server 的 client library。本節,可以沿用之前的 spring boot web api doc ,為它產生一個client library 作為實驗。 在生成 client library 之前,我們還需要一個工具 openapigeneratorcli 。最簡單的取得方式,就是經過 npm , 在你需要生成 client library 的專案中,安裝你需要的 openapigeneratorcli 版本。 npm install @openapitoolsopenapigeneratorcli 那怕你不是使用 nodejs 作為開發,也可以經過這個方法安裝。它只提供使用 cmd 指令的捷徑。 生成 Java Client Library 我們先把 backend server 起好 cd somewhere amp;amp; mvn springbootrun,然後使用 openapigeneratorcli 去生成以 java spring boot 3 為底的 client library 。 npx openapigeneratorcli generate i httplocalhost8080v3apidocs apipackage io.github.macauyeah.springboot.tutorial.openapiclient.api modelpackage io.github.macauyeah.springboot.tutorial.openapiclient.model invokerpackage io.github.macauyeah.springboot.tutorial.openapiclient.invoker groupid io.github.macauyeah.springboot.tutorial artifactid springbootwebapiopenapiclient artifactversion 0.0.1SNAPSHOT g java p useJakartaEe=true p useSpringBoot3=true library webclient o springbootwebapiopenapiclient 生成的 source code 就像是 springbootwebapiopenapiclient ,具體的使用方式,可以看看測試用例 ApiControllerApiTest.java private final ApiControllerApi api = new ApiControllerApi; @Test public void postDateQueryTest default call ApiDateRequest apiDateRequest = new ApiDateRequest; apiDateRequest.setInputDateOffsetDateTime.now; LOG.debugquot;default web client postDateQueryquot;, api.postDateQueryapiDateRequest.block; replace webClient in ApiClient if you have special auth config on webClient, you can also change basePath during new obj creation ObjectMapper mapper = new ObjectMapper; mapper.setDateFormatnew SimpleDateFormat; mapper.registerModulenew JavaTimeModule; WebClient webClient = WebClient.builder .codecsconfigurer gt; configurer.defaultCodecs.jackson2JsonDecodernew Jackson2JsonDecodermapper; configurer.defaultCodecs.jackson2JsonEncodernew Jackson2JsonEncodermapper; .build; ApiControllerApi api2 = new ApiControllerApi new ApiClientwebClient .setBasePathquot;httplocalhost8080quot;; LOG.debugquot;create api2 by local web client postDateQueryquot;, api2.postDateQueryapiDateRequest.block; use webClient directly String response = webClient.post.uriquot;httplocalhost8080apirecordquot;.bodyValueapiDateRequest.retrieve .bodyToMonoString.class.block; LOG.debugquot;request by local web client postDateQueryquot;, response; 上述例子中,如果大家沒有任何特殊要求,其實經過 api.postDateQueryapiDateRequest.block 就完成了。有需要改 api endpoint 的,只要生成新的 ApiClient 並設定 basePath new ApiClient.setBasePathquot;XXXXXXquot; 就好。真的要加入更多權限設定,就需要生成新的 ApiClient 並設定 webClient new ApiClientwebClient 這個生成的 Java Client Library 道理上還是要經過 maven 等打包,變成 jar 檔,才能被其他 Java 專案所引用。筆者就建議大家直接把成生的視為獨立的 module sub module 存放,其他專案就以 maven dependency 的方式引用。想要混合現有專案,動態生成專案內某些 java package,暫時不太可行。因為它也有大量的 dependency ,交由 openapigeneratorcli 自己管理會比較好,它們升級時,你也可以完整升級。 openapigeneratorcli httpsgithub.comOpenAPIToolsopenapigeneratorcli springbootwebapiopenapiclient

如懸浮於時空宇宙的 ※屏山峽谷※
旅遊情報
莫雪・2024-03-22

如懸浮於時空宇宙的 ※ 屏山峽谷 ※ 洞庭湖以北一帶劃稱為湖北, 湖北省恩施土家族 恩施自治洲屏山村的屏山峽谷, 地處深谷下的屏山峽谷, 非常考驗腳力, 進、出皆通過狹隘的地洞, 一個接一個的狹長山洞, 不知轉了多少個、幾多灣。 只知道進入屏山峽谷與離開峽谷皆需要 踏上586級的山洞樓梯級, 世外桃源般的風景, 總在困難後給你洗滌心靈, 終於走到養在深谷裡, 清澈見底的峽谷潭水邊了, 準備坐上小船, 在狹長窄隘水道仰望兩邊山崖, 兩岸絶壁之上岩灌倒掛, 藤蔓纏繞, 飛鳥盤旋, 而精華盡在乘坐小船穿越峽谷。 尤其是乘船穿過一線天那一段, 一邊驚嘆 大自然的鬼斧神工,奇特而優美,山谷水清見底, 一邊欣賞路過躺浮於水面的小木船就像是懸浮在半空中, 像凝住的時光於琉璃啫喱水似的, 讓人驚艷,此刻體驗什麼是人間仙境。 進入其中一段觀光點「映翠谷」, 中質尤為清澈, 山影倒立, 色如翡翠一般鑲嵌在峽谷之, 水清底下又綠又藍, 所謂碧水藍天, 也是這個意思了吧 小船如在水中游, 仿似畫中走, 人行此處, 靜美無比, 飄然若仙。 剛巧有小舟工作人員正在檢拾水面上飄浮的落葉, 嘩嘩hellip; 船行上面尤如飄浮空中,光看圖都已經醉了。 我們決定泛舟河上,體驗一下劃到世外桃源裡去的幽靜。 還有透明塑膠船可以選, 無論拍照或是泛舟, 皆是仙意十足, 人多參予划船不妨與船家講講價, 說不定有驚喜呵 一處滙聚自然風光與人文歷史為屏山峽谷景區, 形成於第四紀冰川時期,山體形態多樣化, 山谷地縫移步即換了景觀, 如穿越了時空 內裡觀光點共有39個, 這裡地勢險要, 風光獨特,四周峭壁聳立,溪流環繞, 你可以乘坐遊船遊覽兩岸風光。屏山峽谷開放不久, 仍然保持著原生態的自然環境,沒有城市的喧鬧, 夏季舒適涼爽,許是避暑涼夏的好去處。 觀峽谷地縫, 天然氣吧, 崖山之險峻, 水之清透如鏡倒影, 小舟如在絶塵之水, 游覽投身其中, 如入了世外桃源之境, 置身於如此神奇魅力的屏山峽谷, 會有一種如癡如醉、返樸歸真的夢幻感覺。 屏山峽谷地址 湖北省恩施土家族恩施自治洲鶴峯縣容美鎮屏山村 #時光寶藏莫高窟# #恩施地心洞天# 其它文章, 詳情請點擊澳門科學館「蒸氣誌電子月刊」 內之「近代中國科學家事蹟及其精神」 httpswww.msc.org.mozhflipbook55STEAMISSUE 本篇文章、影片以及相片版權屬作者所有,經由版權持有人授權CyberCTM.com發表。 聯絡及邀約 irene801802@hotmail.com

快樂 有很難嗎?
生活在我城
合資格90後・2017-10-26

最近看了一個哲學的清談節目,其中一集的主題是ldquo;你快樂嗎?rdquo;。試問這樣的一個話題,能不吸引人嗎?節目的主持人都大有來頭,有香港中文大學的通識課教授,亦有一些於國外修讀哲學的專家,更有我喜愛的一位作家 徐緣,整集你一言我一語,看得非常過癮。 節目裡分享了一句說話,個人非常喜歡,ldquo;你願做悲傷的蘇格拉底,還是一隻快樂的豬?rdquo;在這裡,容許我先幫大家補習一下吧,究竟蘇格拉底是誰呢?他是一位古希臘的哲學家,話時當時他在雅典被很多人稱為智者,亦有不少學生,但後來因為得罪不少貴族被賜死,雖然他有機會走,但最後選擇飲毒酒而死,就這樣結束了一生。好,回歸正題,剛才解釋完蘇生的一生,大家都明白為何是悲傷的蘇格拉底吧,而快樂的豬,故名思義,就是一生由出生到生命結束都開心渡過,無拘無束。聽完解釋後,你又會如何選擇呢? 說實話,一隻快樂的豬,我感覺根本就是一個剛出生的嬰孩啊這裡說的是還未有意識,大約未足5個月大的嬰孩哦,什麼都不用管,飯來將口,根本與一個億萬富豪的退休人士生活般寫意。但是,這時的嬰孩沒有「自我意識」,即使父母給予再多的東西,他亦不知什麼是快樂;然而,雖然話蘇格拉底在外人面前看來,的確係死得冤枉,但大家有意識到嗎?他大可以選擇一走了之的,但最後卻選擇了犧牲自己的生命,來突顯生命的高貴,換句說話來說,如果他本人早就將生死將生死置於度外,希望用自己的生命來拯救一座城市,那麼我就認為他並不是大家所說的ldquo;悲傷的蘇格拉底rdquo;了。 其實在我們擁有自我意識後,就一定會伴隨著無盡的痛苦,甚至是佛學所說的悲苦。無他,因為欲望驅使著我們,要做到無欲無求這種最高境界,相信除了ldquo;痴線佬rdquo;做到外,我大膽講句,就連李嘉誠都說自己未上岸我猜。我們一生裡會有一個名單不停的更新,裡頭記載著形形色色,以及各種想得到、實現的東西,然而,我們偶然會將很多一生不能所及的目標加入,導致我們盲目地做,一路走來背負的東西越來越多。沒有用的東西就捐了吧,這種事情大家都會做,可我們自己的身體、思想,又有幾個能真的說放底就即放?如果我們今天知道最終只能做到80分的人,你會甘心嗎?說實話,要是我知道了,我就盡力做到80分就好了,可能你們會說我太天真,但不正正是因為我們想太多所以才造成無盡的痛苦嗎? 圖片來源:網絡圖片

【香港。食記】壽司藝:味覺和視覺上的表演。
全球飲食
原來世界這樣大・2018-02-21

每次吃Omakase我都充滿著萬分的期待。比起其他菜式,Omakase是一種藝術的表演,每一道菜也是味覺和視覺的享受。不只是味道,就連師傅在我們面前的每個刀工,每個技術,也是吃Omaskase不能錯失的一環。 這次去到大坑的壽司藝。入夜後的大坑添上一份寧靜,當打開門口進入壽司藝時,卻似是走進一個日式的小窩居之中。壽司藝的地方不大,不過勝於夠整理和骨緻,圍著師傅的工作枱大概是10個座位,而後面也有一間適68人的獨立房間,總算不錯。 壽司藝的Omaskase分為月$1080、彩$1280及藝$1680三款,各款在選材和配搭上都會不同。若是沒有心水,可以跟我們一樣選中間的「彩」吧。 前菜是蝦凍、明太子蓮藕和胡麻豆腐。正方形小小一個的就是蝦凍,雖然小小一塊,但充滿蝦的鮮味,少許的蛋黃醬更加蝦凍的味道提升,相當醒胃。明太子蓮藕的配搭則給食客一個爽脆的口感,而胡麻豆腐入面加上少許柿和秋葵,簡單得來又相當開胃。 接下來端上一碟的左口魚。師傅建議我們先吃薄片,再吃裙邊,可以沾上酸汁讓味道加以提升,不過我一向習慣第一片都不沾任何醬料,來嚐嚐食物的原味。薄片的左口魚味道清澈,裙邊較為厚身,加上輕輕用火灼過,突顯更多的油分,也更能吃到較結實的魚肉。 赤貝,額外附上檸檬作去除腥味,放到口中能夠赤貝的爽脆鮮香。 深海池魚,淡淡魚香在表面,鮮嫩肥美。 牡丹蝦,鮮甜美味蘊藏在厚大的蝦肉之內。 蒸毛蟹,海鮮之中我最喜歡就是吃蟹,可是往往都礙於拆殻太麻煩,而在點單前放棄。壽司藝為了讓食客一嚐毛蟹的美味,不惜花費更多時間把蟹拆掉殼,更把毛蟹以最簡單的示人,呈現最簡單的樣子。在旁邊加上味醋啫喱,夾雜酸酸的味道,把毛蟹的鮮味昇華。 再來的是鯖魚刺身,油脂豐富,但是腥味也挺厲害的。沾上薑蓉豉油去除一部分的腥味,讓鯖魚更容易入口,口感較有咬勁,有著深海魚的沈穩。吃過鯖魚之後,師傅遞上仙人掌葉,給我們清除剛剛美食殘餘在口中的味道,作個中場休息。 隨即,師傅為我們每人送上一件中拖羅。每次Omakase由淡味去到濃味,按照中拖羅的味道都是放在偏後的位置,但正正因為這樣,我對拖羅充滿熱熾的期待。壽司藝的中拖羅不面沾上任何醬料,直接吃用才可以吃到中拖羅的美味。魚味濃郁,肉質油潤。 正當以後拖羅環節已經告終時,師傅把拖羅放在火上灼熱,加上紫菜和紫蘇葉送到我們的手上。燒拖羅為魚鮫位置,燒過的拖羅比起刺身的油香味更加濃郁,而師傅也悄悄地灑上鹽作調味,讓我們不須額外自行處理。我覺得這款燒拖羅更入口即溶,有份無人超越的魅力,比起刺身更吸引。 在日本,燒魚較為人認識的是金目鯛,不過作為高級魚類的赤睦魚也是作為燒烤魚類的好選擇。燒烤過的赤睦魚帶點焦香,換個形式品嚐魚的鮮美,以這個燒烤形式的赤睦魚不帶半點油膩感,更帶點鹹香,保持魚肉的質感。 吃過燒魚後,帶來五款壽司,分別是帶子壽司、金目鯛壽司、赤睦魚壽司、三文魚籽壽司及呑拿魚手卷。壽司藝在食物上的鋪排都有他的固定次序,而且更希望把食材以不同的做法讓食客嘗試,以不一樣的角度品嚐。像剛剛燒的赤睦魚,壽司款也帶輕輕烤過的,而我們常吃的燒金目鯛,壽司藝這次則為食客以壽司形式呈現,相當有心思。 那個馬糞海膽的澎湃,當下實在不捨得把它放到口中,海膽的鮮味仍能在照片上呈現,至今看到照片依然相當回味。 最後的海膽海鮮湯詐看以為是一碗簡單的海鮮湯,但是用透明膠袋盛載著的海鮮湯卻藏著令人意想不到的味道,透明膠袋的作用是好好鎖住海鮮的鮮味和熱力,即使休置了一會,食客依然可以吃到海鮮湯的原汁原味。海鮮湯的配料雖然不多,但是從味道可以知道海鮮湯加入大量的海鮮作烹煮,濃郁的鮮味令人喜出望外。 甜品是紫薯布丁,紫薯的淡香不會太甜,輕盈不會令人太感負荷,為這場Omakase畫上完美的句號。不管是刺身、壽司還是熱食,我們都吃得相當滿足,而在視覺上又欣賞了一場精彩絕倫的表演。 壽司藝大坑浣紗街九號地下

【香港。食記】Ask For Alonzo:意大利小店 來跟朋友喝杯酒吧!
全球飲食
原來世界這樣大・2019-01-09

鰂魚涌對我真是個充滿回憶的地方。住在九龍的我,沒什麼特別事的也不會特意過海,計起來這是我辭職過後再次踏進鰂魚涌了(我已經辭職快要一年了!)有趣的是這次跟我吃晚餐的朋友跟我是同一時期的「鰂魚涌之友」,但都已辭職了。我們一從鰂魚涌地鐵站走過來,已經是嘩聲四起(只限於我們二人,不斷說著:「嘩,好懷念啊!」 依稀印象中Ask For Alonzo 前身是一間咖啡店,位置並不大,僅僅能容納大概10名客人。 雖說如此,把咖啡店換走後,Ask For Alonze仍然是大家Happy Hour的好地方,只不過是由咖啡換做酒精,由喝杯咖啡改做摸摸酒杯底而已。 先來的是Burrata Cheese With Parma Ham。Parma Ham鋪滿碟面,中間放上Burrata Cheese,按著自己對芝士的喜愛拿少許。Parma Ham肉質柔軟,帶點鹹味,雖然我不是芝士迷,但仍想建議大家加上少許芝士,中和一下Parma Ham的鹹度,相當的惹味。旁邊還有很多蕃茄,吃起來清新,跟Parma Ham和芝士帶來不同的質感,口感豐富,我個人很喜歡。 再來的Tuscan Meat Balls,把有幾片芝士放在Meat Ball上面,Meat Ball的熱力讓芝士微微熔化,切開Meat Ball香味洋溢,十分滋味。 在主菜方面,我們點了Mixed mushroom amp; Truffle Fettuccini。店員為我們加上松露鹽,然後慢慢碟上松露濃郁的香味飄到鼻子中。寬條麵質感厚重,把流心蛋戳破,蛋汁都流到寬條麵上,讓寬條麵更有蛋香,更加好吃。 另外的主菜是在外國相當流行的Zoodles,也是近期健康人士的熱愛。每間餐廳有的Zoodles都有著萬千的變化,也是廚師表演的機會。在Ask For Alonzo,Zoodles是由青瓜與麵條混合的菜式,吃起來比日常的意粉少了一點的澱粉質,口感上夾雜著青瓜絲的爽脆,相當輕盈,是個不錯的選擇。 送上Vanilla Panna Cotta,加上朱古力醬,Panna Cotta口感滑嫩,奶香濃郁,吃下去更有點Kinder出奇蛋的味道。 最近跟Tiramisu真是有點緣分,先在咖啡店吃到,隔幾天又在這兒新鮮做好的Tiramisu。若是要談甜品的,Tiramisu絕對是我的排行榜三甲之內。喜歡Tiramisu的咖啡濃郁味道,細嚼帶有微微有著甜酒,再外加一點芝士的柔滑,還有可可粉灑在外面,吃得尤其的滋味。 要特意去鰂魚涌吃個晚飯似乎有點難度,但要是在附近工作或居住的,在這兒來個Happy Hour也真不錯呢! Ask For Alonzo鰂魚涌海光街18號地下 更多原來世界這樣大 LifeMag 文章在這裡:httpslifemag.cyberctm.comzh_TWbloggerNikki 文章轉載自:Nikkixlife Enjoy every single moment in the life