【总结】办公&编程&学习你可能需要这些小利器!
2018-07-07 14:33 bluemapleman 阅读(937) 评论(0) 编辑 收藏 举报偶然想到自己从最开始的编程小白,什么都不懂,看啥啥新鲜的时期,到现在颇有“蓦然回首,那人却在灯火阑珊处”的感觉,遂想整理一下这一路学习我个人发现的在办公、编程或者学新知识等方面针对可能遇到的各种情况,或者需要解决一些问题时比较好用的工具或者软件,既算是自己的一个总结,也希望能给正在碰到我曾经碰到相似情况的小伙伴一个可能的解决方案吧。
注意:本文只是简单列示笔者根据自身经验所推荐的工具、技术等简要信息,具体的使用方法或者技术细节都以超链接别人的详细教程形式给出,或者请大家自行搜索学习!
办公
1. Markdown写博客/日记/blablabla...
原来看github时,总觉得项目下的那个文档编辑得蛮好看的,但一直不知道那个就是markdown写出来的,所以我之前也一直不知道README.md那个文档是干嘛用的。而学会Markdown之前一直用word写稍微需要点美观排版要求的文档,但总感觉排版是一件很烦人的事情,直到知道了有markdown这么友好这么简单的写作符号系统,才真算是从word那儿解放了。
Markdown:是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。
简单来说,你不再需要关注排版问题了,只要你按照markdown的简单符号系统来安排文本的结构,直接得到的观感效果就已经是比较赏心悦目的了。而其markdown本质上是将你写的文档编译生成html页面,故也可以方便地写完之后跟他人共享。
另外,无论是插图,引用,插入超链接,插入代码段乃至插入公式,这些写文档常用的功能,markdown都能轻松完成,只要掌握最基本的相关语法就可以。
而相似的latex就更加强大了,但是相对也复杂一些,学习稍微困难一点,但自定义性更强,更多的用来写学术论文,或者做专业排版,追求高要求的美观时会很合适。一般的文档的话,用markdown就可以满足大多数情况了。
入门学习周期估计:认真钻研一天即可。
2. Excel做大批数据复杂处理——VBA
白领族包括大学生肯定很容易碰到需要对Excel里的大批数据进行某些处理的情况,像数据量小的或者处理不复杂的时候,调用一个Excel提供的库函数SUM,AVG啥的,手工搞一下也没什么问题。但是一旦处理的逻辑稍微有点复杂,或者数据量偏大时,可能手工就会显得很力不从心了。
比如有一次我的一个同学让我帮他弄一个Excel文件,说文件里面因为做了一些记录删除,导致有很多空行,他想把空行都删掉让数据聚集在一起,但因为有几千条数据,空行少说也有几百个,一个个来太麻烦了。而我略作思考,用VBA写了个很简单的循环,大概思路是,每遇到空行,记下空行位置i,然后找到下一个非空行j,然后把非空行j的内容赋值给i,直到遍历完所有数据。我大概花了5分钟写完这个二十行左右的程序,然后一跑,瞬间解决问题,还赢得一顿请吃饭。哈哈!
回到正题!那么VBA到底是什么?
VBA(Visual Basic for Applications),即用于应用的VB语言,是内置于Office办公软件里的一套程序开发语言。考虑到大家现在的语言技能树应该都不太可能点在VB上,但也没关系,VBA的语法很简单,但凡有任何其它高级语言基础的同学,看一下入门教程一下就能明白,也就是基本符号,变量声明,if/else和for/while结构,再主要就是和excel表格本身的一些搭配,比如用cells或者range去获取某个单元格的值或者赋值。
所以,凡是感觉数据量比较庞大,以及处理稍显复杂的excel数据处理,都可以试试看能不能用VBA的方法解决。以我个人经验,凡是你能用步骤清晰描述出来处理数据步骤的任务,都可以用VBA完成,这也就是编程方便生活的本质嘛!
另外,vba还可以做些gui,虽然可能难得做得比较美观,但是拖拖拽拽一下就能成一个看起来不错的小窗口,并且轻松地定制一些窗口事件。不过,由于vba是内嵌在office中的,所以不能单独导可以运行的gui程序,还是必须打开办公软件后才能运行。
不得不说,VBA真的帮我个人解决了好多问题,也让我得以帮身边的同学解决了很多问题,赢得一片美赞哈哈。。。。
入门学习周期估计:认真钻研一个星期即可。
编程
1. sublime编辑器
如果你需要在多门编程语言之间切换,但又不想为了每个语言都安装一套庞大的IDE,那么轻便小巧强大的sublime绝对是一个很不错的选择。
看这货自带的编译系统,就知道这货有多么全能了。
另外,sublime最逆天的应该还属它的丰富强大的插件系统,可以让它转眼拥有各种各样方便开发写代码的功能。
总之,对我来说,我从此写c++,latex,markdown,python简单小代码时全部都是直接打开sublime,呼呼写好,command+b就跑起来!爽!
2.墨刀——原型设计利器
对于墨刀,这真的是我最相见恨晚的一款好产品。曾经因为参加一个学校的创业比赛,展示时只拿出了点子和p的几张简单的app的图,结果评委觉得我们的创意很残缺,是个空壳,因此否了我们。要是当时我知道有墨刀这款产品的话,相信是一定可以让评委满意的。
那么墨刀,到底是什么?答:一款快速生成应用产品原型的工具。
这里就需要了解什么是产品原型,为什么我们需要快速生成产品原型?
就如同我之前说得创业比赛的事情,我们团队有了一个创业主意,需要把它具象化成一个app应用,这个点子才能真正发挥它的价值。但是,因为比赛的时间比较紧,能做app开发的技术人员也没有,那我们怎么才能在展示的时候给观众和评委展示我们的app成效呢?当然,你可以选择外包出去给别人做,但是这样成本会比较高,不确定性也大。
于是,如果可以回到过去,我就一定会说,我们可以用墨刀做个app原型出来~~!原型就是一个比较简单的示例,它并不具备最终产品那样完备的功能,使用它的作用和目的主要是为了让其它人能够直观快速地了解它的方方面面。而这正对应了我们的需求:我们暂时不能做一个真的app,但是我们可以按照我们的想法,做一个示范的原型出来给评委看。
具体而言,我们可以使用墨刀,很快做出一个与我们最终app成品十分想似的一个可交互的应用示例。我们可以用墨刀方便地编辑我们构想的app样貌,利用墨刀提供的各类元素、图标快速生成好看的界面,并且实现不同页面的跳转,并且我们在墨刀生成的原型上,可以像使用真实的app一样到处点按画,并且也会产生相应的反馈。
一般而言,做产品的人员是最需要这款工具的,因为产品需要很快地把他对于一个产品的模样的构想展示给客户以及自己这边的技术人员看。
墨刀官网。
3.Jupyter Notebook:python的超强编程笔记本
写程序最怕啥?调试bug!因为你不知道你写了一大块程序,可能什么地方就会没注意出一点问题,而如果你是日常在一般的环境里面编写调试python程序,你可能需要通过注释其它代码,或者单独揪出错误代码来运行的等等方式来调试,确认各部分的正确性,最后才能定位错误的原因。总而言之,是比较麻烦的。
于是,这个时候有个叫jupyter notebook的东西出来了,跟你港,它可以让你的代码直接分段运行,而且每段运行结果都是共享彼此的变量,所以你出错调试时,直接把不同部分的代码分别放在不同的部分里面去按顺序运行就ok,每段代码的运行结果会给你列示出来,你一个个看哪个结果不对劲就行~~或者你一开始写程序的时候,就直接分段写,写完一段运行一下看结果对不对,然后换个部分,写下一段的新代码。
另外,你是不是偶尔会觉得代码的注释只能用文字表达不够具体,不够形象?是不是如果程序注释可以像word一样进行字体颜色编辑,甚至可以插图,插链接,会特别爽呢?ok,notebook可以,它支持markdown语法,只要你和写代码一样写完markdown代码,运行一下就有效果了。所以,不管你是oython初学者,需要学习过程中做许多笔记,还是写比较大规模的python程序,想写比较清楚的程序注释,都可以用notebook来做。
ps:记得之前上Andrew Ng的Coursera上的deep learning课程时,发现Ng也在用notebook来布置作业,我就觉得自己真是有眼光prprpr~~~
学习
1. 菜鸟教程 & W3CSchool
零基础入门或者老手有时候查下语法都可以用这两个网站,涉及的技术很全面很广,当然,W3CSchool会偏建站方面一些。服务端技术,网站开发HTML+CSS+JS,数据库......我一眼看去,好想没看到什么在菜鸟点不了的技能树哈哈。。
2. 机器学习/深度学习-台大李宏毅教授课程
Andrew Ng的Coursera课程就不用说了,被推荐烂了,入门机器学习的黄金教程。跟着大佬走总是没错的。
( 但也提一下,Ng的ML课有两版,一个是在斯坦福的课堂录制课,在网易公开课上有,画质略感人,不过学起来还是没什么问题的,而且这个版本的课相对数理部分讲的更多,还有助教的补基础课,不过神经网络部分被一带而过了。而Coursera上的版本就相对观感优良,ppt上也有很多公式推导,另外也有每节课后的小考题以及matlab编程作业,非常有助于提高动手能力,加深课程内容理解。另外,神经网络部分讲的也全面了,估计很大程度上是因为coursera录课时,Ng的注意力也已经转到深度学习上来了,所以认为有必要预先给大家普及一下Neural Network。
PS:写本文时,Ng的深度学习系列课程也已经在Coursera上推出了,个人旁听学了第一门后感觉质量依然很高,和ML课感觉差不多,也推荐想入门深度学习的小伙伴去学习一下。)
再就是笔者在这里想极力推荐的国立台湾大学教授李宏毅(Hung-yi Lee)的机器学习/深度学习系列课程,这是李教授的个人页面,上面有李教授的课程资源,包括课程ppt,讲课视频以及作业。都不用FQ,不过视频的开始加载稍微有点慢,“有条件”的同学可以去youtube上看。
李宏毅教授的课程最主要的特点就是:知识非常前沿,讲解清楚,讲课风格风趣。
这是李教授自主上传到Youtube上的课程视频,可以看到,已经有了近几年很火的对抗生成网络GAN的各种衍生模型介绍了,可见其前沿性。另外像CNN,RNN,LSTM等模型,集成学习、增强学习、迁移学习等概念,均有相应的课程进行详细的讲解,真的非常全面。
另外李宏毅教授做的ppt都非常生动详细(教授曾经课上吐槽自己ppt做得太细致233),把一些很复杂的算法过程或者模型的原理都分解得一清二楚,大家一看便知。
给大家截一个youtube上的视频下的网友评论感受下:
看不懂中文的外国友人都说懂了!233333!
而且教授偶尔还会在评论区回答一下网友的问题,简直不要太好!
3. Java学习书籍-《疯狂Java讲义》
真没收广告费,但是一直学java学的一知半解,不浅不深的我再后来被人推荐这本书后算是如获至宝,因为确实感觉写得太好了!
首先,知识点覆盖全面。多线程、网络编程、泛型、集合框架、工具类等等高级语法都有非常详细的讲解。当然详细是一点,更本质的是它不啰嗦,并不是用大量篇幅或者图画去解释演示一些无足轻重的东西——它延伸讲的每个知识点都是很具有实际意义,或者Java面试时很可能考到的知识点。尤其是书中有很多关于Java虚拟机内存里各类情况的讲解,总配合着精细的插图,非常有助理解。
另外,本书用了很多很多生动活泼的例子去解释一些比较难理解的部分,确实都非常大程度上地帮助了理解。而且书中有很多类似下图这样的问答小部分,提出的问题往往都是一些我们可能一般不会注意,但是确实很值得思考挖掘的一些比较深的问题。
总之,要我个人推荐一本java学习书籍,我一定毫不犹豫推荐这本。另外也推荐大家买实体书,个人感觉实体书看起来还是更舒服,有看书的感觉。
4. 免费下载SCI文献-Scihub
大学生应该经常有需要下sci文献的需求,当然百度学术可以免费下不少文献,不过还是有很多sci文献不能方便地直接下,那么这时你就可以尝试用scihub了!
scihub是一个俄国人做的网站(如下图),不需要看懂俄文,主要将你想下的文献的名字/DOI输入到文本框搜索,页面就会直接跳转到对应文献的pdf阅读页面,你也就可以下载了。(有时候跳转过程会让你输一下验证码)
2017.12.29补充更新:
评论里看到一位博士同学的请求,因为学术需要,他也有使用scihub的需求,不过发现scihub的网站经常换域名,很是郁闷,于是做了一个网站呀!谷歌,网站每5分钟检测一次scihub的可用网址,同时也更新可用的无验证码的谷歌以及谷歌学术镜像网址。同时也能方便更多的科研工作者。
帮助推广网站的同时,向这位热心的同学表示感谢~~
后面想到新的就会继续更新!欢迎各位小伙伴一起交流!