小编Bra*_*des的帖子

如何在Linux shell脚本中提示是/否/取消输入?

我想在shell脚本中暂停输入,并提示用户进行选择.标准的"是,否或取消"类型问题.如何在典型的bash提示符中完成此操作?

linux bash shell scripting

1352
推荐指数
25
解决办法
94万
查看次数

连字符后没有换行符

我希望在-与所有浏览器兼容的个案基础上阻止连字符后的换行符.

例:

我有这个文本: 3-3/8"在HTML中是这样的: 3-3/8”

问题是,在一行的末尾附近,由于连字符,它会断开并包裹到下一行而不是像完整的单词一样对待它...

3-
3/8"
Run Code Online (Sandbox Code Playgroud)

我试过插入"零宽度不中断字符",没有运气......

3-3/8”
Run Code Online (Sandbox Code Playgroud)

我在Safari中看到了这一点,并认为它在所有浏览器中都是一样的.

以下是我doctype和字符编码......

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

在连字符后我有什么方法可以防止这些断线?我不需要任何适用于整个页面的解决方案...只是我可以根据需要插入的内容,如"零宽度无中断字符",除了一个有效.

这是一个演示.只需将框架缩小,直到连字符处的线条断开.

http://jsfiddle.net/RagKH/

html css line-breaks character-encoding hyphenation

326
推荐指数
5
解决办法
16万
查看次数

为什么连接的RequireJS AMD模块需要加载器?

我们在开发过程中喜欢RequireJS和AMD,我们可以编辑模块,在浏览器中点击重新加载,然后立即看到结果.但是,当需要将我们的模块连接到单个文件进行生产部署时,显然必须有一个AMD加载器仍然存在,无论该加载器是RequireJS本身还是其较小的合作伙伴"杏仁",如下所述:

http://requirejs.org/docs/faq-optimization.html#wrap

我的困惑是:为什么装载机是必需的?除非你有非常特殊的情况使你有必要require()在你的模块内部进行调用,否则似乎可以连接一系列AMD模块而不需要加载器.最简单的例子是一对模块,如下所示.

ModA.js:

define([], function() {
    return {a: 1};
});
Run Code Online (Sandbox Code Playgroud)

ModB.js:

define(['ModA'], function(A) {
    return {b : 2};
});
Run Code Online (Sandbox Code Playgroud)

鉴于这两个模块,似乎连接器可以简单地生成以下文本,而不会使生产服务器或浏览器承受RequireJS或Almond所需的额外带宽或计算.

我想象一个产生的连接器(我使用V形符号«,»来显示上面两个模块的片段插入位置):

(function() {
    var ModA = «function() {
        return {a: 1};
    }»();
    var ModB = «function(A) {
        return {b : 2};
    }»(ModA);
    return ModB;
})();
Run Code Online (Sandbox Code Playgroud)

据我所知,这可以正确地重现AMD的语义,只需要少量的外来胶水JavaScript.有这样的连接器吗?如果没有,我会因为认为我应该写一个而变得愚蠢 - 是否真的很少有代码库由简单而干净的模块组成,define()并且永远不需要进一步的require()调用来启动以后的异步代码提取?

javascript amd web-deployment requirejs almond

37
推荐指数
1
解决办法
4518
查看次数

你如何调试Mako模板?

到目前为止,我发现当Mako模板编码不正确时,无法生成可用的回溯.

有没有办法调试模板除了迭代每行代码?

python debugging templates mako jinja2

36
推荐指数
1
解决办法
8899
查看次数

如果密钥可能不存在,则从Python dict读取

我是Python和解析数据的新手.

我可以将外部JSON提要拉入Python字典并迭代字典.

for r in results:
     print r['key_name']
Run Code Online (Sandbox Code Playgroud)

当我浏览返回的结果时,当一个键没有值时,我会收到一个错误(记录的值可能并不总是存在).如果我打印结果,则显示为

'key_name': None, 'next_key':.................
Run Code Online (Sandbox Code Playgroud)

我的代码打破了错误.如何控制没有值的键?

任何帮助将不胜感激!

python json

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

如何在可重用的应用程序中使用带有django的命名空间URL

我有一个django应用程序,一个论坛应用程序,它有模板.在这些模板中,有一些网址指向应用程序的某些部分.例如,thread_list模板具有到每个线程的链接,如下所示:

{% for thread in threads %}
    <a href="{% url forum_thread thread %}">{{thread.title}}</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

问题是,我真的不喜欢称我的网址为"forum_thread".我更喜欢"线程"并使用django的命名空间功能."forum_thread"可以在项目的其他地方使用(名称空间冲突).所以它看起来像这样:

