利用 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 查询链接为 http://dict.hjenglish.com/jp/jc/ 中国 ,利用 Get Contents of URL 获取网页内容,假名ちゅうごく,音调①、词性和释义都在了。

经过多次测试对比,假名和词性都用“【】”包含,而音调都在罗马字发音 (图中为【chuugoku】)后面,释义最好获取 详细释义 后面的第 1、2 条(因为有些词语【词性】后面没有释义)。

利用 正则表达式 分别提取需要的内容,表达式具体写法见 Workflow 动作,不再赘述。需要说明的是:

(1)当网页中“【】”一组也没有时表示未查找到词语信息,需要一个 If 来判断。

(2)最近更新的 魔法变量(Magic Variable) 虽然能简化流程,但本动作需要提取多个信息,且需多次用到,如果全部用魔法变量反倒不方便不直观。

(3)动作中设置了 Show Notification ,便于确认查到的信息,毕竟不是官方 API 支持,有些不常见的生词无法用正则表达式获取到正确的信息。

利用 Get Contents of URL POST 词汇信息到 Quizlet 服务器。其中, Authorization 一栏填入动作一中复制的 Token term definition 可以理解为抽认卡的正反面。

图中 URL 链接如下,其中 187957966 是要上传的 Flashcards 组 ID (不然服务器不知道你要把新的 Flashcards 添加到哪) 。

如何获取该 ID 呢,打开 API test 页面

直接点击蓝色按钮 Send API Request

d窗中可以找到 ID,其中 title 对应组名,双字节字符会重新编号,不易辨认。

Flashcard 上传成功后会有通知提示,其中 仅供参考 表示沪江小D对该词仅有基本解释,无发音等信息,一般多为专属词。仅供参考词语不会添加到 Flashcards。

需要说明的是,因为非官方 API 支持,所以查询结果有时会有小 BUG,如果出现烦请告知我。

可以看到,【中国】这个词语相关信息已经添加到 Quizlet 了。

可以选择官方的 Quizlet ,好处是添加新的生词后刷新下就可以学习了。但我个人在用 Flashcards Deluxe,可设置的选项和主题比较丰富,缺点是需要手动更新 Flashcards,如图。第三张图片意思是:词语会被新的替代,但学习进度保留。

显示效果下图

获取了Quizlet 账户完整权限,其实可以作一个寄生于 Workflow 的小程序,除了添加、还可以删除、修改,甚至对 Flashcards 批量 *** 作。更多 *** 作请求方法见 官方示例 。

Workflow 是个了不起的应用,不断更新使得 iOS 能力有了更多可能性。

在编写本文 Workflow 动作时,也学到了很多新知识,比如正则表达式, OAuth 授权流程。因为不懂 HTTP 请求,在获取 Token 时走了很多弯路,当经过一番努力后突然明白了解决了,这种成就感和喜悦之情真是难以言表,简直太棒了。我想这就是人类不断探索进取的源动力之一。

本文 Workflow 动作适合在 iPhone 或 iPad 上阅读新闻使用,如何把电脑上浏览时的日语生词,快速 &批量添加到 Quizlet 生成 Flashcards 呢。这个还是看大家对本文的反馈吧,人少就没必要发了。

[^ NEWS WEB EASY]: NEWS WEB EASY やさしい日本语のニュースです,类似 VOA 慢速英语,NWES WEB EASY 发布的新闻都是用简单词汇和基础语法,便于日语初学者和日本小学生阅读。

[^ Quizlet]: 在线 Flashcards 网站,提供 iOS 和 android 客户端。

[^ Flashcard]: Flashcard,即抽认卡 。

实现步骤:

创建自定义workflow activity ,实现对CRM数据更新。

创建自定义workflow,实现整个流程。

集成自定义workflow到CRM.

?

创建自定义workflow activity

启动 Microsoft Visual Studio 2010。

在"文件"菜单上,单击"新建",然后单击"项目"。

在"新建项目"对话框的"已安装的模板"窗格中,选择"Visual C#"下的"工作流",然后选择"活动库"。

指定解决方案的名称和位置,然后单击"确定"。

导航到"项目"菜单并选择"属性"。在"应用程序"选项卡上,指定".NET Framework 4"作为目标框架。

添加对 Microsoft.Xrm.Sdk.dll 和 Microsoft.Xrm.Workflow.dll 程序集的引用。

删除项目中的 Activity1.xaml 文件。

将类文件 (.cs) 添加到项目中。在解决方案资源管理器中,右键单击项目,选择"添加",然后单击"类"。在"添加新项"对话框中,键入类的名称,然后单击"添加"。

打开类文件,然后添加以下 using 指令:

using System.Activities

using Microsoft.Xrm.Sdk

using Microsoft.Xrm.Sdk.Workflow

使该类继承自 CodeActivity 类:

public class SampleCustomActivity : CodeActivity

通过添加Execute方法为类添加功能:

protected override void Execute(CodeActivityContext context)

{

//Activity code

Update Data here

}

编译项目以创建程序集 (.dll)。

?

?

创建自定义workflow

若要使用在 Microsoft Dynamics CRM 之外创建或修改的 XAML 工作流,请确保:

您的用户帐户在 Microsoft Dynamics CRM 中具有 Deployment Administrator权限。

在 Microsoft Dynamics CRM 服知友郑务器上启用了声明性工作流。 PowerShell($setting.AllowDeclarativeWorkflows="True")

创建工告答作流项目

在 Microsoft Visual Studio 中的"文件"菜单上,选择"新建",然后单击"项目"。

在"已安装模板"下展开"Visual C#",然后单击"工作流"。

单击"活动库",选择".NET Framework 4",为项目指定名称和位置,然后单击"确定"。

在"解决方案资源管理器"中,右键单击"搭颂活动库",然后单击"添加引用"。

单击"浏览",并找到 Microsoft.Xrm.Sdk.dll 和 Microsoft.Xrm.Sdk.Workflow.dll文件。选择这些文件并将其添加到项目。

进行工作流的定制。

集成自定义workflow到CRM.

使用插件注册工具来注册自定义工作流活动程序集到CRM。

构建 Plug-in Registration 工具。您可在SDK\Tools\PluginRegistration 文件夹中找到该工具的源代码。若要构建和使用插件注册工具,您必须首先安装 Windows Identity Foundation。

用户帐户必须具有系统定制员或系统管理员角色。

导入自定义的workflow

%TrainingKit%\Labs\WorkflowVS2010\Sources\Assets\WorkflowXamlTool.

打开 WorkflowXamlTool.sln, 修改workflow name and primaryentity ,执行solution.

?

var newWF = new Entity("workflow")

newWF.Attributes.Add("name", "On test 10311")

newWF.Attributes.Add("type", new OptionSetValue(1))

newWF.Attributes.Add("scope", new OptionSetValue(4))

newWF.Attributes.Add("category", new OptionSetValue(0))

newWF.Attributes.Add("primaryentity", "abc_dummy")

newWF.Attributes.Add("xaml", content2)

newWF.Attributes.Add("ondemand", true)

?

try

{

_serviceProxy.Create(newWF)

?

MessageBox.Show("Workflow successfully imported.", "Import",MessageBoxButtons.OK, MessageBoxIcon.Information)

}

catch (FaultException ex)

{

}

选择自定义xaml 文件,导入。


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

原文地址: http://outofmemory.cn/yw/12561126.html

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

发表评论

登录后才能评论

评论列表(0条)

保存