这让我困扰了一段时间,如果这是一个神话,我没有任何线索.
似乎工厂模式可以减轻为类添加依赖项的痛苦.
例如,在一本书中,它有类似的东西
假设您有一个名为Order的类.最初它并不依赖于任何东西.因此,您不必费心使用工厂来创建Order对象,而您只是使用plain new来实例化对象.但是,您现在要求必须与客户关联创建订单.您需要更改百万个位置才能添加此额外参数.如果您只为Order类定义了一个工厂,那么您可以在没有同样痛苦的情况下满足新要求.
这与为构造函数添加额外参数有何不同?我的意思是你仍然需要为工厂提供一个额外的论据,而且还有百万个地方使用,对吗?
是否可以在Webkit HTML桌面通知中使用表单元素?我尝试从Chrome扩展程序中打开HTML通知,<input>我添加了,但我无法输入.我希望能够捕获它的输入并保存它.
var notification = webkitNotifications.createHTMLNotification(chrome.extension.getURL('input-prompt.html'));
notification.show();
<html>
<body>
<form><input type="text" name="here" value="test" /></form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我似乎在某种程度上失去了变量即时设置的价值......
我试图做的并不是那么重要,所以我设置了一个(评论很好的)jsFiddle来向你展示我的成果.代码如下.
如果有人可以看到什么进展任何帮助,赞赏:)
请参阅jsFiddle> http://jsfiddle.net/qNWuV/4/ <建议您查看此处
var habs = ["417,77", "410,363", "388,433", "262,435", "262,210", "391,101", "384,183", "61,114", "331,171", "164,433", "361,248", "302,329", "154,307", "410,350", "173,298", "308,429"]; //just an array of co-ords for another part of my app. Only the .length is used below.
//############################
// NOTE: as this problem depends on random numbers you MAY not see it. If "undefined" is ANYWHERE in the Result, the problem is occurring, otherwise re-run the code.
//############################
function link_habs(habs) {
var test2 …Run Code Online (Sandbox Code Playgroud) 如果我想鼠标输入div,则会显示一个元素,然后当mouseleave,元素消失时.
我在mouseenter中有一个click功能,所以点击时会出现一个下拉菜单.
我希望下拉菜单和元素即使在mouseleaves时也能保持活动状态.因此,当有点击事件时,我希望鼠标在这种情况下不适用.用户必须再次单击该元素或页面上的任何位置,以使元素和下拉菜单消失.
但是我想保持mouseleave功能正常工作,所以如果用户鼠标移动div,元素将显示,他们可以再次点击它.
我目前有这样的东西,但我不知道如何使鼠标在点击时不适用
$(".div").mouseenter(function(){
$(".element",this).show();
$(".element").click(function(){
$(".dropdown").show();
return false;
});
}).mouseleave(function(){
$(".element",this).hide();
});
Run Code Online (Sandbox Code Playgroud)
编辑:
HTML
<div class='div'>
<div class='element' style='display:none;'>
boxed element
</div>
<div class='dropdown' style='display:none;'>
menu
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 我的经验告诉我,不应该使用RegExp来解析HTML/XML,我完全同意!它的
他们都说某种"使用DOM解析器",这对我来说很好.但现在我很好奇.这些如何运作?
我正在搜索DOMDocument类源,但找不到它.
这个问题来自于这样一个事实,filter_var()例如,被认为是使用RegExp验证电子邮件的一个很好的选择,但是当你查看源代码时,你会发现它实际上使用了RegExp本身!
那么,如果你要在PHP中构建DOM解析器?你会如何解析HTML?他们是如何做到的呢?
我有圆角的问题,他们一直希望在左侧裁剪几个像素.以下是我正在使用的代码.我试过增加数字和减少数字; 我添加了一个包装器; 我已经尝试了所有可以找到的不同解决方案,但它仍然会被淘汰.任何人都可以帮助我,因为我似乎不是很方便吗?显然,我无法发布它看起来像什么的图片.
<style>
.image
{
width: 200px;
position:relative;
-webkit-border-radius: 14px;
-moz-border-radius: 14px;
-khtml-border-radius: 14px;
border-radius: 14px;
overflow: hidden;
}
#slideshow
{
margin:0 0 0 0;
position:relative;
width:200px;
height:133px;
padding: 10px;
overflow:hidden;
-webkit-border-radius: 14px;
-moz-border-radius: 14px;
-khtml-border-radius: 14px;
border-radius: 14px;
box-shadow: 0 0 20px rgba(0,0,0,0.3);
}
#slideshow > div
{
position:absolute;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
$(function() {
$("#slideshow > div:gt(0)").hide();
setInterval(function()
{
$('#slideshow > div:first')
.fadeOut(2000)
.next()
.fadeIn(2000)
.end()
.appendTo('#slideshow');
}, 3000);
});
</script>
<div id="slideshow">
<div class="image"><img alt="" …Run Code Online (Sandbox Code Playgroud) 所以我用PHP制作这个Web应用程序,我希望用Domain Objects和Data Mappers创建一个体面的模型层(尽可能多),所有这些都是由Services协调完成的.
现在我在想,我应该如何创建我的对象?
但是之后:
DataMapper通常是.其他人没有他们需要实现的set方法;我不想依赖名称,因为命名约定会发生变化),我必须使用反射来实际执行.new关键字?但是之后:
我不知道,这就是我要问的原因!:P
我该怎么办?有更好的方法吗?
我有一个从用户到达的字符串,然后使用CSS解析器插入到一个大的CSS块中.
CSS转义可以用\C(其中C是一个字符),\HexOfC (带空格)或\6DigitHexOfC.
通常,所有字符都可以安全地转义,CSS仍然可以按预期运行.以下作品:
div {
background: \23 f66;
}Run Code Online (Sandbox Code Playgroud)
<div>Test</div>Run Code Online (Sandbox Code Playgroud)
但是,我仍然希望CSS属性尽可能"干净",因为我希望能够使用检查器干净地查看URL和规则.
有些人物显然很糟糕.{};\*应该全部逃脱,因为它们可以用来打破现行规则.我正在管理一个白名单(一切都被逃脱,除了允许的内容)的字符(而不是黑名单,其中一切都被允许,除了什么不是).我目前拥有的白名单是
'#', ',', '.', '(', ')', '-', '%', '+', '=', '/', ' ', ':', '\'', '"', '\n', '\r'
Run Code Online (Sandbox Code Playgroud)
这里有危险的人物吗?任何可用于突破规则并影响CSS块其余部分的东西.是否有不在这里的字符会被不必要地转义?(默认情况下,不会转义字母数字字符).
商业模式有点复杂,如果解释不是100%明确,请原谅我:
Uploader接口(String upload(String path, byte[] fileContents))定义了上传文件(包含在字节数组中)的不同方法,例如AmazonUploader获取内容和path字符串,并在给定密钥下将其上传到Amazon S3.
我有一个LocalUploader在QA中使用的类,将给定的文件数组按原样写入本地磁盘.
上传器用于两种不同的情况:
webssh,经由用户root.命令行界面与Web界面不同,但它们都捆绑了Uploader.此外,命令行可执行文件是java -jar ....最后运行的bash脚本.
我们的想法是将文件保存到已知位置,然后通过简单的静态http服务器提供服务.
问题很简单:由于两个进程都写入同一个位置,当一个文件由命令行界面写入时,它不再web可以被Web界面写入(无法访问所创建的文件root,显然,其他方式没有问题)周围).
现在,我坚持使用Java 6 for Uploader,所以没有nio文件包.
java.io.File的.setWritable().如果我在写文件之前执行它,它会失败(返回false),如果我之后执行它,它返回true但不设置writable标志.su以另一个用户身份运行jar.但这与参数插入混淆umask,被Java迅速忽略.可能是因为它是一个不同的过程.这段代码:
var i = 10000000000;
do {
i--;
}
while (i !== 0);
//Result: 38 second.
var i = 10000000000;
do {}
while (i-- !== 0);
//Result: 27 second.
//(same result with while (i--)
var i = 10000000000;
do {}
while (i-- | 0);
//Result: 13.5 second.
Run Code Online (Sandbox Code Playgroud)
问题是:为什么这些版本会同时获得较小的i值?如果我从i中减去一个零; 所有版本都需要2.2秒.(甚至在JIT优化后测试 - 仅在V8中测试)
似乎合乎逻辑的是,第三个版本应该总是更快,但只有非常高的值才会更快.
这只是一种好奇心......实际上并不重要.