这些人无法接受eBay的官僚和政治MBA文化   [点评]

eBay让位Facebook等网站:失去娱乐元素是首因

具有讽刺意味的是,在收购PayPal后,eBay曾将那些现在是互联网娱乐革命领军人物都招致麾下,包括YouTube创始人查德-赫利(Chad Hurley)和陈士骏(Steve Chen),Facebook董事会成员彼得-蒂埃尔(Peter Thiel),Yelp联合创始人兼CEO杰瑞米-斯托普尔曼(Jeremy Stoppelman),Slide创始人兼CEO麦克斯-拉夫琴(Max Levchin),Yammer创始人大卫-萨克斯(David Sacks),LinkedIn联合创始人雷德-霍夫曼(Reid Hoffman),还有其他一些人物,也包括我(作者时任PayPal执行副总裁,在PayPal被收购后3周离开)。但是,这些人由于无法接受eBay的官僚和政治MBA文化,都选择了离开并开创了自己的”娱乐”事业。

这让我想起”活力28,沙市日化” 这个当年红火品牌的口号。

发布于 2009 年 05 月 26 日 by fisher in 默认

法国小伙卡佑民寻找理想   [点评]

寻找理想

本来想放弃广播。

十 五岁在海边小城入行的我到了法国首都觉得巴黎的广播界太难进入,不适合我这个对个人能力超不自信的青年。二十岁那年通过中国武术我赫然法现自己与中国文化 非常有缘份,我就抛弃了被传染几年的广播兴趣,千里迢迢去了遥远的中国寻找一个理想,我的”功夫理想”。我还记得走之前一个华裔朋友羡慕又讽刺地问我”然 后呢?做什么工作?怎么谋生?”,我自然回答”搞不好还可以做广播啰”,那朋友看了我半天就扔了一句”中国广播不需要你哦”。的确。但是他没有料到的 是,”不需要”就不代表”没有空间给你”。。。我自己没有料到的是一因为身体体质不佳,缘分又不到,我就没有练太多武术,然而很快就进入了中国的广播界, 慢慢创造了一个特别角色叫作”老卡”。从上海的录音棚里忙着幕后的事,闪到广东个钟媒体里的特别人物,从上海电台北京路二号那老楼到广州电台的顶级先进广 播大楼,老卡个人和他那个法式中文的声音到了中国各地,进了不少中国听众的家也交了很多好朋友。托了几个关键领导的允许和广大听众的支持和认可,我在这个 飞速成长的广播界里慢慢找到了一个属于自己的非常位置和地位。

一九九三年二月二日,一个年轻的法国佬乘了单程飞机票到了上海虹桥机场。那天上海机场居然没有人来接他。那天一个特别有趣的故事开始了。

发布于 2009 年 05 月 16 日 by fisher in 默认

Introduction to Messaging Channel – EIP   [点评]

Introduction to Messaging Channels

Pattern Catalog

Previous Previous   Next Next

Site Home • Patterns Home • Table of Contents

In Introduction to Messaging Systems, we discussed Message Channel. When two applications wish to exchange data, they do so by sending the data through a channel that connects the two. The application sending the data may not know which application will receive the data, but by selecting a particular channel to send the data on, the sender knows that the receiver will be one that is looking for that sort of data by looking for it on that channel. In this way, the applications that produce shared data have a way to communicate with those that wish to consume it.

Message Channel Themes

Deciding to use a Message Channel is the simple part; if an application has data to transmit or data it wishes to receive, it will have to use a channel. The challenge is knowing what channels your applications will need and what to use them for.

Fixed set of channels — One theme in this chapter is that the set of Message Channels available to an application tends to be static. When designing an application, a developer has to know where to put what types of data to share that data with other applications, and likewise where to look for what types of data coming from other applications. These paths of communication cannot be dynamically created and discovered at runtime; they need to be agreed upon at design time so that the application knows where its data is coming from and where the data is going to. (While it is true that most channels must be staticly defined, there are exceptions to this theme, cases where dynamic channels are practical and useful. One exception is the reply channel in Request-Reply. The requestor can create or obtain a new channel the replier knows nothing about, specify it as the Return Address of a request message, and then the replier can make use of it. Another exception is messaging system implementations that support hierarchical channels. A receiver can subscribe to a parent in the hierarchy, then a sender can publish to a new child channel the receiver knows nothing about, and the subscriber will still receive the message. These relatively unusual cases notwithstanding, channels are usually defined at deployment-time and applications are designed around a known set of channels.)

