Skip to content

Latest commit

 

History

History
executable file
·
463 lines (268 loc) · 25.8 KB

自由世界的地图.mkd

File metadata and controls

executable file
·
463 lines (268 loc) · 25.8 KB

====================================华丽的分割线====================================

大神们凭借他们的远见卓识和不懈努力,创造了广袤的自由世界,我们希望提供一张经过验证的地图,让新接触自由世界的人可以免于无谓的迷茫,又不至于过于详细而失去探索的乐趣。文中所列技能可能需要点亮前置技能才可学习,我们会尽可能的指出,另外,本文后出现的技能可能依赖前面的技能。

我们竭力使本文完善,如果有需要修改的地方,请提交补丁,我们会尽快合并。作者们怀着慢慢的善意,写下这篇文章,并不代表他们自信自己无所不知、对未来的每一项预见都是正确的,我们希望你不迷信本文的任何一个字,包括华丽的分割线。

====================================计算机小白====================================

本段主要讲解Ubuntu基本操作和计算机相关的基本知识,看完之后应该满足日常使用,如上网、听音乐等。 ##你好,小白,Ubuntu适用群体

尽管有这样或者那样不实的传闻,说Ubuntu如何简单,Linux如何高端,开源精神如何伟大,软件的自由对人类的自由如何重要。但是作为用户,更应该关心软件是否丰富,日常使用的主要还是QQ、Office、中文输入法、LOL等工具,这些在Ubuntu之下都没有良好的解决方案。所以,目前Ubuntu只适用于研究人员和程序员。

##你好,小白,硬件

土豪君,如果你想买一台新的笔记本电脑,建议选择配置:

  • 集成显卡,独立显卡对Linux的支持还不足够的好,反正你也没有游戏可以玩
  • SSD,机械硬盘也可以,SSD比较快

如果你已经有一台电脑,希望你有

  • 主流的配置,再也不要问我你有一台32MB内存的电脑,该怎么安装Linux据说Linux很省资源之类的了,手机都2G内存了

##你好,小白,CPU位数

CPU根据型号不同,通常分为32位和64位,2005年之后的CPU一般都是支持64位的,64位的CPU可以管理4G以上的内存。如果你的电脑内存不足4G,建议选择32位版本的操作系统,否则应该使用64位的。

关于PAE

虽然4g以上的Linux系统可以使用PAE内核来实现更高的内存容量兼容,但是性能是关键,如果您运行的关键程序是32bit的并且必须在32bit平台上运行这种情况下建议选择,否则可以通过安装32libs来实现程序的运行。

##你好,小白,发行版选择

Linux是操作系统的内核,搭配不同的软件包、桌面环境,才可以制作成为现代意义的操作系统。我们推荐最新的Ubuntu桌面版,理由如下

  1. Ubuntu桌面版提供更新、更全的软件仓库,无论是开发还是科研,这样可以节约大量的时间
  2. Ubuntu提供软件商店,并且有一大票合作伙伴,你可以用上官方版本的WPS、Steam等
  3. Ubuntu默认的桌面环境Unity对笔记本很友好,小小的笔记本屏幕可以展示更多的东西
  4. Ubuntu14.04版本非常稳定
  5. Ubuntu桌面版用户量非常大,搞不定的问题可以方便的在Google、Stackoverflow、Ubuntu中文论坛等地方找到答案,注意,百度的答案鱼龙混杂,大多数是坑爹的

如果你是服务器用户,我们推荐最新的Ubuntu服务器版,理由如下

  1. Ubuntu服务器市场占有率世界第一,有搞不定的问题可以Google到
  2. 提供众多的软件包,可以节约大量的编译时间
  3. 对日益普及的云服务支持非常好,无论是Hadoop还是Stackoverflow,当然还有Docker
  4. 非常稳定

##你好,小白,操作系统安装

操作系统的安装并不简单,在电脑城价值50到100人民币之间,如果你只有一台电脑,希望安装双系统,就更困难一点。

