發表文章

目前顯示的是 8月, 2022的文章

Azure DevOps in Action - 如何避免開源套件的使用風險

圖片
近代軟體開發,不管是使用哪一種語言,幾乎都一定會使用到套件(Package),套件的使用都有著非常重大的意義。套件不只是讓開發變的更方便,套件的版本管理,能夠讓專案之間的相依性被有效管控,避免dependency hell的發生。 所以各大開發語言,不管是node.js、python、Java…都有自己的套件庫,微軟的.net當然也是,nuget就是.net開發人員的標準套件庫。如今,使用套件庫上的組件來開發企業內的專案,已經是理所當然的習慣了。 套件庫的使用風險 然而,使用套件並非100%毫無風險,由於開源軟體的觀念盛行,這個時代任何人都可以將自己開發的套件貢獻上nuget讓大家使用,雖然開發社群與nuget站台會針對有潛在或惡意風險的套件提出警訊,但由於這些資訊並非即時提供,且有可能因為開發人員的疏忽而沒有被發現,導致你的專案使用到有品質不佳,或是有安全疑慮的套件。 除此之外,套件還有許可授權的問題,並非每一個套件使用上都是毫無代價的,雖然nuget會要求套件開發人員具體標明套件的使用授權許可,但倘若開發人員不察,使用到一些並非可以免費使用的套件,或是使用到了標註為GPL的套件,那你依賴該套件開發的專案,也會被要求開源,這對於公司來說,可能會造成一場災難… 在CI Pipeline中掃描套件 因此,為了避免軟體開發人員一時疏忽,CI Pipeline有必要針對軟體套件的使用作一些掃描和檢查。而WhiteSourceBolt就是這樣的一套免費工具。 你可以在Azure DevOps Pipeline中,加入WhiteSourceBolt這個task,就可以輕易的掃描整個專案中使用的套件: 呈現出的報表如下: 你會發現,報表中清楚的告訴我們,哪些套件是高風險的,並且原因為何(上圖A)。如果你的專案有紅色高風險套件,強烈建議你要立即著手處裡(升級版本或尋找替代套件)。 要在Azure DevOps中啟用WhiteSourceBolt非常簡單,只需要為你的組織安裝Azure DevOps Marketplace中的外掛: 下載位置位於: https://marketplace.visualstudio.com/items?itemName=whitesource.ws-bolt 安裝好之後,你重新進入Azure DevOps,可以看到在

內容審查(Content Moderator)服務

圖片
當網路上出現一則訊息,誰有權力判斷這則訊息的真假? 1.政府 2.平台業者 3.KOL(Key Opinion Leader, 意見領袖) 4.我自己 上面這個問題,不知道你的答案會選擇甚麼? 這兩天沸沸揚揚的中介法,造成了很多網路上的輿論。主因是平台業者被要求有責任管理(刪除或標註)不實言論,否則要罰款。 但這中間出現了兩個問題 1. 誰決定不實? 2. 如何做到有效即時的內容管理? 身為技術人員,我想從技術的角度談這件事情。首先,有沒有可能即時發現用戶將有問題的內容張貼到網站上? 技術上確實有可能。 現在微軟Azure, AWS, Google都有許多雲端AI服務,可以辨識圖片、影音、文字,近乎即時的判斷內容是否涉及情色、猥褻、或是具有冒犯意味甚至鼓吹自裁。這服務微軟叫做 Azure Content Moderator,內容仲裁 。總的來說,在當今的AI技術上,我們早就可以針對圖片、影像、或文字進行客觀的內容判斷,這些技術已經逐漸成熟,經驗上準確度大約八九成沒問題。 所以各大網站(像是FB)可能早已把這些技術用在內容分析上了(如果你的網站也需要,但不知道該怎麼做,可以與我聯繫)。但問題是,這些AI服務,可以判斷內容,無法知道對錯。 因為內容的正確與否,涉及價值觀的判斷。 在這個世界上,並不是所有事情都是非黑即白,一翻兩瞪眼的不是對就是錯,更何況,真假對錯很可能因為時間而有所改變。一開始你可能以為是對的(內容為真),但經過時間,很可能發現是錯的(內容為假),反之亦然。舉個更簡單的例子,不同世代對於同一件事情的看法,也往往南轅北轍。 如果第一時間不分青紅皂白的,就直接屏蔽刪除或標註某種論點,很可能事情將永遠沒有水落石出的一天。當然,如果你不在意真相(只在意管理),也就無所謂。 所以,從技術的角度來說,現在的科技就算不用靠誰立法、無須哪個單位協助,單單使用AI技術,就足以判斷內容是否違背善良風俗,這個也早就在做了。然而問題是,會不會我覺得的裸露、是你覺得的藝術呢? 這條界線該如何決定? 誰決定? 因為一旦涉及主觀價值判斷,所有的一切就變的不再簡單。 因此,AI就算能幫你辨識內容,卻無法幫你判斷真偽。 是非、對錯、真假,都很難由誰單方面說了算。 因此,我們再看一次這個問題。 當網路上出現一則訊息,誰有權力和責任判斷這則訊息的真假? 1

Let it be

圖片
每當寫程式或文稿累了的時候,我會到河堤騎車。 最近這幾年,台北鄰靠基隆河的兩岸,都有了挺不錯的自行車道,幾乎沒甚麼難騎的上下坡,很適合以悠哉閒逛的心情慢慢騎吹吹風… 一天,忙了一整個下午,趁夜幕微微垂下,趕在日落前,我租了YoiuBike在河堤邊緩緩騎乘。岸邊隨風飄來青草的香味,讓人很是愉快。 正當我覺得身心放鬆,通體舒暢。卻不知耳邊何時傳來了一陣犀利(你要說淒厲也行)的對談聲,有點像是你去傳統菜市場會聽到的那種婆婆媽媽在攤販前理直氣壯的討價還價聲,聲音從遠而近,由小而大,漸漸飄了過來。 仔細一聽,位於六點鐘方位,後方。 一群騎著貌似淑女自行車的大媽,集團似的緩緩逼近。 我側眼一瞥,數了一數,五位。喔不,是六位,其中一位有些落單,奮力的在後面追趕。 前面五位大媽,領頭的三人,並排而行,佔據了來往雙線車道,伴隨著中氣十足的對談,讓人不注意到她們都很難。雖然距離有些遠,但言談中我依稀聽到關於某位大媽的兒子的太太的最近一些態度問題…呃…不關我事,非禮勿聽,我騎我的車。 加速前進。 可能是我租賃的YouBike齒輪比不佳,也可能是每天騎車的大媽中氣十足,我雖然加速超前了一定的距離,但每當我放鬆開始欣賞河邊的景色和迎風吹來的芬芳草香,一不注意,這群大媽集團立刻從後方逼近。一連數次,我在聽到了大媽們對談的特殊嗓音時,才意識到我快要被集團軍輾斃,只能瞬間加速遠離…但沒多久,我優閒的騎車氛圍就又會被身後堅持出現的音量所打破。 大媽們像是擁有裝上了勁量永備電池一樣的持久續航力,以堅毅且穩定(甚至我覺得似乎有愈來愈快)的速度屢屢逼近。 每當大媽集團軍從後方接近,我airpods裡的音樂聲量,總是不爭氣的敗陣下來… 當這條沿岸車道已經騎了約莫三分之二時…我,終於做出了決定。 在車道轉角處的某一個空曠處,我停了下來。站穩步伐,拍拍身上的風沙灰塵,好整以暇的,帶著敬佩與釋放的心情,目送大媽集團軍隊從我眼前騎過去… 喝了口從家中帶出來的水壺裡的氣泡水,整理了一下裝束,跨上自行車,我開始緩緩而行。 我何苦讓自己被身後追趕的雜音持續干擾著呢? 人生旅程上總是會碰到不同的人群,路程上人來人往、來來去去,我又不是要和誰比賽,幹嘛跟自己過不去,身後的雜音,不如就讓它從眼前過去。 等雜音遠離,我戴上耳機,依舊開始自在的騎自己的路,欣賞屬於自己的風景,以我自己習慣的速度,