Laf 中大猫谱:让每一只流浪猫都有家
猫谱简介
中大猫谱是一款辅助校园流浪猫救助的开源小程序项目,服务端使用 Laf 云开发。

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

如果,把猫猫的信息和照片都整理到小程序上,就可以筛选“宿舍楼”和“橘猫”,快速定位到几只小猫的资料卡。再比对照片和眼前的猫猫,基本就可以确定它的名字,并看到它的相关资料。
2019年春天,在这个简单的需求驱动下,猫谱上线了。在热心猫友和笃行志愿者服务队的帮助下,猫猫资料日渐丰富。至今4年多的时间里,功能逐渐增加,参与开发和信息维护的同学也越来越多。
甚至,猫谱成为了不少同学的精神寄托,让我们更有动力去更新维护。一位同学领养了名为“浅脸”的猫猫,在浅脸生病去世后的一年里,每隔两天就会到猫谱上给浅脸留言、上传旧照片。

原文链接:https://forum.laf.run/d/1012
2021年初,项目代码改为开源,制作部署教程,并逐步推广到数十所高校或救助组织。在这些高校的猫谱上,不仅登记有小猫小狗,还有乌龟、天鹅等各种神奇校园动物。
目前,无需编程基础,只需要半天左右即可完成猫谱项目的部署+上线全流程。
功能介绍
猫猫信息维护
针对问猫需求,我们的解决方案是维护猫猫信息和相片。在猫谱上,由管理员负责维护准确的信息;普通用户可以上传猫猫近照,由管理员审核后展示到猫猫相册中。

围绕这个核心功能,我们还开发了许多后台管理小功能,让管理员无需接触代码,包括:
- 照片批量审核、缩略图生成
- 校区/区域/花色管理
- 猫猫关系管理
- 管理员等级管理
拍照识猫
随着猫猫数量的增多,手动筛选的效率略显不足。我们实现了一套基于 yolov5+CNN 的图像识猫模型,让用户随手拍一张照片,就能识别出猫猫是谁。

目前,识猫功能作为猫谱部署的一项可选功能,其代码也已经开源。它会用猫谱里的猫猫照片进行训练,需要更多的耐心跟随教程进行部署。我们也在探索将人工智能模型部署到 Laf 平台,降低部署难度和成本,希望有类似想法的朋友一起交流。
公告、便利贴和反馈
与用户交流方面,猫谱实现了三个渠道:
- 公告板:由管理员发布(猫谱 → 用户)
- 便利贴墙:由用户发布,管理员审核(用户 → 猫猫)
- 信息反馈:由用户发送,管理员后台回复(用户 → 猫谱)

猫猫关系、徽章和榜单
为增加更多的可玩性,猫谱还新增了几个有趣的功能:
- 猫猫关系:将猫际关系登记在册,除血缘关系外,还有各种错综复杂的情感纠纷
- 徽章系统:用户通过登录/看广告获取徽章,赠送给心爱的猫猫
- 榜单:包括用户拍照数量榜,照片点赞榜,猫猫徽章收集榜


为什么是 Laf
初识机缘
2022年秋季,受微信云开发定价修改的影响,单个猫谱的部署成本从每月几毛钱,直线上升到50+元。当时,猫谱部署交流群里已有近百名成员,数十所高校的猫谱已在线上运行。高昂的成本让原本就捉襟见肘的流浪救助团体难以承担,关停小程序的情况逐渐增多。
为应对这种情况,猫谱团队从两个方面进行优化:
- 优化 API 调用量,降低云开发使用量成本
- 调研合适的迁移平台
此时,处在开发初期的 Laf 平台进入了我们的视野:
- 学习成本低:熟悉的 ServerLess 的云开发模式,函数+数据表+存储功能组合
- 开源保障:开源的源码库支持私有部署,既能作为兜底,又能满足自有服务器的需求
- 无冷启动:Laf 常驻内存的方案天然就没有冷启动问题,调用非常迅速
- 计费清晰合理:从最初的免费试用,到如今的灵活配置收费,部署成本可接受
- 友好的开源社区:有任何问题可以反馈到论坛和微信群,会有社群成员或官方团队出手帮忙解决
迁移过程
Laf 0.8版本,我们着手迁移猫谱项目,大致可以分为三个阶段:
- 小程序端同时兼容两套云开发,使用私有部署 Laf,上线测试
- 更新预览版 Release,整理迁移文档,在小范围内测
- 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,…...
 
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 云产品上使用设计器ÿ…...
 
Flutter问题记录 - Unable to find bundled Java version
新版本的Android Studio真的移除了JRE,jre目录找不到,怪不得报错了,不过多了一个jbr目录,找了个以前的Android Studio版本对比 搜了一下jbr(JetBrains Runtime),原来IDEA老早就开始用了…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
 
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
 
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
 
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
 
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
 
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
 
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
