如何防止wappalyzer探測技術

我是在EKS上裝Ingress NGINX Controller 如何防止wappalyzer探測技術 我是在EKS上裝Ingress NGINX Controller 修改 ConfigMap(在 ingress-nginx 的 ConfigMap 全域設定) #執行以下指令來編輯 ConfigMap: kubectl edit configmap ingress-nginx-controller -n ingress-nginx 然後加上(例如): data: server-snippet: | #清除常見的技術標頭 more_clear_headers Server; more_clear_headers "X-Powered-By"; more_clear_headers "X-Generator"; more_set_headers "Server: myserver"; 或是: data: server-snippet: | #阻擋特定 User-Agent(例如自動化探測工具) if ($http_user_agent ~* "(wappalyzer|whatruns|builtwith|nmap|curl)") { return 403; } #原本 curl -I https://www.mywebsite.com 會顯示 HTTP/2 200 date: Mon, 05 May 2025 06:37:37 GMT content-type: text/html content-length: 441 last-modified: Thu, 24 Apr 2024 05:08:34 GMT etag: "6904c382-1b9" accept-ranges: bytes strict-transport-security: max-age=1234567; includeSubDomains 儲存後,重新啟動 ingress-nginx controller: ...

May 5, 2025 · 1 min · Peter

Strapi 5

客製化UI & Components Strapi 5 客製化UI & Components 發現: https://design-system.strapi.io/?path=/docs/getting-started-welcome–docs 在@strapi/design-system, 目前無法更改底層 https://docs.strapi.io/dev-docs/customization “Some parts of the admin panel can be customized.” 覆蓋樣式:使用自定義 CSS 或樣式覆蓋,而非直接改動源碼。(目前朝此方向研究)

January 15, 2025 · 1 min · Peter

關於顏色: Xcode中使用顏色樣本

要叫出如下顏色樣本(swatch) 關於顏色: Xcode中使用顏色樣本 要叫出如下顏色樣本(swatch) var color = #colorLiteral(red: 0.3, blue: 0.2, green: 0.1, alpha: 1.0)打完如以上程式後按下enter 等於的後面就會自動轉成色塊 參考: https://forums.developer.apple.com/forums/thread/690619

April 10, 2024 · 1 min · Peter

在MAC上消除 ^M 字符

windows 傳檔案/程式 給Mac後, 在行尾的地方都會出現^M字符 導致git status都會出現被modify的狀態 在MAC上消除 ^M 字符 windows 傳檔案/程式 給Mac後, 在行尾的地方都會出現^M字符 導致git status都會出現被modify的狀態 GPT詠唱: **To restore all files in git repo to their state in the last commit **後出現 方法之一**: $git restore — source=HEAD — staged — worktree — .** 解釋: 這個指令是使用 Git 命令行工具中的 “git restore” 命令。它的作用是將工作目錄中的檔案恢復到先前的狀態,並且可以選擇性地恢復到不同的地方。這句指令的意思如下: --source=HEAD: 指定恢復的來源是最新的提交(HEAD),即恢復到最近一次的提交狀態。 --staged: 將檔案的狀態恢復到暫存區(即將已經 “git add” 到暫存區的檔案恢復到暫存區的狀態)。 --worktree: 將檔案的實際內容恢復到工作目錄中,即恢復檔案的內容到實際修改之前的狀態。 .: 指定要恢復的檔案或目錄。在這裡的 . 代表當前目錄下的所有檔案。 總的來說,這個指令的作用是將暫存區中的檔案以及工作目錄中的檔案恢復到最近一次提交的狀態,並且將其內容恢復到修改之前的狀態。 目前感覺最好用….(?)

February 23, 2024 · 1 min · Peter

從MAC移除 FortiClient.app

