Friday 29 August 2008

数据抽取、清洗与转换 BI项目中ETL设计(ZZ)

http://tech.ccidnet.com/art/19215/20080807/1536767_1.html

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析的依据。

ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败。ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更高,为项目后期开发提供准确的数据。

ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候 也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS中(这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法, 尽可能的提高ETL的运行效率。ETL三个部分中,花费时间最长的是T(清洗、转换)的部分,一般情况下这部分工作量是整个ETL的2/3。数据的加载一 般在数据清洗完了之后直接写入DW中去。

ETL的实现有多种方法,常用的有三种,第一种是借助ETL工具如Oracle的 OWB、SQL server 2000的DTS、SQL Server2005的SSIS服务、informatic等实现,第二种是SQL方式实现,第三种是ETL工具和SQL相结合。前两种方法各有优缺点, 借助工具可以快速的建立起ETL工程,屏蔽复杂的编码任务,提高速度,降低难度,但是欠缺灵活性。SQL的方法优点是灵活,提高ETL运行效率,但是编码 复杂,对技术要求比较高。第三种是综合了前面二种的优点,极大的提高ETL的开发速度和效率。

数据的抽取

数据的抽取需要在调研阶段做大量工作,首先要搞清楚以下几个问题:数据是从几个业务系统中来?各个业务系统的数据库服务器运行什么DBMS?是否存在手工数据,手工数据量有多大?是否存在非结构化的数据?等等类似问题,当收集完这些信息之后才可以进行数据抽取的设计。

1、与存放DW的数据库系统相同的数据源处理方法

这一类数源在设计比较容易,一般情况下,DBMS(包括SQLServer,Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建立直接的链接关系就可以写Select 语句直接访问。

2、与DW数据库系统不同的数据源的处理方法

这一类数据源一般情况下也可以通过ODBC的方式建立数据库链接,如SQL Server和Oracle之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成.txt或者是.xls文件,然后再将这些 源系统文件导入到ODS中。另外一种方法通过程序接口来完成。

3、对于文件类型数据源(.txt,,xls),可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库抽取。或者可以借助工具实现,如SQL SERVER 2005 的SSIS服务的平面数据源和平面目标等组件导入ODS中去

4、增量更新问题

对于数据量大的系统,必须考虑增量抽取。一般情况,业务系统会记录业务发生的时间, 可以用作增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间的所有记录。利用业务系统的时间戳,一般情 况下,业务系统没有或者部分有时间戳。

数据的清洗转换

一般情况下,数据仓库分为ODS、DW两部分,通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,再从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。

1、数据清洗

数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据和重复的数据三大类。

A、不完整的数据,其特征是是一些应该有的信息缺失,如供应商的名称,分公司的名 称,客户的区域信息缺失、业务系统中主表与明细表不能匹配等。需要将这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定 的时间内补全。补全后才写入数据仓库。

B、错误的数据,产生原因是业务系统不够健全,在接收输入后没有进行判断直接写 入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、 数据前后有不面见字符的问题只能写SQL的方式找出来,然后要求客户在业务系统修正之后抽取;日期格式不正确的或者是日期越界的这一类错误会导致ETL运 行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。

C、重复的数据,特别是维表中比较常见,将重复的数据的记录所有字段导出来,让客户确认并整理。

数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对 于是否过滤、是否修正一般要求客户确认;对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤 数据的邮件,促使他们尽快的修正错误,同时也可以作为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉了,对于每个过滤规则认真进行验 证,并要用户确认才行。

2、数据转换

数据转换的任务主要是进行不一致的数据转换、数据粒度的转换和一些商务规则的计算。

A、不一致数据转换,这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。

B、数据粒度的转换,业务系统一般存储非常明细的数据,而数据仓库中的数据是用来分析的,不需要非常明细的数据,一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。

C、商务规则的计算,不同的企业有不同的业务规则,不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,供分析使用。

ETL日志与警告发送

◆1、ETL日志,记录日志的目的是随时可以知道ETL运行情况,如果出错了,出错在那里。

ETL日志分为三类。第一类是执行过程日志,是在ETL执行过程中每执行一步的记 录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。第二类是错误日志,当某个模块出错的时候需要写错误日志,记录每次出错的时间,出错 的模块以及出错的信息等。第三类日志是总体日志,只记录ETL开始时间,结束时间是否成功信息。

如果使用ETL工具,工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。

◆2、警告发送

ETL出错了,不仅要写ETL出错日志而且要向系统管理员发送警告,发送警告的方式有多种,常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。

SQL Server 2005不能启动问题

SQL Server 2005突然不能启动了。察看了一下Event Viewer, log 是这样的。

The SQL Server (MSSQLSERVER) service failed to start due to the following error:
The service did not start due to a logon failure.

The MSSQLSERVER service was unable to log on as INTL\yvli with the currently configured password due to the following error:
Logon failure: unknown user name or bad password.

由于我们的域账号是3个月一次update的,所以当密码登陆不成功,但是很奇怪的是SSIS的Service还是好好的,原来SSIS的账号是用Network Service登陆的。所以,就全都改成使用Built in logon的 Network Service登陆。全部okay.

还有一个小插曲,Via 协议enable以后,果然不能start Server。

今天很忙,先记录在这里,有时间看看为什么。:)

Thursday 28 August 2008

修炼成妖



女修,女修,不死不休,不成妖精不罢休。

嘻嘻~~

(就着意境补个图,图为峨眉山白蛇修炼的白蛇洞,据说这个洞是通杭州的西湖哦~,大的是白蛇洞,小的是青蛇洞)

IMG_0263

 


















FTP download 脚本

准备活动:
1.设置好文档结构
2.7zip folder准备就绪

步骤:
1. set 连接FTP参数。
2.连接&下载
3.unzip with 7 zip
4.改名(改名字的目的是为了方面倒数据)

@echo off
rem author
rem init variable

rem begin to init variables & create folder according to
rem System date.
echo begin to init variables.....
set user=******
set password=*******
rem input Parameter 1
set rootfolder=%1
rem input Parameter 2
set DateFolderName=%2

rem Generated date.
rem rem set day=%date:~7,2%
rem rem set month=%date:~4,2%
rem rem set year=%date:~10,4%

rem set FTP download mode and subfolder
set targetfolder=gets
set contype=binary
mkdir %rootfolder%\%DateFolderName%

rem begin to connect FTP
echo begin to connect FTP....
echo open ftp>z
echo %user%>>z
echo %password%>>z
echo %contype% >>z
echo lcd %rootfolder%\%DateFolderName%>>z
echo cd gets>>z
echo prompt>>z
rem get all files
echo mget *.zip>>z
echo bye>>z
ftp -s:z

rem begin upzip the file with 7zip
set zipRootFolder=e:
set zipFolder=%zipRootFolder%\schedule\software\7zip\
%zipRootFolder%
cd %zipFolder%
echo %zipFolder%
7za x %rootfolder%\%DateFolderName%\*.zip -o%rootfolder%\%DateFolderName% -p%password%

echo hello

rem change name into the order I want to generate.
cd %rootfolder%\%DateFolderName%
echo old new>>log
for %%a in (*.txt) do call:test "%%a"
goto:elf
:test
set /a b+=1
echo %1 %b%.txt>>log
ren %1 %b%.txt

:elf

Zip Tool Max Size

昨天碰到一个问题,有2个大的file不能用winrar打开,错误提示是“Unknown Method in” 后来发现是file Size 的问题,从winrar里面看是 4,294,967,295 bytes,而实际上是5,258,199,981 bytes。所以可能是winrar 有4 gb的限制,更换7zip以后可以了,说明的确是这个问题。

不过从http://www.ahasoft.com.tw/winrar/ziprar.htm
上看到的参数,却是这样的,winRar并没有提到,zip也是4G的限制。
+--------------------------+-----------------------+---------------------------+
| Criterion | WinRAR | WinZIP |
+--------------------------+-----------------------+---------------------------+

| Maximum archive size     | File sizes in         | Up to 4GB in ZIP format   |
| and file size for | RAR/Win32 limited by | |
| archiving | OS. Significantly | |
| | larger than 8Tb | |


在论坛上找到的参数
http://help.wugnet.com/winrar/FAQ-maximum-file-archive-Size-ftopict7.html

The size of a RAR archive, as well as the size of any single file within a RAR archive, is limited to 8,589,934,591 GB (9,223,372,036,854,775,807 bytes).
Note that to create archives larger than 4 GB, you need to use NTFS, as older file systems do not support such large files.
The size of a ZIP archive, as well as the size of any single file within a ZIP archive, is limited to 2 GB.

TCP协议的握手过程(ZZ)

TCP协议的握手过程
http://www.cnblogs.com/Winston/archive/2008/08/26/1276843.html
一、TCP三次握手

  传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如下所示:

TCP Client Flags TCP Server
1 Send SYN (seq=w) ----SYN---> SYN Received
2 SYN/ACK Received<---SYN/ACK---- Send SYN (seq=x), ACK (w+1) 3 Send ACK (x+1) ----ACK---> ACK Received, Connection Established
网管u家u.bitscn@com

w: ISN (Initial Sequence Number) of the Client
x: ISN of the Server

  在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。

  二、TCP标志

  这里有必要介绍一下TCP分段中的标志(Flag)置位情况。如下图所示。



*SYN:同步标志
  同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。
中国网管论坛bbs.bitsCN.com



  *ACK:确认标志
  确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。

  *RST:复位标志
  复位标志有效。用于复位相应的TCP连接。

  *URG:紧急标志
  紧急(The urgent pointer) 标志有效。紧急标志置位,

  *PSH:推标志
  该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的。

  *FIN:结束标志
  带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。



三、TCP端口

  为了能够支持同时发生的并行访问请求,TCP提供一种叫做“端口”的用户接口。端口是操作系统核心用来识别不同的网络回话过程。这是一个严格的传输层定义。通过TCP端口和IP地址的配合使用,可以提供到达终端的通讯手段。实际上,在任一时刻的互联网络连接可以由4个数字进行描述:来源IP地址和来源端口,目的IP地址和目的端口。位于不同系统平台,用来提供服务的一端通过标准的端口提供相应服务。举例来说,标准的TELNET守护进程(telnet daemon)通过监听TCP 23端口,准备接收用户端的连接请求。 网管联盟bitsCN_com

  四、TCP缓存(TCP Backlog)

  通常情况下,操作系统会使用一块限定的内存来处理TCP连接请求。每当用户端发送的SYN标志置位连接请求到服务端的一个合法端口(提供TCP服务的一端监听该端口)时,处理所有连接请求的内存使用量必须进行限定。如果不进行限定,系统会因处理大量的 TCP连接请求而耗尽内存,这在某种程度上可以说是一种简单的DoS攻击。这块经过限定的,用于处理TCP连接的内存称为TCP缓存(TCP Backlog),它实际上是用于处理进站(inbound)连接请求的一个队列。该队列保存那些处于半开放(half-open)状态的TCP连接项目,和已建立完整连接但仍未由应用程序通过accept()调用提取的项目。如果这个缓存队列被填满,除非可以及时处理队列中的项目,否则任何其它新的 TCP连接请求会被丢弃。

  一般情况下,该缓存队列的容量很小。原因很简单,在正常的情况下TCP可以很好的处理连接请求。如果当缓存队列填满的时候新的客户端连接请求被丢弃,客户端只需要简单的重新发送连接请求,服务端有时间清空缓存队列以相应新的连接请求。

  在现实环境中,不同操作系统支持TCP缓冲队列有所不同。在BSD结构的系统中,如下所示:

OS Backlog BL+ Grace Notes
SunOS 4.x.x 5 8
网管网www_bitscn_com


IRIX 5.2 5 8
Linux 1.2.x 10 10 Linux does not have this grace margin
FreeBSD 2.1.0 32
FreeBSD 2.1.5 128
Win NTs 3.5.1 6 6 NT does not appear to have this margin
Win NTw 4.0 6 6 NT has a pathetic backlog

  五、TCP进站(Inbound)处理过程

  为了更好的讲述TCP SYN Flood的攻击过程,我们先来介绍一下正常情况下,TCP进站处理的过程。

  服务端处于监听状态,客户端用于建立连接请求的数据包(IP packet)按照TCP/IP协议堆栈组合成为TCP处理的分段(segment)。

  分析报头信息: TCP层接收到相应的TCP和IP报头,将这些信息存储到内存中。

  检查TCP校验和(checksum):标准的校验和位于分段之中(Figure-2)。如果检验失败,不返回确认,该分段丢弃,并等待客户端进行重传。

  查找协议控制块(PCB{}):TCP查找与该连接相关联的协议控制块。如果没有找到,TCP将该分段丢弃并返回RST。(这就是TCP处理没有端口监听情况下的机制) 如果该协议控制块存在,但状态为关闭,服务端不调用connect()或listen()。该分段丢弃,但不返回RST。客户端会尝试重新建立连接请求。
中国网管联盟bitsCN.com


  建立新的socket:当处于监听状态的socket收到该分段时,会建立一个子 socket,同时还有socket{},tcpcb{}和pcb{}建立。这时如果有错误发生,会通过标志位来拆除相应的socket和释放内存, TCP连接失败。如果缓存队列处于填满状态,TCP认为有错误发生,所有的后续连接请求会被拒绝。这里可以看出SYN Flood攻击是如何起作用的。

  丢弃:如果该分段中的标志为RST或ACK,或者没有SYN标志,则该分段丢弃。并释放相应的内存。【转自www.bitsCN.com】

调优 Windows(ZZ)

调优 Windows
http://www.janker.org/knowledge/117.html

您可能需要定制 Windows 系统,以提高服务器的性能。下面,将向您介绍调整 Windows 2003 和 Windows XP 系统配置的技巧。请牢记,这些系统可能会变化,从而导致这些建议过时,并导致您的结果有所不同。

在为了改善性能而进行任何更改之前,请确保已经对当前性能进行了度量。不管您是否关心事务执行速度、响应时间、最大并发用户数或其他一些性能条件,都需要在更改前后,进行足够准确地度量,以了解更改调优参数是否有效。

TcpTimedWaitDelay

TcpTimedWaitDelay 值确定了在 TCP/IP 可释放已关闭的连接并复用其资源之前,必须等待的时间。关闭和释放之间的时间间隔称为 TIME_WAIT 状态或最长分段生命周期的两倍(2MSL)状态。在此期间,重新打开客户机和服务器之间的连接比新建一个连接的开销要小。通过减小该项的值,TCP/IP 可更快地释放已关闭的连接,并可为新连接提供更多的资源。如果由于多个连接处于 TIME_WAIT 状态导致吞吐量较低,从而正在运行的应用程序需要快速释放连接、创建新的连接或是进行调整,请调整这个参数。

缺省值是 0xF0,将等待时间设置为 240 秒(4 分钟)。

最小的推荐值是 0x1E,将等待时间设置为 30 秒。请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。
  2. 将该值设为十进制的 30(十六进制为 0x0000001e)。该值将等待时间设置为 30 秒。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

MaxUserPort

MaxUserPort 值确定了当应用程序请求系统中可用的用户端口时,TCP/IP 能分配的最大端口号。如果系统报告建立套接字出错异常,这可能是由于匿名(临时)端口号不够大引起的,特别是,如果系统打开了大量的端口来构建与 Web service、数据库或其他远程资源的连接。

缺省情况下,Windows 为匿名(临时)端口保留端口号 1024 到 5000

常见的做法是将该值设置为 32768。请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建名为 MaxUserPort 的新 REG_DWORD 值。
  2. 将该值至少设置为十进制的 32768。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

动态储备

动态储备值使系统能自动调整其配置,以接受大量突发的连接请求。如果同时接收到大量连接请求,动态储备可提高受支持的暂挂连接的数量,从而可减少连接失败的数量。

缺省情况下,Windows 不启用动态储备。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注册表子键,然后用以下名称和值创建或设置新的 REG_DWORD 值。
    "EnableDynamicBacklog"=dword:00000001
    "MinimumDynamicBacklog"=dword:00000020
    "MaximumDynamicBacklog"=dword:00001000
    "DynamicBacklogGrowthDelta"=dword:00000010
    这些值通过 20 - 1000 个可用连接启用动态储备支持。可用连接数每次增加 10 个,增量小于可用连接的最小数。
  2. 关闭注册表编辑器。
  3. 停止并重新启动系统。

KeepAliveTime

KeepAliveTime 值控制 TCP/IP 尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。如果需要对丢失接 收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提 高该值以减少开销。

缺省情况下,如果空闲连接 7200000 毫秒(2 小时)内没有活动,Windows 就发送保持活动的消息。通常,1800000 毫秒是首选值,从而一半的已关闭连接会在 30 分钟内被检测到。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 KeepAliveTime 的新 REG_DWORD 值。
  2. 为该值设置适当的毫秒数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

KeepAliveInterval

KeepAliveInterval 值定义了如果未从接收方收到保持活动消息的响应,TCP/IP 重复发送保持活动信号的频率。当连续发送保持活动信号、但未收到响应的次数超出 TcpMaxDataRetransmissions 的值时,会放弃该连接。如果期望较长的响应时间,您可能需要提高该值以减少开销。如果需要减少花在验证接收方是否已丢失上的时间,请考虑减小该值或 TcpMaxDataRetransmissions 值。

缺省情况下,在未收到响应而重新发送保持活动的消息之前,Windows 会等待 1000 毫秒(1 秒)。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 KeepAliveInterval 的新 REG_DWORD 值。
  2. 为该值设置适当的毫秒数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

TcpMaxDataRetranmission

TcpMaxDataRetranmission 值定义了 TCP/IP 通过现有连接重新发送未返回应答的数据段的次数。如果您的网络性能很差,可能需要提高该值以保持有效的通信。如果您的网络性能很好,且通常是由于丢失接收 方而导致数据的丢失,则可以减小该值以减少验证接收方是否丢失所花费的时间。

缺省情况下,Windows 会重新发送未返回应答的数据段 5 次。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 TcpMaxDataRetransmissions 的新 REG_DWORD 值。
  2. 将该值设置为适当的重试次数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

TcpAckFrequency

TcpAckFrequency 值确定了 TCP/IP 发送应答消息的频率。

  • 如果值为 2,则 TCP/IP 将在接收到 2 个分段后发送应答,或是在接收了 1 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
  • 如果值为 3,则 TCP/IP 将在接收到 3 个分段后发送应答,或是在接收了 1 个或 2 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
  • 以此类推。

如果需要通过消除 TCP/IP 应答延迟来缩短响应时间,则将该值设为 1。在这种情况下,TCP/IP 会立即发送对每个分段的应答。如果您的连接主要用于移动大量数据,而 200 毫秒的延迟并不重要,则可以减小该值以降低应答的开销。

缺省情况下,Windows 使用值 2(每隔一个分段应答一次)。该值的有效范围是 0 到 255,其中 0 表示使用缺省值(2)。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\AdapterId 注册表子键(其中 AdaperId 表示将受影响的网络适配器),然后创建或设置名为 TcpAckFrequency 的新 REG_DWORD 值。
  2. 根据希望每发送几个分段返回一个应答,为该值设置相应的数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

Wednesday 27 August 2008

Off Cource 3

Summary

OFF学大概的阅读时间总计2个小时,感悟也还不错。虽然距离大前研一说的“商业图书1个小时阅读就足够了”还是有一倍的差距。但是有这样的开始,我还是很自豪的。:D,希望以后能够节约更多的时间,来看更多有趣的书籍。

总体的感悟如下:
  • 生命和时间是最珍贵的,一定要认真对待。
  • 好的Plan,是从容的前提。
  • ROI,计算投入和产出。
  • 平衡人生的各个方面,包括工作,生活,家庭,朋友。
  • 认真做每一件事情,并获得真正的乐趣。
  • 积累和整理,哪怕只是餐馆的名字。

Off Cource 2

出去旅游

原则:
  • 不去人多地地方
  • 在开放的空间享受休闲生活
  • 与父母同游,从现在开始

通过互联网制定旅游计划

  • 搜集地点的信息
  • 根据预算和交通方式确定住宿地点
  • 写旅游企划书

享受国内旅游的乐趣

  • 定点旅游,不同季节(去相同的地方,但是充分休息)
  • 自助游
  • 不购买旅游特产

用IT休闲时间

  • 用BBS来结交有共同兴趣的新朋友
  • 医疗网站时刻关注自己的身体
  • 用数码相机作沟通工具
  • 雨天的假日,用电脑整理自己的过去
  • 网络购物:)

