搜尋

搜尋結果

全新 NIRAV MODI 專門店華麗進駐「澳門銀河」
專題報導
LifeMag Editor・2018-02-09

全新 NIRAV MODI 專門店華麗進駐「澳門銀河」 「時尚匯」購物中心為賓客引進國際高級珠寶品牌 位於「澳門銀河TM」綜合渡假城的高端購物熱點「時尚匯」 購物中心,熱烈歡迎國際高級珠寶品牌 NIRAV MODI 登陸,成為「時尚匯」珠寶鐘錶商戶的最新一員。NIRAV MODI 的全新專門店將於 2 月 9 日開幕,為「時尚匯」的高品味賓客帶來與別不同的大師級珍品傑作。 「澳門銀河」零售助理高級副總裁黃興齡表示「『時尚匯』購物中心匯聚世界知名的奢侈品牌及時尚精品店,為賓客提供無與倫比的購物體驗。NIRAV MODI 是享譽國際的高級珠寶品牌,素來備受我們的賓客推崇。現在賓客只需親臨『時尚匯』,便可探索這超卓品牌的華麗珠寶世界。」 NIRAV MODI 以創新的珠寶設計和精湛的工藝,成為舉世知名的高級珠寶品牌。創始人 Nirav Modi 先生對細節的注重不但見於其珠寶設計上,專門店的室內設計也同樣貫徹其匠心獨運的風格,充分利用珠寶的每一個元素營造出 NIRAV MODI 的獨特美態,閃耀出最炫目的光芒。 NIRAV MODI 的新店面積約 800 平方呎,室內裝潢糅合品牌設計理念和大自然的元素,在視覺上體現出品牌的精髓。新店採用全新的幕牆,概念源於 Mughal 系列,以唯美典雅的環境展示品牌對美學及工藝的承諾。賓客可以細心地欣賞柔美而奪目的 NIRAV MODI 珠寶。 全新的專門店內展示著品牌標誌性的珠寶系列,包括永恆經典的NIRAV MODI Embracereg; 系列,把背後蘊藏唯美的意義,透過創意延伸及細膩匠心與生命中的摰愛分享愛。手鐲以超過90 個組件精密鑲嵌而成環環相扣的設計,每個組件均經過精密計算而製成。Jasmine系列以細膩婉約及典雅的茉莉花為靈感,展現女性的美麗與優雅風釆。系列中的美鑽採用NIRAV MODI 獨創的「茉莉花型切割」Jasmine Cutreg;以捕捉茉莉花的柔和及自然美態。Luminance系列以不朽的設計結合歷代相傳的鑽石切割技術:梨形pear shape、欖尖形marquise shape、 明亮式切割brilliant cut、茉莉花型切割Jasmine Cutreg;、老式切割old cut及玫瑰式切割rose cut鑽石,於不同的切割面下呈現出最佳折射度,展現每一顆鑽石最極致的光芒。 為慶祝新店開幕,品牌更在「澳門銀河」「時尚匯」購物中心的專門店展出數件獨一無二的高級珠寶系列珍品,包括Waterfall祖母綠寶石項鏈及Constellation項鏈。Waterfall祖母綠寶石項鏈鑲有色彩奪目的哥倫比亞祖母綠寶石,配襯採用明亮式及「茉莉花型切割」Jasmine Cutreg; 的鑽石,閃爍迷人的色彩仿如瀑布般湧現。珠寶運用精湛的工藝和最少的金屬鑲嵌鑽石,使珠寶的外觀更精緻雅。Constellation項鏈逾50克拉的鑽石鑲嵌於刀刃狀的設計上,獨特的刀刃鑲嵌技術讓項鏈在女性柔美的肌膚上產生鑽石星群般的驚喜效果,並隨著女性的細微動作產生流動感,完美地增添女性的神韻與風采。NIRAV MODI 的高級珠寶系列展現品牌精湛而獨特的工藝以及超卓非凡的設計。 設於「時尚匯」購物中心的NIRAV MODI的新店,採用全新的幕牆,概念源於Mughal系列,以唯美典雅的設計展示品牌對美學及工藝的承諾。 國際高級珠寶品牌NIRAV MODI以創新的珠寶設計和精湛的工藝而聞名,並於全球取得重大的成功。 Jasmine系列以細膩婉約及典雅的茉莉花為靈感,展現女性的美麗與優雅風釆。 NIRAV MODI 澳門銀河專門店 「澳門銀河TM」「時尚匯」購物中心 G109 店

【生活。記事】Social Media呢啲野,真係唔好玩咁多。
其他
原來世界這樣大・2018-12-27

