普通视图

浑身瑕疵

2025年12月3日 08:23

有时候我还真不明白,为什么现在大家把AI吹得那么牛逼。因为就是我的使用体验而言,我觉得在写代码的时候,AI真的是挺糟糕的.我用的AI是Deepseek。

理论上无论我用的是什么AI,它们都应该是写代码的高手,无论是写什么类型的代码都应该没什么问题。我这么低端的用户,也不会提出一些什么高端的要求,但事实证明,不知道是我提要求提的不够精准还是怎么着,反正出来的结果我个人感觉基本上没有一次就能符合我的要求。有些时候的确能接近生成我想要的结果,但更多时候那串代码当你复制下来运行的时候会发现根本运行不了。对一个什么都不知道的小白在代码运行不了的时候可以怎么办呢?换一个AI继续提问继续复制粘贴?但如果这个AI有问题,其它AI会不会也有问题呢?为什么人家觉得那个玩意那么神奇,但我自己的使用体验却那么差呢?是不是因为AI已经判断出我这个人是个挑剔的完美主义者,所以故意给我些有瑕疵的东西?每一次都有瑕疵,每一次的瑕疵都说不准在什么地方,幸好绝大多数情况之下,我要的不是AI的全过程,我只是要参考一下它的思路而已。当我要求它给我写某个代码的时候,实际上我更看重的是它用什么途径,而不是它的代码具体是什么。如果它的代码能顺利运行,那当然好,但实际上我感觉一次性就能成功运行的几率可能不足10%。

当我给出一串数字,要求它给我做数据分析。噼里啪啦一大段字很牛逼,一贴进去发现根本出不了结果,仔细看Python的那些错误代码,原来一开始那个屌丝把原始数据都给我整没了一些,因为长度不对,所以整不出结果。我要用Excel的公式实现某些功能,的确噼里啪啦有好多个方案。有些方案一看就直接可以忽略,因为又长又臭,另外一些我感觉有些希望的却发现到Excel里面同样也是出不了结果。至于为什么我也不去纠结了,我直接去研究这些方法的思路到底是什么。我让它用Power Query,也就是M语言给我实现某个功能,结果发现把那堆代码贴到高级编辑器,甚至都无法按确定提交,因为显示语法错误。那个编辑器是一个神经的存在,说语法错误,但定位的那个点实际上没有问题,但那个问题到底在哪里,你得人肉上下文去找。我使用的通常是对半检索法,首先留一半,然后一半的一半。理论上是这么找的,但实际上后面某些功能不要我觉得都无所谓,所以我只要找到那些我需要的就可以了。最终发现,某个用了函数的地方,理论上应该是“=>”。DS给我的代码是“->”。如果这份代码是由图片识别过来的,出现这种等号变成减号,我觉得可以理解,但显然这种事情怎么可能发生?!对一个什么都不懂的人来说,你叫他怎么可能人肉找得出这样的低级错误呢?!那个代码除了那个等号变成了减号以外,最后的结果还有一些无厘头的数据合并,那些数据在前面几个步骤里面已经不复存在了,在最后那个步骤又突然间被提起,真牛逼!

在这种情况下,说AI可以取代人类完成编程,我觉得起码暂时是不行的,尤其是要实现一些高度定制的功能的时候。

数学之美: Sigma 函数的推导公式与 Python 实现

理解 Sigma 函数:因子、乘法性与公式推导

一文看懂 Sigma 函数:因子分解的终极威力! σ(n) 完全解析:为什么求和函数能“自动”变成乘积? 数学之美:Sigma 函数的推导、公式与 Python 实现 从几何级数到质因数:Sigma 函数的魔法公式大揭秘 搞懂 σ(n) 的那一天,我看到了数学的秩序 为什么 σ(n) = 乘积?带你走进数论的核心思想 Divisor 终极指南:Sigma 函数推导 + 代码 一篇搞定
Sigma 函数,记作 [math]\sigma(n)[/math],表示一个整数所有正因子的和。 例如 12 的因子有 1、2、3、4、6、12,因此 [math]\sigma(12)=28[/math]。 本文解释什么是 Sigma 函数、为什么它满足乘法性、如何从质因数分解推导出通用公式,并给出高效的 Python 实现。

可除性符号

在数论中,符号 “|” 表示“整除”。 [math]d \mid a \quad \Longleftrightarrow \quad \exists k \in \mathbb{Z},\; a = dk[/math] 因此表达式 [math]\sum_{d \mid n} d[/math] 的意思是“对所有能整除 n 的 d 求和”。