吃饭喝酒场所的乐趣

活力午餐(power lunch)

  • 议题很重要
  • 冷静&建设性谈话
  • 重要的议题,下午可以马上形动

以酒吧喝酒的方式与工作以外的人开怀畅饮

  • 享受有意义的下班时间
  • 有几个熟悉的酒吧,避免浪费时间

选择美食餐厅法则

  • 信息整理:按照不同的价位选择餐厅
  • 用午餐尝试新餐厅:午餐便宜
  • 请餐厅人员推荐菜品,珍惜每一次用餐机会

拥有2家熟悉的餐厅

  • 一家距离公司附近
  • 一家距离住家附近

家庭管理术

周四晚上定期家庭检查

  • 夫妻餐厅检查家庭内部,外部问题
  • 注重单纯倾听和意见交换的平衡点
  • 夫妻享受不同的乐趣,并乐于分享
  • 自己的时间占80%,夫妻时间20%

安排休闲时间例子(个人非常喜欢:P)

  • 周末,身心充分休息
  • 周一晚上:财务,IT,英语等商务能力学习计划
  • 周二晚上:义工活动
  • 周三晚上:加班(如果一周要加班的话)
  • 周四晚上:家庭定期检查
  • 周五晚上:相对休闲的活动,看书,听音乐,看电影,看球

