小编Yau*_*ich的帖子

是否有更好的PHP方法可以通过数组(字典)中的键获取默认值?

Python中,可以做到:

foo = {}
assert foo.get('bar', 'baz') == 'baz'
Run Code Online (Sandbox Code Playgroud)

PHP中,可以使用三元运算符,如:

$foo = array();
assert( (isset($foo['bar'])) ? $foo['bar'] : 'baz' == 'baz');
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个高尔夫版本.我可以在PHP中更短/更好吗?

php arrays key default-value

46
推荐指数
6
解决办法
3万
查看次数

Lustre,Gluster或MogileFS ?? 用于视频存储,编码和流媒体

这么多的选项和很少的时间来测试它们......我想知道是否有人有分布式文件系统的视频流和存储/编码经验.

我有很多巨大的视频文件(50GB到250GB),我需要存储在某个地方,能够将它们编码为mp4并从几个Adobe FMS服务器流式传输.处理所有这一切的唯一方法是使用分布式文件系统,但现在的问题是哪个?

到目前为止我的研究告诉我:

  • Lustre:成熟的成熟解决方案,被许多大公司使用,最好用> 10G文件是内核驱动程序.
  • Gluster:新的,不太成熟,基于FUSE意味着易于安装,但由于FUSE开销可能会更慢.最好处理大量的小文件〜1GB
  • MogileFS:似乎只适用于小文件~MB,使用HTTP进行访问?未来可能的FUSE绑定.

到目前为止,Lustre似乎是赢家,但我希望听到我所拥有的特定应用的真实体验.

此外,Hadoop,Redhat GFS,Coda和Windows DFS也可作为选项,因此欢迎任何体验.如果有人有基准,请分享.

经过一些实际经验后,这就是我所学到的:

  • 光泽:
    • 表现:惊人的快!我可以断言Lustre可以服务很多流,并且通过Lustre访问文件不会影响编码速度.
    • POXIS兼容性:非常好!无需修改应用程序即可使用光泽.
    • 复制,负载平衡和故障转移:非常糟糕!对于复制负载平衡我们和故障转移,我们需要依赖其他软件,如虚拟IP和DRDB.
    • 安装:最糟糕的!凡人都无法安装.需要非常具体的内核,光泽补丁和调整组合才能使其正常工作.目前的光泽补丁通常适用于与新硬件/软件不兼容的旧内核.
  • MogileFS:
    • 性能:适用于小文件但不适用于中型到大型文件.这主要是由于HTTP开销,因为所有文件都是通过HTTP请求发送/接收的,这些请求对base64中的所有数据进行编码,为每个文件增加了33%的开销.
    • POXIX兼容性不存在.所有应用程序都需要修改为使用mogilefs,因为大多数流服务器和编码工具都不了解MogileFS协议,因此它无法用于流/编码.
    • 通过一次访问多个跟踪器,可以在应用程序中实现开箱即用的复制和故障转移以及负载平衡.
    • 安装相对容易,大多数发行版中都有现成的软件包.我发现的唯一困难是设置数据库主从,以消除单点故障.
      • Gluster:
    • 性能:非常糟糕的流式传输.在10Gbps网络中,我无法达到超过几Mbps的速度.客户端和服务器CPU在大量写入时飙升.对于编码是有效的,因为CPU在网络和I/O之前已经饱和.
    • POXIS:几乎兼容.我使用的工具可以访问gluster挂载作为磁盘中的普通文件夹,但在某些边缘情况下,事情开始引起问题.检查gluster邮件列表,你会发现有很多问题.
    • 复制,故障转移和负载平衡:最好的!如果他们真的有效 Gluster非常新,它有很多bug和性能问题.
    • 安装太简单了.管理命令行非常棒,在多个服务器之间设置复制,条带和分布式卷并不容易.

定论:

不幸的是,结论是"没有单一的银弹".

目前,我们将Gluster3.2中的媒体文件放在复制卷中以进行存储和转码.只要您没有很多服务器,就可以避免地理复制和条带卷工作正常.

当我们要传输媒体文件时,我们将它们复制到通过DR:DB复制到第二个光泽卷的光泽卷.然后,wowza服务器从光泽卷中读取媒体文件.

最后,我们使用MogileFS来提供Web应用程序服务器中的缩略图.

video streaming microsoft-distributed-file-system

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

使用python日志记录过滤不同记录器的正确方法是什么?

我的目的是使用分层过滤进行多模块日志记录

记录作者Vinay Sajip 提出的方式,至少据我猜测;-)

你可以跳到" 我希望它如何工作 "

不幸的是,我很快就了解到,使用日志工具比使用该语言的大多数其他经验要复杂得多,我已经做了很多常见的(设计)错误,例如尝试为多个模块实现集中式单个Logger类日志记录甚至是类似的方案(使用Python logger类为不同的日志级别生成多个日志).但显然有更好的设计空间,花费时间寻找和学习它可能会更糟糕.所以,现在我希望我走在正确的轨道上.否则Vinaj将不得不澄清其余的;-)

