分类文档:编程 221篇

开发一键Shell命令安装VPS的PHP环境遇到的几个难题
2019年08月31日 12:51

兼容所有的系统,是巨大的挑战,也很可能是不可能完成的任务,只能做到尽可能兼容。这个自编的纯净版一键Shell命令,用了2年多,真的很好用,省去了我很多麻烦。因为我过去只用Ubuntu 12、CentOS 5,所以一直以来只兼容这2个系统。到了要发布的时候,需要兼容大多数的系统。这几天,为了测试,必须用真机重装系统,已经重装不下60次系统,VPS每月只能重装30次,其中有一个本月已经用完30次。

开发一键Shell命令安装VPS环境遇到的几个难题:……

固定链接 | 发表评论(0) | Trackback(0)

第3版的LAMP/LNMP一键安装+优化的Shell命令留念和详解
2019年08月29日 17:59

这个第3版的LAMP/LNMP纯净版的一键安装命令,是这几天重新编写,将会放在Webshu平台。此时已经能够完美兼容Ubuntu 12/14/16/18/19,以及Debian 7/8/9。但是今天发现有个小问题,Debian 9在两家不同服务商的VPS下,有一个VPS完美运行,另一个VPS安装遇到些问题。有可能是问题出在Debian 9.9的apt-get命令必须改为apt,所以今天尝试把这个命令在Linux命令行下设置为一个变量$apx,让其在Ubuntu 18和Debian 9.9下自动变成apt。

即原来的 apt update 命令,变为 $apx update。这种方式在有的系统能运行,有的系统不运行。所以,还是需要再次重构为第4版。因为第3版,以及以前的版本,都是在Linux主机下判断系统类型,然后把所有系统的Shell命令都显示出来,并根据系统的类型、判断挑选出Shell命令。这对于我来说,时间久了,这些Shell程序我都无法一下看懂,因为Shell程序我个人觉得比PHP程序难读10倍以上,尤其是程序较长的时候,一下看不懂的程序,有时候宁愿重构也不想再多花时间分析。……

固定链接 | 发表评论(0) | Trackback(0)

如何编写VPS的LAMP/LNMP的一键安装命令
2019年08月27日 08:01

Linux比Windows服务器好的一点是,Linux可以编写一键shell命令,让它全自动安装。基本的方法是,命令之间用分号;,或者&&号隔开;shell也有很多需要应答的场景,例如需要输入Y,或者输入Yes,或者需要按回车。需要输入Y,大部分是install命令,可以事先给install命令加个-y,如apt-get -y install ……,yum -y install ……。

需要自动应答的场景,很多可以用echo命令,而不需要expect也能自动答应,例如我昨天在调试Ubuntu 16+PPA+PHP 7.3的时候,就出现了一个需要按回车的应答场景,用 echo "\r" | shell命令 就能自动按回车,例如这样写:……

固定链接 | 发表评论(2) | Trackback(0)

解决PHP 7等web编程语言不报错一例
2019年07月28日 07:07

PHP的开发者必须尽快转到PHP 7平台,因为原来在PHP 5下开发的程序,有很多在PHP 7下都会报错。PHP 5的程序改为PHP 7的写法,工作量是很大的,所以开发者只能一步到位转到PHP 7平台。

PHP 7增强了数据类型;数组与变量名不能同名,如果同名,需要用$a1=array();给数组$a1清空即可解决报错,PHP 5时只要用$a1='';即可清空数组;PHP 7如果直接引用、或者判断符合条件才赋值的变量时,会报错,解决办法是提前声明这个变量,PHP 5时则不需要声明。……

固定链接 | 发表评论(4) | Trackback(0)

常用技术分享:PHP 5和PHP 7在开发中最常遇到的兼容性写法总结
2019年06月30日 11:41

PHP 7引入了强类型,在报错方面比PHP 5严格了很多。所以,很多PHP 5下开发的程序,到了PHP 7会有各种报错、无法运行。其实,只要稍加改动,原来的PHP 5程序就可以兼容PHP 7的语法,但无疑改动的工作量是难以估计的,需要对每个模块都重新测试。这种改动不像前端设计所见所得,程序由于模块数量庞大,可能会有少量改动不彻底而引发bug

服务器版的PHP的php.ini,默认是不显示报错,即display_errors=Off,所以看不到报错。程序开发当中,则必须把display_errors改为display_errors=On,根据报错内容开发、修改程序。……

固定链接 | 发表评论(10) | Trackback(0)

PHP 7.X、PHP的报错日志测试结果记录
2019年06月22日 12:49

