小编Zac*_*ith的帖子

附加到 $PATH 与使用别名:哪个更好?

至少在某些情况下,别名和添加 $PATH 位置可以互换使用。例如,查看 python 工具couchapp,我需要为可执行文件添加别名(如这里有用的描述)或通过 $PATH 使可执行文件可用。

这些是可以实现这一目标的两条线:

alias couchapp="~/Library/Python/2.7/bin/couchapp"
Run Code Online (Sandbox Code Playgroud)

或者

export PATH=$PATH:~/Library/Python/2.7/bin/
Run Code Online (Sandbox Code Playgroud)

这两者是否有非常明确的“更好”选择?为什么或者为什么不?

bash alias path .bash-profile

6
推荐指数
1
解决办法
2638
查看次数

作为参数传递的函数总是回调吗?JavaScript

如果我有下面的代码,我将两个函数作为参数传递给 function sayHi,这是回调的示例吗?

我注意到有两种运行这些“参数函数”的方法:要么如下所示,我们在定义它们的地方调用函数(作为参数),要么在 sayHi 函数中调用参数。这是回调函数和匿名函数之间的区别吗?

function sayHi(name, testForTrue) {
    if (testForTrue == true) {
        console.log(name);
    }
}

sayHi(function() {
    return 'Zach'
}(), function() {
    return true;
}());
Run Code Online (Sandbox Code Playgroud)

我可以获得相同结果的另一种方法如下。在这种情况下,我在不同的时间评估函数?两者之间有什么实际区别吗?

function sayHi(name, testForTrue) {
    if (testForTrue() == true) {
        console.log(name());
    }
}

sayHi(function() {
    return 'Zach'
}, function() {
    return true;
});
Run Code Online (Sandbox Code Playgroud)

javascript callback anonymous-function

5
推荐指数
1
解决办法
1028
查看次数

Javascript:点击元素一百万次的最快方法是什么

我正在做一个有趣的编码挑战,我在聚会上发现(doyouevendev.org)

在元素上产生一百万次点击的最快方法是什么?编码挑战似乎以检查员为中心,我觉得这是值得的.

我的代码(我在chrome命令行中执行):

var item = document.getElementsByClassName("clicky-button pulse");
var item = item[0];
count = 0;
(function clickIt() {
    count += 1
    setInterval(function changeClicks() {
        item.click();
    }, 1);
    if (count <= 50) {
        clickIt();
    };
})();
Run Code Online (Sandbox Code Playgroud)

我怀疑有更好的方法......它实际上似乎在放慢速度......

javascript

5
推荐指数
2
解决办法
815
查看次数

就JavaScript promise和C#asyc-await而言,什么是状态机?

我目前正在async-await使用C#进行浏览,并且注意到与JavaScript Promise的相似之处。对此进行研究,我发现JavaScript也将支持async-await语句,并且此语句和promise之间有相似之处(例如,请参见此博客文章)。

