普通视图

Received yesterday — 2026年3月14日

开源项目目录📇

作者obaby
2026年3月14日 16:14

部分开源项目源码。

PHP8 探针项目(包含WP插件)

专业的服务器监控和管理工具,提供实时系统监控、性能测试、数据库检测等功能。本项目包含两个版本:独立PHP探针和WordPress插件版本。

 项目结构

php8-probe/
├── phpprobe.php              # 独立PHP探针(可直接访问)
├── php-probe-widget/         # WordPress插件版本
│   ├── php-probe-widget.php  # 主插件文件
│   ├── includes/             # 小组件类
│   ├── css/                  # 前端样式
│   ├── js/                   # 前端脚本
│   └── README.md             # 插件详细文档
├── LICENSE                   # 许可证
└── README.md                 # 本文件

🚀 快速开始

方式一:独立PHP探针

  1. 将 phpprobe.php 上传到您的Web服务器
  2. 通过浏览器访问该文件即可查看服务器信息
  3. 支持实时监控、性能测试、数据库检测等功能

特点:

  • ✅ 无需安装,直接使用
  • ✅ 单文件部署,简单方便
  • ✅ 支持多平台(Linux、Windows、macOS、FreeBSD)
  • ✅ 实时系统监控

方式二:WordPress插件

  1. 将 php-probe-widget 文件夹复制到 wp-content/plugins/ 目录
  2. 在WordPress后台激活”服务器监控探针”插件
  3. 进入 外观 > 小组件 页面
  4. 将”服务器监控探针”小组件拖拽到侧边栏
  5. 配置显示选项和主题设置

https://gitee.com/obaby/php8-probe


结巴分词HTTP服务

基于Flask和jieba的本地HTTP分词服务。

https://gitee.com/obaby/baby-jb-server


WordPress 博客数据分析工具

这是一个用于分析 WordPress 博客数据的 Python 工具,可以通过 WordPress REST API 获取并分析博客的文章和评论数据。

功能特性

  • 📝 统计指定年份发布的文章数量(按月统计)
  • 💬 统计指定年份的评论数量
  • 🏆 分析评论用户的评论数排行
  • 💾 将分析结果保存为 JSON 文件

https://gitee.com/obaby/baby-wp-data-analysis-tool


微信双开脚本 (WeChat Dual Launch Script)

一个用于 macOS 系统的微信双开自动化脚本,通过复制微信应用并修改 Bundle ID 实现真正的微信双开功能。

📋 功能特性

  • ✅ 一键双开 – 自动完成所有设置步骤
  • ✅ 智能检测 – 自动检测已存在的 WeChat2.app
  • ✅ 安全可靠 – 完善的错误处理和权限检查
  • ✅ 彩色输出 – 友好的命令行界面
  • ✅ 进程管理 – 查看和管理微信进程
  • ✅ 自动化设置 – 无需手动执行复杂命令

https://github.com/obaby/baby-wechat


Baby 足迹地图

 

简介:

 

基于百度地图的足迹地图。
启动服务之后,先去后台 地图 key 设置页面,添加百度地图浏览器端 ak!
启动服务之后,先去后台 地图 key 设置页面,添加百度地图浏览器端 ak!
启动服务之后,先去后台 地图 key 设置页面,添加百度地图浏览器端 ak!

为了防止 js 地址解析受限,需要同时添加服务端 ak!
为了防止 js 地址解析受限,需要同时添加服务端 ak!
为了防止 js 地址解析受限,需要同时添加服务端 ak!

添加之后,访问: http://127.0.0.1:10099/api/location/process-my-location/ 地址刷新数据库的地点坐标信息,后续无需再通过 js 接口进行解析!

https://github.com/obaby/BabyFootprintV2


Simple microblogging

Add a microblog to your site; display the microposts in a widget or using a shortcode. 增强版优化页面显示,增加分页功能。wp微博插件。

https://github.com/obaby/Simple-microblogging-wordpress-plugin


Baby WP 评论强化拦截插件

 

一个强大的WordPress评论过滤插件,支持字数限制、中文检测、关键词过滤等功能。

插件信息

 

  • 插件名称: Baby WP 评论强化拦截插件
  • 版本: 1.0.5
  • 作者: obaby
  • 作者网址https://h4ck.org.cn
  • 许可证: GPL v2 or later

功能特性

 

🛡 评论过滤功能

 

  • 字数限制: 设置评论的最少和最多字数
  • 中文检测: 要求评论必须包含中文字符
  • 关键词过滤: 支持自定义关键词和WordPress设置的关键词
  • 正则表达式支持: 支持使用正则表达式进行高级匹配

⚙ 管理功能

 

  • 简单设置界面: 直观的管理后台设置页面
  • 错误消息自定义: 可以自定义各种错误提示消息和标题
  • 统计信息: 记录评论过滤统计信息,支持重置功能
  • WordPress集成: 与WordPress讨论设置完美集成,支持实时预览
  • 设置验证: 完整的输入验证和数据清理机制

🔧 技术特性

 

  • 简单架构: 采用简单的面向对象架构,易于维护
  • 性能优化: 高效的过滤算法,不影响网站性能
  • 兼容性: 支持WordPress 5.0+版本,PHP 7.4+
  • 多语言: 支持多语言环境
  • 数据安全: 完整的输入验证和清理机制
  • 错误处理: 完善的错误处理和日志记录

https://github.com/obaby/baby-wp-comment-filter


WinRAR-Keygen

 

1. What is WinRAR?

 

  • WinRAR is a trialware file archiver utility for Windows, developed by Eugene Roshal of win.rar GmbH.

  • It can create and view archives in RAR or ZIP file formats and unpack numerous archive file formats.

  • WinRAR is not a free software. If you want to use it, you should pay to RARLAB and then you will get a license file named "rarreg.key".

  • This repository will tell you how WinRAR license file "rarreg.key" is generated.

2. How is “rarreg.key” generated?

 

  • WinRAR uses a signature algorithm, which is a variant of Chinese SM2 digital signature algorithm, to process the user’s name and the license type he/she got. Save the result to “rarreg.key” and add some header info, then a license file is generated.

https://github.com/obaby/winrar-keygen


Baby Device Manager

 

一个功能强大的WordPress设备管理系统插件,支持设备分组管理、设备信息管理、自定义排序、状态跟踪等功能。

功能特点

 

  • 设备分组管理
    • 创建和管理设备分组
    • 自定义分组排序
    • 分组描述信息
  • 设备管理
    • 添加/编辑/删除设备
    • 设备状态管理(在售、停售、已售出、维修中、已报废)
    • 设备图片和产品链接
    • 自定义设备排序
    • 设备描述信息
  • 前端展示
    • 响应式布局
    • 按分组分类显示
    • 支持多种排序方式
    • 美观的界面设计
    • 支持自定义每行显示设备数量(1-6个)
  • 其他功能
    • 图片管理:支持设备图片上传和显示
    • 产品链接:支持添加产品详情页链接
    • 状态跟踪:支持多种设备状态管理
    • 自定义排序:支持设备分组和设备的自定义排序

https://github.com/obaby/Baby-Device-Manager


RSS Beauty

 

为 WordPress RSS Feed 提供美观的网页展示样式(基于 RSS.Beauty 的 Pink 主题)。

项目功能

 

  • RSS 样式化:在 Feed 中注入 XSL 样式表,浏览器打开 feed 地址时以 HTML 页面形式展示,而非原始 XML。
  • Feed Content-Type:将 feed 的 Content-Type 设为 application/xml,使浏览器按 XML 解析并应用 xml-stylesheet
  • XSL 地址:样式表使用插件目录下的静态文件 pink.xsl。需在 OpenResty/Nginx 中为 .xsl 配置正确的 Content-Type(见下方配置说明),否则浏览器可能不按 XSL 解析。
  • 主题:内置淡粉色(light pink)页面背景与适配的文字颜色。

https://cnb.cool/oba.by/rss-beauty


WP-UserAgent

 

Contributors: obaby
Donate Link: https://oba.by
Tags: useragent, user-agent, user agent, web, browser, web browser, operating system, platform, os, mac, apple, windows, win, linux, phone
Requires at least: 2.0
Tested up to: 6.3
Stable tag: 16.06.99

IP 查询方式(归属地)

 

插件支持四种 IP 查询方式,可在 设置 → WP-UserAgent 中选择:

方式 说明
IP2Location 使用 IP2Location 数据库(需将 BIN 文件放入 show-useragent/ip2location_db/db/),依赖 Composer
CZDB 使用纯真 CZDB 数据库(需授权与 db 文件放入 show-useragent/czdb/db/),依赖 Composer
ip2region 使用 ip2region xdb(仅内置 ip2reginapi,不依赖 Composer)。需将 xdb 文件放入 show-useragent/ip2region_db/,文件名:ip2region_v4.xdbip2region_v6.xdb
纯真QQWRY 使用 qqwry_api(qqwry.dat + ipv6wry.db),无需 Composer。数据文件放入 show-useragent/qqwry_api/ipdata/

选择 ip2region 或 纯真QQWRY 时不会加载 vendor/autoload.php。若选择 IP2Location 或 CZDB 时 vendor 加载失败,插件会自动回退为 ip2region 模式,避免站点白屏。

Description

 

WP-UserAgent is a simple plugin that allows you to display details about a computer’s operating system or web browser that your visitors comment from.

It uses the comment->agent property to access the User-Agent string. Through a series of regular expressions, this plugin is able to detect the operating system and browser which can be integrated in comments or placed in custom places through your template(s).

I’m adding new web browsers and operating systems frequently, as well as updating and optimizing the source code. Your feedback is very important, new features have been added by request, so if there’s something you would like to see in WP-UserAgentleave a comment, and I’ll see what I can do.

WP-UserAgent was written with Geany – http://www.geany.org/
Images created with The Gimp – http://www.gimp.org/

注意:

  • 使用 CZDB 时:若更新替换纯真数据库,请同步更新 show-useragent/ip2c-text.php 中的 $key = 'n2pf2+PrE1y9I55MjdpLpg==';
  • 使用 ip2region 时:将 xdb 文件放入 show-useragent/ip2region_db/ip2region_v4.xdbip2region_v6.xdb),无需 Composer。

https://cnb.cool/oba.by/wp-useragent

 

 

修理修理几个手机

作者Hary
2026年3月14日 15:36

 距离上次更新已经一个月了,好像还没有间隔这么长时间断更过。主要还是今年春节放假时间太长了,前后将近放假一个月了。在家的时候基本上就跟家人在一起很少看手机,也就没有动力来更新博客了。
 本来公司通知的是3月10号上班,我本来最开始抢的是3月4号的票,后来了解了一下,挺多同事都是10号才过来,我又改了个票,从4号改到了8号,上周末才过来,新的一年的第一周已经过去,5天一过,又是一周。一天一天上班过的感觉比在家过的还快,还有一个半月,五一假期又能回家了。
 我之前用的有一个小米11的手机,一直做备用机。过年回家拿回家了,给我奶奶用了,把她原来的vivo Z1换了下来,原来那个手机太卡了。她日常用来微信视频通话和刷抖音,换下来的vivo Z1我就拿回来了,不安装任何APP,专门用来开热点使用。
 回去之前又购入了一台iPhone17,回家给我媳妇儿的新年礼物。然后我媳妇儿这边又退休下来一个iPhone13 Pro,我也拿回来了,专门收破烂,哈哈,之前她就就一直吐槽,他的iPhone13 Pro不存电,这次我拿回来直接在网上买了个电池,好像是有一个活动吧,然后100多拿下,日常是210左右,这带的还有安装服务,只贵了10块钱,周二的时候快递一到就去附近店里让人家给换上了,直接满血复活,续航杠杠的,备用机+1。

 再一个就是我的主用机小米14,用了有两年半了,日常工作用手机还是挺多的,算是重度使用,现在基本上就是需要一天三充。干脆也换个电池得了,然后就单独买了一块电池,回来自己换,实际操作下来倒也不难,只不过可能是第一次没经验,没把握好尺度,有一个角还没有完全撬开,抬了一下后盖,直接给后盖玻璃干碎了。。。又紧急在闲鱼淘一个小米14的原装拆机后壳,晚一会应该快递就到了,再给它换上,这样密封性良好,防水好一点吧。


 这个电池说是小米15移植到小米14和小米13使用的,比原装电池容量大,用了两天确实续航提升不少,又能再战三年,等着换小米20。

Received before yesterday

她不爱他

作者obaby
2026年3月12日 21:50

或许,如果不是那场矛盾,从来都不曾那么深入的了解一个人的内心。也不曾知道在他的内心里怎么看待他的母亲,更不曾知道那种无所谓到底是因为什么。

他以前对于那种父爱或者母爱并没有太多的感觉,只是在一个平平无奇的农村的家庭生活,活着,长大,离开。离开之后他竟然不是那么想回去了,有时候一些莫名其妙的对比总是让人心绪不宁,情绪低落。

在漫长的冷暴力之后,终于在某一天,背对着他的时候他用手指从背后轻轻戳了自己一下。转过身,看着他表情依然凝重,感觉还是那么的沉默。终于过了良久,他开口说:“我最近情绪不是很好,感觉有点被忽略了”

在那一刻终于那块冰开始融化,两个人又聊到之前的种种过往。那种被忽略的人生,那种被贴了无数的标签的前半生,以及父母那种所谓的都是为了你的那种付出,为了让你产生愧疚感拼命去pua你的那种种的行为和话语。

“有时候,我觉得挺不公平的,对你来说。我内心也挺生气的”我说,“去年你妈过生日的时候,去了那么多人,二十几号人,你看她那个表情,全程耷拉着脸。咱们一家人下着大雪,跑那么远去给她过生日,她连个好脸色都没有。关键是那天也花了不少钱吧,路费加上乱七八糟的礼品,吃饭什么的得一千多吧。”

“不止,差不多两千吧。”他转过头不再看我,“我已经不在乎了,其实,我回去,只是为了回去。以前的时候总是觉得想在家多待一会儿,后来,我的心态变了”

“为什么?我有时候,都觉得她没资格让大家对她那么好。”

“从宝子出生的那一天开始吧,那时候,我脚骨折还没好。孩子出生了,她和姐姐来看咱们。不是没资格,是不配,真的不配大家对她那么好。”

“我记得,当时宝子从产房抱出来,她在外面等着,看了一眼发现是个闺女就走了。我那时候还晕乎乎的,麻药的劲还没过去。我觉得她不关心我们俩无所谓,但是她最起码该关心你啊。你那个样子,一只脚在医院里蹦来蹦去。”

“我当然记得,从她看了一眼走了之后,我的心就开始冷了,为了带她们去吃饭,我一只脚蹦着带她们去二楼的餐厅,还得给她们打饭。”他顿了一下,接着说“吃完饭,就开始要求往家走。你知道那时我的心情吗?那时候是真的死心了。我一只脚蹦着带她们回家,看她们收拾好东西,然后给她们打车送她们离开。我再一只脚蹦着去厨房给你准备吃的。我从来没想过她会这么冷漠,以前结婚的时候,为了办婚礼,我说断绝关系,那不过是吓唬她。而这件事情之后,她就彻底死在了我的心里了。有时候你老嫌弃我不给她钱,其实我就是不想给她。当然也不能让她没得花。”

“我也不给我爸妈钱,给了她们就作。”我附和。

“孩子从出生到现在,她一共就看了一个月。剩下的都是你爸妈给看大的,虽然有时候她们说话也挺难听的,但是我知道那是真的对孩子好。所以我也不介意,只是我妈这个态度,来看了一个月孩子。一周之后就开始嚷嚷着要回家。从此,我内心没了任何的感情。很多时候这种场合,我只是为了出现,至于她什么表情或者什么心情,我内心已经没了任何的波澜。甚至,很多的事情我都不再关心了。她说什么,或者做什么都不再重要了。等哪天不在了,我甚至内心都说不上痛苦。”

凌晨三点的夜,格外的宁静,窗外公路上甚至连车辆都没有了。

“以前,我觉得她不在乎我,其实,她从来不在乎任何人”

是啊,她不爱他。

二十七年前的家书,信封里的慢时光

作者崔话记
2026年3月11日 13:22

  前阵子在家过年的时候,跟老弟打扫屋子整理旧物,找到几封积灰的家书,是我和老弟老妹在大学期间给家里写的信。其中我写的有五六封,信封积灰破旧泛黄,把信纸抽出来时,里面的信纸仍然完好,字迹也清晰。这些信能保存到今天,其实并不容易,这得益于我爸的精心保存。现在的房子是十几年前建的,更早的老房子彻底拆除了,搬家的时候这些东西没有弄丢。农村的简陋房子里,没有书柜,没有专门的收藏空间,只是在衣柜的其中一个格子里,存放着这些书信和几本旧书。

家书

  身为家在农村的80后,上大学的时候,家里没有电话、没有网络,手机也还没普及,和家里的联系就靠写信。一封信从寄出到被收到,往往要半个月,镇里的邮递员隔几天才去一次村里,从村里到家里又还要耽搁几天,比城市到城市的通信要多花一倍的时间。但也不常写,一年一两封的样子。

  回头想想,那些信写得都很认真。因为知道下一次联系要很久之后,尽量多写一点:宿舍的生活、食堂的饭菜、天气冷不冷、见到了什么朋友等等,很多在今天看来微不足道的小事,当时却像是必须郑重记录下来一样。

家书

  那些名人的家书,具有历史价值或文学价值,可以出书或在博物馆展出。我们普通人的家信,只对亲历的当事人是珍贵的,更像是时间留下的一点私人痕迹,但这些痕迹其实非常脆弱。随着年岁流逝,随着搬家装修或其它意外,可能会慢慢损毁丢失,等到某一天想起时,甚至都说不清是在哪一年、哪一次搬家时消失的。我也曾经经历过租住的房子的发生消防事故而损失一些珍贵信件的事情。

  书信应该是七零后和早期八零后的共同记忆吧,八五后们上大学可能已经开始普及电话和手机了。我刚上大一的时候,整栋宿舍楼只有一部拨号电话,就放在楼管门外,印象中是有人打电话来了,楼管大叔就会扯开嗓门喊“六零四~,六零四~,张某某,电话~”,楼上的学生回喊“来啦~”然后下楼去接电话。后来每两层楼有一部公用的IP电话,主要用于拨出。还有少数学生用上了“高科技”的BP机。好像是到大三的时候,宿舍里已经装上了固定电话,并且可以拨号上网。大学毕业后我用上了手机,西门子的功能机。短短四五年,从邮局寄信,到打电话、传呼机、固定电话,到手机,进步之快,给了我这个农村人极大的震撼。

  电话打完,很快就记不起我们说过什么了,而书信,让我们三十年五十年后,还能看到当时每一个字说了什么,这种感觉很神奇,很独特。

  听闻过人民大学的家书博物馆,他们会征集展出民间家书,进行完善的保管和电子化,我觉得这是一件很有意义的事情。我倒是希望我的母校厦大也能学习一下这个做法,比如向校友征集他们在校生活期间的书信、明信片、日记、老照片等,可以展出和出版,让现在和以后的人们对当年的厦大生活多一个角度的观察。

  我自己的信件,最有可能在将来某个时候全部公开在网站上,不为别的,只为人间到此一游的标记。

老机伏枥,志在千里

作者崔话记
2026年3月9日 20:42

  2021年买的老米11,不知不觉已经服役快满5年了。平时没有玩大型游戏的需求,一般app都能正常用,偶尔卡顿也还算能忍。就是电池老化很厉害,不满电都不敢出门,满电持续使用两个小时就没了,所以出门远一点就用超级省电模式将就将就,毕竟出门在外也就地图和微信是刚需。我是真能将就啊,不得不佩服我自己,其实就是懒。

  年前,考虑到要回老家,老家天气冷,电池肯定更加不经用,是时候解决一下这个问题了。于是在国民购物app花了80多了买一块电池,商家提供了一堆零零碎碎的小工具,我也看了一遍拆机换电池的视频教程,毅然决定去维修店,我这山猪干不了细活。维修店帮我换了电池,也把松脱的摄像头模组重新上胶水粘了粘。修完给用橡皮筋五花大绑了起来,我就在这橡皮筋的缝隙内使用了两小时的手机。

老米11

  老机伏枥,志在千里。从深圳到老家来回,这台老米,物理意义上跨越数千里为我服务了,我给它一个表扬不为过。

  新换的电池还是挺给力的,老家的天气里没有扯后腿,也没有充电焦虑了,电量告警也从20%改为5%了。这台5年老机,还得再为我发光发热若干时日。至于为啥不换新机,可以说我是一个恋旧的人,真实原因可能是手机上的数据转移有些小麻烦,尤其是大量的小游戏app和我的游戏进度记录。还有谜一样的微信聊天记录,迁移之后往往一些图片或文件莫名丢失。虽然这些似乎也没那么重要。

  人性处处充满惯性,依赖惯性,无论是对手机的使用,还是人与人的相处,或是思维的模式。根深蒂固的惯性,也许是舒适区,也可能是捆住手脚的绳索。

原则

作者obaby
2026年3月9日 15:41

青科大门口有两个保安,一个是男人,另外一个也是男人。

然而,这两个男人在当门卫这件事情上,行事风格却迥然不同。一个年纪稍微大点的,相对来说比较随和,一般停车给看下访客邀约的记录就可以了。然而,另外一个年轻小胖,在这件事情上异常较真,哪怕给看了访客申请记录还是会追着问半天,去哪里,找个老实等等。哪怕已经见过无数次了还是乐此不疲。

最近大学开学,学校的预约系统无法使用了,每次预约都提示预约已满。那就只剩下一条路,下车登记。周六的时候,门口是年纪稍微大点的保安,说了以下也就进去了。

年后为了巩固宝子练球的效果,已经连续加了好几次课。当然效果也是有的,能看到比较大的长进了。不过回忆之前雪球的历史,仍然让人愤恨,对象一直让着要去原来学🎾的地方,找教练对峙异常,要回点钱来。然而,这东西有怎么评判是教练教的不好?他也完全可以说是宝子太笨了。

目前在这个新教练这里已经交过两次钱了,又花了6000块钱,才把之前这2万块钱学的错误的动作给纠正过来。周六宝子的钢琴课老师有个测评,钢琴课挪到了周日上午十一点多。下课的时候,网球教练问周日能不能继续加课,刚开始也说十一点,后来才想起来十一点有课。一通算计下来,总算是在十二点半到一点半挤出来了一个小时。

不过,这课间时间稍微短了点。十二点零五下课,需要在十五分钟内干到学校,并且在上课之前带宝子围着球场跑完两圈。

桥底等红绿灯的时候,因为红灯时间稍微长了点,又不想非常用力的踩刹车就挂到了空挡上。然而,等起步的时候,一脚油门下去,车没动。转速上去之后,下降的有点慢。想拉到d档,以为拉进去了,又点了下油门发现根本没挂进去。唉,好尴尬啊。不过后面的保时捷竟然没催。等转速下降的功夫,先打开运动模式吧,实在是丢人。终于转速掉下来之后,赶紧拉到d档,一脚油门窜了。此时再看后视镜,返现后面的保时捷已经准备变道了。

有时候一辆车开习惯了,偶尔换一下真的不适应。粉皮的auto hold感觉比大白的auto hold要安静很多,所以开大白的时候不习惯开auto hold,于是有时候红绿灯太长了就切空挡。不过有时候容易忘了在空挡,总想踩油门直接就走了,直到踩下去车没动才发现,哦吼,不在d档。

赶到学校的时候,时间刚刚好。然而,在进门的时候,遇到小胖了。登记之后,非得让给老师打电话。

好不容易打通了,小胖结果电话,开始沟通,问老师的工号。这当时我也有点震惊,这都登记了,至于跟查户口似的?

门口没车的情况下,一个破登记登记了十几分钟。等进校门到网球场已经12点55了。

开门下车,正好老师也刚到,下车第一句话,就是『你别介意,进来了就行了』

『没事,你先去跑步吧』我跟宝子说。

『那哥们问我工号,当时我就怒了。这跟查户口似的』老师说『都跟他说了还不行,还追着一通问,如果不是你在哪等着,我真想骂他一顿』

『没事,有的人就这么较真』我说。

聊了会儿,宝子也跑完了。宝子学网球,按理说应该没我啥事,然而,实际上,在教练给宝子纠正动作的时候,我还得给宝子抛球。此时,教练就在宝子边上的特定位置,观察宝子的动作,距离,步伐等等一些列的动作是否到位。

这一节课下来,终于能开始隔网打回和了。为了能达到这个程度,所有的人都付出了代价,宝子付出了20节课的体力,我多花了20节课的钱。如果当初找个好教练,这一切都可以避免的。之前的教练,来回的带着做差不多的事情,教差不多的动作,一切都毫无意义,此时需要一个人有原则的时候,原则这个东西反而没了。

下课开车带宝子回家,到门口缴停车费的时候,那个小程序又进入了死循环,开始不断的跳转,跳到最后就是一个支付失败的页面,在这之前,我连支付的账单金额和支付流程都没看到。终于在扫了数次码之后,终于出来了金额。

这坡系统,我交着停车费,正常登记了。不但不能自动放行,还得一通盘查,真是特娘的智障。

浅谈对人工智能的未来畅想

作者陶其
2026年3月9日 09:07

感谢订阅陶其的个人博客!

没座!这又是一篇关于人工智能的闲扯淡。

不是我只想写人工智能,是最新这玩意儿被炒的话题度太高了,高到仿佛要 毁灭 拯救世界了一样。

最近又有一个很有意思的东西出现了:OpenClaw

无论是程序员还是互联网科技公司、无论是否从事编程工作都要搞OpenClaw。

因为这个东西的Logo是一个小龙虾,所以使用OpenClaw被称为“养龙虾”,使用人被称为“养虾人”。

这东西有什么用呢?

用通俗易懂的话来说。

之前无论是豆包、还是DeepSeek、亦或者Gemini,都是对话式的大模型,即便是即梦AI这种的全模态模型,也只是一个能输入产出更多格式的大模型。它们更多能做的就是完成你的单一指令,并给你提供方案。因为他们无法操作浏览器之外的“世界”。

我在这里为不太了解的同学用大白话科普一些概念:

  • AI Agent(AI智能体): 是整合了大脑(思考核心)、记忆、规划、(内置)技能的完整智能实体,是完成任务的核心载体;
  • AI MCP(AI世界的USB口): 是 AI 连接外部世界的通用接口标准,是所有能力互通的基础;
    • 比如:飞书云文档开发并开放了MCP,那么你的AI大模型就可通过配置好的飞书MCP去操控你的飞书账号里的文档等等,就像是你在你的电脑上插上一个U盘,电脑可以对U盘内的文件进行读写一样。
  • AI Skills(AI技能): 是基于标准封装的原子能力,是 AI 能落地做事的具体本领,赋予AI在某个领域的专业技能。
    • 比如:你把从各种销售合同单汇总数据,然后使用某些公式换算统计成最终可用于汇报的统计报表,并输出成PPT的一系列操作步骤封装成一个Skills。然后告诉AI,让AI给你一份统计报表,AI就会调用这个Skills,并按照步骤一步一步执行。当然Shills的用处远远不止这么固定。

那么OpenClaw又是什么呢?

OpenClaw 是把前三者打包好的、开箱即用的 Agent 运行平台,让普通用户也能快速用上 AI Agent 的能力。

一句话讲:你可以用 OpenClaw 这个平台, 搭建专属 AI Agent,这个 Agent 通过 MCP 通用标准,调用各类 Skills 技能包,帮你完成复杂的真实世界任务。

那这么看来,OpenClaw真的是个很🐂🍺的东西呢,甚至有些人表示这个“龙虾”完全可以成为自己的“数字分身”。

很多人通过它完成了自己因为没有掌握对应技能而能完成的事情。

  • 比如:6年纪小朋友通过对话,让这只“龙虾”在短时间内完成了一个具有完善功能和UI的“番茄钟”软件的开发;
  • 又比如:有律师把案件的资料交给“龙虾”,让龙虾查阅对应的法律条文并分析过往类似公开案例,分析这个案子怎么打、往哪个方向打,胜率最高、利益最大化,然后让给出全套文稿。

看起来,这只“龙虾”确实能做不少事情,甚至能一定程度的替代人类完成部分工作。

但是我们不能只看表面,不看本质。

使用 OpenClaw 的代价是什么?

外行人可能会认为,付点电费的事情。

不不不,远不止这些。

首先,是部署。

人们为了方便使用这只“龙虾”,更多的希望在本地部署这只“龙虾”,这样才能操控本地的文件或者什么的。

那么就需要一个载体。

目前人们选择更多的是:苹果的 mac mini。

为什么不用已有的电脑?

这就牵扯出使用OpenClaw的第一个问题:安全与隐私

你的个人电脑或者工作电脑,或多或少已经存了一些相对重要的或者隐私的文件。

如果把 OpenClaw 部署在这种电脑里,OpenClaw 为了操控你的电脑和文件,你必然要开放对应的权限。

那么你电脑里的那些文件就很有可能被它读取或者改动,甚至删除。

这个风险是存在的,所以很多人都会在全新的电脑里部署 OpenClaw。

但同时,你如果想要这只龙虾能操控你的账号里的东西,必然需要给它账号密码,那么这依旧是有风险的。

比如,有一个老哥,把自己钱包的账号交给了自己的 OpenClaw,结果被盗刷了或者被OpenClaw支付了他没有想支付的东西,等他发现时,信用卡都刷爆了。

而第二个问题。

这只龙虾是如何思考的呢?

我们前面一直没有提到,这只龙虾是如何思考的。

目前主流的方案还是接入市面上的AI Agent提供商的API。比如:阿里的Qwen、DeepSeek、豆包或者国外的GPT、Gemini等。

那么这又会带来另一个问题,调用大模型的费用问题,即Token的消耗

Token,你可以理解为你调用AI提供商提供的大模型时所付的费用。

可以这么粗浅的理解:

  • 一个英文单词 ≈ 2-3个Token;
  • 一个中文汉字 ≈ 1-2个Token。

而无论是你发出去的提示语,还是AI的思考过程、思维链、过往的上下文,还是最终的输出,都要消耗Token。

像GPT或者DeepSeek这种对话式大语言模型,一次回答大约消耗几百到小几千不等。

而 OpenClaw 这种综合体,为了更好的理解你,它会把很多很多的历史沟通记录和上下文带入调用大模型。

所以 OpenClaw 可以说非常非常烧Token。

有人说,OpenClaw 的一次对话动辄几万个Token,甚至有时一个回答会烧几十万的Token。

虽然各家对Token的定价不同,但是基本上一次对话几块钱,甚至十几块钱是没跑的。

那么,如此烧钱的 OpenClaw,如果只用来完成一些简单的demo或者日常简单任务的处理,那么花费可能是普通人受不了的。

如果用来工作呢?那必然需要反复的调试、训练、纠正,光这笔费用,就不比直接聘用员工的花费低。

所以,目前想让 OpenClaw 充当生产力,暂时还做不到,但是以后不保准。

但是 OpenClaw 的出现,就像是 钢铁侠的贾维斯 一样,至少给AI的发展带来了一个方向。


所以,由此我不由对未来的人工智能发展产生联想。

未来的人工智能,且不论那种大型的智脑。

我想必然会有如下的一种发展方向。

你的电脑或者电脑旁边会有一台专门用于AI跑的机器,这个机器不能联网,或即使可以联网,但是也只能访问互联网数据,不能上传本地数据。

然后人工智能的核心思考全部都在这台机器里,不需要消耗线上大模型的Token。

真正做到使用AI的代价只是设备、网络和电费。

而且这个设备可能因为批量生产而价格降到电脑相同的价格。

我感觉只有这样,普通人才能真正的使用的起AI为自己的助手。

到时候,估计个人能拥有消费级的AI;企业能拥有企业级的AI;甚至大型企业或者先进的城市估计可能会出现成熟的大型智脑。

那个时候才真是未来已来。

但如果那时候个人想使用大模型,还只能给这些大模型提供商缴纳Token“税”,那估计普通人将永无翻身之日。

喜欢浅谈对人工智能的未来畅想这篇文章吗?您可以点击浏览我的博客主页 发现更多技术分享与生活趣事。

Git命令汇总

作者Echo
2023年12月21日 23:18

前言

单纯的对一些经常用的 git 命令进行总结,方便以后查询使用,没啥营养

1. 基础

git add          # 提交到 暂存区
git commit -m "commnet"    # 提交到 版本库
git branch -M main # 重新命名分支
git remote add origin # 添加远程仓库
git pull origin master # 从名为 origin 的远程仓库的 master 分支拉取最新的提交,并将其合并到当前分支
git push origin main   # 将本地仓库的文件push到远程仓库(若 push 不成功,可加 -f 进行强推操作)
git diff read.txt # 查看文件变化

2. 版本回退

git reset --hard HEAD^ # 恢复到上一个版本
git reset --hard HEAD~10 # 恢复到网上10个版本
git reset --hard commitID # 恢复到指定commit版本

3. 撤销修改

git restore  # 工作区
git restore --staged  # 暂存区,工作区需要执行上一步 add
git reset --hard HEAD^ # 工作区、暂存区、本地仓库都回退 commit

4. 删除文件

rm file
git add file
git commit -m ""

5. 分支操作

git branch test # 创建分支 test
git branch # 查看当前分支
git switch -c test # 创建test分支,然后切换到test分支 git branch test git checkout test
git switch master # 切换
git merge test # 合并指定分支到当前分支
git merge --no-ff -m "no-ff" test # 禁用快进(fast-forward)合并,强制创建一个新的合并提交
git branch -d test # 删除分支
git branch -D test # 强制删除
git log --graph # 查看分支合并图

6. 保存和恢复

git stash save "Your stash message" # 保存工作进度
git stash list # 查看 stash 列表
git stash apply [] # 应用
git stash drop [] # 删除
git stash pop [] # 应用并删除
git cherry-pick # 将一个或多个提交从一个分支应用到另一个分支

7. 多人协作

git remote -v # 查看远程库的信息
git switch -c dev origin/dev # 本地创建一个新分支 dev,并将其设置为跟踪远程仓origin/dev 分支
git branch -u origin/dev dev # 本地分支 dev 设置为跟踪远程仓库的 origin/dev 分支
git push origin master   # 将本地仓库文件push到远程(若push不成功,可加-f进行强推)
git pull origin master # 从远程仓库origin的master分支拉取最新提交,并将其合并到当前分支
git rebase # 把本地未push的分叉提交历史整理成直线

8. 标签

标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
git tag v1.0 # 打一个新标签V1.0,默认是打在最新提交的commit上
git log --pretty=oneline --abbrev-commit # 每一行包含了一个提交的简略哈希和提交信息
git tag v0.9 f52c633 # 在特点commit上打标签
git tag -a v0.1 -m "v0.1 released" 1094adb # 创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag # 查看所有标签
git show v0.9 # 查看标签信息,标签不是按时间顺序列出,而是按字母排序
git tag -d v0.1 # 删除标签
git push origin v1.0 # 推送标签到远程
git push origin --tags # 一次性推送全部尚未推送到远程的本地标签
git push origin -d tag tagName # 删除一个远程标签
git ls-remote --tags origin # 查看删除远程tags执行效果

讯飞免费星火大模型部署教程

作者Echo
2023年11月25日 12:23

前言

发现两个多月没写文章了,不过考试月也没啥好写的。

最近大模型这么火,正好有个项目用到,于是便水一篇教程吧。

此篇教程为 科大讯飞的星火大模型 部署教程,部署完成后即可与智能助手进行聊天。

这里是关于部署到服务器端,如果有其他需求可以查看官方文档。

