首页
学习
活动
专区
圈层
工具
发布

NodeJS作者总结自己在node设计中的失误

本文首发于知乎,各位可以通过点击文章下方的阅读原来来访问原文地址 近日(6月3日),nodeJS的作者——Ry(Ryan Dahl)在JS Conf Berlin上做了一个题为 【10 THINGS...,总结了自己在node设计中的失误,其中列举了他对NodeJS感到后悔的7件事(说好的10件事呢……)。 Twitter网友的漫画总结 以下内容根据Ry的ppt内容翻译和总结而来。...(如果翻译有误,请指正……) 对于NodeJS感到后悔的7件事 ◇没有坚持使用Promise 我在2009年6月把Promise加到了Node中,但是又非常愚蠢的在2010年2月把移除去了。...默认情况下还是很好的,但实际情况中如果使用$ NODE_PATH环境变量,会让情况变得十分复杂。 它偏离了浏览器语义。 这是我的错,我很抱歉。 不幸的是,现在不可能撤销。...你不能忽略定义在script标签src属性中的js文件。 模块加载器必须在文件系统中多个位置进行查询,试图猜测用户想要的内容。

2.3K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    新增非空约束字段在不同版本中的演进

    出现以上问题的核心,还是为何有为空的记录存储于有NOT NULL非空约束的表中。...这种新增非空约束字段在不同版本中确实有一些细节的变化,下面做一些简单测试。...NULL约束字段,但报错信息变了,ORA-01758: table must be empty to add mandatory (NOT NULL) column,这个错误号在之前的版本有定义,不是新号...12c中描述允许为空的字段,若有默认值,不会更新已存数据,而是会借助数据字典完成存储,这种新特性的适用范围更广了。 ?...至此,12c修复了11g中这个非空约束字段允许保存空值的bug,同时又支持11g新增默认值非空字段使用数据字典存储的特性,并且做了扩展支持,满足范围更大了。 小问题隐藏了大智慧。

    4K10

    我在ThoughtWorks中的敏捷实践

    我们每个人特点各不相同,但有一点神似:专业,责任心,追求卓越 我们团队还有一个workout的文化特色,向⬇️看: PS:我们的workout自开始之日到项目交付之期,不曾落下过一天,且收到良好的反馈...在我们团队中,这个角色就是一开始提到的BA。她是IPM主要参与人,另外还有Tech Lead会一起参与讨论(团队中每一个人成员都是可以参与进来的)。...我听过一个有趣的事情:在敏捷开发方法兴起的时候,很多传统开发模式的团队跃跃欲试,他们选择从Standup切入。然后每天早上上班后,大家聚在一起开个会(站着、坐着都有),然后该怎么做还是怎么做。...我比较推荐DEV在kick off后将Story划分成子任务列表,按照依赖关系和优先级排序,逐个干掉他们。...我也经历过客户要求测试覆盖率的项目,有专门的测试覆盖率工具(coveralls)来检测代码库,有的甚至集成在CI上作为一个硬性指标。 所以,TDD必须在一个有测试的项目中去讲。

    2.9K30

    空值合并运算符在 JS 中的运作机制

    在本文中,我们将探讨为什么它如此有用以及如何使用它。 背景 在JavaScript中,存在短路逻辑运算符:|| ,它返回第一个真实值。...除了它以外,以下是在JavaScript中被认为是虚假值的仅有这六个值: false undefined null ""(empty string) NaN 0 因此,如果以上列表中如果未包含任何内容,...结果将是存储在value1中的值为1。...为什么JavaScript需要空位合并运算符 || 运算符的效果很好,但有时我们只希望在第一个操作数为null或undefined 时对下一个表达式求值。因此,ES11添加了空值合并运算符。...在如下表达式中: x ?? y 如果x为null或undefined ,则结果为y 如果x不为null或undefined ,则结果将为x 这样一来,这将使条件检查和调试代码变得容易。

    2.5K40

    JVM系列之:详解java object对象在heap中的结构

    简介 在之前的文章中,我们介绍了使用JOL这一神器来解析java类或者java实例在内存中占用的空间地址。 今天,我们会更进一步,剖析一下在之前文章中没有讲解到的更深层次的细节。一起来看看吧。...}} 代码很简单,我们打印JVM的信息,Object class和一个新的Object实例的信息。...从上面的结果我们知道,在64位的JVM中,一个Object实例是占用16个字节。 因为Object对象中并没有其他对象的引用,所以我们看到Object对象只有一个12字节的对象头。...在64位的虚拟机中,Mark Word是64bits,如果是在32位的虚拟机中Mark Word是32bits。...实时上,在应用程序中,这种对象的指针是非常非常多的,从而导致如果同样一个程序,在32位机子上面运行和在64位机子上面运行占用的内存是完全不同的。64位机子内存使用可能是32位机子的1.5倍。

    1.2K41

    反思我在管理中犯过的重大错误

    近一年来,我在管理中犯下的2个重要错误。该错误导致团队结构不清晰,骨干核心人员不稳定,易流失。...团队人员结构分布是 1个经理、2个高级、3中级、4初级;组内划分是分成了3个小组,2个业务测试小组,一个测试基础小组。...组内结构划分可见下图所示: 二、我是如何犯错的,以及我为什么犯错 错误一:资源错配 对于组长的选择,以及组内骨干的选择,如下图所示: 其中标记为组长的,是在团队内部小组内被任命为小组长,标记为骨干的...两个业务小组中,初中级员工干中高级员工的活,中高级人员为相对边缘角色。这样的资源错配,直接引发了核心、骨干员工的离职率高的后果。 我为什么会这样做: 本质上是一个“谁能谁上”还是“谁上谁能”的问题。...我喜欢将所有有挑战性的、开拓边界的任务给到这类员工。 我为什么会这样做: 本质上是 个人的喜好问题(因为我也属于这类人)。

    1.9K10

    我是这样在 React 中实践 TDD 编程的

    在Redux中编写测试听起来肯定有悖直觉。如果你使用了Redux,它可能看起来更加复杂。 然而,在添加功能之前编写测试有助于编写更好的代码,因为你预先考虑了将使用的设计模式、体系结构和变量的名称。...Redux reducer逻辑和动作的集合,通常定义在单个文件中。...slice的默认状态应该是一个空数组,毕竟,我们处理的是用户。 让我们通过编写一个测试: 在src/store中创建一个名为slices的新目录。...在这个目录中,添加一个名为user.test.js的文件。这个文件将包含我们将为userSlice编写的测试。 第一个测试是确保存储是空的或未定义的。...在slice目录中,创建一个名为user.js的文件。

    2.7K30

    我的WCF之旅(3):在WCF中实现双工通信

    一、两种典型的双工MEP 1.请求过程中的回调 这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象;服务在对处理该处理中,通过客户端附加的回调对象(实际上是调用回调服务的代理对象...在本例中我们将采用另外一种截然不同的方式调用服务并进行结果的输出:我们通过单向(One-way)的模式调用CalculuateService(也就是客户端不可能通过回复消息得到计算结果),服务端在完成运算结果后...客户端调用CalculatorService正常的服务调用,那么在服务执行过程中借助于客户端在服务调用时提供的回调对象对客户端的操作进行回调,从本质上讲是另外一种形式的服务调用。...问题1:回调对双工信道的依赖 在本案例中,由于使用的NetTcpBinding,所以我们底层采用的是TCP协议。...由于回调的服务监听地址采用的默认端口是80,在IIS 5.x以及之前的版本中,80端口是IIS独占的监听端口。

    1.5K100

    我在使用 Go 过程中犯过的低级错误

    循环中引用迭代器变量 循环迭代器变量是一个在每次循环迭代中采用不同值的单个变量。如果我们一直使用一个变量,可能会导致不可预知的行为。...解决方法也很简单,v 作为一个参数传入 goroutine 中,每个 v 都会被独立计算并保存到 goroutine 的栈中,从而得到预期的结果。...子程序将在第6行阻塞,直到父程序在第9行收到来自ch的结果。同时,父程序将在select处阻塞,直到子程序向ch发送结果(第9行)或超时发生(第11行)。...另一个解决方法是在第6行使用一个带有空默认情况的选择语句,这样如果没有Goroutine收到ch,就会发生默认。尽管这个解决方案可能并不总是有效。...不使用 -race 选项 我经常见到的一个错误是在测试 go 应用的时候没有带 -race 选项。

    3.2K10

    我在自己的桌面端应用中运行了小程序

    作为程序员必须要(xia)精(zhe)进(teng),就单纯有一天突然奇想,能否做到像微信一样在桌面应用也跑上自己的小程序呢?...图片细细想下,这样标准容器化的好处,可以保证在开发语言环境存在差异下,“套壳子的小程序”能独立运行的同时,也可以与“其他套壳子的小程序”联动使用。...SDK 前还需要在 FinClip 的后台上架小程序,我上架了官方的示例小程序代码包,也尝试了直接把微信小程序的代码包上传到 IDE 中的,发现也能兼容。...以下是我桌面端实际运行小程序的结果。图片如果做一定适配优化,小程序的展示尺寸还可以适配打开窗口大小,效果也不错。...图片个人认为一些企业做OA模块化开发还挺适合在桌面端用小程序的,毕竟小程序能够实现动态化的更新,不必硬要通过迭代更新实现。好了以上就是我瞎折腾的全过程,欢迎各位大佬拍砖。

    2K30

    在不同的任务中,我应该选择哪种机器学习算法?

    当开始研究数据科学时,我经常面临一个问题,那就是为我的特定问题选择最合适的算法。在本文中,我将尝试解释一些基本概念,并在不同的任务中使用不同类型的机器学习算法。...在MSE的例子中有一个从最小二乘法中得到的数学方程: ? 在实践中,用梯度下降法来优化它更容易,它在计算上更有效率。...在分类树中,我们使用交叉熵和Gini指数。在回归树中,我们最小化了下降区域的点的目标值的预测变量和我们分配给它的值之间的平方误差的总和。 ? 我们为每个节点递归地完成这个过程,并在遇到停止条件时完成。...6.神经网络 当我们讨论逻辑回归的时候,我已经提到过神经网络。在非常具体的任务中,有许多不同的架构是有价值的。更常见的是,它由一系列的层或组件组成,它们之间有线性连接,并遵循非线性关系。...为了简化你的工作,我已经准备好了它们的主要特征的结构化概述。 线性回归和线性分类器:尽管表面上看起来很简单,但它们在大量的特征上非常有用,在这些特征中,更好的算法会因过度拟合而受到影响。

    2.6K30
    领券