在終端機下兩行指令搞定FortiClient.app被鎖住不能移除的問題 從MAC移除 FortiClient.app 在終端機下兩行指令搞定FortiClient.app被鎖住不能移除的問題 # 第一步 /bin/ls -dleO@ /Applications/FortiClient.app # 第二步 sudo /usr/bin/chflags -R noschg /Applications/FortiClient.app執行完上面的指令後,小鎖就不見了 然後就可以用AppCleaner把App完整刪除. 這兩個命令的目的是在Unix/Linux系統中設置和查看文件或目錄的標誌(flags)。其中,chflags命令用於更改標誌,而ls命令則用於列出文件或目錄的詳細信息,包括標誌。 /Applications/FortiClient.app上的小鎖可能是由於該應用程序被設置為“不可更改”(immutable)的屬性,這是一種特殊的標誌。執行chflags -R noschg /Applications/FortiClient.app命令後,將這個“不可更改”標誌移除了,因此小鎖消失了。 通常情況下,應用程序的小鎖表示這個應用程序的文件或目錄具有某種特殊的權限或屬性,可能是為了保護或限制對應用程序的修改。當您使用chflags命令修改了應用程序的標誌後,小鎖就消失了,這表明相關的權限或屬性已經被修改或移除了。 第一行指令的含義: /bin/ls -dleO@ /Applications/FortiClient.app /bin/ls:是列出目錄內容的命令,/bin是ls命令所在的路徑。 -dleO@:是命令的選項或參數,它們分別具有以下含義: -d:指定了要列出的目錄的詳細信息,而不是目錄內容的詳細信息。 -l:以長格式(long format)顯示文件的詳細信息,包括文件類型、權限、所有者、群組、大小、修改日期等。 -e:顯示Access Control List (ACL) 的相關信息。 -O:顯示擴展屬性(extended attributes)的相關信息。 @:顯示文件的扩展屬性,這在macOS中通常與App Store中的應用程序相關。 /Applications/FortiClient.app:是指定的文件或目錄的路徑,這裡是指定了FortiClient應用程序的路徑。 第二行指令的含義: sudo /usr/bin/chflags -R noschg /Applications/FortiClient.app sudo:用於以超級用戶權限執行命令,通常用於需要特權權限的操作。 /usr/bin/chflags:是用於更改文件或目錄標誌的命令,/usr/bin是chflags命令所在的路徑。 -R:表示遞歸地(recursive)應用這個操作到指定目錄及其所有子目錄和文件。 noschg:是要設置的標誌,noschg表示“不可更改”(no change),這意味著對指定的文件或目錄禁止了修改或刪除的操作。 /Applications/FortiClient.app:是指定的文件或目錄的路徑,這裡是指定了FortiClient應用程序的路徑。

February 15, 2024 · 1 min · Peter

contains

.contains(物件)為真,卻沒有被執行?Why ? contains .contains(物件)為真,卻沒有被執行?Why ? AI解釋:在您提到的情況下,當您按下 IconButton 時,favorites 列表中已經包含了該 Movie 物件,但是在第 161 行的 else 塊中的代碼沒有被執行。這可能是因為在第 160 行中,您使用了 contains 方法來檢查 favorites 列表中是否包含該 Movie 物件,但是 contains 方法是基於 == 運算符來比較兩個對象是否相等的。如果您的 Movie 類沒有實現 == 運算符,則 contains 方法將無法正確地比較兩個 Movie 物件是否相等。 為了解決這個問題,您可以在 Movie 類中實現 == 運算符,以便在比較兩個 Movie 物件時使用。 最後在movie.dart加上這段解決

January 1, 2024 · 1 min · Peter

iOS : 記憶體管理

在iOS app中,記憶體管理是基於引用計數模型運作。當創建一個物件的時候,記憶體會在Heap(堆)上分配,並將其引用計數設置為1。隨著其他物件對此物件建立強引用(strong reference),其引用計數會增加1。 iOS : 記憶體管理 在iOS app中,記憶體管理是基於引用計數模型運作。當創建一個物件的時候,記憶體會在Heap(堆)上分配,並將其引用計數設置為1。隨著其他物件對此物件建立強引用(strong reference),其引用計數會增加1。 相反的,如果擁有物件的持有者放棄了強引用,引用計數將會減少1。一旦引用計數變為0,該物件的記憶體就會被自動釋放。 當啟用了ARC(Automatic Reference Counting)自動引用計數功能的編譯器編寫程式碼時,編譯器會分析你創建的引用,並自動插入對底層記憶體管理機制的調用,我們無須手動設置引用計數。 隨著自動引用計數(ARC)的引入,我們只需要在引用物件時指定所有權的類型: 強引用(strong reference):確保被引用的物件只要引用仍然有效,就會一直保留在記憶體中。例如,我們宣告一個控制器屬性 strong var myView: UIView,表示控制器強引用 myView 物件,直到控制器釋放之前,myView 都會存在記憶體中。 弱引用 (weak reference):對被引用的物件的生存期沒有影響。例如,我們宣告一個閉包中的局部變數 weak var capturedView: UIView,表示閉包弱引用 capturedView 物件,即使 capturedView 被釋放,閉包中的 capturedView 也會變成 nil 而不會崩潰。 非擁有引用 (unowned reference):與弱引用類似,對被引用的物件的生存期沒有影響,但與弱引用的不同之處是,非擁有引用 預期總是擁有 「非 nil 的值」,**ARC 不會自動將其設置為 ****nil**。例如,我們宣告一個子視圖中的屬性 unowned var parentViewController: UIViewController,表示子視圖非擁有引用父控制器,而父控制器通常擁有比子視圖更長的生存期,因此子視圖可以安全地訪問父控制器。 需要注意的是: 當被引用的物件被釋放時,弱引用會被設定為 nil,而非擁有引用則會變成一個懸浮指標 (dangling pointer)。向懸浮指標發送訊息會導致程式崩潰。 使用非擁有引用時,要確保另一個物件擁有相同的或更長的生存期,避免懸浮指標問題。 簡單來說,在以下情況下使用不同的引用類型: strong: 當你想要確保物件一直存在,直到不再需要它為止; weak: 會在被引用的物件被釋放時自動設為 nil,因此它們可以用來避免循環引用。例如,在代理關係中,委托者通常會使用弱引用來引用代理,這樣當委托者被釋放時,代理也不會被保留。; unowned: 不會在被引用的物件被釋放時自動設為 nil,因此它們只能用於指向那些生命週期一定會比引用它的物件長的物件。例如,子視圖可以使用非擁有引用來引用父視圖,因為父視圖通常會比子視圖存在得更久。 assign: 當你只需要一個指向簡單數據的指標,不需要跟踪它的生命周期。 使用 weak 和 assign 引用可以避免循環引用,即兩個物件互相引用導致彼此都無法被釋放的情況。 ...