大模型简介

大语言模型 (英语:large language model,LLM) 是一种语言模型,由具有许多参数(通常数十亿个权重或更多)的人工神经网络组成,使用自监督学习半监督学习对大量未标记文本进行训练[[1]](https://zh.wikipedia.org/wiki/大型语言模型#cite\_note-1)。

大型语言模型在2018年左右出现,并在各种任务中表现出色[[2]](https://zh.wikipedia.org/wiki/大型语言模型#cite\_note-Manning-2022-2)。

尽管这个术语没有正式的定义,但它通常指的是参数数量在数十亿或更多数量级的深度学习模型[[3]](https://zh.wikipedia.org/wiki/大型语言模型#cite\_note-extracting-3)。

大型语言模型是通用的模型,在广泛的任务中表现出色,而不是针对一项特定任务(例如情感分析、命名实体识别或数学推理)进行训练[[2]](https://zh.wikipedia.org/wiki/大型语言模型#cite\_note-Manning-2022-2)。

尽管在预测句子中的下一个单词等简单任务上接受过训练,但发现具有足够训练和参数计数的神经语言模型可以捕获人类语言的大部分句法和语义。

此外大型语言模型展示了相当多的关于世界的常识,并且能够在训练期间“记住”大量事实[[2]](https://zh.wikipedia.org/wiki/大型语言模型#cite\_note-Manning-2022-2)。
参考资料:llm - 搜索 (wikipedia.org)

部署

API领取

首先前往科大讯飞的星火大模型官网 讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞 (xfyun.cn)
进行注册,然后领取大模型的API

这里选择 API免费试用 ,然后进入如下页面

选择第一个 个人免费包免费试用 。等到领取成功后,后台会有如下界面

这里的 APPIDAPISecretAPIKey 就是接口信息,后面会用到。

Linux SDK 下载

进入上面页面后,点击 Linux SDK 右边的下载按钮。将会下载SDK包,感兴趣的也可以点击文档查看使用教程
下载完成后传到服务器,使用解压命令解压包

unzip Spark3.0\_Linux\_SDK\_v1.1.zip

然后进入解压出来的包 Spark3.0\_Linux\_SDK\_v1.1 , 里面应该包含如下文件

root@echofree:/opt# cd Spark3.0\_Linux\_SDK\_v1.1/
root@echofree:/opt/Spark3.0\_Linux\_SDK\_v1.1# ls
build include lib src

动态库配置

进入 lib 目录,里面会有一个相关的调用库

root@echofree:/opt/Spark3.0\_Linux\_SDK\_v1.1# cd lib/
root@echofree:/opt/Spark3.0\_Linux\_SDK\_v1.1/lib# ls
libSparkChain.so

这里为了方便点,直接采用暴力方法,将库文件 libSparkChain.so 复制到 /usr/lib

cp libSparkChain.so /usr/lib

API接口配置

进入 src 目录,会有一个 demo.cpp 文件,进入此文件,修改如下信息

int initSDK()
{
// 全局初始化
SparkChainConfig \*config = SparkChainConfig::builder();
config->appID("appID") // 你的appid
->apiKey("apiKey") // 你的apikey
->apiSecret("apiSecret"); // 你的apisecret
// ->logLevel(0)
// ->logPath("./aikit.log");
int ret = SparkChain::init(config);
printf(RED "\ninit SparkChain result:%d" RESET,ret);
return ret;
}

将这里的 三个API配置信息改为自己的即可。

demo测试

配置完成后就要测试连接了,使用 GNU 编译套件进行编译,命令如下

g++ -Iinclude src/demo.cpp -o demo -lSparkChain -lstdc++ -lpthread

如果你会 Makefile 的话,也可以复制下面的进行编译

CC = g++
CFLAGS = -Iinclude
LIBS = -lSparkChain -lstdc++ -lpthread
SRC = src/server.cpp
OUTPUT = demo
all: $(OUTPUT)
$(OUTPUT): $(SRC)
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
clean:
rm -f $(OUTPUT)

如果一切正常,文件夹下会生成一个可执行文件 demo

root@echofree:/opt/Spark3.0\_Linux\_SDK\_v1.1# ls
build demo files include lib src

运行看看

root@echofree:/opt/Spark3.0\_Linux\_SDK\_v1.1# ./demo
######### llm Demo #########
init SparkChain result:0
######### 同步调用 #########
syncOutput: assistant:Hello
syncOutput: assistant:こんにちは
######### 异步调用 #########
0:assistant:Hello:myContext
2:assistant::myContext
tokens:1 + 5 = 6
0:assistant:こ:myContext
1:assistant:んに:myContext
1:assistant:ちは (:myContext
1:assistant:Konnichi:myContext
2:assistant:wa):myContext
tokens:12 + 10 = 22

很好,配置完成!

加点互动

下面就要给他加互动功能了,毕竟大模型不能进行交互聊天,那还要他做什么
修改 demo.cpp 文件,内容如下

记得修改下 API信息哦
#include "../include/sparkchain.h"
#include
#include
#include
#include
#include
#define GREEN "\033[32m"
#define YELLOW "\033[33m"
#define RED "\033[31m"
#define RESET "\033[0m"
using namespace SparkChain;
using namespace std;
// async status tag
static atomic\_bool finish(false);
// result cache
string final\_result = "";
class SparkCallbacks : public LLMCallbacks
{
void onLLMResult(LLMResult \*result, void \*usrContext)
{
int status = result->getStatus();
printf(GREEN "%d:%s:%s:%s \n" RESET, status, result->getRole(), result->getContent(), usrContext);
final\_result += string(result->getContent());
if (status == 2)
{
printf(GREEN "tokens:%d + %d = %d\n" RESET, result->getCompletionTokens(), result->getPromptTokens(), result->getTotalTokens());
finish = true;
}
}
void onLLMEvent(LLMEvent \*event, void \*usrContext)
{
printf(YELLOW "onLLMEventCB\n eventID:%d eventMsg:%s\n" RESET, event->getEventID(), event->getEventMsg());
}
void onLLMError(LLMError \*error, void \*usrContext)
{
printf(RED "onLLMErrorCB\n errCode:%d errMsg:%s \n" RESET, error->getErrCode(), error->getErrMsg());
finish = true;
}
};
int initSDK()
{
// 全局初始化
SparkChainConfig \*config = SparkChainConfig::builder();
config->appID("appID") // 你的appid
->apiKey("apiKey") // 你的apikey
->apiSecret("apiSecret"); // 你的apisecret
// ->logLevel(0)
// ->logPath("./aikit.log");
int ret = SparkChain::init(config);
printf(RED "\ninit SparkChain result:%d" RESET,ret);
return ret;
}
void syncLLMTest()
{
cout << "\n######### 同步调用 #########" << endl;
// 配置大模型参数
LLMConfig \*llmConfig = LLMConfig::builder();
llmConfig->domain("generalv3");
llmConfig->url("ws(s)://spark-api.xf-yun.com/v3.1/chat");
Memory\* window\_memory = Memory::WindowMemory(5);
LLM \*syncllm = LLM::create(llmConfig, window\_memory);
// Memory\* token\_memory = Memory::TokenMemory(500);
// LLM \*syncllm = LLM::create(llmConfig,token\_memory);
int i = 0;
//const char\* input = "";
while (1)
{
char input[256]; // 定义一个足够大的字符数组来接收用户输入
printf("请输入问题 (输入 'q' 退出):");
scanf("%s", input);
if (strcmp(input, "q") == 0) {
break; // 如果输入是 'q',则退出循环
}
// 同步请求
LLMSyncOutput \*result = syncllm->run(input);
if (result->getErrCode() != 0)
{
printf(RED "\nsyncOutput: %d:%s\n\n" RESET, result->getErrCode(), result->getErrMsg());
continue;
}
else
{
printf(GREEN "\nsyncOutput: %s:%s\n" RESET, result->getRole(), result->getContent());
}
}
// 垃圾回收
if (syncllm != nullptr)
{
LLM::destroy(syncllm);
}
}
void uninitSDK()
{
// 全局逆初始化
SparkChain::unInit();
}
int main(int argc, char const \*argv[])
{
cout << "\n######### llm Demo #########" << endl;
// 全局初始化
int ret = initSDK();
if (ret != 0)
{
cout << "initSDK failed:" << ret << endl;
return -1;
}
syncLLMTest(); // 同步调用
// 退出
uninitSDK();
return 0;
}

如果你仔细观察,会发现少了一部分代码。

星火大模型的接口调用给了两种方式,一种是同步,一种是异步

这里我用的是同步,所有文字都输出完,才会打印在终端。

正常的大模型,应该都是异步调用,即慢慢打印出来,这里留给读者自己修改了。
下面看下运行效果

root@echofree:/opt/Spark3.0\_Linux\_SDK\_v1.1# ./demo
######### llm Demo #########
init SparkChain result:0
######### 同步调用 #########
请输入问题 (输入 'q' 退出):徐州天气怎么样
syncOutput: assistant:今天徐州市的天气是多云,气温在3℃到11℃之间,有点冷。东风4-5级,湿度为53%。空气质量良好,PM2.5指数为60。在这样的天气条件下,适宜旅游、钓鱼和户外运动,但要注意保暖。同时,感冒较易发生,请注意保持干净整洁的环境和清新流通的空气。
请输入问题 (输入 'q' 退出):你是什么
syncOutput: assistant:您好,我是科大讯飞研发的认知智能大模型,我的名字叫讯飞星火认知大模型。我可以和人类进行自然交流,解答问题,高效完成各领域认知智能需求。
请输入问题 (输入 'q' 退出):q
root@echofree:/opt/Spark3.0\_Linux\_SDK\_v1.1#

效果还是不错的。

整点花活

既然一切都配置ok了,那肯定得进行应用开发了,这里来个小demo

这里是使用 Qt 开发的一个非常质朴的聊天界面,也就是开头所说的项目中正好用到大模型的地方。由于时间紧张,技术能力有限,就直接搬上去了。

具体原理就是使用 Linux的 socket多线程 与界面进行通信。服务器端负责接收客户端的信息并进行回复。

后续

由于技术有限,并且考试月繁忙,等到有空闲时间了,再写个单独的交互界面。

九月

作者Echo
2023年9月24日 14:37

九月小记

糊弄着,糊弄着,开学已经一个月了。

看着还差两条数量就要追上文章数的 碎碎念 ,我觉得不能摆烂下去了。

不过写文章是真的费时间,除非是学习笔记,直接上传发布,可惜最近没啥笔记,就算有,也没有啥价值。emm,文章也没啥价值,不过最起码以后还能看看,回忆下(如果博客继续存在下去)。
所以,我做了一个......的决定,水篇文章,hh

大三

虽然现在已经大三了,但是还是像打车一样,在生活的旅途中,找不到自己的定位。

开学时踌躇满志,想要好好拼搏下,可惜药效不够,过几天就原形毕现了,实在是不知道做什么。不是事情太少,无事可做,而是事情一大堆,找不清主线了。就像打剧情游戏一样,一堆游戏线路需要去做。不过游戏还好,最起码给你标了主线,给了指引和线索。

好在没过几天,全国计算机等级考试来了,索性报了个三级。明知就业没啥用,但还是报了。还记得之前学院开会,统计二级证书人数,结果寥寥无几,于是便让我们去报名考试。

网上搜寻一番,发现都说网络技术简单,便火速下单了未来教育的习题。之前的二级考试,因为太过简单,直接白嫖学姐用过的。这次好歹是三级,打算认真刷题,好好准备。可惜看了一下,发现基本都是背诵的知识,唯一需要计算的就是ip地址内容了。

这下好了,又没有事情做了,emm,于是买了本《C++ Prime Plus》看看。之前买的《深入理解计算机系统》由于二进制内容对我来说太过枯燥,便舍弃了一会。

于是整个9月都在游戏和书籍中度过。对了,还有实验课。

数电的实验课,线子越插越多,脑子转速越来越慢。好在勉强还能做出来,然后就是万恶的实验报告了。

而且数电老师讲课速度是真的快,短短一个月就讲了一半内容,我是真的赶不上了,还是等考试前突击吧。

实验课下课拍的学长(也可能是学姐)。

除此之外,在连烧了两块开发板后,再次忍痛买了两个ESP32,也终于调库成功,连上了阿里云的物联网平台

把子肉

疫情过去了,两年没走过的南门也正常开放了。于是下午课上完,便和室友走一公里路,去旁边的万达广场吃把子肉,还有隆江猪脚饭~

虽然这个图片里没有猪脚,也没有把子肉。

从室友那偷的学校晚霞图,当时正好下课,准备出去吃一顿,然后走回学校,也是很惬意的。毕竟人生偷得几时闲。

三级考试

在考试的前一晚,学校在操场举行了迎新晚会,哈哈,没办法,太穷了,555

人倒是挺多的,他们拍表演,我只能拍个手机。

第二天考试,梦回我多年未见的母校
之间还有个小插曲。由于学校不开设考试点(狠狠表扬了),于是只能报名矿大了~



矿大,嗯,很大,哈哈。有山有水有树林,风景很美,可惜没吃到矿大的饭。

还记得上次蓝桥杯也是在这考的,当时做了好长时间,可惜没出好成绩,考完心情也不咋地。这次三级就不一样了,果然如预料的一样,非常简单,考试前一星期背背题就行了。

也不知道下次四级报不报。想报软考,可惜11月就考了,时间来不及了。至于教资考试,已经过去了,而且也从来没想过。

考完试的晚上,也就是昨晚,顺便买了杯茶百道犒劳下自己(虽然没动啥脑子)

一个小彩蛋。才发现茶百道的包装纸有学校的曲艺团标志,哈哈。

突然想起了之前友链里看过的一篇文章,有关奶茶的,在这推荐下:[饮者杂记(Ⅰ) - 庭院一角
(harrypan.cn)](https://www.harrypan.cn/index.php/archives/328/)

虽然作为店员的我自然要满足顾客的需求,然而我内心中则是十分认同清玉的那个搞怪广告:“调你妈,黄金比例最好喝!” 都买奶茶了,还要想东想西,瞻前顾后,连片刻的休憩都要充满对身材和健康的焦虑。 ———— 此文摘抄

秋招

离毕业也快了,看了下牛客秋招,发现是诸神之战,hc越来越少,简历越来越多。

连全国城镇调查失业率都暂停发布了,233,还能咋办呢,对吧
国家统计局:8月起,全国青年人等分年龄段的城镇调查失业率将暂停发布*新闻频道*央视网(cctv.com)

这里又想推荐一篇友链的相关文章了:对当下高等教育的一点思考 – Abin的个人博客-爱上小树枝 (xiaoshuzhi.love)

至于考研,只能说缓解就业了,而且还不一定能考上。在这学历贬值的时代,考研的人数已经到达了450万了。

当然了,还有考公,也是千军万马,不容易。

不过也不能这么悲观,还是得发现生活的美好的一面。

外设篇01:那些年用过的键盘

作者Echo
2023年8月27日 22:30

前言

转眼已经大三了,也买了四个键盘,谁让我喜欢电子产品呢。除此之外,天天敲代码,对键盘使用度极高。

换句话说,键盘已经替代了高中的黑笔,成为了我新的实现理想的工具。于是趁着开学之际,便想写篇文章介绍下用过的几种键盘。

1. 达尔优EK815


高中毕业的暑假,对于电脑以及外设还处于一问三不知的状态,在知乎搜了几篇文章,只知道买这些东西走京东自营店比较好,于是便下载了京东(京东快打钱)。

当时在京东的键盘销售榜上,这个键盘,也就是 达尔优EK815机械合金版,好像排在了第一名,而且价格也挺便宜的,149
元,有着可调的RGB灯光,还是机械的,对那时候没有接触过键盘的我来说,十分具有吸引力,于是光速下单买了蓝白色。

与此同时,也买了第一个steam游戏,战地5,整个暑假都在这个游戏中度过。虽然每次都被打成薯条,但也不亦乐乎。

还有一点是,用这个键盘的人太多了,高中同学就有几个撞了。

2. 黑峡谷X3Pro



到了大一暑假,经历一个学年的洗礼,对键盘的知识也增加了不少,于是开始寻找更高配置的键盘。

因为第一个键盘是有线的,有时候使用起来极其不方便,这次便想买个三模的。经过多次搜寻,最终目光落在了两款键盘上:RK98黑峡谷X3Pro。到了最后还是买了黑峡谷的黑森林慕斯色

没办法,黑白色对我的吸引力还是很大的,还送了个掌托(虽然从来没用过)。选定的轴体为流沙金,价格
389,还是很贵的,不过体验感完虐之前的达尔优,果然是一分钱一分货。后来又发现隔壁宿舍两个和我一样的,哈哈,这个键盘销量也挺高的。

不过很气人的是,今年暑假直接降价了100,虽然电子产品是理财产品,但还是很离谱。

3. 华为蓝牙键盘


这款小键盘则是从舍友那收过来的,因为有时候需要便携操作,正好有个平板,缺个小键盘,于是打个折,花费了 111.11 大洋买了下来。

虽然想法很不错,不过用的时间几乎可以不计,一般当个备用键盘或者静音键盘使用。

4. Cherry KC1000


55元 极致性价比,一款非常经典的薄膜键盘。因为之前的黑峡谷声音有点大,所以开学就买了这个,切换着用。

使用手感和学校机房的已经沾满油的薄膜键盘基本一样,声音很小,不过如果快速敲代码声音还是有点大的。

相比于这个,我还是更喜欢没有小数字的87键,打字速度更快,但也失去了双人4399的快乐~

总结

总的来说,黑峡谷的X3Pro是我用的最舒服的一个。

Cherry的薄膜键盘由于刚到,还没有捂热,而且87键机械键盘用惯了,导致手感不是很好。

华为的蓝牙键盘比较小巧,适合平板办公。

至于达尔优那款,如果经费有限,又想体验RGB+机械轴,那么可以一试。

RSS阅读器安利:Fluent Reader

作者Echo
2023年8月1日 19:34

前言

由于之前在网上搜寻到RSS订阅工具都差强人意,今天闲来无事,偶然发现了一款颜值非常高的开源免费RSS订阅器:Fluent Reader , 于是便想写一篇文章安利下

如果想要使用,微软商店直接搜索下载即可,也可以前往 GitHub 上下载,此仓库包含了APP端软件包

至于更多RSS订阅源可跳转相关链接处

RSS 介绍

RSS(Really Simple Syndication,真正简单的分发)是一种用于发布和订阅网站内容的数据格式和协议。它通过简单的 XML 格式来传递网站的文章、新闻、博客等信息,允许用户通过订阅器(RSSReader)获取网站内容的最新更新,而无需直接访问网站。
RSS 最早出现在 1999 年,由 Netscape 公司创立。随后,RSS 标准逐渐发展,演变为不同的版本和格式。常见的 RSS 版本包括 RSS 0.9x、RSS 1.0、RSS 2.0 和 Atom 等。

RSS 的工作原理如下:

  1. 网站创建并维护 RSS 文件:网站管理员会将网站的文章、新闻、博客等内容整理成 XML 格式的 RSS 文件,并将其发布在网站的特定位置,通常是一个预定义的 RSS Feed URL。
  2. 用户使用订阅器订阅 RSS Feed:用户可以使用 RSS 订阅器(也称为 RSS Reader 或 Feed Reader)来订阅感兴趣的网站的 RSS Feed。订阅器会定期检查订阅的 RSSFeed,以获取其中的更新。
  3. 订阅器获取更新:当订阅的网站有新的文章或内容发布时,RSS Feed 文件会被更新。订阅器会检测到这些更新,并将最新的内容显示在用户的订阅列表中。

RSS 的优点包括:

  • 方便获取信息:用户可以一站式地收集和查看多个网站的内容更新,无需频繁访问每个网站。
  • 自动化更新:订阅器会定期检查更新,用户不需要手动去查看是否有新的内容发布。
  • 隐私保护:RSS 订阅不需要提供个人信息,保护用户的隐私。

随着社交媒体和其他内容分发平台的兴起,RSS 的使用逐渐减少。然而,RSS 仍然被许多网站和博客用于提供内容更新,并且一些专门的订阅器应用程序仍然广泛使用,满足了一部分用户对于个性化内容订阅的需求。

软件截图




相关链接

GitHub地址:Fluent Reader
RSS入门指南:高效获取信息,你需要这份 RSS 入门指南 - 少数派 (sspai.com)
使用体验:Windows平台最美RSS阅读器-Fluent Reader上手体验 - 知乎 (zhihu.com)

友情提醒:卸载软件时,记得导出相关订阅源进行备份

Argon主题博客美化

作者Echo
2022年10月21日 18:09

关于新建页面、菜单图标等操作请跳转目录到教程视频~

搭建博客遇到的99.9%问题已经在文档、相关视频以及评论区中给出,一定要认真看文档及视频讲解,不会可以翻评论区

前言

很开心这篇美化文章能够帮助到大家,如果转载请标注原文地址哦,十分感谢!

常言道:工欲善其事必先利其器,在发表文章前,美化博客,使其利于自己的观看与管理极其重要,所以我四处搜寻,得到了以下美化代码。

但是,有时候我们走得太远,会忘了为什么出发。希望阅览本文章的人不要忘记初心,想想一开始为什么搭建博客。我相信大部分朋友都是为了记录自己学习笔记,生活故事。

所以,有时候博客美化过度会适得其反,望各位仔细斟酌,莫要使自己的博客变成了花架子,好的文章才是博客之本,立足之根。

主题资源

链接:https://pan.baidu.com/s/1yyA-m_h_wku7n3qzK-eYEQ?pwd=echo
提取码:echo

1. 我的博客美化 JSON

注意:可复制一键导入

别忘记在主题设置页面修改头像、背景以及底部信息等设置哦(博客背景url已失效,需自己填写)

建议主题设置全局里 CDN 选择不使用或更换为自己的,否则可能出现CSS样式失效
{"argon_theme_color":"#5e72e4","argon_theme_color_hex_preview":"#5e72e4","argon_show_customize_theme_color_picker":true,"argon_enable_immersion_color":"true","argon_darkmode_autoswitch":"time","argon_enable_amoled_dark":"false","argon_card_radius":"15","argon_card_shadow":"default","argon_page_layout":"double","argon_article_list_waterflow":"2","argon_article_list_layout":"1","argon_font":"serif","argon_assets_path":"jsdelivr_fastly","argon_custom_assets_path":"","argon_wp_path":"/","argon_dateformat":"YMD","argon_enable_headroom":"true","argon_toolbar_title":"Echo","argon_toolbar_icon":"","argon_toolbar_icon_link":" ","argon_toolbar_blur":"true","argon_banner_title":"Echo‘s blog","argon_banner_subtitle":"Banner 副标题","argon_banner_size":"fullscreen","argon_page_background_banner_style":"transparent","argon_show_toolbar_mask":true,"argon_banner_background_url":"--bing--","argon_banner_background_color_type":"shape-primary","argon_banner_background_hide_shapes":true,"argon_enable_banner_title_typing_effect":"true","argon_banner_typing_effect_interval":"100","argon_page_background_url":"https://yy.liveout.cn/background/wallhaven-yxjm57_1920x1080.png","argon_page_background_dark_url":"https://yy.liveout.cn/background/wallhaven-6dqjdl_1920x1080.png","argon_page_background_opacity":"1","argon_sidebar_banner_title":"左侧栏标题","argon_sidebar_banner_subtitle":"左侧栏子标题(格言)","argon_sidebar_auther_name":"Echo","argon_sidebar_auther_image":"https://yy.liveout.cn/photo/photo1.png","argon_sidebar_author_description":"左侧栏作者简介","argon_sidebar_announcement":"","argon_fab_show_settings_button":"false","argon_fab_show_darkmode_button":"true","argon_fab_show_gotocomment_button":"false","argon_seo_description":"网站描述 (Description Meta 标签)","argon_seo_keywords":"搜索引擎关键词(Keywords Meta 标签)","argon_article_meta":"time|categories|views","argon_show_readingtime":"true","argon_reading_speed":"580","argon_reading_speed_en":"80","argon_reading_speed_code":"10","argon_show_thumbnail_in_banner_in_content_page":"false","argon_first_image_as_thumbnail_by_default":"true","argon_reference_list_title":"参考","argon_show_sharebtn":"true","argon_show_headindex_number":"false","argon_donate_qrcode_url":"https://www.liveout.cn/wp-content/uploads/2022/10/wechat1.jpg","argon_additional_content_after_post":"文末附加内容","argon_related_post":"category,tag","argon_related_post_sort_orderby":"meta_value_num","argon_related_post_sort_order":"DESC","argon_related_post_limit":"10","argon_article_header_style":"article-header-style-2","argon_outdated_info_time_type":"createdtime","argon_outdated_info_days":"1","argon_outdated_info_tip_type":"inpost","argon_outdated_info_tip_content":"本文最后更新于%modify_date_delta% 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com","argon_archives_timeline_show_month":"true","argon_archives_timeline_url":"https://www.liveout.cn/pigeonhole/","argon_footer_html":"<style>\n/* 核心样式 */\n.github-badge {\ndisplay: inline-block;\nborder-radius: 4px;\ntext-shadow: none;\nfont-size: 13.1px;\ncolor: #fff;\nline-height: 15px;\nmargin-bottom: 5px;\nfont-family: \"Open Sans\", sans-serif;\n}\n.github-badge .badge-subject {\ndisplay: inline-block;\nbackground-color: #4d4d4d;\npadding: 4px 4px 4px 6px;\nborder-top-left-radius: 4px;\nborder-bottom-left-radius: 4px;\nfont-family: \"Open Sans\", sans-serif;\n}\n.github-badge .badge-value {\ndisplay: inline-block;\npadding: 4px 6px 4px 4px;\nborder-top-right-radius: 4px;\nborder-bottom-right-radius: 4px;\nfont-family: \"Open Sans\", sans-serif;\n}\n.github-badge-big {\ndisplay: inline-block;\nborder-radius: 6px;\ntext-shadow: none;\nfont-size: 14.1px;\ncolor: #fff;\nline-height: 18px;\nmargin-bottom: 7px;\n}\n.github-badge-big .badge-subject {\ndisplay: inline-block;\nbackground-color: #4d4d4d;\npadding: 4px 4px 4px 6px;\nborder-top-left-radius: 4px;\nborder-bottom-left-radius: 4px;\n}\n.github-badge-big .badge-value {\ndisplay: inline-block;\npadding: 4px 6px 4px 4px;\nborder-top-right-radius: 4px;\nborder-bottom-right-radius: 4px;\n}\n.bg-orange {\nbackground-color: #ec8a64 !important;\n}\n.bg-red {\nbackground-color: #cb7574 !important;\n}\n.bg-apricots {\nbackground-color: #f7c280 !important;\n}\n.bg-casein {\nbackground-color: #dfe291 !important;\n}\n.bg-shallots {\nbackground-color: #97c3c6 !important;\n}\n.bg-ogling {\nbackground-color: #95c7e0 !important;\n}\n.bg-haze {\nbackground-color: #9aaec7 !important;\n}\n.bg-mountain-terrier {\nbackground-color: #99a5cd !important;\n}\n</style>\n \n<div class=\"github-badge-big\">\n<span class=\"badge-subject\"><i class=\"fa fa-id-card\"></i> 备案号 </span\n><span class=\"badge-value bg-orange\">\n<a href=\"https://beian.miit.gov.cn/\" target=\"_blank\" one-link-mark=\"yes\"\n>苏ICP备0000000000号</a\n>\n|\n<a\nhref=\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode= 32072202010255\"\ntarget=\"_blank\"\none-link-mark=\"yes\"\n>苏公网安备 00000000000000号</a\n></span\n>\n</div>\n\n \n<div class=\"github-badge\">\n<span class=\"badge-subject\"><img src=\"https://www.liveout.cn/wp-content/uploads/2022/10/又拍云_logo4.png\" height=\"20\" width=\"20\"/></i> CDN</span\n><span class=\"badge-value bg-shallots\"\n><a href=\"\" target=\"_blank\" one-link-mark=\"yes\"></a\n><a\nhref=\"https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral\"\ntarget=\"_blank\"\none-link-mark=\"yes\"\n>Upyun</a\n></span\n>\n<span class=\"badge-subject\"><i class=\"fa fa-wordpress\"></i> Powered</span\n><span class=\"badge-value bg-green\"\n><a href=\"https://cn.wordpress.org/\" target=\"_blank\" one-link-mark=\"yes\"\n>WordPress</a\n></span\n>\n</div>\n<div class=\"github-badge-big\">\n<span class=\"badge-subject\">Copyright </span\n><span class=\"badge-value bg-red\">\n2022-2022\n<i class=\"fa fa-copyright\"></i> Echo</span\n>\n</script>\n</div>\n<div class=\"github-badge-big\">\n<span class=\"badge-subject\"><i class=\"fa fa-clock-o\"></i> Running Time</span\n><span class=\"badge-value bg-apricots\"\n><span id=\"blog_running_days\" class=\"odometer odometer-auto-theme\"></span>\ndays\n<span id=\"blog_running_hours\" class=\"odometer odometer-auto-theme\"></span> H\n<span id=\"blog_running_mins\" class=\"odometer odometer-auto-theme\"></span> M\n<span id=\"blog_running_secs\" class=\"odometer odometer-auto-theme\"></span>\nS</span\n>\n <script no-pjax=\"\">\nvar blog_running_days = document.getElementById(\"blog_running_days\");\nvar blog_running_hours = document.getElementById(\"blog_running_hours\");\nvar blog_running_mins = document.getElementById(\"blog_running_mins\");\nvar blog_running_secs = document.getElementById(\"blog_running_secs\");\nfunction refresh_blog_running_time() {\nvar time = new Date() - new Date(2020, 0,0, 0, 0, 0);\nvar d = parseInt(time / 24 / 60 / 60 / 1000);\nvar h = parseInt((time % (24 * 60 * 60 * 1000)) / 60 / 60 / 1000);\nvar m = parseInt((time % (60 * 60 * 1000)) / 60 / 1000);\nvar s = parseInt((time % (60 * 1000)) / 1000);\nblog_running_days.innerHTML = d;\nblog_running_hours.innerHTML = h;\nblog_running_mins.innerHTML = m;\nblog_running_secs.innerHTML = s;\n}\nrefresh_blog_running_time();\nif (typeof bottomTimeIntervalHasSet == \"undefined\") {\nvar bottomTimeIntervalHasSet = true;\nsetInterval(function () {\nrefresh_blog_running_time();\n}, 500);\n}\n</script>\n","argon_enable_code_highlight":"true","argon_code_theme":"vs2015","argon_code_highlight_hide_linenumber":"true","argon_code_highlight_break_line":"false","argon_code_highlight_transparent_linenumber":"false","argon_math_render":"none","argon_mathjax_cdn_url":"//cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js","argon_mathjax_v2_cdn_url":"//cdn.jsdelivr.net/npm/mathjax@2.7.5/MathJax.js?config=TeX-AMS_HTML","argon_katex_cdn_url":"//cdn.jsdelivr.net/npm/katex@0.11.1/dist/","argon_enable_lazyload":"true","argon_lazyload_threshold":"800","argon_lazyload_effect":"fadeIn","argon_lazyload_loading_style":"1","argon_enable_fancybox":"true","argon_enable_zoomify":"false","argon_zoomify_duration":"200","argon_zoomify_easing":"cubic-bezier(0.4,0,0,1)","argon_zoomify_scale":"0.9","argon_enable_pangu":"article","argon_custom_html_head":"","argon_custom_html_foot":"<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css\">\n<script src=\"https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/meting@2.0.1/dist/Meting.min.js\"></script>\n \n<meting-js \n    server=\"netease\" \n    type=\"playlist\" \n    id=\"7373135320\"\n    fixed=\"true\" \n    mini=\"true\"\n    order=\"list\"\n    loop=\"all\"\n    preload=\"auto\"\n    list-folded=\"true\"\n    lrc-type=\"0\"\n>\n</meting-js>\n\n\n","argon_enable_smoothscroll_type":"1_pulse","argon_enable_into_article_animation":"true","argon_disable_pjax_animation":"false","argon_comment_pagination_type":"page","argon_comment_emotion_keyboard":"true","argon_hide_name_email_site_input":"false","argon_comment_need_captcha":"false","argon_get_captcha_by_ajax":"false","argon_comment_allow_markdown":"true","argon_comment_allow_editing":"true","argon_comment_allow_privatemode":"true","argon_comment_allow_mailnotice":"true","argon_comment_mailnotice_checkbox_checked":true,"argon_comment_enable_qq_avatar":"true","argon_comment_avatar_vcenter":"false","argon_who_can_visit_comment_edit_history":"commentsender","argon_enable_comment_pinning":"true","argon_enable_comment_upvote":"true","argon_comment_ua":"platform,browser","argon_show_comment_parent_info":"true","argon_fold_long_comments":"true","argon_gravatar_cdn":"gravatar.pho.ink/avatar/","argon_text_gravatar":"true","argon_enable_search_filters":"true","argon_search_filters_type":"*post,*page,shuoshuo","argon_pjax_disabled":"false","argon_hide_categories":"","argon_enable_login_css":"true","argon_home_show_shuoshuo":"false","argon_fold_long_shuoshuo":"true","argon_enable_timezone_fix":"false","argon_hide_shortcode_in_preview":"true","argon_trim_words_count":"0","argon_enable_mobile_scale":"false","argon_disable_googlefont":"false","argon_disable_codeblock_style":"false","argon_update_source":"github","argon_hide_footer_author":"true"}

2. 年度倒计时显示(左侧栏)

在左侧栏里添加工具——简码,复制一下代码粘贴进去

<div class="progress-wrapper" style="padding: 0">
<div class="progress-info">
<div class="progress-label">
<span id="yearprogress_yearname"></span>
</div>
<div id="yearprogress_text_container" class="progress-percentage">
<span id="yearprogress_progresstext"></span>
<span id="yearprogress_progresstext_full"></span>
</div>
</div>
<div class="progress">
<div id="yearprogress_progressbar" class="progress-bar bg-primary"></div>
</div>
</div>
<script no-pjax="">
function yearprogress_refresh() {
let year = new Date().getFullYear();
$("#yearprogress_yearname").text(year);
let from = new Date(year, 0, 1, 0, 0, 0);
let to = new Date(year, 11, 31, 23, 59, 59);
let now = new Date();
let progress = (((now - from) / (to - from + 1)) * 100).toFixed(7);
let progressshort = (((now - from) / (to - from + 1)) * 100).toFixed(2);
$("#yearprogress_progresstext").text(progressshort + "%");
$("#yearprogress_progresstext_full").text(progress + "%");
$("#yearprogress_progressbar").css("width", progress + "%");
}
yearprogress_refresh();
if (typeof yearProgressIntervalHasSet == "undefined") {
var yearProgressIntervalHasSet = true;
setInterval(function () {
yearprogress_refresh();
}, 500);
}
</script>
<style>
#yearprogress_text_container {
width: 100%;
height: 22px;
overflow: hidden;
user-select: none;
}
#yearprogress_text_container > span {
transition: all 0.3s ease;
display: block;
}
#yearprogress_text_container:hover > span {
transform: translateY(-45px);
}
</style>

3. 底部音乐播放

下面的调用链接可能会突然失效,如有需要可参考官方文档

[APlayer HTML5音乐播放器 | ACE-BLOG
(ace520.github.io)](https://ace520.github.io/blog/post/2020/05/26/aplayer/)

**server="netease" 指定音乐平台为网易云,type="song"
指单曲类型,id="7373135320" 为音乐的 id(这里的id为打开音乐歌单,网址显示的id)**

开启吸底模式 fixed="true", 开启迷你模式 mini="true", 随机播放
order="random", 关闭底部歌词 lrc-type="0"

注意:id需要为自己创建的歌单,不能为我喜欢的音乐;server可以改自己用的音乐平台,如netease(网易云)、tencent(QQ音乐)

具体参数设置点击此链接:https://yy.liveout.cn/article/Learn/front-end/aplayer%E5%8F%82%E6%95%B0.png

Aplayer播放器官网文档:[APlayer HTML5音乐播放器 | ACE-BLOG
(ace520.github.io)](https://ace520.github.io/blog/post/2020/05/26/aplayer/)

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/meting@2.0.1/dist/Meting.min.js"></script>
 
<meting-js 
    server="netease" 
    type="playlist" 
    id="7360465359"
    fixed="true" 
    mini="true"
    order="random"
    loop="all"
    preload="auto"
    list-folded="false">
</meting-js>

4. 动态背景(视频资源失效)

背景可以通过更改 url 链接设置为自己的动态视频尽量不要太大,否则别人访问时会刷新许久

注意视频链接已过期,可更换为自己的链接

上传视频到云平台或媒体库,复制资源链接
<video
src="https://new.gcxstudio.cn/wp-content/uploads/2022/03/daymode.mp4" /*白天动态视频链接*/
class="bg-video bg-video-day"
autoplay=""
loop="loop"
muted=""
></video>
<video
src="https://new.gcxstudio.cn/wp-content/uploads/2022/03/darkmode.webm" /*夜间动态视频链接*/
class="bg-video bg-video-night"
autoplay=""
loop="loop"
muted=""
></video>
<style>
video.bg-video {
position: fixed;
z-index: -1;
left: 0;
right: 0;
top: 0;
bottom: 0;
width: 100vw;
height: 100vh;
object-fit: cover;
pointer-events: none;
}
html.darkmode video.bg-video.bg-video-day {
opacity: 0;
}
html.darkmode video.bg-video.bg-video-night {
opacity: 1;
}
video.bg-video.bg-video-day {
opacity: 1;
}
video.bg-video.bg-video-night {
opacity: 0;
}
#banner,
#banner .shape {
background: transparent !important;
}

</style>
<script
src="https://api.gcxstudio.cn/odometer/odometer.min.js"
integrity="sha256-65R1G5irU1VT+k8L4coqgd3saSvO/Wufson/w+v2Idw="
crossorigin="anonymous"
></script>


<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>

<div id='aplayer'></div>

5. 虚拟人物(看板娘)

以下代码选择一项复制即可,效果不同,自行选择

具体文章:[stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ |
Live2D widget for web platform (github.com)](https://github.com/stevenjoezhang/live2d-widget)

<script src="https://fastly.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js"></script>
  1. 其中 jsonpath: 后面的链接可按自己爱好更改,选择别的虚拟人物
<script src="https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js"></script>
<script>
    L2Dwidget.init({
        "model": {
       //jsonpath控制显示那个小萝莉模型,
            //(切换模型需要改动)
//              "https://unpkg.com/(live2d-widget-model-koharu)@1.0.5/assets/(koharu).model.json"
            jsonPath: "https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json",
            "scale": 1
        },
        "display": {
            "position": "right", //看板娘的表现位置
            "width": 75,  //小萝莉的宽度
            "height": 150, //小萝莉的高度
            "hOffset": 0,
            "vOffset": -20
        },
        "mobile": {
            "show": true,
            "scale": 0.5
        },
        "react": {
            "opacityDefault": 0.7,
            "opacityOnHover": 0.2
        }
    });
</script>

   /*   小帅哥: https://unpkg.com/live2d-widget-model-chitose@1.0.5/assets/chitose.model.json
      萌娘:https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json
      白猫:https://unpkg.com/live2d-widget-model-tororo@1.0.5/assets/tororo.model.json
      黑猫: https://unpkg.com/live2d-widget-model-hijiki@1.0.5/assets/hijiki.model.json
      小可爱(女):https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json
      小可爱(男):https://unpkg.com/live2d-widget-model-haruto@1.0.5/assets/haruto.model.json
      初音:https://unpkg.com/live2d-widget-model-miku@1.0.5/assets/miku.model.json
      圣职者妹妹:https://unpkg.com/live2d-widget-model-z16@1.0.5/assets/z16.model.json
      茶杯犬:https://cdn.jsdelivr.net/npm/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json
      绿毛妹妹:https://unpkg.com/live2d-widget-model-tsumiki@1.0.5/assets/tsumiki.model.json
      金龟子妹妹:https://unpkg.com/live2d-widget-model-unitychan@1.0.5/assets/unitychan.model.json
      https://unpkg.com/live2d-widget-model-nito@1.0.5/assets/nito.model.json
      https://unpkg.com/live2d-widget-model-ni-j@1.0.5/assets/ni-j.model.json
      小阿狸: https://unpkg.com/live2d-widget-model-nico@1.0.5/assets/nico.model.json
      https://unpkg.com/live2d-widget-model-nietzche@1.0.5/assets/nietzche.model.json
      https://unpkg.com/live2d-widget-model-nipsilon@1.0.5/assets/nipsilon.model.json
      女学生: https://unpkg.com/live2d-widget-model-hibiki@1.0.5/assets/hibiki.model.json */

6. 网站底部信息

CSS(样式表)

<style>
/* 核心样式 */
.github-badge {
display: inline-block;
border-radius: 4px;
text-shadow: none;
font-size: 13.1px;
color: #fff;
line-height: 15px;
margin-bottom: 5px;
font-family: "Open Sans", sans-serif;
}
.github-badge .badge-subject {
display: inline-block;
background-color: #4d4d4d;
padding: 4px 4px 4px 6px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
font-family: "Open Sans", sans-serif;
}
.github-badge .badge-value {
display: inline-block;
padding: 4px 6px 4px 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
font-family: "Open Sans", sans-serif;
}
.github-badge-big {
display: inline-block;
border-radius: 6px;
text-shadow: none;
font-size: 14.1px;
color: #fff;
line-height: 18px;
margin-bottom: 7px;
}
.github-badge-big .badge-subject {
display: inline-block;
background-color: #4d4d4d;
padding: 4px 4px 4px 6px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.github-badge-big .badge-value {
display: inline-block;
padding: 4px 6px 4px 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.bg-orange {
background-color: #ec8a64 !important;
}
.bg-red {
background-color: #cb7574 !important;
}
.bg-apricots {
background-color: #f7c280 !important;
}
.bg-casein {
background-color: #dfe291 !important;
}
.bg-shallots {
background-color: #97c3c6 !important;
}
.bg-ogling {
background-color: #95c7e0 !important;
}
.bg-haze {
background-color: #9aaec7 !important;
}
.bg-mountain-terrier {
background-color: #99a5cd !important;
}
</style>

HTML(底部信息)

   <div class="github-badge-big">
        <span class="badge-subject"><i class="fa fa-id-card"></i> 备案号 </span>
        <span class="badge-value bg-orange">
            <!-- 备案链接 -->
            <a href="https://beian.miit.gov.cn/" target="_blank" one-link-mark="yes">苏ICP备1234567890号</a>|
            <a href="https://www.beian.gov.cn/portal/index?token=e547b70c-fbe1-4c80-a4a2-857b17389a71" target="_blank"
                one-link-mark="yes">
                苏公网安备 32072212344321号</a>
        </span>
    </div>


  <div class="github-badge-big">
        <span class="badge-subject"><i class="fa fa-cloud" aria-hidden="true"></i> CDN</span>
        <span class="badge-value bg-shallots">
            <!-- 又拍云链接 -->
            <a href="https://www.upyun.com/" target="_blank" one-link-mark="yes">Upyun</a>
        </span>

        <span class="badge-subject"><i class="fa fa-wordpress"></i> Powered</span>
        <span class="badge-value bg-green">
            <!-- wordpress链接 -->
            <a href="https://cn.wordpress.org/" target="_blank" one-link-mark="yes">
                WordPress</a></span>
    </div>

    <div class="github-badge-big">
        <span class="badge-subject"><i class="fa fa-copyright" aria-hidden="true"></i>Copyright </span>
        <span class="badge-value bg-red">2022-2023</i>
            <a href="https://www.liveout.cn/" target="_blank" one-link-mark="yes">@ Echo
        </span>
        </script>
    </div>

    <!-- 运行时间 -->
    <div class="github-badge-big">
        <span class="badge-subject"><i class="fa fa-clock-o"></i> Running Time</span><span
            class="badge-value bg-apricots"><span id="blog_running_days" class="odometer odometer-auto-theme"></span>
            days
            <span id="blog_running_hours" class="odometer odometer-auto-theme"></span> H
            <span id="blog_running_mins" class="odometer odometer-auto-theme"></span> M
            <span id="blog_running_secs" class="odometer odometer-auto-theme"></span>S
        </span>

JavaScript(网站运行时间脚本)

注意:new Date( year, month, date, hrs, min, sec) 按给定的参数创建 日期对象

其中month的值域为0~11,0代表1月,11表代表12月;所以你输入的月份需要为自己真正月份的前一个月

<script no-pjax="">
var blog_running_days = document.getElementById("blog_running_days");
var blog_running_hours = document.getElementById("blog_running_hours");
var blog_running_mins = document.getElementById("blog_running_mins");
var blog_running_secs = document.getElementById("blog_running_secs");
function refresh_blog_running_time() {
var time = new Date() - new Date(2022, 5, 31, 0, 0, 0); /*此处日期的月份改为自己真正月份的前一个月*/
var d = parseInt(time / 24 / 60 / 60 / 1000);
var h = parseInt((time % (24 * 60 * 60 * 1000)) / 60 / 60 / 1000);
var m = parseInt((time % (60 * 60 * 1000)) / 60 / 1000);
var s = parseInt((time % (60 * 1000)) / 1000);
blog_running_days.innerHTML = d;
blog_running_hours.innerHTML = h;
blog_running_mins.innerHTML = m;
blog_running_secs.innerHTML = s;
}
refresh_blog_running_time();
if (typeof bottomTimeIntervalHasSet == "undefined") {
var bottomTimeIntervalHasSet = true;
setInterval(function () {
refresh_blog_running_time();
}, 500);
}
</script>

7. 字体、鼠标等特效

Docker系列 WordPress系列 特效 - Bensz (hwb0307.com)

8. 博客自定义CSS样式

8.1 博主的设置

参考上面友情链接, 以下为我的额外CSS,涉及字体、透明等博客样式

外观 --- 自定义 --- 额外CSS

ps: 字体链接需要上传到云端调用才能生效(下面字体链接已失效)

/*网站字体*/
/*原则上你可以设置多个字体,然后在不同的部位使用不同的字体。*/
@font-face{
    font-family:echo;
src:url(https://fastly.jsdelivr.net/gh/huangwb8/bloghelper@latest/fonts/13.woff2) format('woff2')
}

body{
        font-family: 'echo', Georgia, -apple-system, 'Nimbus Roman No9 L', 'PingFang SC', 'Hiragino Sans GB', 'Noto Serif SC', 'Microsoft Yahei', 'WenQuanYi Micro Hei', 'ST Heiti', sans-serif
}
 
/*横幅字体大小*/
.banner-title {
  font-size: 2.5em;
}
.banner-subtitle{
  font-size: 28px;
    
    -webkit-text-fill-color: transparent;        
background: linear-gradient(94.75deg,rgb(60, 172, 247) 0%,rgb(131, 101, 253) 43.66%,                rgb(255, 141, 112) 64.23%,rgb(247, 201, 102) 83.76%,rgb(172, 143, 100) 100%);        
-webkit-background-clip: text;
}
 
/*文章标题字体大小*/
.post-title {
    font-size: 25px
}
 
/*正文字体大小(不包含代码)*/
.post-content p{
    font-size: 1.25rem;
}
li{
    font-size: 1.2rem;
    
}
 
/*评论区字体大小*/
p {
    font-size: 1.2rem
            
}
 
/*评论发送区字体大小*/
.form-control{
    font-size: 1.2rem
}
 
/*评论勾选项目字体大小*/
.custom-checkbox .custom-control-input~.custom-control-label{
    font-size: 1.2rem
}
/*评论区代码的强调色*/
code {
  color: rgba(var(--themecolor-rgbstr));
}
 
/*说说字体大小和颜色设置*/
.shuoshuo-title {
    font-size: 25px;
/*  color: rgba(var(--themecolor-rgbstr)); */
}
 
/*尾注字体大小*/
.additional-content-after-post{
    font-size: 1.2rem
}
 
/* 公告居中 */
.leftbar-announcement-title {
    font-size: 20px;
/*     text-align: center; */
                 color: #00FFFF
}

.leftbar-announcement-content {
    font-size: 15px;
    line-height: 1.8;
    padding-top: 8px;
    opacity: 0.8;
/*     text-align: center; */
            color:#00FFFF;
}

/* 一言居中 */
.leftbar-banner-title {
    font-size: 20px;
    display: block;
    text-align: center;
        opacity: 0.8;
}

/* 个性签名居中 */
.leftbar-banner-subtitle {
    margin-top: 15px;
    margin-bottom: 8px;
    font-size: 13px;
    opacity: 0.8;
    display: block;
    text-align: center;
}

/*========颜色设置===========*/
 
/*文章或页面的正文颜色*/
body{
    color:#364863
}
 
/*引文属性设置*/
blockquote {
    /*添加弱主题色为背景色*/
    background: rgba(var(--themecolor-rgbstr), 0.1) !important;
    width: 100%
}
 
/*引文颜色 建议用主题色*/
:root {
    /*也可以用类似于--color-border-on-foreground-deeper: #009688;这样的命令*/
    --color-border-on-foreground-deeper: rgba(var(--themecolor-rgbstr));
}
 
/*左侧菜单栏突出颜色修改*/
.leftbar-menu-item > a:hover, .leftbar-menu-item.current > a{
    background-color: #f9f9f980;
}
 
/*站点概览分隔线颜色修改*/
.site-state-item{
    border-left: 1px solid #aaa;
}
.site-friend-links-title {
    border-top: 1px dotted #aaa;
}
#leftbar_tab_tools ul li {
    padding-top: 3px;
    padding-bottom: 3px;
    border-bottom:none;
}
html.darkmode #leftbar_tab_tools ul li {
    border-bottom:none;
}
 
/*左侧栏搜索框的颜色*/
button#leftbar_search_container {
    background-color: transparent;
}
 
/*========透明设置===========*/
 
/*白天卡片背景透明*/
.card{
    background-color:rgba(255, 255, 255, 0.8) !important;
    /*backdrop-filter:blur(6px);*//*毛玻璃效果主要属性*/
    -webkit-backdrop-filter:blur(6px);
}
 
/*小工具栏背景完全透明*/
/*小工具栏是card的子元素,如果用同一个透明度会叠加变色,故改为完全透明*/
.card .widget,.darkmode .card .widget,#post_content > div > div > div.argon-timeline-card.card.bg-gradient-secondary.archive-timeline-title{
    background-color:#ffffff00 !important;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
}
.emotion-keyboard,#fabtn_blog_settings_popup{
    background-color:rgba(255, 255, 255, 0.95) !important;
}
 
/*分类卡片透明*/
.bg-gradient-secondary{
    background:rgba(255, 255, 255, 0.1) !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter:blur(10px);
}
 
/*夜间透明*/
html.darkmode.bg-white,html.darkmode .card,html.darkmode #footer{
    background:rgba(66, 66, 66, 0.9) !important;
}
html.darkmode #fabtn_blog_settings_popup{
    background:rgba(66, 66, 66, 0.95) !important;
}
 
/*标签背景
.post-meta-detail-tag {
    background:rgba(255, 255, 255, 0.5)!important;
}*/
 
 
/*========排版设置===========*/
 
/*左侧栏层级置于上层*/
#leftbar_part1 {
    z-index: 1;
}
 
