posts - 14,  comments - 22,  trackbacks - 0
  2008年6月16日
几经辗转,我又被安排到了一个新的项目里。
现在到处缺人啊,我们项目刚完事,所有成员都被别的组瓜分了。

貌似ERP的产品也很多,SAP的,Oracle的,国内有些名声的有金蝶,用友,金算盘等等吧。
我们这个项目是和SAP公司合作,使用SAP的软件产品。
貌似SAP这个产品非常复杂。真的是一无所知啊。
我被分到TR模块,和SAP公司的顾问,客户公司的顾问和一些关键用户一起做。
先熟悉一下TR是什么;
TR:treasury的简写;是SAP ERP系统中Financial Acounting (FI)模块的一个子模块,TR模块又分为Cash Management(TR-CM)、Cash Budget Management(TR-CB)两部分。
先看TR-CM部分吧
SAP Library中说道:
 

The topic Input contains an introduction to the menu options: lectronic and manual bank statement, payments, lockbox, electronic and manual check deposit, bill of exchange presentation, and memo records.

The topic Check contains an introduction explaining the transactions used to compare payment advices, calculate interest, and analyze cashed checks.

Cash concentration is covered in the topic on Management . In this section you will also find the chapters explaining the payment program, payment requests, bill of exchange presentation, memo records, and the telephone list.

See Tools for information on the distribution of the Cash Management systems.

The topic Information System deals with, among other things, the liquidity forecast, which you use to obtain information on customer and vendor payment flows. This section also describes the setup of the cash position and the transactions that affect it. The Cash Management application component uses the cash position to reproduce the activity in bank accounts, while activity in subledger accounts is reproduced using the liquidity forecast.

Additional topics are: Journal of Single Transactions Enter and Changed, Comparison and Checking, and Reconciling Cash Management.

The Environment topic describes the procedure for adopting market data in the SAP System. You can do this using the file interface, the real-time datafeed, or the table calculation. The documentation also includes information on worklists and changing master records.

---直接copy的
好了,就知道这么多了,下午再听SAP的顾问的培训吧。
posted @ 2008-11-25 11:56 张老三 阅读(359) | 评论 (0)编辑 收藏

学习MQ(三) 一个实例。
现在有两台机器A和B,分别安装了MQ6.0,我要通过MQ进行A和B之间的双向通信。
我打算分两步,第一步:实现A到B的数据传输。
在A上:
1、创建队列管理器 QM_1001。
2、创建本地队列 LQ_1001
3、创建传输队列 XQ_1001
4、创建远程队列 RQ_1002
5、创建发送方通道 1001.1002
在B上:
1、创建队列管理器 QM_1002
2、创建本地队列 LQ_1002
3、创建接收方通道 1001.1002,名字必须与发送方通道相同。
4、创建侦听器,监听1414端口
这样,A到B的数据传输就可以了。
启动队列管理器QM_1001和QM_1002,启动B上的侦听器,A上启动发送方通道1001.1002,B上的接收方通道也会自动运行;
第二步:实现B到A的数据传输
在B上:
1、创建传输队列 XQ_1002
2、创建远程队列 RQ_1001
3、创建发送方通道 1002.1001
在A上:
1、创建接收方通道1002.1001
2、创建侦听器,侦听1414端口
启动A上的侦听器,启动B上的发送方通道1002.1001,这样A上的接收方通道会自动运行。
这样,由B到A的数据传输也能进行了。
这是我搞定的第一个例子,也是我学习MQ以来感觉有进步的一次。
下面是脚本。
在A上:
* 定义队列管理器
crtmqm -t 5000 -h 1000 -lc -lf 10240 -lp 30 -ls 32 -q QM_1001
*更改QM的字符集编码(CCSID)
    ALTER QMGR FORCE CCSID(1381)

* 定义本地队列
    DEFINE QLOCAL('LQ_1001') REPLACE +
           USAGE(normal) +
    DEFPSIST(YES)

* 定义传输队列
    DEFINE QLOCAL('XQ_1001') REPLACE +
           USAGE(XMITQ) +
    DEFPSIST(YES) +
    TRIGGER +
    TRIGTYPE(FIRST) +
    INITQ('SYSTEM.CHANNEL.INITQ') +
    PROCESS('') +
    TRIGDATA('1001.1002')

* 定义远程队列
    DEFINE QREMOTE('RQ_1002') +
    DEFPSIST(YES) +
    RNAME('LQ_1002') +
    RQMNAME('QM_1002') +
    XMITQ('XQ_1001')

* 定义发送方通道
    DEFINE CHANNEL('1001.1002') +
    CHLTYPE(SDR) +
    TRPTYPE(TCP) +
    CONNAME('192.168.110.35(1414)') +
    XMITQ('XQ_1001') +
    DISCINT(0) +
    SHORTTMR(30) +
    SHORTRTY(999999999) +
    LONGTMR(1200) +
           LONGRTY(999999999)

* 定义接收方通道
    DEFINE CHANNEL('1002.1001') +
    CHLTYPE(RCVR) +
    TRPTYPE(TCP)
* 启动队列管理器
strmqm QM_1001
* 启动侦听器
runmqlsr -m QM_1001 -t TCP -p 1414 &

在B上:
* 定义队列管理器
crtmqm -t 5000 -h 1000 -lc -lf 10240 -lp 30 -ls 32 -q QM_1002
*更改QM的字符集编码(CCSID)
    ALTER QMGR FORCE CCSID(1381)

* 定义本地队列
    DEFINE QLOCAL('LQ_1002') REPLACE +
           USAGE(normal) +
    DEFPSIST(YES)

* 定义传输队列
    DEFINE QLOCAL('XQ_1002') REPLACE +
           USAGE(XMITQ) +
    DEFPSIST(YES) +
    TRIGGER +
    TRIGTYPE(FIRST) +
    INITQ('SYSTEM.CHANNEL.INITQ') +
    PROCESS('') +
    TRIGDATA('1002.1001')

* 定义远程队列
    DEFINE QREMOTE('RQ_1001') +
    DEFPSIST(YES) +
    RNAME('LQ_1001') +
    RQMNAME('QM_1001') +
    XMITQ('XQ_1002')

* 定义发送方通道
    DEFINE CHANNEL('1002.1001') +
    CHLTYPE(SDR) +
    TRPTYPE(TCP) +
    CONNAME('192.168.110.21(1414)') +
    XMITQ('XQ_1002') +
    DISCINT(0) +
    SHORTTMR(30) +
    SHORTRTY(999999999) +
    LONGTMR(1200) +
           LONGRTY(999999999)

* 定义接收方通道
    DEFINE CHANNEL('1001.1002') +
    CHLTYPE(RCVR) +
    TRPTYPE(TCP)
* 启动队列管理器
strmqm QM_1002
* 启动侦听器
runmqlsr -m QM_1002 -t TCP -p 1414 &

剩下几个疑问没有明白
1、更改QM的字符集编码是做什么用的?
2、从资料上看到有个服务器传输通道,不知道是做什么用的?

posted @ 2008-11-12 17:37 张老三 阅读(3805) | 评论 (3)编辑 收藏
学习MQ(二)基本概念
这次简单罗列一下MQ的基本概念,还有我对它们的理解
1、queue manager 队列管理器,这是MQ系统中最上层的一个概念。每一个queue manager都有一个侦听器,如果它要接受消息的话,每个queue manager中管理多个队列queue和消息通道message channel。
2、消息 message,消息是应用程序交给MQ来传输的数据。
3、队列 queue,队列是用来存放消息的,把消息存放到队列中,直到应用程序或其他MQ对象来处理或取走。
假如,系统A和系统B之间需要数据传输,那么应用程序在系统A端把消息放到MQ的队列中,在系统B端的应用程序从队列中取消息,至于系统A到系统B的数据传输,那是MQ要做的事情。
我用到的队列有三种,本地队列,远程队列,传输队列。其中传输队列也是本地队列的一种,也叫本地传输队列,另外一个叫普通本地队列。
普通本地队列是消息的暂存区,应用程序可以通过API直接把消息放入本地队列,或者取走消息,普通本地队列是占用磁盘空间的,应该是对应磁盘上测某个文件。
本地传输队列是一个存储转发队列,资料上是这么说的:比如,我们将某个消息交给MQ系统发送到远程主机,而此时网络发生故障,MQ将把消息放在传输队列中暂存,当网络恢复时,再发往远端目的地。
本地传输队列也是要占用磁盘存储空间的。
远程队列是一个定义,它是目的MQ系统中的本地队列在本系统中的一个映像,就像定义了一个指针,指向目的系统的本地队列一样。它不占用磁盘空间。

还有模板队列和动态队列的概念,很好理解,模板队列就是一个模板,定义新的队列时可以照着这个模板创建。动态队列没用过,听说很灵活,是MQ的特色。
4、消息通道 message channel 消息通道是一个逻辑概念,它是队列管理器之间传输消息的管道,它建立在屋里的网络连接之上。传说,通道是MQ的精华,由于我没用过其他的消息中间件产品,也没有深入使用MQ,所以没有看出这精华二字体现在何处。
消息通道是单向的,由发送方通道和接收方通道组成,而且这两个必须是同名的。如系统A要发消息到系统B,那么需要在A中建立发送方通道,在B建立接收方通道,必须同名。

