在线
客服

在线客服
尊敬的客户,我们24小时竭诚为您服务 公司总机: 0755-83312037 (32条线)

客服
热线

0755-83312037 (32条线)
7*24小时客服服务热线

?

关注
微信

关注官方微信

返回
顶部

13

2019-04
HTTP响应的头文件影响文件下载

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">设置HTTP文件下载四要诀.</font> </td> </tr></tbody></table> <p>网站不仅仅只包含网页,有时你需要提供用户能下载的文件。将你的文件放到服务器上并在网页中附上链接只是第一步,你还需意识到HTTP响应的头文件影响文件下载。</p> <p><strong>提示一:强制下载并控制文件名</strong></p> <p>在HTML中提供一个下载链接很简单:</p> <p><span><span class="code"><font face="NSimsun"><code>&lt;</code><code>a</code></font> <font face="NSimsun"><code>href</code><code>=</code><code>"http://download.httpwatch.com/httpwatch.exe"</code><code>&gt;Download&lt;</code><code>a</code><code>&gt;</code></font></span></span></p> <p><span><span><code></code></span></span>对于浏览器不知道如何呈现的二进制文件,如安装程序和ZIP文件,这工作的很好。这会出现一个对话框,允许用户将文件存储到本地。</p> <p align="center"><img border="0" alt="IE File Save Dialog" src="http://www.webjx.com/files/allimg/100402/0717040.jpg" width="413" height="282"></p> <p>问题在于,如果文件能呈现自己,不同的浏览器行为就不一样。例如,如果你链接一个纯文本文件,浏览器会打开它,不会提示保存下载。</p> <p align="center"><img border="0" alt="Plain Text in IE" src="http://www.webjx.com/files/allimg/100402/0717041.jpg" width="510" height="416"></p> <p>你可以加入以下响应头文件强制使用文件下载对话框。</p> <pre>Content-Disposition: attachment; filename=&lt;file name.ext&gt;</pre> <p>头部还可以控制默认的文件名,这可以帮助你方便的生成像getfile.aspx一样的内容,但你要提供一个更有意义的文件名给用户。</p> <p>对于静态内容,您可以在您的Web服务器手动配置额外的头文件。例如,下面是在IIS中设置:</p> <p align="center"><img border="0" alt="content_disposition_header" src="http://www.webjx.com/files/allimg/100402/0717042.jpg" width="481" height="456"></p> <p>为动态生成的内容,您需要在网页的服务器端代码中添加此头部。</p> <p>加入了头部之后,浏览器总是提示用户下载该文件:</p> <p align="center"><img border="0" src="http://www.webjx.com/files/allimg/100402/0717043.jpg" width="510" height="416" alt=""></p> <p></p>

Read more+

13

2019-04
开发者程序员的5个不同层次

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">本文来自国外程序员所写,里面的内容比较专业,基本涵盖所有程序员所需要的知识结构,对于想要进阶提供自己的开发者来说值得参考。</font> </td> </tr></tbody></table> <p>提示:本文来自国外程序员所写,里面的内容比较专业,基本涵盖所有程序员所需要的知识结构,对于想要进阶提供自己的开发者来说值得参考。</p> <p>注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。</p> <p>计算机科学 Computer Science</p> <p><img height="538" alt="" src="http://www.webjx.com/files/allimg/100403/1341180.jpg" width="523" border="0">&#160;</p> <p>软件工程 Software Engineering</p> <p><img height="379" alt="" src="http://www.webjx.com/files/allimg/100403/1341181.jpg" width="523" border="0">&#160;</p> <p>程序设计 Programming</p> <p><img height="549" alt="" src="http://www.webjx.com/files/allimg/100403/1341182.jpg" width="522" border="0">&#160;</p> <p><img height="515" alt="" src="http://www.webjx.com/files/allimg/100403/1341183.jpg" width="519" border="0">&#160;</p> <p><img height="428" alt="" src="http://www.webjx.com/files/allimg/100403/1341184.jpg" width="522" border="0">&#160;</p> <p><img height="476" alt="" src="http://www.webjx.com/files/allimg/100403/1341185.jpg" width="521" border="0">&#160;</p> <p>经验 Experience </p> <p><img height="401" alt="" src="http://www.webjx.com/files/allimg/100403/1341186.jpg" width="522" border="0">&#160;</p> <p>学识 Knowledge</p> <p><img height="572" alt="" src="http://www.webjx.com/files/allimg/100403/1341187.jpg" width="518" border="0">&#160;</p> <p><img height="432" alt="" src="http://www.webjx.com/files/allimg/100403/1341188.jpg" width="521" border="0">&#160;</p> <p>【CSDN编者按】</p> <p>上述图书中,第一级对应的英文为Unleashed series, 21 days series, 24 hour series, dummies series...其实也有很多不错的书,Unleashed即图灵所出揭秘系列,好书不少;即使是21天、24小时、dummies系列,从入门来说也基本上都算好书。大家在选书时,首先对国内原创的大套书要特别持谨慎态度,越大型的丛书越要小心,因为没有人对这样浩大的工程真正负责。而国外的书原著总体上水平都有较好的保证,主要看译者是否负责。</p> <p>图书第二级中《别让我思考》对应英文为《Don't Make me Think》,中文版名字应该是《点石成金》。</p> <p>图书第三级中《代码珠玑》,中文版名应为《编程珠玑》(两卷:卷1链接,卷2链接)。</p>

