我想为我的公司员工和合作伙伴创建一个私人定制的社交网络,以便他们可以协作,交换消息,分享经验(活动,书籍参考等)并分组到社区.有没有人知道开始开发这个的好Java框架?
我会寻找包含基本组件的内容,例如配置文件,朋友列表,社区,事件,消息等.可以扩展每个组件以实现特定于域的功能.如果它也支持OpenSocial会很好.
我正在做一个社区网站,要求我计算任何两个用户之间的相似性.使用以下属性描述每个用户:
年龄,皮肤类型(油性,干性),头发类型(长,短,中),生活方式(活跃的户外爱好者,电视垃圾)等.
任何人都可以告诉我如何解决这个问题或指向我一些资源?
statistics pattern-recognition similarity data-mining social-networking
我知道这个问题的变化已经被问了很多次之前(我看过他们,他们是2:1,2),但我不能换我的头周围任何东西,感觉就像合适的解决方案.
从多对多关系,扇出,多态关联,NoSQL解决方案,消息队列,非规范化以及它们的组合,都提出了一切建议.
我知道这个问题非常具有情境性,所以我将简要解释一下我的问题:
对于平均时间,我结束了一个非标准化的设置基本上被由包括事件表的打算:id,date,user_id,action,root_id,object_id,object,data.
user_id是触发事件的人.
action是行动.
root_id是object属于的用户.
object是对象类型.
data包含在用户流中呈现事件所需的最少量信息.
然后,为了获得所需的事件,我只抓住所有行,其中user_id是用户的id,我们正在抓取它的流.
它的工作原理,但非规范化只是感觉不对.多态关联看起来同样如此.Fanout似乎介于两者之间,但感觉非常混乱.
通过我对这个问题的所有搜索,并在这里阅读了很多关于SO的问题,我无法点击任何内容并感觉它是正确的解决方案.
我们非常感谢任何人提供的任何经验,见解或帮助.谢谢.
我正在处理的应用程序有一个活动源,每个用户都可以看到他们朋友的活动(很像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等的东西.
非常感谢!
我试图围绕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,或者缓存不是问题只要用户提供不同的凭据?
我提到的那本书指出了一个规则,即api在他们的示例中,应该从子域开始访问API http://api.soccer.restapi.org.我曾计划为用户访问和机器访问使用相同的控制器(例如移动应用程序).该控制器将决定哪个视图,以提供(text/html,application/json或application/xml通过)Accept在HTTP请求报头字段.我认为由于某种原因这是一个坏主意(因为用户希望看到子域www,而不是api),但我不明白为什么.能www和api指向同一个服务器,或者我应该尝试到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领域,但有人认真考虑在他们所属的社交网络上切换语言吗?是否应该每次都将所有这些信息返回给呼叫者,还是可以依赖设置?这可以用缓存吗?
我正在一个将在中国销售的网站上工作,我想知道是否有一种方法可以为人人网(类似于Facebook),微博(类似于Twitter)和百度喜欢(类似于谷歌)创建"共享"按钮+1)仅使用HTML.
例如,对于Facebook,Twitter和Google的+1,您将使用以下内容:
我知道人人使用以下内容:
但是,我很想知道微博和百度的HTML唯一网址是什么.
以下是共享按钮的Javascript版本的文档,如果有帮助:
我正在使用类似于facebook的PHP/MySQL设计一个News Feed系统.
我之前曾问过类似的问题,但现在我改变了设计,我正在寻找反馈.
示例新闻:
User_A对User_B的新专辑发表了评论.
Run Code Online (Sandbox Code Playgroud)"Hey man nice pictures!"User_B为[他/她] 个人资料添加了新照片.
Run Code Online (Sandbox Code Playgroud)[show photo thumbnail]
最初,我使用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)
问题:
这是一种智能(高效/可扩展)的前进方式吗?
如何存储"事件预览"?例如,如果我想显示User_A对User_B发表的评论(如上所述,以及Facebook的新闻Feed).我考虑过只使用相关数据的编码副本..例如JSON编码注释文本或照片html ..但这看起来很脆弱(用户可能会删除照片,而它仍在另一个用户的Feed中)
如何显示以下消息:"User_B在其个人资料中添加了4张新照片." 用照片的缩略图?
我在IRC,XMPP和我拥有的第三个专有服务器之间进行比较.
每个人的利弊是什么,如果你知道任何可以提及的话,建议其他人.
虽然野外有许多社交网络,但大多数依赖于存储在第三方拥有的中心站点上的数据.
我想构建一个解决方案,其中数据保留在成员系统的本地.将项目视为地址簿,一旦联系人更改其坐标,就会自动更新联系人的数据.这个基本想法可能会在以后扩展...
将使用中央主机使用公钥/私钥加密来传输更新.主持人的唯一作用是成为商店和前锋中间人.私钥在每个成员的系统上保持私密.
如果两个客户端都在线并且可以建立p2p连接,则客户端可以在没有中央主机的情况下传输数据电报.
因此,发送方和接收方将是唯一能够创建真实消息的方.
问题:
技术上更:
UPDATE-1
我搜索了自己的问题标题,发现这个学术项目是2008/09开发的:http://www.lifesocial.org/.
我想找出利用社交网络结构属性的所有现有分散算法.到目前为止,我知道以下算法 -
1)最佳连接搜索 - Adamic等
2)随机游走(不利用任何结构属性,但仍然是分散的)
3)汉明距离搜索
4)弱/强关系搜索
5)余弦相似性搜索(CCS)
6)信息香味搜索(ISS)
任何帮助,将不胜感激
algorithm ×1
api ×1
chat ×1
cryptography ×1
data-mining ×1
database ×1
html ×1
irc ×1
java ×1
mysql ×1
news-feed ×1
opensocial ×1
performance ×1
php ×1
protocols ×1
rest ×1
security ×1
similarity ×1
sinaweibo ×1
statistics ×1
url ×1
web-services ×1
weibo ×1
xmpp ×1