在Windows中,是否有一种简单的方法(即您可以在单个命令行上键入的内容)只播放几个.mp3文件然后自行退出?
例如,wmplayer似乎在完成后似乎没有退出,迫使用户抓住它并每次点击它关闭它.(wmplayer 11似乎也奇怪地重复一些文件,如果你传递一个列表.)(旧的(1990年代)版本的'mplayer'用于支持'/ close'命令行选项,但它似乎不起作用wmplayer 11.)
我更喜欢使用每个人都会在他们的机器上拥有的东西(比如wmplayer,quicktime ......)
是否有可用的Perl选项的在线/云端应用程序引擎?
我想编写和部署由一些现有的Web App引擎托管的个人Web应用程序(该应用程序相当简单且资源便宜,但确实需要小型在线存储.如果有人关心,它基本上是一个家庭范围的购物清单到用于智能手机和PC网络浏览器).
由于担心停机(我的宽带连接不够稳定),我宁愿不在家用电脑的Apache上托管它.
到目前为止我发现的主要候选人是Google App Engine.
我的理解是Google App Engine只有Python或Java API.Catch是,我是一个Perl家伙,没有接触过Python.
如果是这样的话,那个特定的引擎是不是比谷歌的引擎更差,我学习Python是值得的,所以我可以使用Google的?(我不介意在理论上学习Python,但是我有点紧张,所以我现在不想开始这个特定的项目 - 我只是想完成应用并使用它).
问题:
什么被认为是"最佳实践" - 以及为什么 - 在构造函数中处理错误?
"最佳实践"可以引自施瓦茨,或50%的CPAN模块使用它等等; 但我对任何人都有充分理由的意见感到高兴,即使它解释了为什么常见的最佳实践并不是真正的最佳方法.
至于我自己对该主题的看法(通过Perl中的软件开发多年来了解),我在perl模块中看到了三种主要的错误处理方法(在我看来从最好到最差列出):
构造一个对象,设置一个无效的标志(通常是" is_valid"方法).通常通过类的错误处理与设置错误消息相结合.
优点:
允许标准(与其他方法调用相比)错误处理,因为它允许$obj->errors()在错误的构造函数之后使用类型调用,就像在任何其他方法调用之后一样.
允许传递其他信息(例如> 1错误,警告等...)
允许轻量级的"重做"/"fixme"功能,换句话说,如果构造的对象非常繁重,许多复杂的属性100%总是正常,并且它无效的唯一原因是因为某人输入了不正确的日期,你可以简单地做" $obj->setDate()"而不是再次重新执行整个构造函数的开销.这种模式并不总是需要,但在正确的设计中非常有用.
缺点:没有我知道的.
返回" undef".
缺点:无法实现第一个解决方案的任何优点(全局变量之外的每个对象错误消息和重型对象的轻量级"fixme"功能).
死在构造函数内部.在一些非常狭窄的边缘情况之外,我个人认为这是一个可怕的选择,有太多理由列出这个问题的边缘.
更新:为了清楚,我认为(非常有价值和一个伟大的设计)解决方案有一个非常简单的构造函数,它根本不会失败,而且是一个繁重的初始化方法,其中所有错误检查都只是其中任何一个的子集出于此问题的目的,情况#1(如果初始化程序设置错误标志)或情况#3(如果初始化程序死亡).显然,选择这样的设计,你会自动拒绝选项#2.
Windows程序Universe中似乎有一个标准的"descript.ion"文件,它为给定目录中的所有/部分文件提供元数据.
我知道有各种程序可以编写这个文件(例如:NewsBin,UseNet下载程序)并阅读它(例如:"FAR",一个模仿旧Norton Commander的文件管理器).
我正在编写自己的文件索引器,并希望添加解析和使用"descript.ion"文件中的信息的功能.
我遇到的问题是我无法找到文件的实际规格,despine很多google搜索.
我尽可能地逆向设计它,但我不确定我是否捕获了100%可能的细节,所以我想我会问.
以下是文件中的示例行:
"Rus Song1.mp3" SovietMus 1/2, rus_song@gmail.com, Fri Aug 08 00:46:27 2008
RusSong2.mp3 SovietMus 2/2, rus_song@gmail.com, Fri Aug 08 01:46:22 2008
Run Code Online (Sandbox Code Playgroud)
看起来结构如下:
第一个"令牌"是文件名.
如果令牌以任何字母开头但双引号,则令牌以第一个space字符结束.
如果令牌以双引号开头,则令牌的结尾是以下双引号
不确定如果文件名包含双引号会发生什么,IIRC在Windows文件系统中是非法的,所以转义引用可能是一个没有实际意义的问题)
最后一个令牌(最后一个逗号向后移动的行尾)是一个时间戳.
倒数第二个令牌(倒数第二个逗号向后移动的最后一个逗号)是Usenet新闻组中海报的名称.我不太确定通用格式会发生什么,因为我看到的唯一的descript.ion文件来自NewsBin,显然是以Usenet为中心.
介于两者之间的所有内容都是一个描述,在NewsBin的案例中来自帖子的主题.
问题:
有没有人知道更多的官方"descript.ion"文件规范/文档?(或者,弹性地,您对这些文件有自己的了解并且可以验证我的规范)
有没有人知道读取或写入此文件的任何其他程序?
谢谢!
几年前,我参与了为我们(相当大的,经常使用Perl)公司编写最佳实践/编码风格.它由"高级"Perl开发人员委员会完成.
正如通过共识所做的任何事情一样,它有各自不同意的部分.咄.
最错误的部分强烈建议不要使用许多Perlisms(松散定义为C++或Java中没有的代码习语),例如"避免使用"......除非X;' 结构体".
这个规则的主要原理是,非Perl开发人员在使用Perl代码库时会花费更多的时间.我猜这里的假设是,Perl代码骑手总体上比普通人更为罕见 - 并且是新员工.
我想知道SO是否有任何好的论据来支持或拒绝这种逻辑......在这一点上,这主要是学术上的好奇心,因为该公司的Perl编码标准是僵化的,并且就我所知,永远不会再被修改.
PS为了清楚起见,问题是在我注意到的背景下 - 全Perl小型开发商店的答案显然是一个响亮的"使用Perl达到其最大能力".
我正在使用DBI和DBD :: SQLite,现在我想使用SQLite的R*Tree功能.由于此功能不是由DBD :: SQLite的默认编译,我有一个添加-DSQLITE_ENABLE_RTREE=1到@CC_DEFINE在DBD :: SQLite的的Makefile.PL变量.如果我做'perl Makefile.PL && make && make install',一切都在我的机器上本地工作正常,但最终需要可部署/可分发给最终用户.
在这样的情况下我该怎么办?我应该复制源代码,grep源代码,并创建一个DBD :: SQLite :: WithRTree吗?创建DBD :: SQLite 1.31.1的私有版本(其中1.31是DBD :: SQLite的当前版本)?或许更好的方式呢?
项目中的所有其他发行版都通过非公共CPAN :: Mini镜像+ CPAN :: Mini :: Inject进行部署/分发.
我正在尝试将s/ / /g正则表达式存储为变量(没有太多运气).
这是一个使用常规匹配来显示我打算做什么的示例.
my %file_structure = (
header => qr/just another/,
table => qr/perl beginner/,
)
Run Code Online (Sandbox Code Playgroud)
现在我可以使用$line =~ $file_structure{'header'}它来调用它,它将返回undef,或者true如果模式匹配.
不过我想说$line =~ $file_structure{'foo'}哪里$file_structure{'foo'}有类似的东西s/beginner/hacker/g.
2>&1 Bourne shell中的重定向将输出发送到文件描述符2(默认情况下为标准错误),并将其发送到文件描述符1(默认为标准输出).
但2<&1重定向是做什么的?
它会将stderr发送给stdin吗?
我的理论是它将stdin发送到stderr(例如同样1>&2),但实验上,情况并非如此:
$ perl -e 'print "OUT\n"; print STDERR "ERR\n"; \
while (<>) { print "IN WAS $_\n";}' \
> out3 2<&1
df
$ cat out3
ERR
OUT
IN WAS df
Run Code Online (Sandbox Code Playgroud)
请注意,标准输出AND标准错误都转到文件out3,其中重定向了stdout.
可以根据现有的马尔巴解析器可以用来改善的Perl 5的解析(例如,取代现有的Perl解释器的解析器的全部或块)?
我在理论层面上提出要求,例如忽视实际考虑因素,例如"如果能够,则需要花费10,000个工时".
如果没有,阻止使用Marpa的具体问题是什么?(再次,最好是理论上的).
有关为什么这很有趣的背景,Jeffrey Kegler(Marpa的作者)于2008年在PerlMonks 上发表了一篇有着名的文章"Perl Can not Parsed:A Formal Proof",这篇文章受到当时他对Marpa的影响.
在Java中,据我所知,子类不继承具有参数的构造函数.
例如
public class Parent {
public Parent(int x) {
DoSomethingWithX(x);
}
}
public class Child extends Parent {
// Compile fails with "Implicit super constructor Parent() is undefined
// for default constructor. Must define an explicit constructor
}
Run Code Online (Sandbox Code Playgroud)
修复它的唯一方法是在Child类中创建一个无用的传递构造函数:
public class Child extends Parent {
public Child(int x) {
super(x);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我有一个复杂的子类层次结构,有6-10个子类,那么为每个子类添加一个带有参数的无意义的传递构造函数似乎是个坏主意!
有没有办法避免大型类层次结构的这个问题?
我知道一个解决方案(有一个setter,必须与构造函数分开调用)的参数.但是这个解决方案有几个很大的缺点,因为它们是不可接受的.
perl ×6
windows ×2
audio ×1
bash ×1
batch-file ×1
coding-style ×1
command-line ×1
constructor ×1
cpan ×1
file ×1
java ×1
marpa ×1
mp3 ×1
parameters ×1
parsing ×1
perl-module ×1
redirect ×1
regex ×1
sh ×1
shell ×1
subclass ×1