SASS用法指南

作者: 阮一峰 日期: 2012年6月19日 学过CSS的人都知道,它不是一种编程语言。 你可以用它开发网页样式,但是没法用它编程。也就是说,CSS基本上是设计师的工具,不是程序员的工具。在程序员眼里,CSS是一件很麻烦的东西。它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事。 很自然地,有人就开始为CSS加入编程元素,这被叫做“CSS预处理器”(css preprocessor)。它的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件。 各种"CSS预处理器"之中,我自己最喜欢SASS,觉得它有很多优点,打算以后都用它来写CSS。下面是我整理的用法总结,供自己开发时参考,相信对其他人也有用。 ============================================ SASS用法指南 作者:阮一峰 一、什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。 本文总结了SASS的主要用法。我的目标是,有了这篇文章,日常的一般使用就不需要去看官方文档了。 二、安装和使用 2.1 安装 SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。 假定你已经安装好了Ruby,接着在命令行输入下面的命令: gem install sass 然后,就可以使用了。 2.2 使用 SASS文件就是普通的文本文件,里面可以直接使用CSS语法。文件后缀名是.scss,意思为Sassy CSS。 下面的命令,可以在屏幕上显示.scss文件转化的css代码。(假设文件名为test。) sass test.scss 如果要将显示结果保存成文件,后面再跟一个.css文件名。 sass test.scss test.css SASS提供四个编译风格的选项: nested:嵌套缩进的css代码,它是默认值。 expanded:没有缩进的、扩展的css代码。 compact:简洁格式的css代码。 compressed:压缩后的css代码。 生产环境当中,一般使用最后一个选项。 sass –style compressed test.sass test.css SASS的官方网站,提供了一个在线转换器。你可以在那里,试运行下面的各种例子。 三、基本用法 3.1 变量 SASS允许使用变量,所有变量以$开头。 $blue : #1875e7; div { color : $blue; } 如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中。 $side : left; .rounded { border-#{$side}-radius: 5px; } 3.2 计算功能 SASS允许在代码中使用算式: body { margin: (14px/2); top: 50px + 100px; right: $var * 10%; } 3.3 嵌套 SASS允许选择器嵌套。比如,下面的CSS代码: div h1 { color : red; } 可以写成: div { hi { color:red; } } 属性也可以嵌套: p { border-color: red; } 可以写成: p { border: { color: red; } } 注意,border后面必须加上冒号。 3.4 注释

FreeAnony-代理采集设置工具

这个名字确实有点不太好。。因为刚开始我想到这个工具是在今天早上看到一个别人的代理工具的时候,突然想做的,没有好好规化,结果后来代码越写越多。。不过收获很大。 先看界面,因为是简单实现一下,所以就不要吐槽界面了。。 刚开始想的思路就是先去一个经常发布代理IP的网页去采集。然后解析成一条条的信息。然后显示出来。中途遇到几个问题,一个就是在做代理验证的时候,没有用多线程,导致直接界面无响应。另一个就是DataGridView控件要实现对一个数组的绑定,需要的一个实体对象。 这部分就是先得到网页源码,然后通过IndexOf和LastIndexOf定位到ip组的位置。这是通过分析源码来确定参数的。最后通过 标签分割成字符数组。数组元素类似于112.25.12.37:80@HTTP;江苏省 移动,然后就是继续分割成一部分,构造了一个IPEntity的数组。在按钮中绑定到DataGridView中即可 IPEntity类的定义如下:这里面设置了一个status属性,用于后面代理验证的时候进行标记。 然后是验证ip可用性的部分。这部分主要的代码是验证DataGridView中的ip地址可用性 但是实际运行后就知道,会出现界面无响应。因为长时间的网络访问。为此,在按钮的单击事件中,使用简单的线程后台来操作 然后其实就没什么了。至于后面的设置iE代理不过就是对注册表的操作了 不好的地方希望大家指正。因为只是一个简单的原型。完成我想的功能。所以不必过分苛求。关键的代码就是上面的了。 项目源码下载:FreeAnony 参考: http://blog.csdn.net/cisso/article/details/4467188 http://www.blogjava.net/aoneany/articles/281344.html http://www.cnblogs.com/server-you/archive/2006/09/20/509342.html http://topic.csdn.net/u/20090514/01/82749a36-ffef-4da5-a607-260dccbad84b.html http://www.haogongju.net/art/1485280 http://developer.51cto.com/art/200903/115200.htm http://qianshao.blog.51cto.com/935360/201782

gif反转工具

