Ubuntu Desktop开发生产环境搭建

1   开发生产环境搭建

在本节内容开始前,先定义一下使用场合,没有哪种系统或者设备是万能的,都有它的优点和缺点,能够在具体的使用场景,根据自身的需求来取之即可。

  • 主要用途是影音视频娱乐消费,那么最好的选择是iPad
  • 主要用途是office办公,那么最好的选择是windows或者mac
  • 主要用途是学术研究或者是互联网开发相关的工作,那么linux则是最优选择。

在本节之前,花了大量的篇幅来强调如何美化和如何安装日常办公应用程序,其实都是为了配合开发人员的 重开发,轻办公,基本无娱乐 的需求而提出的。是以作为生产力平台为目的而做的一些开发环境搭建。

2   服务器环境支持

  • Web服务器
  • 数据库服务器
  • 文件服务器
  • 版本管理服务器

3   文本编辑器

在Linux下面有丰富的

  • Geany
  • SublimeText
  • Visual Studio Code

整体点评:

  • Visual Studio Code,支持中文的文本,也可以调整成自动换行。
  • SublimeText,和其它平台的操作界面和习惯一致
  • Geany,直接在Linux系统的“软件中心”里面就可以找到。体积小,完全可以满足日常的可视化文本编辑需求。

可视化的文本编辑器在 Linux Desktop 中是很重要的应用,首先因为Linux的文件系统就是一切皆文本。另外,在Linux下面高级的文档写作和开发工作也基本上全依赖于文本来实现的。

4   文档及写作

文档的写作工作主要有如下几个步骤:

  • 内容准备
  • 文字录入
  • 图片素材嵌入
  • 段落结构排版
  • 整体外观样式调整和美化
  • 文档发布/传播/展示

在Windows系统下面的传统Office办公用户,基本上是MsOffice全套所见即所得的方式来完成以上步骤,MsOffice为上面所有的内容都提供了一站式的服务,上手门槛低,只需要能够熟悉使用计算机,然后学习一些软件的基本操作就可以胜任基本的需求。

此方法缺点也很明显:

  • 会花费大量的精力来调整段落
  • 会花费大量时间来排版和美化
  • 样式和内容完全糅杂在一起,内容迁移性差
  • 单文档个体书写模式,不利于大型工程文档的多人协作和专业化分工
  • 和HTML无法达到完美契合,导致如今互联网时代由它些内容生产的文档的暴光度一直不高

整体来说 ,传统的MsOffice的文档模式,是一种离线单体包办的模式,当然同时也是一种最简单上手的模式。

在Linux下,对于有Geek范的人,或者有一定开发能力的人,更新一些文档理念和使用一些更先进的文档工作是很有必要的。

Linux下面文档的写作也基本上遵循如上的步骤,但是它的工具链则更加接近开发人员的思维,将文档的非内容部分的步骤变成和编写代码一样的过程了。因此 文档书写 在这里实际上变成了 文档开发 了。在Linux下面进行文档干发,需要有如下技能:

  1. 文档内容的组织能力

    不管是哪种平台使用哪种工具,都是必须的,毕竟文档的展现形式只是表象,内容才是文档的核心价值体现。

  2. 简单的文档语法能力

    此文档排版方式需要将版式信息包含在录入的文本当中 ,所以必须要一些简单的语法约束。

  3. 文档编译转化工具链使用能力

    根据文档语法,对文档的源文件进行编译转化,生成指定的文档,主要是HTML,PDF等等。

对于普通非开发人员来说,可能第3条是门槛最高的,但是目前已经有一些相当友好的可视化工具的产生,将使用门槛降低到普通非开发人员也能上手的程度了。

主要的文档语法如下(由上到下,语法的难度依次增加,但是功能也依次加强):

  • Markdown

    语法简单,对于绝大多数人来说易学习而且够用,主要用于内容扁平涉及很少量的交叉引用的小文档写作,通过极其简单的语法可以快速生成整洁的文档。目前在网络上的主要:博客/发帖/邮件等场合。

  • RestructuredText

    语法稍微复杂,可以处理很多复杂的文档需求,工程组织性和交叉引用方面都有很强的优势,主要用于大型文档的写作,真正的接近于代码开发的思维和模式(后面会专门开辟章节来详细讲解)。目前在网络上的主要应用:大型技术文档/产品介绍书等等场合。

  • LaTex

    主要用于科技论文的排版写作,语法最复杂,一般用于科研在学术刊物上的投稿。在网络上的应用还不多见。此语法是所有语法性文档的鼻祖。

主要的网络写作(最后要发布到网络上的文档)使用的语法是:Markdown和RestructuredText。这两种写作语法在Linux下面的主要开发工具如下:

  • Markdown
    • liteide
    • haroopad
    • retext
  • RestructuredText
    • retext
    • 任意文本编辑器+restview工具链

5   生产开发工具

只要是最终运行环境是基于Linux或者是跨平台的浏览器的开发,在Linux下面都可以找到很好的开发环境解决方案,当然对于Windows 客户端程序或者iOS客户端程序开发,Linux则显得很乏力。

目前对于这三类程序的开发,在Linux下面有很好的解决方案:

  • 服务端程序

    目前Linux Server绝对是互联网服务器的主流,所有的导致服务器开发的主流生产力工具在Linux基本上是最优解。

  • 基于浏览器的Web应用

    在服务器端确立之后,客户端是运行于浏览器的,在Linux下面对高级浏览器支持度很好。

  • 基于Android的移动应用

    由于Android本身就是基于Linux的架构,所以在Linux下面开发也是一种很自然的选择。

主要的开发用途及对应的生产工具如下:

  • 前端调试
    • FireFox
    • Chrome
  • 代码开发工具
    • Pycharm
    • Eclipse
    • WebStorm
  • Android开发套件
    • Android Studio/Genymotion
    • Android ADT/Genymotion
  • 虚拟机
    • VirtualBox
    • Vmware
  • 版本协作
    • Git Server/Client
    • Svn Server/Client
  • 服务器
    • Tomcat
    • Apache
    • Uwsgi
    • Nginx
    • Vsftpd
    • Supervisor
  • 网络工具
    • Tcpdump
    • Wireshark
  • 数据库
    • Robomongo
    • Mysql Workbench
  • FTP客户端
    • Firezilla

这些程序一般要么是直接到官网上下载安装包,或者是直接在软件源里面使用:

apt-get install XXXX

即可轻松完成相应的环境搭建。

6   重要总结

很多人以为在Linux下作开发就只是只有黑窗口的控制台,如下:

然后对Linux环境下的开发就产生了恐惧感,其实并不是这样的。

Linux本质是内核,然后上面运行各种应用程序,桌面也只是运行在Linux内核之上的一个应用程序而已。由于绝大多数用户习惯了Windows或者Mac下的图形用户界面,目前主流的Linux分支都将发行的Linux文件分为两个版本:

  • Server服务器版

    主要用于服务器程序运行。重视系统调用的稳定性,而弱化了人机交互体验,没有图形交互界面,纯粹依靠CLI命令行来进行操作。

  • Desktop桌面版

    主要用于日常的办公和开发。重视人机交互体验,集成了比较强大的Desktop桌面及桌面应用程序。

普通新手入门的时候,恐惧的都是没有界面的Server版,而不愿意在Linux做日常的办公和开发,即使有些项目的生产服务器是在Linux系统下,仍然会有人舍近求远坚持在Windows下做开发。这样往往会人为造成文件路径和系统环境移植上的麻烦。

其实Linux Desktop下面有很多成熟的桌面应用,特别是在开发领域,这些桌面应用的便捷性不亚于Windows。例如,下面的一些主要的IDE。

Python IDE(Pycharm):

Java IDE(Eclipse):

7   结语

前端所说的这些内容,基本上算是以Linux的功能以及作为生产力设备可以发挥的作用给概述一遍了。有了这些整体认识,建立起了朴素的Linux的世界观和方法论之后,再补充一些基本的Linux操作系统(非Desktop)的知识,就可以开始互联网开发和应用之旅了。

后续会对Linux的原理及其强大的生产力工具和方法进行介绍。

PS: 可能有人会问,什么是“生产力”,在此要解释一下:

按照恩格斯的观点,从本原看,生产力是具有劳动能力的人和生产资料相结合而形成的改造自然的能力。

按照目前世俗的观点,从表象来看,生产力就是能够给你带来更好的生活体验和生活自由的东西(其实我不想说是“钱”,太俗气了)


作者: Harmo哈莫
作者介绍: https://zhengwh.github.io
QQ: 1295351490
时间: 2015-08-24
版权说明: 未经许可,严禁用于商业目的的非法传播
联系或打赏: http://zhengwh.github.io/contact-donate.html

