FASTCGI学习笔记一:mod_fastcgi模块伪指令

FastCGI 伪指令

FastCgiAccessChecker

  • 缺省 – 目录
  • 语法 – FastCgiAccessChecker 文件名 [-compat]

FastCgiAccessChecker 伪指令用于将 FastCGI 应用程序定义为每个目录的访问验证器。Apache 访问阶段在用户认证之前,并且是否允许对所请求资源进行访问的决策取决于随此请求提交的 HTTP 头。当访问验证决策存在动态组件(如一天中的时间,或者域计数是否最新)时,基于 FastCGI 的授权程序十分有用。

如果 FastCGI 应用程序文件名不具备相应的静态或外部服务器定义,则此应用程序将作为动态 FastCGI 应用程序启动。如果文件名不是以斜杠 (/) 开头,则假设此文件名相对于 ServerRoot。

FastCgiAccessChecker 是在 DirectoryLocation 容器中使用的。

<Directory htdocs/protected>
FastCgiAccessChecker fcgi-bin/access-checker
</Directory>

Mod_fastcgi 几乎发送所有标准环境变量,这些环境变量通常可用于 CGI/FastCGI 请求处理程序。所有由 FastCGI access-checker 应用程序以成功响应(状态:200)返回的头都将作为环境变量传递给子进程(CGI/FastCGI 调用)。所有以不成功响应返回的头将传递给客户机。遵从 FastCGI 规范的行为可通过使用 “-compat” 选项获得。

Mod_fastcgi 将环境变量 “FCGI_APACHE_ROLE” 设置成 “ACCESS_CHECKER”,以表明所执行的(Apache 特定的)授权程序阶段。

不支持从 FastCGI 授权应用程序中定制故障响应。请参阅 ErrorDocument 伪指令以了解替代办法(可处理此文档的 FastCGI 应用程序)。

FastCgiAccessCheckerAuthoritative

  • 上下文 – 目录
  • 缺省 – FastCgiAccessCheckerAuthoritative On
  • 语法 – FastCgiAccessCheckerAuthoritative On | Off

如果 FastCGI 应用程序允许访问失败,则将 FastCgiAccessCheckerAuthoritative 伪指令明确设置成 Off,将使访问检查可传递给较低级的模块(如 Configuration 和 module.c 文件中定义的)。

缺省情况下,不传递控制,并且失败的访问检查将导致一个禁用的回答。在禁用该缺省前,建议您仔细考虑。

FastCgiAuthenticator

  • 上下文 – 目录
  • 语法 – FastCgiAuthenticator 文件名 [-compat]

FastCgiAuthenticator 伪指令用于将 FastCGI 应用程序定义为每个目录的认证器。认证器通过将所提供的用户名和密码与已知用户和密码数据库或列表进行匹配,以验证请求者的身份。当用户数据库是在现有的独立程序中进行维护时,或者当它驻留在除 Web 服务器外的其它机器上时,基于 FastCGI 的认证器十分有用。

如果 FastCGI 应用程序文件名不具备相应的静态或外部服务器定义,则此应用程序将作为动态 FastCGI 应用程序启动。如果文件名不是以斜杠 (/) 开头,则假设此文件名相对于 ServerRoot

FastCgiAuthenticator 是在 DirectoryLocation 容器中使用的,且它必须包含 AuthType 和 AuthName 伪指令。仅支持“基本”用户认证类型。此类型需要一个 require 或 FastCgiAuthorizer 伪指令才能正常运作。

<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
FastCgiAuthenticator fcgi-bin/authenticator
require valid-user
</Directory>

Mod_fastcgi 几乎发送所有标准环境变量,这些环境变量通常可用于 CGI/FastCGI 请求处理程序。所有由 FastCGI 认证应用程序以成功响应(状态:200)返回的头都将作为环境变量传递给子处理程序(CGI/FastCGI 调用)。所有以不成功响应返回的头将传递给客户机。遵从 FastCGI 规范的行为可通过使用 “-compat” 选项获得。

Mod_fastcgi 将环境变量 “FCGI_APACHE_ROLE” 设置成 “AUTHENTICATOR”,以表明要执行哪个(Apache 特定的)授权程序阶段。

不支持从 FastCGI 授权应用程序中定制故障响应。请参阅 ErrorDocument 伪指令以获得替代办法(可处理此文档的 FastCGI 应用程序)。

FastCgiAuthenticatorAuthoritative

  • 上下文 – 目录
  • 缺省 – FastCgiAuthenticatorAuthoritative On
  • 语法 – FastCgiAuthenticatorAuthoritative On | Off

如果 FastCGI 应用程序认证用户失败,则将 FastCgiAuthenticatorAuthoritative 伪指令明确设置成 Off 将使认证能传递给较低级的模块(如 Configuration 和 modules.c 文件中定义的)。

此伪指令的常见用法是与受良好保护的 AuthUserFile 结合使用,此 AuthUserFile 中包含一些(与管理相关的)用户。

缺省情况下,不传递控制,且未知用户将导致产生一个“需要授权”回答。在禁用缺省前,建议您仔细考虑。

FastCgiAuthorizer

  • 上下文 – 目录
  • 语法 – FastCgiAuthorizer 文件名 [-compat]

FastCgiAuthorizer 伪指令用于将 FastCGI 应用程序定义为每个目录的授权程序。授权程序将验证是否允许经认证的用户访问请求的资源。当授权决策中存在动态组件(如一天中的时间,或者用户是否已支付其帐单)时,基于 FastCGI 的授权程序十分有用。

如果 FastCGI 应用程序文件名不具备相应的静态或外部服务器定义,则此应用程序将作为动态 FastCGI 应用程序启动。如果文件名不是以斜杠 (/) 开头的,则假设此文件名相对于 ServerRoot

FastCgiAuthorizer 是在 DirectoryLocation 容器内使用的,且必须包含 AuthType 和 AuthName 伪指令。此伪指令需要一条认证伪指令,如 FastCgiAuthenticator、AuthUserFile、AuthDBUserFile 或 AuthDBMUserFile 才能正常运作。

.<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
AuthDBMUserFile conf/authentication-database
FastCgiAuthorizer fcgi-bin/authorizer
</Directory>

Mod_fastcgi 几乎发送所有标准环境变量,这些环境变量通常可用于 CGI/FastCGI 请求处理程序。所有由 FastCGI 认证应用程序以成功响应(状态:200)返回的头都将作为环境变量传递给子进程(CGI/FastCGI 调用)。所有以不成功响应返回的头将传递给客户机。遵从 FastCGI 规范的行为是通过使用 “-compat” 选项获得的。

Mod_fastcgi 将环境变量 “FCGI_APACHE_ROLE” 设置成 “AUTHORIZER”,以表明要执行哪个(Apache 特定的)授权程序阶段。

不支持从 FastCGI 授权应用程序中定制故障响应。请参阅 ErrorDocument 伪指令以获得替代办法(可处理此文档的 FastCGI 应用程序)。

FastCgiAuthorizerAuthoritative

  • 上下文 – 目录
  • 缺省 – FastCgiAuthorizerAuthoritative On
  • 语法 – FastCgiAuthorizerAuthoritative On | Off

如果 FastCGI 应用程序认证用户失败,则将 FastCgiAuthenticatorAuthoritative 伪指令明确设置成 Off 将使认证能传递给较低级的模块(如 Configuration 和 modules.c 文件中定义的)。

此伪指令的常见用法是与受良好保护的 AuthUserFile 结合使用,此 AuthUserFile 中包含一些(与管理相关的)用户。

缺省情况下,不传递控制,且未知用户将导致产生一个“需要授权”回答。在禁用缺省前,建议您仔细考虑。

FastCgiConfig

  • 上下文 – 服务器配置
  • 语法 – FastCgiConfig 选项 选项 …

FastCgiConfig 伪指令定义了所有动态 FastCGI 应用程序的缺省参数。此伪指令不会影响静态或外部应用程序。

动态应用程序是根据需求而启动的。如果需求很大,则将启动其它应用程序实例。当需求减弱时,将杀死应用程序实例。有许多选项可控制此进程。

选项可以包含下列任意一项(不区分大小写): appConnTimeout n (0 秒) 等待与 FastCGI 应用程序的连接完成的秒数,或者 0 表明使用阻塞 connect()。如果超时到期,则将导致 SERVER_ERROR。对于非零值,这表示 select() 中用于写入由非阻塞 connect() 返回的文件描述符的时间量。在许多平台上,非阻塞 connect() 很容易产生问题。另见 -idle-timeout;此选项将产生类似的结果,但其方式更为简便。 idle-timeout n (30 秒) 在请求异常终止并且事件记录(错误日志级别)之前,允许 FastCGI 保持不活动的秒数。只有当与 FastCGI 应用程序的连接暂挂时,此不活动定时器才适用。如果请求进入应用程序的请求队列,而此应用程序在此期间没有响应(通过写和刷新),则此请求将异常终止。如果与应用程序的通信已完成,而与客户机的通信尚未完成(响应被高速缓存),则此超时不适用。 autoUpdate 无 此选项使得 mod_fastcgi 在处理每个请求之前,检查磁盘上应用程序的寿命。如果此应用程序的版本更加新,则通知进程管理器,并杀死所有正在运行的此应用程序的实例。最好将这一类型的功能内置到应用程序中(例如,每隔 100 个请求检查磁盘上是否有更新的版本,如果有就退出)。当此选项与 -restart 一起使用时,可能存在一个明显的问题(错误)。 gainValue n (0.5) 一个 0 至 1 间的浮点值,它在当前运行的动态 FastCGI 应用程序的指数衰减连接次数负载因子计算中用作指数。旧值通过 (1 – gainValue) 进行调节的,所以当与当前值(通过 gainValue 调节)比较时,该值越小,其权值就越重。 initial-env 名称[=值] 无 当应用程序的实例产生时,在初始环境中传递的“名称-值”对。要传递来自 Apache 环境的变量,请不要提供 “=”(如果变量实际不在此环境中,则其定义不带值)。要定义不带值的变量,提供不带任何值的 “=”。此选项可重复使用。 init-start-delay n (1 秒) 此应用程序各实例产生之间的最小秒数。此延迟减少了服务器初始化时系统发出的需求。 killInterval n(300 秒) killInterval 确定了进程管理器内动态应用程序实例杀死策略的实现频率。该数值越低,策略就越活跃;相反该数值越高,则策略越不活跃。 listen-queue-depth n (100) 由此应用程序的所有实例共享的 listen() 队列的深度(也称为累积)。深度较大的侦听队列使服务器能在不拒绝请求的情况下,应付瞬时负载波动;它不会增加吞吐量。添加附加应用程序实例会增加吞吐量及执行,这取决于应用程序和主机。 maxClassProcesses n (10) 允许任何一个 FastCGI 应用程序运行的最大动态 FastCGI 应用程序实例数。 maxProcesses n (50) 在任何时候允许运行的最大动态 FastCGI 应用程序实例数。 minProcesses n (5) 任何时候允许运行,且无须由进程管理器(因没有需求)杀死的最小动态 FastCGI 应用程序实例数。 multiThreshhold n (50) 一个 0 至 100 间的整数,用于确定是否终止任一 FastCGI 应用程序实例。如果应用程序当前有多个实例在运行,则此属性用于决定是否终止其中一个实例。如果只保留有一个实例,则替代使用 singleThreshhold。 pass-header header 无 请求环境中传递的 HTTP 请求头的名称。此选项使得头的内容(例如 Authorization)可用于 CGI 环境。 priority n (0) 为应用程序实例指定的进程优先级(使用 setpriority())。 processSlack n(5 秒) 如果当前正在运行的所有动态 FastCGI 应用程序数总和超过了 maxProcesses – processSlack,则进程管理器将调用杀死策略。此操作可通过在不活动的应用程序实例数到达 maxProcesses 之前杀死一些活动最不频繁的应用程序实例,从而改善高负载时的性能。 restart 无 此选项使进程管理器能在发生故障时重新启动动态应用程序(与静态应用程序类似)。 restart-delay n (5 秒) 重新产生此应用程序失败实例之间的最小秒数。此延迟避免了中断应用程序占用过多的系统资源。 singleThreshhold n (0) 一个 0 至 100 间的整数,用于确定是否可终止 FastCGI 应用程序的最后一个实例。如果进程管理器计算出应用程序的负载因子低于指定的阈值,则将终止最后一个实例。指定一个接近 1 的值,以使您的可执行程序以 “idle” 方式长时间运行。如果内存或 CPU 时间是主要因素,则接近 100 的值更为适用。值 为 0 将阻止终止应用程序的最后一个实例;该值也是缺省值。建议不要更改此缺省值(尤其在设置了 -appConnTimeout 的情况下)。 is set). startDelay n(3 秒) 尝试连接到动态 FastCGI 应用程序时,Web 服务器等待的秒数。如果此间隔到期,则将通知进程管理器希望启动应用程序的另一个实例。startDelay 必须小于 appConnTimeout 才有效。 updateInterval n (300 秒) updateInterval 确定了执行统计信息分析,以确定动态 FastCGI 应用程序结果的频率。 FastCgiExternalServer

  • 上下文 – 服务器配置
  • 语法 – FastCgiExternalServer 文件名 -host 主机名端口 [-appConnTimeout n]
    FastCgiExternalServer 文件名 -socket 文件名 [-appConnTimeout n]

