「法语动词变位记忆小助手」更新:使用云端变位数据库 变位反查 选择练习

本次更新的主要内容如下:

v2.0.0 (2019.07.27)

  1. 默写练习改为选择练习,加快学习节奏。
  2. 将所有词库移至云端,极大地减少了小程序的体积。
  3. 支持动词变位反查。
  4. 增加法语特殊字符软键盘(仅在软键盘收起时有效,正查仍不受大小写和特殊字符影响)。
  5. 删除和修改了帮助页面的内容。
  6. 将直陈式先过去时加入到非常用时态。
  7. 增加了赞赏页面,感谢大家的支持。

默写练习改为选择练习

为什么更改了方式?

个人觉得默写练习也许会降低练习的意愿和坚持度(对我这种懒人来说是),而且从后台数据量来看“默写练习”的历史访问数相对较少,所以在这次新版本中改成了选择练习。这样的话仅需要从下方列出的随机选项中选择合适的答案即可完成填空,选项会是随机(目前暂定在20个选项,20个选项中有14个随机混淆的选项,有6个是正确答案) ,也就是说用户需要从20个选项中选择最合适的答案。

界面的更改

将界面上的两个按钮“跳过”和“检查”去掉了,取而代之的是20个选项按钮。其中,原来的“跳过”按钮上移到了“提示”旁边,因为“跳过”的使用频率会比较少,没必要放在这么显眼的地方。“检查”按钮完全可以自动执行嘛,当用户完成了6个空格的选择之后,也就是说用户的答案数组都不为空时,立即执行检查。检查的结果和之前一样,用户可以根据检查的结果修正答案直到全部正确,然后小程序将直接跳转到下一个动词。

选项的生成

前面说过下方的选项由14个随机混淆选项和6个正确选项打乱的按钮组成。因为使用了云开发,所以我将所有单词的情况(简单时态的完整变位)放入到了云开发的数据库中,复合时态的变位依旧靠助动词的变位加过去分词组成,这样的话总选项有72种情况。先从72种情况中抽取14个组成数组,再concat加上正确的6个元素组成的数组,组成了一个20个元素组成的数组,然后将其打乱显示在前端。

js数组如何进行打乱?

根据Fisher–Yates shuffle , 这个算法由 Ronald Fisher 和 Frank Yates 于 1938 年提出,然后在 1964 年由 Richard Durstenfeld 改编为适用于电脑编程的版本。 blog.oldj.net的示例代码如下:

function shuffle(arr) {
    let i = arr.length;
    while (i) {
        let j = Math.floor(Math.random() * i--);
        [arr[j], arr[i]] = [arr[i], arr[j]];
    }
}

减少用户无用的操作

在用户使用过程中尽量减少用户的无用或者说是累赘的操作,这里主要体现在三点:

  1. 当用户第一次进入“选择练习(强化练习)”的界面中,界面中第一人称单数Je的空格即会高亮(在onlanch事件中,当这一页加载时即执行),用户无需点击一下空格再选择选项。
  2. 当用户选完选项中,下一格即会高亮,用户可以连续选择选项。
  3. 当用户完成6个选择后,自动执行“检查”,避免了“累赘”点击。

将所有词库移至云端

在这个版本中,版本号之所以命名为2.0.0版而不是1.5.0版,是因为程序的后端进行了较大幅度的改动,但是用户可能不会有太大的察觉。该操作改进了以下几方面的体验:

  1. 大幅减少了小程序的体积,提升了小程序的加载速度,由原来的1600k降至500k,减小了一半还多,原因是删掉了原来的本地词库。
  2. 不管是什么样的机型,尽可能地减少卡顿的现象,现在只取决于网速。(离线状态下无法使用,不过在使用过程中流量消耗会是极少的)
  3. 支持了动词变位反查。因为在后台完整地列出了所有单词的简单时态变位情况,所以当用户搜索某个动词的变位时,会直接跳出对应的动词原形的全部变位情况。
  4. 方便小程序在之后的功能扩展。减少了小程序本身的体积对于小程序来说就增加更多可扩展的可能。

在Excel先处理好

在处理过程中,主要使用了以下两个Excel函数(不细说,仅仅记录一下)

=TRANSPOSE(Q788:Q793)   //将Q788至Q793的单元格转置 

=CONCAT($C4,'149完整'!C$38)  //连接两个单元格,代表了在批量拉结果时固定列增加行,​38代表了在批量拉结果时固定38行增加列,'149完整'!代表了其数据是从另一张sheet里引用的数据。

增加法语特殊字符软键盘

在这个版本中加入了法语特殊字符软键盘(其实就是一堆按钮),软键盘主要是用来动词变位反查的,反查时需要完整输入动词,输入需要完整输入法语特殊字符(下一版中可能会改进)。

增加了赞赏页面

不管是赞赏还是点击网站和小程序的广告,都是最好的支持,感谢各位的支持~

赞赏页面中的小程序码也是放在了云开发的储存中,只有点击时才会加载图片。image组件加载的图片无法长按识别二维码和小程序码。具体的代码如下:

a. 初始化云开发 在app.js中加入如下代码进行初始化:

onLaunch: function() {
    wx.cloud.init({
      traceUser: true
    });
}

b. 添加按钮点击事件 点击事件中的url就是文件(图片)上传到云开发后获取到的file id

previewImage: function() {
    wx.previewImage({
        urls: ['cloud://xxxx.xxxx/xxxx.jpg'],
    });
},

参考资料

发表评论

电子邮件地址不会被公开。 必填项已用*标注