普通视图

Received today — 2025年6月10日技术

Bilibili、YouTube等视频网站频繁出现缓冲卡顿的解决方案

2025年6月9日 23:05

某一天开始,我发现电脑在使用外接 USB 音响播放 B 站视频时,大约在播放 1、2 分钟后,会突然卡住,缓冲一段时间后再开始播放,之后就一直重复缓冲、播放几秒到十几秒再次缓冲的过程,之后发现不仅仅是 bilibili,其实 YouTube 等其他视频网站都存在这个问题。
在一番搜索查找后终于知道问题所在:这个看似是网络卡顿的现象,居然是瑞昱(Realtek)的音频驱动导致的,不用 Realtek 驱动就可以解决问题。

Bilibili、YouTube等视频网站频繁出现缓冲卡顿的解决方案


播放缓冲卡顿故障表现细节

故障前提

  1. 必须是win10或win11系统
  2. 使用瑞昱(Realtek)声卡并安装了 Realtek 官方驱动

故障表现

  1. 在使用外接USB音响、蓝牙耳机、有线耳机、笔记本自己的音响等播放 Bilibili、YouTube、奈飞 等视频网站内视频时。如果视频一直在播放大概率不会出问题。
  2. 如果中间暂停视频一段时间后再播放,再次播放一段时间后会突然卡住,显示正在缓冲,缓冲一段时间后再开始播放,之后就一直重复缓冲、播放几秒到十几秒再次缓冲的过程。(如果暂停后马上恢复播放则大概率不会出现问题)

  3. 此时网络实际很通畅、使用视频网站的测试工具也显示不存在网络问题。

  4. USB音响可以通过拔下再插上恢复正常,蓝牙耳机可以通过关闭蓝牙再打开恢复正常,最不济可以通过重启电脑恢复正常。

  5. 但是过一段时间又出现上述状况,而且浏览器类型(起码我测试chrome、edge、Firefox都一样)、浏览器扩展(无痕模式、安全模式都有这个问题)、网络情况(获取直链后用工具下载时无任何问题)、用什么播放器(用potplayer播放网络URL也会出现这个问题)等等都无关。

故障解决

定位故障点

这个问题困扰了我很久,但奇怪的是我用蓝牙耳机播放时几乎从来不会出现这个问题,不过因为我一般都是用蓝牙耳机为主,对我影响不大,所以这个问题也就一直放着没管。

直到我看到了这篇文章《如何解决B站暂停视频后一直缓冲问题 – 龙鲲博客》 如同醍醐灌顶,我电脑的现象和博主的简直如出一辙。至于为何我用蓝牙耳机反而不会像原文所说的那样有问题呢,可能因为我使用了替换的蓝牙驱动吧。

卸载Realtek(R) Audio 的官方驱动

简单说就是 Realtek(R) Audio 的官方驱动有bug,卸载官方驱动后换成 Windows 自带的通用驱动,并防止 Windows 自动更新将驱动为 Realtek(R) Audio 官方驱动即可。

  1. 在开始菜单按钮上右键或在开始菜单里搜索「设备管理器」,找到「设备管理器」启动。
  2. 点开「声音、视频和游戏控制器」,找到「Realtek(R) Audio」,右键单击,选择「更新驱动程序」
    更新驱动程序

  3. 点击 「浏览我的计算机以查找驱动程序软件」

  4. 点击 「让我从计算机上的可用驱动程序列表中选择」

  5. 取消勾选「显示兼容硬件」,在左侧厂商框里找到并点击「Microsoft」,在右侧型号框内找到「High Definition Audio 设备 版本:XX.XX.XXX.YYYY [YYYY/MM/DD]」,选择版本号最大,日期最近的那个。

进阶步骤

因为有可能 windows 系统更新时还会自动安装 Realtek(R) Audio 的官方驱动,所以最好还是禁止一下。

通过组策略禁止自动更新驱动

仅限 Windows 专业版、企业版、服务器版等有组策略的系统
1. 按 「Win + R」,输入 「gpedit.msc」,回车打开「组策略编辑器」

  1. 依次展开:「计算机配置」 → 「管理模板」 → 「Windows 组件」 → 「Windows 更新」 → 「管理从 Windows 更新提供的更新」 → 双击左侧的「Windows 更新不包括驱动程序」 → 选择 已启用 → 点击「确定」

  1. (可选步骤)以管理员身份,在命令行中执行 gpupdate /force 让组策略强制生效。

