小议Vue对不同类型数据的更新检测

首先我们知道,Vue实现了双向绑定和响应依赖,当数据变化时,Vue能够智能地计算出重新渲染组件的最小代价并应用到DOM操作上。

我们还知道,Vue数组的更新检测和对对象的更改检测是有限制的。那么对SetMap等常用的数据类型,Vue的监测是否有效呢?如果无效,有没有弥补的方法?

下文的讲述将基于这个网页。结构很简单。

New-Show 项目之文件上传

七牛云这家公司挺有意思,通过笔试后还有open question环节,简单地说就是做一个在线相册的小项目。其中多文件上传我以前没做过,看似简单的问题竟然也折腾了我一个晚上。

我前端用的是vue-cli,后端用的是koa2。首先我查看了koa2官方在github上的单文件上传示例多文件上传示例

单文件上传示例很简单,但前端的网页用的是原生表单的提交方式,可我的项目得用ajax。多文件上传示例的app.js比较易懂。于是现在的问题是前端要怎么写。

这里有两篇文章:Vue+axios提交表单数据(含单文件上传)如何使用formData上传file数组。这两篇文章把vue和多文件上传两个难点都给覆盖了。

《数学之美》读书笔记

如果我早点看到这本书,当年学高数、现代、离散、概率时就会更认真些,也说不定因此去搞人工智能而不是搞前端了。

以下的总结更侧重概念和定性的了解,我个人不太喜欢数学公式(不多实践也记不住),真用的时候再查吧~

进入正题~

第一章 文字和语言 vs 数字和信息

数字、文字和自然语言一样,都是信息的载体。从最简单的人们之间的交谈来说,说话人就是信息源,TA所要传递的信息被编码成声波(另一种信息),通过空气这一信道传到接受者的耳朵,再经过一系列复杂的生理过程被解码为信息。文字和数字也是最原始的编码。

想表达更多的信息量,可以增加文字的数量。但因为人类的记忆力有限,一味增加数量不可取。于是概念的第一次概括和归类就开始了,也就有了多义字。这便是“聚类”。要想解决多义字的歧义,可以依赖上下文。

进位制的出现表明人类已经懂得“编码”,从象形文字到拼音文字的飞跃表明人类懂得了抽象。许多文明的文字,常用字简单,生僻字长,这也符合最短编码原理。

由于书写用具的简陋和短缺,文言文出现了。它实际上是对信息的压缩。犹太人为了保证《圣经》的传抄没有错误,发明了校验码。

字母到词的构词法是词的编码规则,语法是语言的编码和解码规则。但前者是有限而封闭的集合,语言是无限而开放的集合,前者可以有完备的编解码规则,而后者不具备这个特性。

记住“罗塞塔石碑”。

第二章 自然语言处理 从规则到统计

早期的自然语言处理陷入了误区————试图概括自然语言文法规则,来使计算机理解人类的语言。很久人们才搞明白,通过规则和统计总结得到的文法规则显然更好用。

第三章 统计语言模型

一个句子是否合理,看它的可能性大小如何。一个句子由一串有序词组成,该句子出现的概率等于每一个词出现的概率相乘。

马尔科夫假设是一种偷懒但有效的假设——任意一个词出现的概率只与它前面的词有关。对应的统计语言模型为二元模型。当然也有三元、四元等高阶语言模型,它们更精确但更耗资源。

网页动画初探(一)

其实这是两个月以前折腾的玩意儿。这阵子忙着找实习没空写博文,现在算是尘埃落定了。

本文的灵感来自汇智网的相关js动画课程,动画所依赖的页面也是从相关课程里摘出来的。如果侵权请告知。

我们要写的动画是一个隐藏的菜单,点击屏幕边缘露出的按钮,菜单就会拉出。再次点击则收回。

页面如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE HTML>
<html>
<head>
<style>
*{
margin: 0;
padding: 0;
}
#container{
height: 200px;
width: 200px;
position: relative;
left: -200px;
background-color: #6effcd;
}
#btn{
height: 60px;
width: 30px;
position: absolute;
left: 200px;
top: 75px;
background-color: #73eeff;
}
</style>
</head>
<body>
<div id="container">
<span id="btn"></span>
</div>
</body>
</html>

《你不知道的JS》复习

本文是我在看《你不知道的JS》时随手摘录的,打算面试前再看两眼回忆用。可能没什么逻辑,见谅~

作用域与闭包

  • 尽管JavaScript一般被划分到“动态”或者“解释型”语言的范畴,但是其实它是一个编译型语言
  • 在一个作用域内的所有声明,不论它们出现在何处,都会在代码本身被执行前首先被处理
  • 声明本身会被提升,但不是赋值,即便是函数表达式的赋值,也不会被提升
  • 函数声明和变量声明都会被提升。但是,函数会首先被提升,然后才是变量

CentOS7.2上配置Python3+pip3+Selenium+PhantomJS

前一篇博文里提到的爬虫写好啦,总不能老是放在自己的笔记本上爬取数据吧,消耗网费还占时间,自然得挂在阿里云等服务器上。可这里也有一堆坑等着我踩。

我的阿里云装的是CentOS7.2,租来以后基本没动过。配置的环境请看那长长的标题。

Python3 和 pip3

注意,千万不能卸载CentOS7.2自带的Python2.7!这是我配环境犯下的第一个错误!因为yum等许多和系统关联很紧密的东西是依托Python2.7的,你卸载后yum等一堆东西都不能用,麻烦很大!如果你卸载了咋办呢?麻烦的做法是靠rpm方法把缺失的文件给补回来。我就比较厉害了,感谢阿里云的快照功能,我直接回滚磁盘。还好上面没啥重要的东西。

这样做就足够了:

yum install python34 -y
python3 --version
//没有自带pip3,从官网安装
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
pip3 -V

以后若要使用Python3pip3,就使用python3pip3命令;若要使用Python2pip2,就使用pythonpip命令。

bilibili多进程爬虫

一些闲话

接下来将近两周没有课,我就帮一位同学写了个bilibili爬虫爬取十万条用户数据,来完成TA的大数据分析作业。原本以为用以前的日语听力习题爬虫改一改就能用,结果……B站果然是B站啊,反爬虫的本事还是相当高的。

先上最终完成版的源代码,注释应该够详细了: