月份:2008年6月

百度Hi竟然捆绑安装Cnnic无忧上网条?

昨天正在Ps图片,突然Ps就非法操作,挂掉了.好郁闷.接着我就重启机器,就无法进入到桌面了,实在在登陆界面,硬盘灯狂闪,用Win PE查看文件,找不到硬盘,只好启动到Mac系统下,把桌面等地方的文件备份出来.然后重装系统.

前好多天我就想重做系统,因为被损坏的C++搞乱了系统,但因为一些繁杂琐碎的事,一直没有腾出空闲重装系统,桌面上的图标有满了.

MSDN版的Xp SP3早就下载好并且刻录好了.Nero真是有点变态了,一个刻录软件,现在竟然干到一二百兆,弄了一堆没有用的东西,什么视频编辑,光盘复制,音频转压,CD封面设计,自己做好自己的刻录本职工作好了,就算我要去设计封面,我干嘛不用Ps?只选择了刻录组件,其他都没选择,没想到启动后竟然提示要安装完整的以获得什么优势,下面自吹自擂的广告词也很恶心:”Nero-真的很好用”,想关掉这个Nero源获取都没办法,无法保存设置.晕啊.下次我用Once做刻录试试.要扔掉Nero了.越来越烂了.

昨晚装系统,装完后因为更新了声卡驱动,导致录音机蓝屏,只能换回原来没有问题的版本,安装百度HI后,在奇虎360中竟然发现了Cnnic无忧上网条,文件路径是空的,很疑惑,但是没有去怀疑百度Hi,心想它即使要绑定插件也要绑定自己的工具条吧.因为驱动不完美,也做完了Ghost,所以今天又重新安装了系统,然后装BaiduHi,又发现了上网条,把上网条清理之后再次安装了一遍百度HI,又发现了上网条,果然是百度Hi搞的,真无语了.经过网友测试,的确有这个存在,是在官方首页下载的beta2版本,不知道什么原因.不排除误杀的可能.唉垃圾插件,流氓插件,何时能了!!!!

雨下了一天了,稀里哗啦的.挺好.绿萝被我放在外面了,把每个叶子都擦了一遍,有半年多的灰了.对面二楼的房子传出当愣愣的声响,特意观察了一下,一分钟响一次,一次两声,貌似手机的短信和弦声,从从昨晚发现一直到现在还没有停止.够烦人的了.很佩服这个设备.我也很好奇,是什么东西的声响,不应该是手机短信啊,理论上不像,但声音很像.奇怪.奇怪.真奇怪.

NSIS V2.37 汉化版下载

  NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个免费的 Win32 安装、卸载系统,采用了简洁高效的脚本方式。它本来是一个由 Nullsoft 创建并用于作为 Winamp 及其插件发布的系统,但现已被上百个应用程序所应用,作为它们进行程序发布的工具。

  NSIS 创建的安装程序可以进行安装、卸载、设置系统设置、解压文件等等。几乎可以做所有事情。因为它基于脚本文件,所以您可以完全控制您的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个普通的程序语言 – 但其仅设计用来创建安装程序。

  简体中文增强版除了主程序的翻译之外还把主要的文档作了翻译并修正了官方版本里简体中文语言习惯用语不合适之处。单纯的使用脚本来编写安装程序对于大多数人来说不仅困难而且容易出错,为此,简体中文增强版里集成了一个相当好用的脚本编辑器 – VNISEdit 增强版 (Build 060712 By Restools)。只需要根据向导就能轻松的做出很酷的安装程序,甚至,您还可以在向导里给您的安装程序添加启动画面、让您的安装程序在安装过程中播放音乐,而这,只需要点几下鼠标即可。除此之外,VNISEdit 附带的注册表转换插件还可以把 .reg 文件一次性的转换为 NSIS 脚本,补丁制作向导可以一次性地为您生成体积超小的补丁升级程序。简体中文增强版还在官方版本的基础上集成了一些有用的插件,比如 FindProc 可以根据可执行文件名查找进程是否在运行,这在制作补丁程序或者汉化包时非常有用。由于各个组件在使用时各自独立,所以强烈推荐安装全部组件。(注:部分插件不支持 9X 系统)

安装版下载地址:
http://nchc.dl.sourceforge.net/sourceforge/nsis/nsis-2.37-setup.exe

免安装版下载地址:
http://jaist.dl.sourceforge.net/sourceforge/nsis/nsis-2.37.zip

开启安装log版下载地址:
http://jaist.dl.sourceforge.net/sourceforge/nsis/nsis-2.37-log.zip

