搜尋

搜尋結果

型別對程式語言的重要性
科技新知
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. 弱型別」 https://blog.tarswork.com/post/programming-language-type-system Typed JavaScript https://depth-first.com/articles/2021/11/03/typed-javascript/

排程執行任務 | Linux Schedule Job
科技新知
MacauYeah・2023-09-07

在Linux底下,crontab是一個最簡單建立Schedule Job的方法。大家用crontab -e 就可以進入設定。 # crontab -e */1 * * * * /opt/run.sh 其中每個星號,順序代表的是分、時、日、月、星期。上面的例子就是不論何月何日何時,只要每一分鐘就執行一次/opt/run.sh Singleton Job 問題是,實際情況下,你想執行程式的時間都不一定會少於1分鐘。所以你總是有機會上一個job未跑完,下一個job就開始了。為了保障自已,需要一些參考機制,去決定是否讓job開始跑。 有些情況,可能你會想用job server去做監管,但若只為單線執行的工作,起一個job server還是會增加管理上的複雜性。 最簡單的做法,就是根據不同的程式語言,使用file lock(鎖上)的機制,先上鎖,再做事。但要注意考慮有沒有出現異常情況,令你自己反鎖自己。即是你的process死了,但不懂自己解鎖,這樣以後你也不能再執行了。 在Linux Bash Shell下,就有一個很簡單的做法,就是使用flock指令。用它的最大好處,就是從OS層面下,去鎖上。只要process結束了,不論正常還是不正常結束,都會自動解鎖。 以下例子就是在執行/opt/run.sh前,先要取得/tmp/run.lockfile的鎖。如果沒法取鎖,就自動放棄執行後面的指令。 flock -n /tmp/run.lockfile /opt/run.sh # crontab -e */1 * * * * flock -n /tmp/run.lockfile /opt/run.sh Timeout 引入singleton的概念後,其實會引發另一個問題。因為異常的情況,還有機會是不生不死,process hang。所以我們還需要設定一個最大的執行時間,讓你的process在異常的情況下,被強行清走。 例如,ping指令在linux預設是永遠不會自動停止的,可以模擬process hang的情況。如果我們想定時從外部收走ping process,就可以使用timeout指令。以下指令就是2分鐘後殺指ping process。 # in file /opt/run.sh timeout 2m ping localhost # to check process id, you could use # > ps aux | grep ping # you will see two different id for ping and timeout 配合errorcode使用,你可能還會在想在timeout時送出一個email通知自已。 # in file /opt/run.sh timeout 2m ping localhost exitCode=$? if [[ $exitCode -eq 124 ]]; then echo "timeout" # enter email alert with timeout elif [[ $exitCode -gt 0 ]]; then echo "exit with error" # enter email alert with timeout else echo "exit normal" fi 配合docker使用,你可能需要考慮signal怎樣傳遞。 在筆者測試的環境中,似乎SIGTERM會被擋,也有可能是SIGTERM太強,它只把前景的docker container run收走,但其內的ping process還在docker daemon中行走。所以最後改用SIGINT,讓docker container run可以好好地把SIGINT傳入其內。 # It seems that docker captured the SIGTERM. Send SIGINT instead # in file /opt/run.sh timeout --signal=SIGINT 10s docker container run --rm pingtest -c 20 exitCode=$? if [[ $exitCode -eq 124 ]]; then echo "timeout" # enter email alert with timeout elif [[ $exitCode -gt 0 ]]; then echo "exit with error" # enter email alert with timeout else echo "exit normal" fi Full demo, github repo cronjobWithDocker

【澳門美食速遞】獨特麻辣特調拌醬,大喜麻辣拌(筷子基店)
生活在我城
Lifemagfoodie・2022-07-30

