小编Mad*_*iha的帖子

关于工厂模式的神话

这让我困扰了一段时间,如果这是一个神话,我没有任何线索.

似乎工厂模式可以减轻为类添加依赖项的痛苦.

例如,在一本书中,它有类似的东西

假设您有一个名为Order的类.最初它并不依赖于任何东西.因此,您不必费心使用工厂来创建Order对象,而您只是使用plain new来实例化对象.但是,您现在要求必须与客户关联创建订单.您需要更改百万个位置才能添加此额外参数.如果您只为Order类定义了一个工厂,那么您可以在没有同样痛苦的情况下满足新要求.

这与为构造函数添加额外参数有何不同?我的意思是你仍然需要为工厂提供一个额外的论据,而且还有百万个地方使用,对吗?

factory-pattern

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

Webkit HTML通知中的表单?

是否可以在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)

forms notifications google-chrome google-chrome-extension

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

Javascript - 变量失去其价值并"变得"未定义

我似乎在某种程度上失去了变量即时设置的价值......

我试图做的并不是那么重要,所以我设置了一个(评论很好的)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)

javascript random variables jquery

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

单击对象时停止mouseleave

如果我想鼠标输入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)

jquery function click mouseevent

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

DOM解析器是如何实现的?

我的经验告诉我,不应该使用RegExp来解析HTML/XML,我完全同意!它的

  • 不健壮,容易破碎
  • 纯粹的邪恶

他们都说某种"使用DOM解析器",这对我来说很好.但现在我很好奇.这些如何运作?

我正在搜索DOMDocument类源,但找不到它.

这个问题来自于这样一个事实,filter_var()例如,被认为是使用RegExp验证电子邮件的一个很好的选择,但是当你查看源代码时,你会发现它实际上使用了RegExp本身!

那么,如果你要在PHP中构建DOM解析器?你会如何解析HTML?他们是如何做到的呢?

php dom

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

圆角裁剪

我有圆角的问题,他们一直希望在左侧裁剪几个像素.以下是我正在使用的代码.我试过增加数字和减少数字; 我添加了一个包装器; 我已经尝试了所有可以找到的不同解决方案,但它仍然会被淘汰.任何人都可以帮助我,因为我似乎不是很方便吗?显然,我无法发布它看起来像什么的图片.

<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)

html css rounded-corners

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

我应该如何创建我的数据映射器/域对象/服务?

所以我用PHP制作这个Web应用程序,我希望用Domain Objects和Data Mappers创建一个体面的模型层(尽可能多),所有这些都是由Services协调完成的.

现在我在想,我应该如何创建我的对象?

工厂?

但是之后:

  • 如果一个对象实现某个接口(DataMapper通常是.其他人没有他们需要实现的set方法;我不想依赖名称,因为命名约定会发生变化),我必须使用反射来实际执行.
  • 我必须通过将工厂传递到ServiceFactory来违反demeter法则,然后只将它传递给它创建的服务.

new关键字?

但是之后:

  • 我在隔离测试代码时遇到问题.
  • 感觉太紧了.

还要别的吗?

我不知道,这就是我要问的原因!:P

我该怎么办?有更好的方法吗?

php oop model-view-controller

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

使用CSS值上下文哪些字符不安全?

我有一个从用户到达的字符串,然后使用CSS解析器插入到一个大的CSS块中.

CSS转义可以用\C(其中C是一个字符),\HexOfC (带空格)或\6DigitHexOfC.

通常,所有字符都可以安全地转义,CSS仍然可以按预期运行.以下作品:

但是,我仍然希望CSS属性尽可能"干净",因为我希望能够使用检查器干净地查看URL和规则.


有些人物显然很糟糕.{};\*应该全部逃脱,因为它们可以用来打破现行规则.我正在管理一个白名单(一切都被逃脱,除了允许的内容)的字符(而不是黑名单,其中一切都被允许,除了什么不是).我目前拥有的白名单是

'#', ',', '.', '(', ')', '-', '%', '+', '=', '/', ' ', ':', '\'', '"', '\n', '\r'
Run Code Online (Sandbox Code Playgroud)

这里有危险的人物吗?任何可用于突破规则并影响CSS块其余部分的东西.是否有不在这里的字符会被不必要地转义?(默认情况下,不会转义字母数字字符).

css java sanitization

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

如何确保使用正确的用户或权限创建文件?

商业模式有点复杂,如果解释不是100%明确,请原谅我:

Uploader接口(String upload(String path, byte[] fileContents))定义了上传文件(包含在字节数组中)的不同方法,例如AmazonUploader获取内容和path字符串,并在给定密钥下将其上传到Amazon S3.

我有一个LocalUploader在QA中使用的类,将给定的文件数组按原样写入本地磁盘.

上传器用于两种不同的情况:

  1. Web界面,由用户运行 web
  2. 一个命令行接口,通过跑用户登录到ssh,经由用户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迅速忽略.可能是因为它是一个不同的过程.
  • 对linux权限使用group id标志 - 被Java迅速忽略.可能是因为它是一个不同的过程.

我没试过的:

  • 使用ACL - 我们不能弄乱底层分区.
  • 将文件作为输出返回并让bash写入文件 - 并非所有命令都需要写入文件,也可能需要也可能不需要写入多个文件.这不是我想要放在bash脚本中的逻辑,这是Uploader的工作.

注意事项:

  • 我在Uploader上使用Java 6.没有花哨的东西.
  • 我使用Spring 3.2作为上传器.没有开机.
  • 我可以很可能使用的工具库中上传.
  • 我使用Java 8 …

java bash file maven

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

为什么此代码在不同的值上表现不同

这段代码:

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中测试)

似乎合乎逻辑的是,第三个版本应该总是更快,但只有非常高的值才会更快.

这只是一种好奇心......实际上并不重要.

javascript

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