小编sou*_*edi的帖子

我是否需要YAML中的字符串引号?

我正在尝试编写一个YAML字典,用于Rails项目的国际化.我有点困惑,因为在一些文件中,我看到双引号中的字符串,而有些没有.需要考虑以下几点:

  • 示例1 - 所有字符串都使用双引号;
  • 例2 - 没有字符串(除了最后两个)使用引号;
  • YAML菜谱说:双引号引起的字符串允许您使用escapings代表ASCII和Unicode字符.这是否意味着我只有在想要逃避某些字符时才需要使用双引号?如果是的话 - 为什么他们在第一个例子中到处使用双引号 - 只是为了统一/风格的原因?
  • 示例2的最后两行使用!- 非特定标记,而第一个示例的最后两行不使用 - 它们都有效.

我的问题是:在YAML中使用不同类型的引号有哪些规则?

可以这么说:

  • 一般来说,你不需要引号;
  • 如果你想转义字符使用双引号;
  • 使用!单引号,当...?!?

syntax quotes yaml

349
推荐指数
4
解决办法
14万
查看次数

几个共享相同名称的复选框

根据w3c"表单中的几个复选框可以共享相同的控件名称.因此,例如,复选框允许用户为同一属性选择多个值." 但是,如果这样做,PHP将只采用最后一个值.例如:

<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet" value="dog" />Dog<br />
<input type="checkbox" name="pet" value="Cat" />Cat<br />
<input type="checkbox" name="pet" value="bird" />bird<br />
<input type="checkbox" name="pet" value="iguana" />iguana<br />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

如果您提交该表单,您将看到只会设置最后一个显示的复选框.浏览器将它们全部发送,但它们会相互覆盖.因此,将相同名称设置为多个复选框可能会导致问题.它总是这样吗?我似乎记得实际上可以将所有值作为数组发送.

我知道你可以在名称的末尾添加一个[]来创建一个值数组:

<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet[]" value="dog" />Dog<br />
<input type="checkbox" name="pet[]" value="Cat" />Cat<br />
<input type="checkbox" name="pet[]" value="bird" …
Run Code Online (Sandbox Code Playgroud)

html php forms checkboxlist

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

pythonlogging.FileHandler默认使用块缓冲吗?

处理程序logging类有一个flush() 方法。

而且看代码logging.FileHandler调用时并没有传递具体的缓冲模式open()。因此,当您写入日志文件时,将使用默认块大小对其进行缓冲。

那是对的吗?


这让我感到惊讶,因为当我管理自己的系统时,我习惯于将日志文件作为系统上的实时(或接近实时)视图来观看。对于此用例,需要行缓冲。此外,传统的 syslog() 日志守护进程不会缓冲消息。


我对 Python 2.7 和 3.7 版本感兴趣。

python logging output-buffering

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

为什么Docker官方图像不按照"最佳实践"的要求使用USER

Postgres,mariadb,mysql不使用USER.据推测,正在审查官方图像是否符合最佳实践文档,该文档要求用户尽可能使用.为什么?

docker dockerfile

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

标准C是否接受`{0}`作为任何结构的初始化器?

这通常被建议,作为将结构体初始化为零值的方法:

struct foo f = {0};
Run Code Online (Sandbox Code Playgroud)

还提到{}可以在gcc下使用,但这不是标准的C99.

我想知道这是否适用于一个结构,其布局可能会超出我的控制范围.我很担心,因为0它不是数组或结构的有效初始值设定项.然而,gcc --std=c99(gcc-8.1.1-1.fc28.x86_64)似乎也接受{0}了这种情况.

问题 C99是否接受{0}任何结构的初始化程序?

(或者是后来的C标准?还是相反的,是否有任何理由不依赖于此?是否存在{0}可能导致错误或警告会阻止其使用的编译器?)

我试过了什么

gcc警告(启用-Wall)表明这是标准中的某种形式的边缘情况,其中gcc被强制接受0作为任何类型的struct字段的初始化器,但它会警告它,除非你使用常见的{0}习惯用法.

struct a { int i; };
struct b { struct a a; struct a a2; };
struct c { int i[1]; int j[1]; };