PHP 7.X的报错规则比PHP 5.X严格很多。测试结果是为了试验error_reporting(0);能否彻底关闭报错日志,以防止用户的错误日志的增加,测试结果是肯定的。测试平台为Ubuntu 16+Apache+PHP 7.2。共写入这4个php测试文件:

1.php……

固定链接 | 发表评论(2) | Trackback(0)

Feedval程序已经开始修改为PHP 7的写法(Feedval开发实况24)
2019年06月21日 16:17

Feedval目前在PHP 5.X可完美运行。PHP 7.0应该也可以运行,暂不支持PHP 7.1和之后的版本。已经开始全力修改,使其能够兼容PHP 7.1~最新的PHP 7.3。

经过几天的持续调试,我的电脑终于完成PHP 7.X的环境安装+一键还原。昨晚排查出了PHP 5.X和PHP 7.X写法的不同,主要是由于从PHP 7.1开始,其报错规则非常严格。只要一个变量不存在,当调用它时,就会报错。数组的名称,也不能与已有的变量同名(如果有,PHP 7.X必须先清除数组)。这种严格的报错规则,多见于其它的语言。PHP之所以让开发者感到轻松,就是因为无需每次都声明变量。……

固定链接 | 发表评论(4) | Trackback(0)

PHP 5.X和PHP 7.1写法的2个不同(修改需要庞大的工作量)
2019年06月20日 22:42

这几天经过很多波折,终于把Win 10+PHP 7.1的工作平台搭建完成。作为开发平台,Win 10操作系统,在很多方面都远不如XP好用。目前,XP、Win 7都无法安装PHP 7.X。我原来在PHP 5.X编写的程序,在PHP 7.1都无法运行,在PHP 7.0下运行正常。今天经过排查,终于找到了原因。由于写法不同,导致PHP 5.X下编写的程序,无法在PHP 7.1下运行。

目前已经发现的不同:……

固定链接 | 发表评论(4) | Trackback(0)

漫长的PHP 7.X安装之坑的困境详解
2019年06月14日 10:02

因为从PHP 7.1开始,PHP的解释器做了很大的改动,导致原来的很多PHP程序无法在PHP 7.1及之后的版本运行。如果作为为用户提供程序、非自用的开发者,为了争取更多用户,有必要跟进新的平台。经过2天的安装,基本上已经完成了PHP 7.1~7.3的安装。PHP 7.X的安装,没有想象中的顺利。为了完成PHP的开发,我的电脑不得不使用4块硬盘,安装了4个系统。

这4个系统分别是:XP、Win 7、Win 10、XP+VMware+Linux。……

固定链接 | 发表评论(12) | Trackback(0)

博客的优美之处在于记录真实的事情和想法,记录PHP 7.1、HTML 5遇到的困扰
2019年06月12日 10:42

个人的力量无法去阻挡时代的变化,正如房价的变化。本博客这些年来,随着博客的不断撰写,会产生很多新的思考、想法和发现。其中一个重要的发现是,很多事情、技术并不会因为时间的推移,就必然会进步。很多好的技术、观念,都随时可能被遗忘、失传,这样的事情细想一下,数量十分惊人,有可能超过半数

很多人会在潜意识里认为新的技术一定是最好的。只有在这个领域里工作的人,或者多加思考的人,才知道事实并非如此。……

固定链接 | 发表评论(4) | Trackback(0)

常用技术分享:JavaScript的onclick的一个bug和解决
2019年06月08日 09:21

<input>如果有默认的字符提示,当点击时需要清除默认字符,例如我编写的这个页面 http://cn.blogval.com/author/ 。如果只用onclick,会发现如果此时按鼠标右键,或者在手机上直接长按,默认字符都不会清除。

这是onclick的一个bug。解决办法,在<input>里,除了写onclick,再同时写一个onfocus的语句。……

固定链接 | 发表评论(0) | Trackback(0)

必成技术分享:PHP获得服务器本机IP的思路
2019年06月08日 07:40

最近我在Eonval项目开发中需要此功能,但PHP自身无法获取服务器本机IP。想要获取服务器本机IP,有很多种方法,比如需要时我会想这2个办法,都需要调用Linux主机的shell命令来实现。这2个办法都必须使用唯一的这个函数shell_exec(''),它是返回Linux主机的shell结果的所有行,且将结果传给一个变量,再用PHP分析运行结果,从运行结果中提取出服务器的IP地址。

方法1. 免root(所有的CentOS/Ubuntu/Debian主机默认是这个状态),即Apache或Nginx不需要有root权限。程序如:……

固定链接 | 发表评论(0) | Trackback(0)

博客防止spam的新方案分享,十分有效:单篇设置验证码
2019年05月14日 07:36

本文的spam,专指有一种来自国外的评论,每条评论内容里有10多个链接,语言是英文或者其它语言(类似德语、法语),发在中文博客里。我的博客当初开通一两年之后,评论里就开始有这类spam,几乎一两天内就有。

当时想了很多办法,最后非常无奈只好全站开启验证码,效果立竿见影。这一两年,为了用户体验,去掉了验证码。我发现spam总是发在那几篇博客里,所以把那几篇博客都关闭了评论。spam突然沉寂了很久,这几天又多了起来。……

固定链接 | 发表评论(5) | Trackback(0)

程序员/程序设计者的智商高吗?记忆力强吗?
2019年05月05日 09:34

这是几个月前在v2ex出现过的一个问题。我不能给出一个明确的答案,因为这个问题本身是没有结果的。智商高不高不敢说,但是从这种很特殊的职业性质来看,和别的职业有很大的不同:每天需要实际去解决在程序中的这个“现实”的问题,程序只要错一个字符,会导致整个程序无法正常运行,是极其精密的。由于长期处于这种身经百战的环境中,解决问题已经成为习惯。(智商、智慧的本质就是能够解决问题。)

但是,程序设计本身又有更特殊的一个性质,工作量极其庞大。所以一个人需要长期坐在电脑前,对社会外界的接触时间会大量减少,对八面玲珑的社交能力有一定的抑制。……

固定链接 | 发表评论(4) | Trackback(0)

回忆2001年左右的一位真正的早期电脑牛人(谈如今开发者的移动办公平台)
2019年04月29日 13:41

大约在2001年的时候,我在论坛看过网友发的一张图片,就是国外有个人,背着一台台式机+15英寸球面显示器,走在户外。因为那个时代的笔记本电脑,相当昂贵,约合人民币1万多~2万元,奔三处理器。现在在街上,很难见到这样的场景,因为大部分人都使用手机上网。然而,对于开发者,这个场景可能会再次重现

首先回到标题的“电脑牛人”。那张图片我没有搜到,图片应该是出现拍于2001年,或者之前。15英寸球面显示器的功率我测过,约50W,那个时代的奔三处理器主机约80W-90W,含显示器整机功率在140W-150W左右。……

固定链接 | 发表评论(2) | Trackback(0)

https,想说爱你不容易
2019年04月27日 09:33

如果一个博客,一两个网站都启用https,影响不大。https,整页加密传输,防劫持,好看,跟得上趋势。但是对于多站点、多二级域名的项目,当达到50~100个以上的域名/二级域名,那么https的管理(包括安装、续期、定期检查),无疑是一场灾难,占用很多服务器资源和维护时间。这也是为什么我尽量使用http,而且鼓励使用http。

在现在各种主流的浏览器里,其实http和https加载的Cookies,是完全共享的。因此在http和https下加载的Cookies,可以互相调用、甚至能通过某个方法查阅。所以在Cookies这个单项的安全方面,http和https的安全性一样。……

固定链接 | 发表评论(11) | Trackback(0)

中国和美国的互联网技术、软件水平相比
2019年04月10日 07:43

昨天在v2ex看到这个帖子:https://www.v2ex.com/t/552910

我的回复:……

固定链接 | 发表评论(3) | Trackback(0)

JavaScript比PHP语句做得好的一个小细节实例
2019年03月31日 08:05

JavaScript这一种古老的语言,是目前唯一的网页前端编程语言,在2018年第1季度竟然排名为世界十大编程语言的第1名(新闻链接),这可能是由于JQuery的兴起。这个排名好像是受欢迎度、市场占有率,就像超级女声一样是通过投票的方式排名,但是排名不代表实力。在开发中,我个人感觉PHP很多方面比JS做得好,虽然语法几乎完全相同,PHP和JS之前我也写过几次对比(例如),它们在开发中的重要性,PHP应该在JS之前,PHP也比JS简洁很多。最近发现一个反例,这一点JS比PHP做得好。

比如获取地址栏。JS只要一个window.location.href,就可以获取整个完整的地址栏,甚至能获得#后面的数据,而且十多年前的JS版本就已经是这样的。PHP获取地址栏相对繁琐,PHP没有像JS的window.location.href一样的方法,只能是获取域名+域名之后的地址,如:……

固定链接 | 发表评论(0) | Trackback(0)

开发中遇到的安全矛盾:URL超时的设置
2019年03月30日 09:03

通过给URL设置超时的时间,能使URL只要超过这个时间,则URL失效。超时的时间设置越短,则安全性越高,内部URL通常在30秒~180秒比较好,验证超时,时间是从服务器获取的。因为项目开发中,会涉及到用户的不同服务器的数据传输,为了避免一些服务器时钟误差的问题,不得不将超时时间设置为2小时。

今天发现一个新的问题,服务器间还可能存在几个小时、十几小时的时差,那么不得不把超时时间设置为24小时。这个超时的时间太长,还得再想想别的办法,加入新的规则来验证。……

固定链接 | 发表评论(0) | Trackback(0)

程序开发中最尴尬的处境:就是不运行(更新解决方法)
2019年03月29日 09:35

昨晚写的在线更新的一个多行网址的验证功能,本来这个部分是比较简单的功能。语句明明都是正确的,但就是不运行,从昨晚临睡前到现在,为了处理这个问题,横竖左右各种办法来筛选错误所在,已经浪费了2个多小时,因为用的是top.abc.innerHTML,很难排查错误。以前遇到过很多次明明语句正确,就是不运行。要了老命了

2019-03-29 10:26更新:……

固定链接 | 发表评论(0) | Trackback(0)

底层技术分享:PHP程序的代码如何加密
2019年03月29日 07:39

很简单,只需巧妙运用eval()函数,这个函数太重要了。方法是把源程序的字符在本机编写一个乱码器批量替换,在项目中做逆向还原,再被eval()函数调用。如果乱码太多的话,可能(可能性微小)会被某些杀毒软件报为病毒,为了避免这个问题,只需将一两个关键的PHP语句进行加密就足够

大多数的工程、成品源程序被解读是没有意义的,因为一是无法逆向还原开发现场的思路,二是解读程序有可能比开发程序花的时间还长。因此,加密与否,很多时候并不重要。……

固定链接 | 发表评论(0) | Trackback(0)

https和iframe+JavaScript的一个重要测试、调试记录
2019年03月22日 20:57

https对于开发者而言,增加了很多不必要的工作量。在Eonval项目中,会用到很多的iframe+JavaScript。其中,有一些页面是提交后(如密码修改的功能),如果数据处理完毕,则跳转到相应的页面。https规定为iframe不能引用http的链接。

今天要做的测试是,iframe内的内页,需要用top.location.href的方法让父页跳转。测试中,如果父页是https,内页是可以用top.location.href跳转到http的站外链接正好这条路没有堵死。如果将来堵死了,只能再多增加一个手续,先让top.location.href跳转到站内的https的一个页面A,页面A再跳转到站外的http或https链接。……

固定链接 | 发表评论(2) | Trackback(0)

开发中遇到的PHP中的一个重要bug
2019年03月22日 07:47

虽然PHP的确是公认的最好的语言,最近10年的世界TOP 20编程语言(市场份额),PHP一直名列前10名。PHP为什么好呢?个人觉得,好就好在PHP的设计者,把web开发者在编程中能遇到的问题,大部分都想到了,是一种十分完整的语言(在PHP 5时就已经达到这种水平)。大部分问题,他都有了解决方案。所以我们在开发中,会感觉更加得心应手,这是一个优秀的语言具有的特征。且PHP的执行效率,处于相对中等偏上的水平(与Golang、Node.js这些运行更快的平台相比);PHP比另外几个最受欢迎的语言执行效率高。如果程序设计中,没有瓶颈的问题,PHP的效率还是很高的。

昨天开发中,遇到PHP中的一个bug。setcookie函数,如下2行的语句:……

固定链接 | 发表评论(0) | Trackback(0)

程序开发的周期和难度
2019年03月12日 10:21

经典的PHP程序,以Discuz、WordPress为例,一个人从0开始,编写指定的和官方版功能完全一样的程序,目测至少得6-12月。3-4个月,是不可能完成的,因为光是帐号功能的开发至少都得1、2个月。开发周期的缩短,是用加班、健康、视力暴降、血拼换来的,血拼的结果就是健康出现严重问题。

为什么以Discuz、WordPress为例?因为这2个程序是应用最广的开源程序、大家都知道的程序。以前我见过很多人有Discuz、WordPress二次开发的需求,我觉得这类程序如果需要二次开发,真不如从0重新编写一套论坛、博客程序来得方便。……

固定链接 | 发表评论(1) | Trackback(0)

平台的Cookies方案设定的纠结之处(体验设计)
2019年03月09日 08:10

