自訂錯誤在 JavaScript 中

JavaScript 提供了一組 8 個錯誤物件,這些物件會根據錯誤類型在 try/catch 區塊中引發。它們分別是: Error EvalError RangeError ReferenceError SyntaxError TypeError URIError 我在JavaScript errors教程中對它們進行了分析。 在這裡,我想解釋如何通過擴展基本 Error 類別來創建自己的自訂錯誤: class OutOfFuelError extends Error {} class FlatTireError extends Error {} 自訂錯誤物件能根據特定的錯誤類型以不同的方式進行處理,而不需要使用錯誤訊息來瞭解錯誤的類型。 try { // 一些程式碼 } catch (err) { if (err instanceof OutOfFuelError) { // 處理錯誤方式 } else if (err instanceof FlatTireError) { // 處理錯誤方式 } } 在你的程式碼中,自訂錯誤必須明確地拋出才能執行上述動作: try { const car = new Car() // 假設我們有一個 Car 物件 if (!car.fuel) { throw new OutOfFuelError('沒有燃料!') } if (car....

行動網路

我喜歡帶著我的車旅居旅行。 當我在路上時,我如何使用網路呢? 以下是與歐洲相關的資訊,具體還取決於網路運營商和數據方案。我會告訴你我的情況。 我住在義大利,而在歐盟內,我們有一定數量的免費漫遊數據。這意味著我在義大利可以使用n GB的數據,但在其他歐洲國家只能使用一部分。 這取決於手機運營商,我的計劃是15歐元/月,享有70GB的數據。 免費漫遊數據的計算是基於我支付的金額(不要問我為什麼),但只有8GB可用。 然後,我可以啟用一個7天3歐元的優惠,獲得另外5GB的數據。 總體來說,我一個月有28GB,花費27歐元。這對我來說挺合理。 不同的運營商肯定是不同的。 在旅行時,我的大部分數據消耗是使用地圖。我使用Mapy.cz,我可以在出發前下載所有地圖,所以在看地圖時不需要任何數據。 你也可以在Google Maps上下載非衛星離線地圖,但我覺得它的界面不如Mapy,後者允許我下載整個國家的地圖。 有時我需要使用衛星地圖去找停車場或者查看一天的路線規劃,對此沒有解決辦法。但90%的時間,我不需要衛星地圖,離線地圖就足夠。 另外一個大量消耗數據的來源就是影片。我使用Prime Video觀看電影和電視劇,我可以下載我想要離線收看的任何內容。這需要一些提前計劃,但是百分之百可行。 至於YouTube,有了YouTube Premium,我可以提前計劃,將一些想要觀看的影片加入到“稍後觀看”列表,當我有WiFi連接時,可以下載它們。 根據我的旅行地點,有時候我可以使用WiFi,例如在露營地或超市。在這種情況下,我可以使用VPN連接到公共WiFi下載數據。 在旅行中,我傾向於避免使用任何社交媒體,除非是特定用途。例如,我要去一個特定的國家,那裡有一個為露營旅行者而設的Facebook小組,閱讀其他旅行者的經歷很有趣,特別是在那些跨國邊界變得比以前更困難的時候。 除此之外,28GB差不多是每天1GB,如果不用於娛樂,對於我的工作非常足夠。在旅行中,對我來說主要是推送至GitHub、收發郵件、訪問Discord以支援我的學生。

低數據模式

iPad 上的一個功能讓我非常喜愛,就是可以將 WiFi 網絡設置為「低數據模式」。這在使用 iPhone 作為個人熱點時特別有用。 尤其在漫遊歐洲時非常非常有用。我們在其他國家有限的可使用免費數據,因此不讓 iPad 下載更新或從 iCloud 下載數據可以節省大量數據。 我希望這個功能也能出現在 Mac 上,但實際上並沒有這樣的選項。 當然,您可以使用像 Little Snitch 和其他應用程式,但老實說,我討厭總是要授予權限或拒絕權限,這只是多餘的工作。 我只想說: 不要下載操作系統更新(是的,我可以禁用它們,但那麼我就必須記得重新啟用它們) 不要在照片中下載照片和視頻 不要下載任何應用程式更新 等等。只做我想做的事情,不做任何背景中可能在我在家時有意義的事情,而我現在正在旅行中。

你在五年后的发展方向是什么?

当我还在大学时,我需要做一份实习工作,基本上就是在几个月的时间里无偿(或者只给很少的薪水)工作。 所以我去了一家公司的办公室(我唯一一次面试的现场面试),四处看了看,进行了一次小小的面试,然后被问了这个问题:“你在五年后的发展方向是什么?”。 我想我的回答大致是“肯定不会在这里”(😂),我还记得当时得到了赞许诚实的评价。 但他们没有再打电话给我 😆 我从不在乎给人留下好印象或者说好听的话,尤其是在商业环境中,不过如果你真的需要那份工作,你可能会决定这样做。 不要像我那样回答。 可以回答:“我期待与您一起成长,成为一个个人和团队的一员,并希望为贵公司的成功和扩张做出贡献,未来的20年都这样。” 但就我而言,这个问题是没有意义的。我在五年后的发展方向在哪里?嗯嗯嗯,我们来看看五年前的情况。 五年前是2016年。让我查一下我的邮件,弄清楚当时我在做什么。 在为客户构建丰富客户端JavaScript应用程序的几年后,我在经营我现在已关闭的CMS插件业务,并且在Grav兼职承包商的工作。 和我现在做的完全不同。完全不同。如果我试着想象一下2016年佛拉维奥的想法,我绝对不会想到我会在2021年成功组织JavaScript课程。 由于各种原因。当时我的Twitter有大概900个关注者,我的网站没有任何访问者,只有15篇博客文章,根本没有电子邮件通讯,没有“受众”,对于后来爆炸的“创作者经济”,我一无所知,而现在我却是其中的一份子。 如果你在2016年问我:“你在五年后的发展方向是什么?”我可能会想象出一个比当时更好的版本。比如,我的软件业务蓬勃发展,现在我有10,000欧元的月收入。或者,我为之工作的CMS公司被收购了,或者成为了用户众多,现在正在与Next.js(当时甚至不存在)竞争的公司,风险投资正在向我们投资,我现在是50人团队的首席技术官。 好吧,不是这样的,我现在正在做完全不同的事情。当时我住在GitHub的问题和社区聊天中,花了好多天时间来调试别人的代码和服务器配置,帮助其他开发人员构建他们的网站和应用程序。 今天,我很庆幸全职帮助人们成为开发人员。我喜欢这样做。 也许在五年后我会做一些完全不同的事情。或者可能会是对现状的逐步改善。比如帮助更多的人。 我甚至不再尝试去想象那个了。我一天一天地生活,尽力做到最好,不让自己过于忙碌,不做太多分散我在帮助开发人员提高工作能力这个目标的副项目。

你無法複製其他人的成功

過去我消化了很多關於創業主題的素材。我尤其對在互聯網驅動下開展數碼產品的小規模獨立企業很感興趣。 自從我結束大學以來,那就是我想做的:成為一個在數碼產品上獨立工作的企業家。 在我認識的真實世界中,我認識零個過著這種生活的人。我在學校裡認識了幾個可能只有一個广告网站的人。 我通過互聯網學到了一切。 播客、訪談、視頻、博客文章、書籍。 我這麼做已經很長一段時間了,可能最早我記得的一本書是《每週工作4小時》。從那以後,我對這個主題非常熱衷。 有幾個故事我真的深入研究過。其中一個當然是Adam Wathan,因為他在播客和博客文章中分享了他的產品發布的很多內容。 另一個是Nathan Barry在ConvertKit前的時期。 另一個是Pieter Levels。 還有最近的一個是Daniel Vassallo。 還有很多。你只需要在Google上搜索這些名字,你就會找到關於他們創造的很多東西。 今天我在看Twitter,Pieter 分享了一個消息,他說他嘗試了大約70個不同的企業,只有4個真正取得了任何進展。 🍰 在我做的70多個項目中,只有4個賺到了錢並有所發展 📉 超過95%的事情我做的都失敗了 📈 我的成功率只有約5% 🚀 所以…多船隻pic.twitter.com/oAn2rdRpFT — @levelsio (@levelsio) 2021年11月7日 這讓我想到了。我有類似的比例,也許是50比3。 我無法把過去我想到的所有點子都寫下來。太多了,而且我忘了它們。 但我可以計算一下,我花了一段時間去實踐的點子數量。它是相當大的一個數字。 在另一個推文中,Pieter基本上表示,在統計上,你可以失敗很多次,直到找到一個成功的方法。 我再進一步,我認為重要的不是你學到了什麼,而是你挑戰統計概率,嘗試很多次,你幾乎不得不靠運氣成功 https://t.co/lPIiw8dgtN — @levelsio (@levelsio) 2021年11月7日 這完全正確。我從來沒有“理解”過硅谷所希望我們相信的經典口號“快速失敗,這樣你就能從錯誤中學習”。這更多是風投的想法,“快速失敗,這樣我們就能轉向其他的賭注”。 假設我失敗了50次。從失敗中學到的東西並不多。你從小勝中學到的東西,並且隨著時間的推移,你會找到有效的方法。 有些人非常幸運,在第一次嘗試某事時取得了巨大的成功。你可能知道其中的一些故事。我也知道幾個。 但在大多數情況下,並不是這樣的。你嘗試某事,它卻沒有成功。通常,你在受到其他人故事的啟發後嘗試某事。 這是我在互聯網上分享我想法或做的事情的原因之一:讓我能夠激勵其他人采取行動。 但我最近明白了一件事。你無法複製別人的成功故事。 你可以讀一千次關於Adam Wathan如何通過他的第一本電子書賺到61,000美元的故事。 但是,當你賣出你的第一本電子書時,你將獲得截然不同的結果。 你可以讀一千次關於Pieter Levels如何建立Nomad List的故事。 但是,當你推出你的創業公司/項目時,你將獲得截然不同的結果。 你可以讀一千次關於Ali Abdaal如何成為一個擁有100萬訂閱者的YouTuber的故事。 但是,當你創建你的YouTube頻道時,你將獲得截然不同的結果。 他們是你聽到的成功故事。你聽不到其他嘗試相同事情但卻一事無成的10000個故事。 他們擁有獨特的時機因素,恰好在合適的時間出現在合適的地方,接觸到合適的人,在那個人轉推後引發了其他事件的連鎖反應等等。 試圖複製他們所做的事情是不會起作用的。 即使是在同一時間做同樣工作的人也不會得到相同的結果。 僅僅在過去的一年裡,我見證了一些人在“程式設計YouTube”上取得了巨大成功,而其他人則每週發布2個視頻,只有50次觀看。Twitter也是如此。這很隨機。 你可以付出努力、用心和努力,但仍然無法被演算法選取。 這很隨機。 我認為可以總結為在合適的時間、地點、專注於正確的事情並以恰當的方式呈現在合適的人面前。 然而,你可以做的是嘗試。 開始行動。 開始做一些事情,你無法預測那件事情將給你帶來什麼。 提前計劃也被高估了。我有一個思維導圖的計劃集合,只是提醒我那些計劃有多愚蠢,以及起初進行這些計劃是多麼的荒唐。這是一個娛樂性的工作,也是一種拖延。 同時開展多個項目。打開多扇門。 這是讓自己暴露於多種可能性中的方法。 其中之一會獲得更多的起步燃料,專注在那上面。

你應該是團隊中最差的開發人員

一些關於你的技能水平與你一起工作的人的想法 我是通過一位朋友介紹程序設計的。當時他來我家,當我們在玩Linux電腦時(應該是1997年左右),他問我:“你不知道如何編程電腦嗎?” 我回答道:“不知道”,然後他很友好地給我講解了如何在Linux上編譯C代碼的教程。 那是我對真正程式編程的第一次接觸,當然不算MIRC的修改和主題,雖然它們也算是編程,但更像是腳本。 那時的我是一個菜鳥,看到這個非常有知識的人讓我意識到自己所不知道的知識有多少。我對什麼都不懂,我只是在使用電腦,而不是編程。 然後在大學裡,我是小組裡最差的學生。要知道,這是一所工程學校,而我並不是成績優秀的學生,所以我從身邊的人那裡學到了很多,也學會了如何提升自己以達到他們的水準。比起去一所要求不高且在中等水平的學生中成為最好的學生,我覺得這樣學到的東西更多。 但是當我大學畢業後開始工作時,因為我是一個自由工作者,有時會發現自己是房間裡最好的開發人員。我積極努力避免這樣的情況。 我最喜歡的工作是和團隊合作的工作,尤其是那些每個團隊成員在某些特定技能方面都比我更優秀的工作。比如技術能力方面或是成為一個出色的團隊成員。 現在的我已經不再是團隊的一部分了,已經有2年多了。獨自工作的我必須找到一群我可以向他們學習的人。 如何做到呢? 下面是我從中學習的一些人: 播客。我訂閱了將近200個播客,並定期尋找我可以學習的話題。從技術類的JavaScript編程到數碼營銷,再到聆聽其他人在互聯網上的創業者或小型企業主的冒險故事。 博客。我讀很多關於各種主題的博客。 Twitter。我在Twitter上關注一些智者和令人難以置信的人,不論是直接關注還是使用列表。 書籍。我讀了很多關於各種主題的書籍。 YouTube。我每個星期都會花幾個小時觀看很棒的YouTube視頻,從編程螢幕錄製到JavaScript會議演講。不僅如此,我也喜歡消費很多不同的內容,包括人們在森林裡散步並談論露營之類的。 這樣子很多。我沒有列出會議或活動,因為我很少去參加。但我也忘了與人面對面的接觸,當然,這是學習的最有效方法之一。 對我作為獨立工作者而言,這種比例非常適用: 1/3 學習新的東西 1/3 實踐我所學到的東西 1/3 教授我所學到的東西 有時我學到的東西只是存儲在長期存儲中,或者僅僅將其保存在腦海中以供以後使用(因為現在可能用不到它們)。 這適用於我作為獨立工作者,因為我沒有團隊成員。這同樣適用於自由工作者,或者那些在某些他們不認識的領域中努力提高的人。 我想我想要說的是,不要只滿足於成為自己所認識的特定領域中最好的人,也不要只比周圍的人更好,這是危險的。 由於互聯網的存在,你可以很容易地接觸到無數比你更優秀的人以學習你所做的事情。

初學者程式設計師的24個提示

耐心一點。你不會學得很快,這需要時間。 聽取所有的建議,但不必全部都照著做。 嘗試忽略過多的熱情(炒作)和過多的消極情緒(例如「PHP是垃圾」- 不是真的)。 在做教程時,自己打碼,不要複製/粘貼。細微但重要的不同,在於這段程式碼是你自己的。 通過實踐學習,而不是僅僅觀察別人的實踐。找到一個問題,即使是一個簡單的問題,利用程式碼來解決。創建數不清的小型網站/應用。 開始時要先理解問題。一旦你理解了問題,編程就成為了容易的部分。 簡單優於過於複雜。不要為了可能永遠不會存在的未來編寫代碼。現在能工作的簡單代碼要比可能適用於未來情境的複雜代碼好得多。不要擔心它看起來過於簡單,不夠「工程化」。 從你感興趣的小型項目入手。做很多項目。多方面地投入大量時間用不同的東西接觸是學習的一種強制方法。 要保持一種持續性。例如每天早上6點花1小時來學習程式設計。培養這種習慣。 不要等到你符合招聘廣告上的所有要求才申請工作。你永遠不知道。同時,多申請一些職位,因為可能不會在第一次嘗試中找到適合你的最佳公司。 技能可以應用於不同的程式語言。 你永遠學不完。要時刻保持與時俱進,以免變得過時。 從不同的來源學習。 不要過分關注工具。 不要認為你需要一個學位才能成為開發人員。 每個人都會犯錯。犯錯是學習的一部分。 對於每個小問題,都可以使用Google尋找解決方案。程序員會在線上分享他們所遇到的問題和解決方案,如果沒有這樣做的話,每個人都會遇到相同的問題。他們分享解決方案,讓你可以繼續進行工作。 激情和好奇心是你工具箱中最好的工具。 找一個社區。和同行一起學習更有樂趣。 我們有許多不同的程式語言。不同的人喜歡不同的語言。此外,不同的程式語言可以做不同的事情。如果你對Python不熟悉,也許JavaScript可以。反之亦然。 當你重現在YouTube上或課程中看到的項目時,總是嘗試加入你自己的獨特視角和功能。使它成為你自己的項目。這可以成為你用於展示給潛在雇主的作品集中的項目。 練習使用「橡皮鴨」。拿一隻塑膠鴨,或者你辦公桌附近的任何東西,當你遇到問題時,向鴨子解釋問題。很多時候,問題就自己解決了。 散步或洗澡對解決問題非常有益。還有睡覺。 玩得開心!

即將開始的2023年訓練營

今天我要給大家介紹一下bootcamp.dev 2023年訓練營的最新消息。 Web Development Bootcamp 是一個為期10週的高強度網上課程,教授使用現代技術如HTML、CSS、JavaScript、Tailwind、Astro、React、Next.js等基礎的網頁開發知識。 每年我只舉辦一次訓練營,並以班級形式進行。 在2020、2021和2022年已有超過3000名學生參加訓練營,並取得了巨大成功。 我一直收到學生的郵件,告訴我這個訓練營如何幫助他們開始他們的技術職業生涯。 現在我正在努力籌備2023年的訓練營。 距離開始只有57天了,所以是時候開始準備了。 這將是第四個班級,我認為這將是有史以來最好的一屆。 這是一門針對初學者開發者的課程。 針對那些對網頁開發一無所知的人。 針對那些在某些領域有些許經驗的開發者。 但是你知道自己還沒有達到自己的潛力。 針對那些將塑造未來網頁發展的開發者。 對於那些幾乎知道如何構建網站,但想提高水平的開發者。 如果你符合以上條件,請舉手! 如果你想學習如何創建現代化的網站和應用,這門課非常適合你。 這門課也適合那些找工作的大學畢業生。 對於打算轉行成為軟件工程師並尋找工作的人來說,這門課也非常適合。 你最終能夠從事自己感興趣的領域。 能夠自己實現夢想項目。 能夠建立你的項目作品集。 學習網頁開發可以帶來無盡機會。 說實話,我不會選擇做其他事情。 請記住日期。 2023年1月24日。 設定提醒。 bootcamp.dev 更多信息即將公佈。 Flavio

完整的Git指南

Git是一個免費且開放源碼的版本控制系統(VCS),它用於跟踪文件的舊版本,可以回退並同時維護不同的版本。 Git是SVN和CVS的後繼者,這兩個是過去非常流行的版本控制系統。Git最初由Linux的創建者Linus Torvalds開發,如今已成為使用開源軟件的必備系統,你無法避免它的存在。 分佈式版本控制系統 Git是一個分佈式系統。許多開發人員可以從中央位置clone一個存儲庫,獨立地在某個代碼部分上工作,然後將更改提交回中央位置,所有人都可以更新。 Git使開發人員非常容易在一個代碼庫上同時協作,並提供了可以用來合併所有獨立更改的工具。 託管Git存儲庫的一個非常流行的服務是GitHub,特別是用於開源軟件,但我們還可以提到BitBucket、GitLab以及許多其他廣泛用於全球團隊的服務,用於公開和私有地託管他們的代碼。 如何安裝Git 在所有平台上安裝Git非常簡單: OSX 使用Homebrew運行: brew install git Windows 下載並安裝Git for Windows。 Linux 使用發行版的包管理器安裝Git,例如: sudo apt-get install git 或 sudo yum install git 如何初始化存儲庫 一旦Git安裝在系統上,可以通過鍵入git來訪問命令行。 假設你有一個干凈的文件夾。你可以通過鍵入以下命令來初始化一個Git存儲庫: git init 這個命令是做什麼的呢?它在你運行它的文件夾中創建了一個.git文件夾。如果你沒有看到它,那是因為它是一個隱藏的文件夾,在某些地方可能不會顯示,除非你設置了顯示隱藏文件夾的工具。 將文件添加到存儲庫 讓我們看看如何將文件添加到Git中。輸入以下命令: echo "Test" > README.txt 這樣就創建了一個文件。該文件現在位於目錄中,但是Git並未告訴它將其添加到其索引中,正如git status所示: 將文件添加到暫存區 我們需要用以下命令將文件添加到暫存區: git add README.txt 這樣就可以使文件對Git可見,並放入暫存區。 一旦文件在暫存區中,你可以通過鍵入以下命令將其從暫存區中刪除: git reset README.txt 但是通常情況下,一旦添加了文件,你會提交它。 如何提交更改 一旦你有一個或多個更改添加到暫存區,你可以使用以下命令提交它們: git commit -am "Description of the change" 這將清除暫存區的狀態,并將你所做的編輯永久存儲到記錄存儲中,你可以通過輸入git log來檢查它: 分支 當你向Git提交文件時,你將其提交到當前分支。 Git允許你同時在多個獨立分支上工作,這些分支代表了主分支的分支。 Git非常靈活:你可以同時擁有無數個活動分支,它們可以獨立開發,直到你想將其中一個合併到其他分支。 Git默認創建一個名為 master的分支。它在任何方面都不特別,只是最初創建的分支。...

完整指南:Go 資料結構

本週,我在這個部落格的各種文章中,發布了使用 Go 實作經典資料結構的分析和實現。 每個資料結構都在單獨的文章中進行描述,而這篇文章則作為索引。 已涵蓋的資料結構,按字母順序排列如下: 二元搜尋樹 字典 圖 哈希表 鏈結串列 佇列 集合 堆疊