小编lam*_*kie的帖子

持续集成与持续交付与持续部署

这三个术语有什么区别?我的大学提供以下定义:

持续集成基本上只意味着开发人员的工作副本每天都会与共享主线同步几次.

持续交付被描述为持续集成的逻辑演变:始终能够将产品投入生产!

持续部署被描述为持续交付后的逻辑下一步:每当通过QA时自动将产品部署到生产中!

它们还提供警告:如果您能够连续部署到测试系统,有时也会使用术语"持续部署".

所有这些让我感到困惑.任何更详细的解释(或附带一个例子)是值得赞赏的!

continuous-integration continuous-deployment continuous-delivery

348
推荐指数
7
解决办法
13万
查看次数

ESLint 如何集成到 Create React App 中?

当我运行 时npx create-react-app ...,正在为我创建一个简单的 React 项目。然后当我查看 时package.json,似乎有一些 ESLint 存在的证据,因为有这样的:

"eslintConfig": {
  "extends": "react-app"
},
Run Code Online (Sandbox Code Playgroud)

然而,每当我将 ESLint 作为开发依赖项安装并配置它时——就像我通常所做的那样——,VS Code 似乎会选择它。在这种情况下,VS Code 似乎没有意识到存在/配置了任何类型的 linter。这并不奇怪,因为 ESLint 不是我刚刚生成的 React 项目的依赖项——至少不是根据package.json. 当我尝试eslint .在项目的根目录中运行时,它显示“找不到命令”。

我试图通过扩展它来为这个 ESLint 配置注入活力,所以现在我有了:

"eslintConfig": {
  "extends": ["react-app", "eslint:recommended", "google"],
  "rules": {
    "semi": ["error", "always"],
    "quotes": ["error", "double"]
   }
},
Run Code Online (Sandbox Code Playgroud)

这没有任何改变。我以一种我知道它违反上述配置的方式操作源代码,但是,我没有收到任何不法行为的信号。

这让我想到一个简单的问题: 生成的项目是否create-react-app带有某种 ESLint 配置,如果是,我该如何正确启用和扩展它?

当我提到在搜索“create react app eslint”时出现的排名第一的谷歌点击- 我显然已经阅读过 - 让我澄清我的意思:

ESLint 显然是以一种不同的方式集成到 Create React App 中,而不是像这样 …

javascript reactjs eslint visual-studio-code create-react-app

71
推荐指数
3
解决办法
3万
查看次数

Node.js在Sublime Text 2中构建系统

我开始学习JavaScript了.在这样做时,我厌倦了将我的JavaScript代码嵌入到HTML文档中,以便在浏览器中运行它.我认为在Sublime的控制台中运行我的脚本会很好,所以我不必离开编辑器.因此我试图创建一个JavaScript构建系统,因为Sublime没有附带.

我的想法是使用Node.js作为JavaScript解释器.我用Linux Mint的包管理器安装它.据我所知它运作得很好.假设我有一个包含以下JavaScript代码行的test.js文件:

console.log("Hello World");

我跑的时候

nodejs /path/to/test.js
在我的控制台中,我得到:
Hello World
但是,我不认为这与Sublime一起使用.我通过单击工具/构建系统/新构建系统创建了一个新的构建系统.然后我键入以下行:
{
    "cmd": ["nodejs", "$file"]
}
据我所知,这一行是以下命令的JSON表示:
nodejs /path/to/current/file.ext
就像我说的,如果我在控制台中手动运行它,它的工作正常.如果我在Sublime中按F7,这是Build的快捷方式,Sublime的控制台就会显示出来.虽然它是空的.

还有一件奇怪的事情.即使Sublime控制台的(不存在的)输出指示构建系统未配置为正确使用Node.js,我在意外尝试运行非JS文件时显示了一些Node.js错误,例如Node.sublime-build文件.这是Sublime控制台中显示的输出:

/home/baerenfaenger/.config/sublime-text-2/Packages/User/Node.sublime-build:2
    "cmd": ["nodejs", "$file"]
      ^

module.js:434 var compiledWrapper = runInThisContext(wrapper, filename, true); ^ SyntaxError: Unexpected token : at Module._compile (module.js:434:25) at Object..js (module.js:464:10) at Module.load (module.js:353:32) at Function._load (module.js:311:12) at Array.0 (module.js:484:10) at EventEmitter._tickCallback (node.js:190:39) [Finished in 0.1s with exit code 1]

那么为什么在执行实际的JavaScript代码时我没有得到任何输出?先感谢您!

javascript node.js sublimetext2

29
推荐指数
3
解决办法
6万
查看次数

OpenCL:工作项,处理元素,NDRange

我的同学和我第一次面对OpenCL.正如所料,我们遇到了一些问题.下面我总结了我们遇到的问题和我们找到的答案.但是,我们不确定我们是否做得好,所以如果你们能够看看我们的答案和他们下面的问题,那就太好了.

为什么我们不把它分成单个问题?

  1. 它们部分地相互关联.
  2. 我们认为这些是典型的初学者问题.那些同学谁,我们所有的咨询回复"嗯,我不明白无论是."

工作项与处理元素

在我见过的OpenCL大部分讲座中,他们使用相同的插图来介绍计算单元和处理元素以及工作组和工作项.这导致我的同学和我不断混淆这些概念.因此,我们现在提出了一个定义,强调处理元素与工作项非常不同的事实:

  • 工作项是正在执行的内核,而处理元素是表示实际执行计算的事物的抽象模型.工作项只是临时存在于软件中的东西,而处理元素则抽象出物理存在于硬件中的东西.但是,取决于硬件并因此取决于OpenCL实现,工作项可能被映射到由所谓的处理元素表示的某个硬件并由其执行.

问题1:这是正确的吗?有没有更好的方式表达这个?

NDRange

这就是我们如何看待NDRange的概念:

  • 那里的工作项数量由NDRange大小表示.通常,这也被称为全球规模.但是,NDRange可以是一维,二维或三维("ND"):
    • 一维问题是某些计算是线性向量.如果向量的大小为64并且有64个工作项来处理该向量,则NDRange大小等于64.
    • 二维问题是对图像的一些计算.在1024x768图像的情况下,NDRange大小Gx将是1024并且NDRange大小Gy将是768.这假设有1024x768个工作项来处理该图像的每个像素.NDRange大小则等于1024x768.
    • 三维示例将是对3D模型左右的一些计算.此外,还有NDRange尺寸Gz.

问题2:再次,这是正确的吗?

问题3:这些维度只是为了便利吗?可以简单地将图像的每个像素的颜色值存储在该尺寸的线性矢量中width * height.任何3D问题都是如此.

各个

问题4:我们被告知内核的执行(换句话说:工作项)可以使用barrier(CLK_LOCAL_MEM_FENCE);Understood 在工作组中同步.我们也(反复)被告知工作组无法同步.好的.但那么有什么用barrier(CLK_GLOBAL_MEM_FENCE);呢?

问题5:在我们的主机程序中,我们指定一个上下文,其中包含一个或多个来自其中一个可用平台的设备.但是,我们只能将内核排入所谓的命令队列中,该命令队列只链接到一个设备(必须在上下文中).同样:命令队列未链接到先前定义的上下文,而是链接到单个设备.对?

opencl n-dimensional

12
推荐指数
1
解决办法
6643
查看次数

关于阿卡和类型安全的一般问题

问题1:

JVM不了解泛型,因此Scala(和Java)中的类型参数仅在编译时存在.它们在运行时不存在.由于Akka是一个Scala(和Java)框架,它也有这个缺点.特别是因为在Akka中,演员之间的消息(显然)只在运行时交换,所以这些消息的所有类型参数都丢失了.到目前为止正确吗?

