go 跨域问题解决
我在go中其实已经写好了corsMiddleware中间件,只需要给每一个请求都套上即可。
1 | func main() { |
原来问题其实出在了这里/api/article/
以及前端代码中的路径,需要对应才可以
1 | const ApiService = { |
本地测试的时候发现前端vue无法根据set-cookie设置cookie 于是各种修改,最后发现应该增加cookie的path和httponly就可以了。
我在go中其实已经写好了corsMiddleware中间件,只需要给每一个请求都套上即可。
1 | func main() { |
原来问题其实出在了这里/api/article/
以及前端代码中的路径,需要对应才可以
1 | const ApiService = { |
本地测试的时候发现前端vue无法根据set-cookie设置cookie 于是各种修改,最后发现应该增加cookie的path和httponly就可以了。
希望可以处理一下旧的文本内容,之前文章的数据全都变成了一行,希望可以根据语义进行分段。
这里找到的是spaCy这个库。
通过这个网站获取需要使用的命令进行安装即可
设置power shell的代理
1 | $proxy='http://127.0.0.1:7890' |
1 | $ENV:ALL_PROXY ='http://127.0.0.1:7890' |
在跑matters的热榜数据的时候,发现返回的数据有点点问题,解析不出来。
1 | load data error, 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte |
这里试了很多方法,最后找到了
删除Accept-Encoding="gzip, deflate, br"
中的br
具体文章是https://blog.csdn.net/wp7xtj98/article/details/112765324
常规链接远程ssh发现无法调试程序
出现错误
1 | Cannot find remote credentials for target config com.jetbrains.plugins.remotesdk.target.webDeploymen |
这里其实是因为在创建环境的时候,没有选择对路径
一定要修改,这个sync folders到文件路径才可以进行同步
安装各式各样的东西都有可能出现/lib64/libstdc++.so.6: version GLIBCXX_3.4.20 not found
这个报错
解决方案如下所示
1 | 1. 查看系统版本 |
在程序开发以及网络通信传输过程中最常见的数据格式就是JSON、XML,或者是一种压缩效率更高的数据格式——Google的ProtoBuf。ProtoBuf在传输过程中是以二进制的格式传输的,测试抓包的时候如果需要查看请求或返回消息中携带的参数信息就需要对它进行解析。小编之前在Windows环境下使用公司童鞋开发的Fiddler插件可以完成解析工作,但小编在家办公使用的抓包工具是Mac上的Charles。对于不熟悉Charles的小编而言,如何借助Charles来解析并展示ProtoBuf中的内容就尤为重要。本文就介绍一下小编尝试的几种在Mac环境中将ProtoBuf数据流转换为可以直观观察的数据格式的方法。。
Protocol buffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
Protocol Buffers是一种灵活,高效,自动化机制的结构数据序列化方法-可类比XML,但是比XML更小(3
10倍)、更快(20100倍)、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。
Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows、Mac、Linux上使用,安装Charles的时候要先装好Java环境。Charles的具体安装方法就不在此详细展开了,但是Charles应该算是Mac上最好用的抓包工具了。下面详细介绍下使用Charles查看PB文件的方法。
通过阅读Charles关于ProtoBuf的官方文档可以得出当Content-Type的类型为application/x-protobuf时,通过Charles查看内容可以使用两个新的HTTP正文内容查看器,Protobuf文本查看器和Protobuf结构化查看器。但是小编在测试过程中发现我们的请求的Content-type并不是application/x-protobuf的,而是text/plain; charset=utf-8的,所以考虑使用Charles的Rewrite功能将Content-type修改替换一下。
正常看到的请求如下图所示:
打开Tools->Rewrite界面配置,新增配置如下:
其中规则的详细配置是:
配置完成之后再去请求就可以看到Content-Type如下图所示。
此时就可以在Contents中看到对应的ProtoBuf以及ProtoBuf Text内容了。
需要注意的是使用这种方式查看到的都是ProtoBuf里的value内容,没有对应的key,所以可读性较差,下面介绍可读性更强的第二种方式。
一、生成ProtoBuf的.desc解析文件
protoc工具安装:如果想解析一个ProtoBuf数据流,就必须要有对应的.proto文件,Charles需要一个.proto文件转换的.desc文件才能完成后续的解析工作。首先需要在Mac上安装protoc工具:brew install protobuf。
执行protoc –version能够展示以下内容就代表protoc工具安装成功了。
单个proto文件生成.desc文件:将proto_test.proto文件放到固定路径/xx/下,然后执行命令:protoc -I=/xx/ –descriptor_set_out=/xx/proto_test.desc /xx/proto_test.proto就可以在对应路径下生成proto_test.desc文件了。
多个proto文件生成.desc文件:多个proto文件对应生成一个desc文件命令:protoc -I=/x/xx/ –descriptor_set_out=/x/xx/test.desc /x/xx/a.proto /x/xx/b.proto。
二、解析ProtoBuf格式
PB文件未解析时的Request和Response内容如下,可以看到基本全是乱码,可读性极差,通过添加之前生成的.desc文件并配置解析规则就完成PB文件的解析工作,步骤如下:
View Request/Response As:在对应的请求上右键选择View Request(Response) As->Protocol Buffers。
添加.desc文件:进入Charles提供的解析ProtoBuf的配置界面后,可通过点击Open Descriptot Registry将自己的ProtoBuf描述性文件(.desc文件)注册进去。
Descriptor Registry有两个默认支持的desc描述文件,我们可通过点击add添加自己需要的desc文件。
配置message type:添加成功后,可以在Message type中搜索需要解析的消息体对应的ProtoBuf Message,并配置对应的payload encoding。
设置成功后,可以通过ProtoBuf以及ProtoBuf Text两种方式查看PB数据,其中ProtoBuf Text可以看到二进制的消息体已经转换为可以直观查看的类似JSON的数据体了,到此为止简单的PB数据解析工作就告一段落了。
Viewer Mappings功能:View Request/Response As功能只能设置单一请求的request body或者response body的proto解析,但如果是批量请求的解析需要进行大量的重复性工作,比较繁琐,具有较差的便利性,此时可通过Viewer Mappings功能解决该问题。
Protobuf Settings功能:desc文件的添加不仅可以通过Viewer Mappings功能和View Request/Response As功能,还可以通过菜单栏上的Protobuf Settings功能进行设置。
1 | bash-4.2# sudo yum makecache |
在用centos的时候,更换yum源,在创建新缓存的时候报错。
这里直接禁用tigervnc-el7即可yum-config-manager --disable tigervnc-el7
之后重新创建即可
Docker 支持以下的 64 位 CentOS 版本:
安装命令如下:
1 | curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun |
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
$ sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils
device-mapper-persistent-data
lvm2
使用以下命令来设置稳定的仓库。
$ sudo yum-config-manager
–add-repo
https:**//download.docker.com/linux/centos/**docker-ce.repo
可以选择国内的一些源地址:
$ sudo yum-config-manager
–add-repo
http:**//mirrors.aliyun.com/docker-ce/linux/centos/**docker-ce.repo
$ sudo yum-config-manager
–add-repo
https:**//mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/**docker-ce.repo
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
1 | $ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin |
如果提示您接受 GPG 密钥,请选是。
有多个 Docker 仓库吗?
如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update 命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。
Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。
要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:
1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。
$ yum list docker-ce –showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
1 | $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io |
启动 Docker。
1 | $ sudo systemctl start docker |
通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。
1 | $ sudo docker run hello-world |
删除安装包:
1 | yum remove docker-ce |
删除镜像、容器、配置文件等内容:
1 | rm -rf /var/lib/docker |
有的代理发现跑在clash for linux上节点全部超时,于是找了台服务器用shellclash跑了一下,发现是正常的。
所以问题其实出在了clash for linux上,但是shellclash用docker跑有点复杂,于是找了一下docker直接跑clash的教程。
找到了这一篇使用 Docker 搭建图形化 Clash 服务端并添加订阅
不错!
首先找到一个文件夹用来存放配置文件
这里我找的是/home/clash
,我将不同的配置文件分别命名成config1.yaml等
之后启动容器
1 | docker run -d --name=clash1 -v '/home/clash/config1.yaml:/root/.config/clash/config.yaml' -p 7899:7890 -p 9099:9090 --restart=unless-stopped dreamacro/clash |
7899就是代理的端口
9099就是ui面板的端口
这里可以用外部提供的链接http://yacd.haishan.me/访问ui
也可以自己搭建
1 | docker run -p 1234:80 -d --rm --name yacd haishanh/yacd |
1234就是访问的端口
之后操作ui界面即可
之前通过爬虫采集了一些掘金小册的内容,当时只保存了对应的html。
一直希望可以找个开源的项目将掘金小册展示出来供自己阅读,但是翻遍了GitHub都没有找到我喜欢的。
所以只能自己开发。
本来是想要用python+html实现一个简单的页面:当时的构思是用fastapi构建接口,然后利用html+jquery+bootstrap实现前端页面。
但是感觉都2023年了还是这样实现有点low,然后因为工作有点忙以及需要打游戏,就搁置了。
但是最近又想要实现这个项目了。
这次选取的是利用go实现接口,然后用vue构建前端页面。
大概实现了注册,登录,获取所有图书信息,获取单独图书信息,获取文章详情这几个接口
这里我选择的是利用vue cli创建项目,然后通过axios构建请求获取数据。
一个很难受的坑就是跨域请求。这里是问了一下做前端的同事,然后他跟我说用proxy代理解决。但是我设置代理后,发现response会返回set-cookie,但是浏览器并没有设置,最后发现是我的cookie设置有问题
1 | cookie := &http.Cookie{ |
这里我没有加Path以及HttpOnly,然后就设置不上去,加上后就可以了。