时间管理课程内容分享

这些内容是我整理的时间管理课程大纲,内容主要来自《小强升职记》,有兴趣强烈建议看看这本书。
————————————————————————————————————
什么是时间管理
时间管理(Time Management)就是用技巧、技术和工具帮助人们完成工作,实现目标。时间管理并不是要把所有事情做完,而是更有效的运用时间。时间管理的目的除了 要决定你该做些什么事情之外,另一个很重要的目的也是决定什么事情不应该做;时间管理不是完全的掌控,而是降低变动性。时间管理最重要的功能是透过事先的 规划,做为一种提醒与指引。
时间管理不为了让你更累,而是为了更轻松。
时间管理不是为了做更多的事,而为做更少的事去创造更大的价值。
世界上有哪两类人?确实很忙的人 假装很忙的人
认识时间黑洞
超市时间黑洞
电视时间黑洞
网络时间黑洞
避开时间黑洞的小策略
1.关掉MSN、QQ等聊天工具。记住,是彻底关闭,而不是隐身。
2.关掉Outlook的“邮件到达提醒”功能。
3.保持办公环境的干净整洁,并且保证你所需要的办公用品触手可及。这个决对重要,杂乱的办公桌会严重的注意力。
4.给水杯里倒满水。这样不会去倒水而分散你的注意力,并且饮水对你的身体决对有好处。
5. 准备一张任务清单,你一天的安排全在上面,完成一项就化掉一项,这会让你既有责任感又有成就感。
6.选一张舒适的椅子,它可以缓解腰部和颈部的压力。没有健康的状态,就没有良好的注意力。
7.尽量的隔离自己,告诉你周围工作间的同事,最好不要在这1-2个小时打扰我。
8.做事要分轻重缓急,先解决最重要最迫切的事情,这样做,以后,相信你会轻松很多。
9.当你觉得无法集中精力的时候,就休息一下,一般成年人保持精力高度集中的时间是20分钟左右。
10.设置任务的最后期限。一个合适的最后期限,能很明显的提高你的效率,挖掘你的潜力。
发表在 管理心得 | 一条评论

php常用表单验证的正则表达式

//验证函数

function is_user($str){
//检验用户名
return preg_match(“/^([0-9a-zA-Z_]+)$/”, $str);
}
function is_email($str){
//检验email
return preg_match(“/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/”, $str);
}
function is_url($str){
//检验网址
return preg_match(“/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\’:+!]*([^<>\"])*$/”, $str);
}
function is_qq($str){
//检验qq
return preg_match(“/^[1-9]\d{4,9}$/”, $str);
}
function is_zip($str){
//检验邮编
return preg_match(“/^[1-9]\d{5}$/”, $str);
}
function is_idcard($str){
//检验身份证
return preg_match(“/^\d{15}(\d{2}[A-Za-z0-9])?$/”, $str);
}
function is_chinese($str){
//检验是否是中文
return ereg(“^[".chr(0xa1)."-".chr(0xff)."]+$”,$str);
}
function is_english($str){
//检验是否是英文
return preg_match(“/^[A-Za-z]+$/”, $str);
}
function is_mobile($str){
//检验是否是手机
return preg_match(“/^((\(\d{3}\))|(\d{3}\-))?1\d{10}$/”, $str);
}
function is_phone($str){
//检验是否为电话
return preg_match(“/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/”, $str);
}
function is_safe($str){
return (preg_match(“/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\’\”]*)|.{0,5})$|\s/”, $str) != 0);
}

发表在 PHP | 留下评论

晚睡强迫症

最近一位朋友倾诉:我是一公司职员,工作压力挺大,经常加班加点。下班后觉得时间是自己的,应该好好放松才能对得起自己。于是乎,要么同学、同事、朋友一起玩通宵,要么上网聊天到凌晨一、二点,要么看书、看电视到零点后,做这些事情的时候精神头特别足,毫无睡意。待想起明天还要上班、必须要睡觉的时候已经是次日凌晨以后了。没办法,第二天还要按时起床、上班。起床后那种疲劳感、那种晕晕乎乎的感觉让我非常后悔前一天的放纵、晚睡,下决心改变上述生活方式,但到了下班后,一切照旧,我感觉已无力自拔。我该怎么办?

当今社会竞争日趋激烈,工作压力、生活压力等需要适当的方式释放,这位先生叙述的情况具有一定的代表性,称为晚睡强迫症,即下班回家后,吃完饭没事做,于是或打游戏,或上网,或做家务,或看杂书,或……就是不睡觉,困也不睡,直到深夜二、三点钟才上床睡觉。只睡几个小时就得起来上班了。起来那一刻,后悔夜里那么晚才睡,困的要死,白天站着都能睡着了。白天精神萎靡不振,总感觉提不起精神来,一到晚上就很兴奋,通常最晚也要一点多再睡,甚至更晚。

