小编Xio*_*iov的帖子

Python套接字库认为套接字是打开的

我正在使用一些看起来像这样的Python:

HOST = '127.0.0.1'
PORT = 43434
single = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    single.bind((HOST, PORT))
except socket.error as e:
    # Print an error, exit.
Run Code Online (Sandbox Code Playgroud)

虽然它在过去运作良好,但我们现在得到了错误[Errno 98] Address already in use.SIGINT处理程序关闭套接字连接,所以我不确定它是如何进入该状态的,但是现在我只是想修复它.

两者lsofnetstat说没有使用该端口:

[$]> sudo netstat -an | grep 43434
[$]> sudo lsof -i :43434
Run Code Online (Sandbox Code Playgroud)

TIME_WAIT根据/proc/sys/net/ipv4/tcp_fin_timeout,设置为60秒,但错误发生在上次成功运行后数小时.

我试过(暂时)设置REUSEADDR(通过single.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)),但似乎没有效果.

什么在tarnation正在发生?我是否能够再次使用此端口而无需重启机器?

python sockets linux networking

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

'bundle exec'抱怨gem没有被安装,即使在'bundle install'之后

我有一个使用Jekyll和Github Pages的网站.之前在另一台计算机上搞乱了版本和RVM之后,在这个上我选择使用捆绑器只使用一个版本的Ruby和每个项目环境.

我有一个非常简单的Gemfile:

[$]> cat Gemfile
source 'https://rubygems.org'
gem 'github-pages'
Run Code Online (Sandbox Code Playgroud)

和bundler配置:

[$]> cat .bundle/config
---
BUNDLE_PATH: env
BUNDLE_DISABLE_SHARED_GEMS: '1'
Run Code Online (Sandbox Code Playgroud)

当我运行任何命令(jekyll,gem,irb)时bundle exec,我得到一个依赖性错误:

[$]> bundle exec jekyll
Could not find RedCloth-4.2.9 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)

但是,该软件包已经安装:

[$]> bundle install
Using RedCloth 4.2.9
Using i18n 0.6.11
Using json 1.8.1
[snip]
Using github-pages 29
Using bundler 1.7.7
Your bundle is complete!
It was installed into ./env
Run Code Online (Sandbox Code Playgroud)

关于Bundler如何在使用一个子命令时认为安装了gem,我有点不知所措,但认为在使用另一个子命令时它们会丢失.

[$]> which ruby …
Run Code Online (Sandbox Code Playgroud)

ruby gem bundler

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

我们在URI中将组合路径,查询和片段称为什么?

URI由几个部分组成:scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment].通常,我发现自己想要引用主机和端口右侧的URI的整个部分 - 在HTTP请求中被视为URI的部分:

GET /path?query#fragment
Host: example.com
Run Code Online (Sandbox Code Playgroud)

作为一个简写,我通常将其称为"路径",但这并不准确,因为路径只是其中的一部分.这基本上与您称之为URL的整个第一部分的内容相反

是否有一个商定的名称?

uri terminology

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

如何在PHP应用程序中提供bcrypt(我应该)?

我正在为一个相对成熟的开源PHP项目做出贡献.最近,我发现它将密码存储为普通的MD5哈希,这对我来说非常麻烦.我想如果我要修复它,我也可以选择Do It Right(tm),所以我想使用bcrypt.

首先,我发现其他语言:bcrypt-ruby似乎使用OpenBSD的原始C代码或jBCrypt的java代码. py-bcrypt是BSD代码的一个薄包装器. BCrypt.net是直接移植jBCrypt.

现在,PHP本身在crypt函数中支持bcrypt(虽然误称为'blowfish').但是,5.3之前的版本需要系统本身的支持,通常由crypt_blowfish提供. phpass是相同的,建议安装PHP 5.3或Suhosin.

