我使用以下命令"docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel"安装了TensorFlow,我需要在Windows机器上设置TensorFlow服务.我按照" https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/setup.md "中的说明进行操作,并在安装TensorFlow服务依赖项时运行下面提到的sudo命令:
docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
Run Code Online (Sandbox Code Playgroud)
显示以下错误:
sudo apt-get update && sudo apt-get install -y \
build-essential \
curl \
git \
libfreetype6-dev \
libpng12-dev \
libzmq3-dev \
pkg-config \
python-dev \
python-numpy \
python-pip \
software-properties-common \
swig \
zip \
zlib1g-dev
Run Code Online (Sandbox Code Playgroud) 我们有一个非常昂贵的计算,我们想缓存.所以我们做类似的事情:
my $result = $cache->get( $key );
unless ($result) {
$result = calculate( $key );
$cache->set( $key, $result, '10 minutes' );
}
return $result;
Run Code Online (Sandbox Code Playgroud)
现在,在calculate($key)
我们将结果存储到缓存之前,其他几个请求进入,也开始运行calculate($key)
,并且系统性能受到影响,因为许多进程都计算相同的事情.
想法:让我们在缓存中放置一个正在计算值的标志,因此其他请求只是等待那个计算完成,所以他们都使用它.就像是:
my $result = $cache->get( $key );
if ($result) {
while ($result =~ /Wait, \d+ is running calculate../) {
sleep 0.5;
$result = $cache->get( $key );
}
} else {
$cache->set( $key, "Wait, $$ is running calculate()", '10 minutes' );
$result = calculate( $key );
$cache->set( $key, $result, '10 minutes' ); …
Run Code Online (Sandbox Code Playgroud) 在debian的默认apache2配置中,/etc/apache2/sites-enabled/000-default
包含许多默认VirtualHost的设置:
<VirtualHost *:80>
# Many good settings here, among them:
CustomLog ${APACHE_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在另一个配置文件中,我想覆盖它们中的一个,即CustomLog
设置,以便日志转到其他地方.我不想复制或搞乱所有其他设置,例如ScriptAlias
.但我仍然希望它适用于<VirtualHost *:80>
.
那可能吗?
我试过这个
/etc/apache2/sites-enabled/001-mylog
:
<VirtualHost *:80>
CustomLog ${APACHE_LOG_DIR}/my.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这没有任何影响,大概是因为apache只查看第一<VirtualHost>
部分,然后/etc/apache2/sites-enabled/000-default
才加载/etc/apache2/sites-enabled/001-mylog
.
相反,我尝试将相同的片段放入/etc/apache2/conf.d/mylog
,之前加载,/etc/apache2/sites-enabled/000-default
因为/etc/apache2/apache2.conf
有一个Include conf.d/
之前Include sites-enabled/
.这确实覆盖了CustomLog
我想要的价值.但是现在这个ScriptAlias
从未/etc/apache2/sites-enabled/000-default
生效.
我想避免重复一切,从/etc/apache2/sites-enabled/000-default
有效创建默认debian apache配置文件的fork.
Apache HTTP Server - 核心文档相当模糊:
收到请求后,服务器首先根据本地IP地址和端口组合将其映射到最佳匹配.非通配符具有更高的优先级.如果根本不发生基于IP和端口的匹配,则使用"主"服务器配置.
如果多个虚拟主机包含最匹配的IP地址和端口,则服务器会根据请求的主机名从这些虚拟主机中选择最佳匹配.如果未找到匹配的基于名称的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机.因此,给定IP地址和端口组合的第一个列出的虚拟主机是该IP和端口组合的默认虚拟主机.
<VirtualHost>
表现得不像 <Directory> …
我们的旧代码库时常使用已弃用和未经检查的 API,我们在输出中得到这些:
Note: C:\path\to\MyClass.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Run Code Online (Sandbox Code Playgroud)
-Xlint:unchecked
好的,那么如何从命令行重新编译 with而不进行更改build.gradle
?许多其他答案显示了如何通过将其添加到build.gradle
(或类似于build.gradle.kts
)来修复它:
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
Run Code Online (Sandbox Code Playgroud)
但这需要编辑文件(创建 git diff),并且只是一个痛苦...是否有某种方法,环境变量,命令行选项或其他东西来添加编译器参数而不触及文件build.gradle*
?
如果应用程序将用户重定向到 Keycloak 登录页面,并且该页面停留的时间超过“登录超时”(默认 5 分钟),那么当用户输入用户名和密码(而不是登录)时,她会看到以下内容:
\n\n\n\n您登录的时间太长。登录过程从头开始。
\n
为了避免这种情况,可以将“领域设置 \xe2\x86\x92 令牌 \xe2\x86\x92 登录超时”更改为例如 10000 天,即 27 年,这应该确保这种情况在现实中永远不会发生。
\n但在我们继续有效地禁用此超时之前,我们想问:此超时的目的是什么?显然有人不厌其烦地实施了它,但它能防止什么?禁用它会产生什么(安全?)后果?
\n我猜这与此无关,ack
但更多的是bash
:
这里我们创建file.txt
包含字符串,foobar
因此ack
可以foobar
在其中找到:
> echo foobar > file.txt
> echo 'ack foobar file.txt' > ack.sh
> bash ack.sh
foobar
> bash < ack.sh
foobar
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.为什么不在这里找到任何东西?
> cat ack.sh | bash
(no output)
Run Code Online (Sandbox Code Playgroud)
要么
> echo 'ack foobar file.txt' | bash
(no output)
Run Code Online (Sandbox Code Playgroud)
为什么在最后两个案例中ack
找不到foobar
?
unbuffer
在前面添加(从期望)使它工作,我不明白:
> echo 'unbuffer ack foobar file.txt' | bash
foobar
Run Code Online (Sandbox Code Playgroud)
更奇怪的是:
> cat ack2.sh
echo running
ack foobar file.txt
echo running …
Run Code Online (Sandbox Code Playgroud) 在我看来,WSL2 容器docker-desktop
正在使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器。是什么赋予了?(详情如下)。
另外,当我将 中所有进程的所有驻留 RAM (VSZ) 加起来时docker-desktop
,总数仅为 4687251 KB 或 4.4 GB,那么剩余的 7 GB RAM 到哪里去了?
我尝试从任务栏重新启动 Docker Desktop,并尝试终止docker-desktop
WSL2 容器(使用wsl.exec -t
),这两者都没有什么区别。我重新启动了整个 Windows 机器,现在它使用了更加合理的 2GB RAM。与我使用 595MB RAM 的 Ubuntu 20.04 WSL2 相比,这仍然是很多。
那么:为什么要docker-desktop
使用 12GB RAM 来服务一个小容器呢?我可以在不重新启动整个机器的情况下解决这个问题吗?
# What is docker-desktop-data? It doesn't support any commands...
$ wsl.exe -d docker-desktop-data free -m
# docker-desktop is using approx 12 GB RAM
$ wsl.exe -d …
Run Code Online (Sandbox Code Playgroud) 如何在我的非 vs-code 终端中执行此操作:
wsl:/home/peter/myproject$ code .
Run Code Online (Sandbox Code Playgroud)
然后在新的 WSL 窗口中或以某种方式在 WSL 模式下myproject
在 Visual Studio Code 中打开?
我可以使用以下命令将当前文件夹作为“普通”Windows 文件夹打开:
"$(wslpath 'C:\Users\pvm\AppData\Local\Programs\Microsoft VS Code\Code.exe')" .
Run Code Online (Sandbox Code Playgroud)
但很多事情都不起作用,因为它没有作为 WSL 文件夹打开。但是,我可以单击红色箭头指向的位置,然后单击绿色箭头指向的位置。
作为替代方案,我可以在 VS Code 中打开 WSL 窗口,然后从那里打开终端。从代码中的终端内部,我可以导航到文件夹并输入code .
. 然后它会完全按照我想要的方式打开,但这只能从代码中的终端进行,而不是从独立的“普通”WSL 终端进行。如果尝试从普通终端运行相同的代码命令,则会收到一条消息“命令仅在 WSL 或 Visual Studio Code 终端内可用”。错误。这是设计的。
所以问题仍然存在:如何在 WSL 模式下在 VS Code 中从独立 WSL 终端打开文件夹?
我试图使用gpg
到--clearsign
一个文件(Debian的包装用途)从脚本。
我有一个导出的无密码private-key.gpg
文件,想要:
gpg --clearsign -o output input
Run Code Online (Sandbox Code Playgroud)
我不想与当前用户的混乱~/.gnupg
或者/run/user/$(id -u)/gnupg
是因为他们什么都没有做我的脚本。另外,该脚本可能同时在多个实例中运行,我不希望它们相互干扰。
我认为那很容易。设置$GNUPGHOME
为临时目录并完成。但我无法弄清楚如何让gpg
一个脚本,而不与用户的标准配置搞乱运行在所有。似乎gpg
已竭尽全力使之无法避免,gpg-agent
并gpg-agent
坚持使用全局/硬编码路径。
我可以保留一切下$GNUPGHOME
?或者如何在gpg
不影响用户配置或脚本的使用gpg
或其他实例的情况下从shell脚本安全使用?
阅读gpg文档,我发现:
--use-agent
--no-use-agent
This is dummy option. gpg always requires the agent.
Run Code Online (Sandbox Code Playgroud)
和gpg-agent文件说:
--use-standard-socket
--no-use-standard-socket
--use-standard-socket-p
Since GnuPG 2.1 the standard socket is always used.
These options have no more …
Run Code Online (Sandbox Code Playgroud) 我似乎无法提取从MySQL任何有用的信息,以帮助我调试这个错误:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
。你能帮我找一些吗?
再生产:
一个进程做这样的事情:
start transaction;
update cfgNodes set name="foobar" where ID=29;
Run Code Online (Sandbox Code Playgroud)
只是坐在那里(不承诺,不回滚)。这显然是罪魁祸首 - 由于长时间运行的事务而占用锁的过程 - 我试图找到的罪犯。
另一个进程尝试:
-- The next line just prevents you from having to wait 50 seconds
set innodb_lock_wait_timeout=1;
update cfgNodes set name="foobar" where ID=29;
Run Code Online (Sandbox Code Playgroud)
这第二个过程得到ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
(之后innodb_lock_wait_timeout
,默认 50 秒)
我如何找到有关罪犯的任何信息?