SESSION在IE下失效的解决,域名不能有下划线

2012/01/05

 我们在设置HOST的时候如果设置了一个带下划线的域名的话,就会有如下的诡异现象出现:

在FF和谷歌浏览器下SESSION是正常的,但是在搜狗浏览器或是IE下面的话SESSION就是无效的,最直接的影响是后台无法登录。

所以在设置HOST的时候一定要遵守域名规范,不能使用带有下划线的域名。


Tags:,, Posted in 工作我抢沙发

RSA类型的SSh-KEY使用攻略(一)

2012/01/04

我们经常会听到这样的一个说法:使用密码登录是不安全的。不错,管理服务器的时候如果使用root用户登录并且是使用密码验证来登录的话是很不安全的,经常看到一些团队的服务器管理是把各个服务器的密码设置得很复杂,有大小写,有下划线,有特殊符号,长度还很长;都以为这样就很安全了,别人就很难破自己的服务器登录密码了,但是不知道自己的一个很SB的做法让自己的服务器处于极度危险中:他把这些服务器的IP和用户名密码保存到了一个文件中,可以看到明文密码的。只要这个文件泄露就随便上服务器为所欲为了。那么有没有更好的办法来管理服务器呢?在这里我推荐一种方法:使用RSA的KEY来登录服务器,禁用服务器密码登录。

那么这个方案是怎么样实现的呢?在这里我们常用的远程服务器管理工具是SecureCRT,这个工具应该是运维同事用得比较多的工具了。首先在secureCRT里面生成RASKEY,按我下面的图片来操作,如果因为secureCRT的版本不同产生文字显示不同的话也不要紧,大概都是在那个位置。如下所示:

第一步:找到:工具->创建公钥

点下一步:

在这里要选择的是:下拉列表中的RAS这个值 

然后会要求你输入通行短语,这个就是你使用这个创建的RASKEY要登录服务器时你用到的密码,这个密码是你自己设置的,跟服务器上原有的密码无关,最好就把注释也填一下,这样比较好看到这个KEY是属于哪一个人的。

下一步之后一般默认是1024,如果觉得1024们的密钥长度还不够安全,可以填上一个最大值:2048,然后点下一步

下一步之后会根据电脑的性能生成密钥,虽然说明上说会花比较长的时候,但是一般是一闪而过就没了,如果电脑比较慢的就把鼠标快速地移动一下就行了。

下一步之后这里要注意的是要选择OpenSSH的密钥格式,经常有人在最后一步搞错选了默认的。这里选择这个格式主要是为了以后使用其它的软件的时候要用到的KEY会比较方便。

最后点完成的时候会问你是不是使用这个刚生成的KEY作为一个全局的KEY,如果是新生成的话就“是”就行了。

到这里为止就生成了一个我们使用的RSA的KEY了。那接下来怎么样使用呢?

大家知道生成的密钥有公钥和私钥,私钥是放在你的电脑上的软件使用的,就是secureCRT用的,公钥是要放到服务器上面去的。那么要放到服务器的哪个目录中去呢?下面我们把公钥放到服务器上去。

一般来说我使用SecureCRT都是使用rz命令来上传文件的,如果你在服务器上输入rz回车没有出现上传文件选择器的话就是没有安装lrzsz这个软件,我的操作系统一般是CentOS,所以可以用下面的命令来安装上传下载相关的软件:

yum -y install lrzsz

这样就可以上传文件了。

我们需要上传公钥的路径在/root/.ssh/这个文件夹下,如果不存在这个文件夹的话可以先创建一下:

 

mkdir -p /root/.ssh/

chmod -R 600 /root/.ssh/

要记得给到正确的权限给这个文件夹,然后把公钥里的内容加到authorized_keys这个文件里去如果不存在这个文件的话也可以创建一个:

touch authorized_keys

然后把Identity.pub这个文件的内容加到authorized_keys里面。

做完这些之后可以直接执行下面的命令让密钥登录生效同时禁止密码登录:

 

sed -i "s#PasswordAuthentication yes#PasswordAuthentication no#g"  /etc/ssh/sshd_config

sed -i "s@#UseDNS yes@UseDNS no@" /etc/ssh/sshd_config