问题2:

假设我定义了以下带有一个类型参数的case类:

case class Event[T](t: T)
Run Code Online (Sandbox Code Playgroud)

现在,我实例化Event[Int](42)并发送给我testActor.我testActor基本上接受了一个Event[Any]并且不知道什么类型t是正确的吗?

问题3:

比如,在我的内部testActor存在一个也带有类型参数的函数:

def f[T](t: T) = println(t)
Run Code Online (Sandbox Code Playgroud)

收到时的testActor电话:fEvent

override def receive: Receive = {
  case Event(t) => f(t)
}
Run Code Online (Sandbox Code Playgroud)

到会出现什么类型参数Tf当函数被调用这样设置?Any?如果是这样,以下函数是否有效地等效于上述函数(假设它只会被调用,如上所述):

def f2(t: Any) = println(t)
Run Code Online (Sandbox Code Playgroud)

问题4:

现在,考虑以下定义f:

def f[T](t: T) = println(t.getClass)
Run Code Online (Sandbox Code Playgroud)

我没有更改呼叫站点:

override def receive: Receive = {
  case Event(t) => f(t)
}
Run Code Online (Sandbox Code Playgroud)

这不应该总是打印Any到控制台?当我发送 …

java jvm scala type-erasure akka

10
推荐指数
1
解决办法
906
查看次数

逻辑时钟:Lamport时间戳

我目前正在尝试了解Lamport时间戳.考虑两个过程P1(产生事件a1,a2,...)和P2(产生事件b1,b2,......).设C(e)表示与事件e相关的Lamport时间戳.我为维基百科关于Lamport时间戳的文章中描述的每个事件创建了时间戳:

在此输入图像描述

根据维基百科,以下关系适用于所有事件e1,e2:

如果e1发生在e2之前,那么C(e1)<C(e2).

我们来看看a1b2.显然a1发生在b2之前,并且由于 C(a1)= 1C(b2)= 3,因此关系成立:C(a1)<C(b2).

问题:对于b3a3,这种关系不适用.显然,b3发生在a3之前.但是,C(b3)= 4,C(a3)= 3.因此,C(B3)<C(A3),不能适用.

我误解了什么?非常感谢帮助!

messaging distributed timing clock distributed-system

8
推荐指数
3
解决办法
1728
查看次数

怎么样?在Racket工作?

在我的大学,我们不得不与Racket合作,因为我很喜欢它,我从No Starch购买了最近出版的书"Realm Of Racket".

到目前为止它很棒,但是,当他们试图解释eq时,我无法弄清楚它们在第4章中的含义是什么作品:

  1. 首先,他们解释了如何平等?比较两个值是否由相同的部分组成.好的,没问题,我明白了:平等?与Java的equals(someObject)方法完全相同.如果两个对象/结构/任何内容相同,则返回#t.
  2. 然后,我想,eq?必须等同于Java的==运算符,它不会按内容进行比较,而是基于引用.
  3. 这个想法似乎得到了书中的以下句子的证实:"eq?比较改变一个结构是否会改变其他结构......"太棒了!让我们将它与下面的Java代码进行比较:

    Point p1 = new Point(5, 5);
    Point p2 = p1;
    System.out.println(p1 == p2);   // true, since the reference has been copied.
    System.out.println(p1.x);       // 5
    System.out.println(p2.x);       // 5
    p1.x = 42;
    System.out.println(p1.x);       // 42
    System.out.println(p2.x);       // Accordingly, 42
    
    Run Code Online (Sandbox Code Playgroud)

    让我们在Racket中尝试一下:

    (define cons1 (cons 1 empty))
    (define cons2 cons1)
    (eq? cons1 cons2)           ;; #t, since the refernce has been …
    Run Code Online (Sandbox Code Playgroud)

lisp scheme racket

7
推荐指数
1
解决办法
637
查看次数

