云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

企业网站_免费网站建设服务_12月免费

小七 141 0

这是对实时流录制内容的可搜索描述,特别是"带qmacro的SAP开发人员实践"系列中的"第13集–标准化CSV过滤机制"。视频录制中有直接指向特定亮点的链接。有关其他剧集的注释链接,物联网的应用有哪些,请参阅该系列博客文章的"捕捉重播"部分。

这一集名为"标准化CSV过滤机制",于2019年3月20日(星期三)直播,长度约为一小时。流录制可在YouTube上获得。

下面是一个简短的概要,企业应用开发平台,以及指向特定亮点的链接-使用这些链接直接跳转到录制中的特定地点,基于"hh:mm:ss"样式的时间戳。

简要概要

在上一集(Ep.12)中,我们查看了一个简单的CSV筛选器实用程序。在这一集中,我们通过赋予它从STDIN读取和写入STDOUT的能力来改进它,以便它在管道上下文中很好地发挥作用。然后,我们就可以使用它来最终确定我们基于CAP的"Northbreeze"服务的数据了。

链接到特定的亮点

00:03:45:简单地看一下幕后的情况,我为上传到SAP Developers YouTube播放列表的视频录制制作了注解博客文章。我在Vim中编写Markdown,这是一种非常好的可靠和舒适的技术组合。

我在编写内容时使用Vim宏,我们从一个简单的模板开始,并将HH:MM:SS时间戳转换为Markdown注释链接。我的标准.vimrc中没有这个宏,因为它只与这个特定的任务相关,所以我在一个"project local"中有它。vimrc可以通过这个配置:

(请参阅我的dotvim repo了解更多细节)。

这就是宏的样子:

(注意t=,大数据概念,新云,后面的转义字符,As和A:bits)

00:10:30:根据Srikanth Peri的问题,我们可以快速地在Vim中创建一个简单的宏。

00:14:30:对Unix标准操作哲学的回顾,思考三个流STDIN、STDOUT和STDERR,以及它带来的强大功能。这与我们正在用Axios库用JS编写的点链有相似之处。

00:15:55:谈论节点.js调试,基于Nabheet Madan的评论。

00:17:04:提醒自己项目目录csvf中的内容,包括快速查看项目的包.json. 这表明我们有两个依赖项,大数据是什么意思,一个在@sap/cds上,另一个在命令行args包上。

00:17:40:我无意中发现终端文件管理器Ranger中的一个特性是带有I的"缩放"特性,我在这里展示了

00:20:18:通过修改常量optionDefinitions中的选项定义来阐述我们的新意图。用一个简单的例子来记住它现在是如何工作的:

我们现在真正想做的事情是:

使用pipe操作符(|)、redirect操作符(>)和redirect to stderr操作符(2>)。

无论如何,我们最终得到的选项是这样的(从帮助文本):

00:28:45:我将调用修复为进程.退出()将传递的值从1更改为0,表示成功而不是失败(!)。

00:29:10:查看NPM模块get stdin,它允许我们读取stdin,我们将使用它。而且它也是基于承诺的!

00:29:50:我们安装get stdin时使用:

…编写一个简单的测试脚本来尝试:

…并尝试:

并且:

00:32:00:Someprogrammingdude指出JS的未来版本确实会得到一个管道操作符–这太棒了。看到了吗https://github.com/tc39/proposal-pipeline-operator更多细节。这个信息让我想起了我在曼彻斯特Lambda Lounge看到的一个关于F语言的演讲,这反过来又让我想起了Elm语言。

在这一点上,我从几年前我在Lambda Lounge的演讲中挖掘出了内容:发现模式匹配和递归的美,我看到了这两种语言的特点使用不同的语言,包括Elm、Elixir、Haskell、JavaScript和Clojure。这个演讲是基于幻灯片的,但是幻灯片中大部分都是代码,所以没关系,对吧?

00:35:08:开始对代码进行一点重构,将脚本的主要部分转化为一个新的函数过程——这为一个非常奇怪的错误奠定了基础,我们将进一步遇到这个错误!

00:37:20:现在我们可以重构最后一部分,看看选项.输入我们使用使用承诺让事情变得更美好一点——见帖子节点.js: 使用承诺()了解更多细节。

00:47:58:所以我们最终得出结论:

注意这里是如此干净和固态,没有任何东西真正"移动"在这里,在then()调用中,即使没有任何显式参数传递给函数,也没有什么会出错。

不过,请注意,我们很快就会发现一个明显的疏忽!

00:49:40:我们注意到现在,虽然我们已经可以写信给STDOUT了(使用控制台.log),我们的详细输出(前缀为">>")和实际的数据输出都会到达相同的位置,这是我们在测试运行中看到的。我们在log函数中通过更改控制台.log呼叫进程.stderr.write.

00:51:10:砰!当我们尝试新脚本时,我们得到了一个很好的错误:"cannotreadproperty'write'of undefined"。搞什么鬼?总之,经过几分钟的挠头之后,我们意识到这是因为我无意中重新定义了节点.js在运行时,我们创建了自己的函数process,对标准的process对象进行了重击,stderr属性(我们指的是进程.stderr.write)

真是个傻瓜!

00:57:30:将我们的函数从进程重命名为其他函数(filtersv)解决了问题

我们现在可以完成脚本的重构,我们可以这样做,包括以我们可以部分应用它的方式编写输出函数。