小编Tim*_*all的帖子

jQuery绑定popstate事件未通过

我正在为History API编写一个小程序.我正在努力解决这个问题:

$(window).bind('popstate',  
    function(event) {
        console.log('pop: ' + event.state);
    });
Run Code Online (Sandbox Code Playgroud)

当我点击"上一步"按钮时,它会记录'pop:undefined'

但是,如果我这样做,事情就像预期的那样:

window.onpopstate = function(event) {
    console.log('pop: ' + event.state);
};
Run Code Online (Sandbox Code Playgroud)

它这次记录'pop:[object Object]'...

所以就像jQuery没有将事件对象传递给回调.
jQuery有问题吗?或者我弄乱了什么?

jquery html5 html5-history

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

用C++编写的高质量开源文本到语音(TTS)引擎

我正在寻找用C++编写的开源文本到语音(TTS)引擎.理想情况下,只要信息源是免费提供的,高质量的声音(参见下面的质量定义),但也可以选择质量较低的替代品.

这样的开源项目是否存在?

"高质量"是指"人类听觉","非机器人",最终结果大致与这两个英语语言示例相同:示例1,示例2

c++ text-to-speech

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

IE 9 Javascript错误c00c023f

我只在IE9上遇到此错误:

SCRIPT575:由于错误c00c023f无法完成操作.

错误发生在这一行: if ((a.responseXML) && (a.readyState==4)) {

我无法弄清楚为什么会发生这种情况,而且它似乎在其他浏览器中运行良好.

这是我的javascript代码:

var a = new XMLHttpRequest();
a.open("GET",'/cust/ajax/getresult.php?qk=nnf87&arg1='+pzid,true);
a.onreadystatechange = function () {
    if ((a.responseXML) && (a.readyState==4)) {
        var N = a.responseXML.getElementsByTagName('result')
        sequence = N[0].firstChild.data;
        var SEQ = sequence.split(",");
        var num = SEQ.length;
                    var sum = 0;
                    for(var n=0;n<num;n++){sum = sum + (SEQ[n]*1);}
        //document.getElementById("the_number_of").innerHTML = sum;
        var date = new Date();
        date.setTime(date.getTime()+(2*60*60*1000));
        document.cookie='cpa_num='+sum+'; expires= '+date.toGMTString()+'; path=/';
    }

}
Run Code Online (Sandbox Code Playgroud)

javascript ajax xmlhttprequest internet-explorer-9

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

PyCrypto - 初始化向量如何工作?

我试图了解PyCrypto如何在项目中使用,但我还没有完全理解初始化向量(IV)的重要性.我发现在解码字符串时我可以使用错误的IV,除了前16个字节(块大小)之外我似乎仍然收到消息.我只是错误地使用它或不理解某些东西?

这是一个示例代码,用于演示:

import Crypto
import Crypto.Random
from Crypto.Cipher import AES

def pad_data(data):
    if len(data) % 16 == 0:
        return data
    databytes = bytearray(data)
    padding_required = 15 - (len(databytes) % 16)
    databytes.extend(b'\x80')
    databytes.extend(b'\x00' * padding_required)
    return bytes(databytes)

def unpad_data(data):
    if not data:
        return data

    data = data.rstrip(b'\x00')
    if data[-1] == 128: # b'\x80'[0]:
        return data[:-1]
    else:
        return data


def generate_aes_key():
    rnd = Crypto.Random.OSRNG.posix.new().read(AES.block_size)
    return rnd

def encrypt(key, iv, data):
    aes = AES.new(key, AES.MODE_CBC, iv)
    data = pad_data(data)
    return aes.encrypt(data)

def decrypt(key, …
Run Code Online (Sandbox Code Playgroud)

python pycrypto initialization-vector python-3.x

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

Cornice中的cornice.Service和cornice.resource有什么区别?

我已经多次阅读了文档,并搜索了这个问题的答案,但是很简单.具体来说,我已经研究了为服务定义服务Cornice API以及为资源定义资源.

我目前正在构建一个REST API,它具有与此类似的结构:

GET /clients             # Gets a list of clients
GET /clients/{id}        # Gets a specific client
GET /clients/{id}/users  # Gets a specific clients users
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?我应该使用服务或资源还是两者兼而有之?而且,如果两者都是,怎么样?

api rest python-3.x pyramid cornice

12
推荐指数
2
解决办法
1681
查看次数

SQLAlchemy记录日期和用户的更改

这与另一个超过3年的问题非常相似:查看SQLAlchemy事务的一般方法是什么,完成认证用户等等?

我正在开发一个应用程序,我想将所有更改记录到特定的表中.目前有一个非常好的"配方"可以进行版本控制,但是我需要修改它来代替记录更改发生时的日期时间以及谁进行更改的用户ID.我使用了与SQLAlchemy一起打包的history_meta.py示例,并将其记录为时间而不是版本号,但我无法确定如何传入用户ID.

我上面提到的问题建议在会话对象中包含用户ID.这很有意义,但我不知道该怎么做.我尝试了一些简单的东西,session.userid = authenticated_userid(request)但在history_meta.py中,该属性似乎不再出现在会话对象上.

我在Pyramid框架中执行所有这些操作,并且我正在使用的会话对象被定义为DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())).在我看来session = DBSession(),然后继续使用session.(我不确定这是否必要,但那是怎么回事)

