小编pee*_*eer的帖子

从`>`切换到```会破坏我的单行

我正在过滤包含3个以上项目的行

perl -ne  'print if split > 2' file.txt
Run Code Online (Sandbox Code Playgroud)

但是当我想要过滤少于3个项目的行时,我无法使用

perl -ne  'print if split < 2' file.txt
#Unterminated <> operator at -e line 1.
Run Code Online (Sandbox Code Playgroud)

我可以用其中任何一个来解决它

perl -ne 'print if not split > 2' file.txt
perl -ne 'print if 2 > split' file.txt
Run Code Online (Sandbox Code Playgroud)

但是我想知道为什么表达式只会失败一个<,>.

perl

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

在 docker 中通过 cron 运行时`/bin/sh: 1: python: not found`

我想在 docker 容器中通过 cron 重复调用一个脚本,但是当我从一次性执行切换到通过 cron 执行时,官方 python 镜像似乎突然找不到 python。

Dockerfile:

FROM python:3.7-slim

COPY main.py /home/main.py

#A: works
CMD [ "python", "/home/main.py" ]

#B: doesn't work
#RUN  apt-get update && apt-get -y install -qq --force-yes cron
#COPY hello-cron /etc/cron.d/hello-cron
#CMD ["cron", "-f"]
Run Code Online (Sandbox Code Playgroud)

主要.py

import time

for i in range(90000):
    print(i)
    time.sleep(5000)
Run Code Online (Sandbox Code Playgroud)

你好-cron:

* * * * * root python /home/main.py > /proc/1/fd/1 2> /proc/1/fd/2
#
Run Code Online (Sandbox Code Playgroud)

当我在 Dockerfile 中将 A 切换为 B 时,错误消息是:/bin/sh: 1: python: not found

谢谢大家的快速回复!添加PATH=/usr/local/bincron …

python cron docker

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

Java闰年代码问题

import java.util.Scanner;

public class Hw2JamesVaughn  {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);        
        System.out.print("Enter a year: ");
        int year = input.nextInt();
        if((year < 1582) == (year % 4==0))
            System.out.println(year + " is a leap year");
        else
            System.out.println(year + " is not a leap year");

        if((year > 1582) == (year % 100 != 0) || (year % 400 == 0))
            System.out.println(year + " is a leap year");
        else
            System.out.println(year + " is not a leap year");

    }                
} …
Run Code Online (Sandbox Code Playgroud)

java leap-year jgrasp

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

ghc-pkg:无法打开数据库进行修改:hLock:参数无效

我正在尝试behead.hs从 Ubuntu 20.04 (WSL1) 上的 pandoc 教程编译脚本。我可以使用
stack exec -- ghc behead.hsor成功编译它,
stack --resolver lts-16.25 exec -- ghc behead.hs
但是使用pandoc-types-1.20并且我需要pandoc-types-1.22所以我尝试
stack --resolver nightly-2020-12-07 exec -- ghc behead.hs
(最早的夜间功能pandoc-types-1.222020-09-20,失败并出现与下面相同的错误)

这产生:

Preparing to install GHC (tinfo6) to an isolated location.
This will not interfere with any system-level installation.
Already downloaded.
ghc-pkg: Couldn't open database /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/lib/ghc-8.10.2/package.conf.d for modification: {handle: /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/lib/ghc-8.10.2/package.conf.d/package.cache.lock}: hLock: invalid argument (Invalid argument)
make[1]: *** [ghc.mk:973: install_packages] Error 1
make: …
Run Code Online (Sandbox Code Playgroud)

haskell pandoc ghc-pkg haskell-stack windows-subsystem-for-linux

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

临时目录为空

我想将一些文件复制到临时目录中。但File我注释的@TempDir似乎没有被注入。

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

import java.io.File;

public class MyTempFileTest {

    @TempDir
    public File tempFolder;
    
    @Test
    public void testTempFolder() {
        Assertions.assertNotNull(tempFolder); 
    }
 }
Run Code Online (Sandbox Code Playgroud)

结果是org.opentest4j.AssertionFailedError: expected: not <null>

相反,我希望它是一个随机临时目录,就像@Rule TemporaryFolder tmpSudokus = new TemporaryFolder()Junit4 中的情况一样。

根据文档我可以注释一个Java.io.File.

如果我尝试将 tempDir 作为目录传递

    @Test
    public void testTempFolderParam(@TempDir File tempFolder) {
        Assertions.assertNotNull(tempFolder);
    }
Run Code Online (Sandbox Code Playgroud)

我明白了org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [java.io.File tempFolder] in executable [public void my.package.MyTempFileTest.testTempFolderParam(java.io.File)].

该测试是 android 项目的一部分,我的依赖项是:

dependencies {
    testImplementation …
Run Code Online (Sandbox Code Playgroud)

java junit junit5

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

从 colab 加载模型时没有名为“sklearn.svm._classes”的模块

我已经在 google colab 上训练了一个模型,并希望将其加载到我的本地计算机上。但我明白了ModuleNotFoundError: No module named 'sklearn.svm._classes'。在colab上加载模型是没有问题的。

合作实验室:

[1] import sys
    sys.version
'3.6.9 (default, Nov  7 2019, 10:44:02) \n[GCC 8.3.0]'
[2] import joblib
    import numpy as np
    from sklearn import svm
    clf = svm.SVC(gamma=0.001)
    clf.fit(np.random.rand(9,8).astype(int), np.arange(9))
    joblib.dump(clf, 'simple_classifier')
[3] joblib.load('simple_classifier')
Run Code Online (Sandbox Code Playgroud)

我的本地机器:

>>> import sys
>>> sys.version
'3.6.9 (default, Nov  7 2019, 10:44:02) \n[GCC 8.3.0]'
>>> import numpy as np
>>> import joblib
>>> from sklearn import svm
>>> joblib.load('simple_classifier')
Traceback (most recent call last):
  File "<stdin>", line …
Run Code Online (Sandbox Code Playgroud)

python joblib google-colaboratory

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

如何将来自 openapi-generator 的客户端包含在 gradle java 应用程序中?

我想创建一个从 openAPI 规范文件生成客户端并使用该客户端的 gradle java 应用程序。所以我创建了一个 java 应用程序gradle init(type:application, language:Java, DSL:groovy, test-framework:Junit Jupiter, project-name:simple-java-app, package-structure: a.aa)。

工作原理的小例子:

我可以创建一个second/loc/src/main/java包含包b.bb和类的新源文件夹Foo。并与以下build.gradle

plugins {
    id 'java'
    id 'application'
}

repositories {
    jcenter()
}

sourceSets {
    second {
        java {
            srcDir 'second/loc/src/main/java'
        }
    }
}

compileJava {
    source += sourceSets.second.java
}

dependencies {
    implementation 'com.google.guava:guava:29.0-jre'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
}

application {
    mainClassName = 'a.aa.App'
}

test {
    useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)

主类可以访问Foo

package a.aa; …
Run Code Online (Sandbox Code Playgroud)

java gradle openapi openapi-generator

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

如何将OpenAPI客户端添加为子项目?

我可以通过源集成功地将生成的 openapi 客户端添加到我的项目中。但是然后我必须将依赖项复制到主项目中build-gradle,解决冲突 - >我认为将客户端作为一个拥有自己的子项目将是一个更好的设计build.gradle

所以我添加include = 'build:openapi-java-client'了我的settings.gradlecompile project(':build:openapi-java-client')我的依赖项。这样我就有了以下文件
build.gradle::

plugins {
    id 'java'
    id 'application'
    id "org.openapi.generator" version "4.3.1"
}

repositories {
    jcenter()
}

openApiGenerate {
    generatorName = "java"
    inputSpec = "$rootDir/specs/petstore.yaml".toString()
    outputDir = "$buildDir/openapi-java-client".toString()
    apiPackage = "org.openapi.example.api"
    invokerPackage = "org.openapi.example.invoker"
    modelPackage = "org.openapi.example.model"
    configOptions = [
        dateLibrary: "java8"
    ]
}

dependencies {
    implementation 'com.google.guava:guava:29.0-jre'
    testImplementation 'junit:junit:4.13'
    
    compile project(':build:openapi-java-client')
}

application {
    mainClassName = 'a.aa.App'
} …
Run Code Online (Sandbox Code Playgroud)

java gradle openapi openapi-generator

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

如何使用 selenium 3 和 firefox 创建 lambda 层?

我有一个可用的 docker 容器,想在 Firefox 上迁移到 selenium 3.141 的 lambda 层。工作容器的 Dockerfile 是:

FROM python:3.7-slim

RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install selenium==3.141.0

RUN apt-get update
RUN apt-get -y install wget bzip2 firefox-esr #68.12.0esr
WORKDIR /tmp

RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz

RUN tar -zxf geckodriver-v0.26.0-linux64.tar.gz -C /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)

当我在此容器中执行以下操作时,Firefox会创建一个对象。

from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options   import Options
opts = Options()
opts.headless = True
Firefox(options=opts, service_log_path='/home/geckodriver.log')
Run Code Online (Sandbox Code Playgroud)

对于 lambda 层,我使用amazonlinux图像进行本地测试。在 aws 上,我提供的一个 zip 文件将被提取到/opt,所以我想把所有东西都放进去/opt,看看它是否工作。

我的 …

python firefox selenium selenium-webdriver aws-lambda-layers

5
推荐指数
0
解决办法
1239
查看次数

为什么`perl -pe的/ $/\n/g'`添加2个空白行?

我正在完成一本班轮书并且遇到了

perl -pe 's/$/\n/' file
Run Code Online (Sandbox Code Playgroud)

通过将行的结尾设置为新行,在每行之后插入一个空行,从而在现有换行符中添加一个新行,从而产生一个空行.因为这是第一个没有g模式结束的例子,我试过了

perl -pe 's/$/\n/g' file
Run Code Online (Sandbox Code Playgroud)

这导致行之间有2个空行.
我原本预计没有区别,因为$每行只有一个,所以替换所有这些应该与替换第一个相同.
这里发生了什么?

regex perl

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