appConnTimeout n (0 秒) 等待到 FastCGI 应用程序的连接完成的秒数,0 表明使用阻塞 connect()。如果此超时到期,则将导致 SERVER_ERROR。对于非零值,这是指 select() 中用于写入由非阻塞 connect() 返回的文件描述符的时间量。在许多平台上,非阻塞 connect() 很容易产生问题。请参阅 -idle-timeout;此选项将产生类似的结果,但其方式更为简便。 idle-timeout n (30 秒) 在请求异常终止,并且事件记录(错误日志级别)之前,允许 FastCGI 应用程序保持不活动的秒数。只有当与 FastCGI 应用程序的连接暂挂时,此不活动定时器才适用。如果请求进入应用程序的请求队列,而此应用程序在此期间没有响应(通过写和刷新),则此请求将异常终止。如果与应用程序的通信已完成,而与客户机的通信尚未完成(响应被高速缓存),则此超时不适用。 flush 无 当从应用程序接收到数据时将其强制写入客户机。缺省情况下,mod_fastcgi 将对数据高速缓存,以快速释放此应用程序。 host 主机名:端口 无 应用程序用于与 Web 服务器通信的主机名或 IP 地址和 TCP 端口号 (1-65535)。-socket 和 -host 选项是互斥的。 Pass-header header 无 请求环境中传递的 HTTP 请求头的名称。此选项使头的内容成为可用,通常头的内容(例如 Authorization)不可用于 CGI 环境。 socket 文件名 无 UNIX:应用程序用于与 Web 服务器通信的 UNIX 域套接字的文件名。此文件名相对于 FastCgiIpcDir。-socket 和 -port 选项是互斥的。 Windows NT:应用程序用于与 Web 服务器通信的管道名。此名称相对于 FastCgiIpcDir。-socket 和 -port 选项是互斥的。 FastCgiIpcDir

  • 上下文 – 服务器配置
  • 缺省 – UNIX – FastCgiIpcDir /tmp/fcgi, Windows NT – FastCgiIpcDir \.pipeModFastCgi
  • 语法 – UNIX – FastCgiIpcDir 目录,Windows NT – FastCgiIpcDir 名称

UNIX:FastCgiIpcDir 伪指令指定了作为 UNIX 套接字文件存储(在外部 FastCGI 应用程序中为查找)位置的目录,该套接字文件用于应用程序和 Web 服务器之间的通信。如果此目录不是以斜杠 (/) 开头的,则假设它相对于 ServerRoot。如果此目录不存在,则假设以相应的许可权创建它。不要指定非本地文件系统中的目录。如果您使用缺省目录(或 /tmp 中的另一个目录),则如果您的系统定期从 /tmp 删除文件,mod_fastcgi 将中断。

Windows NT:FastCgiIpcDir 伪指令指定了作为命名管道根的名称,该管道用于应用程序和 Web 服务器之间的通信。此名称的格式为 \.pipe管道名。管道名部分可以包含除反斜杠外的任何字符。

FastCgiIpcDir 伪指令必须在任何 FastCgiServerFastCgiExternalServer 伪指令(它利用 UNIX 套接字)之前。确保此目录对于 Web 服务器来说是可读、可写并可执行(可搜索)的;应该没有人能访问此目录。 FastCgiServer

  • 上下文 – 服务器配置
  • 语法 – FastCgiServer 文件名 选项 选项 …

FastCgiServer 伪指令定义了作为静态 FastCGI 应用程序的文件名。如果文件名不是以斜杠 (/) 开头的,则假设此文件名相对于 ServerRoot

缺省情况下,进程管理器会使用下面指定的缺省配置(圆括号中)启动应用程序的一个实例。如果由于某些原因致使静态应用程序实例失效,mod_fastcgi 将产生另一个实例以进行替换,并记录此事件(警告日志级别)。

