院毕晚结束了

从前期工作到现场准备到舞台剧,终于都结束了。总体来说还是比较顺利的,出差错的地方就是舞台剧第一部分的斗牛戏上,球被扔到远方去了,某人花了有一段时间去捡球,我站在那里发呆,下面笑场……另外就是整个晚会的气氛并没有想象中那样的“先扬后抑”,而是一路欢笑到最后——此时舞台剧就变成了夹在众多气氛热烈的节目中的一个哀伤的节目-_-|||。不过还是有人说看舞台剧的时候流泪了。

至于我自己的表现嘛,前期工作参与度其实不是很高,都是一些协助性质的工作,当天早上在现场打气球,望着满地气球堆积忍不住拍了一张照片;下午要上课,不过课还没有上完就赶回去排舞台剧了,从最终的剧照看来我的表现还是比较不出众的(嗯,这样比较好),不过某人说我的背怎么弯那么厉害,我想他是说我“醉倒”状态的时候吧——那个,没办法啊,我打算表现出一种无力的感觉,如果腰直了恐怕就不像了。

这里扔一张照片,舞台剧第三部分的,非正面非站立,形象还可以接受就是了……

剧照

刚刚有一个发现,jpg的质量指标从100降到90,图片大小下降多达一半,hoho,看来我有必要重新审视我的“完美主义”了。

晚会结束后本来想所有工作人员出去腐败的,后来说决定考完CETS4||6以后再出去,我把一张很巨型的合照扛回办公室,然后就回宿舍了……到了最后,其实并没有觉得很累,嗯。

“愤青”作品

关键词:PHP,MVC,模板,OO,……

注释:文章中的黑体字都是一个叫Diky的人无聊时标注上去的。

发信人: diogin (diogin),
板面: WebDev
标 题: 考,这番话真是爽透了!
发信站: 飘渺水云间 (Wed Jun 14 01:06:10 2006),站内信件

说明:虽然比较“愤青”,不过此人的确非常强悍,值得好好品味下他的话

模板不死,很难走进设计,看着一个一个初学的,老鸟的,死在这上面,悲哀阿。

网页的显示,DIV+CSS就足够了,结合PHP,循环/判断就OK了。

一个小看法,可以一眼就看出这guy是初学的,还是有段基础的:

初学的:很喜欢把html插入php代码中 print(”<a>”);
有基础的:把php插入html中
再进阶:发现已经不屑于在php文件中看到任何htm标签。
再再进阶:发现没有function裸体的在外面了,几乎被包含进类,如果你还认为function很好的设计,而且速度比class快,那我可以告诉你:这个fucking php的速度,就算是按照顺序写,一个function也没有,速度还是跟垃圾一样。在function和class的选择不是速度的问题,也不是更快完成任务的问题,这些问题都太小了,以至于不是问题了,是关系到你能否把能力再提高一个档次的问题。
再再再进阶:看看你的文件目录,是不是有add.php,delete.php,a.page.php,b.page.php。如果还是按照动作来命名的话,那还是很低档次的修养。多学学怎么高内聚,低耦合

目录/文件名起名也需要艺术的,比如这个fucking页面就是:post.php?action=…….discuz的技术就可窥一斑,太蹩脚了吧?哈?!能不能艺术点的来个/?action=post&……

技术的强是远远不够的,会分析/组织才是真正的强,一个code怎么写的发展空间在现在这个年代是在太小了。

… …也许到最后我们可以换成画代码,不是写代码了。那才是设计的艺术。

编码的艺术,排版的艺术。这两个基础功学好了,后面的路好走了,也不会踏入模板这个沼泽

其实我也不只是想针对模板这个,但是这个绊脚石实在太大了,对于php是在是个怪圈,当然对于我来说这个怪圈不存在,只是看不惯,也是心疼一些人不长进把。

模板,没有这个概念,之前应该是一些标签,用一堆数据来替换一个特定的标记,因为一堆数据,一次又一次的写实在麻烦,所以用了function来模块化, 用for,while循环来减少重复的劳动量。甚至与可以用递归不惜牺牲/空间/效率来简化。标签就是类似define之类的,定义宏而已。

这里的模板特指php的所谓php类,诸如smarty,phplib的template,好像pear雷库也有

之前我也是把,用过模板,幸好只是用用了,后来就写了一个模板类把,自作聪明的写了一个,然后每次就煞费心思的处理html页面,用php模板类不得不学会点自慰,在html处理模板标签之后,还要在php里面大量的梳理数据,来和html页面匹配起来。然后美其名曰美工什么的,还什么彻底分离了代码和设计,shit.

当然,我针对的是那些会采用dreamweaver或者其他的能编辑html/xhtml的,那些手写html并且引以为自豪的就不在之列,也不屑讨论这类。

学过C,就不得不佩服其灵活,而没听说过用c/c++来自己写另外一个自定义的for循环,制造标签就有,但是制造自己的解析还没听说,编译器不是那么容易制造的,不要太自作聪明了。

如果是以打乱了页面结构为理由,那么你是真的掌握了dreamweaver么?

但我实在不想在谈论这个问题,浪费时间。模板只是一个很小很小的部分。只是拿它来开刀比较爽,MVC的V在php交给include+html就可以了。你要做的只是M和C,而C是REQUEST的提取,所以大部分的精力就是在M方面。设计

如果不能接受别人的思想或者自己的错误,可以采用这样,说别人偏激来对付,或者有这样一句话:要打倒一个伟人,可以拿伟人和傻瓜比较下就可以。当然,我不是什么伟人。

另外一个题外话,你会CVS么?会设计么,了解重构么,会单元测试么?

看过大肠经,70集,看的我麻木了,内容什么忘记,有个场面都是很清楚:那个医官上课的第一句话就是:从今天开始,你们之前所学的都是垃圾!

其实还不明白我要表达的是什么?

是关乎自己的发展方向的,不是关乎一个模板,一个什么鸟项目。而像模板这样的东西就把你卡在这样一个低级的层次。

什么是低级,什么是高级,总是有这样的意见:看情况吧,也许你看是低级,他看是高级。马克思这鸟人还真是害人不浅阿?没能力把握方向就拿辩证出来挡下?什么叫做见风使舵?

说个笑话吧,认为模板能分离美工和程序的,很大部分是页面是别人做的,然后呼呼的跑过去告诉那个美工,这里有个变量“放”,他会被替换成“p”。

和直接把这个“p”给放出来,中间差价是什么?时间+精力+和。。。。一些要需要长久时间才能认识到的东西。

关于discuz,什么pwind。。。。我只能说他们会设计数据库。知道怎么组合可以达到比较优化的速度。对sql精通。

但对于代码设计来说,跟小P孩差不多。下面这行是Discuz的:global $db, $table_failedlogins, $onlineip, $timestamp;

莫非我们还真的需要还原到goto的设计去?好像php6有这个准备?听不懂没关系,可是要知道用了global,是代表什么。

至于为什么会有sql攻击的出现,这个问题可以从代码的写法看到,这段是logging.php的:

$query = $db->query(”SELECT m.uid AS discuz_uid, m.usernameAS discuz_user, m.password AS discuz_pw, m.adminid, m.groupid, m.credit,m.styleid AS styleidmem, m.lastvisit, m.lastpost, u.type as usertype, u.creditshigher, u.creditslower, u.allowinvisibleFROM $table_members m LEFT JOIN $table_usergroups u USING (groupid)WHERE username=’$username’ AND password=’$password’ AND secques=’$secques’”);

WHERE username=’$username’ AND password=’$password’变量是直接套进去了,不管前面做了什么防范。

@extract(daddslashes($_POST), EXTR_OVERWRITE);
@extract(daddslashes($_GET ), EXTR_OVERWRITE);

这样的写法跟设计的艺术相差N光年而已。

这样流程,一抓一把,透露点给你,看看printf这类在写代码的艺术表现,至于怎么写,自己学去。

至于phpwind,没看到代码,不评价。

另外,我可以更你讲解下基础的东西,等于号不是等于号,是赋值计算。所以呢,我们来看看discuz的一段取IP代码(commom.php):

