导航:首页 > 操作系统 > perforceforlinux

perforceforlinux

发布时间:2022-12-19 10:06:49

㈠ 如何用python添加perforce文件

一 p4的API支持几乎所有的常用的语言
1)查看p4 API 主页
2)支持几乎所有的语言:
Perforce C/C++ API
Perforce java API
Perforce Perl API
Perforce Ruby API
Perforce Python API
Perforce php API
Perforce Objective-C API
P4COM, a COM Interface to the Perforce C++ API for Windows

二 p4python
1)安装(以windows为例)
下载和安装python2.6;(可以安装activepython)
下载和安装p4python26;(ftp://ftp.perforce.com/perforce/r09.2/bin.ntx86/p4python26.exe)
2)安装后(C:\Python26\Lib\site-packages)
文件:P4.py + P4.pyc + P4API.pyd + P4Python-2009.2-py2.6.egg-info。其中P4API.pyd为python对p4的extension模块,里面定义了 P4API.P4Adapter可惜看不到源码,P4.py 里面包含了p4 class的定义,p4class从P4API.P4Adapter继承。
3)p4.py
在p4.py中定义了
• P4
• P4Exception
• DepotFile
• Revision
• Integration
• MergeData
• Spec
其中主要的p4 class定义如下:
import P4API

class P4(P4API.P4Adapter):
"""Use this class to communicate with a Perforce server

Instances of P4 will use the environment settings (including P4CONFIG)
to determine the connection parameters such as P4CLIENT and P4PORT.

This attributes can also be set separately before connecting.

To run any Perforce commands, users of this class first need to run
the connect() method.

It is good practice to disconnect() after the program is complete.
"""
# Constants useful for exception_level
# RAISE_ALL: Errors and Warnings are raised as exceptions (default)
# RAISE_ERROR: Only Errors are raised as exceptions
# RAISE_NONE: No exceptions are raised, instead False is returned

RAISE_ALL = 2
RAISE_ERROR = 1
RAISE_NONE = 0

def __init__(self, *args, **kwlist):
P4API.P4Adapter.__init__(self, *args, **kwlist)

def __del__(self):
if self.debug > 3:
print >>sys.stderr, "P4.__del__()"

# store the references to the created lambdas as a weakref to allow Python
# to clean up the garbage. |The lambda as a closure stores a reference to self
# which causes a circular reference problem without the weakref

def __getattr__(self, name):
if name.startswith("run_"):
cmd = name[len("run_"):]
return lambda *args: self.run(cmd, *args)
elif name.startswith("delete_"):
cmd = name[len("delete_"):]
return lambda *args: self.run(cmd, "-d", *args)
elif name.startswith("fetch_"):
cmd = name[len("fetch_"):]
return lambda *args: self.run(cmd, "-o", *args)[0]
elif name.startswith("save_"):
cmd = name[len("save_"):]
return lambda *args: self.__save(cmd, *args)
elif name.startswith("parse_"):
cmd = name[len("parse_"):]
return lambda *args: self.parse_spec(cmd, *args)
elif name.startswith("format_"):
cmd = name[len("format_"):]
return lambda *args: self.format_spec(cmd, *args)
else:
raise AttributeError, name

def __save(self, cmd, *args):
self.input = args[0]
return self.run(cmd, "-i", args[1:])

def __repr__(self):
state = "disconnected"
if self.connected():
state = "connected"

return "P4 [%s@%s %s] %s" % \
(self.user, self.client, self.port, state)

def identify(cls):
return P4API.identify()
identify = classmethod(identify)

def run(self, *args):
"Generic run method"
return P4API.P4Adapter.run(self, *self.__flatten(args))

def run_submit(self, *args):
"Simplified submit - if any arguments is a dict, assume it to be the changeform"
nargs = list(args)
form = None
for n, arg in enumerate(nargs):
if isinstance( arg, dict):
self.input = arg
nargs.pop(n)
nargs.append("-i")
break
return self.run("submit", *nargs)

def run_login(self, *args):
"Simple interface to make login easier"
self.input = self.password
return self.run("login", *args)

def run_password( self, oldpass, newpass ):
"Simple interface to allow setting of the password"
if( oldpass and len(oldpass) > 0 ):
self.input = [ oldpass, newpass, newpass ]
else:
self.input = [ newpass, newpass ]

return self.run( "password" )

#
# run_filelog: convert "p4 filelog" responses into objects with useful
# methods
#
# Requires tagged output to be of any real use. If tagged output it not
# enabled then you just get the raw data back
#
def run_filelog( self, *args ):
raw = self.run( 'filelog', args )
if (not self.tagged):
# untagged mode returns simple strings, which breaks the code below
return raw
result = []
for h in raw:
r = None
if isinstance( h, dict ):
df = DepotFile( h[ "depotFile" ] )
for n, rev in enumerate( h[ "rev" ]):
# Create a new revision of this file ready for populating
r = df.new_revision()
# Populate the base attributes of each revision
r.rev = int( rev )
r.change = int( h[ "change" ][ n ] )
r.action = h[ "action" ][ n ]
r.type = h[ "type" ][ n ]
r.time = datetime.datetime.utcfromtimestamp( int( h[ "time" ][ n ]) )
r.user = h[ "user" ][ n ]
r.client = h[ "client" ][ n ]
r.desc = h[ "desc" ][ n ]
if "digest" in h:
r.digest = h[ "digest" ][ n ]
if "fileSize" in h:
r.fileSize = h[ "fileSize" ][ n ]

# Now if there are any integration records for this revision,
# add them in too

if (not "how" in h) or (n >= len(h["how"]) or h["how"][n] == None):
continue
else:
for m, how in enumerate( h[ "how" ][ n ] ):
file = h[ "file" ][ n ][ m ]
srev = string.lstrip(h[ "srev" ][ n ][ m ], '#')
erev = string.lstrip(h[ "erev" ][ n ][ m ], '#')

if srev == "none":
srev = 0
else:
srev = int( srev )

if erev == "none":
erev = 0
else:
erev = int( erev )

r.integration( how, file, srev, erev )
else:
r = h
result.append( df )
return result

def run_print(self, *args):
raw = self.run('print', args)
result = [raw.pop(0), ""]

for line in raw:
result[-1] += line
return result

def run_resolve(self, *args, **kargs):
myResolver = Resolver()
if "resolver" in kargs:
myResolver = kargs["resolver"]

savedResolver = self.resolver
self.resolver = myResolver
result = self.run("resolve", args)
self.resolver = savedResolver

return result

def __flatten(self, args):
result = []
if isinstance(args, tuple) or isinstance(args, list):
for i in args:
result.extend(self.__flatten(i))
else:
result.append(args)
return tuple(result)

def __enter__( self ):
return self

def __exit__( self, exc_type, exc_val, exc_tb ):
if self.connected():
self.disconnect()
return True

def connect( self ):
P4API.P4Adapter.connect( self )
return self

@contextmanager
def while_tagged( self, t ):
old = self.tagged
self.tagged = t
yield
self.tagged = old

@contextmanager
def at_exception_level( self, e ):
old = self.exception_level
self.exception_level = e
yield
self.exception_level = old

@contextmanager
def saved_context( self , **kargs):
"""Saves the context of this p4 object and restores it again at the end of the block"""

saved_context = {}
for attr in self.__members__:
saved_context[attr] = getattr(self, attr)

for (k,v) in kargs.items():
setattr( self, k, v)

yield

# now restore the context again. Ignore AttributeError exception
# Exception is expected because some attributes only have getters, no setters

for (k,v) in saved_context.items():
try:
setattr( self, k, v )
except AttributeError:
pass # expected for server_level and p4config_file

三 实例
1)p4info.py
from P4 import P4,P4Exception

p4 = P4()
p4.port = "localhost:1666"
p4.user = "AAA"
p4.password = "aaa"
p4.client = "TestProject_AAA"

try:
p4.connect()
info = p4.run("info")
for key in info[0]:
print key, "=", info[0][key]
p4.disconnect()
except P4Exception:
for e in p4.errors:
print e
结果:

2)p4sync.py
from P4 import P4, P4Exception

p4 = P4()
p4.port = "localhost:1666"
p4.user = "AAA"
p4.password = "aaa"
p4.client = "TestProject_AAA"

