小编Max*_*Max的帖子

从网页中检测我自己的Firefox扩展程序

我试图找到一种简单的方法来检测我的扩展是否安装在Firefox 3.6中.这应该从网页上完成,可能使用javascript.

我已经阅读了很多博客,说我应该尝试从我的扩展程序中加载图像.由于我拥有扩展,我可以编写代码,这似乎是一个不必要的黑客.

我还考虑过为web文档设置一个全局变量,但是我无法实现这一点.我以为我能写:

top.window.content.document.hasMyPlugin = true

但这似乎不起作用(hasMyPlugin未定义).我只访问我的域时添加了这个变量(我添加了一个WebProgressListener并检查了主机属性),因此全局命名空间污染应该不是问题.

有任何想法吗?

UPDATE

我尝试访问变量的方式很简单if(hasMyPlugin)或者if(document.hasMyPlugin)......也许我正在以错误的方式访问它?

javascript firefox-addon detection

5
推荐指数
1
解决办法
2103
查看次数

对IIS使用Web Deploy工具-与管理员帐户一起使用,但不适用于IIS或Windows用户帐户

我正在为WMSvc-IIS的Web管理服务而困扰。

我正在尝试从Visual Studio部署网站,这使我丧命。实际上,这杀死了我团队中除我以外的所有人,但是由于我现在被任命为Web服务器经理,因此我感到很伤心。

当我使用管理Windows帐户进行部署时,它可以正常工作,这至少意味着我应该在途中,但不适用于非管理员或IIS管理器帐户的其他帐户。

让我告诉你我做了什么:

  1. 已安装WMSvc。

  2. 看似配置它。在“我的服务器/管理服务”下,设置为:

    Enable Remote Connections
    Windows credentials or IIS Manager credentials
    Access for unspecified clients - allow.
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加了用户MYUSER作为IIS管理器帐户。还添加了一个Windows帐户MYSERVER \ MYUSER

  4. 在“ MYSERVER /我的网站/ IIS管理器权限”下添加了这些用户。
  5. 牺牲了一只山羊。
  6. 在MYSERVER /管理服务委托下添加了规则

    Deploy Applications with Content - and added user *
    Set Permissions - and added user *
    
    Run Code Online (Sandbox Code Playgroud)

毕竟,它可以通过我的Windows管理员帐户运行,但不能通过其他帐户运行。Visual Studio报告401未经授权。在我关注的文章中,“故障排除”下有以下引用:

用户尝试连接到网站时收到401未经授权的错误。o原因:此错误来自WMSVC,通常是用户名/密码错误,或者是因为用户无权访问网站。o解决方案:验证用户名/密码,并且用户有权访问该网站。

但老实说,我不知道我现在做错了什么。有任何想法吗?

感谢您的任何答案。

permissions iis-7 visual-studio http-status-code-401 webdeploy

5
推荐指数
1
解决办法
1029
查看次数

NHibernate查询,对引用的实体有限制

我正在使用Nhibernate与SQL Server 2008.

我正在尝试执行以下代码:

        var localization = session.QueryOver<T>()
            .Where(idFilter).AndRestrictionOn(x => x.Language.IETFTag).IsLike(tag + "%").SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

但是,我在该行上得到一个异常,说nhibernate无法解析属性Language.IETFTag(或者那种效果).

我尝试过使用JoinQueryOver()但是它抱怨我在FROM子句中有多个相关性或类似的奇怪之处.感觉就像是在做一些非常错误的事情.我怎么能做我想做的事?

我有以下映射:

internal class LocalizationMapping : ClassMap<Localization>
{
    public LocalizationMapping()
    {
        UseUnionSubclassForInheritanceMapping();
        Id(x => x.Id).GeneratedBy.HiLo("HiLo", "NextHi", "1000");
        References(x => x.Language);
    }
}

internal class LanguageMapping : ClassMap<Language>
{
    public LanguageMapping()
    {
        Id(x => x.Id);
        Map(x => x.DefaultName);
        Map(x => x.IETFTag);
    }
}

