一切福田,不離方寸,從心而覓,感無不通。

60 个 Windows Store 的应用设计模版

今天给大家介绍的 60 个应用模版,全部是关于 Windows 8 设计相关的,它们很适合在 Windows 8 的平板上使用。如果你接下来想开发 Windows 8 应用,相信对你会有很大帮助。 而且这些模版都是放在 CodePlex 上。 点击图片进入模版页面 Block Style Color template will help if you want to build an app which needs a Variable Size Content display block. The Block Style Color template contains placeholders for Category and Detail Page. You can leverage this style if your implementation scenario is closest to this template. Block Style Pic template is an emulation of a data storage app with placeholders for category and details data. Brick Style template will help if […]

龙生   08 Jul 2013
View Details

开始3D编程前需注意的十件事

开始3D编程不是一件容易完成的任务。这里有很多新的东西可以发挥作用,从选择语言到选择合适的3d建模软件。当这10个事情完成时,无论你选择何种语言,使用何种建模软件,你都可以认为自己是这方面的半个专家了。 #1:建立自己的图形初始化函数 现在有种类繁多的3d引擎和平台,所以这个任务一般交给它们来完成。我还记得以前的事情,你必须使用windows函数来初始化OpenGL,并管理窗口句柄和资源的加载。了解事情是如何进行内部管理的会让你更深刻理解你现在在干什么,这是非常有用的。 我建议从NEHE的教程开始。在教程的第一章中包含了一个C语言编写的利用Windows API的图形初始化函数。如果这里有很多东西需要你控制,你可以试试C++的相对的函数,或者使用托管语言,像C#、Java或者Python。在网络中有很多例子。 #2:实现自己的相机 您可以从互联网上复制和粘贴摄像头的代码,使用它并没有大的问题, 但它不是自己的相机,直到你从头开始,充分了解一些概念,如向量处理,矩阵变化,角度转换等等。你应该先从一个FPS(第一人称射击)的摄像头开始,它会给你需要的一切并让你为接下来的学习做好准备。 如果你以后想构建自己的游戏,你不能使用它。我建议你阅读这篇文章,以找出最适合您的需求类型的相机。 #3:了解初级的3D概念 当我开始,我就开始听到了很多新词,如抗锯齿,各向异性过滤,阻塞测试,Z-缓冲,alpha测试,着色器语言,凹凸贴图等。如果你是一个玩家,也许你已经在配置游戏的图形设置时看过它们了。请确保你花费一些时间来阅读相关内容,因为这将会给你一个3D编程的概述。 #4:学习所有向量和矩阵的知识 这始终被低估。我强烈建议,为了正确地管理如相机,光线追踪,地形跟踪的东西,你应该知道关于这个的一切。当然,你也需要学会最基础的三角知识。现在我才明白,如果我愿意花几分钟研究这个问题,我的生活本应该很轻松。 #5:编写你自己的3D模型加载器 我建议从使用OBJ文件或STL文件开始,因为他们用一个ASCII格式表示。之后你可以迁移到其他根伟复杂的格式上,比如3DS格式。有了这个,你不仅将了解如何保存3D模型,你还会理解如何绘制三角形,然后你就会明白图形引擎是如何绘制一切的。 #6:成功实现自己的碰撞算法 一个事情是绘制世界,另外一个是管理其他中几何形状。在一个虚拟的3D世界中,这里没有物理定律,所以你必须创建它们。如果你想要一个对象不能穿越墙壁,那么你必须在墙壁中创建一个几何图形并计算所有东西。有几种方法来管理碰撞,我建议从在一个迷宫项目实现两体碰撞开始。试试这个链接,了解更多信息。 #7:实现一个小的粒子引擎 当我发现3D游戏中火焰、烟雾、照明和一些其他令人惊艳的效果是由粒子组成,而那些粒子是由相机面前的贴图组成。你添加更多的粒子,效果看起来更加逼真,但是性能就有所损失了。我的第一个粒子引擎是为火箭的烟雾制作的,而且我这样做的时候还没有不参看粒子引擎教程。后来我意识到了,我已经改造了车轮。通过实现这些东西,你会明白一些诸如粒子发射器、粒子行为等想法。 # 8:了解一个3D建模软件的基本知识 为了修改在你的应用中使用的3D模型,你应该知道基本的操作,比如平移,缩放,旋转,变形,导出为其他格式,并制作简单的模型。如果你不这样做,你在制作第一个游戏时遇到事事依赖别人的情况。我曾用过几个建模软件,我强烈推荐3D MAX或Maya。 #9 :加载和播放动画 我做过的最困难的事情是加载并正确播放动画。我不得不对3D max的XAF文件进行大量的逆向。我不得不学习骨骼层次,矩阵插值等东西。在最后,看到自己的模型自行移动是一件让人相当高兴的事情。我建议从一个机器人动画开始,因为动物模型什么的还需要一种名为蒙皮的技术。 #10 编写2D自定义GUI控件 当我开始使用XNA时,由于XNA没有实现窗体控件,我不得不构建自己的图形用户接口。这也导致了两件事: 第一:我有了构建自定义的GUI控件的能力。 第二:我懂得了一些重要的概念,如事件控制和事件捕捉。 这不是容易的事,我实现的最难的一个控件是listbox,但是一旦做出来了,就可以在很多地方使用了。 结论 在这个过程中你将会遇到很多问题。你不得不花费很多时间来使你的代码可以正常工作,即使你很聪明。但是我可以告诉你的是,从一个程序猿的角度来说,没有什么快乐比的上你看着你的代码能顺利的工作。我仍然不能忘记当我第一次编出OBJ模块加载器时的喜悦。当时,我想要加载个人脸图像,然后数个小时过去了,在凌晨3:50时,突然一个非常诡异的人脸出现在我的屏幕,真是吓死爹了,每当我想起这件事时,就哈哈大笑.. 我确信当你设法完成这10件事后,你可以说你已经了解了3D编程的基础。我写篇文章是因为我花了很多时间来完成它(指走了弯路了),所以我希望每个开始接触3D编程的人,能有一个小小的指南。我的建议是开始做一个小小的游戏,并不断的完善它。我觉得这是一个很好的方式,因为如果只是单纯的去学习而看不到实际的效果的话,积极性不高。一段时间之后,你会觉得游戏对你来说不一样了,因为你会花很多时间来想它们是怎么解决你曾经碰到的技术难点的。以上,我试图使这篇文章结构保持清晰和易懂,如果你喜欢,你可以访问我的 博客来获取更多的这方面的内容。 转自:http://www.oschina.net/translate/ten-things-to-achieve-when-starting-3d-programming

