Advertising

Identifying an advertisement template including a placeholder; identifying rules for creating or identifying content for the placeholder; using the rules and the advertisement template, determining content for the placeholder; and, using the content, creating an advertisement.

TECHNICAL FIELD

This disclosure relates to advertising.

BACKGROUND

Advertising is one way to bring information to the attention of a target audience. Often, the information relates to a product or service that the advertiser seeks to sell or promote to the target audience. An advertiser may sometimes desire to change its advertisements over time, and in some instances rapidly, relative to the time it would take to create new advertisements. For example, in some markets, the price of a product may fluctuate daily, or faster. One way to advertise in such markets is to include only a price range, but not a specific price, in an advertisement.

Additionally, some advertisers may desire their advertisements to change at a time that is difficult or cumbersome to ascertain in advance. For example, a company may wish to offer the first 1,000 units of its inventory at a discounted sale price, and offer the rest of the inventory without the discount. An advertiser implementing this approach may want to advertise the discounted price until the first 1,000 units are sold, and then subsequently advertise the regular price.

Since it may not be clear a priori when the first 1,000 units will sell, one conventional strategy involves the advertiser manually monitoring the inventory, and then manually updating the advertising campaign when the first 1,000 units are sold. This strategy may be cumbersome, insofar as it calls for frequent monitoring of inventory. Another conventional strategy involves estimating when the first 1,000 units will sell, and scheduling a change of advertising based on the estimate. There may be a risk of inaccurate advertising if the estimate is inaccurate.

SUMMARY

In general, in an aspect, an advertisement template is identified that includes a placeholder. Rules are identified for creating or identifying content for the placeholder. The rules and the advertisement template are used to determine content for the placeholder, and the content is used to create an advertisement.

Implementations may have one or more of the following features. The advertisement template includes a creative template corresponding to a portion of the advertisement that is directly perceivable by a viewer. The advertisement template includes a keyword template corresponding to one or more keywords of the advertisement for use when comparing the advertisement to other content. Also identifying data, wherein the rules express a condition on the data. The advertisement describes a product, and the data is related to the product. The advertisement describes a product, the data relates to the supply of, or demand for, the product, and the rules express a condition on the data related to the supply of, or demand for, the product. The condition includes falling inside a specified numerical range. The data includes a calendar of events, and the condition includes the occurrence of an event on the calendar. The data includes data related to the context in which the advertisement is displayed, and the rules include a condition related to the context in which the advertisement is displayed. The advertisement describes a product, and the data is unrelated to the product. The data includes a price of a product described in the advertisement, and the content for the placeholder is determined by also using the price. The placeholder includes a first placeholder, and the rules include a rule for identifying content for a second placeholder based on the content for the first placeholder. The advertisement includes one or more keywords determined from the keyword template, each of the keywords having a match type. Each match type is selected from the group consisting of: specific, general, phrase, and negative. A first keyword has a first match type, and a second keyword has a second match type, the first keyword being distinct from the second keyword, and the first match type being distinct from the second match type. Also identifying a maximum advertising cost associated with each keyword. Also identifying a set of blacklisted terms, and determining whether the content includes a term in the set of blacklisted terms.

In general, in an aspect, a system includes a first data store including an advertisement template; a second data store including advertisement generation rules, a third data store including advertisement data; and a rules processing engine operable to create an advertisement based on the advertisement template, the advertisement generation rules, and the advertisement data.

Implementations may have one or more of the following features. The advertisement template includes a creative template corresponding to a portion of the advertisement that is directly perceivable by a viewer. The advertisement template includes a keyword template corresponding to one or more keywords of the advertisement for use when comparing the advertisement to other content. The system also includes a fourth data store including external data, and the rules processing engine is operable to create the advertisement based further on the external data. The external data includes product data relevant to a product described in the advertisement. The external data includes context data relevant to a context in which the advertisement is served.

Particular implementations may include one or more of the following advantages: advertisements can be automatically generated or changed based on conditions (e.g., conditions related to supply or demand of an advertised product, the occurrence or non-occurrence of a particular event, etc.) The conditions can be user defined and specified with a relatively great amount of flexibility.

Other aspects include other combinations of the features recited above and other features, expressed as methods, apparatus, systems, program products, and in other ways. Other features and advantages will be apparent from the description and from the claims.

DETAILED DESCRIPTION

