勇仔的学习笔记

2008年7月7日 #

正则表达式网上学习资料

全面的
http://www.wujianrong.com/docs/regular_expression.htm
http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm

http://blog.csdn.net/colin310/archive/2005/02/18/292830.aspx

posted @ 2008-07-07 14:52 勇仔 阅读(5) | 评论 (0)编辑

2007年7月18日 #

用最简单的方法实现Ajax

Aspx文件:
    <script type="text/javascript">
    
function callToServer()
    

     
var param = document.getElementById("txtMessage").value + "&pa"+document.getElementById("a").value;
     
var context = ""
     document.getElementById(
"a").value = document.getElementById("a").value;
//     WebForm_InitCallback();
     <% = callbackScript %>
    }

 
     
function handleResultFromServer(result)
     

        document.getElementById(
"txtResult").innerHTML = result;
     }

     
</script>
    
<form id="form1" runat="server">
    
<div><INPUT id="txtMessage" />
    a
<input id="a" name="a" />
    
<INPUT onclick="callToServer();" type="button" value="Call to Server" />
    
<br />
    
<span style="color:#ff0000"></span>
    Result : 
    
<div id="txtResult"></div>
    
</div>
    
</form>
Aspx.cs文件:

public partial class Test : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
    
protected string callbackScript
    
{
        
get
        
{
            ClientScriptManager cm 
= Page.ClientScript;
            
//return this.GetCallbackEventReference(this, "param", "handleResultFromServer", "context");
            return cm.GetCallbackEventReference(this"param""handleResultFromServer""context");
        }

    }

    
private string arg = "";

    
protected void Page_Load(object sender, EventArgs e)
    
{
    }

    
public void RaiseCallbackEvent(string eventArgument)
    
{
        arg 
= eventArgument + Request["a"];
        
for (int i = 0; i < Request.Params.Count; i++)
        
{
            arg 
+= "Name:" + Request.Params.GetKey(i) +":Value:<span style=\"color:#ff0000\">" + Request.Params[i] + "</span><br/>";
        }

    }

    
public string GetCallbackResult()
    
{
        
return "客户端在[" + DateTime.Now.ToString() + "]传送来 [" + arg + "].";
    }

}

这里主要是用到了Asp.net自带的 System.Web.UI.ICallbackEventHandler接口。
实现的这个接口的控件(包括页面)都可以以异步的方式用服务器发送数据。还可以设置一个回调函数。这个方法有两个局限:函数的返回类型只能是字符串类型。方法只有一个参数(可以通过分割字符串实现多个参数,但不安全。)

posted @ 2007-07-18 16:54 勇仔 阅读(18) | 评论 (0)编辑

2006年8月24日 #

关于onMouseOver出现提示文字的多行处理办法

有时候我们需要对超链接<a href="路径" title="提示文字">链接文字</a>里边的提示文字使用换行(即需要多行提示),可是title,alt之类里边的提示内容是不支持HTML书写的,怎么解决?
很容易,下面有三种方法:
1、把<BR>换成 就可以了,如下代码:
<href="" title="标题:Test Title Clip 时间:2005-11-20 作者:goaler">Test Title Clip</a>

        效果如下:
        Test Title Clip

2、把 换也 或 效果也一样

3、直接加硬回车也一样的效果,例如:
        <a href="...." title="AAAAA
        BBBBB
        CCCCC
        DDDDD">test</a>

posted @ 2006-08-24 15:07 勇仔 阅读(147) | 评论 (0)编辑

2006年8月22日 #

验证码缓存问题完美解决方案

在验证码页面后加一个随机的参数。这样历史记录里就不会有相同的请求了,也就不存在缓存的问题了。
代码如下:

<img id="imgvc" src="ValidateCode.aspx?t='+Math.round(Math.random()*1e17)'" onclick="getObject('imgvc').src='ValidateCode.aspx?t='+Math.round(Math.random()*1e17);" width="66" height="20" align="absmiddle" />

posted @ 2006-08-22 19:29 勇仔 阅读(106) | 评论 (0)编辑

2006年8月12日 #

