不写错别字是一种态度

阳光男孩倡议:

在文字交流中(包括文章、作业、帖子、邮件、短信),请使用规范语言,避免错别字、病句

发送含有错别字的文字内容,是不负责任的做法,是对收件人的不尊重。

用yate2实现软VoIP语音通话(SIP协议)

2009年1月7日,工业与信息化部发放了三张3G牌照,标志着中国进入了通信技术的新时代。3G的重要特性之一是高速数据链路,移动上网速度大大提高。同时,中国移动也大幅下调了2G网络GPRS上网的资费。可是,语音通话费用仍然按兵不动。作为永远处于弱势的用户,我们却可以通过VoIP网络电话自己实现免费语音通话。

网络电话是下一代网络(NGN)的重要应用之一。“下一代网络”是指10年以后的网络,全部基于软交换(Softswitch)技术。但是,拨打VoIP免费网络电话,并不需要再等待10年。基于现有的TCP/IP网络,我们已经可以使用开源的VoIP软件,实现PC-to-PC的免费语音通话。(注:这里的“免费”,是指不需要支付传统语音通话费用,ADSL/FTTB/3G等上网接入仍然是需要费用的)

下面,我将介绍如何用yate2软件搭建VoIP服务器,并用SIP协议完成语音通话。在我的实例中,使用了局域网内的3台PC,Windows操作系统,接在同一个集线器上,并不是广域网或3G接入。

yate2建立VoIP服务器

Yate = Yet Another Telephony Engine,是一款开源的VoIP网络电话软件。它可以作为服务器、也可以作为客户端使用。yate2可以在Linux下运行、也可以在Windows下运行。yate2下载地址

无闪烁、SEO友好的完美图像替换(pFIR_improved)

图像替换是网站前端设计中经常使用的技巧之一。本文在pFIR图像替换技术的基础上,提出了一个改进版本。

什么是图像替换(FIR)?

考虑这样一种情况:<h4>Image Replacement</h4>,效果:

Image Replacement

现在希望用一张图片替换掉文字内容,使得网页更加丰富多彩(很多情况下是为了表现出特殊字体效果)。做到这种效果:

用JavaScript检测浏览器是否打开图像显示

JavaScript能不能检测浏览器是否打开图像显示?看似一个非常简单的问题,但是网上却很难查到相关资料。大部分用户不会关闭图像显示,但是仍有少数非宽带用户关掉了图像。为了使网站变得更加人性化、具有更好的可用性,Web前端工程师有时需要通过JavaScript检测“显示图像”功能是否打开。

方法一:图像尺寸法

未指定width、height属性的<img>标签,在图片成功下载的情况下能从width、height属性中取得图片的真实尺寸,而图片功能未开启时则是一个固定的、比较小的尺寸(相当于那个“红叉”)。为此,可以插入一张尺寸较大的图片,然后读取width属性,如果尺寸与原图不符说明图片显示没有开启。

<!-- 插入Google的logo,图片宽度应为168px -->
<img id="__ImageSupport" src="https://www.google.com/images/nav_logo4.png"
  style="position:absolute;visibility:hidden;z-index:-1;" alt=""/>
<script type="text/javascript">//<![CDATA[
function ImageSupport() {
  var m=document.getElementById('__ImageSupport');
  if (m && m.width > 100) return true;
  else return false;
}
//]]></script>

演示:图像尺寸法 检测浏览器是否打开图像显示

How to specify server IP in HttpWebRequest

I was writing an HTTP proxy during last weeks. I need to address the origin server with a custom IP address, but I should keep the "Host" header.

I googled about "HttpWebRequest set server IP", "WebRequest modify Host", etc. I read through several posts, and realized:

  • When HttpWebRequest is created, the "Host" header is automatically set to the "host:port" portion of the Uri.
  • Attempt to modify HttpWebRequest.Headers["Host"] will throw an exception.
  • The server IP address of the HTTP Request is determined by the host portion of the Uri, and is automatically resolved against the DNS server.
  • When HttpWebRequest.Proxy is set to use a proxy, the server IP address is determined by resolving the host of Proxy property. I can set the origin server as the proxy, this is called "Proxy hack".
  • When using a proxy, the HTTP Request-Line looks like "GET http://host/ HTTP/1.1" rather than "GET / HTTP/1.1". Every HTTP/1.1 compliant origin server should accept this, but firewalls may think it's a "proxy request" and block it, and some non-compliant servers does not accept it.

SOLUTION

My purpose is: make HttpWebRequest send its request to a custom IP address, but leave the Request-Line as "GET / HTTP/1.1".

实验:自定义Windows帐号的RID值

