123
 123

Tip: 看不到本站引用 Flickr 的图片? 下载 Firefox Access Flickr 插件 | AD: 订阅 DBA notes --

2008-08-29 Fri

21:30 Oracle 2007年度数据库市场再占首位 (3668 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

根据Gartner公司最近发布的关系数据库市场2007年市场份额报告,Oracle以48.6%的高份额再占首位。
而2006年Gartner的统计数据显示Oracle的市场份额为47.9%,也就是说在2007年度,Oracle获得了0.7%的份额增长。

Oracle官方网站已经发布了这一消息

Gartner 2007 Worldwide RDBMS Market Share Reports 48.6% Share for Oracle (*)

Gartner has published their market share numbers by operating system for 2007 based on total software revenues. According to Gartner, Oracle

* Has 48.6 percent share (up from 47.9 percent in 2006) growing at 14.9 percent
* Is growing faster than the market average of 13.3 percent with US$8.29 Billions in revenues
* Continues to hold more market share than its two closest competitors combined

(*) Source: Market Share: Relational Database Management System Software by Operating System, Worldwide, 2007 - Colleen Graham, Bhavish Sood, Horiuchi Hideaki, Dan Sommer - July 11, 2008

除了Oracle之外,微软也在继续获得增长。
由于在亚洲和东欧销售强劲,2007年微软数据库软件销售额增长了16.5%,为31亿美元,同时微软的市场份额由17.6%提高到了18.1%
据专家分析,微软软件日益受到青睐的原因在于,与甲骨文和IBM的产品相比,微软基本版数据库软件中包含有更多功能,同时微软的产品更便宜。

在2007年,Oracle数据库软件销售额增长了14.9%,为83亿美元。甲骨文刺激销售的策略是不断推出新功能,向现有客户群销售这些新功能。这一战略已经获得了成功。

而根据Gartner的统计数据,2007年IBM数据库软件销售额增长了10%,为35亿美元,但是市场份额则由21.3%滑坡至20.7%。据说制约IBM数据库软件销售增长速度的一个因素是,IBM数据库软件客户通常在该公司的硬件上运行软件,IBM硬件的增长速度低于运行微软和甲骨文数据库软件的硬件。微软的数据库软件主要运行在Windows Server平台上,甲骨文的数据库软件则主要运行在Linux平台上。

在2007年171亿美元的数据库软件市场上,甲骨文、IBM、微软这三大巨头的市场份额达到了87%。其他商用数据库软件产品的份额不断萎缩。

-The End-

相关文章|Related Articles

评论数量(0)|Add Comments

本文网址:

19:05 杀蟑螂 (2046 Bytes) » 玉面飞龙的BLOG
蟑螂不好杀啊,总结一下我使用过的方法,给后来人留下一点宝贵的经验。 小强分品种,一般比较大的,有大拇指那么长的是国产本地货,科学名称叫做”黑胸大蠊”;比较小的,就叫做”德国小蠊”,进口货,德国小强的生命能力比”黑胸大蠊”强很多。 刚开始去买香雾诱杀剂。就是点燃熏香,将蟑螂引诱出来,熏倒,但并不是杀死,蟑螂喜欢这个味道,跟喝酒一样,吸毒吸晕了。各大超市都有卖。这样蟑螂就会晕倒在明面上,方便清扫。当然引燃的”毒雾”是狠毒的,人畜都杀。后来的结果是,黑胸大蠊都被诱杀了,死了20几只,后来再也没有看到大个的蟑螂。但是对德国小强不管用,它们活得好好的。 后来买喷杀的气雾剂,杀手牌的。对着小强或者小强经常出没的地方喷。对着小强喷杀的时候,小强立马四抓朝天,了地上了;但你出门转一圈回来,发现小强又不见了,估计是又醒了。失望。 后来在超市买了”小强最后的晚餐”,枪手牌。也没有什么作用。没见到有小强的尸体。 然后听人说,放花椒,可以驱走小强。但后来尝试,也不管用。 我还在网上看到有时用洋葱得,据说小强讨厌洋葱。尝试后也不用管用。小强不爱吃洋葱,但没有得吃了也会在洋葱上爬来爬去的。 后来在门口一元店买了几包药粉。1块1包。在蟑螂经常出没的地方放着。挺管用的。杀死不少小强。可以在明面上看到死去的小强,是彻底的死掉,活不过来的彻底死掉。但肯定有些小强客了药之后死在角落里。需要经常整理房间,清理死角。要不然比较恶心人。 搞得我还要经常清理房间。我租房快到期了,还是打算搬走。小强不好灭杀,每天去公司,打开笔记本,都能看到几只特别小的小强丛笔记本里钻出来。烦啊。
18:53 某上海网站的口碑营销=论坛刷贴? (4440 Bytes) » Fenng's shared items in Google Reader
在海内的王佳伦同学,发现了一个口碑营销的后台,然后通过百度快照,找到了一些蛛丝马迹,挺有意思。

先看图然后来看看百度快照



可以看到,这个用户传播的是“超印速”这家公司,说白了就是做什么在线定制印刷的公司,从快照可以看到,仅仅一个“口碑营销”的用户,就可以污染了多少论坛?上面有数字“用户terrisasa在7月10日的有效发帖列表,发帖298个,有效276个”

这种也叫口碑营销?这种充其量就是发贴机啊。这家傻B的上海公司,不知道是不是跟那个“书谷”有没有关联,那家公司曾号称是可以通过插广告的形式免费订购书籍,现在不知道是不是倒闭了,我当时还交了一笔钱呢,不多,就几百块吧,现在就不能定书了,也没有任何解释,也不退款。而这家网站提供最多的插入广告,就是这家“超印速”,按照经验来说,如果没什么关系不至于如此。呵呵

再人肉搜索了一下,这两家网站应该是一家的。看看他们的联系方式吧:
超印速的地址:上海市漕溪北路737弄1号3201室
书谷的地址:上海市漕溪北路737弄1号1001室

这两家使用的网站系统、技术、还有联系email的形式,连上下班的时间都是一模一样。而“书谷”已经属于骗人的状态,这家超印速还会远吗?

一家网站之所以会沦为垃圾网站,那是因为一从思想上垃圾化了,二是操作方式也比较垃圾。

现在在做“口碑营销”的公司,迟早会栽在“口碑”上,这就是轮回。

还是陈一舟比较有感触(仅校内用户可点):“上去得快的公司,一定死的快。”这可是陈一舟创业经历的最好写照啊。

阅读全文...

相关文章:抓虾 google reader 鲜果

12:31 Oracle唯一约束中NULL的处理 (612 Bytes) » yangtingkun
根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等,结果仍然是未知。根据这个定义,多个NULL值的存在应该不违反唯一约束。实际上Oracle也是如此实现的:SQL> CREATE TABLE T (ID NUMBER);表已创建。SQL> ALTER TABLE T ADD UNIQUE (ID);表已更改。SQL> INSERT INTO T VALUES (1);已创建 1 行。SQL> INSERT INTO T VALUES (1);INSERT INTO T VALUES (1)*第 1 行出现错误:ORA-00001: 违反唯一约束条件 (YANGTK.SYS_C007300)SQL> INSERT INTO T VALUES (NULL);已创建 1 行。SQL> INSERT INTO T VALUES (NULL);已...
11:02 Interview: FreeNAS for No-Cost Network Attached Storage (6651 Bytes) » Fenng's shared items in Google Reader

Few recent trends in storage have had as much momentum as Network Attached Storage (NAS). A NAS device can make a network more efficient and secure by supplying file-based data storage services to networked devices, or it can be used for applications such as streaming media. FreeNAS is free, lightweight, open source network-attached storage server software, based on FreeBSD. You can find a good tutorial on how to set up a free NAS server with it here. We recently caught up with Olivier Cochard-Labbe, FreeNAS founder, and Volker Theile, project administrator.

OStatic:  Who is your typical user? How do you support your users?

Volker Theile: I think the typical user is the person who simply wants to use the product without deeper knowledge of the OS and the services. In other words, he simply wants to stream music or videos via UPnP or DAAP, or share data on a network via CIFS/SMB. As far as support, it's done via our forums and the knowledge base.

OStatic:  How did you get involved in FreeNAS?

Volker Theile: Two years ago I had a hard disk crash and lost some of the data that had been stored on it--photos and documents. I began to search for a solution to store data more securely. I did not want to buy a commercial NAS.
     I had some hardware components lying around in the cellar, and I searched the web for an free NAS solution. OpenFiler was a little bit too big for what I was looking for, so i came across FreeNAS. It was easy to install and use.

OStatic: How have you monetized your project thus far?

Olivier Cochard-Labbe:  Google Ads provides the main revenues for this project. This generated, in the begining, over 300 Euros per month. I gave all the revenues to the main developer, because I don't want this money to corrupt my relation to FreeNAS by pushing me to add lots of ads on the website, for example. The donations we get are very small, but a lot more valuable to us than the Google ads, because the donations come from happy users who choose to pay.

OStatic: How do you benefit from the particular license you've chosen?

Olivier Cochard-Labbe:  The BSD licence is the most open license from my point of view. I didn't have time to read (and understand)  all the concepts in the GPL, and I needed a simple license. BSD is simple. One benefit to the license is that a company can sell FreeNAS embedded in their servers without any problem.

OStatic: What does the open source movement need?

Olivier Cochard-Labbe:  It needs contributors and time. Regarding contributors, it's very easy to contribute (sending a patch, giving advice, providing documentation), but very few people do it. When I chose to create FreeNAS, I was not a developer. I discovered PHP and FreeBSD by looking in the m0n0wall code (it was the model that was the closest to my needs). And in only one week, I created the first alpha release of FreeNAS.

Regarding time, one of the best things for open source would be for our employers to give us time to work on our open source projects. I've had to stop my contribution to FreeNAS because I have no more free time for it (but I have lots of ideas for improving it).

Trackback URL for this post:

http://ostatic.com/trackback/172145

Related Activities

Related Software

Related Blog Posts

10:30 小议compress表 (50920 Bytes) » OracleBlog.cn

总体说来,compress table的原来和compress index原理大致相同,compress table是压缩某表的同一字段下的相同的行,compress index是压缩复合索引中同一字段(一般是第一、二个字段)的相同行。

compress表可以通过user_tables.COMPRESSION查看是否是压缩表:

SQL> create table t_nocompress (a varchar2(20),b number,c number);
 
Table created.
 
SQL>
SQL>
SQL> create table t_compress (a varchar2(20),b number,c number) compress;
 
Table created.
 
SQL
SQL> create table tab_for_insert (a varchar2(20),b number,c number);
 
Table created.
 
SQL> insert into tab_for_insert select 'aa'||rownum,rownum,rownum from dba_objects;
 
88138 rows created.
 
SQL> insert into tab_for_insert select 'bb'||rownum,rownum,rownum from dba_objects;
 
88138 rows created.
 
SQL> insert into tab_for_insert select 'cc'||rownum,rownum,rownum from dba_objects;
 
88138 rows created.
 
SQL> /
 
88138 rows created.
 
SQL> commit;
 
Commit complete.
 
SQL>
SQL> update tab_for_insert set b=mod
 
2 
SQL>
SQL> update tab_for_insert set b=mod(b,10);
 
352552 rows updated.
 
SQL> update tab_for_insert set c=mod(c,5);
 
352552 rows updated.
 
SQL> commit;
 
Commit complete.
 
SQL>
SQL>
SQL>
SQL> insert into  TAB_FOR_INSERT select * from TAB_FOR_INSERT;
 
352552 rows created.
 
SQL> /
 
705104 rows created.
 
SQL> /
 
1410208 rows created.
 
SQL> /
 
2820416 rows created.
 
SQL> /
 
5640832 rows created.
 
SQL> /
 
11281664 rows created.
 
SQL> commit;
 
Commit complete.
 
SQL> select table_name,COMPRESSION from user_tables;
 
TABLE_NAME                     COMPRESS
----------------------------
-- --------
TAB_FOR_INSERT                 DISABLED
T_COMPRESS                     ENABLED
T_NOCOMPRESS                   DISABLED
 
SQL>

1.compress表和一般表的体积的比较以及insert时间差距:

SQL> insert /*+ append */ into T_NOCOMPRESS select * from TAB_FOR_INSERT;
 
22563328 rows created.
 
Elapsed: 00:00:45.50
SQL>
SQL>
SQL> insert /*+ append */ into T_COMPRESS select * from TAB_FOR_INSERT;
 
22563328 rows created.
 
Elapsed: 00:02:54.41
 
SQL> commit;
 
Commit complete.
 
 
SQL> select segment_name,bytes from user_segments where segment_name in ('T_COMPRESS','T_NOCOMPRESS') ;
 
SEGMENT_NAME                        BYTES
----------------------------
-- ----------
T_NOCOMPRESS                    475004928
T_COMPRESS                      349175808

2.比较用order和不用order的表大小:

SQL> insert /*+ append */ into T_COMPRESS select * from TAB_FOR_INSERT order by c,a,b;
    
22563328 rows created.
 
Elapsed: 00:04:17.49
 
SQL> select segment_name,bytes from user_segments where segment_name in ('T_COMPRESS');
 
SEGMENT_NAME                        BYTES
----------------------------
-- ----------
T_COMPRESS                      258998272
 
Elapsed: 00:00:06.12
 
--而没用
order by之前的大小是:
SEGMENT_NAME                        BYTES
----------------------------
-- ----------
T_COMPRESS                      349175808

3.非压缩表和压缩表之间的转换:

--改成压缩表
SQL> alter table T_NOCOMPRESS compress;
 
Table altered.
 
Elapsed: 00:00:00.02
--没做
move之前的大小
SQL> select segment_name,bytes from user_segments where segment_name in ('T_NOCOMPRESS');
 
SEGMENT_NAME                        BYTES
----------------------------
-- ----------
T_NOCOMPRESS                    475004928
 
Elapsed: 00:00:04.04
SQL>
SQL>
SQL> alter table T_NOCOMPRESS move;
 
Table altered.
 
Elapsed: 00:02:41.51
SQL>       
 
--
move之后的大小
SQL>
SQL> select segment_name,bytes from user_segments where segment_name in ('T_NOCOMPRESS');
 
SEGMENT_NAME                        BYTES
----------------------------
-- ----------
T_NOCOMPRESS                    349175808
 
Elapsed: 00:00:04.25

4.也可以像压缩复合索引一样,指定compress度:

SQL> select segment_name,bytes from user_segments where segment_name in ('T_NOCOMPRESS');
 
SEGMENT_NAME                        BYTES
----------------------------
-- ----------
T_NOCOMPRESS                    427819008
 
Elapsed: 00:00:06.53
SQL>
SQL>
SQL>
SQL> alter table T_NOCOMPRESS compress 2;
 
Table altered.
 
Elapsed: 00:00:00.03
SQL>
SQL> alter table T_NOCOMPRESS move;
 
Table altered.
 
Elapsed: 00:02:39.96
SQL>   select segment_name,bytes from user_segments where segment_name in ('T_NOCOMPRESS');
 
SEGMENT_NAME                        BYTES
----------------------------
-- ----------
T_NOCOMPRESS                    349175808

5.数据库9206中有bug,不能add/drop columns:

SQL> alter table T_COMPRESS add d number;
alter table T_COMPRESS add d number
                           *
ERROR at line 1:
ORA-22856: cannot add columns to object tables
 
 
Elapsed: 00:00:00.03
SQL>
--该
bugDoc IDNote:217292.1 ,或bug 2421054
 
 
可以用以下方法绕过:
1.alter table nocompress
2.move
注意上述
2个步骤,执行完第一步后,继续执行第二步才能完成;如果在执行第一步后,尝试add column,仍报错,再move之后,将同样也不能add column
SQL> alter table T_COMPRESS nocompress;
 
Table altered.
 
Elapsed: 00:00:00.02
 
SQL>
SQL> alter table T_COMPRESS add z number;
alter table T_COMPRESS add z number
                           *
ERROR at line 1:
ORA-22856: cannot add columns to object tables
 
 
Elapsed: 00:00:00.01
SQL>
SQL>
SQL> alter table T_COMPRESS move;
 
Table altered.
 
Elapsed: 00:00:39.91
SQL>   
SQL>
SQL> alter table T_COMPRESS add z number;
alter table T_COMPRESS add z number
                           *
ERROR at line 1:
ORA-22856: cannot add columns to object tables
 
--必须采用执行完以下
2步后再add
SQL> alter table T_COMPRESS nocompress;
 
Table altered.
 
Elapsed: 00:00:00.03
SQL> alter table T_COMPRESS move;
 
Table altered.
 
Elapsed: 00:00:39.52
SQLalter table T_COMPRESS add z number;
 
Table altered.
 
Elapsed: 00:00:00.03
SQL>
09:48 Log Buffer #112: A Carnival of the Vanities for DBAs (9857 Bytes) » Pythian Group Blog » Log Buffer

Welcome to the 112th edition of Log Buffer, the weekly review of database blogs.

First, thanks to last issue’s contributors–Joe Izenman, Dan Norris, and Jason Massie–for snatching victory from the jaws of defeat and making LB#111 a worthwhile read. That’s what it’s all about!

Oracle’s up first, starting with our old friend Doug Burns and his Time Matters series, in which he holds up to the light the concept of DB Time: “. . . [the] total time spent by user processes either actively working or actively waiting in a database call.” He continues, “There’s a lot more I could say about DB Time. Like all of the best performance concepts or methods (e.g. YAPP, Method-R) it can seem so obvious as to not be worth saying, but contains an enormous amount of common sense and technical rigour.”

Arup Nanda writes about the time he spent Diagnosing Library Cache Latch Contention. About half an hour, as it happened, but he’s a real pro, and his analysis just goes to show. To quote, Nuno Souto–who makes the best blog endorsements– “Damn useful stuff . . .  bookmarked.”

Tanel Poder has another script for you to fall in love with, which makes its debut in flexible sampling of any V$ or X$ view with sample.sql. It is, writes Tanel, “ . . . a simple but powerful sqlplus script for ad-hoc sampling of any V$ view.”

Kenneth Downs, the Database Programmer, offers Advanced Algorithm: Sequencing Dependencies, a smart look at satisfying dependencies in databases. What does that mean? Well for example, Kenneth writes, “All popular Linux distributions have a package installation system in which each package lists its required dependencies. If you want to install a large number of packages in one shot, producing a tangled bunch of related dependencies, today’s algorithm can be used to work them all out.”

That’s the kind of task for which we humans use tools like mind maps. Jason Arneil shares his ASM Mind Map.

Laurent Schneider went off-road and came back something not on the map at all: the difference between rollbac and rollback.

(more…)

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Slashdot
  • Google
  • del.icio.us
  • Facebook
  • bodytext
  • Technorati
  • TwitThis
  • Reddit
  • Spurl
  • De.lirio.us
  • Furl
  • blogmarks
  • Ma.gnolia
  • E-mail this story to a friend!
08:23 Explorer6 下的 max-height 属性 (2185 Bytes) » Fenng's shared items in Google Reader

今天有用户报告,说打开我们的页面会导致浏览器崩溃。查了下,原来是这句 CSS 导致了性能的问题

_height: expression(this.scrollHeight > 200 ? 200 + 'px' : 'auto');

看来还是 Exploer 的 CSS expression 作祟。简单的说明下这个语句,主要是实现 Exploer6 不支持的 max-height 属性而做的个 Hack(是个“历史遗留问题”)。

期前对于 CSS expression 也做过类似的测试,使用程度为慎用禁用(原因有三,仅 Exploer 支持、性能消耗很大、脚本和表现混杂)。

这一 Hack 姑且可以被认定为,是在 Exploer6 走向末路之前的“救命稻草”(但目前在日常的项目中,如果出现这样的代码,是无论如何都不会被允许的)。

最后,简单的写了个 DEMO,以及更多的信息可以查看这里

注: Exploer7 已经支持 max-height 等属性。


Gracecode.com | Permalink | Trackback | Wap | Rss | 2 comments


07:30 问题拾遗 (1633 Bytes) » Chanel [K]

今天在itpub上参与了两个比较有趣的小问题,记录一下。

1. sys_guid()问题
sys_guid()这个函数在Windows版本的Oracle数据库中和Linux版本的数据库中表现不同,在Windows中会返回随机的GUID,而Linux中则始终是相同的GUID。

2.Storeoutline问题
在Oracle 10.2.0.4版本中,Storeoutline似乎有功能上的bug,当然现在还不能确认。

07:14 Huge Performance Improvement for Bazaar Coming Soon (1595 Bytes) » Fenng's shared items in Google Reader

In writing my last article, I mentioned working with John Arbash Meinel, one of the lead developers of Bazaar, in attempting to diagnose and fix the performance bottlenecks apparent in using Bazaar with larger, history-rich projects like the MySQL Server. Well, after running some tests and building a custom branch of Bazaar that John pointed me to, I am happy to tell you that help is just around the corner. In my last article, you saw that doing a bzr branch lp:mysql-server took 91 minutes. This was a significant barrier to entry, I recognize. So, I think you'll be happy to see the results below, taken yesterday using John's patched-up Bazaar branch:

[529][jpipes@serialcoder: /home/jpipes/repos/mysql-server/5.1]$ time test_bzr branch lp:mysql-server/5.1 trunk
Branched 2677 revision(s).

real	23m25.094s
user	3m53.715s
sys	0m7.788s

Great work, John! MySQL contributors and engineers, you should see these performance patches appear in Bazaar 1.6 (1.6.1rc?) shortly. That should make a bunch of folks happier. Right, Mark? :-)

06:59 关于伦敦市长Boris Johnson (10318 Bytes) » Fenng's shared items in Google Reader

还记得奥运会闭幕式上,那个挥舞会旗的伦敦市长吗?

他的名字叫做鲍里斯·约翰逊(Boris Johnson),我觉得整个仪式中,他给人印象最深——上台的时候,他的西装居然没扣上!除此之外,走路的时候,他东张西望,竟然还将手插在口袋里!一点也不庄重,显得散漫和随便。

他的这种表现,引发了很多批评。一个网友就这样说:

不符合英国绅士和贵族的形象。让他自己看看这张照片,跟在罗格后面象个什么?小丑?仆人?小偷?跟想象中的英国绅士形象相差太远,咱不说你,你自己觉得这样能代表英国形象吗?

昨天,这位市长先生在最新一期的《观察家》(The Spectator)杂志上发表文章,为自己辩护。他在当伦敦市长之前,干了十几年记者,所以很能写,大家看下去就知道了。

他这样描述当时的情景:

We only had a few seconds left to get ready.

留给我们准备的时间很少。

There were 91,000 people in the stadium and (allegedly) about 1.5 billion watching apathetically at home.

体育场里有91000名观众,(据称)还有15亿人在家里看电视直播。

I advanced to the little plastic sign on the red carpet saying ‘Mayor of London’, and as we waited to be called to the centre of the arena I decided I had better spruce myself up.

红地毯上,有一块小牌子写着“伦敦市长”。我走到那里,等着轮到我们进入体育场中央,我觉得最好让自己显得精神一点。

Now the crowd were roaring and waving their red light sabres, and hastily I got out my wallet, mobile, keys, and all the other clobber that might impair my flag-waving performance, and handed them to a chap on my left.

人们发出欢呼,挥动手中的红色光棒。我急忙将钱包、手机、钥匙和其他零碎都掏出来,交给左边的一个小伙子,不能让它们影响我挥舞旗帜。

I rolled my shoulders like Rocky, and rehearsed the agenda again in my head. What could possibly go wrong? Take flag, get red circle out to left, wave four times, hand flag to flag-bearer. Piece of cake.

我像电影《第一滴血》里的洛奇那样,转动肩膀,又在脑子里复习了一遍流程。有可能出错吗?拿过旗帜,然后走到场地的左上角,挥舞四次,接着将旗帜交给旗手。真是小菜一碟。

Just as I had it taped, just as I was in the zone, I became aware of a chap beaming and pointing at his midriff. Then another chap was pointing at me, jabbing his finger in the direction of my stomach. Was I too fat? Was I insufficiently Olympian?

我一边默想,一边等候入场。这时我发觉,一个小伙子笑起来,还指着他的腹部。然后,另一个小伙子升出手,指着我的肚子。我太胖了吗?我不够资格参加奥运会?

‘Button,’ said the chap. ‘Do up button.’

“扣子,”他说,“扣上它们。”

I looked and saw that my fellow performers on the podium all had their jackets done up, and so did my charming Beijing counterpart, Mayor Guo. I reached instinctively for my middle button, and then thought, sod it.

我一看周围,主席台上,我的同胞都扣着外衣扣子,风度翩翩的北京郭市长也扣着。我本能地抓住中间那粒扣子,心里想,糟了。

I checked swiftly with the chap from the International Olympic Committee, and no, there is no Olympic jacket-button protocol. Open or shut: it’s up to you.

我急忙询问国际奥委会的工作人员,有没有关于扣子的规定。谢天谢地,没有。扣不扣,你自己决定。

I was going to do it my way, and on the matter of jacket buttons I was going to follow a policy of openness, transparency and individual freedom.

于是,我就按自己的想法做了。在扣子这件事上,我的政策是开放、透明和个人自由。

I am sad to see that some Chinese bloggers are now attacking me for my ‘lack of respect’, since there was no disrespect intended. It’s just that there are times when you have to take a stand.

我很难过地看到,有一些中国的网志作者攻击我“缺乏尊重”。我从心底里没有任何的不敬,我只是觉得,有些时候你必须有一个立场。

没想到啊,原来他不扣扣子是故意的,而且还上升到了个人自由的高度。看来他是不赞成将奥运会搞成一本正经,所以故意让全世界看到一个不那么正经的形象,真是有个性啊!

他还讲了他见到了胡锦涛主席。这一段很好玩。他说,接见之前的几个小时,他一直在背一句普通话。有人告诉他,胡主席听了这句话,会很高兴。结果握手以后,他脱口而出:“Renshi ni hen gaoxing.”胡主席微笑着回答:“Thank you very much.”

这一段我就不译成中文。(懂英语的同学,别错过黑体部分。)

‘Who are we going to see?’ whispered Seb Coe as we were ushered into the VIP sanctum of the Bird’s Nest stadium, a place of thick snowy carpet and a horseshoe of white armchairs. ‘We’re gonna see Hu,’ I whispered back. ‘Who?’ ‘Hu.’ Before I could elucidate further we were shaking hands with the Paramount Leader of the People’s Republic of China, general-secretary of the Chinese Communist Party and Chairman of the Central Military Commission, the 65-year-old Hu Jintao. For the last couple of hours I had been practising a phrase I had learned from my brother Max, who speaks fluent Mandarin. ‘He’ll love it,’ said Max. ‘It means, Very pleased to meet you.’ So it was with great excitement that I took the hand of the Chinese leader — a kindly-looking man with glossy black hair — and blurted my line. ‘Renshi ni hen gaoxing,’ I gushed, scanning his face for approval. ‘Thank you very much,’ he said, which was pleasing, though I think he said the same to Seb. We also met Jiang Zemin, the former paramount leader, and Hu’s predecessor. The workings of the Chinese Communist Party are of huge importance to geopolitics, and far from clear. Why is Jiang still knocking around? How did he become less paramount than Hu? Who knows? And Hu knows.

他还说,这个场景让他想起了一个笑话。上个世纪80年代的时候,英国外交大臣叫做杰弗里·豪(Geoffrey Howe)。一天,他会见苏联领导人勃列日涅夫,他说“How are you?”勃列日涅夫马上说:“不,不,你才是Howe。”(No, no, you are Howe!)……哈哈哈,太好笑了,我差点一口水喷出来。

I would remind you that Geoffrey Howe is said to have greeted Brezhnev with the words ‘How are you?’, to which the Russian brilliantly riposted, ‘No, no, you are Howe!’

看了这篇文章,我对这位伦敦市长发生了浓厚的兴趣,就去wikipedia查看了他的条目。果然,这个人很不简单。

他大学毕业后,先去咨询公司工作,但是觉得那里太闷了,干不下去,于是改当记者。(Try as I might, I could not look at an overhead projection of a growth profit matrix, and stay conscious.)当记者以后,他专门写一些讽刺性的政论,极富喜剧天才。就是因为他太喜欢搞笑,电视台还请他去当综艺节目嘉宾主持人,他客串了几期,居然获得了英国电视奖(British Academy Television Award)的提名。2004年,他出版了第一本小说《72个处女》(Seventy-Two Virgins),内容关于一个倒霉的议员,不幸卷入了恐怖分子刺杀美国总统的阴谋,据看过的人说,此书令人捧腹。

2008年,他宣布竞选伦敦市长,不可思议地竟然选上了。我猜想,这可能同赵本山担任北京市长的感觉,有点类似。总之看起来,伦敦市民也是很有喜剧精神的。

2008年5月6日,新市长第一天上任,竟然是骑着自行车去办公室的。

最后一件关于他的趣事是,2008年8月21日,他到北京的“英国之家”召开记者招待会。由于他以前也是记者,所以同台下很多人都认识,可以直接叫出名字。台下的英国记者也把他当作哥们,直接称兄道弟,一伙人嘻嘻哈哈就把记者招待会开完了。

现在回过头来,再看他在闭幕式上的举动,就显得很自然了。他的个性就是不喜欢那种刻板的、严肃的、压抑个人自由的体制,所以哪怕在奥运会,他也要提醒和证明这一点——个人必须有选择的自由。

我觉得这样也很好,没有人规定奥运会一定要是一个官方的、庄重的场合,办成民间的、轻松的风格,有什么不好呢?Google公司宣称它发现了10条真理,其中第9条是“不穿西装,不代表你不专业”(You can be serious without a suit)。总有一天,我想大多数人都会接受这一点:内在的东西才是最重要的,只有形式主义者才喜欢穿得西装笔挺。

(完)

06:25 北飞的候鸟 (2177 Bytes) » Chanel [K]

