问题列表 - 第28521页

如何取消深层嵌套的进程

我有一个类是"经理"类.其中一个功能是发出应该关闭该类的长时间运行过程的信号.它通过在类中设置一个名为"IsStopping"的布尔值来实现.

public class Foo
{
    bool isStoping

    void DoWork() {
        while (!isStopping)
        {
            // do work...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,DoWork()是一个巨大的功能,我决定重构它,并且作为该过程的一部分,将其中的一部分打破到其他类中.问题是,这些类中的一些还具有长时间运行的函数,需要检查isStopping是否为真.

public class Foo
{
    bool isStoping

    void DoWork() {
        while (!isStopping)
        {
            MoreWork mw = new MoreWork()
            mw.DoMoreWork() // possibly long running
            // do work...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有什么选择?

我已经考虑通过引用传递isStopping,我不喜欢它,因为它需要有一个外部对象.我宁愿让额外的课程尽可能独立和免费.

我还考虑过使用isStopping属性,然后让它调用一个内部类可以订阅的事件,但这看起来过于复杂.

另一种选择是创建一个"进程取消令牌"类,类似于.net 4 Tasks使用的类,然后将该令牌传递给这些类.

你是怎么处理这种情况的?

编辑:

还要考虑MoreWork可能有一个实例化的EvenMoreWork对象,并在...上调用可能长时间运行的方法.我想我正在寻找的是一种方法,能够在调用树下发出任意数量的对象信号,告诉他们停止他们正在做的事情并清理和返回.

EDIT2:

感谢到目前为止的回复.似乎对使用的方法没有真正的共识,每个人都有不同的意见.看起来这应该是一种设计模式......

c# oop refactoring request-cancelling

4
推荐指数
1
解决办法
393
查看次数

在Ruby中对齐块/结束关键字的vim技巧?

有没有办法简单地让我的块和他们的结束关键字与vim正确对齐?如果我有一个嵌套了几个条件的函数,事情就会开始变得难看.vim能节省一天吗?

ruby vim macvim

3
推荐指数
1
解决办法
580
查看次数

Django - 包含的urlconf中没有任何模式

之前正在工作的我的网站突然开始打破错误

"在/包含urlconf resume.urls不正确的配置中没有任何模式"

项目基础称为简历.在settings.py我已设置

ROOT_URLCONF = 'resume.urls'
Run Code Online (Sandbox Code Playgroud)

这是我的resume.urls,它位于项目根目录中.

from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^resume/', include('resume.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation:
    (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/', include(admin.site.urls)),

    (r'^accounts/login/$', 'django.contrib.auth.views.login'),


    #(r'^employer/', include(students.urls)),

    (r'^ajax/', include('urls.ajax')),
    (r'^student/', include('students.urls')),
    (r'^club/(?P<object_id>\d+)/$', 'resume.students.views.club_detail'),
    (r'^company/(?P<object_id>\d+)/$', 'resume.students.views.company_detail'),
    (r'^program/(?P<object_id>\d+)/$', 'resume.students.views.program_detail'),
    (r'^course/(?P<object_id>\d+)/$', 'resume.students.views.course_detail'), …
Run Code Online (Sandbox Code Playgroud)

python django

40
推荐指数
3
解决办法
4万
查看次数

Lua在Google App Engine上

是否可以将Lua与Google App Engine一起使用?我认识到会有很多Java胶水,但我想在大多数逻辑中使用Lua.

google-app-engine lua

4
推荐指数
1
解决办法
1179
查看次数

JavaScript中的别名方法链?

在JavaScript中,如何创建一个与现有函数同名的新函数,同时还保留原始函数,以便可以从新函数中调用它?

javascript alias-method

3
推荐指数
1
解决办法
1088
查看次数

C# - 启动Invisible Process(CreateNoWindow和WindowStyle不工作?)

我有两个程序(.exe),我在.NET中创建.我们称他们为师父和工人.大师启动1个或更多工人.工作人员不会与工作人员进行交互,但它是一个WinForms应用程序,它接收命令并根据从主服务器接收的命令运行WinForms组件.

我希望Worker应用程序完全隐藏运行(当然,除了显示在任务管理器中).我认为我可以使用StartInfo.CreateNoWindowStartInfo.WindowStyle属性完成此操作,但我仍然在表单中看到Client.exe窗口和组件.但是,它不会显示在任务栏中.

   Process process = new Process
      {
          EnableRaisingEvents = true,
          StartInfo =
              {
                  CreateNoWindow = true,
                  WindowStyle = ProcessWindowStyle.Hidden

                  FileName = "Client.exe",
                  UseShellExecute = false,
                  ErrorDialog = false,
              }
      };
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能让Client.exe运行但不显示?

.net c# process processstartinfo winforms

13
推荐指数
2
解决办法
2万
查看次数

在printf中使用#define?

我想要为应用程序ID使用某种常量(所以我可以在printf中使用它).

我有这个:

#define _APPID_ "Hello World!"
Run Code Online (Sandbox Code Playgroud)

然后是简单的printf,将其调用为%s(字符串).它说出来了:

simple.cpp:32: error: cannot convert ‘_IO_FILE*’ to ‘const char*’ for argument ‘1’ to ‘int printf(const char*, ...)’

我将使用什么来定义要在printf中使用的应用程序ID?我试过了:

static const char _APPID_[] = "Hello World"`
Run Code Online (Sandbox Code Playgroud)

但它没有用,我认为同样的错误.

c++ string c-preprocessor

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

处理HTTPS页面中的HTTP内容

我们有一个完全通过HTTPS访问的站点,但有时会显示外部内容,即HTTP(主要来自RSS提要的图像).绝大多数用户也坚持使用IE6.

我理想的是喜欢做以下两种情况

  • 防止关于不安全内容的IE警告消息(以便我可以显示较少侵入性的内容,例如通过使用默认图标替换图像,如下所示)
  • 向用户展示一些有用的东西,代替他们无法看到的图像; 如果有一些JS,我可以找出哪些图像没有加载,并用我们的图像替换它们,这将是伟大的.

我怀疑第一个目标根本不可能,但第二个目标可能就足够了.

最糟糕的情况是我在导入时解析RSS源,抓取图像将它们存储在本地,以便用户可以通过这种方式访问​​它们,但似乎很难获得相当大的收益.

https image http

86
推荐指数
2
解决办法
13万
查看次数

如何设计一个布局可能随时间变化的通用数据库?

这是一个棘手的问题 - 我如何以编程方式创建和查询其内容我无法预见的数据库?

我正在实现一个通用的输入表单系统.用户可以使用WYSIWYG布局创建PHP表单,并将其用于他希望的任何目的.他也可以查询输入.

所以,我们有三个阶段:

  1. 设计并生成表单.虽然可以稍后编辑表单,但这是一次性过程.这设计了数据库.
  2. 有人或几个人使用表格 - 例如每日销售报告,库存,工资单等.他们对表格的输入被写入数据库.
  3. 其他人,也许是管理层,可以查询数据库并生成报告.

由于这些表单是通用的,我无法预测数据库结构 - 除了说它将反映HTML表单字段并且包括来自编辑框,备忘录,单选按钮等的集合的数据输入.

问题和评论:

A)如何在表和列方面最好地构建数据库?主键怎么样?我的第一个想法是使用控件名称来标识每一列,然后我意识到用户可以编辑表单并重命名,这样可能"名称"变为"员工"或"工资"变为":薪水".我倾向于每个人的唯一编号.

B)如何最好地键入行?我在想一个允许我查询的时间戳和来自A的行Id的列

C)我必须处理列重命名/插入/删除.敌人删除,我不确定是否从数据库中删除数据.即使用户不再从表单输入它,他也可能希望查询先前输入的内容.或者可能存在一些保留数据的法律要求.列重命名/插入/删除中的任何问题?

D)对于查询,我可以让我的PHP查询数据库以获取列名并生成一个带有列表的表单,其中每个条目都有一个数据库列名,一个复选框说明它是否应该在查询中使用,并且基于列类型,一些选择标准.这应该足以构建像"position ='高级推销员'和薪水> 50k"这样的搜索.

E)我可能必须生成一些花哨的图表 - 图表,直方图,饼图等,以便随着时间的推移查询数值数据的结果.我需要为此找到一些好的FOSS PHP.

F)我还忘记了什么?

对我来说这一切看起来都很棘手,但我是数据库n00b - 也许你对大师来说很简单?


编辑:请不要告诉我不要这样做.我没有任何选择:-(

编辑:在现实生活中,我不希望列重命名/插入/删除频繁.但是,运行几个月后可能需要更改数据库.我确信这种情况经常发生.我担心我已经严重地提出了这个问题并且人们认为每10分钟左右就会发生变化.

实际上,我的用户将在布置表单时定义数据库.他们可能第一次就做对了,永远不会改变它 - 特别是如果他们从纸质表格转换.即使他们决定改变,这可能只发生一次或两次,数月或数年后 - 这可能发生在任何数据库中.

我不认为我在这里有一个特例,也不认为我们应该专注于改变.或许更好地专注于联系 - 什么是一个好的主键计划?或许,对于一个文本输入,一个数字和一个备忘录?

php sql database database-design dynamic-sql

8
推荐指数
2
解决办法
4150
查看次数

使用背景附件:在ipad上的safari中修复

我正在寻找重建类似于流行科学应用程序的效果.基本上有一个大背景图像,然后有HTML/CSS层.当用户滚动内容时,图像的背景位置应保持原位,而不是滚动.

显然在"常规"浏览器中我会使用background-attachment:fixed,但这似乎不适用于ipad.我知道位置:根据safari规范修复不起作用,但是有没有办法实现这个目标?

css html5 ipad

14
推荐指数
3
解决办法
7万
查看次数