分类:

sublime text 编辑器插件安装

没有评论

2013 年 02 月 22 日 at 下午 3:08分类:乱七八糟

1.ctags的配置:
使用package control 搜索ctags 进行安装(安装ctags插件就可以了, 还有一个 CTags for PHP 插件没什么用),
注意安装好插件后要需要安装ctags命令。window 下载 ctags.exe http://vdisk.weibo.com/s/7QZd7 。
将ctags.exe文件放在一个环境变量能访问到的地方。然后在sublime项目文件夹右键, 会出现Ctag:Rebuild Tags 的菜单。
点击它,然后会生成.tags的文件。注意这里的项目就是你的代码的根目录,这个.ctags会生成在根目录中。
然后在你代码中, 光标放在某个函数上, 点击ctrl+shift+鼠标左键 就可以跳转到函数声明的地方。

2.成对匹配的增强。 像这些符号是成对的:花括号{}, 中括号[],括号:() ,引号“” 等。
这些符号当我们鼠标放在开始符号的位置的时候, 希望能明显看到结尾符号在哪儿sublime默认是下划线,很不明显,
想要明显一点,可以安装插件 BracketHighlighter。

3.function name display。 这个插件可以在状态栏显示出当前光标处于哪个函数中。

4.goto document。 这个插件能帮助我们快速查看手册。
比如我们在写php代码时, 突然忘记了某个函数怎么用了,将鼠标放在这个函数上,然后按F1,它能快速打开PHP手册中说明这个函数用法的地方。
安装好 goto document插件后我们再配置快捷键F1 跳转到文档。
打开sublime的菜单栏Preferences->key bindings -User 设置快捷键:
[

{ “keys”: ["f1"], “command”: “goto_documentation” }

]

5.语法提示。 我们需要在写代码的时候如果有语法错误,能立即提示我们, 可以安装sublimelint, sublimeint 需要系统有php命令。
所以需要设置好php的环境变量才行。

6.ZenCoding 这个,不解释了,还不知道ZenCoding的同学强烈推荐去看一下:《Zen Coding: 一种快速编写HTML/CSS代码的方法》。

7.JS Format,一个JS代码格式化插件。安装好之后按快捷键:ctrl+alt+f

8.代码注释格式化。additional PHP snippet插件能提示phpdocument格式的代码,安装DocBlockr 插件,能形成注释块。
不用每次敲注释的斜杠或星号。

Windows live writer

没有评论

2012 年 05 月 03 日 at 下午 4:48分类:乱七八糟

影响项目进度的几大因素

2条评论

2012 年 02 月 18 日 at 下午 10:25分类:乱七八糟

从事互联网行业已有几年了,每家互联网公司都有自己的团队,每个公司都有很多部门,各部门协调不好的话,进度慢,并且大家还累的要死,说一下我脑子里印象比较深的几个。

1,需求变动

这一点是最要命的,需求如果没有书面的形势确定下来的话,就比较容易变动。人的思想都是不断改变的,今天一个想法,明天一个想法这谁都受不了。想法的不同可能会导致程序要重开发,或者数据库要重新设计。这样的情况,做程序的肯定都遇到过,有的情况是这样的,跟别人有合作,假如有100合作伙伴,这100家可能会提出100种可能性,并且这100个需求并不是一次给你的,可能开始的时候只有10种需求,后来需求越来越多,最终的结果是,如果不进行数据库重新设计或者代码重构根本满足不了这种需求。或者是做了很多个小系统,来满足不同用户的需求,这样后期维护就是悲催了。

需求变动有的时候是避免不了的,随着时间的推移,需求肯定会有所变化的,但是要以书面或者是电子档的形势来确定下来,这里确定只是一个阶段,确定下来就有了依据,至少提需求的人会认真的思考,会尽量把需求提得更清楚,更全面,对于他来说也是一种责任。如果真的有需求变动,要在原来的基础上有所改进,也要等到一期做完。因为改进是永无止静的,没有最好,只有更好,所以这种改进要一步一步完成,不能一口吃个胖子出来。

2,不要为了赶进度,而忽视质量

当进度表,安排下去了以后,人手不够,任务重,所以大家都重进度,轻质量。这个必须自己把好关,测试人员把好关,一块一块完成,而不能把小问题全部放到后期来改,这样的话,后期的压力比较大。

举个例子:套模板,模板基本都是死的,套上程序后(比如做了一些特效),样式上会跟静态的模块有可能会不同,这样的问题积累多了的话,到后来在跟前端配合改,会很累,做前端的还不能统畴考虑。所以遇到这样的问题,一开始就和前端配合,这样前端也能了解到,套过后样式的不同等。这样后期bug会少很多。

