php大力力:技术排错过程中,关键点总结和心情历程(2015-10-19)
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)的更多相关文章
- 21全志r58m平台的framework在使用过程中会莫名的崩溃掉
21全志r58m平台的framework在使用过程中会莫名的崩溃掉 2018/10/25 16:20 版本:V1.0 开发板:SC5806 1.系统编译: rootroot@cm88:/home/ww ...
- zabbix 3.0.3 (nginx)安装过程中的问题排错记录
特殊注明:安装zabbix 2.4.8和2.4.6遇到2个问题,如下:找了很多解决办法,实在无解,只能换版本,尝试换(2.2.2正常 | 3.0.3正常)都正常,最后决定换3.0.3 1.Error ...
- WCF技术剖析之十三:序列化过程中的已知类型(Known Type)
原文:WCF技术剖析之十三:序列化过程中的已知类型(Known Type) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话) ...
- mysqldump备份表中有大字段失败的排错过程
几天前收到某个业务项目,MySQL数据库逻辑备份mysqldump备份失败的邮件,本是在休假,但本着工作认真负责,7*24小时不间断运维的高尚职业情操,开始了DBA的排错之路(一开始数据库的备份都是成 ...
- CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点
深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储 ...
- 29个月过去了,CSDN排名前200了:排名不断靠前的过程中,自己的技术水平和竞争力一定会不断向上
刚刚在csdn博客又发表了一篇,工作问题总结,突然发现,我的博客排名终于进入前200了. 这又是一个伟大的里程碑啊. 在过去29个月的时间里,排名从"千里之外" 到"19 ...
- PF2.1版本总结,在设计过程中遇到的问题以及技术分享
在距离上一次的版本发布已经过去4个月的时间,因为个人的能力以及时间有限,所以这次的版本会推迟这么久.可是无论怎样,PF2.1带着自身的完善总算不负所望推出.在这次的版本调整中让我深有体会到了程序设计中 ...
- 数据库设计-Mysql数据库表设计的过程中几个关键点
一.表设计过程中应该注意的数据类型 1)更小的通常更好 控制字节长度 2)使用合适的数据类型: 如tinyint只占8个位,char(1024)与varchar(1024)的对比,char用于类似定长 ...
- CEO 系列之一:如何当好创业公司 CEO?(不要用战术的勤奋掩盖战略的懒惰,在创业过程中,最核心问题,就是能把创业情怀变成具体问题。这个问题越具体越好)
1. 创业公司要先定一个目标,要善于把目标简化, 分解成一个, 一个更具体,更简单的问题2. 针对简单的问题进行聚焦, 做深做强3. 在做的过程中, 把断地推出自己的产品到市场上去试错, 要用事实来证 ...
随机推荐
- 工作需求----表单select多选交互
由于工作需求接触select框多选的情况,以下是我分享的代码,主要是进入页面默认选中.支持多选属性: 1.html内容 multiple=”multiple” 属性为多选属性 <div clas ...
- guava学习--FutureCallback
转载:https://my.oschina.net/realfighter/blog/349929 Guava提供了 FutureCallback接口,FutureCallback接口提供了onSuc ...
- JAVA中的字符串操作
一.替换 1.把对应字符换成新的字符 比如"D:\java_learn"中的'\'换成‘\\’ String str = "D:\\java_learn\\JAVA学习\ ...
- css选择符
E>F:子选择符,选择所有作为E元素的子元素F.<style type="text/css">li>a {color: #ccc;}</style&g ...
- CALayer 2 详解 -----转自李明杰
CALayer2-创建新的层 本文目录 一.添加一个简单的图层 二.添加一个显示图片的图层 三.为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型,而不用UICol ...
- 电信级的RSA加密后的密码的破解方法
一直以来,电信通过HTTP劫持推送广告的方式已经存在了很多年了,这种手段至今并未停止.这种手段月光博客曾经有多次曝光,见<电信级的网络弹出广告>.<获取了电信恶意弹出广告的罪证> ...
- java筛选法求素数
这本身没什么,代码一堆 发来纪念下而已 本来刚学习java,编写输出100以内的素数 对于我这个有代码运行性能洁癖的人(但是本身又不懂算法)来说,不能忍 于是看了些资料 参考: http://blog ...
- 转别人的 STM32外部中断使用注意事项
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...
- 深入了解Struts2返回JSON数据的原理
首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...
- Android中的Context
Context用来访问全局信息的接口,比如影城程序的资源.一些常用的组件都是继承自Context,目的就是方便的访问资源,比如Activity, Service.... 从Context访问本组件的资 ...