选项可为下列之一(不区分大小写): appConnTimeout n (0 秒) 等待到 FastCGI 应用程序的连接完成的秒数,0 表明使用阻塞 connect()。如果此超时到期,则将导致 SERVER_ERROR。对于非零值,这是指 select() 中用于写入由非阻塞 connect() 返回的文件描述符的时间量。在许多平台上,非阻塞 connect() 很容易产生问题。请参阅 idle-timeout, 它将产生类似的结果,但其方式更为简便。 idle-timeout n (30 秒) 在请求异常终止并且事件记录(错误日志级别)之前,允许 FastCGI 保持不活动的秒数。只有当与 FatCGI 应用程序的连接暂挂时,此不活动定时器才适用。如果请求进入应用程序的请求队列,而此应用程序在此期间没有响应(通过写和刷新),则此请求将异常终止。如果与应用程序的通信已完成,而与客户机的通信尚未完成(响应被高速缓存),则此超时不适用。 initial-env 名称[=值] 无] 无 在 FastCGI 应用程序初始环境中传递的“名称-值”对。要传递来自 Apache 环境的变量,请不要提供 “=”(变量实际不在环境中,其定义不带值)。要定义不带值的变量,提供不带值的 “=”。此选项可重复使用。 init-start-delay n(1 秒) 此应用程序各实例产生之间的最小秒数。此延迟减少了服务器初始化时系统发出的需求。 Flush 无 当从应用程序接收到数据时将其强制写入客户机。缺省情况下,mod_fastcgi 将对数据高速缓存,以快速释放此应用程序。 Listen-queue-depth n (100) 此应用程序的所有实例共享的 listen() 队列的深度(也称为累积)。较深的侦听队列使服务器能在不拒绝请求的情况下,应付瞬时负载波动。此选项不会增加吞吐量。添加附加应用程序实例会增加吞吐量及执行,这取决于应用程序和主机。 Pass-header header 无 请求环境中传递的 HTTP 请求头的名称。此选项使得头的内容(例如 Authorization)可用于 CGI 环境。 processes n (1) 服务器初始化时产生的应用程序实例数。 Priority n (0) 为应用程序实例指定的进程优先级(使用 setpriority())。 port n 无 应用程序用于与 Web 服务器通信的 TCP 端口号 (1-65535)。此选项使得能从网络上的其它机器访问此应用程序。-socket 和 -port 选项是互斥的。 Restart-delay n (5 秒) 重新产生此应用程序失败实例之间的最小秒数。此延迟避免了中断应用程序占用过多的系统资源。 Socket 文件名 (gen’d) UNIX:应用程序用于与 Web 服务器通信的 UNIX 域套接字的文件名。此模块在 FastCgiIpcDir 所指定的目录中创建套接字。该选项使得同一机器上的其它应用程序(例如 cgi-fcgi)能够访问此应用程序,或通过外部 FastCGI 应用程序定义 (FastCgiExternalServer) 对此应用程序进行访问。如果 -socket 和 -port 选项都没有指定,则此模块将生成一个 UNIX 域套接字文件名。-socket 和 -port 选项是互斥的。 Windows NT:应用程序应该用于与 Web 服务器通信的管道名。此模块创建了由 FastCgiIpcDir 指定的命名管道根的命名管道。该选项使得同一机器上的其它应用程序(如 cgi-fcgi)也能访问此应用程序,或者能够通过外部 FastCGI 应用程序定义 (FastCgiExternalServer) 对其进行访问。如果 -socket 和 -port 选项都没有指定,则此模块将为命名管道生成一个名称。-socket 和 -port 选项是互斥的。 FastCgiSuexec

  • 上下文 – 服务器配置
  • 缺省 – FastCgiSuexec Off
  • 语法 – FastCgiSuexec On | Off | 文件名

FastCgiSuexec 伪指令用于启用对 suexec-wrapper 的支持。FastCgiSuexec 要求在 Apache 中启用(对于 CGI)。要使用 Apache 所使用的同一个 suexec-wrapper,将 FastCgiSuexec 设置成 On。要使用不同的 suexec-wrapper,指定 suexec-wrapper 的文件名。如果此文件名不是斜杠 (/) 开头的,则假设此文件名相对于 ServerRoot

当启用 FastCgiSuexec 时,静态或外部 FastCGI 应用程序定义的位置十分重要。它们从定义它们的虚拟服务器中的 User 和 Group 伪指令继承了它们的用户和组。User 和 Group 伪指令应在 FastCGI 应用程序之前进行定义。此功能不会将 FastCGI 应用程序限制在定义它的虚拟服务器中,允许此应用程序对任何来自同一用户和组的虚拟服务器的请求进行服务。如果接收到的是对 FastCGI 应用程序的请求,而又不存在以此正确用户和组运行的现有匹配定义,则将用正确的用户和组启动此应用程序的动态实例。该操作将导致以不同用户/组运行同一应用程序的多个副本。如果这是问题,请从其它虚拟服务器中排除到此应用程序的导航,或者使用相同的用户和组来配置虚拟服务器。

请参阅 Apache 文档以获得更多有关 suexec 的信息(确保您已完全理解安全性含义)。

适合拿笔记本看的电影:阳光小美女

刚刚看完。
说适合笔记本看,因为 这部笔没有十面埋伏那样的大投资也没有恢宏的画面,震撼的音响。初看平淡无奇,一不小心就到了结尾,当小奥丽芙在台上大跳脱衣舞时,全剧达到高潮,却在这时又嘎然而止,非常及时。最后有家人又齐心协力推车子来发动车子挂上档,踏上了路。
剧中,当这一家子的破小巴冲断栏杆时,特地给了那位老评委一个镜头,这位看起来是德高望重的老太太正在可怜巴巴地向停车场管理员出示证件,而这倒霉的一家子的小巴却毫不客气地冲了出去,还不忘嘲笑一把老太太。看到这里,会心一笑的同时,也有一种莫名的心酸。他们可以在出停车场的时候很洒脱地冲栏杆,但是现实他们仍然不得不承受各种压力,品尝失败的苦涩,也洒脱不起来了,正如奥丽芙能否选美仍然很大程序上依赖于那位更年期老太太评委一样。
有人说,剧中展示了一种阳光,向上的风貌,我怎么也看不出来。虽然,他们一家子虽屡遭失败,却仍很互相关爱,虽然他们很努力,包括偷偷带走老爷子的尸体,包括迟到之后给工作人员下跪以换来奥丽芙入场。各有各看法吧。
放一张剧照:这个追车的场面,不时出现,难道有所暗示?
1212954.jpg
再附一个剧情介绍:

 家家有本难念的经,但胡佛家的“经”是尤其地难念:爸爸理查德是一名谈判专家,虽然事业正处于低谷,却死活不肯承认自己失败的事实;妈妈谢莉尔受够了理查德的自欺欺人,不停地暗示着两人的婚姻已经到了无法挽回的地步;正经历着青春期叛逆的儿子德韦恩是一名狂热的尼采迷,他发誓直到自己当上战斗飞行员的那一天,才肯开口说话;祖父为老不尊,因为毒瘾而被养老院赶了出来;严格说来不姓“胡佛”的,就只有刚刚搬来的弗兰克,他是谢莉尔的哥哥,这位曾经声名显赫的心理学家因为和男学生的暧昧关系而失去了一切,自杀未果的他需要亲人的时刻看管……

  看来这一家子里,也只有还来不及经历人生风雨的七岁小女儿奥莉芙还维持着天真正常的心态。然而小小年纪的奥莉芙却早熟了点儿,矮胖且长相平平的她已经显露出爱美的天性,她的梦想就是参加“阳光小美女”的选美活动。认为奥莉芙肯定没戏的理查德为她报了名,没想到她却通过初试,要去加州参加决赛了。由于理查德买不起全家人去加州的飞机票,只好自己开车,来了一场为期三天的公路旅行。性格各异的胡佛家的成员之间都存在着不可调和的矛盾,所以这一路上是麻烦不断,只是经过这一场历练,他们每一个人身上都发生了根本的转变。

一段影评的链接:
http://www.i35mm.cn/filmreview/199/

另一段影评:
http://www.playsz.net/bbs/thread-191-1-1.html
电影 可通过ftp://www.162cm.com/匿名登陆下载。

史记-华南虎列传

本来我的博客是不转载的,呵呵.但是这个实在是太强了.
另外把原来收集的”马家爵赋也贴到这里.嘿嘿,世上高人真多啊.

翌日,正龙诣秦岭当事者关克,献其图,说如是。克大喜,传图以示左右,左右皆奇,曰”可以此拜上卿矣”。乃悦,赐金万贯,即日著书上表:盛世出猛虎,虎啸振国威!

然疑者众。问,虎视人良久而弗动?克辩:二者皆入定。闻者皆笑其诳。后有好事者欲往探之,克惧,乃令封山,皆不得近。

期日,有贤者傅氏,著文叱之:”叶大如斗,虎必绘之。”正龙辩曰:”此叶之与秦岭,比比皆是。”克亦嗤:”足不出户,焉知秦岭之大;一叶障目,焉知国虎之真。”傅乃引数理,成像以为旁证,叱其纸虎。然周傅二者皆难服众,遂以项上之颅为据,立生死状。

时有烈女子两月丫头,见图掩面而泣,曰:”理尚存乎?”遂立字于天涯:”倘此虎为真,小女愿与之共赴巫山,行破瓜之礼。”世人闻之,皆扼腕,叹己非虎也。

后虎绘之疑传入异邦,亦皆称奇,乃著《科学》以记之。

适川西攀市有耕民,壁挂山涧溪水图一帧,为祖上所传。一日,梦其在涧间嬉水,忽虎猝现,跃入涧间,衔其颈,乃醒。周身大汗淋淋,逐起身视之,见虎卧露草间,化为虎卧山涧图。复定睛视之,此虎其纹其姿与正龙所绘之虎大同。始知虎,画妖也。

克闻此事,癫,曰:虎与画不可同论。遂自上山寻虎,与世绝。后尝有拾柴者,于深岭见其尸,衣褴褛,血肉不可辨。传克一日遇虎,欲擒以为证,与之搏,不敌,噬。然未得证。正龙亦病,夜不安寝,头几欲裂,常梦遇寅天师,负千金玄铁虎头铡,胯吊睛白额烂草黄,欲取其颅。后恍恍终日,卒于申年午月。

太史公曰:吾尝闻秦赵高者指鹿为马,左右或默。疑是之,今以周关二人观,犹信。呜呼!诳者之猛,犹胜于虎。

看完了,只觉得,强!
另外摘几段关于华南虎的方老夫子的话:

教授如此说:“从业务的角度看,那个(图像)是老虎,至于现在科技发达,照片能作假什么的,我也不懂。”是的,照片上的是老虎,这个三岁小孩也知道,用不着专家来鉴定。但是照片上的许多疑点,却是需要专家来回答的,例如,皮毛那么鲜艳的老虎在野外是否会过于暴露,难以捉到猎物?以机警著称的老虎在近距离与人相对时是否可能20多分钟都一动不动,而不发起进攻或逃逸?王教授对此的回答就没有专业性可言,什么当地的空气非常洁净、当时老虎正在打盹,想像力未免太过丰富。王教授还声称照片记录了老虎眼睛的变化和“红眼”,在照片未公开时这么说是很能迷惑人的,在照片都公开后就不能不再次让人佩服王教授的想像力了。

