GitHub開發者介紹

GitHub是一個聚集了數百萬開發者的網站,他們每天都在一起合作共同開發開源軟體。GitHub同時也是給軟體使用者報告問題的地方,它托管了數十億行程式碼。作為一個開發者,你應該了解GitHub中最重要的一些功能。 GitHub介紹 為什麼使用GitHub? GitHub問題 社交式程式碼開發 關注 星標 衍生 熱門=更好 合併請求 專案管理 比較提交 Webhooks和服務 Webhooks 服務 最後一句 GitHub介紹 GitHub是一個網站,每天都有數百萬名開發者在這裡合作共同開發開源軟體。它也是軟體使用者報告問題的地方,同時也是托管數十億行程式碼的地方。 簡而言之,GitHub是一個為開發者打造的平台,並且是基於Git的。 提示:如果你對Git還不熟悉,可以查看這個Git指南。 作為一個開發者,你每天都無法避免使用GitHub,無論是為了托管你的程式碼還是使用別人的程式碼。本文將介紹GitHub的一些重要概念,以及如何使用一些提升你工作流程的功能,以及如何將其他應用程式整合到你的開發過程中。 為什麼使用GitHub? 現在你已經知道GitHub是什麼,你可能會問你應該為什麼要使用它。 畢竟,GitHub是由一家私人公司管理的,他們從托管別人的程式碼中獲獎利潤。那你為什麼要使用GitHub,而不是類似的平台,如BitBucket或GitLab? 除了個人喜好和技術原因外,有一個重要的原因:每個人都在使用GitHub,所以它的社群效應非常巨大。 大型程式碼庫過去已經從其他版本控制系統遷移到Git,因為Git在使用上非常方便,而GitHub在Open Source社群中一直處於很好的地位(並且付出了很多努力)。 所以今天,無論你查找任何庫,你99%的機會在GitHub上找到它。 除了Open Source程式碼外,很多開發者也會因為使用GitHub上的獨特功能而在上面託管私有庫。 GitHub問題 GitHub問題是全球最受歡迎的錯誤追蹤工具之一。 它提供了一個使庫的所有者可以組織、標記和分配給里程碑的問題的功能。 如果你在由其他人維護的項目上報告問題,它會保持開放,直到你關閉它(例如,如果你找到了問題)或項目所有者關閉它。 有時你會得到結論性答案,其他時候問題會保持開放,並且會被標記一些資訊以對其進行分類。開發者可能會根據您的反饋修復問題或改進程式碼庫。 大多數開發者並不為他們在GitHub上釋出的程式碼提供支援,所以你不能指望獲得及時的回覆。但有時候開源庫是由提供相關服務的公司發布的,這些公司可能對該程式碼提供相關服務,或提供具有更多功能的商業版本,或者有一個插件架構,它們可以作為有償的開發人員工作在開源軟體上。 社交式程式碼開發 幾年前,GitHub的標誌中包含了「社交式程式碼開發」的標語。 這表示什麼,現在是否仍然相關?當然是相關的。 關注 在GitHub上你可以關注開發者,只需要進入他們的個人資料並點擊「關注」按鈕。 你也可以關注一個庫,只需要點擊庫的「關注」按鈕。 無論哪種情況,這些活動都會顯示在你的主頁上。這裡的「關注」不像Twitter上的「關注」,在這裡你可以看到人們在GitHub上做了哪些事情。 星標 GitHub最重要的功能之一是將庫加入星標。這個動作將庫加入到你的「已加星標庫」列表中,使你可以在以後找到你之前感興趣的項目。這也是其中一種最重要的評級機制,因為一個庫獲得的星星數越多,它就越重要,並且會在搜索結果中更常出現。 重要的項目有時可能會有超過7萬的星標。 GitHub還有一個trending頁面,它會顯示在一段時間內獲得最多星標的庫,例如今天、本週或本月。 進入這些熱門列表會產生其他的社交效應,比如被其他網站推薦,因為你有更多的曝光機會。 衍生 一個項目的最後重要的社交指標是fork的次數。 這也是GitHub的關鍵功能之一,因為衍生(fork)是提交合併請求(PR)的基礎,也是一個變更建議。一個人基於你的庫進行衍生,做出一些變更,然後創建一個合併請求來請求你合併這些變更。 有時候衍生的人永遠不會請求合併任何東西,只是因為他們喜歡你的程式碼,決定在它的基礎上添加一些內容,或者解決了他們遇到的某個 bug。 衍生只是將GitHub項目的文件克隆下來,不會包含原始項目的星標和問題。 熱門=更好 總的來說,這些都是項目受歡迎程度的關鍵指標,通常還與最後提交的日期、作者在問題追蹤器中的參與度一起使用,這些都是評估你是否可以依賴一個庫或軟體的有用指標。 合併請求 在介紹**什麼是合併請求(PR)**之前,我們先來看看是如何進行的。 通常,一個人會基於你的庫進行衍生(fork),做出一些變更,然後創建一個合併請求(PR)來請求你合併這些變更。 一個項目可能會有數百個合併請求,一般而言,一個項目越受歡迎,合併請求越多,就像React項目一樣: 一旦一個人提交了一個合併請求,使用GitHub界面很容易,該合併請求需要項目的核心維護者進行審查。 根據你的合併請求的範圍(變更數量、受到變更影響的事物數量、觸及的程式碼的複雜度)維護者可能需要多一點或少一點的時間來確保你的變更與該項目兼容。 一個項目可能會有明確的時間表,他們希望推出一些新的更改。當你在PR中說明了一個復雜的架構時,維護者可能希望保持事情簡單。 這可能意味著不是所有的合併請求都會被迅速接受,也不能保證合併請求會被接受。 就像我在上面發布的例子中,有一個在該庫中已經有一年半的合併請求。這在所有的項目中都會發生。 專案管理 除了問題跟蹤,GitHub界面還提供了其他旨在幫助專案管理的功能。 其中之一是項目(Project)。這在生態系統中非常新,並且使用非常罕見,但它是一個看板工具,有助於組織問題和待完成的工作。 維基(Wiki)旨在用於用戶文檔。到目前為止,我看到的使用Wiki最令人印象深刻的是Go Programming Language GitHub Wiki。...

