在Lua wiki中,我找到了一种为缺少参数定义默认值的方法:
function myfunction(a,b,c)
b = b or 7
c = c or 5
print (a,b,c)
end
Run Code Online (Sandbox Code Playgroud)
这是唯一的方法吗?PHP风格myfunction (a,b=7,c=5)似乎不起作用.并不是Lua方式不起作用,我只是想知道这是否是唯一的方法.
我正在尝试使用lua脚本在启用SSL的服务器上检索页面.需要注意的是,服务器具有自签名证书.由受信任的CA颁发的证书没有问题.
local https = require("socket.http")
local resp = {}
local r, c, h, s = https.request{
url = "https://my-server:443/example.php",
sink = ltn12.sink.table(resp),
protocol = "tlsv1"
}
Run Code Online (Sandbox Code Playgroud)
服务器返回:
错误请求您的浏览器发送了此服务器无法理解的请求.原因:您正在向支持SSL的服务器端口说明HTTP.请使用HTTPS方案访问此URL.
在服务器端,该请求在Apache ssl_access.log中生成此条目
192.168.0.150 - - [27/Nov/2011:16:32:07 +0100] "GET /" 400 529 "-" "-"
Run Code Online (Sandbox Code Playgroud)
此外,tcpdump显示在SYN-ACK握手之后,没有SSL 257 Client Hello发送.使用我的浏览器或wget使用相同的URL工作正常.
我有一个包含颜色代码的文件:
Fri May 25 17:13:04 2012: [....] Starting MTA: exim4^[[?25l^[[?1c^[7^[[1G[^[[32m ok ^[[39;49m^[8^[[?25h^[[?0c.
Fri May 25 17:13:05 2012: [....] Loading cpufreq kernel modules...^[[?25l^[[?1c^[7^[[1G[^[[32m ok ^[[39;49m^[8^[[?25h^[[?0cdone (acpi-cpufreq).
Run Code Online (Sandbox Code Playgroud)
如何在linux终端上显示它的颜色?
LuaSocket HTTP模块文档说可以在HTTP连接上设置超时:
可以设置以下常量来控制HTTP模块的默认行为:
PORT:用于连接的默认端口; PROXY:用于连接的默认代理; TIMEOUT:设置所有I/O操作的超时; USERAGENT:向服务器报告的默认用户代理. http://w3.impa.br/~diego/software/luasocket/http.htm
如何在lua脚本中设置这些常量?
如何为主网格(xtics,ytics)定义一种格式,为次要抽搐(mxtics和mytics)定义另一种格式?
我试过了:
set style line 100 lt 1 lc rgb "gray" lw 2
set style line 101 lt 1 lc rgb "gray" lw 1
set grid xtics ytics ls 100
set grid mxtics mytics ls 101
Run Code Online (Sandbox Code Playgroud)
但这需要为所有网格定义最后一个lw(1).
当目标函数抛出错误时,我试图退出多处理脚本,但父进程没有退出,而是挂起。
这是我用来复制问题的测试脚本:
#!/usr/bin/python3.5
import time, multiprocessing as mp
def myWait(wait, resultQueue):
startedAt = time.strftime("%H:%M:%S", time.localtime())
time.sleep(wait)
endedAt = time.strftime("%H:%M:%S", time.localtime())
name = mp.current_process().name
resultQueue.put((name, wait, startedAt, endedAt))
# queue initialisation
resultQueue = mp.Queue()
# process creation arg: (process number, sleep time, queue)
proc = [
mp.Process(target=myWait, name = ' _One_', args=(2, resultQueue,)),
mp.Process(target=myWait, name = ' _Two_', args=(2, resultQueue,))
]
# starting processes
for p in proc:
p.start()
for p in proc:
p.join()
# print results
results = {}
for …Run Code Online (Sandbox Code Playgroud) 我正在将用于访问 Google 日历的 PHP 应用程序转换为 Go。我是按照这个一步步开始的。
一切都很顺利,但是当我运行时quickstart.go,出现以下错误:
无法将客户端机密文件解析为配置:oauth2/google:client_credentials.json 退出状态 1 中缺少重定向 URL
其内容为client_secret.json:
{
"installed":{
"client_id":"***********content.com",
"project_id":"*******",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"
}
}
Run Code Online (Sandbox Code Playgroud)
该client_secret.json文件位于我的 GOPATH 的根目录,按照分步说明进行操作
我已经有一个OAuth 2.0 client ID适用于我的 PHP 应用程序,它在 PHP 中运行得很好。我只想在新的 Go 应用程序中使用该日历来访问多个用户日历,但是当我下载附加到该 ID 的 json 文件时,出现上述错误。也许quickstart.go不适合这种用途。
有什么提示吗?
我有一个字符串first part;second part.我想将它拆分;并返回第二部分.一切正常:
start = mystring:find(';')
result = mystring:sub(start)
Run Code Online (Sandbox Code Playgroud)
但我希望能在一条线上做到这一点:
result = mystring:sub(mystring:find(';'))
Run Code Online (Sandbox Code Playgroud)
它不会抛出错误,但它不会返回预期的结果.这不是一个大问题,因为它在两行代码上工作正常,但理解为什么它不在oneliner上工作将帮助我更好地理解lua如何工作.
我使用lua 5.1和luaSocket 2.0.2-4从Web服务器检索页面.我首先检查服务器是否正在响应,然后将Web服务器响应分配给lua变量.
local mysocket = require("socket.http")
if mysocket.request(URL) == nil then
print('The server is unreachable on:\n'..URL)
return
end
local response, httpCode, header = mysocket.request(URL)
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,但请求执行两次.我想知道我是否可以做某事(显然不起作用):
local mysocket = require("socket.http")
if (local response, httpCode, header = mysocket.request(URL)) == nil then
print('The server is unreachable on:\n'..URL)
return
end
Run Code Online (Sandbox Code Playgroud) lua ×5
luasocket ×3
debian ×1
function ×1
gnuplot ×1
go ×1
google-api ×1
google-oauth ×1
linux ×1
python ×1
python-3.5 ×1
sockets ×1
terminal ×1
ubuntu ×1