Read more+

13

2019-04
Ewebeditor和fckeditork编辑器单引号过滤

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">Ewebeditor及fckeditork单引号的问题.</font> </td> </tr></tbody></table> <p>Ewebeditor及fckeditork,90%的网站都是采用这两种编辑器作为产品或者内容的说明部分的编辑窗口,近日,一客户的外贸站点基本上快完工了,因客户产品分类多,故而让客户自己在后台添加产品,但是客户反映,在后台添加产品时,如果产品说明内容太过复杂的话,产品怎么也添加不入数据库中。</p> <p>当时,我们也好生郁闷,这到底怎么回事,我们亲自测试后台添加任意的产品或者文字都能成功,偏偏他就不行,在网站搜索了相关的如“Ewebeditor 不能添加到数据库”,似乎找到了一点答案,因Ewebeditor自身没对单引号过滤,导致了添加不到数据库的问题。于是乎,我们把编辑器换成了fckeditork,可是还是不行,那是Ewebeditor及fckeditork自带的不完善导致的吗?为什么一个简单的单引号会引发不能添加到数据库呢,想到这里,我们想到了分析下入库代码,我们采用的是SQL=insert into product(title,content) values(' " &amp;request("title")&amp; "' ,' "&amp;request("content")&amp; " ' )的写法,于是我们找到客户当时COPY进编辑器里的内容,发现,果然这内容中包括有单引号,原来,正是由于客户提交到编辑器里的内容中含有单引号,导致我们的SQL语句变化了,相当于原来是SQL=insert into product(title,content) values('内容' ,'内容' )变成了SQL=insert into product(title,content) values(' 内容' ,' 内容'' ),我们细看就知道,就因为这content里多了个单引号,SQL语句发生的严重的写法错误,但是,我们也奇怪,既然他写法错误,为什么SQL语句不给出错误提示呢,竟然也会提示操作成功,想到这里,我们想到了2003年那几年,普遍的小黑客喜欢用的' or' =' or' 的后台入侵法,是乎正是利用了SQL执行时,没过滤单引号的BUG,导致SQL怎么执行,结果都返回真,呵呵,没想到,原以为写程序尽量图个简单明了,也是个错啊。好了,问题找到了,以后,凡是SQL入库前,我们都把字段过滤后再传值,就不会再出这样的问题了,下面是一个非常完善的SQL安全过滤函数,大家直接拿去就可以调用了。</p> <p> </p> <table style="BORDER-BOTTOM: #0099cc 1px solid; BORDER-LEFT: #0099cc 1px solid; TABLE-LAYOUT: fixed; BORDER-TOP: #0099cc 1px solid; BORDER-RIGHT: #0099cc 1px solid" border="0" cellspacing="0" cellpadding="6" width="95%" align="center"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#ddedfb"><font color="#000000">Function HTMLEncode(Str)<br>&#160;If Isnull(Str) Then<br>&#160;&#160;&#160;&#160; HTMLEncode = ""<br>&#160;&#160;&#160;&#160; Exit Function <br>&#160;End If<br>&#160;Str = Replace(Str,Chr(0),"", 1, -1, 1)<br>&#160;Str = Replace(Str, """", "&amp;quot;", 1, -1, 1)<br>&#160;Str = Replace(Str,"&lt;","&amp;lt;", 1, -1, 1)<br>&#160;Str = Replace(Str,"&gt;","&amp;gt;", 1, -1, 1) <br>&#160;Str = Replace(Str, "script", "&amp;#115;cript", 1, -1, 0)<br>&#160;Str = Replace(Str, "SCRIPT", "&amp;#083;CRIPT", 1, -1, 0)<br>&#160;Str = Replace(Str, "Script", "&amp;#083;cript", 1, -1, 0)<br>&#160;Str = Replace(Str, "script", "&amp;#083;cript", 1, -1, 1)<br>&#160;Str = Replace(Str, "object", "&amp;#111;bject", 1, -1, 0)<br>&#160;Str = Replace(Str, "OBJECT", "&amp;#079;BJECT", 1, -1, 0)<br>&#160;Str = Replace(Str, "Object", "&amp;#079;bject", 1, -1, 0)<br>&#160;Str = Replace(Str, "object", "&amp;#079;bject", 1, -1, 1)<br>&#160;Str = Replace(Str, "applet", "&amp;#097;pplet", 1, -1, 0)<br>&#160;Str = Replace(Str, "APPLET", "&amp;#065;PPLET", 1, -1, 0)<br>&#160;Str = Replace(Str, "Applet", "&amp;#065;pplet", 1, -1, 0)<br>&#160;Str = Replace(Str, "applet", "&amp;#065;pplet", 1, -1, 1)<br>&#160;Str = Replace(Str, "[", "&amp;#091;")<br>&#160;Str = Replace(Str, "]", "&amp;#093;")<br>&#160;Str = Replace(Str, """", "", 1, -1, 1)<br>&#160;Str = Replace(Str, "=", "&amp;#061;", 1, -1, 1)<br>&#160;Str = Replace(Str, "'", "''", 1, -1, 1)<br>&#160;Str = Replace(Str, "select", "sel&amp;#101;ct", 1, -1, 1)<br>&#160;Str = Replace(Str, "execute", "&amp;#101xecute", 1, -1, 1)<br>&#160;Str = Replace(Str, "exec", "&amp;#101xec", 1, -1, 1)<br>&#160;Str = Replace(Str, "join", "jo&amp;#105;n", 1, -1, 1)<br>&#160;Str = Replace(Str, "union", "un&amp;#105;on", 1, -1, 1)<br>&#160;Str = Replace(Str, "where", "wh&amp;#101;re", 1, -1, 1)<br>&#160;Str = Replace(Str, "insert", "ins&amp;#101;rt", 1, -1, 1)<br>&#160;Str = Replace(Str, "delete", "del&amp;#101;te", 1, -1, 1)<br>&#160;Str = Replace(Str, "update", "up&amp;#100;ate", 1, -1, 1)<br>&#160;Str = Replace(Str, "like", "lik&amp;#101;", 1, -1, 1)<br>&#160;Str = Replace(Str, "drop", "dro&amp;#112;", 1, -1, 1)<br>&#160;Str = Replace(Str, "create", "cr&amp;#101;ate", 1, -1, 1)<br>&#160;Str = Replace(Str, "rename", "ren&amp;#097;me", 1, -1, 1)<br>&#160;Str = Replace(Str, "count", "co&amp;#117;nt", 1, -1, 1)<br>&#160;Str = Replace(Str, "chr", "c&amp;#104;r", 1, -1, 1)<br>&#160;Str = Replace(Str, "mid", "m&amp;#105;d", 1, -1, 1)<br>&#160;Str = Replace(Str, "truncate", "trunc&amp;#097;te", 1, -1, 1)<br>&#160;Str = Replace(Str, "nchar", "nch&amp;#097;r", 1, -1, 1)<br>&#160;Str = Replace(Str, "char", "ch&amp;#097;r", 1, -1, 1)<br>&#160;Str = Replace(Str, "alter", "alt&amp;#101;r", 1, -1, 1)<br>&#160;Str = Replace(Str, "cast", "ca&amp;#115;t", 1, -1, 1)<br>&#160;Str = Replace(Str, "exists", "e&amp;#120;ists", 1, -1, 1)<br>&#160;Str = Replace(Str,Chr(13),"&lt;br&gt;", 1, -1, 1)<br>&#160;HTMLEncode = Replace(Str,"'","''", 1, -1, 1)<br>End Function</font></td> </tr></tbody></table> <p>文章首发:http://www.seohf.com/seonews/view654.html 如需转载,请注明出处。</p>

