webcaching.guerrerotome.com

Just another WordPress weblog

Archive for the ‘Links and resources’ Category

Posted by Carlos Guerrero on October 16, 2009

HTTP Headers in a ESI web page

From: http://download.oracle.com/docs/cd/B15897_01/caching.1012/b14046/esi.htm

Oracle® Application Server Web Cache Administrator’s Guide
10g Release 2 (10.1.2)
Part No. B14046-01
Go To Documentation Library
Home
Go To Product List
Solution Area
Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
Next
Next

16 Edge Side Includes (ESI) Language Tags

This chapter describes the Edge Side Includes (ESI) tags provided for content assembly of dynamic fragments.

This chapter contains these topics:

Overview of ESI

ESI is an open specification co-authored by Oracle. Its purpose is to develop a uniform programming model to assemble dynamic pages in a dynamic content cache deployed as a surrogate or proxy between browsers and origin servers.

ESI is an XML-like markup language that enables dynamic content assembly of fragments by OracleAS Web Cache. A template page is configured with ESI markup tags that fetch and include dynamic HTML fragments. The fragments themselves can also contain ESI markup. You can assign caching rules to the template page and HTML fragments. By enabling page assembly in OracleAS Web Cache rather than in the application Web server, you can increase cache hit rates and improve performance.

The following topics provide an overview of ESI usage:

Supported ESI Language Elements

To enable OracleAS Web Cache to process ESI tags, you set an HTTP Surrogate-Control response-header field in the HTTP response message of the pages that use ESI tags.

OracleAS Web Cache supports the ESI language tags, elements, and attributes listed in Table 16-1. The rightmost column specifies, for each ESI tag, attribute, or element, all the feature sets that support it. For example, the <esi:invalidate> tag is only supported by the "ESI-INV/1.0" feature set. To enable the correct processing in OracleAS Web Cache, specify all the feature sets that an ESI template uses in the content control directive of the Surrogate-Control response header. However, you do need to specify features sets used within an ESI fragment directly or indirectly included in the template. For example, if an ESI template uses an <esi:invalidate> and an <esi:environment> tag with an <esi:log> element, the content control directive must include "ESI-INV/1.0" and "ORAESI/9.0.4", as follows:

Surrogate-Control: content="ESI-INV/1.0 ORAESI/9.0.4"

See Also:

“Using the Surrogate-Control Response Headeras an Alternative to Caching Rules” for further information about configuring the Surrogate-Control response header

Table 16-1 ESI Language Features

ESI Language Feature See Also content=”value” Control Directive in Surrogate-Control Response Header Supporting Feature
<esi:choose> | <esi:when> | <esi:otherwise> tags “ESI choose | when | otherwise Tags” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

<esi:comment> tag “ESI comment Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

<esi:environment> tag “ESI environment Tag” "ORAESI/9.0.4""ORAESI/9.0.2"
<esi:include> tag “ESI include Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

<esi:environment> tag and <esi:include> tag attributes and elements
alt attribute “ESI include Tag” "ORAESI/9.0.4""ESI/1.0"
max-age attribute “ESI include Tag”“ESI environment Tag” "ORAESI/9.0.4""ORAESI/9.0.2"
onerror attribute “ESI include Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

src attribute “ESI include Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

timeout attribute “ESI include Tag”“ESI environment Tag” "ORAESI/9.0.4""ORAESI/9.0.2"
<esi:log> element “ESI include Tag”“ESI environment Tag” "ORAESI/9.0.4"
<esi:request_header> element “ESI include Tag”“ESI environment Tag” "ORAESI/9.0.4""ORAESI/9.0.2"
<esi:request_body> element “ESI include Tag”“ESI environment Tag” "ORAESI/9.0.4""ORAESI/9.0.2"
<esi:inline> tag “ESI inline Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI-Inline/1.0"

"ESI/1.0"

name attribute “ESI inline Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI-Inline/1.0"

"ESI/1.0"

fetchable attribute “ESI inline Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI-Inline/1.0"

"ESI/1.0"

max-age attribute “ESI inline Tag” "ORAESI/9.0.4""ORAESI/9.0.2"
timeout attribute “ESI include Tag”“ESI environment Tag” "ORAESI/9.0.4""ORAESI/9.0.2"
<esi:invalidate> tag “ESI invalidate Tag” "ESI-INV/1.0"
<esi:remove> tag “ESI remove Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

<esi:try> | <esi:attempt> | <esi:accept> tags “ESI try | attempt | except Tags” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

<esi:vars> tag “ESI vars Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

<!--esi...---> tag “ESI <!–esi–>Tag” "ORAESI/9.0.4""ORAESI/9.0.2"

"ESI/1.0"

See Also:

http://www.esi.org/spec.html for the ESI Language Specification 1.0 and the Edge Architecture Specification

Syntax Rules

ESI elements and attributes adhere to XML syntax but can be embedded in other objects, such as HTML or XML objects. When OracleAS Web Cache processes the page, the ESI elements themselves are stripped from the output.

ESI syntax generally adheres to XML syntax rules. Keep the following in mind when using the tags:

  • ESI tags and attributes are case sensitive.

    They are generally lowercase.

  • Supported CGI environment variables are case sensitive.

    They are generally uppercase.

  • ESI does not support the use of whitespace next to the equal sign (=) or between the “<” and “esi:

    The following shows an invalid construction:

    <esi:include src = "www.foo.com"/>

The following shows the correct form:

<esi:include src="www.foo.com"/>

Nesting Elements

As shown in Example 16-1, an ESI tag can contain nested ESI elements and other HTML markup.

Example 16-1 Nested ESI Elements

<esi:choose>
  <esi:when test="$(HTTP_HOST) == 'www.company.com'">
    <esi:include src="/company.html" />
    <h4>Another</h4>
    <esi:include src="/another.html" />
  </esi:when>
  <esi:when test="$(HTTP_COOKIE{fragment) == 'First Fragment'">
    <esi:try>
      <esi:attempt>
        <esi:include src="/fragment1.html" />
      </esi:attempt>
      <esi:except>
        <esi:choose>
          <esi:when test="$(HTTP_COOKIE{otherchoice}) == 'image'" >
            <img src="/img/TheImage.gif">
          </esi:when>
          <esi:otherwise>
            The fragment is unavailable.
         </esi:otherwise>
        </esi:choose>
      </esi:except>
    </esi:try>
  </esi:when>
  <esi:otherwise>
   The default selection.
  </esi:otherwise>
</esi:choose>

Variable Expressions

ESI supports the HTTP request variables and environment variables used with the <esi:environment> tag.

This section contains the following topics:

Variable Usage

To refer to a variable, prefix it with a dollar sign and surround the variable name with parentheses:

$(VARIABLE_NAME)

For example:

$(HTTP_HOST)

Variables are accessed by a key as follows:

$(VARIABLE_NAME{key})

To access a variable’s substructure, append the variable name with braces containing the key which is being accessed. For example:

$(HTTP_COOKIE{username})

The key is case sensitive and optional. If a key is not specified, the environment variable returns the whole content of the environment fragment. Oracle advises specifying an environment variable without a key only for testing whether the environment is empty. In the following ESI markup, $(logindata) is a variable that is evaluated against a null value:

<esi:environment src="/getlogindata" name="logindata"/>
<esi:include src="/login/$(logindata{account})"/">
<esi:choose>
  <esi:when test="$(logindata) != null">
    <esi:include src="/login/$(logindata{account})"/>
 </esi:when>
 <esi:otherwise>
   <esi:include src="/login/guest.html"/>
 <esi:otherwise>
</esi:choose>

Variable Default Values

You can use the logical OR (|) operator to specify a default value in the following form:

$(VARIABLE|default)

A variable takes the default value only when the variable or its key does not exist. If it evaluates to an empty string, the empty string is returned, not the default value.

The following example results in OracleAS Web Cache fetching http://example.com/default.html if the cookie id is not in the request:

<esi:include src="http://example.com/$(HTTP_COOKIE{id}|default).html"/>

As with other literals, if whitespace needs to be specified, the default value must be single-quoted. For example:

$(HTTP_COOKIE{first_name}|'new user')

Note:

HTTP_HOST and HTTP_REFERER do not support default values.

HTTP Request Variables

Table 16-2 lists the HTTP request variables supported by ESI. Note the following:

  • Except for QUERY_STRING, the values for the variables are taken from HTTP request-header fields. In the case of QUERY_STRING, the value is taken from either the HTTP request body or the URL.
  • Variables are only interpreted when enclosed within ESI tags.
  • Variables with a substructure type of List or Dictionary are accessed by a key.
  • Variables identified with a substructure type of Dictionary make access to strings available through their appropriate keys.
  • Dictionary keys are case sensitive.
  • Variables identified with a substructure type of List return a Boolean value depending on whether the requested value is present.

Table 16-2 HTTP Request Variables Supported by ESI

Variable Name HTTP Header Field Substructure Type/Variable Type Description Example
$(HTTP_ACCEPT_LANGUAGE{language}) Accept-Language request-header fieldSpecifies the set of languages that are preferred as a response. The language is used as the key. List/Boolean Specifies the language to use as the key and evaluates to the language specified in the HTTP request header Variable Setting:$(HTTP_LANGUAGE{en-gb})

HTTP Request Header Contains:

Accept_Language:en-gb

Result: Returns en-gb.

$(HTTP_COOKIE{cookie}) Set-Cookie response-header field or Cookie request-header fieldSpecifies cookie name and value pairs. A cookie name is used as the key.

If the Cookie request-header and Set-Cookie response-header have different values for the same cookie name, the name value pair from the Set-Cookie response header is used.

Dictionary/String Specifies the cookie name to use as the key and returns that cookie’s value Variable Setting:$(HTTP_COOKIE{visits})

HTTP Request Header Contains:

Cookie:visits=42

Result: Returns 42.

$HTTP_HEADER{header}) Any HTTP request header Dictionary/String Specifies an HTTP request header name to use as the key and returns that header’s value Variable Setting:$(HTTP_HEADER{Referer})

HTTP Request Header Contains:

Referer: http://www.company.com:80

Result: Returns

http://www.company.com:80

$HTTP_HOST Host request-header fieldSpecifies the host name and port number of the resource. Port 80 is the default port number. Not Applicable/String Returns the value of the HOST header Variable Setting:$(HTTP_HOST)

HTTP Request Header Contains:

Host:http://www.company.com:80

Result: Returns

http://www.company.com:80

$HTTP_REFERER Referer request-header fieldSpecifies the URL of the reference resource Not Applicable/String Returns the value of the REFERER header Variable Setting:$(HTTP_REFERER)

HTTP Request Header Contains:

Referer: http://www.company.com:80

Result: Returns

http://www.company.com:80

$(HTTP_USER_AGENT{browser})$HTTP_USER_AGENT{version})

$HTTP_USER_AGENT{os})

User-Agent request-header fieldSpecifies the Web browser type, browser version, or operating system that initiated the request. Dictionary/String Specifies one of three keys: browser for browser type, version for browser version, and os for operating system Variable Setting:$(HTTP_USER_AGENT{browser})

HTTP Request Header Contains:

User-Agent:Mozilla/4.0 (compatible, MSIE 5.5, Windows)

Result: Returns MSIE

$(HTTP_USER_AGENT{version})

Result: Returns 4.0.

$(HTTP_USER_AGENT{os})

Result: Returns Windows

$(QUERY_STRING{parameter}) Not Applicable Dictionary/String Given a parameter name in a query string, returns the value of the parameter without URL encoding. The query string can be in an URL or a request body.See Also: http://www.rfc-editor.org/ for further information about URL encoding. Variable Setting:$(QUERY_STRING{CEO})

Query Request Contains:

CEO=Jane%20Doe&CFO=John%20Doe

Result: Returns the value of fullname decoded. In this example, CEO returns a value of Jane Doe.

$(QUERY_STRING) Not Applicable Not Applicable/String Specifies to return the entire query string encoded Variable Setting:$(QUERY_STRING)

Query Request Contains:

CEO=Jane%20Doe&CFO=John%20Doe

Result: Returns the entire query string encoded:

CEO=Jane%20Doe&CFO=John%20Doe

$(QUERY_STRING_ENCODED{parameter}) Not Applicable Dictionary/String Given a parameter name in a query string, returns the value of the parameter with URL encoding. The query string can be in an URL or a request body. Variable Setting:$(QUERY_STRING{fullname})

Query Request Contains:

fullname=Jane%20Doe

Result: Returns the value of fullname encoded:

Jane%20Doe

$(QUERY_STRING_ENCODED) Not Applicable Not Applicable/String The same as $(QUERY_STRING) Variable Setting:$(QUERY_STRING_ENCODED)

Query Request Contains:

fullname=Jane%20Doe

Result: Returns the entire query string encoded:

fullname=Jane%20Doe

