搜尋此網誌

2024年8月30日 星期五

使用 Javascript 來 post form

緣起:


    前幾天在處理專案 (WebForm),有個下戴 excel 的功能需要調整,它是用 window.location 來指定 ashx,用 get 帶參數,然後 ashx 再依參數來回傳 excel 檔。

    這個功能碰上的問題是,get 帶的參數有時會太長,超過限制


    由於功能很複雜,我想要動最少量的程式碼來修正這個錯誤,最簡單能想到的就是 get 改成用 post。

2024年7月23日 星期二

dotnet 建立 windows 服務,監控資料夾的變動

緣起:


    今天看到我們研發寫的一支監控檔案目錄下的檔案有沒有被更動的程式,我學到了 BackgroundService 跟 FileSystemWatcher 的使用,還有用 sc.exe 來建立服務,覺得很有趣,所以想寫個文章來學習。

    我是在 windows 下操作專案的,改天有空的話會再去 linux 上面試試。

 

2024年7月22日 星期一

取得 Steam Deck 錄製的遊戲影片

緣起:


    Steam 的 Beta 頻道,不久前有推出遊戲錄影的功能,讓你可以不需依賴第三方的軟體,直接就能在 Steam 遊戲裡錄影,這功能對 Steam Deck 來說超實用的,之前在玩 switch 時,覺得它的隨時錄製 30 秒前的影音功能超方便的,讓你不會錯任何想分享的突發影像。

    我今天玩遊戲有錄了一個影片,但影片的 size 超過了能 share 的大小,所以想來學著怎麼把影片檔給搬出來,順便寫文章記錄。



2024年7月21日 星期日

Raspberry pi 安裝 docker,執行 dotnet web 程式

緣起:


    假日學 dotnet core 學到無聊,轉去學 docker,想試試看能不能在 pi 上面跑個 dotnet core的 container,跑起來感覺會很酷。

2024年7月18日 星期四

dotnet cli 建立 classlib 與 mstest 專案

緣起:


    不久前在看敏捷開發的書,他裡面有個範例是在講保齡球的計分,除了主程式之外,還有用到 unit test。我不想單純讀程式碼,想要跟著動手操作,這樣印像才會比較深。

    趁這個機會學習怎麼在 dotnet 建立 library 與 test 的專案,還有 unit test 的基本程式。

2024年7月9日 星期二

dotnet CLI 加入 CsvHelper

緣起:


    這陣子都在學習怎麼在 Ubuntu 上操作 dotnet 的 CLI,今天在工作時有碰到需求要處理 csv 檔,後面是找到教學說,使用 CsvHelper 這個套件來處理。回家在看 microsoft 的 dotnet 文件,剛好學到 Nuget 套件的處理,所以想來動手操作個,順便紀錄 CsVHelper 的使用。

2024年7月8日 星期一

Windows CMD IIS Log 的搬運與清除

緣起:


    不久前發生一件事,正式機站台的 C 槽快沒容量,大部份的容量都是被 IIS 的 Log 給佔走,因為合約有說要保留至少半年的 Log。有些流量大的站台,一天就會產生 200 多 MB 的 log txt 檔,每個站台的 log 檔加總起來,可以到 40 GB,非常的可怕。

    PM 有指定我幫忙處理這件事,資深的工程師也有教我怎麼下指令來處理這件事。紀錄下來,到時再碰上就可以直接 copy 來用。

2024年7月4日 星期四

Steam Deck 啟用 SSH 並使用 rsync 傳輸資料

緣起:


    最近想要在我的 Steam Deck 與筆電間傳送檔案,想說,該來練習那些 Linux 上的區網傳輸檔案工具了,不然在那邊用 USB 傳檔案,感覺沒效率又很智障。

2024年7月1日 星期一

Linux Discord 分享遊戲

