我正在为一个项目设置一个rakefile,我已经定义了一些rake TestTasks.我运行了一个简单的健全性测试,assert_equal(1, 2)只是为了检查输出,除了通常的故障输出之外,我得到了这个烂摊子:
rake aborted!
Command failed with status (1): [/usr/bin/ruby -w -I"lib:." "/usr/lib/ruby/...]
/usr/lib/ruby/1.9.1/rake.rb:993:in `block in sh'
/usr/lib/ruby/1.9.1/rake.rb:1008:in `call'
/usr/lib/ruby/1.9.1/rake.rb:1008:in `sh'
/usr/lib/ruby/1.9.1/rake.rb:1092:in `sh'
/usr/lib/ruby/1.9.1/rake.rb:1027:in `ruby'
/usr/lib/ruby/1.9.1/rake.rb:1092:in `ruby'
/usr/lib/ruby/1.9.1/rake/testtask.rb:115:in `block (2 levels) in define'
/usr/lib/ruby/1.9.1/rake.rb:1110:in `verbose'
/usr/lib/ruby/1.9.1/rake/testtask.rb:100:in `block in define'
/usr/lib/ruby/1.9.1/rake.rb:634:in `call'
/usr/lib/ruby/1.9.1/rake.rb:634:in `block in execute'
/usr/lib/ruby/1.9.1/rake.rb:629:in `each'
/usr/lib/ruby/1.9.1/rake.rb:629:in `execute'
/usr/lib/ruby/1.9.1/rake.rb:595:in `block in invoke_with_call_chain'
/usr/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/usr/lib/ruby/1.9.1/rake.rb:588:in `invoke_with_call_chain'
/usr/lib/ruby/1.9.1/rake.rb:605:in `block in invoke_prerequisites'
/usr/lib/ruby/1.9.1/rake.rb:602:in `each'
/usr/lib/ruby/1.9.1/rake.rb:602:in `invoke_prerequisites'
/usr/lib/ruby/1.9.1/rake.rb:594:in `block in invoke_with_call_chain'
/usr/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/usr/lib/ruby/1.9.1/rake.rb:588:in `invoke_with_call_chain'
/usr/lib/ruby/1.9.1/rake.rb:581:in `invoke'
/usr/lib/ruby/1.9.1/rake.rb:2041:in `invoke_task' …Run Code Online (Sandbox Code Playgroud) 我有一个大的XML数据文件(> 160M)来处理,似乎SAX/expat/pulldom解析是要走的路.我希望有一个线程可以筛选节点并将节点推送到队列中,然后其他工作线程将下一个可用节点拉出队列并进行处理.
我有以下(它应该有锁,我知道 - 它会,后来)
import sys, time
import xml.parsers.expat
import threading
q = []
def start_handler(name, attrs):
q.append(name)
def do_expat():
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = start_handler
p.buffer_text = True
print("opening {0}".format(sys.argv[1]))
with open(sys.argv[1]) as f:
print("file is open")
p.ParseFile(f)
print("parsing complete")
t = threading.Thread(group=None, target=do_expat)
t.start()
while True:
print(q)
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
问题是while块的主体只被调用一次,然后我甚至无法ctrl-C中断它.在较小的文件上,输出是预期的,但这似乎表明只有在完全解析文档时才调用处理程序,这似乎违背了SAX解析器的目的.
我确定这是我自己的无知,但我不知道我在哪里弄错了.
PS:我也试过改变start_handler:
def start_handler(name, attrs):
def app():
q.append(name)
u = threading.Thread(group=None, target=app)
u.start()
Run Code Online (Sandbox Code Playgroud)
但是没有爱.
我有一个想法,用Java写一个笔记记录应用程序,在你输入时做一些简单的文本替换; 可能是Markdown语法的一小部分.因此,例如,如果您输入的行是#sometext,它将被渲染:
Wikidpad是我正在尝试做的事情的一部分(我不只是重新实现它,只是部分语法/显示功能).
所以基本上我正在寻找一种方法来编写某种组件,当用户点击"返回"时,它会查看输入的行,并做任何需要做的魔术才能使html标签正确.
我一直在反对Documents and DocumentFilters和DocumentListeners以及HTMLReaders,而且没有太多运气,有人能把我放在正确的道路上吗?
我目前正在使用JDOM进行一些简单的XML解析,看起来没什么类型安全 - 我在使用内置的Java DOM解析器时遇到了类似的问题,只需要更多的API来解决问题.
例如,XPath.selectNodes将一个Objectas作为参数并返回一个原始列表,它只是感觉有点Java 1.1
是否存在用于Java的通用化XML和XPath库,或者是否有某种原因导致无法以类型安全的方式执行XPath查询?
我在dart中实现了一个状态机,我想让我的状态函数返回其他状态函数,但是
typedef State State(foo);
Run Code Online (Sandbox Code Playgroud)
给我一个错误:
typedef 'State' illegally refers to itself
Run Code Online (Sandbox Code Playgroud)
有没有办法做这个typedef?显然我可以将它包装在一个类中或让它返回Function,但我希望用typedef来做这个.
我自己学习C++,而且我认为一个很好的方法就是将一些Java项目转换成C++,看看我倒下的地方.所以我正在研究多态列表实现.它工作得很好,除了一件奇怪的事情.
我打印列表的方法是让EmptyList类返回"null"(字符串,而不是指针),并NonEmptyList返回一个字符串,该字符串的数据与调用tostring()列表中其他所有内容的结果相连接.
我把tostring()一个protected部分(它似乎是适当),编译器会抱怨这条线(s是stringstream我使用积累的字符串):
s << tail->tostring();
Run Code Online (Sandbox Code Playgroud)
这是编译器的错误:
../list.h: In member function 'std::string NonEmptyList::tostring() [with T = int]': ../list.h:95: instantiated from here ../list.h:41: error: 'std::string List::tostring() [with T = int]' is protected ../list.h:62: error: within this context
这是最常见的list.h:
template <class T> class List;
template <class T> class EmptyList;
template <class T> class NonEmptyList;
template <typename T>
class List {
public:
friend std::ostream& operator<< (std::ostream& o, …Run Code Online (Sandbox Code Playgroud) 为什么以下失败?
module Test
def test
puts "test"
end
puts "testing"
test
end
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
testing
test.rb:6:in `test': wrong number of arguments (ArgumentError)
from test.rb:6:in `<module:Test>'
from test.rb:1:in `<main>'
Run Code Online (Sandbox Code Playgroud)
是因为模块还没有"编译",因为还没有达到end关键字?
java ×2
ruby ×2
xml ×2
c++ ×1
dart ×1
inheritance ×1
jdom ×1
objective-c ×1
python ×1
rake ×1
sax ×1
swing ×1
text ×1
text-editor ×1
type-safety ×1
xpath ×1