北飞的候鸟

独白:一个柔弱的女孩,
为了维护一段曾经完美圣洁的爱情,
付出了自己年轻而美好的生命。
曾幻想爱情那么甜蜜,为了他竭尽全力,
没想到他背信弃义,躺在别人怀里。
曾誓言我们永不分离,
拥有真爱很不容易,
去坚守爱情的阵地,
为了纯真和圣洁至死不渝。
你是一只断翅的候鸟,
迎着强烈北飞向北飞去,
就在最寒冷的冬夜,
孤孤单单没有一滴泪滴。
曾誓言我们永不分离,
拥有真爱很不容易;
去坚守爱情的阵地,
为了纯真的圣洁至死不渝。
你是一只断翅的候鸟,
迎着强烈北飞向北飞去。
就在最寒冷的冬夜,
孤孤单单没有一滴泪滴。
没有归去的来兮

这里是MV的链接
这里是MP3链接

03:31 Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第4版)[原创] (37443 Bytes) » Fenng's shared items in Google Reader
  [文章作者:张宴 本文版本:v4.0 最后修改:2008.08.29 转载请注明原文链接:http://blog.s135.com/read.php/366.htm]

  前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第4篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一,为推动 Nginx 在国内的发展产生了积极的作用。这是一篇关于Nginx 0.7.x系列版本的文章,安装、配置方式与第3篇文章相差不大,但配置参数有不同。Nginx 0.7.x系列版本虽然为开发版,但在很多大型网站的生产环境中已经使用。

  链接:《2007年9月的第1版》、《2007年12月的第2版》、《2008年6月的第3版

  点击在新窗口中浏览此图片

  Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

  Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客新浪播客网易新闻等门户网站频道,六间房56.com等视频分享网站,Discuz!官方论坛水木社区等知名论坛,豆瓣YUPOO相册海内SNS迅雷在线等新兴Web 2.0网站。



  Nginx 的官方中文维基:http://wiki.codemongers.com/NginxChs



  在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.7.13 + PHP 5.2.6 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍

  根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。

  而这台 Nginx 0.7.13 + PHP 5.2.6 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。

  在3万并发连接下,访问Nginx 0.7.13 + PHP 5.2.6 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457(关于Nginx的监控页配置,会在本文接下来所给出的Nginx配置文件中写明):

  点击在新窗口中浏览此图片

  我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量(更多信息见此),而服务器的系统负载也不高:

  点击在新窗口中浏览此图片



  安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.1,另在RedHat AS4上也安装成功)

  一、获取相关开源程序:
  1、利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装):
sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel


  2、RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包(事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在,通常是“xxx-devel”不存在,需要安装)。RedHat可以直接利用CentOS的RPM包安装,以下是RPM包下载网址:
  ①、RedHat AS4 & CentOS 4
  http://mirror.be10.com/centos/4/os/i386/CentOS/RPMS/
  http://mirror.be10.com/centos/4/os/x86_64/CentOS/RPMS/

  ②、RedHat AS5 & CentOS 5
  http://mirror.be10.com/centos/5/os/i386/CentOS/
  http://mirror.be10.com/centos/5/os/x86_64/CentOS/

  ③、RPM包搜索网站
  http://rpm.pbone.net/
  http://www.rpmfind.net/

  3、下载程序源码包:
  本文中提到的所有开源软件为截止到2008年8月28日的最新稳定版。
mkdir -p /data0/software
cd /data0/software
wget http://sysoev.ru/nginx/nginx-0.7.13.tar.gz
wget http://www.php.net/get/php-5.2.6.tar.gz/from/this/mirror
wget http://php-fpm.anight.org/downloads/head/php-5.2.6-fpm-0.5.8.diff.gz
#wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/
wget http://blog.s135.com/soft/linux/mysql/mysql-5.1.26-rc.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
#wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"
wget http://mirror.optus.net/sourceforge/m/mc/mcrypt/libmcrypt-2.5.8.tar.gz
#wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.7.tar.gz?modtime=1194463373&big_mirror=0"
wget http://mirror.optus.net/sourceforge/m/mc/mcrypt/mcrypt-2.6.7.tar.gz
wget http://pecl.php.net/get/memcache-2.2.3.tgz
#wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.tar.gz?modtime=1175740843&big_mirror=0"
wget http://mirror.optus.net/sourceforge/m/mh/mhash/mhash-0.9.9.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2



  二、安装PHP 5.2.6(FastCGI模式)
  1、编译安装PHP 5.2.6所需的支持库:
tar zxvf libiconv-1.12.tar.gz
cd libiconv-1.12/
./configure --prefix=/usr/local
make
make install
cd ../

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make
make install
cd ../../

tar zxvf mhash-0.9.9.tar.gz
cd mhash-0.9.9/
./configure
make
make install
cd ../

cp /usr/local/lib/libmcrypt.* /usr/lib
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

tar zxvf mcrypt-2.6.7.tar.gz
cd mcrypt-2.6.7/
./configure
make
make install
cd ../



  2、编译安装MySQL 5.1.26-rc
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
tar zxvf mysql-5.1.26-rc.tar.gz
cd mysql-5.1.26-rc/
./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile
make && make install
chmod +w /usr/local/webserver/mysql
chown -R mysql:mysql /usr/local/webserver/mysql
cp support-files/my-medium.cnf /usr/local/webserver/mysql/my.cnf
cd ../



  附:以下为附加步骤,如果你想在这台服务器上运行MySQL数据库,则执行以下两步。如果你只是希望让PHP支持MySQL扩展库,能够连接其他服务器上的MySQL数据库,那么,以下两步无需执行。
  ①、以mysql用户帐号的身份建立数据表:
/usr/local/webserver/mysql/bin/mysql_install_db --defaults-file=/usr/local/webserver/mysql/my.cnf --basedir=/usr/local/webserver/mysql --datadir=/usr/local/webserver/mysql/data --user=mysql --pid-file=/usr/local/webserver/mysql/mysql.pid --skip-locking --port=3306 --socket=/tmp/mysql.sock


  ②、启动MySQL(最后的&表示在后台运行)
/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local/webserver/mysql/my.cnf &



  3、编译安装PHP(FastCGI模式)
tar zxvf php-5.2.6.tar.gz
gzip -cd php-5.2.6-fpm-0.5.8.diff.gz | patch -d php-5.2.6 -p1
cd php-5.2.6/
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl
sed -i 's#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#& -liconv#' Makefile
make
make install
cp php.ini-dist /usr/local/webserver/php/etc/php.ini
cd ../



  4、编译安装PHP5扩展模块
tar zxvf memcache-2.2.3.tgz
cd memcache-2.2.3/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
cd ../

tar jxvf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3/
/usr/local/webserver/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
cd ../


  5、修改php.ini文件
  手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"
  修改为extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"
  并在此行后增加以下几行,然后保存:
  extension = "memcache.so"

  再查找output_buffering = Off
  修改为output_buffering = On

  自动修改:若嫌手工修改麻烦,可执行以下shell命令,自动完成对php.ini文件的修改:
sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\n#' /usr/local/webserver/php/etc/php.ini
sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/webserver/php/etc/php.ini


  6、配置eAccelerator加速PHP:
mkdir -p /usr/local/webserver/eaccelerator_cache
vi /usr/local/webserver/php/etc/php.ini

  按shift+g键跳到配置文件的最末尾,加上以下配置信息:
引用
[eaccelerator]
zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="300"
eaccelerator.shm_prune_period="120"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


  修改配置文件:
vi /etc/sysctl.conf

  输入以下内容:
引用
kernel.shmmax = 134217728

  然后执行以下命令使配置生效:
/sbin/sysctl -p



  7、创建www用户和组,以及供blog.s135.com和www.s135.com两个虚拟主机使用的目录:
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
mkdir -p /data0/htdocs/blog
chmod +w /data0/htdocs/blog
chown -R www:www /data0/htdocs/blog
mkdir -p /data0/htdocs/www
chmod +w /data0/htdocs/www
chown -R www:www /data0/htdocs/www


  8、创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):
  在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件:
rm -f /usr/local/webserver/php/etc/php-fpm.conf
vi /usr/local/webserver/php/etc/php-fpm.conf

  输入以下内容(如果您安装 Nginx + PHP 用于程序调试,请将以下的<value name="display_errors">0</value>改为<value name="display_errors">1</value>,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页):[codes=xml]


       All relative paths in this config are relative to php's install prefix

       

               Pid file
               /usr/local/webserver/php/logs/php-fpm.pid

               Error log file
               /usr/local/webserver/php/logs/php-fpm.log

               Log level
               notice

               When this amount of php processes exited with SIGSEGV or SIGBUS ...
               10

               ... in a less than this interval of time, a graceful restart will be initiated.
               Useful to work around accidental curruptions in accelerator's shared memory.
               1m

               Time limit on waiting child's reaction on signals from master
               5s

               Set to 'no' to debug fpm
               yes

       

       

               

                       Name of pool. Used in logs and stats.
                       default

                       Address to accept fastcgi requests on.
                       Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
                       127.0.0.1:9000

                       

                               Set listen(2) backlog
                               -1

                               Set permissions for unix socket, if one used.
                               In Linux read/write permissions must be set in order to allow connections from web server.
                               Many BSD-derrived systems allow connections regardless of permissions.
                               
                               
                               0666
                       

                       Additional php.ini defines, specific to this pool of workers.
                       
                               /usr/sbin/sendmail -t -i
                               0
                       

                       Unix user of processes
                       www

                       Unix group of processes
                       www

                       Process manager settings
                       

                               Sets style of controling worker process count.
                               Valid values are 'static' and 'apache-like'
                               static

                               Sets the limit on the number of simultaneous requests that will be served.
                               Equivalent to Apache MaxClients directive.
                               Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
                               Used with any pm_style.
                               200

                               Settings group for 'apache-like' pm style
                               

                                       Sets the number of server processes created on startup.
                                       Used only when 'apache-like' pm_style is selected
                                       20

                                       Sets the desired minimum number of idle server processes.
                                       Used only when 'apache-like' pm_style is selected
                                       5

                                       Sets the desired maximum number of idle server processes.