小编jul*_*icz的帖子

ViewPatterns和Haskell中的多个调用

我看了这个:

http://hackage.haskell.org/trac/ghc/wiki/ViewPatterns

我喜欢这个想法,想要使用扩展名.但是我想确定一件事:是否对单个匹配评估了一次视图函数.

所以我们说:

{-# LANGUAGE ViewPatterns #-}
...

f (view -> Nothing) = ...
f (view -> Just x) = ...

view :: a -> Maybe b
Run Code Online (Sandbox Code Playgroud)

现在让我说我调用f a.view对于给定的参数,是调用两次还是只调用一次a

编辑:

我试图找出是否是这种情况并写下以下内容:

{-# LANGUAGE ViewPatterns #-}

import System.IO.Unsafe

blah (ble -> Nothing) = 123
blah (ble -> Just x) = x

ble x = unsafePerformIO $ do
    putStrLn $ "Inside ble: " ++ show x
    return x

main :: IO ()
main = …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming ghc language-extension

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

"FOR UPDATE"和"JOIN"的SQL语义

我想了解使用"FOR UPDATE"与"JOIN"相关的确切语义.它是否只锁定了有效用于构建最终结果的所有行?它还能做些什么吗?

从这个主题:

http://postgresql.1045698.n5.nabble.com/Select-For-Update-and-Left-Outer-Join-td4363154.html

我知道数据库实现之间存在一些重要的差异.但是我不确定.我对任何流行的RDBMS的行为感兴趣,特别是PostgreSQL.

sql database postgresql locking relational-database

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

PyPy明显慢于CPython

我一直在测试我制作的缓存系统.其目的是加速Django Web应用程序.它将所有内容存储在内存中.根据cPro​​file,在我的测试中大部分时间都花在QuerySet._clone()中,结果证明效率非常低(实际上并没有那么奇怪).

我非常希望使用PyPy来加快速度.我有一台64位机器.然而,在安装了所有必需的库之后,事实证明PyPy编译的代码运行速度比常规Python代码慢2.5倍,我不知道该怎么做.代码是CPU绑定的(绝对没有数据库查询,因此IO边界不是一个选项).单个测试运行大约10秒,所以我想JIT应该足够了.我正在使用PyPy 1.5.一个注意事项 - 我自己没有编译源代码,只下载了一个64位的linux版本.

我想知道CPU密集型代码在PyPy下实际运行速度有多快.希望我能做些什么错误会阻止PyPy运行到最佳状态.

编辑

精确的cPython输出:

PyPy 1.5:

    3439146 function calls (3218654 primitive calls) in 19.094 seconds

    Ordered by: cumulative time

    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       2/1    0.000    0.000   18.956   18.956 <string>:1(<module>)
       2/1    0.000    0.000   18.956   18.956 /path/to/my/project/common/integrity/models/transactions.py:200(newfn)
       2/1    0.000    0.000   18.956   18.956 /path/to/my/project/common/integrity/models/transactions.py:134(recur)
       2/1    0.000    0.000   18.956   18.956 /usr/local/pypy/site-packages/django/db/transaction.py:210(inner)
       2/1    0.172    0.086   18.899   18.899 /path/to/my/project/common/integrity/tests/optimization.py:369(func_cached)
      9990    0.122    0.000   18.632    0.002 /usr/local/pypy/site-packages/django/db/models/manager.py:131(get)
      9990    0.127    0.000   16.638    0.002 /path/to/my/project/common/integrity/models/cache.py:1068(get)
      9990    0.073    0.000   12.478    0.001 /usr/local/pypy/site-packages/django/db/models/query.py:547(filter)
      9990    0.263 …
Run Code Online (Sandbox Code Playgroud)

python optimization jit pypy cprofile

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

在显示工具提示消息之前,Eclipse会挂起3-4秒

我疯狂地搜索了互联网,但是"WTP冻结"或"Eclipse冻结"产生了许多不同的结果,几乎不可能找到合适的结果.我有以下问题.

在HTML或CSS编辑器中,当我意外地将鼠标悬停在属性值上时,Eclipse会在CPU加载100%时挂起3-4秒,然后生成一个工具提示消息,其中包含有关标记及其属性的一些信息.我不需要那些提示.天哪,我甚至不需要语法着色,如果这会阻止我这个挂起.

我尝试禁用所有自动完成功能,看似相关的所有内容,但这并没有改变一点.我找了一个设置来完全禁用WTP而不卸载它,但是再次 - 没有运气.

我使用Eclipse Helios.我有所有最新的插件.如果需要,我会提供任何其他信息.

有没有人有类似的问题,能够解决它?这真让我疯狂.

BOUNTY

赏金将发送给任何找到方法或解决方法的人,这将使弹出窗口合理快速.我在Eclipse的许多地方遇到过这个问题 - 例如PyDev:

Eclipse PyDev完成挂起(又一次)

我有强烈的程序感觉,这是弹出窗口的一般问题,而不是WTP/PyDev.以下是我已采取的措施:

  • 从头开始安装最新的Eclipse
  • 在这个干净的安装上安装了两个有问题的插件(WTP/PyDev)
  • 确保Eclipse有足够的内存
  • 确保选择适当的JVM

我的设置是Ubuntu Natty,Oracle Java 1.6 - repos中的最新版本

进一步发现

好吧,我刚刚发现99%的冻结时间花在了一个org.eclipse.swt.internal.gtk.OS._gtk_widget_realize似乎不对的电话里面.有线索吗?

我鼓励所有遇到过这个问题的人在Eclipse bug跟踪器上投票支持这个bug.

html eclipse editor freeze eclipse-wtp

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

cPickle - 不同的结果腌制同一个对象

是否有人能够testLookups()在此代码段中解释评论?

我运行代码,确实评论sais是真的.但是我想理解为什么它是真的,即为什么cPickle根据它的引用方式为同一个对象输出不同的值.

它与引用计数有什么关系吗?如果是这样,那不是某种错误 - 即腌制和反序列化的对象会有异常高的引用计数,实际上永远不会收集垃圾?

python serialization pickle

9
推荐指数
2
解决办法
1176
查看次数

是否有与QuickCheck一起使用的Monadic版本的Arbitrary?

当我想测试纯代码时,QuickCheck我经常要写一个Arbitrary实例.要测试monadic代码,我可以Test.QuickCheck.Monadic按照本文所述使用.

我的问题是:是否有一些规范的方法来生成依赖于monadic上下文的数据?特别是,有任何monadic版本的任意?您将如何生成需要monadic上下文的数据?

testing monads haskell functional-programming quickcheck

9
推荐指数
2
解决办法
380
查看次数

在Eclipse中刷新PyDev导入路径

我在Ubuntu下使用Eclipse Helios.

每当我在/usr/local/lib/python2.6/dist-packages/使用下安装一个新库时pip,Eclipse都没有看到它并抱怨无效的导入.我仔细检查了库是否到位.导入它的工作原理是解释器.刷新PyDev配置或重新启动IDE不起作用.注意:提到的路径位于Python解释器选项卡中的库路径列表中.

有没有人知道对此的补救措施,如果不知道如何追查实际原因.

python eclipse import path pydev

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

Python httplib和POST

我目前正在处理一段由其他人编写的代码.它用于httplib向服务器发出请求.它以正确的格式提供所有数据 - 例如消息正文,标题值等.

问题是,每次尝试发送POST请求时,数据都在那里 - 我可以在客户端看到它,但是没有任何东西到达服务器.我已经阅读了库规范,其用法似乎是正确的.

提取的库调用如下:

import httplib

conn = httplib.HTTPConnection('monkeylabs.pl', 80)
conn.connect()
request = conn.putrequest('POST', '/api/snippet/')
headers = {}
headers['Content-Type'] = 'application/json'
headers['User-Agent'] = 'Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic;  pl_PL.utf8; rv:2.7.1) Resig/20070309 PilotFish/1.3.pre03'
headers['Accept'] = '*/*'
for k in headers:
    conn.putheader(k, headers[k])
conn.endheaders()

conn.send('[{"id":"route"}]')

resp = conn.getresponse()
print resp.status
print resp.reason
print resp.read()

conn.close()
Run Code Online (Sandbox Code Playgroud)

这是一个已知问题,还是什么?我正在使用Python 2.7.不知道如何检查httplib的版本.

请不要建议将httplib替换为其他内容,除非它的内容非常相似(也许是httplib2).正如我所说的那样,代码不是我的代码,它的数量远远超过我刚刚发布的代码.重构它会导致一个重大问题.我对任何可靠的解决方法感兴趣.

编辑

调试输出:

send: 'POST /api/snippet/ HTTP/1.1\r\nHost: monkeylabs.pl\r\nAccept-Encoding: identity\r\nContent-Type: application/json\r\nAccept: */*\r\nUser-Agent: Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic; pl_PL.utf8; rv:2.7.1) …
Run Code Online (Sandbox Code Playgroud)

python http httpclient httplib envjs

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

Eclipse PyDev完成挂起(又一次)

我在Eclipse中使用PyDev作为我的Python编辑器.它在功能集方面很好.一切都很好,除了一个非常烦人的事情:

代码完成本身很快.当我按下Alt + Space时,窗口几乎立即弹出,所有选项都在那里.选中顶部的选项.然后麻烦了.详细描述直到约5-10秒才出现.所有这些时间CPU都在最大负载下工作,并且接口没有响应.所有处理器都被Eclipse Java进程占用(生成的Python进程似乎空闲).然后弹出一个黄色窗口,它包含的只是所选函数/变量的Python代码.所有连续细节都会立即显示.当我关闭完成窗口时(例如,通过接受其中一个选项并再次要求完成),该过程重复进行.这让我发疯了.

我到目前为止尝试过:

  • 创建一个全新的工作区,
  • 从头开始创建Eclipse/PyDev项目,
  • 调整JVM以确保它有大量内存,
  • 确保选择正确的JVM(最新的Oracle JVM可用),
  • 确保Python进程与Java实例自由通信(我读到了可能存在的问题,但似乎不是问题).
  • 确保所有已安装的插件都是最新的.

我使用的版本是Eclipse Helios,因为我上次检查某些扩展时尚未移植到最新版本.

有没有人观察过类似的问题?有人能绕过它吗?有关如何调试它并提交合理的错误报告的一般想法可能吗?其他值得检查的东西.

任何解决方法都不如完全关闭完成?

谢谢!

编辑:

我也注意到HTML/CSS编辑器中类似弹出窗口的问题.它看起来有点相似(一个黄色的窗口,里面有一些文字),它也需要很长时间才能显示出来.不知道这是否相关,但可能是.

EDIT(2):

好吧,不,我已经开始全新安装最新的Eclipse Indigo,除了PyDev之外没有任何额外的插件,问题仍然存在.好像我必须寻找新的IDE.

eclipse performance autocomplete hang

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

Haskell解释器/ w类型定义

是否有接受类型定义或最好是各种语句的Haskell解释器?

我已经尝试了ghci,hugs而且这些都没有.有什么特别的原因,这很难/不可能吗?

interpreter haskell ghci hugs

7
推荐指数
2
解决办法
280
查看次数