internal class ArticleLocalizationMapping : SubclassMap<ArticleLocalization>
{
    public ArticleLocalizationMapping()
    {
        Map(x => x.Name);
        Map(x => x.Description);
        References(x => x.Article);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# nhibernate properties resolve queryover

3
推荐指数
1
解决办法
5396
查看次数

params关键字是否保证项目与列出的顺序相同?

我正在开发一个简单的API,它将接受许多IBehaviours,然后在配置中应用它们.我使用params关键字设计它,因为通常只需要一个行为,但有时更多.

但是,以正确的顺序应用行为非常重要.

public void Configure(string wow, params IBehaviour[] behaviours) { ... }

Configure("oh yes", new MustHappenFirst(), new MustHappenSecondly());
Run Code Online (Sandbox Code Playgroud)

做这个

  1. 技术上暗示behaviours 在枚举时以相同的顺序发生?(在标准方面,不仅仅是实际上).

  2. 在语义上和直觉上传达相同的行为?

谢谢.

c# communication params

3
推荐指数
1
解决办法
228
查看次数

允许C++类访问其他类的某个"内部"成员,但不是私有的?

当编码在功能上紧密耦合的类,但是你想要一个简单的接口到世界其他地方时,如果我可以做这样的事情,那将是很好的:

class log
{
private:
  log_context& cont;
public:
  create_log_section(std::string name)
  {
    cont.create_log_section(name);// this is fine! It's "internal"
    cont.this_is_private();       // doesn't compile. Don't want anyone touching my privates!
  }
};

class log_context
{
internal:
  void create_log_section(std::string name);
private:
  void this_is_private();
internal friend log;             // Wow, possible?
}
Run Code Online (Sandbox Code Playgroud)

现在,这将允许日志访问上下文的相关部分,而不是私有部分.程序的其余部分应使用日志添加任何上下文.它也可以log_contexts在日志之间传递强类型而不需要任何额外的功率.我意识到这个特殊的解决方案是不可能的,但是有什么常见的解决方案呢?

c++ access-control

3
推荐指数
1
解决办法
573
查看次数

如何准备代码库以在Windows和基于Unix的系统上进行编译

我想知道不同的解决方案,轻松编译我的跨平台应用程序的Windows和unix.

现在我使用Ubuntu的一个makefile,但我的代码库变大之前,我想执行必要的编译它在Windows上的步骤,然后继续这样做有规律地看到,它仍然有效.

我最好不要用多个"makefile"解决方案污染我的SVN代码库,比如VC++解决方案等,我想要一种更自动的方式.我尝试使用mingw和make for windows,但似乎我的secondexpansion awesomeness在Windows版本(或类似的东西)上不起作用.它不会编译,也抱怨_winNT或类似的东西没有被定义.

我应该如何准备我的代码库以进行跨平台轻松编译?像buildtools这样的东西,也许是从makefile自动生成VS文件,或类似的东西.也许在stdinc文件中有一些预处理器魔术?

谢谢!

c++ cross-platform build

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

使用reflection - base.Property而不是this.Property获取baseclass属性值

我想知道这样的事情是否可行:我已经覆盖了基类的属性,它是自动实现的.我在覆盖中提供了逻辑,以解决默认设置下的"缺失"属性.

现在,我想使用反射来检查是使用默认值还是某些"实际"值.换句话说,我需要检查是否base.Property为null,但是使用反射.这不起作用,它只是获取子类值(根据默认值解析,因此不为null).

var property = this.GetType().GetProperty(e.PropertyName);
if(property.GetValue(this, null) == null))
    OnPropertyChanged(e.PropertyName);
Run Code Online (Sandbox Code Playgroud)

还尝试过:

var property = this.GetType().BaseType.GetProperty(e.PropertyName);
if(property.GetValue(this, null) == null))
    OnPropertyChanged(e.PropertyName);
Run Code Online (Sandbox Code Playgroud)

是否可以使用反射来访问基类值?

更新:

根据评论的建议,我尝试了以下,只是为了踢.

var method1 = this.GetType().BaseType.GetMethods().First(x => x.Name.Contains(e.PropertyName));
var method = this.GetType().BaseType.GetProperty(e.PropertyName).GetGetMethod();
var methodValue = method1.Invoke(this, null);
Run Code Online (Sandbox Code Playgroud)

这两个仍然返回"派生"值,同时base.Property返回null.

c# reflection properties

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

以编程方式生成C#代码文件的干净,高效,绝对可靠的方法

我想知道是否有任何好方法以编程方式生成C#代码而不实际操作字符串或StringBuilders.此外,它应检查代码是否编译,但我想这可以使用CSharpCodeProvider完成.

