小编NRe*_*ngh的帖子

Perl如何与正在运行的脚本进行交互?

我有一个Perl脚本,它运行一个不同的实用程序(对于那些感兴趣的人称为Radmind),它具有编辑文件系统的能力.Perl脚本监视此进程的输出,因此它将在整个情况下运行.

如果脚本运行的实用程序试图编辑脚本文件本身,即用更新的版本替换它会发生什么?Perl是否在执行开始时加载脚本和任何链接库,然后忽略脚本文件本身,除非特别说明要搞乱它?或许,一切都会崩溃,执行可能会或可能不会失败,这取决于新文件与正在运行的文件有何不同?

或者完全是其他的东西?道歉,如果这属于SuperUser-对我来说似乎是一个灰色区域.

macos scripting perl file

6
推荐指数
1
解决办法
1472
查看次数

为什么要RewriteRule.和^(.*)$一样工作吗?

考虑以下:

RewriteRule ^(.*)$ index.php/$1
Run Code Online (Sandbox Code Playgroud)

基于初出茅庐的菜鸟知识我的mod_rewrite的,这应该与整个URL部分匹配example.com/?query=string,然后用预先准备它index.php/,一般,这也正是发生了什么.

http://example.com/some/stuff -> http://example.com/index.php/some/stuff
Run Code Online (Sandbox Code Playgroud)

现在,考虑一下:

RewriteRule . index.php
Run Code Online (Sandbox Code Playgroud)

根据Concrete5 CMS当前更新的开发人员,这完全相同.事实上,它似乎也在我的服务器上做到了这一点.

我的问题是,为什么第二个RewriteRule会产生相同的结果而不是类似的结果

http://example.com/some/stuff -> http://example.com/index.phpome/stuff
Run Code Online (Sandbox Code Playgroud)

不应该.匹配一个字符,然后用index.php字符串替换?这是在Apache 2.2上.

regex apache mod-rewrite pcre

6
推荐指数
1
解决办法
97
查看次数

是否可以将 Google Apps 脚本部署为不会在每次部署时更改 URL 的网络应用程序?

我编写了一个供个人使用的 Apps 脚本,我想通过 HTTP 请求调用它。(我基本上像使用“无服务器功能”一样使用它,对 Google Apps API 进行本地身份验证。)

通过将我的 Apps Script 项目部署为 Web App,我可以轻松地做到这一点,这会为我提供一个类似的 URL

https://script.google.com/macros/s/${DEPLOYMENT_ID}/exec
Run Code Online (Sandbox Code Playgroud)

但是,如果我对脚本进行更改并希望实时推送这些更改,则必须创建一个新部署,该部署将具有新的部署 ID,从而更改 URL。

我知道我可以使用“测试部署”来获取始终指向项目 HEAD 的 URL,但这始终需要来自 HTTP 客户端的身份验证。通过我的部署,我可以将“谁有权访问”设置为“任何人”并避免此要求。

是否可以将 Web 应用程序脚本部署到在未来部署中不会更改的 URL?

google-apps-script

6
推荐指数
1
解决办法
877
查看次数

M1 上的其他 x86-64 模拟器是否可以利用 Rosetta 2 使用的相同优化?

我很好奇使用 Rosetta 2 与仿真在 Apple M1 平台上运行 x86-64 二进制文件的截然不同的性能特征,例如 Docker Desktop 目前使用QEMU做什么。

我明白为什么仿真这么慢,但是在这个 Twitter 线程中详细解释了为什么 Rosetta 2 这么快:https : //twitter.com/ErrataRob/status/1331735383193903104

该解释的要点是,在通常情况下,arm 和 x86 具有相反(且不兼容)的内存寻址方案,这需要大量的仿真开销,但 M1 芯片通过硬件优化解决了这个问题,允许它使用两种寻址方案访问内存。实际上,当运行 Rosetta 2 模拟指令时,会设置一个标志,让处理器知道使用 x86 风格的寻址方案。

假设这种解释是合理的(如果有人有比上述 Twitter 线程更好的来源报告,我会在评论中包含它,我会很感激),从技术上讲,这种优化是否可以用于完整的硬件仿真,例如运行 x86- 64 个 Linux Docker 容器,还是VMware Fusion/VirtualBox 一样运行完整的 x86-64 Windows 桌面虚拟机?或者,这些场景中单独的操作系统层是否妨碍了利用内存排序优化?

另外,此处理器模式(标志或指令)是为第 3 方使用而记录和发布的,还是仅供 Apple 私有?

assembly emulation arm64 apple-silicon rosetta-2

5
推荐指数
1
解决办法
33
查看次数

在perl中安全运行这个容易出错的系统调用的正确方法是什么?

因此,作为OS X计算机实验室系统的启动脚本的一部分,我正在运行一个名为systemsetup的内置shell命令,以将系统与网络时间服务器同步.它在perl脚本中运行如下.

#!/usr/bin/perl

system("systemsetup -setusingnetworktime off");
system("systemsetup -setusingnetworktime on");
Run Code Online (Sandbox Code Playgroud)

首先将其翻转为关闭可确保在打开时更新.

问题是,每隔一段时间,该命令就会抛出以下错误writeconfig[1841:903] *** -[NSMachPort handlePortMessage:]: dropping incoming DO message because the connection or ports are invalid,然后根据我运行它的位置停止shell或脚本的执行.

这实际上在实践中几乎没有发生 - 在每天启动时运行脚本的500个实验室系统上,我每隔几周才会注意到一个系统出现问题.奇怪的是,它实际上非常容易在测试中复制.

所以我理解的是,这显然是系统设置中的一个错误,即错误被抛出,但我确信有一种方法可以使我的perl脚本优雅地处理它,对吧?

我现在提出的最好的事情是systemsetup -setusingnetworktime off&>/dev/null将STDOUT和STDERR连接到/ dev/null.

macos error-handling perl

2
推荐指数
1
解决办法
537
查看次数

这些shell脚本字符(|| :)是否有用?

我有一个小的shell脚本,它运行在指定目录中可执行的任何东西,同时传递两个参数:

#!/bin/sh

cd '/foo'
for s in bar/*;
do [ -x $s ] && $s "$1" "$2" || : ;
done
Run Code Online (Sandbox Code Playgroud)

这个|| :位有用吗?我希望可执行文件以异步方式启动,因此我将其更改;为a &,但是有任何理由我不应该这样做:

#!/bin/sh

cd '/foo'
for s in bar/*;
do [ -x $s ] && $s "$1" "$2" &
done
Run Code Online (Sandbox Code Playgroud)

unix bash shell sh

2
推荐指数
1
解决办法
112
查看次数