小编Kon*_*tin的帖子

当我使用分组时,如何使用gsub对Ruby正则表达式(regex)进行反向引用?

我想修补从网页中提取的一些文本数据.样品:

t="First sentence. Second sentence.Third sentence."
Run Code Online (Sandbox Code Playgroud)

在第二句末尾的点之后没有空格.这标志着第3个句子在原始文档中的单独行(在br标记之后).

我想使用这个正则表达式将"\n"字符插入适当的位置并修补我的文本.我的正则表达式:

t2=t.gsub(/([.\!?])([A-Z1-9])/,$1+"\n"+$2)
Run Code Online (Sandbox Code Playgroud)

不过遗憾的是它不工作:"NoMethodError:未定义的方法`+"的零:NilClass"我怎样才能正确地反向引用匹配的群体?在Microsoft Word中这么简单,我只需要使用\ 1和\ 2符号.

ruby regex backreference reference gsub

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

如何将Mechanize中的相对链接转换为绝对链接?

是否有一种方法可以将Mechanize相对链接对象转换为包含绝对URL的另一个对象.

Mechanize必须知道绝对链接,因为我也可以click在相对链接上调用该方法.

ruby mechanize hyperlink absolute-path relative-url

9
推荐指数
2
解决办法
1803
查看次数

如何选择独特的元素

我想Array用一个uniq_elements方法来扩展该类,该方法返回多个为1的元素.我也想在我的新方法中使用闭包uniq.例如:

t=[1,2,2,3,4,4,5,6,7,7,8,9,9,9]
t.uniq_elements # => [1,3,5,6,8]
Run Code Online (Sandbox Code Playgroud)

关闭示例:

t=[1.0, 1.1, 2.0, 3.0, 3.4, 4.0, 4.2, 5.1, 5.7, 6.1, 6.2]
t.uniq_elements{|z| z.round} # => [2.0, 5.1]
Run Code Online (Sandbox Code Playgroud)

既不工作t-t.uniq也不t.to_set-t.uniq.to_set工作.我不关心速度,我在程序中只调用一次,所以它可能很慢.

ruby arrays uniq

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

是否可以从管道上传带有cURL的文件?

我的意思是POST一个标准的文件上传表单.在这种情况下,常用命令行包含此开关:

-F "Filedata=@filename.zip"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试提供由linux命令"mkfifo"制作的命名管道时,例如."mkfifo filename.zip",我总是在生产者方面得到一条错误信息:

curl: (23) Failed writing body (1856 != 16384)
Run Code Online (Sandbox Code Playgroud)

并且在fifo的消费者侧也出现了一些错误消息.我在生产者一方用另一个卷曲命令喂了我的fifo,例如:

 curl http://example.com/archive.zip > filename.zip
Run Code Online (Sandbox Code Playgroud)

在消费者方面:

curl http://example.com/fileupload.php -F "file=@filename.zip"
Run Code Online (Sandbox Code Playgroud)

当我在fifo的消费者端传递Content-Length HTTP标头时,我在生产者端没有收到错误消息,但是消费者(上传)端仍然出现错误消息,上传失败.

 curl http://example.com/fileupload.php -F "file=@filename.zip" -H "Content-Length: 393594678"
Run Code Online (Sandbox Code Playgroud)

我也试过提供cURL文件上传一个非命名管道,导致cURL从stdin读取数据(标记为@ - ),如:

   curl -# http://example.com/archive.zip | curl -# http://example.com/fileupload.php -F "file=@-"
Run Code Online (Sandbox Code Playgroud)

在这种情况下上传成功,但下载和上传进度不同步,我可以看到太单独的hashmark进度指示器,一个用于下载,一个用于上载,而是连续而不是同时运行.在该远程文件的顶部始终命名为" - ",但这对我来说不是问题,可以稍后重命名.

进一步注意:我在Ruby命令行IRB/Pry会话中尝试了上述内容,我注意到当我使用Ruby命令"system"来调用管道构造时:

system %Q{curl -# http://example.com/archive.zip | curl -# http://example.com/fileupload.php -F "file=@-"}
Run Code Online (Sandbox Code Playgroud)

在这种情况下我只能看到一个散列标记进度指示器,所以我认为管道工作应该是这样,但我可以在第二种情况下看到两个连续的散列标记进度指示器,如下所示:

%x{curl -# http://example.com/archive.zip | curl -# http://example.com/fileupload.php -F "file=@-"}
Run Code Online (Sandbox Code Playgroud)

upload curl stdin pipe fifo

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

如何将任意Ruby对象保存到磁盘并在必要时将其读回?

我想将Ruby集或散列保存到磁盘,并在必要时从文件中返回.我怎样才能做到这一点?

ruby file disk object save

7
推荐指数
2
解决办法
4419
查看次数

如何从具有不同大小和宽高比的图像中使用ImageMagick制作蒙太奇?

我有很多图像,不同的大小和宽高比.是否有可能对它们进行蒙太奇?我的意思是在为构建公共行的图像设置公共高度后,将它们最佳地排列成行.当然,不允许图像宽高比进行修改,并且不允许任何图像从最终剪辑中删除,也不允许复制.

蒙太奇中图片行的高度通常不相等,但是它们的值应该保持在最小范围内(统计意义上)或换句话说:必须最小化与行高度的平均值的标准偏差.

给出所需的蒙太奇宽度和高度(a.)

或者给出宽度和允许的比率范围(或等效的高度范围)(b.),例如宽度必须是1024像素,高度必须使得w/h <0.9且w/h> 0.8

1.)图像必须按照初始固定顺序打包在蒙太奇中.在这种情况下,必须在蒙太奇(简单)中开始新图像行之后找到图像.

2.)允许改变图像顺序.在这种情况下,必须找到一种排列,当每个图像被打包到蒙太奇(硬)中时,这导致最终行高的标准偏差的最小化.

例如:

在此输入图像描述

在此输入图像描述

optimization resize crop imagemagick montage

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

如何在Bash中超时一组命令

我正在摆弄Linux命令"timeout":它只是在给定秒后停止长时间运行的命令.但我想暂停一个命令,而不是一组命令.我可以以两种方式()和{;}对命令进行分组,但是以下都不起作用:

timeout 1 { sleep 2; echo something; }
timeout 1 ( sleep 2; echo something )
Run Code Online (Sandbox Code Playgroud)

我怎么能用分组来做到这一点?

linux bash command timeout

7
推荐指数
3
解决办法
3523
查看次数

如何将两个图像与HTML和CSS并排放置以最佳地填充给定宽度?

我想在DIV元素内并排放置两个任意图像,这个图像正好是800像素宽(宽度= 800像素).图像的宽度和高度也可以是各种尺寸.有时宽度大于高度,有时宽度小于高度.我将两个图像放在div元素中,第三个div放在div元素中.我尝试了这段代码,但无法正常工作.我该怎么办?JSFiddle:http://jsfiddle.net/gUT43/

<!DOCTYPE html>
<html>
<head>
<style>
img {
     max-width: 100%;
     height: auto;
     width: auto\9; /* ie8 */
    }
div {
 display: inline-block;
 white-space: nowrap;
}
</style>
</head>
<body>

<div style="max-width: 800px; border:2px black solid">

 <div style="height: auto; border:1px green solid"">
  <img src=http://i.imgur.com/Xt6vUQD.jpg>
 </div>

 <div style="height: auto; border:1px blue solid"">
  <img src=http://i.imgur.com/BqFMNlq.jpg >
 </div>

</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

html css image

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

如何使用 ffmpeg 从 MP4 视频中提取所有关键帧?

我想从 BMP 格式的视频中提取所有关键帧以进行进一步处理。我设法调查了这个命令:

ffmpeg -skip_frame nokey -i videofile.mp4 -vf select='eq(pict_type\,I),setpts=N/(25*TB)' -q 1  ./%09d.bmp
Run Code Online (Sandbox Code Playgroud)

它适用于除 MP4 和 MKV 文件之外的所有视频文件。相反,它从 MP4 文件中提取所有帧,此外我还收到了很多错误消息:

[h264 @ 0x90d80a0] concealing 1200 DC, 1200 AC, 1200 MV errors in P frame
[h264 @ 0x90c4ce0] concealing 1200 DC, 1200 AC, 1200 MV errors in B frame
[h264 @ 0x90d80a0] concealing 1200 DC, 1200 AC, 1200 MV errors in B frame
[h264 @ 0x90d7500] Cannot use next picture in error concealment
[h264 @ 0x90d7500] concealing 1200 DC, 1200 AC, …
Run Code Online (Sandbox Code Playgroud)

mp4 ffmpeg extract keyframe mkv

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

用户保存 HTML5 音频时如何控制文件名?

在我的博客上,可以收听广播频道,可以是现场直播,也可以是按时间表收听频道存档中的先前广播。

我希望访问者能够使用其独特的节目名称保存这些较旧的广播。当访问者单击给定的时间戳时,适当的或适当参数化的 URL 将加载到 HTML5 音频对象的源中。

有两种 URL 格式,第一种仅适用于当天:http://example.com/20190707080000/20190707090000/channel1.mp3
在这种情况下,我可以利用以下 hack:而不是最新的 URL,我将以下 URL 加载到音频播放器中:http://example.com/20190707080000/20190707090000/channel1.mp3/Title_of_the_programme.mp3

在这种情况下,访问者将能够通过给定的文件名保存收听的节目:“Title_of_the_programme.mp3”。

其他日子的其他 URL 与当天不同,因为这些节目已经存档,可能采用较低的比特率和/或格式: http: //example.com/2019/07/06/channe11。 mp4?start=28800&end=32400 “start”和“end”参数适用于一天中给定的第二秒,即实际程序开始和结束的时间。

在第二种情况下,上述黑客不再起作用,因此我无法将类似的 URL 加载到 HTML5 音频播放器中: http://example.com/2019/07/06/channel1.mp4 ?start=28800&end =32400/节目标题.mp4

不幸的是,它不起作用,当我单击 HTML5 音频播放器的“另存为”按钮时,文件名始终是“channel1.mp4”,这是次优的。

在这两种情况下,针对 GET 请求都会立即提供完整的程序。

由于浏览器的同源策略,HTML“A”元素的“download”属性、“a[download]”或 HTML5“audio”元素的相同属性也不起作用:无线电的域是当然与我的博客域不同。

由于同源策略,使用 Ajax 调用 (XMLhttprequest) 将生成的媒体文件提取到浏览器 blob 中也不起作用。无线电服务器当然不会为这些 Ajax 调用提供适当的标头字段:“Access-Control-Allow-Origin: *”。

广播节目 URL 的响应标头不包含“content-disposition”标头字段,因此文件名必须由 URL 本身确定。

html javascript audio ajax blob

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