陕西镇坪县华南虎调查结果评审组”的三位主要专家为陕西师大教授王廷正、西北大学教授刘诗峰和陕西省动物研究所研究员许涛淸(媒体报道误为许清涛),检索其论文发表记录可知,他们在退休前分别是研究鼠类、金丝猴和鱼类的,只发表过这些方面的论文,从未发表过与猫科动物有关的论文,不知为何退休后忽然成了“多年来一直致力于野生华南虎的研究”的评审专家。

但是中国科学院植物研究所的种子植物分类学“首席研究员”傅德志却声称是他第一个科学地论证了照片的老虎是伪造的,其论据是照片中的植物与老虎的比例严重不匹配。“他对照片进行了仔细的研究,可以认出老虎身边的叶子,是壳斗科的麻栎或是榛子。这种植物叶子一般长三厘米(跟真老虎眼睛差不多大),不会超过六厘米。

而且,《中国植物志》关于这两种植物的叶子长度的记载可不含糊,要比傅研究员说的长得多,麻栎叶长为8-19厘米,榛子叶长为4-13厘米。会不会这两种植物长在秦岭-巴山山地时叶子变小了呢?那就查查《秦岭植物志》,记载麻栎和榛子的叶长分别是8-18厘米和5-10厘米,不知傅研究员“不会超过六厘米”的断言是怎么研究出来的?在接受央视《社会纪录》栏目的采访时,傅研究员拿出了研究所收藏的在当地采集到的标本,看得出来其叶子的长度明显比傅研究员的手掌还要长出不少,如果傅研究员没有长着一双婴儿一般的小手掌的话,它无论如何是要超过六厘米的。查《秦岭植物志》可知,该地区不仅有超过6厘米的叶子,还有小脸盆那么大的叶子,例如同属壳斗科的槲树,叶长可达30厘米,叶宽可达20厘米,用来给老虎当帽子足够了吧?

“假虎派”另一位专家是中国科学院动物研究所张劲硕“博士”,其实他是一名在读研究生,研究的课题是蝙蝠,与老虎可谓一个在天上一个在地下。但他自称“了解有关老虎的生物学和生态学知识”,在报纸上撰文介绍说:“根据研究,印度的孟加拉虎雌性活动范围(家域)平均为200 -1000平方公里;雄性活动范围是雌性的2—15倍。我们知道,一山不容二虎,老虎是独居的动物,它们的“势力范围”几乎不容侵犯。如果有8头老虎在秦岭,那么那里的森林面积得有多大才能养活它们?”(《新京报》2007年10月22日)

我不知道他是根据哪一项研究,给印度的孟加拉虎划定了如此巨大的活动范围。查《Grzimek动物生活百科全书》(2003年第二版),印度孟加拉虎雌虎的活动范围仅为10平方公里,雄虎仅为30平方公里,比张同学所说的要小得多。实际上,印度著名的孟加拉虎保护区干哈国家公园的核心区也只有940平方公里,加上缓冲区也不过1945平方公里,按张同学所说,岂不是只够几头孟加拉虎活动?但据2006年的统计,那里生活着多达131头野生孟加拉虎。

我做了一个有趣的计算,如果照这样计算的话,雄性孟加拉虎的活动范围理论上最大可以达到1000*15,共15000平方公里.我们把全中国960万平方公里的面积,哪怕沙漠沙滩什么的都算上,可以供64只以上的野生孟加拉虎活动.呵呵,做为中国人太没面子了吧.地大物博的中国,自然资源只能养活60多只老虎.有魄力啊.
野生华南虎是不是存在,我不知道,不过看了这样,我知道,这些狗屁专家是一大堆了.
方老夫子的文章在这里.
华南虎列传我最初是在这里看到的.

进入仲裁流程了,感谢鼓励我的朋友

明天要交换证据了,今晚赶着整理证据.
许多东西临时抢着赶着弄出来,手忙脚乱.还好,身边的朋友大力支持,黑夜路人,老覃,刘博士都给了很大帮忙,zhuaizhuai同学也来鼓励,非常感谢各位.
一定坚持到最后.
交换证据之后,估计我以后就可能在博客上把这件事说得更明白一点,如果对方仍然这么牛的话.

继续用Poderosa 来连SSH(字体切换与宏设计)

poderosa是一个日本人开发的连接ssh的客户端,功能上类似与SecureCRT,比Putty要强大,能够直接连接本地的cygwin.前文已经讲过.
poderosa使用C#.net写就,需要.Net 2.0框架.这导致不方便的是,如果你的电脑上没有安装.net 2的框架,装了poderosa也无法启动,但是也有个好处是,字体渲染效果好多了.我就是欣赏它这一点.但是,这个字体效果仍然比不上Fedora linux下的终端字体效果.
这周poderosab出了点小状况:有些汉字显示不出来,我也是突然之间才想起来是客户端软件的问题,开始以为是我的.bash_profile没设置好呢.
后来猜测可能是字体损坏了,于是想用微软雅黑字体去替换.找到了车东的文章:微软雅黑字体包替换XP的宋体(附下载) (车东[Blog^2])很快将整个操作系统的字体切换了过来.
重启之后,字体漂亮多了,不用设置,poderosa下默认的字体就很漂亮了(微软雅黑嘛,不是盖的),但是我还想解决另一个问题:自动输密码.因为在QA 的MM那里,用SecureCRT时,他的keymap功能确实非常爽.只要按下事先设定好的Ctrl+shift+P,就相当于输入了密码.在yahoo的服务器上什么都要输密码时,这个非常重要.
后来我这样解决了:
1.进入C:/Program Files/Poderosa/macrosample这个目录(你的poderosa的安装目录),新建pw.js,内容如下:

import Poderosa.Macro;
import System.IO;
var env = new Environment();
pw();

function pw() {
var con = env.Connections.ActiveConnection;
if(con==null) {
env.Util.MessageBox(“This macro requires an established connection to shell.”);
return;
}
con.TransmitLn(“123456789”);
}

2.
点”tool”=>”marco”=>”Configure Environment”,进入宏管理页.
菜单
3.点右边的New:
20071120223657890.jpg
4.加载你刚才定义的pw.js,并设置快捷键.我设的的Ctrl+shift+P.
20071120223712015.jpg
5.现在回到终端shell,你可以按下Ctrl+shift+P看看,是不是把密码敲进来了?嘻嘻.我设的的123456789,不要忘了改成你自己的密码!
黑夜路人同学一直鼓动我加入他的SecureCRT阵营.不过我终于在开源,免费软件中找到了跟secureCRT相当的软件.嘿嘿!

PS:今天发现一个很好用的文本编辑器,叫Notepad2,看清了后面有个2哟,虽然名称很二,功能却不二!只有一个文件,很小巧,原版好像就几百K,却支持十几种编程语言的语言高亮,并且,他默认就有什么行号显示什么的功能,在功能取舍上,比Emeditor更实用,且是内置的,不像其他软件需要用宏来实现.最重要的,对中文支持非常好!

雅虎NCP与个人主页有什么不同(非官方答案)

事先免责一下:这个只是我的个人意见,不代表公司的官方解释.
官方对NCP的定义是:

雅虎NCP(Next Commerce Platform)即雅虎个人频道,是下一代的互联网商务平台,您可以非常轻松地在这里建立您自己的站点,发布您的观点,展现您的兴趣,聚合您的关注,并与网友分享任何大家感兴趣的主题,进行各种交流和协作活动。
如果您是商业用户,您可以很方便地建立基于雅虎NCP平台的专卖店,在与网友分享和交流的基础上,进行商品或服务的销售;同时可以进行后续的跟踪服务,进一步了解和理解客户的需求,真正把自己的生意做到互联网上来!

仔细琢磨,可以看到:
1.用户群上,NCP更倾向于带商业目标的用户.个人用户喜欢的一些小功能 ,比如加个友情链接啊,挂个留言本啊,这些功能都没有.
2.商业功能的后续部分.这个我估计是,以后NCP后端可能就直接与支付宝集成电子收款功能,或是类似应用什么的.现在直接进行集成的有阿里妈妈的广告出售功能.
3.以团体为对象,而非个人.个人主页,个人博客,他的管理后台基本只有一个帐号是可以进去进行控制的.NCP的单 个站点虽然类似于你在新浪,百度开设的一个博客,但是后台权限分级是比较复杂的,有站长(创建者)/管理员/撰稿人几个级别.理论上一个站点的维护有员可以有无数个.
4.内容依托.帮助文档原文有”聚合您的关注”,对,聚合.博客服务提供商(BSP)不会帮你搜集内容.在Yahoo NCP,你可以设定为让雅虎的爬虫帮你捕捉所有关于一个话题的新闻,做成一个主题聚合站.
5.插件!同样,插件也显示了商业倾向.

附:这一个是我猜的:教授(曾鸣)一定为这个产品收费与否想了很久.我猜他的答案是:绝不收费,但是也不允许胡乱注册.你上百度空间注一个叫”我姓李叫谚宏”,估计不会封你的博客,但是NCP是需要编辑手工审核通过的.

NCP的帮助文档是在这里.

Feedsky 刷票事件后续

在来源里又看到有拿Feedsky说事儿的,而且,老是拿我做例子,好像是我做了多大的坏事,又付出了多大的代价.见这里,这里,实在忍不住站出来说两句.
1.并不是每个订阅数突减的(比如从10000减少到5000) 种子都是作弊的.我也是后来在看那个排行的时候发现的.换句话说,某些人的种子的订阅数被人通过作弊的方式将订阅数降低了,而不是刷高了.如果您根据这个认定谁作弊了,那你弄错了.当然,我确实刷了,并有马上贴出了方法,并通过黑夜路人(他老婆在feedsky上班)向feedsky说了,不过我没有跟feedsky直接联系.后来我发现有其他人也用这个方法在刷时,我删掉了代码并发了一个小小的致歉.
2.我即使刷了,并且别有用心地坚持到了最后,feedsky似乎也没办法让我付出什么代价,也就是能从精神上鄙视我一下.不过我也没那么厚的脸皮让人鄙视,所以我也就玩玩而已.
3.我只是好奇,理论上feedsky无法根除作弊玩象而已.feedsky的统计依据依然是从zhuaxia,google reader,xianguo等各个在线订阅和离线阅读器报过来的数据.简单的作弊方法是,直接伪装自己是zhuaxia,报给feedsky一个订阅数.这个就如我贴出来的代码一般,几行ruby或python代码就可以搞定了.如果想更隐蔽一点,你就先干掉google reader和zhuaxia的数字,实在这个也搞不定,你就装个如”周伯通”之类的离线rss订阅软件,像做外挂一样抓包,改数据吧.俗话说不怕贼偷,只怕贼惦记,没有搞不定的.只不过一来能搞定这个订阅数的人绝大部分人品都不会差到花很大心思去做,二来能搞定这个的人不会太缺钱,像feedsky1000块钱的赞助不值得太多时间去搞定.

四个小时搞了一个解决几十号人吃饭问题的小工具

后记:
这个标题 我发现很误导人…..我很有标题党的天赋呢.

我们小team有30多位工程师.再加上QA跟这个project的MM们,产品经理们,我们这个项目的开发团队晚上加班时要订饭的有40人了.
每次晚上要订饭时,需要有一个人拿着菜单挨个问,然后记下每个人吃什么,最后汇总,打电话给快餐店送过来.因为人多,经常还遇到找不着人,于是一次订饭要花去一个人至少半个小时的时间,再加上外卖送饭过来还要时间,送到时大家都饿得头晕眼花,还经常有人的饭被漏订.
于是我周末自己花了点时间,把菜谱录入mysql,做了个订菜系统,到晚上下班时,站起来大喊一声,订饭啦… 然后大家登录系统直接线上订饭,几分钟后我再刷一下系统,统计一下订饭的人数,就可以打印出来了,打电话报给外卖.
如果可能的话,以后直接给快餐店把打印的东西传真过去,这样还省着打电话.
真是个不错的东东.

用cygwin在Win下继续你的*nix嗜好

我最喜欢的文本编辑器,是Vim.
可以说,我为他的便利性着迷.
但是在win下我没办法发挥到极致.win下我用过了一大堆文本编辑器,最好用的,还是emeditor.这是一个收费软件,但是我上次下载的时候,正好出beta版,免费,所以用着很爽.(beta版是英文的,但是习惯了也就好了)
但是,我用鼠标还是不够快.不够爽,于是,我要VIM!
于是我装了一个Gvim.是像vim了,但是他不是在终端下的.很多操作感觉不出来.
怎么办了?….噢,我们有Cygwin.(链接:http://www.cygwin.cn)
cygwin下载下来,然后可以选择安装一些linux下的软件.我选了vim,ruby,python,perl等等.
接下来,可以用了!
但是,我的天,cygwin的界面是在dos命令行下的,这太令人不爽了.
别着急.我们装上一种可以直接连cygwin的终端软件.我用poderosa,可以直接连接cygwin.另外有一个putty的修改版也可以直接连cygwin.
如果你实在找不到,可以再次启动cygwin的安装程序,装上openssh,然后启动sshd,再用putty去连本地的ssh服务.
进入cygwin以后,中文输出还有问题.没关系,我也搜到了解决方案:

#要编辑的文件:~/.bashrc
alias ls=’ls –show-control-chars –color’
alias dir=’dir -N –color’
export LANG=”zh_CN.UTF-8″
export OUTPUT_CHARSET=”UTF-8″


#文件:~/.inputrc
set meta-flag on
set convert-meta off
set output-meta on
set input-meta on
set kanji-code sjjs

现在你可以输中文了.当然,你也可以把UTF-8设置为GBK,这样能显示中文文件夹.
好了,现在你可以很爽地在win下使用vim了.这可是跟linux一样的感觉.很实用的,我用了有一阵了,不像gvim或别的那样有一种玩玩的感觉.

美国雅虎与中国雅虎

先来一组美国雅虎总部的照片
200711021500416535811.jpg
200711021500416535822.jpg200711021500416535833.jpg

200711021500416535866.jpg

200711021500416535877.jpg

200711021500416535844.jpg

200711021500416535855.jpg

2007110215004165358551.jpg

200711021500416535888.jpg

呵呵,QA的一个MM进雅虎中国的理想是,想见一下马云.有一次马云来公司 ,她不知道,错过了,失望的不行.hery在面试中也发现不少应聘者说是怀着对马云的崇拜来的.而我,却是怀着对Yahoo的狂热的技术崇拜而来的.

再来点关于雅虎中国的一些看法:
雅虎360要关了.
2005年上线,上线之时功能还非常牛逼,当时web2.0的所有流行应用,博客、圈子、RSS聚合等等应有尽有。360的完整架构,很容易让人觉得,360就是web2.0的一切。(加粗部分为过门兄博客内容.)

然而只过了两年,就悄然宣布out了.
其他内容也时有关闭或迁移等.例如音乐盒,也已宣告并入空间.雅虎友缘人,也是一个已迁入空间的业务.
而中国雅虎首页本身,也曾有一段迷茫期,换来换去,现在总算稳定下来,大致看上去,cn.yahoo.com继续原来的门户的路子,而yahoo.cn则走搜索的路.所以,Y!cn曾打过广告说,雅虎就是搜索,搜索就是雅虎!结果不是.现在情况是Yahoo.cn是搜索,cn.yahoo.com是继续门户之路.
除开关闭之外,中国雅虎页面还有另外一个让人困惑的问题:域名问题.现在大家能看到的Y!CN的域名有这么几类:
A:
*.cn.yahoo.com
cn.*.yahoo.com
B:
*.yahoo.com.cn
C:
*.yahoo.cn

C类其实在用的我发现就只www.yahoo.cn一个,但是用户喜欢自己猜(mp3.yahoo.cn应该是mp3频道吧!其实是个错误页).B类域名在商务推广中常用到, 是为了统一形象.实际中用的最多的,是*.cn.yahoo.com.因为现在中国雅虎的技术实现从底层上仍依赖于雅虎全球(业内都知道Yahoo自行改造了apache,叫yapache,自行改造了php,叫yphp,操作系统也是改造过的FreeBSD,其他包括类似Squid等都有自己实现的软件),因此要能读Cookie的话,只能都使用*.yahoo.com的后缀.
这就造成了Y!CN的域名构成比较复杂,比如说,我想搜MP3的时候,我直接输mp3.baidu.com就可以了,但是输入mp3.yahoo.cn就不行.(其实输baidu.com也不行,哈哈,但是Y!cn主推搜索的是用的.cn的域名).友缘人使用的域名是cn.personals.yahoo.com,空间使用的域名是i.cn.yahoo.com,另外再加上您经常能见到的*.yahoo.com.cn…晕了吧!
也不用担心,你不用记住这些域名.当你需要的时候,你总能找到他.