大喜麻辣拌有別於傳統的麻辣燙,以拌醬的形式加以調味,味道更香口入味!而澳門呢間位於筷子基的大喜麻辣拌,經過老闆精挑細選澳門本地新鮮的高質量食材,令大家在吃麻辣拌時亦可享受食材的鮮味! 多款配菜選擇,造就滋味的一餐 老闆會不定時更新食材款式,令大家在選擇配搭上更多樣化, 像是小編很喜歡的紫菜響鈴卷、墨魚腸及龍蝦沙律丸等。另外,這種特別的配菜,包括韓國紫菜蟹肉魚糕、韓國魚糕、韓國年糕魚糕、韓國芝士魚糕、日本油揚豆腐、麻吉燒、芝士皇帝蟹柳,都非常值得一試! 除了招牌拌醬,亦有兩款湯選擇 — 番茄湯及椒麻湯 番茄湯採用新鮮番茄熬製而成,酸爽的滋味,令你胃口大開;椒麻湯加入精選花椒、青花椒、辣椒等熬製成老湯,麻麻辣辣的滋味,非常惹味! 必試老闆特製的辣椒醬,令湯底昇華 而店鋪的辣椒醬更是老闆的獨門秘方,採用 3 種不同種類的辣椒製作而成,香辣惹味的辣椒醬加入湯底,令層次昇華! 到店優惠 現在亦有優惠到店落單9折,在外賣平台上買滿 $68 送盒裝飲料,滿 $88 更送荔枝烏龍或是水蜜桃烏龍茶。 大喜麻辣拌(筷子基店) 地址:澳門船澳街250號綠楊花園第四座地下B 電話:62392618

【澳門探店】澳門倫敦人邱吉爾餐廳 — 澳門花季下午茶
生活在我城
Lifemagfoodie・2022-04-27

終於迎來浪漫嘅春天,澳門倫敦人邱吉爾餐廳推出澳門花季下午茶,糕點色彩繽紛鮮明,造型非常可愛,分別有鮮花、蜜蜂、蝴蝶等等,食材都以清新輕盈為主,十分迎合春季的主題。想睇更多,即刻去片喇~ 食物方面,小編比較愛好鹹食,包括這個 「春季英式青豆配布拉塔乳酪和煙燻三文魚子醬(中間)」、 「椰菜、橙花奶凍配咖喱蟹和蘿蔔仔(右3)」都非常清新 ! 不得不提這個「香料鵝肝花盆配杏仁酸辣醬和黑朱古力」 ,花盆造型像真度高,又甜又鹹令人印象深刻,但是味道不怕突兀,鵝肝及黑朱古力出奇地夾。 甜點方面,抹茶控一定會喜歡等「抹茶泡芙(左1)」加入抹茶忌廉、櫻桃啫喱,茶味香濃又帶點酸甜。「加里蓋特士多啤梨餡餅(中間)」以杏仁餡餅、紫羅蘭和士多啤梨啫喱、加里蓋特士多啤梨、雲呢拿忌廉製作而成,而「春季蝴蝶(右3)」加入芒果和熱情果,兩者都酸酸甜甜的非常開胃 「花盆」以黑朱古力慕斯、榛子酥、70%黑朱古力忌廉製作而成,脆脆的很有口感,朱古力香味濃郁,而且不怕太甜。 另外,「招牌精選各色鬆餅配自製果醬及凝脂忌廉」小編亦非常推介,可以選擇自己愛好的口味,鬆餅入口鬆化而且不會太散。 澳門花季下午茶 $298 (兩位)可享有多款甜鹹點,包 2 杯飲料,絕對物有所值。 澳門倫敦人邱吉爾餐廳澳門花季下午茶星期一至四下午三時至六時供應MOP298(兩位用)

【2022 必看陸劇】芒果TV 熱門劇集推介
生活在我城
Cheers!・2022-01-29

農曆新年放年假,當然要在家開心煲劇,以下小編為大家整了以2022的陸劇推介,想知就繼續看下去吧! 芒果 TV 免費 1 個月(原價:$18 / 月),立即經 CTM Buddy App 申請:https://bit.ly/3nRAtuC 住在我隔壁的甲方 心懷夢想的「麻辣系」職場小白葉璇(王子璇飾)遇上了「清湯系」滬漂精英鄰居李擇南(謝彬彬飾),在相互吐槽職場的過程中兩人「暗生情愫」。殊不知,李澤南的真實身份是百般刁難葉璇的「甲方爸爸」。兩人在「職場危機中共患難」,在調查真相時,彼此信任,展開了一段「社畜乙方」和「惡魔甲方」的鄰居都市愛情故事。 我在他鄉挺好的 遷徙的大雁如同每一個在大都會中的異鄉人,在呼嘯的地鐵與擁擠的樓宇為夢想而奔赴,這是屬於她們的故事,也是屬於我們每一個人的現實。 如果聲音有記憶 樂觀元氣少女俞鹿希,意外的發現自己的上司林楠,竟然是崇拜了多年的配音偶像麥大。俞鹿希拜林楠為師,在俞鹿希的不斷進步中,也逐漸發現林楠當年不為人知的秘密,兩人敞開心扉情感漸近。當俞鹿希獲得成功,擁有愛情和事業之時,俞父的阿爾茲海默症讓她備受打擊,她用聲音收穫了愛情,也用聲音喚回了對親情的記憶。 沈睡花園 自媒體情感公眾號博主肖瀟,與專業心理咨詢師林深在一檔戀愛綜藝節目中因為觀念分歧而結怨。機緣巧合之下,肖瀟應聘成為了林深助理,她希望通過學習專業的心理學知識增強自己公眾號的情感分析專業度。兩人在一起工作和生活當中,共同解決了若干心理個案,也解決了埋伏在身邊的一個個危機,譬如粉絲戀愛妄想、網絡槓精、情感依戀損傷等等,彼此的心越靠越近。肖瀟的熱情與活力感染了個性高冷的林深,林深則教會肖瀟如何成為一個優秀專業的心理咨詢師。但埋伏在他們身邊的危機也逐漸顯現,兩人在經歷衝突和危機之後,最終發現其實愛情也是一種催眠,成就彼此成為更好的自己。 幸福二重奏 該劇講述了改革開放浪潮下轉業軍人沐建峰在商海中沈浮、在情場中輾轉,在成長的路上尋找迷失的自我、回歸初心的故事

[戯電遊玩] 簡化是進步還是退步? - 《魔物獵人崛起》
手機‧電玩
君尋・2021-04-21

縱使失去了前作的優質畫面和廣大地圖,在主機性能一般的Switch上推出的新作《魔物獵人崛起》(以下簡稱為《MHR》)依然能夠交出一張不錯的成續單,在短短數週達成全球出貨量500萬的記錄。作為由PSP年代已開始接觸《魔物獵人》(以下簡稱為《MH》)系列的筆者,對每集《MH》帶來的變化都感到相當滿意,但本作當中的「新嘗試」,明顯受到近年遊戲界的趨勢影響,更受到部份核心玩家所非議。  — 受限於Switch的性能,場地大小、畫質和細緻度都及不上前作 除人所共知不斷打怪掘素材外,複雜的遊戲系統一直是《MH》系列所為人津津樂道的原因之一。每種武器有不同的優缺點和操作方式,要全部熟練並非一朝一夕的事。戰鬥之外,合成系統、地圖探索、寫實的生態環境,不但只是單純的設定,亦影響玩家與魔物的戰鬥,更重要的是深化玩家在魔物獵人世界中的沈浸感。然而,在《MHR》中部分系統被簡化,如獵人到灼熱或寒冷的環境狩獵時,需要以「冷飲」或「熱飲」保持體溫,這是獵人們狩獵時的基礎中的基礎,製作方卻把如此基本的設定刪除。此外,《MHR》中玩家進場地後便能立即在地圖上看到魔物所在的位置,與過去玩家需要花上5分鐘或以上尋找狩獵對象的遊玩流程截然不同。這些簡化固然使遊玩過程更加方便,讓玩家更能專注與魔物戰鬥的過程,但正正就是這些麻煩的地方所呈現的真實感,讓玩家感受到魔物獵人世界的魅力。  — 「貓飯」亦是其中一個被簡化的系統 眾所周知,日本遊戲製作商比起傳統的家用機遊戲,近年來更偏向開發手機遊戲。手機遊戲各種便利玩家的功能,例如自動戰鬥、加快模式等,已經讓不少輕玩家習慣了這些「方便」。家用機遊戲近年來亦受影響而開始簡化遊玩流程。比如日系RPG遊戲,由過往不會有任何提示,演變為隨時讓玩家查看下一個目的地,有部份更直接在地圖上顯示標記,玩家不用思考直奔標記便可推進劇情,大大影響RPG 類型遊戲的魅力,探索和尋找線索。簡化是把雙刃劍,筆者並非全然反對遊戲流程或系統的簡化,在「娛樂至死」的時代,可以讓玩家更有效率體驗一款遊戲亦並非壞事,這樣才玩家空出來的時間便能投入到其他的「娛樂」之中。《MHR》的簡易化,無疑是反映現今日系遊戲的趨勢,然而筆者更希望看到,殿堂級的《魔物獵人》系列應該繼續創造新潮流,而非僅僅隨順應時代的趨勢,就如當年由《魔物獵人》帶起共鬥類遊戲的熱潮一樣。  — 排除簡化系統的問題,今集的新元素都是正面評價居多 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 關於[戯電遊玩] 本欄目會分享能令筆者醉心投入的遊戲作品,不管是當下的還是過去的。 更多關於筆者喜歡的遊戲心得:https://ppt.cc/fG71cx