介紹Arduino

對Arduino電子平台的總覽 Arduino是業餘電子生態系統中的一項突破性技術。 所謂的突破性並不是指它引入了一個強大的微處理器或任何相關的技術。 它實際上創造了整個行業,一個運動,在此之前並不存在。 我所說的是創客運動。在Arduino之前,電子學並不像今天這樣有趣且容易學習,周圍也沒有太多資源。我在技術高中和米蘭理工學院學習了多年的電子學,但那是一些非常嚴肅、理論性的東西,幾乎沒有程式編碼和樂趣。 Arduino誕生於意大利,來自Ivrea,這個城市也因為創造了1965年的第一台個人電腦的公司Olivetti而聞名。 Arduino從一開始就特別設計成一個學習設備。這一個簡單的事實影響了原始Arduino核心團隊所做的幾個設計選擇。 我不會深入探討歷史細節,但你可以在維基百科上自由查看它們。 Arduino的關鍵成功因素在於它完全是開源的,並且它是最早一批開源項目。硬體是開源的,軟體也是開源的。 例如,最新的Arduino Uno板,Arduino Uno Wifi Rev2的電路圖可以在線上找到。這很酷,因為你可以自己建立Arduino,如果你想的話。公司可以製造和銷售自己的Arduino克隆版,而且他們已經這樣做了。我第一個Arduino是從一家叫做Elegoo的公司買的,他們提供了令人驚喜而又便宜的套裝,裡面有很多元件和教程可以讓你入門。 此外,周圍有一個完整的工具、庫和教育資源生態系統,使它取得了巨大的成功。在此之前,像這樣的開發板要麼很難獲得,材料也太過專業,更適合技術人員而不是學生。Arduino改變了一切。官方網站https://www.arduino.cc/上充滿了學習材料、示例、教程,還有一個活躍的項目中心和社區論壇。此外,Arduino還建立了一個IoT雲平台,讓你可以將設備連接到網絡。 隨著時間的推移,Arduino團隊推出了幾款不同的開發板:Arduino Uno、Arduino Mega、Arduino Diecimila、Arduino Robot、Arduino Nano、Arduino Micro、Arduino Leonardo、Arduino MKR等等。 每個開發板都有自己的用例。例如,Arduino Nano和Arduino Micro非常適合物聯網、可穿戴設備和小型裝置。Arduino Mega具有比其他任何板子更多的記憶體和I/O引腳。 截至今天,Arduino Uno開發板是目前最受歡迎的學習板,它包含在許多套件中,並且被用於大量的教程中。 Arduino MKR WiFi 1010開發板在物聯網中得到了廣泛的應用,因為它具有內置的WiFi和藍牙功能。 Arduino沒有操作系統,它一次只運行一個程序。 你不必擔心任何其他事情,因為Arduino上除了你的程式之外沒有其他東西。 大多數Arduino開發板甚至沒有網絡連接,出廠時如此。有些開發版是有網絡連接的,比如Arduino Uno WiFi rev 2或Arduino MKR WiFi 1010。 程序加載之後,只要Arduino通過USB或電源端口通過交流-直流電源線或電池供電,它就會啟動。 這意味著一旦你加載了程序,你可以將Arduino放在山上,配備太陽能電池板和電池,它將在有電力的情況下一直運行。 它只能運行為Arduino平台編譯的程序,這主要是指使用Arduino語言編寫的程序,該語言是C++語言的一種帶有一些便利功能的版本,使初學者能夠輕松上手。 但你不僅僅局限於此。如果你可以忍受Arduino連接到計算機的USB端口(或者由樹莓派驅動連接),你可以使用Johnny Five項目在其中運行Node.js代碼,這相當酷。其他語言也有類似的工具,例如pyserial和Gobot。 Arduino有什麼用處? 首先,它非常適合學習電子學。 此外,當你想為Arduino編譯一個程序,連接一個電池或電源連接器並將其放置在某個地方運行,並且與傳感器和其他與現實世界接口的有趣的東西進行玩耍時,Arduino十分強大。 例如,我會使用Arduino來為我的自動澆水植物、追蹤室外溫度或控制家居自動化設備等等。 在不久的將來,我將製作很多項目,並將在這裡發布教程,以展示我如何構建這些東西。

