如何選擇博客的專業領域

選擇一個專業領域是定義你的網絡角落內容的一種方式。 它可以是關於你自己,你的愛好、熱情和故事。但這樣不會吸引太多人。也許一篇文章能解決他們的問題,但他們還會回來嗎?可能不會。 因為你的博客不是關於你,而是關於你的讀者。 選擇一個專業領域。一個小的主題。 比如說你是一個程序員。你可以寫一個關於C++編程語言的博客,每週寫兩篇文章,20年都寫不完題目。甚至這個專業領域可能還太廣了,並不是一個真正的專業領域。 一個更好的專業領域可以是C++嵌入式設備編程,或者使用C++建立遊戲。 然後再對這一群人進行進一步的過濾。比方說使用C++構建2D遊戲引擎。 你也可以從這個專業領域寫幾年的內容,但這一次如果有人對這個主題感興趣,他們會收藏你的網站,下載你的所有東西,因為你是專家(或者至少比他們更專業),他們可以從你這裡獲得很多價值。

學習程式設計中的悲傷之谷

我正在找一個線上學習計劃,以成為一名開發人員。 這個計劃是免費的,且組織成每週一個影片的系列。 第一個影片有50,000次觀看。 第二個影片有30,000次觀看。 第三個影片有20,000次觀看。 幾個星期過後,第13週只有8,000次觀看。 再幾個星期過後,第30週只有1,000次觀看。 這讓我思考起來。 在過去的4年裡,我開過16個線上課程。 這裡總是重複出現的模式。 第一週,大家都非常熱情,每個人都加入了 Discord(總是一個專門的 Discord),每個人都在介紹自己。 第二週,因為課程的初步材料開始展開,活動很多,人們都很興奮地開始學習。 到了第三週,參加的人越來越少,直到只有一個核心小組真正有動力並成功完成課程。 最初對每個人來說,這些都是新奇有趣的事情。這是一個很有趣的偏離你日常生活的機會。 但改變習慣是很困難的。 像一個以群體為基礎的密集課程想要時間、付出和努力。 註冊的人中有很大一部分無法完成課程。 想要註冊並學習程式設計是一回事。 真正去做它是另一回事。 無論這個計劃有多好。 有多少人擁有一個Udemy課程的作品集呢?我肯定有。我報名了很多不同的課程(不僅僅是程式設計),但其中許多我甚至沒有開始。我想我從來沒有百分之百地完成過一個課程。 購買課程很容易。 它是一個快速解決方案。 它很令人興奮。 它讓你感覺更好。 它讓你成為一個更好的人。 “我要成為一位更好的吉他手”! 這是一件很好的事情。它有激勵、啟發性,讓你夢想。 有時候我報名一個課程,是因為我想進行一個改變,無論是學習在iPad上繪畫還是彈奏鋼琴。 但之後就是真正的工作。你必須出席。這並不容易。 這就是悲傷之谷。 難的部分是度過那個階段。 然後就是一片幸福。

我在2017年成為Go開發者的計劃

