8 款个性化的 jQuery 和 CSS3 菜单

下面要给大家分享8款非常个性化的jQuery和CSS3菜单,这些菜单由于外观比较独特,所以也许不是非常通用,但是我们可以认可的是这些菜单的设计思路非常棒,值得借鉴。下面一起来看看这些菜单吧。

1、超酷的jQuery动画菜单

这是一款效果非常酷的jQuery动画菜单导航,当你把鼠标移到菜单项的时候,将会出现十分平滑的滑动效果,这个菜单漂亮的地方还在于菜单的背景图片,动画本身并不复杂,下面就一起来看看这个简单漂亮的jQuery动画菜单吧。

2、jQuery侧边固定停靠导航

这是一款非常精美的jQuery侧边固定停靠导航菜单,鼠标移入移出是都有流畅的弹入弹出效果,并能固定在浏览器一侧,不随着滚动条下拉而下滑。

3、jQuery和CSS3图片下拉菜单

这是一款基于jQuery和CSS3的图片下拉菜单,当鼠标移到菜单项上时,菜单上就会弹出一张该菜单项的主题图片,并以下拉的方式显示该菜单项的具体说明。下拉过程十分流畅。

4、CSS3 动画导航按钮

这是一组基于CSS3的动画导航按钮,该动画导航会在鼠标移上去之后播放一段对应的小动画,效果十分时尚。不过注意的是,该动画导航只能在基于WebKit的浏览器上才能运行,如Chrome。下面就一起来看看这款CSS3导航。

5、丝带状的CSS导航

这是一款利用纯CSS实现的丝带状的导航菜单,该CSS导航简单而又大方,犹如悬挂在蓝天之上,又仿佛倒映在碧水之中,确实是一个让人看了赏心悦目的CSS导航。

6、CSS3仿Windows 7的开始菜单

这是一款用纯CSS3实现的仿Win 7的开始菜单。如果我们分解这个Windows 7开始菜单,我们会得到1个div,2个ul列表,1组链接以及一些icon小图标,我们可以一起来看看具体的效果。

7、jQuery动画菜单jStackmenu

jStackmenu是一款基于jQuery的堆栈式动画菜单,当你用鼠标点击那个“爱心”按钮时,jStackmenu菜单就会以堆栈方式弹出或者收拢,并呈现出流畅的动画特效。

8、银白色的CSS3导航菜单

这是一款纯CSS3制作的导航菜单,这个银白色的菜单在朦胧夜空的衬托下显得格外亮丽。当鼠标滑过导航时,每个菜单项又会呈现不同的效果,整体上,这款CSS3导航菜单非常简单而又具有立体感。

以上就是8款个性化的jquery和css3菜单导航,喜欢的朋友可以收藏。

谷歌警告安卓开发者不要复制 Windows Phone 风格

谷歌已经发布了一些关于开发者从其他平台移植应用程序到Android的风格指南。其中特别指出,IOS和WP的界面元素不应该出现在安卓的应用里。WP光滑的风格在安卓社区非常受欢迎,社区了出现了很多长得像WP的ROM。

migrating_ui_elements.png

微软强调,在将软件移植到IOS和安卓时要将WP元素复制过去,而幸运的是,谷歌并没认证软件。所以尽管谷歌不想这样,但也阻止不了安卓开发者往平台复制WP元素。

文/WP8微迷网

摩托罗拉起诉苹果Siri语音服务侵权

8月19日消息报道,据外电消息报道,谷歌旗下摩托罗拉移动表示,已对苹果Siri语音助理服务等提起了新的专利侵权诉讼。

摩托罗拉移动向美国国际贸易委员会(ITC)提起了这一诉讼,称苹果产品侵犯了该公司的7项专利。诉讼涉及的苹果产品包括位置提醒服务、电子邮件通知服务和手机视频播放器等。摩托罗拉移动请求在美国禁止进口iPhone、iPad和Mac电脑。苹果产品主要在亚洲生产。

摩托罗拉移动在一封电子邮件声明中表示:“我们希望就这些专利权纠纷达成和解,但苹果不愿进行授权合作。我们别无选择,只能保卫我们自己和工程师的创新。”

苹果和摩托罗拉移动的彼此之间的专利纠纷已经鏖战很久。此前,摩托罗拉移动指控称,苹果侵犯了该公司的多项无线和智能手机技术;而苹果则指控称,摩托罗拉移动侵犯了与iOS设备相关的一些关键专利。

