我買了bootcamp.dev

每年春天,我都會組織一個大型課程。 一個非常大的課程。我的Web 開發訓練營。 我在2020年首次組織了它。 我在2021年再次組織了它。 這兩次無論是報名人數還是對學生的成果都取得了巨大的成功,因此我決定每年都舉辦它。 這是一個為期20週的班級課程。在這裡,我會奉獻我所擁有的一切。 在這五個月裡,我們將深入探討Web 開發的基礎知識,學習純 JavaScript、React、Node.js、Next.js等等。與一個偉大的社區一起學習。 這是一個開始進入這個美妙的Web 開發世界的完美課程。 以前被稱為JavaScript 全棧訓練營,我將名字改為Web 開發訓練營,因為它不僅僅是關於JavaScript。 過去的課程版本我使用的是thejsbootcamp.com這個域名,但是我想為它找到一個新家,以適應新的名字。 昨天我在 Instant Domain Search(一個我用於搜索域名想法的很酷的網站)上隨機搜索了bootcamp.dev。我不知道為什麼,老實說。 我看到這個域名是可用的,售價為682€(全新的,未使用過)。域名續費將以相同的金額計算。 在此之前,我從未支付超過30美元的域名費用,所以這筆款項相當可觀。 然後我想起了Pieter Levels在Twitter上的一條推文,他說他花了10.2萬美元買了.com域名。Tyler McGinnis也寫道他花了2.5萬美元買了一個.dev域名。 讀到這些經歷對我很有幫助,因為現在我可以從“我支付的錢比Pieter少150倍”這個角度來思考。當然這是完全不同的情況,但它有助於產生決策思路。 我還可以讓我的會計師更開心,因為我有更多的業務開支可以扣除(作為一名數字型的獨立創業者,在歐洲,稅負很容易占到收入的50%)。 從收入角度來看,每筆業務開支實際上只需支付一半的金額,因為我可以從稅款中扣除。 這個顯著、可記憶和炫酷的域名對我課程的業務有好處。 這682€的花費將能夠讓我的課程品牌更好,從域名中去掉5個字母,獲得一個更好的名字。 而培訓營起初是由我開始的,但隨著時間的推移,它可能會成為一個獨立的大型項目。 想了個大概10秒鐘後,我立即購買了這個域名。 幾乎瞬間。因為你不能在任何地方購買.dev域名,只有幾個選擇(每個選擇價格不同,所以在購買之前多瀏覽一下)。最後我選擇了gandi.net,這似乎是一個很好的選擇。 起初,我考慮使用Google Domains,它提供了相似的價格。但是,但但但…我記得在Hacker News上的這篇文章中,有人被Google Domains禁用了,而且Google毫無支援可言,唯一的解決方案就是抱怨並在著名網站上引起注意,比如Hacker News。 這也是我有時會有的一個思考,我是否過於依賴Google?如果他們封禁我,可能不是因為我做了愚蠢的事情,而是因為他們的AI有某些原因而將我標記出來? 如果他們封禁了我的YouTube帳號,Google Domains會被禁用嗎?你不能冒這個風險與這些大型、無面孔的公司合作。你的生意可能會破產。 所以我決定從一家提供真實支援的獨立公司購買域名。Gandi看起來就是這樣的公司。嘿,至少他們有一個“聯繫我們”的頁面和聊天小工具。 這也是我從Gmail轉換到像Fastmail和Hey這樣的獨立供應商獲得其他電子郵件地址的原因之一。以防萬一出現問題,能夠有一個安全網。

我愛書籍

我擁有一個相當豐富的紙質書庫。 其中許多是關於程式設計的,我會說大概有30%。 以前我常常買關於軟體開發的書籍。我會坐火車到大城市,去我知道能找到好書的大型圖書館(還是在 Linux 還以四張 CD 的形式售賣時)。在有預算限制的情況下,書籍基本上是自學程式設計的唯一方式。 我還有相當一部分的書是關於自我提升和個人成長的。我對這個主題非常熱衷。 還有一些是關於商業的書籍。主要是小型企業和獨立運作的書籍。不過我也有一些關於常見初創企業的書籍。 還有一些書是關於有趣人物或公司的傳記或故事集。 還有一些書是關於寫作的。 還有些是關於市場營銷的。我經營一個獨立企業,對於它的存在來說,思考市場營銷是非常重要的。 幾乎沒有小說類的書籍。 我大部分的書是用英文寫的。這就是我學習英文的方式(我只在14歲開始學習英文)。 有些是大家都在談論的書,有些則是我只能買二手的書,因為它們已經絕版了。 有些書存放在我的iPad或Kindle上,但我真的非常非常喜歡有一本紙質書籍。 我喜歡把我的書放在身邊。我想看著它們。我想讓它們看著我。我希望被它們圍繞著,提醒我有很多東西需要學習和探索,而且沒有時間浪費。 我還沒有讀完我所有的書。然而,今天我又訂購了一批書。 有7本新書。其中包括獨立經營、個人財務自由、心智模型和品牌等書籍。 這次與程式設計無關,但我很快就會準備一批程式設計的書籍。程式設計的書籍更新得太快了,我認為我已經擁有了我認為是支柱的書籍。但總是會有一些我錯過的東西。 也許有一天我會在這裡開展一個「書籍」部分,發布我對最喜歡的書籍的筆記。

我過去做的所有軟體項目