由于登录失败而无法启动服务的解决方案

在本版面出现这个问题的频率也算是很高的了,新手通常会比较多遇到这个问题
  原因很简单,安装SQL Server时是使用默认登录用户来作为启动SQL Server服务的账号(对于自己使用的单机,通常就是administrator了),当该用户更改了用户名(如有人喜欢把administrator改成admin)或更改了其口令时,再次启动服务器,就出现“同于登录失败而无法启动服务”的错误了
  知道了原因,解决方法也就很显然了
  1,把用户口令改回原来的,再启动服务
  2,使用控制面版服务管理器,找到MSSQLSERVER服务,更改启动账号信息,改成变更后的,再启动服务
  3,也是推荐使用的方法,创建一个新用户,专门用于启动SQL Server服务,安装SQL Server时就使用该用户来启动SQL Server,这样就可以避免用于频繁更改administrator口令而带来的1069错误了。如果已经安装好SQL Server,也可以在控制面版服务管理器下更改MSSQLSERVER服务的服务账号信息,换成SQL服务专用的用户。 【转自世

posted @ 2006-08-12 10:26 勇仔 阅读(34) | 评论 (0)编辑

2006年8月10日 #

衡量大师的标准

大师不是仅靠作品为唯一标准的,以国内几位公认的大师来说,徐悲鸿开拓了中西结合的先例,(以前有,但没有被普及,与社会背景有绝对关系);刘海粟以现代美术教育成名(人体艺术没有他估计要等很久才能被中国艺术界接受);齐白石晚年变法将文人画推入一个新的高度,关键他将民间艺术与所谓文人艺术巧妙结合并影响一代人的画风。
从这些例子看出的是大师是作为艺术承前启后的贡献者来做衡量标准,作品及其技法在其次,如果你要看好的作品---我指直观的作品就未必只看大师的东西,但要了解艺术流派与社会发展对艺术的影响则必须从大师的作品中找答案。
从现在的社会背景来说,是一个不可能产生大师的时代。政治因素能影响艺术的发展,但不大,时代影响大师的出现主要在于社会的发展,社会发展到需要进化的时候,则必然能刺激很多领域发展或改革,这个时候,抓住社会脉搏的人开创新的,被当代认可并影响后世发展的人就具备了成为大师的基本条件。

posted @ 2006-08-10 18:33 勇仔 阅读(17) | 评论 (0)编辑

2006年7月18日 #

邮件发送不成功的问题

自己写的发邮件的函数经常发送几次后就发送不了了。
经过研究发现是邮箱的反垃圾邮件功能在搞鬼。
一般的反垃圾邮件的原理都是通过邮件的Head信息来工作的。
我在网上找到了以下信息:
X-Mailer是信件原文中信件头的其中一项,X-Mailer表示信件是从哪个客户端发送出来的,常见的客户端工具,Outlook Express,   Foxmail和Coremail 的Webmail都可以查看邮件原文,例如,
      Date: Tue, 
6 Aug 2002 16:43:27 +0800 (CST) 
      
From: "Purple" <pjl@163.net> 
      
To: china@netease.com 
      Subject: 
=?gb2312?B?zfjC59Gn1LqxqLzb?= 
      X
-Priority: 3 
      X
-Originating-IP: [202.96.159.254] 
      X
-Mailer: Coremail2.0 Copyright Tebie Ltd., 2001 
  X
-Mailer是代理发信的客户端,如果是Coremail,代表是从Coremail的Webmail发出的信件(163.net),如果是从Outlook发出的,  
X
-Mailer内容会是这样的 X-Mailer: Microsoft Outlook Express 5.50.4807.1700 
  iScanBMail 里面集成的邮件发送系统可以设定不同的X
-Mailer,这样可以避开一些垃圾邮件过滤系统的过滤,所以从iScanBMail发出的邮件一般不会被标识为垃圾邮件。
于是我研究了一下Outlook发送的邮件。发现Outlook发送的邮件比我自己的程序发送的邮件多了几个字段:
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2869
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
我就试着在我的邮件发送类中增加了以下几行:
        mail.Headers.Add("X-Priority", "3");
        mail.Headers.Add("X-MSMail-Priority", "Normal");
        mail.Headers.Add("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869");
        mail.Headers.Add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2900.2869");