我正在寻找以下内容:

CodeUnit unit = new CodeUnit();
unit.AddDefaultUsings();
unit.AddUsing("MyApi.CoolNameSpace", "MyApi.Yay");
var clazz = unit.AddClass("GeneratedClass", Access.Public);
clazz.AddConstructor("....");
if(unit.Compile() != true)
    //oh dang, somethings wrong!
else unit.WriteUTF8To("GeneratedClass.cs");
Run Code Online (Sandbox Code Playgroud)

这可能是核心库的一部分(不要认为CSharpCodeProvider可以做到这一点?)或外部库,但这根本不是我的强项(使用c#动态生成代码),所以如果这看起来毫无头绪,那是因为我!

.net c# code-generation

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

忽略OpenGL typedef有什么影响?

所以,我正在使用OpenGL,其中typedefs unsigned integer- > GLuint.

出于某种原因,将程序与GLuint一起使用感觉是错误的,而不是更通用的无符号整数或uint32_t.

关于忽略typedef的消极/积极方面的任何想法?

opengl typedef

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

CreateFileMapping和OpenFileMapping不在不同的进程中协作

我正在尝试使用CreateFileMapping和OpenFileMapping在进程之间共享内存.这不是我想要的 - OpenFileMapping返回null而GetLastError是5 - 访问被拒绝.我有什么想法我做错了吗?名称就像MemoryTest.

编辑:

使用CreateFileMapping两次我都可以读取在其他进程中写入的数据.这是一个问题的原因是我得到错误183 - 内存区已经存在.但是,它仍然返回现有内存的句柄.

var map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), name.c_str());

....

var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0)

*handle = 10;

UnMapViewOfFile(map_handle);

getchar();
Run Code Online (Sandbox Code Playgroud)

其他过程:

var map_handle = OpenFileMapping(PAGE_READWRITE, false, name.c_str())

....

var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0) //returns null

var out = *handle;

getchar();
Run Code Online (Sandbox Code Playgroud)

这适用于第二个过程:

var map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), name.c_str());

....

var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0) //returns null

var …
Run Code Online (Sandbox Code Playgroud)

c++ winapi shared-memory

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

UDP服务器到客户端通信 - UDP是无状态的,如何绕过路由器?

在最近的一系列问题中,我已经提出了很多关于UDP,boost :: asio和c ++的问题.

我在Stackoverflow上似乎没有答案的最新问题是:

在客户机/服务器应用程序,这是相当好的,要求服务器在防火墙中打开一个端口,这样的消息被允许在.不过,这样做同样的客户端是绝对不是一个很好的用户体验.

TCP连接通常实现这一点,因为大多数路由器支持有状态数据包检查,如果原始请求来自本地主机,则允许响应数据包通过.

我不太清楚它如何与UDP一起工作,因为UDP是无状态的,并且没有"响应数据包"(据我所知).我应该如何在我的客户端应用程序中解释这一点?

谢谢你的回答!

client router udp portforwarding

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

从不调用XmlSerializer中的重写反序列化

我慢慢地感觉到我的理智在边缘磨损,而我的思绪慢慢消失.

我想扩展XmlSerializer,由于某种原因它不支持反序列化通知.

我有以下代码:

public class NotificationXmlSerializer : XmlSerializer
{
    public NotificationXmlSerializer(Type type)
        : base(type)
    { 
    }

    protected override object Deserialize(XmlSerializationReader reader)
    {
        var x = base.Deserialize(reader);
        var methods = x.GetType().GetMethods().Where(method => method.GetCustomAttributes(true).Any(attr => attr is OnDeserializedAttribute));

        return x;
    }
}
Run Code Online (Sandbox Code Playgroud)

并以这种方式使用它:

    using (MemoryStream fs = new MemoryStream())
    {
        var x = new NotificationXmlSerializer(typeof(int));
        x.Serialize(fs, 5);
        fs.Seek(0, SeekOrigin.Begin);
        var y = x.Deserialize(fs);
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果我在我的Deserialize覆盖中放置一个断点,它永远不会被击中!即使我故意在那里抛出异常,程序功能也是正常的,所以我相信它永远不会被击中.

为什么他们会让我覆盖一个内部方法Deserialize而不会让我影响它的任何东西?

我究竟做错了什么?

最好的问候,马克斯

c# extend xmlserializer

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