/*分类卡片文本居中*/
#content > div.page-information-card-container > div > div{
    text-align:center;
}
 
/*子菜单对齐及样式调整*/
.dropdown-menu .dropdown-item>i{
    width: 10px;
}
.dropdown-menu>a {
    color:var(--themecolor);
}
.dropdown-menu{
    min-width:max-content;
}
.dropdown-menu .dropdown-item {
    padding: .5rem 1.5rem 0.5rem 1rem;
}
.leftbar-menu-subitem{
    min-width:max-content;
}
.leftbar-menu-subitem .leftbar-menu-item>a{
    padding: 0rem 1.5rem 0rem 1rem;
}
 
/*左侧栏边距修改*/
.tab-content{
    padding:10px 0px 0px 0px !important;
}
.site-author-links{
    padding:0px 0px 0px 10px ;
}
/*目录位置偏移修改*/
#leftbar_catalog{
    margin-left: 0px;
}
/*目录条目边距修改*/
#leftbar_catalog .index-link{
    padding: 4px 4px 4px 4px;
}
/*左侧栏小工具栏字体缩小*/
#leftbar_tab_tools{
    font-size: 14px;
}
 
/*正文图片边距修改*/
article figure {margin:0;}
/*正文图片居中显示*/
.fancybox-wrapper {
    margin: auto;
}
/*正文表格样式修改*/
article table > tbody > tr > td,
article table > tbody > tr > th,
article table > tfoot > tr > td,
article table > tfoot > tr > th,
article table > thead > tr > td,
article table > thead > tr > th{
    padding: 8px 10px;
    border: 1px solid;
}
/*表格居中样式*/
.wp-block-table.aligncenter{margin:10px auto;}
 
