小编Mik*_*lis的帖子

LilyPond:从音乐中提取音高

我使用LilyPond创建练习成绩和练习曲.我已经想出了如何允许在Moveable Do solfege表示法中输入音符,并且有一个模板(见下文),它支持在音符下面显示solfege符号作为歌词.目前,我必须手动从符号加上生成音乐的标记中提取歌词.我已经能够使用一些python和vim代码(这里没有显示)部分自动化,但它仍然有点令人不满意.

在我看来,最好的解决方案是使用LilyPond的内置Scheme解释器在处理文件时提取音高名称.我已经尝试过使用地图与ly:note-pitchname,但到目前为止还没有成功.可能是因为我知道对Scheme的蹲坐,特别是在LilyPond脚本中使用的.

% Moveable Do as lyrics example

% define some solfege pitchnames 
% (in practice, the full set goes into "english.ly")
pitchnames = #`(
    (do . ,(ly:make-pitch -1 0 NATURAL))
    (re . ,(ly:make-pitch -1 1 NATURAL))
    (mi . ,(ly:make-pitch -1 2 NATURAL))
    )

#(ly:parser-set-note-names parser pitchnames)

% compose as though in C major
mynotes =  \relative do' {\key do \major do2 re4( mi4) }

% transpose to desired key
melody = \transpose do mi  { \mynotes } …
Run Code Online (Sandbox Code Playgroud)

scheme guile lilypond

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

如何从Go WebAssembly访问DOM元素属性?

我正在尝试从https://github.com/golang/go/wiki/WebAssembly扩展“ Hello WebAssembly”示例。如给定的那样,该示例仅将消息打印到控制台。我想添加一些代码syscall/js来替换body元素的内容。

以下尝试无法建立:

package main

import (
    "fmt"

    "syscall/js"
)

func main() {
    fmt.Println("Hello, WebAssembly!") // original example
    // I added
    doc := js.Global().Get("document")
    body := doc.Call("getElementById", "thebody")
    body.innerHTML = "Dynamic Content"
}
Run Code Online (Sandbox Code Playgroud)

当我尝试构建时,$ env GOOS=js GOARCH=wasm go build -o main.wasm 我得到: ./wasm.go:14:6: body.innerHTML undefined (type js.Value has no field or method innerHTML)

考虑一下就不足为奇了,但是我在https://godoc.org/syscall/js的文档中看不到一个示例,该示例解释了如何获取和设置元素属性。

go webassembly

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

使用 {{if}} 过滤范围时如何抑制 Go 文本/模板输出中的换行符

这个问题与Golang 模板范围换行符删除有关,但那里的答案没有解决。

给定

type Data struct {
    Item    string
    IsFruit bool
}

var data = []Data{
    {"banana", true},
    {"apple", true},
    {"onion", false},
    {"peach", true}}

var Template = `
FRUITS ONLY
-----------------
{{range .}}{{if .IsFruit}}{{.Item}}{{else}}{{end}}
{{end -}}
-----------------
`
Run Code Online (Sandbox Code Playgroud)

Template执行with的输出在和data之间包含不需要的换行符。applepeach

FRUITS ONLY
-----------------
banana
apple

peach
-----------------
Run Code Online (Sandbox Code Playgroud)

我尝试了{{-和的许多变体,但-}}没有设法抑制换行符。消除{{else}}也行不通。

请注意,对于我的实际应用程序来说,预过滤数据不是一个选项。

完整代码示例位于 https://goplay.space/#N_GyaWwjH0Y

go-templates

2
推荐指数
1
解决办法
1694
查看次数

如何让 VSCode 对同一存储库中的不同目录使用不同的 Go 环境变量?

我有一个 Go 项目,它构建了一个 WebAssembly (WASM) 应用程序和一个后端服务器。两个部分的构建和运行都没有错误。然而,VSCode 在 WASM 应用程序中会产生恼人的 linter 错误。

\n
could not import syscall/js (no required module provides package "syscall/js")\n
Run Code Online (Sandbox Code Playgroud)\n

据我目前的理解,问题是 VSCode 不会从它应该调用的构建标签推断出来goplsenv GOOS=js GOARCH=wasm一种解决方案是将这些标签设置为工作区 Go 环境变量。

\n

然而,应用程序设计依赖于为 wasm 和服务器代码提供一个通用的内部包,以便每一方都能看到一些简化它们之间接口的结构定义。为此,该存储库的组织方式(简化视图)如下:

\n
cmd\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 internal\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common.go\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 common_test.go\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 server\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wasm\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n
Run Code Online (Sandbox Code Playgroud)\n

如何配置 VSCodeenv GOOS=js GOARCH=wasm在对 wasm 目录进行 linting 时使用而不是对其他目录使用?

\n

go visual-studio-code webassembly

2
推荐指数
1
解决办法
1799
查看次数

Python陷阱:简单赋值结束时的逗号逗号

