Mercurial (Hg) Vs Bazaar (bzr) 比较

几个月前评估了Git, Mercurial, Bazaar,  基本结论如下: Git有些复杂,Mercurial, Bazaar很类似, Bazaar易用性最好。

于是, 在团队内部推广使用了Bazaar。

Bazaar 最突出优点:

  • 易用性非常好, 直接明了。

度过了和Bazaar的蜜月期, 问题慢慢就来了, Bazaar的缺点有:

  1. bug还不少。比如:commit时无法获取锁 Unable to obtain lock file:///var/www/ held by yaozer <yaozer@xxx.com>,  比如段错误ng data locally – Stage:repacking texts:texts 26292/40129
  2. 对于大的项目, Bazaar甚至无法 add, 原因在于Bazaar 会一次性加载源代码到内存,如果有大量图片(接近1G), 就有可能报错 out of memory!
  3. 对某些特定编码的文件也是无法add,yaozer遇到过加密的代码无法add, 遇到过GBK和UTF-8格式文件同时存在时,add报错.

由于上述问题, 我逐渐尝试使用Mercurial 作为备用。

熟悉了bzr之后,  使用hg有点小难受,hg的入门教程也没有bzr的明了.  但是 hg经过试用, 目前还没有遇到 bzr的三大缺点, 非常稳定!  另外,hg命令的参数很多, 而且默认的参数有些别扭。 不像bzr, 命令不带任何参数,就能很好的完成任务。在命令易用性上, hg不如bazaar。

使用Hg经验:要学会配置 hgrc 和 .hgignore, 配置好后, 和bzr基本类似。

比如我的 hgrc

[defaults]
log =  –style=compact
status = -mardu

hg 的优点:

  1. 比bzr稳定很多。不存在bzr的三大问题。
  2. netbean对hg支持非常好。各种IDE对 bzr的支持还不是很好。

在选择hg 还是 bzr 的问题上, yaozer认为:  小项目都差不多, bzr易用性更好些。  大项目还是选择hg吧.

分享家:Addthis中国

Apache, Nginx性能比较, Nginx完胜

本文为yaozer原创, 文章比较长, 先放结论:  不管是用ab, 还是webbench进行并发测试, 10个并发用户访问时, apache与nginx差别不大,  但是随着并发量增加, 100个并发用户访问时, nginx优势巨大, 测试结果是apache的 6~8 倍.nginx 完胜!

使用软件ab, webbench进行测试Apache, Nginx性能, 测试页面为Magento 1.4.2.0的首页,环境如下:

测试环境:
IBM x3250 服务器 xeox 2.4G, 4G RAM, 250G RAID1
Centos 5.5, apache 2.2.17, mysql 5.1.52, nginx 0.9.3, php 5.2.16, magento1.4.2.0

webbench小巧简单, 测试结果如下:

—————————————-开始 webbench 测试 ———————————————————–

Apache Nginx Apache Nginx
webbench -c 10 -t 30 webbench -c 10 -t 30 webbench -c 100 -t 30 webbench -c 100 -t 30
10个并发用户访问30s 10个并发用户访问30s 100个并发用户访问30s 100个并发用户访问30s
速度 (页面/分钟) 1678 1618 1902 15432
速度 (字节/秒) 311045 299464 339006 1184762
成功请求个数 839 809 951 7716
失败请求个数 0 0 0 0
CPU占有率 90.30% 78.60% 99.90% 83.20%

webbench测试结论:
10个并发用户访问时, apache速度略优于nginx, 但是CPU占有率明显高于nginx;
100个并发用户访问时, nginx优势巨大,速度是apache的8倍左右, CPU占有率明显低于apache.

—————————————-开始 ab 测试 ———————————————————–

Apache Nginx Apache Nginx
ab -c 10 -n 1000 ab -c 10 -n 1000 ab -c 100 -n 1000 ab -c 100 -n 10000
文档长度(字节): 10684 10684 10684 3696
并发数: 10 10 100 100
测试运行时间(秒): 34.886 38.412 27.091 4.547
成功请求个数: 1000 1000 1000 1000
失败请求个数: 0 0 110 117
非2xx常规响应: 0 0 110 883
总传输字节: 11122000 11105000 10129032 4709431
HTML 传输直接: 10684000 10684000 9712262 4513596
平均每秒请求个数 28.66 26.03 36.91 219.91
每次请求平均时间 (ms毫秒): 348.861 384.12 2709.072 454.732
在某时间内(ms毫秒), 请求得到响应的比例
50.00% 318 326 2838 174
66.00% 373 423 3130 200
75.00% 412 461 3368 350
80.00% 430 477 3612 522
90.00% 478 523 4123 646
95.00% 523 565 4509 946
98.00% 599 683 5009 1590
99.00% 1016 787 5388 3150
100% (longest request) 1304 1233 5956 3578
CPU 88.80% 83.00% 99.90% 82.50

