??xml version="1.0" encoding="utf-8" standalone="yes"?>
原文Q?/font>
http://www.456bereastreet.com/archive/200501/the_perils_of_using_xhtml_properly/
JunChen
注:(x)omemo.net|站g已经挂掉Q链接都失效?jin)。文章写得非怸错,一直是Best of 456 Berea Street。在q里发布的时候我q行?jin)少量代码上和翻译上的修改,以忠实原著?/font>
我?abbr>XHTML有些q了(jin)Q但直至d夏天我才着g如何正确使用Q那是_(d)?code>application/xhtml+xml?acronym title="Multipart Internet Mail Extension">MIMEcd来伺?server)它。虽然我遇到?jin)这些问题,但我知道问题q非如此。就如你卛_发现的一P当你开始用真正的XHTMLQ你?x)遭遇很多似乎细但让h困惑的问题?/font>
h意这不是一讨论支持或反对使用XHTML的文章。我只是写下我所知道的潜在的易犯错误Qƈ且让你自己来军_自己的选择Q?abbr>HTML 4.01Qؓ(f)所有浏览器伺服?code>text/html?abbr>XHTML 1.0或者ؓ(f)能够处理其的览器伺服ؓ(f)
只有在问题发生的时候,我才有机?x)去了(jin)解和认识这些东ѝ有些情况下我必花很多旉来查N题和求助于其他hQ来L一个解x案。但我在其中学到不少东西Q我?x)把我已l?abbr>XHTML后应该知道的都告诉你?/font>
注意我这里提?qing)的问题只?x)发生在能正确处理
今天Q实际上?abbr>XHTML伺服?code>application/xhtml+xml正慢慢变得^常。我所知道的理由有两个Q?/font>
假如你,像我Q决定实现某些类型的content negotiation和在传?abbr>XHTML的时候用正的媒体cdQ你需要知道什么能Q和)(j)在你发布的文中发生Qƈ且知道怎样避免问题的发生。对于对content negotiation同进行content negotiation的脚本例子有兴趣的读者,我推荐你阅读
Content Negotiation
?/font>
Serving up XHTML with the correct MIME type
。还有很多这U类型的文章Q但q是我读到的最_ֽ的两?/font>
每一个基本的教程都有一?abbr>HTML?abbr>XHTML的明昑别:(x)元素和属性名字用小写,属性值总要用引受不要用简化属性,保所有的元素都有l束标签和没有不正确的嵌套等{。但是,?abbr>XHTML伺服?code>application/xhtml+xml时还需要知道更多东ѝ?/font>
良好的结构是必须?/font>
文档必须是良好的l构Qwell-formedQ的XMLQ跟合法的(validQ?abbr>XHTML不必然相同)(j)。就是必,不是可能?/font>
如果文l构不好Q符合标准的览器(当前我知道MozillaQFirefoxQNetscapeQCaminoQOperaQSafari和OmniWeb——相当多的浏览器除了(jin)IEQ将?x)显C错误信息ƈ且以某种方式中止处理文档?/font>
此外Q这q意味着不再使用未编码的"&"受?/font>
XML声明可能是必ȝ
如果要用UTF-8或者UTF-16以外的变法,必须要XML声明Q除非HTTP头已l提供编码?/font>
在HTTP头中是否要指定字W编码有些模p,Architecture of the World Wide Web, Volume One: Media Types for XMLq样写的Q?q>M上,不应该在协议头ؓ(f)XML数据指定字符~码Q因为数据本w已描述?/q>
另一斚wQ?cite>XHTML 1.0, Second Edition: Character Encoding写到Q?/font>
是_(d)在XML声明中指定字W编码是好的?fn)惯Q?/font>
只有五个实体是安全的
只有五个预定义的实体Q?code><,
使用UTF-8字符~码是最受推荐的Q让你(几乎Q可以用你需要键入文的L字符Q不需要实体或者字W编受如果你不能或不愿用UTF-8Q数字式的字W编h可以支持和安全用的?/font>
SGML式注释的内容可能?x)被忽?/font>
SGML注释Q?abbr>HTML风格注释Q?
?abbr>HTML中,普遍地把
?abbr>XHTML中,q样做会(x)引v览器忽略掉注释里的M内容?/font>
在老的览器中隐藏
脚本和样式元素的内容也被当作XML
样式和脚本元素是PCDATAQparsed character dataQ解析字W数据)(j)块,不是CDATAQcharacter dataQ字W数据)(j)块。因此,在其内看h像XML的Q何东襉K?x)被当作XML来解析,q且?x)引发错误除非是良构的?/font>
Z(jin)?code>script?code>style块中使用<?amp;或?-Q你需要用
CDATA
Q?br />
在CDATA里,你可以Q何顺序的字符Q它们不?x)被当作XML来解析(除了(jin)l束CDATA部分]]>Q?/font>
需要以
如果要确保很老的览器隐藏CDATA部分Q需要用更为复杂的Ҏ(gu)Q像?cite>Ian Hickson?a >Sending XHTML as text/html Considered Harmful中描q的那样Q?/font>
一个更好的办法可能是在发?code>text/html的文档前使用content negotiation脚本来删除Q何CDATA部分?/font>
当然Q最聪明和安全的途径是把所有的CSS和JavaScript都移动到外部文g中,但不L现实的做法?/font>
没有?x)自动补全的元?/font>
?abbr>HTML中,假如表格?code>tbody元素漏写的话览器会(x)自动补全Q?abbr>XHTML不会(x)。如果你没有清楚地添加tbodyQ它?yu)׃会(x)出现。在~写C(j)SS选择器和JavaScript的时候请铭记在心(j)?/font>
用document.write~写的脚本不再工?/font>
?abbr>XHTML中用JavaScriptQ?code>document.write不会(x)工作。Ian Hickson?/font>
Why document.write() doesn’t work in XML
解释?jin)原因。你需要?code>document.createElementNS()代替。关于更多可以在
Experts Exchange中的论坛主题
中找到?/font>
q也是Google AdSense不在XHTML中工作的原因之一。那些希望以application/xhtml+xml伺服XHTMLq且使用Googleq告的hQ这儿有一个解军_法:(x)Simon Jessey?/font>
Making AdSense work with XHTML
。尽有炚w?ch),但还是工作?jin)Q我在这里也使用?jin)?j)Q同时被Google所认可?/font>
引入样式元素
?abbr>XHTML中,Z(jin)兼容定义CSS规则的XMLҎ(gu)Q你应该使用XML样式表声明(讉K
XHTML
1.0, Second Edition: Referencing Style Elements when serving as XML
的XML样式表声明和
Associating Style Sheets with XML documents
的xml-stylesheet处理说明Q。要载入外部CSS文gQ我们需要?code>style元素Q同时应该用XML样式表声明来引入样式元素。ؓ(f)此,使用id属性给
我不知道在实际中I竟有多必要Qƈ且不使用XML样式表声明的话会(x)有什么问题。或许有Z(x)指点我的?/font>
CSS的应用规则有些不一?/font>
CSS应用?code>body的性质QpropertyQƈ不应用到XHTML的整个文档。最值得注意的是应用背景颜色或者图片。在HTML中,应用?code>body元素的背景将?x)覆盖整个页面。在XHTML中,你必d时样式化html。在Juicy Studio?/font>
CSS body Element Test
中有q个行ؓ(f)的演C?/font>
?abbr>XHTML中作为CSS规则的元素和属性名字是大小写敏感的Q而且必须是小写的Q。避免问题最单的办法是,不管在HTMLQ?abbr>XHTMLq是CSS中所有东襉K保持写?/font>
有挑战,但不是不可能
当我开始ؓ(f)兼容的浏览器伺服XHTML?code>application/xhtml+xmlӞ在作出决定前假如我能d惌一L(fng)文章Q或许我的头痛可以减M。我甚至考虑使用
正确C用真正的XHTMLQ十分希望这文章能Z提供一些更有用的信息,q且可以为是否需要走q条路提供更多有Ҏ(gu)的决定?/font>
HTML
?abbr>XHTML可能比我在这里提到的q有更多C同,所以在q里把你在?code>application/xhtml+xml?abbr>XHTML旉到的问题提出来,如果你知道Q何的错误或者忽略,务必告诉我?/p>
作者:(x)
Roger Johansson
译Q?/font>
Neo
(
http://www.omemo.net/neo
)
修正Q?/font>
JunChen
application/xhtml+xml
而其他浏览器则伺服ؓ(f)text/html
?abbr>XHTML 1.0。否则有些东西会(x)完全不一栗?/font>
application/xhtml+xml
MIMEcd的用户代理中Q而因?abbr>XHTML被作?abbr>XML。这也可能是q里不提?abbr>XHTML的早期用的原因——很有Z用这L(fng)览器,所以几乎不?x)有人因只伺服?f)text/html
?abbr>XHTML所?ch)忧?/font>
text/html
的时候。如果你参与?jin)Q何一ơ讨论,你知道我在说什么?/font>
Z(jin)让文档用指定的字符~码Q最好的办法是保证web服务器发送正的头?/font>
<?xml version="1.0" encoding="iso-8859-1"?>
>
, &
, "
, ?code>'Q的支持是有保证的。其他的可能完全被忽略或者直接输出。比如,如果XHTML文包含?code> 或?code>”的实体,Safari?x)直接地输出。Opera反而选择忽略未知的实体,同时Mozila家族?x)认得这些实体ƈ且就像HTML?q cite="http://www.mozilla.org/docs/web-developer/faq.html#xhtmldiff">“如果文引用公q映射览器伪DTD目录中的标识Wƈ且没有单独声明的文?/q>来处理?/font>
<!-- 注释 -->
Q可能会(x)Qƈ且会(x)Q被览器当作注释,q是在script
或?code>style元素内部使用?/font>
script
?code>style的内容装入注释中Qؓ(f)的是在不认识script
?code>style元素的浏览器中隐藏他们,q且在页面上把其内容生成q白文本?/font>
script
?code>style的习(fn)惯可以追溯到1990q代中期。我的经验是Q有如此表现的浏览器是十分罕见的Q所以你可以安全地忽略它们,q且停止在脚本和样式中装入SGML式注释,q你用的是HTML?/font>
<
script
type
="text/javascript"
>
<!
[CDATA[
]]
>
</
script
>
text/html
发送的文中,CDATA部分的v始和l束标签需要注释掉Q以便在不能处理CDATA部分的浏览器中隐藏:(x)
<
script
type
="text/javascript"
>
//
<![CDATA[
//
]]>
</
script
>
<
style
type
="text/css"
>
/**/
/*
<![CDATA[
*/
/**/
/*
]]>
*/
</
style
>
<
script
type
="text/javascript"
>
<!--
//
--><![CDATA[//><!--
//
--><!]]>
</
script
>
<
style
type
="text/css"
>
<!--
/**/
/*
--><![CDATA[/*><!--
*/
/**/
/*
]]>
*/
-->
</
style
>
style
元素一个分解的标识W,然后在XML样式表声明中引入该标识符Q?/font>
<?
xml-stylesheet href="stylesheet1.css" type="text/css"
?>
<?
xml-stylesheet href="#stylesheet2" type="text/css"
?>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
xml:lang
="en"
lang
="en"
>
<
head
>
<
title
>
XML stylesheet declaration
</
title
>
<
style
type
="text/css"
id
="stylesheet2"
>
@import "stylesheet2.css";
</
style
>
</
head
>
HTML 4.01 Strict
。虽然如此,我还是从l验中学C,而学?fn)L一个好东西?/font>
]]>
|
GNU/Linux is a modular operating system that looks and acts like a more intelligently programmed, up-to-date Unix. The term itself -- GNU/Linux -- is extremely vague and doesn't exist in the literal sense. You don't go to the store and buy GNU/Linux; instead you buy a software distribution (or distro for short) that uses GNU/Linux as its basis. So while you can't buy "Linux" at the store, you can buy SUSE Linux or Linspire.
Distributions can fundamentally differ in several ways:
The sections below will cover each of these topics in depth. If there is one particular area that you are confused about, feel free to skip down to the appropriate section. The next topic will cover how GNU/Linux differs from Unix and other Unix-like operating systems.
There are many Unix-like operating systems and derivatives. Which ones are which?
Category | OSes | Origin of code? |
GNU | GNU/Linux, GNU/HURD, GNU/Mach, GNU/BSD | Free Software Foundation; kernels developed separately except HURD. The Linux kernel was originally written by Linus Torvalds, and is currently maintained by him. |
BSD | FreeBSD, OpenBSD, NetBSD, DesktopBSD, BSD/OS | UC Berkeley, originally; each project has been developed separately since the early-mid 1990s, however. |
Unix | Solaris, AIX, IRIX, HP/UX, Tru64, UnixWare, OpenServer | Bell Labs (AT&T) developed the original Unix code. UNIX is now a trademarked operating system certification program instead of an operating system, and no longer requires that a compliant OS contain AT&T Unix source code to achieve brand certification. Despite that, all of the extant Unix derivatives are compliant with at least one published UNIX standard. |
Darwin | Darwin, OS X | Based on the NeXTSTEP operating system, which used the Mach kernel and some FreeBSD programs and networking code. OS X is developed from Darwin. |
Minix | Minix | Originally written by Andrew Tanenbaum, but now mostly developed by a handful of others |
GNU/Linux is only one possible combination of the GNU operating system with a separate kernel. GNU's own kernel is HURD, but it's been in development for a long time and is nowhere near ready for production. GNU/BSD and GNU/Mach exist, but more for experimental purposes than anything else. So in effect, GNU/Linux is the only GNU-based operating system that matters. Theoretically, you could use the operating system components from BSD and eliminate GNU entirely (or almost entirely) from GNU/Linux, but that would -- again -- be purely an academic pursuit.
Of the above-listed operating systems, only GNU/Linux has a variety of software distributions. The others are software distributions in themselves. The one exception is Solaris, which is based on code from the OpenSolaris project. There is at least one other OpenSolaris-based distribution aside from Solaris, and others are probably in development.
Most of these operating systems are similar in superficial ways. All are command line-based at heart, even if many of them default to graphical interfaces. Most of them share the majority of their terminal commands -- or have commands that have largely similar functionality and syntax -- so if you know one system very well, it is not difficult to learn a different one. GNU's userland utilities were improved replacements of Unix commands; BSD was originally developed from Unix source code, so its userland utilities started out as clones of Unix commands and have evolved from there. Some of these OSes can use the same software programs if properly configured. Some are restricted to specific hardware architectures, while others are extraordinarily versatile in terms of what computers they can operate on.
The amount of code- and program-sharing among all of these operating systems varies. All of them are guaranteed to have either BSD code integrated somewhere, or at least one GNU utility (usually the GNU Compiler Collection, the BASH terminal program, or the Emacs text editor, among many others) included by default.
Among GNU/Linux distributions, there can be many variances in the base operating system (kernel and userland utilities). Some have unique methods of managing startup scripts; others mimic BSD or Unix. You can know everything there is to know about creating and modifying init scripts on Red Hat Enterprise Linux, then be totally lost when trying to implement the same changes on Gentoo Linux.
Almost all distros make their own small, custom changes to the Linux kernel in order to accommodate other changes or additions that the distribution maintainers want to make. This makes each distro's kernel unique, and probably incompatible with other distributions. Commercial desktop GNU/Linux distros usually have extensively hacked kernels that support proprietary programs like Win4Lin, VMware, and proprietary hardware drivers.
GNU/Linux distributions are generally binary compatible with each other. That means that a program that will work on SUSE Linux will also work on Xandros and Linspire and any other distribution of the same generation and hardware architecture. Like all other operating systems, programs that are compiled for one architecture will not work on others. The only exception is 32-bit x86 binaries, which will work with most 64-bit AMD64 and Intel EM64T computers.
Chances are, if you've selected the right GNU/Linux distribution for your needs, you won't have to add any extra software to it. If you do, most distros have software repositories that contain thousands of extra software packages that have been certified to work with your configuration. All you have to do is figure out which programs you want, select them from a list, and everything is installed for you. It's much like using Windows Update.
Also like Windows Update, all major GNU/Linux distributions come equipped with a software update framework. Unlike Windows Update, however, GNU/Linux updaters will find patches and bug fixes for all of the software on your computer -- not just the basic operating system. Each distribution has its own specialized update tools, but they are all generally easy to use.
On a more basic level, GNU/Linux distributions install software in one of two ways: by compiling from source code, or -- more commonly -- by installing precompiled binary packages.
Source-based distributions like Gentoo and Arch still have a software management framework like the big fancy commercial distros, but you have extra options. You can add in compiler flags to make programs a little faster or use less memory, or you can build applications with hooks to other programs so that your software is more interoperable. Binary distributions make guesses as to what your needs will be, and try to cover all of the bases by compiling everything in. In the real world, you're not going to notice much of a difference by adding compiler optimizations and other options, but if you like tinkering with your computer, you'll enjoy the experience.
Source-based distros will take a lot longer to manage because it takes time to compile large programs. You can use binary packages to get started, but updates are applied by compiling from source code. A binary installation of the KDE desktop environment takes only slightly longer than the time consumed downloading the binaries from the Internet, but compiling the full KDE system from source can literally take days. The same can be said of such behemoths as OpenOffice.org, GNOME, and Mozilla.
Binary distributions almost exclusively use two package formats for programs: RPM (a recursive acronym for RPM Package Manager), and DEB (short for Debian, a GNU/Linux distribution that is commonly used as a basis for others). In the old days, you may have had to go searching for RPMs or DEBs of programs that you wanted. In this day and age, however, you use your package manager to find and retrieve them for you. In the event that you must install one of these packages by hand, there are graphical alternatives to the standard command line tools for installing them. There are even tools available to use DEB packages on RPM-based distros, and vice-versa. Usually programs are packaged in both formats, though.
Red Hat (and Fedora Core), SUSE, and Mandriva are three well-known distributions that use RPM packages. Linspire, Xandros, Debian, Ubuntu, and Mepis are some of the most popular DEB-based distributions. Both package formats are heavily entrenched in these and other distributions; neither seeks to replace the other.
Occasionally you might see someone on a message forum or mailing list complaining about RPMs and "dependency hell." This is because individual packages usually depend on other packages, and that means tracking down several RPMs to install one program, then doing some command line kung-fu to install them in the right order. Again, this is the old way of doing things -- nowadays you let your package manager do the work for you.
Popular package managers include:
Commercial GNU/Linux distributions include software that automatically detects and installs the proper drivers for all of your computer hardware and peripherals. Usually it works perfectly without any user intervention necessary. Sometimes it encounters unsupported hardware, or hardware that requires a newer kernel or driver. Some distros share the same autodetection and hardware management code, some have a totally unique hardware management framework.
Non-commercial distros are usually good at detecting hardware, but never contain proprietary drivers for ATI and Nvidia video cards, some kinds of wireless network chips, RAID cards, and video capture cards. Drivers for these devices require licensing and distribution agreements that non-commercial distribution developers are generally unwilling to negotiate, agree to, or pay for. This means that if you want to take full advantage of your 3D graphics card, you will have to download and install a proprietary video driver. A simple Google search will usually yield installation instructions. Again, this is best done by adding software repository sources to your package manager instead of installing them by hand.
The two primary desktop environments in the world of GNU/Linux are GNOME and KDE. Most distros support both, and usually default to one or the other. There are also window managers, which don't have the large number of integrated programs, but are usually considered to be more responsive and efficient on slower computers. Which one you should use is entirely a matter of preference.
Aside from desktop environment, each distribution has its own special color, icon, login, desktop, and menu theme. You can change the theme -- there are several dozen good themes available, and more coming out every week -- so don't let the default look and feel of the desktop discourage you. You can make KDE look almost exactly like Windows XP, and you can make GNOME look almost exactly like Apple OS X. Window managers are even more customizable, but often require you to edit configuration files by hand.
In addition to the proprietary hardware drivers mentioned previously, there are also proprietary software extras that are an important complement to the desktop computing experience. Most people will, at one time or another, need to access a PDF, Java applet, Flash animation, or video file on the World Wide Web. And when they need to see those files, they need browser plugins to do it. Unfortunately, all of the most functional plugins for these technologies are not free-as-in-rights, and won't be included with the majority of GNU/Linux distributions. If you want them, you have to either choose a commercial distro (there are some recommendations in a section below), or add them by hand. As I've said before, adding them by hand is not necessarily difficult, but it will take some reading and research to get everything working perfectly. If you are not prepared to do this, do not choose a GNU/Linux distro that does not include these extras.
If you don't know what you're doing, don't choose distributions that require a lot of legwork to configure basic services or install extra software. If you are new to GNU/Linux and want a great desktop experience, I recommend trying these distros (listed in no specific order):
All of these distros will cost you something -- usually under US $100. A lot of experienced GNU/Linux enthusiasts will recommend non-commercial distributions like Ubuntu, Fedora Core, or Debian. These are good distros and are available free of charge, but require that you add proprietary video drivers and Web browser plugins by hand, and don't have the same kind of automatic hardware management that the four distros I listed above have. That means that you could end up rather frustrated by your GNU/Linux experience. Also stay away from the open source edition of SUSE Linux -- that is also missing many of the proprietary extras that you're used to in Windows or OS X (the commercial version of SUSE does have plugins for Java, Flash, and PDF). It's not tough to add them if you follow this guide, but many people are not prepared to get that technical with their software.
If you're looking for a distro that is more suited to server use, try these:
Again, people will argue that other distros or Unix-like OSes are better, but the above-mentioned distributions are easy to install, configure, and manage, and come with extensive documentation and commercial support. You will have a much easier time with them, and you're better off going with one of these if you're new to GNU/Linux or Unix-like operating systems in general. You can make virtually any GNU/Linux distribution into a server of any kind; it's just a matter of how much work you have to do to prepare and maintain it. If you don't want to do a lot of work, choose one of the above distros.
Non-commercial desktop distributions of note include:
If you would prefer more of a challenge, as either a server or a desktop OS, try these distros:
Lastly, if you would like to see what a GNU/Linux desktop can look like, you can download Knoppix, a distro that runs entirely from a CD. You write the ISO file to a blank CD-R disc, then restart your computer with the disc in the CD drive. You'll run a whole distribution right from the CD. When you're done playing around, just select the Shutdown menu option, remove the CD from the drive, and restart -- nothing will be written to your hard drive.
Copyright 2006 Jem Matzan.
link: http://www.softwareinreview.com/cms/content/view/26/1/
准备面试的方?br />
书、杂志、组l和研讨?
本文的参考目录中列出?jin)许多能得到有效的管理实践信息的地方。去L理斚w的书c,包括技术管理和商业理两个斚w。阅ȝ理大师,例如Q?span lang="EN-US">Peter DruckerQ?span lang="EN-US">C. A. Gallagher?span lang="EN-US">A. Maslow写的书和文章。他们提供了(jin)在Q何领域都使用的管理知识。信息管理大师例如:(x)Tom DeMarco, M. Page-Jones, Ed Yourdon, L. L. Constantine{等提供?jin)许多条理清楚的、经q实跉|验的Ҏ(gu)?span lang="EN-US">
如果你要同用户一起工作,要阅M本有关领域的专业书籍。了(jin)解业务比?jin)解技术环境更重要。事实上Q让用户参加面试q程来流行。要准备得更充分Q可以买一本《哈?jng)商业评论》(Harvard Business ReviewQ这是一本很好的杂志Q适用于商业读者同样也适用?span lang="EN-US">IT理。许?span lang="EN-US">IT杂志例如?span lang="EN-US">CIO杂志》及(qing)在参考书目中列出的书目中都有有关目理和h员管理方面的文章。这些杂志中q包括概括或详细的技术性文章?span lang="EN-US">
可以和美国管理协?x)?span lang="EN-US">AMAQ和其他商业l织取得联系Q获取管理信息。值得一提的是,卡奈基梅隆大学的软g工程研究所Q?span lang="EN-US">SEIQ在90q代提出的管理Y件过E,最新标准版本ؓ(f)SEI9000?span lang="EN-US">
许多技术研讨会(x)Q例如数字咨询和技术{换研I所Q?span lang="EN-US">Digital Consulting and Technology Transfer InstituteQ有许多不同领域的项目管理和技术研讨会(x)。另一U途径是通过你所在的l织。他们也怼(x)提供有关授权、谈判和們技巧等的课E,所有这些都有助于你准备目理?span lang="EN-US">
你应该了(jin)解的软g
掌握一U项目管理工兗例如微软的Project?span lang="EN-US">Applied Business Technology/Project Workbench。所有这些工具都有许多有效的目理Ҏ(gu)和术语字典?span lang="EN-US">
除了(jin)上述提到的工具外Q还有一个越来越行的工具可以针对不同技术环境中的项目在计划~制、费用估和理Ҏ(gu)上提供帮助。这个工具就?span lang="EN-US">LBMS/Process EngineerQ具?span lang="EN-US">CASE界面的工兗?span lang="EN-US">
如果你用过此类工具Q把q些内容列在你的历中。当?dng)不仅要掌握工P你还必须h坚实的基知识和项目管理方法?span lang="EN-US">
一个项目经理必智多谋。通过emailq行通信已经取代?jin)?sh)话和邮寄备忘录。许多公司有自己的系l,q有许多公司使用Lotus Notes。无论是用何U品,必须h如下性能Q?
· 能够与处于不同地理位|的人取得联p?
· 能够有效地通知团队Q包括供应商Q范_(d)q度的变?
· 能很快地解决问?span lang="EN-US">
要记住h们工作方式的差别Q性格内向的h更愿意通过email沟通。这样他们可以有旉思考问题的{案而不是在?x)议上立d出答案?span lang="EN-US">
作ؓ(f)一个项目经理,你可能会(x)作报告(reportQ和介绍(presentation)。因此,需要掌握字处理软g和图形Y件。这些Y件在?jng)场上都可以买到。在你的历上列出你会(x)使用的此cY件?span lang="EN-US">
L思想
M行业都有好的目l理和差的项目经理。你可以从两U项目经理n上得到启C(什么是应该做的而什么是应该避免的)(j)。如有可能,问一些优U的项目经理他们是如何做的。如果你对你的职业发展道路还不太清楚Q你可以拿一刚刚读q的有关文章Q问问这些项目经理对此文的观炏V?span lang="EN-US">
一个成功的目l理的标志有拥有一支气氛融z的U极的团队,上层领导的信d用户的尊重。一致的行动是另一个标志,它是衡量领导能力的基。优U的项目经理应该了(jin)解每个雇员的长处和短处。他们认为失败ƈ不是~点Q而是一ơ学?fn)机会(x)?span lang="EN-US">
目l理必须建立一套专业标准。但按照一套完的例子来进行管理却是一个失败的目l理。这虽然说明他们的多才多艺,但更体现?jin)他们在授权和沟通方面的能力不。原来想积极工作的员工变得消极的做法可以毁?jin)项目经理。你在技术方面的能力应该用于指导和培训员工。如果你参与~程或设计,你不是在开发你的团队,也不是在做项目经理?span lang="EN-US">
目计划技?
以下是在面试中通常?x)提到的有关目计划~制的术语和图表。大多项目计划编制工具都?x)用到一些或全部术语和功能。你应该复习(fn)一下有用的一个或多个目理工具Q这有助于你q一步熟(zhn)常用的技术和功能?span lang="EN-US">
图表cdQ?span lang="EN-US">
甘特图:(x)用图形,特别是条形图Q描q项目进度的图表。每一个条形符号代表不同的意义。例如:(x)关键d的条形符号及(qing)/或颜色可能与非关键Q务的不同。概要Q务(zd或阶D)(j)的符号可能于其他d不同?span lang="EN-US">
Pert图:(x)用流E图来表C所有Q务的现行依赖关系?span lang="EN-US">PERT的意思是计划评h(hun)与审查技术,是一U网l图?span lang="EN-US">
d列表Q文?span lang="EN-US">/U向地列出项目计划。通常臛_应包括以下栏目:(x)d~号QQ务名Uͼ开始日期,l束日期Q持l时间和工作效率?span lang="EN-US">
工作分解l构Q项目Q务和/或活动的l构图?span lang="EN-US">
关键路径Q是贯穿整个目的一条\径,表明在限定的旉成功完成目涉及(qing)的各d间的依赖关系。调整关键\径上d的时间进度将?x)?jing)响整个项目的交付旉。关键\径方法(CRMQ图是一U网l图Q用于项目的q度控制和协调项目的zd和事件?span lang="EN-US">
可交付成果:(x)证明一个或多个d完成的有形事物。例如:(x)逻辑数据模型?span lang="EN-US">
依赖关系QQ务间的联pM(x)影响一个或多个d的开始时间。例如:(x)在没有弄清需求前Q不能开始编E?span lang="EN-US">
JAD/化方法:(x)联合应用E序设计(化方法是90q代的术?span lang="EN-US">)。一套面向结果的,大脑风暴式的,有一个共同的商业目的信息集合/分n?x)议。该Ҏ(gu)?span lang="EN-US">IBM公司?span lang="EN-US">1970q开发的Q由固定的,l构化的q程l成Qƈ在一个有l验的实施者的领导下进行。简化方法去掉了(jin)一些结?span lang="EN-US">,然?span lang="EN-US">,仍要求所有各斚w必须参加所有的?x)议和一个有建模技术的记录员作记录。参加者们包括目团队,理(与用?span lang="EN-US">)和行政官员。ؓ(f)?x)议的成功,每个人必ȝ解和同意目的q且快解决他们的Q务?span lang="EN-US">
延迟Q是d的结束时间和与其相关的Q务的开始时间之间的延迟旉。这允许dl束旉和开始时间的重叠和拉ѝ?span lang="EN-US">
Ҏ(gu)论:(x)一U明的、有l织的、可重复的、结构化的方?span lang="EN-US">/技?Q以完成一个通用的目的。这些技术或指南定义步骤QQ务,角色Q目的和可交付成果,q些是Q何系l的成功的实现所必须的?span lang="EN-US">
衡量标准Q一个一致ƈ且可重复的测量一个项目的大小和复杂性的Ҏ(gu)。标准准备在整个目生命期中使用许多Ҏ(gu)中的一个。今天公怋用的行Ҏ(gu)是:(x)
a) 功能点(Allan AbrechtQ?span lang="EN-US">
b) 重要事g (Tom DeMarco)
c) 加权q_
d) 代码?span lang="EN-US">
里程:(x)在项目生命期的一个重要的事g的结束。通常一个里E碑是在关键的\径上的一Ҏ(gu)动。它不必是一个有形的可交付品例如一个逻辑数据模型Q但可以是用户对工作成果的肯定?span lang="EN-US">
阶段/zd/摘要标题Q概要的概c(din)不是所有的目理工具都强调特定的阶段和摘要一U的格式Q然而许多标准的开发方法用q些术语q行工作分解?span lang="EN-US">
RADQ快速的应用开?span lang="EN-US">(如果不正地使用?x)有破坏作?span lang="EN-US">)。通过应用E序生成器,建模和快速原型工L(fng)使用加快开发工作的一条途径。最大的改进是在整个开发生命周期中加入快速原型。这在编码前?jin)解清楚用户需求提供优U的工兗?span lang="EN-US">
资源限制Q一个基于可得到的资源的数量Q每个资源的技巧的水^Q资源工作时间表而开发的计划和时间表?span lang="EN-US">
范围变更Q对原先设计要求的功能增加而没有对人员Q时间或费用的媄(jing)响进行评估。范围变更可能是一个商业用h一个热?j)的E序员提出的。两者媄(jing)响系l的交付q且不能被估计,分析Q或记录?span lang="EN-US">
面试中的表达的要?span lang="EN-US">(q问题没被?span lang="EN-US">)
如果你没有管理经?
对于那些从未正式理q一个项目的Q可能是非正式地理q的人。在那些情况中,当强调他们的技术背景优势的同时需要明说明他们没认识C们已掌握的那些技巧。你可以提及(qing)你是怎么不得不在没有授权的情况下领导一个大型的开发团队进行工作的。需要强调的是没有一个稳固的技术的基础,你的工程d和估计的军_可能被过分简单化。当你是目的领ghQ你需要提供技术的q诏避免团队负荷工作?span lang="EN-US">
如果你的技术技巧在未来的技术的环境中是落伍或不同的
你不需要理解技术环境的内部是如何工作的Q但是你应该理解一般的概念和特征决定环境的能力和弱炏V许多项目管理技巧是出技术范围的。因?span lang="EN-US">,如果你的技术技巧是落伍的,你仍然能你在技术上能负独立责Q。提?qing)你理的应用类型和及(qing)其商业作用。提?qing)团队是如何有效地完成目标的。强调你的管理哲学。提CU,与你C同等的hQ你的用户和部下是如何评价你的管理能力的Q记住提起Q何你掌握的商务领域知识。在面试时应该将你对你的技能落后的恐惧抛在一旁。一旦你拥有q个工作Q你能向公司内的专家询问。在所有组l中都有各方面专家的非正式的机构。你可以到处打听一下,把他们找出来?span lang="EN-US">
问面试官的问题:(x)
即你通过面试Q得C(jin)q个职位Q你q需要信息进行估Pq时是你的好Z(x)。如果这是目l理的第一个工作Q务,q尤其是关键。你需要明白你的工作环境。因此,你可以问下列问题Q?span lang="EN-US">
1. 公司优先权是什么?
2. 本项目的执行资助者是谁?
3. 公司使用的开发原理体pL什么?
4. 本项目最后期限是什么?
5. 有量度项目成功的Ҏ(gu)吗?
6. 你的新经理将怎样保持目信息灵通?
7. 你的新经理管理哲学和风格是什么?
8. 目上的Z的技能水qx什么?
9. 你将理的项目的范围被充分地定义吗?
10. 技术环境已l选好?jin)吗Q?span lang="EN-US">
以下是典型的目理面试中通常?x)问到的问题Q期望的回答Q:(x)
很多的问题的{案是主观的Q面试官想知道你的观Ҏ(gu)否和他们的及(qing)公司一致。问题的构成如下Q?span lang="EN-US">
1. 目理软g工具知识Q?span lang="EN-US">
2. ~制目计划的技?Q?span lang="EN-US">
3. 人员理技?span lang="EN-US">
4. 沟通技?span lang="EN-US">
5. 原理体系知识Q标准开发生命周期和目理 Q?span lang="EN-US">
目理软g工具知识
问题1Q工期和工作量之间的差异是什么?
{案1Q工期是商业/日历上的天数Q与人数和工作量无关。工作量是与日历天数无关的h的工作。例如:(x)
一天的工作量对于一个一只花50%在时间在上面的h来说Q他的工期就是两天。如果两个h全职工作Q工期是1天,而工作量是两个工作日?span lang="EN-US">
问题2Q怎样和ؓ(f)什么要在编刉目计划时考虑依赖关系Q?span lang="EN-US">
{案2Q根据用的软g包,依赖关系可以通过Q务及(qing)其后lQ务的标识W进行关联来表示。依赖关p说明了(jin)d之间兌/q列的要求。依赖关pd以是指在另一个Q务能开始之前有一个Q务必d成。例如,逻辑模型必须在物理模型前完成。但试q不是要在所有编E工作完成之后才开始,如果没有完成的程序对U性测试没有媄(jing)响?span lang="EN-US">
目计划加入依赖关系Q就能找出项目的关键路径q且能够定它对目工期的媄(jing)响?span lang="EN-US">
问题3Q你怎样h的工作步调与计划l合Q?span lang="EN-US">
{案3Q根据组l用的具体的工P可以资源拆成更的资源/单位Q或者可以将d拆成更小的Q务?span lang="EN-US">
问题4Q你怎样培训,假日和个人教育时间表l合hQ?span lang="EN-US">
{案4Q每个品都有标明不工作的天数的公司/全球的日历。每个品都也有个h的资源日历标明个Z工作的时间。如果项目需要教育和培训Q应该把它们象Q务那样写在项目计划上?span lang="EN-US">
问题5Q你怎样安排cM状态会(x)议这栯I整个项目但只需要极的旉和工作量的Q务?
{案5Q它的工期将和整个项目时间一样长Q占工作量的癑ֈ比很。被分配lQ务的每个在该d的时间占他时间的癑ֈ比极低?span lang="EN-US">
问题6Q实冉|告对计划的作用以?qing)实况与最初预计的比较有何价|
{案6Q根据组l用的特定的工P每个工具都ؓ(f)实况报告中输入相互独立的要素/域信息。也可以报表进行分c,来向团队成员和其他相兛_体说明关键\径的变化或时间表的调整。这些报告对已实现工作评价和作ؓ(f)在计划下一个工E或阶段的输入有价倹{另一个把估计和实冉|告比较的有h(hun)值的用途是把范围变更对目的媄(jing)响记录下来?span lang="EN-US">
做项目计划的技?span lang="EN-US">
问题7Q你Z么制定项目计划?
{案7Q项目计划是实现成功的系l的路线图。它提供?jin)一U手D|通知每个人希望他们做什么及(qing)何时完成。它帮助目l理使管理层Q商务用户和支持团体?jin)解目状态和调整Ҏ(gu)的资源。逐项列记?span lang="EN-US">?/span>一览表?/span>协助对Q何变动的影响q行q速评估。当实况报告与计划联pv来后Q项目计划ؓ(f)今后目的Q务划分和估算提供?jin)有用的信息?span lang="EN-US">
问题8Q你怎样着手做目的计划?
{案8Q进E安排是一门艺术。根据已知有关业务目标的事实Q公怸般标准,以及(qing)可以利用的过ȝl验。可以从清楚地定义范围和目标开始。把目的风险和制约做成文g。差的估计源于对业务知识和项目范围缺乏了(jin)解。可以从目d分解入手Q例如先划分阶段Q然后定义每个阶D늚zdQ再定义每个zd中的d。识别和文化里E碑和可交付产品。项目计划是当信息变得可以利用的Ӟ不断l化的有生命文g。很好地记录q度的变化对目l理Q开发团队,支持团队Q以?qing)管理层Q商业用户都有益处?span lang="EN-US">
问题9Q你怎样着手制定项目计划?
{案9Q在适当的活动和阶段或其他的概括的标准说明下Q输入确定的d。将适当的可交付产品?qing)里E碑和特定的d联系h。连接全部需要依赖关联的d。把资源角色或资源名字加到每个Q务上。应用度量结果确定事先的d工作量,把更多的旉用于需求收集,设计和测试。考虑所有已知的节假日,培训Q休假或其他的资源停工时间。计划草案将同支持团体,理层和商务用户一起复查,做ؓ(f)补充性的输入和最l的批准?span lang="EN-US">
原文链接Q?/span>http://pm.csai.cn/manager/NO415.htm
Buffalo是由国h开发的Ajax框架。Buffalo中定义了(jin)Webq程调用的传输基Qƈ且将q程调用对象完整的序列化C(jin)本地Q成为可以被JavaScript~程触及(qing)的对象。Buffalo中的重要lg - BuffaloBindingQ提供了(jin)JavaScript对象l定到HTML元素的能力。这U绑定将是无侵入的,只需要在HTML元素中加入若q个不媄(jing)响排版的属性,卛_数据与界面l定?br /> Buffalo 1.1 之前的版本重要的功能主要集中于远E调用与Java对象/JavaScript对象之间的双向序列化Q这个特性已l被众多的应用久l考验Q被认ؓ(f)是健壮的。它大大减少?jin)在Java对象与JavaScript对象之间需要考虑的细节,开发者可以更用心(j)地进行业务设计和界面设计?.2版本的推出,引入?jin)新的众多的?gu)包括,新的重新改写的Spring集成Q与行javascript库prototype的集成,支持览器前q后退按钮Q等{?br /> 下蝲链接
http://www.amowa.net/buffalo/
AJAXq项用于创徏互动Web应用的技术正在爆发式的进入到Web开发领域中Q?span style="COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">q速的变得如此热门以至于一些开发?span style="COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">在技术上无法?qing)时更新。ؓ(f)?jin)满x快的开?span lang="EN-US">AJAX的需求,已经有不公司和开发者社区正在推?span lang="EN-US">AJAX?span lang="EN-US">RADq_。其?span lang="EN-US">ThinkCAP框架集成?jin)超q?span lang="EN-US">24U开源代码库?span style="COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">现在Q?span lang="EN-US">ThinkCAP的框枉分也以GPL方式开?/span>?jin)。详l链?span lang="EN-US" style="FONT-FAMILY: 宋体">http://trends.newsforge.com/article.pl?sid=06/01/08/1725231
可视化工?
Fabric 是一个用于用L(fng)面开发的有力工具Q面向创建可视化Java Bean的用戗Fabric的执行技?Park'可以L的集合XML-based用户界面语言到rich 界面。链接地址Q?/font> http://www.platespiller.com/download.jsp
搜烦(ch)引擎:
Compass 0.7.0: Compass 具备一个强大的、事务的、高性能的对?搜烦(ch)引擎映射Q与一个Java持久层框架。下载地址
http://www.compassframework.org/display/SITE/Downloads
JDK Date和Calendar的替代工?
Joda-Time提供?jin)一lJavacdQ用于处理包括ISO8601标准在内的date和time。利用它可以把JDK Date和Calendarcd全替换掉Q而且仍然能够提供很好的集成?Joda-Time主要的特点包括:(x)易于使用Q易于扩展,提供一l完整的功能Q有着比JDK Calendar更好的整体性能{等。下载链?/font>
http://sourceforge.net/project/showfiles.php?group_id=97367&package_id=104212
Java 3D 工具:
Java XTools是一个用来提高Java 以及(qing)Java 3D 功能Ҏ(gu)的工具。下载地址
http://freshmeat.net/projects/xtools/?branch_id=39620&release_id=217167
地理信息pȝ服务?
GeoServer 1.3.0-PR1: GeoServer是OpenGIS的web服务器规范的J2EE实现。下载链?/font>
http://freshmeat.net/projects/geoserver/?branch_id=44295&release_id=217272
GeoServer 开发组q日宣布Q地理信息系l服务器GeoServer 1.3.1 beta 发布?jin)。GeoServer是OpenGIS的web服务器规范的J2EE实现。该新版本中最显著的改q就是增加了(jin)GeoTools 2.2.xQ增加了(jin)许多新功能。下载链?/font>
http://docs.codehaus.org/display/GEOS/2006/05/06/GeoServer+1.3.1+beta+release
试工具Q?/strong>
TestNG是根据JUnit 和NUnit思想而构建的一个测试框Ӟ但是TestNG增加?jin)许多新的功能得它变得更加强大与容易用。链接地址
http://testng.org/
FindBugs可以用来扑ևpȝ源代码中存在的BugQ与设计上存在的问题Q非常好的一个捉虫Y件。链接地址Q?/font>
http://findbugs.sourceforge.net/
压羃工具?
TrueZIP 是一个ZIP压羃工具包,Z提供ZIP相关功能Q你可以调用q个ZIP压羃工具包进行压~操作。TrueZIP则针对java.util.zip中的~点q行?jin)完善。链接地址
https://truezip.dev.java.net/
报表制作工具Q?/strong>
OpenReports 提供Zweb 的灵zL表解x案,支持 PDFQHTML 和XLS 报表格式Q基于WebWorkQHibernate ?Velocity 开发完成,q且q提供一个整合了(jin)Tomcat 的OpenReports-Tomcat 文g下蝲. 新版本包括了(jin)一pd的bug fix?br /> 下蝲地址Q?/font>
http://oreports.com/index.php?option=com_content&task=view&id=24&Itemid=30
Features | Spring | Pico | Yan/Nuts |
---|---|---|---|
xml configuration |
Yes |
Through Nano Container |
Yes |
Life cycle |
Singleton only |
Singleton only |
Both singleton and prototype |
Parametered and ad-hoc life cycle |
No |
No |
Through <lifecycle> tag |
Constructor Injection |
Yes |
Yes |
Yes |
Setter Injection |
Yes |
Yes |
Yes |
Factory Method Injection |
Yes |
Yes |
Yes |
Referencing Field |
FieldRetrievingFactoryBean |
Implement ComponentAdapter |
Through <field> tag. |
Anonymous sub-bean |
Yes |
No |
Yes |
Ad-hoc bean combination |
No |
No |
Through <sequence> or <callcc> tags |
Concise collection literal |
No |
No |
Yes |
named local bean |
No |
No |
Through <local> tag |
Bean Definition Reuse |
through "abstract" bean |
|
Through <function> tag |
import module |
Yes |
Yes |
Yes |
module private beans |
No |
No |
Through "export" and "hide" attribute of <module> |
Selective import by bean names |
No |
No |
Through "includes" and "excludes" attribute of <import> |
Import with namespace |
No |
No |
Through "namespace" attribute of <import> |
Singleton bean with prototype property |
Requires Cglib and bytecode generation |
ComponentAdapter combination |
Through component combination |
Dependency Injection for objects not managed by container |
Supported at the cost of Spring API dependency |
No |
Through <function> and <factory> tag |
Extensible tag library |
No. But FactoryBean is a substitute |
No |
By implementing subclasses of Nut |
Configuration unit-testable within configuration file. |
No |
No |
By using <sequence> together with <assertEqual>, <assertSame>, <if>, <unless>, <fail> etc. |
autoproxy |
Yes |
|
No |
Custom PropertyEditor |
Yes |
Yes |
No |
Container hierarchy |
Yes |
Yes |
Yes |
AOP support |
Both Spring AOP and AspectJ |
Via dynaop |
Any AOP solution can be plugged in. An integration package for spring AOP is provided out-of-box. |
Declarative Transactional support |
Yes |
No. But Spring's declarative transaction support is integrated. |
|
Scripting language support |
Not yet |
Nano Container |
Not yet |