首先看下效果图: 然后是两张gif的对比  //原本图是正着走的  //处理后是倒着走的 gif是动态的嘛。然后我昨天和一个朋友聊天的时候发了一串相同的gif图,然后看着千篇一律的东西。我想能不能写个程序实现gif的初始状态不同呢。什么意思呢。我们知道,gif是由帧构成的,我想实现的功能是比如一个gif共有十帧,那么我写出来的程序能够生成10个gif文件,分别对应不同的初始状态来进行循环。后来一想,gif帧太多的话,比较慢,而且也不实用,于是决定简化一下,只做一个反转工具,比如一个gif是从左到右播放的,通过这个成功可以生成一个相同的gif图,不过是倒着播放的。 思路很简单,就是先把gif分解成很多帧,然后对帧进行合并,合并帧之前把帧的位置反转一下就可以了。因为我自己对图像处理的知识不懂,只想到了思路,所以这些功能都要找些资料,然后修改,测试。 分割帧的代码如下 可以看到,返回了一个包含所有生成的帧地址的list列表。然后就是使用gifList作为参数来合并了。 这里面使用了AnimatedGifEncoder这个类,这是Gif.Components.dll动态连接库里的类(此库开源,文末给出地址),是我在codeProject上找到的。首先我把gifList反转,然后合并保存到同目录。中间生成的帧为了方便我保存到了temp目录。 本来这个库里是分割gif的功能的。但是我实际测试后发现效果非常差,图片黑条泛滥,根本没法看。所以还是使用上面那段代码,相关代码我依然保存在工程里,有兴趣可以自己测试。 明天四级考试,求人品。。 项目源码:gif反转工具 参考: C#图片处理:获取GIF 动画图片中的各个帧 NGif, Animated GIF Encoder for .NET

MySQL ERROR 1005: Can't create table (errno: 150)解决办法

最近在做数据库大作业,采用mysql建立数据库的时候出现了这个情况,查了一下,解决了。 出现问题的大致可能情况 1、外键的引用类型不一样,如主键是int外键是char 2、找不到主表中引用的列 3、主键和外键的字符编码不一致,也可能存储引擎不一样 对于第一个问题,检查一下自己的主外键记录数据类型是否一样,改了就行了,对于第二个问题,同样的道理,确定你主表中有对应的列。对于第三个问题  括号外面的语句设置了引擎。实战过程中通过。中间的外键设置了delete 和update约束。uid引用了pw_other表中的uid键 记下语法,出现问题的时候就可以用了。

属性文法

 我们知道,许多编译程序采用属性文法和语法制导翻译方法对语义处理工作进行比较规范和抽象的描述。  而一个属性文法包含一个上下文无关文法和一系列文法规则,语义规则是指:对于文法的每个产生式都配备了一组属性的计算规则  语义规则附在文法的每个产生式上,而语法制导翻译是指在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作。  ·语法制导:基于语法分析中用到的文法产生式  ·翻译:完成语义分析的各项功能,不仅指生成中间代码  形式上讲,一个属性文法是一个三元组,A=(G,V,F),其中G是一个上下文无关文法;V是有穷的属性集,每个属性与文法的一个终结符或非终结符关联,属性加工的过程即是语义处理的过程。F是关于属性的属性断言或一组属性的计算规则(称为语义规则)。断言或语义规则与一个规则式关联,只引用该规则式左端或右端的终结符或非终结符关联的属性。形式化的东西看看就好,后面给出具体例子分析。  既然称之为属性文法,那么什么属性呢。这些属性代表与文法符号相关信息,比如它的类型、值、代码序列、符号表内容等等。属性与变量一样,可以进行计算和传递。可以类比我们平时写代码时候一些成员变量。。属性又分为综合属性和继承属性。 n在一个属性文法中,对应于每个产生式A→a都有一套与之相关联的语义规则,每条规则的形式为: b:=f(c1,c2,…,ck),只有在已知 c1-ck 值的基础上,才能计算属性值 b, 称属性 b 依赖于属性 c1-ck,至于c1-ck依赖于哪个,就得看由c1-ck在左侧的规则了。也就是看下面的规则了。  这里,f是一个函数,而且或者  1. b是A的一个综合属性并且c1,c2,…,ck是产生式右边文法符号的属性,或者  2. b是产生式右边某个文法符号的一个继承属性并且c1,c2,…,ck 是A或产生式右边任何文法符号的属性。 属性b依赖于属性c1,c2,…,ck。  属性文法中常用记号N·t表示与非终结符号N相关联的属性t。  注意:¨终结符只有综合属性,由词法分析器提供 ¨非终结符既可有综合属性也可有继承属性,文法开始符号的所有继承属性作为属性计算前的初始值 ¨在语法树中,一个结点的综合属性的值由其子结点的属性值确定。一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定  根据包含的属性类型,属性文法分为:S-属性文法和L-属性文法  S-属性文法是仅包括综合属性的属性文法;L -属性文法是包括综合属性和继承属性的属性文法。  给出一个简单的实例说明上面的内容:  考虑非终结符A,B和C,其中,A有一个继承属性a和一个综合属性b,B有综合属性c,C有继承属性d。产生式A→BC可能有规则 C.d:=B.c+1  A.b:=A.a+B.c  而属性A.a和B.c在其它地方计算  为什么是这样的,因为此时A就是A,B是X1,C是X2,对于d来说,他是产生式右部C的一个属性,c是右部B的属性,属性d依赖于属性c,和1,所以它是C的继承属性,对于c来说,他是产生式右部B的一个属性,但是c不依赖于d,而是d依赖于c所以c属性类型无法确定,对于b,他是A的一个属性,并且a是A的属性,c是产生式右部的属性,所以b是A的综合属性,而对于a,因为不能确定a属性依赖于那个属性,所以。无法得知。从上面我可以得出一个规律,对于一个属性规则来说,一条规则只能确定其左侧的属性类型,而右侧的属性需要由一个由他在左侧的规则来确定。比如,可以看到上面的规则中,c和a都不能确定,就是因为在规则右侧。  此部分可能理解不够深刻,如有错误欢迎指正。  参考:  http://jpkc.hdu.edu.cn/computer/byyl/online/5-2.htm  http://metc.gdut.edu.cn/compile/nandian/n-8.htm