我花了大约一天的时间在一个赋值语句的末尾找到一个由逗号逗号引起的错误.寻找我的bug的困难因为第三方回调库加剧了异常而加剧,但它让我想知道为什么Python(2.x)不会引发语法错误而不是创建元组.考虑以下

>>> a = 1,
>>> a
(1,)
Run Code Online (Sandbox Code Playgroud)

如您所见,尾随逗号创建一个单例元组.这不违反Python语法(参见http://docs.python.org/reference/expressions.html#grammar-token-expression_list),但它肯定会导致一些意想不到的结果,例如

>>> a == 1,
(False,)
Run Code Online (Sandbox Code Playgroud)

VS

>>> (1,) == a
True
Run Code Online (Sandbox Code Playgroud)

虽然我现在明白发生了什么,但我很困惑为什么Python允许这种语法而不是要求显式括号来创建元组.是否存在某种情况需要这种行为,或者至少是有利的? 在过去的7年里,我几乎完全使用Python进行编程,而且我从来不需要以这种方式创建单例.在大多数方面,Python是一种非常易读和明确的语言.这个特殊的"特征"似乎是非Pythonic.

python

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

Plotly: How to discard older points?

TL; DR我想使用Plotly.js显示长时间运行的带状图。我不知道该如何抛弃旧观点。

细节

我的CodePen的以下更新程序位于https://codepen.io/Michael-F-Ellis/pen/QvXPQr,几乎可以满足 我的要求。它显示了2条迹线中的20个样本,它们以500毫秒的间隔连续更新。在演示的最后,它将绘制所有点以显示它们仍然存在。

var cnt = 0;
var interval = setInterval(function() {
  // Add next point to each trace
  Plotly.extendTraces('graph', {
    y: [[rand()], [rand()]]
  }, [0, 1])
  // Display only 20 most recent points
  Plotly.relayout('graph', { 'xaxis.range': [cnt-20, cnt]})

  cnt = cnt+1;
  if(cnt === 100) {
    // Before ending the run, show all points
    // to demonstrate they still exist in Plotly.
    Plotly.relayout('graph', { 'xaxis.range': [0, cnt]});
    clearInterval(interval);
  }
}, 500);
Run Code Online (Sandbox Code Playgroud)

问题是我确实要删除较旧的点。真正的应用程序需要在内存有限的系统上永远永久运行。我正在寻找将删除最旧的N个跟踪点的Plotly调用。由于目标系统的性能也受到限制,因此它必须合理有效。

谢谢!

javascript plotly

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

使用 iota 枚举字符串常量

以下示例使用 iota 定义了一系列从 3333 开始的端口号。

package main

import (
    "fmt"
)
const (
FirstPort = iota+3333
SecondPort
ThirdPort
)
func main() {
    hostAndPort := "localhost:"+fmt.Sprint(SecondPort)
    fmt.Printf("%s", hostAndPort ) 
    // Output:
    // localhost:3334
}
Run Code Online (Sandbox Code Playgroud)

在组合主机名和端口时,我想避免必须将端口常量包装起来fmt.Sprint并简单地编写,例如,"localhost:"+SecondPort. 有没有办法使用 iota 将端口号定义为字符串常量,例如"3334"

以下不起作用:

FirstPort = string(iota + 3333)
Run Code Online (Sandbox Code Playgroud)

也没有

FirstPort = fmt.Sprintf("%d", iota + 3333)
Run Code Online (Sandbox Code Playgroud)

string enumeration constants go iota

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

如何防止http.ListenAndServe更改静态输出中的样式属性?

在一个非常基本的手写网页(没有js,样式表等)中,我有一些静态html,其部分看起来像这样。

<li style="font-size:200%; margin-bottom:3vh;">
  <a href="http://192.168.1.122:8000">
    Reload HMI
  </a>
</li>
Run Code Online (Sandbox Code Playgroud)

我正在使用Go的http.ListenAndServe服务该页面。出现的内容如下所示:

<li style="font-size:200%!;(MISSING) margin-bottom:3vh;">
  <a href="http://192.168.1.122:8000">
    Reload HMI
  </a>
</li>
Run Code Online (Sandbox Code Playgroud)

请注意更改的样式属性。

服务器实施也是基本的。它作为goroutine启动:

// systemControlService provides pages on localhost:8003 that
// allow reboots, shutdowns and restoring configurations.
func systemControlService() {
    info("Launching system control service")
    http.HandleFunc("/", controlPage)
    log.Fatal(http.ListenAndServe(":8003", nil))
}

// loadPage serves the page named by title
func loadPage(title string) ([]byte, error) {
    filename := "__html__/" + title + ".html"
    info(filename + " requested")
    content, err := ioutil.ReadFile(filename)
    if err != …
Run Code Online (Sandbox Code Playgroud)

http go

-5
推荐指数
1
解决办法
63
查看次数