利用 Workflow快速添加 Flashcards 背单词

利用 Workflow快速添加 Flashcards 背单词,第1张

——写在文外:按本文内容 *** 作需要一定动手能力,且准备工作稍复杂,但最终实现效果很便利,可以先看预览效果感受下。

自从去年重拾日语 (我相信读者都是理性的,我们只谈文化不谈政治) ,基本每天都会在微信公众号 NewsWebEasy [^ NEWS WEB EASY]上看一篇日语新闻。文章内容虽然用的都是基础词汇,但仍会经常遇到生词。如何快速记录它们就成为一件棘手的事。更重要的是,记录不代表记住,如何复习也是个问题。

有读者应该已经想到,用 Workflow for iOS 这款效率App。嗯,我也确实这么做的,不过早期对 Workflow 功能浅尝辄止,自建的动作也比较低级,遇到生词复制后运行,跳出输入框,手动输入生词的假名、音调、词性和解释,同步到 Evernote。

至于复习,就是经常去翻看记录的生词。话虽如此,可是然并卵,首先是会忘记去看,其次随着记录的生词越来越多,打开后看见满满的生词也就不想看了ヾ(。 ̄□ ̄)ツ゜゜゜。

复制生词,通知中心运行 Workflow 动作,提取 沪江小D 上该词相关信息,通过 Quizlet [^ Quizlet] API 添加新的 Flashcard[^ Flashcard]。Flashcards App 根据记忆曲线提醒复习,每次只复习若干生词,再也不会被满屏生词 KO了。

首先预览下动作效果,给你看下去的动力。

先附上 Workflow 动作:动作一 Quizlet获取token ;动作二 日语生词添加Qz

Quizlet 官网注册普通帐号,打开 开发者网站 (需先认证注册邮箱) ,按注释填入表格申请 API Key。

申请完页面如下,后续用到 Client ID Redirect URI Secret Key

Token Key 获取的详细流程和参数说明见 官方文档 。主要分为三个步骤:

1引导用户到授权服务器的授权入口。该步只需打开下面链接即可。其中 MY_CLIENT_ID 就是前面获得的 Client ID scope 表示授权第三方的权利范围,分别为:read、write_set、write_group,这里需要可读写删除的 write_set 权限; RANDOM_STRING 是任意字符串,用于防止 CSRF 攻击 (我也不懂什么鬼) ,搞个随机数即可。

2打开上述链接后询问是否授权访问 Quizlet 账户,允许后会转到 Redirect URI 指定的链接并附上 code 参数。复制该链接并用正则表达式提取 code 。Workflow 动作一运行如下图,授权跳转页面后 拷贝 (原则上来说,还需要校验传回来的 state 参数是否和第一步传给服务器的一致,避免 CSRF 攻击 。)

3向服务器请求 Token 。 POST 信息按官方要求填入即可。其中 Authorization 一栏内容为 Basic base64-encoded(Client ID:Secret Key) ,该值可自行转换,也可用官方转换好的,详见 该页面 Step 2 中的表格最后一行。

动作一 会把获取到的 Token 复制到剪贴板,把该值粘帖到第二个 Workflow 对应项即可。

本文是针对日语单词,如果是其他语种词汇,尤其是针对英语,各类词典 API 还是很丰富的。英语词汇可考虑添加生词到扇贝服务器, 详见此文 。

目前沪江小D未开放查询 API,只能曲线救国,提取查询后的网页信息。沪江小D 查询链接为 >

数据来源:盖世汽车研究院

在2023第三届中国汽车人机交互创新大会上,中科创达Kanzi设计中心技术生态总监王宇洋坦言,过去一年软件定义汽车的预言得到验证,但在持续涌现的新技术浪潮中,汽车的未来应该是软件的差异化。对于开发团队和最终用户而言HMI的复杂性正在上升。

汽车行业走向HMI新阶段

HMI,即“Human Machine Interface”。在汽车领域主要指人与汽车的交互,包含UX和UI两部分。作为车辆系统和用户间的信息交换媒介,HMI通过智能化设计满足用户的驾乘需要。此外,在软硬件融合程度及网联化程度不断加深的趋势下,HMI作为功能控制和信息呈现终端也承载着越来越多的任务,透过2023第三届中国汽车人机交互创新大会可以发现,HMI总体走势向着多模交互、界面体验、情感需要三方面演进。

中科创达Kanzi设计中心技术生态总监王宇洋在会上发表演讲

所谓多模交互,即将多种感官融合。从视觉、听觉、触觉、语音等多种方式,构建出座舱与用户间多种无缝衔接的信息通道,充分模拟人与人之间的交互方式。多模交互的实际应用表现之一,正如王宇洋所言,在汽车中安装更多屏幕的趋势正在接近顶峰,甚至到了一切皆屏幕的程度。

而关于界面体验,整体呈现高质感、轻量化、个性化的特征。汽车本身的科技属性使得高质感的色彩渲染和图标设计成为车辆高级感的重要体现;此外用户不同的审美需要也使得界面设计朝着个性化前进。

 中科创达HMI20, 图源:中科创达

最后关于情感交互,简而言之还是用户的心理诉求。当座舱成为用户生活的“第三空间”,工作、娱乐、休闲甚至育儿都能够在该场景实现。

基于以上种种,汽车行业面临着越来越多基于各种软件堆栈的场景,对于开发团队和最终用户而言HMI的复杂性正在上升。如何将HMI的多功能性更快落地,并实现商业化运营成为产业急需解决的问题。王宇洋表示:“像Kanzi One这样的一体化HMI工具链能够很好的解决行业问题,并已在业内引起共鸣。Kanzi One能够将需求、设计和工程结合起来,从而创造功能价值。我们的目标是帮助汽车制造商简化HMI开发设计流程,并最终为消费者带来创新的UI使用体验。”

HMI实现路径,Kanzi的性能优化方案

Kanzi One是什么?据王宇洋总监介绍:“Kanzi One是全球首个与安卓 *** 作系统完全兼容的汽车HMI工具链。它整合了现代 HMI 开发所需的一切工具,包括:核心 Kanzi 框架——Kanzi Studio 和 Kanzi Engine,以及由 Kanzi Connect、Kanzi Maps、Kanzi Particles、Kanzi Autostereoscopy、Kanzi VR等构成的功能包。与其他开发工具相比,Kanzi One可极大减少编码的工作量,轻松实现设计开发的时间及人员成本减半。”

 Kanzi One设计效果图 图源:中科创达

Kanzi最大的优势就在于提高生产力。具体体现在三个方面:

首先,Kanzi通过其强大的UI框架,提供完全可视化的HMI编辑,可以消除80%的UI代码;

其次,Kanzi通过开箱即用的解决方案实现快速原型设计和轻松的部署,在虚拟环境中进行模拟、调试和性能分析,可以大大降低成本;

最后Kanzi提供高效的开发流程,设计人员和开发人员在不同的HMI组件上并行工作,加快产品的上市时间。

关于Kanzi常用的性能优化方案有哪些?这一问题,王宇洋总监从问题解决导向进行了讲解。

“一般在将纹理数据从CPU部署到GPU的过程中,PNG需要先解码为RAW Data,再部署到GPU侧。”该过程存在两个问题:

一是PNG资源的解码在启动阶段会消耗较长时间;

二是如果将所有原始数据嵌入到 Kanzi的资源文件kzb 中,文件会变得很大,系统 I/O 会很慢。

图源:中科创达

Kanzi的优化策略是使用压缩纹理格式,PNG不需要解码,可以直接部署到 GPU。其中一种压缩纹理格式是ASTC,是基于块的有损纹理压缩算法。此方案可以在设计冻结后应用。

默认情况下Kanzi使用online shader,即Kanzi Studio将源代码导入到Kanzi的资源文件Kzb中,当在目标平台上启动Kanzi应用程序时,应用程序才使用OpenGL驱动程序加载和编译, 编译增加了应用程序的启动时间。当使用Binary shader时,Kanzi使用GPU的offline shader编译器编译shader,并将编译好的shader以二进制的方式导入到Kanzi的资源文件Kzb中,这样Kanzi应用程序在启动时就能直接使用编译好的Binary Shader,减少Kanzi应用程序的加载时间。

此外,Kanzi提供了预加载技术加载资源的方法,加快了启动的时间;同时Kanzi提供了强大的性能分析工具,可以分析整个系统启动过程每一帧系统进行了哪些工作,可以在项目优化阶段应用。

Kanzi畅想的智驾未来

过去,用户在选择新车时使用的是传统标准,像外观、动力、速度、续航里程、内室设计和娱乐功能等等方面,在汽车下线后已成定势。而中科创达Kanzi设计中心技术生态总监王宇洋提出:“未来,汽车的配置可以在销售阶段进行更改,以满足用户的需求。例如当用户想要更换车身的颜色,从应用商店中选择一个,片刻时间即可获得喜欢的车身配色;当需要更长的续航里程时,用户下载一个功能包就能实现。”

