小编Awe*_*own的帖子

使用jQuery的数据存储区与expando属性

我正在使用jQuery开发代码,需要存储与某些DOM元素相关的数据.关于如何使用html元素存储任意数据还有很多其他问题,但我更感兴趣的是为什么我会选择一个选项而不是另一个.

为了极其简化的参数,我想要存储一个"lineNumber"属性,其中每一行都是"有趣"的表.

选项1只是在每个DOM元素上设置一个expando属性(我希望我正确使用'expando'一词):

$('.interesting-line').each(function(i) { this.lineNumber = i; });
Run Code Online (Sandbox Code Playgroud)

选项2是使用jQuery的data()函数将属性与元素相关联:

$('.interesting-line').each(function(i) { $(this).data('lineNumber', i); });
Run Code Online (Sandbox Code Playgroud)

忽略我的示例代码的任何其他缺点,是否有充分的理由为什么您会选择一种方法来存储属性而不是另一种?

javascript jquery expando

17
推荐指数
2
解决办法
7425
查看次数

在C#和DB中创建Guid密钥之间的区别

我们使用Guids作为数据库中实体的主键.传统上,我们遵循一种让INSERT期间数据库为实体设置ID的模式,我认为这主要是因为这通常是你使用自动增量字段或其他方式处理事物的方式.

我发现在对象构建过程中在代码中进行键分配更加方便,主要有两个原因:

  1. 你知道,一旦对象的构造函数运行,它的所有字段都已初始化.你永远不会有"半生不熟"的物体.
  2. 如果你需要做一批操作,其中一些操作依赖于知道一个对象的密钥,你可以一次完成所有这些操作而不需要往返于数据库.

有没有令人信服的理由以这种方式做事?也就是说,当使用Guids作为密钥时,是否有充分的理由将密钥分配保留到数据库中?

编辑: 很多人对Guids是否应该用于PK(我知道)有强烈的意见,但这不是我的问题.

除了集群问题(如果正确设置索引似乎没有问题),我还没有看到避免在应用程序层中创建密钥的令人信服的理由.

c# sql guid

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

从支持AJAX的WCF服务返回错误详细信息

简短版本:在启用AJAX的WCF服务中抛出异常时,是否有建议的方法将错误详细信息返回给客户端(除了打开大门并发回所有异常详细信息)?

长版:

我有一个相对简单的启用AJAX的WCF服务,我使用默认服务代理从客户端调用.我在下面提供了代码片段,但我不相信代码本身有任何问题.

我的问题是,如果我在服务中抛出异常,返回给客户端的错误对象总是通用的:

{
    "ExceptionDetail":null,
    "ExceptionType":null,
    "Message":"The server was unable to process the request..."
    "StackTrace":null
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想在客户端上显示不同的错误消息,具体取决于出错的地方.

一种选择是允许WCF故障中的异常,这将为我提供完整的堆栈跟踪和所有内容,但我很欣赏这方面的安全问题,这实际上是比我需要的更多信息.我能做的就是能够发回一个描述问题的字符串,但是我没有办法做到这一点.

我的服务代码:

[ServiceContract(Namespace = "MyNamespace")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService
{
    [OperationContract]
    public void DoStuff(string param1, string etc)
    {
        //Do some stuff that maybe causes an exception
    }
}
Run Code Online (Sandbox Code Playgroud)

在客户端:

MyNamespace.MyService.DoStuff(
    param1,
    etc,
    function() { alert("success"); },
    HandleError);
Run Code Online (Sandbox Code Playgroud)

其中"HandleError"只是一个通用的错误处理方法,可以显示有关错误的详细信息.

asp.net ajax wcf json

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

在显示"活动"时,让CruiseControl.NET使用长时间运行的任务的输出

CruiseControl.NET中,我设置了两个项目,一个用于构建,一个用于部署构建包.

我们的构建主要基于MSBuild,并且在运行时,仪表板会不断更新构建的最新输出.这意味着即使完整构建可能需要15分钟,您可以确切地看到它的位置,并且它正在取得进展.

部署是使用另一个工具运行的(VisualBuild,虽然我看到与PowerShell等其他工具相同的基本行为).这是另一个长期运行的任务,但在这种情况下,仪表板在进行时不会更新其输出.由于部署可能需要很长时间,因此很难判断事情是否正在进展或事情是否已停滞.输出将记录到CruiseControl.NET日志中,一旦完成,将显示在仪表板上,但在部署过程中不会显示.

有没有办法从仪表板上更新的其他任意长时间运行的任务获得类似实时的输出?是什么让MSBuild在这方面特别?

cruisecontrol.net ccnet-config

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

Html.OpenIdSelectorScripts抛出NullReferenceException的helper方法

尝试导航到LogOn页面时,我不断收到此错误:

System.NullReferenceException:未将对象引用设置为对象的实例

抛出错误的代码行是:

<%= Html.OpenIdSelectorScripts(this, options, null)%>. 
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这行代码会抛出错误?

c# asp.net asp.net-mvc nullreferenceexception dotnetopenauth

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

钢筋配置中元素的含义

我们使用rebar为我们的项目提取依赖项,其中许多来自github.我们的配置看起来像:

{deps, [
        {cowboy, "", {git, "git://github.com/extend/cowboy.git", {branch, "master"}}}
       ]}.
Run Code Online (Sandbox Code Playgroud)

我理解得足够了,我通过反复试验了解了一些事情(例如,如何指定标签和变更集而不是分支),但我的google-fu无法找到任何关于什么的综合文档选项可用或他们做什么.

我特别想知道第二个值的目的是(通常是空字符串,但我偶尔会看到版本号和通配符),但是有关源控制选项的更多信息,或者只是文档一般会有所帮助.

erlang rebar

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

通过环境变量覆盖 Spring Boot yaml 属性

使用 Spring Boot 2.6.1,如果我有一个application.properties如下所示的文件:

spring.datasource.url="jdbc://blahblah"
Run Code Online (Sandbox Code Playgroud)

我可以在运行时使用名为 的环境变量覆盖该值spring.datasource.url,并且我的应用程序将连接到环境变量中指定的数据库。

但是,如果我有一个等效的application.yaml文件,那么以这种方式指定环境变量似乎没有效果。

spring:
  datasource:
    url: "jdbc://localhost..."
Run Code Online (Sandbox Code Playgroud)

但是,如果我将环境变量重命名为SPRING_DATASOURCE_URL,覆盖将再次起作用。这在其他属性中似乎也是一致的(不仅仅是数据源 URL)。

浏览文档,并不清楚为什么会出现这种情况,除了 yaml 配置似乎通常与“正常”属性文件的处理方式略有不同。

这种行为是预期的吗?

yaml properties-file spring-boot

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

SSL响应分为两个回调

我正在开发一个客户端 - 服务器应用程序,并负责添加对websockets运行的支持.我在服务器端使用Cowboy,并且一直在使用Erlang websocket客户端进行测试.

事情应该是这样的:

  1. 客户端打开套接字连接并启动http握手
  2. 服务器完成http握手
  3. 客户端向服务器发送消息,服务器发送回复
  4. 客户端处理回复
  5. 重复3和4

客户端模块实现

handle_info({Transport, Socket, Data}, StateName, State) ->
    ... do stuff with data ...
Run Code Online (Sandbox Code Playgroud)

当数据出现时,由底层传输(gen_tcp或s​​sl)调用.

当我配置要使用的客户端和服务器时,一切正常gen_tcp.当我改为使用时ssl,websocket握手完成,但在步骤4中,我得到一个回调handle_info,它只包含从服务器返回的数据的第一个字节.后续回调将包含响应的其余部分.

我真的很担心这种行为,因为交换gen_tcp的相同代码工作正常,我们有两个其他传输使用ssl(但不是websockets或cowboy)构建,同样不会出现这种行为.

任何人都可以建议可能导致数据以这种方式分裂的原因吗?如果我不需要,我宁愿不要为此写处理.

更新:仅仅为了踢,我修改了客户端,以便它等待两次回调发生,并在尝试解析它之前连接两者的数据.这解决了这个问题,但仍让我感到困惑.

我注意到了一些事情:

  • 第一组两个回调始终只包含一个字节
  • 该字节始终为130(0x82)

不知道这是否相关.

erlang ssl websocket cowboy

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

如何在 postgres 中将时间戳数据装入 n 分钟的桶中

我有以下有效的查询,将带时间戳的“观察”分箱到其边界由 bin 表定义的桶中:

SELECT
  count(id),
  width_bucket(
      time :: TIMESTAMP,
      (SELECT ARRAY(SELECT start_time
                    FROM bins
                    WHERE owner_id = 'some id'
                    ORDER BY start_time ASC) :: TIMESTAMP[])
  ) bucket
FROM observations
WHERE owner_id = 'some id'
GROUP BY bucket
ORDER BY bucket;
Run Code Online (Sandbox Code Playgroud)

我想修改它以允许查询从指定时间戳开始的任意 n 分钟 bin,而不必从实际的“bins”表中提取。

也就是说,给定开始时间、以分钟为单位的“bin 宽度”和 bin 数量,有没有办法生成时间戳数组以传递到函数中width_bucket

或者,是否有不同/更简单的方法来获得相同的结果?

postgresql

3
推荐指数
2
解决办法
5840
查看次数

如何通过 Jackson 使用 json 轻松地在 Redis 中缓存 Kotlin 对象?

我有一个用 Kotlin 编写的 Spring 启动应用程序,我想在 Redis 中启用缓存。我希望将对象存储为序列化的 JSON,理想情况下不想注册可能被缓存的每种类型。我有一些最有效的配置,但有一个很大的警告。

@Bean
fun redisCacheConfiguration(): RedisCacheConfiguration {
    val objectMapper =
        ObjectMapper()
            .registerModule(KotlinModule())
            .registerModule(JavaTimeModule())
            .enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY)

    val serializer = GenericJackson2JsonRedisSerializer(objectMapper)

    return RedisCacheConfiguration
        .defaultCacheConfig()
        .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer))
}
Run Code Online (Sandbox Code Playgroud)