8192字节版下载地址:
http://nchc.dl.sourceforge.net/sourceforge/nsis/nsis-2.37-strlen_8192.zip

汉化补丁下载(0602版):
点击下载此文件

远程引用网易相册图片(xmlhttp+缓存)

163的相册有防盗链的功能,在其他域名下引用图片时候会得不到数据.
体现在浏览器上,就是一个红X.
我们利用httprequest和application缓存技术,可以破解这种防盗链.

保存成一个asp文件在你网站目录,就可以用如下的方式调用网易的图片了.除了网易,我想其他加了防盗链的图片都可以用这个方法,比如百度,比如QQ相册.等等

http://你的网站/aspname.asp?url=图片地址

<%
'代码作者:siyizhu 日期:2006-05-22
Dim url, body, myCache

url = Request.QueryString("url")

Set myCache = new cache
myCache.name = "picindex"&url
If myCache.valid Then
body = myCache.value
Else
body = GetWebData(url)
myCache.add body,dateadd("d",1,now)
End If

If Err.Number = 0 Then
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite body
Response.Flush
Else
Wscript.Echo Err.Description
End if

'取得数据
Public Function GetWebData(ByVal strUrl)
Dim curlpath
curlpath = Mid(strUrl,1,Instr(8,strUrl,"/"))
Dim Retrieval
Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get", strUrl, False,"",""
.setRequestHeader "Referer", curlpath
.Send
GetWebData =.ResponseBody
End With
Set Retrieval = Nothing
End Function

'cache类

class Cache
private obj 'cache内容
private expireTime '过期时间
private expireTimeName '过期时间application名
private cacheName 'cache内容application名
private path 'url

private sub class_initialize()
path=request.servervariables("url")
path=left(path,instrRev(path,"/"))
end sub

private sub class_terminate()
end sub

public property get blEmpty
'是否为空
if isempty(obj) then
blEmpty=true
else
blEmpty=false
end if
end property

public property get valid
'是否可用(过期)
if isempty(obj) or not isDate(expireTime) then
valid=false
elseif CDate(expireTime)<now then
valid=false
else
valid=true
end if
end property

public property let name(str)
'设置cache名
cacheName=str & path
obj=application(cacheName)
expireTimeName=str & "expires" & path
expireTime=application(expireTimeName)
end property

public property let expires(tm)
'重设置过期时间
expireTime=tm
application.lock
application(expireTimeName)=expireTime
application.unlock
end property

public sub add(var,expire)
'赋值
if isempty(var) or not isDate(expire) then
exit sub
end if
obj=var
expireTime=expire
application.lock
application(cacheName)=obj
application(expireTimeName)=expireTime
application.unlock
end sub

public property get value
'取值
if isempty(obj) or not isDate(expireTime) then
value=null
elseif CDate(expireTime)<now then
value=null
else
value=obj
end if
end property

public sub makeEmpty()
'释放application
application.lock
application(cacheName)=empty
application(expireTimeName)=empty
application.unlock
obj=empty
expireTime=empty
end sub

public function equal(var2)
'比较
if typename(obj)<>typename(var2) then
equal=false
elseif typename(obj)="Object" then
if obj is var2 then
equal=true
else
equal=false
end if
elseif typename(obj)="Variant()" then
if join(obj,"^")=join(var2,"^") then
equal=true
else
equal=false
end if
else
if obj=var2 then
equal=true
else
equal=false
end if
end if
end function
end class
%>

Php版本:

<?php
/**********************************************************************
突破防盗链的显示图片标签[simg],PHP程序部分
作者:t1000
开发论坛:水客坊论坛
*********************************************************************/
ob_start();
$img=$_GET['url'];