從教學到自己的專案的過程

什麼時候應該從閱讀/觀看教學轉移到實際開始進行專案呢? 有人在Twitter上問我:如何從教學轉移到專案呢? 我覺得這個問題很有趣,因為我相信要真正學會一個技術,你需要用它來建立一些東西。 你不能只是閱讀教學,但是當然,一些教學仍然是必需的。 沒有人天生就會使用某個東西,除非我們被教導如何使用,或者我們深入研究了相關文件,或者在一個特殊情況下,我們瞭解該事物應該如何工作,這是我們在使用開源軟件時可以實際做到的事情(但這比較容易說得比做得好)。 每週我都會定期學習新東西,這是我的工作的一部分。這也是我喜歡做的事情。 學習新知識是我的生計。然後我使用這些知識來創建項目和軟件,或者將這項技術教授給其他人。 但是從學習一些東西到實際構建項目是具有挑戰性的。 在“閱讀/觀看X教學”和“構建下一個Airbnb”之間,沒有明確可見的界線。 教學使你達到比你起點更進階的程度。 但在某個時候,你需要開始一個項目,以跨越到下一個水平: 在“結束教學階段”和“開始項目階段”之間存在著一段神秘的間隔。 通過“項目”,我的意思也是指一個樣本網絡應用程式,用於測試你的想法,不一定是一個大型或最終的項目。 如果不進行項目,你就無法達到那個更高的水平。 著名的格言“讓你成功的東西不會讓你更進一步成功”說得很對。 你會達到遞減回報的點,如果你不停止僅僅閱讀教學,你會開始遺忘那些將要應用的知識,而你將不得不回到閱讀教學的階段: 不管怎樣,你仍然會不斷回到教學中。但是對於在項目開發過程中遇到的特定需求,你需要回顧教學。 你只需要有一個項目的想法。如果你還沒有想法,就去想一想。或者看看我的樣本應用點子清單。 從按照IKEA傢俱的逐步指示開始,到從頭開始建造自己的傢俱難嗎?當然很難。 但如果你從不開始,就永遠不會達到那個點。 給自己一些時間,然後開始做吧。