另外还有两种通道,MQI通道和Cluster通道,我没用,就没深究,要是以后用到,就深挖一下。
5、侦听器 listener 这是在接受消息方必不可少的。它侦听一个端口(默认为1414,可以更改),等待发送方的连接。

posted @ 2008-11-12 17:36 张老三 阅读(3136) | 评论 (1)编辑 收藏
声明:我的文字里出现的MQ,如没有特殊指明,就是指的IBM的websphere MQ

以前对MQ一无所知!
MQ是IBM websphere的系列产品之一,是很好的一个中间件产品。其实我对这列产品并不感兴趣,觉得它们没有很大的是作用。
也许我是错的,在一个规模较大的分布式系统中,远程数据传输、数据同步是一个很大的问题,很重要,而且必须是可靠的。分布在各地的系统之间进行数据传输,会因为网络问题、服务器处理问题变得十分复杂;这样,如果采用传统意义上的网络编程的话,恐怕就达不到预期的效果了。
而采用消息中间件产品可以解决这样问题。
这是我对中间件产品MQ的一些初步的理解。
posted @ 2008-11-12 17:36 张老三 阅读(2206) | 评论 (4)编辑 收藏
好久不能上网了,我哭
posted @ 2008-11-12 17:35 张老三 阅读(253) | 评论 (0)编辑 收藏

今天,应用程序出现问题,一个页面的表格展现不出来。
左查右查,发现是这个表格查询的数据库视图不可用导致的。

针对这个视图做查询时,报错如下:
SQL0575N  不能使用视图或具体查询表
"DB2ADMIN.VIEW_BRAND_EXPORT_FLAG",因为它已经标记为不可用。  SQLSTATE=51024

问题1:
这是什么原因引起的?以前一直用的挺正常,怎么就突然不可用了呢。

Google了一把,IBM的官方资料有这么一个介绍:加入建立视图view_a,然后建立角色role_a,分配view_a的查询权限给role_a,然后把role_a分配给用户db2admin,之后使用db2admin用户可以查询视图view_a。但是当角色role_a的查询权限revoke的话,再用db2admin用户查询视图view_a是,就报错:SQL0575N  不能使用视图或具体查询表,因为它已经标记为不可用。  SQLSTATE=51024。详情见:http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0808chengy/index.html
但是,可以肯定的是我这个问题不是由这个原因引起的。因为我们根本没有创建角色,我们使用db2admin用户直接访问视图的。
那问题出在哪儿呢?
我也不知道,以后再查吧。
问题2:
这个问题怎么解决呢?
我没有什么好办法。
比较菜:drop 该视图,然后找到建立该视图的SQL脚本,重新建立一遍,就OK了。

哪位高人对这个问题有了解,请把问题原因和解决办法分析一下吧!

posted @ 2008-10-07 10:56 张老三 阅读(4027) | 评论 (2)编辑 收藏
AIX默认安装ksh,默认没有翻查上一条命令
而习惯了bash中的翻查上一条命令,使用起AIX的ksh感觉不爽。在不安装bash的情况下,可以使用下述方法在ksh中实现翻查上一个命令。
1、在主目录中 vi .profile
2、添加一行:export EDITOR=vi
3、保存.profile,重新登陆。
这样就可以使用vi中的上下(j/k)翻查上一条命令了。
posted @ 2008-08-26 13:16 张老三 阅读(3946) | 评论 (3)编辑 收藏
??????????????
posted @ 2008-08-18 12:58 张老三 阅读(218) | 评论 (0)编辑 收藏

腾讯科技讯 6月27日消息,微软创始人盖茨将于北京时间27日晚正式引退,52岁的盖茨将结束他在微软的全职工作,正式交棒。至此,全球IT业的“盖茨时代”将成为历史。

值此难忘时刻,微软员工自发向盖茨赠送了一本电子书,并共同在书上记下具有纪念意义的重大时刻。

微软员工表示,“一张照片,一段记忆,或是一件趣事!还有比这更好的方式,向倾注全部热情带领微软公司33年的比尔,表达我们的谢意吗?”

一下是部分电子书精彩照片:

胡锦涛书记访美,作客微软。图为比尔盖茨,Craig,亚勤在向总书记及夫人作介绍。

胡锦涛书记访美,作客微软。图为比尔盖茨,Craig,亚勤在向总书记及夫人作介绍。

共同书写电子年鉴,微软员工送给比尔盖茨的礼物

盖茨的精彩时刻

盖茨的精彩时刻

盖茨的精彩时刻

 

2007年4月,在博鳌亚洲论坛期间,盖茨与张亚勤博士共同主持亚洲青年领袖论坛后与参会嘉宾的合影,青年企业家包括丁磊,马云,张欣和李亦非等

