我创建了一个存储库,其中包含基于 Node.js和基于Rocket.rs 的Web 服务器。
考虑以下步骤:
cargo run --releasenode server.js我也用 actix-web 观察到类似的事情,但程度较小:在这种情况下,如果我没有刷新选项卡大约 5 秒,我只会得到大约 300 毫秒的延迟。如果我不断刷新它,那么请求会在 5 毫秒内完成。
有趣的是,延迟似乎如果我通过像袅袅衡量不会出现这种与此。我的两台服务器都有大约 4 毫秒的延迟。
我注意到 Rocket 和 actix-web 不会在他们的响应中发送 Keep-Alive 标头。如果我理解正确,这对于 HTTP 1.1 请求应该无关紧要。
我正在使用安装了 Ubuntu 的 WSL 2。Chrome 在主机 Windows 中运行。
有人可以解释一下这里发生了什么吗?
更新:忘了说我是使用夜间编译器来构建火箭服务器的(Rocket v0.4.6 似乎需要它)。直接从主分支更改为稳定和构建摆脱了延迟。尽管如此,actix-web 延迟仍然有点令人担忧,因为我使用了稳定的编译器。
我需要扩展iframe以使其更大(我无法控制iframe内容的源代码).我试图通过-webkit-transform: scale(1.3)CSS属性实现它.
iframe的内容是按比例放大的,但是当我尝试触摸iframe中的任何控件时,似乎触摸事件正在错误的位置被接收(我可以看到控件的"阴影"在触摸错误的地方).因此事件处理程序不起作用(我怀疑它们没有被调用,因为在错误的位置检测到触摸).有人遇到过这个问题吗?可以解决吗?
我创建了一个产生问题的测试用例(在iPad Safari中试用):http://jsfiddle.net/9vem2/
源代码更易读:
父页面(iframe的容器):
<!DOCTYPE html>
<html>
<head>
<title>Parent</title>
<style type="text/css">
iframe
{
left: 200px;
-webkit-transform: scale(1.3);
}
</style>
</head>
<body>
<h2>Parent</h2>
<iframe src="child.html"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
子页面(iframe内容):
<!DOCTYPE html>
<html>
<head>
<title>Child</title>
</head>
<body>
<h2>Child</h2>
<input type="text"></input>
<button onclick="alert('hello');">Button</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我需要这个,因为超类中的构造函数正在调用在子类中重写的方法.该方法返回一个传递给子类构造函数的值.但必须在子类构造函数之前调用超类构造函数,因此我没有机会保存传入的值.
这个决定背后的特殊原因是什么?由于.csproj文件具有XML格式,因此它让我更加困惑.
在本教程中,我发现了以下代码段:
deposit :: (Num a) => a -> a -> Maybe a
deposit value account = Just (account + value)
withdraw :: (Num a,Ord a) => a -> a -> Maybe a
withdraw value account = if (account < value)
then Nothing
else Just (account - value)
eligible :: (Num a, Ord a) => a -> Maybe Bool
eligible account =
deposit 100 account >>=
withdraw 200 >>=
deposit 100 >>=
withdraw 300 >>=
deposit 1000 >>
return …Run Code Online (Sandbox Code Playgroud) 我有一个glutSolidTeapot(根据opengl.org自动生成表面法线)和一个发射漫射光的光源.当我尝试旋转茶壶时出现问题:似乎光源也在进行旋转,而不是保持在我定义的相同位置(它基本上跟随茶壶).正如你在我的代码中看到的那样,我只在初始化时修改了光照位置,所以它不受glRotatef()的影响,因为它在设置光位置后被调用.
尽管花了很多时间试图解决这个问题,我真的不知道这种行为可归因于什么.
粘贴glEnable(GL_NORMALIZE); 在初始化中也没有解决问题.
我认为所需的输出应该是一个带有光泽右侧的茶壶(因为光线来自那个方向),无论茶壶旋转的角度是多少.
如果要测试我的代码,请按空格键旋转茶壶.
#include <math.h>
#include <stdlib.h>
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
#include <windows.h>
#endif
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
void onInitialization( ) { //creating the light source
glEnable(GL_LIGHTING);
glEnable(GL_DEPTH_TEST);
GLfloat diffuse[]={0.8, 0.8, 0.8, 1.0};
GLfloat pos[]={0.5, 0.0, 0.8, 0.0};
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glEnable(GL_LIGHT0);
glRotatef(-90, 1, 0, 0); //we want to see the top of the teapot
}
void onDisplay( ) {
glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | …Run Code Online (Sandbox Code Playgroud) 我只能在没有新按下的键的情况下检索值.使用keyup事件不是一个选项,因为如果用户没有释放密钥,它就不会触发.这很重要,因为我想对每一个按键动作.
与从事件的参数可达键代码结合旧的价值是不能接受要么,因为它不能保证用户将键入的文本字符串的结尾.
我保持Process Explorer打开并检查firefox.exe进程的"Private Bytes"列.在此示例中按"添加"按钮后:
<script id="tmplComment" type="text/x-jquery-tmpl">
<div>
<span>Comment: </span>
<span data-bind="text: $data"></span>
</div>
</script>
<input type="button" id="btnAdd" value="Add"/>
<div id="Content" data-bind="template: {name: 'tmplComment', foreach: Comments}">
</div>
Run Code Online (Sandbox Code Playgroud)
使用此代码:
var vm = {Comments: ko.observableArray(["a", "b"])};
ko.applyBindings(vm);
$("#btnAdd").click(function()
{
for(var i = 0; i<500; i++)
vm.Comments.push(i.toString());
});
Run Code Online (Sandbox Code Playgroud)
(也看到这个jsfiddle)
我觉得Firefox使用的私有字节增加了大约50-100 MByte.
在我将它与缺乏依赖性跟踪的实现进行比较时,执行时间也相当长,给出了这个例子:
<script id="tmplComment" type="text/x-jquery-tmpl">
<div>
<span>Comment: </span>
<span data-bind="text: $data"></span>
</div>
</script>
<input type="button" id="btnAdd" value="Add"/>
<div id="Content" data-bind="template: {name: 'tmplComment', foreach: Comments}">
</div>
Run Code Online (Sandbox Code Playgroud)
使用此代码:
var vm = {Comments: ko.observableArray(["a", "b"])};
ko.applyBindings(vm);
$("#btnAdd").click(function() …Run Code Online (Sandbox Code Playgroud) 我已经根据本教程创建了下面的代码片段.最后两行(feed_squid(FeederRP)和feed_red_panda(FeederSquid))显然违反了定义的约束,但Dialyzer发现它们没问题.这是非常令人失望的,因为这正是我想要使用执行静态分析的工具捕获的错误类型.
教程中提供了解释:
在使用错误的馈线调用函数之前,首先使用正确的类型调用它们.从R15B01开始,Dialyzer不会在此代码中发现错误.观察到的行为是,只要对函数体内的给定函数的调用成功,Dialyzer就会忽略同一代码单元中的后续错误.
这种行为的理由是什么?我理解成功打字背后的哲学是"从不哭狼",但在目前的情况下,Dialyzer明显地忽略了故意定义的函数规范(在它看到之前已正确调用函数之后).我知道代码不会导致运行时崩溃.我可以以某种方式迫使Dialyzer始终认真对待我的功能规格吗?如果没有,是否有可以做到的工具?
-module(zoo).
-export([main/0]).
-type red_panda() :: bamboo | birds | eggs | berries.
-type squid() :: sperm_whale.
-type food(A) :: fun(() -> A).
-spec feeder(red_panda) -> food(red_panda());
(squid) -> food(squid()).
feeder(red_panda) ->
fun() ->
element(random:uniform(4), {bamboo, birds, eggs, berries})
end;
feeder(squid) ->
fun() -> sperm_whale end.
-spec feed_red_panda(food(red_panda())) -> red_panda().
feed_red_panda(Generator) ->
Food = Generator(),
io:format("feeding ~p to the red panda~n", [Food]),
Food.
-spec feed_squid(food(squid())) -> squid().
feed_squid(Generator) ->
Food = …Run Code Online (Sandbox Code Playgroud)