技术饭 通过ghostscript将pdf转成图片

需要将pdf转成图片有很多种方式,对于php来说可以通过 ImageMagick 扩展来实现,ImageMagick 主要是处理一系列图片处理,但是如果需要支持pdf转图片需要用到 ghostscript 依赖来实现转换。ImageMagick >= 6.2.4 is required. The amount of file formats supported by Imagick depends entirely upon the amount of formats supported by your ImageMagick installation. For example, Imagemagick requires ghostscript to conduct PDF operations.

阅读全文 » 9天前
2024年04月09日

技术饭 php通过ImageMagick类库将pdf转换成图片

php通过ImageMagick类库将pdf转换成图片,Imagick 是用 ImageMagic API 来创建和修改图像的PHP官方扩展。ImageMagick 是用来创建,编辑,合并位图图像的一套组件。 它能够用于读取,转换,写入多种不同格式的图像。 包含 DPX、EXR、GIF、JPEG、JPEG-2000、PDF、PhotoCD、PNG、Postscript、SVG 和 TIFF。

阅读全文 » 140天前
2023年11月30日

技术饭 HarmonyOS第一课

HarmonyOS第一课,华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的操作系统。 华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场景生活中接触的多种智能终端,实现极速发现、极速连接、硬件互助、资源共享,用合适的设备提供场景体验。

阅读全文 » 155天前
2023年11月15日

技术饭 php通过spatie/browsershot将html文件转成pdf、图片

php通过 spatie/browsershot 将html文件转成pdf、图片,最近需要将html文件转成png或者是pdf合同,如果使用php手动处理的话那过程就需要经过,html -> pdf -> png,这样单独写的话就比较麻烦,如果有composer或者类库的话那就很好用了,搜了一下 spatie/browsershot 比较好用些,只是需要依赖npm、puppeteer。

阅读全文 » 286天前
2023年07月07日

技术饭 php生成pdf文件上传到七牛云

php生成pdf文件上传到七牛云,php生成pdf使用composer require tecnickcom/tcpdf,通过html生成对应的pdf使用还是很方便的,缺点是html样式不是很好调整,七牛云上传使用七牛云提供的类库 composer require qiniu/php-sdk即可。php下有多个类库可以生成pdf如tcpdf、mpdf,但是html需要比较写得纯粹些,否则很多样式不支持,导致生成得pdf很乱。

阅读全文 » 300天前
2023年06月23日

技术饭 php通过GD库生成简单的印章图片

php通过GD库生成简单的印章图片,GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印。php的gd库有很多的函数可以生成各式各样的图片,比如电子印章、电子公司盖章等等。

阅读全文 » 301天前
2023年06月23日

技术饭 curl 发送 form-data 数据流:Content-Type:multipart/form-data; boundary=xxxxxxxxx; charset=utf-8

curl 发送 form-data 数据流:Content-Type:multipart/form-data; boundary=xxxxxxxxx; charset=utf-8,multipart/form-data是基于post方法来传递数据的,并且其请求内容格式为Content-Type: multipart/form-data,用来指定请求内容的数据编码格式。另外,该格式会生成一个boundary字符串来分割请求头与请求体的,具体的是以一个boundary=${boundary}来进行分割。

阅读全文 » 316天前
2023年06月07日

技术饭 PHP的MongoDB\Driver\Manager实现对mongodb的操作

MongoDB是开发人员数据平台,提供必要的服务和工具,以快速、高性能和大规模地构建用户需求的分布式应用程序。MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

阅读全文 » 322天前
2023年06月01日

技术饭 PHP搜索引擎MeiliSearch实现全文检索

PHP搜索引擎MeiliSearch实现全文检索,Meilisearch 搜索引擎使用 Rust 语言开发,轻量,对中文搜索非常友好,几乎做到了零配置,零学习成本,部署即用,非常方便。建立在 LMDB 键值存储之上,安装在 Ubuntu 或 MacOS 上时,它以 35 MB 的二进制文件形式存在。 MeiliSearch 带有内置的客户端、服务器和 WebUI。 词干提取、停用词、同义词、排名、过滤器和分面等功能都是开箱即用的,使用合理的默认值并且可以轻松定制。

阅读全文 » 322天前
2023年06月01日

技术饭 WSL2使用PHP访问Windows 11上的MongoDB报错:Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: [connection refused calling hello on 'localhost:27017']

WSL2使用PHP访问Windows 11上的MongoDB报错:Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling hello on 'localhost:27017'],解决方法是:1、防火墙需要运行wsl2、2、mongodb配置文件设置bindIp=0.0.0.0、3、设置wsl中对应host访问

