小编Don*_*Gar的帖子

正则表达式匹配DNS主机名或IP地址?

有没有人有一个方便的正则表达式,可以匹配任何合法的DNS主机名或IP地址?

编写一个可以在95%的时间内工作的一个很容易,但是我希望得到一些经过充分测试的东西,以完全匹配最新的RFC主机名规范.

regex dns

358
推荐指数
4
解决办法
33万
查看次数

如何使用Bash访问函数内的命令行参数?

我正在尝试在bash中编写一个函数来访问脚本命令行参数,但是它们被替换为函数的位置参数.如果函数没有显式传递,是否有任何方法可以访问命令行参数?

# Demo function
function stuff {
  echo $0 $*
}

# Echo's the name of the script, but no command line arguments
stuff

# Echo's everything I want, but trying to avoid
stuff $*
Run Code Online (Sandbox Code Playgroud)

bash argv command-line-arguments

89
推荐指数
5
解决办法
13万
查看次数

在GNU Make中,如何将变量转换为小写?

这是一个愚蠢的问题,但....与GNU Make:

VAR = MixedCaseText
LOWER_VAR = $(VAR,lc)

default:
        @echo $(VAR)
        @echo $(LOWER_VAR)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,将VAR的内容转换为小写的正确语法是什么?显示的语法(以及我遇到的其他所有内容)导致LOWER_VAR为空字符串.

makefile

49
推荐指数
4
解决办法
4万
查看次数

在Python中将有限的dict值解压缩为局部变量的优雅方法

我正在寻找一种优雅的方法来从Python字典中提取一些值到本地值.

与此相当的东西,但对于更长的值列表更清晰,以及更长的键/变量名称:

d = { 'foo': 1, 'bar': 2, 'extra': 3 }
foo, bar = d['foo'], d['bar']
Run Code Online (Sandbox Code Playgroud)

我原本希望得到以下内容:

foo, bar = d.get_tuple('foo', 'bar')
Run Code Online (Sandbox Code Playgroud)

我可以轻松编写一个不错的函数:

def get_selected_values(d, *args):
    return [d[arg] for arg in args]

foo, bar = get_selected_values(d, 'foo', 'bar')
Run Code Online (Sandbox Code Playgroud)

但我一直怀疑还有一些其他的内置方式.

python

12
推荐指数
2
解决办法
4870
查看次数

在Go中测试不睡眠的异步结果

我的代码中有很多组件具有持久的go-routines,它们监听事件以触发操作.大多数情况下,他们没有理由(在测试之外)在完成该操作后发回通知.

但是,我的单元测试使用sleep来等待这些异步任务完成:

// Send notification event.
mock.devices <- []sparkapi.Device{deviceA, deviceFuncs, deviceRefresh}

// Wait for go-routine to process event.
time.Sleep(time.Microsecond)

// Check that no refresh method was called.
c.Check(mock.actionArgs, check.DeepEquals, mockFunctionCall{})
Run Code Online (Sandbox Code Playgroud)

这看起来很糟糕,但我还没有找到一个更好的解决方案,不会给非测试使用增加不合理的开销.我错过了合理的解决方案吗?

testing unit-testing go

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

如何让pylint识别出扭曲和流行的成员?

我非常喜欢让pylint告诉我,如果我使用的是不存在的成员.然而,我的新项目是使用twisted和ephem模块,这似乎混淆了pylint.

如何在不关闭E1101的情况下解除这些(不正确的)pylint警告,并且不会在每个相关呼叫周围发出警告删除注释?

E1101:  8,0: Module 'twisted.internet.reactor' has no 'run' member
E1101: 49,25:sunrise_next: Module 'ephem' has no 'Sun' member
E1101: 63,26:sunset_next: Module 'ephem' has no 'Sun' member
Run Code Online (Sandbox Code Playgroud)

python twisted pylint pyephem

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

在Go中,如何关闭长时间运行的阅读?

除非通过文件操作阻止通道通信,否则似乎不可能通过带有执行文件操作的goroutine的通道进行双向通信。我如何才能克服这种限制?

表达这个问题的另一种方式...

如果我在goroutine中运行类似于以下内容的循环,如何告诉它关闭连接并退出而不会阻塞下一个Read?

func readLines(response *http.Response, outgoing chan string) error {
    defer response.Body.Close()
    reader := bufio.NewReader(response.Body)

    for {
        line, err := reader.ReadString('\n')
        if err != nil {
            return err
        }
        outgoing <- line
    }
}
Run Code Online (Sandbox Code Playgroud)

它无法从告诉它何时关闭的通道读取数据,因为它阻塞了网络读取(在我的情况下,这可能需要几个小时)。

从goroutine外部简单地调用Close()似乎并不安全,因为Read / Close方法似乎并不是完全线程安全的。

我可以简单地在例程的内部/外部使用对response.Body的引用进行锁定,但是会导致外部代码阻塞,直到挂起的读取完成为止,我特别希望能够中断正在进行的读取。

go goroutine

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

Python Twisted 如何确定绝对 URL?

我需要在 Twisted 中处理 Web 请求时生成资源的绝对 URL。主机、端口和协议 (HTTP/HTTPS) 都可能因部署而异,因此动态查找非常方便。

我需要的 URL 是对当前正在处理的资源 url 的修改,并删除了所有参数,因此只需找到完整的请求 URL 就会有很大帮助。

换句话说,我知道“/path/foo”,但是如何找到“ http://example.com:8080 ”?

python twisted

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