前言前段时间,我在微信问一问里回答了一个关于 “一天赚几十块钱副业有哪些?” 的问题。主要推荐的是直播小玩法的副业,截至目前收获了官方 1 万的推流和超 5 千人的围观。由此我认为,当前开发直播小玩法还是比较小众,竞争小,个人开发者入局应该能躺赚一笔,真的很适合参考以前的回合制游戏。简介直播小玩法是抖音里的一种统称,其他平台有叫直播弹幕小游戏,而抖音里的直播小玩法包括两种,弹幕小游戏和互动插件。个
前言时光飞逝,一晃就到 2024 的年底了,按照我近年来的传统,就复盘一下今年做过的所有关于探索收入多样性的事情。包括这一年工作以外的 “工作进展”,收获的事项,遇到的种种问题,以及来年的计划等,最后希望能对大家有一点点参考意义。事件\1. Cocos 小游戏《忍者疾风转》开发,并上架到微信和抖音平台。\2. 微信小程序《有用工具盒》开发并上架。\3. 视频号《一曲小北》,主打编曲和吉他,首次开通
前言:Unity3D,相信很多人都知道是用来做游戏的。网上也有很多这类视频的教程,我也试着学习过。但是当要实现多人实时对战的教例比较少,而用 PHP 来做 Unity3d 的服务器端的就更少了。我在网上看了一个作者用 C# 做联机服务器端的文章后,就根据他的思路改了一个 PHP 版的。例子只是多个方块在一个场景下移动,所有玩家可以实时看到。以下就以几个小事例简单介绍一下 PHP 与 Unity3D
前言由于最近在使用 workerman 实现 Unity3D 联机游戏的服务端,虽然也可以通过 TCP 协议直接通信,但是在实际测试的过程中发现了一些小问题。比如双方的数据包都是字符串的方式吗,还有就因为是字符串就需要切割,而有时候在客户端或服务端接收时都会出现报错。经过打印日志发现,两端接收到的包都有出现不是事先约定好的格式,这也就是 TCP 的粘包拆包现象。这个的解决方法很简单,网上也有很多,
前言GatewayWorker 是 Workerman 的一个框架,对应用层开发者更友好。GatewayWorker 多了一个网关,也就是 Gateway,负责与客户端连接,消息转发等。而自定义的协议,也就是 gateway 面向客户端提供服务的协议,下面就简单收一下 GatewayWorker 启动后连接的过程吧。GatewayWorker 流程1. 运行 php think wor
前言在平时项目中,有时需要对某些业务进行批处理,比如为了版本兼容,或者不同系统的数据同步等场景下,我们会选择自定义一些指令定时或即时的执行。但是有很多命令需要读表,随着定义的指令逐渐变多,模型里本不涉及业务性的方法也越积越多,甚至某些指令删除了,但是对应的模型方法还在。所以为了不影响业务代码,我们会临时起一个项目专门作为指令处理。但还是有一个问题的是,因为还是以框架新启的项目,自然里面的那些控制器
前言ElasticSearch是一个一个分布式的实时文档存储,每一个字段都可以被索引与搜索,并且能支持PB级别的结构化或者非结构化数据。早期我们应用的全局搜索是简单的SQL模糊查询,为了分担数据库压力所以用了ES,选择他的原因除了以上几点外,还有其提供的API方式简单,于任何对接的编程语言都适用。以下将以PHP的业务场景完善搜索功能。环境ThinkPHP5.1ElasticSearch7.8PHP
前言最近在封装一个日志类时,想借鉴一下 TP 的实现方式,特别注意了一下 TP 日志的驱动。平时常用文件形式记录日志却忽略了还有一个 Socket 方式,只需要连接一下远程服务,程序在单程运行中所打的日志就会出现在浏览器上。但是前提浏览器安装了扩展,接下来就浅谈一下 SocketLog 的简单使用吧。环境SocketLog Chrome 扩展ThinkPHP5.1SocketLog Server&
前言:最近的PHP项目中有使用AMQP,解耦一些业务性的功能模块。因为工作使用的是线上Linux搭建,为了方便测试所以我决定本地搭建一个MQ服务。RabbitMQ简介:MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。 RabbitMQ是一个在AMQP基础上完成
前言 在开发项目中一般都会有搜索功能。如果是面向C端的搜索功能,往往都特别考验性能。比如普通的商城系统中的商品搜索或者一些资源的站内搜索。 可能以前的做法就是对商品表做一个按名称或商品描述做模糊查询。更好一点的是对搜索关键字进行分词,并且专门建一个搜索词库表。不过前期需要对搜索词进行拆解然后幂集组合并于商品ID关联,搜索字与词库表的字以完全匹配的
前言上次介绍了RabbitMQ在windows下的安装,以及PHP的AMQP扩展的添加。这里将本地测试的代码放到了服务,所以也就是在Linux上再装一遍。但是这里就省掉直接进入使用。主要是RabbitMQ安装完毕后,管控台的使用以及在PHP中如何调用其接口实现消息的生产和消费。步骤1. Linux安装完rabbitMQ后,没有配置文件,需要去github(github.com/rabbi
前言通过上一篇文章可以看出,要在鸿蒙应用中实现特别炫的特效还是比较复杂。动画固然重要,但如果在赶工期的情况下,大家都会优先业务,那有没有简单快速的方法呢?有的,也用像 Android 和 iOS 里 WebView 的方式,h5 的特效现在是应有尽有,把他嵌入鸿蒙 Next 应用里就可以,那如何在鸿蒙 Next 中使用 WebView 来实现电子烟花?实现要点组件拆解资源引入页面路由WebView
前言正所谓:Hello Word 是程序员学任何一门语言的第一个程序实践。这其实也是一个不错的正反馈,那如何让学习鸿蒙 Next 更有成就感呢?下面就演示一下从零开发一个鸿蒙 Next 版的电子木鱼,主打就是一个抽象!实现要点页面布局木鱼点击木鱼音效动画特效自定义弹窗开始实践页面布局ArkTS 定义了声明式 UI 描述、自定义组件和动态扩展 UI 元素的能力,配合 ArkUI 开发框架中的系统组件
前言作为独立开发者,如果我们错过了传统移动 App,和后起小程序的红利,那万物互联 + AI 的应用开发就得抓住了。虽然个人上架应用平台难易都差不多,但是鸿蒙生态当前正需要广大开发者参与,一旦上架,相比其他平台,流量扶持力度更大,能力也更容易。所以,我们可以先开发一些应用占个位置,后面再逐渐迭代完善;那么,第一步就先从搭建开发环境开始吧。鸿蒙 Next 简介鸿蒙 Next,英文 Harmone
前言最近我们一个二手应用的即时通讯模块马上就用不了了,因为当时对接的是腾讯的IM服务,现在组织里说不想再续费了,功能还得保留。那就能手写聊天模块了,所有都写得差不多的时候,在聊天记录表格里却整了一出尬尴的事儿。建表时根据消息推送方式,只存储了接收者ID,发送者ID却放在消息包的json中。但是后面很多时候的查询需要两个ID字段联合,也就是要从json的多层路径中找到发送者ID,并作为条件。于是就有
前言我的小程序在2024年8月就已经审核通过,上架后却一直无法被搜索到。打开后,再在上下拉查看 “最近使用”,发现他出现一下又马上消失。上线是按正常流程走的,开发、备案、审核,也没有任何违规,后台也没收到说被封或异常的信息。排查难道是我名字(实用工具箱)问题,当我要去后台修改名字时,提示要重新备案。不过也让我想起之前我搜索的时候,别人也有用这名字,所以根本不是这个原因。会不会是后台哪里设置
前言 之前也通过文章介绍过rabbitMQ的搭建以及在PHP开发场景下的一些使用。这个主要从rabbitMQ的web控制台介绍死信队列的操作,以及代码层面的小应用等。关于死信的原理,rabbitMQ的特性等可以在其他文章中找到,这里就不详细介绍了。场景 死信的场景主要是用于
前言虽然我是做后端的,但也时常关注前端,只是最近觉得前端的各种工具名称太眼花缭乱了,nvm、yarn、pnpm、taro……不要说具体使用,就连他们到底是工具还是新框架我都搞混。所以,我就用一篇文章简要记录他们到底是什么,怎么区别以及简易的搭建过程。nvmnvm(Node Version Manager),顾名思义,他是Node.js的版本管理工具。主要用来在单个操作系统下安装或管理多版本Node
前言目前项目开发中上传功能很多都是使用云存储,其好处太多这里就不列举了。但是在上传成功后,有些功能场景下需要对存储桶内的文件进行管理。自然把历史的文件列表展示出来就很有必要了。然后有列表就有分页,云存储又不像本地存储直接读文件夹就可以,所以我想了两种方法来解决。方法将上传的文件返回的地址都存到数据库中,取列表就分页的读表返回。使用OSS文档的文件列举方法,好处是不用建表等等,所以下面以这种方式演示
前言:最近接触了一个关于PLC工控的小项目,大概场景是,对方一个茶叶工厂。已经通过各种设备组成了自动化的工控系统。并且也让我的一个朋友做了茶园监控和茶园天气环境等的web页面展示,但是还没有工控设备的数据显示。需求:工控设备已经连接到了一台作为上机位的电脑上,所以要获取设备数据。需要在同一局域网上,通过modbus tcp请求对方已经开放的端口。拿到数据储存到数据库,最后web界面只用按时间顺序获
前言前面也说了,通过 GitHub Pages+GitHub Actions 只是解决了动态数据展示,但是要零成本得完成将用户信息存储下来,并实现数据交互呢?我开始是想用云文档,种种原因,我还是希望有个自己能二次修改的后台,于是就选择了 Vercel+Railway 方式。虽然网上也有很多人介绍这俩平台的玩法,但都是 2024 年以前的文章,有些平台最新的修改,和自己踩到的坑而别人没提到的细节,我
前言之前有写过死信队列的使用场景以及通过管控台创建死信。这次就通过代码实现死信队列的创建,同时也分享一下RabbitMQ封装的类。准备先准备一个死信队列(最后用来消费)的参数配置,包括虚拟机,交换机,队列,有效时间等,如下。按照上面在RabbitMQ中创建虚拟机和交换机,死信队列。并让交换机与死信队列绑定,操作方法前面有介绍。这里就直接提供rabbitMQ操作的基本封装的类,包括一个基类,生产者类
前言有些人为了让项目快速上线,服务器往往安装宝塔面板,然后再极速安装LNMP。尽管环境搭建的时间省了,但是宝塔上PHP中扩展包没有提供AMQP。这时候只是为了使用消息队列而对PHP大动干戈, 不如使用一个PHP AMQP的库,即用即装,不对环境造成影响。简介php-amqplib 客户端库,通过composer安装,不需要在PHP中安装扩展,以下为两种不同的安装方式。项目中新建
前言之前也有讲到过es的基本使用,主要是通过PHP代码对es索引,文档等的增删改以及搜索优化的解决方案。而现在为了进一步满足搜索的全新功能,所以就需要一个中文分词器,而为了方便查看或管理es文档,可以使用图形化面板。所以接下来主要介绍es中文分词器的安装和es的web面板。elasticsearch-analysis-ik分词es自带分词,但是没有中文分词,在一众elasticsearch的中文分
前言在业务中开发中,表格的导入导出功能很常见。但是这里主要是使用PhpOffice类库介绍实现导入表格数据的功能。冲突大部分的导入功能,就是通过点击按钮上传一张表格,然后后台读取表格数据根据业务整理后直接插入到数据库,最后再返回给前端。但是如果表格数据庞大,业务逻辑复杂的时候,就会导致导入那一块很臃肿不好维护。解决方法处理方式是把导入与业务数据插入分离,所以在二者之间添加一个队列就可以了。导入只负
前言本着将成本降到最低,我目前做的应用或小程序都是单机的,也就是不用请求接口,只要一上架就没有任何支出。但是写死的数据毕竟有限,应用的内容单一无法紧跟时事热点,每次打开一个样,自然就没有留存。遇到有错字啥还要更新版本,那有没有方法既能丰富应用内容,又不用增加成本呢?既要又要,当然也有,找网上提供的免费 API 接上去。但是这种有请求数限制,而且还和自己应用的业务不相关,那就只能自己弄接口了。既然可
前言: 在我们平时做的一个项目中,线上环境突然发现数据库被锁住。导致很多有关数据插入和修改的接口全都瘫痪,项目基于ThinkPHP5.1。报错的时候,我们发现了一条sql错误日志,如下。根据错误信息提示,是说有一个事务回滚时没有找到savepoint 的暂存点。所以问题应该是事务嵌套导致的,目前ThinkPHP5封装的数据层方法是有对事务嵌套进行处理。而MYS
前言前段时间折腾Arduino,为了让板子联网买了ESP8266 NODEMCU (wifi模块,也是一个单片机)。虽然能通过烧录的程序通过http请求自己的服务器接口,但是显然并不符合当下主流的物联网方式,并且定时请求接口还浪费资源。于是就引出了MQTT协议,在网上我也找了关于MQTT代理服务的软件也有很多。比如Eclipse基金会的Mosquitto ,以及Apache的
Workerman是一款开源高性能异步PHP socket即时通讯框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组
前言因为平时工作和日常接触到的大都是的中型项目,所以少有个性化推荐等涉及大数据的功能。但是后期应该也会在自己项目中添加信息推荐模块,所以就开始关注spark,hadoop,Thrift等工具,以下就以hadoop先开始,包括环境搭建和配置过程中踩坑过程。关于hadoop的环境搭建,网上也有各种各样的教程。那来直接按着他们的方法来,前期当前问题不大,但是呢,可能在安装过程中由于每个工具的版本不一致。
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号