质因数分解与因子的结构

任意正整数 [math]n[/math] 都可以唯一写成: [math]n = p_1^{a_1} p_2^{a_2} \cdots p_k^{a_k}[/math] 它的一个因子必须从每个质数的指数中“选择”一个: [math]d = p_1^{e_1} p_2^{e_2} \cdots p_k^{e_k}, \qquad 0 \le e_i \le a_i[/math] 所有因子结构的规律都来自这个事实。

关键性质:Sigma 函数是乘法性的

当两个整数互质时,Sigma 函数满足: [math]\sigma(mn) = \sigma(m)\,\sigma(n) \qquad \text{if} \gcd(m,n)=1[/math] 原因是:若 [math]m[/math] 和 [math]n[/math] 的质因数互不相同, 那么 [math]mn[/math] 的每个因子都能唯一写成: [math]d = d_m d_n, \quad d_m \mid m, \; d_n \mid n[/math] 因此对所有因子求和可以写成二重求和: [math]\sigma(mn) = \sum_{d_m \mid m} \sum_{d_n \mid n} d_m d_n[/math] 接下来把二重求和“拆开”。固定某个 [math]d_m[/math],则: [math]\sum_{d_n \mid n} (d_m d_n) = d_m \sum_{d_n \mid n} d_n = d_m \sigma(n)[/math] 再对所有 [math]d_m[/math] 求和: [math]\sigma(mn) = \sum_{d_m \mid m} d_m \sigma(n) = \sigma(n) \sum_{d_m \mid m} d_m = \sigma(n)\sigma(m)[/math] 这就证明了 Sigma 的乘法性。

质数幂的 Sigma 公式

利用乘法性,只需计算 [math]\sigma(p^k)[/math]。 其因子为: [math]1, p, p^2, \ldots, p^k[/math] 这是一个几何级数: [math]\sigma(p^k) = 1 + p + p^2 + \cdots + p^k = \frac{p^{k+1} - 1}{p - 1}[/math] 把所有质因数幂的贡献相乘,就得到通用公式: [math]\sigma(n) = \prod_{i=1}^k \frac{p_i^{a_i+1} - 1}{p_i - 1}[/math] 这就是任意正整数的因子和公式。

示例:计算 σ(12)

质因数分解: [math]12 = 2^2 \cdot 3^1[/math] 分别计算: [math]\sigma(2^2) = 1 + 2 + 4 = 7[/math] [math]\sigma(3^1) = 1 + 3 = 4[/math] 相乘: [math]\sigma(12) = 7 \cdot 4 = 28[/math]

Python 实现:高效的 Sigma 函数

以下是基于质因数分解与乘法性的高效Python实现,时间复杂度约为 [math]O(\sqrt{n})[/math]。
def sigma(n: int) -> int:
    """高效计算因子和函数 σ(n)。"""
    total = 1
    x = n

    # 处理质因数 2
    count = 0
    while x % 2 == 0:
        x //= 2
        count += 1
    if count > 0:
        total *= (2 ** (count + 1) - 1) // (2 - 1)

    # 处理奇质数
    p = 3
    while p * p <= x:
        if x % p == 0:
            count = 0
            while x % p == 0:
                x //= p
                count += 1
            total *= (p ** (count + 1) - 1) // (p - 1)
        p += 2

    # 若剩下的是质数
    if x > 1:
        total *= (x**2 - 1) // (x - 1)

    return total

结语

Sigma 函数展示了因子结构的优雅与质因数分解的力量。通过理解乘法性与几何级数求和,我们得到一个漂亮的闭式公式,并能编写高效的计算程序。有了理论与代码,你就能深入探索更多数论中的算术函数了。 [show_file file="/var/www/wp-post-common/justyy.com/math.php"] 英文:Understanding the Sigma Function: Divisors, Multiplicativity, and the Formula

相关文章:

  1. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 英国房子的EPC节能报告(Energe/Efficiency Performance Certificate) EPC (Energe/Efficiency Performance Certificate) 是英国房子的节能报告, 法律上规定, 每个房子都必须要有一个EPC报告, 报告的有效期为十年. 房东在把房子出租或者想卖房的时候, 这个EPC就必须有效, 在一些情况下 比如出租房子的时候, 这个EPC报告还必须符合一些最低标准, 比如房子必须满足 F档(类似及格线)...
  4. 第一次私校家长会: 原来家长比孩子还卷 前几天参加了娃的第一次家长会,和几位家长聊下来,真是个个都很厉害。不光孩子们卷,家长也一样卷,一眼望去基本都是 Dr/博士。娃还调侃我一句:“这有什么的,你不也是 Dr 吗?” 我心里默默想:还好没写学校名字,不然我这野鸡大学的头衔真拿不出手 😂。 私校里真是人才济济,乐器过 8 级的太常见了,卷得不得了。我还问过娃,是想当 big fish in a small pond...
  5. Python 有序数据结构完整指南(Sorted Containers) 有序数据结构在编程中(尤其是算法竞赛和竞技编程)非常实用。在 Python 中,主要由 Sorted Containers 库提供三种有序数据结构:SortedDict、SortedSet 和 SortedList。 深入理解 Python 有序数据结构:从内置到 SortedContainers Python 有序数据结构完整指南 Python...
  6. 如何通过二分查找搜索在区块链上根据时间戳定位区块? 前两天,我想查一下自己在 STEEM 区块链上一些重要记录对应的区块号,比如: 注册了我的账号 #4253590 成为见证人 #20190755 挖到我的第一个区块 #20390040 被孙宇晨大佬代理了 SP #41676911 收到一笔 DAO 收入...
  7. 北爱尔兰的黑暗树篱 Dark Hedges 是摄影的取景之地 老实说, 去北爱尔兰当天我才了解到黑暗树篱这个地方(Dark Hedges), 因为都是媳妇做的功课, 日程安排上了, 我当上司机, 然后被普及了知识. 北爱尔兰的黑暗树篱是我们访问北爱尔兰的第一站, 从机场开车过去大概50分钟(黑暗树篱在机场的北面40英里左右). 黑暗树篱 Dark Hedges地址: Bregagh Rd, Stranocum,...
  8. 一张图告诉你北京的雾霾有多严重 一北京的朋友朋友圈发的: 左上为全新口罩;右上为全新口罩本周一到周五每天室外戴20分钟左右;左下为全新口罩今早室外+公交车戴一个半小时;右下为全新口罩今早开车戴一小时左右. 还有这图 空气污染 – 红色的是严重的.中国,尤其是华北地区,是全球最红的地区,没有”之一”. 本文一共 113 个汉字, 你数一下对不对. 一张图告诉你北京的雾霾有多严重. (AMP 移动加速版本) 赞赏我的几个理由. ¥...

1Panel V1 升级 V2,以及命令注入漏洞 CVE-2025-54424 相关问题

2025年8月7日 15:02

一大早收到腾讯云漏洞通知的邮件,显示 1Panel 命令注入漏洞 CVE-2025-54424,等级是高危,查了下这是 V2 版本才有的漏洞,我 V1 你提示个 der?

不过几个服务器基本都是 Proxy 用,没放什么东西,看了下官方更新记录 V2.0.6 已经修复了这个问题,索性花一点时间把 1Panel 升级到 V2 尝尝鲜。

CVE-2025-54424 目前影响返回仅 V2.0.0 ~ V2.0.5,V1 用户不在此次楼都影响范围内,可以不用升级。当然跟我一样想升级 V2 尝鲜除外。

因为我现在还是 V1.10.32,所以还得先想办法升级到 V2 再升级 2.0.6,好在查了下官方已经有迁移脚本了:

郑重提醒

升级有风险,操作需谨慎。一切操作请提前备份好文件或创建磁盘快照。

安装升级脚本

此处以 X86 架构为例,升级版本为 v2.0.6,如果使用其它加购或要升级到其它版本请参考官方数据迁移脚本 1panel-migrator

# 1. 进入临时目录
cd /tmp

# 2. 下载适用于您服务器架构的二进制文件(以 amd64 架构为例)
wget https://gitee.com/fit2cloud-feizhiyun/1panel-migrator/releases/download/v2.0.6/1panel-migrator-linux-amd64

# 3. 添加执行权限
chmod +x 1panel-migrator-linux-amd64

# 4. 移动至系统 PATH 中并重命名
mv 1panel-migrator-linux-amd64 /usr/local/bin/1panel-migrator

升级1Panel

V2 版本开始,1Panel 划分了主节点和从节点,简单解释如下:

主节点从节点
支持外部访问
包含 1panel-core 和 1panel-agent 两个服务
包含V1社区版所有功能
受主节点管理,不支持外部访问
仅包含 1panel-agent 服务
没有付费购买专业版就可以忽略这个功能了

