Artin's Blog

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

0%

在 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 文件都不一样的话,每次更新起来还要把原来的删除再复制过去。

阅读全文 »

这是系列博客 《我的 Hexo》的第零篇,其他篇见:


使用 Hexo 已经四年已久,四年以来对博客做了很多的优化,也积累了很多经验,现在想写一写都做了什么。

可能也许大概会有这么多东西:

  1. 利用 GitHub Actions 自动部署博客
  2. 编写 scripts 在 hexo 各阶段生成内容
  3. 使用 VS Code 写博客
    1. 使用插件
    2. 使用 code snippets
  4. _config.yml 中使用危险 token
  5. 你不曾注意过的 _config.yml
  6. 在 next-theme 主题中添加自定义内容
  7. 利用好 package.json 文件中的 scripts 字段
  8. 利用好 Node.js 脚本
阅读全文 »

译自:https://arpitbhayani.me/blogs/function-overloading
作者:@arpit_bhayani
翻译已获原作者授权


函数重载是指可以创建多个同名函数,但是每个函数的形参以及实现可以不一样。当一个重载函数 fn 被调用时,运行时会根据传入的参数 / 对象,来判断并调用相应的实现函数。

int area(int length, int breadth) {
  return length * breadth;
}

float area(int radius) {
  return 3.14 * radius * radius;
}

上面这个例子中 (C++ 实现),函数 area 被两个实现重载,第一个函数允许传入两个参数 (且都是整数型),根据传入的长方形的宽高,返回长方形的面积;第二个函数需要传入一个整形参数:圆的半径。当我们调用函数 area 时,如调用 area(7) 时会使用第二个函数,而调用 area(3, 4) 时则会使用第一个。

阅读全文 »