小编cod*_*ero的帖子

MySQL ON UPDATE CURRENT_TIMESTAMP没有更新

我有一个看起来像这样的表:

CREATE TABLE IF NOT EXISTS `Hosts` (
`id` int(128) NOT NULL AUTO_INCREMENT,
`IP` varchar(15) NOT NULL DEFAULT '',
`Port` varchar(5) NOT NULL DEFAULT '',
`Password` varchar(32) NOT NULL DEFAULT '',
`Username` varchar(32) NOT NULL DEFAULT '',
`Tid` varchar(32) NOT NULL DEFAULT '',
`EquipType` varchar(64) NOT NULL DEFAULT '',
`Version` varchar(128) DEFAULT NULL,
`Status` varchar(10) NOT NULL DEFAULT '',
`Location` varchar(128) NOT NULL DEFAULT '',
`Lastconnection` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`Lastbackup` date NOT NULL DEFAULT …
Run Code Online (Sandbox Code Playgroud)

mysql sql timestamp sql-update

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

ldd在LD_LIBRARY_PATH中找不到库

我正在尝试启动并运行系统,并且遇到OpenMotif共享库的问题.我在LD_LIBRARY_PATH中有他们的目录,但它仍然无法找到它们.

这是一个例子:

[root@intrepid netcool]# ldd /opt/netcool/omnibus/platform/linux2x86/bin/nco_* |grep 'not found'
    libXm.so.3 => not found
    libXpm.so.4 => not found
    libXm.so.3 => not found
    libXm.so.3 => not found
    libXpm.so.4 => not found
    libXm.so.3 => not found
    libXm.so.3 => not found
    libXm.so.3 => not found
    libXm.so.3 => not found
[root@intrepid netcool]# find /usr/ -name libXm.so.3 
/usr/lib64/libXm.so.3
[root@intrepid netcool]# find /usr/ -name libXpm.so.4
/usr/lib64/libXpm.so.4
[root@intrepid netcool]# echo $LD_LIBRARY_PATH
/opt/netcool/omnibus//platform/linux2x86/lib/:/opt/netcool//platform/linux2x86/lib/:/usr/lib/:/usr/lib64/
Run Code Online (Sandbox Code Playgroud)

我可能做了一些愚蠢的事情,但我想不出任何其他的尝试.

编辑:回答下面提出的几个问题:

[root@intrepid netcool]# export LD_LIBRARY_PATH
[root@intrepid netcool]# ldd /opt/netcool/omnibus/platform/linux2x86/bin/nco_* |grep 'not found'
    libXm.so.3 => not …
Run Code Online (Sandbox Code Playgroud)

unix shared-libraries ldd

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

在Redis/NoSQL中需要帮助概念化

我想我已经很好地掌握了使用Redis的所有命令,但是我很难搞清楚使用它的最佳方法.我正在设计一个客户通知系统,当他们的任何电路发出警报时,它会通过他们的首选方法(电子邮件,SNMP,Syslog)通知他们.

所以,我得到一个设备名称和一个端口.我需要将其与单个客户相关联,然后将该客户与交付方法相关联.使用关系数据库,看起来可能看起来像这样:

Device name: Los_Angeles
Port: 11

SELECT Customer_ID, Customer_name from device_info where device_port = 'Los_Angeles:11'
SELECT Customer_protocol, SNMP_destination, Syslog_destination from CUSTOMER 
    where Customer_ID = <customer_id from above>
Run Code Online (Sandbox Code Playgroud)

(非常简化的例子).

我可以看到如何使用列表哈希或散列哈希以编程方式执行此操作.但我想我在Redis遇到的问题是我无法获得那些更复杂的数据结构(据我所知).那么,如何将多条信息与一个密钥相关联?我可以想到一些我可以做到的方法,但它们似乎都涉及多个步骤,我想从当前的Redis程序员那里得到一些关于"最佳"方法的信息.

nosql redis data-structures

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

Node.js网络库:从'data'事件中获取完整数据

我四处寻找,要么找不到我想要回答的确切问题,要么我需要有人向我解释,就像我5岁.

基本上,我有一个使用Net库的Node.js脚本.我正在连接多个主机,发送命令和侦听返回数据.

var net = require('net');

var nodes = [
    'HOST1,192.168.179.8',
    'HOST2,192.168.179.9',
    'HOST3,192.168.179.10',
    'HOST4,192.168.179.11'
];

function connectToServer(tid, ip) {
    var conn = net.createConnection(23, ip);
    conn.on('connect', function() {
        conn.write (login_string);  // login string hidden in pretend variable
    });
    conn.on('data', function(data) {
        var read = data.toString();
        if (read.match(/Login Successful/)) {
            console.log ("Connected to " + ip);
            conn.write(command_string);
        }

        else if (read.match(/Command OK/)) { // command_string returned successful,
                                                    // read until /\r\nEND\r\n/

                    // First part of data comes in here
            console.log("Got a response …
Run Code Online (Sandbox Code Playgroud)

javascript tcp node.js node.js-stream

7
推荐指数
2
解决办法
9470
查看次数

理解node.js中的promises for recursive function

我正在尝试使用递归调用从redis中获取数据,在成员返回null时停止并返回.

所以我的数据添加如下:

SADD parents.<name> <parent1> <parent2>
SADD parents.<parent1> <grandparent1> <grandparent2>
...
Run Code Online (Sandbox Code Playgroud)

最终数据应如下所示:

[
 {
     label: <name>,
     parents: [
         { label: <parent1>,
           parents: [ {label: <grandparent1>}, {label: <grandparent2> }] },
         { label: <parent2> }
     ]
 }
]
Run Code Online (Sandbox Code Playgroud)

这是我正在搞乱的代码(有点从不同的来源拼凑而成),但我不知道我在做什么.不确定这段代码是否有用,我可能会偏离轨道.

var redis = require('node-redis');
var r_client = redis.createClient();
var Q = require('q');


function getFromRedis(nodeName){
        var ret = Q.defer();
        r_client.smembers('parents.' + nodeName,function(err,val){
                if (err) ret.reject(err);
                else {
                        var constructedObject={};  //this is our returned object
                        var dependents=[];
                        if (val)
                        {
                                for (var k in val){ …
Run Code Online (Sandbox Code Playgroud)

javascript recursion node.js promise

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

Perl:通过STDIN从'tail -f'管道读取

还有很多其他类似的线程,但通常的结论是"Install File :: Tail".但是,我在一个旧盒子上,我们正在退役,我只想写一个单行来监视日志.我尝试安装File :: Tail,但CPAN的环境不起作用,我不想花时间弄清问题是什么.

我只想要一个基本脚本来解析一个IP地址,并为我保留一个计数.但是出于某种原因,即使这个简单的测试也行不通:

$ tail -f snmplistener.log|grep IPaddress |perl -ne 'print "LINE: $_\n";'
Run Code Online (Sandbox Code Playgroud)

我认为它与输出缓冲有关,但我总是对它的工作原理有点模糊.我怎样才能使这个单线工作?

perl stdin tail output-buffering

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

为什么我的Perl祝福文件句柄不能用`can('print')`'返回true?

出于某种原因,我无法使用Expect.pm的log_file方法处理文件句柄.我最初得到了帮助如何将文件句柄传递给Perl Expect的log_file函数?,建议我使用IO :: Handle文件句柄传递给方法.这似乎是一个不同的问题,所以我想我会开始一个新的问题.

这是Expect.pm的违规部分:

if (ref($file) ne 'CODE') {
  croak "Given logfile doesn't have a 'print' method"
    if not $fh->can("print");
  $fh->autoflush(1);        # so logfile is up to date
}
Run Code Online (Sandbox Code Playgroud)

那么,我尝试了这个示例代码:

use IO::Handle;
open $fh, ">>", "file.out" or die "Can't open file";
$fh->print("Hello, world");
if ($fh->can("print"))
{
  print "Yes\n";
}
else
{
  print "No\n";
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到两个(在我看来)冲突的项目.一行显示"Hello,world"和"No"输出的文件.在我看来,该$fh->can行应该返回true.我错了吗?

perl file handle

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

为什么在某些授权命令中"必须'标识'?

我不明白这一点.我有一个数据库,my_database和一个表,tablename.我有一个用户,ken他只具有对数据库的只读权限.此用户已设置密码,人们远程使用此用户名.我想给他们一些权限tablename.

这不起作用:

mysql> grant SELECT, INSERT, UPDATE, DELETE on my_database.tablename to 'ken'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

但这样做:

mysql> grant SELECT, INSERT, UPDATE, DELETE on my_database.tablename to 'ken'@'%' identified by password '<existing password hash>';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

为什么?identified by如果他们已经是用户,我认为该部分是可选的?

mysql sql database-administration grant

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

全局变量在子程序中重置自身

请原谅我(可能)愚蠢的问题,但我正在搞乱这个代码(实际上是一个大型程序中的某个模型),有些东西让我失望:

sub recurse { 
  my $m = shift; 
  $g .= "::" . $m; 
  if ($m == 0) { return $g; } 
  else { $m--; recurse ($m); }
}

for ($i = 0; $i < 3; $i++)
{
  my $g = '';
  $str = recurse (10); 
  print $str . "\n";
}
Run Code Online (Sandbox Code Playgroud)

'for'循环的第一次迭代工作正常.然而,在随后的迭代中,我遇到了一个问题.如您所见,在调用递归函数之前,全局变量$ g在'for'循环中首先被重置.使用调试器,我可以看到在调用函数之前$ g被设置回''.但是,只要输入函数'recurse',它就会返回到先前的值.我在这里错过了什么?

作为必然结果,我不喜欢在这里使用全局变量.如果没有为recurse()创建$ ga参数,那么"正确"的方法是什么?

recursion perl scope

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

使用node.js从redis获取hierchical数据

我希望那里有人可以用这个来解救我.出于某种原因,我无法理解node.js中的递归.如果有另一种方式,它甚至不必是递归.

我正在使用redis集来存储集合中的层次结构:

SADD parents.<name> <parent1> <parent2>
Run Code Online (Sandbox Code Playgroud)

那么,parent1和parent2也将有条目,然后是up.我想将它转换为JSON对象数组.

JSON将如下所示:

[
 {
     label: <name>,
     parents: [
         { label: <parent1>,
           parents: [ {label: <grandparent1>}] },
         { label: <parent2> }
     ]
 }
]
Run Code Online (Sandbox Code Playgroud)

等等等等.这应该能够适用于任何深度,尽管平均来说它只有4-6个节点深.

这里有一些我一直在玩的代码,只是让我获得了第一级:

var redis = require('node-redis');
var r_client = redis.createClient();

function get_parents (name, current, cb) {

        var output = new Array;
        output.push( { label: name, parents: [] } );

        r_client.smembers('parents.' + name, function(err, reply) {
            for (var i = 0; i < reply.length; i++)
            {
                var name = reply[i].toString('utf8');
                output[i].parents.push({label: name, …
Run Code Online (Sandbox Code Playgroud)

recursion redis node.js

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

在 Perl DBI 中处理大结果的最有效方法是什么?

我有一张有几百万行的表。目前,我正在通过以下方式一次处理 10,000 个:

for (my $ival = 0; $ival < $c_count; $ival += 10000)
{
    my %record;

    my $qry = $dbh->prepare
            ( "select * from big_table where address not like '%-XX%' limit $ival, 10000");
    $qry->execute();

    $qry->bind_columns( \(@record{ @{$qry->{NAME_lc} } } ) );

    while (my $record = $qry->fetch){
        this_is_where_the_magic_happens($record)
    }
}
Run Code Online (Sandbox Code Playgroud)

我做了一些基准测试,我发现准备/执行部分虽然最初很快,但在多个 10,000 行批处理后显着减慢。这是一种愚蠢的写法吗?我只知道如果我尝试一次性选择所有内容,此查询将永远持续下去。

以下是日志中的一些片段:

(Thu Aug 21 12:51:59 2014) Processing records 0 to 10000
SQL Select =>  1 wallclock secs ( 0.01 usr +  0.00 sys =  0.01 CPU)
(Thu …
Run Code Online (Sandbox Code Playgroud)

mysql sql perl dbi

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

匹配perl正则表达式中的n个括号

我有一些我在Perl中解析的数据,并且将在不久的将来添加越来越多不同格式的数据.我想要做的是编写一个易于使用的函数,我可以传递一个字符串和一个正则表达式,它将返回括号中的任何内容.它会像这样工作(伪代码):

sub parse {
  $data = shift;
  $regex = shift;

  $data =~ eval ("m/$regex/")
  foreach $x ($1...$n)
  {
    push (@ra, $x); 
  }
  return \@ra;
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以这样称呼它:

@subs = parse ($data, '^"([0-9]+)",([^:]*):(\W+):([A-Z]{3}[0-9]{5}),ID=([0-9]+)');
Run Code Online (Sandbox Code Playgroud)

如您所见,此代码存在一些问题.我不知道eval是否会起作用,'foreach'肯定不会起作用,而且不知道有多少括号,我不知道循环多少次.

这对于拆分来说太复杂了,所以如果还有其他功能或可能性我忽视,请告诉我.

谢谢你的帮助!

regex perl eval subroutine

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

如何从hashref中的数组中弹出?

大脑在这一个上变得模糊.我想把我的骰子游戏从使用rand()到使用来自random.org的随机值列表.我能够很好地检索这些值,我只是挂起了从列表中弹出的语法.

这是我的功能,让我适合:

sub roll_d
{
  return (pop($$dice_stack{@_[0]}));
  # Original code:
  #return (int(rand @_[0]) + 1);
}
Run Code Online (Sandbox Code Playgroud)

其中$ dice_stack是指向散列的指针,其中键是骰子类型(d6为'6',d20为'20'),值为1和骰子类型之间的整数数组.

arrays random perl hash hashref

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