小编Eli*_*ght的帖子

标准库中的加密合法性

某些编程语言(如Java和C#)在其标准库中包含加密包.其他如Python和Ruby让你下载第三方模块来进行强加密.我认为这是出于法律原因; 也许Sun Microsystems有足够的律师,他们不怕被起诉,而Guido van Rossum感觉更脆弱.

但法律对此有何实际说法呢?在这一点上,如果开源作者在他们的编程语言的标准库中包含强加密,他们会有什么可担心的吗?如果是这样,那么他们为什么不呢?如果没有,那么Sun和微软如何逃脱它.

encryption programming-languages

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

测试我已连接到Django中的特定信号

我有一个名为"publisher"的Django应用程序,它连接到我的django项目中的各种信号,当它收到它们时,它会向rabbitmq队列发送一条消息.我想要做的是能够测试我的设置代码是否连接到正确的信号.

我的app结构如下:

publisher
    - __init__.py
    - signals.py
    - tests.py
Run Code Online (Sandbox Code Playgroud)

我的__init__.py看起来像:

import signals
Run Code Online (Sandbox Code Playgroud)

和我的signals.py:

def receiver_function(*args, **kwargs):
    #Does rabbitmq stuff

my_interesting_signal.connect(receiver_function)
Run Code Online (Sandbox Code Playgroud)

我已经考虑过修补接收器功能,并在发送信号时检查模拟是否被调用:

tests.py:

class SignalsTeste(TestCase):

    def_test_connection(self):

        with patch('publisher.signals.receiver_function') as receiver_mock:
            my_interesting_signal.application_created.send(None)
            self.assertEquals(receiver_mock.call_count, 1)
Run Code Online (Sandbox Code Playgroud)

但是,由于信号模块是导入的,因此信号连接是在测试运行之前进行的,因此在修补函数之前进行连接时,这种方法不起作用......

任何人都可以建议另类策略吗?

python testing django

6
推荐指数
2
解决办法
2267
查看次数

在 jython 中提供/使用 Web 服务的最简单方法是什么?

我有一个 Tomcat 应用程序,它需要提供/使用 Web 服务。由于与 Python 中的可能性相比,Java Web 服务是一场噩梦(xml、代码生成等),我想从您使用 jython 而不是 java 来提供/使用 Web 服务的经验中学习。

到目前为止,我所做的包括将http://pywebsvcs.sourceforge.net/调整为Jython。我仍然遇到错误(命名空间、类型等),尽管其中一些对于最简单的服务是成功的。

python soap wsdl web-services jython

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

有没有一种简单的方法可以使用Django在开发服务器中测试受SSL保护的网页?

我在我的网站上使用Django,我想知道是否有一个解决方案来测试开发服务器中的安全页面.作为临时解决方法,我不会使用HTTP来检查开发服务器中的网页,我认为这不是正确的方法吗?你怎么看?

security testing django ssl

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

Python中的字典

我正在努力加速使用词典.昨晚我花了三个小时在网上搜索类似于我想要做的一些事情的例子.例如,假设我有两个词典(实际上我有两个词典列表).

d1={key1:1, key2:2}
d2={key1:1, key2:'A', key4:4}
Run Code Online (Sandbox Code Playgroud)

我想更新d1所以它看起来如下所示:

d1={key1:1, key2:[2,'A'], key3:3, key4:4}
Run Code Online (Sandbox Code Playgroud)

我似乎找不到足够的例子让我开始.我有相当数量的书籍,我也审查了它们,但它们似乎都有我在网上找到的相同类型的例子.

有没有人知道一个地方或一本书有明确的例子和如何使用字典的描述?

我认为我遇到的一个问题是我不理解在访问字典时如何维护引用.

我可以查看两个词典是否有共同的密钥:

for k in d1.keys():
    for k2 in d2.keys():
        if k==k2:
            print 'true'
Run Code Online (Sandbox Code Playgroud)

但如果他们这样做我似乎无法将值组合成一个列表.

不仅仅是对这个特定例子的直接回答,我将非常感谢有关使用词典的好例子的地方的任何建议.

python dictionary

5
推荐指数
2
解决办法
1966
查看次数

IE不正确地呈现动态内容,直到更改样式表

我有一个使用Javascript动态生成的数据表.每隔几分钟,页面就会通过触发Ajax请求,从服务器获取数据并替换表中的数据来刷新数据.这是非常标准的,表格最终看起来像这样:

如果我通过清空表并逐渐添加行来生成数据,这可以正常工作.但是,此表可能有数千行,并且生成浏览器为用户提供的表可能需要很长时间"这个脚本需要很长时间才能执行"错误.所以我通过将表生成分成块并使用一次做一点来解决这个问题setInterval.

这工作正常,但因为表可能需要一段时间才能完全生成,我试图聪明并做一些伪双缓冲.我有一个第二个表,它display设置为none隐藏它,当我重新生成表时,我一次将行添加到隐藏表中.这样,在表重新生成完成之前,用户可以看到现有数据,此时我们只需将它们全部替换为新内容.

我正在使用以下代码行替换

$("#loading_area tbody").children().appendTo( $("#unplanned tbody").empty() );
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox,Safari和Google Chrome.但在IE上,我得到以下内容:

这些行实际上不是空白 - 如果我足够水平滚动,内容就在那里:

看来第一列的宽度超过55,000像素!这里有一个非常奇怪的部分:一旦我改变了关于桌子风格的内容,内容就会重新正确显示.因此,如果我将字体颜色更改为绿色,IE将​​立即正确地重新渲染表格.

但是我不能直接做出改变.所以,如果我说

$("#unplanned").css("color", "green");
Run Code Online (Sandbox Code Playgroud)

然后它没有正确地重新渲染; 颜色变化,但第一列保持55,000像素宽.但是如果我直接对样式表进行更改

document.styleSheets[1].rules[3].style.color = "green";
Run Code Online (Sandbox Code Playgroud)

然后它正确地重新呈现表格.

所以,我最终通过制作随机风格上的变化,切换之间展开/折叠按钮的边缘固定这1px0px每一个我在铺设完出表的时候,和这个工作.

我的问题是,当我尝试打印页面时,行是空白的,因为页面内容不正确地呈现给打印机.

所以我会尝试更多的技巧,可能只是切换显示哪个表并交换他们的ids或其他什么使这个工作.我的问题是,这里发生了什么?这似乎是IE中的一个错误; 我正在使用IE8,但同样的事情发生在IE6和IE7上.我想避免将来陷入这个坑,但我不确定是什么导致这个,所以我不确定我应该避免什么.任何人都可以放弃的任何亮点都将非常感激.

编辑:交换显示哪个表使得渲染问题在浏览器中消失而不需要样式表黑客,但打印问题仍然存在.实际上,即使直接生成表而没有显示/隐藏或元素移动技巧,打印问题也存在.所以我很困惑,不知道我能做些什么来解决这个问题.如果我无法解决这个问题,我可能不得不制作一个单独的静态页面用于打印.

javascript jquery internet-explorer rendering stylesheet

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

如何最有效地检查列表中的唯一元素?

假设我有一个清单

li = [{'q':'apple','code':'2B'},
      {'q':'orange','code':'2A'},
      {'q':'plum','code':'2A'}]
Run Code Online (Sandbox Code Playgroud)

返回此列表中唯一"代码"计数的最有效方法是什么?在这种情况下,唯一代码是2,因为只有2B2A是唯一的.

我可以将所有内容放在列表中进行比较,但这真的很有效吗?

python performance dictionary list

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

Asterisk提供"严格的RTP学习"消息,Chrome WebRTC没有音频,但可以在Firefox中使用

我一直在使用Asterisk服务器(v13.18)在WebRTC上与我的计算机在同一个局域网上进行实验.我将Asterisk扩展6003配置为在拨打时自动应答并播放某个臭名昭着的声音文件,然后确认这与Ekiga softphone客户端一起使用.

然后,我可以通过以下步骤在Firefox中使用它:

  • 打开在线演示网站https://www.doubango.org/sipml5/call.htm?svn=252
  • 打开专家模式屏幕
  • 选中"禁用视频"复选框.
  • 输入[]"ICE服务器"字段(因为我在本地LAN上没有涉及NAT,我不需要STUN或TURN,虽然我在Asterisk配置中启用了ICE)
  • 输入我的"Websocket Server URL"值 wss://asterisk-ci.test:8089/ws
  • 单击"保存",然后返回到演示页面.
  • 在演示页面的"注册"部分输入星号服务器信息,然后单击"登录",确认它显示"已连接"状态.
  • 在"呼叫控制"框中输入分机6003,然后单击"呼叫".

在Firefox中这很好用 - 声音文件在通话时播放给我.

在谷歌浏览器(最新的v65)中没有声音实际播放,但除此之外,似乎应该有效.特别是:

  • sipML5客户端显示"In Call",UI显示正在激活的呼叫.
  • Javascript控制台中没有错误.
  • "网络"选项卡中Websocket框架中的SIP流量看起来很好,似乎与Firefox正在进行的操作相匹配.
  • chrome://webrtc-internals页面显示有大量流量进入.特别是,音频通道上的数据图表显示与此处显示的声音文件一致.

我尝试使用设置示例应用SIP.js并获得完全相同的结果,确认这不是问题,sipML5而是我的Asterisk配置以及它与Google Chrome的交互方式.

我连接到Asterisk via asterisk -vvvvvr以查看可能显示的调试消息,并且在工作的Firefox和非工作Chrome之间似乎存在一些显着差异.这是我在连接然后拨打电话时在Firefox中看到的内容:

== WebSocket connection from '192.168.99.123:40190' for protocol 'sip' accepted using version '13'
  -- Registered SIP '1061' at 192.168.99.123:40190
== DTLS ECDH initialized (automatic), faster PFS enabled
== Using SIP RTP CoS mark 5
     > 0x7f79f800dba0 -- Strict RTP learning after remote …
Run Code Online (Sandbox Code Playgroud)

google-chrome asterisk sip webrtc

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

4
推荐指数
2
解决办法
5086
查看次数

使用Java连接到Oracle集群

我们有一对Oracle服务器,它们被设置为集群中的节点(如果我的术语已经过时,我会道歉).在我的tnsnames.ora文件中,我们有一个看起来像的条目

EXAMPLE.GOV =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.5)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = example.gov)
    )
  )
