Multi-touch? Gesture? how about this??? 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 作者: David - 12月 29, 2009 會不會每天接觸電腦,透過開發工具撰寫程式的我們,反而讓電腦世界制約(抑制扼殺)了我們的想像力? 或許,這一切真的有不同的可能性? 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 留言 承佑表示… 董老師您好這真是太棒的一場秀,感謝你提供的影片分享,獲益良多,也希望未來能持續多多提供類似的影片。謝謝。
在POC或迷你專案中使用 LiteDB 作者: DD - 4月 06, 2024 3/24,我發了篇FB 貼文 ,提到我很久沒有在撰寫範例的時候使用關聯式資料庫了。這不是因為關聯式資料庫不好,而是使用場景和情境的問題。 大部分的教學文章或範例,為求讓主題專注不要失焦,我會讓範例盡可能地簡單。例如,用Console App 取代 Web 架構,用file取代DB。這樣學員的進入障礙會再降低一點,畢竟,我們不能假設每一位學員都對MVC框架或是資料庫存取的ORM有認識。 那篇貼文得到不少迴響,其中有位讀者建議,也可以考慮用 LiteDB ,我當時回覆說我會找個時間來試試看。既然說了出口,肯定是必須要測試一下的。 LiteDB 技術上來說,LiteDB 是一個嵌入式的 NoSQL 資料庫,特別是針對 .NET 開發者設計。其本質上是一個檔案,但它提供了類似於傳統關聯式資料庫管理系統的功能,包括存儲、檢索、更新和刪除資料操作。LiteDB 以單一檔案的形式儲存在專案資料夾中,這使得它非常適合於輕量級應用。不管是desktop app、mobile app或任何需要資料庫但又不希望安裝重量級資料庫伺服器的情境,都很適合。 你只需要針對專案安裝 NuGet 套件就可以使用: dotnet add package LiteDB 不需要伺服器、不用管帳號密碼、可以跨平台,所有的資料都存儲在單一檔案,便於管理和分發、佈署。簡單的說,當我寫好範例,在裡面放一些資料,丟上GitHub,你不管在哪一個平台(Windows, Linux),Clone下來之後,無須任何配置、設定,就可使用,資料也不會消失,無須重建。 確實,這對做範例非常方便。 你可以看看我在GitHub上的這個範例: git clone https://github.com/isdaviddong/TestLiteDB.git 下載下來之後,無須任何設定,直接 dotnet run 就可以執行: 專案中,包含了一個MyData.db檔案,就是資料庫實際儲存的位置: 你可以透過底下這樣的程式碼,即可使用: var db = new LiteDatabase ( "MyData.db" ) var col = db . GetCollection < Person > ( "persons" ) ; 其 Read more »
使用Qdrant向量資料庫實作語意相似度比對 作者: DD - 4月 22, 2024 什麼是向量資料庫? 在許多的AI實作當中,都有向量資料庫的使用需求。例如RAG(檢索增強生成)、或是資料的相關性比對、相似性搜尋…等,這些應用情境中,我們都會用到向量資料庫。 向量資料庫主要的任務,當然就是存儲和查詢向量數據。被儲存的向量數據通常是高維度的資料,以陣列(集合)的形式呈現。 例如,OpenAI就有提供一組Embedding API,讓我們可以把文字給向量化。你可以透過該 API,把一句話(一段文字)轉換成向量數據,類似底下這樣: OpenAI 的這組 Embedding API,在預設狀況下,會把資料轉成 1536 維度的向量數據,其背後的行為是把文字送給一個訓練好的模型,透過該模型跑出這組向量數據,再回傳給用戶。 然而,把一段文字給向量化的目的是什麼呢? 當我們把文字做了這種轉換後,在 1536 維度的座標空間(向量數據)中,愈相似的文字,透過Embedding API會得到距離愈接近的座標點,藉此,我們得以迅速的判斷兩段文字在語意上的相似性。 而向量資料庫中所謂的查詢功能,主要就是向量的檢索,像是『近鄰搜索(Nearest Neighbor Search)』,當用戶或應用程式提交一個向量查詢時,向量資料庫會幫我們找出資料庫中,與之最相似(接近)的向量座標點。 因此,開發人員只需要透過 Embedding API,把文字轉成向量,再把轉換好的向量座標值,儲存到向量資料庫之中,未來就可以透過向量資料庫來查詢相似(接近)的文字。 關於這個部分,如果讀者有興趣,前陣子有段網路上的影片把多維度向量資料庫的概念介紹的蠻清楚的: https://www.youtube.com/watch?v=W_ZUUDJsUtA https://www.youtube.com/watch?v=ct20Kv8yn0U 為何需要? 向量資料庫最實務上的應用,就是找到類似的特徵值。 例如,當我們把人臉的特徵值以向量資料的形式儲存到向量資料庫中之後,我們就可以透過資料庫本身提供的搜尋功能,快速地尋找出相似的人臉,這也是許多AI應用實現的基礎。 我們底下的程式碼範例,則是找出最接近的問題。(呃…什麼意思?🤔 請往下繼續看) 我們在建立對談機器人時候,常常需要讓機器人回答用戶的問題。這時,我們會讓用戶輸入問句,然後透過 Embedding API Read more »
使用 Airtable 在小型需求上取代傳統資料庫 作者: DD - 3月 25, 2024 我好幾年沒有用傳統的關聯式資料庫了。 老實說,傳統的關聯式資料庫,其實對於教育訓練和小型的專案來說,是一種負擔。 如果你想讓學員清楚的掌握一門技術,就好比說,對談機器人的開發吧,在整個教學的過程中,若是範例用到SQL或MySQL資料庫,無疑是一種節外生枝,把問題變得更複雜。因為,在對談機器人當中,儲存只是一種迫不得已的額外需求,是枝微末節,而非對談機器人技術的主體。 同樣的,如果你做一個小型專案或POC的話,『儲存』也往往不是重點,儲存只是『必要之惡』。其實,若是從這個角度廣義的來說,軟體開發的GUI、資料庫,都只是細節(枝微末節),都應該要是可以隨時被抽換或取代的部分,而非系統核心。 一套軟體或解決方案的真正核心,是商業邏輯。它(商業邏輯)才是一個應用程式真正展現價值的部分。 我們把主題拉回來。所以,我最近這幾年在上課的時候,盡量不讓範例程式碼涉及資料庫存取,特別是關聯式資料庫的存取。因為這對讀者或學員來說,變成了另一種必須學習的負擔。 但說的容易,如果範例中有碰到需要儲存資料的時候該怎麼辦呢? 有沒有什麼最簡單的儲存機制可以在程式碼中替代傳統資料庫? 這也是我最近幾年寫範例的時候,常常碰到的問題。因此,我特別花了一段時間,找看看有沒有什麼好用的『類』資料庫儲存體? 最後,我選擇了 Airtable。 Airtable Airtable 是一個靈活的雲端資料庫產品,結合了資料庫的功能和電子表格(data grid)的簡易性。它允許用戶以視覺化的方式存儲、組織和協作各種資訊: 白話一點說,就是它可以很自由的在Web畫面上設計欄位和維護(輸入、編輯)資料。 對我來說,它還有另一個重點,就是它擁有非常簡單的REST API,透過呼叫API就可以直接來讀寫資料。 它的API在使用上很簡單,只需要在設計好資料表之後,透過 https://airtable.com/create/tokens 站台建立一個 PAT(Personal Access Token): 建立PAT的時候,可以選擇要針對所有資料表,還是特定資料表,要只給這個token 讀取(Read)權限,還是要寫入(Write)權限: 有了token之後,可以透過很標準的REST API呼叫,進行連線的建立與資料的寫入: string ID = "👉air_tabl Read more »
專業的價值... 作者: David - 7月 06, 2012 每次,我去修車的時候... 師傅說:先生你這車開那麼久了,這樣壞很正常拉,你要不要換台新的? 你不知道零件會老化嗎??? 我:是是是...那,這零件換掉要多少錢??? 師傅:喔...便宜啦,大概就XX萬就可以了... 每次,我去客戶那邊... 我說:大哥,這軟體我們用那麼多年了,總是會需要調整維護一下的... 客戶:是你們一開始沒有設計好吧? 我說:不是啦,技術總是會更新的,而且現在有一些新的需求...恩,大概,就收你XX萬就好了... 客戶:什麼? 你們當初沒設計好的東西,還想要加收錢??? ------------------------------------------------------------------------- 我相信上面這樣的情況你一定和我一樣常碰到,我不知道有多少次,被修車廠唬的一愣一愣的,但我總是心甘情願地掏錢出來(好吧,我有點心不甘情不願,但我沒得選擇)。 有一次,我的動力方向盤打起來卡卡的,好像快不能正常轉向了,所以我立刻把車開到保養廠,師傅熱情的出來迎接我,問我車哪裡有問題,我描述狀況,接著師傅就把車開走了。剛好這時候我接到一通電話,我在講電話的同時,師傅把車弄好了(不到五分鐘),跟我說,這個動力方向盤的油沒了,要補充,打折後收我一千多塊,我趕緊謝謝他。 離廠前,師傅把剩下的動力方向盤油給我(很有良心),說:這是剩下的。我還沒反應過來,他就說:老闆,慢走,開車小心,注意安全。(好貼心的師傅) 我看了一下,那罐動力方向盤油只加了1/5,剩下4/5我要怎麼辦?放後車廂? 等他漏了再加? 我不知道!!! 他為何不乾脆 免費 幫我加一下呢? 像這樣類似的例子我碰過非常非常多(因為我的車老了,很多問題) 也有很多次,我明顯發現修車廠的人在唬爛我,但我換過很多家、原廠、副廠、出去玩的時候在風景區的修車廠(這更狠,擺明了就是要坑你,他清楚知道只會跟你做一次生意),幾乎都一樣,我常常有被唬弄的感覺。我想要跟著車看他怎麼修,修車廠的師傅總是說:『老闆,您可以到休息室等一下,不會那麼快喔!!!』 對照先前我在軟體社群看到有位朋友寫的一篇 文章 ,提到了軟體工程師的無奈和心酸,我其實很想說,軟體工程師大部分真的都太古意了!!!! 從商人的角度來看,每一次免費的服務,其 Read more »
周末讀書會 - 一如既往 作者: DD - 4月 07, 2024 一般來說,我都是看完整本書之後,才會決定要不要推薦,能讓我還沒看完就忍不住推薦的書極少。 但『一如既往』,就是這極少中的之一。 這本書的主題很難界定,你既可以說它是在談投資、也可以說他在談經營或企管、有些內容說的是競爭、但有時候你會覺得他講的是人生。 然而重點在於,這本書寫得非常好看。 我超愛的科幻小說家倪匡,曾說過:『好看的小說非常簡單,必定要有豐富的情節、鮮活的人物,小說寫得不好看,裏面有再多的學問、道理、藝術價值,都沒有用。』 一如既往,這本書的作者厲害之處,就是他能夠把每一篇都寫得環環相扣、異常好看,然而即便我知道每篇文章的pattern,想要模仿也是很難(這是個苦功來著)。 基本上那個pattern就是…以引人入勝的故事開頭,使用對照法讓故事撐托出主題,以極具說服力的文字或數據讓主題凸顯出價值,讓讀者有所收穫,最後在最短的文字內把一篇文章總結,然後預告下一篇作者想要接著談論什麼。 就這樣,你會一篇接著一篇,不由自主的閱讀下去,每一篇,你都會有一些驚訝、會有一些省思、接著會有一些take a way。 整本書,看似信手拈來、行雲流水,一氣呵成。但我知道,這是精心設計與編排後的結果。 一本書,最要緊是好看。 好看,讓人讀得下去,裡面豐富的內容才對身為讀者的你有意義。 『一如既往』這本書做到了,而且做得很徹底。 我快看完了,看完之後,如果有時間,我還想針對裡面某幾篇特別分享,如果你等不及,不妨先找來看看。 Read more »
留言
這真是太棒的一場秀,感謝你提供的影片分享,獲益良多,也希望未來能持續多多提供類似的影片。謝謝。