Categories
不学无术

UFLDL教程的中文翻译——深层网络4篇

从自我学习到深层网络 From Self-Taught Learning to Deep Networks
深层网络概览 Deep Networks: Overview
栈式自编码算法  Stacked Autoencoders
微调多层自编码算法 Fine-tuning Stacked AEs 
 
摘录其中的一句话,觉得挺有道理(嗯嗯嗯一定要搞得我已经通读所有文章的样子!):

为什么我们要使用深度网络呢?使用深度网络最主要的优势在于,它能以更加紧凑简洁的方式来表达比浅层网络大得多的函数集合。正式点说,我们可以找到一些函数,这些函数可以用 \textstyle k 层网络简洁地表达出来(这里的简洁是指隐层单元的数目只需与输入单元数目呈多项式关系)。但是对于一个只有 \textstyle k-1 层的网络而言,除非它使用与输入单元数目呈指数关系的隐层单元数目,否则不能简洁表达这些函数。

 

Categories
不学无术

2013年EI收录国内期刊一览表

应该是最新的了吧~


2013年EI收录期刊一览表

ISSN 刊名
0567-7718 Acta Mechanica Sinica
1006-7191 Acta Metallurgica Sinica (English Letters)
0253-4827 Applied Mathematics and Mechanics (English Edition)
0890-5487 China Ocean Engineering
1004-5341 China Welding
1004-9541 Chinese Journal of Chemical Engineering
1022-4653 Chinese Journal of Electronics
1000-9345 Chinese Journal of Mechanical Engineering (English Edition)
1671-7694 Chinese Optics Letters
1673-7350 Frontiers of Computer Science in China
1006-6748 High Technology Letters
1674-4799 International Journal of Minerals, Metallurgy and Materials
1004-0579 Journal of Beijing Institute of Technology (English Edition)
1005-9784 Journal of Central South University of Technology
1672-5220 Journal of Donghua University (English Edition)
1005-9113 Journal of Harbin Institute of Technology (New Series)
1001-6058 Journal of Hydrodynamics
1005-0302 Journal of Materials Science and Technology
1002-0721 Journal of Rare Earths
1674-4926 Journal of Semiconductors
1007-1172 Journal of Shanghai Jiaotong University (Science)
1003-7985 Journal of Southeast University (English Edition)
1004-4132 Journal of Systems Engineering and Electronics
1009-6124 Journal of Systems Science and Complexity
1003-2169 Journal of Thermal Science
1000-2413 Journal of Wuhan University of Technology -Materials Science Edition
1673-565X Journal of Zhejiang University SCIENCE A
1674-5264 Mining Science and Technology
1001-0521 Rare Metals
1006-9291 Science in China, Series B: Chemistry
1672-1799 Science in China, Series G: Physics, Astronomy
1005-8885 The Journal of China Universities of Posts and Telecommunications
1005-1120 Transactions of Nanjing University of Aeronautics and Astronautics
1003-6326 Transactions of Nonferrous Metals Society of China
1006-4982 Transactions of Tianjin University
1007-0214 Tsinghua Science and Technology
1674-2370 Water Science and Engineering
1001-1455 爆炸与冲击
1001-5965 北京航空航天大学学报
1001-053X 北京科技大学学报
1001-0645 北京理工大学学报
1007-5321 北京邮电大学学报
1000-1093 兵工学报
1001-4381 材料工程
1009-6264 材料热处理学报
1005-3093 材料研究学报
1673-3363 采矿与安全工程学报
1671-8879 长安大学学报自然科学版
1001-1595 测绘学报
1007-7294 船舶力学
1001-1552 大地构造与成矿学
1000-2383 地球科学:中国地质大学学报
0001-5733 地球物理学报
1006-3021 地球学报
1005-2321 地学前缘
0253-4967 地震地质
1005-0388 电波科学学报
1000-6753 电工技术学报
1007-449X 电机与控制学报
1000-1026 电力系统自动化
1006-6047 电力自动化设备
1000-3673 电网技术
1001-0548 电子科技大学学报
0372-2112 电子学报
1009-5896 电子与信息学报
1005-3026 东北大学学报
1001-0505 东南大学学报 (自然科学版)
1000-7032 发光学报
1673-0224 粉末冶金材料科学与工程
1001-3555 分子催化
1000-3851 复合材料学报
1672-3813 复杂系统与复杂性科学
1003-6520 高电压技术
1000-7555 高分子材料科学与工程
0251-0790 高等学校化学学报
1003-9015 高校化学工程学报
1000-4750 工程力学
0253-231X 工程热物理学报
1001-9731 功能材料
1006-2793 固体火箭技术
1005-0086 光电子. 激光
1000-0593 光谱学与光谱分析
1004-924X 光学精密工程
0253-2239 光学学报
1004-4213 光子学报
0454-5648 硅酸盐学报
1001-2486 国防科技大学学报
1006-7043 哈尔滨工程大学学报
0367-6234 哈尔滨工业大学学报
0253-360X 焊接学报
1006-9941 含能材料
1000-8055 航空动力学报
1000-6893 航空学报
0258-0926 核动力工程
1001-9014 红外与毫米波学报
1007-2276 红外与激光工程
1674-2974 湖南大学学报
1000-565X 华南理工大学学报 自然科学版
1671-4512 华中科技大学学报 自然科学版
0438-1157 化工学报
1001-6929 环境科学研究
1002-0446 机器人
0577-6686 机械工程学报
1671-5497 吉林大学学报(工学版)
1003-9775 计算机辅助设计与图形学学报
1006-5911 计算机集成制造系统
0254-4164 计算机学报
1000-1239 计算机研究与发展
1007-9629 建筑材料学报
1000-6869 建筑结构学报
1671-1637 交通运输工程学报
1009-6744 交通运输系统工程与信息
0412-1961 金属学报
1000-8152 控制理论与应用
1001-0920 控制与决策
1000-0992 力学进展
0459-1879 力学学报
0253-2417 林产化学与工业
0459-1879 煤炭学报
1004-0595 摩擦学学报
1000-0925 内燃机工程
1000-0909 内燃机学报
1002-6819 农业工程学报
1000-1298 农业机械学报
1000-680X 汽车工程
1001-4322 强激光与粒子束
1000-0054 清华大学学报
0253-2409 燃料化学学报
1000-985X 人工晶体学报
1000-9825 软件学报
1006-2467 上海交通大学学报
0371-0025 声学学报
1000-7210 石油地球物理勘探
1000-0747 石油勘探与开发
1000-1441 石油物探
0253-2697 石油学报
1001-8719 石油学报: 石油加工
0253-9985 石油与天然气地质
1001-6791 水科学进展
0559-9350 水利学报
1009-3087 四川大学学报 (工程科学版)
0254-0096 太阳能学报
0493-2137 天津大学学报
1672-1926 天然气地球科学
1000-0976 天然气工业
1006-2106 铁道工程学报
1003-4722 桥梁建设
1001-8360 铁道学报
1000-436X 通信学报
0253-374X 同济大学学报
1000-131X 土木工程学报
1001-4055 推进技术
1000-3290 物理学报
1000-324X 无机材料学报
1671-8860 武汉大学学报 (信息科学版)
1001-2400 西安电子科技大学学报
0253-987X 西安交通大学学报
1000-2758 西北工业大学学报
0258-2724 西南交通大学学报
1004-0277 稀土
0258-7076 稀有金属
1002-185X 稀有金属材料与工程
1000-6788 系统工程理论与实践
1001-506X 系统工程与电子技术
1673-9078 现代食品科技
1009-6582 现代隧道技术
1007-8827 新型碳材料
1002-0861 烟草科技
1000-6915 岩石力学与工程学报
1000-4548 岩土工程学报
1000-7598 岩土力学
0254-3087 仪器仪表学报
1005-0930 应用基础与工程科学学报
1000-1328 宇航学报
1000-6931 原子能科学技术
1008-973X 浙江大学学报 (工学版)
1672-7126 真空科学与技术学报
1004-6801 振动测试与诊断
1004-4523 振动工程学报
1000-3835 振动与冲击
1004-2997 质谱学报
0258-8013 中国电机工程学报
1001-7372 中国公路学报
1005-6734 中国惯性技术学报
1000-6923 中国环境科学
0258-7025 中国激光
1000-1964 中国矿业大学学报
1003-0174 中国粮油学报
1009-7848 中国食品学报
1673-5005 中国石油大学学报
1001-4632 中国铁道科学
1004-5708 中国烟草学报
1004-0609 中国有色金属学报
1000-4882 中国造船
1672-7207 中南大学学报
0254-4156 自动化学报
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