服务器推送(Server Push)

服务器推送(Server Push)
推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推。
客户端拉曳(Client Pull)
在客户端拖曳技术中,服务器发送一批数据,在HTTP响应或文档头标记中插入指令,让浏览器“在5秒内再次装入这些数据”或“10秒内前往某URL装入数据”。当指定的时间达到时,客户端就按照服务器的指示去做,或者刷新当前数据,或者调入新的数据。
其实push 和 pull 这两种技术手段非常不同,但目的几乎一致,都是为了给最终用户方便的提供最新信息。
在服务器推送技术中,HTTP 连接一直保持着,直到服务器知道自己已结束发送数据并发送一个结束信号,或者客户端中断连接。而在客户端拖曳技术中,并不保持HTTP连接,相反,客户端被告知合时建立新连接,以及建立连接是获取什么数据。
在服务器推送中,奇妙之处在于“multipart/mixed”格式的MIME,它能够使一个报文(或HTTP响应)包含许多数据项、在客户端拖曳中,奇妙之处在于HTTP响应头标(或等效的HTML元素),它能告知客户端在指定的延时时间后执行何种动作。
服务器推送通常效率要比客户端拖曳效率高,因为它不必为后续数据建立新的连接。由于始终保持连接,即使没有数据传输时也是这样,因此服务器必须愿意分配这些TCP/IP端口,对于TCP/IP端口数有限的服务器这将是一个严重的问题。
客户端拖曳效率低,因为这必须每次为传送数据建立新的连接。但是它不必始终保持连接。
在实际情况中,建立HTTP连接通常需要花费相当多的时间,多达一秒甚至更多。因此从性能上考虑,服务器推送对于最终用户更有吸引力,特别是对于需要经常更新信息的情况下。
服务器推送相对客户端拖曳的另一点优势是,服务器推送相对比较容易控制。例如,服务器每一次推送时都保持一个连接,但它又随时可以关闭其中的任何连接,而不需要在服务器上设置特殊的算法。而客户端拖曳在同样的情况下要麻烦许多,它每次要与服务器建立连接,服务器为了处理将客户端拖曳请求与特定的最终用户匹配等情况,需要使用相当麻烦的算法。
如果实现服务器推送的CGI程序是使用Shell脚本语言编写的,有时会存在一些问题。例如,客户端最终用户中断连接,Shell程序通常不能注意到,这将使资源毫无用处的浪费掉,解决这一问题的办法是用Perl或者C来编写这类CGI程序,以使用户中断连接时能够结束运行。
如上所述,在服务器推送中,多个响应中连接始终保持,使服务器可在任何时间发送更多的数据。一个明显的好处是服务器完全能够控制更新数据的时间和频率。另外,这种方法效率高,因为始终保持连接。缺点是保持连接状态会浪费服务器端的资源。服务器推送还比较容易中断。
接下来就大概说说服务器推送技术
服务器在响应请求时,HTTP使用MIME报文格式来封装数据。通常一个HTTP响应只能包含一个数据块。但MIME有一种机制可用一个报文(或HTTP 响应)表示将多个数据块,这种机制就是成为“multipart/mixed”的标准MIME类型。multipart/mixed报文大体格式如下:
Content-type:multipart/mixed;boundary=ThisRandomString
–ThisRandomString
Content-type:text/plain
第一个对象的数据。
–ThisRandomString
Content-type:text/plain
第二个对象的数据。
–ThisRandomString–
上述报文包括两上数据块,二者的类型都是“text/plain”。最后一个“ThisRandomString”后的两条短线(–)表示报文结束,后面没有数据。
对于服务器推送,使用一个“multipart/mixed”类型的变种–multipart/x-mixed-replace。这里,“x-”表示属于实验类型。“replace”表示每一个新数据块都会代替前一个数据块。也就是说,新数据不是附加到旧数据之后,而是替代它。
下面是实际使用的“multipart/x-mixed-replace”类型:
Content-type:multipart/x-mixed-replace;boundary=ThisRandomString
–ThisRandomString
Content-type:text/plain
第一个对象的数据
–ThisRandomString
Content-type:text/plain
第二个(最后一个)对象的数据。
–ThisRandomString–
使用这一技术的关键是,服务器并不是推送整个“multipart/x-mixed-replace”报文,而是每次发送后数据块。
HTTP连接始终保持,因而服务器可以按自己需要的速度和频率推送新数据,两个数据块之间浏览器仅需在当前窗口等候,用户甚至可以到其他窗口做别的事情,当服务器需要发送新数据时,它只是源(ABC输入法没那个字*&^$#)传输管道发送数据块,客户端相应的窗口进行自我更新。
在服务器推送技术中,“multipart/x-mixed-replace”类型的报文由唯一的边界线组成,这些边界线分割每个数据块。每个数据块都有自己的头标,因而能够指定对象相关的内容类型和其他信息。由于“multipart/x-mixed-replace”的特性是每一新数据块取代前一数据对象,因而浏览器中总是显示最新的数据对象。
“multipart/x-mixed-replace”报文没有结尾。也就是说,服务器可以永远保持连接,并发送所需的数据。如果用户不再在浏览器窗口中显示数据流,或者浏览器到服务器间的连接中间(例如用户按“STOP”按钮),服务器的推送才会中断。这是人们使用服务器推送的典型方式。
当浏览器发现“Content-type”头标或到达头标结束处时,浏览器窗口中的前一个文档被清除,并开始显示下一个文档。发现下一个报文边界时,就认为当前数据块(文档)已经结束。
总之,服务器推送的数据由一组头标(通常包括“Content-type”)、数据本身和分割符(报文边界)三部分组成。浏览器看到分割符时,它保持状态不变,直到下一个数据块到达。
将以上概念进行用编程方法实现,就可以得到实际的服务器推送程序。例如,下面的Unix shell程序将使浏览器每5秒显示一次服务器上的进程列表:
#!/bin/sh
echo "HTTP/1.1 200"
echo "Content-type: multipart/x-mixed-replace;boundary=–ThisRandomString–"
echo ""
echo "–ThisRandomString–"
while true
do
echo "Content-type: text/html"
echo ""
echo "h2Processes on this machine updated every 5 seconds/h2"
echo "time:"
date
echo "p"
echo "plaintext"
ps -el
echo "–ThisRandomString–"
sleep 5
done
注意到,边界设置在sleep语句之前发送,这能够确保浏览器清除其缓冲区,并显示所接收到的最新数据。
NCSA HTTPD用户在内容类型中不能使用空格,包括边界参数。NCSA HTTPD只能将不带空格字符的字符串作为内容类型。如果在内容类型行中存在空格(冒号后面的空格除外),空格后的任何文本都会被删除。
下面的示例是正确的:
Content-type: multipart/x-mixed-replace;boundary=ThisRandomString
而下例则不能正常工作,因为它在中间有空格:
Content-type: multipart/x-mixed-replace; boundary=ThisRandomString
服务器推送的另一个优点是它可以针对单个内联图象进行。包括图象的文档可以由服务器定时或定周期进行更新。而实现这一点非常简单:只需使IMG元素的SRC属性指向推送一系列图象的URL即可。
如果服务器推送用于单个内联图象,文档中的图象就会一次次被新推送来的图象所代替,而文档本身不需变化(假设文档没有进行服务器推送)。这样,WEB页面中有限的动画就可以为静态画面所代替。
客户端拖曳
客户端拖曳的一个简单用法是使文档按固定周期自动重载。例如,考虑下面的HTML文档:
<META HTTP-EQUIV="Refresh" CONTENT=1>
<TITLE>Document ONE</TITLE>
<H1>This is Document ONE!</H1>
Here’s some text.<P>
如果将它载入支持动态文档的浏览器(Netscape 1.1以上,Internet Explorer和Mosaic也支持客户端拖曳),它将每隔一秒将自己重载一次。
由于META元素实际是在HTML文档中模拟HTTP响应头标,所以它能够告知浏览器将自身信息当作HTTP响应使用。上例中的META标记相当于:
Refresh:1
这样,实际上就是HTTP头标告知浏览器每一秒更新一次文档。如果需要延时是12秒,那么就是这样的指令:
<META HTTP-RQUIV="Refresh" CONTENT=12>
那么它等效于:
Refresh:12
关于客户端的拖曳我也懒的继续写下去,关于怎么使客户端自动申请其他URL的数据话,请使用如下:
<META HTTP-EQUIV="Refresh" CONTENT="12;URL=http://icools.yeah.net/">
注意的是,此处的URL不能使用相对路径,必须全部指定。
其中时间间隔可以设置为0,这样浏览器在当前文档显示完毕后,以最快的速度载入新的数据!
希望大家受用。

别把真正爱你得男人弄丢了

image002

真正爱你的男人,总是喜欢叫你老婆,可每次心里感到脆弱的时候,还是会用宝贝称呼你。
真正爱你的男人,虽然想听你对他说“老公”,其实心里更愿意听的是“你个死人,你跑到了哪里去了? ”

image003
真正爱你的男人,虽然有很长一段时间他看不到你,但你会发现他的手机里保存的全是你发给他的暧昧的信息。
真正爱你的男人,他会故意说要你给他唱歌听,其实他更喜欢的是你和他在温柔的争执发可爱的脾气。

image004
真正爱你的男人,他嘴上虽然说不在乎你和别的男人交往,可是每当有陌生的男人和你接触时,他会偷偷地将眉毛锁在一起,因为他在乎着你。
真正爱你的男人,他不怕你生气,怕的是你生了气、发了脾气后依然不去理会他,因为男人的感情也同样细腻。

image005
真正爱你的男人,每天他的脑子里装的全是你,就连走路的时候摔了一个跟头,起来后拍拍身上的灰尘嘴角却依然挂着微笑,因为他在惦记着你。
真正爱你的男人,他会把你的相片放在他的内衣兜里,时刻带在身上处处陪着你。

image006
真正爱你的男人,坐在公车上也会想起和你在一起的拥挤,因为他喜欢听你近距离的呼吸。
真正爱你的男人,他在吃饭的时候目光都是呆滞的,对面没有了你,嘴里的饭是没有滋味的。

image007
真正爱你的男人,他每天的生活都会很积极,因为他希望自己爱的女人看到的是阳光的自己。
真正爱你的男人,晚上躺在床上的时候,会情不自禁地去猜测你这一天到底过的好不好,为什么自己没有打喷嚏,是不是你没有轻易地把他想起?

image008
真正爱你的男人,他会数着星星在找你的星座,因为你勾起了他漫漫的思绪。
真正爱你的男人,他不会轻易地把自己脆弱的一面展现给你,虽然他还不能给予你什么,但他会尽他最大的努力来保护你。

image009
真正爱你的男人,他也会在他最最无助的时候想起你,不是想要你帮他什么,只是希望你不要担心他自己。
真正爱你的男人,他会把他的第一滴为女人哭泣的眼泪给你,因为他是那么的珍惜你!!!

image010
真正爱你的男人,他虽然不会经常主动和你联系,不是他心里没有你,而是他把你放在心里最重要的地方!!!
真正爱你的男人,他有时间就会静静的想你,而不想打扰你,不是他不爱你,只是他知道你一切都好就行! ! !

image011
千万别把真正爱你得男人弄丢了,因为一旦失去,他就不再属于你!!!

MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。

在 SQL Server 中可以这样处理:

 if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time = getdate() where id = 1

那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace into

replace into t(id, update_time) values(1, now());

replace into t(id, update_time) select 1, now();

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,

1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。

2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

MySQL replace into 有三种形式:

1. replace into tbl_name(col_name, ...) values(...) 
2. replace into tbl_name(col_name, ...) select ... 
3. replace into tbl_name set col_name=value, ...

前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。

Discuz X2中QQ互联(QQ登录)注册时强制设置输入密码的修改方案

Posted on 2011/07/25 by zcc Discuz X2推出了云平台,也正式开放了令人心动的QQ互联(QQ登录)。但是当你兴奋积极地开启了QQ互联功能时,你是否有意识到你正在一步步走向腾讯和康盛联合设下的陷阱呢?

直接开门见山:

QQ互联与腾讯开放平台的QQ登录是有区别的
QQ互联的注册环节没有密码设定
绝大部分通过QQ互联注册的用户是不会再去设定他的密码的
很大一部分绑定QQ账号的用户(设定了密码的),也可能已经忘记了它的密码
最关键的是作为站长的你,剥离QQ的情况喜爱,无法来保证大部分用户都能正常登录
太恐怖了!
但是这个功能不用,也是怪可惜了。大部分用户是不清楚这些危害的,你公司的老板也可能不清楚。所以只需要稍微改下代码,稍微减弱些用户体验,你就能保证用户资料的独立性——在QQ互联注册环节强制要求用户设定密码。
操作:
1. 打开文件source/plugin/qqconnect/template/module.htm
(1) 查找
$(‘{$_G[‘setting’][‘reginput’][‘password’]}’).parentNode.parentNode.parentNode.parentNode.parentNode.style.display = ‘none’;
$(‘{$_G[‘setting’][‘reginput’][‘password’]}’).outerHTML += ‘$js1’;
$(‘{$_G[‘setting’][‘reginput’][‘password’]}’).required = 0;
$(‘{$_G[‘setting’][‘reginput’][‘password2′]}’).parentNode.parentNode.parentNode.parentNode.parentNode.style.display = ‘none’;
$(‘{$_G[‘setting’][‘reginput’][‘password2′]}’).required = 0;

修改成
//$(‘{$_G[‘setting’][‘reginput’][‘password’]}’).parentNode.parentNode.parentNode.parentNode.parentNode.style.display = ‘none’;
$(‘{$_G[‘setting’][‘reginput’][‘username’]}’).outerHTML += ‘$js1’;
$(‘{$_G[‘setting’][‘reginput’][‘password’]}’).required = 1;
//$(‘{$_G[‘setting’][‘reginput’][‘password2′]}’).parentNode.parentNode.parentNode.parentNode.parentNode.style.display = ‘none’;
$(‘{$_G[‘setting’][‘reginput’][‘password2′]}’).required = 1;

2 打开文件 source/module/member/member_connect.php
查找
$ctl_obj->setting[‘ignorepassword’] = 1;
将它注释掉,或者删除
3 打开文件 source/module/member/member_register.php
查找
DB::query(“INSERT INTO “.DB::table(‘common_member_connect’).” (uid, conuin, conuinsecret, conopenid, conispublishfeed, conispublisht, conisregister, conisqzoneavatar, conisfeed) VALUES (‘$uid’, ‘$conuin’, ‘$conuinsecret’, ‘$conopenid’, ‘$conispublishfeed’, ‘$conispublisht’, ‘1’, ‘$is_qzone_avatar’, ‘$user_auth_fields’)”);

修改成
DB::query(“INSERT INTO “.DB::table(‘common_member_connect’).” (uid, conuin, conuinsecret, conopenid, conispublishfeed, conispublisht, conisregister, conisqzoneavatar, conisfeed) VALUES (‘$uid’, ‘$conuin’, ‘$conuinsecret’, ‘$conopenid’, ‘$conispublishfeed’, ‘$conispublisht’, ‘0’, ‘$is_qzone_avatar’, ‘$user_auth_fields’)”);

立秋

b110e6192d6a7a12dbb4bd78立秋,是二十四节气中的第13个节气,每年8月8日或9日立秋。“秋”就是指暑去凉来,意味着秋天的开始。到了立秋,梧桐树必定开始落叶,因此才有“落一叶而知秋”的成语。从文字角度来看,“秋”字由禾与火字组成,是禾谷成熟的意思。立秋是秋季的第一个节气,而秋季又是由热转凉,再由凉转寒的过渡性季节。

 

立秋(autumn begins):中国农历二十四节气之一,在8月7、8或9日。我国以立秋为秋季的开始。

每年8月7日或8日视太阳到达黄经135°时为立秋。《月令七十二候集解》:“七月节,立字解见春(立春)。,揪也,物于此而揪敛也。”立秋一般预示着炎热的夏天即将过去,秋天即将来临。立秋后虽然一时暑气难消,还有“秋老虎”的余威,立秋又称交秋,但总的趋势是天气逐渐凉爽。由于全国各地气候不同,秋季开始时间也不一致。气候学上以每5天的日平均气温稳定下降到22℃以下的始日作为秋季开始,这种划分方法比较符合各地实际,但与黄河中下游立秋日期相差较大。立秋以后,我国中部地区早稻收割,晚稻移栽,大秋作物进入重要生长发育时期。秋的意思是暑去凉来,秋天开始。古人把立秋当作夏秋之交的重要时刻,一直很重视这个节气

古文记载

我国古代将立秋分为三候:“一候凉风至;二候白露生;三候寒蝉鸣。”是说立秋过后,刮风时人们会感觉到凉爽,此时的风已不同于暑天中的热风;接着,大地上早晨会有雾气产生;并且秋天感阴而鸣的寒蝉也开始鸣叫。

据记载,宋时立秋这天宫内要把栽在盆里的梧桐移入殿内,等到“立秋”时辰一到,太史官便高声奏道:“秋来了。”奏毕,梧桐应声落下一两片叶子,以寓报秋之意。

百度迎来上市六周年 股价增长52倍续写神话

8月5日消息,今日是百度登陆纳斯达克六周年纪念日。六年前,百度成功登陆纳斯达克,股价从发行价27美元起步,一路飙升。按拆股前价格计算,百度现在股价已经高达1439美元,成长超过52倍。对全球资本市场来说,市值超过500亿美金的百度,已成为名副其实的 “中国名片”。

过去52周,百度股价一度摸高至165.96美元,华尔街著名投行Jefferies将百度目标股价设定为200美元。

百度最新发布的Q2财报显示,百度第二季度总营收为人民币34.15亿元(约合5.284亿美元),同比增长78.4%;第二季度净利润为人民币16.33亿元(约合2.526亿美元),同比增长95.0%;继续保持了平均每年同比翻一番的强劲增长。华尔街著名投行Jefferies在报告中,重申了对百度的“买入”评级,并强调“百度的长期前景具有吸引力,中国中小企业电子商务增长将继续推动搜索市场业务发展。”

事实上,百度从IPO一开始就得到了全球投资者的热烈追捧。上市当天,百度就创造了纳斯达克市场股价当日涨幅最高的纪录。此后,百度由于杰出表现,受邀加入纳斯达克百强成分股,成为全球高科技公司业绩表现的风向标,在去年上市五周年纪念日当天,百度更是受邀成为首个为纳斯达克远程敲响开市钟的中国企业,李彦宏本人也获得纳斯达克副董事长Sandy Frucher亲自授予的“纳斯达克全球杰出企业家”荣誉称号。按目前市值计算,百度已经成为全球股市市值最高的三家互联网公司之一。

在国内互联网行业,目前市值前三的公司分别为百度、腾讯和阿里巴巴。过去6年,中国互联网市值第一的宝座一直在这三家公司之间交替。2007 年,阿里巴巴上市时股价一路高开,市值相当于百度和腾讯的总和。现在这一情况已经发生逆转,按8月5日最新股价计算,百度市值几乎等于腾讯和阿里巴巴总和。(百度市值为502亿美元,腾讯为461亿美元,阿里巴巴为64亿美元)。某种程度上,这种戏剧性变化也显示出以百度为代表的搜索市场正成为中国互联网最具商业价值的领域。

多玩网总裁李学凌

“他和大部分的媒体记者不一样。”雷军说,“他拒收所有车马费和(企业)稿酬。这不表示有什么了不起,但不多见,让我认为他有更大的目标和梦想。他又很固执自己的观点。他批评我们金山的产品不好,你怎么也说服不了。我们关系很好,但他照骂不误。他是一个有自己观点的人,而且不被任何东西所利诱。他还愿意琢磨,是个技术爱好者和发烧友。他批评我们的东西还是讲在了点子上,很有深度。”

第26届大运会今日开幕

第26届大运会今日开幕

第二期:七夕,我们在一起

第一期:纪念安徒生逝世136年

WordPress CKEditor smiley表情图标定制化

WordPress默认的编辑器不是很好用,我习惯将它替换成CKEditor,安装CKEditor For WordPress即可。安装后编辑器将被替换,评论框的编辑器默认会被替换成CKEditor,有时候会导致模板样式错乱,可以在CKEditor->Basic Settings中禁用。

CKEditor默认的smiley表情不适合中国,我们可以将表情改造一下换成自己喜欢的表情,方法如下。

1. 下载你想要的表情包,一般是gif格式的图片,假设这些图片所在的文件夹叫mysmiley,将该文件夹拷贝到插件的表情目录中,路径为

wp-content/plugins/ckeditor-for-wordpress/ckeditor/plugins/smiley/images

2. 修改配置文件wp-content/plugins/ckeditor-for-wordpress/ckeditor.config.js

在CKEDITOR.editorConfig = function(config) { … }中添加如下代码

config.smiley_path=CKEDITOR.basePath+’plugins/smiley/images/mysmiley/’;

config.smiley_images=[‘1.gif’,’2.gif’];

第一行代码定义了表情文件所在的文件夹的路径,第二行是表情文件名字的数组。这样点击编辑器的表情按钮,自定义图标就会显示出来。

当你的图标过多时,由于显示不开会导致一部分图标无法显示,而且表情图标对话框没有滚动条,为了避免这种问题,我们可以修改一下css文件。找到wp-content/plugins/ckeditor-for-wordpress/ckeditor/skins/kama/dialog.css(假定你使用了默认的皮肤kama),在最后一行添加如下代码

.cke_dialog_ui_html{height:350px;overflow:auto;}

这个文件是经过压缩的,所以添加代码时注意不要有空格。height定义对话框的高度,可以根据自己的需要写。这样表情多时会出现滚动条,就可以正常使用了。如果你的表情很少,就不要做这个改动,不然显示会出问题。

下面是几个已经做好的表情包和大家分享一下,配置语句写在压缩包的readme.txt中

1. 洋葱头系列表情

下载地址:CKEditor洋葱头表情图标下载

2. qq表情图标

下载地址:CKEditor QQ表情

flash builder 4 序列号及使用方法

flash builder 4 hosts 破解 无限破解 序列号

 

flex 4 破解方法:
用注册机来破解是成功的,但是下一次重启的时候就不可以了,是因为他登陆了官方网站去验证的原因,所以我们来屏蔽它的验证网站,就可以达到破解了。
无论是新安装的,还是试用期过期了的,我们首先在C:\WINDOWS\system32\drivers\etc目录下的hosts文件进行修改,这个是系统文件是只读的,所以我们不进行修改的话是写不了内容进去的,点击这个文件的属性,先把只读这个属性取消掉,然后修改完之后改过来。我们不需要修改很多代码,我们只需增加一句话就可以了,在文件里面增加上127.0.0.1 activate.adobe.com这句话,注意了前面不能有#,这个是会被注释掉的,不起作用的。
如我的文件修改之后的内容:
# copyright (c) 1993-1999 microsoft corp.

127.0.0.1 activate.adobe.com
修改完之后我们就可以进行注册了,如果有注册机的话,就可以很容易获取序列号了,如果没有的话在网上找也可以找到很多,在这里我提供一些吧,不知道能不能用,应该是可以用的,
flex4注册码:
1424-4391-4624-5590-9520-3224
1424-4911-9190-5139-3387-1194
1424-4534-4173-3056-1444-4877
1424-4766-8976-4612-2545-2984
1424-4014-3600-4497-9399-5754

进行注册之后,以后就不会出现那个要求我们注册的框框了,烦人的东西.

(2010/11/12更新):有些朋友反应不能用,可能是序列号的原因,你最好用注册机自己生成新的注册号,

我再提供一些吧,

1424-4189-9907-1699-3951-0021
1424-4508-7679-2258-5890-8124
1424-4508-4533-6951-2570-7461
1424-4182-3201-8658-8407-5505
1424-4817-3306-7207-2955-4090
1424-4018-7091-8151-7090-1535
1424-4260-4080-5539-3256-1886
1424-4830-7950-7284-7868-9432

(2011/04/1更新):好像激活地址变了,如果还是不行的话,把下面这个话写上

127.0.0.1 wwww.adobe.com/cn/activation

吞噬星空

星空中。
“这颗星球,通体土黄色,没有任何生命存在,直径21ooo公里,咦,竟然蕴含‘星泪金’矿脉,真是天助我也,将这颗星球吞噬掉后,我的实力应该能恢复到受伤前的8o%。”脸色苍白的罗峰盘膝坐在一颗飞行的陨石上,遥看远处的一颗无生命存在的行星。
番茄第六部小说《吞噬星空》,将为大家展现出一个浩瀚广阔、神秘莫测的未来世界。

QQ截图未命名