Categories
木有技术

Windows 8.1 GPT+UEFI Ghost恢复步骤

在经历过无数次蛋疼之后,终于恢复成功!
我的状况是:
Win8.1系统,x64,GPT磁盘,
步骤如下:

  1. 需要使用11.5版本以上的Ghost,不然可能出错
  2. 将原硬盘全盘备份至GHO文件(或仅备份系统分区)
  3. GHO文件恢复至新硬盘
  4. 在WinPE底下,如果是恢复全盘的,请看看里面有没有EFI启动分区(100MB大小左右的一个分区),如果有,删除之
  5. [重要]使用DiskGenius或者其他软件,在之前删除掉的分区位置,创建一个EFI分区(DiskGenius里面有选择的,其他我不知道),请确保这个分区是EFI的不然无法实现UEFI启动,会出现无法关机等奇怪现象~
  6. 给新建的EFI分区分配盘符(下文假定为K:).用Windows自带的磁盘管理无法给这种分区分配盘符,需要借助第三方工具,DiskGenius可以。
  7. 在PE下面,重新创建UEFI启动分区(你的系统盘盘符记作X:)
    bcdboot X:\windows /s K: /f uefi /l zh-cn

     

  8. 重启即可

上面最重要的一部是重建启动分区,因为EFI记录里面有硬盘的ID之类的东西。。。。

Categories
不学无术

如何練習批判閱讀 Critical Reading / 怎样评价论文质量

