我正在编写一个包含大量重复内容的Makefile,例如
debug_ifort_Linux:
if [ $(UNAME) = Linux ]; then \
$(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..." \
TARGET=$@ LEXT="ifort_$(UNAME)" -e syst; \
else \
echo $(err_arch); \
exit 1; \
fi
Run Code Online (Sandbox Code Playgroud)
在定义目标'syst'的地方,定义了变量'UNAME'(通常是Linux,但也可能是Cygwin或OSF1),并且还定义了变量'difort'和'err_arch'.这段代码对于不同的编译器目标使用了很多次(使用名称约定'").由于这是一个庞大的冗余代码,我希望能够以更简单的方式编写它.例如,我想做这样的事情:
debug_ifort_Linux:
compile(uname,compiler,flags,petsc_flags,target,lext)
Run Code Online (Sandbox Code Playgroud)
其中compile可以是一个基于参数执行上述代码的函数.有谁知道我怎么能做到这一点?
作为业余软件开发人员(我还在学术界),我为XML文档编写了一些模式.我经常遇到导致丑陋的XML文档的设计漏洞,因为我不完全确定XML的语义究竟是什么.
我的假设:
<property> value </property>
Run Code Online (Sandbox Code Playgroud)
property = value
<property attribute="attval"> value </property>
Run Code Online (Sandbox Code Playgroud)
具有特殊描述符的属性,属性.
<parent>
<child> value </child>
</parent>
Run Code Online (Sandbox Code Playgroud)
父母有一个特征"孩子",其价值"值".
<tag />
Run Code Online (Sandbox Code Playgroud)
"标签"是一个标志或直接转换为文本.我不确定这个.
<parent>
<child />
</parent>
Run Code Online (Sandbox Code Playgroud)
"孩子"描述"父母"."child"是一个标志或布尔值.我也不确定这个.
如果你想做一些代表笛卡尔坐标的事情,就会出现歧义:
<coordinate x="0" y="1 />
<coordinate> 0,1 </coordinate>
<coordinate> <x> 0 </x> <y> 1 </y> </coordinate>
Run Code Online (Sandbox Code Playgroud)
哪一个最正确?基于我目前对XML模式设计的概念,我倾向于第三种,但我真的不知道.
有哪些资源简洁地描述了如何有效地设计xml架构?
我知道BEGIN块是在Perl程序的主体之前编译和执行的.如果你不确定那只是尝试运行命令perl -cw:
#!/ms/dist/perl5/bin/perl5.8
use strict;
use warnings;
BEGIN {
print "Hello from the BEGIN block\n";
}
END {
print "Hello from the END block\n";
}
Run Code Online (Sandbox Code Playgroud)
我被告知,早期编译和执行BEGIN块可以让程序员确保在执行主程序之前可以获得所需的任何资源.
所以我一直在使用BEGIN块来确保数据库连接已经建立并可供主程序使用.类似地,我使用END块来确保在程序终止之前关闭,删除,终止所有资源等.
经过今天早上的讨论,我想知道这是否是错误的方式来看待BEGIN和END块.
BEGIN块在Perl中的预期作用是什么?
更新1:刚刚发现为什么DBI连接不起作用.在给出这个小Perl程序之后:
use strict;
use warnings;
my $x = 12;
BEGIN {
$x = 14;
}
print "$x\n";
Run Code Online (Sandbox Code Playgroud)
执行时打印12.
更新2:感谢Eric Strom在下面的评论,这个新版本更加清晰:
use strict;
use warnings;
my $x = 12;
my $y;
BEGIN {
$x = 14;
print "x => $x\n";
$y = 16;
print "y => $y\n";
}
print "x …
Run Code Online (Sandbox Code Playgroud) 我在读这本书"软件架构师的职业",由马克和劳拉·休厄尔(亚马逊链接),它让我想一个软件架构师是否是旧的非敏捷BDUF方法的一部分.
软件架构师是否有灵活处理的地方?我对Scrum特别感兴趣.
BTW我目前是一家大公司的Unix应用程序架构师.
干杯,
抢
在迈克尔·斯帕克斯(Michael Sparks)在伦敦SO DevDay的Peter Norvig的Python拼写检查工作中,我正在重温Python.
他强调的一点是要看看Python的清晰程度.没有用于范围的大括号,而是使用空格来指示块范围.
这让我思考.我想知道这是否是构建make目标所需命令的TAB缩进背后的原因.
这是一样的清晰度吗?要轻松区分目标和构建目标所需的命令?
鉴于从C编译以在Solaris上运行的可执行文件,是否可以确定使用哪个编译器来编译关联的不完整可执行文件?
使用字符串或文件命令时,我看不到任何内容,而魔法似乎不包含任何特定内容.
编译器通常会在可执行输出文件中放置指纹吗?
干杯,
您对如何测试多线程应用程序有什么建议吗?
我知道,线程错误很难捕获,它们可能随时发生 - 或者根本不发生.测试很困难,结果永远不会确定.当然最好仔细设计和编程并发模块.
尽管如此 - 我不想忽略测试方面.因此,运行大量同时处理相同项目的线程有时会调用线程错误.
任何想法或最佳实践,以获得隐藏线程错误的高命中率?
(我正在使用.Net/C#)
我想检查字符串是否是文件名(名称为DOT ext).
文件名不能包含 / ? * : ; { } \
你能建议我在preg_match()中使用正则表达式吗?
makefile ×2
agile ×1
architecture ×1
bash ×1
c# ×1
concurrency ×1
function ×1
gnu-make ×1
module ×1
perl ×1
php ×1
preg-match ×1
python ×1
regex ×1
scrum ×1
syntax ×1
testing ×1
validation ×1
xml ×1
xsd ×1