我们不推荐用户靠自己摸索如何安装操作系统,这是一项过时非常快的技术,不值得投入大量的时间。我们推荐的安装方式有

  • 找师兄师姐或者本地的社区提供帮助,如果你长的足够漂亮,这样肯定没有问题,如果不是,请继续往下看
  • 使用wubi安装,但是这种方式有些过时,不推荐使用
  • 使用官方提供的U盘制作工具,制作U盘启动盘安装

正常情况下,你需要至少两个分区

  • swap分区,大小约等于你的内存大小
  • ext4格式的分区挂载到/

如果你希望将个人的资料放置于单独的分区,以便重新安装操作系统后还能使用,你需要

  • ext4格式的分区挂载到/home(重新安装操作系统时继续将该分区挂载为/home即可)

我们不推荐的安装方式有

  • easyBCD,我们群经常会有很多小白看到百度贴吧的这一神器,然后安装失败
  • 硬盘安装,过程非常复杂,买个U盘好吗
  • 虚拟机,由于Ubuntu桌面使用了硬件加速,在虚拟机运行的效果并不好,是的,你的电脑20核、64G内存分给虚拟机一半都没用,如果你坚持,我们推荐VMware,开源免费的Virtual Box效果更差一些

PS:再另外一种情况下虚拟机是被推荐的,并且推荐Virtual Box。

非生产环境服务器 没有安装图形界面 学习比较复杂的环境配置 学习硬盘管理

##你好,小白,命令行

截止到这里我们假设你已经安装好了操作系统,并顺利进入了界面,如果没有,请认真审视操作系统安装中建议找别人帮忙那一条。

我们不推荐命令行,除非你对操作系统很熟悉并且知道你在干嘛。尤其不推荐从百度随便贴几行命令,然后执行管理员权限,多数情况下,你会毁掉操作系统。

##你好,小白,网络连接

截止到这里我们假设你已经安装好了操作系统,并且顺利的进入了桌面。(没错,这是前置依赖的声明)接下来让我们连上互联网吧。

  • 已经配置好路由器或者无线路由器,并且使用DHCP服务(就是你的手机、windows系统不需要设置什么东西,连上就能上的那种),插上网线或者点右上角的网络图标选择无线热点,就可以连上互联网了
  • 直接连猫需要DSL拨号上网,你需要点击右上角网络图标,点编辑,在弹出的页面中添加DSL连接,顺便补一句,如果你是家庭用户,并且你周围没有Ubuntu用户,请重新审视Ubuntu适用群体那一段
  • 锐捷等各种客户端再MenTOHust项目中提供了支持。

FAQ(我们经常回答的问题)

  • 有线网络环境,请再三确认网线已经插上并且闪呀闪呀的
  • 无线网络环境,不要紧张,请再三确认自己已经打开无线网卡(就是你没有在windows下面把无线网卡关了或者把无线网卡的硬件开关关了)。如果确定已经打开,请连上有线网,继续往下看到驱动那一节。

##你好,小白,下载源

截止到这里我们假设你已经连上了互联网。

软件源是一个放着各种各样软件的服务器,我们需要连上它,从上面下载一个列表,列表里面记载着它上面有哪些软件。现在,点击左侧面板的软件中心的图标。打开编辑菜单,找到最下面的软件源菜单,打开,在弹出的页面中选择一个国内的源,并且把其它软件列的勾全部去掉(因为我们在天朝,有些服务器连不上)。该过程可能需要输入密码,原因继续往下看。

之后,软件中心就会多出一个Progress的图标,表示正在下载软件列表,该过程中如果发现错误,可以尝试在终端(点桌面左上角那个写轮眼图标,在弹出的框里搜索,跟Mac的Finder很相似)执行

sudo apt-get update

查看错误信息。

FAQ:

  • Hashxxx mismatch,通常使因为你的网络提供商缓存了过期的信息,常见于小的提供商如长城宽带等,没有好的解决方案。

##你好,小白,语言包

截止到这里我们假设你已经设置了软件源并且下载了软件列表。接下来,会弹出提示,让你安装语言包。你也可以在设置,语言里面安装。