Ubuntu Desktop开发生产环境搭建的更多相关文章

  1. ubuntu java开发环境搭建(jdk+tomcat+eclipse)

    一.jdk的安装配置. 1.下载jdk. 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...

  2. Ubuntu中Hadoop环境搭建

    Ubuntu中Hadoop环境搭建 JDK安装 方法一:通过命令行直接安装(不建议) 有两种java可以安装oracle-java8-installer以及openjdk (1)安装oracle-ja ...

  3. ubuntu上lamp环境搭建

    首先,介绍个彻底删除linux已经安装的软件的方法. sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-5. ...

  4. Docker+STF在ubuntu下测试环境搭建(详细搭建步骤及踩坑记录)

    一.什么是OpenSTF? STF又称OpenSTF,它是一个手机设备管理平台,可以对手机进行远程管理.调试.远程手机桌面监控等操作.这个系统类似于目前很流行的云测服务比如Testin,虽然网页上提供 ...

  5. Ubuntu下qemu环境搭建

    在查找资料过程中,发现自己搭建虚拟的arm环境的话,有一个比较好的软件就是qemu了,当然还有其他的,大家各投所好就好. 接下来说一下qemu环境搭建过程. 其实搭建很简单,作为小白,我还是捣鼓了两三 ...

  6. Ubuntu下qemu环境搭建vexpress开发平台

    在查找资料过程中,发现自己搭建虚拟的arm环境的话,有一个比较好的软件就是qemu了,当然还有其他的,大家各投所好就好. 接下来说一下qemu环境搭建过程. 其实搭建很简单,作为小白,我还是捣鼓了两三 ...

  7. Ubuntu开发相关环境搭建

    一.Ubuntu系统语言环境切换修改 安装时,选择的中文版,但实际使用起来,很不爽,果断切换为英文 1.1 打开终端: vim /etc/default/locale 1.2 修改配置 LANG=&q ...

  8. 【Ubuntu Java 开发环境搭建 】

    配置环境变量  在终端下:  sudo gedit /etc/profile   这里当然有些熟悉ubuntu的朋友也可以用 vim,   刚从windows转过来的朋友还是用gedit看着舒服写. ...

  9. 基于Ubuntu的LNMP环境搭建

    装备的工具 Ubuntu16.04 , Xshell 使用Xshell链接到Ubuntu 使用xshell链接Ubuntu不是必须的,只是为了操作的方便,同时默认是你的Ubuntu已经安装好了 在Ub ...

随机推荐

  1. windows 下ssh 客户端

    今天用 xshell 和 bitvise ssh 在 windows 登录SSH ,发现 vi 一些中文内容的文件会出现乱码,配置无效,在网上找到一款不会中文乱码的SSH客户端 MobaXterm , ...

  2. RTMP协议中文翻译(首发)(转)

    Adobe公司的实时消息传输协议 摘要 此备忘录描述了 Adobe公司的实时消息传输协议(RTMP),此协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频.视频和 ...

  3. JSON的一点:

    目录一:把 JSON 文本转换为 JavaScript 对象二:JSON 实例 - 来自字符串的对象 一.把 JSON 文本转换为 JavaScript 对象JSON 最常见的用法之一,是从 web ...

  4. Java自定义表单、自定义字段

    最近想实现用户自定义数据库中的字段,我想大部分人第一想到的就是EAV(Entity-Attribute-Value),这种方式对于写一个小的毕业设计应该还可以使用,当然也有很多CMS系统采用这种方式, ...

  5. Selenium2+python 常用函数汇总

    1. driver = webdriver.Chrome()  --新建实例 2.driver.find_element_by_id("username") ---通过标签属性id ...

  6. node学习笔记(三)

    //事件驱动events //events是node最重要的模块没有之一,因为node.js本身的架构就是事件式的,而他提供了唯一的接口,所以堪称node.js事件编程的基石; //events几乎被 ...

  7. STM32 使用DMA+DAC+TIMER 输出正弦波

    之前已经简单论述过,根据我个人菜鸟的了解与认识,对之前的知识进行整理回顾: DMA:我的理解就是一个通道,或者是一座桥梁.在静态内存到静态内存,或者外设到静态内存间的一个通讯的通道.建立这个通道的好处 ...

  8. linux环境下安装mongodb

    最近有用到mongodb,顺便找到了以前的指南,顺便写一篇随笔,以后或许有用到的地方. 第一步:下载mongodb的linux版本,mongodb-linux-x86_64-3.2.4.tgz(去官网 ...

  9. flask_单元测试

    我们现在可以试着在控制台向数据库添加一个用户: In[2]: import model; In[3]: from microblog import db; In[4]: u=model.User(ni ...

  10. Good-Bye

    嘛……以一种奇怪的姿势滚粗了…… 如果这个Blog能给未来的OIer们一些帮助的话,它也不枉存在了…… 我的OI之路也能以另一种形式延续下去吧…… 也许能搞ACM的话会再开?…… 不管怎么说,各位再见 ...