最近我一直在阅读HDFS(Hadoop)和GFS(谷歌),并发现自己想知道是否有任何类似的Windows和/或.NET本机实现.我开发的许多应用程序都包含支持用户生成内容的功能,目前,这意味着依赖某种类型的存储服务,如Mosso或S3,或者在我的服务器场中使用某种类型的NAS.我对一个允许我在本地模仿Mosso或S3风格的设置感兴趣,这样我的文件就会自动存储在多台机器上并具有高可用性.
除了Windows的内置DFS(需要Active Directory,它没有在我的服务器场上运行)之外,还有什么能满足C#的需求吗?
我有以下界面:
public interface ILogger
{
void Debug(string message, params object[] values);
void Info(string message, params object[] values);
void Warn(string message, params object[] values);
void Error(string message, params object[] values);
void Fatal(string message, params object[] values);
}
Run Code Online (Sandbox Code Playgroud)
以及以下实施:
public class Log4netLogger : ILogger
{
private ILog _log;
public Log4netLogger(Type type)
{
_log = LogManager.GetLogger(type);
}
public void Debug(string message, params object[] values)
{
_log.DebugFormat(message, values);
}
// other logging methods here...
}
Run Code Online (Sandbox Code Playgroud)
我的想法是使用structuremap使用执行日志记录的类的Type来实例化Log4netLogger类.但是,我不能为我的生活弄清楚如何将调用类的类型传递给structuremap,以便它可以传递给日志记录实现的构造函数.关于如何做到这一点(或更好的方式)的任何建议都将是最受欢迎的.
我有一张表,其中包含美国每个邮政编码的记录.为了在地图上显示,我需要为每个州选择X个随机记录.我该怎么做呢?
作为我公司的标准,所有代码文档都使用4个空格而不是制表符,并且根据需要将所有选项卡替换为4个空格.这一切都很好,花花公子.但是,最近我发现每当Nuget对我的web.config执行更新时,整个文件将被重写为2个空格,而不是每个级别的缩进4个空格.这真的很烦人,因为它导致我们的VCS认为当只有几行实际拥有时整个文件已经改变.有办法防止这种情况吗?
我有一个具有自己风格的组件,例如
.prompt { color: red; }
Run Code Online (Sandbox Code Playgroud)
声明为:
import cn from 'classnames';
import styles from './styles.css';
const MyComponent = ({className}) => {
return (
<div className={cn(styles.prompt, className)}>
test
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
在我的特定用例中,将实际定义要传入的className的样式表,并将其添加到模块的样式表之前的头部,因此模块的css始终会覆盖传入的className的样式。类似:
请注意,background: yellow来自第二类的from被模块自身类的背景覆盖。
除了在辅助类中使用!important之外,我该如何解决?
我非常喜欢ASP.NET MVC的工作方式.我希望在所有新的Web项目上实现它,但是前几天我在原型中遇到了一个问题,我真的没有找到一个好的解决方案,所以我问你,你将如何设计一个MVC应用程序那不符合典型的REST模式?作为一个例子,我设计的原型将有几个页面,但页面本身不一定绑定到域模型.例如,使用一个简单的注册站点,该站点可能包含以下页面:
有时,这样的程序可能需要管理部分来处理诸如调节注册或查看数据等细节.在标准的ASP.NET Web应用程序中,我可能会添加以下内容
在这种情况下,它是否会与MVC模式产生不可接受的偏差,因为它有两个控制器,例如:
由于没有真正可靠的子控制器和区域实现这一事实,我对此感到沮丧.我知道Phil Haack组装的"区域"原型,但它不是很成熟,坦率地说,我不确定我喜欢它的设置方式,但我真的不知道我是怎么想的看到那项工作.
我想当我认为MVC时,我倾向于认为REST,并且拥有代表页面而不是实际实体或动作的控制器动作并不适合我.你怎么看?
我正在尝试将MVC用于一个新项目之后,我已经使用了所有的示例和教程等.但是,我很难弄清楚某些事情应该发生在哪里.
例如,我有一个名为Profile的实体.此实体包含常规配置文件类型的东西以及DateTime类型的DateOfBirth属性.在HTML表单上,出生日期字段分为3个字段.现在,我知道我可以使用自定义模型绑定器来处理这个问题,但如果输入的日期不是有效日期怎么办?我应该在模型装订器中检查它吗?我的所有验证都应该放在模型装订器中吗?是否可以在模型绑定器中仅验证一些内容并在控制器或模型本身中验证其余内容?
这是我现在的代码,但它看起来不对我.看起来很脏或很臭.
namespace WebSite.Models
{
public class ProfileModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
DateTime birthDate;
var form = controllerContext.HttpContext.Request.Form;
var state = controllerContext.Controller.ViewData.ModelState;
var profile = new Profile();
profile.FirstName = form["FirstName"];
profile.LastName = form["LastName"];
profile.Address = form["Address"];
profile.Address2 = form["Address2"];
profile.City = form["City"];
profile.State = form["State"];
profile.Zip = form["Zip"];
profile.Phone = form["Phone"];
profile.Email = form["Email"];
profile.Created = DateTime.UtcNow;
profile.IpAddress = controllerContext.HttpContext.Request.UserHostAddress;
var dateTemp = string.Format("{0}/{1}/{2}",
form["BirthMonth"], form["BirthDay"], form["BirthYear"]);
if (string.IsNullOrEmpty(dateTemp))
state.AddModelError("BirthDate", "Required");
else if …Run Code Online (Sandbox Code Playgroud) 我从一个网站查询需要15-30秒,而同一查询在0.5秒内从SQL Server Management工作室运行.我无法使用SQL事件探查器看到任何锁定问题,也无法从SSMS手动重现延迟.一个星期前,我分离并重新连接数据库,似乎奇迹般地解决了这个问题.今天当问题又重新出现时,我只是试图重建索引.这也解决了这个问题.但是,我认为这不一定是索引问题,因为根据我的知识,索引不会在简单的分离/附加上自动重建.
知道什么可能导致延迟吗?我的第一个想法是,可能有一些参数嗅探正在调用的存储过程(所述存储过程运行CTE,如果这很重要)导致错误的查询计划,这将解释问题的间歇性.由于分离/重新附加和索引重建在理论上应该使缓存的查询计划无效,这是有道理的,但我不确定如何验证这一点.另外,为什么在通过SSMS手动运行时,相同的查询(直接从带有完全相同参数的SQL事件探查器复制)会出现相同的延迟?
有什么想法吗?
我一直在为我们的一些项目寻找一个好的NoSQL数据库已经有一段时间了,我最近发现从.NET支持的角度看起来非常棒的RavenDB,所以我决定尝试一下并编写一些基准.第一项业务是使用以下代码测试插入速度:
class Program
{
private const int TEST_COUNT = 10000;
static void Main(string[] args)
{
var store = new DocumentStore();
store.Url = "http://localhost:8117";
store.Initialize();
var timer = Stopwatch.StartNew();
var session = store.OpenSession();
for (var i = 0; i < TEST_COUNT; i++)
{
session.Store(new TestEntity()
{
Name = "Test Entity"
});
if (i % 127 == 0)
{
session.SaveChanges();
session.Dispose();
session = store.OpenSession();
}
}
session.SaveChanges();
session.Dispose();
timer.Stop();
Console.WriteLine("Processed {0:n0} records", TEST_COUNT);
Console.WriteLine("Time elapsed: {0:n0} ms", timer.ElapsedMilliseconds);
Console.WriteLine("Records / sec: {0:n0}", …Run Code Online (Sandbox Code Playgroud) 在ASP.NET MVC 2中,您将如何绑定视图模型属性,该属性是DateTime,其中应用程序必须具有3个下拉列表以选择月,日,年?我已阅读Scott H.的博客文章一段时间以前的约束日期,这对于这样一个简单的案例来说似乎完全过于复杂.当然有更干净/更好的方法吗?
无论我使用什么解决方案,我都希望使用DataAnnotations保留内置验证,并且我还希望能够使用验证属性指定最小/最大日期范围.
我的第一个想法是这样一个简单的自定义模型绑定器:
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
{
var model = bindingContext.Model as RsvpViewModel;
var form = controllerContext.HttpContext.Request.Form;
if (model == null)
throw new ArgumentException("bindingContext.Model");
if (propertyDescriptor.Name.Equals("BirthDate"))
{
if (!string.IsNullOrEmpty(form["BirthYear"]) &&
!string.IsNullOrEmpty(form["BirthMonth"]) &&
!string.IsNullOrEmpty(form["BirthDay"]))
{
try
{
var yy = int.Parse(form["BirthYear"]);
var mm = int.Parse(form["BirthMonth"]);
var dd = int.Parse(form["BirthDay"]);
model.BirthDate = new DateTime(yy, mm, dd);
return;
}
catch (Exception)
{
model.BirthDate = DateTime.MinValue;
return;
}
}
}
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试创建一个DateTimeAttribute来进行验证,但是在属性声明中指定日期范围遇到了一些困难,因为属性参数类型是有限的,而DateTime不是允许类型之一. …
asp.net ×2
asp.net-mvc ×2
sql-server ×2
.net ×1
c# ×1
css-modules ×1
distributed ×1
filesystems ×1
nuget ×1
performance ×1
ravendb ×1
reactjs ×1
rest ×1
sql ×1
structuremap ×1
t-sql ×1