图源:中科创达

Kanzi作为工具软件,将持续助力便捷的研发设计和高级的用户体验。相较于此前的版本,Kanzi One进一步升级,具体呈现出四方面的新特性:

第一,Kanzi One进一步内置了基于物理的HDR渲染管线,简化了设计和开发人员创建高质量图形的过程;

此外Kanzi支持线性颜色空间。由于人眼对光的感知是非线性的,计算机显示器对光强度的反应同样是非线性响应,所以相较于浅色人眼更能区分深色。基于以上原因,在屏幕上显示图像时保持暗强度的准确性非常重要。但在非线性颜色空间中执行颜色计算会导致颜色和α混合的结果不准确,Kanzi在 *** 作之前会将所有的颜色值转换为线性颜色空间,使得逼真的光照计算和正确的颜色混合成为可能,特别是使用基于物理的渲染技术。

 图源:中科创达

第二,与Android 深度集成。

首先Kanzi One Engine已经完全支持Java API并将Kanzi 引擎集成到 Android UI 线程中,Kanzi UI framework为Android Automotive用户界面提供丰富的图形和高级可视化功能,允许开发人员完全自定义UI外观。同时,扩展了 Android API,为 Android 应用程序开发人员提供了额外的功能。

其次,可以使用标准开发工具,开发、部署和调试基于 Kanzi 的应用程序,例如 Android Studio 。

最后在 Android UI 中可以自由组合 Kanzi View。Kanzi View本质是一个Android的view组件,可以与 Android UI 层次结构自由的组合,在架构上类似于 Android 的 Camera view、Video view 和 GL surface view。

第三,全新的 UI Workflow。

Kanzi One引入了全新的Activity 子系统,重新定义了UI Workflow。Activity 子系统提供模块化、动态的 UI 状态管理,以实现最佳性能和资源处理。借助Activity 子系统,基于Kanzi开发的项目可以被划分成多个易于管理的小的 UI 模块,这些UI模块仅在需要时动态加载,在不活动时卸载,以实现设计工作流程和性能的极致效率。

图源:中科创达

第四,全新商业模式,免费提供量产插件。

Kanzi拥有近12年的车载行业量产经验,从国内到国际、从低端到高端、从乘用车到卡车遍及各大OEM品牌。截止到2021年年底,Kanzi已应用于全球3000多万辆量产汽车,而多家OEM的内部评估也验证了Kanzi性能第一的排名。

当前,人们正亲身经历着汽车行业的巨大飞跃,软件定义的汽车不再只是一个愿景。类似Kanzi One的HMI工具软件,将加速汽车行业的发展,使“第三空间”内的高级用户体验更加丰富多彩。

本文来自易车号作者盖世汽车,版权归作者所有,任何形式转载请联系作者。内容仅代表作者观点,与易车无关

删除打印机历史连接记录:

请您同时按住Win+I键打开Windows设置 > 设备 > 打印机和扫描仪(或Windows设置 > 蓝牙和其他设备 > 打印机和扫描仪),删除相应打印机的历史连接记录。

检测打印服务项运行状态:

同时按住Win+R键输入servicesmsc点击确定后,打开服务,在此列表中检查打印机相关服务项运行状态是否为自动、启动状态。

具体如下:分别找到print spooler、Printer Extensions and Notifications、printWorkflowUserSvc、Server选项,双击,启动类型选择自动,然后点击启动。

重新下载安装打印机驱动:

进入相应的打印机品牌官网重新下载对应打印机型号的驱动,此处以惠普P1106打印机为例:打开惠普官网,依次选择服务支持 > 驱动下载 > 打印机,输入打印机型号,选择对应系统64位全功能驱动套件下载(ARM架构机型,请优先选择32位下载)。

快捷指令是什么?

快捷指令是一种可让您使用 App 完成一个或多个任务的快捷方式。“快捷指令” App 可让您创建包含多个步骤的快捷指令。例如,您可以构建一个“冲浪时间”快捷指令来获取冲浪报道、提供预计到达海滩的时间以及播放冲浪音乐播放列表。

ios14快捷指令新功能教程(快捷指令怎么用)(2)

快捷指令发展历程:

「快捷指令」原名 workflow,曾属于第三方APP;

2017年3月23日,苹果完成对Workflow的收购,并在 iOS 12 中,workflow正式更名为「捷径」APP;

