跳到主要內容

[科技]Github 用 Ruby 征服全球千萬開發者,讓 60%工程師遠端工作。


  Github 誕生於 2008 年,現在已經是全球最大的代碼託管平台。然而鮮為人知的是,他們使用的技術棧非常簡易,Ruby、Shell 和 C。並且 6 成員工遠程工作,通過 Hubot 協作。


  Sam Lambert 在 2013 年加入 Github 公司,當時的身份是公司的第一名數據庫管理員,現在已經是 Github 的技術總監 。在去年他曾接受 Derrick Harris 的 採訪 ,解釋 作為一家全球性網站,是如何通過簡單便捷的技術棧,成功支撐起超過 1000 萬用戶,超過 2500 萬項目的。

  他還談到 Github 大型的遠程工作團隊,大概有 60% 的員工通過遠程工作,利用一個叫做 Hubot 的自動化工具協作。

  在內部開發產品和各種服務時,Github 特別推崇 Unix 哲學,採用最簡單的技術,實現眾多基礎性功能,對於復雜臃腫的過度工程化深惡痛絕。對於技術和項目的選擇,更講究實用主義。

  很久以來,網站許多關鍵基礎設施,都用的是 Shell 腳本,它們很有效,多年來用著很順利。

  網站創建於 2008 年,至今已經 8 年,最初網站使用 Ruby on Rails 構建,最初的版本是由創始人自己寫的,當然 Git 部分用的是 C 語言,處理 Git 請求,數據合併等事項。

  當初所有的數據都通過 MySQL 存儲,對於臨時性質的數據,也會採用 Redis 或者是 Memcache 做緩存。

  Github 剛成立時,技術棧就這麼簡單:C,Shell,以及 Ruby。並且在做新項目地時候,也不會盲目嘗試新的工具和語言。

  隨著網站規模的壯大,Github 的開發團隊成功吸引到多名 Ruby 的核心開發者,在日後的開發過程中,繼續保持技術棧的精簡和實用。

  對於新技術的態度,Sam Lambert 表示其實工程師在工作中的自由度很高,可以試用各種新技術,只不過在實施項目時偏保守。

  有趣的是,雖然全世界一半的新項目都由 Github 託管,但事實上 Github 僅採用了為數不多的幾個技術棧。

  隨著時間的積累,Github 的用戶量爆炸性增長,後面的技術上也面臨諸多挑戰。其中最複雜的是要處理 Git 的海量請求,Sam Lambert 沒有細說具體的技術細節,但表示依然是最簡原則,不要重新發明輪子。

  一直以來,性能都是工程師不懈的追求,Github 技術團隊也是。除非這個功能足夠快,否則就不要部署。

  對於硬體奢設施,Github 沒有使用任何雲服務,而是自建數據中心,當然,為了滿足龐大的使用量,Github 相當於構建了自己的私有雲平台,Github 擁有自己的基礎設施團隊,人數不多,但可以保障 Github 的正常運行。

  隨著用戶量的增長,團隊規模也隨著擴大。和眾多創業公司一樣,Github 也面臨招聘新員工的挑戰,既要具備足夠的能力,而且要認同 Github 的文化和發展方向,為了招聘到滿足需要的人手,Github 允許員工遠程工作,這樣可以招聘到其他國家和地區的員工。

  在 Github,大概 60% 的員工遠程工作,比如 Sam Lambert 就曾經周遊世界,在不同的地方工作,Github 推崇的正是分佈式遠程工作的文化。

  為了讓世界各地的員工分工協作,Github 使用 Hubot 工具。比如可以通過聊天的方式,詢問 Hubot 現在在哪裡,Hubot 可自動回复某成員當前在世界的哪個城市,或者在辦公樓的哪一層。

  Hubot 支持好幾十個命令,可以查詢 MySQL 狀態,可以做故障切換,可以刪除數據庫表,可以備份文件,可以復制轉移,可以做幾乎所有和運維相關的事。

  除了查詢其他同事的狀態,Hubot 還能實現監控功能,比如當某個服務器出現故障,Hubot 可以自動報警。

  Sam Lambert 認為,Hubot 代表了未來互聯網公司的運作方式,他可以適應性地把服務器等基礎設施以及分佈於世界各地的員工緊密連接到一起,人與機器之間無障礙交流溝通,解決了許多傳統企業未能解決的問題。

這個網誌中的熱門文章

[娛樂]玩了多年的撲克牌,其實背後是結合工程、歷史、設計的大學問!

  全世界各地的人們都知道撲克牌,也都有和撲克牌打過交道,幾乎每個地方都宣稱撲克牌是自己的發明成果。中國人認為撲克牌最早起源於十二、十三世紀南宋時期傳出的中國的葉子戲(按照四季分為四種類別)。法國人則認為撲克牌是由塔羅牌演變而成,而英國人則表示自己是在所有經過認證的記錄資料中最早提到紙牌遊戲的國家。   現在,大家可能都知道怎樣玩「二十一點」或者是橋牌,但很少有人會靜下心來想一下,一副撲克牌其實是工程學、設計和歷史多方面融合而成的一個奇蹟。撲克牌不僅是一種休閒娛樂時的消遣工具,也是高額賭博和魔術技巧的練習和展示工具,不僅是一種數學概率模型,甚至有時候也會被當作貨幣或者是機密訊息的傳播媒介。   在這個過程中,撲克牌不同起源的獨特之處也展現了出來。撲克牌的名稱、顏色、標誌和設計根據不同的出處以及玩家不同的想法而發生變化。這一張張的圖形卡片不僅僅是玩具,或者是工具,他們更是展現不同習俗的一種文化印記:   有關撲克牌的誕生地一直眾說紛紜,外界也沒有達成一個確定的共識,但就像火藥、茶和瓷器這些發明一樣,幾乎可以肯定的是撲克牌也是起源於東方。國際撲克牌協會(IPCS)主席 Gejus Van Diggele 也表示:「學者們和歷史學家對撲克牌的確切起源存在分歧,但他們普遍認為撲克牌是由東方向西方進行擴散傳播的。」   中國唐朝時期有史料提到了一種紙牌遊戲,雖然這種遊戲更像是現在的多米諾骨牌,但專家認為這是有關紙牌最早的書面記載材料。歐洲 14 世紀末期的一些參考文獻曾提到一種「撒拉遜人(阿拉伯人的古稱)玩的遊戲」突然傳入歐洲,這表明紙牌不是來源於中國,而是來自阿拉伯半島。   此外,還有一種說法是,紙牌最早是由游牧民族從印度帶來的一種能夠預測命運的卡片,為紙牌的起源打上了更為久遠的一個印記。但無論是哪一種起源,應該都是有一定的商業契機促進了紙牌在遙遠的東方與歐洲之間的傳播,與此同時印刷技術的發展也加速了紙牌跨國界的生產和傳播。   在中世紀的歐洲,紙牌遊戲多是與喝酒、賭博還有其他的一些陋習聯繫在一起。由於紙牌遊戲傳播的廣泛性,以及它給當地所帶來的破壞性,當局決定禁止紙牌遊戲。歷史學家 Michael Dummett 在他的《塔羅牌遊戲》一書中提到了巴黎的一項法令,禁止公民在工作日玩紙牌。後來,紙牌遊戲被教會視為異端邪說,傳教士也紛紛遊說,認為「

[遊戲]中國網友跟魔獸世界說掰了!動視暴雪分手 14 年夥伴網易,出了什麼事?

  動視暴雪上週宣布,2023 年 1 月與網易的授權合約到期後,將不再續約,終止雙方長達 14 年的合作。這代表包括《魔獸世界》、《爐石戰記》、《魔獸爭霸 III:淬鍊重生》、《鬥陣特攻》、《星海爭霸》系列、《暗黑破壞神 III》和《暴雪英霸》等熱門遊戲的中國玩家,只能放棄苦心經營的遊戲成果。   未獲動視暴雪授權續約的消息一出,網易股價在港股應聲下跌了約 11%。網易執行長丁磊回應表示,在和暴雪洽談續約的過程針對關鍵條款存在重大分歧,因此未能獲得授權續約。   不過,動視暴雪和網易在今年攜手推出的手遊《暗黑破壞神:永生不朽》,因為雙方的協議是獨立於《魔獸世界》等遊戲的授權外,因此並不影響未來在中國的發行計畫;同時原訂今年在中國推出的《魔獸世界:龍之軍團》、《爐石傳說:巫妖王進行曲》和《鬥陣特工 2》也將不受影響。   過去 14 年來,網易不僅為動視暴雪在中國發行數款熱門長銷的 PC 遊戲,隨著手機遊戲蓬勃發展,近年更將合作領域擴展至手遊市場,合作關係十分深厚。   而從暴雪的新聞稿可見,雙方停止授權續約是因為對於協議中「符合暴雪營運原則以及對玩家、員工的承諾的條款內容未有共識」而造成,因此推測兩家大型遊戲發行公司終止主要的授權合作,與中國監管單位對科技公司內容及業務縮限有很大的關係。   中國遊戲市場才剛走出監管單位長達數月暫停審核新遊戲的狀況,這個新變化無疑是雪上加霜。   中國政府近年來雷厲風行整肅遊戲產業,不僅暫停遊戲版號審查(在中國發行遊戲必須先經過政府相關單位的內容審查核可後方可上線)、限制未成年上線玩遊戲的時間等,以嚴格的手段把控市場發行遊戲的數量及內容,對於想進入搶攻中國市場大餅的海外遊戲公司來說,更是嚴格把關,不僅一年只開放一次審核申請,在內容審核上更是掐緊遊戲商的脖子。   但就算是這樣,中國,背靠著人口優勢,遊戲產業的成長力道仍十分強勁,也讓海外遊戲商無不努力排除萬難搶佔中國市場。但若是如此,為何動視暴雪會直接放棄與網易的長期授權合作呢?   從動視暴雪的新聞稿提到「正尋找替代方案,讓動視暴雪的熱門遊戲能重回中國」可推測,動視暴雪正積極尋找替代網易的發行合作夥伴。事實上,動視暴雪過去持續透過不同的遊戲開發或發行專案,多元地與不同的中國遊戲公司合作,要找個網易的「備胎」看似不難,但實際上中國的大型遊戲公司網易、

[開發]如何讓 Unicode 圖案 (特殊符號) 在網頁上正常顯示?

展示了許多可以取代網站小圖示的 UNICODE,其優點非常顯而易見: ① 字元的傳輸量遠低於圖片的傳輸量。 ② 可以減少許多小圖示的 http 請求量。 那麼接下來的問題會是,要怎麼讓網站所使用的 UNICODE 表情圖案、特殊字元,都能讓所有訪客看到呢? ⑴ 符號數量。 符號數量越多,代表字型檔案越大。目前 Unicode 各國文字的數量太多先略過,屬於圖案的部分超過一千個,持續有新圖案推出。 ⑵ 編碼為 UTF8。 1 2 3 4 5 <!-- HTML4 --> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" > <!-- HTML5 --> <meta charset= "utf-8" > ⑶  使用方式 使用 Unicode 的話,這一切就能懶人化,先查閱 Unicode 特殊符號一覽表,找到對應的圖案,例如西洋棋黑騎士圖案,那麼在網頁想顯示的地方,直接擺上 Html 代碼: 1 &#9822; 輸入以上字元就行,但是為方便維護,建議還是將該內容直接貼上「♞」。 注意:在使用不同的字體時,渲染出來的符號可能會有所不同,因此,iOS 和 Android 將一些unicode字元轉換為表情符號。在您使用這些 unicode 字元之前,最好測試一下它們,確定不會出現在不同瀏覽器表現不同的情況出現。