/*回顶图标放大*/
button#fabtn_back_to_top, button#fabtn_go_to_comment, button#fabtn_toggle_blog_settings_popup, button#fabtn_toggle_sides, button#fabtn_open_sidebar{
    font-size: 1.2rem;
}
 
/*顶栏菜单放大*/
/*这里也可以设置刚刚我们设置的btfFont字体。试试看!*/

.navbar-nav .nav-link {
    font-size: 1rem;
    font-family: 'echo';
            
}
.navbar-brand {
    font-family: 'echo';
    font-size: 1.2rem;
    margin-right: 1.0 rem;
    padding-bottom: 0.2 rem;
    
    -webkit-text-fill-color: transparent;        
background: linear-gradient(94.75deg,rgb(60, 172, 247) 0%,rgb(131, 101, 253) 43.66%,                rgb(255, 141, 112) 64.23%,rgb(247, 201, 102) 83.76%,rgb(172, 143, 100) 100%);        
-webkit-background-clip: text;
}

/*菜单大小*/
.nav-link-inner--text {
    font-size: 1.25em;
}
.navbar-nav .nav-item {
    margin-right:0;
}
.mr-lg-5, .mx-lg-5 {
    margin-right:1rem !important;
}
.navbar-toggler-icon {
    width: 1.8rem;
    height: 1.8rem;
}
/*菜单间距*/
.navbar-expand-lg .navbar-nav .nav-link {
    padding-right: 1.4em;
    padding-left: 1.4em;
}
 
