alpha 的博客

何晓东 的博客 | alpha blog

Laravel 手动开关 Eloquent 修改器

Laravel 手动开关 Eloquent 修改器

测试框架版本是 Laravel 6.5, Eloquent 修改器使用可以参阅 -> 查看文档 修改器的手动开关的场景就是差异化的返回数据,例如在后台管理的时候,图片地址要相对路径,然后 app 端期望返回全路径的地址,这个时候就需要手动开启和关闭了。 大概操作就是在模型中声明一个静态变量,然后修改器中判断这个静态变量值是 true/false; 如果是 true 则处理,...

最近遇到的几个PHP小知识点

最近遇到的几个PHP小知识点

好的框架能提升语言生态,也有时候能把让PHP程序员成为框架程序员,而不是更好的后端程序员,例如我这样的。 测试环境为 PHP7.4 Windows 10系统 str_replace 函数 一个小需求是类似单词填空题,从单词中替换到几个字母,变成 _,然后给出一些选项,例如 ax n, au h, ab y这样的,将选项一一对应的替换 _,和原单词比较,如果一致就是正确选项,本以为...

Python3 实现 gif 倒放,多张图片生成 gif

Python3 实现 gif 倒放,多张图片生成 gif

一个娱乐代码,将表情包 gif 倒放很搞笑,当成自己的一个小玩具,操作就是将图片读取成帧,倒排合并一下,成为新的图片,完成。 效果:翻转前 翻转后 代码如下: # encoding: utf-8 from PIL import Image, ImageSequence # 读取GIF im = Image.open("nba.gif") # GIF图片流的迭代器 ...

PHP7.4 Preload 特性了解与理解

PHP7.4 Preload 特性了解与理解

确保你的 php 是的 7.4 版本,preload 是 7.4 版本新特性 基础了解   根据 rfc 描述,Preload 简明翻译是预加载,是基于 opcache 的一层升级,也是 opcache 的一部分。现有的 opcache 存储文件可以消除编译开销,但从缓存中获取文件并获取特定请求的上下文仍有相关成本。PHP 仍然需要检查源文件是否已被修改,将类和函数的某些部分从共享...

MySQL 执行过程中的两步权限检查的不同

SQL 语句执行过程中的两步权限检查的不同

文章源自梦康群友 lemon 的一个问题 文章中的文档参考的 8.0 版本 问题截图: 题主的测试场景是:是 k 字段不存在,也没有 select 权限,看先抛出哪个错误,结果是抛出了权限不足的错误。是在执行阶段进行细粒度的权限检查,没有打开表的权限,也就无法确定 k 字段是否存在。这块翻了半天文档没发现官方给出直接的结论。 官方文档 事件权限部分 有这样的一个举例: CREA...

群晖与UPS不断电配置小记

群晖与UPS不断电配置小记

需求是用群晖给公司内网搭一个用来托管和共享一些数据的文件服务器,主要用户是电脑小白,方便大家上传,下载文件,也方便部门管理岗管理部门文件夹,所以配置和访问从简,权限细化到二级部门。 一些定义 暂时只需要一点简单的定义,而暂时不用高大上的 FTP 等功能。 群晖 NAS:NAS(网络连接存储)是与家庭或办公室网络连接的智能存储设备。可以将所有家人和同事的文件存储在 NAS 上(从重...

Python3.7 读取 mp3 音频文件生成波形图

Python3.7 读取 mp3 音频文件生成波形图

测试环境为Windows 10 系统,Python3.7,转换需要提前安装pydub、ffmpeg,安装和加入环境变量配置方法自行解决,至于缺少的包直接 pip install xx 搞定。 主要是 mp3 转成 wav 格式的文件,因为 mp3 格式为了减小体积牺牲了音质,转成无损的 wav 格式之后,可以读取到更详细的信息。然后读取 wav 的信息,利用 matlotlib 绘...

安全修改及发布生产环境代码的方式

安全修改及发布生产环境代码的方式

主要是访问量大的系统,或者关键业务部分,需要安全的发布代码,同时保证系统的可用及发生问题时的快速回滚。 灰度发布 最简单的是复制粘贴,然后写一个V2版本代码,分流过去一部分流量,精确记录日志,监测一定时间,如果没有问题,基本是好的,再全量发布。灰度发布也是一种不停服的更新手段,小规模的更新不停服是非常好的体验。 分流的方法有很多场景使用,例如微博发布新版页面,新功能内测,都是这样...

Redis 模拟实现多字段排序的小手段

Redis 模拟实现多字段排序的小手段

基础场景: 一般做活动都会有一个积分排序功能,比较基础的情况下是按积分倒序,最基础的 zrevrangebyscore xxx min max WITHSCORES 命令就可以完成排序,可以参考 zrevrangebyscore 命令详解。 复杂场景: 参与人数较多,运营要求:按积分倒序,积分一样的,按注册时间升序,注册时间一样的,按登录次数倒序,这种稍微复杂的情况, redis 暂时没有...

Python3 开发者版抓取百度翻译结果

Python3 开发者版抓取百度翻译结果

前置条件:首先需要认证为百度翻译开放平台的开发者,能够在控制台获取到 appid 和秘钥这两个信息。然后开通通用翻译服务。如果需要字典和发音信息,需要额外的企业认证及申请开通词典和发音了。 官方给的 demo 是 python 2.x 版本的,代码已经老旧了,就改成了 python 3.x 版本,代码如下: #coding=utf8 import http.client imp...