我刚刚开始使用Clojure(来自Ruby),我想用命令行界面构建一个小应用程序.如何处理CL的输入/输出?
我注意到有一个clojure.contrib.command-line,但文档很小.
我写了一个小python程序来迭代数据文件(input_file)并执行计算.如果计算结果达到某些状态(stateA或stateB),则从结果中提取信息(命中).要提取的命中数取决于三个参数集的参数.
我使用词典字典来存储我的参数集(param_sets)和列表来存储命中(命中).字典param_sets和hits具有相同的键.
问题是,
命中词典中的列表以某种方式耦合.当一个列表发生变化时(通过调用extract_hits函数),其他列表也会发生变化.
这里,(缩短)代码:
import os, sys, csv, pdb
from operator import itemgetter
# define three parameter sets
param_sets = {
'A' : {'MIN_LEN' : 8, 'MAX_X' : 0, 'MAX_Z' : 0},
'B' : {'MIN_LEN' : 8, 'MAX_X' : 1, 'MAX_Z' : 5},
'C' : {'MIN_LEN' : 9, 'MAX_X' : 1, 'MAX_Z' : 5}}
# to store hits corresponding to …Run Code Online (Sandbox Code Playgroud) 我是Objective-C的新手,我有点好奇我应该如何管理下面显示的本地NSString变量的内存以及类对象中的相关实例变量.我的代码工作正常,但只是对最佳实践感到好奇.
编辑包含完整的代码,没有什么特别的,就像我说我只是好奇,如果在这个上下文中我应该在NSString对象上进行alloc/release.
// MAIN ------------------------------------------------------------------- **
#import <Foundation/Foundation.h>
#import "PlanetClass.h";
int main (int argc, const char * argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *planet_01_Geek;
NSString *planet_02_Geek;
// Create planets
PlanetClass *newPlanet_01 = [[PlanetClass alloc] init];
[newPlanet_01 setGeekName:@"StarWars"];
PlanetClass *newPlanet_02 = [[PlanetClass alloc] init];
[newPlanet_02 setGeekName:@"Dune"];
// Query a planet
planet_01_Geek = [newPlanet_01 geekName];
planet_02_Geek = [newPlanet_02 geekName];
// Print details
NSLog(@"Planet Geek = %@", planet_01_Geek);
NSLog(@"Planet Geek = %@", planet_02_Geek);
// Clean up
[newPlanet_01 release]; …Run Code Online (Sandbox Code Playgroud) 我的demo.rb:
puts ARGV.size
ARGV.each do |a|
puts "Argument: #{a}"
end
Run Code Online (Sandbox Code Playgroud)
结果取决于我们如何运行脚本:
> demo.rb foo bar
0
> ruby demo.rb foo bar
2
Argument: foo
Argument: bar
Run Code Online (Sandbox Code Playgroud)
为什么会这样?这可以做一些事情吗?
编辑: 感谢所有回复!在这里我的设置:
>assoc .rb
.rb=rbFile
>ftype rbFile
rbFile="c:\ruby-1.8.6\bin\ruby.exe" "%1" %*
Run Code Online (Sandbox Code Playgroud)
所以看起来是正确的.
但我发现了
>demo.rb foo bar
Run Code Online (Sandbox Code Playgroud)
使用这样的命令行启动进程:
"C:\ruby-1.8.7\bin\ruby.exe" "c:\demo.rb"
Run Code Online (Sandbox Code Playgroud)
请注意,.rb与1.8.6相关联,但1.8.7已启动.
所以我猜其他的东西搞砸了?
过去,在C和C++版本中,如果在紧密循环中执行,嵌套指针解除引用被一些人认为是相对昂贵的操作.
你不会想被抓住:
for (int i = 0; i < 10000000; i++)
{
j->k->l->m->n->o->p->dosomeworknowthatwereherewhynoteh();
}
Run Code Online (Sandbox Code Playgroud)
因为你可能会失去宝贵的毫秒数.(是的,我有点讽刺!)
转向.NET世界......
这更贵吗?
System.Runtime.InteropServices.Marshal.WriteInt32(Abort, 1)
Run Code Online (Sandbox Code Playgroud)
比这个?
Imports System.Runtime.InteropServices.Marshal
.
.
.
WriteInt32(Abort, 1)
Run Code Online (Sandbox Code Playgroud) 当使用各种JDBC模板方法之一时,我对如何迭代/滚动大型结果集(不适合内存)感到困惑.即使没有直接暴露Iterable接口,我至少也会期望在查询执行时调用RowCallbackHandler的实例,而不是在它完成之后(或堆overfloats).
我确实看过这个(虽然在精神上类似于这篇关于堆栈溢出的帖子,但我没有改变任何内容)和春季论坛中的这篇文章.后者似乎建议在游标获取数据时确实应该调用回调处理程序.然而,我的测试显示没有这样的行为
该数据库是Oracle10g.我使用的是11.1.0.7.0-Production驱动程序和Spring 2.5.6.SEC01.任何人都想知道如何迭代结果集,最好是保持RowMapper等的映射逻辑?
我正在尝试使用ILMerge将一些可传递引用的程序集内化到我正在引用的程序集中,以消除与我的项目中的那些传递依赖项的冲突.
特别是,我引用了Antlr3.StringTemplate(以下简称AS,可在此处获取:http://www.stringtemplate.org/download.html).它引用了Antlr3.Runtime.Debug(ARD)和Antlr3.Runtime(AR).ARD本身也引用了AR.在ASCII艺术中,那是:
AS ---> ARD
\ |
\ v
\---> AR
Run Code Online (Sandbox Code Playgroud)
因为我正在使用的另一个程序集NHibernate 2.1依赖于不同的,不兼容的AR版本,我想使用ILMerge将AR合并并内化到AS中.从理论上讲,我认为这应该有效; 但是,我在执行理论时遇到了麻烦.
无论我尝试什么样的排列和选项,我最终都会遇到以下形式的错误:
ILMerge.Merge:程序集'Antlr3.Runtime.Debug'未正确合并.它仍然在目标程序集中列为外部引用.
我想用ILMerge完成的是什么?
我有这个CAML:
query.Query = @"<Where><Eq><FieldRef Name='MessageID' /><Value Type='Text'></Value></Eq></Where>";
Run Code Online (Sandbox Code Playgroud)
这将检查MessageID = string.empty()的值
我想检查的是null ....不是空字符串...
这可能与CAML有关吗?
将JavaScript代码移植到另一个浏览器平台通常很难吗?