这是我修改过的history_meta.py,以防有人发现它有用:

from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.orm import mapper, class_mapper, attributes, object_mapper
from sqlalchemy.orm.exc import UnmappedClassError, UnmappedColumnError
from sqlalchemy import Table, Column, ForeignKeyConstraint, DateTime
from sqlalchemy import event
from sqlalchemy.orm.properties import RelationshipProperty
from datetime import datetime

def col_references_table(col, table):
    for fk in col.foreign_keys:
        if fk.references(table):
            return True
    return False

def _history_mapper(local_mapper):
    cls = local_mapper.class_

    # set the "active_history" flag …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy pyramid

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

没有遍历的金字塔ACL

我真的不知道ACL是如何工作的.我知道这很酷,可以节省我很多时间和痛苦.但目前我有点失落.金字塔的所有示例都使用遍历.我专门使用URL Dispatch.我不确定如何构建一个资源树结构.

这是一个代码示例:

class QuestionFactory(object):

    def __init__(self, request):
        self.__acl__ = default[:]
        self.uid = authenticated_userid(request)

        self.qid = request.matchdict.get('id')
        if self.qid:
            self.question = request.db.questions.find_one({'_id': ObjectId(self.qid)})
            if str(self.question.get('owner')) == self.uid:
                self.__acl__.append((Allow, userid, 'view'))     
Run Code Online (Sandbox Code Playgroud)

问题是,它有效.但我必须为每种类型的资源定义一个新工厂.我不知道我应该知道我试图通过URL Dispatch和Factory访问哪个资源.我会看到类似的东西

/accounts/{account}   //Owners only but viewable by anyone 
/messages/{message}   //Owners only
/configs/{config}     //Admin only
/pages/{page}         //Admins only but viewable by anyone
Run Code Online (Sandbox Code Playgroud)

那说我在这里有这样的结构

  Root -\
         +-- account
         +-- message
         +-- config
         +-- page
Run Code Online (Sandbox Code Playgroud)

这些工厂中的每一个都有它自己特殊的acl.另一件事是/ accounts是主页面.它没有id或任何东西.另外/ accounts/new也是一个特例.它不是id,而是创建新项目的视图.

我正在使用具有GET/PUT/DELETE/POST要求的宁静风格.我不太确定我应该如何自动将url与资源和正确的acl匹配.如果我在我的根中定义一个像上面这样的特殊工厂就没有问题.

编辑

除了一些事情,我确实得到了它.我终于想到了解遍历的目的是什么.例如,我们有这个网址:/ comments/9494f0eda/new,/ comments/{comment}/new

我们可以在我们的资源树或甚至3个节点中使用Node.

首先检查RootFactory,然后根据我们的遍历进行检查.它将获取RootFactory的comments属性,然后是Comment Factory的"comment"和CommentFactory的"new"或者Object本身的"new"

我不像迈克尔的例子那样使用工厂作为字典

它看起来非常像:

class RessourceFactory(object):
    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python acl routes pyramid

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

Raspberry Pi蓝牙4.0连接

我正在尝试使用CoreBluetooth(蓝牙4.0)通过iPhone连接到Raspberry Pi.我发现了设备并使用以下代码发送连接请求:

if (peripheral != self.foundPeripheral) {
    NSLog(@"Try to connect to %@", peripheral.name);
    self.foundPeripheral = peripheral;
    [self.centralManager stopScan];
    [self.centralManager connectPeripheral:peripheral options:nil];

}
Run Code Online (Sandbox Code Playgroud)

didConnectPeripheral或didFailedToConnectPeripheral都不会被调用.我还确保将RPi用于宣传蓝牙低功耗

sudo hciconfig hci0 leadv
Run Code Online (Sandbox Code Playgroud)

但是当我检查活动连接时

hcitool con
Run Code Online (Sandbox Code Playgroud)

没有活动的连接.我错过了为RPi设置的一些设置吗?外围设备上的名称变量也是空白的,是因为我还没有连接吗?

core-bluetooth raspberry-pi bluetooth-lowenergy bluez

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

浏览器对蓝牙信标/ iBeacons的认识

有没有办法让浏览器知道其附近的iBeacon设备?

与HTML5 Geolocation的工作方式类似......

如果不是,这可以通过浏览器插件实现,可以提供javascript消费的细节吗?

javascript browser geolocation bluetooth-lowenergy ibeacon

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

从 Django 表单集中获取未删除的表单

当我使用一个formset这既can_ordercan_delete我能够得到所有被删除的形式.deleted_forms和所有非删除表格(顺序).ordered_forms

如果我使用不使用的表单集,can_order我将不再有权访问.ordered_forms(它会引发异常)。有没有一种简单的方法来获取未删除的表单列表?

我能找到的最接近的是手动创建它:

[form for form in formset.forms if not formset._should_delete_form(form)]
Run Code Online (Sandbox Code Playgroud)

但是,这是使用“隐藏”方法,似乎很奇怪还没有内置的东西。

django django-forms formset inline-formset

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