先讲两个很老的小故事。 第一个故事。 有一家日本最大的化妆品公司,收到了用户的投诉。用户抱怨买来的肥皂盒是空的。...这家公司为了防止再发生这样的事故,很辛苦地发明了一台X光检查器,能够透视每一个出货的肥皂盒。 同样的事故,发生在一家小公司。...===================== 这几天,我在看Unix,发现很多人在谈"Unix哲学",也就是开发Unix系统的指导思想。 Wikipedia上列出了好几个版本,不同的人有不同的总结。...但是我发现,所有人都同意,"简单原则"----尽量用简单的方法解决问题----是"Unix哲学"的根本原则。...清晰的代码不容易崩溃,而且容易理解和维护。重视注释。不为了性能的一丁点提升,而大幅增加技术的复杂性,因为复杂的技术会使得日后的阅读和维护更加艰难。 2. 模块原则。
golang简介Google是一家顶尖的创新与大神集结的地方,员工的工作方式也很特别,叫做“20%Time”,即允许工程师拿出20%的时间来研究自己喜欢的项目。...2007年9月20日的下午,在谷歌山景城总部的一间办公室里,谷歌的大佬级程序员Rob Pike启动了一个C++工程的编译构建。按照以往的经验判断,这次构建大约需要一个小时。...golang设计哲学这里整理出go语言设计者Rob Pike的一些公开演讲,然后提炼出golang设计之初的哲学之道,这些演讲分别是:Concurrency is not Parallelism....除此之外,并发与组合的哲学是一脉相承的,并发是一个更大的组合的概念,它在程序设计层面对程序进行拆解组合,再映射到程序执行层面:goroutine各自执行特定的工作,通过channel+select将goroutine...)Go 设计哲学:少即是多,哪里来的?
其一,尽管其宏伟的标题,该帖子狭隘地专注于我们在 Liferay 云面向企业的用例和我们在最近的堆栈升级期间实施的一些模式。事后看来,我宁愿详细介绍更多我的建筑特定想法。...随着技术的进步,可能会有新的问题需要解决,但阳光下没有什么新鲜事。网络系统中只有如此多的需求,这意味着有效满足这些需求的方式是有限度的。...这是一个有据可查的问题,并不是什么新鲜事。jQuery UI 也是如此(不是说我在身边)也是如此,下一个广受欢迎的包罗万象的工具包也是如此,它承诺快速赢得 Web 开发人员。...但是,在一天结束的时候,永远记住:它只是一个花哨的模板引擎,为动态应用。提高我们连接和插值 HTML 的能力的质量工具,无论是静态的还是动态的,都将受到欢迎和赞扬。...安装神奇的 NPM 模块很容易,这意味着很容易构建一个巨大的、脆弱的、不必要的依赖树来权衡您的应用。NPM近年来一直与争议相邻,但NPM只是人类使用的工具。
》 用模块化实现组件重用和多个实现之间的互操作性 用无服务器实现弹性扩展和功能即服务 用系统构建系统 软件的哲学方面通常是以理性为基础,以批判或者系统的方式进行思考。...以下是我总结的Filecoin设计中的重要哲学: 关注协议,没有人是一座孤岛。 关注互联网中被破坏的东西,参考《大话胡安: 我为什么创立协议实验室?》。...他的初心和哲学都在这篇文章中了:《大话胡安: 我为什么创立协议实验室?》。 是什么让Filecoin与众不同?Filecoin官方总结了三个方面:复制证明、可验证市场和有用共识。...总体来说,Filecoin在架构与哲学方面是偏执的,缺乏灵活性。...但Filecoin所坚持的哲学和目标没有变更,那就是用研究支撑规范,让实现遵循规范,用反复迭代和多种实现保证实现的安全。 我想,正是这种偏执,让Filecoin与众不同。 最多零知识证明的系统
,但是有时候 从数据库取出来的数据是跨数据的,比如取第100页的数据。...通俗的说,游标不是查询结果,而是查询的一个返回资源或者接口,通过 这个接口,可以逐条读取数据。 就类似java中的读取流一样,使用包装类的readLine()方法一行一行去读。...同样也可以使用js的while语法来循环打印刚刚的数据: 当然也可以使用for循环来打印: 还有一个比较常用的方法,叫“forEach”,每一个forEach里面有一个 回调函数,这个函数中的obj...对象就是游标指向的数据集的每一个数据。...: 如果我们不想迭代打印,想直接把结果以数组的形式打印出来, 使用游标的toArray()方法: 想取出某一个,使用数组的下标即可: 这里要提醒大家的是,如果查询少量的数据,可以使用toArray
Django 读作姜戈,第一个 D 不发音,与电影《被解救的姜戈》的姜戈除了读音一样,没有其他半毛钱关系。Django 是一个优秀的 Web 框架,用 Python 编写,是非常流行的全栈框架。...,在开发的过程中他们发现很多共性的代码可以提取出来复用,从而减少工作量,提高效率,慢慢的就开发出一个可以填空的 Web 框架,这个框架被越来越多的人使用,于是在 2005 年的夏天,Django 源码开放...,一度成为非常流程的框架,有着数以万计的用户和贡献者,在世界广泛传播的完善开源项目。...Django 是完美主义者的开发框架,和 Python 一样有着自己的设计哲学: 一、总体架构方面: 1、松耦合 Django 的基本目标是松耦合和高内聚。...这也是 select_related() QuerySet 方法存在的原因,对于常见的查询相关对象的情形,它是可选的性能提升器。
这样的哲学除了在象牙塔中孤芳自赏,又有多少实际意义? 到了十九世纪末,人们逐渐意识到问题很可能出在“语言”上,很多哲学问题来源于对语言的误用。解决了语言问题,就解决了哲学问题。...由此产生了“语言哲学”,并成为了二十世纪上半叶英美哲学的主流。如果说认识论是“对思考的思考”,那么语言哲学就是“对言说的言说”。...尽管历史上有很多哲学家也很重视语言,但那时语言只是研究哲学的工具;而现在,语言成了哲学本身。...下面我们从语言哲学的角度看一看软件开发中有关语言的问题。 首先,语言哲学认为,语言的意义是在使用的过程中体现出来的。...小结 我们用若干章节探讨了领域驱动设计的哲学内涵。两者之间的这种契合关系并非偶然。 哲学的主要目的是解决对世界进行认识(认识论)和诠释(语言哲学)问题。
最近有小伙伴在Thoughtworks DDD社区中提起了有关哲学的话题,这在我这个哲学民科(下文简称“哲民”)的心中激起了阵阵涟漪。...据小道消息,Eric Evans认为DDD不是一种方法学,而是一种软件开发的思想和哲学。言下之意,“方法学”把DDD给说小了。好吧,那咱就顺着艾老师的意思,看看DDD和哲学能碰出什么火花来。...对于我们这些从小受到辩证唯物主义教育的小伙伴来说,这没什么问题。但有些哲学家可未必同意。 首先,佛教哲学认为根本就不存在“客观世界”,一切都是空幻不实的。印度教也认为我们不过是生活在梵天的一场梦中。...好在这些哲学思辨并不会对程序员和领域专家们的生活造成太大影响。...至于我们所认识到的东西和客观世界(如果有的话)的关系就留给哲学家们讨论吧。 不过上述论断对建模还是有一个细微但重要的影响。
苹果是一家为数不多以设计驱动的公司。 如今,当我们谈论起产品设计、谈论起用户体验,总是离不开苹果,它所坚持的设计哲学是对细节和质量的极致追求。下面,我就带大家看看 Apple 在交互方面做的努力。...动态的触控区域 Apple 为了解决在移动设备上输入本文的问题,采用了一种流畅并且对用户友好的解决方案:基于预测输入系统,扩大虚拟键盘的有效触控区域。 ?...当你按下“th”的时候,系统预测下一个字母可能是 e 或 i,从而动态增加这两个字母的点击范围,以此提高输入的命中率。 当然,视觉上你看不到按钮尺寸的变化。指尖之上,一切都在无形之中。 — 02....重新定向 在使用设备中,用户的操作是一直在改变的,所以交互的中间过程,同样需要重新定向。 ?...为用户创造一系列的愉悦体验,这也许就是苹果的设计哲学。 作者:阿洋,网易资深设计师,每周原创设计干货 本文首发自公众号:洋爷(ID:yangye365)
我一直觉得设计哲学这个东西是一个很虚的东西,直到我看了一个关于苏联暴力美学的帖子,里面有一段写ak-47,t34等等。虽然也有人说这是苏联的战略忽悠局。...经过一年的工作发现确实生产中面临这样的问题,如果用苏军内幕这本书里面的思想确实是可以改进很多问题。 坦克!进攻! 战略进攻 不要用战术上的勤奋掩盖战略上的懒惰?虽然把一个产品做的精益求精是对的事情。...因为我觉得写代码本身有意义,但是纠结在代码的细枝末节是没有意义的事情。首先作为一个公司或者一个技术团队,他的意义是解决现实生活的实际问题,有稳定可靠的盈利。...简单的组合 由结构简单的组合组合成性能可靠的巨大产品 由结构简单的组合组合成性能可靠的巨大产品 由结构简单的组合组合成性能可靠的巨大产品 这样组成的产品易于维护,喝一瓶二锅头也写不错的代码和加班熬夜几天还写不错的模块是好模块...不同口径,为了音乐学院的学生 显式调用 盗取代码,删库跑路是一件很可怕的事情,不过更可怕的事情是写不可维护的代码,可读的结构简单的代码,就是战时的武器,在仓促的情况下,隐藏调用或者其他的修改会。
将具体的业务场景数字化,首先需要对场景进行抽象和设计。业务场景中的概念及其联系,落到硬盘上就是数据库中的一张张表,加载到内存中便是编程语言的一个个类。...因此,对具体场景进行建模时,最重要的便是数据库表的设计和软件类图的设计,而他俩又基本上是一一对应的。...前者常使用 ER 模型进行辅助设计,识别问题域中关键的概念和联系,进行图形化的、精确化的描述;后者当然有很多 ORM 框架和 UML 类图之类的来表示。...实体是一个概念,可以对应编程语言中类,也可以理解为一个 Excel 中由表头确定的一个表。而实体的一个对象,则对应编程中的一个类的实例,也对应 Excel 表格中的一行。...宠物医院类图 关系的特点 实体与实体间关系的一个最重要特征便是基数(cardinality)和参与度(participation)。前者就是我们常说的:一对一的,一对多的,还是多对多的关系。
它们的关系是,对象是类的实例,类是对象的模板,即哲学中共性与个性的关系。...如果要找出52张牌的共性,那就是牌点和花色,因为任何一张牌都有牌点和花色的特性。 ? 共性是抽象的,个性是具体的 int类型是抽象的,而对象5,9是具体的。...共性与个性相互转化 在保持原有类的属性和功能的基础上,扩展新的功能称为类的继承。被继承的已有类称为父类;派生出的新类叫做子类。子类可以看作父类的一个对象,而子类又可以生成对象。...这就是类和对象之间在一定条件下的转化。 矛盾的共性指矛盾的普遍性,是绝对的、无条件的;矛盾的个性指矛盾的特殊性,是相对的、有条件的。...共性决定事物的基本性质;个性揭示事物之间的差异性。个性体现并丰富着共性。共性是绝对的、无条件的,个性是相对的、有条件的。
“关联”、《矛盾论》、毕达哥拉斯学派 DDD的哲学意味(上)说到了“模型驱动的设计”以及其中两个重要的模式“实体”和“值对象”,两者统称“领域对象”。...这一点实属可惜,因为关联至少与实体有同样的重要性。为什么这么说呢?下面还是先扯几句哲学。 前面提到毛老师的《实践论》,这里再说说怹老人家的另一篇杰作《矛盾论》。...形而上学认为事物的发展是静态的、外因驱动的、孤立的;唯物辩证法则认为事物的发展是动态的、内因驱动的、联系的(还记得中学政治课背过吗?)。前两点我们后面再聊,这里先讨论“联系”。...模型的演进、辩证法、进化论 前文说到,唯物辩证法认为事物的发展是动态的、内因驱动的、联系的;并且已经讨论了“联系”。这一节首先讨论“动态”。 事物的发展变化是永恒的。...限界上下文与人类认识能力的有限性 虽然哲学家可能是人类有史以来最喜欢争辩的群体,但有一个观点,多数哲学家却是有共识的:人的认识能力是有限的。
所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事。异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学。...这两个问题分别在不同的时间针对不同的问题出自一个互联网巨头中某个资深QA和资深开发的反问。 暂且不论对错,毕竟不同人考虑问题的出发点是不同的。...但是从这么坚决的去异常处理的回答中至少有一点可以肯定,那就是很多人对自己的代码太过自信或者说是察觉代码潜在问题的直觉力不够,更别提正确的处理潜在的问题以保证重要业务逻辑的处理流程。...比如我们给第三方提供的API或者使用第三方提供的API。多数情况下要正确的处理调用者错误的调用参数和返回异常结果的情况,不然就可能要背黑锅了。 在不可控的环境中运行程序,异常处理是必须的。...程序执行过程中抛出的异常会匹配该对象对应的异常类和其所有的基类。 可以从内置类型的异常类派生出自定义的异常类。 被捕获的异常可以再次被抛出。
[GO专栏-2]Go语言的设计哲学 简单 第一条原则:追求简单,少即是多 组合 偏好组合,正交解耦 理解golang的结构体嵌入 为什么嵌入语法是组合而非继承 活用组合和接口让代码更加优雅 与其他语言对比...除此之外,并发与组合的哲学是一脉相承的,并发是一个更大的组合的概念,它在程序设计的层面对程序进行拆解组合,再映射到程序执行层面上:goroutines各自执行特定的工作,通过 channel+select...面向工程 原则: 面向工程,“自带电池” 要想理解这条设计哲学,我们依然需要回到三位 Go 语言之父在设计 Go 语言时的初衷:**面向解决真实世界中 Google 内部大规模软件开发存在的各种问题,为这些问题提供答案...这种设计哲学的落地让 Go 语言具有广泛的规模适应性:既可以被仅有 5 人的初创团队用于开发终端工具,也能够满足像 Google 这样的超巨型公司大规模团队开发大规模网络服务程序的需要。...但作为面向工程的编程语言,光有简单的设计哲学还不够,每个语言设计细节还都要经过“工程规模化”的考验和打磨,需要在细节上做好充分的思考和讨论。
本文有标题党之嫌,因为讨论的内容并非严格的哲学命题。但机器学习中有很多思想换个角度看和其他学科息息相关,甚至共通。在此总结了一些我觉得有意思的观察,供大家讨论。 ?...△ 图为拉斐尔为梵蒂冈宫教皇绘制的哲学主题壁画《雅典学派》 1. 没有免费的午餐定理(No Free Lunch Theorem) - 什么算法最好?...奥卡姆剃刀定理(Occam’s Razor - Ockham定理) - 少即是多 奥卡姆剃刀是由十二世纪的英国教士及哲学家奥卡姆提出的:“ 如无必要,勿增实体”。 ?...那么h1更加简单,更加符合尝试,选择它:) 提供这个例子的原因是为了提供一个量化方法来评估假设,其与奥卡姆剃刀有相同的哲学内涵。...集成学习(Ensemble Learning) - 三个臭皮匠的智慧 集成学习的哲学思想是“众人拾柴火焰高”,和其他机器学习模型不同,集成学习将多个较弱的机器学习(臭皮匠)模型合并起来来一起决策(诸葛亮
这些设计或许在某个时刻已经不再为人所用,或者仅供瞻仰,但其设计的精神却恒久而不废。 大约,Unix的设计哲学亦如此。...思考架构模式中的“管道过滤器”模式,思考事件驱动架构(EDA),思考Storm或者Spark Streaming对流的处理,思考Scala中Parser的原理,几乎都看到了这一Unix设计哲学的影子。...Martin Kleppmann在文章Apache Kafka, Samza, and the Unix Philosophy of Distributed Data中比较了Unix设计哲学与数据库的设计哲学...Unix设计哲学将stdin和stdout视为通信通道(communication channel),数据库的设计模式则是服务器/客户端。...若没有它的设计哲学作指引,它或许已经崩溃、疯狂或者死亡,正如人没有信仰。软件设计需有思想的支持,否则设计的结果没有灵魂。
前言whosbug项目中,最重要的无非是两个部分:对接入项目的AST静态语法解析责任人归属算法`whosbug`初版发布后我们进行了一系列的测试,发现了老算法在一些场景下的局限性(如对没有第三方库调用的处理....png" style="zoom: 50%;" />并且包 / 类也视作一个函数,将包/类内的代码非函数内代码归入这个包 / 类的函数图片获取可能和这次错误相关的函数Init: 获取预设的迭代次数NUMBER_OF_ITERATION...,新建相关方法集methods,以错误堆栈中涉及的所有方法为初值不断地从methods内的每个函数/方法找到与其相连且未在methods内的方法,加入methods中,也同时得到该方法与直接错误方法的距离...(输入的堆栈中的原始栈帧)的距离(语法树中的距离)、其原始栈帧到栈顶的距离以及其置信度$$\mathit{Contribution}\ =\ \mathit{Confidence\ \ \frac{...,一定程度上也考虑了初版的假设:越近的修改越容易导致bug)函数大改时会基本回落到初始化的置信度一定程度上区分bugfix型的变动和业务变更的变动初始化$$\mathit{Confidence\ =\
思维导图 第一章 经营哲学 LOFT的起点 我很喜欢大学社团的氛围,从那时起我便暗下决心,如果有朝一日自己开了公司或店铺,一定要把它打造成一个拥有大学社团氛围的集体 只要开在车站附近这样交通便捷的地方...,哪怕不是在一楼(LOFT在五楼开业),也一定会有顾客来的 我在车站前的百货商场找到的空铺位于五楼。...那就是站在顾客的角度思考问题,或是以顾客的心情思考问题 这是任何人都可以轻而易举做到的,可是真正去做的人却少之又少 成长的本质 所谓成长的本质,拥有多少才能固然重要,但我认为,所处的环境、当事人的想法和决心也是非常重要的...、加深项目理解、提高企划品质的执念,才能够开创崭新的时代 我在近期销售工作中的思考 在科学技术日新月异、国际竞争日益激烈的今天,而且是在人口不断减少的日本,我认为,不改变才是最危险的事情 不畏惧失败,因为失败能够带来发展...明确的目标 简单的组织 集思广益 奖惩分明 ---- 第三章 企划 企划的精髓 企划的本质是协调顾客价值、收益率、员工成长、社会贡献这四要素的关系 企划必须满足的四个条件 身为企划公司的CCC制作出的企划
Component 是一个微型的 Clojure 框架用于管理那些包含运行时状态的软件组件的生命周期和依赖。 这主要是一种用几个辅助函数实现的设计模式。可以被看成是使用不可变数据结构的依赖注入风格。...store,的函数,用于处理不同的路由。...与将可变的状态分散到不同的命名空间的做法不同,应用的所有有状态的部分都可以被聚合到一起。某些情况下,使用 component 可以不需要共享可变引用。举个例子,存储当前的数据库资源链接。...Component 假设所有的应用状态都是通过参数的形式传递给使用到它的函数中的。这样会导致很难应用到那些依赖全局或者单例引用的代码。...框架产生的 system 对象是一个巨大并且有很多重复的复杂 map。同样的 component 可能会在 map 的多个地方出现。
领取专属 10元无门槛券
手把手带您无忧上云