字符串的 replace() 方法

了解 JavaScript 字符串的 replace() 方法 找到当前字符串中 第一个 出现的 str1 并将其替换为 str2。 返回一个新字符串,而不对原字符串进行修改。 'JavaScript'.replace('Java', 'Type') //'TypeScript' 您可以将正则表达式作为第一个参数传递: 'JavaScript'.replace(/Java/, 'Type') //'TypeScript' replace() 仅替换 第一个 出现的字符串,除非您使用正则表达式作为搜索字符串,并指定全局 (/g) 选项: 'JavaScript JavaX'.replace(/Java/g, 'Type') //'TypeScript TypeX' 第二个参数可以是一个函数。当找到匹配项时(或者对于使用全局正则表达式 /g 的情况下的 每个 匹配项),将调用此函数,并传入一些参数: 匹配模式的字符串 整数,指定匹配发生的字符串中的位置 字符串本身 函数的返回值将替换字符串的匹配部分。 示例: 'JavaScript'.replace(/Java/, (match, index, originalString) => { console.log(match, index, originalString) return 'Test' }) //TestScript 这对于普通字符串也适用,而不仅限于正则表达式: 'JavaScript'.replace('Java', (match, index, originalString) => { console.log(match, index, originalString) return 'Test' }) //TestScript 如果您的正则表达式具有捕获组,那些值会作为参数传递给匹配参数之后: '2015-01-02'.replace(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/, (match, year, month, day, index, originalString) => { console....

字符串的 substring() 方法

了解 JavaScript 字符串的 substring() 方法 substring() 方法返回字符串的一部分,它与 slice() 方法相似,但有一些关键区别。 如果任何参数为负数,则会被转换为 0。 如果任何参数大于字符串的长度,则会被转换为字符串的长度。 所以: 'This is my car'.substring(5) //'is my car' 'This is my car'.substring(5, 10) //'is my' 'This is my car'.substring(5, 200) //'is my car' 'This is my car'.substring(-6) //'This is my car' 'This is my car'.substring(-6, 2) //'Th' 'This is my car'.substring(-6, 200) //'This is my car'

安裝 iOS 和 Mac beta 版本

每年六月,蘋果公司都會舉辦開發者大會 WWDC(Worldwide Developers Conference)。 在這個日期,他們會宣布新的作業系統和程式語言更新。 這意味著新的 iOS、新的 macOS、新的 iPadOS、watchOS、tvOS。還有一個新的 Swift 更新,以及框架更新,甚至可能有新的框架。還有一個新的 Xcode 版本。 首個公開測試版隨後會釋出給開發者,並且整個夏天都會釋出許多不同的測試版,直到它們變得穩定並對公眾可用,通常是在十月/十一月間。 通常建議不要使用測試版軟體,特別是在主要工作設備上。但是當你看到新版本的奇蹟後,你肯定想親自體驗一下。也許你有一個應用點子,可以開始開發。或者你想更新你的應用程式,讓它們準備好穩定版的釋出。 我總是忽略我生產力使用的 Mac/主要的 iPhone/iPad 上的首個測試版,只是為了確保不會發生重大問題,但之後的測試版通常都很實用。 要獲取新版的 iOS 和 iPadOS、watchOS 測試版,你需要前往 Apple Beta 軟體計畫 網站,尤其是 註冊你的設備 頁面。 對於這些測試版,你不需要任何蘋果開發者計畫的會員資格。 但是對於 macOS 和 Xcode,以便你可以使用更新版本的 Swift 編寫應用程式,你需要具有會員資格。 有了會員資格,你可以登入並訪問 測試版軟體下載 頁面,並且你將能夠看到測試版作業系統的下載: 以及測試版應用程式的下載:

异步 vs 同步代码

运行代码同步或异步的区别 您可能听说过Node.js之所以快是因为它为所有昂贵的操作(如网络访问或文件系统)提供了异步API。 拥有异步API意味着什么呢? 如果你预计某个操作可能需要很长时间,那么以异步方式运行它是有意义的,这样其他代码可以同时运行,并且在操作结束时有一个钩子被调用。 这就是为什么Node.js可以处理比PHP或Rails更多的流量而不使用异步库的原因。 大多数传统上不是异步的编程语言现在都有第三方库来实现调用异步代码的方式。 否则,例如在PHP或Python代码中通常会发生的情况是,线程会阻塞,直到同步操作(从网络读取、写入文件等)结束。 如果代码以异步方式运行,CPU不会空闲等待该进程完成,而是可以继续执行其他已排队的任务,直到原始进程准备好继续进行为止。