我知道,現在已經是2020年了。但我在整理電腦時,偶然發現了一張2017年的思維導圖。 根據那些記錄,早在2016/2017年我就有一個目標:成為一名員工。獲得一份穩定、待遇優厚的工作,而不是當一名承包商,從事無數個副業,卻從未發展成盈利的企業。 我希望能夠以Go開發者的身份被一家公司雇用。雖然我精通PHP和JavaScript開發,但對於除了個人項目外的Go經驗一無所知。但是,我對於使用相同技術堆棧開發感到有些厭倦,想要嘗試一些新的東西。 對我來說,現在這個想法聽起來有些瘋狂,因為: 我從未做過員工 那個時候,我已經擔任自由職業者/承包商將近10年了(現在已經超過13年) 讓我不再從事自己的項目的想法對我來說很難相信 但是,對你來說,看到我是如何計劃從對Go一無所知到在幾個月內成為一家公司的Go開發者,可能會很有趣。 我買了一本關於Go的權威書籍:《The Go Programming Language》作者是Donovan和Kernighan。是的,就是那個《C語言程序設計》(K&R)的Kernighan。 這本書非常棒,強烈推薦。 我花了一個月的時間認真閱讀了每一章。每天都學到一些新知識,並將我的筆記整理成博客文章。 我每天發布博客文章,有時甚至一天發布多篇。 我在算法和算法平台上進行了一些小項目的開發。 我開始了自己的項目,它是一個很好的主意,我現在仍然這麼認為。這是一個與GitHub互動的Web應用程序,旨在幫助可視化項目隨時間的進展情況。 我使用Go來構建它,這是一個很好的學習過程。 當你在一個你對之充滿興趣的項目上工作時,學習起來比在學校裡因為獲得詢問而學習要容易得多。 我讀其他人在GitHub上的代碼。我花了幾天的時間在Go論壇上,試圖理解人們寫的內容。 我看了一些使用Go開發的熱門項目(如Docker、Kubernetes等)。 我追蹤了Go領域的每一位主要的「影響力者」,每一位在這個主題上有影響力的Twitter帳號。 我訂閱了我能找到的所有Go郵件列表。 我訂閱了所有關於Go的播客和YouTube頻道。 總之,我整天都在全身心地投入到Go中。 從早上到晚上。 這是一個很好的計劃。 在一些面試過程的後期,它算是有點成功。 但它沒有成功,也就是說我沒有被雇主聘用,因為有1個原因:我並不真正想成為一個員工。 對於自由和獨立以及建立自己的事業的渴望太強烈了,所以由自由職業者/承包商/獨立人轉變為員工的轉變失敗了。 回顧起來,我對此感到滿意。 而且,我可能無法長期成為一個員工。 我仍然了解Go,並且我真的很高興我花了那麼多時間和精力去學習。 這使我成為一個更好的開發者,無疑的。

我愛書籍

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

為什麼不應該修改 JavaScript 物件的原型

了解為什麼不應該修改 JavaScript 物件的原型,以及應該做什麼 作為程式設計師,我們必須首先學會的技能之一就是如何尋找解決方案。 Google 是你的朋友。而大多時候,一個來自 2009 年的 StackOverflow 解答能夠完美解決你在 2019+ 的問題。 在該網站或個人部落格上,有時候我會看到一些修改內建物件原型的程式碼。 就像這個例子,它擴充了 Array 物件的原型,增加了一個 insert 方法: Array.prototype.insert = function(index, item) { this.splice(index, 0, item) } 這樣一來,你可以對任何陣列調用 insert() 方法: ['red', 'blue'].insert(0, 'yellow') 這樣很方便。你不需要定義這樣的函式,也不需要擔心作用域的問題,只需將它附加到 Array 物件上,這樣每個陣列都可以使用它。 但僅僅因為你能這麼做,並不意味著你應該這樣做。 這種方法有什麼問題呢? 可能的衝突 假設你使用的一個函式庫實現了這樣的功能。而你引入的另一個函式庫也做了同樣的事情。可能這些方法稍有不同,看起來好像一切都順利,直到事情不好時。 你會有一個大問題,因為你無法修改這些函式庫,但你仍然希望使用它們。 未來護航你的程式碼 假設下一個 JavaScript 版本實作了 Array.insert 方法,但參數簽名不同。現在會發生什麼?你需要回頭重寫所有的程式碼。也許是為了一個你不再工作的客戶。 或者你可能在一個被其他人在他們自己的專案中使用的函式庫中這樣做,那就更糟糕了。 這種做法只會造成技術債務,並且很容易引發問題。 你應該做什麼? 在程式庫檔案中創建一個函式,需要時導入它。不要修改你無法控制的對象。

程式設計入門