你为什么会说是?-[影响力]

今天早上把这本书读完了,短短的300页,绝对是今年读到的又一本经典之作,书摘什么的因为是读的纸质版,所以没有写什么笔记,但是还是简单的总结下书中的内容。顺带谈谈自己的感受。  就像昨天文章中提到的,这本书讲的不是成功学,而是心理学,讲我们在生活中为什么有时候会受到他人,或者是一些定律的影响,不知不觉中做了后来后悔的事情。或者是明明已经后悔了,却无法反悔。  影响力的几个武器;  第1种武器:互惠  互惠原理认为,我们应该尽量以相同的方式来回报他人为我们所作的一切。接受往往和偿还联系在一起,尽管互惠原理经常带给人们以负债感,但是总体而言,我们从中得利的时候还是占多数的,相比而言还是划算的。从而,相信并服从这个原理成为人们日常生活中一个十分重要的准则,而违背它则要付出严重的代价。人们普遍对那种只求索取不知偿还的人感到不信任,并尽量远离避免与之接触。往深里讲,互惠原理是人类社会形成的一大助力,是群体协作的默认基础。 在商业上最经典的案例则体现在商场里的“免费试用”中。很多人觉得,如果从那个笑容可掬的小姐手中接受了可以免费品尝的食物,就不好意思把杯子一还转身离开,总得买点什么吧,即时他们对那种商品并不是那么感兴趣。  第2种武器:承诺与一致  一旦我们做出了一个决定,或选择了一种立场,就会有发自内心以及来自外部的压力来迫使我们与此保持一致。在这种压力下,我们总是希望以实际行动来证明我们以前的决定是正确的。我们要让自己相信,自己作出了明智的抉择,而且毫无疑问地,自我感觉良好。  一个例子是安利公司就要求每个销售人员都要定下一个销售目标,而且不是光说说而已,必须得写下来。书面声明之所以特别有效,原因之一是它能使目标和方向都更明确,更重要的是,它能够轻易地公之于众。一旦个人公开选择某种立场之后,马上就会有一种维持这种立场的压力,因为他想在别人眼里显得前后一致。我承认我非常讨厌这家公司,有个笑话是这样的,十年后,我们不经意间再次相遇,她低声问我:“这些年过得好吗?她对你好吧。”我很伤感,说:“我还没结婚,一直等你。”她眼圈红了红,说:“你晚上7点来宾馆找我吧。”七夕夜,月如钩,我手捧鲜花,提前半小时来到宾馆,她迎我进去,招呼我坐下,幽幽问道:“你听说过安利吗?”  要想戒烟或者减肥成功,这种方法是非常有效的。给自己在乎的人说自己一定要减肥成功,并且勇敢说出来,这种压力会迫使你减肥成功  第3种武器:社会认同  有点像是从众,但不完全是,社会认同原理指出,我们进行是非判断的标准之一就是看别人是怎么想的,尤其是当我们要决定什么是正确的行为的时候。如果我们看到别人在某种场合做某件事情,我们就会断定这样做是有道理的。一个很有趣的实验可以证实这一点,站在一条繁忙的人行道上,选定天空中的某一快空白,盯着看上1分钟,在这段时间里你的身边大概不会发生什么事情;第二天,你带上四五个朋友到同一地点一起往上看,不出1分钟,就会有大群路人停下来,把脖子伸得长长的,跟你们几个一起往天上看;即使是那些没有加入你们的行人,也无法阻抗那种至少往上瞄一眼的压力。  在形势模糊不清的时候,每个人都希望看一看别人正在做什么,从而致使一个极为重要的现象的出现――“多元无知”。这个可以很好的解释小悦悦事件,因为路人多了以后,前一个的人的行为影响了后一个人,大家都在看别人在做什么,并且人多了以后,每个人的责任感被分散,因此,施救的概率降下来了,我不是要辩护什么,而是反对喜欢扣标签的人,这件事并不能说明社会道德什么下降及其厉害,虽然有下降,这件事只是很典型的一个社会心理学实例罢了。  书中做出指出,如果你遇到了危难,很可能出现人很多,但没人施救。。 本书作者的建议是,当你遇到突发灾难时,直接从人群中挑出一个人来,注视着他,指着他,直接对他说:“你,蓝夹克的先生,我需要帮助,请叫一辆救护车来”,总之,在紧急状态中需要帮助时,最有效的策略是减少周围人对你的处境和他们和责任的不确定性,尽量把你所需要的帮助表达精确。不要让旁观者自己去下结论,因为社会认同原理和多元无知效应很可能使他们对你的处境作出错误的诊断,在人群中尤其如此。 这样说了以后,被指定的那个人有了一种责任感,进行施救,其他人会因为确定了状况加入救助的行列。  第4种武器: 喜好  一句话就是:人们总是比较愿意答应自己认识和喜爱的人提出的请求 ,产生喜好的来源主要有外表的吸引力,这个不多解释,美女得到的帮助在陌生的时候必其他人要多,相似性,指对和自己相似的人,比如外貌,衣着,爱好的相同都会产生;称赞,是指人们会奉承话通常来之不拒,并对奉承者产生好感,接触和合作,指一般经历了一起合作的人之间会产生明显的好感,一个有意思的例子是人们对和他们一起吃饭的人好感尤其强烈;关联,指人们会爱屋及乌,比如中国古代的近朱者赤,近墨者黑,表示的有点这个意思,人们会把你交往的人的品质关联到你自己身上,也会把你传递的消息关联上你的身上,如果你经常传递不好的消息,,你懂的。  要对付这么多赢取我们好感的手段,不是一件容易的事。一个有效的方法是,将注意力集中在效果而不是原因上。当我们在和那些老练的推销员打交道时,我们只需要注意一件事,我们是不是过于迅速地对这个人产生了过多的好感。一旦答案为“是”的时候,我们就该反击了。不过这个只针对于商业上的,在真实的社交中,我还是很相信一见钟情,相见恨晚的。嘻嘻。  第5种武器:权威  密歇根大学的心理学教授Mligram (1974)主持了一个实验,结果表明,具有独立思考能力的成年人也会为了服从权威的命令而做出一些完全丧失理智的事情。这可以解释那些利用各种假头衔,衣着(比如警服)来骗人的人。如何克服,两步,第一步,问自己对方是不是会真的专家,第二步问自己他是不是会为自己考虑,同时还要提防有些专家通过抛出一些自己的小缺点来增强”诚实“,表明自己的可信度。这里面有个说法是我以前在社会心理学里看到的,讲到一个演讲的成功与否很大程度上取决于权威的权威,和主题没什么太大关系,这可以解释为什么有时候听专家演讲觉得跟没听似的。。  第6种武器:短缺  短缺原理在现实生活中最常见的运用就是商家所策划的“限量版”商品。不管数量有限的信息是真的还是伪造的,商家的用意都是让顾客相信某种东西不可多得,从而立刻觉得它身价百倍。与数量有限技巧相对应得是“截止时间”策略,也就是对顾客获得推销从业者提供得商品的机会加上时间限制,所谓的“最后三天,清仓甩卖”即源于此。我家附近的最后三天已经for循环了N次了。。。  最后作者也认为世界还是很复杂的,有时候被影响影响也无伤大雅,因为事情太多,不可能完全兼顾,但是对于一些很重要的事情还是要注意避免这类影响。我在读的过程中,也就是书的前半段,讲到利用对比原理和喜好原理来审问犯人,一个好警察一个坏警察,来套取犯人的口供,这在法律上是许可的 ,可我却有些不好的感受,对犯人来说,他受到了心理学的影响,他以为那个警察真的关心他,他以为这个好警察真的好,可是事实上,这只是一种策略罢了,这是多么残忍的一件事啊,所以,昨天我想到了一个词,叫做反心理学,我也不知道具体想表达什么意思,可能当时想的就是避免受到这类心理学应用的影响,不被残忍对待吧。

