text:
|Publication number
|Publication type
|Application number
|Publication date
|Jul 28, 2005
|Filing date
|Dec 8, 2004
|Priority date
|Dec 8, 2003
|Also published as
|Publication number
|Christopher Kasten, Greg Seitz
|Original Assignee
|Kasten Christopher J., Greg Seitz
|Export Citation
|BiBTeX, EndNote, RefMan
|Patent Citations (27), Referenced by (51), Classifications (21), Legal Events (3)
|External Links: USPTO, USPTO Assignment, Espacenet
This application claims the benefit of U.S. Provisional Application No. 60/528,053 filed on Dec. 8, 2003; U.S. Provisional Application No. 60/528,237 filed on Dec. 8, 2003; and U.S. Provisional Application No. 60/528,238 filed on Dec. 8, 2003; the disclosures of all of these applications are incorporated by reference herein.
The invention relates generally to data management and more particularly to cache customization.
Technological advancements have led to more sophisticated and powerful data management systems. Data processing in such systems require efficient handling a large number of data transactions (e.g. data reads, writes, etc.).
The advent of the Internet and the World-Wide Web (WWW) combined with the development of network-based commerce system applications have enabled companies to transact business globally in real-time. Such network-based commerce systems may process large amounts of data transactions from geographically dispersed users. The users may enter transactional requests over communications lines that result in the persistant storage of data in a master information source (data store). In several cases, back-end systems (e.g., database servers, etc.) support the data store and interact with other systems or services to map the data between a persistent or relational form into an object form that is more readily utilized by software applications.
Furthermore, software developers typically expend a large amount of time and energy in managing access related to the data store and in managing memory usage within their applications, which is used to manipulate data acquired from the data store within the scope of their applications. One tool that developers rely on for improving processing throughput of their applications is a cache manager or cache service. However, cache services are typically not customizable and are not extensible by the developers within their applications. This is so, because caching services are generally implemented as black boxes having a defined set of generalized and static services or features. As a result, data store access and memory management are tasks that developers still largely have to account for within their individual applications. These tasks are time consuming and in some cases not optimal because some developers may not be as adept as other developers in handling these tasks.
In various embodiments, extensible caching services and techniques are presented. An application's access to a data store is transparent to the application. An application can customize, extend, and instantiate its own caching environment. The caching techniques or services utilized within the caching environment of the application provide seamless and transparent access to data residing within the data store while managing the applications' memory usage in optimized manners.
In an embodiment, the API which interfaces applications to the custom-caching service is implemented in an Object-Oriented (OO) fashion. Accordingly, application source code includes class files that provide the API and that reference different aspects and features of the custom-caching service through objects which are defined in classes and each class has a variety of methods which access the features. The objects abstract and encapsulate different aspects associated with caching. The API provides application-specific environments which can custom control and access different features associated with caching; these features and control have traditionally been unavailable to developers of applications.
Each application processes on a machine with its own processing space or memory heap. A single application may have a plurality of threads that share the same heap. Each thread may independently interact with the custom-caching service. Alternatively, collections of threads may jointly interact with the custom-caching service. Moreover, the custom-caching service may synchronize data associated with different applications having different heaps.
The custom-cache service provides instances of caches to the application threads. As used herein a cache is intended to include an abstracted and encapsulated version of a cache store. The cache store includes memory locations within heaps of the application threads. The application threads define their caches and access them through the API which interacts with the custom-cache service. In this manner, control over the actual cache stores is transparent to the application threads and managed by the custom-cache service. Accordingly, memory management of an application thread's heap can be delegated to the custom-cache service while access control is provided through higher-level interfaces associated with the API, which is directly accessible to the application threads.
In addition to provide customized caching, embodiments of the custom-caching service reduces the load on data stores. This is so, because transactions to the data store are substantially reduced by pre-acquiring data frequently used by threads in single transactions to the data store and by sharing frequently used data across multiple threads through a single cache store. As a result, threads that perform numerous data store transactions can reduce the number of their transactions to the data store. Moreover, because data consumed by the threads are immediately available when used from the cache store, the processing throughput of the threads can be substantially improved.
The custom-caching service may support two types of caches: a global cache and a thread local cache. The threads have control through calls to the API to define the type of cache that best suits the programming environment of the threads. A global cache includes data within its cache store that may be shared across multiple threads of an application. Data of a global cache is typically immutable; meaning that the data is typically static to semi-static in state and refreshed at intervals based on configurable policies enforced by the custom-caching service. A thread local cache includes data within its cache store that is consumed and accessed only by a specific thread that creates the thread local cache. Furthermore, a single thread may utilize both a global cache and a thread local cache. Data within a thread local cache may be changed, dynamic, and refreshed based on instructions issued by the thread that created the thread local cache.
Initially, an application uses a call selected from the API to declare an instance of a cache within the programming logic of the application. The program also uses a variety of other calls within its programming logic to drive the processing of the custom-caching service. The processing of the custom-caching service is activated and executed during the execution of the application.
With this example context, the processing of the custom-caching service is now described with respect to
Initially, before supplying configuration information, the application defines a key manger that includes one or more key definitions. The key definitions may be viewed as an application supplied or pre-configured service or object for key types, such as an identifier used within a data object to uniquely identify that data object. For example, one key type might be a social security number (SSN) field name of a data object that is a customer record from on online merchant's customer database. Each key definition accepts a value associated with a piece of data assigned to a specific key type. For example, a particular key definition may accept the following parameter 555-55-5555, where the particular key definition is associated with a type SSN. In response to the value supplied to the key definitions, the key definitions generate a unique key. The key manager also knows how to accept a data object, parse it, and call each unique key definition associated with the different key types included within that data object. In some embodiments, the key manager is a generic object that is simply configured within the application by accessing the API to return a pointer to an instance of a generic key manager.
The configuration information may include a variety of information, such as an identifier for a data source and a mechanism, such as a search query, for acquiring a subset of data from the data source. In an embodiment, the custom-caching service may provide a library of generic or known data sources having generic instances of key managers. In these embodiments, the application can supply configuration information by identifying through the API the generic data sources and/or the generic instances of key managers. Thus, the application may directly or indirectly supply the configuration information acquired, at 120, by the custom-caching service.
At 130, the custom-caching service loads or populates portions of data into a cache store associated with the newly created cache. Again, the cache store is not directly accessible to the application. The application uses calls within its programming logic to define, configure, and access a cache. The custom-caching service manages and maintains the data and the cache store, operations to set, get, write, flush, and/or update the data are provided through the API to the application for instructing the custom-caching service to act on the cache store on the application's behalf.
During a load, the custom-caching service passes a data object or a portion of data to each key definition associated with that object through the key manager that was supplied by the application. The key definitions for each key type parse the data object and extract the necessary values for form their respective keys. This results in one or more keys from the key definitions. These keys are used within an index of the cache store. Each index entry includes a key and a pointer to where the data object physically resides within the cache store.
The portions of the data may be loaded by the custom-caching service into the cache store in a variety of manners. In an embodiment, at 131, the custom-caching service may have received via configuration information an identifier to a data store (e.g., database, collection of data bases organized as a data warehouse, directories, electronic files, or various combinations of the any of these) and a query, which defines the portions of data to be loaded into the cache store.
In an embodiment, at 132, the custom-caching service may be instructed by the application to load all portions of the data into the cache store. This is useful when the cache is a global cache and where the volume associated with the data is not excessive and is manageable within the heap or cache store.
In another embodiment, the custom-caching service may be instructed by the application to load the portions directly at a given point in time during the execution of the application. This is useful when the cache is a thread local cache and where the volume of the data is perhaps excessive and it is desired to have only a portion in memory at any one time or where the data is going to be changed by the application. It may also be that the application wants be sure that when it instructs the custom-caching service to load a specific portion of the data that the portion is going to be as up-to-date as is possible.
Additionally, at 133, some portions of the data may be acquired by the custom-caching service from a plurality of perhaps disparate data sources. For example, the application may load data from one database for some data types being consumed by the application and simultaneously add data from one or more different databases for other data types being consumed.
Control of data types, data sources, and loading conditions of data which is loaded into the cache store is delegated to the application through calls to the API within the programming logic of the application. Some control is defined by the operations taken by the application, such as when the application uses an API call or operation associated with a global cache, implying that the all the data is to be immediately loaded by the custom-caching service into the cache store. Other control is more explicitly exercised by the application, such as when the application accesses calls or operations associated with a thread local cache, indicating that the application is assuming direct control over when data is loaded and/or modified within the cache store.
In an embodiment, at 134, the custom-caching service may iterate the load processing in response to methods associated with the cache. These methods are accessed via the API during the execution of the application. Again, this scenario is typically indicative of a thread local cache where the methods are calls or operations of the API and where the application selectively desires to perform loads during certain execution states of the application, but may also be used to load a global cache as data is demanded, assuming the data in the data source (e.g., data store, database, etc.) is typically static or semi-static.
At 140, the custom-caching service returns to the application a reference to the cache. The application is now free to perform a variety of operations on the data loaded within the cache store via accessing methods associated with the reference to the cache. To do this, the application will call specific key definitions within its programming logic and pass values for specific key types. The key definitions return a key that is symmetric with a key produced previously during the load by the custom-caching service. The combined application-generated key and the reference to the cache provide enough information to the custom-caching service for locating the appropriate cache store associated with the cache reference and for locating the appropriate data within the cache store. Again, the application-supplied key provides a direct location within the cache store index and that location includes a pointer to the physical location of the data desired by the application.
Once the portions of the data are indexed and loaded within the cache store, the custom-caching service may also, at 141, refresh, flush, or update the data or selective portions of the data within the cache store or to a data store, such as when an update is being performed. A variety of mechanisms may drive the custom-caching service to perform these types of operations such as when intervals for performing these operations are configured into the custom-caching service or defined within a policy that is dynamically enforced by the custom-caching service. Other techniques may include performing the operations after receiving a specific instruction from the application, performing the operations after receiving an event trigger raised by a data store when a field or table of the data store is modified, and/or performing the operations after receiving an event raised by a global administrator service that communicates with the custom-caching service.
Some of the processing described above prior to 140 may have or have not occurred before step 140. For example, data may not have been loaded to the cache store and index keys to portions of the data may not have been established. In this manner, the number and arrangement of the processing blocks of
As stated above and as indicated, at 150, in some embodiments where the cache is a global cache the custom-caching service may share the cache store and the data loaded therein with other threads of the application. The threads acquire the reference to the cache from the application or parent thread and may access the cache store through the reference as desired.
In still another embodiment, also at 150, the custom-caching service may synchronize loaded data within the cache store associated with the application's heap with other loaded data within other cache stores associated with different applications having different programming heaps. This may be useful when the same data acquired from the same data source is loaded within two different cache stores and there is a desire to maintain synchronicity of the data state.
As will be demonstrated below, the key service provides novel features that permit data stored within cache stores to be uniquely associated, grouped, indexed, shared, and retrieved from the cache store. In this manner, the key service extends the functionality of the custom-caching service of
At 210, the key service acquires a key manager for a particular cache. Acquisition may be achieved via a pointer supplied by the application to the key service. The key manager includes a variety of key definitions. The key definitions provide symmetrical keys between the application and the key service. Each key definition operates on a particular key type associated with a data object. A key definition returns a symmetric version of a key in response to receive a particular value for a particular key type. The keys returned from the key definition provide name spacing that delineates between different key types for the same data object type, and delineates between different key types for different data object types, so that keys with equivalent data, which pertain to different values and/or objects, can be delineated between the index. This is typically achieved through different actual class types for the key types, which are used during index lookup. The key definition may be supplied the direct data, or may parse the data from an instance of an object that it relates to, in order to create a key object.
At 220, the key service populates a cache store by using unique key definitions acquired from the key manager or processed through the key manager. Moreover, for each portion of data received in a data object for loading, an appropriate key definition is processed. In an embodiment, at 221, the key service may initiate the population processing in response to an instruction received from the application. In this manner, the application may perform on demand loading, such as when the application is using a cache associated with a thread local cache, or loading a global cache based on demand for data.
At 230, a key is received from an appropriate key definition for each portion of the data during the population, at 220. The key is consumed by the key service for acquiring a specific unique location within an index associated with the cache store. At 240, that key is stored in the index along with a reference to the data associated with the portion of the data that is being processed. The reference is stored within an entry value of the index; the location of the entry value within the index is acquired via the key.
The processing at 220, 230, and 240 is iterated, at 250, for identified key types and key definitions associated with the data. Thus a single piece of data or single data object may have a plurality of keys and entries housed in the index of the cache store and each of those keys include the reference to the physical location of the data object within the cache store.
At 241, the storing of the reference may be modified to accommodate collection keys. A collection key is provided by a special type of a key definition. A collection key is a logical grouping of portions of the data associated with same key type. For example, suppose that the application defined via a key definition that each set of data returned from the announcement data store where announcements associated with the same ISP be grouped into buckets, and the buckets associated with a collection key. In the example, maybe 100 announcement records are grouped into a first bucket with a first collection key because they all have an ISP value of "AOL" and another 10 customer records are grouped into a second bucket having a second collection key because they all have an ISP value of "Roadrunner." The groupings that define a collection key may be established by the application through the API using key definitions, operations, or calls. One appreciates, that this is a powerful feature since it can, among other things, preorder data within the cache and group data into buckets, such that the order and buckets can be later accessed without having to perform an additional operation with the application when the order or buckets are needed.
To accommodate this novel collection key there may be multiple portions of the data that have the same key to the same entry value within the index. The key service knows that the key definition used to acquire the keys was a collection key definition. Therefore, the key service will handle the situation during subsequent iterations of the key service when it encounters a portion of data that indexes to an already populated entry value which already has a reference included therein. Thus, at 241, the key service will acquire the pre-existing reference, which will typically be a list type structure, and add the pointer of the new data object to the list. If an entry does not already exist for a collection key entry, then it will create a new list structure and add the new data object to this list and put the collection key and list into the cache store. Thus, the duplicate references are populated as a plurality of entries within the data structure. In this manner, the application has logically grouped portions of its data loaded within the cache store into collections for future ease of reference and direct access.
In some embodiments, an application may try to access data not yet loaded within the cache store. In these cases, the key service may return a null reference, indicating that an entry does not exist, or generate an exception. At this point, the application can attempt to acquire the data from a data store and then load the data into the cache store through methods associated with the cache reference and then properly acquire the data. Additionally, if the data is not found in the data store, then the application can put a marker object into the cache for this particular key, to indicate that an object does not exist for this key, so that subsequent thread requests will not bother calling the data store to look for the data that does not exist, thus reducing load on the data store. Lazy loading may occur with both global cache types and thread local cache types.
Once data is loaded into the cache store, the application can retrieve selective portions of the loaded data by passing the reference to the cache and a selective key within an API call or operation to acquire the data from the cache store. This is achieved by using the selective key to locate the entry value within the index of the cache store, acquiring the populated reference, and retrieving the selective portions of the loaded data from a physical location within the cache store identified by the reference.
In an embodiment, the cache may also receive from a different thread of the application a specific key into the index along with a reference to the cache. In response to this, the key service returns the data acquired by traversing the reference located at the entry value location within the index pointed to by the specific key, which was supplied by the different thread.
In yet another embodiment, at 260, a write or update operation may be subsequently received from either the application or a different thread of the application. The operations include a reference to the cache, a new piece of data, and a key. The write operation, at 261, acquires the appropriate index entry value location pointed to by the key, and acquires the reference to the location of the data within the cache store, and replaces the data within the cache store with a new piece of data. This update is realized by all key entries for this object in the index, as they hold a reference to a cache entry holder object, which has a reference to the data object, which is what is actually updated; thus, updating the data object reference for one key cache entry updates it for all key entries for that object. A write occurs with a cache reference associated with a thread local cache. An update operation acquires the matching location in the same manner, but uses other services to write the matching data in the cache store to one or more data sources or data stores, or is handled externally at the discretion of the application.
At 310, the thread local cache service, receives a request from a thread to obtain a reference to its thread local cache. The thread local cache instance is created for a thread if one does not already exist within the thread local cache service for it. The thread local cache instance receives an instruction from the application thread to begin caching data objects that the thread encounters during its processing. This instructs the internals of the thread local cache instance to enable operations or methods on this thread cache instance to read and put objects in the thread local cache's cache store. It is appreciated that other techniques are permissible to obtain an instance of a thread local cache. For instance, in an OO implementation, the cache may be utilize a specific thread local cache constructor, may pass specific parameters or identifiers to a generic cache constructor, or simply issue a begin or some other type of operation that identifies a generic cache as being associated with a thread local cache.
At 320, the thread local cache acquires a key manager having key definitions from an application thread as it visits the objects that handle the loading of specific object types into the thread local cache. Techniques for generating and providing key definitions were discussed in detail with respect to the key service of
Additionally, in some embodiments, at 321, some key definitions received from the application thread by the thread local cache may be for different object types. This means that multiple types of data objects from multiple data sources may be defined within the thread's thread local cache; such the key definitions are significantly different from one another and are specific to the different object types.
At 330, the thread instructs the thread local cache to selectively load portions of data to the cache store via API calls on thread local cache. At this point, the thread local cache service interactively and in a piecemeal fashion, as directed by the thread, assembles the desired data into the cache store using the key manager and its key definitions (in manners discussed above) and in the process constructs an index into the cache store for acquiring the desired data. In addition, at 331, the key definitions supplied at 320 may define a number of the key definitions as collection keys. Examples of a collection keys were provided above with respect to the key service of
At some point during the execution life-cycle of the thread, it may reference, at 340, some specific portions of the loaded data within the cache store. A reference may be made with a variety of API operations or calls for such things as, by way of example only, getting, flushing, refreshing, reading, writing, and/or updating. The API operations or calls include parameters associated with a reference to the thread local cache and keys. The keys are symmetrical between the thread and the thread local cache service because both them used the same key definitions to acquire the keys. The keys possessed by the thread local cache service provide locations within an index of the cache store and the entry values identified at those locations includes references the actual locations within the cache store where the desired data resides.
For example, at 340, the thread may utilize API calls or operations to modify some portions of the loaded data or to update data sources associated with some portions of the loaded data housed and managed by the thread local cache service via the thread local cache reference. To do this, the thread local cache service utilizes the reference to the thread local cache to identify the specific cache store and the keys into index locations. Armed with this information, the thread local cache can use the keys to acquire the desired portions of data for purposes of retrieving, flushing, writing new data, updating the existing data to one or more data stores, etc.
It should be noted that the thread local cache service may manage a plurality of thread local caches for a variety of threads. In a similar manner, the custom-caching service and the key service of the
The custom cache system 400 abstracts cache stores (memory heap space) to a series of higher-level references referred to as caches. An API associated with the caches permit applications or threads of an application to custom control and insert, remove, modify, and/or write data having a variety of data types to and from the cache stores via references to the caches and via calls to methods or operations of the API. The backend processing of the API calls drive some of the processing associated with the custom cache system 400. Other processing of the custom cache system 400 may be driven by policies or administrator interfaces communicating with the thread local cache service.
The components of the custom cache system 400 are presented for purposes of illustration only and are therefore not intended to limit embodiments of the custom cache system 400. Accordingly, some components may be omitted, some other components may be added, and some collections of the components may be combined into single components. All such arrangements are intended to fall within the scope of the embodiments presented here, if such arrangements provide for the novel techniques for custom caching as described herein.
In one implementation, the custom cache system 400 is implemented as an OO system having an OO API, which is accessible to the applications and the threads of an application. The objects may be defined within a programming language as classes having public methods accessible to the applications and threads and protected methods accessible to certain objects defined within the custom cache system 400. The classes may inherit from one another and may permit polymorphism. Of course it is recognized that any software implementation of the custom cache system 400 is intended to fall within the scope of the embodiments presented herein, thus the custom cache system 400 may also be implemented in other manners, such as a series of services defined with traditional structured programming, and the like.
The custom cache system 400 includes a key manager 401A, key definitions 401B, a global cache manager 402B, a thread local cache manager 402C, a cache entry loader 403A, a cache store 403B, and a cache loader 404. In some embodiments, the custom cache system 400 also includes a cache maintainer 405, a cache eviction policy 406, and/or a cache statistic collector 407. The operations and features of the custom cache system 400 operate on and through instances of caches 402A. Each of these will now be discussed in turn.
The key manager 401A is responsible for managing key definitions 401B. The key manager 401A and the key definitions 401B and configured and or created through API operations processed by an application or thread in connection with an instance of a cache 402A. The key definitions 401B know how to parse different types of data or data objects to acquire values to generate keys. Each key definition 401B is associated with a specific key type and when supplied a value for data associated with a specific key type generates a symmetric key. The key is symmetric because both the application and the cache entry loader 403A can produce identical keys when using the same key type and the same value. Some key definitions may permit the creation of keys associated with logical collections of data. Techniques for achieving this were discussed in detail above.
The cache managers 402B and 402C create and manage instances of caches 402A with cache stores 403B on behalf of the application threads. The cache managers 402B and 402C return references to created cache instances 402A to the application threads. The application threads use the cache instance 402A reference to perform operations via its API. A cache instance 402A may be a global cache that is shared between threads or a cache may be a thread local cache that is exclusively associated and accessed by a particular thread. The cache managers 402B and 402C interact with the other components of the custom cache system 400 via the references to specific cache instances 402A for purposes of managing the cache stores 403B and maintaining their integrity.
The cache entry loader 403A is provided references to the key manager 401A and cache loader 404 by the cache instance 402A, through which it accesses the key manager 401A and its key definitions 401B that it contains. The cache entry loader 403A holds the reference to the cache store 403B. The cache loader 404 is responsible for determining where and how to acquire data from a variety of data sources, where the data is potentially associated with a variety of disparate data types or objects. Thus, the data access layer is abstracted and hidden from the application threads. This makes the application logic that interacts with the cache instance 402A more portable and less coupled to the specific data sources and their methods for acquiring data, such that should a data source change its interface the application threads would still be operational because it is the cache loader 404 that manages data stores and their interfaces.
The cache loader 404 may cause all data identified by an application to be loaded into the cache store 403B when initially called, such as when the cache instance 402A referenced by the application thread is a global shared cache. The cache instance 402A makes this happen via a call to the cache entry loader 403A; and the cache entry loader 403A interacts directly with the cache loader 404 to obtain data that the cache loader 404 determines should be placed in the cache store 403B; and then the cache entry loader 403A subsequently loads the data into the cache store 403B. Alternatively, data may be loaded into the cache store 403B interactively or in a piecemeal fashion as instructed by the application thread via API calls on the cache instance's 402A public interface issued by the application thread, such as when the cache instance 402A referenced by the application thread is a thread local cache or is a lazy loaded global cache.
The cache loader 404 acquires data from the data sources associated with the data types or objects and causes units, records, or portions of the data acquired from the data sources to be indirectly passed on to the cache entry loader 403.
The cache entry loader 403A interacts with the key manager 401A to acquire symmetric keys for data being loaded. The keys identify locations within an index being maintained for the cache store 403B. Each location has a reference to specific data loaded in the cache store 403B. In some instances, a location may include a pointer to a data structure, where the data structure includes references to multiple data within the cache store 403B. This is done when a key definition 401B provided collection keys for some of the data, as was discussed above in detail.
The cache instances 402A interacts with API calls initiated by the application threads to drive the loading, retrieval, and other potentially volatile operations (e.g., writing, flushing, refreshing, etc.) against the data included within the cache stores 403B. The volatile operations by default are constrained on global cache instances 402A and not on thread local cache instances 402A and are enforced by the cache instances 402A should one of these operations be attempted by an application thread against a global shared cache type with this default configuration. The operations initiated by the application threads from the API can include a variety of parameters, such as a reference to a cache, a key, a key manager, and a data object. Moreover, if the operation dictates, the cache instance 402A may also consume a key for purposes of looking up in the cache store 403B a specific piece of data identified by the application thread via the key. These operations are driven via the cache instances' 402A interfaces.
In an embodiment, the custom cache system 400 may also include a cache maintainer 405. The cache maintainer 405 interacts directly with the cache instance 402A and is responsible for managing the state of the data in the cache instance 402A via configured refresh operations on global caches 402A. The cache maintainer 405 will initiate a refresh sequence using a background thread based on configuration, such as time. During this refresh sequence it will call the cache instance 402A, which will subsequently call the cache loader 404, which will determine if and what portion of the cache should be flushed and/or updated. The cache instance 402A will then create a new cache entry loader 403A instance and cache store 403B instance and begin to populate it with the data provided by the cache loader 404. Once the new cache store 403B has been successfully loaded, the old cache entry loader 403A reference will be replaced with a reference to the new cache entry loader 403A instance containing the new cache store 403B. This approach to refresh allows for the application threads to continue to use the cache while the new cache entry loader 403A and cache store 403B are created, and it allows for these objects to be instantaneously replaced; thus, allowing for uninterrupted access to cache data for the application threads even during a refresh operation. Again, a global cache (also known as a shared cache) is a cache instance 402A with an associated cache store 403B, where data indexed therein is shared between pluralities of threads of a same application.
In still another embodiment, the custom cache system 400 may also include a cache eviction policy 406. The cache eviction policy may be consumed and evaluated by the cache instance 402A of the cache store 403B for purposes of determining the conditions and/or events under which portions of the data within the cache stores 403B are to be removed from the cache stores 403B and/or updated to one or more data sources associated with the portions of the data. In some cases, the cache eviction policy 406 may be an electronic data structure or file, such as an extensible markup language (XML) formatted file. In other cases, the cache eviction policy 406 is dynamically communicated from a global administrator service.
In still another embodiment, the custom cache system 400 may also include a cache statistics collector 407. The cache statistics collector 407 collects statistical data from the caches regarding usage and efficiency and reports the same to a configurable statistic collection service.
The custom cache system 500 includes an API 501 and a cache creator 502. In an embodiment, the custom cache system 500 may also include a key acquirer 503 and/or a cache synchronizer 504. Each of these will now be addressed in turn.
The API 501 includes a suite of definitions, operations, calls, or methods which are available to a developer to include in his/her code associated with an application or a thread of an application. The definitions define abstracted views of cache stores via cache definitions. Each cache definition includes a set of operations for performing some operation against the cache store via references to a cache.
A cache can be of two types: a global shared cache and a thread local cache. Other operations may permit cache configurations to acquire data of application-defined types from a plurality of data sources. Still more operations may permit the communication of key managers associated with key definitions to be communicated. Some key definitions may be associated with collective keys. In yet other operations, gets, puts, sets, writes, refreshes, flushes, updates, and the like permit volatile and non volatile operations to be performed against data housed in the cache stores and referenced by the cache.
The front-end of the API 501 interfaces with applications or threads of an application. Conversely, the back-end of the API 501 interfaces or communicates with the cache creator 502 and optionally the key acquirer 503 and/or the cache synchronizer 504.
The cache creator 502 handles API 501 operations executed by the application or threads of the application. In an embodiment, the cache creator 502 is implemented within software on a machine-accessible and readable medium as a means for creating and managing customized caches. Examples of objects, services, and systems for achieving this were discussed above with respect to the methods 100, 200, and 300 and with respect to the system 400. Accordingly, these descriptions associated with these methods 100-300 and the system 400 are incorporated by reference herein as the means for creating and managing customized caches. Some customized caches are shared between the same threads of an application, while other ones of the customized caches are managed by specific threads to the exclusion of other ones of the threads.
In an embodiment, the some features of the cache creator 502 may be delegated to a key acquirer 503. The key acquirer 503 manages keys for the customized caches. In an embodiment, the key acquirer 503 is implemented in software within a machine-accessible and readable medium as a means for acquiring keys. The technique and features of managing and acquiring keys for customized caches where presented above with respect to the methods 100-300 and the system 400. Accordingly, the means for acquiring keys includes the descriptions and techniques presented above with respect to key creation, key definitions, and key management of the methods 100-300 and the system 400. In an embodiment, the means for acquiring keys 503 provides a symmetrical key between both the application or threads and the customized caches.
In yet another embodiment, the custom cache system 500 includes a cache synchronizer 504. The cache synchronizer 504 permits data associated with disparate cache stores (disparate heaps) to be synchronized with one another. In an embodiment, the cache synchronizer 504 is implemented in software within a machine-accessible and readable medium as a means for synchronizing data between numbers of disparate customized caches via their corresponding cache stores. The means for synchronizing data may be defined within policies communicated to the affected cache stores. Alternatively, the means for synchronizing data may be dynamically communicated by a global administrator service at predefined or dynamically instructed intervals.
It has now been demonstrated how custom caching can be achieved for purposes of improving processing throughput of an application and streamlining development time associated with developing the application. Additionally, the techniques presented herein also reduce the number of data store transactions that may be needed to process an application to completion. Thus, it is apparent that a significant reduction in data store transactions can be achieved when applications that access the data store employ the API and techniques presented herein.
The network-based commerce system 600 includes one or more of a number of types of front-end servers that may each include at least one Dynamic Link Library (DLL) to provide selected functionality. The system 600 may include page servers 612 that deliver web pages (e.g., mark-up language documents), picture servers 614 that dynamically deliver images to be displayed within Web pages, listing servers 616 that facilitate category-based browsing of listings, search servers 618 that handle search requests to the system 600 and facilitate keyword-based browsing of listings, and ISAPI servers 620 that provide an intelligent interface to a back-end of the system 600. The system 600 may also include e-mail servers 622 that provide, among other things, automated e-mail communications to users of the network-based commerce system 600.
In an embodiment, one or more administrative application functions 624 facilitate monitoring, maintaining, and managing the system 600. One or more API servers 626 may provide a set of API functions for querying and writing to the network-based commerce system 600. APIs may be called through the HTTP transport protocol. In an embodiment, information is sent and received using a standard XML data format. Applications utilized to interact (e.g., upload transaction listings, review transaction listings, manage transaction listings, etc.) with the network-based commerce system 600 may be designed to use the APIs. Such applications may be in an HTML form or be a CGI program written in C++, Perl, Pascal, or any other programming language.
The API servers 626, page servers 612, picture servers 614, ISAPI servers 620, search servers 618, e-mail servers 622 and a database engine server (e.g., provided by one or more of the application servers 628) may individually, or in combination, act as a communication engine to facilitate communications between, for example, a client machine 630 and the network-based commerce system 600; act as a transaction engine to facilitate transactions between, for example, the client machine 630 and the network-based commerce system 600; and act as a display engine to facilitate the display of listings on, for example, the client machine 630.
The back-end servers may include a database engine server, a search index server and a credit card database server, each of which maintains and facilitates access to a respective database.
In an embodiment, the network-based commerce system 600 is accessed by a client program, such as for example a browser 636 (e.g., the Internet Explorer distributed by Microsoft Corp. of Redmond, Wash.) that executes on the client machine 630 and accesses the network-based commerce system 600 via a network such as, for example, the Internet 638. Other examples of networks that a client may utilize to access the network-based commerce system 600 include a wide area network (WAN), a local area network (LAN), a wireless network (e.g., a cellular network), the Public Switched Telephone Network (PSTN) network, or the like. The client program that executes on the client machine 630 may also communicate with the network-based commerce system 600 via the API servers 626.
The database 740 may, in an embodiment, be implemented as a relational database, and includes a number of tables having entries, or records, that are linked by indices and keys. In an alternative embodiment, the database 740 may be implemented as collection of objects in an object-oriented database, as discussed by way of example in more detail below.
The database 740 includes a user table 742 that contains a record for each user of the network-based commerce system 700. An example record for each user is shown in
The database 740 also includes one or more divisions in the form of categories provided in category tables 750. Each record within the category table 750 may describe a respective category. In an embodiment, listings provided by the system 700 are arranged in the categories. These categories may be navigable by a user of the network-based commerce system 700 to locate listings in specific categories. Thus, categories provide a mechanism to locate listings that may be browsed. In addition or instead, an alphanumeric search mechanism may be provided by the search servers 718 to allow a user to search for specific listings using search terms or phrases.
In an embodiment, the category table 750 describes multiple, hierarchical category data structures, and includes multiple category records, each of which describes the context of a particular category within the multiple hierarchical category structures. For example, the category table 750 may describe a number of real, or actual, categories to which listing records, within the listings tables 744, may be linked.
The database 740 is also shown to include one or more attributes tables 752. Each record within the attributes table 752 describes a respective attribute associated with a listing. In an embodiment, the attributes table 752 describes multiple, hierarchical attribute data structures, and includes multiple attribute records, each of which describes the context of a particular attribute within the multiple hierarchical attribute structures. For example, the attributes table 752 may describe a number of real, or actual, attributes to which listing records, within the listings tables 744, may be linked. Also, the attributes table 752 may describe a number of real, or actual, attributes to which categories, within the category table 750, may be linked.
The database 740 may also include a note table 754 populated with note records that may be linked to one or more listing records within the listings tables 744 and/or to one or more user records within the user table 742. Each note record within the note table 754 may include, among other things, a comment, description, history or other information pertaining to a listing being offered via the network-based commerce system 700, to a user of the network-based commerce system 700. The database 740 may also include a targeted site table 756 populated with targeted site records that may be linked to one or more listing records within the listings tables 744 and/or to one or more user records within the user table 742.
A number of other example tables may also be linked to the user table 742, namely a user past aliases table 758, a feedback table 760, a feedback details table 762, a bids table 764, an accounts table 766, and an account balances table 768. In an embodiment, the database 740 also includes a batch table 770, a batch listings table 772, and a listings wait table 774. The data may be partitioned across multiple database instances, and queries may have to be executed against multiple database instances and query results may need to be aggregated.
The computer system 1000 includes a processor 1002, a main memory 1004 and a static memory 1006, which communicate with each other via a bus 1008. The computer system 1000 may further include a video display unit 1010 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 1000 also includes an alphanumeric input device 1012 (e.g., a keyboard), a cursor control device 1014 (e.g., a mouse), a disk drive unit 1016, a signal generation device 1018 (e.g., a speaker) and a network interface device 1020 to interface the computer system to a network 1022.
The disk drive unit 1016 includes a machine-readable medium 1024 on which is stored a set of instructions or software 1026 embodying any one, or all, of the methodologies described herein. The software 1026 is also shown to reside, completely or at least partially, within the main memory 1004 and/or within the processor 1002. The software 1026 may further be transmitted or received via the network interface device 1020.
For the purposes of this specification, the term "machine-readable medium" shall be taken to include any medium which is capable of storing or encoding a sequence of instructions for execution by the machine and that cause the machine to perform any one of the methodologies of the present invention. The term "machine-readable medium" shall accordingly be taken to included, but not be limited to, solid-state memories, optical and magnetic disks, and carrier wave signals. Further, while the software is shown in
It should also be noted that in some embodiment the methods 100, 200, and 300 may be implemented on a machine-accessible medium having instructions. The instructions when executed by a machine perform the methods 100, 200, and 300. The medium may be removable media that is interfaced to the machine. Alternatively, the medium may be fixed media that is an integral part of the machine. In this manner, the instructions of the methods 100, 200, and 300 may be pressed on removable media and uploaded to a machine, preloaded within a machine, downloaded on a machine from a peripheral device, or downloaded from a remote machine over a network to a different machine.
The above description is illustrative, and not restrictive. Many other embodiments will be apparent to those of ordinary skill in the art upon reviewing the above description. The scope of embodiments should therefore be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
The Abstract is provided to comply with 37 C.F.R. �1.72(b) and will allow the reader to quickly ascertain the nature and gist of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
In the foregoing description of the embodiments, various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting that the claimed embodiments have more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate example embodiment.
|Cited Patent
|Filing date
|Publication date
|Feb 5, 1992
|Jul 6, 1993
|Hewlett-Packard Company
|Duplicate tag store purge queue
|Sep 29, 1995
|Mar 31, 1998
|International Business Machines Corporation
|Method and apparatus for logical data access to a physical relational database
|Aug 5, 1996
|Jul 7, 1998
|Arunachalam; Lakshmi
|Method and apparatus for enabling real-time bi-directional transactions on a network
|May 30, 1996
|Sep 14, 1999
|Massachusetts Inst Technology
|Querying heterogeneous data sources distributed over a network using context interchange
|Dec 2, 1997
|Nov 2, 1999
|Electronic Data Systems Corporation
|Object-oriented code generation system and method
|Jun 20, 1997
|Nov 16, 1999
|Pi-Net International, Inc.
|Value-added network system for enabling real-time, by-directional transactions on a network
|May 5, 1998
|Apr 4, 2000
|International Business Machines Corporation
|Computer system, program product and method of managing weak references with a concurrent mark sweep collector
|Apr 27, 1998
|Oct 17, 2000
|Oracle Corporation
|Uniform object model having methods and additional features for integrating objects defined by different foreign object type systems into a single type system
|Apr 21, 1999
|Apr 3, 2001
|Webxchange, Inc.
|Configurable value-added network (VAN) switching
|Jun 29, 1998
|Aug 21, 2001
|Sun Microsystems, Inc.
|Integrated graphical user interface method and apparatus for mapping between objects and databases
|Apr 15, 1998
|Sep 11, 2001
|Inktomi Corporation
|Delivering alternate versions of objects from an object cache
|Sep 1, 2000
|Aug 26, 2003
|Cognos Incorporated
|Metadata exchange
|Sep 22, 2000
|Feb 17, 2004
|Affymetrix, Inc.
|System, method, and product for development and maintenance of database-related software applications
|Mar 2, 2001
|Mar 2, 2004
|Kimono Limited
|Data processing system and development method
|Jun 14, 2001
|May 25, 2004
|Oracle International Corporation
|Instantiating objects in distributed database systems
|Dec 7, 1998
|Jun 8, 2004
|Oracle International Corporation
|Method for generating a relational database query statement using one or more templates corresponding to search conditions in an expression tree
|Aug 4, 2001
|Sep 7, 2004
|Oracle International Corporation
|System and method for customizing cached data
|Feb 11, 2000
|Feb 1, 2005
|Pitney Bowes Inc.
|Method facilitating data stream parsing for use with electronic commerce
|Nov 15, 2001
|Jul 11, 2002
|Ward Mullins
|Dynamic object-driven database manipulation and mapping system
|Jun 1, 2001
|Dec 5, 2002
|Hunt Joseph R.
|Runtime configurable caching for component factories
|Jul 23, 2002
|Oct 2, 2003
|Agile Software Corporation
|System and method for facilitating communication between network browsers and process instances
|Mar 31, 2003
|Sep 30, 2004
|International Business Machines Corporation
|Association caching
|Dec 8, 2004
|Jul 7, 2005
|Greg Seitz
|Method and system to automatically generate software code
|Dec 8, 2004
|Jul 14, 2005
|Greg Seitz
|Method and system for a transparent application of multiple queries across multiple data sources
|Dec 8, 2004
|Jul 14, 2005
|Greg Seitz
|Method and system to automatically regenerate software code
|Dec 8, 2004
|Aug 18, 2005
|Greg Seitz
|Method and system for dynamic templatized query language in software
|Oct 22, 2004
|May 11, 2006
|Gerken Christopher H
|Method and System for Enabling Roundtrip Code Protection in an Application Generator
|Citing Patent
|Filing date
|Publication date
|Dec 8, 2004
|Mar 25, 2008
|Ebay Inc.
|Method and system to automatically generate software code
|Nov 30, 2005
|Jun 10, 2008
|Red Hat, Inc.
|Method for tracking of non-resident pages
|Jun 26, 2006
|Jan 12, 2010
|Ticketmaster L.L.C.
|Computer-based right distribution system with reserve pricing
|Jun 14, 2006
|Apr 13, 2010
|Ticketmaster, Llc
|Computer-based right distribution system
|Jun 23, 2006
|May 18, 2010
|Ticketmaster Llc
|Computer-based right distribution system with password protection
|Dec 8, 2004
|May 25, 2010
|Ebay Inc.
|Method and system for a transparent application of multiple queries across multiple data sources
|Feb 17, 2005
|Jun 29, 2010
|Ticketmaster L.L.C.
|Computer controlled auction system
|Apr 29, 2008
|Jun 29, 2010
|Red Hat, Inc.
|Method for tracking of non-resident pages
|Aug 10, 2006
|Aug 3, 2010
|Ticketmaster, Llc
|Computer-based right distribution system with request reallocation
|Feb 6, 2007
|Aug 17, 2010
|Computer-implemented systems and methods for resource allocation
|Aug 17, 2010
|Ebay Inc.
|Method and system to automatically regenerate software code
|Jan 29, 2007
|Jan 4, 2011
|Computer-implemented systems and methods for resource allocation
|Feb 15, 2011
|Ebay Inc.
|Custom caching
|Mar 22, 2006
|May 17, 2011
|Apparatus and methods for providing queue messaging over a network
|Feb 6, 2007
|May 24, 2011
|Computer-implemented systems and methods for resource allocation
|Feb 6, 2007
|Jul 12, 2011
|Computer-implemented systems and methods for resource allocation
|Jun 28, 2010
|Aug 30, 2011
|Red Hat, Inc.
|Method for tracking of non-resident pages
|May 19, 2010
|Oct 25, 2011
|Ebay Inc.
|Method and system to automatically generate classes for an object to relational mapping system
|May 11, 2010
|Dec 6, 2011
|Ticketmaster Llc
|Computer-based right distribution system with password protection
|Dec 13, 2011
|Systems and methods for queuing access to network resources
|Nov 19, 2009
|Jan 31, 2012
|Motorola Mobility, Inc.
|Method and system for maintaining current data for wireless devices
|Oct 8, 2010
|May 8, 2012
|Ebay Inc.
|Method and system for a transparent application of multiple queries across multiple data sources
|Feb 7, 2007
|May 8, 2012
|Ticketmaster Llc
|Methods and systems for reducing burst usage of a networked computer system
|Jun 12, 2012
|Ebay Inc.
|Method and system for dynamic templatized query language in software
|Jul 8, 2011
|Jun 19, 2012
|Computer-implemented systems and methods for resource allocation
|Dec 15, 2009
|Oct 16, 2012
|Ebay Inc.
|Method and system to automatically regenerate software code
|May 4, 2007
|Oct 23, 2012
|Ticketmaster Llc
|Apparatus for access control and processing
|Oct 30, 2012
|Ebay Inc.
|Custom caching
|Aug 28, 2009
|Nov 20, 2012
|Systems for dynamically allocating finite or unique resources
|Nov 15, 2010
|Jan 1, 2013
|Ticketmaster Llc
|Systems and methods for providing resource allocation in a networked environment
|Oct 22, 2007
|Apr 23, 2013
|Ebay, Inc.
|Method and system to automatically generate software code
|May 21, 2012
|May 21, 2013
|Computer-implemented systems and methods for resource allocation
|Jun 11, 2013
|Systems and methods for queuing requests and providing queue status
|Jun 11, 2013
|Ticketmaster, L.L.C.
|Systems and methods for queuing access to network resources
|May 3, 2012
|Aug 20, 2013
|Ebay Inc.
|Method and system for a transparent application of multiple queries across multiple data sources
|Dec 12, 2011
|Sep 10, 2013
|Systems and methods for queuing access to network resources
|Apr 12, 2010
|Sep 17, 2013
|Ticketmaster, L.L.C.
|Computer-based right distribution system
|Nov 4, 2011
|Mar 18, 2014
|Ticketmaster Llc
|Methods and systems for computer aided event and venue setup and modeling and interactive maps
|Aug 10, 2006
|May 20, 2014
|Ticketmaster, L.L.C.
|Computer-based right distribution system with temporal variation
|Jun 21, 2013
|Nov 25, 2014
|Ebay Inc.
|Method and system for a transparent application of multiple queries across multiple data sources
|Jun 21, 2013
|Feb 10, 2015
|Ebay Inc.
|Method and system to automatically generate software code
|Sep 14, 2012
|Mar 31, 2015
|Ebay Inc.
|Custom caching
|May 2, 2012
|Sep 29, 2015
|Live Nation Entertainment, Inc.
|Methods and systems for reducing burst usage of a networked computer system
|Dec 8, 2004
|Jul 7, 2005
|Greg Seitz
|Method and system to automatically generate software code
|Dec 8, 2004
|Jul 14, 2005
|Greg Seitz
|Method and system for a transparent application of multiple queries across multiple data sources
|Dec 8, 2004
|Jul 14, 2005
|Greg Seitz
|Method and system to automatically regenerate software code
|Dec 8, 2004
|Aug 18, 2005
|Greg Seitz
|Method and system for dynamic templatized query language in software
|Sep 22, 2011
|Sep 19, 2013
|Cisco Technology, Inc.
|Efficient Delivery of Structured Data Items
|Jun 1, 2012
|Dec 5, 2013
|Broadcom Corporation
|Caching Frequently Used Addresses of a Page Table Walk
|Nov 29, 2006
|Jun 7, 2007
|Red Hat Inc
|Method for tracking of non-resident pages
|Dec 20, 2013
|Jun 25, 2015
|Intel Corporation
|Crowd sourced online application cache management
|U.S. Classification
|1/1, 707/999.003
|International Classification
|Cooperative Classification
|European Classification
|Mar 10, 2005
Owner name: EBAY INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KASTEN, CHRISTOPHER J.;SEITZ, GREG;REEL/FRAME:015872/0520
Effective date: 20050307
|Dec 28, 2011
|Fee payment
Year of fee payment: 4
|Jul 23, 2015
Owner name: PAYPAL, INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EBAY INC.;REEL/FRAME:036163/0469
Effective date: 20150717