這篇文章是一個完整的程式設計入門課程。 一般的程式設計。 在開始學習特定的程式語言之前,有一些基本概念你需要熟悉。這些概念並不依賴於特定的程式語言,但對每個開發者來說都是必要的。 如果你是程式設計的新手,這篇文章的目標是幫助你準備並提供基本的概念。 具體來說,你將學習以下內容: 什麼是電腦 什麼是程式 什麼是程式語言 作為一個程式設計師的工作 作為一個程式設計師不需要做的事情 不同的程式設計範式 可以使用的不同程式設計語言,以及應該選擇哪一個 什麼是錯誤 以及更多! 為什麼你應該成為一個程式設計師? 我教學程式設計,每天收到很多電子郵件。我和很多程式設計師和想成為程式設計師的人都有很好的交流。 我對於如何讓人們學習程式設計有一個很好的理解。 人們想要建立自己夢寐以求的應用程式。他們想要將這個項目變成現實,想要實現他們的夢想。在您的電腦或手機上運行的應用程式,創建您和朋友夢想中的遊戲! 人們想以興趣的形式學習這個技能。我與70和80歲的人交談過,他們正在學習編程。出於娛樂。享受新的挑戰。為他們的朋友創建一個應用程式。 人們想在技術方面開始一個新職業。這並不奇怪 - 程式設計作為一份工作非常有吸引力:需求量很大,工作在室內,平均工資也不錯。當然,這取決於地點和水平。你也可以遠程工作,這是我認為的一個巨大的優勢。 當然,這只是其中的3個例子。你可能有不同的需求,但無論需求是什麼,學習程式設計絕對是一個你將來希望擁有的技能。 成為一個程式設計師所需要的 你不需要成為一個計算機科學家或學習工程學,也不需要成為數學天才才能學習程式設計。 這是一個你可以隨時學習的技能,無論年齡如何,而且 - 讓我說 - 它是一個非常棒的技能。 從零開始成為一個程式設計師只需要四件事: 耐心 專注力 時間 一致性 這就是你所需要的一切。 耐心,因為每次學到一些新知識時,你需要耐心,一步一步地學習,直到能夠把知識點連接起來。 專注力,因為它絕對不是一個容易掌握的技能。 時間,因為學習需要時間。在編程方面,你有時候會卡在某些問題上,需要一些時間進行研究。一個優秀的程式設計師在思考問題的時間和編程的時間上花費的時間是相等的。 一致性,因為如果你每天都能花一點時間,比如1或2小時,學習編程,你將在短時間內成為一個優秀的程式設計師。 哦,你可能也需要一台電腦。任何適度新的電腦都足夠好,你並不需要一台高級的MacBook Pro。別把這個當作藉口:) 一台電腦如何工作?概覽 當我說電腦時,我指的是每一個可以編程的電子設備:筆記本電腦和桌上型電腦,智能手機,智能手錶,您的汽車,洗碗機,相機,甚至像狗的GPS裝置這樣的小東西。許多事物,對吧?我們周圍都是電腦。 計算機是由程序驅動的電子設備。從20世紀中葉以來,程序員一直在努力使計算機速度更快,並且更容易和更可靠地編程。 機器是愚蠢的。它們只能遵循您的指示。它們真的無法思考或做決定。它們只能遵循您的指示,所以作為一個程式設計師,您就成為了一個非常強大的人。 我們稱計算機的電子部分為硬體,程序部分稱為軟體。 當您編寫一個程式給計算機時,您提供的指令會被轉換成位元,這是電子設備可以理解的唯一內容。位元只能具有兩個值:0和1。 當您查看電腦或智能手機時,您會看到一個漂亮的界面。這是多年演變的結果。在其後,每秒執行數百萬次指令,為您提供附近最佳餐廳列表。它通過與網絡溝通實現,這是我們人類建造的最大的人工生態系統。 涵蓋計算機如何工作(以及計算機網絡)將需要很多時間。在這個簡要的概述之後,我將重點放在軟體部分上。 關於程式 現在讓我們來看看什麼是程式。你的瀏覽器(Chrome,Firefox或你使用的那個)就是一個程式。 這個網站是應用程式生成的一個程式使它成為可能。我提供內容,程式生成HTML頁面。 你的手機由一個名為iOS或Android的大型程式控制。這是一個巨大的程式,當然將其稱為程式是不公平的–它是一個集合,一個程式生態系統。我們給它取了一個名字。 你電腦上的應用程式就是程式。您手機上的應用程式也是如此。 你的汽車是由程式控制的。 程式是一組指令,程式設計師組合這些指令以使機器執行特定的操作。 通常,在執行程式之前,程式將由程式設計師進行編譯。有時候程序會由另外一個程序解譯。 比如JavaScript,它在瀏覽器中運行。在此准確的時刻,您使用的瀏覽器正在執行我撰寫的某些JavaScript代碼。 所以,這是程式的第一個主要區分:編譯和解譯。不同的程式語言將允許其中之一。 最終,程式是您用來執行特定操作的東西。它可能是幫助簡化企業管理的方式,或者通過創建最終玩家遊戲來解決的問題,比如無聊的問題。 現在我們已經定義了程式是什麼,讓我們深入了解什麼是程式設計。 什麼是程式設計 通常情況下,我們通常使用程式語言中的編碼結構指示來創建一個工作的程式。 然而,我想向這個概念引入更深的內容。 對我而言,程式設計是解決問題。因此,程式設計比您拿起鍵盤並在計算機上鍵入指令的時間要早得多。 程式設計從思考問題開始。或者這個應用程式。 當您收集需求時,與涉及到的所有人,客戶,分析所需做的所有不同事物進行對話時,程式設計開始。 程式設計是定義應用程式不需要做的事情。 在開始工作之前,程式設計是確定您的應用程式是否不可能或代價過高的地方。...

