1. A notification system comprising:
a message server having a processor configured to send and receive electronic messages, each of the electronic messages having a message header; and
an application program interface configured to communicate with the message server, with a message interface, and with a notification interface,
wherein the application program interface is configured to provide functions allowing a user to, via the message interface, read, draft, and send the electronic messages,
wherein the application program interface is configured to apply first and second filters to the message header of at least a portion of the electronic messages received by the message server thereby resulting in respective first and second filtered messages and to cause the notification interface to display first and second graphical indicators having different shapes and colors for the respective first and second filtered messages based on the application of the respective first and second filters,
wherein the notification interface is part of a toolbar that is different from the message interface and is configured to display the first and second graphical indicators in response to the first and second filtered messages, regardless of whether the message interface is activated,
wherein the notification interface is configured to change the shape or color of the at least one of the first and second graphical indicators based on at least one newly filtered message from one of the first and second filtered messages,
wherein the application program interface is configured to provide functions allowing the user to concurrently select, via the notification interface as part of the toolbar, a different type for each of the first and second graphical indicators from first and second graphical indicator types for each of the respective first and second filters, and
wherein the first graphical indicator type is displayed as part of the toolbar in response to filtered messages associated with the first filter and the second graphical indicator type is displayed concurrently as part of the toolbar in response to filtered messages associated with the second filter.
2. The notification system of claim 1,
wherein the toolbar is included in the display of a general-purpose web browser such that at least one of the first and second graphical indicators is displayable regardless of a webpage being currently displayed by the web browser.
3. The notification system of claim 1,
wherein the application program interface is configured to provide functions allowing the user to select, via the notification interface, at least one of the first and second filters from among a plurality of filter options.
4. The notification system of claim 3,
wherein each of the filter options includes a filter parameter corresponding to at least a portion of the message header, and
the application program interface is configured to cause the notification interface to display at least one of the first and second graphical indicators for those of the first and second filtered messages whose message header matches the filter parameter of at least one of the first and second filters and to cause the notification interface to not display the at least one of the first and second graphical indicators for those of the first and second filtered messages whose message header does not match the filter parameter of the at least one of the first and second filters.
5. The notification system of claim 4, wherein the application program interface is configured to, via the message interface, update a previously displayed graphical indicator in response to the newly filtered message whose message header matches the filter parameter of the at least one filter.
6. The notification system of claim 4, wherein, when a portion of the message header of at least one of the received messages being filtered matches the filter parameter of at least one of the first and second filters and at least one of the first and second graphical indicators displayed by the notification interface includes information contained in the portion of the message header.
7. The notification system of claim 1, further comprising:
a database configured to communicate with the application program interface and to store at least one of the first and second filters.
8. The notification system of claim 1,
wherein the message server is an email server and the electronic messages are email messages.
9. The notification system of claim 1, wherein the application program interface is configured to provide functions allowing the user to select, via the notification interface, a type of at least one of the first and second graphical indicators from among more than one graphical indicator type options.
10. A method comprising:
causing a message server to receive electronic messages, each of the electronic messages having a message header;
causing a processor to apply first and second filters to the message headers of the received messages thereby resulting in first and second filtered messages; and
causing the processor to display, via a notification interface, first and second graphical indicators having different shapes and colors for the respective first and second filtered messages based on the application of the respective first and second filters, at least one of the first and second graphical indicators being for displaying at least one of a priority, size, and message content from the filtered message only when at least one portion of the message header matches a filter parameter of at least one of the applied first and second filters,
wherein the notification interface is part of a toolbar that is different from a message interface that is used by the processor to provide functions allowing a user to read, draft, and send at least one of the electronic messages,
wherein the first and second graphical indicators are displayed by the notification interface in response to the first and second filtered messages, regardless of whether the message interface is activated,
wherein the shape or color of at least one of the first and second graphical indicators is changed by the notification interface based on at least one newly filtered message from one of the first and second filtered messages,
wherein the notification interface, as part of the toolbar, provides functions allowing the user to concurrently select a different type for each of the first and second graphical indicators from first and second graphical indicator types for each of the respective first and second filters, and
wherein the first graphical indicator type is displayed as part of the toolbar in response to filtered messages associated with the first filter and the second graphical indicator type is displayed concurrently as part of the toolbar in response to filtered messages associated with the second filter.
11. The method of claim 10, wherein the toolbar is included in the display of a general-purpose web browser such that at least one of the first and second graphical indicators is displayable regardless of a webpage being currently displayed by the web browser.
12. The method of claim 10, further comprising:
allowing the user to select, via the notification interface, at least one of the first and second filters from among a plurality of filter options.
13. The method of claim 10, further comprising:
causing the processor to update, via the message interface, a previously displayed graphical indicator in response to the newly filtered message whose message header matches the filter parameter of at least one of the first and second filters.
14. The method of claim 13,
wherein, when a portion of the message header of at least one of the received messages matches the filter parameter of at least one of the first and second filters and at least one of the first and second graphical indicators being displayed by the notification interface includes information contained in the portion of the message header.
15. The method of claim 10, further comprising:
causing the processor to provide functions allowing the user to select, via the notification interface, a type of at least one of the first and second graphical indicators from among a plurality of graphical indicator type options.
16. A non-transitory computer readable medium tangibly embodying computer-executable instructions, the instructions being executable by a processor to cause the processor to:
apply first and second filters to message headers of electronic messages received by a message server thereby resulting in first and second filtered messages;
display, via a notification interface, first and second graphical indicators having different shapes and colors for the respective first and second filtered messages based on the applied respective first and second filters, at least one of the first and second graphical indictors being displayed for at least one of the first and second filtered messages only when at least one portion of the message header matches a filter parameter of at least one of the applied first and second filters associated with a specific sender;
change, via the notification interface, a shape or color of at least one of the first and second graphical indicators based on at least one newly filtered message from one of the first and second filtered messages,
wherein the notification interface is part of a toolbar that is different from a message interface that is used by the processor to provide functions allowing a user to read, draft, and send at least one of the electronic messages,
wherein the first and second graphical indicators are displayed by the notification interface in response to the first and second filtered messages, regardless of whether the message interface is activated,
wherein the notification interface, as part of the toolbar, provides functions allowing the user to concurrently select a different type for each of the first and second graphical indicators from first and second graphical indicator types for each of the respective first and second filters, and
wherein the first graphical indicator type is displayed as part of the toolbar in response to filtered messages associated with the first filter and the second graphical indicator type is displayed concurrently as part of the toolbar in response to filtered messages associated with the second filter.
17. The non-transitory computer readable medium of claim 16,
wherein the toolbar is included in the display of a general-purpose web browser such that at least one of the first and second graphical indicators is displayable regardless of a webpage being currently displayed by the web browser.
18. The non-transitory computer readable medium of claim 16, wherein the instructions are executable by a processor to cause the processor to:
allow the user to select, via the notification interface, at least one of the first and second filters from among a plurality of filter options.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for optimizing a cloud-computing environment, the method comprising:
a processor of a computer system receiving extrinsic data that describes a set of virtual resources of the cloud-computing environment;
the processor selecting a set of candidate resource configurations, wherein every virtual resource of the set of virtual resources is associated with a plurality of candidate resource configurations of the set of candidate resource configurations in a one-to-many relationship;
the processor further selecting a set of candidate environment configurations, wherein each candidate environment configuration of the set of candidate environment configurations comprises at least one candidate resource configuration of the set of candidate resource configurations;
the processor provisioning a virtual test environment, wherein the virtual test environment simulates the cloud-computing environment, and wherein the virtual test environment comprises a virtual representation of each virtual resource of the set of virtual resources of the cloud-computing environment;
the processor configuring the virtual test environment by successively loading the virtual test environment with combinations of a configuration of at least two candidate environment configurations of the set of candidate environment configurations and a configuration of at least two candidate resource configurations of the set of candidate resource configurations, wherein the at least two candidate resource configurations are associated with a same tested resource of the set of virtual resources;
the processor evaluating a first resource-fitness characteristic of a first loaded resource configuration of the at least two candidate resource configurations, wherein the first loaded resource configuration is associated with the same tested resource of the set of virtual resources, and wherein the first resource-fitness characteristic is assigned a value as a function of an operation of the same tested resource within the virtual test environment while the virtual test environment is loaded with the first loaded resource configuration;
the processor deriving a value of an environment-fitness characteristic of a first loaded environment configuration of the at least two candidate environment configurations as a function of an operation of the virtual test environment while the virtual test environment is loaded with the first loaded environment configuration;
the processor ranking the at least two candidate resource configurations as a function of the evaluating and of the deriving;
the processor further ranking the at least two candidate environment configurations as a function of the evaluating and of the deriving;
the processor revising at least one candidate resource configuration of the set of candidate resource configurations and at least one candidate environment configuration of the set of candidate environment configurations as a function of the ranking and of the further ranking;
the processor repeating the configuring, the evaluating, the deriving, the ranking, the further ranking, and the revising until a termination condition is satisfied; and
the processor identifying an optimal environment configuration as a function of the further ranking.
2. The method of claim 1, wherein a first virtual resource of the set of virtual resources comprises a first set of functional blocks, wherein a first functional block of the first set of functional blocks comprises a first set of configurable parameters, and wherein a first configuration of the first virtual resource comprises a first set of values of the first set of configurable parameters.
3. The method of claim 2, further comprising:
the processor organizing the set of virtual resources, the functional blocks comprised by each virtual resource of the set of virtual resources, and the sets of configurable parameters associated with each virtual resource of the set of virtual resources into a hierarchical structure, wherein the organizing is performed as a function of the extrinsic data.
4. The method of claim 1, wherein the virtual test environment is provisioned as a function of resource constraints, projected loads, and user requirements further described by the extrinsic data.
5. The method of claim 1, further comprising:
the processor identifying a plurality of distinct subsets of a union of the at least two candidate environment configurations and the at least two candidate resource configurations; and
the processor performing multiple iterations of the loading, evaluating, and deriving, wherein each iteration of the multiple iterations comprises loading the virtual test environment with a different subset of the plurality of distinct subsets.
6. The method of claim 2, further comprising:
the processor organizing the set of all functional blocks comprised by all virtual resources of the set of virtual resources into a set of groups,
wherein a first group of the set of groups comprises all functional blocks that comprise one or more configurable parameters associated with a first resource of the set of virtual resources,
wherein a configuration of the set of first-resource configurations, of the set of candidate resource configurations, that identifies a configuration of the first resource and comprises the first group of the set of groups, and
wherein a distinct candidate configuration of the first resource is identified by a distinct set of one or more values of the one or more configurable parameters comprised by a resource configuration of the set of first-resource configurations.
7. The method of claim 2, wherein revising a first candidate resource configuration comprises revising one or more values of one or more configurable parameters comprised by the first candidate configuration, wherein the first candidate resource configuration is selected from the set of candidate resource configurations by an application of a first statistical function, wherein the one or more configurable parameters are selected from a set of all configurable parameters comprised by the first candidate resource configuration by an application of a second statistical function, and wherein the revised one or more values are selected by an application of a third statistical function.
8. The method of claim 7, wherein the first, second, or third statistical function comprises a random selection.
9. The method of claim 2, wherein the revising at least one candidate resource configuration comprises producing and adding two new configurations to the set of candidate resource configurations by crossing two existing configurations of the set of candidate resource configurations, wherein the two existing configurations each identify a distinct configuration of a same crossover resource of the set of virtual resources, and wherein crossing a first configuration of the two existing configurations with a second configuration of the two existing configurations comprises:
the processor selecting one or more configurable parameters common to both of the two existing configurations; and
the processor swapping a first set of values of the selected one or more configurable parameters comprised by the first configuration with a second set of values of the selected one or more configurable parameters comprised by the second configuration,
wherein the two existing configurations are selected from the set of candidate resource configurations by an application of a first statistical function, and wherein the selected one or more configurable parameters are selected from a set of all configurable parameters comprised by the two existing configurations by an application of a second statistical function.
10. The method of claim 9, wherein the first statistical function or the second statistical function comprises a random selection.
11. The method of claim 1, wherein the termination condition is satisfied when one repetition of the configuring, the evaluating, the deriving, the ranking, the further ranking, and the revising does not substantially alter the set of candidate resource configurations and the set of candidate environment configurations, wherein the substantially altering comprises producing a difference in one or more values of one or more configurable parameters comprised by the set of candidate resource configurations or by the set of set of candidate environment configurations, such that the produced difference exceeds a predetermined threshold level.
12. The method of claim 1, wherein the termination condition is selected from a group comprising: repeating the provisioning, the configuring, the evaluating, the deriving, the ranking, the further ranking, and the revising a predetermined number of times; consuming an amount or number of resources that exceeds a predetermined threshold level; and exceeding a time limit.
13. The method of claim 1, wherein the identifying an optimal environment configuration is a further function of the revising.
14. The method of claim 1, further comprising providing at least one support service for at least one of creating, integrating, hosting, maintaining, and deploying computer-readable program code in the computer system, wherein the computer-readable program code in combination with the computer system is configured to implement the receiving, selecting, further selecting, provisioning, configuring, evaluating, deriving, ranking, further ranking, revising, repeating, and identifying.
15. A computer program product, comprising a computer-readable hardware storage device having a computer-readable program code stored therein, said program code configured to be executed by a processor of a computer system to implement a method for optimizing a cloud-computing environment, the method comprising:
the processor receiving extrinsic data that describes a set of virtual resources of the cloud-computing environment;
the processor selecting a set of candidate resource configurations, wherein every virtual resource of the set of virtual resources is associated with a plurality of candidate resource configurations of the set of candidate resource configurations in a one-to-many relationship;
the processor further selecting a set of candidate environment configurations, wherein each candidate environment configuration of the set of candidate environment configurations comprises at least one candidate resource configuration of the set of candidate resource configurations;
the processor provisioning a virtual test environment, wherein the virtual test environment simulates the cloud-computing environment, and wherein the virtual test environment comprises a virtual representation of each virtual resource of the set of virtual resources of the cloud-computing environment;
the processor configuring the virtual test environment by successively loading the virtual test environment with combinations of a configuration of at least two candidate environment configurations of the set of candidate environment configurations and a configuration of at least two candidate resource configurations of the set of candidate resource configurations, wherein the at least two candidate resource configurations are associated with a same tested resource of the set of virtual resources;
the processor evaluating a first resource-fitness characteristic of a first loaded resource configuration of the at least two candidate resource configurations, wherein the first loaded resource configuration is associated with the same tested resource of the set of virtual resources, and wherein the first resource-fitness characteristic is assigned a value as a function of an operation of the same tested resource within the virtual test environment while the virtual test environment is loaded with the first loaded resource configuration;
the processor deriving a value of an environment-fitness characteristic of a first loaded environment configuration of the at least two candidate environment configurations as a function of an operation of the virtual test environment while the virtual test environment is loaded with the first loaded environment configuration;
the processor ranking the at least two candidate resource configurations as a function of the evaluating and of the deriving;
the processor further ranking the at least two candidate environment configurations as a function of the evaluating and of the deriving;
the processor revising at least one candidate resource configuration of the set of candidate resource configurations and at least one candidate environment configuration of the set of candidate environment configurations as a function of the ranking and of the further ranking;
the processor repeating the configuring, the evaluating, the deriving, the ranking, the further ranking, and the revising until a termination condition is satisfied; and
the processor identifying an optimal environment configuration as a function of the further ranking.
16. The computer program product of claim 15, wherein a first virtual resource of the set of virtual resources comprises a first set of functional blocks, wherein a first functional block of the first set of functional blocks comprises a first set of configurable parameters, and wherein a first configuration of the first virtual resource comprises a first set of values of the first set of configurable parameters.
17. The computer program product of claim 15, wherein the termination condition is satisfied when one repetition of the configuring, the evaluating, the deriving, the ranking, the further ranking, and the revising does not substantially alter the set of candidate resource configurations and the set of candidate environment configurations, wherein the substantially altering comprises producing a difference in one or more values of one or more configurable parameters comprised by the set of candidate resource configurations or by the set of set of candidate environment configurations, such that the produced difference exceeds a predetermined threshold level.
18. A computer system comprising a processor, a memory coupled to said processor, and a computer-readable hardware storage device coupled to said processor, said storage device containing program code configured to be run by said processor via the memory to implement a method for optimizing a cloud-computing environment, the method comprising:
the processor receiving extrinsic data that describes a set of virtual resources of the cloud-computing environment;
the processor selecting a set of candidate resource configurations, wherein every virtual resource of the set of virtual resources is associated with a plurality of candidate resource configurations of the set of candidate resource configurations in a one-to-many relationship;
the processor further selecting a set of candidate environment configurations, wherein each candidate environment configuration of the set of candidate environment configurations comprises at least one candidate resource configuration of the set of candidate resource configurations;
the processor provisioning a virtual test environment, wherein the virtual test environment simulates the cloud-computing environment, and wherein the virtual test environment comprises a virtual representation of each virtual resource of the set of virtual resources of the cloud-computing environment;
the processor configuring the virtual test environment by successively loading the virtual test environment with combinations of a configuration of at least two candidate environment configurations of the set of candidate environment configurations and a configuration of at least two candidate resource configurations of the set of candidate resource configurations, wherein the at least two candidate resource configurations are associated with a same tested resource of the set of virtual resources;
the processor evaluating a first resource-fitness characteristic of a first loaded resource configuration of the at least two candidate resource configurations, wherein the first loaded resource configuration is associated with the same tested resource of the set of virtual resources, and wherein the first resource-fitness characteristic is assigned a value as a function of an operation of the same tested resource within the virtual test environment while the virtual test environment is loaded with the first loaded resource configuration;
the processor deriving a value of an environment-fitness characteristic of a first loaded environment configuration of the at least two candidate environment configurations as a function of an operation of the virtual test environment while the virtual test environment is loaded with the first loaded environment configuration;
the processor ranking the at least two candidate resource configurations as a function of the evaluating and of the deriving;
the processor further ranking the at least two candidate environment configurations as a function of the evaluating and of the deriving;
the processor revising at least one candidate resource configuration of the set of candidate resource configurations and at least one candidate environment configuration of the set of candidate environment configurations as a function of the ranking and of the further ranking;
the processor repeating the configuring, the evaluating, the deriving, the ranking, the further ranking, and the revising until a termination condition is satisfied; and
the processor identifying an optimal environment configuration as a function of the further ranking.
19. The computer system of claim 18, wherein a first virtual resource of the set of virtual resources comprises a first set of functional blocks, wherein a first functional block of the first set of functional blocks comprises a first set of configurable parameters, and wherein a first configuration of the first virtual resource comprises a first set of values of the first set of configurable parameters.
20. The computer system of claim 18, wherein the termination condition is satisfied when one repetition of the configuring, the evaluating, the deriving, the ranking, the further ranking, and the revising does not substantially alter the set of candidate resource configurations and the set of candidate environment configurations, wherein the substantially altering comprises producing a difference in one or more values of one or more configurable parameters comprised by the set of candidate resource configurations or by the set of set of candidate environment configurations, such that the produced difference exceeds a predetermined threshold level.