小编xxj*_*jnn的帖子

Python将wav转换为mp3

我看过pymedia(已停产),pyglet(很棒,但没有转换器)和audiotools(命令行cd翻录),似乎没有一个合适.

在Python 2.7中,您如何做

convert(wavFileLocation, 'mp3')
Run Code Online (Sandbox Code Playgroud)

如果没有python方式,你会怎么做python可以调用的方式?(例如,调用跨平台命令行工具...如果存在返回(name,pythonCodeForInvocation))

python audio mp3 wav

17
推荐指数
3
解决办法
2万
查看次数

如何获取asdf的版本作为版本

在终端中解释,我已经使用asdf安装了一个版本的nodejs,但终端只能看到另一个版本:

> asdf list
nodejs
  12.18.3

> nodejs --version
v8.10.0

> asdf global nodejs 12.18.3 

> nodejs --version          
v8.10.0
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到 .zshrc 的顶部

. $HOME/.asdf/asdf.sh
export PATH=$HOME/.asdf/asdf.sh:$PATH
Run Code Online (Sandbox Code Playgroud)

已重新加载.zshrc

> source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

没有将本地版本设置为 8.10.0 的本地文件。

我如何才能nodejs --version获得 asdf 认可的全球版本?

asdf-vm

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

安装sassc时出错,clang编译器不支持'-march=native',M1

使用Apple Silicon M1机器。尝试安装 ruby​​ gem gem install sassc -v '2.1.0'

问题是 clang 编译器还没有 Apple M1 的“native”标志。有关的

给出的错误:(注意我用“yournamehere”替换了我的名字)

Fetching sassc 2.1.0
Installing sassc 2.1.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/yournamehere/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/sassc-2.1.0/ext
/Users/yournamehere/.asdf/installs/ruby/2.7.2/bin/ruby -I /Users/yournamehere/.asdf/installs/ruby/2.7.2/lib/ruby/2.7.0 -r ./siteconf20210303-14183-1uwhwj4.rb extconf.rb
creating Makefile

current directory: /Users/yournamehere/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/sassc-2.1.0/ext
make "DESTDIR=" clean

current directory: /Users/yournamehere/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/sassc-2.1.0/ext
make "DESTDIR="
compiling ./libsass/src/units.cpp
clang: error: the clang compiler does not support '-march=native'
make: *** [units.o] Error 1

make failed, exit code 2

Gem …
Run Code Online (Sandbox Code Playgroud)

ruby clang apple-m1

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

Python TDD目录结构

在Python中是否有用于TDD的特定目录结构?

教程讨论测试的内容,而不是放置它们的位置

从Python Koans周围开始,怀疑它是这样的:

/project/main_program.py         # This has main method, starts program
/project/classes/<many classes>.py
/project/main_test.py            # This simply directs unittest onto tests, can use parameters fed to it to customise tests for environment
/project/tests/<many tests>.py

# to run tests, type "python -m unittest main_test.py" (into a terminal)
# to run program, type "python main_program.py"
Run Code Online (Sandbox Code Playgroud)

我这样做了吗?是否有一个很好的指南教授TDD的目录层次结构?我听说混合代码和测试文件很糟糕.

参考文献:

python convention tdd directory-structure

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

zsh过度尝试纠正功能特征

我正在使用git和zsh.我们的老板正在使用git-flow.Zsh一直在问我是否错误地将'feature'错误地称为'feature'.由于这个原因,一位同事停止使用zsh出于愤怒,我们必须解决这个问题,让他重新回到zsh的光芒!

rainbow@pony:~/ruby-project-9000 (*) (!)
> git push origin feature/power_level
zsh: correct 'feature/power_level' to 'features/power_level' [nyae]? n
Run Code Online (Sandbox Code Playgroud)

更新:完全禁用自动更正

刚刚correct_all,作为公认的答案,但禁用自动更正zsh的语法在它的更新变化.以下应该是一个全部:

source $ZSH/oh-my-zsh.sh
DISABLE_CORRECTION="true"
unsetopt correct
unsetopt correct_all
Run Code Online (Sandbox Code Playgroud)

DISABLE_CORRECTION ="true" - 目前对我有用,从这里学习


更新:禁用特定命令的自动更正

要专门禁用它自动更正命令,但遗憾的是不是"功能",因为它是一个目录(感谢下面的答案!),请参阅此解决方案以免除命令

git zsh git-flow

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