if(getenv(’HTTP_CLIENT_IP’)){
$onlineip = getenv(’HTTP_CLIENT_IP’);
}
else if(getenv(’HTTP_X_FORWARDED_FOR’)){
list($onlineip) = explode(’,', getenv(’HTTP_X_FORWARDED_FOR’));
}else if(getenv(’REMOTE_ADDR’))
{
$onlineip = getenv(’REMOTE_ADDR’);
}else{
$onlineip = $_SERVER[’REMOTE_ADDR’];
}

判断的计算是在赋值计算之后的,也就是(A=B),先把B的数据复制给A,然后再扩大到()之外去进行。而这里明显没有判断的语句。so,这样写如何?

if($onlineip = getenv(’HTTP_CLIENT_IP’)){
}elseif(list($onlineip) = explode(’,', getenv(’HTTP_X_FORWARDED_FOR’))){
}elseif($onlineip = getenv(’REMOTE_ADDR’)){
}else{
$onlineip = $_SERVER[’REMOTE_ADDR’];
}

不服气我也没每办法。打击您对discuz 的崇拜了。

识货的BOSS不看证书的。一个人的php水平怎么样,绝对是聊一会就知道的,在内行人眼里,web技术是吹不出来的

这句话说说就可以,可以当真那个傻X打心眼这样认为(说傻X为引起注意而已),等哪天时间到了,别哭出来就可以。

程序当然是条件不变性和结果固定性,确定性。我不写人工智能。

oo不是区别在桌面或者web吧,一种思想在具体上能区别么?难道还能有符合中国特色的oo?或者最近oo出了3个代表了?

解释型,不驻留内存,这点不敢苟同,php同样可以在内存运行,至少我写了这么个,一个月了,还在内存中运行,只是没有线程控制,不得不sleep(1)一下,效果还是不错,没有被apache杀死。

只能是“增加可维护性,结构清晰”之类,愿听在桌面程序上oo还能体现出更多的什么?而在web上什么无法实现?

OO不谈实际的好处,内存的重复利用不是OO,思想/想法的重复利用才是。

恩。不谈具体的编码。据我所知道的。身边的那些从编码开始的,也曾极致的追求高效率,把指针,算法弄得翻天覆地的。也就成了高手了。也只是高手了而已。如今都毕业这么久了,我们不都还只是高手而已么?

几天前晚上,一个朋友说,大叔对他说,美工/程序员都是高级民工,我嗯了下。其实我知道他很想哭,实事就是这样,别人我可能会讨论一番,可是对他我不需要,1:他知道高级民工不是件好事。2:这家伙前途无量,不需要我废话。

而大部分时候,和别人在一起的时候,哪个敢起先讨论下这个编码/算法怎么实现最好,都会被我一杆给打回去:本人不感兴趣程序,对计算机极其厌恶!

凡是和电脑有关的,都觉得及其恶心,就算哪个女生再装可怜着说电脑系统又不行了。帮帮小妹吧。大部分也会被我打回去,没空,不如去吃顿饭,看场电影,然后我帮你找个民工来修修?

早在2年前,有很多人把我当偶像来看待了。可以说凡是有php存在的地方,就有我的偶像。没有大言不惭,哈哈。几何时喜欢和别人争论这个,争论哪个的。现在想想,正是可悲。很多时候要的是虚心学习,不是去炫耀那点小小的技巧,不过说回来,越是不会技巧的,他就越会去炫耀。

很多时候,跳不出高手的范围,只是你最高目标只是第二高手,那没什么好玩的。很多时候,都喜欢讨论,哪个女的胸大屁股小,哪个比较影响市容?最近那张专辑 出了,十一月的肖邦还算可以吧,孙燕子不行了,唉,王菲要是看上咱多好,很久没去电影院烧钱了,tmd的小日本,两个月前cd的菲典知道么,看来sony快没救了!去下酒吧吧……

那来论坛的是想学习吧,恩,那是一些技术还不怎么行的,或者技术比你高了,可是看到的范围不大。那,去哪学,说实在的书这么多,你怕没有学的么?你怕书上 的东西写的不如你在这里学的?国内的却是不怎的,国外经典的多的去,在这里谈论算法有哪些书来得深刻/经典?书看电子书好么?那我没话了。

1:你视力看来比我好。抵抗辐射能力强2:扫描出来的书比实际的书似乎差了那么些,而且很多时候你看到的是看到见摸不着的书,学到的大部分也这样3:很多还是消费者,钱确实是个问题。不过,书带来的和你花出的钱不是一个比例的,真正会学习的就清楚这个比例。

看书真的会成为高手么?如果你的目标定在高手,那你永远成不了高手。如果你的目标定在php,也只能在这里打转了。多看下高级的,比如C++,软件工程。。。。

看懂书了,就可以超过高手么?亿万富翁买的起法拉利么?我不知道。

总有一天你会讨厌编码的,我坚信这点。还有一个,在我面前喜欢说“不一定,具体问题具体分析”的人,我大概知道他们的层次去到哪里。

坚信了就会正确,青霉素之前,人们坚持放血是正确的,于是他们对病人一律放血。。。坚持就了就知道,不坚持,“不一定”永远也不知道。

拿放血来说明坚持的意义,我也不知道为什么,反正当放血死的人越来多的时候,他们就越来越走向正确。今天就没人敢放血治病了。

–※ 来源:•飘渺水云间 freecity.cn•[FROM: diogin]