
置顶随笔
摘要: 我会首先对体育世界里频繁的造神运动开炮,然后我会很高调的对广大网络暴民开火。至于事情的导火索,前者是姚明在中国西班牙之战的表现,后者则是刚刚结束的包盈盈中国乌克兰女子佩剑决赛表现。
阅读全文
posted @ 2008-08-15 00:22 红与黑 阅读(283) 评论(7)
编辑
摘要: 最近网上有关龙芯电脑的讨论又热闹起来。起因无非是龙芯电脑首批500套1800元的电脑主机销售一空,其实这个本不算什么,卖就卖呗,即使有点噱头也无伤大雅,君不见所谓业界领先的什么CPU,GPU巨头之间口水打的还少么,但我实在不知道这次为什么网民基本上一边倒地成怀疑和批评的态度。坦白而言,对于CPU和操作系统这类东西而言,从战略上考虑是绝对有需要的。汉芯完蛋了,红旗linux在桌面应用上基本为零,现在一个龙芯,居然只能跑到欧洲去找市场。国内市场的短视行为已经使得很多富于战略意义的行为居然变成了人人喊打的过街老鼠。
阅读全文
posted @ 2008-07-18 19:07 红与黑 阅读(201) 评论(3)
编辑

2008年8月15日
摘要: 我会首先对体育世界里频繁的造神运动开炮,然后我会很高调的对广大网络暴民开火。至于事情的导火索,前者是姚明在中国西班牙之战的表现,后者则是刚刚结束的包盈盈中国乌克兰女子佩剑决赛表现。
阅读全文
posted @ 2008-08-15 00:22 红与黑 阅读(283) 评论(7)
编辑

2008年7月21日
using System.Net;
public static string GetWerther(string CityName)

{
WebClient MyWea = new WebClient();
MyWea.Credentials = CredentialCache.DefaultCredentials;
string strurl = "http://weather.tq121.com.cn/mapanel/index_new.php?city=" + HttpUtility.UrlEncode(CityName, Encoding.Default) + ""; //欲获取的网页地址
//Response.Write(strurl);
Uri MyUri = new Uri(strurl);
//
//MyWea.QueryString.Add("city", CityName);
string ok, okone, oktwos, okthrees, okfours;
int oktwo, okthree, okfour;

/**//*WebClient MyWeather = new WebClient();
MyWeather.Credentials = CredentialCache.DefaultCredentials;*/
try

{

//ok = MyWea.responseBody;
byte[] pagedata = MyWea.DownloadData(MyUri);
//从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)

//以下两句每次只要使用一条即可,功能是一样是用来转换字符集,根据获取网站页面的字符编码选择
//如果获取网站页面采用的是GB2312,则使用这句
ok = Encoding.Default.GetString(pagedata);
//如果获取网站页面采用的是UTF-8,则使用这句
//string ok = Encoding.UTF8.GetString(pagedata);
if (ok.IndexOf("<title>天气搜索</title>") > 0 && ok.IndexOf(".tq121.com.cn") > 0)

{
okone = ok.Substring(ok.IndexOf(" <span class=\"big-cn\">") + 22, 8);
if (okone == "未找到您查的城市")

{
ok = "未找到〖" + CityName + "〗的天气预报资料\n";
}
else

{
oktwo = ok.IndexOf("<td width=\"160\" align=\"center\" valign=\"top\" class=\"weather\">");
//alert();
oktwos = ok.Substring(oktwo + 60, ok.IndexOf("</td>", oktwo + 60) - oktwo - 60);
okthree = ok.IndexOf("<td width=\"160\" align=\"center\" valign=\"top\" class=\"weatheren\">", oktwo + 60);
okthrees = ok.Substring(okthree + 62, ok.IndexOf("</td>", okthree + 60) - okthree - 62);
okfour = ok.IndexOf("<td width=\"153\" valign=\"top\"><span class=\"big-cn\">", okthree + 60);
okfours = ok.Substring(okfour + 50, ok.IndexOf("<br>", okfour) - okfour - 50);
ok = " " + CityName + ":" + oktwos + " " + okthrees + " " + okfours;
}
}
}
catch

{
ok = "暂无城市〖" + CityName + "〗的天气预报";
}
ok = "<span style=\"color:#FF0000;\">" + ok + "</span>";
return ok;
}
当然,其实也就是一个小偷程序的雏形。我本地采用的是UTF-8编码,对象页面是GB2312,所以在页面后缀处理上不能用Server.UrlEncode,而只能用HttpUtility.UrlEncode进行文字编码。如果本地是GB2312,可能就不需要进行编码处理了,但我没有测试,只是给大家提供一个思路。。
至于下面的那些,都只是分析取得的字符串提取有用的内容而已,网上还有很多相似的代码,大家可以综合比较一下,都是WebClient的应用。。。
posted @ 2008-07-21 21:11 红与黑 阅读(245) 评论(2)
编辑
http://files.cnblogs.com/MilanGo/Source.rar
里面有三个常用控件的源码。分别是FreeTextBox3.1.6,BorgWorX.Web.Core.Ajax,以及一个大文件上传的完整方案。.net版本都是2.0。
FreeTextBox3.1.6的官方版本是不开源的,我做的也就是反编译,然后替换掉了其中的SgmlReader类。其次就是添加了一两个方便使用的属性,大家用用的就可以,看有什么能够改进的。FreeTextBox现在官方版本是4.0beta,没怎么用,大家有用过的么!!
BorgWorX.Web.Core.Ajax其实和大名顶顶的AjaxPro系出同门,使用方法也大同小异。
那个大文件上传也是反编译的.net1.1版本,然后针对2.0做了一定的修改(很粗糙),有使用方法的说明。和AspnetUpload那个大文件上传控件差不多。。。
posted @ 2008-07-21 00:58 红与黑 阅读(1081) 评论(5)
编辑

