当前位置: 首页 > news >正文

Laf 中大猫谱:让每一只流浪猫都有家

猫谱简介

中大猫谱是一款辅助校园流浪猫救助的开源小程序项目,服务端使用 Laf 云开发

猫谱主要功能包括:猫咪信息登记、照片分享、拍照识猫、公告和留言等。项目创立的初衷,是解决校园猫猫交流群里的一个常见问题:问猫猫是谁。

如果,把猫猫的信息和照片都整理到小程序上,就可以筛选“宿舍楼”和“橘猫”,快速定位到几只小猫的资料卡。再比对照片和眼前的猫猫,基本就可以确定它的名字,并看到它的相关资料。

2019年春天,在这个简单的需求驱动下,猫谱上线了。在热心猫友和笃行志愿者服务队的帮助下,猫猫资料日渐丰富。至今4年多的时间里,功能逐渐增加,参与开发和信息维护的同学也越来越多。

甚至,猫谱成为了不少同学的精神寄托,让我们更有动力去更新维护。一位同学领养了名为“浅脸”的猫猫,在浅脸生病去世后的一年里,每隔两天就会到猫谱上给浅脸留言、上传旧照片。

原文链接:https://forum.laf.run/d/1012

2021年初,项目代码改为开源,制作部署教程,并逐步推广到数十所高校或救助组织。在这些高校的猫谱上,不仅登记有小猫小狗,还有乌龟、天鹅等各种神奇校园动物。

目前,无需编程基础,只需要半天左右即可完成猫谱项目的部署+上线全流程。

功能介绍

猫猫信息维护

针对问猫需求,我们的解决方案是维护猫猫信息和相片。在猫谱上,由管理员负责维护准确的信息;普通用户可以上传猫猫近照,由管理员审核后展示到猫猫相册中。

围绕这个核心功能,我们还开发了许多后台管理小功能,让管理员无需接触代码,包括:

  • 照片批量审核、缩略图生成
  • 校区/区域/花色管理
  • 猫猫关系管理
  • 管理员等级管理

拍照识猫

随着猫猫数量的增多,手动筛选的效率略显不足。我们实现了一套基于 yolov5+CNN 的图像识猫模型,让用户随手拍一张照片,就能识别出猫猫是谁。

目前,识猫功能作为猫谱部署的一项可选功能,其代码也已经开源。它会用猫谱里的猫猫照片进行训练,需要更多的耐心跟随教程进行部署。我们也在探索将人工智能模型部署到 Laf 平台,降低部署难度和成本,希望有类似想法的朋友一起交流。

公告、便利贴和反馈

与用户交流方面,猫谱实现了三个渠道:

  • 公告板:由管理员发布(猫谱 → 用户)
  • 便利贴墙:由用户发布,管理员审核(用户 → 猫猫)
  • 信息反馈:由用户发送,管理员后台回复(用户 → 猫谱)

猫猫关系、徽章和榜单

为增加更多的可玩性,猫谱还新增了几个有趣的功能:

  1. 猫猫关系:将猫际关系登记在册,除血缘关系外,还有各种错综复杂的情感纠纷
  2. 徽章系统:用户通过登录/看广告获取徽章,赠送给心爱的猫猫
  3. 榜单:包括用户拍照数量榜,照片点赞榜,猫猫徽章收集榜

为什么是 Laf

初识机缘

2022年秋季,受微信云开发定价修改的影响,单个猫谱的部署成本从每月几毛钱,直线上升到50+元。当时,猫谱部署交流群里已有近百名成员,数十所高校的猫谱已在线上运行。高昂的成本让原本就捉襟见肘的流浪救助团体难以承担,关停小程序的情况逐渐增多。

为应对这种情况,猫谱团队从两个方面进行优化:

  1. 优化 API 调用量,降低云开发使用量成本
  2. 调研合适的迁移平台

此时,处在开发初期的 Laf 平台进入了我们的视野:

  • 学习成本低:熟悉的 ServerLess 的云开发模式,函数+数据表+存储功能组合
  • 开源保障:开源的源码库支持私有部署,既能作为兜底,又能满足自有服务器的需求
  • 无冷启动:Laf 常驻内存的方案天然就没有冷启动问题,调用非常迅速
  • 计费清晰合理:从最初的免费试用,到如今的灵活配置收费,部署成本可接受
  • 友好的开源社区:有任何问题可以反馈到论坛和微信群,会有社群成员或官方团队出手帮忙解决

迁移过程