[戯電遊玩] 美製和風遊戲《對馬戰鬼》
手機‧電玩
君尋・2020-07-29

在《最後生還者2》一遍批判與失望的輿論下,作為Sony在PS4上最後一隻自家製作的遊戲,《對馬戰鬼(Ghost Of Tsushima)》在推前出可謂備受壓力。不過遊戲發行個多星期以來,除遊戲評論網站外,玩家亦對此外國製和風遊戲一致好評,全球首週已達240萬銷量,不但打破全新IP最快最高的記錄,甚至在日本本土亦出現缺貨現象,可謂是叫好又叫座。究竟這隻日本版刺客教條是否真的足以稱為PS4最後的大作? 面對如詩如畫般的畫面,如其說製作公司技術力了得製作出各種迷人的花海山景,筆者更認為他們懂得創造「沉浸感」。只有少量資訊的遊戲介面、極為快速毫無等待的載入時間、島上各種極為自然的環境(如風吹讓樹傾斜、日照的反射),讓玩家彷如置身真實的對馬島上,能全心全意投入到遊戲中感受對馬島、體驗這齣復仇劇。難怪有玩家認為遊玩此作,可以一解無法旅行之苦,而日本長崎縣亦藉此機會推出和對馬島相關的旅遊資訊,吸引旅客來一次「聖地巡禮」。雖然是外國團隊製作的遊戲,但對日本文化的考究亦毫不馬虎。諸如神社、狐狸帶路的御塚、鹿對日本人的意義等,都看出製作組在日本歷史文化上花了不少心思。而主角仁的劍術,亦是在日本的劍道大師的指導下製作的。不過本作始終並非歷史遊戲,雖以文永之役為背景創作,但現實上對馬島很快便被蒙古人佔領了,蒙古離開的原因亦並非任何人反攻,本作只是借用此背景而創作的虛構遊戲。所以就算本作對武士道的描寫不符合真實的鐮倉幕府時期的認知也不能算是缺點之一,反而這是大眾對武士的既定印象,更易觸動玩家。 系統上有不少玩家將本作與同類似的遊戲相比,如《巫師3》、《刺客教條》等。無可厚非的是本作不外乎就是推主線、副線、解隨機任務、收集各種物品,雖有美景襯托但難免會有作業感,幸好副線的有趣程度甚至超過主線。而戰鬥系統初接觸時有新鮮感和多變,正面戰鬥的劍術講求和敵人相剋,以及看準敵人攻勢的最後一刻前作出擋格或回避並予以極大傷害的反擊。其後就是弓箭等的副助武器。由於本作強調主角放棄武士道精神也要化成戰鬼驅逐蒙古人,所以亦會出現苦無、炸彈等道具,以及潛行暗殺。不過暗殺部份過於簡單,敵人的搜索也不積極。玩家大部份時間都可選擇自己喜歡的方式戰鬥,不過筆者就非常享受與敵人正面交鋒,享受刀劍間交會而成的聲音及如「一閃」般反擊的爽快殺敵。不得不提「對峙系統」,以拔刀術殺敵絕對是本作最型及爽快的時刻。再加上玩家在戰鬥後可以自行「納刀(收刀)」,沒有任何實際意義的功能但筆者相信不少玩家都會花時間做這個動作,來滿足自己的武士夢(笑)。至於本作的難度亦非常親民,普通難度一對多時就像《無雙》,選困難的話單挑大佬時就像《隻狼》,因不影響獎杯所以玩家可以悉隨尊便。 盡管背景和系統上有點瑕疵,筆者遊玩時選日配日文字幕,仍然無法想像這並非日本人製作的遊戲。對古代日本有興趣及不抗拒外放式世界的玩家請勿錯過本作。

