我有一个 bash oneliner,我通过相同的 ImageMagick 操作多次对一张图像进行管道传输。我想将其作为 Bash 循环来执行,最好不使用临时文件。
单行是:cat in.jpg | convert -quality 1 - jpg:- | convert -quality 1 - jpg:- | convert -quality 1 - jpg:- > out.jpg
这个也有效:(convert -quality 1 - jpg:- | convert -quality 1 - jpg:- | convert -quality 1 - jpg:-) > out.jpg < in.jpg
convert在命令中,-意思是“从标准输入读取”,jpg:-意思是“以 JPEG 格式输出到标准输出”。
我尝试过执行cat in.jpg | for x in {1..3}; do convert -quality 1 - jpg:-; done > out.jpg和(for x …
我正在制作一个简单的客户端服务器管道示例作为练习。服务器将使用命名管道从客户端接收字符串。服务器将从客户端接收到的字符串中每个字符的大小写反转,并使用管道将字符串发送回客户端。它有效,但我写入管道的字符串似乎被空格打破了。随附的图片显示了我的问题。
我在服务器上创建一个像这样的命名管道。
HANDLE pipe_handle = CreateNamedPipe(
PIPE_REV_NAME, //name
PIPE_ACCESS_DUPLEX, //openMode
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE, //Pipe Mode
1,//Max Instances
1024,//OutBuffSize
1024,//InBuffSize
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
并在服务器上对其进行读取和写入,如下所示:
DWORD bytes_read;
ReadFile(
pipe_handle,
(LPVOID)string_to_reverse,
MAX_PIPE_REVLEN - 1,
&bytes_read,
NULL);
string_to_reverse[bytes_read] = '\0';
printf("Recieved: %s\n", string_to_reverse);
cap_reverse(string_to_reverse, bytes_read);
printf("Sending: %s\n", string_to_reverse);
DWORD bytes_written;
WriteFile(
pipe_handle,
(LPVOID)string_to_reverse,
bytes_read,
&bytes_written,
NULL);
Run Code Online (Sandbox Code Playgroud)
客户端创建一个文件来使用管道,如下所示:
HANDLE pipe_handle = CreateFile(
PIPE_REV_NAME,
GENERIC_READ | GENERIC_WRITE,
0, // no sharing
NULL, // default security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
NULL
); …Run Code Online (Sandbox Code Playgroud) 我想在单击按钮时实现 Angular 5 搜索管道。
我有一个输入框,它将接收自定义搜索值,并从对象数组中过滤不同的键值。我在输入文本时实现了角管,它进行搜索,但我想仅在用户输入和搜索按钮被单击时触发此操作。无论如何我们可以实现这一目标吗?我被困在实现点击事件上
itemsearch.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'itemsearch'
})
export class ItemsearchPipe implements PipeTransform {
public transform(value, keys: string, term: string) {
if (!term) {
return value;
}
return (value || []).filter(item => keys.split(',').some(key =>
item.hasOwnProperty(key) && new RegExp(term, 'gi').test(item[key])));
Run Code Online (Sandbox Code Playgroud)
} }
itemcomponent.ts
<div *ngFor="let item of items | itemsearch:'name, age':query">
{{item.name}}
{{item.age}} </div>
</div>
Run Code Online (Sandbox Code Playgroud) 我正在编写一个小代码,比较两次并找到差异并以 HH:MM:SS 格式显示。
library(magrittr)
library(lubridate)
s1 <- ymd_hms(Sys.time())
s2 <- ymd_hms(Sys.time()) +200
d1 <- seconds_to_period(as.numeric(difftime(s2, s1, units = "secs")));
d2 <-sprintf('%02d:%02d:%02d', hour(d1), minute(d1), second(d1));
Run Code Online (Sandbox Code Playgroud)
d2 [1]“00:03:21”
我尝试的另一种方法是通过管道技术。但在这里,我收到一个错误。
s1 <- ymd_hms(Sys.time())
s2 <- ymd_hms(Sys.time()) +200
d3 <- difftime(s2, s1, units = "secs") %>% as.numeric() %>% seconds_to_period() %>% sprintf('%02d:%02d:%02d', hour(.), minute(.), second(.))
Run Code Online (Sandbox Code Playgroud)
d3 <- difftime(s2, s1, 单位 = "秒") %>% as.numeric() %>% secondary_to_period() %>% + sprintf('%02d:%02d:%02d', hour(.) , 分钟(.), 秒(.)) sprintf(., "%02d:%02d:%02d", 小时(.), 分钟(.), 秒(.)) 中的错误: 'fmt' 不是字符向量
点操作似乎不适用于这种情况。我应该怎么办?
另外,有没有更好的方法来实现时间功能?
我正在使用 Exec 探针添加活性探针和就绪探针。
我的配置如下:
readinessProbe:
exec:
command: "/usr/bin/jps -l | grep QueueProcess"
periodSeconds: 10
failureThreshold: 2
successThreshold: 2
Run Code Online (Sandbox Code Playgroud)
当上面的方法不起作用时。我对此进行了修改并尝试了:
readinessProbe:
exec:
command: ["/usr/bin/jps", "-l", "|", "grep","QueueProcess"]
periodSeconds: 10
failureThreshold: 2
successThreshold: 2
Run Code Online (Sandbox Code Playgroud)
运行时kubectl describe pod,得到以下输出:
Normal Created 37s kubelet Created container app1
Normal Started 37s kubelet Started container app1
Warning Unhealthy 6s (x3 over 26s) kubelet Readiness probe failed: invalid argument count
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
Run Code Online (Sandbox Code Playgroud)
我尝试了另一个应用程序,我正在其中运行grpcurl来调用运行状况检查:
readinessProbe:
exec:
command: …Run Code Online (Sandbox Code Playgroud) 我有这个 shell 脚本,它采用一组 INSERT 语句,并在开头放置“BEGIN TRANSACTION”,在末尾放置“COMMIT”。有很多INSERT语句,因此这使得插入速度更快。
我成功使用的脚本如下所示:
file_name_improved_sql=foo-improved.sql
file_name_original_sql=foo.sql
file_name_sqlite_db=bar.db
path_to_insert_error=/tmp/fooerrors.log
#
echo 'BEGIN TRANSACTION;' | cat - $file_name_original_sql > $file_name_improved_sql
echo "COMMIT;" >> $file_name_improved_sql
#
cat $file_name_improved_sql | sqlite3 $file_name_sqlite_db 2> $path_to_insert_error
Run Code Online (Sandbox Code Playgroud)
我想改进这一点,以便不生成中间文件file_name_improved_sql,而是直接通过管道输入两个字符串和文件内容。
像这样的东西(除了这不起作用)......
export string1="BEGIN TRANSACTION"
export string2="COMMIT"
cat $string1 $file_name_improved_sql $string2 | sqlite3 $file_name_sqlite_db 2> $path_to_insert_error
Run Code Online (Sandbox Code Playgroud) 这个问题类似于IPC性能:命名管道与套接字,但重点关注匿名而不是命名管道:不同操作系统和不同传输大小的匿名管道和TCP连接之间的性能差异如何?
如果我使用的话{{"2021-09-30T00:00:00Z" | date: "yyyy-MM-dd"}},它会自动减去一天并显示2021-09-29。我想是因为时间是00:00,所以才变得混乱吧?
如何使日期正确显示,以2021-09-30角度方式使用日期管道?
我正在尝试从 Keycloak 端点获取身份验证令牌并使用它来访问另一个资源。获取令牌不是问题,但将其传递到另一个请求的标头中却是一项不可能的任务,至少在单个命令中是这样:
curl \
-X POST \
-d 'client_id=app' \
-d 'username=username' \
-d 'password=password' \
-d 'grant_type=password' \
-d "client_secret=$APP_SECRET" \
'http://localhost:9000/auth/realms/realm/protocol/openid-connect/token' \
| \
jq -r '.access_token' \
| \
curl \
-X GET \
-H "Accept: application/json" \
-H "Authorization: Bearer @-" \ # <- read header value from stdin
-u "username:password" \
"http://localhost:8080/app/api/"
Run Code Online (Sandbox Code Playgroud)
实现这一目标的替代方法是什么?
我有一个命名的数字向量,我试图将每个元素除以所有元素的总和。然后我想使用该signif函数四舍五入到有效数字。通过计算除法并存储变量,然后使用存储的变量来计算有效数字,“老派”的做法很容易。magrittr但是,如果我尝试使用管道运算符 ( )直接通过管道进行计算%>%,signif则不会真正对向量执行任何操作。
我试图理解其中的区别,因为我经常遇到管道与基本 R 函数结合使用的问题。
这是一个示例,我得到的输出:
> # My named vector
> v <-setNames(c(1:5), letters[1:5])
> # Dividing each element by the total sum and rounding to significant figures
> a <- v/sum(v)
> a <- signif(a, digits = 3)
> # Dividing each element by the total sum and piping directly to signif()
> b <- v/sum(v) %>% signif(digits = 3)
> a
> b
a: 0.0667 b 0.133 c …Run Code Online (Sandbox Code Playgroud)