通过注册表禁止自动更新驱动

  1. 按 「Win + R」,输入 「regedit」,回车,同意 UAC 提示。(如果有的话)
  2. 依次展开:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
    在窗口右侧,右键 → 新建 → [DWORD (32 位) 值」,命名为 ExcludeWUDriversInQualityUpdate

  1. 双击该值,将数值数据改为 「1」 → 点击 「确定」

  2. 重启系统生效。

The post Bilibili、YouTube等视频网站频繁出现缓冲卡顿的解决方案 appeared first on 秋风于渭水.

如何备份 Mastodon

2025年6月9日 22:09
备份 Mastodon 可以通过命令行工具 rclone 实现,将数据同步到云存储如 COS 和 R2。首先安装并配置 rclone,生成配置文件后编写备份脚本,包括 PostgreSQL 数据库和其他目录的备份。使用 cron 定时任务每天自动执行该脚本,并定期验证备份完整性以确保数据安全。此方法避免了面板带来的资源占用和潜在安全隐患,同时可以根据需求灵活调整备份内容和频率,实现高效可靠的数据保护。

Received yesterday — 2025年6月9日技术

从 dnsmasq 到 smartdns:打造一个靠谱的家庭 DNS 国内外查询分流系统

2025年6月9日 06:47

从 dnsmasq 到 smartdns:打造一个靠谱的家庭 DNS 国内外查询分流系统 无敌的个人博客 tangwudi

1 前言 之前,我写过一篇关于 dnscrypt-proxy 部署的文章(参见:dnscrypt-proxy(v2.1.8) 多场景配置指南:从上游部署到下游集成)。当时的架构是:利用Racknerd 的芝加哥 VPS 部署 dnscrypt-proxy,作为加密的 DNS 上游服务器(以DoH方式发布),而家庭数据中心的 AdGuard Home(因为AdGuard Home支持上游节点是DoH) 作为DNS 下游节点为内网设备服务 ,从而为家庭网络提供一个纯净、无污染、且支持加密传输的 DNS 服务。 不过,这种方案在实际使用中也存在一个局限:无法实现国内和国外 DNS 查询的分流解析。当然,这并不是因为 dnscrypt-proxy 本身不支持,而是它的分流机制更偏向于”基于服务器策略的转发”(例如通过不同的 server-names 配置),而不像 dnsm […]

<p>The post 从 dnsmasq 到 smartdns:打造一个靠谱的家庭 DNS 国内外查询分流系统 first appeared on 无敌的个人博客.</p>

Docker 部署 Mastodon

2025年6月9日 00:05
使用 Docker 部署 Mastodon 实例时,需注意选择合适的用户名和域名,因为一旦加入联邦宇宙,这些信息将无法更改。部署前应确定实例规模,以便进行相应优化。基本步骤包括准备 VPS、安装 Docker 和相关插件,并配置必要的文件如 compose.yml 和 .env.production。在设置过程中,要根据提示输入信息并生成环境变量文件,确保正确配置数据库、Redis 及 Elasticsearch 等服务。此外,还需通过反向代理工具如 Nginx 或 Cloudflare Tunnels 来管理流量,并创建管理员账号以维护实例。最后,通过调整目录权限和 SSL 配置来保证安全性与稳定性。

Received before yesterday技术

2025年5月阅读书摘

2025年6月8日 10:22

5月阅读记录

  • 《克林索尔的最后夏天》Done
  • 《稀缺》Done
  • 《东京贫困女子》Done
  • 《悉达多》Done

5月阅读书摘

《克林索尔的最后夏天》

路易

  • 人们太高估感官愉悦了,将精神生活看作是对缺失的感官体验的补偿。然而,感官并不比精神更具价值,反之亦然。因为一切都是合一的,一切都同样美好。无论你是抱一位女子,还是作一首诗,都是一样的。只要那个核心在,即爱、热望和激情在,它们便是一体,无论你是在阿索斯山做隐修僧,还是在巴黎做花花公子。
  • 世界是肥皂泡,是歌剧,是欢闹的荒唐。

后记 回忆克林索尔的夏天

  • 尽管年轻人也没啥可羡慕的,但至少还一直有机会,从一个坚硬冰冷、迟钝无趣的世界中苏醒新生,而我们这些老人却来自于旧时代,那些曾被我们高度认同的世界观如今却成了可笑荒唐的昨日黄花。时代惊人地变快了,更年轻的人们不再以年龄段、时代或至少五年期来计量时间,而是以每一年,所以相信1903年的人与相信1904年的人已经有代沟了。
  • 这就是克林索尔的夏天。闪耀的日子里,我在村落间和栗林里漫步,坐在折叠椅上,尝试用水彩保存下稍纵即逝的流光溢彩;在温暖的夜里,我在克林索尔宫殿那些开着的门窗前一直坐到很晚。我的写作技法比绘画更为熟练与严谨,我便用字句来歌唱这个永不停止的夏天。于是画家克林索尔的故事便诞生了。

山隘

  • 世界越来越美了。我独自一人,却很自在。我别无所求,只想被阳光晒透。我渴望成熟。准备好死去,准备好重生。

  • 远处并无战鼓传来,大时代再次由神奇日夜,由晨昏午暮所构成,世界那隐忍的心,重又跳动起来。当我们躺在草地上,耳朵聆听大地,或在桥上探身看水,或久久凝视明亮天空,便能听到那巨大的祥和心脏在跳动,那是母亲的心脏,我们是她的孩子。

牧师居所

  • 无论在舌尖上还是在脚跟上,无论在快慰中还是苦痛中,只要能感受到内在生命的颤动就是好的。感觉到我的灵魂是活着的,千百种幻想蕴藏于千百种形式中,在牧师或游子、厨娘或屠夫、孩子或走兽中,当然也在鸟儿、树木中,这才是重要的,这才是我的生命所愿所需。一旦无法再这样活着,而必须依赖所谓的“现实”,我宁可死去。

树木

  • 当我们感到悲伤,无法再忍受生活,一棵树就会对我们说:安静,安静!看着我!生活既非容易,生活亦非艰难。让神在你心里说话吧,那些妄念就会沉默。你慌了,因为你走的路偏离母亲和故乡;但其实你的每一步、每一天,又将你拉近母亲身边。故乡不在此处或彼处,除了在你心中,故乡不会在任何地方。

《稀缺》

引言 资源稀缺不可怕,就怕有稀缺心态

  • 虽然会使我们集中注意力,但同时也是伴随一生的负担。因为我们总是将关注点放在稀缺上,思想总是围着稀缺打转,所以就没有那么多精力投入人生中的其他事物。
  • 稀缺会降低所有这些带宽的容量,致使我们缺乏洞察力和前瞻性,还会减弱我们的控制力。其影响力非常大。举例来说,贫穷状态会比彻夜不眠对人的认知能力产生的影响更大。产生这个问题的原因并不是穷人的带宽不及富人,而是因为贫困的经历会降低任何一个人的带宽。

第1章 专注的“得”与管窥的“失”

  • 稀缺,会迫使人做出选择。所有抽象的事物都会变得具体起来

带宽负担2——执行控制力

  • 一旦你意识到意志力不过是去学习如何控制注意力和想法时,就能开始提高自身的意志力了
  • 稀缺会形成带宽负担,而这就意味着,稀缺不仅会降低流体智力,而且会降低自我控制力。

余闲心态下的购买行为

  • 人们常常会通过坚持最初的计划来避免选择的负担,实际上就是选择了不去做选择。

1美元的真正价值

  • 节俭之人对金钱怀有一种保证富余的责任感,而穷人则需要随时进行权衡。发生购买行为时,节俭之人会思考的是,该商品的价格是否“优惠”。相比之下,穷人则会思考,为了付出相应的金钱他们要放弃什么。所以说,节俭之人并不需要进行真正的权衡,他们与所有生活在资源充裕条件下的人一样,很难体会到1元钱的真正意义。

机会成本

  • 说穷人所拥有的是一种特殊技能:他们更善于维持当下的生计。他们能让1美元发挥更大的价值,他们是金钱价值方面的专家。这种专业技能会令他们在一定的环境中表现得更加理性,更不容易做出自相矛盾的选择。因为专注,所以拥有专业技能;因为专业,所以有了管窥之见;因为管窥,所以产生了一系列负面后果。

《东京贫困女子》

如果不一直工作就会无家可归

  • 不仅是自治体,那些民间企业也经常会削减那些老实而顺从、从无怨言的人们的工资。像谷村女士这样老实、顺从又文静、得到的信息量很少的女性,率先成了财政困难的公共事业为了维持生存而献出的牺牲品。

这半年间,痛苦仿佛扼住了我的喉咙

  • 在人生经历和日常生活中,人际关系匮乏的人,其判断标准往往会出现偏差。他们在向别人描述自己时总会把自己抬得很高。

轻松部署 Artifactory(不推荐款)

2025年6月7日 14:50

在 DevOps 实践中,软件包管理是不可或缺的一环。JFrog Artifactory 作为一款强大的制品管理工具,广泛应用于存储和管理二进制文件。本文简单介绍如何部署 Artifactory 开源版。

主要有客户需要部署这个,简单研究一下,上次用这个还是 4 年前了,新版本部署坑有点多,没老版本丝滑。简单说不如 Nexus,有兴趣的可以看看我之前写的私有化部署 Nexus3 镜像源

镜像

镜像有点点大

docker pull releases-docker.jfrog.io/jfrog/artifactory-oss:7.111.8
# 国内
docker pull ccr.ccs.tencentyun.com/k7scn/artifactory-oss:7.111.8

部署

  • docker-compose.yaml
services:
  traefik:
    image: traefik:v3.4
    container_name: traefik
    networks:
      - ysicing-net
    command:
      - "--api=true"
      - "--api.insecure=true"
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.http.address=:80"
      - "--providers.docker.network=ysicing-net"
      - "--log.level=INFO"
      - "--accesslog=true"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik-dashboard.entrypoints=http"
      - "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.192.168.23.16.sslip.io`)"
      - "traefik.http.routers.traefik-dashboard.service=dashboard@internal"
      - "traefik.http.routers.traefik-dashboard-api.entrypoints=http"
      - "traefik.http.routers.traefik-dashboard-api.rule=Host(`traefik.192.168.23.16.sslip.io`) && PathPrefix(`/api`)"
      - "traefik.http.routers.traefik-dashboard-api.service=api@internal"
      - "traefik.http.middlewares.gzip.compress=true"
      - "traefik.http.routers.traefik-dashboard.middlewares=gzip@docker"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: always

  artifactorydb:
    image: docker.io/bitnami/postgresql:15
    # image: ccr.ccs.tencentyun.com/k7scn/postgresql:15
    container_name: artifactorydb
    restart: always
    networks:
      - ysicing-net
    volumes:
      - './postgresql:/bitnami/postgresql'
    environment:
      - POSTGRESQL_USERNAME=bn_artifactory
      - POSTGRESQL_DATABASE=bitnami_artifactory
      - POSTGRESQL_PASSWORD=bitnami

  artifactory:
    image: releases-docker.jfrog.io/jfrog/artifactory-oss:7.111.8
    # image: ccr.ccs.tencentyun.com/k7scn/artifactory-oss:7.111.8
    container_name: artifactory
    depends_on:
      - artifactorydb
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.artifactory.rule=Host(`artifactory.192.168.23.16.sslip.io`)"
      - "traefik.http.routers.artifactory.service=artifactory"
      - "traefik.http.services.artifactory.loadbalancer.server.port=8081"
      - "traefik.http.routers.artifactory-ui.service=artifactory-ui"
      - "traefik.http.routers.artifactory-ui.rule=Host(`artifactory-ui.192.168.23.16.sslip.io`)"
      - "traefik.http.services.artifactory-ui.loadbalancer.server.port=8082"
    networks:
      - ysicing-net
    environment:
      - EXTRA_JAVA_OPTIONS=-Dartifactory.home=/var/opt/jfrog/artifactory
      - JF_ROUTER_ENTRYPOINTS_EXTERNALPORT=8082
    # ports:
    #   - 8082:8082 # for router communication
    #   - 8081:8081 # for artifactory communication
    volumes:
      - artifactory_data:/var/opt/jfrog/artifactory
      - /etc/localtime:/etc/localtime:ro
      - ./system.yaml:/opt/jfrog/artifactory/var/etc/system.yaml
    restart: always
    logging:
      driver: json-file
      options:
        max-size: "50m"
        max-file: "10"
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000

volumes:
  artifactory_data:
    driver: local

networks:
  ysicing-net:
    name: ysicing-net
    driver: bridge

默认使用 pg 数据库,方便些

创建配置文件 system.yaml

touch system.yaml

创建完配置文件,生成相关配置

shared:
    database:
        type: postgresql
        driver: org.postgresql.Driver
        url: jdbc:postgresql://artifactorydb:5432/bitnami_artifactory
        username: bn_artifactory
        password: bitnami

修改文件权限

chown -R 1030:1030 system.yaml
chmod 644  system.yaml

运行启动

服务非常吃资源,机器配置太低不推荐。

docker compose up -d

访问 Artifactory

地址:artifactory-ui.192.168.23.16.sslip.io
默认的账号密码 | 默认用户名 admin,默认密码 password

总结

没有特殊要求,不推荐。


欢迎关注我的微信公众号,可以看看我郑再打工每天都在折腾什么。

Typecho实现全站图片懒加载

2025年6月7日 09:42

对于博客网站来说,图片加载慢是导致网站迟迟加载不完的罪魁祸首,本站实现了所有图片懒加载,这里分享下本站是如何实现的,整体过程也比较简单。本站教程基于Typecho,其它博客程序请自行研究,不过区别并不大。

我这里使用的 lazysizes.min.js 来实现懒加载。有必要简单介绍下LazySizes

LazySizes简介

LazySizes是一款终极而轻量级的懒加载库,专门用于处理响应式图片、iframe以及脚本等资源的延迟加载。其核心特性包括:

  • 高性能:旨在提供极高的性能表现。
  • 易于集成:只需在你的网页中加入JS文件,并对需懒加载的元素添加lazyload类即可。
  • 自适应图片:全面支持响应式图片标准,如标签和srcset属性。

主要功能亮点

  • 自动优先级资源管理,区别对待关键和临近视口的元素,提高感知性能。
  • 兼容性广泛,适用于各种前端框架和动态页面技术。
  • 支持未来的响应式图片规范,无需额外配置。
  • 提升SEO,不会影响搜索引擎抓取。

引入LazySizes

github下载地址

其它安装方式

npm install lazysizes --save
yarn add lazysizes --save

使用

使用上也比较简单,在需要使用的类上添加 lazyload 即可,比如我这里

<img class="comment-list-empty-img lazyload" 
     src="<?php $this->options->themeUrl('/static/images/null.svg'); ?>"
     data-src="<?php $this->options->themeUrl('/static/images/null.svg'); ?>"
     alt="<?php echo _t('暂无评论数据'); ?>"
>

阿胶块到底要怎么吃才行?

2025年6月5日 15:15

阿胶作为传承3000年的滋补上品,其驴皮熬制工艺被列入国家级非物质文化遗产。传统阿胶块需经"九九八十一天"熬制,具有补血滋阴、润燥止血的功效,《本草纲目》记载其"疗吐血衄血,血淋尿血"。真的是好处多多啊。我顺便也查了下阿胶方面的知识,基础形态的阿胶就有很多种:

阿胶块‌

  • 传统黑色硬长方体,由驴皮经40余天熬制、切胶而成46
  • 需二次加工(打粉或熬膏),营养保留最完整但直接食用口感差14
  • 胶原蛋白含量≥80%,代表品牌:东阿阿胶、福牌24

阿胶糕‌

  • 阿胶块融化后加入核桃、黑芝麻、黄酒等配料冷却切块45
  • 即食便捷,含阿胶比例约10%-40%(品质差异大)16
  • 口感香甜,适合日常滋补67

阿胶粉‌

  • 阿胶块研磨或喷雾干燥制成46
  • 含阿胶40%以上1,85℃以上热水冲服吸收快412
  • 现代创新速溶型(如添加红枣萃取物)增速显著11

即食鲜阿胶‌

  • 粉末状创新形态,可直冲水/热牛奶饮用17
  • 主打"免煮即食",迎合年轻消费需求11
除了基础形态外,还有不少复合形态,比如:阿胶浆、‌阿胶膏 一类的。

由于前段时间老婆流产了,姐姐就买了两盒阿胶用于滋补身体,上次我也吃了一盒,不过是 阿胶糕 ,拆袋即食那种,里面有很多小包装,我吃了一盒,口感一般,毕竟是滋补身体的。这次买的是 阿胶块 ,类似巧克力一样,真是"坚硬如铁",第一晚上我用铁腕蒸了一小块,结果半小时过去了,还没完全融化,看样子这东西必须要熬制了,不过也不是个容易的事儿,所以就考虑直接打成粉末,为了这个去买个专门打阿胶机器也不显示,所以就开始找药店问问能不能处理。

后来找了一家,说是可以免费打粉,午饭后我顶着大太阳出发了,结果到药店人却不在,说有事儿出去了,这不是坑人么?约好的,没办法只能重新找了,还好又找到了一家,然后立马就动身过去了,也是个药店,交流一番后,就开始打磨了,整个过程30分钟左右,没想到这么硬的东西,打完就成了豆浆粉一样的东西,满打满算也就两袋吧,整个过程还是挺顺利的,不得不为帮忙的小哥点个赞。

小哥反复说,阿胶夏天不要吃,等冬天吃,不然会上火的,毕竟是大补的东西,所以只能放着了,早知道就先不打粉了。

路边停车收费,合理吗?

2025年6月3日 11:34

路边停车收费真的合理么?随便搞一条马路,竖一个收费标志牌,就可以开始收费了,总感觉有一种,"圈地为王"的感觉。有的甚至连停车线也不画,收费指示牌也看不到,你过来停车没人管,等你走的时候,收费的人就来了,关键是收费还不低,甚至比停车场还要高,对于此类行为我是相当反感的。

这是我六一那天,带闺女去游乐园玩的时候被贴的,严格意义上来说,这并不是交警贴的,而是路边穿黄马褂收费员贴的,他们天天骑着电动车沿着路边拍车辆,然后上到系统,就开始计费了,当然也有更智能一点的,你停车后,有仪器自动识别,如果你走的时候,没有收费员正好在场,你当时就不用缴费,但是停车记录已经产生,下次碰到了,还是会让你补齐费用的。

还好这一次路边是有停车线,而且正好有收费标识牌,然后收费还算合理(2元/小时),后来收了6块,后来说系统查到我还有5笔待支付记录,看了下最早一笔在2019年,在汉口汉阳那块,当时并不知道它计费了,而且费用也不低,大概是5元一小时,现在就开始拦下我,让我补齐费用,我当时就和工作人员争执了,你们路边有的连标识都没有,随便搞一条马路,就开始拍车牌计费,谁给你们的权利,给我说清楚,不然这费用我不会补,然后那个人支支吾吾也没买说个所以然,然后让我把这次停车的6块补缴了,就让我走了。

之前和朋友也聊到过类似话题,他回公司一般都停楼下巷子里的路边,偶尔会被计费,收费的人说是合法路边车位计费,朋友当时也没多想,就给了,直到后来被贴了罚单,说是违法停车,自那之后,再也没给所谓路边收费的人交过钱了。

有没有过类似经历的,你们都咋处理的?一起交流交流!

真是离谱,家门口的垫子也有人偷

2025年5月30日 11:42

昨天家里人说中午出去玩会儿的功夫,门口的垫子不见了,被人偷了,之前也被偷过一次,因为那会儿还没正式住进来,就没追求这事儿,没想到又来这一招,门口垫子就那么大点儿,也不值个啥钱,真不知道这些人是咋想的,这东西也偷。

得知消息,立马就反馈到物业,让帮忙查下监控,看有没有什么线索,后来得到反馈,监控没有啥异常,估计要么是同楼栋的人拿走了,要么就是其他楼栋的人,把东西装起来带走了,自认为小区里人的素质还可以,90%都是年轻人和小孩儿,感觉不至于吧。

之前小区有人在业主群里说,自己放楼顶晒太阳的花盆被拿走了,花和土都倒出来了,然后把花盆拿走了,闹得沸沸扬扬,后来监控查到了,是个保洁拿走了,但是物业不愿公开监控,也不知道具体谁拿走了,只是把东西送回来了,现在的物业、保洁、保安普遍素质不高,反正收钱第一名,其它所有事儿都懒得管,把业主都当傻子,看样子得把不交物业费进行到底了。

后面考虑换个带监控的门锁,或者门口按个监控,不然门口还不能放东西了,谁都可以拿走,还找不到人,真是离谱。

满心记更换域名啦,顺便送几个域名

2025年5月27日 11:54

经过慎重考虑,我决定对博客域名进行更换。原域名qq.mba因续费价格从首年百余元暴涨至292元/年,虽仍可使用至2027年,但本着务实原则,决定提前启动域名迁移计划。

域名更换:启用全新顶级域名 zhoutian.com

  • 中文双拼"周天"既朗朗上口,又蕴含"假日休憩"之意
  • 与博客记录生活、分享思考的定位高度契合
  • 更符合中文用户记忆习惯

博客名称从"满心记"正式更名为"周天记"

  • 新名称既保留原有记录生活的内核
  • 又赋予"周期性沉淀"的深层含义

这次调整看似突然,实则是三年建站经验的自然选择。早前使用qq.mba时主要考虑简短易记,如今更注重域名与内容气质的统一。原域名将逐步停用。

域名切换期间会做好301重定向,确保原有内容可访问。

域名留之无用,弃之可惜,留给有需要的人,准备赠送几个出去,先到先得

  1. nzqq.cn(阿里云)- 已送出
  2. nih.cc(阿里云)- 已送出
  3. says.top(阿里云)- 已送出
  4. ere.cc(西部数码)- 已送出

用百度地图做个足迹地图

2025年5月22日 16:52

今天看到 小生博客的文章,就花了点时间整到我的博客里了,考虑要不要单独做成页面,想了下,还是放 关于页里面,后续看情况,要不要独立出来。

预览效果,有兴趣的可以往下看,比较简单:

一、申请百度地图账号,创建应用

百度地图,百度要求实名认证。

注意:创建应用要选择【浏览器端】

以上全部通过后,获取 访问应用(AK)

二、创建map.php

<?php
?>

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的旅行足迹</title>
    <style>
        #container {
            flex: 1;
            width: 100%;
            height: 100%;
            border-radius: 10px;
        }

        /* 信息窗口样式 */
        .info-window {
            padding: 0;
            border-radius: 10px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
            text-align: center;
            border: none;
            background: #fff;
            overflow: hidden;
        }

        .info-header {
            text-align: center;
        }

        .info-header h3 {
            margin: 0;
            font-size: 20px;
            font-weight: 600;
            color: #333;
            text-align: center;
        }

        .info-content {
            padding: 0 15px 15px;
            text-align: center;
        }

        .info-content p {
            margin: 0 0 15px;
            font-size: 14px;
            line-height: 1.6;
            color: #666;
            text-align: center;
        }

        .info-content .photos {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 10px;
        }

        .info-content img {
            width: 100px;
            height: 100px;
            object-fit: cover;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }

        .info-content a:hover img {
            transform: scale(1.05);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
        }

        .BMap_cpyCtrl,
        .anchorBL {
            display: none !important;
        }
    </style>
