Welcome to IcyRiver'blog

Saturday, October 07, 2006

如何配置windows实现局域网内文件共享

今天配置我和室友的笔记本,想实现无线局域网内文件共享,本来以为是件很简单的事情,却地遇到很多问题,例如访问网络邻居时"没有权限使用网络资源"。这里把心得列出来,以后可以参考:

1。启动guest来宾帐号。默认情况下,处于工作组状态的Windows XP Professional版本和Windows XP home版本电脑都会使用GUEST账户作为网络访问的默认账户。而WindowsXP在默认情况下,GUEST账户为禁用状态。

2。设置本地安全策略里的“允许网络访问计算机”和“拒绝网络访问计算机”。

3。在Windows桌面上用右击“我的电脑”,选择“属性”,然后单击“计算机名”选项卡,检查该选项卡中局域网工作组名和计算机名,要保证局域网中的计算机都在同一个组内。

4。运行“网络安装向导”,设置家庭或小型办公网络,填写正确的计算名和计算机所在的组名。还要启动文件和打印机共享,这里的操作和本地连接属性、无线连接属性中的“共享网络文件和打印机”是一个道理。
运行“网络安装向导”的本质,其实是修改了“本地安全设置”中的两条策略:
a.启用了guest账户。可以在“安全设置→本地策略→安全选项”下设置,启用“账户:客户账户状态”;
b.在“拒绝从网络访问这台计算机”策略中删除了guest账户,这样其他计算机就能访问共享资源了。

5。在网络连接属性里添加“IPX和NetBIOS协议”,将“Microsoft网络客户端协议“、“共享文件和打印机”勾选。(Windows XP默认安装已经不支持NetBEUI协议)

6。关闭系统自带的防火墙。Windows浏览服务(browser service)是通过网络广播方式进行,很多防火墙会对广播的几个端口进行封堵(因为微软的NetBIOS协议有漏洞,会随机泄漏内存中的数据)。同样,Windows XP中的ICF(Internet连接防火墙)也会有这种作用。

7。在注册表里设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa右边窗口RestrictAnonymous的值是否为0。默认的 RestrictAnonymous值是 1 。

8。如果手动或者用防火墙禁止过445和139端口,可能造成无法访问网络共享,请重新开启139与445两个端口。

Tuesday, October 03, 2006

送别潇洒哥。。一路走好

潇洒哥,我在雅虎的mentor,和我愉快共事3个月后,一个人飞往HongKong,追求他的梦想和幸福去了。

我和潇洒哥颇有渊源。当年我在软件所求学时,潇洒哥在中科院网络中心任职,居然和我在同一个软件园区。或许每天会在软件所的食堂一起吃过饭,或许在草场一起打过篮球,但是始终没有相识过。

真正认识潇洒哥,是我到了yahoo以后。第一次见到他,心里想:我K,yahoo还有这么帅的工程师。后来在yahoo工作了几个月后,发现潇洒哥的帅气真的是独一无二的。健谈,帅气,这就是他给我的第一印象。

IMAGE_00027

潇洒哥在工作上给与我很多帮助。刚来yahoo的时候,很多东西都是陌生的,潇洒哥会抽出很多很多时间帮助我了解yahoo的工作流程和技术,以及企业文化。耐心,真诚,这是潇洒哥进一步给我的印象。

每次和潇洒哥上下电梯,或者一起吃饭,总是不断有人和他打招呼,而且不乏一些ppmm。开始以为这家伙靠一张英俊的脸迷倒这么多mm,后来逐渐意识到我错了,其实潇洒哥的骨子里有一种阳光、快乐的特质。这种积极的人生价值观和性格使他喜欢旅游,热爱摄影。他去多很多地方,也曾经在杂志上发表过文章,介绍他的旅游心得。

现在,好动的他,又选择了到香港漂泊。人生要不断寻找属于自己快乐,愿潇洒哥在香港的生活快乐美好。最后送给潇洒哥一曲Alizee的MTV《Alizee.la isla bonita》,因为女主角和潇洒哥有着类似的阳光和快乐。

让我无语的对联

网上看到有人出一上联:美院mm美,求下联。
立刻有网友给出下联:

高校gg高
建筑gg建
土木gg土
二炮gg二
精仪 j j 精

还有更牛的:

软件gg软
松下gg松
微软gg微
牛市nn牛

偶真是服了....

Tuesday, September 26, 2006

Javascript中正则表达式的使用

这几天太忙,想看着就要转正,很多事情都压到我的头上。现在逐渐感到有压力和责任感,况且我们的产品是面向数亿中国网民的。有十多天没有更新blog了,今天简单说说正则表达式在javascript里的应用。下面一段话是摘录的:

“正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。”

使用正则表达式,可以作很多事情,包括:

  • 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
  • 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
  • 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
下面举两个例子:

判断一个字符串是否符合URL标准格式
var urlRX = new RegExp("((^http)|(^https)):\/\/(\\w+\.)+(\\w)+(/[\\w-./?%&=]*)?");
if(!urlRX.test(yourString))   alert("It is an invalid url string");

判断一个字符串是否符合yyyy-mm-dd
hh:mm:ss时间格式
var timeRX = new RegExp("(\\d){4}-(\\d){2}-(\\d){2}[ ]{1}(\\d){2}:(\\d){2}:(\\d){2}");
if(!timeRX.test(
yourString)) alert("It is an invalid time string");


Monday, September 18, 2006

超酷的三个汽车视频!

这三个令人叹为观止的汽车视频,不论是从作者的制作功力,还是制作耐心上看,都是值得我们尊敬的:










2006梦想中国主题曲--就在今天

就在今天
2006年梦想中国18强 演唱

MP3文件下载地址:到我的box.net下载



歌词

不曾记得梦想开始在哪年
却知道它伴我走到今天
多少次茫然不知向何处
多少次几乎触摸到梦的边缘
春去秋来过了一年又一年
忽然看见了一道彩虹在眼前
是真是幻不敢相信我的眼
多年梦想实现就在一瞬间
就在今天让你我梦实现
按不住我加速的心跳
忍不住我放声呼喊
就在今天就在这一瞬间
登上绚丽舞台告诉世界
证实我的宣言
有过同样的秋天
天空从未如此蔚蓝
多少童年的信念
一直燃烧到今天
就在今天让你我梦实现
唱出心中涌动的旋律
绽放脸上灿烂的笑颜
就在今天就在这一瞬间
要用所有激情感动世界
我的梦不改变
生命从此开始改变

Thursday, September 14, 2006

编程遇到的几个问题

真奇怪,今天编码遇到好几个问题,把重要的几个记下来吧:


1。首先看下面一段代码:

<A onclick=”javascript:window.location.href=’yahoo.com’ ” href=”sohu.com”>Click Me!</A>


浏览器会跳转到哪个页面?
FireFox和IE都会先执行页面JS脚本,然后浏览器再跳转到HREF指向的页面—sohu.com。如果把代码改成这样:


<A onclick=”javascript:window.location.href=’yahoo.com’ ” href=”#”>Click Me!</A>


FireFox和IE还是会先执行页面JS脚本,但由于HREF指向的页面是“#”,所以浏览器会跳转到yahoo.com


2。htmlspecialchars函数可以把引号等特殊字符转换成HTML entities, 如何从HTML entities
还原成相应的特殊字符呢?
PHP5提供了一个函数htmlspecialchars_decode,可以做到.在PHP4环境下,只能通过下面的方法完成转换:
$trans = get_html_translation_table(HTML_SPECIALCHARS);
$trans = array_flip($trans); //只是必须的,否则会产生乱码。
$text = strtr($text, $trans);


3。在构造http
GET请求的字符串时,如果没有把参数的值用urlencode函数进行处理,可能会产生字符编码的问题。例如我构造了这样一个请求,http:
//yahoo.com/somePage.php?p=$string&u=…,变量$string使用UTF8编码的,而页面是GBK编码。
当用户提交这样一个GET请求时,浏览器会把“p=”后面的字符按照GBK编码来处理,后果是可能会把$string的最后一个字符和紧跟着的字符
&结合,而产生混乱的字符。


用urlencode处理$string字符串后,页面上的http GET请求链接就不会有问题。唯一遗憾的是,浏览器在发送请求时,会再一次把参数p的值作一次URI编码处理。服务器端接受到参数p的值后,还得用urldecode函数对字符串进行解码。

Sunday, September 10, 2006

最近很喜欢听刘欢的一首歌---在路上

在路上

刘欢/演唱
王利芬/词
王晓锋/曲

下载地址:

 wma格式:点击这里下载wma文件

mp3格式:点击这里下载mp3文件


歌词
点击这里下载lrc文件 


那一天
我不得已上路
为不安分的心
自尊的生存
为自我的证明
路上的心酸 已融进我的眼睛

心灵的心境 已化作我的坚定
在路上 用我心灵的呼声
在路上 只为伴着我的人
在路上 是我生命的远行
在路上 只为温暖我的人 温暖我的人

那一天
我不得已上路
为不安分的心
为自尊的生存
为自我的证明
路上的心酸 已融进我的眼睛
心灵的困境 已化作我的坚定

在路上 用我心灵的呼声
在路上 只为伴着我的人
在路上 是我生命的远行
在路上 只为温暖我的人 温暖我的人

在路上 用我心灵的呼声
在路上 只为伴着我的人
在路上 是我生命的远行
在路上 只为温暖我的人 温暖我的人

Monday, September 04, 2006

服务器网页缓存的深入分析

Expires、Cache-Control、Last-Modified、ETag是RFC 2616(HTTP/1.1)协议中和网页缓存相关的几个字段。前两个用来控制缓存的失效日期,后两个用来验证网页的有效性。要注意的是, HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头。我们 这里以Apache2.0服务器为例,只讨论HTTP/1.1协议。

Expires

Expires字段声明了一个网页或URL地址不再被浏览器缓存的时间,一旦超过了这个时间,浏览器都应该联系原始服务器。RFC告诉我们:“由于推断的失效时间也许会降低语义透明度,应该被谨慎使用,同时我们鼓励原始服务器尽可能提供确切的失效时间。”

