原创 防止Node.js應用中的命令行注入攻擊

  攻擊者可以使用Node.js應用侵入你的系統。本文介紹如何阻止這種行爲的發生。   當Node.js首次發佈時,它引起了一場革命。它允許開發人員在服務器端運行JavaScript,這是瀏覽器的主要編程語言。隨着時間的推移,Node.js

原创 華爲P20Pro進入開發者模式

  正常情況下,我們按照下面的步驟操作即可進入Android的開發者模式(大部分安卓手機進入的方式都類似): 打開手機的設置,點擊最下面的關於手機。   點擊這裏的“HarmonyOS版本”。連續點擊多次(我的手機是7次),然後會彈出

原创 Node.js子進程:你想要知道的一切

如何使用spawn(),exec(),execFile()和fork()   對於單進程而言,Node.js的單線程和非阻塞特性表現地非常好。然而,對於處理功能越來越複雜的應用程序而言,一個單進程的CPU是遠遠無法滿足需要的。   無論你

原创 JS基本原理:對象類型賦值和原生類型賦值

介紹   在本文中,我試圖以最簡潔的方式來闡明JavaScript編程原理中對象類型賦值和原生類型賦值之間的區別,以及它們各自是如何工作的。這也是我希望在我的JavaScript編程生涯早期就已經理解的東西。 JS中的原生類型和對象類型  

原创 在單元測試中使用Jest模擬VS Code extension API

  對VS Code extension進行單元測試時通常會遇到一個問題,代碼中所使用的VS Code編輯器的功能都依賴於vscode庫,但是我們在單元測試中並沒有添加對vscode庫的依賴,所以導致運行單元測試時出錯。由於vscode庫是

原创 Jest和Mocha對比:兩者之間有哪些區別?

什麼是單元測試?   所謂單元測試,是對軟件中單個功能組件進行測試的一種軟件測試方式,其目的是確保代碼中的每一個基本單元都能正常運行。因此,開發人員在應用程序開發的整個過程(即代碼編寫過程)中都需要進行單元測試。在進入到軟件開發的下一階段之

原创 微服務架構基本原理學習筆記(三)

上一篇:微服務架構基本原理學習筆記(二) 五、微服務之間的通信 微服務通信模式   微服務本身並沒有規定通信規則,換句話說,一個微服務並沒有規定可以被哪些應用程序訪問,或者被哪些其它的微服務調用。應用程序與微服務間的直接通信,或者微服務與微

原创 微服務架構基本原理學習筆記(二)

上一篇:微服務架構基本原理學習筆記(一) 三、微服務架構   從一個已有的單體架構的應用程序開始進行微服務架構的重構往往是一個不錯的選擇。隨着業務量和功能的增加,我們可以考慮使用微服務架構來擴充應用程序中原有的功能,或者每次添加新功能時,都

原创 微服務架構基本原理學習筆記(一)

一、什麼是微服務   微服務是一種技術架構,通常我們可以把它理解爲一組可以相互之間協同工作的應用程序或服務,這些應用程序或服務能夠被單獨部署到不同的服務器中,並且能夠自主運行和維護。   微服務技術只是一個名稱而已,或許我們在日常工作中已經

原创 如何在VSCode Webview中打開一個新的頁面

  上一篇我介紹瞭如何在VSCode Webview中實現點擊鏈接下載圖片或文件,本文介紹如何在默認瀏覽器中打開一個新的頁面。   在瀏覽器中,如果要實現打開一個新的頁面有許多種不同的方法,例如: window.open("https:/

原创 VSCode Webview中如何實現點擊下載圖片

  衆所周知,在一個普通的HTML頁面中,如果要實現一個鏈接點擊後下載圖片,只需要在頁面上放一個<a>標籤,然後將屬性href的值指向圖片的URL或者Base64字符串就可以了。或者按照stackoverflow上提供的方法動態創建<a>標

原创 npm install時遇到錯誤"error:0308010C:digital envelope routines::unsupported"的解決辦法

  今天早上打開電腦,更新了日常工作的github倉庫,然後就是習慣性地執行了"npm install",發現報了下面這個錯誤: Error: error:0308010C:digital envelope routines::unsup

原创 如何自定義sapui5 TreeTable控件的可展開列

  參考sapui5 TreeTable控件的示例,我們發現所有的可展開列(即所謂的hierarchical data column)默認都在第一列,而且API中並沒有給出對應的屬性或方法來重新指定可展開列在table中的位置。   我們可

原创 如何將一個大的Promise.all拆分爲幾個較小的部分依次執行

  前段時間在用Promise.all執行一個非常大批量的操作時遇到一個奇怪的問題。   這個Promise.all需要遍歷一個指定目錄中的所有文件,並以異步的方式讀取文件內容並進行後續操作。由於目錄中的文件數目比較多(大約8000+),P

原创 JavaScript展開運算符和剩餘運算符的區別

  JavaScript使用符號三個點(...)作爲剩餘運算符和展開運算符,不過這兩個運算符是有區別的。   最主要的區別就是,剩餘運算符將用戶提供的某些特定值的其餘部分放入JavaScript數組中,而展開運算符則將可迭代的對象展開爲單個