我正在使用Visual Studio 2010开发一个针对.NET Framework 4.0的ASP.NET MVC 2网站.
我的web.config包含以下代码:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="XhtmlModule" type="DomenicDenicola.Website.XhtmlModule" />
</modules>
<handlers>
<add name="DotLess" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.less" verb="*" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
当我Build > Publish用来将网站放在我的本地IIS7实例上时,它的效果很好.
但是,当我使用时Debug > Start Debugging,HTTP处理程序和模块都不会在任何请求上执行.
奇怪的是,当我把处理器和模块<add />标签放回<system.web />下<httpHandlers />和<httpModules />,他们的工作.这似乎意味着开发Web服务器以经典模式运行.
我该如何解决?
如果我有一个可观察的数组
foos = [{ name: "a" }, { name: "b" }, { name: "c" }]
Run Code Online (Sandbox Code Playgroud)
在我的viewmodel上,我想呈现以下内容:
<ul>
<li class="add-new-foo">Special stuff here</li>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我非常接近
<ul data-bind="template: { name: 'foo-template', foreach: foos }">
<li class="add-new-foo">Special stuff here</li>
</ul>
<script id="foo-template" type="text/html">
<li data-bind="text: name"></li>
</script>
Run Code Online (Sandbox Code Playgroud)
但最终把a,b,c 放在了.add-new-foo 后面.
有任何想法吗?在我的情况下,使用Knockout foreach而不是jQuery模板是至关重要的{{each}},因为Knockout文档中提到的好处.
我们想使用Winston来登录Node.js. 但是,我们无法弄清楚如何拥有两个日志文件:一个用于错误,一个用于其他所有文件.
但是,这种天真的方式不起作用:添加多个winston.transports.File传输会产生错误.
其他人遇到了这个问题,有一个模糊的解决方案提示,但没有真正的答案.
有任何想法吗?
我想有在Visual Studio工具窗口,让我输入命令行的东西(例如git stash,npm install在当前项目的工作目录,等等).在Eclipse中有这样的东西.
我在任何一个菜单中找不到任何这样的选项,但不可否认它们是迷宫式的.我尝试浏览Visual Studio库,但也没有骰子.任何扩展或隐藏选项会给我这个?
PowerShell可能也会起作用,因为据我所知,它是常规shell的超集.
我想测试以下函数是否按预期执行:
function throwNextTick(error) {
process.nextTick(function () {
throw error;
});
}
Run Code Online (Sandbox Code Playgroud)
这是我的尝试:
describe("throwNextTick", function () {
it("works as expected", function (next) {
var error = new Error("boo!");
var recordedError = null;
process.once("uncaughtException", function (error) {
recordedError = error;
});
throwNextTick(error);
process.nextTick(function () {
recordedError.should.be(error);
next();
});
});
});
Run Code Online (Sandbox Code Playgroud)
但是mocha似乎想要保留任何错误,并且在获得它们时我的测试失败:
C:\Users\ddenicola\Programming (Synced)\pubit>mocha test/basicTest.js
throwNextTick
0) works as expected
? 1 of 1 tests failed:
1) throwNextTick works as expected:
Error: boo!
at Test.fn (C:\Users\ddenicola\Programming (Synced)\pubit\test\basicTest.js:11:21)
at Test.run (C:\Users\ddenicola\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:144:15)
at Runner.runTest (C:\Users\ddenicola\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:271:10) …Run Code Online (Sandbox Code Playgroud) 现在有大量的网页建议您将这些规则添加到您的内容中以使其加速硬件:
transform: translate3d(0,0,0);
-webkit-transform: translate3d(0,0,0);
Run Code Online (Sandbox Code Playgroud)
这总是让我感到很荒谬.为什么浏览器需要我的帮助来决定硬件加速?它会更快,对吗?那么为什么不这样做呢?为什么要等我"欺骗"浏览器呢?
提出这个问题的另一种方法可能是,为什么每个基线/重置样式表都不包含这些行
* {
transform: translate3d(0,0,0);
-webkit-transform: translate3d(0,0,0);
}
Run Code Online (Sandbox Code Playgroud) 我的Gruntfile已经重复"files"了两个目标之间的共享,dist以及dev相同的任务.以下是仅包含Stylus问题的示例:
"use strict";
module.exports = function (grunt) {
grunt.loadNpmTasks("grunt-contrib-stylus");
grunt.initConfig({
stylus: {
dist: {
files: { "www/bundle.css": ["stylus/*.styl"] },
options: { compress: true, linenos: false }
},
dev: {
files: { "www/bundle.css": ["stylus/*.styl"] },
options: { compress: false, linenos: true }
}
}
});
grunt.registerTask("dev", ["stylus:dev"]);
grunt.registerTask("prod", ["stylus:prod"]);
};
Run Code Online (Sandbox Code Playgroud)
有没有办法将文件配置移动到一个级别,所以我不必在两个目标中重复它?
var dateRegex = /\/Date\((\d+)\)\//g; // [0-9] instead of \d does not help.
dateRegex.test("/Date(1286443710000)/"); // true
dateRegex.test("/Date(1286445750000)/"); // false
Run Code Online (Sandbox Code Playgroud)
Chrome和Firefox JavaScript控制台都证实了这一点.怎么了,伙计们?
编辑:更简单的测试用例:
var dateRegex = /Date\(([0-9]+)\)/g;
dateRegex.test("Date(1286445750000)"); // true
dateRegex.test("Date(1286445750000)"); // false
dateRegex.test("Date(1286445750000)"); // true
dateRegex.test("Date(1286445750000)"); // false
dateRegex.test("Date(1286445750000)"); // true
Run Code Online (Sandbox Code Playgroud)
这表明它每次都交替出现真/假......
我刚刚开始使用.NET ORM,我还没有在Entity Framework和NHibernate之间做出决定.但在这两种情况下,我遇到了一个问题,因为他们似乎希望我以各种方式破坏我的域模型的完整性,特别是在C#对象设计的更精细点上.这是关于这个问题的几个问题之一.
有一个原因virtual不是C#中方法的默认值.我的域模型中的对象没有准备好对子类的行为做出承诺,除非在非常具体的情况下我将它们标记为这样.换句话说,对于我的域对象上的极少数方法,为未指定的新功能添加一个钩子是合适的.
然而NHibernate希望我做出一切virtual,Entity Framework希望我做出所有实体引用virtual.我意识到为什么他们需要它(创建代理对象),并且我意识到它实际上是继承的合法用法virtual- 它们实际上是为了添加新功能而挂钩我的属性.但它让我觉得我必须使用完全与持久性相关的东西来注释我的域模型类,并且完全没有表达它们与实现者和消费者的实际契约.
作为一个较小的问题,我意识到我可能无法做任何事情,通常是表达sealed 因为所有通常的原因来注释我的课程.然而,这有点不那么光滑,因为为了持久性而从我的域对象中省略注释似乎不如添加注释.
令人沮丧的是,经过几年阅读像Effective C#这样的书或像Eric Lippert那样的博客,它们提供了关于如何设计富有表现力和防弹的C#对象的建议,使用ORM的需要让我把大量的知识从窗口.我希望这里有人可以指出我错在哪里,要么掌握他们的能力,要么是我对域建模和ORM角色的思考.
我发现在循环中缓存数组length属性的做法for非常令人反感.如,
for (var i = 0, l = myArray.length; i < l; ++i) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
至少在我看来,与直截了当相比,这对可读性造成了很大伤害
for (var i = 0; i < myArray.length; ++i) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
(更不用说由于词法范围和提升的性质,它会将另一个变量泄漏到周围的函数中.)
我希望能够告诉任何做这件事的人"不要打扰;现代的JS JITers会优化这个技巧." 显然这不是一个微不足道的优化,因为你可以在迭代过程中修改数组,但我会认为考虑到JITers和他们的运行时分析技巧所听到的所有疯狂的东西,他们已经得到了这个现在.
任何人都有这样或那样的证据吗?
是的,我也希望说"这是微观优化就足够了;在你描述之前不要这样做." 但并不是每个人都会听到这种理由,特别是当它成为缓存长度的习惯时,它们最终会自动地这样做,几乎就像一种风格选择.
javascript ×4
node.js ×2
.net ×1
build ×1
class-design ×1
command-line ×1
css ×1
css3 ×1
date ×1
exception ×1
flatiron.js ×1
gruntjs ×1
httphandler ×1
httpmodule ×1
jit ×1
knockout.js ×1
logging ×1
loops ×1
mocha.js ×1
nhibernate ×1
optimization ×1
orm ×1
powershell ×1
regex ×1
unit-testing ×1
web-config ×1
winston ×1