diff --git a/00-前端工具/05-GitHub的使用.md b/00-前端工具/05-GitHub的使用.md index 6f71d5c..370baf9 100644 --- a/00-前端工具/05-GitHub的使用.md +++ b/00-前端工具/05-GitHub的使用.md @@ -16,3 +16,13 @@ - + + +### GitHub 引用图片的另一种方式 + +参考链接: + +- [关于markdown文件插入图片遇到的小问题和解决办法](https://www.cnblogs.com/cxint/p/7200164.html) + + + diff --git a/04-JavaScript基础/19-数组的常见方法&数组的遍历.md b/04-JavaScript基础/19-数组的常见方法&数组的遍历.md index d3e3c37..0fa88e0 100644 --- a/04-JavaScript基础/19-数组的常见方法&数组的遍历.md +++ b/04-JavaScript基础/19-数组的常见方法&数组的遍历.md @@ -31,7 +31,7 @@ | for循环 | 这个大家都懂| | | forEach()|和 for循环类似,但需要兼容IE8以上 |forEach() 没有返回值。也就是说,它的返回值是 undefined| | map()| 对原数组中的每一项进行加工,将组成新的数组 | 不会改变原数组 | -| filter()| 对数组中每一项运行回调函数,该函数返回结果是true的项,将组成新的数组,返回结果为**新的数组**。可以起到过滤的作用| 不会改变原数组| +| filter()| 对数组中的每一项运行回调函数,该函数返回结果是true的项,将组成新的数组,返回结果为**新的数组**。可以起到过滤的作用| 不会改变原数组| | every()| 如果有一项返回false,则停止遍历,此方法返回 false | 一假即假。要求每一项都返回true,最终的结果才返回true | | some()| 只要有一项返回true,则停止遍历,此方法返回true | 一真即真。要求每一项都返回false,最终的结果才返回false| | reduce | 为数组中的每一个元素,依次执行回调函数 | | @@ -730,7 +730,7 @@ map的应用场景,主要就是以上两种。 ### filter() -解释:对数组中每一项运行回调函数,该函数返回结果是true的项,将组成新的数组(返回值就是这个新的数组)。 +解释:对数组中的**每一项**运行回调函数,该函数返回结果是true的项,将组成新的数组(返回值就是这个新的数组)。 **举例1**:找出数组 arr1 中大于4的元素,返回一个新的数组。代码如下: diff --git a/11-Node.js和模块化/01-Node.js介绍和环境配置.md b/11-Node.js和模块化/01-Node.js介绍和环境配置.md index 32f0952..2a68c0c 100644 --- a/11-Node.js和模块化/01-Node.js介绍和环境配置.md +++ b/11-Node.js和模块化/01-Node.js介绍和环境配置.md @@ -667,19 +667,6 @@ npm root -g ``` - -```bash - -``` - - - - -```bash - -``` - - ## 配置 npm 镜像源 由于 npm 默认的下载地址在国外(npmjs.com),有时候会被墙,导致无法下载或者下载很慢。因此,我们可以尝试切换成,从其他的镜像源下载npm包。 diff --git a/11-Node.js和模块化/03-Node.js内置模块:fs文件模块.md b/11-Node.js和模块化/03-Node.js内置模块:fs文件模块.md index 4f3b4b8..d16570f 100644 --- a/11-Node.js和模块化/03-Node.js内置模块:fs文件模块.md +++ b/11-Node.js和模块化/03-Node.js内置模块:fs文件模块.md @@ -57,7 +57,7 @@ require 加载第三方包的机制: (4)如果一直找到该模块的磁盘根路径都没有找到,则会报错:can not find module xxx。 -**3、自定义模块(module)**: +### 3、自定义模块(module): 每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。 @@ -69,7 +69,9 @@ console.log(example.x); // 5 console.log(example.addX(1)); // 6 ``` -今天这篇文章,重点讲一下 Node 内置模块中的 **fs 文件处理模块**。 +## 读取文件 + +今天这篇文章,重点讲一下 Node 内置模块中的 **fs(文件处理模块)**。 在使用文件模块之前,记得先导入: @@ -78,9 +80,7 @@ console.log(example.addX(1)); // 6 const fs = require('fs'); ``` -## 文件读取 - -fs 的英文全称是 File System。fs 模块提供了很多api方法,我们首先应该学习的方法是**文件读取**。 +fs 的英文全称是 File System。fs 模块提供了很多 api 方法,我们首先应该学习的方法是**文件读取**。 Node中文件读取的方式主要有以下几种。 @@ -211,9 +211,9 @@ fs模块对文件的几乎所有操作都有同步和异步两种形式。例如 - 异步调用会将 读取任务 下达到任务队列,直到任务执行完成才会回调。 -- 异常处理方面,同步必须使用 try catch 方式,异步可以通过回调函数的第一个参数。【重要】 +- 异常处理方面:同步必须使用 try catch 方式,异步可以通过回调函数的第一个参数。【重要】 -## 文件写入 +## 写入文件 语法格式: @@ -275,6 +275,80 @@ fs.unlink('path/file.txt', (err) => { ``` -备注:`fs.unlink()` 不能用于目录。 要删除目录,则使用 `fs.rmdir()`。 +备注:`fs.unlink()` 不能用于删除目录。 如果要删除目录,可以使用 `fs.rmdir()`。 + + +## Buffer + +通过 Buffer 开辟的内存空间,都是连续的内存空间,所以效率比较高。 + +代码举例1: + +```js + +// 将字符串转成 buffer 对象 +const str = 'qianguyihao'; +let buffer = Buffer.from(str); + +console.log(buffer); // 输出16进制编码 +console.log(buffer.toString()); // 输出字符串:qianguyihao +``` + +代码举例2: + +```js +// 从内存中开辟一个新的缓冲区 +let buffer = Buffer.alloc(20); +buffer[0] = 'a'; + +console.log(buffer); + +``` + + +## 读取目录 + + +语法格式: + +```js +fs.mkdir(path[, options], callback) +``` + +参数说明: + +- path:文件路径。 + +- options参数可以是: + - recursive:是否以递归的方式创建目录,默认为 false。 + - mode:设置目录权限,默认为 0777。 + + +代码举例: + +```js +var fs = require("fs"); +​ +console.log("查看 /tmp 目录"); +fs.readdir("/tmp/",function(err, files){ + if (err) { + return console.error(err); + } + files.forEach( function (file){ + console.log( file ); + }); +}); + +``` + + +其他的还有:(暂略) + +- 删除目录 + +- 输入输出 + + + diff --git a/11-Node.js和模块化/04-Node.js内置模块:path路径模块.md b/11-Node.js和模块化/04-Node.js内置模块:path路径模块.md new file mode 100644 index 0000000..9a2e884 --- /dev/null +++ b/11-Node.js和模块化/04-Node.js内置模块:path路径模块.md @@ -0,0 +1,142 @@ + + +## path 路径模块 + +Node.js 通过`path`这个内置模块,提供了一些路径操作的API,具体可以参考官方的api文档。这里列举一些常用的API。 + +### path.extname() 获取文件/路径的扩展名 + +语法格式: + +```js + path.extname(myPath); +``` + +代码解释: + +- 获取 `myPath` 这个文件或者路径的扩展名。 + +- `myPath` 这个参数要求是字符串。如果 `myPath` 不是字符串,则抛出 TypeError。 + +代码举例: + +```js +const path = require('path'); + +path.extname('hello.txt'); // 返回 '.txt' + +path.extname('www.qianguyihao.com'); // 返回 '.com' + +path.extname('index.coffee.md'); // 返回 '.md' + +path.extname('index.'); // 返回 '.' + +path.extname('index'); // 返回 '' + +path.extname('.index'); // 返回 '' + +path.extname('.index.md'); // 返回 '.md' + +``` + +### path.resolve() 生成完成的绝对路径 + +语法格式: + +```js +path.resolve([...myPaths]) +``` + +解释: + +- 将路径或路径片段的序列解析为绝对路径。 + +- 返回的路径是**从右往左**处理,后面的每个 myPath 被依次解析,直到构造出一个完整的绝对路径。 + +代码举例: + +```js +const path = require('path'); + +let arr1 = ['/foo1/foo2', 'qianguyihao', 'foo3']; +let result1 = path.resolve(...arr1); +console.log(result1); // 打印结果:/foo1/foo2/qianguyihao/foo3 + +let arr2 = ['/foo1/foo2', '/qianguyihao', 'foo3']; +let result2 = path.resolve(...arr2); +console.log(result2); // 打印结果:/qianguyihao/foo3 +``` + +### 几个常见路径 + +- `__dirname`:这是一个常量,表示:当前执行文件所在**完整目录**。 + +- `__filename`:这是一个常量。表示:当前执行文件的**完整目录 + 文件名**。 + +- `process.cwd`:获取当前执行 Node命令 时的目录名。 + + +代码举例: + +```js +console.log(__dirname); + +console.log(__filename); + +console.log(process.cwd()); +``` + +运行结果: + +```bash +$ node app.js + +/Users/smyhvae/qianguyihao +/Users/smyhvae/qianguyihao/app.js +/Users/smyhvae/qianguyihao +``` + +### path.join() 将多个路径进行拼接 + +如果是我们手动拼接路径,容易出错。这个时候,可以利用 path.join() 方法将路径进行拼接。 + +语法格式: + +```js +path.join([...paths]); + +``` + +解释:使用平台特定的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径。 + +代码举例: + +```js +const path = require('path'); + +const result1 = path.join(__dirname, './app.js'); +console.log(result1); // 返回:/Users/smyhvae/qianguyihao/app.js + +const result2 = path.join('/foo1', 'foo2', './foo3'); +console.log(result2); // 返回:/foo1/foo2/foo3 + +const result3 = path.join('/foo1', 'foo2', '/foo3'); +console.log(result3); // 返回:/foo1/foo2/foo3 +``` + +## OS 系统模块 + + +- os.networkInterfaces() 查看网络地址 + + +## 我的公众号 + +想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。 + +扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外: + +![](http://img.smyhvae.com/20200101.png) + + + diff --git a/11-Node.js和模块化/MySQL数据库常用命令.md b/11-Node.js和模块化/MySQL数据库常用命令.md new file mode 100644 index 0000000..1e11962 --- /dev/null +++ b/11-Node.js和模块化/MySQL数据库常用命令.md @@ -0,0 +1,157 @@ +## MySQL 安装 + +### MySQL(Mac版) + +### 步骤1、下载安装包并安装: + +MySQL 下载地址:https://dev.mysql.com/downloads/mysql/ + +![](../img/20200415_1707.png) + +![](../img/20200415_1708.png) + + +#### 步骤2、配置环境变量 + +打开 `~/.bash_profile` 文件,在文件的末尾,添加如下内容,即可配置环境变量: + +```bash +# mysql +export PATH=${PATH}:/usr/local/mysql/bin +#快速启动、结束MySQL服务, 可以使用alias命令 +alias mysqlstart='sudo /usr/local/mysql/support-files/mysql.server start' +alias mysqlstop='sudo /usr/local/mysql/support-files/mysql.server stop' +``` + +配置好环境变量后,在终端输入 `source ~/.bash_profile` 命令,让配置生效。 + +在终端的任何位置,输入如下命令,即可进入 mysql 命令的执行窗口: + +```sql +mysql -u root -p +``` + + +参考链接: + +- [MySQL安装(Mac版)](https://juejin.im/post/5cc2a52ce51d456e7079f27f) + + +### 步骤3、继续配置环境变量 + +在 `~/.bash_profile` 中配置好环境变量后,发现每次重启终端后,配置都会失效,需要重新执行 `source ~/.bash_profile` 命令。 + +原因是,zsh加载的是 `~/.zshrc`文件,而 `.zshrc` 文件中并没有定义任务环境变量。 + +解决办法:打开 `~/.zshrc` 文件,在文件的末尾,添加如下内容即可: + +```bash +source ~/.bash_profile +``` + + +参考链接: + +## Navicat Premium 软件初体验 + +Navicat Premium 软件是一种数据库管理的GUI软件,采用可视化的方式来查看和操作数据库,非常方便。支持的数据库有: MySQL、MongoDB、SQL Server、SQLite、Oracle 及 PostgreSQL等。 + +安装好 Navicat Premium 软件之后,我们来看看这个软件是怎么用的。 + + +1、新建连接: + +打开 Navicat Premium 软件,选择菜单栏「文件-新建连接-mysql」,然后选择如下配置,即可在本地新建一个数据库连接: + +![](../img/20200416_1157.png) + +2、选中连接后,右键新建数据库: + +![](../img/20200416_1159.png) + + +![](../img/20200416_1127.png) + +3、选中数据库之后,新建表 `qiangu_student_table`: + +![](../img/20200416_1138.png) + +4、在表中添加字段: + +![](../img/20200416_1202.png) + +5、字段建好后,开始在表中插入数据: + +![](../img/20200416_1259.png) + + +## MySQL 的一些简单命令 + +按照上面的操作,通过 Navicat Premium 软件建好数据库之后,我们也可以通过命令行来进行一些常见操作。 + +注意,在 Mac 终端执行 sql 命令时,命令的末尾必须加上`;`(英文格式的分号)。效果如下: + +![](../img/20200417_1700.png) + + +我们也可以在 Navicat Premium 软件中,输入查询命令来查询数据。选择菜单栏「查询->新建查询->输入 sql 命令->运行」即可,效果如下: + +![](../img/20200417_1750.png) + + +MySQL 命令行的一些简单命令如下。 + +**以 root 身份进入命令行**: + +``` +mysql -u root -p +``` + + +**查看有哪些数据库**: + +```sql +show databases +``` + +**选择进入指定的数据库**: + +```sql +use xxx_database + +# 举例 +use qiangu_database +``` + +**在当前数据库中,查询指定的表**:(查询全部数据) + +```sql +select * from xxx_table + +# 举例 +select * from qiangu_student_table +``` + +**删除指定的表**: + +```sql +drop table xxx + +# 举例 +drop table qiangu_student_table +``` + + +**删除指定的数据库**: + +```sql +drop database qiangu_database; +``` + + +**创建一个数据库**: + +```sql +create database qiangu2_database; +``` + diff --git a/11-Node.js和模块化/Node.js操作MySQL数据库.md b/11-Node.js和模块化/Node.js操作MySQL数据库.md new file mode 100644 index 0000000..3768bc8 --- /dev/null +++ b/11-Node.js和模块化/Node.js操作MySQL数据库.md @@ -0,0 +1,327 @@ + +## Node.js 连接 MySQL + +(1)安装 mysql 包: + +```bash +$ npm install mysql +``` + +(2)引入 mysql 包: + +```js +const mysql = require("mysql"); +``` + +(3)建立连接: + +```js +let mysql = require("mysql"); +let options = { + host: "localhost", + //port:"3306", //可选,默认3306 + user: "root", + password: 'xxx', // 这里改成你自己的数据库连接密码 + database: "qiangu_database", +}; +//创建与数据库进行连接的连接对象 +let connection = mysql.createConnection(options); + +//建立连接 +connection.connect((err) => { + if (err) { + // 数据库连接成功 + console.log(err); + } else { + // 数据库连接失败 + console.log("数据库连接成功"); + } +}); +``` + +正常来说,运行程序后,应该会提示`数据库连接成功`。 + +如果在运行时提示错误`Client does not support authentication protocol requested by server`,解决办法如下:(在终端进入 sql 之后,输入如下命令) + +```sql +# 注意,这里的 'root' 请填你的user账号, 'localhost' 请填 你的 host, 'password' 请填你的密码 +ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; + +# 然后执行如下命令 +flush privileges; +``` + +## Node.js 增删改查 MySQL + +针对下面这张表: + +![](../img/20200418_1728.png) + + +通过 Node.js可以对其进行一些增删改查操作。代码举例如下。 + +### 1、查询表 + +```js +let mysql = require('mysql'); +let options = { + host: 'localhost', + //port:"3306",//可选,默认3306 + user: 'root', + password: 'xxx', // 这里改成你自己的数据库密码 + database: 'qiangu_database' +} +//创建与数据库进行连接的连接对象 +let connection = mysql.createConnection(options); + +//建立连接 +connection.connect((err) => { + if (err) { + // 数据库连接成功 + console.log(err) + } else { + // 数据库连接失败 + console.log('数据库连接成功') + } +}); + + +// 1、查询表 +let strSql1 = 'select * from qiangu_student_table'; +connection.query(strSql1, (err, result, fields) => { + if (err) { + // 表查询失败 + console.log(err); + } else { + // 表查询成功 + console.log('qiangu_student_table 表查询结果:' + JSON.stringify(result)); + console.log('fields:' + JSON.stringify(fields)); + } +}) + +``` + +打印结果如下: + +```bash +qiangu_student_table 表查询结果: +[{"id":1,"name":"千古壹号","age":28},{"id":2,"name":"许嵩","age":34},{"id":3,"name":"邓紫棋","age":28}] + +fields:[ + {"catalog":"def","db":"qiangu_database","table":"qiangu_student_table","orgTable":"qiangu_student_table","name":"id","orgName":"id","charsetNr":63,"length":11,"type":3,"flags":0,"decimals":0,"zeroFill":false,"protocol41":true}, + {"catalog":"def","db":"qiangu_database","table":"qiangu_student_table","orgTable":"qiangu_student_table","name":"name","orgName":"name","charsetNr":33,"length":765,"type":253,"flags":0,"decimals":0,"zeroFill":false,"protocol41":true}, + {"catalog":"def","db":"qiangu_database","table":"qiangu_student_table","orgTable":"qiangu_student_table","name":"age","orgName":"age","charsetNr":63,"length":11,"type":3,"flags":0,"decimals":0,"zeroFill":false,"protocol41":true} +] +``` + +### 删除表 + +```js +// 2、删除表 +let strSql2 = 'drop table test2_table'; +connection.query(strSql2, (err, result) => { + if (err) { + // 表删除失败 + console.log(err); + } else { + // 表删除成功 + console.log('表删除成功:' + result); + } +}); +``` + +打印结果: + +```bash +表删除成功: +OkPacket { + fieldCount: 0, + affectedRows: 0, + insertId: 0, + serverStatus: 2, + warningCount: 0, + message: '', + protocol41: true, + changedRows: 0 +} +``` + +### 删除数据库 + +将上方的sql语句换一下即可: + +```sql +let strSql3 = 'drop database qiangu_database'; + +``` + + +### 2、新建数据库 + +```js +let mysql = require('mysql'); +let options = { + host: 'localhost', + //port:"3306",//可选,默认3306 + user: 'root', + password: 'smyhvae001', + // database: 'qiangu_database' // 注意,因为代码里是创建新的数据库,所以这里不需要填其他的数据库名 +} +//创建与数据库进行连接的连接对象 +let connection = mysql.createConnection(options); + +//建立连接 +connection.connect((err) => { + if (err) { + // 数据库连接成功 + console.log(err); + } else { + // 数据库连接失败 + console.log('数据库连接成功') + } +}); + +// 创建新的数据库 +const strSql4 = 'create database qiangu_database3'; +connection.query(strSql4, (err, result) => { + if (err) { + console.log(err); + } else { + console.log('新建数据库成功:' + JSON.stringify(result)); + } + +}); + + +``` + +打印结果: + +```bash +数据库连接成功 +新建数据库成功:{ + "fieldCount":0,"affectedRows":1,"insertId":0,"serverStatus":2,"warningCount":0,"message":"","protocol41":true,"changedRows":0 +} + +``` + + + +### 3、新建表 + +新建表的sql语句举例: + +```sql +CREATE TABLE `qiangu_table5` ( + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(255) DEFAULT NULL, + `age` int DEFAULT NULL, + PRIMARY KEY (`id`) +); +``` + +如果是在 js 代码中执行上面这样命令的话,要记得把 sql 语句存放在字符串里的同一行。 + +代码举例如下: + +```js +let mysql = require('mysql'); +let options = { + host: 'localhost', + //port:"3306",//可选,默认3306 + user: 'root', + password: 'smyhvae001', + database: 'qiangu_database' +} +//创建与数据库进行连接的连接对象 +let connection = mysql.createConnection(options); + +//建立连接 +connection.connect((err) => { + if (err) { + // 数据库连接成功 + console.log(err); + } else { + // 数据库连接失败 + console.log('数据库连接成功') + } +}); + + +// 新建表 +// 注意,在 js 代码中,sql 语句要存放在字符串里的同一行。 +const strSql5 = 'CREATE TABLE `qianguyihao_table5` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`age` int DEFAULT NULL,PRIMARY KEY (`id`));'; + +connection.query(strSql5, (err, result) => { + if (err) { + // 新建表失败 + console.log(err); + } else { + // 新建表成功 + console.log('qianguyihao 新建表成功:' + JSON.stringify(result)); + } +}) + +``` + +打印结果: + +```bash +数据库连接成功 +qianguyihao 新建表成功: +{ + "fieldCount":0,"affectedRows":0,"insertId":0,"serverStatus":2,"warningCount":0,"message":"","protocol41":true,"changedRows":0 +} +``` + + +### 在指定的表中插入数据 + +在指定的表中插入数据: + +```js +// 在指定的表中插入数据 +const strSql6 = "insert into qianguyihao_table5 (name, age) values ('千古壹号', '28')"; + +connection.query(strSql6, (err, result) => { + if (err) { + // 插入数据失败 + console.log(err); + } else { + // 在指定的表中插入数据成功 + console.log('qianguyihao 在指定的表中插入数据成功:' + JSON.stringify(result)); + } +}); + +``` + +打印结果: + +```bash +qianguyihao 在指定的表中插入数据成功: +{ + "fieldCount":0,"affectedRows":1,"insertId":1,"serverStatus":2,"warningCount":0,"message":"","protocol41":true,"changedRows":0 +} +``` + +如果插入的数据是变量(比如是用户提交上来的数据),那么,sql 语句可以这样写: + +```js +// 在指定的表中插入数据(数据作为变量) +const strSql7 = "insert into qianguyihao_table5 (name, age) values (?, ?)"; + +connection.query(strSql7, ['许嵩', '34'], (err, result) => { + if (err) { + // 插入数据失败 + console.log(err); + } else { + // 在指定的表中插入数据成功 + console.log('qiangauyihao 在指定的表中插入数据成功:' + JSON.stringify(result)); + } +}); + +``` + + + + diff --git a/img/20200415_1707.png b/img/20200415_1707.png new file mode 100644 index 0000000..79dd685 Binary files /dev/null and b/img/20200415_1707.png differ diff --git a/img/20200415_1708.png b/img/20200415_1708.png new file mode 100644 index 0000000..ea10a03 Binary files /dev/null and b/img/20200415_1708.png differ diff --git a/img/20200416_1005.png b/img/20200416_1005.png new file mode 100644 index 0000000..1ad7d6a Binary files /dev/null and b/img/20200416_1005.png differ diff --git a/img/20200416_1011.png b/img/20200416_1011.png new file mode 100644 index 0000000..fa59bb0 Binary files /dev/null and b/img/20200416_1011.png differ diff --git a/img/20200416_1014.png b/img/20200416_1014.png new file mode 100644 index 0000000..bf521e8 Binary files /dev/null and b/img/20200416_1014.png differ diff --git a/img/20200416_1126.png b/img/20200416_1126.png new file mode 100644 index 0000000..3833269 Binary files /dev/null and b/img/20200416_1126.png differ diff --git a/img/20200416_1127.png b/img/20200416_1127.png new file mode 100644 index 0000000..1f73af2 Binary files /dev/null and b/img/20200416_1127.png differ diff --git a/img/20200416_1138.png b/img/20200416_1138.png new file mode 100644 index 0000000..5e25eec Binary files /dev/null and b/img/20200416_1138.png differ diff --git a/img/20200416_1150.png b/img/20200416_1150.png new file mode 100644 index 0000000..12ef8b7 Binary files /dev/null and b/img/20200416_1150.png differ diff --git a/img/20200416_1157.png b/img/20200416_1157.png new file mode 100644 index 0000000..48c546a Binary files /dev/null and b/img/20200416_1157.png differ diff --git a/img/20200416_1159.png b/img/20200416_1159.png new file mode 100644 index 0000000..590a227 Binary files /dev/null and b/img/20200416_1159.png differ diff --git a/img/20200416_1202.png b/img/20200416_1202.png new file mode 100644 index 0000000..219899c Binary files /dev/null and b/img/20200416_1202.png differ diff --git a/img/20200416_1259.png b/img/20200416_1259.png new file mode 100644 index 0000000..0b3066b Binary files /dev/null and b/img/20200416_1259.png differ diff --git a/img/20200417_1700.png b/img/20200417_1700.png new file mode 100644 index 0000000..131a540 Binary files /dev/null and b/img/20200417_1700.png differ diff --git a/img/20200417_1750.png b/img/20200417_1750.png new file mode 100644 index 0000000..51634e6 Binary files /dev/null and b/img/20200417_1750.png differ diff --git a/img/20200418_1728.png b/img/20200418_1728.png new file mode 100644 index 0000000..cf72197 Binary files /dev/null and b/img/20200418_1728.png differ