$(QUERY_STRING_DECODED{parameter}) Not Applicable Dictionary/String The same as $(QUERY_STRING{parameter}) Variable Setting:$(QUERY_STRING_DECODED{CEO})

Query Request Contains:

fullname=Jane%20Doe

Result: Returns the value of fullname decoded. In this example, fullname returns a value of Jane Doe.

Exceptions and Errors

ESI uses several mechanisms to handle exceptions encountered during an ESI fragment request. In a given situation, you can make use of all mechanisms simultaneously, or use one at a time, depending on the business logic you are developing.

The first mechanism is found in the ESI language, which provides three specific elements for fine-grain control over content assembly in error scenarios:

  • The alt attribute of the <esi:include> tag
  • The onerror attribute of the <esi:include> tag
  • The try |attempt |except block
  • Default page in place of the fragment

When the fragment specified for the src attribute of the <esi:include> tag cannot be fetched, the fragment specified with the alt attribute is used as an alternative. If the alt attribute is not used or the fragment cannot be fetched, the onerror attribute is used. The onerror attribute is used before the try |attempt |except block. If the try |attempt |except block does not exist, the exception handling is propagated to the parent or template page. If all the ESI language controls fail, OracleAS Web Cache displays a default page in place of the fragment.

See Also:



ESI Tag Descriptions

This section describes the following ESI tags, which are used for partial page caching operations:



ESI choose | when | otherwise Tags

The <esi:choose>, <esi:when>, and <esi:otherwise> conditional tags provide the ability to perform logic based on Boolean expressions.

Syntax

<esi:choose>
  <esi:when test="BOOLEAN_expression">
    Perform this action
  </esi:when>
  <esi:when test="BOOLEAN_expression">
    Perform this action
  </esi:when>
  <esi:otherwise>
    Perform this other action
  </esi:otherwise>
</esi:choose>

Attributes

test—Specifies the Boolean operation

Usage

  • Each <esi:choose> tag must have a least one <esi:when> tag, and may optionally contain exactly one <esi:otherwise> tag.
  • OracleAS Web Cache will execute the first <esi:when> tag whose test attribute evaluates truthfully, and then exit the <esi:choose> tag. If no <esi:when> tag evaluates to true and an <esi:otherwise> tag is present, that element’s content will be executed.
  • Other HTML or ESI element can be included inside <esi:when> or <esi:otherwise> elements.

Boolean Expressions

The test attribute uses Boolean expressions to determine how to evaluate true or false logic. ESI supports the following Boolean operators:

  • == (equal to)
  • != (not equal to)
  • > (greater than)
  • < (less than)
  • >= (greater than or equal to)
  • <= (less than or equal to)
  • & (and)
  • | (or)
  • ! (not)