try:
p4.connect()
p4.exception_level = 1 # ignore "File(s) up-to-date"
files = p4.run_sync()
for file in files:
for key in file.keys():
print key,":",file[key]
print "----------"
except P4Exception:
for e in p4.errors:
print e
finally:
p4.disconnect()
结果:

3)p4submit.py
from P4 import P4

p4 = P4()
p4.host = "localhost"
p4.port = "1666"
p4.user = "AAA"
p4.password = "aaa"
p4.client = "TestProject_AAA"

p4.connect()
changeSpec = p4.run_change( "-o" )
change = changeSpec[0]
change["Description"] = "Autosubmitted changelist"

p4.run_edit("//depot/TestProject/addfile.txt")

change["Files"] = ["//depot/TestProject/addfile.txt"]
p4.input = change
p4.run_submit( "-i" )
p4.disconnect()

㈡ 作为程序员的你,常用的软件有哪些

这个就非常多了,下面我以常见的编程开发软件和数据库管理软件为例,简单介绍几种,感兴趣的朋友可以尝试一下:

01 编程开发软件

这个要看具体编程语言了,不同语言开发工具自然不同,这里以常见的C/C++、Java和Python为例,简单介绍3种比较常用的软件:

这是Windows平台下一个非常专业的集成开发工具,号称宇宙第一IDE环境,不仅仅只是C/C++,常见的C#、VB等编程语言,这个软件都能很好支持,智能补全、代码高亮、语法检查等功能非常不错,除此之外,还支持单元测试、代码重构和分析等高级功能,因此非常适合大型项目开发和维护:

这是一个非常专业智能的Java开发工具,在企业和个人桌面中,有着非常高的使用率和欢迎度,自动补全、语法提示、代码高亮等功能非常不错,除此之外,还支持JUnit、CVS整合、代码重构等高级功能,自带有Maven和Gradle构建工具,因此更适合Java项目开发和维护,个人使用起来非常不错:

这是一个非常专业的Python开发软件,和IntelliJ IDEA一样,Jetbrains公司的产品,在业界非常流行、受欢迎,智能补全、代码高亮、语法提示等功能非常不错,除此之外,还支持代码重构和分析、单元测试等高级功能,因此更适合大型项目,个人使用来说,也非常简单,很容易上手和掌握:

02 数据库管理软件

这个就非常多了,不同数据库都有专门的管理软件和工具,这里简单介绍3个比较通用的数据库管理软件,分别是HeidiSQL、DBeaver和DataGrip,对于日常使用来说,非常不错:

这是Windows平台下一个非常轻巧灵活的数据库管理软件,基于Delphi开发而来,目前支持MySQL、MariaDB、MSSQL、PostgreSQL等主流数据库,常见的建库建表、视图索引、触发器等基本功能,这个软件都能很好兼容,除此之外,还支持SQL脚本导入导出、数据备份恢复等功能,对于日常数据库管理来说,非常不错:

这是一个基于Java开发的数据库管理软件,免费、开源、跨平台,目前支持Oracle、MySQL、PostgreSQL、SQL Server等十几种主流数据库开发,建库建表、视图索引、触发器、存储过程等基本功能 都 可轻松查看和设计,数据库导入导出、数据 恢复 备份等功能也都非常不错,对于日常数据库管理和维护来说,是一个非常不错的工具:

这也是一个通用的数据库管理软件,Jetbrains公司的产品,支持跨平台,但原则上针对个人不免费,常见的PostgreSQL、MySQL、Oracle等数据库,这个软件都能很好支持, 数据导入导出( 恢复备份 )、 智能代码填充、版本 集成 控制等功能非常不错,对于日常数据库管理来说,也是一个不错的工具:

每天常用开发工具:

0.Git:分布式版本控制系统;

1.IntelliJ IDEA:java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一;

2.Sublime Text:不只是代码编辑器;

3.Postman:Http请求模拟工具和功能强大的网页调试工具;

4.DataGrip:支持几乎所有主流的关系数据库、多功能的数据库操作工具;

5.Vagrant:用于创建和部署虚拟化开发环境,配合虚拟机使用;

6.Gradle:自动化构建工具;

7.JIRA:项目与事务跟踪工具;

8.iTerm2:Mac上的终端工具;

9.Jenkins:持续集成工具。

做了一个写代码用了十几年的人,很多编程的习惯已经养成了,现在就罗列下每天必用的软件:

直接安装的linux系统,因为几乎所有的代码都是在linux下完成


java开发环境


C/C++代码编辑工具


linux下虚拟windows系统virtualBox


软件提交工具git

不同的开发语言,每天要用到的软件可能不一样。

我是开发java web的,电脑安装了很多工具,但是说每天要用到的好像就几个。


作为程序员使用最多的软件,莫过于编程开发所用到的软件编辑器,但是编辑器的种类有很多。我们需要做到的是,找到你最喜欢的编辑器然后熟练的使用它。

同时掌握常见的一些快捷键的操作方式,从而来提升我们的工作效率,而不是以软件而论软件,什么都去接触使用。毕竟软件是工具是帮助我们提升开发效率。


下面我就列举我们PHP经常使用的软件

IDE工具类软件

这一类是开发软件编写代码用的。这一类的软件非常多,我就推荐一个经常使用的PHPStorm,因为太多的话大家也用不到,也没有那么多的精力去熟练每一个编辑器。


PHPStorm是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可以说是PHP开发程序员必备的神器。

常用快捷键如下:

1.复制快捷方式

F5 复制文件/文件夹

CTRL+C 复制

CTRL+V 粘贴

CTRL+X 剪 切,删除行

CTRL+D 复制行

CTRL+SHIFT+V 可以复制多个文本

2.自动代码

ALT+回车 导入包,自动修正

CTRL+ALT+L 格式化代

码CTRL+ALT+I 自动缩进

CTRL+ALT+O 优化导入的类和包

CTRL+SHIFT+SPACE 切换窗口

CTRL+SPACE空格 代码自动完成,代码提示,一般与输入法冲突

CTRL+ALT+SPACE 类 名或接口名提示(与系统冲突)

CTRL+P 方法参数提示,显示默认参数

CTRL+J 自动代码提示,自动补全

CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里ALT+INSERT 生成代码(如GET,SET方法,构造函数等)

3.运行

Alt + Shift + F10 选择的配置和运行

Alt + Shift + F9 选择配置和调试

Shift + F10 运行

Shift + F9调试

Ctrl + Shift + F10运行范围内配置编辑器

Ctrl + Shift + X运行命令

4.其他快捷方式

CTRL+Z 倒退(代码后悔)

CTRL+SHIFT+Z 向前

CTRL+H 显 示类结构图

Ctrl +F12 文件结构弹出

CTRL+O 魔术方法

CTRL+/ 注释//取消注释

CTRL+SHIFT+/ 注释/*...*/

ctrl + '.': 折叠选中的代码的代码

ALT+ / 切换代码视图,标签切换

5.其他快捷方式

CTRL+Z 倒退(代码后悔)

CTRL+SHIFT+Z 向前

CTRL+H 显 示类结构图

Ctrl +F12 文件结构弹出

CTRL+O 魔术方法CTRL+/ 注释//取消注释

CTRL+SHIFT+/ 注释/*...*/

ctrl + '.': 折叠选中的代码的代码

ALT+ / 切换代码视图,

数据库相关常用的工具

Navicat for MySQL是管理数据库的操作工具,都是可以连接远程的云数据库。方便简化开发,还可以手动备份、可视化的sql分析。

常用快捷键:

ctrl+q 打开查询窗口

ctrl+/ 注释sql语句

ctrl+shift +/ 解除注释

ctrl+r 运行查询窗口的sql语句

ctrl+shift+r 只运行选中的sql语句

F6 打开一个mysql命令行窗口

ctrl+d (1):查看表结构详情,包括索引 触发器,存储过程,外键,唯一键;(2):复制一行

ctrl+l 删除一行

ctrl+n 打开一个新的查询窗口

ctrl+w 关闭一个查询窗口

ctrl+tab 多窗口切换

服务器连接软件

XShell6是非常强大的SSH远程终端客户端,帮助我们连接远程的Linux服务器来进行操作。

粘贴:Shift+Insert

历史 命令编辑ctrl + p 返回上一次输入命令字符

alt + > 返回上一次执行命令

其它

