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

Category Archives: Other

将 Chrome 变成开发利器,开发者们在用这些插件

Chrome 浏览器具有强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择。而利用许多 Chrome 插件,开发者们在开发流程中能够极大地提高开发效率。我们就整理了十款开发者常用的 Chr Chrome 浏览器具有强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择。而利用许多 Chrome 插件,开发者们在开发流程中能够极大地提高开发效率。我们就整理了十款开发者常用的 Chrome 插件推荐给大家,相信能够在你的开发中助你一臂之力。 1. 掘金 Chrome 插件:帮你发现干货 不管你是开发者、设计师还是产品经理,想必每天都需要阅读大量的行业相关文章,这就需要我们浏览大量的互联网站点去寻找我们需要的内容。抛开繁复的筛选成本不说,「比特级」的内容都会压得你喘不过气来。 掘金为了解决这个问题,开发了掘金 Chrome 插件,掘金 Chrome 插件聚合了国内外优质的互联网站点内容,在节省你的筛选成本的同时,帮你发现好内容。 2. Postman:强大的 API & HTTP 请求调试工具 相 信 Postman 对于掘金上的各位开发者来说,一定不会陌生,这是一款强大的 API & HTTP 请求调试工具,Postman 不仅可以调试简单的 HTML、CSS 以及脚本等简单的网页基本信息,这款 Chrome 插件甚至还能发送几乎所有的 HTTP 请求,可谓是 Web 开发者的一大利器。 3. BuiltWith Technology Profiler:你的网站,用了什么技术栈? 作为开发者,对于友商网站所使用的技术栈想必也充满了许多好奇心,有没有工具能够帮你完成这项工作呢?答案就是 Chrome 插件 BuiltWith Technology Profiler,它能够帮你分类呈现当前访问网站的技术栈组成,实乃探索友商之利器。 当然,同类产品中,你也可以使用 Wappalyzer 这一款 Chrome 插件。 4. Octotree:你的 GitHub 文档库 GitHub 现有的目录层级形式,在查看来自不同层级文件夹的文件的时候,显得似乎不是很方便,Octotree 这款 Chrome 插件能够让你通过文档库的方式管理、查看你的 GitHub 仓库,简单直观的同时,也方便你进行文件之间的跳转操作。 5. GitHub Awesome Complete:属于 GitHub 的 「Alfred」 在 GitHub 搜索仓库或者项目的时候,你会怎么做?相信大部分人的步骤都是一样的: 在搜索框输入关键字后按回车键 在搜索结果中找到相应结果,点击进入相应页面 有没有更简单快捷的操作方法?答案是 GitHub Awesome Complete 这款 Chrome […]

龙生   01 Jul 2016
View Details

六个藉藉无名但迅速崛起的Apache大数据项目

