主頁 > 軟體設計 > “我用 72 小時復刻了一個 ClubHouse”

“我用 72 小時復刻了一個 ClubHouse”

2021-02-07 14:38:23 軟體設計

作者 | 白宦成

出品 | CSDN(ID:CSDNnews)

2021,新社交軟體的第一“戰”,Clubhouse 火爆海外,

這款語音社交 App 迅速走紅的背后,科技圈大佬、特斯拉 CEO 埃隆·馬斯克親自站臺,于不久前在 Clubhouse 上創建了一個名為「Elon Musk on Good Time」的聊天室(Room),在能容納 5000 名用戶的前提條件下,直播“房間”瞬間爆滿,

ClubHouse 因此也成了不少人討論分析的焦點,不過,可能在座的很多人都還沒玩上這款應用,因為“注冊邀請碼”一碼難求,于是,72 小時前,一位開發者自告奮勇,模仿 ClubHouse 開發一個 NESHouse ,并且將代碼開源了出來,

  • 開源地址:https://github.com/bestony/neshouse

  • 體驗地址:https://neshouse.com/admin.html

NESHouse 的作者白宦成,是一位玩播客的工程師,同時也是 Linux 中國開源社區技術負責人,我們找到了他,跟他聊了聊復刻 ClubHouse 的程序,以及從職業播客角度怎么看待這類應用,

72 小時開發挑戰的背后

Q:怎么會想到要做 72 小時的開發挑戰,之前參加過 Hackathon 型別的活動嗎?

白宦成:我自己本身是很喜歡研究新創的產品的,ClubHouse 在這幾天爆火的時候,我自己也是早早的拿到了邀請碼開始使用,在使用的程序中,覺得 ClubHouse 似乎也就這樣子,而這幾天的爆火給 ClubHouse 帶來的問題是,總是登不上去,既然登不上去,那干脆自己做一個好了!此外我和津津樂道播客的小伙伴們也想通過這個“行為藝術”來證明在云服務非常普遍化的今天,運營能力對產品成功的助力,可能會比技術能力更為重要,只要你有一個想法,盡管可以大膽的去實踐:用靠譜的云服務搭建一個最小化模型去驗證,

“就差一個程式員了”的創業笑談在今天可能就不太適用了,

而為了給自己一些壓力,我選擇了給自己訂了一個 72 小時的 Flag(為什么不是 24 小時 ?因為 24 小時我沒把握), 這樣就可以確保我在給定的時間內能開發完,

我自己經常有 Hackathon 的習慣,之前還在公司的時候,我就會選擇每周五的晚上給自己一個 Hackathon Time, 來做一些 Side Project,不過受限于時間和地點的因素,我其實沒有參加任何一個 Hackathon 活動,我更多都是自己一個人在某個特定的時間(比如周五晚上或者周六晚上),從自己的靈感庫里拿出來一個,作為本次的 Hackathon 主題,然后通宵把專案給實作出來,

Q:在技術選型的程序中,會考慮哪些因素?

白宦成:在技術選型方面,我最主要考慮的就是兩個因素:

  • 一定要快:我要做的事情是快速實作 & 從 0 到 1 ,那就決定了我的一個核心因素是足夠快,不然我花半個月時間做完,這個事情就沒有意義了,

  • 一定要新:我喜歡在 Side Project / Hackathon 中使用一些我從沒有使用過的技術堆疊,這樣可以讓我的在最快的時間內逼自己學會一個新的東西,給自己后續的開發提供能量,

其它的方面就不太是我考慮的點,因為 Hackathon 開發期間對于資源的消耗其實是有限的,成本不會太成問題,更多還是要考慮怎么又快又好的把它實作出來,

Q:NESHouse 專案中,音頻互動功能的實作是怎么考慮的?遇到什么樣的問題?