一时兴起,我想知道JavaScript的实现async-await是什么,并发现了这个问题(Java等效于C#async / await?)。

公认的答案表明async-await(并且扩展,我想是,诺言)是“状态机”的实现。

问题:在承诺方面,“状态机”是什么意思,JavaScript承诺是否可以与C#媲美async-await

javascript c# promise async-await

5
推荐指数
1
解决办法
939
查看次数

如何记录来自 WCF 请求的传入和传出 XML

我有一个托管在控制台应用程序中的基本 WCF 和一个基本控制台 WCF 客户端。您如何查看两个应用程序之间(通过本地主机)发送的请求?

我应该使用“Wireshark”之类的东西,还是可以在 Visual Studio 中注销传入和传出的响应对象?

我已经log.svclog通过 App.config 文件中的 system.diagnostics 指令创建了一个文件,但找不到实际的请求和响应 xml:

<diagnostics>
  <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
      <listeners>
        <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\log\log.svclog" />
      </listeners>
    </source>
  </sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

我从 Stack Overflow 得到的(我不记得在哪里)

wcf logging

5
推荐指数
1
解决办法
7951
查看次数

在 node.js 中为数组创建自定义迭代器有什么意义吗?

我需要解析一个 80GB+ 的 CSV 文件,并认为这是一个很好的机会来理解 JavaScript 中的迭代器(然后可能使用现有的库,如csv-iteratorfast-csv等)。

查看 MDN HERE上的迭代器示例,我看到以下代码:

function makeIterator(array) {
    var nextIndex = 0;

    return {
       next: function() {
           return nextIndex < array.length ?
               {value: array[nextIndex++], done: false} :
               {done: true};
       }
    };
}
Run Code Online (Sandbox Code Playgroud)

这是不言自明的。我可以为数组创建一个迭代器:

var iteratorForMyArray = makeIterator([1,2,3,4,5,6,7,8,9, etc])
Run Code Online (Sandbox Code Playgroud)

然后我可以使用我闪亮的新迭代器“迭代地”提取数组的值:

var val0 = iteratorForMyArray.next().value
var val1 = iteratorForMyArray.next().value
etc
Run Code Online (Sandbox Code Playgroud)

我可以理解为什么这在解析 CSV 文件时很有用。我想知道为简单数组创建这样的迭代器是否有任何意义?

我经常发现,虽然简化的示例对理解很有用,但有时很难看出示例何时仅作为示例有用,而实际上在编程中有用。

因为 JavaScript 已经提供了 2 种机制来在数组结构上创建迭代器:

1:基本for循环

for (let i = 0, i < [1,2,3,4,etc]; i++) { …
Run Code Online (Sandbox Code Playgroud)

javascript iterator

5
推荐指数
1
解决办法
670
查看次数

就JavaScript引擎而言,实现原型委派而不是基于类的继承是否有好处?

用类来看现代JavaScript,我的理解是这就是覆盖ECMAScript2015之前使用的基于原型的对象模型的所有语法糖.我喜欢直接使用原型链,但是类更容易.

所以在我看来,在JavaScript中,程序很可能都是根据基于类的语法指定的,但可能会根据prototype-objects的规则执行.因此,总是需要在JavaScript的编写方式和执行方式之间进行某种转换.

无论JavaScript是如何通过浏览器和其他引擎实现的,我的问题是:

从编写JavaScript引擎的角度来看,在原型委派而不是类中实现面向对象语言是否有性能或其他好处?

====编辑

一个类似的问题(基于原型的语言的隐藏类实现)有一些注释,表明传统意义上的类更容易在编译器级别实现,因为它们可以在内存中静态布局(我认为这无论如何都是隐含的),但是这不允许动态结构,如JavaScript允许.所以在我看来,原型委托可能适合在编译器级实现动态对象?

javascript

5
推荐指数
1
解决办法
75
查看次数

为什么我不能将我的 .git 文件夹复制到我的 docker 容器中

我们有一个 node.js/typescript 项目,现在我应该为我们的声纳分析提供数据。

我们使用 docker 容器来运行我们的测试,在测试完成后,我们正在运行声纳分析,以便我们可以使用测试中的代码覆盖率报告。

唯一的问题是,缺少责备信息。这就是为什么我试图将 .git 文件夹复制到 docker 容器中,但到目前为止我没有成功。这是我的 Dockerfile 的内容。

FROM node:11.6-alpine
RUN apk --update add openjdk8-jre

WORKDIR /dist

COPY package*.json ./

RUN npm install

COPY src/ ./src/
COPY test/ ./test/
COPY ts*.json ./
COPY sonar-project.properties ./
COPY test.sh /
COPY .git/ ./

RUN chmod +x /test.sh

CMD ["sh", "/test.sh"]
Run Code Online (Sandbox Code Playgroud)

我读过,.dockerignore 文件可用于排除文件或文件夹,但我们没有使用这样的文件,我也尝试创建一个只包含 node_modules 的文件,但这也不起作用。

有没有人知道如何包含它或任何提示谷歌的内容?我只找到“如何从 docker 容器中排除 .git”,但到目前为止恢复这些提示并没有帮助。

编辑:为了使它更陌生,使用COPY . ./将 .git 文件夹包含到图像中。

copy docker

5
推荐指数
1
解决办法
4150
查看次数

为什么在不同作用域中用相同名称声明的变量被分配了相同的内存地址?

我知道char[]看过这篇文章:在C中重新声明变量是在while循环中声明变量的范围。

通过学习有关在中创建简单Web服务器的教程C,我发现我必须手动清除responseData在下面的示例中分配的内存,否则,的内容将index.html被连续地追加到响应中,并且响应中包含来自index.html以下内容的重复内容:

while (1)
{
  int clientSocket = accept(serverSocket, NULL, NULL);
  char httpResponse[8000] = "HTTP/1.1 200 OK\r\n\n";
  FILE *htmlData = fopen("index.html", "r");
  char line[100];
  char responseData[8000];
  while(fgets(line, 100, htmlData) != 0)
  {
      strcat(responseData, line);
  }
  strcat(httpResponse, responseData);
  send(clientSocket, httpResponse, sizeof(httpResponse), 0);
  close(clientSocket);
}
Run Code Online (Sandbox Code Playgroud)

更正依据:

while (1)
{
  ...
  char responseData[8000];
  memset(responseData, 0, strlen(responseData));
  ...
}
Run Code Online (Sandbox Code Playgroud)

来自JavaScript,这令人惊讶。为什么我要声明一个变量并可以访问在相同名称的不同范围中声明的变量的内存内容?为什么不C只是在后台重置内存?

另外...为什么在不同作用域中声明的同名变量被分配相同的内存地址?

根据这个问题:交替声明的变量具有与 ISN情况相同的内存地址模式。但是,我发现这种情况确实可靠。

c

5
推荐指数
2
解决办法
294
查看次数

如何防止 GitHub 操作工作流被分叉的存储库事件触发?

我最近突然想到,on pull_request如果你有一个公共存储库,任何人都可以触发 GitHub 操作的事件。

IE:

  1. 有人克隆了我的存储库
  2. 他们将一个something.yml文件添加到.github/workflowspull_request事件上运行的文件
  3. 他们创建了一个拉取请求

然后运行他们在拉取请求中指定的操作。如果您有自托管运行器,那么实际上地球上的任何人都可以在自托管运行器用户的上下文中在您的服务器上运行 shell 命令。

如果这像我认为的那样工作,那么地球上的任何人都可以通过拉取请求在您的服务器上运行任意代码。我试过这个,似乎是这样。

如何将可以在存储库上触发的操作列入白名单?否则,我如何安全地将 Github Actions 与公共存储库和自托管运行器一起使用。我已经看到了警告......我只是假设我必须小心不要接受来自未知来源的拉取请求。

github-actions

5
推荐指数
1
解决办法
733
查看次数