参考/原文:
1. 《如何練習批判閱讀》 http://sex.ncu.edu.tw/papers/4-3-2.php
2. 《怎样评价论文质量》http://blog.sina.com.cn/s/blog_6880c3050100oy44.html


 
如何练习批判阅读
如何进行批判阅读 文\何春蕤
在收集资料阅读文献时,当然要了解对方在说些什么,而这些说法和你的研究有什么关系。这就牵涉到如何「阅读」文献,也就是一般学者所谓的critical reading。
批判阅读是一种阅读的态度,也是一种思考的活动。
台湾教育体制中所训练的阅读(例如因为要被考试而读)通常是被动的,被迫的,也因为害怕失败受惩罚而阅读;这种阅读是片段的,背诵时间地点,列举条目,以便被老师考试。长此以往,不但阅读的材料不会在读者生命中停留很久(不愉快的经验谁要记得?),也不会真正帮助读者的认知或成长,事过境迁就抛诸脑后。
更严重的后果则是,主体一方面无从养成主动的、抗拒的、与作者对诘的阅读习惯,另方面更不会养成喜欢阅读、享受阅读、掌握阅读的欲望。这种支离破碎的、百般不愿的训练,对于长远的人生影响甚巨。
阅读不应该是被动的领受作者的指示,消极的被作者引导,顺从的接受作者的论点或所提供的数据。真正对主体有帮助的阅读,总是主动的探询作者的论点立场。
以下的提示应该有助养成批判阅读的习惯。以后阅读文献时,请一面读,一面问自己:
Before reading, ask yourself: Based on its topic and what I know about the author or the topic, what do I expect to find in this piece? (Why did I pick this piece to read anyway?)
(不必妄自菲薄,读者不是一张白纸,在面对阅读材料时总是已经有一些知识和想法。能够发动自己已经知道的,来和现在看到的新材料融合对话,就能使新东西更快在自己的思想体系中找到位置,建立起意义来。例如,看看文章作者的身分、题目的架构、出现的脉络时间点等等背景资料,以便快速找到定位。脉络:这篇东西刊登在哪个刊物或书籍中?这个刊物和书籍的学术脉络为何?有什么特殊的取向或色彩吗?作者:作者是谁?过去有何其他作品?一般对其评价如何?属于什么专业领域、学术流派或特殊团体?请善用google查询。题目:这篇文章的题目是什么?其中明示主题为何?问题为何?关键词有哪些?指向哪些领域?哪些重要理论资源?读读刊物宗旨或特刊说明来帮助你设定思考方向。先猜想/预期可能这篇东西会说什么、采取什么立场。读者越有直接间接相关的想法,阅读过程就越容易成为动态的对话反思过程。)
While reading, constantly monitor your own reaction: How do I feel about the piece as a whole? Convinced? Excited? Disappointed? What’s missing? Are the author’s ideas predictable? What do I think about the points being made in this piece? What are some good points/arguments in the piece? What does it or could it say about what I am interested in?
(读者既然有些自己的想法,阅读过程中就可能不断对阅读材料有所反应,例如,不以为然、惊讶不解、愤怒不满、崇拜赞赏、忘我失神等等,当然也可能看不懂、觉得无甚新意、敷衍塘塞。这些乍看只是情绪反应的感觉,其实多半都有一些深刻的源头,可能这个阅读正在挑战读者的基本价值,可能提出了完全想不懂的说法,可能和读者从前读过的有些相似或差异。注意这些反应,分析、理解、组织自己的反应,这是主动阅读的基本工夫。)
What is the author trying to get at? What are the fields in which this piece would make sense? What is the scholarly context of the piece?
(一面读,一面想,为什么作者会想写这篇东西?作者预设自己在对哪个领域、哪个主题发言?作者在和哪些学术人士对话?这篇文章辩论了哪些问题?整理出这篇文章的动机、目的、意义,知道人家在辩论什么以致于有这样的论点出来。特别注意要阅读前言、序文、后记和脚注,这些地方多半是作者呈现自己的思想和脉络、以及周边可能细节的所在。)
How does the author present the issue and the arguments? (How does the author frame the discussion? What are the rhetorical strategies (tropes, imagery, etc.) that s/he uses? Who are cited in the discussion? What materials from what academic fields are cited? Where does the author stand in relation to various cited scholars?)
(仔细看作者如何铺陈议题,从哪开始、经过哪些转折,如何带出自己的立场,如何和其他观点对话,如何理解阅读别人,如何引用别人,如何engage别人。有什么矛盾或不足之处?作者偏好援引哪些学者、哪些学术经典?作者在论述和立场上与这些文献摆出何种姿态和关系?作者想要证明什么?这些分析可以帮助你认识这篇文章的操作,也因而能对作者的表现和论证做出评断)
What implications does this piece have in relation to major issues of value or belief or theory? How can you use this piece in your own writing? 
(一篇文章往往不是只对它所聚焦讨论的题目有意义,有时候对另外一些没有提到或者部份提到的议题有深刻的含意。换句话说,读者得动员自己的广博知识来读出文章中的论点可能还有什么其他含意,或者可以启发另外什么思考,或者换个脉络、换个角度、换个适用场域,就会出现新的视角和理解。当然,能读出什么东西,就要看读者本身的背景知识、灵活联想、创意运用了。更重要的是,如果读者本身就在一个比较边缘的位置上,阅读文献时往往可以透过另类的眼光看出文献论点有何不足或不妥之处。)
上述阅读习惯需要时间来养成,刚开始可能觉得很麻烦,在每一篇文献上都花这么多工夫,那怎么负担得了?不过,多做几次就慢慢养成习惯,养成直觉,以后就容易了。总之,阅读不是等候作者给你些东西,而是自己主动的努力掌握文献,making sense of it。
由于研究过程中要读很多文献,遇到好用的论点或可能引用的文句,最好立刻用小贴纸标记重要页面,或者甚至写写阅读笔记,把当下浮现的想法记录下来,或用自己的文字来综合总结所读到的东西,这都是促使自己思考、查验自己是否读通了的好方法。如果要写这种summary,要注意以下几点︰

  1. 这篇文章的发表或出版信息一定要完整记下来,放在你做的记录上方,以便以后还找得到出处。如果影印了篇章,也要顺手把出版信息抄下来,过了这个时间点,有时候想找也不知道是哪里出来的。
  2. 写summary时并非浓缩对方的观点、单单按照对方的呈现顺序、以精简的形式写出而已──这很容易在后来你的写作中形成抄袭。相反的,你需要从你自己的研究方向、你的关切、你的评估角度来重述/重塑对方的立论。
  3. 换句话说,你需要选择那些和你的研究最直接相关的论点,用你自己的角度来凸显这些论点的意义和问题所在,而不是仅仅把全文的论点浓缩写出来,好像你是个透明人,没有自己的观点似的。(这也就是为什么在引述他人时很容易落入扭曲原意、断章取义。因此,这个步骤需要特别小心,得读懂原文才行)
  4. 切入重点,不要繁复(如果读者要冗长的论述,那他们读原典即可,干嘛要读你的纲要?)你能在纲要中如何一针见血的说清楚对方在说些什么,这才是重点。

 
 