網頁開發中的縮寫

技術世界充滿了各種縮寫,很難將它們全部記住。 以下是網頁開發和相關領域中的一些常見縮寫: AI 人工智慧(Artificial Intelligence) AJAX 非同步 JavaScript 與 XML(Asynchronous JavaScript And XML) API 應用程式介面(Application Programming Interface) AWS 亞馬遜網路服務(Amazon Web Services) CD 持續佈署(Continuous Deployment) CDN 內容傳遞網路(Content Delivery Network) CI 持續整合(Continuous Integration) CLI 命令列介面(Command Line Interface) CMS 內容管理系統(Content Management System) CORS 跨來源資源共用(Cross Origin Resource Sharing) CRUD 建立、讀取、更新和刪除(Create, read, update, and delete) CSS 層疊樣式表(Cascading Style Sheets) CTA 呼籲至動作(Call To Action) DDD 領域驅動設計(Domain Driven Design) DNS 網域名稱系統(Domain Name System) DOM 文件物件模型(Document Object Model) DRY 不要重複自己(Don’t Repeat Yourself) FTP 檔案傳輸協定(File Transfer Protocol) GA 谷歌分析(Google Analytics) GCP 谷歌雲端平台(Google Cloud Platform) GNU GNU’s Not Unix(GNU’s Not Unix) GPL 通用公共許可證(General Public Licence) GUI 圖形使用者介面(Graphical User Interface) HTML 超文件標記語言(HyperText Markup Language) HTTP 超文本傳輸協定(Hyper Text Transfer Protocol) HTTPS 超文本傳輸安全協定(Hyper Text Transfer Protocol Secure) IAAS 基礎設施即服務(Infrastructure As A Service) IDE 整合開發環境(Integrated Development Environment) IE 網際網路瀏覽器(Internet Explorer)(已停止更新) IP 網際網路協定(Internet Protocol) JSON JavaScript 物件表示法(JavaScript Object Notation) KISS 保持簡單愚蠢(Keep It Simple Stupid) LTS 長期支援(Long Term Support) MDN 莫茲拉開發者網絡(Mozilla Developer Network) ML 機器學習(Machine Learning) MVC 模型-視圖-控制器(Model View Controller) MVP 最小可行產品(Minimum Viable Product) NPM Node 套件管理員(Node Package Manager) OOP 物件導向程式設計(Object Oriented Programming) OSS 開放原始碼軟體(Open Source Software) PAAS 平台即服務(Platform As A Service) PHP PHP 超文字預處理器(PHP Hypertext Preprocessor) PR 拉取請求(Pull Request) REPL 讀取-執行-輸出-環迴(Read Execute Print Loop) REST 表徵狀態傳輸(REpresentational State Transfer) RPC 遠程過程呼叫(Remote Procedure Call) SAAS 軟體即服務(Software As A Service) SEO 搜尋引擎優化(Search Engine Optimization) SFC 單檔案元件(Single File Component) SFTP 安全檔案傳輸協定(Secure File Transfer Protocol) SMTP 簡單郵件傳輸協定(Simple Mail Transfer Protocol) SPA 单页应用(Single Page Application) SQL 結構化查詢語言(Structured Query Language) SSH 安全殼層(Secure SHell) SSL 安全套接層(Secure Socket Layer) TCP/IP 傳輸控制協定/網際網路協定(Transmission Control Protocol/Internet Protocol) TDD 測試驅動開發(Test Driven Development) TLD 頂級網域(Top Level Domain) TLDR 太長不讀(Too Long Didn’t Read) VPN 虛擬私人網路(Virtual Private Network) VPS 虛擬私人伺服器(Virtual Private Server) W3C 世界廣泛網 (W3) 協會(World Wide Web (W*3) Consortium) WET 寫兩次所有(Write Everything Twice) WYSIWYG 所見即所得(What You See Is What You Get) XML 可延伸標記語言(Extensible Markup Language) XSS 跨網站指令碼(Cross Site Scripting) YAGNI 不需要就別加(You Ain’t Gonna Need It)

編碼是一門藝術

編碼是一門藝術,一種創造性的工藝,一件令人愉悅的事情。 這就是編碼的本質。 我在一所技術高中就讀,學習程式設計和電腦,然後進入計算機工程專業,但從一開始就清楚,大學教授的不是純粹的編程,而是各種工程題目,混合了一些與計算機相關的主題。 非常乾燥,我們只能在實驗室上課時學習實際編程。 缺少的是工藝部分。 人們晚上回家後繼續工作。 這就是自由軟件運動的起源,例如今天被視為理所當然的開源、GitHub、npm… 一個令人崇敬的現象。 對於許多人來說,最好的時間來編程是晚上。為什麼?我不知道。我會說對我來說也是如此。 我認為這是因為我們沒有其他要擔心的事情。不需要去杂货店或郵局。 進入“狀態”,那個你腦海中需要編寫的所有代碼都完美組織在一起的奇妙地方,你會像一位100倍效率的工程師一樣工作,因為在那個特定的時間點上,你就是。 有些人更適合早上,早上對於編碼也很有效。 我們可以強迫自己在一天的任何時間都寫代碼,但在我們最佳的時間這麼做,我們可以更高效率。 辦公室很難集中精神,但我們必須這麼做,因為我們不需要遵從腳本,我們需要找到解決問題的創造性方式。我還沒見過其他工作能讓你走進辦公室看見大家都戴著耳機,為了更聚焦而戴上。非常高強度。 有時我想,編程通常被認為是通過編程技能獲得報酬,成為程序員工作的陰暗陰影。 如果編程被視為繪畫或織毛衣一樣,那將是完全不同的感覺。這是我們晚餐後都喜歡做的事情,來娛樂自己。 這就是為什麼我喜歡像Glitch和Codepen這樣的平台,讓代碼變得很酷。特別是對於孩子和新手來說。 這也是為什麼像The Coding Train這樣的YouTube頻道如此美妙。他們讓事情變得有趣。 例如,當我聽到在工作中,程序員的生產力是基於他們寫的代碼行數時,我感到不舒服。真的嗎? 而截止日期所帶來的壓力在可能已經存在很多壓力的情況下,真的只會增加焦慮。 我並不是說您不應該成為一名程序員,對我來說這是愚蠢的。我們必須支付費用,對吧?在不發達地區,編程職業也是提高收入水平的一種很棒的方式,可以遠程工作。 但如果您唯一編程的時間是為了工作,您就無法將編程視為一門美妙的工藝,而只是作為達到目的的手段。 這很正常,我們每天只有有限的時間,您在日常工作中也可以成為一位優秀的專業人士。很多人都這樣做。我會說這裡有一個50/50的分配。 在我的職業生涯中,我討厭在編程時要追踪時間。這是一個非常愚蠢的做法,會使人感到立即處於灰色的辦公間。 有時我可能會遇到很難解決的錯誤,但由於我的經驗,我可以在10秒內修復。也許我的經驗不足,需要花4個小時去解決它,我是否需要因此獲得更多報酬? 編程也涉及關注一件事情。我可能有一個相對簡單的錯誤,但在修復它的同時,我開始改進代碼並消除一些技術債務。 這需要與提供給客戶更多價值以及附帶效益給業務的商業目標相一致。 對我來說,編程就像玩樂高積木。任何形式的編程,真的。我一段時間前買了一個Arduino套件,使這個東西工作很好,特別是因為它是一個實際的物理設備,而不只是在屏幕上運行的東西。我打算做更多這樣的事情,不是為了做任何特定的事情,而只是隨意嘗試。 企業家可能會因為“這不賺錢”這種想法而阻止內心的童心發揮。我們不要這樣做。 讓內心的童心保持快樂。

