PHP CodeBase: 判断用户是否手机访问

随着移动设备的普及,网站也会迎来越来越多移动设备的访问。用适应PC的页面,很多时候对手机用户不友好,那么有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面。这里就介绍一下,如何判断用户是否用手机访问。 $agent = check_wap(); if( $agent ) { header(‘Location: http://www.nowamagic.net’); exit; } // check if wap function check_wap(){ // 先检查是否为wap代理,准确度高 if(stristr($_SERVER[‘HTTP_VIA’],”wap”)){ return true; } // 检查浏览器是否接受 WML. elseif(strpos(strtoupper($_SERVER[‘HTTP_ACCEPT’]),”VND.WAP.WML”) > 0){ return true; } //检查USER_AGENT elseif(preg_match(‘/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i’, $_SERVER[‘HTTP_USER_AGENT’])){ return true; } else{ return false; } } 再来一个从PHP框架剥离的判断是否为手机移动终端的函数: function is_mobile_request() { $_SERVER[‘ALL_HTTP’] […]

js数值判断是不是整数

  JS输入值是否为判断正整数代码: <script type=”text/javascript”> function test() { var num = document.getElementById(“num”).value; if (num==””) { alert(‘请输入内容’); return false; } if (!(/(^[1-9]\d*$)/.test(num))) { alert(‘输入的不是正整数’); return false; }else { alert(‘输入的是正整数’); } } </script> <html> <body> <input type=”text” id=”num” /> <input type=”button” value=”测 试” onclick=”return test()” /> </body> </html>   附判断数字、浮点的正则表达: ”^\\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+)?$”  //浮点数 留着备用,哪天可能还会用到哟~当然,如果你直接复制的话还是需要修改下符号之类,有些直接复制会变成非英文输入状态下的。。。

程序员的笑话

1、程序猿最烦两件事,第一件事是别人要他给自己的代码写文档,第二件呢?是别人的程序没有留下文档。 2、程序猿的读书历程:x 语言入门 —> x 语言应用实践 —> x 语言高阶编程 —> x 语言的科学与艺术 —> 编程之美 —> 编程之道 —> 编程之禅—> 颈椎病康复指南。 3、还没上大学的时候,高三暑假,跑到家那边的图书城想买传说中的C++的书,然后看到一本C#,我一看,嘿,这个++还写得挺艺术的,重叠起来了,于是把C#买了回来…… 4、问:程序猿最讨厌康熙的哪个儿子。答:胤禩。因为他是八阿哥(bug) 5、有一天,程序猿们突然发现他们要涨的工资掉到井里啦!大家都很害怕,连忙一个吊着一个,从树上伸到井里去捞工资。正好他们摸到工资的时候,一个老程序员忽然兴奋的大叫:别蠢了,要涨的工资还好好的挂在天上呢! 6、诸葛亮是一个优秀的程序猿,每一个锦囊都是应对不同的case而编写的!但是优秀的程序猿也敌不过更优秀的bug!六出祈山,七进中原,鞠躬尽瘁,死而后已的诸葛亮只因为有一个错误的case-马谡,整个结构就被break了! 7、生活中程序猿的真实写照、一款游戏一包烟,一台电脑一下午。一盒泡面一壶水,一顿能管一整天。 8、程序猿要了3个孩子,分别取名叫Ctrl、Alt 和Delete,如果他们不听话,程序猿就只要同时敲他们一下就会好的… 9、宪法顶个球!中国的法律都是.txt文件,不是.exe文件。 10、同事说,他在写i++的时候总觉的自己写的是 我艹………有木有同感???? 11、程序员,年二十有二,始从文,连考而不中。 遂习武,练武场上发一矢,中鼓吏,逐之出。 改学IT,自撰一函数,用之,堆栈溢出。 12、《桃花庵–程序员版》写字楼里写字间,写字间中程序员; 程序人员写程序,又将程序换酒钱; 酒醒只在屏前坐,酒醉还来屏下眠; 酒醉酒醒日复日,屏前屏下年复年; 但愿老死电脑间,不愿鞠躬老板前; 奔驰宝马贵者趣,公交自行程序员; 别人笑我太疯癫,我笑自己命太贱; 但见满街漂亮妹,哪个归得程序员; 13、有一天某程序员去买肉,要了一公斤, 拿到公平电子秤上一称:”额。。怎么少了24克。。” 14、检验代码质量的唯一标准 = 代码review时骂的次数 / 代码review时间 。 15、杀一个程序员不需要用枪,改三次需求就可以了。 16、C++程序员看不起C 程序员, C 程序员看不起java程序员, java程序员看不起C#程序员,C#程序员看不起美工。周末了,美工带着妹子出去约会了,一群SX程序员还在加班。。。 17、问:如何生成一个随机的字符串?答:让新手退出VIM […]

足以搞砸软件开发项目的十大糟糕编码实践

【51CTO译文】告别这些常见但却糟糕的编码实践方式能够让我们的工作更为轻松——而开发出的软件也将更安全且更具可扩展性。 根据“帕累托原则”的说法,特定事件最终结果当中的八成往往由由占二成的随机性因素所决定。这种划分方式被称为二八开原则,而且几乎影响到了人类生产生活当中的每一个领域。 在软件开发领域,该原则也可以这样进行解读:大部分问题实际都是由一小部分不良编码实践所引发。只要消除这部分因素,我们的工作就能变得更轻松也更加富有成效。 在今天的文章中,我们将一同了解十大给软件开发工作带来无穷困扰的糟糕编码实践活动。 1. 代码当中的拼写错误 这类问题的出现频率可能远远超出大家的想象。这样的问题之所以如此普遍而又难以扼制,主要是因为引发问题的根源与我们的编程技术水平并没有必然联系。再出色的开发人员也有可能在代码中不慎写出错误的变量名或者函数名,而这最终将成为一股肆虐无忌而又极具破坏性的力量。更重要的是,准确找出它们实在不是件容易的事。 那我们该如何解决这一难题呢?选择一套良好的集成开发环境(简称IDE)或者是专门面向程序员的文本编辑器,这样能够显著降低拼写错误出现的可能性。除此之外,我们可以选择另一种解决途径:有意选择拼写难度不高的变量与函数名称,这样一来即使出现错误、发现难度也不会太高。最好不要使用receive这类词汇,因为不管检查多少次、我们都不太可能发现它被错写成了recieve。 2.代码内容欠缺必要的缩进或者格式调整 请大家一定记得为代码行设定缩进或者作出格式调整,否则最终一定会发现自己的代码内容既难于阅读又不容易从中找出错误。此外,简洁清晰的格式规划还能提供更为统一的显示效果,进而降低继任者对代码的维护难度。 如果大家使用的IDE不提供代码格式自动调整功能,我们可以考虑使用Uncrustify等代码美化工具,这类软件能够根据用户预告设定好的配置策略自动完成格式转换。 3. 未能实现代码模块化 在编写函数时,务必要保证其能且只能实现单一一种效果——这也是一项值得认真遵循的良好编码实践。这种处理方式能够让代码保持简洁,并因此更易于理解与维护。过长的函数可能拥有多种可能的接入路径,进而使其更难于进行测试。 这里我教大家个好办法:一条函数最多不要超过单屏幕的内容显示极限。另外,如果代码当中包含十个甚至更多“if”语句或者循环,也就说明其逻辑关系太过复杂、应该立刻打回重写。 4.保持警惕:IDE功能带来的安全感也许并不真实 IDE以及其它能够自动调整代码的工具能够奇迹般地提升生产效率。这类工具会根据大家已经输入的内容给出建议变量以及其它提示内容。不过这类工具在实际使用时也有可能带来潜在问题——由于可以毫不费力地从看似正确无误的选项里选出自己需要的内容,大家往往会因此而放下戒心。不要这样,请反复确认以保证我们选择的内容与自己需要的内容完全一致。从本质上讲,这类功能相当于把思考工作转嫁到了工具身上,因此确保其思路正确当然非常重要。 这相当于给我们提供了一种新的思考基准。代码补全工具可以消除当中的拼写等错误并提高生产力,但它们同时也很可能在我们放松警惕时悄悄把错误埋入其中。 5. 硬编码密码 以硬编码方式创建秘密账户与密码具有相当突出的吸引力,大家可以借此在随后的使用过程中直接进入系统。我相信大家都知道这种作法不正确也不科学——没错,这种方式确实非常方便,但同时也相当于给任何打算窥探源代码的家伙提供了可趁之机。 真正的问题在于,硬编码密码最终总会被散布到我们预期之外的人群当中。这就使其成为一种巨大的安全威胁,而且很难得到彻底修复。 6.没有利用良好的加密机制进行数据保护 敏感数据必须在网络传输的过程中受到加密,这是因为其很可能在传递期间遭遇恶意人士的拦截。这并不仅仅是什么最佳冲或者推荐方案,这是一种管理要求——甚至可以上升到法律强制的高度。 也就是说,直接发送数据明文的作法必须被“严格禁止”。此外,大家也最好不要使用自己编写的加密或者模糊处理方案。编写自己的安全加密系统难度很高——看过WEP的遭遇相信各位就会明白——因此请务必选择符合相关行业标准的加密库并正确使用。 7. 过早对代码进行优化 传奇编程大师Donald Knuth曾经说过,“程序员们把大量时间浪费在了考虑或者担心程序中非关键性部件的执行速度身上,但这类处理措施往往会给代码的调试与维护工作带来严重的负面影响。” 在我们的代码上多花心思可能确实会使其执行速度不断提升,但同时也会给调试与维护带来更高难度。最好的办法是:以简洁明确的方式编写代码,然后在真正有必要的时候通过优化提升其性能表现。 8. 缺乏超前思维能力 我们的项目到底会起到什么样的作用、预计将会扩展到怎样的程度、有多少用户会对其进行操作、又将以怎样的速度加以运行?这些问题的答案在开发过程中往往并不明确——但如果大家不能提前作好规划,则肯定无法准确选择合适的框架并开发出能够满足这些需求的应用程序。 Twitter公司的技术团队就遇到过这样的实际情况:如果对未来实际使用强度估计不足,想要后期补救将极为困难。Twitter不得不彻底放弃Ruby on Rails并利用Scale与其它技术方案对代码进行重新编写,这是因为原先的Ruby代码在初始设计上完全没有考虑到Twitter会拥有如此迅猛的用户群体增长速度。 9.增加开发者数量以提高开发进度 几乎没有几个软件项目都够真正按照预定时间完成进度。增加开发者数量来提高开发进度乍听起来似乎是个不错的主意,但这仅仅是种理论而非现实、有时候甚至属于严重失误。在现实情况下,向项目中添加新人往往总要拉低团队的整体生产效率。 10.明知时间规划无法实现却仍勉力苦撑 与此同时,我们还应该保持清醒的头脑、意识到在团队规模不变的前提下进度滞后的情况根本无法扭转——这样的理性思维能力非常重要。如果大家没能完成原有时间表,那很可能是因为这份进度规划在制定时存在着失误。换句话来说,大家需要出台一份新的项目时间表而非盲目坚持原先这份已经被现实证明为不可能的错误方案。 英文:http://www.javaworld.com/article/2393057/developer/10-bad-coding-practices-that-wreck-software-development-projects.html

svn钩子同步代码

#!/bin/sh export LANG=en_US.UTF-8 PATH=/usr/bin SVN=$PATH/svn SVN_LOGIN_INFO=”–username ***** –password ********” #SVN_LOG=/var/log/svn/${DATE}-svn.log SVN_SRC=/opt/code_src/shop-yun/ WEB_SRC=/opt/www-data/shop-yun/ RSYNC=/$PATH/rsync DATE=`/bin/date +%Y%m%d` # svn update ${SVN} update ${SVN_LOGIN_INFO} ${SVN_SRC} # rsync to web from src ${RSYNC} -aH –delete –progress –exclude=”.svn/,conf/app.ini” ${SVN_SRC} ${WEB_SRC} >> /var/log/rsync-self.log.$DATE /bin/chown -R www-data:www-data ${WEB_SRC} ${RSYNC} -avzuP –exclude-from=/opt/code/shop-yun/hooks/rsync_admin_list.conf ${WEB_SRC} root@63.***.**.**::website >> /var/log/rsync-svn.log.$DATE