批判阅读技巧
批判阅读写作小秘方:
在做批判阅读写作时,我们要下的工夫不仅仅是对该文做概述或总结,更重要的是要有分析评论的成分。摘要仅是对文章做摘述以及重点整理,也就是说,它只是告诉读者:本文作者说了什么?而一篇批判阅读写作要做的事情就不只如此;它必须要分析、诠释说明,并且对该文做出评论。这时,读者的意识就会加诸于此批判阅读的文章中。批判阅读写作不一定是对文章做负面的响应,或是一味地挑该文的毛病及盲点。我们的响应可以是正面的、负面的、或是两者皆是,重点是我们如何对该文做出回应,以及我们为何会有此回应。而这就是我们做批判阅读写作时的重点。
第一步:分析文章
在阅读书籍或文章时,以下的一些问题可以帮助我们分析该文本。

  1. 作者的重点(主要论述)是什么?
    2. 作者写该文的目的为何?
    3. 作者想要与什么样的观众群对话?
    4. 作者用什么样的论点来支撑他/她的说法?
    5. 作者用什么证据来支持所提出的论点?
    6. 作者的基本假设或立论为何?

第二步:评论该文
阅读文本之后,我们可以开始来评论作者在文章中所阐述的意见。在做这个动作时,可以试着问下列问题来帮助我们做评论的动作。

  1. 作者的论点是否合乎逻辑?
    2. 作者所提供的事实在文章的逻辑内是否准确?
    3. 作者是否有对其文中之关键词下确切的定义?
    4. 作者是否有用足够的证据来证明他/她所提出的论点?该论述是否能支持作者本身的立论?
    5. 对于作者所预设的读者群而言,该文是否有达到作者预设的效果?
    6. 文章本身的立论是否自相矛盾?
    7. 该文是否能帮助读者了解作者所欲呈现的主题?
    8. 该文是否有某些描述或论点引起你的强烈反应?那些描述或论点为何?你的反应为何?为何有此反应?
    9. 最后,这篇文章引起了你哪些问题?你从该文的论述中察觉到了什么?

第三步:着手做批判阅读写作
用标准论说文格式写作。基本上,写此类文体时,文章的安排最好不要按照原文作者的布局,因为这样很容易让自己的批判阅读成为摘要写作。文章一开始,先说明自己的评论主题及观点。然后,在原文中找出明确的论述或例子来支撑自己的评论。在结论时,为自己的论点做总结并且再次强调自己评论的观点及要旨。

  1. 首先,先确定以及解释作者的原意及论点。适时地引用原文中的文句来支撑自己对于作者观点的理解是正确的。
    2. 接下来,提出自己的观点。解释自己是如何阅读并评断原文的论点,然后开始叙述自己同意或不同意的观点。
    3. 对于自己所提出的每一个观点,记的引述原文中的文句(可以是做摘要、引用或是释意)来为自己的观点作辩护及论证。
    4. 解释这些段落是如何支撑自己的论点。

by Susan Katz and Jennie Skerl
resource (The Writing Center): http://www.rpi.edu/web/writingcenter/critique.html
 
从批判阅读到批判写作

  1. 批判阅读通常要先经过几个基本阅读步骤。一开始先浏灠研究材料──尤其是序论和结语──才能策略性的选择出你批判的重点。
  2. 画重点或做笔记的时候,要强调其立论点:文章中有哪些是作者用来解释她的分析走向?她使用的概念有哪些?她是怎么使用那些概念的?她怎么做出结论的?不管其中的事实和例子多有趣,都不需要强调。首先,找出涵盖其目的、条理和举证意义的大方向,每个段落的首句对这个步骤来说相当的重要。
  3. 当你开始考虑要在你的论文里和原文的某一部份辩论的时候,要很清楚它在原文中的立论点为何。看重原文是批判阅读中相当重要的一部份。
  4. 当你要直接从原文中引用时,一定要以批判的角度切入。也就是说,不要只是把引文用来连接你的论点,而是要在带出引文的时候同时说出你对它的评断,还有你引用此文的原因。通常一段引文会接着一段更深入的分析。
  5. 批判阅读的技巧也是批判倾听的技巧。在演讲中,聆听不只是为了得到信息,也是要学会思考的方式。你的老师通常都会针对该学科举例说明适合的思考方式。

