小编Chr*_*now的帖子

getopts检查互斥参数

我有一个简单的脚本(下面),它具有互斥的参数.

./scriptname.sh -m|-d [-n]但是,脚本的参数应该是用户可以运行./scriptname.sh -m -d错误的脚本.

问题:如何强制用户只提供了一个互斥参数?

#!/bin/sh

usage() {
   cat <<EOF
Usage: $0 -m|-d [-n]
where:
    -m create minimal box
    -d create desktop box
    -n perform headless build
EOF
   exit 0
}

headless=
buildtype=

while getopts 'mdnh' flag; do
  case "$flag" in
    m) buildtype='minimal' ;;
    d) buildtype='desktop' ;;
    n) headless=1 ;;
    h) usage ;;
    \?) usage ;;
    *) usage ;;
  esac
done

[ -n "$buildtype" ] && usage
Run Code Online (Sandbox Code Playgroud)

bash getopts

8
推荐指数
1
解决办法
6502
查看次数

如何确定 pip3 在何处安装非用户安装的二进制文件/脚本?

我可以pip3 install --user mypackage使用以下命令确定 pip 安装包二进制文件/脚本的位置:

$(python3 -m site --user-base)/bin
Run Code Online (Sandbox Code Playgroud)

是否有一种机制可以确定非用户二进制文件/脚本的安装位置(例如pip3 install mypackage)?

请注意,我只对二进制文件/脚本的安装位置感兴趣,而不是库代码的安装位置感兴趣。

更新:

目标是确保 PATH 环境变量包含安装二进制文件/脚本的文件夹,因为这在过去给我带来了一些问题。

更新2:

$ python3 -c "import sysconfig; print(sysconfig.get_path('scripts'))"
/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/bin

$ python3 -c "from pip._internal.locations import bin_py; print(bin_py)"
/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/bin
Run Code Online (Sandbox Code Playgroud)

但是,pip3 安装到/usr/local/bin

注意:

$ which pip3
/usr/local/bin/pip3
$ which python3
/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)

pip python-3.x

8
推荐指数
2
解决办法
3283
查看次数

WSO2身份服务器api

我正在设计一个需要身份管理功能的新应用程序(即管理用户帐户和角色).我想将该功能委托给Identity Server.

  1. 是否有WSO2 Identity Server公开的REST或SOAP API用于管理用户帐户(例如类似于OpenAM的REST api)?

我确实找到了WSO2 AuthenticationAdmin wsdl https://localhost:9443/services/AuthenticationAdmin?wsdl但没有用户帐户管理功能.

  1. 是否有WSO2平台公开的所有wsdl的授权列表?到目前为止,我通过在谷歌搜索找到了AuthenticationAdmin wsdl和EventBrokerService wsdl.

wso2 wso2is

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

流浪的公共网络可以ping,但无法从apache服务器获得响应

我使用下面给出的Vagrantfile设置为virtualbox配置了vagrant.我可以从主机(HM)连接到虚拟机上运行的Web服务器.

我也可以从网络机器ping服务器,但当我尝试从网络访问Web服务器时,虚拟机(VM)获取请求并说它响应(apache),但网络机器(NM)没有得到回应.

如何配置vagrant或virtualbox从NM访问?我尝试在VM接口文件上将eth1更改为eth0,但它没有用.Vagrant无法放松机器.

提前致谢

Vagrantfile:

config.vm.define "web" do |web|
  web.vm.box = "raring"
  web.vm.network "public_network", ip: "192.168.0.53", bridge: 'eth0'
  web.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--memory", 1024]
  end
end
Run Code Online (Sandbox Code Playgroud)

主机界面

eth0      Link encap:Ethernet  HWaddr 54:04:a6:68:7d:85  
      inet addr:192.168.0.102  Bcast:255.255.255.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:576  Metric:1
      RX packets:142100 errors:0 dropped:0 overruns:0 frame:0
      TX packets:110704 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:61653460 (61.6 MB)  TX bytes:14976111 (14.9 MB)
      Interrupt:55 Base address:0xa000 
Run Code Online (Sandbox Code Playgroud)

虚拟机界面

eth0      Link encap:Ethernet  HWaddr 08:00:27:49:4c:f1  
      inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0 …
Run Code Online (Sandbox Code Playgroud)

virtualbox vagrant

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

Scala,使用两个值组合函数

def adder(a:Int,b:Int):Int = {a+b}
def doubler(a:Int):Int = {a*2}
def doubleAdd = doubler _ compose adder
Run Code Online (Sandbox Code Playgroud)

我收到错误:找到类型不匹配:(Int,Int)=> Int required:?=> Int

然后,如果我只是尝试doubleAdd = doubler(adder _)我得到相同的错误,除了需要Int而不是?=> Int

有没有办法用两个参数组成一个函数?对不起,如果这是非常基本的,我对这门语言很新,我找不到任何地方有两个参数的例子.

scala

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

如何在spark-shell/pyspark中打印出RDD的片段?

在spark-shell中工作时,我经常想检查RDD(类似于head在unix中使用).

例如:

scala> val readmeFile = sc.textFile("input/tmp/README.md")
scala> // how to inspect the readmeFile?
Run Code Online (Sandbox Code Playgroud)

和......

scala> val linesContainingSpark = readmeFile.filter(line => line.contains("Spark"))
scala> // how to inspect linesContainingSpark?
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

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

sockaddr中sa_data字段的用途是什么?

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
Run Code Online (Sandbox Code Playgroud)

为addr参数传递的实际结构将取决于地址族.sockaddr结构定义为:

struct sockaddr {
    sa_family_t sa_family;
    char        sa_data[14];
}
Run Code Online (Sandbox Code Playgroud)

因此,对于IPv4地址(AF_INET),将传递的实际结构如下:

/* Source http://linux.die.net/man/7/ip */

struct sockaddr_in {
    sa_family_t    sin_family; /* address family: AF_INET */
    in_port_t      sin_port;   /* port in network byte order */
    struct in_addr sin_addr;   /* internet address */
};

/* Internet address. */
struct in_addr {
    uint32_t       s_addr;     /* address in network byte order */
};
Run Code Online (Sandbox Code Playgroud)

绑定代码是否读取sockaddr.sa_family值并根据它找到的值,然后将sockaddr结构转换为适当的结构,例如sockaddr_in

为什么sa_data设置为14个字符?如果我理解正确,那么该sa_data字段只是一个具有足够大的内存空间以适合所有地址族类型的字段?据推测,原始设计师预计14个字符的宽度足以适合所有未来类型.

c sockets struct network-programming bind

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

CF连接到云控制器

我使用以下lib连接到云控制器

https://github.com/prosociallearnEU/cf-nodejs-client

const endpoint = "https://api.mycompany.com/";
const username = "myuser";
const password = "mypass";

const CloudController = new (require("cf-client")).CloudController(endpoint);
const UsersUAA = new (require("cf-client")).UsersUAA;
const Apps = new (require("cf-client")).Apps(endpoint);

CloudController.getInfo().then((result) => {
    UsersUAA.setEndPoint(result.authorization_endpoint);
    return UsersUAA.login(username, password);
}).then((result) => {
    Apps.setToken(result);
    return Apps.getApps();
}).then((result) => {
    console.log(result);
}).catch((reason) => {
    console.error("Error: " + reason);
});
Run Code Online (Sandbox Code Playgroud)
  1. 我尝试针对我们的API运行它并且它无法工作,我在控制台中没有收到任何错误消息,它可以是什么?

  2. 这里处理空间/组织的位置是什么?因为当我从cli连接时它问我要连接哪个空间/组织...

我能够通过CLI登录,只是从代码我不能,任何想法在这里缺少什么?

我运行它时的问题我没有得到任何错误,可以帮助理解什么是根本原因

javascript node.js cloud-foundry pivotal-cloud-foundry ibm-cloud

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

python buildpack - 致命错误:sasl/sasl.h:没有这样的文件或目录

我在我的Bluemix应用程序中安装sasl时出现以下错误:

       Installing collected packages: sasl, thrift-sasl
         Running setup.py install for sasl: started
           Running setup.py install for sasl: finished with status 'error'
           Command "/app/.heroku/python/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9mi8225r/sasl/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-3l4o04ga-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-9mi8225r/sasl/
           running install
           running build_py
           creating build
           creating build/lib.linux-x86_64-3.5
           creating build/lib.linux-x86_64-3.5/sasl
           copying sasl/__init__.py -> build/lib.linux-x86_64-3.5/sasl
           running egg_info
           writing dependency_links to sasl.egg-info/dependency_links.txt
           writing top-level names to sasl.egg-info/top_level.txt
           warning: manifest_maker: standard file '-c' not found

           reading manifest file …
Run Code Online (Sandbox Code Playgroud)

python cloud-foundry buildpack ibm-cloud

7
推荐指数
2
解决办法
8976
查看次数

socat - 如何侦听非 ssl TCP 并转发到 ssl TCP 端点?

我看过一个使用 socat 接受 ssl TCP 流量并将流量转发到非 ssl 主机的例子:

socat TCP-LISTEN:443,reuseaddr,fork "^OPENSSL-SERVER,cert=server.pem | TCP:somehost:80"
Run Code Online (Sandbox Code Playgroud)

有可能做相反的事情吗?即我有一个启用了 ssl 的远程主机并且需要一个客户端证书,但我的客户端只能通过非 ssl 连接进行连接。

我了解这种方法的安全含义。

ssl tcp socat

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