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。...

如何在 Ghost 網站上添加搜索功能

我想在自己使用 Ghost 架設的網站上添加搜索功能。 你可以在這個頁面上看到這個教程的最終效果:https://ritywool.it/ricerca/。 當你第一次開始處理這個任務時,你會覺得 “這一定很簡單”。 但不知何故 Ghost 軟件並沒有提供一個簡單的解決方案,你需要使用第三方插件並修改模板。這確實需要一位懂得處理這些的開發者。 不知道為什麼他們沒有提供一個內建的簡單解決方案,而不是需要像我這樣的開發者花時間來調整主題。 這真是奇怪,因為他們在管理面板中有搜索功能,但卻沒有解決辦法來面對公共頁面。他們官方建議使用 Google 自定義搜索,但這實際上並不是一個解決方案。 如果是一個靜態網站生成器,這也還可以理解,因為它沒有運行搜索的引擎,但 Ghost 不是一個靜態網站生成器。 我探索了一段時間的可能選項。他們文檔中建議的一個選項是 GhostHunter,但這對我來說沒有起作用。我嘗試了一下,但在控制台中出現了各種 JavaScript 錯誤,而且我沒有耐心去看問題出在哪裡。這個項目似乎也已經被停止開發了,最後一次提交是 2 年前。 然後我找到了 Ghost Finder,這個插件完美地解決了問題,所以我在這裡解釋一下如何使用。 它是一個使用 Ghost API 來搜索文章的 JavaScript 庫。 首先,我在本地創建了網站的副本(使用 npm install ghost-cli -g 和 ghost install local),並使用了在生產環境上使用的主題。我從 /ghost/#/settings/design 下載了這個主題。 接著,我下載了 Ghost Finder 庫並將其放在 assets 目錄下。 然後,我在 Ghost 管理面板中創建了一個具有 “/search” URL 別名的 search 頁面。 然後我進入了編輯器,創建了一個 page-search.hbs 文件(後面的 - 之後的文件名必須與頁面別名匹配)。 我在命令行中使用 ghost restart 重新啟動 Ghost,以使其識別到這個頁面(這只在本地需要,生產環境上不需要)。 我使用了 Casper 默認主題,這部分可能因為你使用的主題不同而有所不同,不過我在 default.hbs 文件中加入了 Ghost Finder 的 JavaScript 文件(這會載入到所有頁面,不幸的是):...

將開發者的生活「住進車裡」

