9:40 2015/10/19
技术排错过程中,关键点总结和心情历程

有一个按照标题进行内容分类的函数似乎不起作用,这叫人沮丧。

在页面显示图片地址时候,在源系统和目标系统中,包含图片地址的页面代码格式,需要转换。这个函数今天又改了改。

然后,遇见不止一个新的问题。

首先排查出,因为之前写了一个同义词替换功能,导致,图片的html代码,失效。原因是,同义词替换配置文件中,有“/”代码的替换,这导致一个指向在线图片的网站无效:所有字母粘接在一起。

然后,在生成insert sql语句后,入库在线测试过程中,发现,如果在线图片是中文汉字,我们还需要做一个代码转换工作:

如下:
_url:=AnsiToUtf8(_url);
_url:=HTTPEncode(_url);
_url:=StringReplace(_url,'%2F','/',[rfReplaceAll]);
_url:=StringReplace(_url,'%3A',':',[rfReplaceAll]);
Result:=_url;

看到这几行代码,明眼人自然知道我所使用的编程语言。

这代码是ok了,在测试这个代码的时候,专门写了一个小程序,试一下。
找了一个图片网址,如下:
http://www.xxxxxx.cn/wp-content/uploads/2014/11/视频网站.jpg
上面网址,又给技术人员,暴露了这个网站的应用类型,没关系,继续说,

这个图片名字是“视频网站.jpg”
转换后,正确的预期是“%E8%A7%86%E9%A2%91%E7%BD%91%E7%AB%99.jpg”
我却总是得到“%E8%A7%86%E9%A2%91%E7%AB%99”这样一个短了一截的结果。找来找去,

闹明白,我做的测试环境,其实执行的是
“__myChineseInPic_To_Url('视频站.jpg');”

就是说,少写了一个字,得到的结果和预期对不上。这个过程也到账我很痛苦,
这个痛苦就是,永远没有结束,很累,放不下,不敢休息和睡觉,睁着眼睛在我的T420笔记本却效率不高。

把以上这个问题搞定,终于搞定以后呢,发现,我的整个系统中的内容分类又不对头。
永远是 分类=0

断点追踪以下代码
if cbArticleType.Checked then begin
i_log_CateID:=__getRandom_Log_CateID;
i_log_CateID:= i_log_CateID;
end else begin
//i_log_CateID:=1;
tmptmp:=s_log_title;
__GetArticleType(tmptmp,(ExtractFilePath(ParamStr(0))+glb_FileName_ArticleType),i_log_CateID);
i_log_CateID:=i_log_CateID+1;
end;

i_log_CateID的数值正确啊。
但是不断入库测试,结果很崩溃。最后发现i_log_CateID是正确, s_log_CateID缺总是0,
原因是未赋值!
赶紧数值转换:
s_log_CateID:=IntToStr(i_log_CateID);

此外,在中间还发现有个很不起眼的代码错误。界面上有两个勾选控件,分别名称为:
cbArticleType
cbAticleType
很显然,我打错一个拼写,所以,赶紧删除了多余的一个控件。

以上,基本都ok,我也倦极且饿,测试一下,啊啊,都ok。

但是在线的大部分数据图片,都正常,只有个别有问题。
深入检查,原来,我处理jpg的都正常。我没有处理png的图片。

这种感觉就是一直撑着要游向岸边,拼着耗尽最后气力以为到了岸边,发现,还不是真正的岸边!

写代码很累,做吧,经常冒错,好比人类研究天文学,时刻都能发现新的未遇到的现象,
心里就知道,指不定哪个环节有幺蛾子,失败难受是必然的,成功太偶然。

一个简单功能的代码实现都简单,堆叠之后,太复杂。常出错,还尽是张冠李戴这种貌似弱智的错。
全网很多在线工具,不管是否是收费,不能满足需求。很糟的是,学习成本还很高,甚至高过新开发。

一个最简单的时候,外行认为简单的,往往最艰难。
一个突然的问题,就拖延时间,极度拖延时间。
越做越着急,貌似遥遥无期。

在一个地方的卡壳,就是全盘卡壳。当然要是穷对付,最简单,这会让开发时间最短,
但是会让结果呈现出很粗糙的样子,内心的细致需求没办法达成。

上面写的一点过程,其实就耗掉了我今天将近10个小时的通宵达旦。好在我一边看电视一边写写代码。
今天看的是一个国内的众人演讲题目,叫做《一席》,很有意思,我也不寂寞。

写程序的时候看看《笑傲江湖》《嘟嘟》等等,也很休闲。

以上做啥工作,干啥的,意义是啥,都按下不表,说来也很简单,一句话就能说清楚。
但不是要去解释这个事儿要做啥,啥意义。核心是说说这个过程,写下来给自己回顾一下。
经常是做了无穷尽的事情,解决了一大堆的问题,一天就耗尽了。
或者是几天时间,连续是每天就解决掉一个小问题,大部分时间发呆和拖延症。

今天白天要么回家睡觉,要么在办公室写完png图片处理问题,然后,这就告以段落,从十一放假前,
或者说从十月一号开始,偶就是忙碌这个看似简单的工作。居然连轴转了19天的开发。
作为技术熟练高手我都这么慢,这说明任何一个机构或个人,如果细致处理这个问题一定都很缓慢。
不可能更快的。我这速度已经很快(当然,看起来慢而已)。
各个公司之间都是技术壁垒。例如,美团的外卖系统是一群人做,饿了么的外卖系统也是一群人开发。
功能是一样的,代码和软件不一样,两边的软件,还真不能立刻替换调换使用,
况且这事不现实,任何一方也绝对不允许。
如果,一个机构也需要这个外卖软件系统,那么既不能找现成购买,
也不能让谁白给你,这时候只能自己开发。

写完这个程序,找个仪式庆祝一下,纯粹休息两天。
如果一个公司有足够的、合适的技术,老板一声令下,程序猿感谢代码实现,这样才是最幸福的。
ok,就说到这里。

10:30 2015/10/19

php大力力:技术排错过程中,关键点总结和心情历程(2015-10-19)的更多相关文章

  1. 21全志r58m平台的framework在使用过程中会莫名的崩溃掉

    21全志r58m平台的framework在使用过程中会莫名的崩溃掉 2018/10/25 16:20 版本:V1.0 开发板:SC5806 1.系统编译: rootroot@cm88:/home/ww ...

  2. zabbix 3.0.3 (nginx)安装过程中的问题排错记录

    特殊注明:安装zabbix 2.4.8和2.4.6遇到2个问题,如下:找了很多解决办法,实在无解,只能换版本,尝试换(2.2.2正常 | 3.0.3正常)都正常,最后决定换3.0.3 1.Error ...

  3. WCF技术剖析之十三:序列化过程中的已知类型(Known Type)

    原文:WCF技术剖析之十三:序列化过程中的已知类型(Known Type) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话) ...

  4. mysqldump备份表中有大字段失败的排错过程

    几天前收到某个业务项目,MySQL数据库逻辑备份mysqldump备份失败的邮件,本是在休假,但本着工作认真负责,7*24小时不间断运维的高尚职业情操,开始了DBA的排错之路(一开始数据库的备份都是成 ...

  5. CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点

    深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储 ...

  6. 29个月过去了,CSDN排名前200了:排名不断靠前的过程中,自己的技术水平和竞争力一定会不断向上

    刚刚在csdn博客又发表了一篇,工作问题总结,突然发现,我的博客排名终于进入前200了. 这又是一个伟大的里程碑啊. 在过去29个月的时间里,排名从"千里之外" 到"19 ...

  7. PF2.1版本总结,在设计过程中遇到的问题以及技术分享

    在距离上一次的版本发布已经过去4个月的时间,因为个人的能力以及时间有限,所以这次的版本会推迟这么久.可是无论怎样,PF2.1带着自身的完善总算不负所望推出.在这次的版本调整中让我深有体会到了程序设计中 ...

  8. 数据库设计-Mysql数据库表设计的过程中几个关键点

    一.表设计过程中应该注意的数据类型 1)更小的通常更好 控制字节长度 2)使用合适的数据类型: 如tinyint只占8个位,char(1024)与varchar(1024)的对比,char用于类似定长 ...

  9. CEO 系列之一:如何当好创业公司 CEO?(不要用战术的勤奋掩盖战略的懒惰,在创业过程中,最核心问题,就是能把创业情怀变成具体问题。这个问题越具体越好)

    1. 创业公司要先定一个目标,要善于把目标简化, 分解成一个, 一个更具体,更简单的问题2. 针对简单的问题进行聚焦, 做深做强3. 在做的过程中, 把断地推出自己的产品到市场上去试错, 要用事实来证 ...

随机推荐

  1. select两个关联的下拉列表

    今天用到两个关联的select,整理一下代码,仅供参考 如下: <html> <head> <meta charset="UTF-8"> < ...

  2. Linux教程:Bash技巧,让chmod只修改某个目录下文件夹或者文件的权限

    用Linux的人都知道chmod -R 可以修改一个文件夹下的所有文件和文件夹的权限,但是这也存在着一个很大的弊端,那就是修改的是所有的文件和文件夹的权限,如果我只想修改文件或文件夹的权限该怎么办呢? ...

  3. SQLite3中自增主键归零方法

    当SQLite数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表.这个表包含两个列:name和seq.name记录自增列所在的表,seq记录当前序号(下一条记录的编号就是当 ...

  4. php知识案列1

    用PHP,在1-20间随机产生5个不重复的值,如何做 复制代码 代码如下: <?php function NoRand($begin=0,$end=20,$limit=5){ $rand_arr ...

  5. python【4】-函数

    一. 定义函数 定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回.如果没有return语句,函数执行完毕后也会返 ...

  6. jfinal基本应用 --报主键重复

    在使用jfinal 的Model过程中有一个很怪异的问题,发布到服务器上,只要是往表中添加字段,就报主键重复. 1.我添加表的时候调用了 public void create(Map map){ St ...

  7. python安装supervisor

    1.下载supervisor-3.3.1.tar.gz    http://pan.baidu.com/s/1dEPhGEd 2.下载meld3-1.0.2.tar.gz   http://pan.b ...

  8. x64内联汇编注意点

    #include <windows.h> #include <stdio.h> extern "C" int MyPrintf(ULONGLONG,ULON ...

  9. tomcat安全加固

    -R 640 conf/*3. 首次安装完成后立即删除webapps下面的所有代码rm -rf /srv/apache-tomcat/webapps/*4. 注释或删除 tomcat-users.xm ...

  10. 【Python③】python基本数据类型,变量和常量

    基本数据类型 Python中,能直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,包括负整数,程序中的写法和数学上的一样,例如:6,-666,8888…… 计算机使用二进制,所 ...