我在這些年裡製作的一個漫長的軟體項目列表 備註:此列表不包括作為其他公司或個人的承包商製作的項目。只有我自己作為獨立創業家/獨立黑客/製造商而建立的項目 我15歲開始編程,現在36歲,我擁有一個漫長的項目列表,這些項目雖然最終失敗,但都有助于創造現在我這個36歲的獨立創業家的形象。 我第一次接觸編程是在Amiga上,它附帶了百科全書套件。那裡有一個叫做RexxMast的東西,你可以打開它,然后可以輸入任何東西。唯一的問題是,我不知道該輸入什麼。當時沒有互聯網可以找到教程,它不像我們今天所知道的那樣。 1997年,我成為了一個巨大的Linux粉絲,當時Linux是以4張光盤打包出售的。然而,我無法在家中從互聯網上下載它,因為我有一個33.6Kbps的連接速度,可能需要3天的時間來下載它們,而且還會占用唯一能夠聯系到別人的電話線路,此外,有時連接在下載中間就斷開了。此外,網絡合同還對我能夠使用的時間有限制(好時光!) 我開始製作一些小網站,1997年我在倫敦學英語的時候買了一本涵蓋Netscape 3.0的JavaScript巨冊,這意味著從技術上講,我是一名自20年以來使用JavaScript的開發人員(但那時候的JavaScript非常不同)。 我學習了當時非常先進的PHP 3,打印了整本參考手冊(浪費了很多紙)。我記得最後我得到了一本自印的厚厚的PHP參考書,約15cm厚。 下面是我發布的第一個項目:一個以意大利語為主題的致力於Linux的網站。我希望它成為意大利圈子的資源,而在當時的意大利圈子非常小。這個網站在我的ISP服務器上啟動,由於有一個在那裡工作的朋友(也是該項目的聯合創始人),他們支持該項目,我們最終得到了一個很好的子域名:“linux.clavis.it”。 你可以看到設計“靈感”來自Yahoo。 在這張圖片中,是1999年,該網站的訪問量為5902次(訪客計數器是一個很酷的東西,還有Webrings!)。 我記得接下來的一個項目是一個專門為編程而設的網站。我以當時在大學時學到的一些C、一些Java和一些Web內容為基礎進行創作。 在當時,我寫了幾篇文章並在論壇上分享(我記得有一篇關於AJAX的文章),結果被告知他們寫得很糟糕,所以我就停止了(我們可以談談在早期獲得良好反饋的重要性……)。 2005年,我得到了我的第一台Mac,它是一個很棒的小機器,一台入門級的12英寸iBook。如此白。如此小。如此好看。我只是喜歡這個產品,並且想在上面安裝Linux,當時我正在使用它作為桌面操作系統,但是有一位朋友在小酌之後告訴我“試試OSX,你會永遠不回頭的”。他是對的! 現在它看起來很老派,但我記得當它能夠開箱即用地說話時,它是多麼酷!花了一些時間玩OSX的“有一台可以與你交談的電腦是多麼好”的東西。 注意,14年之後,這些應用程序仍然幾乎沒有變化 - iTunes,iPhoto,iMovie,GarageBand,Mail,Safari。一個早期的OSX版本讓我買了一本巨大的二手Cocoa編程書,它太過復雜,難以消化(關於在正確的時間獲得恰當的書籍的重要性)。 我開始進入自動化領域,由於我是一位電子書收集者,我想我可以使用內容管理系統創建一個網站,通過掃描我的龐大電子書清單,從一本書中挑選一個詞語,再從另一本中挑選一個詞語,然後結合它們以形成看起來很正規但完全無法閱讀的頁面。 出乎意料的是,這個網站開始排名,我收到一封來自一位出版商的電子郵件,說我侵犯了他們書籍上的一些商標,所以我把它下線了。 無論如何,這使我接觸了內容管理系統,這也是我論文的主題。在獲得學位後不久,我開始我的公司自由職業工作。 我已經有了一個用意大利語寫的博客,我在其中寫有關Web開發的文章(循環模式在這裡……)。 這個想法是,除了做客戶工作外,還要擁有一個受眾,然後寫書。 我首先從一個高級產品開始,一個有關Joomla的網上課程。 當時還沒有真正的平台來托管課程,所以我建立了自己的平台(基於Joomla的網站)。這是一個相當複雜的網站,內含測驗、視頻播放、文字課程等。 這門課程表現不錯,但不是非常出色,但由於課程網站寫起來很麻煩,我想到了為他人建立一個平台的主意。 我寫好了這個平台,並且用它來托管我的Joomla課程,我也打算在上面開設更多課程,但是當我完成編寫軟件時,我也失去了開設課程的動力(領悟到了教訓)。 如果你讀到Joomla還在大笑,當時它是Drupal的唯一合適的替代品,Drupal是另一個重大的開源CMS。WordPress只能製作博客而已。在那時候,它還不像今天這樣強大。 我用它來托管我的博客,所以我寫了我的第一個免費WordPress插件,它是一種類似搜索引擎營銷的工具,因為它可以檢測到讓人們進入你的網站的關鍵字(當時Google免費提供給你)。根據這個關鍵字,它可以顯示不同的消息。 一種非常好的營銷工具,可以這樣說,但是沒有得到太多的關注。 過了幾年,我創建了我的第一個Joomla插件,這次是一個付費插件。它只做了一些非常簡單的事情:在註冊網站時,你需要單獨登錄,我覺得這很奇怪。我在沙發上花了1個小時寫了這個插件,然後銷售情況非常好,回報率高。 由於最初的成功,產品策略圍繞著創建一個更廣泛的插件組合展開。我發布了其中的15個(現在不再維護)。 其中之一是JooCommerce,我認為它是使用Joomla最好和最簡單的電子商務擴展。 徽標是通過99designs上的設計比賽創建的。 另一個是將Google Maps添加到您的網站的方法。 這些插件已被數千名開發人員購買。 其中許多使用Ember.js作為其管理界面,當然還使用PHP,因為它們是基於PHP CMS構建的。 我創建了大約二十多款iPhone和iPad應用和遊戲。現在我從商店上移除了所有這些應用。我記得有一個測風帆會話跟踪應用程序,還有一個海戰應用,開發它很讓人驚訝。花了無數的時間學習Objective-C和iOS。 我創建了一些關於音樂的應用程序,使用iTunes API顯示歌詞和歌曲預覽,但由於版權問題,被要求將它們刪除。 後來我使用Swift重寫了幾個應用程序,但應用程序從來沒有真正起飛。它們支付了每年的蘋果會費,也許偶爾喝杯咖啡。 然後,我決定將我的Joomla電子商務插件遷移到WordPress,因為Joomla的用戶基數正在下降,而我的插件銷售也放緩了。 我推出它時大張旗鼓,但似乎沒有人下載它,即使它是免費的,所以我在幾個月後將它刪除了。它叫CommerceKit。是個好名字,直到蘋果發布一個帶有相同名字的庫。它具有創新的方法。而所有的WP插件都在走“越來越複雜”的路線時,我追求簡單和集成。例如,不使用插件是一個重大決定。 在還沒有Electron之前,我基於Web技術棧(Ember.js和MacGap)創建和發布了半打實用的OSX應用程序,其中最著名的是一個代碼片段數據庫 一個文本記錄應用程序,一個食譜應用程序,一個設備管理應用程序(用於設備的數據庫)和一個賬單管理應用程序: 實用程序應用程序。 多年來,它們每周都能賣出幾個單位,但基本上沒有創造出重要的收入流。 當我作為Grav CMS的核心開發人員為其工作時,作為一名承包商,我將我的Joomla電子商務插件想法轉移到該CMS中,並創建了一個具有商業插件的開源電子商務插件。我稱之為GravCart: 我現在不再積極維護它,因為它的采用速度很慢,而且我也希望得到來自社區的更多合作,但這沒有發生。 我最後一個公共項目是Gitometer,一個Git存儲庫統計視覺化工具。我的想法是爲公司擁有私人部分的應用程序,並爲個人用戶提供公共部分。 它使用GitHub GraphQL API收集數據。我先用Laravel寫的,然後轉換到Go,以提高速度,但在向一些GitHub用戶介紹這個想法後,它沒有受到良好的接受,我只是用它做一些教程。 自從我上次發布公共項目已經過去了兩年,我決定停止創建有益企業的軟體項目。 超過十年後,我發現我的出路,也許真正的呼叫是教初學者我所擁有的所有知識,所以我現在專注於創建教育材料,僅供娛樂的項目,幫助他人並使他們能夠為未來創造自己的願景。 這個網站以及我的書籍和課程,基本上。

