我知道我过去曾使用过该功能,但我不知道我之前是怎么做过的.它一定是简单的,对吧?
我想知道用什么技术和/或库来实现linux命令"tail -f"的功能.我基本上是在寻找一个附加/替换的下降java.io.FileReader.客户端代码可能如下所示:
TailFileReader lft = new TailFileReader("application.log");
BufferedReader br = new BufferedReader(lft);
String line;
try {
while (true) {
line= br.readLine();
// do something interesting with line
}
} catch (IOException e) {
// barf
}
Run Code Online (Sandbox Code Playgroud)
缺失的部分是合理的实施TailFileReader.它应该能够读取文件打开前存在的文件部分以及添加的行.
我想要做的是将文件中的设置包含到我当前的交互式bash shell中,如下所示:
$./path/to/some/dir/.settings
问题是.settings脚本还需要使用".".运算符包含其他文件,如下所示:
..extra_settings
如何在.settings文件中引用.extra_settings的相对路径?这两个文件始终存储在同一目录中,但此目录的路径将根据这些文件的安装位置而有所不同.
操作员总是知道/ path/to/some/dir /,如上所示..settings文件如何知道安装它的目录?我宁愿没有一个记录已安装目录名称的安装过程.
我正在本地可信赖的环境中运行Jenkins,我正在尝试运行此管道.这个Jenkinsfile被检入git.
#!groovy
node('master') {
def ver = pomVersion()
echo "Building version $ver"
}
def pomVersion(){
def pomtext = readFile('pom.xml')
def pomx = new XmlParser().parseText(pomtext)
pomx.version.text()
}
Run Code Online (Sandbox Code Playgroud)
我运行构建的前几次,我需要手动批准更改(Jenkins-> Mange Jenkins->进程内脚本批准).现在我得到了这个例外,没有什么可以批准的.我想要做的就是解析一个XML文件.管道构建可以完全绕过这些安全检查吗?
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified field groovy.util.Node version
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:367)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:363)
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:23)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:17)
at WorkflowScript.pomVersion(WorkflowScript:10)
at WorkflowScript.run(WorkflowScript:3)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:62)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:54)
at sun.reflect.GeneratedMethodAccessor479.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
at com.cloudbees.groovy.cps.Next.step(Next.java:58)
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:29) …Run Code Online (Sandbox Code Playgroud) 我在 IntelliJ IDEA 中一直使用“导航声明”。当使用拆分编辑器时,我想将其配置为略有不同。
基本用例很简单:
但是,在使用拆分窗口时,事情表现得很奇怪:
如果该类已在左侧选项卡组中打开,IntelliJ 将在左侧编辑器中将该选项卡放在前面,替换我选择查看的一个类。但是,如果该类尚未在任何选项卡组中打开,IntelliJ 将在右侧选项卡组中打开文件。这与不使用拆分编辑器时发生的情况基本相同。
更糟糕的是,“导航->返回”操作现在确实会导航回右侧的原始类,但不会更改左侧的任何内容,即我打算暂时引用的一个类是不可见的.
因此,“导航-> 打开声明”操作的行为取决于 IntelliJ 本身的状态,而不是我的意图。我不希望 intelliJ 任意决定在哪个拆分窗口中显示文件。我宁愿它只打开当前光标所在的选项卡组中的声明。
真正好的是像“在当前选项卡组中导航->打开声明”这样的操作。这存在吗?可以为此创建插件吗?
我有这个Spring @ExceptionHandler,它主要做我想要的.它将HTTP状态代码设置为409,并在JSON响应中包含额外的错误信息.
@ExceptionHandler(PolicyExecutionException.class)
public ResponseEntity handleException(PolicyExecutionException se){
return ResponseEntity.status(HttpStatus.CONFLICT).body(se.getScriptErrorMap());
}
Run Code Online (Sandbox Code Playgroud)
我注意到的是,即使它向客户端提供了正确的响应,Spring也会在WARN级别记录消息.我的信息很长,只与客户有关.我宁愿不在服务器端登录它.这可以关掉吗?
2017-06-19 18:48:10,659 [p-nio-8060-exec-2] WARN oswsmmaExceptionHandlerExceptionResolver - 由Handler执行引起的已解决异常:
我使用的另一种方法是捕获PolicyExecutionException每个可以抛出它的Controller方法.如果可能的话,这会导致额外的样板.
我想念增量搜索的emacs行为.在emacs中,我们可以这样做:
- 铯
- 键入搜索文本,即"按钮"
将找到按钮的第一次出现.如果继续按Cs,将会发现下一次出现.在我看来,IntelliJ接近于此,除了你需要按下不同的按键进行第二次搜索.对我来说,这很烦人.我宁愿按下相同的keystoke进行第一次以及随后的搜索.
IntelliJ中有可能吗?它在Eclipse中使用emacs键绑定很好用.
编辑:我在这个问题上开了一笔赏金.有没有一个类似的实现这个功能的例子写成IntelliJ IDEA的插件或补丁?