我试图平息Tomcat 7开箱即用的大量日志记录.
对于每个请求,我都会获得这样的日志记录:
FINE: Security checking request POST /myurl
Aug 28, 2015 7:17:08 AM org.apache.catalina.authenticator.AuthenticatorBase invoke
FINE: Not subject to any constraint
Aug 28, 2015 7:17:08 AM org.apache.catalina.core.StandardWrapper allocate
FINER: Returning non-STM instance
Aug 28, 2015 7:17:08 AM org.apache.catalina.authenticator.AuthenticatorBase invoke
Run Code Online (Sandbox Code Playgroud)
我已将$ CATALINA_HOME/conf/logging.properties设置为此,但无济于事.
(我基本上采用了默认的日志记录属性,并将所有内容切换为信息.还添加了org.apache.catalina.level = INFO)
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.
FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
org.apache.catalina.level = INFO
1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = INFO
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost. …Run Code Online (Sandbox Code Playgroud) 这在任何语言中都应该是一项微不足道的任务.这不适用于Rust.
use std::collections::HashMap;
fn do_it(map: &mut HashMap<String, String>) {
for (key, value) in map {
println!("{} / {}", key, value);
map.remove(key);
}
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误:
error[E0382]: use of moved value: `*map`
--> src/main.rs:6:9
|
4 | for (key, value) in map {
| --- value moved here
5 | println!("{} / {}", key, value);
6 | map.remove(key);
| ^^^ value used here after move
|
= note: move occurs because `map` has type `&mut std::collections::HashMap<std::string::String, std::string::String>`, which does …Run Code Online (Sandbox Code Playgroud) 我有一个在docker容器中运行的第三方ui服务器,在端口8080上公开.
这似乎期待与绝对路径来加载资源:http://localhost:8080/index.html,http://localhost:8080/js/some_jsfiles
等等.
我想为它创建一个反向代理,所以看起来它来自不同的路径:
https://myserver.com/stormui/index.html, https://myserver.com/stormui/js/...
我先试过
location /stormui/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#rewrite ^/stormui/(.*) /$1 break;
proxy_pass http://127.0.0.1:8080/;
}
Run Code Online (Sandbox Code Playgroud)
index.html页面加载,但浏览器仍尝试加载引用的内容而没有附加路径,因此我在index.html引用的所有javascripts等上获得404.
然后我尝试使用referer来重写位置/ {
if ($http_referer ~ "^/stormui/.*") {
rewrite ^/(.*) /stormui/$1 break;
}
root /usr/share/nginx/html;
index index.html index.htm;
...
}
Run Code Online (Sandbox Code Playgroud)
这也行不通.有没有办法做到这一点?
我想创建一个dockerfile,它可以在图像启动时使用键空间和模式构建Cassandra映像.
在一般情况下,你如何创建一个Dockerfile,将建立包括一些步骤中不能真正直到容器完成正在运行,至少在第一时间内进行拍摄?
现在,我有两个步骤:从现有的cassandra Dockerfile构建cassandra映像,该文件将带有CQL模式文件的卷映射到临时目录,然后使用cqlsh运行docker exec以在映像启动后导入模式容器.
但这不会创建一个带有架构的图像 - 只是一个容器.该容器可以保存为图像,但这很麻烦.
docker run --name $CASSANDRA_NAME -d \
-h $CASSANDRA_NAME \
-v $CASSANDRA_DATA_DIR:/data \
-v $CASSANDRA_DIR/target:/tmp/schema \
tobert/cassandra:2.1.7
Run Code Online (Sandbox Code Playgroud)
然后
docker exec $CASSANDRA_NAME cqlsh -f /tmp/schema/create_keyspace.cql
docker exec $CASSANDRA_NAME cqlsh -f /tmp/schema/schema01.cql
# etc
Run Code Online (Sandbox Code Playgroud)
这有效,但它使得无法使用像Docker这样的工具,因为链接的容器/服务也将启动并期望架构到位.
我看到了一个企图在那里为试图在构建过程中Dockerfile后台启动,然后运行cqlsh卡桑德拉的过程,但我不认为工作太清楚了.
我正在尝试将自定义安全策略文件传递给surefire以运行一些测试.(具体来说,我在java.lang中添加类来测试分析器,我希望在那里定义类的权限.)
我不确定我的问题是关于安全策略,还是我正在传递给确定的args.
按照Maven的文档在这里,我有这样的插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<argLine>-Djava.security.manager -Djava.security.policy==java.policy</argLine>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我尝试过file://文件路径和其他变体.
注意在==对语法-Djava.security.policy==java.policy是正确的,根据此Oracle文档
如果你使用
java -Djava.security.manager -Djava.security.policy == someURL SomeApp(注意双等号)然后只使用指定的策略文件; 安全属性文件中指示的所有内容都将被忽略.
这是我的安全策略文件:
grant codeBase "file:${{java.ext.dirs}}/*" {
permission java.security.AllPermission;
};
grant {
permission java.lang.RuntimePermission "defineClassInPackage.java.lang";
permission java.security.AllPermission;
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};
Run Code Online (Sandbox Code Playgroud)
如果我没有指定策略args,我会得到一个AccessControlError尝试在java.lang中定义一个类,如预期的那样.
如果我添加策略args,就好像我清除了所有授权策略,测试在访问文件时失败 - 我想它在尝试的第一个访问控制上失败了:
java.security.AccessControlException: access denied ("java.io.FilePermission" "/Users/me/myproj/target/surefire/surefire_03237249516701375492tmp" "read")
更新:我尝试使用没有maven/surefire的简单主类,但我仍然遇到此错误.我认为java.*可能会忽略安全策略,因为在SecureClassLoader中有一些代码:
if ((name != null) && name.startsWith("java.")) {
throw new SecurityException
("Prohibited package name: " +
name.substring(0, name.lastIndexOf('.')));
} …Run Code Online (Sandbox Code Playgroud) 简单地说,我有一个cql脚本,我想通过cassandra提交到集群Session,而不必通过cqlsh.
我查看了他们的API,我没有看到任何内容可以用于CQL脚本,或者是一种将脚本解析为Statement可以输入cassandra的s 的方法Session.
我想我可以编写一些自己解析脚本的东西,但肯定必须存在于datastax代码中的某个地方.
我在OS X上运行docker-machine,它在我的家庭wifi网络(wifi-one)上工作得很好.
在另一个wifi网络(WIFI-二),我无法访问默认的机器,无论是通过搬运工机或坪.我已经尝试删除所有的docker和虚拟盒软件和缓存,并在连接wifi-two时重新安装,但无济于事.
docker-machine在虚拟盒中使用一个小vm,它使用仅主机的vbox网络(vboxnet0)在主机和vm之间进行通信.
在wifi-one上,我可以将网关ping到vboxnet0(192.168.99.1),我可以ping vm(192.168.99.100).在路由表中,我可以使用正确的界面查看到vm的路由:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default dlinkrouter UGSc 60 2 en0
...
dlinkrouter c0:a0:bb:xx:xx:xx UHLWIir 66 155 en0 1180
192.168.99 link#10 UC 2 0 vboxnet
192.168.99.100 8:0:27:db:16:21 UHLWIi 2 42 vboxnet 1109
...
Run Code Online (Sandbox Code Playgroud)
在wifi-two上,我可以ping vboxnet0网关,但不能ping vm.Ping报告请求超时,但是docker-machine报告"没有到主机的路由".路由表连接到wifi-two时,显示到wifi接口(en0)上vboxnet0仅主机网络的路由,而不是vboxnet0接口.同样好奇的是默认路由是到vboxnet0网关的路由,但路由表中没有wifi路由器的标志.尽管如此,互联网连接在wifi-two上运行良好.
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.99.1 UGSc 46 0 en0
...
192.168.99 link#4 UCS 9 0 en0
192.168.99.1/32 link#4 UCS 2 0 en0
192.168.99.1 dc:9f:db:2b:89:39 UHLWIir 46 61 en0 1197
192.168.99.100 …Run Code Online (Sandbox Code Playgroud) 我有一张大致相似的桌子
create table mytable (
id uuid,
something text,
primary key (id)
);
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个具有绑定in子句的预准备语句:
PreparedStatement ps = session.prepare("select * from mytable where id IN (?)");
...
UUID[] ids = { uuid1, uuid2, uuid3} ;
Run Code Online (Sandbox Code Playgroud)
无论我如何表达要绑定的id,java驱动程序都会拒绝它们.
ps.bind( /*as array*/):driver complains语句只有一个值,2提供
ps.bind( /*as comma separated string list of uuids*/):驱动程序抱怨它想要UUID.class对象,而不是字符串
ps.bind( /*as list object*/):驱动程序抱怨它想要UUID.class objs,而不是List.class对象
我真的希望司机不要期待那么多?占位符因为列表中有值,因为这意味着每次要执行它时都必须重新编写语句,Datastax文档说不要这样做!
我查看了这个com.datastax.driver.core.BoundStatement.bind()方法,并没有迹象表明其他任何东西都可行 - 没有魔术包装或任何东西.
有没有办法做到这一点?
我有一个小小部件,我想在一个页面上反复使用.它有自己的控制器.问题是它需要一个数据来操作(基本上是一个键),每个键都包含在父控制器中.
这是一个例子(显然是错误的)
http://plnkr.co/edit/VajgOr1LqpLDnbEJcvor?p=preview
脚本:
angular.module('myApp', [])
.controller('ParentCtrl', ['$scope',
function($scope) {
$scope.keyForChartABC = "somekey1";
$scope.keyForChartXYZ = "somekey2";
$scope.keyForChartLALA = "somekey3";
}
])
.controller('ChartCtrl', ['$scope',
function($scope) {
//todo: have $scope.key assigned from parent somehow
//not shown: use $scope.key to pull data and format chart data
}
])
Run Code Online (Sandbox Code Playgroud)
指数:
<!-- ng-init like this is quite wrong -->
<div ng-init="key = keyForChartABC"
ng-include="'chartwidget.html'"></div>
<hr>
<div ng-init="key = keyForChartXYZ"
ng-include="'chartwidget.html'"></div>
<hr>
<div ng-init="key = keyForChartLALA"
ng-include="'chartwidget.html'"></div>
Run Code Online (Sandbox Code Playgroud)
chartwidget:
<div ng-controller="ChartCtrl">
<p>Drawing chart for data: {{key}}</p>
<p>some …Run Code Online (Sandbox Code Playgroud) 我想从文件中读取键值对,而忽略注释行.
想象一个文件,如:
key1=value1
#ignore me!
Run Code Online (Sandbox Code Playgroud)
我想出了这个,
a)看起来非常笨重
b)如果'='没有被空格包围,它就不起作用.lineStream未正确拆分,整行被读入"key".
std::ifstream infile(configFile);
std::string line;
std::map<std::string, std::string> properties;
while (getline(infile, line)) {
//todo: trim start of line
if (line.length() > 0 && line[0] != '#') {
std::istringstream lineStream(line);
std::string key, value;
char delim;
if ((lineStream >> key >> delim >> value) && (delim == '=')) {
properties[key] = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
另外,欢迎评论我的代码风格:)
java ×4
cassandra ×3
cql ×2
docker ×2
angularjs ×1
c++ ×1
cql3 ×1
data-binding ×1
datastax ×1
hashmap ×1
iteration ×1
javascript ×1
maven ×1
mutability ×1
networking ×1
nginx ×1
parsing ×1
proxy ×1
routing ×1
rust ×1
security ×1
surefire ×1
tomcat ×1
virtualbox ×1