談論不同主題的寫作

我已經在這個博客上寫了很長一段時間了。在這段時間裡,我涵蓋了許多不同的主題。 回顧往事,我從一些隨機的 Web 開發主題開始,然後專注於 Go、React、Node.js、CSS、HTML、瀏覽器 APIs、Next.js、Vue.js、Svelte、數據庫、Python、Swift,甚至電子學和 C 語言。 有時候,當我有希望寫一些與我通常所寫的主題不同的內容時,我會考慮一下。 這是我的博客,它不是一本名為“Web 開發”或其他類似的出版物。 儘管如此,當你長時間寫關於一個主題時,即使是像我這樣涵蓋了廣泛範圍的主題,你也會開始覺得自己與讀者之間有一個“合約”。 如果我決定寫關於 X 的內容而讀者對此不感興趣,會發生什麼事呢?他們會停止閱讀或關注這個博客嗎?他們會取消訂閱郵件通訊嗎? 除非你完全偏離了主題,否則幾乎從不會有這種情況。 你讀到了上面的主題列表嗎?它們之間幾乎沒有什麼相關性,除了它們都與編程有關。但是一位 React 開發者對於 C 語言或 CSS 沒有興趣。 因此,廣泛的專業領域是編程,在這個領域下我可以寫關於任何事情。 如果我開始寫關於園藝、狗、或者徒步旅行之類的內容,那就不一樣了。 有時候我會談論商業方面的事情,或者內容的製作,但這些都是相關的。 我考慮過在旅行時寫一些類似“旅遊博客”的帖子,只是為了做些不同的事情。也許有一天我會寫,儘管我不想讓讀者困惑。還有 Google 啊哈哈。 對我來說,規則是寫我想寫的內容。每天寫一篇帖子是關鍵。否則我早就停下來了。如果有一天我想寫關於旅行、烹飪或其他任何事情的內容,我就會去寫。 有時候我寫一篇關於如何為數字遊牧在整個歐洲旅行期間設置我的面包車的帖子,說實話,關於這些主題我獲得了更多的回覆。也許只是因為在他們那個時代這有些不尋常。 我將來要做的一件事是開始寫關於 SwiftUI 和 iOS 開發的內容。我已經考慮了好幾個月了。其實,我想已經有幾年了。 但現在我覺得是合適的時候了。 過去,我決定寫一些我不是非常熱衷的主題,比如數據庫。我對數據庫有多少熱情呢?我開始寫了幾天後就停下來了。 但我想,我可以寫一些我對於 iOS 應用的想法,計劃階段,開發過程,上架 App Store,等等的內容,這可能是我的一部分讀者非常感興趣的內容。 也許他們也有一個 iOS 應用的想法,這可能會是他們開始的觸發點。 我是否對 Web 開發厭倦了?絕對不是。而且任何 iOS 應用也需要與 Web 或 API 相應的對應組件,所以這不意味著我會停止寫關於它的內容。 而且我喜歡 JavaScript。 我只是喜歡編程。用代碼創造事物。不管是 Web 應用、iOS 應用還是桌面應用,都無關緊要。 對我來說,改變一下我寫關於什麼的方式只是為了多元化並保持我的能量水平高。 對我來說一直都是這樣。我會工作在一個 Web 應用上,然後轉到 iOS 應用,然後再轉到 macOS 開發,然後再回到 Web 應用。...

