我想从匹配正则表达式模式的字符串中提取子字符串.
所以我正在寻找这样的东西:
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
???
}
Run Code Online (Sandbox Code Playgroud)
所以这就是我所拥有的:
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
var regex = NSRegularExpression(pattern: regex,
options: nil, error: nil)
var results = regex.matchesInString(text,
options: nil, range: NSMakeRange(0, countElements(text)))
as Array<NSTextCheckingResult>
/// ???
return ...
}
Run Code Online (Sandbox Code Playgroud)
问题是,这matchesInString提供了我的一个数组NSTextCheckingResult,其中NSTextCheckingResult.range的类型的NSRange.
NSRange是不相容的Range<String.Index>,所以它阻止我使用text.substringWithRange(...)
有没有想过如何在没有太多代码的情况下在swift中实现这个简单的事情?
我想将Nginx设置为https服务的反向代理,因为我们有一个特殊的用例,我们需要"取消https"连接:
http://nginx_server:8080/myserver ==> https://mysecureservice
但是会发生的是实际的https服务没有被代理.Nginx会将我重定向到实际服务,因此浏览器中的URL会发生变化.我想与Nginx进行交互,因为它是实际的服务,只是没有https.
这就是我所拥有的:
server {
listen 0.0.0.0:8080 default_server;
location /myserver {
proxy_pass https://myserver/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
Run Code Online (Sandbox Code Playgroud) 我有大量现有的package-lock.json依赖项,已通过http://registry.npmjs.org/解决。
例如
{
"name": "my-package",
"version": "1.2.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/cli": {
"version": "7.7.4",
"resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.7.4.tgz",
"integrity": "sha512-O7mmzaWdm+VabWQmxuM8hqNrWGGihN83KfhPUzp2lAW4kzIMwBxujXkZbD4fMwKMYY9FXTbDvXsJqU+5XHXi4A==",
"dev": true,
"requires": {
"chokidar": "^2.1.8",
"commander": "^4.0.1",
"convert-source-map": "^1.1.0",
"fs-readdir-recursive": "^1.1.0",
"glob": "^7.0.0",
"lodash": "^4.17.13",
"make-dir": "^2.1.0",
"slash": "^2.0.0",
"source-map": "^0.5.0"
},
"dependencies": {
"commander": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz",
"integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==",
"dev": true
},
"make-dir": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"requires": {
"pify": "^4.0.1",
"semver": "^5.6.0"
}
},
"pify": …Run Code Online (Sandbox Code Playgroud) 我想通过HTTPS连接到Node.js作为客户端的内部企业服务器.如何将我的内部根证书安装到Node.js,以便证书验证成功?
我不想禁用证书验证.
编辑:更准确一点.
我想为我们团队创建的Github API包装器扩展测试用例.对于测试,我们不希望直接使用API包装器扩展,因此我们希望将其功能存根.所有对API包装器的调用都应该被删除以进行测试,而不仅仅是创建克隆存根.
我在Node.js中有一个模块"github":
module.exports = function(args, done) {
...
}
Run Code Online (Sandbox Code Playgroud)
而我要求这样:
var github = require('../services/github');
Run Code Online (Sandbox Code Playgroud)
现在,我想github(...)使用Sinon.js 存根:
var stub_github = sinon.stub(???, "github", function (args, callback) {
console.log("the github(...) call was stubbed out!!");
});
Run Code Online (Sandbox Code Playgroud)
但是sinon.stub(...)我希望传递一个对象和一个方法,并且不允许我存根一个函数模块.
有任何想法吗?
我试图了解(v5)包和之间的区别,BrowserRouter以及Router对react-router-dom下面的示例有什么区别。
该文件说:
BrowserRouter A,使用HTML5历史记录API(pushState,replaceState和popstate事件)使UI与URL保持同步。
来源:https : //reacttraining.com/react-router/web/api/BrowserRouter
路由器 所有路由器组件的通用底层接口。通常,应用将使用高级路由器之一代替:BrowserRouter,HashRouter,MemoryRouter,NativeRouter,StaticRouter
来源:https : //reacttraining.com/react-router/web/api/Router
据我了解,我应该为HTML5浏览器应用程序使用BrowserRouter,到目前为止,我一直在这样做。
history.push(...)示例:
我正在尝试history.push('/myNewRoute')在一个大块内执行一个:
import history as './history';
...
export function someAsyncAction(input) {
return dispatch => {
fetch(`${API_URL}/someUrl`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({ input }),
}).then(() => {
history.push('/myNewRoute');
}).catch((err) => {
dispatch(setError(err));
})
};
};
Run Code Online (Sandbox Code Playgroud)
history 定义为此模块:
import { createBrowserHistory } from 'history';
export default createBrowserHistory();
Run Code Online (Sandbox Code Playgroud)
并且history还将传递到我的路由器: …
html5-history reactjs react-router react-thunk react-router-dom
我有一大组 POJO 类(100 多个),我想将它们转换为 Java 记录。我想自动化这个过程。
我使用的是 Java 18 (Amazon Coretto JDK) 和 IntelliJ 2022.1.4(终极版):Build #IU-221.6008.13, built on July 18, 2022
coretto-18被配置为模块的默认VM。
我遵循了 IntelliJ 文档(https://www.jetbrains.com/idea/guide/tips/convert-to-record/),但上下文操作不会显示选项“转换为记录”(预期) 。
我正在使用Node 6.9生成一个子进程。
const child = require('child_process').execFile('command', args);
child.stdout.on('data', (data) => {
console.log('child:', data);
});
child.stderr.on('data', (data) => {
console.log('child:', data);
});
child.on('close', (code, signal) => {
console.log(`ERROR: child terminated. Exit code: ${code}, signal: ${signal}`);
});
Run Code Online (Sandbox Code Playgroud)
我的子进程运行了大约1m 30s,但是随后从Node.js程序中获得了以下输出:
ERROR: child terminated. Exit code: null, signal: SIGTERM
Run Code Online (Sandbox Code Playgroud)
什么终止了我的孩子进程,为什么?
编辑: 我添加了killSignal:'SIGILL'作为选项。
var child = require('child_process').execFile('geth', args, { killSignal: 'SIGILL'});
Run Code Online (Sandbox Code Playgroud)
现在,我得到了:
ERROR: go-ethereum terminated. Exit code: 2, signal: null
Run Code Online (Sandbox Code Playgroud) 我是Kubernetes网络的新手.
我们已经分开的Kubernetes簇成一组命名空间(例如namespace-a,namespace-b).每个命名空间都有一组Kubernetes pod.每个pod都有一个可用的服务my-svc.namespace-x.svc.cluster.local.
现在,我们要防止的命名空间的豆荚namespace-a的服务,或者是部分荚交谈namespace-b和反之亦然.命名空间内的通信应该不受限制.
这是我在网络政策文档中作为示例找到的:https: //kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
Run Code Online (Sandbox Code Playgroud)
据我了解,这可以完全阻止网络通信,对于命名空间中的所有pod.
我有一个多租户集群,其中通过命名空间实现多租户。每个租户都有自己的命名空间。来自租户的 Pod 无法与其他租户的 Pod 通信。但是,每个租户中的某些 Pod 必须使用 Ingress 向 Internet 公开服务。
这是我走了多远(我正在使用 Calico):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: tenant1-isolate-namespace
namespace: tenant1
spec:
policyTypes:
- Ingress
podSelector: {} # Select all pods in this namespace
ingress:
- from:
- namespaceSelector:
matchLabels:
name: tenant1 # white list current namespace
Run Code Online (Sandbox Code Playgroud)
为每个命名空间 ( tenant1, tenant2, ... )部署,这限制了其命名空间内 pod 之间的通信。但是,这会阻止kube-system命名空间中的 Pod 与此命名空间中的 Pod 通信。
但是,kube-system默认情况下命名空间没有任何标签,因此我不能专门将此命名空间列入白名单。
我通过手动给它一个标签找到了解决这个问题的(肮脏的)解决方法:
kubectl label namespace/kube-system permission=talk-to-all
Run Code Online (Sandbox Code Playgroud)
并将白名单规则添加到网络策略中:
...
- from:
- namespaceSelector:
matchLabels:
permission: …Run Code Online (Sandbox Code Playgroud) node.js ×4
https ×2
kubernetes ×2
ssl ×2
certificate ×1
ios ×1
java-record ×1
javascript ×1
linux ×1
networking ×1
nginx ×1
npm ×1
npm-registry ×1
proxy ×1
react-router ×1
react-thunk ×1
reactjs ×1
regex ×1
sinon ×1
string ×1
swift ×1