$host=$path=str_replace('http://','',$img);
$host=explode('/',$host);
$host=$host[0];
$path=strstr($path,'/');
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if ($fp)
{
@fputs($fp, "GET $path HTTP/1.1
");
@fputs($fp, "Host: $host
");
@fputs($fp, "Accept: */*
");
@fputs($fp, "Referer: http://$host/
");
@fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
");
@fputs($fp, "Connection: Close

");
}

$Content = '';
while ($str = fread($fp, 4096))
$Content .= $str;
@fclose($fp);
$pos=strpos($Content,"

");
$head=substr($Content,0,$pos);
$text=substr($Content,$pos+4);
header($head);
echo $text;
?>

日子叠着日子

日子叠着日子,像纸一样,叠着,如果去暴力的撕开,就碎了.

一个偶然,发现了Bs Contact控件的授权的C#算法,于是操刀写算法注册机.

N次陷入死巷后终成正果.可惜VB.Net,该死的微软DotNet框架.写个几百K的程序都没办法,无法脱离这个.Net圈子.一个注册机要几兆之大?可笑.

于是,开始了VB6的翻写.为什么用VB6,因为它比较容易!

孰知,变态的Bs授权算法,算式的运算竟然超过了VB中的Long允许长度.换成Double进行位运算,还是溢出,左溢出,右溢出.陷入了死结,网上找答案,得到要想进行大数运算可能要自己写算法了,我数学可没那么高深,要放弃了.

VC++6中没问题,不用担心有溢出,而且也不用去在意那个该死的.Net框架.可C不熟悉,上手慢,装了个鸟文版看着不舒服,就又下了一个残次品的中文版,残次品的定义是我装了出错之后给定义的.又找了一个健全的版本装,依旧报错.这系统算是被糟蹋了.重装!装Xp SP3,虽然想起装系统我就犯愁,但是没办法.

下载Xp系统盘的空闲上网闲逛,也不知道从哪得的灵感,想起用别的语言写个Dll去处理Vb中会溢出的算式,然后Vb去调用它取最终的结果就行了.然后就动手操作.果然可以.用E写了个简单的Dll,然后用Vb调用.哦耶.搞定.兴奋.非常的兴奋.

整理,虚拟机上编译(本机的操作系统已经接近混乱崩溃,没法正常编译.),然后分发给Vrml群里的一些人测试,当作端午节的礼物.呵呵,一共只有不到500K.结束了.战斗的前奏刚刚结束,该冲锋了.

欲编写一套虚拟公路系统,含冥思苦想出来的可视化建模功能,来作为我的Vrml收关之作,不知道结果,我只求过程中的喜悦.

夜深了,该睡去….安,端午快乐.

实现C#和VB.net之间的相互转换

也许你需要把你以前的VB.net项目迁移到C#,或者与此相反,不是每个.net程序员都同时精通C#和VB.net。也许你需要读懂用VB.net写的示例代码或者共享的源码,但是你又恰好只熟悉C#,这时候你就需要一种转换软件来帮助你快速、准确地完成你的工作。

  以下分别对目前流行的几种转换软件列出了安装、使用的方法,以及它们各自的优点和缺点,希望能帮助读者更快地找到自己需要的软件,并尽快部署、使用,解决工作中的问题。

  VB.net转换为C#

  1. VB.net to C# Converter(下载地址:http://www.vbconversions.com/

  VB.net to C# Converter是一款离线转换软件,安装简单,提供试用版,而且试用版永不过期,但是试用版只能翻译不超过600行源码的工程。VB.net to C# Converter将用户的VB.net项目用C#语言重新编写,同时变量名、注释行都被保留下来。它具有完备的功能,提供专业的报告生成工具,而且能够对转换过程中的错误生成错误记录,并且在此基础上提供错误分析和提供修改建议。总之,它是一款充分为使用者考虑的,功能完备的转换工具。

  它提供多种类型工程的转换,包括Windows Forms 工程、Console 工程、Windows Control 库、Web Control 库、Web Services工程、Windows Service 工程。提供多种形式的转换,包括单一工程、多个工程、交互式代码转换、命令行形式转换。大多数的VB 函数都能转换为相应的 C# 功能,而且注解等也能得到很好的转换。可以使用向导,并提供在线帮助。转换准确率高达99%。

  但是,它不支持中文,中文注解会生成乱码。完整版需要购买。

  2.在线VB.net程序转换为C#

  在线转换的网址是http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx。使用方便,而且免费。只是目前正在试用阶段,转换后程序错误较多,并且在转换后的代码里不包含注释,这是因为转换后的代码在返回之前,首先被翻译为抽象树,而目前的这种树状结构把注释都忽略了。

  C#转换为VB.net

  1. C# to VB.NET Translator实现单个文件的转换

  这是一个使用Web Services的在线解决方案,转换界面已经简单的不能再简单了。你要做的只是把你的 C#代码拷贝、粘贴到输入框中然后点击翻译(Translate)按钮。它可以免费使用,但必须在线转换(网址是http://authors.aspalliance.com/aldotnet/examples/translate.aspx)。现在,它还不能处理标签(tags)或者任何HTML,所以你的C#代码必须是纯的C#。并且,它只能转换一个文件,不能转换整个目录。

  2.使用Web Services代理实现整个目录中文件的转换

  基于以上的Web Services,XML for ASP.NET Developers提供了可以实现整个目录转换的解决方案,你可以在下面网址看到它的示例代码和解决方案:http://www.xmlforasp.net/codeSection.aspx?csID=44。这种转换方式可以免费使用,并能转换整个目录。XML for ASP.NET Developers 上的解决方案实际还是调用C# to VB.net Translator的Web Services,只是扩展了C# to VB.net Translator的功能,但是部署要麻烦许多,需要自己建立工程,并添加引用。

  为了方便大家更好地理解XML for ASP.NET Developers的解决方案,在这里对解决方案的实现步骤做进一步阐述。其具体步骤如下:

  ● 新建一个asp.net Web 服务的C#工程ConvertC。

  ● 在工程中添加Web引用http://authors.aspalliance.com/aldotnet/examples/csharptovbtranslator.asmx?WSDL。该引用自动命名为com.aspalliance.authors.

  ●在该工程根目录下添加CsharpFiles文件夹,将需要转换的C#文件另存为.txt文本文件放到文件夹下。

  ●添加新的Web窗体ConvertCtoVb.aspx,在该窗体中添加id为CSharptoVBCon-verterFrm的form。

  ● 双击ConvertCtoVb.aspx生成ConvertCtoVb.aspx.cs 文件。该文件首先要实例化Web引用com.aspalliance.authors中的CSharpToVBTranslator类,并取得id为CSharptoVBCon-verterFrm的 form作为代码容器,然后对CSharpFiles文件夹中的每个文件分别读取需要转换的代码,调用该Web Service中的TranslateCSharpToVB( )方法进行转换,最后输出转换后的代码到页面的form代码容器。

  ● 设置ConvertCtoVb.aspx为初始文件,运行该工程,CsharpFiles文件夹下的所有文件就可以从c#转换到vb.net了。

  3.使用C# to VB.net Converter

  该软件下载地址是http://csharpconverter.claritycon.com/。该软件提供在线和离线两种方式实现C# to VB.net的转换,而且离线版安装简单,使用方便。但在某些情况下转换不太准确,其实这些情况在其他一些转换工具中也普遍存在。这就需要我们了解一些C#和VB.net之间的差别,下面就列出了几种需要手动修改的情况。需要注意的是,这些情况也是我们在使用别的转换软件实现自动转换后,应该重点检查的部分。

  ● C#中引用比较和值的比较都使用“==” 关键字,而VB.net 使用“is”关键字做引用比较,使用“=”来做值的比较,所以当C#程序中使用“==”来做引用比较时会出现转换错误。修改方法是:转换后,所有的引用比较中都用 “is”替换 “=”。

  ● C#中字符连接符和加法运算符都使用“+”,所以当C#中使用“+”作为字符连接符时将引起C#中的字符连接符“+”不能正确的转换为VB.net中的字符连接符“&”。修改方法是:转换后,手动修改字符连接符“+”为“&”。

  ● 因为VB.net是大小写不敏感的,C#转换后可能出现重名。修改方法是:手动修改成恰当的惟一名字。

  ● 注释有时不能加载到正确位置。修改方法是:手动把注释调整到正确位置。

  手工转换

  以上提到的是使用工具实现C#和VB.net之间的转换,但是在时间和工作量允许的情况下,你也可以完全通过手动修改实现C#和VB.net之间的相互转换。当然这样做的好处是明显的,首先你可以全面了解两种语言的语法和构造的差别,并可以通过一门语言学习另外一门语言。其次,也可以有效地避免上面提到的转换软件在特定情况下可能产生的错误。因为,虽然我们可以使用自动化工具实现转换,提高我们的工作效率,但至今却还没有一种工具能够实现100%的无差错转换。因为,大多数的转换软件都是基于字面和语法的转换,而不是基于程序逻辑的转换,所以程序转换过程中就可能因为程序逻辑不被理解而发生如前面提到过的错误,因此使用自动化工具转换后我们还是要进行测试和少量修改的,同时了解一定的C#和VB.net的语法和它们之间的差别对我们还是很有好处的。如果采用手工转换,那么C#和VB.net之间的语法对照表可能对你有用,可以参考以下网址:http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html

另一则:

1.http://www.kamalpatel.net/(最常用的,不过对于16进制的Int不能正常转换)
在线版:VB.Net => C#   C#=>VB.Net
离线版:C#=>VB.Net
2.http://csharpconverter.claritycon.com/(推荐!非常好用的一个,几乎没出过太大的问题。)
在线版:C#=>VB.Net
离线版:C#=>VB.Net
3.http://www.ragingsmurf.com/
在线版:C#=>VB.Net
4.http://aspalliance.com/
在线版:C#=>VB.Net
5.http://developerfusion.com/
在线版:VB.Net => C#   C#=>VB.Net