我正在尝试在Fortran中编写一个小子程序,以便在程序出现错误时释放内存中所有已分配的变量,即无法加载文件或不存在的所需文件.此时,必须终止执行,但不是所有的可分配都必须分配(这取决于错误出现在代码的哪个位置),所以我无法进行清理以释放所有这些.
我目前的做法如下:
SUBROUTINE Cleanup(A)
REAL(8), ALLOCATABLE, DIMENSION(:) :: A
IF (ALLOCATED(A)) THEN
DEALLOCATE(A)
END IF
END SUBROUTINE
Run Code Online (Sandbox Code Playgroud)
并为每个可分配的人调用"清理".这个问题是我的所有变量都不是维度-1.我有一些最多三维.
我首先考虑为不同的维度编写3个不同的子程序并使用重载,但这似乎不是很优雅.
然后我想到也许我可以传递一个指针而不是实际参数A,但我用Google搜索,似乎你不能通过指针释放目标变量.
有关如何正确执行此操作的任何想法?
谢谢.
我正在使用 Python 和 CGI 编写一个小型网站,用户可以在其中上传 zip 文件和下载其他用户上传的文件。目前,我可以正确上传 zip 文件,但是在将文件正确发送给用户时遇到了一些麻烦。我的第一种方法是:
file = open('../../data/code/' + filename + '.zip','rb')
print("Content-type: application/octet-stream")
print("Content-Disposition: filename=%s.zip" %(filename))
print(file.read())
file.close()
Run Code Online (Sandbox Code Playgroud)
但很快我意识到我必须将文件作为二进制发送,所以我尝试:
print("Content-type: application/octet-stream")
print("Content-Disposition: filename=%s.zip" %(filename))
print('Content-transfer-encoding: base64\r')
print( base64.b64encode(file.read()).decode(encoding='UTF-8') )
Run Code Online (Sandbox Code Playgroud)
以及它的不同变体。它只是行不通;Apache 引发“来自脚本的格式错误的标头”错误,所以我想我应该以其他方式对文件进行编码。
自从我在 C++ 项目中从 OpenCV 3.x 更改为 4.x(从源代码编译)以来,我遇到了一些麻烦。我在一个小例子中复制了这个行为,这个例子只打开了一个网络摄像头并记录了 5 秒钟。
使用 3.x 我可以将网络摄像头帧率设置为全高清 30,但与 4.x 相同的代码只是忽略camera.set(cv::CAP_PROP_FPS,30)并将其设置为 5。如果我使用 720p,fps 设置为 10。
也许代码在这里不相关,因为它是一个经典的例子,但以防万一我会把它留在这里。
#include "opencv2/opencv.hpp"
#include "iostream"
#include "thread"
#include <unistd.h>
using namespace cv;
VideoCapture camera(0);
bool stop = false;
int fc = 0;
void saveFrames()
{
while(!stop)
{
Mat frame;
camera >> frame;
cv::imwrite("/tmp/frames/frame" + std::to_string(fc) + ".jpg", frame);
fc++;
}
}
int main()
{
if(!camera.isOpened())
return -1;
camera.set(cv::CAP_PROP_FRAME_WIDTH,1920);
camera.set(cv::CAP_PROP_FRAME_HEIGHT,1080);
camera.set(cv::CAP_PROP_FPS,30);
double fps = camera.get(cv::CAP_PROP_FPS);
std::cout << "FPS setting: " …Run Code Online (Sandbox Code Playgroud) 我有以下代码,使用日期库:
#include "date.h"
#include <iostream>
#include <sstream>
using namespace date;
using namespace std::chrono;
int main()
{
auto now = system_clock::now();
std::stringstream ss;
ss << now;
std::string nowStr = ss.str(); // I need a string
std::cout << nowStr << " UTC\n";
}
Run Code Online (Sandbox Code Playgroud)
结果是:
2020-03-26 17:38:24.473372486 UTC
Run Code Online (Sandbox Code Playgroud)
stringstream 是从 now() 返回的 chrono::timepoint 获取字符串的正确方法吗?而且,如果是这样,我如何将这些纳秒四舍五入到毫秒?
我正在尝试使用恢复模式下的终端访问 macbook 上主目录中的一些文件。在正常启动中,我可以执行以下操作:
sudo chflags nohidden /Users
Run Code Online (Sandbox Code Playgroud)
取消隐藏用户文件夹,但这不适用于恢复模式。我试过这个:
diskutil list
Run Code Online (Sandbox Code Playgroud)
但没有加密和/或离线卷出现。有人知道我如何访问我的文件吗?
我正在编写一个使用 sudo 权限运行的 python 脚本。在某个时候,我想向用户发送通知。我注意到notify-send不能作为root用户工作,所以我尝试通过执行以实际用户身份运行它su $SUDO_USER -c notify-send ...,但这也不起作用。
以下第一个函数在没有 sudo 权限的情况下运行时有效。当使用 sudo 运行时,它们都不起作用。知道为什么吗?
def notify(message):
subprocess.run(['notify-send', '-i', 'utilities-terminal', 'Notification Title', message],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True)
def notifySudo(message):
subprocess.run(['su', os.environ['SUDO_USER'], '-c', 'notify-send', '-i', 'utilities-terminal', 'Notification Title', message],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True)
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何使CSSs:省略号工作在Bootstrap 3缩略图标题内.它在正文中完美无缺,但到目前为止还没有运气.我正在使用最新版本的Chrome.
HTML
<div class="col-sm-4 col-md-3 col-lg-2 thumbnailcontainer">
<div class="thumbnail">
<img src="http://animalia-life.com/data_images/bird/bird1.jpg" alt="image">
<div class="caption">
<div class="thumbnailheader"><h3>This text is too long to fit inside its container.</h3></div>
<p>Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id.</p>
<p><a href="#" class="btn btn-default center-block" role="button">Open</a></p>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.thumbnailheader,
.thumbnail p
{
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在我的一个项目中使用 OpenCV。到目前为止,我在 Ubuntu 18.04 下使用版本 3,所以在我的meson.build版本中:
... dependencies: [dependency('opencv')])
Run Code Online (Sandbox Code Playgroud)
现在,我已经从源代码编译了 OpenCV 4 并安装到默认目录,/usr/local/并将我的更改meson.build为:
... dependencies: [dependency('opencv4')])
Run Code Online (Sandbox Code Playgroud)
导致未找到错误(尽管这适用于 Ubuntu 20.04 和官方存储库中的软件包(版本 4.2))。我应该如何指定图书馆的位置以便 Meson 可以找到它?
我见过 find_library,但根据文档,它已被弃用。
我在理解以下 C++ 代码时遇到了一些麻烦:
std::cout << std::hex << 61183 << std::endl; // prints eeff
Run Code Online (Sandbox Code Playgroud)
我正在使用小端机器(Intel x86-64),我想在位和字节级别了解该结果是如何产生的,因此我为最低有效位架构编写了下表。
如您所见,我希望代码行的输出FFEE不是EEFF. 所以我在制作这张桌子时一定错过了一些东西,但我真的不知道是什么。是否std::hex受计算机字节序的影响?
我有字节向量 std::vector,我想将其信息提取为一些不同长度的整数。
\n\n例如,我可以有一个 7 字节的向量,我想在开头读取 uint32_t,然后读取 uint16_t,最后读取 uint8_t。我需要一种方法来指定应该从向量的哪个元素开始读取以及应该读取多少字节。
\n\nstd::vector<std::uint8_t>& bytes(7);\nuint32_t a;\nuint16_t b;\nuint8_t c;\n\n// Could be something similar to this? \n// This yields an invalid conversion error: {aka unsigned char}\xe2\x80\x99 to \xe2\x80\x98const void*\xe2\x80\x99\nstd::memcpy(&a, bytes[0], sizeof(uint32_t)); \nstd::memcpy(&a, bytes[4], sizeof(uint16_t));\nstd::memcpy(&a, bytes[6], sizeof(uint8_t));\nRun Code Online (Sandbox Code Playgroud)\n