优点

  • 按照自己的想法,主动地使用自己的时间
  • 每天不同的计划,一周生活充满变化
  • 如果有计划,下班的理由与时间会比较明确,工作也会很快完成。
  • 容易判断是否赴约喝酒
  • 周末可以达到真正身心放松的目的。

从现在开始为退休后的生活做准备

  • 积累充足的退休金,做真正想做的事情
  • 理性投资,为退休生活积累财富
  • 参加社会公益活动,回报社会
  • 老年移民海外
  • 退休后另外购置居所,过天堂般的生活

选择终身兴趣的法则

  • 如果超过40岁,要拥有退休以后可以持续的乐趣
  • 跟不同年龄层的朋友一起享受乐趣
  • 选择有表现机会的兴趣

Thursday 21 August 2008

Off Cource 1

OFF 学笔记
大前研一

第一章,第二章

课程目标:
超越工作范畴,享受人生,充实工作和美好的生活。

休闲计划的原则
  • 年初制定休闲计划(when, where, how)
  • 制订一年三次的长期休假计划。
  • 以月为单位,决定周末的休闲活动。
  • 周六重体力运动。
  • 减少无谓的疲劳负担。
  • 少次而充分享受人生。

充分享受兴趣

  • 享受海洋休闲活动:钓鱼,游艇
  • 自费享受,并充分享受
  • 到一流的休闲地点充分享受(去最好的地方)

