在Ruby中,我可以binding.pry在我的代码中的任何位置键入,在执行时,我的控制台将进入REPL,我可以访问所有局部变量,可以进行更改,并执行任意代码.
例:
# foo.rb
require 'pry'
n = 5
binding.pry
puts "your number is #{n}"
Run Code Online (Sandbox Code Playgroud)
当我运行它:
$ ruby foo.rb
From: /Users/cgenco/Desktop/foo.rb @ line 4 :
1: # foo.rb
2: require 'pry'
3: n = 5
=> 4: binding.pry
5: puts "your number is #{n}"
[1] pry(main)> n = 100
=> 100
[2] pry(main)> exit
your number is 100
Run Code Online (Sandbox Code Playgroud)
这是一个令人难以置信的调试工具,特别是对于需要复杂设置的情况:我可以binding.pry在现场键入我需要更多代码,弄乱,找出需要编写的代码,然后将抛光的代码添加到实际的源代码中.
在浏览器控制台中是否有像jy这样的工具?
我正在开发我的第一个名为t_time_tracker的宝石(哇哦!).一切都在发展中很好; 我尽可能地尽量减少执行时间,尽可能减少执行时间:
t_time_tracker[master*]% time ruby -Ilib ./bin/t_time_tracker
You're not working on anything
0.07s user 0.03s system 67% cpu 0.141 total
Run Code Online (Sandbox Code Playgroud)
(这是我的应用程序的"hello world" - 没有参数调用它只打印出"你没有做任何事情")
大约十分之一秒,使用我的CPU的67% - 很酷,我可以忍受.感觉相当瞬间.让我们构建它:
$ gem build t_time_tracker.gemspec
$ gem install ./t_time_tracker-0.0.0.gem
Run Code Online (Sandbox Code Playgroud)
并使用已安装的二进制文件执行完全相同的操作:
$ time t_time_tracker
You're not working on anything
t_time_tracker 0.42s user 0.06s system 93% cpu 0.513 total
Run Code Online (Sandbox Code Playgroud)
半秒钟?!那个是从哪里来的?!让我们添加一些调试输出,并从开发二进制文件中包含系统gem,以查看瓶颈所在:
t_time_tracker[master*]% time ruby ./bin/t_time_tracker
(starting binary)
(require 'time' and 'optparse')
0.041432
(before `require 't_time_tracker')
0.497135
(after `require 't_time_tracker')
(Gem.loaded_specs.keys = t_time_tracker)
(initializing TTimeTracker class) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用更具成本效益的方式来部署我的Rails应用程序,并通过Ruby Starter项目来了解Google Cloud Platform.
它几乎是完美的,并且在价格方面肯定具有竞争力,但我无法弄清楚如何在重新部署后自动删除旧部署的版本实例.
即:假设我有一个版本的每个实例运行:
然后我对我的应用进行了更改并重新部署:
$ gcloud preview app deploy app.yaml worker.yaml --promote
Run Code Online (Sandbox Code Playgroud)
所以现在我已经部署了每个实例的两个版本(因为Google智能地在它们之间切换,我假设):
但现在呢?这些实例是否会自行关闭?到目前为止,我发现摆脱它们的最好方法是从教程的删除项目页面:
删除应用版本
您可以在" 版本"页面中找到应用版本列表.要删除非默认版本,请选中复选框,然后单击" 删除".
Google App Engine上的每个人都只是手动删除其应用的旧部署吗?
我正在尝试使用更具成本效益的方式来部署我的Rails应用程序,并通过Ruby Starter项目来了解Google Cloud Platform.
它几乎是完美的,而且在价格方面肯定具有竞争力,但部署速度非常慢.
当我从示例Bookshelf应用程序运行部署命令时:
$ gcloud preview app deploy app.yaml worker.yaml --promote
Run Code Online (Sandbox Code Playgroud)
我可以gae-builder-vm在Compute Engine/VM Instances页面上看到一个新实例,我得到熟悉的Docker构建输出 - 这需要大约十分钟才能完成.
但是,如果我立即重新部署,我会得到一个新的gae-builder-vm旋转,它完成相同的十分钟构建过程,从第一次构建映像时没有明显的缓存.
在这两种情况下,第二个模块(worker.yaml)都会被缓存并且非常快速地进行:
Building and pushing image for module [worker]
---------------------------------------- DOCKER BUILD OUTPUT ----------------------------------------
Step 0 : FROM gcr.io/google_appengine/ruby
---> 3e8b286df835
Step 1 : RUN rbenv install -s 2.2.3 && rbenv global 2.2.3 && gem install -q --no-rdoc --no-ri bundler --version 1.10.6 && gem …Run Code Online (Sandbox Code Playgroud) 我有一个来自 Snap Spectacles (1088x1088) 的方形视频,我想将其叠加在放大和模糊的自身上。
示例输入框:
生成放大和模糊的背景:
期望的输出:
我想我可以用ffmpeg 的 maskedmerge来做到这一点,但我很难找到例子。
有一个 maskedmerge 的例子,它合并两个相同大小的视频并动态删除一个绿屏,另一个合并具有透明度的视频。
这是我能得到的最接近的:
ffmpeg -i background.jpg -vf "movie=input.jpg[inner];[in][inner] overlay=#{offset}:0 [out]" -c:a copy output.jpg
tl; dr:给定前两帧,我如何生成第三帧(作为视频)?