平台:IntelliJ Community Edition 10.0.3
SDK:jdk1.6.0_21
操作系统:Windows 7
所以我对IntelliJ有一个奇怪的情况让我完全难过.我设置了一个Maven项目,并将log4j作为依赖项添加到pom.xml文件中.IDEA检查运行正常,我的单元测试全部编译运行.
然后我使用mvn install:install-file将hunnysoft的jmime库添加到我的本地maven存储库,如下所示.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)
Maven将jar文件安装到我的本地存储库中.
然后我进入IntelliJ的Settings => Maven => Repository Services并更新了我的本地存储库(以便IntelliJ重新索引存储库内容).
最后,我将以下依赖项添加到我的pom.xml文件中(就在log4j依赖项之上).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我现在创建一个新类如下:
package com.stackoverflow.question;
import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;
public class StackOverflowQuestion {
public Field create(String name, String text) {
Logger.getLogger(getClass()).debug("create entered");
FieldBody body = new FieldBody();
body.setText(new ByteString(text));
Field field = new Field();
field.setFieldName(name);
field.setFieldBody(body);
return field;
}
}
Run Code Online (Sandbox Code Playgroud)
现在为了古怪.IntelliJ的意图机制拾取并识别maven pom文件中的Logger导入就好了.然而,对于所有的hunnysoft导入,它报告:"无法解析符号'ByteString/Field/FieldBody'",但是 Build => Compile'StackOverflowQuestion.java' 正确编译所有内容,我为这个类创建的单元测试运行正常(尽管意图将对create()的调用标记为问题区域). …
我正在尝试使用Tornado和JS Prototype库编写简单的Web应用程序.因此,客户端可以在服务器上执行长时间运行的作业.我希望,这项工作以异步方式运行 - 以便其他客户可以查看页面并在那里做一些事情.
在这里我得到了:
#!/usr/bin/env/ pytthon
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
import os
import string
from time import sleep
from datetime import datetime
define("port", default=8888, help="run on the given port", type=int)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("templates/index.html", title="::Log watcher::", c_time=datetime.now())
class LongHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self.wait_for_smth(callback=self.async_callback(self.on_finish))
print("Exiting from async.")
return
def wait_for_smth(self, callback):
t=0
while (t < 10):
print "Sleeping 2 second, t={0}".format(t)
sleep(2)
t += 1
callback()
def on_finish(self):
print ("inside …Run Code Online (Sandbox Code Playgroud) 我发现functoolsPython 3的模块有两个非常相似的方法:partial和partialmethod.
有人可以提供使用每个人的好例子吗?
我尝试记录一个:rtype:docstring参数,返回一个生成器Node:
def __iter__(self):
"""iterate over node children
:rtype: ???
"""
for node in self.children.itervalues():
yield node
Run Code Online (Sandbox Code Playgroud)
什么:rtype:是应该是什么?generator of Node似乎不起作用.
当我一起使用Watir和Highline时,我已经遇到了一些奇怪的功能.
这是一个简单的例子:
require 'highline/import'
comp = ask("Company? ") { |q| q.default = "MySuperCompany" }
puts comp
require 'watir'
comp = ask("Company? ") { |q| q.default = "MySuperCompany" }
puts comp
Run Code Online (Sandbox Code Playgroud)
这是一个输出:
Company? |MySuperCompany|
MySuperCompany
[Company? ] =>
Company?
Run Code Online (Sandbox Code Playgroud)
也许这是一个错误?我也在highline的文档中找到了
如果在调用ask()之前设置了@question,则忽略参数,并使用该对象(必须是HighLine :: Question)来驱动进程.
对不起,我不是红宝石大师:-(
我正在尝试使用单击库向命令行应用程序添加帮助。正如官方文档中提到的,
对于命令,会生成一个简短的帮助片段。默认情况下,它是命令帮助消息的第一句话,除非它太长。这也可以被覆盖
使用简单的 @click.command 一切正常:
import click
@click.command()
def cli():
"""This is sample description of script."""
if __name__ == '__main__':
cli()
Run Code Online (Sandbox Code Playgroud)
运行它会从方法的 doscstring 显示脚本的描述:
Usage: example.py [OPTIONS]
This is sample description of script.
Options:
--help Show this message and exit.
Run Code Online (Sandbox Code Playgroud)
但是我需要使用 CommandCollection,因为我正在创建一个由多个命令组成的脚本。以下是官方帮助的示例:
import click
@click.group()
def cli1():
pass
@cli1.command()
def cmd1():
"""Command on cli1"""
@click.group()
def cli2():
pass
@cli2.command()
def cmd2():
"""Command on cli2"""
cli = click.CommandCollection(sources=[cli1, cli2])
if __name__ == '__main__':
cli()
Run Code Online (Sandbox Code Playgroud)
而且我不知道如何向整个命令集合添加描述。到目前为止我尝试过的:
我想将语言环境标签转换为IETF标准。IETF语言标签断言en-US是美国英语的正确标签。在可能的情况下,我可能会en_US作为输入。
目前,我正在使用这种方法:
func toLanguageTag(l string) string {
return strings.Replace(l, "_", "-", -1)
}
Run Code Online (Sandbox Code Playgroud)
例如,我知道Java有toLanguageTag方法。我应该继续使用这种方法,还是有更理想的方法来做我想做的事情?