2020-04
16

在死去活来中成长

By xrspook @ 10:03:58 归类于: 烂日记

昨天晚上,在做那些文字游戏的时候,我做到了好像怎么费劲就轻而易举地把题目做出来了,只需要几分钟到十几分钟。从写脚本到测试成功,整个过程没有状况,甚至写完脚本后,所有东西下面红色波浪线都没有。通常,我都会习惯忘记在句子的结束加上冒号。Python要求必须严格缩进,多了少了都不行,而且使用缩进必须用一样的方式,通常必须要求用4个空格。习惯了用VSCode以后,我会设置缩进为4个空格,当我在上一行回车之后,如果上面是冒号,下一行就会自动缩进4个空格。但如果某段代码不是我写的,而是从某个地方复制过来的,就可能会出现状况。所以为了避免这种无聊的出错,我把所有占位符都显示出来。比如空格,也比如tab。大概对其他人来说,写代码就应该是行云流水的。知道自己要实现的功能是什么,知道自己应该用什么方法,然后按照思路按部就班。调试这种东西没有个尽头,没有说用了某些方法测试就能一定保证调试完以后程序没有任何的bug。只能做到尽可能少bug,不可能做到完全没有bug。不知道从什么时候开始,我觉得不把话说死非常重要。

昨天我终于体验到云流水般写代码,是因为在行云流水之前我已经纠结过好几个小时。在行云流水之后,我也遇到了命令行的光标卡在那里,不显示程序有错误,但是程序也不进行下去。如果我进入了死循环,程序出不来,Python会提示我上面已经进行了超过994行,别浪浪费大家精力了。之前我已经见识过了。而昨晚我遇到的是光标停在那里,没有任何提示。脚本那里也没有任何红色波浪线,说明语法是对的,起码静态语法没问题。当我再次看到脚本的时候,发现原来是我在用while进行循环迭代的时候,没有设置改变条件的东西,于是while的循环就停在那里了。在我构想那个循环的时候,其实我是设定好增量条件的。我的脑子已经准备好了,但我的手指并没有把增量条件敲上去,所以就出现了之前死在了终端的状况。我不知道光标死在了终端我还能做些什么,反正我的处理方式是把终端关了。光标停在那里,输入什么都没有反应,又或许如果我在单独的CMD命令行里搞那个的话,我可以用某些什么方式从那里跳出来。只是我现在不知道该做些什么。因为我是在VScode的测试,所以我简单地把那个终端的窗口关掉,重开一个就好。

还记得,在大学里学习C语言的时候,其实我不怎么喜欢用while这个东西循环,我更喜欢用for。拿Python跟C语言比,我觉得后者需要我们在写代码的时候更加仔细严谨。比如花括号这种东西绝对不能省。也比如某个对象在使用之前必须先声明,不只要说明它存在,而且要确定好那是一个什么类型的东西。在循环控制方面,C语言一开始就必须得想好所有。相对而言,Python很自由。昨天我突然发现原来in这个东西可以让if这种语句也具备循环的功能。在实现某个功能的时候,我用了两个for嵌套,而参考答案只用了一个for和一个if,出来的结果完全是一样的。我在两个for里还得加个if做判断,相对参考答案而言,显然就有点臃肿了。

我明明知道做习题会让我死去活来,但是一定程度上,我却在享受那种征服未知的刺激。

2020-04
10

强大到让我瑟瑟发抖的递归

By xrspook @ 8:41:56 归类于: 烂日记

大学学习C语言的时候,基本上我不会写单独的函数,所有要解决的事都在主函数里搞定了。当时我学过判断和循环,但是,我却从来没学过递归。在解决一些简单事情的时候,循环跟递归,没什么差别。从理解程度来说,我觉得循环更简洁一些,但是,当某个东西像套娃那样一层叠一层,每层里面依然用同样的规则继续套叠,不知道要叠多少层的时候。递归就会展现它无穷的魔力。循环难以实现这个,又或者循环并非实现不了,但是递归在完全不需要体现循环的框架下,简洁的语言就已经在做着循环的事情。

昨天,我第一次在Python里见到这个恐怖的递归。外国人的书,我觉得都有一个特点。正文的时候举的例子都很简单,但是一到习题,就会把你彻底搞死。习题里面会偷偷带入一些超纲的东西。大概写书的人理所当然默认你应该知晓。这种事情我已经在学习Java的时候领略过。当时那本书之所以没法看下去,就是因为我没办法想象出作者的脑洞到底是什么。他们的习题几乎可以说大多是一些填空题,但要实现一个功能,其实未必一定就得用某种方法。你给我一个条件,给我一些目标值,我能做出来也就OK了,为啥必须走你的路呢,这非常难。之前我不觉得自己跟外国人的脑洞到底差多远,但是当我对比过自己和他们写的程序以后,我发现真的差挺远的。虽然我们都能实现某个功能,就效率而言,感觉上没差多少,因为我只是在做一些非常初级的东西。应试教育的时候,有标准答案,当然好判定成绩,但实际上,编程这种东西真心应该天马行空。给我一个效率的限制,比如说完成某件事,必须在多长时间之内解决,代码长度不能多于多少,至于我用什么办法,这是我的事。

