我們對於 Message Queue 的既定印象就是先進先出,先發送的訊息就先傳遞出去,這兩天收到一個需求是希望通知能夠在指定的時間傳遞出去,以往這類型的需求我們會跳過 Message Queue,改用定期去看資料庫或是某個資料夾,如果有資料或檔案內容的指定時間符合當下的時間,我們就發送通知,但我現在想讓 Message Queue 處理延後傳遞的訊息。
[廚餘回收] 預設的 DNS 變成 hntp1.hinet.net(2001:b000:168::1)的困擾
不知道曾幾何時,我慣用的 DNS 伺服器變成中華電信 hntp1.hinet.net,其 IP 位址變成 2001:b000:168::1?
這個對於一般的使用者而言,其實沒有任何影響,但是對於我而言,我的使用環境有自建的 DNS 伺服器,以及自己架設的一些開發機器,這些主要都還是運作在 IPv4 上,由於 IPv6 的 DNS 優先於 IPv4,我自建的 DNS 伺服器就被排在後面,然後我就找不到自己架設的機器了。
[料理佳餚] System.IO.Pipelines 解決了以往接收 NetworkStream 算位置的困擾
微軟官方部落格在去年發佈了一篇 System.IO.Pipelines: High performance IO in .NET,這個東西高不高效我是比較不出來,但是它著實解決了以往在接收 NetworkStream 時算位置的困擾,用它寫出來的程式碼簡潔清晰許多。
[小菜一碟] 還在用 ROW_NUMBER() 處理分頁嗎?來試試 OFFSET / FETCH 吧。
- 2803
- 0
- SQL Server
- 2019-05-16
ROW_NUMBER() 是在 2008 的時候出現的,自從它出現之後,我做分頁查詢就都是用它來做,從 SQL Server 2012 開始出現了 OFFSET / FETCH,它類似於 C# 中的 Skip() / Take() 這種跳過幾筆取幾筆的方式,知道之後就都改用 OFFSET / FETCH 來做分頁查詢。
[小菜一碟] SQL Server 使用 FIRST_VALUE 及 LAST_VALUE 來取得第一筆資料列及最後一筆資料列的資料
- 5110
- 0
- SQL Server
- 2019-05-13
之前的報表,老闆覺得還不夠,他還想再看到一些數據,於是就開需求了「Johnny 啊,我想再看到每個分店每月銷售額跟他們最好及最差的那一個月相比,看看差了多少百分比。」,當然沒問題,付錢就行。
[小菜一碟] SQL Server 利用 LAG 及 LEAD 函數取得上一筆及下一筆資料列,來與當前資料列進行運算。
- 19880
- 0
- SQL Server
- 2019-05-12
上一篇文章提到依日期彙總結果,這時候老闆又開需求了「Johnny 啊,能不能幫我多加一個欄位,讓我看到每個分店當月銷售額與上個月銷售額相比的成長百分比?」,這個需求也很常出現在我的程式設計生涯當中,我們來看看在 SQL Server 中怎麼來實現。
[小菜一碟] SQL Server 帶入任意的起迄日期,產生起迄日期之間的每個日期。
- 4660
- 0
- SQL Server
- 2019-05-05
假定老闆提了一個需求,他想要看每個分店每天的銷售額,如果當天沒有銷售額的分店則銷售額顯示為 0,這個需求我們從訂單資料庫裡面彙總出來就可以呈現了,但是它有一個點在於萬一某個分店在某天沒有訂單,那麼該分店在訂單資料庫是沒有資料的,則該分店的該天銷售額必須標為 0,類似這樣的需求經常在我的程式設計生涯中出現。
[小菜一碟] C# 中的奇門遁甲 - 隱含轉換(implicit)
在 C# 中常常因為需要配合參數而動態地產生相對應的 SQL 查詢條件字串,StringBuilder 應該是公認能兼顧字串串接效能的解法,不過加號(+)還真是好用啊!相較於使用 StringBuilder,用加號來串接字串簡單又直接,因此我利用隱含轉換(implicit)來搞一個用加號串接字串,但背後其實是 StringBuilder 的解法。
[小菜一碟] C# 中一個古老的好物 - TypeConverter
TypeConverter 是從 .NET Framework 1.1 開始就有的東西,我是在 ASP.NET MVC 的 ActionFilter 中要取得某個 RouteData 時用到這個東西,它能夠幫助我們取得某個型別的轉換器,用來將另一個型別的實例轉換成該型別,這些型別或許我們在開發時間是未知的,但是在執行時期是明確的。