小编Joh*_*ohn的帖子

Puppet/Facter"无法检索事实fqdn":如何修复或规避?

我正在学习木偶并尝试在家里的虚拟机上进行试验.我还没有使用木偶服务器,只是在本地运行.它工作正常,但每次运行时puppet apply ...,我都会延迟几秒钟,然后显示消息

warning: Could not retrieve fact fqdn
Run Code Online (Sandbox Code Playgroud)

我假设消息与延迟有关,我想摆脱它(延迟 - 我可以忍受消息).谷歌搜索解决方案似乎表明它与DNS查找有某种关系,但我真的找不到任何关于它的东西,这似乎令人惊讶.我想要的就是能够快速地在我的vm中应用清单,这样我就可以进行实验.我怎样才能加快速度?

更新:我没有在调试输出中看到任何额外的信息,但它看起来像这样:

$ puppet apply -dv puppet-1.pp 
warning: Could not retrieve fact fqdn
debug: Failed to load library 'rubygems' for feature 'rubygems'
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::File::ProviderMicrosoft_windows: feature microsoft_windows is missing
...
Run Code Online (Sandbox Code Playgroud)

更新:我添加了"ruby"标签,因为木偶的粉丝很少.如果这不属于红宝石,或者您知道更好的标签,请告诉我.

再次更新:我已经了解了更多关于puppet的内容,我现在明白这条消息来自名为"Facter"的组件,该组件嗅出了关于运行Puppet的系统的"事实".我找到了一些配置选项,并使用"certname","node_name""node_name_value",但我无法让延迟消失.有没有人具体知道如何告诉Facter忽略fqdn或如何让Facter能够在Ubuntu 11.10 vm上找到fqdn?

进展:

$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

那是我的路由器,它通过Tomato运行Dnsmasq.

$ dig -x 192.168.1.129 192.168.1.1 …
Run Code Online (Sandbox Code Playgroud)

ruby puppet facter

47
推荐指数
4
解决办法
4万
查看次数

我应该将我的ThreadLocals放入弹簧注入的单例中吗?

有些人(例如在服务器端http://www.theserverside.com/news/thread.tss?thread_id=41473)建议使用ThreadLocal对象与使用全局变量一样糟糕.我想如果你把它们变成公共静态变量就行了.那么问题是很难分辨它的使用位置,改变的地方等等.

在我的春天DI tomcat web-app中,它似乎可以解决这个问题,如果我只是为了创建一个包含我的ThreadLocal的单例对象,然后将该单例注入任何需要它的类中.

所以我的单身人士看起来像这样:

@Component
public class Username {
    private ThreadLocal<String> username;

    public Username() {
        username = new ThreadLocal<String>();
    }

    public String getUsername()
        return username.get();
    }

    public void setUsername(String name) {
        username.set(name);
    }
}
Run Code Online (Sandbox Code Playgroud)

可能需要它的类看起来像这样:

@Service
public class addEntryTransaction {

    @Autowired
    Username username;

    public void method() {
        ...
        log("Method called by "+username.getUsername());
        ...
     }

}
Run Code Online (Sandbox Code Playgroud)

这仍然具有不必通过许多不关心的层传递用户名的好处,因此保持方法参数更简单.@Autowired是此类使用该变量的声明.

这种方法有哪些优缺点?

java concurrency spring dependency-injection

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

新grails应用程序的功能测试框架的优缺点是什么?

我有分析瘫痪,查看新grails(v1.3.4)应用程序的所有不同功能测试选项.我看了看

而且必须有其他人.我认为我将用于做出决定的一些标准包括(没有特别的顺序):

  • 可能长寿,积极发展
  • 可以做ajax/javascript
  • 支持PageObject或类似模式
  • 到期
  • 无头(例如htmlunit)是可以的,特别是如果它让事情变得更快
  • 报告很好
  • 支持NTLM凭证提供程序或类似
  • 紧凑,强大的测试脚本
  • 利用时髦的语言

我会特别感兴趣的是那些试过多个框架的人.谢谢!

testing grails groovy automated-tests functional-testing

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

Spring事务可以使同步方法不同步吗?

我的同事和我有一个Web应用程序,它在MyEclipse里面的Tomcat上使用Spring 3.0.0和JPA(hibernate 3.5.0-Beta2).其中一个数据结构是树.为了好玩,我们尝试使用JMeter对"插入节点"操作进行压力测试,并发现了并发问题.Hibernate报告在发出如下警告之后发现具有相同私钥的两个实体:

 WARN  [org.hibernate.engine.loading.LoadContexts] fail-safe cleanup (collections) : ...
Run Code Online (Sandbox Code Playgroud)

如果多个线程同时调用insert()方法,很容易看出这些问题可能会发生.

我的servlet A调用服务层对象B.execute(),然后调用较低层对象C.insert().(真正的代码太大了,不能发布,所以这有点删节.)