ruby 包含方法名称冲突

如果一个类包含许多模块,并且从包含调用其原始模块的私有方法中获得的方法,并且私有方法存在于具有相同名称的其他模块中,则它应该使用来自其自身模块的定义。在代码中:

module C
  def c
    puts collision
  end
  private
  def collision
    'c'
  end
end
module B
  def b
    puts collision
  end
  private
  def collision
    'b'
  end
end
class A
  include B
  include C
end
A.new.b
# => 'c'
Run Code Online (Sandbox Code Playgroud)

我希望A.new.b给予'b'A.new.c给予'c'但存在冲突,因为它们使用相同的私有方法名称。在包含许多内容的大型项目中,如何避免这种情况?

ruby

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

Ruby-实际上获取实例的所有方法

在这个问题上:

如何在Ruby中列出对象的所有方法?

您可以调用foo.methods并获取所有方法。但这并不能获得所有方法。使用ActiveStorage的Rails中的示例:

Image.first.specimens.first.methods.include?(:variant)
# => false
Image.first.specimens.first.respond_to?(:variant)
# => true
Image.first.specimens.first.variant
Traceback (most recent call last):
        1: from (irb):3
ArgumentError (wrong number of arguments (given 0, expected 1))
Image.first.specimens.first.method(:variant)
# => #<Method: ActiveStorage::Attachment(id: integer, name: string, record_type: string, record_id: integer, blob_id: integer, created_at: datetime)#variant>
Run Code Online (Sandbox Code Playgroud)

鉴于正在引发ArgumentError,因此respond_to?可以抓取该方法,它确实具有variant方法。但是没有显示.methods。如何查看方法的完整列表?

ruby

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

Ruby Rbenv尝试从Bundle运行Zeus,尽管它是一个全球宝石(使用ZSH)

(更新:由zsh引起的问题,请参阅接受的答案)

很久以前,我遵循这个伟大的指南,使用Rbenv和捆绑器https://gist.github.com/1384279,所有在Ruby Land都很好.(我正确安装)

Bundler gem全局安装在当前的ruby版本中.每个项目的所有宝石都是从各自的gemfiles安装的捆绑包.

我试图在全局安装Zeus(比如全局安装bundler),而不是将它添加到每个项目的gemfile中.

joe@computer:~/some_project
> rbenv versions
  1.9.3-p194
* 1.9.3-p327-perf (set by /Users/joe/some_project/.rbenv-version)

joe@computer:~/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems
> ls -a
.                   method_source-0.7.1 zeus-0.13.1
..                  rake-0.9.2.2
bundler-1.2.0.rc.2  rdoc-3.9.4
Run Code Online (Sandbox Code Playgroud)

我已经成功了,因为你可以看到zeus与bundler一起全局安装......但是:

joe@computer:~/some_project
> rbenv rehash

joe@computer:~/some_project
> zeus init
Users/joe/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/bundler-1.2.0.rc.2/lib/bundler/rubygems_integration.rb:147:in `block in replace_gem': zeus is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from /Users/joe/.rbenv/versions/1.9.3-p327-perf/bin/zeus:22:in `<main>'
Run Code Online (Sandbox Code Playgroud)

据我所知,zeus正在被寻求,就好像它已经安装了捆绑包,但它不是捆绑安装它全局安装.

如何让shell在捆绑的宝石之前查看全球宝石?

ruby zsh zeus bundler rbenv

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

用于查找最多n个连续模式的正则表达式

让我们说我们的模式是大写字母的正则表达式(但我们可能有比搜索大写更复杂的模式)

至少要找到 n个连续模式(在这种情况下,我们正在寻找的模式只是一个大写字母),我们可以这样做:

(使用Ruby)

somestring = "ABC deFgHij kLmN pQrS XYZ abcdEf"

at_least_2_capitals = somestring.scan(/[A-Z][A-Z]+/)
=> ["ABC", "XYZ"]
at_least_3_capitals = somestring.scan(/[A-Z]{3}[A-Z]*/)
=> ["ABC", "XYZ"]
Run Code Online (Sandbox Code Playgroud)

但是,如何搜索最多 n个连续模式,例如,最多连续一个大写字母:

matches = somestring.scan(/ ??? /)
=> [" deFgHij kLmN pQrS ", " abcdEf"]
Run Code Online (Sandbox Code Playgroud)

详细的策略