2008年7月18日
一个小项目,差不多是一个单用户个人博客的性质。技术上没什么说的,都差不多。现在就是说一下开发后的问题。
服务器是一个虚拟空间,操作系统是Server 2003,Web发布不是IIS,而是一个叫“
Abyss Web Server ”的工具,支持ASP.NET2.0的应用。语言包是繁体中文。客户要求英文界面。支持繁体。所以选用UTF-8作为网站编码,这个也没有问题,本地开发完成后,测试没有问题,上传空间,噩梦来临了。
首先是提示空间缺少“System.EnterpriseServices.dll”的引用。但我想System.EnterpriseServices.dll是Framework的默认组件之一,应该不是我代码的原因,万般无奈之下,我想它不是缺少“System.EnterpriseServices.dll”,我把本机Framework自带的的上传上去不就可以了,OK,总能解决了这个问题。。。,此问题结论:没办法,空间不是IIS,可能对.net支持不是很完美吧。。。
其次就是文件权限的问题,我在本机测试当然是相关文件的读写权限都开了,国内虚拟空间一般只需要直接上传这些就可以了,可是我客户那个空间不是那样,默认FTP的权限很低,需要执行CHMOD 777的权限指令,具体操作就是选定服务器相关文件和文件夹,右键会有“属性(CHMOD)”选项,按照提示操作即可。。
再次就是对于AXD文件的处理。在ASP.NET2.0中WebResource.axd文件的重要性不言而喻了。但是那个空间防火墙屏蔽了axd后缀文件通信,所以我只好把WebResource.axd的一些脚本单独分离出来然后附加进去,而且将原本一些axd文件的http处理改成了aspx,问题总算得到解决。。。。
最后一些问题就是那个服务器管理非常严格,那个Web发布工具定义了很多过滤词汇,例如一些SQL语言的关键字,还有一些常见的粗口等,国内显然这部分是交给写代码的人自行处理过滤(看写代码人的人品和能力了),所以有时候会动不动出现一些501,404错误什么的,万一出现这个情况,你要有点耐心和客户沟通,最简单的方法就是在一个静态页面在网址后面加一些测试的字符串,看是否已经被服务器提供方屏蔽了。。
我听那个客户说香港那边虚拟主机用的基本上是linux+PHP+MySQL的搭配,Windows主机不是主流,这个空间提供商虽然在安全问题上处理很强大,但是也造成了太多的不方便,所以大家如果接的港台和国外开发,一定要弄清除它们的服务器环境,在本机尽量虚拟一个真实环境来。。
posted @ 2008-07-18 20:12 红与黑 阅读(1874) 评论(11)
编辑
摘要: 最近网上有关龙芯电脑的讨论又热闹起来。起因无非是龙芯电脑首批500套1800元的电脑主机销售一空,其实这个本不算什么,卖就卖呗,即使有点噱头也无伤大雅,君不见所谓业界领先的什么CPU,GPU巨头之间口水打的还少么,但我实在不知道这次为什么网民基本上一边倒地成怀疑和批评的态度。坦白而言,对于CPU和操作系统这类东西而言,从战略上考虑是绝对有需要的。汉芯完蛋了,红旗linux在桌面应用上基本为零,现在一个龙芯,居然只能跑到欧洲去找市场。国内市场的短视行为已经使得很多富于战略意义的行为居然变成了人人喊打的过街老鼠。
阅读全文
posted @ 2008-07-18 19:07 红与黑 阅读(201) 评论(3)
编辑