我想開始一系列關於以開發者身份過著車居生活的文章! 何謂「車居生活」,以及這與本部落格有何關聯呢? 車居生活基本上就是住在車裡的意思。之所以在這裡談論這個,是因為這是我喜歡做的一部分。我可以在任何地方工作,因此也可以在車子裡工作。這是完全可行的。 車居生活有很多不同的方式。我對於理想的車居生活有自己的想法,你也會有你自己的想法。 有些人全職住在車裡。我不是。我不是一年365天住在車裡的人。我只是用它來做短途或長途旅行。可以是一個長週末,整個星期,或連續很多週。每次都很好玩,但旅行時間越長,就越棒。我最好的旅行記憶通常都是一個月的旅行。 在這一系列的文章中,我將討論我作為一位開發者在車裡生活和工作的經歷。 談到車輛,改變你車居生活體驗的關鍵是你所選擇的車輛。 我看過各種各樣的例子。從小汽車、迷你商務車、大眾運輸車,有些有彈起蓋、有些沒有;到較大的貨車、房車,小型或非常大型的,甚至到4x4越野車。 我位於中等級別。我擁有一輛5.4米(17.7英尺)的菲亞特Ducato車,美國稱為RAM ProMaster,其他品牌也有銷售,比如雪鐵龍Jumper。本質上是相同的。 這是一個很不錯的選擇,對我來說大小正好合適。我可以把它停在任何地方,它只比SUV稍微長一點。它的高度相當高,我可以輕鬆地站著。 說到設施,它有衛生間、瓦斯爐、自來水系統、排水箱。還有桌子、床、暖氣、充足的儲存空間。當然還有電力。 稍後我會詳細描述這些東西。 這輛車不是我自己建造的,是一家德國公司進行改裝的。7年前我以二手方式購買,當時它已經使用了4年。我認為這是一筆很好的交易,基本上是新車,只有3.2萬公里,但比新車便宜得多。這不是我第一輛「移動住宅」。 對於這個領域,我不是新手。在那之前,我有一輛基於1984年福特Transit的房車,這輛車非常棒且服務我30多年。當然,一開始我還沒開過它,因為那時我才4歲,但後來我開著它遊歷歐洲。 但是…回到車上吧。 自從我買了這輛車以來的7年間,我進行了很多長途旅行。春天、夏天、秋天和冬天。我(幾乎)從不以傳統的「全然忘記一切」意義上度假。在我心目中,工作是生活的一部分,生活和工作之間沒有分離。沒有工作/生活的平衡。只有在工作是主要活動的時候,和在工作不是主要活動的時候。我熱愛我的工作,我不夢想在海灘上度過3個星期,一天工作2小時,享受餘下的時間我更願意這樣做。 大部分是因為我不是一名雇員。我是一名獨立創作者,所以我總是帶著我的Mac在身邊,在車裡工作。 稍後我會告訴你如何做到這一點。這很重要,因為如果你打算旅行時不工作,那就是度假。度假意味著你需要在出發前「收拾好」你的工作。在度假期間,你會忘記很多事情,當你回來時可能需要一兩個星期才能恢復工作效率。 但是我是一位獨立的軟體開發者,現在也是全職的教育教師和「內容創作者」,也就是博主。 提示:即使你是作為雇員工作,你也可以做到這一點。重要的是你能夠達到預期的結果,並且你在工作時間上具有靈活性。一般來說,你需要和你的雇主協商這種靈活性。過去,我通過首先設定明確的界限來做到這一點,當我作為其他公司的承包商工作時,我總是擁有靈活的工作日和工作時間。最重要的是,我總是從事以項目為導向的工作,而不是「我每天工作8小時」。 我不想計劃何時進行這些車旅行。有些人提前數月預訂他們的假期。他們在一月份就預訂了八月份前往那個時髦地中海島嶼的渡輪。但他們和我不一樣。他們知道他們的假期從8月1日到8月31日(例如)。所以,他們必須提前計劃,因為在同一時期還有很多其他人度假,可能會沒有位置讓他們上船。 我討厭這種方式。對我來說,車居生活首先是自由。我只想自由漫遊,隨心決定出發,除了大致知道我想去哪裡外,不計劃任何事情。其餘的事情隨著旅行而來。 如果預報說北方會下10天的雨,我就把車頭朝南轉。如果我計劃去滑雪,但在我預計的地方下雪不夠,或者下了1米新雪,我無法從事我喜歡的運動,那麼我就會去其他地方。 也許你對一個地方抱有夢想,但當你到達那裡時,你卻討厭它。你總是可以去另一個地方。 在我們生活的時代,這也是最安全的旅行方式。只有你自己,你有自己的浴室,你自己煮食,你可以輕鬆地自我隔離,避免與其他人有密切接觸。 車居生活,或者更好地說是擁有一輛行車工具的生活,當然並不適合每個人。但如果這對你來說合適,或者你覺得這可能適合你,請繼續閱讀。 我還有其他關於這個主題的文章: 電力/能源 水 我要去哪裡? 行動中的互聯網 冬季怎麼辦? 太陽能面板升級

對開發人員來說擁有商業思維

我認識的大多數開發人員對商業不感興趣。他們對商業一無所知,甚至連商業常識都沒有。 我認識的大部分開發人員根本不在乎商業。他們對商業毫無了解,對商業的基本概念都不懂。 其中一些在大公司工作的人認為市場營銷是邪惡的。 有些人甚至將市場營銷郵件稱為“垃圾郵件”,即使他們主動訂閱了這些郵件。 順便說一下,讓我定義一下“垃圾郵件”——這是指來自尼日利亞王子,需要幫助從銀行取得錢的不想要的郵件。或者是和這個王子一樣,擴大你的某個部位的郵件。或者是來自你不認識的女孩的郵件。或者是沒有訂閱過的,大規模發送的推廣郵件,上面沒有“取消訂閱”鏈接。這才是垃圾郵件。 不管怎麼說,我認為市場營銷是開發人員非常有用的技能。 為什麼呢?因為你作為開發人員有一個特殊的位置和非常強大的技能組合,如果你具備這些技能的話。 大多數開發人員會繼續固守“市場營銷是邪惡的”思維,永遠不會嘗試跳出由編輯器配置文件和最佳實踐構成的舒適區域。 如果你只想在由他人管理的公司工作,在鍵盤前做工作,那這沒問題。 但是如果你有一個想法,想要自己將它推向市場怎麼辦? 在這種情況下,我要說的是,如果你是一個平庸的開發人員,你平庸的市場營銷能力要比成為出色的開發人員卻一無所知市場營銷的能力要好得多。 想象一下,如果你是一個相當不錯的開發人員,同時你又能成為一個相當不錯的市場營銷人員,你可以做到什麼? 這是一個非常非常強大的技能組合。

我在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,並且我真的很高興我花了那麼多時間和精力去學習。 這使我成為一個更好的開發者,無疑的。