Read more+

13

2019-04
推荐几款傻瓜型的ASP服务器软件

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">一键快速搭建ASP运行环境.</font> </td> </tr></tbody></table> <p>ASP语言建站目前应用范围还是比较广泛的,要运行ASP程序,必须安装调试ASP的环境,这里我们就需要安装Windows自带的IIS作为服务器。而IIS的安装对于非专业人士来说是件难以完成的任务,通常不知道如何着手,且安装过程繁琐,容易出错,还需要操作系统安装光盘。这里,我推荐几款傻瓜型的ASP服务器软件,比较适合初级站长。</p> <p><strong><font size="3">1.IIS自动安装程序:</font></strong></p> <p>官方网站:http://landian.cq.cn/</p> <p>一键快速安装IIS,保留了IIS原味,就是体积庞大了点。喜欢IIS的朋友可以试试,功能很全的。</p> <p><strong><font size="3">2.Aws(Ajiu AspWebServer)</font></strong></p> <p align="center"><img id="imgb" alt="" src="http://www.webjx.com/files/allimg/100421/1729400.jpg" width="510" height="410"></p> <p>官方网站:http://hi.baidu.com/swjtu</p> <p>Aws即AspWebServer的缩写,是一款功能极为强大却仅有数百KB大小的纯绿色软件,方便快速支持在线升级。拥有Aws,意味着可以摒弃IIS了! 她能几近完美的支持Asp,可以在局域网和因特网上快速建立属于自己的网站服务器,并且已经支持域名绑定,虚拟目录等功能。</p> <p>将文件(Aws.exe)放到网站的根目录下,双击运行Aws.exe,软件会自动打开网站,默认主页:default.html, index.asp, index.html等。</p> <p>温馨提示:这个软件很不错,我也一直在用。有时候,Aws可能无法正常解析ASP中的某些函数,出现500错误。</p> <p><strong><font size="3">3.NetBox</font></strong></p> <p>官方网站:http://www.netbox.cn/</p> <p>NetBox是一个全新概念的开发平台,它提供了业界最快速的用于开发 Internet 商业应用的开发和编译工具。目前已经有很久的历史了,很多站长网站源码测试工具,都是基于NetBox核心做的二次开发。</p> <p><strong><font size="3">4.小旋风ASP服务器</font></strong></p> <p align="center"><img id="imgb" alt="" src="http://www.webjx.com/files/allimg/100421/1729401.jpg" width="479" height="425"></p> <p>该软件是由残剑无敌在NETBOX核心下开发的一套强大简洁的ASPWEB服务器,使用这个软件的您完全可以抛弃体积庞大的WINNT,WIN2000服务器系统及漏洞百出的IIS了。现在你可以在任何一个系统上调试和发布您的ASP程序了。目前测试通过的操作系统为:Windows 98;Windows 98 SE;Windows ME;Windows NT+IE4;Windows 2000;Windows XP;Windows .NET Server。现在完全支持ACCESS,SQL数据库啊.操作说明 :<br><br>1.安装小旋风ASPWEB服务器2005.很简单哦。<span id="more-97"></span></p> <p>2.把您的ASP程序COPY到安装目录中的WWWROOT的目录下即可 。<br></p> <p>最后打开浏览器,在地址栏中输入:http://127.0.0.1/(或者http://localhost/)</p>