由于该应用程序的许多用户使用标准共享主机,我不想要求服务器的任何特殊配置.我希望只是从PHP的5.3版本中窃取代码,但它是在C中,并且(从我刚刚完成的一小部分阅读中)我不能要求为项目的用户使用C扩展.

我想到只是创建一个纯粹的PHP端口bcrypt,但是看看jBCrypt的来源,我不确定我应该,因为我对PHP或河豚不太熟悉,这里的错误可能是同时的首先是危险且难以察觉的.

所以,我向你提出两个(多部分)问题:

  1. 我缺乏PHP知识是否能让我受益匪浅?我真的可以使用已经创建的实现之一吗?
  2. 我是否应该只创建一个简单的loooping函数来调用sha1()md5()重复调用一些可配置的次数?

php security passwords bcrypt

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

在Ansible中使用"apt-get -f install"

我想apt-get --fix-broken install在Ansible中运行命令.如果我使用它,它不起作用command: apt-get -f install,并且apt模块似乎没有提供用于指定该选项的参数.我怎么能在Ansible中做到这一点?

ansible ansible-playbook

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

在Vim中zt和zz之间的滚动窗口

我经常发现自己想要滚动一个Vim窗口,这样我所在的线路大约是屏幕的四分之一 - 它提供了更多的呼吸空间zt,但显示的代码比显示的更多zz.当我的光标位于我想要阅读的函数的开头时,它也会有所帮助,但zt会切断类似Javadoc的注释.

我可以使用一些魔法来做到这一点吗?我恐怕根本不理解Vim的脚本.

vim scroll

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

生成所有可能的n字符密码

作为Learning-Go练习的一部分,我正在编写一个简单的暴力密码破解程序.

要生成在Python中使用字符AE的所有可能的双字符密码,我将使用itertools.product():

from itertools import product
for permutation in product('ABCDE', repeat=2):
  print permutation
Run Code Online (Sandbox Code Playgroud)

但是,我在Go中努力做到这一点.

其他问题似乎是关于排列,这是不是我想要的.虽然Python文档包含该函数的示例实现,但我不知道如何转换yield为Go.

我想我应该提两个限制:

  1. 我希望密码的长度是可变的.也就是说,我可能想要使用8个字符的密码,或者6个字符或其他东西.这意味着我们不能只嵌套n个循环.
  2. 我不想立刻把所有这些都放在内存中.

go

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

什么相当于C++中的Python函数装饰器?

我正在将Python指标库移植到C++.Python库提供的一个API是一个函数修饰器,可以轻松地在函数上记录时序数据.通过修改函数定义来实现

@timed('timing.foo')
def foo():
    ...
Run Code Online (Sandbox Code Playgroud)

foo_result = foo() 基本上变成了

start = time.time()
foo_result = foo()
post_metric_to_endpoint('timing.foo', time.time() - start)
Run Code Online (Sandbox Code Playgroud)

C++中的函数挂钩中,我们发现这个包装实例并将调用定时函数的负担放在调用者身上的答案,这意味着我们不会在代码库中获得性能数据(首先更新很烦人,而且很容易后来被遗忘了).同样,这个答案定时在C++中一种优雅的方式需要改变调用点. 这个问题的另一个答案提供了一种包装任意代码块的方法,理论上这意味着我们可以缩进我们想要计时的函数的整个主体并将其嵌套在一个范围内.这是我发现的最接近我想要的东西,但是非常难看,相当干扰,而且我不确定性能影响.

由于这是用作库,我们可以修改我们想要的函数的来源; 事实上,这是更可取的,因为我希望每次调用该函数的时间都是定时的.大多数讨论似乎都侧重于开发中的临时分析,而我正在尝试构建一个在生产环境中始终处于活动状态的系统.

c++

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

django-crispy form - 隐藏字段标签

我有一个脆弱的 django 表单。

当我使用时,隐藏模板中字段标签的最佳方法是什么{% cripsy form %}

我不想让用户看到MY_FIELD_1 and MY_FIELD_2