December 20, 2023 · 2 min · Peter

VSCode 顯示隱藏資料夾

打開設定(Settings) VSCode 顯示隱藏資料夾 打開設定(Settings) 在設定畫面右上角點擊“Open Settings按鈕” 添加設置: 存檔,從新啟動VSCode,就可以看到 . 開頭的資料夾

November 14, 2023 · 1 min · Peter

iOS中的associated type和associated value是不同的概念

它們在使用和用途上有很大的區別。讓我們來解釋這兩者之間的差異: iOS中的associated type和associated value是不同的概念 它們在使用和用途上有很大的區別。讓我們來解釋這兩者之間的差異: 是的,iOS中的associated type和associated value是不同的概念,它們在使用和用途上有很大的區別。讓我們來解釋這兩者之間的差異: Associated Type(關聯類型): Associated type是Swift中協議(protocols)的一個特性。 關聯類型允許在定義協議時指定一個或多個類型,但不需要提供具體的實現。 具體遵循(conforming)該協議的類別或結構體需要提供關聯類型的具體實現。 關聯類型使協議更具通用性,因為它可以適應不同的類型。 protocol OrderQueue { associatedtype Order // 定義一個關聯類型 mutating func enqueue(_ order: Order) mutating func dequeue() -> Order? } struct OrderQueueImplementation: OrderQueue { // 實現OrderQueue協議,指定關聯類型為OrderStatus typealias Order = OrderStatus private var orders: [OrderStatus] = [] mutating func enqueue(_ order: OrderStatus) { orders.append(order) } mutating func dequeue() -> OrderStatus? { return orders.isEmpty ? nil : orders.removeFirst() } } ...

October 27, 2023 · 1 min · Peter

搜尋目錄下每一個檔案的特定字/檔案名稱

在開發過程中,我們常需要快速找出「哪個檔案用到了這個變數?」或是「那個設定檔到底放在哪裡?」。 本文整理了 Linux/Mac 終端機中最常用的搜尋指令:grep、ag 和 find。 1. 搜尋檔案內容 (grep) grep 是系統內建最強大的文字搜尋工具。 常用指令 # 在目前目錄 (./) 遞歸搜尋 "R2" grep -rwn --color=auto ./ -e 'R2' 參數詳解 -r (recursive):遞歸搜尋,包含所有子目錄。 -w (word):僅匹配「完整單字」,避免匹配到部分字串(例如搜尋 is 不會匹配到 this)。 -n (line number):顯示行號。 -e (pattern):指定搜尋的關鍵字。 --color=auto:將關鍵字高亮顯示。 顯示前後文 (Context) 有時候只看一行不夠,我們需要看前後幾行程式碼: # -C (Context): 顯示前後各 1 行 grep -rwn -C 1 ./ -e 'R2' # -A (After): 顯示後 1 行 # -B (Before): 顯示前 1 行 2. 更快的選擇:The Silver Searcher (ag) grep 雖然強大,但速度較慢且指令較長。ag 是一個專為程式碼搜尋設計的工具,速度極快且預設忽略 .gitignore 的檔案。 (需額外安裝:brew install the_silver_searcher) ...

September 23, 2023 · 1 min · Peter