在2019年发布的 iOS 1214 正式版中,「捷径」再次改名,命名为「快捷指令」,这个名称一直延续至今;

从 iOS 13 开始,快捷指令中,又新增了 「自动化」 功能。

自动化是一种由事件触发的快捷指令,而非手动启动。您可以使用“快捷指令” App 设置个人或家庭自动化,然后通过到达、离开、iPhone 上的设置和一天中的某个时间等事件触发自动化快捷指令。

快捷指令有什么用?

“快捷指令”能够为自动执行 iPhone 和 iPad 上的日常 *** 作带来了无限可能。通俗来说,快捷指令其实有点类似微信小程序,可以通过一些自动化 *** 作和脚本实现各种功能,可以用来取代一些小应用或小程序。

不过,相比APP和小程序,快捷指令开发相对简单,并且比较开放,因此功能上没有小程序那么强大,存在一定的局限性。

快捷指令优缺点:

优点:安装使用简单、扩展丰富、开放式开发、开发相比小程序、APP要简单的多;

缺点:由于开发比较开发,快捷指令规则良莠不齐,经常会存在一些快捷指令失效,无法使用的情况。

比如,像一些去短视频水印类快捷指令,很容易受到短视频平台规则影响,经常容易失效。简单来说,快捷指令的不足在于部分规则稳定性相对不高,另外一些比较复杂的功能,通过快捷指令也比较难以实现。

快捷指令怎么用?

快捷指令主要由 「快捷指令APP」和 「快捷指令规则」、「自动化」等几个部分组成,其中 管理、创建、设置自动化 都需要在 快捷指令 APP 中进行。

ios14快捷指令新功能教程(快捷指令怎么用)(3)

对于 iOS 13 以上系统,内置快捷指令APP,无需再安装APP。如果你的 iPhone 中找不到快捷指令APP,可能是你不小心卸载或删除了,可以前往 APP Store 应用商店搜索找到,重新下载即可。

「快捷指令规则」也就是我们需要安装的扩展捷径,它分为 官方推荐的快捷指令 和 第三方开发的快捷指令 两种。

问题: 如何将多个工作流连接在一起?

目标: 了解如何从多个CWL工作流构造嵌套工作流。

工作流是组合多个工具以执行更大 *** 作的方法。我们还可以将工作流视为工具本身;如果工作流引擎支持 SubworkflowFeatureRequirement ,则CWL工作流可以用作另一个CWL工作流中的一个步骤:

下面是一个使用我们的 1st-workflowcwl 作为嵌套工作流:

nestedworkflowscwl

CWL Workflow 可以作为一个 step 使用,就像 CommandLineTool 一样,它的CWL文件包含在 run 中。然后,可以将工作流输入( inp 和 ex )和输出( classout )映射为步骤的输入/输出。

我们的 1st-workflowcwl 是用工作流输入参数化的,所以在运行它时,我们必须提供一个作业文件来表示tar文件和 java 文件名。这通常是最佳实践,因为这意味着它可以在多个父工作流中重用,甚至可以在同一工作流中的多个步骤中重用。

这里我们使用 default: '来硬编码 "Hellojava" 作为 ex 输入,但是我们的工作流还需要在 inp 处有一个tar文件,我们将在 create-tar 步骤中准备该文件。此时,重构 1st-workflowcwl 以拥有更具体的输入/输出名称可能是一个好主意,因为这些名称也出现在它作为工具的使用中。

也可以使用不太通用的方法,避免作业文件中的外部依赖关系。因此,在这个工作流中,我们可以在将其添加到tar文件之前,使用前面提到的 InitialWorkDirRequirement 生成一个硬编码 Hellojava 文件。

在这种情况下,我们可以假设 Hellojava 而不是参数化,因此只要CWL工作流引擎支持 ShellCommandRequirement ,我们就可以使用更简单的 arguments 形式:

注意:这里使用了 shellQuote: false ,否则shell将尝试执行带引号的二进制文件 "tar cf hellotar Hellojava"

这里的 > 块意味着新行被剥离,因此可以在多行上编写单个命令。类似地,我们上面使用的 | 将保留换行符,结合 ShellCommandRequirement ,这将允许嵌入一个shell脚本。但是,在CWL中应该谨慎地使用Shell命令,因为这意味着您“跳出”工作流,不再获得可重用的组件、出处或可伸缩性。为了重现性和可移植性,建议只将shell命令与 DockerRequirement 的提示(hint)一起使用,以便命令在可预测的shell环境中执行。

