我有以下3个rails类,它们都存储在一个表中,使用rails的单表继承.
class Template < ActiveRecord::Base
class ThingTemplate < Template
class StockThingTemplate < ThingTemplate
Run Code Online (Sandbox Code Playgroud)
如果我有一个StockThingTemplateID,150那么我应该在逻辑上能够做到这一点:
ThingTemplate.find(150)
=> #returns me the StockThingTemplate
Run Code Online (Sandbox Code Playgroud)
而事实上这个工程,有时
当它工作时,它会生成以下SQL查询:
SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') OR (templates.`type` = 'StockThingTemplate' ) )
Run Code Online (Sandbox Code Playgroud)
如果它不起作用,它会生成以下SQL查询:
SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') )
Run Code Online (Sandbox Code Playgroud)
sql正在做它应该做的事情,但问题是,为什么它一次生成一组SQL,另一次生成另一组.它的字面意思完全相同.
笔记:
require 'stock_thing_template'在不同的地方尝试过了.它要么没有效果,要么引起其他问题我需要在IIS 6.0上编写应用程序池和网站的脚本.我已经能够使用adsutil.vbs和iisweb.vbs创建这些,但不知道如何将我刚刚创建的站点的ASP.NET版本设置为2.0.50727.0.
理想情况下,我想adsutil.vbs更新元数据库.我该怎么做呢?
在没有深入讨论EntLib日志块的优点或其他内容的情况下,有什么方法可以在运行时更改它的配置?
例如,我将块配置为将常规事件记录到平面文件,将重要事件记录到事件日志.
是否有任何方法可以更改它以将常规事件记录到控制台等,而无需重新启动我的应用程序?
澄清:我正在编写一个长期运行的服务器应用程序.我希望能够临时增加各种日志记录组的详细程度/输出以进行诊断/故障排除,而无需重新启动应用程序.重启不是一种选择,因为它意味着生产中的"站点停机".
我有一个aspnetcore Web应用程序,我希望它编写它的当前版本,以及它启动时在其日志上运行的dotnet core运行时版本。
我想这样做,因为我的Web应用程序可以在云中的各种VM上运行,并且希望能够查看所有日志中的日志,并确保它们都运行相同的dotnet核心运行时版本。
我想要的是这样的东西。
App version 1.0.1 running on dotnet 2.0.6
Run Code Online (Sandbox Code Playgroud)
获取我的应用程序版本很容易(只是汇编版本),但是,我找不到获取dotnet运行时版本的方法吗?
我已经看到了各种各样的东西,都引用了Microsoft.DotNet.PlatformAbstractions nuget包,但是这似乎根本没有给我dotnet运行时版本。
还有System.Environment.Version,但是它报告的4.0.30319.42000是“桌面” dotnet 4.6+框架版本,而不是dotnet核心版本。
有人可以帮忙吗?
谢谢
给定以下内容:
var tPass1 = Task.FromResult(1);
var tFail1 = Task.FromException<int>(new ArgumentException("fail1"));
var tFail2 = Task.FromException<int>(new ArgumentException("fail2"));
var task = Task.WhenAll(tPass1, tFail1, tFail2);
task.Wait();
Run Code Online (Sandbox Code Playgroud)
对task.Wait()的调用将引发一个AggregateException,其内部异常包含fail1和fail2异常。但是如何获得tPass1成功的结果?
这可能吗?
我知道可以在完成后从单个任务中获取结果WhenAll,tPass1.Result但是可以通过一种方法将它们放入数组中,而不必手动跟踪送入的所有内容WhenAll?
我想做的是这样的:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
# more stuff
Run Code Online (Sandbox Code Playgroud)
但是,这需要在无法访问互联网的隔离的干净构建机器上运行,因此我需要通过本地镜像服务器(例如 Artifactory 或 Nexus 或其他类似的东西)路由它
如果 docker 镜像托管在 docker hub 上(例如来自 ubuntu),那么--registry-mirrors docker配置选项将为我们解决这个问题。
但是因为微软决定不使用 docker hub,所以注册表镜像也不起作用。
经过一番努力,我已经为 mcr.microsoft.com 设置了自定义域镜像,现在我可以执行以下操作:
FROM microsoft-docker-mirror.local.domain/dotnet/core/aspnet:3.0-alpine
# more stuff
Run Code Online (Sandbox Code Playgroud)
这样可行。但是我们有远程工作人员,他们可能不在本地办公室 LAN 上,并且看不到我的本地镜像服务器。我现在想做的是根据环境改变它。例如
ENV MICROSOFT_DOCKER_REPO mcr.microsoft.com
FROM ${MICROSOFT_DOCKER_REPO}/dotnet/core/aspnet:3.0-alpine
Run Code Online (Sandbox Code Playgroud)
我的独立构建机器将设置MICROSOFT_DOCKER_REPO环境变量,其他人的机器将使用默认值mcr.microsoft.com
反正。将行添加ENV到 dockerfile 会导致 docker 抛出此错误:
Error response from daemon: No build stage in current context
Run Code Online (Sandbox Code Playgroud)
似乎有很多参考文献指出 FROM 行必须是文件中的第一行,甚至在任何注释之前......我如何在 FROM 语句中引用环境变量?或者,如何使注册表镜像适用于 docker hub 之外的事物?
谢谢!
我正在做一些想要存储大量“审计记录”样式数据的事情。例如“用户创建了一个事物”、“用户删除了一个事物”、“用户有 27 个事物”。我们希望将其存储在云中(AWS 或可能的 Azure)。理想情况下,我想使用云原生服务,这样我就不必担心扩展服务器实例、分片等问题。
此类数据主要是连续的写入流,并且经常是一个大型“报告”样式查询,我们在其中汇总或计算给定日期范围内的大量数据。我们几乎不需要查询单个记录。
“AWS 中的云数据库”的首选似乎是 DynamoDB,但是定价模型以及我读过的文章似乎暗示它更多是为事务模型而设计的。写入比读取昂贵一个数量级,这与我的用例相反。
那些对云有深入了解的人 - 请问:您将使用什么服务来存储此类数据并在其上运行报告?DynamoDB 在这里是一个糟糕的选择吗?
database architecture cloud amazon-web-services amazon-dynamodb
我暂时写了这个方法:
public static Func<T> WeakCacheFor<T>( Func<T> provider ) where T: class
{
var cache = new WeakReference(null);
return () => {
var x = (T)cache.Target;
if( x == null )
{
x = provider();
cache.Target = x;
}
return x;
};
}
Run Code Online (Sandbox Code Playgroud)
所以有点背景:
我有一些冗长的遗留方法,看起来有点像这样:
var id = GetDatabaseId();
if(a){
var data = GetLoader().Init(id).GetData(); // expensive!
// do stuff with data
}
if(b){
// don't load data
}
... lots more variations, some contain GetLoader().Init(id).GetData(); some don't....
Run Code Online (Sandbox Code Playgroud)
我的潜在解决方案是这样做:
var id = …Run Code Online (Sandbox Code Playgroud) 我遇到以下问题:
我们的用户正在使用运行Mac OS Leopard的Mac通过AFP连接到运行Tiger Server(版本10.4.11)的Xserve.
在Xserve上,我创建了一个名为"staff"的用户组(使用Directory Admin)并将一些用户帐户放入该组.然后我让我希望他们能够访问的文件夹的组"staff"所有者.
现在,每当任何用户访问服务器上的文件并保存它时,其权限将恢复为用户的权限而不是"人员"的权限.更奇怪的是:当我通过AFP创建一个新文件夹,并给予"员工"读/写权限时,它立即恢复为"所有人:无法访问"
我很奇怪了.任何指向解决方案的指针都将非常感激.
c# ×3
.net ×2
.net-core ×1
architecture ×1
asp.net ×1
asynchronous ×1
caching ×1
cloud ×1
database ×1
docker ×1
hardware ×1
iis ×1
inheritance ×1
logging ×1
macos ×1
permissions ×1
ruby ×1
serial-port ×1
sysadmin ×1
task ×1
vbscript ×1