redis 的key 過期通知設定

Redis - Wikipedia

redis有expire機制,且同時有redis keyspace notification。不過預設默認的通知是關閉的~需要透過redis.conf或config set啟用。

config set notify-keyspace-events KEA

接著在c# 使用StackExchange.Redis

然後訂閱__keyevent@0__:expired 這個頻道就可以了

var redisConnection = ConnectionMultiplexer.Connect(“localhost”);
var db = redisConnection.GetDatabase();

var subscriber = redisConnection.GetSubscriber();
// 訂閱過期事件通知頻道
subscriber.Subscribe(“__keyevent@0__:expired”, (channel, key1) =>
{
// 在這裡進行過期事件的處理邏輯
// key 是過期的 Redis 鍵名
Console.WriteLine($”Key {key1} has expired.”);
});

Console.WriteLine(“Press any key to exit.”);
Console.ReadKey();

// 斷開與 Redis 的連線
redisConnection.Close();

chatGPT與line官方帳號結合 = line ai 小助理

OpenAI設計的ChatGPT問世後,很快的ai的使用人數破億。且chatgpt讓ai整個流行了起來~ 想說台灣最流行的通訊工具line,有沒有機會跟chatgpt串到一起,於是很快的用php以及.net core都串了一次。簡單明瞭~很易懂

分享關鍵的php,有問題歡迎line: superlevin 林壽山


$api_key = 'xxxxxxxxxx';
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.openai.com/v1/completions',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key
],
CURLOPT_POSTFIELDS => json_encode([
'prompt' => $ask_question,
'model' => 'text-davinci-003',
'max_tokens' => 1000,
'temperature' => 0.3
])
]);
$response = curl_exec($curl);

$json = json_decode($response, true);

 

 

C#資料結構與演算法

使用對的演算法與資料結構,在程式效能上有很大的幫助。常用的資料結構有array、stack、 queue、 linked list、 tree、 graph、 heap、 hash。在c#上常見的是使用array 、arraylist、 list、 dictonary 以及queue可以滿足絕大部份的場景。

以下介紹github上二個高階資料結構與演算法的項目。

一、C Sharp Algorithms

一開始是學習資料結構,在不斷更新以及維護後,可以用在正式環境。

https://github.com/aalhour/C-Sharp-Algorithms

二、Advanced Algorithms

https://github.com/justcoding121/advanced-algorithms

Nginx 視覺化管理工具

https://github.com/onlyGuo/nginx-gui

https://nginx.org/

首先先安裝 nginx,下載nginx後解壓縮,修改conf目錄下的 nginx.conf把listen改掉需要的port

然後 cmd start nginx.exe 就可以

停止的話 nginx.exe -s stop

重新載入設定則為 nginex.exe -s reload

nginx-gui解壓後

修改 conf/conf.properties

指定完路徑後,可以用startup.bat打開  shutdown.bat 停止

預設的port是 8889 ,帳密都是admin

 

 

.Net 7 開發增進效能的小撇步

預計在2022年11月發布的.net7目前進入RC2的版本。來談談.net7 做了那些效能上的改進~

LINQ部份

1針對max/min最佳化

2針對Average/sum

3新增order/orderDescending 取代orderby/orderbydescending

4 System.IO的改善 WriteAllText改ReadAllText

5 針對Jsonserializer NoCachedOptions提昇

6Guid的 GuidEquals提昇

7ParseBigInt提昇

8ParseBool

9 Stopwatch中的getprocessbyname與getcurrentprocessname

10 在stopwatch加上getelapsedtime取得時間戳

.net Multi-platform APP UI(MAUI)教學準備中

2022年11月微軟準備在.net 新版本中發表 Multi-platform APP UI(MAUI)新的跨平台開發架構,透過c#以及XAML就可以開發出同時在windows、android以及ios與mac os上的程式(對了!目前還沒有支援到linux)!

簡單的說它算是Xamarin.Forms後續的版本,近期開始著手撰寫以及錄製MAUI的教學以及學習文件。

.net MAUI 新增程式
預設.net MAUI 範例教學程式

Redis for Windows 5.0.14.1

最近因為開發上的需求使用Redis,不過Redis並不支援Windows。官網上的建議做法也是建議打開WSL(Windows Subsystem for Linux),裝上ubuntu後再安裝(詳見: Install Redis on Windows )。windows上面網路上建議安裝的是Microsoft 已封存的3.0版本 ( https://github.com/microsoftarchive/redis ) 或是建議使用相容redis 6的 memurai (https://www.memurai.com/ ) 。但考量.net後續可以在Linux上跑的原因~還是以較悠久的redis為主,於是在網路上找到一個比較貼近的版本,是由網路上的大神Tomasz Poradowski 在github上分享的版本 https://github.com/tporadowski/redis/releases 。2022年2月發佈最新的版本是5.0.14.1。

Dveloper GUI for Redis
Another Redis Desktop Manager
Redis Assistant

延伸資料:

redis的持久化

Redis数据库学习教程

redis的持久化方式RDB和AOF的区别

2021 iThome 鐵人賽Redis還在學

對 Azure DevOps 導入有興趣值得一聽的~Azure DevOps導入與數位轉型祕辛

這是 ‧NET Walker 大內行者 董大偉老師舉辦的一場很棒的線上課程,除了二位老師外還有 Will 保哥的技術交流中心 的保哥。在FB還可以看到 安德魯的部落格 Andrew Wu 的留言,大約2個小時多的直播中。從一開始為何導入Azure DevOps 是為了Sprint週期變短以及Dev+Ops等指標。討論交付時間延長就等於安全交付?實際開發狀況是專案時間就夠緊迫了,我要有辦法去做TDD?CodeReview?重構?技術債改善這些事嗎? 接著探討頻繁交付的適當性等議題。 大家可以聽一聽實務界技術大老討論,不過說真的沒有對錯,能夠讓自己公司團隊做出質量好產出的就是適合自己的方法。