小编Ola*_*ock的帖子

如何评估bash/shell脚本中的http响应代码?

我有一种感觉,我错过了显而易见的,但没有成功man [curl|wget]或谷歌("http"做出如此糟糕的搜索词).我正在寻找一个快速和脏的修复我们的一个经常失败的网络服务器,返回状态代码500与错误消息.一旦发生这种情况,就需要重新启动它.

由于根本原因似乎很难找到,我们的目标是快速修复,希望它足以缩短时间,直到我们能够真正解决它(该服务不需要高可用性)

建议的解决方案是创建一个每5分钟运行一次的cron作业,检查http:// localhost:8080 /.如果返回状态码500,则将重新启动Web服务器.服务器将在一分钟内重启,因此无需检查已经运行的重启.

有问题的服务器是一个ubuntu 8.04最小安装,只安装了足够的软件包来运行它当前需要的软件包.在bash中执行任务没有硬性要求,但我希望它能在如此简单的环境中运行,而无需安装任何解释器.

(我非常熟悉脚本,将http状态代码分配给环境变量的命令/选项就足够了 - 这就是我所寻找和找不到的.)

bash shell http http-headers

180
推荐指数
8
解决办法
18万
查看次数

Apache parquet 文件的扩展名是“.pqt”还是“.parquet”?

我想知道关于镶木地板文件的扩展是否有共识。我见过一个较短的.pqt扩展名,它有典型的 3 个字母(如 csv、tsv、txt 等),然后有一个相当长(因此非常规(?))的.parquet扩展名,被广泛使用。

任何人都知道什么扩展是“官方”的,以及使用.pqt(我个人喜欢)是否可以。

format file

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

如何测试应用程序的正确编码(例如UTF-8)

编码问题是在开发过程中经常困扰我的一个主题.每个平台都坚持自己的编码,很可能在游戏中有一些非UTF-8默认值.(我通常在Linux上工作,默认为UTF-8,我的同事主要使用德语Windows,默认为ISO-8859-1或类似的Windows代码页)

我相信,UTF-8是开发i18nable应用程序的合适标准.然而,根据我的经验,编码错误通常是发现较晚的(即使我位于德国,我们有一些特殊字符,与ISO-8859-1一起提供了一些可检测的差异).

我相信具有完全非ASCII字符集的开发人员(或那些知道使用这种字符集的语言的开发人员)在提供测试数据方面处于领先地位.但是,对于我们其他人来说,必须有一种方法来缓解这种情况.

这里的人们使用什么[技术工具|激励]?您如何让您的联合开发人员关注这些问题?您如何测试合规性?这些测试是手动还是自动进行的?

提前添加一个可能的答案:

我最近发现了fliptitle.com(它们提供了一种简单的方法来编写奇怪的字符"uʍopǝpısdn"*)并且我打算使用它们来提供易于验证的UTF-8字符串(因为大多数使用的字符)有一些奇怪的二进制编码位置)但肯定必须有更系统的测试,模式或技术来确保UTF-8的兼容性/使用.

注意:即使有一个公认的答案,我想知道更多的技术和模式,如果有的话.如果您有更多想法,请添加更多答案.选择一个接受答案并不容易.虽然有理由选择其他答案,但我选择正则表达式的答案来解决问题的最小预期角度.太糟糕了只有一个答案可以接受.

谢谢您的意见.

*)那些由于字体问题而无法看到这些字符的"颠倒"写的"倒置"

language-agnostic testing encoding utf-8

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

找不到模块'compare-func' Cordova Android

我有一个使用 Cordova Android v9.0.0 的 Cordova v10.0.0 项目,在尝试为 Android 构建项目时遇到问题,我收到以下错误:

Checking Java JDK and Android SDK versions
ANDROID_SDK_ROOT=undefined (recommended setting)
ANDROID_HOME=/Users/MYUSER/Library/Android/sdk (DEPRECATED)
Failed to instantiate ProjectBuilder builder: Error: Cannot find module 'compare-func'
Run Code Online (Sandbox Code Playgroud)

我试过删除我的 Node Modules 文件夹,运行一个cordova clean android并重新安装npm install. 不太确定为什么我会收到此错误。

npm cordova android-studio cordova-android

16
推荐指数
1
解决办法
4819
查看次数

Docker:Apple Silicon M1 中的 Apache

我有一个docker-compose.yml文件:

version: '1'
services:
  mariadb:
    image: 'docker.io/bitnami/mariadb:10.3-debian-10'
    ports:
      - '3307:3306'
    volumes:
      - ./db:/bitnami/mariadb
    environment:
      - MARIADB_USER=bn_wordpress
      - MARIADB_DATABASE=bitnami_wordpress
      - ALLOW_EMPTY_PASSWORD=yes
  wordpress:
    image: 'docker.io/bitnami/wordpress:5-debian-10'
    ports:
      - '8081:8080'
      - '8444:8443'
    volumes:
      - ./wp:/bitnami/wordpress
    depends_on:
      - mariadb
    environment:
      - MARIADB_HOST=mariadb
      - MARIADB_PORT_NUMBER=3306
      - WORDPRESS_DATABASE_USER=bn_wordpress
      - WORDPRESS_DATABASE_NAME=bitnami_wordpress
      - ALLOW_EMPTY_PASSWORD=yes
Run Code Online (Sandbox Code Playgroud)

在 Mac(Intel)和 Linux 中,我运行docker-compose up并且运行良好。
但是在Macbook M1中,我为Apple Silicon芯片安装了Docker并更新了rosetta,最后提示如下:

wordpress_1  | wordpress 15:48:36.49 INFO  ==> ** Starting Apache **
wordpress_1  | [Tue Jul 13 15:48:36.652803 2021] [core:emerg] [pid 1] (95)Operation not supported: …
Run Code Online (Sandbox Code Playgroud)

wordpress docker docker-compose

16
推荐指数
2
解决办法
6193
查看次数

如何判断JDK是否在运行的JVM中可用?

注意:从shell的角度来看,所有类似的问题都在回答这个问题(例如,是否javac可用?java -versionwhich java)。我正在明确地寻找当前正在运行的 JVM 的观点

有些程序需要在JDK的JRE中运行,而不仅仅是“仅” JRE。我想知道是否有一种简单的方法来找出当前正在运行的程序所执行的内容。

我正在寻找一种通用的方法来解决这个问题,而不是分析所讨论的程序并复制其对JDK功能的使用。因此javac,如果可能的话,我宁愿不执行外部流程测试。我宁愿寻找一些将在JDK中运行但在JRE中失败的代码。

它可能Class.forName与仅在JDK中可用的类一起使用。它可能是系统属性。或其他。

如果我必须使用javac执行外部进程:那就这样吧。但是我更喜欢更简单,更通用的东西。

在注释中从下至下阐明

我不时遇到Liferay的问题,该问题需要在JDK的JRE中运行。我很高兴想到只部署另一个插件,如果在没有JDK的情况下运行该插件,它将提供用户友好的错误消息。我回避分析仅在JRE环境中失败的代码,并且我不想修改Liferay的代码,而是添加自己的插件来进行分析和警告。

java jvm liferay

15
推荐指数
1
解决办法
360
查看次数

安装 apache-airflow 时出现错误

当我尝试airflow -version 和airflow initdb 时出现上述错误

  File "/home/ravi/sandbox/bin/airflow", line 26, in <module>
    from airflow.bin.cli import CLIFactory
  File "/home/ravi/sandbox/lib/python3.6/site-packages/airflow/bin/cli.py", line 70, in <module>
    from airflow.www.app import (cached_app, create_app)
  File "/home/ravi/sandbox/lib/python3.6/site-packages/airflow/www/app.py", line 37, in <module>
    from airflow.www.blueprints import routes
  File "/home/ravi/sandbox/lib/python3.6/site-packages/airflow/www/blueprints.py", line 25, in <module>
    from airflow.www import utils as wwwutils
  File "/home/ravi/sandbox/lib/python3.6/site-packages/airflow/www/utils.py", line 39, in <module>
    from flask_admin.model import filters
  File "/home/ravi/sandbox/lib/python3.6/site-packages/flask_admin/model/__init__.py", line 2, in <module>
    from .base import BaseModelView
  File "/home/ravi/sandbox/lib/python3.6/site-packages/flask_admin/model/base.py", line 8, in <module>
    from werkzeug import secure_filename
ImportError: cannot …
Run Code Online (Sandbox Code Playgroud)

python airflow

15
推荐指数
1
解决办法
7697
查看次数

如何使用 Apache httpComponent5 设置 Spring HttpComponentsClientHttpRequestFactory?

我正在尝试在 Spring 中设置 httpClient5 ...我有以下代码:

PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
                .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create()
                        .setSslContext(SSLContexts.createSystemDefault())
                        .setTlsVersions(TLS.V_1_3, TLS.V_1_2)
                        .build())
                .setDefaultSocketConfig(SocketConfig.custom()
                        .setSoTimeout(Timeout.ofSeconds(5))
                        .build())
                .setPoolConcurrencyPolicy(PoolConcurrencyPolicy.STRICT)
                .setConnPoolPolicy(PoolReusePolicy.LIFO)
                .setConnectionTimeToLive(TimeValue.ofMinutes(1L))
                .build();

        CloseableHttpClient client = HttpClients.custom()
                .setConnectionManager(connectionManager)
                .setDefaultRequestConfig(RequestConfig.custom()
                        .setConnectTimeout(Timeout.ofSeconds(5))
                        .setResponseTimeout(Timeout.ofSeconds(5))
                        .setCookieSpec(StandardCookieSpec.STRICT)
                        .build())
                .build();

        CookieStore cookieStore = new BasicCookieStore();

        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();

        HttpClientContext clientContext = HttpClientContext.create();
        clientContext.setCookieStore(cookieStore);
        clientContext.setCredentialsProvider(credentialsProvider);
        clientContext.setRequestConfig(RequestConfig.custom()
                .setConnectTimeout(Timeout.ofSeconds(5000))
                .setResponseTimeout(Timeout.ofSeconds(5000))
                .build());



        // connect Spring httpComponent (client-side) with Apache httpClient
        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
        httpRequestFactory.setReadTimeout(60000);
        httpRequestFactory.setConnectTimeout(60000);
        httpRequestFactory.setHttpClient(client);
Run Code Online (Sandbox Code Playgroud)

ClosableHttpClient 类实现了与 setHttpClient(client) 不兼容的接口 org.apache.hc.client5.http.classic.HttpClient ;这是运行时错误:

java.lang.ClassCastException: class org.apache.hc.client5.http.impl.classic.InternalHttpClient cannot be cast …
Run Code Online (Sandbox Code Playgroud)

java spring apache-httpcomponents

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

HttpClient5 - 许多 API 已更改/删除

我正在迁移我的应用程序以使用 HttpClient5,但它一天比一天变得痛苦。许多 API 被删除,并且没有适当的文档可用于了解替代方案。Stackoverflow/任何其他网站/博客总是显示与 httpcomponents4.x 相关的答案,但这些 API 不再存在于 HttpClient5 中。我将所有查询/替代方案放在这里。如果有人知道,请回答/确认这些是否是正确的实现。

  1. 在客户端上设置套接字超时:删除了RequestConfig.custom().setSocketTimeout(socketTimeout).build()API。经过大量研究,发现有单独的 SocketConfig 类需要设置ConnectionManager

     SocketConfig socketConfig=SocketConfig.custom()
                                     .setSoTimeout(Timeout.ofMilliseconds(10000))
                                     .build();
    
     BasicHttpClientConnectionManager connMgr=new BasicHttpClientConnectionManager(registry);
     connMgr.setSocketConfig(socketConfig);
    
     CloseableHttpClient httpclient = HttpClients.custom()
             .setConnectionManager(connMgr)
             .build();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置默认主机。遵循此How does one set Default HttpHost Target in Apache HttpClient 4.3+? 并发现我们可以重写determineRouteDefaultRoutePlanner但我们不能在 httpclient5 中执行此操作,因为此方法声明为final因此无法重写。所以我这样做了:

         HttpHost targetHost = new HttpHost(myHost,myPort);
         HttpRoutePlanner planner=new HttpRoutePlanner() {
    
             @Override
             public HttpRoute determineRoute(HttpHost var1, HttpContext var2) throws HttpException {
                 HttpRoute route=new HttpRoute(targetHost);//default for all requests
                 return route; …
    Run Code Online (Sandbox Code Playgroud)

apache-httpcomponents apache-commons-httpclient apache-httpclient-4.x apache-httpclient-5.x

11
推荐指数
0
解决办法
4321
查看次数

使用 Mina SSHD(客户端)使用私钥连接到 SFTP

我正在尝试连接到需要私钥身份验证并希望使用 Mina 的 SFTP 服务器。查看文档,我可以看到如何使用密码身份验证而不是私钥身份验证来执行身份验证。我没有看到任何示例代码来演示如何使用 mina 执行私钥身份验证。

目前该库是否可行,如果可以,您能否提供有关如何加载密钥并执行连接的示例代码?

这是我想要使用 SSHTools 执行的操作的示例,以供参考。

   private static void authenticate(Ssh2Client ssh2, String host, Integer port, String username, InputStream privateKey) {
    Ssh2PublicKeyAuthentication auth = createKeyAuthentication(privateKey);

    try {
        int result = ssh2.authenticate(auth);
        if (result != SshAuthentication.COMPLETE) {
            throw new AuthenticationIncomplete(host, port, username, result);
        }
    } catch (SshException ex) {
        throw new UnableToAuthenticate(host, port, username, ex);
    }
}

private static Ssh2PublicKeyAuthentication createKeyAuthentication(InputStream privateKey) {
    try {
        SshPrivateKeyFile privateKeyFile = SshPrivateKeyFileFactory.parse(StreamUtil.readIntoByteArray(privateKey));
        SshKeyPair keyPair = privateKeyFile.toKeyPair("");

        Ssh2PublicKeyAuthentication auth = new …
Run Code Online (Sandbox Code Playgroud)

java apache-mina

10
推荐指数
1
解决办法
1591
查看次数