小编Rem*_*anu的帖子

REST API错误返回良好实践

在从REST API返回错误时,我正在寻找有关良好实践的指导.我正在开发一个新的API,所以我现在可以采取任何方向.我的内容类型目前是XML,但我计划将来支持JSON.

我现在正在添加一些错误情况,例如客户端尝试添加新资源但已超出其存储配额.我已经使用HTTP状态代码处理某些错误情况(401用于身份验证,403用于授权,404用于普通错误请求URI).我查看了有福的HTTP错误代码,但400-417范围似乎没有报告特定于应用程序的错误.所以起初我很想用200 OK和特定的XML有效载荷返回我的应用程序错误(即付给我们更多,你将得到你需要的存储空间!)但是我停下来思考它并且似乎是肥皂(/耸耸肩恐怖).此外,感觉就像我将错误响应分成不同的情况,因为有些是http状态代码驱动而其他是内容驱动.

那么行业建议是什么?好的做法(请解释原因!)以及从客户端pov中,REST API中的哪种错误处理使客户端代码的生活更轻松?

rest web-services http

612
推荐指数
10
解决办法
26万
查看次数

反映参数名称:滥用C#lambda表达式还是语法亮度?

我正在看MvcContrib网格组件,我很着迷,但同时被网格语法中使用的语法技巧击退:

.Attributes(style => "width:100%")
Run Code Online (Sandbox Code Playgroud)

上面的语法将生成的HTML的style属性设置为width:100%.现在如果你注意,"风格"没有指定,是从表达式中参数的名称推断出来的!我不得不深入研究这个并发现"神奇"发生的地方:

Hash(params Func<object, TValue>[] hash)
{
    foreach (var func in hash)
    {
        Add(func.Method.GetParameters()[0].Name, func(null));
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上,代码使用正式的编译时,参数名来创建属性名称 - 值对的字典.结果语法结构确实非常具有表现力,但同时也非常危险.lambda表达式的一般用法允许替换使用的名称而没有副作用.我在一本书中看到一个例子,说collection.ForEach(book => Fire.Burn(book))我知道我可以用我的代码编写collection.ForEach(log => Fire.Burn(log)),这意味着同样的事情.但是使用MvcContrib网格语法突然间,我发现代码主动查找并根据我为变量选择的名称进行分解!

这是C#3.5/4.0社区和lambda表达爱好者的常见做法吗?或者是一个我不应该担心的流氓一招特立独行?

c# asp.net-mvc lambda mvccontrib

425
推荐指数
18
解决办法
3万
查看次数

GDB备忘单

任何人都可以为gbd推荐一个好的备忘单吗?我对windbg命令很有经验,我正在为lml(列表加载模块),〜*k(所有线程堆栈),ba(访问中断),dt(转储类型),dv(转储帧变量)寻找gdb等价物),sxe(设置SEH处理程序)等我知道不会有1比1的等价物,但我只需要大多数使用/有用的命令的简要总结.

debugging xcode gdb

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

你/你应该在.NET应用程序中使用SQL Server Service Broker吗?

我在数据库中有许多需要触发应用程序代码的操作.目前我正在使用数据库轮询,但我听说SQL Server Service Broker可以提供类似MSMQ的功能.

  1. 我可以从在不同计算机上运行的.NET应用程序中侦听SQL Server Service Broker队列吗?
  2. 如果是的话,我应该这样做吗?
  3. 如果没有,你会推荐什么?

.net sql-server message-queue service-broker

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

CSS中的inherit关键字有什么作用?

有人可以解释一下,CSS中的遗传关键字是什么意思?

css

19
推荐指数
1
解决办法
9337
查看次数

使用Windows身份验证或SQL身份验证访问localhost\SQLEXPRESS需要使用的sql连接字符串是什么?

我已经在我的PC上安装了SQL Express,希望能够做一些创建表然后修改它们的做法.我在Visual Studio中编写了一个网页,基本上是从SQLEXPRESS中的表中选择SELECT*,但我永远无法使连接字符串起作用.请帮忙

我的连接字符串

"Data Source = localhost\SQLEXPRESS; Initial Catalog = test; User Id = xaa9-PC\xaa9; Password = abcd;"

错误信息:

查询是从tblCustomers中选择*其中username ='johndoe'错误是用户'x309-PC\x309'登录失败.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Exception:查询是从tblCustomers中选择*其中username ='johndoe'错误是用户'x309-PC\x309'登录失败.

sql-server

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

在JOIN中使用时,使用Containstable的Sql服务全文搜索非常慢!

我正在使用sql 2008全文搜索,我遇到严重的性能问题,具体取决于我如何使用Contains或ContainsTable.

下面是示例:(表一有大约5000条记录,table1上有一个覆盖索引,其中包含where子句中的所有字段.我试图简化语句,如果有语法问题,请原谅我.)

场景1:

select * from table1 as t1
where t1.field1=90
and   t1.field2='something'
and   Exists(select top 1 * from containstable(table1,*, 'something') as t2 
where t2.[key]=t1.id)
Run Code Online (Sandbox Code Playgroud)

结果:10秒(非常慢)

场景2:

select * from table1 as t1
join containstable(table1,*, 'something') as t2 on t2.[key] = t1.id
where t1.field1=90
and   t1.field2='something'
Run Code Online (Sandbox Code Playgroud)

结果:10秒(非常慢)

场景3:

Declare @tbl Table(id uniqueidentifier primary key)
insert into @tbl select {key] from containstable(table1,*, 'something')

select * from table1 as t1
where t1.field1=90
and   t1.field2='something'
and  Exists(select id from @tbl as tbl …
Run Code Online (Sandbox Code Playgroud)

sql-server performance full-text-search

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

基于SQL的数据差异:最长的公共子序列

我正在寻找研究论文或着作,将最长公共次序算法应用于SQL表以获得数据差异视图.关于如何解决表差异问题的其他方法也受到欢迎.挑战在于SQL表有这种令人讨厌的习惯,即相当大而且应用为文本处理而设计的简单算法可能会导致程序永无止境......

给一张桌子Original:

Key  Content
1    This row is unchanged
2    This row is outdated
3    This row is wrong
4    This row is fine as it is
Run Code Online (Sandbox Code Playgroud)

和表New:

Key Content
1   This row was added
2   This row is unchanged
3   This row is right
4   This row is fine as it is
5   This row contains important additions
Run Code Online (Sandbox Code Playgroud)

我需要找出Diff:

+++ 1 This row was added
--- 2 This row is outdated …
Run Code Online (Sandbox Code Playgroud)

sql algorithm diff

12
推荐指数
1
解决办法
1192
查看次数

转换和验证日期字符串的最佳方法

我在存储过程中有一个char(8)变量格式化为ddmmyyyy(此值的质量和有效性未知且超出我的控制范围).将值移动到datetime变量的最有效方法是什么,如果它不是有效的datetime则抛出错误.

DECLARE @Source       char(8)
DECLARE @Destination  datetime

SET @Source='07152009'

--your solution here


SELECT @Destination
Run Code Online (Sandbox Code Playgroud)

这是我能想到的最佳方式:

DECLARE @Source             char(8)
DECLARE @Temp               varchar(10)
DECLARE @Destination        datetime

set @Source='07152009'
SET @Temp=LEFT(@Source,2)+'/'+SUBSTRING(@Source,3,2)+'/'+RIGHT(@Source,4)

IF ISDATE(@Temp)!=1
BEGIN
    RAISERROR('ERROR, invalid date',16,1)
END
SET @Destination=@Temp

SELECT @Source AS Source, @Temp AS  Temp, @Destination AS Destination
Run Code Online (Sandbox Code Playgroud)

编辑这里是我要去的...

DECLARE @Source             char(8)
DECLARE @Destination        datetime

set @Source='07152009'
BEGIN TRY
    SET @Destination=CONVERT(datetime,RIGHT(@Source,4)        -- YYYY
                                      +LEFT(@Source,2)        -- MM
                                      +SUBSTRING(@Source,3,2) -- DD
                             )
END TRY
BEGIN CATCH
    PRINT 'ERROR!!!' --I'll add a little …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2005

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

检测应用程序是否作为HTTP服务器启动(rake task,rconsole等)

我正在使用EventMachineMonetarily来启动e TCP服务器以及我的rails应用程序.这是从config/initializers/momentarily.rb.

我的问题是,当我运行rake任务时,它也会启动db:migrate.我只想在启动HTTP服务器时启动它.环境无济于事,因为服务器启动和rake任务都在开发环境下.有没有办法知道应用程序正在运行HTTP服务器而不是其他任何东西?请注意,不仅是rake任务,如果我运行rails控制台,EM也会启动,这对我的情况来说也是不可取的.

ruby rake ruby-on-rails eventmachine

11
推荐指数
3
解决办法
2493
查看次数