跟福哥学编程吧~~
介绍介绍福哥把PHP从Apache module换成了Fpm,跑了几天突然发现网站打不开了。页面显示超时,检查MySQL、Redis一众服务都正常。进入Fpm容器查看日志,发现了如下的错误信息:server reached pm.max_children setting (5), consider raising it原因原来默认情况...
跟福哥学编程吧~~
介绍介绍福哥在通过crontab设置计划任务的时候,经过遇到预期的任务没有执行的情况,想必是任务命令出错了,可是到底是什么错误呢?从哪看这个错误信息呢?日志原来系统有一个crontab的执行日志,路径是/var/log/cron,我们可以在/var/log/下面查看cron开头的日志文件。
跟福哥学编程吧~~
介绍介绍福哥发现在Python3里面调用父类的构造函数和Python2不一样了,直接使用super().__init__()行不通了!后来福哥经过一番研究发现了可行的方案,分享给大家!方法一可以直接使用父类的名称调用父类的构造函数__init__(),这样比较直观,语法也很简单。注意:使用父类的名称调用__init__()需要传递se...
跟福哥学编程吧~~
介绍介绍Git是一个非常主流的代码版本管理工具,这个工具的特点是将代码管理从以文件为单位改成了以项目为单位,通过强大的分支(branch)管理功能可以将整个项目进行前进(forward)和后退(backward),从而达到灵活的版本切换的目的。Git的这个设计真的是很超前,很符合现今的项目开发协作的真实情况,现如今的项目都是多个子项目...
跟福哥学编程吧~~
介绍介绍iptables是Linux操作系统控制系统防火墙的工具,是一个软件防火墙。使用iptables可以实现针对服务器网络的完全定制化配置,无论是要限制内部到外部的访问,还是控制从外部进入内部的访问,又或者是给本地服务端口开放访问权限,这一切的一切都是基于iptables设置的。可以说玩转了iptables就可以随心所欲地控制Li...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成修改个人资料表单的后一部分,实现表单的数据载入功能。要实现表单数据的载入首先得开发一个表单数据的接口,这个表单数据接口需要对应一个单独的实体对象。根据资源路径命名规范,路径里只能出现资源名称,不能出现事件行为。提交表单和数据载入都属于用户的个人资料数据,不能建立两个个人资料接口,怎么办?我们可以使用资源路径...
跟福哥学编程吧~~
介绍介绍福哥今天会带着大家完成设置用户头像的功能的开发。设置用户头像是一个特殊的表单,它含有文件上传功能的HTML输入控件,处理这种表单需要一些技巧。文件上传功能需要使用类型为file的HTML输入控件,我们的TFPHP框架的表单是使用AJAX技术进行提交的,而前面我们使用jQuery的serialize方法收集表单数据的方式并不适用...
跟福哥学编程吧~~
介绍介绍福哥今天要带着大家完成TFUMS系统的修改登录密码功能。修改登录密码功能相对比较简单,一般网站会直接让登录用户随便改登录密码,这样存在一个问题,就是当用户登录后离开电脑,“陌生人”操作电脑修改了登录密码,用户回来后发现无法登录就尴尬了!福哥为了避免这个问题,在修改登录密码的时候要求操作者(也可能不是用户本人)提高当前的登录密码...
跟福哥学编程吧~~
介绍介绍福哥今天要给TFPHP框架添加一个新的对象,就是用来加工图片的工具对象TFImage。一般情况下,在做web开发的时候会有很多场合需要对用户上传的图片进行加工处理,常有的加工操作有缩小、旋转、裁剪、加水印、写文字等等。在PHP里面如果要对图片进行加工处理的话就需要用到GD扩展库了,这个GD扩展库在我们的TFLinux里面已经安...
跟福哥学编程吧~~
介绍介绍在现如今的互联网时代里电子邮件的使用率大幅度降低了,除了企业内部发通知之外就剩下网站平台发送激活邮件使用了。但是无论如何发送邮件这个需求还是有的,而大多数发送邮件都是使用SMTP协议方式发送的,因为匿名邮件会被大多数客户端(如:Outlook、Foxmail、GMail等等)自动丢尽垃圾箱里面了。今天福哥就要给我们的TFPHP...
跟福哥学编程吧~~
介绍介绍福哥今天要带着大家完成绑定邮箱功能的前半部分——发送绑定邮箱激活码邮件。这里面有几件难题:1)要实现邮件激活码,需要设计一个可逆的加密/解密功能;2)激活链接必须是一个完整的URL地址;3)激活链接必须有时效性。第一个问题,福哥经过再三考虑决定使用AES算法实现一个可逆的加密/解密功能,为了保证每次的激活码不一样,原数据增加随...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成绑定邮箱功能的后一部分——验证绑定邮箱激活码功能。这个激活码的验证需要几个步骤:1)根据激活码使用AES算法解密得到原始数据;2)判断激活码内的用户状态是否正常;3)判断激活码内的邮箱地址是否被占用;4)写入绑定邮箱数据。解密激活码比较简单,不过要考虑一个时间差的问题,因为激活码的时间戳精确到1个小时,而生...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成会员中心的最后一个表单——设置安全问题的开发。这个安全问题一般情况下是不允许修改的,所以我们暂时也不提供修改的功能。密码安全问题一共有三组,每一组一个问题配着一个答案。问题都是一样的,所以实际上我们是在一组问题里面挑出三个问题。既然问题是固定的,就可以用编号来表示,而答案是根据用户自己的想法写的,只能是原封...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成TFUMS系统的忘记密码功能的第一步——验证用户信息。因为用户数据表里userName和userEmail都是唯一的,它们都可以作为忘记密码的验证手段。而userEmail是需要登录后进行绑定邮箱才会产生的,也就是说它不一定是存在的。综上所述,福哥决定userName和userEmail都要验证,只要其中一...
跟福哥学编程吧~~
介绍介绍福哥今天要带着大家完成TFUMS系统的忘记密码功能地第二步——身份验证方式选择的开发。身份验证方式指的是我们要确定这个“忘记密码”的人是不是账号的所有人,既然他不知道密码就只能通过其他方式验证了。前面我们有要求用户设置绑定邮箱,绑定邮箱是账号所有人的私有邮箱,如果“忘记密码”的人可以收到寄到绑定邮箱里的邮件,则证明他就是账号的...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成TFUMS系统的忘记密码里面的第一种重置方式——通过绑定邮箱重置密码的前半部分功能的开发。思路是这样的,我们先要知道哪个用户忘记了自己的密码,得到用户名之后判断用户名是否有绑定过邮箱。如果有绑定邮箱的话,我们就向这个绑定邮箱里发生一封邮件,邮件里面包含一个网址,网址携带一个验证码。如果用户可以接收到这封邮件...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成了通过绑定邮箱重置密码的后一部分功能——重置密码功能。这一部分功能的思路是这样的,首先点开发到邮箱里的邮件正文里面的重置链接,这是一个重置密码的表单页面,用户可以直接设置一个新密码。不过,这里面会校验传入的验证码是否有效,如果验证码有效的话才可以完成密码的重置操作。并且,如果密码重置成功后,验证码会被记录到...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成TFUMS系统的忘记密码功能的使用安全问题重置密码的前一部分功能的开发。使用安全问题重置密码相对比较简单了,我们只需要将用户设置过的安全问题的题目和答案取出来给用户答,如果用户能完全答对就表示用户是账号的所有者,我们就允许他来重置用户的登录密码了。验证安全问题需要注意几个问题:必须将三个问题都调出来给用户来...
跟福哥学编程吧~~
介绍介绍福哥带着大家完成TFUMS的忘记密码功能的通过安全问题重置密码的后一部分功能的开发。这一部分的功能和通过绑定邮箱重置密码基本一样,福哥就不详细介绍了。大家可以对照着看【20201224】的介绍了解设计思路,基本上都是一样的设计。通过安全问题重置密码功能开发完成之后,我们的忘记密码功能就算全部完成了。随着忘记密码功能的竣工,我们...
跟福哥学编程吧~~
介绍介绍从今天起福哥将带着大家开发一套基于Java语言的web框架。早期的Java框架类似PHP,使用的是java+jsp的组合实现模块和页面功能的,后来由于jsp这种模式的可维护性和性能远远不及php程序(因为即便是jsp也是需要编译后才能运行的,也就是说jsp首次运行会很慢,但是人家php就没有这个问题),索性全部使用java来实...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家来继续开发我们的TFSpring框架,今天要将的是Java开发的基础设计对象——实体(Entity)。所谓实体其实就是相对于面向对象开发模式来说的,Java语言是彻头彻尾的面向对象的编程语言,在Java程序里无论是控制器、模型、配置信息、包括数据结构都是使用对象来实现的。我们设计一个系统的模型结构的时候会抽象出...
跟福哥学编程吧~~
介绍介绍福哥带着大家花费了将近40天的时间终于完成了TFUMS系统的开发。这个TFUMS系统是福哥带着大家完成的第二个PHP语言的项目,第一个PHP语言的项目是TFPHP框架。并且这个TFUMS系统是基于我们前面开发的TFPHP框架开发的。福哥想问问大家,这种从零开始的感觉是不是很爽啊?一般人带着做项目都是基于一些开源的框架进行的,而...
跟福哥学编程吧~~
介绍介绍福哥今天带着大家给TFPHP框架添加一个非常重要的功能模块——TFHttpClient。在很多情况下,我们的控制器需要通过远程的方式调用接口上的数据或者功能,因为这些接口可能属于其他系统或者其他服务,从本地无法直接访问。这种通过远程方式访问接口就需要借助可以模拟浏览器进行网站访问工具对象来完成,因为网站或者平台是遵循HTTP协...
跟福哥学编程吧~~
介绍介绍今天福哥带着大家来给我们的TFSpring框架增加针对日期和时间的处理功能。在Java语言里面日期和时间的相关对象包括Calendar、Date、Timestamp几个对象,在不同的场合下会将某一个时间对象转换成需要的类型。所以说,我们要创建一个日期和时间的操作对象,它可以满足将这三个时间对象来回转换的功能。另外,我们要根据系...
跟福哥学编程吧~~
介绍介绍前几课福哥带着大家完成了安全模块的绑定邮箱功能和安全问题功能,这两个功能一般情况下是不能修改的。但是,我们在开发完这两个功能之后并没有进行“锁定”处理。也就是说,重新进入绑定邮箱表单依然可以重新操作绑定邮箱,再次进入设置安全问题表单依然可以重新操作设置安全问题。这显然是一个问题,需要我们采取一些措施。要“锁定”安全模块的表单功...
跟福哥学编程吧~~
介绍介绍今天福哥要带着大家给TFSpring框架增加的功能模块是MD5编码和Base64编码,这两个编码函数在PHP语言里面就是三个函数,不过由于Java是强类型语言,又涉及到字符编码的问题,我们还是要好好的学习一番了。MD5是一种不可逆的哈希算法,可以将任意输入数据经过抽样计算获得一个32位的固定长度字符串,在Java里面可以使用D...
跟福哥学编程吧~~
介绍介绍今天福哥带着大家来给TFSpring框架添加一个AES算法的功能对象。AES算法是一种可逆的无损加密算法,和Base64不同之处在于,AES可以通过设置私钥提高安全性,而Base64算法就没有办法设置私钥。很多即时通软件的通讯都是采用AES算法进行密文传输的,比如我们熟知的微信公众号、微信小程序等等。在一些激活链接的功能设计里...
跟福哥学编程吧~~
介绍介绍在linux操作系统下面,可能会有非常多的web服务器,运行PHP程序的apache,运行java程序的tomcat。除此之外还有很多成品B/S架构的软件,如:监控软件zabbix,图标软件grafana,持续集成工具jekins,代码管理工具gitlab等等。这些web服务器和软件工具通常情况下都会使用自己的端口发布出来,很...
跟福哥学编程吧~~
介绍介绍今天福哥要带着大家给TFSpring框架增加的功能模块是SHA1编码和URL编码,这两个编码函数在PHP语言里面就是三个函数,不过由于Java是强类型语言,又涉及到字符编码的问题,我们还是要好好的学习一番了。SHA1是一种不可逆的哈希算法,可以将任意输入数据经过抽样计算获得一个32位的固定长度字符串,在Java里面可以借助Me...
跟福哥学编程吧~~
介绍介绍今天福哥带着大家给TFPHP框架的TFDO对象增加两个新方法——fetchTotal和fetchPart。这个fetchTotal方法用来获得输入SQL语句查询结果的记录集总数,而fetchPart方法用来从输入SQL语句查询结果的记录集里提取一部分记录出来。一般情况下这两个方法可以用来实现功能列表的数据分页功能,这个数据分页...