㈠ 如何用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 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 [&]