测试结论:
10个并发用户访问时, apache速度略优于nginx, 但是CPU占有率高于nginx;
100个并发用户访问时, nginx优势巨大,速度是apache的6倍左右,  CPU占有率明显低于apache.

—————————————-最终结论 ———————————————————–

最后结论, 不管是用ab, 还是webbench进行并发测试, 10个并发用户访问时, apache与nginx差别不大,  但是随着并发量增加, 100个并发用户访问时, nginx优势巨大, 测试结果是apache的 6~8 倍.

分享家:Addthis中国

gimp与gimpshop冲突

gimpshop安装后, 原来的gimp无法打开了, 命令行运行德话会提示undefined symbol: gimp_micro_version , 删除gimpshop就好了。

分享家:Addthis中国

原来vim能直接读写.tar.gz和.tar.bz2文件的

vim xxxx.tar.gz 成功读写,

vim xxxx.zip 乱码

vim xxxx.tar.bz2  成功读写

vim xxxx.rar 乱码

分享家:Addthis中国

Grahamsys推出Magento企业版

Grahamsys具有多年的电子商务开发经验, 提供专业的magento电子商务解决方案。

我们有信心为你的电子商务系统量身定做,提供最适合您业务需求的一整套方案。 我们最新推出的Magento企业版,基于magento核心代码, 集成了各种行业需求,充分考虑了国内用户的购物习惯和用户体验,是目前最专业的电子商务软件!

官方的Magento企业版价格昂贵, Grahamsys的Magento企业版能提供同样的功能,我们用最合理的报价提供最专业的服务。

Grahamsys的Magento企业版的特色:

  • 更强大的权限管理(基于Website 或 Store View)
  • 会员积分系统
  • 更灵活的客户分组和权限

另外,我们的独家特色还有:

  • 购物车自动更新
  • 更加灵活的分层导航

请联系我们 : sales@grahamsys.com

分享家:Addthis中国

Try Grahamsys Magento Enterprise Edition, Do Professional Ecommerce

Grahamsys,  a startup company based in Shanghai, provides professional magento  ecommerce solutions.

A complete and highly-customized Magento solution from scope definition to design, custom development and systems integration is what Grahamsys is very confident to deliver to you. With special attention to your specific business needs, Grahamsys will figure out the best solution which both caters to your requirements now and looks out for your interests from a long-term perspective such as the compatibility with future upgrades.
Given that such highly-customized services will only charge you a batch method price, Grahamsys’s Enterprise Customization Service based on Magento core code is actually more affordable to those who have just started their own business and more practical to those who find no way to come up with the cash for an enterprise edition.
[Get A Quote]
sales@grahamsys.com
Based on the core code of the Magento Community Edition, Varien’s Enterprise Edition is a new premium version of E-commerce platform which is offered through an annual subscription, the set price at $8,900 USD for a single server environment. Though the additional enterprise-exclusive features, the highlight of this edition, enable companies to enjoy far more than their money’s worth, the Magento Enterprise Edition, targeting medium or large sized companies, is not poised to those mom-and-pop store owners who may find the cost a little bit shocking, and who may also carve for the same service and are in desperate want of it.  Grahamsys is ready to help those Small & Middle Businesses realize their dream, but at an affordable price, by offering Magento customization and integration services as an alternative for the enterprise edition, since what Grahamsys can provide you with has almost covered all the highlighted Magento Enterprise Edition features, including:

  • Advanced Administrator Roles and Permission Restriction per Site (Website and Store View)
  • Logging of Administrator Actions
  • Customer Store Credits
  • Category View and Purchase permissions per on customer group (limited catalog access)
  • Private (Club) Sales including Events, Invitations and Category access permissions

And apart from the above, we are very happy to add the following exclusive features to our service list:

  • Auto-update shopping cart
  • Reward points integrated to coupon code and recommend system
  • Flexible layered navigation user interface

Please contact us : sales@grahamsys.com

分享家:Addthis中国

去除NetBeans编辑器红线的方法

Options -> Fonts & Colors -> Highlighting-> Text Limit Line , foreground设为和背景色一致,一般是白色。

Eclipse用惯了, 有条红线总是不爽。

分享家:Addthis中国

50个最好的wordpress插件

50个最好的wordpress插件