Laf 0.8版本,我们着手迁移猫谱项目,大致可以分为三个阶段:

  1. 小程序端同时兼容两套云开发,使用私有部署 Laf,上线测试
  2. 更新预览版 Release,整理迁移文档,在小范围内测
  3. Laf 1.0 上线后,全面重写项目文档,完全切换至 Laf 平台

在整个迁移的过程中,Laf 团队的朋友积极提供技术支持、及时解决需求 issue,帮助猫谱团队在短时间内顺利迁移。猫谱团队将迁移过程整理出迁移教程、数据导入和数据导出的工具,帮助数十所高校的小程序也完成了迁移

合作

2023年夏季,我们与 Laf 团队的朋友,就高校代金券方案,从技术和实施方面探讨了多个想法。最终,我们以一种简单的方式进行小范围尝试,即“猫谱高校代金券计划”。

具体的,Laf 团队生成一批代金券,交由猫谱团队进行发放。猫谱团队接受各高校的小程序运营者申请,审核通过后发放代金券,足以免费使用最低配的 Laf 实例。

在申请过程中,我们设立了几个小小的门槛:猫谱上累积猫猫10+只,累计用户100+。我们相信,对于真心想运营小程序的团队,这些条件都很容易达成,薅羊毛的则会望而却步。

短短2个月内,已有来自全国14所高校的同学完成了申请,让更多的同学从实践上了解到 Laf 平台。其中,大多数运营者完全不懂代码编程,也同样完成了项目部署,可见 Laf 平台的易用性非常优秀。

小程序来自高校
HUT喵世界湖南工业**
喵汪图鉴湖南**
老和山猫咪图鉴浙江**
小理猫谱广州理工**
猫猫北方工北方工业**
大黄的山竹铺子华南师范**
崴喵猫谱山东**
ZUEL汪汪图鉴中南财经政法**
火大猫谱火箭军工程**
SUFE的招财喵谱上海财经**
技大喵喵屋深圳技术**
南华猫谱南华**
成师猫咪家谱成都师范**
交医喵屋图鉴上海交通大学医**

结语

接下来,猫谱项目将继续基于 Laf 云开发平台,新增更多实用的、有趣的功能。欢迎感兴趣的小伙伴加入开发,提供你的想法和创意。

借此机会,感谢如此多同学对猫谱项目、Laf 平台和校园流浪动物的大力支持。期待有更多的高校同学,使用猫谱为流浪动物救助事业添砖加瓦。

打个小广告,请各位关注“笃行志愿者服务队”公众号,这是广东多所高校同学联合组织的救助小团队,主要负责校园内的猫猫救助和信息登记,也会分享有趣的猫猫故事。在成立至今的四年多里,通过绝育等手段有效地控制住了校园流浪猫的数量,并为许多猫咪找到了新家。

相关文章:

Laf 中大猫谱:让每一只流浪猫都有家

猫谱简介 中大猫谱是一款辅助校园流浪猫救助的开源小程序项目,服务端使用 Laf 云开发。 猫谱主要功能包括:猫咪信息登记、照片分享、拍照识猫、公告和留言等。项目创立的初衷,是解决校园猫猫交流群里的一个常见问题:问猫猫是谁。…...

uniapp 使用mqtt 报错 socketTask onOpen is not a function

1. 报错的解决方法 在man.js文件添加这个 // #ifndef MP // 处理 wx.connectSocket promisify 兼容问题,强制返回 SocketTask uni.connectSocket (function(connectSocket) {return function(options) {console.log(options)options.success options.success ||…...

Docker部署RustDesk Server 设置开机自启

三、Docker安装 Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。 官方的一键安装方式: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 国内 daocloud一键安装命令: curl -sSL https://…...

ESLint如何在vue3项目中配置和使用

目录 问题描述: 配置: 注意: 问题描述: 在用vite创建vue3项目时已经选择了添加ESLint,创建完成后使用 pnpm install命令(或者npm i)安装了项目依赖之后,ESLint在项目中需要怎样配…...

Frida-hook:微信数据库的破解

Frida-hook:微信数据库的破解 Frida-hook:微信数据库的破解1. 准备条件2. 用frida获取key2.1 静态分析微信apk文件2.2 frida hook: 3. 用sqlcipher打开数据库: Frida-hook:微信数据库的破解 我们可以从root过的手机中,找到微信相关数据库&am…...

【Unity每日一记】WheelColider组件汽车游戏的关键

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…...

项目-IM

tim-server tim-server启动类实现CommandLineRunner接口,重写run()方法 run()方法开启一个线程,创建zk持久父节点,创建临时顺序子节点,将netty-server信息写入 1.1 用户登录 1.2 gateway向认证授权中心请求token 1.3 从zookee…...

2023年口腔医疗行业研究报告

第一章 行业概况 1.1 定义 口腔医疗行业是以口腔医疗服务消费为基础,包含医疗及消费双重属性,是 为满足口腔及颌面部疾病的预防和诊疗、口腔美容等需求提供相关医疗服务的行业。 该行业的主要参与者包括口腔保健专业人员(如牙医、口腔外科…...

1Java:JDK是什么

1Java是介于编译型语言和解释型语言之间 编译型语言:c c先编译成机器码,再执行 解释型语言:pytn 解释器直接加载源码运行,但是运行效果低 Java是将代码编译成一张字节码,优点 针对不同平台编写虚拟机,不同平台的虚拟…...

使用 Amazon Lambda 进行无服务器计算:云架构中的一场革命

引言 十年前,无服务器架构还像是痴人说梦。不再如此了! 有了 Amazon Lambda,我们现在可以建构和运行应用程序而不需要考虑服务器。云供应商会无缝地处理所有服务器的供应、扩展和管理。我们只需要关注代码。 这为云部署带来了前所未有的敏捷性、自动化和优化。但是,要发挥它的…...

谨慎使用Lombok的@Builder注解

现在很多程序员都习惯使用Lombok来使代码更加 “简洁”。但是使用Lombok也会造成很多问题,尤其Builder 有个很大的坑,已经见过好几次由于使用Builder注解导致默认值失效的问题,如果测试时没有在意这个问题,就很容易引发线上问题。…...

leetcode455. 分发饼干 【贪心】

题目: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j&#xff0c…...

4V-28V Vin,6A同步降压DCDC变换器,集成3.3V和150mA LDO——SCT2361FPBR

SCT2361是一种高效率的同步降压型DC-DC变换器,集成3.3V和150mA LDO。输入电压范围为4V-28V,输出电压可调为0.6V,具有3mmx3mm的小QFN封装,可提供连续6A的输出电流。该器件将高、低压侧功率mosfet集成,使导通损耗降到最低…...

Linux中的scp指令

在Linux和Unix系统中,scp(Secure Copy Protocol)是一个用于通过SSH协议进行安全文件传输的命令行实用程序。与传统的cp(copy)命令不同,scp允许用户在不同的机器之间、或同一台机器的不同位置之间传输文件或…...

剑指 Offer 11. 旋转数组的最小数字

剑指 Offer 11. 旋转数组的最小数字 二分 要注意的是,由于存在重复数字,所以初始状态可能不满足二分的性质。不满足的情况是:左边开始的数字和右边结束的数字相等,所以一开始要缩小右边界,让右边界的数字小于第一个数…...

Redis面试题总结

1.什么是Redis Redis 是一种基于内存的数据库对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、…...

【Eclipse】搭建python环境;运行第一个python程序helloword

目录 0.环境 1.需准备&搭建思路 2.搭建具体步骤 1)查看是否安装过python 2)安装eclipse 3)安装和配置pyDev 3.创建第一个python程序具体步骤 1)新建项目 2)输入项目名字,和配置选项 3&#x…...

OpenAI 发布企业版ChatGPT-4

OpenAI 发布企业版ChatGPT-4 ChatGPT Enterprise 版本功能ChatGPT Enterprise 对比ChatGPT Enterprise 不同点未来发布计划OpenAI 发布企业版ChatGPT-4 OpenAI 宣布,鉴于ChatGPT的爆炸性成果,推出了针对企业的 ChatGPT Enterprise 版 ChatGPT Enterprise 版本功能 包含所有…...

Flowable7 设计器

1、flowable7 已经在主版本上移除了Flowable UI相关的包,包含bpm-json相关的所有包和流程设计器相关前端文件。 2、flowable7 版本目前只保留了xml运行相关的包,ui modeler已经移除 3、目前官方给的回复是只能在 flowable 云产品上使用设计器&#xff…...

Flutter问题记录 - Unable to find bundled Java version

新版本的Android Studio真的移除了JRE,jre目录找不到,怪不得报错了,不过多了一个jbr目录,找了个以前的Android Studio版本对比 搜了一下jbr(JetBrains Runtime),原来IDEA老早就开始用了&#xf…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...