Web浏览器是否在iframe中为JavaScript使用单独的执行线程?
我相信Chrome会为每个标签使用单独的线程,因此我猜测iframe中的JavaScript会与其父窗口共享相同的线程,但是,这似乎也是一种安全风险.
每次我创建一个具有集合属性的对象时,我都会以最好的方式来回去做?
如果集合是一个数组(即objList.Clone())而不是List,它会有所不同吗?
如果返回实际集合作为引用是如此糟糕,因为它创建依赖项,那么为什么返回任何属性作为引用?每当您将子对象作为引用公开时,除非父级具有属性更改事件,否则可以在父级"知道"的情况下更改该子对象的内部.是否有内存泄漏的风险?
并且,不要选项2和3打破序列化?这是一个catch 22还是你必须在有集合属性的时候实现自定义序列化?
通用的ReadOnlyCollection似乎是一般用途的一个很好的折衷方案.它包装IList并限制对它的访问.也许这有助于内存泄漏和序列化.然而,它仍然有枚举问题
也许它只是取决于.如果您不关心集合是否被修改,那么只需将它作为公共访问器公开在每个#1的私有变量上.如果您不希望其他程序修改集合,那么#2和/或#3会更好.
问题隐含的是为什么一种方法应该用于另一种方法,以及对安全性,内存,序列化等的影响是什么?
我有一个文件保存为UCS-2 Little Endian我想更改编码,所以我运行以下代码:
cat tmp.log -encoding UTF8 > new.log
Run Code Online (Sandbox Code Playgroud)
生成的文件仍在UCS-2 Little Endian中.这是因为管道始终采用这种格式吗?有没有一种简单的方法可以将其作为UTF8传输到新文件?
我在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:将会话注入到类构造函数 论坛帖子中 …
我正在使用RavenDB作为应用程序的数据存储的想法,该应用程序很可能具有HTML UI,WebService UI和将访问数据的服务器实用程序.使用RavenDB的一个原因是它通过复制和分片提供的水平扩展.但是,似乎有几个关于将Raven作为Windows服务运行或通过IIS运行的考虑因素.
EDITED
我可以理解使用Raven的嵌入式配置,如果您拥有的只是一个Web客户端,但是当您拥有多个不同的客户端时,Raven的API需要独立公开以防止单个客户端锁定数据文件.
对于这种情况,我有一个带有一些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()
但这不是一个选择.我错过了什么?
我有一个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以准确反映我正在使用的其他设置
在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请求的响应主体中.
我正在尝试在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) 我想使用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)
此命令不适用于目录,只适用于文件吗?
architecture ×2
javascript ×2
powershell ×2
.net ×1
aem ×1
angularjs ×1
asp.net-mvc ×1
aws-cli ×1
browser ×1
c# ×1
encoding ×1
hardlink ×1
homebrew ×1
ravendb ×1
sql-server ×1
t-sql ×1