普通视图

终于收到 Google Adsense 漂洋过海邮寄过来的 PIN 码了

2025年3月13日 22:22

前言

很久很久以前,久到我都已经快忘记了,只记得那是一个夏天,我刚搭建完个人网站并尝试接入 Google AdSense ,当时还写过一篇关于 个人网站接入 Google AdSense 心得 的文章 ,今天终于收到 Google 邮寄过来的 PIN 码了。

就一张对折密封起来的纸,皱皱巴巴的很简陋,感觉还没普通信封靠谱,难怪很多过来人会说容易寄丢呢?

好在我是顺利收到了,这篇文章就简单记录一下 PIN 码的认证过程吧!

[...]

为博客网站增加一个简单的算术验证码,防止机器人垃圾评论轰炸

2025年3月12日 20:09

前言

你们的博客网站有隔三岔五就收到这么多的垃圾评论吗?

这里所说的垃圾评论专指机器人通过自动化脚本或直接调用接口发起的评论,由于评论不经过前端页面,因此并不会给网站带来任何流量。说到垃圾评论,真的是非常恶心,如果仅仅是偶尔来一两条我都所谓,大不了隔段时间集中删一次,但实在架不住它短时间内狂轰乱炸,尤其是像我这样接入了邮件通知的,一旦开始,手机就响个不停,烦得要死。

[...]

如何基于 Typecho 实现中英双语网站(下)

2025年2月20日 16:33

前言

通过上一篇文章 如何基于 Typecho 实现中英双语网站(上),我们已经把 中英双语网站 的基本框架搭建好了。实际上很多支持多语言的网站,也就这样了,例如著名的 YouTube 就是如此,至于具体的内容显示什么语言,则完全是由内容的创作者决定的。

上一篇文章也提到了,Typecho 其实并不是很适合做多语言网站,因为,一方面需要修改源码,另一方面,开发一个不同国家的人都来发布创作内容的网站,想想也不是个人应该考虑的。 Typecho 还是更适合作者自己创作,然后向用户展示的场景,这时如果要实现多语言,就不得不将文章的内容也进行翻译了。

[...]

如何在 Google Analytics 4(GA4) 查看 Referer URL ,获取来源地址

2025年10月10日 19:15

作为统计站的第一,这个 Blog 也挂了 GA 4 作为统计。如果你希望知道是谁在推荐你的 Blog,一个很好的办法是查看 HTTP 的 Referer 的 URL,来判断哪些人在哪些地方推荐了你。

不过 Google Analytics 在升级到 GA4 之后,查看 Referer  变得麻烦了不少,没办法直接通过预置的看板来查看。这篇文章就是帮你找回丢失 Referer URL。

具体操作步骤

一、登录 GA 4 ,找到你的站点;点击左侧的「探索」,进入到探索页面。在探索页面点击「空白」,来创建一个新的探索看板

    image

    二、新的探索页面,选择维度这里,新增两个维度和一个指标

    维度:网页引荐来源网址网页位置

    指标:新用户数

    image

    三、将网页位置和网页引荐来源网址配置到设置中的行,且顺序为网页位置在先,网页引荐来源网址在后;显示行数设置为 500;新用户数配置到设置中的值当中;设置过滤器为网页引荐来源网址包含 //

    image

    四、配置完成后,你就可以看到类似我这样的界面了,在这个页面里,你就可以看到不同的来源给你带来了多少流量;从而进一步的去和对方沟通~

    image

    django-storages 配置使用 S3 Provider 支持 Aliyun OSS 使用

    2025年10月2日 20:13

    阿里云 OSS 提供了 S3 的兼容,所以如果你在 Django 应用当中,希望使用 OSS 作为文件存储的话,可以参考下方的说明,来使用。

    安装

    首先,你需要执行如下命令安装 django-storages 的 S3 兼容

    # uv
    uv add django-storages[s3]
    # pip
    pip install django-storages[s3]
    

    配置

    接下来,就是在你的项目文件夹中的 settings.py 中添加如下配置

    AWS_S3_ACCESS_KEY_ID = env("AWS_S3_ACCESS_KEY_ID") # 你在阿里云拿到的 ACCESS_KEY
    AWS_S3_SECRET_ACCESS_KEY = env("AWS_S3_SECRET_ACCESS_KEY") # 你在阿里云拿到的 Secret Key
    AWS_STORAGE_BUCKET_NAME = env("AWS_STORAGE_BUCKET_NAME")# 你在阿里云拿到的 Bucket Name
    AWS_LOCATION = env("AWS_LOCATION") # 你的文件上传路径,比如  uploads/,你的所有文件都会上传到这个路径下
    AWS_S3_REGION_NAME = env("AWS_S3_REGION_NAME") # 你的 OSS 的可用区,比如 oss-cn-beijing
    AWS_S3_CUSTOM_DOMAIN = env("AWS_S3_CUSTOM_DOMAIN") # 你自己的自定义域名,以便于后续访问的时候使用。如果不知道的话,可以填 bucket 的默认域名。
    AWS_S3_ENDPOINT_URL = env("AWS_S3_ENDPOINT_URL") #  你的阿里云 Endpoint URL,比如 https://oss-cn-beijing.aliyuncs.com
    
    AWS_S3_ADDRESSING_STYLE = "virtual" # 阿里云只支持二级域名的形式
    AWS_S3_SIGNATURE_VERSION = "s3" # 阿里云只支持 v2 版的签名逻辑
    
    # 配置默认使用 S3 Storage,即使用 OSS 的 URL
    STORAGES = {
        "default": {
            "BACKEND": "storages.backends.s3.S3Storage", # 使用 S3  Storage
        },
    }
    
    

    参考上方的配置,添加配置项后,保存,并重启服务器,即可在代码中进行测试。

    测试代码

    你可以执行 python manage.py shell 并执行如下代码,如果无报错,且可以在 OSS 控制台看到文件,则说明你的配置成功了。

    
    from django.core.files.storage import default_storage
    from django.core.files.base import ContentFile
    content = ContentFile(b"Hello World!")
    path = default_storage.save('test_file2.txt', content)
    print(f"文件保存路径: {path}")
    # 测试文件读取
    if default_storage.exists(path):
        with default_storage.open(path, 'r') as f:
            content = f.read()
            print(f"文件内容: {content}")
    # 测试文件URL生成
    url = default_storage.url(path)
    print(f"文件URL: {url}")
    # 测试文件删除
    default_storage.delete(path)
    print(f"文件是否存在: {default_storage.exists(path)}")
    
    
    ❌