小编Jus*_*ant的帖子

从一个常见的模板应用程序"继承"ASP.NET MVC网站?(多租户)

我们正在构建大约10个ASP.NET MVC站点,这些站点具有一组共同的功能(以及相应的URL,路由,控制器,操作和视图).这些站点还将共享一组域对象(例如用户,公司)和这些对象的基本属性(例如名称,地址等).

但每个站点也将高度定制并从基础扩展.例如,我们针对大型上市公司的网站将在公司域对象上具有"子公司"和"股票代码"字段,而我们的初创公司网站将具有"风险公司"和"资金"属性.虽然我们试图尽可能保持HTML的一致性(为额外的域对象属性建模额外的表单字段等),但外观也会有很大差异.我们也会谨慎地覆盖图像,因此我们可以在网站上重复使用相同的按钮图形.

无论如何,我们正试图弄清楚如何最好地分解和构建事物,以便我们可以重用尽可能多的代码和尽可能多的测试,而不会限制我们添加每个应用程序属性的自由,并改变应用程序之间的UI.

我熟悉如何处理有限的自定义多租户,就像你在StackOverflow/SuperUser/ServerFault(或MSDN/TechNet)中找到的那样,UI有点不同,数据模型或多或少相同.但是当模型和UI非常不同(但是从一个共同的基础继承)时,我不太清楚如何继续.

我不太担心操作问题,因为我们可能会在一个单独的appdomain中运行每个站点并将它们托管在不同的数据库中.我更担心的是降低长期代码维护成本,提高灵活性(例如,在不破坏衍生应用程序的情况下轻松添加新功能到基础),以及在构建第2版时实现短期开发/测试成本节省,第3,第4等网站.

我正在寻找高级指导和建议,但也有关于如何使用现代ASP.NET MVC实践来实现该指导的具体建议.

我意识到这是一个非常普遍的问题,但对于初学者,我正在寻找高级指导以及如何在ASP.NET MVC中应用该指导的具体技巧和技巧,包括:

  • 建议在Visual Studio项目中拆分基础/派生的位置
  • 源控制提示,以避免分叉
  • 数据库架构提示(FWIW,我们的数据库都很小 - 每个表10K行以下,所以开发/测试成本比DB perf更重要)
  • 有关重新使用控制器/视图/等的提示.对应于"基础"模型属性,尤其是重新使用UI,例如"新客户"表单,它们将具有基本属性和派生属性的混合.

对于如何构建这样的多租户应用程序,任何人都有很好的建议吗?

architecture asp.net-mvc inheritance dry multi-tenant

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

Python和ElementTree:返回"内部XML",不包括父元素

在使用ElementTree的Python 2.6中,在特定元素中获取XML(作为字符串)的好方法是什么,比如你在HTML和javascript中可以做什么innerHTML

这是我开始使用的XML节点的简化示例:

<label attr="foo" attr2="bar">This is some text <a href="foo.htm">and a link</a> in embedded HTML</label>
Run Code Online (Sandbox Code Playgroud)

我想最终得到这个字符串:

This is some text <a href="foo.htm">and a link</a> in embedded HTML
Run Code Online (Sandbox Code Playgroud)

我已经尝试迭代父节点并连接子节点tostring(),但这只给了我子节点:

# returns only subnodes (e.g. <a href="foo.htm">and a link</a>)
''.join([et.tostring(sub, encoding="utf-8") for sub in node])
Run Code Online (Sandbox Code Playgroud)

我可以使用正则表达式破解解决方案,但是希望有一些不那么讨厌的东西:

re.sub("</\w+?>\s*?$", "", re.sub("^\s*?<\w*?>", "", et.tostring(node, encoding="utf-8")))
Run Code Online (Sandbox Code Playgroud)

python xml elementtree

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

如何从ServiceController确定Windows.Diagnostics.Process

这是我的第一篇文章,所以让我先说一下你好!

