小编Ogr*_*m33的帖子

如何使用Perl使批处理文件像一个简单的grep一样?

我已经知道这个问题的明显答案:"只需下载<插入喜欢的windows grep或grep-like tool>".但是,我在当地IT人员严格控制的环境中工作,关于我们允许在计算机上使用的内容.我只想说:我可以在Windows XP上访问Perl.这是我想出的一个快速的Perl脚本,它做了我想要的,但我还没有弄清楚如何设置一个批处理文件,以便我可以将命令输出传入其中,或传递一个文件(或文件列表) ?)作为"grep表达式"之后的参数:

perl -n -e "print $_ if (m![expression]!);" [filename]

如何编写我可以执行的批处理脚本,例如:

dir | grep.bat mypattern
grep.bat mypattern myfile.txt

编辑:虽然我标记了另一个"答案",但我想对Ray Hayes的回答表示赞赏,因为它实际上是"Windows方式",即使另一个答案在技术上更接近我想要的.

windows perl batch-file

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

用于模糊测试Windows表单应用程序的任何好工具或技巧?

我正在维护一个带有Windows.Forms接口的~300K LOC C#传统胖客户端应用程序.该应用程序充满了小错误和怪癖.例如,我最近发现了一个错误,如果用户通过DataViewGrid上的单元格编辑和标签(而非点击),并且选择了某个单元格,则应用程序会获得"未将对象引用设置为对象实例"异常.我发现(或得到一个错误报告)大约每周或每两周这样的新事物.我已经受够了,并且正在考虑对应用程序进行某种模糊测试,试图找出未发现的问题.

如果我进行自己的模糊测试,我认为我至少需要能够独立生成运行我的应用程序(主窗口,FormX,FormY,FormZ,...)的测试工具,并尝试注入事件进入他们.

我试图寻找适合此的工具,但到目前为止还没有为Win Forms提供任何东西.(然而,似乎并不缺少针对Web应用程序的模糊测试工具).

任何有用的想法?

.net testing winforms fuzz-testing

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

为什么从内联类方法中访问静态命名空间变量有效?

我最近在一个头文件中看到了这段代码,并且惊讶于它的工作原理:

namespace NS {
  static int uid = 0;
  class X {
   public:
    static int getUID() { return uid++; }
  };
}
Run Code Online (Sandbox Code Playgroud)

如果NS::X::getUID()从几个不同的C++源文件中调用静态方法,我很惊讶地发现它正确生成了一个唯一的ID(在翻译单元中是唯一的).我认为命名空间范围中的静态变量与翻译单元有内部链接.这里发生了什么?X类中的内联静态方法是否具有自己的转换单元,这就是它生成唯一ID的原因?或者由于编译器的怪癖,它对我有用吗?

上面的代码是否依赖于"安全"明确定义的行为?如果是这样,这是一种在内联或模板类中生成唯一ID的令人惊讶的简洁方法,即使它看起来有点笨拙.或者为这样的静态唯一ID函数生成新的C++源文件更好,并在类中移动静态ID?

更新:

对于测试用例,我在不同的文件(file1.cpp,file2.cpp等)中写了几个这样的函数:

#include "static_def.h" // Name of the above header file.
void func1() {
  int uid1 = NS::X::getUID();
  int uid2 = NS::X::getUID();
  std::cout << "File1, UID1: " << uid1 << ", UID2: " << uid2 << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的输出(在从main调用这些之后)是:

File1, UID1: 0, UID2: 1
File2, UID1: 2, UID2: 3
Run Code Online (Sandbox Code Playgroud)

c++ static

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

我可以使用流操作符重写日志宏以使用C++模板函数吗?

我们的项目使用宏来使单行语句中的日志记录变得简单和简单,如下所示:

DEBUG_LOG(TRACE_LOG_LEVEL, "The X value = " << x << ", pointer = " << *x);
Run Code Online (Sandbox Code Playgroud)

宏将第二个参数转换为stringstream参数,并将其发送到常规C++记录器.这在实践中非常有用,因为它使多参数记录语句非常简洁.然而,斯科特·迈尔斯说,在有效的C++第3版,(第2项)"您可以通过使用一个内联函数模板获得的宏所有的效率加上所有常规函数的可预测的行为和类型安全".我知道在C++中与可预测行为相关的宏用法有很多问题,所以我试图在代码库中尽可能多地消除宏.

我的日志宏定义类似于:

#define DEBUG_LOG(aLogLevel, aWhat) {  \
if (isEnabled(aLogLevel)) {            \
  std::stringstream outStr;            \
  outStr<< __FILE__ << "(" << __LINE__ << ") [" << getpid() << "] : " << aWhat;    \
  logger::log(aLogLevel, outStr.str());    \
}
Run Code Online (Sandbox Code Playgroud)

我已多次尝试将其重写为不使用宏的内容,包括:

inline void DEBUG_LOG(LogLevel aLogLevel, const std::stringstream& aWhat) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

和...

template<typename WhatT> inline void DEBUG_LOG(LogLevel aLogLevel, WhatT aWhat) {
    ...  }
Run Code Online (Sandbox Code Playgroud)

无济于事(以上两个重写都不会在第一个例子中编译我们的日志代码).还有其他想法吗?可以这样做吗?或者最好把它留作宏?

c++ macros effective-c++

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

即使在deleteLocalRef之后jni表溢出

当我运行代码时,我收到错误"添加到JNI本地ref表失败有512个条目"

这是我的代码:

jstring pJNIData = pJNIEnv->NewStringUTF ( variables[0].GetStringValue() );

pJNIEnv->CallStaticVoidMethod ( pJNIActivityClass, pJNIMethodIDStartTime, pJNIData ) ;

pJNIEnv->DeleteLocalRef(pJNIData);
Run Code Online (Sandbox Code Playgroud)

我已经阅读了几条建议,但没有一条能起作用!尽管如此DeleteLocalRef,它仍无法运作.该函数用于一个字面上调用所有函数的分析器......

java-native-interface android reference overflow

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

可以通过密钥而不是Hazelcast中的值进行查询(使用Predicates)?

在Hazelcast中,是否可以根据键的属性而不是值来查询IMap?所有Hazelcast示例都显示了按值查询.例如,对于具有字符串键的员工的地图:

IMap<String, Employee> employees;
Run Code Online (Sandbox Code Playgroud)

然后,典型的搜索谓词将根据员工属性(姓名,薪水等)进行搜索.但我的情况使用更复杂的键,例如:

IMap<DataAttributes, DataValue> myData;
Run Code Online (Sandbox Code Playgroud)

因此,如果DataAttributes具有以下字段:

 class DataAttributes {
     String theDescription;
     Date   theStartTime;
     public String getDescription() { return theDescription; }
     // etc....
 }
Run Code Online (Sandbox Code Playgroud)

我想编写一个可以通过键查询的谓词,以返回一个合适的DataValue对象.这不起作用:

Predicate pred = Predicates.equal("description", "myDescription");
myData.keySet(pred);  // Throws IllegalArgumentException: "There is no suitable accessor for..."
Run Code Online (Sandbox Code Playgroud)

我可以按照这个答案的建议滚动自己,但如果可以,我宁愿使用开箱即用的解决方案.

如果我最终使用Criteria API或Distributed SQL Query API并不重要.任何有效的查询都会很棒.适用于嵌套属性的解决方案的奖励积分(即:DataAttributes theStartTime.getYear()).

java hazelcast

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

Apache Kafka是否提供异步订阅回调API?

我的项目将Apache Kafka视为基于JMS的老化消息传递方法的潜在替代品.为了使这种转换尽可能顺利,如果替换排队系统(Kafka)具有异步订阅机制,这将是理想的,类似于我们当前项目使用MessageListenerMessageConsumer订阅主题并接收异步通知的JMS机制.如果Kafka没有严格遵守JMS API,我并不在乎,但相反,如果我不需要,我宁愿不重新设计我们的整套发布 - 订阅 - 通知类.

我可以找到各种KafkaConsumer 轮询 示例,但到目前为止还没有找到任何客户端通过异步通知通知新消息的示例.

有谁知道Kafka的当前版本(截至本文发布时为0.10.2)是否提供了这样的API,还是我一直试图使用轮询重写我的遗留代码?

java asynchronous message-queue apache-kafka kafka-consumer-api

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

如何格式化Oracle SQL纯文本选择输出

我正在使用Oracle SQL(在SQLDeveloper中,因此我无法访问诸如COLUMN之类的SQLPLUS命令)来执行如下所示的查询:

select assigner_staff_id as staff_id, active_flag, assign_date,
  complete_date, mod_date
from work where assigner_staff_id = '2096';
Run Code Online (Sandbox Code Playgroud)

它给我的结果看起来像这样:

STAFF_ID               ACTIVE_FLAG ASSIGN_DATE               COMPLETE_DATE             MOD_DATE                  
---------------------- ----------- ------------------------- ------------------------- ------------------------- 
2096                   F           25-SEP-08                 27-SEP-08                 27-SEP-08 02.27.30.642959000 PM 
2096                   F           25-SEP-08                 25-SEP-08                 25-SEP-08 01.41.02.517321000 AM 

2 rows selected

当我尝试将结果粘贴为电子邮件或问题报告等格式良好的快速脏文本块时,这很容易产生非常宽泛且难以处理的文本报告.什么是最好的摆脱方法当我使用普通的Oracle SQL时,输出列中的所有额外空白区域?到目前为止,我的所有网络搜索都没有出现太多,因为所有的网络搜索结果都向我展示了如何使用SQLPLUS中的COLUMN之类的格式化命令(我没有).

sql oracle formatting

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

Rhino Commons和Rhino Mocks参考文件?

好吧,它只是我,或者似乎缺少(易于查找)Rhino Commons和Rhino Mocks的参考文档?我的同事已经开始使用Rhino Mocks和Rhino Commons(特别是NHibernate的东西),我找到了一些很好的教程实例.但是当我看到他们在他们的代码中使用类时 - 让我们选择像Rhino.Commons.NHRepository这样的东西 - 我一直很难在网上找到一个告诉我Rhino.Commons的地方. NHRepository是或它做什么.我喜欢通过查看真实示例来学习,但是使用这种方法,查看完整文档对于类而不仅仅是当前上下文非常方便.

同样地,我看到IaMockedRepository.Expect(...)在某些代码中被使用,但我终于找到了这个解释 Rhino Mocks 的AAA语法的页面,这让我很清楚.

在Rhino Commons上找到了Ayende.com wiki,但这似乎有很多断开的链接.对我来说,Rhino库看起来像是一个很棒的库,需要在文档区域提供一些绝望的社区帮助(当然,众所周知,文档不是大多数编码人员的强项,而且不完整的文档太常见了) .有没有人知道这是否正在起作用,某些需要一些志愿者文件的地方,或者是否有一些很棒的参考文档,我有点错过了Rhino Mocks和Rhino Commons?

documentation rhino-mocks rhino-commons

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

JNI未知类型<unknown>的例外......这是怎么发生的?

我有一些调用C++代码的Java代码,C++代码转向并调用Java,所有这些都是通过JNI实现的.我们得到了notorius"hs_err_pidXXXX.log",奇怪的是,当我们调用JNIEnv_::GetMethodID(myJniEnv->GetObjectClass(anException), "printStackTrace", "()V")当前挂起的异常时,它正在发生!所以我们补充说:

if ((javaException = getJniEnv()->ExceptionOccurred()) != NULL)
{
   jniEnv->ExceptionDescribe();
   .... <other exception handling code> ...
}
Run Code Online (Sandbox Code Playgroud)

...每次我们打电话给JNI以试图发现正在发生的异常.ExceptionDescribe()的结果是:

Uncaught exception of type <unknown>
Run Code Online (Sandbox Code Playgroud)

这是怎么发生的?anException上面的值直接来自JNI调用anException = myJniEnv->ExceptionOccurred(),它应该产生一个throwable,对吧?我想,我应该能够在没有JNI崩溃的情况下在throwable上打印堆栈跟踪.以前有人遇到这样的事吗?

java java-native-interface exception-handling

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