text:
Peter and the Wolf, Prokofiev's musical fairy tale, has been delighting children since 1936. Nearly 60 years later, in 1995, the young choreographer Matthew Hart created a witty choreographed version for The Royal Ballet School with designs by Ian Spurling. Described as 'an utterly delightful ballet and a perfect showcase for the younger students,' by the Royal Ballet's Director, Monica Mason, it was staged again – and recorded for this DVD – in 2010.
Music: Sergey Prokofiev
The Wolf: Sergei Polunin
Grandfather: Will Kemp
Peter: Kilian Smith
Duck: Charlotte Edmonds
Bird: Laurine Muccioli
Cat: Chisato Katsura
The Royal Ballet School
Choreography by: Matthew Hart
Royal Ballet Sinfonia, Paul Murphy 2010
Plus: Cast gallery / Documentary feature on rehearsing Peter and the Wolf.
Picture: 16:9 1080i
Sound: LPCM 2.0 / DTS 5.1 HD - Master Audio
Duration: 30 mins
Region code: All Regions
Subtitles: EN/FR/DE/ES

subset: commoncrawl


text:
Secondary menu
The story of one Civil War-era doctor's quest to honor the memory of his patients. Flowers are overrated, anyway. ... READ ON
There's usually a doctor around in the movies, and they save the day. But what about in real life?... READ ON
From geology to physics, we've got all sorts of scientifically inspired confections to satisfy your educated sweet tooth.... READ ON
All the hand-sanitizer in the world can't save us from some of history's nastiest viruses and the horrifying diseases they cause in humans—and we know you're just itching to know all about them. Here are eight of the deadliest viruses the world has ever seen.... READ ON
We often hear stories of dolphins, eagles, bunnies, sea turtles and other cute animals getting prosthetics. But what about the animals that might gladly bite your hand off if given a chance?... READ ON
We may think of the inability to get or maintain an erection as a problem reserved for the ruggedly handsome 50-year-old millionaires joyously piloting their yachts in the background of Viagra commercials. But there has never been a time or place where men weren't extremely attached to their penises, and the sexual vitality and youth they represent. Here are seven historic methods men used to regain a firm grasp on their masculinity.... READ ON
While brain surgery has become a fairly common procedure with humans, it is still very rarely used on animal patients, who have drastically different anatomies than we do. Fortunately for Champa, an Asiatic black bear living in a sanctuary in Laos, a handful of veterinarians are still willing to experiment with brain surgery—especially if the procedure could save an animal's life.... READ ON
Sometimes the treatment is worse than the condition itself.... READ ON
Janis Joplin left $2,500 in her will for her friends to "have a ball after I'm gone."


