我喜欢emacs.我喜欢正则表达式.我讨厌emacs的正则表达式语法 - 需要逃避分组的parens和braces,你不要逃避文字的parens,缺少预定义的字符类等.
我可以替换emacs的正则表达式引擎,或者调整一些设置,这样当我使用Query-replace-regexp(或许多其他功能之一)时,我可以使用我在java/js/perl/ruby/etc中编写的语法...?
编辑: 主题最初是"如何更改emacs'正则表达式引擎",它不仅会更改转义规则并添加字符类,还会(在帖子中未提及)添加对各种常见扩展的支持(?...).像非捕获parens这样的特征:(?:...),只有当/ if-not后跟:(?= ...)/(?!...)等时才匹配.我不相信(虽然很乐意纠正)这些可能与emacs的当前正则表达式引擎,并没有任何语法替换将解决这个问题.
下面的解决方案通过替换语法emacs理解来解决转义和其他char类的原始问题.第二个答案(现已删除)建议建议(添加一个函数在另一个开始时运行)emacs的正则表达式函数来替换所有正则表达式处理.作者迅速审查他/她自己意识到它可能会破坏现有的emacs代码,并最终删除了帖子.
我仍然希望将正则表达式引擎更改为支持扩展的引擎,但我同意普遍改变转义行为会造成严重破坏,我不愿意追逐.因此,我正在改变主题以匹配问题并接受回应.
我突然想到改变引擎以支持通用语法和扩展,建议正则表达式函数将emacs内部代码转换为通用语法,建议交互式函数将我的通用语法转换为emacs语法(所以它可以是转换回普通)...但我认为即使是RMS也会在此之前推荐一个分支.
如何根据目录内容创建一个排除某些目录的ant文件集?
我使用ant来创建一个分发jar,它将每个本地化都放在不同的目录中,其中一些是不完整的,不应该被释放.
我想在目录中添加一些东西(例如一个名为的文件incomplete.flag),以便ant排除目录.然后我可以在转换完成后删除该文件,并将其包含在构建中而不修改build.xml.
鉴于此目录结构:
proj
+ locale
+ de-DE
+ en-US
+ fr-FR
Run Code Online (Sandbox Code Playgroud)
此文件集排除所有incompelte.flag文件,但如何排除包含它们的整个目录?
<fileset dir="${basedir}">
<include name="locale/"/>
<exclude name="locale/*/incomplete.flag">
</fileset>
Run Code Online (Sandbox Code Playgroud)
如果需要,我可以编写一个ant任务,但我希望fileset能处理这个用例.
当我用proguard.cfg导出android项目时,所有引用的.jar文件也会被混淆.如何从混淆中排除一些.jars?
我有一个带有手势识别器的UITableView:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[myTableView addGestureRecognizer:gestureRecognizer];
gestureRecognizer.cancelsTouchesInView = NO;
Run Code Online (Sandbox Code Playgroud)
...当点击tableview以解除键盘时,一切正常.我的问题是,当我点击UITextField上的"清除"按钮时,我的hideKeyboard方法也会调用.很奇怪.
commentTextField = [[UITextField alloc] initWithFrame:CGRectMake(5, 5, 310, 35)];
commentTextField.contentVerticalAlignment =UIControlContentVerticalAlignmentCenter;
commentTextField.borderStyle = UITextBorderStyleRoundedRect;
commentTextField.textColor = [UIColor blackColor]; //text color
commentTextField.font = [UIFont fontWithName:@"Helvetica" size:14.0]; //font size
commentTextField.placeholder = @"Enter a comment..."; //place holder
commentTextField.autocorrectionType = UITextAutocorrectionTypeNo; // no auto correction support
commentTextField.keyboardType = UIKeyboardTypeDefault; // type of the keyboard
commentTextField.returnKeyType = UIReturnKeySend; // type of the return key
commentTextField.clearButtonMode = UITextFieldViewModeAlways; // has a clear 'x' …Run Code Online (Sandbox Code Playgroud) 如何在Flex(AS3)中将ISO日期字符串解析为日期对象?
例如
2009-12-08T04:23:23Z
2009-12-08T04:23:23.342-04:00
等......
我已经使用SWIG创建了一个PHP扩展,一切正常,但是当链接方法调用时,我正在观察一些奇怪的垃圾收集行为.例如,这有效:
$results = $response->results();
$row = $results->get(0)->iterator()->next();
printf('%s %s' . "\n", $row->getString(0), $row->getString(1));
Run Code Online (Sandbox Code Playgroud)
但这段错误:
$row = $response->results()->get(0)->iterator()->next();
printf('%s %s' . "\n", $row->getString(0), $row->getString(1));
Run Code Online (Sandbox Code Playgroud)
唯一的区别是第一个创建$results,而第二个将调用链接在一起.
SWIG实际上只向PHP公开函数并生成PHP代理类以与它们进行交互.这些代理类基本上包含一个传递给每个公开函数的资源以及这些函数通常采用的其他参数.考虑到这些代理类可能是问题所在,我重新编写代码来绕过它们,而是直接使用公开的函数.和以前一样,这有效:
$results = InvocationResponse_results($response->_cPtr);
$row = TableIterator_next(Table_iterator(Tables_get($results, 0)));
printf('%s %s' . "\n", Row_getString($row, 0), Row_getString($row, 1));
Run Code Online (Sandbox Code Playgroud)
再次,这段错误:
$row = TableIterator_next(Table_iterator(Tables_get(InvocationResponse_results($response->_cPtr), 0)));
printf('%s %s' . "\n", Row_getString($row, 0), Row_getString($row, 1));
Run Code Online (Sandbox Code Playgroud)
同样,唯一的区别是第一个创建$results,而第二个将调用链接在一起.
此时,我花了一些时间在gdb/valgrind中进行调试,并确定在InvocationResponse_results将调用链接在一起时过早调用返回的析构函数.为了观察,我std::cout在暴露的C++函数及其析构函数的顶部插入了语句.这是没有链接的输出:
InvocationResponse_results()
Tables_get()
Table_iterator()
TableIterator_next()
__wrap_delete_TableIterator
Row_getString()
Row_getString()
Hola Mundo
---
__wrap_delete_InvocationResponse
__wrap_delete_Row
__wrap_delete_Tables
Run Code Online (Sandbox Code Playgroud)
我--- …
使用Jetty Web服务器,从maven开始,包括iBatis,Spring,Jersey,以及其中的一小部分,我得到了一系列格式的日志记录输出.
有些人来自maven:
[INFO] [war:war]
[INFO] Exploding webapp...
Run Code Online (Sandbox Code Playgroud)
有些人来自码头:
2009-03-25 21:01:27.781::INFO: jetty-6.1.15
2009-03-25 21:01:28.218:/example:INFO: Initializing Spring root WebApplicationContext
Run Code Online (Sandbox Code Playgroud)
一些来自Spring:
INFO ContextLoader - Root WebApplicationContext: initialization started (189)
INFO XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] (323)
Run Code Online (Sandbox Code Playgroud)
有些人来自泽西岛:
Mar 25, 2009 9:01:29 PM com.sun.jersey.spi.spring.container.SpringComponentProviderFactory register
Run Code Online (Sandbox Code Playgroud)
还有一些来自我的代码:
INFO ExampleApp - [User@14ef239 ...stuff] (69)
Run Code Online (Sandbox Code Playgroud)
我希望他们都使用标准的日志包(log4j,commons-logging,java-logging ......)
解决方案:不,我不再扩展原始父级.
原文:
有没有办法注释继承的finalsetter方法?我正在扩展一个类,它有一个final我想@Autowire用Spring 的setter .父类来自库,无法修改.
我发现的一种解决方法是编写一个代理方法,但这似乎比必要的工作更多.
public abstract class SqlMapClientDaoSupport ... {
public final void setSqlMapClient(SqlMapClient smc) {
...
}
}
@Component
public class AccountDao extends SqlMapClientDaoSupport {
// all this just to annotate an existing method?
@Autowire
public final void setSqlMapClientWorkaround(SqlMapClient smc) {
super.setSqlMapClient(smc);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:以上示例已修改以反映用例:
用例是为Ibatis/Spring实现扩展公共基类的 DAO对象.每个DAO都需要相同的属性集,每个都需要配置为bean.我目前通过单独配置每个来完成此操作applicationContext.xml.
<bean id="accountDAO"
class="com.example.proj.dao.h2.AccountDAOImpl"
p:sqlMapClient-ref="sqlMapClient" />
<bean id="companyDAO"
class="com.example.proj.dao.h2.CompanyDAOImpl"
p:sqlMapClient-ref="sqlMapClient" />
<!-- etc... -->
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用组件扫描来自动发现和自动装配DAO对象,我无法复制/粘贴botch.
<context:component-scan base-package="com.example.proj.dao.h2" />
Run Code Online (Sandbox Code Playgroud)
我没有在注释指南中看到如何注释除声明的属性/成员之外的属性/成员.我希望这是我想念的东西. …
Eclipse中,默认情况下,隐藏了开头的文件.在Package Explorer,导航和其它文件的视图(例如.classpath,.settings等).是否可以隐藏以~(例如somefile.txt~)结尾的文件.
是的,这些是在同一个项目中同时使用Eclipse和Emacs时创建的Emacs备份文件.
我对Java中静态方法的使用有些怀疑.我读了很多地方静态变量是独立于实例的,所以是全局的.
public class ThirdClass {
public static var = "Java";
}
public class Second {
public static void main(String[] args) {
ThirdClass ob1 = new ThirdClass();
System.out.println(ob1.var); // prints Java
ob1.var="Ruby";
ThirdClass ob2 = new ThirdClass();
System.out.println(ob2.var); // prints Ruby
}
}
public class First {
public static void main(String[] args) {
ThirdClass ob3 = new ThirdClass();
System.out.println(ob1.var); // prints Java again!!!
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在第二类中看到的,ThirdClass的多个实例共享变量var的相同实例.但是First类中的一个单独的实例不能访问最终值"Ruby",而是显示原始的"Java".这意味着静态变量不是全局变量,而只是全局到单个执行!
与实例变量相比,还要创建静态变量资源密集型吗?
请建议.
java ×3
emacs ×2
android ×1
annotations ×1
ant ×1
apache-flex ×1
chaining ×1
datetime ×1
eclipse ×1
fileset ×1
formatting ×1
hidden-files ×1
ibatis ×1
ios ×1
logging ×1
obfuscation ×1
parsing ×1
php ×1
proguard ×1
regex ×1
spring ×1
swig ×1
syntax ×1
uitableview ×1