class mYForm(forms.ModelForm):
    MY_FIELD_1 = forms.BooleanField()

    MY_FIELD_2 = forms.BooleanField()

    def __init__(self, *args, **kwargs):
        ...
        ...
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Field('MY_FIELD_1',),
            Field('MY_FIELD_2',),
        )
    ...
Run Code Online (Sandbox Code Playgroud)

python django django-crispy-forms

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

vi:粘贴到文件顶部

使用vi困扰我的一件事是粘贴(p)我打开的行之后插入行,这使得我无法在文件顶部插入内容.

例如,假设我正在通过并在几个文件的顶部添加UTF-8声明:

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

是的,它被猛拉了.好.

我切换到另一个文件,gg到达顶部,然后p粘贴,我最终得到这样的东西:

import sys
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.

现在,我总是在寻找能用vi做的新事物,所以我觉得这是我应该做的事情,但我不知道怎么做.然而,搜索并没有提供非常有用的结果,因为每个人和他们的母亲都有一个vi(m)cheatsheet,其中包含p和gg.因此,我来​​到SO:这是可能的,如果是的话,怎么样?

vi vim editor paste

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

通过iPython和伪控制台运行doctests

我有一个相当基本的doctestable文件:

class Foo():
    """
    >>> 3+2
    5
    """

if __name__ in ("__main__", "__console__"):
    import doctest
    doctest.testmod(verbose=True)
Run Code Online (Sandbox Code Playgroud)

直接通过python运行时,它按预期工作.

但是,在iPython中,我得到了

1 items had no tests:
    __main__
0 tests in 1 items.
0 passed and 0 failed.
Test passed.
Run Code Online (Sandbox Code Playgroud)

由于这是Django项目的一部分,并且需要访问所有适当的变量并且manage.py设置,我也可以通过修改后的命令运行它,该命令使用code.InteractiveConsole,其中一个结果是__name__设置到' __console__'.

使用上面的代码,我获得与iPython相同的结果.我尝试将最后一行更改为:

 this = __import__(__name__)
 doctest.testmod(this, verbose=True)
Run Code Online (Sandbox Code Playgroud)

__console__我猜到了一个ImportError ,这是有道理的.这对python或ipython都没有影响.

所以,我希望能够通过所有这三种方法成功运行doctests,尤其是InteractiveConsole方法,因为我希望很快就会需要Django小马魔法.

只是为了澄清,这是我所期待的:

Trying:
    3+2
Expecting:
    5
ok
1 items had no tests:
    __main__
1 items passed all tests:
   1 tests in __main__.Foo
1 tests in 2 items.
1 passed and …
Run Code Online (Sandbox Code Playgroud)

python django ipython

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

Django:返回404状态代码的自定义404处理程序

我正在处理的项目有一些需要传递给每个视图的数据,所以我们有一个render_to_response被调用的包装器master_rtr.好.

现在,我需要404页面来完成这个.根据说明,我创建了一个custom_404调用master_rtr 的自定义404处理程序(巧妙地调用).一切看起来都不错,但我们的测试都失败了,因为我们收到了200 OK.

所以,我试图弄清楚如何返回404状态代码.这里似乎是一个HttpResponseNotFound类还挺我想要什么,但我不太清楚如何构建所有的废话,而不是使用render_to_response.或者更确切地说,我可能想出来,但似乎他们必须是一个更容易的方式; 在那儿?

代码的适当部分:


 def master_rtr(request, template, data = {}):
  if request.user.is_authenticated():
   # Since we're only grabbing the enrollments to get at the courses, 
   # doing select_related() will save us from having to hit database for
   # every course the user is enrolled in
   data['courses'] = \
    [e.course for e in \
     Enrollment.objects.select_related().filter(user=request.user) \
     if e.view]
  else:
   if "anonCourses" in request.session:
    data['courses'] = request.session['anonCourses']
   else: …
Run Code Online (Sandbox Code Playgroud)

django http-status-code-404

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