新闻来源:yeeyan
这些wordpress插件都按照类别大概分类,经测试完全兼容最新版本wordpress,如果你有更好的建议请在原博客留言,以便作者增加丰富这个列表。

管理wordpress评论的插件
Subscribe To Comments- 允许读者订阅特定一篇日志的留言提醒
WP AJAX Edit Comments- 利用AJAX技术,允许读者和管理员在日志中修改留言.
Close Old Posts- 直接关闭旧日志的留言功能.
WP Grins- 在日志中和留言框上提供可直接点击的表情.
WordPress Paged Comments- 评论分页功能,适合一些评论数较多的博客
Live Comment Preview- 实现留言实时预览最简单的方法.
Show Top Commentators- 在侧边栏显示评论榜,鼓励读者留言的好方法。
MyAvatars- 在评论中显示你 MyBlogLog上的头像
Comment Relish- 给在你博客第一次留言的读者发一封感谢信.
Favatars- 显示留言者网站的favicon图标.
Brian’s Threaded Comments- 为每个留言添加一个“回复”按钮,这样读者之间可以更好的针对某一问题讨论
Dofollow- 移除评论中的nofollow标签.
OpenID Comments for WordPress- 允许读者使用OpenID登陆、评论.
Extended Comment Options- 可以批量开放或关闭日志的评论/通告功能
Get Recent Comments- 显示最新评论/引用的摘要

防垃圾留言插件
Akismet- 智能阻止垃圾留言的插件,通过Akismet网络辨认是否属于垃圾留言
Spam Karma 2 (SK2)- 致力于有效阻止博客中各种自动垃圾留言,并尽力使普通留言者不受影响。
Bad Behavior- 利用脚本根据现有的留言机器人资料比对HTTP请求,阻止这类垃圾留言
WP-Contact Form with Spam Protection- 创建一个联系表单使读者可以更方便地联系到你
Defensio一项垃圾留言过滤服务,用语阻止垃圾留言
Digital Fingerprint— 可用语检测小偷程序.

WordPress SEO专家

Google XML Sitemaps Generator- 为你wordpress博客上的所以文章建立XML格式的sitemap文件,方便google等搜索引擎收录
Permalink Redirect- 使用301重定向你的日志永久链接,保证每篇文章都有一个唯一的永久地址。
All in One SEO Pack- 帮助你Wordpress搜索引擎优化
Head META Description- 利用摘要插入META简要(description) 标签
Enforce www. Preference- 在地址中强制加入/去掉WWW前缀或者index.php后缀
Quick META Keywords- 自动为已分类日志批量添加META关键词(Keywords )标签

WordPress 导航分页插件
Related Posts- 根据文章关键词建立相关文章列表,增强文章相关性并提高PV(浏览量)
WP-PageNavi- 为Wordpress添加更为强大的分页导航。非常好用。
Evermore- 结合Less插件,并改变系统的(more…)标签,当浏览多日志页面时,可为每篇日志生成摘要。
Random Redirect- 建立一个随机日志链接。
Lightbox JS Plugin- 为当页图片使用全新JS脚本的浏览方式,非常漂亮。
Homepage Excerpts- 弹性选择在首页显示全文或摘要
WordPress Mobile Edition- 当读者用移动设备浏览时,显示为特别定制的界面,以方便浏览
Popularity Contest- 根据文章浏览量、评论、引用等确定文章的受欢迎程序
Extended Live Archive- 实现动态的,AJAX浏览文档归类
Landing Sites- 当读者通过搜索引擎找到博客时,自动显示该关键词相关的日志。
Clean Archives- 显示一个整洁统一的归档列表,显示发布日期,文章标题,留言数等。
Custom Query String- 设定每一个单独页面的日志数,比如分类页面、归档页面以及搜索结果页面
KB Advanced RSS Widget- 一个可以让你完全控制RSS Feed的Widget
Adhesive- 可以让文章置顶
Permalinks Migration Plugin- 安全转换文章永久链接,防止由此带来的流量流失以及搜索引擎排名损失

WordPress 文章互动插件
Share This- 读者可以把文章加入到各种社会化书签/网摘,或者通过email发送链接地址推荐给朋友
Digg this- 方便的Digg你的文章
Delicious Cached++- 通过内建的MagpieRSS功能输出del.icio.us 上特定用户的最新收藏
WP-Notable- 在文章下面显示一系列图标,方便读者将文章提交到不同的社会化书签/网摘
WP-Email- 允许 读者推荐、发送你的文章给朋友
WP-PostRatings- 为博客文章增加AJAX评分系统
EasyTube- 方便的在文中加入Youtube视频
Twitter Updater- 编辑、发布文章时通知Twitter