2007年9月9日
ASP.NET的Menu和数控件可以绑定XML文件,而且在视图状态下就可以基本完成整个编辑绑定工作,但实际情况千变万化,我遇到过一种情况,就是网站采用Forms验证,登录后台后根据权限的不同产生一个导航条。其实实现的方法很多,JS可以,但是我至今还没有找到一款Windows下适合编写JS代码的工具,每次只能凭ctrl解决问题。。而且JS的调试也是一个问题,IE很弱智,只能转到Firefox中,很是繁琐,所以一般情况下,我都采用C#绑定。
首先是Forms验证,这个不是本篇的重点,所以不作详细的说明。权限有“"System", "Ador", "Xml", "Type", "Blog", "Group", "File", "Goods", "Admin", "User"”,其中“User”是前台注册用户拥有的权限,“Admin”以及之前的权限是后台管理的权限。绑定的XML文件代码如下(Admin_Menu.XML):
<?xml version="1.0" encoding="utf-8" ?>
<menu>
<menuItem url="#" title="网站全局设置" target="_self" Role="System">
<menuItem url="Admin_Config.aspx" title="参数设置" target="Mian" Role="System"/>
<menuItem url="Admin_RePort.aspx" title="举报管理" target="Mian" Role="System"/>
</menuItem>
<menuItem url="#" title="用户及管理员" target="_self" Role="Ador">
<menuItem url="Admin_User.aspx" title="Blog用户管理" target="Mian" Role="Ador"/>
<menuItem url="Admin_AdWork.aspx" title="后台管理统计" target="Mian" Role="Ador"/>
</menuItem>
<menuItem url="#" title="Xml文件管理" target="_self" Role="Xml">
<menuItem url="Admin_Xml.aspx?Way=Auto" title="自动生成文件" target="Mian" Role="Xml"/>
<menuItem url="Admin_Xml.aspx?Way=Hand" title="手动生成文件" target="Mian" Role="Xml"/>
<menuItem url="Admin_Xml.aspx?Way=Repair" title="修复xml文件" target="Mian" Role="Xml"/>
</menuItem>
<menuItem url="#" title="Type类别设置" target="_self" Role="Type">
<menuItem url="Admin_Type.aspx?Go=Goods" title="物品栏目" target="Mian" Role="Type"/>
<menuItem url="Admin_Type.aspx?Go=File" title="上传栏目" target="Mian" Role="Type"/>
<menuItem url="Admin_Type.aspx?Go=Group" title="圈子栏目" target="Mian" Role="Type"/>
<menuItem url="Admin_BlogFClass.aspx" title="博客大类设置" target="Mian" Role="Type"/>
</menuItem>
<menuItem url="#" title="博客管理" target="_self" Role="Blog">
<menuItem url="Admin_BlogSClass.aspx" title="小类设置" target="Mian" Role="Blog"/>
<menuItem url="Admin_BlogList.aspx" title="博客文章管理" target="Mian" Role="Blog"/>
<menuItem url="Admin_BlogImage.aspx" title="博客图片管理" target="Mian" Role="Blog"/>
</menuItem>
<menuItem url="#" title="圈子管理" target="_self" Role="Group">
<menuItem url="Admin_GroupLife.aspx" title="圈子活动管理" target="Mian" Role="Group"/>
</menuItem>
<menuItem url="#" title="上传文件管理" target="Mian" Role="File">
<menuItem url="Admin_PhotoList.aspx" title="图片管理" target="Mian" Role="File"/>
<menuItem url="Admin_MediaList.aspx" title="音频管理" target="Mian" Role="File"/>
<menuItem url="Admin_VideoList.aspx" title="视频管理" target="Mian" Role="File"/>
<menuItem url="Admin_FlashList.aspx" title="Flash管理" target="Mian" Role="File"/>
<menuItem url="Admin_DocList.aspx" title="文档文件管理" target="Mian" Role="File"/>
<menuItem url="Admin_ZipList.aspx" title="压缩文件管理" target="Mian" Role="File"/>
<menuItem url="Admin_Others.aspx" title="其它文件" target="Mian" Role="File"/>
</menuItem>
<menuItem url="#" title="物品管理" target="Mian" Role="Goods">
<menuItem url="Admin_Goods.aspx" title="社区物品管理" target="Mian" Role="Goods"/>
<menuItem url="Admin_GClass.aspx" title="物品小类别" target="Mian" Role="Goods"/>
</menuItem>
</menu>
XML文件也不需太多的说明,Role节点值就是对应的权限。
在网上有些高人给出了遍历XML的代码,按照那些思路,修改一下,代码如下:
private int LinkNum = 0;
//private static int LinkNum = 0;全局继承
protected void Page_Load(object sender, EventArgs e)