service sshd reload

也可以手动地打开/etc/ssh/sshd_config这个文件去修改相应的项。

完成之后就实现了RSA的KEY登录同时禁用密码登录了。在退出之前最好要先测试一下,先不要关掉当前的CRT窗口,新建一个标签去用KEY登录看能不能正常登录,如果正常了再把原先用密码登录的窗口关掉,如果不这样的话要是禁用密码生效了,但是KEY登录无效的话就杯具了,进不了服务器了。

RSA的KEY登录还可以实现服务器之间传输不需要输入密码,具体的实现可以参考我之前写的博客:www.codeo4.cn/archives/346

本篇暂时到这里结束,后续会有更多的关于RAS-KEY  的使用教程,内容包括使用RSAKEY通过SSH通道连接数据库,实现对不开放外网的3306端口连接管理MYSQL数据库。

 


 


Tags: Posted in linux我抢沙发

抛弃大而笨重的VISIO画流程图-DiagramDesigner简介

2011/12/01

 因为工作需要,我要画一些流程图,但是我又不是很喜欢用word来画,以前有装visio的,visio用来画流程图是很不错的;但是换了一台电脑之后由于电脑本身装了office的破解版的原因吧,总是装不上visio。在网上找到了一个挺不错的代替软件,开源免费,个头小还很快。它就是DiagramDesigner,可以在http://logicnet.dk/DiagramDesigner/这里下载到,同时它还有中文语言包可以汉化,还提供了很多的模板可供下载使用。现在我基本上就用它来替代visio来画图啦,操作简单速度快是一大特点。

 


Tags:, Posted in 工作我抢沙发

我的IOS开发之路

2011/11/30

上周六拿到air,但是装的是雪豹系统,xcode也只是4。看了tinyfool的第一节视频教程之后自己捣鼓了一下,大概自己体验了一下xcode下的代码编写和UI的拖拉,没有得到多少东西。

周二公司有请到一个经验丰富的IOS开发者来做分享,大概听了两个小时吧,对OC做了一些简单的介绍,也用xcode演示了一下怎么样写一些最简单的程序,由于xcode的版本不一致,不能完全全地实现出来。

回家之后决定把系统升级,升到lion和xcode4.3。从电驴上下载了系统的升级文件之后花了一个小时左右把系统升级了,然后再去appstore免费升级了xcode,中间发现有一次下载到四百多M的时候就停了,然后重新来的时候发现下载速度非常慢,上网搜索了一下得到一个加DNS的方法,加上之后下载明显快了不少。下载完之后第二天早上起来的时候按网上说的 要先删除再安装,发现不能按指引来操作,于是点击那个install xcode之后发现可以直接升级。

装好之后就发现和tinyfool说的界面一样了。昨天晚上按视频教程把最后演示的那个demo完全做了出来,试验了三四次才成功的,但是收获不少。自己在网上找了一下发现有很多人推荐《Objective-C 2.0程序设计  原书第2版》这本书挺多人推荐的,于是下了一本PDF的电子书来看,目前看到第三章。

air是13寸的,硬盘是SSD,4G内存,用来打开xcode挺快的。有相关air的使用问题也可以问我,我知道的话就解答。



——————-2011-11-28增加—————

今天看书看到第三章的类,在这里有一个地方和书本有点出入,大概是因为xcode升级了objective-c的一些相关的特性也跟着升级了吧,在新的xcode自动生成的代码中已经不推荐使用:

NSAutoleasePool * pool  = [[NSAutoreleasePool alloc] init];

……

[pool drain];

这样的方式来管理自动释放的池,而是使用更为简明快捷的方式:

@autoreleasepool{

………

}

个人觉得这个更清晰了。


Tags:,, Posted in 开发|编程我抢沙发

提高编程能力的10种方法

2011/11/28

 1、学习一种新的编程语言

学习新的编程语言会强迫你运用全新的方法来思考,特别是当这门语言使用一种你还不怎么熟悉的范式。你能够学习到很多将来你会在你熟悉的语言中用到的思考方式,而且甚至你还可能用新的语言来实现一个正式的项目。