数据源:http://www.utoronto.ca/writing/critrdg.html#3
 


怎样评价论文质量

1、选题的意义
  看题目的新颖、独特和实用性,在理论和实践的意义程度。
2、研究方法的合理性、科学性
  采用的研究方法手段是否与题目内容、任务相适应;主要方法设计的科学性、严谨性;有无独创的先进方法与手段。
3、论点的科学性
  论文的观点力求正确、鲜明、新颖、客观;较高的要求是有独到见解或创新的理论。
4、论证的逻辑水平、广度与深度
  论证要符合逻辑规律,论点与论据必须一致,推理方法形式运用正确合理。论证的中心突出并有一定深度;论证的问题范围与研究范围相一致。
5、运用理论的程度
  能结合本课题相关的专业理论、基础理论对研究的问题与获取的材料进行充分论述、阐述与分析,并经高度概括抽象形成观点、结论。
6、研究材料事实的可靠性与代表性
  论文中报告、引用的多种材料事实,首先要力气真实、可靠、准确、客观,来自科研或生产实践;其次,材料要丰富、完备、有代表性,有说服力。
7、论文结构层次的完整性与合理性
  结构要完整,格式规范。尤其讨论部分的结构要适合于表达研究的成果内容。总的结构合理、层次清晰、逻辑性强。
8、结论的价值
  从研究任务和专业角度出发,看结论的正确性、全面性、概括性和新颖性(或创新性)。
9、文字水平
  基本要求是通顺、准确、用词恰当。
10、图表运用技巧
  适合于论证需要;直观性、说服力和技巧性较强;图表规范。

Categories
木有技术

淘宝登陆中的token和st之类的东西

学习了一下 Python 淘宝系列(三): 模拟登陆成功后获取购物车信息
关于淘宝登陆验证的东西,里面牵扯到一个叫token,一个叫sp的两个东西~
自己用IE11试了一下,果然有那么些。
因为是网页登陆的,里面POST的参数跟教程中的有些许不用,特别是’TPL_password’字段,网页登陆时是空的。有可能是里面的参数的问题,估计是网页登陆还调用了其他处理密码的JS。
QQ截图20141205142830
QQ截图20141205143308
QQ截图20141205143556

Categories
不学无术

[转载]Python中实现带Cookie的Http的Post请求

本文转载自http://www.crifan.com/python_http_post_request_with_cookie/


 
已经实现了如何获得对应的cookie,具体参考:
【已解决】Python中如何获得访问网页所返回的cookie
现在想要把已获得cookie,在http的提交post请求的时候,也同时发送过去。
即,实现带cookie的http的post。
【解决过程】
1.看了这里
http://www.ideawu.net/blog/archives/270.html
的介绍,好像是cookiejar,自动管理的,不需要手动指定之前已有的cookie了。
去写代码试试。
2.后来的结果证实了,接下来,直接调用urllib2.Request,其自动会把cookie送过去的,
因为之前已经是urllib2.build_opener,添加了对应cookiejar去自动管理cookie了。
对应的代码如下:

# first url request
baiduSpaceEntryUrl = "http://hi.baidu.com/motionhouse";
cj = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
urllib2.install_opener(opener);
resp = urllib2.urlopen(baiduSpaceEntryUrl);
# second time do url request, the cookiejar will auto handle the cookie
loginBaiduUrl = "https://passport.baidu.com/?login";
para = {
    'username'  : username,
    'password'  : password,
    'mem_pass'  : 'on',
    };
postData = urllib.urlencode(para);
req = urllib2.Request(loginBaiduUrl, postData); # urllib2.Request: the HTTP request will be a POST instead of a GET when the data parameter is provided.
req.add_header('User-Agent', gConst['userAgentIE9']);
req.add_header('Content-Type', 'application/x-www-form-urlencoded');
req.add_header('Cache-Control', 'no-cache');
req.add_header('Accept', '*/*');
req.add_header('Connection', 'Keep-Alive');
resp = urllib2.urlopen(req);
respInfo = resp.info();

 

【总结】
Python中的cookiejar,自动帮我们管理好cookie,用起来,还是蛮方便的。
我们要做的只是,第一次build_opener的时候,把对应的cookiejar传进去,
以后每次的http的request,都会自动包含了cookie,而不需要我们操心了。

Categories
不学无术

[转载]使用 Chrome 开发者工具进行 JavaScript 问题定位与调试

本文全文转载自http://www.ibm.com/developerworks/cn/web/1410_wangcy_chromejs/


JavaScript 的调试工具在近年来有了长足发展,几乎每一款主流浏览器都配备了专门的调试工具。Google 的 Chrome 浏览器自带了 JavaScript 调试工具 developer tools(以下统称开发者工具)。这款工具在易用性、稳定性和调试效率方面并不逊于其他常用调试工具(如 FireBug),并且它增加了很多其他工具所不具备的新功能。本文着重从调试 JavaScript 代码的角度,详细介绍如何通过 Chrome 的开发者工具高效、准确地进行 JavaScript 问题定位与调试。

引言

Google Chrome 是由 Goole 公司开发的一款网页浏览器,自 2008 年 9 月第一个测试版本发布以来,其市场占有率逐步上升,至 2014 年 5 月,Chrome 已超越 Firefox 成为全球市场占有率第二的浏览器。Chrome 的受欢迎程度与其优秀的性能与兼容性密不可分,并且越来越多的网络应用程序都添加了对 Chrome 的支持,也足以体现网络应用的开发人员对 Chrome 的认可与青睐,而其中最重要的原因之一,莫过于 Chrome 所提供的强大的开发者工具。Chrome 开发者工具包含诸多强大的功能模块,适应于多个不同场合的需要。本文先简单介绍 Chrome 开发者工具的各个模块及其基本功能,再着重针对网页脚本调试,阐述如何巧妙运用 Chrome 开发者工具定位与调试问题。(本文所选的 Chrome 开发者工具为 Chrome V35 版本中内置,较之前版本可能略有不同,请留意)

Chrome 开发者工具介绍

虽然对于 Chrome 开发者工具的介绍,Google 官方以及互联网中都有众多文章进行阐述,但为了有助于读者更好地理解本文后面对如何巧妙运用开发者工具定位及调试脚本的阐述,在此对开发者工具中的各个模块做一个概要性的介绍。如果对其中某些模块特别有兴趣,请参考文末的链接,从中进行深入了解。
Chrome V35 版本中的开发者工具分为 8 个大模块,每个模块及其主要功能为:

  • Element 标签页: 用于查看和编辑当前页面中的 HTML 和 CSS 元素。
  • Network 标签页:用于查看 HTTP 请求的详细信息,如请求头、响应头及返回内容等。
  • Source 标签页:用于查看和调试当前页面所加载的脚本的源文件。
  • TimeLine 标签页: 用于查看脚本的执行时间、页面元素渲染时间等信息。
  • Profiles 标签页:用于查看 CPU 执行时间与内存占用等信息。
  • Resource 标签页:用于查看当前页面所请求的资源文件,如 HTML,CSS 样式文件等。
  • Audits 标签页:用于优化前端页面,加速网页加载速度等。
  • Console 标签页:用于显示脚本中所输出的调试信息,或运行测试脚本等。

后文会在阐述过程中,会提及使用 Element 标签页探测页面元素并查看该元素的 HTML 内容,也会使用 Source 标签页与 Console 标签页调试脚本及查看调试信息,并不会详细介绍他们的基本功能,请在阅读时提前了解以上相关标签页的基本功能。


 

使用 Chrome 开发者工具巧妙定位脚本代码

目前很多的网页应用程序都会使用各种诸如 JavaScript 之类的脚本语言,来增强事件处理、页面展现或是样式控制等方面的功能。很多网站或网络应用系统都已做成单页面模式,该页面只负责加载相关的脚本与样式,这些脚本与样式来负责动态生成更多的子页面或对话框。因此,该类网页应用程序的脚本数量会非常大,从而使开发人员在如此之多的脚本中定位某个问题变得困难起来,但也并非毫无技巧。

单页面的网络应用程序一般会引入复杂的 JavaScript 框架,如 JQuery, Dojo 或 ExtJS 等。这些框架都支持声明自定义的网页小组件,如 Dojo 中的 widget。一般而言,每一个 widget 会被单独写在一个 JS 文件中。因此,在定义该组件时,可以将储存它的 JS 文件名做为其 id 成员属性的一部分(例如前缀),并在描述该组件的 HTML 模板中,将 id 的值加入到 HTML 标签的属性中。当应用程序在 Chrome 浏览器中运行时,在使用 Chrome 开发者工具的”元素”模块中的元素探测功能查找 HTML 时,可以很直观地看见每一个 div 对应的 JS 文件。因此,当某一个 div 出现问题时,对其 HTML 进行探测后,便可根据其中的 id 定位到相应的脚本文件,从而使问题调试的范围大大缩小。以下通过实际项目中的例子加以说明。

清单 1. Dojo 中自定义 widget 引入 id 的声明方式
dojo.declare("exc.fe.bijits.FeLogon.FeLogonLogonPanel",[exc.kc._Bijit, dojox.dtl._Templated,], {
 templatePath: dojo.moduleUrl('exc.fe.bijits.FeLogon', "FeLogonLogonPanel.html"),
    select : null,
    SESSION_ID_OFFSET : 0,
    sessionid : null,
    launchType: "Standard Login",
    langcnt: 0,
    currentLang:null,
	……//省略之后不相关的方法和属性
	……
});

在清单 1 中给出的是使用 Dojo 创建自定义 widget 并将该 widget id 引入其模板 HTML 中的方式。自定义的 widget 在继承了 dojox.dtl._Templated 之后,Dojo 有内部机制可将该 widget 声明的名称作为 id 自动加到其 HTML 模板中。因此开发人员只要保证该 widget 声明的名称与其所储存的文件名对应即可。清单 1 中的 id 与储存该脚本的文件名均为”exc.fe.bijits.FeLogon.FeLogonLog-
-onPanel”。
在此前提下,打开浏览器运行网页加载该 widget 后,使用 Chrome 开发者工具的网页元素探测功能找到该 widget,便可看见其 id,即相应的脚本文件,如图 1 所示。如若该 widget 中的行为出现异常,例如 user id 不能进行校验,便可打开其相关的脚本文件进行调试。

图 1. 查看 widget 在 HTML 模板中的 id

查看 widget 在 HTML 模板中的 id

开启运行时错误自动暂停功能,准确定位出错脚本位置

在 Chrome 开发者工具中,可以开户运行时错误自动暂停这一功能(如图 2 所示),从而使开发者工具能在发现运行时脚本异常时,在异常脚本处暂停运行,跳转至调试页面,供开发人员进一步查找该运行时异常产生的原因。

图 2. Source 面板中的自动暂停按钮

Source 面板中的自动暂停按钮
自动暂停按钮的下方有一个选项,Pause On Caught Exceptions,如果勾选上,则即使所发生运行时异常的代码在 try/catch 范围内,Chrome 开发者工具也能够在错误代码处停住。

合理添加调试日志,通过 Console 标签页定位

在进行脚本开发过程中,在重要的方法中添加必要的调试日志输出语句,可以方便开发人员进行问题定位与调试。清单 2 中的 JavaScript 脚本方法中,在其开始和结束处添加了 debug 级别的日志输出,从而使该方法在被执行时,可在 Console 标签页找到相关日志,并且能通过点击该日志的末端文件链接直接跳转到 Source 标签页的脚本源文件中,极大方便了相关代码的定位,如图 3 所示。

清单 2. Dojo 中自定义 widget 引入 id 的声明方式
_containerSelect : function( /*ContentPane*/ cp ) {
        var F = this.declaredClass + "._containerSelect(): ";
        console.debug(F,"Starting: ", cp);//当方法被执行时,在控制台输出相关日志
        dojo.forEach( this.children, function(child) {
            if ( cp.id === child.targetId ) {
                this.showChild( child.id );
                //-- Save requested module
                this._history.push( child.id );
                //kak
                if(this.globalArgs._showModuleTopic)
                  dojo.publish(this.globalArgs._showModuleTopic, [ child.id,"open" ]);
            }
        }, this);
		console.debug(F,"End");//当方法执行结束后,在控制台输出相关日志
    },
图 3. Console 面板中的日志输出

