我想知道是否有本地方式这样做:
Object.prototype.chain = function(f) { return f.call(this) }
function fun1() {
doSomethingWithObject(this)
return this
}
function fun2() {
doSomethingElse(this)
return this
}
someObject
.method1('something')
.method2()
.chain(checkSomething() ? fun1 : fun2)
.method3()
Run Code Online (Sandbox Code Playgroud)
但我不想改变原型Object.有没有办法在不修改Objects我使用的原型或其他构造函数的情况下执行此操作(并且不是开发人员)
编辑:
我觉得我没解释得很好,所以让我们添加一些细节:
我想做的是使用一些我没有定义的API.someObject使用可链接方法定义如下:
var someObject = {
method1: function(val) {
// do something
return this
},
method2: function() {
// do something
return this
},
method3: function() {
// do something
return this
}
}
Run Code Online (Sandbox Code Playgroud)
现在假设我无法更改此代码,因为此对象来自库,因此我不想这样做.然后,假设我想链接方法和一些自定义函数(请参阅我的第一个代码段)以获取更多不同的对象.最简单的chain方法是附加一个方法Object.prototype.
但我认为它可能导致未来的冲突.我正在寻找一种方法来做同样的事情而不触及原型.
我试图用AngularJS渲染一些SVG,但我无法动态更改svg元素的视图框.
Angular呈现"viewbox"属性,但浏览器需要"viewBox"属性.结果是:
<svg height="151px" width="1366px" viewBox="{{ mapViewbox }}" viewbox="-183 425 1366 151">
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到我期望的结果:
<svg height="151px" width="1366px" viewBox="-183 425 1366 151">
Run Code Online (Sandbox Code Playgroud)
谢谢.
我想知道Haskell中最标准的方法是什么.
第一个明确指出我们需要两个参数(大多数时候).
第二个涉及id第二个子句中的函数call(),因此效率较低,因为在第一个实现中我们可以简单地返回第二个参数.
所以我倾向于认为第一个更好,应该是一个选择:更容易阅读和弄清楚它做什么[1],以及函数调用保存.
但我是Haskell的新手,也许编译器会优化这个额外的调用.
xor :: Bool -> Bool -> Bool
xor True x = not x
xor False x = x
xor True = not
xor False = id
Run Code Online (Sandbox Code Playgroud)
此外,我想知道我是否可以用False那里的通配符替换它们.
那么,Haskell的好习惯是什么呢?也许另一个实现?
[1]我们在那里省略它是一个众所周知的函数,让我们想象它是一个非平凡的函数.
谢谢
以下是Phoenix应用程序示例的路由器模块.我想在宏注入函数后看到模块的完整代码.
我尝试了类似的东西,Macro.to_string (Macro.expand (Code.string_to_quoted! File.read!("web/router.ex")), __ENV__)但它没有完全扩展宏.我怎么能递归扩展每个宏,即pipeline,plug,scope,pipe_through和get.
谢谢
defmodule HelloPhoenix.Router do
use HelloPhoenix.Web, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", HelloPhoenix do
pipe_through :browser # Use the default browser stack
get "/", PageController, :index
end
end
Run Code Online (Sandbox Code Playgroud) 我们的测试套件需要 5 分钟才能运行(主要是因为我认为在每次测试之前都设置了 Kafka 容器)。
当运行mvn quarkus:dev和处理测试时,我不知道如何仅重新运行一个测试,即我正在处理的测试。
如果我的测试被破坏了,并且是唯一被破坏的,那也没关系。但是一旦它变成绿色,如果我更改测试代码,quarkus将不会再次运行它。如果我要进行重大更改,quarkus 将运行所有损坏的测试,并且我无法清楚地跟踪我正在进行的测试的结果。
我可以用来mvn verify运行单个测试,但是编译时间和应用程序启动时间使其变得太无聊并且破坏了思维流程。
我怎样才能告诉 quarkus 在运行时只运行一些特定的测试?
我的目标是创建一个玩家可以设置建筑物的浏览器游戏.
每栋建筑都有几个模块(发动机,办公室,生产线......).每个模块将一直运行一个或多个动作,例如用成分Y,Z创建2OO'项目X'.
游戏服务器将使用erlang进行设置:OTP应用程序作为服务器本身,氮气作为Web前端.我需要持久化数据.我在考虑以下问题:
当某人或某物与建筑物相互作用,或者代表某条生产线的计时器结束时,主管会产生gen_server(如果尚未生成),它会从数据库中加载建筑物的状态,因此gen_server可以回答"添加"等消息这个模块','开始这个动作','将这个生产存储到仓库','死'等等(
但是当建筑物在X秒或分钟内没有收到任何消息时,他将终止(由于gen_server超时功能)并将其当前状态丢弃回数据库.
因此,因为它将是一个(软)实时游戏,所以必须非常快速地设置gen_server.我认为membase是数据库,因为它已知具有非常好的响应时间.
我的问题是:当一个gen服务器正在运行时,他的状态会填充一些内存,并且这个状态也存在于membase处理的内存中,因此状态在内存中使用了两倍.这是一个糟糕的设计吗?
在我的情况下,membase是处理持久性的好方法吗?将mnesia用作更好的选择,还是其他什么?
我担心mnesia 2 Go(或4?)表格大小限制,因为我目前不知道我的gen_servers的平均状态大小(在这个例子中的建筑物,但也包括玩家,生产线,等等)我可能有一天比1名球员:)
谢谢
如果我编写了一些 erlang 代码来构建一个监督树,然后使用以下命令在引导时启动应用程序,可能很难找出为什么它不起作用:
erl -s myapp -pa ebin ... ...
Run Code Online (Sandbox Code Playgroud)
(myapp 示例模块)
-module(myapp).
-export([start/0]).
start() -> application:start(myapp).
Run Code Online (Sandbox Code Playgroud)
假设我的应用程序启动了一个主管 myapp_sup。myapp_sup 轮流启动几个主管(假设 server_sup、database_sup、another_sup)。
这些主管将启动一些 gen_servers。
在某些时候,如果我的代码中有错误,我找不到它!
我在某个 gen_server 的 init 回调中写了一个对 somemodule:functionthatdoesntexists() 的调用。
所有 vm 说的是“init 在 do boot 中终止”,然后显示错误匹配的错误位置,精确文件和我的顶级模块 (myapp) 的行。
(不匹配,因为 ok = application:start(...) 将不匹配)。
我查看了 erl_crash.dump 文件,没有关于这个未定义函数的信息(但我在原子列表中找到了它)。
所以,我写了一些日志来大致查看错误在哪里,但是我必须手动启动我的 gen_servers 以获取正确的错误信息。
我错过了什么,我怎么能更快地弄清楚?
谢谢
WHERE 1=1如果您使用脚本(伪代码)编写此请求,会有什么影响:
sql = "SELECT f1,f2,f3 FROM t
WHERE 1=1" ++ restOfTheClause
Run Code Online (Sandbox Code Playgroud)
在哪里restOfTheClause可以是与串联的字段名称/运算符/值的列表AND:
restOfTheClause = [('f4','>',5), ('f5','IN(1,2,3)'), ('f10','=',1)].map(writeWherePart).join(' AND ')
编写WHERE 1=1允许编写更简单的代码,因为您不必检查自己restOfTheClause是否为空等。
此子句对性能有什么影响?有WHERE 1=1和根本没有where子句有什么区别?
我从事Oracle工作已有几个月了,我发现我不得不提出,WHERE 1=1但其他RDBMS接受了WHERE true。作为=运算符,在使用哑子句时oracle和其他RDBMS之间是否存在性能差异?
谢谢
假设我有一个从模块导出的功能,但模块多次使用该功能.
所以我写了一个别名,因为我在编码时很懒.
-export([get_toolkit/0]).
get_toolkit() ->
... code ... code ...
... code ... code ...
... code ... code ...
{ok, Thing}.
tk() -> get_toolkit().
Run Code Online (Sandbox Code Playgroud)
编译器是否优化了别名?
谢谢
我有这些类别:
var IMCcat = [
{color:'#F43E3E',min:40,max:200,name:'obésité morbide ou massive'},
{color:'#F4B4B4',min:35,max:40,name:'obésité sévère'},
{color:'#FAE9CA',min:30,max:35,name:'obésité modérée'},
{color:'#FFFFD4',min:25,max:30,name:'surpoids'},
{color:'#E9FFDA',min:18.5,max:25,name:'corpulence normale'},
{color:'#FFFFD4',min:16.5,max:18.5,name:'maigreur'},
{color:'#F43E3E',min:0,max:16.5,name:'famine'}
];
Run Code Online (Sandbox Code Playgroud)
(这些是身体质量指数 (BMI),但在法语 (IMC))
如您所见,我的域从 0 到 200,但不同的类别具有不同的宽度。
我想用 d3 定义一个比例,域是 BMI 和范围,颜色。颜色是离散值,但域是连续的。
我需要为秤提供权重,并获得相对颜色。如果提供重量,我会得到包含颜色和名称的对象(以及最小和最大但无用),那就更好了。
如果你想尝试,这里是 BMI 函数:
function BMI(weight) {
return weight / (height * height);
}
Run Code Online (Sandbox Code Playgroud)
由于范围重叠,我如何设置排除或包含最小值,而最大值相反?
谢谢
如果体重秤是体重指数,而不是体重,那也没关系。我会将我的比例包装在一个进行转换的函数中。
erlang ×3
javascript ×2
optimization ×2
angularjs ×1
compilation ×1
d3.js ×1
debugging ×1
elixir ×1
erlang-otp ×1
erlang-shell ×1
erlangweb ×1
haskell ×1
membase ×1
performance ×1
persistence ×1
quarkus ×1
sql ×1
svg ×1