text:
The Vision - Feature Audio Clip
Vision Announcers: Tyler Mehigh and Andy Stamm
Producer: Delany McFate
Class D State Final
Mount Pleasant Sacred Heart vs Crystal Falls Forest Park
Breslin Center, East Lansing
This is a 13 minute clip from the 4th quarter of the Class D Basketball State Final. This was by far the best state final game and The Vision was thrilled to produce the audio stream. Listen in as Delany, Andy, and Tyler take you through an exciting end to the Class D state final!


text:
- Reviews
- Gear
- Rig Rundowns
- Artists
- How-to
- Lessons
- Premier Blogs
- Win
Reviews: Albums & Videos
Premier Guitar's rating system includes brief summations of a product's pros and cons, as well as pick ratings (0–5) in four categories—Tones, Design/Build, Value, and Playability (for instruments) or Ease of Use (amps, effects, and other devices) or Versatility (pickups and speakers). Items with a total of 18 or more picks (out of 20) win our coveted Premier Gear Award.
Album Review: Queens of the Stone Age - "... Like Clockwork"
June 3, 2013
The dark, cohesive psychedelia of "… Like Clockwork" is unmatched by any of QOTSA's five previous recordings.Read More
Album Review: Alice In Chains - "The Devil Put Dinosaurs Here"
May 20, 2013
AiC is back with a slower-paced, but still hard-hitting album that features some of Jerry Cantrell's most masterful playing yet.Read More
Album Review: Leroy Justice - "Above the Weather"
April 15, 2013
Leroy Justice treads carefully into jam-band territory.Read More
Album Review: Cassie Taylor - "Out of My Mind"
April 15, 2013
Packed with soulful singing and blazing 6-string, Taylor's new Out of My Mind is a mesmerizing, nuanced, and imaginatively arranged collection of blues-inflected originals.Read More
Album Review: Joe Satriani - "Unstoppable Momentum"
April 8, 2013
Not since the heyday of hearing "Satch Boogie" and "Cliffs of Dover" on the radio has instrumental guitar rock been so fun.Read More
Album Review: Brad Paisley - "Wheelhouse"
April 3, 2013
Country shred, double-stop licks, and G-bender pulls salvage Paisley''s most pop-sounding album to date.Read More
Album Review: Ivan & Alyosha - "All the Times We Had"
February 4, 2013
Ivan & Alyosha All the Times We Had Missing Piece/Dualtone Music Group Probably best known for hometown hero Jimi Hendrix and the birthplace of a particular music movement that gotRead More
Album Review: Boz Scaggs - "Memphis"
February 4, 2013
Boz Scaggs Memphis 429 Records Boz Scaggs is musically complicated. For Memphis, he brought on producer Steve Jordan (John Mayer) who also plays drums on the album, and the restRead More
Book Review: "Guitar Lessons" by Bob Taylor
March 15, 2011
Bob Taylor Guitar Lessons Wiley Publishing Guitarmaker Bob Taylor has become synonymous with acoustic guitars since his early days of working out of a small San Diego workshop, fittingly namedRead More
DVD Review: "Alfred's Pro Audio Series: Modern Live Sound"
March 15, 2011
Alfred's Pro Audio Series: Modern Live Sound Alfred Many guitarists believe that analog is infinitely better than digital. Professional live sound, however, is not dictated by this mentality. Modern LiveRead More


text:
sapphire and diamond square and oval three drop earrings
designer's notes
If diamonds are a girl's best friend, you'll want to get to know Vanhi! You'll have a friend for life with exquisite stone and diamond creations from this lustrous jewelry brand.
color: Silver / White / Blush / Blue Silver settings with gold plated backing White blush and blue faceted square and oval sapphire stones; six total stones with approximate 39cttw Pav� diamond borders; total approximate 2.29cttw Post backs Measures 2�'' long x �'' wide All measurements are approximate 14 Day Return Policy; returns must be received within 14 days. No returns will be accepted on international orders. See FAQ for more details. Gold Plated Silver / Sapphire / Diamond; Imported; style# 321208601


text:
Land Acquisition & Planning Unit Staff Contacts
Land Acquisition and Planning has now reorganized into five focus groups to continue the forty-year legacy of land acquisition in the state of Maryland. Land Acquisition and Planning (LAP) has three core functions: Land Conservation, Stewardship and Community Resilience (Local Support).
The LAP team is organized into these five focus groups.
Land Conservation
Community Resilience (Local Support)
Real Property
LAP Management
This group manages the day to day operations of the LAP unit and provides vital support functions to the different teams.


text:
- Home
- News
- Sports
- Opinion
- Obituaries
- Features
- Special Sections
- Classifieds
- Public Notices
Forgot Password? | Not a User? Sign up
"The label is so tossed about by everyone that the definition has become muddled. What really defines a 'Christian'?" — Sharon
If you currently subscribe or have subscribed in the past to the Los Alamos Monitor, then simply find your account number on your mailing label and enter it below.
Click the question mark below to see where your account ID appears on your mailing label.
If you are new to the award winning Los Alamos Monitor and wish to get a subscription or simply gain access to our online content then please enter your ZIP code below and continue to setup your account.
|ZIP Code:


text:
Contact Us
Ponderosa Property Management
Website Designed
List Your Business for Free
Welcome to Beautiful Northwest Montana!
Please take your time and browse through the site. Check back often for updates and new properties.
We specialize in Long Term, Short Term, and Commercial rental properties located primarily in Sanders County, Montana.
Quick Links to Available Rentals
We are an
Equal Housing
Long Term
Lease Properties
Short Term
Furnished Properties
Commercial Rentals
Our office is located at 202 East Railroad Ave., in Plains. Next to Ordelheide Dentistry and Rockstars Salon
Ponderosa Property Management, 202 E Railroad Ave., P.O. Box 251, Plains Mt. 59859 406/826-3909 phone
NEW OFFICE HOURS: Monday - Wednesday 10 am - 5 pm
Thursdays and Fridays** are our property visit days and are reserved for pre-arranged showings, maintenance and move in / move out appointments.
**The office does remain open each month on the 1st through the 5th if those days fall on a Thursday or Friday.


text:
- Infowars - http://www.infowars.com -
US troops may stay in Afghanistan until 2024
Posted By aaron On August 20, 2011 @ 10:21 am In Old Infowars Posts Style,World at War | Comments Disabled
Ben Farmer
London Telegraph
August 19, 2011
The agreement would allow not only military trainers to stay to build up the Afghan army and police, but also American special forces soldiers and air power to remain.
"We know we will be confronted with international terrorists. 2014, is not the end of international terrorist networks and we have a common commitment to fight them. For this purpose also, the US needs facilities."
Afghan forces would still need support from US fighter aircraft and helicopters, he predicted. In the past, Washington officials have estimated a total of 25,000 troops may be needed.
Fresh food that lasts from eFoodsDirect (AD)
Dr Spanta added: "In the Afghan proposal we are talking about 10 years from 2014, but this is under discussion." America would not be granted its own bases, and would be a guest on Afghan bases, he said. Pakistan and Iran were also deeply opposed to the deal.
Article printed from Infowars: http://www.infowars.com
URL to article: http://www.infowars.com/us-troops-may-stay-in-afghanistan-until-2024/
Click here to print.
Copyright © 2015 Infowars. All rights reserved.