In some implementations, an advertisement system is provided that allows, among other things, an advertiser to implement an advertising campaign by specifying (implicitly or explicitly) various advertisement criteria using, for example, templates. The templates in turn are used to automatically create advertisements in accordance with detected events and the advertisement criteria.

FIG. 1is a schematic representation of an example advertisement system10. By way of example, the advertisement system10includes tools for adjusting the selection of an advertisement in accordance with various criteria. The criteria and an advertisement (i.e., creative) definition can be instantiated using one or more templates. As shown, the advertisement system10includes one or more (e.g., several) advertisement templates12, one or more (e.g., several) advertisement generation rules14, and a rules processing engine16. The advertisement system10may be in data communication with one or more (e.g., several) data sources18. As described more fully below, the rules processing engine16uses the advertisement generation rules14and data from the data source18(including, e.g., product data30or context data32) to create an advertisement20from the advertisement template12.

In some implementations, the data source18includes one or more data streams in data communication with the rules processing engine16. For example, the data source18may include a product data source30that provides data related to supply, demand, pricing, or other information about the advertised product or service etc. In some implementations, the product data source30is populated with data using a feed from a manufacturer's or proprietor's computer system, a point of sale system, an inventory system, or the like.

Furthermore, the data source18may also include, or be associated with, a context data source32that provides data related to the context in which the product or service can be used, or the context in which the advertisement20appears before the target audience. In some implementations, the context data source32can include any type of information, for example, a weather forecast in one or more geographic locations, information from one or more securities markets, one or more calendars of events, results of one or more political or consumer polls, view rates of particular media (e.g. electronic media), etc. In some implementations, the context data source32can be populated by one or more data feeds from a system used to provide the desired data.

The advertisement20may be stored on one or more (e.g., several) advertisement repositories21, along with other advertisements20. In some implementations, the advertisement repository21can be in data communication with one or more (e.g., several) advertisement servers (not shown) that serve the advertisements20to clients. Advertisement servers can serve advertisements20in a variety of contexts. For example, an advertisement server can serve advertisements20based on: a client's submitted search query to a search engine, the content of a web page being served to the client, etc.

There is no requirement that the advertisement template12, the advertisement generation rules14, or the rules processing engine16all reside on the same data storage medium, on the same computer system, or same electrical device or in the same geographic location. For example, the advertisement template12may reside on an advertiser's computer network, the advertisement generation rules may reside on a manufacturer's computer network, and the rules processing engine may be distributed over several computers in an advertising network. The advertisement template12may include several distinct files that are stored on several distinct storage media. Moreover, various parties may access the advertisement template12, the advertisement generation rules14, or the rules processing engine16remotely, regardless of where the advertisement template12, the advertisement generation rules14, or the rules processing engine16reside.

FIG. 2Ais a schematic depiction of an exemplary advertisement template12. The advertisement template12includes a creative template22and a keyword template24. In some implementations, each template22-24may include a fixed component26and may include one or more placeholders28. In some examples, one or both templates22,24do not include a fixed component26or any placeholders28. Content need not be specified for each placeholder28in order to create an advertisement20. That is, content need not be explicitly defined by the user at the time of creation of the templates22-24. Content can be dynamically specified in accordance with context information, events or other data at a time for display.

The creative template22is used to form the creative content34(seeFIG. 2C), which is the portion of the advertisement20that is directly perceived by the target audience. In general, the creative template22can utilize any medium of expression. For example, the creative template22can use textual, graphic, audio, video, or tactile, or olfactory content, or any combination of these in its fixed component26or its placeholders28.

The keyword template24is used to generate keywords35(seeFIG. 2C) that describe, relate to, are otherwise to be associated with the advertisement20. In some implementations, the key words or phrases can be used to place the advertisement20in other media, or determine whether to present the advertisement20to a member of the target audience. For example, if one of the key words or phrases is similar to other words or phrases in another document such as a web page, then the advertisement20may be placed in the other document.

Optionally, a match type (e.g., “general,” “specific,” “exact,” or “negative”) may also be used in the keyword template24. The match type can be used, for example, to determine criteria by which to serve the advertisement20.

In one implementation, a word or phrase designated as a “specific” match may be used to indicate that the advertisement20may be served only in response to that precise word or phrase appearing in a document or query. Thus, if the keyword “tennis shoes” is designated as having a specific match type, then the advertisement20will not be displayed to a user who supplies the query “shoes for tennis,” but will be displayed to a user who supplies the query “discount tennis shoes,” based on this keyword35.