中銀澳門 雲閃付滿$50回$10
生活在我城
MO560・2020-03-25

中銀澳門 - 雲閃付掃Code滿$50回$10 MO560 幫你精選銀行優惠 -------------------- 即日起至6月22日,憑中銀銀聯信用卡(首六位卡號:622479、622480、622380)於本澳指定商戶使用雲閃付掃Code交易(銀聯二維碼消費),滿MOP$50以上的交易即可享MOP$10回贈。另外,本次優惠可以疊加中銀大灣區卡$5回贈同時享有!換言之,使用中銀大灣區卡在雲閃付進行掃Code交易的話,滿MOP$50以上共可獲MOP$15回贈。 中銀大灣區卡 詳情 優惠期內,每名客戶推廣期內最多可獲MOP$200回贈,即最多20次的$10回贈,回贈將於2020年7月31日存入。 另一方面,每月滿MOP$50的交易每累計6筆,即可獲贈MOP$20電召的士消費券,推廣期內最多可獲MOP$120電召的士消費券。客戶在電召的士登記的手機號碼需與中銀澳門登記的手機號碼相同,獲贈的消費券後需在兩個月內使用。 優惠詳情優惠內容:雲閃付掃Code滿$50享$10回贈優惠日期:即日起至2020年6月22日適用卡種:中銀銀聯信用卡回贈上限:MOP$200 (即交易20次)注意事項:必須是雲閃付的二維碼交易登記網址:無須登記 更多詳情關於以上活動,可查看: 中銀澳門 - 無接觸支付 方便又安心 -------------------- 喜歡小編的文章嗎?比個Like支持我啦 :) Facebook: MO560Instagram: mo560_travelWebsite: https://motravel.info 想追蹤最新最潮澳門信用卡、飛行里數、旅遊資訊?將MO560設定為 「搶先看/See First」!

一款來自SOPA湯品專賣店的鮮制美食,餐點低卡無負擔!
其他
澳門生活圈・2019-09-10

同步發布媒體公眾號 媒體排名不分先後 周選咖喱飯評測 現代的都市職員,每天坐著辦公室工作導致缺乏運動。加上飲食的不健康而導致的一系列亞健康症狀是我們應該主義的,那么想要改善這樣的情況就要從最容易改變的飲食開始。 來自SOPA湯品專賣店(專送)的 周選咖喱飯 SOPA湯品專賣店的食品,都是遵循著東京女性新輕食潮流! 料理職人每日鮮制美食,嚴選天然食材,用料豐富,餐點低卡無負擔。加上店家所作的咖喱為日式咖喱。主要突出了咖喱的香味與甜味,搭配著微辣的口感,是午餐不錯的選擇。 店家采用了紙盒和塑料盒,因為店鋪較小,所以主打的是外賣,包裝走的簡約風。 這也剛好符合上班職員打包的需求,而且店鋪裝修風格簡約,幹淨整潔,衛生狀況良好,來到店鋪你會在繁華的鬧市中感受到了一絲寧靜。 SOPA湯品專賣店的價格並沒有大家固有印象中日料的昂貴,反倒是價格親民並且有多種優惠套餐,加上服務員熱情接客,耐心講解這一加分項。 很推薦大家到SOPA湯品專賣店進行品嘗,也可以直接搜索星海豪庭。 歡迎來到“憶條街”訂單詳情! 想要嘗試的朋友 可以通過憶條街進行外賣訂單 或者到店鋪自取 店鋪地址 澳門柏林街180號星海豪庭地鋪E。