逝者如斯 不舍昼夜夫,不舍昼夜说明了怎样道理

在论语中逝者如斯夫,不舍昼夜讲什么道理,有何感受_百度知道
在论语中逝者如斯夫,不舍昼夜讲什么道理,有何感受
我有更好的答案
按默认排序
者如斯夫,是指时光像流水一样一去不复返,不舍昼夜。”是孔子的一句名言
消逝的世事人物如河里的水,昼夜不停,这体现了运动是永恒的绝对和无条件的。有一种对岁月无情的感叹,要有只争朝夕的紧迫感。
其他类似问题
逝者如斯夫的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁逝者如斯夫不捨晝夜逝水如斯乎伊人何在
机器学习(Machine Learning)&深度学习(Deep Learning)资料
介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、Deep Learning.
介绍:这是瑞士人工智能实验室Jurgen Schmidhuber写的最新版本《神经网络与深度学习综述》本综述的特点是以时间排序,从1940年开始讲起,到60-80年代,80-90年代,一直讲到2000年后及最近几年的进展。涵盖了deep learning里各种tricks,引用非常全面.
介绍:这是一份python机器学习库,如果您是一位python工程师而且想深入的学习机器学习.那么这篇文章或许能够帮助到你.
介绍:这一篇介绍如果设计和管理属于你自己的机器学习项目的文章,里面提供了管理模版、数据管理与实践方法.
介绍:如果你还不知道什么是机器学习,或则是刚刚学习感觉到很枯燥乏味。那么推荐一读。这篇文章已经被翻译成中文,如果有兴趣可以移步
介绍:R语言是机器学习的主要语言,有很多的朋友想学习R语言,但是总是忘记一些函数与关键字的含义。那么这篇文章或许能够帮助到你
介绍:我该如何选择机器学习算法,这篇文章比较直观的比较了Naive Bayes,Logistic Regression,SVM,决策树等方法的优劣,另外讨论了样本大小、Feature与Model权衡等问题。此外还有已经翻译了的版本:
介绍:深度学习概述:从感知机到深度网络,作者对于例子的选择、理论的介绍都很到位,由浅入深。翻译版本:
介绍:&机器学习与优化&这是一本机器学习的小册子, 短短300多页道尽机器学习的方方面面. 图文并茂, 生动易懂, 没有一坨坨公式的烦恼. 适合新手入门打基础, 也适合老手温故而知新. 比起MLAPP/PRML等大部头, 也许这本你更需要!具体内容推荐阅读:
介绍:作者是来自百度,不过他本人已经在2014年4月份申请离职了。但是这篇文章很不错如果你不知道深度学习与支持向量机/统计学习理论有什么联系?那么应该立即看看这篇文章.
介绍:这本书是由谷歌公司和MIT共同出品的计算机科学中的数学:,Eric Lehman et al 2013 。分为5大部分:1)证明,归纳。2)结构,数论,图。3)计数,求和,生成函数。4)概率,随机行走。5)递归。等等
介绍:信息时代的计算机科学理论,目前国内有纸质书购买,
介绍:这是一本由雪城大学新编的第二版《数据科学入门》教材:偏实用型,浅显易懂,适合想学习R语言的同学选读。
介绍:这并不是一篇文档或书籍。这是篇向图灵奖得主Donald Knuth提问记录稿: 近日, Charles Leiserson, Al Aho, Jon Bentley等大神向Knuth提出了20个问题,内容包括TAOCP,P/NP问题,图灵机,逻辑,以及为什么大神不用电邮等等。
介绍:不会统计怎么办?不知道如何选择合适的统计模型怎么办?那这篇文章你的好好读一读了麻省理工Joshua B. Tenenbaum和剑桥Zoubin Ghahramani合作,写了一篇关于automatic statistician的文章。可以自动选择回归模型类别,还能自动写报告...
介绍:对深度学习和representation learning最新进展有兴趣的同学可以了解一下
介绍:这是一本信息检索相关的书籍,是由斯坦福Manning与谷歌副总裁Raghavan等合著的Introduction to Information Retrieval一直是北美最受欢迎的信息检索教材之一。最近作者增加了该课程的幻灯片和作业。IR相关资源:
介绍:Deniz Yuret用10张漂亮的图来解释机器学习重要概念:1. Bias/Variance Tradeoff 2. Overfitting 3. Bayesian / Occam's razor 4. Feature combination 5. Irrelevant feature 6. Basis function 7. Discriminative / Generative 8. Loss function 9. Least squares 10. Sparsity.很清晰
介绍:雅虎研究院的数据集汇总: 包括语言类数据,图与社交类数据,评分与分类数据,计算广告学数据,图像数据,竞赛数据,以及系统类的数据。
介绍:这是一本斯坦福统计学著名教授Trevor Hastie和Robert Tibshirani的新书,并且在2014年一月已经开课:
介绍:机器学习最佳入门学习资料汇总是专为机器学习初学者推荐的优质学习资源,帮助初学者快速入门。而且这篇文章的介绍已经被翻译成。如果你不怎么熟悉,那么我建议你先看一看中文的介绍。
介绍:主要是顺着Bengio的PAMI review的文章找出来的。包括几本综述文章,将近100篇论文,各位山头们的Presentation。全部都可以在google上找到。
介绍:这是一本书籍,主要介绍的是跨语言信息检索方面的知识。理论很多
介绍:本文共有三个系列,作者是来自IBM的工程师。它主要介绍了推荐引擎相关算法,并帮助读者高效的实现这些算法。 ,
介绍:康奈尔大学信息科学系助理教授David Mimno写的《对机器学习初学者的一点建议》, 写的挺实际,强调实践与理论结合,最后还引用了冯 o 诺依曼的名言: "Young man, in mathematics you don't understand things. You just get used to them."
介绍:这是一本关于分布式并行处理的数据《Explorations in Parallel Distributed Processing: A Handbook of Models, Programs, and Exercises》,作者是斯坦福的James L. McClelland。着重介绍了各种神级网络算法的分布式实现,做Distributed Deep Learning 的童鞋可以参考下
介绍:【“机器学习”是什么?】John Platt是微软研究院杰出科学家,17年来他一直在机器学习领域耕耘。近年来机器学习变得炙手可热,Platt和同事们遂决定开设,向公众介绍机器学习的研究进展。机器学习是什么,被应用在哪里?来看Platt的这篇
介绍:2014年国际机器学习大会(ICML)已经于6月21-26日在国家会议中心隆重举办。本次大会由微软亚洲研究院和清华大学联手主办,是这个有着30多年历史并享誉世界的机器学习领域的盛会首次来到中国,已成功吸引海内外1200多位学者的报名参与。干货很多,值得深入学习下
介绍:这篇文章主要是以Learning to Rank为例说明企业界机器学习的具体应用,RankNet对NDCG之类不敏感,加入NDCG因素后变成了LambdaRank,同样的思想从神经网络改为应用到Boosted Tree模型就成就了LambdaMART。,微软的机器学习大神,Yahoo 2010 Learning to Rank Challenge第一名得主,排序模型方面有RankNet,LambdaRank,LambdaMART,尤其以LambdaMART最为突出,代表论文为:
此外,Burges还有很多有名的代表作,比如:
介绍:100 Best GitHub: Deep Learning
介绍:本教程将阐述无监督特征学习和深度学习的主要观点。通过学习,你也将实现多个功能学习/深度学习算法,能看到它们为你工作,并学习如何应用/适应这些想法到新问题上。本教程假定机器学习的基本知识(特别是熟悉的监督学习,逻辑回归,梯度下降的想法),如果你不熟悉这些想法,我们建议你去这里,并先完成第II,III,IV章(到逻辑回归)。此外这关于这套教程的源代码在github上面已经有python版本了
介绍:这份文档来自微软研究院,精髓很多。如果需要完全理解,需要一定的机器学习基础。不过有些地方会让人眼前一亮,毛塞顿开。
介绍:这是一篇介绍图像卷积运算的文章,讲的已经算比较详细的了
介绍:每天请一个大牛来讲座,主要涉及机器学习,大数据分析,并行计算以及人脑研究。
(需翻墙)
介绍:一个超级完整的机器学习开源库总结,如果你认为这个碉堡了,那后面这个列表会更让你惊讶:【Awesome Awesomeness】,国内已经有热心的朋友进行了翻译,
介绍:ACL候任主席、斯坦福大学计算机系Chris Manning教授的《自然语言处理》课程所有视频已经可以在斯坦福公开课网站上观看了(如Chrome不行,可用IE观看) 作业与测验也可以下载。
介绍:对比 Deep Learning 和 Shallow Learning 的好文,来着浙大毕业、MIT 读博的 Chiyuan Zhang 的博客。
介绍:利用卷积神经网络做音乐推荐。
介绍:神经网络的免费在线书,已经写了三章了,还有对应的开源代码: 爱好者的福音。
介绍:Java机器学习相关平台和开源的机器学习库,按照大数据、NLP、计算机视觉和Deep Learning分类进行了整理。看起来挺全的,Java爱好者值得收藏。
介绍:机器学习最基本的入门文章,适合零基础者
介绍:机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性。
介绍:看题目你已经知道了是什么内容,没错。里面有很多经典的机器学习论文值得仔细与反复的阅读。
介绍:视频由加州理工学院(Caltech)出品。需要英语底子。
介绍:总结了机器学习的经典书籍,包括数学基础和算法理论的书籍,可做为入门参考书单。
介绍:16本机器学习的电子书,可以下载下来在pad,手机上面任意时刻去阅读。不多我建议你看完一本再下载一本。
介绍:标题很大,从新手到专家。不过看完上面所有资料。肯定是专家了
介绍:入门的书真的很多,而且我已经帮你找齐了。
介绍:Sibyl 是一个监督式机器学习系统,用来解决预测方面的问题,比如 YouTube 的视频推荐。
介绍:Yoshua Bengio, Ian Goodfellow, Aaron Courville著
介绍:关于(Deep) Neural Networks在 NLP 和 Text Mining 方面一些paper的总结
介绍:计算机视觉入门之前景目标检测1(总结)
介绍:计算机视觉入门之行人检测
介绍:Important resources for learning and understanding . Is awesome
介绍:这又是一篇机器学习初学者的入门文章。值得一读
介绍:在线Neural Networks and Deep Learning电子书
介绍:python的17个关于机器学习的工具
介绍:下集在这里
介绍:作者王益目前是腾讯广告算法总监,王益博士毕业后在google任研究。这篇文章王益博士7年来从谷歌到腾讯对于分布机器学习的所见所闻。值得细读
介绍:把机器学习提升的级别分为0~4级,每级需要学习的教材和掌握的知识。这样,给机器学习者提供一个上进的路线图,以免走弯路。另外,整个网站都是关于机器学习的,资源很丰富。
介绍:机器学习各个方向综述的网站
介绍:深度学习阅资源列表
介绍:这是一本来自微的研究员 li Peng和Dong Yu所著的关于深度学习的方法和应用的电子书
介绍:2014年七月CMU举办的机器学习夏季课刚刚结束 有近50小时的视频、十多个PDF版幻灯片,覆盖 深度学习,贝叶斯,分布式机器学习,伸缩性 等热点话题。所有13名讲师都是牛人:包括大牛Tom Mitchell (他的[机器学习]是名校的常用教材),还有CMU李沐 .(1080P高清哟)
介绍:在今年的IEEE/IFIP可靠系统和网络(DSN)国际会议上,Google软件工程师Tushar Chandra做了一个关于Sibyl系统的主题演讲。 Sibyl是一个监督式机器学习系统,用来解决预测方面的问题,比如YouTube的视频推荐。详情请阅读
介绍:谷歌研究院的Christian Szegedy在谷歌研究院的博客上简要地介绍了他们今年参加ImageNet取得好成绩的GoogLeNet系统.是关于图像处理的。
介绍:贝叶斯学习。如果不是很清可看看
介绍:网友问伯克利机器学习大牛、美国双料院士Michael I. Jordan:"如果你有10亿美金,你怎么花?Jordan: "我会用这10亿美金建造一个NASA级别的自然语言处理研究项目。"
介绍:常见面试之机器学习算法思想简单梳理
介绍:Videolectures上最受欢迎的25个文本与数据挖掘视频汇总
介绍:在Kaggle上经常取得不错成绩的Tim Dettmers介绍了他自己是怎么选择深度学习的GPUs, 以及个人如何构建深度学习的GPU集群:
介绍:对话机器学习大神Michael Jordan
介绍:还有2,3部分。
介绍:是Stanford 教授 Andrew Ng 的 Deep Learning 教程,国内的机器学习爱好者很热心的把这个教程翻译成了中文。如果你英语不好,可以看看这个
介绍:因为近两年来,深度学习在媒体界被炒作很厉害(就像大数据)。其实很多人都还不知道什么是深度学习。这篇文章由浅入深。告诉你深度学究竟是什么!
介绍:这是斯坦福大学做的一免费课程(很勉强),这个可以给你在深度学习的路上给你一个学习的思路。里面提到了一些基本的算法。而且告诉你如何去应用到实际环境中。
介绍:这是多伦多大学做的一个深度学习用来识别图片标签/图转文字的demo。是一个实际应用案例。有源码
介绍:机器学习模型,阅读这个内容需要有一定的基础。
介绍: (CRAN Task Views, 34种常见任务,每个任务又各自分类列举若干常用相关工具包) 例如: 机器学习,自然语言处理,时间序列分析,空间信息分析,多重变量分析,计量经济学,心理统计学,社会学统计,化学计量学,环境科学,药物代谢动力学 等
介绍: 机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。本文为您总结一下常见的机器学习算法,以供您在工作和学习中参考.
介绍: 很多干货,而且作者还总结了好几个系列。另外还作者还了一个.非常的感谢作者总结。
介绍:传送理由:Rob Fergus的用深度学习做计算机是觉的NIPS 2013教程。有mp4, mp3, pdf各种 他是纽约大学教授,目前也在Facebook工作,他2014年的8篇
介绍:FudanNLP,这是一个复旦大学计算机学院开发的开源中文自然语言处理(NLP)工具包
Fudan NLP里包含中文分词、关键词抽取、命名实体识别、词性标注、时间词抽取、语法分析等功能,对搜索引擎 文本分析等极为有价值。
介绍:LinkedIn 开源的机器学习工具包,支持单机, Hadoop cluster,和 Spark cluster 重点是 logistic regression 算法
介绍:对于英语不好,但又很想学习机器学习的朋友。是一个大的福利。机器学习周刊目前主要提供中文版,还是面向广大国内爱好者,内容涉及机器学习、数据挖掘、并行系统、图像识别、人工智能、机器人等等。谢谢作者
介绍:《线性代数》是《机器学习》的重要数学先导课程。其实《线代》这门课讲得浅显易懂特别不容易,如果一上来就讲逆序数及罗列行列式性质,很容易让学生失去学习的兴趣。我个人推荐的最佳《线性代数》课程是麻省理工Gilbert Strang教授的课程。
介绍:大数据数据处理资源、工具不完备列表,从框架、分布式编程、分布式文件系统、键值数据模型、图数据模型、数据可视化、列存储、机器学习等。很赞的资源汇总。
介绍:雅虎邀请了一名来自本古里安大学的访问学者,制作了一套关于机器学习的系列视频课程。本课程共分为7期,详细讲解了有关SVM, boosting, nearest neighbors, decision trees 等常规机器学习算法的理论基础知识。
介绍:应对大数据时代,量子机器学习的第一个实验
介绍:Wired杂志报道了UCLA数学博士Chris McKinlay (图1)通过大数据手段+机器学习方法破解婚恋网站配对算法找到真爱的故事,通过Python脚本控制着12个账号,下载了婚恋网站2万女用户的600万问题答案,对他们进行了统计抽样及聚类分析(图2,3),最后终于收获了真爱。科技改变命运!
介绍:MIT的Underactuated Robotics于 日开课,该课属于MIT研究生级别的课程,对机器人和非线性动力系统感兴趣的朋友不妨可以挑战一下这门课程!
介绍:mllib实践经验分享
介绍:Google用Deep Learning做的antispam(反垃圾邮件)
介绍:NLP常用信息资源*
介绍:机器学习速查表
介绍:从1996年开始在计算机科学的论文中被引用次数最多的论文
介绍:把今年的一个ACM Trans. on Graphics (TOG)论文中的代码整理为一个开源的算法框架,共享出来了。欢迎大家使用。可以实时的采集3D数据、重建出三维模型。Online learning,GPU Random forest,GPU CRF也会后续公开。
介绍:【神经网络黑客指南】现在,最火莫过于深度学习(Deep Learning),怎样更好学习它?可以让你在浏览器中,跑起深度学习效果的超酷开源项目convnetjs作者karpathy告诉你,最佳技巧是,当你开始写代码,一切将变得清晰。他刚发布了一本图书,不断在线更新
介绍:前Google广告系统工程师Josh Wills 讲述工业界和学术界机器学习的异同,大实话
介绍:使用 做电影评论的情感分析。
介绍:不仅是资料,而且还对有些资料做了注释。
介绍:深度学习入门的初级读本
介绍:机器学习教会了我们什么?
介绍:scikit-learn是在SciPy基础上构建的用于机器学习的Python模块。
介绍:乔丹教授(Michael I. Jordan)教授是机器学习领域神经网络的大牛,他对深度学习、神经网络有着很浓厚的兴趣。因此,很多提问的问题中包含了机器学习领域的各类模型,乔丹教授对此一一做了解释和展望。
介绍:A*搜索是人工智能基本算法,用于高效地搜索图中两点的最佳路径, 核心是 g(n)+h(n): g(n)是从起点到顶点n的实际代价,h(n)是顶点n到目标顶点的估算代价。
介绍:本项目利用了Microsoft Azure,可以在几分种内完成NLP on Azure Website的部署,立即开始对FNLP各种特性的试用,或者以REST API的形式调用FNLP的语言分析功能
介绍:现任复旦大学首席教授、计算机软件博士生导师。计算机科学研究所副所长.内部课程
介绍:好东西的干货真的很多
介绍:从硬件、图像到健康、生物、大数据、生物信息再到量子计算等,Amund Tveit等维护了一个DeepLearning.University小项目:收集从2014年开始深度学习文献,相信可以作为深度学习的起点,
介绍:EMNLP上两篇关于 用到了deep model组织特征;用到了stock network。
介绍:作者是深度学习一线大牛Bengio组写的教程,算法深入显出,还有实现代码,一步步展开。
介绍:许多传统的机器学习任务都是在学习function,不过谷歌目前有开始学习算法的趋势。谷歌另外的这篇学习Python程序的也有相似之处
介绍:作者是华为技术有限公司,诺亚方舟实验室,首席科学家的李航博士写的关于信息检索与自然语言处理的文章
介绍:利用机用器学习在谣言的判别上的应用,此外还有两个。一个是识别垃圾与虚假信息的.还有一个是
介绍:该课程是网易公开课的收费课程,不贵,超级便宜。主要适合于对利用R语言进行机器学习,数据挖掘感兴趣的人。
介绍:本章中作者总结了三代机器学习算法实现的演化:第一代非分布式的, 第二代工具如Mahout和Rapidminer实现基于Hadoop的扩展,第三代如Spark和Storm实现了实时和迭代数据处理。
介绍:讲计算机视觉的四部奇书(应该叫经典吧)之一,另外三本是Hartley的《多图几何》、Gonzalez的《数字图像处理》、Rafael C.Gonzalez / Richard E.Woods 的
介绍:里面基本没涉及到具体算法,但作者介绍了CF在LinkedIn的很多应用,以及他们在做推荐过程中获得的一些经验。最后一条经验是应该监控log数据的质量,因为推荐的质量很依赖数据的质量!
介绍:初学者如何查阅自然语言处理(NLP)领域学术资料
介绍:用树莓派和相机模块进行人脸识别
介绍:如何利用深度学习与大数据构建对话系统
介绍:Francis Bach合作的有关稀疏建模的新综述(书):Sparse Modeling for Image and Vision Processing,内容涉及Sparsity, Dictionary Learning, PCA, Matrix Factorization等理论,以及在图像和视觉上的应用,而且第一部分关于Why does the l1-norm induce sparsity的解释也很不错。
介绍:RKHS是机器学习中重要的概念,其在large margin分类器上的应用也是广为熟知的。如果没有较好的数学基础,直接理解RKHS可能会不易。本文从基本运算空间讲到Banach和Hilbert空间,深入浅出,一共才12页。
介绍:许多同学对于机器学习及深度学习的困惑在于,数学方面已经大致理解了,但是动起手来却不知道如何下手写代码。斯坦福深度学习博士Andrej Karpathy写了一篇实战版本的深度学习及机器学习教程,手把手教你用Javascript写神经网络和SVM.
介绍:【语料库】语料库资源汇总
介绍:本文会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助。
介绍:这个里面有很多关于机器学习、信号处理、计算机视觉、深入学习、神经网络等领域的大量源代码(或可执行代码)及相关论文。科研写论文的好资源
介绍:NYU 2014年的深度学习课程资料,有视频
介绍:计算机视觉数据集不完全汇总
介绍:机器学习开源软件
介绍:A Library for Support Vector Machines
介绍:之一
介绍:github上面100个非常棒的项目
介绍:当前加州大学欧文分校为机器学习社区维护着306个数据集。
介绍:Andrej Karpathy 是斯坦福大学Li Fei-Fei的博士生,使用机器学习在图像、视频语义分析领域取得了科研和工程上的突破,发的文章不多,但每个都很扎实,在每一个问题上都做到了state-of-art.
介绍:Andrej Karpathy的深度强化学习演示,
介绍:CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称。
介绍:杰弗里·埃弗里斯特·辛顿 FRS是一位英国出生的计算机学家和心理学家,以其在神经网络方面的贡献闻名。辛顿是反向传播算法和对比散度算法的发明人之一,也是深度学习的积极推动者.
介绍:微软研究院深度学习技术中心在CIKM2014 上关于《自然语言处理的深度学习理论与实际》教学讲座的幻灯片
介绍: 本文基于&支持向量机的高频限价订单的动态建模&采用了 Apache Spark和Spark MLLib从纽约股票交易所的订单日志数据构建价格运动预测模型。(股票有风险,投资谨慎)GitHub源代码托管.
介绍:徐宗本 院士将于热爱机器学习的小伙伴一起探讨有关于机器学习的几个理论性问题,并给出一些有意义的结论。最后通过一些实例来说明这些理论问题的物理意义和实际应用价值。
介绍:作者还著有《这就是搜索引擎:核心技术详解》一书,主要是介绍应用层的东西
介绍:机器学习课程
介绍:人脸识别必读文章推荐
介绍:推荐系统经典论文文献
介绍:人脸识别必读文章推荐
介绍:第十二届中国"机器学习及其应用"研讨会PPT
介绍:统计学习是关于计算机基于数据构建的概率统计模型并运用模型对数据进行预测和分析的一门科学,统计学习也成为统计机器学习。课程来自上海交通大学
介绍:机器学习的目标是对计算机编程,以便使用样本数据或以往的经验来解决给定的问题.
介绍:CIKM 2014 Jeff Dean、Qi Lu、Gerhard Weikum的主题报告的幻灯片, Alex Smola、Limsoon Wong、Tong Zhang、Chih-Jen Lin的Industry Track报告的幻灯片
介绍:部分中文
介绍:此外作者还有一篇
介绍:加州伯克利大学博士Aria Haghighi写了一篇超赞的数值优化博文,从牛顿法讲到拟牛顿法,再讲到BFGS以及L-BFGS, 图文并茂,还有伪代码。强烈推荐。
介绍:还有续集
介绍:R语言程序员私人定制版
介绍:谷歌地图解密
介绍:空间数据挖掘常用方法
介绍:Kaggle新比赛 ”When bag of words meets bags of popcorn“ aka ”边学边用word2vec和deep learning做NLP“ 里面全套教程教一步一步用python和gensim包的word2vec模型,并在实际比赛里面比调参数和清数据。 如果已装过gensim不要忘升级
介绍:PyNLPIR提供了NLPIR/ICTCLAS汉语分词的Python接口,此外提供了常用汉字常量,如CJK字符和偏旁,中文标点,拼音,和汉字正则表达式(如找到文本中的繁体字)
介绍:这文章说把最近模型识别上的突破应用到围棋软件上,打16万张职业棋谱训练模型识别功能。想法不错。训练后目前能做到不用计算,只看棋盘就给出下一步,大约10级棋力。但这篇文章太过乐观,说什么人类的最后一块堡垒马上就要跨掉了。话说得太早。不过,如果与别的软件结合应该还有潜力可挖。@万精油墨绿
介绍:UT Austin教授Eric Price关于今年NIPS审稿实验的详细分析,他表示,根据这次实验的结果,如果今年NIPS重新审稿的话,会有一半的论文被拒。
介绍:KDNuggets分别总结了2014年14个阅读最多以及分享最多的文章。我们从中可以看到多个主题——深度学习,数据科学家职业,教育和薪酬,学习数据科学的工具比如R和Python以及大众投票的最受欢迎的数据科学和数据挖掘语言
介绍:Python实现线性回归,作者还有其他很棒的文章推荐可以看看
介绍:2014中国大数据技术大会33位核心专家演讲PDF下载
介绍:这是T. Mikolov & Y. Bengio最新论文Ensemble of Generative and Discriminative Techniques for Sentiment Analysis of Movie Reviews ,使用RNN和PV在情感分析效果不错,[项目代码]()公布在 Vector终于揭开面纱了嘛。
介绍:NLPIR/ICTCLAS2015分词系统发布与用户交流大会上的演讲,请更多朋友检阅新版分词吧。
我们实验室同学的演讲包括:
介绍:Convex Neural Networks 解决维数灾难
介绍:介绍CNN参数在使用bp算法时该怎么训练,毕竟CNN中有卷积层和下采样层,虽然和MLP的bp算法本质上相同,但形式上还是有些区别的,很显然在完成CNN反向传播前了解bp算法是必须的。此外作者也做了一个
介绍:如果要在一篇文章中匹配十万个关键词怎么办? 算法利用添加了返回边的Trie树,能够在线性时间内完成匹配。 但如果匹配十万个正则表达式呢 ? 这时候可以用到把多个正则优化成Trie树的方法,如日本人写的
介绍:深度学习阅读清单
介绍:Caffe是一个开源的深度学习框架,作者目前在google工作,作者主页
介绍:2014 ImageNet冠军GoogLeNet深度学习模型的Caffe复现模型,.
介绍:LambdaNetLambdaNet是由Haskell实现的一个开源的人工神经网络库,它抽象了网络创建、训练并使用了高阶函数。该库还提供了一组预定义函数,用户可以采取多种方式组合这些函数来操作现实世界数据。
介绍:如果你从事互联网搜索,在线广告,用户行为分析,图像识别,自然语言理解,或者生物信息学,智能机器人,金融预测,那么这门核心课程你必须深入了解。
介绍:"人工智能研究分许多流派。其中之一以IBM为代表,认为只要有高性能计算就可得到智能,他们的‘深蓝’击败了世界象棋冠军;另一流派认为智能来自动物本能;还有个很强的流派认为只要找来专家,把他们的思维用逻辑一条条写下,放到计算机里就行……" 杨强在TEDxNanjing谈智能的起源
介绍:1)机器翻译 2)成分句法
介绍:网易有道的三位工程师写的word2vec的解析文档,从基本的词向量/统计语言模型-&NNLM-&Log-Linear/Log-Bilinear-&层次化Log-Bilinear,到CBOW和Skip-gram模型,再到word2vec的各种tricks,公式推导与代码,基本上是网上关于word2vec资料的大合集,对word2vec感兴趣的朋友可以看看
介绍:机器学习开源软件,收录了各种机器学习的各种编程语言学术与商业的开源软件.与此类似的还有很多例如:, , , , , , , 
介绍:作者是计算机研二(写文章的时候,现在是2015年了应该快要毕业了),专业方向自然语言处理.这是一点他的经验之谈.对于入门的朋友或许会有帮助
介绍:这是一篇关于机器学习算法分类的文章,非常好
介绍:机器学习日报里面推荐很多内容,在这里有一部分的优秀内容就是来自机器学习日报.
介绍:这是一篇关于图像分类在深度学习中的文章
介绍:作者与Bengio的兄弟Samy 09年合编《自动语音识别:核方法》 3)李开复1989年《自动语音识别》专著,其博导、94年图灵奖得主Raj Reddy作序
介绍: 作者是360电商技术组成员,这是一篇NLP在中文分词中的应用
介绍: 使用deep learning的人脸关键点检测,此外还有一篇
介绍: 由Sebastian Nowozin等人编纂MIT出版的新书《Advanced Structured Prediction》 ,汇集了结构化预测领域诸多牛文,涉及CV、NLP等领域,值得一读。网上公开的几章草稿:,,,,
介绍: Tropp把数学家用高深装逼的数学语言写的矩阵概率不等式用初等的方法写出来,是非常好的手册,领域内的paper各种证明都在用里面的结果。虽说是初等的,但还是非常的难
介绍: 不容错过的免费大数据集,有些已经是耳熟能详,有些可能还是第一次听说,内容跨越文本、数据、多媒体等,让他们伴你开始数据科学之旅吧,具体包括:Data.gov、US Census Bureau、European Union Open Data Portal、Data.gov.uk等
介绍: 谷歌科学家、Hinton亲传弟子Ilya Sutskever的深度学习综述及实际建议
介绍: 非常好的讨论递归神经网络的文章,覆盖了RNN的概念、原理、训练及优化等各个方面内容,强烈推荐!本文作者Nikhil Buduma还有一篇值得推荐
介绍:里面融合了很多的资源,例如竞赛,在线课程,demo,数据整合等。有分类
介绍:《机器学习的统计基础》在线版,该手册希望在理论与实践之间找到平衡点,各主要内容都伴有实际例子及数据,书中的例子程序都是用R语言编写的。
介绍:IVAN VASILEV写的深度学习导引:从浅层感知机到深度网络。高可读
介绍:鲁棒及有益的人工智能优先研究计划:一封公开信,目前已经有Stuart Russell, Tom Dietterich, Eric Horvitz, Yann LeCun, Peter Norvig, Tom Mitchell, Geoffrey Hinton, Elon Musk等人签署.这封信的背景是最近霍金和Elon Musk提醒人们注意AI的潜在威胁。公开信的内容是AI科学家们站在造福社会的角度,展望人工智能的未来发展方向,提出开发AI系统的Verification,Validity, Security, Control四点要求,以及需要注意的社会问题。毕竟当前AI在经济领域,法律,以及道德领域相关研究较少。其实还有一部美剧,介绍了AI的演进从一开始的自我学习,过滤,图像识别,语音识别等判断危险,到第四季的时候出现了机器通过学习成长之后想控制世界的状态。说到这里推荐收看。
介绍:里面根据词条提供了许多资源,还有相关知识结构,路线图,用时长短等。号称是”机器学习“搜索引擎
介绍:Facebook人工智能研究院(FAIR)开源了一系列软件库,以帮助开发者建立更大、更快的深度学习模型。开放的软件库在 Facebook 被称作模块。用它们替代机器学习领域常用的开发环境 Torch 中的默认模块,可以在更短的时间内训练更大规模的神经网络模型。
介绍:本文虽然是写于2012年,但是这篇文章完全是作者的经验之作。
介绍:本文是对《机器学习实战》作者Peter Harrington做的一个访谈。包含了书中部分的疑问解答和一点个人学习建议
介绍:非常好的深度学习概述,对几种流行的深度学习模型都进行了介绍和讨论
介绍:主要是讲述了利用R语言进行数据挖掘
介绍:帮你理解卷积神经网络,讲解很清晰,此外还有两篇,. 作者的其他的关于神经网络文章也很棒
介绍:Deep Learning算法介绍,里面介绍了06年3篇让deep learning崛起的论文
介绍:一本学习人工智能的书籍,作者是Yoshua Bengio,相关
介绍:Geoffrey Hinton是Deep Learning的大牛,他的主页放了一些介绍性文章和课件值得学习
介绍:概率论:数理逻辑书籍
介绍:一个用来快速的统计,机器学习并且对于数据量大的数学库
介绍:在这里你可以看到最近深度学习有什么新动向。
介绍:此书在信息检索领域家喻户晓, 除提供该书的免费电子版外,还提供一个 ,收录了信息检索、网络信息检索、搜索引擎实现等方面相关的图书、研究中心、相关课程、子领域、会议、期刊等等,堪称全集,值得收藏
介绍:信息几何学及其在机器学习中的应用
介绍:课程《法律分析》介绍幻灯片。用机器学习解决法律相关分析和预测问题,相关的法律应用包括预测编码、早期案例评估、案件整体情况的预测,定价和工作人员预测,司法行为预测等。法律领域大家可能都比较陌生,不妨了解下。
介绍: 文中提到了最优,模型,最大熵等等理论,此外还有应用篇。推荐系统可以说是一本不错的阅读稿,关于模型还推荐一篇
介绍: NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.NeuralTalk是一个Python的从图像生成自然语言描述的工具。它实现了Google (Vinyals等,卷积神经网络CNN + 长短期记忆LSTM) 和斯坦福 (Karpathy and Fei-Fei, CNN + 递归神经网络RNN)的算法。NeuralTalk自带了一个训练好的动物模型,你可以拿狮子大象的照片来试试看
介绍:本文主要介绍了在Hadoop2.0上使用深度学习,文章来自paypal
介绍:用基于梯度下降的方法训练深度框架的实践推荐指导,作者是 .感谢@xuewei4d 推荐
介绍: 用统计和因果方法做机器学习(视频报告)
介绍: 一个讲机器学习的Youtube视频教程。160集。系统程度跟书可比拟。
介绍: 机器学习中的数学,作者的研究方向是机器学习,并行计算如果你还想了解一点其他的可以看看他的其他文章
介绍: 美团推荐算法实践,从框架,应用,策略,查询等分析
介绍: 深度学习用于问答系统答案句的选取
介绍: CNN用于WEB搜索,深度学习在文本计算中的应用
介绍: Awesome系列中的公开数据集
介绍: 一个学术搜索引擎
介绍: 用Python和Cython写的工业级自然语言处理库,号称是速度最快的NLP库,快的原因一是用Cython写的,二是用了个很巧妙的hash技术,加速系统的瓶颈,NLP中稀松特征的存取
介绍: 是个数学研究中心,上面的这份ppt是来自Fields举办的活动中Russ Salakhutdinov带来的《大规模机器学习》分享
介绍: Topic modeling 的经典论文,标注了关键点
介绍: 多伦多大学与Google合作的新论文,深度学习也可以用来下围棋,据说能达到六段水平
介绍: 新闻,paper,课程,book,system,CES,Roboot,此外还推荐一个
介绍: 18 free eBooks on Machine Learning
latex structrue:
latex graphics:
latex beamer:
latex table:
CFLAGS 和 CXXFLAGS
CFLAGS 表示用于 C 编译器的选项
CXXFLAGS 表示用于 C++ 编译器的选项
CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。
同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把
以前安装的包的include目录加入到该变量中来。
LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。
用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目
录里建立一个lib目录。如果明明安装了某个包,而安装另一个包时,它愣是说找不到,可以抒那
个包的lib路径加入的LDFALGS中试一下。
LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv
include 、-include 和 sinclude
include: 指示符告诉 make 暂停读取当前的 Makefile,而转去读取“include”指定的一个
或者多个文件,完成以后再继续当前 Makefile 的读取。Makefile 中指示符“include”书写在
独立的一行
“include FILENAMES...”: make程序处理时,如果“FILENAMES”列表中的任何一个文件不能
正常读取而且不存在一个创建此文件的规则时make程序将会提示错误并退出。
“-include FILENAMES...”: 的情况是,当所包含的文件不存在或者不存在一个规则去创建它,
make程序会继续执行,只有真正由于不能正确完成终极目标的重建时(某些必需的目标无法在当
前已读取的makefile文件内容中找到正确的重建规则),才会提示致命错误并退出。
使用“sinclude”来代替“-include”(GNU所支持的方式)。
BUILD_EXTRA_DEPS
CLEAN_EXTRA
vim 配的挺好後,就差怎麼在同一面板上進行調試啦。emacs貌似就沒有這麻煩啦。
今天發現一神器 那就是 tmux,tmux是一个优秀的终端复用软件
允許你同一會話下開多個面板。(這裏要注意兩個詞,不然就會弄混)
安裝的話: apt-get install tmux
使用:先按功能鍵 ctrl + b然後再按其他鍵。功能鍵可以自己設定(ctrl+b實在太遠了)
激活控制台;此时以下按键生效
列出所有快捷键;按q返回
脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
选择要脱离的会话;在同时开启了多个会话时使用
挂起当前会话
强制重绘未脱离的会话
选择并切换会话;在同时开启了多个会话时使用
进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
窗口操作(會話)
创建新窗口
关闭当前窗口
切换至指定窗口
切换至上一窗口
切换至下一窗口
在前后两个窗口间互相切换
通过窗口列表切换窗口
重命名当前窗口;这样便于识别
修改当前窗口编号;相当于窗口重新排序
在所有窗口中查找指定文本
将当前面板平分为上下两块
将当前面板平分为左右两块
关闭当前面板
将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
Ctrl+方向键
以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键
以5个单元格为单位移动边缘以调整当前面板大小
在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
显示面板编号
在当前窗口中选择下一面板
移动光标以选择面板
向前置换当前面板
向后置换当前面板
逆时针旋转当前窗口的面板
顺时针旋转当前窗口的面板
刚写的不知道咋滴没保存,真想说为啥这么卡!!!
最近都流行awesome xxx啊,所以我也网罗写awesome xxx以飨读者。
awesome news
awesome-python:
awesome-courses:
awesome-linux:
awesome-java:
awesome-ruby:
awesome-nodejs:
其实你会发现只要到git上一搜awesome 其实都有啦,希望大家根据需要去搜吧。
好东西也要拿出来分享哦。
写在前面,直到我遇到bundle我才慢慢感受到vim的强大。
本文转自:
(写的非常不错,我想这就是把简单的事情做到极致的例子吧,自己也要学会也好文章)
跟我一起学习VIM - The Life Changing Editor
前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程。虽然准备有限,但分享过程中大家大多带着一种惊叹的表情,原来编辑器可以这样强大,这算是对我多年来使用VIM的最大鼓舞吧。所以分享结束之后,将这篇简短教程整理一下作为我2014年的第一篇Blog。
写在前面:Life Changing Editor
为什么选VIM
为什么选其它
为什么犹豫选择它们
VIM &= SUM(现代编辑器)
如何学习VIM
一秒钟变记事本
VIM的基本用法
VIM进阶:插件
插件管理神器:Vundle
导航与搜索
终极配置: spf13
与其它软件集成
搭完网站之后的第一篇文章有些兴奋,先变身话痨简单回顾一下我是如何接触到VIM的,不感兴趣的同学可以直接跳过这一部分:-)
写在前面:Life Changing Editor
我是一个非常懒的人,对于效率有着近乎执拗的追求。比如我会花2个小时来写一个脚本,然后使用这个脚本瞬间完成一个任务,而不愿意花一个小时来手工完成这项任务,从绝对时间上来说,写脚本花的时间更长,但我依然乐此不疲。
工欲善其事,必先利其器,折腾各种各样的软件就成为了我的一大爱好,尤其是各种人称神器的工具类软件,而善用佳软是这类工具的聚集地,现在我使用的很多优秀的软件都得知于此,包括VIM,所以,如果你和我一样,希望拥有众多“神器”,让工作事半功倍,可以关注此站。
第一次听说VIM已经是离开校园参加工作之后的事,那时部门内部大多使用Source Insight代替Visual Studio编写代码,大家都被它的代码管理,自动完成,代码跳转等功能所吸引,但一个领导说了句很多Vimer经常会说,至今仍让我记忆尤新的一句话:
世界上只有三种编辑器,EMACS、VIM和其它
我很反对这种极端的言论,使用何种工具是一个人自由,只要能发挥一个工具最大的效率就行,不应该加以约束,更不应该鄙视。话虽如此,我却阻挡不住好奇心的驱使,琢磨着到底是什么样的编辑器会拥有这样高的评价。抱着这份好奇,我搜索到了善用佳软,看到《普通人的编辑利器——Vim》,Dieken的《程序员的编辑器——VIM》,以及王垠的《Emacs是一种信仰!世界最强编辑器介绍》BANG……想到不久前看到的一段话:
南中国的雷雨天有怒卷的压城云、低飞的鸟和小虫,有隐隐的轰隆声呜呜咽咽……还有一片肃穆里的电光一闪。那闪电几乎是一棵倒着生长的树,发光发亮的枝丫刚刚舒展,立马结出一枚爆炸的果实,那一声炸响从半空中跌落到窗前,炸得人一个激灵,杯中一圈涟漪。
这种一个激灵的感觉不仅仅局限于雷雨天。在我读完上面几篇文章之后,简单的文字亦立刻击中儃中,炸的一个激灵。从此,我对编辑器的认识被完全颠覆。
很多孩子都有一个梦想:希望能够长大之后可以身着军装,腰插手枪,头戴警帽,遇到坏人之后潇洒拔出枪,瞬间解决战斗,除暴安良,匡扶正义。我这样的程序员们也有一个梦想:希望学成之后可以像电影里黑客们一样,对着满屏幕闪烁的各种符号,双手不离键盘噼里啪啦一阵乱敲,屏幕上的符号不断滚动,就攻破了几百公里之外的某某银行的服务器,向帐户里面增加一笔天文数字,然后潇洒的离去,神不知鬼不觉,留下不知所措的孩子们的梦想——警察叔叔们。这简直构成了程序员们的终极幻想:-P。VIM的出现让我感觉离幻想更近了一步,呃,别想错了,我是指——双手不离键盘,噼里啪啦,黑客的范儿。不可否认,扮酷也是促使我学习VIM的一个重要原因:-P。
在一个激灵之后,接下来便是不可自拔的陷入VIM世界,于是网上搜索各种入门教程,_vimrc的配置,折腾插件,研究奇巧淫技,将VIM打造成IDE。那感觉就像世界从此就只有VIM,写代码用VIM,Visual Studio用VIM,Source Insight用VIM,甚至写PDF,浏览网页都要用VIM,够折腾吧。可是像Vimer们一样,我依然折腾着,并快乐着。如今,折腾一圈之后,随着对Unix的KISS设计哲学逐渐理解与认可:把所有简单的事情做到极致。所以在对待VIM的态度上也有了一定的转变,不再执著的将它打造成万能的IDE,而仅仅让它将编辑功能发挥到极致,其它的事情交给其它更擅长的工具去做。Keep It Simple, Stupid.
在VIM的官方网站上,对每个插件的评价是这样分类的:
Life Changing
Unfulfilling
而我想将这个分类应用到使用的软件上,对于VIM,它是毫无疑问的Life Changing。
以下两句对编辑器的最高评价足矣:
VIM is the God of editors, EMACS is God’s editor
EMACS is actually an OS which pretends to be an editor
为什么选VIM
我们所处的时代是非常幸运的,有越来越多的编辑器,相对于古老的VIM和EMACS,它们被称为现代编辑器。我们来看看这两个古董有多大年纪了:
EMACS : 1975 ~ 2013 = 38岁VI
: 1976 ~ 2013 = 37岁VIM
: 1991 ~ 2013 = 22岁
看到这篇文章的人有几个是比它们大的:-)
VIM的学习曲线非常陡,这里有一个主流编辑器的学习曲线对比。既然学习VIM如此之难,而现代编辑器又已经拥有了如此多的特性,我们为什么要花大量的时间来学习这个老古董呢?
为什么选其它
先来看看为什么我们会选现在所使用的编辑器?(也许很多人直接用IDE自带的编辑器,我们暂且也把它们划到编辑器的范畴内。)这里我简单列举一些程序员期望使用的编辑拥有的功能:
轻量级,迅速启动(相对于IDE)
十六进制编辑
列编辑模式
高级搜索,替代
也许,美观也是一个诉求
为什么犹豫选择它们
总有一些理由让我们一再犹豫的选择它们,或者勉强使用它们:
太贵:虽然知道VS很贵,但看到价格时,还是被吓了一跳
Visual Studio Profession 2012 : 11645元
UtralEdit : 420元
Source Insight : 2500元
不能跨平台
VS, SI, UE,Notepad++这些只能在Windows上使用
Mac上的TextMate只能运行于Mac上
不容易扩展
那么,还有别的选择么?
VIM &= SUM(现代编辑器)
首先,VIM包含了上面列的所有现代编辑器的优点,并且远远多于此。
并且,VIM拥有让你不再犹豫的其它特性:
无止尽的扩展:现在VIM的官方网站上已经有了4704个扩展,并且在不断增加…
完美的跨平台:
Windows : gVim
Linux : 内置默认 (e.g., man page)
Mac : MacVim
用起来很酷
最关键的,$
废话结束,开始进入正题。
如何学习VIM
一秒钟变记事本
很多时候大家希望能够以最快的速度编辑文档,而不愿意花大量的时间在学习这一工具上,比如偶尔要去Linux改变一下配置。这时VIM有一种方法可以一秒钟变记事本,打开VIM之后,只需要一个键i,接下来所有的操作就和Windows上的记事本无异,你所喜爱与习惯的方向键也回来了。
这也并没有多神奇,它只是VIM提供的一种特殊的模式:Insert mode,在按过i之后,你可以在编辑器的左下角看到INSERT字样。但是因为VIM无法使用CTRL-S来保存,那么,在编辑完之后,如何保存退出呢?也很简单,先按ESC,再输入:wq,前面一步是告诉VIM退出INSERT模式,后面一个命令是保存退出。
我见过很多人这样用,虽然说这很容易,但是有种暴殄天物的感觉,和给了你一把AK47,你却把它当成棍子使一样。要发挥AK47的作用,还请向下看。
VIM的基本用法
最好的入门教程非VIM自带的vimtutor莫属,它是VIM安装之后自带的简短教程,可以在安装目录下找到,只需半个小时左右的时间,就可以掌握VIM的绝大部分用法。这是迄今为止我见过的软件自带教程中最好的一个。
当然,网上的VIM教程也非常多,我之前看的是李果正的大家来学VIM,很适合入门。
另外推荐陈皓的简明VIM练级攻略,或者创意十足的游戏VIM大冒险。
这游戏的创意实在是太赞了,打完游戏,你便掌握了VIM,这才是真正的寓教于乐,下面是摘自这个游戏的描述:
VIM Adventures is an online game based on VIM’s keyboard shortcuts (commands, motions and operators). It’s the “Zelda meets text editing” game. It’s a puzzle game for practicing and memorizing VIM commands (good old VI is also covered, of course). It’s an easy way to learn VIM without a steep learning curve.
最后在这里给大家分享一个vgod设计的VIM命令图解。这也是我看过的最好的命令图示,看完了前面的基本教程后,可以将它作为一个cheat sheet随时查看,相信用不了多久你也可以完全丢掉它。关于此图的详细解释可以参考这里。
VIM命令图解
VIM进阶:插件
在学完了上面任何一个教程之后,通过一段时间的练习,你已经可以非常熟练的使用VIM。即使是“裸奔”,VIM已经足够强大,能够完成日常的绝大部分工作。但VIM更加强大的是它的扩展机制,就像Firefox和Chrome的各种插件,它们将令我们的工具更加完美。网上有很多教程里写的插件已经过时,接下来我将介绍一些比较新的,非常有用的插件,看完之后,相信你一定会觉得蠢蠢欲动。
插件管理神器:Vundle
在这开始之前,先简单介绍VIM插件的管理方式。在我刚接触插件之时,安装一个插件需要:
去官网下载
拷贝到VIM的安装目录
运行:help tags
这些步骤已经足够复杂,更加无法想象的是要更新或者删除一个插件时,因为它的文件分布在各个目录下,就比如Windows上的安装路径,Application data,用户数据,注册表等等,除非你对VIM的插件机制和要删的插件了如直掌,否则你能难将它删除干净。所以一段时间之后,VIM的安装目录下简直就是一团乱麻,管理插件几乎成为了一项不可能完成的任务。想象一下,如果Windows上面没有软件管理工具,你如何安装,卸载一个软件吧。
但是这没有难倒聪明的Vimer们,他们利用VIM本身的特性,开发出了神器——Vundle,配合上GitHub,VIM插件的管理变得前所未有的简单。来对比一下使用Vundle如何管理插件:
在按照官方的教程安装好Vundle之后,要安装一个插件时,你只需要:
在VIM的配置文件中加一句 Bundle 'you/script/path'
在VIM中运行 :BundleInstall
卸载时只需:
去除配置文件中的 Bundle 'you/script/name'
在VIM中运行 :BundleClean
更新插件就更加简单,只需一句 :BundleUpdate。现在你已经完全从粗活累活中解放了出来,从此注意力只需放在挑选自己喜欢的插件上,还有比这更美好的么?下面介绍的所有的插件都以它来管理。
你是否觉得用了许多年的白底黑字有些刺眼,又或者你是否厌倦了那单调枯燥?如果是,那好,VIM提供了成百上千的配色方案,终有一款适合你。
在所有的配色当中,最受欢迎的是这款Solarized:
在Github上它有4,930个Star,仅靠一个配色方案就得到如此多的Star,可见它有多么的受欢迎。它有两种完全相反的颜色,一暗一亮,作者非常具有创意将它们设计成一个阴阳八卦,赏心悦目。下面是采用这种配色的VIM截图:
Solarized截图
Solarized配色还有一个使它能够成为最受欢迎的配色方案的理由,除了VIM之外,它还提供了很多其它软件的配色方案,包括:Emacs, Visual Studio, Xcode, NetBeans, Putty,各种终端等等,应该是除了默认的黑白配色之外用途最为广泛的一种了。目前我采用的就是这种配色方案的dark background,它的对比度非常适合长期对着编辑器的程序员们。
还有一种很受欢迎的配色方案:Molokai,它是Mac上TextMate编辑器的一种经典配色,也非常适合程序员:
Molokai截图
导航与搜索
NERDTree - file navigation NERDTree
代码资源管理器现在已经成为了各种各样IDE的标配,这可以大大提高管理源代码的效率。这样的功能VIM自然不能少,NERD Tree提供了非常丰富的功能,不仅可以以VIM的方式用键盘来操作目录树,同时也可以像Windows资源管理器一样用鼠标来操作。
--help: 可以将打开目录树的功能绑定到你所喜欢的快捷键上,比如:map &leader&e :NERDTreeToggle&CR&
CtrlP - fast file finder CtrlP
如果说上面介绍的NERD Tree极大的方便了源代码的管理方式,那CtrlP可以称的上是革命性的,杀手级的VIM查找文件插件。它以简单符合直觉的输入方式,极快的响应速度,精确的准备度,带你在项目中自由穿越。它可以模糊查询定位,包括工程下的所有文件,已经打开的buffer,buffer中的tag以及最近访问的文件。在这之前,我用的是lookupfiles,因为依赖了其它的插件和应用程序,这个上古时代的插件逐渐被抛弃了。自从有了它,NERD Tree也常常被我束之高阁。
据说它模仿了Sublime的名字和功能,我没用过Sublime,但是听说CtrlP这个功能是Sublime最性感的功能之一。可以去它的官网看看。
--help: 这个插件另一个令人称赞的一点在于无比简单直观的使用方式,正如其名:Ctrl+P,然后享受它带来的快感吧。
Taglist - source code browser Taglist
想必使用过Visual Studio和Source Insight的人都非常喜爱这样一个功能:左边有一个Symbol窗口,它列出了当前文件中的宏、全局变量、函数、类等信息,鼠标点击时就会跳到相应的源代码所在的位置,非常便捷。Taglist就是实现这个功能的插件。可以说symbol窗口是程序员不可缺少的功能,当年有很多人热衷于借助taglist、ctags和cscope,将VIM打造成一个非常强大的Linux下的IDE,所以一直以来,taglist在VIM官方网站的scripts排列榜中一直高居榜首,成为VIM使用者的必备插件。
--help: 最常见的做法也是将它绑定到一个快捷键上,比如:map &silent& &F9& :TlistToggle&CR&
Tagbar - tag generation and navigation Tagbar
看起来Tagbar和上面介绍的Taglist很相似,它们都是展示当前文件Symbol的插件,但是两者有一定的区别,大家可以从上图的对比中得知,两者的关注点不同。总的来说Tagbar对面向对象的支持更好,它会自动根据文件修改的时间来重新排列Symbol的列表。它们以不同的纬度展示了当前文件的Symbol。
--help: 同Taglist一样,可以这样绑定它的快捷键,nmap &silent& &F4& :TagbarToggle&CR&
Tasklist - eclipse task list Tasklist
这是一个非常有用的插件,它能够标记文件中的FIXME、TODO等信息,并将它们存放到一个任务列表当中,后面随时可以通过Tasklist跳转到这些标记的地方再来修改这些代码,是一个十分方便实用的Todo list工具。
--help: 通常只需添加一个映射:map &leader&td &Plug&TaskList
YouCompleteMe - visual assist for vim YouCompleteMe
这是迄今为止,我认为VIM历史上最好的插件,没有之一。为什么这么说?因为作为一个程序员,这个功能必不可少,而它是迄今为止完成的最好的。从名字可以推断出,它的作用是代码补全。不管是在Source Insight,还是安装了Visual Assist的Visual Studio中,代码补全功能可以极大的提高生产力,增加编码的乐趣。大学第一次遇到Visual Assist时带给我的震撼至今记忆犹新,那感觉就似百兽之王有了翅膀,如虎添翼,从此只要安装有Visual Studio的地方我第一时间就会安装Visual Assist。
而作为编辑器的VIM,一直以来都没有一个能够达到Visual Assist哪怕一成功力的插件,不管是自带的补全,omnicppcomplete,neocompletecache,完全和Visual Assist不在一个数量级上。Visual Assist借助于Visual Studio,它的补全是语义层面的,它完全能够理解程序语言,而VIM的这些插件仅仅是基于文本匹配,虽然最近的neocompletecache已经好了很多,但准确率非常低。所以在写代码时,即使VIM用得再顺手,绝大部分情况下我还是倾向于Visual Studio + Visual Assist。
但是YouCompleteMe的出现彻底的改变了这一现状,它对代码的补全完全终于也达到了编译器级别,绝不弱于Visual Assist,遇到它是我使用VIM之后最兴奋的一件事。为什么一个编辑器的插件可以做到如此的神奇,原因就在于它基于LLVM/clang,一个Apple公司为了代替GNU/GCC而支持的编译器,正因为YouCompleteMe有了编译器的支持,而不再像以往的插件一样基于文本来进行匹配,所以准确率才如此之高。其次,由于它是C/S架构,会在本机创建一个服务器端,利用clang来解析代码,然后将结果返回给客户端,所以也就解决了VIM是单线程而造成的各种补全插件速度奇慢的诟病,在使用时,几乎感觉不到任何的延时,体验达到了Visual Assist的级别。
YouCompleteMe也是所有的插件当中安装最为复杂的一个,这是因为需要用clang来编译相应的库。因为clang在Linux和Mac平台上支持的非常好,所以在这两个平台上安装相对简单。但是clang并没有官方支持Windows,所以YouCompleteMe插件也没有官方支持Windows。可这么好的东西,活跃在Windows上聪明的Vimer们怎么可能容忍这种事情呢,有人就提供了Windows Installation Guide,已经编译好了各种版本的YouCompleteMe插件,可以参考这个Guide来安装。我并没有采用它,而是参考了这里,自己编译了YouCompleteMe,其实也不难,一步一步按照介绍的步骤,相信你也可以。
YouCompleteMe除了补全以外,还有一个非常重要的作用:代码跳转,同样可以达到编译器级别的准确度,媲美Visual Assist与Source Insight。
有了YouCompleteMe之后,是时候抛弃昂贵的Visual Assist与Source Insight了。赶快安装尝试吧:-)
--help: 只要设置好项目的.ycm_extra_conf.py,自动补全功能就可以完美的使用了。通常一个全局的.ycm_extra_conf.py足矣。代码跳转可以绑定一个快捷键:nnoremap &leader&jd :YcmCompleter GoToDefinitionElseDeclaration&CR&,很好理解,先跳到定义,如果没找到,则跳到声明处。
UltiSnips - ultimate snippets UltiSnips
这是什么?相信大家经常在写代码时需要在文件开头加一个版权声明之类的注释,又或者在头文件中要需要:#ifndef... #def... #endif这样的宏,亦或者写一个for、switch等很固定的代码片段,这是一个非常机械的重复过程,但又十分频繁。我十分厌倦这种重复,为什么不能有一种快速输入这种代码片段的方法呢?于是,各种snippets插件出现了,而它们之中,UltiSnips是最好的一个。比如上面的一长串#ifndef... #def... #endif,你只需要输入ifn&TAB&,怎么样,方便吧。更为重要的一点是它支持扩展,你可以随心所欲的编辑你自己的snippets。
现在它可以和上面介绍的YouCompleteMe插件一块使用,比如在敲完ifn时,YouCompleteMe会将这个snippet也放在下拉框中让你选择,这样你就不用去记何时按&TAB&来展开snippets,YouCompleteMe已经帮你完成。
去它的网站看看,有几个视频,绝对亮瞎你的双眼(需要翻墙)。
--help: 它和YouCompleteMe一块使用时会有一定的冲突,因为两者都默认绑定了&TAB&键,可以参考各自的help文档,将其中一个绑定到其它的快捷键,或者借助其它的插件让它们兼容。
Zen Coding - hi-speed coding for html/css Zen Coding
比一般的C/C++/Java等更多重复劳动的语言估计要算HTML/CSS这类前端语言了吧,为此前端大牛发明了Zen Coding,去这里(需翻墙)看看演示视频,相当令人震撼。如果是写前端的话,强烈推荐此插件。
--help: 可以去这里参考前端工程师们写的中文教程1,2
Syntastic - integrated syntax checking Syntastic
这是一个非常有用的插件,它能够实时的进行语法和编码风格的检查,利用它几乎可以做到编码完成后无编译错误。并且它还集成了静态检查工具:lint,可以让你的代码更加完美。更强大的它支持近百种编程语言,像是一个集大成的实时编译器。出现错误之后,可以非常方便的跳转到出错处。强烈推荐。
--help: 这是一个后台运行的插件,不需要手动的任何命令来激活它。
Python-mode - Python in VIM
如果你需要写Python,那么Python-mode是你一定不能错过的插件,靠它就可以把你的VIM打造成一个强大的Python IDE,因为它可以做到一个现代IDE能做的一切:
查询Python文档
语法及代码风格检查
所以,有了它,你就等于有了一个现代的Python IDE,各位Pythoner们,还等什么呢?
--help: 默认情况下该插件已经绑定了几个快捷键:
-& 跳到Python doc处
&leader&r -& 运行当前代码
&leader&b -& 增加/删除断点
Tabularize - align everything Tabularize
这个插件的作用是用于按等号、冒号、表格等来对齐文本,参考下面这个初始化变量的例子:
int var1 = 10;
float var2 = 10.0;
char *var_ptr = "hello";
运行Tabularize /=可得:
float var2
char *var_ptr = "hello";
另一个常见的用法是格式化文件头:
file: main.cpp
author: feihu
description: this is the introduction to vim
运行Tabularize /:/r0可得:
: main.cpp
description : this is the introduction to vim
另一种对齐方式,运行Tabularize /:/r1c1l0:
file : main.cpp
author : feihu
description : this is the introduction to vim
对于写代码的人来说,还是非常有用的。因为没有找到对应的图,所以这里就用另外一个插件的动画来代替了,Tabular的功能比它更为强大。
--help: 通常会绑定这样一些快捷键:
nmap &Leader&a& :Tabularize /&&CR&
vmap &Leader&a& :Tabularize /&&CR&
nmap &Leader&a= :Tabularize /=&CR&
vmap &Leader&a= :Tabularize /=&CR&
nmap &Leader&a: :Tabularize /:&CR&
vmap &Leader&a: :Tabularize /:&CR&
nmap &Leader&a:: :Tabularize /:\zs&CR&
vmap &Leader&a:: :Tabularize /:\zs&CR&
nmap &Leader&a, :Tabularize /,&CR&
vmap &Leader&a, :Tabularize /,&CR&
nmap &Leader&a,, :Tabularize /,\zs&CR&
vmap &Leader&a,, :Tabularize /,\zs&CR&
nmap &Leader&a&Bar& :Tabularize /&Bar&&CR&
vmap &Leader&a&Bar& :Tabularize /&Bar&&CR&
Easymotion - jump anywhere Easymotion
VIM本身的移动方式已经是极其高效快速,它在编辑器的世界中独树一帜,算是一个极大的创新。而如果说它的移动方式是一个创新的话,那么Easy Motion的移动方式就是一个划时代的革命。利用VIM的#w、#b、:#等操作,移动到一个位置就像是大炮瞄准一个目标,它可以精确到一个大致的范围内。而Easy Motion可以比作是精确制导,它可以准备无误的定位到一个字母上。
这种移动方式我曾在Firefox和Chrome的VIM插件中看到过,跳转到一个超链时就采用了同样的方式,但是由于浏览网页的特殊性与随意性,当时我没有适应。在编辑的时候就不一样了,编辑更加专注,更带有目的性,所以它能够极大的提高移动速度。享受这种光标指间跳跃,指随意动,移动如飞的感觉:-P
--help: 插件默认的快捷键是:&leader&&leader&w,效果如上图所示。
NERDCommenter - comment++ NERDCommenter
又是一个写代码必备的插件,用于快速,批量注释与反注释。它适用于任何你能想到的语言,会根据不同的语言选择不同的注释方式,方便快捷。
--help: 十分简单的用法,默认配置情况下选择好要注释的行后,运行&leader&cc注释,&leader&cu反注释,也可以都调用&leader&c&SPACE&,它会根据是否有注释而选择来注释还是取消注释。
Surround - managing all the “’[{}]’” etc Surround
在写代码时经常会遇到配对的符号,比如{}[]()''""&&等,尤其是标记类语言,比如html, xml,它们完全依赖这种语法。现代的各种编辑器一般都可以在输入一半符号的时候帮你自动补全另外一半。可有的时候你想修改、删除或者是增加一个块的配对符号时,它们就无能为力了。
Surround就是一个专门用来处理这种配对符号的插件,它可以非常高效快速的修改、删除及增加一个配对符号。如果你经常和这些配对符号打交道,比如你是一个前端工程师,那么请一定不要错过这样一个神级插件。
--help::部分常用快捷键如下:
Normal mode
- delete a surrounding
- change a surrounding
- add a surrounding
- add a surrounding and place the surrounded text on a new line + indent it
yss - add a surrounding to the whole line
ySs - add a surrounding to the whole line, place it on a new line + indent it
ySS - same as ySs
Visual mode
- in visual mode, add a surrounding
- in visual mode, add a surrounding but place text on new line + indent it
Insert mode
&CTRL-s& - in insert mode, add a surrounding
&CTRL-s&&CTRL-s& - in insert mode, add a new line + surrounding + indent
&CTRL-g&s - same as &CTRL-s&
&CTRL-g&S - same as &CTRL-s&&CTRL-s&
Gundo - time machine Gundo
现代编辑器都提供了多次的撤消和重做功能,这样你就可以很放心的修改文档或者恢复文档。可是假如你操作了5次,然后撤消2次,再重新编辑后,你肯定是无法回到最开始的3次编辑了,因为在你复杂的操作后,编辑器维护的Undo Tree实际上出现了分支,而一般的CTRL+Z和CTRL+R无法实现这么复杂的操作。
这时VIM的优势又体现了出来,它不仅提供无限撤消,VIM 7.3之后还有永久撤消功能,即使文件关闭后再次打开,之前的修改仍然可以撤消。而Gundo提供了一个树状图形的撤消列表,下方还有每次修改的差异对比,分支一目了然,相当于一个面向撤消与编辑操作的版本控制工具。有了它,你的文件编辑就像是有了一台时光机,可以随心所欲的回到任何时间,乘着你的时光机,放心大胆的去穿梭时空吧:-P
--help: 通常会将这句加入_vimrc:nnoremap &Leader&u :GundoToggle&CR&
Sessionman - session manager
这是VIM的Session Manager,作用很简单,管理VIM的会话,可以让你在重新打开VIM之后立刻进行之前的编辑状态,就像Windows的休眠一样,相信它一定是你工作的好伴侣。
--help: 我的配置如下:
set sessionoptions=blank,buffers,curdir,folds,tabpages,winsize
nmap &leader&sl :SessionList&CR&
nmap &leader&ss :SessionSave&CR&
nmap &leader&sc :SessionClose&CR&
Powerline - ultimate statusline utility Powerline
增强型的状态栏插件,可以以各种漂亮的颜色展示状态栏,显示文件编码,类型,光标位置,甚至可以显示版本控制信息。不仅功能强大,写着代码时看着下面赏心悦目的状态状,心情也因此大好。像我一样的外观控一定无法抗拒它:-)
--help: 简单实用,无需多余的配置。
终极配置: spf13
至此,我经常用到的所有插件都介绍完了,如果你也都安装尝试一下的话,相信很容易就配置出来符合你个人习惯的强大的IDE。也许有人会想,这么多的主题、个性化设置、插件,配置太麻烦,有没有已经配置好的,可以直接拿来使用呢?其实我当时也有一样的想法,在折腾了很久之后,发现_vimrc已经非常庞大且混乱,亟需整理。再后来就发现了它,spf13:
它是Steve Francia’s Vim Distribution,但是组织的非常整洁,容易扩展,并且跨平台,易于安装维护。在看到的所有_vimrc中,这是写的最漂亮的一个。只需要一个简单的脚本就可以安装,这里面利用了方便的Vundle集成了绝大部分前面介绍的插件,并且还有大量其它的插件,具体可以看它的.vimrc.bundles。
因为它完美的结构组织,你完全可以在不修改它任何文件的基础上,对应增加几个自己的~/.vimrc.local,~/.vimrc.bundles.local,~/.vimrc.before.local文件来增加自己的个性化配置,或者增加删除插件,可扩展性极强。在我的_vimrc乱成一团的情况,果断fork并安装了这个Distribution,增加了自己的一些配置,最终形成了现在的VIM。如果你也不愿折腾配置,那么完全可以直接安装它,省事方便的同时还可以学习一下它的组织结构,一举两得。
与其它软件集成
因为VIM的操作方式广泛为人们所逐渐接受,尤其是经常工作在Linux下的人们,所以它越来越多的被集成到其它一些常用的工具上,我用过的就包括:
Visual Studio
本身Windows下的gVim安装包在安装时会提供一个集成到Visual Studio中的插件VsVim,可以选择安装,但它是另开一个VIM的窗口来编辑当前的文件,我并不习惯这种方式,所以又找到了ViEmu,它完美的将VIM的操作方式集成到了Visual Studio中,让你根本感觉不到这是在使用Visual Studio。更加强大的是,它可以完美的和Visual Assist集成:
Build 1854 contains a workaround for case=58034. Create a binary registry value named TrackCaretVisibility under HKCU\Software\Whole Tomato\Visual Assist X\VANet10 and set its value to 00 for compatibility with ViEmu. (The value defaults to 01 and is created for you upon exiting VS the first time you run 1854 or higher.) Note you need to close all IDEs before editing this registry key, to avoid Visual Assist X overwriting your change when it exits.
在遇到YouCompleteMe之前,这就是我所采用的编程环境。但这是一个商业版的插件,只有30天的试用期,如果你真的喜欢它的,完全可以买下它,绝对物超所值。更为强大的是它还支持Xcode、Word、Outlook、SQL Server,这一定是一个极端的Vimer的项目:-),来看看它的动画: ViEmu
Source Insight
VIM也可以集成到Source Insight中,不过我没有去找相应的插件,只找一种和前面介绍的VsVim一样的方法:
在Source Insight菜单中,Options-Custom Commands
Run: “C:\Program Files\Vim\vim74\gvim.exe” –remote-silent +%l %f
Add之后再Options-Key Assignments,将它绑定到一个快捷键中,比如F11
这样编辑一个文件时,如果你想打开VIM时,直接按F11,它就会跳到当前行,编辑完之后关闭VIM,又回到Source Insight中。这种方法我用过一段时间,后来由于很少用Source Insight写代码,也逐渐淡忘了。
Firefox/Chrome
在狂热于VIM的年代,我曾想把一切操作都变成VIM的方式,包括上网。所以就找到了Vimperator,但终究由于上网是一种更加随性、无目的的行为,拿着鼠标随便点点完全可以了,所以也就放弃它,回归到正常的操作方式下,有兴趣的可以把玩一下,很有意思,之前谈到的Easy Motion我就在这里见识过。Chrome下也有相应的插件。
最后附上一些有趣有用的资源:
一篇非常好的为什么使用VIM的文章,请看这里
为什么VIM使用HJKL作为方向键?请看这里
为什么VIM和EMACS被称为最好的编辑器?这看这里
VIM作者的演讲:《高效编辑的7个习惯》,视频请点这里
网上可能有很多人像我之前一样,过于关注工具本身,而忽略了一个非常重要的问题:工具之所以称为工具,仅仅在于它是被人们拿来使用,只要顺手就好,用它来做的事情才是关键。对于我们开发人员来说,专业知识永远比工具更为重要。自打VIM出生以来,就有几个亘古不变的话题:
VIM vs Emasc
VIM vs 其它编辑器
VIM vs IDE
争论从来没有平息过,从远古时期的大牛们,到刚刚踏入VIM阵营的我们,也从来没有一个结论。也许很多人争吵已经不再是单单的编辑器之争,而是出于维护心目中最好的工作方式,甚至哲学之争。但对于大部分人来说,只要你的工具足够称手,那么多写几行代码,多看些书,远比参与这些无休止的争吵强得多。但如果你更深一步,开发出更好的编辑器,或者插件,那又另当别论了。
这篇教程至此也将告一段落,说是教程,本文却并没有详细的介绍如何入门,反而回忆了一大段个人学习VIM的经历,然后介绍了常用的优秀插件。也许看完本文,你并不一定能够学会VIM,但是它提供了很多比本文更有价值去学习的资源,给了你一个整体的认识,让你看到VIM可以强大到什么程度,避免走很多弯路。看完本文之后,你能够知道如何入门,如何去选插件,我想,对于本文来说,这就够了。
然后list篇
1 创建: []
注意区别()是元组,元组是不可变得
2 转意字符:跟c语言差不多,但是要注意python 换行用\,后面不要有空格!!
+ 两个或多个list组合
* 重复多遍里面的元素
[] 通过索引获取字符,跟c语言差不多,不过这里的下标可以是负数,从右边开始数
[:] 截取左闭右开的字符串,这个符号也可用于其他地方
判断该串是否包含指定串
not in 判断该串是否包含指定串
4 内置函数
见官方文档吧= = 常用一般都是.count() , .reverse() , .sort
这里说排序的函数sort 和 sorted区别:
sort是可变对象list , dict的方法,无参数无返回值。
sorted 是python内置的排序函数, 参数为
sorted(iterable[,cmp,[,key[,reverse=True]]])
第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list)。
1)cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;如
果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。
2)key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
3)reverse是一个布尔值。如果设置为True,列表元素将被倒序排列。
通常来说,key和reverse比一个等价的cmp函数处理速度要快。这是因为对于每个列表元素,cmp都会被调用多次,而key和reverse
只被调用一次。
5 goolge python class exercise
不做作业不知道,一做吓一跳。google python class exercise还是让我学到好多技能。
首先先说说字符串:
1 创建: 引号即可创建
2 转意字符:跟c语言差不多,但是要注意python 换行用\,后面不要有空格!!
+ 连接运算
* 重复输出,相当于幂运算
[] 通过索引获取字符,跟c语言差不多
[:] 截取左闭右开的字符串,这个符号也可用于其他地方
判断该串是否包含指定串
not in 判断该串是否包含指定串
格式控制符
''' 三引号可以用来写多行字符
4 内置函数
见官方文档吧= = 常用一般都是.lower(), .split()
5 goolge python class exercise
# A. donuts
# Given an int count of a number of donuts, return a string
# of the form 'Number of donuts: &count&', where &count& is the number
# passed in. However, if the count is 10 or more, then use the word 'many'
# instead of the actual count.
# So donuts(5) returns 'Number of donuts: 5'
# and donuts(23) returns 'Number of donuts: many'
def donuts(count):
# +++your code here+++
Str = 'Number of donuts: '
if count &= 10 :
Str += 'many'
Str += str(count)
return Str
# B. both_ends
# Given a string s, return a string made of the first 2
# and the last 2 chars of the original string,
# so 'spring' yields 'spng'. However, if the string length
# is less than 2, return instead the empty string.
def both_ends(s):
# +++your code here+++
if len(s) & 2 :
Str += s[0]
Str += s[1]
Str += s[-2]
Str += s[-1]
return Str
# C. fix_start
# Given a string s, return a string
# where all occurences of its first char have
# been changed to '*', except do not change
# the first char itself.
# e.g. 'babble' yields 'ba**le'
# Assume that the string is length 1 or more.
# Hint: s.replace(stra, strb) returns a version of string s
# where all instances of stra have been replaced by strb.
def fix_start(s):
# +++your code here+++
front = s[0]
back = s[1:]
s = back.replace(front, '*')
return front + s
# D. MixUp
# Given strings a and b, return a single string with a and b separated
# by a space '&a& &b&', except swap the first 2 chars of each string.
'mix', 'pod' -& 'pox mid'
'dog', 'dinner' -& 'dig donner'
# Assume a and b are length 2 or more.
def mix_up(a, b):
# +++your code here+++
mix_a = b[:2] + a[2:]
mix_b = a[:2] + b[2:]
return mix_a + ' ' + mix_b
# D. verbing
# Given a string, if its length is at least 3,
# add 'ing' to its end.
# Unless it already ends in 'ing', in which case
# add 'ly' instead.
# If the string length is less than 3, leave it unchanged.
# Return the resulting string.
def verbing(s):
# +++your code here+++
if len(s) & 3:
elif s[-3:] == 'ing':
s = s + 'ly'
s = s + 'ing'
# E. not_bad
# Given a string, find the first appearance of the
# substring 'not' and 'bad'. If the 'bad' follows
# the 'not', replace the whole 'not'...'bad' substring
# with 'good'.
# Return the resulting string.
# So 'This dinner is not that bad!' yields:
# This dinner is good!
def not_bad(s):
# +++your code here+++
if s.find('not', 0, len(s)) != -1 and s.find('bad', 0, len(s)) != -1 \
and s.find('not', 0, len(s)) & s.find('bad', 0, len(s)):
return s[0:s.find('not')] + 'good' + s[s.find('bad')+3:]
# F. front_back
# Consider dividing a string into two halves.
# If the length is even, the front and back halves are the same length.
# If the length is odd, we'll say that the extra char goes in the front half.
# e.g. 'abcde', the front half is 'abc', the back half 'de'.
# Given 2 strings, a and b, return a string of the form
a-front + b-front + a-back + b-back
def front_back(a, b):
# +++your code here+++
n = len(a)
if n % 2 == 0:
n = n // 2
a_front = a[:n]
a_back = a[n:]
n = n // 2
a_front = a[0:n+1]
a_back = a[n+1:]
n = len(b)
if n % 2 == 0:
b_front = b[0:n]
b_back = b[n:]
b_front = b[0:n+1]
b_back = b[n+1:]
return a_front + b_front + a_back + b_back
1 先修改源:
修改 /etc/apt/source.list文件 (sudo vim source.list)
natty main
2 然后跟新源:
(sudo apt-get update)
3 安装即可:
(sudo apt-get install tinyos*)
4 其他傻逼操作网上都有(不想写啦)
5 说个重点:
5.1 用管理员权限才能make telosb so(chmod -R 777 tinyos*) 傻逼的把整个目录都变成可执行的吧.
(看到这里加句话: 文件的权限有10位数表示,其中第一位是表示文件类型的,后就为是表示
文件权限的,三个三个一组,分别为所有者,用户主,其他用户。所有着、用户组或其他用户。
所有者就是创建文件的用户,用户是所有用户所创建的文件的所有者,用户可以允许所在的用
户组能访问用户的文件。)
5.2 make telosb 会报以下错误
cc1: error: unrecognized command line option "-mstrict-align"
cc1: warning: -mdisable-hwmul deprecated, use -mmpy=none
nesc1: internal error: couldn't define builtin macros – exiting
。。。。。。
In file included from /opt/tinyos-2.1.1/tos/platforms/telosa/PlatformLedsC.nc:38,
from /opt/tinyos-2.1.1/tos/system/LedsC.nc:38,
from BlinkAppC.nc:45:
In component HplMsp430GeneralIOC’:
/opt/tinyos-2.1.1/tos/chips/msp430/pins/HplMsp430GeneralIOC.nc:227: syntax error before;’
/opt/tinyos-2.1.1/tos/chips/msp430/pins/HplMsp430GeneralIOC.nc:321: cannot find P30′
/opt/tinyos-2.1.1/tos/chips/msp430/pins/HplMsp430GeneralIOC.nc:322: cannot findP31′
。。。。。。
因为傻逼的msp太新还是咋的,听说这比较适合make mica不适合make telosb.所以安装下原来的
(下载deb或者rmp包吧,自己安装,源里没有找到)
sudo apt-get remove msp430-gcc-tinyos
根据依赖关系,系统会将msp430-gcc-tinyos msp430-libc-tinyos msp430-optional-tinyos msp430-tinyos msp430mcu-tinyos tinyos-required-msp430一起卸载掉。
(这个是amd处理器的吧,我是amd + ubuntu 12.04. 如果遇到前一个不能使用,则使用下一个,后面同理)
msp430-binutils-tinyos_2.17-6.deb
msp430-gcc-tinyos_3.2.3-6.deb
msp430-libc-tinyos_cvs-6.deb 下载:
msp430-optional-tinyos_2.1-_all.deb
msp430-tinyos-base_2.1-_all.deb
msp430-tinyos_2.1-_all.deb
tinyos-required-msp430_2.1-_all.deb
将这7个文件放在一个文件夹下,执行 sudo dpkg -i *.deb
安装完成后再 make tinynode 或 make telosb 就正常了。
Taglist 使用
以分割窗口形式显示当前的代码结构概览,增加代码浏览的便利程度的vim插件。
在Vim中加载代码文件后,可以使用以下命令控制taglist
1: TlistOpen(直接Tlist也可)打开并将输入焦点至于标签列表窗口,效果如上图所示
2: TlistClose关闭标签列表窗口
3: TlistToggle切换标签列表窗口状态(打开←→关闭),标签列表窗口是否获得焦点取决于其他配置
4: ctl-w+w或ctl-w+ 方向键窗口切换(taglist本质上是一个vim分隔窗口,因此可以使用
ctl-w系列快捷键对窗口进行切换操作)在Taglist窗口主要有以下操作
5: 按F1:打开帮助
6: 回车键:跳到光标所在的标记的定义处(如将光标移到main函数,按回车键)
7: o:新建一个窗口,跳到标记定义处
8: p:预览标记定义(仍然在taglist窗口)
9: 空格:显示标记的原型(如函数原型)
10: u:更新标记列表(比如源文件新增了一个函数,并在保存后,可在taglist窗口按u)
11: s:选择排序字段(暂时我也不知道什么意思)
12: d:删除光标所在的taglist文件(如用vi打开了两个文件f1.c,f2.c可以删除f1.c的标记)
13: x:n放大/缩小taglist窗口
14: +:展开(指标记)
15: -:折叠
16: *:全部展开
17: =:全部折叠
18: [[:将光标移到前一个文件的起点
19: ]]:将光标移到后一个文件的起点
20: q:退出taglist窗口
21: F1:关闭帮助
vim buffer 切換
命令 :ls 可查看当前已打开的buffer
命令 :b num 可切换buffer (num为buffer list中的编号)
:bn -- buffer列表中下一个 buffer
:bp -- buffer列表中前一个 buffer
:b# -- 你之前所在的前一个 buffer
:bdelete num -- 删除第num编号buffer

我要回帖

更多关于 逝者如斯夫 的文章

 

随机推荐