posted @ 2008-06-27 17:10 张老三 阅读(303) | 评论 (0)编辑 收藏
前些天,下载了一个免安装版的mysql,由于我的本性能不太好,免安装版的正合我意。我下的是mysql-noinstall-5.1.6-alpha-win32.zip,那个网址不记得了。不过Google一下,遍地都是!

不过,使用过程中有个问题一直很烦,就是在命令行下,执行命令时,如果发生报错,电脑会发出“嘀”的响声,貌似主板的声音,很是刺耳,有点讨厌。

于是,在网上查了一下,发现有这个问题的还挺少,没找到答案,于是问了一下同事牛人,在试了N次之后,终于搞定了这个问题,方法很简单:

在配置文件my.ini中的[mysql]节点下,添加一行no-beep,保存,重启mqsql,就ok了。

不过有的刚接触mysql的朋友可能会说,我没有my.ini文件啊?

的确,安装完mysql之后或者是下载的免安装版解压之后,默认是没有my.ini文件的.
但是,有几个类似的文件,如my-small.ini、my-medium.ini、my-large.ini、my-huge.ini,下面我说一下这几个文件是干嘛的。
这几个文件是mysql针对不同的应用推荐的不同的配置信息;但这些配置只有放到my.ini中才会被应用。
其中:
    1、my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。
    2、my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。
    3、my-large.ini是为专用于一个SQL数据库的计算机而设计的。由于它可以为该数据库使用多达512MB的内存,所以在这种类型的系统上将需要至少1GB的RAM,以便它能够同时处理操作系统与数据库应用程序。
    4、my-huge.ini是为企业中的数据库而设计的。这样的数据库要求专用服务器和1GB或1GB以上的RAM。
    
    这些选择高度依赖于内存的数量、计算机的运算速度、数据库的细节大小、访问数据库的用户数量以及在数据库中装入并访问数据的用户数量。随着数据库和用户的不断增加,数据库的性能可能会发生变化。
    
    可以根据自己的情况,选择某一个文件中配置复制到my.ini中,my.ini文件当然需要自己创建,直接新建这个文件就行了,然后复制进去配置信息。我本机上的mysql只是学习用的,使用的是my-small.ini中的配置;如果有其他的需求,可以针对my.ini文件中某个节点修改配置。
    
     至于,my.ini中的配置信息的详细介绍,我在此就不说了,内容太多(我好多都没用到,还未深入理解,呵呵),说了估计也没人看。需要的话,Google一下,也是遍地都是。

posted @ 2008-06-27 11:28 张老三 阅读(1923) | 评论 (4)编辑 收藏
文章出自:http://www.yeeyan.com/articles/view/nana/9276 译者:scorpio31 

简介

探讨新的互联网技术发展趋势及其代表公司,google  苹果  Facebook

接受人类的创造并使用它

但是不要崇拜它

因为它将成为过去

一位匿名的智者在一个废弃的汽车门上刻下了上面的话,并把它拖到了我在北部加利福尼亚的家附近的一条小路上。原始的红衫小树林似乎不该出现这样锈迹斑斑的汽车门,然而车门上的话却神奇般地把这片破旧不堪的东西变成了一件艺术品。我一回到家就再google上搜索这句话,当然是什么也没发现。(多亏了google, 我们生活的世界,把“我不知道”变成一个无法接受的回复。因此,我不能找到作者的结果让我抓狂。)

我住的小镇距离硅谷很近,我大多数朋友都以技术为生,而我则以撰写这些内容为生。 我们都崇拜那些璀璨耀眼的新事物。这段时间,日益临近的苹果下一代iphone发布正处在信誓旦旦的祈祷中。 如果这马上到来的奇迹将被相信,这款新的手机将会成为下一个大的“平台”。

一个平台,对于计算机人士而言,是指在其上可以运行第三方的应用程序。目前已有许多平台,仅在手机一块国际上就有30多种。 但是一个真正成功的平台应该可以超越它的直接用户群并能有效的创造并控制一个巨大的市场。 在计算机工业界,IBM凭借其大型机和操作系统主宰着高端商用平台,着眼于企业用户。 随着PC革命的兴起,似乎是在一夜之间,IBM受到了微软和Windows操作系统的排挤。 依次下来,随着web-不被任何个体拥有,对全体开放—成为主宰平台,Windows正在失去其往日的威力。(是的,web只不过是一层巨大的程序代码,所有我们访问的网络站点不过是跑在其上的应用程序而已。)

