It has become common for location-based services to be utilized for marketing purposes. Specifically, geographic fences (geo-fences) are utilized in order to send messages to smartphone users who enter a defined geographic area. Conventional techniques for managing geo-fences can be cumbersome and/or inefficient. A preconfigured geo-fence may operate on a predetermined schedule. Often, changes to a geo-fence utilized by an application require a software update to the application. If scheduling changes occur, and the update is not applied to the application, the pre-initialized geo-fence may lead to disseminating inaccurate information. Such inaccuracy may lead to irritability and frustration for smartphone users and a loss of revenue for the users of the geo-fence. Conventional techniques can make it cumbersome for geo-fences to be used as a marketing tool.
Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
Techniques described herein are directed to dynamically managing geo-fences. Examples of a geo-fence, as the term is used herein, include a virtual geographic boundary (e.g., a geographical boundary defined independent of reference to geographic features). An interior area of a geo-fence may be any suitable size and any suitable shape. In at least one example, a system configured to dynamically manage one or more geo-fences may maintain, or otherwise obtain, inventory information and/or fulfillment information related to one or more items offered for consumption on the electronic marketplace. An electronic marketplace, as used herein, is intended to refer to a computer-facilitated market for participants (e.g., buyers and sellers) to conduct transactions including commercial and/or financial transactions. An “item” is intended to refer to a product, a service, a sellable unit, or anything else that may be managed or otherwise physically or electronically stored as inventory.
In a non-limiting example, a merchant may offer a set of items at a mobile location (e.g., a vehicle equipped with an inventory of items) that is to be stationed at various locations, at various times throughout a day. Upon arriving at a particular location (e.g., a street corner), or at another suitable time, location information (e.g., geo-fence parameters) for the vehicle may be communicated to a dynamic geo-fence management engine. Alternately, the scheduled locations of the truck may be identified ahead of time, and shared with the geo-fence management engine. Upon receipt of the location information, the dynamic geo-fence management may identify a number of users (e.g., users submitted opt-in information indicating an interest is such a vehicle). The identity of the users, as well as the location information, may be formatted according to a push notification protocol and communicated to a push notification service for dissemination to the number of the users. Examples of push notifications may include notifications that are formatted according to an Apple® Push Notification Service protocol, a Mozilla® SimplePush protocol, a Google® Cloud Messaging protocol, or the like. The push notification service may provide the location information to the identified users via push notification. A user device, upon receipt of the push notification e.g., a silent or non-silent push notification), may extract and store various geo-fence parameters in local memory. The user device may track its location using, for example, wireless network identification information and/or cellular triangulation data. Upon entering an area corresponding to the geo-fence parameters (e.g., passing a geographic boundary defined by the geo-fence parameters), an application operating on the user device may be notified. The application may determine if it is appropriate to show information related to the push notification on the user device. The application may determine that the user device has not been provided a notification related to the area corresponding to the geo-fence parameters. Additionally, or alternatively, the application may submit information to the dynamic geo-fence management engine, requesting confirmation as to whether or not the application should provide the notification on the user device. In either case, upon determining that the notification should be provided, the application may provide a local notification on the user device that includes information related to the geo-fence parameters (e.g., text such as “Our mobile vehicle is at 5th and Madison, come take a look at our great deals!”). Thus, a geo-fence may be provided by utilizing cellular and wireless components (e.g., antennas) already in use without negatively impacting the battery life of the user device.
As a specific example, the system may enable a user to become aware of a food truck. Food trucks may offer meals throughout a city on various days and at various times. Traditionally, the user would need to visit a webpage offered by the food truck provider in order to determine when the food truck will next be in his neighborhood. Alternatively, the user may be aware of the truck by physically walking by the truck, or through past experience of purchasing meals on a particular day and time. In at least one example, the user may indicate his interest in the food truck and/or food merchant during a registration process. Although the user has not accessed an application related to the food truck, the dynamic geo-fence management engine may utilize a dynamic geo-fence in a similar manner as described above to alert the user of food truck's location. It should be understood that although a food truck is used for illustrative purposes, any mobile location, offering any suitable product or service, may be utilized.
Network 108, and any network described herein, can include any appropriate network, including an intranet, the Internet, a cellular network, a local area network, a wide area network, or any other such network or combination thereof. The communication may be transmitted electronically or physically communicated over, for example, a telephone (e.g., using an automated service). The communication may include, but is not limited to, initialization information such as a geo-fence identifier, a topic category, a location, a message, an active time or time window, a specification of a geographic boundary (e.g., a reference point such as a. latitude, longitude pair and a boundary shape specification such as a radius specifying a circle around the reference point or a set of additional latitude, longitude pairs specifying additional vertices of a polygon), an alert reset indicator, or the like. A geo-fence identifier, for purposes of this disclosure is intended to refer to a unique identifier that corresponds to a particular geo-fence. A topic category may correspond to a merchant, a service, an item, a user, a geographical area, or the like. A location may reference an intended center point of an eventual geo-fence. A message may include text and/or images, for example, that may be eventually delivered to a user device. An active time may indicate a start time and end time or, alternatively, a period of time (e.g., 120 minutes). A radius may correspond to a radial distance from the center point to be used to configure the goo-fence.
Continuing on with the example, upon communicating the arrival of truck 104, dynamic geo-fence management engine 102 may determine an interested user (e.g., user 10). By way of example, the user 110 may have previously indicated (e.g., via a network page managed by the provider of the electronic marketplace) an interest in the truck 104. The dynamic goo-fence management engine 102, having identified the user 110 as an interested user, may utilize a push notification service protocol to transmit the initialization information to the user's electronic device (e.g., a smartphone 112).
Upon receipt of the initialization information, an application executing on the smartphone 112 may store the initialization information in local memory. Storage of such initialization information may case the application to recognize a geographic boundary (e.g., a geo-fence 114). The application executing on the hone 112 may ascertain location information of the smartphone 112 by utilizing, for example, global positioning information, cellular triangulation information, and/or wireless network information. In at least one example, the user 110 may carry smartphone 112 while she walks down a street. Initially, the user 110 may be in the general vicinity of location 116, a point outside of the geo-fence 114. However, the user 110 may wander to a point inside the goo-fence 114 (e.g., location 118). Upon determining that the user 110 has entered the gem-fence 114, the application operating on the smartphone 112 may generate a notification (e.g., a local push notification) to be displayed to the user as depicted at 120. Though location 118 is used as an example, the user 110 may trigger a notification on the smartphone 112 by availing himself to any point inside the geo-fence 114 (depicted by area 122).
In some examples, the networks 208 may include any one or a combination of many different types of networks, such as cable networks, the Internet, wireless networks, cellular networks, and other private and/or public networks. While the illustrated example represents the users 202 accessing the application 206 over the networks 208, the described techniques may equally apply in instances where the users 202 interact with the service provider computers 210 via the one or more user computing devices 204 over a landline phone, via a kiosk, or in any other. suitable manner. It should be appreciated that the described techniques may apply in other client/server arrangements e.g., set-top boxes, etc.), as well as in non-client/server arrangements (e.g., locally stored applications, etc.).
As described briefly above, the application 206 may allow the users 202 to interact with the service provider computers 210 such as to access information associated with selling items via an electronic marketplace. The one or more service provider computers 210, perhaps arranged in a cluster of servers or as a server farm, may host the application 206 and/or cloud-based software services. Other server architectures may also be used to host the application 206 and/or cloud-based software services. The application 206 may be capable of handling requests from many users 202 and serving, in response, various user interfaces that can be rendered at the user computing devices 204 such as, but not limited to, perceived latency or the like. The application 206 can present any suitable type of website that supports user interaction, including search engine sites. As discussed above, the described techniques can similarly he implemented outside of the application 206, such as with other applications running on the user computing devices 204.
The user computing devices 204 (e.g., the smartphone 112 of
In one illustrative configuration, the user computing devices 204 may include at least one memory 212 and one or more processing units (or processor(s)) 214. The processor(s) 214 may be implemented as appropriate in hardware, computer-executable instructions, firmware, or combinations thereof Computer-executable instruction or firmware implementations of the processor(s) 214 may include computer-executable or machine-executable instructions written in any suitable programming language to perform the various functions described.
The memory 212 may store program instructions that are loadable and executable on the processor(s) 214, as well as data generated during the execution of these programs. Depending on the configuration and type of user computing device, the memory 212 may be volatile (such as random access memory (RAM)) and/or non-volatile (such as read-only memory (ROM), flash memory, etc.). The user computing devices 204 may also include additional removable storage and/or non-removable storage including, but not limited to, magnetic storage, optical disks, and/or tape storage. The disk drives and their associated computer-readable media. may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing devices. In some implementations, the memory 212 may include multiple different types of memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), or ROM.
Turning to the contents of the memory 212 in more detail, the memory 212 may include an operating system and one or more application programs, modules, or services for implementing the features disclosed herein including at least the perceived latency, such as via the application 206 or dedicated applications (e.g., smart phone applications, tablet applications, etc.). The application 206 may be configured to receive, store, and/or display a network page or other interface for interacting with the service provider computers 210. Additionally, the memory 212 may store access credentials and/or other user information such as, but not limited to, user IDs, passwords, and/or other user information. In some examples, the user inthrmation may include information for authenticating an account access request such as, but not limited to, a device ID, a cookie, an IP address, a location, or the like. Additionally, the memory 212 may store a set of parameters associated with a geo-fence (e.g., the geo-fence 124 of
In some aspects, the service provider computers 210 may also be any suitable type of computing devices such as, but not limited to, a mobile phone, a smart phone, a personal digital assistant (PDA), a laptop computer, a desktop computer, a server computer, a thin-client device, a tablet PC, etc. Additionally, it should be noted that in some embodiments, the service provider computers are executed by one more virtual machines implemented in a hosted computing environment. The hosted computing environment may include one or more rapidly provisioned and released computing resources, which computing resources may include computing, networking and/or storage devices. A hosted computing environment may also be referred to as a cloud-computing environment. In some examples, the service provider computers 210 may be in communication with the user computing devices 204 and/or other service providers via the networks 208 or via other network connections. The service provider computers 210 may include one or more servers, perhaps arranged in a cluster, as a server farm, or as individual servers not associated with one another. These servers may be configured to implement the content performance management described herein as part of an integrated, distributed computing environment.
In one illustrative configuration, the service provider computers 210 may include at least one memory 216 and one or more processing units (or processor(s)) 218. The processor(s) 218 may be implemented as appropriate in hardware, computer-executable instructions, firmware, or combinations thereof. Computer-executable instruction or firmware implementations of the processor(s) 218 may include computer-executable or machine-executable instructions written in any suitable programming language to perform the various functions described.
The memory 216 may store program instructions that are loadable and executable on the processor(s) 218, as well as data generated during the execution of these programs. Depending on the configuration and type of service provider computers 210, the memory 216 may be volatile (such as RAM) and/or non-volatile (such as ROM, flash memory, etc.). The service provider computers 210 or servers may also include additional storage 220, which may include removable storage and/or non-removable storage. The additional storage 220 may include, but is not limited to, magnetic storage, optical disks and/or tape storage. The disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing devices. In some implementations, the memory 216 may include multiple different types of memory, such as SRAM, DRAM, or ROM.
The memory 216, the additional storage 220, both removable and non-removable, are all examples of computer-readable storage media. For example, computer-readable storage media may include volatile or non-volatile, removable or non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. The memory 216 and the additional storage 220 are all examples of computer storage media. Additional types of computer storage media that may be present in the service provider computers 210 may include, but are not limited to, PRAM, SRAM, DRAM, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the service provider computers 210. Combinations of any of the above should also be included within the scope of computer-readable media.
Alternatively, computer-readable communication media may include computer-readable instructions, program modules, or other data transmitted within a data signal, such as a carrier wave, or other transmission. However, as used herein, computer-readable storage media does not include computer-readable communication media.
The service provider computers 210 may also contain communications connection(s) 222 that allow the service provider computers 210 to communicate with a stored database, another computing device or server, user terminals and/or other devices on the networks 208. The service provider computers 210 may also include I/O device(s) 224, such as a keyboard, a mouse, a pen, a voice input device, a touch input device, a display, speakers, a printer, etc.
Turning to the contents of the memory 216 in more detail and will be described in further detail in
In the embodiment shown in the drawings, a user profile data store 306, a subscription data store 308, and a geo-fence data store 310 are shown, although data can be maintained, derived, or otherwise accessed from various data stores, either remote or local to the dynamic geo-fence management engine 102, to achieve the functions described herein. Some combination of the data stores depicted in
In accordance with at least one embodiment, a process is enabled for utilizing the dynamic geo-fence management engine 102 of
In accordance with at least one embodiment, the input processing engine 316, a component of the dynamic geo-fence management engine 102, may be configured to receive input related to a geo-fence (e.g., a set of parameters including, but not limited to, a geo-fence identifier, a topic category, a message including text and/or image(s), an active time or time period, a radius, and/or a notification reset indicator) and/or input related to one or more subscriptions (e.g., identified using a user-specified topic category, determined using user purchase history, etc.). Upon receipt of such input, the input processing engine 316 may be configured to initiate one or more workflows with one or more components of the dynamic geo-fence management engine 102. For example, the input processing engine 316 may be configured to store such input in the user profile data store 306, the subscription data store 308, the geo-fence data store 310, or any suitable storage location.
In accordance with at least one embodiment, a user (e.g., a provider) that wishes to generate notifications related to his service/item (e.g., a yard sale) may provide information to the dynamic geo-fence management engine 102 indicating one or more topic categories (e.g., yard sales). Information related to the one or more topic categories may be received, for example, by input processing engine 316 and stored, for example, in subscription data store 308. Additionally, or alternatively, the dynamic geo-fence management engine 102 may utilize a predetermined set of topic categories stored, for example, in subscription data store 308.
In at least one example, a separate user (e.g., a consumer) may specify one or more topic categories for which he is interested in receiving notifications. For example, the consumer may utilize application 206 of
Continuing on with the example, at some point, the provider may wish to provide notifications to those users subscribed to his topic category. For example, the provider may decide to hold a yard sale on a particular day, for a particular time period. The provider may, utilizing application 206 of
In at least one example, user identification engine 318 may interact with subscription data store 308 to obtain identification information for potentially interested users. For example, user identification engine 318 may determine a set of users that have previously subscribed to a particular topic category (e.g., yard sales). Additionally, or alternatively, user identification engine 38 may interact with user profile data store to determine potentially interested users. For example, user identification engine 318 may obtain contact information for every user, or some subset of the users corresponding to user information stored in user profile data store 306. Additionally, or alternatively, the user identification engine 318 may determine users who share a common trait (e.g., users who live in a particular area or zip code). Regardless of the method employed by user identification engine 318, identification/contact information for the identified users and the geo-fence parameters may be communicated to, or otherwise obtained by, notification manager 320, another component of dynamic geo-fence management engine 102. Continuing with the yard sale example provided above, user identification engine 318, utilizing information contained in subscription data store 308, may identify the consumer due to the consumer being subscribed to the topic category “yard sales.” As a result, the consumer's identification information may be communicated to the notification manager 320.
Upon receipt of user identification information, or at any suitable time, the notification manager 320 may utilize the user identification information and the goo-fence parameters to generate a number of notifications. For example, the notification manager 320 may format the geo-fence parameters according to a push notification service protocol to generate one or more push notifications. The notification manager 320 may address the one or more push notifications or enable a remote push notification service to address the one or more push notifications. The notification manager 320, upon concluding the formatting process, may transmit the one or more push notifications to a push notification service that is remote with respect to the dynamic geo-fence management engine 102. In at least one example, notification manager 320 may further be responsible for the deletion of geo-fence parameters. For example, geo-fence parameters may specify a time at which the geo-fence should be deleted. Upon detecting that the specified time has arrived, notification manager 320 may be responsible for formatting one or more notification according to a push notification service protocol, the one or more notifications including information to cause deletion of geo-fence parameters (e.g., from local memory of a user device). Additionally, or alternatively, the notification manager 320 may cause geo-fence parameters to be deleted from geo-fence data store 310 using an additional push notification for deletion purposes. Additionally, or alternatively, previously stored goo-fence parameters may be deleted due to receipt of new geo-fence parameters.
Continuing with the yard sale example provided above, the notification manager 320 may format the geo-fence parameters received from the provider according to a push notification service protocol in order to generate a push notification request. The consumer's identification information may be included the push notification request as the consumer was identified by user identification engine 318. The notification manager 320 may transmit, or otherwise communicate, the push notification request to a push notification service responsible for generating push notifications over a network (e.g., network 326) to the user device(s) 303,
Initialization engine 322, a component of the dynamic geo-fence management engine 102, may reside on service provider computers 302, or user device(s) 303 (e.g., a user device of the consumer). In at least one example, the initialization engine 322 may be a component remote to the dynamic geo-fence management engine 102 (e.g., a component of application 206 of
In the current yard sale example, an application operating on the consumer's device may receive a push notification including geo-fence parameters related to the provider's yard sale. A component of the application (e.g., the initialization engine 322) may store the geo-fence parameters in the geo-fence data store 310 (e.g., a data store residing on the consumer's device). Storage of the geo-fence parameters may constitute initialization of a geo-fence with respect to the application.
Location analysis engine 324, a component of the dynamic geo-fence management engine 102, may reside on service provider computers 302, or user device(s) 303 (e.g., a user device of the consumer). In at least one example, the location analysis engine 324 may be a component remote to the dynamic geo-fence management engine 102 (e.g., a component of application 206 of
Continuing with the yard sale example from above, the location analysis engine 324, a component of dynamic geo-fence management engine 102, may operate on the consumer's device (e.g., via application 206 of
Although examples herein may discuss a directional flow from the provider to the consumer, it should be appreciated that any example herein may utilize an opposite flow. For example, a location of a user device may be received by the location analysis engine 324. A merchant, for example, having previous indicated interest in a particular user (e.g., a valued customer), may be identified by user identification engine 318. User identification engine 318 may cause notification manager 320 to generate a notification (e.g., a push notification, an electronic message, etc.) to be provided to the merchant's device. In this manner, the merchant may be alerted to the presence of the valued customer. This may be beneficial, for example, for a merchant who desires to be notified when a valued customer enters his store.
In accordance with at east one example, the merchant truck 408 may arrive at location 410. Upon arrival, or at another suitable time, a driver of the merchant truck 408 may communicate (e.g., via an application programming interface, by telephone, by SMS message, etc.) geo-fence parameters associated with the merchant truck 408. For example, geo-fence parameters may include a radial distance as depicted at 412. For illustrative purposes, the radial distance 412 is meant to radiate from a center point depicted by the location 410 of the merchant truck 408, Additional geo-fence parameters may include a time period (e.g., 8:00 AM to 11:00 PM), a location (e.g., cascade playground), among others.
The geo-fence parameters may be received by dynamic geo-fence management engine 102 (e.g., via input processing engine 316 of
Upon identifying the users to be notified, user identification engine 318 may communicate geo-fence parameters to, for example, the notification manager 320 of
Upon receipt of the push notification, an application running on each user device of users 404 may initiate a geo-fence 416 corresponding to the merchant truck 408. The user device, upon a determination of user location (e.g., using cellular triangulation and/or wireless network identification information) may determine (e.g., using location analysis engine 324) that the user is located within geo-fence 416. Upon such a determination, the application running on each user device may generate (or otherwise cause generation of) a notification to be presented on the user device (e.g., the push notification 120 of
Consider now, that the merchant truck 704, or another mobile or stationary resource, arrives at different location and establishes the geo-fence 712. In at least one example, establishing, or otherwise initializing the geo-fence 712 may cause deletion information related to geo-fence 706. Alternatively, geo-fence 706 may be deleted from memory after a determinate period of time (e.g., upon reaching an end time, here depicted as 12:00 AM). Now consider that the user 702 has moved to location 714. In at least one example, although the geo-fence 712 has been initialized and is known to the device of user 702, given that the user 702 has previously, received notification 610, no new notification may be presented to user 702 regarding geo-fence 712. In at least one example, the user 702 may not receive a notification regarding geo-fence 712 due to a previous purchase (e.g., when the user 702 has purchased an item from merchant truck 604 when the merchant truck 704 was located within geo-fence 706, or purchased an item from the merchant in general within a threshold time period). Thus, the previous purchase information may be utilized (e.g., by notification manager 320 of
At block 906, a subset of users from the plurality of users may be determined (e.g., by the user identification engine 318 of
At block 908, a corresponding notification may be generated (e.g., by the notification manager 320 of
At block 910, the corresponding notification may be provided to a plurality of remote computing devices (e.g., by the notification manager 320 of
At block 1004, a user of a plurality of users may be determined (e.g., by the user identification engine 318 of
At block 1006, a notification for the user may be generated (e.g., by the notification manager 320 of
At block 1008, the notification may be provided to a remote computing device (e.g., by the notification manager 320 of
At block 1104, the parameters of the geographic boundary may be extracted from the push notification (e.g., by the initialization engine 322. of
At block 1108, the extracted parameters of the geographic boundary may be stored on the computing device. In at least one example, the extracted parameters may be later utilized by an application to provide notifications/alerts to a user regarding the geographic boundary,
The illustrative environment includes at least one application server 1208 and a data store 1210. It should be understood that there can be several application servers, layers, or other elements, processes, or components, which may be chained or otherwise configured, which can interact to perform tasks such as obtaining data from an appropriate data store, As used herein the term “data store” refers to any device or combination of devices capable of storing, accessing, and retrieving data, which may include any combination and number of data servers, databases, data storage devices, and data storage media, in any standard, distributed, or clustered environment. The application server can include any appropriate hardware and software for integrating with the data store as needed to execute aspects of one or more applications for the client device, handling a majority of the data access and business logic for an application. The application server provides access control services in cooperation with the data store and is able to generate content such as text, graphics, audio, and/or video to he transferred to the user, which may be served to the user by the Web server in the form of HyperText Markup Language (“HTML”), Extensible Markup Language (“XML”), or another appropriate structured language in this example. The handling of all requests and responses, as well as the delivery of content between the user device 1202 and the at least one application server 1208, can be handled by the Web server. It should be understood that the Web and application servers are not required and are merely example components, as structured code discussed herein can be executed on any appropriate device or host machine as discussed elsewhere herein.
The data store 1210 can include several separate data tables, databases or other data. storage mechanisms and media for storing data relating to a particular aspect. For example, the data store illustrated includes mechanisms for storing production data 1212 and user information 1216, which can be used to serve content for the production side. The data store also is shown to include a mechanism for storing tog data 1214, which can be used for reporting, analysis, or other such purposes. It should be understood that there can be many other aspects that may need to be stored in the data store, such as for page image information and to access right information, which can be stored in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store 1210. The data store 1210 is operable, through logic associated therewith, to receive instructions from the at least one application server 1208 and obtain, update or otherwise process data in response thereto. In one example, a user might submit a search request for a certain type of item. In this case, the data store might access the user information to verify the identity of the user and can access the catalog detail information to obtain information about items of that type. The information then can be returned to the user, such as in a results listing on a Web page that the user is able to view via a browser on the user device 1202. Information for a particular item of interest can be viewed in a dedicated page or window of the browser.
Each server typically will include an operating system that provides executable program instructions for the general administration and operation of that server and typically will include a computer-readable storage medium (e.g., a hard disk, random access memory, read only memory, etc.) storing instructions that, when executed by a processor of the server, allow the server to perform its intended functions. Suitable implementations for the operating system and general functionality attic servers are known or commercially available and are readily implemented by persons having ordinary skill in the art, particularly in light of the disclosure herein.
The environment in one embodiment is a distributed computing environment utilizing several computer systems and components that are interconnected via communication links, using one or more computer networks or direct connections. However, it will be appreciated by those of ordinary skill in the art that such a system could operate equally well in a system having fewer or a greater number of components than are illustrated in
The various embodiments further can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices or processing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of general purpose personal computers, such as desktop or laptop computers running a standard operating system, as well as cellular, wireless, and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system also can include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices also can include other electronic devices, such as dummy terminals, thin-clients, gaming systems, and other devices capable of communicating via a network.
Most embodiments utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as Transmission Control Protocol/Internet Protocol (“TCP/IP”), Open System Interconnection (“OSI”), File Transfer Protocol (“FTP”), Universal Plug and Play (“UpnP”), Network File System (“NFS”), Common Internet File System (“CIFS”), and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, extranet, a public switched telephone network, an infrared network, a wireless network, and any combination thereof.
In embodiments utilizing a Web server, the Web server can run any of a variety of server or mid-tier applications, including Hypertext Transfer Protocol (“HTTP”) servers, FTP servers, Common Gateway Interface (“CGI”) servers, data servers, Java servers, and business application servers. The server(s) also may be capable of executing programs or scripts in response to requests from user devices, such as by executing one or more Web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C#, or C++, or any scripting language, such as Perl, Python, or TCL, well as combinations thereof The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase®, and IBM®.
The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers, or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (“CPU”), at least one input device (e.g., a mouse, keyboard, controller, touch screen, or keypad), and at least one output device (e.g., a display device, printer, or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices, and solid-state storage devices such as random access memory (“RAM”) or read-only memory (“ROM”), as well as removable media devices, memory cards, flash cards, etc.
Such devices also can include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired)), an infrared communication device, etc.), and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed, and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services, or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or Web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules, or other data, including RAM, ROM, Electrically Erasable Programmable Read-Only Memory (“EEPROM”), flash memory or other memory technology, Compact Disc Read-Only Memory (“CD-ROM”), digital versatile disk (DVD), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage, or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a system device. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the disclosure as set forth in the claims.
Other variations are within the spirit of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the disclosure to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the disclosure, as defined in the appended claims.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms “comprising,” “having,” “including,” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected” is to be construed as partly or wholly contained within, attached to, or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate embodiments of the disclosure and does not pose a limitation on the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure.
Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is intended to be understood within the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.
Preferred embodiments of this disclosure are described herein, including the best mode known to the inventors for carrying out the disclosure. Variations of those preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate and the inventors intend for the disclosure to be practiced otherwise than as specifically described herein. Accordingly, this disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.
All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.