3,责任心要强

责任心很重要,如果我手头上有很多工作,没有完成,我什么时候都会想着它,做公交车都会做过站。但是也有一些人,可以说根本没有责任心。

就以改bug为例吧,把一个bug交给别人,过一段时间问他,改好了没有,他说改好了,我一看根本没有改好不说,还又改出来一些bug,像这种人尽快的让他离开。到后来基本上团队里面的对他都不信认了。对别人负责任,就是对自己负责任。

4,学会勾通,善于勾通

怎么样把自己的想法很清楚的告诉别人,怎么样很快的了解别人是怎么想的。这不是件容易的事。个人认为最好还是要学会站在别人的立场上考虑问题。做程序,还是做其他的都要有自己的思想,不能别人说什么就是什么。别人说的就一定是对的,一定是最好的吗?多种想法的碰撞后,才会有精华出来。

IT界人士常光顾的WEB站点

一条评论

2011 年 10 月 14 日 at 下午 1:06分类:乱七八糟

1、Chinaunix
网址:http://www.chinaunix.net
简介:中国最大的linux/unix技术社区。

2、ITPub
网址:http://www.itpub.net
简介:有名气的IT技术论坛,看看它的alexa排名就知道有多火了,尤其以数据库技术讨论热烈而闻名。ITPUB论坛的前身是建立在smiling的oracle小组。

3、51cto
网址:http://www.51cto.com
简介:由国内知名IT门户网站管理团队,获近千万风险投资,于2005年8月正式创立,是国内首家定位于网络技术人员的综合性服务平台,是中国最大的网络技术网站。

4、CSDN
网址:http://www.csdn.net
简介:于1999年3月成立,是中国最大的软件开发人员网站,社区热心高手众多,并有不少MVP(微软最有价值专家)长期活跃在这里,类似悬赏的积分制度,也使论坛增添不少乐趣。

5、落伍者
网址:http://www.im286.com/
简介:网站站长都应该知道的地方,只是论坛id需要手工审核。

6、蓝色理想
网址:http://www.blueidea.com/
简介:有名的关于网站设计的网站,拥有大量忠实网友。

7、IT写作社区
网址:http://www.donews.com/
简介:一个可以让你的思维活跃起来的地方,在这里it评论人和撰稿人可以找到很多的文字素材。

8、
博客堂
网址:http://blog.joycode.com/
简介:众多MVP交流的地方,这里有各类最新技术,只是网站成员采用邀请制,不提供注册或者申请功能。

9、IT英雄榜
网址:http://www.itheroes.cn/
简介:网站以介绍it界人士为主,广大从事it的人员可以从中获取他们的经验。

10、邪恶八进制
网址:http://www.eviloctal.com/
简介:目前为数不多的一个讨论气氛浓厚,技术水平高的网络安全网站,邪恶八进制信息安全团队也是一个管理规范、人员素质高的网络安全小组。

叫你制作分享功能插件

没有评论

2011 年 06 月 17 日 at 下午 11:07分类:乱七八糟

今天在网上找了下相关的资料。之前一直以为这个功能很麻烦的 但是现在看来真的很简单,就是需要一段代码而已
在网上有这么几家网站
1、http://www.jiathis.com
2、http://shareto.com.cn/share.html
3、http://www.sharebar.cn/
4、http://www.passit.cn/
只要从这个三个站上面按照你要的风格获取相关的代码 然后放到你的项目的文件中就可以了 就是这么简单。
当然在很多的团购网站中 很多都是自己写的 这里就不在说明了

一个PHP缓存类

没有评论

2011 年 02 月 11 日 at 下午 2:06分类:PHP | 乱七八糟

cache.inc.php:

<?php
 