WordPress 管理员工具
WordPress Database Backup- 随时备份博客数据
WP-Supercache- WP-Cache的改进版本,为博客生成Html静态化文件,优化访问速度.
Batch Categories- 批量管理日志分类,文章分类管理利器
PodPress- 将Wordpress转变成播客平台
TinyMCE Advanced- 为Wordpress默认的所见即所得编辑器TinyMCE增加16个插件,增加超过40个按钮
Exec-PHP- 允许在文章内容或摘要中运行PHP代码
Photo Dropper- 不离开编辑器,直接在Wordpress中插入Flickr中的图片
Wordpress Reporter- 方便地在后台查看Google Analytics 和 Feedburner统计数据
WordPress.com Stats- WordPress统计插件,需要申请一个WordPress.com 的API key
WP Tiger Administration- 转换Wordpress后台样式,使用MAC Tiger主题
Admin Drop Down Menu- 后台菜单转换成下拉菜单,减少点击次数
InstantUpgrade- 一键升级Wordpress
Maintenance Mode Plugin- 创建博客维护或者当机界面,以管理员登入仍可管理整个博客。
Theme Test Drive- 管理员可以安全地测试博客主题,读者访问时仍然显示原来主题

WordPress广告插件
Ad Rotator- 滚动展示特定txt文件中的广告
AdSense-Deluxe- 自动插入Google AdSense或者Yahoo Publisher Network 广告,并具备丰富的管理选项
Buy Me a Beer- 允许读者使用Paypal捐赠
Wordpress BankRoll- 拒绝中间商,让广告主直接购买博客的付费评论

WordPress 翻译插件
Global Translator- 以搜索引擎友好的方式将博客翻译成多种语言
Translator Plugin Pro- 将博客翻译成13+1种语言,需$30.
Wordpress RSS Feeds增强插件
Feedburner Feedsmith- 自动将所有feed转成Feedburner
Simple Feed Copyright-在全文输出feed文后添加简单版权说明
Add Related Posts to Your Feed- 在feed文章后添加相关日志列表,需要激活UTW 或 Related Posts 插件
RSS Signature- 在Feed后添加签名或版权声明.
WordPress 其他插件
Democracy- 为博客添加 AJAX 投票功能.
flickrRSS- 方便地显示 Flickr 图片.

翻译:小墨 欢迎访问:小墨|博客寻找更多Wordpress使用技巧
信息来源:听豆网[www.tindou.com]
原文地址:http://tindou.com/site/?viewnews-83

分享家:Addthis中国

vim 常用命令和常用设置

常用命令

常用设置

更改/etc/vim/vimrc  , 以下是yaozer常用的设置

  • 语法高亮  syntax on
  • 显示行号  set nu
  • 高亮搜索 set hlsearch
  • 在状态栏显示当前输入命令 set showcmd

常见问题

1,   vim命令很多, 记不住,怎么办?

yaozer出招:  大部分人记住最基本和最常用的命令即可,  第一步  i , ESC ,  :q , :q! , :wq 即可上手了。  第二步, 再学  dd, u, j , k 即可, 然后再稍微再学几个命令, 如 w, p, y  等就行了。

2, vim 如何进行区域的复制,粘贴?

yaozer出招:

  1. 习惯Windows操作的用户可以: 用鼠标选中区域, CTRL + Insert 复制, Shift + Insert 进行粘贴
  2. vim正统方法:区域复制的基本单位行,像复制从某行的中间开始,到下一行的某个位置, yaozer一般是用方法1用鼠标复制的, 用命令行一般就是先复制这2行,再删除多余的。复制1行 :yy复制 ,p粘贴 ; 复制3行: 3yy 复制, p粘贴。

3, (程序员常用)如何快速定位到某个行?

yaozer出招: 输入 : 100  就是定位到第100行, 最好设置 set nu, 显示行号。

附:vimtutor 的summary总结:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 1 SUMMARY

1. The cursor is moved using either the arrow keys or the hjkl keys.
h (left)       j (down)       k (up)       l (right)

2. To start Vim from the shell prompt type:  vim FILENAME <ENTER>

3. To exit Vim type:     <ESC>   :q!   <ENTER>  to trash all changes.
OR type:      <ESC>   :wq   <ENTER>  to save the changes.

4. To delete the character at the cursor type:  x

5. To insert or append text type:
i   type inserted text   <ESC>         insert before the cursor
A   type appended text   <ESC>         append after the line

NOTE: Pressing <ESC> will place you in Normal mode or will cancel
an unwanted and partially completed command.

