小编jed*_*atu的帖子

浏览器会为iframe提供一个单独的JavaScript线程吗?

Web浏览器是否在iframe中为JavaScript使用单独的执行线程?

我相信Chrome会为每个标签使用单独的线程,因此我猜测iframe中的JavaScript会与其父窗口共享相同的线程,但是,这似乎也是一种安全风险.

javascript browser multithreading

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

如何公开集合属性?

每次我创建一个具有集合属性的对象时,我都会以最好的方式来回去做?

  1. 带有getter的公共属性,它返回对私有变量的引用
  2. 显式get_ObjList和set_ObjList方法,每次返回并创建新的或克隆的对象
  3. 显式get_ObjList返回一个IEnumerator和一个带有IEnumerator的set_ObjList

如果集合是一个数组(即objList.Clone())而不是List,它会有所不同吗?

如果返回实际集合作为引用是如此糟糕,因为它创建依赖项,那么为什么返回任何属性作为引用?每当您将子对象作为引用公开时,除非父级具有属性更改事件,否则可以在父级"知道"的情况下更改该子对象的内部.是否有内存泄漏的风险?

并且,不要选项2和3打破序列化?这是一个catch 22还是你必须在有集合属性的时候实现自定义序列化?

通用的ReadOnlyCollection似乎是一般用途的一个很好的折衷方案.它包装IList并限制对它的访问.也许这有助于内存泄漏和序列化.然而,它仍然有枚举问题

也许它只是取决于.如果您不关心集合是否被修改,那么只需将它作为公共访问器公开在每个#1的私有变量上.如果您不希望其他程序修改集合,那么#2和/或#3会更好.

问题隐含的是为什么一种方法应该用于另一种方法,以及对安全性,内存,序列化等的影响是什么?

.net c# architecture

48
推荐指数
1
解决办法
2万
查看次数

Powershell:为Get-Content管道设置编码

我有一个文件保存为UCS-2 Little Endian我想更改编码,所以我运行以下代码:

cat tmp.log -encoding UTF8 > new.log
Run Code Online (Sandbox Code Playgroud)

生成的文件仍在UCS-2 Little Endian中.这是因为管道始终采用这种格式吗?有没有一种简单的方法可以将其作为UTF8传输到新文件?

powershell encoding

45
推荐指数
3
解决办法
7万
查看次数

我应该在ASP.NET MVC3中附加自定义用户上下文会话包装器的位置?

我在MVC中阅读了许多关于会话范围数据的帖子,但我仍然不清楚在解决方案中包含自定义会话包装器的正确位置.

我想从IPrincipal获取当前用户的用户名,加载有关该用户的其他信息并将其存储在Session中.然后我想从Controller和View访问该用户数据.

以下方法似乎都不符合我的要求.

选项1:直接访问Session集合

每个人似乎都认为这是一个坏主意,但老实说,这似乎是最简单的事情.但是,它不会使用户可用于视图.