##你好,小白,系统更新

在下载软件列表之后还会提示你安装更新,实际上,Ubuntu会定期的从你配置的软件源下载软件列表,然后跟本地版本对比,看是否需要更新。你可以执行

sudo apt-get upgrade

手动完成 ##你好,小白,驱动

截止到这里我们假设你已经安装完系统更新,如果你可以顺利的连上无线网络,并且没有独立显卡,可以跳过本段。

打开软件中心,找到编辑菜单,软件源选项,然后打开,在弹出的页面中找到附加驱动,选择经过验证的(后面会标明tested)驱动,安装。

FAQ:

  • 手动下载的硬件提供商提供的驱动,黑屏了怎么办?不知道哎

##你好,小白,输入法

截止到这里我们假设你已经开机并且安装了语言包。

推荐的输入法有两种:

  • 系统自带的,点击桌面右上角的键盘图标,添加Pinyin输入法
  • 搜狗拼音输入法,安装之后,打开系统设置(就是那个齿轮图标),进入语言选项,设定输入法为fcitx(linux版本的搜狗是在fcitx之上开发的),重新启动电脑,点击键盘图标,添加输入法,在弹出的界面中找到sogou(如果你是英文版用户,需要点击显示其它语言的输入法按钮)

##你好,小白,软件安装

截至到这里我们假设你已经连上了互联网并下载了软件列表。推荐的软件方式有

  • 软件中心,里面的软件多数是经过验证的,还有一个评分可供参考

其它的安装方式:

  • 下载deb包安装,下载对应版本(32或者64)位的,请注意这种安装方式可能破坏系统的依赖关系
  • sh安装文件安装,不推荐
  • 压缩包直接拷贝到指定目录,不推荐,确实需要请继续往后看
  • 编译安装,极度不推荐,确实需要请继续往后看

参考前提:您是新手

##你好,小白,文本编辑器

截止到这里我们假设你已经安装了输入法。我们推荐的文本编辑器有

  • gedit(Text Editor),在桌面左上角搜索就可以看到,简单易用

  • sublime3,官方目前不支持中文输入,如果你是程序员,你肯定喜欢它。另外,它使收费软件,而且很贵

  • vim,在软件中心搜索vim即可安装,使用方式参考《a byte of vim》,该书对vim的讲解非常详细,后半部分可能有些过时。还可以参阅vim自带的手册,在终端输入

    vimtutor

##你好,小白,浏览器

我们推荐的浏览器有

  • chrome,内置flash播放器

  • firefox,系统自带,具有更好的扩展性,界面跟Ubuntu更搭

##你好,小白,音乐播放器

我们推荐的音乐播放器有

  • Rhythmbox,系统自带,界面可能不符合windows用户的习惯
  • 豆瓣fm,有很多有有意思的频道

##你好,小白,支付

目前可用的支付方式有

  • 支付宝,包括手机客户端的二维码支付和桌面版的插件,桌面版插件安装请继续往下看到sh文件安装

##你好,小白,解压缩

ubuntu对常见的格式支持的非常好,双击即可打开压缩文件,如果缺乏对应的库系统会提示安装。

##你好,小白,磁盘管理

推荐的磁盘管理工具有

  • gparted,在软件中心下载安装,谨慎使用

##你好,小白,Office

推荐的Office工具有

  • WPS,下载deb包双击安装即可。
  • 自带的LibreOffice,勉强可用

##你好,小白,图片处理

推荐的图片编辑工具

  • GIMP,从软件中心下载,具体的使用教程请参考Photoshop教程的视频,另外官方网站也提供了详细的说明。
  • InkScape 从软件中心下载,具体使用网上有很多教程,全矢量化处理,非常好用。

##你好,小白,3D动画

推荐的3D制作工具

  • Blender,从软件中心下载

##你好,小白,QQ

QQ长期不支持Linux,推荐使用

不太推荐的有:

FAQ:

  • QQ不好用怎么办?不知道。

##你好,小白,wine 极度不建议。 原因:不稳定 ##你好,小白,且容老夫来补一刀吧 Ubuntu软件丰富(仅仅对开发者和研究人员而言)

====================================进阶小白====================================

本段包含一些进阶的操作,我想普通用户并不太需要这些。 ##你好,进阶小白,权限管理 Ubuntu默认的不是管理员权限,执行安装软件等操作时需要输入你的密码。 ##你好,进阶小白,新立得软件包管理 在软件中心有一个更强大的包管理工具,非常不建议小白使用,尤其是处女座。 ##你好,进阶小白,FTP上传下载 建议使用软件:

  • FileZilla,从软件中心下载。

##你好,进阶小白,文件系统 百科详细解释 Linux介绍中的解释 ##你好,进阶小白,文件权限 我们认为对此最好的解释 ##你好,进阶小白,command 只需要看一眼常用命令就行了,百度一大把。 ##你好,进阶小白,make 主要分为automake的安装参考大神文档 另外最近还有一个cmake火起来了。参考大神文档

====================================计算机相关书单====================================

本段写给有志于讲编程作为全职工作或者工作中大量使用编程的人。不同语言之间没有明确的依赖关系,同一种语言书目之间有从易到难的关系。

得益于上个世界对语言的研究,人类发现不需要使用机器码(010101010001)编程,可以使用类似于自然语言的人造语言编写程序,然后经由计算机翻译成机器语言。根据不同的人爱好不同,语言经常被分为强类型、弱类型,解释型、编译型,对象导向的、过程导向的、函数导向的等等。这些语言相互影响,相互学习,每几年会有一个新的标准(比如C++99和C++11差异就非常大)。

我们建议你多学几种(这个就跟恋爱一样,只有初恋比较青涩,之后越来越顺,一马平川,虽然女孩子分为很多类型),一方面,在不同的场景你需要不同的女孩子,啊,不,计算机语言(比如操作系统用C写,网页交互用JavaScript)。另一方面,特定的计算机语言本身限定了你的表达方式,多了解它们的区别有利于打开思路。

很多编程的教材都类似于五步画马法//TODO,加一个图片的链接,我们更希望提供适合自学的,没有各种各样的坑,不需要丰富的想象力脑补就可以学会的书单。

##从上倒下依次看,C C语言经历了漫长的演化,现在的它已经不是以前的样子了,但是它仍然适合做你的第一或者第二任女友,啊,不对,计算机语言。所有C语言已经42岁了所以已经不是女神了的思想都是异端邪说。

我们推荐的书:

##从上到下依次看,Python Python简单易用,非常适合带来你的初吻,啊,不,跟计算机的第一次接触,但是有两个非常不一样的标准,python 2和python 3,鉴于本文写于2014年中旬,我们推荐python 3。

我们推荐的书:

我们不推荐的书:

##从上到下依次看,数据结构 在有了基本的语法之后,我们仍然需要一种方式把基本的语法组织在一起解决实际问题,这时候就需要数据结构了。原则上,数据结构与初级的算法是同一门课,因此单独拆出来。数据结构与语言相关。

我们推荐的书:

##从上到下依次看,算法 ,这时候你就需要算法了。

我们推荐的书:

  • 《编程之美》,标题过于夸张,实际上主要讲了一些很有意思的算法
  • 《数学之美》,没有标题的那么夸张,但是不妨花一个下午看一下。

我们不推荐的书:

##从上到下依次看,设计模式 世界上本没有这种程序的写法,写多了也便有了这么多种设计模式。

  • 《 Head First Design Patterns》,head first系列最好的几本书之一,讲的很清楚,代码使用Java。
  • 《大话设计模式》,大话系列最好的几本书之一,编程语言使用C#,相对于上一本行文略显不通畅,但是所有的设计模式都讲全了。
  • 《设计模式》,代码使用C++和SmallTalk编写,微言大义,非常适合买一本放在书架上。

##从上到下依次看,C++

本段假设你已经会基本的C语法(但是C和C++是两种不同的语言),C++的程序员很贵,因为它非常复杂,在看完以下书单之前,我们不推荐你在简历上写“精通C++”。

