程序员技术练级攻略

本文小编:陈皓

干什么要选择Vagrant

启蒙入门

1、 学习一门脚本语言,例如Python/Ruby

可以让您摆脱对底层语言的恐惧感,脚本语言可以让你快捷开发出能用得上的小程序。实践项目:

  • 拍卖文件文件,或者csv (关键词 python csv, python open, python sys)
    读一个地面文件,逐行处理(例如 word count,或者处理log)
  • 遍历本地文件系统 (sys, os,
    path),例如写一个主次计算一个索引下拥有文件大小并按种种标准排序并保存结果
  • 跟数据库打交道 (python sqlite),写一个小脚本总结数据库里条目数量
  • 学会用各个print之类简单严酷的格局举行调剂
  • 学会用Google (phrase, domain, use reader to follow tech blogs)

为何要学脚本语言,因为她俩实际上是太方便了,很多时候大家须求写点小工具或是脚本来帮大家缓解问题,你就会发觉正规的编程语言太难用了。

2、 用熟一种程序员的编辑器(不是IDE) 和局地中坚工具

  • Vim / Emacs / Notepad++,学会怎么安排代码补全,外观,外部命令等。
  • Source Insight (或 ctag)

接纳这几个东西不是为了Cool,而是那么些编辑器在翻看、修改代码/配置小说/日志会更快更有功用。

3、 熟知Unix/Linux Shell和科普的命令行

  • 假如你用windows,至少学会用虚拟机里的linux, vmware
    player是免费的,装个Ubuntu吧
  • 早晚要少用少用图形界面。
  • 学会使用man来查阅协助
  • 文件系统结构和基本操作
    ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
  • 学会使用部分文书操作命令 sed/awk/grep/tail/less/more …
  • 学会使用部分管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
  • 问询/etc目录下的种种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运作新闻
  • 询问正则表达式,使用正则表明式来查找文件。

对此程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在一些时候实在是太难用了,分外地非凡地下跌工作功用。

4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)

以后早晚是Web的社会风气,学习WEB基础的特级网站是W3School

  • 读书HTML基本语法
  • 学学CSS怎样选中HTML元素并运用有的基本样式(关键词:box model)
  • 学会用  Firefox + Firebug 或 chrome
    查看你认为很炫的网页结构,并动态修改。
  • 读书使用Javascript操纵HTML元件。明白DOM和动态网页(http://oreilly.com/catalog/9780596527402)
    网上有免费的章节,丰盛用了。或参阅 DOM 。
  • 学会用  Firefox + Firebug 或 chrome
    调试Javascript代码(设置断点,查看变量,性能,控制台等)
  • 在一台机器上配备Apache 或 Nginx
  • 学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成开头认识。达成一个表单提交和反显的机能。
  • 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
  • 跟完一个名校的网络编程课程(例如:http://www.stanford.edu/~ouster/cgi-bin/cs142-fall10/index.php )
    不要认为需求多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上
  • 学学一个javascript库(例如jQuery 或 ExtJS)+  Ajax
    (异步读入一个劳务器端图片或者数据库内容)+JSON数据格式。
  • HTTP: The Definitive Guide
    读完前4章你就通晓您每日上网用浏览器的时候发出的作业了(proxy,
    gateway, browsers)
  • 做个小网站(例如:一个小的留言板,协助用户登录,库克ie/Session,增、删、改、查,上传图片附件,分页突显)
  • 买个域名,租个空中,做个温馨的网站。

Vagrant的主要使用者

对此急需在服务器端进行付出的人,Vagrant管理的杜撰机镜像提供了联合的生产运作环境。开发者可以擅自的控制如何时候想“服务器”端公布程序,什么日期在“服务器”端进行必要的测试,而丝毫决不担心会潜移默化生产条件服务器的安澜运转。

对于种种陈设人士,使用Vagrant,可以让规划人士能够随心所欲的选项自己的费用用操作系统、设计软件、编辑IDE软件,可以经过与虚拟机之间的共享目录,飞快完结规划文本在生产条件中的测试注明。

对此系统体贴人士,使用Vagrant,能够随心所欲进行对系统安装设置的经过进展彩排,验证工程安装手册的全称程度。也可以对系统维护中的各项操作指令随意进行实验。那对于升高售后服务团队的问题很快化解能力,获得实战经验的百般重大的手段。

进阶加深

1、 C语言和操作系统调用

  • 再也学C语言,领悟指针和内存模型,用C语言落成一下种种经典的算法和数据结构。推荐《处理器程序设计方法》、《算法导论》和《编程珠玑》。
  • 学习(俄亥俄州立免费课程)统计机科学和编程导论
  • 学习(剑桥免费课程)C语言内存管理
  • 上学Unix/Linux系统调用(Unix高级环境编程),,了然系统层面的事物。
    • 用那一个系统知识操作一下文件系统,用户(落成一个得以拷贝目录树的小程序)
    • 用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的顺序。多进度多进度购票的先后。
    • 用signal/kill/raise/alarm/pause/sigprocmask已毕一个多进度间的信号量通信的次第。
    • 学会运用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)
    • 学会使用makefile来编译程序。(参看我的《跟自家一头写makefile》)
    • IPC和Socket的东西得以放手高级中来施行。
  • 学习Windows SDK编程(Windows
    程序设计 
    MFC程序设计

    • 写一个窗口,通晓WinMain/WinProcedure,以及Windows的音讯机制。
    • 写一些主次来操作Windows
      SDK中的资源文件或者各类图片控件,以及作图的编程。
    • 上学如何采纳MSDN查六柱预测关的SDK函数,种种WM_信息以及部分例程。
    • 那本书中有诸多例程,在实践中请不要照抄,试着温馨写一个投机的例程。
    • 不用太多于精晓这个东西,因为GUI正在被Web取代,首若是探听一下Windows
      图形界面的编程。@virushuo 说:“ 我以为GUI确实不那么吃香了,但尽量知情GUI工作原理是很重大的。蕴涵运动装备费用,如若没有基础知识依然很费劲。或者说移动装备费用必须清楚GUI工作,或者在win那边学,或者在mac/iOS上学”。

2、学习Java

  • Java 的上学重大是看经典的Core Java 《Java
    宗旨技术编程
    》和《Java编程思想》(有两卷,我仅链了第一卷,丰富了,因为Java的图形界面通晓就可以了)
  • 读书JDK,学会查阅Java API
    Doc http://download.oracle.com/javase/6/docs/api/
  • 叩问一下Java那种虚拟机语言和C和Python语言在编译和实践上的不一样。从C、Java、Python思考一下“跨平台”那种技能。
  • 学会运用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。
  • 建一个汤姆cat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的万分PHP的小品种试着用JSP和Servlet已毕一下。

3、Web的平安与架构

  • 读书HTML5,网上有成百上千广高校科,以前酷壳也介绍过许多,我在那边就不列支了。
  • 学学Web开发的安全题材(参考和讯微博被攻击的那个事,以及Ruby的这篇作品
  • 上学HTTP
    Server的rewrite机制,Nginx的反向代理体制,fast-cgi(如:PHP-FPM
  • 上学Web的静态页面缓存技术。
  • 上学Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。
  • 进行任务:
    • 拔取HTML5的canvas 制作一些Web动画。
    • 尝试在头里开发过的卓殊Web应用中举行SQL注入,JS注入,以及XSS攻击。
    • 把前边开发过的老大Web应用改成构造在Nginx + PHP-FPM +
      静态页面缓存的网站

4、学习关系型数据库

  • 您可以设置MSSQLServer或MySQL来学学数据库。
  • 上学读本里数据库设计的那些范式,1NF,2NF,3NF,……
  • 读书数据库的存过,触发器,视图,建索引,游标等。
  • 学学SQL语句,明白表连接的各个概念(参看《SQL
     Join的图示
    》)
  • 上学如何优化数据库查询(参看《MySQL的优化》)
  • 实施职责:设计一个论坛的数据库,至少满意3NF,使用SQL语句询问本周,本月的新型篇章,评论最多的稿子,最活跃用户。

5、一些开发工具

  • 学会使用SVN或Git来保管程序版本。
  • 学会运用JUnit来对Java进行单元测试。
  • 读书C语言和Java语言的coding standard 或 coding
    guideline。(我N年前写过一篇关C语言非凡不难的文章——《编程修养》,那样的东西你可以上网查一下,一大堆)。
  • 推荐阅读《代码大全》《重构》《代码整洁之道

Vagrant对开源开发的孝敬

开源的开发者平时力不从心像一个家常团队那样面对面的坐在一起进行支付工作。由于开发社团是一种松散的团伙情势,因而,也不是每一个开发者都足以博得在服务器端上的支付授权。此时Vagrant就提要求这一个开发者须求的代码运行环境,极大程度的擢升了开源开发者向开发基本小组提交代码的质量。其余,Vagrant的虚拟机分享形式,也使得开源开发者得到统一的服务器运行环境的开销变得异乎日常的物美价廉。

前言

你是否觉得温馨从全校结束学业的时候只做过小玩具一样的次序?走入职场后固然没有何经验也得以把以下那几个课外操练走三回(朋友的埋怨:校园课程总是从理论出发,作业项目都看不出有咋样实际功用,不如从办事中的需要出发)

建议:

  • 决不乱买书,不要乱追新技巧新名词,基础的事物通过很长日子累积而且还会在未来起码10年通用。
  • 追思一下历史,看看历史上时间线上技巧的向上,你才能明白明天会是何许。
  • 自然要出手,例子不管多么不难,提出至少自己手敲一重播看是不是清楚了里头的枝叶。
  • 毫无疑问要学会思考,思考为何要那样,而不是那么。还要举一反三地思量。

:你也许会很想得到为啥上面的东西很偏Unix/Linux,那是因为自己觉得Windows下的编程可能会在往后很没有前途,原因如下:

 

  • 最近的用户界面大概被八个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。
  • 越多的商店在用花费低性能高的Linux和各个开源技术来构架其系统,Windows的资金太高了。
  • 微软的事物变得太快了,很不持久,他们全然是在作弄程序员。详情参见《Windows编程革命史

就此,我个人认为今后的矛头是前者是Web+移动,后端是Linux+开源。开发那边基本上没Windows什么事。

Vagrant是什么,不是如何。

Vagrant是构建在虚拟化技术之上的虚拟机运行环境管理工具。通过Vagrant可以一本万利完成的对虚拟机的保管,包罗建立和删除虚拟机、配置虚拟机运行参数、管理虚拟机运行意况、自动化配置和装置开发环境必须的各个软件、打包和分发虚拟机运行条件等。

Vagrant的运作,需求借助某项具体的虚拟化技术。由于VirtualBox是一项开源的虚拟化软件,可以而且在Windows、Linux、Macintosh、SSolaris等操作系统上运行并辅助广大对许多操作系统的虚拟化,由此,在Vagrant开发的早期,唯一援助的是VirtualBox。随着虚拟化技术的立即前进,现在早已有了愈多的虚拟化技术可供接纳。VMware、HyperV、Docker等都曾经足以透过Vagrant的治本而工作。Windows的HyperV技术在有些Windows发行版本中的集成,使得Vagrant在“开盒即用”的特征方面升高了一大步。

故而,Vagrant是虚拟机管理工具,不是某项具体的虚拟化技术。对于各种虚拟化技术而言,Vagrant提供了一套基于配置文件和命令行的管理工具。也多亏因为那样,Vagrant完毕了对虚拟化技术在自然水准上的包装。那为将虚拟化技术引入到基于桌面运行环境的付出工作流中创立了有利于条件。

尖端长远

1、C++ / Java 和面向对象

本人个人认为学好C++,Java也就是不费吹灰之力。然则C++的上学曲线非凡的陡。可是,我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图
和“21天学好C++

  • 学习(新加坡国立免费课程)C++面向对象编程
  • 读我的
    什么学好C++”中所推荐的那些书至少一次以上(即使你对C++的知道可以一语道破到像我所写的《C++虚函数表解析》或是《C++对象内存存局》,或是《C/C++再次回到内部静态成员的圈套》那就卓殊不易了)
  • 下一场反思为啥C++要干成这么,Java则不是?你一定要学会相比C++和Java的例外。比如,Java中的伊始化,垃圾回收,接口,十分,虚函数,等等。
  • 施行任务:
    • 用C++完结一个BigInt,支持128位的整形的加减乘除的操作。
    • 用C++封装一个数据结构的容量,比如hash table。
    • 用C++封装并完结一个智能指针(一定要利用模板)。
  • 设计格局》必需一读,一遍以上,思考一下,那23个格局的选拔场景。首假如两点:1)钟爱组合而不是延续,2)钟爱接口而不是兑现。(也推荐《开端设计形式》)
  • 推行任务:
    • 应用工厂方式达成一个内存池。
    • 运用政策形式制做一个类其可以把公文文件举行左对齐,右对齐和中对齐。
    • 采用命令形式完结一个命令行统计器,并接济undo和redo。
    • 采取修饰方式达成一个酒吧的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的要素。
  • 学习STL的用法和其布置概念  –
    容器,算法,迭代器,函数子。借使可能,请读一下其源码。
  • 实践职务:品尝利用面向对象、STL,设计方式、和WindowsSDK图形编程的各个技术
    • 做一个贪吃蛇或是俄国四方的娱乐。协助分化的级别和难度。
    • 做一个文本浏览器,可以浏览目录下的文书,并可以对区其余文本有不一样的操作,文本文件可以打开编辑,执行文书则举行之,mp4或avi文件可以播放,图片文件可以显得图片。
  • 学习C++的片段类库的统筹,如:
    MFC(看看候捷先生的《早先MFC》)
    ,Boost, ACE,  CPPUnit,STL
    (STL可能会太难了,不过倘使你能精晓其中的设计情势和安排性那就太好了,如果您能一语道破到自己写的《STL
    string类的写时拷贝技术
    》那就这么些科学了,ACE需要很强在的种类知识,参见后边的“加强对系统的垂询”)
  • Java是实在的面向对象的语言,Java的设计情势多得无法再多,也是用来上学面向对象的设计方式的极品语言了(参看Java中的设计方式)。
  • 推介阅读《Effective Java
    and 《Java解惑
  • 读书Java的框架,Java的框架也是多,如Spring, Hibernate,Struts
    等等,首要是读书Java的布置性,如IoC等。
  • Java的技术也是烂多,重点学习J2EE架构以及JMS, RMI,
    等消息传递和长途调用的技艺。
  • 读书应用Java做Web Service(Service)(合法教程在此间
  • 施行职分: 尝试在Spring或Hibernate框架下构建一个有网络的Web
    瑟维斯(Service)(Service)的中远距离调用程序,并得以在三个瑟维斯(Service)(Service)中通过JMS传递音信。

C++和Java都不是能在长期内能学好的,C++玩是的深,Java玩的是广,我提出双方选一个。我个人的上学经历是:

  • 追究C++(我深究C/C++了十来年了)
  • 学习Java的各个设计形式。

2、加强系统摸底

根本阅读上面的几本书:

  • Unix编程艺术》驾驭Unix系统领域中的设计和花费农学、思想文化系列、原则与经历。你一定会有一种听君一席谈胜读十年书的痛感。
  • Unix网络编程卷1,套接字》那是一本看完你就精晓网络编程的书。紧要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的异样。
  • TCP/IP详解 卷1:协议》-
    那是一本看完后你就可以当网络黑客的书。通晓以太网的的周转规律,明白TCP/IP的磋商,运作规律以及哪些TCP的调优。
  • 进行职务:
    • 领悟什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select,
      poll, epoll)的IO技术。
    • 写一个网络聊天程序,有聊天服务器和两个聊天客户端(服务端用UDP对一些或享有的的闲聊客户端进Multicast或布罗德cast)。
    • 写一个简短的HTTP服务器。
  • Unix网络编程卷2,进程间通信》信号量,管道,共享内存,音信等各类IPC……
    那一个技术好像有些老掉牙了,但是如故值得询问。
  • 实践职务:
    • 关键实施各个IPC进程序通信的主意。
    • 品味写一个管道程序,父子进度经过管道互换数据。
    • 尝试写一个共享内存的顺序,三个经过经过共享内存互换一个C的结构体数组。
  • 学习《Windows宗旨编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(伊夫(Eve)nt,
     信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞领悟。
  • 施行义务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把后面写过的越发简单的HTTP服务用线程池完结一下。写一个DLL的钩程序监控指定窗口的倒闭事件,或是记录某个窗口的按键。
  • 有了多线程、多进度通信,TCP/IP,套接字,C++和设计格局的主导,你可以研究一下ACE了。使用ACE重写上述的闲话程序和HTTP服务器(带线程池)
  • 举行职务:通过以上的有所知识,尝试
    • 写一个服务端给客户端传大文件,必要把100M的带宽用到80%之上。(注意,磁盘I/O和网络I/O可能会很有题目,想一想怎么化解,其它,请留意网络传输最大单元MTU)
    • 询问BT下载的做事原理,用多进度的措施模拟BT下载的原理。

3、系统架构

  • 负载均衡。HASH式的,纯动态式的。(可以到谷歌(Google)学术里搜一些关于负载均衡的小说读读)
  • 多层分布式系统 –
    客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层社团。
  • CDN系统 – 就近访问,内容边缘化。
  • P2P式系统,研商一下BT和电驴的算法。比如:DHT算法
  • 服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机械怎么着通过心跳监测对方?集群主结点备份。
  • 虚拟化技术,使用这几个技术,可以把操作系统当应用程序一下切换或重新配置和安插。
  • 学习Thrift,二进制的高性能的简报中间件,帮忙数据(对象)种类化和多连串型的RPC服务。
  • 学习Hadoop。Hadoop框架中最基本的筹划就是:MapReduce和HDFS。MapReduce的怀想是由谷歌(Google)的一篇论文所提及而被传到的,不难的一句话解释MapReduce就是“职分的诠释与结果的集中”。HDFS是Hadoop分布式文件系统(Hadoop
    Distributed File System)的缩写,为分布式计算存储提供了底层襄助。
  • 了解NoSQL数据库(有人说可能是一个接通炒作的技巧),不过因为超大规模以及高并发的纯动态型网站日渐变成主流,而SNS类网站在多少存取进度中存有实时性等刚性须要,这使得近年来NoSQL数据库渐渐成了大千世界所关怀的热点,并大有成为取代关系型数据库而变成以后主流数据存储情势的倾向。当前NoSQL数据库很多,超过半数都是开源的,其中比较显赫的有:MemcacheDB、Redis、Tokyo
    Cabinet(升级版为Kyoto
    Cabinet)、Flare、MongoDB、CouchDB、卡桑德拉、Voldemort等。

写了那么多,回看一下,觉得温馨一定的有成就感。希望大家不用吓着,我自己那十来年也在相连地上学,后天自己也在学习中,人生本来就是一个不止学习和练级的经过。唯独,一定有漏的,也有畸形的,还希望我们补充和改正。(我会依照大家的上报随时更新此文)欢迎我们经过自身的新浪(@左耳朵耗子)和twitter(@haoel)和自己交换。

—– 更新  2011/07/19 —–

1)有意中人奇怪为何自己在那篇小说开首说了web+移动,却绝非在末端提到iOS/Android的前端开发。因为我心头有一种感觉,移动装备上的UI末了也会被Javascript取代。我们可以用HTC或Android看看google+,你就会清楚了。

2)有心上人说我那里的事物太多了,不可能为了求学而读书,我很是同意。我在小说的前方也说了要考虑。此外,千万不要认为我说的那一个事物是一对新的技术,那份攻略里95%上述的全是基础。而且都是锤炼的根基技术。即是可以让您一通百通的技艺,也是可以让你找到一份不错工作的技能。

3)有朋友说学那一个事物学完都40了,还不如考虑怎么去赚钱。我想告诉我们,一是自我当年还并未40岁,二是学无止境啊,三是本人不觉得赚钱有多难,难的是怎么让你值那么多钱?无论是打工如故创业,是怎么样事物让您自己的市值,让你公司的价值更值钱?其余地点我不敢说,对于互联网或IT集团来说,技术实力绝对是其中之一。

