或基于云的源的文檔,等等。相比于傳統(tǒng)技術(shù)而言,通 過使用在此描述的社交數(shù)據(jù)圖可提供更加高效、更好性能和/或更好縮放性的軟件開發(fā)方 案。
[0027] 圖1是根據(jù)一實施例的示例基于社交的信息推薦系統(tǒng)100的框圖。一般而言,基 于社交的信息推薦系統(tǒng)100用于使用社交數(shù)據(jù)圖來推薦與代碼在上下文上有關(guān)的信息。如 圖1所示,基于社交的信息推薦系統(tǒng)100包括多個用戶系統(tǒng)102A-102M、網(wǎng)絡(luò)104、以及多個 服務(wù)器106A-106N。用戶系統(tǒng)102A-102M與服務(wù)器106A-106N之間的通信是使用公知的網(wǎng) 絡(luò)通信協(xié)議通過網(wǎng)絡(luò)104實施的。網(wǎng)絡(luò)104可以是廣域網(wǎng)(如因特網(wǎng))、局域網(wǎng)(LAN)、另 一類型的網(wǎng)絡(luò)、或它們的組合。
[0028] 用戶系統(tǒng)102A-102M是能夠與服務(wù)器106A-106N通信的處理系統(tǒng)。處理系統(tǒng)的示 例是包括能夠根據(jù)指令集操縱數(shù)據(jù)的至少一個處理器的系統(tǒng)。例如,處理系統(tǒng)可以是計算 機、個人數(shù)字助理等。用戶系統(tǒng)102A-102M被配置成向服務(wù)器106A-106N提供用于請求存 儲在服務(wù)器106A-106N上(或可通過其他方式訪問的)的信息的請求(例如,超文本傳輸 協(xié)議(HTTP)請求)。
[0029] 例如,用戶(例如,開發(fā)者)可使用用戶所擁有的或以其他方式用戶可訪問的用戶 系統(tǒng)102上部署的客戶端(如web瀏覽器、web爬行器、或其他類型的客戶端)來發(fā)起對這 類信息的請求。根據(jù)一些示例實施例,用戶系統(tǒng)102A-102M能夠訪問由服務(wù)器104A-104N托 管(host)的域(如網(wǎng)站),使得用戶系統(tǒng)102A-102M可訪問通過所述域可用的信息。這樣 的域可包括網(wǎng)頁,所述網(wǎng)頁可作為超文本標記語言(HTML)文檔和在其中被鏈接的對象(如 文件)來提供。
[0030] 將認識到,任何一個或多個用戶系統(tǒng)102A-102M都可與任何一個或多個服務(wù)器 106A-106N通信。盡管圖1中用戶系統(tǒng)102A-102M被描繪為臺式計算機,但是相關(guān)領(lǐng)域的技 術(shù)人員將理解用戶系統(tǒng)102A-102M可包括任何啟用客戶端的系統(tǒng)或設(shè)備,包括但不限于臺 式計算機、膝上型計算機、平板計算機、個人數(shù)字助理、蜂窩電話等等。
[0031] 服務(wù)器106A-106N是能夠與用戶系統(tǒng)102A-102M通信的處理系統(tǒng)。服務(wù)器 106A-106N被配置成執(zhí)行響應(yīng)于從用戶接收到請求而提供信息的計算機程序(例如,開發(fā) 者工具)。例如,信息可包括文檔(如網(wǎng)頁、圖像、視頻文件等等)、可執(zhí)行程序的輸出、或任 何其他合適類型的信息。根據(jù)某些示例實施例,服務(wù)器106A-106N被配置成托管各個網(wǎng)站, 使得網(wǎng)站可由基于社交的信息推薦系統(tǒng)100的用戶訪問。
[0032] 出于說明性目的,第一服務(wù)器106A被示為包括信息推薦模塊112。信息推薦模塊 112被配置成使用社交數(shù)據(jù)圖來推薦與代碼在上下文上相關(guān)的信息。例如,信息推薦模塊 112能夠確定開發(fā)者執(zhí)行關(guān)于該代碼的動作。例如,信息推薦模塊112可確定開發(fā)者獲取代 碼的所有權(quán)(例如,出于寫代碼或修復(fù)代碼中的隱錯的目的)、開發(fā)者簽入代碼(例如,出于 修復(fù)影響該代碼的特征的隱錯(即使開發(fā)者不必修復(fù)該特征)的目的)、開發(fā)者滾動通過 和/或?qū)⒐鈽艘苿油ㄟ^和/或點擊在該代碼內(nèi)的一方法內(nèi)、開發(fā)者暫停在該代碼內(nèi)的一方 法上達達到閾值的時間段等。在確定開發(fā)者執(zhí)行動作之際,信息推薦模塊112可遍歷社交 數(shù)據(jù)圖來確定與該代碼在上下文上相關(guān)的信息。例如,社交數(shù)據(jù)圖可被配置成將這樣的信 息與社交聯(lián)網(wǎng)環(huán)境中的用戶關(guān)聯(lián)(例如,定義它們之間的關(guān)系)。社交數(shù)據(jù)圖可被存儲在云 中,盡管示例實施例的范圍在這一方面不受限制。
[0033] 信息推薦模塊112可確定與代碼在上下文上相關(guān)的信息的某個部分與開發(fā)者的 社交網(wǎng)絡(luò)中的用戶相關(guān)聯(lián)。信息推薦模塊112可向開發(fā)者推薦信息的該部分以相關(guān)于該代 碼來使用。將意識到,信息推薦模塊112可推薦少于以上提到的該信息部分的全部、以上提 到的部分的全部、除了以上提到的部分的其他信息等。例如,這樣的其他信息可包括從可用 數(shù)據(jù)中基于機器學習、試探法、分析等來合成的信息。例如,假設(shè)出于說明的目的,Alice和 Bob最近在操作代碼,并且Alice和Bob與Carl是朋友,開發(fā)者不知曉Carl但是Carl的簡 檔顯示他對開發(fā)者正在操作的代碼類型見解頗深。信息推薦模塊112可推薦開發(fā)者獲得來 自Carl的對該代碼的審閱并幫助自動化這么做的過程。還將意識到,信息推薦模塊112可 以是開發(fā)者工具(或可以被包括在開發(fā)者工具中)。還將意識到,如果將來某個人搜索一人 來提供關(guān)于代碼的代碼審閱,信息推薦模塊112則可基于開發(fā)者已經(jīng)關(guān)于該代碼執(zhí)行了在 先動作的知識來推薦開發(fā)者提供所請求的代碼審閱。用于使用社交數(shù)據(jù)圖來推薦與代碼在 上下文上相關(guān)的信息的示例技術(shù)在以下結(jié)合附圖2-6來進一步的詳細討論。
[0034] 出于說明的目的,第二服務(wù)器106B被顯示為包括社交聯(lián)網(wǎng)模塊114。社交聯(lián)網(wǎng)模 塊114被配置成提供社交聯(lián)網(wǎng)環(huán)境以及促進在社交聯(lián)網(wǎng)環(huán)境中共享興趣、活動、背景、現(xiàn)實 生活中的聯(lián)系等的用戶之間社交網(wǎng)絡(luò)的構(gòu)建。例如,每個社交網(wǎng)絡(luò)可包括社交環(huán)境中用戶 的相應(yīng)子集。每個社交網(wǎng)絡(luò)中的用戶子集可使用各種技術(shù)中的任意技術(shù)(諸如社交更新) 來通信。每個用戶可具有個人簡檔,該個人簡檔包括關(guān)于該用戶的信息和/或該用戶感興 趣的主題。社交聯(lián)網(wǎng)模塊114可將任意這樣的通信、個人簡檔信息和/或在社交聯(lián)網(wǎng)環(huán)境 中可用的其他信息提供給信息推薦模塊112以供分析。例如,社交聯(lián)網(wǎng)模塊114可將這樣 的信息提供(例如,經(jīng)由應(yīng)用編程接口(API))給信息推薦模塊112以供與社交數(shù)據(jù)圖中對 應(yīng)的一個或多個用戶相關(guān)聯(lián),但是可以意識到,社交聯(lián)網(wǎng)模塊114可將該信息與社交數(shù)據(jù) 圖中對應(yīng)的一個或多個用戶相關(guān)聯(lián)。
[0035] 出于說明的目的而非旨在限制,信息推薦模塊112和社交聯(lián)網(wǎng)模塊114在圖1中 被顯示為包括在分開的服務(wù)器(或各個服務(wù)器組)中??梢砸庾R到,信息推薦模塊112和 社交聯(lián)網(wǎng)模塊114(或它們的任意各個部分)可被包括在共同的服務(wù)器(或共同的服務(wù)器 組)中。
[0036] 信息推薦模塊112和/或社交聯(lián)網(wǎng)模塊114可用各種方式來實現(xiàn)以使用社交數(shù) 據(jù)圖推薦與代碼在上下文上相關(guān)的信息,包括可由硬件、軟件、固件或它們的任意組合來實 現(xiàn)。例如,信息推薦模塊112和/或社交聯(lián)網(wǎng)模塊114可被實現(xiàn)為被配置成在一個或多個 處理器中執(zhí)行的計算機程序代碼。在另一示例中,信息推薦模塊112和/或社交聯(lián)網(wǎng)模塊 114可被實現(xiàn)為硬件邏輯/電子電路。在一實施例中,信息推薦模塊112和/或社交聯(lián)網(wǎng) 模塊114可被實現(xiàn)在片上系統(tǒng)(SoC)中。每個SoC可包括集成電路芯片,該集成電路芯片 包括以下一個或多個:處理器(如微控制器、微處理器、數(shù)字信號處理器(DSP)等等)、存儲 器、一個或多個通信接口、和/或用于執(zhí)行其功能的進一步的電路和/或嵌入式固件。
[0037] 圖2是示出根據(jù)一實施例的基于社交的信息推薦技術(shù)的示例實現(xiàn)的圖。如圖2中 描繪的,開發(fā)者在編寫代碼208。具體而言,開發(fā)者在創(chuàng)建庫中新引擎"Engine A(引擎A)"。 基于社交的信息推薦系統(tǒng)(例如,圖1的基于社交的信息推薦系統(tǒng)100)確定開發(fā)者在創(chuàng)建 Engine A。響應(yīng)于確定該開發(fā)者在創(chuàng)建新引擎,基于社交的信息推薦系統(tǒng)遍歷數(shù)據(jù)圖202 以確定是否要向開發(fā)者推薦關(guān)于Engine A的信息。
[0038] 數(shù)據(jù)圖202包括節(jié)點204和206以及屬性212、214和216。節(jié)點204表示Alex,其 是開發(fā)者的社交網(wǎng)絡(luò)中的用戶。節(jié)點206表示引擎"Engine B",其由Alex編寫。屬性212 指示Alex已經(jīng)從社交網(wǎng)絡(luò)中的其他用戶接收到15個"贊"。屬性214指示已經(jīng)在Engine B中修復(fù)了 10個隱錯。屬性216指示Engine B已經(jīng)被下載了一百萬次??梢砸庾R到,數(shù) 據(jù)圖202不必一定包括圖2中顯示的節(jié)點204和206以及屬性212、214、216中的全部。此 外,數(shù)據(jù)圖202可包括作為在此描述的這些節(jié)點和/或?qū)傩缘难a充或替換的一個或多個節(jié) 點和/或一個或多個屬性。
[0039] 基于社交的信息推薦系統(tǒng)基于準則來確定是否要推薦被包括或引用在數(shù)據(jù)圖202 中以供相關(guān)于Engine A來使用的信息,該準則諸如該信息是否與Engine A在上下文上相 關(guān)、該信息的提供者是否在開發(fā)者的社交網(wǎng)絡(luò)中和/或其他合適的準則。在這個示例中,基 于社交的信息推薦系統(tǒng)確定Engine B與Engine A在上下文上相關(guān)并且Alex在開發(fā)者的 社交網(wǎng)絡(luò)中。因此,基于社交的信息推薦系統(tǒng)向開發(fā)者推薦Engine B。
[0040] 如以上提到的,關(guān)于是否向開發(fā)者推薦Engine B的確定可基于附加的準則。例如, 在這個示例中,對數(shù)據(jù)圖202的遍歷揭示出Alex已接收到15個"贊"、Engine B中已經(jīng)修 復(fù)了 10個隱錯以及Engine B已被下載了一百萬次。以上提到的附加準則可包括Alex所 具有的"贊"的數(shù)量是否大于第一閾值、Engine B中已被修復(fù)的隱錯的數(shù)量是否少于第二閾 值、Engine B已被下載的次數(shù)是否大于第三閾值等。
[0041] 如圖2中顯示的,出于說明的目的,向開發(fā)者推薦Engine B具有詢問210的形式。 詢問210指示Alex已經(jīng)對與開發(fā)者在其中開始編寫Engine A的庫類似的庫進行了操作, 并且詢問210詢問開發(fā)者是否想要下載Alex的庫,其包括Engine B。例如,Alex的庫可 被下載,使得開發(fā)者可用Engine B來替換Engine A或使得開發(fā)者可將Engine B用作編寫 Engine A的模板。
[0042] 圖3描述根據(jù)一實施例的用于推薦信息的示例方法的流程圖。流程圖300可以由 例