青春时代是一个短暂的美梦,当你醒来时,它早已消失得无影无踪了。
 
昨日:篇  今日:篇   总帖:篇   会员:
今日:0
文章:43
今日:0
文章:19
今日:0
文章:39
今日:0
文章:44
今日:0
文章:1
今日:0
文章:6
今日:0    总帖:177
admin
308
转载自:http://www.cnblogs.com/leadzen/archive/2008/09/06/1285764.html你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器。       几天前,浏览器家族有刚诞生了一位小王子,就是Google推出的Chrome浏览器。由于Chrome出生名门,尽管他还是个小家伙,没有人敢小看他。以后,咱们常说浏览器的“四大才子”就得改称为“五朵金花”了。       在网站前端开发中,浏览器兼容性问题本已让我们手忙脚乱,Chrome的出世不知道又要给我们添多少乱子。浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本。       JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。       我们先来分析一下各种浏览器的特征及其userAgent。       IE      只有IE支持创建ActiveX控件,因此她有一个其他浏览器没有的东西,就是ActiveXObject函数。只要判断window对象存在ActiveXObject函数,就可以明确判断出当前浏览器是IE。而IE各个版本典型的userAgent如下:         Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)        Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)        Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)        Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)      其中,版本号是MSIE之后的数字。       Firefox       Firefox中的DOM元素都有一个getBoxObjectFor函数,用来获取该DOM元素的位置和大小(IE对应的中是getBoundingClientRect函数)。这是Firefox独有的,判断它即可知道是当前浏览器是Firefox。Firefox几个版本的userAgent大致如下:        Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1        Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3        Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12      其中,版本号是Firefox之后的数字。       Opera       Opera提供了专门的浏览器标志,就是window.opera属性。Opera典型的userAgent如下:         Opera/9.27 (Windows NT 5.2; U; zh-cn)        Opera/8.0 (Macintosh; PPC Mac OS X; U; en)        Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0      其中,版本号是靠近Opera的数字。       Safari       Safari浏览器中有一个其他浏览器没有的openDatabase函数,可做为判断Safari的标志。Safari典型的userAgent如下:        Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13        Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3       其版本号是Version之后的数字。      Chrome      Chrome有一个MessageEvent函数,但Firefox也有。不过,好在Chrome并没有Firefox的getBoxObjectFor函数,根据这个条件还是可以准确判断出Chrome浏览器的。目前,Chrome的userAgent是:         Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13      其中,版本号在Chrome只后的数字。      有趣的是,Chrome的userAgent还包含了Safari的特征,也许这就是Chrome可以运行所有Apple浏览器应用的基础吧。      只要了解了以上信息,我们就可以根基这些特征来判断浏览器类型及其版本了。我们会将判断的结果保存在Sys名字空间中,成为前端框架的基本标志信息,供今后的程序来读取。如果判断出谋种浏览器,Sys名字空间将有一个该浏览器名称的属性,其值为该浏览器的版本号。例如,如果判断出IE 7.0,则Sys.ie的值为7.0;如果判断出Firefox 3.0,则Sys.firefox的值为3.0。下面是判断浏览器的代码:<script type="text/javascript"> var Sys = {}; var ua = navigator.userAgent.toLowerCase(); if (window.ActiveXObject) Sys.ie = ua.match(/msie ([\d.]+)/)[1] else if (document.getBoxObjectFor) Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1] else if (window.MessageEvent && !document.getBoxObjectFor) Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1] else if (window.opera) Sys.opera = ua.match(/opera.([\d.]+)/)[1] else if (window.openDatabase) Sys.safari = ua.match(/version\/([\d.]+)/)[1]; //以下进行测试 if(Sys.ie) document.write('IE: '+Sys.ie); if(Sys.firefox) document.write('Firefox: '+Sys.firefox); if(Sys.chrome) document.write('Chrome: '+Sys.chrome); if(Sys.opera) document.write('Opera: '+Sys.opera); if(Sys.safari) document.write('Safari: '+Sys.safari); </script>      我们把对IE的判断放在第一,因为IE的用户最多,其次是判断Firefox。按使用者多少的顺序来判断浏览器类型,可以提高判断效率,少做无用功。之所以将Chrome放在第三判断,是因为我们预测Chrome很快会成为市场占有率第三的浏览器。其中,在分析浏览器版本时,用到了正则表达式来析取其中的版本信息。      如果你的JavaScript玩得很高,你还可以将前面的判断代码写成这样:<script type="text/javascript"> var Sys = {}; var ua = navigator.userAgent.toLowerCase(); window.ActiveXObject ? Sys.ie = ua.match(/msie ([\d.]+)/)[1] : document.getBoxObjectFor ? Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1] : window.MessageEvent && !document.getBoxObjectFor ? Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1] : window.opera ? Sys.opera = ua.match(/opera.([\d.]+)/)[1] : window.openDatabase ? Sys.safari = ua.match(/version\/([\d.]+)/)[1] : 0; //以下进行测试 if(Sys.ie) document.write('IE: '+Sys.ie); if(Sys.firefox) document.write('Firefox: '+Sys.firefox); if(Sys.chrome) document.write('Chrome: '+Sys.chrome); if(Sys.opera) document.write('Opera: '+Sys.opera); if(Sys.safari) document.write('Safari: '+Sys.safari); </script>      这样可以使JavaScript代码更精简些。当然,可读性稍差一些,就看你是重视效率还是重视可维护性了。      使用不同特征来判断浏览器的方法,虽然在速度上比用正则表达式分析userAgent要来的快,不过这些特征可能会随浏览器版本而变化。比如,一种浏览器本来独有的特性取得了市场上的成功,其他浏览器也就可能跟着加入该特性,从而使该浏览器的独有特征消失,导致我们的判断失败。因此,相对比较保险的做法是通过解析userAgent中的特征来判断浏览器类型。何况,反正判断版本信息也需要解析浏览器的userAgent的。      通过分析各类浏览器的userAgent信息,不难得出分辨各类浏览器及其版本的正则表达式。而且,对浏览器类型的判断和版本的判断完全可以合为一体地进行。于是,我们可以写出下面的代码:<script type="text/javascript"> var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] : (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] : (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] : (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0; //以下进行测试 if (Sys.ie) document.write('IE: ' + Sys.ie); if (Sys.firefox) document.write('Firefox: ' + Sys.firefox); if (Sys.chrome) document.write('Chrome: ' + Sys.chrome); if (Sys.opera) document.write('Opera: ' + Sys.opera); if (Sys.safari) document.write('Safari: ' + Sys.safari); </script>      其中,采用了“... ? ... : ...”这样的判断表达式来精简代码。判断条件是一条赋值语句,既完成正则表达式的匹配及结果复制,又直接作为条件判断。而随后的版本信息只需从前面的匹配结果中提取即可,这是非常高效的代码。       以上的代码都是为了打造前端框架所做的预研,并在五大浏览器上测试通过。今后,判断某种浏览器只需用if(Sys.ie)或if(Sys.firefox)等形式,而判断浏览器版本只需用if(Sys.ie == '8.0')或if(Sys.firefox == '3.0')等形式,表达起来还是非常优雅的。      前端框架项目已经启动,一切就看过程和结果了...IE11(转载自:http://keenwon.com/851.html) : $(function () { var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] : (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] : (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] : (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] : (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0; if (Sys.ie) $('span').text('IE: ' + Sys.ie); if (Sys.firefox) $('span').text('Firefox: ' + Sys.firefox); if (Sys.chrome) $('span').text('Chrome: ' + Sys.chrome); if (Sys.opera) $('span').text('Opera: ' + Sys.opera); if (Sys.safari) $('span').text('Safari: ' + Sys.safari); }); 在线演示:http://keenwon.com/demo/201402/js-check-browser.html
开发 5 0 206天前
admin
287
转载:http://pcedu.pconline.com.cn/966/9669884.html  【PConline 杂谈】SSD已经日渐流行,现在买电脑不挑带SSD的,都不好意思说自己真懂用户体验。和传统HDD相比,SSD由闪存构成,闪存低延迟的特性,令SSD在随机读写性能方面大幅超越HDD,这也是SSD能带来流畅操作体验的关键。但是,SSD又不仅仅只是闪存的简单组装,仅仅把闪存堆砌起来,并不能称作是SSD。调用闪存的软件算法,同样对SSD的寿命、稳定性、性能等方方面面起着重大作用。SSD中的软件算法你都了解吗?今天,就一起来谈谈SSD中有哪些软件算法吧!SSD可不是把闪存焊在一起就能做出来的  FTL:没它SSD就无法识别  我们都知道SSD的硬件构成和HDD完全不同,因此操作系统识别HDD的很多机制,并不适用于SSD。例如,硬盘是由盘片来构成的,盘片是同心圆,把圆分成一个个小小的扇形,数据在这些扇形中储存,这些扇形就被称之为扇区。操作系统把扇区组织起来,构成FAT32、NTFS等文件系统,用户才得以访问文件/文件夹而不是一个个的扇区物理地址。基本上,操作系统建立文件系统的基础就是扇区。HDD硬盘盘片上的扇区,SSD没有这个结构  SSD由闪存构成,没有盘片,自然也没有扇区。SSD的闪存颗粒基础单位是数据容量4KB的Page(页),Page组成Block(区),Block组成Plane(平面),最后Plane组成Die(晶片),这就是闪存的硬件架构。可见SSD没有扇区,怎么办?这就得靠一些算法来进行转换了。SSD使用的是闪存,闪存结构和HDD不同,需要FTL层和文件系统对话  把SSD的架构虚拟成HDD的算法,叫做“FTL”(Flash Translation Lay)。FTL算法是由SSD主控提供的,比操作系统更加底层。FTL作为一个软件中间层,可以把SSD基于Page的硬件架构映射成HDD基于扇区的硬件架构。操作系统为SSD建立文件系统的时候,有了FTL,操作系统看到的东西和HDD没啥两样,就可以用传统的方法对SSD进行分区、格式化等操作,不需要使用专为SSD而生的文件系统。得益于FTL软件算法,SSD才能无缝接班HDD,没它SSD就无法识别。  GC垃圾回收:没它SSD就巨慢无比  闪存的机制是比较独特的,当你向闪存写入数据的时候,必须先把闪存中的数据擦除掉,才能写入。同时,闪存的最小读写单位是Page,但最小的擦除单位是Block。一个Block中包含了多个Page,SSD工作一段时间后,就没有哪个Block中的Page都是空白的了。如果要擦除某个Block,就必须先把这个Block中存在有效数据的Page复制备份到其他地方,接而进行擦除,这样一来才不会丢数据。每个Page都可以写入数据,但覆盖写入需要先擦除原先的数据,一擦除整个Block都会被擦除  有效数据的Page要复制到什么地方进行备份呢?一些比较烂的产品,会把这些Page的数据复制到缓存,待到Block擦除后,再把数据写回去,这样一来SSD的写入速度就更加悲剧了——既要写原来的数据,又要写新数据。解决这个问题的,就是SSD中的GC(Gabage Collection),也就是垃圾回收算法。  GC垃圾回收算法看着有点类似碎片整理,它可以把某个Block中的存在有效数据的Page,移动到其他Block中,从而让操作系统得以擦除这整一个Block。接着再往该Block写数据,就不需要把备份到其他地方的Page也写回去了。CG发生在FTL层,不同的SSD的GC算法是不一样的,GC算法的不同,深切影响着SSD的性能。  Trim:大大提高垃圾回收效率  Trim是一种用来增加GC垃圾回收效率的算法。没有Trim的话,会出现这样一种情况:在操作系统删除一个文件,实际上数据在物理层面上并没有被删除。于是,SSD的某个Block所有Page都会被填满,待到真正写入数据的时候,才被迫进行GC垃圾回收,主控才开始把有效数据的Page移动到其他Block上,进而擦除该Block。如此一来,速度就很慢,SSD用久了每次写入数据都得先GC,用户体验非常不好。CMD中查询“fsutil behavior QUERY DisableDeleteNotify”,如图显示就是开启了Trim  Trim就可以大大缓解这种情况。操作系统删除数据后,Trim会告诉SSD主控哪些Page的数据对应着删除的数据,这些Page会被标记成为无效Page。接着,在闲暇时段,SSD主控就会主动进行CG,把有效数据的Page移走,然后擦除这些Block的数据,提前为操作系统的数据写入准备好足够多的Block。如此一来,就算是长期使用,只要SSD不是装得太满,性能都不会有太过明显的下滑,大大提升了用户体验。Trim算法是由操作系统提供的,Win7、Android 4.3以后的操作系统都支持Trim。  磨损平衡:保证闪存寿命被均匀消耗  我们知道闪存是有擦写寿命的,例如MLC闪存只能够擦写数千次,TLC闪存只能够擦写数百次等等。其实以现在的SSD容量,总擦写数据量是非常惊人的,例如256G的SSD,寿命是500次擦写(P/E)的话,那么就需要写入125TB的数据,闪存才寿终正寝——就算你每天写入10G数据,也需要用三十多年才能把闪存给写挂,更何况很少人每天往SSD中写10G数据。TLC的擦写次数不尽如人意,但正常使用其实也很难挂掉  但是很多朋友仍不信任SSD的寿命,理由是SSD的这个寿命,是根据全盘容量来估算的。有的朋友认为,平时读写数据,会集中读写SSD的其中一部分闪存,这部分的闪存寿命就会损耗得特别快。一旦这部分闪存挂了,那么整块SSD也就挂了。然而事实真的是这样吗?  事实当然并非如此。实际上,SSD拥有磨损平衡(Wear Leveling)算法,令所有闪存磨损度尽可能保持一致。SSD的磨损平衡算法大致分为动态和静态两种。动态的算法就是当写入新数据的时候,会自动往比较新的Block中去写,老的闪存就放在一旁歇歇;而静态的算法就更加先进,就算没有数据写入,SSD监测到某些闪存Block比较老,会自动进行数据分配,让比较老的闪存Block承担不需要写数据的储存任务,同时让较新的闪存Block腾出空间,平日的数据读写就在比较新的Block中进行——如此一来,各个Block的寿命损耗,就都差不多了。  总结  SSD绝不是把闪存堆在一起就能做成的,要让SSD稳定、快速地运行,还有赖于种种软件算法。在选用SSD的时候,可以多关注一下该SSD所使用的主控方案,关注该主控的算法是否靠谱;在使用SSD时,要选择适合的操作系统,并及时更新SSD的固件和驱动。如此一来,才会得到更好的体验。
维护 5 0 206天前
admin
363
UTF-8 页面在IE显示中文乱码解决方案  将 <meta. http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 写在title前面。起因  这个问题要从浏览器解析html的方式讲起。浏览器读取了页面的html代码后开始进行解析。解析前浏览器要先知道页面的编码方式,然后根据编码方式进行解码,然后才能开始解析。我大概想了一下,浏览器可以从下面3个方面得到页面编码方式:HTTP Header中的"Content-Type"项、返回的html代码开头是否有BOM、html代码中的meta标签。  浏览器(无论是IE还是Firefox)在解析页面时,首先取HTTP Header中的Content-Type项,如果有写明charset的话就认定页面的编码方式为charset指定的值。如果没有指明,则认定为默认值。根据上表,IE中文版的默认值是GB2312,Firefox中文版的默认值是GBK,不过IE的GB2312好像和GBK没啥区别。然后,浏览器会看一下有没有BOM。一旦发现有UTF-8的3字节BOM,则重新认定页面的编码方式为UTF-8。  然后是解码阶段,解码完成后是解析html的阶段。解析html的过程中,当解析到head部分的meta标签时,浏览器会根据<meta. http-equiv="Content-Type" content="text/html; charset=UTF-8" />这个语句中的说明,重新认定编码方式为charset后面的方式,中断html解析过程,返回到解码步骤重新解码。  知道了这个步骤,再来看这个表:在加了Header语句设置了HTTP Header后,两个浏览器解析所有页面都是用的UTF-8方式,包括GBK编码的页面。(当然要正常解析GBK编码的文件,可以在title前加上个meta标签标明编码方式。)在上表的下半部分可以清楚的看到这一点。再来看上半部分,在没有加Header语句的页面里,首先浏览器认定页面编码方式为默认值GBK。  检测有无UTF-8的3字节BOM,检测到的,认定页面编码方式为UTF-8,解码再解析html,一切正常。如上表所示,上半部分带BOM的页面都能正常显示。如果没有BOM,页面可能是GBK或者UTF-8(no BOM)格式,浏览器会先按照默认的GBK方式开始解码。页面为GBK格式时,无meta时正常,有meta时浏览器解析到meta标签会回头重现按UTF-8方式解码,所以GBK,meta在前或后,无论IE还是FF都是乱码。再看UTF-8(no BOM)的页面,无meta时FF用GBK方式解码下去,最终显示乱码,IE则解码出错,形成空白页。有meta时,Firefox找到meta后回头重新按UTF-8方式解码,所以无论meta在前或在后都是正常;IE则是在meta在前时能够和Firefox一样回头重新解码,当meta在后时,又是解析到title出错,返回空白页。
开发 5 0 210天前
admin
278
对自己落井下石的人 新浪微博宋涵 @ 2015-01-13 ★ 8064 人为什么难以获得持久的幸福?除了在欲求不足的痛苦和满足后的无聊间摇摆之外,他们还几乎不懂得珍惜自己,而总是热衷于对自己落井下石——受到伤害以后,许多人最本能的反应不是安慰和爱抚自己,而是和那些伤害自己的势力一起,责备、嘲笑、看轻自己,甚至再一次践踏自己,这就是人心常常做的事。 1 人为什么难以获得持久的幸福?叔本华认为是人的本性使然:“生命是一团欲望,欲望不能满足便痛苦,满足便无聊,人生就在痛苦和无聊之间摇摆。” 这句话的魔力在于,你盯着它看很多遍,还是找不到可供反驳的漏洞。这么普通的牢笼,我们竟然就是逃脱不了。看来只有能克服这种天然本性的人,才能比大多数人获得更长久一点的幸福。 所以,人心是多么矛盾的东西啊,既不顾一切地追求快乐,又不由自主跳到沼泽之中,像一个滑稽的小丑,竭尽全力还是停止不前;而它自己还意识不到,还以为在追寻快乐的大道上一往无前。 然而,阻碍人们获得幸福的本性还不止这一点,如果我们花一点时间,跳出我们习以为常的世界——对,有个好方法是想象自己是外星人,第一次来到地球上,第一次观察到人类(你不妨试一试),就会发现人类行为的另一个奇特之处:他们几乎不懂得珍惜自己,而总是热衷于对自己落井下石,这种狂热甚至到了令一个外星生物心惊肉跳的地步。 对自己落井下石的人Give Yourself a Bear Hug, by Lim Heng Swee. 2 为什么这么说呢?请耐心一点,我会将“外星人”看到的现象一一道来: 降落到地球上的生命,是幸运的,因为这是一个温暖、壮美、丰富、有趣的星球;同时也充满着不幸的可能,因为这个星球上无时不刻在上演淘汰、灾难和毁灭。至于人类社会,就更复杂了,他们有精巧的文明,也有厚重的愚昧和满满的恶意。 一个人从出生到地球上的那一刻起,就身处这样既有好又有坏的环境中。人是如此脆弱,如此容易受到“坏”的伤害。活着的人,总会有些伤害在等待他们:严重的,被人杀害、虐待或羞辱,普通的,被人漠视、嘲弄或误解;看得见的,是淤青流血的肉体,看不见的,是崩溃破碎的灵魂。人不仅要面对大自然的变化无常,还有身边人举着那愚钝粗糙的大锯子、有意或无意切割自己的伤害与痛苦。 任何一个心怀正义和悲悯的人(哪怕是一个“外星人”),看到这样受苦的现象,都会忍不住同情那无辜的受害者,如果有条件,还会给予一点慰藉和一点帮助。 可是,当人自己受到伤害以后,最本能的反应不是安慰和爱抚自己,而是和那些伤害自己的势力一起,责备、嘲笑、看轻自己,甚至再一次践踏自己,这不是太奇怪了吗?可这就是人心常常做的事。 3 不信吗?你去看那些自卑的、佝偻着精神脊椎的人,那些胆怯的、躲避着幸福的人,那些绝望的、放弃任何努力的人,都是源自于他们在毫无反抗力的时候,受到了世界的恶意与伤害。 因为被人不断地说:“你丑得像个怪胎”、“怎么会有你这么笨的小孩”、“为什么要把你生出来”,人就会相信这些话,相信自己是毫无价值的,他/她就再不敢奢望幸福。 因为被人打骂、侮辱、遗弃,人在短暂的愤怒之后,就会怀疑自己活着的意义,“不值得活下去”的念头就会像幽灵一样总是缠着他/她; 哪怕因为最普通的求爱失败、或者错爱了一个人,就怀疑再也不会有人爱自己,于是扔掉仅有的勇气,再不去追寻;或者相信自己只能配得上坏人,心甘情愿地依附着伤害自己的人。——这些都是人心常常做的事啊。 4 这种行为是什么呢?就是在跌落井底之后,人不会拍掉身上的污浊,也不会包扎疼痛的伤口,更不会锻炼力气重回光明之地,而是下意识地搬起石头,狠狠砸自己的腿,让自己再也走不出这样的境地。 人在不知不觉中,也成为了加害者的同盟。 5 伤害发生过后,人对自己的“落井下石”,是如此快速、隐蔽而强大的本能反应,以至于本该有的理解、安慰、鼓励都毫无立足之地。 作为一个外星人,你会看到,人是一个悲哀的物种,因为他们的基因密码里,没有“自爱”的默认设置,他们好像天生就不会自爱。 他们的自爱,都来源于他人的爱,只有被真爱包围时,他们内心的“自爱”才会苏醒和启动。 如果遇到伤害,他们的认知系统,就会自动认同伤害传递的信息,形成顽强的暗示,化为第二次更旷日持久的伤害。 当别人说他/她丑,他/她就要用尽一切办法证明自己不丑;当父母忽视他/她,他/她就要拼命成为一个耀眼的人,要被父母看见和重视;当整个世界都曾苛刻地对待过他/她,他/她就会用玩世不恭的桀骜态度来表达无法爱上任何一个人的绝望。在这一切的“努力”深处,藏着惶恐和恐惧,正是他们在认同那些声音:“你就是丑”、“你就是个失败者”、“你就是没人爱”。给自己一个温柔的拥抱,肯定自己的存在,竟是这么难。 对自己落井下石的人 6 外星人会感叹,这是一个多么悲哀的循环:“自爱”要有“他爱”才能启动,可是,没有“自爱”的人又无法给予“他爱”,那么他/她身边的人,也无法启动“自爱”。 等等,外星人不要急着离开。我们再重新审问一下这个论断:人的基因密码里,真的没有“自爱”的默认设置吗? 如果没有,那么最初的、来自他人的“爱”是怎么来的?真的是来自“上帝”吗?假若真的是“上帝”的爱启动了人类的爱,那么每一个个体的内心中不正是有了“自爱”的种子? 看来之前的结论是太武断了。聪明的外星人得修正一下,“自爱”只是习惯沉睡而已,在许多人的一生中很少发挥作用,但也有罕见的案例:无论受到怎样的伤害,这些人永远是自己的支持者;他们绝不对自己落井下石。 曾经有大学生被拍到全裸洗澡的照片,受不了舆论的压力而跳楼自杀;但是,也有一个叫珍妮弗·劳伦斯的女人,在卷入“艳照门”事件后,选择为自己撑腰,对着全世界的恶意大声说:“我不知道我有什么好道歉的。”从外星人的角度看,珍妮弗·劳伦斯的做法明显更合理;为了他人的恶意而惩罚自己,不是不可理喻吗?但从人类的历史来看,珍妮弗·劳伦斯反而是个奇葩。 对自己落井下石的人 还有一个叫奥普拉·温弗瑞的女人,从小就被虐待和性侵,14岁就生下了第一个孩子,可是她没有像大多数人那样,被伤害所毁灭,她只需要简单地告诉自己一件事:“这些都不是我的错”,就能一步一步接近她想要的正常生活。 如果你仔细辨认,你一定能在茫茫人海中认出这些人。 这些人被称为“坚强”或“英雄”,可是他们只是懂得温柔地爱自己而已。他们就是坚定一个信念:即使全世界都不爱你(事实上,全世界都不爱你,这只是某一种绝望境地中的狭隘错觉),你总有一个坚定的拥护者:你自己。 神奇的事情是,当一个人在无论如何的情况下,都能突破恐惧与绝望,去珍惜自己时,残酷的世界也会呈现出温柔的一面。 7 “不爱自己”是人类的死穴,虽然一部分人整天嚷着要“爱别人”,还有一部分有觉醒的人呼吁要“爱自己”,然而真正做到能爱自己的,非常罕见。我们总是不自觉地,在伤害我们的外在势力上,补上最关键的一刀。 爱自己,是知行合一,这个难度级别估计仅次于克服叔本华的“钟摆定律”。 无论如何,活着就是要活得更智慧和更幸福。我们无法完全克服本能,但我们可以在本能冲动之前,留一点迟疑和观察。世界辽阔无常,有些路总要一个人走,在这条路上,我们可以尽量去做:少一点对自己“落井下石”,多给自己一点理解的拥抱。■
休闲 5 0 211天前
admin
396
      一个较经典的PHP文件上传类代码,虽然很老,但用的人还是挺多的,当初自己在用PHP做站的时候,就用了这个类。包括有调用的例子,对新手也友好,这个类可以上传图片和其它格式的文件,看你怎么设置了。另外这个上传类可对文件上传大小限制,可自动创建文件上传目录,类中的方法用好了,可以扩展较多的功能。<?php // $Id: upload.class.php,v 1.0 2001/10/14 14:06:57 whxbb Exp $ $UPLOAD_CLASS_ERROR = array( 1 => '不允许上传该格式文件', 2 => '目录不可写', 3 => '文件已存在', 4 => '不知名错误', 5 => '文件太大' ); /** * Purpose * 文件上传 * Example * $fileArr['file'] = $file; $fileArr['name'] = $file_name; $fileArr['size'] = $file_size; $fileArr['type'] = $file_type; // 所允许上传的文件类型 $filetypes = array('gif','jpg','jpge','png'); // 文件上传目录 $savepath = "/usr/htdocs/upload/"; // 没有最大限制 0 无限制 $maxsize = 0; // 覆盖 0 不允许 1 允许 $overwrite = 0; $upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize); if (!$upload->run()) { echo $upload->errmsg(); } * * @author whxbb([email protected]) * @version 0.1 */ class upload { var $file; var $file_name; var $file_size; var $file_type; /** 保存名 */ var $savename; /** 保存路径 */ var $savepath; /** 文件格式限定 */ var $fileformat = array(); /** 覆盖模式 */ var $overwrite = 0; /** 文件最大字节 */ var $maxsize = 0; /** 文件扩展名 */ var $ext; /** 错误代号 */ var $errno; /** * 构造函数 * @param $fileArr 文件信息数组 'file' 临时文件所在路径及文件名 'name' 上传文件名 'size' 上传文件大小 'type' 上传文件类型 * @param savename 文件保存名 * @param savepath 文件保存路径 * @param fileformat 文件格式限制数组 * @param overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖 * @param maxsize 文件最大尺寸 */ function upload($fileArr, $savename, $savepath, $fileformat, $overwrite = 0, $maxsize = 0) { $this->file = $fileArr['file']; $this->file_name = $fileArr['name']; $this->file_size = $fileArr['size']; $this->file_type = $fileArr['type']; $this->get_ext(); $this->set_savepath($savepath); $this->set_fileformat($fileformat); $this->set_overwrite($overwrite); $this->set_savename($savename); $this->set_maxsize($maxsize); } /** 上传 */ function run() { /** 检查文件格式 */ if (!$this->validate_format()) { $this->errno = 1; return false; } /** 检查目录是否可写 */ if([email protected]_writable($this->savepath)) { $this->errno = 2; return false; } /** 如果不允许覆盖,检查文件是否已经存在 */ if($this->overwrite == 0 && @file_exists($this->savepath.$this->savename)) { $this->errno = 3; return false; } /** 如果有大小限制,检查文件是否超过限制 */ if ($this->maxsize != 0 ) { if ($this->file_size > $this->maxsize) { $this->errno = 5; return false; } } /** 文件上传 */ if([email protected]($this->file, $this->savepath.$this->savename)) { $this->errno = 4; return false; } /** 删除临时文件 */ $this->destory(); return true; } /** * 文件格式检查 * @access protect */ function validate_format() { if (!is_array($this->fileformat)) // 没有格式限制 return true; $ext = strtolower($this->ext); reset($this->fileformat); while(list($var, $key) = each($this->fileformat)) { if (strtolower($key) == $ext) return true; } reset($this->fileformat); return false; } /** * 获取文件扩展名 * access public */ function get_ext() { $ext = explode(".", $this->file_name); $ext = $ext[count($ext) - 1]; $this->ext = $ext; } /** * 设置上传文件的最大字节限制 * @param $maxsize 文件大小(bytes) 0:表示无限制 * @access public */ function set_maxsize($maxsize) { $this->maxsize = $maxsize; } /** * 设置覆盖模式 * @param 覆盖模式 1:允许覆盖 0:禁止覆盖 * @access public */ function set_overwrite($overwrite) { $this->overwrite = $overwrite; } /** * 设置允许上传的文件格式 * @param $fileformat 允许上传的文件扩展名数组 * @access public */ function set_fileformat($fileformat) { $this->fileformat = $fileformat; } /** * 设置保存路径 * @param $savepath 文件保存路径:以 "/" 结尾 * @access public */ function set_savepath($savepath) { $this->savepath = $savepath; } /** * 设置文件保存名 * @savename 保存名,如果为空,则系统自动生成一个随机的文件名 * @access public */ function set_savename($savename) { if ($savename == '') // 如果未设置文件名,则生成一个随机文件名 { srand ((double) microtime() * 1000000); $rnd = rand(100,999); $name = date('Ymdhis') + $rnd; $name = $name.".".$this->ext; } else { $name = $savename; } $this->savename = $name; } /** * 删除文件 * @param $file 所要删除的文件名 * @access public */ function del($file) { if([email protected]($file)) { $this->errno = 3; return false; } return true; } /** * 删除临时文件 * @access proctect */ function destory() { $this->del($this->file); } /** * 得到错误信息 * @access public * @return error msg string or false */ function errmsg() { global $UPLOAD_CLASS_ERROR; if ($this->errno == 0) return false; else return $UPLOAD_CLASS_ERROR[$this->errno]; } } ?>
开发 5 0 214天前
admin
320
文章转自:http://itbbs.pconline.com.cn/office/11962710.html#Jfastreply      买不起投影机?没事,花上千元左右自己DIY一台即可,虽然效果无法和1080p家庭影院级投影机相比,但绝对比老式的CRT电视机要震撼很多。        没钱照样享受大画面震撼,众多的网友正依靠自己勤劳且富有创造性的双手DIY了一台台属于自己的投影机。找一块废弃的液晶板,网上淘个驱动板,五金店里再买个灯泡,再加上一些其他的小配件,花上几天的时间在家制作一个外壳,一台属于自己的DIY投影机就大功告成了。  从技术原理来看,这样的单片式LCD液晶投影机无疑太过于“山寨”。从效果来看,DIY投影机在分辨率、色彩、噪音等方面都存在较多的缺陷。但是不可否认的是,这样的产品正在形成自己的独特产业,让更多的基层消费者享受了百吋大画面的震撼,功不可没。  不过对于大多数用户来说,DIY产品固然廉价简单,但是却不知从何下手,空有美好的愿景却无法实施,这的确是一种痛苦。为了方便广大网友DIY出自己的大画面梦想,笔者就此为大家提供一些DIY投影机成功案例、原理、技巧等,供发烧友参考学习。国外网友DIY投影机视频全程  上面的这个视频国外某网友制作的,从其能够了解DIY投影机的全程。不过需要指出的是,此网友购买的DIY投影机为半成品,只需组装完工即可,技术含量并不高。不过我们还能从此视频中得到另外一个信息:DIY投影机并不仅仅是国内的产物,国外的网友同样钟爱于这种“山寨”产品。  DIY并不代表低质,对于发烧友来说,也要有一定的底线,切不可因为便宜而放弃原则。笔者认为,首先DIY投影机的亮度不能低于500流明,否则亮度太低对视力等有一定的影响;其次,DIY投影机的物理分辨率不能低于640×480,目前VCD的分辨率为352×288;数字电视机顶盒的输出分辨率为640×480,720p、1080p的电影更是层出不穷,太低的分辨率已经没有了存在的意义;还有就是投影机的分辨率不能低于40吋,目前便宜的32吋的电视机价格仅为2000余元,如果DIY投影机的尺寸仅仅和电视机类似,显然得不偿失。  好了,了解了这些信息之后,我们就开始动手了。下面我们就和大家分享以为成功的DIY发烧友的经典案例,希望能够为入门级DIY用户提供一定的帮助。相对于普通的入门级DIY用户,今天我们和大家分享的这位DIY用户可谓是骨灰级的玩家。凭借众多的成功作品,其在DIY投影机圈内享有盛名。  对于用户来说,如果有能力的话,最好前期就做好设计草图。      诚然,对于大部分用户来说,制作和看懂上面这几张图片有一定的困难。如果的确看不懂也无妨,大致了解一下DIY投影机的原理和部件即可。如果连这些也看不懂,下面就一步步看网友的作品,肯定也是有一定的帮助。  某骨灰级网友DIY投影机配件:1、LCD屏 LTN121XF-L01,零售价300元左右;2、4合1驱动板;3、欧司朗150W光源套件(灯+灯座+电感镇流器等),零售价250元左右;4、68mm冷膜反光碗,零售价40元左右;5、90mmF130耐高温非球面聚光镜,零售价40元左右;6、113*138吸热型隔热玻璃,零售价20元左右;7、灯室盒;8、12.1寸用F220/330菲涅尔透镜,零售价50元左右;9、12.1寸用镀膜反射镜,零售价60元左右;10、焦距320口径70镜头,零售价200元左右,总价不足千元。DIY投影机所购置的部分零配件将购买的LCD液晶屏点亮测试,一切良好用金属边框等将液晶屏固定,以免震动等造成的损伤购置的欧司朗150W光源套件(灯+灯座+电感镇流器等)经过测试,光源套件工作状态良好 DIY投影机主要包括两部分:机箱和液晶屏。相对来说,液晶屏属于电子部分,DIYer需要懂一些简单的电路;机箱部分则对制作者的木工等水平有一定的要求。下面我们首先来了解下液晶显示部分的设计制作。切割菲涅尔透镜,用普通的钢锯条即可用螺丝等固定好液晶屏通电点亮进行测试点亮测试效果由于目前没有制作外壳机箱,所以有一定程度的漏光显示效果还是较为理想的  对于玩家来做,在开工之前应该对所购买的产品进行仔细认真的测试。否则,一旦某个部件出现问题,一切又要全部推倒重来,费时费力,DIY的效果也往往不太理想。      光源显示部分经测试没问题后,下面就开始机箱的制作。在这里,该玩家使用的所有板料都是中密度纤维板,这样更容易加工成型。由于前期都已经做好了设计图,下一步就是根据设计图对板材进行开孔。DIY投影机机箱所需要的中密度纤维板在中密度纤维板上做好规划开始加工制作加工制作后的中密度纤维板对纤维板进行合并大致成型的机箱在机箱内部做好固定液晶屏的部件  当然,装配箱体也是有技巧的。笔者建议使用乳白胶或者指接胶,此类产品属于乳化类木材粘合剂,板材吸收水分后即有一定强度,固化后不溶于水,耐潮能力较好。在铁皮上钻孔,用于安装灯泡套件安装上灯泡组件之后的效果在灯泡套件外加上菲镜在机箱上安装投影镜头将灯泡套件部分固定液晶屏、散热风扇、灯泡组件等均安装完毕效果测试  和普通DIY用户所不同的是,该玩家将灯泡组件部分和显示屏部分进行了分开设计安装,对投影机的散热、稳定等显示有了更好的帮助。  至此,DIY投影机已经初步成型。接下来,就要开始进行对细节的调整和修饰,消除浓厚的“山寨味”,达到更为理想的效果。DIY投影机的测试效果将机箱内部涂黑  DIY投影机内部采用的都是高透光液晶屏,内部无规则的杂散光线不仅不能提升亮度,反而还会降低投影机的对比度,所以建议用户将其内部进行涂黑处理。将机箱内部涂黑后重新安装固定各部件成型后的DIY投影机  至此,基本上可以宣告大功告成。如果制作者对现有作品仍然不满意,可以适时对外壳进行喷漆等装饰,但是投影性能基本上已经稳定了。下面我们就来看看DIY投影机的效果。当然,该玩家是将投影机显示的画面投射到白墙上的,毕竟一块普通的幕布价格往往也在五百元以上。DIY投影机效果展示DIY投影机效果展示  从整体来看,效果还是较为理想的。虽然无法和1080p高清投影机相提并论,但是投影机的物理分辨率也达到了1024×768,远远高于普通3000元价位投影机800×600的分辨率。  其实DIY投影机的原理很简单,就是废旧笔记本的显示屏拆下来,然后通过光学原理对画面进行放大,然后即可得到投影大画面效果。而传统的投影机则是光机电一体化产品,对各方面都有着很高的要求,所以不可相提并论。有兴趣的读者也可以通过拆解了解3LCD和DLP投影机的内部结构:点击进入3LCD投影机拆解 点击进入DLP投影机拆解  在两年前,DIY投影机还一度风光无限,但是随着大量3000元DLP投影机的上市,DIY投影机市场近来已经萎缩的较为严重。从技术原理来看,DIY投影机和品牌有着本质上的区别。另外,品牌投影机的品质保证、售后等也要远远强于DIY投影机。DIY迟迟没有火起来还有一个很重要的因素就是普通读者根本不知道这样产品的存在,更谈不上制作属于自己的DIY投影机。
维护 5 0 214天前
admin
297
       一颗强劲的CPU可以带着我们在复杂的数码世界里飞速狂奔,一块最酷的显示卡会带着我们在绚丽的3D世界里领略那五光十色的震撼,一块最棒的声卡更能带领我们进入那美妙的音乐殿堂。相对于CPU,显示卡、声卡而言,电源可能是微不足道的,我们对它的了解也不是很多,可是我们必须知道,一个稳定工作的电源,是使我们计算机能够更好工作的前提。  计算机开关电源工作电压较高,通过的电流较大,又工作在有自感电动势的状态下,因此,使用过程中故障率较高。对于电源产生的故障,不少朋友束手无策,其实,只要有一点电子电路知识,就可以轻松的维修电源。  首先,我们要知道计算机开关电源的工作原理。电源先将高电压交流电(220V)通过全桥二极管(图1、2)整流以后成为高电压的脉冲直流电,再经过电容滤波(图3)以后成为高压直流电。    此时,控制电路控制大功率开关三极管将高压直流电按照一定的高频频率分批送到高频变压器的初级(图4)。接着,把从次级线圈输出的降压后的高频低压交流电通过整流滤波转换为能使电脑工作的低电压强电流的直流电。其中,控制电路是必不可少的部分。它能有效的监控输出端的电压值,并向功率开关三极管发出信号控制电压上下调整的幅度。在计算机开关电源中,由于电源输入部分工作在高电压、大电流的状态下,故障率最高;其次输出直流部分的整流二极管、保护二极管、大功率开关三极管较易损坏;再就是脉宽调制器TL494的4脚电压是保护电路的关键测试点。通过对多台电源的维修,总结出了对付电源常见故障的方法。  一、在断电情况下,“望、闻、问、切”  由于检修电源要接触到220V高压电,人体一旦接触36V以上的电压就有生命危险。因此,在有可能的条件下,尽量先检查一下在断电状态下有无明显的短路、元器件损坏故障。首先,打开电源的外壳,检查保险丝(图5)是否熔断,再观察电源的内部情况,如果发现电源的PCB板上元件破裂,则应重点检查此元件,一般来讲这是出现故障的主要原因;闻一下电源内部是否有糊味,检查是否有烧焦的元器件;问一下电源损坏的经过,是否对电源进行违规的操作,这一点对于维修任何设备都是必须的。在初步检查以后,还要对电源进行更深入地检测。  用万用表测量AC电源线两端的正反向电阻及电容器充电情况,如果电阻值过低,说明电源内部存在短路,正常时其阻值应能达到100千欧以上;电容器应能够充放电,如果损坏,则表现为AC电源线两端阻值低,呈短路状态,否则可能是开关三极管VT1、VT2击穿。  然后检查直流输出部分。脱开负载,分别测量各组输出端的对地电阻,正常时,表针应有电容器充放电摆动,最后指示的应为该路的泄放电阻的阻值。否则多数是整流二极管反向击穿所致。  二、加电检测  在通过上述检查后,就可通电测试。这时候才是关键所在,需要有一定的经验、电子基础及维修技巧。一般来讲应重点检查一下电源的输入端,开关三极管,电源保护电路以及电源的输出电压电流等。如果电源启动一下就停止,则该电源处于保护状态下,可直接测量TL494的4脚电压,正常值应为0.4V以下,若测得电压值为+4V以上,则说明电源的处于保护状态下,应重点检查产生保护的原因。由于接触到高电压,建议没有电子基础的朋友要小心操作。   三、常见故障  1.保险丝熔断  一般情况下,保险丝熔断说明电源的内部线路有问题。由于电源工作在高电压、大电流的状态下,电网电压的波动、浪涌都会引起电源内电流瞬间增大而使保险丝熔断。重点应检查电源输入端的整流二极管,高压滤波电解电容,逆变功率开关管等,检查一下这些元器件有无击穿、开路、损坏等。如果确实是保险丝熔断,应该首先查看电路板上的各个元件,看这些元件的外表有没有被烧糊,有没有电解液溢出。如果没有发现上述情况,则用万用表进行测量,如果测量出来两个大功率开关管e、 c极间的阻值小于100kΩ,说明开关管损坏。其次测量输入端的电阻值,若小于200kΩ,说明后端有局部短路现象。   2.无直流电压输出或电压输出不稳定  如果保险丝是完好的,可是在有负载情况下,各级直流电压无输出。这种情况主要是以下原因造成的:电源中出现开路、短路现象,过压、过流保护电路出现故障,振荡电路没有工作,电源负载过重,高频整流滤波电路中整流二极管被击穿,滤波电容漏电等。这时,首先用万用表测量系统板+5V电源的对地电阻,若大于0.8Ω,则说明电路板无短路现象;然后将电脑中不必要的硬件暂时拆除,如硬盘、光盘驱动器等,只留下主板、电源、蜂鸣器,然后再测量各输出端的直流电压,如果这时输出为零,则可以肯定是电源的控制电路出了故障。  3.电源负载能力差  电源负开能力差是一个常见的故障,一般都是出现在老式或是工作时间长的电源中,主要原因是各元器件老化,开关三极管的工作不稳定,没有及时进行散热等。应重点检查稳压二极管是否发热漏电,整流二极管损坏、高压滤波电容损坏、晶体管工作点未选择好等。  4、通电无电压输出,电源内发出吱吱声。  这是电源过载或无负载的典型特征。先仔细检查各个元件,重点检查整流二极管、开关管等。经过仔细检查,发现一个整流二极管1N4001的表面已烧黑,而且电路板也给烧黑了。找同型号的二极管换下,用万用表一量果然是击穿的。接上电源,可风扇不转,吱吱声依然。用万用表量+12V输出只有+0.2V,+5V只有0.1V。这说明元件被击穿时电源启动自保护。测量初级和次级开关管,发现初级开关管中有一个已损坏,用相同型号的开关管换上,故障排除,一切正常。   5、没有吱吱声,上一个保险丝就烧一个保险丝。  由于保险丝不断地熔断,搜索范围就缩小了。可能性只有3个:1、整流桥击穿;2、大电解电容击穿;3、初级开关管击穿。电源的整流桥一般是分立的四个整流二极管,或是将四个二极管固化在一起。将整流桥拆下一量是正常的。大电解电容拆下测试后也正常,注意焊回时要注意正负极。最后的可能就只剩开关管了。这个电源的初级只有一个大功率的开关管。拆下一量果然击穿,找同型号开关管换上,问题解决。  其实,维修电源并不难,一般电源损坏都可以归结为保险丝熔断、整流二极管损坏、滤波电容开路或击穿、开关三极管击穿以及电源自保护等,因开关电源的电路较简单,故障类型少,很容易判断出故障位置。只要有足够的电子基础知识,多看看相关报刊,多动动手,平时注意经验的积累,电源故障是可以轻松检修的。