我安排我的日志记录如下:

  • 每个python模块都有自己的记录器
  • 每个记录器的名称与定义它的模块相同,例如 logger = logging.getLogger(__name__)
  • 像这样,每个模块中的代码可以使用自己的(本地定义的)记录器将日志消息(logging.LogRecord)发送给处理程序(logging.Handler)
  • 使用logging.config实现日志记录配置的完全灵活性(注意:在下面的代码中我只是从basicConfig开始)

这种方法是推荐的方法,我同意其可能的优点.例如,我可以使用完全限定的模块名称(代码中已存在的命名层次结构)打开/关闭外部库的DEBUG.

现在为了获得更高级别的控制,我想使用logging.Filter类,以便只能过滤(允许)记录器层次结构中的选定子树.

这一切都很好,但过滤如此处所述

Filter instances are used to perform arbitrary filtering of LogRecords.

Loggers and Handlers can optionally use Filter instances to filter
records as desired. The base filter class only allows events which are
below a certain point in the logger hierarchy. For example, a filter
initialized with "A.B" will allow events logged by …
Run Code Online (Sandbox Code Playgroud)

python logging filter

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

用于bash的代码格式化器/美化器(在命令行中)?

寻找可用于bash代码的命令行代码格式化程序.它必须是可配置的,并且最好可以从命令行使用.

我在bash中有一个大项目,我需要考虑使用Q. 到目前为止,我对Paul Lutus 编写的一个用python编写的程序很满意(他在Ruby中重新编写了他以前的版本).

请参阅http://arachnoid.com/python/beautify_bash_program.html(也在此处克隆https://github.com/ewiger/beautify_bash).

但是如果它存在的话,我想学习这个工具的任何重要替代品.要求:它应该提供足够强大的性能和处理/解析相当复杂的代码的行为.

PS我认为完全解析bash代码通常很复杂,因为没有官方语言语法(但如果我错了,请纠正我).

bash command-line code-formatting

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

现代MATLAB代码风格:缺少什么?

我试图采用MATLAB的编码标准,但我不确定我是否选择了正确的编码标准.

据我所知,除了本文档之外,MATLAB编程指南的主题并不多.该文件写得很好,反馈很好.标准版于2002年由Richard Johnson在matlab中心发布,但自那以后一直没有更新.是否有更新的版本或类似文件?(我真的没有想到其他的东西).

背景动机假定

  • 编码标准很重要
  • 尽管自2002年以来MATLAB没有太大变化,但其他语言及其方法也有所改变.人们可以从这些做法中获益.
  • 事实上很多人都在使用MATLAB或Octave编写新代码.虽然,有人会说这种语言实际上已经死了(等等).我宁愿不去那里(让我们把它标记为一个offtopic).

为什么codestyle对我来说不够好

我想在这里总结一些事情.如果你花时间阅读文档,你可能会发现它

  • 试图过于匈牙利语(这是神秘的,在大多数情况下我真的很讨厌这个)
  • 它有太多的快捷方式(更不像前一点那样)
  • Mathworks不支持它(但它实际上可能是件好事,因为MATLAB中的所有好东西都来自用户社区IMO)
  • 没有自动化的质量控制工具尊重这种编码风格(这里我的意思不是像*lint系列中的mlint,而是更像pep8.py for python)

我猜这种工具尚未开发的原因实际上是缺乏广泛接受的编码标准.

我非常感谢您对标准批评或有关更好标准的信息.

您是否有使用此标准的经验?哪部分不适合你?如果您从未使用过正式的编码标准,但确实有一些不适合它的有价值的做法 - 请举例说明.

matlab code-standards

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

Matlab:如何使用冒号运算符将结构的单元数组转换为结构数组?

假设有一个使用以下结构值初始化的单元数组.

% Phone book
phone_record{1} = struct('name', 'Bob', 'phone', '1233323');
phone_record{2} = struct('name', 'Mike', 'phone', '3245524');

% How to make such or similar one-liner work?
% phonebook(:) = phone_record{:}

% Expected:
% phonebook(1).name = 'Bob';
% phonebook(1).phone= '1233323';
% phonebook(2).name = 'Mike';
% phonebook(2).phone = '3245524';
Run Code Online (Sandbox Code Playgroud)

是否确实可以使用cell2struct或for循环索引完成此操作?可以使用交易或类似的吗?

注意:如果您不知道解决方案,请备用"最佳实践"提示或类似的"挥手".

matlab

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

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

寻找SMT Z3用例(如DbC)和Z3开源替代品的实际例子?

我有兴趣和寻找SMT Z3使用的实际例子(如DbC)以及该工具的代码和开源替代品.所以,事实上,我对类似的Z3正式求解工具很感兴趣,但是:

  • 它必须是开源的
  • 提供低级(API)和高级(文本脚本)交互
  • 支持SMT-LIB
  • 适合(可用)在工具中/用于编写/用于Java,python,ruby,Vala等语言,而不是 Haskell
  • 具有基于它的稳定(可在实践中使用)工具,如合同设计(DbC),静态类型验证等.