说回递归函数这件事,在处理几个简单数字的时候,可能你感觉不到它的强大,但是,当我见识过用那个东西画出来的层级图形以后,我简直就只有站在旁边瑟瑟发抖的份儿。真的不知道是哪个神经质想出来这么强大的东西。但实际上,深究下去,那也不是很强大,那不过是不断地重复一些已经设计好的事情而已。如果要人去做那些重复,一开始还好,但是随着事情的深入,会慢慢乱套,但是计算机不会,他们会一根筋地执行我们的指令。最终出来的结果是令人惊叹的优雅,还是乱七八糟一坨屎:就得看设定规律的人的功力了。

递归现在对我来说是一个非常恐怖的东西。因为我不了解它,所以我害怕它,就像当年认识循环一样。但是,用好递归以后,我的武器库里就会增加一个杀伤性非常大的家伙。说到递归,让我联想起新冠病毒。这个东西的递归到底什么时候才是个头?我觉得这肯定不是一个死循环,自然界非常擅长递归,处处都是数学和逻辑你知道吗?!但是,到底要递归多少次,全人类才最终能看到隧道尽头的曙光呢?到底这个新冠病毒函数的递归里埋伏了多少个随机数呢?学习递归让我明白到,层级少好对付,层级一旦扩增,那就是次数级的增长,而且,说不准到达一定层级的以后就会触发某些大招炸弹,想想都心寒。

编程是一个让我重新理解自然规律的过程。

2012-10
2

MAP OF DESTINY 2012的三处改进

By xrspook @ 16:58:12 归类于: 烂日记

妈说今天下午出门走走,吃完饭我就说走人了,但她没有动身,于是我就睡觉去,醒来后已经下午4点,大好光阴就这么溜走了。

MAP OF DESTINY 2012 GMap版进行了三处改进。

第一,对不同类型的戳使用了不同的颜色。具体:红色是Raw,蓝色是Smackdown,粉色是WWE或Supershow,绿色是NXT或FCW,还有橙色,那是鼠标滑过戳时的hover颜色。

第二,设置了网页的icon,MAP OF DESTINY 2012DESTINY IS REAL保持一致,使用的是黑白鹰头,这个16*16的图片还是点点自动生成的呢,我直接就copy过来了。网页的icon图标是件小事,但细节会让在收藏夹里的他更有存在感。一堆文字和小图标能轻易抓住你眼球的肯定是图标。

第三,在DESTINY IS REAL的导航栏里加入“宿命地图”。地址是http://adelrio.diandian.com/destiny_map_2012。这个会自动跳转到http://images.xlanda.net/yark/map/destiny-map-2012-gm.html。必须地在DESTINY IS REAL加入这么个好东西导航的嘛。

我为什么可以这么顺利呢?因为Google的循环是暴露的,坦荡荡的,我知道在哪里可以捕捉到我需要的数据,加以控制也就可以了,但timemap的循环都隐藏在function里,隐藏在引用的.js中,我表示很头大。搞这个的时候我就想起了点点的第一代和第二代模板,第一代模板的循环是内置的,包裹起来的,第二代模板是得你自己动手的,所以,第一代模板的上手是容易点,且不容易出错,但说到控制能力,还是第二代模板自由。

放假进入第三天,我已经完全不知道要做点什么好了。

2012-07
15

未知的错误让我累了

By xrspook @ 19:20:13 归类于: 烂日记

在研究模板的路上,第一次我对点点感到累了。

我已经开足马力去尝试了,但那些封装好的,却没有说明文档的模块让我摸不着头脑。如果可以不用模块我不会用模块的,我不是一个喜欢走捷径的人,除非非如此不可。模块是一种进步也是一种束缚。第二个就是错误之后反馈出来的信息,这个很重要,但就给你一句“系统内部错误”或者“渲染失败”完全没有进一步为什么,在哪里出错的信息,这叫我如何是好?这让人非常头痛,大概我已经喜欢了php的巨细吧,顺藤摸瓜即便不知道自己为什么会错,但起码会知道自己错在哪里。但点点的这个笼统的信息反馈,让人无可奈何。笼统的信息反馈就意味着用户大事小事都要找工作人员解决,降低了双方的工作效率。

关于标签墙的研究,今天我算是知道了一些。我的模板里用到了2个return,一个是为404和空白页面准备的,那个包含return的函数纯粹就只有XHTML + CSS。这个完全没有问题。一个是为自定义视图tags准备的,这个包含return的函数里面有一个循环,因为这里要调取的是所有我可以读取整个blog的热门标签。但问题来了,根据网页的布局,标签墙应该处于文章的正文处,而网页的头部有标题、描述以及导航,而其中呢,导航栏里就有以循环输出的所有自定义页面链接。也就是说,在第二个循环之前,已经有一个循环了。这么搞的话,自定义视图tags会报出“系统内部错误”。两个循环是互不相干的,都是全局的函数,没有调用和引用,为啥会“系统内部错误”呢?没搞懂。你或许会问,或许不是两个循环的问题呢,但我可以确切告诉你,必须只能是那个问题了,因为只要删掉第一个循环,神马事都木有。点点的工作人员之前提醒我说不要把有return的东西放在网页中间,应该直接放在网页头部,免得影响其它,但无论我放到哪里,只要是有在主体函数之前用循环构建过这样那样的基本框架都会出问题。这是让人很无语的。从语法上说,从道理上说这没有冲突,但谁知道这是不是点点内部的bug呢?因为到现在为止,理论上tags的自定义页面可以不加函数获取信息,实际上还是必须加上limit限制的,否则获取的信息就是0。

YOU CAN’T RUN, YOU CAN’T HIDE, YOU HAVE TO KNOW HOW TO FACE.

就在我写完这篇blog之后,拉肚子回来,在if (dian.data.pages.length > 0 )里面加上了一句“if (dian.data.pages && dian.data.pages.length > 0 )”问题解决了,搞定的意思是再也没有“系统内部错误”,网页能正常显示了,但第一个循环的pages链接都自动消失了。为什么???所以,我真的搞不懂这个定义视图。缺少的东西难道我要手动补回去?给那个pages链接们做一个人肉的hack?

好吧,这又给我上了一课,return不是恶魔,点点的各种判断才是纠结点。

2012-07
11

Principe for mars即将降临

By xrspook @ 23:37:16 归类于: 烂日记

就功能而言,Principe for mars已经完成了!

就如昨天所预测,在头脑清醒的时候我用了不到15分钟就解决了昨天搞不懂的两个循环问题。事实再次证明,开夜车是没用的,纠结也是没用的,合理分配资源,让效率发挥到最高境界才是王道。

今天下午我做了什么呢?感觉我上午弄完了2个循环问题后大体模板就出来了。噢~~~ 记起来了!我去玩CSS验证,结果发现,虽然说验证支持的是CSS3,但我的CSS3定义他们还是视而不见说我错。最明显的当数transform、transition、word-wrap以及progid:DXImageTransform.Microsoft.AlphaImageLoader,前面两个是CSS3的特效,第三个CSS很普遍了,第四个,是该死的IE8前滤镜。我开始以为是我写法的问题,但后来发现我怎么写都不对头,即便我把CSS3教程贴进去也说不行,我就得出了结论,疯狂的不在我,而是那个表面上说CSS3了,实际上不然的验证器。也对XHTML做了验证,翻出来的基本都是点点< ? ?>的问题,老天啊,这是人家的服务器请求啊~~~ 我错了,我不应该把模板代码贴去验证,我应该让模板生成网页后拿那玩意去验证,否则我傻眼了,验证那个也傻眼了,净是抓到一些无关重要的东西。

关于昨天2个循环失败,是因为那个我照抄的命令行不知为什么硬设置了一个完全可无的变量,于是,我注意修改了会变动的变量,却完全忽略了那个无关紧要的东西,因为有些循环是叠加的,所以无关紧要的名字重复了,当然就会服务器出错。于是今晚,我直接把无关紧要的删掉了,代码顿时少了起码10个字母+,也不会再犯那些错误了。有时我真不理解,为啥明明1个字母能解决的东西,要起一个10字母+长的名字,并为它匹配一个无关紧要的朋友变量呢?为了别人抄代码的时候头大点?

今天用了TopStyle去整理CSS,乱七八糟的代码顿时变得井然有序!!!整理完以后东西是不会少的,但顺序软件是严格按照字母表去排,所以,有些必须先后才能出效果的东西就要手动了。通常来说,CSS里是不会用大写去命名,但The Stitch就是这么的怪异,整理出来的CSS全部把大写都小写化了,所以呢,要手动地把大写的改回来……我也想用小写啊!但那个跟某js功能有关,不想改js的说~~~

今天已经对XHTML进行了人肉的核对,每个层次,每个调用的格式,有没有调用格式是虚的,无内容的。明天,如果有时间,将会对CSS进行人肉核对,那些本不该存在而却占空间的,你们是时候该颤抖了。

如果转行的话,我或许可以做个网页设计,但,我为啥要转行呢?

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress