最近我在求职面试时被问到这个问题.我是诚实的,并说我知道符号链接的行为以及如何创建一个,但不理解硬链接的使用以及它与符号链接的区别.
更喜欢什么:
Assert.That(obj.Foo, Is.EqualTo(true))
Run Code Online (Sandbox Code Playgroud)
要么
Assert.True(obj.Foo)
Run Code Online (Sandbox Code Playgroud)
对我来说,两个断言都是等价的,那么哪一个应该是首选的?
我目前在我的Mac上安装了多个版本的Python,它附带了一个版本,我最近从python.org下载的版本,用于在本地运行Zope的旧版本以及Appengine正在使用的另一个版本.这有点乱.使用一个版本的python来统治它们的任何建议?如何删除旧版本并将我的所有应用程序链接到单个安装.我应该知道的任何Mac特定陷阱?这是一个愚蠢的想法吗?
Windows和Linux中的管道有什么区别?
我有一组存储在我的数据库中的依赖项.我希望找到所有依赖于当前对象的对象,无论是直接还是间接.由于对象可以依赖于零个或多个其他对象,因此对象1依赖于对象9两次(9取决于4和5,两者都取决于1)是完全合理的.我想得到所有依赖于当前对象的对象的列表而不重复.
如果有循环,这会变得更复杂.没有循环,可以使用DISTINCT,虽然不止一次只通过长链来剔除它们仍然是一个问题.然而,对于循环,RECURSIVE CTE不会与它已经看到的东西结合变得很重要.
所以我到目前为止看起来像这样:
WITH RECURSIVE __dependents AS (
SELECT object, array[object.id] AS seen_objects
FROM immediate_object_dependents(_objectid) object
UNION ALL
SELECT object, d.seen_objects || object.id
FROM __dependents d
JOIN immediate_object_dependents((d.object).id) object
ON object.id <> ALL (d.seen_objects)
) SELECT (object).* FROM __dependents;
Run Code Online (Sandbox Code Playgroud)
(它在存储过程中,所以我可以传入_objectid)
不幸的是,当我之前在当前链中看到它时,这只是省略了一个给定的对象,如果递归CTE正在深度优先完成,那将会很好,但是当它是广度优先时,它会变得有问题.
理想情况下,解决方案将是SQL而不是PLPGSQL,但任何一个都可以.
举个例子,我在postgres中设置了这个:
create table objectdependencies (
id int,
dependson int
);
create index on objectdependencies (dependson);
insert into objectdependencies values (1, 2), (1, 4), (2, 3), (2, 4), (3, 4);
Run Code Online (Sandbox Code Playgroud)
然后我尝试运行这个:
with recursive rdeps as ( …Run Code Online (Sandbox Code Playgroud) $ perl -pe 1 foo && echo ok
Can't open foo: No such file or directory.
ok
Run Code Online (Sandbox Code Playgroud)
当文件不存在时,我真的希望 perl 脚本失败。当输入文件不存在时,使 -p 或 -n 失败的“正确”方法是什么?
有没有办法指定特定命令具有不区分大小写,而不是全局打开不区分大小写(至少对于那个shell)?
在我的特定情况下,我有一个小应用程序,它让我命令行访问电子邮件地址的数据库,所以我输入:
db get email john smith
Run Code Online (Sandbox Code Playgroud)
然后它返回John Smith的电子邮件地址.所以我设法在应用程序内部完成启用:设置
COMPREPLY=($(compgen -W "$(db --complete $COMP_CWORD "$COMP_WORDS[@]"}")" -- ${COMP_WORDS[COMP_CWORD]}))
Run Code Online (Sandbox Code Playgroud)
可以让我选项卡完成get和email.但是,如果我输入j<tab>,它就会拒绝,因为在电子邮件数据库中,它是正确的大写.无论如何,我想得到bash来完成这个.(如果我使用资本J,它会起作用.)
如果不这样做,我可以让我的--complete选项通过匹配输入来改变其回复的情况,我想,但理想情况下,如果可能的话,命令行将匹配数据库.
请注意,我在使用readline时在app中工作,它只与bash接口,这似乎是一个问题.
我知道我可以在命令行上使用 assoc 和 ftype 来获取文件类型关联。所以当我这样做时:
我的印象是 .html 文件是用 iexplorer 打开的。
但是 html 文件使用 chrome 打开,因为 chrome 已被设置为 html 文件的默认应用程序。
当程序确实用 chrome 打开时,为什么 ftype 会给我 iexplorer?
我需要在用户更改源文件时对源文件中的某些模式进行大量搜索,因此我需要进行时间和内存高效的正则表达式匹配.模式重复,所以应该编译一次,但我需要能够检索子部分(而不是只是确认一个匹配)
我正在考虑使用java.util.regexp或Jakarta perl5util(如果它仍然存在,我使用它已经过了几年),或者可能是Eclipse搜索引擎,虽然我怀疑它更聪明.
这两者之间是否存在显着的性能差异?
我正在尝试做类似以下的事情:
for file in `find . *.foo`
do
somecommand $file
done
Run Code Online (Sandbox Code Playgroud)
但命令不起作用,因为$ file非常奇怪.因为我的目录树有蹩脚的文件名(包括空格),我需要转义find命令.但是没有明显的转义似乎有效:
-ls给我空格分隔的文件名片段
-fprint没有做得更好.
我也尝试过: for file in "找到.*.foo -ls"; do echo $file; done
- but that gives all of the responses from find in one long line.
任何提示?我很高兴任何解决方法,但我很沮丧,我无法弄清楚这一点.
谢谢,亚历克斯
(嗨马特!)
bash ×2
c# ×1
command-line ×1
escaping ×1
find ×1
for-loop ×1
hardlink ×1
ipc ×1
java ×1
macos ×1
named-pipes ×1
nunit ×1
osx-leopard ×1
perl ×1
pipe ×1
postgresql ×1
powershell ×1
python ×1
regex ×1
shell ×1
sql ×1
symlink ×1
unit-testing ×1
unix ×1
windows-10 ×1
zope ×1