微软长期以来依靠自己的大批专利数向Android手机厂商收取巨额的专利费已经不是什么秘密了。早在2011年就有消息称微软当时和三星谈判谋求 签订一份让三星每出货一部Android手机就向微软支付15美元专利费的协议,三星方面则期望通过加深和微软Windows Phone平台的合作以换取将该费用降低至10美元每台的结果。从中我们可以看到微软和三星之间的博弈,其中涉及到很多商业问题。 在2014年10月份披露的一份诉讼文件显示微软每年从从Android和Chrome OS上所获取的专利授权收入非常惊人,仅三星一家公司,2013年就向微软支付了高达10亿美元的专利授权费用。而除了最大且最成功的Android厂 家,还有数十家公司向微软支付了Android专利使用费。要知道微软设备娱乐部门(包括Xbox、Windows Phone、以及Skype)在2013年的利润仅仅为8.48亿美元,三星一家在2013年交给微软的专利费就超过了这个数字。 不仅仅是三星,微软和HTC,摩托罗拉等公司也有有类似的交易,每出售一台Android设备需要向微软缴纳一定的专利费。不仅手机厂商,甚至像 Barnes & Noble这样专营电子书业务的公司生产搭载 Android 系统的电子书阅读器也需要向微软支付专利费。 为何手机厂商用Android却要付给微软专利费? 我们都知道Android是基于Linux的自由及开放源代码的操作系统,而早在Android没有单身之前微软就已经在Linux系统上获取专利授权费用了。所以微软拿Android系统开刀也是再正常不过的事情。 2007年Android还没正式与世人见面,微软在当年就宣称Linux侵犯了自己的 235 项专利,但是微软没有正式公布和表明Linux那些地方侵犯了自己的专利。微软的一贯策略是直接和那些应用Linux技术的公司谈判,签署专利授权协议。 包Amazon、Novell、Linspire、TurboLinux在内的多家大公司都已经和微软签有专利授权协议,以保护公司和用户的利益。也有一 些在自己设备中利用到Linux内核的厂商,在受到微软的威逼之后直接选择从设备种移除相关功能,比如TomTom。 还有一个有趣段子是这样的:上个世纪80年代当时的巨头IBM曾经向Sun Microsystems(目前已经被甲骨文收购)索取专利费用,声称Sun侵犯了IBM的7项专利并要求支付赔偿。但是经过Sun的认真核查发现涉案的 7件专利后发现其中6件很可能是无效的,而且 Sun 很明显也没有侵犯 IBM 所提到的第7件专利。但是结果很出人意料,IBM方面宣称也许你们真的没有侵犯我们刚刚提到的那7件专利,但是我们在美国有1万件专利,你难道真的想让我们空手回去再查查看你们是不是侵犯了我们的其他专利吗? 最后经过一番博弈,Sun Microsystems最后还是向IBM支付了数额不菲的“专利保护费”。而IBM则继续去其他公司收保护费去了。而谷歌的Android现在就面临着微软给出的一个类似的难题。这保护费你交定是不交? Android设备到底侵犯了微软的什么专利? 当然也有不愿意交的,比如摩托罗拉。因此微软不得不把一些专利内容向法院上呈。 1、专利号5579517,长文件名支持。第 5 版之前的 MS-DOS 仅支持 11 个字符的文件名(包括扩展名在内),所以微软发明了一种同时支持长文件名和短文件名的方法。使用过 DOS 操作系统的朋友应该知道,超过11个字符的文件名DOS会自动缩短,并用~符号替代一部分,这个专利就是关于这个实现的。由于 Android 系统支持 FAT 格式的 MicroSD (TF) 卡,所以在卡上存储的数据必然要支持 DOS 长文件名,换句话说,任何一个支持 FAT 格式的设备,都受到微软此专利的限制。 2、专利号6621746,闪存擦除。监视闪存的使用状况,在适当的时候进行有针对性的擦除操作。严格的说来,任何一个基于 Flash 的文件系统必然要实现类似的功能,Android 自然也不例外。 3、专利号6909910,联系人的创建和更新。具体为从通话记录中更新某个联系人或创建新联系人的系统和方法。如下图,这个估计很多智能手机都逃不过:微软有关联系人新建和更新的专利。 4、专利号7644376,系统状态监视和通知系统。主要是关于允许移动应用获取手机状态变化的 API,管理全局系统状态通知。 5、专利号5664133,弹出式上下文菜单系统。具体专利描述为对用户选择的对象获取并展示一系列命令在一个弹出菜单中。这专利估计是微软的屠龙刀,神挡杀神,佛挡杀佛。当初苹果引入右键菜单的时候,微软没有起诉是因为微软和苹果签署有专利交叉使用互不起诉的协议。 6、专利号6578054,增量同步。用来同步服务器和客户端里多个数据副本的系统和方法,通过此方法某一个数据副本的增量变化将会被识别,传输,整合到其他所有数据副本上。按照这个专利描述,Android的数据同步功能可以说全军覆没。 7、专利号6370566,从移动设备发起计划会议请求。专利里描述的实现方式和Google Calendar并不相同,所以不太明白这个和Android哪里冲突了。 可以看出以上微软所列出的专利其实都是一些普遍应用在智能手机操作系统甚至是桌面操作系统上的基础性功能,在一些功能上用户已经非常习惯于这种操作 方式和逻辑,如果要绕口这些专利意味着要退出当前的显示界面,重新制造一个用户和开发者都陌生的新环境,这对计算机行业来说其实是一种悲哀。 谷歌如何才能用Android赚更多的钱? 前面说到微软在Android手机生产商手里收取了巨额的专利费。那么谷歌呢,身为 Android 平台的拥有者谷歌在Android平台上又获得了多少利益呢? 首先我们要明确Android系统它不像微软的Windows系统和苹果的iOS系统,当PC和手机制造商使用Windows系统应用到自己的电脑和手机及平板电脑上时微软是要收取授权费的。而苹果虽然不出售自己的系统,但是 iOS 除了苹果本身以外谁也别想用。 Android系统本身就是一个开放式的系统。任何生产商,不管是手机,电脑还是家电厂商将 Android 系统预装到硬件设备上,谷歌实际上未收取任何费用。谷歌的策略是尽可能的把Android系统渗透到更多的消费人群当中,这些人会通过谷歌的搜索,然后点 击谷歌搜索的广告,(这一点上说谷歌在中国基本是一毛钱也捞不到)谷歌从而收益。但 Android 在广告上并没有给谷歌带来非常可观的收入。 有一组数据:谷歌2014年移动搜索业务营收为118亿美元,其中75%的营收(89亿美元)来自使用iPhone和iPad的网站搜索。这意味 着,谷歌2014年在Android设备上的搜索业务营收仅有30亿美元。与谷歌2014年的660亿美元收入相比,30亿美元似乎显得微不足道。另外一 个数字可能领谷歌更加汗颜,仅2014年第四季度,Facebook的移动广告营收就超过26.5亿美元。 谷歌自己创造出来的东西却让别人赚了大钱,谷歌或许是时候更多的想想如何利用这数十亿的Android设备来为自己创造更多的价值。 出处:威锋网 from:http://www.oschina.net/news/61425/microsoft-get-profit-from-android
View Details为了方便大家检索开源软件,促进开源在中国的进一步发展,开源中国从去年年底就开始在整理 IT 公司或者组织的开源软件列表。目前已经有一个初步的列表,但很多公司的软件列表还不完善,也可能会因为归属问题有一些争议,欢迎大家给我们提出纠正和改进的意见和建议。 此外如果贵公司开源软件数量较多,希望我们为贵公司制作一个列表,请随时与我们联系。 下面是目前已经整理的一些列表: Apache 基金会: http://www.oschina.net/project/apache JBoss: http://www.oschina.net/project/jboss Google:http://www.oschina.net/project/google Mozilla:http://www.oschina.net/project/mozilla Facebook: http://www.oschina.net/project/facebook 微软:http://www.oschina.net/project/microsoft Netflix:http://www.oschina.net/project/netflix Twitter:http://www.oschina.net/project/twitter NASA:http://www.oschina.net/project/nasa Github:http://www.oschina.net/project/github Paypal:http://www.oschina.net/project/paypal 阿里巴巴(+淘宝): http://www.oschina.net/project/alibaba 百度:http://www.oschina.net/project/baidu 腾讯:http://www.oschina.net/project/tencent 网易:http://www.oschina.net/project/netease 豆瓣:http://www.oschina.net/project/douban 深度Deepin:http://www.oschina.net/project/deepin 新浪:http://www.oschina.net/project/sina 58同城:http://www.oschina.net/project/58 大众点评:http://www.oschina.net/project/dianping 搜狐:http://www.oschina.net/project/sohu 小米:http://www.oschina.net/project/xiaomi 金山:http://www.oschina.net/project/kingsoft 华为:http://www.oschina.net/project/huawei 东软:http://www.oschina.net/project/neusoft 360:http://www.oschina.net/project/360 开源中国:http://www.oschina.net/project/osc 你可以从软件的介绍页中获知所属公司信息,如下图所示: 再次说明,这些列表都在不断的补充和完善中,欢迎大家补充和提出修改意见和建议。 from:http://www.oschina.net/news/61534/oschina-opensource-collection-plan-for-it-companies
View DetailsMicrosoft 安全公告 MS15-034 – 严重 HTTP.sys 中的漏洞可能允许远程执行代码 (3042553) 发布日期: 2015 年 4 月 14 日 版本: 1.0 本页内容 执行摘要 受影响的软件 严重等级和漏洞标识符 漏洞信息 安全更新部署 鸣谢 免责声明 修订版本 执行摘要 此安全更新可修复 Microsoft Windows 中的漏洞。 如果攻击者向受影响的 Windows 系统发送经特殊设计的的 HTTP 请求,此漏洞可能允许远程执行代码。对于 Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2 所有受支持版本,此安全更新等级为“严重”。有关详细信息,请参阅“受影响的软件”部分。 通过修改 Windows HTTP 堆栈处理请求的方式,此安全更新可以修复此漏洞。 有关该漏洞的详细信息,请参阅“漏洞信息”部分。 有关此文档的详细信息,请参阅 Microsoft 知识库文章 3042553。 受影响的软件 以下软件版本都受到影响。 未列出的版本的支持生命周期已结束或者不受影响。 要确定软件版本的技术支持生命周期,请参阅 Microsoft 技术支持生命周期。 操作系统 最大安全影响 综合严重等级 替代的更新 Windows 7 Windows 7(用于 32 位系统)Service Pack 1 (3042553) 远程执行代码 严重 无 Windows 7(用于基于 x64 的系统)Service […]
View Details英文原文:StackOverflow Update: 560M Pageviews A Month, 25 Servers, And It’s All About Performance StackOverflow 是一个 IT 技术问答网站,用户可以在网站上提交和回答问题。当下的 StackOverflow 已拥有 400 万个用户,4000 万个回答,月 PV5.6 亿,世界排行第 54。然而值得关注的是,支撑他们网站的全部服务器只有 25 台,并且都保持着非常低的资源使用率,这是一场高有效性、负载均衡、缓存、数据库、搜索及高效代码上的较量。近日,High Scalability 创始人 Todd Hoff 根据 Marco Cecconi 的演讲视频“ The architecture of StackOverflow”以及 Nick Craver 的博文“ What it takes to run Stack Overflow”总结了 StackOverflow 的成功原因。 意料之中,也是意料之外,Stack Overflow 仍然重度使用着微软的产品。他们认为既然微软的基础设施可以满足需求,又足够便宜,那么没有什么理由去做根本上的改变。而在需要的地方,他们同样使用了 Linux。究其根本,一切都是为了性能。 另一个值得关注的地方是,Stack Overflow 仍然使用着纵向扩展策略,没有使用云。他们使用了 384GB 的内存和 2TB 的 SSD 来支撑 SQL Servers,如果使用 AWS 的话,花费可想而知。没有使用云的另一个原因是 Stack Overflow 认为云会一定程度上的降低性能,同时也会给优化和排查系统问题增加难度。此外,他们的架构也并不需要横向扩展。峰值期间是横向扩展的杀手级应用场景,然而他们有着丰富的系统调整经验去应对。该公司仍然坚持着 Jeff Atwood 的名言——硬件永远比程序员便宜。 Marco Ceccon 曾提到,在谈及系统时,有一件事情必须首先弄明白——需要解决问题的类型。首先,从简单方面着手,StackExchange 究竟是用来做什么的——首先是一些主题,然后围绕这些主题建立社区,最后就形成了这个令人敬佩的问答网站。 其次则是规模相关。StackExchange 在飞速增长,需要处理大量的数据传输,那么这些都是如何完成的,特别是只使用了 25 台服务器,下面一起追根揭底: 状态 StackExchange 拥有 110 个站点,以每个月 3 […]
View Details上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新。在安装好NuGet扩展后,我们已经能够通过NuGet轻松下载自己需要的类库,下面来说一说如何将自己的项目类库进行打包发布 使用图形界面打包自己的类库 NuGet可以使用NuGet.exe在命令行下进行类库打包,也可以使用图形化界面进行打包,估计很多朋友都和我一样对不熟悉的命令行有些感冒,所以在此仅讲述下使用图形化界面进行类库打包 1. 首先下载 包包管理器 NuGetPackageExplorer,顾名思义,包包管理器可以用来创建新的类库包,也可以浏览已经创建好的类库包 2. 下载完成后,双击 NuGetPackageExplorer.application 进行安装,安装完成后会在桌面上生成一个NuGet Package Explorer 的快捷方式 3. 双击NuGet Package Explorer出现启动界面,选择Create a new package(Ctrl+N)创建一个新包 4. 选择菜单 Edit > Edit Package Metadata (或者 CTRL + K) 编辑包包信息 这里可以编辑类库包的信息和添加类库、程序集的引用解释下几个比较重要的字段 Id:用于定位类库包的唯一标示,如在命令行下执行 Install-Package MyPackage 这里的MyPackage就是包包的Id值 Version:类库的版本号,这里建议和程序集的真实版本号保持一致,以免发生混淆 Dependencies:此类库依赖的程序集,根据实际情况添加依赖类库的Id和版本号,若无留空即可,这里需要注意下填写的依赖类库需要在NuGet服务器上能找到,否则无法完成自动引用添加 Framework assemblies:依赖的Framework 程序集,根据实际需要选择即可,一般无需设置 除以上四项以外其他属性根据实际情况修改即可,若自己用不修改也中,不过为了使用方便还是建议把类库描述(Description)填写下 5. 编辑好包包信息后接下来添加DLL到包包中 可以选择 右键-->Add Existinng File… 选择dll添加,也可以直接拖拽DLL到 Package contents 窗口,此例选择拖拽方式 直接拖拽dll到窗口后,会出现提示:是否将 Winista.HtmlParser.dll放到lib 文件夹下,一般我们选择是 6. DLL添加完成后,快捷键Ctrl + K 修改包包信息Id为Winista.HtmlParser,版本号为1.8.0 7. 信息修改和dll都添加完毕后,选择File --> Save(或Ctrl + S)将文件进行保存,默认文件名为Id + 版本号.nupkg 8. 完成保存后如需要发布到网上,选择File--> Publish…(或Ctrl + P) 默认的发布地址是官网,发布 Key需要到官网去注册一个账号,然后就可以得到,这里不在复述,若无需发布直接关闭即可 ps:这里没有讲述如何打包项目文件,一般情况下我们自己将项目文件编译成DLL然后使用图形化界面打包即可满足需求,若实际工作需要高度集成完全自动化操作可自行去研究下官方文档http://docs.nuget.org/ 添加DLL默认会添加Lib文件夹,额外的菜单上还有很多.net文件夹,src等文件夹,这些文件夹只是对文件上的一个物理上的划分而已,只是为了帮助我们做好文件分类,没有其他的用途,dll文件可以随便放置,不过为了规范还是建议按照通常习惯来放置。 from:http://kb.cnblogs.com/page/143191/
View Details我的站,是使用UrlRewriter将.html重写为.aspx,即访问.html 实际访问的是.aspx ,但实际存在的.html文件,却出现“There is no build provider registered for the extension '.html'. You can register one in the <compilation><buildProviders> section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.‘的错误 百度,发现介绍解决方案差不多跟这个地址 http://hi.baidu.com/xiaoyaosr/item/351f2f3ce3b48223b3c0c52e 提供的方法一样。 但是,我按此方法来做,却出现错误,原来的重写还能写,现在地却也用不了了,错误如图 web.config文件配置如图 from:http://bbs.csdn.net/topics/390823510
View Details关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录。 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages…,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站长dudu写的程序员,用NuGet管理好你的类库,有些类似java中常用的maven 为什么要使用NuGet 简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery、Newtonsoft.Json、log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极。当然网上一些我们常用的类库更新频率不是很高而且即便出了新版本我们也没必要总是保持最新,故这点对我们的帮助比较有限,个人认为NuGet最大的好处在于可以搭建自己的类库服务器,想想一下吧,在一些较大些的公司里面有很多的项目,然后其中有一些是整个组,甚至整个公司通用的类库,当这些类库有更新后我们需要依次拷贝到我们的项目,甚至于有时候我们自己都搞不清楚各个项目里的版本是否一致,有时偶尔一两个项目忘了复制更新出现莫名其妙的错误,为此头疼不已,现在有了NuGet,世界从此而不同。 安装NuGet扩展 要使用NuGet首先需要安装它(在安装了MVC3的系统上已自动安装了NuGet) 1. 点击 工具-->扩展管理器(R)…-->右上角搜索框输入NuGet 2. 点击 NuGetPackage Manager 项上面的下载按钮开始下载NuGet 3. 下载完成后出现安装页面,点安装开始安装 4. 很快安装完成,然后点击关闭完成整个安装 5. 安装完后NuGet暂时不能用,需要重新启动下VS才行,重启后完毕后打开 扩展管理器(R)… 在已安装的扩展里可以看到NuGet Package Manager已经安装好了 使用NuGet下载需要的类库 1. 打开NuGet管理界面 2. 出现如下界面,可以在里面找自己想要的类库也可以在右上角搜索里面输入关键字查找自己想要的类库,找到合适自己的类库后点install进行安装 3. 这里我们选择安装Json.Net,点击安装好出现组件下载界面 4. 下载完成后会出现提示将类库安装到什么项目,这里我们选择安装到TestConsole项目 5. 安装完成后可以看到已经安装的Josn.Net显示一个已安装的小对勾 6. 打开项目引用可以看到我们刚选择的类库Newtonsoft.Json已经自动添加到项目引用中 使用命令行管理你的类库 1. NuGet提供了命令行安装方法,在菜单中选择Package Manager Console,打开命令行控制台 2. 出现NuGet控制台界面,默认类库源(Package source)为官方站点,也可以指向自己搭建的本地或内网站点,Default project表示默认将下载的类库添加到那个项目的引用中 3. NuGet控制台有几个常用命令 Get-Package 获取当前项目已经安装的类库 Install-Package 安装指定类库,命令格式如下:Install-Package 类库ID,如Install-Package Newtonsoft.Json 这里需要注意的是类库的ID是唯一的,指向命令后会自动搜索指定类库源里指定ID类库,若找到则自动下载并添加引用,找不到则会出现找不到类库的提示 Uninstall-Package 卸载指定类库,命令格式如下:Uninstall-Package 类库ID,如Uninstall-Package Newtonsoft.Json Update-Package 更新指定类库,命令格式如下:Update-Package 类库ID,如Update-Package Newtonsoft.Json ps:刚开始不熟悉时可以使用界面方式下载和更新类库,有一定经验后还是建议使用控制台添加、更新类库这样很方便,由于使用控制台需要知道类库的准确ID,可以到http://www.nuget.org/packages这里去查找,把自己常用的ID记录下方便以后使用。 from:http://kb.cnblogs.com/page/143190/
View Details请将 JsonRequestBehavior 设置为 AllowGet MVC 默认 Request 方式为 Post。 action 1 public JsonResult GetPersonInfo() { 2 var person = new { 3 Name = "张三", 4 Age = 22, 5 Sex = "男" 6 }; 7 return Json(person); 8 } 或者 01 public JsonResult GetPersonInfo() { 02 return Json (new{Name = "张三",Age = 22,Sex = "男"}); 03 } 04 view 05 $.ajax({ 06 url: "/FriendLink/GetPersonInfo", 07 type: "POST", 08 dataType: "json", 09 data: { }, 10 success: function(data) { 11 $("#friendContent").html(data.Name); 12 } 13 }) POST 请求没问题,GET 方式请求出错: […]
View Details开始: 先下载个C#的驱动。MongoDB提供各种主流与非主流预言的开发驱动。 C# Driver 下载地址:猛击这里 CSharp Driver Tutorial:猛击这里 下载文件安装或者解压缩包 如果您是安装,请到安装位置寻找,如果是ZIP压缩包,解压缩包得到如下两个文件: MongoDB.Bson.dll :序列化、Json相关 MongoDB.Driver.dll :我们的驱动 没了,只有这两个文件是我们的最爱。 继续: 新建一个C#的项目,不管你是vs2008,还是vs2010,也许您手中有vs2012?也发给我一份吧。感谢共享:) 添加引用,将上面两个DLL引入到项目里面 您启动Mongod.exe了吗?启动服务。 代码里面添加命名空间: using MongoDB.Bson; using MongoDB.Driver; 跟着[CSharp Driver Tutorial:猛击这里]继续做。如果您没有打开[CSharp Driver Tutorial]就不要开了,看完全文再看,以免分散精力。 // MongoDB连接串,以[mongodb: // ]开头。这里,我们连接的是本机的服务 string connectionString = " mongodb://localhost " ; // 连接到一个MongoServer上 MongoServer server = MongoServer.Create(connectionString); MongoDb的连接串 在连接串中,我们可以指定其他机器上的服务和连接端口格式如下: mongodb://[username:password@]hostname[:port][/[database][?options]] 简单示例:mongodb://server1,server2:27017,server2:27018 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里] MongoServer 有几种不同的重载了的创建方式: MongoServer Create() 如果只是连接本机,并且本机只启动了一个服务,直接调用这个方法,完全不需要连接串 MongoServer Create(MongoConnectionStringBuilder builder) MongoServer Create(MongoUrl url) MongoServer Create(string connectionString) MongoServer Create(Uri uri) 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里] 继续: 再增加几行代码: // MongoDB连接串,以[mongodb: // ]开头。这里,我们连接的是本机的服务 string connectionString = " mongodb://localhost […]
View Details本文推荐 11 个非常棒的 React Native 开源组件,希望能给移动应用开发者提供帮助。 React Native 是近期 Facebook 基于 MIT 协议开源的原生移动应用开发框架,已经用于 Facebook 的生产环境。React Native 可以使用最近非常流行的 React.js 库来开发 iOS 和 Android 原生 APP。 1. iOS 表单处理控件 tcomb-form-native tcomb-form-native 是 React Native 强大的表单处理控件,支持 JSON 模式,可插拔的外观和感觉。在线演示:http://react.rocks/example/tcomb-form-native。 2. 摄像机视图 react-native-camera react-native-camera 是 React Native 的摄像头 viewport。这个模块应用于开发的早期阶段,它支持摄像头的转换和基本图片捕捉。 使用示例: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 var React = require('react-native'); var { AppRegistry, StyleSheet, Text, View, } = React; var Camera = require('react-native-camera'); var cameraApp = React.createClass({ render: function() { […]
View Details