行内技术
创建JavaScript的哈希表Hashtable
Hashtable是最常用的数据结构之一,但在JavaScript里没有各种数据结构对象。但是我们可以利用动态语言的一些特性来实现一些常用的数据结构和操作,这样可以使一些复杂的代码逻辑更清晰,也更符合面象对象编程所提倡的封装原则。这里其实就是利用JavaScriptObject对象可以动态添加属性的特性来实现Hashtable,这里有需要说明的是JavaScript可以通过for语句来遍历Object中的所有属性。但是这个方法一般情况下应当尽量避免使用,除非你真的知道你的对象中放了些什么。<scripttype="text/javascript">functio...
2013-3-3428
JavaScriptprototype背后的工作原理
“prototype”字面翻译是“原型”,是javascript实现继承的主要手段。粗略来说就是:prototype是javascript中的函数(function)的一个保留属性,并且它的值是一个对象(我们可以称这个对象为"prototype对象")。通过以此函数作为构造函数构造出来的对象都自动的拥有构造函数的prototype对象的成员属性和方法。其中的要点是:
    prototype是函数(function)的一个必备属性(书面一点的说法是"保留属性")(只要是function,就一定有一个prototype属性)prot...
2013-3-3387
JavaScript滚动条的制作
效果演示#loading{height:20px;margin:0auto;border:1pxsolid#d4d4d4;}functionLoad(id,width){this.ele=document.getElementById(id);this.indicator=document.createElement('div');this.width=(width>0&&width)||300;this.init();}Load.prototype={constructor:L...
2013-3-3436
如何在开发技术中学海拾贝
张逸是国内一个架构师牛人,下面是他对学员的一个释疑,私以为不错,推荐之。以下是原文:首先声明,我可不是要做什么导师,这样崇高的身份与我无缘。我害怕自己才疏学浅,而误人子弟。导师是要李开复、唐骏之流才能做的。因为之前在一家公司和西南大学有一些业务来往,所以应邀到西南大学做过一次讲座,并为软件工程专业的学生开设了一学期《设计模式》课程,认识了一些热情洋溢的未来程序员。如今,他们也踏上了工作岗位。于是,碰到了一些问题。承他们看得起,居然想到给我发邮件,让我帮他解惑。回复了邮件后,发现这些问题也许对很多菜鸟而言,大约会是常见的困惑。站在一只老鸟的角度来看,我的回答或许能够在一定...
2013-3-3479
PHP禁止某些类型的上传文件
为了防止某些人将exe之类的可执行文件上传到服务器,我们可以编写程序判断上传文件的类型,然后不符合类型的文件将会拒绝上传。下面是实现这一功能的PHP程序:function($file_name,$pass_type=array('jpg','jpeg','gif','bmp','png')){//允许文件类型的后缀组成的数组$file=$pass_type;//截取上传文件的文件名的后缀$kzm=substr(strrchr($file_name,"."),1);//判断此后缀是否在数组中$is_img=in_array(strtolower($kzm),...
2013-3-3556
良好编程风格的养成
编程风格不仅仅是关乎代码质量问题,更是一种艺术修养问题,糟糕的不良的丑陋的编程风使代码维护变得困难,而且无形中也增加了产生bug的频率。什么样的编程风格才是优秀的?养成一种良好的编程风格并长久坚持之。不管是平时代码练习,还是实际参与项目开发,都应该按那种编程风格编码,千万记住,好的编程风格不仅让你受益终身,更需要你坚持不懈。注释恰到好处。为每个函数编写前置条件和后置条件,前置条件说明调用此函数时候需要满足的条件,各个参数的取值范围;后置条件说明当前置条件成立时调用该函数产生的结果,也就是这个函数完成什么任务、有什么功能。为每个类写注释,说明这个类有多少个变量,多...
2013-3-3518
如何使用PHP操作cookie
PHPsetcookie()函数向客户端发送一个HTTPcookie。cookie是由服务器发送到浏览器的变量。cookie通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个cookie。cookie的名称指定为相同名称的变量。例如,如果被发送的cookie名为"name",会自动创建名为$user的变量,包含cookie的值。必须在任何其他输出发送前对cookie进行赋值。如果成功,则该函数返回true,否则返回false。setcookie(name,value,expire,path,domain,secure)...
2013-3-3483
微软面试的一些逻辑题
    你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?答案:第一天给1段,第二天让工人把1段归还后再给他给2段,第三天给1段,第四天让工人归还1、2段,给4段。第五天依次类推……请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。答案:面对这样的怪题,有些应聘者绞尽脑汁也无法分成;而有些应聘者却感到此题实际很简单,把切成的8份蛋糕先拿出7份分给7人,剩下的1份连蛋糕盒一起分给第8个人。小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒...
2013-3-3548
目前主流浏览器的内核
浏览器最重要或者说核心的部分是“RenderingEngine”,可大概译为“解释引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。浏览器内核很多,如果加上所有的几乎没有什么人在用的非商业的免费内核,那么可能大约有1...
2013-3-3362
人生就是一张时间表
如果每天都有86400元进入您的银行户头,而且必须当天用完,您会如何运用这笔钱?天下真有这样的好事吗?是的,您真的有这样一个户头,那就是“时间”。每天每一个人都会有新的86400秒进帐。看起来很富有?假如一个人的寿命为60岁,那么一生时间中,睡觉要花掉20年,吃饭6年,穿衣和梳洗5年,生病3年,打电话1年,照镜子70天(部分女性除外),抹鼻涕10天,剩下的工作时间是多少呢?您又是怎样利用它们呢?哲学家伏尔泰说:最长的莫过于时间,因为它无穷无尽;最短的也莫过于时间,因为我们所有的计划都来不及完成。您是否有过这样的经历:某一天,您雄心勃勃地准备把手底下的事清理干净,可到头来却一事...
2013-3-3412
Google的JavaScript压缩工具介绍
现在的Web项目总是离不开大量JavaScript,而JS文件的体积也越来越大,也越来越影响页面的感知性能(PerceivedPerformance)。因此,我们会对JS文件进行压缩,一方面是使用Gzip,而另一方面则是去除JS文件里的注释、空白,并且压缩局部变量长度等等。对于一些成熟的类库来说,它们本身都会提供“完整注释”以及“强烈压缩”两个版本。但是,有时候我们需要自己修复类库里的bug,这只能在注释版中修改,对于压缩版自然就无能为力了。此外,自定义的脚本文件一般也值得一压。因此我在项目中时常会备一个脚本压缩工具。压缩脚本的工具有很多,例如老牌的JSMin,或是YUICo...
2013-3-3480
程序员应该如何积累知识与技术经验
对于一个程序员来说,学习的重要性相信大家都能意识得到。如何才能有效地学习,高效地学习?探讨下这个问题,我认为很有必要。每个人学习的方法和习惯可能都不尽相同,很多人习惯了在学校的学习方式,特别是很多刚出校门的人。在他们潜意识中,学习只是应付考试的一种手段,考完就一切OK了,全部还给老师了也无所谓,反正考完之后下次不会再考这么课程了(大学尤其如此)。长期的应试教育会让很多人以考试的心态来对待学习,我也是受害者之一,翻翻我硬盘中散落的各种语言编写的"helloworld",各种半成品,它们就像一张张60分、80分的试卷悄无声息地躺在某个昏暗的角落里。职业生涯的学习一个...
2013-3-3347
Ajax等待数据返回时loading的显示
有时候Ajax处理的数据量比较大的时候,用户等待时间会比较长,如果这个时候不提示用户等待的话,用户可以会觉得很不耐烦。这里介绍一下如何在Ajax如何在处理数据时显示loading。首先在HTML页面添加一个div层:<divid="loading"style="color:#ffffff;display:none;position:absolute;top:80px;left:3em;"></div>这个div一开始是不显示的。然后你可以在Ajax请求函数中添加如下代码:xmlReq.onreadystatechange=function()...
2013-3-3497
前端工程师的前途与价值体现
先给前端工程师的工作下个一句话定义:运用前端技术,实现体验的良好传达。如果在前面加上Web,那么是针对Web这个领域的,主要是互联网,也可以将移动通信网络和其他传媒网络(比如IPTV)包含在内,因为其理念是一致的。现在要在未毕业的学生中找到一个符合技能条件的Web前端工程师可以说是少之又少。而相关领域的从业者,又因为不被重视、干杂活、薪水低等原因,觉得选错了行当,又停止了在这个方向上的努力学习。最终导致企业招不到一位满意的Web前端工程师。这涉及到两个定位的问题,即1)企业如何给Web前端工程师定位,2)Web前端工程师如何定位自己。前者等下次有机会再谈,先讲后者。...
2013-3-3513
JavaScriptDate的原型方法扩展
在JavaScript开发中,经常需要对Date类型的对象进行各种验证或格式化,但是js并没有提供那么多的那么细的函数,所以只好自己去用prototype扩充了,下面是我自己实现的Date类型常用操作方法,你可以将它另存为date.js,然后在程序中调用即可。/***日期时间脚本库方法列表:*(1)Date.isValiDate:日期合法性验证*(2)Date.isValiTime:时间合法性验证*(3)Date.isValiDateTime:日期和时间合法性验证*(4)Date.prototype.isLeapYear:判断是否闰年*(5)Date.pro...
2013-3-3401
编程,有快乐,也有烦恼
程序员成长阶段面临的工作就是编程而且是大量编程。这和以往自娱自乐式的编程是完全不一样的。这个时候的编程是职业的,是和薪水以及被用户认可的软件联系在一起的。编程少了则无法深入体会到各种快乐和烦恼。程序是程序员创造出来的产品。当然程序越多,说明程序员生产能力越强。据统计,一到三年之间,程序员一般可能要编写5万到20万行代码(包括编写后删除了的)。很多程序员都不太清楚自己从业后到底编写了多少行代码,如果真的有心统计一下,自己绝对会被吓一跳。从代码行数来说明程序的工作量还只是机械的统计方法,很多程序代码很少,但是花的时间却是很多,含金量很高。程序员马不停蹄、加班加点编制了大量的程...
2013-3-3442
如何使用PHP发送邮件
PHP发送邮件的小程序很简单,不过有些需要注意的地方。先上代码:<?php$to="gonnsai@163.com";$user="Gonn";$date=date("Y年m月d日");$headers='MIME-Version:1.0'."rn";$headers.='Content-type:text/html;charset=utf-8'."rn";$headers.="To:$torn";$headers.="Cc:252211974@qq.comrn";$headers.='From:gonnsai@163.com'....
2013-3-3481
程序员为什么都不愿写文档
一提到文档,肯定会有人向你大谈外国公司、大公司、正规公司是怎么怎么重视文档的,什么2/3时间用于写文档,1/3时间才用来编程序;写文档要按照什么ISO、什么CMM、什么什么标准;不按这些标准写出来的就不是文档,就不是好文档。不重视文档就是不正规等等等。当问及他自己写过什么文档,编写过什么文档标准的时候,这种人就哑口无言了。这种人就是一种媒体一种广告。不管怎么说,文档绝对是程序员最大的软肋。一些被称之为高手的程序员,往往是文档方面的低能儿。不管这个程序员是在大公司、还在小公司、不管程序是写文档的、还是不写文档的,大部分程序员在内心深处中是不愿意写文档的。天下的怪事特别多,有...
2013-3-3373
如何通过JSONP实现跨域
JSONP即JSONwithPadding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。对于上面的解释,我们可以简单这样理解:JSONP就是可以通过JavaScript文件进行跨域通讯的方式,例如:现在各大网站风靡的搜索提示。注意:JSONP服务器端代码需要充分做好安全措施。下面是一个简单的JSONP:varJSON...
2013-3-3397
创业所需要具备的一些条件
一次成功的创业建立在以下三个条件上:优秀的合伙人,确实有需求的产品,以及尽可能少的启动资金。绝大部分创业失败是因为它们缺少了以上这些条件中的某一项,而那些完全具备这三点的创业往往会取得成功。让人欣慰的是,当你认真考虑它们的时候,这三点条件都是可行的,虽然可能有一点困难。鉴于成功的创业应该会让创始人富有,我们可以得出结论:富有的生活是可以实现的,只是有一点困难。如果说在创业方面只有一点我想要澄清的话,那就是:创业时,并没有需要特别出众的才华才能踏出的,神奇的一步。创意特别需要指出的是,创业并不需要特别优秀的创意。创业的主旨是通过给人们提供比他们现在拥有的东西更好一点...
2013-3-3393