{
try

{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("../XML_Total/Admin_Menu.xml"));
BuildTree(xmlDoc.ChildNodes[1].ChildNodes, TreeMenu.Nodes);
}
catch

{

}

}
private void BuildTree(XmlNodeList XmlNodes, TreeNodeCollection treeNodes)

{
for (int i = 0; i < XmlNodes.Count; i++)

{
if (XmlNodes[i].NodeType == XmlNodeType.Element)

{
TreeNode tNode = new TreeNode();
if (XmlNodes[i].Attributes.Count > 0)

{
if (User.IsInRole(XmlNodes[i].Attributes["Role"].Value))

{
if (XmlNodes[i].HasChildNodes)

{
tNode.Target = "_self";
tNode.NavigateUrl = "javascript:TreeView_ToggleNode(TreeMenu_Data," + LinkNum + ",TreeMenun" + LinkNum + ",' ',TreeMenun" + LinkNum + "Nodes)";
}
else

{
tNode.NavigateUrl = XmlNodes[i].Attributes["url"].Value;
tNode.Target = XmlNodes[i].Attributes["target"].Value;
}
tNode.Text = XmlNodes[i].Attributes["title"].Value;
LinkNum++;
treeNodes.Add(tNode);
}
}
if (XmlNodes[i].HasChildNodes)

{
BuildTree(XmlNodes[i].ChildNodes, tNode.ChildNodes);

}

}
}
}
其实就是一个遍历XML文件,根据Forms验证自带的用户权限验证,看是否与XML中“Role”值对应。
posted @ 2007-09-09 10:31 红与黑 阅读(540) 评论(0)
编辑

2007年9月7日
摘要: 一天用新装的IE7浏览开发的博客网站,页面是用js调用XML文件,遍历一下里面内容(是图片地址),然后显示出来。前几个打开好好的,后来却突然提示Js脚本出错,IE对JS出错处理的结果很白痴,也就告诉你出错了,但不会提示,或者说提示了也很难有头绪找出问题所在,于是立马在Firefox中测试,居然Pass,一点问题也没有。
阅读全文
posted @ 2007-09-07 17:34 红与黑 阅读(1016) 评论(8)
编辑
摘要: 做程序一定考虑全面一些,特别是Web程序员,要尽量考虑客户端的多样性
多上网找找资料,最好追根溯源,官方和明间说法都听听
开源,不自私
技术员最好有点自恋精神,但不要太多,热爱是要热爱,但不要沉迷,否则连自己GF都Pass了就不好
阅读全文
posted @ 2007-09-07 16:55 红与黑 阅读(1140) 评论(4)
编辑