我對《專注力》這本書的筆記

在這篇文章中,我將提煉出我從卡爾·紐波特(Cal Newport)的《專注力》這本書中學到的關鍵概念。我也添加了一些我個人的觀察和經驗。 我會推薦這本書嗎? 是 書籍評分 4/5 這是一本最受推薦的書之一,也是我迄今為止讀過的最好的書之一。我讀了很多書。 這本書的總結是:要做出優秀的工作,你需要將自己置於一個能夠讓你有大量專注、無干擾和無分心的環境中。 這就是你進行深度工作的地方。 這個概念對於程序員來說非常常見。當我們在編寫程式碼時,需要將所有東西都牢記在心中,而最微小的分心都可能影響我們的工作能力。 開放式辦公室對於生產力來說並不利。我讀到有人起得很早去辦公室“在其他人到達之前工作”,或者在工作結束後在家工作,因為在工作場所有太多的干擾。 我很幸運,除了實習期外,從來沒有待過辦公室,我一直在家工作,不過這也帶來了自己的一些挑戰。 依我之見,做出優秀的工作的唯一方式就是花很多時間獨處,沒有任何可以分散注意力讓你的思緒漫遊的東西。 作為一個知識工作者,你需要一直進行這種類型的工作。你不能停止學習新事物,對吧?你總是需要這種品質時間來提升能力和事業。 這本書提出了一個很好的觀點:因特網使我們的世界變得非常小,我們與全球各地的人競爭。除非你能夠做出最好的工作,否則你注定只能平庸,否則人們將去“追隨”住在你10,000英里之外、做得比你更好的人。 已經感到焦慮了嗎?但是有一個方法:深度工作。做出出色的工作,你就會蓬勃發展,因為在這個如此容易分心和立即滿足的社會中,深度工作變得越來越稀缺。 這本書開始時定義了深度工作的三個主要特點: 深度工作是有價值的 深度工作是稀缺的 深度工作是有意義的 有價值 作為知識工作者,我們最重要的能力是知道如何快速學習和掌握新事物,並將這些知識應用於我們的專業。 沒有學習就沒有進步,我們一生都在學習。如果你十年前就停止學習手機的工作原理,你將與社會脫節。如果你停止學習工廠中更先進的設備,工廠將從業務中淘汰你。或者其他人會在那裡工作,而不是你。 這就是深度工作讓你能夠脫穎而出的地方。它讓你能夠快速、深入地學習。學習是一種需要大量專注時間的技能。專注程度越高,所需時間越少。優秀的音樂家因為過去進行的深度工作,才能夠憑藉著深度工作的成果值得買票。 如果你不進行深度工作,其他人會進行,而且在長期來看將比你更有價值。 稀缺 深度工作是稀缺的。在大公司工作的人幾乎沒有機會進行深度工作,因為這些公司的運作方式如此。太多人、太多會議、太多電子郵件和電話不讓你能夠專注。 商業世界希望我們每天都有明確、可衡量和微觀管理的步驟,我們需要儘快回復電子郵件,總的來說進行淺顯的工作,與深度工作相反。對最新的會議議程做出反應。 扮演忙碌的開發者角色。沒有辦法衡量深度工作,以及你在其中的表現如何,所以在各個層面上都在阻礙它。被人認為忙碌總比表現得無所事事要好。每天發推特20次,假裝什麼都懂,總比一個月不發推特要好。 作為遠程工作者,你可以有更多機會進行遠程工作。將連續的時間段專注於工作,關閉電子郵件,在3個小時後再度使用通訊工具。這是可行的。 像我這樣的獨立工作者就更容易做到這一點。除了回應客戶之外,我不需要回應任何人,所以我可以抽出我需要進入狀態並專注於完成我最佳工作的時間。在白天,深度工作的時間是稀缺的。你不能有8個小時的深度工作。大腦會耗竭。3個小時已經是一個很大的成就了。 作為邊緣網格工作者,我們可以做出更好的工作,更頻繁地做出更好的工作,並在整個生活中獲得比那些生活中有太多事情需要應付的人更好的結果。 有意義 我們生活在這樣一個社會中,回復20封電子郵件似乎比思考推動項目前進的策略更有生產力。這更容易衡量,也更容易滿足我們的內心,因為拖延更容易導致你轉向收件箱進行淺顯而無關緊要的工作。而這確實可以帶來即時的滿足感。 然而,這種滿足感並不持久。 深度工作可以帶來更深層次的滿足感。就像木工花幾個月時間製作一件作品,將裸死樹變成藝術品一樣,你是一個熟練的工匠,專注於讓你的工作盡善盡美本身就是一種令人難以置信的滿足感。 學會欣賞你工藝的成果和工藝本身,是開始進行深度工作的第一步。 如何進行深度工作 大腦偏向於淺顯的工作,並尋求任何可能的分心,讓你回到進行淺顯工作。 在進行深度工作之前,你需要設定一種方法來使它成為可能。有不同的方法或配置可讓你有能力進行深度工作。你需要一個儀式,而對於不同類型的人來說,適合不同生活方式的儀式也不同。 你可以永久性地消除生活中的所有干擾,這樣你就有很多時間專注於你的專業。你只做一件事,而且你做得非常出色。你刪除了所有可能分散注意力的事物。該書引用了一些作家的例子,他們只專注於寫作書籍,而不是參加會議或回復電子郵件,因為這些東西會耗竭他們的生產力。 你可以有一年中的一段時間完全專注於某件事情,然後另一段時間做其他事情。你可以定期做這樣的事情,比如夏天去小木屋。這包括去度假一個月時間來完成你幾年前開始的項目。 每天做一點點深度工作成習慣。例如,你在通常時間之前早醒2個小時,並利用這2個小時進行深度工作。這就是我通常做的事情,我每天發布一篇博客文章。這樣你就可以建立一個你不能在某段時間後打破的努力鏈,因為那將是一種遺憾。你每天寫了20天的1000個字,打破這個鏈就太可惜了。如果你能堅持下去,你很快就能寫一本書。 當你有空閒時間時,你可以擠出時間來進行深度工作。比如周末,又或者有幾個小時的閑暇,沒有固定的承諾。 不管你喜歡哪種方式,也取決於你的承諾和工作或學校的情況,你需要創造一種儀式讓你投入工作。關於這一點,有一本很好的指南書是《奇蹟早晨》。你不能只指望靈感來帶領你進行最佳的工作。你需要創造一個使這種工作成為可能的環境。例如,我使用一個名為SelfControl的應用程序封鎖所有分心的東西,需要工作時關閉設備。尼采曾說“所有真正偉大的思想都是在散步時誕生的”。他進行深度工作的方式就是散步。 這通常被推向極端,即建立一個專門的地方來進行深度工作。例如作家去小屋,甚至在自家庭院建造小木屋。你做的越多努力來建造这个小木屋,你就越有可能真正使用它。一些著名的作家也習慣去高檔酒店房間。你支付了房間費,現在你最好寫點東西。 有些人在團隊中表現最佳,尤其在進行創新工作時,所以一個好的技巧是找一些志同道合的人與你一起工作。 不要同時專注於太多任務。專注於幾個重要的任務。 保持“成績”。我的成績是我在過去30天內發布的文章數量。每天我寫一篇新的博客文章,我的成績就會增加。我不會真正追踪它,但我知道我錯過一天。 問責制也至關重要:公開工作,有公開的路線圖或發布日期,這是一個很好的幫助。我每天都發布文章,我的博客讀者是我的問責伙伴。我不能跳過一天。 休息片刻。花時間在大自然中充電。你的深度工作時間是有限的,當你耗盡了深度工作時間時,不要進行淺顯工作。 你有多少次在努力工作時去Reddit、Hacker News或你最喜歡的新聞網站,甚至在生活中的每一個微小閒暇時刻都使用智能手機。 我經常這樣做!甚至更多時間在工作困難時使用智能手機。我們經常被這些網站和工具分散注意力,它們利用了對新聞和閃亮事物的自然傾向。 接受無聊意味著我們必須再次接受無聊。要進行深度工作,我們必須首先學會不去尋找容易和淺顯的分心。 一種做法是安排分心。比如安排1小時的網絡瀏覽時間,看Reddit、YouTube,無論何時你感覺到在該時段以外進行分心,都要抵抗。 做體力活動時進行深度工作是一個很好的時間。比如遛狗,或者只是散步。我記得曾讀到史蒂夫·賈伯斯以他的長時間散步而聞名。蘋果的大多數創新可能就是這樣發生的。我認為我最好的想法都是在遛狗3-4小時的時候產生的,我使用iPhone的語音記錄器來記錄我在思考時的任何想法,因為我回家後肯定會忘記。 社交媒體是最消耗精力的事情之一。你可以很容易地花幾個小時在Facebook或Twitter上,產生爭議,表達觀點,建立人脈,隨時掌握行業新聞和趨勢。 當然,這不是深度工作。這是淺顯工作,相反的。遠離社交媒體對我們來說肯定更好,但是出於某種原因,我們從未放棄它們,很多時候因為如果沒有它們,你就會與同行甚至朋友斷絕聯繫。這種事情滲透到現代世界中。 社交媒體本質上驅使我們定期檢查它,使其成為我們一天中的定期干擾。我使用應用程序像RescueTime來知道我在電腦上浪費了多少時間,而iOS設備允許你限制在社交媒體上的時間(這是一個很棒的功能!)。有些專業職業需要使用社交媒體,因為工作就是通過它們來進行的,情況有所不同。 如果我將社交媒體存在減少到最低,並完全專注於寫博客,我仍然可以成功,但由於在遙遠的工作和沒有全球網絡上的人脈,適度使用社交媒體對於知道未來要關注的事情非常有幫助,例如。

