小编Ham*_*ite的帖子

了解JSON Schema草案版本4中的"additionalProperties"关键字

链接到规范:http://json-schema.org/latest/json-schema-validation.html#anchor64

第5.4.4.2节规定:

针对这三个关键字成功验证对象实例取决于"additionalProperties"的值:如果其值为布尔值true或模式,则验证成功; ...

第5.4.4.3节规定:

如果不存在"additionalProperties",则可以认为它具有空模式作为值.

好的,所以如果"additionalProperties"不存在,它将被视为存在空模式.如果它是一个模式(任何类型),那么无论其他任何考虑因素,该对象都会成功验证.

但是这与第5.4.4.5节"示例"中的断言相矛盾,即给定实例无法针对给定的模式进行验证(它没有为"additionalProperties"指定任何内容).

有人可以解释我在哪里以及以何种方式误解了规范?

validation json specifications jsonschema

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

当我在响应中提出自己的异常时,如何更容易地抑制先前的异常?

考虑

try:
   import someProprietaryModule
except ImportError:
   raise ImportError('It appears that <someProprietaryModule> is not installed...')
Run Code Online (Sandbox Code Playgroud)

运行时,如果未安装someProprietaryModule,则可以看到:

(traceback data)
ImportError: unknown module: someProprietaryModule

During handling of the above exception, another exception occurred:

(traceback data)
ImportError: It appears that <someProprietaryModule> is not installed...
Run Code Online (Sandbox Code Playgroud)

也许我不希望出现"在处理上述异常......"行(以及它上面的行).我能做到这一点:

_moduleInstalled = True
try:
   import someProprietaryModule
except ImportError:
   _moduleInstalled = False
if not _moduleInstalled: 
   raise ImportError('It appears that <someProprietaryModule> is not installed...')
Run Code Online (Sandbox Code Playgroud)

但这感觉有点像黑客.我还能做什么?

python exception traceback python-3.x python-3.3

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

为什么lint不告诉我解析错误的行号和性质?

我正在从Windows批处理文件中调用php lint,如下所示:

@echo off
for %%f in (*.php) do php -l %%f
Run Code Online (Sandbox Code Playgroud)

当文件包含语法错误时,它只输出Errors parsing xxx.php.有没有办法让它告诉我错误的本质是什么,它是什么线?也许另一个开关?

php lint

18
推荐指数
2
解决办法
8489
查看次数

"协议不能与isinstance()一起使用" - 为什么不呢?

typing模块包含几个名称为"SupportsInt"(-Float,-Bytes等)的对象.可能会读取该模块的名称和文档页面的说明,以表明您可以测试对象是否属于"支持__int__()" 类型.但是如果你尝试使用isinstance()它,它会给出一个响应,表明这不是你想要做的事情:

>>> isinstance(5, typing.SupportsInt)
(Traceback omitted)
TypeError: Protocols cannot be used with isinstance().
Run Code Online (Sandbox Code Playgroud)

另一方面,您可以使用issubclass():

>>> issubclass((5).__class__, typing.SupportsInt)
True
>>> issubclass(type(5), typing.SupportsInt)
True
Run Code Online (Sandbox Code Playgroud)

在这种情况下,什么是"协议"?为什么不允许isinstance()以这种方式使用?

python isinstance python-3.x

14
推荐指数
2
解决办法
494
查看次数

为什么unicodedata不识别某些字符?

至少在Python 2中,unicodedata.name()不识别某些字符.

ActivePython 2.7.0.2 (ActiveState Software Inc.) based on
Python 2.7 (r27:82500, Aug 23 2010, 17:17:51) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> from unicodedata import name
>>> print(u'\n')


>>> name(u'\n')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: no such name
>>> name(u'a')
'LATIN SMALL LETTER A'
>>>
Run Code Online (Sandbox Code Playgroud)

(第一个print是证明Python本身可以识别u'\n'为换行符.)

当然Unicode 包含字符\n,它有一个名称,特别是"LINE FEED".

NB.unicodedata.lookup('LINE FEED') …

python unicode

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

当我使用"传统"C风格的函数声明时,JavaScript中发生了什么?

我知道有几种方法可以在JavaScript中定义一个函数.其中两个最常见的是:

(1)  function add (a, b) {
         return a + b;
     }

(2)  var add = function (a, b) {
         return a + b;
     }
Run Code Online (Sandbox Code Playgroud)

我觉得将函数作为一个对象的想法可以像任何其他变量一样传递.所以我完全理解(2)正在做的事情.它正在创建一个函数并分配给add(假设这是全局范围,因此add是全局变量)所述函数.但是如果我改用的话会发生什么(1)呢?我已经知道它在执行顺序上有所不同:如果我使用(1)那么我可以add()在代码中add()定义的点之前引用,但是如果我使用(2)那么我必须add在我开始引用之前分配我的函数add().

(1)这个的快捷方式(2),虽然一个出现这种情况的行为像其他C风格的语言,使我们能确定它是用来在其"下"点的功能?或者它内部是一种不同类型的功能?哪个更符合JavaScript的"精神"(如果这个术语不是太模糊)?你会把自己限制在一个或另一个,如果是这样的话?

