信不信由你,我找不到我认为这个基本问题的答案.
在awk中,我如何逐个字符地循环输入字符串?假设我只想将它们打印出来.我可以访问一个数组吗?或者我需要使用substr?
基本上,像:
echo "here is a string" | awk '
{ for(i=0; i<[length of input string]; i++)
printf [value at index i in array x];
}'
Run Code Online (Sandbox Code Playgroud)
坦率地说,我很尴尬.
为了学习sqlalchemy(和python),我试图复制一个已经存在的项目,但是我很难用postgres搞清楚sqlalchemy和继承.
这是我们的postgres数据库的一个例子(显然,这是简化的):
CREATE TABLE system (system_id SERIAL PRIMARY KEY,
system_name VARCHAR(24) NOT NULL);
CREATE TABLE file_entry(file_entry_id SERIAL,
file_entry_msg VARCHAR(256) NOT NULL,
file_entry_system_name VARCHAR(24) REFERENCES system(system_name) NOT NULL);
CREATE TABLE ops_file_entry(CONSTRAINT ops_file_entry_id_pkey PRIMARY KEY (file_entry_id),
CONSTRAINT ops_system_name_check CHECK ((file_entry_system_name = 'ops'::bpchar))) INHERITS (file_entry);
CREATE TABLE eng_file_entry(CONSTRAINT eng_file_entry_id_pkey PRIMARY KEY (file_entry_id),
CONSTRAINT eng_system_name_check CHECK ((file_entry_system_name = 'eng'::bpchar)) INHERITS (file_entry);
CREATE INDEX ops_file_entry_index ON ops_file_entry USING btree (file_entry_system_id);
CREATE INDEX eng_file_entry_index ON eng_file_entry USING btree (file_entry_system_id);
Run Code Online (Sandbox Code Playgroud)
然后插入将使用触发器完成,以便它们正确插入子数据库.就像是:
CREATE FUNCTION file_entry_insert_trigger() RETURNS "trigger"
AS …Run Code Online (Sandbox Code Playgroud) python postgresql inheritance sqlalchemy polymorphic-associations
我有一个主syslog服务器从几个源接收syslog,我想将这些日志发送到Graylog集群.为了帮助集群保持运行(在一些缓慢的虚拟机上),我需要能够将消息负载平衡到Graylog,因为有时它们来自端点的大量块(一些每10秒发送一次突发5k日志).
我正在尝试使用nginx作为系统日志消息的负载均衡器,但我似乎无法让它工作,而且似乎是因为nginx正在寻找Graylog服务器的响应.使用UDP,它不会得到响应.至少这是我认为正在发生的事情.
我得到的错误是这样的:
2016/12/01 11:27:59 [error] 2816#2816: *210325 no live upstreams while connecting
to upstream, udp client: 10.0.1.1, server: 0.0.0.0:11016,
upstream: "juniper_close_stream_backend", bytes from/to client:932/0,
bytes from/to upstream:0/0
Run Code Online (Sandbox Code Playgroud)
作为我在nginx.conf中的这个规则的一个例子,它看起来像:
stream {
server {
listen 11016 udp;
proxy_pass juniper_close_stream_backend;
}
upstream juniper_close_stream_backend {
server 10.0.1.2:11016;
server 10.0.1.3:11016;
server 10.0.1.4:11016;
}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我的syslog框是10.0.1.1,我的下游Graylog框是10.0.1.[2-4].我看到所有这些错误消息.
有关正在发生的事情的任何线索?当我在Graylog盒子上运行tcpdump时,我看到来自负载均衡器的流量,这意味着它正在工作.但我认为nginx期待一个回应,并给我一个错误.
我们有一个脚本需要对有限的主机列表采取行动。但是每次我们在 /etc/hosts 文件中添加或删除主机时,我们最终都必须更新这个脚本。
基本上,说我的主机文件看起来像:
192.168.100.1 hostip_1
192.168.100.2 hostip_2
192.168.100.10 hostip_3
192.168.100.20 hostip_5
Run Code Online (Sandbox Code Playgroud)
我的脚本 (bash) 执行以下操作:
callmyfunction hostip_1
callmyfunction hostip_2
callmyfunction hostip_3
callmyfunction hostip_5
Run Code Online (Sandbox Code Playgroud)
如果我想将 hostip_4 添加到主机列表中,我现在必须进入并编辑我的脚本并将其添加到列表中。虽然这是一个小的编辑,但它仍然是一个可以在过程中被遗忘的步骤(特别是如果有人不熟悉系统的话)。
有没有办法可以测试“hostip_1”是否是系统内的有效主机名(无需ping主机或grepping /etc/hosts文件)?我们可能会使用多个主机文件,不同的配置可能有不同的文件名,所以我不能依靠尝试 grep 单个文件。我需要系统为我完成这项工作。
任何线索?
我有一个滑动窗口的问题.具体来说,我不知道我的窗口应该从哪里开始以及应该在哪里结束.我知道我的间隔/窗口的大小.
我需要找到窗口的开始/结束,以提供最佳(或最差,取决于您如何看待它)的情况.
这是一个示例数据集:
value | tstamp
100 | 2013-02-20 00:01:00
200 | 2013-02-20 00:02:00
300 | 2013-02-20 00:03:00
400 | 2013-02-20 00:04:00
500 | 2013-02-20 00:05:00
600 | 2013-02-20 00:06:00
500 | 2013-02-20 00:07:00
400 | 2013-02-20 00:08:00
300 | 2013-02-20 00:09:00
200 | 2013-02-20 00:10:00
100 | 2013-02-20 00:11:00
Run Code Online (Sandbox Code Playgroud)
让我说我知道我的间隔需要5分钟.所以,我需要知道5分钟间隔中包含的值和时间戳,其中"值"的总和最高.在上面的例子中,从'2013-02-20 00:04:00'到'2013-02-20 00:08:00'的行会给我400 + 500 + 600 + 500 + 400 = 2400的总和,这是该表中超过5分钟的最高值.
如果需要,我不反对使用多个表.但我正试图找到一个"最佳案例场景"间隔.结果可以是任何一种方式,只要它们净化间隔.如果我在该间隔内获得所有数据点,它仍然有效.如果我得到起点和终点,我也可以使用它们.
我发现了SQL的几个滑动窗口问题,但是没有找到窗口大小是已知因素的任何地方,并且起点未知.
我正在将一些客户端内容迁移到服务器中,并希望将其放入一个函数中。
我需要将查询结果存入 CSV 文件中。但是,我想将结果文件的文件名/位置作为函数的参数传递。
所以,这是我想做的一个简单的例子:
CREATE FUNCTION send_email_results(filename1 varchar) RETURNS void AS $$
DECLARE
BEGIN
COPY(SELECT * FROM mytable) TO filename1 WITH CSV;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
Postgres 对此有所抱怨,因为它将 filename1 参数转换为“$1”,并且它不知道该怎么做。
如果需要的话,我可以对路径进行硬编码,但是能够将其作为参数传递肯定会很方便。
有人有任何线索吗?
这是试图进一步解决先前的问题。。我觉得这完全不同,可以提出另一个主题,希望能帮助尝试解决同一问题的任何人。
如果我有一个键-值对的数据集,那么我要完成三件事:
因此,举例来说,我有以下数据集:
[
{"date":"2019-01-01", "temp":"cold", "season":"winter", "precip":"snow"},
{"date":"2019-02-01", "temp":"cold", "season":"winter", "precip":"none"},
{"date":"2019-03-01", "temp":"mild", "season":"spring", "precip":"rain"},
{"date":"2019-04-01", "temp":"mild", "season":"spring", "precip":"none"},
{"date":"2019-05-01", "temp":"warm", "season":"spring", "precip":"rain"},
{"date":"2019-06-01", "temp":"warm", "season":"summer", "precip":"hail"},
{"date":"2019-07-01", "temp":"hot", "season":"summer", "precip":"none"}
]
Run Code Online (Sandbox Code Playgroud)
我想结束以下Map对象:
[
"2019-01-01" => "snow",
"2019-02-01" => "none",
"2019-03-01" => "rain",
"2019-06-01" => "hail"
]
Run Code Online (Sandbox Code Playgroud)
作为最后的挑战,如何在可以动态生成结果的函数中执行此操作?因此,在上面的示例中,我在最终Map中选择了“ precip”作为所需值。但是,如果我想要“季节”怎么办?有没有一种方法可以动态地做到这一点,在这里我可以将“键”名作为函数的参数传递?
另外,此操作是否有名称?我很难拿到头衔。如果有人有更好的主意,我很乐意将其重命名。我觉得这是很多人都可能遇到的一个优雅的问题。