阅读全文 » 326天前
2023年05月28日

生活札记 Laravel学习笔记 - 基础入门(一)

Laravel 是一个全栈Web应用程序框架,具有富有表现力、优雅的语法。它可以从面条一样杂乱的代码中解脱出来,它可以构建网络APP,而且每行代码都可以简洁、富于表达力。在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。

阅读全文 » 349天前
2023年05月05日

技术饭 redis队列详解

现如今的互联网应用大都是采用分布式系统架构设计的,所以消息队列已经逐渐成为企业应用系统内部通信的核心手段,它具有低耦合、可靠投递、广播、流量控制、最终一致性 等一系列功能。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ 等,而部分数据库 如 Redis、MySQL 以及 phxsql ,如果硬搞的话,其实也可实现消息队列的功能。可能有人觉得,各种开源的 MQ 已经足够使用了,为什么需要用 Redis 实现 MQ 呢?有些简单的业务场景,可能不需要重量级的 MQ 组件(相比 Redis 来说,Kafka 和 RabbitMQ 都算是重量级的消息队列)。

阅读全文 » 353天前
2023年05月01日

技术饭 Redis的消息发布(Pub)与订阅(Sub)

Redis的消息发布(Sub)与订阅(Sub),Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。消息多播:生产者生产一次消息,中间件负责将消息复制到多个消息队列中,每个消息队列由相应的消费组进行消费,这是分布式系统常用的一种解耦方式。

阅读全文 » 353天前
2023年05月01日

生活札记 Flutter学习笔记 - 入门(一)

Dart是谷歌开发的计算机编程语言,是一个为全平台构建快速应用的客户端优化的编程语言。Flutter 是 Google 开源的应用开发框架,仅通过一套代码库,就能构建精美的、原生平台编译的多平台应用。Flutter 为软件开发行业带来了革新:只要一套代码库,即可构建、测试和发布适用于移动、Web、桌面和嵌入式平台的精美应用。

阅读全文 » 385天前
2023年03月30日

生活札记 Fiddler抓包、JMeter性能测试、Postman接口调试工具之自动化测试(一)

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果。

阅读全文 » 396天前
2023年03月19日

生活札记 Docker+K8S+Devops零基础入门教程之Devops

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

阅读全文 » 424天前
2023年02月19日

生活札记 Docker+K8S+Devops零基础入门教程之K8S

Kubernetes也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。

阅读全文 » 428天前
2023年02月15日

生活札记 Docker+K8S+Devops零基础入门教程之Docker

docker是一种运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。docker images | grep hello | awk '{print $2}'

阅读全文 » 435天前
2023年02月08日

技术饭 微信分享:分享签名、分享链接需要注意的细节

微信分享JSSDK在1.4.0之后,废弃了很多的方法如:onMenuShareTimeline、onMenuShareAppMessage、onMenuShareQQ等,取而代之的是:自定义“分享给朋友”及“分享到QQ”按钮的分享内容(updateAppMessageShareData)、自定义“分享到朋友圈”及“分享到 QQ 空间”按钮的分享内容(updateTimelineShareData)

阅读全文 » 463天前
2023年01月11日

技术饭 VS Code出现“由于找不到ffmpeg.dll,无法继续执行代码”的系统错误

点击桌面vs code快捷方式出现如图错误。打开Microsoft VS Code 文件夹,VS Code出现“由于找不到ffmpeg.dll,无法继续执行代码”的系统错误,发现一部分文件被打包进了一个叫“_”的文件夹(真奇怪啊),把该文件夹里的全部文件取出至Microsoft VS Code文件夹。可以正常打开Vs Code。

阅读全文 » 552天前
2022年10月14日

技术饭 go的无限极分类

go的无限极分类,表结构是带有id、pid、name、rule,所有数据读取出来之后需要进行child之类的组装,刚学习go不久,搞了大半天也是迷迷糊糊,后来大佬帮我搞一下就出来了,十分感谢~~~

阅读全文 » 626天前
2022年08月01日

技术饭 Git:fatal: No url found for submodule path ‘xxx/xxx‘ in .gitmodules gitsubmodule子仓库无法拉取问题

Git:fatal: No url found for submodule path ‘xxx/xxx‘ in .gitmodules gitsubmodule子仓库无法拉取问题,报错:golang.org/x/mod/semver: gitee.com/DXTeam/idea-go.git@v0.0.0 (replaced by ./submodule/idea-go.git): reading submodule\idea-go.git\go.mod: open F:\wnmp\wwwgit\auth\submodule\idea-go.git\go.mod: The system cannot find the file specified.

阅读全文 » 631天前
2022年07月27日