白宦成:音頻互動功能選擇了最快的方法,畢竟我想短時間內實作,之前我曾經調研過一些第三方實時音頻 SDK,對比發現,聲網的 API 相對而言比較簡潔明了,開發起來學習成本沒那么高,

在應用程序中,打個比喻,假設我們任何一個專案需要喝水(實時音頻),那聲網提供的就是自來水,水龍頭一扭,水就來了,如果沒有該 SDK,那你就需要自己挖井,然后自己裝抽水機,也不是喝不到水,只是更麻煩,不如直接接入現有的 SDK 更省心,

這樣也可以讓我更快的完成接入,把精力放在邏輯上,

比如在 NESHouse 接入音頻收聽的代碼只有 7 行代碼,

其實音頻互動的實作程序沒有遇到太多的困難,主要的困難是在不同的瀏覽器和設備的適配上,因為我做的是 Web 端的實作,依賴的是瀏覽器對于 WebRTC 的兼容,比如我在開發程序中,就發現微信的瀏覽器在接入音頻播放的時候,就不得不讓用戶主動點擊一下頁面才行,為此,我專門做了一個界面,來做微信設備上的接入,

我眼中播客與音頻社交

Q:ClubHouse 與傳統播客的思路有什么不同?是否是播客的一種進化形態?

白宦成:我自己其實對于 ClubHouse 的感覺是,它的初心可能就是想做一個線下場景的延展,譬如說疫情當下,原本我可以去線下沙龍,但現在沒有辦法去聽了,然后可以讓我在 ClubHouse 中聽,它會有一個時間限制,使得我必須在固定時間來到這個 House,才能聽這個 Club 分享的內容,但播客不同,播客沒有時間限制,我可以在任何時間來聽,

這個時間的限制決定了 ClubHouse 的現場感非常強,使用起來會需要你更有參與感,但播客不同,沒有那么多的限制,不過,ClubHouse 其實也可以當播客用,只是可能主題經常變動,如果你不介意,ClubHouse 也可以是播客,

Q:有看法認為「ClubHouse 在技術上并沒有壁壘,而主要是在運營傳播方面的成功」,你經過 72 小時的開發之后,如何看待這個應用的成功?

白宦成:ClubHouse 的開發有沒有難度?有難度,音頻社交有沒有壁壘?沒有壁壘,因為完全可以基于聲網的服務來實作,

真正的壁壘在于前期開發產品的時候,你需要權衡產品的利弊,要什么?不要什么?你在產品開發出來以后,如何獲取足夠多的 KOL ,比如 Elon Musk 這樣的人加入到社區來分享?如何讓更多的人進來玩?如何獲取足夠的資金,來支撐海量用戶進入后的運維和成本問題,

相比之下,我認為后面這些東西,才是更難的,

Q:作為資深的播客主播,和自由開發者,ClubHouse 式的音頻社交,你覺得是否會在中國形成潮流?

白宦成:我覺得還是比較難的,ClubHouse 這種方式對于大家的時間同步要求是比較高的,他可能會慢慢轉變為一個工具,當你有開線上沙龍的需求的時候,那 ClubHouse 會是一個不錯的工具,

作者介紹:白宦成,NESHouse 的作者,是一位玩播客的工程師,同時也是 Linux 中國開源社區技術負責人,GitHub ID: bestony,

程式員如何避免陷入“內卷”、選擇什么技術最有前景,中國開發者現狀與技術趨勢究竟是什么樣?快來參與「2020 中國開發者大調查」,更有豐富獎品送不停!



?小米澄清「手機不再支持GMS」;蝦米音樂正式關停;《質量效應1》DLC 因源代碼損壞而移除 | 極客頭條?一行代碼沒寫,憑啥被尊為“第一位程式員”?
?程式員硬核“年終大掃除”,清理了資料庫 70GB 空間

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/257501.html

標籤:其他

上一篇:PWM控制LED亮度變化的原理(超詳解)

下一篇:2021美賽E題題譯+思路+參考資料

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more