使用rufus制作启动盘
准备:
- u盘
- 系统镜像
- rufus
首先在电脑上下载rufus
rufus直接下载地址https://github.com/pbatard/rufus/releases/download/v3.21/rufus-3.21p.exe
之后下载系统镜像
可以利用网站i tell you下载系统镜像,也可以通过下方连接下载
itellyou:
之后将u盘插入电脑启动rufus
创建启动盘后重启电脑进入bios
将u盘选择到首选项后重启电脑就会进入安装界面进行安装即可
准备:
首先在电脑上下载rufus
rufus直接下载地址https://github.com/pbatard/rufus/releases/download/v3.21/rufus-3.21p.exe
之后下载系统镜像
可以利用网站i tell you下载系统镜像,也可以通过下方连接下载
itellyou:
之后将u盘插入电脑启动rufus
创建启动盘后重启电脑进入bios
将u盘选择到首选项后重启电脑就会进入安装界面进行安装即可
首先安装环境
1 | conda create -n foo python=3.8 |
之后在虚拟环境中安装ipykernel
1 | conda install -n foo ipykernel |
然后安装到jupyter中
1 | python -m ipykernel install --user --name foo --display-name "conda_foo" |
之后启动jupyter就可以了
把博客转为hexo后,发现以前发的文章有许多格式问题,于是趁着居家办公想要修复一下,但是越修复越头疼.
没想到以前写的那么小白,还能写的津津有味.
也没想到时间居然已经过去了2年了.
虽然没成为大牛,但终究不当小白了,什么都能瞎扯一段.
我是在linux上执行npm -v的时候出现了这个错误。
百度搜了一下说是内存问题,然而检查了一下进程情况,发现并没有占多少资源。
那么显而易见,不是这个原因。
那么在这之前我做了什么操作呢?
我用n下载了新版本的node,但是没有下载成功。
那么检查一下node可否使用
node -v发现也不能使用
那么显而易见,就是因为n的问题
输入n发现没有选择对应的node版本,我们选择一下node 14.15.0即可。
退出后再使用npm -v,发现可以正常使用了。
本地环境弄得一团糟,懒得整理,所以借着学习Sanic的机会,在服务器上搭了一个python环境,使用的anaconda来管理不同版本不同需求的python环境.
首先就是需要一台服务器,我是用的虎年回馈在腾讯云买的,3年264还可以.
然后去anaconda官网下载bash文件执行安装.
我是参考的这个教程来做的,我把关键步骤摘出来了.
参考链接https://blog.csdn.net/zimiao552147572/article/details/105455258
1 | 1.官网下载Anaconda安装包 |
安装的时候需要退出root权限,我之前就是在root权限下安装的,然后安装到了root/anaconda3中,但是在默认权限下是使用不了的,然后换回root也不行,所以要在默认的权限下安装.
安装完成后会出现一个问你是否设置环境的选项
1 | installation finished. |
请选择yes
然后再刷新一下文件source ~/.bashrc即可
之后创建环境,我创建了一个3.8的环境,虽然小版本跟我本地不一样,但是大版本一致
1 | conda create --name python38 python=3.8 |
然后进入环境即可
1 | conda activate python38 |
之后创建文件名为run的python文件,输入print(‘hello world!’)
保存退出,然后输入python run.py,会打印出hello world!
然后我们想不适用python就执行run.py文件,那么就需要在文件前加上
1 | #!python位置 |
这个python位置我们自然要使用conda创建的环境中的python,输入which python3
会出现python的位置,把这个位置复制到#!后面即可
ps: 其实不需要那么麻烦的配置环境变量,在安装完成后source ~/anaconda3/bin/activate
启动conda,然后在环境里使用conda init 就会自动配置好anaconda环境,之后退出环境即可.https://blog.csdn.net/radiantjeral/article/details/110288050
1 | apt update |
首先是更新服务器的apt,然后安装npm,全局更新npm版本到最新或者指定版本npm install -g [email protected]
,之后全局安装n,再用n安装node,我一般都是指定版本 n xx.xx.x,然后hash -r就可以正常使用了
之所以搞这个,其实就是想要一个可以跟着我一起走的pdf阅读器
首先在服务器上安装docker
然后拉取 johngong/calibre-web
1 | docker pull johngong/calibre-web:latest |
之后创建容器
1 | docker create \ |
这里建议映射8083:8083,我测试别的端口不能用
启动
1 | docker start calibre-web |
停止
1 | docker stop calibre-web |
如果不想配置可以直接输入下面的指令
1 | docker run -d --name calibre -p 8083:80 -v /www/xxxx/data:/data talebook/calibre-webserver |
默认账号admin默认密码admin123
配置参考
参数
说明
--name=calibre-web
容器名
-p 8083:8083
calibre-web web访问端口,默认用户名: admin 默认密码: admin123
-p 8080:8080
calibre-server web访问端口
-v /配置文件位置:/config
calibre-web与calibre-server配置位置文件
-v /书库:/library
calibre-web与calibre-server书库默认位置
-v /自动添加文件夹:/autoaddbooks
calibre自动添加图书文件夹位置
-e UID=1000
uid设置,默认为1000
-e GID=1000
gid设置,默认为1000
-e ENABLE_CALIBRE_SERVER=true
(true
false)设定开启calibre-server,默认开启
-e ENABLE_CALIBRE_SERVER_OPDS=false
(true
false)开启calibre-server的OPDS功能,默认不开启,arm可能不可用
-e CALIBRE_SERVER_USER=用户名
calibre-server 用户名
-e CALIBRE_SERVER_PASSWORD=用户密码
calibre-server 用户密码
-e CALIBRE_SERVER_WEB_LANGUAGE=zh_CN
calibre-server web界面语言,默认中文,详见calibre-server其它语言
-e CALIBRE_ASCII_FILENAME=true
(true
false)设定false时calibre支持中文目录
-e CALIBRE_WEB_LANGUAGE=zh_Hans_CN
(zh_Hans_CN
en)calibre-web初始界面语言,详见calibre-web其它语言
-e TZ=Asia/Shanghai
系统时区设置,默认为Asia/Shanghai
-e CALIBREDB_OTHER_OPTION=
为自动添加脚本中calibredb命令添加其它参数,例如:duplicates命令[-d]
-e DOUBAN_SEARCH=false
(true
false)设定开启豆瓣搜索,默认不开启
可参考docker文档:https://hub.docker.com/r/johngong/calibre-web
报错信息:
1 | [19372:00000188FE38D750] 482437 ms: Scavenge 13679.5 (14045.6) -> 13666.6 (14045.6) MB, 14.4 / 0.0 ms (average mu = 0.989, current mu = 0.992) allocation failure |
将跑的数据加进excel中,发现出现了MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory这个问题,于是百度查了好久,最后找到了一个不算方法的方法。
https://support.snyk.io/hc/en-us/articles/360002046418-JavaScript-heap-out-of-memory
在powershell中输入下面这个指令,将内存值调大一点,可以解决一点点问题,但是看我的报错会发现并没有解决,只要你调的内存不够,还是会继续报错。
1 | $env:NODE_OPTIONS="--max-old-space-size=8192" |
手上的活终于忙完了,所以准备写一下工作总结,记录一下目前遇到的问题,以及相应的解决方法。
首先说一下目前的工作内容吧,其实跟在学校学的关系不是很大,目前做的是内容采集,具体的就不说了。
我上手的两个论坛,一个是死的,一个是活的,死的论坛我用python随便爬爬就获取到了,然后活的论坛本来是想用python采集的,毕竟比较熟悉,但是不是很清楚该怎么更新数据—持续化采集。
后来大哥说用puppeteer+kafka+minio进行采集,三个词我一个不认识。
幸亏时间比较充足,所以简单的了解了一下就上手去做了,在公司明白的一个内容就是,不一定需要你了解原理,你只需要会用就行了,我kafka和minio直接看的文档,复制的。用起来还可以,但是让我布服务器的话,我是不行的。
err: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x98\x8A' for column 'content' at row 1
这个其实一开始很迷,不知道为啥会出这个错,后来发现是因为表情存不进去。。。但是自己试了一下,表情是可以存进mysql的。
解决方法是打印了一下html,发现表情的位置被黑问号替代了,被�这个符号替代了。然后就存不进mysql了,疯狂尝试都没有找到结果,后来找到了这个帖子才解决。https://stackoverflow.com/questions/65175881/puppeteer-failed-to-render-emojis-when-running-in-ubuntu
貌似是因为字体不支持,安装一下支持表情的字体,就可以发现能采集到表情了。
1 | apt install fonts-noto-color-emoji |
这个是真的没有想到,原因大概是因为数据库连接超时,貌似是因为数据库有一个最大连接时间,超过这个时间就会断开,然后我这边数据其实是在启动的时候开启一边数据库,然后就等着kafka生产消费了,不会再次连接数据库,真的让我很困扰。
当时觉得应该可以的一个方法就是我这边设置一个循环,一直去找数据库查询一下数据,随便整个就行了,保持活跃,当时觉得可行,但是因为我这边出现问题,就没有尝试,后来仔细想想,应该是不行的,因为我这边数据其实是一直在往数据库写的,并且调用的是连接数据库,然后执行sql。
后来找到了一个pool,数据库连接池,这个是让我觉得真的可行的方法,并且现在我就用上了,不知道会不会出错。https://github.com/mysqljs/mysql
这个可以看一下GitHub的文档,有比较详细的内容,当然如果需要中文的话,https://www.cnblogs.com/enix/p/3654894.html
推荐这一篇。
这个就没有报错了,直接卡进程里,就是啥报错也没有,但是就是不往下进行了,这个真的很迷,后来突然想到了大哥跟我说的一句话,“你这个把释放放在了调用前面,可能会拿不到数据吧”这一句话让我想起来我好像只给成功执行sql语句的连接加了释放,如果出错的话,貌似不会释放连接,然后再一想,好像出现卡死的都是有报错的。所以给出现错误的也加上释放应该就可以了。
虽然说是这些问题都不是node的问题(大概),但是我还是决定换一下node版本,更换成我本机上的node–14.15.0好像,更换成这个版本。
因为我依稀记得当时装node是先去下载一个Linux版本的,然后解压,之后link就行了,但是自己试了一下发现不行(这是因为我当时用n 更新了一下node,所以就不行了,方法应该大概是可行的)
然后查了好多都没整好,后来想起来我更新版本用的n,这个好像大概也可能会降级吧。
查了一下发现真的可以,n xxxxx就行了,n 版本号就会下载对应版本的node了,n怎么安装?npm install n -g,-g是为了全局能够使用(大概是这样的)
反正具体的报错我就不写了,这是因为minio上传的时候,图片不在当前位置,加个延时就行了,本来我是这边下载了马上就上传,但是服务器出现了种种问题没有下载成功,然后这边就上传,就会出现这个问题。
这个问题是真的折磨人啊,但是最后还是想到了,问题出现在node连接数据库的编码格式上,我们把编码格式设置成utf8mb4即可,太难了,真没想到是这样的问题,一直以为编码这个东西只需要设置数据库就行了,在写这点内容的时候,突然就想到以前用python的时候,连接数据库也是要设置编码的,太难以置信了,我真。。https://stackoverflow.com/questions/64737590/character-encoding-issue-node-js-mysql
https://stackoverflow.com/questions/20411440/incorrect-string-value-xf0-x9f-x8e-xb6-xf0-x9f-mysql
最后是靠这两篇文章让我想起来还有编码格式这个东西的,感谢!!
首先就是用puppeteer的时候,记得每一个page用完都要关闭,如果想要达到最好的效果,最好是关闭launch,然后再次启动。
然后再就是node 使用moment模块转化时间的时候,记得要用大写的HH表示24小时制。这一点是真的坑啊,我还以为不加后面的a这个参数就是24加了就是12呢,太坑了,写数据的时候看怎么下午2点写的凌晨2点。moment(values.data).format('YYYY-MM-DD HH:mm:ss')-----24小时
moment(values.data).format('YYYY-MM-DD hh:mm:ss')-----12小时
然后就简单写到这里吧,有好多错误其实都忘记了。想到再补。
在用nodejs向MySQL插入数据的时候,获取返回值发现insertid一直是0,然后再获取的时候会获得比最新小1的值,比如说最新插入的值为1122,获取的id就是1121。
后来发现是因为获取id的时候,没有等待query执行完成就获取id了,而我们应该等待query执行完成后再获取id,这样才能获取到当前id。
但是当时给query加上await了,为什么不会执行呢?
因为query不支持异步操作,所以要重写query函数。
创建一个Promise然后将query放在里面进行执行,就可以了。
1 | async function query(query,params){ |