struct a a = {0}; /* no error */
struct b b = {0}; /* no error */
struct c c = {0}; /* …
Run Code Online (Sandbox Code Playgroud)

c struct initialization language-lawyer

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

____cacheline_aligned_in_smp用于linux中的结构

为什么在Linux中很多结构使用____cacheline_aligned_in_smp宏?在访问结构时是否有助于提高性能.如果是,那怎么样?

smp linux-kernel

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

CUPS向IPP打印机发送多个作业

有没有办法让CUPS在尚未完成上一份工作的情况下将作业排队到IPP打印机?

背景:我们有一台XEROX WorkCentre打印机,它有自己的作业队列.每当有人想要打印时,他们必须假脱机,将他们的支付卡插入打印机并在打印机触摸板上选择他们的工作.但是当在中央服务器上使用CUPS时,CUPS仅在最后一个作业完成时假脱机,因此只有首先假脱机的人才能看到并支付他们的工作.

我们需要使用IPP,因为当使用例如JetDirect时,用户名不会被传输,用户无法识别他们的工作.

linux printing cups

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

我可以排除SIGBUS是由于“小页面错误”引起的吗?(内核日志没有分配失败)

动机

我正在尝试提高对Xwayland中SIGBUS错误的理解。自2018年2月20日左右以来,使用Fedora Linux的Xwayland 1.19.6-5.fc27.x86_64Linux内核已被多个Fedora Linux用户所见4.15.3-300.fc27.x86-64

遗憾的是,我没有内核“ segfault”日志消息(或SIGBUS等效消息)。Xwayland有一些毫无意义的代码,可以捕获致命信号。但是我可以siginfo通过调试coredump 看到,这似乎差不多。

定义

我了解当虚拟内存的页面在RAM中不可用并且必须从磁盘读取时会发生“主要页面错误”。我想我对ext4文件系统支持的页面特别感兴趣(例如,不能直接访问块设备)。

因此,当不需要磁盘访问时就是“较小的页面错误”。我认为差异是相当明确的,因为Linux公开了主要和次要页面错误的计数器。

我的问题

如果内核发送了一个SIGBUS程序,我想知道我是否通常应该认为这将是主要的页面错误。

根据核心转储和反汇编,程序在接收到SIGBUS时正在读取内存,而不是对其进行写入。中的错误地址在siginfo->si_addr映射的系统可执行文件内,该文件不能由用户写入,并且该地址似乎在当前文件长度的范围内。实际上,在调试coredump时,我已经从内存地址中读取了非常令人信服的值。似乎coredump生成过程阅读此地址没有困难:-(。

我也对排除“无效的地址对齐”情况(BUS_ADRALN)很有信心,因为siginfo->si_code是2,即BUS_ADRERR,“不存在的物理地址”。同样是因为我使用的是x86,在大多数情况下它允许未对齐的访问,并且陷阱不在任何SSE扩展指令中。

我考虑了内核在处理确定为“次要”的页面错误时通常负责的工作。我想小故障可能无法分配内存,从而引发SIGBUS。但是,我相信我会注意到这样的分配失败:

我有很多免费的交换操作可以将用户页面逐出,并且我没有注意到系统开始交换时通常发生的明显减速。崩溃发生在笔记本电脑从挂起状态变为ram状态后几秒钟,即使以约100MB / s的速度也不足以填充8GB的交换空间。我也没有看到可怕的内存不足(OOM)杀手出现在内核日志中,就像我期望的那样,如果内核未能成功分配页面框架或页面表。

还有其他可能性,一个轻微的页面错误可能会失败并导致SIGBUS?即,当在内核日志中查找错误时,有一些我不会注意到的原因吗?哪些会很快发作?

同样,多个核心转储将其显示为页面错误,这是通过从文件系统上的映射文件读取而触发的。

别有用心

我真的很想念一个小页面错误的情况。因为这令人恐惧的另一面是,我不明白这种SIGBUS可能是由硬页面错误方面引起的。从几个月前开始,我们中的一些用户有非常相似的错误。我的内核日志中没有IO错误。在正常操作期间,读取指示的文件时没有IO错误。运行rpm --verify --all或在HDD上运行扩展的SMART测试时,我没有任何错误。不幸的是,我似乎很少有嫌疑犯。在最近的怀疑我有一个内核升级,显然我想排除它;日期并不能完全证明这一点,但是还不能完全排除。日期最近的是今年的微代码更新。这似乎更难确定。

轻微页面错误的已知原因

  1. 从逻辑上讲,当实现MAP_PRIVATE映射的写时复制时,听起来好像发生了轻微的页面错误。
  2. 它还应该包括/ dev / zero或MAP_ANONYMOUS上的读取错误,假设内核没有它们实现为读取共享的零页,并且没有实现为立即为整个映射分配页的实现。
  3. 但更一般而言,它可以是对页面的任何首次访问。这是因为似乎通常是按需填充用于内存映射的页表。(这将由页面错误来完成,并且如果文件页面已经在高速缓存中,则只会是次要的页面错误)。

    MAP_NONBLOCK(自Linux 2.5.46起)

    该标志仅与MAP_POPULATE结合使用才有意义。不要执行预读:仅为RAM中已经存在的页面创建页表条目。从Linux 2.6.23开始,此标志导致MAP_POPULATE不执行任何操作。有一天,combinina?可以重新实现MAP_POPULATE和MAP_NONBLOCK的功能。


编辑:详细摘录以上的进一步摘录

评论者要求提供更具体的细节,以澄清错误的地址和说明。初始链接https://bugzilla.redhat.com/show_bug.cgi?id=1557682中有很多节选

故障根据错误链接中的描述而变化。这是最近事例的摘录。

$ gdb 2018-03-21.core
...
Core was generated by `/usr/bin/Xwayland :0 -rootless …
Run Code Online (Sandbox Code Playgroud)

c linux x86-64 sigbus

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

`set -u`(nounset)vs检查我是否有参​​数

我正在努力改进这个令人讨厌的旧剧本.我找到了一个未定义的变量错误来修复,所以我添加set -u了捕获任何类似的错误.

由于此代码,我得到"$ 1"的未定义变量错误

if [ -z "$1" ]; then
     process "$command"
Run Code Online (Sandbox Code Playgroud)

它只是想知道是否存在争论.(传递空字符串时的行为作为第一个参数不是预期的.如果我们碰巧修复它也不会有问题).

在运行时,检查我们是否有参数的好方法是set -u什么?

如果我们用"$ @"替换"$ 1",上面的代码将不起作用,因为当有多个参数时,"$ @"的特殊方式被扩展.

bash

4
推荐指数
2
解决办法
3403
查看次数

`with_items`输出太冗长

我编写了一个艰巨的任务,以使用遍历设置列表with_items。现在,当我运行ansible时,我的所有设置都会记录下来。它非常冗长,很难看到正在发生的事情。但是,如果我使用禁用所有输出,那么no_log当它们失败时,我将无法识别特定项目。

如何改善输出-仅显示每个项目的标识符?

示例任务:

- authorized_key:
    user: "{{ item.user }}"
    key: "{{ item.key }}"
  with_items: "{{ ssh_keys }}"
Run Code Online (Sandbox Code Playgroud)

输出示例:

任务[sshkey-alan-sysop:ssh授权密钥] *********************************

OK:[砖] =>(项目= {u'user ':u'alan-系统操作员',u'key':u'ssh-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQDAgRe16yLZa8vbzsrxUpT5MdHoEYYd / awAnEWML4g + YoUvLDKr + zwmu78ze / E1NSipoZejXpggUYRVhh8MOiCX6qpUguBDWZFlvSCE / 7uXWWg7Oht0f1kDS2xU7YiycPIzMN1dmUEFY9AixnN936Dq6nOtEzgBwjo66I1YC / 5jrsQEqF19shx43A4DTFlPUz / PnsqHl2ESrkIk3e8zyidaPN2pRbA5iKzdvPW4E2W2tKw9ll40vqRXzaWIF7v293Ostwi1IPi2erlC777DhjZUhZ1VGXIR7FDAfANzalrMe6c / ZysiXewiUYgMw0I8Dh1LK3QMj9Kuo35S5E0Xj3TB alan-sysop @ alan-laptop'})

debugging logging ansible

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