对于想了解有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?的读者,本文将是一篇不可错过的文章,并且为您提供关于.m文件到linux中的可执行文件以在另一台linux机器上运
对于想了解有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?的读者,本文将是一篇不可错过的文章,并且为您提供关于.m文件到linux中的可执行文件以在另一台linux机器上运行、c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?、c盘用户里的东西可以随便删除吗?删除后有什么后果?、iphone – 有什么办法让drawRect工作现在吗?的有价值信息。
本文目录一览:- 有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?
- .m文件到linux中的可执行文件以在另一台linux机器上运行
- c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?
- c盘用户里的东西可以随便删除吗?删除后有什么后果?
- iphone – 有什么办法让drawRect工作现在吗?
有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?
D-Bus规范说
D-Bus是应用程序彼此交谈的简单方法…目前,通信应用程序在一台计算机上…
我想要D-Bus之类的东西,但是可以在多台Linux机器上工作,并且可能会涉及到防火墙。 例如,如果我的邮件服务器决定接收到一个重要的信息,我希望它将一个事件发送到我家里的电脑可以看到的公共汽车,并可能启动一个linpopup窗口。
我感兴趣的事件比较less见,所以低性能技术是可以的。 但我宁愿不重新发明任何车轮。 我还希望尽可能多的用shell脚本或者其他高级语言编写,而且尽可能less用C语言编写(但是如果需要的话,我愿意调用C API)。
文件更改了事件networking共享
在C#中检测系统醒来的事件
在Windows中集中应用程序更改事件
linux – 不能让eventfd和epoll一起工作
点击后禁用button
我解释官方的D-Bus网页的方式,他们说可以让D-Bus与多台计算机通话,但是这样做是行不通的 。
编辑 :我对D-Bus的吸引力是发布和订阅的模式:
观察有趣事件的机器将该事件发布到“系统”。
一个对特定事件感兴趣的机器只赞同这些事件。 当事件发生时,“系统”让机器知道。
在D-Bus中,“系统”是一台机器。 我想为多台机器类似的东西。 这就排除了像机器之间的TCP或SMTP通信这样的直接解决scheme。 但我很高兴有一个中央服务器接收所有发布和订阅请求。 我开始认为构build我自己比理解高级消息队列协议(AMQCP)更容易,这对我来说太过于高级了。
性能不是对象。 简单是一个对象。
再一次:我应该看什么软件?
创build事件的数量是否有限制?
使用事件在Windows中观看,设置和获取主动语言
从另一个Windows应用程序捕获用户事件(button点击等)
为什么在OnClick之前调用Click,我该如何解决?
事件可以是进程间的吗?
管理应用程序之间的消息和通信的“新事物”,显然是兔子。
是AMQP的实现,它建立了消息传递,路由和安全性…
检查这个:
http://www.rabbitmq.com
http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
您应该搜索消息传递解决方案,但这些解决方案取决于您打算使用哪种语言.Java已经有一段时间称为JMS(Java消息服务)。 然而其他的实现存在。
ZeroMQ具有API绑定:C,C ++,Python,.NET / Mono等等
OpenAMQ的 API绑定为:Python,Java,Ruby和C
我对于不同的框架没有经验,所以我不能告诉你使用什么,但是你可以给这些框架。
也许我错过了这个观点(完全可能!),但为什么不使用SMTP并发送电子邮件呢? 或TCP数据包,并在另一边有一个监听程序?
我知道没有这样的现成解决方案。
我的建议是编写脚本使用curl或wget将HTTP POST请求发送到一个非常简单的Web应用程序,其中包含您的信息。 而另一台机器间隔轮询相同的网站,并获取信息。
彗星可以改善民意调查,但可能需要更多努力。
基于TCP / IP的消息队列(MQ)/面向消息的中间件(MOM)解决方案应满足您的需求。 大多数成熟的产品为各种语言提供本地语言绑定。 我已经与ActiveMQ运气好,它有一个CLI界面,可能足以执行简单的脚本任务。
有一些背景可以在这里找到: http : //en.wikipedia.org/wiki/Message-oriented_middleware
祝你好运,
香农
自从我的研究把我引向这个古老的问题之后,又发生了很多事情,我想补充一下。
您希望查看作为物联网标准的MQTT。 自2016年起,这是一个ISO和oasis标准。http: //mqtt.org/
这是非常简单的使用和设计是轻量级的。 原则是发布/订阅。
一个非常好的实现是在Eclipse下的Mosquitto https://mosquitto.org/ 。 Eclipse Paho项目中有客户端库,位于https://eclipse.org/paho/ 。
如果您有兴趣尝试较低层协议,则可以尝试SOAP。 它不像二进制协议那样高效,而且你必须自己做更高级别的排队,但是它可以通过web代理和SMTP服务器来运行。 有一个体面的PERL实施,我已经尝试过。
欲了解更多信息:
http://www.w3schools.com/soap/default.asp
您应该考虑在机器之间桥接D-Bus消息。 编写一个消息桥应用程序,将接收D-Bus消息,过滤它们并发送某些消息到AMQP主题交换。 这可以很容易地用RabbitMQ作为MQ代理完成,花时间学习AMQP模型是值得的。 RabbitMQ网站充满了文档,教程,博客和常见问题解答。
AMQP的一个典型用途是拥有一个消息生成器进程,然后是一个消息使用者进程,它可以位于不同的机器上。 生产者只需连接到broker,然后使用路由密钥标签将消息发布到主题交换中。 Exchange是一个将消息路由到队列上的进程。 消息使用者也连接到代理,但它可能不是同一个代理。 然后消费者声明要使用的队列名称。 并使用绑定键将该队列名称绑定到指定的Exchange。 绑定密钥是与进入交换机的任何路由密钥匹配的模式。 在最简单的情况下,路由键和绑定键是相同的,但是当绑定包含通配符模式时更有趣。
如果你真的不想学习AMQP,那么使用0MQ来连接机器。 0MQ非常简单,基本上允许你拥有多个端点的套接字。
.m文件到linux中的可执行文件以在另一台linux机器上运行
嗨,我在MATLAB的Linux工作。 我想将我的.m文件转换成.exe或一些可执行文件,以便我可以在另一台linux机器上运行它。我试着做mcc -m filename.m -o newfile
但它会创buildrun_newfile.sh和newfile.o文件。 如何将这个.sh文件转换成.exe文件,或者如何在其他机器上运行.sh文件。 请帮忙
解决:我解决了这个问题。 我用mcc -mv filename.m
命令创build一个可执行文件,我可以运行与./filename .m文件具有相同名称的可执行文件
在壳里。 而且我们还需要检查MCR是否安装。 如果不是,我们需要安装MCR。 感谢您的回复。
“ant -version”返回/ usr / bin / build-classpath:错误:找不到指定的jar文件
模拟ARM代码
vim远程编辑:ftplugin或远程vim通过ssh
如何在string字段中使用多个逗号格式化.CSV文件的date字段
Shell脚本 – Linux
使用ALSA查找进程声音快速
MysqL远程连接
使用mmap和madvise来处理巨大的页面
通过环境variables提供ssh密钥
快速的grep / grep只有行号?
您可以通过sh run_newfile.sh在其他Linux机器上运行创建的文件。 你不能创建Linux机器上的Windows机器的exe文件。 为了创建Windows可执行的EXE文件,你必须使用Windows机器。
如果你想使用MATLAB编译器来生成Windows可执行文件(.exe文件),则必须在Windows机器上运行它。 如果你在Linux机器上运行它,它将产生适合Linux的输出,就像你看到的那样。
您的MATLAB许可证是跨平台的,您可以多次安装,因此您可以将其安装在Windows和Linux上(只要您不同时使用多个安装中的两个以上)。
如果您没有Windows的安装文件,只要您的许可证处于维护状态,您可以登录到您的MathWorks帐户下载它们。
c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?
他可以在他的机器上使用我的共享库吗?
解决方法
如果将.so文件复制到启动系统(例如,复制到其自己的/usr/local/*或/ opt / *目录中),则尝试使用LD_PRELOAD环境设置运行预期的可执行文件.如果链接器(ld-linux.so)设法解析两者之间的所有符号,则程序应加载并运行.
所以它应该是可能的,而且相当安全(只要你没有覆盖任何现有的系统库并只使用LD_ * /etc/ld.so.preload(在chroot中?)魔术来链接目标此库的可执行文件.
但是,我认为这是一个坏主意.您有包管理问题. Ubuntu和Red Hat都有精美的包管理工具.使用它们! (注意,提出有关包管理的问题的适当位置是ServerFault或SuperUser,绝对不是SO).
c盘用户里的东西可以随便删除吗?删除后有什么后果?
不建议随便删除 c 盘用户文件夹中的内容,因为可能导致:数据丢失:用户文件夹包含个人文件和设置。程序无法正常工作:用户文件夹中存储配置文件和缓存。系统不稳定:用户文件夹包含操作系统临时文件。安全问题:用户文件夹中包含密码等敏感信息。
C盘用户文件夹中的内容可以随便删除吗?
不建议随便删除C盘用户文件夹中的内容。这样做可能会对您的系统和数据造成严重的后果。
可能的删除后果:
-
数据丢失: 用户文件夹包含个人文件和设置,例如文档、照片、音乐和书签。删除这些文件将导致它们永久丢失。 - 程序无法正常工作:某些程序在用户文件夹中存储配置文件和缓存。删除这些文件可能会导致程序无法正常运行。
- 系统不稳定:用户文件夹包含操作系统的一些临时文件。删除这些文件可能会导致系统不稳定或死机。
- 安全问题:用户文件夹中的某些文件包含敏感信息,例如密码和登录详细信息。删除这些文件可能会危及您的帐户和系统的安全性。
建议做法:
- 仅删除您确信不再需要的文件。
- 删除文件前,请创建备份。
- 如果您不确定某个文件是否可以删除,请咨询专业人士或在线搜索。
以上就是c盘用户里的东西可以随便删除吗?删除后有什么后果?的详细内容,更多请关注php中文网其它相关文章!
iphone – 有什么办法让drawRect工作现在吗?
如果你是drawRect的高级用户,你会知道,当然drawRect将不会实际运行,直到“所有处理完成。
setNeedsdisplay将视图标记为无效和操作系统,并且基本上等待,直到所有处理完成。这可能是令人愤怒的常见情况下,你想有:
>视图控制器1
>启动一些功能2
>增量3
>创造一个越来越复杂的图稿和4
>在每一步,你setNeedsdisplay(错!)5
>直到所有的工作完成6
当然,当你做上面的1-6,所有这一切发生的是drawRect只在第6步后运行一次。
您的目标是在第5点刷新视图。该怎么办?
对原问题的解决……………………………………… 。
总之,你可以(A)背景的大画,并调用前台的UI更新或(B)可争辩地有四个“立即”方法建议不使用后台进程。对于什么工作的结果,运行演示程序。它有#defines为所有五种方法。
由汤姆·斯威夫特介绍的真正令人惊讶的替代解决方案………………
汤姆·斯威夫特解释了一个惊人的想法,很简单地操纵运行循环。以下是触发运行循环的方法:
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]];
这是一个真正令人惊叹的工程。当然,在操作运行循环时应该非常小心,并且许多人指出这种方法是专家级的。
出现的奇怪问题……………………………………… 。
即使一些方法工作,他们实际上并不“工作”,因为有一个奇怪的进步 – 慢下来的神器,你会看到在演示中清楚。
滚动到我在下面粘贴的“答案”,显示控制台输出 – 你可以看到它是如何逐渐减慢。
这里是新的SO问题:
Mysterious “progressive slowing” problem in run loop / drawRect
这里是V2的演示应用程序…
http://www.fileswap.com/dl/p8lU3gAi/stepwiseDrawingV2.zip.html
你会看到它测试所有五种方法,
#ifdef TOMSWIFTMETHOD [self setNeedsdisplay]; [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]]; #endif #ifdef HOTPAW [self setNeedsdisplay]; [CATransaction flush]; #endif #ifdef LLOYDMETHOD [CATransaction begin]; [self setNeedsdisplay]; [CATransaction commit]; #endif #ifdef DDLONG [self setNeedsdisplay]; [[self layer] displayIfNeeded]; #endif #ifdef BACKGROUNDMETHOD // here,the painting is being done in the bg,we have been // called here in the foreground to inval [self setNeedsdisplay]; #endif
>你可以看到自己哪些方法工作,哪些不工作。
>你可以看到奇怪的“渐进减速”。为什么会发生?
>你可以看到有争议的TOMSWIFT方法,实际上没有任何问题响应。点击以随时响应。 (但仍然是奇怪的“进步 – 放缓”的问题)
因此,压倒性的事情是这种奇怪的“进步 – 慢下来”:在每次迭代,由于未知的原因,一个循环所需的时间死亡。注意,这适用于“正确”(背景看)或使用“立即”方法之一。
实用解决方案
对于任何人在未来阅读,如果你实际上无法让它在生产代码中工作,因为“神秘逐渐减速”… Felz和Void都提出了惊人的解决方案在其他具体问题,希望它有帮助。
解决方法
这意味着没有办法“强制”UI刷新从在主线程上运行的进程中的某个其他点发生。以前的陈述是不完全正确的,汤姆的答案显示。您可以允许运行循环在主线程上执行的操作中完成。但是,这仍然可能会降低应用程序的响应能力。
一般来说,建议您将需要一段时间执行的任何内容移动到后台线程,以便用户界面保持响应。但是,您希望对UI执行的任何更新都需要在主线程上完成。
也许在SNow Leopard和iOS 4.0下最简单的方法是使用块,如下面的基本示例:
dispatch_queue_t main_queue = dispatch_get_main_queue(); dispatch_async(queue,^{ // Do some work dispatch_async(main_queue,^{ // Update the UI }); });
上面的做一些工作部分可能是一个冗长的计算,或循环多个值的操作。在此示例中,仅在操作结束时更新UI,但是如果您希望在UI中进行连续进度跟踪,则可以将调度放置到需要执行UI更新的主队列。
对于较旧的操作系统版本,您可以手动或通过NSOperation中断后台线程。对于手动背景线程,可以使用
[NSThread detachNewThreadSelector:@selector(doWork) toTarget:self withObject:nil];
要么
[self performSelectorInBackground:@selector(doWork) withObject:nil];
然后更新您可以使用的UI
[self performSelectorOnMainThread:@selector(updateProgress) withObject:nil waitUntilDone:NO];
注意,我发现在以前的方法中的NO参数是需要获取不断的UI更新,同时处理一个连续的进度条。
This sample application我为我的类创建说明如何使用NSOperations和队列执行后台工作,然后更新UI完成时。此外,我的Molecules应用程序使用后台线程来处理新的结构,状态栏随着进度的更新而更新。你可以下载源代码看看我是如何实现的。
关于有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.m文件到linux中的可执行文件以在另一台linux机器上运行、c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?、c盘用户里的东西可以随便删除吗?删除后有什么后果?、iphone – 有什么办法让drawRect工作现在吗?的相关知识,请在本站寻找。
本文标签: