windows下使用和禁用IPV6:
windows Vista和windows 7 都默认开启ipv6,如需要禁用可在本地链接属性中设置,也可使用以下命令:
netsh interface teredo set state disabled
netsh interface 6to4 set state disabled
netsh interface isatap set state disabled
名词解释:
teredo是面向 IPv6 的 IPv4 NAT穿越,是一项 IPv6 / IPv4 过渡技术,在 IPv6 / IPv4 主机位于一个或多个 IPv4 NAT 之后时,用来为单播 IPv6 连接提供地址分配和主机间自动隧道。为了能够通过 IPv4 NAT, IPv6 数据包作为基于 IPv4 的用户数据包协议(UDP) 消息发送出去。
ISATAP和6to4都是目前比较流行的自动建立隧道的过渡技术,都可以连接被IPv4隔绝的IPv6孤岛,都是通过将IPv4地址嵌入到IPv6地址当中,并将IPv6封包封装在IPv4中传送,在主机相互通信中抽出IPv4地址建立tunnel。但具体实现的流程,IPv6地址和应用范围不尽相同。 [参见:https://www.e-typedesign.co.uk/china/technet/prodtechnol/winxppro/maintain/Teredo.mspx]
ISATAP(draft-ietf-ngtrans-isatap-23.txt) 的全名是 Intra-Site Automatic Tunnel Addressing Protocol,它将IPv4地址夹入IPv6地址中,当两台 ISATAP 主机通讯时,可自动抽取出 IPv4 地址建立 Tunnel 即可通讯,且并不需透过其它特殊网络设备,只要彼此间IPv4网络通畅即可。
6to4(RFC3056)机制被定义在站点之间进行IPv6通讯,每个站点必须至少有一台“6to4”路由器作为出入口,使用特需的地址格式,地址前缀为(2002:开头),并将路由器的IPv4地址夹入IPv6地址中,因此位于不同6to4 site内的主机彼此通讯时即可自动抽出IPv4地址在路由器之间建立Tunnel。
透过6to4 router,不同6to4 site内的主机可互相通讯,当需与一般IPv6主机通讯时,则必须过6to4 relay router。6to4 relay router必须同时具备6to4及IPv6接口,同时提供这些接口的封包转送。
6to4需要一个全球合法的IPv4地址,所以对解决IPv4地址短缺没有太大帮助。但它不需要申请IPv6地址,通过它可使站点迅速升级到IPv6。
windows xp用户开启ipv6:
1:手动安装IPV6协议栈:
ipv6 install
2:如果是从纯ipv6网络环境中通过固定ip接入,则使用一下命令设置ip
c:>netsh
netsh>interface ipv6
netsh>interface ipv6>add address "本地连接“[你的ipv6地址]
netsh>interface ipv6>add dns "本地连接”[你的ipv6 DNS]
当然如果你使用自动获取ip和dns,则可跳过上面步骤。
3:如果通过tunnel方式接入ipv6网络,则依照一下步骤:
ipv6 ifcr v6v4 222.27.110.xxx 222.11.11.111 /* 建立V4到V6的隧道,202.112.26.xxx is your local ipv4 address /
ipv6 adu 5/3ffe:3207:xxx::xxxx.xxxx / 配置申请到的V6的地址 /
ipv6 rtu ::/0 5 / 配置default gateway */
ipv6 ifc 5 forwards
PS:*请务必将DNS设置成可以解析ipv6的DNS!
2010/04/03
2010/03/31
做了一个气质类型测试
凯尔西气质类型测试
你的气质类型,更接近于陆军元帅,是理性者的一个分支。你在拥有理性者型共性的同时还兼具陆军 元帅的特性。
16种气质类型中每个字母分别代表的意义:
E(Extraverted 外向) I(Introverted 内向) S(Sensory 感觉) N(Intuitive 直觉)
T(Thinking 思想) F(Feeling 体验) J(Judging 判断) P(Perceiving 知觉)
E(Extraverted 外向) I(Introverted 内向) S(Sensory 感觉) N(Intuitive 直觉)
T(Thinking 思想) F(Feeling 体验) J(Judging 判断) P(Perceiving 知觉)
他们被称为领导中的领导者,是在实现一个明确目标过程中对人员和物资进行协调。他们更倾向于训诫者的角色,而且 本性果断、善于谋划,决定了他们更喜欢从事陆军元帅的角色。他们很少见,只占总人口的2%,然而他们的影响力却远远超过这个数字所代表的意义。
他们对加强秩序和提高效率有种本能的渴望,以至于他们有时在管理着群体,却不清楚为什么会这样。他们从小就比其他人更喜欢严格而不知疲倦的训练自己崭露头 角的协调技能,这使得他们有可能精通于系统化、安排优先次序、归纳、总结、罗列论据来论证他们的主张。当管理一个组织时,他们渴望着并有能力预见这个组织 的未来,并似乎能够异乎寻常的将自己的构想传达给他人。
这些坚定而坦率直言的理性者们往往能够在其所供职的地方上升到担负责任的岗位上,而且他们喜欢这种控制全局的工作。他们专心致志并且很容易投入到某个项目 或活动中,以至于常常从工作的角度筹划生活的其他方面的事情。对他们而言,做任何事,都需要某种动机,人们的感觉通常不是十分理智的。他们比任何人都擅长 于抑制官僚作风,宁愿解雇那些不愿意适应该程序的职员以提高效率。他们是极端的实用主义者,总是很了解方式与结果之间的关系。
适合的工作:
管理者
适合的伴侣:化解者
在一起的生活似乎非常美满,陆军元帅,是天生的调动者且无论在哪个方面;而化解者,喜欢隐居和探索,且他们在寻求理想的时候,也变成了队伍的领导者,并以 热诚发起运动。圣洁或遁世的化解者,能够为他们傲慢的陆军元帅型伴侣提供战争之后颇受欢迎的休息场所,或许还会让他们分享自己宁静的心灵,对内心平和的渴 望以及人性敏感。
关于家庭:
他们对伴侣有着大量的期待,男性陆军元帅,可能不为职业女性所吸引,而是希望配偶在社会公益方面活跃,社交方面练达,并能不断的学习;女性陆军元帅,或许 会感到,选择一位不受自己意愿控制的配偶是件很困难的事。作为父母,他们也完全处于支配地位,但他们不轻易进行干预,但孩子会敬畏他们。但是,这个两个身 份,必须让位于他们强烈的成就欲,他们会花费大量时间从事工作。
关于领导:
他们是最善于管理等级次序的理性者,天生擅长于征募任何人力和物质资源来满足执行某项战略计划的需要,然后形成一系列的命令以确保目标得到实现。尽管十分 少见,但他们仍然是理性者中最为引人注目的人群,因为他们会毫不犹豫的站出来指挥行动。
您所属于的大类 > > 理性者
语言―――抽象型
理性者很少谈论自身观察到的事物,多把想像中的事情作为谈资。他们更多提及的往往是想法而非物体。理性者超越观察到的、能感知的或基于经验的事物而选择想 像中的、概念化的或推论性的事物作为谈话内容。他们尽量避免琐碎的、不相干的,多余的话语,虽然他们也知道有些多余的话是必不可少的,但是却极不愿意陈述 显而易见的事情,或重复一些观点。
他们默认,对他们容易的事情,对别人也应该容易。理性者对定义异乎寻常的苛求,他们大部分时间都致力于特性的总结。让人有“吹毛求疵”和“拘泥于琐事”的 感觉,甚至理想主义者会觉得理性者的琐细分析冒犯了他们,进而处心积虑的抹煞理性者所精心提炼的特性。但理性者并不介意受到奚落。
理性者经常注意到别人话语中微不足道的范畴错误,却很少评论。然而,如果这样的语句出现在辩论中,他们会完全出于本性的指出。
使用工具―――功利型
他们将工具的有效性看得比社会认可重要多了,即不管工具是否合法、正统,他们并不是喜欢违背,而是不拒绝与社会群体进行合作,把取悦他人和规则放在次要的 位置而已。但又和艺术创造者型的人不同,他们的功利性是针对实际操作的,而理性者的功利是倾向于有效性的。他们愿意听取任何人关于方式方法的有益建议,但 是如果别人不这么作,他们也会认为无所谓,在别人的眼中,有些傲慢。
5.2理性者的兴趣:
喜欢有关系统的工作,很少受到道德的吸引,他们对自然科学很感兴趣,对发现自然的规律有强烈渴望。他们对于技术的追求是投入且长久的,为 机械和有机体深深的吸引。有机体是:人类学家、生物学家、动物学家、心理学家和社会学家。
5.3理性者的人格定位
对待现在―――实用的
十分在意有效性,也必定在行动之前预期有意识行为的实际价值,即以最小的努力实现最大的目标。并非懒惰,而是额外的努力会让他们感到烦恼。他们对社会习 俗,不是怀着敬意的而是抱着务实的态度,从而避免过失,他们极力反对人们犯同样的错误。
对待未来―――怀疑的
他们倾向于怀疑,因而希望运用全部的人性努力来避免过失。没有什么是确认无疑的,唯一毋庸置疑的事情,就是理性的怀疑行为。
对待过去―――相对的
在他们看来,事件本身无所谓好坏,而是取决于某人看待他们的方式。他们认为事情是相对的,对待挫折采取相对论赋予了理性者一种唯我的世界观。即其他人并不 能完全理解和分享我们的意识,每个人在意识里都是孤独的,也是独一无二的。
生活的地点―――路口
并不把事件独立起来,而是关注事物之间的关系。
生活的时间―――间歇
对他们来说,时间是受到某个事件限制和界定的一种间歇、一个片段,只有事件本身,才可以讲到时间概念。
5.4理性者的自我形象
构成自我形象或者自我观念的,一般是三个方面,即:自尊、自重、自信,它们相互产生影响。
自尊―――聪敏
理性者感到自豪的是他们在完成许多和各种各样自己所专心投入的工作过程中表现出来的聪敏性。
自重―――自主
自主是他们的源泉,即使在不考虑结果的时候,理性者也希望尽量按照自己的规则生活,依靠自己的智慧了解社会,并根据独立的程度给予自己相应的尊重。他们都 是个人主义,反对任何将主观标准强加给他们的企图。
自信―――坚定
只要感到自己具有坚强的意志或不可动摇的决心,理性者便比较自信。
5.5理想主义者的价值观
本性―――镇静
理性者喜欢平静的心境,这种特制在混乱和躁动的环境中表现得尤为突出。但他们并不是表面上那样冷淡和与人疏远的。
信赖―――理性
理性者唯一无条件信赖的事物就是推理,只有在一定条件下,才相信其它事物。
向往―――成就
他们的特征之一就是渴望成就,平静的外表之下,有着一种令他们备受煎熬的渴望,即实现他们为自己制订的目标。
寻求―――知识
理性者关注的是知识的积累,对知识的寻求有两种目标:即必须同时了解“怎样寻求”和“寻求什么”。
珍视―――敬意
当理性者被一位敬慕者问及他们对自己所制造某些事物的评论,特别是当这种请求的本意是揭示他们的基本原理时,理性者会很高兴。认为这种敬意是给予他们的产 品的,而非针对个人的。
渴望―――专家
他们往往把技术奇才特别是科学天才视为心中的偶像,有着支配自然界的、别人看起来几乎是神秘的力量,全身心的追求科学的四种目标:预示和控制事件的发展, 了解和阐述他们发生的背景。
5.6理性者的社会角色
人类存在两种基本的社会角色,一种是所处社会环境中,自身的地位作用确定的;另一种是我们为自己争取来的。
有三种社会角色在人格研究的因果关系上,起着特殊重要的意义:配偶、父母、领导。
5.6.1婚姻―――思想伴侣
对理性者而言,与配偶共同分享他们所关心的事物是至关重要的。但,这种分享的愿望,限制了他们的择偶范围。理性者通常将择偶作为一种困 难、甚至是危险的问题来解决,他们告诫自己不允许出错,因为这是终身大事。
但,他们是令人愉快的伴侣―――忠诚、没有怨言、性爱热烈,在人际交往中正直、光明正大,并且没有独占欲。但是,他们不容易接近,而且有些复杂。
择偶
理性者不喜欢花费过多的时间和精力用来建立社交联系,他们不仅认为约会有些荒唐可笑,而且很不容易参与娱乐活动,约会往往会成为他们的考验。即使在青年时 期,他们仍有可能在约会的时候,表现出某种程度上的拘谨和笨拙。
他们进入大学或工作环境后,也会出于一定的目的到处约会,但,当他们确立了比较固定的恋爱关系后,便不再有这种冲动了。他们从个人伦理方面,厌恶性交杂 乱,他们大部分不会向人谈起他们的风流韵事,几乎不与朋友讨论他们当前的性生活。保持隐秘及严肃承诺的肉体关系,是理性者恋爱中的常见模式,也许是因为他 们习惯于十分缓慢的发展性爱关系的缘故。
恋爱对于理性者而言,是在间或困难的寻找一位他们认为值得为之进行私人投入的人。理性者型的人,希望能了解自己正在做和将要作的事情,希望仔细思考之后再 确立恋爱关系。一旦确定,他们就准备进一步投入自己的感情,急切根据构思的脉络发展恋爱关系,当然,前提是对方正在对此做出响应。无论长期短期的恋爱关 系,他们都希望另一方是认可的,如果不能,他们或许会耸耸肩,带着淡淡的遗憾走开。理性者一旦经过认真寻找之后确定了自己的伴侣,一般不会再改变心意了。
理性者中的协调型的人(陆军元帅和策划者)比工程师型的(发明家和建筑师)人更富于计划性,他们往往会很快拒绝不符合条件的人,而工程师则在择偶过程中显 得相当被动。他们都可能和碰到的第一个品质优秀又向他们表示好感的人结为百年好合,只是为了解决婚姻大事而已。虽然弊端很多,但是,除非他们的选择是完全 不幸的,否则他们都会恪守承诺,并想尽一切办法维护好这段恋情。
虽然理性者的择偶过程表现出过重的人为控制色彩,但它仍然对其它气质类型的人有吸引力。艺术创造者,赞赏理性者追求有效行为和摆脱传统束缚的倾向,同时也 乐于尽自己所能让他们生活得快乐些,劝他们不要过于严肃、压抑的对待工作;护卫者,高度评价理性者的严肃和压抑的对待工作,真心的帮助理性者体验到踏实可 靠的感觉,为他们提供愉快而传统的社交活动,并引以为傲;理想主义者,受到理性者的吸引是最强烈的,不仅由于他们的思想适应性和共同的兴趣,还因为理想主 义者对理性者目标专一、全神贯注的人格特征赞叹不已,这与他们思想漫无边际、注意力分散的本质是多么的不同啊。
一旦选定了伴侣,理性者便感到自己对这种关系负有责任,不仅仅是形式上的。社会的规则不对他们构成影响,而他们自己制定的行为标准却是必须考虑的。婚姻不 是他们的承诺,单独的承诺才是。
婚姻
一旦对某人投入了感情,理性者便开始自由自在的满足他们各种各样的兴趣,相当迅速的面对婚姻中的主要问题。他们常被配偶谴责冷淡和无动于衷,以及表面的疏 远和漠不关心。理性者对此感到惊诧,因为他们自己知道自己内心是涌动着火一般的热情的。但,这确实是大部分理性者婚姻中的冲突根源,表面和内在反差如此之 大的原因是他们对效率的追求,和对自主性的渴望。
他们常常沉浸在获取知识的事务中,使得他们与现实脱节,即使和配偶共处一室,却看起来遥不可及,他们的配偶为此经常抱怨。虽然查觉不到,但是理性者并非是 漠不关心或反应迟钝的,一旦这些事情进入到他们的视线中,他们都会表现出真实的兴趣。
而双方的口角也是存在的,因为伴侣希望理性者能够不用自己提醒就能注意到自己,而无需别人提醒,所以他们抑制着不断升级的怒气对待理性者主动向自己表示兴 趣和爱情,当这个希望落空,他们就会谴责对方。
理性者一直在用最小的代价获取最大的成果,这些可以解释他们为什么相信逻辑推理的准确性,或者在别人犯错时显得那么严厉无情,抑或是在他们注意力集中的时 候,面露愠色。
同时,效率观念成为理性者婚姻中最常见的难题,即理性者型人情愿向伴侣谈及爱情,使他们因自己的沉默而受到感情的伤害。理性者并非不爱自己的伴侣,而是厌 恶陈述显而易见的事实,往往不会对其情话绵绵,而他们的伴侣或许正渴望这些。
理性者表面冷淡的原因,是他们原则性的坚持自己以及配偶的独立自主精神。他们是所有类型中,最善于自我指导和思想独立的人,反对甚至憎恶被迫违反个人意愿 行事或按照别人的规律生活。因此,如果理性者从配偶言谈中查觉出哪怕最轻微的压力,要求或暗示他们要遵从社会规范,他们都会阻止及拒绝合作。哪怕是微不足 道的比如打扫房间、帮助购买杂货、为社交聚会挑选礼服等的小事。他们的拒绝方式可能是沉默、消极抵制或冷冷的叹气,很少会说不,或提出抗议,但却不会直接 听从吩咐。他们会为了避免争吵而保持缄默的我行我素,在迫不得已的情况下,他们才会允许自己的自主性受到削弱,但是同时,他们的烦恼也会随之不断增加。
除了这种导致关系紧张的反抗之外,他们也极不满意从内心深处涌出的,试图控制其他人的人体自然冲动(欲望、情感、嗜好、期望)。理性者也像所有人那样有许 多失去理性的冲动,虽然他们本性不信任这些冲动。他们对自己冲动的紧密控制,也会给他们的婚姻带来损害。即使与最挚爱的人在一起,他们也会不动声色的克制 和隐藏他们的情感。这些,都强化了理性者冷血的形象。理性者的亲人往往会惊奇地发现他们具有从未表露过的某种技能、兴趣或性格特点。
他们不仅按照自己的见解生活,而且也期待着配偶也能按他们自己的意愿生活。自身依赖为他们所不齿,对期望自己给予幸福或完整的配偶,他们没有丝毫的同情 心。但大多数情况下,他们无法把握配偶的行为,而且他们自己也觉得自己无权干涉他们。他们以旁观的态度愉快的看着孩子成长,养育孩子对理性者来说是件幸福 的事情。遇到喜欢争吵的伴侣,他们通常会避免自己卷入的退后一步,观察对方,静待他们的怒气过去,殊不知,这往往进一步激怒了对方,加深了矛盾。
他们毫无占有欲的照顾着他人,并将这些延伸到物质上,他们对身外之物不是很感兴趣。土地,是理性者强烈希望拥有的,有利于保障他们的自由和自主。家就是他 们的城堡,避免外界的干扰。而对工具的占有,是他们的另一个弱点。理性者的家里,可能以任何形式堆积着大量的书籍,各式各样的。他们记不得纪念日,且不太 注重外表,也觉得没什么必要。
伴侣组合
尽管存在种种误解,但无论男女理性者,确实能够在很大的程度上赢得配偶的欢心。他们与各种气质的人皆有可能缔结美满婚姻,但是需要注意些棘手问题。
理性者&艺术创造者:
理性者缺乏占有欲,不愿意与配偶起冲突,这与艺术创造者热爱自由的天性配合的极为默契。理性者觉得艺术创造者和他们一样不拘礼仪,赞赏他们对工具和功利的 追求,同时,觉得他们善于娱乐,能帮助自己忘记一些烦心的事,释放压力。但是,如果艺术创造者对他们的摆布增加,理性者也会觉得他们轻佻,并对于不喜欢讨 论抽象事物的他们觉得兴趣索然。
理性者&护卫者:
护卫者作为理性者的伴侣,是有着不可估计的优势的,即作为家庭稳定而可靠的核心。理性者沉迷于象牙塔里,常常会远离家庭生活中的日常劳动,护卫者情愿帮他 们作家务和管理琐事,还负责引导他们参加社交活动。但是,理性者感觉护卫者过于唠叨,因而将严格保护自己的自主性不受侵犯。护卫者精于部署却对抽象的东西 不感兴趣,理性者可以不和伴侣交流这些,但长此以往,会觉得自己正在丧失某种重要的对外联系。
理性者&理性者:
他们有共同的话题,一旦有机会走在一起,会展开热烈的讨论。但,这种竞赛有时候会变得很不客气―――理性者将会在争辩性的讨论中,致对手于死地。他们往往 都沉浸于自己的世界里,忘了对方,隔阂逐渐加重,两者必须有一人懂得放下手中的工作,主动与另一方进行接触。
理性者&理想主义者:
同理想主义者结婚可能是理性者的最佳选择,他们有共同的兴趣,并把他们安全的联系在了一起。同时,理想主义者给俩人的爱情注入了热情,吸引着那些善于自我 控制的理性者。冲突也是固有的,希望在友好气氛下辩论的理想主义者,和理性者辩论,对他们来说是件繁重的任务。另外,理性者对表达情感的抵触,和理想主义 者对情感表达的渴求,成了他们婚姻关系中,永恒的难题。
5.6.2养育子女
理性者型的孩子
他们被称为“冷漠之人”,无疑他们是四种类型中,显得较为平静、安宁,而这种天性出生就显露出来了。他们相当宁静和沉默寡言,可能会使不同气质类型的父母 感到莫名其妙。并非说他们总是无动于衷,因为在他们泰然自若的背后,可能蕴藏着因努力控制情感而需要承受的压力。也体验到因强烈渴望预测和控制事态发展而 带来的紧张情绪。理性者生来便是对这个世界起着战略性作用的,但是,他们只占总人口的6%,他们的父母老师,无法很好的引导他们,所以他们大多依靠自己来 完成角色变体。父母经常会对他们的心不在焉感到失望,他们房间总是处于混乱状态,然而他们自己却能清楚的知道每样东西的准确位置。他们收藏兴趣广泛,并对 编排和分类很感兴趣。
理性者对各种结构装置玩具(积木、拼插类)有着特殊的爱好,男孩儿把几乎任何物体,都能变成某种类型的攻击武器。他们长大了些,就会开始玩儿国际象棋或策 划类的游戏,会对箭术和空手道等格斗招数感兴趣。如果他们成功了,会那么的自豪,如果超出他们的能力范围,他们会很羞愧。因此,批评他们的失败不是很明智 的,过多的失败会导致他们的自尊心受到伤害。
理性者孩子在语言上较为早熟,很早便学会了阅读,并开始在谈话中运用大量词汇,但也有人迟钝些,比如爱因斯坦。他们会有许多恐惧以及重复的梦魇,其活跃的 想象力是导致这些恐惧产生的根源。他们不喜欢受到他人的控制和指导,还会倔强的反抗,父母的打骂会深深地侵扰他们,他们极端而长久的对此怨愤。自主性对他 们来说很重要,别人觉得他们“高傲”或“自大”,其实他们只是需要独自思考,保持自给自足的状态而已。因此,青春期后,对父母的经济依赖,都会他们倍感苦 恼。他们的自尊在感到依赖的时候下降,时间越长,他们体验到的负疚感就越强。
了解事物的工作原理对理性者孩子尤为重要,并探索每样东西。实际生活中,他们并不是一点儿都不喜欢和他人争斗的,只是如果这种结果是由他们的调查研究引起 的,他们很自然的就将其当作必然结果予以接受。父母最好对他们多些耐心,并为他们准备各式各样的玩具,不用很多。最重要的是,为孩子读故事―――科幻、魔 法、巫术、英雄、成功的史诗,他们都特别的喜欢,获得的快乐源于他们的想象力。
他们中好多对权威都有积极而永久的不信任感,某些情况下,还会导致他们的蔑视。“试着去做,只有做了,它才会有意义”是理性者所秉持的,他们只有在觉得要 求有一定道理的时候才愿意服从,对那些蛮横不讲理的人,很快就失去了尊重。
在理性者孩子平静的外表下,有着对于成就的向往,并困扰着他们。他们对自己的要求很高,超出他们的能力范围,在他们无法实现时,会感到逐渐形成的压力。逐 步提高的要求使得理性者型的孩子脆弱地惧怕失败,即使在别人眼中他们正在走向成功,他们却变得越来越紧张和易于兴奋,对周围的事和人表现得很不耐烦。
他们很小就显现出悲观的思想观念,看到他们总是很谨慎的衡量着。尽管他们会听取别人的意见,却总是对别人提出的做法心存怀疑。他们不信赖任何事物,不崇尚 权威,但是也有些恃才傲物。
父母和子女―――促使独立者
他们鼓励子女发展一种不断增强的独立性,不会将不合理的行为规范强加给他们。他们尽量通情达理的对待孩子,并尽最大努力帮助其成长。
理性者父母&艺术创造者型子女:
理性者型父母的实用主义观点有利于他们在艺术创作者型子女的成长过程中起到监督作用。他们的客观性决定了他们不会对子女抱有过多的期望,孩子无论做什么, 他们都不会感到失望。理性者父母会根据逻辑推理,立即并转移被孩子滥用的特权,正是在艺术创造者型孩子身上非常适用的教育方法,虽然是偶然的。这些适应性 很强的孩子,马上就学会在限定的范围内快乐的玩耍。理性者父母对孩子表现出的艺术美感感到惊讶和喜悦,若有机会,他们会提供给孩子系统学习的机会。
理性者型父母&护卫者型子女:
理性者认为和护卫者型子女有某种问题,有时还会有些挫折感。他们感到不知所措,不知道能为他们作些什么,因为没有什么他们认知里的东西是这些孩子感兴趣 的。他们对孩子努力适应社会的行为感到疑惑不解,他们模仿别人,竭力与所有人友好相处,这在父母眼中,是极度烦恼的。还奇怪他们为什么那么缺乏安全感,他 们那么容易记录那些痛苦、失望、错误和恐惧,父母深感失职和无助,他们无法要求孩子拥有任何渴望。另一方面,护卫者型的孩子,竭尽全力的取悦他们困惑且变 幻莫测的理性者型父母。理性者父母最好的方法就是回避,让配偶去监护孩子或任他们成为他们想成为的那种人。
理性者型父母&理想主义者型子女:
理性者父母是实用主义者,他们机敏的发现,对多数孩子有效的管理模式并不一定适用于理想主义者型子女。父母对待敏感易动感情的理想主义者子女,可能会有些 局促不安,他们的说服对孩子来说没有意义。虽然他们耐心的说服对孩子没用,但这些父母却不会批评或体罚孩子,因而不会加剧自己的愤怒。父母对孩子表现出的 热情和想象力感到满意,也建立了他们之间牢固的感情纽带的基础,并且这条纽带很少会断开。
理性者型父母&理性者型子女:
理性者型的孩子愿意听从理论说教,随着年龄的增长,他们愿意接受的道理也越来越多。虽然父母在教育子女时感到有些困难却不会特别的费力,他们自信的认为, 只要对孩子的要求是合理的,孩子绝不会让他们失望的。父母对子女许多特点欣喜不已,他们愉快的看着孩子身上和自己相同的特质。但是,他们必须注意到子女对 于社交发展的需要,最好有一位其它类型的父母帮助他们了解与人融洽相处的艺术。
5.6.3领导者―――预想家
理性者实践最多,因而协调者和建造者的角色最适合。他们被称为“预想家”型的领导者,能预测组织机构的未来,然后构想计划来有效实现目 标。他们的创造性和技巧方面的实际知识,帮助他们把复杂事情简单化,并将模型绘到图纸上,随机应变以提高效率。当被要求运用策略和设计某种新的事物时,他 们会感觉很快乐,因为在他们眼里,这些是有价值的工作。
成效管理,对理性者而言,是一种很好的领导模式,他们把长远的战略放在一切活动之前。假如领导集体中没有这样的一位领导者,人们迟早会在混乱中忽略了机构 本来的目的。规则、程序和职务都是令人怀疑的,只有符合他们功利性的事物才被允许延续下去。他们很快就能发现任何以拖延、滞缓形式出现的官僚主义,并像实 施外科手术般地予以清楚。他们不能容忍官僚主义,并有些无情的抵制,以致那些无法实现价值的活动,被快速的剪除。
他们预见的是十年后的样子,可能难以表达自己的远见。人们跟随他们,是因为觉得他们对未来的想像很吸引自己;但人们也会因为他们回避细节的描述而迷失了方 向。他们运用专业且简洁的话语进行必要的陈述,并本能的期待追随者能领会这些他们看来准确无误的问题。但人们往往不能理解他们的分析,而深感失望。
他们不明智的认为别人把工作做好是显而易见的事情,没必要表示感激,甚至自己说了,在别人眼里是多余且奇怪的。他们虽然理解,却很难让自己产生这种交互作 用,他们应当学习理想主义者型领导在这个领域里的行为。
他们对首次参加的事情,满怀热情,但一旦完成他们更希望别人来接受。结果,他们往往觉得结果不是太理想,却不会因为这种失败去责备别人,只是自责。且到了 下一次,他们就失去了兴趣。理性者型领导者还有另一个弱点。他们过于关注战略性规划,而忽视了他人的感受,下属会觉得他们疏远甚至冷漠,抱着犹豫不决的心 情接近他们,他们很可能会孤立于机构成员的业余生活之外。
还有就是他们只重视聪明的下属、同事或上级,他们对自己和他人都抱有很大的期望,往往超出他人和自己的能力范围。拥有强大力量的人,同样也有极大的弱点, 他们会因不断提高目标而烦躁和不满。这种情绪,有时候会表现为不耐烦,而且,他们无法容忍自己和他人两次犯同样的错误。
他们喜欢那些不厌其烦理解他们工作复杂性的观察者,也会响应别人对他们战略智能的承认。只是因日常工作做得好而得到表扬,并无法让他们高兴。对他们来说, 需要的是鉴赏者的能力,且不能多说什么。因为就像他们不善于口头称赞别人一样,他们也很难接受来自他人的赞赏。
5.7理性者的角色变体
虽然将四种气质类型分别看作单独、完整的行为状态模式是十分有益的,然而每种气质类型中的个体成员之间,还存在着明显差异。
其中一些善于计划的,倾向于从事搞笑活动的协调者这种训诫型角色;另一些善于探索的则选择有效原型和模型的建造者这种信息型角色。其中前者倾向于陆军元帅 或策划者的角色,后者则倾向于成为建筑师或发明家。
2010/03/16
通过quota进行磁盘配额
实验 用户磁盘空间限制
注:这是我做的Linux实验报告之一,happy copy! : )
1、目的与要求
学习和掌握Linux操作系统下磁盘空间管理的常用命令
2、内容
系统中有aa,bb用户,属于hhh组。新增的虚拟硬盘/dev/sdb,大小1G划分分区/dev/sdb1 ,格式化为ext3,并将/dev/sdb1设置为自动挂载为/home。在/home下实施磁盘的配额管理,普通用户aa、bb的软配额为150MB,硬配额为200MB,软配额的过渡时间为3天。组hhh的软配额为500MB,硬配额为700MB。设置完后启动配额,用root帐户查看所有帐户和组的配额情况。登录aa用户分别查看其用户和组的配额设置;在/home/aa下新建一文本文件123.txt,内容为自定,再查看其配额有什么不同?
此后的内容不要抄实验报告上
(注意事项:请将/home重新挂载后再创建aa、bb用户,避免其主目录在原来的分区内而造成使用错误)
实验请写出相关命令和配置文件修改的操作,不要直接抄给出的简单提示,否则视为没做:
简单提示:
1、先新增虚拟硬盘菜单vmàsettingàADD。。。 启动虚拟机
2、fdisk /dev/sdb 分区;mke2fs –j /dev/sdb1格式化
3、编辑/etc/fstab文件添加/home分区的挂载和配额设置(要给出具体内容)
4、重启或者mount /home命令挂载
5、建立用户useradd –g hhh aa
passwd aa
useradd –g hhh bb
passwd aa
6、quotacheck –cuvg /home 创建文件并且格式化
7、edquota –u aa 设置aa用户配额;(还要写出配置文件具体修改内容的行)
8、复制配额给bb
9、edquota –g hhh 设置hhh组配额 (还要写出配置文件具体修改内容的行)
10、修改过渡时间edquota命令 (以下的自己找参数)
11、启动配额quotaon命令
12、repquota命令root用户分别查看所有用户和组的配额设置
13、用aa用户登录,quota命令查看自己的配额
14、用vi建立123.txt文件,再用quota查看(要写出不同)
通过quota进行磁盘配额
使用quota进行硬盘配额,可以控制用户对磁盘空间和文件的控制,我们以一个实例作为说明,对2个用户test0、test1分别进行磁盘使用空间和创建文件的限制。
首先,创建一个新的分区,将/tmp挂载在新的分区。
#fdisk /dev/hda
创建后执行:
#partprobe
partprobe包含于parted包中,可用rpm -q parted检测是否安装。它可以允许用户创建分区并且在不重新启动机器的情况下让系统能够识别这些分区。
格式化新建分区并将其挂载到/tmp下:
#mkfs –t ext3 /dev/sdb 格式化分区,也可以使用mke2fs -j /dev/sdb命令
#mount /dev/sdb /tmp 将/tmp挂载到sdb分区
修改分区表 :
#vi /etc/fstab //增加usrquota,grpquota
/dev/hda7 /tmp ext3 defaults, usrquota,grpquota 0 0
创建用户和组:
#groutadd qt
#useradd -g qt test0
#useradd -g qt test1
#cd /tmp
#mount –o remount /tmp
#quotacheck –cvug /tmp
#quotaon –vug /tmp //开启quota
Quota会在/tmp目录下自动创建quota.user quota.group
对用户test0进行磁盘空间使用限制
#edquota –u test0 修改quota配置文件
Block limits File limits
User used soft hard timeleft used soft hard timeleft
userq -- 0 8000 10000 0 0 0
Block limits是对磁盘空间使用的限制,以字节为单位,soft是指软限制,hard是指硬限制,如例,soft限制为8MB,hard限制为10MB,当用 户test0使用空间超过8MB时,系统会进行提示,但可以继续使用空间,而当用户test0使用空间达到10MB时,就会限制用户test0继续使 用/tmp空间
我们可以进行一下测试,手动创建相对大的文件:
#dd if/dev/zero of=testfile bs=1M count=6 将创建成功
#dd if/dev/zero of=testfile bs=1M count=10 将创建成功,但会有提示
#dd if/dev/zero of=testfile bs=1M count=15 将创建失败,超出hard限制
对用户test1进行创建文件使用限制
#edquota –u test1 修改quota配置文件
Block limits File limits
User used soft hard timeleft used soft hard timeleft
userq -- 0 0 0 0 10 20
File limits是对用户创建文件的限制,soft和hard同上是软限制和硬限制,分别是10、20,当用户test1创建文件超过10个时,系统会进行 提示,但仍可以继续创建文件,而当用户test1创建文件超过20个文件时,就会限制用户test1继续创建文件,但要注意,因为用户test1是 在/tmp目录下进行了磁盘配额限制,所以/tmp目录会算做一个文件,所以user02最多只能创建19个文件。
我们可以进行一下测试,手动创建文件:
#for i in $(seq 1 15);do echo “testfile$i”;touch testfile$i;done
创建15个文件,此时quota会进行提示,而当超过20个文件的时候,quota就会限制用户user02继续创建文件
#edquota –t
可以设置timeleft的值,在这里我们都设定为2分钟,重复上面的例子,用户user02创建60个文件,此时会出现quota的提示,但仍可以创建 文件,但当我们等待2分钟后,你会发现,user02已经不能再进行创建文件了,这里就是timeleft的作用,就是当你超过soft限制时,设定有效 的时间。
其他相关命令
#repquota 重载quota设置
#quota –v 察看quota设置
#quota on/off quota开启/关闭
这样我们就可以对用户进行相应的限制了。
查看用户磁盘使用情况 :
要查明某一个用户使用了多少磁盘空间,例如lanf,可以使用如下的命令:
#quota -u test //查看test0用户配额使用情况。
采用下列命令将相同的限制复制给其他用户(test2 test3 ):
#edquota -up test0 test2 test3
使用repquota命令来监控配额使用情况:
#repquota -a //显示所有用户配额使用情况。
2010/03/14
使用洋葱路由(tor)自由访问网络
使用Tor无阻碍安全访问网络详解
Tor (The Onion Router)——在中文世界中被戏谑为“套”——最初是 用来避免网络跟踪的工具,但是时至今日,更多的普通用户主要用它来突破网络封锁。只要给浏览器带上“套”,就可以访问一切被封锁的网站。
警告
对此文档有任何建议,请发信至:freeweb.tutorial@gmail.com通常情况下,仅仅带“套”访问被封锁的网站本身安全的。但是,即便带着“套”在网上随意发言也依然并不是安全的,因为你的计算机 上的某些其它设置可能依然可能暴露你的身份。另外,千万不要用带“套”访问支付网站,因为这样做可能会中途泄露你的帐号密码。
文档目录
- 获取Vidalia Bundle
- 安装Vidalia Bundle
- 连接至Tor网络
- 为Tor添加网桥
- 制作Firefox绿色版
- 为Firefox添加AutoProxy插件
- 把自己的计算机变成网桥
- 局域网共享Tor服务
- 为IE/Google Chrome/Opera设置“自动配置脚本”
- 伪装你的MAC地址
(一)使用emule下载软件下 载
浏览至http://www.emule.com,下载并安装emule或者emule plus。
当emule连接至网络之后,选 择搜索功能,搜索“vidalia-bundle”,即可找到大量下载资源。
(二)到 rapidlibrary.com上搜索
(三)使用迅雷下载
用迅雷下载这个链接:
Tor是一个命令行工具——大多 数普通用户对这样的工具束手无策(因为这样的程序几乎不为用户提供可视化反馈)。Vidalia是一个Tor的图形界面控制程序,使用起来非常方便。而 Vidalia bundle,是一个含有Tor、Vidalia、Privoxy、Torbutton的集合安装程序。
Tor本身是一个Socks代理 程序,除了Firefox可以直接支持这种代理之外,其它几个常见的浏览器,诸如IE、Google Chrome、Opera等等只支持Http代理,所以,如果用Firefox之外的浏览器的话,就需要Privoxy这个程序,它的作用是把Socks 代理转换为Http代理。
Torbutton是一个 Firefox插件,基本上属于可有可无的东西,Firefox与Tor搭配使用的时候,AutoProxy才是个必须的插件。(后文有详细介绍)。
如果你只是用Firefox浏览 器,那么Privoxy就是多余的东西了。然而,如果你想让你的局域网里的所有人都共享你机器上的Tor服务,这个Privoxy也就成了必须的东西—— 因为其他人可能更习惯使用的是其它的浏览器。
Vidalia Bundle的安装向导使用非常简单,一切按照默认安装即可。
启动“Vidalia”程序,将 看到以下的画面:
第一次运行Vidalia的时 候,图中的绿色进度条可能长时间停滞,Status信息提示说“Connecting to a relay directory failed (no route to host)”。
这是因为你的计算机处在一个被封 锁(因种种原因而用各种手段)的网络之中(或者是你的ISP不允许你访问一些特定的网络),于是,你需要给“套”搭“桥” (bridge) 才行:你需要告诉Tor另外一台正在使用Tor的计算机的IP地址及其端口(即,所谓的“搭桥”)。只要你知道一个甚至多个正在使用Tor的IP地址及其 端口,你就可以进入Tor网络。一旦你进入Tor网络,你就可以自由地、匿名地访问任何你想要访问的网站。
进而,一旦你已经身处Tor网络 之中,你就可以通过Vidalia把自己的机器也设置成一个“桥”,帮助你的朋友进入Tor网络(详见“如何搭建网桥”部分)。
现在你需要获得至少一个网桥IP 地址及其端口。
获得可用网桥的方式有以下几种:
一:给bridges@torproject.org发一封邮件(最好使用gmail邮箱),内容为:“get bridges” (邮件写不写标题都可以),几秒钟之内,你就会收到一封含有bridge list的邮件,比如,其中有这样的内容:
一:给bridges@torproject.org发一封邮件(最好使用gmail邮箱),内容为:“get bridges” (邮件写不写标题都可以),几秒钟之内,你就会收到一封含有bridge list的邮件,比如,其中有这样的内容:
[This is an automated message; please do not reply.]
Here are your bridge relays:
bridge 92.41.50.141:443
bridge 83.226.198.100:9443
bridge 69.60.117.34:9001
Here are your bridge relays:
bridge 92.41.50.141:443
bridge 83.226.198.100:9443
bridge 69.60.117.34:9001
二:登录 http://www.torserver.cn/ 获得。
三:在twitter上跟随 @toridge,该账号会不定时提供最新可用网桥。
得到网桥后,在 “Settings”->“Network”中,勾选“My ISP blocks connetions to the Tor network”,之后就可以看到添加网桥的文字输入框:
添加完毕之后,按“OK”按钮关闭该对话 框。当然,如果您不习惯英文界面,可以在刚才的对话框里选择“Appearance”->“Langage”中选择“简体字”。
连接Tor网络可能还需要一小段 时间。这时候,你可以点击“View the Network”查看当前连接进度和情况:
左面的列表是当前可连接的Tor 网络中的计算机。你可以把鼠标指在地图上,而后靠鼠标滚动条放大或缩小地图,查看可连接的Tor网络的节点位置。
一旦Status中的洋葱条图标 变绿,就说明你的计算机已经连接至Tor网络,已成为这个网络中的一部分。
只要你有绿色的洋葱头,你就自由了,就好像你突然变成了一只会飞的小鸟,那堵对你来说曾经不可跨越的墙现在突 然变得可笑起来,你可以从此对它熟视无睹。其实,那墙也不是没有用处,它起码让你学会了如何使用“洋葱头”。
"Brick walls are there for a reason. They let us prove how badly we want things." So said Carnegie Mellon Professor Randy Pausch in his final lecture
下载并安装Firefox: http://www.mozillaonline.com/
在Firefox安装目录之内创建一个文本文件,取名为“createshortcuts.vbs”,将以下内容拷贝粘贴至此 文件内而后保存:
Option Explicit
Dim objShell, objDesktop, objLink, WshShell, WshSysEnvDim strApp, strAppProfile, strWorkDir, strIconPath, strUserHome, strHomeDrive, strTorFolderDim filesys, torcf
'create firefox shortcutset filesys = CreateObject ("Scripting.FileSystemObject")strWorkDir = filesys.GetAbsolutePathName(".")strApp = strWorkDir & "\firefox.exe"strAppProfile = " -profile " & Chr(34) & strWorkDir & "\defaults\profile" & Chr(34)strIconPath = strApp & ", 2"Set objShell = CreateObject("WScript.Shell")objDesktop = objShell.SpecialFolders("Desktop")Set objLink = objShell.CreateShortcut(objDesktop & "\Mozilla Firefox.lnk")
objLink.TargetPath = strAppobjLink.Arguments = strAppProfileobjLink.IconLocation = strIconPathobjLink.WorkingDirectory = strWorkDirobjLink.Description = "Mozilla Firefox Customized"objLink.HotKey = ""objLink.WindowStyle = 1objLink.Save
WScript.Quit
双击执行 “createshortcuts.vbs”,桌面上就会出现一个新的“Mozilla Firefox”的快捷方式。以上的代码的用意也很简单:创建一个使“Firefox调用\defaults\profile\中的配置文件(而不是安装 程序默认生成的位于用户系统目录内的配置文件)”的Firefox快捷方式。
此后可以将整个“Mozilla Firefox 3”目录拷贝到硬盘的任何地方(U盘也行),而后只要重新执行一次“createshortcuts.vbs”之后使用桌面上新生成的快捷方式即可。
用Firefox浏览这个页面 (AutoProxy的下载安装页面):
点击页面中的“+|安装到Firefox”。(也许你还要在“让我安装这个实验性的附加组件” 之前打勾才行)。
安装完毕之后,重新启动 Firefox即可。安装AutoProxy之后,你基本上再也看不到这个可恶的提示了:
Firefox重新启动之后,会有一个AutoProxy设置向 导:
先选中 gfwlist(P.R.China),然后再对话框下方的下拉条“默认代理:GAppProxy”中选择“Tor”,再按“确定”按钮即可。
也可以用以下方法设置。
从菜单“工具”开始,依次选择“附加软件”、“AutoProxy”、“选项”:
在“选项(O)”中选 择“启用AutoProxy”和“在状态栏显示”。
在“代理规则(R)”里 选择点击“更新所有订阅”(这个命令的快捷键是“Ctrl+Shift+T”,那么这个插件会自动更新被墙掉的所有网站地址,而后,这些网站将通过代理服 务器访问,而其它的网站则不通过代理直接访问。
在“代理服务器(S)”里选择点击“选择代理服务器”,在其中把Tor设置 为“默认主代理”:
至此,你的Firefox已经被你打造成了个非常智能的“狐狸精”了。
Firefox还有很多精彩 的功能,请到Google搜索“Firefox傻瓜教程”。这里还有一个“Firefox私藏版”:http://ifile.it/wjs9qm8,也可以试一试。
已经变成Tor网络一部分的你那 台计算机,也可以被设置成一个“bridge”。
- 在Vidalia程序主界 面中点击“Setup Relaying”按钮;
- 在“Network”标签中,把 “My ISP blocks connetions to the Tor network”之前的对号去掉;
- 在“Sharing”标签页中选择 第三项Help censored users reach the Tor network...”;(还可以设定“Bandwidth Limits”,不过,一般来说,Vidalia通常会相当智能地控制带宽,现在的人们通常使用的也是“宽带”,没必要太“小气”了)
- 点击“OK”按钮关闭对话框;(这 时Windows可能会跳出一个对话框要求你为Tor程序解除防火墙禁止规则,确认即可)
- Bridge的建立需要花费几分 钟,现在可以先该干嘛干嘛去。过一会重新点击“Setup Relaying”按钮,就可以看到对话框最低端“Let others access your bridge by giving them this line:”之下多了一行代码,如下图所示(其中的“*”代表阿拉伯数字):
这时,你的计算机也成了Tor网 络中的一个bridge。你可以把“bridge ***.***.***.***:443”这行代码(无需后面那一长串数字字母构成的字符串)拷贝粘贴给你的那些无法正常访问Tor的朋友,让他按照之前 介绍的方法添加到他的网桥列表中,他就可以正常访问Tor了——因为他也有bridge了,而后他也可以将自己的机器变成bridge……如此生生不息。 不妨想像一下地球上的各个角落不停地有个洋葱头长出来,过一会儿就变绿了……
一个局域网里只要有一台计算机安 装了Tor服务,通过简单的设置就可以使其它的计算机共享这个服务。
在Vidalia的Settings对话框里点击“Advanced”标签,可以找到“Tor Configuration File”的位置,比如在Windows 7里是这样的:
C:\Users\username\AppData\Roaming\Vidalia\torrc
其中的“username”是当 前登录Windows的用户名;而设置文件“torrc”是个文件名没有尾缀的文本文件。
通常情况下,你的“资源管理器” 是被设置成“不显示隐藏的文件、文件夹或驱动器”的,但是,既然知道这个文件的位置,就很好办了。打开资源管理器,在“地址栏”中输入
C:\Users\username\AppData\Roaming\Vidalia\
之后回车,就可以看到torrc 所在的文件夹内容了。
用记事本打开torrc,把文件 尾部的
SocksListenAddress 127.0.0.1
改成
SocksListenAddress 0.0.0.0
原本默认绑定的监听地址是 127.0.0.1,这是只有当前计算机可以访问的地址,而换成0.0.0.0之后,局域网里的所有计算机都可以通过访问当前这台计算机的IP地址使用 Tor代理了。
为了让其他计算机上的其他类型的 浏览器也能使用Tor代理,你还需要更改Privoxy的监听地址:
在系统托盘里的Privoxy图 标上点鼠标右键,选择“Edit”,再选择“Main Configuration”,这是会有一个记事本文件被打开(内容就是Privoxy的设置文件),找到其中这样一行:
listen-address 127.0.0.1:8118
将其改成
listen-address 0.0.0.0:8118
如此设置完毕之后,重新启动 Vidalia和Privoxy,使以上更改生效。
在这台计算机上打开一个命令行窗 口(通常在“开始”->“程序”->“附件”里可以找到),输入IPCONFIG命令而后回车,即可看到当前计算机的IP地址。
现在,局域网里的其他计算机,可 以通过把代理设置成这台计算机的IP地址,即可使用Tor服务了。
例如,当前这台计算机的IP地址 是192.168.0.100,局域网里的所有计算机(包括当前这台计算机)都可以把Socks代理设置为:
192.168.0.100:9050
把http代理设置为:
192.168.0.100:8118
打开一个文本编辑器(比如 Windows自带的“记事本”),输入以下内容:
function FindProxyForURL(url, host){
host=host.toLowerCase();if (dnsDomainIs(host,"youtube.com")||dnsDomainIs(host,"ytimg.com")||dnsDomainIs(host,"twitter.com")||dnsDomainIs(host,"facebook.com")||dnsDomainIs(host,"fbcddn.net"))return "PROXY 127.0.0.1:8118";elsereturn "DIRECT";}
之后,将文件另存为“ieproxy.pac”(其实文件名叫什么无所谓,只要是.pac尾缀即可;文件位置 在哪儿也无所谓,只要一会儿能在IE设置中指定 其位置即可)。以上内容,哪怕你不是程序员,也很容易看出来是怎么回事儿,以后如果什么网址不能够直接访问,就打开这个文件,在 “||dnsDomainIs(host,"fbcddn.net")”这一行下面补上一行“||dnsDomainIs(host,"blockedsitename.com")”,把其中的 “blockedsitename.com”换成想要访问的网站根域名即可。(注意:保存该文件的目录只能用英文名字)
(由于不能使用通配符,所以,访问blogspot.com上的站点非常麻烦,要逐个写域名;而在 Firefox的FoxyProxy之中,则只需要添加一个“*blogspot.com*”就可以了。就这一条,都足以使我“只使用Firefox”了——哪怕其它的浏览器有更多更好的功能……)
打开IE浏览器,选择“工具”->“Internet选项”,在“Internet选项”对话框中选择 “连接”标签,点击对话框中的“局域网设置 (L)”按钮:在“使用自动配置脚本(S)”之前打勾,然后在“地址(R)”之后的文字框里输入刚刚创建的配置文件本地地址:
Google Chrome和Opera都将直接调用本地的IE网络连接设置,所以无须为了它们重新设置一次。
另外,在https://autoproxy2pac.appspot.com这 个地址上,可以找到一个早已定制好的autoproxy文件。(与前文提到的AutoProxy插件是同一个作者制作的)
选中Tor之后即可下载一个已经配置好的autoproxy.pac文件。将这个文件保存在硬盘的任何一个位置(注意:保存该文件的目录只能用英文名字),而后设置 IE使用这个自动配置脚本即可。
每个网卡在出厂的时候,都内置了一个唯一的MAC地址——通俗地讲,就是这个地球上所有的网卡都有一个唯一的 “身份证”。也就是说,有人有可能用你的MAC地址反向跟踪到你。不过,使用一个小软件就可以伪装你的MAC地址,很简单很方便。这个软件叫“Mac Makeup”。其官方网站是:
下载链接是:
该软件是“绿色版”——即,解压 缩到任何目录即可使用,无须“卸载”只须“删除”即可。
- 在“1”的位置上选择你要 更改MAC地址的网卡(现在大多笔记本电脑都至少两个网卡:一个有线的,一个无线的);
- 在“10”的位置上为选中的网卡生 成一个随机的MAC地址;
- 点击“Change”按钮。
如此这般之后,你的网卡对外的 “身份”就变成了这个刚刚随机生成的“字符串”。以后你可以随时使用这个软件为自己的网卡制造一个新的“身份证”。
以下幻灯片由 @jiehanzheng 同学制作
此版本为 @matrixboy 修订版,遵守CC协议2.5,您可以自由复制、发行、展览、表演、放映、广播或通 过信息网络传播,创作演绎本作品。惟须遵守下列条件:署名,非商业性使用,相同方式共享。Python 简明学习笔记(三)
九:面向对象编程
类使用class关键字创建,类的域和方法被列在一个缩进中。
定义在类中的方法必须有一个额外的第一参数名称,按照惯例它的名称为self,它指的是对象本身。python中的self相当于Java中的this。
eg:
#!/usr/bin/python
#Filename:simplecalss.py
class Person:
def sayHello(self):
print'hello ,how are you ?'
p=Person()
p.sayHello()
#也可写作Person().sayHello()
__init__方法:相当于Java中的构造器,在类的第一个对象被建立时,立即运行。用于对对象做一些初始化。
#!/usr/bin/python
#Filename:class_init.py
class Person:
def __init__(self,name):
self.name=name
def sayHello(self):
print'hello, my name is ',self.name
p=Person('anix')
p.sayHello()
output:
$python class_init.py
hello, my name is anix
#有两种类型的域——类的变量和对象的变量。他们是根据是类还是对象拥有这个变量而区分的。self.name=name:Person('anix')是将anix传递给类,此时name是类变量,self.name=name将类变量赋值给对象变量。(self指的是对象本身)。
类的变量由一个类的所有对象(实例)共享使用,所以当某个对象对类的变量作出的改动会影响所有该类的实例。
对象的变量由每个对象/实例拥有。每个对象有自己对这个域的一份拷贝,所有当某个对象对对象的变量作出的改动不会影响其他该类的实例。
eg:
#!/usr/bin/python
#Filename:objvar.py
class Person:
'''represents a person'''
population=0
def __init__(self,name):
'''initializes the person's data'''
self.name=name
print'(initializing %s)'% self.name
Person.population++
def __del__(self):
print'%s says goodbye.'% self.name
Person.population--
if Person.population==0:
print'i am the last one'
else:
print'there is %d people left.' % \
Person.population
def sayHello(self):
print'hello, my name is %s' % self.name
def howMany(self):
if Person.population==1:
print'i am the only person here'
else:
print'there are %d persons here' %\
Person.population
anix=Person('anix')
anix.sayHello()
anix.howMany()
chris=Person('Chris')
chris.sayHello()
chris.howMany()
anix.__del__()
anix.howMany()
#population属于Person类,是类变量。
#name是对象变量,它使用self赋值。
#__del__方法在对象不再被时候时运行(相当于Java中的system.gc()),当需要指明它何时运行时就得使用与此例相似的del语句。
output:
(initializing anix)
hello, my name is anix
i am the only person here'
(initializing Chris)
hello, my name is Chris
there are 2 person here
anix says goodbye
i am the only person here'
继承:
eg:
#!/usr/bin/python
# Filename: inherit.py
class SchoolMember:
'''Represents any school member.'''
def __init__(self, name, age):
self.name = name
self.age = age
print '(Initialized SchoolMember: %s)' % self.name
def tell(self):
'''Tell my details.'''
print 'Name:"%s" Age:"%s"' % (self.name, self.age)
class Teacher(SchoolMember):
'''Represents a teacher.'''
def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
print '(Initialized Teacher: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Salary: "%d"' % self.salary
class Student(SchoolMember):
'''Represents a student.'''
def __init__(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks
print '(Initialized Student: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Marks: "%d"' % self.marks
t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)
print # prints a blank line
members = [t, s]
for member in members:
member.tell() # works for both Teachers and Students
输出
$ python inherit.py
(Initialized SchoolMember: Mrs. Shrividya)
(Initialized Teacher: Mrs. Shrividya)
(Initialized SchoolMember: Swaroop)
(Initialized Student: Swaroop)
Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
Name:"Swaroop" Age:"22" Marks: "75"
十:I/O
文件:通过创建file类对象打开一个文件,使用file类的read write readline方法来恰当地读写文件,然后调用close方法关闭文件。
#!/usr/bin/python
#Filename:using_file.py
poem='''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
f=file('poem.txt','w')
f.wirte(peom)
f.close()
f=file('poem.txt') #默认为'r'ead模式
while True:
line=f.readline()
if len(line)==0:
break
print line
f.close()
#文件的模式:读模式('r');写模式('w');追加模式('a')
output:
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
储存器:python提供名为pickle的标准模块,使用它可以在一个文件中储存任何python对象,并完整取出来。这被称为持久地储存对象。
另外还有一个模块叫 cPickle,用C语言实现,功能和pickle模块完全相同,但速度比pickle模块快1000倍。
dump(obj,file) load(file)
eg:
#!/usr/bin/python
#Filename:pickling.py
import cPickle as p
shoplistfile='shoplist.txt'
shotlist=['apple','orange','egg','banana','fish','beef','celery']
#write to the file
f=file(shoplistfile,'w')
p.dump(shoplist,f) #dump the object to the file
f.close()
#pick up from the storage
f=file(shoplistfile)
storedlist=p.load(f)
print storedlist
output:
['apple','orange','egg','banana','fish','beef','celery']
十一:异常 exceptions
try...except语句处理异常。
eg:
#!/usr/bin/python
#Filename try_except.py
import sys
try
s=raw_input('enter something')
except EOFError:
print'\n EOF error'
except:
print'\n some error/exception occurred.'
print 'Done.'
raise 引起异常:
#!/usr/bin/python
#Filename :raising.py
import sys
calss ShortInputException(Exception):
'''a user-defined exception'''
def __init__(self,length,atleast):
Exception.__init__(self)
self.length=length
self.atleast=atleast
try:
s=raw_input('enter something:')
if len(s)<3:
raise ShortInputException(len(s),3)
except EOFError:
print'\n EOF error.'
except ShortInputException,x:
print'shortinput exception: the input was of length %d,\
was excepting at least %d'%(x.length,x.atleast)
else:
print'NO exception was raised.'
try...finally语句:
#!/usr/bin/python
#Filename: finally.py
import time
try:
f=file('poem.txt')
while True:
line=f.readline()
if len(line)==0:
break
time.sleep(2)
print line
finally:
f.close()
print'close file'
十二:python标准库
在python附带的安装文档的“库参考”一节中有python所有模块的完整内容。
sys模块:包含系统对应的功能。
eg:使用sys.argv,实现unix下 cat功能:
#!/usr/bin/python
#Filename:cat.py
import sys
def readfile(filename):
f=file(filename)
while True:
line=f.readline()
if len(line)==0:
break
print line
f.close()
if len(sys.argv)<2:
print'no action specified'
sys.exit()
if sys.argv[1].startswith('--'):
option=sys.argv[1][2:]
if option=='version':
print'version 1.2'
elif option=='help':
print '''\
this program prints files to standard output
'''
else:
print 'unknown option.'
sys.exit()
else:
for filename in sys.argv[1]:
readfile(filename)
os模块:包含普遍的操作系统功能,对解决跨平台问题十分重要。如使用os.sep可以取代操作系统特定的路径分隔符。
常用部分:
● os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
● os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
● os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
● os.listdir()返回指定目录下的所有文件和目录名。
● os.remove()函数用来删除一个文件。
● os.system()函数用来运行shell命令。
● os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
● os.path.split()函数返回一个路径的目录名和文件名。
>>> os.path.split('/home/swaroop/byte/code/poem.txt')
('/home/swaroop/byte/code', 'poem.txt')
● os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.exists()函数用来检验给出的路径是否真地存在。
十三:更多内容
·特殊的方法:
一般来说,特殊的方法都被用来模仿某个行为。例如,如果想使用x[key]这样的索引操作(如列表和元组),那么只需要实现__getitem__()方法就可以了。
一些常见的特殊方法:
名称 说明
__init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self) 恰好在对象要被删除之前调用。
__str__(self) 在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有
运算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用x[key]索引操作符的时候调用。
__len__(self) 对序列对象使用内建的len()函数的时候调用。
·单语句块:
大多数情况下,python每个语句块是通过它的缩进层次与其他块区分开的。但如果语句块只包含一句指令,可以在条件语句或循环语句的同一行指明它,如:
>>>flag=True
>>>if flag : print 'yes'
>>>for filename in sys.argv[1]: readfile(filename)
·列表综合:
通过列表综合,可以从一个已有列表中导出新的列表。例如:已知一个数列,希望得到一个对应的数列,原数列中所有大于2的数都是原来的2倍:
#!/usr/bin/python
#Filename:list_comprehension.py
listone=[2,3,4]
listtwo=[2*i for i in listone if i>2]
print listtwo
output:
[6,8]
·在函数中接收元祖和列表:
当要使函数接收元祖或字典形式的参数时,有一种特殊方法,它分别使用*和**前缀,这种方法在函数需要获取数量可变的参数时候十分有用。
>>>def powersum(power,*args):
total=0
for i in args:
total+=pow(i,power) #即i^power
return total
output:
>>>powersum(2,3,5)
25
>>>powersum(2,10)
100
·lambda形式
lambda语句被用来创建新的函数对象,并在运行时返回他们。
eg:使用lambda形式
#!/usr/bin/python
#Filename:lambda.py
def make_repeater(n):
return lambda s:s*n
twice=make_repeater(2)
print twice('word')
print twice(5)
#make_repeater函数在运行时创建新的函数对象,并返回它。lambda语句用来创建函数对象。
#本质上,lambda需要一个参数(这里是s),后面仅跟单个表达式作为函数体(这里是s*n),函数体(表达式)的值作为被lambda新建的函数返回(这里返回s*n的值)。
·exec和eval语句:
exec语句用来执行存储在*字符串*或*文件*中的python语句,例如我们可以在运行时生成一个包含python代码的字符串,然后使用exec语句执行之:
>>>exec 'print"hello world"'
hello world
eval语句用于计算存储在字符串中的有效python表达式:
>>>eval('2**3')
8
#'2**3'是一个字符串,因为被''罩住。
·assert语句:
assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError。
>>>mylist=['list']
>>>assert len(mylist)>=1
>>>mylist.pop() #弹出mylist列表中元素并输出
list
>>>assert len(mylist)>=1
Traceback (most recent call last):
File "", line 1, in ?
AssertionError
·repr函数:
repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。注意,在大多数时候有eval(repr(object)) == object。
>>> i = []
>>> i.append('item') #向列表中增加条目
>>> `i`
"['item']"
>>> repr(i)
"['item']"
基本上,repr函数和反引号用来获取对象的可打印的表示形式。你可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。
十四:
www.google.com ,它会告诉你想要知道的一切. ^_^
注:此教程是我在2010寒假中学习Python的学习笔记。
类使用class关键字创建,类的域和方法被列在一个缩进中。
定义在类中的方法必须有一个额外的第一参数名称,按照惯例它的名称为self,它指的是对象本身。python中的self相当于Java中的this。
eg:
#!/usr/bin/python
#Filename:simplecalss.py
class Person:
def sayHello(self):
print'hello ,how are you ?'
p=Person()
p.sayHello()
#也可写作Person().sayHello()
__init__方法:相当于Java中的构造器,在类的第一个对象被建立时,立即运行。用于对对象做一些初始化。
#!/usr/bin/python
#Filename:class_init.py
class Person:
def __init__(self,name):
self.name=name
def sayHello(self):
print'hello, my name is ',self.name
p=Person('anix')
p.sayHello()
output:
$python class_init.py
hello, my name is anix
#有两种类型的域——类的变量和对象的变量。他们是根据是类还是对象拥有这个变量而区分的。self.name=name:Person('anix')是将anix传递给类,此时name是类变量,self.name=name将类变量赋值给对象变量。(self指的是对象本身)。
类的变量由一个类的所有对象(实例)共享使用,所以当某个对象对类的变量作出的改动会影响所有该类的实例。
对象的变量由每个对象/实例拥有。每个对象有自己对这个域的一份拷贝,所有当某个对象对对象的变量作出的改动不会影响其他该类的实例。
eg:
#!/usr/bin/python
#Filename:objvar.py
class Person:
'''represents a person'''
population=0
def __init__(self,name):
'''initializes the person's data'''
self.name=name
print'(initializing %s)'% self.name
Person.population++
def __del__(self):
print'%s says goodbye.'% self.name
Person.population--
if Person.population==0:
print'i am the last one'
else:
print'there is %d people left.' % \
Person.population
def sayHello(self):
print'hello, my name is %s' % self.name
def howMany(self):
if Person.population==1:
print'i am the only person here'
else:
print'there are %d persons here' %\
Person.population
anix=Person('anix')
anix.sayHello()
anix.howMany()
chris=Person('Chris')
chris.sayHello()
chris.howMany()
anix.__del__()
anix.howMany()
#population属于Person类,是类变量。
#name是对象变量,它使用self赋值。
#__del__方法在对象不再被时候时运行(相当于Java中的system.gc()),当需要指明它何时运行时就得使用与此例相似的del语句。
output:
(initializing anix)
hello, my name is anix
i am the only person here'
(initializing Chris)
hello, my name is Chris
there are 2 person here
anix says goodbye
i am the only person here'
继承:
eg:
#!/usr/bin/python
# Filename: inherit.py
class SchoolMember:
'''Represents any school member.'''
def __init__(self, name, age):
self.name = name
self.age = age
print '(Initialized SchoolMember: %s)' % self.name
def tell(self):
'''Tell my details.'''
print 'Name:"%s" Age:"%s"' % (self.name, self.age)
class Teacher(SchoolMember):
'''Represents a teacher.'''
def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
print '(Initialized Teacher: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Salary: "%d"' % self.salary
class Student(SchoolMember):
'''Represents a student.'''
def __init__(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks
print '(Initialized Student: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Marks: "%d"' % self.marks
t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)
print # prints a blank line
members = [t, s]
for member in members:
member.tell() # works for both Teachers and Students
输出
$ python inherit.py
(Initialized SchoolMember: Mrs. Shrividya)
(Initialized Teacher: Mrs. Shrividya)
(Initialized SchoolMember: Swaroop)
(Initialized Student: Swaroop)
Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
Name:"Swaroop" Age:"22" Marks: "75"
十:I/O
文件:通过创建file类对象打开一个文件,使用file类的read write readline方法来恰当地读写文件,然后调用close方法关闭文件。
#!/usr/bin/python
#Filename:using_file.py
poem='''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
f=file('poem.txt','w')
f.wirte(peom)
f.close()
f=file('poem.txt') #默认为'r'ead模式
while True:
line=f.readline()
if len(line)==0:
break
print line
f.close()
#文件的模式:读模式('r');写模式('w');追加模式('a')
output:
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
储存器:python提供名为pickle的标准模块,使用它可以在一个文件中储存任何python对象,并完整取出来。这被称为持久地储存对象。
另外还有一个模块叫 cPickle,用C语言实现,功能和pickle模块完全相同,但速度比pickle模块快1000倍。
dump(obj,file) load(file)
eg:
#!/usr/bin/python
#Filename:pickling.py
import cPickle as p
shoplistfile='shoplist.txt'
shotlist=['apple','orange','egg','banana','fish','beef','celery']
#write to the file
f=file(shoplistfile,'w')
p.dump(shoplist,f) #dump the object to the file
f.close()
#pick up from the storage
f=file(shoplistfile)
storedlist=p.load(f)
print storedlist
output:
['apple','orange','egg','banana','fish','beef','celery']
十一:异常 exceptions
try...except语句处理异常。
eg:
#!/usr/bin/python
#Filename try_except.py
import sys
try
s=raw_input('enter something')
except EOFError:
print'\n EOF error'
except:
print'\n some error/exception occurred.'
print 'Done.'
raise 引起异常:
#!/usr/bin/python
#Filename :raising.py
import sys
calss ShortInputException(Exception):
'''a user-defined exception'''
def __init__(self,length,atleast):
Exception.__init__(self)
self.length=length
self.atleast=atleast
try:
s=raw_input('enter something:')
if len(s)<3:
raise ShortInputException(len(s),3)
except EOFError:
print'\n EOF error.'
except ShortInputException,x:
print'shortinput exception: the input was of length %d,\
was excepting at least %d'%(x.length,x.atleast)
else:
print'NO exception was raised.'
try...finally语句:
#!/usr/bin/python
#Filename: finally.py
import time
try:
f=file('poem.txt')
while True:
line=f.readline()
if len(line)==0:
break
time.sleep(2)
print line
finally:
f.close()
print'close file'
十二:python标准库
在python附带的安装文档的“库参考”一节中有python所有模块的完整内容。
sys模块:包含系统对应的功能。
eg:使用sys.argv,实现unix下 cat功能:
#!/usr/bin/python
#Filename:cat.py
import sys
def readfile(filename):
f=file(filename)
while True:
line=f.readline()
if len(line)==0:
break
print line
f.close()
if len(sys.argv)<2:
print'no action specified'
sys.exit()
if sys.argv[1].startswith('--'):
option=sys.argv[1][2:]
if option=='version':
print'version 1.2'
elif option=='help':
print '''\
this program prints files to standard output
'''
else:
print 'unknown option.'
sys.exit()
else:
for filename in sys.argv[1]:
readfile(filename)
os模块:包含普遍的操作系统功能,对解决跨平台问题十分重要。如使用os.sep可以取代操作系统特定的路径分隔符。
常用部分:
● os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
● os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
● os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
● os.listdir()返回指定目录下的所有文件和目录名。
● os.remove()函数用来删除一个文件。
● os.system()函数用来运行shell命令。
● os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
● os.path.split()函数返回一个路径的目录名和文件名。
>>> os.path.split('/home/swaroop/byte/code/poem.txt')
('/home/swaroop/byte/code', 'poem.txt')
● os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.exists()函数用来检验给出的路径是否真地存在。
十三:更多内容
·特殊的方法:
一般来说,特殊的方法都被用来模仿某个行为。例如,如果想使用x[key]这样的索引操作(如列表和元组),那么只需要实现__getitem__()方法就可以了。
一些常见的特殊方法:
名称 说明
__init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self) 恰好在对象要被删除之前调用。
__str__(self) 在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有
运算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用x[key]索引操作符的时候调用。
__len__(self) 对序列对象使用内建的len()函数的时候调用。
·单语句块:
大多数情况下,python每个语句块是通过它的缩进层次与其他块区分开的。但如果语句块只包含一句指令,可以在条件语句或循环语句的同一行指明它,如:
>>>flag=True
>>>if flag : print 'yes'
>>>for filename in sys.argv[1]: readfile(filename)
·列表综合:
通过列表综合,可以从一个已有列表中导出新的列表。例如:已知一个数列,希望得到一个对应的数列,原数列中所有大于2的数都是原来的2倍:
#!/usr/bin/python
#Filename:list_comprehension.py
listone=[2,3,4]
listtwo=[2*i for i in listone if i>2]
print listtwo
output:
[6,8]
·在函数中接收元祖和列表:
当要使函数接收元祖或字典形式的参数时,有一种特殊方法,它分别使用*和**前缀,这种方法在函数需要获取数量可变的参数时候十分有用。
>>>def powersum(power,*args):
total=0
for i in args:
total+=pow(i,power) #即i^power
return total
output:
>>>powersum(2,3,5)
25
>>>powersum(2,10)
100
·lambda形式
lambda语句被用来创建新的函数对象,并在运行时返回他们。
eg:使用lambda形式
#!/usr/bin/python
#Filename:lambda.py
def make_repeater(n):
return lambda s:s*n
twice=make_repeater(2)
print twice('word')
print twice(5)
#make_repeater函数在运行时创建新的函数对象,并返回它。lambda语句用来创建函数对象。
#本质上,lambda需要一个参数(这里是s),后面仅跟单个表达式作为函数体(这里是s*n),函数体(表达式)的值作为被lambda新建的函数返回(这里返回s*n的值)。
·exec和eval语句:
exec语句用来执行存储在*字符串*或*文件*中的python语句,例如我们可以在运行时生成一个包含python代码的字符串,然后使用exec语句执行之:
>>>exec 'print"hello world"'
hello world
eval语句用于计算存储在字符串中的有效python表达式:
>>>eval('2**3')
8
#'2**3'是一个字符串,因为被''罩住。
·assert语句:
assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError。
>>>mylist=['list']
>>>assert len(mylist)>=1
>>>mylist.pop() #弹出mylist列表中元素并输出
list
>>>assert len(mylist)>=1
Traceback (most recent call last):
File "
AssertionError
·repr函数:
repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。注意,在大多数时候有eval(repr(object)) == object。
>>> i = []
>>> i.append('item') #向列表中增加条目
>>> `i`
"['item']"
>>> repr(i)
"['item']"
基本上,repr函数和反引号用来获取对象的可打印的表示形式。你可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。
十四:
www.google.com ,它会告诉你想要知道的一切. ^_^
注:此教程是我在2010寒假中学习Python的学习笔记。
订阅:
博文 (Atom)