您是否注意到我们没有将 tar cf 工具拆分到单独的文件中,而是将其嵌入到CWL工作流文件中?这通常不是最佳实践,因为该工具无法重用。在这种情况下这样做的原因是命令行是硬编码的,文件名只在这个工作流中有意义。

在这个例子中,我们必须在外部准备一个tar文件,但这仅仅是因为我们的内部工作流被设计成将其作为输入。内部工作流的一个更好的重构方法是获取一个Java文件列表进行编译,这将简化它在其他工作流中作为工具步骤的使用。

嵌套工作流在生成高级功能和可重用工作流单元方面是非常强大的,但就像创建CWL工具描述一样,必须注意提高其在多个工作流中的可用性。

总结

问题: 如何并行运行工具或工作流?

既然我们知道了如何编写工作流,就可以开始使用 ScatterFeatureRequirement 。此功能告诉运行器您希望在输入列表上多次运行工具或工作流。然后,工作流将输入作为一个数组,并将对数组的每个元素运行指定的步骤,就像它是单个输入一样。这允许对多个输入上运行相同的工作流,而不必生成许多不同的命令或yaml输入文件。

新用户可能希望使用分裂(scatter)的最常见原因是对不同的样本执行相同的分析。让我们从一个简单的工作流开始,它调用我们的第一个示例,并将字符串数组作为工作流的输入:

scatter-workflowcwl

除了 requirements 部分,包括 ScatterFeatureRequirement ,这里发生了什么?

首先,请注意,这里的主工作流级别的输入需要一个字符串数组。

这里我们在步骤 echo 中添加了一个名为 scatter 的新字段。这个字段告诉运行程序,在这个特定步骤中,我们希望分裂输入。请注意,分裂之后列出的输入名称是步骤的输入之一,而不是工作流级别的输入。

对于我们的第一次分裂,就这么简单!由于我们的工具不收集任何输出,所以我们在工作流中仍然使用 outputs: [] ,但是如果希望工作流最终有多个输出要收集,请务必将其更新为数组类型!

Using the following input file:

scatter-jobyml

As a reminder, 1st-toolcwl simply calls the command echo on a message If we invoke cwl-runner scatter-workflowcwl scatter-jobyml on the command line:

作为提醒, 1st-toolcwl 只需对消息调用 echo 命令。如果我们在命令行上调用 cwl-runner scatter-workflowcwl scatter-jobyml :

您可以看到,工作流对 message_array 的每个元素调用多次echo。那么,如果我们想分裂工作流中的两个步骤呢?

让我们像上面一样执行一个简单的echo,通过添加下面行而不是 outputs: [] 来捕获 stdout

1st-tool-modcwl

在第二步中使用 wc 来对文件中的字符计数。请参阅以下工具:

wc-toolcwl

现在,我们如何合并分裂?记住每一步的分裂字段:

scatter-two-stepscwl

在这里,我们在每个步骤下设置了分裂字段。对于这个示例来说,这是很好的,因为它运行得很快,但是如果您正在为更复杂的工作流运行许多样本,那么考虑另一种方法。在这里,我们在每个步骤上独立运行分裂,但是由于第二步并不依赖于完成所有语言的第一步,所以我们没有有效地使用scatter功能。第二步需要一个来自第一步的数组作为输入,所以它将等到第一步中的所有内容都完成之后再做任何事情。假设 echo Hello World! 需要1分钟来执行, wc -c 的输出需要3分钟, echo Hallo welt! 执行需要5分钟, wc 在该输出上需要3分钟。即使 echo Hello World! 本可以在4分钟内完成,但因为第一步必须等待 echo Hallo welt! ,实际上8分钟内完成。

好的,那么我们如何分散在可以独立于其他样本的步骤上呢?记住 第21章 ,我们可以使整个工作流成为另一个工作流中的一个步骤!将我们的两步工作流转换为单步子工作流:

Ok, so how do we scatter on steps that can proceed independent of other samples Remember from chapter 21 , that we can make an entire workflow a single step in another workflow! Convert our two step workflow to a single step subworkflow:

scatter-nested-workflowcwl

Now the scatter acts on a single step, but that step consists of two steps so each step is performed in parallel

以上就是关于利用 Workflow快速添加 Flashcards 背单词全部的内容,包括:利用 Workflow快速添加 Flashcards 背单词、中科创达王宇洋:基于软件差异化,打造次世代HMI开发利器、华为平板为什么不能安装佳能打印机程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10088613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)