我應該成為綜合型人才還是專精某個領域?

你有選擇的權利,可以成為專精者或者綜合型人才。那麼,你應該選擇哪條路呢? 你有選擇的權利,可以成為專精者或者綜合型人才。 讓我們用巴雷托法則來解釋一下。 專精者的意思是你的技能的80%集中在一個方面。你將80%的時間專注於該領域,並且不對該領域以外的知識感興趣。 你忽略了其他事物的99%,只為了在該特定的1%上表現出色。 綜合型人才意味著你涉及了4個不同的廣泛主題,並且你每個主題分配25%的精力。 或者你的技能在一個領域佔50%,其他兩個領域則各佔50%的時間。 如果你是一名專注於React的開發者並且只做這個,那你是一名專精者。你甚至稱自己為“React開發者”。 如果你既懂React,又懂Vue,你可以使用Figma設計頁面並將其轉化為帶有CSS的React組件,還可以將應用程序部署到Heroku,那麼你就是一名綜合型人才。 哪個更好呢? 我不知道。 有些公司只聘請專精者。如果是Google,我認為聘請一名綜合型人才毫無意義。他們擁有專門從事特定事務的團隊。 一家初創企業可能會聘請幾名綜合型人才,因為他們更具靈活性,並且能夠隨時改變重點。 我是一名綜合型人才。我是一名電腦工程師,懂得幾種不同的編程語言,對設計有一定的眼光,能夠進行一些設計,文案和營銷工作,知道如何使用Linux伺服器,能夠創建移動應用程序,Web應用程序,還能夠與嵌入式設備一起工作。 與專精人才相比,我在所有這些方面做得都相對較差。但作為一名綜合型人才,我比專精者有一個優勢:我永遠不會說“這不是我的專長”。