Determining the set of channels — A related issue is: Who decides what Message Channels are available, the messaging system or the applications? That is to say: Does the messaging system define certain channels and require the applications to make due with those? Or do the applications determine what channels they need and require the messaging system to provide them? There is no simple answer; designing the needed set of channels is iterative. First the applications determine the channels the messaging system will need to provide. Subsequent applications will try to design their communication around the channels that are available, but when this is not practical, they will require that additional channels be added. When a set of applications already use a certain set of channels, and new applications wish to join in, they too will use the existing set of channels. When existing applications add new functionality, they may require new channels.

Unidirectional channels — Another common source of confusion is whether a Message Channel is unidirectional or bidirectional. Technically, it’s neither; a channel is more like a bucket that some applications add data to and other applications take data from (albeit a bucket that is distributed across multiple computers in some coordinated fashion). But because the data is in messages that travel from one application to another, that gives the channel direction, making it unidirectional. If a channel were bidirectional, that would mean that an application would both send messages to and receive messages from the same channel, which—while technically possible—makes little sense because the application would tend to keep consuming its own messages, the messages it’s supposed to be sending to other applications. So for all practical purposes, channels are unidirectional. As a consequence, for two applications to have a two-way conversation, they will need two channels, one in each direction (see Request-Reply in the next chapter).

Message Channel Decisions

Now that we understand what Message Channels are, let’s consider the decisions involved in using them:

One-to-one or one-to-many — When your application shares a piece of data, do you want to share it with just one other application or with any other application that is interested? To send the data to a single application, use a Point-to-Point Channel. This does not guarantee that every piece of data sent on that channel will necessarily go to the same receiver, because the channel might have multiple receivers; but it does ensure that any one piece of data will only be received by one of the applications. If you want all of the receiver applications to be able to receive the data, use a Publish-Subscribe Channel. When you send a piece of data this way, the channel effectively copies the data for each of the receivers.

What type of data — Any data in any computer memory has to conform to some sort of type: a known format or expected structure with an agreed upon meaning. Otherwise, all data would just be a bunch of bytes and there would be no way to make any sense of it. Messaging systems work much the same way; the message contents must conform to some type so that the receiver understands the data’s structure. Datatype Channel is the principle that all of the data on a channel has to be of the same type. This is the main reason why messaging systems need lots of channels; if the data could be of any type, the messaging system would only need one channel (in each direction) between any two applications.

Invalid and dead messages — The message system can ensure that a message is delivered properly, but it cannot guarantee that the receiver will know what to do with it. The receiver has expectations about the data’s type and meaning; when it receives a message that doesn’t meet these expectations, there’s not much it can do. What it can do, though, is put the strange message on a specially designated Invalid Message Channel, in hopes that some utility monitoring the channel will pick up the message and figure out what to do with it. Many messaging systems have a similar built-in feature, a Dead Letter Channel for messages which are successfully sent but ultimately cannot be successfully delivered. Again, hopefully some utility monitoring the channel will know what to do with the messages that could not be delivered.

Crash proof — If the messaging system crashes or is shut down for maintence, what happens to its messages? When it is back up and running, will its messages still be in its channels? By default, no; channels store their messages in memory. However, Guaranteed Delivery makes channels persistent so that their messages are stored on disk. This hurts performance but makes messaging more reliable, even when the messaging system isn’t.

Non-messaging clients — What if an application cannot connect to a messaging system but still wants to participate in messaging? Normally it would be out of luck; but if the messaging system can connect to the application somehow—through its user interface, its business services API, its database, or through a network connection such as TCP/IP or HTTP—then a Channel Adapter on the messaging system can be used to connect a channel (or set of channels) to the application without having to modify the application and perhaps without having to have a messaging client running on the same machine as the application. Sometimes the "non-messaging client" really is a messaging client, just for a different messaging system. In that case, an application that is a client on both messaging systems can build a Messaging Bridge between the two, effectively connecting them into one composite messaging system.

Communications backbone — As more and more of an enterprise’s applications connect to the messaging system and make their functionality available through messaging, the messaging system becomes a centeralized point of one-stop-shopping for functionality in the enterprise. A new application simply needs to know which channels to use to request functionality and which others to listen on for the results. The messaging system itself essentially becomes aMessage Bus, a backbone providing access to all of the enterprise’s various and ever-changing applications and functionality. You can achieve this integration nirvana more quickly and easily by specifically designing for it from the beginning.

So as you can see, getting applications set up for Messaging involves more than just connecting them to the messaging system so that they can send messages. The messages must have Message Channels to transmit on. Slapping in some channels doesn’t get the job done either. They have to be designed with a purpose, based on the data type being shared, the sort of application making the data available, and the sort of application receiving the data. This chapter will explain the decisions that go into designing these channels.