Note the following about the use of Boolean expressions:

  • Operands associate from left to right.

    Sub-expressions can be grouped with parentheses to explicitly specify association.

  • If both operands are numeric, then the expression is evaluated numerically.
  • If either operand is non-numeric, then both operands are evaluated as strings. For example, 'a'==3 evaluates to 'a'=='3', where 3 is evaluated as a string.
  • The comparison of two Boolean expressions results in an undefined operation.
  • If an operand is empty or undefined, then the expression always evaluates to false.
  • The logical operators (&, !, and|) are used to qualify expressions, but cannot be used to make comparisons.
  • Use single quotes (') for constant strings. For example, the following string is a valid construction:
    $(HTTP_COOKIE{name})=='typical'
  • Escaped single quotes (\') are not permitted. For example, the following is not supported:
    $(HTTP_COOKIE{'user\'s name'})=='typical'
  • Arithmetic operations and assignments are not permitted.
  • A null value evaluates whether or not a variable is empty.

    When a number is compared with null, that number is converted into an equivalent string and compared against an empty string. In the following ESI markup, $(logindata{name}) is a variable that provides access to the value of the name. If name is empty and evaluates to null, then the expression evaluates to true; if name is not empty and does not evaluate to null, then the expression evaluates to false.

    Note:

    If a variable exists but evaluates to an empty string, then the value is not considered null.

    <esi:choose>
      <esi:when test="$(logindata{name}) == null">
        <esi:include src=/login/$(logindata{name})"/>
     </esi:when>
     <esi:otherwise>
       <esi:include src=/login/guest.html"/>
     <esi:otherwise>
    </esi:choose>

The following expressions show correct usage of Boolean operators:

!(1==1)
!('a'<='c')
(1==1)|('abc'=='def')
(4!=5)&(4==5)

The following expressions show incorrect usage of Boolean operators:

(1 & 4)
("abc" | "edf")

Statements

Statements must be placed inside a <esi:when> or <esi:otherwise> subtag. Statements outside the subtags cannot be evaluated as conditions. Example 16-2 shows invalid placement of statements.

Example 16-2 Statement Placement

<esi:choose>
  This markup is invalid because any characters other than whitespace 
  are not allowed in this area.
  <esi:when test="$(HTTP_HOST) == 'www.company.com'">
    <esi:include src="/company.html" />
  </esi:when>
     This markup is invalid because any characters other than whitespace 
     are not allowed in this area.
  <esi:when test="$(HTTP_COOKIE{fragment) == 'First Fragment'">
    <img src="/img/TheImage.gif">
  </esi:when>
     This markup is invalid because any characters other than whitespace 
     are not allowed in this area.
   <esi:otherwise>
     The default selection.
  </esi:otherwise>
   This markup is invalid because any characters other than whitespace 
   are not allowed in this area.
</esi:choose>

Example

The following ESI markup includes advanced.html for requests that use the cookie Advanced and basic.html for requests that use the cookie Basic:

<esi:choose>
  <esi:when test="$(HTTP_COOKIE{group})=='Advanced'">
    <esi:include src="http://www.company.com/advanced.html"/>
  </esi:when>
  <esi:when test="$(HTTP_COOKIE{group})=='Basic User'">
    <esi:include src="http://www.company.com/basic.html"/>
  </esi:when>
  <esi:otherwise>
    <esi:include src="http://www.company.com/new_user.html"/>
  </esi:otherwise>
</esi:choose>



ESI comment Tag

The <esi:comment> tag enables you to comment ESI instructions, without making the comments available in the output.

Syntax

<esi:comment text="text commentary"/>

<esi:comment> is an empty element, and does not have an end tag.

Usage

The <esi:comment> tag is not evaluated by OracleAS Web Cache. If comments need to be visible in the HTML output, use standard XML/HTML comment tags.

Example

The following ESI markup provides a comment for an included GIF file:

<esi:comment text="the following animation will have a 24 hour TTL"/>
<esi:include src="http://wwww.company.com/logo.gif" onerror="continue" />



ESI environment Tag

The <esi:environment> tag enables you to include custom environment variables from included fragments. Once included, these variables can then be used with the other ESI tags.

Syntax

There are two forms of this tag. In the first form, <esi:environment> does not have a closing </esi:environment> tag:

<esi:environment src="environment_URL" name="environment_name"  [max-age="expiration_time [+ removal_time]]" [method="GET|POST"] [onerror="continue"] [timeout="fetch_time"]/>

In the second form with elements, <esi:environment> has a closing </esi:environment> tag:

<esi:environment src="environment_URL" name="environment_name"
   [max-age="expiration_time [+ removal_time]"] [method="GET|POST"]
   [onerror="continue"] [timeout="fetch_time"]>
  [<esi:request_header name="request_header" value="value"/>]
  [<esi:request_body value="value"/>]
  [<esi:log>log_message</esi:log>]
</esi:environment>

Attributes

  • src—Specifies the URL from which to obtain environment variables and their values.

    The URL can be either an absolute or relative URL. When specifying an absolute URL, use one of the following formats:

    • "http://host_name:port/path/filename"
    • "https://host_name:port/path/filename"

    If you specify the host name for an absolute URL, you must prefix it with http:// or https://. An HTML parser treats the host:80 in the following URL as a folder name rather than a host name:

    src="host:80/index.htm"

    To make this URL valid, you specify the following:

    src="http://host:80/index.htm"

    Relative URLs are resolved relative to the template page. The result sets the ESI environment for the current template.

    The source code of the URL requires the following XML format:

    <?xml version="1.0"?>
    <esi:environment esiversion="ORAESI/9.0.4">
      <variable_name>variable_value</variable_name>
      <variable_name>variable_value</variable_name>
    </esi:environment>
  • name—Specifies the name to use to refer to the environment variable.
  • method—Specifies the HTTP request method of the environment fragment. Valid values are GET or POST.
  • max-age—Specifies the time, in seconds, to expire the XML file, and optionally, specifies the time, in seconds, to remove the XML file after the expiration time.
  • timeout—Specifies the time, in seconds, for the fragment to be fetched. If the fragment has not been fetched within the time interval, the fetch is aborted.
  • onerror—Specifies that if the fetch failed on the src object, to ignore the ESI tag and serve the page.

Elements

  • request_body—Specifies the HTTP request body of the fragment.
  • request_header—Specifies an HTTP request header field and value for OracleAS Web Cache to use.
  • log—Specifies a log message of the fragment to be included in the access_log_file.fragment file when the x-esi-info log field is set. You can provide a descriptive text string that identifies the fragment and the application that generated the fragment. By providing descriptive text, you can easily identify the fragment in the log file, enabling you to determine how often the fragment is requested.

    See Also:

    Table 15-5 for further information about the x-esi-info log field

Syntax Usage

  • Specify only one <esi:environment> tag for each template page, before other ESI tags.
  • The attributes do not need to be in a particular order.
  • Do not specify more than one request_body element.
  • You can have zero or more request_header elements.

    Use multiple request_header elements to specify multiple HTTP request header fields:

    <esi:environment src="environment_URL"
       [max-age="expiration_time [+ removal_time]"][method="GET|POST"]
       [onerror="continue"] [timeout="fetch_time"]>
      <esi:request_header name="request_header" value="value"/>
      <esi:request_header name="request_header" value="value"/>
    </esi:environment>
  • If no request_header elements are specified, OracleAS Web Cache uses other request headers from the parent page.
  • Do not specify more than one log element.

    See Also:

Example

The following ESI output specifies logindata to refer to the environment variables stored in catalog.xml. The file catalog.xml enables access to the value of the vendorID environment variable, which is used as a parameter in the included URL:

<esi:environment src="/catalog.xml" name="logindata"/>
<esi:include src="http://provider.com/intranetprovider?vendorID=$(logindata{vendorID})"/>

The file catalog.xml has the following content:

<?xml version="1.0"?>
<esi:environment esiversion="ORAESI/9.0.4">
  <product_description>stereo</product_description>
  <vendorID>3278</vendorID>
  <partner1>E-Electronics</partner1>
  <partner2>E-City</partner2>
</esi:environment>

The following ESI output specifies logindata to refer to the environment variables stored in env.dat. The file env.dat enables access to the value of the env environment variable, which is used as a parameter in the included log message for dir1.txt. The log messages for dir1.txt and esi-log2.html are written to the access_log.fragment file when the x-esi-info log field is set and the fragments are requested.

<esi:environment src="/esi/env.dat" name="env">
  <esi:log>Used environment /esi/env.dat</esi:log>
</esi:environment>

<esi:include src="/cached/dir1.txt">
  <esi:log>Fragment:/cache/dir1.txt is included, by $(env{xl_name})</esi:log>
</esi:include>

<font color="red">Including /cgi-bin/esi-fetch.sh?/esi/esi-log2.html in esi-log1.html </font>
<esi:include src="/cgi-bin/esi-fetch.sh?/esi/esi-log2.html">
  <esi:log>Fragment: /cgi-bin/esi-fetch.sh?/esi/esi-log2.html is included
 </esi:log>



ESI include Tag

The <esi:include> tag provides syntax for including fragments.

See Also:

“Fragmentation with the Inline and Include Tags” for a comparison of <esi:inline> and <esi:include> usage

Syntax

There are two forms of this tag. In the first form, <esi:include> does not have a closing </esi:include> tag:

<esi:include src="URL_fragment" [alt="URL_fragment"]
[max-age="expiration_time [+removal_time]]" [method="GET|POST"] [onerror="continue"] [redirect=yes|no] [timeout="fetch_time"]/>

In the second form, with elements, <esi:include> has a closing </esi:include> tag:

<esi:include src="URL_fragment" [alt="URL_fragment"]
   [max-age="expiration_time[+removal_time]"] [method="GET|POST"]
   [onerror="continue"] [redirect=yes|no] [timeout="fetch_time"]>
  [<esi:request_header name="request_header" value="value"/>]
  [<esi:request_body value="value"/>]
  [<esi:log>log_message</esi:log>]
</esi:include>

Attributes

  • src—Specifies the URL of the fragment to fetch. The URL can be a literal string or it can include variables.

    The URL can either be an absolute or relative URL. When specifying an absolute URL, use one of the following formats:

    • "http://host_name:port/path/filename"
    • "https://host_name:port/path/filename"

    If you specify the host name for an absolute URL, you must prefix it with http:// or https://. An HTML parser treats the host:80 in the following URL as a folder name rather than a host name:

    src="host:80/index.htm"

    To make this URL valid, you specify the following:

    src="http://host:80/index.htm"

    Relative URLs are resolved relative to the template page. The included result replaces the element in the markup served to the browser.

    You can specify an XML fragment as long as the XML file fragment is valid XML. For example, the following specifies that OracleAS Web Cache use XSL Transformations (XSLT) to transform the XML into HTML using a stylesheet. The stylesheet maps XML formats to HTML formats:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xml" href="stylesheet.xsl"?>

    Ensure that both the XML fragment and the XSL stylesheet response pages are configured with a Content-Type response-header field that includes text and XML media types. For example:

    Content-Type: text/xml

    See Also:

    http://www.xslt.com/ for complete information about XSLT

  • alt—Specifies an alternative resource if the src is not found. The requirements for the value are the same as those for src.
  • max-age—Specifies the time, in seconds, to expire the fragment, and optionally, specifies the time, in seconds, to remove the fragment after expiration time. Use this attribute if the template page has a higher tolerance for stale fragments than specified by the time-to-live parameters in fragment responses.
  • method—Specifies the HTTP request method of the fragment. Valid values are GET or POST.
  • onerror—Specifies that if the fetch failed on the src object to ignore the ESI tag and serve the page.
  • redirect—Specifies how to serve the fragment when the src fragment resides temporarily under a different URL. yes specifies that the URL be redirected and displayed; no specifies that the fragment URL not be redirected and an HTTP 302 Found status code be served in place of the fragment. yes is the default.
  • timeout—Specifies the time, in seconds, for the fragment to be fetched. If the fragment has not been fetched within the time interval, the fetch is aborted.

    See Also:

    “Exceptions and Errors” for usage notes on alt and onerror

Elements

  • request_body—Specifies the HTTP request body of the fragment.
  • request_header—Specifies an HTTP request header field and value for OracleAS Web Cache to use. You can specify multiple HTTP request headers. When this attribute is specified, all request headers from the parent fragment or template page are ignored.
  • log—Specifies a log message of the fragment to be included in the access_log.fragment file when the x-esi-info log field is set. You can provide a descriptive text string that identifies the fragment and the application that generated the fragment. By providing descriptive text, you can easily identify the fragment in the log file, enabling you to determine how often the fragment is requested.

    See Also:

    Table 15-5 for further information about the x-esi-info log field

Syntax Usage

  • <esi:include> supports up to three levels of nesting.
  • <esi:include> does not support escaped double quotes (\"). For example, the following is not supported:
    <esi:include src="file\"user.htm"/>
  • The attributes do not need to be in a particular order.
  • The src attribute supports both HTTP and HTTPS. OracleAS Web Cache permits the template and fragments to use different protocols. Note the following:
    • If the src attribute specifies a fragment’s relative path, such as src="/PersonalizedGreeting", the template’s protocol is used.
    • If the protocol used in the src attribute does not match the protocol specified in the Site-to-Server Mapping page (Origin Servers, Sites, and Load Balancing > Site-to-Server Mapping) of OracleAS Web Cache Manager, then OracleAS Web Cache uses the protocol configured for the origin server in the Site-to-Server Mapping page. OracleAS Web Cache also reports the following warning message to the event log:
      [Date] [warning 11250] [ecid: request_id, serial_number]
      ESI include fragment protocol does not match origin server protocol:
      Origin Server Protocol=protocol URL=URL

      For example, if the template page is configured with <esi:include> src="https://www.company.com:80/gifs/frag1.gif"/> and the site-to-server mapping specifies HTTP for the origin server, then http://www.company.com:80/gifs/frag1.gif is used and the following message appears in the event log:

      [03/Feb/2004:23:16:46 +0000] [warning 11250] [ecid: 90125204378,0]
      ESI include fragment protocol does not match origin server protocol:
      Origin Server Protocol=http URL=https://www.company.com:80/gifs/frag1.gif
  • Do not specify more than one request_body element.
  • You can have zero or more request_header elements.
  • Use multiple request_header elements to specify multiple HTTP request header fields:
    <esi:include src="URL_fragment"
      [max-age="expiration_time[+removal_time]"] [method="GET|POST"]
      [onerror="continue"] [timeout="fetch_time"]>
      <esi:request_header name="request_header" value="value"/>
      <esi:request_header name="request_header" value="value"/>
    </esi:include>
  • Do not specify more than one log element.

Usage

The <esi:include> tag instructs OracleAS Web Cache to fetch the fragment specified by the src attribute.

If the include is successful, the contents of the fetched src URL are displayed. The included object is included exactly at the point of the include tag. For example, if the include tag is in a table cell, the fetched object is displayed in the table cell.

The max-age control directive in the Surrogate-Control response-header field applies to the response; the max-age attribute applies only to that particular usage of the fragment response through the <esi:include> tag. If both the max-age control directive in the Surrogate-Control response-header field and the max-age attribute are set, then the effective expiration and removal time-to-live for this particular inclusion are the longest maximum age of the expiration and the removal time-to-live, respectively. If a particular page has a greater tolerance for staleness of a fragment, then set the max-age attribute to a longer time than the max-age control directive. Use the max-age attribute to increase cache hits by serving fragments stale until the removal time. max-age=infinity specifies that the object never expires.

If method is not set, then GET is assumed. However, if the request_body element is set, then POST is assumed.

OracleAS Web Cache generates the following HTTP request headers for all fragment requests:

  • Host
  • Content-Length
  • Surrogate-Capability
  • Connection

The request_header element enables you to control HTTP headers other than these. Do not specify these HTTP request headers as request_header attributes, as a conflict can affect the operation of OracleAS Web Cache.

If no request_header elements are specified, OracleAS Web Cache uses other request headers from the parent page.

See Also:

“Fragmentation with the Inline and Include Tags” for a comparison of <esi:inline> and <esi:include> usage

Examples

The following ESI markup includes a file named frag1.htm. The fragment must be fetched within 60 seconds. If the fetch fails, OracleAS Web Cache ignores the includes and serves the page. If the fetch succeeds, OracleAS Web Cache includes the fragment. OracleAS Web Cache expires the fragment after five minutes, and removes it after another eight minutes.

<esi:include src="/frag1.htm" timeout="60" maxage="300+480" onerror="continue"/>

The following ESI output includes the result of a dynamic query:

<esi:include src="/search?query=$QUERY_STRING(query)"/>

The following ESI output includes a personalized greeting, a Cookie HTTP request header, and an HTTP request body that includes the date. Log message "Fragment: /Personalized Greeting is included" is written to the access_log.fragment file when the x-esi-info log field is set and the fragment is requested.

<esi:include src="/PersonalGreeting">
  <esi:request_header name="Cookie" value="pname=Scott Tiger"/>
  <esi:request_body value="day=05, month=10, year=2001"/>
  <esi:log>Fragment: /Personalized Greeting is included</esi:log>
</esi:include>

See Also:

“Example of a Portal Site Implementation” for an extended example of <esi:include> usage



ESI inline Tag

The <esi:inline> tag marks a fragment as a separately cacheable fragment, embedded in the HTTP response of another object. OracleAS Web Cache stores and assembles these fragments independently as <esi:include> fragments.

See Also:

“Fragmentation with the Inline and Include Tags” for a comparison of <esi:inline> and <esi:include> usage

Syntax

<esi:inline name="URL" fetchable="yes|no"
 [max-age="expiration_time [+ removal_time]"] [timeout="fetch_time"]
 Embedded HTML code
</esi:inline>

Attributes

  • name—Specifies a unique name for the fragment in URL format.
  • fetchableyes specifies that OracleAS Web Cache fetches the fragment directly from the origin server when the fragment expires. If the fragment is in the cache, then OracleAS Web Cache displays both the template and fragment. no specifies that OracleAS Web Cache fetches the entire template from the origin server, and then tries to extract the fragment from the template.
  • max-age—Specifies the time, in seconds, to expire the fragment, and optionally, specifies the time, in seconds, to remove the fragment after the expiration time. Use this attribute if the template page has a higher tolerance for stale fragments than specified by the time-to-live parameters in fragment responses.
  • timeout—Specifies the time, in seconds, for the fragment to be fetched. If the fragment has not been fetched within the time interval, the fetch is aborted.

Usage

Some inline fragments are only delivered as part of an HTTP response for another object. These are not independently fetchable by OracleAS Web Cache the way <esi:include> fragments are. When a non-fetchable fragment is needed by OracleAS Web Cache, OracleAS Web Cache must request the object from which the inline fragment was extracted.

When a non-fetchable <esi:inline> fragment is not found in the cache, OracleAS Web Cache re-fetches the fragment’s parent template. This behavior implies that the parent cannot be another non-fetchable <esi:inline> fragment. If the parent is an <esi:inline> non-fetchable fragment, the response is returned to the browser is undefined.

Example

The following ESI output embeds financial headlines:

<esi:inline name="/Top_News_Finance">
Latest News for Finance
<TABLE>
  <TR>
    Blue-Chip Stocks Cut Losses; Nasdaq Up MO
    French rig factory with explosives New York Times
    Volkswagen faces Brazil strike CNN Europe
    Airbuss reliability record BBC
  </TR>
</TABLE>
</esi:inline>

See Also:

“Example of a Portal Site Implementation” for an extended example of <esi:inline> usage



ESI invalidate Tag

The <esi:invalidate> tag enables you to configure an invalidation request within the response of a browser page.

Syntax

Basic invalidation syntax:

<esi:invalidate [output="yes"]>
 <?xml version="1.0"?>
 <!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
  <INVALIDATION VERSION="WCS-1.1">
    <SYSTEM>
     <SYSTEMINFO NAME="name" VALUE="value"/>
    </SYSTEM>
    <OBJECT>
      <BASICSELECTOR URI="URL"/>
      <ACTION REMOVALTTL="TTL"/>
      <INFO VALUE="value"/>
    </OBJECT>
 </INVALIDATION>
</esi:invalidate>

Advanced invalidation syntax:

<esi:invalidate [output="yes"]>
 <?xml version="1.0"?>
 <!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
 <INVALIDATION VERSION="WCS-1.1">
    <SYSTEM>
     <SYSTEMINFO NAME="name" VALUE="value"/>
    </SYSTEM>
       <OBJECT>
         <ADVANCEDSELECTOR URIPREFIX="prefix"
                           URIEXP="URL_expression"
                           HOST="host_name:port"
                           METHOD="HTTP_request_method"
                          BODYEXP="HTTP_body"/>
          <COOKIE NAME="cookie_name" VALUE="value"/>
          <HEADER NAME="HTTP_request_header" VALUE="value"/>
          <OTHER NAME="URI|BODY|QUERYSTRING_PARAMETER|SEARCHKEY"
                 TYPE="SUBSTRING|REGEX"
                 VALUE="value"/>
         </ADVANCEDSELECTOR>
      <ACTION REMOVALTTL="TTL"/>
      <INFO VALUE="value"/>
      </OBJECT>
 </INVALIDATION>
</esi:invalidate>

Attributes

  • outputyes specifies that the invalidation result be included in the browser response, enclosed within comments <!--result-->. no specifies that the invalidation result not be displayed in the output. Specify a value of yes for a test environment; specify a value of no for a production environment.

Usage

Example



ESI remove Tag

The <esi:remove> tag allows for specification of non-ESI markup output if ESI processing is not enabled with the Surrogate-Control header or there is not an ESI-enabled cache.

Syntax

<esi:remove> HTML output...</esi:remove>

Usage

Any HTML or ESI elements can be included within this tag, except other <esi:remove> tags. Note that nested ESI tags are not processed.

Example

The following ESI markup includes http://www.company.com if the <esi:include> content cannot be included:

<esi:include src="http://www.company.com/ad.html"/>
<esi:remove>
  <A HREF="http://www.company.com">www.company.com</A>
</esi:remove>

Normally, when OracleAS Web Cache processes this example block, it fetches the ad.html file and includes it into the template page while silently discarding the <esi:remove> tag and its contents. If ESI processing is not enabled, all of the elements are passed through to browser, which ignores ESI markup. However, the browser displays the <A HREF=...> HTML link.



ESI try | attempt | except Tags

The <esi:try> tag provides for exception handling. The <esi:try> tag must contain exactly one instance of an <esi:attempt> tag and one or more <esi:except> tags.

See Also:

“Exceptions and Errors” for usage notes on alt and onerror

Syntax

In the following form, only one <esi:except> tag is supported:

<esi:try>
  <esi:attempt>
    Try this...
  </esi:attempt>
  <esi:except>
    If the attempt fails, then perform this action...
  </esi:except>
</esi:try>

In the following form, multiple <esi:except> tags with different types are supported:

<esi:try>
  <esi:attempt>
    Try this...
  </esi:attempt>
  <esi:except [type="type"]>
    If the attempt fails, then perform this action...
  </esi:except>
  <esi:except [type="type"]>
    Perform this action...
  </esi:except>
  <esi:except>
    If the attempt fails, then perform this action...
  </esi:except>
</esi:try>

Usage

OracleAS Web Cache first processes the contents of <esi:attempt>. A failed <esi:attempt> triggers an error and causes OracleAS Web Cache to process the contents of the <esi:except> tag.

Specify an <esi:except> tag without a type for general errors; specify an <esi:except> tag with a type for specific errors. The <esi:except> tag accepts the following case-insensitive types:

  • nestingtoodeep: An error occurs because the fragment include depth has exceeded the maximum include depth.
  • originserverbusy: An error occurs because the origin server for this fragment is busy and cannot accept new requests now. This is caused by OracleAS Web Cache-to-origin server request queue limit being reached.
  • noconnection: An error occurs because the cache is unable to connect to the origin server serving this fragment.
  • networktimeout: An error occurs because a fragment request to the origin server has timed out in the network connection.
  • httpclienterror: An error occurs because the origin server returns an HTTP 4xx status code, a client error, such as a malformed HTTP request or an unauthorized access.
  • httpservererror: An error occurs because the origin server returns an HTTP 5xx status code, a server error.
  • incompatiblefragmentversion: An error occurs because a fragment’s processing requirement is not supported or not compatible with the template. <!-- WEBCACHETAG–> and <!-- WEBCACHEEND–> processing in an ESI fragment is not compatible with ESI processing. A fragment may be plain data that does not need any processing in the cache, or it may be an ESI template itself that requires processing of ESI features supported in this release. The ESI features in use are specified by the Surrogate-Control content control directive.
  • incorrectresponseheader: An error occurs because the response headers for a fragment causes the error.
  • incorrectesifragment: An error occurs when OracleAS Web Cache tries to parse or process the ESI fragment response body due to errors in the body.
  • incorrectxmlfragment: An error occurs because there is an error in XSLT retrieval, parsing, or processing by OracleAS Web Cache.

Example

The following ESI markup attempts to fetch an advertisement. If the advertisement cannot be included, OracleAS Web Cache includes a static link instead.

<esi:try>
  <esi:attempt>
    <esi:comment text="Include an ad"/>
    <esi:include src="http://www.company.com/ad1.htm"/>
  </esi:attempt>
  <esi:except>
    <esi:comment text="Just write some HTML instead"/>
    <a href=www.company.com>www.company.com</a>
  </esi:except>
</esi:try>

The following ESI markup attempts to fetch a fragment. If the fragment cannot be included because of httpclienterror, then OracleAS Web Cache includes /cgi-bin/esi-fetch?/esi/tryNestL1.html instead.

<esi:try>
  <esi:attempt>
    <esi:include src="/frag.html"/>
  </esi:attempt>
  <esi:except type="httpclienterror">
    <esi:include src="/cgi-bin/esi-fetch?/esi/tryNestL1.html"/>
  </esi:except>
</esi:try>

The following <esi:try> attempts to include the fragment http://server.portal.com/pls/ppcdemo/!PCDEMO.wwpro_app_provider.execute_portlet/513104940/26 containing several HTTP request headers. If the fragment cannot be included because of various type errors, OracleAS Web Cache returns an Unknown ESI Exception error.

<esi:try>
  <esi:attempt>
    <esi:include src="http://server.portal.com/pls/ppcdemo/!PCDEMO.wwpro_app_provider.execute_portlet/513104940/26" timeout="15000" >
      <esi:request_header name="X-Oracle-Device.MaxDocSize" value="0"/>
      <esi:request_header name="Accept"
      value="text/html,text/xml,text/vnd.oracle.mobilexml"/>
      <esi:request_header name="User-Agent"
        value="Mozilla/4.0 (compatible; MSIE 5.5; Windows; YComp 5.0.0.0)
        RPT-HTTPClient/0.3-3"/>
      <esi:request_header name="Device.Orientation" value="landscape"/>
      <esi:request_header name="Device.Class" value="pcbrowser"/>
      <esi:request_header name="PORTAL-SUBSCRIBER" value="us"/>
      <esi:request_header name="Device.Secure" value="false"/>
      <esi:request_header name="PORTAL-SUBSCRIBER-DN"
         value="dc=us,dc=oracle,dc=com"/>
      <esi:request_header name="PORTAL-SUBSCRIBER-GUID"
         value="A5EE385440E6252BE0340800208A8B00"/>
      <esi:request_header name="Accept-Language" value="en-us"/>
      <esi:request_header name="PORTAL-USER-DN"
         value="cn=public,cn=users,dc=us,dc=oracle,dc=com"/>
      <esi:request_header name="PORTAL-USER-GUID"
         value="A5EE55B396E22651E0340800208A8B00"/>
      <esi:request_header name="Content-Type"
         value="application/x-www-form-urlencoded"/>
    </esi:include>
  </esi:attempt>
  <esi:except type="incompatiblefragmentversion" >
     This happens when a fragment's processing requirement is not supported
     or not compatible with the template.
  </esi:except>
  <esi:except type="noconnection" >
     The cache is unable to connect to the origin server serving this fragment.
  </esi:except>
  <esi:except type="nestingtoodeep" >
     The fragment include depth has exceeded the maximum include depth. The
     default value defined in Web Cache is 3.
  </esi:except>
  <esi:except type="httpservererror" >
     The origin server returns an HTTP 5xx status code, a server error.
  </esi:except>
  <esi:except type="httpclienterror" >
     The origin server returns an HTTP 4xx status code, a client error, such as
     a malformed HTTP request or an unauthorized access.
  </esi:except>
  <esi:except type="incorrectresponseheader" >
     This happens when the response headers for a fragment cause the error.
  </esi:except>
  <esi:except type="incorrectxmlfragment" >
     This happens when there is any kind of error in OracleAS Web Cache XSLT
     retrieval, parsing, or processing.
  </esi:except>
  <esi:except type="originserverbusy" >
     The origin server for this fragment is busy and cannot accept new requests
     now. This is caused by OracleAS Web Cache-to-origin server request queue
    limit.
  </esi:except>
  <esi:except type="networktimeout" >
     This is thrown by a fragment whose request to the origin server has timed
     out in the network connection.
  </esi:except>
  <esi:except type="incorrectesifragment" >
     An error is encountered when OracleAS Web Cache tries to parse or process
     the ESI fragment response body due to errors in the body.
  </esi:except>
  <esi:except>
     Unknown ESI Exception
  </esi:except>
</esi:try>



ESI vars Tag

The <esi:vars> tag enables you to use variables outside of ESI tags. For example, instead of specifying a variable inside a <esi:include> or <esi:choose> block, you can use the <esi:vars> tag to specify a variable inside HTML code.

Syntax

<esi:vars>Optional HTML code $(VARIABLE_NAME{key}) Optional HTML code</esi:vars>

Syntax Usage

  • If the variable does not use the complete $(VARIABLE_NAME{key}) format, OracleAS Web Cache reports the following error message to the event log:
    [Date] [error 12086] [ecid: request_id, serial_number]ESI syntax error. Unrecognized keyword keyword is at line line.
  • Do not nest the <esi:vars> tag within an HTML code line. The following is an example of incorrect syntax:
    HTML code <esi:vars>$(VARIABLE_NAME{key})</esi:vars>HTML code

    For example, the following is invalid:

    <IMG SRC="http://www.example.com/<esi:vars>$(HTTP_COOKIE{type})</esi:vars>/hello.gif"/>

Usage

See Also:

“Variable Expressions” and “ESI environment Tag” for usage of HTTP request variables and custom variables

Example

The following ESI markup includes the cookie type and its value as part of the included URL:

<esi:vars>
  <IMG SRC="http://www.example.com/$(HTTP_COOKIE{type})/hello.gif"/>
</esi:vars>

The following ESI output refers to logindata as part of the <A HREF=...> link for the Welcome page. logindata refers to an XML file that contains custom environment variables. The output also includes the user’s sessionID and category type cookie values as part of the other <A HREF=...> links.

<esi:vars>
  <A HREF="welcome.jsp?name=$(logindata{name})">
  <A HREF="/shopping.jsp?sessionID=$(QUERY_STRING{sessionID})&type=$(QUERY_STRING{type})">
  <IMG SRC="/img/shopping.gif">
  </A>
  <A HREF="/news.jsp?sessionID=$(QUERY_STRING{sessionID})&type=$(QUERY_STRING{type})">
  <IMG SRC="/img/news.gif">
  </A>
  <A HREF="/sports.jsp?sessionID=$(QUERY_STRING{sessionID})&type=$(QUERY_STRING{type})">
  <IMG SRC="/img/sports.gif">
  </A>
  <A HREF="/fun.jsp?sessionID=$(QUERY_STRING{sessionID})&type=$(QUERY_STRING{type})">
  <IMG SRC="/img/fun.gif">
  </A>
  <A HREF="/about.jsp?sessionID=$(QUERY_STRING{sessionID})&type=$(QUERY_STRING{type})">
  <IMG SRC="/img/about.gif">
  </A>
 </esi:vars>



ESI <!–esi–>Tag

The <!--esi...---> tag enables HTML marked up with ESI tags to display to the browser without processing the ESI tags. When a page is processed with this tag, OracleAS Web Cache removes the starting <!--esi and ending --> elements, while still processing the contents of the page. When the markup cannot be processed, this tag assures that the ESI markup will not interfere with the final HTML output.

Syntax

<!--esi
 ESI elements
-->

Usage

Any ESI or HTML elements can be included within this tag, except other <!--esi...--> tags.

Example

In the following ESI markup, the <!--esi and --> are removed in the final
output. The output displays the content generated by <p><esi:vars>Hello, $(HTTP_COOKIE{name})!</esi:vars></p>,
plus any surrounding text.

<!--esi
 <p><esi:vars>Hello, $(HTTP_COOKIE{name})!</esi:vars></p>
-->

If the ESI markup cannot be processed, then the <p><esi:vars>Hello, $(HTTP_COOKIE{name})!</esi:vars></p> is displayed in the HTML output.

Posted by Carlos Guerrero on September 3, 2009

Web cache traces and tools

Cited from: www.web-caching.com

Rhinosoft’s AllegroSurf provides proxies for various protocols, including HTTP, and provides prefetching of page links.

Anonimizer provides anonymous web services including browsing, email, and publishing.

The Apache HTTP server has a caching module.

Kintronics offers the plug and play Avantis ContentCache proxy appliance, supporting remote administration of a network of proxies.

Intelogis offers the Avirt line of internet sharing and caching products for the home as well as small and medium-sized business use under Windows. [Product used to be called Spaghetti.]

Blue Coat’s proxy appliances provide visibility and control of Web communications to protect against risks from spyware, Web viruses, inappropriate Web surfing, instant messaging, video streaming and peer-to-peer file sharing - while improving Web performance through caching.

CacheXpress is a high performance proxy server for Windows environments supporting transparent and authenticated modes and WCCP 1 & 2.

NEC Solutions America released CachePortal, which accelerates corporate application performance.

The CERN/W3C HTTPd was the original proxy cache (actually a caching httpd server), developed initially at CERN and later maintained at the W3C.

The Cisco Cache Engine sits next to (mostly) Cisco routers and receives transparently redirected HTTP requests.

Digital Equipment Corp. Aug-Sep 1996 web proxy corporate lan users Weekly Access Logs at NLANR’s Proxy Caches IRCache Current Week web proxy upper level proxy anonymized daily Daily Access Logs from CA*netII’s Proxy Caches CA*netII November 1999 web proxy upper level proxy consistent ip hiding so logs may be concatenated Boeing Proxy Logs W3C WCA Repository Mar 1-5 1999 web proxy corporate firewall anonymized and consistent across proxies, but not across days Univ. of Pisa Seven month traces of from CS dept. email: cao@cs.wisc.edu (286MB too large for public access — any volunteers?) Sep 1996 - Mar 1997 ? CS dept. users URLs and client ids anonymized Virginia Tech’s Proxy Traces Virginia Tech Feb-Oct 1995 web proxy and client four sets; 25-61 workstations, 12k-227k requests Boston University CS Dept Client Traces Boston University CS Dept and Internet Traffic Archive Nov 1994 - May 1995 client 2 sets; 5-32 workstations, 17k-118k requests EPA-HTTP: a day of HTTP logs from a busy EPA WWW server. Internet Traffic Archive and Univ. of Wisconsin Aug 29, 1995 (24 hours) web server Internet users SDSC-HTTP: one day of HTTP logs from a busy San Diego Supercomputing Center web server Internet Traffic Archive and Univ. of Wisconsin Aug 22, 1995 web server Internet users Calgary-HTTP: a year of HTTP logs from a University CS department web server Internet Traffic Archive and Univ. of Wisconsin Oct 94 - Oct 95 web server Internet users ClarkNet-HTTP: two weeks of HTTP logs from a busy ISP Internet Traffic Archive and Univ. of Wisconsin Aug-Sep 1995 web server Internet users Saskatchewan-HTTP: Seven months of HTTP logs from a University web server Internet Traffic Archive and Univ. of Wisconsin Jun-Dec 1995 web server Internet users NASA-HTTP: Two months of HTTP logs from a busy NASA web server Internet Traffic Archive and Univ. of Wisconsin Jul-Aug 1995 web server Internet users Music Machines-HTTP: Two years and two months of HTTP logs from another web server University of Washington Sep-Oct 1997 or
Feb 1997-Apr 1999
web server Internet users Anonymized; web caching disabled; no sizes reported in initial portions Soccer World Cup 1998 Internet Traffic Archive and W3C WCA Repository Apr 30-Jul 26 1998 web server(s) Internet users Anonymized, 1.3 billion requests

Posted by Carlos Guerrero on September 2, 2009

Sites to improve your English

Extracted from: http://www.smashingmagazine.com/2009/06/28/50-free-resources-that-will-improve-your-writing-skills/

Effective writing skills are to a writer what petrol is to a car. Like the petrol and car relationship, without solid skills writers cannot move ahead. These skills don’t come overnight, and they require patience and determination. You have to work smart and hard to acquire them. Only with experience, you can enter the realm of effective, always-in-demand writers.

Of course, effective writing requires a good command of the language in which you write or want to write. Once you have that command, you need to learn some tips and tricks so that you can have an edge over others in this hard-to-succeed world of writers. There are some gifted writers, granted. But gifted writers also need to polish their skills frequently in order to stay ahead of competition and earn their livelihood.

We collected over 50 useful and practical tools and resources that will help you to improve your writing skills. You will find copywriting blogs, dictionaries, references, teaching classes, articles, tools as well as related articles from other blogs. Something is missing? Please let us know in the comments to this post!

1. Grammar, Punctuation & Co.

Ultimate Style: The Rules Of Writing
The web’s ultimate guide to grammar provides a database of topics and an easy-to-search A-Z list of common questions (via)

Screenshot

Use English Punctuation Correctly
A quick and useful crash course in English punctuation.

HyperGrammar
An extensive electronic grammar course at the University of Ottawa’s Writing Centre.

Grammar Girl
Mignon Fogarty’s quick and dirty tips for better writing. Grammar Girl provides short, friendly tips to improve your writing. Covering the grammar rules and word choice guidelines that can confound even the best writers, Grammar Girl makes complex grammar questions simple with memory tricks to help you recall and apply those troublesome grammar rules.

Screenshot

Better Writing Skills
This site contains 26 short articles with writing tips about ampersands, punctuation, character spacing, apostrophes, semicolons and commas, difference between i.e. and e.g. etc.

The Guide to Grammar and Writing
An older, yet very useful site that will help you to improve your writing on word & sentence level, paragraph level and also essay & research paper level.

HyperGrammar

Writer’s Block
A compact resource with over 20 articles that cover abbreviations, capitalization, numbers, punctuation, word usage and writing styles.

Paradigm Online Writing Assistant
This site contains some useful articles that explain common grammar mistakes, basic punctuation, basic sentence concepts etc. Worth visiting and reading. The Learning Centre contains similar articles, but with more examples.

Jack Lynch’s Guide to Grammar and Style
These notes are a miscellany of grammatical rules and explanations, comments on style, and suggestions on usage put by Jack Lynch, an Associate Professor in the English department of the Newark campus of Rutgers University, for his classes.

English Style Guide
This guide is based on the style book which is given to all journalists at The Economist. The site contains various hints on how to use metaphors, punctuation, figures, hyphens etc. Brief and precise.

HyperGrammar

Technical Writing
An extensive guidance on grammar and style for technical writing.

40+ Tips to Improve your Grammar and Punctuation
“Purdue University maintains an online writing lab and I spent some time digging through it. Originally the goal was to grab some good tips that would help me out at work and on this site, but there is simply too much not to share.”

2. Common mistakes and problems

Common Errors in English
A collection of common errors in English, with detailed explanations and descriptions of each error.

AskOxford: Better Writing
A very useful reference for classic errors and helpful hints with a terrible site navigation.

Screenshot

Dr. Grammar’s Frequently Asked Questions
Answers to common grammar questions related to English grammar, with examples and additional explanations.

English Grammar FAQ
A list of common English language problems and how to solve them. This list was compiled through an extensive archive of postings to alt.usage.english by John Lawler, Linguistics, U. Michigan, Ann Arbor.

3. General Writing Skills

Writer’s Digest
Writer’s Digest offers information on writing better and getting published. The site also includes community forums, blogs and huge lists of resources for writers (via)

Infoplease: General Writing Skills
Various articles that aim to teach students how to write better.

Infoplease

The Elements of Style
A freely available online version of the book “The Elements of Style” by William Strunk, Jr., the classic reference book.

Poynter Writing Tools
A blog dedicated to writers and journalists. Poynter also provides Fifty Writing Tools: Quick List, a collection of podcasts related to writing.

Poynter

learning lab / writing skills
This site offers over 20 .pdf-documents with main rules and common mistakes related to summarising, paraphrasing, referencing, sentences, paragraphs, linking words and business writing. Handy.

Using English
UsingEnglish.com provides a large collection of English as a Second Language (ESL) tools & resources for students, teachers, learners and academics. Browse our grammar glossary and references of irregular verbs, phrasal verbs and idioms, ESL forums, articles, teacher handouts and printables, and find useful links and information on English. Topics cover the spectrum of ESL, EFL, ESOL, and EAP subject areas.

Online Writing Courses
Free courses are a great way to improve your writing skills. The courses shown here focus on several types of creative writing, including poetry, essay writing and fiction writing.

4. Practical Guides To Better Writing Skills

Copywriting 101: An Introduction to Copywriting
This tutorial is designed to get you up and running with the basics of writing great copy in ten easy lessons. Afterwards, you’ll get recommendations for professional copywriting training, plus links to tutorials on SEO copywriting and writing killer headlines.

Screenshot

A Guide to Writing Well
“This guide was mainly distilled from On Writing Well by William Zinsser and The Elements of Style by Strunk and White. Other sources are listed in the bibliography. My memory being stubborn and lazy, I compiled this so I could easily refresh myself on writing well. I hope it will also be helpful to others.”

Online Copywriting 101: The Ultimate Cheat Sheet
The ultimate cheat sheet with various Web copy resources that copywriters can use to lean the best writing tips and ideas. More copywriting cheat sheets.

Headlines and Trigger Words

Common mistakes and errors

Writing tips from experts

Practical tips

5. Copywriting Blogs

CopyBlogger
Now that blogging has become the smartest strategy for growing an authoritative web site, it’s your copywriting skills that will set you apart and help you succeed. And this is where Copyblogger comes into play. Brian Clark’s popular blog covers useful copywriting tips, guidelines and ideas.

Screenshot

Write to Done
Leo Babuta’s blog about the craft and the art of writing. The blog covers many topics: journalism, blog writing, freelance writing, fiction, non-fiction, getting a book deal, the business of writing, the habit of writing. Updated twice weekly.

Problogger
Darren Rowse’s blog helps bloggers to add income streams to their blogs – among other things, Darren also has hundreds of useful articles related to copy writing.

Screenshot

Men with Pens
A regularly updated blog with useful tips for writers, freelancers and entrepreneurs.

Time to Write
Jurgen Wolff’s tips, ideas, inspirations for writers and would-be writers and other creative people.

Daily Writing Posts
“Whether you are an attorney, manager, student or blogger, writing skills are essential for your success. Considering the rise of the information age, they are even more important, as people are surrounded by e-mails, wikis, social networks and so on.

“It can be difficult to hone one’s writing skills within this fast paced environment. Daily Writing Tipsis a blog where you will find simple yet effective tips to improve your writing.”

CopyWriting
Copywriting website is jam-packed with useful information, articles, resources and services geared to show you how to write mouth-watering, profit-generating copy. Copy that changes minds and dramatically boosts your results. So come right in… you’re going to like what you see! It has copywriting courses, tools, articles and much more.”

CopyWriting

Dumb Little Man: Writing
Jay White provides a handful of tips that may increase your productivity and improve your skills. You’ll find many tips and ideas for better writing in his archive category “Writing”.

Dumb Little Man

The Copywriter Underground
A copywriting blog by the freelance writer Tom Chandler.

Lifehack: Writing
This collection of resources includes links to 30 posts on Lifehack that may help you to improve your writing skills.

6. Tools

OneLook Dictionary Search
More than 13,5 million words in more than 1024 online dictionaries are indexed by the OneLook search engine. You can find, define, and translate words all at one site.

One Look Dictionary Search

Definr
A fast, suggest-as-you-type dictionary which you can add to your Firefox search box or use in bookmarklet form (see this post) (via Lifehacker).

Screenshot

Visuwords
Look up words to find their meanings and associations with other words and concepts. Produce diagrams reminiscent of a neural net. Learn how words associate.

Screenshot

Merriam Webster: Visual Dictionary
The Visual Dictionary Online is an interactive dictionary with an innovative approach. From the image to the word and its definition, the Visual Dictionary Online is an all-in-one reference. Search the themes to quickly locate words, or find the meaning of a word by viewing the image it represents. What’s more, the Visual Dictionary Online helps you learn English in a visual and accessible way.

Screenshot

OneLook Reverse Dictionary
OneLook’s reverse dictionary lets you describe a concept and get back a list of words and phrases related to that concept. Your description can be a few words, a sentence, a question, or even just a single word.

Online Spell Checker
Free online spell checker that provides you with quick and accurate results for texts in 28 languages (German, English, Spanish, French, Russian, Italian, Portuguese etc.). An alternative tool: Spelljax.

Screenshot

GNU Aspell
GNU Aspell is a Free and Open Source spell checker designed to eventually replace Ispell. It can either be used as a library or as an independent spell checker. Its main feature is that it does a superior job of suggesting possible replacements for a misspelled word than just about any other spell checker out there for the English language.

WordWeb
A one-click English thesaurus and dictionary for Windows that can look up words in almost any program. It works off-line, but can also look up words in web references such as the Wikipedia encyclopedia. Features of the free version include definitions and synonyms, proper nouns, 150 000 root words and 120 000 synonym sets.

Screenshot

write rhymes
As you write, hold the alt key and click on a word to find a rhyme for it.

Screenshot

Verbix
This English conjugator will help you to determine how to use verbs in the proper tense.

Wordcounter
Wordcounter ranks the most frequently used words in any given body of text. Use this to see what words you overuse or maybe just to find some keywords from a document. Text Statistics Generator is an alternative tool: it gives you a quick analysis of number of word occurrences.

Advanced Text Analyzer (requires registration)
This free tool analyzes texts, calculating the number of words, lexical density, words per sentence, character per word and the readability of the text as well as word analysis, phrase analysis and graded analysis. Useful! Alternative tool.

Screenshot

Graviax Grammar Checker
Grammar rules (XML files containing regular expressions) and grammar checker. Currently only for the English language, although it could be extended. Unit tests are built into the rules. Might form the basis of a grammar checker for OpenOffice.

txt2tags
Txt2tags is a document generator. It reads a text file with minimal markup as **bold** and //italic// and converts it to the formats HTML, LaTeX, MediaWiki, Google Code Wiki, DokuWiki, Plain text and more.

Markdown
Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML). Requires Perl 5.6.0 or later.

7. Further Resources

50 Useful Open Source Resources For Writers and Writing Majors
And if you’re a writing major, why not take advantage of all the opportunities to get great free and open source resources that can help you to write, edit and organize your work? Here’s a list of fifty open source tools that you can use to make your writing even better.

English Forums
If you have a question related to English Grammar, join these forums to get advice from others who know the language better or can provide you with some related information.

Screenshot

The Ultimate Writing Productivity Resource
A round-up of applications, services, resources, tools, posts and communities for writers and bloggers who want to improve their writing skills.

100 Useful Web Tools for Writers
100 useful Web tools that will help you with your career, your sanity and your creativity whenever your write. More useful round-ups.

Posted by Carlos Guerrero on August 5, 2009

Java HTML parsers

Extract from: http://java-source.net/open-source/html-parsers

TagSoup

TagSoup is a SAX-compliant parser written in Java that, instead of parsing well-formed or valid XML, parses HTML as it is found in the wild: nasty and brutish, though quite often far from short. TagSoup is designed for people who have to process this stuff using some semblance of a rational application design. By providing a SAX interface, it allows standard XML tools to be applied to even the worst HTML.

HTML Parser

A fast real-time parser for real-world HTML.

Java HTML Parser

HTML Parser that produces a stream of tag objects, which can be further parsed into a searchable tree structure.

JTidy

JTidy is a Java port of HTML Tidy , a HTML syntax checker and pretty printer. Like its non-Java cousin, JTidy can be used as a tool for cleaning up malformed and faulty HTML. In addition, JTidy provides a DOM interface to the document that is being processed, which effectively makes you able to use JTidy as a DOM parser for real-world HTML.

NekoHTML

NekoHTML is a simple HTML scanner and tag balancer that enables application programmers to parse HTML documents and access the information using standard XML interfaces. The parser can scan HTML files and “fix up” many common mistakes that human (and computer) authors make in writing HTML documents. NekoHTML adds missing parent elements; automatically closes elements with optional end tags; and can handle mismatched inline element tags.

Jericho HTML Parser

A simple but powerful java library for parsing and modifying HTML documents, including analysis of abritrary HTML forms to determine the structure of submitted data.

Cobra 0.95.1

Cobra is an HTML Toolkit that contains a pure Java HTML DOM parser and a rendering engine. It supports HTML 4, Javascript and CSS2.

HtmlCleaner

HtmlCleaner is open-source HTML parser written in Java. HTML found on Web is usually dirty, ill-formed and unsuitable for further processing. For any serious consumption of such documents, it is necessary to first clean up the mess and bring the order to tags, attributes and ordinary text. For the given HTML document, HtmlCleaner reorders individual elements and produces well-formed XML. By default, it follows similar rules that the most of web-browsers use in order to create document object model. However, user may provide custom tag and rule set for tag filtering and balancing.

Java Mozilla Html Parser

MozillaParser is a Java Html parser based on mozilla’s html parser. it acts as a bridge from java classes to Mozilla’s classes and outputs a java Document object from a raw ( and dirty) HTML input

HotSax

HotSAX is a fast, small footprint, non-validating SAX2 parser for HTML/XML/XHTML. It can be used in simple web agents, page scrapers, and spiders. It is similar to the Apache Xerces parser, except that it can generate SAX events for badly formatted HTML as well.

Posted by Carlos Guerrero on July 29, 2009

Mathematical symbols and Latex

From:http://en.wikipedia.org/wiki/Table_of_logic_symbols

Table of logic symbols

From Wikipedia, the free encyclopedia

Jump to: navigation, search

In logic, a set of symbols is commonly used to express logical representation. As logicians are familiar with these symbols, they are not explained each time they are used. So, for students of logic, the following table lists many common symbols together with their name, pronunciation and related field of mathematics. Additionally, the third column contains an informal definition, and the fourth column gives a short example.

Be aware that, outside of logic, different symbols have the same meaning, and the same symbol has, depending on the context, different meanings.

Note: This article contains special characters.

[edit] Basic logic symbols

Symbol
Name Explanation Examples Unicode
Value
HTML
Entity
LaTeX
symbol
Should be read as
Category

material implication AB means if A is true then B is also true; if A is false then nothing is said about B.

→ may mean the same as ⇒ (the symbol may also indicate the domain and codomain of a function; see table of mathematical symbols).

⊃ may mean the same as ⇒ (the symbol may also mean superset).

x = 2  ⇒  x2 = 4 is true, but x2 = 4   ⇒  x = 2 is in general false (since x could be −2). 8658

8594

8835

&rArr;
&rarr;
&sup;
\Rightarrow\Rightarrow
\to\to
\supset\supset
implies; if .. then
propositional logic, Heyting algebra

material equivalence AB means A is true if B is true and A is false if B is false. x + 5 = y +2  ⇔  x + 3 = y 8660

8801

8596

&hArr;
&equiv;
&harr;
\Leftrightarrow\Leftrightarrow
\equiv\equiv
\leftrightarrow\leftrightarrow
if and only if; iff
propositional logic
¬

˜

!

logical negation The statement ¬A is true if and only if A is false.

A slash placed through another operator is the same as “¬” placed in front.

¬(¬A) ⇔ A
x ≠ y ⇔  ¬(xy)
172

732

&not;
&tilde;
~
\lnot\lnot
\tilde{}\tilde{}
not
propositional logic

&

logical conjunction The statement AB is true if A and B are both true; else it is false. n < 4  ∧  n >2  ⇔  n = 3 when n is a natural number. 8743

38

&and;
&amp;
\land\land
\&[1]
and
propositional logic

+

logical disjunction The statement AB is true if A or B (or both) are true; if both are false, the statement is false. n ≥ 4  ∨  n ≤ 2  ⇔ n ≠ 3 when n is a natural number. 8744 &or; \lor\lor
or
propositional logic

exclusive disjunction The statement AB is true when either A or B, but not both, are true. A B means the same. A) ⊕ A is always true, AA is always false. 8853

8891

&oplus; \oplus\oplus
xor
propositional logic, Boolean algebra

T

1

Tautology The statement ⊤ is unconditionally true. A ⇒ ⊤ is always true. 8868 T \top\top
top
propositional logic, Boolean algebra

F

0

Contradiction The statement ⊥ is unconditionally false. ⊥ ⇒ A is always true. 8869 &perp;
F
\bot\bot
bottom
propositional logic, Boolean algebra
universal quantification ∀ x: P(x) means P(x) is true for all x. ∀ nN: n2n. 8704 &forall; \forall\forall
for all; for any; for each
predicate logic
existential quantification ∃ x: P(x) means there is at least one x such that P(x) is true. ∃ nN: n is even. 8707 &exist; \exists\exists
there exists
first-order logic
∃!
uniqueness quantification ∃! x: P(x) means there is exactly one x such that P(x) is true. ∃! nN: n + 5 = 2n. 8707 33 &exist; ! \exists !\exists !
there exists exactly one
first-order logic
:=

:⇔

definition x := y or xy means x is defined to be another name for y (but note that ≡ can also mean other things, such as congruence).

P :⇔ Q means P is defined to be logically equivalent to Q.

cosh x := (1/2)(exp x + exp (−x))

A XOR B :⇔ (A ∨ B) ∧ ¬(A ∧ B)

58 61

8801

58 8660

:=
: &equiv;
&hArr;
: = :=
\equiv\equiv
\Leftrightarrow\Leftrightarrow
is defined as
everywhere
( )
precedence grouping Perform the operations inside the parentheses first. (8/4)/2 = 2/2 = 1, but 8/(4/2) = 8/2 = 4. 40 41 ( ) (~) ( )
everywhere
inference x y means y is derived from x. AB ¬B → ¬A 8866 \vdash\vdash
infers or is derived from
propositional logic, first-order logic

[edit] Advanced and Rarely Used Logical symbols

These symbols are sorted by their Unicode value:

  • x00b7 ·: Center dot, an outdated way for denoting AND, still in use in electronics; for example “A·B” is the same as “A&B”
  • ·: Center dot with a line above it (using HTML style). Outdated way for denoting NAND, for example “A·B” is the same as “A NAND B” or “A|B” or “¬(A & B)” See also Unicode “Dot operator” x22c5
  • x0305 ̅ : overline, used as abbreviation for standard numerals. for example, using HTML style “4” is a shorthand for the standard numeral “SSSS0″
  • ̅ : overline, an outdated way for denoting negation, still in use in electronics; for example “AVB” is the same as “¬(AVB)”
  • ̅ : overline, a rarely used format for denoting Gödel numbers, for example “AVB” says the Gödel number of “(AVB)”
  • x2191 ↑ or 0×007c | : Sheffer stroke, the sign for the NAND operator.
  • x2201 ∁: complement
  • x2204 ∄: strike out existential quantifier same as “¬∃”
  • x2234 ∴: therefore
  • x2235 ∵: because
  • x22a7 ⊧: is a model of
  • x22a8 ⊨: is true of
  • x22ac ⊬: strike out turnstile, the sign for “does not prove”, for example T⊬P says “P is not a theorem of T”
  • x22ad ⊭: is not true of
  • x22bc ⊼: Another NAND operator, can also be rendered as
  • x22bd ⊽: Another NOR operator, can also be rendered as V
  • x22c4 ◊: modal operator for “it is possible that”, “it is not necessarily not” or rarely “it is not provable not” (in most modal logics it is defined as “¬◻¬”)
  • x22c6 ⋆: Star operator, usually used for ad-hoc operators
  • x22a5 ⊥ or x2193 ↓ : Webb-operator or Peirce arrow, the sign for NOR, confusingly, “⊥”is also the sign for contradiction or absurdity.
  • x2310 ⌐  : reversed not sign
  • x231c⌜ x231d ⌝: corner quotes, also called “Quine quotes”; the standard symbol used for denoting Gödel number; for example “⌜G⌝” denotes the Gödel number of G. (Typographical note: although the quotes appears as a “pair” in unicode (231C and 231D), they are not symmetrical in some fonts. And in some fonts (for example Arial) they are only symmetrical in certain sizes. Alternatively the quotes can be rendered as ⌈⌉ and (unicode 2308 and 2309) or by using a negation symbol and a reversed negation symbol ⌐ ¬ in superscript mode. )
  • x25fb ◻ or x25a1 □: modal operator for “it is necessary that” (in modal logic), or “it is provable that” (in provability logic), or “it is obligatory that” (in Deontic logic), or “It is believed that” (in Doxastic logic). Typographical note: there are many different “box” signs in unicode, some are NOT rendered as a box in non-western fonts. When using the modal operator in Web pages, it is important to specify the font.

Note that the following operators are rarely supported by natively installed fonts. If you wish to use these in a web page, you should always embed the necessary fonts so the page viewer can see the web page without having the necessary fonts installed in their computer.

  • x27e1 ⟡:modal operator for never
  • x27e2 ⟢: modal operator for was never
  • x27e3 ⟣: modal operator for will never be
  • x27e4 ⟤: modal operator for was always
  • x27e5 ⟥: modal operator for will always be
  • x297d ⥽: right fishtail sign, sometimes used for “relation”, also used for denoting various ad hoc relations (for example, for denoting “witnessing” in the context of Rosser’s trick) See here for an image of glyph. Added to Unicode 3.2.0 .

[edit] See also

[edit] Special characters

Technical note: Due to technical limitations, some browsers may not display the special characters in this article. Some characters may be rendered as boxes, question marks, or other symbols, depending on your browser, operating system, and installed fonts. Even if you have ensured that your browser is interpreting the article as UTF-8 encoded and you have installed a font that supports a wide range of Unicode, such as Code2000, Arial Unicode MS, Lucida Sans Unicode or one of the free software Unicode fonts, you may still need to use a different browser, as browser capabilities vary in this regard.

[edit] Notes

  1. ^ Although this character is available in LaTeX, the Mediawiki TeX system doesn’t support this character.

[edit] External links

Posted by Carlos Guerrero on July 23, 2009

Dejando claro el proceso científico

Sacado de:

Teoría, Ley y Hechos en ciencia

Escrito por Kanijo en Ciencia General, Pensamiento Crí­tico

A menudo se escucha la ingenua crítica a la ciencia que dice “es sólo una teoría”, tratando de indicar que no está “demostrada” y que una vez “demostrada” se convertirá en una ley o un hecho”. Esto no es sorprendente debido a que tal noción es consistente con lo que a veces se nos enseña incorrectamente en las clases de ciencia general del instituto. La afirmación es, no obstante, completamente falsa y demuestra dos malentendidos comunes sobre la ciencia.

El primer malentendido es que la ciencia “demuestra” teorías. Las teorías nunca se “demuestran”, sólo se confirman mediante la observación; pero tal confirmación siempre es provisional. No importa cómo de bien o cuánto ha sido confirmada una teoría científica, siempre está sujeta a falsación o corrección por nuevas observaciones.

Considera la Teoría de la Mecánica Newtoniana. Durante 200 años, fue el estándar incontestable de “verdad” científica. Su éxito fue tan grande que algunos filósofos (Kant) afirmaron que no sólo era una teoría empíricamente confirmada, sino que era una “verdad a priori”. Ahora la conocemos mejor. A velocidades muy altas y distancias uy pequeñas, la Teoría de la Mecánica Newtoniana ha sido concluyentemente falsada. Ha sido reemplazada por la combinación de las Teorías de la Relatividad y la Mecánica Cuántica. Aún así, la Mecánica Newtoniana sigue siendo una excelente aproximación a estas teorías más correctas bajo lo que podríamos llamar condiciones normales – así pues, incluso cuando es falsada, una teoría científica puede seguir siendo útil.

El segundo malentendido es que una teoría es una ley o hecho “no demostrado”, o, a la luz de lo anteriormente comentado, una ley o hecho no confirmado. Las teorías científicas, leyes y hechos son tres tipos distintos de afirmaciones. Unos pocos ejemplos históricos ilustrarán las diferencias.

La Ley de Boyle (V = kT/P) relaciona tres hechos sobre un gas – Volumen, Temperatura, y Presión – y es familiar a todos los buceadores SCUBA. La Teoría Cinética de los Gases (Maxwell y Boltzmann) no sólo explica por qué la Ley de Boyle es aproximadamente cierta, sino también por qué y cuándo es demostrablemente falsa.

La Ley de las Proporciones Fijas afirma que los elementos químicos se combinan entre sí en proporciones enteras fijas por peso. Está basada en hechos como: el dióxido de carbono consta de 3 partes de carbono y 8 partes de oxígeno. La Teoría Atómica de la Materia (Dalton) intentó explicar por qué esto es cierto. La Teoría Mecánico Cuántica de la Estructura Atómica (Bohr, Heisenberg, Pauli, Pauling, et al) explica por qué esto es sólo aproximadamente cierto y cuándo es demostrablemente falso.

Las Leyes de Mendel afirman que las características heredadas se propagan a las siguientes generaciones en frecuencias expresables como ciertas proporciones enteras simples. Está basada en varios hechos que Mendel observó en plantas de guisantes. La Teoría de la Genética Molecular (Sutton, Morgan, Dobzhansky, McClintock, Watson, Crick, et al) no sólo explica por qué las Leyes de Mendel son aproximadamente ciertas, sino también por qué y cuándo spm demostrablemente falsas.

La Ley de Hubble afirma que la velocidad a la que una galaxia distante se aleja de la Tierra es directamente proporcional a su distancia a la Tierra. Está basada en ciertos hechos, incluyendo los desplazamientos al rojo en el análisis espectrográfico de la luz de cierto tipo de estrellas. La Teoría del Big Bang (Friedmann, LeMaitre, Gamov, et al), basada en la Teoría de la Relatividad General (Einstein), explica por qué la Ley de Hubble es aproximadamente cierta.

Antes de intentar hacer alguna definición implícita, vamos a volver sobre la falacia del instituto que afirma que: “Una hipótesis se convierte en teoría, y luego en ley, conforme aumenta el grado de demostración”. Una hipótesis es, efectivamente, una idea que requiere una mayor investigación. Cuando está suficientemente confirmada, una hipótesis puede convertirse en una teoría, una ley o un hecho. ¿”Un hecho”?, podríamos preguntarnos. ¿”Los hechos no son ciertas cosas que no requieren confirmación?” Este es otro malentendido común. Una breve historia de la Mecánica Newtoniana espero que ayude a ilustrar la naturaleza de los hechos científicos.

Galileo, podría decirse que el primer científico moderno, supuestamente dejó caer bolas desde la Torre Inclinada de Pisa. Probablemente no lo hizo, sino que Galileo experimentó con bolas rodando sobre planos inclinados y formuló tal vez la primera ley rigurosa de la cinética y el movimiento de caída libre (s = 16t2). Hizo distintas observaciones – una bola rodando por un plano inclinado 30 grados viaja X centímetros tras un segundo, 4X centímetros tras dos, 9X centímetros tras tres… – lo cual se convirtió en los hechos resumidos por sus leyes. Las observaciones precisas son cómo la ciencia reemplaza los hechos cotidianos, tales como “las cosas caen cuando las sueltas”, con hechos científicos. Pero algunos hechos cotidianos, tales como “los objetos pesados como las rocas caen más rápido que los ligeros como las plumas”, deben rechazarse cuando se examinan científicamente. Nota que también los hechos de Galileo dependen de una nueva idea (¿o teoría?) del tiempo como un parámetro regular y medible (Galileo se supone que usó su pulso).

Newton generalizó el trabajo de Galileo con su Teoría de la Mecánica (incluyendo la Ley F = ma) y su Ley de la Gravitación Universal (F = GMm/r2), ambas presentadas en el monumental trabajo, “Mathematical Principles of Natural Philosophy (Principios Matemáticos de la Filosofía Natural)”. Estas dejaron a las Leyes de Galileo como casos especiales aproximados. La Ley de la Gravitación de Newton estaba basada en una misteriosa fuerza atractiva entre dos masas cualesquiera. La fuerza es “misteriosa” debido a que de hecho lo era, al menos para Newton. Lo intentó, pero nunca tuvo éxito al formular una teoría de la gravedad, la cual podría explicar “por qué” su ley universal era cierta o “cómo” funcionaba. Usando su Ley de la Gravitación y su Teoría de la Mecánica, Newton fue capaz de explicar numerosos hechos (el movimiento de los planetas en el cielo, el movimiento de las mareas, etc.) y leyes (las de Kepler y Galileo).

Einstein desarrolló una teoría de la gravedad, conocida como Relatividad General, la cual explica “cómo” funciona la gravedad y “por qué” la Ley de Newton de la Gravitación Universal es aproximadamente cierta. La Teoría de la Relatividad (Especial y General) también predijo que la Teoría de la Mecánica de Newton estaría equivocada a energías muy altas – tales medidas de masa, tiempo y distancia variarían dependiendo de la velocidad del observador. Esta predicción se ha verificado en millones de observaciones experimentales en aceleradores de partículas. Pero bajo condiciones normales – las que nos encontramos en la vida cotidiana – la Mecánica Newtoniana es una excelente aproximación a estas teorías más correctas; y sigue siendo la base de la ciencia subyacente a la mayor parte de apicaciones de ingeniería.

Nota cómo los términos “hecho”, “ley” y “teoría” se usan en los ejemplos anteriores. Esto es consistente con la forma en que se usan y comprenden habitualmente en ciencia. Los hechos científicos, leyes y teorías son tres tipos distintos de afirmaciones. Uno a veces escucha la palabra “teoría” usada en lugar de la palabra “hipótesis” – como en “Tengo una teoría que…” – pero este es un abuso de la palabra, posiblemente motivado para evitar una palabra con un sonido pretencioso como “hipótesis”. Si se pide una definición formal de los términos, se podría dar:

Un hecho científico es una observación controlada, repetible y/o rigurosamente verificada.

Una ley científica es una afirmación de una regularidad observada entre hechos, a menudo expresable como una simple relación matemática.

Una teoría científica es un marco de trabajo conceptual integrado para razonar sobre una clase de fenómenos, los cuales son capaces de coordinar hechos existentes y leyes y a veces proporcionar predicciones de otros nuevos.

Las teorías a menudo explican “por qué” leyes y hechos son “ciertos” o “cómo funcionan”. En lo discutido anteriormente, nota que las teorías a menudo tienen múltiples nombres asociadas a ellas. Esto no es sorprendente debido a que las teorías son mucho más complejas. Observa que no sólo teorías y leyes, sino que también los hechos pueden ser falsados. El “hecho” anterior a Galileo de que los objetos pesados caen más rápido que los ligeros fue falsado. El “hecho” Newtoniano de que la masa, tiempo y distancia no varían con la velocidad fue falsado. El “hecho” químico de que sólo hay tres formas elementales de carbono – diamante, carbón y grafito – fue falsado.

Este último hecho falsado es otro ejemplo de interrelación entre hipótesis, hecho y teoría. Considera a los químicos de la Universidad Rice que formaron la “hipótesis” de que había otra forma elemental de carbono en la que los átomos se “curvaban” en una “pelota de fútbol” esférica. La Teoría de la Mecánica Cuántica no parecía decir que fuese imposible. Por lo que experimentaron, y descubrieron el Carbono-60, “BuckminsterFullereno”. No es una teoría o una ley; ¡es un Hecho! Aunque un hecho que sólo puede afirmarse y se comprenden los términos de la Teoría Atómica de la Materia. Esto no es algo poco común. Muchos hechos científicos están “cargados de teoría”, lo que significa que sólo pueden afirmarse en términos proporcionados por una teoría científica. Los hechos espectrográficos que apoyan la Ley de Hubbell están igualmente “cargados de teoría”.

En su uso normal, la palabra “evolución” a menudo se refiere tanto al hecho como a la teoría. La evolución es un hecho. Se ha observado directamente. La evolución es el cambio con el tiempo en la distribución de los alelos genéticos (”genes”) de una población. En este sentido, son poblaciones las que evolucionan y no los individuos. La evolución se ha observado en numerosas situaciones. Una población de una única especie – los individuos son capaces de aparearse y reproducirse – puede quedar separada y sujeta a un entorno distinto. Con el tiempo, la distribución de alelos en las dos poblaciones divergirá. En algún punto, los individuos de las dos poblaciones, no serán capaces de aparearse y reproducirse entre sí. Una única especie ha evolucionado en dos. La evolución es un hecho observado.

La Teoría de la Selección Natural de Darwin, aumentada por la Teoría de la Genética Molecular, explican el hecho de la evolución, así como los hechos del registro fósil y muchas otras cosas de la biología moderna. Observa la palabra “aumentó”. La posterior teoría no falsó la idea de Darwin de selección natural, sino que la enriqueció y extendió, proporcionando explicaciones a fenómenos que Darwin simplemente había observado. Esto también es algo común en el desarrollo de la ciencia. La Teorías Clásicas del Calor, Energía y Termodinámica aumentaron de forma similar la Teoría de la Mecánica Newtoniana sin falsarla.

La palabra “evolución” a veces se usa para referirse a la combinación de hechos de la evolución, las dos teorías mencionadas antes y las hipótesis de que toda la vida en la Tierra ha evolucionado a partir de un ancestro común. Aunque este último componente está etiquetado como hipótesis, está tan bien confirmado que casi podríamos llamarlo hecho. (Un apunte histórico interesante es que Darwin nunca usó la palabra “evolución” en su monumental trabajo, “The Origin of Species (El Origen de las Especies)”.) En este uso, la evolución es esencial a la biología moderna. Se dice que nada en la biología tiene sentido si no es a la luz de la evolución.

Posted by Carlos Guerrero on July 2, 2009

Tips to make web applications more scalable

Posted by Carlos Guerrero on July 1, 2009

Web mining

Alexa is a private company that studies the web access behaviour of the web users. They have published a list of the most popular sites:

http://www.alexa.com/topsites

Posted by Carlos Guerrero on July 1, 2009

Google helps us to make our webs faster

From: http://code.google.com/intl/es/speed/articles/

Tutorials

There are many ways to make websites run faster. In this section, you can discover performance best practices that real web professionals employ in their everyday work. These practices have improved the user experience for millions of users and we hope they are useful for other web developers.

CSS: Using every declaration just once

Using every CSS declaration only once is an effective way to reduce file size of style sheets. Because this is not a trivial optimization technique, you’ll also need to adjust your editing workflow.

How gzip compression works

Learn how gzip compression works in a transaction between a web server and a web browser. Then, take a look at what gzip actually compresses, so that you can leverage compression in your markup.

HTTP caching

Web pages can load much faster on repeated visits if the resources come from the cache. Learn about two groups of HTTP headers that make all the difference.

Improving website performance with Page Speed

You can often reduce the number of bytes of a web page — and speed up the page’s download — without changing its appearance or function. Discover three ways to reduce the size of web page content, using Page Speed.

Minimizing browser reflow

Improve browser rendering performance by minimizing operations that cause browser reflow.

Optimizing JavaScript code

JavaScript can make your web apps dynamic and interactive, but the client-side interpretation can introduce its own inefficiencies. Use these tips to optimize your JavaScript code.

Optimizing web graphics

Learn how to optimize your web illustrations, icons, and graphics for faster download on the web.

PHP performance tips

Speed up your existing PHP scripts with some simple changes recommended in these tips.

Prefetching resources

Downloading resources required for a page in advance makes them instantly available once requested, and can be an effective technique for reducing or even eliminating user-perceived network latency.

Properly including stylesheets and scripts

Combining external stylesheets and scripts, and correctly ordering them in the containing page, enables better parallelization of downloads and speeds up browser rendering time.

Reducing the file size of HTML documents

Omitting optional tags, leveraging HTML 5’s shorter DOCTYPE, and a few other techniques can help reduce the file size and load time of your HTML documents.

UI messaging and perceived latency

To the typical user, speed doesn’t only mean performance — it means the ability to use your website efficiently. Learn how to deliver effective UI messaging, a crucial part of keeping your users engaged and productive.

Tech Talks @ Google

In these Tech Talks, speakers from several organizations discuss speed-related issues. We hope that you find them useful to stay up to date with the latest developments across the entire spectrum of performance.

Cuzillion: Web Performance Exploration Tool

Steve Souders, member of the performance group at Google, has released a new open source tool called Cuzillion, which lets you explore performance issues with web pages. Steve sat down to show us how it works, and how he found an issue with Orkut.

Debugging and Testing the Web with Firebug

Explore web development and debugging strategies with Firebug. View an overview of Firebug’s new and improved features and how to use them. Finally, take a peek at FireUnit, a new Firebug extension by John Resig and Jan Odvarko, and its role in unit testing Firebug itself.

Don’t Make Me Click

Information overload is daunting. The best presentation of content is the one which requires the least number of clicks and choices: fewer clicks and choices means more people stay and use your site. Avoid interaction seduction, to create surprisingly delightful interfaces that are easier to learn and faster to use.

Drop-in JavaScript Performance

Browsers are continually being upgraded, to provide new features from the latest specifications. Take a look at modern JavaScript and DOM techniques that you can easily drop in to your applications for instant speed-ups.

Faster HTML and CSS: Layout Engine Internals for Web Developers

David Baron talks about HTML, CSS, and the DOM in Mozilla, from the DOM tree and cascading stylesheets through to displaying pixels on the screen. Learn what Mozilla-based browsers spend time doing when they’re displaying a Web page, and what work is redone when the page is changed by script.

High Performance Web Sites and YSlow

Yahoo!’s Exceptional Performance Team has identified 14 best practices for making web pages faster. These best practices have proven to reduce response times of Yahoo! properties by 25-50%.

JavaScript: The Good Parts

This talk exposes the goodness in JavaScript, an outstanding dynamic programming language. Within the language is an elegant subset that is vastly superior to the language as a whole, being more reliable, readable and maintainable.

Life’s Too Short — Write Fast Code

Steve Souders discusses loading external scripts without blocking other downloads and preventing page rendering. He also discusses several techniques for working around the problem of introducing undefined symbol errors if inlined code uses symbols from the external scripts.

Performance Tuning Best Practices for MySQL

Learn where to best focus your attention when tuning the performance of your applications and database servers, and how to effectively find the “low hanging fruit” on the tree of bottlenecks.

Speed Up Your JavaScript

< div id=”">As an interpreted language, JavaScript is filled with hidden performance issues that conspire to slow down your code and ruin the user experience. Learn exactly what is fast, what is slow, and what you can do to squeeze that last bit of performance out of your JavaScript code.

Posted by Carlos Guerrero on July 1, 2009

Usual math symbols

Extract from wikipedia: http://es.wikipedia.org/wiki/Anexo:Tabla_de_s%C3%ADmbolos_matem%C3%A1ticos

Genéricos

Símbolo Nombre se lee como Categoría

=

igualdad igual a todos
x = y significa: x y y son nombres diferentes que hacen referencia a un mismo objeto o ente.
1 + 2 = 6 − 3



:⇔

definición se define como todos
x := y o xy significa: x se define como otro nombre para y (notar, sin embargo, que ≡ puede también significar otras cosas, como congruencia)
P :⇔ Q significa: P se define como lógicamente equivalente a Q
cosh x := (1/2)(exp x + exp (−x)); A XOR B :⇔ (AB) ∧ ¬(AB)

Aritmética

Símbolo Nombre se lee como Categoría

+

adición más aritmética
4 + 6 = 10 significa que si a cuatro se le agrega 6, la suma, o resultado, es 10.
43 + 65 = 108; 2 + 7 = 9

substracción menos aritmética
9 − 4 = 5 significa que si 4 es restado de 9, el resultado será 5. El símbolo ‘menos’ también se utiliza para denotar que un número es negativo. Por ejemplo, 5 + (−3) = 2 significa que si ‘cinco’ y ‘menos tres’ son sumados, el resultado es ‘dos’.
87 − 36 = 51

×
·
*

multiplicación por aritmética
7 \times 6 = 42 significa que si se cuenta siete veces seis, el resultado será 42.
4 \times 6 = 24

÷
/

división entre aritmética
{42 \over 6} = 7 significa que si se hace seis pedazos uniformes de cuarenta y dos, cada pedazo será de tamaño siete.
24 / 6 = 4

sumatoria suma sobre … desde … hasta … de aritmética
k=1n ak significa: a1 + a2 + … + an
k=14 k² = 1² + 2² + 3² + 4² = 1 + 4 + 9 + 16 = 30

producto producto sobre… desde … hasta … de aritmética
k=1n ak significa: a1a2···an
k=14 (k + 2) = (1  + 2)(2 + 2)(3 + 2)(4 + 2) = 3 × 4 × 5 × 6 = 360

Lógica proposicional

Símbolo Nombre se lee como Categoría


implicación material o en un solo sentido implica; si .. entonces; por lo tanto lógica proposicional
AB significa: si A es verdadero entonces B es verdadero también; si B es verdadero entonces nada se dice sobre A.
→ puede significar lo mismo que ⇒, o puede ser usado para denotar funciones, como se indica más abajo.
x = 2  ⇒  x² = 4 es verdadera, pero 4 = x²   ⇒  x = 2 es, en general, falso (ya que x podría ser −2)
/ tal que ejemplo x/y se lee x tal que y


doble implicación si y sólo si; sii[1] lógica proposicional
AB significa: A es verdadera si B es verdadera y A es falsa si B es falsa.
x + 5 = y + 2  ⇔  x + 3 = y

conjunción lógica o intersección en una reja y lógica proposicional, teoría de rejas
la proposición AB es verdadera si A y B son ambas verdaderas; de otra manera es falsa.todo es verdadero de los valores
n < 4  ∧  n > 2  ⇔  n = 3 cuando n es un número natural

disyunción lógica o unión en una reja o lógica proposicional, teoría de rejas
la proposición AB es verdadera si A o B (o ambas) son verdaderas; si ambas son falsas, la proposición es falsa.
n ≥ 4  ∨  n ≤ 2  ⇔ n ≠ 3 cuando n es un número natural

¬
/

negación lógica no lógica proposicional
la proposición ¬A es verdadera si y sólo si A es falsa.
una barra colocada sobre otro operador es equivalente a un ¬ colocado a la izquierda.
¬(AB) ⇔ (¬A) ∨ (¬B); xS ⇔  ¬(xS)

Lógica de predicados

Símbolo Nombre se lee como Categoría

cuantificación universal para todos; para cualquier; para cada lógica de predicados
∀ x: P(x) significa: P(x) es verdadera para cualquier x
∀ nN: n² ≥ n

cuantificación existencial existe por lo menos un/os lógica de predicados
∃ x: P(x) significa: existe por lo menos un x tal que P(x) es verdadera.
∃ nN: n + 5 = 2n

∃ |

cuantificación existencial con marca de unicidad existe un/os único/s lógica de predicados
∃ |  x: P(x) significa: existe un único x tal que P(x) es verdadera.
∃ |  nN: n + 1 = 2

:

reluz tal que lógica de predicados
∃ x: P(x) significa: existe por lo menos un x tal que P(x) es verdadera.
∃ nN: n + 5 = 2n

Teoría de conjuntos

Símbolo Nombre se lee como Categoría

{ , }

delimitadores de conjunto el conjunto de … teoría de conjuntos
{a,b,c} significa: el conjunto consistente de a, b, y c
N = {0,1,2,…}

{ : }
{ | }

notación constructora de conjuntos el conjunto de los elementos … tales que … teoría de conjuntos
{x : P(x)} significa: el conjunto de todos los x para los cuales P(x) es verdadera. {x | P(x)} es lo mismo que {x : P(x)}.
{nN : n² < 20} = {0,1,2,3,4}


{}

conjunto vacío conjunto vacío teoría de conjuntos
{} significa: el conjunto que no tiene elementos; ∅ es la misma cosa.
{nN : 1 < n² < 4} = {}


pertenencia de conjuntos en; está en; es elemento de; es miembro de; pertenece a teoría de conjuntos
aS significa: a es elemento del conjunto S; aS significa: a no es elemento del conjunto S
(1/2)−1N; 2−1N


subconjunto es subconjunto de teoría de conjuntos
AB significa: cada elemento de A es también elemento de B
AB significa: AB pero AB
ABA; QR

unión conjunto-teorética la unión de … y …; unión teoría de conjuntos
AB significa: el conjunto que contiene todos los elementos de A y también todos aquellos de B, pero ningún otro.
AB ⇔  AB = B

intersección conjunto-teorética la intersección de … y …; intersección teoría de conjuntos
AB significa: el conjunto que contiene todos aquellos elementos que A y B tienen en común.
{xR : x² = 1} ∩ N = {1}

\

complemento conjunto-teorético menos; sin teoría de conjuntos
A \ B significa: el conjunto que contiene todos aquellos elementos de A que no se encuentran en B
{1,2,3,4} \ {3,4,5,6} = {1,2}

Funciones

Símbolo Nombre se lee como Categoría

( )
[ ]
{ }

aplicación de función; agrupamiento de funciones
para aplicación de función: f(x) significa: el valor de la función f sobre el elemento x
para agrupamiento: realizar primero las operaciones dentro del paréntesis.
Si f(x) := x², entonces f(3) = 3² = 9; (8/4)/2 = 2/2 = 1, pero 8/(4/2) = 8/2 = 4

f:XY

mapeo funcional de … a funciones
fXY significa: la función f mapea el conjunto X al conjunto Y
Considérese la función fZN definida por f(x) = x²

Números

Símbolo Nombre se lee como Categoría

N

números naturales N números
N significa: {0,1,2,3,…}, pero véase el artículo números naturales para una convención diferente.
{|a| : aZ} = N

Z

números enteros Z números
Z significa: {…,−3,−2,−1,0,1,2,3,4….}
{a : |a| ∈ N} = Z

Q

números racionales Q números
Q significa: {p/q : p, qZ, q ≠ 0}
3.14 ∈ Q; π ∉ Q

R

números reales R números
R significa: {limn→∞ an : ∀ nN: anQ, el límite existe}
π ∈ R; √(−1) ∉ R

C

números complejos C números
C significa: {a + bi : a, bR}
i = √(−1) ∈ C

raíz cuadrada la raíz cuadrada de; la principal raíz cuadrada de números reales
x significa: el número positivo cuyo cuadrado es x
√(x²) = |x|

infinito infinito números
∞ es un elemento de la línea extendida de números reales mayor que todos los números reales; ocurre frecuentemente en límites
limx→0 1/|x| = ∞

| |

valor absoluto valor absoluto de números
|x| significa: la distancia en la línea real (o en el plano complejo) entre x y zero
|a + bi | = √(a² + b²)

Órdenes parciales

Símbolo Nombre se lee como Categoría


comparación es menor o igual a, es mayor o igual a órdenes parciales
xy significa: x es menor o igual a y; xy significa: x es mayor o igual a y
x ≥ 1  ⇒  x² ≥ x

Geometría euclídea

Símbolo Nombre se lee como Categoría

π

pi pi Geometría euclideana
π significa: la razón de la circunferencia a su diámetro.
A = πr² es el área de un círculo con radio r

Combinatoria

Símbolo Nombre se lee como Categoría

!

factorial factorial combinatoria
n! es el producto 1×2×…×n
4! = 24

Análisis funcional

Símbolo Nombre se lee como Categoría

||   ||

norma norma de; longitud de análisis funcional
||x|| es la norma del elemento x de un espacio vectorial normado
||x+y|| ≤ ||x|| + ||y||

Cálculo

Símbolo Nombre se lee como Categoría

integración integral desde … hasta … de … con respecto a … cálculo
ab f(x) dx significa: el área, con signo, entre el eje-x y la gráfica de la función f entre x = a y x = b
0b x² dx = b³/3; ∫x² dx = x³/3

f

derivación derivada de f; f prima cálculo
f ‘(x) es la derivada de la función f en el punto x, esto es, la pendiente de la tangente en ese lugar.
Si f(x) = x², entonces f ‘(x) = 2x y f ‘ ’(x) = 2

gradiente del, nabla, gradiente de cálculo
f (x1, …, xn) es el vector de derivadas parciales (df / dx1, …, df / dxn)
Si f (x, y, z) = 3xy + z² entonces ∇f = (3y, 3x, 2z)

derivación parcial derivada parcial de cálculo
Con f (x1, …, xn), ∂f/∂xi es la derivada de f con respecto a xi, con todas las otras variables mantenidas constantes.
Si f(x, y) = x²y, entonces ∂f/∂x = 2xy

Ortogonalidad

Símbolo Nombre se lee como Categoría

perpendicular es perpendicular a ortogonalidad
xy significa: x es perpendicular a y; o, más generalmente, x es ortogonal a y.

Álgebra matricial

Símbolo Nombre se lee como Categoría

perpendicular traspuesta matrices y vectores
(a,b) con ⊥ al lado o a modo de potencia significa que el vector se debe colocar no de izquierda a derecha, sino de arriba a abajo. En numerosos trabajos de investigación se utiliza esta sintaxis al no poder representar en un documento vectores verticales.

Teoría de rejas

Símbolo Nombre se lee como Categoría

fondo el elemento fondo teoría de rejas
x = ⊥ significa: x es el elemento más pequeño.

Véase también

wikipedia: Cómo se edita una página contiene información acerca de cómo producir símbolos matemáticos en otros artículos.

Referencias

  1. sii es usado por los matemáticos como jerga ocasional, no está reconocido como un término estándar, por lo que tampoco suele aparecer en textos formales.

”Este artículo utiliza [[Tabla de símbolos matemáticos|símbolos matemáticos]]”

Enlaces externos