Microsoft Office
SharePoint Portal Server
MVP

Sign In

<January 2007>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

RSS 2.0 | Atom 1.0 | CDF

Archive

Navigation

Search

Categories

On this page

面对客户的普遍反对,运营商还会有什么花招呢?
javascript的Date问题
小当黑客一把
BatchConvert-1.0.1发布
BatchConvert发现了问题和改进计划
将邮件服务迁移到sogou的企业免费邮局服务
断网的烦恼
中文SPS2003管理界面变成英文的解决办法
VSS不支持UTF-8的问题解决!

京ICP备06027344号

Total Posts: 179
This Year: 0
This Month: 0
This Week: 0
Comments: 39

 Friday, January 19, 2007
Friday, January 19, 2007 12:21:12 AM (中国标准时间, UTC+08:00) ( )

今天在看了cnbeta上面一文章:写的是上海一个电信用户如何通过投诉,最终电信遵守合同约定去掉在其拨号后强制弹出广告的问题,最后并总结了投诉的经验。其实这些经验在很多论坛已经很多人总结过了:不能嫌麻烦与运营商妥协;不断向运营商的上级主管部门投诉;要求书面回复;以前可以实现的功能、享受的服务要求以后继续享受。

其实简单得说上海电信的做法叫HTTP请求劫持,即把客户发送的HTTP请求进行转换,以致将客户的浏览器引导至特定的Web服务器。这个技术99年就出现过,不多当时是黑客所为。黑客查找互联网上的弱密码路由设备,在支持此技术的设备上面做劫持。黑客这样做的目的一般就只有两个,使被劫持的页面的带毒或者挂上木马。现如今,运营商的网络经验增多,黑客搞不了这些,电信却自己把这个技术拾起来,赚广告费了。被用来增收的还有114电话,114也不叫查号台了,改叫电话搜索引擎。114的特服费也涨价了,公益性质没有了......

现如今运营商都说自己的日子不好过,竞争激烈了、话费还得不断的降低、客户还容易流失,不得不想各种办法增收。可是我们看到的是:竞争的激烈没有改善运营商的服务,话费的不断降低换来的是运营商的收入不断增长,客户容易流失运营商却不珍惜,增收的结果是客户对其单方面违约不守诚诺越来越厌烦,甚至通过网上交流来总结投诉的经验。

那么问题在什么地方呢?竞争还不够激烈,产业结构还不够合理;电信运营行业是国有企业,但也是公共事业。我在华北地区观察了一些地市的运营商,凡是经常激烈的地方,价格竞争不再管用的时候,运营商的服务会逐步改善。在北京我的宽带断了一个星期,在不断向更高级别部门投诉的情况,花了几十块钱打投诉电话的情况下,问题才解决。这是因为北京的电信价格竞争被有关部门严格控制,没有竞争。而山东某地的网通承诺通信故障4小时解决,超时双倍赔偿,实际平均是1个小时解决问题。为什么?因为那里的固网有三家运营商,肯定地运营商更多,价格竞争过去以后,只能靠服务赢得客户。产业结构问题显而易见,南北运营商划江为界,还开始搞南北互相限速。

相应主管部门,没有尽到监督的义务,却在运营商之间和设备商之间搞利益最大化。也不知通信促进经济带来的社会效益大,还是经济促进通信行业的效益大。更有一些通信学术界为行业利益摇旗呐喊,某些人不方便说的话,不方便搞得舆论,由他们全面代劳了......

两个字:悲哀!

Comments [0] | | # 
 Wednesday, January 17, 2007
Wednesday, January 17, 2007 5:40:38 PM (中国标准时间, UTC+08:00) ( )
我是在用javascript生成Unix时间戳的时候发现的问题。
你可以在c:\创建一个test.js文件,然后把下面的代码粘贴进去,然后在命令行直接执行c:\test.js:
 
theDate=new Date("January 1, 1970 8:00");
WScript.Echo(theDate);
WScript.Echo(Date.parse(theDate));
secondDate=new Date(1969,12,1,8,0,0,0);
WScript.Echo(secondDate);
WScript.Echo(Date.parse(secondDate));
thirdDate=new Date(1970,1,1,8,0,0,0);
WScript.Echo(thirdDate);
WScript.Echo(Date.parse(thirdDate));
 
代码说明:这段代码是使用js的Date对象的两个构造函数构造了三个Date对象。第一个Date对象和第三个Date对象以不同的构造方式创建了同一个时间。第二和第三个Date对象使用相同的构造函数创建了不同的时间。
 
但是结果是:
Thu Jan 1 08:00:00 UTC+0800 1970
0
Thu Jan 1 08:00:00 UTC+0800 1970
0
Thu Jan 1 08:00:00 UTC+0800 1970
2678400000
 
 
这明显是矛盾的。我怀疑这是一个js解释器的问题。另外Date的UTC方法也有类似的问题。
Comments [0] | | # 
 Tuesday, January 16, 2007
Tuesday, January 16, 2007 11:39:17 PM (中国标准时间, UTC+08:00) ( )

老婆周五(2007-1-19)要去海淀妇幼医院去做定期产前检查,但是海淀的新爹似乎都很认这个医院,每天早上挂号都要几十米,6点以后到了几乎就没有可能挂到专家号了。最近可以网上挂号,可以提前三天,也就是今天(2007-1-16)凌晨可以开始挂号。好不容易等服务器时间跨过00:00,服务器立刻负载大增,进入挂号页面几十秒才显示,我一看这个情况,赶快改挂专科号,不容易,挂了一个3号,再看那五六个专家没人15个号,都挂满了.......

为了熬夜挂号怕误事,茶水喝多了,挂完号睡不着了。看这海淀妇幼的网上挂号运气,这个网站看起来一般,要不研究一下看看能不能去掉3天的限制。看看了他的html源代码,系统给定的日期代码不是直接的日期,而是一串数字。仔细看看,有点意思,给出的三个日期代码的数字串末尾一样,看来三个有关系。再看网站是PHP写的,立时怀疑三个数字串都是Unix时间戳。立时找来PHP for win32,给自己机器上装了一个,把它的数字串拷贝过去,用PHP拷贝按照Unix时间戳解码,没错都是Unix时间戳。在刷新两下,发现数字串变化,再解析,时间是刷新时服务器时间加3天。这就好说了,不用什么复杂程序,做一个html就能搞定。

把它的起始选日期的页面另存下来,手动修改一个2007-1-22的Unix时间戳,测试,可以挂2007-1-22的号了。这样基本程序原形完工。但是这样搞太麻烦,大家都是程序员,都是懒人,这个工作是可以自动完成的嘛!修改另存的页面,去掉选择时间,改成手动添年月日和一个Unix时间戳文本框。加一个按钮,在点击按钮的时候生成Unix时间戳,再点提交,进入指定日的挂号界面。到此界面就设计完成。

后面的计算Unix时间戳的程序费了老大的劲。很多年没有写js了,嗯,得有4年没有写js了。js里面有Date对象,但是忘了哪个方法管转换时间戳了,Google找了一个代码段,一测生成的不是标准的Unix时间戳。继续Google找,发现PHP的时间戳好像是毫秒戳,js的Date对象的是微秒戳,这个好办,微秒戳除以1000。嗯,时间戳可以了。后面如何把时间戳写进文本框,又找了一段代码作例子。这么长时间不写js真是不行了。再测试,成功!

犹豫了一下,还是把这个发布出来。毕竟现在当个新爹挺不容易的。不过大家手下留情,万一用的太滥,这个漏洞被发现了,有得自己受苦了。还有里面的html点击的时候,IE会自动把里面js禁用,这个时候要把屏幕上部的那个提示条,选择允许组织的内容。不然是算不出Unix时间戳的。

不放心的朋友可以自己检查源代码,我这里下载的是没有病毒的。还有就是我还没有测试是否能通过后面的挂号,测试过的朋友能用的话给我发个邮件,分享一下你们当新爹的感受。使用这个挂号程序会带来什么后果我也不负任何责任的,如果被医院发现说你挂得号无效,可和我没有关系,这可是你自己的老婆怀孕作检查。祝各位好运!

