我正在研究华丽而强大的 Plotly Python API,其目标是生成静态 html 仪表板。
这提出了两个问题:
为了生成 html,我看到以下示例。图表似乎是通过 URL 嵌入的。自从plotly 开源以来,这个 URL 嵌入实现仍然适用吗?现在有其他方法可以将绘图发送到静态 html 吗?
如何控制绘图/仪表板元素的布局?例如,在 Bokeh 中,我们可以执行以下操作:
bar = Bar(<define bar plot>)
line = Line(<define line plot>)
donut = Donut(<define donut chart>)
bar_line_panel = hplot(bar, line)
final_layout = vplot(bar_line_panel, donut)
output_file('foo.html')
show(final_layout)
渲染的 html 文件将包含圆环图上方彼此相邻的折线图和条形图。plotly 中是否有类似的功能,或者是否需要模板和 html/css 争论来指定绘图元素的布局,如本例所示?
感谢您抽出时间,非常期待在 Plotly 中创建一些交互式可视化!
问题陈述:
我正在尝试使用 Golang 中的基本中间件来保护 websocket 升级程序 http 端点,因为WebSocket 协议不处理授权或身份验证。
社区建议
战略:
到目前为止,我失败的策略是尝试上面的社区策略 1,以确保X-Api-Key通过中间件使用自定义标头升级连接,并且只升级使用匹配密钥启动对话的客户端。
下面的代码the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header在服务器端产生。
问:
我想寻求帮助理解:
GET通过 http发送初始身份验证,随后通过方案的升级请求ws被服务器拒绝。想法和建议、示例、要点表示赞赏,如果我能进一步澄清或重述,请提供建议。
server.go:
package main
import (
"flag"
"log"
"net/http"
"github.com/gorilla/websocket"
)
func main() {
var addr = flag.String("addr", "localhost:8080", "http service address")
flag.Parse()
http.Handle("/ws", Middleware(
http.HandlerFunc(wsHandler),
authMiddleware,
))
log.Printf("listening …Run Code Online (Sandbox Code Playgroud) 给定一个字符串(日志文件中的一行):
Date=2017-06-29 03:10:01.140 -700 PDT,clientDataRate="12.0,18.0,24.0,36.0,48.0,54.0",host=superawesomehost.foo,foo=bar
Run Code Online (Sandbox Code Playgroud)
我想用一个空格替换逗号,但只能在双引号内。
想要的结果:
Date=2017-06-29 03:10:01.140 -700 PDT,clientDataRate="12.0 18.0 24.0 36.0 48.0 54.0",host=superawesomehost.foo,foo=bar
Run Code Online (Sandbox Code Playgroud)
我已经开始使用正则表达式和 ReplaceAllString 的基本组合,但我很快意识到我不明白如何实现实现这一点所需的匹配组 (?)。
package main
import (
"fmt"
"log"
"regexp"
)
func main() {
logLine := "Date=2017-06-29 03:10:01.140 -700 PDT,clientDataRate=\"12.0,18.0,24.0,36.0,48.0,54.0\",host=superawesomehost.foo,foo=bar"
fmt.Println("logLine: ", logLine)
reg, err := regexp.Compile("[^A-Za-z0-9=\"-:]+")
if err != nil {
log.Fatal(err)
}
repairedLogLine := reg.ReplaceAllString(logLine, ",")
fmt.Println("repairedLogLine:", repairedLogLine )
}
Run Code Online (Sandbox Code Playgroud)
非常感谢所有帮助。
我有一个[]interface{}迭代,并检查交换机中每个元素的类型.我想为几种数字类型添加一个'catch-all'的情况,即int || float32 || float64.
我们似乎能够检查一个元素是否是一个单独的不同类型,但我无法弄清楚用||(或)检查多个类型的语法.
这可能吗?我试过的(游乐场):
package main
import (
"fmt"
)
func main() {
things := []interface{}{"foo", 12, 4.5, true}
for _, thing := range things {
switch t := thing.(type) {
// How can we implement logical OR for types to implement a catch-all for numerics?
// Throws error: "type <type> is not an expression"
// case ( int || float64 ) :
// fmt.Printf("Thing %v is a 'numeric' …Run Code Online (Sandbox Code Playgroud)