小编jay*_*ven的帖子

(ConEmu + Cygwin)如何在cygwin bash脚本中更改ConEmu的选项卡名称

我正在配置我的ConEmu + Cygwin环境.我创建了一个任务,当我在一个选项卡中启动它时,任务将运行一个批处理文件,这反过来会将dir更改为cygwin并运行

bash --login -i my_ssh_entry_script.sh
Run Code Online (Sandbox Code Playgroud)

在里面my_ssh_entry_script.sh,它将读取我的主目录中的配置文件,然后打印一个菜单供我选择要连接的主机.最后

...
exec ssh -p$port $userhost
Run Code Online (Sandbox Code Playgroud)

现在我可以在同一个conemu选项卡中处理选定的机器.这很好用.而且该脚本也可以在linux机器上运行.

但是有一点缺陷.我无法更改标签的标题.我试图将其更改为:

....
exec $(cygpath ${ConEmuDir})/ConEmu.exe /cmd ssh -p$port $userhost -cur_console:t:$title
Run Code Online (Sandbox Code Playgroud)

但这将始终创建一个新选项卡.有什么建议可以解决它吗?谢谢〜

bash cygwin conemu

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

libclang:在 AST 中缺少一些语句?

我写了一个测试程序(parse_ast.c)来解析ac源文件(tt.c)来看看libclang是如何工作的,输出是AST的层次结构:

这是测试文件:

/* tt.c */                                    // line 1
#include <unistd.h>
#include <stdio.h>

typedef ssize_t (*write_fn_t)(int, const void *, size_t);

void indirect_write(write_fn_t write_fn) {    // line 7
    (*write_fn)(1, "indirect call\n", 14);
}

void direct_write() {                         // line 11
    write(1, "direct call\n", 12);            // line 12 mising in the ast?
}

int main() {                                  // line 15
    direct_write();
    indirect_write(write);                    // line 17 missing in the ast?

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出显示如下:

 ...
 ...
 inclusion directive at tt.c (2, 1) to (2, 20)
 inclusion …
Run Code Online (Sandbox Code Playgroud)

clang abstract-syntax-tree libclang

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

将ast.Num转换为decimal.Decimal以获得python中的精度

我正在编写一个解析器来解析简单的算术公式:它只需要(和限制)来支持数字和变量上的+ - */.例如:

100.50*num*discount
Run Code Online (Sandbox Code Playgroud)

它基本上用于计算产品价格.

这是用python编写的,我想简单地使用python自己的解析器.这个想法首先解析输入AST,然后走在AST,以限制一小部分的AST的节点类型,比如:ast.BinOp,ast.Add,ast.Num,ast.Name等...

目前它运作良好,除了ast中的浮点数不精确.所以我想将ast的ast.Num节点转换成一些节点ast.Call(func=ast.Name(id='Decimal'), ...).但问题是:ast.Num只包含一个n已解析的浮点数字段.在源代码中获取原始数字文字并不容易:如何获取对应于Python AST节点的源代码

有什么建议吗?

python floating-point decimal abstract-syntax-tree

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

如何添加事件处理程序仅在 sqlalchemy 中提交事务后触发一次

我正在使用 sqlalchemy 编写一些函数。这些函数被称为内部事务,例如:

def create_order(session, *arg, **kw):
    # create order object
    order = Order(xxxx=xxx)
    session.add(order)

    # order extra operations
    order_extra_data = OrderExtraData(yyyy=yyyy)
    session.add(order_extra_data)

    # more operations
    ....

    # email should be sent to the order's owner 
Run Code Online (Sandbox Code Playgroud)

成功创建订单后,应将电子邮件发送给用户。但在 create_order 结束时,事务尚未提交,可能会被后面的代码中止。所以这个函数不应该直接发送邮件。相反,它应该注册一个一次性事件处理程序,该处理程序仅在会话提交后触发(如果事务回滚或关闭,则不会触发和清除)。我怎样才能实现这个?

events transactions sqlalchemy

4
推荐指数
1
解决办法
1401
查看次数

为什么flask 中的应用程序上下文不是应用程序的单例?

我已经阅读了烧瓶文档并发现了这个:

13.3 上下文的局部性

根据需要创建和销毁应用程序上下文。它永远不会在线程之间移动,也不会在请求之间共享。

这对我来说真的很奇怪。我认为应用程序上下文应该与应用程序保持一致,并为应用程序的所有请求共享对象。

因此,我深入研究源代码并发现,当推送请求上下文时,如果当前应用程序不是与请求关联的应用程序上下文,则将创建并推送应用程序上下文。

因此,对于推送的同一个应用程序,应用程序上下文堆栈似乎可能有多个不同的应用程序上下文?为什么不使用单例应用程序上下文?为什么应用上下文的生命周期如此“短”?对于这样的应用程序上下文可以做什么?

python singleton thread-local flask

3
推荐指数
1
解决办法
1828
查看次数