text:
Third Book in the Delirium Series
Spoilers ahead…..
Now an active member of the resistance, Lena has been transformed. The nascent rebellion that was under way in Pandemonium has ignited into an all-out revolution in Requiem, and Lena is at the center of the fight.
After rescuing Julian from a death sentence, Lena and her friends fled to the Wilds. But the Wilds are no longer a safe haven—pockets of rebellion have opened throughout the country, and the government cannot deny the existence of Invalids. Regulators now infiltrate the borderlands to stamp out the rebels, and as Lena navigates the increasingly dangerous terrain, her best friend, Hana, lives a safe, loveless life in Portland as the fiancée of the young mayor. Requiem is told from both Lena's and Hana's points of view. The two girls live side by side in a world that divides them until, at last, their stories converge .
My Thoughts...
Requiem is written from Hana and Lena's alternating points of view leading up to the finale. I really enjoyed Hana's take on the "inside" life. Lena's story line was unremarkable and very similar to Pandemonium. I was waiting to get back to Hana.
I know many people will be torn about this book. This book unlike other Young Adult books doesn't come with the big ending that explains everything to everyone. I am completely okay with that, I know some people will not be.
Fun read that keeps you turning the page
Read the Library Newsletter


text:
Texas Rangers v Tampa Bay Rays
Pitcher Matt Moore of the Tampa Bay Rays pauses on the mound after... News PhotoAmerican League,Baseball - Sport,Baseball Pitcher,Baseball Pitcher's Mound,Defeat,Florida - US State,Gulf Coast States,Horizontal,Major League Baseball,Matt Moore - Baseball Player,Sport,St. Petersburg - Florida,Tampa Bay Devil Rays,Texas Rangers,Third Inning,Tropicana Field,USAPhotographer Al MesserschmidtCollection: Getty Images Sport 2013 Getty ImagesST. PETERSBURG, FL - SEPTEMBER 19: Pitcher Matt Moore #55 of the Tampa Bay Rays pauses on the mound after giving up back to back home runs in the third inning against the Texas Rangers September 19, 2013 at Tropicana Field in St. Petersburg, Florida. (Photo by Al Messerschmidt/Getty Images)


text:
Vitrail colors are dense and very transparent. They dry to a uniform surface and good hardness. Finished pieces are resistant to gentle washing with water or window cleaner.
MagiKote™ Surface Coating for Styrofoam® will allow sculptors and crafters alike to worry less about the waffled, bumpy surface working with Styrofoam® typically produces. As the paper-plaster type coating is applied, the Styrofoam® transforms into a smooth surface, which can then easily be painted using Americana® Acrylic paints and mediums.
Because solvents in spray paints and oil-based paints melt or eat away Styrofoam®, acrylic paints have long been trusted to create fun and bright crafts using the affordable and lightweight foam material. Styrofoam® is also easily carved and sanded to make lightweight sculptures.


text:
Daily Links: Trade?
- Jets hot for Brady Quinn? [ESPN NY]
- On This Date in New York Jets History: The Jets Go More Green [The J-E-T Press]
- Former Jets WR Wallace Wright has signed with the CFL's Montreal Alouettes [Adam Caplan on Twitter]
- SI's Jim Trotter "(doesn't) see" the 49ers making a run at Jets CB Darrelle Revis [Jim Trotter on Twitter]
- Keidel: Brady's New Deal, Jets' Same Old Deal [WFAN]
- Bills' Kelsay retires [theScore]
- Revis: An Asset to the Jets [NY Jets]