我應該寫註解嗎?

關於寫註解的思考,以及正確的註解方式。 我們經常被告知註解非常重要。在編程中,註解是非常重要的一部分。 作為一個初學者,很難判斷和確定你應該添加多少註解,以及在註解中該寫些什麼! 這是我的思路:你應該寫註解,但可以盡可能少寫,以解釋你的決策。 讓我們來分析一下。 你的代碼應該是自解釋的,盡可能。 像JavaScript或Python這樣的高級語言非常易讀。你可以幾乎大聲讀出代碼,並認為它是明確的英語,如果你正確命名變量和方法。 有些東西可能需要更多思考,但即使代碼有點復雜,只要程序員可以閱讀它並確定代碼的功能,就不需要註解。 當你需要解釋特定指令或代碼塊的為什麼時,你需要註解。不是什麼,這應該從代碼中推斷出來。我們稱之為高級語言,有其原因:這是我們可以思考的代碼。它不是機器語言或組合語言,後者非常難以閱讀和理解。 你的代碼中的某些塊可能需要註解來解釋其他人,甚至是你自己,為什麼要執行特定的操作。當然,並非總是需要這樣做,只有在不明顯時才需要。 即使過了六個月,如果你正在處理代碼庫的不同部分,然後回到那行代碼,你很可能不會記得在編輯它時所遭遇的所有情況。你可能能回想起你添加某些東西的90%原因,但還有那個你無法找到的其他某些東西…對於這種情況,註解會很有用。 代碼不僅僅是指令和註解。許多時候,你可以通過源代碼控制(Git)看出為什麼添加了一行代碼。你在Git應用程序中查找該行代碼,該行的歷史將告訴你為什麼你或你的同事在10個月前編輯了它。如果Git提交消息有幫助且詳細,而不僅僅是“修復錯誤”。這也是一種很好的文檔,尤其在開源項目中非常有用,因為有很多人觸及代碼庫。 如果你在求職面試中,並且你問自己“我應該在我的練習中添加註解嗎?”答案始終是是。 他們很有可能因為你的註解以及你在註解中寫的內容來評判你。 我肯定會這樣做。不管你有多麼出色的代碼編寫能力,也許公司需要在3個月內解雇你,接下來的人需要理解你的代碼,因為這是公司的資產。他們真的無法招聘一個不願意或無法對試圖閱讀源代碼的其他人有同理心的人。

