小编Bam*_*bam的帖子

在GNU-Prolog中,我能"抓住"linux信号吗?

有没有办法在GNU Prolog中"陷阱"(例如"捕获")操作系统信号?(我正在使用Ubuntu/Linux,最新的gprolog).

我想很久以前我在WAMCC中使用过这种方法,然后才变成GNU Prolog:

:- catch(Long_Running_Goal,signal(2),write('program interrupted'))
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用(重复,失败)无限循环测试它,例如

:- catch((repeat,fail),X,write(X)).
Run Code Online (Sandbox Code Playgroud)

在解释按Ctrl-C还带我去跟踪/调试器,编译后的程序只是退出,如果我打断它kill -1,kill -2等等.

我已经尝试编译程序,--no-top-level以防默认顶层以某种方式捕获信号,但这没有任何区别.

SWI-Prolog似乎有一个合适的内置谓词on_signal,但是我正在寻找gprolog的解决方案,如果可能的话.

linux prolog gnu-prolog

20
推荐指数
2
解决办法
352
查看次数

Vertx 聚类替代方案

任何人只要有Vertx集群管理的实战经验,其他比Hazelcast对低于我们要求的建议?

对于我们(实时传感器数据)系统,我们有数百个在多个JVM verticles的,但我们确实没有需要,或想,在eventbus跨越多个物理服务器。

我们在多台服务器上运行 Vertx,但如果我们不在所有服务器之间汇集单个事件总线,我们的平台就不那么复杂(我们更愿意明确地在服务器之间传递消息)。

Hazelcast 对我们来说是错误的集群管理器。我们不需要服务器之间的对等发现,但至关重要的是,Hazelcast 的任何版本更改都意味着客户端无法加入具有运行先前版本的现有运行客户端的集群,因此将使用 vertx 3.6.3 编译的新 Verticle 引入现有集群这是不可能的,除非我们停止整个集群并在所有顶点重新编译到 3.6.3 的情况下重新启动它。这严重影响了我们的发展。verticles 更即插即用是有帮助的,vertx 可以做到这一点,但 Hazelcast 不能(由于不断的版本不兼容)。

谁能推荐一个适合我们用例的 vertx 集群管理器?

cluster-computing hazelcast vert.x

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

渲染Windows屏幕快照将位图捕获为DirectX纹理

我正在开发“ 3d桌面” directx应用程序,该应用程序需要在DirectX(11)的矩形表面上以2D纹理的形式显示桌面窗口的当前内容(例如“计算器”)。我太亲密了,但实际上还是在屏幕截图BMP-> Texture2D步骤中挣扎。我确实有屏幕截图-> HBITMAP和DDSFile->渲染纹理成功工作,但是无法完成屏幕截图->渲染纹理。

到目前为止,我已经使用“将窗口捕获为屏幕截图”位:

RECT user_window_rectangle;
HWND user_window = FindWindow(NULL, TEXT("Calculator"));
GetClientRect(user_window, &user_window_rectangle);
HDC hdcScreen = GetDC(NULL);
HDC hdc = CreateCompatibleDC(hdcScreen);
UINT screenshot_width = user_window_rectangle.right - user_window_rectangle.left;
UINT screenshot_height = user_window_rectangle.bottom - user_window_rectangle.top;
hbmp = CreateCompatibleBitmap(hdcScreen, screenshot_width, screenshot_height);
SelectObject(hdc, hbmp);
PrintWindow(user_window, hdc, PW_CLIENTONLY);
Run Code Online (Sandbox Code Playgroud)

至此,我有了HBITMAP hbmp引用的窗口位图。

我的代码也可以将DDS文件渲染为DirectX / 3D矩形上的纹理,这也是可行的:

ID3D11Device *dev;
ID3D11DeviceContext *dev_context;
...
dev_context->PSSetShaderResources(0, 1, &shader_resource_view);
dev_context->PSSetSamplers(0, 1, &tex_sampler_state);
...
DirectX::TexMetadata tex_metadata;
DirectX::ScratchImage image;

hr = LoadFromDDSFile(L"Earth.dds", DirectX::DDS_FLAGS_NONE, &tex_metadata, image);
hr = CreateShaderResourceView(dev, image.GetImages(), image.GetImageCount(), tex_metadata, …
Run Code Online (Sandbox Code Playgroud)

windows directx textures screenshot direct3d

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