Turing机、人工智能以及我们的世界

matrix67大牛太帅了。这篇文章给我很大的震撼,他传递的信息远不止计算机世界。强烈推荐,精彩的部分做了引用,事实上,全都很精彩啊。  昨天终于读完了《The Annotated Turing》一书,第一次完整地阅读了 Turing 最经典的那篇论文,理解了 Turing 机提出的动机和由此带来的一系列结论。不过,这本书的最大价值,则是让我开始重新认识和思考这个世界。在这里,我想把我以前积累的哲学观点和最近一些新的思考记下来,与大家一同分享。《The Annotated Turing》一书中的一些学术内容,留待以后几篇日志与大家分享。今年是 Alan Turing 诞辰 100 周年,图灵公司将推出这本书的中译本《图灵的秘密》,现在正在紧张的编辑排版中,不久之后就能和大家见面。  1928 年, David Hilbert 提出了一个著名的问题:是否存在一系列有限的步骤,它能判定任意一个给定的数学命题的真假?这个问题就叫做 Entscheidungsproblem ,德语“判定性问题”的意思。大家普遍认为,这样的一套步骤是不存在的,也就是说我们没有一种判断一个数学命题是否为真的通用方法。为了证明这一点,真正的难题是将问题形式化:什么叫做“一系列有限的步骤”?当然,现在大家知道,这里所说的“有限的步骤”指的就是由条件语句、循环语句等元素搭建而成的一个机械过程,也就是我们常说的“算法”。不过,在没有计算机的时代,人们只能模模糊糊地体会“一个机械过程”的意思。 1936 年,Alan Turing 在著名的论文《On computable numbers, with an application to the Entscheidungsproblem》中提出了一种假想的机器,第一次给了“机械过程”一个确凿的含义。  Turing 提出的机器非常简单。假设有一张无穷向右延伸的纸条,从左至右分成一个一个的小格子。每一个小格子里都可以填写一个字符(通常是单个数字或者字母)。纸条下方有一个用来标识“当前格子”的箭头,在机器运行过程中,箭头的位置会不断移动,颜色也会不断变化。不妨假设初始时所有格子都是空白,箭头的颜色是红色,并且指向左起第一个格子。为了让机器实现不同的功能,我们需要给它制定一大堆指令。每条指令都是由五个参数构成,格式非常单一,只能形如“如果当前箭头是红色,箭头所在格子写的是字符 A ,则把这个格子里的字符改为 B ,箭头变为绿色并且向右移动一格”,其中最后箭头的移动只能是“左移一格”、“右移一格”、“不动”中的一个。  精心设计不同的指令集合,我们就能得到功能不同的 Turing 机。你可以设计一个生成自然数序列的 Turing 机,或者是计算根号 2 的 Turing 机,甚至是打印圆周率的 Turing 机。 Turing 本人甚至在论文中实现了这么一种特殊的 Turing 机叫做通用 Turing 机,它可以模拟别的 Turing 机的运行。具体地说,如果把任意一个 Turing 机的指令集用 Turing 自己提出的一种规范方式编码并预存在纸条上,那么通用 Turing 机就能够根据纸条上已有的信息,在纸条的空白处模拟那台 Turing 机的运作,输出那台 Turing 机应该输出的东西。  但是, Turing 机并不是无所不能的。 Turing 证明了一个看似有些惊人的事实:不存在这样的一个 Turing 机,它能读取任意一个 Turing 机的指令集,并判断该 Turing 机是否将会在纸条上打印出至少一个 0 。注意,简单地用通用 Turing 机做模拟并不是一个可行的方案,因为模拟到现在还没有打出 0 ,不意味着今后也就永远不会打出 0 。这个定理有一个更深刻的含义,即没有一种通用的方法可以预测一台 Turing 机无穷远后的将来(后人把这个结论简化为了著名的停机问题)。正如《The Annotated Turing》封底上的一段文字所说:在没有计算机的时代, Turing 不但探索了计算机能做的事,还指出了计算机永远不能做到的事。  在论文的最后一章, Turing 给出了一种 Turing 机指令集和一阶逻辑表达式的转换规则,使得这个 Turing 机将会打出 0 来,当且仅当对应的一阶逻辑表达式为真。然而,我们没有一种判断 Turing 机是否会输出 0 的算法,因此我们也就没有一种判断数学命题是否为真的通用办法。于是, Entscheidungsproblem 有了一个完美的解答。  有趣的是,Turing 机本身的提出比 Entscheidungsproblem 的解决意义更大。计算机诞生以后,出现了五花八门的高级编程语言,一个比一个帅气,但它们的表达能力实际上都没有超过 Turing 机。事实上,再庞大的流程图,再复杂的数学关系,再怪异的语法规则,最终都可以用 Turing 机来描述。 Turing 机似乎是一个终极工具,它似乎能够表达一切形式的计算方法,可以描述一切事物背后的规律。在同一时代,美国数学家 Alonzo Church 创立了 λ 算子(λ-calculus),用数学的方法去阐释“机械过程”的含义。后来人们发现, Turing 机和 λ 算子是等价的,它们具有相同的表达能力,是描述“可计算性”的两种不同的模型。 Turing 机和 λ 算子真的能够描述所有直观意义上的“可计算数”、“可计算数列”、“可计算函数”吗?有没有什么东西超出了它们的表达能力?这个深刻的哲学问题就叫做 Church–Turing thesis 。当然,我们没法用形式化的方法对其进行论证,不过大家普遍认为, Turing 机和 λ 算子确实已经具有描述世间一切复杂关系的能力了。人们曾经提出过一些 hypercomputer ,即超出 Turing 机范围的假想机器,比如能在有限时间里运行无穷多步的机器,能真正处理实数的机器,等等。不过这在理论上都是不可能实现的。