当然每个技术领域的主要角色都想创造出下一代平台。新颖之处在于的确有这样的可能使得任意多的他们取得成功。“在这些当中与以往的观点不同,即只有一个成功者” Marc Andreesen说,他辅助开发了第一个被广泛使用的浏览器,Mosaic,后来在互联网中流行。 互联网相对PC操作系统而言是一个广大的多的天地。“试图找出谁将取胜”Andereessen 补充道,“有点类似于争论在食品市场中牛肉、鸡肉还是龙虾将会赢得市场一样。”

然而,对象我这样喜欢过度用功的人,观察硅谷当中最具创新性的三家公司—每家都代表信息时代的一种基本特质—谁能胜出是一件吸引人的事情。 苹果、google、facebook分别是个人计算机开创时代的小角色;是最大的、获利最多的、造就了web的公司;并且是充满胆识的“暴发户”,是当前社会网络迁移的同义词。

在很多方面,这些公司成为了技术标准的棋手,虽然他们的指导体系有差别。 例如,google倡导“开放”的web,并且倾向于在开发者中推动开放的标准和联盟。 Facebook, 连同其注册社区中7000万的活动用户,提供了一个更可控的经验,至少迄今为止,希望在其虚拟社区内保证用户的安全。苹果从旧世界中走来。 它雅致的产品保护了用户远离信息时代的混乱,但是苹果的经验仍倾向于产品的高度受限,使用苹果独有的硬件终端以及苹果的软件和服务,例如iTunes音乐商店。

在这场平台之争中的获胜者将会赢得数十亿的用户,为广告商赚足眼球,销售其诸如音乐、电影、甚至按需的计算能力等服务。然而这里的结果远比谁将挣得最多更为重要。互联网的将来—我们如何获取信息,如何在相互之间进行交流,更重要的一点,谁将控制它—都还是一个问题。

Facebook为何出现

当Facebook创始人Mark Zuckerberg宣称这项运动开始时,平台这个词在一年前成了时髦用语。 ‘“社会网络是封闭的平台”。他讲述了一群在旧金山的800开发人员的聚会。“今天我们将会去改变所有这些。”

你将观看这个讲演的视频,像我所做那样,在google中搜索开发者会议的名称,“F8。” 让F8有史以来变得有意义的是Facebook平台首次对开发人员开放。任何人知道如何编写应用程序的人都被Facebook所欢迎。Andreessen说一个开放的编码环境是任何一个平台成功的关键,因为它将更加易用,更多的开发人员将汇集起来,使得平台变得不断强大。Facebook也把免费的版本分发给开发人员。想要增加新应用的用户可以通过单击的快捷方式来实现。谣传将会进入Facebook董事会的Andreessen说,所有这些都帮助Facebook更引人注目。“成为一个平台的关键是能够激发成千上万的处在另一侧的你不需要支付费用的人群的创造力,并且他们可以想到你没有想到的东西。”

这正是过去一年中发生在Facebook身上的事情。类似于淘金热的一波又一波的开发人开始编写简单的应用。截至6月1日,24000个程序,小到手势,例如虚拟打人的能力,再到完整的游戏例如Scrabulous都对Facebook的用户可用。期待可以加载更多,Facebook开放了其关键的编程接口,这些代码是开发人员访问Facebook平台所需要的,令人震惊的达到400000个,远远超出了Zuckberg的预期。

Zuckerberg,24岁,在会议中是热门人物。当我和他交谈时,他刚从旧金山附近的一个大型的业界技术活动回到加州的Palo Alto.在那里他又一次被问到是否会把Facebook卖给微软,仅是小规模投资就给了Facebook150亿资金。(微软,曾经尝试收购雅虎但以失败告终,将会使用一个新的平台。)Zuckerberg有一次说了不,他将不会卖出,他会尽全力打造一个伟大的并且切实可行的平台,当然这需要时间。 Zuckerberg以一种平稳流畅的男高音讲述着,他长长的脖子,并习惯于把下巴上翘,像是在吹萨克斯。“许多去年中所作的开发平台的工作只是为了跟上胜利的步伐。”他说。

这就是当你创造一个成功的平台时所要发生的:一个有效的圈子扩张着,有广大的用户吸引着一批开发人员创造更多乐趣和有用的东西,这些反过来又吸引更多的用户加入。无需提及的是,当然也会存在相当的无用的、让人厌烦的应用。 在Facebook,应用程序开发者的收入是从与安装该程序的用户相关的广告发布费用中提取的,其中一批很适合插入式的广告。Facebook也会对类似Funwall的应用采取措施,这个程序很容易使得用户不经意间对其邮件列表中的朋友发送垃圾邮件,邀请其安装Funwall. Zuckerberg说Facebook在调整其平台以帮助最有用的应用程序有效传播,而打击压制那些不良应用程序。

