2008年06月23日

我工作上这段在用python开发,说说自己的感受。
  
  首先,对python的总体评价,是非常正面的。
  
  以前用C++开发,用过python和twisted后,再也不想去碰C++了,用python真是太方便了。开发效率大幅提高,生活质量也跟着提高了……
  
  但是,作为一个严肃开发者,python语法还有有点太不严谨了,很多东西,实现起来的逻辑不统一,可以说,没有一个统一的哲学,当然了,造成这种现象的原因肯定是两个字:历史。又要兼容又要发展,最后形成的东西,对于初次接触的人来说,肯定不爽。
  
  我用过c++/java/c#,感觉他们的设计在哲学上比较统一,尤其是后面两个比较年轻的,更是很典范。C++也很古老,但是他的哲学还是很统一,所以,光用历史来说python也是有点开脱的嫌疑。
  
  python3000不知道能有何改观,我没深入研究它的路线图,但是听说解决了一些历史问题,期待着它……
  
  说到web开发,python这块我在看django,感觉他很干净,很内聚,很舒服,公司在用turbogears,我感觉,很恶心,乱七八糟的。我自己的开发逻辑,宁可功能少点,也不能把软件做得乱七八糟。

  如果真是做我自己的网站,我会考虑php的框架symfony,在试用过程中,我觉得它的开发者为广大开发者想了很多,感觉比django成熟,它也从django借鉴了不少东西,当还还借鉴了ror。为什么选symfony呢,因为:php的主机so便宜,python的主机so难觅。

2008年05月23日

上传文件时,在服务器端处理能得到上传的文件名,但是IE和FF的处理方式不同,IE上传后得到的是文件在客户端机器上的全路径,比如客户端上传桌面上的a.txt,到了服务器能读到C:\Documents and Settings\flmn\Desktop\a.txt这样的字串,而用FF上传文件时,服务器端只能得到a.txt,从安全角度来讲,IE这样做是欠考虑的。

我的软件使用Python语言和Turbogears框架,一直在windows下开发,当时也是遇到这个问题,所以,对于上传的文件名用os.path.basename()处理了一下,运行得挺好。前几日将程序部署到linux平台,客户端在windows下用IE上传,就出问题了,FF没事,开始不知怎么回事,后来才想明白,在linux下os.path.basename()处理的是’/'而不是’\',所以,使用os.path.basename()来处理这个问题是不对的,只能自己处理了,还得考虑两种情况。