<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
                        <id>https://baijunyao.com/feeds</id>
                                <link href="https://baijunyao.com/feeds" rel="self"></link>
                                <title><![CDATA[白俊遥博客,技术博客,个人博客模板,php博客系统,设计模式]]></title>
                    
                                <subtitle>白俊遥的php博客,个人技术博客,分享免费个人博客模板,开源一些thinkphp,laravel相关的博客系统项目,bjy,blog和bjy,admin官网,写一些技术文章设计模式.</subtitle>
                                                    <updated>2026-10-09T23:21:47+08:00</updated>
                        <entry>
            <title><![CDATA[推荐一个 PHP AST 工具]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/229" />
            <id>https://baijunyao.com/229</id>
            <author>
                <name><![CDATA[RainX]]></name>
            </author>
            <summary type="html">
                <![CDATA[PHP AST Viewer 是一个专门用于查看 PHP 代码的抽象语法树（AST）的工具。通过可视化代码结构，它帮助开发者深入理解代码的细节和架构，从而显著提升代码的质量和维护效率。在复杂的项目开发过程中，理解底层代码的结构是至关重要的。快速准确地识别问题所在并进行有效的代码优化，对提高开发效率和最终产品的稳定性都有极大的帮助。PHP AST Viewer 通过将代码结构直观地展现出来，使这一过程变得简单易行。]]>
            </summary>
                                    <updated>2026-10-09T19:58:28+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[GitHub 账号领取 Fluence 的 3.6 万元空投]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/228" />
            <id>https://baijunyao.com/228</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[GitHub 账号领取 Fluence 的 2.3 万元空投，Fluence 发空投了，条件是自己的 GitHub 账号在去年向 Web3 项目提交过代码贡献满足条件的领取 5000 个 FLT 币，按现在 0.66 USDT 的单价可以兑换人民币 2.3 万元左右实时价格查看：https://www.bybit.com/en/trade/spot/FLT/USDT具体流程如下]]>
            </summary>
                                    <updated>2026-10-09T19:49:15+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[非常实用的为公司和个人项目分别设置 Git User 的方案]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/223" />
            <id>https://baijunyao.com/223</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[概述作为开发者，bug 任何时候都要修！不修不行！，你们想想，你带着老婆出了城，吃着火锅还唱着歌，突然就收到通知说线上项目崩了，要赶紧修，每分钟都损失好几个小目标，这时候我们只好打开个人电脑，改起了公司项目代码。种种的种种造成了我们自己的电脑上可能同时存有个人项目和公司项目，在使用 Git 提交代码的时候我们需要设置 name 和 email，因为没设置或设置错误造成个人 email 和公]]>
            </summary>
                                    <updated>2026-10-09T19:48:38+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[一份经过时间检验的 Laravel PHPUnit 测试经验分享]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/222" />
            <id>https://baijunyao.com/222</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[一份经过时间检验的 Laravel PHPUnit 测试经验分享 介绍作为开发者我们可能都有过这样的经历： Laravel v7 都已经发布了，而自己维护的项目仍然是公司祖传的 v5.3，迟迟不敢升级。 修复了一个注册功能的 bug，结果把登录功能搞崩了，直到用户反馈才知道。 新增功能或者修改代码都束手束脚，生怕对项目造成破坏性影响。而这些困境很大部分的原]]>
            </summary>
                                    <updated>2026-10-09T19:48:57+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[多语言开发需要了解的国家语种代码标准]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/221" />
            <id>https://baijunyao.com/221</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[介绍在我们开发过程中；  或者在浏览网页过程中；  如果涉及到多语言；  我们会经常发现 `cn`；    `zh`    `zhHans`    `zhCN` 、 `zhcn`    各种方式五花八门简直令人目瞪狗呆；  他们之间到底有什么区别？  又有什么关系？  这一切的一切；  到底是人性的扭曲？  还是道德的沦丧？]]>
            </summary>
                                    <updated>2026-10-09T21:50:38+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(九)Docker Compose]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/220" />
            <id>https://baijunyao.com/220</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[传统的本地环境一般是把 NGINX、MySQL、PHP 都在一台机器上安装好；  但是如果用于生产环境就非常不利于维护和扩展了；  Docker 中推崇一个服务就是一个容器；  我们上篇文章使用的 Dockerfile 都是定义的单个容器服务的镜像；  那容器与容器之间的关系怎么定义呢？  前面我们讲网络的时候通过命令行实现了容器的互通；  那有木有一种像 Dockerfile 类似的方案用来记录容器之间的关系？  没错这就是今天要讲的 Docker Compose ；]]>
            </summary>
                                    <updated>2026-10-09T19:59:26+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(八)使用 Dockerfile 制作 Linux、NGINX、MySQL、PHP 镜像]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/219" />
            <id>https://baijunyao.com/219</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章把 Dockerfile 的基本使用介绍了一遍；  我们接下来就用 Dockerfile 制作一套简单的环境；   Linux我们这里以 Ubuntu 为示例；  默认的官方镜像比较基础有些地方不一定适合我们使用；  我们这里对 Ubuntu 做一些简单的修改；  创建一个 Ubuntu 目录；    我这里创建了两个文件；  conf/sources.list```bashdeb http://mirrors.aliyun.com/ubuntu/]]>
            </summary>
                                    <updated>2026-10-09T20:02:59+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(七)Dockerfile]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/218" />
            <id>https://baijunyao.com/218</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[前面我们使用 `docker commit` 制作了一个自己的镜像；  但是这个主要是用于学习以及一些特殊的用途；  实际应用中一般不会通过这种方式制作镜像；  因为 `docker commit` 只是把变动的文件制作成了镜像；  比如之前文章中创建 test 镜像的时候；  记录的是创建的 `/test` 这个文件夹；  但是变动的过程无法记录；  没有办法追踪到我是通过 `mkdir /test` 这个命令创建的 `/test` 目录；  这样的话就非常不利于追踪历史]]>
            </summary>
                                    <updated>2026-10-09T22:38:04+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(六)网络 Network]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/217" />
            <id>https://baijunyao.com/217</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[端口映射默认容器在外部默认是不可访问的；  比如进入到容器里面才可以操作；  这对于提供网络请求的应用就不友好了；  比如说我们常见的 Nginx ；  如果想让容器可被访问；  这就需要使用 `P` 参数分配端口了；  ```bashdocker run d P nginx```这里 Docker 给随机分配了一个端口个 `32768`；    我们通过浏览器访问刚这个端口就可以看到 Nginx 的欢迎页了；    如果是使用的各云服务器需要]]>
            </summary>
                                    <updated>2026-10-09T19:57:20+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(五)数据卷 Volumes]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/216" />
            <id>https://baijunyao.com/216</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[有些容器在运行的时候是会产生数据的；  这种容器就叫做有状态容器；  比如说 MySQL 容器；  我们在创建镜像的时候希望保留的是 MySQL 各种配置以及扩展；  并不想把 MySQL 的数据也打包到镜像中；  数据卷就是为此场景而生的；  数据卷分为两种类型：  1. 绑定挂载的 volume (bind mount volume)2. 受管理的 volume (managed volume) 绑定挂载的 volume (bind mount volume)]]>
            </summary>
                                    <updated>2026-10-09T22:09:33+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(四)仓库 Repository]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/215" />
            <id>https://baijunyao.com/215</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[Docker Hub仓库是用来存放发布镜像的地方；  Docker 官方提供了仓库服务   ；  我们之前的文章中讲的 `docker pull` 拉取的镜像就是从 Docker Hub 仓库中拉取的；  要使用  Docker Hub 需要先注册一个账号；  然后在命令行中就可以登录了；  ```bashdocker login```登录后就可以推送自己的镜像了；  这和 Github 的 Push 代码同样很像；   拉取镜像、启动容器、推送到仓库]]>
            </summary>
                                    <updated>2026-10-09T13:55:40+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(三)容器 Container]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/211" />
            <id>https://baijunyao.com/211</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[容器就是镜像的一个运行示例；  如果不理解的话可以先回到第一篇的概念文章复习下；   启动容器上篇文章已经拉取了 Ubuntu 镜像；  现在来启动一个容器；  ```bashdocker run t i ubuntu /bin/bash````t` : 让容器分配一个伪终端  `i` : 让容器标准输入保持打开  这就进入到一个 Ubuntu 系统中了；  执行 `exit` 命令可以退出镜像；  如果不想退出容器让容器保持后台运行可以使用 `d` 参]]>
            </summary>
                                    <updated>2026-10-08T14:27:23+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(二)镜像 Image]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/210" />
            <id>https://baijunyao.com/210</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[ 联合文件系统镜像的基础是联合文件系统 (UnionFS) ；  这个联合文件系统我们可以简单的理解为把多个目录挂载到一个目录下；  举个栗子；  这里创建 A 和 B 以及 C 三个目录；  A 目录下有 a.txt 文件和 z.txt 文件；  B 目录下有 b.txt 文件和 z.txt 文件；  C 目录下是空的；  ```bash| A|   | a.txt|   ` z.txt| B|   | b.txt|   ` z.txt` C]]>
            </summary>
                                    <updated>2026-10-09T08:52:42+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Docker 入门教程(一)概念]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/209" />
            <id>https://baijunyao.com/209</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[作为开发者；  Git 是我们的必备技能；   它可以记录文件开发历史；  可以在本地和服务器上保持文件的一致性；   但是我们的代码都依赖于运行环境；  比如说典型的 LNMP 环境；  如果环境不一致；  代码跑出来的效果肯定也是很多问题的；  那能不能像管理代码一样来管理运行环境呢？Docker 就可以达到统一运行环境的目的；Docker 的精髓就在于可以保证各个环境的一致性；一个经常拿来跟 Docker 对比的是虚拟机；  虚拟机是虚拟了一个]]>
            </summary>
                                    <updated>2026-10-09T09:22:59+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel中级教程(五)Passport OAuth认证]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/208" />
            <id>https://baijunyao.com/208</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[经过前面  的铺垫;  终于可以开始本篇 Laravel 教程了；  如果对 OAuth 和 JWT 还不是很了解；  建议先出门左转阅读上面链接中的系列文章；  我们先来回顾一下之前讲的 OAtuh 的四个角色；1. 资源服务器(resource server)：github 服务器2. 授权服务器(authorization server)：github 服务器3. 资源所有者(resource owner)：用户你4. 客户端(client)：第三方白俊遥博客]]>
            </summary>
                                    <updated>2026-10-09T21:06:30+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[JWT(JSON Web Token)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/207" />
            <id>https://baijunyao.com/207</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[之前的   中我们的目标都是获取 Token ；  那这个 Token 是个什么样的呢？  RFC 并没有明确规定；  不过业内比较常见的方案是使用 JWT ；  JWT 是 JSON Web Token 的缩写；  要学习 JWT 我们可以拿 session 作为参照物；  在传统开发中我们在用户登录后会创建一个 session 文件 xxx ；  用户的 id ...]]>
            </summary>
                                    <updated>2026-10-09T21:06:21+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[OAuth 系列(六)对比总结]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/206" />
            <id>https://baijunyao.com/206</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[这个周日需要补节五一假期的班；  今个在上班没足够的时间写文章了；  写一篇总结文吧；   获取 access_token 的方式 授权码模式(Authorization Code)：先用账号密码登录获取 code ；然后使用 code 获取 access_token ；   简化模式(也叫隐式授权)(Implicit)： 使用账号密码直接在浏览器通过重定向获取 access_...]]>
            </summary>
                                    <updated>2026-10-09T21:06:14+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[OAuth 系列(五)客户端模式 Client Credentials]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/205" />
            <id>https://baijunyao.com/205</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[前面讲的三种模式都是面向用户的；  获取的 access_token 都有对应的 user ；  今天要讲的客户端模式获取的 access_token 则没有对应的 user ；  和  相似的地方在于一般都是用于自己的应用；  不会给第三方开放客户端模式；  它的应用场景主要是机器或应用之间调用 api 访问数据；  和  相似的地方在于同样只有 access_token...]]>
            </summary>
                                    <updated>2026-10-09T22:23:26+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[OAuth 系列(四)密码模式 Resource Owner Password Credentials]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/204" />
            <id>https://baijunyao.com/204</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[密码模式不同于前面讲过的 ；  前面的这两种模式中账号密码都是在授权服务器上输入的；  都有重定向跳转步骤；  客户端 Clinet 并不知道用户账号和密码；  而密码模式则需要 Clinet 使用账号密码来获取 Token ；  虽然 OAuth 协议要求 Clinet 禁止存储用户的账号密码；  但是大家并不能信任第三方的 Client；  因此密码模式一般用于自家...]]>
            </summary>
                                    <updated>2026-10-09T21:06:06+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[OAuth 系列(三)简化模式 Implicit]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/203" />
            <id>https://baijunyao.com/203</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[简化模式 (Implicit) 也翻译做隐式模式或者紧凑模式；  简化模式的简化是相对于授权码模式来说的；  上篇文章  ； 我们讲过要获取 access_token 需要在 Client 服务器上发送 POST 请求；  但是在很多场景中我们可能没有服务器只有浏览器；  在远古时期还没有 CORS；  为了向这类场景妥协；  于是就有了简化授权；  在写本文的时候...]]>
            </summary>
                                    <updated>2026-10-09T21:06:01+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[OAuth 系列(二)授权码模式 Authorization Code]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/202" />
            <id>https://baijunyao.com/202</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[授权码模式 (Authorization Code) 是最常见的 OAuth 授权类型；  它的流程相对于其他模式是最复杂也是最完善的；  我们这里还以 白俊遥博客 和 github 做示例；   拼接链接获取 code 需要拼接一个链接；   这个过程是在第三方客户端完成的即 白俊雅博客；  在白俊遥博客上有一个 github 登陆按钮；  放在按钮上我们可以...]]>
            </summary>
                                    <updated>2026-10-09T21:05:55+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[关于我的PHP直播公开课的广告]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/201" />
            <id>https://baijunyao.com/201</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[受的邀请；  给 MySQL  DBA 的亲们在腾讯课堂做个 PHP 的直播分享；  本次公开课主要有以下内容；  1. PHP 的发展历史  2. PHP 的包管理工具 composer  3. PHP 框架的选择  4. PHP 的学习路线推荐以及最佳实践  5. 个人的技术成长经验分享  有兴趣的童鞋们可以点击链接报名哈；  只需要邀请扫码助力下即可免费参...]]>
            </summary>
                                    <updated>2026-10-09T21:05:31+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[OAuth 系列(一)序言]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/200" />
            <id>https://baijunyao.com/200</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[每项技术的诞生都是为了解决某个需求；  因此当我们学习技术的时候要搞清楚两个问题；  1. 这项技术解决的是什么问题2. 这项技术是怎么解决问题的本系列教程就是要对 OAuth 进行讲解；  我们先来回答上面第一个问题；  在互联网上有很多的应用；  这些应用是不同公司或个人开发的；  比如说 github 和 白俊遥博客  ；  很多时候多个应用之间的用户...]]>
            </summary>
                                    <updated>2026-10-09T21:52:05+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel中级教程(四)前端开发]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/199" />
            <id>https://baijunyao.com/199</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[Laravel 使用 npm 安装前端依赖；  npm 是一个类似 composer 的工具；   用于管理前端的各种依赖包；  在使用之前需要先安装 node ；  Windows 下可以在官网下载安装：   Mac 上可以通过 brew 安装；  ```bashbrew install node```node 已经捆绑了 npm 不需要单独安装 npm 了；...]]>
            </summary>
                                    <updated>2026-10-09T21:05:06+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel中级教程(三)表单验证]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/198" />
            <id>https://baijunyao.com/198</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[做开发有个原则是永远不能信任用户输入的数据；  即便前端已经做了验证；  在后端 php 也必须要再次验证；  laravel 为表单验证提供了强大且简单的方案；  创建示例路由：  routes/web.php```phpRoute::prefix('validation')group(function () {    Route::get('create', '...]]>
            </summary>
                                    <updated>2026-10-09T13:55:25+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel中级教程(二)用户认证]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/197" />
            <id>https://baijunyao.com/197</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[之前的主要是学习简单的增删改查；  接着的中级教程的目标是在初级教程的基础上能写出更复杂更健壮的程序；  我们先来学习 laravel 的用户认证功能；  在现代网站中基本都有用户系统；  而我们每开发一个网站就实现一遍用户系统想想也是挺心累的；  还好 Laravel 已经贴心的帮我们完成了常用的用户认证功能；  比如说 注册、登录、重置密码；  并设计好了用户表 u...]]>
            </summary>
                                    <updated>2026-10-09T13:49:18+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel中级教程(一)序言]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/196" />
            <id>https://baijunyao.com/196</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[Laravel 是一个全栈框架；  我们使用 Laravel 开发业务常见有 3 个方向；   1. 前端页面和后端逻辑混合的应用  主要是面向对 SEO 有需求的项目；  比如说新闻资讯博客文章等；  一般在控制器中 return 的是一个 html 页面；  2. 纯后端 api 接口  主要是为 app 开发接口；  或者是前后端分离的应用；  一般在控制...]]>
            </summary>
                                    <updated>2026-10-09T20:03:25+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Mac从入门到痴迷系列之Go2Shell]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/195" />
            <id>https://baijunyao.com/195</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[作为程序猿在使用 Mac 过程中肯定是离不开命令行的；  我的 item2 基本是长期打开状态；  当正在某个目录下操作命令行的时候我可能想在 Finder 中打开此目录；  Mac 中的 `open` 命令就够了；只需要执行 `open .` 即可；而又有一些时候我有需要跟上述场景相反的操作；  当我在 Finder 中浏览某个目录的时候我可能希望在命令行中到达此...]]>
            </summary>
                                    <updated>2026-10-08T22:09:54+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[MySQL的自动补全和语法高亮工具MyCli]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/194" />
            <id>https://baijunyao.com/194</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[MySQL自带的命令行客户端难用的简直令人发指；连基本的补全和高亮都没有；还好有一款叫 MyCli 的工具解决了以上痛点；一图胜千言这里直接借用官网的动图；心动的话下面进入安装环节；```bashbrew install mycli```如果是其他平台的话参考；安装完成后使用起来也非常简单；就把之前命令行中的 mysql 换成 mycli 即可；比如...]]>
            </summary>
                                    <updated>2026-10-09T09:28:46+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Mac从入门到痴迷系列之增强快速预览功能]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/193" />
            <id>https://baijunyao.com/193</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[默认在 mac 上是在文件上按空格键预览；但是这个预览的功能特别的简陋；预览个 php 这类文件没有高亮；json 之类的文件更惨直接就没法预览；这时候就需要 Quick Look plugins 了；它主要有以下功能：1. 高亮预览代码文件2. 预览没有后缀的文本文件3. 预览 markdown 文件4. 预览 json 文件5. 预览压缩...]]>
            </summary>
                                    <updated>2026-10-07T21:53:41+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[解决laravel使用QQ邮箱发邮件失败]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/192" />
            <id>https://baijunyao.com/192</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[Connection could not be established with host smtp.exmail.qq.com in StreamBuffer.php line 270顺藤摸瓜找到  vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php  发现其实是这个 错误抑制...]]>
            </summary>
                                    <updated>2026-10-09T15:52:26+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[修改git以往历史中所有commit的name和email]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/191" />
            <id>https://baijunyao.com/191</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[当换了新的电脑设备或者在 homestead 中使用 git 的时候；如果忘了 `git config` 设置用户名和邮箱；这样当 `git commit` 的时候就会使用设备名作为 git 用户名；或者我们还可能手抖设置了错误的用户名和邮箱；然后再一不小心推到了服务器或者 github 上后就尴尬了；这时候就需要下面的脚本来批量修改历史 commit 中的用户名和邮箱了；...]]>
            </summary>
                                    <updated>2026-10-09T19:09:51+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[为laravel队列安装supervisor并配置]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/190" />
            <id>https://baijunyao.com/190</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[supervisor 是用 Python 开发的进程管理程序;python 在主流的 linux 发行版都已经内置了；pip 则是 python 的一个包管理工具；跟 php 的 composer 类似； 但是系统默认没有安装 pip ；先来安装；```bashwget https://bootstrap.pypa.io/getpip.py  python getp...]]>
            </summary>
                                    <updated>2026-10-09T13:49:18+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[laravel passport加密jwt格式的access_token中的sub(user_id)字段]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/189" />
            <id>https://baijunyao.com/189</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在很多需求我们不希望别人知道用户在我们表中的 user_id ；但是又想用数据库的自增 id 功能；一般时候在取出用户后加密 user_id 加密即可；但是总有那么几个不经意间就可能把我们的 user_id 暴露了；比如说 laravel 的 passport ；创建一个项目用于测试;```bashlaravel new passport```    安装 ...]]>
            </summary>
                                    <updated>2026-10-09T19:51:57+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Mac从入门到痴迷系列之phpstorm配置xdebug]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/188" />
            <id>https://baijunyao.com/188</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[安装 xdebug```bashpecl channelupdate pecl.php.netpecl install xdebug```配置debug；```bashvim vim /usr/local/etc/php/7.2/php.ini```增加如下配置```bashxdebug.remote_enable=On```开启成功的标...]]>
            </summary>
                                    <updated>2026-10-09T19:10:37+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Mac从入门到痴迷系列之配置开发环境]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/187" />
            <id>https://baijunyao.com/187</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[安装php7.2 替代系统自带的php```bashbrew install php@7.2brew link php@7.2 force``` 安装 composer```bashbrew install composer```设置国内镜像```bashcomposer config g repo.packagist composer https...]]>
            </summary>
                                    <updated>2026-10-09T17:49:09+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[使用array_diff优雅的删除数组中指定的value值]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/186" />
            <id>https://baijunyao.com/186</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在开发过程中经常需要删除数组中某个值；比如说有个数组;```php$names = [    '张三',    '李四',    '王麻子']```我们希望删除 `李四` 这个值；常规的思路是先用 `array_search` 函数获取 `李四` 在 `$names` 中的键名；然后使用 `unset` 删除；为了严谨还得判断`李四`是否存在；`...]]>
            </summary>
                                    <updated>2026-10-09T22:40:09+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[macOS删除启动台Launchpad中残留的快捷图标]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/185" />
            <id>https://baijunyao.com/185</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在使用 macOS 的过程中；偶尔的情况下会发生命名删除了应用程序；但是在启动台 Launchpad 中仍然残留有快捷图标的情况；这对于一个强迫症患者来说是一件十分痛苦的事情；大多方案是使用 sqlit3 的命令行使用sql语句从数据库中找图标删除；然鹅这个太折腾了；还好后来找到了一款软件；官网在这： http://launchpadmanager.com ；直接点...]]>
            </summary>
                                    <updated>2026-10-09T21:17:09+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(二十一)观察者模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/184" />
            <id>https://baijunyao.com/184</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在业务开发过程中多个功能会互相依赖；如果我们想在一个对象发生变化后通知和它有关联的类；比如说你做了某件事后希望可以使用邮件和短信发送通知；这时候就比较适合使用观察者模式了；不过 php 官方已经提供了 ；因此这又是一篇为了设计模式而写设计模式的文章； 结构SubjectAbstract： Subject 抽象类 示例中指 SubjectAbstract.php；...]]>
            </summary>
                                    <updated>2026-10-09T12:11:41+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(二十)迭代器模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/183" />
            <id>https://baijunyao.com/183</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[迭代器模式允许用户通过特定的顺序访问容器中的数据；它将数据和顺序的实现分离；迭代器模式属于设计模式中的没落贵族；单独实现迭代器的场景很少了；比如 php 官方都提供了；这篇文章是为了设计模式而写设计模式； 结构Container： 容器接口 定义获取迭代器的方法 示例中指 ContainerInterface；ConcreteContainer： 实现 Cont...]]>
            </summary>
                                    <updated>2026-10-09T17:15:30+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十九)命令模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/182" />
            <id>https://baijunyao.com/182</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[命令模式就和名字一样；比较适合执行命令的场景；命令发送者只管调用具体命令类中的 execute() 方法；然后在具体命令类中设定命令接收者；可以消除命令发送者和命令接受者之间的耦合；并且可以方便的扩展新命令； 结构CommandInterface：命令抽象类；一般会暴露一个 execute 方法；Command：具体的命令类；设定接收者；Invoker：命令...]]>
            </summary>
                                    <updated>2026-10-09T16:05:04+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[解决打开excel报文件格式或文件扩展名无效的问题]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/181" />
            <id>https://baijunyao.com/181</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[今天有事没空写文章了；发个之前在使用 excel 的时候遇到的一个问题的解决办法；通过右键新建的 Microsoft Excel 工作表；打开后提示如下；Excel无法打开文件，因为文件格式或文件扩展名无效，。请确定文件未损坏，并且文件扩展名与文件格式匹配原因是之前同时安装了 office 和 wps ；后来把 wps 卸载了；伴随还可能出现的问题是 excel 文...]]>
            </summary>
                                    <updated>2026-10-09T13:55:44+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Mac从入门到痴迷系列之安装配置iterm2和oh my zsh]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/180" />
            <id>https://baijunyao.com/180</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[盼望着盼望着；IMac 来了；程序猿的幸(jia)福(ban)生活近了；是时候开个系列教程写一写 mac 使用和奇技淫巧了；有了此教程如果你还缺一台 32G的27寸的5k显示器IMac的话；正好我司缺少一个使用IMac的骚年；公司路由器级科学上网；正版office、phpstorm 等软件；朝9晚6双休无加班；技术氛围浓厚；没有根据手机壳改变主题颜色这种奇葩...]]>
            </summary>
                                    <updated>2026-10-09T02:20:33+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十八)模板方法模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/179" />
            <id>https://baijunyao.com/179</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[组合型的设计模式本质是使用组合替代继承；但是继承并非一无是处；只是因为大家容易滥用继承造成强耦合；作为面向对象编程的三大特性之一；继承还是很有价值的；比如说本篇文章要讲的模板方法模式；就是依赖于继承来实现； 结构抽象类： 定义操作中骨架；比如说执行顺序等；讲具体的执行内容延迟到子类；子类： 定义具体的执行内容； 示例Phone.php```p...]]>
            </summary>
                                    <updated>2026-10-09T17:14:15+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十七)代理模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/178" />
            <id>https://baijunyao.com/178</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[代理模式我们可能不熟悉；但是代理我们大多数程序猿都应该用过；比如说为了翻过一堵墙用谷歌查找资料；或者现实中购买商品我们也不是直接去工厂；而是通过一层层的代理商； 结构Subject：主题接口；定义真实主题和代理的公共方法；RealSubject：实现主题接口的真实主题；隐藏在代理之后；Proxy：实现主题接口并在内部引用了真实的主题； 示例Subje...]]>
            </summary>
                                    <updated>2026-10-09T12:24:50+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十六)享元模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/177" />
            <id>https://baijunyao.com/177</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[享元模式的目的是为了减少实例化大量的类时对内存的占用；减少是不可能平白无故就减少了的；主要是通过复用重复的类来实现；用现在比较热的词叫共享；就比如说现实生活中；我们有 99 件尺寸为 L 和 1 件 XXL 的不同款式的男装需要请多少个模特？回答 100 的同学肯定是家里有矿了；省钱的方案是只请2个模特就够了；其中 99 件 L 的需要一个 170cm 的模特；...]]>
            </summary>
                                    <updated>2026-10-09T14:20:25+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十五)外观模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/176" />
            <id>https://baijunyao.com/176</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[外观模式又叫门面模式；现在都是模块化开发了；开发中很多时候都是在使用各种扩展包；或者在外观模式中我们叫做子系统；外观模式的作用就是减少子系统之间的耦合；降低子系统的使用难度；我们举个栗子；实现一个加密文件内容的功能；这个功能分为两部分；1.  用于从文本文件中读取内容的 File 类2.  用于加密内容的 Encrypt 类如果我们每次都直接调用这两个类...]]>
            </summary>
                                    <updated>2026-10-09T19:09:41+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十四)安全组合模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/175" />
            <id>https://baijunyao.com/175</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章我们讲了透明组合模式；但是也说了透明组合模式中的叶子节点虽然有 add 方法；运行的时候却是抛出错误；这还有个安全的组合模式避免这种情况； 结构Component：只包含树枝节点和叶子节点公共的方法抽象类Composite：树枝节点 有子节点  示例中指 Dir 文件夹Leaf：叶子节点 没有子节点 示例中指 File 文件 示例只包含树枝节点和...]]>
            </summary>
                                    <updated>2026-10-09T09:14:02+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十三)透明组合模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/174" />
            <id>https://baijunyao.com/174</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[组合模式用来解决整体和部分可以一致对待的问题；比如说 `文件夹` 和其下的 `文件`；可以复制文件也可以复制整个文件夹；组合模式是将对象组合成树形结构以表示整体和部分的层次结构；可以方便的增加节点；组合模式分为两种；1. 透明模式2. 安全模式  我们先来说透明组合模式； 结构Component：包含树枝节点和叶子节点方法的抽象类Composite：...]]>
            </summary>
                                    <updated>2026-10-09T12:26:31+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[解决浏览器自动跳转到广告网站的神器]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/173" />
            <id>https://baijunyao.com/173</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[眼瞅着马上凌晨了；看来今天这篇设计模式文章是写不完了；那就推荐个软件吧；有段时间浏览器访问网站的时候；莫名其妙总会自动跳转到 smartpixel.xyz ；或者其他的一个网站；然后再经过几次重定向；最终会跳到各种不同的广告页面；下载各种杀毒软件或者优化工具都没有毛用；让我不胜其扰；最终找到了一款软件叫 AdwCleaner ;连安装都不需要下载后双...]]>
            </summary>
                                    <updated>2026-10-09T12:29:18+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十二)装饰模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/172" />
            <id>https://baijunyao.com/172</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[装饰模式是为已有的类动态添加更多功能而且不改动原来的类；主要是使用对象的关联关系替代继承；就如现实生活中的装饰或者配料一样；我们用吃喝举例；有普通的原味奶茶、手抓饼、烤冷面；还 vip 级的加布丁、加肠、加蛋；使用继承可以很简单的实现；但是经过前面几篇文章的洗礼；我们应该已经有组合优于继承的意识了；把配料独立出来； 结构Component：原...]]>
            </summary>
                                    <updated>2026-10-09T16:12:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[福利专区]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/171" />
            <id>https://baijunyao.com/171</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[我之前写  文章的时候；在最后放了 laravelchina 的付费教程推广；陆续还是有童鞋使用购买链接的；于是这写个福利专区；给程序猿们带来点优惠；我也能得到平台的一点点返佣； 阿里云优惠券要买阿里云服务器的童鞋可以先点我这个链接领优惠券后再买； 腾讯云新用户的优惠比较大；比如说满200元减150元；满2000元减1500元等；  ...]]>
            </summary>
                                    <updated>2026-10-09T19:52:21+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十一)桥接模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/170" />
            <id>https://baijunyao.com/170</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[桥接模式有一个常见的示例；有正方形、三角形、圆形等形状；还有红、黄、绿颜色；要实现形状和颜色的组合；how to do it?我这里画了张有点丑但很直观的图；最简单的方式就是通过继承；建12个类就行了；但是如果按照此图的形式来组织代码；当需要增加形状或者颜色的时候；比如说增加一个梯形；这时候就需要再增加3个颜色的梯形类；再如果增加一个蓝色；那...]]>
            </summary>
                                    <updated>2026-10-09T02:33:49+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(十)对象适配器模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/169" />
            <id>https://baijunyao.com/169</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[对象适配器和上篇的类适配器解决的问题一样；不过是适配器的另一种实现方式；示例中只有 Adapter 类有变化；Adaptee 和 Adapter 部分可以完全一样；咱直奔主题； 结构Adaptee：原本已经有的具体类；Target：目标接口；包含我们希望拥有的方法；Adapter：适配器类；适配 Adaptee 和 Target； 示例Adapt...]]>
            </summary>
                                    <updated>2026-10-09T09:12:50+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(九)类适配器模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/168" />
            <id>https://baijunyao.com/168</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[适配器其实很容易理解；因为现实中我们天天都在用；就比如说手机充电器；墙上的插孔装修完后就不在变了；手机买回来后我们也不会去改造它；如何让不变的插孔和不变的手机之间能连上充电；并且把220V转换为5V；这时候就需要电源适配器了；软件开发中也是同样的道理；在软件中适配器分为类适配器和对象适配器；我们先来讲类适配器； 结构Adaptee：原本已经有的具...]]>
            </summary>
                                    <updated>2026-10-09T02:15:41+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(八)原型模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/167" />
            <id>https://baijunyao.com/167</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[原型模式主要用于创建重复的对象；目的是使用 clone 对象来减少 new 对象的开销；如果某个场景需要多次实例化一个类；那就可以尝试用原型模式优化；在 php 中使用原型模式是很简单的；毕竟 php 是世界上最好的语言；我们只需要 clone 就行了；但是 clone 有一些问题；我们下面在代码中讲； 结构抽象的 __clone() 方法； 示...]]>
            </summary>
                                    <updated>2026-10-08T09:38:34+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(七)使用反射来优化抽象工厂模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/166" />
            <id>https://baijunyao.com/166</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[简单工厂的核心是 switch 或者 if 判断；但是简单工厂配合抽象工厂的时候；工厂里面的每个用来实例化产品的方法都需要 switch ；这就显的重复了；这时候我们可以使用反射来优化； 结构多个 interface 或者 abstract 产品父类；多个实现 interface 或者继承 abstract 的具体产品类；1个工厂；工厂类里面有多个方法分...]]>
            </summary>
                                    <updated>2026-10-09T20:02:28+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(六)使用简单工厂来优化抽象工厂模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/165" />
            <id>https://baijunyao.com/165</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[抽象工厂模式中每增加一类产品都要改动全部的工厂；这个工厂就是我们痛苦的源泉了；这时候可以使用简单工厂来优化抽象工厂； 结构多个 interface 或者 abstract 产品父类；多个实现 interface 或者继承 abstract 的具体产品类；1个工厂；工厂类里面有多个方法分别实例化不同的具体产品类； 示例产品部分跟抽象工厂是一样的；...]]>
            </summary>
                                    <updated>2026-10-09T23:17:53+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(五)抽象工厂模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/164" />
            <id>https://baijunyao.com/164</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[工厂方法有个问题是每个工厂只生产一个产品；导致存在大量的工厂；类比我们现实中的工厂；生产牙刷造了一个牙刷厂；生成鞋刷又造了一个鞋刷厂；但是其实牙刷和鞋刷都属于刷子；这就是产品族的概念了；它们同属于一个产品族；我们只造一个刷子厂同时生产一个产品族下的牙刷和鞋刷即可； 应用场景要实例话的对象充满不确定性可能会改变的时候；要创建的对象的数目和类型是未知的；...]]>
            </summary>
                                    <updated>2026-10-09T13:01:01+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[github定义项目语言]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/163" />
            <id>https://baijunyao.com/163</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[今个公司上线新功能加班了；回家的有点晚；设计模式系列今天这时间是不够写了；写篇 GitHub 的小技巧吧；因为很多时候开源的项目中会带前端资源；于是明明是世界上最好的语言的项目也会被标记为 JavaScript；比如说我这个 laravel 开发的项目就被误伤了；然鹅 GitHub 还不提供指定项目语言的功能；这让 PHPer 怎么忍；还好现在可以通过忽...]]>
            </summary>
                                    <updated>2026-10-09T19:05:43+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(四)工厂方法模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/162" />
            <id>https://baijunyao.com/162</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章我们讲过简单工厂是违反开放封闭原则的；而工厂方法模式就可以规避此问题；它需要定义工厂的接口；让工厂的子类来确定实例化哪一个具体的产品类；延迟了类的实例化； 应用场景要实例话的对象充满不确定性可能会改变的时候；要创建的对象的数目和类型是未知的； 结构1个 interface 或者 abstract 产品父类；多个实现 interface 或者继...]]>
            </summary>
                                    <updated>2026-10-09T12:47:59+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(三)简单工厂模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/161" />
            <id>https://baijunyao.com/161</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[本来这篇文章早就写完了；最先准备用 IOS 和 Android 举例；但是后来考虑到工厂方法和抽象工厂模式；又用小米和华为重写了一遍；这样可以方便的扩充低配版的红米和荣耀；但还是觉得讲的不清楚；最后采用了程杰老师《大话设计模式》书中的加减乘除举例；把 C 的代码转化并加上自己的理解写成 PHP 代码；在此感谢程杰老师；反复写了3种示例终于把这篇文章定稿了；...]]>
            </summary>
                                    <updated>2026-10-09T12:43:26+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[linux修改主机名]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/160" />
            <id>https://baijunyao.com/160</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[本来是在写设计模式文章的；想着把3中工厂模式一起写了；结果眼瞅着又到凌晨了；现在都该保温杯+枸杞养生了；还是别熬夜太晚了；但是如果不把我定的每周一篇文章的任务完成；还怎么实现我1个亿的小目标；于是赶紧凑了篇linux的小技巧；使用云主机的时候默认的主机名都比较长；阿里的尤为长；作为一个有强迫症的人来说；bash 这么长的地方都被这乱七八糟的字符占着很...]]>
            </summary>
                                    <updated>2026-10-09T12:24:51+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(二)单例模式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/159" />
            <id>https://baijunyao.com/159</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[应用场景：数据库连接这种比较耗费资源的操作；我们希望整个应用只实例化一个； 结构：4私1公；私有化构造方法： 防止使用 new 创建多个实例；私有化克隆方法： 防止 clone 多个实例；私有化重建方法： 防止反序列化私有化静态属性： 防止直接访问存储实例的属性 示例```php<?phpnamespace Baijunyao\Design...]]>
            </summary>
                                    <updated>2026-10-09T12:40:08+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php设计模式(一)序言]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/158" />
            <id>https://baijunyao.com/158</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[随着项目代码越来越庞大；维护的成本甚至比开发的成本还高；这时候最怕的一句话就是"需求又变了" ;为了应对各种变动；为了编写更高质量的代码；这就需要我们掌握设计模式；设计模式并不是被创造出来的；而是程序猿前辈们在开发过程中实验总结出来的；后来由GOF整理成《Design Patterns: Elements of Reusable ObjectOriented...]]>
            </summary>
                                    <updated>2026-10-09T19:09:25+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[laravel下elasticsearch+analysis-ik实现中文全文搜索]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/156" />
            <id>https://baijunyao.com/156</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[这篇文章需要建立在 elasticsearch 已经配置完成的前提下；如果还没安装 elasticsearch ；请先出门左转 ;新建一个项目演示；```bashlaravel new elasticsearch```创建一个文章表和文章模型；```bashphp artisan make:model Models/Article m```添加文章标...]]>
            </summary>
                                    <updated>2026-10-09T13:49:16+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[elasticsearch和analysis-ik的安装使用]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/155" />
            <id>https://baijunyao.com/155</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[主要介绍了两组全文分词方案；这套组合对于博客这类的小项目基本够用了；但是如果最求性能追求更强大的功能的话；那更优的选择就非 elasticsearch 莫属了；elasticsearch 需要 java8 以上；这里安装最新版的 java10 ；下载 jdk```bash wget nocookies nocheckcertificate header "Cooki...]]>
            </summary>
                                    <updated>2026-10-09T10:10:08+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[laravel下TNTSearch+jieba-php实现中文全文搜索]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/154" />
            <id>https://baijunyao.com/154</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章我们简单介绍了全文搜索的方案；；TNTSearch+jiebaphp这套组合可以在不依赖第三方的情况下实现中文全文搜索；特别的适合博客这种小项目；我新建一个项目用于演示；```bashlaravel new tntsearch```创建一个文章表和文章模型；```bashphp artisan make:model Models/Article m...]]>
            </summary>
                                    <updated>2026-10-09T19:16:52+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[全文搜索和中文分词]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/153" />
            <id>https://baijunyao.com/153</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[搜索基本上是网站或者 app 必备的功能了；可是同样是搜索；实现起来也都能是尼古拉斯凯奇和尼古拉斯赵四间的差距；一般的搜索是 sql 模糊查询级别的；比如说文章中有 php是世界上最好的语言 这句话;如果我们用 sql 的 like 的 % 模糊查询的话；搜索词必须要连贯切一字不差；可以搜 `like 'php是%'` 也可以搜 `like '%最好的语言'` 或者 `...]]>
            </summary>
                                    <updated>2026-10-09T22:28:39+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[开源项目系列之laravel-print以简洁的方式打印数据]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/152" />
            <id>https://baijunyao.com/152</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[laravel 中有个 `dump` 可以用来打印数据；但是也存在这很多的不便利；咱一条一条来吐槽哈；  撒气爱子：  1. 打印出来的数据默认是折叠的；我打印数据果断是要看具体内容的；然鹅这还需要我们手动层层点开；想想也是心累；2. 打印模型时展示了太多的属性；当我们一层一层的剥开它的心后；终于才能在 `attributes` 中找到我们想要的...]]>
            </summary>
                                    <updated>2026-10-09T19:09:35+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[修改git所有commit的用户名name和邮箱email]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/151" />
            <id>https://baijunyao.com/151</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[为了 github 的打卡活动  ;最早写的统计程序是抓取个人面板的贡献度 html 统计提交的次数；有些童鞋明明提交了代码；即便爱上了野马；也没有一点的绿；检查后发现原因是 git 设置的邮箱和用户名跟 github 网站的不一致；或者当我们换邮箱了；想把已经提交过的 commit 的邮箱和用户名改成新的；创建个测试项目 test 演示下；初始提交是使...]]>
            </summary>
                                    <updated>2026-10-09T14:07:05+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[北京十渡蹦极玻璃栈道漂流三日游]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/150" />
            <id>https://baijunyao.com/150</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[完了；开源分享精神已经影响到生活方面了；现在出去旅游被坑的经历都写成文章分享了；愿看文章的童鞋能避开这些坑；先说出行；我们一行6人选择的是坐火车；当然还有917公交和自驾可以选择；但是考虑到节假日的拥堵；还是火车比较稳定靠谱些；时间也比较合适；平时到十渡只有 6437 车次；节假日的时候会加开 K5296 车次；中午10:48到十渡；第一...]]>
            </summary>
                                    <updated>2026-10-09T17:47:41+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[宝塔搭建laravel所需要的lnmp环境linux-nginx-mysql-php-composer-git]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/149" />
            <id>https://baijunyao.com/149</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[为了让更多对服务器不熟悉的童鞋能使用上我的博客项目  ；当然应用于其他 php 项目同理；这里专门写一篇扫盲入门文章；看这篇文章的前提是你已经有一台服务器了；这里示例是使用 CentOS 7.4 哈；如果没有建议购买阿里云的或者是腾讯云的；这台服务器需要是未安装过 php 的环境；如果服务器已经被折腾过一番；建议备份下数据后重装下环境；阿里云和腾讯云都有重装...]]>
            </summary>
                                    <updated>2026-10-09T19:09:34+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[如何正确的下载安装使用别人的laravel项目？]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/148" />
            <id>https://baijunyao.com/148</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[laravel 作为最流行的 php 框架；自然少不了很多基于 laravel 开发的项目；不过很多项目因为还处于开发中；或者其他原因并没有写安装文档；举个反面栗子；比如说我的  ;这种一般就是面向 laravel 开发者的；需要有 laravel 的基础才能顺利的安装使用；还有很多已经比较成熟的项目；一般都是有比较详细的安装文档的；举个正面的栗子；...]]>
            </summary>
                                    <updated>2026-10-09T09:38:33+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[推荐一些免费开源好看的bootstrap后台模板]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/147" />
            <id>https://baijunyao.com/147</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[作为一只 php 程序猿；前(shen)端(mei)方面是大多人的弱项；还好有 bootstrap ;在离开了设计师的时候；让我等可以套套模板做出来点能看的东西；尤其是当我们要写个自己的博客或者其他项目的时候；基本也都是需要有个后台的；如果没有御用设计师的；这时候有一些压箱底的后台模板是必要的；这里就分享一些我到处搜刮来的免费开源的后台模板；我已经把项目链接...]]>
            </summary>
                                    <updated>2026-10-09T14:37:01+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[linux查看nginx、apache、php、php-fpm、mysql及配置项所在目录]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/146" />
            <id>https://baijunyao.com/146</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[很多时候会登录一台陌生的服务器；当需要调整环境的时候；那真是起步啥都没有；装备全靠打；两眼一抹黑到处找配置项；还好我这记的有一份笔记；可以先总结下；大都是先用 which 获取目录；然后再获取配置项位置；```bashwhich  mysql/usr/bin/mysql/usr/bin/mysql help | grep A1 'Default ...]]>
            </summary>
                                    <updated>2026-10-09T12:12:04+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php编辑word内容通过unoconv调用LibreOffice输出pdf打印]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/145" />
            <id>https://baijunyao.com/145</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[关于我把 word 和 pdf 来回整的故事；我有一段血泪史；惊天地；泣鬼神；痛彻心扉；穿越前世今生；今天我准备熬夜把它控诉一遍；之前有一些愚蠢的人类给了伟大的程序猿一份 word 文档；里面就一段文字；需求是能动态的替换其中的部分内容；然后转成 pdf 供用户下载；这简单啊；还要啥 word 文档啊；直接手动把内容复制出来；放好占位符用 php...]]>
            </summary>
                                    <updated>2026-10-09T17:59:37+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[laravel使用腾讯企业邮箱发邮件报错501]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/144" />
            <id>https://baijunyao.com/144</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[今天要说一个 laravel 配置文件坑爹的地方；默认 .env.example 文件中；关于邮件 email 的配置就这几个；作为一个严格按照 laravel 示例填写配置的良民；本来心情愉悦的吃着火锅唱着歌出了城；使用了腾讯企业邮箱的项目发的邮件忽然就被劫了；错误；Expected response code 250 but got code "501", with message "501 mail from address must be same as authorization user]]>
            </summary>
                                    <updated>2026-10-09T00:01:31+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(十二)视图View]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/143" />
            <id>https://baijunyao.com/143</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[因为下周不在国内；为了避免让童鞋们再等太久的更新；于是这个周末2天全用来构思写文章了；一鼓作气；今个把视图V也讲了；先来创建一个 ViewController ;```bashphp artisan make:controller ViewController resource```创建路由；```phpRoute::prefix('view')g...]]>
            </summary>
                                    <updated>2026-10-09T23:05:46+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(十一)模型Eloquent ORM]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/142" />
            <id>https://baijunyao.com/142</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[花了一篇文章的时间我们终于学会了使用 DB 查询数据；燃鹅有件悲伤的事情我不知当讲不当讲；咱以后是基本不使用 DB 的方式查询数据；因为我们有更强大的`模型` Model；模型 ORM 就是把数据库的表映射到模型类；既然是用面向对象的方式来操作数据库；那面向对象的优点自然就继承了；模型可以方便的复用；laravel 的 Model 有一个很大的优点是使用了全球最...]]>
            </summary>
                                    <updated>2026-10-09T09:59:49+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(十)集合Collections]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/141" />
            <id>https://baijunyao.com/141</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[我们从数据库查出来了数据；但是我们发现它并不是我们以为的数组形式；这就要讲讲 collection 对象了；laravel 中 collection 是比数组更高等公民般的存在；我们可以像对待数组一样的来操作 collection；而且它还能以链式操作的方式便捷易读的处理数据；所有文字都苍白；所有语言都无力；咱直接举几筐栗子更直观的来讲解；我们定义一个数组；...]]>
            </summary>
                                    <updated>2026-10-09T20:49:59+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(九)数据库查询Query Builder]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/140" />
            <id>https://baijunyao.com/140</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[到这 articles 表已经有一些数据了；我们可以讲查询数据的方式了；接着上篇文章加路由和控制器方法；```phpRoute::prefix('database')group(function () {    Route::get('insert', 'DatabaseController@insert');    Route::get('get', 'DatabaseC...]]>
            </summary>
                                    <updated>2026-10-09T20:49:21+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(八)数据库填充Seeding]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/139" />
            <id>https://baijunyao.com/139</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[数据表有了；咱可以进行一些数据库操作了；先创建演示的控制器；```bashphp artisan make:controller DatabaseController```创建路由;```phpRoute::prefix('database')group(function () {    Route::get('insert', 'DatabaseControl...]]>
            </summary>
                                    <updated>2026-10-09T20:49:15+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(七)表迁移Migrations]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/138" />
            <id>https://baijunyao.com/138</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[看到这的时候我默认你已经配置好数据库了；我们开始对数据库操作了；但是前提是我们得有表啊；说到数据库说到表；做开发的小伙伴们肯定理解到过其中的苦于泪；还是环境的问题；每个同事都有一个自己的本地环境；还有测试环境、生产环境；团队合作的时候为了避免代码冲突；以及方便记录修改历史和回退；我们有版本控制比如说 git；但是数据库怎么搞呢？在远古时代；在中小...]]>
            </summary>
                                    <updated>2026-10-09T20:49:08+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(六)配置项Config]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/137" />
            <id>https://baijunyao.com/137</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[路由和控制器我们都轻轻撩了下了；没有数据库怎么行；讲数据库前我们还得讲下配置项；laravel 的配置项是在根目录下的 /config 目录中；还有一个是根目录下的 .env 文件；为啥要有2个地方用于写配置项呢？我们打开看下很快就能明白了；打开 .env 我们就随便看两眼；第一行就是一个 APP_NAME ；我们再打开 config/app.php ;...]]>
            </summary>
                                    <updated>2026-10-09T20:49:02+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(五)路由控制器关联]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/136" />
            <id>https://baijunyao.com/136</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[路由咱会创建了；控制器也有了；接下来要搞的就是把两者关联起来了； 我们讲过 Route 的 get 或者 post 方法第一个参数就是我们要定义的路由；就是我们在地址栏请求的那段url；第二个参数可以是一个闭包函数；里面写请求定义的路由时执行的内容；上篇文章我们说过；如果把代码都放这个闭包函数中是臃肿且难以维护的；所以就需要使用控制器了；很显然；控制器就...]]>
            </summary>
                                    <updated>2026-10-09T20:48:54+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的Laravel初级教程(四)控制器Controller]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/135" />
            <id>https://baijunyao.com/135</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[路由可以分发请求；路由中还可以引入 html 页面；我们可以在 route/web.php 中搞定一切了；但是如果把业务逻辑都写入到路由中；那路由将庞大的难以维护；于是控制器就有了很明显的存在价值；把业务逻辑写在控制器中；路由只负责转发请求到指定的控制器即可；ok；那我们开始创建控制器；啥？你要手动创建文件？no；既然用上了现代话框架；必须得用有点逼...]]>
            </summary>
                                    <updated>2026-10-09T19:07:53+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的laravel初级教程(三)路由Route]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/134" />
            <id>https://baijunyao.com/134</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[接着我们来认识认识上篇文章没有提到的  route/web.php；先来了解下路由的概念；在网络成为吃住一样的基本需求的今天；断开了网络就像断开了与世界的联系的感觉；对于现实中的路由我们应该是不陌生的；最起码了解 wifi 吧；你家里只有一根网线；网线上接着 wifi 路由器；多部手机和电脑就可以通过 wifi 上网了；路由器起到了一个分发的作用；lar...]]>
            </summary>
                                    <updated>2026-10-09T19:18:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的laravel初级教程(二)安装使用]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/133" />
            <id>https://baijunyao.com/133</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[看这篇文章的时候；你需要安装好 composer ;配置好本地环境；环境搞定后；咱来说laravel的下载；这里先解决一些童鞋可能有的疑惑；laravel的版本更新的那么快；从5.1到现在的5.5了；我应该下载那个学习呢？新出的版本的文档资料丰富么？作为一个过来人；可以大胆的说；学习最新版本没问题；除了一些版本特别提示的改动；laravel5.的...]]>
            </summary>
                                    <updated>2026-10-09T19:18:25+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[本地开发自定义域名后缀]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/132" />
            <id>https://baijunyao.com/132</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[本来要写《最适合入门的laravel入门教程(二)》文章的；结果发现我之前讲配置环境的示例中；自定义域名使用的是.dev后缀；比如我的项目中定义的域名都是；laravelbjyblog.dev ;laravelbjyadmin.dev；其实更早之前我在本地都是自定义 .com 域名的；但是经常出现各种问题；所以后来我就改用 .dev 了；然而比较坑爹的是；g...]]>
            </summary>
                                    <updated>2026-10-09T10:01:53+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[最适合入门的laravel初级教程(一)序言]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/131" />
            <id>https://baijunyao.com/131</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[曾经要跟 thinkphp 白头到老；没想到它升了个级就把我等抛弃了；痛定思痛；重新审视了一遍 php 框架；php是世界上最好的语言；这个没有疑问吧；如果有；那绝对是个异教徒；这是要被拖出去烧死的；信仰的问题神圣不可侵犯；那最好的语言中最流行的框架是哪个呢？咱不说最好的框架啊；因为好与不好这个每个人有不同的认知；咱就谈最流行；当我在全球最大的同...]]>
            </summary>
                                    <updated>2026-10-09T19:44:46+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[微信小程序上传silk格式录音并转码为mp3]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/130" />
            <id>https://baijunyao.com/130</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[单纯限制了我对小程序坑爹的想象最近写录音功能时候又验证了一次；其中的辛酸泪；不搞过是不会懂的；为了让后面的童鞋少走点弯路；于是就有了这篇文章；先来说下我们的目标；我们要让用户录音；然后把录音上传到服务器；管理员可以在后台听录音；以及进一步对录音处理；小程序是开放了录音api的；这个翻开发文档是可以找到的；同时还有一个上传文件的接口；...]]>
            </summary>
                                    <updated>2026-10-09T12:35:32+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[开源项目系列之laravel-bjyblog博客]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/129" />
            <id>https://baijunyao.com/129</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[学习框架最好的办法就是用它；毕竟百闻不如一run；作为一个在技术上不折腾不舒服斯基的程序猿；我已经全面的转向 laravel；那么之前用 thinkphp 开发的博客  也有必要升级一下了；于是就有了本篇文章介绍的项目 换laravel真的需要勇气去面对六眼飞鱼；中间虽然经历了不少的问题；但是我表示不后悔；因为博客的整个质量上升了一个层次；经过了半年多的...]]>
            </summary>
                                    <updated>2026-10-09T09:25:42+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[读书学编程《Modern PHP》]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/128" />
            <id>https://baijunyao.com/128</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[推荐指数：★★★★★价格：京东 30.8 元网上有成千上万的 php 教程；其中大多数已经过时了；展示的是陈旧的实践方式；可是谷歌的搜索引擎给出的仍然是这些教程；过时的信息对马虎的php程序猿是危险的；上面这段引用书中的话就是这本书要解决的现状了；《Modern PHP》可以说是我看过的最现代化的 php 书了；当大多 php 的书籍还在围绕着文档的时候...]]>
            </summary>
                                    <updated>2026-10-09T14:28:04+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[编程书籍推荐之关于通过读书学习编程]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/127" />
            <id>https://baijunyao.com/127</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[实践是学习编程最好的方式；比较百闻不如一 run 嘛；除了动手另一个我认为有效的学习方式就是看书了；虽然网上各种教程类的文章很丰富；但是大多比较零散；这时候书的特点就比较明显了；书都是比较系统的讲解知识；理论性比较强；我住的地方离公司有1个多小时的通勤时间；这时间都浪费掉的话想想也是笔巨大的损失；好在北京的地铁还算平稳；几年来我也看了不少的书了；...]]>
            </summary>
                                    <updated>2026-10-09T22:29:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[震惊！github打卡薪资竟然可以翻倍]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/126" />
            <id>https://baijunyao.com/126</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[听说uc震惊部正在招人；我写个标题看能不能通过面试；哈哈哈哈哈；好了请忽略标题的震惊成分和上面这几句话；咱们进入本文的正题；事情的起源呢是这个样子的；我喜欢分享大家都是知道的；这几年一直是持续的在贡献开源项目；除非有无法抗拒的情况；比如说我这人生中第一次输液直接输到了凌晨1点多；导致了我这提交中断的；我每天下班回去后我都会抽出时间；多多少少的提交...]]>
            </summary>
                                    <updated>2026-10-08T22:06:58+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(十)调试面板]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/125" />
            <id>https://baijunyao.com/125</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章讲过打印数据的函数；but 打印函数有个弊端是会破坏打印页面的 html 结构；在不使用 IDE 编辑器断点调试的情况；有什么方案既能打印数据还不破坏页面结构呢？使用 thinkphp 的童鞋肯定对下面这个小图标很熟悉；点击打开是会显示当前页面的一些信息；就像 chrome 或者 firefox 的 F12 开发者调试工具一样；比较有用的是当前页面的...]]>
            </summary>
                                    <updated>2026-10-09T13:27:05+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[创建QQ群及捐赠渠道]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/124" />
            <id>https://baijunyao.com/124</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[经常有童鞋们留言；呼吁我建个QQ群供大家交流；还有一些问我QQ号的；想加QQ详细询问一些问题；也不乏亲们认为我的文章为他们提供了帮助；希望能放出个二维码捐赠赞赏的；我一直也在关注着大家的需求想法；但是作为一个完美主义者外加处女座强迫症晚期患者；建群了就要对它负责必须要把它维护好了；然而我工作又比较忙；我同样要为我的BOSS负责；工作的时间我是不处理个...]]>
            </summary>
                                    <updated>2026-10-09T19:51:53+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(九)打印数据]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/123" />
            <id>https://baijunyao.com/123</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[php这种脚本语言调试起来是很方便的；大多时候看报错打印一下数据就知道问题所在了；php 自带了 `print` 和 `var_dump` 两个打印函数；但是打印出来的样式实在让人目瞪狗呆；thinkphp 框架自带一个 `dump` 函数；看过上篇文章的童鞋会懂我的；除非是需要查看数据的类型等更详细数据；否则平常开发我是不用框架的打印函数；laravel 也是有一...]]>
            </summary>
                                    <updated>2026-10-09T13:55:19+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(八)自定义函数和类]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/122" />
            <id>https://baijunyao.com/122</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[我有一个 p 函数是用来打印数据的；    不管走到哪个项目我都会带上她；虽然框架一般也都自带打印函数；但是并不一定符合我们的习惯或要求；这时候就需要自定义函数了；开发中定义一些常用的函数可以大大的提升我们的效率；避免重复代码；thinkphp 的公共函数是放在 Application/Common/Common/function.php 目录下的；然鹅 lar...]]>
            </summary>
                                    <updated>2026-10-09T23:00:27+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(七)视图]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/121" />
            <id>https://baijunyao.com/121</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[相对于 MC；laravel的视图V可能是最容易上手的；但是如果想用好；那也是我们 phper 最难掌握的部分；因为它涉及到了领域叫前端；laravel 和 node.js 有着非常紧密的结合；这也正是 laravel 强大的原因之一；它不仅仅是一个 php 框架；它更是一个全栈框架；不熟悉 node.js 的童鞋很难发挥出它巨大的威力；不过没关系；它的...]]>
            </summary>
                                    <updated>2026-10-09T01:36:49+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(六)模型]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/120" />
            <id>https://baijunyao.com/120</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[走过了路由；翻过了控制器；这就到了模型了；laravel的数据库部分有一个很大的优点是使用了全球最先进的Eloquent ORM；她让数据库的操作变的简单安全且无懈可击；laravel的数据库部分有一个很大的缺点是使用了全球最先进的Eloquent ORM；她让数据库的操作变的缓慢笨重且无药可救；laravel 虽然也有一些东西被人诟病；比如说路由；但是人家...]]>
            </summary>
                                    <updated>2026-10-09T09:30:44+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(五)控制器]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/119" />
            <id>https://baijunyao.com/119</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[最近有事耽搁了一段时间；以至于让这篇文章迟到了一段时间；上上篇文章我就简单的聊了下目录；下面就有请控制器上场了； 在使用thinkphp创建控制器的时候；我们都是手动创建一个php文件；然后再手动写控制器名继承；这种重复劳动对我这懒人来说是相当折磨的；so；为了偷懒；我当年还专门研究怎么使用编辑器快速生成代码；使用 sublime 的童鞋们可以瞅两眼...]]>
            </summary>
                                    <updated>2026-10-09T16:22:18+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(四)路由]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/118" />
            <id>https://baijunyao.com/118</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[文章开始前先说个前提；这个系列的文章我都会把控制器按模块划分了；示例都是在模块的基础上讲解的；关于模块先参考上篇文章；正文开始；如果我们想访问 Admin 模块下的 IndexController 控制器的 index 方法；在 thinkphp 中是不需要手动定义的；这根本不算是一个问题；直接访问 `https://baijunyao.com/Admin/...]]>
            </summary>
                                    <updated>2026-10-09T09:21:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程 (三) 目录结构]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/117" />
            <id>https://baijunyao.com/117</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[我之前写过详细的thinkphp目录设计总结；laravel的话；换laravel真的需要勇气；去面对六眼飞鱼；目录结构首先就够让新手懵一会了；这么多目录可怎么下手；既然是面向thinkphp开发者；我这里准备先以tp的方式讲；```phplaravelbjyadmin├─app│  ├─Console  │  ├─Exceptions  │...]]>
            </summary>
                                    <updated>2026-10-09T15:54:20+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(二)环境及安装]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/116" />
            <id>https://baijunyao.com/116</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[thinkphp 下载安装是相当之简单的；直接从官网下载安装包；解压扔到 php 环境中就跑起来了；如果你还是抱着这样的心态来搞laravel；那么它会让你知道什么是残忍；首先laravel推荐的开发环境是Homestead;Homestead是vagrant的一个盒子；vagrant又是个什么鬼？哦骚瑞；这个具体我暂时不打算讲；给喜欢折腾的留作课后作业自己...]]>
            </summary>
                                    <updated>2026-10-09T22:59:36+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[写给thinkphp开发者的laravel系列教程(一)序言]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/115" />
            <id>https://baijunyao.com/115</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[终于；终于；终于；开始正式写 laravel 系列了；本系列教程主要面向的是多少懂点 thinkphp3.X 的开发者们；我把我从tp3转到laravel的历程转成一篇篇的文章教程；愿这一系列的文章；能成为童鞋们踏入laravel的引路人；如果还没下定决定要使用laravel；那么我上来就是一个连接；不是别人说好我也跟着说好的；而是我实实在在的使用过后；...]]>
            </summary>
                                    <updated>2026-10-08T04:10:49+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[phpstudy配置虚拟主机及开启扩展]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/114" />
            <id>https://baijunyao.com/114</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[当我开始准备 laravel 系列的第一篇文章的时候；我忽然发现；我还得再写一篇文章做铺垫；在 windows 系统下开发 php；早些年我是用 wampserver2；后来因为 wamp2 的 php 是5.x版本；而我为了用 php 7；所以我就转投 xmapp 又用了一段时间；再后来 wamp3 有了 php7；我又回归了 wamp；如果喜欢用 ...]]>
            </summary>
                                    <updated>2026-10-09T08:32:21+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[composer的初级使用]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/113" />
            <id>https://baijunyao.com/113</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[补上一篇文章的坑；要使用composer首先是要安装它；mac或者linux系统直接执行下面的命令；php r "copy('https://getcomposer.org/installer', 'composersetup.php');"composer的初步安装使用功能]]>
            </summary>
                                    <updated>2026-10-09T10:56:45+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[别再到处搜php类扩展包了；进入composer的时代吧]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/112" />
            <id>https://baijunyao.com/112</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[这是一篇为下周的文章做铺垫的文章；本来是要写另一篇文章的；结果发现；我似乎需要先把composer讲解下；抛开需求场景讲技术的都是耍流氓；那么咱就先来讲讲composer是个什么东西；它解决了什么样的需求;在远古时代；我们开发的时候；除了面向oop编程；更多的都是面向搜索引擎编程；举个栗子；比如说咱想实现个验证码功能；如果不重复造轮子...]]>
            </summary>
                                    <updated>2026-10-09T09:18:59+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[mysql导出指定字段或指定数据到文件中]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/111" />
            <id>https://baijunyao.com/111</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[使用mysqldump把mysql数据库的数据导出到文件中还是挺方便的；比如说要导出baijunyao数据库；```bash// mysqldump u用户名 p 数据库名  导出的文件名mysqldump uroot p baijunyao  baijunyao.sql```导出baijunyao数据库中的users表；```bashmysqldump uroot...]]>
            </summary>
                                    <updated>2026-10-09T09:30:36+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[git同时push推送到github、gitee等多个平台]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/110" />
            <id>https://baijunyao.com/110</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[基于鸡蛋不能放在一个篮子的原则；为了多地备份容灾；推git也是可以推送到不同的平台的；再因为你懂得的原因；github时而有不靠谱的情况；而且速度奇慢；偶尔有事需要下载下项目；那个急啊；所以我的开源项目都是同时推送到github和码云的；github:码云:ok；下面来讲怎么同时推送；以我的新博客为例：添加github：```bashgi...]]>
            </summary>
                                    <updated>2026-10-09T13:48:58+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[关于thinkphp和laravel框架的选择]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/109" />
            <id>https://baijunyao.com/109</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[熟悉白俊遥博客的童鞋们都知道；我是thinkphp框架身体力行的推广者；写了不少tp相关的教程文章；再熟悉点白俊遥博客的童鞋们也知道了；现在我已经转向了laravel的怀抱；我要听你的解释；你不要说话；首先必须感谢tp；作为国内比较靠谱的框架；为我等程序猿带来了不少的便利；如果是刚学php的新手；那还是可以试着拿tp3来写东西；感受下使用原生php开...]]>
            </summary>
                                    <updated>2026-10-09T14:38:12+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[从thinkphp-bjyblog迁移到laravel-bjyblog]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/108" />
            <id>https://baijunyao.com/108</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[就是在今天；额；不对；已经过了12点了；好吧；重来；就是在昨天；也没选啥良成吉日；脑子一热；就把白俊遥博客从thinkphpbjyblog迁移到laravelbjyblog了；thinkphpbjyblog是我用thinkphp写的一套博客程序：laravelbjyblog是我用laravel写一套博客程序：在技术上我就是不折腾不舒服斯基；于是各种凑时间用l...]]>
            </summary>
                                    <updated>2026-10-09T14:47:07+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[推荐开发工具系列之 --科学上网]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/107" />
            <id>https://baijunyao.com/107</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在我大天朝；用卖假药的搜索个技术文档；那结果简直令人绝望；于是乎；科学上网的能力绝对是可以作为衡量一只程序猿的技术水平之一；那么；拥有一把好的梯子就相当之重要了；以前；我用过不少科学上网软件；要么是不稳定；更甚者的直接跑路不干了；这里点名批评下那个叫红杏的浏览器科学上网插件；当年我充完钱就赶上它故障了；这一故障；就至今没修好；要么是墨墨迹迹的启动速度；登录账户密码；选择节点；等终于翻出去后；我本来要搜索的问题]]>
            </summary>
                                    <updated>2026-10-09T09:36:09+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之苹果AppStore内购付款的服务器端php验证]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/106" />
            <id>https://baijunyao.com/106</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[如果要演一部霸道总裁的剧；我想这主角必须非苹果莫属了；苹果的霸道实在是出了名的；这不；如果是非实物的交易；现在你不给苹果交个过路费；那都是立马被审核处死的节奏；这里要讲的就是AppStore内购的服务器端验证；好了；以上仅为吐槽；正题；作为服务器端；在app中支付的过程那是由IOS程序猿完成的；IOS会把支付凭证发给我们；我等php后端需要做的就是对支付结果的验证；写着是thinkphp整合系列；]]>
            </summary>
                                    <updated>2026-10-09T08:00:29+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[开源项目系列之thinkphp-bjyadmin各种功能扩展]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/105" />
            <id>https://baijunyao.com/105</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[新年第一天；是该写篇博客来开心下了；继续开源系列 thinkphp-bjyadmin ；github：https://github.com/baijunyao/thinkphp-bjyadmin这个项目秉承扩展而不改动的原则；围绕着thinkphp进行各种功能的扩展；把实际开发场景中各种解决方案整合入thinkphp；大都以配置项加函数的形式给了示例；并写了大量的文章进行详细的讲解；让童鞋们简单看]]>
            </summary>
                                    <updated>2026-10-09T09:08:02+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[开源项目系列之thinkphp-bjyblog博客]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/104" />
            <id>https://baijunyao.com/104</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[经常有童鞋们询问关于我的开源博客thinkphp-bjyblog的问题；我忽然意识到；除了git上面的README.md；我竟然都没正儿八经的认真给它写个使用说明书；时间过的很快随着越来越多的筒子们在使用；我想我必须要写篇文章了；此博客前台和后台的所有页面都是我纯手工码出来的；前台使用的bootstrap布的响应式页面；喜欢的话可以拿去随意使用折腾；不用担心版权问题；项目链接：https://gi]]>
            </summary>
                                    <updated>2026-10-09T21:50:36+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之gulp实现前端自动化]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/103" />
            <id>https://baijunyao.com/103</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[虽然我等叫php程序猿；但是不可避免的是要跟html打交道的；而且php这么容易开发web；难道我们不想自己随手写点什么？laravel这类比较前卫的框架；早就深度集成了很多前端的东西；现在；就让我们手动为thinkphp也插上gulp的翅膀吧；第一步；在自己的thinkphp项目根目录中创建 package.json;{  "name": &]]>
            </summary>
                                    <updated>2026-10-09T02:21:15+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[前端自动化系列(六)之gulp自动化构建工具]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/102" />
            <id>https://baijunyao.com/102</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[如果认真看了前面5篇系列文章；那肯定会产生一个疑问；难道写个页面需要敲这么多乱七八糟的命令行；这也没怎么提升效率啊；没错；所以；就有了自动化构建工具；自动化构建工具中使用比较广泛的有两种；grunt 和 gulp；它们的作用就是用配置项文件的方式替代各式各样的命令行；来完成测试、检查、合并、压缩、格式化、浏览器自动刷新等等；在某个窗外满是雾霾的周末；我是先研究了下grunt；然后；我承认；面对gr]]>
            </summary>
                                    <updated>2026-10-09T09:06:49+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[前端自动化系列(五)之Browsersync自动刷新]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/101" />
            <id>https://baijunyao.com/101</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[没错；这个系列我还没写完；这真是一个超大写的尴尬；最近实在太忙了；经常都是1点左右才睡；以至于博客停更了一个月；现在终于抽出了点时间来填坑了；上古时代；我开发的姿势是这样的；写代码—>  ctrl/command+s 保存 —> ctrl/command+tab 切换到浏览器—> F5刷新；然后如此循环；如果是调移动端的页面，真机测试；还要离开键盘拿起手机刷新；于是；为]]>
            </summary>
                                    <updated>2026-10-09T17:01:31+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[前端自动化系列(四)之jade预编译html]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/97" />
            <id>https://baijunyao.com/97</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[刚开始写这篇文章的时候；其实我是拒绝的；因为在 前端自动化系列(二)之less、scss、sass、stylus css预处理器 中；我已经表明了我的态度；我是不喜欢那种靠缩进来提现等级层次感的语法；但是考虑到css、js都有了现代化的写法；单单把html落下不好；或者有童鞋喜欢呢？于是；我还是决定讲一下 Jade ；老规矩；先安装；cnpm install -g j]]>
            </summary>
                                    <updated>2026-10-09T13:13:44+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[前端自动化系列(三)之Babel、ES6、JavaScript转码]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/96" />
            <id>https://baijunyao.com/96</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[连css这种标记型语言都开始进化了；那么在前端飞速发展的今天；那门用一周时间设计出来的JavaScript；也必须得不断的升级；以适应新的时代；js最新的版本是ECMAScript 2015；或者大家更普遍的称其为ES6；ES6有大量的新特性非常值得我们学习；举一筐栗子；]]>
            </summary>
                                    <updated>2026-10-09T09:04:07+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[前端自动化系列(二)之less、scss、sass、stylus css预处理器]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/95" />
            <id>https://baijunyao.com/95</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[相信搞web开发的童鞋们；多多少少都能写点css；毕竟这玩意压根也称不上编程；都是些固定写法死记硬背用就成了；写css基本上都是体力活；当然；今个不是要来讲css的；而是要带领还在刀耕火种的使用css的童鞋们；进入css预处理器时代；先来段css代码；为了直观这里直接以元素名命名class了；.body {  background: #000;&nb]]>
            </summary>
                                    <updated>2026-10-09T09:28:30+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[插播一篇windows下git bash命令行使用的文章]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/94" />
            <id>https://baijunyao.com/94</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[本来我 前端自动化系列(二)  文章已经写了一半了；什么？这都5天过去了；一篇文章你才写了一半？好吧；最近确实忙；一篇文章都是要凑几天才能写完的；回归正题；上篇文章写道是在命令行下操作的；于是有童鞋就问我windows下命令行的操作的；；；但是windows的cmd实在不敢恭维；得嘞；既然这是这个系列是扫盲文章；又都是要在命令行下操作的；那就把扫盲进行到底；这里来安利 git bash]]>
            </summary>
                                    <updated>2026-10-09T23:21:47+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[前端自动化系列(一)之node.js、npm、cnpm]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/93" />
            <id>https://baijunyao.com/93</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[本来只是想写一篇 thinkphp整合系列之使用gulp实现前端自动化；但是发现这个必须从头展开来写个系列；那么这篇文章主要是为了扫盲的；旨在带领还在用原始开发方式的筒子们开始走进现代的前端；专业前端可以跳过了；node.js近年来火的一塌糊涂；对于node.js的介绍；这里也不想到处搬网上的介绍了；这里；我简单的说几句；别怕；真的是只说几句；node.js是一个运行在服务器端的JavaScrip]]>
            </summary>
                                    <updated>2026-10-09T15:50:35+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[升级macOS Sierra 10.12 关机慢]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/92" />
            <id>https://baijunyao.com/92</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[作为一个喜欢吃螃蟹的程序猿；在 macOS Sierra 发布的当天就果断更新了；当然这次更新对于我等没有 iWatch 的屌丝来说；在电脑上调戏一番 siri 后；也就没有什么特别好玩的了；直到了昨天；莫名的抽风重启了下电脑；没错；我就是那种整天不关电脑；合上盖就走人的那种；症状呢；点了关机或者重启后；屏幕已经黑了；但是键盘灯还一直亮着；根据人品持续5分钟到半个小时左右；然后终于Duang的一声]]>
            </summary>
                                    <updated>2026-10-09T13:55:29+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp安装引导程序]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/91" />
            <id>https://baijunyao.com/91</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[如果还不知道什么是安装引导的；那先把项目下载下来；放到php环境下跑起来就know了；示例项目：https://github.com/baijunyao/thinkphp-bjyadmin我们写程序为什么需要有个安装引导？1 . 有安装引导；就不需要我们再长篇大论的讲解怎么导入sql文件；怎么更改配置项了；2 . 可以写一些版权或者使用说明；3 . 可以先对环境做一些检测；这里为thinkphp纯]]>
            </summary>
                                    <updated>2026-10-09T13:18:11+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp把模板文件View独立出来]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/90" />
            <id>https://baijunyao.com/90</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[thinkphp默认的View都是在/Application各个模块下的；css、js之类的资源文件是放在/Public目录下；大致是这个样子的；thinkphp├─Application 项目逻辑目录│  ├─Common 公共模块│  │  ├─...│  ├─Home ]]>
            </summary>
                                    <updated>2026-10-09T09:02:40+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[对照着jquery来学vue.js系列之解决闪烁的问题]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/89" />
            <id>https://baijunyao.com/89</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[闪烁是开发中会遇到一个很严重；但是如果不翻个几遍文档；甚至翻几遍文档都不一定会找到解决之法的问题；闪烁是个什么鬼？因为vue显示数据是这种样式的{{ page }}如果页面还没加载完；那么会把这样的源代码展示出来；体验非常之不友好；先来个链接感受下：示例链接解决的方法直接上代码了；示例项目：http://git.oschina.net/shuaibai123/demo/tree/master/vu]]>
            </summary>
                                    <updated>2026-10-08T20:38:44+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[对照着jquery来学vue.js系列之配合thinkphp下拉获取分页数据]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/88" />
            <id>https://baijunyao.com/88</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章介绍了vue.js如何ajax获取数据；接着不可避免就遇到的是；如何进行数据分页呢？这里以thinkphp为示例讲解；其他场景性质一样；示例项目：http://git.oschina.net/shuaibai123/thinkphp-bjyadmin示例链接：localhost/Home/Vue/web_page项目中有张表province_city_area；里面是全国的3000多个城市]]>
            </summary>
                                    <updated>2026-10-09T21:47:58+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[对照着jquery来学vue.js系列之ajax获取遍历数据]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/87" />
            <id>https://baijunyao.com/87</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[从本文开始；后续将推出一系列文章；旨在先让童鞋们用vue完成以前用jquery来实现的功能；还没被安利过vue的好的先出门右转阅读上一篇文章； 对照着jquery来学vue.js系列之安利篇 还不知道vue的基本用法的先直奔官网：vue官方网站需要说明的是；这系列的文章并不是为了详细讲解官方的文档；主要是写官网上并没有特别明确的说但新手会困惑的一些问题；因此；基本用法这里就不再赘述了；用]]>
            </summary>
                                    <updated>2026-10-09T11:28:18+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[对照着jquery来学vue.js系列之安利篇]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/86" />
            <id>https://baijunyao.com/86</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[这是一篇没有代码的没有广告费的纯广告文章；但是对一些童鞋们来说会胜似干货；因为这篇博客将提前影响一些同志的革命路线；先来简述下我们的场景；我们有着追求大而全的领导；产品目标要庞大；功能要全面；什么iOS、Android、pc、微信页面只要市场上有的通通都到碗里来；于是乎我们就面临这样一种纠结的情况；首先我们要为app写一套返回json格式的数据接口；然后我们又要写一套同样数据的展示html的移动页]]>
            </summary>
                                    <updated>2026-10-09T16:28:11+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php中钩子(hook)的应用示例demo]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/85" />
            <id>https://baijunyao.com/85</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[我们先来回顾下原本的开发流程；产品汪搞出了一堆需求；当用户注册成功后需要发送短信、发送邮件等等；然后聪明机智勇敢的程序猿们就一扑而上；把这些需求转换成代码扔在用 户注册成功 和 跳转到首页 之间；没有什么能够阻挡；充满创造力的猿们；]]>
            </summary>
                                    <updated>2026-10-09T14:51:33+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[路遥了就真的知道马俐么？]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/83" />
            <id>https://baijunyao.com/83</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[电影中最深刻的一段台词； "陆垚磨叽的差不多了"； "这么些年了要成早成了"； "别总缠着我们家马俐行不行"； "还有你马俐"； "总逗一男的咳嗽不好"； "尤其是像陆垚这样的"； "给点阳光就灿烂的主"； "当明确这关系无法更进一步的时候"；"]]>
            </summary>
                                    <updated>2026-10-09T21:24:55+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之phpexcel导入excel数据]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/82" />
            <id>https://baijunyao.com/82</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[之前写过 thinkphp整合系列之phpexcel生成生成excel文件 和  php生成csv格式的excel表格 两种生成excel的方法应 简简单单 同学的评论需求；这里熬夜加班加点写出一个phpexcel导入数据的方法；一：导入phpexcel/ThinkPHP/Library/Vendor/PHPExcel二：导入excel的函数/** * 导入exc]]>
            </summary>
                                    <updated>2026-10-09T22:23:05+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php生成csv格式的excel表格]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/81" />
            <id>https://baijunyao.com/81</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[之前写过一篇php生成excel的文章 thinkphp整合系列之phpexcel生成生成excel文件但是phpexcel有一个严重的缺点；那就是一个大大的“慢”字；数据量小的时候还好；当数据量稍微大一点；那生成excel的过程99.999%的时间都是在那看浏览器转圈了；那有木有一个效率高点的呢？当然有了；而且非常简单；贴代码；/** * 数据转csv格式的excle]]>
            </summary>
                                    <updated>2026-10-09T08:58:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之webuploader异步预览上传]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/80" />
            <id>https://baijunyao.com/80</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[万恶的百度虽然干了不少坏事；但是百度的技术还是有值得称赞的地方；就比如说开源的一系列产品；今个要说的是文件上传组件：webuploader先来简单说几个优点：以html5为主并在不支持html5的浏览器时支持flash模式；兼容IE6+，iOS 6+, android 4+、分片并发、预览压缩、拖拽上传、md5秒传等等；官网：http://fex.baidu.com/webuploader/问答：]]>
            </summary>
                                    <updated>2026-10-09T08:31:21+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之极验滑动验证码]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/79" />
            <id>https://baijunyao.com/79</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[对于建站的筒子们来说；垃圾广告真是让人深恶痛绝；为了清净；搞个难以识别的验证码吧；又被用户各种吐槽；直到后来出现了极验这个滑动的验证码；这真是一个体验好安全高的方案；官网：http://www.geetest.com/  （此处应该有广告费） 示例项目：http://git.oschina.net/shuaibai123/thinkphp-bjyadmin 一：注册获取key注册；创建应]]>
            </summary>
                                    <updated>2026-10-09T15:22:16+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之微信公众号支付]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/78" />
            <id>https://baijunyao.com/78</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[公众号支付是指在微信app中访问的页面通过js直接调起微信支付；因此页面必须是在微信中打开的；示例项目：http://git.oschina.net/shuaibai123/thinkphp-bjyadmin一：设置域名登录微信公众平台；微信支付中设置支付授权目录；把域名改为自己的；设置授权域名；二：导入sdk/ThinkPHP/Library/Vendor/Weixinpay好吧；还是没忍住要吐]]>
            </summary>
                                    <updated>2026-10-09T13:18:51+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之微信扫码支付]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/77" />
            <id>https://baijunyao.com/77</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[微信作为移动互联网的航空母舰；在支付发力后；现在也是不容小觑的；在线下的场景中比支付宝更甚；君不见连路边的小贩都支持二维码扫一扫支付了；此处是省略500字的微信支付开通过程；示例项目：http://git.oschina.net/shuaibai123/thinkphp-bjyadmin一：导入sdk/ThinkPHP/Library/Vendor/Weixinpay鹅厂的sdk那酸爽谁用谁知]]>
            </summary>
                                    <updated>2026-10-09T19:24:08+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之支付宝RSA加密方式接收移动支付通知]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/76" />
            <id>https://baijunyao.com/76</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇博客写的是MD5加密方式；但是呢；移动支付是没有MD5加密的；只能是RSA加密；long long ago；支付宝官方是没有给RSA加密的demo的；这次为了写博客整理代码的时候；竟然发现了官方给了一份demo；但是；竟然把MD5和RSA分成了2个SDK；好吧；这里给出的是二合一版的SDK；切换加密方式只需在配置项中设置下即可；示例项目：http://git.oschina.net/shuai]]>
            </summary>
                                    <updated>2026-10-09T13:22:38+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之支付宝MD5加密方式扫码支付]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/75" />
            <id>https://baijunyao.com/75</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[支付宝的作用就不废话了；反正在天朝是个网站用到支付；都首先要考虑支付宝了；支付宝有两种加密方式；MD5和RSA；MD5加密方式比较简单些；可以用在pc端的扫码支付；今个要讲的就是这个；注册账号获取key什么的这就不废话了；直奔主题；示例项目：http://git.oschina.net/shuaibai123/thinkphp-bjyadmin一：导入sdk/ThinkPHP/Library/Ve]]>
            </summary>
                                    <updated>2026-10-09T12:20:24+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之phpexcel生成生成excel文件]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/74" />
            <id>https://baijunyao.com/74</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在后台管理中会经常需要将数据生成excel表格的；php生成excel有两种方案；一种是通过phpexcel生成xls格式的表格文件；另一种则直接通过逗号换行生成csv格式的表格文件；这里先讲解thinkphp整合phpexcel的过程；一：导入phpexcel/ThinkPHP/Library/Vendor/PHPExcel二：生成excel的函数/** * 数组转xls]]>
            </summary>
                                    <updated>2026-10-09T22:02:59+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之tcpdf类生成pdf文件]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/73" />
            <id>https://baijunyao.com/73</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[php生成pdf文件的需求是不怎么常见的；当然也是有的；既然已经整合使用了；那就写篇博客来讲解下吧；示例项目：http://git.oschina.net/shuaibai123/thinkphp-bjyadmin一：引入tcpdf/ThinkPHP/Library/Vendor/Tcpdf把tcpdf整个目录拷到自己的项目中；二：函数/Application/Common/Common/func]]>
            </summary>
                                    <updated>2026-10-09T09:35:57+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之融云即时通讯在线聊天]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/72" />
            <id>https://baijunyao.com/72</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[随着技术的发展；现代的网站；越来越趋于应用形式了；不再是像以前那样需要用户刷新页面；获取数据了；服务器端可以主动向用户推送数据；更加及时性了；比较突出的就是即时通讯在线聊天；今个；我们要打造的就是类似于网页版微信的功能；一：注册融云账号如果我们不是以即时通讯为主营业务；那么建议使用第三方的服务；这里以融云为例；官网：http://www.rongcloud.cn/注册融云；创建应用；获得App K]]>
            </summary>
                                    <updated>2026-10-09T12:20:23+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之phpqrcode生成二维码]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/71" />
            <id>https://baijunyao.com/71</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[php生成二维码其实挺简单的；当然指的是使用qrcode类库；因此关于是否要写这篇博客；我是犹豫了再三的；不过最后还是决定写下吧；如果有童鞋急着用；就可以直接引了；老规矩；以bjyadmin项目示例：http://git.oschina.net/shuaibai123/thinkphp-bjyadmin1：首先将/ThinkPHP/Library/Vendor/下的Phpqrcode文件夹拷贝到自]]>
            </summary>
                                    <updated>2026-10-09T17:13:43+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之友盟消息推送]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/70" />
            <id>https://baijunyao.com/70</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章 thinkphp集成系列之phpmailer批量发送邮件讲过的；邮件有着零成本、内容丰富的优点；但是一个非常硬的硬伤；这家伙的及时性太差了；尤其是随着90、00后的崛起；从上网开始体验的就是QQ、微信的即时通讯；唯一有的邮箱也还是自动开通的QQ邮箱；然而还是一连串的未读；那么有木有一种零成本、但是及时性比较好的方案呢？有的；那就是消息推送；当然；前提是用户已经安装了app；今个先就友盟的]]>
            </summary>
                                    <updated>2026-10-09T11:32:34+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之phpmailer批量发送邮件]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/69" />
            <id>https://baijunyao.com/69</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[前段时间写了一篇博客：thinkphp集成系列之短信验证码、订单通知说了这是一个短信通知泛滥的年代；大部分网站的邮箱注册都已经被短信注册所取代；但是邮件和短信相比在一些场景依然有着重要的意义和优势；1：零成本；发邮件没有费用；2：内容丰富且量大；邮件可以长篇大论；图文并茂；3：增加访问量；用户很容易通过邮件中的链接访问网站；好了；下面来来为thinkphp集成邮件系统；示例项目：http://gi]]>
            </summary>
                                    <updated>2026-10-09T08:53:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之阿里云oss]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/68" />
            <id>https://baijunyao.com/68</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[web2.0时代；除了纯信息展示类的网站；基本都是有文件上传功能的；最不济你得让用户换个头像吧；但是随着业务的发展；如果上传的文件都和网站程序源代码放在一起；那是有相当多的弊端的；1：静态文件会占用大量带宽；2：服务器的成本略高；常规的做法是把php源代码放到一台服务器上；图片等静态文件放在另一台服务器上；当一个神奇的“云”时代的到来后；一切就变的更加简单了；在业务还比较小的时候；我们无需大费周折]]>
            </summary>
                                    <updated>2026-10-09T15:00:26+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之rbac的升级版auth权限管理系统demo]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/67" />
            <id>https://baijunyao.com/67</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[权限管理基本是作为网站的标配了；除非是像博客这类个人使用的；否则权限管理的重要性不言而喻；今个就来写写auth权限管理；thinkphp已经内置了auth权限类位于：/ThinkPHP/Library/Think/Auth.class.php执行里面的sql生成3张表auth_rule、auth_group、auth_group_access；然后自己再建一张users表；当然起其他的名字也是可以]]>
            </summary>
                                    <updated>2026-10-09T16:07:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp整合系列之短信验证码、短信通知]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/66" />
            <id>https://baijunyao.com/66</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[现在这个短信通知泛滥的年代；应用如果没有个短信注册；你都不敢说你是搞开发的；这个验证码搞起来是不难的；但是如果刚接触也是有点不知从哪下手的迷茫；先讲下概念；1：找一个靠谱的短信验证码平台；推荐如下使用过的；下面以容联云通讯为例；其他平台一个道理；    阿里大鱼：http://www.alidayu.com/service?spm=a3142.7802752]]>
            </summary>
                                    <updated>2026-10-09T13:49:18+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[使用百度云加速防apache的ab测试ddos攻击]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/65" />
            <id>https://baijunyao.com/65</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[Apache带的有一个ab压力测试的；具体的概念性的东西；咱不扯；有兴趣的自行搜索；这里只简单介绍使用方法；示例：/usr/bin/ab -n1000 -c100 http://baijunyao.com/article/8/usr/bin/ab：ab的位置；-n1000：请求数；-c100：并发数；http://baijunyao.com/article/8 ： 测试的页面当成功运行后；如果你的]]>
            </summary>
                                    <updated>2026-10-09T13:00:24+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[laravel5.2学习资源]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/64" />
            <id>https://baijunyao.com/64</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[研究laravel的过程中基本把中国局域网关于laravel的资料给翻了一遍了；整理了一些中文的资源如下；一：教程系列1：https://laravist.com/series/laravel-5-basic  （5.1视频）2：http://laravelacademy.org/tutorials/blog  （5.1文章）3：http://www.tudou.com/lis]]>
            </summary>
                                    <updated>2026-10-08T22:36:39+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[mac关闭开机启动时的客人用户]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/63" />
            <id>https://baijunyao.com/63</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[mac在 自己建的账号外；还默认有一个客人用户；这个客人用户除了在登录的时候；需要让你手动的点下自己建的账号 刷下存在感外；平常基本是没有什么卵用的；作为一个极客；带着点强迫症；恩；或许叫懒人更合适；如果可以选择；那真是连多点一下都是拒绝的；看到这；恭喜你；这个选择可以有了；1：在系统偏好设置中找到 用户与群组2：点击小锁到解锁状态  然后取消 允许客人登录到这台电脑 的勾选恩；到这差不]]>
            </summary>
                                    <updated>2026-10-09T02:13:26+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[wamp配置虚拟主机]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/62" />
            <id>https://baijunyao.com/62</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[因为wampserver的php版本一直是5.x版本；因此转投xmapp用了一段时间；意外发现wampserver3更新了；php也终于更新到7了；果断还是决定回到wampserver的怀抱；然后又意外的发现了wampserver3有了新功能；可以方便的增加一个虚拟主机；这要比之前写的一篇博客 设置本地wamp环境挂载多站点同时运行  的方法方便太多了；经过一番实验确实好用；于]]>
            </summary>
                                    <updated>2026-10-09T19:09:52+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp的model模型的设计经验总结]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/61" />
            <id>https://baijunyao.com/61</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[关于模型；跟上篇文章thinkphp的目录结构设计经验总结写控制器一个道理；为了尽量避免改动到框架；首先我们是要有一个BaseModel.class.php作为我们的基础model；我会在BaseModel中定义增删改的方法如下；<?phpnamespace Common\Model;use Think\Model;/** * 基础mo]]>
            </summary>
                                    <updated>2026-10-09T18:55:17+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp的目录结构设计经验总结]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/60" />
            <id>https://baijunyao.com/60</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[用thinkphp开发了好些项目了；最近准备抽空写一些经验总结；希望能给刚开始接触tp的童鞋们提供一些开发的方案；少走一些弯路；少踩一些坑；这些绝对都是些精华干货；耐着性子阅读；相信收货大大的；可以结合git项目对照研究： thinkbjy  http://git.oschina.net/shuaibai123/thinkbjy先从thinkphp的目录架构开始吧；thinkbjy&nb]]>
            </summary>
                                    <updated>2026-10-09T23:10:13+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[总结thinkphp快捷查询getBy、getField、getFieldBy用法及场景]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/59" />
            <id>https://baijunyao.com/59</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[thinkphp作为国内现阶段最成熟的框架；没有之一；不得不说是有好些特别方便的方法的；然而如果初接触thinkphp的时候难免会被搞的有点迷茫；for example这些:getBygetFieldgetFieldBy我曾在相当一段时间内都用的迷迷糊糊的；直到后来把它们总结如下：咱先虚拟一张表出来+----+--------+--------------+| id | name &nb]]>
            </summary>
                                    <updated>2026-10-09T08:51:41+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[javascript中的那些让人摸不着头脑的不=]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/58" />
            <id>https://baijunyao.com/58</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[今个咱来盘点盘点javascript中那些让人摸不着头脑的不等；本篇博客略偏学术性研究形式了；除了浮点数运算常见写；其他的在实际开发中并不多么实用；一：首先上场的是NaN：NaN在js中是一个神（xian）奇（jing）的存在；它用来代表不是数字、不可表示的值；如果我们理解了它代表的是不可表示的值；那对于下面的代码打印的false就容易接受了；NaN == NaN;//&nbs]]>
            </summary>
                                    <updated>2026-10-09T19:45:17+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[使用jquery静态资源公共库cdn及回退地址]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/57" />
            <id>https://baijunyao.com/57</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[现在互联网巨头都提供的有一些静态资源公共库为广大的开发者们提供了便利；因为他们有着遍布各地的cdn节点；所以使用这些资源库既可以加速加载资源；又能节省流量；何乐而不为呢？然而因为有一堵神圣的墙的原因；我等生活在天朝的子民是没办法享用谷歌的资源库了；不过百度的资源库也是挺不错的；推荐尝试：http://cdn.code.baidu.com/这里以jquery为例：<script ty]]>
            </summary>
                                    <updated>2026-10-09T20:21:21+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[论strpos的正确使用方式]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/56" />
            <id>https://baijunyao.com/56</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[首先简单介绍下strpos函数；strpos函数是查找某个字符在字符串中的位置；这里需要明确这个函数的作用；这个函数得到的是位置；如果存在；返回数字；否则返回的是false；而很多时候我们拿这个函数用来判断字符串中是否存在某个字符；一些同学使用的姿势是这样的；// 判断‘白俊遥博客’中是否存在‘博客’这个词if (strpos('白俊遥博客', &amp;]]>
            </summary>
                                    <updated>2026-10-09T19:38:40+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[深入解析array_merge函数的用法 php]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/55" />
            <id>https://baijunyao.com/55</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[array_merge是我们用来合并数组使用最多的函数；下面就来深入解析array_merge的用法；1：如果数组中有相同的字符串键名；则该键名后面的值覆盖前面的值； 如果想让前面的值覆盖后面；则可以使用+号；$a=array(    'a'=>'first a',   &]]>
            </summary>
                                    <updated>2026-10-09T12:24:50+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[js设置、修改、获取、删除 cookie]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/54" />
            <id>https://baijunyao.com/54</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[.......；上面这串省略号对于各种吐槽的声音；因为在百度上看到的关于设置cookie的前几篇文章都是错误的；里面给出的设置cookie的代码是这样的；function setCookie(name,value){    var Days = 30;    var&nb]]>
            </summary>
                                    <updated>2026-10-09T09:30:53+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[mysql排序让空值NULL排在数字后边]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/53" />
            <id>https://baijunyao.com/53</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[从现实项目需求出发；有一张城市表；里面有北京、上海、广州、河北、天津、河南6座城市；mysql> select * from bjy_order;+----+------+| id | city |+----+------+|  1 | 北京 |]]>
            </summary>
                                    <updated>2026-10-09T09:28:07+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[javascript的函数作用域及声明提前]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/52" />
            <id>https://baijunyao.com/52</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[废话不说；先来段代码；var scope='global';function test(){    alert(scope);        // 输出undefine；而不是global   ]]>
            </summary>
                                    <updated>2026-10-08T20:30:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[修改mysql的密码]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/51" />
            <id>https://baijunyao.com/51</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[mysql数据库中有一个名叫mysql的数据库；恩；确实有点绕；多读两遍就还是能理解的；执行<code>show tables;</code>可以发现其下有这么28张表；mysql> use mysql;Database changedmysql> show tables ;+-------]]>
            </summary>
                                    <updated>2026-10-09T17:04:30+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[解决thinkphp设置session周期无效的问题]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/50" />
            <id>https://baijunyao.com/50</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[thinkphp的session设置周期是无效的；直接的影响就是无法保留用户的登陆状态；用thinkphp开发的项目；关闭浏览器后用户就退出了；即便设置了session周期也没作用；这个bug存在很久了；但是thinkphp官网一直没处理更新；吐槽完毕；下面来解决这个bug；首先需要在 /Thinkphp/Common/funtion.php 公告函数的第1213行添加如下内容；// 1]]>
            </summary>
                                    <updated>2026-10-09T20:07:14+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[filter_var() 验证邮箱、ip、url的格式 php]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/49" />
            <id>https://baijunyao.com/49</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[验证邮箱格式的正确与否；你的第一解决方案是什么呢？不管你们怎么思考的；反正我首先想到的就是字符串查找看是否有@符号；但是对于结尾的.com或者.net 亦或者.cn等等越来越多的域名验证感觉棘手；直到了某一天认真的研究了filter_var()函数的参数；我对以前走马观花式的阅读php文档表示深深的惭愧；其实filter_var()第二个参数传FILTER_VALIDATE_EMAIL即可验证邮箱]]>
            </summary>
                                    <updated>2026-10-09T09:20:53+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[将中文字符串分割为数组 解决str_split中文乱码php]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/48" />
            <id>https://baijunyao.com/48</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[首先来介绍str_split()这个函数；它的作用是将字符串分割为数组；例如：$str='abcde';str_plite($str);看似很好用的样子；但是作为中国程序员；不可避免的要和中文打交道；这时候再用str_splite就会悲剧的发现乱码了；；；不要怕；preg_splite可以拯救这个问题；当然是需要配合正则使用的；]]>
            </summary>
                                    <updated>2026-10-09T20:00:23+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[生成多个不重复的随机数字php]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/47" />
            <id>https://baijunyao.com/47</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[这个没什么好废话的；直奔主题来说思路；首先是要用rand()函数生成指定个数的随机数字；然后使用array_unique()函数去重；因为去重了；所以得到的数字就不够指定个数了；所以；核心是要用while循环；直到得到指定个数的数字；到这里基本可以是结束了；对于追求完美的人来说；还可以再用个sort()；目的不是要用来排序；主要是将得到的数组key格式化；用代码来说话；就如下；/** ]]>
            </summary>
                                    <updated>2026-10-09T17:21:36+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[一行js代码控制input只允许输入数字]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/46" />
            <id>https://baijunyao.com/46</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[好多时候我们是希望能设置input只能输入数字；比如说商城选择商品数量；比如说手机号等等；看了下京东和天猫；天猫选择商品数量是只能输入数字；而且数量不能小于1；反观京东；连中文都是可以输入的；不得不说；细节上做的比天猫差远了；当然重点不是要来吐槽；下面就是用Js控制input只允许输入数字的代码；在用到的时候可以直接拿走；不用谢；代码如下：此input只允许输入0-9的数字：<input&n]]>
            </summary>
                                    <updated>2026-10-08T16:33:13+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[推荐开发工具系列之--Clover(文件浏览器)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/45" />
            <id>https://baijunyao.com/45</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[虽然我不是刻意要喷Windows自带的文件浏览器；但是为了突出赞美要推荐的Clover这款软件；只能委屈微软了；重点要强调clover的两个特点；当然；除了这两个特点；也没啥圈点的了；官网：http://cn.ejie.me/下载链接：http://pan.baidu.com/s/1mgqzuv21：书签、标签页；chrome重度用户的福音；没错；跟谷歌浏览器的标签页和书签一样；可以把常用的目录拉]]>
            </summary>
                                    <updated>2026-10-09T12:24:51+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Thinkphp设置仅在调试模式关闭时显示404页面]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/44" />
            <id>https://baijunyao.com/44</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[404页面是网站必备的一个页面，它承载着用户体验与SEO优化的重任。404页面通常为用户访问了网站上不存在或已删除的页面，服务器返回的404错误。如果站长没有设置404页面，会出现死链接，蜘蛛爬行这类网址时，不利于搜索引擎收录。综上百科来的一堆啰嗦为一句话就是404页面是必要的；接下来的内容就是讲述使用thinkphp时如何设置404页面；本来奔着减少脑细胞损耗的原则；直接谷歌了下；结果发现市面上]]>
            </summary>
                                    <updated>2026-10-09T18:51:44+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php多维数组自定义排序 uasort()]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/42" />
            <id>https://baijunyao.com/42</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[php内置的排序函数很多；正反各种排；常用的排序函数：sort() - 以升序对数组排序rsort() - 以降序对数组排序asort() - 根据值，以升序对关联数组进行排序ksort() - 根据键，以升序对关联数组进行排序arsort() - 根据值，以降序对关联数组进行排序krsort() - 根据键，以降序对关联数组进行排序基本都能满足需求了；关于这些函数的使用方法就不多啰嗦了；但是在项]]>
            </summary>
                                    <updated>2026-10-09T16:44:29+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[php函数mysql_query批量执行多句sql语句]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/41" />
            <id>https://baijunyao.com/41</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[正常情况下用php的mysql_query函数是不能批量执行多句CREATE TABLE之类的语句的；而有些场景；比如说有一个sql备份文件、又或是程序初始化时创建数据表结构的时候需要批量执行文件中的sql语句；解决这个问题可以用explode函数按';'号把sql语句拆成数组；再通过循环执行mysql_query即可；因为每句sql都是以';'号结束的；但是考虑到]]>
            </summary>
                                    <updated>2026-10-09T17:27:22+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[百度echart在ie下图表不显示的问题]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/40" />
            <id>https://baijunyao.com/40</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[最近在用百度echart创建图表；结果在ie下不能正常显示；火狐等其他浏览器显示正常；ie的开发者工具报错如下：然后各种查资料；得到的结果竟然是因为echarts.js引用放在head中或者放在body中HTML代码的前面了，，造成加载时阻塞后面的html。解决这个问题的办法就是将echarts.js的引用放在</body>之前就可以了；]]>
            </summary>
                                    <updated>2026-10-09T04:25:31+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[css各种手型集合(css禁止手型)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/39" />
            <id>https://baijunyao.com/39</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[写这篇博客前不得不先吐槽下国内的技术性文章现状；1：在国内真心缺少技术性的文章；2：用百度搜技术性的文章真心不靠谱；好吧；正题；下面是在国外搜刮来的；比较齐全的鼠标手型css；在国内的网站上是搜不到这么全的；比如说哪个禁止的手型；html代码如下：<h1>Cursors</h1><div class="cursors">]]>
            </summary>
                                    <updated>2026-10-09T10:10:13+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[详解php中switch你可能不知道的事]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/37" />
            <id>https://baijunyao.com/37</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[首先我们猜想下下面的代码会输出什么？打眼一看；如果你认为什么都不会输出；那么这篇文章你就看值了；]]>
            </summary>
                                    <updated>2026-10-09T12:24:50+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[推荐开发工具系列之--PyF5(自动刷新)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/36" />
            <id>https://baijunyao.com/36</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[昨天介绍的自动刷新的软件 推荐开发工具系列之--LinrF5(自动刷新)  已经是很靠谱了；今天再介绍一款软件，同样靠谱；萝卜白菜各有所爱，看喜欢那种就用那种；首先下载软件：http://pan.baidu.com/s/1bnttBTt解压后双击f5.exe即可使用；绿色不用安装；然后复制项目的路径；按下面的截图输入后点击项目；接着改文件看看效果；支持Firefox，IE，各种手机浏览器]]>
            </summary>
                                    <updated>2026-10-09T19:57:20+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[推荐开发工具系列之--LinrF5(自动刷新)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/35" />
            <id>https://baijunyao.com/35</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[作为一个程序员；尤其是作为一个网站开发程序员；如果再更尤其点作为一个前端程序员；想必有一套动作做的是相当的多；那就是不断的ctrl+s -> alt+tab -> F5 （就在打F5这2个字的时候竟然随手按了下F5，码的这些字瞬间就没了，还好ueditor足够强大自动保存了草稿可以恢复，真诚的感谢ueditor）；做为一个懒人；我们肯定想过如果打完代码后浏览器自动刷新多好；那样就不用手]]>
            </summary>
                                    <updated>2026-10-09T12:42:37+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[ 推荐开发工具系列之--FireGestures(火狐手势命令)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/34" />
            <id>https://baijunyao.com/34</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[有一种懒叫做不想在浏览器上找刷新、后退按钮点击；以及新建一个浏览器标签页和关闭标签页等等；恰好火狐有一个叫FireGestures，作用就是自定义一些手势，来完成刷新之类的命令；比如右键右滑刷新页面；先来安装：    打开火狐浏览器，快捷键ctrl+shift+a  添加附加组件，如果快捷键被占用就点击工具->添加附加 &]]>
            </summary>
                                    <updated>2026-10-09T16:36:08+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[推荐开发工具系列之--Cygwin]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/33" />
            <id>https://baijunyao.com/33</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[cygwin是用来干什么的呢？先大略介绍一二；Cygwin是一个在windows平台上虚拟一个UNIX模拟环境，它对于学习UNIX/Linux操作环境，或者从UNIX到Windows的应用程序移植，或者进行某些特殊的开发工作，尤其是使用GNU工具集在Windows上进行嵌入式系统开发，非常有用。安装了Cygwin后你就可以用操作Linux的方式来操作你的Windows电脑了，而且可以替代xssh类]]>
            </summary>
                                    <updated>2026-10-08T18:27:08+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[阻止a标签点击跳转刷新]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/31" />
            <id>https://baijunyao.com/31</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[这是一个所有做前端都会遇到的问题；布局是这样的，有一个宽高100px背景为红的div，默认是display：none 隐藏状态；给两个a标签绑定的同一个click事件，改变div的display为block；让其显示；但是第一个a标签点击后div刚出现立马就没有了；第二个a标签点击后div会正常显示；初遇到这个问题的时候，马虎点的童鞋可能要迷茫很久都找不到原因，而细心点就会发现是a标签点]]>
            </summary>
                                    <updated>2026-10-09T11:29:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[js日期插件]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/30" />
            <id>https://baijunyao.com/30</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[推荐一款贤心写的js日期插件，调用非常方便；顺手写了一个demo。先列举下这款插件的优点：日期范围限制、开始日期设定、自定义日期格式、时间戳转换、当天的前后若干天返回、时分秒选择、智能响应、自动纠错、节日识别、快捷键操作、更换皮肤等。当然还有很重要的一点是使用简单；代码如下：<!DOCTYPE html><html><head> ]]>
            </summary>
                                    <updated>2026-10-08T22:26:09+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[apache 开启Gzip网页压缩]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/29" />
            <id>https://baijunyao.com/29</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[网页gzip压缩是个什么概念呢？如果你还没接触到，讲文字全是废话，先来看两张图看着实在；网页压缩前：网页压缩后：从图中就可看出网页压缩后这加载时间是成倍的缩减，下面就是就是要讲解如何开启gzip压缩；实例环境：    服务器：centos6.5    apche：2.2.15gzip压缩需要 deflate_]]>
            </summary>
                                    <updated>2026-10-09T14:11:32+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[查询文章的上下篇Sql语句]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/27" />
            <id>https://baijunyao.com/27</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[本来觉得这个查询不用大动干戈的洋洋洒洒写一篇文章的；不过看到不少人在这栽跟头；还是简单总结下吧；文章内容页一般都会有上一篇和下一篇的功能；那么查询上下篇的sql语句应该怎么写呢；示例数据表：bjy_article  自增主键：id当前文章id：10肯定会有童鞋是说，这简单啊id+1和id-1不就OK了；sql无非如下：SELECT * FROM bjy_ar]]>
            </summary>
                                    <updated>2026-10-09T17:31:03+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp简洁、美观、靠谱的分页类]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/25" />
            <id>https://baijunyao.com/25</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[	废话不多说先上图预览下；即本博客的分页；这个分页类是在thinkphp框架内置的分页类的基础上修改而来；原分页类的一些设计，在实际运用中感觉不是很合理；1：只有一页内容时不显示分页；2：原分页类在当前页是第一页和最后一页的时候，不显示第一页和最后一页的按钮；3：分页数比较少时不显示首页和末页按钮；4：包裹分页内容的父级div没有class；针对以上问题逐一进行了修改成如下；1：如果没有数据不显示]]>
            </summary>
                                    <updated>2026-10-09T09:09:36+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp自定义模板标签(二)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/22" />
            <id>https://baijunyao.com/22</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[上篇文章已经把自定义标签的准备工作讲完了；那么接下来就是见证...的时候了；没看如何配置的请先移步thinkphp自定义模板标签(一)    闭合标签就是单标签；比如a标签、img标签等等；    非闭合标签就是对标签；比如div、p标签等等；    这里以自定义的ueditor]]>
            </summary>
                                    <updated>2026-10-09T09:38:32+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[thinkphp自定义模板标签(一)]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/21" />
            <id>https://baijunyao.com/21</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[thinkphp内置的foreach和include等模板标签使用是非常方便的；但是内置的那些标签只能满足常用功能，个性化的功能就需要我们自己编写自定义模板标签了；下面就是要讲解如何实现；示例环境：thinkphp3.2.3thinkphp的模板标签放在ThinkPHP/Library/Think/Template/TagLib目录下；其中Cx.class.php就是foreach、if等标签定义]]>
            </summary>
                                    <updated>2026-10-09T14:09:08+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[以符合人类阅读的方式打印php数组]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/20" />
            <id>https://baijunyao.com/20</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在程序开发过程中；打印数据进行查看调试是非常频繁的；如果没有一种易于阅读的样式那是相当痛苦的；先定义一个数组；$array=array(    't0'=>'test0',    't1'=>'test1',  ]]>
            </summary>
                                    <updated>2026-10-09T13:53:45+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[百度ueditor编辑器代码高亮]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/19" />
            <id>https://baijunyao.com/19</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[百度的ueditor是国内比较好用的富文本编辑器，这里要讲解的是ueditor中一个很小的功能：代码高亮；对于我们这些写个博客三句不离代码的码农们来说，能看到段高亮的代码那欣喜是无以言表的；没图我说个。。；上图；以上篇文章为例；示例环境：ueditor1.4.3未高亮的代码：代码高亮后：如此大的反差；就不废话再吹嘘它的优美了；重点来说使用ueditor如何代码高亮；很简单，但是很多人都不知道这个功]]>
            </summary>
                                    <updated>2026-10-09T01:38:59+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP按符号截取字符串的指定部分]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/18" />
            <id>https://baijunyao.com/18</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[字符串截取在php开发中是比较常用的；而且对于截取的需求也有很多种；就比如说对url链接的操作：http://www.baijunyao.com/index.php/Home/Index/article/aid/12有时我们想截取最后一个斜杠'/'后面的数字；有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http://等等；字符串的截取p]]>
            </summary>
                                    <updated>2026-10-09T22:13:00+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[禁止浏览器记录 文本框之前输入过的内容]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/17" />
            <id>https://baijunyao.com/17</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[当满足以下2个条件时，浏览器会自动记录输入过的值，当用户再次输入的时候就能自动完成；1：input标签在form标签下；2：点击了此form标签下的submit按钮；具体的表现形式如下图，浏览器自动显示输入过的值后会遮挡到下面的验证码，对于我这种记性差到即便只有这4个数字都懒得记，非要边看着验证码边输入的人是无法忍受的；额；好吧；我承认记性是躺枪的，主要是懒；如果说验证码这个示例你能忍受的话；那么]]>
            </summary>
                                    <updated>2026-10-09T13:55:36+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[一行jQuery代码搞定checkbox 全选和全不选]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/16" />
            <id>https://baijunyao.com/16</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[在网站建设中；让复选框全部选中和全部取消是比较常用的；下面就介绍如何用一句话搞定全选功能；其实很简单；那就是使用盘点jQuery弃用的函数这篇文章中最后一段代码；好了，我要介绍的方法讲完了；好吧，别砸鸡蛋；我是开个玩笑；代码在下面JavaScript部分：function checkAll(obj){    $("#box ]]>
            </summary>
                                    <updated>2026-10-09T16:27:54+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[解决ssh链接服务器超时自动断开的问题]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/15" />
            <id>https://baijunyao.com/15</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[为了安全性；ssh默认的连接超时时间很短；经常就是发个呆就断开了；事实上是可以修改超时时间的。示例环境：    服务器：centos6.51：[root@iZ28qa8jt4uZ /]cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak      &nbs]]>
            </summary>
                                    <updated>2026-10-09T22:39:23+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[消除a标签点击后产生的虚线框]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/14" />
            <id>https://baijunyao.com/14</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[经测试在全部版本的ie和火狐浏浏览器中a标签点击后都会产生一个虚线框，如下图的bootstrap的tab所示；本身没有任何实际意义除了比较难看外；解决这个问题可以通过为a标签添加focus事件：<a onfocus="this.blur();">test1</a>那么新的问题来了；如果有很多很多的a标签难道要为每个a标签都添加focus事件？当然不了，下]]>
            </summary>
                                    <updated>2026-10-09T16:20:25+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[盘点jQuery弃用的函数]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/13" />
            <id>https://baijunyao.com/13</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[早前为了更好的浏览器兼容性，一直是使用jQuery-1.7.2版本；但是随着各大浏览器和技术的飞速发展，连bootstrap新版本都是需要引入jQuery-1.9以上的版本，代表着常用的jQuery-1.7.2也该告别历史舞台了；但是有些我们常用的函数也被弃用了；不注意的话就会各种报错；下面就来盘点这些已经被抛弃的函数；当然如果你不认识介绍的这些被弃函数；那恭喜你不需要去记了，只需要理解它]]>
            </summary>
                                    <updated>2026-10-09T09:33:56+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[总结php删除html标签和标签内的内容的方法]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/12" />
            <id>https://baijunyao.com/12</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[经常扒别人网站文章的坑们；我是指那种批量式采集的压根不看内容的，少不了都会用到删除html标签的函数；这里介绍3种不同用途上的方法；$str='<div><p>这里是p标签</p><img src="" alt="这里是img标签"><a href="&qu]]>
            </summary>
                                    <updated>2026-10-09T18:44:02+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[设置本地wamp环境挂载多站点同时运行]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/10" />
            <id>https://baijunyao.com/10</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[之前写过一篇关于在Linux环境下配置虚拟主机的文章；现在又有一种场景；在本地同时写多个项目；可本地的wamp环境下默认只有一个www目录；这样经常修改目录]]>
            </summary>
                                    <updated>2026-10-09T15:04:54+08:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Linux环境下Apache配置多个虚拟主机挂载多站点同时运行]]></title>
            <link rel="alternate" href="https://baijunyao.com/articles/9" />
            <id>https://baijunyao.com/9</id>
            <author>
                <name><![CDATA[白俊遥]]></name>
            </author>
            <summary type="html">
                <![CDATA[这样一种场景；我们有一台服务器；但是想挂多个网站；那么Apache下配置虚拟主机可以满足这个需求；比较简单的是基于主机名的配置步骤如下：例：    ip：115.28.17.191    域名：baijunyao.com        &n]]>
            </summary>
                                    <updated>2026-10-09T22:48:17+08:00</updated>
        </entry>
    </feed>