Console 面板中的日志输出


 

使用 Chrome 开发者工具调试 JavaScript 的技巧与心得

上文介绍了 3 种定位相关脚本的方法,在定位脚本之后,通常会对脚本中的部分代码进行调试,本章主要详细讲解高效快捷地利用 Chrome 开发者工具进行 JavaScript 脚本调试的几种技巧与心得。

设置条件断点

与 Java 调试类似,Chrome 开发者工具提供了断点设置、删除与断点存储等基本功能。同时,开发者工具也提供了设置条件断点的功能,使开发者可以控制该断点只有在满足某一条件时才会被触发。
条件断点的设置如图 4 所示,在所需要设置断点的行最前端的行号处点击右键,选择添加条件断点后,会弹出一个对话框用于输入具体的条件。合理运用好条件断点能够提高调试的效率与准确性,使开发人员能更专注于在期望的场景下进行调试。

图 4. Source 面板中添加条件断点

Source 面板中添加条件断点

修改 JavaScript 文件中的代码

这是 Chrome 开发者工具提供的一种非常实用的功能,即使开发人员可直接对开发者工具的 Source 标签页中的代码进行修改,并将其保存,使浏览器在下次执行该段脚本时,直接加载最新修改的版本。目前的 Firebug 及 IE 自带的开发者工具都不支持对脚本的直接修改,导致在 Firefox 或 IE 中调试脚本时,如果需要对代码进行修改,需要先去修改脚本源文件,再同步至应用服务器,再清理浏览器缓存,最终再次打开应用程序时,才会看到代码修改后的效果。可见 Chrome 开发者工具提供的这一功能,大大提供了开发者调试脚本的效果。
需要注意的是,由于这种修改是保存在浏览器缓存中,因此它不会影响到脚本的源文件。当开发人员决定采用修改之后的脚本时,需要将其复制到脚本的源文件中。

使用控制台打印变量值或方法的返回结果

当断点被触发进入到调试模式时,我们可以将当前任意存在的变量或方法输入到控制台中,按下回车后,控制台便会返回相关的结果。该功能可使开发人员方便了解程序运行至断点处时各个所需要变量或方法的返回值。
需要注意的是,当在控制台中输入的方法名字不带括号时,控制台输出的是该方法所包含的代码信息,而并不是运行结果。

结合 Element 标签页调试 JavaScript 中对 CSS 的控制

在网页开发过程中,经常需要在脚本中控制不同条件下页面的样式展示,例如要求某一个按钮的颜色在用户停留十秒钟之后由白色变成灰色。此时我们便需要在脚本中通过具体的数值指定这个”灰色”该如何表示,一般情况下我们需要查找相关资料或使用其他工具才能得到期望的”灰色”所对应的 RGB 数值或十六进制数值。然而在 Chrome 开发者工具的 Element 标签页中,其实已经提供了包括该功能在内的一系列对样式进行实时修改的功能,并且在修改之后能够立即从页面中看到变化。
图 4 给出的是 Element 标签页的右半部分,当要对某个样式类中的颜色进行修改时,它提供出一个非常直观的图谱供选择,并在下方将其十六进制代码显示出来。开发人员可直接在此进行颜色选择,确定颜色后,在 JavaScript 代码中引用其十六进制数值即可。

图 5. Element 面板中的颜色样式编辑

Element 面板中的颜色样式编辑


 

结语

Chrome 开发者工具的功能丰富而强大,本文着眼于对 JavaScript 的定位与调试,介绍了其中的技巧与心得。相对于 Firebug 与 IE 开发者工具而言,Chrome 所提供的一些独特功能如对脚本源码的直接修改,极大方便了开发者对脚本的开发与调试。随着 Chrome 新版本的推出,相信其开发者工具的功能也会日益增强,我们可以通过阅读其官方更新说明,了解到新功能,借助 Chrome 开发者工具的支持,提高网页应用程序开发与调试的效率。


参考资料

学习

Categories
生活琐碎

博客更新告知

由于一些奇怪的原因,原来的Wordpress站整个瘫痪了。
恩一定是我服务器调教不周~
带来的影响是所有上传的图片都跪了…..还好文字还在
近期会逐步想办法恢复哒
(还好我的博客没人看23333)