晚睡强迫症正悄悄的侵蚀现代都市年轻人的健康,究竟是什么原因导致的晚睡强迫症呢?晚睡强迫症是强迫性神经官能症的一个分支,更具体地说,是行为焦虑症的一种。患有此病的患者总是被一种强迫思维所困扰。对于睡眠有着一种恐惧感或是有着强烈的睡前兴奋,患者在生活中反复出现不睡的强迫观念及其相关性的行为,或伴有某种焦虑,但其行为能力并未下降,患者自知力完好,知道这样是没有必要的,甚至很痛苦,却无法摆脱焦虑或神经上的兴奋状态 ……, 最终导致无法入睡。

晚睡强迫症的病因,其一和人际关系有关,例如童年有过被强迫从事某种事情的经历:小时候被父母强迫睡觉,内心不乐意,却无能为力,潜意识中有抵触行为,成年后表现出来;其二因为不安全感以及由此引发的焦虑,他们大多是工作繁忙的人。因为工作繁重,所以他们就恨不得一天有25个小时。在潜意识中,他想把一切都置于自己的掌控之中,不能接受任何不确定性。在他们看来,睡觉越晚能处理的工作就越多,如果早早休息,他们会本能地产生焦虑。患了晚睡强迫症,建议您最好去专业心理卫生机构寻求心理医生的帮助。

发表在 生活琐碎 | 留下评论

15个编程好习惯

  编者按:这是国外程序员Al katib总结的一些编程习惯。
  1. 动手编码之前,你需要对要编码实现的解决方案有一个正式的或粗略的设计。永远不要在没有任何设计的前提下就开始编码,除非所编代码不重要。

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

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

  我的方法是为每个程序维护三个不同的版本。比如说,我有一个名为program.c的文件,这个文件同时也被其他项目组成员使用。我把这个文件复制为 program.c.old作为备份文件,并且当我修改时,我会备份另一个名为program.c.wrk的副本文件。当成功完成修改时替换 program.c.wrk文件。

  你还可以给自己的程序版本添加一个日期或一些注释,像program260505.c或programReadFnWrking.c。

  4. 如果工程包含多个源文件,则声称一个README文件,注明每个源文件、数据文件、临时文件以及日志文件(如果有的话)的作用。你还可以注明编译和运行步骤。

  5. 有时候,你一定想知道为什么IF语句没有得到预想的结果。可能你使用的是等号,也就是“=”,而不是条件判定符号“==”。一个比较好的办法是用相反的顺序写条件语句。因此,你的条件语句应该如下:

  if(10==i)…因此,如果你错误地写成了单个等于号,在编译的时候也能检查出来并报错。

  6.使用循环和条件语句时,先把左右括号对应起来,然后再在里面写其他语句。也就是:

代码: 1 for(int i=0;i<10;i++)2 {4 printf(“i=%dn”,i);3 }   注:每一行开头的数字表明写循环代码的顺序。

  7. 避免使用幻数(magic numbers)。例如,不要写

代码: circleArea = 3.14 * pow(radius,2); 而要使用如下代码:

代码: #define PI 3.14 circleArea = PI * pow(radius,2);   
  8. 使用有意义的变量和函数名称。例如,使用‘radius’来代替圆的半径,而不是用‘r’来表示。同样,函数名‘calculateArea’要比其他任何隐晦的缩写要好得多。匆忙之下,我们也许会使用缩写的变量名,但一开始节省时间的话,之后会浪费更多的时间,去猜测缩写变量名代表什么。(编注:)

  9. 为后面的调试使用打印语句,这是个好习惯。但是,当完成最后代码后,去掉这些语句,有时也是一项危险的任务。添加一个方法,用于输出调试信息。当最终版本生成时,只要把这个方法注释掉就行。因此,只在一个地方做修改就可以了。

  10. 代码编写完之后,开始优化代码。之前声明的一些变量,现在可能没用了。同样,并不依赖循环的一些声明可以移到循环模块之外去。扎实的编译知识同样会对以后的代码优化有所帮助。

  11. 对自己的操作系统和硬件要有足够的了解,你可以从资源占用等方面提升程序的性能。

  12. 编写代码时要合理使用缩进,以使代码清晰可读。

  13. 把项目文件放到SOURCE、HEADERS、MAKE、EXES等不同的文件夹中。

  14. 研究别人编写的代码。这可以让你学习到新的编程技术,以及他们解决和你相同的任务时所使用的方法。

  15. 最后一条(但不是最不重要的一条),备份源代码文件,这样当硬盘出错或相同的问题发生时,不至于前功尽弃。

  附加:补充一条,坚持使用一种命名模式。如果你打算用匈牙利命名法,那就坚持并广泛使用,否则将适得其反。参见微软资深工程师 Eric Lippert 的这篇文章《阅读代码不简单》。

  编者后话

  编程的好习惯应不止这15条,也许您不认同上文中的某些观点,请标出相应序号,并说明其不足之处。另外,非常欢迎大家补充分享您的好习惯。

