一個關於 ed 編輯器的簡短指南

ed 是原始的 UNIX 文本編輯器,它是你可以使用的最基本的編輯器。但它也很少被大多數人使用,如果根本就不用的話。 輸入 ed 來運行它。這將啟動一個互動式會話。輸入 a 進入寫入模式,然後按下 enter。然後輸入你想要的內容,完成後,在一行上只輸入一個句點 (.) ,然後按下 enter。 現在輸入 w ,後跟一個檔案名稱以將緩衝區保存到檔案中。它會返回寫入檔案的字節數。 你可以按 q 退出。 你可以使用 ed 來編輯一個檔案,只需使用檔案名來調用它:ed <檔案名>。當你按下 a 添加內容時,內容將添加到檔案的底部。 在 ed 會話中,你可以輸入 ,p 來打印當前檔案的內容。

一個關於Vim的簡短指南

vim 是一款非常受歡迎的文件編輯器,尤其在程序員中間。它正在積極開發和頻繁更新,並且擁有龐大的社區。甚至有一個Vim研討會! 在現代系統中,vi 只是指向 vim 的別名,這意味著 vi 是 vim 的增強版。 通過在命令行上運行 vi 命令來啟動它。 您可以在啟動時指定要編輯的特定文件名: vi test.txt 您需要知道Vim有2個主要模式: 命令(或正常)模式 插入模式 當您啟動編輯器時,您處於命令模式。您無法像GUI編輯器那樣直接輸入文本。您必須進入插入模式。您可以通過按下 i 鍵來進入插入模式。一旦這樣做,底部編輯器出現 -- INSERT -- 字樣: 現在您可以開始輸入並將螢幕填滿文件內容: 您可以使用箭頭鍵移動文件,或使用 h - j - k - l 鍵。 h-l 是左右,j-k 是下上。 編輯結束後,您可以按 esc 鍵退出插入模式,並返回命令模式。 此時,您可以瀏覽文件,但無法向其中添加內容(請小心按下的按鍵,因為它們可能是命令)。 現在您可能想要做的一件事是保存文件。您可以按 :(冒號)然後按 w 來保存。 您可以按 : 然後按 w 和 q 來保存並退出::wq 您可以按 : 然後按 q 和 ! 來不保存退出::q! 要撤消並編輯,進入命令模式並按 u。您可以通過按 ctrl-r 來重做(取消撤消)。 這些是使用Vim的基礎知識。從這裡開始,開始了一個我們無法在這個簡介中深入探討的兔子洞。 我只會提及那些讓您開始使用Vim進行編輯的命令: 按下 x 鍵刪除當前高亮顯示的字符 按 A 進入當前選中行的末尾 按 0 轉到行的開頭 轉到單詞的第一個字符,按 d 再加上 w 刪除該詞。如果您使用 e 而不是 w,則保留下一個詞前面的空格 在 d 和 w 之間使用一個數字來刪除多個詞,例如使用 d3w 刪除3個詞向前 按下 d 後按 d 來刪除整行。按下 d 後按 $ 來刪除從光標所在位置到行的結尾的整行 要了解更多有關Vim的信息,我推薦閱讀Vim FAQ ,尤其是運行 vimtutor 命令,這應該已經安裝在您的系統上,並且將大大幫助您開始探索 vim。

了解 setImmediate()

Node.js 的 setImmediate() 函數以特殊的方式與事件循環進行交互。 當你想要異步地執行某段代碼,並且盡快地執行時,可以使用 Node.js 提供的 setImmediate() 函數: setImmediate(() => { // 執行某些操作 }) 傳遞給 setImmediate() 的任何函數都是在事件循環的下一次迭代中執行的回調函數。 setImmediate() 與使用 0ms 延遲的 setTimeout(() => {}, 0) 和 process.nextTick() 有何不同? 傳遞給 process.nextTick() 的函數將在當前的事件循環迭代中執行,在當前操作結束後執行。這意味著它總是在 setTimeout 和 setImmediate 之前執行。 具有 0ms 延遲的 setTimeout() 回調函數與 setImmediate() 非常相似。執行順序將取決於各種因素,但它們都會在事件循環的下一次迭代中運行。

二進制數字系統

二進制數字系統的介紹 我最近介紹了十進制數字系統,這是我們作為人類所熟悉的系統。 如我在前一篇文章中所說,作為人類,我們通常有10隻手指,可以計數到10,這就是為什麼這個系統在我們的歷史中如此流行。 二進制數字系統對於我們的物種而言是第二重要的系統,因為它引領了電子和計算機的革命。 在電子學中,我們有兩種狀態:0或1。有0伏特,或者有5(或9、12等)。閘門打開了,或者閉上了。 它只能是一種或另一種。 二進制數字系統中的位數被稱為位元。 就像十進制數字系統一樣,二進制數字系統也是一種位置相關的系統。 我們將二進制數字系統中的每個位數乘以2的幂,根據它們的位置,從右邊的位置0開始。 給定: [2^0]等於1 [2^1]等於2 [2^2]等於4 [2^3]等於8,以此類推。 我們可以使用一系列位元來表示數字: 1可以表示為[1\times2^0] 10可以表示為[1\times2^1 + 0\times2^0] 111可以表示為[1\times2^2 + 1\times2^1 + 1\times2^0] 在數字中,前導的零可以省略或添加,因為它們對於最左邊的1的左側並沒有意義:110可以表示為0110或00000110如果需要的話。它們具有完全相同的含義,因為如上所述的系統,我們只是將2的冪次方乘以0。 使用二進制數字,我們可以表示十進制數字系統中的任何類型的數字。 我們需要足夠的位元數來表示足夠的數字。如果我們想要有16個數字,這樣我們可以從0計數到15,我們需要4位(位元)。使用5個位元,我們可以計數32個數字。32個位元將給出我們4,294,967,296個可能的數字。 64個位元將給出我們9,223,372,036,854,775,807個可能的數字。它增長得非常快速。 這是前4個位元的簡單轉換表,我們可以只使用2個位元生成它: 十進制數字 二進制數字 0 00 1 01 2 10 3 11 這是前8個位元的簡單轉換表: 十進制數字 二進制數字 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 如果你注意到了,我在4到7的序列中重複了上述序列,只是在前面加上了1而不是0。 這是前16個位元的簡單轉換表: 十進制數字 二進制數字 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 同樣地,我重複了我們用來獲得前8個數字的序列,在0-7之前添加了0,在8-15之前添加了1。...

人人都可以學習編程

就像人人都可以學習數學基礎一樣。或者就像人人都可以學會開車,或學會使用智能手機一樣。 我相信每個人都可以學會編程。只要付出足夠的努力,使用好的培訓材料,並具備一定的動力,這是非常具有可行性的。 同時,我認為學習編程應該是有趣的。會計是無聊的。但是編程電腦呢?我們可以讓它們做很棒的事情,所以只是想到它是件無聊的事情就讓我笑出聲來。這是現代世界中最有趣的事情之一。 我在整個課程中都採用這種方法。讓我們一起學習編程JavaScript,並且讓它變得有趣! 我不假設任何特定的背景知識 - 每個人都可以學會編程,而且你不需要知道計算機內部的工作原理!畢竟,我們可以拍攝出精彩的視頻和照片,而不必知道相機的內部工作原理,對吧? 順便說一下,我也會解釋一點關於這方面的知識。 曾經在10年之前,我們是那些整天呆在房間裡,盯著螢幕的怪人。如今,幾乎全世界的每個人口袋裡都有一台計算機 - 我們征服了世界。 你可能會從不同的角度來學習編程。也許你正在轉行。也許你一直想成為一名網絡開發人員,但生活卻把你帶到了其他地方。也許你15歲,準備佔領世界。也許你85歲,只是想創造一些有趣的東西,不需要賺錢,只是為了樂趣和讓事情運行的滿足感。所有這些都是學習編程的很好且完全有效的理由。

十進位數系統

十進位數系統介紹 在西方世界,十進位數系統是大部分人所熟知的數字系統。 每個人都知道它。 大部分人只是知道而已。 還有許多其他數字系統,但社會決定以十進位數系統作為預設系統。 為什麼呢?我想原因可能是人們有兩隻手(還有兩隻腳),上面分別有五根手指,所以從1到10的計數感覺很自然。 當你到達10時,重新從頭開始到達20。 這是我的猜測,相當可靠的猜測。 十進位數系統是由印度人發明並由阿拉伯人推廣的,目前仍然被稱為印度-阿拉伯數字系統。 十進位數系統被稱為10進位系統,因為它使用了10個數字,從0到9。 數字是有位置性的,這意味著根據位置,數字具有不同的權重(值)。 數字中的1在數字10中的值與在數字31中的值是不同的,因為在10中它出現在位置2,而在31中它出現在位置1(從右邊數)。 儘管這聽起來可能很明顯,因為你從小就使用這個系統,但並不是每種數字系統都是這種工作方式。 羅馬數字系統在古羅馬時代廣泛使用,一直到中世紀晚期,在歐洲被廣泛使用,它仍然是“10進位”但不是位置性的。要表示10,你使用字母X,要表示100,你使用C,要表示1000,你使用M。 在羅馬數字中,十進位數系統中的數字243可以表示為CCXLIII。 你不能移動字母來改變它們的意義。具有更大價值的字母總是向左移動,相對於價值較低的字母。除了形成4的IV之外(但這是另一個話題,讓我們回到十進位數字)。 十進位數系統中的任何數字都可以被分解為其他數字的和,這些數字乘以10的幂,取決於它們的位置。從右邊的位置0開始。 [10^0]等於1。 [10^1]等於10。 [10^2]等於100,依此類推。 在十進位數系統中: 5可以表示為[5\times10^0] 42可以表示為[4\times10^1 + 2\times10^0] 254可以表示為[2\times10^2 + 5\times10^1 + 4\times10^0]

子文件夾 vs 子域名

哪種方法更好?為什麼? 我參與了一個有關使用子文件夾與子域名的討論。 假設我想在我的網站上創建一個新的部分,專門用於銷售蜂蜜。 我自己不生產也不銷售蜂蜜,這只是個例子。雖然我的一個朋友有蜜蜂並生產自己的蜂蜜,而且非常好吃 😋 蜂蜜部分的網站將會非常龐大,擁有自己的應用程序來管理電子商務。 我可以通過兩種方式將這個功能添加到我的網站上。第一種方式是使用子文件夾,如:flaviocopes.com/honey。 第二種方式是使用子域名,例如:honey.flaviocopes.com。 還有第三個選項,就是使用自己的域名,如:flaviohoney.com。但我們把注意力集中在保留原始域名上。 子域名更容易管理:你有自己完全獨立的應用程序、CMS或其他東西,如果你用CI/CD,你可以將其分開存儲在自己的Git存儲庫中,而且你還可以將其分開托管在自己的服務器上。 我認為這是理想的解決方案,當你使用像Shopify這樣的外部服務時,它們允許你使用子域名。 另一方面,子文件夾略微複雜,因為除非你在服務器端想出創意的方法(這意味著你需要管理自己的服務器),否則所有代碼都必須放在管理主域名的原始代碼下。 但有一個巨大的優勢將導致選擇子文件夾的方式:SEO。 Google並未正式確認這一點,但它將子域名視為與主域名完全不同的網站。 honey.flaviocopes.com不會繼承 flaviocopes.com 可能具有的 SEO “權重”。擁有許多子域名將導致域名權威分散為多個子域名,而不是集中在主域名中。 僅憑這個理由就足以證明選擇 flaviocopes.com/honey 。 從品牌的角度來看,我個人不認為有什麼不同。對於一個大型項目來說,擁有獨立的域名、標誌和設計會更好得多。但如果只是一個想法或者你想要進行試驗而不想花費時間和精力來擁有一個獨立的域名,那麼子文件夾和子域名的方法都可以。

小寫轉換的 String toLowerCase() 方法

了解 JavaScript 字串的 toLowerCase() 方法 將所有文字轉換為小寫,返回一個新的字串。 不會改變原始字串。 不接受任何參數。 使用方法: 'Testing'.toLowerCase() //'testing' 與 toLocaleLowerCase() 類似,但不考慮地域設定。

不生產也沒關係

我經常看YouTube,以前經常看關於提高生產力的視頻,但現在我全部跳過。這些大部分都是假的。 那些不斷製作提高生產力視頻的人之所以這樣做,是因為他們的頻道是一個「提高生產力頻道」,算法告訴他們要製作更多提高生產力的視頻,因為觀眾中有很多人會觀看此類視頻。 我也是一個Twitter迷,每次登陸Twitter時,我都能看到人們分享其業務取得的巨大成功,推出了新的東西等等。 我可能會看到一個很棒的課程推出,然後想我也可以做一個類似的課程。 有時候,我會感到壓力,希望提供出色的工作,展示我自豪的成果。 這並不是說我還沒做任何事情…我的意思是,在過去的三年裡,我寫了14本免費書,每天寫一篇部落格文章,製作了15多門高質量的付費編程課程。 但是,儘管如此,我仍然有去做的慾望。 但有時候,我也有希望100%不生產的慾望。我們不一定要一直保持高生產力。 有時候,我們也可以給自己許可,休息一段時間,什麼有用的事情都不做。 即使這可能會損害我們對自己「高生產力人士」的看法。 我喜歡那些看起來好像幾年都沒有做任何事情,然後突然出現一本好書的作家。 也許這就是我期待的模式。

不要從一個語言跳到另一個

今天我想談談在學習編程時可能遇到的一個問題。 我收到很多提到這個問題的電子郵件。 以下是一個例子。 你開始學習Python編程。過了一段時間後感到沮喪,失去動力,等等。然後你切換到JavaScript。 你開始學習JavaScript,直到遇到了一個阻礙點,事情變得比預期的困難,或者你不知道接下來應該學習什麼。 對於這個編程事情你感到疲倦,所以你放棄了。 或者你再次切換到另一種語言,希望這次能成功。 我稱之為「從一個語言跳到另一個」。 在網站開發中,從一個框架跳到另一個框架也很常見。你從Vue開始,然後切換到React,然後再切換到Svelte,然後又出現了一個新的框架。 草地並不比對岸更綠。 選擇一個事物。 堅持下去。 深入學習它。 將它了解透徹。 有一天你會意識到你真的想學習另一種語言,那很好。 但是在開始和成為一名開發者時,選擇一個語言。 每次切換語言,你都需要忘記一些東西,並學習新語言如何處理事物。 這也會讓你感到困惑。 你會開始混淆事情。 在一開始的時候,選擇哪種語言並不重要。 如果我必須建議一個,Python和JavaScript是非常好的選擇,因為它們的流行性和靈活性。