[C#] .Net 下操作 Excel 新選擇 EPPlus - 建立 Excel 檔案,讀取 Excel ,寫入公式,計算公式讀取公式

2024-02-15

上次處理 Excel 問題還再 .Net Framewok ( 2014),現在都已經 .Net 8 了,該是時候找找看新的選擇,之前寫的 NPOI 當然都還可以使用

只是再想都已經到了 .Net8  有沒有其他好用的選擇 ,大概看了一下選了幾套測試,今天測試一下 EPPlus 



[C#] 一個輕量化的Database - LiteDB 中索引 ( index ) 的相關測試

2024-02-05

今天主要不是寫程式,主要是測試 LiteDB 到底對於索引的處理結果,我這邊有三個測試 collection

FRIEND1- 一百萬的資料沒有做索引

FRIEND2- 前50 萬筆建立好後,製作索引,後面再寫入 50萬筆

FRIEND3- 一百萬筆資料建立好後,再建立索引



[C#] 一個輕量化的Database - LiteDB 中的 關聯式操作 : DbRef

2024-02-02

今天繼續聊一個最近測試 LiteDB 遇到一個很有趣也很方便的東西,  LiteDB 雖然主要是 NoSQL 但是

他也有可以支持類似關聯式資料庫 的操作,畢竟透過正規化資料庫,對於資料規劃也會比較符合主流邏輯

這篇就來聊在 LiteDB  如何做到兩張表( collection ) 的關聯



[C#] 一個輕量化的Database -LiteDB 製作 List<Object>屬性索引查詢的最佳方法

2024-02-01

上一篇文章 說到 LiteDB 製作索引(index) ,百萬資料測試查詢篇,後來我有測到一個東西

就是我對屬性是 List<Object> 中的 某一屬性進行查詢,是不是可以做索引 (index) ,

答案是可以的,但是要直接做到 List<Object> 中要被查詢的該屬性..


[C#] 一個輕量化的Database - LiteDB 製作索引(index) ,百萬資料測試查詢篇


今天迎來 LiteDB 最後大的測試,就是建立索引,為了測試資料,我寫入了一百萬筆,所以花了一點時間

為了要比較前後,所以花了一點時間做範例+結果



[C#] 一個輕量化的Database - LiteDB 大檔處理 _files,_chunks

2024-01-31

如果是測試 Database  我也很好奇,LiteDB 是怎麼處理大型檔案格式的,看了一下

你將大檔案寫入該資料庫中,他會規畫一區讓你放檔案,有一張表負責記錄你放入啥檔案,另外一個 他稱之為 chunk 的

主要是會把檔案切割,每 255KB 切一段



[C#] 一個輕量化的Database - LiteDB 中 Shared Connection + Parallel.For 測試修改一筆資料

2024-01-30

最近在測試關於  LiteDB 的各種可能 ,在之前的案例預設的時候, 你在操作 LiteDB 都是獨占式開啟

但是我在使用 他的 GUI 工具的時候發現他在連線的時候有一個選項 就是 Shared 



[C#] 一個輕量化的Database - LiteDB 關於 Transation 的測試 Commit , Rollback

最近依然在測試 LiteDB,今天要測試的是 Transaction ,在 LiteDB 中 Transaction 其實很簡單的

跟傳統在寫 SQL Server 的 Transaction 設計的很像,我網路上查了一下文件,其實到 v5 之後版本寫法變得比較穩定

今天就簡單的記錄一下 



[C#] 一個輕量化的Database - LiteDB 各種查詢姿勢

2024-01-29

最近因為在測試 LiteDB ,所以這邊筆記幾個查詢方法,可以方便自己之後可以快速的回憶起來要怎麼寫

下面主要就是列舉幾種查詢資料的方法,最後一個測試比較久因為我查詢了 物件中的 List<Object> 

裡面的屬性並且使用 %LIKE% 



[C#] 一個輕量化的Database - LiteDB 關於 BsonValue 轉回物件問題

今天來說一個在嘗試 LiteDB 的時候遇到的錯誤,因為該套件的底層是使用 BSON ,所以在還原回物件的時候

他預設都是 LiteDB.BsonValue  ,因為我直接下一個查詢語法後直接使用 Json.NET , SerializeObject 的時候直接出現錯誤

Unhandled exception. Newtonsoft.Json.JsonSerializationException: Error getting value from 'AsBoolean' on 'LiteDB.BsonValue'.

 ---> System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Boolean'.

   at lambda_method23(Closure, Object)

   at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)

   --- End of inner exception stack trace ---


[C#] 一個輕量化的Database - LiteDB的簡介與使用

2024-01-26

我自己本人因為 SQL 沒有寫的很好,所以很喜歡 NoSQL ,最近在看一些範例都會使用一套  DB 叫做 LiteDB

想說趁機會就玩玩看,基本上他官方上是寫基於 NoSQL 的結構,而且與 .NET 高度親和所以就順手研究一下

用起來頗為順手,對於一些小專案我想我會使用這優先於 SQLite 



[C#] .NET8 - SHA3-256 操作遭遇的平台問題

2024-01-25

最近在看 .NET 8 新功能,最近好像多了 SHA3_256 ,因為之前在弄區塊鏈的東西,其實都是使用套件

BouncyCastle  套件,但是現在 .NET 8 好像已經內建有支援,想說來測試一下,結果出現了

Unhandled exception. System.PlatformNotSupportedException: Operation is not supported on this platform.

at System.Security.Cryptography.SHA3_256.TryHashData(ReadOnlySpan`1 source, Span`1 destination, Int32& bytesWritten)

at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source, Span`1 destination)

at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source)

at System.Security.Cryptography.SHA3_256.HashData(Byte[] source)




[C#] .NET8 - Dictionary、FrozenDictionary、HashTable的性能對決

2024-01-24

最近在看 .NET 8 新功能,有一個東西有點興趣 就是 FrozenDictionary ,想說他跟傳統的 Dictionary 有啥不同

畢竟 .NET 8  是以輾壓級效能做為賣點 ,看了一下官方這段話的介紹

以效能為焦點的類型.NET 8 引進數種旨在改善應用程式效能的新類型。 新的 System.Collections.Frozen 命名空間包含集合類型和 FrozenDictionaryFrozenSet

這些類型不允許在集合建立之後對索引鍵和值進行任何變更。 該需求允許更快速的讀取作業(例如, TryGetValue() )。

這些類型特別適用于第一次使用時填入的集合,然後在長期服務期間持續保存

感覺使用上就是拿來可以放在記憶體中快速索引的好東西,直接用 BenchmarkDotNet 跑一下



[C#] Magick.NET 分享:PDF轉JPG遇到的問題及解決方案

2024-01-23

今天主要透過  Magick.NET 處理把 PDF 轉成 JPG 圖片,一頁轉成一個檔案,中間有遇到一些有的沒的問題

就記錄一下吧,給之後有這需求又有碰到的人



[C#] Magick.NET 分享:webp轉jpg、降低品質、等比例縮小

2024-01-22

最近在處理一些圖形的東西,但是因為就是很懶,所以網路上找了一下有沒有 .NET 可以方便撰寫的 library 

測試了幾個最後推薦這個  Magick.NET



[C#] 輕鬆驗證資料:探索.NET 8中對System.ComponentModel.DataAnnotations的增強支持

2024-01-19

最近在看 .Net8 新功能,發現 對於 System.ComponentModel.DataAnnotations 增加了許多的擴充

變得方便許多,今天就來簡單的測試一下


[.Net8]從AOT到dotnet publish:在Raspberry Pi 3上成功運行.NET 8 Web API的步驟

2024-01-18

最近因為要佈署一些 基於 .Net8 的Web API 到 Raspberry Pi 3  上面跑,因為 .Net 8 AOT 無法在上面執行

所以還是得安裝 dotnet 8 runtime ,因為我不死心我直接把程式碼放上去編譯,我原本是在 x64 電腦編譯後放過去

結果無法執行起來即使我 chmod+x 也沒用,但是放上去 透過 dotnet publish 後發現


[.Net][RPi] 將.NET 8搬上Raspberry Pi 3的操作指南

最近很訝異,因為我在 一台舊舊的 Raspberry Pi 3 上面執行起來一個 .net 8 的程式

雖然玩 Pi 也是有些年頭了,但是我沒有在上面面跑過 .Net 到是 Chromebook 我之前有在上面寫過 ASP.net 的小專案

重點是 因為我跑的機器是 Pi 3 ,我比較訝異,因為到了 Pi 4 性能上都有爆發成長都可以裝 Win11 了

這次我測是跑的專案是 這個 之前寫的 Console ,然後就放到 Pi3 上面跑跑看竟然成功了

所以分享一下步驟



[C#] 理解以太坊 HD 錢包生成:解密 BIP39 規範與單字驗證,無效助憶詞

2024-01-16

最近在搞事情,然後遇到一個之前我沒有發現的問題,以前在產生錢包的時候,我以為只要符合 BIP39 規範任選 12 or 24 單字就可以了

事實上,如果當你要把這隨便亂取的 12 的單字放入 MetaMask 或是其他 Web3 錢包的時候,就會出現


[.Net] 優雅的效能評估:BenchmarkDotNet讓測試變得輕鬆愜意

2024-01-11

今天介紹一個我腿了很久的東西,就是 BenchmarkDotNet ,有時候我們會必須要測試一個 function  或是某個新功能的效能

直接就是來個暴力跑個 Parallel.For 然後 在跑之前使用 Stopwatch 來測試,有時候看論壇都會出現一些在 console 中票票釀釀的表格

原來有一個套件可以解決,用起來也是非常的溫馨



[C#] 探索 ASP.NET Core Web API 中的 Native AOT功能 MapPost

2024-01-08

最近在看 .Net 8 的東西,看起來多了一些新東西,我再開專案的時候看到這個 ASP.NET Core Web API (Native AOT)

可以使用最小單位來製作 Web API ,因為我很喜歡在小裝置上面搞事情就想說來玩一下



[C#] 不用 Access Token如何獲取 Facebook UID

2023-12-31

最近接到比較奇怪的需求,必須要撈取臉書一些東西 ,今天這篇文章分享一下

如何抓到臉書的每一個的 facebook uid 但是不用用到 access token 


[C#] 不使用 access_token為前提取得臉書粉絲專頁的按讚數

2023-12-30

最近都接到比較奇怪的需求,對方要知道,粉絲團的按讚數,因為要 access_token

要取得該粉絲團的 access_token 就比較麻煩了,所以唯一能解決的方法就是爬蟲了



[C#] 比特幣冒險:掌握BRC-20標準及Witness資料的抽取技巧

2023-12-22

最近幣圈風風火火關於比特幣銘文(Ordinals),這時候要說到 BRC-20,我相信前幾年如果你有聽過 NFT 或是乙太幣,應該對這名詞覺得有點熟悉但是又陌生

BRC-20 是一個實驗性的比特幣同質化代幣標準,由推特用戶 @domodata 於 2023 年 3 月 8 日基於 Ordinal 協議創建它類似於以太坊的 ERC20 標準,

規定了比特幣上發行代幣的名稱、發行量、轉帳等功能BRC-20 代幣可以通過 Ordinal 協議在比特幣網路上鑄造和轉移

如果您對 BRC-20 代幣等虛擬貨幣感興趣可以看看下面這影片,說的是淺顯易懂


[C#] String 中 Environment.NewLine 關於 \r\n 的判斷

2023-11-29

最近遇到一個奇妙的問題紀錄一下,因為公司的專案慢慢地從 .Net Framework 轉成  .NET 6-8 

遇到一個很小很小的問題,就是在 string 中的 \r\n 的判斷在 .Net Framewok 和 .Net Core 3.1 以上版本解讀是不一樣的



[C#] 簡單測試 ThreadStatic ,一個可以瞬間了解的範例

2023-11-11

最近在玩一些東西,看到一個有趣的東西,已經出來很久了,但是最近才看到覺得很有趣

但是看了一下官方範例有點看不太懂,之後自己測試一下才發現原來是這樣設計使用的

就是一個 Attribute 叫做 [ThreadStatic]



[C#] 取代字串中可能是網址的部分取代成超連結

2023-11-01

今天要聊一個小東西,但是花了我一點時間 Regex 是真的不太熟,這需求很簡單,就是把一個字串,裡面可能是網址的部分,替換成超連結



[C#] Language Detector - 免費語言偵測方案分享,使用兩個套件混搭

2023-10-23

語言偵測,最近要用到,但是因為不是一個很重要的功能,但是花了我一些時間

而且我不覺得是非常完美的解決方案,但是研究都研究了而且堪用,就記錄一下吧


[C#] 簡單計算 RSI 相對強弱指數

2023-10-20

最近再研究 BTC 的一些指數,有一個東西叫做 RSI (相對強弱指數 是一種技術分析指標,用於即時價格波動的速度和幅度。) 

因為需要這指數判斷一些東西,後來上網查一下,似乎不是很困難,所以筆記一下

給之後有需要用到的人..


[Javascript] 製作 div 的反差色,解決上面文字顏色的問題

2023-10-17

最近在處理一些前端的東西,遇到一個問題,就是假設設計在一個 <div> 有 background-image 是可以讓客戶更換的

但是,在這 <div>  上面有文字,文字有顏色,如果可以設定一張純白,純嘿,或是花花綠綠的圖該怎麼辦 ?



[Google 試算表] 取得 Bitfinex 上面的 數字貨幣價格

2023-10-05

最近在看一些資料,順便回答一下朋友問的問題,他主要是透過 Google Sheet 來管理他的虛擬貨幣資產

但是他需要知道價格,我直覺地回他使用  GOOGLEFINANCE 這個 function ,但是他要抓的那個虛擬貨幣代碼是 GOOGLEFINANCE 

沒有提供的,這時候該怎麼辦,只好自己寫一個 函式..



[Javascript] 網路離線依然可以顯示資料 Service Worker 簡單實作

2023-08-19

今天測試一個東西,解開我很久的疑惑,為何有些網站在我沒有網路的情況下,依然可以顯示一些資訊

有的是顯示你現在正在離線,或是有的依然變成一個資訊孤島依然還是可以查資料,正常狀況下不是應該都會顯示



[C#] Console.WriteLine 出現?? ,亂碼顯示問題

2023-08-17

簡單記錄一個很白癡的事情,測試程式常常使用 Console.WriteLine 但是竟然

會出現 ?? ,後來我才發現,原來預設的不是 UTF8 就會導致這樣

我測試文字

当麻测试测试123简体中文とうま

輸出後: 


[Trick] 指定不同程式使用不同網路(WIFI , LAN )

2023-08-15

最近算是找到一個方法解決一個問題,之前沒有認真去找過,今天找一下測試一下才發現可以用,主要目的在於

我電腦有接線的網路,也有 WIFI,兩個 對外 IP 不一樣,因為一些操作我有的應用程式需要用到 A 網路,有的應用程式用到 B 網路

這就很麻煩了,因為通常他都會預設使用有線網路,我就在想我有沒有辦法找到 某個應用程式指定使用 WIFI 網路

網路上找到一個關鍵字  ForceBindIP



[Javascript] 關於一個 select 的 multiple 的處理

2023-07-06

最近在處理一項需求時,遇到了一個讓我感到驚訝的情況,但仔細思考後發現其實只是我自己的誤解。這也是一個比較少用到的情境。

在HTML規範中,select元素有一個multiple 的屬性,詳細可參考這裡。儘管多選通常可以使用input checkbox來實現,

但在前端處理上會稍嫌繁瑣。因此,有時我會建議客戶使用select的multiple="multiple"屬性,特別是在手機上,操作體驗相對更為舒適。



[Javascript] 使用 Keydown 事件實現輸入框值的同步支持負數小數點

2023-07-05


主要遇到,客戶希望再輸入一個 價格的時候,其他欄位的價格可以預先填寫好,如果他修改過價格後就不能再被更改

這需求感覺蠻常碰到的,但是客戶要求很直觀,等於我就是只能從 Keydown 事件下手,今天,我們將探討如何使用 JavaScript 中的 Keydown 事件來實現這樣的需求



[Javascript] 實做鍵盤方向鍵的左右鍵連續點擊

2023-07-04


最近我遇到業主一個需求,需要在網頁上實現按下鍵盤方向鍵左鍵和右鍵時執行相應的動作。在尋找相應的解決方案時,

發現 Javascript 並沒有提供直接的方法,於是我嘗試使用一種古老的方法,即利用時間差來達到按兩次快速點擊的效果。



[C#] 使用 C# 做一個假裝自己是 RDP Server

2023-06-30


看到一段有趣的  code ,就是有網路上的大大用 python 寫了一個模擬自己試 RDP Server

然後看了一下,程式碼不難,我就翻寫成 C# ,測了一下,蠻好玩的就分享一下..



[Web] 一些產生 Avatar 方便的網站,透過網址就可以產生的獨立 Avatar 圖片

2023-06-29

最近在測試一些前端的東西,我需要用戶的 avatar ,所以我的需求是

透過網址就直接能夠生出一張可愛或是勘看的圖片,所以網路上找一下,因為都是要自己手動生成

所以我把一些找到的整理一下



[Javascript] input 輸入處理:限制只允許輸入英文、數字和橫線 (-) 並自動轉換為大寫

最近我遇到了一個 JavaScript 的問題,雖然不是什麼大事,但對方需要在一個 input 欄位中,只允許輸入英文、數字和橫線 (-)。

此外,他希望輸入小寫英文字母時自動轉換為大寫。儘管這聽起來有些簡單,但每次都需要重新寫一次,因此我想將這個解決方案記錄下來。




這裡是我所使用的方法:在 onKeypress 事件中使用正則表達式(regex)進行輸入阻擋,

確保只有英文、數字和橫線 (-) 能夠進入。接著,在 onKeyUp 事件中,我將輸入的文字轉換為大寫,確保統一的輸入格式。



值得一提的是,我在網路上看到了一個使用 CSS 的方法,即使用 style="text-transform: uppercase"。

這樣可以讓輸入的字"看起來"是大寫,但在取值時仍然是小寫。雖然這是一個簡單的做法

但需要特別注意。如果在送出前將值轉換為大寫,也是一種方便的解決方案,避免使用 onKeyUp 的方法。



[Facebook] 關於出現 "應用程式網域必須符合 Facebook 網頁遊戲網址(https) 、行動網站網址、 Unity 二進位網址、網站網址或安全粉絲專頁頁籤網址的網域。" 的問題

2023-06-28


今天記錄一次遇到的狀況,交叉比對很久才找到

一個關於臉書 ( facebook ) 的開發上面遇到的問題

應用程式網域必須符合 Facebook 網頁遊戲網址(https) 、行動網站網址、 Unity 二進位網址、網站網址或安全粉絲專頁頁籤網址的網域。



[C#] ASP.net 出現 InvalidOperationException: Invalid non-ASCII or control character in header: 0x5132 的錯誤

2023-06-27


在 Web 開發的演進中,我們經歷了從 WebForm 時代到現在的 .Net 6 時代,而在這過程中,一些原本看似簡單的操作,卻可能因為技術的進步而產生一些意想不到的變化。

以前在 WebForm 時代,我們經常使用 ResponseRedirect 這樣的方式進行頁面跳轉,而且往往並不會遇到太多問題,

例如直接使用 ResponseRedirect("/sample.aspx?meg=儲存成功") 就能夠順利地將用戶導向指定的頁面,同時傳遞一些必要的參數。


然而,最近在使用 .Net 6 開發時,卻意外地遇到了一個 InvalidOperationException: Invalid non-ASCII or control character in header: 0x5132 的錯誤。



[C#][.Net] 關於 ASP.net 取得 POST 資料,動態增加 POST 值

2023-06-26

今天來寫一個很基本的東西,其實應該很多人都會了

只是最近要處理一些動態資料,所以測試一下關於 .Net Core Post 資料的問題



[C#] 判斷五行相生相剋

2023-06-24

今天分享一個不是很重要的東西,只是剛好用到,就筆記一下

主要是因為最近在看五行的相生相剋,大概規則是

相生:木生火、火生土、土生金、金生水、水生木。

相剋:木剋土、土剋水、水剋火、火剋金、金刻木。


[HTML] 一個可以提升 mailto 體驗的小技巧 (僅電腦使用)

2023-06-17

最近看到一個很有趣的東西,可以取代 mailto 的使用,如果下 mailto 的指令

現在人其實已經很少安裝信件軟體了,大部分都是用 Web Mail  ,我這邊大部分都是使用 Gmail

這時候關於點到 mailto 都會出現 



關於錯誤 Compiler Error Message: CS0433: The type 'ASP.global_asax' exists in both 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET

2023-06-16

最近在移植一些專案遇到這個問題

Server Error in '/' Application.

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0433: The type 'ASP.global_asax' exists in both 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\64203716\99481ad\App_global.asax.lldgsdpc.dll' and 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\64203716\99481ad\assembly\dl3\1fdcbdce\1ebebc9e_08a0d901\App_global.asax.DLL'



[C#] 呼叫 PowerShell 取得 Windows Event 4624 的 JSON 資料

2023-06-01

最近,因為一些事情我需要 去檢測關於 Windows Event 4624 的事件 ,剛好 黑暗執行緒的一篇文章,我就想說

可以透過這方法來做到,不過黑大是使用 PowerShell ,這東西對我來說是一個完全完全陌生的領域,不過我就想黑大都分享了

那我可以使用黑大的分享,然後我透過程式端去抓就可以達到我的需求,果然是一個及時雨




[C#] Telegram.Bot v19 - 使用 SendPoll 發動投票,處理投票問題

2023-05-12

今天繼續 Telegram.Bot v19 ,應該是最後一篇了,畢竟其他功能也不是常用到

這範例主要是,對於在群組中舉辦一場投票,然後可以收集票數,也可以知道誰投了那些答案

這主要是用在群組中會比較有用,當然你也可以一個一個去發不過只是搞死你自己而已..



[C#] Telegram.Bot v19 - ReplyKeyboardMarkup, InlineKeyboardMarkup 的範例應用

2023-05-10

上一篇文章  Telegram.Bot v19  回應訊息,回覆訊息的處理,我們寫最簡單的回應訊息,還有回覆訊息的方法

這一篇主要是使用另一個比較常用到的功能是關於實作  ReplyMarkup 的部份



[C#] Telegram.Bot v19 - 回應訊息,回覆訊息的處理

2023-05-09

最近一陣子被 Telegram 搞到有點煩,因為這之前使用的時候使用的版本是 Telegram.Bot 15 的版本

現在就是常常遇到,突然無法得知客戶傳過來的訊息,而且很多 InlineKeyboard 結果都不如預期

之後我就去看了一下,有更新竟然一次跳到 18.x 而且改了不是普通的多,今天就做個紀錄..


當麻許的超技八 2014 | Donma Hsu Design.