Monthly Archives: 十月 2009
PHP session 刷新丢失问题
1、客户端禁用了cookie 2、浏览器出现问题,暂时无法存取cookie 3、php.ini中的session.use_trans_sid = 0或者编译时没有打开–enable-trans-sid选项 浏览器禁用cookie后的后果就是,$_COOKIE变量内容为空,每次刷新页面后,session id值随之改变。
linux 为普通用户添加sudo权限
我的Federal 11 用了也快3个多月了,一直都没有好好整理下命令行的东东。每次安装个软件,都要用su切换到root,关键是还要输入密码,实在是太不方便了。于是,终于想起了可爱的sudo。好吧,下面就将自己的主要用户添加到sudo用户中去吧。 无奈,还得先切换到root权限。 $ su 然后会提示输入root用户的密码,正确,则进入root模式。 # visudo 注:这里是用的visudo命令,直接编辑/etc/sudoer。也可直接vi这个文件 打开了/etc/sudoer这个文件,然后( Shift + g ) 命令直接跳到文本的末尾。 OK,新开一行,参考无需输密码就可使用root权限的命令的方式,在末尾加入这样的一行: ## Allows yhl execute root command yhl ALL=(ALL) NOPASSWD: ALL 注:yhl ,指的是需要使用sudo命令的用户; ALL=(ALL) ,表示该用户可以执行root所能执行的命令和操作;NOPASSWD: ALL,则表示使用sudo命令时,无需输入sudo命令使用密码。 ok,编辑完刚才的文件,按 ESC 键, 接着按下( Shift + : )进入vi命令模式,在冒号后面敲上wq,表示存储并退出编辑。大功告成。回到命令行,敲入exit命令,退出root用户环境。然后 … Continue reading
一个日历核心算法的实现
这里是搬家过来的原创文章,本文是09年5月份写的(还没写完:重要的实现算法还没介绍),有点旧了,但总算有个家。于是发到这里。 上周由于工作需要,要做一个带标注的日历查询的JS程序。到网上也搜了不少日历相关的JS代码,但是发现都比较复杂,完全不适合本次开发的需要,于是乎萌生了自己开发一个日历算法的想法。 虽然这个程序的算法难度一般,但是还是冒死放出来溜溜,免得今后忘记了。大家都知道,日历主要是解决星期和日期之间的关系,另外就是一个排版的问题,如何将日期和星期一一对应,这个也是要考虑的重点。那么总结一下要解决的问题: 给定日期,求出对应星期 给定日期,求出该月的日历。 一、给定日期,求星期 首先,要知道星期怎么来的,星期从哪天算起,即找到一个计算“原点”,这样之后星期计算就可以有依据了。对于这个问题,其实可以采取反推的办法来实现,找到比如公元元年的星期日(便于求余计算直接得到星期数)的日期。 其次,在知道第一个星期对应的年月日的基础上,求得当前日期是有星期以来多少天,然后用这个间隔天数对一周的天数7取模运算即可求出当前星期几。 因为存在闰年,所以还需要计算有多少个闰年,把这个加上去才能得到间隔天数。 其实这个算法早已存在,下面就这个最常见的公式: W = [Y-1] + [(Y-1)/4] – [(Y-1)/100] + [(Y-1)/400] + D Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天,用个计算机术语就叫相对年初的第0天的偏移量了。 这里就不对这个公式进行推导了,详细推导过程可以到这里下载PDF文档(以下简称PDF):http://download.csdn.net/source/1308663 这个可能要扣一点资源费(莫BS我),表示支持俺的辛苦搜集。 有了上面的公式,接下来就是获得公式里的参数了,其中Y比较容易(地球人人都知道),麻烦的地方在D(其实PDF中Zeller给出了比较简单的算法),不过这里偶比较好奇,所以非要实现D的算法。 为了求D(也就是偏移量),需要计算当前月之前所有月的∑值,以及当前日在当月的偏移量(简称M),那么 D = ∑m + M 其中,∑m 是当年第一月到M所在月前一月的各月天数之和,这个比较简单,关键是确定每个月的天数。原本十二个月每个月天数既定,除了二月份的闰年和平年不一样,这就要根据是否闰年来判断了。根据公里年闰年的算法:则有下面大家所熟知的通用公式。 LeapYear = ( Year / 4 == … Continue reading
PHP实现遍历目录下的所有文件,统计目录大小
这里是搬家过来的原创文章,本文是两年前写的,有点旧了,但总算有个家。于是发到这里。 终于写完了文件管理程序,说不上什么心得,这得那得。在这个过程中,把使用到的一点东东拿出来献宝,算是一个交代,大家不要见笑哈.. php里使用的是 readdir($dir_handle) ,该函数一次仅读一个文件,返回文件名称。她首先从文件 ‘.’ 读起,然后再读 ‘..’ ,读完这两个之后就是’.’(当前)目录下的文件了。按名称升序顺次读取。这里需要使用循环语句才能把当前目录下的所有文件都遍历一遍。 /** * 本函数实现了目录大小的统计功能。参数$dir即目录路径名。 */ function directory_traverse($dir){ if(is_dir($dir)){ if($dir_handle = opendir($dir)){ while (false !== ($file_name = readdir($dir_handle)) ){ $file_type = filetype($dir.’/’.$file_name); if($file_name==’.’ or $file_name ==’..’){ continue; }else{ if(‘dir’ == $file_type){ directory_traverse($dir.’/’.$file_name); }elseif(‘file’ … Continue reading
Hello world!
进入网络行业即将满3年,也做了大大小小不少的站点,但这个才是属于我自己的站点。这里,将是一个新的开始。很多事情,过了,就容易忘记,那么就让这个地方来记录思想的点滴吧,也许翻一翻,还是有值得留恋的东西。