我正在localhost中运行服务 127.0.01:8000
我通过使用代理这个:
proxy_pass http://127.0.0.1:8000;
Run Code Online (Sandbox Code Playgroud)
问题是我需要将用户的IP地址传递给服务.
有任何想法吗?
有限状态机只是马尔可夫链的实现吗?两者有什么不同?
我有一个主应用程序加载一些插件.这些插件使用继承自"MarshalByRefObject"的类在单独的应用程序域中加载和运行; 一切正常.
我现在需要的是一种方法来处理插件何时希望主应用程序执行某些操作以及在主应用程序中动态处理它的方法.如果最好的方法是轮询插件以获取命令列表,那么我可以这样做,虽然它看起来有点像kludge.
从应用程序域中的插件向主应用程序发送请求的最佳方法是什么?
UPDATE
作为问题的更新,我希望通过应用程序域发送数据,使主应用程序执行某些操作,例如"文件 - >新建"操作或"GetSomeData()"调用.在这样做时,我需要让插件等待主应用程序完成它正在做的任何事情,但也能够决定主应用程序端是否执行所请求的功能/事件.
我通过传递插件接口来做到这一点.此接口由主应用程序中定义某些事件的类实现.然后主应用程序可以订阅这些事件,插件可以激活主应用程序功能.问题是接口只引用了我通过接口时的类.即如果我创建了没有订阅事件的类,那么就像这样传递接口:
CallbackClass myCallbackClass = new CallbackClass();
pluginInterface.HeresMyCallbackClass((ICallbackClass)myCallbackClass);
Run Code Online (Sandbox Code Playgroud)
插件将接收接口,但对原始类的任何更改都不会传播.所以补充:
myCallbackClass.MyMainAppEvent += new MainEventHandler(MyMainAppFunction);
Run Code Online (Sandbox Code Playgroud)
不会改变插件的事件版本.该插件可以这样做:
//code within plugin
ICallbackClass callToMainApp;
public HeresMyCallbackClass(ICallbackClass cbClass)
{
callToMainApp = cbClass;
}
public CallAMainAppFunction()
{
callToMainApp.CallTheSubscribedFunction(); //This is where it all goes wrong
}
Run Code Online (Sandbox Code Playgroud)
...但它尝试调用的事件为null.现在,如果我让主应用程序首先订阅事件,然后传递接口,这不是问题:
CallbackClass myCallbackClass = new CallbackClass();
myCallbackClass.MyMainAppEvent += new MainEventHandler(MyMainAppFunction); //Subscribe first
pluginInterface.HeresMyCallbackClass((ICallbackClass)myCallbackClass);
Run Code Online (Sandbox Code Playgroud)
然后插件可以调用CallTheSubscribedFunction(),事件将在主应用程序中触发.我需要能够按需订阅这样的事件,因为主应用程序中的某些事物/事件/数据在不同时间可用.
所以,我试图避免写出很多信息,但我想我的问题与我的问题相比过于笼统.
如果有人有任何建议,请告诉我.同样,我的目标是允许插件在主应用程序中触发事件,等待主应用程序完成,然后继续执行,主应用程序可能会或可能不会订阅事件.
更新2
我意识到以上信息专门针对我的应用程序,但我也在寻找一般性的建议.因此,如果使用线程是一个选项,请告诉我一般情况如何工作.如果另一个案例能够更好地工作,我需要做一些重新设计来实现它,也让我知道.只是在这里寻找建议.谢谢.
我需要通过运行的脚本添加一个cron作业来设置服务器.我目前正在使用Ubuntu.我可以使用,crontab -e但会打开一个编辑器来编辑当前的crontab.我想以编程方式执行此操作.
有可能这样做吗?
我有这个字典 -
IDictionary<DateTime, int> kamptslist = new Dictionary<DateTime, int>();
List<int> listints= GetListofints(); //for values
List<int> listdates= GetListofdates();// for keys
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式直接将列表分配给字典而不是实际执行foreach并一次添加一个项目吗?
我知道你不能使用过滤器来调用方法,因为它是基于数据库来实现的.所以我正在尝试编写自定义过滤器.
@staticmethod
def custom_filter(obj,method_name, arg=False):
for i in obj.objects.all():
if getattr(i, method_name)() == arg:
yield i
Run Code Online (Sandbox Code Playgroud)
如果我打电话,我可以让它工作:
MyModel.custom_filter(MyModel,'my_method','myarg')
Run Code Online (Sandbox Code Playgroud)
但是,我不能像常规过滤器那样将它们链接在一起.
我可以这样做:
@staticmethod
def custom_double_filter(obj,method1,arg1,method2,arg2):
for i in obj.objects.all():
if getattr(i, method1)() == arg1 and getattr(i,method2)()==arg2:
yield i
Run Code Online (Sandbox Code Playgroud)
但我希望它能支持任意数量的过滤器,而且有些方法有自己的参数
@staticmethod
def custom_double_filter(obj,method1,arg1,method2,arg2):
for i in obj.objects.all():
if getattr(i, method1)(<may need to pass an argument>) == arg1 and getattr(i,method2)()==arg2:
yield i
Run Code Online (Sandbox Code Playgroud)
编辑:所以我试着像这样制作一个自定义管理器:
class GroupManager(models.Manager):
use_for_related_fields = True
def custom_filter(self,method_name, arg=False):
results = []
for i in self.all():
if getattr(i, method_name)() == arg:
results.append(i) …Run Code Online (Sandbox Code Playgroud) 我已经搜索了这个,但我想我只是让自己更加困惑.
我想要做的是在一个对象中保存一个函数指针,并在稍后的另一个线程中调用它.
我想象的是一个构造函数,它将获取一个函数指针和将传递给该函数指针的参数.该对象还将具有run()方法,该方法将运行所述函数指针和wait_until_completed()方法,该方法将阻塞直到该函数已运行.
如果有意义的话,函数指针应该是来自另一个对象的函数.例如
Foo::*Bar(int);
Run Code Online (Sandbox Code Playgroud)
我有使用pthread_cond_t的wait_until_completed()工作,但我坚持这个函数指针的事情,感觉我只是在圈子里跑来跑去.
有什么建议?
编辑:这是为学校(任何我的一般理解)所以第三方图书馆不能工作:/
我觉得我做了一个非常糟糕的工作来解释这个,让我给出一些示例代码(不包括所有同步的东西)
class Foo
{
public:
Foo(void (Bar::*function) (int), int function_param)
{
// Save the function pointer into this object
this->function = &function;
// Save the paramater to be passed to the function pointer in this object
param = function_param;
}
run()
{
(*function)(param);
}
private:
// The function pointer
void (Bar::*function) (int) = NULL;
// The paramater to pass the function pointer
int param;
}
Run Code Online (Sandbox Code Playgroud)
这简直就是我要做的事情.但是,我不确定它是语法还是我是愚蠢的,但我无法弄清楚如何实际执行此操作并将其编译.
几点思考?并感谢到目前为止的所有建议:)
我的公司正在评估CSLA.NET作为我们所有.NET企业应用程序开发的可能标准框架.为了便于比较,任何人都可以在这个领域推荐一些替代框架吗?
我目前正在开发一个两人项目,我们使用 Subversion 作为源代码管理。现在,我们都创建分支并在这些分支中进行开发,然后在提交主干之前将这些更改合并到主干的副本中。
我们遇到的问题是保持所有内容更新的巨大开销。
我们的工作流程示例
问题
有人可以推荐一个更简单的工作流程吗?有时我们工作的领域会影响其他人的代码,而目前这是不可避免的,因此我们需要保持更新。我喜欢每天至少提交一次主干,这样事情就不会太不同步。
谢谢
我有一个Hg仓库,里面有3个分支,但其中有两个是非活动的(因为我已将它们合并到我的默认分支中).hg头显示3个头,每个分支一个,即使hg分支显示其中2个分支为"非活动".
当我尝试将我的默认分支(使用hg push --branch default http:// ...)推送到另一个repo时,合并将中止,并显示消息"abort:push创建新的远程分支:!"
从Hg推送手册页,"默认情况下,推送将不允许在目的地创建新的头,因为多个头将使得不清楚使用哪个头.在这种情况下,建议在推动之前拉动和合并."
我已经做到了,但是我仍然无法推动 - 分支默认,而不会中止.
任何帮助表示赞赏.谢谢!