特步官网最新广告的背景音乐就是那个you get better a better o的那个有人跑着跑着

小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
IE6、IE7、IE8、Firefox、Opera CSS hack区分[z]
小知识:什么是CSS hack?由于不同的浏览器,比如IE6、IE7、IE8、Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。-------------------------------------------------针对样式名如果只让ie6看见用*html .head{color:#000;}如果只让ie7看见用*+html .head{color:#000;}如果只让ff看见用:root body .head{color:#000;}如果只让ff、IE8看见用html&/**/body .head{color:#000;}如果只是不让ie6看见用html&body .head{color:#000;} 即对IE 6无效如果只是不让ff、IE8看见用*body .head{color:#000;}&&& 即对ff、IE8无效针对具体属性如果只让ie6看见用_&&&& .head{_color:#000;}如果只让ie7看见用+与_结合的方法:&&&& .head{+color:#f00;!;_color:#000;}IE8正式版hack\9&P 例:&margin:0px auto\9;&.这里的&\9&P可以区别所有IE8和FireFox.&*& IE6、IE7可以识别.IE8、FireFox不能.&_& IE6可以识别&_&,IE7、IE8、FireFox不能.如:.a {color:#f00;&&&& color:#f60\9;&&& +color:#00FF00;&&& _color:#0000FF; }从左到右分别对应 FF,IE8 IE7 IE6-------------------------------------------------各浏览器CSS hack兼容表:
#test{代码示例:color: /* 所有浏览器都支持 */&color:red !/* Firefox、IE7支持 */_color: /* IE6支持 */*color: /* IE6、IE7支持 */*+color: /* IE7支持 */color:red\9; /* IE6、IE7、IE8支持 */color:red\0; /* IE8支持 */}body:nth-of-type(1) p{color:} /* Chrome、Safari支持 */整体测试代码示例:.test{color:#000000;color:#0000FF\0;[color:#00FF00;*color:#FFFF00;_color:#FF0000;}其他说明:1、如果你的页面对IE7兼容没有问题,又不想大量修改现有代码,同时又能在IE8中正常使用,微软声称,开发商仅需要在目前兼容IE7的网站上添加一行代码即可解决问题,此代码如下:&meta http-equiv="x-ua-compatible" content="ie=7" /&2、body:nth-of-type(1) 如果这样写,表示全局查找body,将会对应第一个&body&。3、还有其他写法,比如:*html #test{}或者 *+html #test{}4、*+html 对IE7的hack 必须保证HTML顶部有如下声明:http://www.w3.org/TR/html4/loose.dtd5、顺序:Firefox、IE8、IE7、IE6依次排列。&&
Javascript堵塞问题的解决[z]
所谓&Javascript堵塞问题&,指的是浏览器在下载javascript文件的时候,会堵塞其他下载进程,并且多个javascript文件之间,只能一个一个下载,不能并行下载。浏览器之所以要这么干,一来是因为javascript里可能会有一些涉及页面渲染的操作,比如document.write,所以要先把他们加载完,以免影响用户体验,二来是如果并发下载javascript文件,代码执行的先后顺序会错乱,从而引起逻辑错误。为了规避上述弊端,YSlow建议如果有多个javascript文件,并且这些文件里没有类似document.write等页面渲染的操作,那么应该尽可能把他们合并成一个文件,并放到页面的尾部。不过很多时候,合并javascript文件是个浩大的工程,不仅破坏了模块化结构,而且还可能会给代码维护带来不必要的麻烦,今天说说另一个方法,以期避免对现有代码的大规模修改。
先做两个javascript文件,他们是a.php,b.php,之所以用php文件是因为我只会这个,内容如下:
&?php sleep(1); ?&
可以看到a.php和b.php的内容是一样的,其中之所以sleep一秒钟,是为了让演示的效果更明显。
现在让我们来做一个页面(x.htm),看看javascript堵塞问题是如何产生的:
&html&&head&&title&DEMO&/title&&script type="text/javascript" src="a.php"&&/script&&script type="text/javascript" src="b.php"&&/script&&/head&&body&&img src="/intl/en_ALL/images/logo.gif"&&/body&&/html&
浏览这个页面的时候,通过软件,我们可以看到类似下面的结果:
我们可以看到,logo.gif图片的下载进程被堵塞了,并且a.php和b.php是分别下载的。
下面让我们再来做一个页面(y.htm),看看是怎么解决这个问题的:
&html&&head&&title&DEMO&/title&&script&var load = function(file) {&&& var scriptElement = document.createElement("script");&&& scriptElement.src =&&& document.getElementsByTagName("head")[0].appendChild(scriptElement);}load('a.php');load('b.php');&/script&&/head&&body&&img src="/intl/en_ALL/images/logo.gif"&&/body&&/html&
浏览这个页面的时候,通过软件,我们可以看到类似下面的结果:
结论显而易见,logo.gif图片的下载进程并没有被堵塞,并且a.php和b.php是并行下载的。
Jquery里有一个getScript方法,可以用来并发下载javascript脚本,不过需要注意的是,缺省情况下,getScript会把一个时间戳字符串附加到所请求URL的后面,如此一来,Cache就失效了,如果想使用Cache的话,必须预先设定一下,其调用代码大概如下:
&script&$.ajaxSetup({ cache: true });$.getScript("a.php");$.getScript("b.php");&/script&
还有一点需要注意的是,为了让a.php, b.php等脚本能被Cache住,需要设定相应的Expires头信息:
&?phpheader('Expires: ' . gmdate('D, d M Y H:i:s', strtotime('1 month')) . 'GMT');?&
Lights——惊人的WebGL显示技术
如果你不知道WebGL是什么和能做哪些东西,先来和Lights来一段互动体验吧,相信你会知道WebGL技术是多么强大。点击这里进行互动,Lights看起来像是一段Flash视频,但实际上并不是,它无需插件就能在你的浏览器上顺利运行(需支持WebGL,Chrome、Safari、Firefox都可以),甚至可以在手机上运行。
简单地说,WebGL是一套用于渲染2D和3D图形的标准图形库,其标准是由Khronos、AMD、爱立信、谷歌、Mozilla、Nvidia以及Opera等共同制定,目前已出现在Mozilla Firefox、Apple Safari及Google Chrome等浏览器中,同时这种高质量的3D表现不需借助任何插件便可通过提供硬件图形加速来达到。在Lights中,黄色的&闪光线&会随着鼠标的左右点击而左右摆动,当&气泡&出现时,点击它们会出现焰火般的炫丽景象。而其背景音乐是英国歌手Ellie Goulding制作的一个互动音乐体验,同时随着音乐节拍界面会有呼吸状的闪光。
另外推荐一些WebGL的3D小游戏:
经典鱼缸测试:这是一个经典的网页速度测试,电脑网速越快,鱼游的速度就越快,另外有多个场景可以切换,鱼的数量也可以设置。
Cycleblob:该游戏场景类似基于贪吃蛇游戏,可以通过上下左右键移动,并有多个关卡。
3D水母:该游戏有点单调,展示的是水底3D水母,并可以用鼠标来调整视角。小提示:对于Safari用户来说,WebGL默认状态下是关闭的,你可以通过设置里面的高级选项来开启开发者选项。开启之后,在菜单栏就会多出一个开发者菜单,选中它即可。
&除非注明,本站文章均为原创或编译,转载请注明: 文章来自36氪
谷歌发布网络开发语言Dart早期预览版
  北京时间9月9日上午消息,据著名科技网站ExtremeTech的报道,谷歌编程新语言Dart逐渐浮出水面,它是一种&结构化的Web编程&语言。早在几天前谷歌就已着手注册了一系列与Dart相关的域名,当时也引发了沸沸扬扬的猜测。&
  今年10月10日&Goto"大会将在举行,谷歌两位开发人员会借着主题演讲的机会来揭晓这门新语言的全貌,直到那时我们才能了解DART的特点和功能。但幸运的是,&Goto&会议网站为我们提供了一些关于这两位发明人的详细传记,他们两位分别是SAP、Sun公司计算机科学家及的共同发明者吉拉德&布拉查(Gilad Bracha),以及ChromeV8 JavaScript引擎的创造者拉尔斯&巴克(Lars Bak)。&
  到目前为止,谷歌已经发布了过一种名叫&Go&的新语言。所以我们可以认为Dart不会是另外一种类似于C的面向系统语言。从它的别名&结构化的Web编程&可以看出,它很有可能是某种驻留在浏览器上的解释性语言。所以,它更类似于JavaScript或Python,而不是像Java或其他的编译性语言。不过,布拉查和巴克曾经在过去深入广泛地使用过Smalltalk语言,解释性的Smalltalkesque语言也可以归类为是一种&结构化的Web编程&,这算是给了我们一个明显的提示。&
  然而,新的面向Web编程语言面临的问题就是,目前人们早已拥有无数种维护良好的可用语言。Dart如果真的像是解释性Smalltalk语言的话,它几乎将直接与JavaScript和Python竞争,其中Python可是谷歌最流行的语言之一。如果将&Go"语言作为衡量标准,Dart其实更像是一个新奇小玩意,而不是什么开拓性的工具。它可能只是为了解决&以谷歌为中心&的问题,而不是旨在成为一种流行的编程语言。目前,人们还不清楚它的定位,可也许谷歌之外的人也会用得上这门新的语言。    北京时间10月10日消息,据国外媒体报道,谷歌今日发布了网络编程语言Dart的&早期预览版&。谷歌希望利用这款语言,帮助程序开发者克服JavaScript语言的缺点。  Dart开发团队主管拉尔斯&巴克(Lars Bak)在谷歌官方博客中详细介绍了这款语言。 巴克称,Dart支持所有项目,从小型松散的项目到Gmail和谷歌文档这种大型复杂的项目。在今天的一次采访中巴克称,如果想让互联网变得更美好,那就必须创新,其中就包括开发新的编程语言。  另外,谷歌的Dart语言网站也在今天上线,其中包括编写Dart程序的开源工具、代码范例和教程、支持软件的支持函数库、Dart语言规范和讨论论坛。  上个月爆出的一份谷歌2010年内部备忘录显示,Dart的目标就是要代替JavaScript网络开发通用语言的地位,但此次巴克在采访中表示,Dart不会替代JavaScript。JavaScript是当今网络的基石,它还将在很长一段时间内保持这种地位。  巴克表示,目前的当务之急是获得外界对Dart的看法,并吸引他们参与Dart程序的开发。Dart目前是公司关注的编程语言,谷歌希望Dart能获得正面评价。转自:
为什么项目经理拿的钱比程序员多?
偶然在上看到了这个有趣的,有人问:既然普遍认为编程是比较难的工作,为什么业务分析人员和项目经理们会拿比程序员更多的薪水?虽然大多数的时候程序员都被发现是最晚离开公司的人,可那些家伙的工作却能拿更多的报酬,为什么会这样?回答的人很多,但似乎只有一个是比较合情合理的,它是从经济学原理的角度分析的这个问题。人们所能获得的报酬往往会低于老板们的&最高标准&,而高于人们自己的&最低要求&。在这个范围内,你的实际收入依赖于你相对于你的老板的讨价还价的能力。假设你给公司提供的服务价值每天1000美元。如果你用枪指着他,他会给你这个价格,因为他别无选择。如果你别无选择,你只能接受每天100美元水平。这是你的浮动范围。假设你是一个新手,没有背景关系,不出名,你的老板是谷歌。谷歌有很强的讨价资本,它可以等待,去雇用其他人,很多人都想为它工作。你的资本很少,你需要付房租,所以你只能接受每天100多美元,而不是1000美元。假设你是地球上最后一个会COBOL语言的程序员,而你的老板的主机上正跑着COBOL程序。那么,你拥有很强的讨价还价的资本,你将能得到接近每天1000美元的报酬。所以,要么是你的项目经理或业务分析员对公司更有价值,要么就是他们有更多的讨价还价的资本。我并不认为是前一种情况,也就是说,应该是后一种情况。善于人际交往的人很少。这种事情也不能外包&&因为他们需要接触客户。他们的相对稀缺给了他们更多讨价的资本,所以他们有了更高的报酬。这个巧妙的回答来自,尽管跟其它的各种和政治相关的解答比起来有点乏味,但它确实反映了实际情况。就像他提到的,善于交际的人稀少,这种人在任何公司都能来到巨大的好处,尤其是在软件开发领域。文章出自:
百度1天内遭3家巨头叫板 搜索市场硝烟弥漫
百度公司董事长李彦宏可能将越来越难睡着觉,因为越来越多的互联网巨头开始觊觎百度的搜索市场。继搜狗公开叫板百度之后,奇虎360、腾讯和优酷昨日均明确表示,将在搜索领域发力,优酷方面也暗指如果百度搜索结果不公正,只会导致用户流失。三家互联网巨头同日叫板百度的情况并不多见。自从百度投资视频网站奇艺之后,就很难从百度重要位置上搜索到优酷的视频内容,优酷来自于搜索引擎的流量占比,也从此前的40%降至20%。虽然优酷不愿意公开指责百度,但在昨天电话会议上,优酷CFO刘德乐也话中有话地指出,中国有一些互联网巨头没有给创新者机会,反而成了一个巨大的杀手。对于来自百度上游入口的控制,优酷方面并没有选择坐以待毙,昨天优酷方面披露,优酷的视频搜索搜酷,目前已经是业界第二大视频搜索引擎。曾经和百度闹到法庭的奇虎360,同样不再隐忍。尽管表示不会直接模仿百度做传统搜索,但是奇虎360董事长周鸿祎却首度流露出了进入搜索引擎市场的野心。周鸿祎在昨天发布财报回答分析师提问时首度披露,奇虎360将从垂直搜索等新一代搜索领域入手,与浏览器相结合,方向是智能、推荐搜索引擎。百度最大的潜在竞争对手之一腾讯,昨天也启动了历史上首度大规模搜索营销活动。腾讯高级执行副总裁李海翔告诉《第一财经日报》记者,&未来搜索的形态未必是现在的方式。&腾讯的搜索引擎搜搜更多结合其巨大的人群关系链和用户生产的内容在内,而这恰好是百度的弱点。腾讯还在寻找百度的其他短板。医疗广告是百度第一大广告客户,但是上面信息的鱼龙混杂引来颇多争议。腾讯首席技术官熊明华表示,现在腾讯搜搜前两大客户是电子商务和游戏,而且每年都要砍掉10%的收入,&因为我们会严格审查有欺诈嫌疑的行业和广告客户。&互联网分析人士刘兴亮认为,下一代搜索引擎将更加智能化,搜索结果也将更加多样化,用户也会有更多的搜索引擎来选择。本文来自:
使用HTML5、CSS3和jQuery增强网站用户体验
记得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验?是不是立刻就想到了flash实现?这彷佛年代久远的事了。使用现在最流行的Web技术HTML5,CSS3和jQuery,同样也可以实现类似的用户体验。而且使用这些特性将会比使用flash更加有效。也许你可能刚知道Adobe停止开发移动版flash的消息,虽然在桌面中我们还拥有大量的flash的应用,但是随着HTML标准的完善,可能flash也要退出历史舞台了。在今天这篇文章中,我们将介绍一些非常实用的教程,技巧和资源来帮助大家构建一个更加丰富的用户界面。请大家给积极我们留言!您的支持是我们的最好的动力!
这个教程将帮助你构建一个非常动感的checkbox,用来替换缺省的checkbox,相信大家会喜欢更富有活力的UI界面
这是来自Nettus+的超棒教程,将教你如何使用HTML5特性来构建表单
一个alert,对话框等组件的替代品,用户将会更喜欢这种UI元素
一个非常灵活的对话框框架,提供了非常好的用户界面设计,能够帮助你生成非常酷的表单
多层选择下拉框,非常适合树状结构的展现
个人非常喜欢使用的表单美化插件,能够帮助你构建漂亮的UI界面。
非常不错的一款jQUery框架,允许你使用设计的主题将表单转化成非常酷UI。当然你也可以自己自定义一个主题
Uniform将使用自定义的皮肤遮盖缺省的表单,并且可以和你实际的表单元素同步,保证了访问和兼容
教你如何生成输入框中的按钮
非常不错的WP插件,能够生成一个停靠页边的联系人表单,不使用的时候自动隐藏
jQuery highlightjQuery高亮显示功能,能够让输入高亮,提示用户输入内容
个人非常喜欢使用的表单输入验证插件,具体使用参考这篇文章:
这个jQuery开发的导航菜单让人想起了flash开发的菜单效果,整个移动如此的顺畅,让你感觉它就是flash开发的。 兼容所有的浏览器,即使javascript被关闭也可以正常工作。
&如果你想开发一个多层的属性菜单,那么这个插件就是你要找的解决方法之一。
一个非常不错的滑动面板,非常适合滑动类型面板的应用。 并且可以使用高级特性增强功能
&如果考虑扩展性,这个插件恐怕是你能找到的最好的面板导航标签页插件了。
这个教程教你如何使用jQuery来创建一个垂直滑动显示的子菜单
这个可以缩放的当前位置可以自动根据当前位置长度来缩放,非常不错的创意
非常动感的一个导航实现, 能够给你的链接添加一个花朵的效果
一个使用非常简单的手风琴显示效果
用户界面类
Slide node是一个可以帮助你提供一些有效提示或者信息从而方便你访问用户使用网站的插件。
一个非常酷的显示广告的插件。
jQuery的无限滚动效果插件,用来帮助你现实大幅的内容
一个动态垂直滑动显示导航菜单的插件
一个非常酷的插件允许你添加提示到你的网站。当然提供了可选的皮肤。
一个能够让你的网站背景幻灯显示的插件
不是一个简单的图片幻灯插件,它能够让你指定一个目录,这个目录下的所有图片都能够显示,不需要你在HTML代码中指定,非常实用!
一个可以帮助你控制每个单独字母的插件。 帮助你有效的创建一些独特的文字效果
这个插件允许你添加链接来修改页面的样式表
Flip是一个帮助你实现翻动元素效果的jQuery插件。
文章出自:
百科:WebGL
WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。
  WebGL和3D图形规范OpenGL、通用计算规范OpenCL一样来自Khronos Group,而且免费开放,预计2010年上半年完成并公开发布。Adobe Flash 10、Silverlight 3.0也都已经支持GPU加速,但它们都是私有的、不透明的。WebGL标准工作组的成员包括AMD,爱立信,谷歌,Mozilla,Nvidia以及Opera等,这些成员会与Khronos公司通力合作,创建一种多平台环境可用的WebGL标准,预计WebGL标准会在2011年上半年首度公开发布,该标准将完全免费对外提供。
  WebGL完美地解决了现有的Web交互式三维动画的两个问题:第一,它通过本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。
CSS的优先级特性
选择器一样的情况下后面的会覆盖前面的属性。比如:  p { color: }  p { color: }  p元素的元素将是蓝色,因为遵循后面的规则。然而,你不可能经常用相同的选择器冲突达到目的,当你使用嵌套选择器,合理的冲突来了。比如:  div p { color: }  p { color: }也许你看起来p元素在div元素里面的颜色是蓝色,就像后面p元素的规则,但是第一个选择器的特性却是红色。基本上,一个选择器越多特性,样式冲突的时候将显示它的样式。  一组嵌套选择器的实际特性可以计算出来。基本的,使用ID选择器的值是100,使用class选择器的值是10,每个html选择器的值是1。它们加起来就可以计算出特性的值。  p的特性是1(一个html选择器)  div p的特性是2(两个html选择器)  .tree的特性是10(1个class选择器)  div p.tree的特性是1+1+10=12,(两个html选择器,一个class选择器)  #baobab的特性是100(1个ID选择器)body #content .alternative p的特性是112(两个html选择器,一个ID选择器,一个类选择器)按照上面的规则,div p.tree的特性比div p高,body #content .alternative p又比它们两个都高&
电子青年总动员:六“一”世纪光棍节狂欢舞会
西电新闻网讯(校研会)
一千年太久,只争今日
公元2011年11月11日,电子青年总动员,让爱重生,舞出无与伦比的惊叹!!!
&2011年11月11日的世纪光棍节就要来了,为了让研究生们结交各院系各年级的同学,彼此互相了解,让大家度过一个愉快的光棍节,由校研会和舞协联合举办的光棍节狂欢舞会将于11月11日18:30在北校区足球场举行。
此次光棍节舞会,由同学们自愿参加,通过现场速配的方式参与其中。11月9日至11月11日,在东西区餐厅设置舞会报名点和信箱(报名的同学可以书写一段话送给自己喜欢的人,投放到信封中,在信封上写上对方的姓名、班级、电话或者宿舍号,将有专门人员将信件按照预留的联系地点或者方式送到对方手中,并邀请其参加11月11日晚上的&狂欢舞会&)我们对每个报名参加舞会游戏环节的同学进行抽签,活动当晚,预先报名的同学执签领取面具,进行速配。活动期间更有舞协领舞以及各种交友小游戏。欢迎光棍们以及非光棍们一起来参加这个&狂欢之夜&,我们将努力把快乐带给每一个人!&&
不要在最美丽的年华错过最美的风景,请用一颗开放的心释放最真实的自己,以珍惜的名义谈一场永不凋零的恋爱!
花开堪折直需折,莫待无花空折枝!
你的爱掌握在你的手里,那么,你准备好你的& 表白 &了吗?
very cool!
宿舍的纯平触摸显示器
Apple的新产品——iMoniter,哈哈
不要自称为程序员(转)
每年都有无数年轻程序员,加入软件行业。
他们在学校里学过编程,但是对这个行业的现实一无所知。
Patrick McKenzie 是美国一家小软件公司的老板,他写了一篇长文,介绍这个行业的一些实际情况。我看了以后很感慨,有些地方很受启发。我选择了一部分,翻译如下。
一、90%的编程工作来自内部软件
(90% of programming jobs are in creating Line of Business software)
计算机专业的学生,可能有一种印象,觉得大部分程序员,都在编写公开出售的软件或者通用软件。
这种看法是不对的。大部分程序员,实际上编写的是不公开的企业内部软件,比如追踪费用的软件、优化装运成本的软件、帮助记账的软件、设计新部件的软件、计算保单价格的软件、识别恶意订单的软件等等。
各种各样的商业公司,开发内部软件,解决它们自己的问题。市场上对程序员的大部分需求来源于此,只有极少数程序员直接编写面向外部顾客的软件。
内部软件的开发,通常非常乏味,令人厌倦。因为它们的技术复杂性低、技术决策非常保守、预算很少、缺乏长远考虑。但是,世界上大部分编程工作都是这种。
二、别人雇你的目的,是让你创造利润,不是让你编程
(Engineers are hired to create business value, not to program things)
商业公司最关心的(或者说唯一在乎的)事情,就是增加收入、降低成本。因此,它们实际上需要的不是程序员,而是能够帮助它们增加收入、降低成本的人。
开发优美的软件,解决技术难题,编写没有 bug 的代码,这些都不是商业公司的目的。它们雇佣你,是为了让你帮它们完成某个可以增加收入、降低成本的项目,而不是因为你是 geek。
你个人对于公司的唯一价值,就在于你能多大程度上为它们增加收入、降低成本。
三、不要自称为程序员
(Don&t call yourself a programmer)
很多公司的经理不懂计算机,在他们心目中,&程序员&就是一群高成本的劳动力,只会在一台复杂的机器上干一些难懂的事情。
如果你自称为&程序员&,当公司需要压缩成本的时候,某些经理首先就会想到解雇你。有一家公司叫 Salesforce,口号是&没有软件&,意思就是如果经理们购买了他们的服务,就不再需要别的软件管理销售业务了,也就是说,不再需要自己雇佣程序员了。
正确的做法是,你应该把自己描述成与增加收入、降低成本有关系的人,比如&xx 产品的开发者&或&改进者&。有一个 Google Adsense 程序员的自我介绍,是这样写的:&Google 公司97%的收入,与我的代码有关。&
四、不要限定自己
(You are not defined by your chosen software stack)
年轻学生经常会问,应该选择哪种语言或平台?学会 Java,是不是比学会 .NET 容易找工作?
过分强调某一种语言或平台,都是不必要的。如果你把自己限定为 Java 程序员或 .NET 程序员,你就已经输了,因为首先你不应该自称为程序员(理由见上一点),其次这种限定使得你自动被排除在世界上大多数编程工作之外。
现实生活中,学会一种新语言,只需要几个星期,然后再过半年到一年,你就会变成老手。那时,根本没人在乎你以前用什么语言。
天才程序员是很少的,可是需要天才程序员的工作机会却很多很多,大多数场合都是需求远远大于供给。这意味着,即使你不是天才程序员,只要你是一 个优秀工程师,那些招聘公司也会立刻录用你,因为它们知道招聘到天才程序员的机会微乎其微。(重复一遍,所谓&优秀工程师&,就是你的履历上有一连串增加 收入、降低成本的记录。)
某些公司的人事部门,会根据某个关键词(比如 Java 或 .NET)过滤简历。虽然这样的公司根本不值得去,但是如果你真的想过这一关,也很容易:投入几个晚上和周末,在你当前的项目中设法用到这个关键词,然后再把它写进简历就行了。
五、如何提高求职时的谈判能力?
(How do I become better at negotiation?)
(1)记住你不是在求职,不是在展示编程技巧,而是在推销某种商业需求(增加收入或降低成本)的解决方案。
(2)面试时,要有自信,要平等的对话。你要的是一个互利的录用合同,不要每次对方提出要求,你都说 Yes。
(3)雇主可能会问&你的上一份工资是多少&,他们其实在说&给我一个理由,压低你的报酬&。你要想好如何适当地回答这个问题。
(4)要还价。这里不仅仅指钱,还指其它你关心的方面。如果你无法要求更高的薪水,那就试着要求更多的假期。
(5)在对方决定录用你以后,才开始讨论薪水。因为那时,他们已经在你身上,投入了大量的时间和金钱,产生了一定的成本,此时他们可能觉得一些小问题已经不值得再纠缠了,比如每年的工资增加几千元。
六、创业公司是否适合应届毕业生?
(Are startups great for your career as a fresh graduate?)
如果你一毕业就加入创业公司,最可能的结果是,接下来几年你都工作得非常辛苦,然后公司悲惨地失败了,你失业了,不得不又去另一家创业公司工作。
如果你真的想去创业公司,应该首先找一家大公司干上两年,攒一点钱,积累一些经验,然后精心挑选后再去创业公司。
在创业公司工作,一般情况下,你遇到的都是创业者。他们大多数人没有能力在两年后雇佣你;而在大公司工作,你遇到的都是其他大公司的人,他们中很多人将来有能力雇用你或者帮你介绍工作。
七、在创业公司工作是否值得推荐?
(So would you recommend working at a startup? )
选择创业公司,就是选择一条职业道路,而不是选择一种生活方式。可惜很多人把这两者颠倒了,他们推荐创业公司,实际上是在推荐一种你感兴趣的生活方式。
如果你确实喜欢这种生活方式,老实说,你在大公司里也可以得到它们。在许许多多大公司里,你都有机会钻研最新的技术,而且还能5点半准时回家照顾孩子。
八、沟通技能是最重要的职业技能
(Your most important professional skill is communication)
前面说过,工程师被雇佣,不是因为会编程,而是因为能够创造商业价值。所以,你让人们相信你能创造价值,这是帮助你找到工作的最重要的能力。这种能力与你真的能创造多少价值,实际上联系不是很紧密。
我认识的一些最优秀的程序员,往往拙于表达。因此,别人不是不想与他们一起工作,就是低估了他们的价值。相反地,如果你看上去很会编程,并且很善于表达,别人就会真的这样看待你。
CodeIgniter - 简单快速的PHP MVC 框架
& & & CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。她提供一套丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。使用 CodeIgniter 可以减少代码的编写量,并将你的精力投入到项目的创造性开发上。&
  CodeIgniter是由Ellislab公司的CEORickEllis开发的。其核心框架是为这个程序特别编写的,而其他很多类库、辅助函数和子系统则来自于RickEllis和PaulBurdick编写的内容管理系统ExpressionEngine。来自RubyonRails的启发我们创造了一个PHP框架,并且将框架的概念引入到网络社区的一般意识中。&
  她是一个小巧但功能强大的 PHP 框架,作为一个简单而&优雅&的工具包,她可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个与人共享主机并且为客户要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架,那么 CodeIgniter 就是你所需要的,如果...&
  * 你想要一个小巧的框架。&
  * 你需要出色的性能。&
  * 你需要广泛兼容标准主机上的各种 PHP 版本和配置(例如 PHP4)。&
  * 你想要一个几乎只需 0 配置的框架。&
  * 你想要一个不需使用命令行的框架。&
  * 你想要一个不需坚守限制性编码规则的框架。&
  * 你对 PEAR 这种大规模集成类库不感兴趣。&
  * 你不希望被迫学习一门模板语言(虽然可以选择你要求的模板解析器)。&
  * 你不喜欢复杂,热爱简单。&
  * 你需要清晰、完整的文档。
CodeIgniter中国:
Mysql主从同步配置
一、& & & &&主从配置的原理:
Mysql的&Replication&是一个异步的复制过程,从一个&Mysql instace(我们称之为&Master)复制到另一个Mysql instance(我们称之&Slave)。&
在&Master&与&Slave之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在&Slave&端,另外一个线程(IO线程)在&Master端。&
要实现&MySQL&的&Replication&,首先必须打开&Master&端的Binary&Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。打开&MySQL&的&Binary Log&可以通过在启动&MySQL Server&的过程中使用&&log-bin&&参数选项,或者在&f&配置文件中的&mysqld&参数组([mysqld]标识后的参数部分)增加&log-bin&&参数项。
MySQL&复制的基本过程如下:
1. Slave&上面的IO线程连接上&Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2. Master&接收到来自&Slave&的&IO&线程的请求后,通过负责复制的&IO
线程根据请求信息读取指定日志指定位置之后的日志信息,返回给&Slave&端的&IO
线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在&Master&端的&Binary Log&文件的名称以及在&BinaryLog&中的位置;
3. Slave&的&IO&线程接收到信息后,将接收到的日志内容依次写入到&Slave&端的RelayLog文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的高速Master&我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我&
4. Slave&的&SQL&线程检测到&Relay Log&中新增加了内容后,会马上解析该&Log&文件中的内容成为在&Master
端真实执行时候的那些可执行的&Query&语句,并在自身执行这些&Query。这样,实际上就是在&Master&端和&Slave
端执行了同样的&Query,所以两端的数据是完全一样的。
二、& & & &&设置mysql主从配置的优点:
1、& & & &&解决web应用系统,数据库出现的性能瓶颈,采用数据库集群的方式来实现查询负载;一个系统中数据库的查询操作比更新操作要多得多,通过多台查询服务器将数据库的查询分担到不同的查询服务器上从而提高查询效率。
2、& & & & Mysql数据库支持数据库的主从复制功能,使用主数据库进行数据的插入、删除与更新操作,而从数据库则专门用来进行数据查询操作,这样可以将更新操作和查询操作分担到不同的数据库上,从而提高了查询效率。
三、& & & &&主从数据库服务器的配置
1、& & & &&主数据库服务器的配置
(1)、修改mysql的配置文件(/f)在配置文件中设置:
server-id& && & = 1& &
###每一个数据库服务器都要制定一个唯一的server-id,通常主服务器制定为1。
log-bin=mysql-bin& &&
###mysql进行主从复制是通过二进制的日志文件来进行的,所以必须开启mysql的日志功能&(这个是/f的默认配置,保持不变即可)
(2)、GRANT REPLICATION SLAVE ON *.* TO ' replication'@'172.28.3.41' IDENTIFIED BY 'koncept';& && &&&
#####给主数据库服务器授予一个可以进行复制的用户,172.28.3.41为从服务器的IP,这样从服务器就能有钱先来访问主数据库服务器
2、从数据库服务器的设置
修改数据库配置文件/f,配置如下内容:
#server-id& && &= 1&&
####必须把server-id& && &= 1注释掉,
server-id& && & = 2&
####设置从的ID号
master-host& &&&=&&172.28.3.43&&
#####设置主服务器的IPmaster-user& &&&=& &replication&&
#####设置连接主服务器的用户名
master-password =& &concept& &&
&#####设置连接主服务器的密码
replicate-do-db=imtest0&&
######设置你要同步的数据库,可以设置多个& &####就是我们前面建的用户名和密码,另外如果有端口号的变化还要配置端口
master-port& &&&=&&&port&&配置成你设置的端口就OK了!
3、分别重新启动主从服务器&
####&如果不重新启动主服务器在后面查看status的时候会出现问题!
4、在从服务器上登录mysql,输入:show slave status\G&&如果发现有:&Slave_IO_Running: YesSlave_SQL_Running: Yes
就说明已经成功了,如果这两个选项不全是Yes,那就说明你钱面的某个配置错了,&我做的时候没有把主服务器重启,就出现&&Slave_IO_Running: NO。重启后好了!
四、& & & &&监控服务器的状态
1、& & & &&监控主服务器的状态
可通过show master status来监控主服务器的状态,内容如下:
+------------------+----------+--------------+------------------+| File& && && && & | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 |& &&&1164 |& && && && &&&|& && && && && && &|+------------------+----------+--------------+------------------+#####其中File表示日志文件记录,Position表示日志文件的位置,这个也是数据库执行复制操作的必须标识,后面两字段表示复制的数据库名和不复制的数据库名,也可以在配置文件中你进行配置。
2、& & & &&监控从服务器的状态
可以通过:show slave status\G来查看,另外如果从数据库在复制的过程中出现问题,可以通过命令reset slave从数据库服务器复制的线程,从数据库服务器的通常操作命令有:
start slave;&&####启动复制线程
stop slave;&&####停止复制线程
reset slave;&&####重置复制线程
change master to;&###动态改变到主服务器的配置
同步,异步,阻塞,非阻塞
原文链接:
首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.
举个例子,比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理业务了.
前者(排队等候)就是同步等待消息,而后者(等待别人通知)就是异步等待消息.在异步消息处理中,等待消息者(在这个例子中就是等待办理业务的人)往往注册一个回调机制,在所等待的事件被触发时由触发方(在这里是柜台的人)通过某种机制(在这里是写在小纸条上的号码)找到等待该事件的人.
而在实际的程序中,同步消息处理就好比简单的read/write操作,它们需要等待这两个操作成功才能返回;而异步处理机制就是类似于select/poll之类的多路复用IO操作,当所关注的消息被触发时,由消息触发机制通知触发对消息的处理.
其次再来解释一下阻塞和非阻塞,这两个概念与程序等待消息(无所谓同步或者异步)时的状态有关.
继续上面的那个例子,不论是排队还是使用号码等待通知,如果在这个等待的过程中,等待者除了等待消息之外不能做其它的事情,那么该机制就是阻塞的,表现在程序中,也就是该程序一直阻塞在该函数调用处不能继续往下执行.相反,有的人喜欢在银行办理这些业务的时候一边打打电话发发短信一边等待,这样的状态就是非阻塞的,因为他(等待者)没有阻塞在这个消息通知上,而是一边做自己的事情一边等待.
但是需要注意了,第一种同步非阻塞形式实际上是效率低下的,想象一下你一边打着电话一边还需要抬头看到底队伍排到你了没有,如果把打电话和观察排队的位置看成是程序的两个操作的话,这个程序需要在这两种不同的行为之间来回的切换,效率可想而知是低下的;而后者,异步非阻塞形式却没有这样的问题,因为打电话是你(等待者)的事情,而通知你则是柜台(消息触发机制)的事情,程序没有在两种不同的操作中来回切换.
很多人会把同步和阻塞混淆,我想是因为很多时候同步操作会以阻塞的形式表现出来,比如很多人会写阻塞的read/write操作,但是别忘了可以对fd设置O_NONBLOCK标志位,这样就可以将同步操作变成非阻塞的了;同样的,很多人也会把异步和非阻塞混淆,因为异步操作一般都不会在真正的IO操作处被阻塞,比如如果用select函数,当select返回可读时再去read一般都不会被阻塞,就好比当你的号码排到时一般都是在你之前已经没有人了,所以你再去柜台办理业务就不会被阻塞.
可见,同步/异步与阻塞/非阻塞是两组不同的概念,它们可以共存组合,也可以参见这里:
同步和异步:上面提到过,同步和异步仅仅是关于所关注的消息如何通知的机制,而不是处理消息的机制.也就是说,同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者。
所以在异步机制中,处理消息者和触发机制之间就需要一个连接的桥梁,在我们举的例子中这个桥梁就是小纸条上面的号码,而在select/poll等IO多路复用机制中就是fd,当消息被触发时,触发机制通过fd找到处理该fd的处理函数.
请注意理解消息通知和处理消息这两个概念,这是理解这个问题的关键所在.还是回到上面的例子,轮到你办理业务这个就是你关注的消息,而去办理业务就是对这个消息的处理,两者是有区别的.而在真实的IO操作时,所关注的消息就是该fd是否可读写,而对消息的处理就是对这个fd进行读写.同步/异步仅仅关注的是如何通知消息,它们对如何处理消息并不关心,好比说,银行的人仅仅通知你轮到你办理业务了,而如何办理业务他们是不知道的.
而很多人之所以把同步和阻塞混淆,我想也是因为没有区分这两个概念,比如阻塞的read/write操作中,其实是把消息通知和处理消息结合在了一起,在这里所关注的消息就是fd是否可读/写,而处理消息则是对fd读/写.当我们将这个fd设置为非阻塞的时候,read/write操作就不会在等待消息通知这里阻塞,如果fd不可读/写则操作立即返回.
很多人又会问了,异步操作不会是阻塞的吧?已经通知了有消息可以处理了就一定不是阻塞的了吧?
其实异步操作是可以被阻塞住的,只不过通常不是在处理消息时阻塞,而是在等待消息被触发时被阻塞.比如select函数,假如传入的最后一个timeout参数为NULL,那么如果所关注的事件没有一个被触发,程序就会一直阻塞在这个select调用处.而如果使用异步非阻塞的情况,比如aio_*组的操作,当我发起一个aio_read操作时,函数会马上返回不会被阻塞,当所关注的事件被触发时会调用之前注册的回调函数进行处理,具体可以参见我上面的连接给出的那篇文章.回到上面的例子中,如果在银行等待办理业务的人采用的是异步的方式去等待消息被触发,也就是领了一张小纸条,假如在这段时间里他不能离开银行做其它的事情,那么很显然,这个人被阻塞在了这个等待的操作上面;但是呢,这个人突然发觉自己烟瘾犯了,需要出去抽根烟,于是他告诉大堂经理说,排到我这个号码的时候麻烦到外面通知我一下(注册一个回调函数),那么他就没有被阻塞在这个等待的操作上面,自然这个就是异步+非阻塞的方式了.
大家好,欢迎来到我的小站!
站长在关注}

我要回帖

更多关于 特步官方旗舰店专卖店 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信