The subject application relates to electronic commerce, and, more particularly, to maintaining source of origin data with items included in electronic lists.
Presently, many users of network applications and services have had experiences with or are familiar with the concept and use of wish list applications and services that provide a user a mechanism to temporarily store online references to items or item links, e.g., goods, services, offers, etc., prior to purchasing these items, and that provide item references to others so that such others may purchase the items as a gift for the user. A conventional wish list schema is directed to a user visiting a shopping web site and selecting an item to purchase where, for a variety of reasons, the user may desire to postpone the immediate purchase of the item. The user may choose to create a wish list associated with a particular shopping site and add the items to that wish list, e.g., items that users desire.
Additionally, presently, items, which users may find of interest and subsequently add to their wish lists could be discovered and directly added from within shopping portals various tools, such as search, recommendations, promotions, etc. and also at third party online and off line spaces, such as through search engines, social networks, through friends' recommendations, through online advertisements and by capturing barcodes via offline banners and advertisements. Thus, the user may gather an extensive list of items in their wish list. After a period of time user may forget the details of the item description or why one or the other item was included into the wish list.
Moreover, in order to add an item to the user's wish list in these conventional applications, an item needs to be found in and selected from a particular website. Items discovered at third party online sources cannot be added directly to the wish list. For example, an Internet user who learns of a product at a third party website must first navigate to the site where the user's wish list resides, and then search for that item again. Only then can the user add the found item to the user's wish list, creating an inconvenient experience to say the least.
Furthermore, typical pre-shopping applications do not allow the user to save product description tags, which may assist a user in selecting the best items in the item lists for later purchase. Such tags may be references to general product categories, manufacturers, names of friends who recommended the item or friends who already own the product of interest, the product's popularity ranking, product reviews, and notifications of the product's related activities. In essence, a typical shopping scenario today consists of a user looking to buy a product, conducting product research at various online and off line sources, and then visiting shopping sites to find and purchase a product. Such systems are not flexible and give users limited options for shopping for and selecting items at different websites.
The above-described deficiencies of today's online shopping systems are merely intended to provide an overview of some of the problems of conventional systems, and are not intended to be exhaustive. Other problems with conventional systems and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.
The following presents a simplified summary in order to provide a basic understanding of some aspects disclosed herein. This summary is not an extensive overview. It is intended to neither identify key or critical elements nor delineate the scope of the aspects disclosed. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
Various embodiments for list systems that incorporate source of origin information are contained herein. An exemplary system includes a list component, associated with a portal, configured to maintain a set of items in a list associated with a first user, an interface component configured to obtain data related to an item for inclusion in the set of items from at least one source, wherein the list component is further configured to locate the item in the portal based at least in part on the data, and an origin component configured to append source data to the item that identifies the at least one source from which the data related to the item was obtained.
In another non-limiting embodiment, an exemplary method is provided that includes the steps of obtaining information related to an item from at least one source, correlating the information related to the item to an item reference associated with a portal, attaching an identifier of the at least one source from which the information was obtained to the item reference, and storing the item reference in a list associated with a first user.
In still another non-limiting embodiment, an exemplary computer readable storage medium is provided that includes computer executable instructions that, in response to execution by a computing system, cause the computing system to perform operations, including obtaining information related to an item from at least one source, locating an item reference for the item associated with a portal based at least in part on the information, adding the item reference to a list associated with a first user, and maintaining an identifier of the at least one source from which the information was obtained with the item reference.
In yet another non-limiting embodiment, a exemplary system is provided that includes means for obtaining information related to an item from at least one source, means for locating an item reference for the item associated with a portal based at least in part on the information, means for adding the item reference to a list associated with a first user, and means for maintaining an identifier of the at least one source from which the information was obtained with the item reference.
In another non-limiting embodiment, an exemplary device includes a capture component configured to obtain information related to an item, a source component configured to identify a source of the information obtained, an identification component configured to obtain a reference for the item with relation to a portal based at least in part on the information, and an update component configured to enable a user to add the reference for the item to a list associated with the portal.
In still another non-limiting embodiment, an exemplary method is provided that includes the steps of acquiring data related to an item, identifying a source of the data acquired, obtaining an item link based on the data, wherein the item link references a portal, and instructing the portal to add the item link to a list associated with portal.
These and other embodiments are described in more detail below.
Embodiments and examples are described below with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details in the form of examples are set forth in order to provide a thorough understanding of the various embodiments. It will be evident, however, that these specific details are not necessary to the practice of such embodiments. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate description of the various embodiments.
Reference throughout this specification to “one embodiment,” or “an embodiment,” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment,” or “in an embodiment,” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
As utilized herein, terms “component,” “system,” “interface,” and the like are intended to refer to a computer-related entity, hardware, software (e.g., in execution), and/or firmware. For example, a component can be a processor, a process running on a processor, an object, an executable, a program, a storage device, and/or a computer. By way of illustration, an application running on a server and the server can be a component. One or more components can reside within a process, and a component can be localized on one computer and/or distributed between two or more computers.
Further, these components can execute from various computer readable media having various data structures stored thereon. The components can communicate via local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network, e.g., the Internet, a local area network, a wide area network, etc. with other systems via the signal).
As another example, a component can be an apparatus with specific functionality provided by mechanical parts operated by electric or electronic circuitry; the electric or electronic circuitry can be operated by a software application or a firmware application executed by one or more processors; the one or more processors can be internal or external to the apparatus and can execute at least a part of the software or firmware application. As yet another example, a component can be an apparatus that provides specific functionality through electronic components without mechanical parts; the electronic components can include one or more processors therein to execute software and/or firmware that confer(s), at least in part, the functionality of the electronic components. In an aspect, a component can emulate an electronic component via a virtual machine, e.g., within a cloud computing system.
The word “exemplary” and/or “demonstrative” is used herein to mean serving as an example, instance, or illustration. For the avoidance of doubt, the subject matter disclosed herein is not limited by such examples. In addition, any aspect or design described herein as “exemplary” and/or “demonstrative” is not necessarily to be construed as preferred or advantageous over other aspects or designs, nor is it meant to preclude equivalent exemplary structures and techniques known to those of ordinary skill in the art. Furthermore, to the extent that the terms “includes,” “has,” “contains,” and other similar words are used in either the detailed description or the claims, such terms are intended to be inclusive—in a manner similar to the term “comprising” as an open transition word—without precluding any additional or other elements.
Referring initially to
The list component 106 enables users to temporarily store online references to items or item links (e.g., goods, digital goods, services, offers, etc.) in a list 122, prior to purchasing, viewing, or otherwise acquiring these items. Typically, a list schema is directed to a user visiting a shopping web site, such as portal 102, and selecting an item to purchase from a catalogue 104 or item list 110 where, for a variety of reasons, the user 120 may desire to postpone the immediate purchase of the item. The user 120 may choose to create a list (e.g., wish list) 122 associated with a particular shopping site, and add the desired items to that list 122. The list 122 can be maintained in a data storage 118 associated with the list system 100. It is to be appreciated that the data storage 118 can be internal or external. It is to be further appreciated that the exemplary list system 100 is described as a wish list with reference to a commercial shopping system for simplicity of explanation; however, the system 100 can be applied to virtually any list system, including non-commercial systems. For example, the list system can additionally or alternatively be an academic list system that includes an academic list component that enables users to store online references to items or item links, such as academic journals, research papers, websites, and so forth.
Turning to
The list component 106 enables users to temporarily store online references to items or item links (e.g., goods, services, offers, etc.) in a list 122, prior to purchasing these items. For example, the user 120 may locate a movie via the catalogue 104, and wish to postpone purchasing the movie until they have some free time to view the movie. In addition, the list 122 can provide item references to others, so that others can purchase the items as a gift for the user 120, or get recommendations based on the user's 120 list.
In one embodiment, the list component 106 includes an origin component 202, and an interface component 204. The origin component 202 tracks, ascertains, or otherwise determines a source of origin for an item added to the user's 120 list 122, and associates, maintains, or otherwise links information relating to the source of origin with the item. For example, the user 120 can add an item to their list directly from the catalogue 104, wherein the origin component 202 can determine that the user 120 added the item from the catalog 104, and associate an indicator with the item identifying the item's source of origin as being added by the user from the catalogue 104. Additionally or alternatively, an item can be added to the user's 120 list using a plurality of techniques, including but not limited to from a friend of the user, from a social networking website, via a search engine result, from an online advertisement, from an offline advertisement, from a barcode scan, from another portal, from a data matrix scan, from a photograph, etc.
In addition, the origin component 202 can include a tag component 206 that enables the user 120 to manually enter and save description tags to an item included in the list, which may assist the user 120 in selecting the best items in the list for later purchase. Such tags may be references to categories, manufacturers, names of friends or associates who recommended the item or friends who already own the item of interest, the item's popularity ranking, item reviews, and notifications of the item's related activities. For example, the user 120 may have added an item to their list 122 based on a recommendation from an instructor and the tag component 206 can enable the user 120 to save a description tag, such as “My law professor recommended that I read this law review article—follow up with him after reading.”
The interface component 204 includes any suitable and/or necessary adapters, connectors, channels, communication paths, etc. to integrate the list component 106 into virtually any operating, communication, and/or database system(s). Moreover, the interface component 204 can provide various adapters, connectors, channels, communication paths, etc., that provide for interaction with the system 200. For example, the interface component 204 can enable the list component 106 to receive, obtain, or otherwise acquire items from outside of the portal 102, such as from a social networking website (e.g., Face book, Twitter, or LinkedIn), etc. to include in the user's 120 list 122.
Referring now to
The interface component 204 includes an input component 304 and a sharing component 306. The input component 304 includes any suitable and/or necessary adapters, connectors, channels, communication paths, etc. to enable the list component 106 to receive, acquire, otherwise obtain items to be added to a list from virtually any operating, communication, and/or database system(s). For example, the input component 304 can facilitate receiving information related to items to be included in a list from other websites 308, such as social networking websites, disparate portals, internet advertisements, message boards, chat rooms, application markets, etc. Moreover, the input component 304 can enable other users 120 to include items in a friend's list, or include items purchased by other users 120 on a friend's list. For instance, two friends, user A and user B, may enjoy similar movies. So, if user A purchases a new movie, then the new movie can also be placed on user B's list.
A software application associated with the list component 106, or including one or more features of the list component 106, can be downloaded to a user computer or device, or accessed online via a network connection, to facilitate adding items to a list via other websites 308 (See
The sharing component 306 includes any suitable and/or necessary adapters, connectors, channels, communication paths, etc. to enable the list component 106 to distribute, broadcast, or otherwise share one or more items on a user's list to other websites 312, or users 314. For example, the user may desire to share one or more items on their list via a social networking website, such as Twitter or Facebook, or a user may desire to share their list with a set of users associated with the portal (See
The origin component 202 can determine a source of origin for an item added to the user's list from an external source (e.g., other users, websites, user devices, etc.) via the interface component 204, and annotate, maintain, or otherwise associate an indicator with the item identifying the item's source of origin. The source of origin (e.g., history of origin) is the name of the source from which an item was added to the user's list. This feature can assist a user in determining the value of the selection, or help credit other users for recommending an item. For example, if an item was added by a close friend, it may be more highly regarded by a user compared to a random selection by the system or a recommendation by an unknown user, and thus the system may help users make a better purchasing decision based on the source of product discovery. As an additional example, if the items included in the list pertain to a research project, then an item obtained from an academic journal may be more useful than an item obtained from an internet website. Thus the history of origin may be the name of a social network, name of an online search engine, a source, a friend's name, and the like. As discussed previously, the origin component can also include a tag component 206 that enables users 120 to manually enter and save description tags to an item included in the list, which may assist the user 120 in selecting the most preferred items in the wish list for later purchase.
In various embodiments described herein, reference is made with respect to a user's “social presence” or to a user's “friends” or a “social network.” It is to be noted that such terms are used in an online context to generally to refer to an underlying social graph.
A social graph can be described as data structure(s) representing the global mapping of everybody and how they're related. Online social networks can exploit social graphs by examining the relationships between individuals to offer a richer online experience. The term can be used to refer to an individual's social graph, e.g., the connections and relationships pertinent to that individual, or the term can also refer to all Internet users and their complex relationships.
In this regard, while a graph is an abstract concept used in discrete mathematics, a social graph describes the relationships between individuals online, e.g., a representation or description of relationships in the real world. A social graph is a socio-gram that represents personal relations. In this regard, a social graph is a data representation, and can be defined explicitly by its associated connections, and stored in or across computer memories. Social graph information can be exposed to websites, applications and services in order to take advantage of the information (e.g., demographic information) embodied by the graph information and associated data and metadata about the individuals comprising the graph. For example, in
The concept of a social graph is not limited to just interconnections of people, but rather websites, applications and services can draw information about various objects and information, e.g., photos, audio, events, web pages, etc. and their relationships. The social graph concept can be expanded to more than just relationships between individuals, and can apply to virtual nonhuman objects between individuals, as well.
Thus in various embodiments described herein, each service member can be allocated a personal social space associated with one or more wish lists. The personal social space can include list of user virtual friends, which allows users to view the content of their friends' wish lists, to view the list of items recommended by the user friends, to search for new items of interest based on friends' comments and dislikes per personal user context, view the list of friends' social activities, and so on. For instance, the following activity types are considered as social: an item is purchased by a service member's friend, an item is rated by a service member's friend, an item is favored by a service member's friend, etc., though by no means is the foregoing list inclusive or exhaustive as many other activities can be considered social. Further, the user may select items of interest to preview, to add to their own wish list, to purchase, and so forth.
Social data can be homegrown, sourced from third parties, or a combination thereof. For instance, third party social networks and other online spaces where user interaction is permitted can be leveraged for social mapping information related to a given social graph, such as discussion forums, fan sites, news sites, online product databases, online recommendation and references sites, dictionaries, wikis, user blogs', search engines, decision guides, search engines, social network services, etc. Information exchange with social networks can be facilitated via the interface component 204 (See
Also, the wish list need not be considered a flat structure. The wish list may include multiple levels, e.g., hierarchical levels, some of which may be categorized by the user-owner of the wish list who has ultimate authority of its control and maintenance. A user may categorize different portions of the wish list into areas for maintenance and/or display for different individuals, groups or subgroups. For example, in a social networking environment, a person may want to segregate different areas from various users, such as a parent wanting to show or otherwise share content or information to adult friends separately from children and young adults. A user may further want to separate items that the user chooses or submits into the user's wish list from items other users submit to the user's wish list. The user may also restrict or otherwise control submissions by certain or possibly all users into the user's wish list, and may even prohibit any submissions altogether.
In view of the example systems described supra, various exemplary embodiments that may be implemented in accordance with the disclosed subject matter may be better appreciated with reference to
Referring to
As illustrated, the application 500 can be integrated into a web browser 502. The web browser 502 can enable retrieving, presenting, and traversing information resources on the World Wide Web, private networks, or in file systems. For example, a user can access a social networking website or shopping website using the web browser 502. The web browser 502 can allow integration of add-on applications, for example, via an application programming interface (API).
In operation, the user can visit a web page other than the shopping portal 102, and view one or more items 504 that the user desires to add to the wish list. The wish list software application 500 can enable the user to add virtually any item from virtually any website to their wish list. For example, the web browser 502 can include an “Add to Wish List” browser button 506 that when selected or clicked by the user will expose options relating to adding one or more items displayed on the current webpage to their wish list. The wish list software application 500 can extract and store product information relating to the desired item, connect with the shopping portal 102 (See
As an additional example, the wish list software application 500 can add additional menu items to a web browser 502 menu, such as a right-click menu 508, including but not limited to an “Add to Wish List” option, and a “Share w/ Friends” option. If the user selects the “Add to Wish List” menu option, then the wish list application 500 will automatically update the user's wish list with a reference to the item 504 in the shopping portal 102, without the user having to manually search for the item in the catalogue 104. Similarly, if the user selects the “Share w/ Friends” menu option, then the user can add the item to a friend's wish list, or share the item with a friend via a social networking website, email, etc. It is to be appreciated that the wish list software application 500 can be implemented in a plurality of ways, for example, the wish list software application 500 can be a separate or standalone software application.
The wish list software application 600 can enable users to add items to their wish list via a plurality of input methods, including but not limited to social networking websites, search engine results, online advertisements, offline advertisements, barcode scans, other shopping portals, data matrix scans, photographs, or text messages. The wish list software application 600 can leverage functionality included on the computer or user device 602 to locate and add items to a user's wish list. For example, if the user device 602 includes a camera or bar code scanner, then the wish list application 600 can enable a user to capture a data matrix associated with an item that the user desires. Subsequently, the wish list software application 600 can extract and store product information relating to the desired item, connect with the shopping portal 102 (See
The source component 704 can determine, ascertain, or otherwise identify a source from which the information relating to the item was obtained (e.g., source of origin). Continuing with the previous example, the source component 704 can identify the source as a data matrix included in a movie review magazine advertisement. Additionally or alternatively, the source component 704 can enable a user of the user device 700 to manually input the source of origin information, and/or one or more description tags. The identification component 706 can locate a reference to the item in a shopping portal, or a catalogue associated with the shopping portal. For example, the information may be the title of a movie, and the identification component 706 can locate the movie with reference to a shopping portal. Additionally or alternatively, the identification component 706 can communicate the information to the shopping portal, wherein the shopping portal locates the reference to the item, and communicates the reference to the identification component 706.
The update component 708 can enable the user of the device 700 to add the reference for the item to a wish list associated with the shopping portal. For example, the update component 708 can prompt the user whether to add the item to their wish list, and if the user selects to add the item, then the update component 708 can command the shopping portal to add the item to the user's wish list. Additionally or alternatively, the update component 708 can command the shopping portal to add the item to the user's wish list based on a set of predefined preferences. For example, the update component 708 can automatically instruct the shopping portal to add the item to the user's wish list based on the set of predefined preferences. The display component 710 can expose the item or item reference to the user of the user device 700, and/or prompts related to the capture component 702, the source component 704, identification component 706, or update component 708. For example, the display component 710 can display a graphical item reference (e.g., webpage, product card, etc.) to the user via a screen included on the user device 700, or the display component 710 can audibly communicate information regarding the item reference to the user via a speaker included on the device 700.
Turning to
Items 804 in the wish list collection 802 can be sorted based on a variety of criteria. For example, the wish list viewing pane 800 can include a “Date Added” button 806 that enables a user to sort the items in the wish list based on the date (e.g., chronological or reverse chronological order) that the item was added to wish list collection 802. Additionally, the wish list viewing pane 800 can include an “Alphabetically” button 808 that enables users to sort the items in the wish list by name. In addition, the wish list viewing pane 800 can include a Source of Origin button 810 that enables users to sort the items 804 based on the source or origin. As discussed previously, the source of origin (e.g., history of origin) is the name of the source from which an item was added to the user's wish list. This feature can assist a user in determining the value of the selection, or help credit other users for recommending an item. For example, if an item was added by a close friend, it may be more highly regarded by a user compared to a random selection by the system or a recommendation by an unknown user, and thus the system may help users make a better purchasing decision based on the source of product discovery. Thus the history of origin may be the name of a social network, name of an online search engine, friend's name, and so forth. The wish list viewing pane 800 can further include a Date Purchased button 812 that can enable a user to sort items 804 in the wish list according to the date that they were purchased. For example, a user may desire to review items 804 in the wish list collection 802 that they have already purchased.
Moreover, the wish list viewing pane 800 can include functionality typically associated with a viewing pane or webpage, such as a scrolling, etc. For example, the wish list viewing pane 800 can include a Scroll List Left button 814, and a Scroll List Right button 816, that enable the user to scroll through the items 804 included in the wish list collection 802. Additionally or alternatively, the wish list viewing pane 800 can be adapted to accept touch inputs, such as swiping across a screen to scroll through the items 804 included in the wish list collection 802. It is to be appreciated that the foregoing represents but a few examples, and the wish list viewing pane 800 can be implemented in a plurality of ways.
Turning now to
In view of the example systems described supra, methods that may be implemented in accordance with the disclosed subject matter may be better appreciated with reference to the flow charts of
Referring to
Turning now to
One of ordinary skill in the art can appreciate that the various non-limiting embodiments of the shared shopping systems and methods described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store. In this regard, the various non-limiting embodiments described herein can be implemented in any computer system or environment having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage.
Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects, such as files. These resources and services also include the sharing of processing power across multiple processing units for load balancing, expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard, a variety of devices may have applications, objects or resources that may participate in the shared shopping mechanisms as described for various non-limiting embodiments of the subject disclosure.
Each computing object 1510, 1512, etc. and computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. can communicate with one or more other computing objects 1510, 1512, etc. and computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. by way of the communications network 1540, either directly or indirectly. Even though illustrated as a single element in
There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems can be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks, though any network infrastructure can be used for exemplary communications made incident to the shared shopping systems as described in various non-limiting embodiments.
Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be utilized. The “client” is a member of a class or group that uses the services of another class or group to which it is not related. A client can be a process, i.e., roughly a set of instructions or tasks, that requests a service provided by another program or process. The client process utilizes the requested service without having to “know” any working details about the other program or the service itself.
In client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration of
A server is typically a remote computer system accessible over a remote or local network, such as the Internet or wireless network infrastructures. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server. Any software objects utilized pursuant to the techniques described herein can be provided standalone, or distributed across multiple computing devices or objects.
In a network environment in which the communications network 1540 or bus is the Internet, for example, the computing objects 1510, 1512, etc. can be Web servers with which other computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Computing objects 1510, 1512, etc. acting as servers may also serve as clients, e.g., computing objects or devices 1520, 1522, 1524, 1526, 1528, etc., as may be characteristic of a distributed computing environment.
As mentioned, advantageously, the techniques described herein can be applied to any device where it is desirable to facilitate shared shopping. It is to be understood, therefore, that handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various non-limiting embodiments, i.e., anywhere that a device may wish to engage in a shopping experience on behalf of a user or set of users. Accordingly, the below general purpose remote computer described below in
Although not required, non-limiting embodiments can partly be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software that operates to perform one or more functional aspects of the various non-limiting embodiments described herein. Software may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers or other devices. Those skilled in the art will appreciate that computer systems have a variety of configurations and protocols that can be used to communicate data, and thus, no particular configuration or protocol is to be considered limiting.
With reference to
Computer 1610 typically includes a variety of computer readable media and can be any available media that can be accessed by computer 1610. The system memory 1630 may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). Computer readable media can also include, but is not limited to, magnetic storage devices (e.g., hard disk, floppy disk, magnetic strip), optical disks (e.g., compact disk (CD), digital versatile disk (DVD)), smart cards, and/or flash memory devices (e.g., card, stick, key drive). By way of example, and not limitation, system memory 1630 may also include an operating system, application programs, other program modules, and program data.
A user can enter commands and information into the computer 1610 through input devices 1640. A monitor or other type of display device is also connected to the system bus 1622 via an interface, such as output interface 1650. In addition to a monitor, computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface 1650.
The computer 1610 may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer 1670. The remote computer 1670 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer 1610. The logical connections depicted in
As mentioned above, while exemplary non-limiting embodiments have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any network system and any computing device or system.
Also, there are multiple ways to implement the same or similar functionality, e.g., an appropriate application programming interface (API), tool kit, driver source code, operating system, control, standalone or downloadable software object, etc. which enables applications and services to take advantage of techniques provided herein. Thus, non-limiting embodiments herein are contemplated from the standpoint of an API (or other software object), as well as from a software or hardware object that implements one or more aspects of the shared shopping techniques described herein. Thus, various non-limiting embodiments described herein can have aspects that are wholly in hardware, partly in hardware and partly in software, as well as in software.
The word “exemplary” is used herein to mean serving as an example, instance, or illustration. For the avoidance of doubt, the subject matter disclosed herein is not limited by such examples. In addition, any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs, nor is it meant to preclude equivalent exemplary structures and techniques known to those of ordinary skill in the art. Furthermore, to the extent that the terms “includes,” “has,” “contains,” and other similar words are used, for the avoidance of doubt, such terms are intended to be inclusive in a manner similar to the term “comprising” as an open transition word without precluding any additional or other elements.
As mentioned, the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. As used herein, the terms “component,” “system” and the like are likewise intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
The aforementioned systems have been described with respect to interaction between several components. It can be appreciated that such systems and components can include those components or specified sub-components, some of the specified components or sub-components, and/or additional components, and according to various permutations and combinations of the foregoing. Sub-components can also be implemented as components communicatively coupled to other components rather than included within parent components (hierarchical). Additionally, it is to be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several separate sub-components, and that any one or more middle layers, such as a management layer, may be provided to communicatively couple to such sub-components in order to provide integrated functionality. Any components described herein may also interact with one or more other components not specifically described herein but generally known by those of skill in the art.
In view of the exemplary systems described supra, methodologies that may be implemented in accordance with the described subject matter can also be appreciated with reference to the flowcharts of the various figures. While for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the various non-limiting embodiments are not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Where non-sequential, or branched, flow is illustrated via flowchart, it can be appreciated that various other branches, flow paths, and orders of the blocks, may be implemented which achieve the same or a similar result. Moreover, not all illustrated blocks may be required to implement the methodologies described hereinafter.
As discussed herein, the various embodiments disclosed herein may involve a number of functions to be performed by a computer processor, such as a microprocessor. The microprocessor may be a specialized or dedicated microprocessor that is configured to perform particular tasks according to one or more embodiments, by executing machine-readable software code that defines the particular tasks embodied by one or more embodiments. The microprocessor may also be configured to operate and communicate with other devices such as direct memory access modules, memory storage devices, Internet-related hardware, and other devices that relate to the transmission of data in accordance with one or more embodiments. The software code may be configured using software formats such as Java, C++, XML (Extensible Mark-up Language) and other languages that may be used to define functions that relate to operations of devices required to carry out the functional operations related to one or more embodiments. The code may be written in different forms and styles, many of which are known to those skilled in the art. Different code formats, code configurations, styles and forms of software programs and other means of configuring code to define the operations of a microprocessor will not depart from the spirit and scope of the various embodiments.
Within the different types of devices, such as laptop or desktop computers, hand held devices with processors or processing logic, and also possibly computer servers or other devices that utilize one or more embodiments, there exist different types of memory devices for storing and retrieving information while performing functions according to the various embodiments. Cache memory devices are often included in such computers for use by the central processing unit as a convenient storage location for information that is frequently stored and retrieved. Similarly, a persistent memory is also frequently used with such computers for maintaining information that is frequently retrieved by the central processing unit, but that is not often altered within the persistent memory, unlike the cache memory. Main memory is also usually included for storing and retrieving larger amounts of information such as data and software applications configured to perform functions according to one or more embodiments when executed, or in response to execution, by the central processing unit. These memory devices may be configured as random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, and other memory storage devices that may be accessed by a central processing unit to store and retrieve information. During data storage and retrieval operations, these memory devices are transformed to have different states, such as different electrical charges, different magnetic polarity, and the like. Thus, systems and methods configured according to one or more embodiments as described herein enable the physical transformation of these memory devices. Accordingly, one or more embodiments as described herein are directed to novel and useful systems and methods that, in the various embodiments, are able to transform the memory device into a different state when storing information. The various embodiments are not limited to any particular type of memory device, or any commonly used protocol for storing and retrieving information to and from these memory devices, respectively.
Embodiments of the systems and methods described herein facilitate the management of data input/output operations. Additionally, some embodiments may be used in conjunction with one or more conventional data management systems and methods, or conventional virtualized systems. For example, one embodiment may be used as an improvement of existing data management systems.
Although the components and modules illustrated herein are shown and described in a particular arrangement, the arrangement of components and modules may be altered to process data in a different manner. In other embodiments, one or more additional components or modules may be added to the described systems, and one or more components or modules may be removed from the described systems. Alternate embodiments may combine two or more of the described components or modules into a single component or module.
Although some specific embodiments have been described and illustrated as part of the disclosure of one or more embodiments herein, such embodiments are not to be limited to the specific forms or arrangements of parts so described and illustrated. The scope of the various embodiments are to be defined by the claims appended hereto and their equivalents.
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 a machine-readable medium.
Computing devices typically include a variety of media, which can include computer-readable storage media and/or communications media, which two terms are used herein differently from one another as follows. Computer-readable storage media can be any available storage media that can be accessed by the computer and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable storage media can be implemented in connection with any method or technology for storage of information such as computer-readable instructions, program modules, structured data, or unstructured data. Computer-readable storage media can include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible and/or non-transitory media which can be used to store desired information. Computer-readable storage media can be accessed by one or more local or remote computing devices, e.g., via access requests, queries or other data retrieval protocols, for a variety of operations with respect to the information stored by the medium.
Communications media typically embody computer-readable instructions, data structures, program modules or other structured or unstructured data in a data signal such as a modulated data signal, e.g., a carrier wave or other transport mechanism, and includes any information delivery or transport media. The term “modulated data signal” or signals refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in one or more signals. By way of example, and not limitation, communication media include wired media, such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
To provide for interaction with a user, the systems and techniques described here can 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 acoustic, speech, or tactile input.
The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. As used herein, unless explicitly or implicitly indicating otherwise, the term “set” is defined as a non-zero set. Thus, for instance, “a set of criteria” can include one criterion, or many criteria.
A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure.
In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims and their equivalents.