标签存档: 编程技巧

十几个编程好习惯

1. 动手编码之前,你需要对要编码实现的解决方案有一个正式的或粗略的设计。永远不要在没有任何设计的前提下就开始编码,除非所编代码不重要。

2. 优秀的代码文档跟编程语言知识一样重要。在代码源文件中,为每个主要的代码段添加注释,解释代码的基本逻辑。最好注明程序的构建和修改日期,以及修改的原因也是非常有必要的。

3. 维护程序的各个版本同样重要。当前有些编程工具都自带一个版本管理工具。无论你什么时候改变自己的程序,它们都会将其保存为.bak文件。 继续阅读 »

向中级程序员转变必备的5个秘诀

1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的 语言则更佳。打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大。 我说“学另一门语言”的意思是要真正学会它。学习一门语言包括三个领域的知识:语法、内置操作符和库,以及“如何使用”。前面两个简单;我认为一名有经验 的程序员,根据语言的不同,能在半小时到几小时内掌握足以维护代码的语法知识。操作符和库只不过是知识逐步积累的过程,你什么时候想清楚要了解什么了,再 去查阅参考材料也不迟。只有第三项,“如何使用它”-要花上你几个月的时间去跟这门语言打交道,真正的奇迹就在此发生。我建议用这门语言的风格去做一个适 合该语言的项目。 真正学会了另一门语言之后,我敢保证你的程序员水平一定会突飞猛进。 继续阅读 »

无限级分类目录树之递归实现

/*
* 迭代sql查询,生成无限级分类树
* 数据结构
    CREATE TABLE `cat` (
        `cid` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
        `cname` VARCHAR(50) NOT NULL,
        `lev` INT(5) UNSIGNED NOT NULL COMMENT '分类层数level',
        `pid` INT(5) UNSIGNED NOT NULL COMMENT '上级cid',
        PRIMARY KEY (`cid`)
    )
* 本程序仅供演示“目录树”的算法概念,未做参数有效性的校验
* 本程序含有添加、删除、列目录树功能,编辑功能未实现(非常简单啦,你们懂得)
*/

继续阅读 »

PHP 检测手机浏览器的代码

面对众多的手机品牌,不同的浏览器,将如何判别检测呢

  1. <?php
  2. function is_mobile(){
  3.     // returns true if one of the specified mobile browsers is detected
  4.     $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
  5.     $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
  6.     $regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";
  7.     $regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
  8.     $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
  9.     $regex_match.=")/i";
  10.     return isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE']) or preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));
  11. }
  12. /*
  13. allow the user a way to force either the full or mobile versions of the site - use a GET parameter on requests:
  14. include likes to both versions of the site w/ the special force mode parameters, 'mobile' and 'full':
  15. <a href="http://www.php100.com/?mobile">View Mobile Site</a>
  16. <a href="http://www.php100.com/?full">View Full Site</a>
  17. Always check for 'mobile' or 'full' parameters before accounting for any User-Agent conditions:
  18. */
  19. if ($_GET['mobile']) {
  20.  $is_mobile = true;
  21. }
  22. if ($_GET['full']) {
  23.  $is_mobile = false;
  24. }
  25. if($is_mobile) {
  26.     //it's a mobile browser, do something
  27.     header("Location: http://www.51czone.com/mobile");
  28. } else {
  29.     //it's not a mobile browser, do something else
  30.     header("Location: http://www.51czone.com/desktop");
  31.     // or instead of a redirect, simply build html below
  32. }
  33. ?>

Yii应用之CGirdView

Yii framework中已经为我们预置了CGirdView组件,便于我们组件重用,丰富的参数设置能够满足我们的需求,API文档中有详细的说明。下面对CGirdView重用功能进行分析。

继续阅读 »

PHP编程规范之我见(一)

1. 介绍

1.1. 标准化的重要性

标准化问题在某些方面上让每个人头痛,让人人都觉得大家处于同样的境地。这有助于让这些建议在许多的项目中不断演进,许多公司花费了许多星期逐子字逐句的进行争论。标准化不是特殊的个人风格,它对本地改良是完全开放的。