In one implementation, a word or phrase designated as an “exact” match may be used to indicate that the advertisement20may be served only when that precise word or phrase—and no other words or phrases—appears in the document or query. For example, if the keyword “tennis shoes” is designated as having an exact match type, then the advertisement20will not be displayed to a user who supplies the query “discount tennis shoes.”

In one implementation, a negative keyword is a word or phrase to which the advertisement20is meant to be not responsive (i.e., not served). For example, if “jury duty” is a negative keyword35associated with an advertisement20, then the advertisement20will not be served in response to queries or documents containing the phrase “jury duty.”

FIG. 2Bis a schematic depiction of an exemplary advertisement template12. The fixed component26of the creative template22includes text inviting the reader to book a hotel visit. The placeholders28in the creative template include a space for a heading, a space for a city, and a space for a price. The fixed component26of the keyword template24includes the phrase “hotel in.” The placeholders28of the keyword template24include a space after “hotel in” for a city, and a separate space for the city. The phrase “hotel in [city]” is designated a specific match, while “[city]” alone is designated as a general match.

FIGS. 2C and 2Dshow exemplary advertisements20that have been created using the exemplary advertisement template12ofFIG. 2B. Each advertisement20includes creative content34and keywords35. The creative content34is obtained from the creative template22by filling in placeholders28. Similarly, the keywords35are obtained from the keyword template24by filling in placeholders28.

Each advertisement20inFIGS. 2C and 2Dlists a different city (San Francisco/San Diego) and a different price ($300/$250). Note that the advertisement20ofFIG. 2Ccontains a heading (“Special Offer for Patent Enthusiasts!”), where the advertisement20ofFIG. 2Dcontains no heading.

Referring back toFIG. 1, the advertisement generation rules14include rules indicating how content for the placeholders28in an advertisement template12is to be determined. One set of advertisement generation rules14can be used to generate content for placeholders28in one or more advertisement templates12. Conversely, one or more sets of advertisement generation rules14can be used to generate content for placeholders28in a single advertisement template12. The advertisement generation rules14may include any algorithm or logically consistent set of instructions for unambiguously determining an advertisement template12and content for its placeholders28. In some implementations, the advertisement generation rules14include a series of absolute statements (e.g., “do . . . ”) or conditional statements (e.g., “if . . . , then do . . . ”) that refer to certain placeholders28and information related to or retrieved from the data source18. The advertisement generation rules14may also include recursive rules. For example, the rules14may be used to determine content of one placeholder28based on the content of another placeholder28. In some implementations, the rules14are expressed in a programming language, for example C, C++, Java, etc. In some implementations, conditional statements used in the rules14include whether the value of a specified variable falls within a numerical range, in which the specified variable corresponds to a datum in the data source18. For example, the datum in the data source18can relate to the supply of, or demand for, a product described in the advertisement.

In some implementations, the advertisement generation rules14refer to data related to a product described in the advertisement20. For example, suppose an advertiser has created an advertisement template12with a single placeholder28for the price of a particular item. If the advertiser wishes to advertise a sale price until 1,000 units are sold, the advertisement generation rules14may include a conditional statement equivalent to “if the number of units sold is less than or equal to 1,000, use the sale price. Otherwise, use the regular price.”

In some implementations, the advertisement generation rules14refer to or evaluate data other than data related to the product/service described in the advertisement20. For example, in an advertising template12for a California hotel chain in which one placeholder28is for a city (e.g., the exemplary template ofFIG. 2B), the advertisement generation rules14may include an instruction that evaluates the weather (e.g., an instruction equivalent to the statement: “if tomorrow's expected precipitation in San Francisco is greater than 3 inches, then use ‘San Diego’ for the ‘city’ placeholder. Otherwise, use ‘San Francisco.’”)

The possible content for placeholders28can be specified within the advertising template12itself, or can be specified in another source. In some implementations, the possible content for placeholders28is stored on a data repository (not shown) with which the advertisement system10is in data communication. For instance, if possible content for a placeholder28includes a list of cities (San Diego, San Francisco, etc.), then the list of cities may be stored on the data repository, and retrieved by the advertisement system10based on the advertisement generation rules14and the particular values of the data (e.g., expected precipitation) used in evaluating the data.

The advertisement generation rules14can be specified by an advertiser or another party (e.g., a manufacturer, a party acting on behalf of an advertiser or manufacturer, etc.) or the system. In some implementations, the advertisement generation rules14are written to implement a marketing strategy of the advertiser.

The data source18provides data that may be relevant in applying the advertisement generation rules14to the advertisement template12. For example, if one were to use the advertisement generation rules14described in the previous paragraph, the data source18may be used to store a local weather forecast for San Francisco. By way of further example, if one were to use the advertisement generation rules14that refer to the inventory of a product, the data source18may be used to store the product's current inventory.

In general, the data source18can include or access any type of information. This allows the advertiser a great deal of flexibility in designing an advertising campaign on the advertisement system10. An advertiser can therefore implement an advertising campaign that produces different advertisements20, based on any number of relevant pieces of information, for example: the outcome of a particular sports game, the winner of a particular reality television show, the number of patents issued in a given time frame, the headline of that day's Wall Street Journal, etc.

FIG. 3is a schematic view of an exemplary advertisement creation engine16. The exemplary advertisement creation engine16includes a rules processing tool36, a scheduling tool38, and a synchronization tool40. In one implementation, each of these tools are in data communication with each other and the other components12-18of the advertisement system10, either directly or indirectly via another component12-18.

The rules processing tool36is operable to use the advertisement generation rules14to provide content for placeholders28in the advertisement template12. In some implementations, this involves executing the advertisement generation rules14, using the data source18to evaluate whether conditional instructions should be carried out, and creating, locating or identifying content for the placeholders28accordingly.

The rules processing tool36is also operable to combine the advertisement template12defined content with the placeholder content in order to form the advertisement20. In some implementations, the advertisement20is expressed electronically, for example in HyperText Markup Language (HTML), Extensible Markup Language (XML), Really Simple Syndication/Rich Site Summary (RSS), etc.

The scheduling tool38is operable to cause the rules processing tool36to process the advertisement generation rules14. In some implementations, the scheduling tool38causes the rules processing tool36to operate at a pre-determined time or periodically operate with a pre-determined period, for example, once per day. In some implementations, the scheduling tool38causes the rules processing tool36to operate when a pre-determined event occurs or a pre-determined condition exists. For example, the scheduling tool38can be used to manually cause the rules processing tool36to operate based on input from a user. Additionally, for example, the scheduling tool38can cause the rules processing tool36to operate based on the supply or demand of a product meeting a pre-defined criterion. In some implementations, the supply or demand information may be determined from the data source18.

In some implementations, the scheduling tool38causes the rules processing tool36to operate based on a change in any of the advertisement template12, the advertisement generation rules14, or pre-defined data in the data source18. For example, if the advertisement template12is updated to reflect a new advertising campaign, the scheduling tool38can cause the rules processing tool36to generate new advertisements20.

The synchronization tool40is operable to organize advertisements20generated by the advertisement system10. Organizing may include, for example, deleting old advertisements20or replacing old advertisements20with newly-generated advertisements20. In some implementations, advertisements20are stored in an advertisement repository21in data communication with the synchronization tool40. In some implementations, the data communication between the synchronization tool40and the advertisement repository21can be implemented using any application program interface (“API”).

FIG. 4is a flowchart for creating an advertisement. To create an advertisement, an advertisement template is identified (step42). In some implementations, the advertisement template12is identified by the rules processing engine16. For example, the advertisement template12can be identified in response to input from a user, the occurrence of a pre-determined event, the existence of a pre-determined condition in the data source18, etc.

Advertisement creation rules are identified (step44). In some implementations, the advertisement generation rules14are identified by the rules processing engine16. For example, the advertisement generation rules14can be identified in response to input from a user, the occurrence of a pre-determined event, the existence of a pre-determined condition in the data source18, etc.

Data to be evaluated in accordance with the advertisement creation rules is also identified (step46). In some implementations, this data is identified by the rules processing engine16from the data source18. For example, the data can be identified based on a variable used in the advertisement generation rules14that corresponds to data in the data source18.

The advertisement creation rules are evaluated using the identified data to identify content (step48). In some implementations the rules processing engine16applies the advertisement generation rules14using data from the data source18. For example, applying the advertisement creation rules can include parsing the advertisement generation rules14and determining the values of variables used in the rules.

Once the content is identified in step48, the content is applied to the template (step49). For example, the content can be inserted into placeholders28contained in the advertisement template12. In some implementations, the rules processing engine16inserts the content into the placeholders28of an advertisement template12.

FIGS. 5A-Fshow exemplary screenshots for a user using the advertisement system10. The user may include an advertiser using the advertisement system10to implement an advertising campaign. The user is presented with menus50allowing him/her to navigate between menus for: viewing and altering user settings, viewing or altering creative templates, viewing or altering keyword templates, adjusting static cost-per-click (“CPC”) settings, viewing or altering blacklisted terms, and viewing or altering negative keywords.

In the “settings” menu shown inFIG. 5A, the user can specify a budget52for a particular time period, e.g. a daily budget, for the advertising campaign. In some implementations, the advertisement system10monitors the total cost-to-date of implementing the advertising campaign, and will not generate or serve an advertisement20if doing so would exceed the user's budget52.

In some implementations, the user can specify a uniform resource locator (URL)54. This URL54will accompany advertisements20generated by the advertisement system10. For example, the URL54may be incorporated into the creative content34of the advertisement20, or may be displayed externally from the advertisement20, in some pre-determined relative position (e.g., below).

In some implementations, the user can specify an end date56of the advertisement campaign. The advertisement system10no longer generates or displays advertisements20after the end date56. The end date may be inputted using a calendar tool58.

In some implementations, the user can specify a default maximum cost-per-click for the advertising campaign in a default maximum cost-per-click field60. In interactive media (e.g., web pages), one way an advertiser can pay for advertisements20is on a “per click” basis—that is, the advertiser is charged each time an advertisement20is clicked on (i.e., selected). In some implementations, the cost-per-click of an advertisement20depends on the keyword35to which the advertisement20is responsive. A maximum cost-per-click may be specified individually for each of the keywords35. In some implementations, if the advertiser specifies a default maximum cost-per-click for an advertising campaign20, each keyword35of each advertisement20in the advertising campaign is treated as having this maximum cost-per-click, unless otherwise specified by the user.

In some implementations, the user can specify a match type, for controlling how often the advertisement is served (e.g., only on exact matches, etc.) The user can specify match types including “broad,” “phrase,” or “exact” (as described above) using the radio buttons62.

In some implementations, the user can specify a default campaign status using default campaign status radio buttons64. Default campaign statuses may include “active” or “paused.” An active campaign status results in advertisements20being generated by the advertisement system10. A paused campaign status results in no advertisements20being served by the advertisement system10. The default campaign status is the status with which newly-created advertisement campaigns are treated.

In some implementations, the user can specify various networks in which the advertisement system10will display advertisements20. For example, the user can decide whether to display advertisements20in a content network or a search network by operating content network radio buttons66and search network radio buttons68, respectively. Advertisements20are displayed in the content network based on the similarity of content (e.g., a news article) to one or more keywords35associated with a respective advertisement. Advertisements20are displayed in the search network based on the similarity of a search (e.g., a search query) provided by a user to keywords associated with the respective advertisements.

InFIG. 5B, the “creative templates” menu is shown. In some implementations, a user can add a creative template22by clicking on an “add new creative” button70. In some implementations, a user may input the fixed component26in a creative template22in an input field, and delimit placeholders28using square brackets (i.e., [and ]).

InFIG. 5C, the “keyword templates” menu is shown. In some implementations, a user can add a keyword template24by clicking on an “add new keyword” button72. In some implementations, a user may input the fixed component26in a keyword template24in an input field, and delimit placeholders similarly toFIG. 5B.

InFIG. 5D, the “static cost-per-click” menu is shown. In the static cost-per-click menu, a user may specify the maximum cost-per-click74the user is willing to pay for advertisements20served in response to the particular key words76, as opposed to the default cost-per-click. In some implementations, the user may specify keywords76and corresponding cost-per-click maxima74from a pre-existing file, using an “upload” button78. In some implementations, the user may specify keywords76and corresponding cost-per-click maxima74using a text entry field.

For the advertising campaign shown inFIG. 5D, the user is willing to pay $0.70 per click on advertisements20served in response to keywords describing five United States cities. The user is also willing to pay $.10per click on advertisements20served in response to the keywords “a hotel in the middle of nowhere.” The ability to specify individual cost-per-click constraints helps an advertiser efficiently implement the advertising campaign.

In some implementations, an advertiser may create a cost-per-click differential between different keywords based on the advertiser's strategy. For example, inFIG. 5B, the advertiser's strategy may be based on the hypothesis that advertisements20responsive to “a hotel in the middle of nowhere” will generate one-seventh the business that the other advertisements20will generate.

InFIG. 5E, the “blacklisted terms” menu is shown. In some implementations, a user can associate a blacklisted term81with an advertisement template12using the “add a new blacklisted term” button82.

A blacklisted term81is a term that will be prevented from appearing in an advertisement20. For example, if the advertiser, publisher, or other party regards certain terms as scandalous, profane, or otherwise does not want those terms appearing in the advertisement20for any reason, those terms may be included among the blacklisted terms. InFIG. 5E, for example, four blacklisted terms81are shown.

InFIG. 5F, the “negative keywords” menu is shown. In some implementations, a user can add a negative keyword in the keyword template24by clicking on an “add new negative keyword” button84. In some implementations, a user may input the fixed component26in a keyword template24in an input field, and delimit placeholders28using square brackets, similarly toFIG. 5B.

An advertiser may wish to include negative keywords in an advertisement to streamline the advertising campaign. For example, inFIG. 5B, the “reviews for MegaResort” negative keyword can be used to prevent advertisements for MegaResort from appearing on pages containing reviews for MegaResort. An advertiser may consider a review to be equivalent to an advertisement, and therefore may consider advertising on such pages as inefficient.

In another example, an advertiser may wish to exclude a certain audience from its target audience. InFIG. 5F, using the “Texas hotel room thrashers club annual meeting” negative keyword may be used to prevent advertisements for hotel rooms from being displayed to a particular group.

In yet another example, negative keywords may also be used to control the context in which the advertisement20appears. For example, if an advertiser does not want advertisements20to appear in contexts involving particular competitors, negative keywords may be used to help prevent this from occurring. InFIG. 5F, for example, the negative keyword “hotel rooms at MegaCompetitor” can prevent advertisements20from being served in the context of MegaCompetitor.

Similarly, if an advertiser is promoting several products or services associated with a common phrase, negative keywords can be used to help the efficiency of the advertising campaign. For example, if the hotel MegaResort also manufactures a line of sunglasses, then including “MegaResort brand sunglasses” among the negative keywords can help prevent MegaResort hotel advertisements from being served in the context of MegaResort sunglasses, if desired by the advertiser.

FIG. 6is a block diagram of a computing device86that may be used to implement the advertisement system10, as either a client or as a server or plurality of servers. Computing device86is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document. Though reference is made to a computing device, the advertisement system described can be implemented in whole or part on other electronic devices that are not classically computers (e.g., cellular telephones, set top boxes, and other electronic devices).

Computing device86includes a processor88, memory90, a storage device92, a high-speed interface94connecting to memory90and high-speed expansion ports96, and a low speed interface98connecting to low speed bus100and storage device92. Each of the components88,90,92,94,96,98, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor88can process instructions for execution within the computing device86, including but not limited to instructions stored in the memory90or on the storage device92to display graphical information for a GUI on an external input/output device, such as display102coupled to high-speed interface94. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices86may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

The memory90stores information within the computing device86. In one implementation, the memory90is a computer-readable medium. In one implementation, the memory90is a volatile memory unit or units. In another implementation, the memory90is a non-volatile memory unit or units.

The storage device92is capable of providing mass storage for the computing device86. In one implementation, the storage device92is a computer-readable medium. In various different implementations, the storage device92may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including but not limited to devices in a storage area network or other configurations. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory90, the storage device92, memory on processor88, or a propagated signal.

The high-speed interface94manages bandwidth-intensive operations for the computing device86, while the low speed interface98manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In one implementation, the high-speed interface94is coupled to memory90, display102(e.g., through a graphics processor or accelerator), and to high-speed expansion ports96, which may accept various expansion cards (not shown). In the implementation, low speed interface98is coupled to storage device92and low speed bus100. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.

The computing device86may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server130, or multiple times in a group of such servers. It may also be implemented as part of a rack server system106. In addition, it may be implemented in a personal computer such as a laptop computer108.

Various implementations of the advertisement system10can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including but not limited to at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.

These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including but not limited to a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.

To provide for interaction with a user, the advertisement system10can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including but not limited to acoustic, speech, or tactile input.