沒有頻道的Discord

在過去的幾年裡,我以聊天室的形式組織了一些具有社群特色的課程。 我一直使用Discord,這對於學生來說非常好,可以建立社群。 現在我正在計劃我的下一門課程,JavaScript大師課程,我打算繼續使用同樣的方式。 今天我在閱讀這篇文章 https://becca.ooo/discord ,這篇文章討論了為何沒有頻道的Discord是有道理的。 有些事情你已經習慣於現狀,並沒有停下來思考。我總是在我的Discord社群中建立多個頻道。但是如果這一次除了general之外,我不建立任何其他頻道,也許只有一兩個實用的房間,比如一個用於公告的房間,該怎麼辦呢? 我多次注意到這一點。頻道會稀釋討論的熱情。與其讓很多人散落在許多房間裡,不如讓大家都在一個大的房間裡。 當然,有時候,尤其是開始的幾天,會有很多事情發生,非常熱鬧。但是隨著時間的推移,討論越來越少,Discord開始感覺不那麼擁擠,有時甚至感覺孤單。有些頻道完全沒有活動。有些房間的問題也未獲解答。 但是一旦建立了頻道,就無法刪除。如果你詢問,會有抵觸情緒,而且你還會丟失訊息。 但是,如果全部都在一個房間裡呢? 所有的事情都會在那裡發生,你不再需要問"我在哪裡看到的"?因為一切都在那裡,你只需要滾動或更好地組織討論串和置頂訊息。 Discord現在(從夏天開始)有了討論串。討論可以組織在討論串中而不是頻道中。 我認為這可能會改變遊戲規則。 只有一種方法可以找出答案,那就是用這種方法開始推動社群。 最初的幾天可能會很難弄清楚。但是我覺得這是理想的方式。

