标签: delegation

您使用什么模式来分离C++中的接口和实现?

大型C++项目中的一个问题可能是构建时间.您的依赖树中有一些类需要处理,但通常您会避免这样做,因为每个构建都需要很长时间.您不一定要更改其公共接口,但也许您想要更改其私有成员(添加缓存变量,提取私有方法,...).您面临的问题是,在C++中,甚至私有成员都在公共头文件中声明,因此您的构建系统需要重新编译所有内容.

你在这种情况下做了什么?

我已经勾画了两个我所知道的解决方案,但它们都有它们的缺点,也许还有一个我尚未想到的更好的解决方案.

c++ pimpl-idiom delegation

8
推荐指数
2
解决办法
2000
查看次数

如何配置IIS以便在连接到SQL Server时使用用户的域凭据?

我们最近发布了最新版本的Intranet应用程序,它现在使用Windows身份验证作为标准,并且需要能够使用最终用户的域凭据连接到已配置的SQL服务器.

最近我们发现,在几个客户部署中,尽管IIS可以看到用户的域凭据,但它不会将这些凭据传递给SQL服务器.相反,它似乎使用匿名帐户.这是尽管遵循所有正确的步骤(将目录安全性更改为Win Auth,更新Web.Config以使用Win Auth并拒绝匿名用户).

我一直在做大量阅读,这表明我们需要确保Kerberos到位,但我不确定(a)这是多么有效(即它真的是一个要求吗?)或(b)如何去调查它是否已经设置或如何进行设置.

我们的情况是,我们需要能够配置IIS或应用程序为客户工作,或者向客户说明他们需要做些什么才能使其正常工作.

我们已经设法在我们的内部网络上使用测试SQL服务器和开发人员的IIS框重现这一点,所以我们将搞乱这个设置,看看我们是否可以提出解决方案,但是如果有人有任何解决方案聪明的想法,我很高兴听到他们!

我特别想听听人们对Kerberos的看法或建议.这是一项要求,如果是,我该如何向客户概述应该如何配置?

哦,我也看到有几个人提到域名的'经典单跳规则'和传递Windows凭据,但我不知道这实际上有多少重量?

谢谢!

马特

asp.net impersonation kerberos delegation

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

UITableViewCell如何与其UITableView进行通信?

我目前正在创建一个自定义网格视图,这意味着我正在创建一个有很多共同点的类UITableView.我想要做的事情之一是细胞的通信和网格视图.

因此,我想知道表视图单元格如何与其表视图进行对话.例如,单元格如何通知表视图已轻敲其删除按钮,并且需要从表视图中删除单元格?

有几种可能的情况,但我不确定苹果公司使用哪一种,因为它的标题UITableViewUITableViewCell显示(或者我忽略了一些东西).

最终,目标是让单元和网格视图私下通信,即不暴露任何公共方法或协议(如果可能的话).

delegation uitableview tableview ios

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

SharePoint 2013/IIS 7.5模拟/委派/双跳

好吧,我花了大约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.在每一步之后,我检查了应用程序行为的任何变化,但从未发现任何变化.

总之,我做了以下事情:

  1. 我设置了一个域用户帐户来运行应用程序池.为了进行测试,我使该用户成为Domain Admins组的成员.
  2. 我在web.config中更改了一行<add key="aspnet:AllowAnonymousImpersonation" value="false" />(确实如此).这阻止了NT AUTHORITY\IUSR用户运行应用程序,而是在我创建的域帐户下运行以运行应用程序池.我现在可以登录到SharePoint并访问我的WebPart,但是正如预期的那样,它向我提供了运行应用程序池的域用户的AD信息,而不是经过身份验证的域用户.所以我知道WebPart正在运行并具有必要的权限等,但System.Security.Principal.WindowsIdentity.GetCurrent().Name;仍然返回运行应用程序池的用户,即.冒充仍然无法正常工作
  3. 在AD用户和计算机中,我Trust this computer for delegation …

sharepoint impersonation delegation windows-authentication iis-7.5

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

如何将事件侦听器添加到div的所有子节点和这些div的数组中?

我正在自学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及其所有子节点.

javascript arrays events delegation

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

Swift 中的协议是引用类型还是值类型?

我问这个问题的原因是因为我正在阅读使用委托的教程。根据我从其他在线教程/文章中读到的内容,据我所知,这个特定的教程尚未创建保留周期。我还使用 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)

delegation ios swift

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

Rails/Rspec - 为委托方法编写规范(allow_nil选项)

鉴于以下代码:

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

delegation rspec-rails

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

使用Kerberos委派的SSAS会收到连接超时错误

我有一种情况,客户端连接到我的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

https://support.pyramidanalytics.com/entries/22056243-Configuring-Kerberos-Delegation-for-Named-Instances-of-SSAS-with-Active-Directory-and-additional-pro

sql-server ssas kerberos delegation asmx

6
推荐指数
1
解决办法
2034
查看次数

我怎样才能得到Kotlin酒店的名称?

我有以下函数来访问属性的委托.它使用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.ba从中获取实例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)

reflection delegation kotlin

6
推荐指数
1
解决办法
3590
查看次数

Kotlin:我如何在Java中使用委托属性?

我知道你不能在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字段?

java delegates delegation kotlin delegated-properties

6
推荐指数
1
解决办法
889
查看次数