LR(1)项目集规范簇的构造

首先我们知道LR(0)的项目的形式是[A→α·β ]这样的.而在LR(1)中的项目形式是[A→α·β ,a ],其中A→α·β 为LR(0)项目,称为心,a为终结符或#,称为向前搜索符。对归约项目[A→α·,a],仅当前输入符号是a时,才能用A→α进行归约。一会将会看到具体的例子。  课本上给出的规则是:我将要对照着规则来说明,这里要强调一下,",‘在这里是分隔符。不是终结符。他是一个标志,  以S′→·S,#属于初始项目集中,把’#‘号作为向前搜索符,表示活前缀为γ(若γ是有关S产生式的某一右部)要归约成S时,必须面临输入符为’#‘号才行。因此对初始项目S′→·S,# 求闭包后再用转换函数逐步求出整个文法的LR(1)项目集族。具体构造步骤如下:  (1) 构造LR(1)项目集的闭包函数。  a) I 的任何项目都属于CLOSURE(I) b) 若有项目[A→α·Bβ,a ]属于CLOSURE(I),B→γ是文法中的产生式,β∈V*,b∈FIRST(βa), 则[B→·γ,b]也属于CLOSURE(I)中。 c) 重复b)直到CLOSURE(I)不再增大为止。  (2) 转换函数的构造  LR(1)转换函数的构造与LR(0)的相似,GO(I,X)=CLOSURE(J) 其中I是LR(1)的项目集,X是文法符号: J={任何形如[A→αX·β,a]的项目 | [A→α·Xβ,a]∈I}  例如下列文法G′为:  (0) S′→S (1) S→aAd (2) S→bAc (3) S→aec (4) S→bed (5) A→e 构造他的LR(1)项目集规范簇。  以I0=CLOSURE(S′→·S,#)开始。运算。若有项目[A→α·Bβ,a ]属于CLOSURE(I),B→γ是文法中的产生式,β∈V*,b∈FIRST(βa), 则[B→·γ,b]也属于CLOSURE(I)中。此时,我们可以把S看成B,#看成a,然后需要求FIRST集合,此时没有β,a为#,所以FIRST(#)中只有一个b=#,而S有四个产生式。所有四个产生式加上#都是在I0中,最终求得的I0项目集为  { S′→·S,# S→·aAd,# S→·bAc,# S→·aec,# S→·bed,# }  然后使用GO函数来构造I1,从J={任何形如[A→αX·β,a]的项目 | [A→α·Xβ,a]∈I}我们可以知道I1的核(最初的产生式)就是这里的J,然后呢。X是I(也就是我们的I0)中的·后面的符号,也就是输入符。。可以看到在I0中,X可以为S,a,b,我们先以I1=GO(I0,S)=CLOSURE( S′→S·,# ),注意,·号已经前进了。因为J是I输入进一的项目,求I1,发现·后面没符号了,所以闭包就是他自己了。最终求得的I1的项目集为:  {S′→S·,# }  我们上一步是用的I1=GO(I0,S)来求得,我们求I2的时候使用GO(I0,a)来求,此时X就是a了。然后我们吧I0中符合的项目中的·后移一位得到J然后对J求闭包,就是I2了。此处J=S→a·Ad,# 和S→a·ec,#  I2=GO(I0,a)=CLOSURE(S→a·Ad,# S→a·ec,#),然后又回到了求闭包了。  对于S→a·ec,#,因为输入符下一位是一个终结符,也就是说没有B→γ这样的产生式,所以这个就不用继续向下求闭包了,闭包就是他自己嘛。然后关键是S→a·Ad,# 此处的A相当于规则中的B,d相当于规则中的β,A→e存在。为了确定这个心的向前搜索符,我们根据规则需要求b∈FIRST(βa),这里也就是求First(d#),显然结果为b=d,规则中指出[B→·γ,b]也属于CLOSURE(I),所以可以确定A→·e,d也在I2中。。  最终I2的项目集为  { S→a·Ad,# S→a·ec,# A→·e,d }  到这里,关键点就说完了。只需要继续求GO(I0,b),然后求GO(I1,X),GO(I2,X)等等。X的确定前面已经说了,就是I1,I2的·后面的符号。就行了。。当然像此处的I1,·后面已经没付好了,所以GO(I1,X)就不用求了。。  这种东西还是要自己手动练习的。所以我给出最终的全部项目集规范簇,大家按照这个步骤来做一做。看看结果对不对吧。 I0: S′→·S,# S→·aAd,# S→·bAc,# S→·aec,# S→·bed,#I1: S′→S·,#I2: S→a·Ad,# S→a·ec,# A→·e,dI3: S→b·Ac,# S→b·ed,# A→·e,cI4: S→aA·d,#I5: S→ae·c,# A→e·,d I6: S→bA·c,# I7: S→be·d,# A→e·,c I8: S→aAd·,# I9: S→aec·,# I10:S→bAc·,# I11:S→bed·,#  构造的过程很繁琐。有点暴力计算的意思。不过,真正算起来步骤还是比较少的。

