小编Jul*_*anR的帖子

ExtJS:autoLoad在IE中不起作用

使用ExtJS 2.2.1,我有一个容器元素,应该使用以下命令从服务器加载一段HTML:

autoLoad: { url: 'someurl' }
Run Code Online (Sandbox Code Playgroud)

这在Firefox中工作正常,但对于IE7,这会导致在第7170行的ext-all-debug.js中出现语法错误:

 this.decode = function(json){   
   return eval("(" + json + ')');
 };
Run Code Online (Sandbox Code Playgroud)

我通过将该函数转换为此来修复此问题:

 this.decode = function(json){   
    return eval('(function(){ return json; })()');  
 };
Run Code Online (Sandbox Code Playgroud)

然后autoLoad在两个浏览器中都运行良好,但是有一些奇怪的错误,此外,你真的不想在ExtJS库中修复它,因为它将无法维护(特别是在缩小的ext-all.js中,就像是一半单行上的大量Javascript).

我无法找到很多关于这个bug的信息.

我试过的变化:

// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: true }
// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: false }
Run Code Online (Sandbox Code Playgroud)

没有<script>标签,反之亦然.HTML中也没有任何Javascript,但它应该是可能的,因为最终我们将在返回的HTML中使用Javascript.

问题不在HTML中,因为即使使用最简单的HTML,错误也是一样的.

更新 - 对donovan的回应:

使用它的最简单的情况是这一个:

changeRolesForm = new Ext.Panel({
        height: 600,
        items: [{ autoScroll: true, autoLoad: …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer extjs autoload

5
推荐指数
1
解决办法
8726
查看次数

Javascript:我应该隐藏我的实现吗?

作为一名C#程序员,我有一种习惯,就是把私事空间变得私密,当JS类型将所有私密部分暴露给我时,我总会有一种奇怪的感觉(并且这种感觉不会被'唤起' ).说我有具有一种draw方法,它在内部调用drawBackgrounddrawForeground,这是毫无意义要对自己的调用.我该如何实现呢?

选项1

Foo = function(){
  this.draw();  
};

Foo.prototype.draw = function(){
  this.drawBackground();
  this.drawForeground();
};

Foo.prototype.drawBackground = function(){};
Foo.prototype.drawForeground = function(){};
Run Code Online (Sandbox Code Playgroud)

选项2

Foo = (function(){

  var constructor = function(){
    this.draw();
  };

  var drawBackground = function(){};
  var drawForeground = function(){};

  constructor.prototype.draw = function(){
    drawBackground.call(this);
    drawForeground.call(this);
  };

  return constructor;

})();
Run Code Online (Sandbox Code Playgroud)

当然,不同之处在于,在第一个示例中,drawBackgrounddrawForeground方法是公共API的一部分,而在第二个示例中它们被隐藏到外部.这是可取的吗?我应该选择哪一个?将我的C#习惯应用于Javascript我是错误的,我应该在Javascript中使所有内容都可扩展和覆盖吗?那性能影响是.call(this)什么?

javascript oop prototype private-members

5
推荐指数
1
解决办法
152
查看次数

在没有竞争条件的SQL Server中创建顺序发票号

我有一个法律要求,在我们的应用程序(使用SQL Server)发票集合中,我们的编号不会有差距.因此,如果这些是发票号码,则不允许这样做:[1, 2, 3, 4, 8, 10]因为它不是顺序的.为此,我们InvoiceNumberInvoices表格中有一栏.除此之外,我们还有一个InvoiceNumbers表格,其中包含每个组织的当前发票编号(因为每个组织都需要有自己的序列).存储过程是然后在填充负责InvoiceNumberInvoices原子; 它或者在InvoiceNumbers表中将当前计数器递增1 并将该新值填入Invoices表中,或者在发生错误时回滚事务.这很好用.

现在添加了一项新要求:某些订单必须共享相同的发票,因此必须共享相同的发票编号,而以前每个订单都是单独开具发票的.为此,我们在当天开始时创建发票,并将其与当前FinancialPeriod(工作日,基本上)相关联,这将是每个订单使用的发票.但是,组织可能不会创建任何需要共享发票的类型的订单,因此在最初创建的发票(因为第二天创建新发票)的一天中没有任何内容可以开具发票并创建间隙.

现在,对我来说最简单的解决方案是懒洋洋地填写在InvoiceNumber当天开始时创建的共享发票.如果当天创建订单并且InvoiceNumber仍然是NULL,则创建该编号.这将确保InvoiceNumber永远不会被使用(Invoice记录未被使用并不重要,它没有任何实际意义).

为此,我创建了下面的存储过程,对于现有的过程,它会Invoice填充InvoiceNumber但仅在它仍然存在的情况下NULL.我只是不确定SQL Server如何锁定以及是否存在竞争条件的可能性,其中两个数据库事务决定InvoiceNumber仍然存在NULL并且将增加计数器并浪费一个数字,从而产生间隙.

从本质上讲,这个冗长的问题归结为:两个同步数据库事务是否可以决定if(@currentNumber is null)@invoiceID此处进入相同的块?

你看到我从这里得到的锁定部分,但我不确定它是否适用于我的情况:

T-SQL中的悲观锁定

CREATE PROCEDURE [dbo].[CreateInvoiceNumber]
    @invoiceID int,
    @appID int
AS
BEGIN

  SET NOCOUNT ON;

    if not exists (select 1 from InvoiceNumbers where ApplicationID = …
Run Code Online (Sandbox Code Playgroud)

sql sql-server locking race-condition

5
推荐指数
1
解决办法
1651
查看次数

为什么不能对此进行优化?

我有一个函数,我用来添加向量,像这样:

public static Vector AddVector(Vector v1, Vector v2)
{
    return new Vector(
      v1.X + v2.X,
      v1.Y + v2.Y,
      v1.Z + v2.Z);
}
Run Code Online (Sandbox Code Playgroud)

不是很有趣.但是,我为向量重载'+'运算符,在重载中我调用AddVector函数以避免代码重复.我很好奇这是否会导致两个方法调用,或者它是否会在编译或JIT时优化.我发现它确实导致了两个方法调用,因为我总共获得了10%的收益通过复制AddVector的代码以及'+'和'*'运算符重载方法中的点积方法来实现性能.当然,这是一个利基案例,因为它们被称为每秒数万次,但我没想到这一点.我想我希望这个方法可以在另一个方面内联,或者其他东西.我想这不仅仅是方法调用的开销,还包括将方法参数复制到另一个方法(它们是结构).

这没什么大不了的,我可以复制代码(或者只是删除AddVector方法,因为我从来没有直接调用它)但是当我决定为某些东西创建一个方法时,它将会惹恼我很多,比如分裂一个大方法分成几个较小的方法.

c# methods optimization performance

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

我的软阴影代码出了什么问题?

我正在尝试编写一个简单的光线跟踪器作为一个爱好项目,它现在都工作正常,除了我无法使软阴影工作.我对软阴影的想法是,光源被认为具有位置和半径.为了对这个光进行阴影测试,我得到主光线撞击场景中物体的点,并向光源投射n个光线,每个新光线对每个轴都有一个随机分量,随机分量变化介于-radius和radius之间.

如果这样的光线撞击场景中的物体,我会增加一个接收器(如果一条光线击中多个物体,它仍然只增加一个).如果它在没有碰撞的情况下进入光源,我将主光线交叉点到光源中心的距离加到变量上.

当拍摄n个样本时,我计算出碰撞的光线的比率,并将光的颜色乘以该比率(因此,颜色为1000,1000,1000的光将变为500,500,500,比率为0.5,其中一半光线碰撞了).然后我通过将先前的距离变量除以非碰撞射线的数量来计算到光源的平均距离.我返回该变量,函数退出.

问题是:它不起作用.至少不是这样.它的外观可以在这里看到.你可以看到它有点像软阴影,如果你真的很难眯眼.

我不明白,我在这里制造某种根本性的缺陷,还是它有点小?我很确定问题出在这种方法中,因为当我计算这种方法直接产生的部分点亮像素的数量时,只有大约250,当应该有更多.当你仔细观察图片时,你会看到有一些部分亮起的像素,暗示其余的代码处理部分亮起的像素就好了.

这是软阴影类的实际灯光:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyFirstRayTracer
{
  public class AreaLight : ILight
  {
    private const int _radius = 5;
    private const int _samples = 16;
    public Color Color { get; set; }
    public Vector Location { get; set; }
    #region ILight Members

    public float GetLightingInformation(Vector point, ISceneObject[] scene, out Color color)
    {
      int intersectCount = 0;
      float distance = -1;
      for(int i = 0; i < _samples; i++) …
Run Code Online (Sandbox Code Playgroud)

c# algorithm raytracing shadow

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

使用[ThreadStatic]是否与异步代码不一致?

我们有一个相当大的现有代码库,用于构建在ASP.NET之上的各种web服务,并且该代码大量使用访问HttpContext.Current.User(包装为Client.User),我相当确定内部使用它[ThreadStatic]来为您提供环境范围.

我目前正在研究是否有可能我们开始以形式使用更多的异步代码,async/await但我很难找到如何使用[ThreadStatic]它.[ThreadStatic]由于其大量使用,实际上不可能消除对依赖的依赖.

我的理解是,当await命中时,代码的执行在那里停止,调用立即返回,并且设置延续以在异步代码返回时继续执行.同时,原始线程可以自由地用于其他事情,例如处理另一个请求.到目前为止我对它的理解.

我无法真正找到一个确定的答案HttpContext.Current.User是,在之前和之后是否保证是相同的await.

所以基本上:

HttpContext.Current.User = new MyPrincipal();
var user = HttpContext.Current.User;

await Task.Delay(30000);

// Meanwhile, while we wait for that lots of other requests are being handled, 
// possibly by this thread.

Debug.Assert(object.ReferenceEquals(HttpContext.Current.User, user));
Run Code Online (Sandbox Code Playgroud)

这有Debug.Assert保证会成功吗?

如果另一个请求由与Task.Delay挂起的相同的线程处理,那么该请求将设置一个不同的HttpContext.Current.User,那么在调用continuation时以某种方式存储和恢复的先前状态是什么?


我可以想象的是,在幕后,[ThreadStatic]状态被保存为线程本身的某种字典,并且当一个线程返回到线程池后返回await该字典时,该字典在某处保持安全并且在设置回线程时它执行延续(或者在一个线程上,我不确定它是否一定是处理延续的同一个线程),可能是对屁股的鼓励和"去得到他们的男孩!",但最后部分可能只是我的想象力.

这有点准确吗?

更新:我试图将一个小试验放在一起尝试这个.到目前为止它似乎工作,并且断言没有因为数百个请求中的任何一个而失败.谁能验证测试是否有意义?

https://gist.github.com/anonymous/72d0d6f5ac04babab7b6

c# asynchronous threadstatic async-await

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

否定布尔评估的真实性导致5倍减速?

我正在尝试实现一个八叉树,为此,我需要一个快速的AABB射线交叉算法.经过一番搜索,我偶然发现了这篇文章.从这里提供的源代码中,我将pluecker_cls_cff函数转换为C#,如下所示:

public bool Intersect_2(ref RayPluecker r)
{
  switch (r.Classification)
  {

    // 7 same-ish cases snipped

    case Classification.PPP:

      return !((r.Position.X > this.Max.X) || (r.Position.Y > this.Max.Y) || (r.Position.Z > this.Max.Z) ||
        (r.PlueckerCoefficient.X + r.Direction.X * this.Max.Y - r.Direction.Y * this.Min.X < 0) ||
        (r.PlueckerCoefficient.X + r.Direction.X * this.Min.Y - r.Direction.Y * this.Max.X > 0) ||
        (r.PlueckerCoefficient.Y + r.Direction.X * this.Min.Z - r.Direction.Z * this.Max.X > 0) ||
        (r.PlueckerCoefficient.Y + r.Direction.X * this.Max.Z - r.Direction.Z * …
Run Code Online (Sandbox Code Playgroud)

c# performance intersection aabb

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

在python中创建XML文档?

当我尝试在Python中导入elementtree时,我可以得到这个错误吗?

我没有得到任何模块:

ImportError: No module named elementtree.ElementTree
Run Code Online (Sandbox Code Playgroud)

python elementtree

-1
推荐指数
1
解决办法
188
查看次数