我们推荐的书:

  • 官方手册,它是目前能找到的最合适的入门书
  • 《C++ primer》,这本书讲了C++的基础知识,非常厚,但是条理比较清楚。 C++11变化很大,不再推荐该书的上一版本,诸如右值、匿名函数等特性这本书将的并不好。
  • 《Effective C++》,讲解了C++的一些用法和注意事项,部分因为C++11的标准库而过时。
  • 《More effective C++》,讲了一些更高端的用法,部分因为C++11而过时。
  • 《深度探索C++对象模型》,对C++的继承、多态等实现机制进行了讲解,非常有启发性。
  • 《C++标准库》,C++11将很多第三方的库(boost)加入了标准库,有些特性文档很少,该书有详细额度介绍。

我们不推荐的书:

##从上到下依次看,Java Java是一门用途广泛的语言,当然本次我们只针对java语言来说,没有针对web跟安卓来讲。

我们推荐的书:

我们不推荐的书:

##从上到下依次看,Golang Golang是google推出的服务器编程语言,对多线程支持非常好。

我们推荐的书:

我们不推荐的书:

##从上到下依次看,JavaScript

JavaScript是Html5钦定的脚本语言,在后端也有广泛的用途。

我们推荐的书:

  • 《JavaScript语言精粹》,它介绍了作者认为比较好用的JavaScript功能的一个子集合,表述方式可能并不易懂,但是讲的很不错。
  • 《JavaScript权威指南》,全面的Javascript语法书,很多地方讲的并不清楚,比如面向对象的部分。

我们不推荐的书:

##从上到下依次看,git

git是一个强大的分布式版本管理工具,功能强大。

我们推荐的书:

##从上到下依次看,操作系统

每天都有很多新手发问,我想深入学习一下Linux,需要看哪一方面的书,有人会推荐一本厚厚的命令手册,我更喜欢推荐操作系统的书。

我们推荐的书:

  • 《现代操作系统》,作者很牛气,该书不难但是相当的厚。而且看完之后会让人感觉脑洞大开

##从上到下依次看,网络

我们推荐的书:

##从上到下依次看,数据库

受作者的领域所限,推荐的数据库类型非常少,欢迎补充。

我们推荐的书:

##从上到下依次看,硬件及汇编

我们推荐的书:

##从上到下依次看,OpenGL&WebGL

开发手机游戏或者Linux及Mac下面的游戏,OpenGL都是一个绕不开的话题,但是OpenGL相关的书要么严重过时,还停留在固定流水线时代,要么写的根本看不懂。WebGL伴随Html5火了起来,靠谱的书依然很少。

我们推荐的书:

  • 《WebGL编程指南》,对GPU内部原理进行了简单的介绍,对shader执行流程有较为细致的讲解,是为数不多的对该领域介绍比较详细的书之一。

  • 《图形着色器》,这一本书大量的设计shader的编写,但是对新手很不友好,而且翻译的不好。

我们不推荐的书:

  • 《OpenGL编程指南》,这本书大部分内容过时了(OpenGL 3.0之后就不再是固定流水线了),具体的执行流程讲的也不清楚。

  • 《OpenGL超级宝典》,这本书大部分内容过时了(OpenGL 3.0之后就不再是固定流水线了),具体的执行流程讲的也不清楚。

  • 《Web入门指南》,大量的使用three.js,偏向WebGL的应用,但是讲的并不清楚。

##从上到下依次看,OpenCL&CUDA

OpenCL作为一个异构计算的方案,应用非常广泛,比如OpenCV提供了很多算法实现,CUDA作为Nvdia力推的GPU计算框架,应用的更为广泛,很多GPU算法都是基于CUDA的,因为它具有更高的效率。

##从上到下依次看,编译原理

编译原理虽然日常工作用不到,但是看完了可以知道计算机语言怎么变成机器语言的。

我们推荐的书:

##从上到下依次看,项目管理

我们推荐的书:

##不属于以上类别的书