</head>

<body>
    <!-- 地图容器 -->
    <div id="container"></div>

    <!-- 引入百度地图API -->
    <script type="text/javascript"
        src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak= 你的KEY"></script>

    <!-- 引入足迹点数据 -->
    <script src="<?php $this->options->themeUrl('style/markers.js'); ?>"></script>

    <!-- 地图初始化和足迹点添加 -->
    <script>
        // 地图初始化
        var map = new BMapGL.Map("container");
        var point = new BMapGL.Point(108.219771, 34.933863);
        map.centerAndZoom(point, 5); // 初始化地图,设置地图级别为5
        map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
        console.log(map);
        // 设置地图样式
        map.setMapStyleV2({
            styleId: 'e538ad167219263086d18744cc59cd32'
        });

        // 添加足迹点和信息窗口
        markers.forEach((element) => {
            let point = new BMapGL.Point(element.latLng[0], element.latLng[1]); // 创建坐标点
            var marker;

            // 如果有自定义图标,则使用自定义图标
            if (element.icon) {
                var myIcon = new BMapGL.Icon(element.icon, new BMapGL.Size(26, 26));
                marker = new BMapGL.Marker(point, { icon: myIcon });
            } else {
                marker = new BMapGL.Marker(point); // 创建默认标记
            }

            map.addOverlay(marker); // 将标记添加到地图上

            // 创建信息窗口
            let opts = {
                width: 320, // 信息窗口宽度
                height: 0, // 信息窗口高度
                enableMessage: false, // 禁用默认的关闭按钮
                enableCloseOnClick: true, // 点击地图关闭信息窗口
            };

            // 构建信息窗口内容
            let info = `
                <div class="info-window">
                    <div class="info-header">
                        <h3>${element.name}</h3>
                    </div>
                    <div class="info-content">
                        <p>${element.desc}</p>
                        <div class="photos">`;
            if (element.photo && element.photo.length > 0) {
                element.photo.forEach((photoUrl, index) => {
                    // 获取对应的链接
                    let linkUrl = element.links ? element.links[index] : "#";
                    // 添加图片链接
                    info += `<a href="${linkUrl}" target="_blank"><img src="${photoUrl}" alt="Image ${index + 1}"></a>`;
                });
            }
            info += `
                        </div>
                    </div>
                </div>`;

            let infoWindow = new BMapGL.InfoWindow(info, opts); // 创建信息窗口对象

            // 为标记点添加点击事件
            marker.addEventListener("click", function () {
                map.openInfoWindow(infoWindow, point); // 打开信息窗口
            });
        });
    </script>