最后我怀着无比激动的心情测试了一下。。。。。发现果然发送成功了!!
后续。。。。。。。
邮件能不能发送成功还与服务器有关,有些服务器即使做了以上的修改,也只能保证前几次能发送成功。
发多了还是要被挡掉。(据我估计:可能是使用的邮件服务器信用不好)
看来要完全斗过反垃圾软还是有点困难。总之人品好才是最重要的。

posted @ 2006-07-18 20:05 勇仔 阅读(465) | 评论 (0)编辑

最近项目是跟框架有关的两个问题

l_yzhong   (2006-07-15 13:04:33)
框架中有三个页面(这三个需要登陆,框架不清楚,要看一下程序的目录结构),加上框架就是四个页面

而页面的访问权限又是交给IIS控制的,如果IIS发现是先加载Top.aspx,则跳转页面的URL会是
/Login.aspx?ReturnUrl=%2fMyAccount%2ftop.aspx
如果先加载Bottom.aspx,则会是
/Login.aspx?ReturnUrl=%2fMyAccount%2fBottom.aspx

如果你把PayValidate.htm的内容写到Page_Load中,就不会出现上面的情况了
我的理解:
1、框架和框架包含的页面都要登录才能访问。
2、当用户访问这个框架页面的时候,本来应该直接转向登录页面。可能是IIS的BUG用户没有被转向登录页面。于是框架页面就开始加载它所包含的页面(C)。这时候IIS终于反应过来了将用户转向了登录页面。但这里的ReturnUrl就变成了页面(C)的URl。

分析与解决办法:这个问题出现的原因1是IIS本身的问题。2是框架页面使用的是静态页面。
只要把框架页面改成动态页面问题就没有了。

另一个跟框架有关的问题:
一个在框架中的页面重定向到另一个页面的时候。这个页面会在框架中。但有些页面是始终都应该在框架外的。比如说网站的首页。这时只要在网站的首页的<head></head>之间加上下面这段脚本首页就不会再出现在框架里了。

<script>
       
if(window.parent[0!= null)
       
{
            
if(top.location.href != window.location.href)
            
{
                top.location.href 
= window.location.href;
            }

       }

        
</script>    

posted @ 2006-07-18 17:40 勇仔 阅读(339) | 评论 (2)编辑

2006年4月26日 #

自己写的一些小函数.用正则表达式实现一些小功能~

修改URl中的一个参数值:
    public static string ChangeParam(string url, string paramName, string value)
    
{
        
if (Regex.IsMatch(url, "[?&]" + paramName + "=[^&]*",RegexOptions.IgnoreCase))
        
{
            url 
= Regex.Replace(url, "(?<s>[?&]" + paramName + "=)[^&]*""${s}" + value,RegexOptions.IgnoreCase);
        }

        
else if (Regex.IsMatch(url, "[?&]"))
        
{
            url 
+= '&' + paramName + "=" + value;
        }

        
else
        
{
            url 
+= '?' + paramName + "=" + value;
        }

        
return url;
    }


    /// <summary>
    
/// 将字符串类型的泘点数或整数乘100,返回整数部分的字符串。
    
/// 主要用于美元的换算
    
/// </summary>
    
/// <param name="floatString"></param>
    
/// <returns></returns>

    public static string FloatMultiplyHundred(string floatString)
    
{
        floatString 
= floatString.Trim() + "00";
        
return Regex.Replace(floatString, @"^(?<int>\d+)\.(?<cent>\d{2})\d*$""${int}${cent}");
    }



posted @ 2006-04-26 21:38 勇仔 阅读(48) | 评论 (0)编辑

数据库还原后连接不上

有时候数据库还原后.在SQL Server的企业管理器里查看到用户的权限都是正常的, 但是数据库连接就是有问题.
我的解决办法就是把数据库的用户删了重新建~

posted @ 2006-04-26 21:27 勇仔 阅读(59) | 评论 (0)编辑