大型C++项目中的一个问题可能是构建时间.您的依赖树中有一些类需要处理,但通常您会避免这样做,因为每个构建都需要很长时间.您不一定要更改其公共接口,但也许您想要更改其私有成员(添加缓存变量,提取私有方法,...).您面临的问题是,在C++中,甚至私有成员都在公共头文件中声明,因此您的构建系统需要重新编译所有内容.
你在这种情况下做了什么?
我已经勾画了两个我所知道的解决方案,但它们都有它们的缺点,也许还有一个我尚未想到的更好的解决方案.
我们最近发布了最新版本的Intranet应用程序,它现在使用Windows身份验证作为标准,并且需要能够使用最终用户的域凭据连接到已配置的SQL服务器.
最近我们发现,在几个客户部署中,尽管IIS可以看到用户的域凭据,但它不会将这些凭据传递给SQL服务器.相反,它似乎使用匿名帐户.这是尽管遵循所有正确的步骤(将目录安全性更改为Win Auth,更新Web.Config以使用Win Auth并拒绝匿名用户).
我一直在做大量阅读,这表明我们需要确保Kerberos到位,但我不确定(a)这是多么有效(即它真的是一个要求吗?)或(b)如何去调查它是否已经设置或如何进行设置.
我们的情况是,我们需要能够配置IIS或应用程序为客户工作,或者向客户说明他们需要做些什么才能使其正常工作.
我们已经设法在我们的内部网络上使用测试SQL服务器和开发人员的IIS框重现这一点,所以我们将搞乱这个设置,看看我们是否可以提出解决方案,但是如果有人有任何解决方案聪明的想法,我很高兴听到他们!
我特别想听听人们对Kerberos的看法或建议.这是一项要求,如果是,我该如何向客户概述应该如何配置?
哦,我也看到有几个人提到域名的'经典单跳规则'和传递Windows凭据,但我不知道这实际上有多少重量?
谢谢!
马特
我目前正在创建一个自定义网格视图,这意味着我正在创建一个有很多共同点的类UITableView.我想要做的事情之一是细胞的通信和网格视图.
因此,我想知道表视图单元格如何与其表视图进行对话.例如,单元格如何通知表视图已轻敲其删除按钮,并且需要从表视图中删除单元格?
有几种可能的情况,但我不确定苹果公司使用哪一种,因为它的标题UITableView或UITableViewCell显示(或者我忽略了一些东西).
最终,目标是让单元和网格视图私下通信,即不暴露任何公共方法或协议(如果可能的话).
好吧,我花了大约15个小时试图解决这个问题,我终于辞职到这里发帖试图解决它.我知道这个帖子很长但是我做了所有正常的事情,我将被告知要尝试,所以我想确保它很清楚,所以我们不要浪费时间.
我有一个托管在ESXi 5.0服务器上的Win Server 2008 R2虚拟机.在这台服务器上,我安装了SharePoint Foundation 2013 Preview以及所有pre-requsites等.我正在运行这一台服务器(MSSQL,IIS 7.5,SharePoint服务),因为我们的使用非常有限,只有大约30个用户.我迫切需要添加到SharePoint的一件事是用户能够在Active Directory(Server 2003)中修改他们的信息,因为我们的AD几乎没有填充并且已经过时.我找到了一个完美的WebPart,它可以很好地用于编辑用户.
当我想配置WebPart以允许用户仅编辑自己时,问题就出现了.WebPart(正确)在C#.NET中使用这行代码:获取当前登录的身份,该身份通过IIS中的Windows身份验证进行身份验证.相反,这是返回本地用户NT AUTHORITY/IUSR.(我知道这对任何人来说都不是新闻).
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
所以我开始研究并确定以下事项.
在我的web.config for SharePoint中,我有以下内容:
<authentication mode="Windows" /><identity impersonate="true" />
在IIS中,我有IIS网站的以下身份验证设置,其中包含我的SharePoint安装:
Anonymous Authentication Disabled
ASP.NET Impersonation Enabled
Basic Authentication Disabled HTTP 401 Challenge
Digest Authentication Disabled HTTP 401 Challenge
Forms Authentication Disabled HTTP 302 Login/Redirect
Windows Authentication Enabled HTTP 401 Challenge
Run Code Online (Sandbox Code Playgroud)
所以我知道即使我禁用了匿名身份验证,该网站仍然使用匿名用户登录.我发现了与我的问题相符的双跳问题的信息,我遇到了这个链接,并按照这篇文章中的所有说明进行了操作:http: //blogs.technet.com/b/taraj/archive/2009/01/29 /checklist-for-double-hop-issues-iis-and-sql-server.aspx.在每一步之后,我检查了应用程序行为的任何变化,但从未发现任何变化.
总之,我做了以下事情:
<add key="aspnet:AllowAnonymousImpersonation" value="false" />(确实如此).这阻止了NT AUTHORITY\IUSR用户运行应用程序,而是在我创建的域帐户下运行以运行应用程序池.我现在可以登录到SharePoint并访问我的WebPart,但是正如预期的那样,它向我提供了运行应用程序池的域用户的AD信息,而不是经过身份验证的域用户.所以我知道WebPart正在运行并具有必要的权限等,但System.Security.Principal.WindowsIdentity.GetCurrent().Name;仍然返回运行应用程序池的用户,即.冒充仍然无法正常工作Trust this computer for delegation …sharepoint impersonation delegation windows-authentication iis-7.5
我正在自学JS并试图避免jQuery,直到我的JS技能更好.
目标:为click事件添加一个eventlistener到某个类的所有div.让该类的所有子节点响应该事件.
我的HTML
<div class="grid-panel six columns">
<div class="grid-panel-image">
<i class="fa fa-css3"></i>
</div>
<div class="grid-panel-title">
<h4>css3</h4>
</div>
</div>
<div class="grid-panel six columns">
<div class="grid-panel-image">
<i class="fa fa-paint-brush"></i>
</div>
<div class="grid-panel-title">
<h4>tamberator</h4>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我.grid-panel使用这个JS 选择所有的div
var gridPanels = document.querySelectorAll('.grid-panel');
Run Code Online (Sandbox Code Playgroud)
然后,因为它返回一个div数组与类.grid-panel
我添加事件监听器进行点击
for(i=0; i<gridPanels.length; i++){
gridPanels[i].addEventListener('click', myFunction);
}
Run Code Online (Sandbox Code Playgroud)
我的功能是这个
myFunction(){
var e = event.target;
switch(e){
case gridPanels[0]:
modalArray[0].setAttribute("data-modal-display", "show");
break
case gridPanels[1]:
modalArray[1].setAttribute("data-modal-display", "show");
break
}
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
如果我单击.grid-paneldiv的一个非常特定的部分和e特定元素的日志,这确实有效.但是,单击div的任何子项将记录e为我单击的元素,但eventlistener不会应用于该元素.我在这个事件代表团中明显遗漏了一些东西.我真的希望函数能够点击所点击的div及其所有子节点.
我问这个问题的原因是因为我正在阅读使用委托的教程。根据我从其他在线教程/文章中读到的内容,据我所知,这个特定的教程尚未创建保留周期。我还使用 Instruments(内存泄漏和僵尸)对其进行了测试,以确保没有内存泄漏。
我试图弄清楚一个类是否只是简单地符合协议,这是否会创建一个引用?
我认为不会,但我想确定一下。
以下是创建委托成员的协议和类:
import Foundation
import CoreBluetooth
protocol TransferServiceScannerDelegateProtocol: NSObjectProtocol {
func didStartScan()
func didStopScan()
func didTransferData(data: NSData?)
}
class TransferServiceScanner: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
var centralManager: CBCentralManager!
var discoveredPeripheral: CBPeripheral?
var data = NSMutableData()
weak var delegate: TransferServiceScannerDelegateProtocol?
init(delegate: TransferServiceScannerDelegateProtocol?) {
super.init()
centralManager = CBCentralManager(delegate: self, queue: nil)
self.delegate = delegate
}
//start of cbCentralDelegate method
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
print("Central is powered on...")
break
case .poweredOff:
print("Central is powered off...") …Run Code Online (Sandbox Code Playgroud) 鉴于以下代码:
(1)您如何编写规范来测试:allow_nil => false选项?
(2)是否值得编写规范进行测试?
class Event < ActiveRecord::Base
belongs_to :league
delegate :name, :to => :league, :prefix => true, :allow_nil => false
end
describe Event do
context 'when delegating methods to league object' do
it { should respond_to(:league_name) }
end
end
Run Code Online (Sandbox Code Playgroud)
如果你能扩展应该这样做,那将是很好的:
it { should delegate(:name).to(:league).with_options(:prefix => true, :allow_nil => false) }
Run Code Online (Sandbox Code Playgroud) 我有一种情况,客户端连接到我的webservice(存在于另一台服务器上)必须访问SQL Server数据库和SSAS服务器.
它必须使用在访问SQL Server和SSAS多维数据集时调用服务的客户端的凭据.
为此,我这样做
var winId = HttpContext.Current.User.Identity as WindowsIdentity; var ctx = winId.Impersonate(); // Access Database/SSAS ctx.Undo();
在我的服务中,访问SQL Server数据库时工作正常.
但是,当我访问SSAS服务器时,我得到"连接超时或丢失"
有很多帖子,如 http://denglishbi.wordpress.com/2009/03/31/windows-server-2008-kerberos-bug-%E2%80%93-transport-connection-issues-with-ssas- data/ http://sqlblogcasts.com/blogs/drjohn/archive/2009/03/28/kerberos-kills-large-mdx-queries-on-windows-server-2008-ssas.aspx
在这方面,但我使用的是我的服务所在的Windows Server 2008 R2,所以这应该不是问题,因为这个错误应该由Microsoft修复.
任何关于如何最好地诊断这个问题的信息将不胜感激.
澄清SSAS服务器确实有SPN.这实际上是在一点上工作但现在已经停止了.没有重复的SPN或任何东西的迹象.
有趣的是,它在一台SSAS服务器上间歇工作,但似乎一直在为另一台服务器工作.它们都已经命名为本文档中提到的SPN
我有以下函数来访问属性的委托.它使用Kotlin反射来获取属性的名称和Java反射以获得该字段.
fun Any.getDelegate<T>(prop: KProperty<T>): Any {
return javaClass.getDeclaredField("${prop.name}\$delegate").let {
it.setAccessible(true)
it.get(this)
}
}
Run Code Online (Sandbox Code Playgroud)
该方法使用如下:
val delegate = a.getDelegate(A::b)
Run Code Online (Sandbox Code Playgroud)
但是,我更喜欢这样使用它:
val delegate = a.b.delegate
Run Code Online (Sandbox Code Playgroud)
上面代码的问题是获取属性名称a.b并a从中获取实例a.b.根据我对Kotlin的了解,这可能是不可能的,但是我想看看我是否可以清理我的功能.
为了更好地了解我正在尝试做的事情,这是我的完整代码.我想要一个可观察的委托,我可以使用委托引用添加和删除观察者,而不创建附加变量.
fun Any.addObservable<T>(prop: KProperty<T>, observer: (T) -> Unit) {
getObservableProperty(prop).observers.add(observer)
}
fun Any.getObservableProperty<T>(prop: KProperty<T>): ObservableProperty<T> {
return getDelegate(prop) as ObservableProperty<T>
}
fun Any.getDelegate<T>(prop: KProperty<T>): Any {
return javaClass.getDeclaredField("${prop.name}\$delegate").let {
it.setAccessible(true)
it.get(this)
}
}
class ObservableProperty<T>(
initialValue: T,
initialObservers: Array<(T) -> Unit> = emptyArray()) : ReadWriteProperty<Any?, T> {
private var value …Run Code Online (Sandbox Code Playgroud) 我知道你不能在Java中使用委托属性语法,并且不会像在Kotlin中那样"覆盖"set/get运算符,但我仍然希望在Java中使用现有的属性委托.
例如,int的简单委托:
class IntDelegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>) = 0
}
Run Code Online (Sandbox Code Playgroud)
在Kotlin当然我们可以这样使用:
val x by IntDelegate()
Run Code Online (Sandbox Code Playgroud)
但是我们如何IntDelegate在Java中以某种形式使用?这是开始,我相信:
final IntDelegate x = new IntDelegate();
Run Code Online (Sandbox Code Playgroud)
然后直接使用这些功能.但是我该如何使用该getValue功能呢?我的参数是什么?我如何获得KPropertyJava字段?
delegation ×10
ios ×2
kerberos ×2
kotlin ×2
arrays ×1
asmx ×1
asp.net ×1
c++ ×1
delegates ×1
events ×1
iis-7.5 ×1
java ×1
javascript ×1
pimpl-idiom ×1
reflection ×1
rspec-rails ×1
sharepoint ×1
sql-server ×1
ssas ×1
swift ×1
tableview ×1
uitableview ×1