Servlet A:

  public void doPost(Request request, Response response) {
    ...
    b.execute(parameters);
    ...
  }
Run Code Online (Sandbox Code Playgroud)

服务B:

  @Transactional //** Delete this line to fix the problem.
  public synchronized void execute(parameters) {
    log("b.execute() starting. This="+this);
    ...
    c.insert(params);
    ...
    log("b.execute() finishing. This="+this);
  }
Run Code Online (Sandbox Code Playgroud)

子服务C:

  @Transactional
  public void insert(params) {
    ...
    // data structure manipulation operations that should not be 
    // simultaneous with any other manipulation operations called by B.
    ...
  }
Run Code Online (Sandbox Code Playgroud)

我所有的状态更改调用都通过B,所以我决定创建B.execute() …

spring hibernate jpa transactions synchronized

5
推荐指数
2
解决办法
3698
查看次数

我可以在IE8中显示Windows用户控件

我有一个遗留的Windows窗体应用程序,我希望像Web应用程序一样显示内部用户的浏览器(IE8).我一直在研究的方法是创建一个Windows窗体库(dll)并在浏览器中显示它.有很多网页告诉我如何做到这一点:

但我无法让它发挥作用.我已经制作了一个简单的Windows控件库,并构建了DLL.我把它放在IIS 7.5站点的顶级目录中,以及一个像这样的html文件:

<html>
   <body>
    <object id='c' classid='http:TestWinCtrlLib.dll#TestWinCtrlLib.UserControl1' height='300' width='400'>
    </object>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的浏览器显示一个300x400的盒子,左上角有一个小的"图片"图标.起初,IIS拒绝提供.dll文件,提供403.2和401.2错误,但现在我已正确设置IIS持久性属性,日志表明它正在成功提供.

2012-05-01 01:28:50 ::1 GET /form.html - 8008 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E) 200 0 0 1
2012-05-01 01:28:50 ::1 GET /TestWinCtrlLib.dll - 8008 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E) 200 0 0 23
Run Code Online (Sandbox Code Playgroud)

我甚至不知道出了什么问题.上面的第一个链接有一个关于错误报告的部分,我已将这些密钥添加到注册表中,但我没有看到任何错误.我尝试从cmd提示符启动iexplore,以防错误显示在标准输出上,但什么都没有.

错误报告

代码下载过程使用以下两个注册表设置来控制使用Internet Explorer部署的托管代码可执行文件的错误报告.

  • HKLM\SOFTWARE\Microsoft.NETFramework\ExposeExceptionsInCOM
  • HKCU\SOFTWARE\Microsoft.NETFramework\ExposeExceptionsInCOM

...

调试使用Internet Explorer部署的托管代码时,可以使用这些设置的值来查找有关代码下载失败的详细信息.例如,这允许您在抛出异常时查看堆栈跟踪信息,而不是依赖Internet Explorer提供的错误报告,而Internet Explorer是为最终用户而非开发人员设计的.

是否可能不再支持此功能?我发现的大多数参考文献似乎都是2007-2010.也许ClickOnce是现在唯一的方法.我可以让它工作,但代码运行在自己的窗口,而不是在浏览器内.

我尝试使用.Net frameworks 3.5 Client Profile和4.0 Client Profile编译库.但他们似乎给出了同样的结果.

欢迎任何帮助 - 谢谢.

.net internet-explorer winforms

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

IE7表中的CSS子选择器

我试图在IE7中使用> CSS子选择器,它似乎不起作用.我有嵌套表.我的外表有一个类名"mytable",我希望外表的td显示边框.我不希望内表td有边框.

我想我应该能够拥有如下所示的CSS:

.mytable { border-style: solid }
.mytable>tr>td { border-style: solid }
Run Code Online (Sandbox Code Playgroud)

但第二行似乎没有效果.如果我更改第二行以使其不那么具体,它适用于所有td - 我看到太多边框.

td { border-style: solid }
Run Code Online (Sandbox Code Playgroud)

所以我认为这只是选择器的一个问题.像这样的页面表明IE7应该能够做我想要的.我做傻事吗?

这是整个HTML文件:

<html>
  <head>
    <style type="text/css">
      .mytable { border-style: solid; border-collapse: collapse;}
      td { border-style: solid; }
    </style>
  </head>

  <body>
    <table class="mytable">
      <tr>
        <td>Outer top-left</td>
        <td>Outer top-right</td>
      </tr>
      <tr>
        <td>Outer bottom-left</td>
        <td>
          <table>
            <tr>
              <td>Inner top-left</td>
              <td>Inner top-right</td>
            </tr>
            <tr>
              <td>Inner bottom-left</td>
              <td>Inner bottom-right</td>
            </tr>
          <table>
        </td>
      </tr>
    <table>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

css css-selectors internet-explorer-7

4
推荐指数
2
解决办法
4699
查看次数

如何在Web应用程序中测试上下文菜单功能?

我正在玩一个带有上下文菜单的grails应用程序(右键单击).上下文菜单是使用Chris Domigan的jquery contextmenu插件构建的.

虽然上下文实际上有效,但我想进行自动化测试,而我无法确定如何做到这一点.

  • 我试过Selenium 2.05a(即Webdriver),但是没有rightClick方法.
  • 我注意到HtmlUnit有一个rightclick方法,但我似乎无法在点击之前和之后检测到DOM之间的任何差异.

selenium automated-tests contextmenu webdriver htmlunit

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

Python版"facter"?

我正在考虑收集服务器数据,并在那些服务器中预安装Python 2.6.现在我想知道是否有Python库对应Ruby的"facter",而不是Python的"绑定"因为facter.

我用Google搜索但却找不到任何东西.有没有人对此有任何想法?

python facter

4
推荐指数
2
解决办法
3410
查看次数

无法读取远程专用队列

我正在尝试让 MSMQ 5 在我的两台 Windows Server 2008 R2 虚拟机上运行。我可以发送到本地和远程专用队列,并且可以从本地专用队列中读取。我无法从远程专用队列中读取数据。

我读过很多建议,尤其是 John Breakwell 在MSMQ Issue Reading Remote PrivateQueues (again)中总结的建议。

我已经做过的事情:

  • 关闭两台机器上的防火墙。
  • 确保Everyone 和AnonymousLogon 完全控制队列。(如果我取消 AnonymousLogon 访问权限,那么我无法远程发送到队列,并且该消息最终会在接收计算机上显示“访问被拒绝”。)
  • 两台机器上都允许未经身份验证的 Rpc。
  • 在两台计算机上允许 NewRemoteReadServerAllowNoneSecurityClient。

发送代码片段是:

        MessageQueue queue = new MessageQueue(queueName, false, false, QueueAccessMode.Send);
        Message msg = new Message("Blah");
        msg.UseDeadLetterQueue = true;
        msg.UseJournalQueue = true;
        queue.Send(msg, MessageQueueTransactionType.Automatic);
        queue.Close();
Run Code Online (Sandbox Code Playgroud)

接收代码片段为:

   queueName = String.Format("FormatName:DIRECT=OS:{0}\\private$\\{1}",host,id);
   queue = new MessageQueue(queueName, QueueAccessMode.Receive);
   queue.ReceiveCompleted += new ReceiveCompletedEventHandler(receive);
   queue.BeginReceive();
Run Code Online (Sandbox Code Playgroud)

...

    public void receive(object sender, ReceiveCompletedEventArgs e)
    {
        queue.EndReceive(e.AsyncResult);
        Console.WriteLine("Message received");
        queue.BeginReceive(); …
Run Code Online (Sandbox Code Playgroud)

msmq

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

MySQL 5.1.42 alter table auto_increment = 0无效,截断有效

对于我的自动验收测试,我希望插入以id = 1开头。我在一台PC(XP 32位,mysql 5.1.something)上实现了此目的(从表中删除所有行之后),“更改表tableName auto_increment = 0”。

我现在正在设置一台新的PC(Windows 7 64bit,mysql 5.1.42),该命令似乎无效。我可以在information_schema.tables表中看到,auto_increment值未更改回0 ---一直在增加。如果尝试直接更改该表中的值,则会被告知拒绝对“ root” @“ localhost”的访问。这是否可以暗示我的问题?

其他stackoverflow人士建议“从tableName截断”是一个不错的选择。我很高兴地报告这可行。但是有人知道为什么“ alter table”命令不会重置auto_increment吗?

谢谢!

mysql truncate alter-table auto-increment

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

当我要求mysql时,为什么grails使用hsqldb?

我正在使用Grails-1.2.1 跟踪Jason Rudolph在InfoQ上的书中的赛道示例.我到了我要从hsqldb切换到mysql的部分.我想我已经删除了DataSource.groovy文件中对hsqldb的每个引用,但是我得到了一个异常,堆栈跟踪显示它仍在使用hsqldb.

DataSource.groovy的

dataSource {
    boolean pooled = true
    String driverClassName = "com.mysql.jdbc.Driver"
    String url = "jdbc:mysql://localhost/dfpc2"
    String dbCreate = "create"
    String username = "dfpc2"
    String password = "dfpc2"
    dialect = org.hibernate.dialect.MySQL5InnoDBDialect 
}
hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'
}
// environment specific settings
environments {
    development {
    }
    test {
    }
    production {
    }
}
Run Code Online (Sandbox Code Playgroud)

当我grails run-app全部启动没有错误.我可以导航到主页.但是当我点击其中一个链接时,我得到一个堆栈跟踪:

java.sql.SQLException: Table not found in statement [select this_.id as id0_0_, this_.version as version0_0_, this_.name as name0_0_, this_.variant as …
Run Code Online (Sandbox Code Playgroud)

grails datasource

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