维护 5 0 214天前
admin
288
1.笔记本电脑 DDRⅢ内存是否击穿的检测方法是:+1.5v 测 99、100、105、106pin;+0.75v 测 203、204pin;+3.3v 测 199pin;“地”是 2、3pin。2.笔记本电脑 DDRⅡ内存是否击穿的检测方法是:+1.8v 测 111、112pin;+3.3v 测 199pin;“地”是 2、3pin。3.台式机电脑 DDRⅢ  240pin 内存是否击穿的检测方法是:+1.5v 测 182、183pin;+0.75v测 120、240pin;+3.3v 测 236pin;“地”是 199、229pin。4.台式机电脑 DDRⅡ240pin 内存是否击穿的检测方法是:+1.8v 测 172、178pin;+3.3v测 238pin;“地”是 219、222pin。 上述检测,不建议用万用表表笔针直接接触内存金手指的方法检测内存条。建议将内存插入 相应的主板内存槽中,用万用表黑表笔接地,红表笔检测上述对应的引脚,以检测相应的电 压阻值,用万用表 20 欧姆或蜂鸣器档检测,如果阻值为零欧或阻值较低可判定内存相对应的电压短路击穿。
维护 5 0 214天前
admin
250
作者:枫林秋水  有的时候,人生就像一本书,阅尽繁华,读懂了光阴,读懂了岁月,读懂了别人,而最难得的却是能够读懂自己。从打开泛黄的扉页,到认真读懂每一段文字,正如依着生命的阳光,褪尽铅华,在简洁明净的开始中,重新审视那个原来的自己。    时间能让世间所有的一切回到最初的淡然。或许也只有在那份自然的平静中,才能得到以前从未有过的安宁。无论任何一种经历,当你再次回味的时候,都只是你生命里曾经有过的斑斓。    人生的路上,简单而行,将流年的馨香,在岁月的幽静中,珍藏一朵春天的明媚;尘间的厚重,婉约而过,在心如止水的平静里,将时光的优雅,珍惜那份最初的留白。    尘缘的因果间,也许会得不到自己想要的结果,但你所得到的,一定是为当初无悔的选择而一笑释然。岁月的沧桑,除了风雨的薄凉,也在世事无常的冷暖中,学会了用一个浅浅的微笑,静待下一个路口的阳光。    繁华如烟,时光匆匆而过,岁月的洗涤,让一份清浅的简单,依着一颗清净的心,在光阴的沉静中,相依而伴。渐渐的,不再留恋虚空的东西,只喜欢将那些寻常之物,或握在掌间,或回味于心中。年华越深,奢望也越来越少,简单的一餐饭,一杯清水,便是人间最暖的烟火。    对于那些不完整的记忆中,拼凑出来的陌路,在坦然的会心一笑中,便轻轻而过。岁月给予的不止是烦恼与悲伤,而更多的是转身过后,看到的那满树花开的绚烂。    人生的精彩,总是从繁华和喧嚣中走到沉寂和落寞。不要让满满的浮华,沉重你本可轻松的行程。适时的给自己留一半清欢,留一半寂寞,让一份从容,在时光如水的韵律中,邂逅那个素静、自然的安宁。    不管是风,还是雨,一直在纷飞的落花中寻找流年的影,却终于在一程墨色里,落下一笺凝望的目光。也许这世上除了生命,似乎就是关于灵魂的超乎凡尘的所有,而这些笔墨之中飞出的光景,依然将岁月的浅静,流落出一份平和的安详。    世间本无相,皆是万般缘。红尘浮华,纷扰在心。尘间最悲伤的,莫过于,我来,你却已经离开。世间最难解的就是一个情字,不能相守的,唯有放下,才能让曾经有过的时光,在岁月的弥久中,生出一份淡然的暗香。    滚滚红尘,静静的相守在情梦的边缘,无需言语,一份懂得,便是驻留内心的真情。一次相逢,几许柔情,几许风雨,种下一颗清欢的念,开出一份内心的无悔。云水之间,那叶划向彼岸的轻舟,已然在潮起潮落中,载满相思的流年。    岁月的深沉,让夏天的草木也随着深了。而时光终是与我一念温柔。经年的沉香里,莫若把沧桑交给岁月遗忘。那些共同走过的时光里,依然在素心萦绕着的暖里,轻守着平淡的安然。    光阴的清茶,岁月的陈酒,或是一首老歌,久了,到最后无不都是平淡的味道。风尘之中,只想做一个素心若禅之人,携一份清浅,在简单的平静中,轻守自己心中的风景。    老旧的年华里,执笔落下一段无悔的青春,青涩的时光,亦是最美的年华里开出的一念安暖。光阴旧了,却越发柔软了,于是,那岁月里的一份懂得,便如经年的相思,又一次在远去的眉眼间,许下一段如水的相逢。    光阴长了,岁月远了,梦似乎也轻了。寂寂时光里,不再执着于生命的厚重和沧桑,只把那简单的日子,静默成花香,开成一朵心境的淡然;把那柴米油盐的烟火,在朴素的光阴里,流淌成细水长流的陪伴;或把一段清丽的文字,在清浅的喜悦里,念成一份安静的暖。
休闲 5 0 215天前
admin
247
作者:枫林秋水  每个季节都有诗意的芬芳,每段时光都有温情的暖。光阴流转,从朝霞到日落,从春花到冬雪,起落浮沉的人生,交织轮回的岁月,最美的光阴,总是在红尘最深处,绚烂一泽安暖、温馨的明媚。    喜欢静静的伏在桌前,细数着岁月的温良,写下一行行干净的文字,借着光阴给予的静好,兀自清欢。抬头,便是冬日的阳光透过窗户,照进一片和煦的温暖。    案几上的花瓶已经空了许久,瓶口已经落了尘。没了盛开的花束,虽然少了些鲜艳和生动,但也不用再打理,只守着一份闲适,倒也别是一番好处。    窗外,一条清静的小径,薄薄的雪稀稀疏疏的覆盖着行人走过的痕迹。不知道有多少花开花落,曾经在这里留下难忘的刻骨铭心;也不知有过多少成双成对的脚印,从这里走出去,然后从此分开。    世象万千,有些时候,人和人之间,犹如隔着一层永远也不会捅透的纱。凡尘里的故事,似乎有着太多的相似,只是谁也不想过早提出散场的结局。    北方的冬天,远离尘世的喧嚣,一炉火就是极好的暖了。烧一壶沸腾的热水,沏一壶清静的茶,沉下几颗繁杂的思绪,浮上一片静谧的安宁。杯中的厚重,浸泡着尘世的薄凉和沧桑;入口的清淡,品尝着日子的平淡和安详。    岁月里,寻一婉真情的幽香,淡淡的温暖,在经年的过往里,拥着人生的漫长,轻吟浅唱。一场落尽的花事,飘去落在风中的荒凉,清心以对,搁浅往事的忧伤;一份岁月的唯美,盈一抹淡然的微笑,走过寒凉的风景,相安无言的惆怅。    生命里,每一次相遇,都是久别重逢。遇见,不必在最美的年华,无论早晚,只要灵魂不再孤单,自深情的那一刻起,便将余生溢满幸福,让年华开满绚烂。从此,光阴含笑,岁月静好。    岁月的葱茏,总是在薄情的世界里,承受着无情的悲欢离合。有时候,不得不接受那些无法挽回的现实,但命运的经历也告诉我们,对于生活,真正想要的无需太多,一份真诚的爱,一份简单的暖,就够了。    光阴里,总有一些轻轻的柔软,似乎在等待一场华丽的雨落,好让昨日的梦呓,留下一笺岁月的留白。于是,一痕浅墨,便带着一份芬芳的执念,将一份经年的懂得,邀进一季行走的梦里。    生命是一场不断前行的历程,每一季岁月的花落花开,都会让你在生命的释放中,越来越多的拿出心底的善良和真诚,充满年华的丰盈;每一段时光的流逝,都会载着你走过命运的山高水长,摇落一树尘世繁杂的烟雨,相守一份平静、淡然的安宁。    日子,因简单而平静;生活,因平静而安宁。其实,生活并不需要那么多的诗和远方,一杯茶,一本书,一段时光,一份无悔和一颗温暖的心,便可在简单和宁静中,写满岁月的芬芳。
休闲 5 0 215天前
桂公网安备 45010302000666号 桂ICP备14001770-3号
您的IP:54.159.30.26,2018-02-22 23:06:23,Processed in 1.15625 second(s).
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
Powered by HadSky 5.4.1