1.2. 优点

当一个项目尝试着遵守公用的标准时,会有以下好处:

· 程序员可以了解任何代码,弄清程序的状况

· 新人可以很快的适应环境

· 防止新接触php的人出于节省时间的需要,自创一套风格并养成终生的习惯

· 防止新接触php的人一次次的犯同样的错误

· 在一致的环境下,人们可以减少犯错的机会

· 程序员们有了一致的敌人 继续阅读 »

Yii应用目录设计及配置复用

上一篇文章当中已经介绍了关于YII的前后台(backend)组织目录形式,但是经过实践会发现一些问题,上文中仅仅解决了,各应用之间共享models,components的问题,但是无法解决配置文件复用。

下面就这一问题进行描述。

/webroot
       /protected
              /admin
                    /config
                         main.php
                    /models
                    /components
                    /controllers
                    /views
                    /runtime
             /config
                    main.php
             /models
             /components
             /controllers
             /views
             /runtime
             /extensions

依旧使用这样的组织目录形式,在之后的描述当中根目录下的的应用作为frontend,admin为backend,使用别名解析后,application指向protected目录,backend指向admin目录 继续阅读 »

JavaScript编程规范之我见

JavaScript 编程语言作为最流行的客户端脚本语言,深受Web开发人员爱戴。JavaScript语法灵活,简单易懂,对代码的格式的要求也相对松散。也正因为如此,JavaScript 的编码规范也往往被轻视,开发过程中修修补补,最终也就演变成为后续维护人员的恶梦。为了此种恶梦不再发生,现对JavaScript 编程语言的编码规范进行了总结,供大家学习。全文如下:

对于熟悉C/C++或Java语言的工程师来说,JavaScript显得灵活,简单易懂,对代码的格式的要求也相对松散。很容易学习,并运用到自己的代码中。也正因为这样,JavaScript的编码规范也往往被轻视,开发过程中修修补补,最终也就演变成为后续维护人员的恶梦。软件存在的长期价值直接与编码的质量成比例。编码规范能帮助我们降低编程中不必要的麻烦。而 JavaScript代码是直接发送给客户浏览器的,直接与客户见面,编码的质量更应该受到关注。

本文浅谈JavaScript编程中关于编码规范的问题,分析其中缘由。希望引起更多Web 开发人员对JavaScript编码规范问题的关注和对软件产品质量问题的重视。 继续阅读 »

PHP安全小建议(下)

PHP安全建议#15

作为开发者,我们大部分的人都是非常肮脏的,我为无数项目工作过。每次都能发现或者留下一堆额外的诊断文件,随地乱放。像(info.php, test.php ,doMe.php等),这些文件,如果被某个怀有不良企图的人发现,将很有可能泄露系统的有用信息。 继续阅读 »

PHP安全小建议(中)

PHP安全建议#8

在PHP的安全话题上面,完成一件任务往往不能只用一种方法,很多时候需要组合多种策略才能达到最佳安全,我们之前已经讨论了过滤,不过在过滤之后我们仍然需要保持警惕,下一步来进行用户输入的验证。下面是我们今天的PHP安全建议. 继续阅读 »

PHP安全小建议(上)

近日比较关注PHP的安全问题,国内的许多开发者,特别是PHP初学者,很多时候仅满足功能是否实现,对安全的探讨浅尝辄止甚至漠不关心。这样的后果很严重,比如泛滥的SQL注入,甚至还有直接被下载数据库连接文件的……此文译自Cal Evans发表DevZone的系列专题:PHP Security Tip (安全建议/小窍门) 虽然不是最新文章,但提到的许多原则性的东西和经典的做法仍然是值得重视的,绝对是值得一读的好文章,借此抛砖引玉,希望能给大家一点帮助,建立良好的安全意识,了解必要的防范措施。 文中加入本人的理解和注释的地方已经注明,首次翻译,不当之处欢迎指出。谢谢 继续阅读 »