/*隐藏wp-SEO插件带来的线条阴影(不一定要装)*/
*[style='position: relative; z-index: 99998;'] {
    display: none;
}

/* Github卡片样式*/
.github-info-card-header a {
    /*Github卡片抬头颜色*/
    color: black !important;
    font-size: 1.5rem;
}
.github-info-card {
    /*Github卡片文字(非链接)*/
    font-size: 1rem;
    color: black !important;
}
.github-info-card.github-info-card-full.card.shadow-sm {
    /*Github卡片背景色*/
    background-color: rgba(var(--themecolor-rgbstr), 0.1) !important;
}

/*      左侧栏外观CSS     */

/* 头像 */
#leftbar_overview_author_image {
    width: 100px;
    height: 100px;
    margin: auto;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    background-color: rgba(127, 127, 127, 0.1);
    overflow: hidden;
    transition: transform 0.3s ease;
}

/*  头像亮暗  */
#leftbar_overview_author_image:hover {
    transform: scale(1.23);
    filter: brightness(150%);
}

/* 名称 */
#leftbar_overview_author_name {
      margin-top: 15px;
    font-size: 18px;align-content;
    color:#00FFFF;
}

/* 简介 */
#leftbar_overview_author_description {
    font-size: 14px;
    margin-top: -4px;
    opacity: 0.8;
    color:#c21f30;
}

/* 标题,链接等 */
a, .btn-neutral {
    color:#AF7AC5 ;
    
}

/* 页脚透明 */
#footer {
    background: var(--themecolor-gradient);
    color: #fff;
    width: 100%;
    float: right;
    margin-bottom: 25px;
    text-align: center;
    padding: 25px 20px;
    line-height: 1.8;
    transition: none;
    opacity: 0.6;
}

8.2 根据主题自动透明

添加到 页尾脚本 里,根据主题色自动透明,透明度可以在op1、op2、op3.....那里设置

<script>
  function hexToRgb(hex,op){
    let str = hex.slice(1);
    let arr;
    if (str.length === 3) arr = str.split('').map(d => parseInt(d.repeat(2), 16));
    else arr = [parseInt(str.slice(0, 2), 16), parseInt(str.slice(2, 4), 16), parseInt(str.slice(4, 6), 16)];
    return  `rgb(${arr.join(', ')}, ${op})`;
};

  let themeColorHex = getComputedStyle(document.documentElement).getPropertyValue('--themecolor').trim();
  let op1 = 0.6
  let themeColorRgb = hexToRgb(themeColorHex,op1);
  let themecolorGradient = getComputedStyle(document.documentElement).getPropertyValue('--themecolor-gradient')*
  document.documentElement.style.setProperty('--themecolor-gradient',themeColorRgb)

  let op2 = 0.8
  // 方法一:
  let colorTint92 = getComputedStyle(document.documentElement).getPropertyValue('--color-tint-92').trim();
  colorTint92 += ', '+op2;
  document.documentElement.style.setProperty('--color-tint-92',colorTint92)
  // 方法二:(无效)
  // let colorForegroundHex = getComputedStyle(document.documentElement).getPropertyValue('--color-foreground').trim();
  // let colorForeground = hexToRgb(colorForegroundHex,op2)
  // 无效的原因是博客里的--color-fpreground是局部变量,不是:root里的全局变量,所以最好的办法是修改--color-tint-92,这个是全局的
  // document.documentElement.style.setPrope。rty('--color-fpreground',colorForeground)
   // 不要用下面这种cssText这种写法,会导致上面--themecolor-gradient的样式修改失效!
   // document.documentElement.style.cssText = '--color-tint-92:'+colorTint92
  
  let op3 = 0.65
  let colorShade90 = getComputedStyle(document.documentElement).getPropertyValue('--color-shade-90').trim();
  colorShade90 += ', ' + op3;
  document.documentElement.style.setProperty('--color-shade-90',colorShade90)
 
  let op4 = 0.8
  let colorShade86 = getComputedStyle(document.documentElement).getPropertyValue('--color-shade-86').trim();
  colorShade86 += ', ' + op4;
  document.documentElement.style.setProperty('--color-shade-86',colorShade86)
</script>

来源自友链朋友:北冥红烧鱼 (hongshaoyv.com)

9. 头像缩放或亮暗

鼠标经过头像时自动缩放、高亮/暗

外观 --- 自定义 --- 额外CSS

#leftbar_overview_author_image {
    width: 100px;
    height: 100px;
    margin: auto;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    background-color: rgba(127, 127, 127, 0.1);
    overflow: hidden;
    box-shadow: 0 0 5px rgba(116, 8, 204, 0.3);
    transition: transform 0.3s ease; /*变化速度*/
}

#leftbar_overview_author_image:hover {
    transform: scale(1.2); /*缩放大小*/
    filter: brightness(150%); /*调节亮度*/
}

10. 头像/姓名跳转相关页

外观 --- 主题文件编辑器 中, 选择 边栏文件(sidebar.php)

点击 头像 跳转大概在第 126 行左右,

添加 <a> 标签,即 <a href="https://www.liveout.cn/about/">, 其中链接改为想要跳转的地方

<div class="tab-pane fade text-center<?php if ($nowActiveTab == 1) { echo ' active show'; }?>" id="leftbar_tab_overview" role="tabpanel" aria-labelledby="leftbar_tab_overview_btn">
<a href="https://www.liveout.cn/about/">
<div id="leftbar_overview_author_image" style="background-image: ........ 
<a/>

点击 姓名 跳转则是 130 行左右

添加 <a href="https://www.liveout.cn/about/">.... <a/>

<a href="https://www.liveout.cn/about/">
<h6 id="leftbar_overview_author_name"><?php echo get_option('argon_sidebar_auther_name') == '' ? bloginfo('name') : get_option('argon_sidebar_auther_name'); ?> </h6>
<a/>

11. 评论头像显示

外观 --- 主题文件编辑器 中的 function 模板函数添加此代码

if ( ! function_exists( 'get_cravatar_url' ) ) {
    /**
    *  把Gravatar头像服务替换为Cravatar
    * @param string $url
    * @return string
    */
    function get_cravatar_url( $url ) {
        $sources = array(
            'www.gravatar.com',
            '0.gravatar.com',
            '1.gravatar.com',
            '2.gravatar.com',
            'secure.gravatar.com',
            'cn.gravatar.com'
        );
        return str_replace( $sources, 'cravatar.cn', $url );
    }
    add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 );
    add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 );
    add_filter( 'get_avatar_url', 'get_cravatar_url', 1 );
}

来源:网络

12. 插件合集

12.1 网站访问数据(左侧栏)

  1. 进入Wordpress,点击插件,搜索并且下载 Wp Statistics
  2. 外观——小工具——站点额外内容——旧版小工具——统计

12.2 评论IP地址

以下根据体验自己选择

WP-UserAgent | kyleabaker.com From 友链大佬:obaby@mars (h4ck.org.cn)

WordPress 展示评论者地理位置插件 Easy Location | 歲月留聲 (0xo.net)

12.3 评论管理

Akismet Anti-Spam: Spam Protection

12.4 邮件发送

WP Mail SMTP

12.5 文章字数统计

WP Word Count

12.6 WP用户个人头像

Simple Local Avatars

教程视频

个人博客网站美化代码使用哔哩哔哩bilibili

个人博客网站(Wordpress)基本使用哔哩哔哩bilibili

推荐文章

  1. 个人博客网站搭建 – Echo (liveout.cn)
  2. 个人博客主题分享(WordPress) – Echo (liveout.cn)
  3. 博客图片托管到又拍云教程 – Echo (liveout.cn)
  4. Wordpress/Typecho博客搬迁教程 – Echo (liveout.cn)

相关链接

本文可能涉及的代码出自以下博客文章,十分感谢下面各位大佬的分享

关于 Argon 主题 更多美化内容文章: [Argon
主题的美化设置 - Gong\_cx (gcxstudio.cn)](https://new.gcxstudio.cn/archives/argon-theme-settings/)

博客透明、鼠标等美化: [Docker系列 WordPress系列
特效 - Bensz (hwb0307.com)](https://blognas.hwb0307.com/linux/docker/744#comment-918)

博客添加音乐插件: https://echeverra.cn/aplayer

Argon主题 GitHub地址:[solstice23/argon-theme: ? Argon

Argon主题作者博客solstice23 – Blog

Argon主题使用文档Argon Theme Docs (solstice23.top)

FAQ

如果遇到问题无法解决,请参考以下途径

  1. B站视频:博客搭建常见问题汇总哔哩哔哩bilibili
  2. 翻翻评论区,已经有许多问题提出和解决了,大部分都一样
  3. 查看官方文档

如果问题还未解决,请评论区留言

一些话

很开心这篇美化文章能够帮助到大家,如果转载请标注原文地址哦,十分感谢!

Argon主题博客美化

作者Echo
2022年10月21日 18:09

前言

常言道:工欲善其事必先利其器,在发表文章前,美化博客,使其利于自己的观看与管理极其重要,所以我四处搜寻,得到了以下美化代码。

但是,有时候我们走得太远,会忘了为什么出发。希望阅览本文章的人不要忘记初心,想想一开始为什么搭建博客。我相信大部分朋友都是为了记录自己学习笔记,生活故事。

所以,有时候博客美化过度会适得其反,望各位仔细斟酌,莫要使自己的博客变成了花架子,好的文章才是博客之本,立足之根。


主题资源

链接:https://pan.baidu.com/s/1hamo74DR40Kx4JmhbSyk_w

提取码:1111


我的博客美化 JSON

注意:可复制一键导入

{"argon_theme_color":"#5e72e4","argon_theme_color_hex_preview":"#5e72e4","argon_show_customize_theme_color_picker":true,"argon_enable_immersion_color":"true","argon_darkmode_autoswitch":"time","argon_enable_amoled_dark":"false","argon_card_radius":"15","argon_card_shadow":"default","argon_page_layout":"double","argon_article_list_waterflow":"2","argon_article_list_layout":"1","argon_font":"serif","argon_assets_path":"sourcegcdn","argon_custom_assets_path":"","argon_wp_path":"/","argon_dateformat":"YMD","argon_enable_headroom":"true","argon_toolbar_title":"Echo","argon_toolbar_icon":"","argon_toolbar_icon_link":" ","argon_toolbar_blur":"true","argon_banner_title":"Echo‘s blog","argon_banner_subtitle":"韶华不为少年留  恨悠悠  几时休","argon_banner_size":"fullscreen","argon_page_background_banner_style":"transparent","argon_show_toolbar_mask":true,"argon_banner_background_url":"--bing--","argon_banner_background_color_type":"shape-primary","argon_banner_background_hide_shapes":true,"argon_enable_banner_title_typing_effect":"true","argon_banner_typing_effect_interval":"100","argon_page_background_url":"https://yy.liveout.cn/background/wallhaven-yxjm57_1920x1080.png","argon_page_background_dark_url":"https://yy.liveout.cn/background/wallhaven-6dqjdl_1920x1080.png","argon_page_background_opacity":"1","argon_sidebar_banner_title":"公告","argon_sidebar_banner_subtitle":"欢迎在小E 的茶馆休憩。相逢何必曾相识,但喜欢闲聊的可以加群:688329809","argon_sidebar_auther_name":"Echo","argon_sidebar_auther_image":"https://yy.liveout.cn/photo/photo1.png","argon_sidebar_author_description":"一个IoT专业混吃等死的小废物","argon_sidebar_announcement":"","argon_fab_show_settings_button":"false","argon_fab_show_darkmode_button":"true","argon_fab_show_gotocomment_button":"false","argon_seo_description":"一个纪录生活以及学习笔记的个人博客","argon_seo_keywords":"博客,Java,Linux,C语言,IoT,物联网","argon_article_meta":"time|categories|views","argon_show_readingtime":"true","argon_reading_speed":"580","argon_reading_speed_en":"80","argon_reading_speed_code":"10","argon_show_thumbnail_in_banner_in_content_page":"false","argon_first_image_as_thumbnail_by_default":"true","argon_reference_list_title":"参考","argon_show_sharebtn":"true","argon_show_headindex_number":"false","argon_donate_qrcode_url":"https://www.liveout.cn/wp-content/uploads/2022/10/wechat1.jpg","argon_additional_content_after_post":"如果觉得本文对您有所帮助,可以支持下博主,一分也是缘😊","argon_related_post":"category,tag","argon_related_post_sort_orderby":"meta_value_num","argon_related_post_sort_order":"DESC","argon_related_post_limit":"10","argon_article_header_style":"article-header-style-2","argon_outdated_info_time_type":"createdtime","argon_outdated_info_days":"1","argon_outdated_info_tip_type":"inpost","argon_outdated_info_tip_content":"本文最后更新于%modify_date_delta% 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com","argon_archives_timeline_show_month":"true","argon_archives_timeline_url":"https://www.liveout.cn/pigeonhole/","argon_footer_html":"<style>\n/* 核心样式 */\n.github-badge {\ndisplay: inline-block;\nborder-radius: 4px;\ntext-shadow: none;\nfont-size: 13.1px;\ncolor: #fff;\nline-height: 15px;\nmargin-bottom: 5px;\nfont-family: \"Open Sans\", sans-serif;\n}\n.github-badge .badge-subject {\ndisplay: inline-block;\nbackground-color: #4d4d4d;\npadding: 4px 4px 4px 6px;\nborder-top-left-radius: 4px;\nborder-bottom-left-radius: 4px;\nfont-family: \"Open Sans\", sans-serif;\n}\n.github-badge .badge-value {\ndisplay: inline-block;\npadding: 4px 6px 4px 4px;\nborder-top-right-radius: 4px;\nborder-bottom-right-radius: 4px;\nfont-family: \"Open Sans\", sans-serif;\n}\n.github-badge-big {\ndisplay: inline-block;\nborder-radius: 6px;\ntext-shadow: none;\nfont-size: 14.1px;\ncolor: #fff;\nline-height: 18px;\nmargin-bottom: 7px;\n}\n.github-badge-big .badge-subject {\ndisplay: inline-block;\nbackground-color: #4d4d4d;\npadding: 4px 4px 4px 6px;\nborder-top-left-radius: 4px;\nborder-bottom-left-radius: 4px;\n}\n.github-badge-big .badge-value {\ndisplay: inline-block;\npadding: 4px 6px 4px 4px;\nborder-top-right-radius: 4px;\nborder-bottom-right-radius: 4px;\n}\n.bg-orange {\nbackground-color: #ec8a64 !important;\n}\n.bg-red {\nbackground-color: #cb7574 !important;\n}\n.bg-apricots {\nbackground-color: #f7c280 !important;\n}\n.bg-casein {\nbackground-color: #dfe291 !important;\n}\n.bg-shallots {\nbackground-color: #97c3c6 !important;\n}\n.bg-ogling {\nbackground-color: #95c7e0 !important;\n}\n.bg-haze {\nbackground-color: #9aaec7 !important;\n}\n.bg-mountain-terrier {\nbackground-color: #99a5cd !important;\n}\n</style>\n \n<div class=\"github-badge-big\">\n<span class=\"badge-subject\"><i class=\"fa fa-id-card\"></i> 备案号 </span\n><span class=\"badge-value bg-orange\">\n<a href=\"https://beian.miit.gov.cn/\" target=\"_blank\" one-link-mark=\"yes\"\n>苏ICP备2022020194号</a\n>\n|\n<a\nhref=\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode= 32072202010255\"\ntarget=\"_blank\"\none-link-mark=\"yes\"\n>苏公网安备 32072202010255号</a\n></span\n>\n</div>\n\n \n<div class=\"github-badge\">\n<span class=\"badge-subject\"><img src=\"https://www.liveout.cn/wp-content/uploads/2022/10/又拍云_logo4.png\" height=\"20\" width=\"20\"/></i> CDN</span\n><span class=\"badge-value bg-shallots\"\n><a href=\"\" target=\"_blank\" one-link-mark=\"yes\"></a\n><a\nhref=\"https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral\"\ntarget=\"_blank\"\none-link-mark=\"yes\"\n>Upyun</a\n></span\n>\n<span class=\"badge-subject\"><i class=\"fa fa-wordpress\"></i> Powered</span\n><span class=\"badge-value bg-green\"\n><a href=\"https://cn.wordpress.org/\" target=\"_blank\" one-link-mark=\"yes\"\n>WordPress</a\n></span\n>\n</div>\n<div class=\"github-badge-big\">\n<span class=\"badge-subject\">Copyright </span\n><span class=\"badge-value bg-red\">\n2022-2022\n<i class=\"fa fa-copyright\"></i> Echo</span\n>\n</script>\n</div>\n<div class=\"github-badge-big\">\n<span class=\"badge-subject\"><i class=\"fa fa-clock-o\"></i> Running Time</span\n><span class=\"badge-value bg-apricots\"\n><span id=\"blog_running_days\" class=\"odometer odometer-auto-theme\"></span>\ndays\n<span id=\"blog_running_hours\" class=\"odometer odometer-auto-theme\"></span> H\n<span id=\"blog_running_mins\" class=\"odometer odometer-auto-theme\"></span> M\n<span id=\"blog_running_secs\" class=\"odometer odometer-auto-theme\"></span>\nS</span\n>\n <script no-pjax=\"\">\nvar blog_running_days = document.getElementById(\"blog_running_days\");\nvar blog_running_hours = document.getElementById(\"blog_running_hours\");\nvar blog_running_mins = document.getElementById(\"blog_running_mins\");\nvar blog_running_secs = document.getElementById(\"blog_running_secs\");\nfunction refresh_blog_running_time() {\nvar time = new Date() - new Date(2022, 3, 27, 0, 0, 0);\nvar d = parseInt(time / 24 / 60 / 60 / 1000);\nvar h = parseInt((time % (24 * 60 * 60 * 1000)) / 60 / 60 / 1000);\nvar m = parseInt((time % (60 * 60 * 1000)) / 60 / 1000);\nvar s = parseInt((time % (60 * 1000)) / 1000);\nblog_running_days.innerHTML = d;\nblog_running_hours.innerHTML = h;\nblog_running_mins.innerHTML = m;\nblog_running_secs.innerHTML = s;\n}\nrefresh_blog_running_time();\nif (typeof bottomTimeIntervalHasSet == \"undefined\") {\nvar bottomTimeIntervalHasSet = true;\nsetInterval(function () {\nrefresh_blog_running_time();\n}, 500);\n}\n</script>\n","argon_enable_code_highlight":"true","argon_code_theme":"vs2015","argon_code_highlight_hide_linenumber":"true","argon_code_highlight_break_line":"false","argon_code_highlight_transparent_linenumber":"false","argon_math_render":"none","argon_mathjax_cdn_url":"//cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js","argon_mathjax_v2_cdn_url":"//cdn.jsdelivr.net/npm/mathjax@2.7.5/MathJax.js?config=TeX-AMS_HTML","argon_katex_cdn_url":"//cdn.jsdelivr.net/npm/katex@0.11.1/dist/","argon_enable_lazyload":"true","argon_lazyload_threshold":"800","argon_lazyload_effect":"fadeIn","argon_lazyload_loading_style":"1","argon_enable_fancybox":"true","argon_enable_zoomify":"false","argon_zoomify_duration":"200","argon_zoomify_easing":"cubic-bezier(0.4,0,0,1)","argon_zoomify_scale":"0.9","argon_enable_pangu":"article","argon_custom_html_head":"","argon_custom_html_foot":"<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css\">\n<script src=\"https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/meting@2.0.1/dist/Meting.min.js\"></script>\n \n<meting-js \n    server=\"netease\" \n    type=\"playlist\" \n    id=\"7373135320\"\n    fixed=\"true\" \n    mini=\"true\"\n    order=\"list\"\n    loop=\"all\"\n    preload=\"auto\"\n    list-folded=\"true\"\n    lrc-type=\"0\"\n>\n</meting-js>\n\n\n","argon_enable_smoothscroll_type":"1_pulse","argon_enable_into_article_animation":"true","argon_disable_pjax_animation":"false","argon_comment_pagination_type":"page","argon_comment_emotion_keyboard":"true","argon_hide_name_email_site_input":"false","argon_comment_need_captcha":"false","argon_get_captcha_by_ajax":"false","argon_comment_allow_markdown":"true","argon_comment_allow_editing":"true","argon_comment_allow_privatemode":"true","argon_comment_allow_mailnotice":"true","argon_comment_mailnotice_checkbox_checked":true,"argon_comment_enable_qq_avatar":"true","argon_comment_avatar_vcenter":"false","argon_who_can_visit_comment_edit_history":"commentsender","argon_enable_comment_pinning":"true","argon_enable_comment_upvote":"true","argon_comment_ua":"platform,browser","argon_show_comment_parent_info":"true","argon_fold_long_comments":"true","argon_gravatar_cdn":"gravatar.pho.ink/avatar/","argon_text_gravatar":"true","argon_enable_search_filters":"true","argon_search_filters_type":"*post,*page,shuoshuo","argon_pjax_disabled":"false","argon_hide_categories":"","argon_enable_login_css":"true","argon_home_show_shuoshuo":"false","argon_fold_long_shuoshuo":"true","argon_enable_timezone_fix":"false","argon_hide_shortcode_in_preview":"true","argon_trim_words_count":"0","argon_enable_mobile_scale":"false","argon_disable_googlefont":"false","argon_disable_codeblock_style":"false","argon_update_source":"github","argon_hide_footer_author":"true"}

年度倒计时显示(左侧栏)

在左侧栏里添加工具——简码,复制一下代码粘贴进去

<div class="progress-wrapper" style="padding: 0">
<div class="progress-info">
<div class="progress-label">
<span id="yearprogress_yearname"></span>
</div>
<div id="yearprogress_text_container" class="progress-percentage">
<span id="yearprogress_progresstext"></span>
<span id="yearprogress_progresstext_full"></span>
</div>
</div>
<div class="progress">
<div id="yearprogress_progressbar" class="progress-bar bg-primary"></div>
</div>
</div>
<script no-pjax="">
function yearprogress_refresh() {
let year = new Date().getFullYear();
$("#yearprogress_yearname").text(year);
let from = new Date(year, 0, 1, 0, 0, 0);
let to = new Date(year, 11, 31, 23, 59, 59);
let now = new Date();
let progress = (((now - from) / (to - from + 1)) * 100).toFixed(7);
let progressshort = (((now - from) / (to - from + 1)) * 100).toFixed(2);
$("#yearprogress_progresstext").text(progressshort + "%");
$("#yearprogress_progresstext_full").text(progress + "%");
$("#yearprogress_progressbar").css("width", progress + "%");
}
yearprogress_refresh();
if (typeof yearProgressIntervalHasSet == "undefined") {
var yearProgressIntervalHasSet = true;
setInterval(function () {
yearprogress_refresh();
}, 500);
}
</script>
<style>
#yearprogress_text_container {
width: 100%;
height: 22px;
overflow: hidden;
user-select: none;
}
#yearprogress_text_container > span {
transition: all 0.3s ease;
display: block;
}
#yearprogress_text_container:hover > span {
transform: translateY(-20px);
}
</style>

