小编Joe*_*Joe的帖子

诊断 Docker for Mac 上的高 CPU 使用率

如何在 MacOS 上诊断 Docker 的原因,特别是com.docker.hyperkit使用 100% 的 CPU?

码头工人 CPU 使用率

Docker 统计信息

Docker stats 显示所有正在运行的容器都具有较低的 CPU、内存、网络 IO 和块 IO。

码头工人统计输出

iosnoop

iosnoop 显示com.docker.hyperkit每秒对文件执行大约 50 次写入,总计每秒 500KB Docker.qcow2。根据什么是 Docker.qcow2?,Docker.qcow2是一个稀疏文件,是所有 Docker 容器的持久存储。

在我的情况下,文件不是那么稀疏。物理大小与逻辑大小相匹配。

docker.qcow 实际大小

dtrace (dtruss)

dtrusssudo dtruss -p $DOCKER_PID显示大量psynch_cvsignalpsynch_cvwait调用。

psynch_cvsignal(0x7F9946002408, 0x4EA701004EA70200, 0x4EA70100)          = 257 0
psynch_mutexdrop(0x7F9946002318, 0x5554700, 0x5554700)           = 0 0
psynch_mutexwait(0x7F9946002318, 0x5554702, 0x5554600)           = 89474819 0
psynch_cvsignal(0x10BF7B470, 0x4C8095004C809600, 0x4C809300)             = 257 0
psynch_cvwait(0x10BF7B470, 0x4C8095014C809600, 0x4C809300)               = 0 0
psynch_cvwait(0x10BF7B470, …
Run Code Online (Sandbox Code Playgroud)

macos profiling dtrace docker

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

拉出本地图像以在Kubernetes中运行一个pod

我有一个Dockerfile创建的以下图像:

存储标签图像ID创建大小

ruby/lab最新的f1903b1508cb 2小时前729.6 MB

我有以下YML文件:

REPOSITORY   TAG      IMAGE ID       CREATED       SIZE 
ruby/lab     latest   f1903b1508cb   2 hours ago   729.6 MB
Run Code Online (Sandbox Code Playgroud)

当我创建部署时,我在pod中获得了以下信息:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: ruby-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: ruby
    spec:
      containers:
      - name: ruby-app
        image: ruby/lab
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 4567
Run Code Online (Sandbox Code Playgroud)

和:

ruby-deployment-3830038651-sa4ii   0/1       ImagePullBackOff   0          7m
ruby-deployment-3830038651-u1tvc   0/1       ImagePullBackOff   0          7m
Run Code Online (Sandbox Code Playgroud)

是否真的有必要在docker中使用注册表?我只是想在本地进行测试并将我的代码/ repo传递给朋友进行测试

谢谢

docker kubernetes

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

Elisp - 循环在alist上

在Emacs Lisp中循环使用alist并对每一对执行某些操作的最佳方法是什么?我想一个宏不会很困难,我只是想知道这是否是在某个地方构建的.有比下面更优雅的方式吗?

(setq my-list '((a . 1)
                (b . 2)
                (c . 3)))

(loop for key in (mapcar 'car my-list)
      for value in (mapcar 'cdr my-list)
      collect (cons value key))

;; Returns this
((1 . a)
 (2 . b)
 (3 . c))
Run Code Online (Sandbox Code Playgroud)

emacs elisp

20
推荐指数
4
解决办法
8204
查看次数

如何在C#中选择带有XPath的节点?

简单的问题,我只想从<Template>标签中选择文本.这就是我所拥有的,但Xpath与任何东西都不匹配.

public static void TestXPath()
{
    string xmlText = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
    xmlText += "<Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\">";
    xmlText += "<Template>Normal</Template>  <TotalTime>1</TotalTime>  <Pages>1</Pages>  <Words>6</Words>";
    xmlText += "</Properties>";

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(new System.IO.StringReader(xmlText));

    foreach (XmlNode node in xmlDoc.SelectNodes("//Template"))
    {
        Console.WriteLine("{0}: {1}", node.Name, node.InnerText);
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# xpath

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

Watchman:默认日志文件在哪里?

默认情况下,构建工具守护程序在哪里存储它的日志文件?

build-process build

9
推荐指数
2
解决办法
1623
查看次数

如何获得restructuredText为每个html <p>标签添加一个类?

我正在使用Django的标记包将restructuredText转换为html.有没有办法自定义HTML编写器以向每个<p>标记添加类属性?

我可以为每个段落使用class指令,但我想自动执行此过程.

例如,我想要这个重组的文本:

hello
=====

A paragraph of text.
Run Code Online (Sandbox Code Playgroud)

要转换为这个HTML.

<h1>hello</h1>
<p class="specialClass">A paragraph of text.</p>
Run Code Online (Sandbox Code Playgroud)

我想插入类的原因是因为我正在使用连字符库,它通过将连字符添加到带有"连字符"类的所有标记来工作.我可以将连字符类添加到容器标记中,但随后所有子项都将继承连字符类.我可以使用javascript动态添加类,但我认为可能有一种简单的方法来使用restructuredText.

谢谢您的帮助,

python django restructuredtext

6
推荐指数
2
解决办法
1093
查看次数

创建 docker 容器以运行 `go test`,并下载并缓存所有模块依赖项

我想在需要使用 Docker 的 CI 环境中测试我的 Go 代码。如何创建一个 Docker 映像,该映像具有go.mod已下载和编译的所有依赖项,以便docker run $IMG go test使用缓存的工件?

此图像所需的属性:

  • 该映像仅用于go.mod编译依赖项。我不想使用完整的源代码,因为对源代码的任何更改都会使保存缓存依赖项的 Docker 层无效。

  • docker run $IMG go test ./...不会重新下载或重新编译go.mod.

  • 避免实验性的 Docker 功能。

现有方法

解析 go.mod 并使用 go get

来自https://github.com/golang/go/issues/27719#issuecomment-578246826

这种方法很接近,但GOCACHE在我运行时似乎没有使用go test. 这似乎也会阻塞某些模块路径,例如gopkg.in/DataDog/dd-trace-go.v1

FROM golang:1.13
WORKDIR /src
COPY go.mod ./
RUN set -eu \
  && go mod graph \
  | cut -d '@' -f 1 \
  | cut -d ' ' …
Run Code Online (Sandbox Code Playgroud)

go docker

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

Emacs每个文件自定义

我有一个带有自定义宏的Emacs Lisp文件,我希望它有所不同.代码如下:

(defmacro* when-let ((var value) &rest body)
  `(let ((,var ,value))
     (when ,var ,@body)))

(defun func ()
  (when-let (a 1)
    a))
Run Code Online (Sandbox Code Playgroud)

我希望像上面那样when-let精通font-lock-keyword并缩进.我知道我可以在我的.emacs文件中执行此操作,但我更喜欢将其作为本地目录或文件本地自定义.问题是目录本地和文件本地自定义似乎仅限于设置变量.在我的.emacs文件中,我有以下内容.

(add-hook 'emacs-lisp-mode-hook
   (lambda ()
             (put 'when-let 'lisp-indent-function 1)
             (font-lock-add-keywords nil
                                     '(("(\\(when-let\\)\\>" 1
                                        font-lock-keyword-face)))))
Run Code Online (Sandbox Code Playgroud)

我想要这个,.dir-locals.el因为它只适用于一个文件.

emacs elisp

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

使用AUCTeX在LaTeX模式下插入常规双引号

如何重新绑定双引号键,只需在启用了AUCTex的LaTeX缓冲区中插入双引号?

我尝试重新定义TeX打开和关闭引用,但这似乎不起作用.

(add-hook 'LaTeX-mode-hook
          '(progn
             (setq-default TeX-close-quote "\"")
             (setq-default tex-close-quote "\"")
             (setq-default TeX-open-quote "\"")
             (setq-default tex-open-quote "\"")
             (setq-default TeX-quote-after-quote t)))
Run Code Online (Sandbox Code Playgroud)

更新

除了我已经smartparens启用之外,上面的代码和接受的答案都会有效.Smartparens 有助于重新定义引用键以插入LaTeX引号.使用常规报价的代码如下:

(eval-after-load 'latex
  '(progn
     (require 'smartparens-latex)
     ;; removes the double quote trigger binding. Now smartparens will 
     ;; insert a regular double quote
     (sp-local-pair 'latex-mode "``" "''" :trigger "\"" :actions :rem)))
Run Code Online (Sandbox Code Playgroud)

emacs elisp auctex

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

打字稿:解决javascript内置的类型定义错误

我想在打字稿中使用FormData.遗憾的是,生成的typescript定义文件不支持带有Form元素的FormData构造函数,详见 Typescript Issue#1074.

我有以下代码:

var formEl = <HTMLFormElement> document.getElementById("myForm");
var formData = new FormData(formEl);
Run Code Online (Sandbox Code Playgroud)

代码提供以下错误,因为生成的定义是错误的:

错误TS2346:提供的参数与呼叫目标的任何签名都不匹配.

我想使用以下声明:

declare var FormData: {
    prototype: FormData;
    new (form?: HTMLFormElement): FormData;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我包含该类型定义,我会收到此错误:

错误TS2403:后续变量声明必须具有相同的类型.变量'FormData'必须是'{new():FormData; 原型:FormData; }',但这里有类型'{new(form?:HTMLFormElement):FormData; 原型:FormData; }".

我该如何解决这个问题?

types typescript

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

如何从C#中的word(docx)文档中获取文本?

我试图从word文档中获取纯文本.具体来说,xpath给了我麻烦.你如何选择标签?这是我的代码.

public static string TextDump(Package package)
{
    StringBuilder builder = new StringBuilder();

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(package.GetPart(new Uri("/word/document.xml", UriKind.Relative)).GetStream());

    foreach (XmlNode node in xmlDoc.SelectNodes("/descendant::w:t"))
    {
        builder.AppendLine(node.InnerText);
    }
    return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)

xpath docx openxml wordprocessingml

3
推荐指数
1
解决办法
4595
查看次数

Rust实现merge-sorted迭代器

我正在尝试实现一个合并两个已排序迭代器的迭代器.我正在运行从结构中发布借用字段.

如何避免此错误?我尝试使用借来的引用,但似乎没有帮助,因为最终我需要移动a_item和b_item的值.

use std::num::Saturating;

pub struct MergeSorted<A, T> {
    a: T,
    b: T,
    a_item: Option<A>,
    b_item: Option<A>,
}

impl<A: Ord, T: Iterator<A>> Iterator<A> for MergeSorted<A, T> {
    #[inline]
    fn next(&mut self) -> Option<A> {

        match (self.a_item, self.b_item) {
            (None, None) => None,

            (None, Some(y)) => {
                let result = self.b_item;
                self.b_item = None;
                return result;
            }

            (Some(x), None) => {
                let result = self.a_item;
                self.a_item = self.a.next();
                result
            }

            (Some(x), Some(y)) => {
                if x < y {
                    let result …
Run Code Online (Sandbox Code Playgroud)

iterator rust

1
推荐指数
2
解决办法
1041
查看次数

在 TypeScript 环境模块中导出赋值和导出类型

我正在尝试为config特定于我们的应用程序的模块添加类型。该config模块是从 JSON 文件动态生成的,因此很难输入。因为它是一个节点模块,所以我使用环境模块进行打字。

// config.d.ts
declare module 'config' {
  interface AppConfig {
    name: string;
    app_specific_thing: string;
  }
  const config: AppConfig;
  export = config;
}
Run Code Online (Sandbox Code Playgroud)

我如何还导出AppConfig以便我可以将它用作这样的类型:

import * as config from 'config';

const appConfig: config.AppConfig;
Run Code Online (Sandbox Code Playgroud)

尝试

  • 如果我直接在config模块中导出 AppConfig,它会出错:

    TS2309:不能在具有其他导出元素的模块中使用导出分配。

  • 如果我移动AppConfig到另一个文件(例如./app_config)来保存导出并将它们导入到config.d.ts它的错误中:

    TS2439:环境模块声明中的导入或导出声明不能通过相对模块名称引用模块。

  • 如果我将AppConfig导出放在同一个文件中,但在config模块之外,则会出现以下错误:

    TS2665:扩充中的模块名称无效。模块 'config' 解析为 $PROJ/config/lib/config.js 中的无类型模块,无法扩充。

这类似于Typescript 错误“不能在具有其他导出元素的模块中使用导出分配”。同时根据我希望能够AppConfig直接在其他 TS 文件中作为类型导入的要求扩展打字稿定义

typescript typescript-typings

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