ctrl + s 锁住终端

ctrl + q 解锁终端

ctrl + l 清屏相当于命令clear

Tab键,快速补全命令

轻量级文本编辑器

Notepad++。这个很轻量,打开一下文本非常的方便。

常用快捷键

Ctrl+C 复制

Ctrl+X 剪切

Ctrl+V 粘贴

Ctrl+Z 撤消

Ctrl+Y 恢复

Ctrl+A 全选

Ctrl+F 键查找对话框启动

Ctrl+H 查找/替换对话框

Ctrl+D 复制并粘贴当行

Ctrl+F2 切换书签

F2 转到下一个书签Shift+F2 转到上一个书签

F11 全屏模式


综上所述,软件只是一个工具,我们需要找到自己喜欢使用的,然后熟练一些常用的快捷方式即可,而并不是在于数量多。

前端

visual studio code

后端:

pycharm

IDEA

安卓:

android studio

浏览器:

谷歌

火狐

数据库管理:

navicat


远端链接:

fileZilla

xshell

electerm(mac上使用)


流程图设计:

xmind

processOn

笔记:

为知笔记(付费一年60)

有道云笔记

虚拟机(容器)

VMware Fusion(mac上)

docker


其他:

postman

jmeter

作为一个12年开发经验的前端程序员,我来聊聊每天必用的几个软件。

写代码自然离不开 编辑器 。目前我主要使用的是微软的 Visual Studio Code 。VS Code比较轻量,功能足够应付日常开发所需,跨平台,而且完全免费 。因为之前长期使用Visual Studio在Windows平台上做开发,后来技术栈变化,经常需要在Linux和MacOS上做开发,VS Code就成了我顺理成章的选择。后来干脆在Windows上也用VS Code了。目前整个团队都已经被VS Code圈粉了。其它类似的如Sublime Text(需要付费)和Atom也有不少人使用。

因为是团队开发, 源代码管理工具 自然必不可少,而 git 是目前最热门的一个。我们公司也不例外,几年前从Perforce迁移到了 GitHub企业版 (和公众版本UI完全相同)。平时的代码审查也都是在GitHub企业版上完成的,不再使用单独的代码审查工具。有些不习惯使用命令行方式的同事使用 SourceTree 完成日常的代码分支管理和提交,而我则比较热衷于命令行方式。VS Code也提供了比较完善的git集成,但因为习惯的原因,除了直观比较不同代码版本的差异,我一般也不用VS Code执行git操作。

作为一个Web前端, 浏览器及前端调试工具 自然不可或缺, Google Chrome + Developer Tools (F12) 自然是首选。使用Developer Tools,可以对JavaScript进行调试,监控HTTP请求/响应,分析CSS计算问题和JS性能问题。 Chrome下还有很多功能强大的插件,个人比较常用的包括React Developer Tools、PostMan、Proxy SwitchOmega和AdBlock。当然,因为经常面对浏览器兼容性问题,Firefox、IE、Edge、Apple Safari以及各自的Developer Tools都是免不了要用的。

团队目前使用Scrum模型,自然需要一个做 任务规划和质量管理 的工具。我们采用了 JIRA , 每天的站会(daily stanp meeting)都会对scrum看板(board)进行更新。

遇到技术问题,自然免不了要上网查找资料。 Google 的使用频率非常高(需要科学上网)。大部分问题都能在 StackOveflow 上找到线索,但有时候也不得不跑到大名鼎鼎的同性交友网站 GitHub 上看源码。 MDN (Mozilla Developer Network)对于前端开发也是不可或缺(此处鄙视一下w3cschool,上面到处是错误知识)。

其它如node.js/npm、docker等,因为和具体的技术栈相关,就不具体展开讲了。

作为一个开发人员,你每天使用什么软件呢,欢迎说说看。

尽管我是后端出身的,不过也经常写前端代码,甚至还用C#/C++参与过一些客户端开发,自认为也算是一个Web全栈工程师。随着前端技术的不断进步,现在的前端已经不再是写写页面这么简单了,很多逻辑在前端就写了,我建议每一个出色的开发者应该尽可能对前后端都能有不错的掌握。

今天给大家推荐一些我认为前端和后端开发都需要经常用到的一些软件,这里面包括了查询资料工具、原型工具、文本编辑器、版本管理工具。

原型工具

不管前端还是后端,尤其是前端程序员,在跟产品经历沟通之后肯定会要查看原型的,方便自己在开发过程中使用,基本上大公司输出的原型都比较规范,除非你遇到张小龙这种级别的大神,哥们儿直接盯着你做了。

目前主流的原型工具主要有Axure、MockPlus、墨刀等,其中Axure依然是应用最为广泛的原型工具,大多数开发者也都应该用来看原型。

文本编辑器

不管是前端还是后端程序员,当然前端程序员就不说了,在WebStorm出现之前,没有一款真正可以叫做IDE的前端开发工具,那么基本上文本编辑器就是前端程序员最重要的编程工具。同样后端程序员即使不需要写前端代码,文本编辑器也是必备的,您不需要每次看代码都打开庞大的集成开发环境,像IDEA这种比较耗费资源的,平时查看代码啥的完全没有必要,何况你还经常要看一些前端代码。

当然你比较习惯Linux/Unix下开发,Emacs/Vim可能是你用得比较多的文本编辑器,还有UltraEdit、Sublime Text、EditPlus、Atom这些老牌的文本编辑器,不过现在我觉得每个程序员都应该下载一个Visual Studio Code,支持的语言比较多,而且插件非常丰富,是微软官方支持的开发者工具,开源免费而且颜值非常高。

查询资料、版本管理工具

不用多说,每个程序员都要学会很好的使用Google、Stack Overflow两个工具,可以说你日常开发当中可能遇到的问题,通过这两个工具你全都能找到解决方案。

另外一个是Dash文档管理工具,Dash是一个非常好的开发者帮助文档工具,这个工具的好处是给所有的开发文档做了一个整合,C/C++、Java、PHP、Python、Latex、Emacs Lisp、Haskell、JavaScript、Go语言等文档都能够在这个工具当中下载使用。

最后一个就是版本管理了,SVN和Git依然是目前使用最为广泛的版本管理工具,不过就使用来说我还是推荐Git版本控制系统,可以说这个时代Git就是最好的版本管理工具了,尤其是开源时代、互联网时代,Git已经成为了最重要的版本管理工具,不管是命令行管理还是使用Github等客户端工具,堪称完美。

入行十一年,现在主要做一些管理和架构方面的工作,也会做一些Coding,主要是一些新技术的研究和“踩坑”。

编辑器

首先是EditPlus,这是一个文本编辑器。最常用的两个功能:正则表达式查询和文件夹内所有文件内容搜索。

平时经常需要看一些系统日志,甚至要从好几天几十个日志文件中找到内容,这个软件很好用。(原谅我们没有上日志平台)

然后就是IDE啦,我还是喜欢用Eclipse,有时候会用STS(Spring Tool Suite),它也是一个被包装过的Eclipse,方便做一些Spring框架的研究。



数据库工具

一个是DbVisualizer,凡是具有JDBC数据库接口的数据库都可以管理,什么数据库都能连。

还有一个是SQLyog,这是一个快速而简洁的图形化管理MYSQL数据库的工具,我只用里面一个功能,就是数据的导入导出,效率非常高!



接口测试工具

大部分项目只对外提供接口服务,所以接口测试工具少不了,我一般使用SoapUI,WebService/Rest都可以进行测试。



其他

每天肯定会用的肯定不止上面几个,还有版本控制工具svn和git,都会用到是因为单位svn现在开始往git迁移。

因为用的Scrum敏捷开发流程,所以JIRA、Sonar、Fisheye这些也是都会用到的。

Maven也不用说了,几个项目基本都是基于Maven构建的。

必用的基本就是这些,只要电脑开着,这几个软件基本都是打开状态。

㈢ linux 下写php什么编辑器比较爽

