Visual Studio 2010 CHT is released on MSDN 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 作者: David - 6月 01, 2010 MSDN當中已經可以下載Visual Studio 2010中文版了, 有需要的朋友們可以下載(請選「開發人員工具」->「Visual Studio 2010」-> 語言分類請選「Chinese – Traditional」)中文試用版將會再晚一些釋出。 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 留言 AlanYang寫道… 那請問老師您可以知道大約還要多晚嗎?是今晚?還是要再過更久呢?很想要下載試用 David寫道… 應該有機會在本周或下周釋出。 David寫道… Alan, 試用版已經釋出,可以在底下網址下載:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=06a32b1c-80e9-41df-ba0c-79d56cb823f7 AlanYang寫道… 耶!感謝老師!趕快來下載... AlanYang寫道… 老師,我裝完vs2010中文版後,要再裝silverlight 4 tools(英文版)時,發生錯誤,不給裝,不知道老師是否也有遇到這樣的問題? David寫道… Hi Alan,如同我在FaceBook專頁中說的,中文版的附加套件(像是Silverlight Tools)一般來說都會晚一些推出,時間差不多15天到一個月不等。這也是我個人比較喜歡用英文版的原因,有些新玩意兒比較能夠先try... David寫道… 關於無法安裝SL tools的問題, Lolota在他的blog上有介紹解決方案,有興趣的朋友可以參考他的Blog http://www.dotblogs.com.tw/lolota/archive/2010/06/03/15599.aspx David寫道… 作者已經移除這則留言。
在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 »
專業的價值... 作者: David - 7月 06, 2012 每次,我去修車的時候... 師傅說:先生你這車開那麼久了,這樣壞很正常拉,你要不要換台新的? 你不知道零件會老化嗎??? 我:是是是...那,這零件換掉要多少錢??? 師傅:喔...便宜啦,大概就XX萬就可以了... 每次,我去客戶那邊... 我說:大哥,這軟體我們用那麼多年了,總是會需要調整維護一下的... 客戶:是你們一開始沒有設計好吧? 我說:不是啦,技術總是會更新的,而且現在有一些新的需求...恩,大概,就收你XX萬就好了... 客戶:什麼? 你們當初沒設計好的東西,還想要加收錢??? ------------------------------------------------------------------------- 我相信上面這樣的情況你一定和我一樣常碰到,我不知道有多少次,被修車廠唬的一愣一愣的,但我總是心甘情願地掏錢出來(好吧,我有點心不甘情不願,但我沒得選擇)。 有一次,我的動力方向盤打起來卡卡的,好像快不能正常轉向了,所以我立刻把車開到保養廠,師傅熱情的出來迎接我,問我車哪裡有問題,我描述狀況,接著師傅就把車開走了。剛好這時候我接到一通電話,我在講電話的同時,師傅把車弄好了(不到五分鐘),跟我說,這個動力方向盤的油沒了,要補充,打折後收我一千多塊,我趕緊謝謝他。 離廠前,師傅把剩下的動力方向盤油給我(很有良心),說:這是剩下的。我還沒反應過來,他就說:老闆,慢走,開車小心,注意安全。(好貼心的師傅) 我看了一下,那罐動力方向盤油只加了1/5,剩下4/5我要怎麼辦?放後車廂? 等他漏了再加? 我不知道!!! 他為何不乾脆 免費 幫我加一下呢? 像這樣類似的例子我碰過非常非常多(因為我的車老了,很多問題) 也有很多次,我明顯發現修車廠的人在唬爛我,但我換過很多家、原廠、副廠、出去玩的時候在風景區的修車廠(這更狠,擺明了就是要坑你,他清楚知道只會跟你做一次生意),幾乎都一樣,我常常有被唬弄的感覺。我想要跟著車看他怎麼修,修車廠的師傅總是說:『老闆,您可以到休息室等一下,不會那麼快喔!!!』 對照先前我在軟體社群看到有位朋友寫的一篇 文章 ,提到了軟體工程師的無奈和心酸,我其實很想說,軟體工程師大部分真的都太古意了!!!! 從商人的角度來看,每一次免費的服務,其 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 »
讓 LINE Bot 對談機器人顯示 "Loading..." 動畫 作者: DD - 4月 26, 2024 LINE 在日前推出了一個功能,恰恰好適合現在許多開發人員正在設計的 - 搭配LLM(大型語言模型AI) - 的 AI 對談機器人。 這個功能 ‘Display Loading Animation’ 讓開發人員可以在LINE Bot回覆訊息前,先出現個幾秒底下這樣的圖示: 這個圖示可以設定最長顯示時間,從 5~ 60秒 之間的5的倍數均可,時間到了,會自動消失。而即便時間還沒到,如果LINE Bot(不是用戶)後面有訊息發送,動畫也會自動消失。 要讓你的 LINE Bot 出現這樣的動畫非常簡單,我們的 LineBotSDK 也在第一時間更新了,使用我們 SDK 的 C# 開發人員,現在可將 LineBotSDK更新到最新版,即可輕鬆的透過底下的程式碼,來顯示出這樣的 Loading 動畫: using isRock . LineBot ; // create bot instance var bot = new Bot ( channelAccessToken ) ; // show ladding animation var ret = bot . DisplayLoadingAnimation ( chatId , 15 ) ; // display the result Console . Write ( ret ) ; 特別是對於現在需要串接LLM(大語言模型)的Chat Bot來說,呼叫LLM的API,回應時間往往都比較長,因此,我們在 Reply 用戶的訊息前,可以先讓用戶看到這樣的,然後再呼叫LLM相關的API(像是OpenAI API),如此一來,假設 LLM API 回覆的時間較長,用戶也比較不會有空等不耐煩的感覺。 而且這個指令執行之後,如果有 Push/Reply 的訊息發送,Loading 圖示就會自動消失,讓整個用戶的體驗不至於有突兀感。 適當的使用,會讓你的 Chat Bot 有更生動擬真的感覺,有需要的朋友可以立刻試試看。 Enjoy it. 😊 Read more »
留言
試用版已經釋出,可以在底下網址下載:
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=06a32b1c-80e9-41df-ba0c-79d56cb823f7
如同我在FaceBook專頁中說的,中文版的附加套件(像是Silverlight Tools)一般來說都會晚一些推出,時間差不多15天到一個月不等。
這也是我個人比較喜歡用英文版的原因,有些新玩意兒比較能夠先try...
http://www.dotblogs.com.tw/lolota/archive/2010/06/03/15599.aspx