monkeypatching相关内容

寻找猴子修补有什么问题的具体示例吗?

我听到了很多关于猴子打补丁多么酷或猴子打补丁是地球上最糟糕的事情的信息.我的想法是,如果您编写一些代码然后又有人更改其功能来执行其他操作,那将是不好的.但我正在寻找一个具体的例子,说明这种情况可能确实会伤害您.我的意思是,我一直都在编写代码,然后我的同事对其进行更改.那么,猴子补丁与此有何不同? 最糟糕的情况是什么? 解决方案 编程已经缓慢而稳定地摆脱了需要理解全局状态才能理解局部行为的编 ..
发布时间:2020-04-27 04:03:14 其他开发

要(猴子)打补丁还是不(猴子)打补丁,这是一个问题

我正在和一位同事谈论我们所使用的某些软件包的一种相当意外/不希望有的行为.尽管我们这里有一个简单的修复程序(或至少是解决方法),没有任何明显的副作用,但他强烈建议通过硬修补该修补程序并将修补程序发布到上游来扩展相关代码,希望在将来的某个时候被接受.实际上,我们针对针对每个新版本自动应用的几个软件包的特定版本维护补丁.主要观点是,这是正确的做法,而不是“丑陋"的解决方法或脆弱的猴子补丁.另一方面,我 ..
发布时间:2020-04-27 04:00:47 其他开发

如果原始浏览器对象已更改,如何获取原始浏览器对象?

其实整个问题。一种反猴子补丁。如果原始对象(对象,数组,函数,字符串等)及其原型已更改\ expanded \ deleted,如何获取它们? 我现在看到的唯一选项 - 它是动态创建框架 - 拉出他的原生物体 - 动态移除框架。也许可以通过帮助Web Workers完成相同的工作。但是它们> 9,其中没有类DOM,并且它本身与动态帧相同。 框架示例 delete Object. ..
发布时间:2019-06-06 15:34:16 前端开发

是“猴子修补”吗?真的那么糟糕?

某些语言(如Ruby和JavaScript)具有开放类,允许您修改偶数核心类的接口,如数字,字符串,数组等。显然,这样做可能会使熟悉API的其他人感到困惑但是有充分的理由否则,请假设您正在添加到界面而不更改现有行为? 例如,添加一个 Array.map 实现到未实现ECMAScript第5版的Web浏览器(如果您不需要全部的jQuery)。或者你的Ruby数组可能会受益于使用“inject” ..
发布时间:2019-04-24 12:19:07 前端开发

为什么不赞成修改JavaScript对象的原型?

我在这里和那里发现了一些关于如何修改JavaScript对象原型的不满意的评论?我个人不知道这可能是一个什么问题。例如,扩展Array对象以获得map和include方法或创建更强大的Date方法? 解决方案 问题在于原型可以在几个地方修改。例如,一个库会将map方法添加到Array的原型中,并且您自己的代码将添加相同的但具有其他目的。因此,一个实现将被打破。 ..
发布时间:2019-01-25 18:22:37 前端开发

是否有可能在Java中进行猴子修补,如果没有替代方案?

这是8年前在这里被问到的然后8年过去了。我想再次问这个问题,看看是否有人开发了一个猴子修补的框架,工具或库。 基本上我需要的是一个java应用程序,我应用了自己的补丁。由于这个项目由另一个团队维护,我希望能够保留/应用我制作的任何补丁,以及他们制作的补丁。 解决方案 这里有许多可能适用的技术,但你的问题太模糊了,不能将它们缩小到一个答案。 “猴子修补”在字面意义上表示它在Rub ..
发布时间:2019-01-02 15:50:18 Java开发

是否有可能在Java中修补补丁?

我不想讨论这种方法的优点,只要有可能。我相信答案是“不”。但也许有人会让我感到惊讶! 想象一下你有一个核心小部件类。它有一个方法 calculateHeight(),它返回一个高度。高度太大 - 这导致按钮(比如说)太大了。您可以扩展DefaultWidget来创建自己的NiceWidget,并实现自己的 calculateHeight()以返回更好的大小。 现在一个库类WindowD ..
发布时间:2018-12-05 11:39:33 Java开发

在python中将基类添加到现有对象

我有几个不同类型的对象(不同的函数名称,不同的签名),我将它们修改为具有从不同函数访问它们的通用方法。简而言之,有一个调度程序可以获取我想要修补的对象,并根据它调用不同修补程序的对象类型。修补程序将向对象添加方法: def patcher_of_some_type(object): def target(自我,价值): #做某事并调用自我方法 object.target = t ..
发布时间:2018-08-03 15:29:09 Python

如何在Python中的单元测试场景中模拟HTTP请求

我想为我所有与HTTP相关的测试都包含一个Web服务器。它不需要非常复杂。我宁愿不依赖在线。所以我可以测试一下我的程序的一些选项。 启动服务器 使用适当的mime类型创建一些资源(URI),响应代码等等。 运行测试(最好不要为每个测试启动服务器)。 关闭服务器。 此代码的任何提示都会有所帮助。我用BaseHTTPServer尝试了一些但尚未成功的东西。 nosetests命令似乎 ..
发布时间:2018-07-09 14:37:33 Python

扩展程序上的Chrome扩展程序?

有可能,即使以一种诡异的方式,为现有的扩展程序制作Chrome扩展程序?或者为了修补现有的扩展? 我希望对非开源的chrome扩展做一些简单的可用性更改。 chrome-extension:// 地址的其他扩展程序的内部页面工具栏弹出,页面动作弹出,选项页面,背景页面),也不访问其他扩展的内容脚本。它不期望来自另一个扩展的外部连接)是当其他扩展依赖于DOM时事件和消息,这是它的程度。 ..

是否有可能取代(monkeypatch)PHP函数?

您可以在Python中执行此操作,但是可以在PHP中执行吗? >>> def a():print 1 ... >>> def a():print 2 ... >>> a() 2 例如: 致命错误:无法在第1行中重新声明/ tmp /中的var_dump() 解决方案 最近,我只想指出,自 ..
发布时间:2018-04-17 09:50:13 PHP

在测试过程中,如何在Django的模型中修改装饰器?

我的模型中有一个 @memoize 装饰器,它缓存了模型本身的一些细节,以便在多次调用时(特别是在模板中)避免多个数据库调用。但是,由于我存储对象并在测试中引用它们,所以这会打破事情。 例如,如果我执行 mygroup.subscribers ,添加一个订阅者再次尝试一次,它将返回不正确的订阅者数量,因为它被记住了。 decorator从我的tests.py中做什么?我没有找到干净的方 ..
发布时间:2017-05-30 03:51:03 Python

Django在“完全加载”之后如何运行任意代码

我需要在Django环境“完全加载”后执行一些相当简单的任务。 更具体地说,我需要做一些例如 Signal.disconnect()一些由我的第三方库默认设置的Django信号, connect 我自己的信号,我需要做一些“猴子补丁”,从另一个图书馆向一些Django模型添加便利功能。 我已经在我的Django应用程序的 __ init __。py 文件中执行此操作,这似乎可以适用于猴 ..
发布时间:2017-05-29 21:28:19 Python