我正在编写一个Windows服务来监视同一服务器上许多其他Windows服务的运行状态.我想扩展应用程序以打印服务的一些内存统计信息,但是我无法确定如何从特定的ServiceController对象映射到其关联的Diagnostics.Process对象,我认为我需要确定内存状态.

我发现了如何从ServiceController映射到原始映像名称,但我监视的许多服务都是从同一映像启动的,因此这不足以确定进程.

有谁知道如何从给定的ServiceController获取Process对象?也许通过确定服务的PID?或者,是否有人有这个问题的另一种解决方法?

非常感谢,Alex

.net c# wmi windows-services process

11
推荐指数
1
解决办法
6461
查看次数

python脚本可以知道同一个脚本的另一个实例正在运行...然后与它交谈吗?

我想防止同一个长时间运行的python命令行脚本的多个实例同时运行,我希望新实例能够在新实例自杀之前将数据发送到原始实例.我怎样才能以跨平台的方式做到这一点?

具体来说,我想启用以下行为:

  1. " foo.py"从命令行启动,它将保持运行很长时间 - 几天或几周,直到机器重新启动或父进程终止它.
  2. 每隔几分钟再次启动相同的脚本,但使用不同的命令行参数
  3. 启动时,脚本应查看是否有其他实例正在运行.
  4. 如果其他实例正在运行,则实例#2应将其命令行参数发送到实例#1,然后实例#2应退出.
  5. 实例#1,如果它从另一个脚本接收命令行参数,则应该启动一个新线程并(使用上面步骤中发送的命令行参数)开始执行实例#2将要执行的工作.

所以我正在寻找两件事:python程序如何知道自己的另一个实例正在运行,然后一个python命令行程序如何与另一个进行通信?

使这更复杂,相同的脚本需要在Windows和Linux上运行,因此理想情况下,该解决方案将仅使用Python标准库而不是任何特定于操作系统的调用.虽然如果我需要一个Windows代码路径和一个*nix代码路径(以及if我的代码中的一个大语句来选择其中一个),那么如果无法实现"相同代码"解决方案就没问题.

我意识到我可能会找到一个基于文件的方法(例如,实例#1监视一个目录进行更改,每个实例在它想要工作时将文件放入该目录)但是我有点担心清理这些文件在非优雅的机器关闭后.理想情况下,我可以使用内存解决方案.但是我再次灵活,如果基于持久文件的方法是唯一的方法,我会对这个选项持开放态度.

更多细节:我正在尝试这样做,因为我们的服务器正在使用监视工具,该工具支持运行python脚本来收集监视数据(例如,数据库查询或Web服务调用的结果),监视工具随后将其编入索引供以后使用.其中一些脚本启动起来非常昂贵,但在启动后运行起来很便宜(例如,建立数据库连接而不是运行查询).所以我们选择让它们在无限循环中运行,直到父进程杀死它们.

这很好用,但是在较大的服务器上,同一个脚本的100个实例可能正在运行,即使它们每个仅每20分钟收集一次数据.这会对RAM,数据库连接限制等造成严重破坏.我们希望将100个进程从1个线程切换到100个线程的进程,每个进程执行以前一个脚本正在执行的工作.

但是,无法更改监视工具调用脚本的方式.我们需要保持调用相同(使用不同的命令行参数启动进程),但是更改脚本以识别另一个是活动的,并让"new"脚本发送其工作指令(从命令行参数)到"旧"剧本.

顺便说一句,这不是我想要在一个脚本基础上做的事情.相反,我想将这种行为打包到一个许多脚本作者可以利用的库中 - 我的目标是使脚本作者能够编写不知道多实例问题的简单的单线程脚本,并处理多线程和单一实例的封面.

python command-line multithreading ipc interprocess

11
推荐指数
2
解决办法
3093
查看次数

使用 useState“setter”函数作为回调引用是否安全?

useState钩子的 setter 函数用作回调 ref 函数是否安全?这是否会导致 Suspense 或其他即将到来的 React 更改出现问题?如果“是的,这没问题”,那就太酷了!如果“不”为什么不呢?如果“可能”,那么什么时候可以,什么时候不行?

我这么问是因为我的一个组件在调用 DOM API 之前需要挂载三个 refs。其中两个必需的 ref 是通过 JSXref道具在同一组件中分配的“普通” ref 。另一个 ref 将在稍后的某个时间通过 React 上下文分配到一个深层嵌套的组件中。我需要一种方法来在安装所有三个引用后强制重新渲染父组件,并useEffect在卸载任何引用时强制进行清理。

最初我编写了自己的回调引用处理程序,它调用了useState我存储在上下文提供程序中的setter。但后来我意识到useStatesetter 做了我自己的回调 ref 所做的一切。仅使用 setter 而不是编写自己的回调 ref 函数是否安全?或者有没有更好和/或更安全的方法来做我想做的事情?

我尝试谷歌搜索"useState" "callback ref"(和其他类似的关键字变体)但结果没有帮助,除了@theKashey的优秀use-callback-ref包我肯定会在其他地方使用(例如,当我需要将回调引用传递给组件时)需要一个 RefObject,或者当我需要一个回调并在本地使用一个 ref 时)但在这种情况下,所有回调需要做的就是在 ref 更改时设置一个状态变量,所以 Anton 的包在这里似乎有点过分了。

