小编Joe*_*Joe的帖子

printf()语句对我的返回值有什么影响? - C编程

我正在尝试使用K&R C编程语言手册中的一个函数,并使用指针来编写strindex函数而不是数组符号.我有一个奇怪的问题,如果我在下面的代码中的两个点中包含一个printf()语句,那么该函数返回正确的索引(在这种情况下为6),但是如果我将printf()语句保留,那么函数返回-1.

我真的不明白为什么这应该有任何不同,并且会感激任何澄清.这是我的代码:

#include <stdio.h>

int strindex(char *a, char *b) {

    char *pa;
    char *astart = a;
    char *pb = b;
    int len;

    while(*pb++ != '\0')
        len++;

    while(*a != '\0') {
        pa = a;
        pb = b;
        for(;*pb != '\0' && *pa == *pb; pa++, pb++)
            ;
        if(len > 0 && *pb == '\0') {
            return a - astart;
        }
        //printf("%c\n", *a);
        a++;
    }
    //printf("%c\n", *a);
    return -1;
}

int main() {

    char *a = "experiment";
    char *b = "me"; …
Run Code Online (Sandbox Code Playgroud)

c

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

php ssh2_exec没有执行'su'命令

我用ssh2 for php很开心.(!)

我正在通过ssh-ing进入localhost(运行ubuntu)进行测试.我已经设法用我的用户名(不是root)连接和验证,并且一些命令(比如'ls'返回一些信息,这很有希望.绝对可以到达某个地方.

我希望接下来能做的是发出'su'命令,然后给出root密码.

我没有收到错误,并返回资源,但流中似乎没有数据.(我有点期待'密码:'提示).我无法直接使用root密码进行身份验证,因为ssh禁用了该密码.

有没有理由为什么'su'会带回一些文字,你觉得呢?

我应该期待'密码:'提示回来吗?

这是我的代码:

function changeServerPassword( $ip, $port, $sshUser, $sshPassword, $rootPassword, $newRootPassword, $newSSHPassword = false) {
        // login to server using $sshUser and $sshPassword
        // su as root and enter $rootPassword
        // if any of the above steps fail, return with appropriate error message
        if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
        // log in 
        // Do I have to make sure that port is a number?
        if(!($con = ssh2_connect($ip, $port))){
            echo "fail: unable to establish connection\n"; …
Run Code Online (Sandbox Code Playgroud)

php ssh

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

如何一次运行我所有的内部类junit测试

我按照描述的方法使用每个方法使用一个内部类来组织我的junit测试:

在这里,在一个haacked文章(关于nunit测试),和
这里,在这个SO问题

public class TestMyThing {

    public static class TestMyThingMethodOne {

        @Test
        public void testMethodOneDoesACertainBehaviour() {
            // terse, clear testing code goes here
        }

        @Test
        public void testMethodOneHasSomeOtherDesiredBehaviour() {
            // more inspiring testing code here
        }
    }

    public static class TestMyThingMethodTwo {
        ... etc
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试为此运行junit测试时,Eclipse会询问我要运行哪个内部类测试,而我只能选择一个.有没有一种方法可以指定我希望每个内部类中的每个测试都能运行TestMyThing类?

java eclipse junit

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

AWS CodePipeline:如何将 CloudFormation 操作的输出传递到 CodeBuild 操作

我在 CloudFormation 模板中定义了一个 AWS CodePipeline。

管道的步骤之一是 CloudFormation 操作,它为我的应用程序构建测试环境。应用程序的 Elastic Load Balancer 的 URL 是此模板中定义的输出之一。

如何访问此输出,以便我可以在下一步中使用它,这是一个针对测试环境运行 api 测试的 CodeBuild 操作?

我可以OutputFileName在 CloudFormation Deploy 步骤中指定一个,但是 CodeBuild 步骤将需要 2 个输入工件、测试代码和 CloudFormation 输出文件,并且最多有 1 个输入工件。

我认为我可以有一个步骤将 CloudFormation 输出文件推送到 S3,以便 api 测试步骤可以访问它(或者只是将它作为 CloudFormation::Init 代码的一部分推送到 S3),但我希望我可以在 CodePipeline 步骤中配置更简单的东西(类似于 CloudFormation 中的 !ImportValue)。

我还认为我可以在 CloudFormation 步骤中分配一个“测试网址”,例如http://test.myapp.com,以便始终针对该特定网址运行 api 测试,这将是一个很好的选择,除了我在测试之前动态地启动测试环境(因为我不希望它总是运行的成本),而且我不确定在 api 测试开始运行时 DNS 是否会传播。

提前致谢

启动测试环境的 CodePipeline CloudFormation 操作的定义

...
Name: DeployApplicationInfra
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Version: 1
  Provider: CloudFormation
Configuration:
  ActionMode: CREATE_UPDATE
  Capabilities: CAPABILITY_IAM …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation aws-codepipeline

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

如何调试连接问题:从 VPC 中的 Lambda 函数连接到 SSM VPC 终端节点

我在 VPC 中有一个 lambda 函数,它应该能够通过 VPC 终端节点连接到 SSM。事实上,我已经在另一个 VPC(默认)中使用了此功能,但无法在我使用 CloudFormation 构建的新 VPC 中使用它。此外,我还可以通过同一 VPC 的 VPC 终端节点连接到 S3:

  • 部署 Lambda 的子网与 SSM VPC 终端节点关联。
  • VPC 终端节点与一个安全组关联,该安全组在端口 443 上接受来自应用程序层安全组(与 lambda 函数关联)的传入请求。
  • Lambda函数的应用层安全组有一个传出规则,允许其向任何地方广播 0.0.0.0/0
  • 子网的 NACL 允许所有传入和传出流量。
  • lambda函数的角色有权对所有资源执行所有SSM操作(只是排除iam权限的临时情况)

  • 我尝试过 console.log 调试,它显示 lambda 函数在尝试从 SSM 获取信息后超时。

  • 我尝试过使用流日志,但看不到任何连接,也看不到任何流入和流出 SSM 的数据。
  • 我比较了 2 个 VPC(其中一个可以工作,一个不能工作),我看不出规则有任何差异。

谁能建议我如何调试这个?

谢谢

amazon-web-services aws-vpc

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

2D阵列和指针 - C.

只是试图真正让我的头围绕C中的数组和指针以及它们之间的差异,并且在使用2d数组时遇到了一些麻烦.

对于普通的1D阵列,这是我所学到的:

char arr[] = "String constant";
Run Code Online (Sandbox Code Playgroud)

创建一个字符数组,变量arr将始终表示初始化时创建的内存.

char *arr = "String constant";
Run Code Online (Sandbox Code Playgroud)

创建一个指向char的指针,该指针当前指向char数组"String constant"的第一个索引.指针可以稍后指向其他地方.

char *point_arr[] = {
    "one", "two","three", "four"
};
Run Code Online (Sandbox Code Playgroud)

创建一个指针数组,然后指向char数组"one","two"等.

我的问题

如果我们可以同时使用:

char *arr = "constant";
Run Code Online (Sandbox Code Playgroud)

char arr[] = "constant";
Run Code Online (Sandbox Code Playgroud)

那为什么我不能用:

char **pointer_arr = {
    "one", "two", "three", "four"
};
Run Code Online (Sandbox Code Playgroud)

代替

char *pointer_arr[] = {
    "one", "two", "three", "four"
};
Run Code Online (Sandbox Code Playgroud)

如果我尝试这char **件事,那么我会得到一个错误,比如"标量初始化器中的多余元素".我可以char**通过使用专门分配内存来使示例工作calloc,但因为我没有必要这样做char *arr = "blah";.我不明白为什么它是必要的,所以我真的不明白它们之间的区别:

char **arr_pointer;
Run Code Online (Sandbox Code Playgroud)

char *arr_pointer[];
Run Code Online (Sandbox Code Playgroud)

非常感谢您的建议.

c arrays pointers

3
推荐指数
1
解决办法
1576
查看次数

为什么我不能通过PHP使用$ row ['price'+ $ i +'dollar']访问我的mysqli结果字段?

在我正在使用的数据库中,有6列名称:

price1dollar
price2dollar
price3dollar
price4dollar
price5dollar
price6dollar
Run Code Online (Sandbox Code Playgroud)

我认为,一旦我有了查询的结果集,我就可以像使用PHP一样访问它:

for($i = 1; $i <= 6; $i++) {
    echo $row['price'+$i+'dollar'].'<br />';
}
Run Code Online (Sandbox Code Playgroud)

这将打印出所有的值,但我没有打印任何东西.

如果我使用:

echo $row['price1dollar'];
Run Code Online (Sandbox Code Playgroud)

然后打印出来的价值很好.

我已经echo编了$i它的值,并打印出1至6美分,所以我不知道发生了什么.

$row['price'+$i+'dollar']语法是不允许的?

非常感谢

php

3
推荐指数
1
解决办法
76
查看次数

为什么打开的窗口有时打开一个新选项卡,有时打开一个弹出窗口?

向 Web 服务发出休息请求后,我想将用户重定向到 Web 服务返回的 url。

我正在使用window.open(url, "_blank");它,当我过去使用它时,只需打开一个新选项卡。但是,由于某种我无法深入了解的原因,我的重定向被视为弹出窗口。Chrome 实际上创建了一个单独的小窗口,而不是打开一个新选项卡。

对于为什么 chrome 决定创建一个单独的窗口而不是仅仅打开一个新选项卡的任何建议,我将不胜感激。

谢谢

javascript

3
推荐指数
1
解决办法
2461
查看次数

Webpack - 警告:尝试多次加载 angular。角JS

我用 webpack 构建了 3 个单独的 npm 模块。他们都依赖于 angular 因为我有这条线:

var angular = require('angular');
Run Code Online (Sandbox Code Playgroud)

在每个 npm 模块的 angular 模块定义中。

其中一个模块依赖于其他 2 个:

var angular = require('angular');
var ngModule = angular.module('topModule', [
    require('dependency1'),
    require('dependency2')
]);
Run Code Online (Sandbox Code Playgroud)

我相信我收到tried to load angular more than once错误的原因是 Angular 已包含在 webpack 构建的所有 3 个包中。

我知道我可以将 webpack 配置为将 angular 放在一个单独的文件中(例如 vendor.js),但我认为当我构建顶级文件时,它会看到 Angular 已经包含在其他 2 个模块中,并且不会t 再次添加它。

如何在所有模块中使用 `require('angular')',但在顶级模块中只包含一次?

angularjs webpack

3
推荐指数
1
解决办法
2273
查看次数

如果docker使用底层的linux操作系统,为什么要在Dockerfile的FROM行中指定操作系统

我在linux上看过,Docker使用底层的linux内核来创建容器.因此,这是一个优势,因为资源不会浪费在创建每个包含操作系统的虚拟机上.

但是,我很困惑,为什么大多数Dockerfiles在Dockerfile的FROM行中指定操作系统.我认为,因为它使用底层操作系统,所以不必定义操作系统.

我想知道如果指定的操作系统与运行它的机器的操作系统风格不匹配会发生什么.因此,如果机器是CentOS但Dockerfile FROM Debian:latest在第一行中,则是包含实际创建的Debian OS的虚拟机.

换句话说,这是否会导致性能下降,因为它需要创建包含指定操作系统的虚拟机?

linux docker dockerfile

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