緣起:


    我目前 Linux 有用比較順了,平常沒特别需求的話,都是用 Linux 來寫文章、完遊戲。前陣子想直播遊戲給朋友看時,發現 Linux 的 Discord 在分享遊戲畫面時,是不會有遊戲的聲音的,去網路上查了後發現,好像是 Discord 沒有支援到這塊。挖,這是怎麼 ? 我們這些使用 Linux 系統的人就沒人權嗎 ?

    後來去網上查了查,發現有人提供解法,雖然是針對 Steam Deck 的,但我在我的 Pop OS 上面試也是可行的。用它的這個方法就不用處理 Linux 上混音的東西,而且它寫的那個 JS Script 跟 Shell Script 也蠻有趣的,之後有時間的話會想來研究那些 Script 做了什麼。

    這篇文章要來紀錄我操作的流程,我是看這篇 reddit 文章學的。

Steam Deck 更換 SSD

緣起:


    前陣子覺得自己 Steam Deck 512G 的容量感覺之後會不太夠用,所以就有了想要加大 SSD 的念頭。我訂的 1TB SSD,昨天有送到我指定的 711 了,我中午回到高雄租屋後,就去領,然後花了一個下午的時間在處理更換的事。

    這篇想簡單記錄一下更換的經過,還有學到的工具。

2024年5月17日 星期五

SQL ROW_NUMBER() 與資料排序設定

緣起:


    前陣子有站台的相關檔案排序出現了問題,我原本想說,這東西會不好解決,但後來同事有教我,可以用 ROW_NUMBER() 來重新設定排序。

    自己回去弄懂了後,覺得這東西真好用,所以想寫一篇文章來記錄。

2024年5月10日 星期五

git rebase 將多筆 commit 合併

緣起:


    之前有在 "為你自己學 git" 上面讀到 rebase 的指令, 大概懂它的意思,不過就沒自己試過。最近有收到同事的抱怨,他在 merge 時發現有 conflict,在追查的時候碰上問題,因為我的 commit 很細碎,同個檔案,改個一行就 commit 一次,太多 commit 讓他追查時很不方便。

    想來練習用 rebase 把多個 commit 壓成一筆。

2024年5月7日 星期二

aspnet_regiis.exe 與 webconfig 加密

緣起:


    今天無聊在隨意亂看我們公司建立站台的程式碼時,發現一個有趣的東西,那部份的程式碼有用 #region Config加密 包起來,然後還有用 C# 的 Process 類別來執行一個叫 aspnet_regiis.exe 的程式碼,所以就好奇去查,發現,原來我們的 webconfig 就是用這個東西來加密的。

    想自己動手操作一次並記錄。參考文章

2024年5月5日 星期日

Ubuntu 新增 ASP.NET Core 專案並在本機測試運行

緣起:


    在 Ubuntu 上安裝 .NET Core SDK,並成功建立 Console 專案後,我下一步想試的是,建立 Web 專案

    官方教學,我先 cd 到放我 C# 專案的資料㚒,然後下指令來建立專案

dotnet new webapp -n AspNetCoreDemo -o firstwebapp 


    會産生這些


Ubuntu 安裝 .NET Core 並新增 Console 專案

緣起:


    .Net Core 是支援跨平台的,所以我想要學習怎麼在 linux 上使用它,之後如果能弄個 asp  的 project 在 raspberry pi 上跑,那應該㑹很酷,所以我想從最基本的安裝 SDK 與創一個 Console 專案開始。

2024年5月4日 星期六

啟用 IIS,在預設站台部屬 WebForm 應用程式

緣起:


    工作做到現在,還是不太清楚一個 IIS 的站台是怎麼架起來的,專案開始時,那些環境都是由網管建置的,我們工程師大部份時候只要更新程式碼而己,就算有 IIS 相關的關題需要調整,在正式環境上也都是交給比較資深的工程師來弄,然後我在一旁看。

    現在覺得,有必要自己在電腦上弄 IIS 並部屬應用程式,加深自己對於建立與維護站台的理解,而且,我不久前學到的那些有關 config 還有查看 IIS Log 的知識,也需要有個環境能操作,才方便我寫文章記錄。

    雖然網路上有很多這類的文章了,但我覺得寫個文章來紀錄自己的操作歷程能加深印象。