下载地址如下:http://blog.zhangchi.com.cn/downloads/guahao.rar

Comments [1] | | # 
 Monday, January 15, 2007
Monday, January 15, 2007 11:00:06 PM (中国标准时间, UTC+08:00) ( )

二进制版本:http://blog.zhangchi.com.cn/downloads/batchconvert-1.0.1-bin.rar

源代码版本:http://blog.zhangchi.com.cn/downloads/batchconvert-1.0.1-src.rar

修改内容:

  • 修改了一个由于iconv不支持Windows带空格的文件名导致的问题。

说明:这个错误其实就是我前面说的安全性问题。仔细分析了有关的资料,以及自己程序对错误的捕捉,发现问题并不在我的代码里面。然后捕捉了一下我隐藏的错误信息,发现是iconv没有找到要转换的文件,同时把路径识别成了三个文件。使用带引号的路径作为参数以后,问题消失了。

此外还发现一个不知道是Windows还是.NET Framework的问题,当然这也可能是我程序的问题。路径选取对话框在路径是Desktop的时候,预置路径不生效。这个还需要再次测试。

Comments [0] | | # 
 Wednesday, January 10, 2007
Wednesday, January 10, 2007 1:52:03 PM (中国标准时间, UTC+08:00) ( )

当需要转换的文件没有Users权限的时候,会造成转换失败。这个应该是启动iconv转换进程的时候,没有加权限的原因。很快我会修补上这个问题。

此外还准备加上文件类型的过滤。

Comments [0] | | # 
 Friday, January 05, 2007
Friday, January 05, 2007 3:07:03 PM (中国标准时间, UTC+08:00) ( )

sogou是一个很低调的公司,sogou拼音输入法似乎口碑相当好。这个免费企业邮局也相当不错,不像Google的hosts服务那样难申请,不像MS的Live Domains那样加广告。功能还全,我喜欢...

Comments [0] | | # 
 Wednesday, January 03, 2007
Wednesday, January 03, 2007 9:36:57 PM (中国标准时间, UTC+08:00) ( )

台湾地震带来的光纤断线,造成的影响越来越大......

前几天我发布的小工具里面用的libiconv费了我不小的力气:开始的时候是摆脱在微软的一位朋友帮我下载,后来是逛了不少的代理网站找了一个韩国的代理服务器在下载下来的,但是转天就不能用了。估计全中国的网民的流量把韩国人吓坏了......

今天早上收到了微软祝贺我获得MVP的邮件,可是到MVPAward网站怎么都上不去,只好给MVP Lead发邮件询问这个不马上激活会不会有什么问题。

中国的互联网基础建设比想象的差的多,断网这个事情就不说了,南北互联互通的问题更烦人。南电信北网通,本是同根生,却敢冒天下之大不韪,以一己之利,人为限制南北互通。上网的人都知道这个事情了,国家的管理者没人知道么?还是管理者都不上网?

中国的互联网软实力不断增强,不断有本土企业战败国际大鳄,但是基础建设却在变相的垄断之下......

唉,全是牢骚阿...

Comments [0] | | # 
 Sunday, December 31, 2006
Sunday, December 31, 2006 6:04:40 PM (中国标准时间, UTC+08:00) (  |  |  )

中文SPS2003发布的时候,正值2003年,.NET Framework 1.1和Windows Server 2003刚刚发布不久。但是随着.NET Framework 1.1的补丁不断出来,以及Windows Server 2003的补丁不断推出,即使SPS2003也不断推出补丁,但是还是有一些著名的小问题。比如中文的SPS2003的管理界面都变成了英文的界面。

这个问题估计可能不是SPS2003的问题,因为SQL Server 2000 Reporting Service也有类似的问题,解决的办法也是一样的。我最早发现这个问题是在2004年,当时.NET Framework 1.1 SP1刚刚发布。咨询微软的工程师,得到了support网站的一篇文章。文章里面讲由于.NET Framework 1.1 SP1的某些安全改进影响了.NET Framework 1.1的i18n解决方案,导致SPS2003的管理界面变成了中文。解决办法很简单,在创建的网站的web.config文件属性的“安全”里面,添加一个“Everyone”,并赋予“完全”的权限。这个方法在某种程度上会降低安全性,但是具体会带来什么危险,我也不清楚了。