{% for thread in threads %}
    <a href="{% url forum:thread thread %}">{{thread.title}}</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但这不是正确的方法.这里的文档有点不清楚.

我希望这个应用程序可重用且易于配置.但我也想使用最好的标准.我不想让用户指定自己的命名空间名称,然后让他们编辑每个模板中的每个网址.

我应该如何在这个应用程序中做网址?

django django-urls

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

如何让setuptools忽略subversion库存?

使用使用setuptools的setup.py打包Python包时:

from setuptools import setup
...
Run Code Online (Sandbox Code Playgroud)

源分发创建者:

python setup.py sdist
Run Code Online (Sandbox Code Playgroud)

像往常一样,不仅包括MANIFEST.in中指定的文件,而且它也包括Subversion在包目录下列出的所有文件控制版本.这非常烦人.它不仅难以对我的包中分发的文件进行任何形式的显式控制,而且意味着当我按照"svn export"而不是"svn checkout"构建我的包时,我的内容包可能会有很大的不同,因为没有.svn元数据setuptools会对要包含的内容做出不同的选择.

我的问题:如何关闭这种可怕的行为,以便"setuptools"以同样的方式处理我的项目,无论我使用的是Subversion,还是从未听说过的版本控制,或者是使用"svn export"创建的裸树在我的项目结束时创建,以确保它在我的工作目录之外的某个地方干净地构建?

到目前为止我管理的最好的是一个丑陋的猴子补丁:

from setuptools.command import sdist
del sdist.finders[:]
Run Code Online (Sandbox Code Playgroud)

但这是Python,而不是丛林,所以当然我想要一个更好的解决方案,根本不涉及猴子.我如何通过查看MANIFEST.py中可见的,可预测的规则来驯服setuptools,关闭它的魔力并让它表现得明智?

python packaging egg setuptools

20
推荐指数
3
解决办法
3479
查看次数

ZeroMQ工作人员应该如何安全"挂断"?

我本周开始使用ZeroMQ,当使用请求 - 响应模式时,我不确定如何让工作人员安全地"挂断"并关闭他的套接字而不可能丢弃消息并导致发送该消息的客户永远不会得到响应.想象一下用Python编写的工人看起来像这样:

import zmq
c = zmq.Context()
s = c.socket(zmq.REP)
s.connect('tcp://127.0.0.1:9999')
while i in range(8):
    s.recv()
    s.send('reply')
s.close()
Run Code Online (Sandbox Code Playgroud)

我一直在做实验,并且发现一个127.0.0.1:9999套接字类型的客户zmq.REQ做出一个公平排队的请求可能会让公司排队算法在工人完成最后一次工作之后send()但在工作之前就选择上面的工作人员.以下close()方法.在这种情况下,似乎请求由工作进程中的ØMQ堆栈接收和缓冲,并且当close()抛出与套接字关联的所有内容时请求将丢失.

工人如何"安全"分离 - 有没有办法发出"我不再需要消息"的信号,然后(a)循环传输信号期间到达的任何最终消息,(b)生成他们的回复,然后(c)执行close()保证不丢弃任何消息?

编辑:我想我想要输入的原始状态是"半封闭"状态,没有进一步的请求可以接收 - 并且发送者会知道 - 但返回路径仍然打开,以便我可以检查我的传入缓冲区是一个最后到达的消息,如果有一个坐在缓冲区中则响应它.

编辑:在回答一个好问题时,更正了描述以使等待消息的数量为多个,因为可能有许多连接在等待回复.

python concurrency rpc message-queue zeromq

20
推荐指数
1
解决办法
7724
查看次数

使用PyEphem计算黎明和日落时间

是否可以使用PyEphem计算黎明,黄昏和日落时间?我用PyEphem来制作白天和黑夜时间,但是我没有在日落/黄昏/黎明时找到任何东西

python astronomy pyephem

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

使用现有套接字连接的Python"请求"

Python"请求"库目前风靡一时,因为它提供了用于发出HTTP请求的漂亮界面 - 但在它下面似乎有很多层间接 - 会话,HTTP适配器,最后是urllib3的机制.

如果我已经拥有一个打开的套接字,并希望使用"请求"在该套接字下发送HTTP响应并收到回复,那么在这个抽象堆栈中哪里是干预的正确位置?

如果没有某种干预(或自定义?),堆栈将尝试为我创建一个新的TCP/IP套接字,但在我的特定应用程序中,我的代码在代表我已建立连接之前不会被调用,所以我会如果我想能够使用请求的功能,需要说服请求在现有套接字上进行通话.

请求库:

http://pypi.python.org/pypi/requests

https://github.com/kennethreitz/requests

python sockets http python-requests

16
推荐指数
2
解决办法
9889
查看次数