Now continue with Lesson 2.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 2 SUMMARY

1. To delete from the cursor up to the next word type:    dw
2. To delete from the cursor to the end of a line type:    d$
3. To delete a whole line type:    dd

4. To repeat a motion prepend it with a number:   2w
5. The format for a change command is:
operator   [number]   motion
where:
operator – is what to do, such as  d  for delete
[number] – is an optional count to repeat the motion
motion   – moves over the text to operate on, such as  w (word),
$ (to the end of line), etc.

6. To move to the start of the line use a zero:  0

7. To undo previous actions, type:           u  (lowercase u)
To undo all the changes on a line, type:  U  (capital U)
To undo the undo’s, type:                 CTRL-R

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 3 SUMMARY

1. To put back text that has just been deleted, type   p .  This puts the
deleted text AFTER the cursor (if a line was deleted it will go on the
line below the cursor).

2. To replace the character under the cursor, type   r   and then the
character you want to have there.

3. The change operator allows you to change from the cursor to where the
motion takes you.  eg. Type  ce  to change from the cursor to the end of
the word,  c$  to change to the end of a line.

4. The format for change is:

c   [number]   motion

Now go on to the next lesson.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 4 SUMMARY

1. CTRL-G  displays your location in the file and the file status.
G  moves to the end of the file.
number  G  moves to that line number.
gg  moves to the first line.

2. Typing  /  followed by a phrase searches FORWARD for the phrase.
Typing  ?  followed by a phrase searches BACKWARD for the phrase.
After a search type  n  to find the next occurrence in the same direction
or  N  to search in the opposite direction.
CTRL-O takes you back to older positions, CTRL-I to newer positions.

3. Typing  %  while the cursor is on a (,),[,],{, or } goes to its match.

4. To substitute new for the first old in a line type    :s/old/new
To substitute new for all ‘old’s on a line type       :s/old/new/g
To substitute phrases between two line #’s type       :#,#s/old/new/g
To substitute all occurrences in the file type        :%s/old/new/g
To ask for confirmation each time add ‘c’             :%s/old/new/gc

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 5 SUMMARY

1.  :!command  executes an external command.

Some useful examples are:
(MS-DOS)         (Unix)
:!dir            :!ls            -  shows a directory listing.
:!del FILENAME   :!rm FILENAME   -  removes file FILENAME.

2.  :w FILENAME  writes the current Vim file to disk with name FILENAME.

3.  v  motion  :w FILENAME  saves the Visually selected lines in file
FILENAME.

4.  :r FILENAME  retrieves disk file FILENAME and puts it below the
cursor position.

5.  :r !dir  reads the output of the dir command and puts it below the
cursor position.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 6 SUMMARY

1. Type  o  to open a line BELOW the cursor and start Insert mode.
Type  O  to open a line ABOVE the cursor.

2. Type  a  to insert text AFTER the cursor.
Type  A  to insert text after the end of the line.

3. The  e  command moves to the end of a word.

4. The  y  operator yanks (copies) text,  p  puts (pastes) it.

5. Typing a capital  R  enters Replace mode until  <ESC>  is pressed.

6. Typing “:set xxx” sets the option “xxx”.  Some options are:
‘ic’ ‘ignorecase’       ignore upper/lower case when searching
‘is’ ‘incsearch’        show partial matches for a search phrase
‘hls’ ‘hlsearch’        highlight all matching phrases
You can either use the long or the short option name.

7. Prepend “no” to switch an option off:   :set noic

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 7 SUMMARY

1. Type  :help  or press <F1> or <Help>  to open a help window.

2. Type  :help cmd  to find help on  cmd .

3. Type  CTRL-W CTRL-W  to jump to another window

4. Type  :q  to close the help window

5. Create a vimrc startup script to keep your preferred settings.

6. When typing a  :  command, press CTRL-D to see possible completions.
Press <TAB> to use one completion.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

分享家:Addthis中国

pidgin登录msn失败:msn Connection error from Notification server: Reading error

在最新的pidgin 2.5.3上有段时间没法登录msn, 后经网上查阅, 通过 sudo apt-get install msn-pecan 装了插件,还是时好时坏,很不稳定。出错时会提示: msn  Connection error from Notification server: Reading error

现在的解决方法是: 更改msn登录协议,把原来的protocal : MSN 改为 WLM, 目前运行良好。

For English Readers:
Here is my solution to msn Connection error from Notification server: Reading error,
1, install new pidgin plugin,  (if ubuntu)sudo apt-get install msn-pecan.
2, change pidgin account protocal from MSN to WLM.

分享家:Addthis中国
Page 1 of 212