小编pil*_*row的帖子

ruby idiom:谓词和条件运算符

我喜欢明智地使用三元条件运算符.在我看来,它非常简洁.

但是,在ruby中,我发现我经常测试谓词方法,它们已经有了自己的问号:

some_method( x.predicate? ? foo : bar )
Run Code Online (Sandbox Code Playgroud)

这两个问号彼此如此接近,我感到震惊.是否存在等效的紧凑且可读的替代方案?

ruby predicate ternary-operator conditional-operator

6
推荐指数
2
解决办法
1584
查看次数

Iterating through dates in SQL

I have a table of data that looks a bit like this:

Name    StartTime              FinishTime              Work
Bob     2010-08-03 08:00:00    2010-08-03 12:00:00     4
Bob     2010-08-03 13:00:00    2010-08-03 16:00:00     3
Pete    2010-08-04 08:00:00    2010-08-04 12:00:00     4
Mark    2010-08-04 10:00:00    2010-08-04 12:00:00     2
Run Code Online (Sandbox Code Playgroud)

None of these date ranges should ever span over midnight.
I want to write SQL that will give me the following output, given an input Start Date of 2010-08-02 and a Finish Date of 2010-08-05

Date          Name   TotalWork
2010-08-03    Bob …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005 gaps-and-islands

6
推荐指数
2
解决办法
8414
查看次数

什么是 @.在Perl?

@.perl中的变量是什么?

它看起来是一个特殊的,可写的全局,并且(令人惊讶地)不会在双引号字符串中进行插值:

use strict;
use warnings;

                 # Under 5.8, 5.10, 5.12, 5.14, and 5.16,
                 # the following lines produce:

@. = (3, 2, 1);  # no error
print "@.\n";    # "@."
print @., "\n";  # "321"

eval 'my @.; 1'  # Can't use global @. in "my" at (eval 1)
  or die $@;     #  line 1, near "my @."
Run Code Online (Sandbox Code Playgroud)

我不记得以前遇到它,并没有看到它perlvar也不是perldata.

variables perl

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

为什么Perl的两个arg开放似乎剥离换行?

当我open()使用包含尾随换行符的文件名调用perl的two-arg 时,将忽略换行符.然而,三个arg版本保留了换行符.

为什么行为会有所不同?为什么新线表面上被剥离了?

- 文件"nl"不存在.做了

$ ls -1 nl; touch nl; ls -1 nl
ls: nl: No such file or directory
nl

- 尝试三个arg打开"nl \n"→ENOENT

strace显示了我期望的行为,FWIW.

$ perl -E 'open(F, "<", "nl\n") or die $!'
No such file or directory at -e line 1.

$ strace -e trace=open perl -E 'open(F, "<", "nl\n") or die $!' 2>&1 | grep nl
open("nl\n", O_RDONLY|O_LARGEFILE)      = -1 ENOENT (No such file or directory)

- 现在,试试两个arg打开"nl \n"→成功?

$ perl -E 'open(F, …

filesystems perl

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

如何确定pid_t的最大值?

我如何可移植地确定该pid_t类型的最大值?我的系统上没有PID_MAX常量.

(注意,我的意思是数据类型允许的最大值,而不是系统将分配给进程的事实上的最大值.)

使用案例:我正在将用户提供的pid字符串规范转换为a pid_t,并希望确保用户的输入不超过类型的容量.

c linux size pid

6
推荐指数
2
解决办法
3587
查看次数

从CGI迁移到mod_perl.了解我的,我们的,本地的

几年来我一直在使用apache mod_cgi.现在我转向mod_perl,我发现了一些问题,特别是子程序.直到现在我从未使用my,our也没有local; 并且CGI脚本没有问题.阅读文档后,甚至在此处发布的一些先前的问题,我或多或少了解如何my,our并且local工作.我担心的是下一个请求之间将共享哪些信息(如果我理解正确的话,这是我在运行mod_perl而不是mod_cgi时必须具备的主要问题).

  • our在标量中使用还是只是在没有声明任何特殊内容的标量之间有什么区别my?不是全球性的吗?
  • 如果我没有声明标量为private将在下一个请求中共享?即使在同一服务器中的另一个perl脚本的另一个请求中?
  • 如何将子例程中的标量值共享到子例程之外但不在同一文件之外或同一请求之外?
  • 如果我使用my的标内的if在文件的同一级别或同一子程序,在那之后我创建另一个if地方我用同样的标量; 两个if或每个之间共享的标量是否if意味着不同的块?什么whilefor,是他们对先前声明为不同的块my标或只适用于子程序和文件?

perl scope mod-perl mod-perl2

6
推荐指数
2
解决办法
1696
查看次数

为什么errno,当POSIX函数通过返回-1或NULL指示错误条件时

当其中一个UNIX系统函数发生错误时,通常会返回负值,并将整数errno设置为一个值,从而提供其他信息. - UNIX环境中的高级编程,第1.7节

这看起来很奇怪:

  • 它引入了标准库的不同编译单元之间的耦合 - 错误状态未在导致它们的模块中定义.
  • 它引入了实现复杂性,因为errno需要是线程本地的.
  • 它引入了可用性复杂性,因为用户需要检查原始系统调用是否有错误,然后检查errno哪个也是另一个函数调用.

为什么不在返回值中编码错误状态?

c posix errno

6
推荐指数
2
解决办法
636
查看次数

想在mysql结果中获取所有日期

我有mysql表名为user(id,name,join_on)join on是一个日期字段我想要的是每天显示已经创建了多少用途我可以使用group by但它只会给我用户获取的日期像日期一样添加

4/12/10  5 users added
4/13/10  2 users added
4/15/10  7 users added
Run Code Online (Sandbox Code Playgroud)

这里的日期4/14/10不见了,我希望在一个月内列出所有日期.我有一个解决方案,通过创建另一个表只用于添加日期,该表将在join_on上连接我的用户表并将给出总结果但我不想这样做,因为创建我需要创建和添加条目在日期表中,请建议采用不同的方法.

谢谢.

mysql sql gaps-and-islands

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

在 Firebird 中创建一个整数时间戳

我需要一个时间戳作为整数(请不要问我为什么,我完全被这个困扰)。像往常一样,定义是 01.01.1970 之后的秒数。

我的初始值是具有以下格式的字符串

YYYYMMDDHHMMSS(例如 20140108154821)

我已经能够建立一个正常的时间戳

CAST(
(SUBSTRING ( t.thetime FROM 5 FOR 2 )||'/'||SUBSTRING ( t.thetime FROM 7 FOR 2 )||'/'||SUBSTRING ( t.thetime FROM 1 FOR 4 )||' ' ||SUBSTRING ( t.thetime FROM 9 FOR 2 )||':'||SUBSTRING ( t.thetime FROM 11 FOR 2 )||':'||SUBSTRING ( t.thetime FROM 13 FOR 2 )||'.00'
) AS TIMESTAMP)
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用这种技术将其转换为 int

CAST(cast(
(SUBSTRING ( t.thetime FROM 5 FOR 2 )||'/'||SUBSTRING ( t.thetime FROM 7 FOR 2 )||'/'||SUBSTRING ( t.thetime FROM 1 FOR 4 …
Run Code Online (Sandbox Code Playgroud)

sql firebird timestamp casting epoch

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

Perl:命名捕获组默认为替换字符串

以下 Perl 代码在第二次尝试取消引用捕获组“ext”时失败

use strict;
use warnings;

foreach(qw/2.1 2/){
#foreach(@ARGV){
    my $out= sprintf("%.2f", $_);
    $out =~ s/(?:(?<ext>\.[1-9]?)|\.0)0([^\w]|$)/$+{'ext'}/g;
    print ":".$out.":\n";
}
Run Code Online (Sandbox Code Playgroud)

如果未定义替换字符串中的捕获组,如何设置默认值?

我确信还有其他几种方法可以解决这个问题,但我相信无法为捕获组设置默认值肯定会再次出现 - 所以请帮我解决这个问题。

跟进:

..我在池上建议的帮助下让它工作,所以它读

$out =~ s{(?:(?<ext>\.[1-9]?)|\.0)0([^\w]|$)}{ $+{'ext'} // "" }eg;
Run Code Online (Sandbox Code Playgroud)

……难道就没有别的办法了吗?特别是因为这只适用于 Perl 的“e”评估正则表达式功能。这也必须以标准正则表达式的方式出现,如果一开始就没有捕获的话,至少要忽略捕获组解除引用,不是吗?

regex perl capture-group

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