text:
How to Color Your Hair at Home With Box Color
The Dos and Don'ts of Coloring Your Hair at Home
Like us on Facebook
- Stay close to your original hue. "Whether you have virgin or previously colored hair, stick within two shades of your hair color," Robinson says. Bigger changes, like going from brunette to platinum blond, are best left to professionals.
- Perform a patch allergy test. Trying a new hair color can be exciting, but hold off until you've done the allergy test described within the kit. Usually, this involves dabbing a bit of dye on your skin 48 hours before you wish to color your hair.
- Go for silver or gold. "You can tell what colors work for you by looking at jewelry," Robinson says. "If you look better in silver or platinum, you'll look better in ash tones. If gold is more flattering, try reds or caramels."
- Don't paint your hair. "A lot of people try to paint their hair rather than putting the color on the scalp," Robinson explains. "But you can miss regrowth or grays that way." Instead, massage color into the scalp, and the hue will migrate up the hair shaft.
- Don't color your entire head. "As I tell my own clients, it's more about doing a retouch," Robinson says. "You're not going to get the best results if you keep pulling color through."
- Don't leave the color on longer than necessary. To get the best hue, follow instructions to a T.
The Dos and Don'ts of Coloring Your Hair at Home originally posted on POPSUGAR Beauty


text:
Break out the tux! Pop open a bottle of bubbly! Call the parents and prove them wrong! Red Bull Records' recording artist AWOLNATION is getting a taste of the finer things today as their break out single "Sail" has officially reached platinum status in the United States.
That's right. The seductive, genre-clashing single (where the hell is that fantastic dub influence coming from?) has sold more than one million units in a little over a year. That's no small accomplishment these days. Other artists that have reached platinum status via single or album sales in 2012 are Grammy Award winning, household names -- think Drake, Taylor Swift, Adele.
Considering the humble beginnings of "Sail," it's nothing shy of endearing to see AWOLNATION hang up a platinum-certified plaque in such good company. This time last year, "Sail" was entered into the airplay rotation of an Austin, Texas' KROX radio station. For a week, it played without AWOLNATION's Aaron Bruno even knowing. But in those seven days, the listeners' reaction spoke for itself. Requests flooded in and "Sail" had started its journey from quickly assembled Ministry-esque banger to platinum-certified single.
"Sail" by AWOLNATION Music Video
Like Adele's "Rolling in the Deep," "Sail" took on a life of it's own, finding its way onto numerous television shows and endorsement deals well as becoming the soundtrack to BASE jumper's Jeb Corliss' "Grinding the Crack" video. The exposure helped AWOLNATION's debut album "Megalithic Symphony" become Billboard's #1 Heatseekers album of 2011.
While endorsements and soundtracks are all fine and dandy, it's the fans -- as AWOLNATION's experience at KROX has proven -- who decide what sticks in the mainstream consciousness and what slips onto the cutting room floor. So, to celebrate the fans that helped make "Sail" platinum, AWOLNATION is giving away downloads of the hit single for the price of nothing more than a 'like' at Red Bull Records' Facebook page.
In correlation with the AWOLNATION's performances at this years' Coachella Music & Arts Festival, the band will be co-headlining a spring jaunt through the United States with Neon Trees. Purchase tickets here.
Follow Red Bull on Twitter for more news, updates and exclusive info.


text:
It seems like the guys who watch Klay play everyday like Steph think he's a star
User account number (aid): 24199
Posted by Trufis on 2014-07-24 13:36:13
They must see something in practice everyday that makes them think he's super special. Igoudala has only played with him 1 season and he's fighting for him. Steph wants to keep him which is weird because guards usually jump at the chance to add a big man and get rid of a chucker.
Klay must be a beast at practice.
|[ Thread ] [ Post Followup ] [ Search Forums ] [ Warriors Forum ]


text:
After years of criticism regarding the state of U.S. patent law, the Senate passed the America Invents Act, which is being called the most sweeping patent reform in half a century. But many IP experts are taking a wait-and-see approach.
[via: What Effects Will the America Invents Act Have on U.S. Patent Law? at CorpCounsel]


text:
Welcome to Monday! I hope your weekend was awesome.
We added some new and totally exciting giveaways for you today and have some closing out too. What's new on the TwoClassyChics?
New Giveaways:
Comfortable Sleeping Made Easy with the Technogel Bed Pillow :: Review and Giveaway
White River Ranch Lincoln Logs Set – Review and Giveaway
Sun Turtle Naturals – Natural Bath and Body Products – Review and Giveaway
What's Closing on Tuesday - Last Minute Entries!
Artisana Organic Foods Nut Butters | Review and Giveaway
InfraShine UL3 Cool Switch Ceramic Hair Dryer Review and Giveaway
Thanks for coming by and entering!
Monday, April 23, 2012
What's New on TwoClassyChics PR and Giveaways
Posted by Chris at 8:09 PM
Categories Giveaways
Subscribe to: Post Comments (Atom)


text:
- Home
- What we do
- Medical careers & training
- CPD, education & revalidation
- Research
- Resources
- Events
- My RCP
Welcome to the RCP's website
The RCP website is our primary channel to communicate with our fellows and members worldwide.
Revisions to the RCP website, March 2012
From March 2011, the RCP website will look a bit different. These changes are being made to improve the way materials appear on our pages and to make it easier for members to access 'members-only' information. These changes are being made in response to feedback from our members.
Revisions include:
- Improved signposting of the login/logout function
- New and revised areas of the website, including:
- What we do - a new area to better showcase the breadth of work we do on behalf of our members, with information about policy, projects and programmes, consultations and more
- Medical careers and training - an updated area for our growing careers and training information
- CPD, education and revalidation - a revised area to help members find CPD and educational programmes
- Research - a new section to highlight the role of academic medicine and medical research
- My RCP - better signposting for members-only area
- Improved visibility for important messages and features
- Rolling updates of news, events, projects, articles and forum discussions for members to get involved in
- Important links to join the conversation, and useful links to RCP information.
Website credits
The website has been developed with the help of Moore Wilson and RCP's communications and IT teams. The website is managed using a Drupal content management system.


text:
- Price Drops
- Free Apps
Bloom Box
$1.99 $0.9914 hours, 49 minutes ago
Zombie Highway
$0.99 Free!17 hours, 8 minutes ago
Joe Dever's Lone Wolf
$0.99 Free!1 day, 11 hours ago
$5.99 $0.992 days, 18 hours ago
Glorkian Warrior: Trials Of Glork
$2.99 $0.992 days, 19 hours ago
Warhammer 40,000: Deathwatch - Tyranid Invasion
$4.99 $2.993 days, 22 hours ago
The Wars
$0.99 Free!4 days, 1 hour ago
Tower of Fortune
$0.99 Free!4 days, 13 hours ago
Swords and Sandals
$4.99 $3.994 days, 21 hours ago
$1.99 $0.995 days, 12 hours ago
Amazing Stickman Road Race : Candy themed Ninja Jump Rush - ketchapp p ! ! !
$9.99 Free!6 minutes ago
Three Little Pigs - A Play
$0.99 Free!21 minutes ago
Doodle Word!
$0.99 Free!27 minutes ago
Taxis versus Taxis
$0.99 Free!45 minutes ago
DefCom TD
$0.99 Free!48 minutes ago
$0.99 Free!49 minutes ago
Lines Remover
$0.99 Free!1 hour, 8 minutes ago
Words King HD
$0.99 Free!1 hour, 20 minutes ago
$0.99 Free!1 hour, 20 minutes ago
$0.99 Free!1 hour, 20 minutes ago
Latest Comments
1 day, 5 hours ago
Is Glu serious right now? .... I thought we were long past the days of Mafia Wars. This is pretty…
1 week, 3 days ago
Really looks interesting, would like to install it on my iPhone. Trivia games are thriving these…
Sponsored feature
Most Recent Top Rated
Loot & Legends
DropForge Games
This War of Mine
11 bit studios s.a.
The Executive
Riverman Media LLC
Geometry Wars 3: Dimensions Evolved
Activision Publishing, Inc.
Desktop Dungeons
QCF Design
Fearless Fantasy
tinyBuild LLC
Legend of Grimrock
Almost Human ltd.
Halo: Spartan Strike
Microsoft Corporation
Implosion - Never Lose Hope
Rayark Inc.
Adventures of Poco Eco - Lost Sounds: Experience Music and Animation Art in an Indie Game
POSSIBLE GAMES Kft.
AG Drive