能够提供一次极好的学习过程但不仅限于此的优秀编程语言包括:Lisp(Scheme非常好)、ForthPostScript或者Factor面向堆栈的编程语言)、J(奇妙的阵列编程语言)、Haskell强类型、纯粹的函数式编程语言)、Prolog逻辑程序设计)和Erlang并行编程典范)。

2、读一本优秀且具有挑战性的程序设计书籍

我们能从书中学到很多东西。尽管实践很重要,读一本真正好且具有挑战性的编程书籍是挑战你的思维并将其提升一个层次的极佳方式。这样具有挑战性的书包括:《计算机程序设计艺术》(如果你想要一个真正的挑战)、《计算机程序设计与解释》(SICP)、《编程学(A Discipline of Programming)》或者著名的《龙书(dragon book)》。

你也可以读没那么具有挑战性的书,但要避免读像《天才班》丛书一样、试图在“24小时”或者“21天”教会你东西的书;你很难从中真正提高编程技能。

3、加入一个开源项目

加入一个开源项目有什么好处呢?你将会同别人合作(当你以前只是在周末从事于个人项目时这尤其不错),而且你必须深入研究和学着理解一个你不熟悉的代码库(这会是非常具有挑战性的)。

你可以在像GitHubSourceforgegitoriousBitBucketOhloh的网站上找到不同的项目。

4、解决编程难题

你会经常解决编程难题,而且的确存在很多难题。你可以在Project Euler——可能是关于编程难题的最热门的网站——在上找到各种基于数学的问题。

你也可以尝试代码高尔夫(code golf)——程序员用最少的击键次数来解决一个给定的编程问题。这能教会你很多更隐晦和特殊的语言特性,并且你将必须对编码进行创造性的思考(而这非常有趣)。

编程难题,主要是代码高尔夫,可以在codegolf.stackexchange.com上找到。

5、编码

开始从头到尾写一个程序。设计各种体系架构并实现它,如此往复。

最好的学习编写程序的方法就是编写程序。你会从你自己犯的错误中学习,而且完成一个项目会给人以动力,这比读一本书可有趣的多。

6、读源代码,从中学习

研究著名的软件项目,像Linux内核(提示:它很庞大)。一个适于学习用途的优秀操作系统是MINIX3.你可以从中学到很多新的语言惯用语法,一两种软件体系架构。读不熟悉的代码一开始是令人畏惧的,但报酬也是丰厚的。

你还能够增进对你常用的一些API的理解,或者编程语言——通过读它的实现方式。

7、活跃在编程网站上和多看博客

活跃在像论坛或者Stackoverflow的网站上会将你置于其他程序员及其学识的审视之下。

还有,多看博客,也许这更可取。好的博客有:Joel on Software(尽管Joel不再写博客了,但好的文章可以在存档中找到)、Coding Horror 和 Lambda the Ultimate

你还应该订阅news.ycombinator.com

8、写关于编程的文章

开始在博客上写关于编程的文章,尽管可能写出的文章只有你一个人看。你还可以在不同的问答网站或论坛上回答问题,或者在一些网站(如DreamInCode)上编写教程。在你写关于编程的文章的时候,你得确保使用正确的术语并且知道为什么以便解释问题和技术。这能够让你反省你的编程知识并且提高你的英语语言能力,而这对于编程很重要。

9、学习底层的编程

学习底层的编程及对应语言对于获取对底层机器的更好理解很有用。试试C,也许还可以学学一些处理器的汇编语言

了解计算机是如何执行一个程序和操作系统是怎么工作(在高一层)。如果你真的想认真尝试低级语言编程,你可以读一些关于计算机组织、操作系统、嵌入式系统、操作系统驱动开发等等方面的书(我现在就在读)。

10、别急着求助于StackOverflow。请认真思考先!

当你遇到一个困难,在试着花半分钟解决无果之后,你是怎么做的?求助于StackOverflow。千万别。而是花一些时间独立试着自己解决。拿一张纸和一支铅笔,草拟出解决办法。假如这没有用,停下来一会儿以保证大脑清醒,然后继续。

如果一个小时(具体时间取决于问题的大小)后还是没有结果,这时你才应求助于StackOverflow,反正求助之前你得自己想清楚。

 

英文来源:http://www.antoarts.com/10-ways-to-improve-your-programming-skills/

 


Tags: Posted in 开发|编程我抢沙发

git gui启动错误child process exited abnormally解决方法

2011/09/23

通过 Git GUI 快捷菜单打开 GUI 界面时提示 child process exited abnormally 错误的解决方法
错误日志如下:
child process exited abnormally
child process exited abnormally
while executing
“exec {C:/Program Files/Git/libexec/git-core/git-config.exe} –global –unset gui.recentrepo {^C:/test1$}”
(“eval” body line 1)
invoked from within
“eval exec $opt $cmdp $args”
(procedure “git” line 23)
invoked from within
“git config –global –unset gui.recentrepo “^$p\$”"
(procedure “_unset_recentrepo” line 3)
invoked from within
“_unset_recentrepo [lindex $recent 0]”
(procedure “_append_recentrepos” line 19)
invoked from within
“_append_recentrepos [pwd]”
(procedure “_git_init” line 17)
invoked from within
“_git_init $this”
(procedure “choose_repository::_do_clone2″ line 36)
invoked from within
“choose_repository::_do_clone2 ::choose_repository::__o1::__d”
invoked from within
“.buttons.next invoke”
(“uplevel” body line 1)
invoked from within
“uplevel #0 [list $w invoke]”
(procedure “tk::ButtonUp” line 24)
invoked from within
“tk::ButtonUp .buttons.next”
(command bound to event)
解决方法:
  该错误是由于全局的 .gitconfig 文件中 [gui] 下配置了多个 recentrepo 配置项引起的,该项最多只能配置一项。
  配置文件位于 %HOMEDRIVE%%HOMEPATH%\.gitconfig ,在 windows 下即为 C:\Documents and Settings\%CurrentUser%\.gitconfig 。
  打开该文件,把 [gui] 下重复的 recentrepo 配置项删除,只保留一项或删除全部的 recentrepo 配置,保存文件即可。

Tags: Posted in 未分类我抢沙发

PHP程序员实用小技巧和常见问题

2011/09/22

 php标准注释

   * @name   名字
   * @abstract   申明变量/类/方法
   * @access   指明这个变量、类、函数/方法的存取权限
   * @author   函数作者的名字和邮箱地址
   * @category   组织packages
   * @copyright   指明版权信息
   * @const   指明常量
   * @deprecate   指明不推荐或者是废弃的信息
   * @example   示例
   * @exclude   指明当前的注释将不进行分析,不出现在文挡中
   * @final   指明这是一个最终的类、方法、属性,禁止派生、修改。
   * @global   指明在此函数中引用的全局变量
   * @include   指明包含的文件的信息
   * @link   定义在线连接
   * @module   定义归属的模块信息
   * @modulegroup   定义归属的模块组
   * @package   定义归属的包的信息
   * @param   定义函数或者方法的参数信息
   * @return   定义函数或者方法的返回信息
   * @see   定义需要参考的函数、变量,并加入相应的超级连接。
   * @since   指明该api函数或者方法是从哪个版本开始引入的
   * @static   指明变量、类、函数是静态的。
   * @throws   指明此函数可能抛出的错误异常,极其发生的情况
   * @todo   指明应该改进或没有实现的地方
   * @var   定义说明变量/属性。
   * @version   定义版本信息
   */

 


在我们接受参数过程中 要严谨 绝不能相信任何外部参数

       //防SQL注入攻击
       function SS($name){
               $name = trim($name);
               if (get_magic_quotes_gpc()) {
                       return $name;
               }else{
                       return mysql_real_escape_string($name);    //注意mysql_real_escape_string要在连接数据库之后才能使用,在没有连接数据库时最好用addslashes代替
               }
       }

 


多调试文件输出日志

       //输出日志
       function WriteLog($content){
               $fp = @fopen("/tmp/debug.log","a+");
               $ccc = var_export($content,true);
               @fwrite($fp , $ccc . "\r\n\r\n");
               @fclose($fp) ;
       }


拿到访问该页面的用户IP地址

       //获取用户IP
       function GetIp(){
               if(!empty($_SERVER["HTTP_CLIENT_IP"])) $cip = $_SERVER["HTTP_CLIENT_IP"];
               else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
               else if(!empty($_SERVER["REMOTE_ADDR"])) $cip = $_SERVER["REMOTE_ADDR"];
               else $cip = "";
               return $cip;
       }

 


设置中国时区

       if(function_exists('date_default_timezone_set'))
       {
               @date_default_timezone_set('PRC');
       }


三步计算php程序执行时间

<?php

   $stime=microtime(true); //获取程序开始执行的时间
   echo "hello world";         //你执行的代码
   $etime=microtime(true);//获取程序执行结束的时间
   $total=$etime-$stime;   //计算差值
   echo "{$total} times";

?>


网页超出内存解决办法

在PHP中加入以下语句,这里只会临时增加内存。

       ini_set ('memory_limit', '512M');


截取小数方法

//floor — 舍去法取整

  echo floor(4.3);   // 4

//ceil — 进一法取整

  echo ceil(4.3);    // 5

//round — 对浮点数进行四舍五入

  echo round(1.95583, 2);  // 1.96


在Smarty中获取session/get/post值

但在Smarty模板中,直接就可以通过{$smarty}保留变量访问这些页面请求变量。在模板中使用的示例如下所示:
1. {$smarty.get.page} {* PHP方式:$_GET["page"] *} 
2. {$smarty.post.page} {* PHP方式:$_POST["page"] *} 
3. {$smarty.cookies.username} {* PHP方式:$_COOKIE["username"] *} 
4. {$smarty.session.id} {* PHP方式:$_SESSION["id"] *} 
5. {$smarty.server.SERVER_NAME} {* PHP方式:$_SERVER["SERVER_NAME"] *} 
6. {$smarty.env.PATH} {* PHP方式:$_ENV["PATH"]*} 
7. {$smarty.request.username} {* PHP方式:$_REQUEST["username"] *}


phpmyadmin相关操作

 #2011年3月2日15:39:09 By:Jackfeng
 1、下载安装运行
 cd /dist/dist/
 wget "http://cdnetworks-us-2.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.9.2/phpMyAdmin-3.3.9.2-all-languages.tar.bz2"
 cd /data/web/
 rm -rf phpmyadmin
 tar xf /dist/dist/phpMyAdmin-3.3.9.2-all-languages.tar.bz2
 mv phpMyAdmin-3.3.9.2-all-languages phpmyadmin
 chown -R www.www phpmyadmin
 cd phpmyadmin
 mkdir -p config
 cp config.sample.inc.php config/config.inc.php
 chmod o+w config/config.inc.php
 2、设置多个mysql服务器控制选项
 #开始进setup页面进行设置多台服务器
 #http://youservername/phpmysql/setup/index.php
 #进行新建服务器/设置服务器名称 、主机名、端口、套接字、SSL 点保存 视情况而定可以多建立几个
 #设置好默认语言 点保存即可,开始把配置的文件复制到正常根目录
 mv config/config.inc.php .
 chmod o-rw config.inc.php
 #屏蔽掉里面的 $cfg['ServerDefault'] 这行
 #http://youservername/phpmysql/
 3、最后干掉setup目录
 rm -rf config
 rm -rf /data/web/phpmyadmin/setup


 ?>请把你的“屁股”抹干净

 在实际开发中include文件后 假如你的文件在?>后面带了回车就会出错。
 所以直接不要写" ?> "了
 否则引起莫名其妙的问题影响你的开发时间
 养成好习惯可以减少不必要的麻烦


php采集

采集主要用到 file_get_contents(),preg_replace(),preg_grep(),preg_match(),preg_match_all()等函数
file_get_contents(),主要以字符串形式获取文件,或者链接输出的内容,要注意读出来的是一个字符串。
preg_match_all(),使用正则配合str_replace(),trim(),implod(),explode()函数能够完成采集功能。


smarty赋值计算问题