我在理解 的不同值时遇到了一些麻烦,DefaultTypingNON_FINAL似乎是最广泛的。但是,由于 Kotlin 中的对象默认是 final 的,这仅适用于标记为“open”的对象。理想情况下,我想避免“打开”对象只是为了缓存它们。

有没有其他方法可以让我完成这项工作?

kotlin spring-data-redis spring-boot jackson2

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

使用 Terraform 创建的 Kubernetes 服务帐户导致“文档丢失路径:“/spec/volumes/0””副本集错误

我正在尝试使用关联的 ServiceAccount 创建 Kubernetes 部署,该 ServiceAccount链接到 AWS IAM 角色。此 yaml 产生所需的结果,并且相关的部署(包含在底部)正确旋转:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: service-account
  namespace: example
  annotations:
    eks.amazonaws.com/role-arn: ROLE_ARN
Run Code Online (Sandbox Code Playgroud)

但是,我想改用 Terraform Kubernetes 提供程序来创建 ServiceAccount:

resource "kubernetes_service_account" "this" {
  metadata {
    name = "service-account2"
    namespace = "example"
    annotations = {
      "eks.amazonaws.com/role-arn" = "ROLE_ARN"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我以这种方式创建 ServiceAccount 时,我的部署的 ReplicaSet 失败并显示错误:

Error creating: Internal error occurred: Internal error occurred: jsonpatch add operation does not apply: doc is missing path: "/spec/volumes/0"
Run Code Online (Sandbox Code Playgroud)

我已经确认,部署是通过 Terraform 创建还是通过kubectl; …

amazon-web-services kubernetes terraform amazon-eks

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

使用jQuery禁用输入上的其他文本框

我有一个包含多个搜索(文本)字段的表单.当文本输入其中一个字段时,我想禁用其他字段.相反,如果从活动文本字段中删除所有文本,则应重新启用其他字段.

基本的想法是这样的(我认为):

$(document).ready(function() {
    $("input[@type=text]").keypress(function(e) {
        if(current textbox has text in it)
        {
            //disable all textboxes that aren't this one
        }
        else
        {
            //enable all textboxes
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我不清楚找到/使用"所有不是这个文本框"的最简单方法是什么.

jquery

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

在 Gradle Kotlin DSL 中使用 S3 Maven 存储库的 IAM 凭证

我已经按照此处的说明配置了 S3 支持的 Maven 存储库,例如:

repositories {
    maven {
        url "s3://myCompanyBucket/maven2"
        authentication {
           awsIm(AwsImAuthentication) // load from EC2 role or env var
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将我的脚本转换为使用 Kotlin DSL 而不是 groovy,但无法找出等效的代码,特别是该authentication部分的代码。

上面的 Groovy 代码片段的等效 Kotlin DSL 是什么?

gradle gradle-kotlin-dsl

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