class Cache {
   /**
    * $dir : 缓存文件存放目录
    * $lifetime : 缓存文件有效期,单位为秒
    * $cacheid : 缓存文件路径,包含文件名
    * $ext : 缓存文件扩展名(可以不用),这里使用是为了查看文件方便
   */
   private $dir;
   private $lifetime;
   private $cacheid;
   private $ext;
   /**
    * 析构函数,检查缓存目录是否有效,默认赋值
   */
   function __construct($dir='',$lifetime=1800) {
       if ($this->dir_isvalid($dir)) {
           $this->dir = $dir;
           $this->lifetime = $lifetime;
           $this->ext = '.Php';
           $this->cacheid = $this->getcacheid();
       }
   }
   /**
    * 检查缓存是否有效
   */
   private function isvalid() {
       if (!file_exists($this->cacheid)) return false;
       if (!(@$mtime = filemtime($this->cacheid))) return false;
       if (mktime() - $mtime > $this->lifetime) return false;
       return true;
   }
   /**
    * 写入缓存
    * $mode == 0 , 以浏览器缓存的方式取得页面内容
    * $mode == 1 , 以直接赋值(通过$content参数接收)的方式取得页面内容
    * $mode == 2 , 以本地读取(fopen ile_get_contents)的方式取得页面内容(似乎这种方式没什么必要)
   */
   public function write($mode=0,$content='') {
       switch ($mode) {
           case 0:
               $content = ob_get_contents();
               break;
           default:
               break;
       }
       ob_end_flush();
       try {
           file_put_contents($this->cacheid,$content);
       }
       catch (Exception $e) {
           $this->error('写入缓存失败!请检查目录权限!');
       }
   }
   /**
    * 加载缓存
    * exit() 载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存
    * ob_start() 开启浏览器缓存用于在页面结尾处取得页面内容
   */
   public function load() {
       if ($this->isvalid()) {
           echo "<span style='display:none;'>This is Cache.</span> ";
           //以下两种方式,哪种方式好?????
           require_once($this->cacheid);
           //echo file_get_contents($this->cacheid);
           exit();
       }
       else {
           ob_start();
       }
   }
   /**
    * 清除缓存
   */
   public function clean() {
       try {
           unlink($this->cacheid);
       }
       catch (Exception $e) {
           $this->error('清除缓存文件失败!请检查目录权限!');
       }
   }
   /**
    * 取得缓存文件路径
   */
   private function getcacheid() {
       return $this->dir.md5($this->geturl()).$this->ext;
   }
   /**
    * 检查目录是否存在或是否可创建
    */
   private function dir_isvalid($dir) {
       if (is_dir($dir)) return true;
       try {
           mkdir($dir,0777);
       }
       catch (Exception $e) {
             $this->error('所设定缓存目录不存在并且创建失败!请检查目录权限!');
             return false;            
       }
       return true;
   }
   /**
    * 取得当前页面完整url
   */
   private function geturl() {
       $url = '';
       if (isset($_SERVER['REQUEST_URI'])) {
           $url = $_SERVER['REQUEST_URI'];
       }
       else {
           $url = $_SERVER['Php_SELF'];
           $url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING'];
       }
       return $url;
   }
   /**
    * 输出错误信息
   */
   private function error($str) {
       echo '<div style="color:red;">'.$str.'</div>';
   }
}
?>
 

demo.php:

<?php
/*
* 可自由转载使用,请保留版权信息,谢谢使用!
* Class Name : Cache (For Php5)
* Version : 1.0
* Description : 动态缓存类,用于控制页面自动生成缓存、调用缓存、更新缓存、删除缓存.
* Author : jiangjun8528@163.com,Junin
* Author Page : http://blog.csdn.Net/sdts/
* Last Modify : 2007-8-22
* Remark :
  1.此版本为Php5版本,本人暂没有写Php4的版本,如需要请自行参考修改(比较容易啦,不要那么懒嘛,呵呵!).
  2.此版本为utf-8编码,如果网站采用其它编码请自行转换,Windows系统用记事本打开另存为,选择相应编码即可(一般ANSI),Linux下请使用相应编辑软件或iconv命令行.
  3.拷贝粘贴的就不用管上面第2条了.
* 关于缓存的一点感想:
* 动态缓存和静态缓存的根本差别在于其是自动的,用户访问页面过程就是生成缓存、浏览缓存、更新缓存的过程,无需人工操作干预.
* 静态缓存指的就是生成静态页面,相关操作一般是在网站后台完成,需人工操作(也就是手动生成).
*/
 
/*
* 使用方法举例
------------------------------------Demo1-------------------------------------------
 
   require_once('cache.inc.php');
   $cachedir = './Cache/'; //设定缓存目录
   $cache = new Cache($cachedir,10); //省略参数即采用缺省设置, $cache = new Cache($cachedir);
   if ($_GET['cacheact'] != 'rewrite') //此处为一技巧,通过xx.Php?cacheact=rewrite更新缓存,以此类推,还可以设定一些其它操作
       $cache->load(); //装载缓存,缓存有效则不执行以下页面代码
   //页面代码开始
   echo date('H:i:s jS F');
   //页面代码结束
   $cache->write(); //首次运行或缓存过期,生成缓存
 
------------------------------------Demo2-------------------------------------------
 
   require_once('cache.inc.php');
   $cachedir = './Cache/'; //设定缓存目录
   $cache = new Cache($cachedir,10); //省略参数即采用缺省设置, $cache = new Cache($cachedir);
   if ($_GET['cacheact'] != 'rewrite') //此处为一技巧,通过xx.Php?cacheact=rewrite更新缓存,以此类推,还可以设定一些其它操作
       $cache->load(); //装载缓存,缓存有效则不执行以下页面代码
   //页面代码开始
   $content = date('H:i:s jS F');
   echo $content;
   //页面代码结束
   $cache->write(1,$content); //首次运行或缓存过期,生成缓存
 
------------------------------------Demo3-------------------------------------------
 
   require_once('cache.inc.php');
   define('CACHEENABLE',true);
   
   if (CACHEENABLE) {
       $cachedir = './Cache/'; //设定缓存目录
       $cache = new Cache($cachedir,10); //省略参数即采用缺省设置, $cache = new Cache($cachedir);
       if ($_GET['cacheact'] != 'rewrite') //此处为一技巧,通过xx.Php?cacheact=rewrite更新缓存,以此类推,还可以设定一些其它操作
           $cache->load(); //装载缓存,缓存有效则不执行以下页面代码    
   }
   //页面代码开始
   $content = date('H:i:s jS F');
   echo $content;
   //页面代码结束
   if (CACHEENABLE)
       $cache->write(1,$content); //首次运行或缓存过期,生成缓存
*/
?>

总结2010

没有评论

2011 年 01 月 07 日 at 下午 8:26分类:乱七八糟

2010年的我,变化了很多很多。最大的变化主要有两点,其一是:我的身份发生了巨大的变化,不在是一个在学校里面上学的大学生了,我已经走向社会了,已经成为了一个社会职业者;其二是:之前的我不知道大学毕业我该从事什么我该干什么?但是在今年的年初,我选择了一个目标—-PHP程序员,并为这个目标已经奋斗了一年了;
在这一年里,我从一个对PHP什么都不懂的大学生一直到现在,对PHP慢慢的经历了一年的洗礼,对他慢慢的产生了感情,这一年中也学了PHP不少的东西,但是相对于高手而言,我还是很菜的,这一年中让我知道了很多关于网站方面的知识,这些东西在这之前,我压根就是不知道有他们的存在,自从我开始接触这个PHP以来,所有所有的一切都在发生着潜移默化的改变着,当同学们还在教室里面上课的时候,而我已经走上了南下工作的道路,在同学们还在暑假里面享受暑假的欢快时,而我却在不断的写着程序。这一年的暑假时大二的暑假,也是大学的最后一个暑假,也是我人生中第一个没有假期的暑假,因为我要工作!每当我回到我的大学校园时,总有那么点亲切感,虽然我只在那个地方呆了一年半的时间,感觉那就是我在合肥的一个家。
这一年里,在技术上面的成绩就是从无到有的那么一年,这一年里面我学会了很多,这个很多包括看的到的和看不到,从对PHP的;零技术到现在的能力和水平,可以说是,对于我自己而言是一个很大的成绩,以及相关的技术上面的提高,对于我来说都是一个很不错的提高,但是我现在还是不能和那些老鸟相比的,也是没法比的!这一点我自己心知杜明。在这一年当中我拼命的学,拼命的往自己的头脑里面灌东西,拼命的想提高自己的能力和技术水平,因此我个人感觉这一年我过的还是蛮充实的,蛮实在的。
在温州工作的这半年时间,着实让我学到了不少东西,认识了社会上各种利害关系的存在,认识了人与人之间的利益交往,认识了只有高技术,高水平的人才能被人们看得起,才能被老板亲莱。认识到了社会上勾心斗角的事情时有发生。。。。。。。在社会上你永远也不能说你完全了解一个人。。。
只有当你走向社会了才知道社会的压力原来是那么的大,是那么的重,压的我们这些稚嫩的肩膀都挺不起来了!面对着社会上种种的压力,我们没有办法,我们只有咬紧牙,不断的努力,不断的充实自己的能力,不断地额提高自己的社会的阅历。。。在这个信息超级爆炸的时代,我们随时都有可能被这个社会残忍的所抛弃,我们只有自己救自己。我们不是富二代,你爸也不是李刚,我们需要我们自己去努力……
对于2010是我人生的一个重大转折点。当然这是个好的转折点,也是我所向往的……2010已经过去了,不管在过去的一年中我们经历了什么,不管是痛苦,还是愉快,那已成为历史。我们需要一颗倘然的心去面对过去的喜怒哀乐,我们更需要一颗充满激情与踌躇的心去面对2011,因为它现在还是一张白纸,你的那一部分正在等在你去描绘。我们要相信自己……
对于自己,在2011年,将会换一个工作环境。年轻人嘛,就是需要到处闯闯。不断的积累自己的社会经验和社会阅历,在2011年关于技术方面,希望自己能有一个质的提高,在新的一年里,希望自己还是能够坚持不懈,不断的努力去奋斗。。。。
最后,祝福自己,也祝福所有的人……

