小编Adr*_*sbe的帖子

Python使用单个文件记录(功能名称,文件名,行号)

我正在尝试学习应用程序的工作原理.为此,我将调试命令作为每个函数体的第一行插入,目的是记录函数的名称以及我向日志输出发送消息的行号(在代码中).最后,由于此应用程序包含许多文件,因此我想创建一个日志文件,以便我可以更好地理解应用程序的控制流.

这就是我所知道的:

  1. 为了获取函数名称,我可以使用function_name.__name__但我不想使用function_name(这样我就可以Log.info("Message")在所有函数的主体中快速复制和粘贴泛型).我知道这可以在C中使用__func__宏完成,但我不确定python.

  2. 为了获取文件名和行号,我已经看到(并且我相信)我的应用程序正在使用Python locals()函数,但是在我不完全了解的语法中,例如:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())我尝试使用类似LOG.info("My message %s" % locals())产生的东西{'self': <__main__.Class_name object at 0x22f8cd0>}.有什么意见吗?

  3. 我知道如何使用日志记录并向其添加处理程序以记录到文件,但我不确定是否可以使用单个文件以正确的项目函数调用顺序记录所有日志消息.

我非常感谢任何帮助.

谢谢!

python logging

96
推荐指数
4
解决办法
7万
查看次数

我为什么要使用模板引擎?jsp include和jstl vs tiles,freemarker,velocity,sitemesh

我即将选择组织我的观点(使用spring-mvc,但这不应该太重要)

据我所知,有6个选项(尽管它们并不相互排斥):

  • 瓷砖
  • SiteMesh的
  • Freemarker的
  • 速度
  • <jsp:include>
  • <%@ include file="..">

TilesSitemesh可以分组; 所以可以的Freemarker速度.每个小组中使用哪一个不是这个讨论的问题,有足够的问题和讨论.

这是一个有趣的读物,但不能说服我使用瓷砖.

我的问题是 - 这些框架提供的内容 <@ include file="..">与JSTL 无法正常完成.要点(一些来自文章):

  1. 包括部分页面,如页眉和页脚 - 之间没有区别:

    <%@ include file="header.jsp" %>
    
    Run Code Online (Sandbox Code Playgroud)

    <tiles:insert page="header.jsp" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在标题中定义参数 - 如标题,元标记等.这非常重要,尤其是从SEO的角度来看.使用模板选项,您只需定义每个页面应定义的占位符.但是你可以在jsp中使用JSTL,使用<c:set>(在包含页面中)和<c:out>(在包含的页面中)

  3. 布局重组 - 如果要在菜单上方移动面包屑,或在另一个侧面板上方移动登录框.如果页面包含(使用jsp)组织不当,则可能需要在这种情况下更改每个页面.但是如果你的布局不是太复杂,并且你把常见的东西放在页眉/页脚中,就没有什么可担心的了.

  4. 公共组件和特定内容之间的耦合 - 我没有发现这个问题.如果要重用某些片段,请将其移动到不包含任何页眉/页脚的页面,并在需要的地方包含它.

  5. 效率 - <%@ include file="file.jsp" %>比其他任何东西都更有效,因为它被编译一次.所有其他选项都被解析/执行多次.

  6. 复杂性 - 所有非jsp解决方案都需要额外的xml文件,其他包括,预处理器配置等.这既是学习曲线又是引入更多潜在的失败点.此外,它使支持和更改变得更加乏味 - 您必须检查许多文件/配置以了解正在发生的事情.

  7. 占位符 - 速度/自由标记比JSTL更多吗?在JSTL中,您放置占位符,并使用模型(放置在请求或会话范围内,由控制器)来填充这些占位符.

所以,说服我除了普通的JSP之外我应该使用上面的任何框架而不是/.

java jsp velocity freemarker tiles

95
推荐指数
4
解决办法
3万
查看次数

将applicationContext拆分为多个文件

将Spring的配置拆分为多个xml文件的正确方法是什么?

目前我有

  • /WEB-INF/foo-servlet.xml
  • /WEB-INF/foo-service.xml
  • /WEB-INF/foo-persistence.xml

web.xml有以下几点:

<servlet>
    <description>Spring MVC Dispatcher Servlet</description>
    <servlet-name>intrafest</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/foo-*.xml
        </param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
            /WEB-INF/foo-*.xml
    </param-value>
</context-param>


<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

实际问题:

  • 这种方法是正确/最好的吗?
  • 我真的需要同时指定中的配置位置DispatcherServlet context-param板块?

为了能够引用foo-servlet.xml从中定义的bean,我需要记住foo-service.xml什么?这是否与指定contextConfigLocation有关web.xml

更新1:

我正在使用Spring framework 3.0.我的理解是,我不需要像这样进行资源导入:

 <import resource="foo-services.xml"/> 
Run Code Online (Sandbox Code Playgroud)

这是正确的假设吗?

configuration spring

58
推荐指数
4
解决办法
11万
查看次数

使用args下划线的去抖动功能

我有一个函数,它接受了一些参数.但是下划线去抖的用法是:

var lazyLayout = _.debounce(calculateLayout, 300);
Run Code Online (Sandbox Code Playgroud)

但在我的情况下calculateLayout需要一些参数来运行.在这种情况下如何通过它们?

更新:

示例calculateLayout功能:

var calculateLayout = function(a,b) {
  console.log('a is ' + a + ' and b is ' + b);
}
Run Code Online (Sandbox Code Playgroud)

javascript underscore.js

57
推荐指数
3
解决办法
3万
查看次数

如何调试elisp?

通常,最简单的调试方法是使用printf.我该怎么做来调试emacs-lisp?如何从elisp打印emacs编辑器?或者有没有办法调试elisp代码?

例如,如何检查以下代码是否在.emacs文件中运行?

(load "auctex.el" nil t t)
Run Code Online (Sandbox Code Playgroud)

debugging emacs elisp

53
推荐指数
4
解决办法
2万
查看次数

我如何知道我的docker mysql容器何时启动并且mysql已准备好接受查询?

我正在部署一些不同的docker容器,mysql是第一个.我想在数据库启动后立即运行脚本并继续构建其他容器.该脚本一直在失败,因为当设置mysql(来自这个官方的mysql容器)的入口点脚本仍在运行时,它试图运行.

sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=MY_ROOT_PASS -p 3306:3306 -d mysql
[..] wait for mysql to be ready [..]
mysql -h 127.0.0.1 -P 3306 -u root --password=MY_ROOT_PASS < MY_SQL_SCRIPT.sql
Run Code Online (Sandbox Code Playgroud)

有没有办法等待在docker容器内完成入门的mysql安装脚本的信号?Bash睡眠似乎是次优解决方案.

编辑:去找这样的bash脚本.不是最优雅和善良的蛮力,但工作就像一个魅力.也许有人会觉得有用.

OUTPUT="Can't connect"
while [[ $OUTPUT == *"Can't connect"* ]]
do
    OUTPUT=$(mysql -h $APP_IP -P :$APP_PORT -u yyy --password=xxx <       ./my_script.sql 2>&1)
done
Run Code Online (Sandbox Code Playgroud)

mysql bash shell docker

53
推荐指数
9
解决办法
4万
查看次数

Spring MVC:将多个URL映射到同一个控制器

我有20多个表格,它们是从同一页面链接的.某些表单共享同一个控制器,而其他表单使用自己的控制器 例如,形式A,BC使用DefaultController,而形式D使用ControllerD.

我想要实现的是以一致的方式将URL映射到每个表单.

所以,理想情况下,链接页面看起来像:

问题是如何将每个URL映射到适当的控制器.使用第一个URL模式,您将映射formD.htmlControllerD但不确定如何映射form[A|B|C].htmlDefaultController.使用第二个URL模式,我甚至不知道从哪里开始......

有没有人做过这样的事情?

java spring spring-mvc

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

java中的非法远程方法

这是我第一次使用java Rmi*.我有一个自定义类,它扩展UnicastRemoteObject并实现了一个扩展远程的接口.我认为我已经在类中正确实现了接口的方法,但是IllegalArgumentException当我尝试运行我的代码时,我仍然得到了一个(而且它是关于一个没有参数的方法).

jvm声称遇到了非法的远程方法,但该方法及其实现对我来说似乎没问题.

是否有任何其他原因导致除了错误地实现或调用方法之外可能发生此异常?


这是堆栈跟踪:

SEVERE: null
java.rmi.server.ExportException: remote object implements illegal remote interface; nested exception is:
        java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.lang.String Node.getId()
        at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
        at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
        at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
        at java.rmi.server.UnicastRemoteObject.<init>(Unknown Source)
        at java.rmi.server.UnicastRemoteObject.<init>(Unknown Source)
        at NodeImpl.<init>(NodeImpl.java:30)
        at NodeLauncher.main(NodeLauncher.java:11)
Caused by: java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.lang.String Node.getId()
        at sun.rmi.server.Util.checkMethod(Unknown Source)
        at sun.rmi.server.Util.getRemoteInterfaces(Unknown Source)
        at sun.rmi.server.Util.getRemoteInterfaces(Unknown Source)
        at sun.rmi.server.Util.createProxy(Unknown Source)
        ... 7 more
Run Code Online (Sandbox Code Playgroud)

这是界面:

import java.rmi.*;
import java.util.LinkedList; …
Run Code Online (Sandbox Code Playgroud)

java runtime-error rmi illegalargumentexception

45
推荐指数
1
解决办法
2万
查看次数

如何将我的自定义emacs主题视为"安全主题"?

我是Emacs的新手.

所以,我正在使用emacs 24和曝光的色彩主题.

当Emacs启动时,它提示我"加载一个主题可以运行Lisp代码,真的加载吗?".

当我回答"是"时,它会继续"在未来的会议中将此主题视为安全吗?".

如果我说"y",主题就会被加载,并且

(custom-set-variables
    (custome-safe-themes (quote ("..." default))))
Run Code Online (Sandbox Code Playgroud)

自动添加到〜/ .emacs.

但是,每次打开Emacs时,这些问题都会回来!

什么是关闭它们的正确方法?

emacs customization themes elisp editor

44
推荐指数
2
解决办法
1万
查看次数

Joda DateTime到时间戳转换

我想在Joda中改变Timestampby 的值:DateTimeZone

  DateTime dt = new DateTime(rs.getTimestamp("anytimestampcolumn"),
                             DateTimeZone.forID("anytimezone"));
  Timestamp ts = new Timestamp(dt.getMillis());
Run Code Online (Sandbox Code Playgroud)
  • 因为DateTime,价值是:2013-04-13T22:56:27.000+03:00

  • 因为TimeStamp,价值是:2013-04-13 22:56:27.0

Timestamp 即将到来没有时区差异.

如何使用TimeZone获得正确的时间戳? 例如,我想得到"2013-05-13 01:56:27.0".

提前致谢.

编辑:使用MySQL,列类型TIMESTAMP当然rsResultSet.

java jodatime

38
推荐指数
2
解决办法
10万
查看次数