(fileNameToCharStream "bigfile"
|>> fuse [length;
splitBy (fun x -> x = ' ' || x = '\n') removeEmpty |>> length;
splitBy (fun x -> x = '\n') keepEmpty |>> length;
])
(*fuse "fuses" the three functions to run concurrently*)
|> run 2 (*forces to run in parallel on two threads*)
|> (fun [num_chars; num_words; num_lines] ->
printfn "%d %d %d"
num_chars num_words, num_lines))
我想以下列方式使这段代码工作:将原始流分成两个正好在中间; 然后为每一半运行一个单独的计算,计算3件事:长度(即字符数),字数,行数.但是,如果我错误地将一个单词分开,我不想有问题.这必须得到照顾.该文件应该只读一次.
我应该如何编程指定的函数和运算符| >>?可能吗?
我需要将一些数据传递给程序的stdin.
在c中,这是微不足道的:
WriteFile(h, &cb, 4); // cb is a 4 byte integer
WriteFile(h, pData, cb);
Run Code Online (Sandbox Code Playgroud)
要么
fwrite(&cb, sizeof(cb), 1, pFile);
fwrite(pData, cb, 1, pFile);
Run Code Online (Sandbox Code Playgroud)
或者c#你会使用BinaryWriter(我认为这段代码是对的,我现在没有c#,...)
Bw.Write((int)Data.Length);
Bw.Write(Data, 0, Data.Length);
Run Code Online (Sandbox Code Playgroud)
在PowerShell中我确信它是可能的,但这是我能得到的尽可能接近.这显然是将4个字节的大小打印为4个人类可读数字:
$file = "c:\test.txt"
Set-content $file "test data" -encoding ascii
[int]$size = (Get-ChildItem $file).Length
$bytes = [System.BitConverter]::GetBytes($size)
$data = Get-content $file
$bytes
$data
11
0
0
0
test data
Run Code Online (Sandbox Code Playgroud)
我需要在管道上发送的二进制数据看起来像这样(\ xA是不可打印字符的转义表示,我不想在输出中使用'\',我想要'\ xA'表示的BYTE输出) :
\xA\x0\x0\0test data
Run Code Online (Sandbox Code Playgroud)
我不知道如何以二进制格式写出管道中的字节数组.我也不知道如何摆脱回车.
编辑: 我发现我可以这样做:
$file = "c:\test.txt"
Set-content $file "test data" -encoding ascii
"File: …Run Code Online (Sandbox Code Playgroud) 我有一个简短的bash脚本 foo.sh
#!/bin/bash
cat /dev/urandom | tr -dc 'a-z1-9' | fold -w 4 | head -n 1
Run Code Online (Sandbox Code Playgroud)
当我直接从shell运行它时,它运行正常,完成时退出
$ ./foo.sh
m1un
$
Run Code Online (Sandbox Code Playgroud)
但是当我从Python运行它时
$ python -c "import subprocess; subprocess.call(['./foo.sh'])"
ygs9
Run Code Online (Sandbox Code Playgroud)
它输出线但然后永远挂起.造成这种差异的原因是什么?
我创建了一堆本地部署管道作业,这些作业执行的操作包括删除现有容器,在本地构建服务,构建docker镜像,运行容器等等.这些不是CI/CD作业,只是用于部署的小型管道在开发期间本地
我现在要做的就是让所有开发人员都可以使用它,这样他们就可以简单地启动已经包含作业的jenkins的本地实例.
我的docker文件相当直接......
FROM jenkins:latest
USER root
RUN apt-get update
RUN apt-get install -y sudo
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
# Docker
RUN apt-get update
RUN apt-get dist-upgrade -y
RUN apt-get install apt-transport-https ca-certificates -y
RUN sh -c "echo deb https://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list"
RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
RUN apt-get update
RUN apt-cache policy docker-engine
RUN apt-get install docker-engine -y
# .NET Core CLI dependencies
RUN echo "deb [arch=amd64] http://llvm.org/apt/jessie/ llvm-toolchain-jessie-3.6 main" > /etc/apt/sources.list.d/llvm.list …Run Code Online (Sandbox Code Playgroud) c#的类型系统是否能够指定一个函数,该函数接受可以通过形成管道的多个函数?
效果类似于链接,而不是
var pipeline = a.Chain(b).Chain(c)
Run Code Online (Sandbox Code Playgroud)
一个人可以写
var pipeline = CreatePipeline(a,b,c)
Run Code Online (Sandbox Code Playgroud)
哪个a,b和c是函数?我已经包含了一些示例代码来说明,谢谢.
void Main()
{
Func<int, string> a = i => i.ToString();
Func<string, DateTime> b = s => new DateTime(2000,1,1).AddDays(s.Length);
Func<DateTime, bool> c = d => d.DayOfWeek == DayOfWeek.Wednesday;
//var myPipeline = CreatePipeline(a, b, c);
Func<int, bool> similarTo = i => c(b(a(i))) ;
Func<int, bool> isThisTheBestWeCanDo = a.Chain(b).Chain(c);
}
public static class Ext{
//public static Func<X, Z> CreatePipeline<X,Z>(params MagicFunc<X..Y>[] fns) {
// return
//}
public static Func<X, Z> Chain<X,Y,Z>(this Func<X,Y> …Run Code Online (Sandbox Code Playgroud) 我希望能够手动预测任意算术的长度(即没有分支或内存,尽管这也很好)x86-64汇编代码将采用特定的体系结构,考虑到指令重新排序,超标量,延迟,消费者价格指数等
什么/描述必须遵循的规则才能实现这一目标?
我想我已经找到了一些初步规则,但是我没有找到任何关于将任何示例代码分解为这个详细程度的引用,所以我不得不做一些猜测.(例如,英特尔优化手册甚至几乎没有提到指令重新排序.)
至少,我正在寻找(1)确认每条规则是正确的,或者是每条规则的正确陈述,以及(2)我可能忘记的任何规则的列表.
addps并且subps使用相同的功能) unit?我如何确定?).和:4此循环已经发出少于超标量宽度(通常)指令的数量.例如,请考虑以下示例代码(计算交叉产品):
shufps xmm3, xmm2, 210
shufps xmm0, xmm1, 201
shufps xmm2, xmm2, 201
mulps xmm0, xmm3
shufps xmm1, xmm1, 210
mulps xmm1, xmm2
subps xmm0, xmm1
Run Code Online (Sandbox Code Playgroud)
我试图预测Haswell的延迟看起来像这样:
; `mulps` Haswell latency=5, CPI=0.5
; `shufps` Haswell latency=1, CPI=1
; `subps` Haswell latency=3, CPI=1
shufps xmm3, xmm2, 210 ; cycle 1
shufps xmm0, xmm1, 201 ; cycle 2
shufps xmm2, xmm2, 201 ; …Run Code Online (Sandbox Code Playgroud) 我有 monorepo,我想根据已更改的目录内容运行子管道。在工作中prepare_config,我检查最新更改在哪里,创建子配置 yml,并在下一阶段的工作中run_child从 运行子管道。
问题是,如果model-gitlab-ci.yml不存在,则作业run_child会失败,而不是由于缺少工件而跳过。我搜索了仅在工件存在而不是失败时有条件运行作业的解决方案,但没有找到任何解决方案。也许这里有人有什么想法?
.gitlab-ci.yml:
stages:
- .pre
- build
prepare_config:
stage: .pre
tags:
- sometag
rules:
- if: $CI_COMMIT_TAG == null
when: always
changes:
- '.gitlab-ci.yml'
- 'DIR_A/**/*'
- 'DIR_B/**/*'
- 'DIR_C/**/*'
script:
- |-
files=$(git diff-tree --name-only --no-commit-id ${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-$CI_COMMIT_SHA})
echo "Files changed: $files"
for f in $files; do
if [ -d $f ]; then
sed "s/{{ MODEL_NAME }}/$f/g" .gitlab-ci-template.yml >> model-gitlab-ci.yml
fi
done
artifacts:
paths:
- "model-gitlab-ci.yml"
run_child: …Run Code Online (Sandbox Code Playgroud) continuous-integration pipeline continuous-delivery gitlab gitlab-ci
在 Jenkins 上,在 Jenkins 上使用“Github”设置多分支设置时,我收到奇怪的错误:
Error validating repository information. Credentials ok.
Run Code Online (Sandbox Code Playgroud)
但是,相同的凭据适用于“git”作为“添加源”类别,但如果添加为“添加源”,则不适用于“github”。这是 github 的实际凭证,我可以登录 github 门户,不确定这里发生了什么。任何指点。谢谢
鉴于以下情况.gitlab-ci.yml:
---
stages:
- .pre
- test
- build
compile-build-pipeline:
stage: .pre
script: [...]
artifacts:
paths: [".artifacts/build.yaml"]
lint-source:
stage: .pre
script: [...]
run-tests:
stage: test
rules:
- if: '$CI_COMMIT_BRANCH == "$CI_DEFAULT_BRANCH"'
trigger:
strategy: depend
include:
artifact: .artifacts/tests.yaml
job: "compile-test-pipeline"
needs: ["compile-test-pipeline"]
build-things:
stage: test
rules:
- if: '$CI_COMMIT_BRANCH == "$CI_DEFAULT_BRANCH"'
trigger:
strategy: depend
include:
artifact: .artifacts/build.yaml
job: "compile-build-pipeline"
needs: ["compile-build-pipeline"]
...
Run Code Online (Sandbox Code Playgroud)
配置应该始终运行(任何分支,任何源)。测试和构建作业应仅在默认分支上运行。
但是,不会为合并请求运行任何作业,并且在默认分支以外的分支上手动触发管道会出现错误No Jobs/Stages for this Pipeline。
我尝试明确设置用于阶段rules: [{if: '$CI_PIPELINE_SOURCE'}]中作业的始终运行规则.pre,但没有骰子。
我究竟做错了什么?
我有一个 monorepo,每个包都应该构建为 docker。当所有更改的包都进行了 dockerized 后,我想使用 helmfile 进行部署
我为触发子管道的每个包创建了一个触发器作业。
我正在寻找一种方法来获取子管道中生成的值,例如父管道中的 docker 标签或图表版本。
我需要将这些值用于所有子管道完成后发生的部署阶段。
.gitlab-ci.yml
---
trigger-package-a:
stage: build
trigger:
include: .gitlab/ci/packages/package-gitlab-ci.yml
strategy: depend
rules:
- changes:
- "packages/package-a/**/*"
variables:
PACKAGE: package-a
trigger-package-b:
stage: build
trigger:
include: .gitlab/ci/packages/package-gitlab-ci.yml
strategy: depend
rules:
- changes:
- "packages/package-b/**/*"
variables:
PACKAGE: package-b
done_job:
stage: deploy
script:
- "echo DONE"
- "cat config.json"
stages:
- build
- deploy
Run Code Online (Sandbox Code Playgroud)
包-gitlab-ci.yml
stages:
- bootstrap
- validate
cache:
key: "${PACKAGE}_${CI_COMMIT_REF_SLUG}"
paths:
- packages/${PACKAGE}/node_modules/
policy: pull
install-package:
stage: bootstrap
script:
- …Run Code Online (Sandbox Code Playgroud) pipeline ×10
gitlab-ci ×3
gitlab ×2
jenkins ×2
assembly ×1
bash ×1
binary ×1
c# ×1
chaining ×1
docker ×1
f# ×1
git ×1
github ×1
latency ×1
parent-child ×1
powershell ×1
python ×1
subprocess ×1
superscalar ×1
x86-64 ×1