微软osslab官网团队抄袭实验楼的网站这件事你怎么看?

当前位置 & &
& 微软Windows 10抄袭了更多OS X手势操作
微软Windows 10抄袭了更多OS X手势操作
22:19:26&&出处:&&作者:
编辑:雪花 &&)
让小伙伴们也看看:
文章观点支持
当前平均分:0(0 次打分)
[10-28][10-28][10-28][10-28][10-28][10-28][10-27][10-27][10-27][10-26]
登录驱动之家
没有帐号?
用合作网站帐户直接登录当前位置 & &
& OS X 10.11对比Win10:互相抄袭
OS X 10.11对比Win10:互相抄袭
08:27:41&&出处:&&作者:
编辑:小路 &&)
让小伙伴们也看看:
阅读更多:
好文共享:
文章观点支持
当前平均分:0(0 次打分)
[06-23][06-22][06-22][06-22][06-22][06-22][06-21][06-21][06-21][06-20]
登录驱动之家
没有帐号?
用合作网站帐户直接登录Zmrss Reader
» Items
12704 items (12704 unread) in 19 feeds
(67 unread)
(1406 unread)
(982 unread)
(2743 unread)
(359 unread)
(46 unread)
(46 unread)
(273 unread)
(203 unread)
(213 unread)
(523 unread)
(934 unread)
(431 unread)
(1034 unread)
(515 unread)
(579 unread)
(370 unread)
(1829 unread)
(151 unread)来自子话题:
&a href=&/vczh/tinymoe& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/vczh/tinymoe&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&这是我写的一个小语言,特点是所有的控制流都可以用函数来做,coroutine也可以用函数来做,而且用起来跟普通的语言一模一样,而且写起来都是一句一句的话,不像普通语言符号满天飞。然后我还在我的博客&a href=&/vczh& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/vczh&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 上连载文章(还没写完),来通过教大家实现tinymoe,学习编译原理的基础知识。&br&&br&整个编译器是用C++11和STL写的,还可以作为C++程序的参考读物
这是我写的一个小语言,特点是所有的控制流都可以用函数来做,coroutine也可以用函数来做,而且用起来跟普通的语言一模一样,而且写起来都是一句一句的话,不像普通语言符号满天飞。然后我还在我的博客 上连载文章…
来自子话题:
从计算机领域来说,驱动和固件从来没有过明确的定义,就好像今天我们说内存,大部分人用来表示SDRAM,但也有人把Android里的“固化的Flash/Storage&称为“内存”,你不能说这样说就错了,因为这确实是一种“内部存储”。&br&&br&但在Linux Kernel中,Driver和Firmware是有明确含义的,其中Driver是控制被操作系统管理的外部设备(Device)的代码段。很多时候Driver会被实现为LKM,但这不是必要条件。driver通过driver_register()注册到总线(bus_type)上,代表系统具备了驱动某种设备(device)的能力。当某个device被注册到同样的总线的时候(通常是总线枚举的时候发现了这个设备),总线驱动会对driver和device会通过一定的策略进行binding(即进行匹配),如果Binding成功,总线驱动会调用driver的probe()函数,把设备的信息(例如端口,中断号等)传递给驱动,驱动就可以对真实的物理部件进行初始化,并把对该设备的控制接口注册到Linux的其他子系统上(例如字符设备,v4l2子系统等)。这样操作系统的其他部分就可以通过这些通用的接口来访问设备了。&br&&br&而Firmware,是表示运行在非“控制处理器”(指不直接运行操作系统的处理器,例如外设中的处理器,或者被用于bare metal的主处理器的其中一些核)中的程序。这些程序很多时候使用和操作系统所运行的处理器完全不同的指令集。这些程序以二进制形式存在于Linux内核的源代码树中,生成目标系统的时候,通常拷贝在/lib/firmware目录下。当driver对device进行初始化的时候,通过request_firmware()等接口,在一个用户态helper程序的帮助下,可以把指定的firmware加载到内存中,由驱动传输到指定的设备上。&br&&br&所以,总的来说,其实driver和firmware没有什么直接的关系,但firmware通常由驱动去加载。我们讨论的那个OS,一般不需要理解firmware是什么,只是把它当做数据。firmware是什么,只有使用这些数据的那个设备才知道。好比你用一个电话,电话中有一个软件,这个软件你完全不关心如何工作的,你换这个软件的时候,就可以叫这个软件是“固件”,但如果你用了一个智能手机,你要细细关系什么是上面的应用程序,Android平台,插件之类的细节内容,你可能就不叫这个东西叫“固件”了。&br&&br&这种情况在计算机领域非常常见,所以大部分Spec都自己重新定义概念。比如说,我们平时写软件,说Component,很多就是只软件的其中一个部分,但在UEFI中,Component的定义是:&br&&br&An executable image. Components defined in this specification support on elf the defined module types.&br&&br&这是一个“独立的映像”,和我们一般理解的概念就完全不同,但如果你学计算机,请了解,这是我们的惯例。
从计算机领域来说,驱动和固件从来没有过明确的定义,就好像今天我们说内存,大部分人用来表示SDRAM,但也有人把Android里的“固化的Flash/Storage"称为“内存”,你不能说这样说就错了,因为这确实是一种“内部存储”。但在Linux Kernel中,Driver和Firmwa…
来自子话题:
Ubuntu用户答一发, 我现在已经基本不开windows了.学习娱乐开发基本都在Ubuntu&br&&ul&&li&首先你要接受的是,没有QQ, 因为我本来平常生活就不需要用QQ. 如果你对QQ需求很大的话建议不要装Ubuntu. Ubuntu下基本没有好的QQ解决方案.&br&&/li&&li&当时想转到Ubuntu是因为以后要做web后端开发必须要很熟悉Linux, 其次是觉得Ubuntu的整个UI要比Windows好看. 所以我建议装好以后可以把Ubuntu折腾漂亮一点. 比如装Unity Tweak Took, compizConfig Setting Manager等配置软件, 看看网上的教程可以把Ubuntu弄的很炫酷..各种透明,动画,3D效果....还有推荐一套图标主题: Numix Circle 主题图标, 非常好看强烈推荐&br&&/li&&li&其次是输入法, 强烈推荐搜狗输入法, 安装稍有点麻烦, 地址:&a href=&/Linux/62.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ubuntu 13.04安装搜狗输入法_Linux教程_Linux公社-Linux系统门户网站&i class=&icon-external&&&/i&&/a&&/li&&li&办公系统那一套, 三种解决方案, LibreOffice, WPS和Google doc. 如果不是需要经常修改MS word,上面三种写写文档都够用...&/li&&li&开发相关, 工具应有尽有...文本编辑器推荐Sublime Text, IDE推荐Intellij那一套. 其他什么工具需要就直接terminal输sudo apt-get install ... 搞定&/li&&li&用Ubuntu一定要会Google!!!! 很多问题中文资料根本查不到....&/li&&li&推荐一个国外网站总结的,装完Ubuntu必干得几件事: &a href=&/top-things-installing-ubuntu-14-13-/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Top Things To Do After Installing Ubuntu 15.04&i class=&icon-external&&&/i&&/a&&/li&&li&最后推荐一个神器: Ubuntu After Install, 这货会帮你把所有常用软件全装好....什么Chrome, Dropbox, 听歌的看片的下载的....也是强烈推荐! 官网地址: &a href=&https://www.thefanclub.co.za/how-to/ubuntu-after-install& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&thefanclub.co.za/how-to&/span&&span class=&invisible&&/ubuntu-after-install&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&/ul&
Ubuntu用户答一发, 我现在已经基本不开windows了.学习娱乐开发基本都在Ubuntu首先你要接受的是,没有QQ, 因为我本来平常生活就不需要用QQ. 如果你对QQ需求很大的话建议不要装Ubuntu. Ubuntu下基本没有好的QQ解决方案.当时想转到Ubuntu是因为以后要做web后端…
&b&--&/b&&br&&b&现在关注的是移动互联网前端方向, 故介绍几个前端和Node方面的:&/b&&br&&b&1. SeaJS &/b&&br&- 前端模块化&br&- 来自支付宝 &br&- &a href=&http://seajs.org/docs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&seajs.org/docs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&b&2. Pomelo &/b&&br&- a fast, scalable game server framework for node.js&br&- 高性能的游戏后端,还去欧洲宣讲了。&br&- 来自网易&br&- &a href=&/NetEase/pomelo& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/NetEase/pome&/span&&span class=&invisible&&lo&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&b&3. MongoSkin&/b&&br&- mongodb的nodejs封装,国外很多类库用到它。&br&- &a href=&/kissjs/node-mongoskin& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/kissjs/node-&/span&&span class=&invisible&&mongoskin&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&br&&b&---- 以下类库,我都参与了,但没多少贡献,只好打打广告。。。 ---&/b&&br&&b&1. WeBot&/b&&br&- &a href=&/node-webot& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/node-webot&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&- nodejs的微信公众平台类库&br&&br&&b&2. ng-nice&/b&&br&- &a href=&/showcase/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/showcase/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&- Angular范例程序&br&&br&&b&3. Scrat&/b&&br&- webapp模块化开发体系 &b&(强烈推荐)&/b&&br&- &a href=&http://scrat-team.github.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scrat-team.github.io/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&- &a href=&/fouber/blog& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/fouber/blog&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&b&(前端工程系列BLOG, &a data-hash=&e9306aab1b61e74e7ae6& href=&/people/e9306aab1b61e74e7ae6& class=&member_mention& data-editable=&true& data-title=&@张云龙& data-tip=&p$b$e9306aab1b61e74e7ae6&&@张云龙&/a& ) &/b&&br&&br&&br&&b&---&/b&
--现在关注的是移动互联网前端方向, 故介绍几个前端和Node方面的:1. SeaJS - 前端模块化- 来自支付宝 - 2. Pomelo - a fast, scalable game server framework for node.js- 高性能的游戏后端,还去欧洲宣讲了。- 来自网易- …
来自子话题:
问这问题的同学,这世界上不是只有linux和Windows两种操作系统,还有个OS X&br&&br&你见过哪个用过OS X的linux用户黑OS X(没用过OS X黑OS X的小年轻太多了)?没听说一句话叫「男人有钱就变坏,linux用户有钱就变OS X用户」?
问这问题的同学,这世界上不是只有linux和Windows两种操作系统,还有个OS X你见过哪个用过OS X的linux用户黑OS X(没用过OS X黑OS X的小年轻太多了)?没听说一句话叫「男人有钱就变坏,linux用户有钱就变OS X用户」?
来自子话题:
&p&说到分支,微软里面就有不同的态度。&/p&&br&&p&SQLServer认为,一个功能需要一个分支,你们几个人慢慢写,写到最后merge进去就好了。当然merge起来比较痛苦。&/p&&br&&p&Office认为,分支是什么能吃嘛,我们所有的人都在同一个分支上干,merge的痛苦分散到了每次checkin里面,build不过系统自动把你的checkin给删掉发邮件让你重来。&/p&&br&&p&说实话两种方法都运转的很好,所以其实并没有谁更加好的问题。&/p&&br&&p&所以,你们还是把心思花在提高你们的编程技术吧,不要浪费时间在这些无谓的问题上。&/p&
说到分支,微软里面就有不同的态度。SQLServer认为,一个功能需要一个分支,你们几个人慢慢写,写到最后merge进去就好了。当然merge起来比较痛苦。Office认为,分支是什么能吃嘛,我们所有的人都在同一个分支上干,merge的痛苦分散到了每次checkin里面,bui…
《Unix 编程艺术》中,作者花了一本书的时间来展开解释 KISS 原则。&br&&br&这些故事之所以是附录,不是让你一上来就看的。&br&虽然有一定模仿中国的禅宗故事,其实围绕的还是 KISS 原则以及其它哲学之道:&br&&ul&&li&万行码:&a href=&http://i.linuxtoy.org/docs/guide/ch12s02.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&i.linuxtoy.org/docs/gui&/span&&span class=&invisible&&de/ch12s02.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&表面看,是在说 Unix 技术的优越,Unix 的管道机制是个伟大的发明,用来方便传递 IO 数据,快速将两条指令组合而实现更复杂的任务,比传统的 coding 要高效很多;&br&进一步看,讲的是把任务分解,化繁为简,再步步攻下,才是真正的实践之道;&br&当然,文中以管道为例,并非说 C 不好;&br&运用到目前的软件开发技术中,其实是 Agile Development,就是创建可复用的模块和组件,合理划分以及解耦,并尽可能开放简单通用的接口互操作;&br&只是 Unix 很早就把这个思想给解读透,并且付诸实践中;&br&&br&&/li&&li&脚本狂:&a href=&http://i.linuxtoy.org/docs/guide/ch12s03.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&i.linuxtoy.org/docs/gui&/span&&span class=&invisible&&de/ch12s03.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&表面看,脚本狂自身的变化,从满口 Leet 语(比如 e = 3,o = 0 等黑客惯用语)到正常的语言;&br&进一步看,讲的是做人的道理,要做一名优秀的黑客,先学会做人;&br&&br&&/li&&li&双路论:&a href=&http://i.linuxtoy.org/docs/guide/ch12s04.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&i.linuxtoy.org/docs/gui&/span&&span class=&invisible&&de/ch12s04.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&表面看,是说两条软件设计准则,简单和健壮,以及两者如何平衡;&br&进一步看,矛盾是具有对立和统一特性的;&br&对立的时候只需要关注该关注的方面,统一的时候,选择好折中点;&br&&br&&/li&&li&方法论:&a href=&http://i.linuxtoy.org/docs/guide/ch12s05.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&i.linuxtoy.org/docs/gui&/span&&span class=&invisible&&de/ch12s05.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&表面看,似乎会让人一头雾水;&br&进一步看,任何事物都有强有弱,程序的弱如优化时的性能瓶颈,而渔夫的弱如不会游泳;&br&渔夫如果是只考虑产能(能捕到很多鱼),而忘记自己的弱(不会游泳),很有可能因为渔船超重而发生意外;&br&方法论其实是对于自己弱的地方能找到合适的补救方案,从而把事情做好;&br&&br&&/li&&li&GUI 论:&a href=&http://i.linuxtoy.org/docs/guide/ch12s06.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&i.linuxtoy.org/docs/gui&/span&&span class=&invisible&&de/ch12s06.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&这个有点难懂,请参考知乎问题:&a href=&/question/& class=&internal&&怎么理解《无名师的 GUI 论》?&/a&&br&&br&&/li&&li&Unix 狂:&a href=&http://i.linuxtoy.org/docs/guide/ch12s07.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&i.linuxtoy.org/docs/gui&/span&&span class=&invisible&&de/ch12s07.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&表面看,是在大师和 Unix 狂热者在讨论各种尊者的发明中的缺憾,却激怒了狂热者;&br&进一步看,狂热者之所以被激怒,正是因为缺少对事物客观的认知,而只看重各类技术带来的好处;&br&狂热者之所以不能成为大师,就如同文中最后所讲:「这些尊者之智,就是了解自身之愚」;&br&&br&&/li&&li&Unix 传统论:&a href=&http://i.linuxtoy.org/docs/guide/ch12s08.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&i.linuxtoy.org/docs/gui&/span&&span class=&invisible&&de/ch12s08.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&表面看,是在讨论 Unix 到底是什么,一般人的理解可能只是它的名字、或者源码,其实不然;&br&进一步看,Unix 之所以为 Unix,是因为它的编程艺术以及哲学思想,是因为 Unix 创始者将 coding 这种看似单调的工作提高到了艺术和哲学高度,并贯彻各种简单同时优秀的思想,融入代码之中,优雅地表现出来,这才是 Unix 的精髓。&br&&br&&/li&&/ul&大部分小故事的点睛之笔都在文章倒数第二段。&br&结合全书,闲静下来的时候,多读多想,自然会有新的收获。&br&所以,以上均为个人阅读理解,欢迎指正。
《Unix 编程艺术》中,作者花了一本书的时间来展开解释 KISS 原则。这些故事之所以是附录,不是让你一上来就看的。虽然有一定模仿中国的禅宗故事,其实围绕的还是 KISS 原则以及其它哲学之道:万行码:表面看,是在说 Unix 技术的优越…
闭源软件的话,由于看不到源码,所以很多人并不能判断出到底做的怎么样。说一个前一阵我看到的闭源代码里面的情形吧。比如他们想要解析px这个单位,代码里面直接做了四次比较:px,pX,Px,PX。幸好解析的不是twip。据信,就算微软的代码里面,也有很鬼畜的代码,比如某些模板狂人写的代码之类。开源软件,能看到代码,最大的好处是可以直接骂作者傻逼。&br&&br&回到所谓的水平问题上来。如果指的是开发水平的话,我们可以参照田忌赛马来组团做比较。这就没有什么科学性了。开源和闭源界都有庸人,也都有天才到碾压众人的开发者。&br&&br&说到底,开源和闭源只是一种软件的分发策略而已。水平?哪有什么水平问题。
闭源软件的话,由于看不到源码,所以很多人并不能判断出到底做的怎么样。说一个前一阵我看到的闭源代码里面的情形吧。比如他们想要解析px这个单位,代码里面直接做了四次比较:px,pX,Px,PX。幸好解析的不是twip。据信,就算微软的代码里面,也有很鬼畜的…
来自子话题:
支持完整的POSIX早就实现了,最早叫做Service for Unix作为一个单独的软件包安装。实现了所有POSIX的API甚至支持*nix的用户认证,也就是说标准的POSIX程序在*nix下能跑的在这上面都能跑。后来这个作为一个标准的Windows组件并入Windows。当时这东西跑普通*nix程序比Cygwin和minGW都快,但是由于是微软官方推出的,还是遭到冷落。再后来这玩意儿改名叫Subsystem for UNIX-based Applications,定位变成帮助*nix服务器上跑的程序无痛迁移到Windows的玩意儿。尴尬的是也没什么人用。到Windows 2012和Windows 8的这一代之后,这玩意儿就正式砍掉了,但是留下了NFS支援等一些互操作的小组件。官方也直接推荐要跑POSIX的请直接用Hyper-V的虚拟化,或者安装CygWin等第三方解决方案。&br&&br&微软很多东西不是不好,都是因为摊子太大被埋没。话说任何有时间积淀的软件多多少少都会有这么一些知道的人很少但是很好的东西。想当年我玩操作系统的时候都是把系统安装的exe或者binary一个一个看过去是干什么用的,往往能发现很多好玩的东西。
支持完整的POSIX早就实现了,最早叫做Service for Unix作为一个单独的软件包安装。实现了所有POSIX的API甚至支持*nix的用户认证,也就是说标准的POSIX程序在*nix下能跑的在这上面都能跑。后来这个作为一个标准的Windows组件并入Windows。当时这东西跑普通*n…
来自子话题:
我的统计是这样的。去年11月底搬家,没commit。今年6月电脑挂了,没commit。其他时候多少有点。&br&&img data-rawheight=&298& data-rawwidth=&753& src=&/fcfdd72f7bfd_b.png& class=&origin_image zh-lightbox-thumb& width=&753& data-original=&/fcfdd72f7bfd_r.png&&&br&不过开源项目这种东西,还得看坚持的时间。&br&&img data-rawheight=&204& data-rawwidth=&468& src=&/a6ac16b945b1dd90a66180bcae94ab5d_b.png& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/a6ac16b945b1dd90a66180bcae94ab5d_r.png&&
我的统计是这样的。去年11月底搬家,没commit。今年6月电脑挂了,没commit。其他时候多少有点。不过开源项目这种东西,还得看坚持的时间。
来自子话题:
我会推荐普通用户使用 Chrome,省心,干净。但是强烈推荐开发者使用高度定制的 Firefox。&br&Firefox 开放的开发者权限比 Chrome 大的多,从而允许开发者创造各种实用的工具。&br&光这些一直在用的插件就让我无法离开 Firefox。&br&我的插件: &a class=& wrap external& href=&https://addons.mozilla.org/en-US/firefox/collections/alswl/al/& target=&_blank& rel=&nofollow noreferrer&&alswl的Firefox插件 :: Collections :: Add-ons for Firefox&i class=&icon-external&&&/i&&/a&&br&&br&* Vimperator&br&* Video DownloadHelper&br&* Easy DragToGo+&br&* Firebug&br&* FireGestures&br&* Flagfox&br&* New Tab Homepage&br&* Tab Focus&br&* YSlow&br&* Greasemonkey&br&* Inline Code Finder for Firebug&br&* JSONView&br&* Poster&br&* Web Developer&br&* User Agent Switcher&br&* DNS Flusher&br&* FireQuery&br&* Context Search&br&* Blank Your Monitor + Easy Reading&br&* HostAdmin&br&* Adblock Plus&br&* AddThis&br&* Add to Search Bar&br&* AutoProxy&br&* DownThemAll!&br&* PDF Viewer&br&* CookieSwap&br&* Extended Statusbar&br&* Flashblock&br&&br&唔,爱死这帮小家伙了。&br&&br&ps:打开速度的比较我觉得无意义,浏览器这类软件,应该常开,而不是打开关闭打开关闭。操作系统更不应该关机,而是应该待机。所以我更看中长时间运行的稳定性。一般来说,我的 Firefox 会持续开启 14d - 30d 左右。
我会推荐普通用户使用 Chrome,省心,干净。但是强烈推荐开发者使用高度定制的 Firefox。Firefox 开放的开发者权限比 Chrome 大的多,从而允许开发者创造各种实用的工具。光这些一直在用的插件就让我无法离开 Firefox。我的插件:
来自子话题:
利益相关:西安电子科技大学13级软件工程专业学生。&br&&br&在我大一下学期的时候,学校的 &a data-hash=&625b896c929ac6ed6b9f57& href=&/people/625b896c929ac6ed6b9f57& class=&member_mention& data-editable=&true& data-title=&@李晋& data-tip=&p$b$625b896c929ac6ed6b9f57&&@李晋&/a&老师向学院申请开设Git,Ruby On Rails等课程,但是由于这些课程的开设不符合传统教学大纲,学院不理解这些内容(某领导说:教git?git是什么?你们这不是乱来嘛?),课程的开设遭遇了重重阻碍,&br&后来经过一番努力,课程成功开设,由ThoughtWorks的工程师来向软院全大一的学生授课。&br&课程作业是搭建一个博客,然后把源码上传到自己的OSChina或Github上交作业。&br&&br&不过从效果上看,90%以上的人即使学了Git也不知道是用来干啥的,至于Github,OSChina这些东西都成过眼云烟了。
利益相关:西安电子科技大学13级软件工程专业学生。在我大一下学期的时候,学校的 老师向学院申请开设Git,Ruby On Rails等课程,但是由于这些课程的开设不符合传统教学大纲,学院不理解这些内容(某领导说:教git?git是什么?你们这不是乱来嘛?),课…
来自子话题:
大的方面都差不多是因为这两个浏览器都遵循W3C标准,对于HTML代码和CSS代码有着高度一致的表现方式(在一些小的地方还是有差异)。这样做的目的就是为了减低网站建设的成本,只要网站遵循W3C标准制作,那么就可以确保在不同的浏览器上面都达到同样的效果,而不需要为不同的浏览器编写不同的代码。而微软的IE浏览器因为历史原因,IE6、7在遵循标准方面做得很差,在IE8开始逐步改善,目前IE10和IE11已经有了很大的进步。&br&&br&Mozilla基金会的Firefox浏览器的目的和Google开发出Chrome浏览器的目的是不一样的,这是这两个浏览器的第一个不同点。&br&&br&Mozilla基金会(注意,这是一个非营利机构,其下属有一个Mozilla公司,是商业公司)的目的是让浏览器市场保持着竞争的压力,不会再出现像IE6时代这样一家独大的,用他们自己的说法就是“一个致力于在互联网领域提供多样化选择和创新的公益组织”。&br&&br&Google开发Chrome则是为用户提供一个更好使用Google服务的环境。Google的搜索、地图、邮箱、文档、网盘等等产品,都是基于网络的,如果用户没有一个很方便很快的浏览器,毫无疑问会阻碍用户使用Google的服务。因此,Google除了自己开发Chrome,还有维护一个开源的项目Chromium,鼓励其他商业公司加入。还用Chrome OS,最终的目的都是为了让用户更容易使用Google的服务。&br&&br&在功能上,这两家浏览器也是各有侧重。Firefox追求可定制性,Chrome则是追求浏览速度。&br&&br&Firefox有很强大的扩展功能(注意,对于Firefox,增强功能的附加程序叫做&b&“扩展”(add-on)&/b&,而不是&b&“插件”(plug-in)&/b&)。通过扩展程度,用户可以很容易地定制Firefox,为其添加各种功能、改变浏览器的行为方式、改变浏览器的外观等等。&br&&br&为了要支持扩展,老版本的Firefox牺牲了启动速度。虽然什么都没安装的Firefox启动挺快,但是如果用户安装了很多扩展(夸张的用户会装几十个甚至上百个扩展),那么Firefox启动就好花很长的时间(数十秒计,在比较老的电脑可能要以分钟计)。在新版本的Firefox(从Firefox4开始)开始,Firefox在不断改善启动速度。现在新版本的Firefox(比如Firefox20+)在启动上已经快了很多。&br&&br&Chrome则是走浏览路线,它虽然也支持扩展(extension),但是对于扩展的放权远远无法和Firefox比,无法像Firefox那样通过扩展把浏览器改头换面。当然,毫无疑问,多数用户没有这个需求。&br&&br&因为Chrome的主要使命是让用户更好地访问Google服务,因此Chrome:&br&&ol&&li&追求界面简洁:用户不需要在浏览器上追求什么,他们的需求由Google服务满足。Chrome的很多高级设置都是隐藏起来的。&/li&&li&追求启动速度:如果用户想要看一下邮件,你最好马上就能打开。&/li&&li&追求运行速度:Google的网络服务是一个在网上运作的程序,而不是简单的页面,要和用户做很多互动,而这些功能对浏览器有依赖。所以Chrome的处理能力要足够强,不能让用户点了页面上的按钮半天都没反应。&/li&&li&追求稳定性:Chrome中的每个标签页都是一个独立的进程,某个页面崩溃了,其他页面都不会受到影响。如果用户正在用Google的在线文档写一个重要的文档,然后想查一下地图,接着地图挂断了,顺带也把用户的邮件页面用挂了,后果就会很严重。就算在线文档有自动保存,也会让用户觉得很不爽。&/li&&/ol&&br&&p&因为Chrome已经能够满足很大部分用户的网上需求,所以很快就开始动摇了IE和Firefox的地位。而浏览器商也被迫在性能上追赶Chrome。比如加快启动速度、加快运行javascript的速度等等,这些都是Chrome出现后的事情。也因为浏览器的性能快速提升,网站也可以做得越来越强大。&/p&&br&&p&经过这些年的发展,Firefox和Chrome的最明显差异还是在扩展上面。&/p&&br&&p&Firefox有着多年积累的强大扩展资源,加上自身对扩展的放权,有很多Chrome上无法实现的扩展。典型的如界面修改的扩展,比如Chrome刚出来的时候,无标题栏很惊艳,Firefox通过扩展可以把界面修改得和Chrome一样:把标签页弄到顶部、隐藏标题栏等。而你想要把Chrom弄成Firefox那样就不行了。可见Firefox的自由度。这些扩展一直吸引着一部分有独特需求的用户不放弃Firefox。&/p&&br&&p&但是,正如上面说的,有这些需求的用户毕竟不算多数,因此很多仅仅是不想用IE的用户,都改用了简洁的Chrome,而不是选择复杂的Firefox。&/p&
大的方面都差不多是因为这两个浏览器都遵循W3C标准,对于HTML代码和CSS代码有着高度一致的表现方式(在一些小的地方还是有差异)。这样做的目的就是为了减低网站建设的成本,只要网站遵循W3C标准制作,那么就可以确保在不同的浏览器上面都达到同样的效果,…
&img src=&/c707fa9bbcfc07eb49f9d7db58ab6977_b.jpg& data-rawwidth=&683& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&683& data-original=&/c707fa9bbcfc07eb49f9d7db58ab6977_r.jpg&&来自 &a href=&/products/fork-you-shirt-mens-medium& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&github:shop&i class=&icon-external&&&/i&&/a&
来自子话题:
一般打开并读取一个文件,传统方法就是两个系统调用,对吧:&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&int open (const char '*path', int 'oflag', .../*,mode_t 'mode' */);
ssize_t read(int fd, void *buf, size_t count);
&/code&&/pre&&/div&&br&这里 read 有一个 buf 缓冲区,这个是由你的应用程序控制的,在你的应用程序虚拟内存地址空间中,究竟是 堆,还是栈,这个看你声明 buf 时候是怎么做的。&br&&br&不过,内核中,也会有一个缓冲区,这个你的应用程序是看不见的,当你读取时,内核会将数据放入自己的缓冲区,然后 copy 到用户态你程序的缓冲区中。这个东西,在内核叫做 buffer cache,由IO 子系统管理,对于 Unix 系统来说,一般会预留最多 10% 作为 buffer cache 使用。&br&&br&如果你使用的是 mmap 方法,则会有:&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&void * mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);
&/code&&/pre&&/div&&br&这一套过程与上面的 open/read 不同,是由内核分页子系统管理的,说白了,就是用虚拟内存调页的方式,将文件直接 map 到程序的地址空间中,这个 map 也是靠内核实现的,这东西叫做 page cache,你也知道虚拟内存限制少很多,可以 map 直到占用全部内存。&br&&br&传统 read/write buffer cache 有个问题,就是一旦固定后,大小没法调节,这样分配多了就是浪费,分配少了就会造成很多的上下文切换做 copy 而且这个东西与分页系统割裂。所以后来就出现了 Unified Buffer Cache,统一用 Page Cache 解决以上问题。&br&&br&所以你指的缓冲区,那是在内核里的,不是栈,也不是堆,而是使用如 SLOB/SLAB/SLUB 分配器分配的 VMObjects
一般打开并读取一个文件,传统方法就是两个系统调用,对吧:int open (const char '*path', int 'oflag', .../*,mode_t 'mode' */);
ssize_t read(int fd, void *buf, size_t count);
这里 read 有一个 buf 缓冲区,这个是由你的应用程序控制的,在你的应用…
来自子话题:
实名反对@&a href=&/people/li-niu-fen& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&李赧郎&i class=&icon-external&&&/i&&/a& 和某匿名用户拿STM32来讲解Arduino。STM32的IO口结构跟Arduino的AVR还是有区别的。根据STM32的数据手册来学习AVR会造成误导。引用@&a href=&/people/li-niu-fen& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&李赧郎&i class=&icon-external&&&/i&&/a& 自己的一句话:&br&&blockquote&玩arduino的还是要老老实实的看单片机手册、学习硬件原理的,不看手册、不看原理上来就用自然会有问题。&/blockquote&&br&首先要明确IO口的几种常见模式。对于数字IO而言,常见的模式有:推挽输出、开漏输出、浮空输入(高阻输入)、上拉输入、下拉输入。STM32支持上述的所有模式,但很多单片机并不是支持上述所有模式。比如Arduino采用的AVR单片机就不支持开漏输出和下拉输入。&br&&br&第二要明确“输入阻抗”和“输出阻抗”的概念。例如当IO口输出一个高电平时,IO口内部并非像机械开关那样把一根线直接插到了电源正极上,IO引脚和电源正极之间其实还有电阻的存在。当这个电阻很小的时候,我们称之为“强”,当这个电阻较大时,我们称之为“弱”。这个电阻的一端当然接的是IO引脚,另一端如果接到电源正极,则成为上拉电阻,如果接地,则称为下拉电阻。&br&&br&先说输出模式。对于Arduino,用pinMode将IO口设为OUTPUT的时候,其实IO的状态为“强推挽”,也就是说设为高电平时,IO口对电源正极的电阻比较小(强上拉),设为低电平时IO口对地的电阻也比较小(强下拉),这样IO口就具备了较强的驱动能力。其实也没有强到哪里去,大概几十毫安,能点亮LED而已。这里顺便提一下常见的51单片机,它的IO口总是接通了一个上拉电阻,这个上电阻比较大,所以称为弱上拉,所以51单片机的&b&拉电流驱动能力&/b&(IO引脚高电平时电流从IO引脚流向外部电路的能力)比较弱,大概只有5mA左右,这通常只能让LED发出很微弱的光,所以51单片机IO口点亮LED的方式通常为灌电流(电流从外部电路流入IO引脚)。&br&&br&再说输入模式。对于Arduino,用pinMode将IO口设为INPUT的时候,其实IO的状态为浮空输入,浮空输入也称高阻输入,也就是说输入阻抗非常高。理想状态下,可以认为输入阻抗是无穷大的,大到就像这个引脚断路了一样。就像一个浮在空中的金属丝一样,没有连上任何电路,你让它的电压是多少,它的电压就是多少。这样做是有意义的,因为只有输入阻抗足够大,才能接收到微弱的信号。如果输入阻抗不够大,比如输入端跟地之间有一个1kΩ的电阻,那微弱的输入信号很可能就被直接拉到0V,检测不出来了。但是浮空输入并非在任何情况下都是最好的选择,比如题主在接开关时。开关一头接IO口,一头接地。按下时把IO口拉到0V,读取,低电平,完全符合预期,赞!但是如果开关没有按下,读取,IO这时实际上没有接到任何地方,处于浮空状态,IO口上其实没有电压,或者说可能是任何的电压,这时读取IO口就会发现读到的值是不一定的。有时高有时低,用手摸一下那个引脚,都会使得读到的值抖动,傻眼了,咋办?&br&&br&这时就需要上拉电阻来救场了,准确地说是弱上拉。Arduino的AVR单片机内置了上拉电阻,只要通过程序打开就可以,开启上拉电阻后,IO口会通过一个比较大的电阻(比如100kΩ)接到电源正极,尽管是比较大的电阻,但这个电阻仍然远远小于IO口浮空的输入阻抗,所以这个电阻就可以在IO口没有外部输入时把IO口的电平可靠维持在一个比较高的水平,读出的也都是高电平了。&br&&br&这个时候就可以回答题主的问题了。&br&&br&问题1问的是为什么可以对一个输入引脚执行write操作。答案就是,当对一个已经设定为输入状态的IO口digitalWrite为HIGH时,就会启动这个引脚的上拉电阻。没有为什么,Arduino在实现digitalWrite这个函数时就是这么写的。很扯淡对吧?这其实是一个历史遗留问题,Arduino在早期的版本中并未封装对上拉电阻的操作,在那个时候,你的这种开关电路只能在外部连接一个上拉电阻。在Arduino 1.0之后,才在其库中支持了上拉电阻。其实更好的方法是修改pinMode函数的实现,将INPUT分为INPUT_FLOATING和INPUT_PULLUP。但这就意味着之前所有玩家们开发的代码都需要修改后才能运行,于是Arduino就想出了这么一个歪招,用digitalWrite实现了上拉。需要注意的是,AVR不具备内置的下拉电阻,所以对已经设为INPUT的引脚digitalWrite为LOW,是没有任何效果的。&br&&br&问题2是为什么可以对一个已经有电压的引脚再接入别的电压,从而改变其电压,而不会造成短路。答案就是4个字——“&b&输出阻抗”。&/b&刚才说了在输入引脚上的上拉电阻是个弱上拉,所以当你把弱上拉到高电平的引脚接地时,就相当于把电源正极和地之间连接了一个很大的电阻(例如100kΩ),假设弱上拉电阻是100kΩ,根据欧姆定律,只有50μA的电流从中通过,完全不会带来伤害。但是如果你把设为输出状态的引脚设为高电平后再接地,情况就很不一样了。由于输出高电平时是强上拉的,直接接地的电流可能在50mA以上,超过了输入状态接地电流的1000倍。这其实就是所谓的短路了,所以一定不要这样做,一个引脚长时间短路是可能造成这个引脚甚至整个单片机损坏的。&br&&br&其实我认为这个题目并不需要贴图解释,因为Arduino本身的设计初衷就是避免用户接触IO口内部结构这种底层细节。但是为了纠正其他知友的错误,我还是从真正的AVR数据手册里截了一张简化版的IO口等效电路图,其中的Rpu就是那个传说中的上拉电阻。&br&&img src=&/81f7bce5cb3fe80378bebb34c7bf742f_b.jpg& data-rawwidth=&608& data-rawheight=&334& class=&origin_image zh-lightbox-thumb& width=&608& data-original=&/81f7bce5cb3fe80378bebb34c7bf742f_r.jpg&&&br&&br&说完了,可以点赞了。
实名反对@ 和某匿名用户拿STM32来讲解Arduino。STM32的IO口结构跟Arduino的AVR还是有区别的。根据STM32的数据手册来学习AVR会造成误导。引用@ 自己的一句话:玩arduino的还是要老老实实的看单片机手册、学习硬件原理的,不看手册、不看原理上来…
来自子话题:
那些回答说Mac和Linux都是基于unix,命令行差别不大的人,&br&&br&还有楼上说Mac和ubuntu的指令差别还不如ubuntu与fedora之间差别的人,&br&&br&还有上面说Mac是棒棒哒cli的人,&br&&br&还有说Mac的命令行足够好用的,&br&&br&还有知乎上一群捧Mac多么多么棒结合了命令行和GUI的优势的神棍们,&br&&br&&b&你们真的会用Linux吗?你们真的常用命令行吗?我能想到的离命令行最远的开发工作就是前端了,然而现在前端工具的发展导致前端也离命令行越来越近了,&/b&&b&你们平时的开发工作到底离命令行有多远?&/b&&b&你们除了cd,ls,rm外就没用过别的命令了吧?你们都是做产品运营设计的吧?你们就是觉得还是有个图形界面这里点一下这个按钮编译那里点一下那个按钮运行然后具体发生了什么你什么都不用知道也不想管像使用windows的VC6.0一样比较好吧?不要误导人了好吗?你们必须要承认的事实就是,Mac无论是命令行工具还是终端都既不强大也不好用,只能是一种聊胜于无的安慰&/b&&br&&br&即使是iterm2,ubuntu的terminal在上手性易用性和可配置性上都秒杀它几百条街好吗,我接触的真正有水平的做开发的同学,都觉得mac的cli也只是凑合着勉强能用的程度,远远谈不上好用,不要说Linus Torvalds也在用MBA,人家喜欢的是MBA的硬件,买回来还是装的Linux好吗&br&&br&那些鼓吹Mac是集软件和CLI优势的所有者,鄙视用win/Linux的人,OSX软件比不上win,cli被linux完爆,你们有什么可鄙视别人的??
那些回答说Mac和Linux都是基于unix,命令行差别不大的人,还有楼上说Mac和ubuntu的指令差别还不如ubuntu与fedora之间差别的人,还有上面说Mac是棒棒哒cli的人,还有说Mac的命令行足够好用的,还有知乎上一群捧Mac多么多么棒结合了命令行和GUI的优势的神棍们,…
&p&好代码是不能通过这种量化的指标来判断的,判断一个代码是否好的唯一标准是,将来需求真的会改 && 改的时候会很容易。&/p&&br&&p&这个世界上到处都有那些函数超过几个屏幕,但是却逻辑清晰无比好改的例子。譬如说写个自动机。&/p&&br&&p&再说了,为什么要用函数作为单位?这个选择其实是没有道理的,既不基于统计结果,也不基于经验。&/p&
好代码是不能通过这种量化的指标来判断的,判断一个代码是否好的唯一标准是,将来需求真的会改 && 改的时候会很容易。这个世界上到处都有那些函数超过几个屏幕,但是却逻辑清晰无比好改的例子。譬如说写个自动机。再说了,为什么要用函数作为单位?这个选择…
来自子话题:
前面的答案里提到ART与LLVM的都是被hype荼毒的人呐。&br&前面答案说RenderScript和NDK的是正解。但是ART的就不算太正解了。&br&&br&这是关于Android toolchain与NDK的部分的文档:&br&&blockquote&Beginning with the Jellybean MR1 release, Google has included LLVM as an alternative compiler as part of the Android toolchain and the Android NDK. LLVM is suitable wherever you use native code (C/C++) in your Android application.&br&&/blockquote&&br&这是介绍RenderScript与LLVM关系的一个演示稿:&a href=&http://llvm.org/devmtg/2011-11/Hines_AndroidRenderscript.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&llvm.org/devmtg/2011-11&/span&&span class=&invisible&&/Hines_AndroidRenderscript.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&至于ART(Android Runtime),虽然在Kitkat放出的源码里其编译器的两个后端(Quick和Portable)中Portable后端基于LLVM来实现,但我还没见过谁用Kitkat-release的源码启用ART_USE_PORTABLE_COMPILER之后还能让ART正常运行的;大多做了这个尝试的人都败了,在编译时特别慢,而在运行时会遇到segfault。这个后端根本还是半成品。&br&实际大家在Kitkat上用的ART都不是用Portable后端,而是用Quick后端。这个编译器源自Dalvik VM的JIT编译器,被大幅魔改成了method-based AOT编译器。&br&&br&而AOSP里最新的ART源码里已经彻底删除了整个Portable后端(以及另一个使用LLVM的后端“Sea IR”),包括里面的LLVM源码。请参考这个change:&a href=&/platform/art/+/956af0f0cbd22cbef309d16b8a1a12& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&956af0f0cbd22cbef309d16b8a1a12 &Remove portable.& - platform/art - Git at Google&i class=&icon-external&&&/i&&/a&&br&到此为止ART已经跟LLVM彻底没关系。以后请别再忽悠新手说ART就是借助LLVM实现AOT编译了——之前不是,现在更不是。&br&&br&至于为啥ART会删除了所有基于LLVM的后端,主要是公司内政治斗争+LLVM的编译速度实在慢…
前面的答案里提到ART与LLVM的都是被hype荼毒的人呐。前面答案说RenderScript和NDK的是正解。但是ART的就不算太正解了。这是关于Android toolchain与NDK的部分的文档:Beginning with the Jellybean MR1 release, Google has included LLVM as an alternativ…
我觉得很多人是搞错了,或者说是故意在混淆概念。&br&&br&开源&b&无助于发现软件中的缺陷&/b&,开源只是&b&有助于解决软件中的缺陷&/b&。&br&&br&&br&对于商业软件而言,如果你不是他的客户(譬如说你装的盗版软件),即使有缺陷,他也不会为你解决(其实微软算厚道的了,你不关掉自动更新还是会给你打补丁的,只是友情提醒你是个盗版用户而已)。如果这一软件已经停止维护,例如Windows XP,那么这一缺陷可能永远都无法解决。&br&&br&而开源则没有这个问题,当你发现了缺陷后,只需要自己撸袖子上就可以了。&br&&b&什么?你看不懂代码?&/b&!
我觉得很多人是搞错了,或者说是故意在混淆概念。开源无助于发现软件中的缺陷,开源只是有助于解决软件中的缺陷。对于商业软件而言,如果你不是他的客户(譬如说你装的盗版软件),即使有缺陷,他也不会为你解决(其实微软算厚道的了,你不关掉自动更新还是…}

我要回帖

更多关于 微软osslab 的文章

更多推荐

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

点击添加站长微信