123
 123

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

2008-07-22 Tue

22:31 10g树形查询新特性CONNECT_BY_ISCYCLE的9i实现方式(二) (664 Bytes) » yangtingkun
在10g中Oracle提供了新的伪列:CONNECT_BY_ISCYCLE,通过这个伪列,可以判断是否在树形查询的过程中构成了循环,这个伪列只是在CONNECT BY NOCYCLE方式下有效。初步实现CONNECT BY NOCYCLE的功能。10g树形查询新特性CONNECT_BY_ISCYCLE的9i实现方式(一):http://yangtingkun.itpub.net/post/468/466977有了前面一篇的基础,可以获取到类似SYS_CONNECT_BY_PATH的ID字符串,通过解析这个字符串就可以从原表中来读取对应的记录。在前不久刚刚写过一篇文章,描述如何处理将固定字符分隔的字符串转化为表的形式:http://yangtingkun.itpub.ne...
21:38 姚明@LinkedIn Yao Ming - LinkedIn [del.icio.us] (239 Bytes) » 车东[Blog^2]
姚明在LinkedIn上目前有8个联系人,离我3度。最新姚明的有奖问题咨询: 体育是否在你的工作生活中的起到重要作用? Has participating in sports made an important difference in your professional life?
17:37 《深入浅出Oracle》修订初稿定稿 (2859 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

经过几周连续的修订工作,到今天,《深入浅出Oracle》的修订已经基本完成。

修订后,新书增加了一章,扩展为10章,全书的整体结构没有太大变化,但是在书名的三个方向都做了极大的扩展。
入门:在基础方面增加或详细描述了相关知识
进阶:对深入部分进行进一步深入阐述,对10g与11g的一些新特性进行补充,但是新特性的补充是根据全书架构需要进行的,并非盲目,这不是一本新特性的专门介绍图书。
诊断案例:增加了一些这几年遇到的有趣案例,结合分布到各个章节。

内容的增加并没有引起页码的太多扩展,修订中对原书的代码会引用部分进行了严格压缩,使得内容更丰富,节奏更紧凑。
目前修订完成的内容共有550页左右,在最后的定稿过程中会进一步压缩,最终应该控制全书在500页左右。

目前粗略的估计一下,除了修正之前的存在的一些问题,新书增加了大约150页,也就是大于30%的新内容,最后定稿后,新内容份额估计还会有所增加。

每次打开书稿就总是想添加新的东西进去,这样显然是没有穷尽的,所以,最后一次从头到尾定稿后,全书的内容就会确定下来,希望这一工作能够早日结束!

-The End-

相关文章|Related Articles

评论数量(4)|Add Comments

本文网址:

17:05 安全第一 (936 Bytes) » Fenng's shared items in Google Reader

安全第一,安全第一。

机房干活还是应该2个人以上,出事好有个照应。
没玩过的东西千万别玩,强电的东西千万别碰。
做事别怕麻烦,图省事有时候就会出事。

昨天都快下班了,得到一个消息,有个用户在乡下机房里走网线的时候被电了一下。当时根本不清楚情况,赶紧赶到下面机房里。还好没大事,就是穿网线的时候不小心手碰到了220V的金属线,小小电了一下,一起干活的赶紧送他到医院。只是手上黑了一块,估计得留个疤作纪念了。空气开关和各班之间的1U都不到的窄缝里,本来不该穿网线的地方,要去穿几条网线,结果不小心就碰到了。还好是交流220,要是直流的,估计问题会大些。

...
15:21 NetworkManager: Secret weapon for the Linux road warrior (11376 Bytes) » Red Hat Magazine

For years I have envied how easy my Windows- and Mac-based peers had it when traveling with their laptops. They connect to hotspots with ease, get online while I was still logging into root and running some tools. It just wasn’t fair. I wanted an integrated easy-to-use tool that did not require bringing up a shell or logging into root.

I now have that tool in NetworkManager. In this article I will explain what NetworkManager is, what capabilities exist in the tool (in both Fedora and Red Hat Enterprise Linux), and what you can do to extend it to give you more control over your system than before.

What is NetworkManager?

NetworkManager is a software utility that allows a desktop user to manage wired, wireless, modem, WWAN/3G, and VPN network connectivity from a single source. It does not require root access or manual editing of configuration files.

NetworkManager started as a Gnome project and initially appeared in Fedora. It is now supported on multiple desktop environments (Gnome, KDE, Xfce, etc.) and in multiple distributions (Fedora, SuSE, Ubuntu, Gentoo, Debian, etc.). NetworkManager uses dbus and hal to provide network status updates to other desktop applications, allowing them to alter their operation based on this information. For instance, if NetworkManager shows the network is offline, then apps like Evolution and Pidgin will put themselves into offline mode andwait for the network to come online.

How is the NetworkManager software deployed on the system?

NetworkManager is deployed in two parts. The first part is the NetworkManager daemon, which is found in the package NetworkManager. This daemon should be set to start while the system is booting. This can be accomplished by entering the following command as root:

    # /sbin/chkconfig NetworkManager on

You can also start NetworkManager manually by entering the following command as root:

    # /sbin/service NetworkManager start

The second part is the user client, which normally takes the form of an applet. This applet (nm-applet) can be found in the NetworkManager-gnome package, and should be part of the basic Gnome desktop installation. You will not need to add this applet to your desktop. Gnome will add the nm-applet control to the Notification Area applet when the NetworkManager daemon is active.

How does NetworkManager work?

For the user, most everything will be done via the NetworkManager applet. Exactly what needs to be done depends on the type of networking the user needs to activate.

Wired network

If the system the user is logged into is on a wired network (Ethernet), the user does not need to do anything. NetworkManager will look for the link on the network port. When the link is active, it will bring up the interface and then ask for network information via DHCP.

Wireless Network

If the user is trying to connect via wireless, NetworkManager is especially helpful. As long as the wireless device is active, NetworkManager will scan for available networks and will attempt to connect to the last network you connected to that it can see. If the network it is trying to connect to is a secure network (using WEP, WPA, WPA2, or LEAP) it will request the appropriate security information. Once the information is entered, NetworkManager will try to store this information into the GNOME keyring manager.

To connect to a different network than the one that NetworkManager chooses, simply click on the applet and choose a different wireless network.

NM-Wireless

WWAN network (3G/EVDO/HSDPA/RTTx1/EDGE)

With the release of NetworkManager 0.70, users can now choose WWAN networking. Most of these cards require activation in Windows, but NetworkManager can handle the auto-configuration some cards need for use under Linux. Other cards may still require some minimal account information to activate and use.

If the card is plugged in when NetworkManager starts, it will be autodetected and an attempt to auto-configure the card will be made when you request a connection to the network. If auto-configuration is successful, the user can then just select the card in the applet menu and connect.

NM-CDMA

VPN connectivity

Once a successful network connection has been made, the user can also use NetworkManager to activate a VPN connection. Currently, there are modules providing support for OpenVPN and Cisco (via vpnc) VPN connectivity.

The VPN connection will be configured, activated, and deactivated via the applet. Username, password, group passwords, and other information can be stored in the GNOME keyring manager, or the user can choose to be prompted to enter some—or all—of the information at each login.

What else can NetworkManager do?

Beside managing your network connectivity, NetworkManager has another key feature. NetworkManager can run scripts when there is a network state change on any interface, using the network interface and the up/down state as variables. In prior releases, this functionality was provided by a separate daemon called NetworkManagerDispatcher. As of NetworkManager 0.70 in Fedora 9, this functionality is now integrated into NetworkManager itself.

In Bash scripts written for NetworkManager, the variable $1 equals the interface whose state has changed and triggered the script. Variable $2 equals the state of the interface (up or down). No other variables are needed.

Let’s take a look at one of the scripts that is included with Fedora 9:

# cat /etc/NetworkManager/dispatcher.d/05-netfs

#!/bin/sh

export LC_ALL=C

if [ "$2" = "down" ]; then
        /sbin/ip route ls | grep -q ^default || {
                [ -f /var/lock/subsys/netfs ] && /etc/rc.d/init.d/netfs stop
        }
fi

if [ "$2" = "up" ]; then
        /sbin/ip -o route show dev "$1" | grep -q '^default' && {
                /sbin/chkconfig netfs && /etc/rc.d/init.d/netfs start
        }
fi

When an interface comes up and adds itself as the default route, the script starts the netfs service. This script also stops the netfs service when an interface goes down and no default route remains. Effectively, this will mount your NFS and CIFS shares when you have access to the network, and will unmount those same shares when the network goes down. Using this script as an example, you can easily write your own scripts to run various commands as the network state changes.

How can I best use NetworkManager in the field?

Now that you have a good idea of how NetworkManager works and what it can do, let’s talk about how to best use NetworkManager in the field. Now that you have NetworkManager managing your network connectivity, make sure your network interfaces are not trying to start on boot. Nothing is more annoying than having your laptop tell you that your wired network is not available when you are sitting on a plane. If you are using NetworkManager 0.70 (currently in Fedora 9), you should also disable the network service itself, as it may conflict with NetworkManager.

You can go further, writing NetworkManager scripts to activate various services only when they are needed. Many of the init scripts in Linux make the assumption that your system is a server or a workstation with continuous access to the network. Things like ntp, cups, sshd, even rhnsd do not need to be running while you have no network connectivity. These services can be disabled, set to run only when NetworkManager starts them via a custom script on a network state change.

Using the previously posted script as a guide, a script to manage sshd might look like this:

# cat /etc/NetworkManager/dispatcher.d/10-sshd

#!/bin/sh
#
# Start and stop sshd based on network availability using NetworkManager
#

export LC_ALL=C

if [ "$2" = "down" ]; then
        /sbin/ip route ls | grep -q ^default || {
                [ -f /var/lock/subsys/sshd ] && /etc/rc.d/init.d/sshd stop
        }
fi

if [ "$2" = "up" ]; then
        /sbin/ip -o route show dev "$1" | grep -q '^default' && {
                /sbin/chkconfig sshd && /etc/rc.d/init.d/sshd start
        }
fi

You could substitute “rhnsd” or “cups” for “sshd”, and the script should work equally well for those tasks..

If you are a administrator tasked with managing Red Hat or Fedora systems of remote employees, the scripting functionality can be even more handy. You can write a script that looks for the activation of the VPN interface then sends an email letting you know the system is online. You could have the system check in with a Satellite server located within your firewall, installing updates you previously scheduled for it. The possible uses here are many.

The student is now the master

No longer do I envy my Windows-based peers and their easy mobile connectivity. NetworkManager is constantly impressing me, adding functionality and allowing me to be more efficient on the road. This Swiss Army knife of Linux networking gives me the control I need over my connectivity whether at home, coffee house, or airport. Now that you know what NetworkManager is, how it works, and how best to use it, try it out of your own system. I trust you will find NetworkManager works as well for you as it did for me.

More information

  1. NetworkManager main project page
  2. NetworkManager in Fedora
  3. dbus and hal
  4. KNetworkManager
11:52 EnterpriseDB's Survey Results: Interesting, But I Have to Wonder.... (5479 Bytes) » Fenng's shared items in Google Reader

Today at the OSCON conference in Oregon, open source database company EnterpriseDB announced the results of its 2008 Open Source Database Survey. It collected the opinions of 500 corporate IT leaders on enterprise adoption of open source databases. There is an executive summary of the findings available as a free PDF download.  EnterpriseDB focuses as a company on PostgreSQL, so it is calling out many of the findings from the survey related to that product, but there are other points of interest. In a few cases, I had to question the results. For example, only nine percent of respondents said they prefer commercial databases to open source ones.

In a recent story we did on a Forrester survey of IT decision makers, there were pronounced opinions about the security of open source software, and other concerns. I have to strongly wonder about more than nine in 10 IT leaders saying they prefer open source databases. That makes me think the sample here may be skewed.

The EnterpriseDB survey includes some information about what IT departments are migrating away from. A majority of them reported that they are migrating from Microsoft SQL Server and Oracle's databases to open source solutions.For people who are migrating to open source, those would be logical applications for them to be migrating from.

Among the most important criteria survey respondents reported seeing as important for an open source database were performance and scalability. Ease of use was next on the list, and reliability followed that.

In other findings, twenty-nine percent of respondents cited Web 2.0-style applications as the most popular style used in conjunction with open source databases. Seventy-eight percent of the respondents said that their databases were zero to fifty gigabytes in size. Isn't that a little small for databases overseen by "corporate IT leaders?"

Among platforms for deploying open source databases, the survey shows Linux as the most popular at sixty-seven percent of responses. Windows was next at 27 percent, Mac OS X was ranked third, and Solaris, AIX and HP-UX were at the very bottom. PHP and Java were ranked as the most popular languages for building database-centric applications. While there are a few points of interest in the findings, quite a few of them just don't line up with what I've seen elsewhere.

Trackback URL for this post:

http://ostatic.com/trackback/169326

Related Activities

Related Software

Related Blog Posts

11:41 Non-blocking JavaScript Downloads (11647 Bytes) » Fenng's shared items in Google Reader

Stoyan Stefanov.About the Author: Stoyan Stefanov is a Yahoo! web developer working for the Exceptional Performance team and leading the development of the YSlow performance tool. He also an open-source contributor, conference speaker and technical writer: his latest book is called Object-Oriented JavaScript.

External JavaScript files block downloads and hurt your page performance, but there is an easy way to work around this problem: use dynamic scripts tags and load scripts in parallel, improving the page loading speed and the user experience.

The problem: scripts block downloads

Let’s first take a look at what the problem is with the script downloads. The thing is that before fully downloading and parsing a script, the browser can’t tell what’s in it. It may contain document.write() calls which modify the DOM tree or it may even contain location.href and send the user to a whole new page. If that happens, any components downloaded from the previous page may never be needed. In order to avoid potentially useless downloads, browsers first download, parse and execute each script before moving on with the queue of other components waiting to be downloaded. As a result, any script on your page blocks the download process and that has a negative impact on your page loading speed.

Here’s how the timeline looks like when downloading a slow JavaScript file (exaggerated to take 1 second). The script download (the third row in the image) blocks the two-by-two parallel downloads of the images that follow after the script:

Timeline - Blocking behavior of JavaScript files

Here’s the example to test yourself.

Problem 2: number of downloads per hostname

Another thing to note in the timeline above is how the images following the script are downloaded two-by-two. This is because of the restriction of how many components can be downloaded in parallel. In IE <= 7 and Firefox 2, it’s two components at a time (following the HTTP 1.1 specs), but both IE8 and FF3 increase the default to 6.

You can work around this limitation by using multiple domains to host your components, because the restriction is two components per hostname. For more information of this topic check the article “Maximizing Parallel Downloads in the Carpool Lane” by Tenni Theurer.

The important thing to note is that JavaScripts block downloads across all hostnames. In fact, in the example timeline above, the script is hosted on a different domain than the images, but it still blocks them.

Scripts at the bottom to improve user experience

As Yahoo!’s Performance rules advise, you should put the scripts at the bottom of the page, towards the closing </body> tag. This doesn’t really make the page load faster (the script still has to load), but helps with the progressive rendering of the page. The user perception is that the page is faster when they can see a visual feedback that there is progress.

Non-blocking scripts

It turns out that there is an easy solution to the download blocking problem: include scripts dynamically via DOM methods. How do you do that? Simply create a new <script> element and append it to the <head>:

var js = document.createElement('script');
js.src = 'myscript.js';
var head = document.getElementsByTagName('head')[0];
head.appendChild(js);

Here’s the same test from above, modified to use the script node technique. Note that the third row in the image takes just as long to download, but the other resources on the page are loading simultaneously:

Non-blocking JavaScript timeline

Test example

As you can see the script file no longer blocks the downloads and the browser starts fetching the other components in parallel. And the overall response time is cut in half.

Dependencies

A problem with including scripts dynamically would be satisfying the dependencies. Imagine you’re downloading 3 scripts and three.js requires a function from one.js. How do you make sure this works?

Well, the simplest thing is to have only one file, this way not only avoiding the problem, but also improving performance by minimizing the number of HTTP requests (performance rule #1).

If you do need several files though, you can attach a listener to the script’s onload event (this will work in Firefox) and the onreadystatechange event (this will work in IE). Here’s a blog post that shows you how to do this. To be fully cross-browser compliant, you can do something else instead: just include a variable at the bottom of every script, as to signal “I’m ready”. This variable may very well be an array with elements for every script already included.

Using YUI Get utility

The YUI Get Utility makes it easy for you to use script includes. For example if you want to load 3 files, one.js, two.js and three.js, you can simply do:

var urls = ['one.js', 'two.js', 'three.js'];
YAHOO.util.Get.script(urls);

YUI Get also helps you with satisfying dependencies, by loading the scripts in order and also by letting you pass an onSuccess callback function which is executed when the last script is done loading. Similarly, you can pass an onFailure function to handle cases where scripts fail to load.

var myHandler = {
    onSuccess: function(){
        alert(':))');
    },
    onFailure: function(){
        alert(':((');
    }
};

var urls = ['1.js', '2.js', '3.js'];
YAHOO.util.Get.script(urls, myHandler);

Again, note that YUI Get will request the scripts in sequence, one after the other. This way you don’t download all the scripts in parallel, but still, the good part is that the scripts are not blocking the rest of the images and the other components on the page. Here’s a good example and tutorial on using YUI Get to load scripts.

YUI Get can also include stylesheets dynamically through the method
YAHOO.util.Get.css() [example].

Which brings us to the next question:

And what about stylesheets?

Stylesheets don’t block downloads in IE, but they do in Firefox. Applying the same technique of dynamic inserts solves the problem. You can create dynamic link tags like this:

var h = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.href = 'mycss.css';
link.type = 'text/css';
link.rel = 'stylesheet';
h.appendChild(link);

This will improve the loading time in Firefox significantly, while not affecting the loading time in IE.

Another positive side effect of the dynamic stylesheets (in FF) is that it helps with the progressive rendering. Usually both browsers will wait and show blank screen until the very last piece of stylesheet information is downloaded, and only then they’ll start rendering. This behavior saves them the potential work of re-rendering when new stylesheet rules come down the wire. With dynamic <link>s this is not happening in Firefox, it will render without waiting for all the styles and then re-render once they arrive. IE will behave as usual and wait.

But before you go ahead and implement dynamic <link> tags, consider the violation of the rule of separation of concerns: your page formatting (CSS) will be dependent on behavior (JS). In addition, this problem is going to be addressed in future Firefox versions.

Other ways?

There are other ways to achieve the non-blocking scripts behavior, but they all have their drawbacks.

Method Drawback
Using defer attribute of the script tag IE-only, unreliable even there
Using document.write() to write a script tag
  1. Non-blocking behavior is in IE-only
  2. document.write is not a recommended coding practice
XMLHttpRequest to get the source then execute with eval().
  1. eval() is evil”
  2. same-domain policy restriction
XHR request to get the source, create a new script tag and set its content
  1. more complex
  2. same-domain policy
Load script in an iframe
  1. complex
  2. iframe overhead
  3. same-domain policy

Future

Safari and IE8 are already changing the way scripts are getting loaded. Their idea is to download the scripts in parallel, but execute them in the sequence they’re found on the page. It’s likely that one day this blocking problem will become negligible, because only a few users will be using IE7 or lower and FF3 or lower. Until then, a dynamic script tag is an easy way around the problem.

Summary

  • Scripts block downloads in FF and IE browsers and this makes your pages load slower.
  • An easy solution is to use dynamic <script> tags and prevent blocking.
  • YUI Get Utility makes it easier to do script and style includes and manage dependencies.
  • You can use dynamic <link> tags too, but consider the separation of concerns first.
09:58 Advanced Oracle Troubleshooting Guide, Part 8: Even more detailed latch troubleshooting using LatchProfX (1 Bytes) » Tanel Poder's blog: Core IT for geeks and pros
09:39 强图 (325 Bytes) » Uploads from dbanotes

dbanotes posted a photo:

强图

左四=右二

双胞胎

09:32 我不在乎 Blog 的统计数据 (2111 Bytes) » Fenng's shared items in Google Reader

有朋友问我,“你的 Blog 现在流量多少,有多少人订阅你的 Blog”甚至“你的 Blog 赚钱了吗” ?碰到这样的问题,我首先就会敷衍,如果对方继续,我甚至会忽视他。

坦白的讲,这些数据我已经很久没有关注(虽然我也加了统计代码)。就我个人而言,开设 Blog 的目的很简单,它只是记录本人观点、技术笔记以及生活的地方。

建议在每天花那么多时间,去了解你的 Blog 统计数据之前,考虑下为什么要这样做。如果你真的没有事情干,你可以做些其他更有意义的事情,比如诅咒你的上司。

其次,不要说什么统计数据会影响写 Blog 的计划。坦白的讲,如果你觉得其他人对你文章的看法很重要,那么将其发到论坛去讨论岂不是更好?

再次,你敢保证这些统计数据是完全真是可靠的吗?比如 RSS 订阅数字的真实度 -- 搞不清楚为什么现在很多的 Blogger 都那么关注这玩意?

总之,你不承认每天看这些数据,其实是自我安慰的一种方式?就个人而言,写些有价值的内容才是持续 Blog 生命力的最根本途径。


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

08:43 动态SQL做游标 (360 Bytes) » 中国雅虎_站长天下_www.dbaleading.com_原创文章
前些天,有个朋友问我关于动态SQL做游标的题,他有一个存储过程,使用了动态SQL做游标,可是怎么调试都没有结果出来,请我帮忙看看.等他把文件发给我一看,呵呵,他这个动态SQL是类似这么用的:DECLARE V_ID NUMBER ; v_1 NUMBER ; CURSOR CUR_1 IS SELECT ID FROM TEST WHERE ID = V_ID ;BEGIN V_ID := 3
08:38 小商品交易城和CBD商圈 (3523 Bytes) » Fenng's shared items in Google Reader
   6月份的时候,跑了趟郑州,在27广场哪里逗留了两天;
   7月份的时候,在上海逛街,在徐家汇这里潇洒了两夜;

   在郑州27是小商品交易城,所有的店铺是小型的,10来个平方的小铺,或者7,8十平方的小店;
   在上海徐家汇是大的CBD商圈,基本上都是大商场,其中以品牌专区、专卖店为多;

   可是,你知道么,无论是小商品交易城还是CBD商圈,最赚钱的除了店铺或者品牌专区之外,还有谁么?是商铺所有者,这些可能是地产开发商,也可能是中介,但不管是什么,其实商铺的所有者是保赚不赔的生意,至于商铺好坏反而不是他们考虑的问题了。

   人们说,淘宝做得是什么?
   人们说,百度做得是什么?

   百度电子商务做不会做B,也不会做C, 只会做商铺提供商,品牌来了要交租金,至于品牌商铺卖了多少,百度会帮忙推广,凭借百度搜索和百度社区的能力,推广拉客一条龙都给做了,品牌只需要证明自 己的商品是好东西,然后提供一个支付方式就搞定了,记得当初银联是怎么做的么,是怎么让自己的刷卡机放入商铺中的么?信用问题,本身就不是一个问题,说你 有信用,你也就是有信用,Dell为了信用,自己网站错了,也要承担后果,品牌商城为了信用,一些担保还是会做的。

   所以百度做的是电子商务平台,平台的供货商可能是品牌,也肯那个是信誉好的中小企业,但品牌的销售重点永远只有一个,那就是百度庞大的用户群。

   小商品交易城或者CBD商圈不重要,重要的是百度这个地界有没有客流量,也就是等到某个店开了之后,有没有人光顾是百度最需要解决的问题。

   百度现在做得招商,不就是和小商品交易城的开发阶段或者CBD商圈建设之初的招商计划罢了,这个时候,对于商家而言比的是眼力。
   在郑州问过三家店铺的人,当初租金6000的时候进入的,现在的租金即便是翻倍也租不到,对于商家而言,他们不会放过任何一个赚钱的机会,是否入住是比眼力,百度能抓取的是,现在不来,就没机会了,这是现在百度最大的卖点。反正商家也不会损失什么,就一起玩了。

   所以,你说百度要干啥,要怎么运营?其实答案自在生活中,我关心的是百度的运营手法,而不是概念。

类别:Yy 查看评论
08:20 Settling in to a New Environment at Craigslist (2962 Bytes) » Fenng's shared items in Google Reader

Wifi networks visible from the Craigslist Annex Yesterday was my first day as an employee at craiglist. Several folks on Twitter asked how it was, so here are my thoughts.

First off, it was a bit like a first day anywhere. I had several new people to meet, a bunch of paperwork to fill out for benefits and payroll stuff, and started to get an overview of how things work.

Unlike jobs in larger organizations, I had the pleasure of un-boxing and setting up my chair, desktop, and laptop computers. There's no "IT group" to do this stuff and that's perfectly fine with me. That's just one of the ways the size difference between a company of less than 30 people becomes apparent when you're used to well over 10,000. Specialization just can't take hold in a smaller group like that.

Aside from a new job and new people and new computer(s), I'm also in a newish office that's referred to as "the annex." It's just down the street from the main craigslist office but isn't nearly as full yet.

Unlike Yahoo, there are many, many places to eat within a very short walk from the office. To get a sense of how dense an area I'm in, check out all the wifi networks visible from my desk. At Yahoo, we were in a corporate campus environment, so all you saw were Yahoo networks.

At the end of yesterday, I'd setup the bare minimum stuff on my new laptop (a 15.4" ThinkPad T61 running Ubuntu), desktop (also running Ubuntu), many accounts and passwords, email access, an IRC client for our internal channel, got wiki access, and a few other bits.

I'm looking forward to learning what makes things tick and how I can make the better. I'm already getting a sense for the challenges we face in running such a popular service with a small team.

Honestly, it's a refreshing change from the larger environments that I've worked in before. Plus, the commute wasn't as bad as I expected yesterday. Thanks to all the tips and advice I got last time, I headed up with the right expectations. That makes a difference.

(comments)

08:11 Therefore we travel (1185 Bytes) » Chanel [K]

尝试过吊着绷带出去旅行吗?
没有。
好吧,那就尝试一次。

08:04 Settling in to a New Environment at Craigslist (3065 Bytes) » Fenng's shared items in Google Reader
Shared by Fenng
我还是比较喜欢这样的工作环境的。

Wifi networks visible from the Craigslist Annex Yesterday was my first day as an employee at craiglist. Several folks on Twitter asked how it was, so here are my thoughts.

First off, it was a bit like a first day anywhere. I had several new people to meet, a bunch of paperwork to fill out for benefits and payroll stuff, and started to get an overview of how things work.

Unlike jobs in larger organizations, I had the pleasure of un-boxing and setting up my chair, desktop, and laptop computers. There's no "IT group" to do this stuff and that's perfectly fine with me. That's just one of the ways the size difference between a company of less than 30 people becomes apparent when you're used to well over 10,000. Specialization just can't take hold in a smaller group like that.

Aside from a new job and new people and new computer(s), I'm also in a newish office that's referred to as "the annex." It's just down the street from the main craigslist office but isn't nearly as full yet.

Unlike Yahoo, there are many, many places to eat within a very short walk from the office. To get a sense of how dense an area I'm in, check out all the wifi networks visible from my desk. At Yahoo, we were in a corporate campus environment, so all you saw were Yahoo networks.

At the end of yesterday, I'd setup the bare minimum stuff on my new laptop (a 15.4" ThinkPad T61 running Ubuntu), desktop (also running Ubuntu), many accounts and passwords, email access, an IRC client for our internal channel, got wiki access, and a few other bits.

I'm looking forward to learning what makes things tick and how I can make the better. I'm already getting a sense for the challenges we face in running such a popular service with a small team.

Honestly, it's a refreshing change from the larger environments that I've worked in before. Plus, the commute wasn't as bad as I expected yesterday. Thanks to all the tips and advice I got last time, I headed up with the right expectations. That makes a difference.

(comments)

07:58 浪潮之巅 第十章 短暂的春秋——与机会失之交臂的公司(一) (12195 Bytes) » Fenng's shared items in Google Reader
Shared by Fenng
吴军大哥啊,啥时候出本书好啦
发表者:Google(谷歌)研究员 吴军

奥地利著名传记作家茨威格在他的《人类的群星闪耀时》一书中写道“一个真正的具有世界历史意义的时刻--一个人类的群星闪耀时刻出现以前,必然会有漫长的岁月无谓地流逝而去,在这种关键的时刻,那些平时慢慢悠悠顺序发生和并列发生的事,都压缩在这样一个决定一切的短暂时刻表现出来。这一时刻对世世代代作出不可改变的决定,它决定着一个人的生死、一个民族的存亡甚至整个人 类的命运。”

“在人类在命运降临的伟大瞬间,市民的一切美德——小心、顺从、勤勉、谨慎,都无济于事,它始终只要求天才人物,并且将他造就成不朽的形象。命运鄙视地把畏首畏尾的人拒之门外。命运——这世上的另一位神,只愿意用热烈的双臂把勇敢者高高举起,送上英雄们的天堂。”(节选自“三联版”舒昌善译本)

在二十世纪八九十年代,就是一个科技工业史上群星闪耀的时代。在以前 AT&T 和 IBM 的时代需要半个世纪才能发生的事,可能在这十年里一下就发生并结束了。在这个大时代,有很多公司原本有可能成为信息工业的王者,但是却最终与机会失之交臂。这些公司,不论当初多么辉煌,当它开始走下坡路时,被人遗忘的速度比它衰落的速度更快。今天,我们不妨回过头来看一看这些失落或者已经消失的争霸者,毕竟他们曾经在信息产业呼风唤雨过。这里,我们将介绍太阳公司(Sun Microsystems)、Novell 公司、网景(Netscape)公司和 Real Networks 公司。其中关于太阳公司的篇幅最长,因为它相对的影响力最大。网景公司的知名度曾经也很大,但是由于它和微软的浏览器之争的历史已广为人知,我们只是简要回顾一下这段历史,重点探讨一下它是否存在胜出微软的可能。Novell 公司和 Real Networks 公司的名气要小些,但是它们的的确确有过成为IT行业巨头的可能性和机遇,只是因为一些原因和命运失之交臂。

第一节 太阳公司 (Sun Microsystems)

1.1 昔日的辉煌

从斯坦福大学孵化出的高科技公司首推太阳公司(Sun Microsystems),它也是最早进入中国市场并直接与中国政府开展技术合作的计算机公司。在 2001 年的高峰期,太阳公司在全球拥有五万雇员,市值超过两千亿美元,不仅是它今天市值的三十多倍,而且远远超过今天市值排名第二的 Google 的一千七百亿美元、和排名第三的 IBM 的一千六百亿美元。它的办公面积超过五十个足球场(四十五万平方米),并且还有十几个足球场大小的办公楼正在建设中。太阳公司不仅打败了包括 IBM 在内的全部工作站(Work Station)和小型机(Mini Computer)公司,而且依靠它的 Solaris(一种Unix)和风靡世界的 Java 程序语言,成为在操作系统上最有可能挑战微软的公司。太阳公司不乏能人,它不仅为 Google 培养了 CEO 埃里克.施密特和首任工程部副总裁韦恩.罗森(Wayne Rosen),并且在一定程度上奠定了今天 Google 工程部门的基础。

但是,今天的太阳公司,不仅人数规模、市场股值、办公面积远不能和当年相比(能人都走了,办公楼也卖了,股票一落千丈),而且彻底退出了 IT 领域霸主之争。太阳公司从 1982 年成立到 2000 年达到顶峰用了近二十年时间,而走下坡路只用了一年,足以令经营者为戒。

太阳公司名称的由来很多人不知道,它其实是斯坦福大学校园网(Stanford University Network)的首字母缩写。当安迪.贝克托森 Andy Bechtolsheim (我们以后介绍 Google 时还会提到他)还是斯坦福大学研究生时,他设计出一种“三个百万”的小型图形计算机,称作图形工作站(Graphic Work Station)。这“三个百万”是指每秒一百万次的运算速度(现在微机的万分之一)、一百万字节的内存(今天 PC 的千分之一)和一百万象素的图形显示器(比今天的微机显示器低、比手机高)。但是,这在当时已经是很先进的了。贝克托森采用了摩托罗拉 68000 处理器,并用了一种当时很先进的内存管理器芯片来支持虚拟内存。和一般微机不同,网络功能是其必选项。贝克托森开发出原型机 Sun-1 后,便于 1982 年和斯科特.马可尼里(Scott McNealy)等斯坦福毕业生从学校出来创办了太阳公司。马可尼里担任了公司的 CEO,直到两年前退休。半年后,公司便盈利了。这是我知道的最快实现盈利的科技公司。四年后的 1986 年,太阳公司在纳斯达克挂牌上市,当时的股票代号是 SUNW,即太阳工作站的缩写,而不是今天的 JAVA。

太阳工作站早期采用摩托罗拉公司的中央处理器。1985 年,太阳公司研制出自己的 SPARC 减指指令(RISC)处理器,将工组站性能提高了一大截,并且保证了工作站在对 DEC 和 HP 小型机的竞争中最终胜出。在九十年代前很长的时间里,太阳公司的竞争对手是小型机公司和 SGI 等图形工作站公司,虽然在具体的商业竞争中,太阳和 DEC 等公司互有胜负,但是太阳总的来讲是无往不利。太阳公司的胜利,实际上是基于 Unix 服务器和工作站的系统对传统集中式中小型机(以DEC、HP 为代表)和终端系统的胜利。前者淘汰后者是计算机和网络技术发展的必然趋势。

但是,太阳公司远没有当年 AT&T 和 IBM 那样的好运气,后者一个主流产品可以销售十几年。而太阳公司崛起的时候正是信息革命的大时代,一切技术革命的周期都被大大地缩短了。九十年代以来随着微机的发展,基于微机的网络系统占领了中小企业很大的市场。虽然早在 80 年代,3Com 和 Novell 就在推广它们基于微机的以太网系统,但是他们的业务和太阳没有太大的重复,因此不会威胁太阳公司的发展。到九十年代后期,情况发生了根本性的变化。在硬件上,高端微机在计算速度上已经不逊色于低端工作站,但价钱便宜了很多。在软件上,微软公司推出 Windows NT 后,有了企业级(enterprise)的网络操作系统解决方案。这样,高端微机取代低端工作站和小型机进入企业级市场的时机就成熟了,企业级的霸主的争夺战就在微软和太阳之间展开了。

太阳公司的位置非常像微机争霸战中的苹果公司。它有自己成套的硬件和操作系统,但是它缺乏应用软件。太阳的 Star Office 至今恐怕除了它自己没有其它象样的公司在使用。而微软只做软件,而且只做操作系统(Windows NT),数据库 SQL Server 和办公软件(Office)等少数但同时是至关重要的软件。这三种软件是一个企业必不可少的。

这次争霸对微软来讲比它和苹果的竞争要轻松的多,首先,1995 年的微软已经不是八十年代初的小公司了,它当时已经成为历史上罕有的高成长、高利润公司。有了钱,一个有雄心的企业家就能找到自己想要的人。比如盖茨甚至为了照顾那些不愿意搬家的数据库专家,在他们现有的城市设立研发办公室。这是微软早期在和苹果竞争时根本做不到的;其次,微软已经在微机领域形成了垄断,并且它很善于将垄断的优势扩展(Leverage)到其它领域—非计算机专业的用户接受微软的 Windows NT 操作系统比接受太阳的 Solaris 要容易得多,因为大家在自己家的微机上使用和NT没有什么区别的 Windows 3.1 和 Windows95;第三,在应用软件开发上,微软更多地依靠第三方,而太阳和苹果一样,经常不得不自己开发。(苹果公司也曾面临同样的问题。)我们知道,一种操作系统是否能推广,关键看上面有多少应用软件可用。微软 Windows NT 上的应用软件比太阳 Solaris 多得多。最后,也是最关键的,就是人的因素。我们不能不承认,微软的管理团队是当时世界上 IT 领域最好的,比尔盖茨当年也是最棒的工业界领袖。

反观太阳公司,它的操作系统 Solaris 在技术上比 Windows NT 有明显的优势。我们在这里跳过技术上的细节,因为把它讲清楚需要花很大的篇幅。事实证明,包括 Solaris 在内的各种 Unix 操作系统比 Windows NT 能更好地利用计算机资源,尤其是当计算机系统庞大、用户数量巨大增加时。1997 年,微软买下了 Hotmail 后,花了很大力气想把后者的电子邮件服务系统从它原有的两种 Unix(FreeBSD和Solaris)操作系统移植到微软自己的 Windows NT 下,居然没有成功,因为 Windows NT 管理这么多服务器和用户并不方便。但是,这件事微软又必须做,否则它无法说服企业级客户购买自己的操作系统。于是,微软花了更大的力气,终于把 Hotmail 移植到 NT 后来的版本 Windows 2000 上。但是据说其中某些功能仍然由 Unix 来完成。太阳公司版的Unix,即 Solaris 是所有商业版中最可靠最完善的版本。太阳和微软之争,其实就是企业级的操作系统之争。对太阳来讲,取胜的关键在于是否能将它在 Unix 上的技术优势转换为市场优势。

马可尼里领导的太阳公司在很长时间里甚至没有看出决战操作系统的重要性,这样太阳公司和微软公司的竞赛还没有开始就先输了第一回合。这倒不是马可尼里无能,而是马可尼里等人的“思维”锁定在卖硬件上了。虽然太阳公司的工作站当年每台要上万美元、服务器要十万美元,但是比 DEC 的小型机和 IBM 的大型机便宜多了。在九十年代末由于互联网的兴起,太阳公司的服务器和工作站销路太好了、太挣钱了。虽然太阳公司的中小企业市场份额不断被微软/英特尔联盟侵蚀,但是它也在不断占领原来 DEC 和 HP 小型机的市场并有足够的处女地可以开发。因此,它的整体业务还在不断扩大。这很像十六世纪的西班牙王国,虽然它的无敌舰队已经被英国人打败了,并失去了海上霸主的地位,但是由于世界上可殖民的处女地仍然很多,支撑着这个海上老二繁荣了两个世纪,直到十九世纪全世界再无殖民地可开拓时,西班牙早期埋下的危机才表现出来。当然,衰落要比繁荣来得快,在很短时间内,西班牙从欧洲的富国沦为穷国。太阳公司也是如此。从 1986 年到 2001 年,太阳公司的营业额从 2.1 亿美元涨到 183 亿美元,成长率高达平均每年 36%,能连续十五年保持这样高速度发展,只有微软、英特尔和思科曾经做到过。在这种情形下,很少能有人冷静地看到高速发展背后的危机。太阳公司当时不自觉地满足于捏 SGI、DEC 和 HP 这些软柿子、并沉溺于在硬件市场上的胜利,忽视了来自微软的威胁。但当 2000 年互联网泡沫破碎时,它以服务器和工作站为主的硬件业务便急转直下。2002 财政年度(到 2002 年六月),它的营业额就比前一年跌掉了三成,并且从前一年盈利九亿美元跌到亏损五亿美元。太阳公司找不到稳定的利润来源和新的成长点,从此太阳公司便江河日下,一下从硅谷最值钱的公司沦为人均市值最低的公司。
06:04 “白鹰”坠落 (6585 Bytes) » Fenng's shared items in Google Reader
还有哪个逃亡者能比前波黑塞族共和国总统卡拉季奇更为传奇的么?这个被海牙前南问题国际法庭通缉的国际战犯自从被宣布逮捕的那一刻起,他就神奇的在人间蒸发了!尽管特种部队费劲脑汁辗转深山老林以及卡拉季奇家乡对其进行抓捕,甚至有时候距离卡拉季奇仅咫尺之遥,以至于可以看清他的面孔,但就是无法将他逮捕归案,五角大楼和英国军情六处的高官们不禁惊呼:卡拉季奇是“比拉登和萨达姆还难捉”的人。 

但这个被通缉了13年的前波黑塞族政治强人,却最终并未能如其支持者和妻子所愿“从敌对者面前永远消失”那样,今天在塞尔维亚被捕了。

曾经被看成是已故前南斯拉夫联盟总统米洛舍维奇盟友的卡拉季奇,被控在1995年于波斯尼亚城市斯雷布雷尼察杀害了大约8000名穆斯林男子。 海牙法庭指控卡拉季奇涉嫌犯有种族清洗和反人类两项罪行,特别是对长达三年多的围困萨拉热窝和发生在19957月的斯雷布雷尼察屠杀事件负有直接责任。

卡拉季奇被西方国家定性为“彻头彻尾的塞族民族主义分子”;而海牙国际战犯法庭把他说成是头号“战犯”。虽然在过去六年里,北约间谍已经把40名所谓的“战犯”抓到了海牙。在所有接受审判的人中,光波斯尼亚塞族人就占了35位,但这35位塞族人中没有卡拉季奇,不仅如此,海牙法庭连卡拉季奇的影子都没有见到过。所以美国一家媒体讽刺说:“海牙法庭就是为卡拉季奇设立的,没有他出庭,就像纽伦堡大审判没有鲁道夫·海斯一样。”北约为了逮捕卡拉季奇,甚至开出了500万美元的高价。

卡拉季奇自从隐退以来,没有迈出国土半步。8年来,他要么躲在荒无人烟的雪原,要么隐身高山丛林,要么走进教堂与惊惶失措的神职人员平静地聊聊家常。至于冬天,有“白鹰”美誉的卡拉季奇一直藏在福塞沃山的山洞中,洞口的冰凌长达2米,远远望去,像老头的花白胡子。他母亲尤万卡·卡拉季奇说起她的儿子,语气中透出骄傲:“他回到了自己人———他曾经保护过的人那里。”

为了把卡拉季奇捉拿归案,美国人也费尽心机。他们在萨拉热窝的布特米尔兵营一个国际基地内设立盟国军事情报局,由一名美国情报上校负责,招募了一大批间谍,负责实施追捕卡拉季奇计划,却一直毫无收获。

即使在逃亡期间,有着深厚的文学功底的卡拉季奇虽亡命天涯仍坚持创作出诗集并大摇大摆地出版新书美国国务院发言人理查德·鲍彻曾经苦笑着说,如果卡拉季奇希望宣传推销自己的新书,美国政府和北约多国稳定部队十分乐意提供“帮助”。鲍彻说:“要是他愿意在世界范围内巡回售书,北约多国稳定部队可以陪同,美国政府保证提供交通便利。不过最后,他将到达荷兰海牙,在那里等待出庭受审时,他想为多少本新书签名都没问题。” 

对于卡拉季奇的被捕,当年曾饱受其所领导塞族军队之苦的波黑穆斯林欢欣鼓舞,纷纷涌上街头庆贺,欧美各国更是兴奋不已。欧盟轮值主席、法国总统萨科奇在声明中称,欧盟“欢迎这一好消息”,并认为这表明了塞尔维亚新政府对巴尔干地区和平稳定承诺的真实可靠;白宫的声明则对此表示祝贺,称没有什么比“将战争暴行受害者绳之以法”更让人鼓舞,并对塞尔维亚政府的“勇气和专业”表示钦佩。

05:33 吴晓波:晚清(3) (7174 Bytes) » Fenng's shared items in Google Reader

胡雪岩的墓就在杭州西郊,原本是个乱石堆,90年代初被胡庆余堂的一个老职工发现,胡庆余堂的最后一个学徒青春宝的冯根生出资重修。这些年来,胡氏故居去了很多次,每次去我都有很奇妙的感觉,胡氏一生精明,晚年却做出一个豪赌棋局,斯人情怀绝非一个简单的臧否可以了断。盛宣怀曾经在给李鸿章的信中写过一段很豪情的话:“不过想要就商务开拓,渐及自强,做一个顶天立地之人,使各国知中原尚有人物而已。”胡氏心思可能也在这里。

【】胡雪岩是怎么破产的
近现代商业史上,第一场中外大商战发生在1884年,主角是当时首富胡雪岩,结果是他倒掉了。
胡雪岩活着的时候,就已经是一个传奇了。他靠为左宗棠采运军饷起家,在短短二十年内一跃成为全国首富。还是清朝三百年惟一一个被赐穿黄马褂的商人,被认为是一个五百年才出一个的商业奇才。在1882年,早已名满天下的胡雪岩面临过事业上的一次重大抉择。他手握1000万两以上的巨额现金,是去办洋务,还是倒卖生丝,竟一时踌躇。
胡雪岩对洋务并不陌生,1868年左宗棠创办福建船政局的时候,所有购买外商机器、军火事务便都是由他一手操办的,日前我去福州的“中国船政博物馆”参观,开门就见三尊铜像,分别就是左宗棠、沈葆桢和胡雪岩。他显然看到了洋务事业的巨大“钱途”,1882年1月,他给恩公左宗棠写信,表示愿意出资,独力建设长江沿岸电报,他说自己为此可动用的资金在1000万两以上,它在当时几乎可以买下李鸿章过去十年辛苦所办的全部洋务企业。可是,最让胡雪岩费思量的却是,官场上微妙的人事格局。左宗棠与李鸿章是政治上的死对头。当时主管洋务的却是李大人,这让深谙官场门道的胡雪岩十分迟疑。
办洋务,商业前途大好却官场头绪难解,第二条路就是倒卖生丝。自晚明以来,江浙一带就是全国纺织业的中心,所谓“日出千绸,衣被天下”,在历史教科书上被认定是“近代资本主义的萌芽之地”。 1860年代之后,江南丝商面临重大危机。当时,英美各国开始在上海开设机械缫丝厂,西方“工业革命”的技术创新就是从纺织业开始的,所以,中国传统手工缫丝的生产效率和质量根据无法与机械缫丝竞争。洋商为了进一步掠夺中国的廉价劳动力和原料,垄断蚕丝出口市场,拼命压低生丝价格,抬高厂丝价格,从中攫取暴利。1868年,生丝每担市值白银517两,到1875年,每担价格已下跌至285两,再过8年,,更暴跌至200两。兴旺百年的江南纺织业迅速没落。
目睹此景,胡雪岩认为商机浮现。缫丝产业蒸蒸日上,而作为原材料的生丝却价格日跌,这是一种极其不正常的现象,据他的观察,主要原因是华商各自为战,被洋人控制了价格权。因此,他决定靠自己的财力,与之一博。另外,还有资讯显示,在过去的两年里,欧洲农业遭受天旱,生丝收成减产。
正是基于这些判断,首富胡雪岩出手,高调做庄。百年企业史上,第一场中外大商战爆发了。
1882年5月,他大量购进生丝8000包,到10月达1·4万包,见丝就收,近乎疯狂。与胡雪岩同时代的晚清学者欧阳昱在《见闻琐录》中详细记录了这场商战的惨烈景象:其年新丝一出,胡即派人大量收购,无一漏脱,外商想买一斤一两而莫得,无可奈何。向胡说愿加利一千万两,如数转买此丝,胡非要一千二百万两不可。外商不买,过了数日,再托人向胡申买,胡坚持咬定此价。外商认为生丝原料仅操纵在胡雪岩一人之手,将来交易,唯其所命,从何获利?决心不买胡之生丝,等待次年新丝出来再说。胡雪岩则邀请丝业同行合议,共同收尽各地生丝,不要给外商,迫外商出高价收购,这样我们必获厚利。
在一开始,胡氏战略似乎奏效。西方学者斯坦利在《晚清财政》一书中记录,1882年9月,上海一级生丝价格已高涨至17先令4便士,而在伦敦交易所的价格仅为16先令3 便士。国内价格反超国际期货价。到1883年8月,大商战进入决战时刻,胡雪岩前后已投入资金超过1500万两,继续坚壁清野,囤货坚挺,大部分上海丝商停止营业,屏气而作壁上观。华洋双方都已到忍耐极限,眼见胜负当判,谁知“天象”忽然大变。
变数之一,欧洲意大利生丝突告丰收, 欧洲期货市场的紧张顿时暂缓,消息传回中国,军心开始动摇。
更大的变数是,中法因越南问题交恶,爆发战争。1883年10月,法国军舰驶抵上海吴淞口,扬言进攻江南制造局,局势紧张,市民提款迁避,市面骤变,金融危机突然爆发。外国银行和山西票号纷纷收回短期贷款,个人储户也紧急提现。钱庄逼账“急如星火,沪上商局大震,凡往来庄款者皆岌岌可危;虽有物可抵,有本可偿,而提现不能。钱庄之逼,一如倒账。”一般商品无不跌价30%至50%,所有房地产都难脱手,贸易全面停顿。
世事如此,胡雪岩已无力回天。11月,江浙丝商的价格同盟瓦解,生丝易烂,不能久储,胡雪岩不得不开始抛售,价格一路狂泄,损失以千万两计。生丝对搏失利,很快影响到“坚如磐石”的钱庄生意,民众排队提款,一些与胡雪岩不和的官员乘机逼催官饷,可怕的挤兑风潮出现了,先是杭州总舵关门,继而波及北京、福州、镇江以及湖北,湖南等地的二十多个字号,到12月5日,阜康钱庄宣告破产。
第二年9月,左宗棠病逝于福州。11月,朝廷下令对胡雪岩革职查抄,严加治罪。他遣散姬妾仆从,在圣旨到来之前,就非常“及时”地郁郁而死了。他的棺木被一老仆埋于杭州西郊鹭鹚岭下的乱石堆中,一直到整整100年后,才被人偶尔发现。
“红顶商人”以一种无比莽撞和壮烈的方式挑战英美纺织公司,这应该是传统商业力量在技术和工业模式都处绝对劣势的前提下,进行的一次绝地式反击。他的破产,宣告了传统商人阶层的集体殒落,“三大商帮”中的两枝,徽商和江浙商人在此役中损失惨重,从此一蹶不振。萌芽于晚明的纺织业彻底崩盘。


comment
04:41 浪潮之巅 第十章 短暂的春秋——与机会失之交臂的公司(一) (12102 Bytes) » Fenng's shared items in Google Reader
发表者:Google(谷歌)研究员 吴军

奥地利著名传记作家茨威格在他的《人类的群星闪耀时》一书中写道“一个真正的具有世界历史意义的时刻--一个人类的群星闪耀时刻出现以前,必然会有漫长的岁月无谓地流逝而去,在这种关键的时刻,那些平时慢慢悠悠顺序发生和并列发生的事,都压缩在这样一个决定一切的短暂时刻表现出来。这一时刻对世世代代作出不可改变的决定,它决定着一个人的生死、一个民族的存亡甚至整个人 类的命运。”

“在人类在命运降临的伟大瞬间,市民的一切美德——小心、顺从、勤勉、谨慎,都无济于事,它始终只要求天才人物,并且将他造就成不朽的形象。命运鄙视地把畏首畏尾的人拒之门外。命运——这世上的另一位神,只愿意用热烈的双臂把勇敢者高高举起,送上英雄们的天堂。”(节选自“三联版”舒昌善译本)

在二十世纪八九十年代,就是一个科技工业史上群星闪耀的时代。在以前 AT&T 和 IBM 的时代需要半个世纪才能发生的事,可能在这十年里一下就发生并结束了。在这个大时代,有很多公司原本有可能成为信息工业的王者,但是却最终与机会失之交臂。这些公司,不论当初多么辉煌,当它开始走下坡路时,被人遗忘的速度比它衰落的速度更快。今天,我们不妨回过头来看一看这些失落或者已经消失的争霸者,毕竟他们曾经在信息产业呼风唤雨过。这里,我们将介绍太阳公司(Sun Microsystems)、Novell 公司、网景(Netscape)公司和 Real Networks 公司。其中关于太阳公司的篇幅最长,因为它相对的影响力最大。网景公司的知名度曾经也很大,但是由于它和微软的浏览器之争的历史已广为人知,我们只是简要回顾一下这段历史,重点探讨一下它是否存在胜出微软的可能。Novell 公司和 Real Networks 公司的名气要小些,但是它们的的确确有过成为IT行业巨头的可能性和机遇,只是因为一些原因和命运失之交臂。

第一节 太阳公司 (Sun Microsystems)

1.1 昔日的辉煌

从斯坦福大学孵化出的高科技公司首推太阳公司(Sun Microsystems),它也是最早进入中国市场并直接与中国政府开展技术合作的计算机公司。在 2001 年的高峰期,太阳公司在全球拥有五万雇员,市值超过两千亿美元,不仅是它今天市值的三十多倍,而且远远超过今天市值排名第二的 Google 的一千七百亿美元、和排名第三的 IBM 的一千六百亿美元。它的办公面积超过五十个足球场(四十五万平方米),并且还有十几个足球场大小的办公楼正在建设中。太阳公司不仅打败了包括 IBM 在内的全部工作站(Work Station)和小型机(Mini Computer)公司,而且依靠它的 Solaris(一种Unix)和风靡世界的 Java 程序语言,成为在操作系统上最有可能挑战微软的公司。太阳公司不乏能人,它不仅为 Google 培养了 CEO 埃里克.施密特和首任工程部副总裁韦恩.罗森(Wayne Rosen),并且在一定程度上奠定了今天 Google 工程部门的基础。

但是,今天的太阳公司,不仅人数规模、市场股值、办公面积远不能和当年相比(能人都走了,办公楼也卖了,股票一落千丈),而且彻底退出了 IT 领域霸主之争。太阳公司从 1982 年成立到 2000 年达到顶峰用了近二十年时间,而走下坡路只用了一年,足以令经营者为戒。

太阳公司名称的由来很多人不知道,它其实是斯坦福大学校园网(Stanford University Network)的首字母缩写。当安迪.贝克托森 Andy Bechtolsheim (我们以后介绍 Google 时还会提到他)还是斯坦福大学研究生时,他设计出一种“三个百万”的小型图形计算机,称作图形工作站(Graphic Work Station)。这“三个百万”是指每秒一百万次的运算速度(现在微机的万分之一)、一百万字节的内存(今天 PC 的千分之一)和一百万象素的图形显示器(比今天的微机显示器低、比手机高)。但是,这在当时已经是很先进的了。贝克托森采用了摩托罗拉 68000 处理器,并用了一种当时很先进的内存管理器芯片来支持虚拟内存。和一般微机不同,网络功能是其必选项。贝克托森开发出原型机 Sun-1 后,便于 1982 年和斯科特.马可尼里(Scott McNealy)等斯坦福毕业生从学校出来创办了太阳公司。马可尼里担任了公司的 CEO,直到两年前退休。半年后,公司便盈利了。这是我知道的最快实现盈利的科技公司。四年后的 1986 年,太阳公司在纳斯达克挂牌上市,当时的股票代号是 SUNW,即太阳工作站的缩写,而不是今天的 JAVA。

太阳工作站早期采用摩托罗拉公司的中央处理器。1985 年,太阳公司研制出自己的 SPARC 减指指令(RISC)处理器,将工组站性能提高了一大截,并且保证了工作站在对 DEC 和 HP 小型机的竞争中最终胜出。在九十年代前很长的时间里,太阳公司的竞争对手是小型机公司和 SGI 等图形工作站公司,虽然在具体的商业竞争中,太阳和 DEC 等公司互有胜负,但是太阳总的来讲是无往不利。太阳公司的胜利,实际上是基于 Unix 服务器和工作站的系统对传统集中式中小型机(以DEC、HP 为代表)和终端系统的胜利。前者淘汰后者是计算机和网络技术发展的必然趋势。

但是,太阳公司远没有当年 AT&T 和 IBM 那样的好运气,后者一个主流产品可以销售十几年。而太阳公司崛起的时候正是信息革命的大时代,一切技术革命的周期都被大大地缩短了。九十年代以来随着微机的发展,基于微机的网络系统占领了中小企业很大的市场。虽然早在 80 年代,3Com 和 Novell 就在推广它们基于微机的以太网系统,但是他们的业务和太阳没有太大的重复,因此不会威胁太阳公司的发展。到九十年代后期,情况发生了根本性的变化。在硬件上,高端微机在计算速度上已经不逊色于低端工作站,但价钱便宜了很多。在软件上,微软公司推出 Windows NT 后,有了企业级(enterprise)的网络操作系统解决方案。这样,高端微机取代低端工作站和小型机进入企业级市场的时机就成熟了,企业级的霸主的争夺战就在微软和太阳之间展开了。

太阳公司的位置非常像微机争霸战中的苹果公司。它有自己成套的硬件和操作系统,但是它缺乏应用软件。太阳的 Star Office 至今恐怕除了它自己没有其它象样的公司在使用。而微软只做软件,而且只做操作系统(Windows NT),数据库 SQL Server 和办公软件(Office)等少数但同时是至关重要的软件。这三种软件是一个企业必不可少的。

这次争霸对微软来讲比它和苹果的竞争要轻松的多,首先,1995 年的微软已经不是八十年代初的小公司了,它当时已经成为历史上罕有的高成长、高利润公司。有了钱,一个有雄心的企业家就能找到自己想要的人。比如盖茨甚至为了照顾那些不愿意搬家的数据库专家,在他们现有的城市设立研发办公室。这是微软早期在和苹果竞争时根本做不到的;其次,微软已经在微机领域形成了垄断,并且它很善于将垄断的优势扩展(Leverage)到其它领域—非计算机专业的用户接受微软的 Windows NT 操作系统比接受太阳的 Solaris 要容易得多,因为大家在自己家的微机上使用和NT没有什么区别的 Windows 3.1 和 Windows95;第三,在应用软件开发上,微软更多地依靠第三方,而太阳和苹果一样,经常不得不自己开发。(苹果公司也曾面临同样的问题。)我们知道,一种操作系统是否能推广,关键看上面有多少应用软件可用。微软 Windows NT 上的应用软件比太阳 Solaris 多得多。最后,也是最关键的,就是人的因素。我们不能不承认,微软的管理团队是当时世界上 IT 领域最好的,比尔盖茨当年也是最棒的工业界领袖。

反观太阳公司,它的操作系统 Solaris 在技术上比 Windows NT 有明显的优势。我们在这里跳过技术上的细节,因为把它讲清楚需要花很大的篇幅。事实证明,包括 Solaris 在内的各种 Unix 操作系统比 Windows NT 能更好地利用计算机资源,尤其是当计算机系统庞大、用户数量巨大增加时。1997 年,微软买下了 Hotmail 后,花了很大力气想把后者的电子邮件服务系统从它原有的两种 Unix(FreeBSD和Solaris)操作系统移植到微软自己的 Windows NT 下,居然没有成功,因为 Windows NT 管理这么多服务器和用户并不方便。但是,这件事微软又必须做,否则它无法说服企业级客户购买自己的操作系统。于是,微软花了更大的力气,终于把 Hotmail 移植到 NT 后来的版本 Windows 2000 上。但是据说其中某些功能仍然由 Unix 来完成。太阳公司版的Unix,即 Solaris 是所有商业版中最可靠最完善的版本。太阳和微软之争,其实就是企业级的操作系统之争。对太阳来讲,取胜的关键在于是否能将它在 Unix 上的技术优势转换为市场优势。

马可尼里领导的太阳公司在很长时间里甚至没有看出决战操作系统的重要性,这样太阳公司和微软公司的竞赛还没有开始就先输了第一回合。这倒不是马可尼里无能,而是马可尼里等人的“思维”锁定在卖硬件上了。虽然太阳公司的工作站当年每台要上万美元、服务器要十万美元,但是比 DEC 的小型机和 IBM 的大型机便宜多了。在九十年代末由于互联网的兴起,太阳公司的服务器和工作站销路太好了、太挣钱了。虽然太阳公司的中小企业市场份额不断被微软/英特尔联盟侵蚀,但是它也在不断占领原来 DEC 和 HP 小型机的市场并有足够的处女地可以开发。因此,它的整体业务还在不断扩大。这很像十六世纪的西班牙王国,虽然它的无敌舰队已经被英国人打败了,并失去了海上霸主的地位,但是由于世界上可殖民的处女地仍然很多,支撑着这个海上老二繁荣了两个世纪,直到十九世纪全世界再无殖民地可开拓时,西班牙早期埋下的危机才表现出来。当然,衰落要比繁荣来得快,在很短时间内,西班牙从欧洲的富国沦为穷国。太阳公司也是如此。从 1986 年到 2001 年,太阳公司的营业额从 2.1 亿美元涨到 183 亿美元,成长率高达平均每年 36%,能连续十五年保持这样高速度发展,只有微软、英特尔和思科曾经做到过。在这种情形下,很少能有人冷静地看到高速发展背后的危机。太阳公司当时不自觉地满足于捏 SGI、DEC 和 HP 这些软柿子、并沉溺于在硬件市场上的胜利,忽视了来自微软的威胁。但当 2000 年互联网泡沫破碎时,它以服务器和工作站为主的硬件业务便急转直下。2002 财政年度(到 2002 年六月),它的营业额就比前一年跌掉了三成,并且从前一年盈利九亿美元跌到亏损五亿美元。太阳公司找不到稳定的利润来源和新的成长点,从此太阳公司便江河日下,一下从硅谷最值钱的公司沦为人均市值最低的公司。
03:00 无合同运行 (301 Bytes) » OracleDBA Blog---Please enjoy the pain which is unable to avoid!

今天上海的行政给我电话才知道,我的合同一年到期了。

也就是说从上个月开始我就是在无合同运行,这种感觉,呵呵。

我还以为我的合同是两年的,原来是一年的,真快,在这里已经一年了。

 

02:57 研究称开源软件有安全风险 (900 Bytes) » Fenng's shared items in Google Reader
Shared by Fenng
就和"是个人都会死一样",绝对是屁话
Fortify Software发布了一份研究报告,称采用开源软件的公司会面临大的安全风险。 研究人员认为出现这种情况的原因在于开源社区本身,未能遵循最低限度的安全管理。 Fortify Software研究了11款开源软件包,其中应用服务器程序Tomcat被认为是最好的,其它10款开源软件的结果都很差,它们分别是Derby,Geronimo,Hibernate,Hipergate,JBoss,Jonas,OFBiz,OpenCMS, Resin和Struts。研究小组负责人Jacob West表示研究的目的不是为了谴责开源软件,而是指出开源社区的安全管理需要改进,因为现在企业和政府采用开源软件的数量正在增多。
01:30 数据挖掘与知识发现(1) (601 Bytes) » 淘宝数据仓库团队

日前做了一个对新用户最可能购买的宝贝的挖掘,结果很有意思,我们发现这些宝贝有如下特征:

宝贝价格低(低廉价格驱动型)、先行赔付(网购信心不足型)、宝贝好看(情感驱动型)、宝贝卖得好、宝贝好评多、店铺好评多、高级店铺、大店铺等。

好吧,也许这次挖掘并没有挖出什么亮点,也许你觉得这些——都是我以前就知道的啊!

恩,请往下看 (more…)

00:16 Sorted Hash Clusters - 2 (1 Bytes) » Oracle Scratchpad
00:11 写给刚工作的网站技术人员 (6815 Bytes) » Fenng's shared items in Google Reader

 

 

 

       工作九年了,网站相关的开发工作也干了八年多。负责带领团队也好几年了。面试和带领刚工作的人也不少了。其中的优秀者不少,但是大多数都存在下面提到的几个认识误区。把这些问题提出来,希望对刚参加工作没有多久的程序员们有所帮助,少走弯路。

 

      公司招你进来,其实最重要的就是看到你的工作能力和工作态度是可以接受的。

            工作能力指你能满足他们的工作期望,或者在可接受的时间范围内,经过培训后,可以满足这个工作期望。

            工作态度指你能有些做职员的基本素质。

      这个道理应该所有人都清楚。但是到实际事情时候就经常犯迷糊。下面几点是经常会出问题的地方:

 

1、不经测试,Review,就认为自己工作完成了。

       你的代码或者应用一旦被别人Review ,或者进行试用。这时候你代码的好坏,或者功能是否在各种场景下是否可用,都会影响你这个人在上级及同事眼里的可信任度。

       代码书写的规范,性能的高质量,各种功能在各个场景都可用,则表示你这个人是完全可信的。下次上级给你分派任务的时候,就可以给你更多的自由度来发挥。长此以往,前途和钱途自然就随手可得。

        反之,代码不规范,功能好些场景不可用。这只能让上级或同事觉得你不可信任。每次都需要处理你带来的这些问题,说恶心点就是你每次拉完大便都没擦屁股,每次都得你的同事和上级帮你擦屁股。数次都这样后,上级或同事下次跟你沟通的时候就会觉得你这个人不可信任,一件事情必须反复多次强调,总觉得你还会作出问题。你的信用已经非常危险了。

       你在别人眼里的信用就这样被你慢慢透支了。透支到一定程度,走人吧。整个团队的效率会因为你而变慢(每个人跟你沟通的成本都会影响到他本人的产出),你不走人谁走人。

 

2、最短可接受的工作时限

       你有没有统计过,公司分派给你一个工作时候,上级指定的这项工作计划做多久的预计,跟你自己的预计有多大差异?

       如果你预计时间大于上级给的工作计划时间,同时上级没有增派人手进行相关工作。除了BT的领导外,那只有一种情况:上级对你的工作态度非常不满,认为你的薪水对应的工作能力不是这么点。

       对于刚工作的,更多的是你表现出来的工作能力在公司的平均工作能力之下。同时公司觉得你对工作没有表现出足够的热情。 一个能力在平均水平下面,又缺乏工作激情的人,他的前途在那里??

       如果这个人还没有表现出几个月后能达到平均水平之上的希望,为啥会留这样一个人呢?

 

3、工作能力不等于技术水平

       我曾看到过有人抱怨说大公司的员工也不过是这技术水平, 这么简单的技术问题都不会。我自己早期也有这样想法,后来发现是不对的。

       不论大公司还是小公司,要得是解决问题的工作能力。 我的曾经手下就有好几个技术水平很牛的,但是作出来的应用却一次次返工的。为啥,工作能力这些非技术因素他们做的很不好。

       工作能力的非技术因素包括的很多: 责任心,表现就是对自己写出来的代码有一定要让人放心的责任; 沟通能力,一个典型的表现就是需求不理解或者需求不明时,及时得跟相关人沟通,而不是自己先按自己想法实现,造成代码写完后再返工的恶果等等。

       技术水平低,但是解决问题能力强的,我也碰到过一些人。 工作的能力更重要的是这些非技术的工作能力,而不是技术水平。技术人员很容易技术水平高,但是非技术的工作能力差。 这是很糟糕的。

     

 

4、发展潜力,学习能力

      公司使用的技术不可能一直不变,一直不变的公司只能慢慢被市场淘汰。这就要求员工能不断的学习新的知识,并应用到工作中来。

      要想不会出现几年后,自己发现跳槽找个工作都没人要,赶快学习吧。

      坚持,是一个人最难做到的。 但是不坚持,那就等着灭亡吧。

 

 

5、笨鸟先飞

      一个人,在公司,如果工作能力在平均线以下, 加班吧, 不要有任何幻想。

      最可怕的是自己没这个意识, 自认为自己技术水平很牛, 但是解决问题的工作能力却在平均水平线以下, 眼高手低 , 这样的人, 公司是不能留的。

 

 

6、承诺到的事情一定要做到,不要找理由

       一件事情没有被做完,想找理由能找很多的。既然你承诺了某个时间点前完成,就不要再找各种理由推脱。

       公司同事和上级虽然可能这次接受了你的理由,但是下次呢, 慢慢的就会让你的上级,同事觉得你是一个喜欢推托的人。 感觉你干事是非常不可靠的。不知道那次就会不完成,下次谁敢再找你干事?

 

 

        可能很多人在看到我这篇博客的时候,觉得我写的很刻薄,好像都是从公司的角度欺压技术人员。很没有人情味。

        只要你不是公司的董事, 你永远是被剥削者,公司的目的就是利润最大化,这是公司存活的根本目的。作为普通的职员,要有所为的白领意识,其实就是被剥削意识。这是个适者生存的生态圈,不适用的人只能被淘汰。

        实际的公司其实有很多人情味在里面,或者同事和领导有些话不便于说出口。 这也就造成了一些技术人员被开除,还自以为如何如何? 都是没有这些意识造成的。我写这篇博客就是希望能增加技术人员的这些意识,不要犯了这些问题还自己不知道。

2008-07-21 Mon

23:51 New York Times ×LinkedIn,老媒体新渠道一起搞搞新鲜 » Fenng's shared items in Google Reader
22:00 Thank You Larry Ellison » del.icio.us/fenng/oracle
19:46 如何转换RAC中RDS和UDP互联 » blue_prince
18:21 歌华经历的数据库"攻击" » Oracle Life
17:26 一次应用故障排除 » 中国雅虎_站长天下_www.dbaleading.com_原创文章
15:20 char与num混合型的判断 » 中国雅虎_站长天下_www.dbaleading.com_原创文章
15:06 添加DNS后导致ORA-600 » 中国雅虎_站长天下_www.dbaleading.com_原创文章
12:12 10g imp 问题 » 中国雅虎_站长天下_www.dbaleading.com_原创文章
11:53 终于出了亚洲 » Fenng's shared items in Google Reader
11:25 WordPress Tips + Things You Can Do After Installing Wordpress » Fenng's shared items in Google Reader
10:27 重建控制文件的ORA-01620错误 » 中国雅虎_站长天下_www.dbaleading.com_原创文章
08:39 关于大数据量模糊查询的方法 » Alibaba DBA Team
06:37 Dreamhost惊魂记 » NinGoo@Net
02:57 招聘 PHP 工程师 » Fenng's shared items in Google Reader
00:11 QClub杭州:SOA在互联网系统中的应用探讨 » Fenng's shared items in Google Reader

2008-07-20 Sun

21:00 在 AIX V6 上的 telnet、FTP 和 r 命令中配置和启用 Kerberos 身份验证 » developerWorks 中国 : 技术文章 , 教程 AIX
20:27 Quest InTrust architecture » Uploads from dbanotes
17:04 二十年故地重游 » 柔嘉维则@life.oracle.eng
10:11 关闭侦听须谨慎 » OracleBlog.cn
10:01 Missing Data - rows used to generate result set » MySQL Performance Blog