</body>
</html>
<?php
?>

三、创建marker.js

// 坐标查询:https://api.map.baidu.com/lbsapi/getpoint/index.html
var markers = [{
        latLng: [89.255025, 42.99805],
        name: "葡萄沟",
        icon: "zj.png",
        desc: "转车的时候下去看了看,确实和书本上描述的一样。"
    },
    {
        latLng: [75.996862, 39.476993],
        name: "喀什",
        icon: "zj.png",
        desc: "一出生就过去了,从小长大的地方,呆过十几年,不过现在已经没什么印象了。"
    },
    {
        latLng: [116.280592, 40.004567],
        name: "颐和园",
        icon: "zj.png",
        desc: "有点古典风格,到此处,感觉自己也有点儿儒雅的气质。"
    },
    {
        latLng: [116.024067, 40.362639],
        name: "八达岭长城",
        icon: "zj.png",
        desc: "不到长城非好汉,我去了五六次,应该是绝对的好汉了吧!"
    },
    {
        latLng: [116.403414, 39.924091],
        name: "故宫",
        icon: "zj.png",
        desc: "记得那会儿应该是20年前的事儿了。"
    },
    {
        latLng: [116.079068, 40.296759],
        name: "居庸关长城",
        icon: "zj.png",
        desc: "体验感一般,去过的人都不会选择再去了。"
    },
    {
        latLng: [120.127813, 30.228902],
        name: "西湖",
        icon: "zj.png",
        desc: "之前工作住周边,有事儿没事儿就去西湖转转,估摸着应该转了几十圈了吧。"
    },
    {
        latLng: [120.155526, 30.236867],
        name: "雷峰塔",
        icon: "zj.png",
        desc: "其它区域都是免费,维度雷峰塔要收费,原因是要坐船过去。"
    },

    {
        latLng: [124.831767, 45.148014], // 图文带跳转的
        name: "松原市",
        icon: "zj.png",
        desc: "松原市。",
        photo: [
            "https://img0.baidu.com/it/u=3915829036,420838185&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=1083",
            "https://img0.baidu.com/it/u=3915829036,420838185&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=1083",
            "/usr/uploads/2025/01/1454283446.jpg",
            "/usr/uploads/2025/01/3919603999.jpg",
        ],
        links: [
            "/index.php/archives/138/",
            "/index.php/archives/138/",
            "/index.php/archives/138/",
            "/index.php/archives/138/",
        ]
    },
];

四、嵌入使用

我这里是直接在关于页面引入,选择引入地方直接写好地址即可,我这里没有单独做页面,有需要做页面也可以单独改一下。

<?php $this->need('parts/map.php'); ?>
我简单实现了下,可以根据自己主题进行调整,特别是样式,需要根据自己主题进行适配;

参考文章:利用百度地图做博客足迹地图HTML源码

陪老婆去做了流产

2025年5月21日 12:00

与我而言,这个话题是沉重的。考虑再三,还是决定记录下来。

其实什么事儿都不是空穴来风,上月末发了一篇文章 聊聊我对生二胎的一些想法 ,其实关于这个问题,我一直在思考,从还没有生一胎的时候,一直到现在,我都有考虑。上次我老婆突然跟我说,可能怀了二胎,我还挺诧异,因为我们没有严格意义上要二胎计划,可以说是意外之喜,然后就买了试纸测量了,发现确实怀了,然后就找了个周末的时间去医院检查,由于周数比较小,所以也没查出来个啥,就是各项指数(孕酮)偏低,让多注意休息和补补孕酮啥的,让每周都过来看看。

经过了心里的一些挣扎后,既然孩子来了,那肯定是和我们家有缘分的,所以大家也都接受了,也开始按照从饮食起居上逐步调整,已经做好心里准备,迎接新宝宝的到来,为此老婆还规划了预产期,以及宝宝名字之类的。

连着去了两周多,孕酮指标一直上不去,而且做了B超,医生说没看到胎心,有可能是孕囊有问题,也有可能是空孕囊,当然也可能是怀孕周数不准,孩子太小等原因,我们潜意识里不愿意相信这样的结果,所以有换了个妇幼,结果仍然如此,虽然结果都一样,但诊断方面缺有不同,有的医生建议尽早流掉,这样对身体损伤最小,有的医生建议再等一周看看,可能孩子太小,查不出来也正常,后来找了一个朋友把片子给他看了,他建议直接流掉,说这个孩子即使过几周胎心出来了,也感觉是个发育缓慢的胎儿,且不说再以后过程中,会不会死亡,总的来说就是胎儿质量不高,不建议留下,留下以后可能也是伤人伤己。

得知这个结果之后,一时之间心里还是很难接受的,毕竟全家已经接受了这个小生命,突然又要舍弃掉它,真的是有点残忍,但为了以后,还是决定不要了,期间老婆很伤心,我也一直给她做心里疏导(其实就是陪着说说话),在做了大量检查后,最终安排入院,接受流产手术。

手术很成功,现在已经在家调养,不管怎样,身体还是需要调理好,不管以后还考不考虑二胎的事儿,也许某一天,我的博客里会分享二胎的喜讯,也有可能永远不会。

给小主机做一次大扫除

2025年5月15日 19:15

去年整个了低功耗的小主机,借助 Frps 做映射,实现外网访问,我把一些有大量存储需求的应用,都搬到小主机上了,本地也搭建了影音库和一些常用的应用,我的小主机配置还是比较高的,功耗较低,一天大概0.3 ~ 0.4度电的样子,当然存储最多只能扩展到3T,不过也基本够用了。

小主机真的蛮小的,比巴掌还小,也不重,散热方面感觉还可以,即使大热天,机器也没有明显发热现象,迄今为止,还没出现过问题,这点儿还是值得肯定的。

小主机从去过年到现在,距离一年也不久了,最近发现小主机风扇转的厉害,后来发现出风口和风扇都积灰了,也好久没关注它了,今天正好有点儿时间,就给简单清理一下吧。

拆卸还是比较简单的,底部四颗螺丝卸掉,就可以拿掉顶部机盖了,然后把电路板四颗螺丝也卸掉,就看到底部风扇了,主要是风扇和出风口积灰了,还有一些UBS、网口等等也有灰尘,我就用小刷子和湿巾简单清理了下,确实要干净了不少,弄好了就开始安装回去了,还是挺方便的。

底座安装回去之后的样子,一个512G的SATA硬盘,一个16G + 32G的内存条,一个2T m2固态硬盘,还可以扩展高速TF卡,各方面都很满意。

家里有小孩儿,好多地方不能放,只能放门口玄关位置,好了,小主机满血复活了!

一杯酒,一家人

2025年5月9日 14:22