Run Code Online (Sandbox Code Playgroud)

这与我使用该tnsnames.ora文件的程序连接时有效.但是,我也有一个Java程序,它使用oracle.jdbc.pool.OracleDataSource类来建立连接

public static Connection connect() throws Exception {
    OracleDataSource ods = new OracleDataSource();
    ods.setDriverType("thin");
    ods.setServerName("1.2.3.4");
    ods.setDatabaseName("example");
    ods.setPortNumber(1521);
    ods.setUser("scott");
    ods.setPassword("tiger");
    return ods.getConnection();
}
Run Code Online (Sandbox Code Playgroud)

它只是直接连接到其中一个节点.我想改为使用负载平衡tnsnames.ora方法,它使用负载平衡或任何连接到其中一个节点的任何东西,这样如果其中一个节点关闭,那么它将自动连接到另一个节点.

由于我只有两个节点,我可以轻松地尝试打开与第一个节点的连接,然后如果不起作用则打开与第二个节点的连接.但是,我想知道是否有更正确的方法来做到这一点.

我看到有一个setTNSEntryName参数,但由于我tnsnames.ora在一个非标准的地方,我需要设置TNS_ADMIN环境变量,我不确定我甚至可以在Java中做什么.我也不确定这在任何情况下都会有效.

有谁知道如何从Java程序连接到Oracle节点集群?

java oracle jdbc cluster-computing

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