升级过程分为两步:升级服务 和 升级网站,务必先完成服务升级,再进行网站升级。

# 升级服务
1panel-migrator upgrade core

# 升级网站,需确保 V2 服务启动成功后再执行该命令。
1panel-migrator upgrade website

问题及解决方案

升级指令参见:upgrade.md,过程其实还算顺利,只是我也遇到了一些问题,在此也记录一下我的修复方案,仅供参考:

Q1:升级后PHP网站会更新为静态网站。

这是因为V2开始支持多个PHP网站共用一个PHP容器了,是一个比较大的改动升级,升级1Panel后建议卸载旧的PHP运行环境,重新安装一个新的PHP运行环境,再编辑网站重新设置PHP版本即可。

Q2:升级后反向代理网站的缓存全部关闭了。

此处也是V2版本的一处大改动,重新开启缓存即可。

Q3:升级过程遇到 -bash: docker-compose: command not found 相关错误?

遇到这个问题首先试一下 docker compose --version 能否执行,如果可以建议直接挂在软链接 sudo ln -s $(which docker) /usr/local/bin/docker-compose 重试,否则可能需要重新安装compose。

Q4:升级过程遇到 migrator v1 to v2 core failed, err: SQL logic error: no such table: mcp_servers (1) 相关错误?

这个错误是我 飞牛NAS 里的 1Panel 升级时遇到的,因为飞牛应用商店安装的 1Panel 版本非常陈旧,当初根据飞牛论坛的帖子升级到 V1 最新版后一直没有发现问题,但是其实升级后的 1Panel 是没有 AI 菜单的。

根据错误信息我搜索到了 1Panel 论坛有相关的帖子以及修复方案

# 下载新版v1 1Panel
wget https://resource-fit2cloud-com.oss-cn-hangzhou.aliyuncs.com/1panel/package/stable/v1.10.32-lts/release/1panel-v1.10.32-lts-linux-amd64.tar.gz
# 解压
tar -xzvf 1panel-v1.10.32-lts-linux-amd64.tar.gz
# 然后找到其中的 1panel 二进制文件 替换到你 /usr/loca/bin 下面 然后重启

需要注意的是如果你是 飞牛NAS 应用商店安装的 1Panel 可能重启后会发现依然没有 AI 菜单,此时可以尝试拷贝 1panel 文件到 /vol1/@appcenter/1Panel/bin 再重启应该就有AI菜单并可以升级了。

Enjoy 1Panel V2

虽然虚惊一场,但是也借此机会花了大概一早上的时间。将三台服务器的 1Panel 升级到了 V2,前段时间把博客丢到 NAS 里了,结果今天因为 Q4 那个问题导致博客宕机了一上午,不过问题不大,总算都升级完毕了。

参考链接

WordPress社交营销优化之OpenGraph

2022年5月14日 23:34

最近主题想实现一个分享链接自动解析 URL,并以卡片形式展示目标链接内容的功能,几经调研发现这个需求早在10多年前就已经有相应的标准了,它就是有 FaceBook 提出的 OpenGraph 协议(开放图谱协议)

OpenGraph是什么

我们知道,构建一个网站采用的技术和实现方式并不相同,普通方法无法完美地解析目标页面的基本信息,导致没有 OpenGraph 协议时分享的链接展示形式相当有限,而且看起来没有非常大的点击欲望。

OpenGraph 协议简单来说就是向网页 head 下插入一些统一标准的 meta 元信息,支持标题、描述、缩略图等信息,大大方便了第三方网站和应用地解析出目标页面的基本信息,并加以优化展示链接的目标页面,使其点击率可以大大提升。

比较直观的讲就是,网页只需要加入 OpenGraph 元信息,当页面被分享到微博、FB、Twitter 时,URL 会被智能地解析成一个非常精美地卡片显示:

实际应用

了解了这么多,我们自己的网站和应用如果想要优化链接展示让然也可以读取 OpenGraph 元信息。

其中PHP就可以使用 get_meta_tags 方法从一个URL中提取所有的 meta 标签 content 属性,并返回一个数组:

<?php
    $tags = get_meta_tags('https://biji.io/about');

    // 注意所有的键(key)均为小写,而键中的‘.’则转换成了‘_’。
    echo $tags['title'];
    echo $tags['description'];
    echo $tags['image'];
    echo $tags['geo_position'];
?>