smarty 不允许的写法其中有,如累加:$a++,$a+=1,这样的写法,必须要先assign一个变量<{assign var="a" value="0"}>,
然后进行<{assign var="a" value=$a+$b}>这样赋值,以下例子应用于控制表格换行操作,每2个换一行,数组为二维数组
php部分代码
 $array = array(  '汕头牛肉丸'=>array('牛筋丸粿条 ','炒叉烧米粉','炒牛肉粿条','炒牛肉米粉'),
       '烧鹅仔'  =>array('澳门烧肉','招牌手撕鸡','本地白切鸡'),
       '真实惠'  =>array('黑椒鸡扒+荷包蛋饭  ','腊味饭  ','金沙焖鸡','柳州醉鸭饭')
            );

html部分代码:

 <{assign var="a" value="0"}>
      <tr>
   <{foreach from=$data key=key item=dataType name=foo2}>
     <{foreach from=$dataType key=key2 item=dataOne name=foo}>
       <td align="center" > <{$dataOne}>   <img src="hot.png" /></td>
       <td align="center"> <{$a+$smarty.foreach.foo.iteration}> </td>
       <td align="center"><a href="/order.php?op=order&mid=73&week=2">订餐</a></td>

       <{ if ($a+$smarty.foreach.foo.iteration)%2==0}>
         </tr><tr>
       <{/if }>

       <{ if $smarty.foreach.foo.last === true }>
         <{assign var="a" value=$a+$smarty.foreach.foo.iteration}>
       <{/if }>

     <{/foreach}>
     <{$smarty.foreach.foo2.iteration}>
   <{/foreach}>

 

 

表单出错返回从填的时候以前填写的东西全部

 当使用session后会出现这种情况,我们可以使用session_cache_limiter();强制生效.
 PLAIN TEXT
 PHP:
 <?php
 session_cache_limiter("private, must-revalidate");
 session_start();
 ...
 ?>


PHP中不太常用的方法

在php中,有一些方法经常被人们所遗忘,在一些特定的需求下,他们还是非常有用的。

返回当前class的所有方法1 get_class_methods()

返回当前页所有加载的文件1 get_included_files()

返回当前页所有class1 get_declared_classes()

返回所有的接口1 get_declared_interfaces()

返回所有的function1 get_defined_functions()

返回当前页所有的变量1 get_defined_vars()

返回当前用户1 get_current_user()

返回所有常量1 get_defined_constants()

获取PHP当前加载的所有扩展1 get_loaded_extensions()

获取指定扩展的所有方法列表1 get_extension_funcs(‘xml’)


正则匹配中文范围

[\u4e00-\u9fa5]+


更改apache默认路径要注意的问题

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
将Deny改为Allow即可,即修改为如下:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
重启apache即可


PHP 追踪此函数被哪些 function 呼叫来使用过

<?php
function get_backtrace()
{
    $history = debug_backtrace();
    $msg = ;
    foreach ($history as $i => $line) {
        $msg .= "#$i {$line['function']}() called at [{$line['file']}:{$line['line']}]\n" ;
     }
    return $msg;
}
?>
现在发现有更简单的 debug_print_backtrace()可以用, 连之前的 function 都不用写了~
<?php
function a() {
    b();
}
function b() {
    c();
}
function c(){
    debug_print_backtrace();
    // print_r(get_backtrace()); // 要用这个记得把上面的 function 加进来.
}
a();
?>
debug_print_backtrace() 的结果
# #0  c() called at [/tmp/a.php:7]
# #1  b() called at [/tmp/a.php:3]
# #2  a() called at [/tmp/a.php:15]
get_backtrace() 的结果
    * #0 get_backtrace() called at [/tmp/a.php:12]
    * #1 c() called at [/tmp/a.php:7]
    * #2 b() called at [/tmp/a.php:3]
    * #3 a() called at [/tmp/a.php:15]


php中 被遗忘的函数

ctype_alnum — Check for alphanumeric character(s)

检测是否是只包含[A-Za-z0-9]

ctype_alpha — Check for alphabetic character(s)

检测是否是只包含[A-Za-z]

 

ctype_cntrl — Check for control character(s)

检查是否是只包含类是“\r\b\t”之类的字符控制字符

 

ctype_digit — Check for numeric character(s)

检查时候是只包含数字字符的字符串(0-9)

 

ctype_graph — Check for any printable character(s) except space

检查是否是只包含有可以打印出来的字符(除了空格)的字符串

 

ctype_lower — Check for lowercase character(s)

