小编ano*_*fds的帖子

Inkscape:动画SVG到视频?

我用Inkscape 的Sozi插件创建了一个动画演示文稿.它看起来很棒,但并非所有浏览器都支持SVG动画(例如,Chrome根本不喜欢Inkscape/Sozi SVG).我想将演示文稿转换为视频.一种选择是进行屏幕捕获,但我希望有更好的东西.

环顾四周,我也遇到了这个答案 - 但是逐帧创建SVG并不是真的可行,因为我想保留缩放/滑动动画.

有什么工具可以使用吗?

video svg inkscape

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

Hadoop setInputPathFilter错误

我正在使用Hadoop 0.20.2(无法更改),我想在输入路径中添加一个过滤器.数据如下:

/path1/test_a1
/path1/test_a2
/path1/train_a1
/path1/train_a2
Run Code Online (Sandbox Code Playgroud)

我只想处理所有带有火车的文件.

看一下FileInputFormat类建议使用:

 FileInputFormat.setInputPathFilter(Job job, Class<? extends PathFilter> filter)
Run Code Online (Sandbox Code Playgroud)

这是我的问题开始的地方,因为PathFilter是一个接口 - 当然,我可以扩展接口但是我仍然没有实现.所以相反,我实现了接口:

class TrainFilter implements PathFilter
{
   boolean accept(Path path)
   {
      return path.toString().contains("train");
   }
}
Run Code Online (Sandbox Code Playgroud)

当我使用TrainFilter作为PathFilter时代码编译,但是当我运行它时,我得到一个例外,因为输入路径被搞砸了.如果不设置过滤器,我的代码将运行在/ path1下面的所有文件,但是,在设置过滤器时,它会抛出错误:

InvalidInputException: Input path does not exist hdfs://localhost:9000/path1
Run Code Online (Sandbox Code Playgroud)

以下是我在驱动程序代码中进行设置的方法:

job.setMapperClass(....class);
job.setInputFormatClass(....class);
job.setMapOutputKeyClass(...class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(IntWritable.class);

FileInputFormat.setInputPathFilter(job, TrainFilter.class);
FileInputFormat.addInputPath(job, new Path("/path1/"));
FileOutputFormat.setOutputPath(job, new Path("/path2/"));
job.waitForCompletion(true);
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么建议?

编辑:我发现了问题.对PathFilter的第一次调用始终是目录本身(/ path1),并且由于它不包含("train"),因此目录本身无效,因此抛出异常.这让我想到另一个问题:如何测试任意路径是否是目录?据我所知,我需要一个FileSystem的引用,它不是PathFilter的默认参数之一.

io hadoop

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

Perl脚本 - 将所有输出传输到同一个终端(如何?)

我正在调用一个Perl脚本链,我希望所有stdout/stderr到达命令行.我有两个脚本:

A.pl

print "Hello from A\n";
`perl B.pl`;
print "Back to A\n";
Run Code Online (Sandbox Code Playgroud)

B.pl

print "Hello from B\n";
Run Code Online (Sandbox Code Playgroud)

当我打电话给perl A.pl时,我得到:

Hello from A
Back to A
Run Code Online (Sandbox Code Playgroud)

但我希望看到的是

Hello from A
Hello from B
Back to A
Run Code Online (Sandbox Code Playgroud)

当然我可以更改A并明确打印B的输出,如下所示:

my $output = `perl B.pl`;
print $output;
Run Code Online (Sandbox Code Playgroud)

但由于我的脚本非常复杂,我想避免它.是否有一般说明所有内容都打印到同一个终端?

unix console perl stdout

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

标签 统计

console ×1

hadoop ×1

inkscape ×1

io ×1

perl ×1

stdout ×1

svg ×1

unix ×1

video ×1