最近,客户和我反映管理界面还是经常变成英文的,用上述的方法改一下,过一段时间就又会自己的变成英文的。我自己试了一下,发现上述的方法好像跟本不起作用了。我向客户了解了一下,最近对SPS2003做过什么处理,结果是客户最近部署过自己开发的WebPart,在web.config里面添加过SafeControl。我看了一下,发现web.config文件的编码被改成ANSI的编码了,修改为UTF-8编码以后,不用修改权限,管理界面就恢复中文了。再仔细研究了一下用户的使用习惯,她总是先下载web.config文件,用UltraEdit编辑以后,在上传回去。问题就出在UltraEdit,它在保存文件的时候,并不保持文件原来的编码格式,而是默认使用当前系统的默认编码(GB2312)来保存。不知道这个是UltraEdit的功能还是缺陷,或者其他人汉化导致的。

Reporting Service的问题也是类似的,我们做过一个安全插件,编辑过他的两个虚拟目录的config文件。把这些congfig文件的编码和权限调整过来以后,Reporting Service的管理界面也恢复正常了......

我在这里向大家推荐Editplus2编辑器,韩国人开发的,相当不错,支持在ftp里面直接打开,还可以另存到ftp上面。只不过好像国内没有代理商......

Comments [0] | | # 
Sunday, December 31, 2006 5:12:30 PM (中国标准时间, UTC+08:00) (  |  |  )

最近一直在做一个项目,以SOA为理念基于SPS2003的三个应用系统。后端以WebService提供服务,前端为嵌入SPS的UserControl,WebService与UserControl之间由序列化的对象进行通讯。由于开发环境是VS.NET 2003,所以就直接使用VSS6d来管理代码了,结果问题就跟着来了:VSS6d不支持UTF-8编码的程序文件以文本方式储存,否则就只能二进制方式存储。在开始阶段主要是开发WebService并没有什么问题,但是随着大量的UserControl开发出来并部署到SPS2003当中的时候,测试人员报告界面乱码。手工把ascx文件转换成UTF-8编码后,问题消失。

这样貌似问题解决了,但是以后每次重新编译部署的时候,都要把上百的ascx文件的编码手工修改一遍。修改编码成了一个极其繁琐的体力劳动......自己研究了一下,又请教了一下微软的工程师,有三个解决方法:

  1. 在备份以后,重新把代码加入VSS的代码库,使用二进制方式存储代码。这会带来两个问题:一是二进制方式存储,在不同的代码版本之间不能做Different操作,二是二进制方式存储不再是层量存储,每签入一次,保存的都是一个完整的副本。
  2. 使用VS2005 TFS来做代码管理。这需要在VS.NET2003内安装TFS的插件。这种方法微软网站上面介绍过,没有实践过。
  3. 使用批量转换工具将ascx的编码转换过来。

我的项目现在只好使用第三种方式,但是找不到有批量的GB2312转UTF-8编码的工具,我只好自己写了一个。这个工具内部的转换引擎是GNU的libiconv,大家可以下载我编译好的版本直接使用,或者下载源代码自己研究。这个工具用.NET2.0写的,所以运行需要.Net Framework 2.0 Runtime。

细心的朋友会问我,为什么我只强调了ascx为什么没有提asmx呢?我当初也奇怪这个问题,后来研究了web.config文件里面的system.web段的globalization的fileEncoding属性约束了ASP.NET从本地读取程序文件的编码。在默认的ASP.NET项目的web.config里面是没有这个属性的,ASP.NET默认会以Windows的默认代码页来读取程序。而我们的asmx文件内部没有中文,即使有中文,ASP.NET也可以识别出来。

但是SPS2003创建的站点里面的web.config文件里面的system.web段的globalization的fileEncoding属性为"utf-8"。我测试了一下,这个属性删除以后,SPS也会有莫名其妙的错误,看来还是不能删除的。

Comments [0] | | #