风火家人开发记要

技术总结精华贴

Month: November 2011

CMS, 原创,

修改dedecms在godaddy的linux空间读取权限问题,自动生成文件权限不正确

同事用dedecms作网站,改换成godaddy的linux的空间后,发现生成的静态文件浏览不了,好像是提示权限不对,我没有仔细看。 但问题肯定是生成文件时权限后,普通用户权限不够了,这里交给不知道如何处理的大虾们一个方法。 需要修改如下文件 include/arc.archives.class.php 找到  //循环生成HTML文件  的部分 在  $this->dtp->SaveTo($TRUEfilename); 之后加入   chmod($TRUEfilename,0755); 修改到这个只是针对单文件生成成功浏览了,但批量生成还是有问题,没关系,我们继续 找到  //创建远程文件夹  的部分 在  $this->ftp->upload($localfile, $remotefile, ‘ascii’); 之后加入 chmod($remotefile,0755); 好了,这样就可以了。 多说两句 这里的0755 前面的0一定要带的,这代表8进制,去掉权限就变了,当然也可以改成其他的数字,如 0644 ,这里是网站主可以读写,其他人只有读,权限更低些。 (1611)

查看全文
CMS, 原创

CI(codeigniter)开发之分页的多语言设置(第二课)

分页的配置文件写在 config文件夹中的 pagination.php文件中。 代码如下 $config[‘num_links’] = 5; $config[‘first_link’] = ‘第一页’; $config[‘last_link’] = ‘最后一页’; $config[‘next_link’] = ‘下一页’; $config[‘prev_link’] = ‘上一页’; 这个写,显然不能够多语言。 那就要继续添加代码。 在language文件夹中的语言文件夹中,如english (每个都要有哦),添加需要多语言话的字段, 比如我建的叫 my_lang.php 添加语言代码如下 $lang[‘page_first_link’] = ‘First Page’; $lang[‘page_last_link’] = ‘Last Page’; $lang[‘page_next_link’] = ‘Next Page’; $lang[‘page_prev_link’] = ‘Prev Page’; 这样对应的语言就有了(其他语言照样写)。 回来修改我们的pagination.php文件 $CI =& get_instance();//这句话就可以使用$CI引用语言了 $config[‘num_links’] = 5; $config[‘first_link’] = $CI->lang->line(‘page_first_link’); $config[‘last_link’] = $CI->lang->line(‘page_last_link’); $config[‘next_link’] = $CI->lang->line(‘page_next_link’); $config[‘prev_link’] = $CI->lang->line(‘page_prev_link’); 好,这样当您更换语言的时候,分页的语言也同时改变了(codeigniter)。 (944)

查看全文
其他, 转载

【转载】一堂价值39万元的课,把它看完,你一定会有收获

第一课 一个男人在他妻子洗完澡后准备进浴室洗澡。这时,门铃响了。 妻子迅速用浴巾裹住自己冲到门口。 当她打开门时,邻居鲍勃站在那儿。 在她开口前,鲍勃说,“你如果把浴巾拿掉,我给你800美元。” 想了一会儿,这个女人拿掉浴巾赤裸地站在鲍勃面前。几秒钟后,鲍勃递给她800美元然后离开了。 女人重新裹好浴巾回到屋里。 当她踏进浴室时,丈夫问她,“是谁呀?” “是邻居鲍勃。”她回答。 “哦,”丈夫说,“他有没有提到还欠我800美元?” 故事寓意: 及时与同舟共济的股东分享重要信息,将会避免不必要的曝光。 第二课 一个销售员、一个办事员和他们的经理步行去午餐时发现了一盏古代油灯。 他们摩擦油灯,一个精灵跳了出来。 精灵说:“我能满足你们每人一个愿望。” “我先!我先!”办事员说,“我想去巴哈马群岛,开着快艇,与世隔绝。” 倏!她飞走了。 “该我了!该我了!”销售员说,“我想去夏威夷,躺在沙滩上,有私人女按摩师,免费续杯的冰镇果汁朗姆酒,还有一生中的最爱。” 倏!他飞走了。 “OK, 该你了。”精灵对经理说。 经理回答:“我要那两个蠢货午饭后马上回来工作!” 故事寓意: 永远让你的老板开口先。 第三课 一只鹰坐在高高的树上休息,无所事事。 一只小兔子看见鹰并且问它,“我能象你一样坐着什么都不干吗?” 鹰回答:“行啊,为啥不行。” 于是,兔子坐在鹰下面的地上休息。突然,一只狐狸出现了,它扑到兔子身上把它吃掉了。 故事寓意: 要想坐着无所事事,你必须坐在非常、非常高的位置。 第四课 一只小鸟飞去南方过冬。天实在太冷了。它冻僵了,掉在一片田野上。 它躺在那儿时,一头母牛走过来在它身上拉了一堆屎。 冻僵的小鸟躺在粪堆里,开始感觉到了温暖。 牛粪确实使它暖和过来了。 它躺在温暖的牛粪中,异常高兴,并开始唱起歌来。 一只过路的猫听到鸟叫赶过来看个究竟。 顺着声音,它发现了牛粪下的小鸟,并迅速把它拖出来吃掉了。 故事寓意: (1) 并不是每个在你身上拉屎的都是你的敌人。 (2) 并不是每个把你拖出粪堆的都是你的朋友。 (3) 当你深陷粪堆中的时候,最好闭上你的鸟嘴 1)学会 沉默 有时候,你被人误解,你不想争辩,所以选择沉默。本来就不是所有的人都得了解你,因此你认为不必对全世界喊话。却也有时候,你被最爱的人误解,你难过到不想争辩,也只有选择沉默。全世界都可以不懂你,但他应该懂,若他竟然不能懂,还有什么话可说?生命中往往有连舒伯特都无言以对的时刻,毕竟不是所有的是非都能条列清楚,甚至可能根本没有真正的是与非。那么,不想说话,就不说吧,在多说无益的时候,也许沉默就是最好的解释。 (2)至少 平静 在你跌入人生谷底的时候,你身旁所有的人都告诉你:要坚强,而且要快乐。坚强是绝对需要的,但是快乐?在这种情形下,恐怕是太为难你了。毕竟,谁能在跌得头破血流的时候还觉得高兴?但是至少可以做到平静。平静地看待这件事,平静地把其他该处理的事处理好。平静,没有快乐,也没有不快乐。 (3)学会弯腰 这会是我意外的收获 和别人发生意见上的纷歧,甚造成言语上的冲突,所以你闷闷不乐,因为你觉得都是别人恶意。别再耿耿于怀了,回家去擦地板吧。拎一块抹布,弯下腰,双膝着地,把你面前这张地板的每个角落来回擦拭干净。然后重新省思自己在那场冲突,所说过的每一句话。现在,你发现自己其实也有不对的地方了,是不是?你渐渐心平气和了,是不是?有时候你必须学习弯腰,因为这个动作可以让你谦卑。劳动身体的同时,你也擦亮了自己的心绪。而且,你还拥有了一张光洁的地板呢。这是你的第二个收获。 (4)不要想 如果 当初 你说,人生是一条有无限多岔口的长路,永远在不停地做选择。如果只是选择吃炒面或炒饭,影响似乎不大,但选择读什么科系、做什么工作、结婚或不结婚、要不要有孩子,每一个选择都影响深远,而不同的选择也必定造就完全不一样的人生。你又说,生命中不可承受之情,就在于人生没有重来的机会啊。如果当初如何如何,现在就不会怎样怎样…这种充满怅然的喃喃自语,还是别再多说了吧。每一个岔口的选择其实没有真正的好与坏,只要把人生看成是自己。独一无二的创作,就不会频频回首如果当初做了不一样的选择。 (5)努力吧 不管成功与否 至少曾经美丽 漫步林间,你看见一株藤蔓附着树干,柔软与坚实相互交缠,你感动于这静美的一幕。让幸福与归属就此驻足吧。你想。不知未来会有怎样一番风雨摧折?也许藤将断、树会倒,也许天会荒,地将老。你又想。那么,请时光停格在此刻吧。停格即是永恒。永恒里若有这静美的一刻,未来可能遭遇的种种劫难,便已得到了安慰与报偿。 (6)保持单纯 因为思虑过多,所以你常常把你的人生复杂化了。明明是活在现在,你却总是念念不忘着过去,又忧心忡忡着未来;坚持携带着过去、未来与现在同行,你的人生当然只有一片拖泥带水。而单纯是一种恩宠状态。单纯地以皮肤感受天气的变化,单纯地以鼻腔品尝雨后的青草香,单纯地以眼睛统摄远山近景如一幅画。单纯地活在当下。而当下其实无所谓是非真假。既然没有是非,就不必思虑;没有真假,就无须念念不忘又忧心忡忡。无是非真假,不就像在做梦一样了吗?是呀,就单纯地把你的人生当成梦境去执行吧。   (7)偶尔’俗气’… 吃多了健康食品,偶尔你也想啃一啃鸭舌头和盐酥鸡。看多了大师名剧,偶尔你也想瞄一瞄耳光摔不完眼泪掉不完的连续剧。听多了古典音乐,偶尔你也想唱一唱爱他一百年又恨他一万年的流行歌曲。你知道健康食品对健胃整肠有意义,大师名剧对培养气质有意义,古典音乐对提升性灵有意义,可是,偶尔你其实并不想让自己时时刻刻活得那么有意。人生不需要把自己绑得那么紧。偶尔的小小放纵,是道德的。灵气充满或许接近大人,但偶尔的俗气会更平易近人。 (8)控制情绪 别浪费了~ 今天的你,是不开心的你,因为有人在言语间刺伤了你。你不喜欢吵架,所以你离开;可是你只是离开了那,却没有离开被那人伤害的情境,因此你愈想愈生气。愈有气,你就愈没有力气去理会别的事情,许多更该用心去做去想去处理的事件,就在你漫天漫地的心烦意乱之中,被轻忽被漠视被省略了。因为,你只是一心一意地在生气。在情绪上做文章,这是对自己的浪费,而且是很坏的浪费。毕竟,生气也是要花力气的,而且生气一定伤元气。所以,聪明如你,别让情绪控制了你,当你又要生气之前,不妨轻声地提醒自己一句:“别浪费了。” (9)抓住最好的时机 绝不错过 你曾经买了一件很喜欢的衣裳却舍不得穿,郑重地供奉在衣柜里;许久之后,当你再看见它的时候,却发现它已经过时了。所以,你就这样与它错过了。你也曾经买了一块漂亮的蛋糕却舍不得吃,郑重地供奉在冰箱里;许久之后,当你再看见它的时候,却发现它已经过期了。所以,你也这样与它错过了。没有在最喜欢的时候上身的衣裳,没有在最可口的时候品尝的蛋糕,就像没有在最想做的时候去做的事情,都是遗憾。生命也有保存期限,想做的事该趁早去做。如果你只是把你的心愿郑重地供奉在心里,却未曾去实行,那么唯一的结果,就是与它错过,一如那件过时的衣裳,一如那块过期的蛋糕。 (10)偶尔的出离轨道 某次你搭火车打算到A地去,中途却忽然临时起意在B地下了车。也许是别致的地名吸引了你,也许是偶然一瞥的风景触动了你,总之,你就这样改变了本来预定的行程,然后经历了一场充满惊奇的意外旅行。A地是你原先的目标,B地却让你体会了小小的冒险。回忆起来,你说,那是一次令你难忘的出轨经验。生命中的许多时候不也如此?心无旁骛地奔赴唯一的目的,不过是履行了原本的行程而已;离开预设的轨道,你才有机会发现其他的风景。 (11)悄悄 悄悄地 回归平静.. 曾经有一段时间,你心情低落,甚至懒得拉开窗帘,看着窗外的阳光。因此你当然也忘了去看看,窗台上那一盆每天都需要喝水的玛格丽特。如此不知过了多久,总算有一天,你度过了心情的低潮,同时也想起了你的玛格丽特。天啊,可怜的花,她还活着吗?你战战兢兢地拉开窗帘,却见她迎风招摇,花颜可掬。原来在过去的这段日子里,你虽然忘了喂她喝水,老天却没忘了以雨露眷顾她呢。许多事物悄悄地在你的视线之外进行,而且悄悄地安排好了它们自己。天生万物,天养万物,一切其实无须担心……你只要做的就是做好自己,不留任何遗憾…足矣。 (385)