我询问Zuckerberg关于类似Facebook这样的封闭专有网络可能会抑制网络创新性的理论。这个想法是Jonathan Zittrain 的新书《互联网的将来和如何停止它》的主题,这本书由哈福大学的Berkman互联网与社会中心联合撰写。他指出像Facebook这样的封闭社区的兴起,iPhone的出现,以及看起来没有副作用的google所设立的标准会使得那些不正当的、甚至有具有破坏性的发生在无序网络中的创新活动退出视野。Zuckerbert停下来想了一回,接着说:“总体上我是同意上述原则的,我认为某种程度的开放性和兼容性是极其重要的。” 伟大的平台在开始时通常都是封闭式的,当其走向成熟可以处理更多的负载时会逐渐开放。他补充道:“我们在某种程度上已经完成了那个初始阶段,正在向更开放的阶段迈进。”

实际上,上个月Zuckerberg发布了Facebook Connect功能,这项功能允许用户通过一小段代码把自己的联系列表放在网页上。再比如说,过些时间,博客作者把Facebook风格的“围墙“嵌入到自己的站点上也会成为可能,这将允许方便地查看朋友留言。这是个很棒的想法。到处都是Facebook! 但还存在一个问题。在Facebook Connect发布之后,goolge发起了一个近乎相似的计划—Friend Connect. 如果有什莫会使Facebook近乎疯狂脚步放慢下来,那就是google.

Google尝试连接

网络发展的最初阶段是把信息在线发布并让人们可以通过某种方式找到并连接上。第二阶段即现阶段是关于在人们之间彼此建立连接。

“社会性是个新的重点” Joe Kraus说, 他负责指导google创建运行在整个网络之上的社会层。在这一点上,正如google在其他方面所为一样,Kraus的策略是创造一个社会网络的联盟,这个网路将使用开放的标准而不是Facebook的专有网络和编程语言,因此开发人员可以推广他们的应用。

“Google依赖于开放的互联网来运作它全部的业务。”他告诉我说,“这存在开放性所带来的各种遗传性问题。” 这部分也是由于google的核心业务,搜索依赖于开放性。Google无法找到位于网上的文件、音乐、图片等等--除非它们是开放的可以访问的,Kraus说。在财富500强中最富有的互联网公司(排名150,市值165亿),google有个商业计划,其依赖于网络被尽可能多的人使用。这也正是为何公司会投入如此大量的时间和精力来发掘新的应用以使得网络变得更有用、更有趣。

社会网络对这个计划是一个威胁;用户将会倾向于留在其自己所属的网络社区中,在那些应用中流连。例如,当Facebook的用户开始玩Scrabulous或修改图片时,他们就不使用google。实际上,他们更可能过其朋友或网络应用程序来发现新事物,比如iLike,一个用于匹配你的朋友和你相似音乐喜好的服务。

所以,google在去年12月通过OpenSocial,这个由Facebook竞争对手:MySpace,Hi5, 以及google自己的社会网络Orkut构成的联盟, 试图创造一个一次开发即可普遍运行的应用平台。 这意味着开发者,只要经过微小的改动就可以创造一个可以

在所有主要社会网络运行的应用,当然了,Facebook除外。 "当你同开发人员交谈时,他们中的多数都不超过50人;他们不可能用50种不同的方式来编写应用,"Kraus说,“他们的确需要一次性开发,然后尽可能多的推广。”

他的观点确实是有道理的。但是我在想也许对google也许已经晚了,或者对于社会网络的聚会已经过时了。“Google意识到了它需要面向更多用户,但这需要在现有平台上增加许多。这并不都是自有的。”我的邻居Seth Goldstein说,他经营着SocialMedia,一个针对社会网络的广告网。“Facebook是从头开始被设计出来用于描绘展现这些复杂的且有细微差别的各种社会关系的。”

为什么iPhone是重要的

苹果的理念更加简单:谁占领网络根本不重要- Facebook,Google或者二者都有,抑或其它。 Steve Jobs只是希望确保你使用他们的设备去访问。

到了那时,新的iPhone,这个被期待在于6月9日发布的茶品,将是具有“巨大意义的”,Andreessen说,他现在主持一家名为Ning的公司,允许任何人打造自己的社会网络。 “,所有这里的人们都相信iPhone—并且我认为这是事实—将是第一个真正的、完整意义上的手持计算机终端,”他说,“它具备一个可用平台所必需的一切要素。”

Matt Murphy,一位位于Kleiner Perkins Caulfield & Byers的风险投资人,目睹了这项花费1亿资金启动iPhone伟大应用的过程,乃至更远。他宣称iPhone将会“毫无疑问的成为后PC时代的驱动力。” Murphy指出用于开发iPhone应用程序的开发包已经被下载超过了200,000次,他估计当iPhone商店开业时将约有1000个应用程序商品提供给消费者。“当看到有众多的阻碍移动生态环境的制约因素时,苹果只想抛弃这些因素并提供一个开放的平台,一个伟大的设备和用户群对于这些新的应用来说是非常重要的。”