下面和https://codesandbox.io/s/dreamy-shockley-5dc74 有一个简化的例子。

import * as React from 'react';
import { useState, forwardRef, useEffect, createContext, useContext, useMemo } from 'react';
import { …
Run Code Online (Sandbox Code Playgroud)

reactjs react-context react-hooks react-suspense

11
推荐指数
1
解决办法
808
查看次数

Django自定义模板标记,它接受一个布尔参数

根据django-developers列表中的这个线程,我不能将常量False作为参数传递给Django模板标记,因为它将被视为变量名而不是内置常量.

但是如果我想创建一个模板标签需要一个真/假参数,那么建议(在Python中)和调用(在模板中)该模板标签的方法是什么?

我可以简单地在模板中传递1或0并且它可以正常工作,但鉴于Django模板创作不应该需要计算机编程知识(例如1 == True,0 == False)模板编写者,我想知道是否存在是处理这种情况的更合适的方法.

标签定义和用法示例:

@register.simple_tag
def some_tag(some_string, some_boolean = True):
    if some_boolean:
        return some_html()
    else
        return some_other_html()

<!-- Error!  False treated as variable name in Request Context -->
{% some_tag "foobar" False %}

<!-- Works OK, but is there a better option? -->
{% some_tag "foobar" 0 %}
Run Code Online (Sandbox Code Playgroud)

python django django-templates

9
推荐指数
1
解决办法
2998
查看次数

给定10个函数y = a + bx和1000个(x,y)数据点四舍五入到整数,如何导出10个最佳(a,b)元组?

我们构建的软件可以审核银行向接受信用卡和借记卡的商家收取的费用.我们的客户希望我们告诉他们卡处理器是否过度充电.每笔交易信用卡费用的计算如下:

fee = fixed + variable*transaction_price
Run Code Online (Sandbox Code Playgroud)

"费用计划"是(fixed, variable)由一组信用卡使用的对,例如"由好莱坞第一国家银行发行的万事达卡商业借记卡金卡".我们认为在任何时候使用的费用计划少于10种,但我们没有从合作伙伴处获得完整的或当前的费用计划清单.(是的,我知道一些"费用计划"比上面的等式更复杂,因为有上限和其他陷阱,但我们的交易已知只有a + bx使用的方案).

以下是我们要解决的问题:我们希望使用有关费用的每笔交易数据来推导使用中的费用方案.然后,我们可以比较该列表的费用计划,每个客户应该根据自己的银行使用.

我们获得的每个事务的数据是一个数据元组:(card_id, transaction_price, fee).

transaction_price并且fee是整数美分.银行每次转账都会超过分数美分,直到累计金额超过1美分,然后"四舍五入"将附加到该交易的费用上.我们无法预测哪些交易将附加"四舍五入".

card_id识别一组共享相同费用计划的卡.在10,000个交易的典型日子里,可能有数百个独特card_id的交易.多个人card_id将分享费用计划.

我们得到的数据看起来像这样,我们想要弄清楚的是最后两列.

card_id    transaction_price       fee        fixed        variable
=======================================================================
12345      200                     22         ?            ?
67890      300                     21         ?            ?
56789      150                      8         ?            ?
34567      150                      8         ?            ?
34567      150    "rounding cent"-> 9         ?            ?
34567      150                      8         ?            ?
Run Code Online (Sandbox Code Playgroud)

我们想要的最终结果是一个这样的简短列表,其中10个或更少的条目显示了最适合我们数据的费用方案.像这样:

fee_scheme_id       fixed     variable
======================================
1                      22            0
2 …
Run Code Online (Sandbox Code Playgroud)

c# sql algorithm statistics cluster-analysis

9
推荐指数
1
解决办法
337
查看次数

即使我的应用未运行,也可确保在网络重新连接后上传内容

我正在指定一个iOS应用程序(将在我们公司之外构建),它将用户的数据条目上传到服务器.如果设备未连接到Internet,我们希望在设备上保存数据并在重新连接网络时上传数据.(该应用程序将主要在大多数时间将断开连接的iPod Touch设备上运行).

如果用户在重新连接网络后解锁设备并重新打开我们的应用程序,那么上传到服务器应该很容易,因为应用程序正在运行.

但是,如果应用程序没有运行,"未运行"可能意味着以下一个或多个:

  • 设备重启电源
  • 用户已锁定设备并将其放在口袋中
  • 应用程序崩溃了
  • 用户退出了应用程序
  • 用户开始使用其他应用程序,因此我们的应用程序不再在前台运行
  • 还有其他情况吗?

在上述情况下,有没有办法(理想情况下是节省电池的方式)确保在恢复互联网连接后很快上传本地数据?答案是否有所不同取决于上述哪些案例导致应用程序无法运行?

是否有设备所需的最低iOS版本,以便在应用程序未运行时仍能上传部分(或全部)上述未运行的案例?

如果这些是明显的新手问题我很抱歉 - 我不是iOS专家.

multitasking reachability ios

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

如何在启用isolatedModules = true选项的情况下创建包?

在一个文件中,我在以下行中导出包的所有类:

export {default as BoundList, IBoundListOption, TBoundListFilterFn} from './list/BoundList';
Run Code Online (Sandbox Code Playgroud)

生成表格错误:

TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided.
Run Code Online (Sandbox Code Playgroud)

我现在如何导出课程?

在CRA2.1中发生此问题。不得不强制执行isolatedModules = true。我正在CRA2.1上制作组件库

typescript reactjs babeljs create-react-app

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

如何防止非类 TypeScript 接口上的“@typescript-eslint/unbound method”错误?

下面的代码不使用类或this. 如何防止仅函数(无类)代码中的 typescript-eslint 错误?我知道我可以全局禁用该规则,但该规则对类代码很有用。我知道我可以一次禁用它一行,但考虑到在 TS 接口中定义回调函数是多么普遍,这似乎很痛苦。还有其他方法吗?

这是问题的一个简化示例:

interface FooProps {
  bar(): void;
}

export function foo(props: FooProps) {
  const { bar } = props;
  // ^^^ Avoid referencing unbound methods which may cause unintentional scoping of `this`.
  //     eslint(@typescript-eslint/unbound-method)
  return bar;
}
Run Code Online (Sandbox Code Playgroud)

typescript typescript-eslint

8
推荐指数
1
解决办法
3695
查看次数