音乐播放功能

server="netease" 指定音乐平台为网易云,type="song" 指单曲类型,id="7373135320" 为音乐的 id(这里的id为打开音乐歌单,网址显示的id)

开启吸底模式 fixed="true", 开启迷你模式 mini="true", 随机播放 order="random", 关闭底部歌词 lrc-type="0"

注意:id需要为自己创建的歌单,不能为我喜欢的音乐;server可以改自己用的音乐平台,如netease(网易云)、tencent(QQ音乐)

具体参数设置点击此链接:https://yy.liveout.cn/article/Learn/front-end/aplayer%E5%8F%82%E6%95%B0.png

Aplayer播放器官网文档:APlayer HTML5音乐播放器 | ACE-BLOG (ace520.github.io)

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/meting@2.0.1/dist/Meting.min.js"></script>
 
<meting-js 
    server="netease" 
    type="playlist" 
    id="7360465359"
    fixed="true" 
    mini="true"
    order="random"
    loop="all"
    preload="auto"
    list-folded="false">
</meting-js>

动态背景

背景可以通过更改 url 链接设置为自己的动态视频尽量不要太大,否则别人访问时会刷新许久

<video
src="https://new.gcxstudio.cn/wp-content/uploads/2022/03/daymode.mp4" /*白天动态视频链接*/
class="bg-video bg-video-day"
autoplay=""
loop="loop"
muted=""
></video>
<video
src="https://new.gcxstudio.cn/wp-content/uploads/2022/03/darkmode.webm" /*夜间动态视频链接*/
class="bg-video bg-video-night"
autoplay=""
loop="loop"
muted=""
></video>
<style>
video.bg-video {
position: fixed;
z-index: -1;
left: 0;
right: 0;
top: 0;
bottom: 0;
width: 100vw;
height: 100vh;
object-fit: cover;
pointer-events: none;
}
html.darkmode video.bg-video.bg-video-day {
opacity: 0;
}
html.darkmode video.bg-video.bg-video-night {
opacity: 1;
}
video.bg-video.bg-video-day {
opacity: 1;
}
video.bg-video.bg-video-night {
opacity: 0;
}
#banner,
#banner .shape {
background: transparent !important;
}
* {
font-family: "Comfortaa", "Open Sans", -apple-system, system-ui,
BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial,
"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", SimSun, sans-serif;
}
</style>
<script
src="https://api.gcxstudio.cn/odometer/odometer.min.js"
integrity="sha256-65R1G5irU1VT+k8L4coqgd3saSvO/Wufson/w+v2Idw="
crossorigin="anonymous"
></script>


<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>

<div id='aplayer'></div>


虚拟人物(看板娘)

以下代码选择一项复制即可,效果不同,自行选择

具体文章:stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platform (github.com)

<script src="https://fastly.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js"></script>
  1. 其中 jsonpath: 后面的链接可按自己爱好更改,选择别的虚拟人物
<script src="https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js"></script>
<script>
    L2Dwidget.init({
        "model": {
       //jsonpath控制显示那个小萝莉模型,
            //(切换模型需要改动)
//              "https://unpkg.com/(live2d-widget-model-koharu)@1.0.5/assets/(koharu).model.json"
            jsonPath: "https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json",
            "scale": 1
        },
        "display": {
            "position": "right", //看板娘的表现位置
            "width": 75,  //小萝莉的宽度
            "height": 150, //小萝莉的高度
            "hOffset": 0,
            "vOffset": -20
        },
        "mobile": {
            "show": true,
            "scale": 0.5
        },
        "react": {
            "opacityDefault": 0.7,
            "opacityOnHover": 0.2
        }
    });
</script>

   /*   小帅哥: https://unpkg.com/live2d-widget-model-chitose@1.0.5/assets/chitose.model.json
      萌娘:https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json
      白猫:https://unpkg.com/live2d-widget-model-tororo@1.0.5/assets/tororo.model.json
      黑猫: https://unpkg.com/live2d-widget-model-hijiki@1.0.5/assets/hijiki.model.json
      小可爱(女):https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json
      小可爱(男):https://unpkg.com/live2d-widget-model-haruto@1.0.5/assets/haruto.model.json
      初音:https://unpkg.com/live2d-widget-model-miku@1.0.5/assets/miku.model.json
      圣职者妹妹:https://unpkg.com/live2d-widget-model-z16@1.0.5/assets/z16.model.json
      茶杯犬:https://cdn.jsdelivr.net/npm/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json
      绿毛妹妹:https://unpkg.com/live2d-widget-model-tsumiki@1.0.5/assets/tsumiki.model.json
      金龟子妹妹:https://unpkg.com/live2d-widget-model-unitychan@1.0.5/assets/unitychan.model.json
      https://unpkg.com/live2d-widget-model-nito@1.0.5/assets/nito.model.json
      https://unpkg.com/live2d-widget-model-ni-j@1.0.5/assets/ni-j.model.json
      小阿狸: https://unpkg.com/live2d-widget-model-nico@1.0.5/assets/nico.model.json
      https://unpkg.com/live2d-widget-model-nietzche@1.0.5/assets/nietzche.model.json
      https://unpkg.com/live2d-widget-model-nipsilon@1.0.5/assets/nipsilon.model.json
      女学生: https://unpkg.com/live2d-widget-model-hibiki@1.0.5/assets/hibiki.model.json */

网站访问数据(左侧栏)

  1. 进入Wordpress,点击插件,搜索并且下载 Wp Statistics
  2. 外观——小工具——站点额外内容——旧版小工具——统计

网站统计


网站底部信息

CSS(样式表)

