軟體開發者的遠程工作

遠程工作對軟體開發者來說是一大福利。 我已經在遠程工作10年了,我也認識很多其他遠程工作者。我可以準確地描述遠程工作的優點和缺點,並給出一些建議。 我知道並不是每個人都喜歡遠程工作,遠程工作當然也不是每個人都適合。對於我來說,作為一個內向的人來說,與他人一起工作非常消耗心力,尤其是像軟體工程這樣需要花費大量心力和保持高度專注的工作。也許你也有同樣的感受。 遠程工作能使你成為更有生產力的開發者嗎?這是個好問題。我的觀點是“是”,但每個人的意見不同,你可能有不同的看法。 優點 遠程工作給軟體開發者帶來許多優勢。 在家工作 你可以在自己的家中工作。這有什麼比這更好的了? 當你餓了,你只需到廚房製作吐司。當你想要喝咖啡時,你可以隨時去制作,也不必擔心會弄濕工作場所。 你不會受限制,你也可以去咖啡館,在那裡享用咖啡,一邊聽著你最喜歡的開發者播客,或閱讀你在Pocket上保存的所有文章。 你可以在家工作,因為你可能不想在家工作。也許你家裡有其他人,如果你沒有一個明確且獨立的工作區域,這可能會成為問題。 管理你的時間 需要休息嗎?帶著狗,關掉電腦,出去散步。這是遠程工作的一個最大的福利。 但這也可能會成為一個問題,因此要謹記 - 你是一個專業人士,要像專業人士一樣管理你的時間。 在你最有生產力的時候工作 感覺不起勁?沒有必要逼自己做假。只需度過一個非生產性的下午。閱讀一些東西而不用被老闆噴斥。你可以在晚上工作,然後在下午小睡一下,醒來時精力充沛地解決新功能。 如果你覺得晚上工作對你的生產力更好,那就這樣做。你可以在下午小睡一下,然後在醒來時精力充沛地解決新功能。 打破9點到5點的工作時間 9點到5點的工作時間是工業時代的一個慣例,被我們強加的。沒有人能夠連續8個小時高效工作。你最好在早上工作3個小時,然後休息一下,在下午專注地工作2個小時,然後追趕或學習新東西。 人們真的不會在9點到5點的工作時間內工作8個小時。你到達辦公室,拿杯咖啡,工作一下,聊聊天,再工作一會兒,喝杯咖啡的時間到了,然後再工作一下,開會,計劃,午餐,然後慢慢追趕下午的工作,再工作一會兒,然後到下班的時間了。也許你在一個好日子裡工作了4個小時。我在遠程工作時總是感覺更有生產力,這就是我喜歡它的原因。我做工作,不浪費時間,回去過我的生活。在辦公室,我感覺有義務留在那裡,即使我精神上完全放松了,也無法做任何有意義的工作。部分是因為我的內向本性,我在和其他人呆在一起時精力消耗殆盡,這是很常見的問題。 與你希望社交的人交往 你不需要和你的同事社交。我曾在一個我不太喜歡和一起工作的人的環境中工作過,但沒有辦法克服這種情況。只是為期一個月,所以我忍了忍,但如果超過這個時間,我是絕對不會忍受的。遠程工作,你可以選擇你想要與同事參與的程度,只需做好工作,與他們的工作互動。 你可以住在任何地方 你可以住在任何地方,我是指任何地方。如果你的公司有一個旅行團,你只需要在合理的時間內到達一個機場附近的地方,但也許你也可以選擇住在阿拉斯加的偏僻地方,並且需要乘雪地摩托車前往機場花費2-3天的時間。 注意:公司可能只在特定的國家招聘。他們不能在任何地方招聘。他們幾乎可以在任何地方簽約,但這是不同的。所以在搬到那個小島之前,要謹慎考慮我的建議。 從技術上講,你可以在南極工作,但我不確定作為公民能否在那裡居住。 這意味著地球上任何其他地方都可以。只要你有良好、可靠的網絡連接。 這是必不可少的。 在僻靜的地方,我在我自己的廂型車上工作過,那裡的4G手機的網絡比我家裡好。 互聯網是讓你遠程工作的關鍵,它應該足夠強大和快速,能夠完成你應該做的工作。 你不必住在城市裡 隨著辦公室工作和工廠需要本地勞動力,人類隨著時間的推移逐漸集中在城市。 有些住在城市裡的人甚至無法考慮離開城市生活,但在鄉村地區長大的人要麼想搬到城市,要麼盡量遠離城市。 我知道這一點,因為我出生在鄉村,我搬到大城市讀計算機工程學位。我只需要坐1個小時的火車就可以回家,但一周都住在城市裡,只在周末回家。 大學畢業後,我從未回首,搬回了我的家鄉,開始了一個人的公司,為世界各地的公司提供合同。這得益於互聯網。 我知道很多人畢業後從未回過頭來。他們喜歡城市的生活。 我圈子裡有很多人在城市工作。如果他們喜歡“數字遊牧”式的生活方式,他們也喜歡從一個城市跳到另一個城市。 我喜歡鄉村地方,喜歡住在/靠近山區。冬天我會滑很多北歐滑雪,住離滑雪場大約1小時的地方使我每週甚至更多次都可以滑雪。夏天我可以逃離酷暑。 我想強調的是你可以在任何地方工作,無論是大城市、小城市、小鎮還是拉普蘭的偏遠地方。我知道有人在海上的船上工作。 你喜歡怎麼穿就怎麼穿 你可以以舒適的打扮工作(關於打扮,在技巧部分會有更多) 你喜歡怎麼吃就怎麼吃 你在家!或者你喜歡的地方!你可以更好地選擇適合你的餐食,而不是受到辦公室附近可供食用的食物的限制。 你可以吃更高質量的食物,我經常吃在菜園裡種的食物尤其在夏天。這在你獲得的營養元素和你不得不放棄的不好的東西方面都有很大的不同,但這又是另一個故事。 獲得足夠的睡眠 你可以在下午中間小睡一會。曾經在午餐後感到困倦嗎?去睡一覺,醒來時精力充沛,而不是浪費時間做一些毫無意義的事情,只是為了生存和壓力不夠高效。 你可以在“感覺對”的時候上床睡覺。如果你喜歡晚上工作,肯定值得繼續工作。 我的作息時間更偏向早起,比如早上6點醒來開始工作。早上8點,當我的伴侶醒來時,我已經做了很多工作。 更容易進入“鐵石心腸”狀態 什麼是“鐵石心腸狀態”?即使你不知道這是什麼,你肯定在某個時候遇到過。 那時你專心做一些事情,一切都不再重要,時間不知不覺地過去了,直到某個時候你意識到現在已經天黑了,你錯過了用餐時間。 那就是鐵石心腸狀態。這是開發者最有效的狀態,在這種狀態下你寫的是最好的代碼,思維中的一切都毫不費力地流通出來。 正如我現在寫的這篇文章,我正處於這種狀態下。這是我在幾個小時內寫下2000字、將它們放在正確的位置上、具有正確意義並且不枯燥的唯一方法(希望如此)。 有時候我坐下來馬上就意識到,我無法做好工作,因為進入狀態是不可能的。 在辦公室裡,這意味著同事來來去去,開會,人們聊天,水源冷卻器還有更多的分心事物。這還可能意味著不得不使用你不喜歡的電腦,或者速度太慢。 在家裡,更容易消除這種干擾。關閉Slack,禁用通知,關閉電子郵件客戶端,你可以真正全神貫注。 請注意:在家裡也會有其他問題,比如家裡有其他人,或者更容易受到干擾。在後面的小貼士中會有更多內容。 缺點 遠程工作並不是一整天都好玩。也有缺點,你需要意識到這一點。 別人可能認為你什麼都沒做 溝通,溝通,溝通。作為開發者,我們有時候工作輕松一些,因為我們的提交、問題評論和拉取請求可以替我們說話。 但是,當你花了4個小時解決了一個棘手的錯誤,結果發現只是一個拼寫錯誤時,如果你在巴厘島,人們可能會認為你整個下午都在海灘上玩樂。這就是為什麼溝通非常重要,團隊使用所有這些工具來交流信息。 與其溝通不足不如溝通過多。 沒有同事社交圈子 當然,沒有真實接觸,你無法像和其他人一起工作時那樣建立一種社群感覺。這是不可能的。 Google Hangouts、Slack和所有這些工具無法代替在現實生活中與人們見面和交談。大多數遠程工作的公司都會舉辦為期一周的研討會,讓你和同事一起工作和娛樂。 這些活動有助於建立大量的信任,也可以很有趣,但你需要在工作之外建立自己的社群,基於其他興趣,甚至是你的所在地的一群程序員。...

透過 getInitialProps 在 Next.js 組件中提供數據

如何使用 getInitialProps 在 Next.js 組件中提供數據 在我們談到在 Next.js 中添加動態內容時,我們遇到了一個問題,即動態生成頁面所需的數據無法事先獲取,當我們試圖從 JSON 文件中獲取數據時: import { useRouter } from 'next/router' import posts from '../../posts.json' export default () => { const router = useRouter() const post = posts[router.query.id] return ( <> <h1>{post.title}</h1> <p>{post.content}</p> </> ) } 我們收到了以下錯誤信息: 我們如何解決這個問題?又該如何使 SSR 適用於動態路由? 我們需要使用一個名為 getInitialProps() 的特殊函數來為組件提供 props。 首先,我們為組件命名: const Post = () => { //... } export default Post 然後我們將函數添加到其中: const Post = () => { //... } Post....

逐一迴圈:`for-in`

本教學屬於 Swift 系列 for-in 迴圈可用於指定次數的迭代,使用範圍運算子: for index in 0...3 { // 4 次迭代,`index` 為:0, 1, 2, 3 } 您也可以迭代陣列或集合元素: let list = ["a", "b", "c"] for item in list { // `item` 包含元素值 } 以及迭代字典元素: let list = ["a": 1, "b": 2, "c": 2] for (key, value) in list { // `key` 包含項目鍵 // `value` 包含項目值 }

這是我的小數位花園

最近我在 HN(Hacker News)上碰巧發現了「數位花園」的概念,當時 Joel Hooks 的文章「我的部落格是一個數位花園,而不是部落格」在首頁排名第一。 這樣我就接觸到了這個詞和這個理念。 這個網站是許多東西的集合:它是一個教程的收藏,也是你可以獲得我的免費書籍的地方,也是我每天精心維護的事物。 擁有一個類比的花園,換句話說就是現實世界中的花園,是一樣的 - 如果你想要它美麗和好看,你需要不斷地照顧它。 我把我的網站叫做 部落格,但這只是指首頁文章列表的倒序排列方式。 否則它更像是我的個人出版平台,但名字太無聊了。數位花園聽起來更酷。 它不是一個傳統的部落格。例如,所有部落格都有評論。我沒有評論功能,從來沒有。我想消除發布時所有的阻礙,而且我沒有時間和精力來管理和參與與我的部落格文章相關的討論。 我的部落格文章並不是同行評審的,很多時候我發布的部落格文章只有 100 字,我並不在意我的專業領域的其他部落格發布至少 5,000 字。我不在乎。 有時我會像這篇文章這樣寫一些反思和正在進行的思考。 我也不會無聊地進行關鍵字研究,找出可能受歡迎的文章,我只是寫我想寫的東西。 我有一個首頁,按照倒序排列列出我最新的文章,但我覺得這沒有用。我們有 RSS 閱讀器可以做到這一點。當然,擁有最新的 7 或 10 篇文章很酷,但像現在這樣有 300 篇?我不知道。 我在這裡發布的大多數內容都是有關如何解決錯誤、實現特定功能或分享我所學到的筆記。 我對於我的網站沒有其他好詞。當然,「網站」這個詞可以用。但太無聊了。出版物?更無聊。而且我不是 Wired 或 freeCodeCamp,只是我自己。 這就是我的數位花園,我在這裡種植我感興趣的一切,談論我感興趣的事情,也是我成長自己的地方。

通知 API 指南

通知 API 負責顯示使用者系統通知。這是瀏覽器提供給開發者的介面,允許在沒有在瀏覽器中打開網站的情況下,經由使用者的允許,向使用者顯示訊息。 介紹通知 API 權限 建立通知 新增內容 新增圖片 關閉通知 介紹通知 API 通知 API 是瀏覽器提供給開發者的介面,允許在沒有打開網站或網頁應用程式的情況下,通過使用者的允許,向使用者顯示訊息。 這些訊息是一致且原生的,也就是接收者從外觀和使用者體驗的角度習慣了它們。它們具有系統層級的特性,並不特定於您的網站。 結合 Push API,這項技術可以是提高用戶參與度和增強應用程式功能的有效方法。 通知 API 會與 Service Workers 高度交互,因為他們是推送通知所需的。您可以在沒有推送的情況下使用通知 API,但其使用情境會受到限制。 if (window.Notification && Notification.permission !== "denied") { Notification.requestPermission((status) => { // 如果被使用者接受,狀態會是 granted var n = new Notification('標題', { body: '我是內容!', icon: '/path/to/icon.png' // 選用 }) }) } n.close() 權限 要向使用者顯示通知,您必須具有此權限。 Notification.requestPermission() 方法呼叫請求此權限。 您可以以以下簡單的方式呼叫 Notification.requestPermission(),並且它會顯示一個權限授予面板,除非之前已經授予了此權限。 要在使用者互動(允許或拒絕)時執行操作,您可以附加一個處理函式: const process = (permission) => { if (permission === "granted") { // 我們可以顯示通知 } } Notification....

通過示例學習 AppleScript,第 1 集

我從未寫過任何 AppleScript,儘管我自從 2005 年開始使用 Mac,但我從未有過這種需求。 而且我總是覺得這很難理解,因為它的思維模式與我平時做的事情非常不同。 不管怎樣,今天我不得不寫一些,以下是我在一些搜尋、stackoverflowing 和 chatgpting 之後結果: tell application "Finder" set currentFinderWindowPath to (POSIX path of (target of front window as alias)) end tell tell application "Terminal" do script "cd " & currentFinderWindowPath activate end tell 我將描述一下這個腳本的功能,這樣以後我就可以記住了。 首先,我們要求 Finder 應用程序獲取當前活動窗口的絕對路徑: POSIX path of (target of front window as alias) 你也可以這樣寫: tell application "Finder" to get the POSIX path of (target of front window as alias) 這也是一種不錯的方式,在 shell 腳本中使用 osascript -e 將其與其他腳本結合使用,如下所示:...

通過郵件列表擴大你的影響力

讓我們討論如何通過使用郵件列表來增強你為博客訪客創建的體驗。 什麼是郵件列表? 博客與通訊和郵件列表密切相關,這兩者往往相輔相成。 電子報是你能夠與你的博客讀者長期保持聯繫的最有效方式。 如果你對郵件列表的概念還不熟悉,你可能會想知道,在Facebook、Instagram、Snapchat和Twitter這樣的時代,你是否還需要使用電子郵件這樣的老式系統。 事實上,對於任何在線業務來說,電子郵件都是一個基本工具。博客也不例外。 向一個客戶列表發送郵件不是一個人們通常用來發送垃圾郵件的系統,正如你可能會想的那樣。 尤其是如果你是一名開發人員,你需要意識到電子郵件是有用的,你不會因為發送郵件而變得邪惡,而且人們希望能夠收到你的消息。 電子郵件是一個很棒的系統,對於對你的內容或產品感興趣的人來說,他們可以獲得更多有關它們的信息,或者是有關你未來可能提供的新產品的信息。 電子郵件營銷是一種最有效的系統,通過這種系統,人們從訪問者轉變為客戶:你的列表上的人明確要求在未來收到更多來自你的信息。 這並不意味著在8個月後發送一封郵件要求他們購買你的新產品。相反,正確的方式是問問自己你如何可以以一種持續的方式幫助你的客戶。 通過列表,你可以逐步建立客戶忠誠度,建立關係並保持聯繫。 你在列表中的任務是教導人們關於你所討論的主題,並對即將到來的消息產生期待。但要保持關注的焦點在客戶身上,而不是在你自己身上。記住,一個人不會永遠留在你的列表上 - 只要你能讓興趣保持高涨的時間。 那麼,你如何讓一個人首先加入你的郵件列表呢? 可以通過一個小禮物,稱為潛在客戶磁石(lead magnet),它可以是一份報告,一本免費的電子書,獨家進入高級內容,郵件課程,或者任何你可以提供的禮物。 這個概念很簡單,但構成這個機制的齒輪必須完美校準並定期進行潤滑。如果你不想在你的客戶眼中顯得業余,就不要讓任何事情隨機發生。 重要的是要提供人們所想要的。對大多數在線業務所有者來說,郵件列表被認為是業務的最重要資產,也是唯一真正屬於你的資產。 一個典型的郵件列表的使用方式 讓我們來看一個例子。這是大多數成功的博客使用的系統: 一個人從搜索引擎或Facebook進入你的網站。然後,一個彈出窗口(更或少具侵入性)出現,要求他們輸入他們的電子郵件以獲得一份小禮物。然後你將通過電子郵件發送禮物給他們,然後這個人進入一個週期,在這個週期中,他們將在一段時間內被提供各種產品。 通常,當一個人加入你的列表時,他們會進入一個被稱為漏斗的階段。漏斗是一個自動化的加熱過程,通過一系列的電子郵件將人們從無關緊要的訪客轉變為潛在客戶。 一旦人們註冊,他們就會收到一封電子郵件。第二天他們會收到另一封郵件,3天後又會收到另一封郵件,一切都根據預先確定的邏輯。 通常,這些郵件系列在7-8封郵件後結束,故事被講述完畢,最後將向他們提供購買產品的機會。如果該人沒有立即購買,郵件仍然會繼續流動,直到自動序列結束。 有很多不同類型的序列類型,通常人們不會發明任何新的。他們使用經過充分測試的系統(一旦你經過訓練,你就可以很容易地識別出來)。 一旦這個序列結束,人們的郵件會被放在另一個序列或通用的列表中,不再自動化。然後,負責管理列表的人(例如你)會不時發送更新郵件,比如每個月一次,以確保這個人不會忘記他們。 簡而言之,列表的作者試圖銷售一個產品,但如果接收者不購買,他們仍然會留在列表中直到他們取消訂閱。因為你永遠不知道-將來他們可能決定購買並成為客戶。 如何使用郵件列表 當然,對於列表有幾種不同的方法。讓我們看一些你可以在你的情況下應用的情況。 如果你銷售一本電子書:你的用戶因此是你的讀者。你可以在你的網站上添加一個鏈接,並使用一本你知道用戶感興趣的主題的免費電子書作為潛在客戶磁石。 在列表上,你最初可以推銷其他你已經編寫的電子書。然後,你可以將這個人放入每月的郵件列表中,你將在其中發布與主題相關的有趣鏈接,並不時推銷你的新電子書。 如果你銷售一個產品:對於信息產品而言,這是博客上使用的典型例子的過程。也許作為潛在客戶磁石,你使用一章或多章,或者你有一個與主題相關的視頻或其他東西。 如果你有一個軟件產品:列表可以由所有直接購買你的軟件的人組成,這樣你就能得到他們的電子郵件。或者你可能希望他們為你的應用程序註冊。 你可以使用列表來共享更新,通知最新版本,與其他開發人員交叉宣傳,並提高對你將來將要建立的新產品的知曉度。 如何管理你的郵件列表 要管理郵件列表,你需要專門的軟件。 有很多不同類型的電子報管理工具。 有些很簡單,有些對於你的需求來說過於複雜。你只需要找到適合你的完美工具。 我想要首先區分一下自助託管軟件與SAAS之間的差異。Sendy(https://sendy.co)是一個自助託管軟件的例子。你不需要支付月費來使用它,但你需要管理自己的服務器,並且需要使用一個服務(通常是AWS)來實際發送郵件。 ConvertKit是一個基於SAAS的工具的例子。你需要每月支付他們費用,他們會照顧一切。 這個工具特別針對博客作者,而且它的做工真的很好。我已經使用它差不多2年了,感覺真的很棒。 最近我轉移到了Sendy,自由託管我的通訊,因為在某個時候,對我來說價格是不可持續的。 起初,我肯定會推薦ConvertKit。如果對你來說這對你很有價值,每月支付29美元或49美元的費用並不需要過多考慮。 但我的列表變得足夠大,我不願意花很多錢在郵件列表的託管軟件上。 而且它是一個商業工具:我知道有一些表現出色的博客作者擁有龐大的觀眾群,他們使用它來管理數十萬人的列表,我相信這樣做的投資回報(ROI)絕對值得不必管理自己的服務器。 尤其是如果你是新手管理服務器。 當然,ConvertKit並不是唯一的服務。還有Mailchimp,Drip和其他服務。 有些工具可以免費開始使用。我想到的是TinyLetter(https://tinyletter.com/)。這是我一開始使用的工具,在我有幾百位訂閱者之前。然後我轉到了一個叫做ButtonDown的工具,然後我逐漸向前發展。 保持活躍 就像博客文章的頻率和一致性一樣,我對郵件列表的最好建議是要保持一致。 你每2週寫一次嗎?很好,繼續這樣做。 你每個月寫一次嗎?很好,繼續這樣做。 確切的頻率是非常個人的。有些人為每篇他們在博客上發表的帖子寫一封新郵件。 有些人每個月發送一次郵件,列出全部帖子的列表。然而,如果你每個月只寫一次,人們可能會忘記你是誰。這種情況發生在我身上:如果你不經常給我發電子郵件,我可能會訂閱一封電子報,然後忘記了。 因為我每天發一篇文章,我發現每周一次,每週二發一封郵件,我始終保持這個頻率。 人們了解星期二是“我發電子郵件的”那一天。 潛在客戶磁石(lead magnet) 我們討論了擁有一個電子報的重要性。同樣重要的是,需要有人報名成為你的電子報訂閱者。 您如何讓人們決定給您這麼寶貴的東西,比如它們的電子郵件地址? 我所知道的最好方法是給予他們一些回報。不要指望人們在沒有明確回報的情況下註冊 你需要為人們提供一個加入你的電子報的動機。 這就是我們之前簡短討論過的潛在客戶磁石。 它可以是一頁PDF的秘訣表,一份報告,一個由10個視頻組成的短小迷你課程,基於郵件的課程。 當談到潛在客戶磁石時,天空才是極限。 而且你不應該只有一個潛在客戶磁石的原因。你可以有多個。 在理想情況下,每個博客文章都應該有一個特定的潛在客戶磁石,但這當然不總是可能的。我傾向於為我正在寫的每個類別的帖子創建一個潛在客戶磁石。 我是如何發現潛在客戶磁石的 在我開始我的博客之旅的初期(大約2年多前),我的博客完全沒有流量,Google忽略了我。...

部署 PHP 應用程式

當你有一個準備好的應用程式時,就該部署它並讓它可以從網上任何地方存取! PHP 是在網上部署方面,擁有最佳成敗故事的程式語言。 相信我,其他每一種程式語言和生態系統都希望自己和 PHP 一樣容易。 PHP 的優點、它準確理解並允許取得這令人難以置信的成功,是即時部署。 你把一個 PHP 檔案放在 Web 伺服器服務的資料夾中,它就能正常運作了。 不需要重新啟動伺服器,執行可執行檔,什麼都不需要。 這仍然是眾多人的做法。你以 3 美元每月租用一個共享主機,透過 FTP 上傳檔案,完成。 然而,如今我認為 Git 部署是每個專案都應該內建的東西,而共享主機應該過時了。 其中一種解決方案是始終擁有自己的私有 VPS(虛擬私有伺服器),你可以在 DigitalOcean 或 Linode 等服務中取得。 但是管理自己的 VPS 可不是開玩笑的,它需要嚴重的知識和時間投資,以及持續的維護。 你還可以使用所謂的 PaaS(平台即服務),這些平台專注於處理所有煩人的事情(伺服器管理),你只需上傳應用程式,它就運行起來。 像 DigitalOcean App Platform(不同於 DigitalOcean VPS)、Heroku 和許多其他平台均非常適合進行初步測試。 這些服務允許你連接 GitHub 帳號,每次將變更推送到你的 Git 儲存庫時都會部署。 參考 從零開始設定 Git 和 GitHub 這比 FTP 上傳更好的工作流程讓我們一起來做一個極簡的示例。 我建立了一個簡單的 PHP 應用程式,只有一個 index.php 檔案: <?php echo 'Hello!'; ?> 我在 GitHub Desktop 應用程式中添加了上層資料夾,初始化了一個 Git 倉庫並且將它推送到 GitHub: 現在請前往 digitalocean....

部署專案的最佳平台是什麼?

你已經建立了一個很棒的應用程式。 現在是把它放在網絡上,讓所有人都能對你的作品感到驚嘆的時候了。 然而,這裡有個問題:要放在哪裡? 你的應用程式應該部署在哪裡? 有很多不同的選擇,取決於專案的範圍、其野心以及你想花多少錢。 讓我們從「玩具專案」選項開始,這對於展示和試驗新功能非常完美。 一個選擇是 Replit。它就像是一個遊樂場。Replit 提供無限應用程式,但每個應用程式在資源使用方面(CPU、RAM)有限制,但對於測試專案來說很好。每個應用程式都可以在 repl.co 子域上獲得獨立的 URL。 你可以從預先製作的範本開始,安裝套件,使用任何程式語言(如Python,Node,Java,C#,Bash等)。還可以輕鬆地fork其他人的 repls。 另一個選擇是 Glitch。 Glitch 是一個非常適合 Node.js 應用程式和簡單網站的遊樂場。免費應用程式在休眠 5 分鐘後休眠,但編輯器非常好用,而且它們還提供大量可複製的應用程式。而且你還可以獲得一個不錯的 URL。這是一個非常有創意的平台。 對於快速展示和為教程提供遊樂場,我會使用這些選項之一。 現在是談論更嚴肅事物的其他選項的時候了。 一個選擇是 Vercel。Vercel 較不像一個遊樂場,更像是一個嚴肅的選項。他們的愛好者計劃很慷慨,而且你還能獲得一個漂亮的子域名,vercel.app。如果你使用 Next.js,這將非常有用,因為他們造了這個框架。 另一個選擇是 Netlify,我推薦 Netlify 來托管靜態網站。他們有一個很棒的免費計劃。沒有後端,但你也可以使用函數來執行一些無服務器函數。非常酷。 另一個選擇是 CloudFlare Pages。它與 Netlify 工作方式相似,但他們有無限的頻寬。沒有後端,但可以使用靜態網站(他們有函數)。 另一個選擇是 Railway。他們有一個免費的入門計劃,你可以創建多個應用程式,我發現他們的數據庫提供非常直觀,而且他們還有各種現代應用程式的範本,包括使用SvelteKit,Next,Vite,還有Rails、Discord機器人、Nuxt等。 現在我們來談談更完整的解決方案。 一個選擇是 Render,他們有一個很棒的免費計劃,包括靜態網站托管、函數(運行 Node/Python/Rust/Go/Ruby…)和免費數據庫。非常酷! 另一個選擇是 Supabase,他們有一個很棒的免費計劃,提供高達 2GB 的頻寬和1GB的文件存儲,他們真的提供了構建真實應用程式所需的一套完整服務。如果你的用量超過了免費計劃,你也可以自己託管。 一個選擇是 Firebase,它有免費計劃,提供數據庫和身份驗證等功能,非常酷!由 Google 開發。 一個選擇是 Fly.io,他們提供免費計劃,非常適合實驗。Fly.io 允許你使用他們的各種服務來構建非常酷的應用程式,包括數據庫、負載平衡、單一程式庫等等。 以上都是可供選擇的托管選項。 另一個選擇是使用自己的 VPS。 VPS 是你自己的伺服器,運行 Linux,你可以隨心所欲地使用它。 然而,這需要更大的努力,但你也可以學習到寶貴的技能,以後可以重複使用。 DigitalOcean 是我最喜歡的 VPS 供應商。他們的基本方案從每月 4 美元開始,你可以做任何想做的事情,包括 500GB 的流量、數據庫等等。...

魚殼(Fish Shell),如何避免將命令記錄到歷史記錄中

有時候你想在shell中執行一些命令,但又不希望它們被存儲到shell的歷史記錄中。 使用我預設的Fish Shell,這非常容易。只需要使用以下命令啟動一個新的shell: fish --private 然後退出shell即可。 我曾經寫過一篇關於魚殼(Fish Shell)基礎知識的文章,如果你有興趣可以試試看。我強烈推薦Fish作為首選shell,因為它易用且秉持著「它就這麼運作」的原則。