事件冒泡和事件捕獲

了解JavaScript中的事件冒泡和事件捕獲的工作原理 冒泡和捕獲是DOM事件用於傳播的兩種模型。 假設您的DOM結構如下: <div id="container"> <button>Click me</button> </div> 您希望在用戶點擊“button”時進行跟踪,並且有兩個事件監聽器,一個在button上,另一個在#container上。 請記住,除非您停止事件的傳播(參見後面的內容),否則對子元素的點擊事件將始終傳播到其父元素。 這些事件監聽器將按照順序調用,並且該順序由事件的冒泡/捕獲模型決定。 冒泡意味著事件從被點擊的項目(子項)向上傳播到其所有父層樹,從最近的父層開始。 在我們的示例中,button上的處理程序將在#container上的處理程序之前觸發。 捕獲則相反:外部事件處理程序在更具體的處理程序(例如button上的處理程序)之前觸發。 默認情況下,所有事件都會冒泡。 您可以通過將第三個參數應用於addEventListener並將其設置為true來選擇採用事件捕獲: document.getElementById('container').addEventListener( 'click', () => { //window loaded }, true ) 請注意,首先運行所有捕獲事件處理程序,然後運行所有冒泡事件處理程序。 順序遵循以下原則:DOM從Window對象開始,遍歷所有元素並尋找被點擊的項目。在此過程中,調用與事件關聯的任何事件處理程序(捕獲階段)。 一旦到達目標,它然後從父層樹重複此過程,直到Window對象,再次調用事件處理程序(冒泡階段)。

使用 @import 引入 CSS 檔案

學習如何使用 @import 指令引入 CSS 檔案。 從任何 CSS 檔案中,您都可以使用 @import 指令引入另一個 CSS 檔案。 以下是使用方式: @import url(myfile.css) url() 函式可以處理絕對或相對 URL。 需要注意的一點是,@import 指令必須放在檔案中的任何其他 CSS 之前,否則將被忽略。 您可以使用媒體描述符只在特定媒體上載入 CSS 檔案: @import url(myfile.css) all; @import url(myfile-screen.css) screen; @import url(myfile-print.css) print;

使用 `exports` 從 Node 文件中公開功能

如何使用 module.exports API 將數據公開給應用程序中的其他文件,或者公開給其他應用程序。 Node 具有內置的模塊系統。 Node.js 文件可以導入其他 Node.js 文件公開的功能。 當你想要導入某些東西時,你可以使用 const library = require('./library') 來導入位於當前文件夾中的 library.js 文件中公開的功能。 在這個文件中,必須先公開功能,才能被其他文件導入。 文件中默認情況下定義的任何其他對象或變量都是私有的,不會對外部世界公開。 這就是 module 系統 提供的 module.exports API 所允許的。 當你將對象或函數指定為一個新的 exports 屬性時,該對象或函數就被公開了,因此可以在應用程序的其他部分或其他應用程序中導入。 有兩種方法可以實現這樣做。 第一種是將對象分配給 module.exports,它是模塊系統提供的一個預設對象,這將使你的文件僅導出該對象: const car = { brand: 'Ford', model: 'Fiesta' } module.exports = car //..在另一個文件中 const car = require('./car') 第二種方法是將導出的對象作為 exports 的屬性添加。這種方式允許你導出多個對象、函數或數據: const car = { brand: 'Ford', model: 'Fiesta' } exports.car = car 或者直接這樣寫: exports.car = { brand: 'Ford', model: 'Fiesta' } 在其他文件中,你可以通過引用導入的屬性來使用它:...