Common Lisp的人有他们的CL-WHO,它使HTML模板与"主要"语言集成,从而使任务更容易.对于那些不了解CL-WHO的人来说,它看起来像这样(例如来自CL-WHO的网页):
(with-html-output (*http-stream*)
(:table :border 0 :cellpadding 4
(loop for i below 25 by 5
do (htm
(:tr :align "right"
(loop for j from i below (+ i 5)
do (htm
(:td :bgcolor (if (oddp j)
"pink"
"green")
(fmt "~@R" (1+ j))))))))))
Run Code Online (Sandbox Code Playgroud)
你知道其他语言的这样的图书馆吗?我所知道的(模仿CL-WHO)是BrevéforPython.我对Perl风格特别感兴趣,但有趣的是其他语言如何处理将HTML集成到他们的语法中.
我目前正在使用由另一个部门开发的框架作为基础开发的项目.我们目前正在我们的部门引入质量标准(最后,yay!),但目前无法将这些标准引入其他部门.因此,我们正在努力对抗一个持续不断移动的目标,既没有API稳定性,也没有稳定的释放,这至少是一种压力.
由于我们首先尝试解决问题,因此我们希望确保自己能够抵御"上游"即框架代码的变化.我们设想了硬模块依赖:
到目前为止,这是计划.现在的问题是:
use Module我们只能定义应该使用的最低版本代码.给定: SVN存储库,其中的bin目录和script.pl内部bin.一些修订版本,bin并script.pl已在一次提交中添加到存储库中.从那时起,一些修订已被应用于script.pl.
需要:一个diff命令,它将script.pl从零返回一个完整的diff 到HEAD,即添加了所有行的diff.
背景:代码审查需要这个差异,以便为ReviewBoard提供信息
问题: svn diff with -r X:HEAD(X作为第一个版本script.pl)在第一个版本和HEAD之间产生差异,同时-r X-1:HEAD告诉我文件script.pl在修订版中是未知的X-1,这实际上是正确的.但是,我找不到一个合适的解决方案,其中包括来自空文件的差异.我也无法区分bin目录,因为它已被添加到同一个提交中script.pl
解决方案: ?
我们现在都知道,使用正则表达式解析HTML通常是不可能的,因为它正在解析上下文敏感的语法,而正则表达式只能解析常规语法.其他编程语言也是如此.
现在,最近,Rainbow.js语法荧光笔已经公布.它的前提被描述为非常简单:
彩虹本身很简单.它遍历代码块,处理正则表达式模式,并在标记中包装匹配模式.
我认为语法突出显然本质上是一个与语言解析相同的复杂任务,如果我们假设它必须既好又适合多种语言.尽管如此,虽然对该库有相当多的批评,但黑客新闻的讨论(作为技术倾向的讨论的例子)都没有提到使用正则表达式突出语法在一般情况下基本上是不可能的,我会考虑一个主要的,显示停止的缺陷.
现在的问题是:有什么我想念的吗?特别是:
每次源文件发生变化时,我都会尝试连接gulp-browserify并gulp-watch重建我的软件包.但是,gulp-browserify需要单个入口点进行编译(例如src/js/app.js)并获取每个依赖项本身:
gulp.src('src/js/app.js')
.pipe(browserify())
.pipe(gulp.dest('dist'))
Run Code Online (Sandbox Code Playgroud)
但是,gulp-watch由于只有正在监视入口点文件,因此无法在每次更改时重建.我真正需要的是可以观察多个文件,然后只处理入口点文件(寻找replaceEverythingWithEntryPointFile):
gulp.src("src/**/*.js")
.pipe(watch())
.pipe(replaceEverythingWithEntryPointFile()) // <- This is what I need
.pipe(browserify())
.pipe(gulp.dest("dist"));
Run Code Online (Sandbox Code Playgroud)
所以问题是:我如何指向gulp-browserify入口点文件并在任何源文件的更改中触发重建?如果解决方案包括限制,那将是很好的:当启动时,每个源文件都被设置用于观看,因此我们的入口点文件将被管道传输到gulp-browserify文件的次数,这是不必要的.
我和其他几个开发人员目前正在清理我们的遗留代码库,主要是分离视觉和数据层.为了帮助没有参与这种重构的开发人员理解该模型,我想介绍一个(相当非正式的)类图,其中包含有关每个类的范围和所需用法的注释.因为我很懒,所以我想使用UMLGraph.
但是有一个小问题:我们有一个perl代码库,重构使用Moose角色.现在我不知道UML足以找到适当的角色抽象 - 我的第一个猜测是接口,但它们也包含实现; 多重继承并没有完全削减它.
我如何(或如何)在类图中正确表示角色?
在我的项目中,我正在准备从遗留代码到新的,经过适当设计和测试的模块的逐步过程.由于并非每个程序员都密切关注我的工作,因此我想在使用旧代码时发出警告.我也非常希望能够输出有关如何移植旧代码的建议.
我找到了两种方法:
Attribute :: Deprecated,对于函数来说很好,但是如果不推荐使用完整的模块则相当麻烦.此外,除了警告之外,没有其他信息.
Perl::Critic::Policy::Modules::ProhibitEvilModules对于模块或可能是自定义Perl::Critic规则,以便在函数或方法级别上进行更精细的弃用.这种方法很好,但是代码本身并不是很明显它已被弃用了.
任何其他建议或技巧如何正确和容易地做到这一点?
我们目前正在DBIx::Class我们的团队中介绍,我们想开始DBIx::Class::Schema::Loader.但是,我们对代码风格有严格的要求,即我们已经将其Perl::Tidy作为pre-commit脚本的一部分,因为我们之前没有生成任何代码.现在,我们必须确保Schema::Loader生成的代码干净整洁.我们不能perltidy在提交之前运行代码,因为它搞砸了DBIC的MD5哈希.所以集成到后处理器Schema::Loader将是我的首选,也可能是唯一可行的解决方案.但是仍然:你将如何处理这个问题?
编辑我也可以补丁DBIx::Class::Schema::Loader::Base使用参数,如果它得到一个.perltidypreprocess
我正在重构一个由同事建立的测试套件,并希望Test::Class[::Most]在这样做时使用.在我开始时,我发现我可以使用一些Moose角色来解码代码.但是,它似乎不太可能 - 我收到像这样的错误消息:
Prototype mismatch: sub My::Test::Class::Base::blessed: none vs ($) at
/usr/lib/perl5/vendor_perl/5.8.8/Sub/Exporter.pm line 896
Run Code Online (Sandbox Code Playgroud)
所以问题是:我可以Moose一起使用Test::Class,如果是,如何使用?
PS:代码是这样的:
package My::Test::Class::Base;
use Moose;
use Test::Class::Most;
with 'My::Cool::Role';
has attr => ( ... );
Run Code Online (Sandbox Code Playgroud) 给出的是Django模型BlogPost.首先,它没有编码Meta.verbose_name.此时./manage.py syncdb,会自动创建ContentType名为" 博客帖子 " 的名称.在稍后的某个时间点,添加Meta.verbose_name了" 博客帖子 ".
现在存在差异:ContentType被称为" 博客帖子 ",而模型名称为" 博客帖子 ",这种差异显示在使用通用关系的任何框架中,例如在评论的管理员中.我想通过更改名称来纠正这种情况ContentType,但是,我不想手动(出于显而易见的原因)或通过迁移(因为我不迁移任何其他东西,Meta.verbose_name只是一个代码)更改).
如何ContentType在Meta.verbose_name更改时更新名称?
perl ×6
moose ×2
browserify ×1
common-lisp ×1
dbix-class ×1
dependencies ×1
deprecated ×1
diff ×1
django ×1
gulp ×1
html ×1
javascript ×1
legacy ×1
legacy-code ×1
module ×1
obsolete ×1
parsing ×1
python ×1
regex ×1
roles ×1
svn ×1
templating ×1
test-class ×1
uml ×1