不得不感叹,时间过得可真快,感觉才刚到25年,没想到已经距离年中不远了,这不生日也到了,由于是工作日,所以晚上到家也七点了,妈妈给做了菜,然后媳妇儿从公司点了两个菜,买了蛋糕,一家人一起吃个饭,既简单又实在,美中不足的是父亲没到场(上班,没有假期)。

也是开了瓶12年的白云边庆祝下,虽只有我一人饮酒,其它人也都喝饮料作陪,给闺女准备了金豆芽饮品,她也频繁跑上来跟我碰杯,虽然她还不太会表达,但看得出来,她很开心,不光有喝的,一会儿还有蛋糕可以吃,我们吃着饭,她围着桌子蹦蹦跳跳的,气氛格外融洽。

按道理说,今天也是闺女阳历生日,碰到一起了,所以就一起过了,自然蛋糕也要偏向于孩子风格,所以选了这个粉色系列,插上18岁的两根蜡烛,今年比较贪心,许了很多愿望,不敢奢求太多,只求一家人在往后的日子里 平安喜乐 即可。

我是一个感性的人,有时候看一些短视频,看着看着眼眶就湿润了,我也不知道为什么。

我一直觉得人的一生其实很短暂,悄悄把我们从看故事的人,变成了故事里的人。那些曾经让我们落泪的画面,如今正在我们自己的人生里一帧帧上演。这大概就是成长的滋味吧——既熟悉又陌生,既温暖又带着些许酸涩。

公司不续签劳动合同了,是否有赔偿?

2025年5月6日 16:56

最近有朋友聊到关于员工合同期满之后,如果公司单方面不续约情况下,是否有赔偿问题,就这方面拿出来聊聊,说实话,没经历过,我也不太懂,所以就找了各方面资料,汇总在一起,看是否有经历过的朋友,能给给建议。

大概情况我简单描述下,朋友在现在公司已经四年多了,前不久刚续签了一次合同,每次合同期为两年,两年到期后,公司HR会找合同期满员工续签合同,然后到上级部门审批,通过后,合同生效,合同内部没有明确说明续约相关条款,我那朋友也算是人到中年了吧,担心公司单方面不续约,导致失业,那么这种情况下是否有赔偿呢?他问我的时候,我也有点懵,因为确实没碰到过,按道理来说,公司不续约了,应该就不存在赔偿问题,由于不确定,所以我找了AI询问了下,大概结果如下:

OPENAI给出的回答:

  1. 劳动合同的性质:如果你的劳动合同是固定期限合同,并且在合同到期时公司不续签,通常情况下,雇主不需要支付额外的赔偿或补偿。
  2. 公司政策和规定:有些公司可能会根据内部政策提供一定的离职补偿或遣散费,虽然这并不是法律要求,但可以向人力资源部门询问相关政策。
  3. 劳动者的工作年限:在某些情况下,如果劳动者在公司工作了较长时间,可能会根据公司政策或集体合同获得一定的经济补偿。
  4. 法律法规:根据《中华人民共和国劳动合同法》,如果公司在合同到期后不续签且不符合特定的解雇条件,劳动者通常没有权利要求赔偿。但如果公司不合法解除劳动合同,劳动者可以要求赔偿。
    协商结果:在合同到期前,劳动者可以与公司进行协商,看看是否能够达成协议,获得一定的补偿。

豆包给出的回答:

  1. 需要支付经济补偿的情况:如果公司降低劳动合同约定条件续订劳动合同,劳动者不同意续订的,或者公司在劳动合同到期后直接决定不续签的,公司应当向劳动者支付经济补偿。经济补偿按劳动者在本单位工作的年限计算,每满一年支付一个月工资的标准向劳动者支付。六个月以上不满一年的,按一年计算;不满六个月的,向劳动者支付半个月工资的经济补偿。月工资是指劳动者在劳动合同解除或者终止前十二个月的平均工资。例如,劳动者在公司工作了 3 年 8 个月,劳动合同到期公司不续签且不存在法定续延情形,公司应支付 4 个月工资的经济补偿。
  2. 无需支付经济补偿的情况:公司维持或者提高劳动合同约定条件续订劳动合同,劳动者不同意续订的,此种情形下公司无需支付经济补偿。比如,原工资待遇是每月 5000 元,公司提出以每月 6000 元续签,劳动者拒绝,公司就不用支付补偿。

DeepSeek给出的回答:

  1. 公司主动不续签‌:必须按工作年限支付经济补偿,每满1年支付1个月工资,6个月以上不满1年按1年算,不满6个月支付半个月工资。
  2. 公司降低续签条件‌:若新合同存在降薪、调岗等不利变更,员工拒绝续签的,公司仍需支付补偿。
  3. 员工在医疗期、孕期、产期、哺乳期,或工伤治疗期间的,合同自动延续至情形消失,公司不续签属违法,需双倍赔偿。
  4. 合同到期后继续用工超1个月未签新合同的,从第2个月起需支付双倍工资(最长11个月)。

综合相关AI给出的结果,以及结合度娘的相关内容,综合到一起,基本上就是以下内容:

  1. 公司维持或提高原合同条件(如薪资、岗位不变或更好),员工拒绝续签的,公司无需补偿;
  2. 公司如果主动不续签情况下,按工龄执行 N 的赔偿机制,公司工作了4年,那么N就是4;
当然除了以上情况外,也有的人说,公司不做任何赔偿,但目前我没有找到实际经历过此事的朋友,希望有此类遭遇的朋友,能明鉴。。。

聊聊我对生二胎的一些想法

2025年4月29日 15:04

每次和老婆坐在客厅算家庭账本,算到最后总会陷入沉默。备孕二胎的念头像颗野草,时不时在心里冒头,但一想到现实,又赶紧把这火苗掐灭。产检费、顺产的几千块钱倒是小钱,可孩子出生后,乃至以后培养教育确实是一笔不小的投资。

隔壁王姐家老二刚出生,光是奶粉钱一个月就得两千多。原本给老大报乐高课的钱、全家出去旅游的预算,统统都得砍掉。现在老大上幼儿园,光校服费就分春夏秋冬四套,更别提兴趣班了。小区里的孩子不是学钢琴就是练舞蹈,当家长的哪能看着自家孩子啥特长没有?就算不报热门的,报个普通绘画班,一年下来也得小一万。​这是从邻居聊天得知的。

