一种基于历史记录的随机方法


问题

假设你有一个歌单,这个时候你想随机播放,有几种情况:

  • 纯随机(伪随机也算是纯随机),没什么好说的,随机从歌单中 抽取一首歌,抽到什么看运气
  • 听的越少的越容易被抽到,用来捡起好久没听过的老歌,当然 大概率会随机到自己不喜欢听的歌
  • 听的越多的越容易被抽到,这个看起来更符合大家想要的,但 也有个问题 --- 假如一直这样下去,就会使人不断陷入 “信息茧房”,你越来越容易抽到最常刷到的歌,而非常难以抽到 不常听的。

前两种没什么好说的,这里思考一种简单的方式来解决第三种方式 遇到的问题

思考

假设第三种采用纯权重的方式,会发生什么呢?写个代码模拟一下。

import ra

Read more

关于MacOS复制应用的正确方法


问题描述

在 MacOS 上,有时候我们需要使用脚本复制特定的应用。MacOS 会严格检验应用完整性, 因此在复制的时候需要特别注意参数。

Bash

使用 Bash 复制的时候需要注意,参数用 -R 而不是 -r

cp -R /Applications/XXX.app ./XXX.app

python

我们通常使用 shutil 来复制文件夹,注意 symlinks=True

shutil.copytree('/Applications/XXX.app', './XXX.app', symlinks=True)

总结

其实重点就在于 symlinks,

Read more

python zipfile.extractall 报错 no such file or directory


错误详情

在开发一个自动分发工具的时候,使用 zipfile.extractall 解压下载的 zip 包。 但在解压过程中莫名报错 no such file or directory。

处理过程

最开始以为是网络传输过程中压缩文件损坏,所以添加了 MD5 校验,但校验后发现包是正确的。 然后本地重新打包并解压,验证压缩包确实没有问题。 以为 python 本身出了问题,尝试重新安装,未果。 以为是中文路径的问题,使用纯英文路径,问题仍在。 最后发现是因为 Windows 默认路径长度限制 260 字符,而压缩包中的路径较深,因此无法解压。 而之前手动测试解压的时候为了方便直接在 D 盘根目录

Read more

K8S 常用命令


前言

本文主要用于记录 K8S 使用过程中自己经常用到的命令。

kubectl

创建服务

# kubectl apply -f ${service config}
kubectl apply -f service.yaml

获取 pods 资源占用

kubectl top pods

helm

安装 Chart

# helm install #{release name} ${chart path} --values ${release params}
helm install release chart/ --values release.yaml

Read more

腾讯云 CDN 踩坑指南


前言

因为个人服务器的成本问题,一般情况下带宽都会开的很低,再者即使是按量计费,每 GB 单价也要八毛。 在看到 CDN 的流量单价只要两毛钱之后就感觉很香,只要 CDN 的命中率达到 30% 以上就可以比直接买带宽/流量要便宜了, 因此开始了漫漫踩坑之旅。

开通 CDN

在腾讯云的官网直接搜索 CDN。

点击立即使用进入控制台,进入之后可能会弹个窗说一堆乱七八糟的注意事项,看看就行。

在左侧选择域名管理,然后点击添加域名。

这里我们需要填写的是三项:

  1. 加速域名,这里填写网页中实际访问的地址,如果你想要整个网站都通过 CDN 代理的话可以填主域名,否则需要单独解析一个专用的子域名。

Read more

peewee-migrate 的简单使用


功能

peewee-migrate 自动生成中间文件并更新数据库表

代码

from peewee_migrate import Router

# peewee models 定义模块,具体定义省略
import my_models

# 使用 my_models.mysql_database 注册一个 migrate router
router = Router(database=my_models.mysql_database, ignore=[my_models.BaseModel._meta.name])
# 创建 migrate 中间文件,并获取到文件名
name = router.

Read more

删除 Python 缓存文件


功能

Python 代码在打包发给用户之前需要删除 pyc/pyo 文件,如果在模块未执行之前可以通过设置环境变量 PYTHONUNBUFFERED=1 来阻止生成上述文件, 但若已经生成就需要一个简单的脚本统一删除了。

删除前:

删除后:

代码

import shutil

import os


def remove_cache(root):
    for child in os.listdir(root):
        child_root = os.path.join(root, child)
        if os.path.isdir(child_root):
   

Read more

DjangoBlog 部署记录


前言

本网站就是用 DjangoBlog 部署的,在这里简单记录一下部署过程及碰到的一些坑。

搭建环境

系统环境

服务器:腾讯云 SA2.MEDIUM8

系统:TencentOS Server 3.1 (CentOS 8.x)

mysql 环境

务必先准备好 mysql 环境,否则将无法正确安装 python 依赖

yum 安装 mariadb

yum install mariadb-server mariadb-devel

启动 mariadb 服务

systemctl enable mariadb
systemctl start mariadb

nginx 环境

yum 安装 ng

Read more