Windows帐号的SID由“S”、SID版本号、颁发机构、子颁发机构、RID组成,本文讨论的是最后一段RID的自定义。

Windows安全原理与技术老师给我推荐了一篇文章:《EFS加密的一线生机-加密帐户被删的补救方法》,文中介绍了在Windows中创建指定RID值帐号的方法。10月14日,我对文中的方法作了验证。现在我将发给老师的电子邮件整理成这篇文章。

实验环境:Windows Server 2003 SP2 en-us @ VMware Server

RID的自定义

《EFS加密的一线生机》提到的修改RID方法是:在Windows中,下一个新建帐户所分配的RID是由HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account注册表项的F键值所确定的。F键值是二进制类型的数据,在偏移量0048处的四个字节,定义下一个帐户的RID。

批处理下载全校毕业照

从Windows 95开始,Windows操作系统正式脱离了DOS。在图形界面以外,“MS-DOS方式”和“命令提示符”仍然是Windows用户常用的工具。命令行下的批处理,则是Windows系统中最方便的编程工具。

早在Windows之前,DOS中就已经有了“批处理”这个概念,批处理文件的扩展名为bat。从Windows XP开始,command.com变成了cmd.exe,命令行解释器更是增加了大量新功能,使批处理的功能更为强大;许多外部命令(需要独立exe或com程序)变成了内部命令,使批处理的性能有所提高;批处理文件的扩展名是bat或cmd。

下面,我将介绍如何用一个批处理文件下载全校的毕业照。

考察情况

上海交通大学F05级毕业生的毕业照由上海瀚源数码科技有限公司负责拍摄。拍摄后3天,学生可以登录瀚源数码网站,查询与校对本人的图像信息。查询过程中,需要输入学号和身份证号码,两者匹配才能看到照片。

守株待兔骗过UAC

User Account Control (UAC)Windows Vista操作系统引入的一项安全基础架构技术。 应用程序只拥有标准帐户权限,除非管理员明确授予其更高的权限。 这样,只有用户信任的程序才能获得高权限,而恶意软件则没有对系统造成破坏所需的权限。

为什么需要UAC?

在2003年之前,我一直使用着Windows 98。 Windows 98有一个“用户帐户”设置,设置后会在开机时出现密码输入框。 可是我惊奇的发现,在密码输入框中简单的点击“取消”按钮,就可以进入系统,并且所有操作并不会受到限制。 Windows 98的多个用户帐户,仅仅是桌面自定义的区分,并没有对操作权限作任何限制。 如果想删除一个帐户,只需到C:\WINDOWS删掉用户名.pwl文件就可以了。

2003年我开始使用Windows XP Professional。 第一次打开新电脑,没有要求输入密码的提示,就直接进入了桌面。 在安装完毕日常使用的软件后,我为Administrator帐户设置了密码,并且创建了一个Users组的帐户来进行日常操作。

很快我发现,《写作之星WDS》软件无法正常启动了。 作为正版用户,我给翰林汇公司打了电话;客服人员告诉我,1.0版本是为Windows 98设计的,在Windows XP中则必须使用管理员帐户才能启动。 经过多次尝试,我发现只需把我的帐户加入Power Users组,就可以正常启动《写作之星WDS》,但是仍然无法打开和保存文件、只好复制、粘贴。

用Lua语言编写Wireshark dissector插件

Wireshark是一款著名的网络协议分析工具,基于GPLv2协议开源,支持Linux、Windows、MacOS等多个操作系统。

Wireshark is the world's foremost network protocol analyzer, and is the de facto (and often de jure) standard across many industries and educational institutions.

Wireshark development thrives thanks to the contributions of networking experts across the globe. It is the continuation of a project that started in 1998.

Wireshark已经支持数千种协议,对新协议的支持还在不断增加。**今天,你发明了一个新的网络协议,也想让Wireshark识别,你该怎么办呢?**你有两个选择:

  1. 发布你的网络协议,等到有1,000,000人每天使用你的协议时,Wireshark就会支持你的协议
  2. 编写一个Wireshark插件,自己动手、丰衣足食

如果你选择了前者,请按下CTRL+D,然后在你改变主意的时候再回来。

用TinyGet投票

前几天,有人托我在东方网的某个评选活动中帮他投票,票数多多益善——也就是所谓的“刷票”。

投票活动页面

打开投票页面,先手工投几票,发现这个活动的投票不需要登录,对于IP地址、投票频率都没有任何限制。

用Fiddler2截取投票HTTP报文

Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.

Fiddler is freeware and can debug traffic from virtually any application, including Internet Explorer, Mozilla Firefox, Opera, and thousands more.