手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

佛家思想与PHP开发

今天听了点课,感悟还是有点的。软件开发会时不时的遇到点瓶颈,这其实与佛家思想还是有点关系的,当然,也许是我硬套上的吧。

佛家参惮有一种说法:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水。这里说的是佛家修行的三个层次,也叫三重境界,即初期看山是山,中期有悟时,山就不再是简单的山了,最后彻悟,返朴归真,山还是山,但已经不是原来的那个山了,升华了,空灵了。把这用在游记上也是很合适的。走马观花,照象机式的记录,见山是山,见水是水,见什么写什么,流水帐,千篇一律,大同小异,这是初级阶段。再上一个层次,进到文学的创作,那就得看山不是山,看水不是水。那是什么?是山水背后的东西,附在山水之上的东西,山不再是单纯岩石泥土加草木的立体,水也不是简单的流动的液体了。

软件开发也差不多,刚开始学程序的时候,看山是山,因为这时候思想还没有成形,对于程序的理解都是停在表面上,没有什么特别的概念。随着编程时间的增长,和能力的进步,这时候看待程序、架构都比较的深层次了,于是就升级成为看山不是山,看水不是水的境界。这道坎其实很难跨越,等到真正跨越这一层,然后所以的编程语言、架构在眼里又变成那样的浅显,于是又回到了最初的看山是山看水是水的境界。

随便说说而己。不必生搬硬套

Tags: 佛家思想, 感悟, 开发, php

开发人员的七种心态——支付宝杨云

 今天下午和同事参加了ThinkSite举办的技术交流会,期间由某知名猎头公司猎头进行了行业介绍和职业规划简介,但最关心的还是支付宝架构师杨云的介绍。

杨云认为:

1、开发者应当尝试不同的应用开发,以便可以了解、熟悉各种流程
2、始终保持初学者心态。在看到别人的开发、代码时,不管怎么样,总应该抱着学习的心态,不能因为自己在某领域强过别人就对别人采用批判的眼光。三人行必有我师。达者为先。讲的都是这种道理吧。
3、建立完善的学习体系。当你看到或者搜索到你需要的代码或者程序时,不应该存着拿来主义,而应该做到知其然,并知其所以然。只有这样,你才是真正的学习到了东西,否则永远就只是处在代码层阶段,而永远无法深入。
4、少用工具代替思考,工具之所以是工具,只是为了方便开发,而不能将工具代替你自身的思考。开发过程中,总会出现这样那样的BUG,工具只是方便你将BUG定位,而不一定能完整的将BUG查找出来,这时候不能完全依赖工具,而应该检查自己的代码。
5、不要错过向高手学习的机会。记住,是主动向高手学习。生活当中、开发当中,遇到高手的机会可能会很多,但能不能抓住机会向别人请教,那就要靠自己了。毕竟,别人不会主动问你有什么不会的。
6、搞清技术的来龙去脉。编程技术的发展经历了大约三十年左右,在这三十年里,产生了各种不同的思想,也有很多人根据同样的思想而发展出了不同的派系,只有了解清楚该项技术产生的背景,就不会让你在选择的时候感到迷惑。举例说AJAX,本来就是属于一个很老的技术,但现在ajax的框架有一大堆,你会选择哪个?如果你自己真正的了解了AJAX的核心的内容,你还会在于你选择哪一个吗?当然你在分析不同的代码后,可能会选择一个你认为相对效率较高的一样,可是这也证明了你基本搞清楚它的来龙去脉 了。
7、形成自己的开发的世界观。相信自己,不要迷惑,要有自己的世界观。这是杨云的意见和建议。个人还是认为:世界观、人生观、价值观,这虽然是在初中学政治的时候用到,但用在开发上,也确实有它的独到之处。这三个观念树立好,也可以使自己在往后的开发生涯中不会感到迷惘。这可是自己选择的路。。。。

附上杨云的演讲形象:

大小: 207.75 K
尺寸: 200 x 300
浏览: 1796 次
点击打开新窗口浏览全图

会后,多人对世界观提出了自己的看法,当然我的看法就在上面。同时参与了一些讨论,感慨于目前的培训机构和培训人员及被培训人员的思维。虽然谈了不少,但总感觉少了点什么?文人相轻,在搞技术的人身上也能得到完美的体现。或许就其实就是杨云所说的第二条吧。没有一个初学者的心态,如何能够正确树立和形成一个完善的软件开发世界观?

学习,沉淀,尽可能的帮助其他人,或者这也是程序员的一种快乐吧。如果这种快乐能够被传递,那才是一件很快乐的事。

Tags: 开发, thinksite, 支付宝, 心态, 世界观

修复:使用chrome在Sablog里面发博文

 原来我一直以为不能够在chrome下的Sablog里面使用fck editor,直到coolcode.cn的andot在群里说改了点东西就支持了。

原来fckeditor.js里面有 

JavaScript代码
  1. this.enableSafari =false;  
  2. this.enableOpera = false;  

于是,将这两行改成了true; 

然后修改那两个PHP文件,在IsCompatible方面里面的判断加上

PHP代码
  1. else if ( strpos($sAgent'Opera/') !== false )  
  2. {  
  3.     $fVersion = (float)substr($sAgentstrpos($sAgent'Opera/') + 6, 4) ;  
  4.     return ($fVersion >= 9.5) ;  
  5. }  
  6. else if ( preg_match( "|AppleWebKit/(\d+)|i"$sAgent$matches ) )  
  7. {  
  8.     $iVersion = $matches[1] ;  
  9.     return ( $matches[1] >= 522 ) ;  
  10. }  

 于是,世界清静多了,菜单也出来了。

感谢andot给我们提供的方法。。。

不愿意手工改的朋友,可以直接到:

在 Google 浏览器(Chrome)中能够使用 SaBlog-X 发文章的方法
  1. http://www.coolcode.cn/show-305-1.html  

 进行下载。good Luck for you

Tags: chrome, google浏览器, sablog, coolcode, fckeditor

让我吃惊的:phpinfo跨站脚本漏洞

从未想过,phpinfo页面居然有这么大的漏洞,在我想来,这纯粹是一个输出页面,怎么会有漏洞呢?
看了

漏洞说明: php是一款被广泛使用的编程语言,可以被嵌套在html里用做web程序开发。phpinfo()是用来显示当前php环境的一个函数,许多站点和程序 都会将phpinfo放在自己的站点上或者在程序里显示,但是phpinfo里存在一些安全问题,导致精心构造数据就可以产生一个跨站脚本漏洞,可以被用 来进行攻击。

漏洞成因: phpinfo页面对输入的参数都做了详细的过滤,但是没有对输出的进行charset的指定,而在一些浏览器里如IE7里,你可以让它自动选择编码或者通过一个iframe页面给它指定编码,这样就可以饶过phpinfo的过滤而产生一个跨站脚本漏洞。
漏洞来源: http://www.80sec.com/release/phpinfo-xss.txt
漏洞利用: 利用代码如下:


<html>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7">
</head>
<body>
<iframe src="http://www.80sec.com/phpinfo.php?+ADw-SCRIPT+AD4-alert(document.domain);+ADw-/SCRIPT+AD4-=1">

以上代码在IE7+php 5.2.6测试成功。phpinfo页面的xss甚至比其他页面更加危险,因为如果有phpinfo的存在,恶意攻击者可以利用phpinfo的输出bypass如httponly和一些基础认证。

漏洞影响: 影响所有版本的php和浏览器IE7
漏洞修补: 建议暂时删除站点的phpinfo页面避免被人利用。

太吃惊了

Tags: 漏洞, xss, phpinfo, 脚本, 跨站

用PHP取得文件后缀名

上传的时候,判断文件后缀名,然后再同时生成复杂名字的时候,总是会有烦恼,也确实是,使用PHP取文件后缀名的方法太多了。。这里稍列几个

1、

利用 pathinfo 函数
  1. <?php  
  2. $urlname = 'http://www.neatcn.com/attachment/test.gif';  
  3. $path_info = pathinfo($urlname );  
  4. echo $path_info['extension'];  
  5. ?>  
2、discuz里面利用strrchr取得后缀名
PHP代码
  1. function fileext($filename) {  
  2.     return trim(substr(strrchr($filename'.'), 1, 10));  

  3. //个人建议在$filename上加上basename(),这样可以对路径也处理一下
3、利用end函数
PHP代码
  1. $filename = 'http://www.neatcn.com/attachments/test.gif';  
  2. echo(end(explode(".",$filename )));//split之类的都可以  
最早以前判断都是判断strpos取得最后一个.的所在位置,现在都用strrchr了,毕竟它可以安全的操作二进制文件。

还可以通过finfo::file($filename);来取得文件的类型,然后再进行处理,不过。这已经不算是取文件名了。

大至是以上三种,其他一些方法类似的就不一一列出了

Tags: 文件, 后缀名, basename, pathinfo, end