标签: social-networking

什么是最好的Java社交网络框架?

我想为我的公司员工和合作伙伴创建一个私人定制的社交网络,以便他们可以协作,交换消息,分享经验(活动,书籍参考等)并分组到社区.有没有人知道开始开发这个的好Java框架?

我会寻找包含基本组件的内容,例如配置文件,朋友列表,社区,事件,消息等.可以扩展每个组件以实现特定于域的功能.如果它也支持OpenSocial会很好.

java opensocial social-networking

17
推荐指数
1
解决办法
4万
查看次数

计算相似度的方法

我正在做一个社区网站,要求我计算任何两个用户之间的相似性.使用以下属性描述每个用户:

年龄,皮肤类型(油性,干性),头发类型(长,短,中),生活方式(活跃的户外爱好者,电视垃圾)等.

任何人都可以告诉我如何解决这个问题或指向我一些资源?

statistics pattern-recognition similarity data-mining social-networking

17
推荐指数
2
解决办法
9473
查看次数

活动流/源,是否反规范化?

我知道这个问题的变化已经被问了很多次之前(我看过他们,他们是2:1,2),但我不能换我的头周围任何东西,感觉就像合适的解决方案.

从多对多关系,扇出,多态关联,NoSQL解决方案,消息队列,非规范化以及它们的组合,都提出了一切建议.

我知道这个问题非常具有情境性,所以我将简要解释一下我的问题:

  • 许多活动触发了许多事件.
    • 关注,创建,喜欢,评论,编辑,删除等
  • 用户可以关注其他用户的活动(他们触发的事件).
  • 请求最多的活动将是最近发生的事件.
    • 需要查看过去事件的能力.
  • 根据日期描述,不需要对订阅源进行排序或搜索.
  • 可伸缩性是一个问题(性能和可扩展性).

对于平均时间,我结束了一个非标准化的设置基本上被由包括事件表的打算:id,date,user_id,action,root_id,object_id,object,data.

user_id是触发事件的人.
action是行动.
root_idobject属于的用户.
object是对象类型.
data包含在用户流中呈现事件所需的最少量信息.

然后,为了获得所需的事件,我只抓住所有行,其中user_id是用户的id,我们正在抓取它的流.

的工作原理,但非规范化只是感觉不对.多态关联看起来同样如此.Fanout似乎介于两者之间,但感觉非常混乱.

通过我对这个问题的所有搜索,并在这里阅读了很多关于SO的问题,我无法点击任何内容并感觉它是正确的解决方案.

我们非常感谢任何人提供的任何经验,见解或帮助.谢谢.

database-design social-networking

17
推荐指数
1
解决办法
4114
查看次数

以适度可扩展的方式提供活动源项

我正在处理的应用程序有一个活动源,每个用户都可以看到他们朋友的活动(很像Facebook).我正在寻找一种适度可扩展的方式来动态显示给定用户的活动流.我说"适度"因为我只想用数据库(Postgresql)来做这个,也许是 memcached.例如,我希望这个解决方案可以扩展到200k用户,每个用户有100个朋友.

目前,有一个主活动表,用于存储给定活动的呈现的html(Jim添加了朋友,George安装了应用程序等).此主活动表保留源用户,html和时间戳.

然后,有一个单独的('join')表,它只是指向应该在朋友提要中看到此活动的人的指针,以及指向主活动表中对象的指针.

所以,如果我有100个朋友,并且我做了3个活动,那么连接表将增长到300个项目.

很明显,这个表格会很快增长.但是,它具有不错的属性,即向用户显示的获取活动需要单个(相对)便宜的查询.

另一种选择是保留主活动表并通过以下方式查询:

select * from activity where source_user in (1, 2, 44, 2423, ... my friend list)
Run Code Online (Sandbox Code Playgroud)

这样做的缺点是您正在查询可能永远不会处于活动状态的用户,并且随着您的朋友列表的增长,此查询会变得越来越慢.

我看到双方的优点和缺点,但我想知道是否有些SO人可以帮助我权衡选项并建议一种方式或其他方式.我也对其他解决方案持开放态度,但我想保持简单,不要安装类似CouchDB等的东西.

非常感谢!

database database-design social-networking

16
推荐指数
1
解决办法
3642
查看次数

RESTful设计的社交网络

我试图围绕RESTful设计,我想从社交网络的角度来理解它.我已阅读REST API设计规则手册,查看了其他一些书籍并阅读了大量在线资源.然而,当将规则应用于现实世界的问题时,我意识到我并不完全理解一切.我想通过指定一些问题来了解我是否对REST有正确的理解:

层次结构与平面设计

我们假设我用一个特定的用户来识别

/users/42
Run Code Online (Sandbox Code Playgroud)

现在,该用户上传的照片最终会进入

/users/42/photos
Run Code Online (Sandbox Code Playgroud)

如果他/她在照片中标记他/她的朋友,那么这些标签就会结束

/users/42/photos/1337/tags
Run Code Online (Sandbox Code Playgroud)

但这无法找到特定用户被标记的所有照片.我应该为此提出不同的层次结构吗?这看起来有点尴尬.我是否可以完全忽略层次结构,并提供与此类查询相结合的照片?

/photos?owner=42
/photos?tagged=42
Run Code Online (Sandbox Code Playgroud)

当内容因不同用户而异时缓存

一个Web服务的设计应提供缓存数据(以便客户端可以决定使用本地副本,如果它认为什么也没有发生变化),但如何影响针对不同用户的隐私设置?登录的两个用户可能有权查看关于例如用户42的不同信息.这是否意味着我以某种方式需要为访问同一用户的配置文件信息的不同用户请求不同的URI,或者缓存不是问题只要用户提供不同的凭据?

从同一资源提供HTML和JSON/XML

我提到的那本书指出了一个规则,即api在他们的示例中,应该从子域开始访问API http://api.soccer.restapi.org.我曾计划为用户访问和机器访问使用相同的控制器(例如移动应用程序).该控制器将决定哪个视图,以提供(text/html,application/jsonapplication/xml通过)Accept在HTTP请求报头字段.我认为由于某种原因这是一个坏主意(因为用户希望看到子域www,而不是api),但我不明白为什么.能wwwapi指向同一个服务器,或者我应该尝试到HTML视图移动到不同的虚拟主机?为什么?

我相信Ruby on Rails(Convention over Configuration)会从同一个控制器提供HTML和JSON,因此我认为HTML和JSON只是同一数据的不同表示.

换句话说,我的书说某个资源应该只有一个URI,并且应该根据Accept字段提供不同的表示.在不同子域之间重定向用户将违反关于从同一资源提供任何表示的规则,并且复制信息(即,将两个子域指向同一虚拟主机)违反了关于不为同一资源提供多个URI的规则.不提供api子域违反了另一个设计规则.如何在不违反任何规则的情况下解决这个问题?

限制发回的数据

查询组件应该用于分页,但是我是否可以拒绝遵守缺少搜索条件的列表请求并限制项目数量而不违反REST?我想减少数据库负载,避免让某人映射整个用户目录.我想要

/users
Run Code Online (Sandbox Code Playgroud)

是非法请求,而

/users?name=leet+hacker
Run Code Online (Sandbox Code Playgroud)

将是有效的,但只返回例如100项.

我还想知道,只有在使用查询专门请求时,返回数据库列的子集以及更多/所有数据列是否合法.

控制器提供冗余数据

我认为提供像这样的控制器是合法的

/users/me
Run Code Online (Sandbox Code Playgroud)

但是它应该提供与文档URI完全相同的信息

/users/42
Run Code Online (Sandbox Code Playgroud)

还是应该重定向到它?

某些用户的扩展权限

哪种RESTful方式可以提供其他功能,例如管理权限?我现在假设管理员(照片,一组用户或整个网站的管理员)将能够看到有关特定对象的更多信息,而不是其他用户.如果这些信息被保存在完全相同的URI,并自动向管理员,但不发送给其他人,应该把它存放在不同的位置,应该是使用某种管理员查询请求或以其他方式提供?

本地化和设置更新

尽管视图应提供用户可见的大多数字符串,但仍有一些可能涉及API的设计决策.最明显的是名字.社交网络有时允许用户输入要在不同语言环境中显示的不同名称.某些语言的名称(如俄语和阿拉伯语)不易自动转录.在其他语言中,如中文,本地和国际名称可能完全不同,完全没有相似之处或联系.什么是RESTful处理方式?我有一种感觉,答案将是该Accept-Language领域,但有人认真考虑在他们所属的社交网络上切换语言吗?是否应该每次都将所有这些信息返回给呼叫者,还是可以依赖设置?这可以用缓存吗?

api rest web-services social-networking

16
推荐指数
1
解决办法
3240
查看次数

人人,微博和百度喜欢只使用HTML的按钮(没有Javascript)

我正在一个将在中国销售的网站上工作,我想知道是否有一种方法可以为人人网(类似于Facebook),微博(类似于Twitter)和百度喜欢(类似于谷歌)创建"共享"按钮+1)仅使用HTML.

例如,对于Facebook,Twitter和Google的+1,您将使用以下内容:

我知道人人使用以下内容:

但是,我很想知道微博和百度的HTML唯一网址是什么.

以下是共享按钮的Javascript版本的文档,如果有帮助:

html url social-networking weibo sinaweibo

16
推荐指数
1
解决办法
1万
查看次数

PHP新闻Feed数据库与设计

我正在使用类似于facebook的PHP/MySQL设计一个News Feed系统.

我之前曾问过类似的问题,但现在我改变了设计,我正在寻找反馈.

示例新闻:

User_AUser_B的新专辑发表了评论.

  "Hey man nice pictures!"
Run Code Online (Sandbox Code Playgroud)

User_B为[他/她] 个人资料添加了新照片.

     [show photo thumbnail]
Run Code Online (Sandbox Code Playgroud)

最初,我使用Obj1:Type1 |的过多列实现了这个 Obj2:Type2 | 等等..

现在使用几个特殊关键字和演员/接收者关系设置设计.我的数据库使用在包含userid,actionid,receiverid,receiverObjectTypeID的表上连接的消息表,

这是加入时的外观精简版:

News_ID | User_ID |                  Message                   |     Timestamp

  2643       A       %a commented on %o's new %r.                  SomeTimestamp
  2644       B     %a added a new %r to [his/her] profile.         SomeTimestamp
Run Code Online (Sandbox Code Playgroud)

%a =执行操作的人员的User_ID

%r =接收对象

%o =接收对象的所有者(例如专辑的所有者)(如果%r是用户,则为NULL)

问题:

  1. 这是一种智能(高效/可扩展)的前进方式吗?

  2. 如何存储"事件预览"?例如,如果我想显示User_A对User_B发表的评论(如上所述,以及Facebook的新闻Feed).我考虑过只使用相关数据的编码副本..例如JSON编码注释文本或照片html ..但这看起来很脆弱(用户可能会删除照片,而它仍在另一个用户的Feed中)

  3. 如何显示以下消息:"User_B在其个人资料中添加了4张新照片." 用照片的缩略图?

php mysql performance social-networking news-feed

15
推荐指数
1
解决办法
8759
查看次数

什么是聊天室软件的最佳开放协议?

我在IRC,XMPP和我拥有的第三个专有服务器之间进行比较.

每个人的利弊是什么,如果你知道任何可以提及的话,建议其他人.

irc chat xmpp protocols social-networking

15
推荐指数
2
解决办法
2万
查看次数

有关p2p社交网络的注意事项

虽然野外有许多社交网络,但大多数依赖于存储在第三方拥有的中心站点上的数据.

我想构建一个解决方案,其中数据保留在成员系统的本地.将项目视为地址簿,一旦联系人更改其坐标,就会自动更新联系人的数据.这个基本想法可能会在以后扩展...

将使用中央主机使用公钥/私钥加密来传输更新.主持人的唯一作用是成为商店和前锋中间人.私钥在每个成员的系统上保持私密.

如果两个客户端都在线并且可以建立p2p连接,则客户端可以在没有中央主机的情况下传输数据电报.

因此,发送方和接收方将是唯一能够创建真实消息的方.

问题:

  • 是否存在我应采用的某些协议?
  • 我应该记住哪些安全问题?
  • 是否存在某些应该以某种方式集成或使用的服务?

技术上更:

  • 使用例如亚马逊或谷歌提供的服务?
  • 或者更好地使用原始Web服务器?如果是:为什么?
  • 应该使用哪种算法和密钥长度?

UPDATE-1

我搜索了自己的问题标题,发现这个学术项目是2008/09开发的:http://www.lifesocial.org/.

security cryptography social-networking

15
推荐指数
2
解决办法
2642
查看次数

在社交网络中执行分散搜索的算法

我想找出利用社交网络结构属性的所有现有分散算法.到目前为止,我知道以下算法 -

1)最佳连接搜索 - Adamic等

2)随机游走(不利用任何结构属性,但仍然是分散的)

3)汉明距离搜索

4)弱/强关系搜索

5)余弦相似性搜索(CCS)

6)信息香味搜索(ISS)

任何帮助,将不胜感激

algorithm social-networking

14
推荐指数
1
解决办法
1796
查看次数