PHP 的系列文章让我更加深刻地了解了 PHP 开发人员的世界。我和许多 PHP 程序员交谈过,最令我惊奇的是只有很少的人使用 IDE。大多数程序员使用文本编辑器,比如 Microsoft? Windows? 上的记事本、Emacs 或者 Vim。
我提到的这些文本编辑器(以及我没提到)都是很不错的 —— 我不想讨论哪个编辑器更好。但是,我要强调的是不使用文本编辑器会使您对 PHP 代码有更深的见解。几乎所有人都将 PHP 项目视为只不过是文件目录而已(这种看法十分片面)。现在就让我带您进入 IDE 的世界,向您展示 IDE 能够 —— 或者应该 —— 给您带来什么,并向您介绍七个最流行的 IDE。
什么是 IDE?
简而言之,IDE 为编码工作提供了一站式服务。IDE 包括一个编辑器,在此编辑器内可以编辑代码、调试代码、在浏览器(通常是嵌入式的)中查看代码和签入和签出源码控制。为了支持这些功能,IDE 拥有一套在基本编辑器(比如记事本或者 Vim)中所找不到的特性。当然,您可以通过扩展编辑器来实现这些功能,但是 IDE 在一个精简软件包中囊括了所有这些功能 —— 并都已预配置:
项目
IDE 的一个关键特性是它把一个 PHP 应用程序看作是一个项目,而不仅仅是一组文件。这个概念 —— 项目 —— 维护额外的信息,比如源码控制的配置、用于调试的数据库设置,以及某一关键目录所在位置。
调试
另一个方便的特性是集成调试。使用这个功能,可以在编辑器中设置断点,当 PHP 解释程序执行到这个脚本时就会停止。从断点开始,就可以检查局部变量的值,在代码中诊断问题。在代码中可以使用 echo 语句来检查值或者也可以使用错误日志获得变量的值。
代码智能
PHP 是一种非常规则的编程语言,这意味着它遵循着简单的模式。这些模式不仅使代码易于编写,也使 IDE 在项目中检查代码变得很容易。此外,它们可以通过显示检查结果帮助您编写程序。例如,如果在项目中定义了一个名为 MyClass 的类,在键入关键词 new 时,IDE 会立即提供一个包括 MyClass 作为选项的弹出窗口。当使用那种类型的对象时,IDE 就会显示它的可用方法和实例变量。当开始键入一个函数命令时,IDE 就会显示它的可用参数。公正地说,这是应该使用 IDE 而不是文本编辑器的首要原因。这种代码智能可以有效减少敲错类名、方法名和参数。
类视图
IDE 中的代码智能引擎产生的另一个作用是 IDE 可以产生项目的 类视图。系统不是显示文件,而是显示已经定义的不同的类,而不管它们所在的文件。当单击类时,编辑器访问相应文件并显示相应类、方法或者实例变量。这在大项目中是一种非常好的导航方法。
多语言支持
这里提到的每种 IDE 不仅支持 PHP 而且支持相关语言集:JavaScript、Structured Query Language(SQL)、Hypertext Markup Language(HTML)和 Cascading Style Sheets(CSS)。因为 HTML 和 CSS 比较简单,所以 IDE 对它们的支持是最好的。对于 JavaScript 的支持经常会突出语法,但是支持比不支持要好。
源码控制
这里评价的所有 IDE 都支持一些与源码控制系统的连接,允许随着时间维护项目中的文件版本。可以标记文件的特别版本为发布版本,这样在需要撤销改动的时候就可以恢复。在团队环境中使用源码控制系统是很关键的,即使对于个人使用也很重要。当磁盘瘫痪或者客户突然想要以前的版本而不是现在的版本的时候,一个好的源码控制系统就可以发挥作用了。大多数的 IDE 都支持 Concurrent Version System (CVS) 和 Subversion,它们都是开源控制系统。其中一种 IDE 支持 Perforce —— 一款商业源码控制系统。
FTP/SFTP 集成
与源码控制相关的一种功能是在服务器中对于最新的代码使用 FTP 。这比使用 FTP 客户机或者自己打包文件并发送给服务器然后再解包要容易许多。
数据库导航
一个非基本但十分有用的特性是数据库导航。使用这个特性,可以浏览应用程序访问的数据库、找到表格和字段名并返回查询结果。一些系统甚至可以自动写入一些数据库访问代码。
集成 Web 浏览器
一些 IDE 支持集成 Web 浏览器,可以直接导航到正在使用指定的附加参数编辑的页面,这个浏览器可以宿主在 IDE 内,也可以外部调用。诚实地讲,我并不大喜欢集成浏览器,因为我不介意在编辑代码和查看结果这两个独立的应用程序之间切换。但是我知道它确实有一定的作用,但您不必一定要使用它。
片段
在所有这些 IDE 中我发现的最后一个特性是对于整段和定制代码片段的支持。片段 是完成小任务(比如在一些输入中运行常规表达式、连接到数据库和查询数据库)的小部分代码。
以上总结了目前从购买的或者开源的 IDE 中可以预期的核心特性。接下来,将会介绍一些流行的 IDE,展示一些 IDE 图片,并将解释它们所支持的功能及其成本。
回页首
Eclipse
在 Eclipse 开发平台中有两个插件支持 PHP。第一个 PHP IDE 项目是 Eclipse Foundation 项目,这意味着它在 Eclipse 许可范围内发布,并使用 Eclipse Foundation 工具和方法开发。
另一个是 PHPEclipse,它是独立开发的。因为使用 Eclipse,所以这两个插件都可以在三大操作系统中运行:Windows、Linux? 和 Mac OS X。您可以只下载这两个插件(如果已经使用 Eclipse),或者下载包含所需要的全部内容的 pre-fab 版本。
这两个插件都支持核心 IDE 特性。特别是代码智能特性,它十分强大,可以在需要的时候弹出并显示所有需要的类、方法和参数信息。
图 1 显示了 Mac OS X 上运行的 PHPEclipse。左边是在项目中文件的项目视图。下面是类视图,显示所有已经定义的类。中间是代码。可以同时在多个选项卡中打开多个文件。右边是调试和浏览的面板。这是常用的 PHPEclipse 用户界面。
图 1. OS X 上的 PHPEclipse
OS X 上的 PHPEclipse
图 2 显示了来自 Eclipse Foundation 的 PHP IDE 项目插件。
图 2. OS X 上的 PHP IDE 项目
OS X 上的 PHP IDE 项目
如果您不能看出区别,没有关系。这两个插件看起来确实非常类似,因为它们都依靠 Eclipse 平台呈现代码浏览和智能特性。Eclipse 插件 GUI 能够保持连贯性是件很好的事情。
我没有发现哪一个插件可以把您锁定在某一个 Eclipse 项目中。您可以经常地将一个插件换成另一个插件。在我有限的测试中,我更喜欢 PHP IDE 项目插件,因为我感觉它集成得更好,而且代码智能特性的性能似乎更快捷。试试这两个插件,看看您更喜欢哪一个。
这两个插件的缺点是 UI 不是为 PHP 量身订做的,原因是 Eclipse 可以用于几乎所有的编程语言。结果是,Eclipse 的术语最初有些另类。如果您刚开始学习 Eclipse,那么这些插件的学习比其他 IDE 更难一些。但是,如果已经了解 Eclipse,那么您就能比较快地熟悉 PHPEclipse 或者 PHP IDE 项目。
Eclipse 和这些插件的最大优点是什么?它们是免费的,而且稳定、可靠。哦,我提到它们是免费的吗?
回页首
Komodo
下一个要介绍的是 ActiveState 的 Komodo IDE。这个 IDE 在 Windows、Mac OS X 和 Linux 上运行,并支持通用的开源语言 —— Perl、PHP 和 Ruby。代码智能引擎非常可靠。它扫描所有语言安装找到定制扩展,比如 PEAR 模块。在项目方面,它支持与 CVS、Subversion 和 Perforce 的集成,也允许直接向服务器 FTP 传递代码。
图 3 显示了在 Windows 上运行的 Komodo。左边是类视图,右边是项目视图。中间的主要部分是代码视图。下面是调试用的断点、命令输出等等。对于所有这些系统,都可以根据需要定制 UI 。
图 3. 在 Windows 上运行的 Komodo
在 Windows 上运行的 Komodo
Komodo 是一个商业产品。在我写作本文的时候,这款 IDE 有个人版(US$29.95)和专业版(US$299.95)两个版本可选。它的一个独特的特性是常规表达式调试器。不管您是常规表达式的新手还是已经开始涉足高级常规表达式特性,这点购买的投入都是很值得的。
它的缺点是没有数据库集成(至少我没有找到),而且我还遇到了代码智能不总是在想要的时候弹出的小问题。但是,总的来说,Komodo 还堪称是一款健壮的、特色丰富的、可靠的 PHP IDE。
回页首
PHP 设计器
PHP 设计器与其他 IDE 不太相同。当然,它支持有限的代码智能。但是,它更集中于 PHP Web 应用程序的设计方面。这一点在其集成的浏览器上可见一斑,该浏览器特别地采用了像素标尺用于帮助在页面上定位元素。
图 4 显示了运行的 PHP 设计器。
图 4. 在 Windows 上的 PHP 设计器
在 Windows 上的 PHP 设计器
PHP 设计器中的 PHP 的代码智能和调试特性不是很显着,而对 HTML、CSS 和 JavaScript 的代码智能支持上要相对更强一些。PHP 设计器介于程序员使用的 IDE (主要侧重于代码)和 Adobe Dreamweaver (更侧重于设计)之间。如果您正在寻找这类中间产品,那么 PHP 设计器很值得考虑,因为 IDE 对于个人使用是免费的,而其专业版也只需 US$55。
回页首
PhpED
NuSphere 的只用于 Windows 的 PhpED 在所有这里介绍的 IDE 中特性是最丰富的。它有一个很好的内部调试器,并为了更容易地访问页面调试而把调试工具条放到了 Microsoft Internet Explorer?之内。
图 5 显示了在 Windows 中使用 PHPEd 开发 PHP 应用程序。在最左边是项目的文件视图。右边紧挨着的是类视图,最右边是代码视图。下面是输出状态。您可能已经注意到,所有这些 IDE 都遵循着相同的基本设计风格。
图 5. 在 Windows 中的 PhpED
在 Windows 中的 PhpED
PhpED 的突出特性包括一个很棒的调试器、优秀的数据库访问、较好的代码智能特性以及集成的 PHP 帮助。PhpED 的价格范围从基础版本的 US$119 到专业版本的 US$495。另外还有试用版本可用。
回页首
PHPEdit
来自 WaterProof Software 的 PHPEdit 感觉像是应用于 PHP 的 Microsoft msdev 环境 —— 这是个不错的事情。PHPEdit 是仅用于 Windows 的 IDE,很容易设置。它甚至还有 PHP 的版本。在 PHP、CSS 和 HTML 的代码智能方面它做得很好,但是却不提供对 JavaScript 的代码智能的支持。图 6 显示了运行的 PHPEdit。
图 6. 在 Windows 中的 PHPEdit
在 Windows 中的 PHPEdit
为了便于部署,PHPEdit 可以连接到 CVS 和 Subversion,以及 FTP 和它自己专有的 ezDeployment 系统。除了代码智能特性,为了加速开发,这款 IDE 有一个极好的代码示例整体模板库,您还可以向库里面添加内容。PHPEdit 的评估版本可以免费使用,要得到正式版本,需要 US$89。
回页首
Zend Studio
最后,我们谈谈 Zend Studio,它被最后列出只是因为它以 Z 开头。它可能应该是您第一个想到的。为什么?因为它来自 Zend —— PHP 幕后的精英团队。 而且它真的是很不错。它运行于三大系统:Windows、Mac OS X 和 Linux。而且绝对能够提供您所需要的一切:PHP V4、PHP V5 等等。它的下载需要花很长时间,但是非常值得。
作为 IDE,Zend Studio 是最好的。它提供所有想在内置库和定制代码中拥有的代码智能特性。它还有非常好的调试功能,而且极易设置。要把代码放到存储库(repository)中,Zend Studio 会连接到 CVS 和 Subversion。要把代码放到服务器上,有集成 FTP 可以使用。Zend Studio 非常适合 Macintosh,如图 7 所示。
图 7. 在 Mac 上的 Zend Studio
在 Mac 上的 Zend Studio
在其他一些 IDE 中,代码片段是内置的以使代码编制更为容易。这款 IDE 也直接集成了数据库以给出可用的表格和字段。
Zend Studio 的标准版需要 US$99,专业版需要 US$299。我在这里提到的某些特性在标准版本中没有包含。Zend Studio 试用版本可以免费使用。
回页首
结束语
有许多极好的 IDE 可供选择 —— 其中一些甚至是免费的 —— 您尽可以选择一个试用一下,如果您是专业人员,就更应如此。您可能需要支付公司或者个人的顾问费用,也可能要花钱购买必需的商品。如果考虑使用 echo 调试代码对比使用集成的调试器所花费的时间,IDE 的购买价格绝对会物有所值。

