小编hug*_*omg的帖子

对于新安装的模块,如何让`ipython`导入自动完成工作?

我刚刚sqlalchemy在我的计算机上安装了该模块,但是当我输入import sqlTAB在ipython提示符中时,自动完成功能只会向我建议内置sqlite3模块.

如何让ipython也在sqlalchemy导入自动完成时提出建议?

python module autocomplete ipython

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

如何在Javascript中克隆XML文档?

在Javascript中克隆XML文档的最佳方法是什么?

我试过了

var newDocument = myDocument.cloneNode(true);
Run Code Online (Sandbox Code Playgroud)

但那只是返回null.我也考虑过这样做

var newNode = myDocument.documentElement.cloneNode(true);
Run Code Online (Sandbox Code Playgroud)

但这对我的目的来说还不够,因为这样新节点ownerDocument和以前一样.

javascript xml dom

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

中缀运营商的应用方式?

在处理中缀运算符时,有没有办法使用<$>并且<*>看起来很好看?我觉得

((++) <$> a <*> ((++) <$> b <*> c ))
Run Code Online (Sandbox Code Playgroud)

看起来更加混乱

a ++ b ++ c
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否有更好的方式.

haskell infix-operator applicative

7
推荐指数
2
解决办法
377
查看次数

如何在Haskell中打破循环?

Pipes教程当前版本在以下一个示例中使用以下两个函数:

 stdout :: () -> Consumer String IO r
 stdout () = forever $ do
     str <- request ()
     lift $ putStrLn str

 stdin :: () -> Producer String IO ()
 stdin () = loop
   where
     loop = do
         eof <- lift $ IO.hIsEOF IO.stdin
         unless eof $ do
             str <- lift getLine
             respond str
             loop
Run Code Online (Sandbox Code Playgroud)

正如教程本身所述,由于需要检查输入的结束,P.stdin有点复杂.

有没有什么好方法可以重写P.stdin,不需要手动尾递归循环,并使用像P.stdout那样的高阶控制流组合器?在命令式语言中,我将使用结构化的while循环或break语句来执行相同的操作:

while(not IO.isEOF(IO.stdin) ){
    str <- getLine()
    respond(str)
}

forever(){
    if(IO.isEOF(IO.stdin) ){ break }
    str <- getLine()
    respond(str)
}
Run Code Online (Sandbox Code Playgroud)

haskell control-flow

7
推荐指数
2
解决办法
5448
查看次数

我该如何处理Flex词法分析器中的词法错误?

我目前正在尝试使用Flex + Bison编写一个小编译器,但我在错误处理方面有点迷失,特别是如何使所有东西都融合在一起.为了激发讨论,请考虑我用于字符串文字的以下词法分析器片段:

["]          { BEGIN(STRING_LITERAL); init_string_buffer(); }
<STRING_LITERAL>{
    \\\\    { add_char_to_buffer('\\'); }
    \\\"    { add_char_to_buffer('\"'); }
    \\.     { /*Invalid escape. How do I treat this error?*/ }
    ["]     { BEGIN(INITIAL); yylval = get_string_buffer(); return TK_STRING; }
}
Run Code Online (Sandbox Code Playgroud)

如何处理无效转义的情况?现在我只是打印一条错误消息并打电话exit但我更愿意继续前进并在可能的情况下检测每个文件多个错误.

我的问题:

  • 我用什么功能打印出错误信息?以后野牛预计会出现同样的错误吗?如果我有词法分析器和解析器的单独文件,我在哪里放置yyerror的定义?
  • 我应该从我的行动中返回什么令牌代码?0为"文件结束"?一些特殊的TK_INVALID_STRING令牌?
  • 如何确保解析器可以在词法错误(无效的文字,流浪标点字符等)后继续解析?

yacc lex bison lexer flex-lexer

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

Dojo考虑XHR请求错误是什么?

通过Dojo执行AJAX时,我们可以传递两个回调,一个在成功请求后执行,另一个在错误后执行:

dojo.xhr("GET",{
    url: myURL,
    content: messageContents,
    load: function(returnData, ioArgs){
        //This is called on success
    },
    error: function(returnData, ioArgs){
        //This is called on failure
    }
});
Run Code Online (Sandbox Code Playgroud)

我在文档中找不到什么被定义为错误.我猜任何返回码> = 400的东西,但我不确定.

javascript ajax dojo

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

IE中的XPath查询使用从零开始的索引,但W3C规范是基于一的.我该如何处理差异?

问题

我正在转换一个相对较大的Javascript,目前只能在Internet Explorer上运行,以使其在其他浏览器上运行.由于代码广泛使用XPath,我们提供了一些兼容性功能,使事情变得更容易

function selectNodes(xmlDoc, xpath){
    if('selectNodes' in xmlDoc){
        //use IE logic
    }else{
        //use W3C's document.evaluate
    }
}
Run Code Online (Sandbox Code Playgroud)

这大部分工作正常但我们只是遇到了IE中的位置从零开始的限制,但在其他浏览器使用的W3C模型中,它们是基于单一的.这意味着要获得我们需要//books[0]在IE和//books[1]其他浏览器中执行的第一个元素.

我建议的解决方案

第一个想法是使用正则表达式向查询中出现的所有索引添加一个,如果我们使用document.evaluate版本:

function addOne(n){ return 1 + parseInt(nStr, 10); }

xpath = xpath.replace(
    /\[\s*(\d+)\s*\]/g,
    function(_, nStr){ return '[' + addOne(nStr) + ']'; }
);
Run Code Online (Sandbox Code Playgroud)

我的问题

这种基于正则表达式的解决方案是否相当安全?

  • 有什么地方可以转换它不应该的东西吗?
  • 是否有任何地方不会转换它应该的东西?

例如,它将无法替换索引,//books[position()=1]但由于IE似乎不支持position()我们的代码没有使用,我认为这种特殊情况不会成为问题.


注意事项

  • 我下载了Sarissa,看看他们是否有办法解决这个问题,但看了源代码后他们显然没有?

  • 我想在W3C版本中添加一个,而不是在IE版本中减去一个以减轻我的转换工作量.


到底

我们决定通过设置选择语言来重写代码以在IE中使用适当的XPath

xmlDoc.setProperty("SelectionLanguage", "XPath");
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer xpath cross-browser

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

haskell模数原始递归

我正在尝试使用原始递归函数在haskell中创建一个模数函数.我知道这是可能的(因为它在维基百科上的示例函数列表中)

而且我知道我在逻辑上也是这样做的..但我无法实现它!

IE,逻辑是(不是原始递归或haskell)

function mod(a, b){
  while(a > b)
    a -= b
  return a;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用递归定义(再次不是haskel)

function mod(a, b){
  if(a < b) return a;
  return mod(a - b, b);
} 
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使用原始递归函数来实现它.我不能做的是<b的逻辑

我认为要真正解决我的问题我需要某种定义的逻辑,例如(再次不是haskel)

reduce(a, b)
    = a >= b -> a-b 
    otherwise x
Run Code Online (Sandbox Code Playgroud)

如果有人能帮我解决这个问题,我真的很感激,谢谢

编辑::我想可能定义一个模数函数利用除法,即mod(a,b)= a - (a/b)*b,但由于我的原始递归函数除法依赖于模数我不能做哈哈

primitive haskell functional-programming

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

我应该如何测试对象是否是XML文档(以跨浏览器的方式)

对于单元测试,我希望能够检查某个返回的对象是否是XML文档.这样做的最佳方法是什么?

我目前正在测试doc.implementation(第一个想到的DOM属性)但是有更好的方法吗?另外,有没有一种很好的方法来区分HTML文档中的XML文档?

javascript xml

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

如果我在运行Luajit或PUC Lua 5.1,我如何在运行时检测到?

我正在为我的Lua项目编写一些测试脚本,我想确保它们在可用的不同Lua版本下正确运行.由于我的单元测试框架可能使用错误的Lua版本,如果我错误配置它,我希望是额外的安全,并在运行时检查我的测试运行的Lua版本.最好的方法是什么?

我知道分开5.1和5.2的快速方法是检查_VERSION全局,但我如何区分常规Lua 5.1和LuaJIT?

lua luajit

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