Read more+

13

2019-04
大龄程序员没有年轻程序员脑瓜灵活

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">大龄程序员的价值所在.</font> </td> </tr></tbody></table> <div id="content_body" class="article_content"> <p>最近我过了40岁生日。 一个朋友开玩笑的对我说:”嘿,我想这个意味着你已经老的不适合再去编程了吧!“,我表面上哈哈一笑,但心里却触动不少。 年龄歧视在我们这行里并不可笑。 就像今天用Java的兄弟沦落到这个地步一样,几年前,使用COBOL家伙被我们从心底里嘲笑其老旧的编码方式和缺乏新技术中的灵活性。<span id="more-150"></span></p> <p>如今轮到我被他们嘲笑了。 也许你也是这样。 如果目前没有,我估计这一天也会很快到来。 你还会笑的出来吗? 是的,我想会跟我一样的。</p> <p>我们这一行受年龄歧视体现在好几个方面。 大家都热衷于热门的新技术,追求以不可想象的超速度掌握这些新知识的能力,永不疲倦的加班,让产品按时发布的干劲--所有的这些都是做软件这行中年轻人的特长。 我还没说年轻的员工很便宜的事吧? 不是一般的便宜。 这个计算机专业学历需求趋势统计并没有清楚的告诉你目前年轻、廉价的劳力已经严重的过剩,那些人力经理对这部分人的感觉就像是大海一样取之不尽用之不竭。 事实上,所有的数据都证明了一个结论:近10年来求职登记计算机专业学历水平要求正在下降或至少没升过。 如果说跟以前区别不太大的话,至少根据Jeff Atwood的数据, 人才信息储备库里的人才质量是没以前好了。 当你找人开发你的新项目,而又不相信外包,那去找谁呢?</p> <p>如果你正考虑只由年轻成员组成的开发团队,那么你需要再考虑一下。 在软件业,一些关于大龄软件开发者的传言被很多人深信不疑,这多少都使大龄的、有经验的人处于一种不利的位置。 但是这些人真的很蠢,他们认真参考这个学位趋势,拒绝超过40的任何人,因为我们开起来已经老的有点傻了。 让我来一个个的揭穿这些传言。</p> <p><strong>传言:</strong><em> 大龄程序员要比年轻的昂贵,相比之下年轻的开发者更可取。</em></p> <p><strong>真相: </strong>有经验的程序员之所以被标高价的原因是,在软件企业中,员工工资是第一大成本。 这样看来,年轻就意味着便宜。 虽然没有经验的、年轻的程序员可以让你降低预算,但如果你的团队里都是这样的人,他们会让你支付的更久。 年轻的程序员没有接受过失败的教训。 <em>他们也没有足够的时间学习这种教训。</em> 想想吧,他们会在谁的项目上学习这种教训,会让谁蒙受损失? 是你。 当不能按期完成项目时你不是也要遭受损失吗? 再想想。</p> <p>是的,大龄程序员要比年轻程序员要求的薪水高。 但是,你有没有想过给他们这么高的薪水是要得到什么? 对于有经验的程序员,你实际是雇佣他们在以往失败的或成功的项目中获取的各种经验。 如果你想让他们在你的经理任期里学习这些经验教训,代价是昂贵的。 如果你花钱雇佣了一个有经验的程序员,他能确保你在以后的项目管理和软件开发过程中不会在犯那些经典的错误。 你的年度回顾图表也会漂亮的多,因为你雇佣了聪明能干的人,他们知道如果把工作漂亮的完成。</p> <p><strong>传言:</strong> 大龄程序员缺少灵活性,缺乏学习新知识的能力,因为他们脑袋里的传统知识在作怪。</p> <p><strong>真相:</strong> 相反,正式由于他们的阅历,越是有经验的程序员越是能够更迅速的,更深度的迁移到新的技术、框架和系统里。 例如,如果你学过C/C++的GUI框架,你的脑海里就会对消息传输,事件处理等概念的有了掌握,而MVC模式就是使用了这些概念来设计系统,分离表示层和后端业务处理的。 而最初你学习一个GUI框架时,除了要学习语法,实例,以及常用类库外,你还要学习这些概念性的东西。 经过了二三种或更多的GUI框架学习后,你会发现各种框架之间除了语法外都非常的相似。 你还会发现后,出现的框架已经克服了很多前辈所特有的局限性,已经不需要你再去花时间开发复杂的hack程序了。 这些深刻的见解可并不是那些新人可以拥有的。 由这些思想储备来提升的生产效率并不是你可以用什么方法直接测量到的。</p> <p><strong>传言:</strong> 大龄程序员不愿意去干那些很幸苦的开发工作<em> (编者注: 长时间的,加班加点的工作)因为他们有家庭和其他一些事情拖累,这些在年轻员工身上就不会有。</em></p> <p><strong>真相:</strong> 我认为,说熟练的程序员相比较更不愿意加班加点辛苦的工作是没错的,因为他们知道只有工作效率有问题才会将自己推到每周工作80小时的处境。 有人说是没有干劲了,但我却要请问,哪一个曾经有过这种经历的人还渴望再经历一次? 还有人说,“家庭负担”是一个因素,但这只是个表面上的假象。 高能力的、有经验的软件工程师对时间的管理是不留余地的,正是有了家庭的原因,他们才会更有动机在给予的规定的时间里把工作完成。 他们也许需要陪家人去参加舞会,去看足球比赛,但他们也会在业余时间把这些占用的时间补上,在标准的一周40小时里一心一意的工作。 好的有家室的程序员一定是一个有效的管理自己个人时间的人,否则他立刻会淹没在各种工作之中无法抽身。</p> <p><strong>传言:</strong> 大龄程序员没有年轻程序员脑瓜灵活<em>。</em></p> <p><strong>真相:</strong> 年龄的增长确实影响人的脑力,可以测试出年纪大的工作者确实要比年轻的反应速度慢一些。 可是思考敏捷只是我们的比较的一个方面而已。 思考的快并不是总是好事。 判断的正确与否呢? 有一个古老的说法:</p> <p>&#160;</p> <table style="BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted" border="0" cellspacing="0" cellpadding="6" width="95%" align="center"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><em>正确的判断来自于经验,经验来自于错误的判断。</em></td> </tr></tbody></table> <p>&#160;</p> <p>这些老程序员见识过的、经历过的成功的、失败的案例都比年轻的多,由此可以看出,以思考速度退化为借口来拒绝大龄程序员是缺乏说服力的。 经验丰富的程序员有大量的历史可以拿来作为借鉴和参考,让你避免在现在的项目里有错误的判断。 年轻的程序员可能会有一些很好的新观点,但通常是没有经过测试和验证的。 如果团队里两种程序员组合,那会非常的有好处。</p> <p><strong>传言:</strong> <em>大龄程序员对工作感到疲倦和挑剔,所以在岗位上没有年轻人那样有干劲。</em></p> <p><strong>真相:</strong> 这种话很可能来自于一些老是被有经验的程序员批评为傻冒的人,这些有经验的程序员已经无法忍受那些愚蠢的决定在他们周围一次有一次的发生。 有经验的程序员在一公里外就能嗅出错误的气味。 他们绝对不会听你讲故事说这个产品如何在市场上不被客户接受,因为他们已经跟客户打了多年的交道,他们知道你企图用谎言来挽救你被解雇的命运。 他们绝对不会忍受,因为客户要求下月就要出产品,经理就要求他们每周工作80小时的要求,以为他们已经知道并说过至少要3个月才能完全实现客户要求的功能。</p> <p>年轻的程序员并没有经历那么多这样的处境,所以他们很少有反抗经理的错误决定的动作。 管理人员不能用他们天真的想法去要求事物。 如果你想拥有一个优秀的团队,让它生产出优秀的产品,那么允许人们将你从错误的道路拉回来,将会一次又一次的挽救你的项目。 当然,只有在你有勇气承认自己无知的情况才会这样。</p> <p>至于说热情在消失,你很难判断是岁月消磨了人的热情。 如果说是年龄的原因,那么如何解释Donald Knuth, Ward Cunningham, Bill Joy, 比尔 盖茨等成百上千的跨过了40岁门槛的人依旧没有丧失任何对这个领域的热情的呢? <em>他们没有丧失。热情就是热情。 </em>你40岁时还拥有热情,那是你真的热爱这个行业。<br>这种爱不会在一夜之间就消失的。 那些依旧沿着这些前辈的足迹前进的年轻的程序员们也许会拥有短暂的热情,也许会在这条道路的前进过程中面对困难和挑战发生动摇。</p> <p>作为总结,让我们清清楚楚的看清这些事情:年轻不是个坏事情。 <span style="TEXT-DECORATION: underline">年老也不是所有都好。</span> <strong>最重要的是,任何肚子里没有实货的程序员都不应该被雇佣,不论是年轻和年老。</strong> 保持你的团队成员年轻年老、有经验和没经验混合 &#8212; 保持队伍多样性存在,团队才能成长进步。 如果你正在招聘一些人,不要对坐在你前面的头发显花白的人置之不理。 如果他的才能能打动你,那就丢弃年龄的偏见。</p> <p>也许有一天这个人就是你。</p> </div>