㈣ python编程语言的集成编译环境哪个好用

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可以通过额外的扩展包来增加更多的高级功能。

㈤ perforce 命令 看哪些文件被修改了

LINUX 自带的一般 用的VI 编辑器。。当然你也可以安装其他编辑器来 修改配置文件 如:修改DHCP 配置文件 就敲入 vi /etc/dhcpd.conf

㈥ 如何在linux系统中安装配置Perforce服务器

你问这句话,,就像在问”我怎样使用windows操作系统“一样,这样是没法回答的,,你根本就不熟悉linux下软件的安装方式,,,建议你先熟悉你用的linux的distribution的软件安装命令,再问怎样安装和配置吧,,

㈦ P4V(perforce)入门

最近由于需要学习了下新的版本控制工具perforce,其实和SVN和GIT差不多,感觉P4V对权限要求更加细致,适合公司开发。

P4V也是基于CS架构,有一个中央服务器,其他客户端通过网络来连接,如下图,

我们使用的客户端叫做p4v(之前叫p4win),我们使用的时候需要服务器地址,端口,用户名(这个貌似需要花钱买,而且申请周期比较长),密码来连接服务器,然后就能看到主界面了

这里要注意的是,在进行第一步的操作后,必须执行第二版操作才能进行后面的操作,如果不进行第二版操作,你用Notepad++打开该文件时会提示文件处于只读状态,如果强制进行编辑的话也可以,但是该文件已经属于不可控状态了,所以我们必须要执行check out操作

perforce对权限控制的比较细,有时候你会发现你没有check out的权限,这表明你只能对该文件进行查看,而不能修改和提交

之后我们可以编辑,编辑好后submit,这就已经提交到服务器上了,你还可以撤销所做的修改,执行revert操作就好
我们还可以把某个外部文件Mark for Add,下次提交时会把该文件增加到服务器中
我们还可以对某个文件Mark for Delete,这样你下次提交后会删除服务器上的该文件
我们还可以对某个文件执行rename和move以及reconcile操作

perforce还自带有文件比较工具,我们可以对同一个文件的不同版本进行比较,也可以对2个不同的文件进行比较

perforce还提供了很多查看文件版本信息的工具
对于java开发人员我们很关心是否提供了eclipse插件,没错,这个是必须有的,地址下面会给出

附件:
p****e****rforce文档 :在你的安装目录下的P4VResourcesp4vhelpp4v-gs.pdf
P4Eclipse****( perforce的eclipse插件): http://www.perforce.com/downloads/Perforce-Software-Version-Management/complete_list/20-20?qt-perforce_downloads_step_3=3#qt-perforce_downloads_step_3#21

会发现在官网上只有eclipse4.3/4.2/3.8的版本,其实其他版本也是有的,只要修改下最后面的版本号就好

㈧ 代码之美的作者简介

John Bentley是美国Avaya实验室的一位计算机科学家。他的研究领域包括编程技术、算法设计以及软件工具与界面设计。他已编写了数本关于编程的书籍, 还撰写了大量的文章,主题涉及从算法理论到软件工程的各个方向。他于1974年在斯坦福大学获得学士学位,并于1974年获得硕士学位以及于1976年在 北卡罗来纳大学获得博士学位,随后在卡耐基-梅隆大学任教6年,教授计算机科学。1982年他加入贝尔实验室,并于2001年离开贝尔实验室并加入 Avaya实验室。他曾是西点军校和普林斯顿大学的访问教授、曾经参与开发过软件工具、电话交换机、电话以及网络服务。
Tim Bray于1987-1989年间在加拿大的安大略省滑铁卢大学负责牛津英语词典项目,1989年与他人联合创建了Open Text公司,在1995年启动了最早的公共网页搜索引擎之一,在1996至1999年间与他人共同发明了XML 1.0并合作编写了
《Namespaces in XML》规范,在1999年他创建了Antarctica Systems公司,并于2002-2004年被Tim Berners-Lee任命在W3C技术架构组中工作。目前,他在Sun Microsystems公司Web Technologies部门任主管,他有一个很受欢迎的博客,并且参与主持IETF AtomPub工作组。
Bryan Cantrill是Sun Microsystems公司的一位杰出的工程师,在他的职业生涯中主要从事Solaris内核的开发。最近他与同事Mike Shapiro和Adam Leventhal一起设计并实现了DTrace,这是一个用于产品系统动态控制的工具,获得了《华尔街日报》2006年度的最高创新奖。
Douglas Crockford毕业于公立学校。他是一位登记选民,拥有自己的汽车。他曾开发过办公自动化系统。他曾在Atari公司从事过游戏和音乐研究。他曾是 Lucasfilm有限公司技术部门的主管,以及Paramount公司New Media部门的主管。他创建了Electric Communities公司并且担任CEO。他还是State 软件公司的创建者和CTO,正是在这个公司中他发明了JSON数据格式。他现在是Yahoo!公司的一位架构师。
Rogerio Atem de Carvalho是巴西校园技术教育联合中心(Federal Center for Technological Ecation of Campos,CEFET Campos)的一位教师兼研究人员。他在奥地利的维也纳获得了2006年度IFIP杰出学术领导奖(Distinguished Academic Leadership Award),以表彰他在免费/开源企业资源计划(ERP)上所做的研究工作。他的研究领域还包括决策支持系统和软件工程。
Jeff Dean于1999年加入Google,目前是Google系统架构小组的成员。他在Google主要负责开发Google的网页抓取、索引、查询服务以 及广告系统等,他对搜索质量实现了多次改进,并实现了Google分布式计算架构的多个部分。在加入Google之前,他工作于DEC/Compaq的 Western实验室,主要从事软件分析工具、微处理器架构以及信息检索等方面的研究。他于1996年在华盛顿大学获得了博士学位,与Craig Chambers一起从事面向对象语言的编译器优化技术方面的研究。在毕业之前,他还在世界卫生组织的艾滋病全球规划署工作过。
Jack Dongarra于1972年在芝加哥大学获得数学学士学位,并于1973年在伊利诺理工大学获得计算机科学硕士学位,又于1980年在新墨西哥大学获得 应用数学博士学位。他在美国阿贡国家实验室(Argonne National Laboratory)一直工作到1989年,并成为了一名着名科学家。他现在被任命为田纳西大学计算机科学系的计算机科学杰出教授。他是美国橡树岭国家 实验室(Oak Ridge National Laboratory ,ORNL)计算机科学与数学部的杰出的研究人员,曼彻斯特大学计算机科学与数学学院的Turing Fellow,美国莱斯大学计算机科学系的副教授。他的研究领域包括线性代数中的数值算法,并行计算,高级计算机架构的应用,程序设计方法学以及用于并行 计算机的工具。他的研究工作包括开发、测试高质量的数学软件以及整理相关文档。他在以下开源软件包和系统的设计及实现上做出了贡献:ISPACK, LINPACK, the BLAS, LAPACK, ScaLAPACK, Netlib, PVM, MPI, NetSolve, Top500, ATLAS, 和 PAPI。他公开发表了大约200篇文章、论文、报告以及技术备忘录,还参与编写了数本着作。他于2004年获得了IEEE Sid Fernbach奖,以表彰他在高性能计算机的应用中使用了创新的方法。他不仅是AAAS,ACM和IEEE的成员,还是美国工程院的院士。
R. Kent Dybvig是印第安纳大学计算机科学系的一位教授。在印第安纳大学任教两年之后,他于1987年在北卡罗来纳大学获得了博士学位。他在设计和实现编程语 言的研究上做出了重要的贡献,包括控制运算符、句法抽象、程序分析、编译器优化、寄存器分配、多线程以及自动存储管理等。在1984年,他创建了Chez Scheme软件并一直是主要的开发人员。Chez Scheme的特点在于快速的编译时间、可靠性以及能够高效地运行内存需求巨大的复杂程序,它已经被用于构建企业集成、网页服务、虚拟现实、机器人药品抽 检、电路设计以及其他的商业系统。它还可以用于各种层次的计算机教育以及许多其他领域中的研究。Dybvig是《The Scheme Programming Language, Third Edition》(MIT Press出版社)一书的作者,以及即将发布的“Revised6 Report on Scheme”文档的编辑。
Michael Feathers是Object Mentor 公司的顾问。在过去七年间,他一直活跃于Agile社群,他的工作主要是与世界各地不同的团队合作,培训以及指导。在加入Object Mentor公司之前,Michael设计过一种编程语言,并为这种语言写了一个编译器。他还设计了一个庞大的多平台类库以及用于控制的框架。 Michael开发了CppUnit,也就是最初把JUnit移植到C++;以及FitCpp,也就是把FIT移植到C++。在2005年, Michael编写了《Working Effectively with Legacy Code》(Prentice Hall出版社)一书。在与各个团队合作的间隙,他的大多数时间都花在研究大型代码库中的设计修改方式方面。
1995年,Karl Fogel和Jim Blandy一起创建了Cyclic软件公司,这是第一个提供商业CVS支持的公司。1997年,Karl增加了对CVS匿名只读存储仓库访问的支持,这 样就可以更方便地访问开源项目中的开发代码。1999年,他工作于CollabNet公司,主要从事管理Subversion的创建和开发工作,这是 CollabNet公司和一群开源志愿者们从头开始编写的开源版本控制系统。2005年,他编写了《Procing Open Source Software: How to Run a Successful Free Software Project 》(O'Reilly出版社;在http://procingoss.com上有联机版本) 一书。2006年,他在Google担任了短期的开源技术专家之后离开Google并成为了Question-Copyright.org网站的全职编 辑。他目前仍然参与了多个开源项目,包括Subversion和GNU Emacs。
Sanjay Ghemawat是一位Google Fellow,工作于Google的系统架构小组。他设计并实现了分布式的存储系统,文本索引系统,性能分析工具,一种数据表示语言,一个RPC系统,一 个malloc函数实现以及许多其他的库。在加入Google之前,他是DEC系统研究中心的一位研究人员,主要从事系统性能分析和优化Java编译器的 工作,他还实现了一个Java虚拟机。他于1995年在麻省理工大学获得博士学位,研究领域为面向对象数据库的实现。
Ashish Gulhati是互联网隐私服务Neomailbox的首席开发员,以及Cryptonite的开发员,这是一个支持OpenPGP协议的安全网页邮件系 统。他有着15年的商业软件开发经验,是印度最早的数字版权活动家之一和F/OSS程序员,他编写了大量的开源Perl模块,这些模块可以从CPAN上下 载。在1993~1994年间,他在《PC Quest》和《DataQuest》等杂志上发表了大量文章,这是在印度主流计算机刊物中最早向读者介绍自由软件,GNU/ Linux,Web和Internet的文章,在这些文章发表多年以后,印度才拥有了商业的互联网访问,这些文章还构成了PC Quest Linux Initiative活动的重要组成部分,这个活动促使自1995年以来,在印度分发了一百万份Linux光盘。在获得了一组可穿戴的计算机后,他很快地 成为了一个电子人。
Elliotte Rusty Harold是新奥尔良人,他会定期返回新奥尔良去吃一大碗海鲜干波汤(Gumbo)。不过,他目前住在布鲁克林附近的Prospect Heights,和他生活在一起还有他的妻子Beth,狗Shayna,和两只猫Charm(以夸克命名)和Marjorie(以他的岳母命名)。他是纽 约科技大学的一位副教授,主要讲授Java、XML以及面向对象编程。他的Cafe au Lait网站是互联网上最流行的独立Java网站之一;他的另一个网站Cafe con Leche 则成为了最流行XML站点之一。他编写的书籍包括《Java I/O》,《Java Network Programming》和《XML in a Nutshell》(这三本书都由O'Reilly出版社出版),以及XML Bible (Wiley出版社)。他目前的研究领域包括用Java来处理XML的XOM库、Jaxen XPath引擎以及Amateur媒体播放器。
Brian Hayes为《American Scientist》杂志编写计算机专栏,他还拥有一个博客。过去,他还为《Scientific American》、《Computer Language》、 以及《The Sciences》等杂志编写过类似的专栏。他编写的《Infrastructure: A Field Guide to the Instrial Landscape》(Norton出版社)一书于2005年发行。
Simon Peyton Jones,硕士,于1980年毕业于剑桥大学三一学院。在工作两年后,他在伦敦大学学院担任了7年的讲师,然后在格拉斯哥大学担任了9年的教授,后来于 1998年加入微软研究中心。他的研究领域包括函数式编程语言及其实现和应用。他领导了一系列的研究项目,主要研究用于单处理器机器和并行机的高质量函数 式语言系统的设计和实现。他是函数式语言Haskell的主要设计者,此外他还是被广泛应用的Glasgow Haskell编译器(GHC)首席设计师。他还编写了两本关于函数式语言实现的教科书。
Jim Kent是加利福尼亚大学圣克鲁兹分校基因信息小组(Genome Bioinformatics Group)的一位研究学家。Jim从1983年起就开始编程。在职业生涯的前半段,他主要从事绘画和动画软件的开发,他开发了Aegis Animator、 Cyber Paint以及 Autodesk Animator等获奖软件。1996年,由于厌倦了基于Windows API的开发工作,他决定在生物学上追求他的兴趣,并于2002年获得了博士学位。在研究生期间,他编写GigAssembler——这个程序计算出了第 一批人类基因组——比Celera公司发布的第一批基因组提前了一天,从而使得这批基因组成为免费的专利并且避免了其他的法律问题。Jim发表了40余篇 科学论文。他目前的研究工作主要是编写程序,数据库和网站以帮助科学家分析和了解基因组。
Brian Kernighan于1964年在多伦多大学获得学士学位,并于1969年在普林斯顿大学获得电子工程博士学位。他在贝尔实验室的计算科学研究中心一直工 作到2000年,目前就职于普林斯顿大学的计算机科学系。他编写了8本着作以及大量的技术论文,并拥有4项专利。他的研究领域包括编程语言、工具、为非专 业用户设计易用的计算机操作界面等。他还致力于非技术读者的技术教育工作。
Adam Kolawa是Parasoft公司的创建者之一和CEO,这家公司是自动错误预防(Automated Error Prevention ,AEP)解决方案的领先提供商。Kolawa有着多年在各种软件开发流程中的经验,这使得他对高科技企业有着独特的视野,以及成功辨识技术潮流的非凡能 力。因此,他策划了几个成功商业软件产品的开发过程来满足在提高软件质量中不断增长的工业需求——经常在这种潮流被广泛接受之前。Kolawa参与编写了 《Bulletproofing Web Applications》(Hungry Minds出版社)一书,他还撰写了100余篇评论和技术文章,发表在《The Wall Street Journal》、《CIO》、《Computerworld》、《Dr. Dobb's Journal》以及《IEEE Computer》等期刊上。此外,他还撰写了大量关于物理学和并行处理方面的科学论文。他现在的签约媒体包括CNN、 CNBC、 BBC和NPR。Kolawa拥有加利福尼亚理工大学理论物理博士学位,并拥有10项专利发明。2001年,Kolawa获得了软件类别的Los Angeles Ernst & Young's Entrepreneur of the Year奖项。
Greg Kroah-Hartman是目前Linux内核的维护人员,负责多个驱动程序子系统以及驱动程序内核、sysfs、 kobject、 kref和debugfs等代码。他还为启动linux-hotplug 和 udev等项目提供了帮助,是内核稳定维护团队中的重要人员。他编写了《Linux Kernel in a Nutshell》(O'Reilly出版社),并参与编写了《Linux Device Drivers, Third Edition》(O'Reilly出版社)。
Andrew Kuchling有着11年的软件工程师经验,他是Python开发群体中的长期成员。他的一些与Python相关的工作包括编写和维护数个标准的库模 块,编写一系列的“What's new in Python 2.x”文章以及其他一些文档,策划了2006年和2007年的PyCon会议,并是Python软件基金会的主管。Andrew于1995年毕业于麦吉 尔大学并获得计算机科学学士学位。他的个人网页是http://www.amk.ca。
Piotr Luszczek毕业于波兰克拉科夫矿业与冶金大学,并获得硕士学位,他的研究领域是并行的核外(out-of-core)库。他将稠密矩阵计算核应用于 稀疏矩阵直接求解算法和迭代数值线性几何算法中的创新研究使他获得了博士学位。他把这种思想用来开发使用核外技术容错库。目前,他是田纳西大学诺克斯维尔 分校的一位研究教授。他的研究工作包括大型超级计算机安装的标准化评价。他开发了一个自适应的软件库,能够自动选择最优的算法来有效地利用现有硬件以及有 选择地处理输入数据。他还感兴趣于高性能编程语言的设计和实现。
Ronald Mak是高级计算机科学研究所(Research Institute for Advanced Computer Science)的一位资深科学家,在NASA Ames研究中心工作时,他是协同信息系统(Collaborative Information Portal,CIP)的架构师和首席开发人员。在漫步者登录火星之后,他分别在JPL和Ames对探测任务提供支持。然后,他获得了加利福尼亚大学圣克 鲁兹分校的学术任命,并且他再次与NASA签约,这次的工作是设计帮助宇航员返回月球的企业软件。Ron是Willard & Lowe Systems公司的创建人之一和CTO,这是一个针对企业信息管理系统的咨询公司。他编写了 数本关于计算机软件的书籍,他在斯坦福大学分别获得了数学科学学位和计算机科学学位。
Yukihiro Matz Matsumoto是一位程序员,他是一位日本籍的开源倡导者,他发明了最近非常流行的Ruby语言。他从1993年开始研发Ruby,这和Java语言 一样久远。现在他工作于日本Network Applied Communication Laboratory(NaCl,网址为netlab.jp)公司,该公司从1997年起开始赞助Ruby的开发。因为他的真实姓名太长而难以记住,并且 对于非日本的演讲者来说难以发音,因此在网上他使用了昵称Matz。
Arun Mehta是一位电子工程师和计算机科学家,他曾在印度、美国和德国进行过研究和教学工作。他是印度早期计算机活动家,他努力实现了一些方便消费者 (consumer-friendly)的政策,以帮助把现代通信延伸到偏远地区和贫困地区。他目前的研究领域包括农村无限通信以及帮助残疾用户的技术。 他是印度哈里亚纳邦Radaur地区JMIT大学计算机工程系的教授和主任。
Rafael Manhaes Monnerat是CEFET CAMPOS的一位IT分析家,以及Nexedi SARL的海外顾问。他的研究领域包括免费/开源系统、ERP以及最新的编程语言。
Travis E. Oliphant于1995年在美国杨百翰大学获得电子与计算机工程学士学位和数学学士学位,并于1996年在本校获得电子与计算机工程硕士学位。他于 2001年在明尼苏达罗切斯特的梅奥研究生院获得了生物医学工程博士学位。他是Python语言中科学计算库SciPy和NumPy的主要编写者。他的研 究领域包括显微阻抗成像,异构领域中的MRI重构以及生物医学逆问题。他目前是杨百翰大学电子与计算机工程的副教授。
Andy Oram是O'Reilly Media的编辑。他从1992年开始就在这家公司工作,Andy目前主要关注自由软件和开源技术。他在O'Reilly的工作成果包括第一批Linux 系列丛书以及2001年的P2P系列丛书。他的编程技术和系统管理技术大多都是自学的。Andy还是Computer Professionals for Social Responsibility协会的成员并且经常在O'Reilly Network(http://oreillynet.com)和其他一些刊物上撰写文章,这些文章的主题包括互联网上的政策问题,以及影响技术创新的潮 流及其对社会的影响。
William R. Otte是田纳西范德堡大学电子工程与计算机系(EECS)的一位博士研究生。他的研究领域是分布式实时嵌入(DRE)系统的中间件,目前从事CORBA 组件的部署和配置引擎(DAnCE)开发工作。这个工作主要研究运行时规划技术,基于组件的应用程序的适应性,以及对应用程序服务质量和容错需求的规范与 实施。在攻读研究生之前,William于2005年在范德堡大学计算机系毕业并获得学士学位,之后在软件集成系统学院(ISIS)工作了一年。
Andrew Patzer是威斯康星大学医学院生物信息系的主管。过去15年Andrew是一位软件开发人员并且编写了许多文章和书籍,包括 《Professional Java Server Programming》(Peer Information公司)和《JSP Examples and Best Practices》(Apress出版社)。Andrew目前的研究领域为生物信息领域,利用像Groovy这样的动态语言来发掘大量有效的生物数据并 帮助科学研究人员进行分析。
Charles Petzold是一位自由作家,主要研究领域为Windows应用程序编程。他是《Programming Windows》(Microsoft Press出版社)的作者, 1988年至1999年之间共出版了五版,教育了整整一代程序员的Windows API编程技术。他最新的书籍包括《Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation》(Microsoft Press出版社),以及《Code: The Hidden Language of Computer Hardware and Software》(Microsoft Press出版社),在这本书中他对数字技术进行了独特的研究。
T. V. Raman的研究领域包括网页技术和听觉用户界面。在20世纪90年代初,在他的博士论文中介绍了音频格式的概念,叫作AsTeR:Audio System For Technical Readings(技术读物语音系统),这是一个为技术文档生成高质量听觉表示的系统。Emacspeak则将这些思想应用到更广泛的计算机用户界面领 域。Raman现在是Google的一位研究人员,主要研究Web应用程序。
Alberto Savoia是Agitar软件公司的创建人之一和CTO。在创建Agitar之前,他是Google的高级工程主管;在这之前,他还是Sun Microsystems实验室软件研究中心的主管。Alberto的主要研究领域是软件开发技术——尤其是那些帮助程序员在设计和开发阶段进行测试和代 码验证的工具和技术。
Douglas C. Schmidt是田纳西范德堡大学电子工程与计算机(EECS)系的一位教授,计算机科学与工程系的副主任,以及软件集成系统学院(ISIS)的高级研究 人员。他是分布式计算模式和中间件框架方面的专家,并且已经发表了超过350篇的技术论文和9本书籍,内容涉及的主题很广,包括高性能通信软件系统,高速 网络协议并行处理,实时分布式对象计算,并发与分布式系统的面向对象模式,以及模型驱动的开发工具。在他的学术研究之外,Dr. Schmidt还是PrismTechnologies公司的CTO,并且在领导开发应用广泛开源的中间件平台上有着15年的经验,在这些平台上包含了丰 富的组件以及实现高性能分布式系统中核心模式的领域特定语言。Dr. Schmidt于1994年于加利福尼亚大学欧文分校获得计算机科学博士学位。
Christopher Seiwald编写了Perforce(一种软件配置管理系统)、Jam(一种构建工具)和“漂亮代码的七个要素”(本书的第32章,变动的代码,正是从 这篇文章中提取出了有价值的思想)。在创建Perforce之前,他在Ingres公司管理网络开发小组,他花了数年时间来使得异步网络代码看上去很漂 亮。现在他是Perforce软件公司的CEO,并且仍然从事编码工作。
Diomidis Spinellis是希腊雅典经济与商业大学管理科学与技术系的副教授。他的研究领域包括软件工程工具,编程语言和计算机安全。他在伦敦帝国理工大学获得 了软件工程硕士学位和计算机科学博士学位。他发表了超过100篇的技术论文,所涉及的领域包括软件工程,信息安全以及普适计算。他还编写了两本开源方面的 书籍:《Code Reading 》(获得2004年度Software Development Proctivity奖)和《 Code Quality 》(这两本书都由Addison-Wesley出版社出版)。他是IEEE Software编辑委员会的成员,主编“Tools of the Trade”专栏。Diomidis是一位FreeBSD提交者(Committer),并且编写了许多开源软件包、软件库以及工具。
Lincoln Stein是一位硕士/博士,他的研究领域为生物信息数据的集成与虚拟化。在从哈佛大学医科学院毕业后,他在麻省理工大学Whitehead基因研究所工 作,开发用于老鼠和人类的基因图谱数据库。他在冷泉港实验室开发了各种基因数据库,包括WormBase,线虫基因数据库;Gramene,用于水稻和其 他单子叶植物的比较基因映射数据库;国际Hap-Map项目数据库;以及人类基因基础数据库Reactome。Lincoln还编写了《books How to Set Up and Maintain a Web Site》(Addison-Wesley出版社)、《Network Programming in Perl》(Addison-Wesley出版社)、《Official Guide to Programming with CGI.pm 》(Wiley出版社)以及《Writing Apache Moles with Perl and C》(O'Reilly出版社)等书籍。
Nevin Thompson把Yukihiro Matsumoto编写的第29章内容,把代码当作文章,从日文翻译到英文。他的客户包括日本最大的电视网络,以及Technorati Japan公司和Creative Commons组织。
Henry S. Warren, Jr.在IBM工作了45年,他历经了从IBM 704到PowerPC的发展过程。他参与过多个军方指挥与控制系统的开发工作,在纽约大学Jack Schwartz教授指导下从事SETL项目。从1973年起,他在IBM研究部门工作,主要方向为编译器和计算机架构。Hank目前正在参与Blue Gene Petaflop超级计算机项目。他在纽约大学克朗数学研究所获得了计算机博士学位。他是《Hacker's Delight》(Addison-Wesley出版社)一书的作者。
Laura Wingerd多年Sybase和Ingres的数据库产品开发工作形成了她早期对软件配置管理的观点。她在Perforce软件公司创建之初就加盟了这 家公司,并且从她给Perforce客户的建议中获得了大量的SCM经验。她编写了《Practical Perforce》(O'Reilly出版社)一书以及许多与SCM相关的白皮书。她在Google的技术演讲The Flow of Change中首次露面。Laura现在是Perforce 软件公司产品技术部的副主管,主要负责推动合理的SCM流程以及研究新的并且更好的Perforce使用方式。
Greg Wilson在爱丁堡大学获得了计算机科学博士学位,他的研究领域包括高性能科学计算,数据虚拟化以及计算机安全。他现在是多伦多大学计算机科学系的一位副教授,并且是《Dr. Dobb's Journal》杂志的特约编辑。
Andreas Zeller于1991年毕业于德国达姆斯塔特理工大学,并于1997年在不伦瑞克理工大学获得计算机科学博士学位。2001年以来,他一直在德国萨尔兰 登大学的计算机科学系担任教授。Zeller主要研究大型程序以及它们的发展历史,他开发了大量的方法来分析在开源软件以及IBM、Microsoft、 SAP以及其他公司的商业软件中失败的原因。他编写的《Why Programs Fail: A Guide to Systematic Debugging》(Morgan Kaufmann出版社)获得了《Software Development Magazine》杂志2006年度的Proctivity大奖。

㈨ 怎么在linux虚拟机上安装perforce

perforce服务端在linux上的搭建:
1、下载p4d,赋予可执行权限:chmod +x p4d。
放到某个文件夹中,并将这个文件夹路径加入到环境变量中,方便使用命令行。
export PATH=./perforce_sev/:$PATH
##(这里放在当前目录perforce_sev这个文件夹中)

2、配置环境变量,设置p4的root(数据文件存放的位置),port(服务器的端口),log(日志文件所放的文件)。
export P4ROOT=./p4root/ (这里将会存放perforce的db.*等服务端文件)
export P4PORT=127.0.0.1:1666 (IP:端口)
export P4LOG=p4log (这个存放系统日志的文件,文件在你设置的/p4root/下)

3、启动 p4d
p4d [&]

阅读全文

与perforceforlinux相关的资料

热点内容
上门正骨用什么app 浏览:756
安卓为什么免费使用 浏览:397
加密货币都有哪些平台 浏览:625
python和matlab难度 浏览:388
python爬虫很难学么 浏览:572
小米解压积木可以组成什么呢 浏览:816
为什么滴滴出行app还能用 浏览:564
怎么升级手机android 浏览:922
php权威编程pdf 浏览:994
扣扣加密技巧 浏览:720
苹果如何创建服务器错误 浏览:496
软考初级程序员大题分值 浏览:474
js压缩视频文件 浏览:578
linux如何通过命令创建文件 浏览:991
应用加密app还能访问应用嘛 浏览:435
安卓怎么用支付宝交违章罚款 浏览:667
php面向对象的程序设计 浏览:506
数据挖掘算法书籍推荐 浏览:895
投诉联通用什么app 浏览:152
web服务器变更ip地址 浏览:956