检查是否所有的字符都是英文字母,并且都是小写的

 

ctype_print — Check for printable character(s)

检查是否是只包含有可以打印出来的字符的字符串

 

ctype_punct — Check for any printable character which is not whitespace or an alphanumeric character

检查是否是只包含非数字/字符/空格的可打印出来的字符

 

ctype_space — Check for whitespace character(s)

检查是否是只包含类是“\r\b\t”之类的字符和空格

 

ctype_upper — Check for uppercase character(s)

检查是否所有的字符都是英文字母,并且都是大写的

 

ctype_xdigit — Check for character(s) representing a hexadecimal digit

检查是否是16进制的字符串,只能包括“0123456789abcdef”


cli模式要注意接受参数的方法

       //控制台命令行执行时,转换命令行参数-----------------------
       if (empty($_SERVER["REQUEST_URI"]) && $_SERVER["argc"]>=1)
       {       //is command line to run this phpfile
               $argv = $_SERVER["argv"][1];
               parse_str($argv, $_REQUEST);
               parse_str($argv, $_GET);
               define("CRLF", "\r\n");
       }
       else
       {
               //is web(ie/netscape/firefox) to run this phpfile
               define("CRLF", "< BR >\r\n");
       }

如果在cli模式下不加上面这段的话 不好意思 你接受不到参数 cli模式和http模式下接受参数是不相同的

 


Tags:,,,, Posted in 开发|编程我抢沙发

PHP从自学菜鸟到工作新手

2011/09/22

 

在你自学了某本PHP的新手指导的书,按照书上所写的例子做出了一点让你很兴奋甚至得意的程序之后你开始幻想自己可以开始混IT界了,但是出去面试了很多之后发现别人问的问题,做的笔试题根本就有很多是你从来没有见过的,怎么办?怎么补上这些呢?没有人告诉过我做一个PHP程序员还要懂这么东西啊。没关系,只要你花两三个月按照下面的流程走一遍,绝对可以胜任一个PHP程序员的工作了。

第一二周

 1. 抽空看完三本书:《Don't Make Me Think》、《壹佰度》、《PHP从入门到精通》【或者别的PHP入门到进阶级别的书】
 2. 学会用HOST配置/ping网络判断/tracert判断网络情况【具体可以搜索】


第三周

 1. 配置环境Xampp、Eclipse、SVN、HTTPWatch、FireBug、TodoList、Nginx、HOST配置www.自己的姓名全拼.com
 3. www.codeo4.cn复制HTML站点 可以本地浏览www.自己的姓名全拼.com
    (假如你认为复制HTML没什么挑战性 可以写index.php单文件站点 进行抓取内容变更内容)


第四周

 1. 学习Smarty应用写出小功能(做一个注册页面,含:表单验证,验证码等)
 2. 学习Memcache应用写出小功能(写入,查询,删除,遍历)
    并且学习Memcached写出它与memcache的不同之处。
 3. 学习简单正则 查手册 注明所使用正则表达式的意思,实现简单的数据抽取。


第五周

 1. 把www.codoo4.cn复制成的HTML站点改成PHP站点以及采用Smarty两者相结合
 2. 去了解SQL注入漏洞的危险,整理出注入漏洞的方法,与防范的方法,并写出个人对注入的见解
 3. 安装mongodb、mysql(非xampp)、php(非xampp)、infobright、并且写出对应的安装步骤以及
    测试文件归档(要求让不懂的人看懂你的安装步骤)


第六周

 1. 搭建DeDeCMS、PHPCMS、Ecshop/Shopex、Discuz、总结他们的特点
 2. 学习JQuery用法 写出地区三级级联选项菜单
 3. 学习Highcharts图表使用方法


第七周

 1. 到网络中接触高效SQL语句并且总结,要求找出致命的SQL语句10-20种
 2. 安装Linux(CentOS 5.5)【实机或是虚拟机】以及熟悉基本命令以及学会用secureCRT连接到linux系统


第八周到第十三周

 1. 独立编写投票系统
 2. 独立编写答题系统
 3. 独立编写网址管理站点
 4. 独立编写幸运28程序

 

经常遇到的问题

 1、文件路径问题:
 2、文件重复加载问题:
 3、目录结构定义不规范:
 4、存在SQL注入问题:
 5、缺少面向对象的编程习惯:
 6、代码缺少必要的备注,或备注过多:
 7、SVN提交缺少备注:
 8、SVN提交缺少代码检查:
 	——要知道,这个是代码入svn版本库前的最后一次纠正错误的机会。
 9、找资料,搜索技巧:
 	——学会抽取关键字,百度或Google搜索。
 10、不注重用户体验的问题:
 11、缺少职业规划:
 	——做好职业规划,至少要明确。
 	——在未来的3-5年之内,准备做什么?
 	——希望达到什么样的高度?


 关于提交代码的几点建议:

 1、确保相关sql能可正常执行,代码能编译通过,且能跑起来,最合理是自测通过后才提交。

 2、按功能原子提交,建议在项目根目录下提交,这样可以看到所有文件的状态。

 3、提交前,在svn commit窗口内直接双击比对各个修改状态的文件,检查去掉有多余代码(如一些DEBUG日志);
    不要提交个人的配置,以免导致别人冲突,除非新加了些配置项;对新文件,注意勾选全,不要漏,确保原子提交。

 4、若是新功能,涉及比较多新文件,建议提交完后,再次打开svn commit窗口,看有无漏提交的文件,有就及时补提交。

 提交代码时能按这上面4个步骤走一下,应该会节省团队许多时间。


Tags:, Posted in 开发|编程我抢沙发

试用ifttt

2011/07/27

今天大清早地就收到了ifttt的注册邀请。稍微用了一下,基本上就是在上面可以直接调用很多的WEB应用,每个应用都是可以授权的,就像一个WEB应用桌面。好像有点意思,但是还不是很适应那种操作。这个东西会火吗?


Tags:, Posted in 生活1 条评论

google+除了要有邀请码,还要改HOST来实现翻墙来访问才能用

2011/07/14

 有很多人收到了邀请码,但是一点进去之后发现是不能访问的页面,这是因为你没有翻墙,也没有用VPN。有一个很简单方便的方法可以让你可以访问这些应用:修改HOSTS文件

你可以在“开始”–“运行”那里填入如下命令打开hosts文件

notepad C:\WINDOWS\system32\drivers\etc\hosts

也可以直接去C:\WINDOWS\system32\drivers\etc下用文本编辑器打开hosts文件

然后你用你的本机ping一下这个域名www.g.cn,我得到的IP是203.208.46.146把你得到的IP替换我下面的IP,把下面那堆东西加到hosts文件的后面然后保存。再去点击邀请就应该可以用了

203.208.46.146 lh6.googleusercontent.com

203.208.46.146 lh5.googleusercontent.com

203.208.46.146 lh3.googleusercontent.com

203.208.46.146 lh2.googleusercontent.com

203.208.46.146 lh1.googleusercontent.com

203.208.46.146 lh4.googleusercontent.com

203.208.46.146 webcache.googleusercontent.com

203.208.46.146 mail.google.com

203.208.46.146 www.google.com.hk

203.208.46.146 www.google.com

203.208.46.146 picasaweb.google.com

203.208.46.146 labs.google.com

203.208.46.146 www.googlelabs.com

203.208.46.146 docs.google.com

203.208.46.146 plus.google.com

203.208.46.146 profiles.google.com

203.208.46.146 services.google.com

203.208.46.146 clients4.google.com

203.208.46.146 clients2.google.com

203.208.46.146 chrome.google.com

203.208.46.146 tools.google.com


Tags:,, Posted in 生活2 条评论

  • New Baby Countdown

  • 近期文章

  • 最新评论

    • 这也能找到
    • 因ifttt而来!希望请您给予有人网 一呼 http://y...
    • 也遇到这个问题了,分别设置了PHP 和MySQL时区,程序才...
    • 你好,我们是YESVPN 我们可以提供一些免费的VPN帐号...
    • https://plus.google.com/112659...
    • 我也发现了,要是以后都是这个速度多好。
    • 貌似这几天国外主机不抽了。速度都很快。你的博客也很快
    • 麻烦倒是不麻烦,只是数据迁移没有说明的那么方便。有很多隐藏的...