Artin's Blog

谁有天大力气可以拎着自己飞呀

0%

在 Windows 上遇到一个 Docker Desktop 无法启动的问题,表现就是点击 Docker 图标,但是就是不启动,过了一会弹了一个框:

弹框

中文提示的应该是:操作已超时。

阅读全文 »

今天为了 OPPO 商城的学生认证上了一下教育邮箱,去邮箱验证的时候发现收件箱收了一堆莫名其妙的退信,然后再一看发件箱,发现被拿来发了一堆的广告,感觉大事不妙。

扫了一下发件箱,发现有一条发送给某个随机邮箱说 YApi 注册成功的信息,我在自己的公网服务上是部署了一个 YApi,又想到好像最近有 YApi 的漏洞。

于是登上了 YApi 看了一下,注册用户中果然多了一堆莫名的乱码帐号。

看起来服务器是安然无恙的,所幸我是用 Docker 运行的 YApi。

阅读全文 »

最近折腾了一下在 MacOS 本地搭建 DoH,把折腾过程记录一下。

使用工具为 dnscrypt-proxy + dnsmasq。

dnscrypt-proxy 只负责帮我们发起 DoH 请求。

dnsmasq 是一个轻量级的域名解析服务器,帮我们把 DNS 请求转发到 dnscrypt-proxy,而把一些公司域内的域名转发到路由器分发的上游 DNS。

还写了个 uTools 插件 来快速切换 DNS。

阅读全文 »

在 Ubuntu 上使用 docker push 的时候一直报 access denied:

denied: requested access to the resource is denied

使用 docker login 之后也不行,给镜像打的标签也是正常的,就很奇怪。

阅读全文 »

耗费了一个晚上,把这个坑趟平了。

想使用 flask-migrate 插件做数据库版本管理,但是一直遇到这个问题。

INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.env] No changes in schema detected.

各种方法都尝试过了,在每个地方都试了引入了 models 里的内容、调整使用 flask script 等等等等…

阅读全文 »

想自己本地架个 DNS 服务器,中途不小心把 /etc/resolv.conf 删除了,想着重启恢复还是怎么样,重启多遍发现没有什么用。

于是搜索了一下,发现其实 /etc/resolv.conf 只是 /var/run/resolv.conf 的一个软链接。

soft link

阅读全文 »

最近配置了一下 git 的 GPG,但是在使用 VSCode WSL 进行 git commit 的时候就提示:

Git: gpg failed to sign the data

详细输出如下:

> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file -
error: gpg failed to sign the data
fatal: failed to write commit object
阅读全文 »

2020/01/14,离开学校回家,那时候是很难想象到这一年会是这个样子的。

今年大四,选择了工作,也不知道会不会后悔没有保研。

感觉这一年学了很多东西,但也感觉自己还是会的太少。

阅读全文 »

使用 pyodbc + sqlalchemy 连接 SQLServer 数据库的时候遇到一个报错: [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 (0) (SQLDriverConnect)

查阅 sqlalchemy mssql+pyodbc 数据库文档 后发现:

需要装 ODBC 驱动。并且如果你要是用 hostname 方式来连接数据库的话,还需要指定驱动名字,但是发现有好多种 driver,一个 driver 还有不同的名字。于是研究了一番。

阅读全文 »

最近在忙一个外包,因为大屏展示页面是用 React 写的(使用 create-react-app),甲方想访问后端控制页面的网址就能直接访问这个大屏展示,而不是前后端分离部署。

自己尝试了一下,还是遇到了点问题。

create-react-app 会将打包的结果放在项目根目录中的 build 文件夹,打包后的路径结构:

build directory structureSource
- build - static - css - style.[hash].css - style.[hash].css.map - js - main.[hash].js - main.[hash].js.map - index.html - [more meta files]

create-react-app 打包的静态资源都放在了 static 路径下。比如打包后 index.html 中的一个链接:

index.html
<link href="/static/css/2.0a6fdfd6.chunk.css" rel="stylesheet">

浏览器解析后,会发出一个请求 GET /static/css/2.0a6fdfd6.chunk.css

如果简单的添加一个路由返回 index.html 文件的话,就有以下的问题出现:

因为 Flask 本身就有 static_folder 的概念,所有请求 /static 路径的请求都会从配置的 static_folder 中读取文件并返回。

graph LR
A(Browser) -->|GET /index.html| app(Flask app)
A(Browser) -->|GET /static/css/style.css| app(Flask app)
app --> C{endpoints}
C -->|/index.html| view[Handled by `View` Function]
C -->|/static/*| static[Load files from `static_folder`]

index.html 中请求的资源都会从 static_folder 中拉取,那你说把打包后的文件直接放在 static_folder 不就好了?

因为本身 static_folder 中就有一些后台页面需要的静态资源,也是按类型建立了文件夹:css/js 等,如果直接把 React 打包后的资源直接复制到 static_folder 中,那么不同的 js 文件都混杂在一起了。React 每次重新打包生成的 js 文件都不一样的话,每次更新起来还要把原来的删除再复制过去。

阅读全文 »