白天在公司对着电脑敲代码,眼睛酸得睁不开还得改方案。领导一个电话,周末就得加班。好不容易下班回家,老大缠着要陪着玩,骑车、遛弯,哄睡完自己累得倒头就睡。要是再来个小的,半夜喂奶、换尿布,第二天还得强撑着去上班,想想都觉得喘不过气。上个月部门裁员,好几个三十多岁的同事都走了,现在在公司每天都提心吊胆,生怕哪天就轮到自己。​

随着父母年龄大了,身体也或多或少会出些毛病,上周父亲说脖子后总是很胀痛,我们没有时间,他自己去医院拍了片子,医生说可能是血液太粘稠导致的,具体不敢确定,要进一步检查,妈妈身体也不是很好,一直说生了二胎全家人都被绑一起了,一个人也看不过来两个孩子,毕竟孩子到处跑啊,闹啊什么的。好不容易把第一个孩子养大了,还敢带着全家再走一遭吗?说实话,我是真没这个勇气。

家里现有房子比较小,目前住正好,如果有二胎了,可能就住不下,要考虑换房子的事儿了,都奔35的人了,谁都不敢说工作会一直稳定,还敢继续背房贷吗?虽然现在房价降了些,政策也有所调整,看似一切条件都有利于购房,但事实真的如此吗?我真的不相信。

现在的社会卷得太厉害,孩子从上幼儿园就开始 "拼爹妈" 。朋友家孩子才上小学,周末时间表排得比上班族还满,奥数、英语、编程轮着来。都说不能让孩子输在起跑线上,可这起跑线到底在哪儿?就算咬着牙供孩子读完大学又怎样?现在本科生遍地走,找工作照样难。我堂哥名牌大学毕业,还不是天天加班,工资也就勉强够生活,我也实在是不想自己辛苦培养出来的孩子,最终沦为资本家的牛马一辈子。​

更现实的是,老婆也三十好几了,要是再生二胎,身体能不能吃得消先不说,现在干的互联网工作肯定保不住。这个行业更新换代太快,二十多岁的年轻人一茬接一茬,等老婆休完产假,哪还有她的位置?转行又能做什么?超市收银、家政保洁,工资低不说,以后养老都成问题,当然也少不了对孩子的帮衬。​

有时候老婆和我开玩笑说 "再生一个,以后老了多个人照顾" ,话刚出口自己都笑了。想想我们现在,一年到头回不了几次老家,给父母的陪伴少得可怜,哪敢指望孩子以后能多孝顺?可看着老大一个人在家玩,又觉得孤单。小区里那些两个孩子的家庭,虽然鸡飞狗跳,但热热闹闹的也让人羡慕。​

和朋友聊过之后,分享出来的故事,然后结合自己的一些感触,写下了这篇文章。

Xc-Three主题 前台增加注册登录按钮

2024年11月6日 23:31

找到以下目录文件内的文字:<!-- 这里可以放很多东西 --> 这句文字注释,代码就放到这句文字下面(位子差不多在最底下)

默认左侧栏:Xc-Three/Miss/aside-left01.php
自定义左侧栏:Xc-Three/Miss/aside-left02.php

<!-- 登入 -->
<li>
    <?php if ($this->user->hasLogin()) : ?>
        <a class="link panel" href="#" rel="nofollow">
            <span class="Xc_balance"><?php $this->user->screenName(); ?></span>
            <svg class="icon-xl" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="15" height="15">
                <path d="M624.865 512.247L332.71 220.088c-12.28-12.27-12.28-32.186 0-44.457 12.27-12.28 32.186-12.28 44.457 0l314.388 314.388c12.28 12.27 12.28 32.186 0 44.457L377.167 848.863c-6.136 6.14-14.183 9.211-22.228 9.211s-16.092-3.071-22.228-9.211c-12.28-12.27-12.28-32.186 0-44.457l292.155-292.16z"></path>
            </svg>
        </a>
        <ul class="slides panel-body">
            <li>
                <?php if ($this->user->group == 'administrator' || $this->user->group == 'editor' || $this->user->group == 'contributor') : ?>
                    <a class="link" rel="noopener noreferrer nofollow" target="_blank" href="<?php $this->options->adminUrl("manage-posts.php"); ?>">管理文章</a>
                <?php endif; ?>
            </li>
            <li>
                <?php if ($this->user->group == 'administrator' || $this->user->group == 'editor') : ?>
                    <a class="link" rel="noopener noreferrer nofollow" target="_blank" href="<?php $this->options->adminUrl("manage-comments.php"); ?>">管理评论</a>
                <?php endif; ?>
            </li>
            <li>
                <?php if ($this->user->group == 'administrator') : ?>
                    <a class="link" rel="noopener noreferrer nofollow" target="_blank" href="<?php $this->options->adminUrl("options-theme.php"); ?>">修改外观</a>
                <?php endif; ?>
            </li>
            <li>
                <a class="link" rel="noopener noreferrer nofollow" target="_blank" href="<?php $this->options->adminUrl(); ?>">进入后台</a>
            </li>
        </ul>
    <?php else : ?>

<li>
    <a class="link panel" href="#" rel="nofollow" target="">
        <span class="Xc_balance">用户登录</span><svg class="icon-xl" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="15" height="15">
            <path d="M624.865 512.247L332.71 220.088c-12.28-12.27-12.28-32.186 0-44.457 12.27-12.28 32.186-12.28 44.457 0l314.388 314.388c12.28 12.27 12.28 32.186 0 44.457L377.167 848.863c-6.136 6.14-14.183 9.211-22.228 9.211s-16.092-3.071-22.228-9.211c-12.28-12.27-12.28-32.186 0-44.457l292.155-292.16z"></path>
        </svg></a>
    <ul class="slides panel-body panel-box" style="display: none;">
        <li>
            <a class="link" href="<?php $this->options->adminUrl('login.php'); ?>" target="_blank" rel="noopener noreferrer nofollow">登录</a>
            <?php if ($this->options->allowRegister) : ?>
                <a class="link" href="<?php $this->options->adminUrl('register.php'); ?>" target="_blank" rel="noopener noreferrer nofollow">注册</a>
            <?php endif; ?>
        </li>
    </ul>
</li>

<?php endif; ?>
</li>
❌