不过,在早前的专利纠纷中,摩托罗拉并不占优势。今年6月,美国地区法官理查德·珀斯纳(Richard Posne)昨天对摩托罗拉移动和苹果的专利诉讼作出判决,否决摩托罗拉移动美国专利号为6,175,559的专利。

为什么我反对纯算法面试题

本文来自 酷壳 – CoolShell.cn 陈皓 撰写的文章

算法面试可能是微软搞出来的面试方法,现在很多公司都在效仿,而且我们的程序员也乐于解算法题,我个人以为,这是应试教育的毒瘤!我在《再谈“我是怎么招程序员”》中比较保守地说过,“问难的算法题并没有错,错的很多面试官只是在肤浅甚至错误地理解着面试算法题的目的。”,今天,我想加强一下这个观点——我反对纯算法题面试!(注意,我说的是纯算法题)

我再次引用我以前的一个观点——

能解算法题并不意味着这个人就有能力就能在工作中解决问题,你可以想想,小学奥数题可能比这些题更难,但并不意味着那些奥数能手就能解决实际问题。

好了,让我们来看一个示例(这个示例是昨天在微博上的一个讨论),这个题是——“找出无序数组中第2大的数”,几乎所有的人都用了O(n)的算法,我相信对于我们这些应试教育出来的人来说,不用排序用O(n)算法是很正常的事,连我都不由自主地认为O(n)算法是这个题的标准答案。我们太习惯于标准答案了,这是我国教育最悲哀的地方。(广义的洗脑就是让你的意识依赖于某个标准答案,然后通过给你标准答案让你不会思考而控制你)

功能性需求分析

试想,如果我们在实际工作中得到这样一个题 我们会怎么做?我一定会分析这个需求,因为我害怕需求未来会改变,今天你叫我找一个第2大的数,明天你找我找一个第4大的数,后天叫我找一个第100大的 数,我不搞死了。需求变化是很正常的事。分析完这个需求后,我会很自然地去写找第K大数的算法——难度一下子就增大了。

 

很多人会以为找第K大的需求是一种“过早扩展”的思路,不是这样的,我相信我们在实际编码中写过太多这样的程序了,你一定不会设计出这样的函数接口 —— Find2ndMaxNum(int* array, int len),就好像你不会设计出 DestroyBaghdad(); 这样的接口,而是设计一个DestoryCity( City& ); 的接口,而把Baghdad当成参数传进去!所以,你应该是声明一个叫FindKthMaxNum(int* array, int len, int kth),把2当成参数传进去。这是最基本的编程方法,用数学的话来说,叫代数!最简单的需求分析方法就是把需求翻译成函数名,然后看看是这个接口不是很二?!

(注:不要纠结于FindMaxNum()或FindMinNum(),因为这两个函数名的业务意义很清楚了,不像Find2ndMaxNum()那么二)

非功能性需求分析

性能之类的东西从来都是非功能性需求,对于算法题,我们太喜欢研究算法题的空间和时间复杂度了。我们希望做到空间和时间双丰收,这是算法学术界的风格。所以,习惯于标准答案的我们已经失去思考的能力,只会机械地思考算法之内的性能,而忽略了算法之外的性能

如果题目是——“从无序数组中找到第K个最大的数”,那么,我们一定会去思考用O(n)的线性算法找出第K个数。事实上,也有线性算法——STL中 可以用nth_element求得类似的第n大的数,其利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大 于等于X,Sb中元素小于X。这时有两种情况:1)Sa中元素的个数小于k,则Sb中的第k-|Sa|个元素即为第k大数;2) Sa中元素的个数大于等于k,则返回Sa中的第k大数。时间复杂度近似为O(n)。

搞学术的nuts们到了这一步一定会欢呼胜利!但是他们哪里能想得到性能的需求分析也是来源自业务的!

我们一说性能,基本上是个人都会问,请求量有多大?如果我们的FindKthMaxNum()的请求量是m次,那么你的这个每次都要O(n)复杂度的算法得到的效果就是O(n*m),这一点,是书呆子式的学院派人永远想不到的。因为应试教育让我们不会从实际思考了。

工程式的解法

根据上面的需求分析,有软件工程经验的人的解法通常会这样:

1)把数组排序,从大到小。

2)于是你要第k大的数,就直接访问 array[k]。

排序只需要一次,O(n*log(n)),然后,接下来的m次对FindKthMaxNum()的调用全是O(1)的,整体复杂度反而成了线性的。

其实,上述的还不是工程式的最好的解法,因为,在业务中,那数组中的数据可能会是会变化的,所以,如果是用数组排序的话,有数据的改动会让我重新排序,这个太耗性能了,如果实际情况中会有很多的插入或删除操作,那么可以考虑使用B+树。