Read more+

13

2019-04
ASP错误信息解决:IIS启用父路径的设置

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">ASP错误信息解决:IIS启用父路径的设置.</font> </td> </tr></tbody></table> <p>今天公司有个客户保修网站后台无法访问,我查看了源代码,发现ASP代码本身并没有什么问题。而且我下到本地能够访问。就是在网上不能正常连接,显示入下错误:</p> <p>Server.MapPath() 错误 'ASP 0175 : 80004005' <br>不允许的 Path 字符 <br>/0709/dqyllhsub/news/OpenDatabase.asp,行 4 <br>在 MapPath 的 Path 参数中不允许字符 '..'</p> <p>网页里面用了一个 Response.Redirect 的路径重指向,客户页面里面指向路径写的是相对路径,省略了网站域名地址。</p> <p>主要是IIS服务器没有开启父路径,修改方法:<br>在IIS中 属性-&gt;主目录-&gt;配置-&gt;选项中。把”启用父路径“前面打上勾。确认刷新。</p> <p>如果服务器提供商出于‘安全考虑不开启父路径,建议路径指向的时候写绝对路径,即完整地址 如"http://www.webjx.com/images/logo.gif"</p> <p>IIS6.0安装后默认设置是,不开启父路径。<br>----------------------------------------------<br>如果你的网站程序使用了父路径,如../conn/db.asp这样的,..表示上层目录,就一定要开启父路径,否则系统不能正常识别..父路径,网页就无法正常显示 </p> <p>&#160;</p>

