RSS

  • YouTube
  • LinkedIn
  • 谷歌

档案 : December2015

命名文件使用从列表 0 到 Z

今天我编写一些脚本,发现有点小麻烦,使用定义的模式.

模式是创建的文件序列中的开始位置 0 (零) 和不能重复,直到 Z.

示例:

myfile0.ext, myfile1.ext, myfile2.ext, (...), myfile9.ext, myfileA.ext, myfileB.txt, (...), myfileZ.txt

很好, 这不是一个大麻烦,所以我没有使用此代码.

// Filename
$seq = $last_used_seq = '';
$seqs = array_merge(range('0','9'), range('A', 'Z'));]
$l = 1;
while (!in_array($seq, $seqs)) {
    $seq = chr(ord($last_used_seq) + $l++);
}

$seq

做不了的预期值 0 (零) 第一次运行. 相反, 它是空白.

调试的变量, 看到了, while 从来没有计算结果为 true. 试图复制在命令行上发现

in_array($seq, $seqs);

始终返回 true. 我试着用 “”, “R” 无论什么价值,我用, 仍在返回 true.

所以我更改为使用 STRICT 理由 in_array to true and works for ‘;A’; through ‘;Z’;, but not for ‘;0; through ‘;9;.

while (!in_array($seq, $seqs, true)) {
    $seq = chr(ord($last_used_seq) + $l++);
}

Damn…; PHP 是正确, ;0; 严格来说并不等于 0. 的 Chr 函数返回值 string

范围('' 0, '' 9)

创建 arrayinteger 值.

所以, 我改变了方法来评估所有的值 STRICT, 因为我想要创建一个干净整洁的代码没有其他要使用的函数.

This is the final code that I’;m 使用:

// 最初的值 $seq = ';
$seqs = array_merge(范围(ord('' 0),ord('' 9)), 范围(ord(' A'), ord(' Z')));
$seqs = array_map(chr', $seqs);
$l = 1;
同时 (!in_array($seq, $seqs, 真正的)) {
    $seq = chr(ord($新闻电台['' last_seq]) + $l + +);
}

// 文件名 foreach ($itens_for_files as $key =>; $条 】) {
    // ... 另一种代码,以填充文件 $seq = chr(ord($seq) + 1);
    同时 (!in_array($seq, $seqs, 真正的)) {
    $seq = chr(ord($seq) + 1);
    $文件名 = myfile . $seq . ''.ext;
    // ...
}

你甚至可以看到, 我改变了 $seqs initial values from ‘;0; 到你 ASCII 代码和回到你给了我的价值 array 与中的所有值 string 类型.

见你!

PHP 比较错误

今天, 我在写一个脚本在 PHP 使用在命令行中,当遇到了意外的行为 (至少对我而言).
该脚本应接收三个参数, 其中最后一个包含一个或多个数字代码列表.
尝试验证此最后一个参数得到一个不同的结果,比想象中.
看到我正在使用的代码片段:

// test.php 如果 (php_sapi_name() = = 'cli') {
    $di = 设定($argv[1]) ? $argv[1] : 日期(' Y-m-' d); // 初始日期 $df = 设定($argv[2]) ? $argv[2] : 日期(' Y-m-' d); // 最后日期 $prods = 设定($argv[3]) ? 爆炸(',', $argv[3]) : 数组(); // 代码列表

    ##### 验证
    // 如果,初始日期 ($迪 != 日期(' Y-m-' d, strtotime($迪))) {
        回声 "\n";
        回声 "错误! 初始日期无效!\n";
        退出;
    }
    // 决赛日期如果 ($df != 日期(' Y-m-' d, strtotime($df))) {
        回声 "\n";
        回声 "错误! 无效的最后日期!\n";
        退出;    
    }

    // 如果,代码 (计数($电棒) >; 0) {
        foreach ($作为 $prod 刺) {
            如果 ($产品 != (int)$产品) {
                回声 "\n";
                回声 "错误! 代码 " . $产品 . " 是无效的!\n" ;
                退出;
            }
        }
    }
    回声 "完成!";
}

继续阅读 > >

如何修复日期/时间在 Centos 6.X 为您在日志中的时区

今天我遇到一个问题时使用 Fail2ban 那会帮助我保持服务器甚至下袭击从空气中 蛮力.

我的筛选器之一不被禁止几次试图验证到我的服务虽然天气晴朗. 我决定增加 Findtime 常见的配置和它开始蔓延.

所以有时间去了解为什么 findtime 他不能向下传播. 我开始检查详细的设置,我意识到,即使我改变了我的时区的时间到巴西利亚的官方时间表, 日志继续显示中 UTC 时间表. 怀疑,它可能是这,决定要更改日志中放置的计划 (/var,日志,消息).

宾果!

后的变化,并确认日志都使用同一时间表,报告中

日期 

为想要的值改变 findtime 和一切工作按预期.

按照食谱要更改日程安排.

时区信息是在文件上 /等/区 如果他不是你想要的只是替换他他想要和这就是目前在 /usr/共享/zoneinfo /. 在我的例子, 我多么希望巴西利亚的时间表, 我用 /usr 份额 zoneinfo 美国 Sao_Paulo.

# LN-sf/usr/共享/zoneinfo/美国/Sao_Paulo/等/区

现在只是尝试使用 date 命令,检查的输出应类似:

# 日期星期三 Dec 9 15:55:58 我 BRST 2015

即使在这些更改后, 日志将继续有时间用传统的方式. 更改此编辑的文件,等等,sysconfig 时钟并添加行下面以反映您的时区.

区 ="美国/Sao_Paulo"
UTC = 假弧 = false

在我的例子, 我不得不重新启动服务器以使更改到 surtissem 的效果但是 rsyslog 服务已经解决的只重新启动.

# 服务 rsyslog 重新启动

到下个星期.

如何解决在 Debian Linux/Ubuntu 上的区域设置错误

今天我不得不看向下运行 FTP 服务器日志 纯 ftp 和我意识到时间表都在 UTC .
以发送日志给第三方的部分,使它的使用并不熟悉系统, 最终可能会发生一些误会. 然后,应坚持巴西时区的所有应用程序的日志,我决定.
根据文档的纯 ftp 它使用环境变量来确定将包括在日志中的附表

继续阅读 > >