WordPress如何添加OpenGraph元信息

// 附加元信息
function head_append_meta() {
    $metas = [
        'og:title'     => get_the_title(),
        'og:site_name' => get_bloginfo( 'name' ),
        'og:type'      => 'website',
    ];
    if ( is_single() || is_page() ) {
        $metas['og:url']         = get_permalink();
        $metas['og:description'] = get_the_excerpt();
        if ( has_post_thumbnail() ) {
            $meta_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
            if ( $meta_image_url ) {
                $metas['og:image'] = $meta_image_url[0];
            }
        }
        $metas['og:type'] = 'article';
    }
    foreach ( $metas as $key => $value ) {
        echo '<meta property="' . $key . '" content="' . $value . '" />' . "\n";
    }
}

add_action( 'wp_head', 'head_append_meta', 1 );

当然,你也可以访问 The Open Graph protocol (ogp.me) 来了解所有 OpenGraph 元信息和其含义,并灵活地运用到你的网站上。

可以 FaceBook 的分享调试器来调试和预览 OpenGraph 元信息展示能力:分享调试器 - Facebook 开发者

本文参考资料:

【WordPress教程】 什么是 Open Graph(property=”og:type”)_细说外贸推广_杭州 SEO 研究_ISEOer (rrdaj.com)
前端应该知道的:开放图谱协议(The Open Graph protocol) - SegmentFault 思否
The Open Graph protocol (ogp.me)

Image()函数加载base64图片无onload事件的前端兼容方案

2022年4月7日 14:06

Image()函数将会创建一个新的HTMLImageElement实例。它的功能等价于 document.createElement('img')

正常情况下,我们使用下面方法加载图片,是能能够获取到onload事件的:

const img = new Image();
img.src = 'picture.jpg';
img.onload = () => {
  console.log('success');
}

但是如果你需要加载的图片是base64图片时,可能是因为没有请求发出,onload事件是无法执行的。

几经尝试,最终考虑将base64图片转位ObjectUrl再加载,好处是无需后端,纯前端即可兼容。移动端兼容性也非常不错。

具体实现如下:

// base64转Blob
const base64ToBlob = (base64Data) => {
  const arr = base64Data.split(','),
    type = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    len = bstr.length,
    u8Arr = new Uint8Array(l);

  while (len--) u8Arr[l] = bstr.charCodeAt(len);

  return new Blob([u8Arr], { type });
}

const base64 = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
const imgBlob = base64ToBlob(base64)

const img = new Image();
img.src = window.URL.createObjectURL(imgBlob); // blob:http://xxx
img.onload = function () {
  console.log('success')
}

URL.createObjectURL 可能有一些兼容性问题,如果你在使用过程遇到,可以hack兼容一下

function getObjectURL(blob) {
  var url = null;
  if (window.createObjectURL != undefined) {
    url = window.createObjectURL(blob);
  } else if (window.URL != undefined) {
    url = window.URL.createObjectURL(blob);
  } else if (window.webkitURL != undefined) {
    url = window.webkitURL.createObjectURL(blob);
  }
  return url;
}

本文参考资料:

Image() - Web API 接口参考 | MDN (mozilla.org)
使用img.onload事件加载base64图片的兼容问题 - 简书 (jianshu.com)
vue 上传图片,转base64取不到.onload的值 - 小蘑菇123 - 博客园 (cnblogs.com)

Adams主题问题收集与更新计划

2020年6月1日 00:25

2017年6月20日(v1.0.9)起,主题的更新、发布就已经迁移到了Github,通过Github收集了48条issues、16条PR以及340多个Star,非常感谢关注和使用Adams主题的每一位博主。

虽然我的博客已经近3年没有新的文章产出了,但是博客里的每一条留言我都有认真在看,每一个问题我也都尽可能的给予回复并尝试提供解决方案。Github也尽可能的去解决每一个issues,这篇文章仅仅是记录主题现有问题收集,以及更新计划。

问题

更新计划

  • [!]English支持:不是特别急的一项更新,计划添加多语言支持。
  • [!!]二维码API接口支持更换:当前默认使用的是qrserver.com的接口,可能部分地区访问会有些慢,所以考虑支持自定义API接口地址
  • [!]CSS重构:计划使用Less或Sass重写CSS以解决现有CSS模块混乱、不同模式切换不够平滑的问题

暂时就这么多吧,这是一篇2018年11月19日的草稿改的一篇水文,希望还够解渴。

6.1快乐

❌