2010年最给力视频

没有评论

2011 年 01 月 05 日 at 下午 11:29分类:乱七八糟

2010旭日阳刚将登兔年春晚

没有评论

2011 年 01 月 02 日 at 下午 5:52分类:乱七八糟

PHP程序员应该掌握的10项技能!

没有评论

2010 年 12 月 27 日 at 下午 11:05分类:乱七八糟

一个PHP程序员应该掌握的10项技能!

  很多学PHP的人一直也搞不清楚,一个PHP程序员和Java程序员或者是.net程序员有什么不同,告诉你,其实都一样!没有什么不同,下面的内容,就是针对一个Java程序员掌握的技能对比PHP来说的!告诉你,它们其实是一样的,不过是工具而已,没有高低贵贱之分。只不过你不熟练,不知道而已!

  1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。

  2、命令:必须熟悉PHP带的一些常用命令及其常用选项,熟悉那些命令,自己运行php.exe -h 如果这些命令你没有全部使用过,那么你对PHP实际上还很不了解。

  3、工具:必须至少熟练使用一种IDE的开发工具,例如:Eclipse、Netbeans、zend或者editplus,ultraedit,包括进行工程管理、常用选项的设置、PHP插件的安装配置以及进行调试。

  4、API:PHP的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用PHP,包括:

  ◆ 文件目录处理函数包80%以上的函数的功能的灵活运用。

  ◆ 日期时间函数中的80%以上的函数的功能的灵活运用

  ◆ 数学函数库中的100%的内容。

  ◆ 网络库中的60%以上的内容,对各个函数的功能比较熟悉。

  ◆ 字符串处理函数下的60%以上的内容,特别是各种处理函数。

  ◆ 正则表达式函数下的90%以上的内容,特别是各种正则处理

  ◆ 一些安全库下的40%以上的内容,如果对于安全没有接触的话根本就不可能掌握PHP

  ◆ XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。

  ◆ 图形图像函数库下的80%以上的内容,特别是一些图像生成和处理

  ◆ MySQL 数据库函数下的90%以上的内容,特别是处理各种数据的函数

  ◆ 数组处理函数下的90%以上的内容,特别是各种操作处理函数

  ◆ 其它PEAR,PECL,和一些扩展类库中的80%以上的内容,特别是一些常用的类的处理

  ◆ 针对不同的需求,查找不同的函数库。

  5、测试:必须熟悉使用phpunit编写测试用例完成代码的自动测试。

  6、管理:必须熟悉使用xinc, phing等完成工程管理的常用任务,例如工程编译、生成phpdoc、生成、版本控制、自动测试。

  7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。

  8、思想:必须掌握OOP的主要要求,这样使用PHP开发的系统才能是真正的PHP系统。

  9、规范:编写的代码必须符合流行的编码规范,这样程序的可读性才比较好。

  10、博学:掌握OOA、OOD、MS SQL Server、Oracle 、Zendframework、cakephp、symfony、模板技术等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。

  综合上述,没发现PHP和java有什么不同!PHP和Java,还是.net一样要学的东西有很多!

  推荐格言:

  浮躁的人容易说:PHP语言不行,应该学Java,C#,VB.NET:–是你自己不行了吧!?

  浮躁的人容易问:PHP和Java,C#,VB.NET哪个好;–告诉你吧,都好–只要你学好就行;

  浮躁的人容易问:我到底该学什么:–别问,学就对了;

  浮躁的人容易问:PHP有钱途吗:–建议你去强银行

  专家建议:

  如果可选的语言有好几种,那么,选择其中学习难度最小的一种。

  不要轻信广告,不要轻信媒体。唯一可以相信的是你的市场。

  个人可以喜欢一种、两种甚至好几种语言,但一定不要排斥其他任何一种语言