突然間,想寫字的意慾很強,腦袋有很多想法的浮現,但要把主題完整的組織及寫出來確實需要時間和平靜的思緒,一點也不能急,再加上樹懶上身,即使有靈感也未必有那份衝動去寫,這次把惰性收拾,開始寫作的,源自上星期跟朋友的一個對話。我跟朋友聊天,說著:「我覺得啊,Social Media呢啲野,真係唔好玩咁多。」沒想到朋友的想法跟我一致。現在大家都機不離手,一天24小時都要長期Online,單單是坐飛機的短短幾個小時與外界斷絕聯絡,已經叫苦連天!飛機降落都未停好,大家已經關掉飛行模式,急不及待要上Facebook、上Instaram,然後機艙內手機的訊息提示聲四起。你不覺得Social Media這樣東西讓我們變得很依賴嗎?有一段時間情緒低落,什麼人都不想見,什麼地方也不想去,每天躲在家對著電腦、手機和四面牆。那時候的我什麼都不想做,見無聊就開啟Facebook、Instagram手機程式,看看別人的最新動態,那時候沈迷得每隔15分鐘就想開一開Instagram。那時候惹來莫名強烈的空虛感,尤其是看到別人多姿多采的生活,跟一大堆朋友聚會吃好吃的,然後在回頭看看那個賴在床上、一個孤單的自己,反差強烈,會更加不喜歡自己,然後持續不開心。有一陣子這樣的沉淪,我發現不行了,要戒掉Social Media!雖然未去到要刪App的程度,但控制自己的好奇心(即是「八卦」),遠離手機一點,反而令日子好過一點,更集中自己的工作同時,至少重拾丁點自信。再仔細想想,大家通常會在Social media刊登什麼?總不會是被老闆罵、測驗拿零分的考卷吧。最常看到的就是一張來自男朋友禮物的照片告訴別人你們都恩愛、一張在飛機閘口的照片告訴別人你要去旅行了、一張「曬冷」相告訴別人我又入手新款相機了hellip;..漸漸地,Social Media成為了一個炫耀的平台,告訴大家自己有多風光,然而網絡世界有多可靠?有幾多是真實的?Social Media的力量很強大,也顛覆了我們舊有的生活模式。可是social media能為你帶來什麼?在現實中的你,過得快樂嗎?Social Media令大家變成一個自戀的人,有事沒事都Post個IG Story,來個自拍。之前有些人在Instagram不斷地post個IG Story,已經不是一天5個,而是有20多個,上面顯示由平時的幾條「線」幾個IG Story 變成20多粒「點」。到最後我忍不住按下Unfollow。這已經是病態程度了。自戀是自信的表現,但過份的自信會令人受不了的。最後在Facebook在Instagram得到的一個數字,告訴你有多少人看過這個短片,有多少人讚好,又代表了什麼?代表了你很有名嗎?那又如何呢?能成為你人生的成就,能寫上CV嗎?看別人Social media的累,要持續發佈自己最新動態的更累。既然是沒有意義,不如無謂演戲,大家苦了自己。拋下假面具,輕鬆地做真實的自己。然而,這些怪異的社會現象什麼時候才能停止?說著討厭Social media的我,在做Social Media的工作。最諷刺的莫過於此。

開走超跑不是夢 新濠天地呈獻「速勢匙刻」活動 讓旅客有機會感受林寶堅尼之極速體驗
專題報導
LifeMag Editor・2017-09-13

澳門頂級娛樂度假村新濠天地再次為旅客呈獻超級娛樂及休閒體驗,由2017年9月6日起,新濠天地推出「速勢匙刻」活動,旅客只須於推廣期內蒞臨新濠天地,即有機會擁有專屬自己的頂級林寶堅尼,寫意翱翔並欣賞最美日落。 通往「速勢匙刻」活動的鎖匙於澳門主要地點派發,包括客輪碼頭及邊境口岸的各大穿梭巴士站,幸運旅客捕捉林寶堅尼超跑夢之機會隨手可得。旅客亦可親臨度假村或透過手機應用遊戲(聲動狂飆)獲得更多參加是次活動之機會。這個以微信為平台之聲控遊戲,讓玩家通過自發之ldquo;引擎聲音rdquo;來推動超跑馳騁作賽 聲音越大,車速越快!玩家於遊戲中積累越多鎖匙,贏取超跑之機會越大。 此外,旅客只須於活動期間於新濠天地購物、或於餐廳、娛樂及酒店消費,同樣可獲得參加每日抽獎及逢星期四至日晚上8時之終極大抽獎機會,晉身終極大抽獎的幸運兒只須於遊戲奪得勝利之匙,便有機會開走林寶堅尼超級跑車或港幣2,000,000現金。 為讓旅客感受意大利頂級超跑極致奢華的品味,新濠天地於活動期間展出四架超級跑車,配以同樣充滿霸氣、以巨型恐龍為主題之模型,氣派非凡。 如欲參與是次活動,旅客只須於新濠天地消費,箇中可選擇於度假村之殿堂級中菜食府「譽瓏軒」 及當代法式料理餐廳「御膳房」來一個震撼味蕾之餐饗體驗,兩所食府均榮獲米芝蓮二星、亞洲50最佳餐廳及《福布斯旅遊指南》五星殊榮。當然不能錯過全球最壯觀之水上匯演「水舞間」及各項精彩娛樂體驗。旅客還可入住新濠天地尊貴奢華之酒店或前往坐擁全港澳最大鞋履沙龍、以及多個世界頂級設計師品牌之「新濠大道」零售區朝聖,盡情投入購物樂趣。 有關活動詳情及資訊,請瀏覽新濠天地網站:httpwww.cityofdreamsmacau.comtcpromotionsdetailunlockthepower 如欲下載手機應用遊戲(聲動狂飆)獲得更多參加機會,請瀏覽:httpcityofdreamsmacau.onekind.com.cndesktopch

韓國嘻哈男團「防彈少年團」巡回歸澳門!
音樂聯合國
LifeMag Editor・2017-09-05

《2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR IN MACAO》 11月4日 星期六 , 澳門威尼斯人reg;金光綜藝館 9月5日門票火熱開搶 韓國大勢嘻哈男團「防彈少年團」 BTS 繼拿下「2017 BILLBOARD MUSIC AWARDS TOP SOCIAL ARTIST」後,再度被美國《時代周刊》封為「全球25位最具影響力網路人物」之一!擁有超高人氣的 BTS 再次把世界巡迴演唱會帶來澳門! LIVE NATION呈獻 《2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR IN MACAO》將於2017年11月4日 星期六 於澳門威尼斯人金光綜藝館舉行,定必再次成為城中熱話!門票由港幣澳門幣680起,將於9月5日(星期二)上午10時起透過金光票務售票處、快達票及澳門廣星傳訊公開發售。 關於藝人:防彈少年團 韓國嘻哈男團「防彈少年團」BTS 為韓國男子音樂團體,由JIN、SUGA、JHOPE、RAP MONSTER、JIMIN、V 及 JUNG KOOK七名成員組成,隸屬BIG HIT娛樂經紀公司旗下,為BIG HIT娛樂第一個獨立製作培養的團體。 BTS在2016年發行的第二張正規專輯《WINGS》是韓國2016年度銷售量最高的專輯,也締造了97國 iTunes音源冠軍的紀錄、並拿下美國BILLBOARD專輯榜200強第26名,是目前韓國藝人在BILLBOARD專輯榜上的最高名次。 另外根據韓國GAON 銷售排行榜公布2017年上半年銷售排名,BTS防彈少年團也以 2 月發行的專輯《WINGS 外傳: YOU NEVER WALK ALONE 》毫不令人意外地登上了冠軍寶座,這張專輯至今累積銷量為 72 萬 9295 張,並在美國BILLBOARD專輯榜拿下61名,這讓BTS成為首位連續4張作品皆在全美BILLBOARD二百強專輯榜中佔有一席之地的韓國藝人。 最近《時代周刊》所公布的25名「最具影響力網路人物」中,防彈少年團打敗Justin Bieber、Donald Trump、Rihanna、Katy Perry等人並列榜上,同時也是韓國唯一上榜代表。 BTS自2017年2月以韓國首爾為起點展開的「2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR」世界巡迴演唱會,截至7月初已在香港、日本、泰國、智利、巴西、美國、澳洲、菲律賓、印度尼西亞等城市舉行共32場公演的世界巡迴演唱會,預計這次世界巡迴動員約40萬人次參加。 《2017 BTS LIVE TRILOGY EPISODE III THE WINGS TOUR》澳門站 日期 2017年11月4日(星期六) 時間 晚上8時 地點 澳門威尼斯人 金光綜藝館 門票 企位 VIP套票 包括企位門票一張、soundcheck入場資格、優先進場 港幣澳門幣2380 A 區 港幣澳門幣1880 坐位 B 區 港幣澳門幣1680 C 區 港幣澳門幣1280 D區 港幣澳門幣980 E區 港幣澳門幣680 公開發售 2017年9月5日(星期二)上午10時 網上訂購 www.cotaiticketing.com 、www.hkticketing.com 及macauticket.com 主辦 Live Nation 查詢 852 2989 9239

澳門今期盛事特別多,留喺屋企亦有 Home Media 為您帶嚟無限精彩!
娛樂殿堂
Cheers!・2024-11-20

澳門今期盛事特別多,留喺屋企亦有 Home Media 為您帶嚟無限精彩! 雲遊戲、劇集、電影、綜藝等多元化娛樂每月更新, 國際、亞洲以至本地最新娛樂資訊,全部都可以喺 Home Media 電視盒子 App 一站式盡享 ,CTM流動電話 光纖寬頻客戶仲享免費體驗! 本月為您精選: 雲遊戲 #OnePlay:《Elden Ring》全球最火熱遊戲之一,無需頂級裝備,只要一個 OnePlay 賬號即可喺任何裝置暢玩! #Blacknut:《Kawaii Deathu Desu》最新上架 Blacknut,超過 500 款遊戲適合全家玩樂 劇集 綜藝節目 #myTV SUPER 緊貼 TVB 台慶鉅著 《黑色月光》、王牌綜藝《中年好聲音3》,仲有 最新男團選秀節目《星光閃耀的少年》,由 #李聖經 擔任 MC,#李昇基 #姜大聲 作為導師,見證來自全球各地星光少年嘅出道之路 升級 myTV Gold 睇亞洲人氣劇集《孤獨的美食家》、《隱藏》 #芒果TV國際 追蹤內地熱門話題綜藝 《再見愛人 4》、《花兒與少年 6》 電影 #hmvod 搶先睇 荷李活驚悚片《小丑:雙瘋》,以及高分好片《全職乖孫》大放親情催淚彈 依家申請 5.5G 月費計劃即送 12 個月 myTV SUPER(基本版)服務,更享優惠價 $28 月 Blacknut 雲遊戲 hmvod 芒果 TV 國際服務 居家光纖寬頻客戶低至 $0 即可換購 Home Media 娛樂套裝:Home Media 電視盒子 myTV SUPER(基本版) hmvod 芒果 TV 國際服務! Home Media 優惠詳情:httpss.ctm.netvBr1D 立即下載 Home Media App,一個賬號盡享最新體育賽事直播、電視劇、電影、綜藝等豐富娛樂:httpss.ctm.net0X0oD

新濠影滙呈獻 炫音狂熱《‘愛是信仰 ’唱會 - 蕭敬騰 x 范瑋琪》於4/14正式公開發售
音樂聯合國
LifeMag Editor・2016-04-14

新濠影滙綜藝館 (下稱「綜藝館」)延續「炫音狂熱」台灣音樂紅人騷的音樂精髓,蕭敬騰和范瑋琪的《rsquo;愛是信仰rsquo; 演唱會》將於二零一六年五月十四日登陸亞洲娛樂總匯 ndash; 新濠影滙。搖滾狂野的蕭敬騰加上深情感性的范瑋琪,更將首度合體現場演唱兩人甜蜜作品《鈴鈴》,兩位華語樂壇巨星屆時將以其一連串的金曲爆發現場最高感度的音樂衝擊,門票將於二零一六年四月十四日(星期四)上午十一時公開發售。 票價詳情 演唱會 炫音狂熱 lsquo;愛是信仰rsquo; 演唱會 - 蕭敬騰 x 范瑋琪 日期/時間 2016年5月14日 晚上八時(星期六) 地點 新濠影滙 新濠影滙綜藝館 票價 貴賓廂房港幣澳門幣25,000元12座位50,000元24座位 貴賓席 ndash; 港幣澳門幣1,580元 A區ndash;港幣澳門幣1,080元B區ndash;港幣澳門幣880元C區ndash;港幣澳門幣680元 D區ndash;港幣澳門幣480元 詳情請參閱連結附件 貴賓席門票包含專享貴賓廊服務、特色餐飲選擇(需額外收費)和派馳免費入場 網上訂票 票務處 查詢熱線 新濠影滙網站www.studiocitymacau.com 微票兒show.wepiao.com 快達票www.hkticketing.com 新濠影滙 ndash; 新濠影滙綜藝館票務處 澳門ndash; 853 8865 3333 香港 免付費電話 ndash; 800 906 282 中國 免付費電話 ndash; 4001 208893 酒店住宿套票 炫音狂熱 愛是信仰 蕭敬騰 x 范瑋琪酒店住宿套票由$3,798起,詳情請瀏覧新濠影滙網站www.studiocitymacau.com 。

Ubuntu 的簡易日常更新
科技新知
MacauYeah・2025-12-17

早陣子跟新認識的朋友聊天,聽到他們因為要轉伺服器平台,煩惱如何做作業系統層面的定期更新。筆者亦都分享一下自己是如何做 Ubuntu OS 層面的定期維護。 沒錢,就用最原始的方式解決 因為Ubuntu也算是常見的linux品牌,所以基本有有商用軟件可以偵測OS的狀態,並針對它推送更新。不過如果你像筆者一樣,是個貧窮的革命家,那就只有土炮一點自己做鏡像點及做測試。 建立一個 ubuntu 的 deb 包 mirror。手動單次地用步 mirror,確保自己其他 server 同一個時間段都只會取得同一個更新。 停了 ubuntu 的 kernal 自動更新。不然的話,mirror 有更新,ubuntu 亦會偷偷地自動安裝了新的kernal,只是等待你的重啟。 使用一個測試機,先經 mirror 更新到最新的狀態。運行一段日子後,其他機再陸續更新。如果你投産環境有多於一種配置,就考慮要多個不同的測試機。更新指令直接做成 script,方便在其他機器中重複。 輪流 ssh 登入各台機,執行相同的更新指令。更新指令經 git 同步到其他機器。為確保不受 ssh 斷線的風除,必要時還需加入 tmux 。 多機器的煩惱 上述的做法雖然可行,不過當你有十台以上的機器,重複做 ssh, tmux, git checkout, script 互動,也是很累人。考慮一次性地全自動化執行,還是有必要的。筆者對上述的第四步驟,作出一些取捨,以確保更新速度足夠快,可以順暢地執行。 什麼是必需要更新的? 筆者觀察到,在 container 技術出現後,其實很多時安裝應用都不會直接在 OS 層安裝 deb rpm 包,都是直接經 docker image 去做。所以OS層面,或者很多服務都不會被啟動。筆者亦發現,至少在ubuntu下,只更新kernel,對比無腦全更新所有 deb 包,會快很多很多。 如果可以,我們只更新kernel,再加對應的 container runtime,是不是更新對令相對地穩定,而且可以經外部統一管理。也就是不用在每一台機中進行 tmux git checkout ,全數在外部推送 ssh 指令? 筆者就用 multipass VM ssh key,表達一下執行概念。 ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 aptget autoremove y ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 aptget update ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 aptget install y linuxgeneric linuxheadersgeneric linuximagegeneric ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 reboot 上述最大的假設,是第一、三步,更新 kernel 時不會因為網絡問題導致 ssh 斷線,因為它們都是系統級別的改寫,中斷後並不能確保可以重來。第二步就很安全,隨時重來也沒有問題。 這樣,我們就可以在任一台管理機,經過一個 shell script for loop,更新所有其他機器。 如果我們對於網絡還是有些疑慮,我們也可以試用一次性排程式的方式去做。 ssh i varsnapmultipasscommondatamultipassdsshkeysid_rsa ubuntu@10.115.189.200 echo 'yourscriptlocation' at 0800 PM 17.12.2025 這樣的好處是,我們可以連 tmux 的開啟也省略,git checkout 也可以經固定的 script 執行(只是很煩鎖)。但這也會有壞處,就是看不到執行的情況,只能事後檢查系統狀態,是否已更新過。 當然前述 ssh key 的方法也可以加入 git checkout 更加深化不同的更新 script,但這又會增大斷線可能。ssh key 還是以快速完成指令更實際。 註:因為網安原因,筆者把上述 script 中的 S U D O 關鍵字去掉,這樣 blog 才能發出。

