1. 软件是如何开发出来的
软件开发流程
先上一个软件开发的整体流程图,这就是大名鼎鼎的“瀑布模型(Waterfall Model)”。据说由温斯顿·罗伊斯(Winston Royce)在1970年提出。
1、环境部署
准备服务器,部署操作系统、软件环境、安全软件、FTP服务器等。数据库和应用可分开布置在多个服务器,也可布置在同一服务器。
准备网络,分为内网和外网。外网需要购买公网IP和域名。
负责人:网络管理员
2、软件开发
包括开发语言选择、架构设计、数据库设计等工作,并进行编码、编译、测试、打包。
负责人:程序员
3、软件部署
将程序文件上传到服务器,进行部署、配置,成功后即可通过客户端访问项目。
负责人:软件实施
软件开发阶段
下面以java语言开发为例,简单讲讲程序员是如何进行软件开发的。
(本部分参考了“软帝在线”公众号、博客园“架构与我”的文章)。
1、新建java文件(或工程)
java源代码本质上就是普通的文本文件,可以用txt等工具编辑java代码(程序员一般采用源代码编辑工具,如:Notepad++;或集成开发工具IDE,如:Eclipse)。txt编写后需将文件扩展名改成java。
2、编写代码
以“Hello World”举例编写代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
该程序表示的意思是输出Hello World这样一段话。
3、编译程序
Java程序之所以能做到跨平台运行,是因为Java程序运行在JVM中的,然而JVM只能够识别字节码文件,而不能直接识别Java文件。所以需要先将Java文件编译成字节码文件,即class文件,然后字节码文件才能够在JVM中运行。
编译文件,可以通过手动执行Dos命令javac,或直接用编译器如Eclipse完成。
4、运行程序
可在Dos命令窗口中输入java命令,按回车,输出Hello World;
或在编译器的控制台中看到输出结果。
5、单元测试
单元测试(模块测试)是开发者对编写的一小段代码,检验一个很小的、很明确的功能是否正确。
通常采用JUnit框架(多数java开发环境已集成)进行测试,即所谓白盒测试,叫“白盒”是因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
测试通过后,就完成了软件开发阶段,可以打包部署了。(IT售前圈)
1.Pydev+Eclipse–最好的免费pythonIDE
Pydev的是PythonIDE中使用最普遍的,原因很简单,它是免费的,同时还提供很多强大的功能来支持高效的Python编程。Pydev是一个运行在eclipse上的开源插件,它把python带进了eclipse的王国,如果你本来就是是一个eclipse的用户那么Pydev将给你家里一样的感觉。如果还不是,可能“日食”听起来有点吓人,但是值得你一试。
Pydev能高居榜首,得益于这些关键功能,包括Django集成,自动代码补全,多语言支持,集成的Python调试,代码分析,代码模板,智能缩进,括号匹配,错误标记,源代码控制集成,代码折叠,UML编辑和查看,和单元测试整合
Pydev是由AleksTtotic在2004年创建的,现在由FabioZadrozny进行维护。Pydev在社区用户的帮助,以及Liclipse,Squish,TraceTronic等公司/社团的赞助下持续进行更新。
虽然Pydev是最好的开源pythonIDE,但是它也和另一个名为Liclipse的产品一起打包,Liclipse是一个商业产品,同样也构建在eclipse上,提供了易用性改进和额外的主题选项。
除了python,Pydev也支持JythonandIronPython。
你可以在这里下周Pydev——pydev.org/download.html。
想了解更多,请到Pydev官网——pydev.org。
2.PyCharm–最好的商业pythonIDE
PyCharm是来自JetBrains公司的全功能python开发环境。过去的15年里JetBrains一直致力于发展顶级的开发工具,旨在让开发工作变得轻松和愉快。
PyCharm是专业的python集成开发环境,有两个版本。一个是免费的社区版本,另一个是面向企业开发者的更先进的专业版本。PyCharm的普及可以从这一事实来衡量,即有很多大品牌公司用户,像Twitter,Groupon,Spotify,eBay和Telefonica等都在用PyCharm。
大部分的功能在免费版本中都是可用的,包括智能代码补全、直观的项目导航、错误检查和修复、遵循PEP8规范的代码质量检查、智能重构,图形化的调试器和运行器。它还能与IPythonnotebook进行集成,并支持Anaconda及其他的科学计算包,比如matplotlib和NumPy。
PyCharm专业版本支持更多高级的功能,比如远程开发功能、数据库支持以及对web开发框架的支持等等。
我最喜欢PyCharm的原因是因为它支持很多的第三方web开发框架,比如Django、Pyramid、web2py、googleappengine和Flask,这些也使得它成为了一个完整的快速应用集成开发环境。
3.VIM
VIM是一个很先进的文本编辑器,在python开发者社区中很受欢迎。它是一个开源软件并遵循GPL协议,所以你可以免费的使用它。
虽然VIM是最好的文本编辑器,但是它提供的功能不亚于此,经过正确的配置后它可以成为一个全功能的Python开发环境。此外VIM还是一个轻量级的、模块化、快速响应的工具,非常适合那些很牛的程序员——编程从不用鼠标的人。
初始化配置需要花一定时间,因为你需要安装些VIM的插件,并配置让他们正常工作,最后你会发现这一切都是值得努力的。如果你在寻找一个linux系统下的pythonIDE,那么VIM将是你的不二选择。
4.WingIDE
WingIDE是另外一个商业的、面向专业开发人员的python集成开发环境,由wingware公司开发。15年来WingIDE一直都是一个非常成熟的产品,提供了最新的Python编程所需要的各种工具和特性。
WingIDE可以运行在windows、OSX和Linux系统上,支持最新版本的python,包括stacklessPython(python的增强版)。WingIDE分三个版本:免费的基础版,个人版,以及更强大的专业版。
调试功能是WingIDE的一大亮点,包括多线程调试,线程代码调试,自动子进程调试,断点,单步代码调试,代码数据检查等功能,此外还提供了在树莓派上进行远程调试的功能。
在代码管理方面,WingIDE能非常灵活的与Git、subversion、perforce、cvs、Bazaar、Mercurial等工具集成。
此外,WingIDE也支持其他更多的python框架,比如Maya、MotionBbuilder、Zope、PyQt、PySide、pyGTK、PySide、Django、matplotlib等等。
5.SpyderPython
SpyderPython是一个开源的python集成开发环境,非常适合用来进行科学计算方面的python开发。是一个轻量级的软件,是用python开发的,遵循MIT协议,可免费使用。
Spyderpython的基本功能包括多语言编辑器、交互式控制台、文件查看、variableexplorer、文件查找、文件管理等。SpyderIDE也可以运行于windows、Mac或者Linux系统之上。
虽然Spyder是一个独立的集成开发环境,能运行在windows、MacOS、MacOSX、Linux等系统之上。但是它也可以作为PyQT的扩展库,可以嵌入到PyQT的应用中去。
6.KomodoIDE
Komodo是Activestate公司开发的一个跨平台的集成开发环境,支持多种语言包括python。它是商用产品,但是提供了开源的免费版本叫KomodoEdit,能够安装在Mac、Windows和Linux系统上。
全功能的Komodo对教育机构用户是免费的,老师和教授可以将其应用于实验室及教学中。学生也可以通过较低的费用得到Komodo的授权许可。
和大多数的专业pythonIDE一样,Komodo也提供了代码重构,自动补全,调用提示,括号匹配,代码浏览器,代码跳转,图形化调试,多进程调试,多线程调试,断点,代码分析,集成测试单元等功能,并且集成其他的第三方库,比如pyWin32。
最新版本的Komodo提供了更多的功能与PyCharm、Pydev和WingIDE等其他pythonIDE形成了强烈的竞争关系,比如集成包管理器,变化跟踪,markdown浏览器,shellscope,快速书签等。
7.PTVS-BestPythonIDEforWindows
PTVS(PythonToolsforVisualStudio)集成在VisualStudio中,就像Pydev可以集成在eclipse中一样。PTVS将VisualStudio变成了一个强大的、功能丰富的python集成开发环境,并且它是开源的,完全的免费。PTVS发布于2015年,由社区和微软自己在维护。
PTVS支持几乎所有免费版本的VisualStudio,包括如下版本的VS2015和VS20013:
·CommunityEdition
·ExpressforWeb
·ExpressforDesktop
如果你是一个visualstudio用户,毫无疑问PTVS对于你来说是最好的python集成开发环境。
8.EricPython
Eric是一个开源python代码编辑器和集成开发环境,提供了很多高效编程需要的功能。它是纯python编写的,基于QtGUI并集成了强大的Scintilla编辑器功能。
Eric由DetlevOffenbach创建,遵循GPL协议,免费使用。经过多年的开发完善Eric已经成为一个常用的、功能丰富的集成开发环境。它提供了一个可靠的插件管理系统,可以通过插件来扩展功能。
Eric提供了所有的基础功能,比如调用提示、代码折叠、代码高亮、类浏览器、代码覆盖及分析等等。但是Eric的关键功能让它有了与其他商业pythonIDE竞争的能力:
·集成的任务管理
·单元测试支持–已集成
·重构
·正则表达式和Qt对话框核心插件
·可选择的从编辑器中启动第三方应用程序
·应用程序图
·项目管理
·交互式的Pythonshell
·多语言用户界面,包括英语,德语,俄语,法语,捷克语,西班牙语,意大利语,土耳其语和中文。
·以插件的方式集成版本控制工具Subversion,Mercurial和Git
·其他功能。
9.SublimeText3/AnacondaPythonIDE
SublimeText3是目前为止功能最强大的跨平台的、轻量级的代码编辑器。通过添加插件SublimeText3可以成一个全功能的pythonIDE。
Anaconda带给你最强大的功能是代码自动补全和代码检查。当然Anaconda也很注重基础功能如:各种各样的主题,快速响应的用户界面,配置简单,各种强大的功能扩展包。
10.Emacs-PythonEditorcumIDE
Emacs有属于它自己的生态系统,它是一个可扩展的并能高度定制的GNU文本编辑器。它可以配置为一个全功能的免费的python集成开发环境。
Emacs在python开发中很受欢迎,他通过python-mode提供了开箱即用的python。Emacs可以通过额外的扩展包来增加更多的高级功能。
3. 什么是集成化编译环境
英文:ide(integrated development environment)
通常程序要让它可执行需好几个步骤(以C/C++/汇编为例):
1. 写程序: 可以用任何文本编辑器(但是ide支持语法高亮,所以可以提醒你程序写的对不对,程序读起来也很方便)
2. 编译:由源代码生成机器指令(2进制代码)
3. 链接:几乎所有程序都会调用其他的库,链接就是将库文件和第1步的2进制代码合并到一起(比如设置相应的函数调用的地址)
4. 执行。
除此之外,程序调试还需要debug。手动输一大堆debug命令也非常累人。
ide简化了这些过程,将所有东西都集成到一起,你不用背那几十个编译调试命令(还有上百种编译链接选项),只需点ide里的菜单命令或是按钮就直接完成了一连串步骤。所以有人1天可以编出来的程序,有人要一两周。
另外,如果有人对你说高手都用记事本,你真应该鄙视他。高手绝不是背诵专家,机器人才是。不会使用或是拒绝使用工具的人,简直是要大家赤手空拳对抗别人的ak47。害人害己!选个好的ide,把时间省下来去搞清原理,去学习算法,去设计。千万不要浪费自己的时间去用记事本写程序,背程序,做一个机器人。
4. 怎样使用 MSBuild 自动编译和发布 NET 网站
很多.NET 程序员开发的时候,每次都需要涉及到各个环境的部署问题,但是手工操作的话又容易出错,而且非常麻烦,我们今来讲解怎样实现自动编译和发布 .NET 网站。废话不多讲,先讲讲我的初步实现方案。
MSBuild 自动编译和发布 NET 网站步骤:
准备工具:GIT版本控制(gitlab),Jenkins, msbuild
1、安装git版本控制器,提交代码。(svn好像也可以), 并生成ssh public key上传到gitlab的ssh key中(个人配置/SSH KEY)。
2、安装jenkins开源工具。
3、Jenkins安装git plugin, Msbuild插件(Manager Jenkins/Manage Plugins)
4、配置Jenkins中的git(Manager Jenkins/Configure System)在git栏中输入name和Path: git install path\cmd\git.exe
5、添加对应.NET framework version MSBuild
Name: .NET4.0
Path to MSBuild:
%system%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
6、建立.NET项目文件,并添加MSBuild文件
建立一个解决方案nonsuch.sln,里面包含一个website: nonesuch.web.
在解决方案根目录建立一个xml文件,改名为: build.targets