如今全球各地的无数企业组织在处理数据集,这些数据集是如此地庞大而复杂,以至于传统的数据处理应用软件再也无法支持经过优化的数据分析和洞察力获取。这是新一批大数据应用软件旨在解决的问题,而Apache软件基金会(ASF)最近将一批值得关注的开源大数据项目升级为Apache顶级项目。这意味着,这些项目将获得积极的开发和强有力的社区支持。 (图片来源:Creative Commons Zero) 大多数人已听说过Apache Spark,这种大数据处理框架拥有内置模块,可用于数据流、SQL、机器学习和图形处理。IBM及其他公司正在往Spark项目投入数十亿美元的开发资金,美国宇航局和SETI研究所在开展合作,利用Spark的机器学习能力,分析数TB的复杂的外太空无线信号,搜寻可能表明存在智能外星生命的模式。 然而,另外几个最近被提升为顶级项目的Apache大数据项目同样值得关注。实际上,其中一些打造的生态系统在活动和开发上可与Spark的生态系统相媲美。本文介绍了你应该知道的几个Apache大数据项目。 下面是六个迅速崛起的项目: Kylin Apache最近宣布,Kylin项目这个脱胎于eBay的开源大数据项目已被提升为顶级项目。Kylin是一个开源分布式分析引擎,旨在提供一种基于Apache Hadoop的SQL接口和多维分析(OLAP),支持极其庞大的数据集。它仍广泛用于eBay和另外几家组织。 Apache Kylin副总裁Luke Han说:“Apache Kylin的孵化之旅已证明了开源治理在Apache软件基金会(ASF)具有的价值,并证明了围绕该项目打造一个开源社区和生态系统的力量。我们的社区在与世界上最庞大的本地开发者社区积极互动,完全依照Apache之道。” 作为一种基于Hadoop的OLAP解决方案,Apache Kylin旨在填补大数据探索与人类使用之间的空白,“让分析员、最终用户、开发人员和数据爱好者能够对庞大数据集执行交互式分析,延迟低于1秒,”据开发人员声称。他们补充道:“Apache Kylin将商业智能(BI)带回給Apache Hadoop,发掘大数据的价值。” Lens Apache最近还宣布,Apache Lens这个开源大数据和分析工具由Apache孵化器提升为顶级项目(TLP)。据宣布声称:“Apache Lens是一种统一分析平台。它为统一视图的分析查询提供了一种最佳执行环境。Apache Lens旨在通过针对多个分层数据存储系统,提供单一的数据视图,从而消除数据分析孤岛。” “通过在数据基础上提供一种联机分析处理(OLAP)模型,Lens将Apach Hadoop和传统数据仓库无缝集成起来,好比是一个整体。它还为在系统中运行的查询提供了查询历史记录和分析统计功能,另外提供了查询生命周期管理。” Apache Lens的副总裁Amareshwari Sriramadasu 说:“在ASF孵化Apache Lens是个神奇的经历。Apache Lens着眼于最终用户,解决了大数据分析领域的一个非常关键的问题。它让业务用户、分析员、数据科学家、开发人员及其他用户能够轻松处理复杂的分析,不需要了解底层的数据布局。” Ignite Apache软件基金会还宣布Apache Ingite成为了一个顶级项目。这个开源项目旨在构建一种内存中数据架构(in-memory data fabric)。 据Apache社区的成员声称:“Apache Ignite是一种高性能、集成、分布式的内存中数据架构,针对大规模数据集可实现实时计算和处理,速度比基于磁盘或闪存的传统技术要快几个数量级。它旨在可以轻松支持成本合理、基于行业标准的硬件上的分布式大规模并行架构中的新旧应用程序。” Brooklyn Apache软件基金会宣布,Apache Brooklyn现在是个顶级项目(TLP),“这标志着该项目的社区和产品已在该基金会的精英管理流程和原则下得到了妥善治理。”Brooklyn是一种应用程序蓝图和管理平台,用于跨多个数据中心集成服务,并集成云端的众多软件。 据Brooklyn宣布声称:“由于现代应用程序由许多组件构成,微服务架构日前受到关注,部署应用程序和已部署应用程序的日常改进成了一个越来越难的问题。Apache Brooklyn的蓝图提供了一种清晰简洁的方式,可以在部署到公共云或私有基础设施之前,明确应用程序、组件、配置以及组件之间的关系。基于策略的管理建立在自主计算理论这个基础上,不断评估运行中的应用程序,并对它进行改动,让应用程序保持顺畅运行,并且针对成本和响应能力等度量指标进行优化。” Brooklyn现用于一些知名企业组织。云服务提供商Canopy和Virtustream已开发了基于Brooklyn的产品。IBM也广泛使用Apache Brooklyn,以便将大量的工作负载从AWS迁移到IBM Softlayer。 Apex 今年4月份,Apache软件基金会将Apex项目提升为顶级项目。它号称是“面向Apache Hadoop生态系统的一种大规模、高吞吐量、低延时、容错、统一的大数据数据流和批量处理平台。”Apex可与Apache Hadoop YARN协同运行,后者是一种适用于Hadoop集群的资源管理平台。 Tajo 最后,Apache Tajo是需要了解的另一个新的大数据项目,这是Apache Hadoop中一个先进的开源数据仓库系统。Apache声称,Tajo为Hadoop部署系统、第三方数据库和商用商业智能工具提供了快速获取更多信息的功能。 很显然,虽然Apache Spark吸引了大量眼球,但它不是Apache提供的唯一引人注目的大数据工具。今年,Apache可能会将更引人注目的大数据项目提升为顶级项目,这些项目将得益于经过优化的开发资源及更多优势。 原文标题:On the Rise: Six Unsung Apache Big Data Projects   from:http://developer.51cto.com/art/201606/513276.htm

龙生   30 Jun 2016
View Details

7 款顶级开源 BI(商务智能)软件和报表工具