发表在 IT前沿 | 留下评论

实用的正则表达式,总有“一款适合您”

区号+座机号码+分机号码:regexp=”^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$”
手机(中国移动手机号码):regexp=”^((\(\d{3}\))|(\d{3}\-))?13[456789]\d{8}|15[89]\d{8}”
所有手机号码:regexp=”^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}|15[89]\d{8}”(新添加了158,159两个号段)
((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
匹配格式:
11位手机号码
3-4位区号,7-8位直播号码,1-4位分机号
如:12345678901、1234-12345678-1234
1.用正则表达式限制只能输入全角字符: onkeyup=”value=value.replace(/[^\uFF00-\uFFFF]/g,”)” onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\uFF00-\uFFFF]/g,”))”
2.用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^\d]/g,”) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,”))”
3.用正则表达式限制只能输入数字和英文:onkeyup=”value=value.replace(/[\W]/g,”) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,”))”
4.计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,”aa”).length;}
5.javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, “”);
}
利用正则表达式分解和转换IP地址:
6.下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error(“不是一个正确的IP地址!”)
}
}
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
var ip=”10.100.20.168″
ip=ip.split(“.”)
alert(“IP值是:”+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字
匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位
匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用
匹配特定数字:
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
^\d+$ //匹配非负整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$ //匹配正整数
^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0)
^-[0-9]*[1-9][0-9]*$ //匹配负整数
^-?\d+$ //匹配整数
^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0)
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配非正浮点数(负浮点数 + 0)
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数
^(-?\d+)(\.\d+)?$ //匹配浮点数
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
“^\d+$”  //非负整数(正整数 + 0)
“^[0-9]*[1-9][0-9]*$”  //正整数
“^((-\d+)|(0+))$”  //非正整数(负整数 + 0)
“^-[0-9]*[1-9][0-9]*$”  //负整数
“^-?\d+$”    //整数
“^\d+(\.\d+)?$”  //非负浮点数(正浮点数 + 0)
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”  //正浮点数
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$”  //非正浮点数(负浮点数 + 0)
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$”  //负浮点

“^(-?\d+)(\.\d+)?$”  //浮点数
“^[A-Za-z]+$”  //由26个英文字母组成的字符串
“^[A-Z]+$”  //由26个英文字母的大写组成的字符串
“^[a-z]+$”  //由26个英文字母的小写组成的字符串
“^[A-Za-z0-9]+$”  //由数字和26个英文字母组成的字符串
“^\w+$”  //由数字、26个英文字母或者下划线组成的字符串
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”    //email地址
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$”  //url
/^13\d{9}$/gi手机号正则表达式
public static bool IsValidMobileNo(string MobileNo)
{
const string regPattern = @”^(130|131|132|133|134|135|136|137|138|139)\d{8}$”;
return Regex.IsMatch(MobileNo, regPattern);
}
正则表达式–验证手机号码:13[0-9]{9}
实现手机号前带86或是+86的情况:^((\+86)|(86))?(13)\d{9}$
电话号码与手机号码同时验证:(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})
提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *(‘|”)?(\w|\\|\/|\.)+(‘|”| *|>)?
提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
提取信息中的图片链接:(s|S)(r|R)(c|C) *= *(‘|”)?(\w|\\|\/|\.)+(‘|”| *|>)?
提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
提取信息中的中国手机号码:(86)*0*13\d{9}
提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
提取信息中的中国身份证号码:\d{18}|\d{15}
提取信息中的整数:\d+
提取信息中的浮点数(即小数):(-?\d*)\.?\d+
提取信息中的任何数字 :(-?\d*)(\.\d+)?
提取信息中的中文字符串:[\u4e00-\u9fa5]*
提取信息中的双字节字符串 (汉字):[^\x00-\xff]*
发表在 IT前沿 | 留下评论

解决PHP相对目录问题最有效的办法

经过搜集资料和多次测试发现,在其他web编程语言中相对路径都是以当前处理文件目录为基准,而在php中并非如此。php中相对路径是以当前工作目录为基准的,并非以当前处理文件目录为基准,这样在开发过程中带来了不少的麻烦。

用include或requice包含文件时,文件路径前都加上dirname(__file__)。例如:现有a.php、b.php、c.php、d.php4个文件,他们关系为:
b.php(与根目录同一级)
根目录/a.php
根目录/c.php
根目录/dir/d.php
现在a.php中要包含b.php、c.php。写法如下:
<?php
include_once(dirname(__file__).”/../b.php”);
include_once(dirname(__file__).”/c.php”);
?>
如果c.php中要包含d.php。写法如下:
<?php
include_once(dirname(__file__).”/dir/d.php”);
?>
此方式在目前来说是解决路径错位最有效的方法。

发表在 PHP | 留下评论