背景:有哥们在一PHP群里发现另一个哥们设置cookie的代码编写有点意思,如下:
[codes=php]
$cookieJson = json_encode($cookieArr);
$_COOKIE['userInfo'.$this->roteId] = $cookieJson;
setcookie('userInfo'.$this->roteId,$cookieJson );
[/codes]
阅读全文
[codes=php]
$cookieJson = json_encode($cookieArr);
$_COOKIE['userInfo'.$this->roteId] = $cookieJson;
setcookie('userInfo'.$this->roteId,$cookieJson );
[/codes]

http协议是一种无状态的连接,要想跟踪用户的行为就必须有一个能工作于不同于页面的变量,在PHP中可以用cookie和session两种办法实现。
cookie大家比较熟悉了,就是在把变量存为客户端上的一个文件而已,但是如果客户禁止cookie就没办法了。这就需要session了,在PHP4 中,session可以有两种办法实现,一是用cookie,即把sessionID保存在cookie文件中;二是把sessionID附带在URL上进行传递。
虽有这两种办法实现,但至于使用哪种方法是不用程序员操心的,PHP会自动检查客户cookie的设置的(指linux/unix平台,Win32未知),并且默认的是优先使用cookie(你可以修改php.ini文件中的[session]一节的session.use_cookies的值来改变)。当然你也可以强制使用URL来传递SessionID,如下:
<a href="submit.php<?=sessionID;?>">提交表单</a>
仅在链接中加一句<?=sessionID;?>就行了,简单吧?在php.ini中还有许多关于Session的设置,如 session.cookie_lifetime是session的有效时间等,都在[session]一节中,若看看的话会对PHP中的session 有更多的理解的。
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。
cookie机制。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该 cookie附在请求资源的HTTP请求头上发送给服务器。
cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些 cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的 cookie,不同的浏览器有不同的处理方式
session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于 SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。
经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如:
<form name="testform" action="/xxx">
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
<input type="text">
</form>
实际上这种技术可以简单的用对action应用URL重写来代替。
在一个页面设置一个cookie时,必须刷新或到下一个页面才可以用 $_COOKIE 得到变量的值.
原因是因为当页面第一次被浏览器访问载入时,页面中的 cookie 会被设置,将其发送存储到客户端指定的
存储位置,所以$_COOKIE没有接收到客户端发送过来的 cookie 变量的值,当刷新或到下一个页面时,客户
端会在页面程序在服务器端运行之前,发送与该地址相对应的 cookie到服务器端,所以 $_COOKIE 可以得
到的值!
说白了就是当每一个页面被访问时,如果客户端找到了与访问地址相对应的 cookie 时,会在程序在服务器
端运行之前发送这个 cookie 到服务器端. (个人对此的看法)
本人表达能力不强,如有不明,还请抱歉!
php中设置cookie数组的时候,不可以用像php中的那个添加数据的方法:
<?php
setcookie('my_cookie[]', 1);
setcookie('my_cookie[]', 2);
print_r($_COOKIE); // Array ( [my_cookie] => Array ( [0] => 1 ))
// 数组的值添加是添加成功了,不过索引没有变,后面的数据将前的数据覆盖了!
由此得到
my_cookie[],默认指向数据的第一元素的位置,即索引为
0 的位置. 注意与php中的不一样! 以后用cookie数据记住要指定数组元素索引哦!
$my_cookie[] = 1;
$my_cookie[] = 2;
print_r($my_cookie); //Array ( [0] => 1 [1] => 2)
?>
删除 cookie 变量的两个方法:
1.php
<?php
setcookie('user_name_1', 'zhaofei299', time()+3600); // 生存期为 1 个小时
setcookie('user_name_2', 'ZHAOFEI299', time()+3600); // 生存期为 1 个小时
?>
2.php
<?php
setcookie('user_name_1'); // 第一种
setcookie('user_name_2', "", time()-1); // 第二种
print_r($_COOKIE); // 刷新页面2下以上会输出 Array ( [user_name_1] => )
/*为什么超级全局变量 $_COOKIE 中的 user_name_1 没有被删除(变量为空并不代表不存在),而
user_name_2被删除了? 那是因为两个删除变量的方式不同!
第一种: 是设置了 cookie 的生存期, 只不过是将它的值默认设置为空,生存期为与浏览器一样,浏览器
关闭时,cookie才会删除!所以当重新打开一个浏览器,输出地址时,才会发现 cookie 变量全部被删除了!
将2.php 中两个 setcookie() 函数部分注释掉看看(重新输出了地址)!
第二种: 也是设置了 cookie 的生存期,是使 cookie 的生存期一定过期, cookie 也就被删除,所以刷
新页面,客户端向服务器端发送 cookie 时, $_COOKIE 并没有能够得到该cookie变量的值!
*/
?>
会话id默认储放在客户端Cookie中!
<?php
session_start();
print_r($_COOKIE);
?>
cookie的设置有两种方法
header('set-cookie:user=zhaofei299');
setcookie('user', 'zhaofei299');
会话变量不能被GET数据或POST数据重载!
使用session变量传递数组,对象时无需序列化!
使用session变量传递对象时,在调用session_start()之前,必须包含该对类对象的定义,反序列化
(serialize)也是如此!
删除单个会话变量可以使用unset($_SESSION['***']) 直接删除!
删除所有的会话变量不可以用unset($_SESSION),因为这样会将所有的会话信息删除,包含存储在COOKIE
中的PHPSESSID,也就是破坏了两个页面之间的会话联系,应该使用$_SESSION = array();
消除会话id,使页面之间失去联系!
session_destroy();
程序清单1.1
<?php
session_start();
header('content-type:text/html;charset=utf-8');
$_SESSION['a'] = 'a';
$_SESSION['b'] = 'b';
unset($_SESSION); //测试后,再注释下看看
$_SESSION['user'] = 'zhaofei299';
echo 'SESSION_ID: '.session_id().'<br />';
echo '<a href="3.php" target="_blank">测试下</a>';
?>
<?php
session_start();
echo $_SESSION['user'];
echo session_id(); //会话变量改变了
?>
会话id(session_id)的两种方式传递:
1.cookie
2.url
因为默认session是基于cookie的,而cookie又是跟随http协议发送的,所以与cookie一样,在
session_start()之前不能有任何输出!
现在主要说一说第二种,通过 url 传递会话id
php中已经定义SID这个常量来得到 会话的id
sesssin_id 的使用!
<?php
session_start();
echo defined('SID')?'true':'false'; // true
echo SID; //什么也没有?
?>
为什么SID的值会是null 呢?是它哪里有问题了?
原因是因为 session 默认是基于 cookie 的,而 SID 只有 session_id 通过 url
传递数据时才会被赋值!
在浏览器中将 cookie 禁用,你就会发现 SID 有了输出,而不是 null!
删除session
要三步实现.
<?php
session_destroy(); // 第一步: 删除服务器端session文件,这使用
setcookie(session_name(),'',time()-3600); // 第二步: 删除实际的session:
$_SESSION = array(); // 第三步: 删除$_SESSION全局变量数组
?>
大家都知道session变量是保存在服务器端的,也就是说session的变量会保存在服务器中一个目录中,我
们可以在php.ini中的session.save_path 那里可以找到session文件中保存的地址.
默认的session的生存期是浏览的关闭就结束,但要知道会话过期结束后,当打开页面session_start()会
判断会话id 是否存在,如果不存在就创建一个,否则将该会话id 的变量载入页面!因为过期session_id会
被创建一个新的,但它保存在服务器端的session文件并没有被删除(关闭浏览器,打开session文件保存
地看看),所以要用session_destory()函数清除会话id,并同时清除相应的会话文件,这样的话才能做到最
彻底的清除!
session_id 使用 url 传递session 变量数据时,因为session_start()开启会话时会判断会话id 是否存
在,如果不存在就创建一个,否则将该会话id 的变量载入页面!
而现在是使用url 来传递session_id,然而每一次 刷新/进入页面 都会生成一个会话id,所以页面之间就
不能得到在另一页面设置过的session_id 的变量,那么使用 session也就没什么意义了!
解决方法:在session_start()之前,手动设置页面的session_id,这样页面的就可以得到前一页中所设置的
session变量的,也就实现了会话的传递,如下代码可以说明!
//已禁用 cookie
1.php
<?php
session_start();
$_SESSION['user'] = 'zhaofei299';
echo '<a href="2.php?'.SID.'">下一页</a>';
?>
1.php的第4行代码也可以写成:echo '<a href="2.php">下一页</a>';
可以设置php.ini 中的 session.use_trans_sid 为1,这样当使用 url 传递会话 id 时,
浏览器会自动将 session_id 追加到 url 的后面!
就好像 在浏览器中 输入: www.baidu.com 一样,浏览器会自动将其更换成 http://www.baidu.com/
2.php
<?php
session_id($_GET['PHPSESSID']); // 手动设置session_id,这种就可以使用前一个页面的
session_id 的变量了,也就实现了会话!
session_start();
print_r($_SESSION);
?>
常用session函数:
bool session_start(void); 初始化session
bool session_destroy(void): 删除服务器端session关联文件。
string session_id() 当前session的id
string session_name() 当前存取的session名称,也就是客户端保存session ID的cookie名称.默认
PHPSESSID。
array session_get_cookie_params() 与这个session相关联的session的细节.
string session_cache_limiter() 控制使用session的页面的客户端缓存
ini session_cache_expire() 控制客户端缓存时间
bool session_destroy() 删除服务器端保存session信息的文件
void session_set_cookie_params ( int lifetime [, string path [, string domain [, bool
secure [, bool httponly]]]] )设置与这个session相关联的session的细节
bool session_set_save_handler ( callback open, callback close, callback read, callback
write, callback destroy, callback gc )定义处理session的函数,(不是使用默认的方式)
bool session_regenerate_id([bool delete_old_session]) 分配新的session id
cookie大家比较熟悉了,就是在把变量存为客户端上的一个文件而已,但是如果客户禁止cookie就没办法了。这就需要session了,在PHP4 中,session可以有两种办法实现,一是用cookie,即把sessionID保存在cookie文件中;二是把sessionID附带在URL上进行传递。
虽有这两种办法实现,但至于使用哪种方法是不用程序员操心的,PHP会自动检查客户cookie的设置的(指linux/unix平台,Win32未知),并且默认的是优先使用cookie(你可以修改php.ini文件中的[session]一节的session.use_cookies的值来改变)。当然你也可以强制使用URL来传递SessionID,如下:
<a href="submit.php<?=sessionID;?>">提交表单</a>
仅在链接中加一句<?=sessionID;?>就行了,简单吧?在php.ini中还有许多关于Session的设置,如 session.cookie_lifetime是session的有效时间等,都在[session]一节中,若看看的话会对PHP中的session 有更多的理解的。
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。
cookie机制。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该 cookie附在请求资源的HTTP请求头上发送给服务器。
cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些 cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的 cookie,不同的浏览器有不同的处理方式
session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于 SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。
经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如:
<form name="testform" action="/xxx">
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
<input type="text">
</form>
实际上这种技术可以简单的用对action应用URL重写来代替。
在一个页面设置一个cookie时,必须刷新或到下一个页面才可以用 $_COOKIE 得到变量的值.
原因是因为当页面第一次被浏览器访问载入时,页面中的 cookie 会被设置,将其发送存储到客户端指定的
存储位置,所以$_COOKIE没有接收到客户端发送过来的 cookie 变量的值,当刷新或到下一个页面时,客户
端会在页面程序在服务器端运行之前,发送与该地址相对应的 cookie到服务器端,所以 $_COOKIE 可以得
到的值!
说白了就是当每一个页面被访问时,如果客户端找到了与访问地址相对应的 cookie 时,会在程序在服务器
端运行之前发送这个 cookie 到服务器端. (个人对此的看法)
本人表达能力不强,如有不明,还请抱歉!
php中设置cookie数组的时候,不可以用像php中的那个添加数据的方法:
<?php
setcookie('my_cookie[]', 1);
setcookie('my_cookie[]', 2);
print_r($_COOKIE); // Array ( [my_cookie] => Array ( [0] => 1 ))
// 数组的值添加是添加成功了,不过索引没有变,后面的数据将前的数据覆盖了!
由此得到
my_cookie[],默认指向数据的第一元素的位置,即索引为
0 的位置. 注意与php中的不一样! 以后用cookie数据记住要指定数组元素索引哦!
$my_cookie[] = 1;
$my_cookie[] = 2;
print_r($my_cookie); //Array ( [0] => 1 [1] => 2)
?>
删除 cookie 变量的两个方法:
1.php
<?php
setcookie('user_name_1', 'zhaofei299', time()+3600); // 生存期为 1 个小时
setcookie('user_name_2', 'ZHAOFEI299', time()+3600); // 生存期为 1 个小时
?>
2.php
<?php
setcookie('user_name_1'); // 第一种
setcookie('user_name_2', "", time()-1); // 第二种
print_r($_COOKIE); // 刷新页面2下以上会输出 Array ( [user_name_1] => )
/*为什么超级全局变量 $_COOKIE 中的 user_name_1 没有被删除(变量为空并不代表不存在),而
user_name_2被删除了? 那是因为两个删除变量的方式不同!
第一种: 是设置了 cookie 的生存期, 只不过是将它的值默认设置为空,生存期为与浏览器一样,浏览器
关闭时,cookie才会删除!所以当重新打开一个浏览器,输出地址时,才会发现 cookie 变量全部被删除了!
将2.php 中两个 setcookie() 函数部分注释掉看看(重新输出了地址)!
第二种: 也是设置了 cookie 的生存期,是使 cookie 的生存期一定过期, cookie 也就被删除,所以刷
新页面,客户端向服务器端发送 cookie 时, $_COOKIE 并没有能够得到该cookie变量的值!
*/
?>
会话id默认储放在客户端Cookie中!
<?php
session_start();
print_r($_COOKIE);
?>
cookie的设置有两种方法
header('set-cookie:user=zhaofei299');
setcookie('user', 'zhaofei299');
会话变量不能被GET数据或POST数据重载!
使用session变量传递数组,对象时无需序列化!
使用session变量传递对象时,在调用session_start()之前,必须包含该对类对象的定义,反序列化
(serialize)也是如此!
删除单个会话变量可以使用unset($_SESSION['***']) 直接删除!
删除所有的会话变量不可以用unset($_SESSION),因为这样会将所有的会话信息删除,包含存储在COOKIE
中的PHPSESSID,也就是破坏了两个页面之间的会话联系,应该使用$_SESSION = array();
消除会话id,使页面之间失去联系!
session_destroy();
程序清单1.1
<?php
session_start();
header('content-type:text/html;charset=utf-8');
$_SESSION['a'] = 'a';
$_SESSION['b'] = 'b';
unset($_SESSION); //测试后,再注释下看看
$_SESSION['user'] = 'zhaofei299';
echo 'SESSION_ID: '.session_id().'<br />';
echo '<a href="3.php" target="_blank">测试下</a>';
?>
<?php
session_start();
echo $_SESSION['user'];
echo session_id(); //会话变量改变了
?>
会话id(session_id)的两种方式传递:
1.cookie
2.url
因为默认session是基于cookie的,而cookie又是跟随http协议发送的,所以与cookie一样,在
session_start()之前不能有任何输出!
现在主要说一说第二种,通过 url 传递会话id
php中已经定义SID这个常量来得到 会话的id
sesssin_id 的使用!
<?php
session_start();
echo defined('SID')?'true':'false'; // true
echo SID; //什么也没有?
?>
为什么SID的值会是null 呢?是它哪里有问题了?
原因是因为 session 默认是基于 cookie 的,而 SID 只有 session_id 通过 url
传递数据时才会被赋值!
在浏览器中将 cookie 禁用,你就会发现 SID 有了输出,而不是 null!
删除session
要三步实现.
<?php
session_destroy(); // 第一步: 删除服务器端session文件,这使用
setcookie(session_name(),'',time()-3600); // 第二步: 删除实际的session:
$_SESSION = array(); // 第三步: 删除$_SESSION全局变量数组
?>
大家都知道session变量是保存在服务器端的,也就是说session的变量会保存在服务器中一个目录中,我
们可以在php.ini中的session.save_path 那里可以找到session文件中保存的地址.
默认的session的生存期是浏览的关闭就结束,但要知道会话过期结束后,当打开页面session_start()会
判断会话id 是否存在,如果不存在就创建一个,否则将该会话id 的变量载入页面!因为过期session_id会
被创建一个新的,但它保存在服务器端的session文件并没有被删除(关闭浏览器,打开session文件保存
地看看),所以要用session_destory()函数清除会话id,并同时清除相应的会话文件,这样的话才能做到最
彻底的清除!
session_id 使用 url 传递session 变量数据时,因为session_start()开启会话时会判断会话id 是否存
在,如果不存在就创建一个,否则将该会话id 的变量载入页面!
而现在是使用url 来传递session_id,然而每一次 刷新/进入页面 都会生成一个会话id,所以页面之间就
不能得到在另一页面设置过的session_id 的变量,那么使用 session也就没什么意义了!
解决方法:在session_start()之前,手动设置页面的session_id,这样页面的就可以得到前一页中所设置的
session变量的,也就实现了会话的传递,如下代码可以说明!
//已禁用 cookie
1.php
<?php
session_start();
$_SESSION['user'] = 'zhaofei299';
echo '<a href="2.php?'.SID.'">下一页</a>';
?>
1.php的第4行代码也可以写成:echo '<a href="2.php">下一页</a>';
可以设置php.ini 中的 session.use_trans_sid 为1,这样当使用 url 传递会话 id 时,
浏览器会自动将 session_id 追加到 url 的后面!
就好像 在浏览器中 输入: www.baidu.com 一样,浏览器会自动将其更换成 http://www.baidu.com/
2.php
<?php
session_id($_GET['PHPSESSID']); // 手动设置session_id,这种就可以使用前一个页面的
session_id 的变量了,也就实现了会话!
session_start();
print_r($_SESSION);
?>
常用session函数:
bool session_start(void); 初始化session
bool session_destroy(void): 删除服务器端session关联文件。
string session_id() 当前session的id
string session_name() 当前存取的session名称,也就是客户端保存session ID的cookie名称.默认
PHPSESSID。
array session_get_cookie_params() 与这个session相关联的session的细节.
string session_cache_limiter() 控制使用session的页面的客户端缓存
ini session_cache_expire() 控制客户端缓存时间
bool session_destroy() 删除服务器端保存session信息的文件
void session_set_cookie_params ( int lifetime [, string path [, string domain [, bool
secure [, bool httponly]]]] )设置与这个session相关联的session的细节
bool session_set_save_handler ( callback open, callback close, callback read, callback
write, callback destroy, callback gc )定义处理session的函数,(不是使用默认的方式)
bool session_regenerate_id([bool delete_old_session]) 分配新的session id
FasterSoft经过两年多的发展,由最开始的6名员工到现在的35名员工,阿蒙感觉上不好不坏,还远远谈不上成功,我非常了解FasterSoft,同时也一直保持着冷静与理智,只能说FasterSoft处于不断发展与上升的阶段,这个阶段很重要也很危险,阿蒙前些年曾经在多个诸如此类的IT企业混饭吃,但这些企业基本上都没有做好管理与发展的准备,有时可以用混乱不堪来形容,这个阶段的管理瓶颈造成了国内成千上万IT中小企业的停滞不前或轰然FasterSoft继续往前发展,拒绝重蹈覆辙。倒塌,阿蒙有信心与决心带领
(1) 一切用制度说话
之前经常有员工找我谈话,不是加薪或提升问题,就是各种补偿问题(比如加班补偿等等),搞得我身心疲惫,饭吃不好觉睡不香,我觉得这样有点乱,我也曾叫他们去看员工手册或行政规章制度,但里面的规定实在不全不细,因此我决定开始制定更为全面的制度手册,我的目标是让员工去找制度说话,而不是找我谈话,我是一个个体,有血有肉有感情的个体,我想有时我的决定会存在主观意识的影响,对员工是不公平的,所以我的目标是培养相对公开、公正、公平的管理氛围,尽量用制度来奖惩,而不是某个老板的意愿。
面临的第一个问题就是制度的建立问题。我们有时都很理想化,喜欢搞一些大而全的玩意,事实上很难做到,因此我决定从关键性制度开始着手,然后再慢慢完善。所谓关键性制度,就是与公司与员工密切相关的制度,比如上班制度、加班制度、福利制度、绩效考核制度等,而那些行政人力制度并非关键性的,在你研读完国内大部分企业的行政人力制度后,你会悲哀地发现它们其实都大同小异,而且大部分员工都已经了解。关键制度的建立是很难全部生搬硬套的,必须根据自已公司的特点与要求进行制定与完善,要让他们达到你想要的管理效果。
现实中,每一个企业似乎都会有自已的制度,但也未必见得到好的管理效果,这是制度执行的问题,在我国来讲这也是一个大问题。大部分中国人具有聪明、勤劳的优良传统,但同时也具有玩小聪明,好钻漏洞,喜欢勾心斗角,喜欢内耗的劣根性,制度其实在我们中国的各行各业都多多少少存在,但并不是所有的企业或个人真正规规矩矩地按制度办事,空话少说,需要从上往下严格执行,执行力是说不出写不出的,因此在这里也不需过多的论述。
(2) 培养忠诚、高效的中层管理者
或许很多的老板都梦想有一天自已可以轻轻松松地到海岛上去钓钓鱼游游泳散散步,公司大大小小的事情都由属下们去办好办妥,这也许是管理的最高境界,相反,如果老板忙得焦头烂额累得死去活来的,小公司或者说得过去,但对于中型或以上的企业,那说明在管理上存在问题。在经过两年的发展,阿蒙觉得中层管理者(比如部门经理,项目经理等)在公司所起的作用非常地明显非常地关键,他们承上启下,他们的忠诚与高效是企业竞争力一个重要体现,实际上我没有太多的时间去管理具体的项目或事宜,只要他们有能力与可信任,我会授权给他们去管理。因此我经常将培养中层管理者作为企业发展的一项重要事宜。柳传志再厉害也不可能劳作一辈子,而杨元庆与郭为是他两个最得意的子弟兵,因此可以说柳传志的成功不仅仅在于联想的成功,而也在于他为联想培养了真正强劲的接班人,人们常说:留得青山在,不怕没柴烧,可见人才对企业来说是多么的重要,请记得黎叔所说的话:“21世纪最重要的是什么?——人才!”
(3) 原则问题绝不退让
我们都只是普通劳动者,我们在日常状态下通常会与人为善,宽大为怀,尽量与他人保持平等、和谐的关系,即使有了矛盾,也会想方设法和平解决,这样才能保持平静详和的心态面对生活面对事业。但是如果矛盾涉及到原则性的问题,那么我们作为管理者就必须要站稳脚跟,绝不退让,这样才会让员工觉得你这个人在原则问题上把守得很牢,没有空子可钻,相反,如果我们在原则问题上一味地退让,员工会觉得我们好说话,有空子可钻,有便宜可占,有的员工会越来越得寸进尺,这样会造成管理上的被动局面。引申到IT项目管理中,也是一样的道理,我们的项目为什么总是做也做不完?我们客户为什么总在不停止地变更需求?有时就是因为我们在项目管理的原则问题上没有把好关。
(4) 管好自已的嘴巴
阿蒙所要论述的不是吃饭问题,实际上只要是健康的好吃的,什么东东我们都可以吃,川菜湘菜粤菜鲁菜闽菜浙菜苏菜徽菜,统统好吃得不得了,呵呵。吃的没有问题,可说的就要小心了:(a)不做“思想巨人,行动侏儒”;(b)没有把握的情况下,不要轻易给任何人承诺;(c)不要在一个员工的面前评价另一位员工;(d)不要在在职员工面前评价离职员工;(e)避免在员工面前喝醉酒讲真话;(f)不要在员工面前过分地娱乐化……
(5) 做好自我管理
中国有句话:“上梁不正下梁歪”,可以用来说明如果企业管理者不做好自我管理,那么会让企业员工也不好管理,比如老板经常性地与员工一起打游戏玩扑克,无形中会传染一种不好的工作氛围,当然老板也是一个人,也需要娱乐与休闲,但我们应需要注意方式与场合,并不是说虚伪,而是一种尊重,对自已对企业的尊重。你看看别人小日本就很会做,那个死鬼上司昨晚明明花天酒地烂醉如泥,但今天上班依然格外严肃,好象没有发生过任何事情,简直太虚伪了,但并不阻碍他们成为世界经济发达的国家之一。
以上各点是阿蒙与FasterSoft今年要努力做好的,主要是内部管理与伦理问题,当然我们还是一家小企业,我们总会很虚心地去学习,总会拿出实际的行动去证明自已,总会在细节方面下文章,总会孜孜不倦地奋斗与争取各种机会,我们尊重每一位客户,同时也尊重每一位员工,因为他们是企业之所以能够生存与发展的关键所在,每每回忆起FasterSoft在过去两年多的点点滴滴,我就会感动不已,尽管目前我们远远谈不上成功,还在不断努力往前爬,但我们奋斗过,努力过,尝试过,有过顺利之时,但更多的是困难,我们一直有坚定的信念与信心,我们要让FasterSoft变得更大更强!
(1) 一切用制度说话
之前经常有员工找我谈话,不是加薪或提升问题,就是各种补偿问题(比如加班补偿等等),搞得我身心疲惫,饭吃不好觉睡不香,我觉得这样有点乱,我也曾叫他们去看员工手册或行政规章制度,但里面的规定实在不全不细,因此我决定开始制定更为全面的制度手册,我的目标是让员工去找制度说话,而不是找我谈话,我是一个个体,有血有肉有感情的个体,我想有时我的决定会存在主观意识的影响,对员工是不公平的,所以我的目标是培养相对公开、公正、公平的管理氛围,尽量用制度来奖惩,而不是某个老板的意愿。
面临的第一个问题就是制度的建立问题。我们有时都很理想化,喜欢搞一些大而全的玩意,事实上很难做到,因此我决定从关键性制度开始着手,然后再慢慢完善。所谓关键性制度,就是与公司与员工密切相关的制度,比如上班制度、加班制度、福利制度、绩效考核制度等,而那些行政人力制度并非关键性的,在你研读完国内大部分企业的行政人力制度后,你会悲哀地发现它们其实都大同小异,而且大部分员工都已经了解。关键制度的建立是很难全部生搬硬套的,必须根据自已公司的特点与要求进行制定与完善,要让他们达到你想要的管理效果。
现实中,每一个企业似乎都会有自已的制度,但也未必见得到好的管理效果,这是制度执行的问题,在我国来讲这也是一个大问题。大部分中国人具有聪明、勤劳的优良传统,但同时也具有玩小聪明,好钻漏洞,喜欢勾心斗角,喜欢内耗的劣根性,制度其实在我们中国的各行各业都多多少少存在,但并不是所有的企业或个人真正规规矩矩地按制度办事,空话少说,需要从上往下严格执行,执行力是说不出写不出的,因此在这里也不需过多的论述。
(2) 培养忠诚、高效的中层管理者
或许很多的老板都梦想有一天自已可以轻轻松松地到海岛上去钓钓鱼游游泳散散步,公司大大小小的事情都由属下们去办好办妥,这也许是管理的最高境界,相反,如果老板忙得焦头烂额累得死去活来的,小公司或者说得过去,但对于中型或以上的企业,那说明在管理上存在问题。在经过两年的发展,阿蒙觉得中层管理者(比如部门经理,项目经理等)在公司所起的作用非常地明显非常地关键,他们承上启下,他们的忠诚与高效是企业竞争力一个重要体现,实际上我没有太多的时间去管理具体的项目或事宜,只要他们有能力与可信任,我会授权给他们去管理。因此我经常将培养中层管理者作为企业发展的一项重要事宜。柳传志再厉害也不可能劳作一辈子,而杨元庆与郭为是他两个最得意的子弟兵,因此可以说柳传志的成功不仅仅在于联想的成功,而也在于他为联想培养了真正强劲的接班人,人们常说:留得青山在,不怕没柴烧,可见人才对企业来说是多么的重要,请记得黎叔所说的话:“21世纪最重要的是什么?——人才!”
(3) 原则问题绝不退让
我们都只是普通劳动者,我们在日常状态下通常会与人为善,宽大为怀,尽量与他人保持平等、和谐的关系,即使有了矛盾,也会想方设法和平解决,这样才能保持平静详和的心态面对生活面对事业。但是如果矛盾涉及到原则性的问题,那么我们作为管理者就必须要站稳脚跟,绝不退让,这样才会让员工觉得你这个人在原则问题上把守得很牢,没有空子可钻,相反,如果我们在原则问题上一味地退让,员工会觉得我们好说话,有空子可钻,有便宜可占,有的员工会越来越得寸进尺,这样会造成管理上的被动局面。引申到IT项目管理中,也是一样的道理,我们的项目为什么总是做也做不完?我们客户为什么总在不停止地变更需求?有时就是因为我们在项目管理的原则问题上没有把好关。
(4) 管好自已的嘴巴
阿蒙所要论述的不是吃饭问题,实际上只要是健康的好吃的,什么东东我们都可以吃,川菜湘菜粤菜鲁菜闽菜浙菜苏菜徽菜,统统好吃得不得了,呵呵。吃的没有问题,可说的就要小心了:(a)不做“思想巨人,行动侏儒”;(b)没有把握的情况下,不要轻易给任何人承诺;(c)不要在一个员工的面前评价另一位员工;(d)不要在在职员工面前评价离职员工;(e)避免在员工面前喝醉酒讲真话;(f)不要在员工面前过分地娱乐化……
(5) 做好自我管理
中国有句话:“上梁不正下梁歪”,可以用来说明如果企业管理者不做好自我管理,那么会让企业员工也不好管理,比如老板经常性地与员工一起打游戏玩扑克,无形中会传染一种不好的工作氛围,当然老板也是一个人,也需要娱乐与休闲,但我们应需要注意方式与场合,并不是说虚伪,而是一种尊重,对自已对企业的尊重。你看看别人小日本就很会做,那个死鬼上司昨晚明明花天酒地烂醉如泥,但今天上班依然格外严肃,好象没有发生过任何事情,简直太虚伪了,但并不阻碍他们成为世界经济发达的国家之一。
以上各点是阿蒙与FasterSoft今年要努力做好的,主要是内部管理与伦理问题,当然我们还是一家小企业,我们总会很虚心地去学习,总会拿出实际的行动去证明自已,总会在细节方面下文章,总会孜孜不倦地奋斗与争取各种机会,我们尊重每一位客户,同时也尊重每一位员工,因为他们是企业之所以能够生存与发展的关键所在,每每回忆起FasterSoft在过去两年多的点点滴滴,我就会感动不已,尽管目前我们远远谈不上成功,还在不断努力往前爬,但我们奋斗过,努力过,尝试过,有过顺利之时,但更多的是困难,我们一直有坚定的信念与信心,我们要让FasterSoft变得更大更强!
之前好象听过一个培训,说寺庙里的老和尚养了一只名叫“放下”的狗,老和尚吃饭时、散步时、睡觉前、醒来后总喜欢不停地叫:放下、放下,除了叫他的狗,同时也在叫自已放下所有的私心杂念与忧愁烦恼,专心修身养性,老和尚非凡夫俗子,或许容易做到,但身在花花世界的每个人,要真正做到放下,谈何容易?有的人放不下功名,有的人放不下金钱,有的人放不下爱情,有的人放不下事业,因为无法放下,所以我们很多人都活得很紧张很痛苦。
书上有说:一流的领导每天工作三小时,二流的领导每天工作五小时,三流的领导每天工作八小时。这话很让偶郁闷,因为我每天工作超过八小时,我连三流都不是,幸好我经常不把自已当领导来看待,尽管FasterSoft已成立两年多,员工也达到了30个,但我无法轻松,依然象我们的员工一样每天忙忙碌碌地工作,我不习惯员工叫我做什么总,什么经理之类的,非正式场合基本上都是直唤英文名,我除了在开会的时候感觉到自已象点领导外,其他的时间我与他们之间都是开放的、轻松的,我们可以讨论任何问题,可以综合每个人好的建议,我提倡员工以自觉为主,如果非得用规章制度来约束,非得要不停地监督与责骂,那么事实上企业已存在很大的内耗了,这个人也基本上需要离开,当然每个人都是独立的个体,可能有的人习惯于被人不停地监督,他才会有效率与效果,那就需要管理上的技巧应用,似乎开始离题了,其实这一段要表达的意思是作为企业的领导人,要舍得放下部分责任,让你的下属你的员工去承担,并充分信任他们,放手让他们在职权范围内独立处理问题,创造性地开展工作。
但中国的教育似乎喜欢提倡领导者“日理万机”,“大事小事,亲力亲为”的形象,我们中小学的教科书上好象不乏诸如此类的形象,还非得要将领导操劳得大病一场,然后带病工作,好象这样更能体现领导的光辉形象以及丰功伟德,中国人喜欢歌颂苦难,好象没有苦难,就不会伟大一样,在我看来,这是非常奇怪的观念,有病就去医院看病,为什么还要带病工作?这是不爱惜自已,更不爱惜别人,我不相信带病工作的效率会很高,而且这样往往会因小失大。
新时代的领导应强调灵活授权的管理艺术,放下那些琐碎之事,让员工去处理,让群体的能力得到发挥,领导者只负责处理一些重大的紧急的涉及决策的事情,人的精力总是有限的,凡事亲力亲为,就连诸葛亮都会被累得吐血而死,何况是一般的管理者呢?
当然,领导者除了放下权力以外,还要能放得下名利,如果在公司里成天勾心斗角你争我夺,那样既得不到快乐,最终也管理不好企业。偶小时候在农村长大,经常陪父母种田挑柴,每每看到老爸放下沉甸甸的柴草,舒心地擦着汗水,并掏出烟袋,爽爽地抽几口,满面的快乐与幸福,休息几分钟后,又开始挑起沉甸甸的柴草满脸痛苦地翻山越岭,我体会得到,老爸放下柴草时的快乐,他的快乐是简单的,就如同贫困者的快乐也是很简单,有时仅仅是因为能鸲吃饱穿暖,有时仅仅是因为可以上学读书,有时仅仅是因为有路走有桥过,而不象亲爱的领导者们,要求那么高,不仅仅要求物质上,还要求精神上的,如果每个领导都能放下一些,那么快乐会多一些。
书上有说:一流的领导每天工作三小时,二流的领导每天工作五小时,三流的领导每天工作八小时。这话很让偶郁闷,因为我每天工作超过八小时,我连三流都不是,幸好我经常不把自已当领导来看待,尽管FasterSoft已成立两年多,员工也达到了30个,但我无法轻松,依然象我们的员工一样每天忙忙碌碌地工作,我不习惯员工叫我做什么总,什么经理之类的,非正式场合基本上都是直唤英文名,我除了在开会的时候感觉到自已象点领导外,其他的时间我与他们之间都是开放的、轻松的,我们可以讨论任何问题,可以综合每个人好的建议,我提倡员工以自觉为主,如果非得用规章制度来约束,非得要不停地监督与责骂,那么事实上企业已存在很大的内耗了,这个人也基本上需要离开,当然每个人都是独立的个体,可能有的人习惯于被人不停地监督,他才会有效率与效果,那就需要管理上的技巧应用,似乎开始离题了,其实这一段要表达的意思是作为企业的领导人,要舍得放下部分责任,让你的下属你的员工去承担,并充分信任他们,放手让他们在职权范围内独立处理问题,创造性地开展工作。
但中国的教育似乎喜欢提倡领导者“日理万机”,“大事小事,亲力亲为”的形象,我们中小学的教科书上好象不乏诸如此类的形象,还非得要将领导操劳得大病一场,然后带病工作,好象这样更能体现领导的光辉形象以及丰功伟德,中国人喜欢歌颂苦难,好象没有苦难,就不会伟大一样,在我看来,这是非常奇怪的观念,有病就去医院看病,为什么还要带病工作?这是不爱惜自已,更不爱惜别人,我不相信带病工作的效率会很高,而且这样往往会因小失大。
新时代的领导应强调灵活授权的管理艺术,放下那些琐碎之事,让员工去处理,让群体的能力得到发挥,领导者只负责处理一些重大的紧急的涉及决策的事情,人的精力总是有限的,凡事亲力亲为,就连诸葛亮都会被累得吐血而死,何况是一般的管理者呢?
当然,领导者除了放下权力以外,还要能放得下名利,如果在公司里成天勾心斗角你争我夺,那样既得不到快乐,最终也管理不好企业。偶小时候在农村长大,经常陪父母种田挑柴,每每看到老爸放下沉甸甸的柴草,舒心地擦着汗水,并掏出烟袋,爽爽地抽几口,满面的快乐与幸福,休息几分钟后,又开始挑起沉甸甸的柴草满脸痛苦地翻山越岭,我体会得到,老爸放下柴草时的快乐,他的快乐是简单的,就如同贫困者的快乐也是很简单,有时仅仅是因为能鸲吃饱穿暖,有时仅仅是因为可以上学读书,有时仅仅是因为有路走有桥过,而不象亲爱的领导者们,要求那么高,不仅仅要求物质上,还要求精神上的,如果每个领导都能放下一些,那么快乐会多一些。
同宿舍的哥们打电话过来,邀请一起参加大学毕业十年的同学聚会,才猛然意识到毕业十年了,心里莫名地一动,似有所感,似有所悟,人生能有几个十年?十年了,我们做了些什么?我们在做什么?我们还要做什么?我们成功了吗?什么是成功?…….太多太多的问号,刹那间涌现心头,无法阻挡,无处躲藏,确确实实,那么多年了,无论在学校里、家里、公司里,还是在朋友圈里,我们总无法逃避这些问题,周围的人总喜欢将我们比来比去,于是我们感觉好累好压抑,我们好象都不是在为自已活着, 我们一而再再而三地彷徨、奋斗、思考……
毕业十年,我都是做软件技术的,从软件开发到软件管理到软件销售到软件企业管理,我的十年都与软件有关,甚至我的老婆也是搞软件测试的,我的整个世界都充满了软件,我的创业也是从软件开始,第一次失败了,第二次重来,还是软件,就是现在的FasterSoft,它在稳定发展着,我不知道它能走到什么地方,但我知道自已会一直坚持下去,因为除了软件,我一无所有,除了技术,我一无所长……
毕业十年,我是一个从农村里爬出来的幸运儿,现在我能用软件技术在这座城市里立足,我已经非常知足了,我从不苛求人们眼中的成功,相比我那些还在农村里垦田种地放牛养猪的小学同学们,我觉得自已在某些方面已经成功了,因此在我抚摸着键盘,敲出一行一行代码的时候,我的心里充满了喜悦与幸福,我深爱着这些代码,深爱着这些代码编译成的软件,并相信一句话:“落后并不可怕,可怕的是不再追赶,失败并不可怕,可怕的是不再奋起,别人睢不起自已并不可怕,可怕的是自已瞧不起自已”……
毕业十年,我需要总结一下,为了能留下点什么,也为了让未来的路更加好走。
一.做人第一,做事第二
这是阿蒙的一贯原则,实际上很多人也都知道这么一个原则,但最重要的是我们能否一直坚持下去。在这个物欲横流的社会,能真正做到这一点的人似乎越来越少了,有的人为了达到目标而不择手段,有的人压根不知如何做人,一切以自我为中心,自私自大自狂,我们有时不得不面对这种人,我们能做的是保护好自已,同时避免污染自已。另一方面,我也将这个原则应用到FasterSoft的管理当中,一个员工即使是技术再厉害,能力再强,业绩再突出,但如果在做人方面出了问题,比如勾心斗角,调拔离间,没有责任感,同事关系紧张,以自我为中心等,那么我也会痛下决心,将其清除。
二.孜孜不倦,坚持不懈
这一点讲的是一种精神,这种精神在我的很多BLOG文章里都反复提起,它对我而言非常地重要,我自认为自已从来都不是那种聪明伶俐的家伙,我所就读的大学院校也毫不起眼,也没有什么人看好过我的未来,我自已其实也不知道我未来能做什么以及做到什么程度,但我有两点是可以看得到并做得到的,即勤奋刻苦和持之以恒,我相信“勤能补拙”、“业精于勤”,“坚持就是胜利”,我将这些当作自已的座右铭,在艰难困苦、失败挫折时,我总坚信能冲破一切,我觉得只要拥有这两种精神,即使我无法达到人们认为的成功,我也无怨无悔,实际上从我本人的性格来说,我也极少奢望成功,也较少去想象成功的模样,我一直以来的追求就是寻找一份自已喜欢的工作,然后用“勤奋+坚持”将它做好,其他的就顺其自然。
三.目标明确,行动迅速
这些字眼有点象政府官员的腔调,如果你有兴趣,你可以去阅读一些政府官员的讲话稿,我想类似的字眼会很多,呵呵,并不是说这些字眼不好,而是它们太空洞,太虚假,你可以不停地说,但说后你做不做得到,那又是另一回事。在我们的一生中,我们在不同的阶段不同的场合会制定很多很多的目标,小学时的目标是考上重点初中,初中时的目标是考上重点高中,高中时的目标是考上重点大学,大学时的目标是毕业后在重点企业找个重点工作,工作后的目标就变得越来越多,比如想找个女朋友恋一下爱,想学好某一门技术,想升官发财,想创业,想结婚,想有个宝宝,想孝顺父母,想报效祖国……无可置疑,这是常人的目标与道路,我们中的大部分人可能都是这么想这么做的,天才偏才庸才毕竟是少数,更多的人都是平平淡淡的,更多的生活都是平平稳稳的,阿蒙也一样,毕业十年,再回想过往的这些目标,已经实现了70%左右,就非常地知足与快乐,我想最重要的一点就是行动迅速,目标的设定是简单与快速的,但关键是你的行动是否迅速与持续,我们不能做“语言的巨人行动的矮子”,我们需要围绕着我们的目标踏踏实实地奋斗到底,尽管达到目标的道路是多么地曲折与艰辛,尽管我们努力了但不一定成功,但我们永不放弃坚持到底。
四.虚心学习,厚道做人
每一个人都有自已的优点缺点,因此每一个人都可以成为别人学习的对象,谦虚是一种美德,无论面对什么样的人,我们都能保持一种虚心学习的态度,想方设法从对方那里学到好的东西,我一直以来都非常佩服我的母亲,她虽然目不识丁,但她在农村里可以将一头又瘦又弱的小猪养成一头又胖又壮的大猪,这是一件非常了不起的事情,在这期间她所付出的心血与所倾注的爱是漫长与巨大的,每到开学时,那头可爱的猪就成了我学费的重要来源,看着猪被卖掉或宰杀,母亲都很伤感地流泪,我也能感受到母亲对我的爱是远远超过对那头猪的爱,因此我会更加地努力学习……同时,从小到大,母亲的纯朴、善良、坚强、勤劳也深深地影响着我,我想一个人最大的财富并不是你现在拥有什么样的资产,而是你拥有什么样的性格与品质。
五.学会感恩,善待苦痛
感恩是一种生活态度,是一份铭心之谢。我们都应该学会“感恩”。当我们呱呱坠地来到这个世界,什么都还没来得及做的时候,他就已经开始享受前人赋予的一切成果了。生活中,我们每天享受阳光、蓝天、白云以及清洁的环境清新的空气,我们要感谢自然界,感谢那些辛勤工作的清洁工作者;工作中,我们每天坐在明窗净几的办公室里,敲打着键盘,编着代码,我们要感谢公司,感谢同事……所有这些,我们都应感谢。学会感恩,就会懂得尊重他人,发现自我价值。人生漫长,我们难免失败,难免挫折,有时甚至天灾人祸,面对苦痛,面对苦难,我们需要坚强不屈,需要克服困难,需要勇往直前,我们要从苦痛中奋起,从苦难中重生,我们会变得更加坚强更加不可战胜!
毕业十年,回忆过去的点点滴滴,无论喜怒哀乐酸甜苦辣,都是那么地令人感动,因为那是自已亲自走过的道路,辉煌也好,平淡也好,顺利也好,曲折也好,都是真实的、生动的、坚定的……
毕业十年,我们学会珍惜,珍惜亲情,珍惜友情,珍惜工作,珍惜现在所拥有的一切,我们学会了感恩,感恩社会,感恩父母,感恩老师,感恩公司,感恩所有与自已相关的人与事……
毕业十年,正值祖国多事之秋,一月的雪灾,三月的暴乱,四月的列车相撞,五月的地震,但我们看到了中国人的团结、坚强与友爱,看到了社会各界的互助与互爱,是的,面对灾难,我们的眼里充满了泪水,但透过泪光,我们看到了希望,中国人永远都不会被打倒,面对各种各样的艰难险阻,我们总能坚持不懈勇往直前。
毕业十年,我都是做软件技术的,从软件开发到软件管理到软件销售到软件企业管理,我的十年都与软件有关,甚至我的老婆也是搞软件测试的,我的整个世界都充满了软件,我的创业也是从软件开始,第一次失败了,第二次重来,还是软件,就是现在的FasterSoft,它在稳定发展着,我不知道它能走到什么地方,但我知道自已会一直坚持下去,因为除了软件,我一无所有,除了技术,我一无所长……
毕业十年,我是一个从农村里爬出来的幸运儿,现在我能用软件技术在这座城市里立足,我已经非常知足了,我从不苛求人们眼中的成功,相比我那些还在农村里垦田种地放牛养猪的小学同学们,我觉得自已在某些方面已经成功了,因此在我抚摸着键盘,敲出一行一行代码的时候,我的心里充满了喜悦与幸福,我深爱着这些代码,深爱着这些代码编译成的软件,并相信一句话:“落后并不可怕,可怕的是不再追赶,失败并不可怕,可怕的是不再奋起,别人睢不起自已并不可怕,可怕的是自已瞧不起自已”……
毕业十年,我需要总结一下,为了能留下点什么,也为了让未来的路更加好走。
一.做人第一,做事第二
这是阿蒙的一贯原则,实际上很多人也都知道这么一个原则,但最重要的是我们能否一直坚持下去。在这个物欲横流的社会,能真正做到这一点的人似乎越来越少了,有的人为了达到目标而不择手段,有的人压根不知如何做人,一切以自我为中心,自私自大自狂,我们有时不得不面对这种人,我们能做的是保护好自已,同时避免污染自已。另一方面,我也将这个原则应用到FasterSoft的管理当中,一个员工即使是技术再厉害,能力再强,业绩再突出,但如果在做人方面出了问题,比如勾心斗角,调拔离间,没有责任感,同事关系紧张,以自我为中心等,那么我也会痛下决心,将其清除。
二.孜孜不倦,坚持不懈
这一点讲的是一种精神,这种精神在我的很多BLOG文章里都反复提起,它对我而言非常地重要,我自认为自已从来都不是那种聪明伶俐的家伙,我所就读的大学院校也毫不起眼,也没有什么人看好过我的未来,我自已其实也不知道我未来能做什么以及做到什么程度,但我有两点是可以看得到并做得到的,即勤奋刻苦和持之以恒,我相信“勤能补拙”、“业精于勤”,“坚持就是胜利”,我将这些当作自已的座右铭,在艰难困苦、失败挫折时,我总坚信能冲破一切,我觉得只要拥有这两种精神,即使我无法达到人们认为的成功,我也无怨无悔,实际上从我本人的性格来说,我也极少奢望成功,也较少去想象成功的模样,我一直以来的追求就是寻找一份自已喜欢的工作,然后用“勤奋+坚持”将它做好,其他的就顺其自然。
三.目标明确,行动迅速
这些字眼有点象政府官员的腔调,如果你有兴趣,你可以去阅读一些政府官员的讲话稿,我想类似的字眼会很多,呵呵,并不是说这些字眼不好,而是它们太空洞,太虚假,你可以不停地说,但说后你做不做得到,那又是另一回事。在我们的一生中,我们在不同的阶段不同的场合会制定很多很多的目标,小学时的目标是考上重点初中,初中时的目标是考上重点高中,高中时的目标是考上重点大学,大学时的目标是毕业后在重点企业找个重点工作,工作后的目标就变得越来越多,比如想找个女朋友恋一下爱,想学好某一门技术,想升官发财,想创业,想结婚,想有个宝宝,想孝顺父母,想报效祖国……无可置疑,这是常人的目标与道路,我们中的大部分人可能都是这么想这么做的,天才偏才庸才毕竟是少数,更多的人都是平平淡淡的,更多的生活都是平平稳稳的,阿蒙也一样,毕业十年,再回想过往的这些目标,已经实现了70%左右,就非常地知足与快乐,我想最重要的一点就是行动迅速,目标的设定是简单与快速的,但关键是你的行动是否迅速与持续,我们不能做“语言的巨人行动的矮子”,我们需要围绕着我们的目标踏踏实实地奋斗到底,尽管达到目标的道路是多么地曲折与艰辛,尽管我们努力了但不一定成功,但我们永不放弃坚持到底。
四.虚心学习,厚道做人
每一个人都有自已的优点缺点,因此每一个人都可以成为别人学习的对象,谦虚是一种美德,无论面对什么样的人,我们都能保持一种虚心学习的态度,想方设法从对方那里学到好的东西,我一直以来都非常佩服我的母亲,她虽然目不识丁,但她在农村里可以将一头又瘦又弱的小猪养成一头又胖又壮的大猪,这是一件非常了不起的事情,在这期间她所付出的心血与所倾注的爱是漫长与巨大的,每到开学时,那头可爱的猪就成了我学费的重要来源,看着猪被卖掉或宰杀,母亲都很伤感地流泪,我也能感受到母亲对我的爱是远远超过对那头猪的爱,因此我会更加地努力学习……同时,从小到大,母亲的纯朴、善良、坚强、勤劳也深深地影响着我,我想一个人最大的财富并不是你现在拥有什么样的资产,而是你拥有什么样的性格与品质。
五.学会感恩,善待苦痛
感恩是一种生活态度,是一份铭心之谢。我们都应该学会“感恩”。当我们呱呱坠地来到这个世界,什么都还没来得及做的时候,他就已经开始享受前人赋予的一切成果了。生活中,我们每天享受阳光、蓝天、白云以及清洁的环境清新的空气,我们要感谢自然界,感谢那些辛勤工作的清洁工作者;工作中,我们每天坐在明窗净几的办公室里,敲打着键盘,编着代码,我们要感谢公司,感谢同事……所有这些,我们都应感谢。学会感恩,就会懂得尊重他人,发现自我价值。人生漫长,我们难免失败,难免挫折,有时甚至天灾人祸,面对苦痛,面对苦难,我们需要坚强不屈,需要克服困难,需要勇往直前,我们要从苦痛中奋起,从苦难中重生,我们会变得更加坚强更加不可战胜!
毕业十年,回忆过去的点点滴滴,无论喜怒哀乐酸甜苦辣,都是那么地令人感动,因为那是自已亲自走过的道路,辉煌也好,平淡也好,顺利也好,曲折也好,都是真实的、生动的、坚定的……
毕业十年,我们学会珍惜,珍惜亲情,珍惜友情,珍惜工作,珍惜现在所拥有的一切,我们学会了感恩,感恩社会,感恩父母,感恩老师,感恩公司,感恩所有与自已相关的人与事……
毕业十年,正值祖国多事之秋,一月的雪灾,三月的暴乱,四月的列车相撞,五月的地震,但我们看到了中国人的团结、坚强与友爱,看到了社会各界的互助与互爱,是的,面对灾难,我们的眼里充满了泪水,但透过泪光,我们看到了希望,中国人永远都不会被打倒,面对各种各样的艰难险阻,我们总能坚持不懈勇往直前。
姜宇 说:
http://www.ietf.org/rfc/rfc2109.txt
姜宇 说:
http://www.faqs.org/rfcs/rfc2965.html
姜宇 说:
http://blog.csdn.net/xymyeah/archive/2007/09/04/1772206.aspx
姜宇 说:
解释了2109和2965的区别
http://support.microsoft.com/kb/306070
IETF 是 **Internet Engineering Task Force** 的缩写,即互联网工程任务组。IETF 是一个开放的国际标准组织,主要负责制定和推广互联网的技术标准,特别是在协议、架构和其他网络相关技术方面。
还有一个叫做国际电工委员会I。那么iso和IEC,其实有一个共同合作的小组叫做iso IECSC27,那么这个小组发布我们的一系列信息安全标准。ISO组织的信息安全标准按ISO组织的标准都是以ISO为开头的。后面跟上它的标准号就是一个数字,比如说ISO9000。Iso9000这就是一个标准,这也是ido组织的一个特点,接下来。还有一个标准化组织,叫做internet工程任务组I ETF。那么他们所发布的标准叫做RFC文档?它们的标准号,一般是前面是RFC,后面跟上一个数字,代表你的这标准是。
在 IETF 中,Force 的确不是指军队,而是指一种协作的**“力量”或“组织”**。在英文中,"force" 可以表示一种具有行动力的团体或组织,例如“task force”通常指为了完成特定任务而组建的工作组或特别小组。
因此,Internet Engineering Task Force 可以理解为专注于互联网技术工程的工作小组或任务组织。
http://www.ietf.org/rfc/rfc2109.txt
姜宇 说:
http://www.faqs.org/rfcs/rfc2965.html
姜宇 说:
http://blog.csdn.net/xymyeah/archive/2007/09/04/1772206.aspx
姜宇 说:
解释了2109和2965的区别
http://support.microsoft.com/kb/306070
IETF 是 **Internet Engineering Task Force** 的缩写,即互联网工程任务组。IETF 是一个开放的国际标准组织,主要负责制定和推广互联网的技术标准,特别是在协议、架构和其他网络相关技术方面。
还有一个叫做国际电工委员会I。那么iso和IEC,其实有一个共同合作的小组叫做iso IECSC27,那么这个小组发布我们的一系列信息安全标准。ISO组织的信息安全标准按ISO组织的标准都是以ISO为开头的。后面跟上它的标准号就是一个数字,比如说ISO9000。Iso9000这就是一个标准,这也是ido组织的一个特点,接下来。还有一个标准化组织,叫做internet工程任务组I ETF。那么他们所发布的标准叫做RFC文档?它们的标准号,一般是前面是RFC,后面跟上一个数字,代表你的这标准是。
在 IETF 中,Force 的确不是指军队,而是指一种协作的**“力量”或“组织”**。在英文中,"force" 可以表示一种具有行动力的团体或组织,例如“task force”通常指为了完成特定任务而组建的工作组或特别小组。
因此,Internet Engineering Task Force 可以理解为专注于互联网技术工程的工作小组或任务组织。
教导主任抓住一帮子学生抽烟,不承认,于是找他们谈话。
“抽烟吗?”“不抽。”“那吃根薯条吧!”很顺手的做夹香烟状,被逮进去痛骂。
第二个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,很恭敬的接过来,“蘸点番茄酱吧!”,做弹烟灰状,又被痛骂。
第三个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱吃了,“给你同学带一根吧!”,很顺势夹在耳后,又露馅了。
第四个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,刚要吃,教导主任突然叫到“校长来了!”,学生急忙把薯条扔在地上,踩在脚底还拧几下,又被训斥。
第五个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,教导主任又叫到“校长来了!”,不慌不忙道“还没点火呢!”,自然结果也不太好。
第六个,“吃薯条吗?”“不会,谢谢”……
“抽烟吗?”“不抽。”“那吃根薯条吧!”很顺手的做夹香烟状,被逮进去痛骂。
第二个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,很恭敬的接过来,“蘸点番茄酱吧!”,做弹烟灰状,又被痛骂。
第三个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱吃了,“给你同学带一根吧!”,很顺势夹在耳后,又露馅了。
第四个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,刚要吃,教导主任突然叫到“校长来了!”,学生急忙把薯条扔在地上,踩在脚底还拧几下,又被训斥。
第五个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,教导主任又叫到“校长来了!”,不慌不忙道“还没点火呢!”,自然结果也不太好。
第六个,“吃薯条吗?”“不会,谢谢”……
d:
cd D:\Program Files\tomcat-5.0.24\bin
java -jar bootstrap.jar
把:Java\jdk1.6.0_02\lib\拷贝到: tomcat-5.0.24\common\lib\tools.jar
cd D:\Program Files\tomcat-5.0.24\bin
java -jar bootstrap.jar
把:Java\jdk1.6.0_02\lib\拷贝到: tomcat-5.0.24\common\lib\tools.jar
小七(249904837) 14:52:57
aaaa.php 中的一个链接<a href=ddd.php>链接</a>,进入到ddd.php页面,怎么才能在ddd.php中获取上级页面的路径呢,就是获取aaaa.php这个路径呢?
$lailu=$_SERVER['HTTP_REFERER'];//来路的完整网址;
aaaa.php 中的一个链接<a href=ddd.php>链接</a>,进入到ddd.php页面,怎么才能在ddd.php中获取上级页面的路径呢,就是获取aaaa.php这个路径呢?
$lailu=$_SERVER['HTTP_REFERER'];//来路的完整网址;
这是人类千年的追问。这个问题的答案从古到今连最有学问的饱学之士也无法讲得清楚。但每当大小灾难来临之际,人们一定会追问这个问题:祥林嫂在临死前一天向鲁迅追问这个问题;瞿秋白临死前在狱中自问自答的也是这个问题,并在赠给一位医生的照片中写道:“如果人有灵魂的话,何必要这个躯壳。但是如果没有的话,这个躯壳又有什么用处?”在圣作和经书中寻找这个问题的答案和指引,这些圣作和经书无不告诉我们灵魂是永恒的,精神的生命是永生的,否则我们此时的努力,我们努力追求的良好品行不是都白费了吗?
肉体的死亡并不是生命的终结,只是把生命的玫瑰从花盆中移栽到更广阔而肥沃的花园里,只是生命之鸟打破了鸟笼飞向了无垠的蓝天。
在“泰坦尼克”沉没这个大灾难发生之后,阿博都·巴哈对此灾难发表了如下的谈话:“我们人类生存的环境就像胎儿孕育在它的母体中一样,要为胎儿进入更为广阔的世界做准备。一开始,婴儿很难接受来到的新世界,他会因不愿离开那狭小的空间而嚎啕大哭,他不愿意离开自己熟悉的家,但自然的力量把他推到了这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那阴暗而狭窄的空间来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到了美味的食物,新世界充满了光明和美丽。这个婴儿好奇而兴奋地看着群山、草原、河流和繁星,呼吸着新鲜的空气,他赞美上苍把他从之前狭小的空间带到了自由的世界。
这个比喻也同样表达了短暂的物质世界和下一个世界的关系:人的灵魂从黑暗和惶恐中到达光明和永恒的天国。乍一看人们很难去接受死亡,而到达了新的环境,灵魂充满感激,因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤、痛苦和考验,生活在无尽的快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。”这就是对我们追问的答案。这次失去的亲人在天国等待着与我们团聚。
附:
1912年4月23号:
阿博都巴哈关于灾难的一次谈话
--泰坦尼克号沉没
Talk given by Abdu’l-Baha on the occasion of Titanic disaster
从今早到现在,我一直在演讲。出于爱,友谊和与你们在一起的愿望,我来到这里再一次和大家谈一谈。在过去的几天里,发生了一件可怕的灾难,这个灾难使得每一个心灵悲伤,每一个灵魂哀痛。我指的是泰坦尼克号的沉没,许多生命陨落,许多美丽的灵魂离开了这个世界。尽管这样的灾难令人惋惜,但我们应该认识到,每一件事的发生,背后都有一个智慧,任何事情的发生都有其原因,这里隐藏着奥秘。然而无论奥秘何在,这都是令人悲痛的事件,一个让许多人流泪,许多灵魂困扰的事件,我为此深感震动。有一些遇难者曾和我一起同乘cedric号到达那布勒斯后,又转乘泰坦尼克号,当想起他们,我十分悲痛。然而,当我从另一个角度看待这场灾难,认识到天国的世界是无限的,我又感到欣慰。尽管这些遇难者离开了这个世界,但是他们有机会在下一个世界中发展。耶稣说过,“在圣父的圣殿里,有很多殿堂”。他们从短暂的世界被召唤到永恒的世界,他们放弃了物质的存在,进入了精神世界的大门。他们放弃了物质世界的享乐和舒适,得到永恒世界真正的快乐与幸福---他们提前到达了上帝的王国。上帝的恩惠是无限的,我们的责任是在祈祷中缅怀这些逝去的灵魂,并祈求让他们不断接近上帝。
我们人类生存的环境,就象胎儿在孕育他的母体中一样,要为胎儿进入更为宽广的世界做准备。一开始,婴儿很难接受来到新的世界,他会因不愿离开那狭小的空间而嚎啕大哭。他不愿意离开自己熟悉的“家”,但自然的力量把他推到这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那个阴暗而狭窄的空间,来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到美味的食物。新的世界充满了光明与美丽,这个婴儿好奇而兴奋地看着群山,草原,河流和繁星,呼吸着清新的空气,他赞美上帝把他从之前的狭小空间带到新的自由的世界。这个比喻也表达了短暂的物质世界和下一个世界的关系,人类灵魂从黑暗和惶恐中,到达光明和永恒的天国。乍一看,人们很难去接受死亡,而到达了新的环境时,灵魂充满感激。因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤,痛苦,考验,生活在无尽地快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。因此,那些在泰坦尼克上遇难的灵魂,完成了他们在尘世的旅途,提前进入了更美好的世界。他们从黑暗走向光明,这是唯一能够让生者感到宽慰的。
更重要的是,这些灾难的背后有更深层的原因。它们的目的是教育人类。我们生活在一个极端依赖物质条件的时代,人们想象着一只庞大的巨轮,完美的机械,高超的舵手能带来安全。但灾难告诉我们,上帝才是真正的保护者。如果上帝的意愿是保护我们,一个小小的舢板,也可以逃离灾难。相反,一艘完美的巨轮和优秀的舵手也无法躲避灾难。灾难的目的是教导人类转向上帝---唯一的保护者。人类的灵魂将依赖于他的保护,而得到真正的安全。这些灾难的发生将使人们增强对上帝的信仰,当我们悲伤和痛苦时,要将心转向上帝的天国。为逝者祈祷,祈求他们得到上帝的恩惠。尽管他们离开了这个物质世界,但他们在上天的王国中享受到了无尽的快乐。
大家不要错误的认为,我的这些话,意味着我们在生活中可以不尽心尽力。相反,上帝赋予了人类智慧来保护自己。因此,我们需要充分地利用科学和技术的成果。我们的工作要富有目的性,并深思熟虑。建造最好的船只,培养最优秀的舵手,但是,他应该依赖上帝并相信上帝是唯一的保护者。有了上帝的保护,任何事情都不会影响我们的安全,没有上帝的保护,任何预防和准备都将无济于事。
肉体的死亡并不是生命的终结,只是把生命的玫瑰从花盆中移栽到更广阔而肥沃的花园里,只是生命之鸟打破了鸟笼飞向了无垠的蓝天。
在“泰坦尼克”沉没这个大灾难发生之后,阿博都·巴哈对此灾难发表了如下的谈话:“我们人类生存的环境就像胎儿孕育在它的母体中一样,要为胎儿进入更为广阔的世界做准备。一开始,婴儿很难接受来到的新世界,他会因不愿离开那狭小的空间而嚎啕大哭,他不愿意离开自己熟悉的家,但自然的力量把他推到了这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那阴暗而狭窄的空间来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到了美味的食物,新世界充满了光明和美丽。这个婴儿好奇而兴奋地看着群山、草原、河流和繁星,呼吸着新鲜的空气,他赞美上苍把他从之前狭小的空间带到了自由的世界。
这个比喻也同样表达了短暂的物质世界和下一个世界的关系:人的灵魂从黑暗和惶恐中到达光明和永恒的天国。乍一看人们很难去接受死亡,而到达了新的环境,灵魂充满感激,因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤、痛苦和考验,生活在无尽的快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。”这就是对我们追问的答案。这次失去的亲人在天国等待着与我们团聚。
附:
1912年4月23号:
阿博都巴哈关于灾难的一次谈话
--泰坦尼克号沉没
Talk given by Abdu’l-Baha on the occasion of Titanic disaster
从今早到现在,我一直在演讲。出于爱,友谊和与你们在一起的愿望,我来到这里再一次和大家谈一谈。在过去的几天里,发生了一件可怕的灾难,这个灾难使得每一个心灵悲伤,每一个灵魂哀痛。我指的是泰坦尼克号的沉没,许多生命陨落,许多美丽的灵魂离开了这个世界。尽管这样的灾难令人惋惜,但我们应该认识到,每一件事的发生,背后都有一个智慧,任何事情的发生都有其原因,这里隐藏着奥秘。然而无论奥秘何在,这都是令人悲痛的事件,一个让许多人流泪,许多灵魂困扰的事件,我为此深感震动。有一些遇难者曾和我一起同乘cedric号到达那布勒斯后,又转乘泰坦尼克号,当想起他们,我十分悲痛。然而,当我从另一个角度看待这场灾难,认识到天国的世界是无限的,我又感到欣慰。尽管这些遇难者离开了这个世界,但是他们有机会在下一个世界中发展。耶稣说过,“在圣父的圣殿里,有很多殿堂”。他们从短暂的世界被召唤到永恒的世界,他们放弃了物质的存在,进入了精神世界的大门。他们放弃了物质世界的享乐和舒适,得到永恒世界真正的快乐与幸福---他们提前到达了上帝的王国。上帝的恩惠是无限的,我们的责任是在祈祷中缅怀这些逝去的灵魂,并祈求让他们不断接近上帝。
我们人类生存的环境,就象胎儿在孕育他的母体中一样,要为胎儿进入更为宽广的世界做准备。一开始,婴儿很难接受来到新的世界,他会因不愿离开那狭小的空间而嚎啕大哭。他不愿意离开自己熟悉的“家”,但自然的力量把他推到这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那个阴暗而狭窄的空间,来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到美味的食物。新的世界充满了光明与美丽,这个婴儿好奇而兴奋地看着群山,草原,河流和繁星,呼吸着清新的空气,他赞美上帝把他从之前的狭小空间带到新的自由的世界。这个比喻也表达了短暂的物质世界和下一个世界的关系,人类灵魂从黑暗和惶恐中,到达光明和永恒的天国。乍一看,人们很难去接受死亡,而到达了新的环境时,灵魂充满感激。因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤,痛苦,考验,生活在无尽地快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。因此,那些在泰坦尼克上遇难的灵魂,完成了他们在尘世的旅途,提前进入了更美好的世界。他们从黑暗走向光明,这是唯一能够让生者感到宽慰的。
更重要的是,这些灾难的背后有更深层的原因。它们的目的是教育人类。我们生活在一个极端依赖物质条件的时代,人们想象着一只庞大的巨轮,完美的机械,高超的舵手能带来安全。但灾难告诉我们,上帝才是真正的保护者。如果上帝的意愿是保护我们,一个小小的舢板,也可以逃离灾难。相反,一艘完美的巨轮和优秀的舵手也无法躲避灾难。灾难的目的是教导人类转向上帝---唯一的保护者。人类的灵魂将依赖于他的保护,而得到真正的安全。这些灾难的发生将使人们增强对上帝的信仰,当我们悲伤和痛苦时,要将心转向上帝的天国。为逝者祈祷,祈求他们得到上帝的恩惠。尽管他们离开了这个物质世界,但他们在上天的王国中享受到了无尽的快乐。
大家不要错误的认为,我的这些话,意味着我们在生活中可以不尽心尽力。相反,上帝赋予了人类智慧来保护自己。因此,我们需要充分地利用科学和技术的成果。我们的工作要富有目的性,并深思熟虑。建造最好的船只,培养最优秀的舵手,但是,他应该依赖上帝并相信上帝是唯一的保护者。有了上帝的保护,任何事情都不会影响我们的安全,没有上帝的保护,任何预防和准备都将无济于事。
我只是一普通的蜘蛛,一只环宇中既丑陋又卑微的生物,而我又是一只不平凡的蜘蛛,因为我把蛛网结在了西天雷音寺的廊檐下。每日里我听的是僧人们念经的阵阵木鱼与片片梵音;亨用的是普天下的善男信女的香火供奉。慢慢地,我也开始有了灵性,我也能悟出一些堪为艰深的法理。终于,有一天,佛感觉到了我的存在和我的长进。佛问我:“蛛儿,普天之下汝以何物为最贵?”
我慎答:“余窃以为天下万物皆不足为贵,贵者只两件一曰已失去,一曰得不到。”我为我的答案深感自豪。
佛却说:“蛛儿,你错了。”
我错了吗?真的错了吗?
佛要出去云游了,佛走之前交待我,让我好好的参悟,他回来仍是要问我的。
也不知是过了多久,好像是一千年罢,佛回来了。一见我,佛就问了我:“一千年了,你想的怎么样了?”
我不语。我不知我上次的答案有何不妥。佛笑了笑便不再理我了,我想佛是恼我了。于是,我便仍在那里忙着吐丝织网,闲暇时学习佛理。
转眼又是一个千年。
有一天,观音大士从我身边经过,可能是行得急了些,一滴甘露从她手中的杨枝叶上落了下来,不偏不倚就停在了我的蛛网之上。甘露的宿命是化雨,去滋润人间万物,我的网只是它作片刻逗留的地方。它是那么的晶莹夺目,它的存在只是为了让我感到自卑。我不去与理会它的存在,因为它最终是会自动消失在我的生活中的。又是一个漫长的千年,它始终没有走,只是这么静静地陪伴着我,无声又无息。终于,有一天,一阵长风,从我身边刮过,把它带走了。它走了以后我开始明白原来它来之前我所拥有的除了寂寞以外别无其它,而它走了,留给我的只是无尽的孤独。生命中有很多东西也许终我一生我也无法拥有,然没有就没有,我也不会为此而感到有任何的遗憾,遗憾的是有一些东西拥有过却终又失去。我越来越无法平复那一种被称作孤独的感觉。尽管我每天都让自己很忙,可是孤独就像是毒药,贯穿我的肢体百骸,让我倍受熬煎。终于惊动了佛。佛说:“蛛儿,这是你命中注定的劫数,去吧,红尘之中自有你另一翻气象。”
我沉沉的睡去,也不知过了多久,耳边响起噪杂的声音,有人在打我,我忍不住痛,张开了嘴,我有了我作为蜘蛛时所没有的声音和眼泪。耳边响起的是我的哭声洪亮而悦耳。就这样,我成了林太师的小千金-林珠儿。是的,是那份我无法与之抗衡的孤独将我推落于这万丈红尘,也许会找回一些我想要的东西,也许会万劫不复,谁又知道呢?
我想,佛是偏爱我的,否则他不会让我仍保有我作为蜘蛛的记忆。我要找我的甘露,那个默默守护了我一千年的甘露,我要他永远陪在我身边将我内心所有的孤独与寂寞杀个灰飞烟灭。
我的父亲是朝庭的太师,他与先皇是连襟,也就是说我的母亲与太后是嫡亲的姐妹。我的兄长与姐姐也都是富贵中人,我们家出了两个驸马,三个王妃。佛是顾念我的,他让我生在这么一个钟鸣鼎食之家,让我得到了这个家里所有人的爱。我长到了十六岁,我是那么迫切的想要找到甘露,我怕我会像上次那样,在不知不觉中错过。
命运终于还是将我与甘露拉在了一起。太后五十华诞,我获准与母亲一同出席皇家寿宴。这个宴会比我想像中的要大的多。因为是太后大寿,所以不仅是皇家的人,所有一品大员的家眷们也都来了。皇上还请了新科状元前来吟诗作赋。我想,我的出现让在场所有的人惊艳了,许多人的眼光都集中在了我的身上,这让我感到恐惧。是的,我想我是美丽的,可这份美丽是为了甘露才展现的。我的眼光在人群中寻找,我想找到甘露,家规甚严,我几乎足不出户,所以我要抓住机会。我的眼睛终被一双明眸所吸引。是的,没错,就是他,我快不能呼吸了,当那个让我在雷音寺里不得安生的明亮又一次呈现在我的面前时,就是他,新科状元——甘露,连名子也没改。他在不停的忙,忙着为太后写诗,他的身边有好多女子,她们都是公卿王候之女,她们的眼中都流露对他的向往。我不吃醋,我乐意让我的爱人成为众人追逐的对像,我自信,只有我才是他这一世宿命安排的妻子。我是那么的优秀,我坐在那里只是静静注视着他,而他也发现了我,他的眼神告诉我,我的存在已深深震撼了他。我俩目光交会时他对我笑笑,接着便又埋头写诗。公公将他写的诗一首一首呈给皇上和太后,由两位品评后让宫女就着曲牌唱。我听到了一首:仙姬何事离瑶台,三步一徘徊。
只因人间王母寿,天上人间舞蹁跹。
我知道,那一定是写给我的。我正沉浸在自已编织的美梦中幻想着,太后的内侍柴公公走到我身边带我去见太后。自我懂事起就没见过太后,她老人家对我似颇有好感,慈爱地轻抚我的手,一直在眯着眼笑。她还把她的小儿子湘王爷介绍给我,湘和我是同年同月同日生的,湘一直在偷看我,他是那么的羞涩而不善表达,尽管他贵为小王爷,受到宫内上上下下的宠爱。华宴是何时结束的,我已不记得了。我只知道我喝了很多的酒,有点醉了。我好高兴,因为我找到了他——甘露,他就是我这一世的快乐和生命,十六年的生命,直至见到他的那天才算有意义。
我毫不隐瞒地告诉父母我对甘露的感情。如我所愿他们并不反对,父母是爱我的,他们甚至见不得我受到哪怕是一点点的委屈,我想做的事,只要不致太荒谬,他们总是会同意的。
第二次遇见甘露是在京城郊外的白马寺,母亲是陪我一起去乞求我的好姻缘的。刚一入寺主持方丈便告知甘状元正陪太夫人在上香,隧引我们相见。母亲陪着甘太夫人闲聊,她们支开了我和他。我知道,母亲一定是想和甘太夫人说我与他的事。我的心底泛起了一阵阵的愉悦夹杂着几丝莫名的兴奋与羞涩。他陪着我在寺内放足,后面是一大群的仆僮。他就近在咫尺,而我几乎窒息。他是那么的彬彬有礼,言必称小姐,我有些恼他道:“叫我蛛儿罢!蜘蛛的蛛,我叫你甘露哥哥行吗?”他问:“这样不妥吧?”我尔莞一笑:“你以前不是一直这么叫我的吗?”他被我弄糊涂了。“你以前是在心里这么叫我的,那时我是雷音寺廊檐下结网的蜘蛛,而你是不慎滴落于蛛网上的观音大士杨枝叶上的甘露,是你陪了我整整一千年,后来你跟一阵风走了,我便开始了孤独,孤独让我坠入红尘,中断修行也让我再一次碰到了你。”我只是想让他找回作为甘露的记忆,这样我就可以听他亲口告诉我,那一千年的陪伴他又是怀着什么样的心情。他的表现让我失望。他在笑,那样子好像是一位兄长在听小妹妹梦里的呓语。我听到“碰”的一声,那是我心碎的声音,他是不是已经不记得我了?抑或是甘露根本是没有心的?我在心中向神明祈求。“你的想法太浪漫了,有这等才情,你的诗一定写得不错。”我开始绝望了,究竟是哪里出了错?我入红尘为的是找回我的甘露,而眼前人分明就是甘露,可是他却没有了甘露的记忆。他似有意捉弄我,取笑说:“你说你以前是一只蜘蛛,可你长得是那么美丽,一点儿也不像嘛?你比它好看,何止上万倍。”这本是名恭维的话,却让听这话的我感到痛。我开始认命了,我真傻,甘露的命运是去泽被苍生,我的网终不是他真正的归宿。我慢慢离开他,带着绝望的悲怆道:“它日吐情丝,夜织情网,终致深陷,难以自拔,尔等须眉却嫌它丑陋而取笑于它,想它不过只是痴情些罢了。”甘露啊!甘露!你终究是无心的,我想。我终于走到了回廊的尽头。我抽了一支上上签,这是对我莫大的讽刺。方丈亲自为我解的签,还说我三月之内必有红鸾禧,还说这禧会应在第二年的春天。母亲还在高兴,而我已经意识到了,不会有什么禧了。
三个月后宫里来了人,一家老小摆起了香案跪听圣旨。冗长、雅致而又晦涩的措词无非只是表达一个内容:太后把我许给了她的小儿子湘王爷,明年春天大婚。那时我便是湘王妃了。这无异于是一声霹雳,如果说对甘露的失望是一把利刃,深深扎进了我的心里,太后的赐婚就好比是在我的伤口上洒了一把砒霜,我情何以堪?等待我的也许只有一个结果——伤重不治,毒发身亡。我神思恍惚,小婢搀着我,我浑身冷汗淋漓,摇摇欲坠。只听见依稀是父亲的声音他欲挽留公公用膳。公公笑着拒绝了:“太师,您太客气了。我这不还得去甘状元那里宣旨!对了,您老还不知道吧!洛王爷的小郡主长风小姐早就看上状元了,央太后做主。太后说了这事得问状元自个儿,没想到状元一见长风郡主就应了太后。这不,今儿就去宣旨下月完婚。”我再也受不了了,公公还没走远,我的整个人就倒了下来。我只依稀听见众人手忙脚乱的忙着,叫着,乱作一团。那情形就如同我出世时。我想我快要走了,要回雷音寺去了。甘露最终还是跟着长风走了,在这世上我已找不到继续活着的理由了。走吧!别再痴缠下去了,不属于我的终究不属于我了!我对自已说我开始做梦,梦里佛对说我:“傻蛛儿,你又何必对甘露耿耿于怀呢?甘露陪了你一千年,那是因为它要等长风,它只有与长风在一起才能遨游环宇,润泽苍生,他的存在才有意义。而于你他是无心的。”我求佛:“我知道我错了,我不想在这里呆下去了,引我回去吧!我还是愿意做廊檐下的蜘蛛。”佛想了想道:“你若执意要回来,我也不勉强,只是你尘缘还未了。也罢,给你三日之期,三日之后我便来渡你。”
樵楼更鼓打了三下,我醒来了。令我惊诧的是,湘正在冲我笑。羞涩的笑容难掩满面的疲惫。他只轻声讲:“对不起,联姻之事应该及早告诉你的。”他的笑容让我心疼,我在心里默默的向他道歉,我不能成为他的王妃了。丫头们见我醒了忙说:“小姐,你可把湘王还有我们大家吓坏了。你可知道为了你湘王一个人不吃不喝守了你整整三天三天夜。小姐,快点好起来罢!”说着竟哭了起来。我心中竟又有些不舍了,离开这里所有的人,他们一定会伤心的。还有生我的父母,他们白发人送黑发人又将会是何等的伤心?然我已没有勇气再苟活在这人世了,我的生命是为了甘露,现在既然没有甘露那就连命也不要了罢。湘仿佛是看穿了我的心事道:“忘记甘露好吗?让我来代替他给予你这一世的幸福吧!知道吗?蛛儿!我可是等了你有三千年了。那次在母后的寿宴上我已经把你认出来了,你是那么的聪慧稳重,一如当年你在雷音廊檐下的绝世风范。我便是那默默等了你三千年的雷音菩提树下的一枚小草。我日日仰望你,想让你看到我的存在,而你是那么的高高在上,从来就没有发现那个渺小的我,可是我不放弃,总有一天你会知道有这么一个小小的我在默默地等你。可是在你的心里自始自终就只有甘露一个。好不容易甘露被长风带走了,而你却仍放不下,于是佛让你来一遭红尘俗世,我恳求佛让我与你同行,佛答应了。佛说我们是有缘的,所以我信了,好不容易甘露走出了你的生活好不容易我说服了母后让皇兄颁旨,可是你却还是放不下甘露。……”他说不下去了。我开始感到震憾,三千年的等待,我不曾给过他半点承诺,他却也不曾有过一丝一毫的抱怨。“蛛儿,请不要辜负我对你的一片心,留下来陪我一起朝朝暮暮不好么?”他握住了我的手,而我的心在抖,我原本是以为我的心已经死了的。
三天很快就到了,我本应顺了佛的指点义无反顾的将我的元神抽离我的肉体的。可是我的耳朵却分明听到一阵悲怆的哭声。“蛛儿,你还是不要和我在一起是吗?这没关系,只求你别走。我可以不娶你,只要你好好的活着,开开心心的,让我天天看见你就行了。别走好么?”不知为什么我犹豫了,好像是被什么所感动。他抱着我的身体哭得肝肠寸断。就是铁石人儿也会落泪。我的父母一边哭一边还在劝慰他,接着他似想到了什么似的,抽出了佩剑,嘴里喃喃自语:“好吧!蛛儿,你既执意要回雷音,我便追随于你,无论你魂魄去向何方,哪怕是上穷碧落,下到黄泉,还是天涯海角,湘,我一定奉陪。”说着便要举剑自刎。佛说:“蛛儿啊!湘可是等了你三千年,你是放不下他的吧!回去罢!趁现在你还走得不太远。你这个样子,我既是渡你回雷音,终究也是枉然的。”我的元神又重新进入了我的身体,我只是轻轻动了唇:“湘,不要,我回来了。我心甘情愿做你的王妃,做你一生一世的王妃,来酬你三千年的等待,不好么?”只听“哐当”他手中的剑落地了。他紧紧抱住了我,我们相拥而泣,还有我的父母。是的我要是知道我的离去会让那么多爱我的人痛不欲生我是不会这般任性地想要走的。
我终于明白了,我们曾经失去的和我们所得不到的东西都不足为贵,紧紧握在手心里的才是最珍贵的。我曾求甘露而不得,而今明白,甘露的珍贵是对长风郡主而言的。他曾陪了我一千年这就够了。现在我应该珍惜的是湘予我的爱!
按:爱我的人和我爱的人,一个永恒的主题:当今的我们是如何选择的?
我以为人世间最疼苦的事应该是:他就在我身边而我却不知道他爱我,然又有多少爱是可以重来的呢?珍惜现在罢!珍惜每一份别人给予你的爱吧!要明白握在手里的东西才叫幸福。
我慎答:“余窃以为天下万物皆不足为贵,贵者只两件一曰已失去,一曰得不到。”我为我的答案深感自豪。
佛却说:“蛛儿,你错了。”
我错了吗?真的错了吗?
佛要出去云游了,佛走之前交待我,让我好好的参悟,他回来仍是要问我的。
也不知是过了多久,好像是一千年罢,佛回来了。一见我,佛就问了我:“一千年了,你想的怎么样了?”
我不语。我不知我上次的答案有何不妥。佛笑了笑便不再理我了,我想佛是恼我了。于是,我便仍在那里忙着吐丝织网,闲暇时学习佛理。
转眼又是一个千年。
有一天,观音大士从我身边经过,可能是行得急了些,一滴甘露从她手中的杨枝叶上落了下来,不偏不倚就停在了我的蛛网之上。甘露的宿命是化雨,去滋润人间万物,我的网只是它作片刻逗留的地方。它是那么的晶莹夺目,它的存在只是为了让我感到自卑。我不去与理会它的存在,因为它最终是会自动消失在我的生活中的。又是一个漫长的千年,它始终没有走,只是这么静静地陪伴着我,无声又无息。终于,有一天,一阵长风,从我身边刮过,把它带走了。它走了以后我开始明白原来它来之前我所拥有的除了寂寞以外别无其它,而它走了,留给我的只是无尽的孤独。生命中有很多东西也许终我一生我也无法拥有,然没有就没有,我也不会为此而感到有任何的遗憾,遗憾的是有一些东西拥有过却终又失去。我越来越无法平复那一种被称作孤独的感觉。尽管我每天都让自己很忙,可是孤独就像是毒药,贯穿我的肢体百骸,让我倍受熬煎。终于惊动了佛。佛说:“蛛儿,这是你命中注定的劫数,去吧,红尘之中自有你另一翻气象。”
我沉沉的睡去,也不知过了多久,耳边响起噪杂的声音,有人在打我,我忍不住痛,张开了嘴,我有了我作为蜘蛛时所没有的声音和眼泪。耳边响起的是我的哭声洪亮而悦耳。就这样,我成了林太师的小千金-林珠儿。是的,是那份我无法与之抗衡的孤独将我推落于这万丈红尘,也许会找回一些我想要的东西,也许会万劫不复,谁又知道呢?
我想,佛是偏爱我的,否则他不会让我仍保有我作为蜘蛛的记忆。我要找我的甘露,那个默默守护了我一千年的甘露,我要他永远陪在我身边将我内心所有的孤独与寂寞杀个灰飞烟灭。
我的父亲是朝庭的太师,他与先皇是连襟,也就是说我的母亲与太后是嫡亲的姐妹。我的兄长与姐姐也都是富贵中人,我们家出了两个驸马,三个王妃。佛是顾念我的,他让我生在这么一个钟鸣鼎食之家,让我得到了这个家里所有人的爱。我长到了十六岁,我是那么迫切的想要找到甘露,我怕我会像上次那样,在不知不觉中错过。
命运终于还是将我与甘露拉在了一起。太后五十华诞,我获准与母亲一同出席皇家寿宴。这个宴会比我想像中的要大的多。因为是太后大寿,所以不仅是皇家的人,所有一品大员的家眷们也都来了。皇上还请了新科状元前来吟诗作赋。我想,我的出现让在场所有的人惊艳了,许多人的眼光都集中在了我的身上,这让我感到恐惧。是的,我想我是美丽的,可这份美丽是为了甘露才展现的。我的眼光在人群中寻找,我想找到甘露,家规甚严,我几乎足不出户,所以我要抓住机会。我的眼睛终被一双明眸所吸引。是的,没错,就是他,我快不能呼吸了,当那个让我在雷音寺里不得安生的明亮又一次呈现在我的面前时,就是他,新科状元——甘露,连名子也没改。他在不停的忙,忙着为太后写诗,他的身边有好多女子,她们都是公卿王候之女,她们的眼中都流露对他的向往。我不吃醋,我乐意让我的爱人成为众人追逐的对像,我自信,只有我才是他这一世宿命安排的妻子。我是那么的优秀,我坐在那里只是静静注视着他,而他也发现了我,他的眼神告诉我,我的存在已深深震撼了他。我俩目光交会时他对我笑笑,接着便又埋头写诗。公公将他写的诗一首一首呈给皇上和太后,由两位品评后让宫女就着曲牌唱。我听到了一首:仙姬何事离瑶台,三步一徘徊。
只因人间王母寿,天上人间舞蹁跹。
我知道,那一定是写给我的。我正沉浸在自已编织的美梦中幻想着,太后的内侍柴公公走到我身边带我去见太后。自我懂事起就没见过太后,她老人家对我似颇有好感,慈爱地轻抚我的手,一直在眯着眼笑。她还把她的小儿子湘王爷介绍给我,湘和我是同年同月同日生的,湘一直在偷看我,他是那么的羞涩而不善表达,尽管他贵为小王爷,受到宫内上上下下的宠爱。华宴是何时结束的,我已不记得了。我只知道我喝了很多的酒,有点醉了。我好高兴,因为我找到了他——甘露,他就是我这一世的快乐和生命,十六年的生命,直至见到他的那天才算有意义。
我毫不隐瞒地告诉父母我对甘露的感情。如我所愿他们并不反对,父母是爱我的,他们甚至见不得我受到哪怕是一点点的委屈,我想做的事,只要不致太荒谬,他们总是会同意的。
第二次遇见甘露是在京城郊外的白马寺,母亲是陪我一起去乞求我的好姻缘的。刚一入寺主持方丈便告知甘状元正陪太夫人在上香,隧引我们相见。母亲陪着甘太夫人闲聊,她们支开了我和他。我知道,母亲一定是想和甘太夫人说我与他的事。我的心底泛起了一阵阵的愉悦夹杂着几丝莫名的兴奋与羞涩。他陪着我在寺内放足,后面是一大群的仆僮。他就近在咫尺,而我几乎窒息。他是那么的彬彬有礼,言必称小姐,我有些恼他道:“叫我蛛儿罢!蜘蛛的蛛,我叫你甘露哥哥行吗?”他问:“这样不妥吧?”我尔莞一笑:“你以前不是一直这么叫我的吗?”他被我弄糊涂了。“你以前是在心里这么叫我的,那时我是雷音寺廊檐下结网的蜘蛛,而你是不慎滴落于蛛网上的观音大士杨枝叶上的甘露,是你陪了我整整一千年,后来你跟一阵风走了,我便开始了孤独,孤独让我坠入红尘,中断修行也让我再一次碰到了你。”我只是想让他找回作为甘露的记忆,这样我就可以听他亲口告诉我,那一千年的陪伴他又是怀着什么样的心情。他的表现让我失望。他在笑,那样子好像是一位兄长在听小妹妹梦里的呓语。我听到“碰”的一声,那是我心碎的声音,他是不是已经不记得我了?抑或是甘露根本是没有心的?我在心中向神明祈求。“你的想法太浪漫了,有这等才情,你的诗一定写得不错。”我开始绝望了,究竟是哪里出了错?我入红尘为的是找回我的甘露,而眼前人分明就是甘露,可是他却没有了甘露的记忆。他似有意捉弄我,取笑说:“你说你以前是一只蜘蛛,可你长得是那么美丽,一点儿也不像嘛?你比它好看,何止上万倍。”这本是名恭维的话,却让听这话的我感到痛。我开始认命了,我真傻,甘露的命运是去泽被苍生,我的网终不是他真正的归宿。我慢慢离开他,带着绝望的悲怆道:“它日吐情丝,夜织情网,终致深陷,难以自拔,尔等须眉却嫌它丑陋而取笑于它,想它不过只是痴情些罢了。”甘露啊!甘露!你终究是无心的,我想。我终于走到了回廊的尽头。我抽了一支上上签,这是对我莫大的讽刺。方丈亲自为我解的签,还说我三月之内必有红鸾禧,还说这禧会应在第二年的春天。母亲还在高兴,而我已经意识到了,不会有什么禧了。
三个月后宫里来了人,一家老小摆起了香案跪听圣旨。冗长、雅致而又晦涩的措词无非只是表达一个内容:太后把我许给了她的小儿子湘王爷,明年春天大婚。那时我便是湘王妃了。这无异于是一声霹雳,如果说对甘露的失望是一把利刃,深深扎进了我的心里,太后的赐婚就好比是在我的伤口上洒了一把砒霜,我情何以堪?等待我的也许只有一个结果——伤重不治,毒发身亡。我神思恍惚,小婢搀着我,我浑身冷汗淋漓,摇摇欲坠。只听见依稀是父亲的声音他欲挽留公公用膳。公公笑着拒绝了:“太师,您太客气了。我这不还得去甘状元那里宣旨!对了,您老还不知道吧!洛王爷的小郡主长风小姐早就看上状元了,央太后做主。太后说了这事得问状元自个儿,没想到状元一见长风郡主就应了太后。这不,今儿就去宣旨下月完婚。”我再也受不了了,公公还没走远,我的整个人就倒了下来。我只依稀听见众人手忙脚乱的忙着,叫着,乱作一团。那情形就如同我出世时。我想我快要走了,要回雷音寺去了。甘露最终还是跟着长风走了,在这世上我已找不到继续活着的理由了。走吧!别再痴缠下去了,不属于我的终究不属于我了!我对自已说我开始做梦,梦里佛对说我:“傻蛛儿,你又何必对甘露耿耿于怀呢?甘露陪了你一千年,那是因为它要等长风,它只有与长风在一起才能遨游环宇,润泽苍生,他的存在才有意义。而于你他是无心的。”我求佛:“我知道我错了,我不想在这里呆下去了,引我回去吧!我还是愿意做廊檐下的蜘蛛。”佛想了想道:“你若执意要回来,我也不勉强,只是你尘缘还未了。也罢,给你三日之期,三日之后我便来渡你。”
樵楼更鼓打了三下,我醒来了。令我惊诧的是,湘正在冲我笑。羞涩的笑容难掩满面的疲惫。他只轻声讲:“对不起,联姻之事应该及早告诉你的。”他的笑容让我心疼,我在心里默默的向他道歉,我不能成为他的王妃了。丫头们见我醒了忙说:“小姐,你可把湘王还有我们大家吓坏了。你可知道为了你湘王一个人不吃不喝守了你整整三天三天夜。小姐,快点好起来罢!”说着竟哭了起来。我心中竟又有些不舍了,离开这里所有的人,他们一定会伤心的。还有生我的父母,他们白发人送黑发人又将会是何等的伤心?然我已没有勇气再苟活在这人世了,我的生命是为了甘露,现在既然没有甘露那就连命也不要了罢。湘仿佛是看穿了我的心事道:“忘记甘露好吗?让我来代替他给予你这一世的幸福吧!知道吗?蛛儿!我可是等了你有三千年了。那次在母后的寿宴上我已经把你认出来了,你是那么的聪慧稳重,一如当年你在雷音廊檐下的绝世风范。我便是那默默等了你三千年的雷音菩提树下的一枚小草。我日日仰望你,想让你看到我的存在,而你是那么的高高在上,从来就没有发现那个渺小的我,可是我不放弃,总有一天你会知道有这么一个小小的我在默默地等你。可是在你的心里自始自终就只有甘露一个。好不容易甘露被长风带走了,而你却仍放不下,于是佛让你来一遭红尘俗世,我恳求佛让我与你同行,佛答应了。佛说我们是有缘的,所以我信了,好不容易甘露走出了你的生活好不容易我说服了母后让皇兄颁旨,可是你却还是放不下甘露。……”他说不下去了。我开始感到震憾,三千年的等待,我不曾给过他半点承诺,他却也不曾有过一丝一毫的抱怨。“蛛儿,请不要辜负我对你的一片心,留下来陪我一起朝朝暮暮不好么?”他握住了我的手,而我的心在抖,我原本是以为我的心已经死了的。
三天很快就到了,我本应顺了佛的指点义无反顾的将我的元神抽离我的肉体的。可是我的耳朵却分明听到一阵悲怆的哭声。“蛛儿,你还是不要和我在一起是吗?这没关系,只求你别走。我可以不娶你,只要你好好的活着,开开心心的,让我天天看见你就行了。别走好么?”不知为什么我犹豫了,好像是被什么所感动。他抱着我的身体哭得肝肠寸断。就是铁石人儿也会落泪。我的父母一边哭一边还在劝慰他,接着他似想到了什么似的,抽出了佩剑,嘴里喃喃自语:“好吧!蛛儿,你既执意要回雷音,我便追随于你,无论你魂魄去向何方,哪怕是上穷碧落,下到黄泉,还是天涯海角,湘,我一定奉陪。”说着便要举剑自刎。佛说:“蛛儿啊!湘可是等了你三千年,你是放不下他的吧!回去罢!趁现在你还走得不太远。你这个样子,我既是渡你回雷音,终究也是枉然的。”我的元神又重新进入了我的身体,我只是轻轻动了唇:“湘,不要,我回来了。我心甘情愿做你的王妃,做你一生一世的王妃,来酬你三千年的等待,不好么?”只听“哐当”他手中的剑落地了。他紧紧抱住了我,我们相拥而泣,还有我的父母。是的我要是知道我的离去会让那么多爱我的人痛不欲生我是不会这般任性地想要走的。
我终于明白了,我们曾经失去的和我们所得不到的东西都不足为贵,紧紧握在手心里的才是最珍贵的。我曾求甘露而不得,而今明白,甘露的珍贵是对长风郡主而言的。他曾陪了我一千年这就够了。现在我应该珍惜的是湘予我的爱!
按:爱我的人和我爱的人,一个永恒的主题:当今的我们是如何选择的?
我以为人世间最疼苦的事应该是:他就在我身边而我却不知道他爱我,然又有多少爱是可以重来的呢?珍惜现在罢!珍惜每一份别人给予你的爱吧!要明白握在手里的东西才叫幸福。
http://blog.chinaunix.net/u1/33803/showart_357352.html
English:http://www.w3.org/Protocols/rfc2616/rfc2616.html
小无 22:13:27
看完这个你英语比六级还好了,学什么大学英语啊~~应该大一就看
English:http://www.w3.org/Protocols/rfc2616/rfc2616.html
小无 22:13:27
看完这个你英语比六级还好了,学什么大学英语啊~~应该大一就看
操作系统中进程概念的理解
提起进程这个概念,让很多经常使用计算机的人感到陌生,其实我们经常和它打交道,只要在计算机上运行一个程序,相应的一个进程就诞生了,而且它伴随着整个操作过程,直到程序终止。进程在操作系统中是一个非常抽象、非常重要、非常难以理解的概念。对进程概念的深入透彻的理解,有助于理解操作系统中的各种机制原理。
为什么要引入进程概念
提起程序这个概念,大家再也熟悉不过了,程序与进程概念是不可分的。程序是为了完成某项任务编排的语句序列,它告诉计算机如何执行,因此程序是需要运行的。程序运行过程中需要占有计算机的各种资源才能运行下去。如果任一时刻,系统中只有一道程序,即单道程序系统,程序则在整个运行过程中独占计算机全部资源,整个程序运行的过程就非常简单了,管理起来也非常容易。就象整个一套房子住了一个人,他想看电视就看电视,想去卫生间就去卫生间,没人和他抢占资源。但为了提高资源利用率和系统处理能力,现代计算机系统都是多道程序系统,即多道程序并发执行。程序的并发执行带来了一些新的问题,如资源的共享与竞争,它会改变程序的执行速度。就象多个人同时住一套房子,当你想去卫生间的时候,如果此时卫生间里有人,你就得等待,影响了你的生活节奏。如果程序执行速度不当,就会导致程序的执行结果失去封闭性和可再现性,这是我们不希望看到的。因此应该采取措施来制约、控制各并发程序段的执行速度。由于程序是静态的,我们看到的程序是存储在存储介质上的,它无法反映出程序执行过程中的动态特性,而且程序在执行过程中是不断申请资源,程序作为共享资源的基本单位是不合适的,所以需要引入一个概念,它能描述程序的执行过程而且可以作为共享资源的基本单位,这个概念就是进程。
进程的生命周期
进程和人一样是有生命的,从诞生到死亡要经历若干个阶段。一般说来进程有三种状态:就绪、执行、等待。由多种原因可以导致创建一个进程,例如一个程序从外存调入内存开始执行,操作系统就要为其创建进程,当然还可以有其它原因,如一个应用进程为完成一个特殊的任务,可以自己创建一个子进程。进程被创建后就是在内存中,处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,万事具备,只欠东风,一旦占有了CPU,就变成了执行状态,执行中如果需要等待外围设备输入数据,则进程就沦落为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU。等到数据到来后,等待状态的进程又被唤醒成为就绪状态。这些状态的转换是通过进程控制原语实现的。程序的运行是通过进程体现的,操作系统对进程进行管理和控制,那么操作系统怎么了解到进程的状态呢,怎么把资源分配给进程呢,而且进程做状态转换时CPU现场保存在那呢?这要说到PCB(进程控制快)。PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。操作系统就通过PCB感知进程的存在,通过PCB了解进程和控制进程的运行。PCB也是放在内存中的,如果PCB太大,有些系统把PCB中一些不重要的信息放在外存中。
进程执行速度的制约
并发进程由于共享系统内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程间的同步执行。例如一个家里如果只有一个卫生间,卫生间这个公有资源使得每个人只能互斥使用它,这就是间接制约。而直接制约是指并发进程各自执行的结果互为对方的执行条件,例如司机与售票员的关系,当司机到站停车后,售票员才能开门,而只有售票员关门后,司机才能开车,他们之间是同步的。进程的互斥与同步可以很好的通过信号量和PV原语来实现。通过读一些同步与互斥的例子,你会体会到PV原语的精妙,也会感到一种乐趣。并发进程的资源竞争不当还会导致死锁现象。
http://www.usbuse.com/html/ittxmcsy/140743404.html
提起进程这个概念,让很多经常使用计算机的人感到陌生,其实我们经常和它打交道,只要在计算机上运行一个程序,相应的一个进程就诞生了,而且它伴随着整个操作过程,直到程序终止。进程在操作系统中是一个非常抽象、非常重要、非常难以理解的概念。对进程概念的深入透彻的理解,有助于理解操作系统中的各种机制原理。
为什么要引入进程概念
提起程序这个概念,大家再也熟悉不过了,程序与进程概念是不可分的。程序是为了完成某项任务编排的语句序列,它告诉计算机如何执行,因此程序是需要运行的。程序运行过程中需要占有计算机的各种资源才能运行下去。如果任一时刻,系统中只有一道程序,即单道程序系统,程序则在整个运行过程中独占计算机全部资源,整个程序运行的过程就非常简单了,管理起来也非常容易。就象整个一套房子住了一个人,他想看电视就看电视,想去卫生间就去卫生间,没人和他抢占资源。但为了提高资源利用率和系统处理能力,现代计算机系统都是多道程序系统,即多道程序并发执行。程序的并发执行带来了一些新的问题,如资源的共享与竞争,它会改变程序的执行速度。就象多个人同时住一套房子,当你想去卫生间的时候,如果此时卫生间里有人,你就得等待,影响了你的生活节奏。如果程序执行速度不当,就会导致程序的执行结果失去封闭性和可再现性,这是我们不希望看到的。因此应该采取措施来制约、控制各并发程序段的执行速度。由于程序是静态的,我们看到的程序是存储在存储介质上的,它无法反映出程序执行过程中的动态特性,而且程序在执行过程中是不断申请资源,程序作为共享资源的基本单位是不合适的,所以需要引入一个概念,它能描述程序的执行过程而且可以作为共享资源的基本单位,这个概念就是进程。
进程的生命周期
进程和人一样是有生命的,从诞生到死亡要经历若干个阶段。一般说来进程有三种状态:就绪、执行、等待。由多种原因可以导致创建一个进程,例如一个程序从外存调入内存开始执行,操作系统就要为其创建进程,当然还可以有其它原因,如一个应用进程为完成一个特殊的任务,可以自己创建一个子进程。进程被创建后就是在内存中,处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,万事具备,只欠东风,一旦占有了CPU,就变成了执行状态,执行中如果需要等待外围设备输入数据,则进程就沦落为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU。等到数据到来后,等待状态的进程又被唤醒成为就绪状态。这些状态的转换是通过进程控制原语实现的。程序的运行是通过进程体现的,操作系统对进程进行管理和控制,那么操作系统怎么了解到进程的状态呢,怎么把资源分配给进程呢,而且进程做状态转换时CPU现场保存在那呢?这要说到PCB(进程控制快)。PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。操作系统就通过PCB感知进程的存在,通过PCB了解进程和控制进程的运行。PCB也是放在内存中的,如果PCB太大,有些系统把PCB中一些不重要的信息放在外存中。
进程执行速度的制约
并发进程由于共享系统内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程间的同步执行。例如一个家里如果只有一个卫生间,卫生间这个公有资源使得每个人只能互斥使用它,这就是间接制约。而直接制约是指并发进程各自执行的结果互为对方的执行条件,例如司机与售票员的关系,当司机到站停车后,售票员才能开门,而只有售票员关门后,司机才能开车,他们之间是同步的。进程的互斥与同步可以很好的通过信号量和PV原语来实现。通过读一些同步与互斥的例子,你会体会到PV原语的精妙,也会感到一种乐趣。并发进程的资源竞争不当还会导致死锁现象。
http://www.usbuse.com/html/ittxmcsy/140743404.html
前言:
PHP中对各类数据库的操作有着支持,对文件的操作也同样有着很丰富的操作方法,很多朋友现在的操作还是基于文件操作
可是有的时候在操作文件的时候还存在不少的困惑和疑点,以下是我在日常编写过程中碰到的以及坛上朋友所碰到的关于文件操
作的一些问题收藏吧。
问:如何新建一个文件?
答:1、使用fopen("要建立的文件名","参数"),参数可选 w,w+,a,a+
2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这个linux命令来建立
问:为什么我无法建立文件?
答:1、如果你使用了fopen建立文件,是否正确的使用了参数
2、系统权限问题,请询问你的WEBMASTER你的FTP目录是否有写的权限
3、FTP权限问题,你要确认你的PHP文件所要写文件所在目录要有写的权限,也就是你的FTP软件登陆后other组要有写这个权限,
如果没有请修改权限后尝试
问:如何将文件读入数组?
答:使用file
问:如何将文件全部读出?
答:1、使用fread($fp);
2、如果你的PHP版本>=4.3.0的话可以使用file_get_contents();
问:如何判断文件是否存在?
答:使用file_exists();为什么不使用fopen()来判断呢?原因是有时候是因为权限问题导致fopen返回的数据引导我们错误的判断
问:为什么当我读取一个WEB页面的时候出错?
答:1、可能是你的传递参数错,当读取WEB页面的时候你只可以使用r方式读取页面
2、确保你要读取的WEB页面可以访问
问:我如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用
请参阅手册。
问:PHP打开文件后是否可以象C一样进行文件“游标”的定位呢?
答:可以的,使用fseek();
问:我想在访问文件的时候不允许其他人也访问此文件,怎么办?
答:1、你可以采用其他方面程序限制用户接入文件操作的页面
2、使用flock();详细的参数以及使用方法请参阅手册
问:如何删除文件内第一行,或指定一行数据?
答:PHP并没有提供这样的操作方法,不过我们可以通过组合使用,以下代码演示我们将删除文件"test.dat"中的第三行数据(test.datw
文件中数据不止三行)
<?php
$filename="test.dat";//定义操作文件
$delline=3; //要删除的行数
if(!file_exsits($filename)){
die("指定文件未发现!操作中断!");
}
$farray=file($filename);//读取文件数据到数组中
for($tmpa=0;$Tmpa<count($farray);$Tmpa++){
if(strcmp($Tmpa+1,$delline)==0){
//判断删除的行
continue;
}
//重新整理后的数据
$newfp.=$farray[$Tmpa]."\r\n";
}
$fp=@fopen($filename,"a") or die("写方式打开文件 $filename 失败");//我们以写的方式打开文件
@fputs($fp,$newfp) or die("文件写入失败");
@fclose($fp);
?>
以上代码演示的是删除一行文件,不过你如果仔细的看的话,其实也给你提供了其他的文件操作的相关提醒~
问:当我试图打开一个不存在的文件的时候,我如何不让错误显示出来以避免我的路径泄露!!
答:在你要打开文件的方法前增加@符号用来屏蔽错误,@是PHP提供的错误信息屏蔽的专用符号
或您可以在这个要操作的步骤前增加(通常是在页首)error_reporting(0);用来屏蔽页面内所有错误信息的显示
一个不推荐的方法就是去修改php.ini(ISP除外)
问:我使用的是虚拟主机,我如何防止其他用户窃取我的数据?
答:建议ISP修改php.ini中的open_basedir进行限制,
不推荐的ISP设置是将fopen,file等文件操作加入disable_function中。
问:为什么我用PHP建立文件后我FTP登陆要删除这些文件无法删除??
答:主要是因为PHP建立的文件归属WEB用户组,也就是建立的文件,并非是你FTP用户的!!!
这个问题的解决就是,使用PHP程序的chmod,unlink等方式进行处理,建议用户在使用PHP建立文件的时候
记得chmod文件权限,建议为777
问:如何使用文本文件作为数据仓库?有的留言本,论坛之类的都是使用这个的啊!
答:其实这个主要还是使用了file,结合explode进行数据读取与分割的典型范例而已。
问:如何更改文件名?
答:rename();
问:如何删除文件?
答:unlink(); exec("del(rm -vf) filename");注:rm -vf为linux下使用
问:如何清空文件?
答:使用fopen(filename,"w");或exec("echo '' > filename");
问:如何编辑文件内容?
答:我记得我以前回答过一个删除文件内容的,其实编辑内容在删除内容的基础上,进行变量替换就可以了。
希望你可以向上找找,将我上面的continue修改为替换变量数据就可以了:)
----------------------------------------------------
以上是我个人对文件操作的相关总结
说明:本篇文章我觉得对初学PHP文件操作方面应该有点帮助,作者:杨宗威 首发地:CSDN 作者转发地:DEV-CLUB
看这里没就再发一次(毕竟写出来就希望能对大家有点帮助)
PHP中对各类数据库的操作有着支持,对文件的操作也同样有着很丰富的操作方法,很多朋友现在的操作还是基于文件操作
可是有的时候在操作文件的时候还存在不少的困惑和疑点,以下是我在日常编写过程中碰到的以及坛上朋友所碰到的关于文件操
作的一些问题收藏吧。
问:如何新建一个文件?
答:1、使用fopen("要建立的文件名","参数"),参数可选 w,w+,a,a+
2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这个linux命令来建立
问:为什么我无法建立文件?
答:1、如果你使用了fopen建立文件,是否正确的使用了参数
2、系统权限问题,请询问你的WEBMASTER你的FTP目录是否有写的权限
3、FTP权限问题,你要确认你的PHP文件所要写文件所在目录要有写的权限,也就是你的FTP软件登陆后other组要有写这个权限,
如果没有请修改权限后尝试
问:如何将文件读入数组?
答:使用file
问:如何将文件全部读出?
答:1、使用fread($fp);
2、如果你的PHP版本>=4.3.0的话可以使用file_get_contents();
问:如何判断文件是否存在?
答:使用file_exists();为什么不使用fopen()来判断呢?原因是有时候是因为权限问题导致fopen返回的数据引导我们错误的判断
问:为什么当我读取一个WEB页面的时候出错?
答:1、可能是你的传递参数错,当读取WEB页面的时候你只可以使用r方式读取页面
2、确保你要读取的WEB页面可以访问
问:我如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用
请参阅手册。
问:PHP打开文件后是否可以象C一样进行文件“游标”的定位呢?
答:可以的,使用fseek();
问:我想在访问文件的时候不允许其他人也访问此文件,怎么办?
答:1、你可以采用其他方面程序限制用户接入文件操作的页面
2、使用flock();详细的参数以及使用方法请参阅手册
问:如何删除文件内第一行,或指定一行数据?
答:PHP并没有提供这样的操作方法,不过我们可以通过组合使用,以下代码演示我们将删除文件"test.dat"中的第三行数据(test.datw
文件中数据不止三行)
<?php
$filename="test.dat";//定义操作文件
$delline=3; //要删除的行数
if(!file_exsits($filename)){
die("指定文件未发现!操作中断!");
}
$farray=file($filename);//读取文件数据到数组中
for($tmpa=0;$Tmpa<count($farray);$Tmpa++){
if(strcmp($Tmpa+1,$delline)==0){
//判断删除的行
continue;
}
//重新整理后的数据
$newfp.=$farray[$Tmpa]."\r\n";
}
$fp=@fopen($filename,"a") or die("写方式打开文件 $filename 失败");//我们以写的方式打开文件
@fputs($fp,$newfp) or die("文件写入失败");
@fclose($fp);
?>
以上代码演示的是删除一行文件,不过你如果仔细的看的话,其实也给你提供了其他的文件操作的相关提醒~
问:当我试图打开一个不存在的文件的时候,我如何不让错误显示出来以避免我的路径泄露!!
答:在你要打开文件的方法前增加@符号用来屏蔽错误,@是PHP提供的错误信息屏蔽的专用符号
或您可以在这个要操作的步骤前增加(通常是在页首)error_reporting(0);用来屏蔽页面内所有错误信息的显示
一个不推荐的方法就是去修改php.ini(ISP除外)
问:我使用的是虚拟主机,我如何防止其他用户窃取我的数据?
答:建议ISP修改php.ini中的open_basedir进行限制,
不推荐的ISP设置是将fopen,file等文件操作加入disable_function中。
问:为什么我用PHP建立文件后我FTP登陆要删除这些文件无法删除??
答:主要是因为PHP建立的文件归属WEB用户组,也就是建立的文件,并非是你FTP用户的!!!
这个问题的解决就是,使用PHP程序的chmod,unlink等方式进行处理,建议用户在使用PHP建立文件的时候
记得chmod文件权限,建议为777
问:如何使用文本文件作为数据仓库?有的留言本,论坛之类的都是使用这个的啊!
答:其实这个主要还是使用了file,结合explode进行数据读取与分割的典型范例而已。
问:如何更改文件名?
答:rename();
问:如何删除文件?
答:unlink(); exec("del(rm -vf) filename");注:rm -vf为linux下使用
问:如何清空文件?
答:使用fopen(filename,"w");或exec("echo '' > filename");
问:如何编辑文件内容?
答:我记得我以前回答过一个删除文件内容的,其实编辑内容在删除内容的基础上,进行变量替换就可以了。
希望你可以向上找找,将我上面的continue修改为替换变量数据就可以了:)
----------------------------------------------------
以上是我个人对文件操作的相关总结
说明:本篇文章我觉得对初学PHP文件操作方面应该有点帮助,作者:杨宗威 首发地:CSDN 作者转发地:DEV-CLUB
看这里没就再发一次(毕竟写出来就希望能对大家有点帮助)
int name_order_size = book.m_MemberCount > 0 ? (book.m_GroupCount > book.m_MemberCount ? book.m_GroupCount : book.m_MemberCount):book.m_GroupCount > 0 ? book.m_GroupCount : 0;
showgrouplist.cpp 80行!
showgrouplist.cpp 80行!
ret5 = code_convert(MAIL_CODE_FROM, MAIL_CODE_TO, (char*)(LPCSTR)txtbody, strlen((LPCSTR)txtbody), body_dest, blen);
int code_convert(char *from_charset, char *to_charset,
char *input, int inlen,
char *output,int outlen)
{
if(!input || !(*input))
{
return -3;
}
size_t len_in = inlen;
size_t len_out = outlen;
const char *p_in = input;
char *p_out = output;
iconv_t cd;
cd = iconv_open(to_charset,from_charset);
if (cd==0) return -2;
memset(output,0,outlen);
if (iconv(cd, &p_in, &len_in, &p_out, &len_out)==-1) return -1;
iconv_close(cd);
return 0;
}
void CSinaMail::DirectReadMsg(LPCSTR para,LPCSTR cgi_url,CStr& msg,CStr& from,CStr& to,CStr& date,CStr& cc,CStr& subject,CStr& txtbody,CStr& msgbody,CStr& reply, int msgbody_inc_attach) {
CStr abmsg,charset,body,mime,tmp,htmlbody,base,link;
int charsetLen = 0;
//get mail file absolute path
AbMsg(abmsg,(LPCSTR)msg);
if(!IsDir(m_mimedir)) mkdir(m_mimedir,0700);
CMimeMail mimeMail;
LPCSTR lpFileName=mimeMail.OpenFile((LPCSTR)abmsg);
CAttachmentList attachmentList;
mimeMail.ReadMail((LPSTR)lpFileName, body, attachmentList);
HandleAttachmenList(attachmentList,para,cgi_url,m_mimedir);
if(!body.IsEmpty()) {
charset.MidStr((LPCSTR)body,0,"\n");
txtbody.MidStr((LPCSTR)body,"\n",0);
charsetLen = strlen((LPCSTR)charset);
MsgTxtContentToHtml(cgi_url,para,(LPCSTR)txtbody,msgbody);
}
if(!msgbody.IsEmpty())
{
msgbody.ReplaceAll("<", "<");
msgbody.ReplaceAll(">", ">");
}
CAttachment* pAtt;
int num=attachmentList.GetCount();
for(int i=0;i<num;i++) {
pAtt=attachmentList.GetItem(i);
if (pAtt->m_nDisplayOrNot==0) continue; //if not need display
if (pAtt->m_nDisplayOrNot==2 && msgbody=="") { //if is html content
mime.Format("%s/%s",(LPCSTR)m_mimedir,(LPCSTR)pAtt->m_cstrFileName);
CTmpl htmlfile((LPCSTR)mime);
htmlbody="<pre>";
htmlbody=htmlbody + (CStr)htmlfile;
htmlbody=htmlbody + "</pre>";
base.MidStrI((LPCSTR)htmlbody,"<BASE",">",1);
LPCSTR body=htmlbody.FindI("<HTML");
if(body) body=strchr(body,'>');
if(body) htmlbody=body+1;
htmlbody.ReplaceI("<body","<xbody");
htmlbody.ReplaceIAll("</BODY>","</xbody>");
htmlbody.ReplaceIAll("</HTML>","");
htmlbody.ReplaceIAll("<SCRIPT","<COMMENT");
htmlbody.ReplaceIAll("</SCRIPT>","</COMMENT>");
if(pAtt->m_nCharSet==HZ_CODE) CheckForHZString(htmlbody);
if (txtbody.IsEmpty())
{
txtbody=htmlbody;
char* des=(char*)calloc(1,txtbody.GetLength());
parsetext(des,(char*)(LPCSTR)txtbody);
txtbody=des;
free(des);
}
// 4. add div
//add by liulei, output base_mark in mail content
msgbody+="<DIV>";
if(!base.IsEmpty()) { // include base
msgbody+="<base";
msgbody+=base;
msgbody+=">";
msgbody+=htmlbody;
msgbody+="</DIV>";
msgbody+="<BASE href=";
msgbody+=cgi_url;
msgbody+=">";
} else {
msgbody+=htmlbody;
msgbody+="</DIV>";
}
//add end
continue;
}
CStr strFujian;
strFujian = "附件";
toLink((LPCSTR)pAtt->m_cstrFileName,link);
CStr fit_displayName(pAtt->m_lpszDisplayName);
repBadchar(fit_displayName);
CStr displayName;
toLink(fit_displayName, displayName);
//2005-11-5 add by zhirui 过滤无效的类型
CStr tmpStr1;
CStrList tmpList1;
if(pAtt->m_lpszType.FindI("application/") && pAtt->m_lpszType.FindI("name="))
{
pAtt->m_lpszType.ReplaceAll(" ", "");
pAtt->m_lpszType.Split("name=", tmpList1);
if(tmpList1.GetCount() == 2)
{
pAtt->m_lpszType.Format("%s", (LPCSTR)*tmpList1.GetItem(0));
//
//pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else
{
if(pAtt->m_lpszType.FindI("vnd.ms-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else if(pAtt->m_lpszType.FindI("x-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/x-excel");
}
else if(pAtt->m_lpszType.FindI("mswordname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/msword");
}
}
}
//changed by zhirui 2005-10-11
if(msgbody_inc_attach == 1)
{
tmp.Format("<BR><BR>\n--------------------------------------------------<BR>\n%s:<a href='/cgi-bin/email/webmailbox/attachment.cgi/%s/%s/%s/%s/%s'>%s</a>(%s, %ld bytes) <BR>\n--------------------------------------------------<BR>\n", (LPCSTR)strFujian, para, (LPCSTR)pAtt->m_lpszType, (LPCSTR)link, (LPCSTR)displayName, (LPCSTR)displayName, (LPCSTR)pAtt->m_lpszDisplayName, (LPCSTR)pAtt->m_lpszType,pAtt->m_nFileSize);
}
msgbody += tmp;
}
if(charsetLen > 30)
{
charset.Empty();
charset.Format("%s", "gb2312");
}
//+20080124 add get msgId from mail head
mimeMail.GetHeader("Message-ID", this->msgIdStr,(LPCSTR)charset);
mimeMail.GetHeader("X-Mailer", this->xMailerStr,(LPCSTR)charset);
mimeMail.GetHeader("from",from,(LPCSTR)charset);
mimeMail.GetHeader("to",to,(LPCSTR)charset);
mimeMail.GetHeader("subject",subject,(LPCSTR)charset);
mimeMail.GetHeader("cc",cc,(LPCSTR)charset);
mimeMail.GetHeader("date",date,(LPCSTR)charset);
GetStandardTime(8,date);
mimeMail.GetHeader("disposition-notification-to",reply,(LPCSTR)charset);
if(reply.IsEmpty())
mimeMail.GetHeader("Return-Receipt-To",reply,(LPCSTR)charset);
}
int code_convert(char *from_charset, char *to_charset,
char *input, int inlen,
char *output,int outlen)
{
if(!input || !(*input))
{
return -3;
}
size_t len_in = inlen;
size_t len_out = outlen;
const char *p_in = input;
char *p_out = output;
iconv_t cd;
cd = iconv_open(to_charset,from_charset);
if (cd==0) return -2;
memset(output,0,outlen);
if (iconv(cd, &p_in, &len_in, &p_out, &len_out)==-1) return -1;
iconv_close(cd);
return 0;
}
void CSinaMail::DirectReadMsg(LPCSTR para,LPCSTR cgi_url,CStr& msg,CStr& from,CStr& to,CStr& date,CStr& cc,CStr& subject,CStr& txtbody,CStr& msgbody,CStr& reply, int msgbody_inc_attach) {
CStr abmsg,charset,body,mime,tmp,htmlbody,base,link;
int charsetLen = 0;
//get mail file absolute path
AbMsg(abmsg,(LPCSTR)msg);
if(!IsDir(m_mimedir)) mkdir(m_mimedir,0700);
CMimeMail mimeMail;
LPCSTR lpFileName=mimeMail.OpenFile((LPCSTR)abmsg);
CAttachmentList attachmentList;
mimeMail.ReadMail((LPSTR)lpFileName, body, attachmentList);
HandleAttachmenList(attachmentList,para,cgi_url,m_mimedir);
if(!body.IsEmpty()) {
charset.MidStr((LPCSTR)body,0,"\n");
txtbody.MidStr((LPCSTR)body,"\n",0);
charsetLen = strlen((LPCSTR)charset);
MsgTxtContentToHtml(cgi_url,para,(LPCSTR)txtbody,msgbody);
}
if(!msgbody.IsEmpty())
{
msgbody.ReplaceAll("<", "<");
msgbody.ReplaceAll(">", ">");
}
CAttachment* pAtt;
int num=attachmentList.GetCount();
for(int i=0;i<num;i++) {
pAtt=attachmentList.GetItem(i);
if (pAtt->m_nDisplayOrNot==0) continue; //if not need display
if (pAtt->m_nDisplayOrNot==2 && msgbody=="") { //if is html content
mime.Format("%s/%s",(LPCSTR)m_mimedir,(LPCSTR)pAtt->m_cstrFileName);
CTmpl htmlfile((LPCSTR)mime);
htmlbody="<pre>";
htmlbody=htmlbody + (CStr)htmlfile;
htmlbody=htmlbody + "</pre>";
base.MidStrI((LPCSTR)htmlbody,"<BASE",">",1);
LPCSTR body=htmlbody.FindI("<HTML");
if(body) body=strchr(body,'>');
if(body) htmlbody=body+1;
htmlbody.ReplaceI("<body","<xbody");
htmlbody.ReplaceIAll("</BODY>","</xbody>");
htmlbody.ReplaceIAll("</HTML>","");
htmlbody.ReplaceIAll("<SCRIPT","<COMMENT");
htmlbody.ReplaceIAll("</SCRIPT>","</COMMENT>");
if(pAtt->m_nCharSet==HZ_CODE) CheckForHZString(htmlbody);
if (txtbody.IsEmpty())
{
txtbody=htmlbody;
char* des=(char*)calloc(1,txtbody.GetLength());
parsetext(des,(char*)(LPCSTR)txtbody);
txtbody=des;
free(des);
}
// 4. add div
//add by liulei, output base_mark in mail content
msgbody+="<DIV>";
if(!base.IsEmpty()) { // include base
msgbody+="<base";
msgbody+=base;
msgbody+=">";
msgbody+=htmlbody;
msgbody+="</DIV>";
msgbody+="<BASE href=";
msgbody+=cgi_url;
msgbody+=">";
} else {
msgbody+=htmlbody;
msgbody+="</DIV>";
}
//add end
continue;
}
CStr strFujian;
strFujian = "附件";
toLink((LPCSTR)pAtt->m_cstrFileName,link);
CStr fit_displayName(pAtt->m_lpszDisplayName);
repBadchar(fit_displayName);
CStr displayName;
toLink(fit_displayName, displayName);
//2005-11-5 add by zhirui 过滤无效的类型
CStr tmpStr1;
CStrList tmpList1;
if(pAtt->m_lpszType.FindI("application/") && pAtt->m_lpszType.FindI("name="))
{
pAtt->m_lpszType.ReplaceAll(" ", "");
pAtt->m_lpszType.Split("name=", tmpList1);
if(tmpList1.GetCount() == 2)
{
pAtt->m_lpszType.Format("%s", (LPCSTR)*tmpList1.GetItem(0));
//
//pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else
{
if(pAtt->m_lpszType.FindI("vnd.ms-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else if(pAtt->m_lpszType.FindI("x-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/x-excel");
}
else if(pAtt->m_lpszType.FindI("mswordname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/msword");
}
}
}
//changed by zhirui 2005-10-11
if(msgbody_inc_attach == 1)
{
tmp.Format("<BR><BR>\n--------------------------------------------------<BR>\n%s:<a href='/cgi-bin/email/webmailbox/attachment.cgi/%s/%s/%s/%s/%s'>%s</a>(%s, %ld bytes) <BR>\n--------------------------------------------------<BR>\n", (LPCSTR)strFujian, para, (LPCSTR)pAtt->m_lpszType, (LPCSTR)link, (LPCSTR)displayName, (LPCSTR)displayName, (LPCSTR)pAtt->m_lpszDisplayName, (LPCSTR)pAtt->m_lpszType,pAtt->m_nFileSize);
}
msgbody += tmp;
}
if(charsetLen > 30)
{
charset.Empty();
charset.Format("%s", "gb2312");
}
//+20080124 add get msgId from mail head
mimeMail.GetHeader("Message-ID", this->msgIdStr,(LPCSTR)charset);
mimeMail.GetHeader("X-Mailer", this->xMailerStr,(LPCSTR)charset);
mimeMail.GetHeader("from",from,(LPCSTR)charset);
mimeMail.GetHeader("to",to,(LPCSTR)charset);
mimeMail.GetHeader("subject",subject,(LPCSTR)charset);
mimeMail.GetHeader("cc",cc,(LPCSTR)charset);
mimeMail.GetHeader("date",date,(LPCSTR)charset);
GetStandardTime(8,date);
mimeMail.GetHeader("disposition-notification-to",reply,(LPCSTR)charset);
if(reply.IsEmpty())
mimeMail.GetHeader("Return-Receipt-To",reply,(LPCSTR)charset);
}