ࡱ> U@ Lbjbj "D:DDD8Dd`EEE4,F,F,F,F,F,F$RH,F,FHH,F,FVVVH$ ,F,FVHVXVqV3KV,FE pDAR~L^$Ӫ0ʣ UVVR ,FLxF6VF,FC,F,F,Fd$)U.)Coldfusion Web Development Standards Table of Contents Documentation 2 File Naming Standards 2 Directory Naming Standards 2 Images 2 StyleSheets 2 Query Naming 3 Quotes in Queries 3 Cached Queries 3 General HTML Guidelines 4 Comments 4 Application.cfm 4 Abbreviations 5 Dont use iif() 5 Custom Tags 5 Table Indentation 5 Tag Layout 6 Attribute Values 6 JavaScript and CSS ... 7 Session Timeouts 7 Session variables 8 Using pound signs (#) 8 Scope Names 8 Locking Shared Scope Variables 8 Oracle vs SQL Server Queries 10 Coldfusion Web Development Standards Documentation The beginning of all files should have documentation (within comment tags ) with the following information: Description (brief desc. of template purpose) Created By (Developer name) Date Created (mm/dd/yyyy) Input parameters (list) Output parameters (list) Modified By (Developer name) create a new line for each modification Date Modified (mm/dd/yyyy) create a new line for each modification File Naming Standards - Filenames should accurately represent the content of the page. Refrain from using multiple word filenames, except for clarity. Use the following naming conventions for all templates (html, css and cfm): filenameFiles used to display output to the user, usually as HTML act_filenameFiles used to perform processing, such as credit card transactions or validating form input qry_filenameFiles that interact with a database, usually as SQL queries or stored procedures url_filenameFiles that perform an HTTP redirect, usually with CFLOCATION Do not use special characters in filenames; e.g., &, $, *, %, etc. (example: it&classes.htm). Do not use spaces between words (example: use itechclasses.htm, not itech classes.htm). Even though most web servers handle underscores ( _ ) you should refrain from using them because they are difficult to read in a URL address. Make sure to use uppercase A for the Application.cfm (requirement for Unix). Use lowercase letters for all other filenames. Default file in each directory should be index (.html, .htm, or .cfm) Directory Naming Standards The same conventions mentioned above for filenames also applies to directories (except for naming conventions.) Create only as many subdirectories as needed to help you manage your web site or that also make sense to the user. Too many subdirectories make for a lengthy URL address. All images should be within an images subdirectory. All administrator pages should be in admin subdirectory. Images Images should be used sparingly in order to minimize performance issues. Use HTML to write text rather than making an image with writing. Make sure to optimize images in order to reduce their size and loading time. StyleSheets Cascading Style Sheets should be used in order to control all formatting, font, colors, etc. The .css template should be located within the root directory of a project/application. Query Naming Query names follow the same convention as other variable names, utilizing the verbs Update, Insert, Delete, or Select in the case of select: Query TypePatternExampleSelect DataquerynameSelectcustomerSelectUpdate DataquerynameUpdatecustomerUpdateInsert Data querynameInsertcustomerInsertDelete Data querynameDeletecustomerDelete Quotes in Queries Use double quotes when passing strings/parameters within a query: select firstname, lastname, phone from Employees where LastName= #LastName# No quotes should be used for numeric values: select emloyeeId, firstname, lastname from Employees where employeeId = #empID# Cached Queries A cached query allows you to query the data on a database once, and use the results for a specific period of time. For example, if you have a form with a drop-down list of items from a table, you can query the table when originally loading a page and have the results available in cache for a set time period (i.e. 10 minutes.) Two attributes are used to enable persistent queries: CACHEDAFTER used to specify a certain date and time to use cached query data. CACHEDWITHIN used to specify a timespan for using the cached query data (example, you can specify to the cached data for a span of 10 minutes) Sample use: select * from myTable where field=fieldname #fieldName# General HTML Guidelines Close all tags correctly, e.g., close