Read more+

13

2019-04
windows 2000服务器IIS开启父路径的步骤

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">Windows 2003 IIS启动父路径.</font> </td> </tr></tbody></table> <p>“开启父路径”是在Windows 2003开始有这个概念的,之前的<a href="http://www.webjx.com/os/windows/"><u>windows</u></a> xp,<a href="http://www.webjx.com/os/windows/"><u>windows</u></a> 2000自带的iis是没有“Windows 2003”这个说法的。Windows 2003自带的IIS6.0安装后默认设置是不开启父路径的。</p> <h3>“开启父路径”主要作用:</h3> <p>“启用父路径”,ASP页面中如果使用到了include file=../header.asp 这样的代码,此项必须选上“启用父路径”,../表示上级目录下的header.asp页面,是用相对路径来表示的,如果您的IIS页面设置中的“启用父路径”没有开启的情况下,访问此页面时就会报错,因为当前的IIS设置不允许使用..方式访问父路径,您需要将这个值设定为true。启用父路径指定 ASP 页面是否允许相对于当前目录的路径(使用 ..\ 表示法)。如果设置为 true,则此属性可能会造成潜在的安全风险,因为包含路径可以访问应用程序根目录外的重要或机密的文件。如果出于安全考虑不开启父路径,建议路径指向的时候写绝对路径,即完整地址。</p> <p>如果iis没有开启“启用父路径”,往往会出现“HTTP 500 - 内部服务器错误”,例如在<a href="http://www.webjx.com/os/windows/"><u>windows</u></a> 2000服务器下运行正常的网站程序,在<a href="http://www.webjx.com/os/windows/"><u>windows</u></a> 2003下酒会出现“HTTP 500 - 内部服务器错误”</p> <h3>如何启用“开启父路径”功能</h3> <p>IIS管理器中,展开本地计算机,右键单击要配置的应用程序的开始位置目录,然后单击“属性”。单击“目录”选项卡,然后单击“配置”。单击“选项”选项卡。在“应用程序配置”部分,选择“启用父路径”复选框。单击“确定”。</p> <p>1、启动IIS,在【默认网站】上右键单击,在弹出的菜单中选择【属性】</p> <p><img style="oldpaddingtop: ; oldbordertopwidth: ; oldpaddingbottom: ; oldborderbottomwidth: ; oldpaddingright: ; oldborderrightwidth: ; oldpaddingleft: ; oldborderleftwidth: " alt="" src="http://www.webjx.com/files/allimg/100716/1425230.gif"></p> <p>2、单击【属性】菜单后,弹出如图2所示的对话框;</p> <p><img style="oldpaddingtop: ; oldbordertopwidth: ; oldpaddingbottom: ; oldborderbottomwidth: ; oldpaddingright: ; oldborderrightwidth: ; oldpaddingleft: ; oldborderleftwidth: " alt="" src="http://www.webjx.com/files/allimg/100716/1425231.gif"></p> <p>3、在图2中选择【主目录】属性页,然后单击【配置】按钮,弹出如图3所示的对话框;</p> <p><img style="oldpaddingtop: ; oldbordertopwidth: ; oldpaddingbottom: ; oldborderbottomwidth: ; oldpaddingright: ; oldborderrightwidth: ; oldpaddingleft: ; oldborderleftwidth: " alt="" src="http://www.webjx.com/files/allimg/100716/1425232.gif"></p>

Read more+

13

2019-04
IIS6和IIS7对静态文件gzip压缩方式

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">IIS6以及IIS7对静态文件gzip压缩方式的区别.</font> </td> </tr></tbody></table> <p>先说明下为什么要写这篇文章,以及纠结于这个“小问题”。首先开启静态文件的gzip压缩非常有利用提高网站的访问速度,并且有效减少蜘蛛爬行静态页面的time-taken,同时也不会像开启动态文件压缩一样可能会对百度蜘蛛造成200 0 64的抓取问题,所以一方面,网站速度快有利于提高用户体验,另一方面,google管理员博客在今年已经明确表示网站速度是排名的因素之一,而对于拿国外主机做百度中文站优化,time-taken不理想会导致百度蜘蛛内页抓的少,国平之前在自己博客文章网页加载速度是如何影响SEO效果的中也提到过,在固定的一段时间内蜘蛛抓取网站的总时间是固定的,那么抓取速度上去了,抓取页面数就会更多,反之则少。</p> <p>好吧,开始正文,在上篇文章《<font color="#1c3d72">蜘蛛抓取静态页面与触发gzip压缩的实验结果</font>》中的问题二,我提出了gzip静态页面的压缩版本在服务器上保存方式的猜测,在困惑了许久之后,发现导致两个主机返回gzip结果不同的最终原因是iis版本而不是我猜测的缓存文件夹设置过小</p> <p>事实上,iis7比iis6在静态压缩上有了较大的更新,在IIS6中,静态压缩是在一个不同的线程上进行的,所以在收到一个HTTP请求后,第一个发送给浏览器的HTML版本是没有压缩过的,而同时IIS6会开始使用一个不同的线程对这个文件进行压缩并且将这个压缩后的版本长期保存在压缩文件的缓存文件夹内。而在以前,也就是IIS6服务器上,在压缩完成之后凡是对该被压缩版本的静态文件的HTTP请求,IIS6都会直接从缓存文件夹中直接调用压缩后的版本并返回给浏览器。</p> <p>但是在IIS7中,压缩是在主线程上进行的,而且为了节省压缩的成本,IIS7不对所有的HTTP请求而只对哪些经常会被用户访问的静态文件进行压缩版本的长期保存,这也就是为什么我在之前第一次访问没有压缩,短期内再次访问返回的是压缩版本,但是再过几分钟访问返回的又是未压缩版本的原因。这里我们可以理解为IIS7并没有将压缩版本实际保存到缓存文件夹中,而是只在服务器内存中做了保存,或者是临时将压缩版本保存到缓存文件夹中,一会之后进行删除。</p> <p>而IIS7定义什么文件是经常访问的符合压缩标准的方法是system.webServer/serverRuntime中的以下两个属性,frequentHitThreshold和frequentHitTimePeriod 。如果IIS在frequentHitTimePeriod时间段内接收到了对某个静态文件的超过frequentHitThreshold闸值次数的访问,那么IIS7就会像IIS6一样压缩该静态文件并且将这个压缩后的版本长期保存在压缩文件的缓存文件夹内。如果用户访问网站某文件时,已经在缓存文件夹中存在该文件的缓存版本,那么IIS7是不会再判断frequentHitThreshhold这个逻辑而是直接返回压缩版本给浏览器。</p> <p>这种设置的确很蛋疼,但是微软官方给出的答复是这样有利用提高服务器性能。。。那么如果想要让IIS7能够向IIS6一样做压缩的话,有两种解决方法,当然都是修改frequentHitThreshold和frequentHitTimePeriod这两个值:</p> <p>第一种是在web.config中添加以下内容,将frequentHitThreshold调至1,将frequentHitTimePeriod调制10分钟</p> <blockquote> <p>&lt;system.webServer&gt;</p> <p>&lt;serverRuntime enabled="true"</p> <p>frequentHitThreshold="1"</p> <p>frequentHitTimePeriod="00:10:00"/&gt;</p> <p>&lt;/system.webServer&gt;</p> </blockquote> <p>第二种方法是打开%windir%\system32\inetsrv\appcmd.exe,然后再命令行界面中输入以下命令字符串,然后回车</p> <blockquote> <p>set config -section:system.webServer/serverRuntime -frequentHitThreshold:1</p> </blockquote> <p>微软官方建议比较不激进的办法是不要调低frequentHitThreshold而是提高frequentHitTimePeriod,这样对服务器性能更适中。这里要提到的是,对于拥有VPS的朋友们,建议可以手动设置,而虚拟主机用户能不能设置就得看服务商了,我就很悲剧的改不了。大家试试看吧</p>

Read more+

17

2018-05
IE8内部对渲染模型的判断流程

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">下面的图详细得给出了IE8内部对渲染模型的判断流程.</font> </td> </tr></tbody></table> <p>首先给出一组数据</p> <img alt="photo" src="http://www.webjx.com/files/allimg/100305/0810520.png"><br>这组数据说明了目前IE8在渲染模式下的一些比例(微软偷偷统计的?)。 <br><p>● 有19% 的站点用了严格型的标准来设计(非常好的数据,得感谢默默无闻在前线工作的页面重构同学们)</p> <p>● 有 14% 的站点用了http头和 <a href="http://msdn.microsoft.com/en-us/library/cc288325" rel="external">X-UA-Compatible</a> 把IE打回IE7的模式</p> <p>● 有 41% 的站点用了Doctype让IE8使用标准模式(这里指的是,大家常用的过渡型)</p> <p>● 很不幸还有 26% 的站点使用了Quirks 模式....</p> <br><br>下面的图详细得给出了IE8内部对渲染模型的判断流程 <img alt="photo" src="http://www.webjx.com/files/allimg/100305/0810521.png"> 更多信息请跳转这里: <a href="http://blogs.msdn.com/ie/archive/2010/03/02/how-ie8-determines-document-mode.aspx" rel="external">http://blogs.msdn.com/ie/archive/2010/03/02/how-ie8-determines-document-mode.aspx</a>

Read more+

17