4)有意中人说技术都是工具,不该那样着迷那句话没有错,有时候大家需求更加多的是抬早先来看看技术以外的作业,或者是说俺们在作技术的时候不去考虑为啥会有其一技术,为啥不是其余,问题不在于技术,问题在于大家死读书,读死书,成了技术的书呆子。

5)
对于NoSQL,近来相比火,但自我对其有些保守,所以,我只是说理解就可以。对于Hadoop,我觉着其在分布式系统上有巨大的潜力,所以必要学习。 对于关系型数据库,的确是很要紧的东西,这一点是自家的忽视,在原文里补充。

尽心尽力幸免”Work on my machine“错误

在Vagrant没有出现之前,在劳务器端举办支付的大千世界一般都装有一个专用的支出帐号。使用那些帐号,开发者能够在肯定限度内安插自己的付出环境、完毕编码、举行测试并做到向开发团队代码库的代码推送。于是,在集体合营开发的经过中,一个题材现身了:当A展开了几遍新的代码推送之后,原本可以因而的代码持续集成测试不可能通过了。通过代码检查,发现A的代码出现了老大。而A在融洽的开支环境中的测试是足以因而的。那类错误被Vagrant称作为“Work
on my
machine”错误。那类错误要固定解决一般耗时很久。在一个得以开展面对面开发的团社团中,问题的固化由于联系手段的丰裕相对较快。假若是散落在差异地点的人在合营开发,那么要缓解此类错误,就一直不那么简单了。

小张在温馨的机器上辛劳的到位了一项成效开发,通过了本机上的各样测试,高神采飞扬兴的向协会代码库提交的自己的干活战果。心想终于能够放松一下了。“是不是足以买一只多功能键盘犒劳一下?中午和同伴们出来聚会吧!嘿嘿。”小A心里喜出望外的想。

“小张,你来一下,代码有问题”。临近下班的时候,小A接到QA小组的一个电话。“怎么回事?”小张一头雾水的走进了QA小组的办公区。

“你前天清晨提交的代码,不可以通过测试。你协调做了测试了呢?”,老王是QA小组测试官员,他面色凝重的问小张,“大家就要发表一个新的代码版本了。那个时候你的代码出问题,可能会潜移默化代码发表的。要不你神速看看?前天早上能修复吗。大家的测试报告和测试规范在此间”。

“明明不是问题的啊”,出了QA的办公区,小张依然迷惑不解。“在本人的机器上强烈是足以运作的。而且为了早晨的聚首,测试规范中定义的各项测试也是提前跑过的啊。看来明天早上的大团圆要吊销了。“小张无奈的拿出电话,打算给好友们打电话,公告自己没辙到位傍晚的团聚了。

好吧,借助Vagrant,每一个开发者都得以博得一份服务器运行条件的虚拟机,可以以虚拟机的措施运行一个小型的”生产条件“。这样,在付出代码以前,开发那就可以在虚拟机上做到”生产条件“的认证。自然可以解决地方的题材了。

月色博客2月12日刊登了《写给新手程序员的一封信》,翻译自《An
open letter to those who want to start
programming
》,我的朋友(他在本站的id是Mailper)告诉我,他期望在酷壳上看到一篇更具操作性的作品。因为他也是欣赏编程和技术的钱物,于是,我让她把他的有些就学Python和Web编程的有的星星计算一下。于是她给我发来了部分他的经验和经验,我在把她的体验做了不多的增改,并依照自身的经历扩大了“进阶”一节。那是一篇由新手和自我这一个老家伙依照大家的经历成功的小说

小结

假诺还在为“Work on my
machine”错误胸闷,即使设置开发条件依旧协会心头的痛,那为啥不尝试用用Vagrant呢?

转自:http://coolshell.cn/articles/4990.html

收缩搭建开发条件的时日

搭建一个开发条件,须求形成操作系统的装置,要求的花费接济软件的设置,配置操作系统和代码运行环境。若是拥有的操作都须要由人来手动操作的话,一个中午的时光是必需的。搭建开发环境是团体中新党到场时的不可或缺的首先课。而集体的前辈们,无可幸免的会吸收无数的“新手”的咨询。更不要说,当备受瞩目标Wxdows系统须要重新安装系统的时候,无论什么人,基本上一天的做事时间毕竟交代了,更不要说各种开发软件的配置借使会潜移默化代码执行结果的时候会引入什么样的“磨难”了。使用Vagrant落成支付条件的登时搭建成为提升效用的家喻户晓效果特色之一。

Vagrant提供了联合的安装程序配置环境:

  • 利用统一的布局文件( vagrantfile )已毕对服务器的会合计划。
  • 采用共享文件夹( shared folder )完成代码编辑向“服务器”的飞跃提交
  • 选取软件配置脚本( Provisioning scripts )达成服务器上的运作环境的高效建立
  • 抱有标准化的虚拟机分享网络,极大缓解了享受开发环境安插时的网络带宽压力
  • 能够具有一个供安装维护测试使用的可放弃的劳务器端环境。

小李是跻身开发团队的新人。从全校结束学业出去,小李就到了一个合营社从事劳动器端的软件开发工作。由于兴趣爱好的因由,他多年来加盟了这几个网游开发社团。他收受的首先个指令就是“搭建一个服务器工作日志分析系统,为服务器代码优化立异做准备”。

小李从集体项目主管那里取得了服务器环境设置手册以及服务器日志数据库设计文档。小李要求在融洽的机器上用虚拟机安装一套服务器环境,用以进行日志数据的辨析和领取。

“行吗,估摸这几天的小运要搭到系统装置里去了。”小李做好了心情准备,打开了服务器环境设置手册。意外的,手册很粗略:

  • 设置Vagrant和VirtualBox,从文件服务器(地址XX.XX.XX.XX/Software)下载Vagrant、VirtualBox安装文件,并成功安装
  • 执行 git clone git@xx.xx.xx.xx:vagrantconfig.git 获取vagrant配置文件
  • 进入vagrantconfig目录,运行 Vagrant up ftp://xx.xx.xx.xx/vagrant/trusty-server-cloudimg-amd64-vagrant-disk1
  • 执行 vagrant ssh 验证安装
  • 从文件服务器(xx.xx.xx.xx/data)下载日志数据库dump文件,完毕Mysql数据库内容的加载
  • ……

“那就完了?”半个钟头后,小李目瞪口呆的望着自己机器上运行的虚拟机,一套服务器日志系统现已加载成功了。小李已经足以下手举行数量的分析并先导做具体编码设计了。

自己的那些心上人把那篇文章取名叫Build Your
Programming Technical Skills,我实际不知道用中文怎么翻译,但本身在写的经过中,自己觉着这很像一个打网游做义务升级的一个进度,所以取名叫“技术练级攻略”,题目有点大,呵呵,那些标题纯粹是为着有趣此地唯有是在分享Mailper和自己个人的求学经验。(注:省去了自身看成一个初专家早已学习过的一部分技能(今日眼看过时了),如:Delphi/Power
builder,也节约了本人学过的一对自己觉着没意思的技艺Lotus
Notes/ActiveX/COM/ADO/ATL/.NET ……)

发表评论

电子邮件地址不会被公开。 必填项已用*标注