javascript function

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

上传到PHP脚本的JPEG文件损坏 - 但不是所有时间

我有一个PHP脚本,我上传JPEG图像(通过HTML表单).你可以在这里看到代码,但我会尝试在这篇文章中介绍相关部分.表单声明如下:

<form action="adm_addphoto.php" method="POST" enctype="multipart/form-data" name="myform">
Run Code Online (Sandbox Code Playgroud)

MAX_FILE_SIZE表单字段设置为5MB:

<input type="hidden" name="MAX_FILE_SIZE" value=5242880>
Run Code Online (Sandbox Code Playgroud)

我要上传的图片大小约为3MB.

一旦上传,我将图像文件转换为GD jpeg:

$filename = $_FILES['file']['tmp_name'];
$myImage = imagecreatefromjpeg($filename);
Run Code Online (Sandbox Code Playgroud)

有时上传工作正常,有时imagecreatefromjpeg会发出有关JPEG损坏的警告.例如(为了便于阅读而添加了换行符):

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]:
         gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data:
         47 extraneous bytes before marker 0xd9 in
         /path/adm_addphoto.php on line 97

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]:
         '/tmp/phpwlSS9x' is not a valid JPEG file in
         /path/adm_addphoto.php on line 97
Run Code Online (Sandbox Code Playgroud)

问题是,这不可能发生.也就是说,如果我连续多次尝试相同的图像,有时它会成功上传,有时会出现错误.在导致错误的尝试中,错误消息的细节也会有所不同.(使用产生上述消息的特定照片,"无关字节"的数量有时为47,有时为20,有时为68.)

什么可能导致文件在某些​​尝试中损坏而不是其他尝试?

PS.我知道有一个ini设置告诉GD努力使用损坏的JPEG.但这不是重点,我想知道为什么上传的结果不一致.

PPS.以下是一些可能相关的PHP ini设置的值:

memory_limit .......... 128M
post_max_size ......... 8M
file_uploads .......... On
max_file_uploads ...... 20 …
Run Code Online (Sandbox Code Playgroud)

php file-upload

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

我应该使用 System.Security.Cryptography 命名空间中的哪个 AES 类?

System.Security.Cryptography 命名空间至少有 3 种不同的看似可互换的方法来获取将执行 AES 加密/解密的对象:

using (var aes = Aes.Create())
Run Code Online (Sandbox Code Playgroud)

或者

using (var aes = new AesCryptoServiceProvider())
Run Code Online (Sandbox Code Playgroud)

或者

using (var aes = new AesCng())
Run Code Online (Sandbox Code Playgroud)

前两个是在 .NET 框架 3.5 版中引入的。第三个要新得多。它是在 4.6.2 版中引入的。因此,人们可能会怀疑它比其他两个更好,但文档没有说明建议使用它代替其他两个。

前两个各有一个代码示例。两个样品看起来基本相同。

我应该使用哪一种,为什么?

.net c# cryptography aes

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

是否无法在title属性中使用HTML实体?

上面的screengrab来自Firefox.光标悬停在图像左侧的黄点上.它是一个<img>元素(实际上它是一个图像与一个包含单个圆形<area>元素的图像映射,但我认为这个区别是不重要的)已经在JavaScript中创建和设置样式,包括应用title属性(由切割和胶合弦).我怎样才能让它表现出来并显示出预定的角色,而不是&ndash;?它适用于innerHTML(左上角的文本"Barrow-In-Furness"是一个div,也是使用JavaScript创建的,以及它的innerHTML集.)

编辑:回答Domenic的问题:这是构建和应用title属性的JavaScript函数(除了执行其他作业):

var StyleLinkMarker = function (LinkNumber, EltA, EltI) {
    var AltText = LocationName[LinkStart[LinkNumber]] +
                  " to " +
                  LocationName[LinkEnd[LinkNumber]];
    if (!EltA) {
        EltA = document.getElementById("link_marker_area" + LinkNumber);
        EltI = document.getElementById("link_marker_img" + LinkNumber);
    }
    if (LinkStatus[LinkNumber] === 9) {
        var CanBuyLinkCode = BoardPreviewMode ? 0 : CanBuyLink(LinkNumber);
        if (CanBuyLinkCode === 0) {
            EltI.src = ImagePath + "icon-buylink-yes.png";
            AltText += " (you can buy this " + LinkAltTextDescription + ")";
        } else {
            EltI.src = …
Run Code Online (Sandbox Code Playgroud)

html javascript html-entities

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

插入或更新到unordered_map而不需要默认构造函数

std::unordered_map想要添加一个键值对.如果密钥尚不存在,那么我希望它与给定值一起添加.如果密钥已存在,那么我希望更新该值.

这里的标准建议似乎是使用operator[].但是这需要地图的值类型是默认可构造的.我希望避免提供默认构造函数.我该怎么办?

c++ stl unordered-map default-constructor visual-c++

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