在Perl中,我一直对如何从数组条目中干净地分配多个局部变量感到困惑.
我总是在subs中使用以下语法,所以我对它有些熟悉:
my ($var1, $var2) = @_
Run Code Online (Sandbox Code Playgroud)
但其他的变化让我感到困惑.例如,我有以下代码可行:
for my $ctr (0 .. $#matchingLines) {
my $lineNo = $matchingLines[$ctr][0];
my $text = $matchingLines[$ctr][1];
Run Code Online (Sandbox Code Playgroud)
其中" @matchingLines"是两元素数组的数组.
我希望我能将最后两行转换为显而易见的:
my ($lineNo, $text) = $matchingLines[$ctr];
Run Code Online (Sandbox Code Playgroud)
那当然不行.我尝试了很多变化,但我发现任何有效的东西.
上周五早上,我在我的 CentOS 笔记本电脑上尝试了“yum update”,它报告了以下内容:
Loaded plugins: fastestmirror, langpacks, verify
Loading mirror speeds from cached hostfile
* base: repo1.dal.innoscale.net
* epel: fedora-epel.mirror.lstn.net
* extras: mirror.unl.edu
* nux-dextop: mirror.li.nux.ro
* rpmfusion-free-updates: mirror.us.leaseweb.net
* updates: mirror.spro.net
Resolving Dependencies
--> Running transaction check
---> Package nss-softokn-freebl.i686 0:3.16.2.3-13.el7_1 will be updated
---> Package nss-softokn-freebl.i686 0:3.16.2.3-14.2.el7_2 will be an update
---> Package python-ecdsa.noarch 0:0.11-3.el7.centos will be obsoleted
---> Package python2-ecdsa.noarch 0:0.13-4.el7 will be obsoleting
---> Package tzdata.noarch 0:2016c-1.el7 will be updated
---> Package tzdata.noarch 0:2016d-1.el7 will …Run Code Online (Sandbox Code Playgroud) 在我的 CentOS 7.2 机器上,使用 Docker 1.10.3,我成功测试了以下内容(以 root 身份运行):
docker run --name usljavadoc_server -p 80:80 -p 443:443 -v /opt/app/uslJavadoc/:/var/www/html/ -d eboraas/apache
Run Code Online (Sandbox Code Playgroud)
自动部署到“/opt/app/uslJavadoc”的内容可通过容器中运行的 apache 提供。
所以,我的下一步是让它与 systemd 一起工作,所以我创建了“/etc/systemd/system/docker-usljavadoc.service”,内容如下:
[Unit]
Description=Apache serving USL Javadoc
Requires=docker.service
After=docker.service
[Service]
TimeoutStartSec=0
Restart=always
ExecStart=/usr/bin/docker run --name usljavadoc_server -p 80:80 -p 443:443 -v /opt/app/uslJavadoc/:/var/www/html/ -d eboraas/apache
ExecStop=/usr/bin/docker stop -t 2 usljavadoc_server
ExecStopPost=/usr/bin/docker rm -f usljavadoc_server
[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)
我手动重新加载systemd并启动服务。我验证了另一个机器上的浏览器可以访问 apache 进程并获取正确提供的内容。然后我重新启动以确保它在重新启动后正常工作。仍然工作。
所以,我以为我已经完成了。然而,当我仔细观察时发现,服务成功启动,但启动后立即退出,然后重新启动。这种情况正在持续发生。由于它只是提供纯 html 内容(javadoc 树),并且服务会立即重新启动,因此用户可能甚至没有注意到存在问题,但绝对不应该这样做。
有什么想法为什么这个“docker run”在 shell 中运行良好,并且似乎从 systemd 启动良好,但几秒钟后立即退出?
在最新的 Camunda 文档页面中,我注意到在讨论任务侦听器与活动侦听器的部分中存在一些令人困惑的信息:https ://docs.camunda.org/manual/latest/user-guide/process-applications/process -应用程序事件监听器/。
\n\n例如,本节有以下文本(我将两个单词加粗):
\n\n\n\n\n发票进程有一个名为 \xe2\x80\x9carchive Invoice\xe2\x80\x9d 的任务。应用程序 \xe2\x80\x9cinvoice.war\xe2\x80\x9d 进一步提供了一个实现 ExecutionListener 接口的 Java 类,并配置为每当在 \xe2\x80\x9carchive Invoice\xe2\x80 上触发 END 事件时调用\x9d活动。
\n
我知道给抽象术语命名充满了困难,但看起来本文并不清楚什么是“任务”与“活动”。
\n我正在开发一个小型webapp,通常使用相对复杂的流程构建,然后部署到WebLogic.
但是,我正在使用的部分是使用AngularJS,并且都是HTML和Javascript.它通常会将ajax调用到同一域上的另一个webapp.为了缩短我的开发周期,我想避免构建过程并重新加载浏览器页面.
我想我可以用"node express"做到这一点,但细节让我感到厌烦.我设法定义了一个非常简单的应用程序,只提供本地文件,但现在我必须弄清楚如何检测这些路径中的一些匹配表达式,并将这些请求重新路由到外部域的请求.
因此,如果它收到"/diag/stuff.html","/ foo/thing.html"或"/index.html"的请求,它将发回匹配相同路径的文件.但是,如果路径匹配"/fooService/.*",那么我必须将响应从GET发送回相同的路径,但是在不同的主机和端口上.
到目前为止,这是我的琐碎应用程序:
var express = require('express');
var app = express();
app.use("/", express.static(__dirname));
app.listen(8000);
Run Code Online (Sandbox Code Playgroud)
更新:
我喜欢代理的想法,所以我做了一个本地安装的"http-proxy"(我忘记并首先进行全局安装)然后将脚本更改为:
var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var proxy = new httpProxy.RoutingProxy();
app.use("/", express.static(__dirname));
app.get('/FooService/*', function(req, res) {
"use strict";
return proxy.proxyRequest(req, res, {
host: "foohost.net",
port: 80
});
});
app.listen(8000);
Run Code Online (Sandbox Code Playgroud)
这失败了:
<path>\server.js:4
var proxy = new httpProxy.RoutingProxy();
^
TypeError: undefined is not a function
at Object.<anonymous> (<path>\server.js:4:13)
Run Code Online (Sandbox Code Playgroud)
这可能有什么问题?
更新:
在"require"之后看到"console.log(httpProxy)"的内容会有用吗?:
function ProxyServer(options) {
EE3.call(this); …Run Code Online (Sandbox Code Playgroud) 我正在使用一个json文档,其中属性键是文件名,而值是那些文件的预期内容,其中文件主要是Java属性文件。
我正在编写一个生成修改后的json的Bash脚本,其中的更改是json属性之一的内容的单个“行”中的文本。这实际上是在更改嵌入式Java属性文件中单个属性的值。
如果重要的话,json文档是一个kubernetes configmap,但这与我遇到的问题无关。
该过程本质上是这样的:
augfile=$(cat $outfile | sed -e "s/${property}[ ]*=.*$/${property}=${newValue}/")
kubectl get configmap $configmap -o json | jq ".data[\"$filename\"] = \"$augfile\"" | kubectl replace $configmap -f -
Run Code Online (Sandbox Code Playgroud)
我在输出中看到的是:
+ kubectlidp dev2 get configmap onemapms-green-configs -o json
+ jq '.data["application.properties"] = "...
...
listprop =\
abc=def,\
ghi=jkl,\
mno=pqr
..."'
+ kubectl replace <configmapname> -f -
jq: error: Invalid escape at line 2, column 1 (while parsing '"\
"') at <top-level>, line 129:
listprop =\
Run Code Online (Sandbox Code Playgroud)
显然,我必须修改指定“ $ augfile”值的方式,但是我对那里的引号不知所措。
我有一些脚本将“kubectl ... -o json”通过管道传输到“jq”。我已经将其中的许多事件转换为使用 kubectl 的“jsonpath”参数,这样我就可以跳过 jq 步骤。
由于标点符号问题,我无法转换其中一组。原来的行看起来像这样:
kubectl ... -o json | jq -r '.data["application.properties"]'
Run Code Online (Sandbox Code Playgroud)
在 json 中,有一个“数据”映射,其键的名称中可以包含句点,因此我必须将其索引为数组,并以名称作为键。使用 jq 效果很好。
将其简单地转换为 jsonpath 看起来像这样:
kubectl ... -o=jsonpath="{.data["application.properties"]}"
Run Code Online (Sandbox Code Playgroud)
这失败了:
error: error parsing jsonpath {.data[application.properties]}, invalid array index application.properties
Run Code Online (Sandbox Code Playgroud)
这似乎不是一个引用问题,因为它清楚地检测到我尝试的数组索引是什么,它只是不允许我使用它。
有没有办法完全用 jsonpath 来做到这一点?
我正在逐步完成"专业Android 4应用程序开发"中的教程.在第5章中,有一个简单的应用程序,演示了如何选择联系人并打印结果.
在我进入应用程序并进行测试后,我收到以下错误:
10-06 11:29:04.596:W/ContentResolver(1073):无法获取类型:content:// contacts /(URI:content:// contacts /,调用用户:android.uid.system:1000,调用包是以下之一:[com.android.keychain,com.android.settings,android,com.android.providers.settings,com.android.inputdevices])
此字符串在以下方法中引用:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_picker_tester);
Button button = (Button) findViewById(R.id.pick_contact_button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts/"));
startActivityForResult(intent, PICK_CONTACT);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我想也许我做错了什么,所以我从Book源代码中运行了相应的例子并得到了同样的错误.任何想法在这里可能是错的?
我有这个文件:
Line1.
Line2.
Line3.
Line4.
Run Code Online (Sandbox Code Playgroud)
我想从第二行(Line2)开始阅读,直到文件结束.我怎么能用Java做到这一点?