Jobs的杰出才能总是表现在融合边缘的技术并使之易于接受。平板监视器,电影制作软件,wi-fi,数字音乐播放器,触摸显示屏---所有这些都大约是在过去的20年中以比较粗糙的方式出现的,他的天才在于发现这些并重新包装它们,使得这些技术可以在大众面前闪亮登场。与之相似的是,苹果的iPhone2.0将会在地理位置上更广泛流行,想想车载卫星导航系统作为一种人们随地都可进行的交流方式。

又一次,在平台之战中面临保卫多个战场的Google将是苹果的强大对手。它正在领导另一个联盟为下一代手机以及其它消费终端来建造一个称为Android的开放操作系统。这个开放的手持设备联盟具有34名成员,手机网络运营商以及设备制造商,包括摩托罗拉,LG电子,三星,中国移动,Sprint Nextel和T-Mobile. 尽管Google的CEO Eric Schmidt坐在苹果执行董事会的位置上,Jobs像对待合作伙伴一样在iPhone上运行google的应用,苹果却不在这个联盟当中。

这看起来类似于在山谷中来大喊“Frenemies”, 公司之间在某些领域进行合作而在其它则相互竞争。

第一款Android研制的手机就要面世了,Google宣称,在今年下半年,也可能就是在新的iPhone发布的时刻。在最近的google开发者大会上,公司第一次作了展示,一个通用的运行操作系统的手机。 可触摸,附一个可随车携带的运动检测加速计,用于在google卫星地图上指示用户的位置,这个设备与iPhone没有任何相似之处。 Google的移动平台总监,Andy Rubin解释说,Android对开发者来说是一个开放的平台;他们可以随意更改代码。他说迄今为止,开发者已经编写了超过1800个应用程序,这些都可通过google站点传播,类似于YouTube一样根据受欢迎程度。“这当中有一些相当有创意的东西”,Rubin解释到,“这将融合手持设备与网络以及随之出现的全新的事物。”

为了推动进程,google举办竞赛,最终将有10个最佳应用的开发者赢取275000美元的奖金。 Robert Lam, 他的Eco2go在上个月被提名为50名进入决赛顶级奖项之一,他表示决定为Android平台而不是iPhone开发自己的应用程序,用来帮助用户计算并减少carbon footprints, 因为对于Android平台而言,比iPhone要简单的多。为iPhone做开发“将会花费我们一定的年度费用,所以我们不得不与苹果分享收入的30%”,Lam说。这就是说,Lam已经考虑在Eco2go建立后把其应用移植到iPhone上。 iPhone可能最终将会变得非常流行,在这个阶取消所有可能的选项是不明智的。

我同意。像他一样,在这场战争里,我在各处植根,因为听起来哈佛的Zittrain的担忧似乎并非是事实,我们都身处其中。当Andreessen说网络太广阔以至于拒绝任何控制的企图时他是正确的。 有了google,使我深刻意识到Facebook或者任何其他人似乎都不太可能领先的太远。同时我也相信当Zuckerberg说Facebook将随着时间逐步开放。 这是个明智的进步,他是个聪明的人。最后,我希望手上可以拿着新的iPhone. 属于它的时间会来的也会过去。但是现在呢?伟大的技术,仍会一如既往的呈现在我们每一个上帝面前。

posted @ 2008-06-24 12:34 张老三 阅读(225) | 评论 (0)编辑 收藏
    周末加班,在IBM小型机上部署升级版的应用程序。