with

and
  • with
  • Indent code for improved readability Comments Write CFML style comments, for all important entities, that describe what code does and why - document the how if it is not obvious. When you make a change, comment it. Identify the change with the date and your user name: When you want to leave a note about a bug to be fixed or functionality to be added, put TODO: in front of the actual comment so developers can easily search for them: Additional standard search keywords can be added after TODO: e.g., BUG:, PERFORMANCE: Application.cfm Each "application" on the site will also have an Application.cfm file containing application-specific code that starts by including the root Application.cfm file. Each "application" will also typically have an include file, applicationvariables.cfm, that defines the application-specific variables. This will also be included by the application-specific Application.cfm file. The variables should be those that might be needed by other applications that need to take advantage of the services of this application, e.g., the membership application would define an include file with LDAP and data source settings, for use by the store and exchange applications. Some attributes within web applications depend on the server environment and will differ between development, staging, integration and production, e.g., mail server name. The recommended approach for such attributes is to provide their values as request scope variables that are set as part of Application.cfm. However, Application.cfm itself should be a deployable file that is independent of the server environment so the variables should be set in a server-specific include file (i.e., a file that has the same name but different content on every server). This way, Application.cfm will be a standard, deployable source file that is identical in each of the different environments while the included file, or database table contents, are considered part of the server configuration itself. The Application.cfm must be encrypted for security purposes (keep a non-encrypted copy/version on development ONLY for future updates/edits). Make sure to include the following line in the Application.cfm so that Netscape renders layers properly: Abbreviations Abbreviations and acronyms should be avoided. Only a few, widely understood acronyms or abbreviations may be used, such as ID, CGI and URL. Such abbreviations and acronyms will be uppercase, unless they are part of a filename that forms part of a URL, in which case they will be lowercase, e.g., userID - variable, attribute, property etc set_user_id.cfm - invoked in a URL Don't use iif() Always use cfif/cfelse instead of iif(). It is significantly faster and more readable. Custom Tags Custom tag names will be lowercase_words. Their implementation filename will be lowercase_words.cfm, stored somewhere within the custom tag hierarchy/directory, outside the web root, specified by the custom tag path setting in the administrator. They will be invoked as . Custom tags will not be invoked directly as part of a URL - instead a CFML wrapper page will be written, lowercase_words.cfm, that invokes the tag with the appropriate parameters. Table Indentation In order to improve readability, format and indent table tags. The following is an example of how a table could be coded to improve readability: All table tags go on their own lines. attributes should be explicitly specified. tags are placed at the same indentation level as their parent
    .
    tags are indented. The contents of tags may be placed on a separate line, or if they are short they may be placed on the same line as the . Example:
    Table data goes here Short text here
    Nested table data here
    Tag Layout When more than one attribute is passed to a custom tag, each attribute should be placed on its own line and indented. Examples: Attribute Values All attribute values to all tags - except cfset and cfif - will be quoted, usually with double quotes ("). Single quotes (') may be used if the attribute value already contains a double quote. In cfset, the attribute name is always a variable name (possibly evaluated) and the apparent attribute value is really an expression. In cfif and cfreturn, the 'attribute' is really an expression. String values in expressions will be quoted (with " or ' as appropriate). Numeric values in expressions will not be quoted. Variable names in expressions will not be quoted, so that pound signs (#) are not needed, i.e., variableName instead of "#variableName#". When the attribute name is a simple variable name, that variable name will not be quoted. When the attribute name is an expression that evaluates to a variable name, e.g., caller.#result#, it must be quoted to be valid CFML. Examples: JavaScript and CSS should be in separate files By moving JavaScript and Cascading Style Sheet (CSS) code out of the section of each page and into central files, you accomplish two useful things: You centralize your code. If you must make changes to your code, you only have to do it once instead of once for every page that uses it. You save bandwidth. The client browser only downloads your JavaScript and CSS files once, rather than once per page. To accomplish this task, first find any JavaScript functions in the of your documents. Here's a typical example: Copy any functions into a new text file and save it as something like common.js. Link to it in the section of each page of your site (or put it in your template), as follows: Find any CSS code in the section of your pages, copy it to a new text file, and save it as something like mystyles.css. Here's what to look for in the section: Link the CSS file to your web page by putting a link to the CSS file in the page's section: Session Timeouts Use the Application.cfm file to handle session timeout. Sessions do not expire when a browser is closed, because the CFID and CFTOKEN cookies do not expire then. A session expires after the user does not make a request from the Cold Fusion server for 20 minutes. This time interval is controlled by a setting in the Cold Fusion server environment. As part of the application design process this inactivity timeout must be defined and enforced in the code. This is best accomplished through the Application.cfm. Session variables When the user logs out of an application, variables should destroy the session scope variables, using a call to StructClear(). This frees system resources for the Cold Fusion server. Use pound signs (#) ONLY where needed In CFML pound signs are used to distinguish expressions from plain text. In cfoutput and CFQUERY tags, enclose variables and functions in pound signs: The value is #form.MyTextField#. The name is #FirstName# #LastName#. Cos(0) is #Cos(0)# In this example, the SQL statement calls for single quotes to enclose a text string, the value represented by the form variable #form.LastName#. select * From Employees where LastName= #form.LastName# Note that pound signs are necessary only where you need to distinguish expressions from text, for example, when variables are embedded in text strings: Note that pound signs are necessary only where you need to distinguish variables from text, for example, when variables are embedded in text strings: In cfset statements, do not overuse pound signs. For example, do not use ; instead, use Similarly, is the same thing as . Pound signs are required when variables are used as arguments for parameters in ColdFusion tags such as cfoutput, CFMAIL, and CFQUERY. Scope Names Whenever it is possible/practical, scope name prefixes should be used with all variables, with the exception of the "variable" scope. Scope names should follow the same capitalization rules as variables (which in practice means all lowercase). Examples: form.myFormField url.myURLVar cfhttp.fileContents Locking Shared Scope Variables Because ColdFusion Server uses multiple threads (multithreading), it is able to simultaneously work on requests from multiple users at the same time. It is also able to work on multiple requests from the same user at the same time. Since these threads can access the same variables in memory at the same time, we are presented with the problem of the threads competing for the same resource. This competition normally leads to memory corruption. Locking variables prevent these problems by only allowing one thread to access the shared scope variable at a time. All of the other threads must wait in line to access the shared variables until the previous thread completes its action. In effect, access to the locked piece of code is single threaded. Locking is accomplished by encapsulating CFML that accesses shared scope variables with cflock. Writing to server scope variables: Reading from server scope variables: #server.myservervar# Writing to application scope variables: Reading from application scope variables: #application.myappvar# Writing to session scope variables: Reading from session scope variables: #session.mysessionvar# Oracle vs SQL Server Queries There are certain differences between Oracle and SQL Server Queries. Here is the correct Oracle format for SQL Server queries. When selecting the top 1 row SQL Server: SELECT top 1 from tableName Oracle: SELECT * from tableName where rownum=1 When inserting/updating data in a datetime field, here is the format for the field. Note, you can split it up for either just the date information, time information, or both (so you can enter just date with no time, just time with no date, or enter the full command). SQL Server: 02/20/02 02:00 PM Oracle: to_date('02/20/02 02:00 PM','MM-DD-YY HH:MI PM') Apostrophy Issue when inserting/updating data in Oracle When trying to insert or update information in a field with an apostrophe in it (example, Richards Event as the title from a Form) use the following format: Replace(PreserveSingleQuotes(Form.title),"'","''") PAGE  PAGE 10  DATE \@ "M/d/yyyy" 3/7/2003 $'8:; * T   ^ j     : ; I ^ ~  & ' Ľ hY5huh5h(7>$hOhO0JCJOJQJ^JaJhOhhuhuhu5 hGhg)hg)hg)5>*hhlRh1{|hz/ahG hG5hGhG5 hG5>*hg)hG5>*3&'9:;a + T |  D j 5 ^ gd1{|gdz/agdG$a$gdg)LL      ; I ' ? X  v & Fgdu h^h`gd & Fgd(7> & Fgdgdg)gdgdlRgdG {}~ uvz{~VWYZbctv}~de'()D^»ٍ hz/a5hhz/a5hYhY5hzJhv2 hYhY hY5 hu5 hhvhvh/UhlhT( hhE5Dhz/ahE5Dhg)huhB*OJQJph hhh5~e()Dvw$,$dd$If[$\$a$gd>%gd>%gdz/agdY & F hh^hgdT( & F hh^hgduvw,-XY24`fm#)0Ubhnyz»hv20JCJOJQJ^JaJh}0JCJOJQJ^JaJ$hv2hv20JCJOJQJ^JaJhv2 hv2hv2 hv25h>%h>%CJaJh>%h>%5B*\phh>%h>%B*ph h>%5 hz/a5hz/a h(7>hz/a2,-9IXG777dd$If[$\$gd>%kd$$If-Fh~@ 0 6    34-ab pXYeu\LLLdd$If[$\$gd>%kd$$If-Fh~@0 6    34-ab p\LLLdd$If[$\$gd>%kd$$If-Fh~@0 6    34-ab p\LLLdd$If[$\$gd>%kd$$If-Fh~@0 6    34-ab p\ZZRJA^gdv2 & Fgdv2 & Fgdv2kd$$If-Fh~@0 6    34-ab p pl_!*:!gdOgdv2 & Fgdz/agdz/agdz/a'1AMx~^ɼɼyey'hv2hO0J6CJOJQJ^JaJhv2hO6CJOJQJaJ"hv2hv256CJOJQJaJ"hv2hO56CJOJQJaJhz/a56CJOJQJaJh.Hhz/aOJQJ^Jhz/aOJQJ^Jh.Hhz/a5OJQJ^Jhz/a5OJQJ^Jhz/a hhz/ahhz/a5$ !EF Gbgl*:kz 2 """###$$$v%%&&&үүүүҧ hz/a5#hz/aB*CJOJQJ^JaJphh; hz/a0Jhz/ah(r hz/a5$hOhO0JCJOJQJ^JaJhwOJQJhOOJQJhOhOOJQJhv2hO6CJOJQJaJ#hv2hO0J6CJOJQJaJ2!!w%x%%&&I't''''()))***7+P++++,,4, & F gdz/a hgdz/agdz/agdz/a& &!&I'''''''''''''' (%(4(6(7(](p((()))4))))))**űűť򞋞wog\h{Hhz/aB*phhz/aB*phh{Hhz/a5'h(7>hz/a0J6CJOJQJ^JaJ$h(7>hz/a0JCJOJQJ^JaJ h(7>hz/ahz/ahahz/a6'hahz/a0J6CJOJQJ^JaJ hahz/ahahz/a5hz/aOJQJ^Jhhz/aOJQJ^J hhz/a hz/a5hhz/a5$**6+7+O+P+n++++++,,,S,U,d,e,k,l,,,,,,,,,4-6-?-@-------2.3.C.D.11˼}ph>%hz/aOJQJ^Jh>%hz/a5h>%hz/a5OJQJ^J hz/a0Jh}hz/a6hz/a he hz/ahe hz/a5h@P9hz/a5 hz/a5hz/aOJQJ^Jh6hz/aOJQJ^J h6hz/ah6hz/a6 hz/a6h{Hhz/aB*phhz/aB*ph,4,N,T,],c,j,,,,,,,,,5-6-o---------2.3.1gdz/agdv2gdz/a1111122!344655556666666677Ŀ}udYK}uYd=hz/aCJOJQJ^JaJhz/aCJOJQJ^JaJhz/a5OJQJ^J hhz/aCJOJQJ^JaJhz/aCJaJhhz/aCJaJ hhz/aCJOJQJ^JaJhhz/aOJQJ^Jhz/aOJQJ^J hhz/ahhz/a5 hz/a5hhz/aOJQJ^J hhz/ahhz/aOJQJhz/a0J56OJQJhhz/a0J56OJQJ11.2C2V2W22222223G44465l5q55555# 2( Px 4 #\'*.25@9^gdz/a & Fgdz/agdz/agdz/agdz/a55566667777788*8,8089888& 2( Px 4 #\'*.25@9d:^gdz/agdz/a^gdz/a# 2( Px 4 #\'*.25@9^gdz/a7088898888888::::;;;;;}<<<<<<<<<<<======>>>>>#>>>佸oohz/a0JCJOJQJ^JaJ$hv2hz/a0JCJOJQJ^JaJ hv2hz/ahv2hz/a5h(r hz/a5OJQJ^J hz/a6hz/a hz/a5hz/aCJaJ hhz/aCJOJQJ^JaJhz/aCJOJQJ^JaJhhz/aCJaJ hhz/aCJOJQJ^JaJ+8888::;;;;/<==$>>>? @@ A AA B B`gdz/a & Fgdz/a^gdz/a & Fgdz/agdz/agdz/a^gdz/a>n??? @@A@W@@ A AAA BBHBJBhBiBXEZEEEEEEFF>F?F@FdFfFFFFFFFF5G6G`GaGbGʻʠzrzrzzrzrzzrzrzhz/aB*ph333h0hz/aB*ph333h0hz/a6B*ph333h0hz/a6B*\ph333 h0hz/ahT%hz/a5hz/ah!hz/a6 h!hz/ah!hz/a5 hz/a5-hv2hz/a0JB*CJOJQJ^JaJph333$hv2hz/a0JCJOJQJ^JaJ hv2hz/a, BIBJBiBEEEF5F?F@FfFFFFFF5GWGaGbGGGGG" 2( Px 4 #\'*.25@9d:gdz/ad:gdz/agdz/abGGGGGGG!H#HZH[HHHHHHHIIIII:IIJ J1JeJ>KhKqKzK}K~KKKELJLrLLLٿwmjhy 0JUhh6h6B*phhB*phhBtB*phhBthBtB*phhy hBt6 hBt5hBthz/a hz/a5 h0hz/ahz/a6B*\ph333hz/aB*ph333h0hz/aB*ph333h0hz/a6B*ph333h0hz/a6B*\ph333(GG#HZH|HHHHHIIIII;IIIIJ2J3J?K_KKKd:gdz/a" 2( Px 4 #\'*.25@9d:gdz/aKKrLLLLLLLLLLh]hgdM &`#$gdM LLLLLLLLLLLLLLLLLLLLhh6hhmHnHujhy Uh0JmHnHuhy jhy 0JU hy 0J 1h/ =!"#$%$$If!vh5K5.5# #vK#v.#v# :V - 0 655~5@/ 34-ap$$If!vh5K5.5# #vK#v.#v# :V -0 655~5@/ 34-ap$$If!vh5K5.5# #vK#v.#v# :V -0 655~5@/ 34-ap$$If!vh5K5.5# #vK#v.#v# :V -0 655~5@/ 34-ap$$If!vh5K5.5# #vK#v.#v# :V -0 655~5@/ 34-ap@@@ NormalCJ_HaJmH sH tH \@\ (r Heading 2$<@& 56CJOJQJ\]^JaJ`@2`  Heading 3dd@&[$\$6B*CJOJQJ]aJphDA@D Default Paragraph FontRi@R  Table Normal4 l4a (k@(No Liste@ HTML Preformatted7 2( Px 4 #\'*.25@9B*OJQJ^JphT^@T  Normal (Web)dd[$\$B*OJQJphBb@B (7> HTML CodeCJOJPJQJ^JaJ.X@!. (7>Emphasis6]*W@1* Strong5\4 @B4 MFooter  !.)@Q. M Page Number4@b4 MHeader  !HrH % @ Balloon TextCJOJQJ^JaJ0O0 Norma B* phD&'9:;a+T|Dj 5^;I '?X v~e ( ) D v w $,-9IXYeu pl_!*:wxIt !!!"""7#P####$$4$N$T$]$c$j$$$$$$$$$5%6%o%%%%%%%%%2&3&)).*C*V*W*******+G,,,6-l-q-------..../////00*0,0009000000223333/455$6667 88 9 99 : :I:J:i:===>5>?>@>f>>>>>>5?W?a?b??????#@Z@|@@@@@AAAAA;AAAAB2B3B?C_CCCCrDDDDDDDDD00x000000000000000000000000000000000x0 0 0 0 0 0 0 0000 0 0 0 0 0 0 0 0000000000000( 0( 0( 0, 0( 0( 0( 0, 0( 0( 0( 0, 0( 0( 0( 0, 0( 0( 0( 0, 00 0 00000000000000000000 0 0(00000000x00000x00000000x0 0 0 0 0 000000000000000000000 @0@0@0@0@0@0@0@0@0@00 0 @0@0@0@0@0@0@0@0@0@00(0( 0 0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@000(@0@0@0@00000 0 0 0@0 0@0 0 0 0 00@0@0@0@000x@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@00x00000@0@0x0@0@0@0x000x0@0@0@0@0@0@0@0@00T Va+T|Dj 5^;I?X v~( ) D v $,-9IXYeu pl_!*:wxIt !"#$$4$N$]$c$j$$$$$$$$$o%%%%%%%%2&).*C*V*W******+G,,6------...00*0,000900000223355$6667 88 9 :i:=>5>@>f>>>>>5?W?b????#@Z@|@@@@AA2B3B?C_CCCrDDDDDDDD;00 @L;00;00;00;00;00;00@0{00{00{00;00;00 {00;00;00;00{00;00@0;00 ;00 ;0{00;00@0;00;00;00;00PDf;00;00{00;00;00;00;00P|F[;00;00;0 0;00P@G[0s;00{00{00;00;00{00;0$0;0$0{00{00{00{00{00{00 {00{00{00{00 {00{00{00{00 {00{00{00{00 {00 {00 {00 {00 ;0)0@0;0,0@0{00x{00{00{00{00{00{00{00{00{00{00{00{00{00{00{0j0{0j0{00{00{00{00@0{00{00{060{0@0 {0@0@0 {00{00{00 {0>0 ;0\0@0 ;0e0 {00{00{00{00{00{00{00{00{00{00{00{00{00{00{00{00@0;0d0 0W{00{00{00{00{00{0Z0  {00 {0[0@0{00{00c{00c{00c{00c{00c{00c {00 {00 {00{0>0{0>0{00({00({0B0P{0B0{0B0{00({00({00({00({00({0J0P{0J0{0J0{00({00({00( {0P0 {0S0 {00{040@0{00{00{0 0@0@0@0@0@0@0 {00 {00@0{00P{00{000{000{000{000{000{000{000{000{000{000{000{000{000{000{000{000{000{000{000{000 {000 {00{030 ;00h ;00;000  ;0 ;00{00 1{00{00{00 @0 `p 0 999< &*17>bGLL'+-4578:=?AD ,X!4,158 BGKL(*,./012369;<>@BCL) -6<!!LPtdxbRCwCDl]CCD8*urn:schemas-microsoft-com:office:smarttagstime8*urn:schemas-microsoft-com:office:smarttagsdate  01114200126DayHourMinuteMonthYear    $' % v   # & # & 9HIWetu5<KUmvx09;DFNnx}%'13?AMP^PR[]mq*9kz2IOt% 4 ] p !/!!!""### $$$_$a$$$$$A%U%W%c%e%m%p%|%~%%%%%%%%%%%%%%&&&&'&.&n&s&x&|& ''''''(((())))/*4*9*<*D*H*K*M*********z---------.6.....`/l///00000000000122v3324:4~44444444444444444455 5555555556666!666o7t77777777788888%8&8/888@8X8]8^8f8i8r8u8}88888:':(:4:5:H:q:{:====>>>/>7>=>>>>>>>>>>>>?7?%?%p%|%%%%%D&G&)))))*W*\*****!+#+q-y-----////000000v3399::>>??@@3BBkCpCCrDzDDDD333333333333333333333333333333333333333333333333333333333T^;; ' *DDDDDDDDjDpDqDqDDDDTrisha Kaufmanrsarb001 Richard Sarbu#|^}_~R`CeN f2l`n,1rN@LQ\|pzOhp*fCj6 e8 &\; =C=KlvM@EOJ٨R f~طzmh<4i~xy]Q-l^6W\hy]^`.^`.88^8`.^`. ^`OJQJo( ^`OJQJo( 88^8`OJQJo( ^`OJQJo(hh^h`. hh^h`OJQJo(h88^8`OJQJo(hHh^`OJQJ^Jo(hHoh  ^ `OJQJo(hHh  ^ `OJQJo(hHhxx^x`OJQJ^Jo(hHohHH^H`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHhhh^h`OJQJo(hHh88^8`OJQJ^Jo(hHoh^`OJQJo(hHh  ^ `OJQJo(hHh  ^ `OJQJ^Jo(hHohxx^x`OJQJo(hHhHH^H`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hH^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hH^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hH^`CJOJQJo(o^`CJOJQJo(opp^p`CJOJQJo(o@ @ ^@ `CJOJQJo(o^`CJOJQJo(o^`CJOJQJo(o^`CJOJQJo(o^`CJOJQJo(oPP^P`CJOJQJo(o^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hH^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hH^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hH^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(^`CJOJQJo(o^`CJOJQJo(opp^p`CJOJQJo(o@ @ ^@ `CJOJQJo(o^`CJOJQJo(o^`CJOJQJo(o^`CJOJQJo(o^`CJOJQJo(oPP^P`CJOJQJo(o^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(h  ^ `OJQJo(hHh ^`o(hH.h^`OJQJo(hHh| | ^| `OJQJo(hHhLL^L`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hH#$/8\hye8 e.$<4iCj6 *"{>\#-Q=^W.3]Q-lHRlHoܭHCLHzmhH\|pf=K\; h@EO%\M~}|H ^`CJOJQJo(xH ^`CJOJQJo(H ^`CJOJQJo(XH ^`CJOJQJo(ȮH ^`CJOJQJo(##                                                                                          t                                                     2Jz}dd ; Cdd2%0,$mA(BBddJh(b'z6z}ddJZ:!g?BB CDy\0,$dd4`lhz}dddwL%sxdwddU|4`ddz}%6}=<(r M_ PC Y>%T%.y%(T(g)0N0>8@P9;(7>% @ CE5DgKMcQ/Uz/a]g0k g:#|> g:#|!4dDD 2QH 4$Coldfusion Web Development StandardsTrisha Kaufman Richard Sarbu#                           ! " Oh+'0   8D ` l x %Coldfusion Web Development StandardssofoldTrisha KaufmanDrisris Normal.dotmRichard SarbuD9chMicrosoft Word 10.0@H'@t@x@X6+c@.v> g:՜.+,0, hp  !챬 Baltimorep|#D{ %Coldfusion Web Development Standards Title  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEGHIJKLMOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry FpData F1TableN5WordDocument"SummaryInformation(DocumentSummaryInformation8CompObjj  FMicrosoft Word Document MSWordDocWord.Document.89q