docker swarm 回到最基礎的群集組建
科技新知
MacauYeah・2025-11-21

雖然筆者都知道,全世界在講 k8s ,全世界都叫筆者放棄 docker swarm,但無獨有偶,docker swarm 還是有使用的價值。 你只有單個服務在運行,只想要做冗餘或分流。快速地用 docker swarm 做最小可行性産品,推出市場。 傳統的HA功能做到了,但你沒有中央匯整日誌的功能。而你也不想把事情攪得太複雜,使用docker swarm 可以讓你在任何一個管理節點上查看不同 container 的日誌。 你的客戶只提供VM,他可能有自己的k8s平台,但不讓你使用。自建一套docker swarm ,先入場,事後擴展再要求客戶提供k8s,對於客戶來講,先證明系統是有價值的,在金錢成本上或能力上,一定是件比較可以接受的事。 筆者之前介紹過一系列的 docker swarm 教學,但生成群集的部份一直沒有做介紹。因為實在太簡單,所以一直都沒有收納在教學內容當中。但現在考慮其完整性,以及為了讓大家感受一下它有多簡單,所以重新寫了組建群集的步驟。 組成群集 以前各家不同的軟件,想要起一個群集,要左攪右攪,又要重啟。而docker swarm真的很簡單,只要各機中有 docker ,再在各機中順序打指令就好。 node 1 使用docker swarm init docker swarm jointoken manager # node 1 gt; docker swarm init gt; docker swarm jointoken manager To add a manager to this swarm, run the following command docker swarm join token SWMTKN1xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx2377 其餘的管理員節點就根據上述的提示,使用 docker swarm join token SWMTKN1xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx2377 就好。只要總數的管理員節點有奇數個就可以了(包括當初的node 1)。即是1、3、5等都可以。這是因為在容錯的情況下,必需由管理節點作出多數決,才能容易地知道判斷是哪些節點出現問題。 如果不為容錯,只想增加可工作的機器,那麼我們只需要增加工作節點。我們可以在任何管理員節點生成docker swarm jointoken worker gt; docker swarm jointoken worker To add a worker to this swarm, run the following command docker swarm join token SWMTKN1yyyyyyyyyyyyyyyyyyyyyyy yyy.yyy.yyy.yyy2377 若想要檢查各個節點的工作狀態,在管理員節點上執行 docker node ls 看到了。 docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION xxxxxxxxxxxxxxxxxxxxxxxxx node1hostname Ready Active Leader 28.5.1 yyyyyyyyyyyyyyyyyyyyyyyyy node2hostname Ready Active Reachable 28.5.1 全部教學請見 httpsmacauyeah.github.ioAProgrammerPreparesVMDockerNotesSwarmModeCommandCN.html

免費自用的私人AI助理 | Ollama - 本地大型語言模型
科技新知
MacauYeah・2025-01-06

不知道在澳門的朋友,有多少可以正常接觸openai?因為地方政策問題,像openai這種國外的大型語言模型下稱LLM,澳門區都沒法接觸到。但隨著時間過去,即使我們不能直接接觸到算力很強的收費AI,我們只要有電腦,也可以佈署一些開源版本的LLM。只要我們可以安裝到ollama這套本地運算軟件就好 ollama是一個giuthub上的開源工具,讓用戶能夠在自己的電腦上運行各種大型語言模型(LLM)。基本上只要電腦是普通的桌上型windows, linux, mac,都可以運行它。下以面就介紹一下筆者的安裝經驗。 windows windows ollama windows 本地安裝ollama,真的很簡單,就是直接去官網下載就好 httpsollama.comdownloadwindows 安裝完成後,在windows cmd再加一個基本的模型就可以了 ollama pull llama3.2 之後就可以開始跟llama問問題 ollama run llama3.2 windows openwebui 如果大家不習慣windows cmd的醜醜介面,想經過瀏覽器存取,我們可以再加裝openwebui。但這個必需要經第三方python或docker安裝。openwebui github指引 httpsgithub.comopenwebuiopenwebui 經python pip install openwebui openwebui serve 經docker docker run d p 80808080 addhost=host.docker.internalhostgateway v openwebuiappbackenddata name openwebui restart always ghcr.ioopenwebuiopenwebuimain 最後,打開browser,訪問 httplocalhost8080,openwebui就會要求大家先設立管理員帳號。 就那麼簡單,大家就有一個真正的私人AI助理。 steamdeck steamdeck 因為很多linux功能都有被限制,所以筆者就直接使用 podman 安裝 git clone httpsgithub.commacauyeahollamasteamdeckpodman.git cd ollamasteamdeckpodman podman compose f podmancompose.yaml up d podman exec it ollama ollama pull llama3.2 同樣地,打開browser,訪問 httplocalhost8080就可以了,因為這個版本已有預設的管理員帳號,立即打開就可以使用了。 Ollama的開源模型 上文中一直提及 llama3.2 其實是 Meta 公司的開源模型,因為它的參數相對少,算力要求較低,可以在沒有GPU的環境下執行。若然大家算力足夠,可以使用其他模型,詳見 httpsollama.comlibrary 。見到合心水的模型,大家可以經 pull 指令下載。例如小紅書的網紅們很多都推薦qwen2,我們可以 ollama pull qwen2 備註 openwebui 及 ollama 並不直接支援自己建立自己的資料庫。我們需要其他工具去補完,但筆者觀看各種教學,自己建資料庫的效果都不太好,所以暫時不做任何教學。 只要我們一直經ollama pull,就可以更新語言模型。但如果大家追求即時的網絡最新資料,大家可以看看LLM RAG的相關文章。但筆者亦未有成功的案例,有更新會另作教學。 opewebui並不是PDF閱讀器,但它可以預覽PDF中的文本,我們需要手動複制PDF中的文件後,才能經ollama分析文件內容。 若想切換模型,在指令介面中,我們多開一個分頁就可以了。若經openwebui,則可以在每句對話之前,經左上方選擇不同模型。

Tmux - 繼 Screen以後的Linux多工神器
科技新知
MacauYeah・2024-10-08

因為各硬件軟件的發難,筆者又不得不回到那個只有純純linux tty console的世界。很多時候,那怕使用tty,我們在Desktop mode,也有現代terminal 可以用,需要多分頁,滑鼠選取文字、複制、貼上,都可以輕易做到。 但在mobile tablet device 上,手指操作真的很不方便。又或者你像筆者一樣,即使有電腦,但要操作一些Linux VM,它們連ssh都沒有,只能直接登入它們的tty,那麼懂得使用Tmux進行分頁及複制、貼上,就變得很重要。 Tmux 是什麼 Tmux 就是可以在Linux Terminal 同一個窗口中,實現多工處理的小程式。就像我們利用多分頁一樣,不同分頁做不同的事。不過最大的差異就是,生成分頁,排列分頁,我們都要使用鍵盤來完成。有時筆者也會用它來作為背景程式,以免不小心關了Terminal就會把所有運行中的指令都停掉。 我們就馬上來看實際例子吧 前置事項 安裝Tmux及運行Tmux Debain amp; Ubuntu 安裝 sudo aptget update amp;amp; sudo aptget install tmux 運行:tmux 進入tmux後,你就會至少有一個分頁,而且不會因為Terminal關閘而中斷 用法一 建立兩個分頁,並切換 增加分頁 先按 ldquo;Ctrl brdquo; 前置鍵,再按rdquo;crdquo; create 切換分頁 在多於一個分頁的情況下,先按 ldquo;Ctrl brdquo; 前置鍵,再按rdquo;nrdquo; next 用法二 同一個分頁中,建立左右並排的窗口 增加水平窗口 先按 ldquo;Ctrl brdquo; 前置鍵,再按 ldquo; 雙引號 切換窗口 在多於一個窗口的情況下,先按 ldquo;Ctrl brdquo; 前置鍵,再按方向鍵左或右 用法三 回到前一個tmux session中 因為不小必關閉了terminal,又或是remote ssh中,ssh斷線後,需要回到之前的工作狀態 未進入tmux 的狀態下:tmux attach 要留意tmux 可以有很多個session,要去到指定的session,就要為session命名。但這個不是筆者常用的情境,原本多個分頁已經很夠用,還要多個session,會很混亂。但不排除它在某些情況下有特別用途,有興趣的朋友可以自行挖挖看。 進階 回頭看過去的terminal screen output 在現代的Terminal中,原本按滑鼠滑輪向上滾,就可以看到過去的資訊,但tmux下反而不行,所以我們需要進入特殊模式 進入Copy Mode 先按 ldquo;Ctrl brdquo; 前置鍵,再按 開括號中括號 向上翻頁 上方向鍵或PageUp 離開Copy Mode Copy Mode中任何時候按rdquo;qrdquo; 進階 複制貼上 進入Copy Mode 先按 ldquo;Ctrl brdquo; 前置鍵,再按 開括號中括號 選擇範圍 移到需要複制的文字起點,ldquo;Ctrl Spacerdquo; ,然後再移動到結束點,再按rdquo;Ctrl wrdquo; 複制 貼上 離開Copy Mode後,再按rdquo;Ctrl brdquo; ,然後 關括號中括號 進行貼上 進階 複制貼上2 某些情況下,我們不允許使用ldquo;Ctrl Spacerdquo; 或 rdquo;Ctrl wrdquo;,因為它們可能跟系統的組合鍵有衝突,所以需要改為單鍵。 讓tmux使用類似vim的操作模式 echo ldquo;setwindowoption g modekeys virdquo; gt;gt; .tmux.conf 關掉所有使用中的tmux,重開tmux 進入Copy Mode 先按 ldquo;Ctrl brdquo; 前置鍵,再按 開括號中括號 選擇範圍 移到需要複制的文字起點,按單鍵ldquo;Spacerdquo; ,然後再移動到結束點,再按rdquo;Enterrdquo; 複制 貼上 離開Copy Mode後,再按rdquo;Ctrl brdquo; ,然後 關括號中括號 進行貼上 筆者常用的功能就這些,有興趣的朋友可以再深挖一下。 Reference httpstmuxcheatsheet.com

為何Python這麼熱門?
科技新知
MacauYeah・2024-08-27

在資料處理、資料科學領域,什麼是最近的AI模型,Python都是做這些事的熱門選擇。對於以前從未用過Python來處理業務的筆者來講,實在不懂為何Python會那麼大熱。不過最近,筆者實戰過後,真心覺得它是提高生產力的重要工具,而且並不限於資料科學上面,一些簡單的腳本操作也是很有優勢的。 筆者前述有討論過 型別對程式語言的重要性,到現時這一刻,筆者都會覺得【型別】是有助於長期的程式開發。而Python這個語言,大部份人都會介紹它是動態語言,可以使用弱型別,然後,就沒有其他講法了。動態弱型別,筆者一直都不認為它的根本上的原因。就像Javascript一樣,它亦發展出類靜態強型別的Typescript版本,而且它亦不因此而被人棄用。所以Python的強大,動態語言並不一最重要的原因,它也可以模疑寫出有規有距的type hinting。 或者用另一個方向問,大家覺得 Excel SpreadSheet 好用嗎?它們可以很簡易地做出資料計算、篩選。而且可以一邊做,一邊調整公式。例如要大家做一個陣列的總和,大家會想打開一個Javascript,初始化陣列的每個數字,然後寫個For迴圈去計算總和嗎?還是打開 Excel SpreadSheet,打下一欄或一列的數字,然後叫出Sum函數?筆者一定會選擇後者,不單止因為寫函數比較方便,那怕之後要調整數字,也比較方便。 大家有感受到差異嗎?筆者想表達的是,在操作 Excel SpreadSheet 我們並不是整個程式重新執行一次,我們是修改完一部份,那上看到結果。但傳統的語言,例如C、Java、那怕是Javascript,我們都難以局部地更新或執行特定某一個區塊。那怕是現在我們有hot reload,但其實我們編寫的思維,都是讓我們完整執行起一個頁面,再人手輸入,看結果。如果我們只想運行某個單一Function函數,我們只能寫test case測試,但寫test case又是一個很大的入門門檻。 但大家如果看看Python,在古早的年代,Python已經有Python shell,那就像是Linux Shell或Window CMD一樣,可以一邊寫腳本,一邊看結果。寫了10行的程式,發現在第10行引用第5行的部份有問題,修正並執行第5行後,就可以回來馬上重跑第10行的語句,就馬上有結果了。第6至9行,因為沒有關聯性,就不需要逐一重新執行,那是多麼的方便阿。道理上,我們若沒有完整執行整個程式,可能還是有一些盲點,開發重要的,需要長期維護的程式,還是要像傳統一樣,有test case,有程式進入點,整個運行。但對於臨時性的操作,看看效果,我們實在無必要寫一個原整程式。 舉個例子,假如我們臨時有需要,要取得某個政府網站的即時數據,例如澳門的停車場資訊,空位的上下限是多少,我們絕對可以用python寫幾行就取得結果,然後順便做個資料運算。我們沒有必要很嚴僅地為考慮不同數據的出現情況,我們什至可以hard code 硬編碼地計算某個Array的元素。直到突然有一天,這個操作變得恆常化,我們還是有條件把之前的python程式碼,改寫成一個規規矩矩的完整腳本,包括異常處理,函數複用。其實Javascript在改用 NodeJs 作為引擎後,我們還是可以經過 Node.js REPL,來做互動操作,只是Python Shell出現得更早,也是官方支援的功能。 Python這個臨時操作的便利,對於資訊爆炸的年代來講,實在很幫得上忙。再加上現在除了Python Shell以前,還有Jupter Notebook,讓大家可以在Web頁面上,執行像Python Shell的互動操作,對於修過特定區域的程式碼,就更加方便。這些便利,都是不是因為動態語言來創造的優勢,而是實實在在的Coding Anywhere。

Github flow 沒有提及的發佈 - 佈署 | Release - Deployment
科技新知
MacauYeah・2024-08-23

不知道之前為大家介紹的github flow,大家覺得怎樣?好用嗎?今天,筆者又來講講筆者心中認為它沒有好好給出指引的地方。 我們的信心指數,其實沒有那麼高 在前文中,經過 pull request 、 code review 、 auto test ,道理上,開發者可以做的都已經做過了,然後就是等待發佈 Release。 對於單純的庫類型的程式碼,筆者認為,的確沒有事可以再做,實務上就是直接找人其他程多員試用最新版本,看看有沒有問題。只要 main master 上,明確的表示版本號的變更,就差不多等於直接發佈。有需要提供binary版本的,就還需要觸發上載binary的流程,但這個跟 pull request 觸發 auto test 差不多, auto test 成功後就上載。 對於服務類型的程式碼,例如 Web App 等,直接發佈到正式環境還是有些不妥吧?始終會即時影響到業務,我們至少有個測試場,經用戶做實際的業務操作去驗收。但這個時機,應該是在Github flow的什麼時候做? 在原始的git flow中,有一個叫做 develop 的相對穩定分支,僅次於 main 。它是功能開發完成後第一次pull request 的地方,我們可以用這個概念來做自動發佈到測試場。但若在github flow 中加入了這個 develop uat staging 分支,其實就等於複雜地回到過去傳統的 git flow中,對好多新手來講難以接受。Github flow 的成功簡化,其實很大依賴著自動化測試。現在的測試用例,並不再限於單元測試。就連整合測試,也可以經Docker等容器化技術去做,只要我們的自動化測試有足夠信心,就可以發佈。但反觀我們的 Web App 例子,我們認為自動化測試難似涵蓋所有情境,也難以開發。所以我們還在有個時間發佈到測試場,進行人工測試。 pull request 快速迭代 筆者結合自己的經驗,配上國外討論區 Stack overflow 的內容,筆者認為Github flow上進行 pull request 後,就是最好的發佈測試場時機。所以我們需要盡快進行驗收測試,完成後在Git commit上加上Tag,以示通過驗收測試,可以發佈正式環境的版本。 不過這個模式是有一個很重要的前題假設:快速迭代。當我們驗收完成後,盡可能快地發佈到正式環境,不然會阻礙下一個功能的pull request驗收,或是覆蓋了上一個pull request的驗收環境。 用反面的例子來說明,如果我們有很多功能需要驗收,或變化很多,或存在多輪的里程碑開發,我們就不適宜那上述模式。最保險的做法,還是回到傳統的 git flow ,引入 develop uat staging 分支。但如果大家還是那麼討厭傳統 git flow,筆者還是有另一個提議。 既不想回到傳統 git flow ,但又需要慬㥀的考慮驗收發佈流程 如果開發的功能變化比較大,需要多方面協調、測試、驗收,經歷多次里程碑後,才有一個對外發佈的版本,大家可以考慮分開 Repository 做開發。例如 v1,v2的 Repository 完全獨立。 v1 是已發佈的版本,有獨立的測試場,任何即時候需要修正,就在v1的 Repository 做 pull request。 v2 則是未發佈版本,亦有獨立的測試場。加入任何新功能後,就在v2的 Repository 做 pull request,用自己專用的測試場做驗收。到 v2 正式發佈後, v1 就封存處理,再開一個 v3 作為下一個大版本的開發。這個模式,那怕在庫類型的程式碼也用得上。 這樣做的好處是 git Repository 和歷史記錄都會獨立,自動發佈的腳本程也會簡單明確一些。壞處則是 v1 v2 難以做功能對比,我們只能靠人腦記著 v1 有沒有什麼後期加入的修正和功能,需要同步移植到 v2 中 相對的,著是同一個Repository,可以利用merge 功能確保 v1 有的,v2 都己處理,只是必需要很懂處理版本衝突問題。

型別對程式語言的重要性
科技新知
MacauYeah・2024-07-08

JavaScript等程式語言的流行,好大一個原因是因為它很簡潔。而筆者認為,動態語言的特性,即是可以省略型別,是讓它簡潔的一個很大原因。動態、靜態與強型別、弱型別並一定對等,詳見Ref 動態語言的特性,就是同一個變數,在不同時候可能代表不同的數據類型,有時候是String,有時候是Integer。所以編寫時,乾脆就不寫數據類型,因為寫了也可能是白寫。 因此初學者並不需要處理大多導入import問題,也不用考慮很多compile error問題,至少程式可以運行一半,到了最後出錯的地方才停下,也就是不會因為型別問題而整個程式開不了。 不過筆者在接觸了JavaScript後,始終沒有大量使用。一來因為筆者慣用的Java,有著更大的基礎套件,改用JavaScript未必有優勢。而且動態語言還有一個長久的管理問題,我們該如何知道更新的影響有多大? 測試用例不是萬能藥 有一部份的人認為,動態語言管理難,是因為大家不愛寫測試用例。的確,若然大家寫的測試覆蓋率足夠多,一定可以預先發現問題。但筆者在Java上實踐了寫測試的習慣一段時間,依賴測試報錯,其實也是後知後覺。 IDE的界入 筆者認為,若想好好地管理程式碼,光寫測試是不夠的,我們還需要好好地讓IDE了解我們的程式碼,認它可以很有效地重構我們的程式碼。更強的IDE,還有機會可以提醒我們有一些設計上問題。 老實講,寫Java多的朋友,都可能都知道Intellij Ultimate的名字。筆者試用後,的確很有幫助。相較之下,vscode對於Java的支援,並不十分智能。但這裏筆者還覺得vscode對於java的編寫、重構、測試,在免費的情況下,都已經足夠是足夠佛心。對於網頁應用來講,vscode差的是對javascript的支援。 vscode對javascript的支援有限,其實不能怪它不夠努力。你想多一個免費的IDE怎樣去了解你的javascript程式? 我們連型別都沒有寫出來,它能怎樣推敲? 實時去模擬各種輸入?CPU又會不會耗乾?那麼寫到一半的程式碼又怎樣輸入? 直到最近筆者採用TypeScript之後,筆者看到曙光了 TypeScript 一個變相的JavaScript的靜態型別 原本的JavaScript其實也有型別的,只是不強制。若想IDE支援,需要以特定型式寫註解。但這樣寫註解,工作量並不比引用靜態型别來得輕鬆。所以最後,筆者還是覺得直接套用TypeScript,讓自己在每一次引用參數,都要好好地先了解函數的輸入輸出型別寫法。 說實在,從JavaScript到TypeScript並不輕鬆。一些原本很無腦的Axios, Promise, Vue語句,TypeScript寫起上來,都變得很複雜。但這個套用,對於IDE來講,真的很大幫忙。它就像突然讀懂了我們的程式一樣,可以跳入跳出,可以知道在多少處被引用。重構也變得更有信心,而不是等待事後測試報錯。 有一點要補充,TypeScript並不像Java那般需要完全預先宣告型別。例如函數的回傳結果,TypeScript就不會強制要求寫出型別,因為它可以有限度地猜得出來。當然,如果大家願意宣告,就更好。 總結 總括來講,型別就像厠所的衛生情況一樣。初期當然什麼都不處理也可以,但越用越久也沒有人理會,大家也不想用下去。若然大家都願意努力維持它的品質,大家會更有意願重複使用。 參考資訊 「靜態型別 vs. 動態型別」與「強型別 vs. 弱型別」 httpsblog.tarswork.compostprogramminglanguagetypesystem Typed JavaScript httpsdepthfirst.comarticles20211103typedjavascript