To help illustrate the patterns, each one has an example from a ficticious, simplified "stock trading" domain. While none of these examples should be used as the basis for implementing a real trading system, they do serve as quick and specific examples of how the patterns can be used.


Home • Patterns • Table of Contents Previous Previous   Next Next


发布于 2009 年 05 月 14 日 by fisher in 默认

hello   [点评]

hello

发布于 2009 年 05 月 13 日 by fisher in 默认

digu   [点评]

digu

发布于 2009 年 05 月 13 日 by fisher in 默认

xianguo鲜果架构得有点糟   [2评论]

鲜果xianguo.com,按说已经很长的一个RSS订阅服务了吧?

今天在MarsOpinion.com尝试顶一下,要求登录xianguo.com
忘了密码,重置。收到重置信:
xianguo-resetpass.jpg
如上。发件地址是sevice,不是个有效的EMail地址。

查了查,Gmail内没找到以往首次注册时的通知信,也许是没有的?
再想了下,试了几个密码。试对了。返回MarsOpinion,得到以下结果:
Mars-BSO.jpg
想了下,这大概是Mars' WordPress编码问题。

发布于 2009 年 05 月 13 日 by fisher in 默认

twitter ga   [点评]

<!– BEGIN google analytics –>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ?
"https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost +
"google-analytics.com/ga.js'
type='text/javascript'%3E%3C/script%3E"));
</script>

<script type="text/javascript">

try {
var pageTracker = _gat._getTracker("UA-30775-6");
pageTracker._setDomainName("twitter.com");
pageTracker._setVar('Logged In');
pageTracker._setVar('lang: en');
pageTracker._initData();

pageTracker._trackPageview('/profile/OutdoorBusiness');
} catch(err) { }

</script>

<!– END google analytics –>

发布于 2009 年 05 月 13 日 by fisher in 默认

8:25 今天第一个时间、事务和效率的分叉口   [点评]

因为webkit核心浏览器Chrome的Ctl+C存在垃圾代码问题,因此需要修改博文显示效果,这就还要打另一浏览器。跟评这8个窗口还会有分叉。再算算,散乱无穷。
散乱的对面是:定。
瑜伽馆的兄弟姐妹,神定瑜伽、宴坐静默或者斋戒沐浴,都是可以对治心的散乱。

但,网络恐怕刚容易令人趋向于散乱

~~~这是升级之前的起始分割线~~~
GIT一直以来是个热门话题,尤其是在节奏之鞭、发展焦虑之特色国情之下。
打住,就得收口,集中不大的篇幅,说说这第一个分叉口。
早上,在麒麟的Blogger空间写了一篇日志:

2009年5月11日 星期一|
快鱼中鱼慢鱼
发贴者 Fisher 在: 8:23:00

玩儿童网页游戏奥比岛(play.aobi.com)的钓鱼赚金币时,kilyn发现我有个倾向,在钓鱼时,偏重个小快速、金币多的小红鱼。

麒麟在下线前,根据钓鱼总结报告,发现三种鱼数量当中钓到数量最多的还是个大且速慢的鱼、其次是中速的中鱼,再其次才是个小的快鱼。

慢、中、快三种鱼的金币分别是2、3、5金币(可能如此,此处再次发现俺并善于算计)。

麒麟发现我有这个偏向。我自己想想还真是。这一直以来竟是个不自觉的问题。

标签: , , ,

上面·kylin发现的问题,已经足够我惊奇的了。

我写完博客,还没思考出结果时,没过两分钟我发现已经处于第一个分叉点。

此时,就因记录kylin那个日志,我已经打开过9个tab标签页。并在格雷兄(对儿童虚拟世界的一段亲身体验)另存新浪博文的图片到Dropbox时,特意打开了Dropbox。

一个浏览器,9个标签,1个Dropbox客户端,两篇博文。

快照,卡!

打住。打住。就此打住。时间消耗前后40分钟。

发布于 2009 年 05 月 11 日 by fisher in 未分类

标签 with , ,

minisite partner douban   [点评]

品牌合作 

发布于 2009 年 05 月 09 日 by fisher in 默认

bank ecitic com @ FF&IE8   [点评]

几乎所有国内网银都遇到微软逐步抛弃IE6&7的尴尬:

网银客户提出升级浏览器为IE6&7,确切点说叫”降级浏览器”。呵呵,为了网络支付,真是没辙。

发布于 2009 年 05 月 06 日 by fisher in 未分类

标签 with