我可以蹲下来,陪你做一只蘑菇

有一个精神病人,以为自己是一只蘑菇,于是他每天都撑着一把伞蹲在房间的墙角里,不吃也不喝,像一只真正的蘑菇一样。  心理医生想了一个办法。有一天,心理医生也撑了一把伞,蹲坐在了病人的旁边,病人很奇怪的问:你是谁呀?医生回答:我也是一只蘑菇呀。病人点点头,继续做他的蘑菇。  过了一会儿,医生站了起来,在房间里走来走去,病人就问他:你不是蘑菇么,怎么可以走来走去?  医生回答说:蘑菇当然可以走来走去啦!病人觉得有道理,就也站起来走走。  又过了一会儿,医生拿出了一个汉堡开始吃,病人又问:你不是蘑菇么,怎么可以吃东西?医生理直气壮地回答:蘑菇当然也可以吃东西啦。病人觉得很对,于是也开始吃东西。  ……  几个星期以后,这个病人就可以像正常人一样生活了,虽然,他还是觉得自己是一只蘑菇。  其实…… 一个人可以带着过去的创伤继续,只要他把悲伤放在心里的一个圈圈里,不要让苦痛浸染了他的整个生命,他就可以像正常人一样快乐的生活。当一个人悲伤得难以自持的时候,也许,他不需要太多的劝解和安慰,训戒和指明。他需要的,只是能有一个在他身边蹲下来,陪他做一只蘑菇。  我可以蹲下来,陪你做一只蘑菇。我愿意分担你的不快乐,只是当你的世界下雨时单纯的为你撑起一把伞。请你不要封闭自己的心,一个人承受那么多。你知道的。只要你睁开眼,你从来都不是一个人。我是你的蘑菇…也希望在我无助的时候,你能蹲下来,陪我一起做一朵蘑菇。  来源:http://www.zreading.cn/archives/2982.html

电影各种版本详解

这是今天早上突然想到的。因为最近一下电影网站恶意混淆各种版本,比如拿个枪版就说个DVD,骗下载量。特此找到此文。分享之。国内作者太无良啊。转载从来不注明出处。找原始出处花了一些时间。原文非常乱。音视频格式也交错着介绍。我删掉了。想看的去原文看吧。 1.CAM(枪版)——珍爱生命,远离枪版 CAM通常是用数码摄像机从电影院盗录。有时会使用 小三角架,但大多数时候不可能使用,所以摄像机会抖动。因此我们看到画面通常偏暗人物常常会失真,下方的字幕时常会出现倾斜。 由于声音是从摄像机自带的话筒录制,所以经常会录到观众的笑声等声音。因为这些因素,图象和声音质量通常都很差。 举例说明:Journey.To.The.Center.Of.The.Earth.CAM.XViD-CAMERA(地心游记3D枪版) 2.TS——只比枪版好一点 TS 与CAM版的标准是相同的。 但它使用的是外置音源(一般是影院座椅上为听力不好的人设的耳机孔)这个音源不能保证是好的音源,因为受到很多背景噪音的干扰。TS是在空的影院或是用专 业摄像机在投影室录制,所以图象质量可能比CAM好。但画面的起伏很大。常出现的有一般TS版和经过修复清晰TS版。 举例说明:Iron.Man.PROPER.TS.XviD-iLG(钢铁侠TS版) 3.TC——基本也可以忽略 TC使用电视电影机从胶片直接数字拷贝。画面质量还不错,但亮度不足,有些昏暗。很多时候制作TC使用的音源来自TS,因此音质很差,但画面质量远好过TS。如果不是太讲究的话TC版还是不错的选择。 举例说明:Madagascar.2005.TC.XviD.AC3.avi(马达加斯加TC版) 4.DVDSCR——最差也要看这个 预 览版的或者是测试版的DVD,非正式出版的版本。从预览版 DVD 中获取,通过mpeg-4技术进行高质量压缩的视频格式。能比DVDRip早发布,但画质稍差。(经常有一些不在黑边里在屏幕下方滚动的消息,包含版权和 反盗版电话号码 ,会影响观看。)如果没有严格的划分它的画质应与TC版差不多。 举例说明:Quantum.of.Solace.REPACK.DVDSCR.XviD-COALiTiON.avi(007大破量子危机DVDSCR版) 5.DVDRIP——比较理想的版本 DVDRIP是从最终版的DVD转制。质量应该是最好的。将DVD的视频、音频、字幕剥离出来,再经过压缩或者其他处理,然后重新合成成多媒体文件。一般来说,DVDrip由影音文件(后缀为avi)和字幕文件组成。 举例说明:Pineapple.Express.2008.DVDRip.XviD-ARROW.avi(菠萝快车DVDRip版) 6.HR-HDTV——不错的选择 HR-HDTV是用DivX/XviD/x264等MPEG4压缩技术对HDTV的视频图像进行高质量压缩,然后将视频、音频部分封装成一个.avi或.mkv文件,最后再加上外挂的字幕文件而形成的视频格式。 画面清晰度更高。 7.HDRIP——BD之下,万人之上 HDRIP=HD-DVD Rip,即HD-DVD高清转制,效果好于一般的高清转制。 举例说明:[email protected](星尘HDrip版) 8.BDRIP——高清之下,普通清晰度的王者 BDrip = Blue-ray Disc Rip,即蓝光高清转制,效果比HDRIP还要好。 举例说明:Awake.2007.BDRip.X264-TLF.mkv(夺命手术BDrip版) 9.R5——心急的您可以看这个 R5一般大都是俄罗斯5区版,由于北美大片在俄罗斯发行的语种经常配音为俄罗斯语,因此网络上会出现采用R5的视频+枪版TS的英语原声音频=合成版本(所以音效差),当然,也经常有未配音过音效好的R5,遇到合成版本,在发布时会特别注明音效。 举例说明:Get.Smart.R5.LINE.XViD-mVs.avi(糊涂侦探R5版) 10、BD(蓝光版) BD是Blue Disk的简称,翻译成中文是“蓝光影碟”的意思。就是从蓝光影碟转录的视频和音频,画面清晰度很高。 11.TVRIP——TV转制 所谓TVRip是从电视(最好是从数码有线电视/卫星电视捕捉)转制的电视剧及接收卫星接收到的节目,然后通过电视卡进行捕捉,压缩成文件,我们看的很多综艺及体育节目都是TVRip。有些电视剧也会使用TVRip的方式进行发布。 12.720P 720P 是美国电影电视工程师协会(SMPTE)制定的最高等级高清数字电视的格式标准,有效显示格式为:1280×720.SMPTE(美国电影电视工程协会) 将数字高清信号数字电视扫描线的不同分为1080P、1080I、720P(i是interlace,隔行的意思,p是Progressive,逐行的意 思)。720P是一种在逐行扫描下达到1280×720的分辨率的显示格式。是数字电影成像技术和计算机技术的融合。这是高清视频的最低标准。 举例说明:Le.Fabuleux.Destin.d’Amé[email protected](天使爱美丽720P) 13.1080I 即1080线隔行扫描,分辨率为1920×1080,仅次于1080P 举例说明:close.encounters.of.the.third.kind.1080i.disk1.ts(第三类接触1080i版本) 14.1080P 1080P是美国电影电视工程师协会(SMPTE)制定的最高等级高清数字电视的格式标准,有效显示格式为:1920×1080,像素数达到207.36万。 1080P带来的高画质给消费者带来的是真正的家庭影院的视听享受,由于它向下全面兼容其它高清格式,通用性非常强,保证了在未来十几年的时间里产品不会过时,具有很好的超前性。随着1080P片源的不断涌现,1080P产品的优势已经显现出来。 举例说明:[email protected](生化危机1,1080P版本) 15.REPACK——重新打包版 如果发布组织发布了一个坏的版本,他们会发布REPACK来解决这些问题。 举例说明:The.Eye.2008.REPACK.BDRip.X264-TLF-cd1.mkv(美版见鬼,repack版本) 16.REMUX——无损版 Remux的意思是无损的提取出HD-DVD 和 BluRay-DVD里面的视频数据和音频数据,封装到我们熟悉的TS或者AVI文件中。 HD- DVD和 Blu-Ray Rip、Re都是把原始的高清数据进行压缩和重编码,从1080P压缩到720P, 20G左右的片子压缩到了4.3G. 可在19、20、22寸的宽屏上看,但是上到大尺寸高分辩率的显示设备就能明显的看出区别了。大屏幕的朋友还是建议购买原始编码的Remux。 举例说明:The.Patriot.Extended.Cut.Blu-ray.REMUX.H264.1080P.DTS.LPCM.DD51.Fanxy@Silu.DISK1.ts(爱国者remux版本) 17. Extended——加长版 情形和导演剪辑版类似,很多的加长版是用来圈钱的,有的干脆就是把花絮里的删除段落直接加进去,也就长了几分钟而已。也有很厚道的,比如指环王的加长版,一部就加长了近50分钟,肯定对剧情有影响的。 举例说明:The.Lord.Of.The.Rings-Return.Of.The.King.EXTENDED.EDITION.DVDRip.XViD-ALLiANCE.avi(指环王3:王者归来加长版) 来源: http://blog.sina.com.cn/s/blog_486387300102dxo1.html http://blog.sina.com.cn/renli