社区
PHP
帖子详情
sina微博发状态实现原理
王的静
2012-09-26 10:07:50
公司要弄一个类似 sina微博发状态的 可实时可更新 请高手指点给点思路
...全文
274
6
打赏
收藏
sina微博发状态实现原理
公司要弄一个类似 sina微博发状态的 可实时可更新 请高手指点给点思路
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
秋天的企鹅
2012-10-09
打赏
举报
回复
什么是发状态...
lifei0007
2012-10-09
打赏
举报
回复
就是留言板
纸牌屋弗兰克
2012-10-07
打赏
举报
回复
不能这么说,留言板相对功能简单多了,微博系统还是很复杂的,不是这么容易就做出来的
[Quote=引用 1 楼 的回复:]
微博是什么?高级留言板罢了。
网上留言板程序一抓一大把。
[/Quote]
bojimiyabojimiya
2012-10-05
打赏
举报
回复
发状态是什么意思呢,‘正在编辑’这种?还是当前用户的状态?
两端都做ajax吧,一边轮询写状态,一边轮询读状态
兼哲
2012-10-05
打赏
举报
回复
应该说的是,微博上的 IM 聊天状态吧。
关注这个帖子,我知道怎么做,不过不知道你指的究竟是什么
acabin
2012-09-26
打赏
举报
回复
微博是什么?高级留言板罢了。
网上留言板程序一抓一大把。
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
一、应用展示 关于层的智能浮动效果早在几年前我就在国外的一些个人网站的垂直导航上见到了,现在似乎在国内一些商业网站上也屡见此效果,例如淘宝网的搜索结果页的排序水平条,在默认
状态
下,滚动条跟随页面滚动,如下: 随着页面向下滚动,当此水平条接触浏览器的上边缘时,水平条独立出来,不跟随滚动条滚动了,如下图所示: 类似的效果在新浪
微博
上也有: 当页面滚动,新动态提示开始要淡出浏览器窗口的时候,其浮动于浏览器窗口的最上沿显示,如下图所示: 此效果
实现原理
其实很简单,本文就将展示其实现。 二、
实现原理
默认
状态
就是默认
状态
,什么事情也不用做,定位是absolute也好,static也好,都ok。关键是
分布式爬虫框架Cola.zip
Cola是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。pip install pyyaml安装下载或者用git clone源码,假设在目录/to/pth/cola,将该路径添加到Python path中。一种简单的方法是在site-packages中添加pth文件。site-packages因系统而异,如果是windows,假设python 装在C:\python27,那么就是C:\python27\Lib\site-packages;如果是linux,那么应该是/usr/local /lib/pythonX.X/dist-packages。在site-packages下新建一个cola.pth文件,里面写上路径:/to/path/cola。Cola目前自带了若干个爬虫,在项目根目录下的contrib中。下面就wiki为例,分别说明如何在单机和分布式环境下运行。依赖无论是维基百科还是新浪
微博
的实现,数据都存放在MongoDB中,所以要确保MongoDB的安装。在wiki下的wiki.yaml和weibo下的weibo.yaml中可以配置MongoDB的主机和端口。维基百科和新浪
微博
实现依赖于下面的几个包:mechanizepython-dateutilBeautifulSoup4mongoenginersa(仅新浪
微博
需要)可以使用pip或者easy_install来安装。单机模式单机模式非常简单,只需运行contrib/wiki/__init__.py即可。cd /to/path/cola/contrib/wiki python __init__.py要运行新浪
微博
的爬虫,需要在weibo.yaml中配置登录的用户名和密码。这里要注意,要保证这个用户名和密码在登录时不需要验证码。停止则需运行stop.py,注意不能通过直接杀死进程来停止,否则会导致cola非法关闭。 如果非法关闭,确保cola不在运行的情况下,则可以运行stop.py来恢复。但无论如何,都不推荐非法关闭,否则可能遇到不可预知的错误。python stop.py分布式模式首先需要启动cola master和cola workers。分别运行根目录下bin中的start_master.py和start_worker.py启动cola master:cd /to/path/cola python bin/start_master.py --data /my/path/data如果不指定--data,那么数据文件会放置在项目根目录下的data文件夹中。启动cola worker:python bin/start_worker.py --master
--data /my/path/data--data选项同master。如果不指定master,会询问是否连接到本机master,输入yes连接。最后使用bin下的coca.py来运行指定的Cola job:python bin/coca.py -m
-runLocalJob /to/path/cola/contrib/wiki-runLocalJob选项是要运行的job所在文件夹的绝对路径。输入命令后,该job会被提交到Cola集群来运行。停止Cola Job或集群停止整个集群,则可以运行:python bin/coca.py -m
-stopAll而停止一个Job,则需要查询得到Job的名称:python bin/coca.py -m
-showRunningJobsNames得到名称后,再运行:python bin/coca.py -m
-stopRunningJobByName
基于Cola实现的爬虫基于Cola实现的爬虫位于contrib/目录下。目前实现了四个爬虫:wiki:维基百科。weibo:新浪
微博
爬虫。从初始用户出
发
,然后是其关注和粉丝,依次类推,抓取指定个数的新浪
微博
用户的
微博
、个人信息、关注和粉丝。其中,用户
微博
只获取了内容、赞的个数、转
发
和评论的个数等等,而没有具体去获取此
微博
被转
发
和评论的内容。generic(unstable):通用爬虫,只需配置,而无需修改代码。目前Cola实现了一个抽取器(cola/core /extractor),能够从网页正文中自动抽取主要内容,即去除类似边栏和底脚等内容。但是,此抽取器目前准确度还不够,效率也不够高,所以需要谨慎 使用。weibosearch(unstable):新浪
微博
搜索的爬虫。这个爬虫使用 cola.core.opener.SpynnerOpener,基于spynner实现了一个Opener能够执行JavaScript和Ajax代 码。目前这个爬虫存在的问题是:新浪
微博
可能会将其识别成机器人,因此有可能会让输入验证码。wiki和weibo之前有所提及。主要说明generic和weibosearch。对于generic来说,主要要修改的就是配置文件:job: patterns: - regex: http://blog.
sina
.com.cn/$ name: home store: no extract: no - regex: http://blog.
sina
.com.cn/s/blog_. name: article store: yes extract: yes其中,regex表示要匹配的url的正则表达式;name是正则匹配的名称;store为yes时是存储这个网页,no为不存储;extract表示是否自动抽取网页正文,只有当store为yes的时候,extract才有作用。对于weibosearch,其使用了spynner来执行JavaScript和Ajax代码。所以需要确保以下依赖的安装:PyQt4(>=4.4.3)spynner如果你觉得可以基于cola实现一个比较通用的第三方爬虫,比如说腾讯
微博
等等,欢迎将此爬虫提交到contrib/中。编写自定义Cola Job见wiki编写自定义Cola Job。架构和原理在Cola集群里,当一个任务被提交的时候,Cola Master和Worker会分别启动JobMaster和JobWorker。对于一个Cola Job,当JobWorker启动完成后,会通知JobMaster,JobMaster等待所有JobWorker启动完成后开始运行Job。在一个 Cola Job启动时,会启动一个消息队列(Message Queue,主要操作是put和get,worker抓取到的对象会被put到队列中,而要抓取新的对象时,只要从队列中取即可),每个 JobWorker上都存在消息队列节点,同时会有一个去重模块(bloom filter实现)。Cola还不够稳定,目前会处于持续改进的
状态
。且Cola还没有在较大规模的集群上测试,但是接下来我会把Cola应用到新项目中,并逐步完善。也希望大家也能给我反馈,并帮助改进。Roadmap0.1版本正式推出前不会再增加新的功能了,主要目标让Cola更加稳定,并且提高cola/core/extractor的性能和精确度,完善contrib/generic和contrib/weibosearch。0.2版本计划:实现一个web接口,可以查看运行的cola job以及运行情况简化安装,支持easy_install或者pip安装。增加解决依赖库安装的机制。0.3版本计划:增加一个统一持久化抽象,支持保存到关系型数据库,MongoDB,文件系统,HDFS等等。0.4版本计划:支持Python 3 标签:Cola
区块链之去中心化
微博
开篇先讲两个小故事故事一:在北京一家创业公司工作的年轻女白领是一个旅行爱好者,喜欢旅行并分享到
微博
上。趁着五一假期到泰国旅游,她拍摄了一组照片分享到了
微博
上,24h后,
微博
阅读量达到1万,她收到了100元的广告费。年轻女白领收到广告费后非常的开心,因为她做着自己喜欢的事,还因此而获得了额外收益,从此决定创作出更多精美内容
发
送到
微博
上,与人分享自己的快乐。故事二:201X年,
微博
用户掀起“打拐”行动(打击拐卖儿童行动),一条“6岁女孩周XX四川彭州被拐”的
微博
在网上被疯狂转
发
,引来无数网友关心。不久之后,杭州一位女士,
发
现该条
微博
上使用的照片正是自己女儿的照片,而自己的女儿一直在家中,并未被拐。于是立马报警,网警查看了
微博
的操作记录(全部存在区块链上),快速追溯到了虚假
微博
的始作俑者,并将其绳之于法。上述故事情节,在去中心化
微博
平台中都是可以实现的,借助于区块链技术,可以保证
微博
上的所有数据和行为可溯源,从而保证传播信息的真实性。同时,由于去除掉了中心化主体,
微博
的参与者将同时成为
微博
平台的所有者,可以共享
微博
平台的收益。一、现有的中心化
微博
平台——新浪
微博
传统
微博
(如新浪
微博
)就是一个中心化的应用平台,新浪公司就是整个
微博
平台的中心。新浪公司制定新浪
微博
的运行规则,开
发
出整个
微博
平台,为其提供中央服务器,维持着整个新浪
微博
的运转,并不断地向外推广,吸引用户使用。一切商业行为都是为了追逐利益的,新浪公司运营新浪
微博
,也是为了吸引广告主投放广告,从而获得巨额的广告收入。在中心化的
微博
平台中,大致流程是这样的,博主(
发
微博
者)会编辑
微博
发
送到新浪
微博
平台中,新浪
微博
将
微博
推送给观众(看
微博
者),观众查看
微博
,
微博
中会夹杂着一些广告,观众看
微博
时也会看到一些广告。广告主会为广告的浏览量和点击量,支付广告费给新浪公司。二、去中心化
微博
平台与传统
微博
平台不同,在去中心化
微博
平台中,将没有中心机构,没有中央服务器,主要是通过区块链技术,运用分布式自治组织(DAO)的组织架构,实现
微博
平台的自治。让每一个
微博
参与者都成为
微博
平台的所有者,他们将共享
微博
平台获得的全部收益。在去中心化
微博
平台中,参与者主要有:
发
微博
者,他们是
微博
内容提供者,是最核心的参与者之一。
微博
平台受不受欢迎,很大程度上依赖于内容的质量,而这就必然取决于
发
微博
者。
发
微博
者可以根据其
微博
中所包含广告的浏览量(等同于
微博
浏览量)和点击量,来获得微币(WB)作为奖励。挖矿者(存储节点),提供算力和存储能力,充当着服务器的角色,是
微博
平台得以正常运行的基础。
微博
系统每隔10分钟会将最新
微博
打包
发
送到各个存储节点中,存储节点会储存最新的
微博
数据,保证所有数据可溯源(区块链技术特点)。作为奖励,系统会给提供算力和存储能力的挖矿者以微币(WB)作为奖励。看
微博
者,他们是
微博
内容的浏览者,是
微博
平台中的主要用户,根据其对
微博
以及广告的浏览量和点击量,系统也会给予其微币(WB)作为奖励;广告主,在
微博
中投放广告,以提高自己品牌知名度或者直接引流的商家,他们可以在
微博
中投放广告,并根据广告的浏览量和点击量,用微币(WB)来支付广告费。在四个参与者中,
发
微博
者、挖矿者和看
微博
者在参与过程中,都会获取到微币(WB)作为奖励,而广告主则主要需要消耗微币(WB)才能参与到
微博
活动中。因此,会形成一个微币(WB)交易市场。在交易市场中,广告主用现实中的通用货币(如RMB)购买其他参与者手中的微币(WB)。此外,博主(
发
微博
者)通过
微博
下方所包含的广告是可以获得收益的,但广告也会给粉丝(看
微博
者)带来阅读成本,甚至造成反感,从而取消关注,所以博主会主动去把握好广告与粉丝之间的均衡。因此,在去中心化
微博
平台中,会将
微博
中广告数量和内容的选择权让渡给博主,从而降低粉丝阅读广告的心理成本,并提高广告的点击量。如一个摄影博主,
发
了一个在极地拍摄美景的
微博
,
微博
下方的广告则选择了与博主同款单反相机的广告,因为关注他
微博
的人都是以摄影爱好者为主,因此对这样的广告不会过度反感,甚至还会主动去了解。(注:笔者经常在某浪
微博
上刷到贷款、祛痘、整形等垃圾广告,表示十分反感,无法忍受!)去中心化
微博
平台参与者所构成的业务流程图详情如下:
论文研究-基于传播能力差异的IWSR垃圾信息传播模型.pdf
为研究用户传播能力差异性对垃圾信息传播的影响,根据仓室建模思想,将传播网络中的人群划分为
I
(ignorant)、
W
(weakly spreader)、
S
(strongly spreader)、
R
(removal)四个仓室并提出
状态
转换规则,运用微分动力系统理论建立一个具有传播能力差异的IWSR垃圾信息传播模型。通过计算模型的基本再生数,利用Hurwitz判据、Lyapunov稳定性定理和LaSalle不变性原理,得出垃圾信息传播平衡点的局部稳定和全局稳定条件。最后通过数值仿真与新浪
微博
真实数据集的对比实验证明所得结论的合理性和有效性。
PHP
20,359
社区成员
19,658
社区内容
发帖
与我相关
我的任务
PHP
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
复制链接
扫一扫
分享
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
php
phpstorm
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章