我读到我需要否定"至少"正则表达式,将其变为DFA,否定接受状态,(然后将其转换回NFA,尽管我们可以保留原样),所以将其写为正则表达式.如果我们将我们的模式看作接收'1'并且没有接收到接收'0'的模式,我们可以绘制一个简单的DFA图(其中n = 1,我们最多想要一个模式):

DFA_to_be_regexed

具体来说,我想知道这是如何成为一个正则表达式.一般来说,我希望找到如何用正则表达式找到"最多",因为我的正则表达式技能感到特别"至少"单独发痒.


旅行危险 - 在精神上不是正确的解决方案

请注意,这个问题不是这篇文章的重复,因为使用公认的方法会给出:

somestring.scan(/[A-Z]{2}[A-Z]*(.*)[A-Z]{2}[A-Z]*/)
=> [[" deFgHij kLmN pQrS X"]]
Run Code Online (Sandbox Code Playgroud)

这不是DFA所展示的,不仅仅是因为它错过了第二次寻求的匹配 - 更重要的是,它包括'X',它不应该,因为'X'后面是另一个资本,而且从DFA我们看到一个资本,其次是另一个资本,不是接受国.

你可以建议

somestring.split(/[A-Z]{2}[A-Z]*/)
=> ["", " deFgHij kLmN pQrS ", " abcdEf"]
Run Code Online (Sandbox Code Playgroud)

(感谢橡皮鸭)

但我仍然想知道如何仅使用正则表达式找到最多n次出现.(知识!)

ruby regex

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

Rails 在 rspec 测试中提供 ActiveStorage 图像

在开发和生产中,我们可以在浏览器中访问图像。这不适用于测试运行时的测试环境。

我们用于图像的 URL 格式如下:

http://localhost:3000/images/ABC # for development. Port for tests is 3030
Run Code Online (Sandbox Code Playgroud)

: 并重定向到 ActiveStorage 附件服务 URL - 如下所示:

http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaDFTVEd0WlpUbHFlVGh0YW1od1JucEdkMUJuYWxaelNuSUdPZ1pGVkE9PSIsImV4cCI6IjIwMTgtMDYtMDhUMDc6MDM6MDUuNDI2WiIsInB1ciI6ImJsb2Jfa2V5In19--abef581f4df7a19ae1a35a2be03edd028659441f/454.jpg?content_type=image%2Fjpeg&disposition=inline%3B+filename%3D%22454.jpg%22%3B+filename%2A%3DUTF-8%27%27454.jpg
Run Code Online (Sandbox Code Playgroud)

在测试运行时使用byebugbinding.pry 之类的东西),我们可以确定事情是否正确设置(或者它们是否正确?):

(byebug) @request.host
"localhost"
(byebug) @request.port
3030
(byebug) File.open("blah.html", 'w'){|file| file.write(response.body)}
1854
(byebug) get(image_source_path(id: 'ABC'))
302
(byebug) response.redirect_url
"http://localhost:3030/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaDEwUWpkVmRFeHJUalV5YUdsYU5XOUdPR0Y2UVZCVFpsb0dPZ1pGVkE9PSIsImV4cCI6IjIwMTgtMDYtMDhUMDc6MjU6NDEuNzkzWiIsInB1ciI6ImJsb2Jfa2V5In19--42f8cd5ca06b07704a6550a19aaa143a6eeb0c6e/pig_admirer.jpg?content_type=image%2Fjpeg&disposition=inline%3B+filename%3D%22pig_admirer.jpg%22%3B+filename%2A%3DUTF-8%27%27pig_admirer.jpg"
(byebug) get(response.redirect_url)
200
(byebug) response.content_length
3618075
Run Code Online (Sandbox Code Playgroud)

:它确实返回了一个 ~3.5MiB 的图像。但是,当将页面保存为 HTML(该序列中的“blah.html”)时,在 byebug 运行时打开该 HTML 时,图像不会加载 - 调用...images/ABC被拒绝。

这是一个问题,因为我们使用 wicked_pdf 生成 PDF,并且在生成 PDF 的测试环境中,它无法访问这些图像以放入 PDF。

也许可以使测试服务器为 rspec 之外的响应提供服务?否则,PDF 中将没有图像。


附加说明 - 环境配置

在测试中我们添加了:

before do …
Run Code Online (Sandbox Code Playgroud)

rspec rails-activestorage

5
推荐指数
0
解决办法
1396
查看次数