Cookies的设定,始终是一个矛盾的问题。如今很多APP受到用户的欢迎,有一个重要因素是Cookies的保存时间相当长,每天可以免登录打开。过去很多私密内容的平台(如电子邮箱、论坛),Cookies时间都很短,现在Cookies的时间非常长。比如我在调试服务器发邮件中,必须用到国外邮箱接收(国内邮箱接收国外服务器的邮件太慢,要慢几分钟,一天要测试几十次),所以选用了Yahoo邮箱,Yahoo邮箱的Cookies时间很长(电脑版),可以很多天不用登录。

这种情况在以前是没有出现过的,以前的电子邮箱Cookies时间很短,很多设置为关闭浏览器,即自动清除Cookies。……

固定链接 | 发表评论(0) | Trackback(0)

程序设计为什么总是会很慢很慢/为什么会有码农的说法?
2019年03月06日 15:17

无论怎样努力,速度总是有一个极限。一个看似并不复杂、心中已经有整体结构、并有把握能完成的项目,工作量常常会超出预期2-3倍。很多项目因为算法实在太多(巨量的任务),需要记很多东西,也常常会让人怀疑自己的记忆力。无论怎样努力,我常常每天至少要花费1/4以上的时间在解读昨天、以往自己写过的程序,1/3以上的时间在思考现在怎样写程序,有效的编程时间很难达到1/3。

这也是为什么工作会超出预期。……

固定链接 | 发表评论(3) | Trackback(0)

Ubuntu 12 VS Ubuntu 18 及软件的话题延续(2):为什么XP系统一直是我的编程环境首选?
2019年03月02日 09:16

第一篇得到的结论是,环境(系统、软件、硬件),有很多的细节,发展到了一定的程度,并不会在5、10、20年之后,再有发展,而是某个特定的技术细节,已经达到了无法突破的极限,就像人体无法长到3米高。特别是一些基础(底层)的技术细节,在开发的初期往往就已经达到了极限。后续的版本,仅是对基础功能的扩展,并没有性能的实质提升。

反而在环境的驱动下,使一些原本好用的基础功能变得不好用。所以,如今的很多系统、软件,变得日趋臃肿,比如最近2年的国内主流APP,很多安装包都从2年前的10M-30M,变成了现在的50M-100M。……

固定链接 | 发表评论(2) | Trackback(1)

Ubuntu 12 VS Ubuntu 18 / PHP 5 VS PHP 7
2019年02月28日 08:19

本文用这个标题,并不是将这些不同版本的平台,做细致、详细、性能跑分的比较。而是这些不同版本的平台,确实对我们的开发、程序运行有很重要的关联。以此类推,还有Win XP VS Win 7 / iPhone 6 VS iPhone 8 / G1840 VS G5500,等等……对于开发者来说,深知软件的版本,可以随意定。

不知是时间过快的原因,还是软件开发商的主版本更改过快?比如我在2011年使用的Chrome,当时的最高版本是Chrome 7.0.517.5。2018年9月,我下载的Chrome最新版是Chrome 68,到现在仅5个多月的时间,已经到了Chrome 73。导致主版本更改过快,可能还有个原因,用户有喜欢最新版本的需求,因此开发商争相加快更改主版本,但底层内核可能并未做实质的优化、提升。……

固定链接 | 发表评论(0) | Trackback(1)

PHP语句比JavaScript简短的一个最常用实例
2019年02月28日 06:47

JavaScript(简称JS),几乎是目前唯一的网页前端脚本语言(以前还有个VBScript,现在大部分浏览器不支持)。PHP和JS我之前做过很多次比较,在上手、易学方面,PHP比JS快很多,这是因为PHP能独立做出项目。对于独立的开发者(个人研究,非职场应用),JS基本上不用专门学,是一个水到渠成的过程,会了PHP,就会JS,因为语法基本上一样。

PHP语句比JS简短的一个最常用实例,比如PHP能轻松和HTML混合编写,非常灵活。JS也能用同样的方式,但是多占用了很多字节,比如最常用的输出语句,PHP这样:……

固定链接 | 发表评论(0) | Trackback(0)

Eonval项目的开发进度和最难以解决的部分(2)
2019年02月14日 06:52

做项目第一步需要完成取名,Eonval在2018年10月16日完成取名。现在已经到了Eonval帐号的开发阶段,我的本机Eonval帐号的目录创建时间为2019-02-10 15:12,经过这3天的开发,进展非常顺利,进度远超出了我的预期。因为Eonval帐号是为上百个、上千个域名的登录使用,不同域名的登录已经完成了解决方案。

注册程序已经全部完成。完成的注册页面如下图:……

固定链接 | 发表评论(2) | Trackback(0)

1 2 3 4 5 6 7 8

首页 | 上一页 | 下一页 | 末页 (共8页)

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写