我使用Python 3并希望使用默认argparse.ArgumentParser设置的自定义类
进行换行formatter_class=argparse.RawDescriptionHelpFormatter.我可以成功地做到这一点,但IntelliJ IDEA 2017.1与Python插件(PyCharm)给出了以下代码的警告:
class CustomParser(argparse.ArgumentParser):
def __init__(self, formatter_class=argparse.RawDescriptionHelpFormatter, **kwargs):
# noinspection PyArgumentList
super().__init__(formatter_class=formatter_class, **kwargs) # warning in this line for the last argument if suppression comment above removed
Run Code Online (Sandbox Code Playgroud)
如果使用IntelliJ抑制命令删除注释,则对kwargs的警告是"预期字典,得到字典",但它正在工作.这是一个误报警告,还是在没有警告的情况下可以做得更好?这个警告背后是否有一个真正的问题,它有助于避免?
附带问题:使用
formatter_class = kwargs.pop('formatter_class', argparse.RawDescriptionHelpFormatter)而不是在签名中明确定义命名参数是否有区别?根据PEP20,签名中更明确的更好,对吧?
我在Open Resource对话框中找到了问题并回答了Eclipse :: Hide .svn文件,但是不想过滤所有具有给定名称的资源,例如'work',这是一般的.我只想在一个特定的子文件夹'sub'中排除工作文件夹.我看到"文件和文件夹属性"选项"项目相对路径"和"位置",但它们都不能用于以下方面:
子/工作
任何想法如何让资源过滤器只在某个子路径中工作?
看起来Oracle已经发生了类似于Java 7u45的更改,其中需要设置新的清单值来运行签名的Java Webstart应用程序(请参阅此处).
目前,我们使用Java 8u131签名的应用程序不能从带有错误消息的Java8u141开始 Could not verify signing in resource: (arbitrary resource.jar)
您是否仍然可以使用Java 8u141运行已签名的Webstart应用程序,即我是否有特殊问题?
在发行说明中是对安全性更改的说明,但它们与代码签名无关.此外密码路线图是这样的释放并没有真正改变代码签名,尽管Java的8u131例如,在辗转MD5支持.但是Java 8u131对我有用,Maven Java Webstart插件也使用SHA-256-Digest.
如何为顶级特殊键(如德语变音键)定义键盘快捷键Ä?我找到了一种映射用于默认美国布局键的unicode字母的方法,请参见此处.但德国变音关键的关键事件Ä是:
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='ä',keyLocation=KEY_LOCATION_STANDARD,rawCode=222,primaryLevelUnicode=228,scancode=40] on frame0
Run Code Online (Sandbox Code Playgroud)
想法是注册键盘动作:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
public class KeyStrokeForGermanUmlaut {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(600, 400));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
final JLabel label = new JLabel("Text shall change with shortcut");
panel.add(label);
panel.registerKeyboardAction(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent …Run Code Online (Sandbox Code Playgroud) 我讨厌声明抛出在任何情况下都不会被这个函数抛出的异常的函数.如果throw在函数体中删除语句而不从throws定义中删除语句,则会在重构中发生这种情况.
这就是为什么我激活设置Java - >编译器 - >错误/警告 - >不必要的代码 - >不必要的抛出异常声明.

如果在接口或超级方法中定义了异常,则会导致误报警告.如果接口的实现A没有抛出一个异常类型,但实现B没有,eclipse会警告实现A中不必要的声明.这同样适用于super和overriden方法.这就是为什么我激活子选项"忽略覆盖和实现方法".
Perfeclty罚款直到这里.但我有相反的情况.重写的方法抛出异常类型,而不是在super方法中使用.看到这个最小的例子:
class Vehicle {
protected int getStatus() throws GeneralException, StatusException {
throw new GeneralException("One exception type in super type only");
}
}
class Car extends Vehicle {
@Override
protected int getStatus() throws GeneralException, StatusException {
throw new StatusException("Special case, that gets special handling");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,车辆中的StatusException在eclipse中被警告.

当然有人可能认为这是糟糕的设计等,但从实用的角度来看,这将再次发生,并且很可能人们可以接受不改变架构,而只是简单地将新的异常类型添加到超类型.但是如何在这种情况下摆脱误报警告呢?当然可以使用javadoc的子选项,但这也会忽略大多数真正的正面命中.另一种选择是添加SuppressWarning注释"未使用",但其他用户可能会获得该抑制的不需要的警告.
我们的Jenkins执行大规模集成测试.jenkins运行的时间越长,测试需要的时间越长.因此,我们每晚通过cronjob重启Jenkins服务器.同时,构建队列太长而无法完成,并且当前正在运行的作业被取消并且失败.那很难看.我找到了安全重启插件,但等待空构建队列.理想情况下,我会有一份工作可以优先考虑,也可以在白天的每个需要的时间重新启动.此作业需要执行重新启动,因为如果没有剩下的作业,安全重启插件会执行.
我喜欢空对象模式的想法,并强迫我使用它,直到它真正感觉正常和良好为止。目前我不知道如何在泛型类型中使用它。我知道可以定义第二个泛型类型并传入类来构造默认对象,但这对于这种模式来说确实开销太大。有什么好的办法吗?
public class GenericExample<T> {
public static final GenericExample NULL = ???;
private T attribute;
public GenericExample(T attribute) {
this.attribute = attribute;
}
}
public class HoldGeneric {
private GenericExample<String> name = GenericExample.NULL;
public initLater(String name) {
this.name = new GenericExample<String>(name);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个div是一个保存按钮,有一个很棒的字体符号.单击div后,将disabled添加一个新的CSS类,其中不透明度会降低,以便在视觉上发出单击按钮的信号.在save事件之后,disabledCSS类再次被删除,按钮再次完全可见.如果我试图通过Selenium天真地验证这一点,那么添加CSS类和删除对于Selenium来说太快了,即
driver.findElement(By.cssSelector(".save-button")).click();
Run Code Online (Sandbox Code Playgroud)
正在工作并找到按钮并单击它,但下一个查找会抛出NoSuchElementException:
driver.findElement(By.cssSelector(".save-button .disabled"));
Run Code Online (Sandbox Code Playgroud)
它不适用于明确的等待(我没有提到简化).Selenium太慢而无法识别更改,即在第二次查找开始之前删除了CSS类.我是否需要在点击事件之前启动听众,可能是通过Selenium的JavaScript解决方案?还有其他方法吗?看起来在Selenium中无法进行线程等待.
我通过添加我的国定假日
Outlook -> Options -> Calendar -> Calendar options -> Add holidays
现在,我想一次更改所有假期的颜色。有任何想法吗?
版本 1 和版本 2 有什么区别?他们在我的情况下似乎也这样做,但我到处都读到版本 1 是更好的方法。但为什么?
public BufferedImage getImage(Icon icon) {
int w = icon.getIconWidth();
int h = icon.getIconHeight();
// version 1
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
BufferedImage image = gd.getDefaultConfiguration().createCompatibleImage(w, h, Transparency.OPAQUE);
// version 2
// BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
icon.get().paintIcon(null, g, 0, 0);
g.dispose();
return image;
}
Run Code Online (Sandbox Code Playgroud)