電子學入門

介紹關於電子學的新系列 這篇文章是我想要開始關於電子學的新系列。 電子學是我非常熱衷的領域,我相信它跟程式設計非常類似。我們將輸入轉換成輸出,通過將簡單的元件結合成更複雜的結構來創建有用的系統。 這與我們在軟體程式設計中做的事情很相似,只是電子學更加實際,而且在屏幕前工作時,我們可以暫時中斷,轉而專注於讓我們能創建實際的現實世界項目的工藝中。當你加入像Arduino這樣的可編程開發板時,這就是實際的嵌入式,低層次的程式設計。 我之前有一點談論過電子學,只是不多。 特別是我在《Arduino簡介》(/arduino-introduction/)中談到了Arduino,並且我寫了一篇《Arduino程式語言簡介》(/arduino-programming-language/)的介紹。 然後,我介紹了三個熱門的開發板: Arduino Uno rev 3 Arduino Uno WiFi rev 2 Arduino MKR WiFi 1010 並且我還將Arduino與另一個非常受歡迎的設備,樹莓派進行了比較:[/arduino-vs-raspberry-pi/]。 這就是我在這個博客中關於電子學的範疇。 這些都是非常高層次的。Arduino是一個非常簡單易用的開發板,但在底層它還抽象了很多微小的細節並提供了很多內建設施。 Arduino是一個非常有趣的電子學入門點。 不過,從跟隨“點亮LED”教程到真正掌握電子學還有很長一段路要走。 這個系列的目的是,提供一個更深入的電子學探索。從一個不同角度,避免過多講解理論和數學。 抽象微小的細節,但實際應用這些概念。 為什麼要開始談論電子學?嗯,因為我喜歡談論它、閱讀它、觀看相關視頻,同時我也喜歡使用電子設備和電子元件來創造東西。 當你對電子學和電力有了基本的理解後,將會打開一個嶄新的世界。 在過去的十年裡,我們從一個將電腦安裝在桌子上的社會進化成每個人口袋中都有一台功能強大、連接到互聯網的設備。 我相信在未來,隨著5G、廉價移動網絡以及可再生能源的不斷進步,我們將完全沉浸在比今天更多的電子世界中,而理解這一切的工作原理是一種非常有價值的技能。 這是一個可以為你帶來高薪的技能,同時也是一種可以在DIY和工藝中獲得很多滿足感的技能。 自己製作設備和工具,並且看到它們在現實世界中真的工作,這讓你對自己感到非常自豪。 當然,你可能不會學會如何製作下一代iPhone,但也許你會學會如何創建一個簡化版的計算機,或者如何製作一些很酷的電路。 相比於其他更昂貴的嗜好,這是一個很廉價的選擇。 我是一個程式設計師和工程師,我在高中和大學時學過電子學,但通過這個系列,我想要重新學習電子學,從基礎知識開始,與你一同學習。 首先,我們將深入討論模擬電子學。 我們先談論一些基礎知識: 模擬與數位 電流 電壓 Vcc、接地、… 電阻 短路 你的第一個電路 使用面包板進行原型設計 使用多用表測量電壓、電流和電阻 接著,我們將深入研究電子元件: 電阻器 發光二極體(LED) 二極管 按鈕 電位計 電容器 電感器 開關 變壓器 晶體管 閘流體 七段顯示器 LED顯示器 液晶顯示器 光敏二極體 蜂鳴器和揚聲器 接下來我們將探索讓我們與外界進行接口和獲取數據的傳感器的奇妙世界,包括: 熱敏電阻 熱偶 傾斜傳感器 加速度傳感器 壓力傳感器 振動傳感器 濕度傳感器 聲音傳感器 光敏電阻 光敏閘流體 光敏晶體管 磁感應器 接近傳感器 麥克風 鍵盤 我們將學習如何使用這些傳感器以及如何使用Arduino板進行有趣的實踐:...