2022-05-24

[PowerShell]解決PowerShell Invoke-RestMethod呼叫API亂碼問題

如題,但今天說明放後面,程式碼放前面:

function JsonEncoding{
    Param (
    [string]$json
    )
    # $utf8 = [System.Text.Encoding]::GetEncoding(65001)
    $iso88591 = [System.Text.Encoding]::GetEncoding(28591)
    $wrong_bytes = $iso88591.GetBytes($json)
    $right_string = [System.Text.Encoding]::UTF8.GetString($wrong_bytes)
    $right_string
}

老實說處理PowerShell亂碼的文章真多,並且Bruce也早早寫有一勞永逸的作法,讓cmd、PowerShell等等都能自動套用UTF-8編碼:https://blog.kkbruce.net/2021/10/solved-console-garbled-code-for-win10-win11.html?m=1&fbclid=IwAR21Umo0_S8I35y1i2xSsOAIUzDJnRfeqf_G2vEjYdd4ks1aZRnnj3kYoUI

黑大也有直接匯出txt讓文字編輯器幫我們編碼的作法:https://blog.darkthread.net/blog/ps-encoding

會寫這篇文章是因為也是工作上情勢所逼,公司電腦或Production環境常常有限網域、限權限、、、限限限 什麼都限的時候,不可能在每一台VM都裝Postman或隨意依賴系統管理員做事情,好在跳版機和公司筆電都是Win環境,那就可以好好利用PowerShell裡面的library啦!

2022-05-06

[SendGrid]寄出"待處理"的email

最近寫了一支排程監控程式:每分鐘執行一次,會先透過WinSCP撈取FTP上的回覆檔,檢查是否有失敗訊息,並整理成清單透過SendGrid,寄到自己信箱。

開發過程蠻順利的(因為網路上都有很多範例程式),只花了1天的下班後空檔就搞定啦,所以剩下時間都在玩耍優化🤣

從現代人(我)的user story來看mail的頻率和習慣沒有以前那樣頻繁和依賴,想讓Outlook提醒我要處理,而目前隨手可得的工具就是Task;而要把信件當作待辦,需要的就是旗幟(flag)裡的"待處理"分類。(後記:另外發現排程、log、always-on都是蠻有趣的課題 另外找時間研究)

搜尋關鍵字「outlook flag」、「flag follow up」都查不太到,但確認了一件事,這個flag其實就是header的一種。於是便想說自己try try看一般mail和有flag的mail差在哪裡。參照https://www.howtogeek.com/442317/how-to-read-message-headers-in-outlook可以找到我們收到的mail的屬性內容,我試著寄給自己兩封信,一封有flag,一封沒有。


2021-11-27

[C#]SHA1Managed小發現

最近為了驗證一支公司的小程式,研究了一番SHA1加密,以及System.Security.Cryptography提供的SHA1Managed()和底下的方法。

在還不了解原理前程式是這樣寫的:

byte[] buff = hexToByte(hex);

SHA1Managed sha1 = new SHA1Managed();
byte[] value = sha1.ComputeHash(buff);

string Code = "";
foreach (var hash in value)
{
    Code += hash.ToString("X2");
}
Console.WriteLine(Code);

抱歉我跳過一個步驟,就是程式最一開始還有一個function是將hex code轉成byte,所以我們才能使用ComputeHash()。當然,hex也是陣列,是由0~F的組合。

而value你會得到一個長度為20的byte陣列。

2021-03-11

[心情小語]喝珍奶談程式設計

你們比較過各家手搖杯嗎?有最喜歡的哪一家飲料嗎?

同樣是珍珠奶茶,有人喜歡清*,個人覺得他們家的茶感比較苦澀,但珍珠有甜味,兩者在味覺上互相交織;有人喜歡據說是從台南來的麻*,茶味比較淡,珍珠嚼勁十足,幾乎沒有甜,雖然單獨吃似乎是有種蜂蜜還是果香的風味...

怎麼搭配似乎都有其道理,而且畢竟是人調出來,沒有所謂完美的「珍珠奶茶」,只有剛好符合你今天喜好的飲品。

你可以說這就是「品牌」,或是多元。但最終目的和架構是為了人所設計:有「珍珠」、有「奶茶」,所以你叫得出來他是珍珠奶茶,店員也是照著原料才能再現它;至於今天茶要用多貴的茶、多濃,糖要加蜂蜜或紅糖或甜味劑,珍珠要味道/不要味道、好嚼/不好嚼、黑色/白色,這些種種,都是要問賣(買)的人。

如果先不論方法論、開發風格的品牌效應,雖然那也是企業轉型不可或缺的重要動力,對個人可能只是工作方式不一樣,但對不同角色間的職責信任度、合作關係卻有微妙的影響。可以這麼說呢,一間公司、一個專案、一個產品、一個開發流程就是一間手搖杯飲料店,就是一杯珍珠奶茶😃

那麼你呢?每一家珍奶都嚐過了嗎?喜歡哪家呢?

或者該問,它適合此時此刻的你嗎?