小编jas*_*ose的帖子

使用awk循环输入字符串中的字符

信不信由你,我找不到我认为这个基本问题的答案.

在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)

坦率地说,我很尴尬.

string awk for-loop

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

sqlalchemy在postgres中使用继承

为了学习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

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

使用nginx进行UDP转发

我有一个主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期待一个回应,并给我一个错误.

linux udp load-balancing nginx

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

在没有 ping 的情况下从命令行测试主机名是否存在

我们有一个脚本需要对有限的主机列表采取行动。但是每次我们在 /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 单个文件。我需要系统为我完成这项工作。

任何线索?

linux ip bash host

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

sql滑动窗口 - 在间隔上查找最大值

我有一个滑动窗口的问题.具体来说,我不知道我的窗口应该从哪里开始以及应该在哪里结束.我知道我的间隔/窗口的大小.

我需要找到窗口的开始/结束,以提供最佳(或最差,取决于您如何看待它)的情况.

这是一个示例数据集:

 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的几个滑动窗口问题,但是没有找到窗口大小是已知因素的任何地方,并且起点未知.

sql postgresql intervals sliding-window postgresql-8.1

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

Postgres PL/pgSQL 函数结果到文件,以文件名作为参数

我正在将一些客户端内容迁移到服务器中,并希望将其放入一个函数中。

我需要将查询结果存入 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”,并且它不知道该怎么做。

如果需要的话,我可以对路径进行硬编码,但是能够将其作为参数传递肯定会很方便。

有人有任何线索吗?

sql csv postgresql copy plpgsql

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

将Javascript数组简化为Map,从内部值创建键

这是试图进一步解决先前的问题。。我觉得这完全不同,可以提出另一个主题,希望能帮助尝试解决同一问题的任何人。

如果我有一个键-值对的数据集,那么我要完成三件事:

  1. 查找内部键值对的值的第一个匹配项。
  2. 将该值复制到地图中
  3. 将另一个键值对的值用作Map的键。

因此,举例来说,我有以下数据集:

[
  {"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”作为所需值。但是,如果我想要“季节”怎么办?有没有一种方法可以动态地做到这一点,在这里我可以将“键”名作为函数的参数传递?

另外,此操作是否有名称?我很难拿到头衔。如果有人有更好的主意,我很乐意将其重命名。我觉得这是很多人都可能遇到的一个优雅的问题。

javascript arrays reduce object key-value

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