The present disclosure relates to presenting stream content related to a canonical identifier. In particular, the present disclosure relates to a user interface element for presentation and interaction with stream content related to the canonical identifier.
The popularity and use of the Internet, web browsers, social networks and other types of electronic communication has grown dramatically in recent years. In particular, social networks now include a great amount of content including posts, images, endorsements, activity, videos, etc. Users are interested in viewing content related to particular web pages or other web information from other sources, but there is are only limited ways presently to view information from social networks in other contexts. Typically the user must switch between browser windows for viewing the web page and for a social network. However, it remains difficult to secure and view content related to a particular web page or URL other than the webpage itself.
The present disclosure relates to systems and methods for presenting and interacting with stream content related to the canonical identifier. According to one innovative aspect of the subject matter in this disclosure, a system having one or more processors and a memory storing instructions that, when executed, cause the system to: receive an input related to a widget on a website; receive a canonical identifier from the widget; determine an identification for a user; determine a social signal for the identified user; produce a stream of related content using the canonical identifier, the identification and the social signal; generate a user interface element for display of the stream of related content; and provide the user interface element for presentation to the user.
In general, another innovative aspect of the subject matter described in this disclosure may be implemented in methods that include receiving, using one or more processors, an input related to a widget on a website; receiving, using the one or more processors, a canonical identifier from the widget; determining, using the one or more processors, an identification for a user; determining, using the one or more processors, a social signal for the identified user; producing, using the one or more processors, a stream of related content using the canonical identifier, the identification and the social signal; generating, using the one or more processors, a user interface element for display of the stream of related content; and providing, using the one or more processors, the user interface element for presentation to the user.
Other implementations of one or more of these aspects include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices.
These and other implementations may each optionally include one or more of the following features. For example, the input is user interaction with the widget or user selection of the widget, or the canonical identifier is a uniform resource locator. For instance, the operations may further include: receiving additional input related to the user interface element; creating a message including the canonical identifier; and sending the message including the canonical identifier. The operations may also include receiving a request to endorse identified content; creating an endorsement using the request; and sending the endorsement. In some instances, the operations may further include: receiving a request to additional activity; determining activity related to the canonical identifier; and updating the user interface element to show activity related to the canonical identifier; or receiving a request to report abuse; identifying a post associated with the request; identifying a second user that authored the post; and removing one or more posts of the second author the stream of content.
These implementations are particularly advantageous in a number of respects. For instance, the technology described herein can present a stream of content, messages or posts, related to a website in a seamless manner. Additionally, the system generates a user interface element that presents the stream of content as well as allows the user to interact with the stream of content and perform social network actions without leaving the webpage. It should be understood, however, that this list of features and advantages is not all-inclusive and many additional features and advantages are contemplated and fall within the scope of the present disclosure. Moreover, it should be understood that the language used in the present disclosure has been principally selected for readability and instructional purposes, and not to limit the scope of the subject matter disclosed herein.
The present disclosure is illustrated by way of example, and not by way of limitation in the figures of the accompanying drawings in which like reference numerals are used to refer to similar elements.
Systems, methods and interfaces for presenting stream content related to a canonical identifier are disclosed. While the systems, methods and interfaces of the present disclosure are described in the context of web pages and showing related posts from a social network, it should be understood that the systems, methods and interfaces can be applied to other system external to the social network for presenting stream content related to a canonical identifier such as email, endorsement, etc.
The client devices 115a-115n in
While shown as operational on the social network server 101 in
The social network server 101 is coupled to the network 105 via signal line 104 for communication and cooperation with the other components of the system 100. In some implementations, the social network server 101 includes the social network software/application 109. Although only one social network server 101 is shown, it should be recognized that multiple servers may be present. A social network may be any type of social structure where the users 120 are connected by a common feature. The common feature includes relationships/connections, e.g., friendship, family, work, an interest, etc. The common features are provided by one or more social networking systems, for example, those included in the system 100, including explicitly-defined relationships and relationships implied by social connections with other online users, where the relationships form a social graph. In some examples, the social graph can reflect a mapping of these users and how they are related. The phrase social graph as used herein encompasses its plain and ordinary meaning including, but not limited to, a file that includes the relationships between the users in a social network. For example, users can be friends, acquaintances, have business relationships, one user can follow another user, one user can subscribe to another user, share with other users or a specific user, etc. Furthermore, it should be understood that the social network server 101 and the social network software/application 109 are representative of one social network and that there may be multiple social networks coupled to the network 105, each having its own server, application and social graph. For example, a first social network may be more directed to business networking, a second may be more directed to or centered on academics, a third may be more directed to local business, a fourth may be directed to dating and others of general interest or a specific focus.
In some implementations, the social network server 101 receives and sends data and social information provided by the other servers 107, 121, 123, 129, 131 and 135. For example, the social network server 101 receives and sends any social information or events performed on any web pages and/or applications hosted by the servers 107121, 123, 129, 131 and 135. The web pages and/or applications include a user interface allowing a user 120 to respond to, comment or endorse a product, a video, a search result, a widget, a post, a comment, a photo, an article, etc., shown on the web pages and/or applications.
In some implementations, the social network server 101, the third party server 107, the Micro Blogging server 121, the email server 123, the SMS/MMS server 129, the IM server 131 and the search server 135 are hardware servers including a processor, a memory, and network communication capabilities.
The client devices 115 can be any computing device including one or more memory and one or more processors, for example, a laptop computer, a desktop computer, a tablet computer, a mobile telephone, a personal digital assistant (PDA), a mobile email device, a portable game player, a portable music player, a television with one or more processors embedded therein or coupled thereto or any other electronic device capable of accessing a network. In some implementations, the system 100 includes a combination of different types of client devices 115. For example, a combination of a personal computer and a mobile phone. As will be described below, it should be understood that the present technologies can operate on different models other than a client-server architecture. For example, the client devices 115 may include the embedded stream widget module 103 and include different services. The client device 115 will be described in more detail with reference to
The browser 150 can be a web browser stored on the on the client device 115 and configured for two-way communications with the servers 173, 101, 107, 121, 123, 129, 131 and 135. For example, the browser 150 is a software application for retrieving, presenting and traversing information resources on the web. In the illustrated implementation, the browser 150 includes an embedded stream widget module 103b.
The network 105 enables communications between the client devices 115a-n, the social network server 101, the third party server 107, the Micro Blogging server 121, the email server 123, the SMS/MMS server 129, the IM server 131 and the search server 135. Thus, the network 105 can include links using technologies including, for example, Wi-Fi, Wi-Max, 2G, Universal Mobile Telecommunications System (UMTS), 3G, Ethernet, 802.11, integrated services digital network (ISDN), digital subscriber line (DSL), asynchronous transfer mode (ATM), InfiniBand, PCI Express Advanced Switching, etc. Similarly, the networking protocols used on the network 105 can include the transmission control protocol/Internet protocol (TCP/IP), multi-protocol label switching (MPLS), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), the file transfer protocol (FTP), lightweight directory access protocol (LDAP), Code Division Multiple Access (CDMA), Wideband Code Division Multiple Access (WCDMA), Global System for Mobile communications (GSM), High-Speed Downlink Packet Access (HSDPA), etc. The data exchanged over the network 105 can be represented using technologies and/or formats including the hypertext markup language (HTML), the extensible markup language (XML), etc. In addition, all or some of links can be encrypted using conventional encryption technologies, for example, the secure sockets layer (SSL), Secure HTTP and/or virtual private networks (VPNs) or Internet Protocol security (IPsec). In some implementations, the entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above. Depending upon the implementation, the network 105 can also include links to other networks.
In some implementations, the network 105 is a partially public or a wholly public network, for example, the Internet. The network 105 can also be a private network or include one or more distinct or logical private networks (e.g., virtual private networks, Wide Area Networks (“WAN”) and/or Local Area Networks (“LAN”)). Additionally, the communication links to and from the network 105 can be wired or wireless (i.e., terrestrial or satellite-based transceivers). In some implementations, the network 105 is an IP-based wide or metropolitan area network.
The network 105 may have any number of configurations including a star configuration, token ring configuration or other configurations. Furthermore, the network 105 may include a local area network (LAN), a wide area network (WAN) (e.g., the Internet), and/or any other interconnected data path across which multiple devices may communicate. In some implementations, the network 105 may be a peer-to-peer network. The network 105 may also be coupled to or include portions of a telecommunications network for sending data in a variety of different communication protocols. In some implementations, the network 105 includes short-wavelength communication networks or a cellular communications network for sending and receiving data including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, wireless application protocol (WAP), electronic messages, etc.
The network interface module 202 is coupled to the network 105 by signal line 104. The network interface module 202 is also coupled to the bus 220. The network interface module 202 includes ports for wired connectivity including but not limited to USB, SD, or CAT-5, etc. The network interface module 202 links the processor 204 to the network 105 that may in turn be coupled to other processing systems. The network interface module 202 provides other conventional connections to the network 105 using standard network protocols, e.g., TCP/IP, HTTP, HTTPS and SMTP. In some implementations, the network interface module 202 includes a transceiver for sending and receiving signals using WiFi, Bluetooth® or cellular communications for wireless communication.
The processor 204 may include an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide electronic display signals to a display device. In some implementations, the processor 204 is a hardware processor. The processor 204 is coupled to the bus 220 for communication with the other components. Processor 204 processes data signals and may include various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although only a single processor is shown in
The memory 206 stores instructions and/or data that may be executed by the processor 204. In the illustrated implementation, the memory 206 stores the social network software/application 109, the stream content module 212 and the embedded stream widget module 103a. The memory 206 is coupled to the bus 220 for communication with the other components of the social network server 101. The instructions and/or data may include code for performing any and/or all of the techniques described herein. The memory 206 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory devices.
The storage device 208 may be a non-transitory memory that stores data. For example, the storage device 208 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory device. In some implementations, the storage device 208 also includes a non-volatile memory or similar permanent storage device and media, for example, a hard disk drive, a floppy disk drive, a compact disc read only memory (CD-ROM) device, a digital versatile disc read only memory (DVD-ROM) device, a digital versatile disc random access memories (DVD-RAM) device, a digital versatile disc rewritable (DVD-RW) device, a flash memory device, or some other non-volatile storage device. In some implementations, the storage device 208 stores data received from and sent to users 120 to accomplish the functionalities described herein of the embedded stream widget module 103a.
Software communication mechanism 220 may be an object bus (e.g., CORBA), direct socket communication (e.g., TCP/IP sockets) among software modules, remote procedure calls, UDP broadcasts and receipts, HTTP connections, function or procedure calls, etc. Further, any or all of the communication could be secure (SSH, HTTPS, etc). The software communication mechanism 220 can be implemented on any underlying hardware, for example, a network, the Internet, a bus, a combination thereof, etc.
The stream content module 212 can be software or routines for generating a stream of content tailored or particular to the user. In
The embedded stream widget module 103a generates a user interface element for presentation and interaction with stream content related to the canonical identifier. In some implementations, the embedded stream widget module 103a is responsive to a signal from a widget and signals from the user via the web browser 150. For example, the widget may be embedded as part of a web site or page. When a user interacts with portions of the web page, the widget generates a signal including a canonical identifier. The embedded stream widget module 103a receives and processes the signal from the widget and generate a user interface element that is sent the client device and which the user may interact. The user interface element can generate other signals, present a stream of content and initiate other actions related to the social network, for example, posting, sharing, resharing, endorsing, etc. The operation of the embedded stream widget module 103a will be described in more detail with reference to
In some implementations, the embedded stream widget module 103a determines a social signal or receives a social signal from the social network application 101 based on the received data associated with the user 120. For example, the social network application 101 or receives social data describing user social activities, endorsements, and status and determines a social signal based on the social data. For example, the embedded stream widget module 103a can filter the received social data and determine a social signal relevant to the user 120. For example, a social signal may be a signal indicating a recent social activity performed by the user 120 or social connections of the user 120 (e.g., followers, friends, family, etc.). For example, a social signal indicates that the user 120 has just submitted a post about a new car. For example, a social signal may indicate that a friend of the user's has updated the status as graduated from school.
In some implementations, the embedded stream widget module 103a determines one or more interests of the user 120 based on one or more of the social signal, the location, the context and the search data associated with the user 120. In some implementations, the embedded stream widget module 103a receives a social signal from the social network application 101 that includes one or more interests of the user. The embedded stream widget module 103a can then use this signal to determine relevant social content (e.g., relevant posts on social networks) to provide to the user 120. In some implementations, the embedded stream widget module 10a can also rank the relevant social content based on the relevance and provide the user 120 with social content that has a ranking above a predetermined threshold. In some implementations, the embedded stream widget module 103 includes the ranked content in the user interface element and provides the user interface element which may include information, formatting data, layout data, selectable links for actions or tasks, as well as other information necessary to execute such actions or tasks.
Referring now to
The communication module 302 can be software or routines for handling communications between the action handler 304, the stream producer 306, the element generator 308, the abuse/moderation module 310, the post module 314, the share module 316, the endorse module 318, the reshare module 320 and the activity module 322. The communication module 302 also facilitates communication with the other components of the social network server 101 as well as communication with the other components of the system 100 via the network interface module 202 and the network 105. For example, the communication module 302 may send signal between widgets, browsers and other devices, and the components of the embedded stream widget module 103. In some implementations, the communication module 302 is a set of instructions executable by the processor 204. In some implementations, the communication module 302 is stored in the memory 206 of the social network server 101 and is accessible and executable by the processor 204. In some implementations, the communication module 302 is adapted for cooperation and communication with the processor 204, the memory 206 and other components of the embedded stream widget module 103a via the bus 220.
The action handler 304 can be software or routines for receiving a request or other information from a widget. For example, the action handler 304 receives a request generated by a widget including the canonical identifier. The action handler 304 then initiates a process to generate a user interface element that includes stream content related to the canonical identifier. The action handler 304 receives other input related to presentation of the user interface element; and generates and sends signals to the other components of the embedded stream widget module 103 to update the user interface element or take an action related to the stream of content related to the canonical identifier. In some implementations, the action handler 304 is a set of instructions executable by the processor 204. In some implementations, the action handler 304 is stored in the memory 206 of the social network server 101 and is accessible and executable by the processor 204. In some implementations, the action handler 304 is adapted for cooperation and communication with the processor 204, the memory 206 and other components of the embedded stream widget module 103a via the bus 220.
The stream producer 306 can be software or routines for generating a stream of content related to the canonical identifier. The stream producer 306 is coupled for communication with the action handler 306. The action handler 304 sends the canonical identifier included in the request from the widget to the stream producer 306. The stream producer 306 uses the canonical identifier to generate a stream of content. The stream producer 306 is also coupled for communication with the social network application 109 to retrieve content items. In some implementations the stream producer 306 is coupled to other systems to retrieve other content items related to the canonical identifier from other sources. In some implementations, the stream producer generates a stream of related content using the canonical identifier, the identification of the user and the social signal. The identification of the user can be based upon information retrieved by the embedded stream widget module 103 from the social network application 109 or from the web browser 150 based upon the user log in the registration with a profile server. The identification of the user can be based on other factors including frequently used Internet addresses, location, device identification numbers, etc. In some implementations, the stream producer 306. In some implementations, the stream producer 306 retrieves the social signal from the social network software/application 109. In some implementations, the stream producer 306 generates the social signal. In some implementations, the stream producer 306 is a set of instructions executable by the processor 204. In some implementations, the stream producer 306 is stored in the memory 206 of the social network server 101 and is accessible and executable by the processor 204. In some implementations, the stream producer 306 is adapted for cooperation and communication with the processor 204, the memory 206 and other components of the embedded stream widget module 103a via the bus 220.
In some implementations, the stream producer 306 also determines relevant content items from the stream of content for the user. For example, the stream of content for the user may be retrieved from the stream content module 212. The stream of content will have a plurality of content items related to the canonical identifier. The stream producer 306 then identifies or filters the plurality of content items based upon a social signal for the user. That social signal may be interest of the user, activities of the user, location, a relationship of the user to other users, commenters, social graph, people using the URL, or any other social signal generated by the social network application that can be used to prioritize and filter the related stream of content items. In some implementations, the stream producer 306 also ranks one or more relevant content items by relevance to the user. In some implementations, the stream producer 306 ranks the one or more relevant content items by relevance to the user, then selects relevant content items with a ranking above a predefined threshold for presentation as part of the user interface element.
The element generator 308 can be software or routines for generating the user interface element. The element generator 308 also generates updates to the user interface element. The element generator 308 is coupled to receive an initiation signal from the action handler 304 and the stream of content items related to the canonical identifier from the stream producer 306. The element generator 308 generates a user interface that includes the stream of content items related to the canonical identifier. Example user interface elements produced by the element generator 308 are shown and described in more detail below with reference to
The abuse/moderation module 310 can be software or routines for generating updates to the user interface element related to abuse or moderation of commenting by users. The abuse/moderation module 310 also processes input signals to determine related posts, identify the author that is engaged in abusive behavior or needs moderation, to update groups of a user in the social network application or to report abuse. The abuse/moderation module 310 is coupled to receive input from the user via the action handler 304 or directly from the web browser 150. The abuse/moderation unit 310 is also coupled to provide updates to the user interface element to the element generator 308. The operation of the abuse/moderation module 310 is described in more detail below with reference to
The share module 316 can be software or routines for generating updates to the user interface element related to sharing a webpage, or posting a new comment by the user. The share module 316 also processes an input signal to send sharing the webpage, or posting the new comment to the social network 109 or other resource. In some implementations, the new post or comment includes the canonical identifier and the share module 316 creates the new post. The share module 316 is coupled to receive input from the user via the action handler 304 or directly from the web browser 150. The share module 316 is also coupled to provide updates to the user interface element to the element generator 308. The operation of the share module 316 is described in more detail below with reference to
The endorse module 318 can be software or routines for generating updates to the user interface element related to endorsements. Additionally, the endorsement module 318 processes input signals to create an endorsement for a webpage or create an endorsement for a comment related to a webpage. The endorsement module 318 is coupled to receive input from the user via the action handler 304 or directly from the web browser 150. The endorsement module 318 is also coupled to provide updates to the user interface element to the element generator 308. The operation of the endorsement module 318 is described in more detail below with reference to
The reshare module 320 can be software or routines for generating updates to the user interface element related to a re-share and processing input to generate and send a message to re-share a comment or post. For example, the re-share module 320 determines an original post, updates the user interface element, receives input, creates a re-share comment with the original post and received input, then generates and sends the re-share comment. The re-share module 320 is coupled to receive input from the user via the action handler 304 or directly from the web browser 150. The re-share module 320 is also coupled to provide updates to the user interface element to the element generator 308. The operation of the re-share module 320 is described in more detail below with reference to
The activity module 322 can be software or routines for determining activity related to the canonical identifier, generating a related activity list, and generating updates to the user interface element to present the related activity list. The activity module 322 is coupled to receive input from the user via the action handler 304 or directly from the web browser 150. The activity module 322 is also coupled to provide updates to the user interface element to the element generator 308. The operation of the activity module 322 is described in more detail below with reference to
Referring now to
Referring now to
If the input from the user was determined not be a share request in block 604, the method 600 continues to block 612 to determine whether the input was an endorsement request. If so, the method 600 updates 614 the user interface element with the share box and receive additional input from the user via that share box. The method 600 can process additional input from the user to create a new post. For example, an updated user interface element similar to that shown in
If the input from the user was determined not to be an endorsement request in block 612, the method 600 continues to block 620 to determine whether the input was a request to endorse a particular post shown in the user interface element. If so, the method 600 determines 622 the original post being shown in the user interface element to which the input relates. The method 600 then creates 624 an endorsement and sends 626 the endorsement to the social network application 109 or an endorsement server. Next, the user interface element is updated 632 to indicate that that particular post has an additional endorsement. For example, an endorsement count associated with an endorsement icon may be incremented by one. Example interfaces are shown below in
If the input from the user was determined in block 620 not to be a request to endorse a particular post shown by the user interface element, the method 600 continues to block 628 to determine whether the input was a request to retrieve activity associated with the canonical identifier. If so, the method 600 retrieves 630 activity on the social network related to the canonical identifier. In some embodiments, the activity related to the canonical identifier can be used to create a list with the activities ranked based on relevance to the user and her interest. The method 600 continues to update 632 the user interface element to include the list of related activities. An example user interface element showing a list of related activities will be described in more detail below with reference to
Referring now also to
If the input from the user was determined not to be a request to report abuse in block 640, the method 600 continues to determine 650 whether the input was a request to re-share content. If so, the method 600 determines 650 to the original post selected by the user. The method then updates 65 for the user interface element to provide an in-line re-sharing box. One example of such an interface is shown in
It should be understood that the user interface element includes a button for closing the user interface element. When input is received from the user selecting that button, the method 600 removes the user interface element for display. In some embodiments, the user interface element may automatically be closed after having been displayed for a predetermined amount of time. In some embodiments, after the user interface element is presented, it may be automatically closed if the user interacts with portions of the website visible instead of interacting with the user interface element.
Referring now to
The webpage 700 includes a header that is presented near the top of the page. The header includes information identifying the magazine, MagazineA and one or more links to transition to other pages such as new posts, most popular articles, lists, videos etc. The header also includes a search box in which the user can enter text and search the website of MagazineA. Along the left edge of the webpage 700, a plurality of buttons 704, 706 are provided that allow the user to perform an action related to this webpage that the user is viewing. For example, the buttons 704 may allow the user to share the webpage with first or second social network, post the webpage to the microblogging site, or post the website to a news site. One button 706 allows the user to endorse the webpage on a third social network as will be described in more detail below. In this example, the endorse button 706 includes an associated widget that updates how the endorsement button is presented and overlays the user interface element as will be described in more detail below with reference to
Referring now to
Referring now to
The user interface element 902 includes a header 904, a share action 906, and one or more posts 908. The header 904 includes an identifier of the social network from which the stream of content related to the canonical identifier in the user interface element 902 is being produced. The header 904 also includes a close button to close the user interface element 902. The share action 906 includes an image of the user (in this example User 1), instructions and when selected, the user interface element 902 is updated to the one shown in
Referring now to
If the user selects the endorsement button 1004 of the third post 908, the user interface element 902 is updated from the user interface element 902 of
Similar to the user interaction with the endorsement button 1004, the user may interact with comment buttons 1202 associated with each of the posts 908 in the user interface element 902.
If the user selects the comment button 1202 of the third post 908, the user interface element 902 is updated from the user interface element 902 of
Similar to the user interaction with the endorsement button 1004, the user may interact with reshare buttons 1402 associated with each of the posts 908 in the user interface element 902.
If the user selects the reshare button 1402 of the third post 908, the user interface element 902 is updated from the user interface element 902 of
Referring back to
Referring now to
Referring now to
As has been noted above, if the user selects the endorsed button 706, the web browser 150 of the user is updated to show the webpage 1900 of
In some cases, the stream producer 306 may not be able to generate any content related to the canonical identifier. In such instances, the user interface element 2002 of
In addition to the functionality offered by the user interface element 902 described above with reference to
Systems and methods for generating a user interface element for presentation and interaction with stream content related to the canonical identifier have been described. While the present disclosure is described in the context of a social network, it should be understood that the terms “products” and “services” are used interchangeably throughout this specification and are used herein to encompass their plain and ordinary meaning including, but not limited to any online service, online product, online software that provides online endorsement services to users.
In the above description, for purposes of explanation, numerous specific details were set forth. It will be apparent, however, that the disclosed technologies can be practiced without any given subset of these specific details. In other instances, structures and devices are shown in block diagram form. For example, the disclosed technologies are described in some implementations above with reference to user interfaces and particular hardware. Moreover, the technologies disclosed above primarily in the context of on line services; however, the disclosed technologies apply to other data sources and other data types (e.g., collections of other resources for example images, audio, web pages).
Reference in the specification to “one implementation” or “an implementation” means that a particular feature, structure, or characteristic described in connection with the implementation is included in at least one implementation of the disclosed technologies. The appearances of the phrase “in one implementation” in various places in the specification are not necessarily all referring to the same implementation.
Some portions of the detailed descriptions above were presented in terms of processes and symbolic representations of operations on data bits within a computer memory. A process can generally be considered a self-consistent sequence of steps leading to a result. The steps may involve physical manipulations of physical quantities. These quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. These signals may be referred to as being in the form of bits, values, elements, symbols, characters, terms, numbers or the like.
These and similar terms can be associated with the appropriate physical quantities and can be considered labels applied to these quantities. Unless specifically stated otherwise as apparent from the prior discussion, it is appreciated that throughout the description, discussions utilizing terms for example “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, may refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The disclosed technologies may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may include a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, for example, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memories including USB keys with non-volatile memory or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
The disclosed technologies can take the form of an entirely hardware implementation, an entirely software implementation or an implementation containing both hardware and software elements. In some implementations, the technology is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the disclosed technologies can take the form of a computer program product accessible from a non-transitory computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
A computing system or data processing system suitable for storing and/or executing program code will include at least one processor (e.g., a hardware processor) coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems and Ethernet cards are just a few of the currently available types of network adapters.
Finally, the processes and displays presented herein may not be inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the disclosed technologies were not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the technologies as described herein.
The foregoing description of the implementations of the present techniques and technologies has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the present techniques and technologies to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the present techniques and technologies be limited not by this detailed description. The present techniques and technologies may be implemented in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the present techniques and technologies or its features may have different names, divisions and/or formats. Furthermore, the modules, routines, features, attributes, methodologies and other aspects of the present technology can be implemented as software, hardware, firmware or any combination of the three. Also, wherever a component, an example of which is a module, is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future in computer programming. Additionally, the present techniques and technologies are in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure of the present techniques and technologies is intended to be illustrative, but not limiting.