享受音乐,培养一生的兴趣。

  • 学写兴趣日记;
  • 集中精力,深入研究。
  • 参加音乐会
  • 挑战乐器演奏
  • 结识兴趣伙伴

购买“标准物品”

  • 选择最顺手的标准物品,并一直用下去。e.g. Tumi.
  • 重复购买相同的物品。

把时间花在真正感兴趣的事物上面。

浮华之日,让身心彻底放松

  • 强制一天彻底放松
  • 美发,美甲,按摩
  • 周末悠闲放松,周一从容不迫
  • 购买第二套住房,享受假期(有点奢侈,不过公司距离家太近的确让人发自内心的厌恶。。。。)
  • 家人同游,享受美食,攻占人气餐厅

周末时间分配术

  • 星期五晚上开始,TGIF
  • 星期六,享受体力型的休闲活动
  • 星期天,身心充分休息
  • 星期天晚饭后,一个周末结束。确认未来的时间安排。

增加休闲时间

  • 高效沟通。留言中清楚传达事情,避免"再联络"
  • 为一个议案,准备3个Plan B
  • 上班之前完成部分个人工作,提升工作效率
  • 集中精力工作,养成上午完成工作的习惯;与其杂乱无章的进行,不如全身关注地完成。

高效阅读

  • 阅读一本商业书籍的标准时间是一小时。
  • 目录,前言及结语,掌握全书的主题,形成整体印象。
  • 然后,一边注意章节的大小标题,一边开始速读正文。
  • 如果能先形成整体印象,再循序速度,当接近重要的页面时,手自然会停止。
  • 掌握了有帮助的部分内容后,再回到速读。

哲学与自然科学书籍,引导我们假设,实验,论证的重要性,提高解决问题的基础

  • 蜡烛的化学史
  • 进化论
  • 苏格拉底的申辩

有效利用个人时间的书房活用术

  • 将个人时间列入计划,并且形成习惯
  • 将休息的空间与思考的空间分开使用
  • 营造可以集中精力进行思考的场所,并且将它标准化

拓展人际关系,结交工作以外的朋友

  • 摒弃功利的目的,在单纯的人际交往中建立的友谊会更有生命力

Wednesday 20 August 2008

工作小感

最近,我越来越意识到ROI (Return of Investment)的重要性。Why?这是我们为什么要不断的一直做最重要的事情的原因。

有的时候想想为什么要做这件事的时候,或者是做这件事还是做另外一件事情的时候,我都会想想我的回报会是什么,我的收获会是什么。我的目标会是什么。这些能够让我很开心,因为我不断能够确认我做这件事情是有意义的,或者我放弃某一件事情也是有意义的。不过很多时候,目标太远,也难清楚地知道什么值得,什么不值得,ROI在衡量稍微长久一点的目标或者事情的时候总是无效的。那么只要大方向okay就可以了。毕竟,越大的任务就意味着越不精准的估计。

项目一点点体会

项目的目标

明确项目的目标,非常明确(时间,做什么,做出来的标准,验收标准和准则)。并且随时保证每个组员都非常明确,对信息有及时掌握。

  • 明确的时间(mile stone)结合项目能够掌握进度。
  • 明确的目标能够帮助排除一些噪音,让team关注在最重要的事情上面。
  • 基于明确目标的验收标准,能够帮助校正目标,尽早发现的偏离航线。
  • 工作准则和规范能够统一流程,将信息统一到一处,以能够及时掌握项 目的进度和情况。


将任务分割成为一系列可以控制以及估计的小任务,并明确这些小任务之间的依赖关系,这些项目在8个小时以内,让人有充分的自信能够完成。这些小任务最好是可见的,能够demoable的。不断给人以自信项目是在前进的。

如果任务很多,那么就挑出那些最重要的feature(story)并从最在自己掌握的部分开始。(原型开发模式)

项目的协作

在多个组员分配任务的时候,一定要注意任务之间的解耦,比如用Mock方法开发可以使Server 端开发和UI端开发同步。当然,这是建立在对标准的统一认识基础上的(统一的接口)。

组员之间的交流和同步也是非常必要的。必要而及时的沟通可以能够帮助大家第一时间意识到对目标的不同理解和偏差;重复的工作;以及缺少的task(将一些小的sub tasks 整合到一起往往需要额外的工作,而这是很容易被忽视掉的。)

另外,值得注意的一点是,尽量确保每一次交流都是高效并且令人愉快的,这需要每一次的meeting事前都是精心准备并且有明确的目标的,比如:要解决哪些问题;让大家了解哪些信息;下一步需要做哪些事情。

一个统一的task Assign track工具以及一个简单的报表能够成为高效的交流工具以及监督工具。当然,这是充分建立在大家都能够及时更新信息,并且对任务的分解和估计在充分的情况下。

Sunday 3 August 2008

震后成都旅游印象(一)- 乐山观大佛



   
书接上回,当25号一天内连续发生2次余震以后,我和爸爸开始进行了长达2个小时的电话论战, 到底要不要旅游!

最终,老爸还是屈服并郁闷地同意我去旅游,并要了所有的行程路线以及紧急联系方式。这种紧张的感觉真的和03年去伊拉克差不多。

飞机晚点,终于在等待了6个小时后,半夜11点30分,我们踏上了飞往成都的飞机。飞机大部分人都是四川人,其中有一个阿姨是从上海的女儿家里面回到都江堰的自己的家,自己的家其实已经塌了,他们回去住的其实是政府正在建设的板房。但是从她的脸上,看不出一丝的不愉快或不愿或遗憾,就好像是一件平常的事情一样。让我从内心里佩服这样一些淡然,会享受生活又极其坚强的人们,也充满了对成都的期待。

   
凌晨2点钟,顺利到达成都,刚刚下过雨的成都空气非常清新,又十分凉快,真的很像回到东北家里的感觉,很棒很棒!接机的司机师傅非常的好,已经一路打了好多电话了,虽然飞机晚点了4个小时,他仍然不敢睡觉,一直等我们到2点!到了宾馆,被告知明天6点钟要起床前往乐山并开始我们第一天的旅行了。旅游,还真是一件苦差事。和老爸报好行程以后,昏昏睡去。

   
早上倒还好,没有感觉那么疲惫。上了大巴就前往第一站,乐山大佛。由于之前一直很忙,没有时间研究攻略。于是这第一次的大巴就是最好的一个研究攻略的地方,略略看完,才意识到第二天的峨眉山并不是上峨眉山的金顶,而是半山腰喂喂猴子。于是匆匆开始一路到处电话联系如何改路线上金顶,但是却失败了(没有订到山顶的宾馆),只好作罢。

   
乐山大佛实际上有2个,一个是71米高的乐山大佛,另外一个是70年代才被一个广东老汉偶然发现的奇事,乐山大佛所在的山本身就是一座卧佛。大佛位于3江(岷江,大渡河,青衣江)交汇处,水势十分的凶险,从岸上望去,能够清晰地看出水的中心有不同暗流,不同颜色的水相抵抗,交汇。在古代,这里一定有无数渔民命丧于此。于是古人们就修建了这样一座大佛来保佑水上的人们,据说,修了这座71米高的大佛以后,真的就很少发生事故。于是,乐山大佛就这样成为一座灵佛。


  三江交汇--左面大渡河,右面是成都的母亲河岷江

   IMG_0101

大佛掩映在树丛中

IMG_0110


很久以前,大佛的旁边是有很多窟,内有非常精美的上万座的各种佛像的雕塑,但是由于保护不慎,很多风化了,很多的头颅不知所踪。于是这些绚烂的文明伴随着历史的脚步离我们远去,灰飞烟灭......

IMG_0122IMG_0132

威严的大佛威严而和善注视的脚下的人们和脚下的三江

IMG_0150

佛祖脚下暗流汹涌的江水,在古代一定是一个又一个悲剧的发生地,今天的人们可以很从容的乘坐快艇瞻仰佛祖的全貌。

IMG_0152

 

 













































拓展小结



   (一)断桥

    
站在八米的桥上,前方就是小小一条舢板,一米多真空的另一侧,使另外一个小小的舢板。闭上眼睛,想象一下此时的状况,觉得自己像Jack船长一样,站在舢板的一边,手里拿着一把只有一颗子弹的枪,身后是巴尔巴罗萨船长邪恶地笑着,露出肮脏的大金牙:“你跳吧,前面就是美丽的无人岛,作为人道主义者,我送你只有一颗子弹的手枪......如果你不跳,我现在就结果你.......”

    
这么邪恶的场景我已经想象过3年,当第一次接触拓展活动的时候,我就知道这项令人恐惧而神圣的运动--断桥。而昨天,我真的站在断桥旁边,8米并不高,但是恐怖的是风却不小,小小的舢板被吹得左右摇晃。向下望去,实在是很恐怖,向前看有让人很绝望,没有路,只有另外一块小小的舢板,这就是所谓的目标。我曾经想象过很多次,如果我站在上面,肯定不会恐惧,害怕,凭我从小扎实的爬墙功底和平衡能力(可以在30公分宽2米高的墙上优雅跑过....),肯定不会害怕。但是,事实上是,我还是很害怕,紧张.....战胜自己就是这么困难,我花了整整1分钟深呼吸,调整自己,按住心脏不让它加速跳动,深呼吸,然后迈过去。是的,我不是跳过去的,而是迈过去的。:)迈到对面,一阵轻松,自己还是战胜了自己的!但是,这还没有结束,我还要再回来!虽然回来的距离会更远一点(教练会把板子抽回去一点让距离更远)但是,战胜了自己一次以后,第二次并不算什么了。所以,第二次,我完成了跳过板子而不是迈:)战胜自己之后真的是无比的轻松,心里更有了沉甸甸的坚定。

 

第一次迈过去,很紧张,红色娘子军:)

IMG_1496

第二次,明显轻松许多......哈哈

IMG_1497

 

