Eonval/Feedval的开发实况(5):(多站点)在线升级功能已基本完成,程序开发中理想和现实的差距(超多截图)

王志勇 发表于 2019年04月13日 10:18

(多站点)在线升级功能,预料中就是一个很难的部分,它是一个单独的大功能,已经数不清是几天完成的,这次这个单项功能估计用了6~8个工作日+加班完成。开发中,眼睛需要一刻不停地盯着屏幕几个小时,然后休息一下,因为一中断,就很容易忘记刚才的思路。开始也没有想象它有多么复杂,但是开发、编排中却遇到了不少复杂的逻辑关系,所以开发进度非常慢。其中有一项很纠结的是,多站点更新时,开始设计为当前站点先更新,然后后面的站点再重新排列,这样会遇到很复杂的算法冲突,所以干脆改成了从第1个站点开始依次更新。

如果“多站点更新选项”未做任何设置、或者清空这个选项,则变成单站点升级。

为什么现在一定要把“多站点升级”的功能做出来?因为多站点升级和单站点升级的程序改动非常大,趁我现在还记得程序思路,所以一步到位,一次做好。这个在线升级功能的程序,并非只是Feedval使用,而是Eonval平台下的所有应用都可以通用。

这个多站点更新的程序,我去年已经编写完成,只不过当时写的程序是我个人使用的最简化版(无帐号验证,只有超时验证)。前几天想把以前的程序移植到这次的程序开发中,后来发现一点都不能用,两者的结构有很大的不同,所以只好重新编写,不同之处在于:

去年写的程序,可遍历所有的站点,但是只能自己有新程序更新时,马上现更新,只能更新一期。而现在需要的新功能,是如果用户有好几次没有更新,则必须从那一期没有更新的版本号开始,一次更新为现在的版本。为提高速度、节省双方的资源,将10期的更新合并为一次远程请求;为避免一次下载的数据过多而出现崩溃,我在程序里设定为一次最多下载15个最新的php文件。这里,就会涉及到较为复杂的请求翻页问题,经过大量的测试、调试,还是完成了。

开发中,还需要将所有的错误提示,各种错误情形,能想到的全部都写出来,以避免出错,比如写入失败,则必须出现提示。

程序开发中理想和现实的差距,就是为了实现一个功能,未知的工作量、复杂程度,都是超出预期想象的。

2012年我编写的Arsue Blog当时也有这样的在线功能,但当时的在线功能只能单站点更新,思路现在已经彻底忘记,结构还有些不一样:比如当时的结构是记录了大约有10个左右的字段值,如果用户升级中出现中断、或关闭浏览器,下次升级时能够准确地从上次将要更新的文件接着升级,这次也能实现这一功能,但是因为算法过于复杂,时间有限,所以如果出现关闭浏览器的情况,则下次更新会从上次的更新重新开始。

在线升级程序的开发中,还需要考虑的一个重要、复杂的因素,是如果用户空间某个目录没有写入权限,这时候需要出现错误提示。在线升级程序的内部程序分为2大部分,一部分是某一期运行php文件,对重要数据直接进行修改,这种是修改式更新,这部分的写入失败的错误提示因为是刚刚想到,所以还没有写;另一部分是直接从服务器替换最新的文件,这一种我在编写的软件更新中相对使用最多,这部分的写入失败的错误提示已完成。

6条评论:
1   angel2018 2019-04-13 11:55
勇哥,辛苦了。

哈哈,对于编程,我是白痴。看了,以上内容。想问你,平时设计编程过程有没有习惯做笔记或记录,比如用纸记或用电脑记事本。

我过去,也不懂这么做,学了一些课程,最近才开始这么做。可以方便后期的查询和总结。

还有,做事前,把思路和方法先写下来,记录下来,按思路步骤做,如果中途思路有改动,则把记录的思路方法改动,这样就不会忘记突如其来的思路方法。(以上是我,最近总结的,勇哥看看有没有道理。)

自由勇 2019-04-13 12:24
谢谢支持!:)有做笔记,特别是很多写过的高频使用的程序和语句、加密程序、小程序,必须复制下来。
开发思路,非常难记笔记,所以一般不记,也不做注释。只有少量易忘记的复杂算法,需要记笔记,并保存在本机的程序调试库、代码库。
开发思路有少量记录了下来,也有少量写在了博客。

自由勇 2019-04-13 12:29
比如最近5个月开发的Eonval、Feedval平台,里面细小的功能,少说也会达到1000~2000个,工作量实在是多,这些很难做笔记,也有很多直接看语句我自己能看懂,能回想起来。

有很多程序,即使做了笔记,过了3个月也会看不懂,因为工作量多,太容易忘。
不过,不太复杂的程序,一般不会忘,分析几个小时就能想起来。或者有少量的改动,能直接找到对应的程序区域,很快能看懂。

自由勇 2019-04-13 12:33
不太复杂的程序,一年之后,我一般还是能看懂70%-95%左右。
程序,一般只有作者自己一个人能看懂。别人写的程序,我也看不懂。

2   angel2018 2019-04-13 12:47
理解,工作量之大,之多。听很多程序都是团队完成的,一个人完成很辛苦哦。

学了一些课程,了解了谷歌google的程序员,刚开始入职的几个月或半年,都是在基础的规范,小到一个函数的命名规范,一个变量的命令规范。小到每个字节,以前注释规范。(重点是,任何其他的工程师看了程序或接手工作,都能很快就进入工作,接入工作。)

自由勇 2019-04-13 13:18
嗯,是的。:)

3   自由勇 2019-06-02 08:21
Trackback来自《第一次遇到这样惊险的一次编程,差一点需要重构:Eonval/Feedval的开发实况(6)

这个“在线升级/多站点在线升级”的功能,是一个大功能,单项功能的主程序已经达到10.1K,开发日记当时也记录了一些。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇: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程序由王志勇编写