Categories
木有技术

DigitalOcean更换IP地址/机房位置教程,分分钟迁移完成!【图文教程】

本文介绍如何将设在DigitalOcean的主机更改机房位置,进行完整迁移。
最近更新:20150531 将教程替换为DO改版之后对应的界面,修复图片链接。
转载本文请注明来自http://boweihe.me/?p=1369


 
首先,你得有一个已经存在的Droplet~
然后,请将你需要转移的那个Drpolet关机(Power Off).
digital_ocean_power_off
然后点进“Snapshots”,点选Take a snapshot,全盘备份当前服务器上的内容。
digitanocean_snapshot
稍等一两分钟,应该就提示备份完了。
接下来需要想一下你需要在哪个位置建立你的新服务器,如果要参考速度的话,可以去
https://www.digitalocean.com/community/questions/do-you-have-a-speed-test
官方提供的测速站。
然后需要将你目前的镜像备份转移到对应国家/位置的服务器上,这一步很重要。
具体是,点击左侧最上侧的“Images”
应该能在“Snapshots”下面看到你最近的备份。
digitalocean_image_migration
然后点击那个GoogleMap的图钉一样的图标,选择你目标服务器的位置~然后会变成transferring的状态
DigitalOcean Image Migration
这部分传输过程大概耗时5~10分钟。(网页上显示的状态有时候会更新缓慢,等不及了可以刷新下网页,重新点那个图标看下状态,提示Transferred就表明已经搞定了)
然后就可以从镜像备份新建一个Droplet啦~新建Droplet的步骤肯定每个人都会,但是注意选择的时候要选择你之前的镜像哦:
在一大堆选项的后面,有Select Image的,然后选择“My Snapshots”,就能看到你之前备份的镜像了~
QQ截图20150531160826
接下来就不用多说了吧~
记得原来的Droplet不用的话要删掉,不然会继续计费的…
 

Categories
不学无术

[机器学习相关的一些中文教程]Machine Learning for Graphics, Vision and Multimedia

找到了一个比较好的网站,里面是一些[机器学习相关的教程,重要的是都是中文的,读起来比较快。
Homepage: http://www.cmlab.csie.ntu.edu.tw/~cyy/learning/

Topics

Date Topic Tutorial References
03/16 Principal Component Analysis
姜任遠 文宗麟
PCA
03/23 PCA Extensions
葉冠麟
黃輔中
PCA missing data
Robust PCA
03/30 Isomap
Locally Linear Embedding

謝昌熹 許平
ISOMAP & LLE
04/06 Laplacian Eigenmaps
Linear Discriminant Analysis
黃俊翔 陳駿丞 蕭淳澤
LDA
LDA applications
04/13 Locality Preserving Projection
Local Discriminant Embedding

蕭志傑 翁仲毅
潘振銘
LPP
04/27
05/04
Support Vector Machines
李根逸
林宗勳
林宏儒
何昇舫
SVM
SVM
SVM
libsvm
Support Vector Regression
黃子桓
SVR
Relevance Vector Machine
楊善詠
RVM
05/11 Boosting
翁明昉
陳宏暐
黃信騫
鄭鎧尹
Ensemble Learning
AdaBoost binary
AdaBoost extensions
AdaBoost applications
05/18
05/25
Graphical Models
朱威達
Graphical Model
Belief Propagation
鄭文皇 謝致仁
謝永桓
low-level learning
Applications
05/25
06/01
06/08
Approximate Inference
Expectation Maximization
莊上墀 郭煜楓 劉治杰 楊恕先
EM
Variational Learning
林蓉珊
周亮瑜
呂旺洲
Variational Learning
Variational Learning
Variational Learning
Categories
生活琐碎

全新 日本亚马逊 原装进口正品THERMOS/膳魔师保温杯 JNL-350 SAX

http://item.taobao.com/item.htm?spm=686.1000925.0.0.97iaTC&id=42218045058

Categories
生活琐碎

日本 原装进口正品THERMOS/膳魔师保温杯 JNL-350 PWP/PCH 粉紫

日本 原装进口正品THERMOS/膳魔师保温杯 JNL-350 PWP/PCH 粉紫
http://item.taobao.com/item.htm?spm=686.1000925.0.0.xNcE8N&id=42042946041