我在学校学过Linux,实验室环境下用过red hat 。但是还没用过IBM 的AIX系统,其实命令应该差不多,整整忙一天。
    系统很庞大,我们首先需要使用MQ将程序包从顶级节点下发到下一层每个服务器节点,剩下的都是重复性的工作了。每个下层环境下都有三台小机,分别是DB2server、MQserver、WASserver,现在总结一下。
    使用secureCRT telnet到WASserver上,在这里,创建备份目录,先备份当前版本的程序包,然后将升级版的程序包copy进去。
     1、mkdir -p /tmp/20080621/app_bak  创建备份目录
        如果不指定-p参数,那么若/tmp/20080621路径不存在的话,app_bak就无法创建;指定-p就可以连续创建不存在的目录
    2、cd  /tmp/20080621/app_bak 进入备份目录 可以使用pwd查看一下当前目录

    3、mv 原来的文件包 ./ 将原来的程序包移动到当前目录下

    到现在为止,备份算是搞定了,接下来将升级版的软件包copy到WASserver上,由于升级版的软件包在MQserver上,我们使用ftp命令把它取到WASserver上,过程如下:
    1、cd 应用程序目录
    2、ftp MQserver ip 
        系统提示输入user、password,验证之后,进入ftp命令模式下,即ftp>
        使用ftp的get命令将MQserver上的升级版软件包取至当前目录:ftp>get 软件包在mqserver上的全路径 ./
        文件不大的话,应该很快就能传完。然后使用bye命令断开ftp连接(ftp真是个好东西,其他的命令很多,请见ftp相关资料)

      现在升级版的软件包就copy到WASserver上了,接下来要做的是升级数据库,这要登录到DB2server上,AIX提供了一个连接本地主机或远程主机的命令,rlogin [本地主机或远程主机名],查看主机名可以使用hostname命令,例如我现在键入hostname,系统会打印出WASserver。
    1、rlogin DB2server 登录到DB2server上
    2、cd /tmp/datascript 然后使用chown -R db2admin:db2grp1 * 修改此目录的所有权,使用chmod 777 *修改读写权限,chmod 有符号方式和数字方式两种,不清楚的Google一下。
    2、使用同样的方法,将数据库升级包从MQserver ftp到DB2server上
    3、DB2 -tvf xxxx.sql > ./xxxx.sql.log 执行升级脚本 并创建日志,如果有很多sql脚本要执行的话,可以写成shell脚本,然后直接执行就ok了,如./update_20080621.sh
    4、使用cat或more命令仔细查看脚本执行的日志,确保执行无异常

做到这里,一个地方的升级基本上完成了,重启一下was就可以到另一个地方的去升级了。全国30多个地方呢,够我们忙的了。

    期间也遇到了很多小问题,值得一提的是,在升级数据库的时候,脚本文件是dos格式还是unix格式的问题。不知道怎么回事,我们在Windows下编写好脚本之后,已经改为unix格式,而传到小机上之后仍然发现有很多dos格式下的回车,只好使用vi编辑器在小机上做了修改。熟练使用vi是在unix/linux工作的必备能力,尚且不熟的请赶快Google,学习学习,vi的内容很多,先不说了。

       周末忙了两天,累,欣慰的是客户反映升级后,系统使用正常,还没发现问题。好了,收工喽!
其实上面这些都是类unix系统中最简单的操作,对牛人来说不值一提,但我还不是牛人,希望和我同水平的人共同学习!
    
posted @ 2008-06-22 16:40 张老三 阅读(1913) | 评论 (1)编辑 收藏
简要说一下http请求报文的格式:
    HTTP请求包括三部分:请求行(Request Line),头部(Headers)和数据体(Body)。其中,请求行由请求方法(method),请求网址Request-URI和协议 (Protocol)构成,而请求头包括多个属性,数据体则可以被认为是附加在请求之后的文本或二进制文件。

    get 请求表示客户端请求一个uri,服务器返回客户端请求的uri,post请求表示客户端请求的时候还要提交数据,比如提交form表单,要提交的数据会放到请求报文的body部分,服务器收到后这样的请求后通常需要来处理这些数据。

    get请求是将数据放在请求的url之后,是一个以"?"打头的查询字符串,比如常见的test.jsp?name=aaa&age=10这种格式,这个是可以直观看到的,(登陆的用户名和密码可不能用get哦)。由于http协议的限制,这样放在url之后的get请求的数据是受大小限制的,最大长度不超过256字符(好像是,可能和web服务器有关)。

    为了能够传输更多的数据,可以采用post请求,post请求是将数据放到了http的Content中,这就无大小的限制了,而且传输的数据不能直接被看到(登陆的用户名和密码一般采用post请求),大量的数据或是文件上传,都只能用post来传输。
    简单的说,get是通过http header来传输数据,有数量限制,而且可见,而post则是通过http body来传输数据,没有数量限制。

    再说servlet中的doget和dopost方法
    web服务器处理这些请求的时候,如果客户端提交的是get请求,则响应doget方法,如果客户端提交的是post请求,则响应dopost方法。这是web服务器在响应doservice方法时,由doservice方法分发下来的(详情请查看http协议和servlet生命周期方面的文章)
posted @ 2008-06-19 00:28 张老三 阅读(4796) | 评论 (2)编辑 收藏
大学中从未写过Java代码的我,竟然要做Java开发了,
看来这个时间还是很有意思的!

那我张老三也只能很感兴趣的奉陪了!
以后注定是Java的人。

专注于技术,我会走好我的路!

高调做事,低调做人,开博第一天,就不大宴宾客了!
posted @ 2008-06-16 17:25 张老三 阅读(371) | 评论 (1)编辑 收藏