是否存在记录shell脚本参数的约定?
例如:
#!/usr/bin/env bash
# <description>
#
# Usage:
# $ ./myScript param1 [param2]
# * param1: <description>
# * param2: <description>
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个特定模板的一些事情:
myScript)出现在文件本身中$视觉上是有用的,但可能会导致语言与块注释混淆,导致一些验证工具抱怨混合/不一致的缩进(例如,此块中的空格,代码选项卡 - 当然,提供一个选项卡)这有什么指导方针吗?
在比较相似的行时,我想突出显示同一行的差异:
a) lorem ipsum dolor sit amet
b) lorem foo ipsum dolor amet
lorem <ins>foo</ins> ipsum dolor <del>sit</del> amet
Run Code Online (Sandbox Code Playgroud)
虽然difflib.HtmlDiff似乎可以执行此类内联突出显示,但它会产生非常详细的标记.
不幸的是,我无法找到另一个不按行逐行操作的类/方法.
我错过了什么吗?任何指针将不胜感激!
我正在寻找一种简单的方法将消息从一个进程(Perl脚本,短命)传递到另一个进程(Python脚本,长时间运行) - 这两个进程都是同一台机器的本地进程.我做了一些研究,但我发现的要么是在我头上还是看起来不必要的复杂 - 让我有点迷茫和迷茫.
我想象一个大致如下的最小例子:
# listener.py
class Listener:
def __init__(self, port)
self.port = port
def on_message(self, msg):
print "%s: %s" % (timestamp, msg)
recipient = Listener(1234)
# sender.pl
sub send_message {
my ($msg, $port) = @_;
# ...
}
send_message("hello world", 1234);
Run Code Online (Sandbox Code Playgroud)
任何有关如何解决和/或在何处阅读的指示将不胜感激!
TLDR:我正在为应用程序开发人员寻找asyncio的全面或权威解释(教程/书籍/演示文稿/ ...).
虽然我对事件循环和期货/延迟/承诺有很好的理解(很大程度上要归功于JavaScript),但是Python的asyncio的复杂性仍然让我感到困惑.asyncio似乎比我习惯的要复杂得多 - 可能是因为它部分设计用于与现有实现(Twisted,Tornado等)的低级兼容性,并且因为它允许在单独的线程中进行多个事件循环.
据我所知,基本概念没有全面的演练,因此我在网上查阅了官方文档以及各种文章和演示文稿.
然而,我仍然不确定我的理解,很可能是因为并不总是清楚应用程序级别的相关内容,或者您是否不需要担心上述替代方案.(许多资源似乎都认为熟悉Twisted等人.)
一些导致我不确定的事情的例子:
asyncio.coroutine结合使用yield from,但这种比较表明我应该重新考虑.loop.create_server(MyProtocol)或创建服务器asyncio.start_server(my_connection_handler)- 何时使用?loop.close()之后loop.run_forever())的适当卫生是什么?Task除了Futures 之外还需要s.yield from,看似无效)怎么办?@property和asyncio.coroutine)吗?StreamWriter.write是非阻塞的,但我不知道是否真的如此.我不是要求这些特定问题的答案,它们只是说明了我在概念层面上的挣扎.
我想使用独立于DOM元素的自定义jQuery事件,但我不确定实现这一目标的最佳方法是什么.
这是我开始的:
// some system component registers an event handler
$().bind("foo.bar", handler); // foo is my app's namespace, bar is event name
// another part of the system fires off the event
$().trigger("foo.bar", { context: "lorem ipsum" });
Run Code Online (Sandbox Code Playgroud)
在查看了jQuery的源代码,特别是它对全局AJAX事件的处理之后,我认为这应该可行:
$.fn.bind("foo.bar", handler);
// ...
$.event.trigger("foo.bar", { context: "lorem ipsum" });
Run Code Online (Sandbox Code Playgroud)
但是,似乎我的处理函数永远不会被调用.
我可能会以错误的方式解决这个问题吗?
jQuery对象就像数组一样,不会污染原生原型.这是如何实现的?
我知道这不仅仅是带有数字键的对象 - 所以也许只是提供相应的方法(类似的东西jQuery.prototype.indexOf = Array.prototype.indexOf).
我用Google搜索并查看了源代码,但找不到明确的答案.
我有一个AngularJS服务,用于/contacts/:id根据索引(/contacts)检索单个联系人():
app.service("CollectionService", function($http, $q) {
this.fetch = function(collectionURL) {
return $http.get(collectionURL).then(function(response) {
var urls = response.data;
var entities = urls.map(function(url) {
return $http.get(url);
});
return $q.all(entities);
}).then(function(responses) {
return responses.map(function(response) {
return response.data;
});
});
};
});
// used within the controller:
CollectionService.fetch("/contacts").then(function(contacts) {
$scope.contacts = contacts;
});
Run Code Online (Sandbox Code Playgroud)
结果显示在一个简单的列表中(<li ng-repeat="contact in contacts">{{ contact }}</li>).
但是,由于使用$q.all,该列表在收到最后(最慢)响应之前不会更新.当收到单个联系人时,如何从批量更新切换到增量更新?
我在我的测试框架中使用以下代码:
testModules = ["test_foo", "test_bar"]
suite = unittest.TestLoader().loadTestsFromNames(testModules)
runner = unittest.TextTestRunner(sys.stdout, verbosity=2)
results = runner.run(suite)
return results.wasSuccessful()
Run Code Online (Sandbox Code Playgroud)
有没有办法让报告(runner.run?)在第一次失败后中止以防止过多的冗长?
是否存在将嵌套对象"压缩"到单个级别的通用方法:
var myObj = {
a: "hello",
b: {
c: "world"
}
}
compress(myObj) == {
a: "hello",
b_c: "world"
}
Run Code Online (Sandbox Code Playgroud)
我想会有一些递归,但我想我不需要在这里重新发明轮子......!?
我们的框架需要在某些丑陋的样板代码中包含某些函数:
def prefix_myname_suffix(obj):
def actual():
print 'hello world'
obj.register(actual)
return obj
Run Code Online (Sandbox Code Playgroud)
我想这可能会被装饰者简化:
@register
def myname():
print 'hello world'
Run Code Online (Sandbox Code Playgroud)
然而,事实证明这是相当棘手的,主要是因为框架在模块级别寻找某种函数名称模式.
我在装饰器中尝试了以下内容,但无济于事:
current_module = __import__(__name__)
new_name = prefix + func.__name__ + suffix
# method A
current_module[new_name] = func
# method B
func.__name__ = new_name
current_module += func
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
python ×5
javascript ×3
jquery ×2
angularjs ×1
coffeescript ×1
decorator ×1
diff ×1
ipc ×1
json ×1
linux ×1
perl ×1
promise ×1
shell ×1
unit-testing ×1
unix ×1