2024年5月2日 星期四

C# Linq 的 join 與 Group by

原起:


    不久前,我們 3A 站台有出現資料重複顯示的問題,去查才發現是發生在 LINQ 的 join 上,這邊直接開 Console 範例程式講解,用 class 來代表資料表的欄位架構,有兩個 class,Performance 跟 Review

internal class Program
{
    class Performance
    {
        public int SN { get; set; }
        public string Name { get; set; }

        public Performance(int sN, string name)
        {
            SN = sN;
            Name = name;
        }

        public override string ToString()
        {
            return $"SN:{SN}, Name:{Name}";
        }
    }

    class Review
    {
        public int PerformanceSN { get; set; }
        public string Name { get; set; }

        public bool IsPass { get; set; }

        public Review(int performanceSN, string name, bool isPass)
        {
            PerformanceSN = performanceSN;
            Name = name;
            IsPass = isPass;
        }

        public override string ToString()
        {
            return $"PerformanceSN:{PerformanceSN}, Name:{Name}, IsPass:{IsPass}";
        }
    }
}

2024年5月1日 星期三

雙開機,Windows 筆電安裝 Ubuntu

緣起:


    上個禮拜六在滑 reddit 時,看到這個貼文,真的是太可怕了,windows 廣告越來越多,如果再不趕快習慣其它 os 的話,會被它綁死。雖然我一直都有在學 linux,但日常使用上,我的筆電還是都是跑 windows 的系統,趁著這次看到警訊的機會,我想幫自己的筆電安裝 linux 系統,逐步擺脫對 windows 的依賴。

    我那個禮拜六的下午都一直在 try ubuntu,把它安裝到我那台 msi 筆電上,弄好雙開機後,就在 ubuntu 上面安裝 steam,然後測試遊戲,測試一輪後,發現只有魔物世界能玩,不知為啥,後續還要找原因。

    我工作上還是需要用 windows 的遠端來連公司的電腦,所以弄雙系統蠻適合的。在我 msi 的筆電弄雙系統成功後,我就想讓我那台 asus 的筆電也弄成雙系統,畢竟平常還是比較常用它。禮拜一下班後有帶著我 asus 筆電跑去電腦維修店,請老闆幫我筆電多加裝一個 512 G 的 SSD,不然我 asus 筆電本身 512 G 的容量不夠再給 ubuntu 用。

    這篇簡單記錄一下在我那台 asus 筆電安裝 ubuntu 的紀錄。

    PS : 本篇是超隨意的那種紀錄,非常不適合想看詳細安裝教學的人。

2024年4月16日 星期二

C# LeetCode 23. Merge k Sorted Lists (二)

緣起:


    我上篇文章寫完後,有拿給志璿老大看,他看完後,就問了我問題


    所以我就開始思考,要怎麼讓程式快點


    我這時才意識到,原來這題就是做到一半的 Merge Sort,所以就打算用 Merge Sort 來重寫程式

C# LeetCode 23. Merge k Sorted Lists (一)

緣起:


    前陣子有在看 jserv 的 "你所不知道的 C 語言: linked list 和非連續記憶體",看到他拿 LeetCode 的題目來當 pointer to pointer 的實作範例,我看著看著,就想說要來寫看看題目。

    merge 兩個 list 比較簡單,所以就跳過。由於工作上是使用 C# 來開發,所以我解題也就用 C# 來寫了。

    要解的題目在這邊

2024年4月1日 星期一

ASP GridView 動態加入、刪除 Row,且維持使用者的輸入

