您即将离开「www.saiita.com.cn」,该网页可能包含未知的安全隐患,请注意您的账号和财产安全。
# SaiitaのBlog > 软件测试工程师 | IT技术分享 | 华为外包经验 | 杭州周边游玩 | 技术生活分享 > Admin Email: chenghoufeng@hotmail.com ## 文章 ### 杭州西兴大桥断流改造,记录最后影像 这周日,到老婆店里逛逛,顺便拍了张三桥断流第二天的照片; 杭州西兴大桥断流 为进行桥梁提升改造,杭州西兴大桥(钱江三桥)已于2025年11月22日开始实施断流施工,听说新桥要30个月建好。 所以乘着周末到钱塘江拍下最后的杭州西兴大桥;西兴大桥还是比较好看的; 昨天已经开始封路了; 远处的三桥-西兴大桥可见的 钱塘江边的银杏树 ### 【杭州】外包仲裁败诉,降薪协议藏陷阱 今天得知外包待岗的同事仲裁输了,目前已经离职一个多月,因为之前签的降薪协议里有个条款,记得好像是支持公司的待岗要求和薪资结构; 当时我签的时候,也看到了这个条款,只顾着签字,没仔细看,聊了一会,说是只是降薪,没有其他要求,如果不签这个协议,会要求离职(举例了一些工资高的同事,不签降薪协议,要求离职); 想想这里还是存在了一个非常大的坑在里面,工资差额仲裁也不支持了; 待岗仲裁的话,N+1也只是基本工资; 倒是社保和公积金支持全部补缴; ### Ubuntu 24.04下使用Docker部署Dify:完整配置指南 从Dify的GitHub官网拉取代码 Dify官网 复制dify的地址 在Ubuntu 24.04 合适的目录下-下载dify代码 git clone https://github.com/langgenius/dify.git 启动dify的docker容器 启动前需要把.env.example文件改为.env cp .env.example .env 进入dify/docker文件目录下,运行docker命令行启动dify docker-compose up -d 等dify启动成功后,在浏览器上输入http://IP ,就可以登陆到dify页面,进行设置账号操作 修改默认的dify端口 如果dify的80和443端口已经被占用,就需要修改默认dify的端口,默认端口的环境变量在.env文件里; 只需要修改下面的2个配置,初始配置项是80和443 EXPOSE_NGINX_PORT=80 EXPOSE_NGINX_SSL_PORT=443 ### 解决WPJAM插件Rewrite规则导致的404问题 恢复Rewrite 规则优化的原因 原因一: Rewrite 规则优化其实是负优化,导致了很多问题,尤其影响了GooGle Search Console 收录,需要让google 重新收录404的URL; 原因二: 同时也是为了BlogsClub 能更新我的文章 Rewrite 规则优化操作步骤和GooGle Search Console 收录影响具体原因 WPJAM插件某些优化并不是最优解,而且会有很多搜索引擎收录问题,从而影响SEO; 比如WPJAM插件Rewrite 规则优化: 移除日期 Rewrite 规则 移除留言 Rewrite 规则 移除分类 Feed Rewrite 规则 上面移除的规则会导致wordpress 默认的URL返回大量的404; 比如: 移除日期 Rewrite 规则,移除会导致https://www.saiita.com.cn/2025/10 返回404; 谷歌搜索引擎相关feed的URL 也会返回大量的404等等; 所以Rewrite 规则优化,其实是负优化,wordpress 存在的Rewrite 规则是有它的存在的原因,并不需要进行优化; Rewrite 规则优化恢复 恢复的办法是再部署一个wordpress 网站,在新网站安装WPJAM插件插件,开启Rewrite 规则,通过AI对比Rewrite 规则列表里的正则表达式,整理出优化后的Rewrite 规则,然后再一个一个把优化掉的Rewrite 规则添加回去; 规则优化的相关Rewrite 分类目录 Feed 正则查询lndex.php?category_name=$matches[1]&feed=$matches[2]category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$lndex.php?category_name=$matches[1]&feed=$matches[2]category/(.+?)/(feed|rdf|rss|rss2|atom)/?$ 标签 Feed 正则查询index.php?tag=$matches[1]&feed=$matches[2]tag/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$index.php?tag=$matches[1]&feed=$matches[2]tag/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ 文章格式 Feed 正则查询index.php?post_format=$matches[1]&feed=$matches[2]type/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$index.php?post_format=$matches[1]&feed=$matches[2]type/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ 搜索 Feed 正则查询index.php?s=$matches[1]&feed=$matches[2]search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$index.php?s=$matches[1]&feed=$matches[2]search/(.+)/(feed|rdf|rss|rss2|atom)/?$ 作者 Feed 正则查询index.php?author_name=$matches[1]&feed=$matches[2]author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$index.php?author_name=$matches[1]&feed=$matches[2]author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ 日期 Feed 正则查询index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$ndex.php?year=$matches[1]&feed=$matches[2]([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$ndex.php?year=$matches[1]&feed=$matches[2]([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$ 评论 Feed 正则查询index.php?&feed=$matches[1]&withcomments=1comments/feed/(feed|rdf|rss|rss2|atom)/?$index.php?&feed=$matches[1]&withcomments=1comments/(feed|rdf|rss|rss2|atom)/?$ 全局 Feed 正则查询index.php?&feed=$matches[1]feed/(feed|rdf|rss|rss2|atom)/?$index.php?&feed=$matches[1](feed|rdf|rss|rss2|atom)/?$ 附件 Feed 正则查询index.php?attachment=$matches[1]&feed=$matches[2][0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$index.php?attachment=$matches[1]&feed=$matches[2][0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ 页面 Feed 正则查询index.php?pagename=$matches[1]&feed=$matches[2](.?.+?)/feed/(feed|rdf|rss|rss2|atom)/?$index.php?pagename=$matches[1]&feed=$matches[2](.?.+?)/(feed|rdf|rss|rss2|atom)/?$ 完整日期路径 (年/月/日) 正则查询index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$ 月份归档 (年/月) 正则查询index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$ 日期路径分页 正则查询index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&paged=$matches[4]([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$index.php?year=$matches[1]&paged=$matches[2]([0-9]{4})/page/?([0-9]{1,})/?$ 附件日期路径 正则查询index.php?attachment=$matches[1][0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/?$index.php?attachment=$matches[1]&tb=1[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/trackback/?$index.php?attachment=$matches[1]&feed=$matches[2][0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$index.php?attachment=$matches[1]&feed=$matches[2][0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ 评论分页路径 正则查询index.php?attachment=$matches[1]&cpage=$matches[2][0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$index.php?attachment=$matches[1]&cpage=$matches[2].?.+?/attachment/([^/]+)/comment-page-([0-9]{1,})/?$ 页面评论路径 正则查询index.php?pagename=$matches[1]&paged=$matches[2](.?.+?)/comment-page-([0-9]{1,})/?$ ### Open-WebUI首次调用硅基流动AI响应缓慢的解决方案 在使用Open-WebUI 过程中发现一个非常奇怪的问题,就是不打卡clash 调用AI提供商的API 的时候,回复的非常慢,有次都要1个小时后才有结果返回,只要回复成功,后面再次调用的时候就不会很慢; 但是首次使用openwebui,打开了clash (非openwebui的部署环境)后,回复速度非常的快; 之前怀疑过open-webui 没有优化好,就配置了数据库,redis,向量数据库等,查看openwebui 日志 也没发现过问题,貌似并没有起到效果; 也查看了防火墙,是否有接口被拦截了,发现也没有接口被防火墙拦截掉; 也不知道使用open-webui 的环境是不是有接口URL 需要访问外网,才能正常使用,还是免费开源项目故意设计的问题; 解决方法: 1、目前只能是打开clash使用; 2、最新解决方法:应该是Ubuntu 24.04 环境clash 代理问题;最终解决办法是在环境变量里添加绕过代理的设置(no_proxy=Ubuntu 环境的外网IP和open-webui 外网域名),同时clash要开启全局代理;具体操作方法如下: # 在Ubuntu 24.04 环境下执行下面的命令行,添加no_proxy环境变量 export no_proxy=192.168.31.2,ai.saiita.cn 或者在open-webui 添加systemctl 里no_proxy环境变 3、2025年11月30日:还是要开着clash,才能正常使用,搞不懂; open-webui 环境变量说明 no_proxy 类型: str 描述: 列出不应使用代理的域扩展名(或 IP 地址),用逗号分隔。例如,将 no_proxy 设置为 '.mit.edu' 确保在访问来自 MIT 的文档时绕过代理。 ### 谷歌广告自动添加实验,还无法取消 ⁉️今天打开网站文章突然发现文章底部有谷歌广告出现?最近都没添加这个位置的广告啊; 💢突然出现的谷歌广告位置 ⁉️登陆谷歌广告,发现有个实验正在运行,我也没设置啊? 打开正在运行的实验,还无法取消;太特么无法无天了;关闭全部广告算了,还治不了谷歌广告! 💢我什么时候添加实验了 ❗关闭不掉的谷歌实验 最后才发现可以关闭谷歌广告实验,就是在谷歌管理页面-实验-您已保留原始设置(玩文字游戏呢) ### 解决 WordPress WPJAM插件改动设置,影响SEO的问题 原因: 站长工具查询关键字全部都没了,之前还有100左右的关键字,百度权重也从1降到0; 貌似WPJAM插件有配置改动后,wordpress 的固定链接(URL)会出现问题,影响了SEO和搜索引擎收录; 1)分类目录 问题: WPJAM插件的优化设置-增强优化-开启分类链接简化后,启动插件,禁用其他插件,会导致文章URL 返回404,这时候需要手动设置优化设置-增强优化-关闭/开启分类链接简化后,非常麻烦,而且有时候会忘记设置,导致一段时间文章URL都是返回404; 关闭分类链接简化后,分类目录有2种目录接口 /category/note/jeep_renegade /note/jeep_renegade 负面影响:分散权重 解决办法:301 重定向到固定的URL格式 目前不知道分类目录要不要加/category,文章的URL导致没有/category,只有分类目录的URL会有/category 2)标签 问题: WPJAM插件的分类设置-分类数字固定链接,开启标签,分组后,标签和分组URL都是带标签和分组的ID 中文标签的URL是/tag/tagID,不是/tag/tag别名,中文的tag会有中文转码问题; 英文标签的URL没有这个问题; 负面影响(开启分类数字固定链接): 中文(或分组)的/tag/tag别名 会404 影响用户体验和SEO(全部都返回404) 解决办法:取消分类设置-分类数字固定链接设置,通过wordpress 数据表wp_terms的数据, 设置301 重定向到/tag/tag别名;比如/tag/1 301到 /tag/杭州 3)URL 结构问题 标签还是用tag别名,要好点,不能用tag ID;分类和文章URL层级不能过深,最多只能2~3层; ### Claude Code 调用GLM-4.6 和DeepSeek AI模型效果对比 💢 这几天使用Claude Code 改几个wordpess 插件功能,分别尝试调用了GLM-4.6和DeepSeek,效果真的是差距非常大; ❌ GLM-4.6 能做出基本功能,但是会到处乱改代码,修改A功能,会跑到其他地方修改B功能,改了之后,要恢复非常困难,一直就不修改,恢复不了,给它明确修改步骤,修改效果,都不能按照要求恢复B功能的代码; ✅ DeepSeek 大部分上修改和编辑代码目的清晰,不会到处乱改功能,效果也十分好; ❗ 结论 GLM-4.6 来改代码,真的是个非常大的灾难;修改代码胡作非为;浪费大量时间,不是有个Claude Code 包月套餐,根本就不会用这个AI模型;只能用作非常小的功能修改; Deepseek 缺点是没有Claude Code 包月套餐,费用会比GLM-4.6 的高; ### 不需要打开浏览器无痕模式就可以刷新网站页面 在测试网站页面时,浏览器会缓存相关js,css等文件,导致文件修改后,浏览器不会实时更新,这样会看不出来是不是修改了; 可以用Ctrl+F5 强制刷新页面,清掉页面缓存; 就不需要使用浏览器的无痕模式; ### coder-server 安装和更新 coder-server 是可以在浏览器上进行编码的开源项目;可以使用AI插件; ⏬GitHub 地址⏬ 安装和更新都是使用同一个命令行 coder-server 安装 curl -fsSL https://code-server.dev/install.sh | sh coder-server 安装更新 curl -fsSL https://code-server.dev/install.sh | sh 效果 ### Open-Webui+python虚拟环境升级脚本 #!/bin/bash path=/mnt/256G/docker/open-webui cd ${path} # 进入虚拟环境 source venv/bin/activate # 停止open-webui systemctl stop openwebui # 更新open-webui pip install -U open-webui # 启动open-webui systemctl start openwebui 在open-webui根目录下创建update.sh输入上面的脚本,然后执行chmod +x update.sh;运行update.sh就可以在python虚拟环境里更新open-webui; 解决每次升级,都要手动输入命令行的问题; 官方pytho虚拟环境安装/更新open-webui网址 ### 【教程】解决ollama安装或者更新网速慢的问题 更新慢一般都是网络问题,我是因为更新了clash最新版本后,导致网络十分的不稳定,经常被拒绝连接; 解决方法是使用github加速代理,wget下载命令行替换curl;需要创建update.sh脚本,一键执行更新或者下载ollama; VERSION版本需要在github项目上查看 如果使用网络代理需要关闭; update.sh脚本代码 #!/bin/bash # 文件路径 FILE="ollama_install.sh" VERSION='v0.11.10' # 下载ollama安装脚本 rm ${FILE} curl -fsSL https://ollama.com/install.sh -o ${FILE} # 修改 URL sed -i 's|https://ollama.com/download/ollama-linux|https://gh.llkk.cc/https://github.com/ollama/ollama/releases/download/'"${VERSION}"'/ollama-linux|g' ${FILE} # 修改脚本中的curl命令为wget sed -i 's|curl --fail --show-error --location --progress-bar|wget -c --progress=bar --timeout=60 --tries=30 --waitretry=30 -O -|g' ${FILE} # 执行ollama安装脚本 chmod +x ${FILE} ./${FILE} ### 解决clash-verge-rev 最新版本不稳定 ⏬clash-verge-rev GitHub官网地址⏬ 我是建议不要升级clash-verge-rev最新版本,最新版本十分的不稳定;更新ollama或者其他软件,会经常连接被拒绝; 最稳定的版本是2.3.2,这个版本没有问题; 下面就是怎么卸载和安装2.3.2版本; 1、删除和禁止clash_mihomo.service服务开机启动 sudo systemctl stop clash_mihomo.service # 停止当前运行的服务 sudo systemctl disable clash_mihomo.service # 禁止它开机自启 sudo rm /etc/systemctl/system/clash_mihomo.service 2、重新加载 systemd 配置 sudo systemctl daemon-reload 3、卸载clash-verge apt purge clash-verge 4、下载2.3.2版本 cd /tmp wget https://github.com/clash-verge-rev/clash-verge-rev/releases/download/autobuild/Clash.Verge_2.3.2+autobuild.0911.1c5534a_amd64.deb 5、安装clash-verge chmod +x Clash.Verge_2.3.2_amd64.deb cp Clash.Verge_2.4.3_amd64.deb /tmp apt install /tmp/Clash.Verge_2.3.2_amd64.deb 6、其他问题 之前已经配置过clash代理,现在部署2.3.2版本后,Ubuntu 系统clash前端打不开了,但是clash能用 【最新】clash 更新到2.4.3版本,上面的问题已经解决了 ### 【教程】Python虚拟环境安装Open-WebUI Python虚拟环境优点:不会受其他服务依赖安装影响,避免open-webui 运行异常; 1、创建虚拟环境 python3 -m venv venv 2、激活虚拟环境 source venv/bin/activate 3、安装Open WebUI open-webui serve 4、虚拟环境更新Open WebUI 在Open WebUI 虚拟环境里使用下面的命令行进行更新 pip install -U open-webui 5、设置开机启动 在/etc/systemd/system/目录下面创建openwebui.service文件 填入下面的配置 [Unit] Description=Open-webui Service Before=network.target [Service] Type=simple User=root Group=root Restart=always RestartSec=3 WorkingDirectory=/path/open-webui ExecStartPre=/usr/bin/python3 -m venv venv Environment=PATH=/usr/bin:/usr/local/bin EnvironmentFile=/path/open-webui.env ExecStart=/bin/bash -c 'source venv/bin/activate && open-webui serve --port 8080' [Install] WantedBy=multi-user.target 启动open webui 服务 systemctl daemon-reload systemctl start openwebui ### 【教程】开源项目如何申请微软账号登陆 open-webui开源项目开启微软登陆;需要应用程序(客户端)ID ,目录(租户)ID,客户端密码; 一、登陆微软官网,创建应用程序 登陆下面的微软网站,选择应用注册👉新注册,获取应用程序(客户端)ID ,目录(租户)ID; 注册应用程序,填入名称,受支持的账号类型,选择任何组织任何组织目录(任何 Microsoft Entra ID 租户 - 多租户)中的帐户; 重定向URL的选择平台选择Web;重定向选择https://ai.saiita.cn/oauth/microsoft/callback 返回应用注册,获取应用程序(客户端)ID 进入已创建的应用程序,在概述里能获取 到应用程序(客户端)ID ,目录(租户)ID 二、创建证书和密码 在应用程序页面,选择证书和密码;创建客户端密码 点击复制客户端密码 三、open-webui 项目开启微软登陆 在open-webui(或其他项目)环境变量填入对应的值; ### 【教程】开源项目如何申请谷歌账号登陆 申请谷歌登陆需要有CLIENT_ID和CLIENT_SECRET字段 一、创建OAuth 2.0 客户端 ID 登陆下面的Google网站,登陆Google账号,申请OAuth 2.0 客户端 ID 创建凭据👉OAuth 2.0 客户端 ID 选择应用类型,如果是网站使用Google账号登陆就选择Web应用; 创建好后,凭证页面有客户端ID 进入OAuth 2.0,设置已授权的JavaScript来源和已授权的重定向URL 已授权的JavaScript来源就是要用Google账号登陆的域名,已授权的重定向URL填入https://域名/oauth/google/callback(根据开源项目说明文档具体设置) 二、申请API Key Google 凭证页面,选择创建平均,下拉框选择API密钥 会有弹框现在API 密钥 进入API密钥设置页面,应用限制选择无,API限制选择不限制密钥,然后保存 三、项目设置 在项目中开启Google谷歌账号登陆,然后设置上面申请到的2个字段; 例子:open-webui登陆 ### 2025年家用电脑配置升级 2025电脑和机箱升级,之前是用ATX主板的3070显卡,这样2台电脑都在开机,想买个5060TI,只开一台ITX服务器,用5060TI显卡本地跑AI 模型,也会有一点点提升,同时也不需要同时开2台电脑; 所以主要是升级了机箱和ITX配置;不过升级后台式机配置好几个硬盘识别不了,不知道是不是电源的问题 机箱 追风者(PHANTEKS) P600S钛金灰; 升级到了🔼追风者(PHANTEKS) 719TLG 钛金灰; 台式机配置(没升级) 华硕 ROG STRIX Z490-A GAMING吹雪主板 NOCTUA NH-U12A CPU散热器 英特尔(Intel)10代 酷睿 i7-10700K 美商海盗船(USCORSAIR)32GB(4×8G)套装 七彩虹(Colorful)iGame GeForce RTX 3070 Ultra OC 8G 1725-1770Mhz ITX配置(服务器) 🔼玩家国度ROG STRIX B760-I GAMING WIFI主板 🔼英特尔(Intel) i5-12490F 英睿达(Crucial)8GB DDR5 4800频率、英睿达(Crucial)16GB DDR5 4800频率 🔼ID-COOLING (酷凛)下压式风冷散热器 4热管 铜底 适用LGA1200/LGA1700/AM4/5 ITX机箱 NAS IS-47-XT WHITE 🔼技嘉(GIGABYTE)5060Ti 16G显卡 魔鹰 GeForce RTX 5060 Ti Gaming OC 16G DLSS4 旧电脑配置 ### Docker 设置网络代理 💢更新docker 时报错的问题 错误信息: 1 root@saiita-System-Product-Name:/mnt/256G/docker/dify/docker# docker compose up -d [+] Running 3/3 ✘ web Error context canceled 20.2s ✘ api Error context canceled 20.2s ✘ worker Error Get "https://registry-1.docker.io/v2/ ": net/http: request canceled while waiting for connection (Client.Timeout exceeded while await... 20.2s Error response from daemon: Get "https://registry-1.docker.io/v2/ ": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers ✅解决方法 在/etc/docker/daemon.json 配置文件里添加下面的配置项; "proxies": { "http-proxy": "http://127.0.0.1:7897", "https-proxy": "http://127.0.0.1:7897" } 完整配置 { "proxies": { "http-proxy": "http://127.0.0.1:7897", "https-proxy": "http://127.0.0.1:7897" } } 重启docker sudo systemctl daemon-reload sudo systemctl restart docker ### 【教程】开源项目如何申请Github账号登陆 可以用于开源项目登陆Github选项; 1、登陆github 2、点击头像 点击右上角的头像 3、进入Settings 4、进入Developer Settings 左侧菜单栏,最后一个Developer Settings 5、进入OAuth Apps 6、点击New OAuth App 输入Application name等信息; 7、获取Client ID和Client secret 8、在相关项目设环境变量把Client ID和Client secrets填入 ### 【记录】🚴♂️ 电动车维修踩坑记:龙头摇晃 + 刹车失灵?原来是安装不专业惹的祸! 🚴♂️ 电动车维修踩坑记:龙头摇晃 + 刹车失灵?原来是安装不专业惹的祸! 去年和别人撞车后,维修换了轮毂、七件碗、三星柱和轮胎 🛠️... 但骑行时龙头 轻微左右晃,一点都不丝滑 😩!更奇怪的是,轮毂和轮胎竟然有缺失部分,明明撞得不该这么严重啊 🤔? 这个月又出幺蛾子—— 右边刹车按下去弹不起来 🚨!赶紧去了专业的 九号专卖店 检查 🔍。师傅说刹车没问题,但换了油门,还重新定了七件碗(解决龙头不丝滑+摇晃问题)✅。 最终 换了七件碗后问题解决 🎉!真相大白:去年在滨江维修时,七件碗装得高低不平,完全是不专业操作导致的 😤! ### 【教程】免费FRP服务器,无需公网IP-Cloudflare 可以用于无公网IP的内网穿透功能,缺点是国内有点卡,但是还是在接受范围内; 首先要准备1个域名和本地服务器安装docker 1、登陆cloudflare后台 2、选择左边菜单栏Zero Trust 3、选择网络 4、选择Tunnels 5、选择创建隧道 选择cloudflared👉为隧道命名👉保存隧道 6、选择环境(docker) 复制cloudflare提供的命令行,在本地环境部署cloudflare 7、下一步路由隧道 这个步骤是添加公网访问域名和内网服务 8、访问公网 需要等一会生效,然后就可以输入公网域名进行访问 ### 软通动力待岗记录:详细待岗经历与心得分享 记录软通动力待岗。 ❗01、待岗出项通知 ❗02、待岗第一天 ❗03、待岗第二天 ❗04、待岗第三天 ❗05、待岗第七天 ❗06、待岗第九天 ❗07、待岗第一个月 ❗08、待岗第五周 ❗09、待岗第六周 ❗10、待岗第七周 ❗11、待岗第八周 ❗12、待岗第九周 ❗13、待岗第十周 ✅学习计划 目前还是跟无头苍蝇一样,没有目标; 💢软通动力 只从上周发了《不同意出项通知书》和《限期补齐劳动报酬通知书》邮件后,终于有人过来谈话了; 谈话内容: 等新项目 谈赔偿(估计只有0.5n) 我选择了等新项目,不知道对不对;进新项目概率未知 这周没发《不同意出项通知书》和《限期补齐劳动报酬通知书》邮件; 🤷♂️最后得知有1个已经待岗半年(太老实?),是不是跟不发邮件或者发邮件的频率低的原因? ❗14、待岗第十一周 ✅学习计划 学习了python 接口自动化,B站学习视频知识点很浅,用于工作有限; 用manuns写wordpress 插件越来越差劲了,同一个BUG好几轮都不会解决; 解决了open-webui google 联网失败问题; 💢软通动力 这周发了工资,第二天就只发了《限期补齐劳动报酬通知书》邮件;月底和8月初新项目未知 ❗14、待岗第十二周 ✅学习计划 又没学习目标了 学习了python pytest 框架;发现网络上免费的教程十分的基础,还不如向AI提问式学习; 💢软通动力 2025年7月22日:今天做电梯上楼,遇到来软通面试的,刚出电梯,让我先出电梯,突然间怎么感觉有点幼稚,电视剧看多了吧! 不同意出项邮件没发,不确定是不是还要继续发; ❗15、待岗第十三周 2025年8月9日 ✅学习计划 继续重新学习python基本语法和测试自动化 💢软通动力 还是只是口头承诺有项目,但是一直不通知面试 这周要求把年假请掉 这周有上海的项目(拒绝掉了)。发现只要发《不同意出项》邮件,软通就会象征性的给项目,但是不给面试机会;根据这3个月发现软通不会给新项目,即使给了新项目也会在工作上找理由裁掉; ❗15、待岗第14~15周 ✅学习计划 没学习目标,没方向 💢软通动力 软通推荐新项目已经没有诚心(每月发《不同意出项》邮件,就敷衍的推新项目,但是没有面试机会) 小红书已经发帖华为云大规模裁员 ❗16、待岗第16周 ✅学习计划 python没学习目标,没方向; 部署和解决了ai-mauns 的问题; 💢软通动力 这周面试了,面试通过了,但是要降工资1000元;ICT部门,运维岗位,基本每周要熬夜到凌晨;第二天拒绝了,降工资不知道有什么问题协议,跟降薪协议一样; ❗17、待岗第17周 ✅学习计划 还是得尽快熟悉python,并用于测试 💢软通动力 软通那边的人打电话过来催入项目,还是被我拒绝了; ❗17、待岗第17周 ✅学习计划 继续学习python基础知识 💢软通动力 目前没有项目 现在学习pyton感觉好尴尬,不知道现在学习pyton的作用是什么,感觉现在学习python没用,不学感觉就真的没用了; ❗18、待岗第18周 ✅学习计划 继续学习python基础知识 💢软通动力 继续发邮件 ❗18、待岗第18周 ✅学习计划 继续学习python基础知识 💢软通动力 继续发邮件 发现不发邮件,公司完全不管 ❗19、待岗第19周 国庆节 ✅学习计划 学习3D建模Blender 学习python ❗20、待岗第20~25周 ✅学习计划: 学习python基础知识 学习python自动化,性能 wordpress seo知识学习 wordpress URL结构整理,tag的URL 301 重定向 用AI,写了个wordpress 插件 学习困境:虽然在学习python,但是没有用到的地方,只是学习了基础知识,没有成长/提升过程和空间;这个必须的要突破; 💢软通动力 这周有pyton 自动化的项目(但是没信心,拒绝了); ### 阿里云OSS 桶有其他莫名其妙文件原因 ⏬未知文件夹⏬ ⏬未知文件⏬ 这个现象出现过好几次,删除了后面还是会出现;为了找这个是怎么进OSS桶里的,开了OSS日志,查看日志只有get请求,没有put和post请求;也是不知道怎么进去的; 今天早上提交了工单,客服说是OSS回源加的文件; 数据管理👉镜像回源 去掉404回源,会导致wordperss CDN用不了; 问题解决的方法:写1个脚本,定时清除404回源的文件,并设置白名单,白名单里的文件不删除;或者监控404的文件和文件夹,并立即删除; ### 软通动力,坐班(待岗)第九周 ✅学习计划 python学习不动了,找的学习资料是几年前的,过时了,学习AI+python 外包又用不到,没方向(主要是没有目标); 这周本想写1个模型调用browser user,可以执行任务操作浏览器,然后发现有个mcp的server可以直接用,写了也是白写; 💢软通动力 这周一发了《不同意出项通知书》和《限期补齐劳动报酬通知书》,然后第二天就又换位置,第三天再次换了位置,后面有打印机,经常有人过来打印,单独做一个位置,签了位置确认; 软通动力申请劳动合同查看,一直都是在审批中,6月27日申请的,到现在还没审批通过; 因为软通动力劳动合同下载页面空白; ### 如何快速从Bing搜索引擎删除指定URL?3步搞定下架请求 1. 💢引言 简要说明为什么需要删除Bing中的URL(如:过期页面、隐私泄露、敏感内容等)。 强调Bing官方提供工具可快速操作,无需技术背景。 2. ✅删除URL的3个步骤 ✅步骤1:登录Bing站长工具 访问Bing Webmaster Tools 。 用Microsoft账户登录(若无账号需先注册)。 添加并验证你的网站(若未操作过)。 ✅步骤2:提交URL删除请求 进入「仪表盘」👉 选择目标网站 👉点击配置 👉 阻止URL 👉 添加要阻止的URL 输入需删除的完整URL(支持单个或批量提交)。 选择URL类型👉页面,阻止类型👉URL与缓存 ✅步骤3:确认并等待处理 提交后Bing通常会在几小时至24小时内生效。 可通过「移除请求状态」查看进度。 3. ❗❗❗注意事项 临时屏蔽 vs 永久删除: 临时屏蔽(约90天):仅隐藏缓存,原页面仍可被重新抓取。 永久删除:需确保页面返回404或410状态码,否则可能重新收录。 适用范围:仅对Bing搜索生效,Google需另操作。 4. ❗常见问题 Q:提交后URL仍能搜索到?A:检查页面是否已失效,或尝试清除Bing缓存(工具中提供选项)。 Q:未验证网站如何删除?A:通过Bing反馈页面 提交请求,但效率较低。 5. ❗结语 提醒定期检查搜索引擎收录情况,建议配合robots.txt或noindex标签预防问题。 ### 停止并删除dockers 网络 在Ubuntu 24.04 系统上部署了ai-manus,目前这个开源项目没有用户登陆功能,开放到公网的时候,有被其他人使用的风险,准备关掉docker 容器,然后发现有个docker 网络正在被使用,关闭不掉; [+] Running 4/4 ✔ Container ai-manus-frontend-1 Removed 10.2s ✔ Container ai-manus-backend-1 Removed 0.8s ✔ Container ai-manus-sandbox-1 Removed 0.0s ! Network manus-network Resource is still in use 0.0s 可以使用下面的命令行找到docker 容器,stop掉后,再执行docker compose down docker network inspect manus-network | grep -A 5 "Containers" docker stop 容器名称 获取name值,直接stop docker stop $(docker network inspect manus-network | grep -A 5 "Containers" | grep "Name" | awk -F'"' '{print $4}') 再次使用的可以,进入ai-manus目录执行docker compose up -d ai-manus目前有manus功能的80%,但是有个缺点就是消耗tokens 太凶了,跟manus使用没什么区别; ### 软通动力,坐班(待岗)第八周 ✅学习计划 python 学习,还是受AI影响,主要是AI太方便了,感觉学习python 吃力不讨好,学习成本太高 学习了browser use ,可以使用模型,给模型下发任务,执行浏览器操作步骤;可以用于web自动化测试,效果未知; 通过学习python和browser use创建了dify自定义工具,目前可以执行浏览器内容的获取和分析 💢软通动力 目前还是跟之前一样,《不同意出项通知书》和《限期补齐劳动报酬通知书》还是没有发;目前困难部分就是不知道发给谁,还是随便发,来表示自己对待岗和只发基本工资表达不同意? 最后还有一点,在华为工作的时候要保留工作证据,打卡记录和加班证据; ### 解决宝塔部署泛域名SSL证书提示不安全问题 ❗ 现象:宝塔导入A泛域名SSL证书,浏览器上访问A域名,总提示不安全;B域名使用宝塔申请的证书访问正常;但是在阿里云另外一个服务器上使用A泛域名SSL证书,浏览器不会提示不安全; ✅ 原因:A域名的证书DNS的TXT解析存在问题,有个TXT解析,主机记录类似_acme-challenge,这个解析到了之前的1个阿里云公网IP;只要删除掉这个TXT解析域名,清空浏览器缓存,再次访问A域名就能解决问题; ✅ 发现问题的过程:发现自己买的泛域名SSL证书在浏览器上总提示不安全;就尝试了宝塔上申请证书,但是申请证书失败,提示内容显示使用的是之前的阿里云服务器公网IP地址,就想到了有可能是阿里云DNS域名解析有问题; ### 软通动力,坐班(待岗)第七周 ✅学习计划 python 基础语法和进阶已经学完一遍 AI+测试,环境已经部署完,能正常运行 DIFI + Agent 学习中.... 💢软通动力 软通动力目前没有沟通,没动静; 这周应该要发《不同意出项》和《期限补齐劳动报酬通知书》,目前还没发,计划下周一发送,而且频率是每周一次,目前是一个月一次; 🔻限期补齐劳动报酬通知书🔻 杭州软通信息技术服务有限公司:我是XXX(身份证号码:XXX),系贵公司XX部门的员工,自20XX年X月X日起在贵公司工作,双方签订了劳动合同,约定税前月工资为人民币XX元(大写:XX元整)。然而,经本人核对银行流水及工资条等记录,发现贵公司在20XX年X月X日至X月X日期间,未按照约定足额向我支付劳动报酬。具体差额为XX元(大写:XX元整),具体情况如下:2025年X月:应发工资(税前):XX元,实发工资(税前)XX元,差额XX元。2025年X月:应发工资(税前):XX元,实发工资(税前)XX元,差额XX元。鉴于上述情况,本人依据《中华人民共和国劳动合同法》及相关法律法规的规定,特向贵公司提出以下要求:请贵公司在收到本通知书之日起三个工作日内向我补发该差额部分工资。如贵公司未能在上述期限内足额支付劳动报酬,我将不得不采取进一步的法律措施,包括但不限于劳动监察投诉、申请劳动仲裁或提起民事诉讼等方式维护我的合法权益。届时,由此产生的一切法律后果及额外费用(如律师费、诉讼费等)将由贵公司承担。希望贵公司能够重视此事,尽快履行支付义务,避免不必要的法律纠纷。同时,我也保留与贵公司友好协商解决此事的权利。特此通知! 通知人:XXX20XX年X月X日 ### 宝塔网站监控报表应用的SEO优化存在非常严重的问题(疑似投毒) 尤其是推送工具和Sitemap 工具这2个功能,推送的URL非常不专业,把wordpress文章编辑页面和删除页面都要推送;还有里面利用漏洞传播或者下载服务器文件的URL;这个太吓人了; 解决方法:关闭网站监控报表的定时生成Sitemap ❗❗❗好像是遍历目录攻击 问了AI,风险等级高危; 🔻莫名其妙的from🔻 找到了对应的网站,这个网站是收录国内博客网站的,但是我从来没有在这个网站上主动申请收录,真的是莫名其妙,推送这个URL干啥? 🔻推送文章编辑页面🔻 ### 小米机械键盘 MK71 Pro 驱动下载地址 🔻小米机械键盘 MK71 Pro 驱动🔻 ❗❗❗2025年7月2日:已经报废,刚开始win按键失灵;然后不小心把谁倒在了键盘上,就好几个按键失灵,显示器白屏;键盘居然不防水; ### 记录下wordpress 主题地址官网和Erphpdown 插件下载地址 记录下插件下载地址(老是要找下载地址);这个插件主要是用于wordpress文章收费 🔻wordpress 主题地址官网🔻 🔻Erphpdown 插件下载地址🔻 Erphpdown 插件:支持在线支付(支付宝、微信支付、贝宝Paypal、信用卡Stripe),用户推广、提现,发布收费下载与收费内容查看,VIP会员权限等功能的插件 ### 软通动力,坐班第六周 💢昨天软通发工资了,共发了2555元,请假4天,差不多扣了将近800; ✅这周主要学习内容 ❗这周主要还是学习python基础语法,进度差不多三分之一;python的语法基本上跟Java差不多,只是一定程度上简化了Java语法; ✅下周计划 ❗下周开始准备,发工资异议函和出项异议函,计划每周发一次;然后投诉社保,公积金等没有足额发; ✅在项目中要收集的证据 ❗出项邮件通知书,工作证明,加班证据; ### CloudFlare CDN + 阿里云 CDN,实现国外CDN访问网站网络加速 ✅原理是通过域名服务商的DNS解析,实现国内访问走阿里云的CDN,国外访问走CloudFlare CDN,实现加速网站,国外访问还可以实现保护源站功能; 💜准备工作 ❗源站的主域名 A.COM ❗工具域名 B.COM,工具域名可以托管到CloudFlare ,或者就是在CloudFlare 上注册的域名 ❗PayPal或者信用卡(外币) 主要是用于支付免费的CloudFlare SAAS功能 💜流程图 💜操作步骤 ❗CloudFlare设置 登陆CloudFlare官网; 账号主页👉点击域名 DNS👉记录👉添加记录 SSL/TLS加密设置微完全或者严格 添加回退源 添加自定义主机名 ❗阿里云DNS设置 阿里云添加CloudFlare的TXT解析 阿里云域名DNS添加CloudFlare 2个TXT值 阿里云域名DNS解析CNAME和A CNAME解析 A解析 就这样配置好了,也可以登陆网站校验效果 💜效果 🔻测速网站🔻 貌似效果不太好;应该再加个VPS中转下,应该效果会更好; 🔻没设置CloudFlare CDN 前🔻 🔻还会有被封号的风险?这个不确定会不会封号🔻 ### 分享和记录一个 AI/LLM模型图标集下载网址 🔻官网🔻 🔻GitHub🔻 可以直接搜索,然后点击下载SVG格式的文件; ### 软通动力,坐班第五周 这周从中控搬到了慧岗,6人挤在1个会议室里;公司发的笔记本,周末要带回家; 目前还是没有新项目,HR说是没有新项目,有1个1000多人的新项目是硬件测试,进不了; 坐班期间,还是学习python和AI相关知识; ### 华为外包目前行情 [Content is password protected] ### 软通动力,坐班的第一个月 ✅学习软件测试的基本概念; ✅学习python+AI+自动测试; ✅完善自己部署开源项目的AI相关配置和学习怎么使用DIFI; ✅学习使用Manus,解决了wordpress 文章浏览量+2的问题; ✅创建了1个wordpress 插件 ✅创建软通动力考勤工时统计 ✅部署code-server和配置(汉化,Java和python插件,github,git相关配置),可以远程编程; ✅学习《劳动法》和创建仲裁知识库; ❗最后软通动力还是没有动静; ### 软通动力合同续签大坑之一 第一次签的合同是技术岗;合同续签的时候是实施岗;实施岗和技术岗有很大区别,比如出项后,坐班有可能存在大坑; 这个坑,还是在仲裁群里看聊天记录发现的;当时只知道是续签合同,没想到居然埋了个大坑; 出项这个问题后,也不知道怎么补救; ### 解决微慕小程序版本更新后和WPJAM浏览量统一字段后,wordpress 浏览量+2的问题 前言 ✅这次用的是manus解决的,特别方便;之前用deepseek,chatgpt 用了好久都没能解决。 ✅使用manus,不到半小时就能解决问题了;不过manus需要用🪜,才能使用; 🔻manus官网🔻 🔻🔑🔻 🔻这是我用manus解决BUG的过程🔻 下面就是解决浏览量+2需要修改的代码 第一步:还是需要修改下面的代码(统一微信小程序和wordpress浏览量字段) 第二步:修改解决浏览量+2代码; 1、注释掉WordPress端自动计数钩子: 在rest-api-to-miniprogram.php中注释掉了第75行的add_action('wp_head', 'addPostPageviews'),避免WordPress端重复计数 2、优化小程序端浏览量递增逻辑: wp-content/plugins/rest-api-to-miniprogram/includes/ram-views-api.php 把下面的代码全部替换掉ram-views-api.php里的代码 cache_key_prefix . $post_id; $views = wp_cache_get($cache_key, 'views'); if ($views === false) { $views = (int) get_post_meta($post_id, 'views', true); wp_cache_set($cache_key, $views, 'views', 3600); // 缓存1小时 } return $views; } // 增加浏览量的方法 - 优化版本,确保每次请求只增加一次 public function increment_views($post_id) { // 检查该文章是否已经在本次请求中更新过 if (isset(self::$updated_posts[$post_id])) { return self::$updated_posts[$post_id]; // 直接返回已缓存的浏览量 } // 获取当前浏览量 $views = (int) get_post_meta($post_id, 'views', true); $views++; // 直接更新数据库,绕过缓存 global $wpdb; $meta_key = 'views'; $meta_value = $views; $meta_id = $wpdb->get_var($wpdb->prepare("SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key)); if($meta_id) { $wpdb->update( $wpdb->postmeta, array('meta_value' => $meta_value), array('meta_id' => $meta_id) ); } else { $wpdb->insert( $wpdb->postmeta, array( 'post_id' => $post_id, 'meta_key' => $meta_key, 'meta_value' => $meta_value ) ); } // 更新缓存 $cache_key = $this->cache_key_prefix . $post_id; wp_cache_set($cache_key, $views, 'views', 3600); // 记录此文章已在本次请求中更新过 self::$updated_posts[$post_id] = $views; // 记录调试信息 if(defined('WP_DEBUG') && WP_DEBUG) { error_log('RAM Views Update: Post ID ' . $post_id . ', Views: ' . $views . ', Time: ' . date('Y-m-d H:i:s')); } return $views; } } ### 软通动力,坐班第九天 回复不同意《出现通知书》邮件后,软通动力没回复,没动静; 软通动力也没有进行待岗工作安排,没有安排新项目面试; 昨天早上打狂犬疫苗第三针,请假半天; ### 软通动力,坐班第七天(回复不同意《出现通知书》模板) 软通动力那边,一直都没反应;完全就是放任不管的状态; 然后发现考勤班次,还是之前的弹性坐班,按照软通坐班的考勤时间来算(早上9:00到下午18:00),居然还欠1.72小时; 这周回复了《出项通知》邮件,明确表示不同意降薪调岗;需要安排新项目面试;结果还是没一点反应,也没回复我的邮件; 🔻下面是不同意《出项通知书》模板🔻 尊敬的领导及人事部门:您好!感谢公司对我工作的关注与安排。针对2025年4月29日收到的《出项通知书》邮件,我已仔细阅读并充分理解其中内容,但基于以下原因,本人无法接受通知中的相关安排:1. 协商一致原则未被遵守根据《劳动合同法》第三十五条规定,用人单位变更劳动合同约定的内容(包括岗位调整、工作安排等),需与劳动者协商一致后方可执行。然而,《出项通知书》中涉及的工作安排调整并未与本人进行充分协商,也未达成一致意见,因此该决定乏法律依据。2. 缺乏明确的工作安排通知书中未明确说明待岗期间的具体工作安排、劳动条件以及后续的职业发展路径。这种不确定性对员工的职业规划和个人生活造成了较大影响,不符合合理用工的原则。因此,本人无法接受此安排。3. 工资待遇保障问题若公司坚持要求本人进入待岗状态,根据《劳动合同法》第四十条及地方相关规定,公司应按照原聘用合同中约定的工资标准继续支付薪资,或在合法合规的前提下提供合理的经济补偿(如"N+1”)。若未能满足上述条件,本人无法接受待岗安排。综上所述,本人不接受《项通知书》中的相关安排,并希望公司能够重视我的诉求,重新考虑合理的解决方案。如果公司仍坚持当前决定,我希望公司能够按照法律法规的规定,提供相应的经济补偿或重新安排适合的工作岗位。如有进一步沟通需求,我愿意积极配合。期待您的正式回复!此致敬礼!姓名:XXXX工号:XXXX日期:2025年5月15日 ### 被拉进神秘微信群后,外包同事集体躲过了公司埋的5个坑 被同事拉进一个微信群,51加油群; 主要是为了外包公司提供仲裁帮助和避免不必要的坑; 比如收到出项邮件,如何回复邮件;证据收集,仲裁流程等等; 🔻51加油网站🔻 ### 坐班第三天,请假一天 昨天晚上,被小区野猫抓伤;外面的野猫还是要保持一段距离; 今天到医院打了狂犬疫苗; ### 软通动力,坐班第二天 软通动力会配一台笔记本,能连接互联网;然后他们什么都不管(包括玩手机),这个也不知道是不是存在陷阱; 进入资源池,跟裁员差不多了; 有个同事也准备进行仲裁了; 外面投简历,没有一个面试;网上也说现在的招聘网站,都是挂在职位的; ### 软通动力电子合同下载 软通动力电子合同下载地址: 手机登陆成功后,居然没有合同? 上面的链接来源于知乎 软通同理另外一种下载方法 ### 软通动力,坐班第一天 还是早上在华为打卡,到慧港退掉华为工卡,补办软通工卡; 坐班地点是中控; 这次5个认识的,4个都进资源池; 说是任和孟看财报,亏损很严重;谁晓得是不是真的,还是瞎忽悠; ### 华为外包出项目,软通动力(杭州)上下班打卡时间 4月30日出项目,明天就要到软通动力报道,进入资源池;之前项目的同事,这个月都进资源池了; 打卡时间为早上9点,到下午6点;打卡地点还是在华为那边; 就1个项目面试,结果应该是没通过,然后一直没项目;是否成功进入新项目,也未知; 之前换项目都挺快,1个星期内就能进新项目; 下面的那篇文章最后一句,还真的有可能说中了; ### 【副业】谷歌广告收益 谷歌广告两年收益大概20美元; 每天基本上0.01-0.02美元;收益太少了,少的可令;要凑够100美元,那不得要10年左右;🤣😢 ### 【副业】网心云收益已经有1229元 每个月的电脑电费还是可以赚的; 好像是2年时间,网心云收益一共1229元; 第一次注册网心云的话,可以点击下面的链接注册,这样你也可以增加收益,我也可以增加收益,新人可得5元红包+50%加成卡+120元设备购买优惠劵:新人优惠劵 ### 【教程】Windows 11 如何快速进入系统环境变量设置 键盘同时按下Win+I ,然后输入sysdm.cpl,回车,弹出系统属性设置 系统属性选择高级👉环境变量 点击环境变量(N) ### 【教程】Windows + ollama 设置远程访问 如何进入环境变量,可以查看下面文章 环境变量添加 OLLAMA_HOSTS=0.0.0.0 OLLAMA_ORIGINS=* ### Windows + ollama 迁移下载模型到其他硬盘 用户环境变量修改Path,把ollama 原始路径修改为目标路径;然后把ollama的文件剪切到目标路径; ollama 默认安装路径:C:\Users\Cheng\AppData\Local\Programs\Ollama 环境变量添加OLLAMA_MODELS,变量值填模型路径:E:\Ollama\.ollama\models ollama 模型路径 :C:\Users\用户名\.ollama ### open-webui 设置用google账号登陆 - openwebui 设置openwebui的环境变量 设置环境开启OAuth变量 # 开启SSO账户登录 ENABLE_LOGIN_FORM=True ENABLE_OAUTH_SIGNUP=True OAUTH_MERGE_ACCOUNTS_BY_EMAIL=True 设置google OAuth 的环境变量 # Google GOOGLE_CLIENT_ID="" GOOGLE_CLIENT_SECRET="" GOOGLE_REDIRECT_URI="https://域名/oauth/google/callback" google 申请应用 使用谷歌账户登陆 选择客户端👉创建客户端;应用类型选择Web应用,名称填可以区分项目; 已授权的 JavaScript 来源,点击添加URL,URL 填写open-webui的域名 已获授权的重定向 URI,URL填写https://域名/oauth/google/callback; 点击创建后,会有客户端ID和SECRET值,添加到open-webui环境变量GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET; 使用google 账号登陆 ### Ubuntu 24.04 如何安装/卸载deb格式文件 - Ubuntu 卸载 # 首先搜索是否已经安装 dpkg -l |grep deb文件名字 # 卸载 dpkg -r deb文件名字 安装 如果有系统桌面,可以双击点击deb文件,就可以安装;安装方式跟Windows 11 系统安装exe文件一样; 如果没有系统桌面,只能通过命令行安装; apt deb文件格式的文件 ### 杭州公司,想尽一切办法降工资 资源池,降工资,换项目 😒之前组的同事,离项,进入资源池;公司要求降工资,否则不能换项目; 签降薪协议 🙌去年签的降工资(降500)协议,也不知道有没有什么其他条款, 当时签的时候问了,说是只是降工资,没有其他条款; 2025年6月27日:签降薪协议有可能是为待岗做准备的? 婚假扣钱 😂加上上个月请婚假,还要从绩效工资扣2000;也是没谁了; 放弃年假协议 🤷♂️这周又在iCan签了放弃年假协议; 今天通知换项目 4月19日,通知了换项目,进入资源池了; ### open-webui 环境变量设置 open-webui 是通过PIP方式安装;如果用docker部署的open-webui,可以使用docker方式添加环境变量; 下面就是添加通过PIP安装open-webui方式的环境变量; 在/etc/systemd/system/openwebui.service 文件里的Service添加下面一行 EnvironmentFile=/PATH/open-webui/open-webui.env 然后在open-webui.env添加环境变量,可以不用在open-webui 的config.py里修改环境变量(open-webui config.py 有变动); 示例: # Redis WEBSOCKET_REDIS_URL="redis://127.0.0.1:6379/0" WEBSOCKET_MANAGER="redis" DATABASE_POOL_SIZE=15 # 日志开启DEBUG GLOBAL_LOG_LEVEL="DEBUG" # searxng搜索URL ENABLE_RAG_WEB_SEARCH=True SEARXNG_QUERY_URL="https://localhost/search?format=json&engines=bing&language=zh-CN&safesearch=0&time_range=&categories=general" # Qdrant VECTOR_DB=qdrant QDRANT_GRPC=True QDRANT_URI=http://127.0.0.1:6333 QDRANT_API_KEY= QDRANT_GRPC_PORT=6334 QDRANT_ON_DISK=True ### open-webui + Ubuntu 设置开机自启动 前提 open-webui 是通过pip 安装; 系统是Ubuntu 24.04; 添加systemd开启自启动文件 在/etc/systemd/system目录下新建openwebui.service文件夹; [Unit] Description=Open-webui Service Before=network.target [Service] Type=simple ExecStart=/usr/local/bin/open-webui serve User=root Group=root Restart=always RestartSec=3 EnvironmentFile=/PATH/open-webui/open-webui.env [Install] WantedBy=multi-user.target 重置 Systemd 配置,并启动开启自启 # 重置 Systemd 配置 sudo systemctl daemon-reload # 设置开机自启动 sudo systemctl enable openwebui.service open-webui 日志查看 journalctl -u openwebui -f ### open-webui(0.6.0) 谷歌搜索无法使用 这个星期更新open-webui 到0.6.0 版本,发现使用联网搜索,会导致open-webui 非常卡,然后超过nginx设置的超时时间,很夸张的是要等2个小时后才会恢复;这是1个问题; 第二个问题就是用命令行启动要等很久,才能访问open-webui; 0.6.0 上1个版本,联网搜索非常快;打算要回退版本; 原来是www.googleapis.com ping 不通了,不确定是网络封了,还是谷歌封了; bing 申请搜索API,太麻烦,流程繁琐,还不能申请免费套餐; searxng 倒是能用,但是openwebui 概率搜索不出来结果,经常搜索失败; 问题解决了,设置clash就可以; ### Windows 11 更新补丁后,文件资源管理器闪退 根因 3月29日,Windows 11 有2个补丁,其中一个补丁导致文件资源管理器闪退;只要卸载其中一个补丁(不是卸载安全补丁); 总结 但问题出现后,应该尝试找出为什么会出现问题?出现问题前,我们做过/改过什么导致这个问题出现,不管是不是这个问题,不会影响问题的出现。 ### ITX华硕主板 Type-C 千兆有线网卡 一台ATX主板的电脑有个PICE 双网口的板子; 然后昨天在京东上买了Type-C 千兆有线网卡,可以通过type-c 的网线把两台电脑连接起来(设置同一网段的IP); 然后,不知道干嘛用了!🙄 ### 解决Ubuntu 24.04 登录页面键盘和鼠标无反应问题! 根因: 在Ubuntu 执行了apt autoremove时,把xserver-xorg-input-all包给卸载了; 之前遇到过,有线网络消失,鼠标键盘无反应问题,这次特意的关注了autoremove后,卸载的列表; 卸载信息列表: apport-symptoms cloud-guest-utils eatmydata fdisk gdisk libeatmydata1 libglu1-mesa libxatracker2 libxcb-damage0 libxvmc1 python-babel-localedata python3-attr python3-babel python3-certifi python3-configobj python3-dateutil python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-markupsafe python3-problem-report python3-pyrsistent python3-serial python3-systemd python3-tz python3-urllib3 ubuntu-advantage-desktop-daemon unattended-upgrades x11-apps x11-session-utils xbitmaps xinit xinput xserver-xorg-input-all xserver-xorg-input-libinput xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-amdgpu xserver-xorg-video-ati xserver-xorg-video-fbdev xserver-xorg-video-intel xserver-xorg-video-nouveau xserver-xorg-video-qxl xserver-xorg-video-radeon xserver-xorg-video-vesa xserver-xorg-video-vmware apt autoremove 这个命令行居然把关键的包给卸载了,真是无语了 解决方法: 前提是Ubuntu能连接网络。 # 重新安装 Xorg 输入驱动和核心依赖 sudo apt install --reinstall xserver-xorg-input-all xserver-xorg-core # 安装可能的缺失组件(如 libinput) sudo apt install libinput-bin xserver-xorg-input-libinput # 重建 Xorg 配置 sudo dpkg-reconfigure xserver-xorg # 重启系统 sudo reboot apt autoremove 和 apt-get autoremove 还是不要用了;还好能及时恢复,差点又要重装系统; ### 解决pip 安装时error: externally-managed-environment 错误信息 error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed. If you wish to install a non-Debian packaged Python application, it may be easiest to use pipx install xyz, which will manage a virtual environment for you. Make sure you have pipx installed. See /usr/share/doc/python3.12/README.venv for more information. note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages. hint: See PEP 668 for the detailed specification. 解决方法 echo 'export PIP_BREAK_SYSTEM_PACKAGES=1' >> ~/.bashrc source ~/.bashrc ### 【原创】open-webui数据库和redis 优化 🔻最新修改环境变量文档🔻 下面的没用了; openwebui 是通过pip 安装; 安装目录为:/usr/local/lib/python3.12/dist-packages/open_webui; 下面修改的是/usr/local/lib/python3.12/dist-packages/open_webui/env.py里的配置项; 提供的相关的环境变量 WEBUI_SECRET_KEY设置 WEBUI_SECRET_KEY 设置;在env.py,第377行; if WEBUI_AUTH and WEBUI_SECRET_KEY == "123123": 启用redis 默认是开启了redis WEBSOCKET_MANAGER 设置redis,启动redis缓存;在385行,""中输入redis WEBSOCKET_MANAGER = os.environ.get("WEBSOCKET_MANAGER", "redis") SQLite 改为postgresql 由默认的SQLite更换为postgresql; 在272行;postgresql数据库需要自己创建openweb相关数据表,否则启动openwebui会因为数据表字段属性错误,导致数据表初始化失败;解决的办法是通过创建docker时把postgresql的数据表初始化; 还有要注意的是,必须是第一次安装openwebui,没有创建账户;如果只是数据库迁移到postgresql;登录账户会提示密码错误; DATABASE_URL = os.environ.get("DATABASE_URL", f"postgresql://username:password@localhost:port/openwebui_db") DATABASE_POOL_SIZE 设置数据库连接池 默认是0;目前设置3;在280行 DATABASE_POOL_SIZE = os.environ.get("DATABASE_POOL_SIZE", 3) 感觉没用;如果模型和数据库在同一个服务器里会导致openwebui报500 网络错误,或者openwebui非常的卡顿; 修改默认端口 把/usr/local/lib/python3.12/dist-packages/open_webui/__init__.py配置文件里的8080都改为需要修改的端口;启动openwebui的时候,就不是默认的8080端口 ### 【原创】Ubuntu + pipelines 开机自启动 pipelines作用未知,不启用这个,openwebui的联网搜索貌似用不了,搜索无数据的概率大很多; 错误信息 2025-03-22 19:46:17.812 | ERROR | open_webui.routers.openai:send_get_request:78 - Connection error: Cannot connect to host 127.0.0.1:9099 ssl:default [Connect call failed ('127.0.0.1', 9099)] - {} 下面是怎么设置开启启动 在/etc/systemd/system目录下面新建pipelines.service文件,并输入下面的代码; [Unit] Description=pipelines Service After=network-online.target [Service] Type=forking ExecStart=/mnt/256G/docker/pipelines/start.sh WorkingDirectory=/mnt/256G/docker/pipelines/ User=root Group=root Restart=always RestartSec=3 [Install] WantedBy=multi-user.target 重载 Systemd 配置 sudo systemctl daemon-reload 启用开机自启动 sudo systemctl enable pipelines.service 启动服务并验证 sudo systemctl start pipelines.service sudo systemctl status pipelines.service ### Ubuntu 24.04 最垃圾的系统,太不稳定了,太离谱了!!! 💥💥💥有线网络和WiFi 会掉 用着好好的,重启或者reboot后,发现没有有线网络和WiFi; 之前解决的方法也不行;大概率是更新了显卡驱动后,网络驱动掉了! 💥💥💥鼠标和键盘驱动 会掉 这次更离谱键盘和鼠标驱动有可能掉了,系统突然黑屏,强制关机启动后;登录界面键盘和鼠标动不了,启动也进入不了Grub; Ubuntu 24.04 系统太特么离谱了! 上面的2个问题都是apt-get upgrade 后,执行了apt-get autoclean 和 apt-get autoremove;有可能是有关驱动clean/remove了,才出现的问题; 真特么离谱! ### Ubuntu+ollama 迁移下载模型到其他硬盘 ollama 模型目录 /usr/share/ollama/.ollama/models 设置ollama下载模型目录 先把/usr/share/ollama/.ollama/models里面的模型移动到指定的目录文件; 修改 vim /etc/systemd/system/ollama.service;新增下面的环境变量,同时把User和Group修改为root Environment="OLLAMA_MODELS=/PATH/models" 完整的配置: [Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/local/bin/ollama serve User=root Group=root Restart=always RestartSec=3 Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/.local/bin" Environment="OLLAMA_MODELS=/path/AI/models" [Install] WantedBy=default.target 执行 sudo systemctl daemon-reload 重启ollama service ollama start 查看ollama下载的模型 ollama list ### 解决open webui 开启联网搜索时,报Network Problem 错误 ⬇️原因应该是nginx 超时了;解决方法是nginx配置项增加超时时间; # 解决 Network Problem 问题 proxy_read_timeout 600s; proxy_send_timeout 600s; #proxy_set_header Connection $connection_upgrade; proxy_set_header Connection "upgrade"; ✔️加了配置后,Network Problem 错误概率小了点; ❗nginx的错误日志 ### Open webui 配置pipeline pipeline安装 1、拷贝Pipelines repository: git clone https://github.com/open-webui/pipelines.git cd pipelines 2、安装 pip install -r requirements.txt 3、启动pipeline ./start.sh Open webui配置pipeline 设置➡️管理员设置➡️外部连接➡️开启openAI API➡️ 点击( + ) 填入pipeline的地址和API密钥:0p3n-w3bu! 同时把原先默认的API给删除,否则Open webui会白屏很久; 也不知道pipeline是干嘛用的;好像是上传下面github py文件; ### 【教程】Ubuntu 通过PIP方式部署openwebui ➡️引言 使用dockers部署openwebui,下载速度太慢了。改用pip安装open-webui; 通过python安装目录位置(0.5.10) /usr/local/lib/python3.12/dist-packages/open_webui python 虚拟环境目录 /root/.pyenv/versions/3.12.0/lib/python3.12/site-packages/open_webui openwebui英文官网⬇️ 中文文档⬇️ ➡️安装openwebui pip install open-webui --break-system-packages --ignore-installed ➡️运行openwebui open-webui serve 如果端口8080已经被其他服务占用,可以在后面添加--port 9999; open-webui serve --port 9999 在浏览器里输入,http://IP:9999访问; ➡️更新openwebui pip install --upgrade open-webui 如果更新失败(有依赖问题)执行下面的命令行 pip install --upgrade open-webui --break-system-packages ➡️其他 ⬇️问题一:启动时报错 2月 03 20:12:01 My-System open-webui[25241]: warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning) 2月 03 20:12:01 My-System open-webui[25241]: WARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting> ✔️解决方法: apt-get install ffmpeg ⬇️问题二:解决登录后白屏很久一段时间,才显示的问题 设置👉管理员设置👉外部连接👉关闭OpenAI API ⬇️问题三:开启联网 设置👉管理员设置👉联网搜索 搜索引擎选择duckduckgo(要有外网访问权限),这个是免费使用;其他的要配置; ### 本地电脑(Ubuntu+ollama)部署deepseek R1 1.5b 模型 下载Ollama 可以选择对应系统:Windows、Linux、macOs ,下载Ollama官网 ⬇️ 下载deepseek-r1 下载 deepseek-r1:1.5b ,因为电脑没独立显卡,只能下载1.5b,使用CPU;用CPU 速度还挺快; CPU 是i3 12100 ,7b也能使用,开启联网功能,CPU占用80%左右,内存占用15G; 可以使用14B; deepseek-r1 模型下载官网 ⬇️ 下载和运行的命令行 ollama run deepseek-r1:1.5b 查看ollama 已经下载的模型 ollama list 删除ollama已下载的模型 ollama rm deepseek-r1:1.5b 更新 可以执行安装命令行来更新ollama curl -fsSL https://ollama.com/install.sh | sh 效果 效果还行,不过不能联网使用(openwebui可以设置联网搜索),只能聊天;其他事情做不了; 退出命令行:/bye root@My-System:/mnt/256G/docker# ollama run deepseek-r1:7b >>> /bye 其他 没有GPU:1.5B Q8推理 或者 8B Q4推理 4G GPU:8B Q4推理 8G GPU:32B Q4推理 或者 8B Q4推理 16G GPU:32B Q4推理 或者 32B Q8推理 24G GPU: 32B Q8推理 或者 70B Q2推理 部署openwebui ⬇️ 可以使用openwebui;通过浏览器访问本地的deepseek; 也可以内网穿透到外网使用; ### 最新 Ubuntu + MySQL 安装部署,远程访问 安装MySQL sudo apt-get update apt-get install mysql-server 登录MySQL,默认密码为空,直接回车进入MySQL; mysql -u root -p 设置MySQL root 密码 # 登录MySQL mysql -u root -p # 通过MySQL命令行修改root 密码 use msyql; // 设置密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; 不设置root 密码登录 update user set authentication_string='' where user = 'root'; service mysql restart 允许root账户远程登录 编辑MySQL配置文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf 注释掉bind-address = 127.0.0.1,并新增bind-address = 0.0.0.0 #bind-address = 127.0.0.1 bind-address = 0.0.0.0 保存并退出MySQL 授权root 账户远程访问 CREATE USER 'root'@'%' IDENTIFIED BY '密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; // 退出MySQL exit; ### Cloudflare + Hotmail 无成本创建自定义域名邮箱 ✨Cloudflare 原理是用其他邮件代发,代收邮件;作用是有自己的域名邮箱和不想暴露邮箱而使用自定义邮箱; 具体如何创建自定义域名邮箱步骤如下: 📌主要是分为2个步骤: Cloudflare 配置电子邮件 Hotmail配置别名 📍Cloudflare电子邮件设置 Cloudflare后台 📌首先要有Cloudflare账号和域名,且域名已经DNS到了Cloudflare; 📌登录Cloudflare后台; 📌点击左边菜单栏的账户主页👉点击添加的域名👉电子邮件 📌点击电子邮件👉电子邮件路由,输入自定义地址和目标位置(就是hotmail 邮箱地址),点击创建并继续; 📌然后就是添加配置DNS,这个步骤是自动化,只要点击添加记录并启用就行 📌然后设置Cloudflare电子邮件的路由规则和目标地址(已经自动化配置好了) 📍Hotmail 设置别名 📌登录Hotmail 别名设置页面 📌点击添加电子邮件 📌选择将现有电子邮件地址添加为 Microsoft账户别名;就是在Cloudflare设置的自定义域名 📍等待Cloudflare电子邮件生效 配置好后,并不是马上生效,是要等待一段时间后生效; 就可以用hotmail发邮件,收邮件;对方就显示Cloudflare的自定义域名邮箱 ### Wordpress 文章网站卡片插件:Custom Card Custom Card Plugin 是一个用于在 WordPress 网站中快速添加美观的卡片布局的插件。支持灵活的内容展示,包括图片、标题、描述文字和链接,适用于博客文章中插入网站的场景。效果 功能响应式布局,适配桌面端和移动端。支持自定义图片、标题、描述文字和链接。提供简单易用的短代码,快速插入卡片。灵活的自定义样式,适合不同设计需求。安装下载插件的 ZIP 文件。登录 WordPress 后台,导航到 插件 > 安装插件。点击 上传插件 按钮,选择 ZIP 文件并点击 安装。安装完成后,点击 启用插件。插件启用后,可以通过短代码或小工具在页面中添加自定义卡片。使用方法使用方法使用短代码使用在编辑器中插入以下短代码:替换短代码中的参数值,生成您需要的卡片内容。使用区块为了方便快捷使用网站卡片,新增了区块;文章区块搜索卡片展示,输入网站的URL;短代码参数title:卡片的标题(必填)。description:卡片的描述内容(可选)。image_url:卡片的图片链接地址(必填)。link_url:卡片的跳转链接(可选)。自定义样式插件默认样式文件位于 /assets/css/style.css。您可以通过 WordPress 外观设置自定义 CSS,覆盖默认样式。常见问题1. 插件安装后没有效果?请确认以下几点:插件是否正确启用。是否在页面或文章中插入了短代码。图片链接是否有效。2. 如何修改卡片的样式?您可以在 WordPress 外观中的 自定义 CSS 中添加样式,也可以直接编辑插件的 style.css 文件。3. 插件支持多语言吗?当前版本仅支持英文和简体中文,后续版本将支持更多语言。== 更新日志 ==2.0.0新增区块(使用方法:区块搜索卡片展示,然后输入URL)1.0.0初始版本发布。实现卡片的基本布局和样式。== 声明 == 本插件基于 GPL v2 许可证发布,您可以自由使用、修改和分发。== 联系方式 == 如需支持或报告问题,请联系: 作者网站: https://www.saita.com.cn 支持邮箱: chenghoufeng@saiita.top ### Wordpress 网址卡片插件 (二) 解决的问题 2025年,用ChatGPT 重新写了网址卡片插件,解决了部分问题: 如果文章放几个加载很慢的网址时,打开文章会很慢,; 卡片样式不好看 解决方法是第一次打开文章时,把卡片URL相关信息写入数据库中;修改css样式文件 更新代码后还存在的问题 下面就是最新的custom-card-plugin插件代码(不过还是有很多问题,没解决); 目前的问题: 文章第一个网站卡片,标题和描述一直loading; 卡片样式还是存在很多不协调的问题 整个卡片不能点击跳转,只能点击查看详情 每个卡片大小不统一 custom-plugin.php代码 prefix . 'custom_card_cache'; // 表名:wp_custom_card_cache // 设置字符集 $charset_collate = $wpdb->get_charset_collate(); // SQL 查询:创建表 $sql = "CREATE TABLE $table_name ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, url VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL, description TEXT, image VARCHAR(255), cache_time DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY url (url) ) $charset_collate;"; // 如果表不存在,则创建表 require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } // 插件激活时创建数据表 register_activation_hook(__FILE__, 'custom_card_create_db_table'); // 注册短代码 [custom_card] function custom_card_shortcode($atts) { // 获取 URL 参数 $atts = shortcode_atts(array( 'url' => '', // 默认情况下,url 为空 ), $atts, 'custom_card'); // 确保 URL 不为空 if (empty($atts['url'])) { return '
请输入有效的 URL。
'; } // 调用函数从 URL 获取数据并生成 HTML 卡片 return custom_card_fetch_data($atts['url']); } add_shortcode('custom_card', 'custom_card_shortcode'); // 获取网页数据并生成卡片,带缓存机制 function custom_card_fetch_data($url) { global $wpdb; $table_name = $wpdb->prefix . 'custom_card_cache'; // 检查数据库中是否已经缓存了该 URL 的数据 $cached_data = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $table_name WHERE url = %s ORDER BY cache_time DESC LIMIT 1", $url) ); // 如果有缓存数据,且缓存未过期(例如 1 天内缓存有效) if ($cached_data && (strtotime($cached_data->cache_time) > strtotime('-1 day'))) { // 返回缓存的数据 return custom_card_generate_html($cached_data->title, $cached_data->description, $cached_data->image, $url); } // 如果没有缓存数据,或缓存已过期,则抓取新的网页数据 $response = wp_remote_get($url); if (is_wp_error($response)) { return '无法获取内容,请检查 URL 是否有效。
'; } // 获取网页的 body 内容 $body = wp_remote_retrieve_body($response); // 从网页中提取所需的内容 $title = custom_card_extract_title($body); $description = custom_card_extract_description($body); $image = custom_card_extract_image($body); // 如果没有提取到标题或描述,则返回错误信息 if (empty($title) || empty($description)) { return '未能正确提取网页内容。
'; } // 将抓取的数据插入到数据库中(或更新缓存) $wpdb->replace( $table_name, array( 'url' => $url, 'title' => $title, 'description' => $description, 'image' => $image, 'cache_time' => current_time('mysql'), ), array('%s', '%s', '%s', '%s', '%s') // 参数格式 ); // 生成并返回卡片 HTML return custom_card_generate_html($title, $description, $image, $url); } // 提取网页的标题 function custom_card_extract_title($html) { preg_match('/' . esc_html($description) . '
'; $card_html .= '查看详情'; $card_html .= '' . esc_html($url_info['description']) . '
'; $output .= '${data.description}
`); } else { card.html('您即将离开「' . $blog_name . '」,请注意您的帐号和财产安全。
'; $message .= '' . $redirect . '
'; // 添加返回主页的按钮 $message .= ''; wp_die($message, $blog_name . ' - 安全中心', 302); } else { if (self::get_setting('content')) { add_filter('the_content', [self::class, 'filter_content']); } if (self::get_setting('comment')) { add_filter('comment_text', [self::class, 'filter_comment_text'], 10, 2); add_filter('get_comment_author_link', [self::class, 'filter_comment_author_link'], 10, 2); } add_filter('robots_txt', [self::class, 'filter_robots_txt'], 999, 2); } } 上述代码在 $message 变量中添加了一个返回主页的按钮。这个按钮链接到网站的主页(使用 home_url() 函数)。当用户访问非法请求时,他们将看到一个 "返回主页" 的按钮,以便他们可以回到网站的主页。 确保你的修改已保存,并清除缓存以查看效果。这将允许用户返回主页,以改善用户体验。 3、添加谷歌广告 我的提问:在广告的地方提示这是谷歌广告 ChatGpt:要在广告的位置添加提示,说明这是 Google 广告,你可以在广告代码周围添加自定义 HTML 标记。下面是一个示例,如何将提示添加到广告的顶部: // ... // 添加 Google AdSense 广告 $ad_code = '这是 Google 广告
'; // 添加提示 $ad_code .= ''; $ad_code .= ''; // 替换为你的广告代码 $ad_code .= ''; $ad_code .= ''; $ad_code .= 'Privoxy encountered an error while processing your request:
Could not load template file no-server-data or one of its included components.
Please contact your proxy administrator.
If you are the proxy administrator, please put the required file(s)in the (confdir)/templates directory. The location of the (confdir) directory is specified in the main Privoxy config file. (It's typically the Privoxy install directory).
~'"%-like=?等符号查询不到任何记录 设置条件查询出记录后,翻到最后一页,再更改查询条件,测试各查询条件查询出记录后再切换条件查询是否正确。第一个查询条件查询出来的记录页数必须多于第二个查询条件查询出来的记录页数查询出相应的记录第一次查询条件范围比第二次大,不一定说要存在分页 设置查询条件,点击查询按钮,测试未查询到任何记录时,是否会给予相应的提示该查询条件下无任何记录提示‘未查到任何记录,请放大查询条件试试!’ 设置查询条件,按回车键,测试是否支持回车查询 执行查询条件可针对特定的场景不一定要实现 输入各查询条件,前中后包含空格 前后包含空格去掉空格查询,中间包含空格查不出记录 不输入或输入空格查询 提示请输入关键字查询 或 默认查询出所有记录 有日期查询字段输入查询值,测试存在日期型查询字段时,查询是否正确存在输入范围内的记录.能够执行查询 输入查询值,测试当存在开始日期及结束日期进行查询1、开始日期大于结束日期2、开始日期等于结束日期3、开始日期小于结束日期,但两者格式不一1、给予提示信息。2、能够正常查询。3、进行格式化后能够正常查询 超日期范围的查询输入1890-01-01或2999-01-01进行查询查询不到任何记录 输入非完整的日期或其它数据,测试对日期型字段查询时,是否对非法数据进行了控制如:2015-08~2015-09-30、205-02-02、2015-7-7、2015-07-或其他数据汉字、字母、特殊字符或随便输入数字进行了格式化输入或给予明确提示 输入不存在的日期进行查询2015-02-30、2015-13-01、2015-07-32给予提示信息 输入不符合项目设定的日期类型,是否会做格式转换如要求格式是2015-07-20,输入的是2015/07/20、2015.07.20等自动转换或者不符合格式要求 有重置功能输入查询条件后,点重置 重置后,已输入或已选择的值都恢复为默认值 不输入或输入空格搜索 提示请输入关键字 日期格式(年月日形式) 输入正确的日期如:2011-5-11验证通过,输入正确 测试对日期数据的溢出是否进行了控制?输入符合要求的年月,输入32日,如1989-11-32给予提示信息,不允许提交 输入符合要求的年日,输入13月,如1989-13-12 输入符合要求的年,月输入4、6、9、11月,日输入31日 输入符合要求的非闰年,月输入2,日输入29,如2009-2-29 输入符合要求的闰年,月输入2,日输入30,如2008-2-30 测试是否对日期型数据进行了格式化输入?输入不合法的日期,如2009-09、2009-09- 、200-2-2等给出错误提示 输入不符合该项目的日期格式,(如项目日期格式为2009-10-10,而输入的是2009/10/10、2009.10.10等) 随便输入数字,如1、22、456等 测试是否对时间型数据是否进行了格式化输入?输入空白进行了格式化输入,不可以输入非时间之外的数据 输入特殊字符串NULL、null、 空格的转义字符;
;