查看全文
CMS, 原创

CI(codeigniter)开发前基本准备(CI第一课)

既然已经选择了CI作为开发工具,那下载安装的事情也就不用说了。 如果你也希望把网站主题单独分离开来,那就继续往下看吧。 由于个人比较喜欢将主题页面放在根目录下的template文件夹中。 application/core/My_loader.php(系统默认用户拓展前缀为My_) class My_loader extends CI_loader { function __construct() { parent::__construct(); $this->_ci_view_paths = array(FCPATH.’template/’ => TRUE); } } 这样就可以在index.php所在目录(可能为跟目录)建立template文件夹,用来存放各种主题了。 测试:将application下的views文件夹中的welcome_message.php 放入到 template文件中,查看网页是否正常。 结果能够正常展示welcome_message.php的内容。 (658)

查看全文
html & html5, 转载

【转载】IE6 bug大全分享

1. 强制浏览器是用Web标准解析 HTML的写法 <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”“http://www.w3.org/TR/html4/strict.dtd”> 或者XHTML的写法 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> 2、CSS选择器区分IE6不支持子选择器;先针对IE6使用常规申明CSS选择器,然后再用子选择器针对IE7+及其他浏览器。 .content {color:red;} div>p .content {color:blue;} 3、PNG半透明图片的问题虽然可以通过JS等方式解决,但依然存在载入速度等问题,所以,这个在设计上能避免还是尽量避免为好。以达到网站最大优化。 4、IE6下的圆角IE6不支持CSS3的圆角属性,性价比最高的解决方法就是用图片圆角来替代,或者放弃IE6的圆角。 5、IE6背景闪烁如果你给链接、按钮用CSS sprites作为背景,你可能会发现在IE6下会有背景图闪烁的现象。造成这个的原因是由于IE6没有将背景图缓存,每次触发hover的时候都会重新加载,可以用JavaScript设置IE6缓存这些图片:document.execCommand(“BackgroundImageCache”,false,true); 6、最小高度IE6 不支持min-height属性,但它却认为height就是最小高度。解决方法:使用ie6不支持但其余浏览器支持的属性!important。 #container {min-height:200px; height:auto !important; height:200px;} 7、最大高度//直接使用ID来改变元素的最大高度 var container = document.getElementByIdx_x(‘container’); container.style.height = (container.scrollHeight > 199) ? “200px” : “auto”; //写成函数来运行 function setMaxHeight(elementId, height){var container = document.getElementByIdx_x(elementId); container.style.height = (container.scrollHeight > (height – 1)) ? height + “px” : “auto”;} //函数示例 setMaxHeight(‘container1′, 200); etMaxHeight(‘container2′, 500); 8、100% 高度在IE6下,如果要给元素定义100%高度,必须要明确定义它的父级元素的高度,如果你需要给元素定义满屏的高度,就得先给html和body定义 height:100%;。 9、最小宽度同max-height和max-width一样,IE6也不支持min-width。 //直接使用ID来改变元素的最小宽度 var container = document.getElementByIdx_x(‘container’); container.style.width = (container.clientWidth < width) ? “500px” : “auto”; //写成函数来运行 function setMinWidth(elementId, width){var container = document.getElementByIdx_x(elementId); container.style.width = (container.clientWidth < width) ? width + “px” : “auto”;} //函数示例 setMinWidth(‘container1′, 200); setMinWidth(‘container2′, 500); 10、最大宽度//直接使用ID来改变元素的最大宽度 var container = document.getElementByIdx_x(elementId); container.style.width = (container.clientWidth > (width – 1)) ? width + “px” : “auto”; //写成函数来运行 function setMaxWidth(elementId, width){var container = document.getElementByIdx_x(elementId); container.style.width = (container.clientWidth > (width – 1)) ? width + “px” : “auto”;} //函数示例 setMaxWidth(‘container1′, 200); setMaxWidth(‘container2′, 500); 11、双边距Bug当元素浮动时,IE6会错误的把浮动方向的margin值双倍计算。个人觉得较好解决方法是避免float和margin同时使用。 12、清除浮动如果你想用div(或其他容器)包裹一个浮动的元素,你会发现必须给div(容器)定义明确的height、width、overflow之中一个属性(除了auto值)才能将浮动元素严实地包裹。 #container {border:1px solid #333; overflow:auto; height:100%;} #floated1 {float:left; height:300px; width:200px; background:#00F;} #floated2 {float:right; height:400px; width:200px; background:#F0F;} 13、浮动层错位当内容超出外包容器定义的宽度时,在IE6中容器会忽视定义的width值,宽度会错误地随内容宽度增长而增长。浮动层错位问题在IE6下没有真正让人满意的解决方法,虽然可以使用overflow:hidden;或overflow:scroll;来修正,但hidden容易导致其他一些问题,scroll会破坏设计;JavaScript也没法很好地解决这个问题。所以建议是一定要在布局上避免这个问题发生,使用一个固定的布局或者控制好内容的宽度(给内层加width)。 14、躲猫猫bug在IE6和IE7下,躲猫猫bug是一个非常恼人的问题。一个撑破了容器的浮动元素,如果在他之后有不浮动的内容,并且有一些定义了:hover的链接,当鼠标移到那些链接上时,在IE6下就会触发躲猫猫。解决方法很简单:1.在(那个未浮动的)内容之后添加一个<span style=”clear: both;”> </span>2.触发包含了这些链接的容器的hasLayout,一个简单的方法就是给其定义height:1%; 15、绝对定位元素的1像素间距bugIE6下的这个错误是由于进位处理误差造成(IE7已修复),当绝对定位元素的父元素高或宽为奇数时,bottom和right会产生错误。唯一的解决办法就是给父元素定义明确的高宽值,但对于液态布局没有完美的解决方法。 16、3像素间距bug在IE6中,当文本(或无浮动元素)跟在一个浮动的元素之后,文本和这个浮动元素之间会多出3像素的间隔。给浮动层添加 display:inline 和 -3px 负值margin给中间的内容层定义 margin-right 以纠正-3px 17、IE下z-index的bug在IE浏览器中,定位元素的z-index层级是相对于各自的父级容器,所以会导致z-index出现错误的表现。解决方法是给其父级元素定义z- index,有些情况下还需要定义position:relative。 18、Overflow Bug在IE6/7中,overflow无法正确的隐藏有相对定位position:relative;的子元素。解决方法就是给外包容器.wrap加上 position:relative;。 19、横向列表宽度bug如果你使用float:left;把横向摆列,并且内包含的(或其他)触发了 hasLayout,在IE6下就会有错误的表现。解决方法很简单,只需要给定义同样的float:left;即可。 20、列表阶梯bug列表阶梯bug通常会在给<li>的子元素<a>使用float:left;时触发,我们本意是要做一个横向的列表(通常是导航栏),但IE却可能呈现出垂直的或者阶梯状。解决办法就是给<li>定义float:left;而非子元素<a>,或者给<li>定义display:inline;也可以解决。 21、垂直列表间隙bug当我们使用包含一个块级子元素时,IE6(IE7也有可能)会错误地给每条列表元素( )之间添加空隙。 解决方法:把<a>flaot并且清除float来解决这个问题;另外一个办法就是触发<a>的hasLayout(如定义高宽、使用zoom:1;);也可以给<li> 定义display:inline;来解决此问题;另外还有一个极有趣的方法,给包含的文本末尾添加一个空格。 22、IE6中的:hover在IE6中,除了(需要有href属性)才能触发:hover行为,这妨碍了我们实现许多鼠标触碰效果,但还是有一些法子是可以解决它的。最好是不要用:hover来实现重要的功能,仅仅只用它来强化效果。 23、IE6调整窗口大小的

查看全文