对 于一般的纯静态页面,如html、gif、jpg、css、js,默认安装的Apache服务器,不会在响应头添加这个字段。Firefox浏览器接受到 相应后,如果发现没有Expires字段,浏览器根据文件的类型和“Last-Modified”字段来推断出一个合适的失效时间,并存储在客户端。推测 出的时间一般是接受到响应时间后的三天左右。

Apache的expires_module模块可以在Http响应头部自动加上Expires字段。在Apache的httpd.conf文件中进行如下配置:

#启用expires_module模块
LoadModule expires_module modules/mod_expires.so
# 启用有效期控制
ExpiresActive On
# GIF有效期为1个月
ExpiresByType image/gif A2592000
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
#以下的含义类似
ExpiresByType text/css "now plus 2 month"
ExpiresByType text/js "now plus 2 day"
ExpiresByType image/jpeg "access plus 2 month"
ExpiresByType image/bmp "access plus 2 month"
ExpiresByType image/x-icon "access plus 2 month"
ExpiresByType image/png "access plus 2 month"

对 于动态页面,如果在页面内部没有通过函数强制加上Expires,例如header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"),Apache服务器会把Wed, 11 Jan 1984 05:00:00 GMT
作为Expires字段内容,返回给浏览器。即认为动态页面总是失效的。而浏览器仍然会保存已经失效的动态页面。

可 以发现Firefox浏览器总是缓存所有页面,不管失效、不失效还是没有声明失效时间。即使缓存中声明了一个网页的实效日期是1970-01-01 08:00:00,浏览器仍然会发送该文件在缓存中的Last-Modified和ETag字段。 如果在服务器端验证通过,返回304状态,浏览器就还会使用此缓存。

Cache-Control

Cache -Control字段中可以声明多些元素,例如no-cache, must-revalidate, max-age=0等。这些元素用来指明页面被缓存最大时限,如何被缓存的,如何被转换到另一个不同的媒介,以及如何被存放在持久媒介中的。但是任何一个 Cache-Control指令都不能保证隐私性或者数据的安全性。“private”和“no-store”指令可以为隐私性和安全性方面提供一些帮 助,但是他们并不能用于替代身份验证和加密。

Apache的mod_cern_meta模块允许文件级Http响应头部的控制,同时它也可以配置Cache-Control头(或任何其他头)。响应头文件是放在原始目录的子目录中,根据原始文件名所命名的一个文件。具体用法请参阅Apache的官方网站。

其 中Cache-Control : max-age表示失效日期。如果没有启动mod_cern_meta模块,Apache服务器会把Expires字段中的日期换算成以秒为单位的一个 delta值,赋值给max-age。如果启动mod_cern_meta模块,并且配置了max-age值,Apache会将这个覆盖Expires字 段。同时,max-age隐含了Canche-Control: public。这样浏览器接受到的Cache-Control : max-age和Expires值就是一致的。

如果失效日期Cache-Control : max-ag=0或者是负值,浏览器会在对应的缓存中把Expires设置为1970-01-01 08:00:00。

Last-Modified

Last -Modified和ETag是条件请求(Conditional Request)相关的两个字段。如果一个缓存收到了针对一个页面的请求,它发送一个验证请求询问服务器页面是否已经更改,在HTTP头里面带上 "ETag"和"If Modify Since"头。服务器根据这些信息判断是否有更新信息,如果没有,就返回HTTP 304(Not Modify);如果有更新,返回HTTP 200和更新的页面内容,并且携带新的"ETag"和"Last-Modified"。

使用这个机制,能够避免重复发送文件给浏览器,不过仍然会产生一个HTTP请求。

一般纯静态页面本身都会有Last-Modified信息,Apache服务器会读取页面文件中的Last-Modified信息,并添加到http响应头部。

对 于动态页面,如果在页面内部没有通过函数强制加上Last-Modified,例如header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"),Apache服务器会把当前时间作为Last-Modified,返回给浏览器。

无论是纯静态页面还是动态页面,Firefox浏览器巧妙地按照接受到服务器响应的时间设置缓存页面的Last-Modified,而不是按照http响应头部中的Last-Modified字段。

ETag

既然有了Last-Modified,为什么还要用ETag字段呢?因为如果在一秒钟之内对一个文件进行两次更改,Last-Modified就会不正确。因此,HTTP/1.1利用Entity Tag头提供了更加严格的验证。

Apache服务器默认情况下,会对所有的静态、动态文件的响应头添加ETag字段。

在Apache 的httpd.conf文件中可以通过FileETag指令配置该选项。FileETag指令配置了当文档是基于一个文件时用以创建Etag (entity tag)响应头的文件的属性。在Apache 1.3.22及以前,ETag的值是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。 如果一个目录的配置包含了‘FileETag INode MTime Size’而其一个子目录包含了‘FileETag -INode’那么这个子目 录的设置(并会被其下任何没有进行覆盖的子目录继承)将等价于‘FileETag MTime Size’。

在多台负载平衡的服务器环境下,同一个文件会有不同的etag或者文件修改日期,浏览器每次都会重新下载。设置‘FileETag None’可以使响应头不再包含ETag字段。