<style>
/* 核心样式 */
.github-badge {
display: inline-block;
border-radius: 4px;
text-shadow: none;
font-size: 13.1px;
color: #fff;
line-height: 15px;
margin-bottom: 5px;
font-family: "Open Sans", sans-serif;
}
.github-badge .badge-subject {
display: inline-block;
background-color: #4d4d4d;
padding: 4px 4px 4px 6px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
font-family: "Open Sans", sans-serif;
}
.github-badge .badge-value {
display: inline-block;
padding: 4px 6px 4px 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
font-family: "Open Sans", sans-serif;
}
.github-badge-big {
display: inline-block;
border-radius: 6px;
text-shadow: none;
font-size: 14.1px;
color: #fff;
line-height: 18px;
margin-bottom: 7px;
}
.github-badge-big .badge-subject {
display: inline-block;
background-color: #4d4d4d;
padding: 4px 4px 4px 6px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.github-badge-big .badge-value {
display: inline-block;
padding: 4px 6px 4px 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.bg-orange {
background-color: #ec8a64 !important;
}
.bg-red {
background-color: #cb7574 !important;
}
.bg-apricots {
background-color: #f7c280 !important;
}
.bg-casein {
background-color: #dfe291 !important;
}
.bg-shallots {
background-color: #97c3c6 !important;
}
.bg-ogling {
background-color: #95c7e0 !important;
}
.bg-haze {
background-color: #9aaec7 !important;
}
.bg-mountain-terrier {
background-color: #99a5cd !important;
}
</style>

HTML(底部信息)

<div class="github-badge-big">
<span class="badge-subject"><i class="fa fa-id-card"></i> 备案号 </span
><span class="badge-value bg-orange">
<a href="https://beian.miit.gov.cn/" target="_blank" one-link-mark="yes"
>苏ICP备2022020194号</a
>
|
<a
href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode= 32072202010255"
target="_blank"
one-link-mark="yes"
>苏公网安备 32072202010255号</a
></span
>
</div>
<div class="github-badge-big">
<span class="badge-subject">Copyright </span
><span class="badge-value bg-red">
2022-2022
<i class="fa fa-copyright"></i> Echo</span
>
</script>
</div>

<div class="github-badge">
<span class="badge-subject"><i class="fa fa-wordpress"></i> Powered</span
><span class="badge-value bg-green"
><a href="https://cn.wordpress.org/" target="_blank" one-link-mark="yes"
>WordPress</a
></span
>
</div>
<div class="github-badge-big">
<span class="badge-subject"><i class="fa fa-clock-o"></i> Running Time</span
><span class="badge-value bg-apricots"
><span id="blog_running_days" class="odometer odometer-auto-theme"></span>
days
<span id="blog_running_hours" class="odometer odometer-auto-theme"></span> H
<span id="blog_running_mins" class="odometer odometer-auto-theme"></span> M
<span id="blog_running_secs" class="odometer odometer-auto-theme"></span>
S</span
>

JavaScript(网站运行时间脚本)

注意:new Date( year, month, date, hrs, min, sec) 按给定的参数创建 日期对象

其中month的值域为0~11,0代表1月,11表代表12月;所以你输入的月份需要为自己真正月份的前一个月

<script no-pjax="">
var blog_running_days = document.getElementById("blog_running_days");
var blog_running_hours = document.getElementById("blog_running_hours");
var blog_running_mins = document.getElementById("blog_running_mins");
var blog_running_secs = document.getElementById("blog_running_secs");
function refresh_blog_running_time() {
var time = new Date() - new Date(2022, 5, 31, 0, 0, 0); /*此处日期的月份改为自己真正月份的前一个月*/
var d = parseInt(time / 24 / 60 / 60 / 1000);
var h = parseInt((time % (24 * 60 * 60 * 1000)) / 60 / 60 / 1000);
var m = parseInt((time % (60 * 60 * 1000)) / 60 / 1000);
var s = parseInt((time % (60 * 1000)) / 1000);
blog_running_days.innerHTML = d;
blog_running_hours.innerHTML = h;
blog_running_mins.innerHTML = m;
blog_running_secs.innerHTML = s;
}
refresh_blog_running_time();
if (typeof bottomTimeIntervalHasSet == "undefined") {
var bottomTimeIntervalHasSet = true;
setInterval(function () {
refresh_blog_running_time();
}, 500);
}
</script>

相关链接

本文所涉及的代码出自以下博客文章,十分感谢下面各位大佬的分享

个人博客Echo's blog

关于 Argon 主题 更多美化内容文章Argon 主题的美化设置 - Gong_cx (gcxstudio.cn)

关于博客中添加音乐插件: https://echeverra.cn/aplayer

Argon主题 GitHub地址solstice23/argon-theme: 📖 Argon - 一个轻盈、简洁的 WordPress 主题 (github.com)

Argon主题制作人博客solstice23 – Blog

Argon主题使用文档首页 - Argon Theme Docs (solstice23.top)

Python的函数

2026年1月10日 00:00

本文未完待续

1.定义

1.函数代码以def关键字开头,后接函数标识符名称和圆括号()
2.任何传入的参数和自变量必须放在圆括号内,圆括号中定义参数
3.函数内容以冒号:开始,需要缩进
4.return表达式结束函数,返回一个值给调用方,不带表达式的return相当于返回None

def 函数名(参数列表):    函数体    return 返回值

例:

def greet(name, age):    print("Hello World")

2.类型注解 Type Hints

Python函数参数不需要声明类型,解释器会自动推断,但是会带来难以理解,隐藏BUG,开发效率低下等问题,因此类型注解通过引入可选的类型信息解决这些问题,明确指出函数和返回值的类型,让代码更加健壮可维护。

在实现复杂逻辑和对外提供公共接口时,都应当使用类型注解

例:
func.py

def greet(name: str, age: int) -> str:    return f"Hello  World {name}, age {age}"

但是,调用时仍然可以不遵守

func.py

def greet(name: str, age: int) -> str:    return f"Hello  World {name}, age {age}"if __name__ == '__main__':    print( greet('lzj', 12.6) )

此时可以通过mypy工具包,对我们的代码进行检测,会检测出问题

先安装mypy工具 pip install mypy,再进行检测

PS D:\PycharmProjects\python-lang-test> mypy .\func\func.pyfunc\func.py:5: error: Argument 2 to "greet" has incompatible type "float"; expected "int"  [arg-type]Found 1 error in 1 file (checked 1 source file)

如果要彻底避免,需要进行严格类型检查

def add(a: int, b: int) -> int:    if not isinstance(a, int):        raise TypeError(f"参数a期望类型int,实际传入{type(a).__name__}")    if not isinstance(b, int):        raise TypeError(f"参数b期望类型int,实际传入{type(b).__name__}")    return a + bresult2 = add('5', 3)print(result2)
Traceback (most recent call last):  File "D:\PycharmProjects\python-lang-test\func\func.py", line 9, in <module>    result2 = add('5', 3)  File "D:\PycharmProjects\python-lang-test\func\func.py", line 4, in add    raise TypeError(f"参数a期望类型int,实际传入{type(a).__name__}")TypeError: 参数a期望类型int,实际传入str

对于参数是复杂数据类型的写法

from typing import List, Dict, Tuple, Set#  只包含整数的列表lst: List[int] = [1, 2, 3, 4, 5] # List<Integer> numbers#  键为字符串、值为整数的字典dic: Dict[str, int] = {"z3": 95, "li4": 88}#  包含整数、字符串、布尔值的元组tup: Tuple[int, str, bool] = (25, "z3", True)#  只包含字符串的集合s: Set[str] = {"z3", "li4", "w5"}

在函数返回值是某种特定类型或None时使用Optional

例:dic.get(name)可能返回字典的值,也可能在没有值时返回None

from typing import Optionaldef age(name: str) -> Optional[int]:    dic = {'a':16, 'b':17, 'c':18}    return dic.get(name)if __name__ == '__main__':    print(age('dd'))    print(age('a'))
None16

2025年终总结

作者Echo
2026年2月24日 18:24
时间 等不了人
生活中 一不留神
转个眼秒杀了
随秒针蒸发了
昨天变成了今天
过去变成了现在
未来刚才来
它从何而来
岁月 眨眼就过了
瞬间 就那样默默的
上一次看 才二十三

属于懒癌晚期了,12 月想着写年终总结,结果一直拖到 2 月底、、、

此外,真的感觉一年比一年过得快啊有木有

眨眼就24 岁了,到了本命年了,然而上一次 12 岁过年的记忆却一点也没有。先祝大家新年快乐吧~

2025 也算是人生中的一次转折点吧。换了一座城市,重新开始另一段求学之旅。

上半年依旧是在无聊且负收益的实习中度过,一直到 5 月底开始毕设答辩才结束。6 月基本上是最幸福的时候了,在学校的最后一个月,整体躺在宿舍打游戏,享受最后的大学时光,

暑假一晃而过,就到了开学的时候。下半年开始适应新的环境,结果吐槽到学期结束。

学校的宿舍满满的叙利亚风格,堪比战犯营,这一点是最受不了的。此外学院为了阻止学生出去实习,修改了奖学金政策,除了绩点,还需要去参加各种文娱活动、学术会议等,就连入学奖学金也降低了,属实是恶心到家了。

不过北京毕竟寸土寸金的,能有宿舍也算不错了。本来想着北京好找实习,特地选了这,结果学校放实习的导师寥寥无几,不过导师虽然研三才放人,但是平时对人也挺好,也算是不信中的万幸了。平时除了上课,就是在工位学点东西,顺便帮导师干干小活。每天中午起,健个身,下午去工位,凌晨回宿舍。每次感慨一天怎么过的这么快,仔细想想起床时候已经过了半天了。

期间一直在寻找就业方向,虽然一直打算干嵌入式,但是细分却不知道去做什么,后面独自摸索打算走驱动方向,并且跟着正点原子的教程学了下去,现在差不多也完结了。

后来想偷偷出去实习,可惜简历实在稀烂,回复基本寥寥无几,而且时间基本要求长期,本打算加上寒假实习 3 个月,结果一听实习时长直接拒了。此外,虽然北京互联网厂很多,但是电子类感觉还是南方深圳岗位多点,而且周围学历全是 211 起步,属实拼不过别人,哎。后面就妥协了,既然没法实习,就继续深耕,做点有含金量的项目吧。

这一年大模型的发展让我见识到了什么才叫 人工智能。这学期的课设等所有代码项目全部靠大模型完成。Gemini、Copilot、Chagpt 是用的最多的,幸亏前两个有学生认证优惠,也属于薅到羊毛了。现在如果离了这些,估计一点代码也写不出来了。

除了学习外,也开始探索北京这座城市,去了雍和宫、什刹海、圆明园、颐和园等。寒假前趁着放假人少,也和室友成功约上了清华,去参观了下,小时候的梦也算实现了一半,哈哈哈哈。北京确实是一个让人向往的地方,也难怪这么多北漂,不知道以后会不会成为里面的一员。

就这样,一年也就过去了,也到了我的本命年,不过本命年好像犯太岁,希望今年可以一帆风顺点。

实习小记

作者Echo
2025年2月18日 11:16

实习


从实习到现在,差不多两个月了。每天早上7点准时起来,然后挤地铁,八点多到医院。中午和同学一起吃饭,下午 4.30 准时下班走人。
日复一日,期间看完了python基础,做了个基于Django框架的网站项目,不过也是看着书照葫芦画瓢,了解了下基本框架。想着用于考研复试,可惜有没有机会都不知道。
2月4号回到医院,一个月轮一个岗,好在目前都挺闲,想着如果考不上,就直接找工作,于是看了本《C++ Primer》。然而随着考研出分日期越来越接近,已经完全看不下去了,就像一个等待行刑的罪犯一样,一点学习的念头都没有。

韩剧

周末无聊的刷着抖音,突然蹦出来一个04年的古着韩剧,名字叫《对不起,我爱你》
剧情简介:

车武赫(苏志燮饰)似乎是一个注定被上帝遗忘的人。刚出生就被父母抛弃的他从小受尽澳大利亚养父的虐待,直到流浪街头与韩裔女孩智英(崔汝珍饰)相遇后才以为终于找到了真情。虚伪的智英最后为了钱弃他而去,为了保护智英,一颗子弹却永远地留在了武赫的脑袋里。回到韩国后,武赫看到亲生母亲(李慧英饰)和弟弟崔允(郑敬淏饰)过着与自己截然不同的富裕生活,于是复仇之火在武赫心中熊熊燃起。在复仇的过程中,武赫爱上了与弟弟青梅竹马的恩彩(林秀晶饰),并为了她逐渐放弃了复仇的计划。最后为了拯救出车祸的弟弟,武赫不惜牺牲自己的生命捐出心脏,而失去此生最爱的恩彩最终也选择在武赫的墓前结束自己的生命。

看讲解挺有意思的,于是特地搜了下,发现全网都是战损画质,毕竟是04年,我也就早出生两岁。后来翻评论,得知B站有4K修复版,链接贴在这里了:【【4K】对不起我爱你】
怪不得女生都喜欢看韩剧,尤其是零几年的时候,现在终于是感同身受了。
剧情现在听起来挺狗血的,但是后劲还是挺大的,尤其是女主最后殉情的时候,害。 ps:恩彩太好看了吧

剧中的歌曲也非常nice,中日韩三个版本都有,这里贴个剧中的吧:
现在真恨自己手贱,为什么特地找来看看,以至于现在都有点恍惚。在这里推荐下这部剧,如果太闲了,一定要看下~

健身

考研一年胖了十斤,也是这一年为数不多的收获了。由于天生的外胚体质,吸收不好,消耗还多,从小瘦到现在。
考研前也一直有想要健身的念头,奈何没有坚定的决心,不好意思在宿舍锻炼,也怕没有时间。更没有勇气走进健身房,毕竟细胳膊细腿的,害怕别人的眼光。
考研这一年,学校特地找了个大的自习室,装修成了健身房。正好考完研,于是踏出了人生中的第一步,去了学校健身房开始健身。
奈何好景不长,学生们陆续考完试,回家了,健身房开门时间也变短了,正好在我下班后关门。于是便在宿舍举起了哑铃,跟着网上三分化计划进行训练。期间买了米糊,用来补充碳水,进行增重。过年后又买了桶蛋白粉,补充蛋白质摄入。
记得第一次进入健身房,便开始猛练,当天还没啥反应,结果第二天变成了螳螂臂,手都伸不直,休息了四天才好。后来再去就好多了。期间右手腕也伤着了,一用力手筋就疼,于是便买了个护腕。幸运的是,付出有了点回报,手臂终于有了点形状。

吐槽

现在每天浑浑噩噩的,上班就是睡觉、刷抖音。唯一有点期望的就是回到宿舍进行健身了,然后就是趴在床上进行emo了。
不知道是因为受了那部韩剧的影响,还是因为要出分了,又或者想起某人了,最近总感觉一点精神都没有,有点人生没有意义的感觉。
不过这些应该也是正常现象吧,毕竟濒临毕业,马上结束仅剩的校园时光,正常人都会有的迷茫时刻。想起易中天形容刘备的那句话:

前途光明我看不见,道路曲折我走不完
哈哈,记得高中时候捧着太宰治的《人间失格》,看完后却也感觉不出什么。就如辛弃疾所说:
少年不识愁滋味,爱上层楼。爱上层楼,为赋新词强说愁。
而今识尽愁滋味,欲说还休。欲说还休,却道“天凉好个秋”!
尽管现在也是不识愁滋味,但是每个时间段,总有特定的困惑,对吧。
由于太过无聊,又想着博客好久没更新了,于是便写篇实习小记,正好又水了一篇文章

2024年终总结

作者Echo
2025年1月2日 14:23

又到了一年一度的年终总结时候了,博客最近的一次文章还是去年的年终总结,害,这一年过的太快了~

前言

今年发生许多事,但是又感觉啥事没有(废话文学)。如果将这一年形容为打游戏的话,主线就是考研,支线就是旅途上的各种趣事了。
下面就开始流水账了,也算是给这一年的交代

博客

今年一直忙着考研,基本没怎么打理博客,虽然也没啥好打理的。唯一一个让人心烦的就是又拍云的cdn被刷了两次吧。
一次是群体性的,好多博主被刷了,当时损失还小,几十块钱吧。经过这件事后长了记性,让又拍云客服设置了每日额度提醒。结果后来又被刷了一次,两百多,第二天才有提醒。找了又拍云客服算帐,最后给了二百多代金劵,但是欠的费用必须自己充钱补了。
经过这件事后,我把图片以及字体全部托管到github上了,速度堪忧,所以有的文章图片会显示失败,现在也还没想到什么有效的方法,估计后面可能把图片全托管在服务器上了。
由于忙着考研,也有单纯懒的原因,关于主题博客等相关问题,除了一开始回复了下,后面基本没回复过了,不过评论区也有好心人会回复这些咨询,这里感谢下他们。
除了这些外,一直有个想法,就是换个框架,把文章迁移到typecho上。后来由于迁移中出错,以及觉得太麻烦了,就放弃了,不知道后面会不会实现。

考研

今年考研人数继续下降,反之,考公人数再次增长。这个时代,似乎到处都是路,但是每条路上都挤满了人。
下面这些话属于我的无病呻吟了,哈哈哈,见谅~
为了缓解就业压力,研究生再次扩招,可能很多人觉得现在考研变简单了,但是却很少人知道扩招的名额基本给了保研。除了这个以外,扩招的学校基本都是些学院或者刚改为大学的学校。关于读双非研究生到底有没有用,谁也给不了正确的答案。
有人觉得考研就是逃避就业,继续呆在温室里。但是,如果有好的工作的话,谁会去考研呢~(学术追求等除外)。我想大部分人考研应该是为了能找个更好的工作吧。现在的就业形势,学历越来越不够用了。公司招的要么就是三年经验起步,要么就是非92不要,可能会略显夸张。
谈谈我的考研历程吧,这次纯是流水账,诉说下自己的苦,可以跳过~
寒假时候在家里背了会单词书,看了点数据结构,正式开始应该是从3月开始备考。当时每天课很多,基本都是找零碎时间去自习室学习,有时候还会没有位置。期间还忙里偷闲爬了泰山。
四月末,突然群体改考408(计算机专业统考),虽然我心仪学校并未改考,但是自命题的竞争压力前所未有的增大,为了缓解我永远学不好的数学,我决定学408。专业课从一本书换成了四本。所幸本科有学过这些科目,虽然是浅尝辄止,但也还算有所了解。五一貌似整个假期都是在自习室过的,以及一起备考的室友和朋友。
后来开始放暑假了,由于学校不给留校,本来打算和室友一起在外面租个房子,可惜没啥好的地方可租,以及考虑到房租费,于是作罢,将书全部带回家,开始了两个月的自学。暑假最快乐的时候应该就是学累了打nba2k的时候,可以暂时忘掉考研的压力。记得当时学习时偷偷刷会抖音都会有股罪恶感,哈哈哈。
九月回校时感冒了一星期,和阳了差不多,当时黑神话正火,于是室友和我在宿舍玩了四天的黑神话,当时也是因为来得早,自习室也没啥人,于是就松懈了会。感冒好了就开足马力学习了。这个月应该是我学习效率最高的时候,整天都沉浸在知识里,哈哈,有一点点夸张。
期间基本没啥课了,每天8:30到自习室,晚上10点回宿舍,偶尔休息一会,也只敢休息一上午。
到了十月,本想在自习室学足7天,后来朋友来找我玩,以及学的确实太累了,便开始三天打鱼,两天晒网。后面就是考研预报名了,已经感觉到时间的紧迫了,但是还是一点不慌张,一直到网上确认,仍然是乐呵呵的心态。甚至11月底还抽空去了洛阳,爬了老君山。

接着就是十二月了,要上战场了,看到到手的肖四,开始慌张起来,一切计划都打乱了。开始早起到自习室背书,一背就是一上午。晚上回宿舍后还要在楼梯口背会,虽然没啥效果,只是感动自己罢了。
由于在其他学校考,20号便带着行李到了订的酒店,幸亏订的早,不然这价格都不用考研了,两晚能够炒到1k,真够离谱的。到酒店后全是兴奋感,不知道是要解放了,还是啥,一下午就那样过去了。晚上看着记不住的肖四,一筹莫展,一直背到12点才上床,结果1点多才睡着。早上5点又起床背肖四,直到进考场。
第一场考政治,这时候身体开始分泌物质了,也点也不困,只是做完选择,浏览完大题后,突然感觉这些天努力白费了。背的全在材料里原来不是梗。也不能怪肖四肖八没用,只能说命题组你做个人吧。对着材料换着花样抄,最后也就憋出一点字就交卷了。
下午就是英二了,先写的作文,感觉还挺简单,等到做阅读理解的时候,开始犯困了,而且文章越看越懵,和往年真题卷做的感觉一点也不一样。最后交卷时候改了三四个选择。回到酒店后开始思考人生了,感觉这次是完蛋了,哎,想哭
第二天上午考的数二,考完都说简单,对比往年确实,但是打小数学就不好,出考场后就发现积分算错了,这下好了,本来想靠英语拉下数学的,结果双双坠落了,中午一点饭没吃,默默看着专业课,祈祷能拯救自己。
下午的专业课就是中规中矩了,还是有许多不会,已经麻木了,不知不觉就交卷了,整个考研也结束了。
回顾备考之路,总有说不出道不明的感觉,没人会关心你苦不苦,只有结果能说明,只希望我的结果能好一点。
努力了吗?确实努力了。只是面对考试,还是有股力不从心,一切白干的感觉。
不过这一年也收获了许多,在自习室认识了许多很好的人,收到了许多小零食,哈哈哈哈。这里还是很感谢考研这条路,让我走进了自习室,收获了比以往更多的东西。

偷闲

考研期间一共爬了两座山,分别是泰山和老君山。
泰山是三月爬的,当时刚开始准备考研。干大事前总得有个标志性开始,于是便决定爬个泰山,来表决考研的决心。
太多细节已经记不清了,由于cdn欠费,也只能扔一张图片了~

接着就是11月底的老君山。当时刚从自习室回来,吃个晚饭再继续学。结果室友刷到了老君山下雪的视频。以及大学生免门票,便来了场说走就走的旅行。结果路上发现人太多,已经取消了,真够离谱的。
决定去爬后,当场定了凌晨的火车,回自习室把书收了,就开始收拾东西,准备出发。
坐了7个小时的硬座,终于到了洛阳站。不过硬座是真的没有体验,太闹腾了。后来发现还要再坐两个半小时的大巴,才能到老君山,差点猝死过去。
到了老君山后,先做了一级索道,然后开始爬山。雪还没有化,路有点滑,全是冰雪,不过风景独美。到达山顶时,全是雾,以为要带着失望回去了,结果出太阳了,完整的见证了整个规程,太壮观了,照片确实拍不出风景的美。
202402
勇敢的人,先享受世界
等到下山的时候,已经快6点了,还要再坐大巴回市里。此时已经又累又虚,本来打算坐高铁,结果赶不上了,便买了卧铺回去。不过也幸亏没赶上,便去了洛阳城楼那游玩了一番。

小姐姐很飒,哈哈哈

实习

按照学校安排,考完研后就开始没有工资的实习了,预计到5月底才结束。期间还得忙毕设以及复试(如果有希望的话)
每天7点起,匆忙洗漱,买点早饭就赶地铁了。不过好在实习不是很忙,老师都挺好,可以忙些其他的。有时间得考虑找个兼职,赚点钱,哎~。都要大四毕业了,还没开始赚钱,太悲哀了

且行且珍惜,今年失去了非常好的人,原因是我,没办法,我就是一个很矛盾的人,希望大家要珍惜眼前人
预计今年6月毕业,写个大学四年的终结吧。总感觉大一开学还在昨天,然而现在宿舍已经走了两个人了。
此外,在自习室遇到许多朋友,被投喂了好多,哈哈哈。
祝6号楼自习室的朋友们,期末考试顺利,早日解放。研友们成功上岸,金榜题名!
希望3月份,我们还能在自习室相遇~

❌