2018-05
开源领域常用的许可协议和它们之间的区别

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">在我们所能想到的应用领域,都有开源软件存在(象 WordPress,Drupal 这些开源CMS)。然而很多人对开源许可并不了解,本文介绍开源领域常用的几种许可协议以及它们之间的区别。</font> </td> </tr></tbody></table> <p>越来越多的开发者与设计者希望将自己的产品开源,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机。在我们所能想到的应用领域,都有开源软件存在(象 WordPress,Drupal 这些开源CMS)。然而很多人对开源许可并不了解,本文介绍开源领域常用的几种许可协议以及它们之间的区别。</p> <p><a href="http://www.flickr.com/photos/massimobarbieri/2162544547/"><img alt="Opensourceubuntu in A Short Guide To Open-Source And Similar Licenses" src="http://www.webjx.com/files/allimg/100331/1919320.jpg" width="500" height="333" original="/files/allimg/100331/1919320.jpg"></a></p> <h3 class="subtitle">什么是许可协议?</h3> <p>什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供一定的权限。</p> <p>不管产品是免费向公众分发,还是出售,制定一份许可协议非常有用,否则,对于前者,你相当于放弃了自己所有的权利,任何人都没有义务表明你的原始作者身份,对于后者,你将不得不花费比开发更多的精力用来逐个处理用户的授权问题。</p> <p>而<a href="http://en.wikipedia.org/wiki/Open-source_license">开源许可协议</a>使这些事情变得简单,开发者很容易向一个项目贡献自己的代码,它还可以保护你原始作者的身份,使你至少获得认可,开源许可协议还可以阻止其它人将某个产品据为己有。以下是开源界的 5 大许可协议。</p> <h3 class="subtitle">GNU GPL</h3> <p><a href="http://www.opensource.org/licenses/gpl-2.0.php">GNU General Public Licence</a> (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:</p> <ul> <li> <strong>可自由复制</strong><br>你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。</li> <li> <strong>可自由分发</strong><br>在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。</li> <li> <strong>可以用来盈利</strong><br>你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。</li> <li> <strong>可自由修改</strong><br>如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。</li> </ul> <p>需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 <a href="http://www.twitter.com/PierreJoye">@PierreJoye</a> 写的 <a href="http://www.softwarefreedom.org/resources/2008/compliance-guide.html">Practical Guide to GPL Compliance</a> 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。</p> <h4>GNU LGPL</h4> <p>GNU 还有另外一种协议,叫做 LGPL (<a href="http://www.opensource.org/licenses/lgpl-2.1.php">Lesser General Public Licence</a>),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。</p> <h3 class="subtitle">BSD</h3> <p>BSD 在软件分发方面的限制比别的开源协议(如 GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新 BSD 协议与简单 BSD 协议,这两种协议经过修正,都和 GPL 兼容,并为开源组织所认可。</p> <p>新 BSD 协议(3条款协议)在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单 BSD 协议删除了这一条款。</p> <h3 class="subtitle">MIT</h3> <p><a href="http://www.opensource.org/licenses/mit-license.php">MIT 协议</a>可能是几大开源协议中最宽松的一个,核心条款是:</p> <p>该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示。</p> <p>这意味着:</p> <ul> <li>你可以自由使用,复制,修改,可以用于自己的项目。</li> <li>可以免费分发或用来盈利。</li> <li>唯一的限制是必须包含许可声明。</li> </ul> <p>MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。</p> <h3 class="subtitle">Apache</h3> <p>Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合(<a href="http://www.howstuffworks.com/question492.htm">这里有一篇文章阐述这个问题</a>)。</p> <p>Apache 协议还有以下需要说明的地方:</p> <ul> <li> <strong>永久权利</strong><br>一旦被授权,永久拥有。</li> <li> <strong>全球范围的权利</strong><br>在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。</li> <li> <strong>授权免费,且无版税</strong><br>前期,后期均无任何费用。</li> <li> <strong>授权无排他性</strong><br>任何人都可以获得授权</li> <li> <strong>授权不可撤消</strong><br>一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。</li> </ul> <p>分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。</p> <h3 class="subtitle">Creative Commons</h3> <p>Creative Commons (CC) 并非严格意义上的开源许可,它主要用于设计。Creative Commons 有多种协议,每种都提供了相应授权模式,CC 协议主要包含 4 种基本形式:</p> <ul> <li> <strong>署名权</strong><br>必须为原始作者署名,然后才可以修改,分发,复制。</li> <li> <strong>保持一致</strong><br>作品同样可以在 CC 协议基础上修改,分发,复制。</li> <li> <strong>非商业</strong><br>作品可以被修改,分发,复制,但不能用于商业用途。但商业的定义有些模糊,比如,有的人认为非商业用途指的是不能销售,有的认为是甚至不能放在有广告的网站,也有人认为非商业的意思是非盈利。</li> <li> <strong>不能衍生新作品</strong><br>你可以复制,分发,但不能修改,也不能以此为基础创作自己的作品。</li> </ul> <p>这些许可形式可以结合起来用,其中最严厉的组合是“署名,非商用,不能衍生新作品”,意味着,你可以分享作品,但不能改动或以此盈利,而且必须为原作者署名。在这种许可模式下,原始作者对作品还拥有完全的控制权,而最宽松的组合是“署名”,意味着,只要为原始作者署名了,就可以自由处置。</p> <h3 class="subtitle">延伸资源</h3> <ul> <li> <a href="http://creativecommons.org/about/licenses">Creative Commons Licenses</a><br>Creative Common 许可的官方条款与解释</li> <li> <a href="http://www.opensource.org/licenses/alphabetical">Open Source Initiative</a><br>包含各种开源协议资源</li> <li> <a href="http://developer.kde.org/documentation/licensing/licenses_summary.html">Open Source Licenses Comparison</a><br>对主流开源协议的对比</li> <li> <a href="http://openacs.org/about/licensing/open-source-licensing">Understanding Open-Source Licensing</a><br>开源协议详解</li> <li> <a href="http://blogs.zdnet.com/Burnette/?p=130">HOW TO: Pick an Open Source License</a><br>如何选择不同的开源协议</li> </ul> <p>本文国际来源:Smashing Magazine <a href="http://www.smashingmagazine.com/2010/03/24/a-short-guide-to-open-source-and-similar-licenses/">A Short Guide To Open-Source And Similar Licenses</a></p>

Read more+