龙生   08 Jul 2013
View Details

a标签的四个伪类

★a标签的四个伪类的意义及排序:    在支持css的各个浏览器中,a标签链接的不同状态都能以不同的方式显示,这些状态包括:未被访问状态、已被访问状态、鼠标悬停状态和激活状态。        a:link|a:visited|a:hover|a:active这是a标签的排列顺序,这样排列是有一定因素的:a、技术层面:a的这四个伪类,分别表示了a的四种状态,要注意的是,a可以只具有一种状态(:link),或者同时具有两种或者三种状态,任何具有href属性的a标签,在没有对它进行操作之前就已经具备了:link的条件了;b、css优先级角度:从css优先级来看,当排列顺序发生变化时,后者会覆盖前者的表现样式,所以一般来说,我们要按照正确的顺序来排列a标签的四个伪类,可以简写为love、hate;    在实际应用中,很少会出现4个伪类同时使用的情况,有时我们只用到一个a:hover的效果,而不再对四个伪类都设置一遍,但是如果有其他伪类的需求,就必须按照4个伪类的正确顺序来设置,需要注意的是,除a标签以外,其他标签也都具备伪类,但是在IE6不支持a标签以外的标签的伪类; 转自:http://hi.baidu.com/haohaizhaozhao/item/96570e34ef28f5bfb80c03d9

龙生   07 Jul 2013
View Details

Mozilla的编程语言 Rust

Mozilla 目前正在开发一个新的编程语言,名为“Rust”,由web语言的领军人物Brendan Eich(js之父),Dave Herman以及Mozilla公司的Graydon Hoare 合力开发。 创建这个新语言的目的是为了解决一个很顽疾的问题:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。Rust是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,比如不需要管理内存,比如不会出现Null指针等等。 Rust 最早是在今年7月的Mozilla的社区峰会上公之于众的,当时就有人问以后是否会用Rust重写Firefox,Brenda说希望如此。Rust目前还处于初期的开发阶段,开发团队目前并不想花太多的时间在语法上,不过他们还是提供了一小段代码: iter pairs() -> tup(int,int) { let int i = 0; let int j = 0;  while (i < 10) {    put tup(i, j);    i += 1;    j += i;  } } fn main() {  let int i = 10;  let int j = 0;  for each (tup(int,int) p in pairs()) {      log p._0;      log p._1;      check (p._0 + 10 == i);      i += 1;      j = […]

龙生   05 Jul 2013
View Details

93岁抗战老兵蜗居公厕旁30年 曾搞情报杀伪市长

中广网北京7月4日消息 据中国之声央广夜新闻报道,这两天引发了热烈讨论的一则消息——人大代表提出的关于优抚抗战老兵的提案获得了民政部积极的反馈。媒体注意到这则消息,源头是来自香港的全国人大代表王敏刚先生7月2号在微博里贴出了两张图片,显示的是一份来自民政部的文件,全称叫《民政部对十二届全国人大一次会议第8260号建议的答复》。原来,在今年两会期间,王敏刚联合香港特区多位人大代表提交了“关于优抚抗战老兵的建议案”,希望在抗战胜利68年后的今天,对那些年事已高、生活困苦的老兵们给予应有的照顾和关怀。提案中说,此前,受到历史原因的影响,有部分原国民党抗日老兵生活贫困,甚至孤苦一人,老无所依,因此建议由民政部牵头,民间机构作为补充,为这些老兵提供更多的帮助。提案上交三个月后,民政部给予了正式回复,表示近期已下发通知,将原国民党抗战老兵纳入相应社会福利保障范围,社会养老服务体系将优先照顾原国民党抗战老兵;同时建议各地党委、政府在重大节日邀请老兵参加纪念活动并予以慰问。   既然说到原国民党抗战老兵的生活今后可能会获得进一步的改善,那我们就要来看一看现在他们生活的状况了,第一站,云南,昨天,在民政部回复人大代表建议的消息被热烈讨论的同时,我们也看到,在云南昆明有一条消息让人唏嘘不已,93岁的抗战老兵陈士麟,60年前,曾凭独特的“听风”本领干掉了敌占区武汉的伪市长。但此后长达30余年的时间内,都蜗居在昆明一个公厕旁的幽暗小屋里,直到最近,才在爱心人士的帮助下住进老年公寓。   记者:搬过来住还适应吗?   陈士麟:其是还不习惯。   记者来到昆明知青老年工作室,工作人员正准备帮陈爷爷从一楼搬到二楼,一间更亮堂的房间,陈爷爷的新家在公寓的四栋自理区,除了桌椅床等家具外还有一个彩电,全新的被褥挂着蚊帐,陈爷爷最珍贵的就看着英雄字样的绶带挂在墙上。   记者:没来这个地方吃什么呢?自己做?   陈士麟:吃,该咱吃自己做,习惯了。我们以前有50块钱用不了。   记者:儿女来看望您吗?   陈士麟:我姑娘们在宁江,回不来。儿子们来。   记者:陈爷爷叫陈士麟,抗战期间曾经是国民党重庆军队警备司令部情报组组长。   陈士麟:当天我是知识青年参军的,有的头衔。   记者:您这么干掉武汉的伪市长呢?   陈士麟:干那个市长是市长的侄子,我是搞情报的,他是搞行动的。   记者:抗战结束后,离开部队的他一直任职于昆明蓄电池厂,为千家万户亮上电灯。但由于历史原因,老人一直没有分到住房。   陈士麟:因为我的身份不好,盖房子这些没有我的份。   在长达30多年的时间里,陈爷爷和老伴一直蜗居在昆明一个公厕旁的一间小屋,前些年老伴去世了,陈爷爷就一直一个人住,如今他最大的心愿是能够台湾去看一看。   记者:您有什么心愿呢?   陈士麟:想要去一趟台湾。   记者:想要去一趟台湾。   陈士麟:就是台湾居住了,台湾还有我的老二哥。   记者:还有您的亲人在那边。   爱心人士武思奇(音)告诉记者,陈爷爷入住养老院的所有费用都由志愿者分免担负,现在还有很多爱心人士都向他伸出了援助之手。陈爷爷今后的生活衣食无忧,知情老年公寓院长谢会英(音)告诉记者,陈爷爷身体还硬朗,性格独立,所以先安排他在自理区。老人除了需要自己洗鞋子、袜子外,其他都由工作人员来大理。   陈会英:陈士麟老人入住我们知青老年公寓,我们一定尽我们的能力,为抗战英雄做好每一件事,让他们安度晚年。 (原标题:蜗居公厕93岁抗战老兵搬进养老院 曾干掉敌占区伪市长) 转自:http://news.sina.com.cn/s/2013-07-05/002627580057.shtml

龙生   05 Jul 2013
View Details

永远不要再犯的 5 个编程错误

当你开始成为一个程序员的时候,在编程的时候很容易陷入下面所述的一些坏习惯。 作为一名程序员,犯错误不可避免,这是你学习编程课程中的一部分。在你的职业生涯中你会犯很多错误 – 有的特别、有的普遍 – 通过这些错误你可以学习如何避免在将来再犯同样的错误。 但是如果你是一个初学者,你犯的错误可能会比其他人更频繁。那么如何才能避免大部分程序员每天都犯的这些普遍的错误呢? 想要避免错误,就要对它有所了解。这也是为什么我要和大家分享一些在我们的程序员生涯中阻碍我们成长的普遍错误。 在开始之前,你可能想知道为什么我知道这些是错误,不是最佳的方法? 有一个简单的回答就是 – 在我的职业生涯中,所有这些情况我都遇到过。有些情况经常遇到,有些只遇到过几次。每次犯错之后,我都后悔莫及。 最坏的情况是我根本你不知道我在做错的东西。一旦我意识到我在做错事,我就开始避免这些失误。至少,我现在写的代码比以前写的要好多了。 现在你们也可以避免这些错误。首先要知道你现在在做的是错误的。我知道大部门程序员都不会做任何错事,因为他们认为那是正确的,所以他们的行为会对程序和程序员的职业成长产生不利影响。 绝大部分的不良编程习惯都源于无知,而没有任何其他原因。 要成为一个好的程序员,我们必须一个一个的去掉这些无知。这也是那些好的编程书籍所尽力展示给我们的。 我们犯这些错误的部分原因在于它们确实完成了工作。并不是我们要做的 – 让我们的程序运行起来,完成我们日常的工作。 但是让什么好用只是你工作的一部分。如果想要让你的应用程序好用,你将不得不定期更新,修复任何新的bug,这些将有可能变得很频繁。这样一来能让你的工作变得比较容易的方法就是遵循好的编程实践。 另外,即使你在小型程序中能够摆脱这些错误,在大型程序中你也可能碰到他们。 如果你仍然犯这些错误,可能你的程序依然正常运行,能够完成需要的任务,但是它会变得易出bug,充满低效率的代码,难于维护。并且,当你很长时间后再来看它的代码的时候,你会发现代码很难理解。 作为程序员,我们的工作不仅仅是让我们的程序工作,而让用户来处理bug。我们的工作是确保用户即使输入错误也不会得到意外的结果。 所以要创建高品质的应用程序,请确保你不会在编程的时候犯下面的这些普遍的错误: 不加理解的拷贝代码 你经常会发现你需要的代码在一些别的程序里面有。整段的拷贝代码并且就这么使用它而不去烦恼于理解每一行代码是很诱人的。 有时候你拷贝的代码可能太大了以至于没有时间去完全理解它。如果你拷贝任何代码都像这样,就会有让你的程序变得脆弱易出bug等风险。 这样可能让工作完成,但是如果这段代码在某种情况下产生了一些意外的行为将会怎么样?如果使你的程序变慢或者有恶意行为将会怎么样?因此需要恰当的理解这些代码,或者需要绝对的确信你拷贝的代码的出处。 如果以后产生了bug,你会发现很难理解这些代码,因为你从来没有写过它。甚至于你会发现很难去找出bug并且修复它,特别是如果拷贝了很多代码在程序的不同地方。 所以当拷贝代码的时候要小心,即使很少的代码。确保你完全理解它了。如果你以前用过一段代码并且可以百分之百的保证它可以工作,那么它是安全可用的。但是如果不是的话,就要当心了。 每次都从头开始 这和我之前说完全相反,但是这确实是初学者容易犯的另外一个错误。 也许你认为每次都从头开始会很好,但是实际上它浪费了太多资源--时间,精力和思维,你可以更好的在其他方面使用它们。 如果你需要的东西已经存在了,那么使用它们。不要反复重复最基础的东西。 你可以使用这些时间让你的应用在其他方面更加优秀。 如果一个API、框架或者游戏引擎让你的任务更加轻松,你没有理由不适用它们。你的目标不是展示你有多么的优秀,也不是证明你可以独立完成任何任务。你的目标是保证你的应用完美工作,并且尽可能少花费一些资源去创造它们。 如果你这样做,你可以用更少的时间去完成同样地工作。时间就是金钱,即使是你为你自己工作,你也应该试着在同样的时间赚更多的钱。 没自己尝试就开始Google 很多次,出于习惯,每次出现新的问题,你都会通过Google来找找解决方案。对于程序来说,这不是个好办法。如果你总是没有自己试一试就通过外部方法来搜索答案,那么你的思维永远都不会受到挑战。 当你的思维停止挑战,你自身的编程技能就会停止增长。把你自己的任何技能都练得很棒,你就可以自己解决问题,这也适用于程序开发。 你是创建一个已经存在的东西,你从来不进行原创。这真是你想要做的吗? 搜寻存在的解决方案看起来很聪明,但是这会蒙蔽你的双眼,你的懒惰会阻止你成为一个好的程序员。如果你真的你想要搜寻一个解决方案,至少,开始的时候你在这个问题上先花一点事件思考一下。 也许你自己不花多少事件就能解决掉它。也许你会有比其他人更好的解决它。也许你的解决方案比其他人的更加精确。 如果你不尝试,你永远都不知道。 忽略警告 这是一个早期我进行程序开发时犯的另一个错误。我不能告诉你当你的程序中出现几百个警号和一次都不出现有什么大的不同-最重要的是忽略掉它就出现新的问题。 警告通常是你做的东西可能不是每次都能正常工作的一个标志。有时,忽略这些警告会造成很大的安全问题。但是真正的问题通常是出现在程序出现几百个警告,或者程序不能正常工作时。 很难确定到底是什么原因造成了那个错误,你必须花更很多的时间来分析每一个警告来找出造成问题发生的根本原因。相反,你可以在警告发生的时候就处理掉它。 通常你仅仅需要使用正确的变量或者正确的函数来处理这些警告。不会花你几小时,只需要几分钟遇到它们就把它们处理掉。 要尽早的处理警告。干净的代码看起来舒服工作起来也会很高。记住- 对待警告和对待错误一样 . 快速修复而不是永久性解决 是的,我对这样做感到愧疚。我不为此而自豪。但通常,我们仅仅是草草的修复一下,很少会去从根本上解决这个问题。 它能正常工作了,问题也处理掉了。但是如果你一不小心,问题又会以不同的方式重新出现。 无论你怎么修复一个问题,都应确保你不会把整个系统破坏掉。修复应该提升整个系统的运行状况,而不是让它更慢或更笨重。 同时,进行一个修复要能永久性的解决这个问题。要长期,不要短期。有时,由于懒惰和无知,我们通常喜欢快速的把问题解决掉,而不想在上面花太多时间。这就是为什么我们的写的代码能正常的工作,但是却不是在所有情况下都能工作。 如果你在工作的时候把它忽略掉,你会在后面花更多的时间。 了解上面这些错误能有助于你避免它们。如果你知道你所做的是错误的,一般来说你就不会去做。 为了把工作干好你应该热爱你所做的。如果因为某些原因你不喜欢编程了那么你几乎不会花额外的功夫来编写好的可维护的程序。 如果你打算写一手好程序那么你就应该 改变你对编程的看法。 你要把编程看成一门艺术而你自己则是一个艺术家。那么你就不会因为懒惰和不小心而犯错。 作家会把一篇未完成的文章发表么?画家会把未完成的画作拿来出售么?歌手会在他的歌中唱没有用的歌词么? 绝不会。 对编程来说也一样。任何情况下,都别编写未经测试的半吊子代码。在你的程序未写完前,不要发布它。别编写不会使用的无用代码。 这都是一些我们犯的一般性错误,因为我们喜欢在工作花更少的时间而去干其他事情。但这是不行的,迟早你都会为确保你的代码不出问题而负责。 越早的练习正确的编程方法,就对你的用户和自己越好。有时成为一个好的程序员意味着你不会犯糟糕程序员同样的错误。 谢谢大家的阅读。如果你知道谁不知道这些编程技巧的,请你把这篇文章发给他们,以便让他们成为好的程序员。 转自:http://www.oschina.net/translate/5-programming-mistakes-you-should-stop

龙生   05 Jul 2013
View Details

20 个简化开发任务的 JavaScript 库

所谓JavaScript库就是预先写好的可以简化基于JavaScript的应用程序开发的,尤其是Ajax和其它以web为中心的技术的JavaScript代码集。JavaScript主要用于写内嵌于HTML页面并和文档对象模型(DOM)进行打交道的各种函数(Function)。 一些JavaScript库很容易的和其它Web技术行进整合,譬如CSS, PHP, Ruby和Java。许多库可以检测不同的运行环境,并且消除应用程序为了兼容不一致而需要写的代码。 本文搜集了20个 JavaScript 库,它们能理清你遇到的开发相关的问题,让你的网站在竞争中领先一步。我们希望你能发现这个JavaScript库的列表对你的开发工作方便有用。尽情享受吧! 1. Tracking.js Tracking.js 是一个独立的JavaScript库,用于跟踪从相机实时收到的数据。跟踪的数据既可以是颜色,也可以是人,也就是说我们可以通过检测到某特定颜色,或者检测一个人体/脸的出现与移动,来触发JavaScript 事件。它是非常易于使用的API,具有数个方法和事件(足够使用了)。 Source 2. Aristochart Aristochart 是一个不依赖于其他库的 JavaScript 库,其功能是绘制二维的静态线图,使用 Canvas 绘制。该库特点是可定制,提供大量选项来更改设计、标签等等。 Source 3. Hitch Hitch是一个轻量级的JavaScript库,它添加了CSS文件表现能力。它拥有CSS前缀或者变量强大的预处理能力,但也有一些其它的东西。这个类库出现了多个现成的选择器,比如"anyof, allof, has.."同时允许我们去定义任何新的(叫做 hitches)。 Source 4. Cesium Cesium,一个基于WebGL的 JavaScript 绘图库, 通过其内部机制提供了这个能力。它支持3种不同的视图: 3D globe, 2D map,和 2.5D Columbus View ,从一种到另一种转换只需要一行代码。 画任何类型的形状,突出显示特定的地区以及使用鼠标或触摸与地图交互,都相当简单。Cesium只有一个 JS 文件,可在包括手机在内的所有主流浏览器运行。 Source 5. Two.js Two.js 是一个令人激动的JavaScript库。它为SVG,Canvas和WebG提供二维和单一绘图API。这个类库目前仅仅支持形状(没有文字或图像)。它允许引入SVG数据。有用的地方在于它能够聚合多种元素,当需要将他们转化在一起。有一个内置的动画循环,方法去绘制知名的形状和多种选择去自定义它们。 Source 6. Sequel.js Squel.js 是一个轻量级的JavaScript库。通过面对对象的API,它很容易就帮助我们建立SQL查询字符串。 它工作在所有的浏览器上(不被建议,因为查询可见)。通过node.js的帮助,它能够支持标准的SQL查询(它能够被定制去操作非标准的查询) Source 7. Draggabilly Draggabilly使得jQuery UI的拖拽交互变得容易了。它是一个独立的,轻量级的JavaScript库,元素的拖动可以限制在一个有此特性的容器当中,并且拖拽过程中每个事件(开始、移动、结束)都存在回调函数,它们也可以返回该元素的位置。 Source 8. Zebra Zebra是一个JavaScript库,带有一批用来创建类似桌面效果布局的富用户界面组件。UI元素通过HTML5 canvas创建,由CSS着色,预期在所有现代浏览器中渲染出相同的效果。有30+ UI 组件,包括grid, tabs, menu, form elements, menu 等许多许多. Source 9. Formula.js Formula.js 是一个JavaScript类库。对web开发者而言,它实现大部分公式。列出了公式的多个分类例如日期/时间,文本,逻辑,金额等。此外,客户端它需要和node.js(即将被发布)工作。 Source 10. Chart.js Chart.js 是一个令人印象深刻的图表类库,建立在HTM5 canvas之上。目前,它支持6种图表类型 (折线图,条形图,雷达图,饼图,柱状图和极地区域区)。而且这是一个独立的包,大小小于5kb。颜色,字体,边框和它们的尺寸都可以定制,图表可以动画的形式加载,非常炫。 Source […]

龙生   05 Jul 2013
View Details

区别各种IE浏览器和火狐的css写法

  1.区别IE和非IE浏览器代码如下:#tip {background:blue;background:red \9;}2.区别IE6,IE7,IE8,FF【区别符号】:「\9」、「*」、「_」【示例】:代码如下:#tip {background:blue;background:red \9;*background:black;_background:orange;}【说明】:因为IE系列浏览器可读「\9」,而IE6和IE7可读「*」(米字号),另外IE6可辨识「_」(底线),因此可以依照顺序写下来,就会让浏览器正确的读取到自己看得懂得CSS语法,所以就可以有效区分IE各版本和非IE浏览器(像是Firefox、Opera、Google Chrome、Safari等)。3.区别IE6、IE7、Firefox (方法 1)【区别符号】:「*」、「_」【示例】:代码如下:#tip {background:blue;*background:black;_background:orange;}【说明】:IE7和IE6可读「*」(米字号),IE6又可以读「_」(底线),但是IE7却无法读取「_」,至于Firefox(非IE浏览器)则完全无法辨识「*」和「_」,因此就可以透过这样的差异性来区分IE6、IE7、Firefox4.区别IE6、IE7、Firefox (方法 2)【区别符号】:「*」、「!important」【示例】:代码如下:#tip {background:blue;*background:green !important;*background:orange;}【说明】:IE7可以辨识「*」和「!important」,但是IE6只可以辨识「*」,却无法辨识「!important」,至于Firefox可以读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔IE6、IE7、Firefox。5.区别IE7、Firefox【区别符号】:「*」、「!important」【示例】:代码如下:#tip {background:blue;*background:green !important;}【说明】:因为Firefox可以辨识「!important」但却无法辨识「*」,而IE7则可以同时看懂「*」、「!important」,因此可以两个辨识符号来区隔IE7和Firefox。6.区别IE6、IE7 (方法 1)【区别符号】:「*」、「_」【示例】:代码如下:#tip {*background:black;_background:orange;}【说明】:IE7和IE6都可以辨识「*」(米字号),但IE6可以辨识「_」(底线),IE7却无法辨识,透过IE7无法读取「_」的特性就能轻鬆区隔IE6和IE7之间的差异。7.区别IE6、IE7 (方法 2)【区别符号】:「!important」【示例】:代码如下:#tip {background:black !important;background:orange;}【说明】:因为IE7可读取「!important;」但IE6却不行,而CSS的读取步骤是从上到下,因此IE6读取时因无法辨识「!important」而直接跳到下一行读取CSS,所以背景色会呈现橘色。8.区别IE6、Firefox【区别符号】:「_」【示例】:代码如下:#tip {background:black;_background:orange;}【说明】:因为IE6可以辨识「_」(底线),但是Firefox却不行,因此可以透过这样的差异来区隔Firefox和IE6,有效达成CSS hack。 区别不同浏览器,CSS hack写法: 区别IE6与FF:        background:orange;*background:blue; 区别IE6与IE7:        background:green !important;background:blue; 区别IE7与FF:        background:orange; *background:green; 区别FF,IE7,IE6:        background:orange;*background:green !important;*background:blue; 注: IE都能识别*;标准浏览器(如FF)不能识别*; IE6能识别*,但不能识别 !important, IE7能识别*,也能识别!important; FF不能识别*,但能识别!important; 另外再补充一个,下划线"_", IE6支持下划线,IE7和firefox均不支持下划线。 于是大家还可以这样来区分IE6,IE7,firefox background:orange;*background:green;_background:blue; —————————————- HACK对照表 —————————————-                   IE6 IE7 FF  _                 √   ×  × *                  √   √  ×  !important          ×   √  √  —————————————- 注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。  

龙生   04 Jul 2013
View Details

产品与项目的区别

  做产品和做项目有什么区别,大部分人在面对这类问题,总是有疑问,不是一样在做产品吗? 我们可以从几个方面来对产品及项目进行区分 第一:从时间方面上来区分 做产品的时间相对比较长,一般关注的是整个产品的规划、开发、推广、维护等,而项目却有特定的时间,什么时候开始,什么时候结束一目了然。所以,从时间来讲,产品是一个知道开始却不知道何时结束,相对于项目来讲,项目只是产品中的某个环节,产品包含项目。而项目又是产品的根本。 第二:从工作方面上来区分 做产品一般关注着整个产品生命周期,在整个过程中是需要维护的,需要时刻把握其平衡点,正如我前篇文章写的平衡把握,比方,产品的流程一般都是需求分析,产品规划,产品研发,产品推广,产品上市,产品消亡等。而整个过程是需要各个部门的协调及配合,才能完成这一切。对于项目来讲,只是在整个过程中某个环节中的任务,在规定的时间内完成起功能,使得产品正常运作。 第三:从结果方面上来区分 做产品最终的结果是给用户使用的,成功的产品其结果最终是将会是大面积普及应用。而项目的结果是起功能模块完成,某个阶段的模块完成,大项目包含着一大把小项目,而产品却包含着若干大项目。简单的来讲,项目只是满足特定的需求,主要是体现个性化的。 举个例子,微软的windows,经历了95、98、2000、me、xp、7等,整个产品是windows,是知道什么时候开始,却不知道什么时候结束的。每次完成的某项功能,就是某个项目。 简单的来说,产品是面向通用的,项目是面向单一用户的;项目完成就是产品,完成之前是项目,项目是面向单一用户的,功能相对特殊化、单一化、比较有针对性,项目在产品开发周期中可做为产品的雏形; 1、从用户角度看,项目是针对一个或几个用户的,产品是面向大众或行业的 2、从开发来说,项目是一个过程、最终结果是产品或系统或某类应用 3、从价格角度说,项目具有不确定性,随着客户的需求、采用的技术、周期等来衡量,产品相对而言有比较固定的价格 4、从需求角度来说,项目更侧重用户的实际需要,有特殊性,产品更侧重市场的需要,有广泛性 了解了这些之后,我想,做开发也好,做市场也好,应该会知道,自己做的是什么了吧,总是盲目的看到别人喊自己是项目经理,却不知道项目经理主要是什么,要做什么,做的是什么。自己在做开发的时候,总是不知道整个流程。如果你是定位自己做某方面的项目经理,那你现在所需要的经验,不是能力开发有多高,而是对整个项目的了解,对整个项目的各个阶段的分布,做产品经理也是。 作者:hao72 文章来源:pmcaff.com  

龙生   04 Jul 2013
View Details

windows安装hadoop

在Windows下利用cygwin仿unix环境安装配置Hadoop。 子猴也是刚接触到hadoop,对其的配置第一次按照网上的一些说明配置成功了,但有些东西感到不是很清晰,所以又重新把整个过程跑了一遍并记录下来,也是想对整个过程有个清晰的脉络,不正确之处请指教。 1、  所需软件 1.1、Cygwin(截至到目前最新版本是2.685) 下载地址:http://www.cygwin.com/setup.exe 1.2、JDK 1.6.x 1.3、hadoop-0.20.1 下载地址:http://apache.freelamp.com/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz 2、  安装 2.1、Cygwin安装说明见文章:http://hi.baidu.com/xiaoduo170/blog/item/9a21e38269a89ea46e81196f.html 补充:cygwin的bash是无法复制粘贴的,很不方便,所以可采用putty,下载地址是: http://www.linuxboy.net/linux/rc/puttycyg.zip ,将puttycyg.zip解压后的三个exe文件放到Cygwin安装目录HOME_PATH下bin目录下,然后修改HOME_PATH下的Cygwin.bat文件,建议用记事本打开,然后将bash –login –i注释掉,在前面加rem,也就是rem bash –login –i,或者:: bash –login –i,加入 start putty -cygterm – 即可。 这样一来就可以复制粘贴了,但注意的是默认的根目录是Cygwin的HOME_PATH,如果要切换到其他主目录,但如果你想要进入到其他根目录,但如果你想要进入到其他根目录,需要通过系统根目录,子猴这里的是/cygdrive,比如要进入到e盘,则为/cygdrive/e。 2.2、JDK的安装省略了 2.3、hadoop-0.20.1安装 将hadoop-0.20.1.tar.gz解压,解压后的目录如hadoop-0.20.1,假设是放在E盘: E:\hadoop-0.20.1,修改conf/hadoop-env.sh文件,将export JAVA_HOME的值修改为你机上的jdk安装目录,比如/cygdrive/d/tools/jdk1.6.0_03,/cygdrive是Cygwin安装成功后系统的根目录 3、  安装和配置ssh 3.1、安装 在Cygwin的根目录下分别运行: $ chmod +r /etc/group$ chmod +r /etc/passwd$ chmod +rwx /var$ ssh-host-config*** Info: Generating /etc/ssh_host_key*** Info: Generating /etc/ssh_host_rsa_key*** Info: Generating /etc/ssh_host_dsa_key*** Info: Creating default /etc/ssh_config file*** Info: Creating default /etc/sshd_config file*** Info: Privilege separation is set to yes by default since OpenSSH 3.3.*** Info: However, this requires a non-privileged account […]

龙生   04 Jul 2013
View Details