在这个信息化时代,每分每秒都产生海量数据。在海量数据中,挖掘出有用的数据,并且能以较人性化、直观的方式展示这些数据,变得尤为重要。本文将介绍 7款顶级开源 BI(商务智能)软件和报表工具,用于商业数据的分析处理,希望对您有所帮助。 BIRT BIRT(Business Intelligence and Reporting Tools) 是由 IBM在 2004年开源的基于 Eclipse 的报表系统,它主要是用在基于Java与J2EE的Web应用程序上。BIRT主要由两部分组成:一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行期组件。BIRT同时也提供一个图形报表制作引擎。 获取地址:http://www.eclipse.org/birt/   Seal Report Seal Report 是一款生产报表和开放数据库看板框架,采用微软.Net框架,C# 编写。主要有以下它特性: 支持动态SQL 查询数据。 支持本地数据透视表,随意的修改表元素, 数据透视表会立即按照新的布置重新计算数据 。 支持通过HTML 5快速生成网页图表。 可生成层级导航及层级报表。 支持定时任务,可编写批处理,定时执行一些数据加载、数据处理、备份等操作。 较低的TCO(总拥有成本)。 提供Web报表服务。 获取地址:https://github.com/ariacom/Seal-Report/archive/master.zip   JasperReports JasperReports是一个采用Java开发的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。 JasperReports 支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。 获取地址:http://community.jaspersoft.com/download   ReportServer ReportServer 是采用 Java 开发的 BI 平台,支持 Linux 、OS X、Windows三大平台,运行在 Apache Tomcat,Wildfly等应用服务器上,允许采用Excel、Word、多维OLAP展示报表信息。 获取地址:https://reportserver.net/en/download/   Pentaho Pentaho是一个以工作 流为核心的、强调面向解决方案而非工具组件的BI套件,整合了多个开源项目,目标是和商业BI相抗衡。它偏向于与业务流程相结合的BI解决方案,侧重于大 中型企业应用。它允许商业分析人员或开发人员创建报表,仪表盘,分析模型,商业规则和 BI 流程。 功能和特点 ◆ 工作流引擎:Shark and JaWE ◆ 数据库:Firebird RDBMS ◆ 集成管理和开发环境:Eclipse ◆ 报表工具:Eclipse BIRT ◆ ETL工具:Enhydra/Kettle ◆ OLAP Server:Mondrian ◆ OLAP展示:JPivot ◆ 数据挖掘组件:Weka ◆ 应用服务器和Portal服务器:JBoss ◆ 单点登陆服务及LDap认证:JOSSO ◆ […]

龙生   30 Jun 2016
View Details

NASA 美国国家航空航天局开源项目列表

美国宇航局,即 NASA ,将 253 个软件项目开源目前托管在 Gitithub上(https://github.com/nasa),NASA 希望可以通过开源收获更多项目改进的建议,同时NASA也希望用户可以给NASA提交项目,为此专门开通了官方的开源网站 Code NASA 。  Livingstone2 —— 人工智能(AI)软件系统 Livingstone2 是一个可重用的人工智能(AI)软件系统,旨在帮助飞船生命支持系统、化工厂或其他复杂系统在操作强劲以最小的人力监督,即使面对硬件故障或意外事件。 Livingstone2诊断飞船或其他系统的当前状态,并建议命令或修复操作,允许系统继续操作。 JavaGenes —— 遗传算法  JavaGenes 是一个用Java编写的相当通用的进化软件系统。它实现了几个版本的遗传算法,模拟生化和其他搜索技术。JavaGenes 已经用于分子进化,原子力场参数,数字电路,地球观测卫星计划等地方。 Shift —— 文件传输框架 在高端计算环境中,远程文件传输经常需要处理非常大的数据集,而计算资源则分布在不同的组织,需要将这些数据汇总在一起进行进一步分析。本地传输相同的数据在文件系统也经常由管理员来优化资源利用率当新的文件系统在线或存储成为现有文件系统之间的不平衡。 NASA ECHO —— 独立信息管理系统 NASA 在这个 ECHO 工具的研究上也花了很长时间,终于成功地开发出了 IIMS,早期被称之为独立信息管理系统。功能目标包括: ·  提供良好的文档接口和协议,帮助开发者构建并嵌入用户界面工具和服务。 ·  提供信息管理来支持库存、服务元数据和中间件。 ·  提供数据请求路径和跟踪。 ·  支持图形、关键字和 freetext 搜索。 BigView —— 大图像操作工具 BigView 允许在 Linux 桌面上对任意大小的图像进行平移和缩放操作。此外,它可以在实时的环境中工作,多台电脑合作将一个大的形象。使用这个软件,你可以探索——在相对温和的机器上火星轨道器照相机等图像马赛克(92160 x33280像素)。 CFD Utilities CFD Utility 软件库有将近 30 个 Fortran 90 和 77 的子程序组成,同时有将近 100 个基于这些库开发的应用程序。许多实用程序适用于多次拉丝结构化网格和流动的解决方案,但是很多其他可重用的模块在插值等类别,优化、正交、快速搜索和字符操作出现从空气动力学的几十年的软件开发部门和空间技术部门在NASA艾姆斯研究中心。 Trick —— 航天器仿真环境 Trick 仿真环境由美国约翰逊宇航中心研制。Trick 灵活的功能能让用户在航天器所有阶段建立应用程序,包括早期航天器设计与性能评价,飞行软件的开发与测试,飞行器的动态负责分析,以及循环测试中虚拟和硬件的分析。研发 Trick 的主要目的是为了提供一套普遍的仿真能力,使得特定领域的专家能够专注于他们所属领域具体模型的研究,而不是专注于具体仿真功能上,例如工作排序,输入文件处理或者数据记录。 Growler —— 分布式对象和事件架构 Growler 是一个基于 C++ 开发的分布式对象和事件架构。支持 C++ 的对象序列化作为远程方法调用、事件通道和 IDL 接口定义语言的一部分。 Mesh —— […]

龙生   29 Jun 2016
View Details

防欺诈盗号请勿支付或输入qq密码

通过微信公众平台的自定义菜单外链的网页时,在输入内容时会显示“防欺诈盗号,请勿支付或输入qq密码”,下面就分享一下如何去除微信顶部的“防欺诈盗号,请勿支付或输入qq密码”提示信息。  目前只有已经通过微信认证的账号可以去除这个提示,如果还没认证请先认证。  找到左侧导航菜单中的“公众号设置”,并打开。  打开“功能设置”,找到“业务域名”  点击“设置”,写入外链的域名,域名必须通过ICP备案,有三个域名可以填写。 from:http://jingyan.baidu.com/article/75ab0bcbce5527d6864db2e6.html

龙生   13 Jun 2016
View Details

如何用开源经历为你的简历增加光彩

在这篇文章中,我将会分享我的方法,让大家利用开源贡献在技术领域的求职中脱颖而出,成为强有力的候选者。 凡事预则立,不预则废。在你即将进入一个新的领域或者正准备熬夜修订你的简历之前,清楚地定义你正在寻找的工作的特征是值得的。你的简历是一部有说服力的作品,因此你必须了解你的观众,从而让它发挥出所有的潜力。看你简历的可能是任何需要你的技能并且能在预算之内聘用你的人。当编辑简历的时候,读一读你的简历上的内容,同时想象一下,以他们的角度怎么看待这份简历。你看起来像是一个“你”将会聘用的候选人吗? 我个人认为,对于目标职位的理想候选人所表现出来的关键特征,列出一张清单是很有帮助的。我结合了个人经验、阅读工作招聘信息、询问相同角色的同事等方面来收集这个清单。LinkedIn 和各种会议是寻求一些乐意提供这种建议的人的很好的地方。一些人喜欢谈论他们自己,那么通过邀请他们讲述他们自己的一些故事可以帮助你来拓展你的知识面,这样大家都会感觉很好。当你和其他人谈论他们的职业路线时,你不仅将会明白怎样去得到你想要从事的工作,而且还能知道你应该避免那些容易让你失去工作机会的特征或行为。 例如,对于一个不太资深的工作位置来说,关键特征列表可能如下所示: 技术方面: 拥有 CI (持续集成) 方面的经验,特别是 Jenkins 深厚的脚本编写背景,如 Python 和 Ruby 精通 Eclipse IDE 基本的 Git 和 Bash 知识 个人而言: 自我驱动的学习者 良好的交流和文档技巧 在团队开发方面富有经验(团队成员) 精通事件跟踪的工作流 尽管去申请职位 记住,你没有必要为了得到一份工作而去满足上面的工作描述列表中列出的每个标准。 工作细节(JD)描述了这个角色,让你一开始就知道你即将签约并为之工作几年的公司的全部信息,并且这份工作并不会让你觉得有什么挑战性,或者要求你去拓展你的技能。如果你对你无法满足清单上的技能列表而感到紧张,那么检查一下自己是否有来自其他方面的经历并能与之媲美的技能。例如,即使有些人从来没有使用过 Jenkins[1],那他也可能从之前使用过Buildbot[2] 或者travis CI[3] 的项目经验中明白持续集成测试的原则。 如果你正在申请一家大型公司,他们可能拥有一个专门的部门和一套完整的筛选过程来确保他们不会聘用任何不能胜任职位的候选人。也就是说,在你求职的过程中,你所能做的只是提交申请,而决定是否拒绝你是公司管理层的工作。不要过早地将工作拒之门外。 现在你已经知道了你的任务是什么,并且还知道你将需要让面试官印象深刻的技巧。下一步要做的取决于你已有的经验。 制造已经存在的事物之间的关联 列出一张你过去几年曾经参与过的所有项目。下面是一条快速得到这张清单的方法,跳转到你的 Github profile 中的Repositories标签页,并且过滤掉 fork 过来的项目。除此之外,检查下你的清单上是否有曾经处于领导地位的Organizations[4]。如果你已经有了一份简历,那么请确保你已经将你所有的经历都列在了上面。 考虑下任何一个你曾经作为一个潜在的领导经历并拥有过特权的 IRC 频道。检查下你的 Meetup 和Eventbrite 账号,并将你曾经组织过或者作为志愿者参与过的活动添加到你的清单上。浏览你前几年的日程并且标注所有志愿服务,或者有作为导师的经历,又或者参与过的公共演讲。 现在进入了比较艰难的环节了,将清单上列出的必备技能与个人经历列表上的内容一一对照,我喜欢给该工作所需要的每个特征用一个字母或者数字作为标记,然后在每一段你经历或参与过并表现出了某一特征的地方标记相同的符号。当你不太确定的时候,那就毫不犹豫地标记上它,尽管这样做更像是在吹嘘,但也好过显示出你的无能。 在我们写简历的时候常常被这样的情况所困扰,就是我们不愿冒着过分吹嘘自己的技能的风险。通常应该这样去想,“那些组织了聚会的人会表现出了更好的领导才能和计划技巧吗?”,而不是“当我组织了这个聚会的时候我是否展示出了这些技巧?”。 如果你已经充分了解了你在过去的一两年里的业余时间都是怎么度过的,而且你写了很多代码,那么你可能现在正面临着一个令人奇怪的问题,你已经拥有了太多的经验以至于一张纸的简历已经无法容纳下这些经验了。那么,如果那些列在你的清单上的经验,但无法证明你尝试去表现的任何技能的话,那么请扔掉它们吧。如果这份已经被缩短的简历清单上的内容仍然超过一张单页纸的容量的话,那么将你的经验按照一定的优先级排序,例如根据与所需技术的相关经历或丰富经验。 在这一方面,显而易见,如果你想要磨练一个独特的技能,那么你就需要一个不错的经历。考虑使用一个类似 OpenHatch[5] 的问题聚合器,并用它来寻找一个通过使用你从没使用过的工具和技术来锻炼你的技能的开源项目。 让你的简历更加漂亮 一份简历是否美观取决于它的简洁度、清晰度和布局。每一段经历都应该通过足够的信息来展示给读者,并让他们立刻明白为什么你要将它包含进去,而且恰到好处。每种类型的信息都应该使用一致的文档格式来表示,一份含有斜体格式的日期或者右对齐的或者与整体风格不协调的部分绝对会让人分心。 使用工具来给你的简历排版会使之前设定的目标更加容易实现。我喜欢使用 LaTeX[6],因为它的宏系统能够使可视化一致性变得更加容易,并且大量的面试官都能一眼就认出它。你的工具的选择可能是LibreOffice[7] 或者 HTML,这取决于你的技能和你希望怎样去发布你的简历。 记住一点,一份以电子方式提交的简历可以通过关键字被浏览到。因此,当你需要描述你的工作经历的时候使用和工作招聘告示一样的英文缩写对你的求职会有很大的帮助。为了让你的简历更加容易被面试官看到,首先就要放上最重要的信息。 程序员通常难以在为文档排版时量化平衡和布局。我最喜欢的修改和评估我的文档中的空格是否处于正确位置的技术,就是全屏显示我的 PDF 或者打印出来,然后在镜子里面查看它。如果你正在使用 LibreOffice Writer,保存一份你的简历的副本,然后将你的简历中的字体换成一种你看不懂的语言。这两种技术都强制将你从阅读的内容中脱离出来,让你以一种新的方式查看文档的整体布局。他们把你从一个“那句话措辞不当!”这样的批评转到了注意如“在这行上只有一个字,看起来挺逗”之类的事情。 最后,再次检查你的简历是否在它将要的展示的多媒体上看起来完全正确。如果你以网页的形式发布它,那么在不同屏幕大小的浏览器中测试它的效果。如果它是一份 PDF 文档,那么在你的手机或者你的朋友的电脑上打开它,并确保它所需要的字体都是可用的。 接下来的步骤 最后,不要让你辛苦做出来的简历内容浪费了,将它完整的复制到你的 LinkedIn 帐号上(完全使用招聘公告中的流行词),然后毫无疑问招聘人员就会找到你了。尽管他们描述的工作内容并不是恰好适合你,但是你可以利用他们的时间和兴趣来得到关于你的简历中有哪些地方好与不好的反馈信息。 作者:edunham[8] 译者:pengkai[9] 校对:mudongliang[10],wxy[11] 本文由 LCTT[12] 原创编译,Linux中国[13] 荣誉推出 [1]: https://jenkins-ci.org/ [2]: http://buildbot.net/ [3]: https://travis-ci.org/ […]

龙生   02 Jun 2016
View Details

17 年编程生涯的三大经验总结

今年将迎来我编程的第十七个年头。我的编程之旅始于九十年代末,上大学的时候,主要涉足基于表格的网页设计,传统的ASP,和Microsoft Access数据库。原来只是当作业余爱好的编程现在已经成为了我的事业和激情。我一生一半的时间都在学习、蹒跚、成功、失败,并且经常情不自禁地为代码 美丽和复杂的天性而折腰。 我在代码上淫浸了足够长的时间,因此看到了很多语言和平台的兴盛和消亡,看到了很多模式被普及,被苛责,然后再次被推广。在某些时候,我常常分不清这是大势所趋还是明日黄花。 编程的流行趋势是短暂的,但我坚守的规则,往往在生活中的其他地方也能发挥作用。事实上,生活就像代码(我已经买了这个域名来证明这一点!)。以下是我总结的3个伟大的经验教训,历经一次又一次编程和生活的大浪淘沙。 1.可商榷的决定往往是一种权衡。 伟大的辩论总是发生在开发社区中。无论它是最近关于TDD作为web开发的一种可行方法的辩论,还是什么水平的开发人员应该使用ORM(或 micro-ORMs)。无论是.NET MVC应该优于WebForms还是以JavaScript为中心的app应该比基于页面的app更受青睐,对我来说,答案都一样:看你权衡之后的取舍? 在任何比较两种流行方法的辩论中,我们总是会从自己的立场出发,两利相权取其重,两害相权取其轻。在我的职业生涯早期,我曾执着于追求所谓的正确答 案。感觉过程是线性的:摆脱做事的老办法,转而投向新的并且更好的方法的怀抱。曾经有一段时间我深信,编写自己的SQL查询是一种过时的练习,并且 ORMs是最后赢家。 但是,我了解到,更好的办法应该由内容决定的。例如,今天完全成熟的ORMs在隔离映射相关数据网格到对象的冗长管道提供了伟大服务,但隔离也使得某种非标准查询变得困难并且有潜在的效率低下问题。n+1 select problem就是经典的在少写代码和写更多高效代码之间做权衡。我使用ORM的程度完全受我期待应用程序使用的数据量,我所受到的潜在的时间限制,app长期可扩展性需求这三者的影响。(顺便说一句,我目前是micro-ORMs,比如说Dapper的忠实粉丝,它能让我编写我自己的SQL和一些精巧的对象-关系映射)。 我已经将这个经验应用到了我生活的其他方面。我是应该买一套公寓还是长租房子?我是应该启动自己的生意还是工作于已经成立的公司?没有绝对正确的选择。当你权衡利弊了之后,你便可以更好地应对生活中的各种难题。 2.清晰并不总和简洁相关。 和大多数工程师一样,我对持续重构一直到代码尽可能地少和简洁的机会垂涎三尺。如果可以选择更少又更简洁的代码来完成同样的任务,那么我为什么要选 择要个更多代码的方案呢?通常情况下,更简洁的语言会导致更好的交流。画蛇添足只会阻碍核心信息的提取。但是,最终的目标不应该是简洁——而应该是可交 流。于我而言,下面这段直截了当的代码,在它更长的时候…… ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 if (HasFarm() && HasBoat()) {   Broadcast("You are wealthy!"); } else if (HasFarm() && !HasBoat()) {   Broadcast("You are OK!"); } else if (!HasFarm() && HasBoat()) {   Broadcast("You are OK!"); } else if (!HasFarm() && !HasBoat()) {   Broadcast("You are poor!"); } ……反而比这个简洁版本更明确。 ? 1 2 3 (HasFarm() && HasBoat()) ? Broadcast("You are wealthy!") :  (HasFarm() || HasBoat()) ? Broadcast("You are OK!") :  Broadcast("You are poor!"); 虽然这是一个品味问题(有些人可能会觉得后者看上去更加一目了然),但是我在这里要表述的观点是,有时候解释的最伟大方法并不是简化。这个经验也适 用于日常生活,我花了大量时间来思考怎么样才能更好地传达消息以便于对方接收——有时更详细的讲解并非没有价值,而是更明确传达信息的必须。 举例来说,我想要更明确和更详细地告诉我爸爸应该如何关闭iPad(“按住右侧的按钮一段时间……”)。或者,我看似多此一举地键入了一些我已经提 交到本地分支的内容给我的同事(“刚刚犯的错误已被修复”),然后当它涉及到部署更新到产品中时,我就能很明确地知道哪些具体的提交被合并和出现(“检查 4812-4822行,其中包括在6/15发行版本中的DoneDone问题,将在今晚的产品发布中提出来。”)。 3.累计良性债务,并且要持续偿还。 我在一个特别害怕欠债的家庭中长大。八十年代中期,我的父母倾其所有又东拼西凑,付了他们第一套房子75%的首付,然后在七年内付清了剩余款项。用现金支付是常态。信用支付在他们看来几乎是一种罪过。作为一个孩子,我的看法是,债务完全是坏的。我从不认为欠债是一种优势。 直到我看到其他人是如何对待债务的——在我20出头的时候——我终于知道了债务也可以是有益的。如果你能够合理地承担债务,那么之后你也能获得成功。如果借助现在更好的上升空间可以加速你之后的成长,那么债务可以成为一笔巨大的财富。 代码也是如此。有时它值得你现在承担一点债务——错过抽象或者有一些未优化的SQL代码——如果这样做可以让你更快地发布内容给不断增长的观众的话。关键是要了解你必须偿还它,以及你可以在适当的时间段之后偿还。 这就是债务在生活和编程中的窍门。偿还债务需要持续进行。将一周10%的时间用于重构,相当于你是在按时支付编码的信用卡账单。如果你保持一种持续、可支撑的还债状态,那么累积债务实际上对你是有好处的。 译文链接:http://www.codeceo.com/article/17-year-3-tips-programming.html 英文原文:Programming’s three life lessons 翻译作者:码农网 – 小峰 from:http://www.oschina.net/news/73943/17-years-code

龙生   02 Jun 2016
View Details

Google 打败 Oracle 赢得 Java 版权案官司

Google 和 Oracle 关于 Java 侵权案的陪审团裁定,谷歌使用 Oracle 创建的 Java 软件来创建 Android 系统是合理使用,不构成版权侵犯。 此判决标志着 Oracle 在 2012 年起诉 Google 关于侵犯 Java 版权的案子正式结束,Google 因此避免了 90 亿美元的赔偿。此案同时也给在编写不同平台上应用程序但没有许可证的程序员们最大的安慰。 甲骨文认为,谷歌需要一个许可才能在 Android 操作系统上使用 Java 编程语言,但是陪审团周四在旧金山联邦法院否认了这种说法,认为谷歌是合理使用代码,符合著作权。 IDC 分析师 Al Hilwa 表示:很多人都松了一口气!判决结果为软件企业提供保障,使得他们在开发各种可互操作的软件时没有法律风险。而数以万计使用 API 的软件开发人员更将将庆祝这一判决结果。谷歌的胜诉解决了他们在开发从游戏到企业应用中一个非常关键的问题。 from:http://www.oschina.net/news/73784/google-defeats-oracle-copyright-java-android

龙生   27 May 2016
View Details
1 5 6 7 22