为什么要声明一个类型为array的参数?

根据" 将数组和数组指针传递到C中的函数之间的区别",这两种声明参数的方式之间没有语义差异,因为"数组参数被视为被声明为指针".

void f1(int a[]) { /* ... */ }
void f2(int* a)  { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

但是,处理数组和指针之间存在很大差异.例如,可以使用找出数组的大小sizeof(some_array).但是,在处理指针时,这只会显示指针本身的大小.(旁注:关于这个问题,是一个非常巧妙的解决方法.)

这就是为什么我发现声明这样的参数会产生误导:f1(int a[]).正如djechlin在" 数组和指针之间的差异作为函数在c中的参数 "中所指出的那样,我认为它可以让人们认为一个人实际上是在处理数组而不仅仅是指针:"因此我总是喜欢指针形式,因为阵列形式可能导致微妙的混乱."

话虽这么说,我想知道为什么人们继续使用"阵列形式",因为似乎没有理由这样做.我在这里错过了什么?在他的书" 学习艰难的道路"中,Zed Shaw实际上混合了两种方式:

void print_arguments(int argc, char *argv[]) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

他们也在K&R2中做到了.

为什么?我熟悉不这样做的原因,但有哪些优点呢?

c arrays pointers coding-style

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

如何为GitHub-Pages支持的网站实现基本的页面查看计数器?

我想使用GitHub Pages托管一个Jekyll博客。我已经购买了显示Web字体的许可证,每月最多可浏览50.000次。为了不违反此协议,我需要实现某种机制来统计页面浏览量,以便在达到50,000个页面浏览量时可以采取措施。

我脑子里有些复杂的想法。一方面,我正在考虑执行对某些AWS Lambda函数的调用,该函数计算每个页面视图的数量,如果数量太多,则采取措施。另一方面,我了解到MyFonts,Linotype和其他字体商店使用称为“现收现付”的许可模型来提供其某些Web字体,在这种情况下,他们确实要求客户使用页面浏览计数器它们提供了功能,以便每当达到某些配额时就可以连续充电。他们的客户通过链接到相应字体商店托管的唯一CSS文件,将这些页面视图计数器添加到其网站。

但是,由于我可能不是唯一需要处理的人,所以我想知道其他人如何解决这个问题。对于真正的页面浏览计数器,我的想法似乎有点过高。

有没有更简单的方法?通常如何做?

fonts webfonts hitcounter jekyll github-pages

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

"球拍领域"的奇怪代码示例

我目前正在阅读"Realet Of Racket"这本书,到目前为止我非常喜欢这本书.但是,在第7章1/2,第74页,有一个代码示例,我只是没有得到.也许我的思绪拒绝弄清楚,因为我正在度假,但是,我根本不知道它做了什么.

(define (winners lst pred)
  (cond
    [(empty? lst) (list pred)]
    [else
      (define fst (first lst))
      (if (score> (record-score pred) (record-score fst))
        (list pred)
        (cons pred (winners (rest lst) fst)))]))
Run Code Online (Sandbox Code Playgroud)

他们没有真正在书中解释它.但是他们提供了一些提示:

  • "该功能的目的是从游戏记录列表中选择第一名的终结者."
  • "我们有以下形状的结构定义:( struct record(name score)) "
  • " lst是这样的记录的列表,而pred就是这样的记录.事实上,原始列表是(cons pred lst),并且根据得分进行排序."
  • "你明白获胜者是一个吃饭的功能,并且一次只能记录一条记录.当至少有一条记录时,它会选择第一条记录,将其命名为fst,并比较fst及其前辈的得分.在结果上,所有获胜记录都已被取消,或者获胜者必须继续寻找得分相同的球员."

我想这score>是一个错字.除此之外,我完全理解代码 - 在语法和语义方面.我只是没有实际使用它.这是什么以及为什么有人想要这个?

lisp scheme racket

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