text: photo from State Police [ Police Looking For Suspect In Herkimer Rite Aid Robbery By Jim Rondenelli April 10, 2014 Police are looking for the man who robbed the Rite Aid Pharmacy on South Caroline Street in Herkimer on Monday. Read More|Comment Category: Utica-Rome News Tags: herkimer police, herkimer rite aid, robbery, south caroline street Send to a friend! Share on Facebook Share on Twitter Pin it! Reddit This! Share on Tumblr!


text:
CTET 2013 answer key is available now.
CTET-Central Teacher Eligibility Test is conducted by the Central Board of Secondary Education, Delhi. One need to enter their Registration number / application number and Date of Birth to download the admit card from www.ctet.nic.in
Candidates need to show www.ctet.nic.in Admit card 2013 along with proof of identification and other necessary documents during the written exam.
You can download CTET 2013 Admit card for provisional copy at
CTET Exam to be held on Jan-29-2012 (sunday). But due to General Elections in the states Manipur, Punjab and Uttarakhand, CTET Exam is postponed to May-05-2012.(only for the 3 states exam postponed and rest of the states exam will be held on 29th-Jan-2012).
CTET 2013 Answer Keys:-
Paper-1 Child Devolpment – Key


text:
J Street Wins Nearly All Endorsed Races
The Jewish vote spiked 10 percent for Romney, but staunchly pro-Israel lawmakers took a beating at the polls.
November 7, 2012 - 5:06 pm
There were no Republicans or independents on J Street's endorsement list.
Tellingly, J Street also did not endorse either Rep. Brad Sherman (D-Calif.) or House Foreign Affairs Committee Ranking Member Howard Berman (D-Calif.). Both are strong pro-Israel members, and Sherman defeated Berman in a redistricting race yesterday.
The PAC's victory lap comes at a critical time as Israel is faced with the possibility of having to strike Iran's nuclear facilities — a prospect that was branded as needless warmongering at the spring conference.
Obama also has vowed to push a Mideast peace deal in his second term, which is bound to come with more pressure on Jerusalem to make concessions.
AIPAC, whose conference packed the DC convention center just weeks before J Street's much smaller gathering, generically applauded in a statement "the election yesterday of a solidly pro-Israel Congress."
"While there has been a very high turnover of members of the Senate and the House over the past few election cycles, there remains an extraordinary continuity of unwavering solidarity with Israel by both incumbents and challengers," the American Israel Public Affairs Committee stated. "Virtually all the candidates who were elected issued position papers and statements expressing their belief that Israel is an invaluable ally of America."
Despite the losses of strong pro-Israel candidates, Mitt Romney still fared far better with Jewish voters than Sen. John McCain (R-Ariz.) did in 2008.
In CNN exiting polling, Jewish voters went 69 percent for Obama and 30 percent for Romney. This is close to the Republican Jewish Coalition figures from its own exiting polling, which saw the Jewish vote for the GOP candidate jump 10 points since the last election.
"The results demonstrate that President Barack Obama and the Democrats saw a significant erosion of support from 2008, while Republicans continued their trend of the last several decades of making inroads in the Jewish community," said Matt Brooks, executive director of the RJC.
Israeli leaders sent congratulatory messages to President Obama on his re-election, with Prime Minister Benjamin Netanyahu declaring "the strategic alliance between Israel and the US is stronger than ever." Netanayhu also sat down with U.S. Ambassador to Israel Dan Shapiro this afternoon.
Palestinian President Mahmoud Abbas likewise sent congratulations to Obama, while chief PLO negotiator Saeb Erekat called on Obama to push for 1967 borders, stop West Bank settlements "immediately," and back the Palestinian bid for non-member status at the United Nations.
Hamas told Agence France-Presse that the group is "waiting to see if there will be a positive change in Obama's policy or not."
"We hope that Obama commits to legitimate Palestinian rights and stops his policy of double standards and bias towards Israel," said spokesman Taher al-Nunu.
Iranian Foreign Ministry spokesman Ramin Mehmanparast said today "any evaluation of the promise of change will be based on the actual policy and performance of U.S. officials."
"The truth is that people in the Muslim world and Middle East are still waiting for the realization of the U.S. president's promises," Mehmanparast said.


text:
Wayfarer Sunglasses - MensSave on Men's Wayfarer Sunglasses at Proboardshop.com! Great selection of sun gear at unbelievably low prices. Proboardshop has been selling Wayfarer Sunglasses and outdoor gear for over 30 years and we're proud of it.
Please refine here
- Brand: Vans
- Color: Brown
Vans Spicoli 4 SunglassesReg: $12.00 On Sale: $8.95
Vans Spicoli 4 SunglassesReg: $12.00 On Sale: $7.95


text:
Kuwait Travel Information
- Traveling to Kuwait
- IT and Tech jobs in Kuwait
- Got a question or comment about Kuwait? Ask a Travel Expert!
The Basics
240 volts, 50Hz. Both the UK-style three-pin and European-style two-pin plugs are in use.
Arabic is the official language, but English is widely used and understood.
Travel Health
No vaccination certificates are required for entry to Kuwait, but inoculation against typhoid is advisable for travellers eating outside of major hotels and restaurants. There is a risk of diarrhoeal diseases, which are common in the country. Mains water is chlorinated and considered relatively safe, but most visitors stick to bottled water. Medical fees are high and medical insurance is recommended.
A service charge of 15% is usually added to bills in restaurants and hotels; if not a tip of 10% is acceptable. Additional tipping is only expected in more expensive hotels. Taxi drivers appreciate a small tip for long journeys.
Safety Information
Authorities are of the opinion that there is a high general threat of terrorism against western targets in Kuwait and other countries in the region. Visitors should remain vigilant, especially in public places and where westerners gather. The country is regarded as trouble-free as far as crime is concerned, but there is political turmoil resulting from developments in Iraq and the Middle East peace process and visitors should avoid public gatherings and demonstrations. When travelling outside Kuwait City keep to tarmac roads and take care on beaches and picnic spots because landmines and other unexploded ordnance still litters the countryside. Driving in Kuwait is hazardous, local drivers being negligent and reckless, so constant vigilance is essential.
Local Customs
Being a strict Muslim society dress in public should be modest. Homosexuality is illegal, as is any public display of affection between men and women, and unmarried couples are not allowed to stay together. Alcohol is not permitted in Kuwait, and the use of this or the importation of obscene material can be punished with imprisonment. Photography near industrial, military or government buildings is illegal, including oil fields. Religious customs should be respected, particularly during the month of Ramadan when eating, drinking and smoking during daylight hours should be discreet as it is forbidden by the Muslim culture. It is important to carry identification at all times.
Most aspects of the business culture are conservative. Dress should be formal and conservative (particularly for women) and greetings should be between same sexes only. There is often accompanying small talk when meeting someone for the first time. Be sure to adhere to local customs. Affection between opposite sexes is not shown in public and in general take the lead from a woman when greeting her. Most business is conducted in English, although using a few words of Arabic (particularly for titles) will be appreciated. The working week runs from Sunday to Thursday; business hours vary, but are usually from 7am to 1pm and 4pm to 10pm. Government offices and banks are usually open from 8am to 2pm.
The international dialling code for Kuwait is +965. Full international direct dialling is available. Local mobile service providers operate on GSM networks, which have active roaming agreements with most international mobile phone operators. Internet cafes are available throughout Kuwait.
Duty Free
Travellers to Kuwait do not have to pay duty on 500 cigarettes, or 1kg tobacco. It is prohibited to enter the country with alcohol or narcotics; milk products and unsealed salty fish; mineral water, unsealed olives and pickles; home-made foods; fresh vegetables; shellfish and by-products; and fresh figs.
Become our Kuwait Travel Expert
We are looking for contributors for our Kuwait travel guide. If you are a local, a regular traveller to Kuwait or a travel professional with time to contribute and answer occasional forum questions, please contact us.


text:
Although the Grand Haven varsity girls soccer team did a lot of things right during its rivalry showdown against Rockford on Tuesday at Buccaneer Stadium, the cruel twist in soccer is that the scoreboard didn't reflect those positives.
Both Rockford coach Steve Thomas and Grand Haven coach Cor Damhuis said the Bucs did a tremendous job of pressuring the ball and limiting the effectiveness of a quick-pass, quick-strike Rams squad.
But the Bucs also didn't do enough offensively to put themselves in position to upset the No. 9-ranked Rams. As a result, one late defensive breakdown proved costly for Grand Haven.
Rockford's senior midfielder Missy Biener made a strong charge on goal with just 5:40 remaining in the second half and received a perfect timing pass that allowed her to slip free and knock a low shot past the reach of Bucs' goalie Faith Platz. The goal stood up, giving Rockford (12-2-2 overall) a hard-fought 1-0 victory.
For the Rams, their 12th shutout of the year is a new school record, according to Thomas.
"It's a grind. It's a grind," Thomas said after the win. "Our league is as good as it's ever been top to bottom and on any given night, you can lose. Grand Haven is always well organized and well coached by Cor. I'd say this is one of their most athletic teams we've faced. We're just fortunate that we made one more play than they did tonight."
The first half produced few tense moments, other than a strong shot from Grand Haven's Claire Borchers that required Rockford goalie Marissa Platz to elevate to tip the ball over the crossbar.
The other Platz in goal — Bucs' netminder Faith Platz — also kept a cool head as a ball skipped around in a crowd off a Rams' corner kick, but she swiftly scooped it up to avoid further danger. Rockford recorded nine shots on goal, compared to the Bucs' four.
Grand Haven had arguably its best opportunity to end its scoreless streak midway through the second half, as junior Taylor DeWitt received a nice feed from midfield and was loose on a breakaway. She halted her dribble just outside of the penalty box and fired a looping shot that struck the crossbar and bounced away.
The quality offensive looks were few and far between for the Bucs, as Damhuis said his team needs to do a better job of orchestrating their attack.
"We have to find connections and we have to play off the target player and make runs off the target," Damhuis said. "They know the concept, they just have to put their feet where their mouth is. We have to execute and we have not been doing that.
"It was better today, but we still have to stay wide. Tonight, we shot everything straight up the middle and hoped our forwards could run up on it and finish."
The Bucs were also shut out by neighboring rival Spring Lake on Saturday, 2-0, and Damhuis said his squad is starting to become frustrated by the tough big-game losses.
"They are really down on their luck right now, because they felt they played decent, but they can play better and they know it," he said.
Faith Platz made another strong save with a little more than 7 minutes remaining after a Rockford cross slipped through a crowd of players and left the Rams with a point-blank shot. But the quick-reacting Platz snared the ball to keep the 0-0 score in tact.
She simply didn't have the necessary time to react on the Rams' goal, however.
"We've been talking for the last several weeks about making every run hard and with that, the ball got in on time on a run from behind and the pass was on time," Thomas said. "That was good for the girls to see that happen, especially late in the game."
Grand Haven couldn't muster another shot on goal in the final 5 minutes of action and saw its record drop to 5-4-2. The Bucs will look to swing their fortunate on Thursday against visiting Grandville. They'll also face a Forest Hills Central squad on Saturday that Damhuis calls one of the best in the state.
Junior Varsity: Grand Haven was dealt a 4-2 setback by Rockford. Both of the Bucs' goals were scored by Katie Fojtik.
Freshmen: Grand Haven defeated Rockford, 3-0. The Bucs picked up goals from Ravyn DeWitt, Taylor Fase and Emma Grove. Coach Jaren Soule also highlighted the strong hustle of Emma Fritz during the win.