工程式的解法有以下特点:

1)很方便扩展,因为数据排好序了,你还可以方便地支持各种需求,如从第k1大到k2大的数据(那些学院派写出来的代码在拿到这个需求时又开始挠头苦想了)

2)规整的数据会简化整体的算法复杂度,从而整体性能会更好。(顺序的处理很容易进行各种处理)

3)代码变得清晰,易懂,易维护!(学院派的和STL一样的近似O(n)复杂度的算法没人敢动)

可能的争论

你一定会和我争论,

  • 如果程序员做这个算法题用排序的方式,他一定不会像你想那么多。是的,你说得对。但是我想说,很多时候,我们直觉地思考,恰恰是正确的路。因为“排序”这个思路符合人类大脑处理问题的方式,而使用学院派的方式是反大脑直觉的。反大脑直觉的,通常意味着晦涩难懂,维护成本上升。
  • 就是一道面试题,我就是想测试一下你的算法技能,这也扯太多了。没问题,不过,我们要清楚我们是在招什么人?是一个只会写算法的人,还是一个会做软的人?这个只有你自己最清楚。
  • 这个算法题太容易诱导到学院派的思路了。是的这道“找出第K大的数”,其它可以变换为更为业务一点的题目——“我要和别的商户竞价,我想排在所有竞争对手报价的第K名,请写一个程序,我输入K,和一个商品名,系统告诉我应该订多少价?(商家的所有商品的报价在一数组中)”——业务分析,整体性能,算法,数据结构,增加需求让应聘者重构,这一个问题就全考了。
  • 你是不是在说算法不重要,不用学?千万别这样理解我,搞得好像如果面试不面,我就可以不学。算法很重要,算法题能锻炼我们的思维,而且也有很多实际用处。我这篇文章不是让大家不要去学算法,这是完全错误的,我是让大家带着业务问题去使用算法。问你业务问题,一样会问到算法题上来。

小结

看过这上面的分析,我相信你明白我为什么反对纯算法面试题了。原因就是纯算法的面试题根本不能反应一个程序的综合素质

那么,在面试中,我们应该要考量程序员的那些综合素质呢?我以为有下面这些东西:

  1. 会不会做需求分析?怎么理解问题的?
  2. 解决问题的思路是什么?想法如何?
  3. 会不会对基础的算法和数据结构灵活运用?

另外,我们知道,对于软件开发来说,在工程上,难是的下面是这些挑战:

  • 软件的维护成本远远大于软件的开发成本。
  • 软件的质量变得越来越重要,所以,测试工作也变得越来越重要。
  • 软件的需求总是在变的,软件的需求总是一点一点往上加的。
  • 程序中大量的代码都是在处理一些错误的或是不正常的流程。

所以,对于编程能力上,我们应该主要考量程序员的如下能力:

  1. 设计是否满足对需求的理解,并可以应对可能出现的需求变化。
  2. 程序是否易读,易维护?
  3. 重构代码的能力如何?
  4. 会不会测试自己写好的程序?

所以,这段时间,我越来越倾向于问应聘者一些有业务意义的题,而且应增加或更改需求来看程序员的重构代码的能力,写完程序后,让应聘者设计测试案例。

比如:解析加减乘除表达式,字符串转数字,洗牌程序,口令生成器,通过ip地址找地点,英汉词典双向检索……

总之,我反对纯算法面试题!

(全文完)

谷歌扩大 Android 开源项目:索尼入选

谷歌Android开源项目(AOSP)主管让-巴普蒂斯特·奎鲁(Jean-Baptiste Queru)最近宣布,将把索尼Xperia S手机作为试点,为其提供与Nexus设备相似的开源支持。尽管该项目还处于发展早期,但如果能够成功,就将继续扩大支持范围,涵盖更多的非Nexus设 备。通过这一项目,Android手机便可第一时间获得系统升级。但在此之前,只有Nexus设备才能获得该项目的支持。

谈到为何选择Xperia S时,奎鲁的回答非常简洁:“这是一款非常强大的GSM设备,使用可以解锁的引导模式,它的生产厂商也一直与AOSP关系很好。”

业内人士认为,后两条至关重要。过去几年来,锁定的引导模式一直都是Android的一大争论焦点,但已经出现了一些积极信号。而索尼一直都是 最开放、最积极的Android OEM厂商,甚至在正式发布前就推出了升级软件的预览版。而AOSP此举似乎正是为了奖励索尼的这种开放态度。