緣起:


    3/26 那時不少的時間在弄文章標題說的事情,雖然在功能做到 70% 時才發現不需要這樣搞 (花了 7 小時),但是這個過程讓我又對 GridView 有更多的了解,所以覺得很有必要寫下來。

    話說,公司那時在做稽查,我負責的專案有被抽查,還好都沒事,聽說如果被記警告的話,那些獎金好像都會沒了。

2024年3月19日 星期二

ASP 選擇性啟用 Validator

緣起:


    我有負責一個案子的會員登入頁,不久前為了過無障礙,有幫登入頁的每個 TextBox 都加了一個 ASP 的 RequiredFieldValidator,我用一個簡化的 login 頁面模擬情境


2024年3月13日 星期三

C# DLL 專案與 DLL 內的檔案讀取

緣起:


    我們公司的程式有個專案,它是一個 DLL 專案,用來管理一些前後台會用到的 js、css、image 資源,只要 build 完,它就變成一個 DLL 檔,資源都包含在裡面。如果那個專案裡的檔案有被新增或修改,到時要更新的話就只要搬 DLL 檔去覆蓋就好,非常的方便。

    把東西都包進 DLL 裡,然後再寫個 class 當個介面來存取 DLL 檔的資源,感覺是個很實用的做法,所以想學起來。

    這篇想要寫個測試的小程式來達到跟我們專案一樣的功能,從 DLL 裡把檔案給取出。

2024年3月11日 星期一

C# NPOI 套件與 ASP WebForm 下載 xls 檔

緣起:


    最近有完成一個緊急任務,修改購物車的訂單匯出功能,那個功能的初版是我們主任寫的,它會把 sq的訂單資料寫到 excel 檔案裡,讓用戶可以下載。

    我注意到程式裡有用到一個叫 NPOI 的套件,程式都是用它來處理 Excel 檔。學起來感覺會蠻有用的,所以就特別為它寫了這篇文章來記錄。

    我會先用 Console 專案來測試 NPOI 的基本功能,然後再寫一個 WebForm 的專案,讓使用者點擊頁面上的按鈕後可以下載 xls 檔。

2024年3月8日 星期五

Windows CMD forfiles

緣起:


    公司最近有資安事件,需要我們去砍掉站台下的某些檔案,有要我們下這個指令

    forfiles /p {路徑} /s /m {名稱} /c "cmd /c del @file"


    頭一次看到這個指令,看起來蠻實用的,所以想在這邊紀錄一下它的用法。

2024年3月6日 星期三

C# FileStream 與 ASP HttpPostedFile

緣起:


    這幾天在看我們程式的信箱功能程式碼,注意到它有上傳附件的功能,上傳完的附件會傳到後台,還會專門開個資料夾放那些附件。蠻特別的,它不是傳到 ws 主機,然後再把檔案路徑記到資料表。

    我注意到在上傳檔案的部份,它有用到 Request.Files 來取得使用者上傳的檔案,然後讀取檔案、把檔案給寫到 Server 端的資料夾的部份則是用到 C# 的 Stream。覺得這些功能蠻實用的,而且自己好像也還沒實際寫過從前台上傳檔案到 Server 的程式,所以就試著寫了一次,順便紀錄。

2024年3月4日 星期一

git remote prune origin

緣起:


    我們公司在開發程式是用 Visual Studio C#,版控是用 Azure DevOps。在多人的專案上,remotes/origin 那邊的分支有時會比較多,在擷取 remotes/origin 的 master 分支時,它都會一並把其它人新增的分支給抓下來,但當那個分支在 server 上被砍掉時,我們自己主機上的 remotes/origin 卻不會自動幫我們砍,會陰魂不散的繼續待在那邊,時間久了就會累積不少,手動一個一個砍也蠻麻煩的,所以不久前就有去查 remotes/origin 那邊的分支要怎麼自動砍。

    參考這篇文章,很簡單,只要下個 git remote prune origin 即可,如果不放心的話,還可以加個  --dry-run 的參數試跑,看看有哪些分支會被砍掉。


    在這邊做個簡單的紀錄。