public class ControllerBase : Controller {
   public ControllerBase() : this(new UserRepository()) {}
   public ControllerBase(IUserRepository userRepository) {
      _userRepository = userRepository;
   }
   protected IUserRepository _userRepository = null;
   protected const string _userSessionKey = "ControllerBase_UserSessionKey";
   protected User {
      get { 
         var user = HttpContext.Current.Session[_userSessionKey] as User;
         if (user == null) {
            var principal = this.HttpContext.User;
            if (principal != null) {
               user = _userRepository.LoadByName(principal.Identity.Name);
               HttpContext.Current.Session[_userSessionKey] = user;
            }
         }
         return user;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

选项2:将会话注入到类构造函数 论坛帖子中 …

asp.net-mvc session-state asp.net-mvc-3

16
推荐指数
1
解决办法
5035
查看次数

我应该将RavenDB作为Windows服务还是通过IIS运行?

我正在使用RavenDB作为应用程序的数据存储的想法,该应用程序很可能具有HTML UI,WebService UI和将访问数据的服务器实用程序.使用RavenDB的一个原因是它通过复制和分片提供的水平扩展.但是,似乎有几个关于将Raven作为Windows服务运行或通过IIS运行的考虑因素.

  • 安全性 - Raven服务更安全或使用IIS允许我更灵活地通过IP地址,.NET成员资格等进行限制.
  • 缓存 - 似乎IIS是此功能的更好选择
  • 架构 - 由于我不希望任何第三方访问数据存储,因此通过IIS公开Raven真的很有意义.此外,Raven与各种UI和实用程序之间会有一个业务层,因此涉及IIS似乎是不必要的,可能会引入不必要的复杂性.
  • 性能 - IIS管道可能比Windows服务在每个请求上有更多的开销
  • 扩展 - 使用IIS可能更难以跨多个服务器扩展,而不是仅使用小批量文件安装Raven服务

EDITED

我可以理解使用Raven的嵌入式配置,如果您拥有的只是一个Web客户端,但是当您拥有多个不同的客户端时,Raven的API需要独立公开以防止单个客户端锁定数据文件.

architecture ravendb

15
推荐指数
2
解决办法
2247
查看次数

如何绑定AngularJS控制器以动态添加HTML?

对于这种情况,我有一个带有一些AngularJS指令,控制器等的HTML页面.

像这样的东西:

<html>
<body>
  <div ng-controller="myCtrl">
     <ul><li ng-repeat="item in items">{{item.name}}</li></ul>
  </div>
  <div class="placeholder">
     ...new HTML here...
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

请注意,ng-app页面上没有指令.我不依赖于自动引导,而是使用手动引导方法.

angular.bootstrap(document, ['myApp']);
Run Code Online (Sandbox Code Playgroud)

首先,我创建了将被引导到文档的模块.然后,当加载动态确定的依赖项列表时,我会附加一些服务,控制器等.一切准备就绪后,我调用bootstrap方法.

这一切都很好,直到AngularJS之外的JavaScript附加到该...new HTML here...位置的DOM .AngularJS不处理新的HTML.

我的理解是你需要调用$scope.$apply()或者$digest()什么来让AngularJS识别新的HTML.但是,在我的示例中,没有围绕新HTML的控制器.传入的HTML可能如下所示:

  <div ng-controller="myOtherCtrl">
     <h2>{{model.title}}</h2>
  </div>
Run Code Online (Sandbox Code Playgroud)

换句话说,它依赖于app模块中的不同控制器.

  • 我无法angular.bootstrap再次调用该方法,因为页面已经绑定.
  • 我无法$scope.$apply从控制器内部调用,因为重点是控制器代码没有被调用.
  • 我没有看到获取对控制器的引用以重新应用或刷新它的方法.

我已经阅读了Ifeanyi Isitor延迟加载帖子Ben Nadel帖子,但他们似乎没有解决在现有控制器的上下文之外加载的HTML.

我不能选择使用AngularJS指令来处理DOM操作.它是体系结构的一个独立部分,它使用ExtJS作为注入新DOM元素的框架.这意味着我不能使用ngInclude作为例子.

看起来我可以打电话angular.module('myApp').$refresh();,.$apply()但这不是一个选择.我错过了什么?

javascript angularjs

14
推荐指数
2
解决办法
3万
查看次数

为什么T-SQL变量比较比基于GETDATE()函数的比较慢?

我有一个T-SQL语句,我正在对一个有很多行的表运行.我看到一些奇怪的行为.将DateTime列与预先计算的值进行比较比将每行与基于GETDATE()函数的计算进行比较要慢.

以下SQL需要8秒:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
DECLARE @TimeZoneOffset int = -(DATEPART("HH", GETUTCDATE() - GETDATE()))
DECLARE @LowerTime DATETIME = DATEADD("HH", ABS(@TimeZoneOffset), CONVERT(VARCHAR, GETDATE(), 101) + ' 17:00:00')
SELECT TOP 200 Id, EventDate, Message 
FROM Events WITH (NOLOCK)
WHERE EventDate > @LowerTime
GO
Run Code Online (Sandbox Code Playgroud)

这个替代奇怪地立刻返回:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
SELECT TOP 200 Id, EventDate, Message 
FROM Events WITH (NOLOCK)
WHERE EventDate > GETDATE()-1
GO
Run Code Online (Sandbox Code Playgroud)

为什么第二个查询要快得多?

编辑:我更新了SQL以准确反映我正在使用的其他设置

t-sql sql-server sql-server-2008

9
推荐指数
1
解决办法
4937
查看次数

在Adobe AEM中,parsys组件如何将样式注入到设计css文件中?

在Adobe AEM(以前称为CQ5)中,基础组件parsys的design_dialog允许用户设置"Cell Padding".无论在文本字段中输入什么值,都会显示在设计css中.

例如:

鉴于当前页面正在使用/ etc/designs/my-design,页面输出将包含对/etc/designs/my-design.css样式表虚拟路径的引用.

如果用户将parsys cell padding配置为30px,那么my-design.css文件将包含以下内容:

.page_full .par div.section {
  padding: 30px;
}
Run Code Online (Sandbox Code Playgroud)

字符串"30px"存储在名为div.padding的jcr:content/page/par/section属性中,但是,我无法弄清楚parsys.jsp如何将其注入my-design.css.

编辑: 要清楚,currentDesign.writeCssIncludes(pageContext);基础页面headlibs.jsp中的调用是设置css包含的代码,如下所示:

<link href="/etc/designs/my-design/static.css" rel="stylesheet" type="text/css"/>
<link href="/etc/designs/my-design.css" rel="stylesheet" type="text/css"/>
Run Code Online (Sandbox Code Playgroud)

但是,目前尚不清楚如何将自己的CSS包含在/etc/designs/my-design.css请求的响应主体中.

aem

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

如何使用AWS CLI IoT API修复OpenSSL错误?

我正在尝试在Mac上运行AWS CLI.我正在尝试使用iot-data API读/写阴影状态.该命令实际上正常工作,但每次都会抛出OpenSSL/TLS错误.

$ aws iot-data get-thing-shadow --thing-name "my-thing-20160209" my-thing-20160209.json

/usr/local/Cellar/awscli/1.10.1/libexec/vendor/lib/python2.7/site-packages/botocore/handlers.py:574: UnsupportedTLSVersionWarning: Currently installed openssl version: OpenSSL 0.9.8zg 14 July 2015 does not support TLS 1.2, which is required for use of iot-data. Please use python installed with openssl version 1.0.1 or higher.
  UnsupportedTLSVersionWarning
Run Code Online (Sandbox Code Playgroud)

这是AWS版本.

aws-cli/1.10.1 Python/2.7.10 Darwin/14.5.0 botocore/1.3.23

如您所见,我使用Homebrew安装所有.OpenSSL和Python正确链接.我在系统上找不到任何引用OpenSSL 0.9.8zg的内容,并且Python加载了正确的OpenSSL版本.

$ python -c 'import ssl; print ssl.OPENSSL_VERSION'
OpenSSL 1.0.2f  28 Jan 2016
Run Code Online (Sandbox Code Playgroud)

有迹象表明其他因素可能会触发错误:https: //forums.aws.amazon.com/thread.jspa?messageID = 690051 #690051

但是,由于我实际上可以检索阴影状态,因此错误必须归因于其他原因.

可能导致此错误的任何想法?

更新时间:2016-09-15包括Python信息

$ head $(which aws)
#!/bin/bash
PYTHONPATH="/usr/local/Cellar/awscli/1.10.51/libexec/lib/python2.7/site-packages:/usr/local/Cellar/awscli/1.10.51/libexec/vendor/lib/python2.7/site-packages" exec …
Run Code Online (Sandbox Code Playgroud)

homebrew aws-cli

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

如何使用New-Hardlink PowerShell PSCX命令创建硬链接

我想使用PowerShell社区扩展PSCX命令行管理器New-Hardlink http://pscx.codeplex.com/创建一个新的Hardlink .我已经阅读了man文件并尝试了几乎所有命令的组合,但它不起作用.我错过了什么?(我知道fsutil,但我想使用这个命令行开关/别名)

这是目录结构:E:\ Source E:\ Test

以下是我尝试过的命令的一些变体:

New-Hardlink E:\Test\Source E:\Source
New-Hardlink -Path:"E:\Test\Source" -Target:"E:\Source"
New-Hardlink E:\Source E:\Test\Source
New-Hardlink E:\Source E:\Test\
New-Hardlink -P:"E:\Source" -T:"E:\Test\Source"
Run Code Online (Sandbox Code Playgroud)

这是假设的语法:

New-Hardlink [-Path] <String> [-Target] <String> [<CommonParameters>]

-Path <String>
    Path to the new link.

-Target <String>
    Target of the link.
Run Code Online (Sandbox Code Playgroud)

结果总是来自:

New-Hardlink : Unable to find the file 'E:\Source.
Run Code Online (Sandbox Code Playgroud)

此命令不适用于目录,只适用于文件吗?

powershell hardlink

6
推荐指数
2
解决办法
3182
查看次数