随笔 - 6  文章 - 0  评论 - 6 
  2012年3月22日

工作地点是在浙江金华。本地是浙江除杭州外IT企业最集中的地方,环境适宜,物价便宜。生活节奏不快,本公司成立10年已经是行业领军地位,目前正准备上IPO,工作能力突出者有股份奖励,本人也是个程序员已经获得部分奖励。 不管是高手,新手,只要热爱编程,我们都欢迎。具体请看招聘信息链接然后投简历过来,最好能付带作品。谢谢大家捧场。 

 

招聘ASP.NET程序员。具体信息:http://job.cnblogs.com/Offer/20492/

招聘前端工程师。具体信息: http://job.cnblogs.com/Offer/20493/

招聘纯美工。具体信息:http://job.cnblogs.com/Offer/20530/ 

 


posted @ 2012-03-22 08:13 洋葱.Net 阅读(94) 评论(0) 编辑
  2010年8月19日

昨天谈话听到的一些记录,觉得很有道理,分享给大家。

 

不要急于成交,要塑造产品价值。

当别人没有认识到你的产品和服务的价值之前,你绝不应该谈价格。

你卖的是价值,价格只是衡量价值的标尺。如果你上去就扔价格,对方会被吓跑。

来源: 成长家园 www.aoecn.cn

 

posted @ 2010-08-19 11:17 洋葱.Net 阅读(46) 评论(0) 编辑
  2010年8月17日

有一个网站(成长家园www.aoecn.cn)项目中,使用了Hashtable来维护在线用户的状态,具体代码如下:

代码
Hashtable hs = getCacheHs();//从全局缓存中取出 Hashtable 表
if(hs.Contains(uid)){ //比较Hashtable 表中是否有这个用户
  hs[uid] = DateTime.Now;//有用户的更新最后活动时间
}else{
  hs.Add(uid, DateTime.Now);
//没有的插入一个新的行
}

 DateTime t1 
= getUpdateTime();//取得保存的上次更新时间
            DateTime nowt = DateTime.Now;

            TimeSpan ts 
= nowt - t1;
            
if (ts.Minutes >2)
            {
                
//大于2分钟就把Hashtable表中的数据更新到数据库中
                lock (hs)
                {
                    
foreach (DictionaryEntry o in hs)
                    {
                        Updata(o.Key, o.Value);
//更新到数据库方法
                    }
                    hs.Clear();
//清空Hashtable
                    setUpdateTime(DateTime.Now);//保存这次更新时间
                }

            }
        SaveCacheHs(hs);//保存到全局缓存里

 

 


现在问题出来了,如果正在执行foreach 的时候,又有另一个请求来执行hs.Add(uid, DateTime.Now);那么程序会报错说“Hashtable表中的集合已修改;可能无法执行枚举操作。”

所以要把lock锁住整个操作方法,修改后代码如下:

代码
Hashtable hs = getCacheHs();//从全局缓存中取出 Hashtable 表

lock (hs) //要锁住操作Hashtable 的整个过程
{
if(hs.Contains(uid)){ //比较Hashtable 表中是否有这个用户
  hs[uid] = DateTime.Now;//有用户的更新最后活动时间
}else{
  hs.Add(uid, DateTime.Now);
//没有的插入一个新的行
}

 DateTime t1 
= getUpdateTime();//取得保存的上次更新时间
            DateTime nowt = DateTime.Now;

            TimeSpan ts 
= nowt - t1;
            
if (ts.Minutes >2)
            {
                
//大于2分钟就把Hashtable表中的数据更新到数据库中
                
                   
foreach (DictionaryEntry o in hs)
                    {
                        Updata(o.Key, o.Value);
//更新到数据库方法
                    }            
                        hs.Clear();//清空Hashtable
                        setUpdateTime(DateTime.Now);//保存这次更新时间
                    

            }
           SaveCacheHs(hs);//保存到全局缓存里

}

 

 

posted @ 2010-08-17 09:21 洋葱.Net 阅读(221) 评论(0) 编辑
  2010年8月12日

在一个网站内容采集程序中,以前一直都能正常使用,但是这几天采集某一个网站时总是返回403错误。错误信息如下:

“System.Net.WebException: 远程服务器返回错误: (403) 已禁止”

考虑到可能是对方网站做了一些改动,防止他人抓取信息。原来采集是用 WebClient 的,我试着在WebClient中加入一些Headers,但还是无效果。一气之下就使用了HttpWebRequest,结果就能正常抓取信息了。

修改之前的代码:

 

代码
1 using (WebClient webc = new WebClient())
2                 {
3                     string host = Regex.Replace(url, "http://""", RegexOptions.IgnoreCase);
4                     host = host.Substring(0, host.IndexOf("/"));                 
5                     webc.Headers.Add(HttpRequestHeader.Referer,"http://"+host);                   
6                     byte[] bstr = webc.DownloadData(new Uri(url));
7                     return Enc.GetString(bstr);
8                 }

 

 

 

使用HttpWebRequest后正确抓取的代码:

 

代码
            HttpWebResponse res = null;          
            
string strResult = "";

            
try
            {

                HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(url);

                
//req.Method = "POST";
                req.KeepAlive = true;
                req.ContentType 
= "application/x-www-form-urlencoded";
               
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                req.UserAgent 
= "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8";

                res 
= (HttpWebResponse)req.GetResponse();
                StreamReader reader 
= new StreamReader(res.GetResponseStream(), Enc);

                strResult 
= reader.ReadToEnd();



            }
            
catch (Exception ex)
            {
                WWSoft.Often.LogClass.Write(
"PuBll.GetPageHtml(" + url + ")""抓取页面内容", ex);

            }
            
finally
            {
                
if (res != null)
                {
                    res.Close();
                }               
            }

            
return strResult;

 

 

其中原因我就不知道为什么会这样了。

posted @ 2010-08-12 11:29 洋葱.Net 阅读(311) 评论(0) 编辑
  2010年1月22日

服务器安装完成后,其它工作都很顺利的完成。唯独邮件发送服务一直无法解决,出现的症状是,客户端提交的邮件都保存在等待队列里(\mailroot\Queue 文件夹)一封都没有发出去。因为前阵子事情太多就没有去研究原因,把STMP服务改成别人的邮件服务器暂时使用。

 

今天,手头的事情暂时都做完了,闲下来研究了一下windows server 2008R2 的SMTP服务,终于功夫不负有心了。找到了无法发送邮件的原因。邮件无法发送的最终原因是,现在的邮件服务器都会方向查询一下发送者的服务器提交的域名和MX记录是否一致,而我这台服务器还没有MX记录指定到这个服务器的IP地址,所以发送邮件都被拒绝,而出现在等待目录中。

 

知道原因后,我就去指定了一个MX记录到这台服务器的IP。然后在STMP设置里绑定这个IP地址,如下图:

 

然后在"传递"->"高级" 中设置MX的域名,如下图:

 

这样设置后就可以对外发送邮件了。

 

如果要让SMTP服务自动运行,那么还需要在“服务”里把“简单邮件传输协议(SMTP)”设置成自动运行。

 

经过设置后,SMTP服务正常运行。

 

2010年5月21日补充

今天,突然发现邮件无法发送了,登上服务器一看,发现以前的设置没掉了,变成了默认的设置,前几天在服务器上安装了一个杀毒软件,然有卸载了,不知道和这个操作有没有关系。

按原来的设置回去后,试一下还是不能发送邮件,提示是“550 5.7.1 Uable to relay” 的错误。原来是要在中继中设置邮件的使用IP。看下图

点“访问”选项卡,然后点“中继” 在出现的窗口中设置允许访问的IP.确定后就能正常发送邮件了。

posted @ 2010-01-22 11:47 洋葱.Net 阅读(912) 评论(0) 编辑
  2009年12月14日
摘要: 一个网站项目改版升级后用 httpModules 重写了URL,重写的名称是.htm 但部署时发现,网站上现有真实存在的.HTM文件确无法访问了。服务器环境是windows 2003 IIS6 。到GOOGLE上搜索一下找到如下解决办法。在web.config文件中加入1、在<compilation debug="true"> 节点加入<buildProviders> &l...阅读全文
posted @ 2009-12-14 08:57 洋葱.Net 阅读(1734) 评论(6) 编辑