(二)疯狂市场

    
疯狂市场是我非常喜欢的一个游戏,每3个人成为一个小组,分别是ceo,财务以及生产经理,启动资金1000块。我非常荣幸和小P以及小O同学一个小组,任财务。每个小组都有一个空白的地图,以及一些有关地图的不完备信息,地图上面分布了很多地雷,地雷的位置实事先是不知道的。这个地图上有一条唯一的没有地雷的道路。生产经理的任务就是去实地试探地雷的位置并画出准确的路线,财务的任务是帮助生产经理获得出去试探地雷的门票,门票是拍卖的形式购买。CEO的任务就是统筹决策,帮忙贷款(除了1k的启动资金我们还可以获得800块钱的贷款)。小组一共有7个,目标是争夺前3名,有丰厚的奖金,分别是5k,4k,3k其前三名决出来以后游戏就结束了。

   
游戏开始了,我拿着钱袋子莽莽撞撞的就冲过到卖票老师那里买票。大家都挤在前面,老师问我们,“谁是第一个?”我们都迷惑,都没有应答,只有漂亮MM回答了。拍卖老师居然就把第一张门票送给了她......:(
我们都很郁闷,第二张就不是免费了,我们开始拍卖,“200块钱起拍.....”我们更郁闷了,一共就1000块钱,能买几张票啊?我不由自主地握紧了钱袋子。还没有反应过来,第二张门票被勇敢的小A
MM以300块钱买走了。老师笑嘻嘻跟我们说,你们快点买啊,越到后来越贵啊。于是我定了定神,花了400块钱买了一张门票。我迅速交给我们的生产经理。这个时候,我们的ceo和生产经理已经将自己卡片的信息和其他小组的信息交换完毕,并且有了大致的地雷信息的地图。虽然这些信息只有80%的准确率,但是已经非常宝贵了,相信我们的生常经理进去踩雷不会盲目的瞎踩了。:)


第二张门票搞到很有意思,拍卖老师将第一轮的最后一张门票交给旁边的培训小老师说,他们几个谁唱歌唱得好就给谁,我迅速冲到她面前,给她深情唱了一首Eyes
on
me,真是幸运,我们2个SDC歌后MM一个不在,一个稍有不好意思犹豫了一下,我的竞争对手就剩下一个五音不全的张江男,哈哈哈哈。。。。于是,第二张票就免费到手。:)

   
我们的前二张门票帮助我们走完了地图的一半,但是很快又撞雷了。这个时候,我们已经有了第一个winner拿到了5k的大奖了。我们开始犹豫要不要购买他们的信息并成为第二名。小O同学找到我,说一定要不惜血本拿到一张门票。于是我又一次冲上前线,300起拍,“500!”小Si
MM爆出一个陡涨的价格。“800!”刚出口我自己都觉得惊讶,大家一下子都静了下来,终于没有人和我争了,我有点后悔了,一下子涨了加价率的6倍,是不是很恐怖!付了钱,我们就剩下100块钱了!T_T.....只好找政府贷款......第一名继续向我们兜售信息,但是我们已经没有钱了.....而且,从地图上来看我们也基本看到了一条可行的路线,思考了一下,我们决定冒个险,先走自己想的道路,如果失败了,再从他们那里购买或者怎样。生产经理就这样出去踩雷了,这一刻对我来说实在是太漫长了,我实在无法面对这么悲惨的状况,背负1k的贷款,前途又遥遥无期。这一刻等待实在是太漫长了.....终于小O匆匆进来了,但是我却从他的脸上一点喜悦都看不到:(这一刻我的内心绝望到极点!但是他却从胳膊下面却奇迹般拿出一张第二名的奖金!!!!天啊!他实在太有才了!装的这么像~我终于不再为那张800块钱的门票郁闷了,事实证明它是值得这个价格的!之后的轻松是很容易想象的,但是我们并没有松懈,第一名的team还在继续销售他们的地图!我们也卖!能赚1k就有希望超过第一名了!


    
于是,我们找到了正在排队等待踩雷的生产经理小D同学,“卖地图,1k”他犹豫了一下,找来他们CEO,此时,他们的财务状况也已经非常的悲惨了,已经背负1k贷款,现金剩余150块。但是,他们是最有希望获得第三名的team!于是我们说,我们现在不要你们的钱,如果你们拿到奖金就分给我们1k,这样你还有2k,还了贷款还有盈余呢!于是他们同意了,为了确认,我还让小S
CEO打了欠条一张(天哪!!!!我已经完全把游戏当成真实的环境了!!!!!:(
)结果真的是Win-win,一个皆大欢喜的结局,我们开心的获得了1k,可以敢第一名的team拼一下(事实证明我们的确是第一),而小S的team也荣幸的成为第三名,拿到了3k的奖金,还掉债款和贷款成为一个盈利的公司。:)

 

    
虽然只是游戏,但是我们却成功地体验了创业高风险高投入的危机心态并成功地实践了一次win-win.:)  
最后一个非常非常令人印象深刻,值得学习的是,我们的小P CEO实在是太冷静拉!观察力超强,不得不赞!!!1