根据SMT-LIB主页(详见bit.ly软件包),2010年SMT解决方案列表为:"Alt-Ergo,Barcelogic,Beaver,Boolector,CVC3,DPT,MathSAT,OpenSMT,SatEEn,Spear,STP,SWORD, UCLID,veriT,Yices,Z3."

请提供有关在实践中使用其中任何一个的任何反馈(代码示例是最好的)?

最后,任何有关它与GHC可能性进行比较的信息都是有用的,但仅限于存在实施示例(不是语言"特征")的情况.

有关Z3的更快速信息,请访问http://bit.ly/bundles/ewiger/1

.net constraint-programming sat-solvers z3

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

从字符串中提取启发式(模糊)日期?

我在启发式解析包含日期但采用相当任意(未知)格式的文本字符串时遇到问题。

function parseDateStr($text) {
    $cleanText = filter($text);
    # ...
    $day = findDay($cleanText);
    $month = findMonth($cleanText);
    $year = findYear($cleanText);
    # .. assert constraints, parse again or fail
    return sprintf('%04d-%02d-%02d', $year, $month, $day)
}
Run Code Online (Sandbox Code Playgroud)

输入文本是英文句子加上任意语法符号(如 \W regexp 类的子集)。该算法的任务是仅在过滤掉与日期无关的任何潜在垃圾(嘈杂)词之后才提取日期。允许算法失败并且不返回结果。如果在字符串中只找到两个连接的数字 (MM) 和其他四个数字 (YYYY) 的两个组合 - 假设两个数字对应于日期的月份,并且日期被视为 01(日期的第一天)这个月)。结果以“YYYY-MM-DD”(SQL)格式(日期类型)给出日期。

我的想法是继续使用preg_replace & co设计一系列过滤器。此外,对 $year、$day 的范围使用逻辑约束,对 $month 使用词汇等,但如果可以想到或已经存在类似但更优雅的解决方案或方法,我不会感到惊讶。如果是这样,请让我知道他们。如果可以指出任何批评者或潜在的陷阱,我也将不胜感激。

类似问题的相关资料:

请注意,该问题与更基本的日期解析问题不同,因为:

因为就我而言,我无法指定或确定字符串的格式。另一方面,以下问题讨论了类似的任务:

我不确定最后一个是否重复,我最终不清楚 OP 想要解析什么(尽管checkdatedate_parse似乎部分有用)。但是关于整个“mokey business”的第一个问题也适用于我的案例,并且已通过模糊解析解决,如

dparser.parse("monkey 2010-07-10 love banana",fuzzy=True)
Run Code Online (Sandbox Code Playgroud)

最后,第二个包含很好的抓取正则表达式(几乎“模糊”)。

PS …

php regex algorithm heuristics date

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

调用外部程序时如何静音或重定向STDOUT?

按照文档我做:

julia> run(`echo hello`)
hello
Run Code Online (Sandbox Code Playgroud)

但实际上我并不需要那个输出

julia> run(`echo hello`)
Run Code Online (Sandbox Code Playgroud)

如何关闭它?我错过了什么?


process.jl 里面有一个名为Process的Type,但我现在还没想到如何生成它.

一些见解这里

julia> x = readall(`echo test`);

julia> x
"test\n"
Run Code Online (Sandbox Code Playgroud)

julia

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

在git中暂存文件的最佳实践

我正在寻找一个更好的git本身暂存文件的描述(除了 Git大提交最佳实践).我不需要将文件存储到较小的提交中,按模式忽略文件等.我正在寻找的是一个仅关于添加文件的教程 - 通过浏览大包(最多100个)"未分级"文件来提高效率并且可能正在编辑它们(如帅哥).

使用管道过滤的命令行技巧

git status -uno --porcelain | gawk '{ print $2 }' | xargs echo | xargs git add
Run Code Online (Sandbox Code Playgroud)

是offtopic.

一句话:我正在寻找"掌握"交互模式和模式的提示

git add
Run Code Online (Sandbox Code Playgroud)

git staging

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

内部类型定义保留

在0.3中工作的代码:

type foo
    bar::Int = 0
end
Run Code Online (Sandbox Code Playgroud)

迁移到Julia 0.4之后,会产生类似

julia4 test.jl
ERROR: LoadError: syntax: "bar::Int=0" inside type definition is reserved
 in include at ./boot.jl:254
 in include_from_node1 at loading.jl:133
 in process_options at ./client.jl:306
 in _start at ./client.jl:406
Run Code Online (Sandbox Code Playgroud)

错误是什么意思?如何在0.4-中修复它?

NB

我了解这是一个开发版本。我也用Google搜索并查阅了手册http://julia.readthedocs.org/en/latest/manual/types/

julia

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

如何获取包含.m文件的文件夹的相对路径

我在加载大量项目数据的地方编写代码。我想将我的路径名保留在相对于磁盘上该项目的某些位置的代码中,即未对其进行配置或硬编码。

Matlab中是否有功能可以执行以下操作?

在python中,我会这样写:

ROOT = os.path.dirname(__file__)
Run Code Online (Sandbox Code Playgroud)

matlab

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