cgi的写法 (C/C++学习)
发布于 2007-12-05 19:57 2 阅读:60,440 评论:2 标签: C C++ Linux

      CGI虽然差不多已经被淘汰,但在大公司有时还是需要用到的。编写、编译和升级的确是件很麻烦的事情。

      个人感觉写CGI主要是两个方面,一个是头信息;一个是让服务器知道它是个CGI。头信息用“Content-type”指定;而要让服务器知道,则把文件放进服务器专门为CGI而准备的目录,否则会被服务器认为的个二进制文件。当然这个目录是可以自己指定的,对apache而言就是httpd.conf文件中“cgi-bin”的位置。

      下面是一个简单的C++例子:

以下是代码片段:

#include <iostream>

using namespace std;

main()
{
 cout << "Content-type: text/html; charset=gb2312\n\n";
 cout << "www.yayu.org" << flush;
 exit(0);
}

展开全文  
收起全文  
memcached英文文档学习 (C/C++学习)
发布于 2007-12-04 17:58 1 阅读:66,119 评论:1 标签: Linux memcached 学习 英文

      今天看了memcached wiki的FAQ,觉得有几句话对了解memcached很有作用,与大家共享一下。

      服务器的内存如何分配问题:

以下是引用片段:
Because a 32-bit process can only address 4GB of virtual memory (usually significantly less, depending on your operating system), if you have a 32-bit server with 4-64GB of memory using PAE you can just run multiple processes on the machine, each using 2 or 3GB of memory.

     memcached之get过程,看点在于client/server的hash key处理:

以下是引用片段:
When doing a memcached lookup, first the client hashes the key against the whole list of servers. Once it has chosen a server, the client then sends its request, and the server does an internal hash key lookup for the actual item data.

      client/server的hash key算法差异:

以下是引用片段:
Different client implementations store data into memcached differently (perl Storable, php serialize, java hibernate, JSON, etc). Some clients also implement the hashing algorithm differently. The server is always the same however.

      当一个memcached down后的情况:

以下是引用片段:
 Remove dead nodes from your list. Be very careful! With default clients adding or removing servers will invalidate all of your cache! Since the list of servers to hash against has changed, most of your keys will likely hash to different servers. It's like restarting all of your nodes at the same time.

      key/value大小的说明:

以下是引用片段:
 Keys are restricted to 250 characters. Stored data cannot exceed 1 megabyte in size, since that is the largest typical slab size.

      数据存储的处理方式:

以下是引用片段:
 At first memcached did just use malloc/free for everything. However this does not play very well with OS memory managers. You get fragmentation, and your OS ends up spending more time trying to find contiguous blocks of memory to feed malloc() than it does running the memcached process.

      如何处理数据过期的问题:

以下是引用片段:
 When do expired cached items get deleted from the cache?

 memcached uses a lazy expiration, which means it uses no extra cpu
 expiring items. When an item is requested (a get request) it checks
 the expiration time to see if the item is still valid before returning
 it to the client.

 Similarly when adding a new item to the cache, if the cache is full,
 it will look at for expired items to replace before replacing the
 least used items in the cache.

      尤其是对数据过期的处理让偶意外,虽然省CPU,但很浪费空间。

       下面是几个常用的链接:

以下是引用片段:
 memcached'home
http://danga.com/memcached/

memcached'wiki
http://www.socialtext.net/memcached/index.cgi

memcached'faq
http://www.socialtext.net/memcached/index.cgi?faq

memcached'Protocol
http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt

memcached'consistent hashing
http://www.last.fm/user/RJ/journal/2007/04/10/392555/

展开全文  
收起全文  
PHP加速器eAccelerator文档翻译 (PHP心得)
发布于 2007-11-06 11:02 1 阅读:62,315 评论:1 标签: eAccelerator Linux PHP 翻译 文档

  前端时间用到这个,看了一下英文文档觉得还是看最原始的资料看到的东西最全。比如说eAccelerator自带了共享内存管理的程序,这个在我找到的中文资料里面就没有看到过。

  本文翻译的是:Release-0.9.5.2 ,官网是:http://www.eaccelerator.net/。原文附后,英文水平不高,如果您发现有不对的地方,还请告诉我!

--------------------------

PHP的eAccelerator
=====================

什么是eAccelerator?
----------------------
eAccelerator是一个的免费、开源的PHP模块,它能够为提供PHP加速、优化、加码、和动态内容缓存功能。它通过存储PH脚本编译后的状态而加快执行PHP脚本的速度,而不需要频繁的编译这个PHP脚本。而且它能优化PHP脚本,以提高执行PHP的速度。eAccelerator特色是减少了服务器负载、使PHP脚本加速1-10倍。

eAccelerator是TurckMMCache的一个分支
(请详见Dmitry Stogov维护的:http://sourceforge.net/project/turckmm-cache/

eAccelerator把编译好的PHP程序存储在共享内存里面,并直接在这里面执行程序。但在共享内存里面寻找编译好的PHP程序时,会在很短的时间内产生一些锁定,所以一个程序可以被多个进程同时执行。不适合放入共享内存的文件将被缓存到硬盘上。

eAccelerator包含了一个PHP加码器和解释器(loader????)。你可以使用encoder.php对你的程序加码,这样在分发程序的时候就可以不给出源码了。加码后的文件可以在任何机子上运行,只要它装有eAccelerator的PHP。加码后的代码不能被恢复,因为它是以编译完了的形式而存储的,而且存储时不包含源码。当然,程序中一些内部的东西可以使用反编译工具(different  reverse  engineering  tools)还原(例如:disassemblers, debuggers等等),但这并不是重要的。

eAccelerator可以和Zend Optimizer的加码器共存。但是在php.ini中Zend Optimizer必须在eAccelerator配置参数的后面。如果你不使用Zend Optimizer的加码器,我们不推荐同时安装Zend Optimizer

eAccelerator不能在CGI模式下运行,但是它能在一些web服务器下的Fast-CGI模式运行,比如:lighttpd。

下面是一些能提供相同作用的产品:
 - Zend Performance Suite (http://www.zend.com/)
 - Alternative PHP Cache (http://pecl.php.net/package/APC)

下载
--------
最新的eAccelerator版本能在下面的页面下载:
http://sourceforge.net/projects/eaccelerator/
版本控制的快照在:
http://snapshots.eaccelerator.net

要求:
--------
apache >= 1.3, mod_php >= 4.1, linux下工具:autoconf, automake, libtool, m4

兼容性:
--------
eAccelerator能与PHP4、PHP5很好的工作,对PHP5.1版本还没很好的兼容。它能使用在Linux, FreeBSD, MacOS X,
Solaris 和 Windows 下的 apache 1.3 and 2, lighttpd 和 IIS.

快速安装:
-------------

你可以在下面的网站上找到更多的安装信息:
http://eaccelerator.sourceforge.net/

注意:在Microsoft Windows下安装,请参考README.win32文件

第一步:编译eaccelerator

  export PHP_PREFIX="/usr"
 
  $PHP_PREFIX/bin/phpize
 
  ./configure \
  --enable-eaccelerator=shared \
  --with-php-config=$PHP_PREFIX/bin/php-config
 
  make

  你必须使用“export”命令指明PHP的安装路径的前缀,它可能是"/usr" "/usr/local",或其它

第二布:安装 eAccelerator

  make install

第三步:配置 eAccelerator

  eAccelerator能做为Zend或PHP的扩展。

对于大于0.9.1版本的eaccelerator,如果你有/etc/php.d目录,你应该复制eaccelerator.ini到里面去,当然你可以根据你的需要修改它。

如果没有,你需要修改你的php.ini文件(通常是/etc/php.ini)

作为Zend的扩展:

  zend_extension="/usr/lib/php4/eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"

  如果你使用thread safe模式安装的PHP,你应该使用“zend_extension_ts”代替“zend_extension”

作为PHP的扩展:

  extension="eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"
 
第四步:建立缓存目录

  mkdir /tmp/eaccelerator
  chmod 0777 /tmp/eaccelerator

 

配置选项
--------

eaccelerator.shm_size
 eAccelerator使用共享内存的总数。单位是MB.
 设置为“0”,则为操作系统默认值。默认为“0”

eaccelerator.cache_dir
 硬盘缓存的目录。eAccelerator存储预编译代码,session数据,内容数据(content)和使用的入口(entres??)。这些数据也能够存储在共享内存里(为了得到更快的通道)。默认为“/tmp/eaccelerator”。

 yayu:建立这个空目录后,在有人访问php页面后会自动建立二级二维目录(0,1.....e,f)(16进制,晕)

eaccelerator.enable
 决定eAccelerator是否有效。“1”为有效,“0”为无效。默认为“1”

eaccelerator.optimizer
 是否使用内置的优化工具加速代码的执行。“1”为是,“0”为否。默认为“1”

eaccelerator.debug
 是否记录eAccelerator debug log。“1”为是,“0”为否。默认为“0”

eaccelerator.check_mtime
 是否检查php程序更新时间。“1”为是,“0”为否。如果你想改变php程序后重编译程序到共享内存,那就应该设置为“1”。默认为“1”

eaccelerator.filter
 决定哪些php文件被缓存。你可能需要指定哪些文件(如:"*.php *.phtml")需要被缓存。如果在文件前加上“!”,那么符合条件的文件将被忽略。默认为"",这以为着所有php文件都会被缓存。

eaccelerator.shm_max
 设置诸如“eaccelerator_put()”之类的函数能往共享内存里面加载数据的大小。单位为MB。“0”为不限制,默认为“0”。

eaccelerator.shm_ttl
 当共享内存空间已满,将删除在“shm_ttl”秒前没有使用的程序。默认为0,为不删除任何文件。

eaccelerator.shm_prune_period
 共享内存已满。前一次操作是在shm_prune_period秒之前,那么这一次将删除所有的旧程序。默认为“0”,意为不删除任何程序。

eaccelerator.shm_only
 是否把编译后程序缓存到硬盘上。这个选项对session数据和内容(content)缓存无效。默认为“0”,意为同时使用共享内存和硬盘做缓存。

eaccelerator.compress
 是否对缓存内容做压缩。默认为“1”,为不压缩。

eaccelerator.compress_level
 压缩的级别,默认和最高都为“9”。

eaccelerator.name_space
 一个对所有键值假拟的字符串。通过在.htaccess文件中设置的这个值,允许两个应用使用相同的键值运行在同一个主机上。

 yayu:命名空间?

eaccelerator.keys
eaccelerator.sessions
eaccelerator.content
 决定那些键,session数据和内容将被缓存,这些可能的值是:

 "shm_and_disk" - 缓存数据在共享内存和硬盘上(默认值)
 "shm"          - 缓存数据在共享内存,如果共享内存已满或者提交的数据大小超过eaccelerator.shm_max,则存储在硬盘上。
 "shm_only"     - 只缓存数据在共享内存
 "disk_only"    - 只缓存数据在硬盘
 "none"         - 不缓存数据

eaccelerator.allowed_admin_path
 允许得到管理信息和管理操作的脚本路径。


控制面板及反汇编
---------------

如果你要使用控制面板,你需要在编译eAccelerator时加上 --with-eaccelerator-info选项,这个是默认值。

复制control.php文件到你的跟目录下,并且设置这个路径到php.ini 或者 eaccelerator.ini的eaccelerator.allowed_admin_path选项。如果你不这样做,你将看不到更多的相关信息,也不能控制eAccelerator。

你可以在control.php文件中设置用户名和密码以进入控制面板

当你使用--with-eaccelerator-disassembler编译时,你需要把dasm.php和PHP_Highlight.php也放到control.php目录里面。反汇编需要在编译PHP时加上对tokenizer的支持(--enable-tokenizer)
你可以在dasm.php文件的上面得到执行反汇编时的用户名和密码


eAccelerator 函数
-----------------

函数文档请看: http://bart.eaccelerator.net/doc/phpdoc/

联系我们
--------
当你有疑问、需要补丁,提交bug,请发email给 Bart Vanbrabant

--------------------------

以下是英文全文:

eAccelerator for PHP
=====================

What is eAccelerator?
----------------------
eAccelerator is a free open source PHP  accelerator,  optimizer,  encoder  and
dynamic content cache for PHP. It increases  performance  of  PHP  scripts  by
caching them in compiled state, so that the overhead of  compiling  is  almost
completely eliminated. It also optimises  the  script  to speed  up  execution
of PHP scripts. eAccelerator typically reduces server load and  increases  the
speed of your PHP code by 1-10 times.

eAccelerator is a fork of TurckMMCache
( http://sourceforge.net/project/turckmm-cache/  by Dmitry Stogov )

eAccelerator stores compiled PHP scripts in shared memory  and  executes  code
directly from it. It creates  locks  only  for  short  time,  while  searching
compiled PHP script in the cache, so one script can be executed simultaneously
by several engines. Files that can't fit in shared memory are cached  on  disk
only.

eAccelerator contains a PHP encoder and loader. You  can  encode  PHP  scripts
using encoder.php in order to distribute them without sources.  Encoded  files
can be run on any site which  runs  PHP  with  eAccelerator.  The  sources  of
encoded scripts can't be restored because they are stored in a  compiled  form
and the encoded version doesn't contain the source. Of course, some  internals
of the scripts can  be  restored  with  different  reverse  engineering  tools
(disassemblers, debuggers, etc), but it is not trivial.

eAccelerator is compatible with Zend Optimizer's loader. Zend  Optimizer  must
be installed after eAccelerator in php.ini. If you don't use  scripts  encoded
with  Zend  Encoder  we  do  not  recommend  to  install  Zend  Optimizer with
eAccelerator.

eAccelerator does not work in CGI mode but it does work in Fast-CGI mode with
webservers like lighttpd.


Here are some other products that provide the same functionality:

 - Zend Performance Suite (http://www.zend.com/)
 - Alternative PHP Cache (http://pecl.php.net/package/APC)

Download
--------
Latest eAccelerator versions can be downloaded at the sourceforge page:
http://sourceforge.net/projects/eaccelerator/
Development snapshots from cvs can be downloaded at
http://snapshots.eaccelerator.net


Requirements
------------
apache >= 1.3, mod_php >= 4.1, autoconf, automake, libtool, m4


Compatibility
-------------
eAccelerator has been reported working with php4 and php5, php 5.1 support
hasn't been integrated yet. It is being used on Linux, FreeBSD, MacOS X,
Solaris and Windows with apache 1.3 and 2, lighttpd and IIS.


Quick install
-------------

You can find more information about installation on eAccelerator website.
http://eaccelerator.sourceforge.net/

Note(1): for Microsoft Windows installation, please refer to README.win32 file.

Step 1. Compiling eAccelerator

  export PHP_PREFIX="/usr"
 
  $PHP_PREFIX/bin/phpize
 
  ./configure \
  --enable-eaccelerator=shared \
  --with-php-config=$PHP_PREFIX/bin/php-config
 
  make

  You must specify the real prefix where PHP is installed in the "export"
  command. It may be "/usr" "/usr/local", or something else.

Step 2. Installing eAccelerator

  make install

Step 3. Configuring eAccelerator

eAccelerator can be installed both as Zend or PHP extension.

For eaccelerator > 0.9.1, if you have /etc/php.d directory, you should copy eaccelerator.ini inside and modify default value if you need.

If not, you need to edit your php.ini file (usually /etc/php.ini).

To install as Zend extension:

  zend_extension="/usr/lib/php4/eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"

  If you use thread safe build of PHP you must use "zend_extension_ts" instead
  of "zend_extension".

To install as PHP extension:

  extension="eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9" 

Step 4. Creating cache directory

  mkdir /tmp/eaccelerator
  chmod 0777 /tmp/eaccelerator


Configuration Options
---------------------

eaccelerator.shm_size
    The amount of shared memory (in megabytes) that eAccelerator will use.
    "0" means OS default. Default value is "0".

eaccelerator.cache_dir
    The directory that is used for disk cache. eAccelerator stores precompiled
    code, session data, content and user entries  here. The same data  can  be
    stored in shared memory also (for more quick access). Default value is
    "/tmp/eaccelerator".

eaccelerator.enable
    Enables or disables eAccelerator. Should be "1" for enabling  or  "0"  for
    disabling. Default value is "1".

eaccelerator.optimizer
    Enables or disables internal peephole optimizer which may  speed  up  code
    execution. Should be "1" for enabling or "0" for disabling. Default  value
    is "1".

eaccelerator.debug
    Enables or disables debug logging. Should be "1" for enabling or  "0"  for
    disabling. Default value is "0".

eaccelerator.check_mtime
    Enables or disables PHP file modification checking .  Should  be  "1"  for
    enabling or "0" for disabling. You should set it to "1"  if  you  want  to
    recompile PHP files after modification. Default value is "1".

eaccelerator.filter
    Determine which PHP files must be cached. You may specify  the  number  of
    patterns (for example "*.php *.phtml") which specifies to cache or not  to
    cache. If pattern starts with the character "!", it means to ignore  files
    which are matched by the following pattern. Default value is "" that means
    all PHP scripts will be cached.

eaccelerator.shm_max
    Disables putting large values into shared memory by " eaccelerator_put() "
    function. It indicates the largest allowed size in bytes (10240, 10K, 1M).
    The "0" disables the limit. Default value is "0".

eaccelerator.shm_ttl
    When eaccelerator fails to get shared memory for new script it removes all
    scripts which were not accessed  at  last "shm_ttl"  seconds  from  shared
    memory. Default value is "0" that means -  don't  remove  any  files  from
    shared memory.

eaccelerator.shm_prune_period
    When eaccelerator fails to get shared memory for new script  it  tryes  to
    remove  old  script   if   the   previous   try   was   made   more   then
    "shm_prune_period" seconds ago. Default value is "0" that  means  -  don't
    try to remove any files from shared memory.

eaccelerator.shm_only
    Enables or disables caching of compiled scripts on disk. It has  no  effect
    on session data and content caching. Default value is "0" that means -  use
    disk and shared memory for caching.

eaccelerator.compress
    Enables or disables cached content compression. Default value is  "1"  that
    means enable compression.

eaccelerator.compress_level
    Compression level used for content caching.  Default value is "9" which  is
    the maximum value

eaccelerator.name_space
    A string that's prepended to all keys. This allows two applications that
    use the same key names to run on the same host by setting this in .htaccess
    or in the main configuration file for the whole webserver.
   
eaccelerator.keys
eaccelerator.sessions
eaccelerator.content
    Determine where keys, session data and content will be cached. The possible
    values are:
    "shm_and_disk" - cache data in shared memory and on disk (default value)
    "shm"          - cache data in shared memory or on disk if shared memory
                     is full or data size greater then "eaccelerator.shm_max"
    "shm_only"     - cache data in shared memory
    "disk_only"    - cache data on disk
    "none"         - don't cache data

eaccelerator.allowed_admin_path
    The script paths that are allowed to get admin information and do admin
    controls

Control panel and disassembler
------------------------------

If you want to use the control-panel you need to compile eAccelerator with
    --with-eaccelerator-info which is the default value.
You need to copy the control.php file to your webroot and set the path to it
in the php.ini or eaccelerator.ini in the eaccelerator.allowed_admin_path
directive. If you don't do this you wont be able to see much information and
can't control eAccelerator.
You can set the username and password needed to access the control-panel in
the control.php file.

When you compile eAccelerator with --with-eaccelerator-disassembler you need
to place the dasm.php and PHP_Highlight.php file also in the same directory
as the control.php file. The disassembler requires PHP to be compiled with
tokenizer support (--enable-tokenizer).
You can set the username and password needed to access the disassembler at the
top of dasm.php.

eAccelerator API
----------------

API documentation can be found on this website: http://bart.eaccelerator.net/doc/phpdoc/

Contact us
----------
You can contact us with questions, patches or bugs, by sending an email to
Bart Vanbrabant

展开全文  
收起全文  
segmentation fault原因 (C/C++学习)
发布于 2007-10-31 19:18 阅读:37,789 评论:0 标签: fault segmentation 方法

  PHP总是和linux/unix、C/C++分不开的,郁闷。继续C/C++的学习吧。

  今天起,要向学习PHP和MySQL一样,把遇见的问题都记录下来,以提醒自己。

  “segmentation fault”是今天遇见的错误。查找资料,说是一些细节错误:
    1。 针没有赋值;
    2。 量赋值类型有错误。
    3。 最主要的错误就是声明了指针,但是没有初始化 ,结果再后来的时候进行间接引用 ,就出现问题了。

  同一个错误的提示总是有多个造成错误的情况的可能。printf输出时,类型有错误便会有这个问题。

       比如:

以下是代码片段:
char *val;
val = (char *)malloc(valsize + 1);
memset(val, 69, valsize);
val[valsize] = '\0';
printf("After memset : %s \n", *val);

  这时便会提示“segmentation fault”了。原因呢,就是多写了一“*”。改成下面的即可。

以下是代码片段:
printf("After memset : %s \n", val);

      参考的资料请看: 程序运行总是提示 segmentation fault (core dumped)是什么错啊?

  一篇更好的文章: 可恶的"Segmentation faults"之初级总结篇

展开全文  
收起全文  
冲天一飞为揽月---偶的母校中北大学 (随便说说)
发布于 2007-10-30 19:25 1 阅读:19,950 评论:1 标签: 测控 母校 中北大学

  自母校从华北工学院更名为中北大学,同学们对这个名字的鄙视延续至今。

  撇开这个,不谈也罢。

  更名以后,除了军工领域,知道的人是越来越少了,就业的时候就可以看出来。但总不能这么下去,饭,总是要吃的,面子,总是要要的。只能靠一些传统的风格了,每次航天领域一有点事,就是中北大学露脸的时候,这不嫦娥上天了么!

  不过这些都是场面上东西。学校的名气,是要靠我们大家出来挣的!

  新闻来源:“山西制造”托起“嫦娥一号”飞天梦(图)

以下是引用片段:

  中北大学成功研制星箭分离冲击传感器

  本报10月24日讯(记者 李爱珍)今晚的“嫦娥”冲天一飞,开始了与月亮的太空“约会”。中北大学研制的星箭分离冲击传感器,准确把握嫦娥一号卫星与长征三号甲运载火箭分离瞬间的 “脉搏”,精度准、可靠性高,为我国航天事业的发展做出了重要贡献。

  在嫦娥一号卫星飞向38万公里外月球的漫长旅途中,需要完成一系列高度复杂又充满风险的动作。在发射后第1473秒完成的星箭分离,就是其中关系本次探月工程成败的十大关节点之一,这一瞬间长征三号甲运载火箭与嫦娥一号卫星成功分离,卫星准确进入近地轨道,“嫦娥”开始了独立奔月的旅程。

  由中北大学微米纳米技术研究中心研制的 “星箭分离冲击传感器”,在嫦娥一号卫星发射过程中,完整准确地测试了爆炸分离瞬间火箭对嫦娥一号卫星所施加的分离推动力,该力过大会导致卫星损坏,过小可能导致分离失败,为精确判断星箭分离质量发挥了重要作用。“星箭分离冲击传感器”是中北大学在微米纳米(MEMS)技术领域研究的最新成果,已被我国长征系列火箭成功应用20多次。在本次火箭发射过程中,中北大学还为火箭遥测系统提供了关键的测试设备――遥测系统数字量变换器测试台,确保了火箭遥测系统的可靠工作。

展开全文  
收起全文  
张朝阳风采依旧 (随便说说)
发布于 2007-10-27 21:52 阅读:10,288 评论:0 标签: sina sohu 岳麓书院 张朝阳

  每个人成长中总会收到外界、外人的影响,多少总会有一点,或多或少的。也许你当时没体会到,但是多年后当你看到现在的自己再想起以前的某些事情,总是依稀有点感觉,一种神秘的生命依依相生的感觉,神秘而奇怪且自然。

  千年虫、入世、千禧年,是当年热门的话题,那是公元2000年。公元2000年的1月1日,我和我爸坐在床上看着电视,当时湖南卫视和岳麓书院举办了“千年学府论坛”,张朝阳作为特邀演讲者,做了“跨越三百年的自卑”的新千年演讲。看着张朝阳谦和、表情拘谨的演讲,就觉得互联网这东西挺有意思的。

  当时就觉得这人挺风流倜傥的。现在想来自己的职业依稀也和当时的听讲多少有些关系,sohu随后也就成为我经常上的网站,邮箱什么的,相对其它网站,也是先去注册的。

  晚上看了鲁豫有约之张朝阳不禁很感慨现在的自己。想到前段时间搜狐和新浪的流量事件,不禁觉得相比7年前,张朝阳还是张朝阳,风采依旧。

  在后面附上当年张朝阳的演讲全文:

以下是引用片段:

女士们、先生们、同志们、朋友们,新千年好!

  岳麓书院是中国学术源远流长的圣地,我刚到这儿就感到古朴、悠远的气息扑面而来。那么在新千年的第一天,在这里我们一块儿来探讨未来的生活,这本身就是一种未来的特征。那么未来的特征是什么呢?就是传统与现代的结合,以人为本,返朴归真。感谢岳麓书院和湖南卫视《新青年》栏目,让我们在这里、在新千年的第一天共同分享未来。

  我们搞计算机的最关心的一个问题就是,人类到了2000年的时候,是不是天上的飞机还在飞,地上的火车还在跑,各种各样的计算机系统是不是还在工作。这是几个小时前要担心的问题,尽管很多人认为我们比较好地解决了这个问题,但我这个人比较胆小,从北京到湖南,也不敢在昨天,12310点钟在天上飞,所以就提前来到了湖南。今天早晨我醒来的时候,当迎接新世纪的第一线曙光的时候,我像个外星人一样静静地坐在墙角,倾听地球的声音。地球人是不是已经比较安全地进入了2000年呢?大家知道世界各地进入2000年的时间也不是同时就过了,在东方是昨天晚上的零点,现在是下午两点四十分,那么再过20分钟,美国加州,再过一个小时,地球的最西部也都平安地进入了2000年。当我早上醒来迎接第一缕阳光的时候,首先是打开CNN的报道,或看一些其他电视的报道,看有没有飞机失事的消息--我不是幸灾乐祸,我当然是希望人类平安地度过--然后上到搜狐上,好像电视上也没有传来这类消息。搜狐也像老朋友一样,网页仍能打开。上面有一则报道说印度劫机事件谈判成功,人质已经安全地返回。其次,还有关于登梅林雪山的运动员在云南、西藏摩拳擦掌准备迎接雪山的挑战的消息。好像这一个世界都已平安度过了2000年。

  这个2000年的千年虫问题,使我回想起三年前。1996年我被尼葛洛庞蒂先生叫到伦敦参加"先锋论坛"会议。当时我正在融资的非常艰苦的阶段,这个会议非常重要,如果我在会议上的发言好,可能尼葛洛庞蒂先生就会投资,如果他认为我什么都不懂的话,他就不会给我投资,就没有今天的搜狐了。我经过辗转全球的飞行,也不知道是什么原因,我在会上讲起来特别的困顿。我当然讲起了中国的互联网发展。在19969月份,中国几乎是一片"黑暗",国外的人更不知道中国发生了什么,所以我说起互联网的时候,我无论说中国什么,他们都说不错。不管你讲的是什么,只要你讲得振振有辞,他们都认为你是对的。

  大家都听得很高兴,尽管我很困顿,但讲起中国来还是很兴奋。但是在提问的时候--大家都知道他们都是计算机业的元老,包括苹果机的发明者等。当他们问到,你们国家关于2000年问题怎么解决,我说什么是2000年问题呀?我第一次听说有2000年问题。他们说到这个世纪末的时候,计算机可能会出现故障。我在想,那时候是1996年,世纪末还非常遥远,我从来就没有想过世纪末的事,这反映我是多么的不懂计算机。我居然在三年前连2000年问题都不知道,这是一直使我感到非常羞愧的事情。不过碰巧,尼葛洛庞蒂先生没有赶上我的报告,他后来就问其他人,关于我的这次报告怎么样。也许别人说我的这个报告还不错,说中国的前景非常好,他好像很懂中国似的,他没有谈到这个两千年问题,所以尼葛洛庞蒂先生欣然把一笔资金投给了我,所以才有今天的搜狐。

  时光再向前一年,那是1995年底我刚回到北京的时候--为什么要与大家一起分享搜狐的发展,因为我觉得过去几年中搜狐的发展特别能够折射出中国整个互联网的发展过程。1995年我回到北京的时候,我的记忆中是满街飞跑的黄色面的,和一个寒冷的北京,我是从加州那个温暖的地方回来的。刚开始条件非常艰苦,但我们非常兴奋,因为刚回到中国,回到中国的文化中--我只偶而去麦当劳,当时麦当劳在北京刚刚兴起,只有在那儿才有喝咖啡的地方--而我们的办公室是前不着村,后不着店,非常偏僻。我离开美国前在ISI公司,它的总部设在匹兹堡。我加入ISI只有三天的时间,刚刚加入三天,就被派遣到中国来了。为我送行的时候,ISI的总裁也一块儿在匹兹堡的山上来为我祝酒,说你去的是中国,你将为ISI在中国打下一片天地。当时真有一种"壮士一去不复返"的心情。后来就到了北京,发现这儿除了咖啡、麦当劳和满街跑的黄色面的,还有修得越来越好的三环路。

  我提着一个便携机到北京电报局去注册,当时申请一个互联网账号还是个非常神秘的东西,人们都不知道互联网是什么,上了互联网是不是可以获得很多很多的情报,你这个人是不是可靠。在1995年底,当时我拿着一个便携机。人们都不知道这是一个什么呀,这是一个什么样的盒子,还是挺神奇的,所以我说什么话别人都容易相信。一年以后,当我融资成功之后,我们决定不做基础设施,不做上网的链接,而是做内容。当我们成功地说服电报局,把一个我们用手装起来的服务器搬到电报局的时候,我觉得这是一个重要的历史时刻。电报局的局长也许认为这不算什么,不就是把你们的机器放到网上吗?!我当时心里很清楚这是一个重要的时刻,所以我带了一瓶酒去,准备握手签字以后用来喝酒庆祝。但电报局的局长也许不认为什么,所以那瓶酒始终没有打开。当时只照了一张照片,这张照片现在留在了搜狐的历史博物馆里面--我们会建立一个博物馆把搜狐过去发生的一些事情记录下来--很多过去的情景也许往往当时是非常偶然的事情,或者非常简单的事情,或者非常随意的事情,当你做成了以后,当搜狐让成千上万的人都知道的时候,过去的历史人们往往要用放大镜来看每个细节,研究它的意义。当时的历史意义是人们对网络的理解以为只是联起来的计算机,并不知道它上面能做这么多的活动,放这么多的内容,会逐渐深入我们生活中的各个方面。当我们把服务器放到北京市电报局之后,我们的感觉用当时苏联一部很有名的电影叫做《这里的黎明静悄悄》来形容是最好不过的。当时中国的互联网确实是静悄悄的,还是非常黑的。但是在过去几年中国互联网的发展中搜狐的贡献非常大。我们首先提出的概念是,你必须得开仓放粮,信息必须得免费。虽然大家认为进入信息社会,信息是很宝贵的,但我们还是提出信息要免费。人们的注意力是非常宝贵的,人们把注意力放在看你的网站上,对网站本身就是一种很大的奉献,很大的贡献,所以要免费。

  那么怎么活下去呢?网站就要靠广告来收费,而且我们在做内容的时候,我们把内容打开,准备开仓放粮给别人看的时候,我们认为只是简单地做内容,像传统媒体一样做内容是不行的。我们必须离开媒体发布的模式。如果只是把网站记者写的东西放到网站上,那么只是利用了互联网这个工具,比出版只是稍稍地朝前迈了一步。但我们认为互联网不只是出版,互联网是人们生活方式的革命。于是我们推出了分类搜索,把整个互联网上的全人类内容供大家搜索,供大家享用。大家想一想,互联网这个技术平台,即使有这样一个发达的平台,如果全人类不是有60亿人,而是只有一个人或者几个人的话,互联网还有意义吗?可能一点意思都没有了。之所以说互联网有用,就是因为它是一个公共的平台,让全人类在上面发表自己的东西,实现自己的活动,提出自己的想法等等,这样互联网才因此更加有意义。同样,在过去几年中我们走过了从信息免费到建立网上搜索、到如何创办一个公司的全过程:那就是引入风险投资。关于风险投资的故事有很多很多,当时我们感到是在黑暗中呐喊,别人不会相信我们,当我们去融资的时候,当他们问你们有厂房可以抵押吗?自己又没有厂房可以变卖,我们凭什么相信你的想法,给你投钱来买你的股份呢?如果你要是做不成的话,你是不是要按照高利贷的高利息来归还我呢等等,所以当时的风险投资是一种非常非常困难的过程,但是整个的硅谷、整个的新经济都是建立在风险投资的基础上,建立在投资者愿意购买一片未来,愿意承担一切高风险的基础上,而且这个资金不用还。如果这个公司获得很大的成功,那么这个投资者因为他当时忍受了相当大的风险,他就应得到相应的回报。当时我们确实是在黑暗中呐喊,而现在,如果在街上碰到任何人,如果他口袋里有一点钱的话,他会说我想投资互联网。

  刚才回顾了历史,讲到了千年虫,那么现在是什么情况呢?现在天已大明,人人都想投资互联网,在整个中关村附近或者在中国,有几十亿美元的资金在到处游荡,可能都想投资给中国的互联网。每天都有新网站起来,成千上万的网站!我去清华、北大或者任何一座大学,每一个青年人以前问他长大了想干什么或者说毕业以后想干什么?很多人说,我想出国留学,或者我想经商,等等;但现在你再问他们想干什么,他们会说我想创业,甚至我都等不及了,等等。那么现在是一种什么情况呢?这种现象是不是过热呢?是不是一种肥皂泡呢?是不是心情太浮躁呢?我觉得一点都不过热,因为我们过去习惯于一种持续的缓慢的增长,而历史经常是以一种革命性的增长方式产生。互联网确实给我们带来了一场深刻的革命。这场革命将会创造全新的经济,我们处在一种全新的经济的起点,这个起点可以拿一个曲线来比较。如果你打高尔夫球的话,我们不妨拿高尔夫球杆的底线来比拟。这个球杆的样子是往上一拐再往上伸。我们现在正处在高尔夫球杆拐弯的地方,这就是一个新的经济的起点。现在有幸进入这样一个领域或者跟这个领域挂点边的人,都会成为新经济的缔造者。也许有人会说我们经过了农业文明、工业文明,现在才刚刚到达信息社会,我们是不是应该只管好我们的工业文明、农业文明呢?以及我们进入知识经济是不是时间太早了?我说一点也不早。首先,我们要理解什么叫经济、什么叫财富?我们总以为地里打了多少粮食、炼了多少钢才叫财富。现在我们每一个人愿意花5千、6千块钱去买一个手机,那56千块钱可以买多少斤粮食呢?你每天的生活就满足于吃粮食吗?我们要打手机,我们不只是要打电话;我们不只是走路、骑自行车,我们还要坐面的、坐夏利、坐桑塔那,我们要坐飞机;我们坐的桌椅板凳不只是我们现在在坐着的木板凳,我们还要坐沙发,坐高质量的沙发;我们的生活需要更加丰富多彩。我们不满足一个频道,我们要看更多的电视频道;我们要看很多的电影,我们要上很多的网站,我们要选择多种多样的生活方式、多种交流方式。以前的时候,一个人只跟街坊邻居来往,我们只跟村子里的人来往,我们送一封信可能要花费一上午的时间,而现在我们十分钟可能发几十个EMAIL,而这个电子邮件可以跟世界上任何一个人交流。你跟别人在说话之间就已经跟世界上几十个人--无论这个人是在南非,还是在美国的加州,进行了交流。我们现在的时空拓展,生活的选择,等等,这都是财富。

  我们就要入世了,我们的国门经过缓慢的过程也越开越大。我们刚刚经历了三百年落后的历史,我们对自己的自责往往多于对自我的夸奖。我们总是说,唉!我们中国人就是这样,没办法。但是,我们往往忘记了中国人是多么可爱!我在中国生长了21年,又在美国生活了10年。有时候能够跳出圈外,好像在宇宙飞船上来看、来观察这个宇宙、这个星球,来看我们中国人。我越来越觉得我们中国人是非常非常的可爱。这主要有几点。第一点,我们现在在岳麓书院--这是中国最早的大学--它提醒我们,我们中国有这么悠久的教育的传统,我们对教育的重视是我们文化里最优秀的一点;其次,我们非常具有牺牲精神。我们经常把自己的利益放在最后,为了朋友我们可以两肋插刀,为了朋友什么都可以牺牲。几天前我参加了中央电视台的一个节目叫《商品的故事》,上面讲了一个故事:在二三十年前,当时工作中的两个朋友,一个朋友帮另一个朋友买自行车,历尽周折,辗转千山万水,把自行车从一个地方转到另一个地方;而另一个朋友,为了报答他呢,给他弄了很多猪油、粉条给他寄去,没有任何利益可言,就是为了帮朋友。这就是自我牺牲精神,这就是为了朋友可以两肋插刀的精神。还有我们对家庭的重视。"可怜天下父母心",父母亲为了自己的孩子什么都可以做,而把自己的利益放到最后。不要看这些简单的事情,这些发生在我们家庭中每日每刻的事情,实际上,跟西方文化比较起来它们极为可贵。因为在西方每个人都在谈论个人的利益,自己怎么样,自己的权利怎么样,而往往忘记关心他人,关心父母;父母对小孩也没有像我们的"天下父母"对自己的孩子关心到无微不至的地步。还有我们中国人都有一种要追求成功,要光宗耀祖,要出人头地,不要满足于生活上的富足,而经常要追求一些成功的愿望。天下的父母也要望子成龙,希望自己的孩子特别成功。我们总是在寻求物质生活之上的一种更高的人生意义。这种出人头地,光宗耀祖,要取得成功的精神,能够激发起我们每一代人吃苦的精神,能够整天去想怎样来做事情。这些就构成了中华民族勤奋、善于思考、不断进取、对很多东西都富于研究的特质。因此,我们都特别喜欢做学问,信息在中国的传播速度非常快,即使我们的传播手段不是那么发达。这些都是我们中国人的优秀品质。从这个角度来讲,中国人是非常可爱的。假如我们再吸收了西方的一些形式逻辑,比如说AB就等于C就这么简单的形式逻辑,和对规则的重视,我们就可以结合中国人的优秀品质在更大规模上创造在亚洲四小龙身上已经创造的经济奇迹。而这种奇迹将是比亚洲四小龙十倍十几倍的规模,而且速度上毫不逊色。也就是在21世纪,在现在这样一个世纪,更大规模地在中国大地上产生。

  那么在走向世界,走向繁荣,创造经济奇迹的基础上,我们应该注意一些什么?

  我的最后一个话题就是:我们要跨越三百年的自卑。

  刚才说过了,因为我们刚刚从三百年的落后的谷底开始攀升,我们似乎找到了一条通往富强的道路,我们已经习惯于不相信自己,我们刚刚受到一些鼓励,取得了一些经济上的发展,但是还习惯于自责自愧。我们已经颤微微地站了起来,但是还是有些羞愧、不知所措。面对西方--我们永远相信的西方--代表的质量、信誉、发达,我们又该怎样正视自己?我的一个朋友曾给我讲过一个故事。他是美国一家大公司的老板,而他是一个中国人、美籍华人。当他到中国跟中国的一个单位来谈判的时候,带的助手是个美国人。他发现,当他的助手在发言的时候,我们的中方代表如在接受一段真经似的,助手说什么都唉呀是,是,是,说得很对,都赶快记下来,而当他说话的时候,好像对方却不以为然。直到后来,中方才搞清楚,原来他才是大老板。由此我就想到,在我们每一个人的心里面,因为西方列强在几百年前把中国的国门打破,当他们用稍稍发达一点的科学技术制造的枪炮把我们清朝或者明朝的铁骑军队,轻易地一排排放倒的时候,中国人在那一刻就彻底丧失了拥有五千年文明的一个泱泱大国的自信心。而在过去的几百年的历史的长河中,我们的志士仁人一直在寻求自救,来寻求自我,来建立自己的自信。直到现在我们终于找到了道路。但是我们仍然背负着历史沉重的包袱,沉重的自卑感,这导致我们对很多事情往往不能不亢不卑地来面对世界。实现了一些成就,我们就感到沾沾自喜;能够跟西方人平起平坐,以对西方能够说不而感到扬眉吐气。我们觉得能够挑战西方,觉得我们终于可以做到了。实际上,这里面还是隐隐约约包含着一种自卑感。大到很多大的问题,小到我们每日每时的做人,在跟西方谈判合作,等等,都是如此。

  人们常说一个贵族需要几代人的培养。也许等到在新世纪里面,在几十年以后,中国真正的富强了,发达了,能够跟西方真正在财富上平起平坐的时候,我们的心理才能调整到一种平起平坐、一种不亢不卑的状态。但是要记住:我们中国人是非常聪明的,非常善于思考的。我们为什么不能提前在我们新的世纪、新的经济、真正的财富、经济发达的到来之前,提前跨越这三百年的自卑,以一种儒雅平和的心态,走向世界,走向未来呢?

展开全文  
收起全文  
mysql_select_db的问题 (MySQL学习)
发布于 2007-10-20 14:26 1 阅读:29,357 评论:1 标签: mysql

      现有三个端口:3310(db0,db1),3311(db2,db3),3312(db4,db5)
  括号内为这个端口的数据库

  现处理一个文件,把文件里的数据一行一行插入到数据库中
  每一行数据对应一个表
  相邻行的数据一般属于不同端口的不同数据库的不同的表

  问题情况1:

    .............
    第一条数据为3310端口db0
    第二条数据为3311端口db2
    第三条数据为3310端口db1
    .............

  每条数据处理前均用mysql_select_db($db, $link)选择数据库,$link确定每次正确,且每个端口一个资源符号
  如果mysql_select_db操作失败,则程序中输出警告提示
  在mysql_query($sql)第三条数据时,提示db2的表xxx不存在!由此看来是mysql_select_db失败了,但是并没有因为mysql_select_db出错的提示

      问题情况2:()

    .............
    第一条数据为3310端口db0
    第二条数据为3310端口db1
    .............

  在mysql_query($sql)第二条数据时,提示db0的表xxx不存在!情况同上!

  很奇怪,mysql_select_db就这么没用么?!因为在mysql_query中加上数据库连接资源参数后就没问题了

  如果,每个库都有一个独自的数据库连接资源,也能解决这个问题。

  但是mysql_select_db的作用就是在同一个port下选择数据库用的,是不是偶其它方面出了问题?

展开全文  
收起全文  
我们是如何杀入女生澡堂的 (随便说说)
发布于 2007-10-11 18:24 6 阅读:48,377 评论:6 标签: 生活 澡堂 中北大学

      这是05年09月18号的事了,至今想来仍甚有意思。文章也是那天写的,突然发现这里没有,现在补上以感叹一下大学的生活吧!

      六点钟接到同学电话:是否愿意为老师在新南区教师宿舍帮沙子,四立方的沙子帮到四层工资共300元。

     考虑到家境贫寒囊中无钞,商议之下,一群九个人就为了钱杀过去了。

  弟兄们,苦哇!

  从六点五十五一直到九点五十五我就在干这苦力活了。感觉腰、背肌肉明显加强。原来肌肉是这样练成的!

  累成这样,洗澡是必然的。感觉,这样的洗澡是没几个人经历的!

  都以为新生来嘛,总是要十一点才关门的。结果,很显然,服务集团没这么好。

  但让我们看到希望的是女生澡堂的灯还亮着。这就必然给处于疲劳中的我们带来了幻想……

  在我们苦苦哀求下,看守大门的阿姨终于点了她那高贵的头,在她点第一次头的时候,我们犹如一群乞丐看见满汉全席一样杀了进去!有一点要说明的是,我并不知道,在她点头的后0.1秒她是否还会点另一次头。也就是说我并不知道她当时是答应还是拒绝……过程不是很重要,但重要的是我们杀进了澡堂,这离我们洗一澡的梦想更进了一步。

  最后一关一般由最有实力的人把手。显然,服务集团深得此道。把手女生澡堂的阿姨果然纪律严明:“你们怎么能进女生澡堂呢!出去!出去!”。
   
  在我们苦苦哀求后,阿姨一瞪眼:“里面还有人!”。无语了……

  但是,这并不能熄灭我们洗一个澡的美好幻想。突然,里面走出两个女生,一个竟然是隔壁班的!顿时我们全傻眼了……

  无语中我们蹦出一句:“里面还有人吗?”。对方哧哧一笑:“还有三个人”。

  这无疑又给我们带来了希望!我们向阿姨保证:如果里面的人在十点五十五之前能出来我们进去洗五分钟就出来。阿姨似乎被我们诚心和对洗一次澡的执卓感动了,被迫答应了我们。阿姨还是不错的,呵呵。

  当再一个女生走出来的时候,她显然被我们镇住了,头也不敢抬的往前走。“同学,里面还有几个人呀?”,没有抬头,“同学!”抬高了声量“请问里面还有几个人?”,终于抬头了,显然,她的确无疑是个美女!“还有两个”,听到这回答我们觉得梦想应该是个现实了。

  等待是个漫长的过程,尤其是等待女生。(申明:这话不是我说的)当最后两个女生出来时,我们惊讶的发现其中一个竟然是一个同伴的女友。偷笑的同时我们一致怪罪她是多么的浪费我们的时间然后杀进了女生澡堂……嘿嘿。

  世界是如此的美妙与精彩!以至于我们刚把头抹上洗发膏就停水了。世界上最无奈的事情末过于此!
  
  连女生澡堂都能杀进来的我们难道会被这点困难所打倒?!当然不能!

  热水没有,但冷水总还是有的,而且不只是有,它还出口很大!男人嘛,洗个冷水造算什么,即使是天气已经转凉的现在!

  冒着感冒的危险,我们最后用冷水把我们一直追求的幻想变成了现实。

  最后我要总结的是:恒心和毅力是多么的重要!

     (注:最后洗澡有四个弟兄)

展开全文  
收起全文  
长假期间你敢出去玩么 (随便说说)
发布于 2007-10-04 18:05 2 阅读:113,536 评论:2 标签: 放假 生活

  十一长假,举国同庆。庆,则必要用行动体现。吃喝玩乐,精华在于玩,国人深通此道。

  偶的麻烦也在于此,睡兼看电影了两天,本想出去玩,但一看新闻,立马无语,这出去是看景物呢还是人呢?!

所谓人山人海

虽众人之,吾往亦!

以上图片来自新浪网

展开全文  
收起全文  
(随便说说)
发布于 2007-09-23 19:11 3 阅读:59,560 评论:3 标签: 生活

      今天发现卡里又快没钱了

展开全文  
收起全文