成為一個出色的開發團隊成員

如何適應團隊環境 作為一名開發者,您幾乎總是在團隊環境中工作。 是什麼讓您成為一個出色的開發團隊成員?我在上一個模塊中已經談到了一些使您成為一個出色的開發團隊成員的主要技能,特別是共鳴、對新技術的開放性、您不是代碼以及願意改變觀點。 在這篇文章中,我想討論更多關於優秀團隊成員的特質。 優秀的團隊成員願意向其他團隊成員尋求幫助,也願意幫助任何人。 優秀的團隊成員不會以一種讓他們感到不好的方式批評其他人的代碼。這也包括過去編寫的代碼和您必須維護的舊項目。您不知道開發人員必須遵守的限制,所以不能評判已經編寫的代碼。您不是代碼,但人們還是會直覺地與自己的工作產生聯繫。 優秀的團隊成員有能力在團隊中擔任領導角色,或者讓其他人成為領導者,並跟隨他們的指導。 優秀的團隊成員不會獨自工作,而是應該盡可能與其他人合作,尋求意見和審查。 優秀的團隊成員信任團隊中的其他成員做正確的事情,並將竭盡所能確立和維護與自己的信任。失敗是可以接受的,只要失敗是學習如何成功的一種方式。 優秀的團隊成員是卓越通信者,在離線環境和在電子郵件或問題跟踪工具等在線工具中都能良好溝通。 優秀的團隊成員能夠設定界限並估計完成特定任務需要花費多少時間,以便其他人可以根據您的日程安排做出調整。 優秀的團隊成員能夠將任務委派給其他團隊成員。 當其他團隊成員做出出色的工作時,優秀的團隊成員會給予他們讚揚。

成為軟體開發人員的8個好理由

為什麼成為軟體工程師是你未來職涯的好計劃 如果你從7歲起就是一位有天賦的電腦天才,毫無疑問,你將成為一名優秀的軟體工程師。但如果這不是你的情況,為什麼你應該成為那些整天在鍵盤上輸入,讓機器按照你的意願運行的人之一呢? 我假設你是願意選擇這個職業來謀生,而不僅僅是為了自己的享受。 對於職業的喜愛又是另一個話題,必須仔細評估。 如果你努力工作,卻並不是非常在意電腦,那麼軟體工程將不是一個好選擇,因為為了做得好,你需要花費無數不計其數的時間精緻你的手藝,跟上整個行業的步伐,了解每一個小細節,以便正確地完成工作。 對於成為任何職業的優秀來說,激情是一個關鍵的因素。 你每天都會學到新東西 每天你都會面臨新的挑戰。你是一名工作在潛在非常複雜問題上的工程師。 你需要知道如何解決問題,如果你不知道,你需要在職場上學習。 人們期望你每天都在學習,這很棒,因為你不會在就業市場上停滯不前,而是隨著時間的推移積累了大量的經驗。對於你的公司來說是有價值的經驗,如果你決定換工作的話,對其他公司也是如此。如果你想嘗試獨立開發,甚至對於你自己來說也是有價值的經驗。 每天被要求學習可能會令人沮喪,也可以非常令人興奮。這完全取決於你的心態。 這是一個高需求的職業 我不認識一個合格且找不到工作或沒事可做的開發者。優秀的開發者需求量很大。你可能找不到一個頂尖或有名的公司的工作,但當地的公司都在迫切尋找人才。 你可以選擇自己的職業道路。 你可以搬到矽谷,加入一家頂尖公司,獲得非常高的薪水,與聰明人一起打造下一個大事業。 你不需要搬到矽谷才能找到開發人員的工作,特別是作為一名網絡開發人員,這是一個更容易進行遠程工作的職業之一。 未來可見,機會不會短缺。相反,對於開發人員的需求可能會更大,開發新軟體或維護現有軟體。 能夠遠程工作 遠程工作,即使只是每週幾天,可以實現良好的工作/生活平衡。 雖然並不是所有的環境都允許遠程工作,但遠程工作對軟體開發非常適用。 如果你是那些希望全職遠程工作的開發者之一,則你基本上可以選擇任何你想要居住並有良好的網絡連接的地方。 不需要浪費時間通勤,不需要為一天中找些好吃的東西而煩惱,不需要根據辦公室政治和規則在特定時間離開,或者更糟糕的是,等到人們決定離開的時間,以避免成為第一個離開的人並傳遞“錯誤信息”。 你只需要一個良好的網絡連接和一個安靜的地方(強烈建議有一個專門的房間),然後你就可以坐在那裡,盡力工作,並根據需要休息。也許你喜歡在上午11:00遛狗,在某些地方,作為你自己的工作時間完全是允許的,只要你完成了預期的工作。 良好的薪水和經濟福利 軟體開發是一份薪水相對不錯的工作,這取決於你的責任和你在工作中的能力。 作為一個遠程員工,你可以選擇為一個更富裕的國家工作,並從中獲益經濟上的好處。當然,這在很大程度上取決於你的選擇。 如果你選擇成為一名自由職業者,這是另一個公司願意為才華濟錢的領域。 然而,在你的前幾份工作中,你可能只會得到平均薪水。 你可以選擇獨立工作 假設你在一家公司工作了10年,有一天你突然“瘋狂”地決定離職,因為這份工作已經無法滿足你的要求。或者你被解雇了,或者公司倒閉了。 大多數職業都需要有人雇傭你,但軟體開發有一個很好的點,就是自己進行獨立開發,你可以自己開發一個產品,然後將其銷售給全世界。 它可以是一個SAAS(軟體即服務 - 網絡應用程序),一個移動應用程序,一個桌面應用程序,甚至是一本關於你最擅長的主題的電子書。你可以將多年的經驗應用到新的創業中,並將這段新經驗供未來雇主參考。 這是一種創作的出口 這雖然不是繪畫或設計,但編程是一個高度有創造力的專業。 每次你開始編寫一個程序,你都在創造一些新的東西,就像你在孩童時期玩樂高一樣。 很多時候,你嘗試使用各種技術,只能發現那不是一個好的方法,所以你選擇了一個不同的方向。每次你編寫一個新程序,你都會學到一些新東西。 這永遠不會讓人感到無聊(除非你的工作本來就很無趣,但編程本身應該不會無聊 - 否則你總是可以尋找一份不無聊的工作) 編碼是社交的 即使一個人一天花10個小時孤立地坐在電腦前,也可以說編程是社交的。 我們使用由人們開發的軟體,人們撰寫了使用該軟體的手冊和指南,我們依賴開源軟體,在論壇上與人們互動來討論和學習更多關於編程的知識,最後,我們為人們創造軟體。 你和一個團隊一起工作,這個團隊可以分佈在不同的地方,也可以在你辦公室附近。你有利益相關者,人們在等待你修復問題。 程序員喜歡參加會議,甚至有些勇敢的人在會議上發言,我們喜歡在Twitter上發表意見、評論和分享事情。 我們在GitHub上標星標識項目,提出問題,提交請求以改進他人的工作。 所有這些都是一種社交活動,最好的是你可以按照自己的節奏進行,根據自己的意願進行社交。 這取決於你自己 每個人都有同樣的機會。我們可以訪問全世界最強大的伺服器和服務。你的手機比NASA用來送人上月球的電腦強大數千倍。 西伯利亞的人可以擁有與矽谷的人相同的硬體。 你可以在線訪問數百萬本書。你所需要的只是時間、奉獻和毅力,你可以學到所有需要學的知識,以履行任何工作。 障礙每天都在降低。10年前的情景完全不同,想像一下10年後會怎樣。 你可以做一款應用程序,並在很短的時間和前期投資中在全世界販售它。 這些是8個隨機的理由。我確信還有更多好的理由,也有許多理由不成為一名軟體開發人員。

早起(不太早)

在互聯網上經常能看到有關人們早起的文章。 非常早。 早上6點。早上5點。早上4點! 我敢肯定你已經看過這種“奮鬥色情”的表演了。有時候他們是“激勵者”。有時候只是試圖扮演努力工作、追求自己目標的人。 他們談論的時候,仿佛已經悟透了一切。 而我無法早起。我真的無法。 如果我早起太早,我無法正常運作。 也許早上我能勤快些,但然後我必須在下午睡覺,否則我就像一個行尸走肉。 我早上7:30或8點起床,我並不感到羞愧。 我保證,即使我這麼晚起床(哈哈),我也能做好事情。 而且我的工作時間是有限的,當我的大腦累了時就無法繼續工作。 我在早上做最好的工作,而在太陽下山、夜晚開始時思維最清晰。或者當我在散步或淋浴時。 這只是我的情況。 也許你也是這樣。我只想說,你不必和那些人比較。如果他們聲稱自己是唯一這樣做的人,就讓他們這樣相信好了。 多睡一會兒並不可恥。

有限狀態機

快速概述狀態機,並提供簡單的例子。 最近在 JavaScript 領域中越來越多地談論 有限狀態機。 有一個名叫 XState 的流行庫,在 GitHub 上有超過 1.1 萬顆星星,我最近遇到了它,並且在 Twitter 和其他地方都看到它。這是一個非常酷的項目。 我第一次接觸有限狀態機和自動機是在 20 年前的高中時代,然後在大學的數位設計課程中又遇到。 這門數位設計課程主要涉及編碼信息、布林代數、組合電路、時序電路、序列狀態機、算術電路、VHDL 等內容。 我發現將有限狀態機應用於前端工程非常有趣,於是我回頭翻閱了以前的教科書,看看能否找到一個好的解釋。 我確實找到了很多資訊,但當然由於教科書的緣故,事情被複雜化得沒有必要(在我看來)。我喜歡簡化事物,因此我決定寫一個適合普通人的小節,並非理論的或任何為了通過考試而製作的東西。你可以應用於實際世界的事物。 狀態機 在介紹什麼是有限狀態機之前,我要先介紹什麼是狀態機。 世界上到處都是狀態機。你可以在各個地方看到它們,但也許你沒有把它們視為狀態機。在閱讀本教程之後,我相信你會指出現實世界中的一些物體,對你的朋友說:“這是一個 狀態機”(取決於你的朋友對於書呆子程度)。 最受歡迎且最常見的例子就是交通信號燈。 任何時候,交通信號機都有一個明確的狀態。通常,它要麼: 綠燈亮,其他兩個燈熄滅; 紅燈亮,其他兩個燈熄滅; 黃燈亮,其他兩個燈熄滅。 (有些交通信號燈可能有些區別,但對於本例子而言,我們不需要關心) 在狀態機的術語中,燈號的開啟或關閉被稱為輸出。 以上的三種情況被稱為狀態。當交通信號機接收到一個輸入時,通常只是一個固定的計時器,該計時器決定綠燈、黃燈和紅燈應該亮多久,信號機的狀態會更改。 在這種情況下,計時器是系統的輸入。有些信號機配有一個行人可以按下的按鈕,以導致紅燈顯示給汽車,這是另一個輸入。 在狀態機中,狀態只能在根據輸入的情況下更改(我們稱之為轉換)。 有限狀態機 我們的交通信號燈狀態機被稱為有限,因為我們只有有限的狀態。 有些系統可能有無限個狀態,例如世界生態系統模型或昆蟲的生活。我們無法用有限數量的狀態來定義它。 但是交通信號燈呢?這是一個簡單的東西,它只有三種狀態,如上所述。 我們還可以舉出許多例子: 自動售貨機 地鐵入口的轉閘 暖氣系統 自動地鐵系統 自動駕駛車系統 電梯 但讓我們先專注在我們的交通信號燈示例上,這是非常簡單的,我們可以很容易地理解。 建立狀態機模型 當然,交通信號機不是單獨存在的。這是另一個有限狀態機,其中每個十字路口的每一側道路上都被安裝了多個交通信號機,它們同步工作。 現在先不要考慮它。讓我們專注於一個單獨的交通信號機。 如前所述,我們有 3 種狀態,可以稱之為綠燈、紅燈、黃燈。 我們有一個初始狀態。假設在重置交通信號燈時,我們的信號燈處於 green 狀態。 我們有一個計時器,在綠燈狀態持續 50 秒後,信號機切換到 yellow 狀態。黃燈狀態持續 8 秒,然後切換到 red 狀態,並在那裡停留 32 秒,因為那條路是附屬的,應該給予較少時間。之後,信號機回到綠燈狀態,這個循環無限地繼續下去,直到電力被切斷,信號機重新接通電源時重置。 總計,我們有一個 90 秒的循環。...

自由接案有什麼不好?

注意:本篇為個人意見分享。我並不是認為自由接案一般來說不好。只是從我個人的觀點出發,認為自由接案在追求獨立生活方式上是很好的選擇,但不適合長遠規劃。 我已經擔任自由接案/合約工作十年,2008年至2018年。 在我的理解中,這兩個詞的區別在於自由接案者同時承接多份較小靈活的工作,而合約工則只有一個大客戶,每月計費。 不陷入上述問題的細節,我直接說自由接案/合約工的壞處就是你在出售你的時間。 時間是最稀缺的資源,金錢只是能量,可以賺取也可以花費。 但時間是唯一一個只能被消耗的資源,你無法創造新的時間,只能儘量節省時間,避免消耗它。 你為客戶X創建了一個網站或設計,花了10個小時,你得到了這些小時的報酬。 如果你不工作,就無法賺錢。 你的時間與金錢嚴格相關。過了一段時間,你會發現自己不去滑雪,因為那將會是「假期成本」加上「不工作所損失的收入」。 作為一名員工,你會遇到不同的問題。有時候成為一名員工更好。你會失去一些自由,但至少你不需要一直帶著工作。 當然,每小時計費「很賺錢」,但從長遠來看,你需要一種摆脱這種模式的方法。 相反,你希望你的收入與你的工作時間分離。 把你的努力與你賺取的金錢分離出來。 這是一個很難理解的概念,在某些情況下,你可能也被社會洗腦而不能接受這一點,這可能會讓你自我摧毀。「我不值得」、「我沒有努力工作到足夠來收費X」。如果你的家人或緊密圈子中沒有人將時間與金錢分離的話,這種情況可能發生。 如果你在商店、辦公室、做司機、快遞、會計師、律師等工作,這些工作都與時間綁定。 自從我讀了《每週工作四小時》並於2008年開始創業,我就一直在思考「如何將時間與金錢分離?」這一直是我的常態思考。 我想要一個「被動收入」機器。一個我只需創建一次,卻可以賣多次的東西,不受我自己的努力所限。 創造一次,賣兩次。 創造一次,賣20次。 創造一次,賣1000次。 我還希望它可以高度自動化。如果你在閱讀這篇文章,你要麼是一名開發者,要麼渴望成為一名開發者,我們都崇尚自動化。沒有電話,沒有現實世界的會議,沒有那些東西。 我嘗試過很多事情,一開始沒有成功,但我沒有放棄,在嘗試不同的行業和產品類型後,事情開始有所改善。 當我回顧自由接案的日子時,我意識到這是邁向目標的一個必要步驟。 我需要有一種方法來支付生活費,同時尋找我想要的業務。這並不是最終步驟。 這一點我清楚,就像當我作為學生在夏天在阿爾卑斯山地區的酒店當洗碗工一樣。我不打算一輩子都這樣做。那只是一個階段。 如今,我工作非常辛苦。請注意,我花幾個月的時間創建一個產品,服務我的觀眾,擴大我的觀眾,並向他們銷售有用和有價值的產品。 這並不是指我每天只是在海灘上喝著瑪格麗特,一整天都什麼也不幹。 它是指我在數月後還能賣出我最後一次工作的產品。我可以賣出它100次,但我只需創建它一次。 我將我的工作時間與我產生的收入分開。這是我一直想要創建的業務類型。 有人可能成為自由接案者,將時間換成金錢。如果這是你的職業選擇,沒有什麼錯的。但如果這不是你所追求的,你知道還有另一種維持生計的方式。

自助旅行:水

本篇文章屬於我的自助旅行系列。請參閱第一篇文章和電力篇文章。 水是一件大事。他們說人體高達60%是水。大腦和心臟的成分是73%的水。令人驚嘆,不是嗎? 我唯一知道的是我每天需要喝很多水。 但水不只是用來喝的。 你需要水來清洗自己、洗碗、洗衣服,有時甚至用來洗狗,特別是當牠們真的很髒的時候。 水對烹飪也非常重要。 你可以在車上儲存的水量取決於車子本身。我有100升的清水,還有一個位於車底下的100升灰水箱,冷水存放於其中。 水,就像電力一樣,在房車中不是像在房子裡那樣取之不盡。這真是不幸。 較小的房車會有較小的水箱,較大的房車會有較大的水箱。 一些聰明人建造的房車將灰水箱放在車內,而不是底下。我的房車就是底下,隨著冬天的來臨,問題也會出現,因為它的位置更容易受到外界溫度的影響,可能會結冰。 管理水很簡單,直到冬天來臨。 每個系統當然都不盡相同。我將描述我的系統。100升的清水儲存在床下的櫥櫃中,我可以從外面補充水。 在車內我可以檢查水箱的內容,這對於清潔它非常有用,我還可以觸發一個機構將其排空。水箱底部有一個需要拉的東西。 水箱內有一個水泵。在某些系統中,水泵是放在水箱外面的。而我車上的水泵就在水箱內部。 然後管道將水帶到以下器具: 廚房的洗滌槽 浴室的洗滌槽 浴室的衛生間 沸水爐 10升的沸水爐是一個名為Truma Combi 4的爐子,可以作為丙烷爐,也可以作為房車的主要加熱器,即丙烷加熱器。 從沸水爐中流出熱水,供應給廚房/浴室的洗滌槽。 在出發前,我會給水箱添加水,而且偶爾需要卸下累積在灰色儲水箱中的废水。你可以在專門槽位進行此操作。許多地方免費提供這種服務。而且有時他們向你收費提供清潔水。 我的100升水箱將持續7天甚至更長時間,然後你需要在公共場所或露營地重新補給。 你只需要牢記這一點:帶上自己的水管。拆下看到的水管,連接自己的水管。我見過有人用催化方法清洗混濁的污水(例如糞便),然後下一個使用水管來裝滿他們的車。這是悲哀卻又真實的事實。這樣做可能引起細菌感染,導致不適。 說到這一點,擁有一個馬桶是非常重要的。我在“自助旅行油管頻道”和現實生活中看到許多人將“大自然”當作他們的廁所。這看起來非常嬉皮和隨性,但從長遠來看對環境非常有害。請使用自己的廁所。每週只需在專門槽位進行排放。至少在歐洲有很多地方提供免費廁所,因為沒有人希望你把它們放在大自然中。大自然應該保持盡可能的清潔。 所以帶上自己的水管並使用它。如果你沒有自己的水管,一個選擇是將水管的末端遠離進水口,只需讓水流入(不要將水管放入車內!)。 還需要注意的是這種清潔水可能並不像你想像的那樣乾淨。這就是為什麼當我外出時,我幾乎總是在超市買瓶裝飲用水。你永遠不知道。 我曾經在挪威最美麗的地方之一補充具有某些未指定成分的水,也許是藻類。你永遠不知道(在這種情況下你可以學到有關水過濾器的一些知識)。 為了解決這個問題,你可以購買Alb Filter等高級過濾器,但這需要花費很多錢,而且你還需要定期充值。你可以在補充水時使用它們,或者甚至在水箱和水龍頭之間永久安裝它們。 這基本上是我關於水的所有經驗。 一切都運作良好,直到寒冷進來。如果你只打算在夏天使用你的房車,那你不需要太多要了解的。如果晚上氣溫是攝氏零下10度或零下15度,你也不需要過多擔心。如果你是奇怪的人,喜歡在零下20度露營,那麼問題就開始出現了。 這是因為水很好,但當天氣變冷時,它很容易變成冰。但我會在另一篇文章中詳細介紹這個問題。