我的博客 goblog 是自己用 Go 写的,建站 5 年多了。 最近开了 Claude 的 20x 套餐——之前 5x 不够用,换成 20x 之后每周又总能剩下一些。于是周末就变着法儿想,剩下的算力还能用在哪儿。这不,许久没更新的博客正好可以拿来收拾一下 😆 在这之前,其实已经让它做过一次类似的优化:今年春天,博客从 MySQL 迁到了 GitHub 仓库存储——文章以 Markdown 放在一个叫 blog-data 的仓库里,不再需要数据库。那次也是 Claude 干的。 有了上次的经验,这次我索性把整个项目连同数据一起丢给它通读了一遍,本来想看看还能加点什么好玩的功能,结果先被泼了一盆冷水。 先说个让我哭笑不得的 我的 r…
阅读全文前言:分布式系统里最让人头疼的事 如果你做过一点微服务开发,大概率都遇到过这种场景: 用户下单 → 扣库存 → 扣余额 → 更新积分。 这听上去很简单,按顺序写几行逻辑就好,但问题是——这些操作分散在不同的服务、不同的数据库里。 于是问题来了: 如果中间有一步失败了,整个流程该怎么办? 订单创建了,但库存没扣? 库存扣了,但支付失败? 消息没发出去,用户看不到状态? 这就是经典的分布式事务一致性问题。 今天我们就从最早的 2PC(两阶段提交)开始,一路讲到现在大家更常用的 Outbox 模式,看看这一路我们是怎么在”理想”和”现实”之间反复拉扯的。 一、理想中的完美方案:2PC(两阶段提交) 2PC,全称 Two Phase Com…
阅读全文
03在做移动应用开发时,不管是 Android 还是 iOS,我们都绕不开“签名”这件事。最近我们项目在筹备适配 HarmonyOS NEXT(鸿蒙 Next) 的 SDK,也顺势把鸿蒙的签名机制研究了一遍。这篇文章来分享下。 简单来说,签名的目的是确保应用的来源可信、内容完整、平台可识别。我们开发的应用,最终都要交给系统安装,那系统当然得确认一下:这个包是“你”发的、这包在传输过程中没被篡改、它是我允许安装的对象。这就要靠数字签名。 说到底,数字签名就是: 用私钥对应用包里的内容摘要加密,生成一个签名块,塞进包里。 系统在安装时用你当初的公钥解密它,校验签名是否匹配。如果一切对得上,才会放行。 我们先复习下 Android 和 iOS…
阅读全文写在前面 在我们的后端架构中,我们采用了以游戏为租户单位的多租户数据库设计。所有游戏共享同一套数据库 schema,每张表通过 game_id 字段进行逻辑隔离。这种设计在初期带来了显著的开发与维护效率,支持我们快速迭代、快速上线多个游戏项目。 然而,随着接入的游戏数量增加、业务数据持续增长,这种“共享单表”的设计逐渐暴露出一些架构层面的瓶颈与隐患。 某些高流量的游戏影响到了其他本应“风平浪静”的项目;一些核心表的索引开始变得笨重,甚至拖慢了查询性能; 数据分析时需要频繁在庞大的表中筛选特定游戏数据,效率极低。 更不用说,MySQL 的单表上限正一步步逼近我们曾以为遥远的边界。 我们意识到,曾经高效的“共享单表”策略,已经成为了未来…
阅读全文春节假期,我终于完成了两件大事:见了未来的岳父岳母,还带奶奶游览了北京。忙里偷闲,我决定总结一下这几天的经历,顺便分享一些“花钱”与“省钱”的小感悟。 作为一名农村出身的人,我的消费观念一直是:钱能不花,就不花。 例如: • 旅游?自己带矿泉水,自己带干粮,景区里一瓶水8块?不可能! • 门票?买最低门槛的,能溜进去的坚决不多花一分钱! • 遇到导游、摄影师、纪念品摊贩?避之如洪水猛兽,仿佛他们会瞬间吸干我的钱包。 但这些年,尤其是这个假期的几件事,让我逐渐意识到:有些钱,省下来是亏的,花出去才是赚的。 游泳:花钱买经验,少走弯路 大学时,我决定学游泳。(ps: 一个月1000生活费,拮据~)当时面临两个选择: 办游泳年卡(500块…
阅读全文引言 在 Golang 网络请求中,我们经常会遇到两种常见的错误:EOF 和 read: connection reset by peer。这两个错误虽然看似相似,但实际上有着本质的区别。这篇文章将深入探讨这两种错误的原因、区别以及如何优雅的处理它们。 错误原因解析 EOF 错误 首先,让我们看看 Golang 标准库中对 EOF 的定义: // EOF is the error returned by Read when no more input is available. // (Read must return EOF itself, not an error wrapping EOF, // because callers…
阅读全文在 Go 语言中,context 包提供了一种跨 API 和进程边界传递请求作用域值、取消信号以及超时信号的方式。使用 context 可以帮助我们更好地控制 goroutine,避免 goroutine 泄漏等问题。 出现 “context deadline exceeded” 错误通常是因为在请求上下文中设置了超时时间,但请求在超时时间内未完成。我们应该尽量避免这种错误,原因如下: 错误处理:context deadline exceeded 是一个错误,如果忽视它可能导致程序运行异常或产生其他错误。 错误分析:当我们对数据埋点和日志进行分析时,如果出现 “context deadline exceeded” 错误,我们很难直接…
阅读全文我们团队负责的防沉迷上报服务突然在某一天遭遇了内存溢出(OOM)的情况。通过查看 Prometheus 监控数据,我们发现 Goroutines 的数量在中午十二点之后呈现出线性增长趋势,直至晚上十点 OOM 发生,Goroutines 数量骤降为零。如下图所示: 从这个 Goroutine 的创建趋势图中,我们可以推断出服务在中午十二点触发了某个 bug,导致 Goroutine 不断创建,最终引发了内存溢出的问题。 队列实现 在我们的服务中,有一个用于上下线上报的队列。当队列达到一定阈值或指定时间间隔时,会触发读取和上报。以下是队列的具体实现: package main import ( "errors" "sync") typ…
阅读全文
09处理 gorm 错误返回时,有一些错误是没有办法直接使用 errors.Is 来进行判断的,比如主键冲突的错误,直接使用 errors.Is(err, gorm.ErrDuplicatedKey) 是无法判断出主键冲突的错误返回的。 如果没有办法进行判断,为什么 gorm 要给这样一个 error ,但又不能使用呢? gorm.io/driver/mysql 包中有一个 error_translator 的 go 文件 package mysql import ( "github.com/go-sql-driver/mysql" "gorm.io/gorm") // The error codes to map mysql erro…
阅读全文Tunnel 可以做什么 将本地网络的服务暴露到公网,可以理解为内网穿透。 例如我们在本地服务器 localhost:8091 搭建了一个 博客网站,我们只能在内网环境才能访问这个服务,但通过内网穿透技术,我们可以在任何广域网环境下访问该服务。相比 NPS 之类传统穿透服务,Tunnel 不需要公网云服务器,同时自带域名解析,无需 DDNS 和公网 IP。 将非常规端口服务转发到 80/443 常规端口。 无论是使用公网 IP + DDNS 还是传统内网穿透服务,都免不了使用非常规端口进行访问,如果某些服务使用了复杂的重定向可能会导致 URL 中端口号丢失而引起不可控的问题,同时也不够优雅。 自动为你的域名提供 HTTPS 认证。…
阅读全文
112023年,对我来说是充满购物冒险的一年,我购买了很多东西,今天,我想回顾一下,分享哪些购买对我来说物超所值,哪些则是我冲动消费的产物,让我感到后悔。让我们开始这段回忆旅程吧~??️ 超值购物体验 3D 打印机 拓竹 A1 2199RMB ????? 长久以来,我一直对3D打印充满好奇。23年年尾,拓竹推出了尺寸价格各方面都还蛮契合我期望的A1,首发抢到!也可能是因为到目前时间很短,新鲜感未消,所以,他是我综合来看,2023年购买的最值、体验最好的产品,当然我还有很多的坑的知识要去补,慢慢把它玩好,说不定以后再升级更贵的P系列呢哈哈~ spotify 会员 120RMB/年 爱合租 ??? 使用的是爱合租这个平台(非广),已经忘了大…
阅读全文
12在现代 Web 应用中,服务端与客户端之间的高效通信至关重要。本文探讨了四种主流的服务端通信方法:短轮询、WebSocket、SSE(Server-Sent Events)和长轮询,分析它们的工作原理、适用场景及优缺点。 一、短轮询:高兼容性的传统选择 短轮询是服务端通信的一种基本方法,客户端通过定期发送 HTTP 请求来检查服务器上的更新。 实际应用案例: 适用于新闻网站或博客的评论更新,用户可以在较短的时间内看到新的评论。 优点: 高兼容性,适用于所有支持 HTTP 的客户端。 缺点: 高资源消耗,频繁建立和关闭 TCP 连接。 使用场景: 最适合不频繁更新且对实时性要求不高的应用。 最普通的一个场景:客户端定期向服务器请求最新…
阅读全文
13在谈论 API 设计和开发时,有时,一个属性可以是多种类型中的一个,但不能同时是多种类型。比如支付接口的回调处理,常常为了兼容不同平台的参数,会使用以下方式中的一种来进行接收: 范型 key-value 形式的 map 所有的 Object 都去接收,枚举哪个取哪个 但这种模式,往往会造成参数内容的不规范 、接口维护困难 或者是浪费网络传输带宽。 在程序开发中,我们往往会采用主流的 HTTP 协议和 gRPC 协议进行通信,两种技术都为开发者提供了强大的工具来描述、验证和生成 API,但它们的方法和原则有所不同。 OpenAPI 和 oneof OpenAPI,早前被称为 Swagger,是一个用于描述 RESTful API 的规…
阅读全文随着现代软件开发的持续迭代,团队间的协作变得越来越重要。为了确保整个团队在编码、构建和部署过程中的效率和质量,引入一些特定的配置文件和标准工作流程显得尤为关键。以下就是一些在团队开发中常见而又重要的文件,我总结了它们的一些作用和优点。 1. .editorconfig 作用:.editorconfig 是一种定义代码格式约定的文件,它用于统一不同编辑器和 IDE 的代码格式设置。 好处: 保证团队成员间代码风格的一致性。 避免因为不同的代码风格导致的无意义的代码差异。 提高代码的可读性和维护性。 2. .dockerignore 作用:定义哪些文件或目录应该被 Docker 忽略,不被包括在镜像构建中。 好处: 减少 Docker…
阅读全文在今年7月份左右,我开始关注自行车,出于便携性而言,我更倾向于购买一辆折叠车,之前在大街上也看到了很多骑得超快的折叠车,所以我对于折叠车的竞速性能也是满意的,于是我开始看各种折叠车的测评和论坛。 折叠车和山地、公里车相比,会更加复杂,零件会更多一些。同样的,有整车 有组装。但在折叠车的市场里,不想公路和山地,大多数购买整车,在折叠车这里,组装是主市场。 组装,主要的零件就是车架,折叠车里最火的就是风行的车架。除了风行,另外就是大行、飞鱼 和 小布,大行是卖的最多的折叠车整车品牌,小布是一个很“高端豪华”设计很时尚的很贵的折叠车品牌。 风行蚂蚁腿: 大行P8: 小布折叠车: 因为风行折叠车的可选配、自定义方案足够多,所以我选择了从风行…
阅读全文
16Cloudflare R2 是一款高性能、低成本的对象存储服务。之前在使用 OSS 的时候,用惯了 OSS brewer, 在用 R2 时候发现,开始没有找到合适的 brewer 工具,而网页端上传会限制文件数量和大小,就尝试用命令行的 client 了哈哈, 使用之后发现,确实好用,相比使用网页管理对象存储,利用命令行工具可以大大提高管理效率,特别适合需要批量操作或脚本化的场景。 评论老哥分享了一个 client 工具: https://cyberduck.io/ 我尝试用下试试~ 安装 rclone sudo -v ; curl https://rclone.org/install.sh | sudo bash 查看 confi…
阅读全文
17实现 gorm.io/gorm/logger 下的函数⬇️ // gorm 源码 type Interface interface { LogMode(LogLevel) Interface Info(context.Context, string, ...interface{}) Warn(context.Context, string, ...interface{}) Error(context.Context, string, ...interface{}) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64…
阅读全文写博客一个很重要的东西就是图床, 如果没有一个合适的图床来安全稳定地存储数据,指不定哪天,你的文章就到处都是 而对于一个曾经被ban过号,崩过盘(硬盘)的人来说,分外敏感。如果你的图片存储在任何一个带监管的平台,你的账号很可能由于一些不可抗力资源牵连,内容全部404。 于是我对自己的博客相关的资源都进行了“安全”的部署,图片资源这块儿一年多来,我一直使用的是github做图床的,但是github有几个问题: 一个仓库的存储大小限制1G,如果超过限制,很可能会被ban库的。 GitHub 阻止大小超过 100 MB 的文件。 GitHub 在国内网络下无法访问。 于是,几个月前把云资源全部迁到cloudflare的我,又有了白嫖的念头…
阅读全文
19使用kratos这个框架有近一年了,最近了解了一下kratos关于程序优雅退出的具体实现。 这部分逻辑在app.go文件中,在main中,找到app.Run方法,点进入就可以了 它包含以下几个部分: App结构体:包含应用程序的配置选项和运行时状态。 New函数:创建一个App实例。 Run方法:启动应用程序。主要步骤包括: 构建ServiceInstance注册实例 启动Server 注册实例到服务发现 监听停止信号 Stop方法:优雅停止应用程序。主要步骤包括: 从服务发现中注销实例 取消应用程序上下文 停止Server buildInstance方法:构建用于服务发现注册的实例。 NewContext和FromContext函…
阅读全文在程序进行重启等操作时,我们需要让程序完成一些重要的任务之后,优雅地退出,Golang为我们提供了signal包,实现信号处理机制,允许Go 程序与传入的信号进行交互。 Go语言标准库中signal包的核心功能主要包含以下几个方面: 1. signal处理的全局状态管理 通过handlers结构体跟踪每个signal的处理状态,包含信号与channel的映射关系,以及每个信号的引用计数。 2. 信号处理的注册与注销 Notify函数用于向指定的channel注册信号处理,会更新handlers的状态。 Stop函数用于注销指定channel的信号处理,将其从handlers中移除。 Reset函数用于重置指定信号的处理为默认行为。…
阅读全文最近我发现了一个非常有趣的国外MySQL Serverless平台,它叫做PlanetScale。这个平台不仅仅是一个数据库,它能像代码一样轻松地创建开发和测试环境。你可以从主库中拉出一个与之完全相同结构的development或staging数据库,并在这个环境中进行开发和测试。所有的数据都是隔离的,不会相互干扰。 当你完成开发后,你可以创建一个deploy request,PlanetScale会自动比对并生成Schema diff,然后你可以仔细审查需要部署的内容。确认没问题,你就可以将这些变更部署到线上库中。整个部署过程不会导致停机时间,非常方便。 PlanetScale的入门使用是免费的,他们提供了以下免费套餐: 5GB存…
阅读全文
22先前,我的 RSS 订阅功能过于简化,只提供了几个基本字段,而且不展示全文。简介后面,我添加了一个链接指向原文,如下所示: 过于简陋,无法直接在 RSS 阅读器软件上进行查看,另外,我临时用 Kotlin 编写的这个功能需要每次调用时重新生成,这点就对这个功能的简单和独立性产生了影响,这件事放了太久,最近进行一次全面的改进。 原始的文章是用 Markdown 编写的。为了方便通过手机或电脑上的 RSS 阅读器查看,我需要将文章内容转换为 HTML 格式。在 Go 语言中,有一个成熟的组件:blackfriday。它能把每段文字用 p 标签标记,用 code 和 pre 标签标记代码块,以及用 h1234 标签标记不同层级的标题。 g…
阅读全文
23运动数据使用GitHub Action自动更新 看着每天的运动数据,满满的,还感觉有点充实😆 积少成多嘛 开通体验了一下GPT Plus 太想体验下GPT4了,之前苦于充值门槛过高,上个月出了app充值后,我使用支付宝礼品卡充值体验了下,感觉还是不错的,但是个人使用确实还是按量更划算一点,但是充值门槛过高😲 买了一支录音笔,全天候录音,使用 whisper 录音转文字 之前全程吃瓜了刘能离婚案,后来受他种草,也买了索尼的tx660,全天候录音,之后再把录音源文件和转的文本保存起来,这样想检索也会很方便的。 终于注册了 V2EX 这个社区知道很久了,一直是游客登录,看到别人发的别人社区啊推荐啊很不错,我说我也得养养号😜 GPT…
阅读全文
24我写这篇博客的初衷并不是出于单纯的自我表达,而是为了那些可能会对我未来职业发展产生重要影响的人们。或许你是一个正在考虑我的简历的HR,或者是将来可能与我一起共事的团队成员。无论你是谁,我都希望通过这篇博客让你更深入地了解我。同时,写作的过程也让我有机会重新审视和整理我的技能和经历。😝 我目前就职于一家游戏公司,我们的团队虽然小但十分精悍✊️。我负责的任务非常多,目前核心是一个女性向AVG游戏的后端开发,这款游戏在TapTap上的评价和排名都非 常 高,另外我也参与公共服务和核心业务模块的开发。 除此之外,我还负责管理公司所有的服务器资源,并负责运维工作。这主要得益于我平时对很多技术的尝试和钻研,让我能够顺利应对上云带来的各种挑战。…
阅读全文如果你想把你的运动数据和热力图同步到 GitHub,那么你来对地方了。在这篇文章中,我将详细解释如何使用 GitHub Actions 和 Python 自动同步和更新你的数据。 这个项目是在伊洪@yihong0618的GitHubPoster的基础上进行的所以在此表示感谢。他的另一个项目是IBeat (之前我对GitHub Action做了一次尝试),从这里我开始接触了快捷指令的触发。 最终效果如下: 一. 开始前的准备 首先,你需要 fork @yihong0618的项目,并将其克隆到本地: https://github.com/whrsss/GitHubPoster 然后,安装项目的依赖项: pip3 install -r r…
阅读全文在我最近使用Gorm进行字段更新的过程中,我遇到了一个问题。当我尝试更新status字段时,即使该字段的值没有发生变化,Gorm还是提示我“Duplicate entry ‘xxxx’ for key ‘PRIMARY’”。 首先,让我们看看Gorm的官方文档对Save方法的描述: Save方法会保存所有的字段,即使字段是零值。 db.First(&user) user.Name = "jinzhu 2" user.Age = 100 db.Save(&user) // UPDATE users SET name='jinzhu 2', age=100, birthday='2016-01-01', updated_…
阅读全文一次线上异常的追踪与处理 5月31日晚,我们接到游戏玩家反馈,经常出现请求超时的提示。在我亲自登录游戏验证后,也出现了相同的错误,但游戏仍然可以正常运行,数据也没有任何问题。 经过客户端的错误检查,我们发现请求出现了408 Request Timeout的错误。该响应状态码意味着服务器打算关闭没有在使用的连接,即使客户端没有发送任何请求,一些服务器仍会在空闲连接上发送此信息。服务器决定关闭连接,而不是继续等待。 1. 日志检查 接下来,我查看了服务器的日志,发现后台的两个服务的日志都在正常运行,没有异常提示。当我进行pod查看时,发现有两个pod显示容器没有日志,这两个pod已经挂掉。 为什么这两个pod会宕机呢?我开始回溯近1小时…
阅读全文敏捷开发中有一个广为人知的开发方法就是 XP(极限编程),XP 提倡测试先行,为了将以后出现 bug 的几率降到最低,这一点与近些年流行的 TDD(测试驱动开发)有异曲同工之处。 在最开始做编程时,我总是忽略单元测试在代码中的作用,觉得编写单元测试的功夫都赶上甚至超越业务程序了。到后来,业务量越来越复杂,慢慢地,浮现一个问题,就是系统对于测试人员是一个黑盒,简单的测试无法保证系统所设计的东西都可以测试到⬇️ 举两个最简单的例子: 系统设计的数据打点,是无法从功能业务上测试出来的,而对于测试人员,可能由于版本差异,用例未覆盖。 如果一个表中有两个字段,新用户过来更新一个字段之后,测另一个字段的功能时就不再以一个新用户的身份操作了。 在…
阅读全文最近在GitHub上面发现了一个很有趣的开源应用,可以将网页打包成应用: 这里是它的使用文档 底层使用了rust进行开发,支持 Mac、Windows 和 Linux。使用命令将网站直接打包成应用。 这里我以最近部署的一个私人 ChatGPT Next为例, 我的地址为 https://gpt.whrss.com 需要本地先有一个node环境,能使用npm命令。 然后npm全局安装这个工具 npm install -g pake-cli 安装完之后,就可以使用 pake url [OPTIONS]... 来生成桌面应用了,参数有很多,我先用了这些: 这是我的命令: pake https://gpt.whrss.com --name…
阅读全文
30之前看到很多大佬的 Blog 是部署在 Github 上面的,但因为自己目前的博客是带后端的,所以就没有考虑。很久之前看到 @yihong 的心跳和跑步,感觉挺不错的,但因为自己没有跑步的习惯,就感觉不是很感冒 ???? 直到最近在听零机一动的时候,又听到了 yihong 的跑步, 我突然想到,我应该也可以把我的游泳 骑车 有氧也像 @yihong 的跑步数据一样上传过来。那么第一件事,我需要了解一下 GitHub Action 的机制,小小地尝试一下。 首先,先看下 github action 的基本功能,我是通过阮一峰老师的文章了解的。 GitHub Actions 是一种自动化工具,2019 年开始测试,同年 11 月上线。可…
阅读全文
31之前刷推看到了不少人发软路由,最近又看到a姐发了一句:全推入手软路由了 开始我还觉得软路由对我的作用应该不大吧,随着从众心理的影响,我觉得我应该试试。 刚好我还有从笔记本上拆下的内存和固态,岂不是严丝合缝? 然后我就下单了一个 外观差不多是这个样子: 内部结构大概是这个样子: 拥有5个网口、两个 USB 2.0 和两个 USB 3.0 口、HDMI、DP、存储卡位以及两个笔记本内存条槽位、一根 m.2 插槽和一个 SATA 接口,可以说五脏俱全。 我买的是只带电源的,内存条和磁盘需要自己加。 一、第一步 组装机器 打开机器背部的固定螺丝以及后盖,将内存条插入相应槽位 接入 SATA 固态硬盘或 M.2 硬盘,不要装上后盖,以防有问题…
阅读全文
32Clash 是一款开源的网络代理工具,可以帮助用户实现对网络流量的控制和管理。我使用了很久,但苦于每次访问国内外网络需要手动开关代理,于是我就问了下GPT, 还真就解决了。 如果你也需要设置 Clash 区分国内和国外流量,可以按照以下步骤进行操作: 1. 打开配置文件(windows在右下角): 使用 Visual Studio Code 打开 config.yaml 内容是这样的: #---------------------------------------------------# ## 配置文件需要放置在 $HOME/.config/clash/*.yaml ## 这份文件是clashX的基础配置文件,请尽量新建配置文件…
阅读全文
33如何使用 ssh 将本地服务代理给外部访问并保持 SSH 会话的连接性 1. 外部服务器 nginx 配置 server { listen localhost:80; server_name _; root /usr/share/nginx/html; # 重要:将请求转发到本地服务 location / { root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://127.0.0.1:10412; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr;…
阅读全文最近,我接触了很多关于AI技术的东西。例如ChatGPT、NewBing、ChatGPT更快的API、stable diffusion、AI语音识别等等。这些技术让我惊喜,也让我感到焦虑。 AI应用日新月异,我的想象力甚至赶不上技术的发展。它们不仅代表了技术的进步,也牵动着就业市场的变革。 我又陷入了意义的怪圈。作为一个软件开发者,我的学习和工作是否还有意义和价值?我的未来会是怎样?如果AI技术可以替代我的工作 ,那么我还能做什么? 如果AI技术只是用于娱乐和教育等领域 ,我或许会感到比较放心,因为我可以成为一个普通的使用者,享受这些技术带来的便利和乐趣,而不必担心它们对我的生活产生过大的影响。 但事实是,AI技术已经渗透到包括软件…
阅读全文最近在推特上看到很多人在谈论New Bing申请的事情,我也收到了试用通过的邮件。于是我马上打开Edge浏览器体验了一下。 注意:如果你也收到了邀请,但是无法进入聊天页面,请参考这篇文章:https://zhuanlan.zhihu.com/p/605970396 New Bing是一个基于人工智能的搜索引擎聊天机器人。它可以回答各种问题,并且提供相关的链接和信息。它还可以跟你聊天,并且很有幽默感。 我在搜索框输入了一些问题,并且看到了右侧New Bing的回复。我还向上滑动鼠标进入了聊天窗口,在那里我跟New Bing进行了一些对话。其中包括一些荒谬的问题: 为了对比New Bing的能力,我还用同样的问题向ChatGPT问了一下…
阅读全文
36地址 描述 https://github.com/lmarzen/esp32-weather-epd 一个天气显示的墨水瓶项目 https://github.com/AUTOMATIC1111/stable-diffusion-webui Stable Diffusion 模型的 WebUI 界面。这是一个实现在浏览器上使用的 Stable Diffusion 模型的项目,支持通过文本/图片生成图片、嵌入文本、调整图片大小等功能。 https://github.com/gildas-lormeau/SingleFile 一键下载网页,能够将网页上的文字、图片等内容,完整地整合到单个 HTML 文件里,支持 Chrome、Firefo…
阅读全文公司的某款游戏在1月初接入微软小冰AI聊天功能。为了保存聊天记录并为后续的统计功能做好准备,决定将聊天记录存放在服务端。最初并不清楚聊天数据量的大小以及玩家对聊天功能的使用情况,所以采用了价格和性能相对宽容的MySQL作为存储介质。 经过大约一个月的运营后,聊天记录表中的数据量已经达到了两千万条。反馈给策划部门后,为控制数据量,决定对聊天记录数量进行限制。每个玩家的每个角色最多只保存200条记录,每个玩家最多可保存3个角色的记录,即每个玩家最多只保存900条聊天记录。服务端的处理逻辑随即修改为每存储300条记录后就清理一次,以确保数据量控制在一定范围内。 根据游戏的新增和玩家留存数据,假设每个玩家平均游戏时间为10天,新增的玩家数在…
阅读全文在google设置静态页面 CDN加速 一、 创建bucket,设置bucket https://console.cloud.google.com/storage/browser 创建bucket 设置bucket公开访问 在bucket列表中,进入刚创建的bucket。 选择页面顶部附近的权限标签。 在权限部分中,点击 person_add 授予访问权限按钮。 此时将显示“授予访问权限”对话框。 在新的主帐号字段中,输入 allUsers。 在选择角色下拉列表的过滤条件框中输入 Storage Object Viewer,然后从过滤后的结果中选择 Storage Object Viewer。 点击保存。 点击允许公开访问。 二、设…
阅读全文
39我平时一直都在发现很多优质的资源,但都没有整理。一直增加,单独一个页面可能开始会有些乱,就先开一篇放在这里。 名称 简介 新趣集 发现有趣的新产品 AlleyRead 发现国内外优质内容 小众软件 - 发现 寻找应用、软件 v2ex - 发现 分享好玩的,并获取灵感 (须自强) v1tx 分享实用工具与解决问题 炒饭 发现有趣的内容| 创造者日报 每天发现有趣的产品| producthunt 每天发现有趣的新产品 (国外产品) 找到 AI 找到你喜爱的作品 52 破解 找到你想要的软件 发现优质 Newsletter) 授人予鱼 不如授人予渔, 这是一个newsletter的推荐网站 Copy By yihong Blog , 都是…
阅读全文今天在使用ecs进行部署网页时,出现了一个问题。使用nginx代理到页面index.html路径下,同路径的资源都可以加载到,但是却无法正确加载到页面样式。打开f12,网络和控制台都没有资源异常,但页面乱成了一锅粥。 本地打开是正常的,上到服务器却不行? 之前使用nginx时,并没有这个问题,于是我猜测是不是nginx新的版本对配置参数进行了修改? 但我翻看了nginx的文档,却没有找到。于是我跟着症状开始在网上翻文,终于: �解决方法 �若不对于css文件解析进行配置,nginx默认文件都是text/plain类型进行解析,为此我们需要对此进行简单配置。将下面这段代码放入到location模块下面,然后重启nginx。记住一定要清…
阅读全文大学毕业后,我买了一台乞丐版的 13 寸 MacBook Pro,这台电脑配置比现在的安卓手机还低。今年年中,我开始把用于工作的 MacBook Pro(18 款 15 寸 16+256)带回家使用,虽然勉强能用,但是我渐渐地发现这两台电脑都不能满足我的需求。 从 2020 年开始,我就计划安装一台黑苹果,我把很多零件加入购物车,但是当时显卡实在太贵,所以一直没有开始。后来以太坊价格直线上涨,矿卡价格也水涨船高,苹果公司也开始全面转向 ARM 平台,这使我更加渴望拥有一台强大的“生产力”工具,赶上黑苹果的尾巴。 在我看来,相比苹果设备,黑苹果有以下几个优点: 价格便宜。 可以自定义硬件配置,不需要精准的安装技能。 可以安装 x86…
阅读全文
42最近将域名迁到了google domain,就研究了一下Let’s Encrypt的域名证书配置。发现网上找到的教程在官方说明中已经废弃,所以自己写一个流程记录一下。 步骤方法官方文档见:https://eff-certbot.readthedocs.io/en/stable/install.html#installation snapd官方文档见:https://certbot.eff.org/instructions 1. 安装snapd(这里我使用的是centos系统) sudo yum install snapd sudo systemctl enable --now snapd.socket sudo ln -s /var…
阅读全文作者:张溥 明 五人者,盖当蓼洲周公之被逮,激于义而死焉者也。至于今,郡之贤士大夫请于当道,即除逆阉废祠之址以葬之,且立石于其墓之门,以旌其所为。呜呼,亦盛矣哉!夫五人之死,去今之墓而葬焉,其为时止十有一月尔。夫十有一月之中,凡富贵之子,慷慨得志之徒,其疾病而死,死而堙没不足道者,亦已众矣,况草野之无闻者欤?独五人之皦皦,何也? 予犹记周公之被逮,在丁卯三月之望。吾社之行为士先者,为之声义,敛赀财以送其行,哭声震动天地。缇骑按剑而前,问:“谁为哀者?”众不能堪,抶而仆之。是时以大中丞抚吴者,为魏之私人,周公之逮所由使也。吴之民方痛心焉,于是乘其厉声以呵,则噪而相逐,中丞匿于溷藩以免。既而以吴民之乱请于朝,按诛五人,曰颜佩韦、杨念如、…
阅读全文之前我有写过一篇文章,是关于边际效益的思考的,但很不幸,我没有备份,一并被阿里云ban掉了。 那篇文章是基于李永乐老师的一个视频——996的那个,来讨论的。最近,我发现在生活中,我有不少关于效益的习惯和思考,记录一下。 最近,我意识到自己对于效益的思考和行为有不少习惯,其中一个例子是洗衣服。由于我租住的房子没有洗衣机,而我个人穿着简单,衣服也很少,所以我通常都是手洗。刚开始,我只是随便洗一下,因为感觉这样能省事,但是随着时间的推移,我开始思考这个过程中的效益和成本,并且逐渐调整了我的洗衣方式。 首先,我从心理层面分析了这个问题。我从洗衣液问世时就开始使用它,因为它能轻松地溶解脏污,尤其是一些不易清洗的面料。这种想法让我认为只要用洗衣…
阅读全文阿里服务器被ban了,数据全没了,测试一下重新组织博客能否正常工作吧 全部组件都使用了国外免费的平台。
阅读全文