技术饭 mysql 将一个表的一个字段更新到另一个表中的一个字段

mysql 将一个表的一个字段更新到另一个表中的一个字段,有两个表brand_fundlist_log和 brand_fundlist_log_temp,现在要将brand_fundlist_log_temp的update_create_time值更新到brand_fundlist_log的create_time 字段上面去。

阅读全文 » 651天前
2022年07月07日

技术饭 thinkphp5.1日志文件夹及文件权限问题

thinkphp5.1日志文件夹及文件权限问题,由于www用户和root用户(比如cmd的cli进程日志)都有可能对log文件夹或文件进行创建和读写。如果是先由www用户创建的log文件夹活文件,则不会出任何问题。但是如果是先由root用户创建的文件,然后再由www用户角色去读写就会出现异常报错。因为一般默认创建的log文件的权限是 -rw-r--r-,也就是www没有权限去写入root用户创建的log文件。

阅读全文 » 687天前
2022年06月01日

生活札记 golang学习笔记 - goquery、zookeeper、kafka、k8s、fyne、etcd(五)

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。Go 是谷歌支持的开源编程语言,易于学习和入门,内置并发和强大的标准库,不断发展的合作伙伴、社区和工具生态系统。golang学习笔记 - 爬虫(goquery)、zookeeper(分布式的服务配置管理系统)、kafka(消息中间件)、k8s(容器集群管理)、fyne(GUI框架)、etcd(分布式存储)(五)

阅读全文 » 699天前
2022年05月20日

技术饭 Gitee代码评审,解决完冲突之后,会自动把目标分支合并到源分支

Gitee代码评审,解决完冲突之后,会自动把目标分支合并到源分支,开发项目,使用Gitee的代码评审,合并功能分支feature到dev上的时候,出现了Conflicts,在线解决冲突之后,点击解决合并,结果反向的把dev的分支合并到了feature功能分支,这个源分支多了dev分支的代码。

阅读全文 » 741天前
2022年04月08日

技术饭 mysql替换字段值为另外一个表的字段值

mysql替换字段值为另外一个表的字段值,需求是:替换充值订单中的时间为另外一张表的时间字段,这时候正常使用 INNER JOIN 查询的方式查出来数据之后再进行update更新。

阅读全文 » 742天前
2022年04月07日

技术饭 腾讯云Elasticsearch Service出现:No alive nodes found in your cluster 提示

腾讯云Elasticsearch Service出现:No alive nodes found in your cluster 提示,访问控制的ip已经添加了,但是我们有的机器可以访问有的不能访问这个?本地使用phpstudy工具访问Elasticsearch Service,出现部分电脑可以部分电脑不行,按照了wnmp的却一直都是正常的,初步排查是本地环境配置导致。

阅读全文 » 786天前
2022年02月22日

技术饭 CentOS官方已计划停止维护CentOS Linux项目

CentOS官方已计划停止维护CentOS Linux项目(即2022年1月1日起CentOS官方将不再对CentOS 8提供服务支持;CentOS 7也将在2024年6月30日停止技术服务支持),2020年12月08日CentOS 官方宣布CentOS Linux项目将停止,并推出CentOS Stream项目。CentOS未来将会从Red Hat Enterprise Linux(RHEL)复刻版本的CentOS Linux转向CentOS Stream。

阅读全文 » 821天前
2022年01月18日

技术饭 PHP简单对称ID加密、解密算法

PHP简单对称ID加密、解密算法,有时候需要对数据进行简单的混淆,不让别人轻易破解,所以就需要对数据进行一定的加密解密来保证数据的安全性,这里做个简单的算法。

阅读全文 » 832天前
2022年01月07日

技术饭 mysql根据关联表查询统计字段进行排序

mysql根据关联表查询统计字段进行排序,需求是查询所有的主账号数据,然后根据子账号的数量进行按高到低排序,第一想法就是需要做order by那么就需要把统计子账号的结果作为一个字段,那这时候就可以使用子查询来实现了。

阅读全文 » 902天前
2021年10月29日

技术饭 eval()’d code on line 1 的解决方法

eval()’d code on line 1 的解决方法,php的eval函数是用来把一段文字当作一段php的脚本来执行,这样做的好处是我们可以动态修改php执行的内容。原始是看了权限部分的eval方法,运行代码,提示 “eval()’d code on line 1”,根据提示来看是eval函数在执行的时候出错了。无论怎么执行单引号的一直不行,就很奇怪。后来改成双引号才得以解决。

阅读全文 » 918天前
2021年10月13日

技术饭 layer.prompt输入框改成laydate时间控件

layer.prompt输入框改成laydate时间控件,layui官方文档的解释:prompt的参数也是向前补齐的。options不仅可支持传入基础参数,还可以传入prompt专用的属性。当然,也可以不传。yes携带value 表单值index 索引elem 表单元素,输入框类型,支持0(文本)默认1(密码)2(多行文本),没有直接输入dom内容的方式。但是网上找到一个是formType:3的类型,测试可以。

阅读全文 » 943天前
2021年09月18日

技术饭 vscode1.60版本不支持:terminal.integrated.shell.windows

vscode1.60版本不支持:terminal.integrated.shell.windows,旧版VScode 的 git bash 终端配置如下:"terminal.integrated.shell.windows": "D:\\Program Files\\Git\\bin\\bash.exe",当VSCode升级至1.57.1(2021.6.17)时,会出现警告提示:此项已弃用,配置默认 shell 的新推荐方法是在 #terminal.integrated.profiles.windows# 中创建一个终端配置文件,并将其配置文件名称设置为 #terminal.integrated.defaultProfile.windows# 中的默认值。此操作当前将优先于新的配置文件设置,但将来会发生更改。

阅读全文 » 957天前
2021年09月04日

技术饭 负载均衡导致wss的websocket请求被分发到其他服务器,无法实时收到消息

负载均衡导致wss的websocket请求被分发到其他服务器,无法实时收到消息,平时我们做swoole即时消息系统的时候,正常情况下就只使用一台服务器作为websocket的请求与分发,但是当加入了负载均衡之后,如果每台服务都开启了websocket,这样会导致客户端的wss请求可能随机分配到不同的服务器上,而每台服务器与客户端链接保存的fd可能重复,A服务器没办法给B服务器的客户端发送消息。

阅读全文 » 963天前
2021年08月29日

技术饭 解决两个跨域但是同站、同域、同源的域名(Sec-Fetch-Site: same-site),通过接口请求设置session_id()改变PHPSESSID的问题

解决两个跨域但是同站、同域、同源的域名(Sec-Fetch-Site: same-site),通过接口请求设置session_id()改变PHPSESSID的问题,现象:1、两个https的二级域名解析在同一台服务器上,端口都是443;2、前端域名与接口域名同时在同一个浏览器打开,接口域名登录后台生成PHPSESSID,保存了登录状态;3、前端域名请求接口域名生成验证码,验证保存在session里面,由于访问接口,每次的会话session_id都是不一致,为了实现跨域验证码的验证,这个时候需要在接口端设置session_id(随机数),然后把这个随机值返回给前端,到时候验证的时候再设置session_id(随机数),这样会话才能保持一致,验证码才能通过验证;4、由于步骤3设置session_id(随机数)重新生成PHPSESSID后,导致了步骤2登录后台的PHPSESSID被改成了步骤3设置的PHPSESSID,这时候步骤2的登录状态就消失了,直接退出登录。

阅读全文 » 978天前
2021年08月14日

技术饭 腾讯cos、阿里云oss存储文件跨域

腾讯cos、阿里云oss存储文件跨域,现在采用的文件存储方式基本上是阿里云oss、腾讯cos等一系列的存储来做文件存放,如果是新手肯定会碰到各种设置的问题,正常是在存储桶那边设置跨域访问CORS设置来源Origin,但是有时候并不生效,原因是存储如果管理了cdn需要在cdn那边也设置相应的响应头才行。

阅读全文 » 979天前
2021年08月13日

技术饭 layui的插件laydate的时间范围控制

layui的插件laydate的时间范围控制,laydate插件本身有很多的设置,但是有的可能需要自定义,这种情况就需要自行开发设置了,现有的需求是需要把时间范围限定在3个月内,而且可以通过选择今天、最近一周、最近一月、最近三月来设置时间。

阅读全文 » 979天前
2021年08月13日

技术饭 腾讯云负载均衡的使用配置

腾讯云负载均衡的使用配置,大数据大流量时代,服务器的压力越来越大,这时候负载均衡就成了流量分发的解决方案了,负载均衡(Cloud Load Balancer)是对多台 云服务器 进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。

阅读全文 » 984天前
2021年08月08日

技术饭 centos8 安装 mysql5.7(更新数据库)

centos8 安装 mysql5.7(更新数据库),centos8下默认的yum源是mysql8,如果想用mysql5.7那该如何安装呢?其实也蛮简单的,mysql官方也给出了操作方法,直接安装步骤执行就可以了,但是有一点需要注意的是:过程中可能会报Mariadb错误,原因是因为yum自动默认了Mariadb,这需要先禁用卸载Mariadb之后才能继续安装mysql5.7版本。

阅读全文 » 985天前
2021年08月08日