text:
Enum-based Authorization (EAz, pronounced "easy") provides a way to implement a complete Access Control List (ACL) implementation in Java 5, including discrete binary permissions, arbitrary named sets of permissions, methods for applying and rapidly testing access control on protected resources, and a means to display the truth table of a particular access control using JavaServer™ Faces (JSF).
Part 1 of this series introduced the case for EAz by proposing:
- The Java EE specification offers substantial declarative and programmatic authorization capabilities, but falls short in the areas of fine-grained authorization required by many applications.
- There is no, as of this writing, any vendor framework to adequately extend Java EE in these areas. The Acegi framework comes closest, but completely replaces both Java EE authentication and authorization rather than extending authorization, and currently has some size limitations.
- Java 5 Enums, originally implemented without particular reference to Java EE authorization, provide a fast bit-mapped implementation of enumerations that can easily be adapted to extend Java EE authorization and retain Java EE authentication.
- EAz provides an easy-to-use and extensible implementation that extends Java EE authorization based on the Enum model using a classic ACL)approach to authorization.
Reviewing the sample scenario
By way of illustration, we will continue with the virtual campus scenario described in Part 1 to show how a complex authorization model can be implemented through EAz. As a refresher, let's review what has been established in this example so far.
The virtual campus consists of:
- Multiple campuses, whose gates require authorization for entry.
- Buildings on each campus with doors requiring entry authorization.
- Private offices in the buildings.
- Special secure spaces in the buildings.
EAz is applied to this example in order to:
- Manage permissions and groups of permissions at a finer grain than Java EE roles, and in a way that can be easily and safely configured, understood, and maintained by an administrator.
- Introduce a way to authorize resource access in a way that can be directly driven by the application's domain model -- specifically by means of authorization for campuses, buildings, rooms, and so on.
- Scale to manage thousands of campuses, up to 100,000 named users and hundreds of permissions.
- Coexist with and extend ordinary Java EE declarative and programmatic security so the existing authorization policies can continue to operate undisturbed, where necessary.
Figure 1 reiterates the virtual campus layout, Table 1 describes the groups and individuals taking part in the example, and Figure 2 shows the ACLs that you will implement in this article using the EAz framework.
Figure 1. Example virtual campus layout
Table 1. Groups and individuals for virtual campus example
|Campus A users
|Campus B users
|Campus A Engineers (Engineers)
|Campus A Biologists (Biologists)
|Campus A Cleaning staff
|Jane Linnaeus
|Campus A users, Biologists
|Jim Fermi
|Campus A users, Engineers
|Stan the Yeti
|Campus A users, Biologists
|Ken Lay
|Campus A users, Campus A Cleaning Staff
|Danny Dafoe
|Campus A users
|Carla Bonheur
|Campus B users
As in Part 1, assume the following access rules:
- Only Campus A users can enter Campus A; only Campus B users can enter Campus B.
And within the Campus A users:
- Biologists and Engineers can enter their own buildings and public spaces in it; in addition, Biologists can enter the Engineering building.
- Cleaning staff for Campus A can enter any room except the labs.
- Jim Fermi is allowed to enter his office in the Engineering Building, Private Office 2.
- Jim Fermi and Stan the Yeti are the only ones allowed to enter the Engineering Building Secure Lab 3.
- Jane Linnaeus is allowed to enter her Biology Building Private Office 5,
- Only Stan the Yeti can enter the Biology Building Secure Lab 6.
The campuses, buildings, and rooms can be secured as shown in Figure 2.
Figure 2. ACL structure for virtual campus example
(See Part 1 for additional details of the virtual campus example, the EAz concept of operations, and details of the major EAz architectural structures.)
Implementation and illustration
Included with this article is a complete EAz implementation and test of the virtual campus, which you can download in Eclipse project interchange format. This article will walk you through the implementation, starting with a look at EAz in practice, using a test-based approach to see a series of JUnit tests validating an EAz implementation of the virtual campus.
Once you've worked through the test cases, you'll get a look at the actual implementation classes in EAz, beginning with the EAz Permissions class (that defines an application's specific ACL authorization policy) and working up to the ACL and other EAz classes that are used in the JUnit test illustrations.
This article concludes with a brief discussion of the mock and utility classes used in EAz to abstract away the implementation details of specific Java EE implementations, and describes areas where mock classes can be replaced with actual implementations in a specific Java EE environment.
EAz in practice
TestVirtualCampus.java is a JUnit4 test case that illustrates and exercises the virtual campus's EAz implementation. The test case only deals with room entry, but you can extend it or develop parallel test cases to test additional virtual campus actions -- or your own implementation of any other EAz authorization scenario.
The bulk of code in the JUnit is in the JUnit Fixture (see Resources), the portion of the JUnit test that sets up the common structures for testing across all the tests. The fixture is implemented in the TestVirtualCampus.setUp() method, implemented as a JUnit @Before method, executed before all tests.
In this code:
Start by looking at the class members for TestVirtualCampus in Listing 1. As you see, there is a mock class for the ACLDao that retrieves specific authorizations; this mock DAO uses properties files so that you can test without needing to install a database. The properties files reside in the org.eaz.resources package, as indicated by the ACL_HOLDER_PROPERTIES_LOC.
Groups are not part of the Java EE specification, but are an important part of almost every actual Java EE implementation. This example uses groups, represented as strings, in EAz to represent named collections of users.
Your group name strings need to exactly match with the group names in your properties files. The ACL for the Engineering building, for example, is read from the org.eaz.resources.EngrBldg.properties file in Listing 2, and grants the PERM_ENTER permission to the groups for Engineers, Biologists, and the Building Cleaning staff. Simple relational tables will hold this information in production.
Your Principal object is also a mock; we've taken the approach of implementing a MockPrincipal that associates groups directly with the principal for convenient testing. In IBM® WebSphere® Application Server, groups are carried in relation to the WSSubject class and the registry (see Resources and Listing 8b).
The class members are concluded by defining the ACLs that provide authorization for each of the spaces you will test.
Listing 1. TestVirtualCampus
public class TestVirtualCampus { /* Define our data access object that will retrieve our ACL's. * In our test the ACLDao is a mock that uses easily configured * properties files to define ACL's; a production application will * use a database to do the same */ ACLDao mockAclDao; private final static String ACL_HOLDER_PROPERTIES_LOC="org.eaz.resources."; /* * Define our groups. Groups are not Java EE constructs and are * typically implemented as part of an environment-dependent * registry, so consider this ours. */ public final String GROUP_CAMPUS_A_USERS="CAMPUS_A_USERS"; public final String GROUP_CAMPUS_B_USERS="CAMPUS_B_USERS"; public final String GROUP_CAMPUS_A_ENGRS="CAMPUS_A_ENGRS"; public final String GROUP_CAMPUS_A_BIOLS="CAMPUS_A_BIOLS"; public final String GROUP_CAMPUS_A_CLEANERS="CAMPUS_A_CLEANERS"; /* * Define our test's principal names and MockPrincipal entitites. Our * MockPrincipal class implements the java.security.Principal interface, and * adds the ability to add and retrieve groups, which you'll typically find * as part of an environment-specific registry. */ public final String PRINCIPAL_JANE="Jane Linnaeus"; public final String PRINCIPAL_JIM="Jim Fermi"; public final String PRINCIPAL_STAN="Stan the Yeti"; public final String PRINCIPAL_KEN="Ken Lay"; public final String PRINCIPAL_DANNY="Danny Dafoe"; public final String PRINCIPAL_CARLA="Carla Bonheur"; MockPrincipal jane, jim, stan, ken, danny, carla; /* * Define our test ACL's, one for each space we'll probe for entry */ ACL campusA_ACL, engrBldgACL, engrBldgRoom2ACL, engrBldgSecureLab3ACL, biolBldgACL, biolBldgRoom5ACL, biolBldgSecureLab6ACL;
Listing 2. org.eaz.resources.EngrBldg.properties
# This properties style file represents the ACL for the engineering building ACLHolder # Format is groupOrPrincipal=permission CAMPUS_A_ENGRS=PERM_ENTER CAMPUS_A_BIOLS=PERM_ENTER CAMPUS_A_CLEANERS=PERM_ENTER
Listing 3 sets up the fixture (see Resources) of your test, using a @Before method that executes once before any of your JUnit tests:
You begin by instantiating your mockAclDao and ACLHolders. In EAz, the ACLHolder represents a part of the model that is secured by authorization. The virtual campus ACLHolders are doors to rooms or buildings. You instantiate each holder, linking its name to its property file location; as mentioned earlier, in production your ACLHolders and their ACLs would be stored in basic relational tables.
Once you have your room-oriented ACL holders defined, you retrieve each of their ACLs using the mockAclDao you created earlier. Complete the fixture by creating your mockPrincipals and associating them with their group memberships. In a production environment, this is typically the function of a registry implemented in LDAP, a database, or an operating system.
All the fixture's work is typically done in an application's initialization code. Your fixture is done, and you're ready to use EAz for authorization.
Listing 3. Setting up the test fixture
@Before public void setUp() throws Exception { /* * Instantiate our Mock DAO and ACLHolders. You'd implement your * production DAO using a classic or Object-Relational-Mapping-based DAO pattern. */ mockAclDao=new ACLDao(); /* * ACLHolders represent parts of our Campus model that require authorization. * Each is mapped to a resource file that defines its ACL. */ ACLHolder campusA = new ACLHolderImpl(ACL_HOLDER_PROPERTIES_LOC+"campusA"); ACLHolder engrBldg = new ACLHolderImpl(ACL_HOLDER_PROPERTIES_LOC+"engrBldg"); ACLHolder engrBldgRoom2 = new ACLHolderImpl(ACL_HOLDER_PROPERTIES_LOC+"engrBldgRoom2"); ACLHolder engrBldgSecureLab3 = new ACLHolderImpl(ACL_HOLDER_PROPERTIES_LOC+"engrBldgSecureLab3"); ACLHolder biolBldg = new ACLHolderImpl(ACL_HOLDER_PROPERTIES_LOC+"biolBldg"); ACLHolder biolBldgRoom5 = new ACLHolderImpl(ACL_HOLDER_PROPERTIES_LOC+"biolBldgRoom5"); ACLHolder biolBldgSecureLab6 = new ACLHolderImpl(ACL_HOLDER_PROPERTIES_LOC+"biolBldgSecureLab6"); // Retrieve each ACL from the properties file persisting it campusA_ACL=mockAclDao.retrieveACL(campusA); engrBldgACL = mockAclDao.retrieveACL(engrBldg); engrBldgRoom2ACL=mockAclDao.retrieveACL(engrBldgRoom2); engrBldgSecureLab3ACL=mockAclDao.retrieveACL(engrBldgSecureLab3); biolBldgACL = mockAclDao.retrieveACL(biolBldg); biolBldgRoom5ACL=mockAclDao.retrieveACL(biolBldgRoom5); biolBldgSecureLab6ACL=mockAclDao.retrieveACL(biolBldgSecureLab6); /* * Set up our principals and their groups. This code emulates a registry */ // Jane is a Campus A Biologist jane = new MockPrincipal(PRINCIPAL_JANE); jane.addGroup(GROUP_CAMPUS_A_USERS); jane.addGroup(GROUP_CAMPUS_A_BIOLS); // Jim is a Campus A Engineer jim = new MockPrincipal(PRINCIPAL_JIM); jim.addGroup(GROUP_CAMPUS_A_USERS); jim.addGroup(GROUP_CAMPUS_A_ENGRS); // Stan is a Campus A Biologist stan = new MockPrincipal(PRINCIPAL_STAN); stan.addGroup(GROUP_CAMPUS_A_USERS); stan.addGroup(GROUP_CAMPUS_A_BIOLS); // Ken is a Campus A Building Cleaner ken = new MockPrincipal(PRINCIPAL_KEN); ken.addGroup(GROUP_CAMPUS_A_USERS); ken.addGroup(GROUP_CAMPUS_A_CLEANERS); // Danny is a generic Campus A user danny = new MockPrincipal(PRINCIPAL_DANNY); danny.addGroup(GROUP_CAMPUS_A_USERS); // Carla is a Campus B visiting professor carla = new MockPrincipal(PRINCIPAL_CARLA); carla.addGroup(GROUP_CAMPUS_B_USERS); }
Listing 4 shows the two common test methods you will use in each of your individual tests. The essence of EAz authorization is the invocation of the permit() method on the ACL. The permit() method has a variety of overloaded forms (as we'll discuss when we look at the ACL class). All the forms involve some kind of required permissions set and some type of identity; the form in these tests uses a MockPrincipal object for identity. The essence of any EAz ACL test -- in fact of any ACL test -- is the question: Does identity X have specified permissions Y in relation to entity Z?
Both the assertPermitEntry and the assertDenyEntry methods use the EAz ACL to ask this question:
- assertPermitEntry takes a list of MockPrincipal identities and asserts that all have the reqdPerms permissions.
- assertDenyEntry asserts the converse: that all of the identities in the list lack the permissions in reqdPermissions.
Listing 4. Common test methods
private void assertPermitEntry(ACL aclToTest, PermissionSet reqdPerms, List<MockPrincipal> testCandidates) { try { for (MockPrincipal candidate: testCandidates){ aclToTest.permit(reqdPerms, candidate); } } catch (Exception e) { fail("Should succeed"); } } private void assertDenyEntry(ACL aclToTest, PermissionSet reqdPerms, List<MockPrincipal> testCandidates) { for (MockPrincipal candidate: testCandidates){ try { aclToTest.permit(reqdPerms, candidate); fail("Should not succeed"); } catch (Exception e) { // We expect an exception here } } }
Let's put the methods to work. Listing 5 applies the permissions to the two campus gates, then to the Engineering building door:
- Use the Permissions.getPermissionSetForAction() static method to relate the desired action to the PermissionSet that contains the permissions needed to authorize the action.
- Specify which ACL to test.
- Create a list of MockPrincipal candidates you expect to be authorized, and a list of MockPrincipal candidates you expect to be denied.
- Call the assertPermitEntry() and then the assertDenyEntry() methods with your lists.
All the test methods in TestVirtualCampus follow this form. Figure 3 shows the successful test results.
Listing 5. Applying permissions
/** * Test Campus A's front gate. We expect everyone to get in but Carla */ @Test public void testFrontGate(){ PermissionSet reqdPerms = Permissions .getPermissionSetForAction(Permissions.AllActions.ACTION_ENTER); ACL aclToTest=campusA_ACL; MockPrincipal[] expectedPermitCandidates={jane, jim, stan, ken, danny}; MockPrincipal[] expectedDenyCandidates={carla}; assertPermitEntry(aclToTest, reqdPerms, Arrays.asList(expectedPermitCandidates)); assertDenyEntry(aclToTest, reqdPerms, Arrays.asList(expectedDenyCandidates)); } /** * Test the Engineering building door * Rules are: Engineers, Biologist and Cleaning Staff can Enter * Generic Campus A staff cannot enter */ @Test public void testEngrBldgDoor(){ PermissionSet reqdPerms = Permissions .getPermissionSetForAction(Permissions.AllActions.ACTION_ENTER); ACL aclToTest=engrBldgACL; MockPrincipal[] expectedPermitCandidates={jane, jim, stan, ken}; MockPrincipal[] expectedDenyCandidates={danny, carla}; assertPermitEntry(aclToTest, reqdPerms, Arrays.asList(expectedPermitCandidates)); assertDenyEntry(aclToTest, reqdPerms, Arrays.asList(expectedDenyCandidates)); }
Figure 3. Testing the virtual campus using EAz
Exploring the EAz implementation
Now that you've seen EAz in action, let's take a look at the details of the EAz implementation itself. We will begin with the Permissions class that holds the application-specific actions and permissions authorized by EAz, then move on to the ACL class that implements the critical permit() method, which is the core of EAz's authorization functionality.
Permissions class
EAz implements a Permissions class as a single standard location for an EAz application to declare its permissions and actions. Both permissions and actions are implemented in EAz as EnumSets. Permissions represent atomic binary permissions for an application and actions are the application's commands; that is, the activities that require authorization. In syntactic terms:
- Actions are the verbs of an application.
- Permissions are the qualifications needed to perform an action.
- ACLs authorize or deny actions for the ACLHolders they protect.
Application developers must configure and maintain a single unique EAz permissions class for each application, since it represents the unique permissions of an application. Listing 6 shows the Permissions class for the virtual campus:
Begin by declaring all the permissions in your application in the static AllPermissions enum. Our test exercises the PERM_ENTER permission; additional permissions are included to illustrate how AllPermissions needs to enumerate every permission that EAz requires to grant or deny authorization.
After defining the permissions, go on to define the actions of the virtual campus. Additional actions have been defined over and above the ACTION_ENTER that is exercised in our JUnit to emphasize the fact that AllActions can and must contain every action definition secured by EAz in an application.
Since both enums are static, their members can be referred to directly from anywhere in an application, for example as:
The two static maps are the application structures that relate permissions to actions. They're private to the class and accessed only through public static methods getPermissionSetForAction() (used extensively to retrieve the required PermissionSet for an ACL to authorize against) and getSecuredActions() (a seldom-used but handy utility method returning all actions secured by EAz, used primarily in the GUI configuration displays, to be discussed in Part 3 of this series).
The static initialization block of the class executes exactly once at application initialization, and performs the essential task of relating permissions and actions by configuring the static maps. You can configure the basic authorization structure of the application in this initializer by:
- Assembling a list of specific permissions required to perform an application action.
- Passing the action and the required permissions for authorization to the configureAuthzAction method.
configureAuthzAction does the actual work of map configuration by creating a new PermissionSet to hold the required permissions, adding the permissions to the set, and configuring the static maps to hold the relationship.
In this way, a single static class declares the entire extended authorization policy of an EAz application.
Listing 6. Permissions class for the virtual campus application
public final class Permissions { /** * The AllPermissions Enum enumerates all permissions available in the system. * Permissions are unary and individible and are not exposed beyond the * acl package */ protected static enum AllPermissions { PERM_ENTER, PERM_GRANT_ENTRY, PERM_REVOKE_ENTRY, PERM_LOCK_DOOR; } /** * The AllActions Enum enumerates all actions in the system and provides the * set of keys for the available PermissionSets. Since an action is the key * to a set of permissions it can represent one to many permissions. * Actions are exposed at the service layer * * @author rpc * */ public static enum AllActions { ACTION_ENTER, ACTION_MANAGE_ACCESS, ACTION_LOCK_DOOR; } /* * These two maps hold the relationship between actions and * permissions */ private static Map<AllActions, PermissionSet> NamedPermissionSets = new EnumMap<AllActions, PermissionSet>(AllActions.class); private static Map<PermissionSet, AllActions> PermissionSetToAction = new HashMap<PermissionSet, AllActions>(); /** * GetPermissionSetForAction retrieves the PermissionSet * required to perform a specified action * * @param psKey * @return */ public static PermissionSet getPermissionSetForAction(AllActions psKey) { PermissionSet ps = NamedPermissionSets.get(psKey); if (ps ==null){ throw new RuntimeException ("No such permission as "+ psKey); } return ps; } public static Set<AllActions> getSecuredActions(){ return NamedPermissionSets.keySet(); } /** * This static initializer performs the one-time work of relating permissions * to actions. It delegates the configuration of each authorization action to * the configureAuthzAction method, passing in an Action enum to configure * and a list of permissions required to perform the action */ static { try { ArrayList<AllPermissions> reqdPerms; reqdPerms=new ArrayList<AllPermissions>(); reqdPerms.add(AllPermissions.PERM_ENTER); configureAuthzAction(AllActions.ACTION_ENTER, reqdPerms); reqdPerms=new ArrayList<AllPermissions>(); reqdPerms.add(AllPermissions.PERM_GRANT_ENTRY); reqdPerms.add(AllPermissions.PERM_REVOKE_ENTRY); configureAuthzAction(AllActions.ACTION_MANAGE_ACCESS, reqdPerms); reqdPerms=new ArrayList<AllPermissions>(); reqdPerms.add(AllPermissions.PERM_LOCK_DOOR); configureAuthzAction(AllActions.ACTION_LOCK_DOOR, reqdPerms); } catch (Exception e) { throw new RuntimeException(e); } } /** * Performs the work of relating an AllActions enum to a PermissionSet * of permissions required to perform it * * @param action * @param reqdPermissions */ private static void configureAuthzAction(AllActions action, List<AllPermissions> reqdPermissions) { PermissionSet ps= new PermissionSetImpl();; for (AllPermissions reqdPerm: reqdPermissions){ ps.addPermission(reqdPerm); } NamedPermissionSets.put(action, ps); PermissionSetToAction.put(ps, action); } }
ACL class
If the Permissions class embodies the authorization policy of an application, the ACL class implements the process of authorization. ACL requires some customization, but unlike Permissions, the customization is for a runtime environment rather than for a particular application. The ACL customization relates to the fact that different Java EE implementations carry out or extend Java security in different ways to deal with important artifacts and concepts outside the Java EE specification, such as groups.
Before diving into the ACL itself, let's briefly look at how an ACLDao constructs an ACL from a database or other persistant source. The snippet in Listing 7, from our mock ACLDao, shows the creation of a Group to PermissionSet association in an ACL, which determines the permissions available to a group on the ACLHolder. Here, a series of persisted individual permissions, retrieved as a set of string tokens in this case, is added to a PermissionSet. Once the PermissionSet is complete, the code invokes the ACL's addPermissionSet(groupName, permissionSet)method to add this association of a groupName and set of permissions to the ACL structure.
Listing 7. Detail from ACLDao, creating association of a groupName and PermissionSet in an ACL
/* * This loop takes each permission granted to a group, * adds it to a PermissionSet, then adds the group and * its associated PermissionSet to the ACL under * construction */ while (tokenizer.hasMoreTokens()){ permissionSet.addPermission(Permissions.AllPermissions .valueOf(tokenizer.nextToken())); } // Add the group and its granted permission set into the ACL acl.addPermissionSet(groupName, permissionSet);
Our ACL class in Listing 8a features a public constructor accepting the securedResource, the ACLHolder that the ACL protects, and utility methods that operate on the ACL's internal grants structure. The ACL implements its grants structure as a map of PermissionCollections keyed by name. The grants map represents the collection of permissions available to each "name" in relation to the ACL's securedResource ACLHolder. Names must be unique in this implementation and can represent either principal names or the names of groups; the ACL doesn't distinguish between them.
You have already seen the addPermissionSet(groupName, permissionSet) method in action in the ACLDao; it creates the association in the grants structure from the ACL's persisted form in a database, or, in this demonstration implementation, a properties file. The other helper methods are getPermittedNames(),which returns the set of names in grants for use in a GUI display, and getPermissionSet(String name), which is the core access function for the grants structure during the execution of the core permit() method.
The ACL's permit() method is heavily overloaded for convenience; its main form is:
permit(PermissionSet reqdPerms, List<String> nameList) throws PermissionViolationException
and the other overloads extract a name list from their arguments and delegate it to the main form. Operation permit() iterates over the names it has been given, which can represent either principals or groups, and checks the permissions associated with each name in the grants map for the required permissions for the operation, returning silently on success. If options are exhausted, the method throws the PermissionViolationException. Be aware that this exception contains information about the permissions requested and the union of all permissions available for the request, mostly for logging purposes.
The two overloaded forms of permit() that use an explicit or implied subject are left as blank stubs for environment-specific implementations. These methods must be tailored to the a particular Java EE application server, and should extract unique forms of the principal(s) and available groups from the implied or explicit subject, then delegate to the main form of permit(). A WebSphere specific example is shown in the next section.
Listing 8a. EAz ACL class
/** * The ACL implements the process of authorization in EAz by means of permit() methods. */ public class ACL { // An ACL instance secures its ACLHolder private ACLHolder securedResource; /* * Main internal ACL structure, mapping names to the set of permissions available * to them on the ACLHolder. Note that a name can represent * either a group or a Principal */ private Map<String, PermissionSet> grants = new HashMap<String, PermissionSet>(); /** * Public constructor creating an ACL and associating it * with the ACLHolder resource it secures * * @param securedResource */ public ACL(ACLHolder securedResource){ this.securedResource=securedResource; } /** * Add assocations of names and their associated PermissionSet * Could be extended to merge permissionSets * * @param name * @param permissionSet */ public void addPermissionSet (String name, PermissionSet permissionSet){ grants.put(name, permissionSet); } /** * This variant of permit is for implementation-independent testing of the EAZ * classes, for example in JUnit tests * * @param mockPrincipal - Demonstration principal for testing, implements a * getGroups() method * * @param reqdPerms - PermissionSet of required permissions * @throws PermissionViolationException */ public void permit(PermissionSet reqdPerms, MockPrincipal mockPrincipal ) throws PermissionViolationException { List<String> groups = new ArrayList<String>(mockPrincipal.getGroups()); // Create groups list from MockPrincipal groups set permit(reqdPerms, groups); } /** * * @param reqdPerms * @param singleName - convenience implementation for a single group or Principal * name * @throws PermissionViolationException */ public void permit (PermissionSet reqdPerms, String singleName) throws PermissionViolationException { List<String> groupList = new ArrayList<String>(); groupList.add(singleName); permit(reqdPerms, groupList); } /** * @param PermissionSet reqdPerms * @param List groupList */ public void permit(PermissionSet reqdPerms, List<String> nameList) throws PermissionViolationException { PermissionSet availablePerms=new PermissionSetImpl(), namePerms; for (String name: nameList){ namePerms = grants.get(name); if (namePerms == null){ continue; } availablePerms.addPermissions(namePerms.getPermissions()); if (namePerms.hasPermissions(reqdPerms)){ return; } } /* If we got here no name allowed permission, so throw the exception * that indicates denied permission */ throw new PermissionViolationException (reqdPerms, availablePerms); } /** * @param PermissionSetreqdPerms */ public void permit(PermissionSet reqdPerms) throws PermissionViolationException { // TODO fill in, making use of your implied implementation-dependent // subject } /** * @param PermissionSetreqdPerms * @param ListgroupList */ public void permit(PermissionSet reqdPerms, Subject subject) throws PermissionViolationException { // TODO fill in, making use of an explicit implementation-dependent // subject } /** * @return the set of Groups mapped to permission sets in this ACL. */ public Set<String> getPermittedNames() { return grants.keySet(); } /** * * @param name - the group to return a permission set for * @return PermissionSet for the given group in the ACL or null */ public PermissionSet getPermissionSet(String name){ return grants.get(name); } public ACLHolder getSecuredResource() { return securedResource; } public void setSecuredResource(ACLHolder theSecuredResource) { securedResource = theSecuredResource; } }
Overloading the ACL class
The two ACL.permit() methods that use implicit or explicit subjects to perform authorization are stubbed out because the techniques for obtaining groups from a subject vary by Java EE implementation. Listing 8b illustrates how you can retrieve the needed group information in WebSphere Application Server V6.1 by subclassing the ACL and overriding the subject-oriented permit() methods in a WASACL class. (The WASACL class requires the sas.jar and wssec.jar libraries in the build and runtime paths; these two JAR files are not included in the download but are provided by all WebSphere Application Server V6.1 installations.)
The permit(PermissionSet reqdPerms) method uses the implicit subject of the current caller as a source of group information for authorization. A static call to WebSphere-specific WSSubject.getCallerSubject() obtains the caller subject. Once you have the subject of the caller in hand, the method simply delegates to permit(PermissionSet reqdPerms, Subject subject), which takes an explicit subject. You would use the implicit subject technique for the typical case of requesting authorization for the current user. The explicit subject method enables you to pass in the subject of any user and determine if they are authorized to perform an action.
The permit(PermissionSet reqdPerms, Subject subject) method uses its explicit subject argument to retrieve a WebSphere-specific public credential set. The size check ensures that there is only one entry in the set, as expected. If a particular application is designed to add additional credentials to the credential sets, then you will need to modify the code to select the correct WebSphere credential entry from the set in an application-specific way.
Once the WebSphere-specific credential set is in hand, you can retrieve the groups with groups = creds.getGroupIds(). (The groups will come back as strings in an LDAP-like format. You should write your own application-specific parsing code to transform the group strings into the form used in the application's ACL.grants structure so the available and specified groups will match.)
When you have the groups that the code delegates to, the core permit (reqdPerms, groups); method and authorization proceed as usual.
Listing 8b. WASACL class using WebSphere subject
/** * WASACL extends the ACL class for WebSphere-specific example implementations of the * permit() method, using (6.1) WAS-specific implicit and explicit subjects as arguments */ package org.eaz.acl; import java.util.Iterator; import java.util.List; import java.util.Set; import org.eaz.domain.ACLHolder; /* * The imports below are only for the WebSphere specific example overloaded * permit() methods. You'll need to place sas.jar and wssec.jar in the classpath * to use the imports and example code. */ import com.ibm.websphere.security.WSSecurityException; import com.ibm.websphere.security.auth.CredentialDestroyedException; import com.ibm.websphere.security.auth.WSSubject; import com.ibm.websphere.security.cred.WSCredential; import javax.security.auth.Subject; import javax.security.auth.login.CredentialExpiredException; /** * @author Robert Patt-Corner, Keys Botzum * The WASACL extends ACL with WebSphere-specific techniques for dealing with * implicit and explicit subjects in the permit() method */ public class WASACL extends ACL { public WASACL(ACLHolder securedResource) { super(securedResource); } /** * @param PermissionSet reqdPerms * This is an example implementation for WebSpere V6.1, illustrating how to use * the implicit WebSphere Subject to perform authorization. Must be run in a * WAS container. * * Introduces a dependency on WAS 6.1's wssec.jar and sas.jar */ public void permit(PermissionSet reqdPerms) throws PermissionViolationException { try { // Get the subject in a WebSphere specific manner, then delegate Subject subject = WSSubject.getCallerSubject(); permit(reqdPerms, subject); } catch (WSSecurityException e) { throw new PermissionViolationException("Unable to retrieve the WebSphere caller subject", e); } } /** * @param PermissionSet reqdPerms * @param Subject explicit subject * This is an example implementation for WebSphere 6.1 ilustrating how to * approach using an explicit subject to perform authorization. */ public void permit(PermissionSet reqdPerms, Subject subject) throws PermissionViolationException { subject.getPrincipals(); String username=null; List<String> groups=null; // Get the public credentials (should be only one) from the subject of // interest Set credSet = subject.getPublicCredentials(WSCredential.class); if (credSet.size() != 1) { throw new PermissionViolationException("Found " + credSet.size() + "WSCredentals, which is not legal"); } Iterator iter = credSet.iterator(); WSCredential creds = (WSCredential) iter.next(); // Get the unique security name corresponding to the Principal try { username=creds.getUniqueSecurityName(); groups = creds.getGroupIds(); /* At this point you'll want to insert application- * specific code to transform both the username and then * each of the groups identifiers to the format your * application uses for group names in the grants structure */ groups.add(username); // add the Principal name to the groups } catch (CredentialExpiredException e) { throw new PermissionViolationException("Found expired WS credentials in ACL", e); } catch (CredentialDestroyedException e) { throw new PermissionViolationException("Found destroyed WS credentials in ACL", e); } permit (reqdPerms, groups); } }
Remaining classes of interest
PermissionSetImpl (Listing 9) is an implementation of the PermissionSet interface that enables the construction of a set of binary permissions from the AllPermissions enum. The main point of interest is the unusual mode of construction of the EnumSet, using the EnumSet.noneOf()class method; this is the Java 5 technique for obtaining an empty instance of an EnumSet containing a particular enum.
Listing 9. PermissionSet implementation
public class PermissionSetImpl implements PermissionSet{ private EnumSet<AllPermissions> permissions = EnumSet.noneOf(AllPermissions.class); public void addPermission(AllPermissions permission) { permissions.add(permission); } public void addPermissions(EnumSet<AllPermissions> permissions){ for (AllPermissions permission: permissions){ addPermission(permission); } } public boolean hasPermission(AllPermissions permission) { return permissions.contains(permission); } public PermissionSetImpl() { } public PermissionSetImpl(AllPermissions seed) { this.addPermission(seed); } // Exposes the central containsAll operation public boolean hasPermissions(PermissionSet ps) { return permissions.containsAll(((PermissionSetImpl)ps).permissions); } public EnumSet<AllPermissions> getPermissions() { return permissions; } public String toString() { return permissions.toString(); } }
MockPrincipal (Listing 10) illustrates the simple technique of implementing the java.security.Principal interface with a method to associate groups with a principal. As discussed earlier, it's a stand-in for the implementation-dependent construction of a subject and principals backed by a registry for our testing purposes.
Listing 10. MockPrincipal testing class
public class MockPrincipal implements Principal { private String name; private Set<String> groups; public final static String PRINCIPAL_PREFIX="PRINCIPAL/"; public MockPrincipal(String name){ this.name=name; this.groups=new HashSet<String>(); this.groups.add(PRINCIPAL_PREFIX+name); } public String getName() { return name; } public void addGroup(String groupName){ this.groups.add(groupName); } public Set<String> getGroups(){ return this.groups; } }
The AuthorizationManager interface and implementation is, as noted in Part 1, a thin wrapper for your ACL permit() method, specialized for two purposes:
- The authorize() methods are designed to protect the methods in a service layer from unauthorized access.
- The canAuthorize() methods are designed to facilitate a GUI display of grants in order to display or manage EAz authorization grants from a graphical interface. The canAuthorize and related display methods will be the focus of the next article in this series.
Listing 11 shows the key method of interest in the AuthorizationManagerImpl, from the point of view of service layer protection. AuthorizationManagerImpl uses an ACLManager service to retrieve the testACL instead of directly fetching the ACL from an aclDAO. Adding a service layer for ACL retrieval opens up EAz to implementing ACLManager for the possibility of using caches for frequently used ACLs. In closing, Listing 12 shows a stubbed implementation of the ACLManager, indicating locations where a cache would be useful.
Listing 11. Service layer protection in the AuthorizationManagerImpl
public void authorize(PermissionSet ps, List<String> nameList, ACLHolder aclHolder) throws PermissionViolationException { // Main implementation ACL testACL = aclManager.getACL(aclHolder); try { testACL.permit(ps, nameList); } catch (PermissionViolationException pve){ logger.log(Level.WARNING, "Permission request failed on nameList "+nameList,pve); throw pve; } }
Listing 12. Stubbed implementation of ACLManager
public class ACLManagerImpl implements ACLManager { private ACLDao aclDao; public ACL getACL(ACLHolder aclHolder) { ACL theACL = retrieveFromCache(aclHolder); if (theACL==null){ theACL=retrieveFromDatabase(aclHolder); addToCache(theACL); } return theACL; } private ACL retrieveFromDatabase(ACLHolder aclHolder) { ACLDao aclDao = new ACLDao(); ACL theACL = aclDao.retrieveACL(aclHolder); return theACL; } private void addToCache(ACL acl) { // TODO cache-dependent ADD method } private ACL retrieveFromCache(ACLHolder aclHolder) { // TODO cache-dependent RETRIEVE method return null; } }
You have now walked through the testing usage and implementation of EAz as applied to our virtual campus model, visiting and discussing both ways of using and testing EAz and the implementation of the main EAz classes. The places where you need to add Java EE-implementation dependent code to work in a given Java EE container (such as the registry and subject implementation) were indicated and illustrated:
- Using org.eaz.acl.Permissions to configure an application's permissions and actions/commands.
- The techniques involved in implementing an EAz data access object to persist and retrieve permissions.
- The operation of the core ACL class in permitting actions based on PermissionSets associated with groups and principals.
- The surrounding utility classes and service layer wrapper.
In Part 3, the conclusion to this series, you will explore how to visualize application actions, groups, and principals, and their relationship to EAz permissions, in a graphical interface. This will show users and managers an application's EAz permission grants, and enable you to construct a management console interface.
More in this series
- Part 1: The problem space and EAz architecture
- Part 3: EAz access visualization framework and graphical interface
|Code sample
- JUnit and JUnit Fixtures
- Advanced authentication in WebSphere Application Server
- JSR-000244 - Java Platform, Enterprise Edition 5 Specification
- Authorization concepts and solutions for J2EE applications
- Java playing card example of enum concept
- EnumSet Javadoc
Dig deeper into WebSphere on developerWorks
- Overview
- New to WebSphere
- Technical library (tutorials and more)
- Forums
- Community
- Downloads
- Products
- Events
developerWorks Premium
Exclusive tools to build your next great app. Learn more.
dW Answers
Ask a technical question
Explore more technical topics
Tutorials & training to grow your development skills


text:
3801 S National Ave
Springfield, MO 65807 Phone number & directions
Springfield, MO 65807 Phone number & directions
License & Identifications
A medical license is required for a doctor to practice medicine in a particular state. Requirements vary by state but most require, at a minimum, post-graduate training in the doctor's specific specialty. An NPI number is a national identifier unique to an individual health care provider and is managed by the Center for Medicare & Medicaid Services (CMS).
Learn more about Dr. Kayce Morton:
View the full profile to get information on:
- Qualifications
- What's important to you
View full profile
Patient Reviews
Have you visited Dr. Morton? Share your experience.
Write a Review
Write a Review
Dr. Morton has 3 hospital affiliations:
- Cox Medical Center
- Cox-Monett Hospital
- Cox Walnut Lawn
Home > Find a Hospitalist > MO > Springfield Hospitalists > Dr. Kayce Morton, DO
Similar doctors nearby
Dr. Ian Fawks
Family Medicine
15 years experience
Springfield, MO
Dr. Mark Entrup
22 years experience
Springfield, MO
Dr. Hong Wang
Springfield, MO
Dr. Roberto Monarez
Springfield, MO
Dr. Ravinder Singh
10 years experience
Springfield, MO
Dr. Shawn Usery
Family Medicine
Springfield, MO
- Additional Information
- Dr. Kayce Whittington Morton DO is a female doctor and practices in Hospitalist.
- Where does Dr. Kayce W. Morton practice?
- Dr. Kayce Morton has 1 office location.
Dr. Kayce Morton practices Hospitalist near Springfield, MO.
See Springfield Hospitalists.

subset: commoncrawl


text:
See why nuclear medicine departments are switching to MIM.
From faster comparison exam reviews, customizable options, and quantitative measurements like PERCIST and RECIST -- MIM can expedite your workflow, in a vendor-neutral platform.
Own the Pathway
MIM Symphony™ puts you in control of the prostate cancer management pathway in a single platform. Improve biopsy yield as you guide your patient from detection to biopsy through treatments.
Learn More
Experience the Power of Automation
From dose processing workflows to reporting to patient list maintenance, MIM powers your daily workflow with a series of automated features to save you time in your day.


text:
Death Ride to Osaka
- Directed by Jonathan Kaplan
===Story=== A minor TV venture for director Jonathan Kaplan, whose penchant for themes sensitive to the plight of women ''in extremis'' informs even this lesser work with a heartening sympathy for its characters. Jennifer Jason Leigh plays a naive, would-be singer named Carol Heath who, through the machinations of a sleazy agent (Philip Charles MacKenzie), signs away a month of her life for the chance of being a nightclub singer in Tokyo. Only once she's there, she finds herself pressed into sexual service by her real employer, the yakuza. Not that she succumbs to the pressure to perform in that other capacity. That's her problem. Because others in her predicament, having refused to serve, wound up on the title's "Death Ride" (the pre-video title was ''Girls of the White Orchid''). The plot is standard thriller fare, taken from a true story, and somewhat redeemed by Kaplan's no-nonsense direction and his affinity for stories of women in trouble. Indeed, along with Leigh's finely realized naive-girl performance, ''Death Ride to Osaka'''s main interest may lie in the resonance it has with Jonathan Kaplan's later, more accomplished films. Although it does lack the ambiguity that helps make ''The Accused'' interesting, similar themes of abuse are explored. Ditto for ''Brokedown Palace'', its naive young girls in treacherous paradise and legal closed doors making ''Death Ride'' look like a dry run for Kaplan's later film. ''--Jim Gay''
|Jennifer Jason Leigh
|Ann Jillian
|Philip Charles MacKenzie
Recent threads
- VHS (V/H/S) (2012) Sep 27
- The Third Man (1949) Sep 27
- Matchstick Men (2003) Sep 27
- Film Club - Week 57: Movie Selection Sep 27
- Genre: Adventure Movies
- Director: Jonathan Kaplan
- Producer: Trinity Home Entertainment
- Length: 113 min
Theatrical Release North America Nov 28, 1983
Ratings North America PG
DVD Release North America Apr 30, 2003


text:
- Degree of English Studies, Lyon3 Jean Moulin University, France
- Master of Translation and Interpreting studies, Monash University, Melbourne
- NAATI Professional translator (EN-FR)
- NAATI Professional interpreter (EN-FR, FR-EN)
Authorised by: Arts Web Team. Maintained by: Arts Web Team.
Copyright © 2014 Monash University. ABN 12 377 614 012 Accessibility - Caution - Privacy, Monash University CRICOS Provider Number: 00008C, Monash College CRICOS Provider Number: 01857J
We acknowledge and pay respects to the Elders and Traditional Owners of the land on which our six Australian campuses stand.


text:
What about those fears, so prevalent a year ago, about Hulu, Netflix, and other Internet entertainment streamers killing cable?
Fughetabout 'em - for now.
That was the conclusion of a new J.D. Power and Associates study that seems to confirm what Comcast Corp. executives and other pay-TV experts have been saying for several months.
The threat of so-called over-the-top Internet providers - the most prominent of which is Netflix, with about 20 million subscribers - hasn't materialized for cable and satellite-TV companies, at least as of yet. In part, that's because those services don't have the must-see sports and other live programming, according to J.D. Power research.


text:
Added by kclela5sports Subscribe 1
Published 13 Dec 2010
http://bit.ly/e8clda?manchester-united-v-arsenal-live-2 Sir Alex Ferguson's side will start with misfiring...
http://bit.ly/e8clda?manchester-united-v-arsenal-live-2 Sir Alex Ferguson's side will start with misfiring Wayne Rooney at the front with just one goal since his return to the pitch after his holiday. The less than loyal Scouser has not scored a league goal from open play since March. That is two months before the end of last season. With the player earning in the region of a million pounds per month the fans are beginning to wonder if their ticket money is being wasted each week. The much maligned Dimitar Berbatov is on eleven league goals before the halfway point this years and Wayne Rooney has only scored one penalty. This could be the last chance saloon as the transfer window looms ever closer See how the games spans out on Trueonlinetv's epl channel. Log onto the website by clicking the link which you find on top of this insert or by simply going directly to the website you have seen in the video.


text:
Over the summer we had heard that this young kid was going to be the heir apparent to Dykes, and that he too was ready to step in as a true freshman and compete, just like Dykes had done in 2004. We were hesitant to believe that a freshman could step in and pick up where D.J. had left off at Idaho.
Keo is the second Vandal to be named to the TSN Freshman All-American Team (former UI DE Brandon Kania made the list in '01).
He came to Idaho with a stellar high school football resume. A Class 2A AP All-State selection at defensive back, Keo transferred to powerhouse Archbishop Murphy from Woodinville High before his junior year and quickly became a difference maker on both sides of the ball. In two seasons at Murphy Keo rushed for 2,946 yards and an eye-popping 37 touchdowns. Not satisfied with just running the ball, Keo also completed 7-for-13 pass attempts for 184 yards and four TDs. And, just to be complete, he caught eight passes for 162 yards and one score. As a senior he rushed for 1,675 yards (13.4 yards per carry) and 22 touchdowns in 15 games. He was named an All Conference running back, an Associated Press 2A All-State defensive back, and the Cascade Conference's Defensive Back of the Year.
With Dykes gone, Keo's shot at a starting job presented itself, and he pounced on it.
This is the third season in a row that Idaho's strong safety has been the team's second leading tackler.
He acclimated to the speed of the Division 1A game quickly, and became a leader for the Vandal defense in his first season in Moscow. And with 8 of Idaho's top 10 tacklers returning next fall, the stage is set for a solid 2007 campaign for Keo and the rest of the Idaho defense.
In total, seven Western Athletic Conference athletes were named to The Sporting News All-American Teams.
Ian Johnson, RB, BSU Korey Hall, LB, BSU
Antonio Baker, S, LT
Justin Cole, DE, SJSU
Paul Igboeli, LB, USU
Shiloh Keo, S, Idaho
Kyle Wilson, CB, BSU


text:
Show more...
Praise & Worship 24/7
Majesty Radio 24/7
The Word in Song (Weeknights 9pm-Midnight)
Music Thru the Night (Daily 1am-6am)
Music for Saturday (3-6pm)
Celebration of Praise (Sat. 10p-1am)
Sunday Praise (7am-10am)
Music for Sunday (Noon-6pm)
View Verse of the Day
Be one of a million standing for Jesus on 7.16.16.
Many upgrades and replacements are continually needed to our specialized equipment that is in several locations around NH and require costly legal, engineering and installation fees as well as considerable maintenance. We would like to make known some of our immediate needs to the community for those who are interested in making a donation towards a specific item or project. Some of these items are listed below.
NHGR Wish List
Automation Software & Computer $5,500
Scheduling Software $1,200
Updated Website $1,500
Thank you to every partner who continues to keep NHGR on the air!
Unlocking the Bible: M-F @ 2 pm
Radical: M-F @ 2:30 pm
Open Line - Sat morning @ 9 am
White Horse Inn - Sun evenings at 7:55 pm
Treasured Truth - Sun evenings at 6:30 pm
Saturday Night Gospel Hour - Sat @ 6 pm
NHGR is looking for a home for a sign, and we need your help. The optimum site would be along Route 3 and possibly on Route 106. It is our desire to make the visitors to New Hampshire and residents who travel these roads aware of the WANH 91.5 FM station in Meredith. Knowing there are tens-of-thousands of vehicles that use these corridors and will pass these signs each year, this will be a prime "avenue" to introduce people to the teachings of Jesus and maximize the impact of the gospel being preached and taught day and night via the many transmitters of New Hampshire Gospel Radio. The cost for advertising on billboards is expensive. We can greatly reduce this cost and increase awareness of Christian radio in Central NH, if we could use your land for our sign. If you have property along these roads or know someone who does, we would love to talk to you about the possibilities of a partnership.


text:
Movie capsules: What's playing in Erie, Meadville, Dec. 13-Dec. 19
Tinseltown: "It's a Wonderful Life" on Wednesday, 2 and 7 p.m.
Tinseltown: "The Hobbit: An Unexpected Journey" in 2-D and 3-D.
Movies at Meadville: "The Hobbit: An Unexpected Journey" in 2-D and 3-D.
Tinseltown: "End of Watch." "Perks of Being a Wallflower."
Movies at Meadville: "Life of Pi" in 2-D and 3-D. "Flight." "Killing Them Softly."
"The Hobbit: AN UNEXPECTED JOURNEY": A curious Hobbit, Bilbo Baggins (Martin Freeman), journeys to the Lonely Mountain with a group of Dwarves to reclaim a treasure. (2:49. PG-13 for extended sequences of intense fantasy action violence and frightening images.)
"It's a Wonderful Life": An angel helps a compassionate but despairingly frustrated businessman (James Stewart) by showing what life would have been like if he never existed. (2:10. Not rated.)
"Argo": As the Iranian revolution reaches a boiling point, a CIA 'exfiltration' specialist concocts a risky plan to free six Americans who have found shelter at the home of the Canadian ambassador. (2:00. R for language and some violent images.) ****
"Breaking Dawn, Part 2": After the birth of Renesmee, the Cullens gather other vampire clans in order to protect the child. (1:55. PG-13 for sequences of violence including disturbing images, some sensuality and partial nudity.) **1/2
"END OF WATCH": Two young officers are marked for death after confiscating a small cache of money and firearms from the members of a notorious cartel. (1:49. R for strong violence, pervasive language, some drug use.) ***
"Flight": An airline pilot (Denzel Washington) saves a flight from crashing, but an investigation into the malfunctions reveals something troubling. (2:18. R for drug and alcohol abuse, language, sexuality/nudity and an intense action sequence.) ***
"Killing Them Softly": Jackie Cogan (Brad Pitt) is an enforcer hired to restore order after three dumb guys rob a Mob-protected card game, causing the local criminal economy to collapse. (1:37. R for violence, sexual references, pervasive language, and some drug use.) ***
"Life of Pi": A young man (Suraj Sharma) who survives a disaster at sea is hurtled into an epic journey of adventure and discovery. (2:07. PG for emotional thematic content throughout, and some scary action sequences and peril.) ***1/2
"Lincoln": As the Civil War continues to rage, America's president (Daniel Day-Lewis) struggles with continuing carnage on the battlefield and as he fights with many inside his own cabinet on the decision to emancipate the slaves. (2:29. PG-13 for an intense scene of war violence, some images of carnage and brief strong language.) ****
"Perks of Being a Wallflower": An introvert freshman is taken under the wings of two seniors who welcome him to the real world. (1:43. PG-13 on appeal for mature thematic material, drug and alcohol use, sexual content including references and a fight -- all involving teens.) ***
"Playing for Keeps": A former sports star (Gerard Butler) starts coaching his son's soccer team in an attempt to get his life together. (1:46. PG-13 for some sexual situations, language and a brief intense image.) *1/2
"Red Dawn": A group of teenagers look to save their town from an invasion of North Korean soldiers. (1:33. PG-13 for sequences of intense war violence and action, and for language.) **
"Rise of the Guardians": When the evil spirit Pitch (voiced by Jude Law) launches an assault on Earth, the Immortal Guardians team up to protect the innocence of children all around the world. (1:37. PG for thematic elements and some mildly scary action.) *1/2
"Skyfall": James Bond's (Daniel Craig) loyalty to M (Judi Dench) is tested as her past comes back to haunt her. (2:23. PG-13 for intense violent sequences throughout, some sexuality, language and smoking.) ****
"Wreck-It Ralph": A video game villain (John C. Reilly) wants to be a hero. (1:48. PG for some rude humor and mild action/violence.) ***1/2
SOURCES: Reviews excerpted from wire services. Previews are courtesy of the Internet Movie Database.
RATINGS: The Motion Picture Association of America ratings are G for general audiences; PG parental guidance because of material possibly unsuitable for children; PG-13 parents are strongly cautioned to give guidance for attendance of children younger than 13; R restricted, younger than 17 admitted only with parent or adult guardian; NC-17 no one younger than 17 admitted.
For more: Visit GoErie.com/showcase for all of the capsules.
NOTE: Schedules are subject to change. Check Showcase movie ads and online for late changes.


text: With the annual arrival of blue bottles along our coastline, many questions and myths about these creatures seem to be drifting around as well. What exactly are blue bottles? Are you really supposed to pee on their stings? How do you keep a day at the beach from turning into a real pain? We take a closer look at these mysterious sea dwellers.


text:
Best route map between Tampa, FL and Loveland, CO. This route take about 1899 Miles.
The distance and estimated time is placed on the right depending on the status of the road.
, 14:45
, 12:45
* You can see Tampa, FL and Loveland, CO photos above. We provide this photos from Google Panoramio service.
* Tampa, FL weather as celsius: °C
* Loveland, CO weather as celsius: °C
* Weather information on route, provide by Open Weather Map.
All Rights Reserved. © 2010 - 2016 About Feedback


text:
A festive felt strand decks the halls with homespun holiday cheer. Handcrafted in a Fair Trade Certified™ facility, each garland purchased directly improves the life of the artisan who makes it.
Overall product dimensions: 72"l.
Spot clean.
Most purchases are shipped from our Distribution Center by UPS, to arrive in your home within 5-7 business days of order receipt.
Shipping Rates
The shipping rate varies depending on your order total and shipping options. View Shipping Rates and Options
Next Day Delivery
For an extra charge of $17.50 per address, we can arrange for rush delivery to most destinations.
Return Policy
We take great pride in the quality of our merchandise. If for any reason you are not happy with your purchase, you may return the item(s) within 30 days of receiving the order for a full refund of the merchandise cost. After 30 days, we will replace or refund your purchase against manufacturer's defects ONLY. Please note that we cannot accept returns on mattresses, monogrammed/personalized items, special order upholstery items and special order rugs, one-of-a-kind rugs, or on items damaged through normal wear and tear. We also cannot accept returns of final-sale items, which are identified by a price ending in .99 or .97.
For further assistance please call our customer service department at 1.888.922.4119 or send an email to email@example.com
|Felt Garland, White
|No Longer Available
|Felt Garland, Red
|No Longer Available
|Felt Garland, Red/White
|No Longer Available


text:
hi there. Is there a multitasking bar or something similar in the nook? My recent app drawer doesn't show all my recent apps. I'm looking to easily switch apps. I'm used to the way iOSworks with the multitasking bar. I thought the recent app drawer was similar.
Am I doing something wrong?
Retrieving data ...


text:
Family Practitioner, Primary Care Doctor
33 years of experience
33 years of experience
Valley Hi - North Laguna
6600 Bruceville Rd
Sacramento, CA 95823 Phone number & directions
6600 Bruceville Rd
Sacramento, CA 95823 Phone number & directions
License & Identifications
A medical license is required for a doctor to practice medicine in a particular state. Requirements vary by state but most require, at a minimum, post-graduate training in the doctor's specific specialty. An NPI number is a national identifier unique to an individual health care provider and is managed by the Center for Medicare & Medicaid Services (CMS).
Learn more about Dr. Ralph Libet:
View the full profile to get information on:
- Qualifications
- What's important to you
View full profile
Patient Reviews
Have you visited Dr. Libet? Share your experience.
Write a Review
Write a Review
Prepare before visiting Dr. Libet
Restless Leg Syndrome Patient Education Learn all about Restless Leg Syndrome symptoms and medical conditions that may cause RLS.Before Visiting Dr. Libet Learn More
Education & Awards
Dr. Libet graduated from University of California at San Francisco.
- Hebrew
Home > Find a Family Doctor > CA > Sacramento Family Physicians > Dr. Ralph Libet, MD
Similar doctors nearby
Dr. Bill Eng
Family Medicine
32 years experience
Sacramento, CA
Dr. Guadalupe Roldan
Family Medicine
9 years experience
Sacramento, CA
Dr. Ehsan Sultani
Family Medicine
30 years experience
Sacramento, CA
Dr. Steven Seto
Family Medicine
32 years experience
Sacramento, CA
Dr. Himabindu Chinnepalli
Family Medicine
14 years experience
Sacramento, CA
Dr. Archie James
Family Medicine
32 years experience
Sacramento, CA
- Additional Information
- Dr. Ralph Arnold Libet MD is a male Family Practitioner, has 33 years of experience and practices in Family Medicine.
- Where does Dr. Ralph A. Libet practice?
- Dr. Ralph Libet has 1 office location.
Dr. Ralph Libet practices Family Medicine near Sacramento, CA.
See Sacramento Family Physicians.


text:
R. Kelly makes it all about the 'Ladies'
So often in music the name of a tour has little to nothing to do with the tour itself. But leave it to R. Kelly, the most dedicated man in R&B (his "Trapped in the Closet" hip-hopera, 22 chapters and counting, will never end) to really commit when it comes to a concept.
For his latest venture on the road - dubbed the "Single Ladies Tour" - R. Kelly transformed the Milwaukee Theatre on Saturday into a wild party for his shrieking, dancing female fans and some of the dressed-to-impress fellas scattered throughout the approximately two-thirds-full theater. »Read Full Article(4)
Matchbox Twenty keeps the customer satisfied
Rob Thomas made a promise early in Matchbox Twenty's Milwaukee set Saturday, to give the audience "the best tonight you could possibly have."
But for a significant portion of the two-hour set at the Riverside Theater, Thomas, his three Matchbox bandmates and two touring musicians didn't appear to live in the moment as much as in the past, specifically back in the late '90s and early aughts when the band's barely impactful but catchy pop rock were a resounding soundtrack of the era. »Read Full Article(7)
Lottery winnings bring little joy to play's characters - or its audience
For all its obvious faults, goulash communism - featuring modest economic reforms and more liberal social policies - seemingly positioned Hungary for a more successful and humane transition from Stalinism.
Guess again. »Read Full Article
MSO, Solzhenitsyn present stirring sounds of Russia
Russian classical music sounds Russian.
Writers write about it, scholars think about it, but no one has really managed to explain why the music written over the 200-or-so year history of Russian classical music sounds so absolutely Russian. »Read Full Article
Tift Merritt blends best of country styles in Shank Hall show
The direct distance from Milwaukee to Nashville is about 480 miles. The distance from Milwaukee to Bakersfield is about 1,735 miles.
Friday night at Shank Hall, Tift Merritt brought all three cities a little closer together. »Read Full Article


text: Find this wine Find this wine Olga Raffault Chinon 2005 Pin It Tweet 3 years ago by Catherine (Corkbin) More posts Musty, earthy & smooth. 2002 Olga Raffault Chinon. Purchased from Appellation Wines. 2 years ago by Cebenhoe Olga Raffault Chinon 2007 My grandfather taught me well. His favorite! Holy crap this is it! 3 years ago by RB3


text:
Project 365: One Photo A Day For 365 Days
de Donald Jin
Acerca del libro
In our everyday world there are subtle yet compelling beauties all around us. Whether we choose to stop and look or pass by it, it's a choice we make. For 365 days, Donald Jin, a New England based photographer sets out to document the world around him as it reveals itself to his eyes, one photo at a time.
Características y detalles
- Categoría Arte y fotografía
Apaisado estándar, 25×20 cm
178 Páginas
- Fecha de publicación mar. 22, 2012
- Etiquetas Donald Jin, New England, flickr, art, Jin, camera, Boston, 365, Project, Photography, personal, journey, daily, photo, creative, monochrome
Ver más
Acerca del creador
Donald Jin
New England
When not behind his camera, Donald works as a consulting director for an IT market analyst firm in Framingham, MA. He enjoys golf and bass fishing from his kayak on a quiet lake, but mostly, he is passionate about photography and sharing his vision through stories and captured images.
Inicia sesión o crea una cuenta para publicar un comentario.
0 Comentarios
¿Quieres eliminar este comentario?
Ver más


text:
Best route map between Sioux City, IA and Wayne, NE. This route take about 46 Miles.
The distance and estimated time is placed on the right depending on the status of the road.
, 19:19
* You can see Sioux City, IA and Wayne, NE photos above. We provide this photos from Google Panoramio service.
* Sioux City, IA weather as celsius: °C
* Wayne, NE weather as celsius: °C
* Weather information on route, provide by Open Weather Map.
All Rights Reserved. © 2010 - 2016 About Feedback


text:
Premium grade screw driving bits are made of premium grade S2 tool steel and were designed for long life and heavy duty use. Includes the most commonly used bits making them ideal for everyday applications. Storage case holds bits as well as a compartment that holds accessories and bits up to 6" in length.
22-14990 - 20 Piece Drive Guide Set
This bit set includes 19 commonly used Phillips, slotted, square and Torx® screw driver bits for a wide range of driving applications. Made of high grade S2 tool steel to increase bit life and durability. Storage case provides bit and drive guide storage. U...
22-14995 - 38 Piece Quik-Lok™ Drill and Drive Set
Drill and drive set features Quik-Lok™ which locks in double ended bits, insert bits and power groove bits. Made of S2 tool steel for high torque applications. Titanium hex shank withstands high heat for high speed use and reduces friction for longer bit l...
22-15000 - 40 Piece Screw Driving Bit Set
Handy set offers a wide selection of popular driver bits for everyday use as well as unique applications. Heavy duty bits are made of S2 tool steel for hard use.
22-20970 - 148 Piece Master Bit Set
148 piece assortment of popular bit types and sizes for a wide variety of applications. Set Includes 1", 2" and 3" bits as well as clutch and spline drives and 3/8" socket adapters stored in a convenient plastic case.
80-7582 - TV Only Clean Remote Germicidal Coating
Clean Remote for TV Plus In-Room Cable Box
Compatible with most cable providers including Comcast Operates over 250 TV brands, both commercial and retail. One touch TV set-up (no codes needed) hidden attached battery cover. Easy-wipe surface. Uses two AAA batter...
108-140 - Super 33+ Electrical Tape - 3/4'' x 66'
America's #1 professional grade vinyl electrical tape, Scotch® Super 33+™ Vinyl Electrical Tape is a premium grade, 7 mil thick, all-weather vinyl-insulating tape. It is designed to perform continuously between a temperature range of 0–220°F (-18–105°C).
MCM Electronics gave me terrific service and great prices. I will cheerfully shop with them again for my electronic needs.


text:
Bird Hunting Calls
- September 30, 2014
( 20)
Don't spend your money on buying expensive electronic callers. Try the SourceRabbit Bird Hunting Calls and make your upland hunting easier.
Best of luck and happy hunting!
NOTE: Please check your local game laws for legal use of electronic hunting calls.
This app is supported via ads. This is a way to make money from this app and giving it to you for free. Thank you for your understanding.
Great App but only 1 dove call I wish you would add the mourning dove to the app in a future update.
Best app for hunters. Installes 12 emitters around the woods, worked like a charm
Not worth a s&%! What a joke
The best Simple


text:
2016 PARIS AUTO SHOWSun, 25, Sep 2016
Germany's automakers will use the Paris auto show to highlight their latest battery technologies as they seek to recapture ground from Tesla.
BMW'S NEW INSIDE VIEWMon, 26, Sep 2016
When the creative minds behind BMW's Vision Next 100 sat down to conceive an autonomous driving car of the future, their approach was something of a revolution for the century-old company. Instead of sketching the overhangs, greenhouse or wheel arches in pursuit of the perfect proportions or the sportiest silhouette, they used an entirely different starting point to convey emotion: the interior.
Opel says Ampera-e's 249-mile range will 'democratize' EVsTue, 13, Sep 2016
Opel said its Ampera-e battery powered car will eliminate range anxiety for customers because it can travel more than 400 km (249 miles) on a single charge. "Opel is democratizing the electric car with the Ampera-e," the brand's CEO, Karl‑Thomas Neumann, said.


text:
An investigation involving adding and subtracting sets of consecutive numbers. Lots to find out, lots to explore.
What is the smallest number with exactly 14 divisors?
Many numbers can be expressed as the sum of two or more consecutive integers. For example, 15=7+8 and 10=1+2+3+4. Can you say which numbers can be expressed in this way?
Let the athlete take x minutes to cycle one mile.
Therefore he takes 3x/2 minutes to run one mile and
3x minutes to walk one mile.
Therefore 3x +3x/2 +x = 3x + 10 i.e. x = 4
The cyclist takes 12 minutes to walk the first mile, 6 minutes to run the second mile and 4 minutes to cycle the third mile, a total time of 22 minutes.
This problem is taken from the UKMT Mathematical Challenges.View the archive of all weekly problems grouped by curriculum topic


text:
How to make ramen at home
Making ramen at home is difficult. The difficulty level increases when I screw up the recipe in addition to being a complete newbie to this. Mostly I find this to be more along the lines of 'playing with food' rather than actual cooking. I got the recipe from Lucky Peach issue 1, which is not being sold anymore. You can find issue 2 on Amazon now. [Full disclosure: I add my affiliate code to amazon links.] The recipe is simple enough, and I'll talk about it in a minute, but it really isn't as easy as it seems. There's actually only three ingredients, which would lead one to believe it would be easy.. but it ain't easy unless you good at this shit, which I'm not. So let's get to it.
The very first step in the recipe should be for you to bake baking soda. They say this idea came from Harold McGee's article in The New York Times. Basically you put baking soda on a cooking sheet and bake it at 250 F for one hour. This is turns baking soda from sodium bicarbonate into sodium carbonate, which is a stronger alkaline. Instead of putting the baking soda directly on the cookie sheet, I would pour the baking soda on some aluminum foil so it's easier to extract later. From the magazine article and the NYTimes article, they say the baking soda should reduce in weight by a quarter. So if you bake 12 grams of baking soda, you should end up with 9 grams (and this is how you know you did it correctly, by weighing it before AND after). Also, don't try using a conventional oven, I tried that and apparently nothing happened or I did it wrong. The baked soda (sodium carbonate) is supposed to be a little irritating to your skin, so don't spill it all over yourself or snort it, unless you're selling it to a one-percenter as fake cocaine.
Then all you have to do is dissolve the baked soda in some warm water, and add flour. This should turn your dough yellow. I used all-purpose flour, although apparently if you use bread flour, which contain higher gluten levels, it might be chewier. I added too much water to mine which made the dough come together really easily. Instead, it's supposed to be really course and only come together when you mash it together with your hands.
There's a total kneading time of ten minutes in this recipe. I did it all in the mixer, which may or may not have been the right move. Does anyone know how effective it is to use the dough hook in the mixer to knead dough? The dough is supposed to be really hard to work with, but again, I added too much water and it came out easy to knead. How much extra water did I add?
If we just used ratios, where 1 = flour, then for every part of flour, you want half as much water. As for baked soda, it should be (give or take) 3% of the weight of the flour. So this is what I used, which was wrong:
300 g flour
9 g baked soda
100 g of warm water (should have been 75 g)
100 g of cold water (should have been 75 g)
So you can see, I added 50g too much of water. It doesn't matter much what the actual recipe is as long as your ratios are correct. If you're just making this for two people, you'd do 150 g of flour, 4.5 g of baked soda, and 75 g of water total (split into warm and cold). Changing the ratio might affect how well the mixer kneads, but then again perhaps doing it by hand is better?
Having a pasta machine comes in really handy. I don't own a pasta machine. I stole it from my mom, who says she barely uses hers. It was kinda a long process to get the pasta machine from my parents house because they live in Detroit. But since we was home for Thanksgiving, I was able to bring the pasta machine here to New York. Is it awesome???? Yes. How many times a year am I going to use it? Less than four or five probably. You can roll out the dough with a roller, although I will tell you... this is actually the second time I tried the recipe. The first time I didn't have a pasta machine or a rolling pin, and I rolled out my dough with a water bottle, but it didn't work since the water bottle didn't let me put enough force on the dough to get it flat. Word to the wise, if you don't even own a rolling pin, this recipe will be VERY VERY DIFFICULT. If you don't own a rolling pin, go to Bed Bath and Beyond's website, sign up for their newsletter and get a 20% off coupon. Rolling pin be like $7 bucks yo. I actually sign up for a fake email address every time I need to buy something from BBB.
So as you can see, the pasta machine kicks the doughs ass. It gets nice and flat. Nicer pasta machines probably let you adjust size of the cut, but this one is fairly simple. You get two sizes, spaghetti and fettuccine.
I picked the spaghetti setting and it gets the noodle very thin. They clumped together quite easily. Jonathan told me (after I had already made this mistake), that one could put corn starch as soon as the noodles are cut up, and that will prevent clumping. And you want to prevent clumping so that they all cook as uniformly as possible.
Last mistake to avoid is to make sure you boil a BIG pot of water for your pasta. When I make instant noodles or dried pasta, I use a small pot because it's easier and I have time to let the water reach a boiling point again. But fresh noodles cook really fast. They get gummy in like three minutes if you cut them thinly and if you use a small pot, by the time the water boils again, the noodles already is a mushy mess.
You can cook some eggs in an ice cooler, if you're into that sorta thing, and I am. Issue 1 of Lucky Peach actually comes with a great graphic about different temperatures and different results for sous vide eggs. Most of us don't have a controlled water bath. So with the cooler, the nice thing about that is all you're doing is filling the cooler with hot water from the faucet. You leave it in there until you're ready to go. Water cooler is pretty shitty about dropping temperatures, but if you know that going in, you can combat it. I just filled my cooler with water that's about 67 C and let it drop down to 63 or 62 by the time I pull it out (at least an hour). Works fine and dandy.
Next time I will definitely make sure to follow the recipe closely with the proportion of water, and also flour or corn starch the noodles aggressively as they fall through the pasta machine cutter, and boil the noodles in a LARGE water bath. I'll keep y'all updated on my progress. This is certainly going better than my other cooking project, which is to make croissants at home. I'm on my fourth try of those bad boys, and I haven't even made a single edible one. I just bake those and chuck 'em now. At least the noodles are semi-edible, if a little mushy. Cooking is hard yo.
(I invite you to follow me on Twitter so you can get more updates.)
I believe that there are two books that should be in EVERY kitchen: (1) The "Joy of Cooking" by Rombauer, and (2) "On Food And Cooking: The Science And Lore Of The Kitchen" by Harold McGee. The first book tells you how to cook it and the second tells why it works.
Harvey Fishman
December 9, 2011 1:02 am
Woh! This is hardcore yo! You went through all the steps to make ramen??? Kudo to you! :)
December 9, 2011 1:18 am
I tried to read On Food and Cooking once... that thing is like an encyclopedia. Crazy heavy. I never got through more than a few pages. You're right though, it's super informative. Harold McGee is like food science god.
haha it's pretty easy to do really. Only 3 ingredients! It's fun too, just have a backup in case the noodles overcook and isn't good.
December 9, 2011 7:14 pm
Props to you for making these noodles by hand! They look yummy.
I'm more interested in the broth than the noodles though. Maybe one day I will make both!
December 9, 2011 9:35 pm
but u used the baked baking soda anyway or did u buy the sodium carbonate? did the noodles turn yellow? its hard to tell from the pics. just wondered. recipe is also in momofuku and thought id try it because it does look easy. lol
December 15, 2011 11:54 pm
the soup part is super easy to do since you can just use whatever ingredients you have... i use leftover roast chicken bones, but you can buy chicken backs too. hell anything will taste good!
yes i used the baked baking soda and it turns the dough slightly yellow. apparently due to the way all-purpose and bread flour are, they won't get super yellow. just give it a try, it's easy!
December 16, 2011 1:59 am
Excellent recipe which I have been using for years. However, I do sometimes use semolina, gluten and kansui for a REALLY tough, chewy noodle. The kansui is basically sodium carbonate, just put dry baking soda in a not too hot oven for an hour or so and voilà, it converts to kansui.
September 28, 2014 4:28 pm


text:
Acebil Tripod with RMC-P3PL Zoom Controller - I-605RMItem#: A186-1038 | Model#: I-605RM
Currently Out Of Stock!
Acebil i-605RM Tripod Product Details
Acebil Tripod with RMC-P3PL Zoom Controller (I-605RM)
The Acebil Tripod brings consistent stability on your stills, moving subject, or video captures. Improve your shooting experience drastically as this amazing tripod is built with the finest materials for a compelling performance you can rely on wherever you are. It stabilizes your compositions and helps you to zoom the camera les easily with the included Zoom Controller. Buy this Acebil Tripod now.
Product TagsAcebil
Manufactured by: Acebil
Warranty provided by: Acebil
UPC No: 4717760611914
Mfg Part No: I-605RM
Box Size:
( Length:11, Width:32, Depth:7)
Shipping Weight: 0.0000 pound(s)
Click here for full warranty and support information
- Acebil logos are registered trademarks of Acebil. All others trademarks and copyrights mentioned herein are the property of their respective owners.


text:
Kardashians and Jenners on the MTV Video Music Awards Red Carpet: See Their Looks
Kris, Kylie, Kourtney, and Kim all hit the color-block carpet tonight at the VMAs.
Kris, Kylie, Kourtney, and Kim all hit the color-block carpet tonight at the VMAs.
Kim Kardashian subscribes to the idea that the best way to silence criticism is to post a naked selfie, and so she did.
Kim Kardashian has been the subject of countless rumors over the length of her time in the spotlight, but this one has to be the weirdest.
Kim Kardashian is an inspiration to naturally beautiful women everywhere.
Kim sprawls out in the French countryside in a Kanye-styled photography project made with Juergen Teller.
Caitlyn Jenner gathered a sizable chunk of the Kardashian-Jenner-West clan for some Father's Day dune buggy adventures.
North West is about to become a big sis.
We can finally(?) watch footage of the Kardashian sisters' scary Montana car accident in a Kardashians mid-season finale clip.
Kim Kardashian was in Brazil yesterday (May 10), far away from her daughter North, but her husband Kanye West wasn't about to let Mother's Day pass without a grand gesture or two.
Because all of the inspiration at the TIME 100 gala would be nothing without a lil prank from Amy Schumer, the comedian pulled a fast one on Kanye West and Kim Kardashian on the red carpet.
Kim Kardashian and Kanye West appear in the background of an heiress' photo.
Scary news for the Kardashian family. Kim Kardashian, Khloe Kardashian, Kylie Jenner and Kim's daughter North West were apparently involved in a car accident.


text:
Recent projects from Craftsy Quilting classes:
Offer some kudos...
Join the conversation...
Ask a question...
Add your comment...
|Here are some details about my project:
|Home Decor
|Traditional, Classic
What was your source for this quilting project?
Online Photo or Website
Name of website or photo Storm at Sea Wallhanging Blue by Connecting Threads
What materials did you use? This was made with batik fabric. I used regular foundation paper for this as opposed to using the freezer paper method. This made matching the seams very easy.
What are you most proud of? Best of all the person I made it for really loved it and has it displayed in his home.
What advice would you give someone starting this project? Just a suggestion. Use foundation or regular paper as opposed to freezer paper for this quilt. This makes matching the seams very easy. Also, I made all of one type of block at once rathers than switching from block one to block two to block three and then back to block one. This was my first paper pieces quilt and I was so thrilled when I completed it.
Beautiful, love the colors together.
This is just stunning!
This is just extraordinary! Thank you for sharing!
I'm just finishing the same quilt as a wedding gift for my son. I changed out some of the pieces with a dark pink to create a heart in one corner.
trs beau, Est-ce que le patron est disponible


text:
DTI Soccer Supply - Tacoma, WA - Phone: (253) 272-9764
Nortac Soccer Club - Tacoma, WA - Phone: (253) 539-5835
Wembley Soccer Shop - Tacoma, WA - Phone: (253) 922-9004
Soccer, or more popularly known as football, is a sport played between two teams of eleven players each with a spherical ball in Tacoma. It is the most popular sport of the 21st century with over 250 million players from over 200 different countries playing this game. It is an outdoor game played in a rectangular field. Each team can score a point by driving the ball into the opponent's goal post, and the team scoring the highest number of goals wins. The goalkeepers are the ones who protect the goal and try to stop the opponent team from scoring a goal while the remaining players try to score a goal.
Like every other sport, there are a few rules of the game, which were originally set up in England but have undergone significant changes over the years. One such rule or law is that players other than the goalkeeper will not handle the ball with their hands or arms, and if he does so, he would be penalized by the match referee. A referee is the person who officiates the game and his words are final and binding. A standard football match consists of two periods of 45 minutes each, with a gap of about 15 minutes in between the two halves.
Governor Cuomo Announces 900 Solar Projects Underway Through 26 Community Solarize Campaigns Across The State
"Solarize" campaigns are encouraging homes and businesses throughout the state to install solar – State will support another 31 "Solarize" campaigns set to begin this spring (Long Island, NY) Governor Andrew M. Cuomo today announced that 900 solar projects are underway through 26 community "Solarize" campaigns across New York State. A component of the NY-Sun program and the Governor's..


text:
Upcoming Events
Upcoming Events
Events List Navigation
October 2016+ Export Listed Events
$95 - $900
2016 EVENT CANCELLED DUE TO CABRILLO CULINARY DEPARTMENT SCHEDULING. Wine harvest dinner celebration under the stars at the Sesnon House at Cabrillo College. Enjoy an array of award winning wines produced by our local vintners and culinary delights prepared by the students of the Culinary Arts Department of Cabrillo College. Ticket includes wine reception and a four course dinner. All ticket proceeds go to the Culinary Arts and Wine Program at Cabrillo College. Individual tickets are available or tables of 10. Individual…Find out more »


text:
Even Europeans Turned Off by Mel Gibson Now
"I was surprised at how much of an emotional impact this has had on the Europeans."By Lane Brown
"I was surprised at how much of an emotional impact this has had on the Europeans."By Lane Brown
Nope, going straight to DVD won't work ...By Claude Brodesser-Akner
Gibson's racist rant is out, and now his movie may never be.By Mike Vilensky
There goes Mel's comeback.By Lane Brown
Plus: Kyra Sedgwick and Vincent D'Onofrio are married.By Adam K. Raymond
Who has he offended now?By Amos Barshad
Last week's No. 1 source of hilarious photos of Mel Gibson and a stuffed beaver comes to NYC.By Lindsay Robertson
Wow!By Lane Brown
Plus: James Cameron! Antony Yelchin! Barry Manilow!By Amos Barshad
Plus: Lohan! Deschanel! Heder!By Amos Barshad
Plus: Break-dance fighting!By Amos Barshad
Plus, Nicole Richie and Rachel Zoe have made up. The new Obama era is really beginning! In the gossip roundup.By Tim Murphy
Our verdict? This is one of the more elegantly messed-up stories we've read in a long, long time.By Dan Kois
Plus: Nick Nolte takes a road trip!By Adam Raymond


text:
Okemo ski community obtains Act 250 approvalSeptember 16,2013Planned Okemo
village gets permit
LUDLOW — The District 2 Environmental Commission issued an Act 250 permit Friday to Timber Creek and five other partners to build a 208-unit village at Okemo Mountain Resort in Ludlow.
The permit will allow the developers to build 22 single-family homes, 32 duplex buildings, nine townhouse condominiums, a base lodge for homeowners, two ski lifts, seven ski trails, access roads, parking lots and a community water system. The proposed development will be situated on 268 acres, which includes the Carnes Parcel and the Miller Tract in Ludlow, and the proposed residential recreational community will be a private access development. The owners and guests will have access to Okemo ski trials and amenities and there will be no public access, according to the applicants.
The partners submitted the Act 250 permit application in October 2012.MORE IN This Just InBENNINGTON A Bondville woman is facing a felony charge after police said they learned she was... Full StoryBENNINGTON A local man is facing up to 50 years in jail after being arraigned earlier this... Full StoryVermont leaders face many policy challenges, chief among them demographics change, according to... Full Story
- Most Popular
- Most Emailed


text:
Product Delivery Availability For:
Tampa, FL Change Location >To view product availability in your area, enter delivery location below.
Subtotal: $0.00
Your Shopping Cart is empty.
Please note that changing delivery zip code may result in removing your cart items. Confirm your delivery zip code and select your items again.
If you saved items on a previous visit, sign in to access your saved cart.
Continue Shopping
Wish List
Your Wish List is empty.
If you saved items on a previous visit, sign in to access your wish list.
Continue Shopping
- Sign in
Offering classic style with useful updates for modern life, the Mission twin bookcase bed is a timeless addition to any child's bedroom. Crafted of wood solids and oak veneers with deep black finish, slat detailing gives this bed a quality feel. The functional bookcase headboard features a shelf, open cubby and two closed door cabinets with antique brass hardware, providing plenty of storage for books, toys and more.
3 Pc Twin Bookcase Bed
|78"L x 43"W x 54"H


text:
Geneous - Another word for genius,
from the Greek
from the Greek
That man is a geneous.
by Alise Hoffarth August 05, 2007
Trending Now
Can you define these popular missing words?
Top Definition
Any Yankee smart enough to move to Texas.
He must be a gene-ous-he moved here from the north.
by Rebecca Meloni August 15, 2007


text:
32 years of experience
Accepting new patients
Willingboro, NJ 08046 Phone number & directions
A medical license is required for a doctor to practice medicine in a particular state. Requirements vary by state but most require, at a minimum, post-graduate training in the doctor's specific specialty. An NPI number is a national identifier unique to an individual health care provider and is managed by the Center for Medicare & Medicaid Services (CMS).
Learn more about Dr. Bruce Kimmel:
View the full profile to get information on:
- Qualifications
- What's important to you
View full profile
Patient Reviews
Write a Review
Prepare before visiting Dr. Kimmel
Coronary Heart Disease Patient Education Learn about coronary heart disease or CHD, and heart attack symptoms and prevention with our patient education guide.Before Visiting Dr. Kimmel Learn More
Specialties & Research
Dr. Bruce Kimmel, MD is board certified in Internal Medicine, Cardiovascular Disease, and Critical Care Medicine.
- He has special expertise in 20 areas:
- Acute Coronary Syndrome (ACS)
- Angina (Angina Pectoris)
- Atrial Fibrillation
- Carotid Artery Diseases (CAD)
- Critical Care
- Fainting (Syncope)
- Heart Block
- Heart Diseases
- Heart Failure
- High Blood Pressure (Hypertension)
- High Cholesterol (Hypercholesterolemia)
- Hyperlipidemias
- Lipid Metabolism Disorders
- Metabolic Syndrome X
- Microvascular Angina
- Myocardial Diseases
- Myocardial Infarction
- Peripheral Vascular Diseases (Peripheral Artery Disease)
- Rapid Heart Beat (Tachycardia)
- Unstable Angina
Education & Awards
Dr. Kimmel graduated from Yeshiva University, Bronx.
Dr. Kimmel has 9 hospital affiliations:
- Virtua Memorial Hospital Of Burlington County
- The Memorial Hospital Of Salem County
Similar doctors nearby
Dr. Amanda Sevrin
Dr. Vijaykumar Rajput
Dr. Norman Kohn
Dr. Sangita-Ann Christian
Dr. Nancy Beggs
Dr. Pamela Zee
- Additional Information
- Dr. Bruce Marc Kimmel MD is a male Internist, has 32 years of experience and practices in Internal Medicine, Cardiovascular Disease, and Critical Care Medicine.
- Where does Dr. Bruce M. Kimmel practice?
- Dr. Bruce Kimmel has 3 office locations.
Dr. Bruce Kimmel practices Internal Medicine, Cardiovascular Disease, and Critical Care Medicine near Willingboro, NJ.
Additional practice locations include: Cherry Hill, NJ.
See Willingboro Internists, Willingboro Cardiologists, and Willingboro Critical Care Practitioners.


text:
Fiat Chrysler Recalls 1.4 Million Vehicles for Airbag Problem
2016 Mercedes-Benz GLE450 AMG 4Matic Recalled for Rear Head Restraint Defect
2016 Hyundai Tucson Recalled to Update Transmission-Control Module Software
2016 Mercedes-Benz GLC300, C300 Recalled for Electronic Stability Control Problem
2014-'16 Jeep Cherokee Recalled for Seat Fastener Problem
2016 Mazda CX-3 Among Vehicles Included in Rear-Hatch Recall
Ford Adds 1.5 Million Vehicles to Door Latch Recall
2009-'10 Mazda 6 Recalled for Airbag Problem
2017 Chrysler 300 Earns Four-Star Safety Rating From Federal Government
2017 Cadillac V-Series Vehicles Come With Driver Training Program
Upgraded Uconnect Infotainment System Bows in 2017 Chrysler, Dodge and Jeep Vehicles
2016 Chevrolet Volt: Decent Rear Seat Comfort For Adults
2017 Chrysler Pacifica: Getting the Right Keys, Week 3
2016 Toyota Mirai: Hydrogen Highway vs. Tesla Supercharger Network
2016 Honda Civic: An Exceptional Interior
What's Hot on Edmunds.com brings you the latest car news, road tests, car reviews, photos and videos from our expert team of automotive editors.
Our car news section provides you with daily updates on the latest automotive news and industry stories, including vehicle pricing debuts, recalls and auto shows. Browse our car picture and video galleries for high-resolution photos of your favorite vehicles, track tests, video reviews, dyno tests, and more! You can find detailed car reviews on every make and model in production from our expert vehicle testers. In our Tips and Advice articles, you'll get helpful guidance on a variety of topics such as car buying & selling, auto financing, driving tips, maintenance and car safety. Bookmark this page and check back daily for updates!


text:
I'm really good during the week, no cheats. Then I hit Saturday and I'm dying for ice cream. Can I still lose fat? Trying to lose ~25 lbs.
I'm really good during the week, no cheats. Then I hit Saturday and I'm dying for ice cream. Can I still lose fat? Trying to lose ~25 lbs.
Sure. Just get super-expensive, high quality ice cream with only the best ingredients. There are worse indulgences certainly.
You could try the one ingredient banana ice cream. I often have it when I have a craving for ice cream. I usually add a bit of cinnamon to it as well.
How To Make Creamy Ice Cream with Just One Ingredient! | The Kitchn
Thanks. We get organic ice cream up here in Napa Valley, or I'll get Haagen Daaz chocolate chip. Will try the banana ice cream, though!
Thoughts run the gamut on this subject.
Dairy intolerant? No cheats that involve dairy will end well unless they are very rare, less than once a month.
Extra paranoid and think that hormones in the milk make your body into a fat-building machine? More fear for you.
Fine with digesting dairy? It's still a sugar bomb - which is bad if you're on a candida protocol, are trying to cure diabetes, or avoiding any insulin spikes for whatever reason.
On the other hand, if you're tolerant and otherwise healthy, there are many reports of occasional carb loads (sugar vs. starches debate) actually helping to restore insulin sensitivity and keep the weight loss going afterward.
That's just scratching the surface. We've still got the A2 protein to discuss, as well as the cattle's feed. And meal timing. Are you eating the ice cream right after a workout? That's often a good time to indulge in carby things because lots of it will go toward replenishing your glycogen stores instead of fat storage.
Shall I keep parroting? Anybody else want to take a swing?
Steak, eggs, potatoes - fruits, nuts, berries and forage. Coconut milk and potent herbs and spices. Tea instead of coffee now and teeny amounts of kelp daily. Let's see how this does! Not really had dairy much, and gut seems better for it.
Ice cream (good stuff) is a lot better for you than other things you could be eating. You can always try the banana-based recipes.
I like (love!)
1/4 cup coconut milk, chilled
1 frozen banana
some chocolate flavor of some type. little vanillla etc if you are fancy.
Blend in a food processor till its a soft-serve consistency and then love it.
If you are new to the PB - please ignore ALL of this stuff, until you've read the book, or at least http://www.marksdailyapple.com/primal-blueprint-101/ and this (personal fave): http://www.archevore.com/get-started/
You will probably loose weight up to a point then stall.
Eating primal is not a diet, it is a way of life.
Don't forget to play!
Small chunks of frozen banana with a tsp of heavy cream and a healthy drizzle of really, really good quality chocolate topping is amazing.
Using low lectin/nightshade free primal to control autoimmune arthritis. (And lost 50 lbs along the way )
Frozen berries + coconut cream + food processor = instant and intense soft-serve. IMO superior to any bought ice cream*. Can take a bit to get it "working" in the food processor, but very worthwhile.
Optionally add a little cream too, and / or as has been suggested already a (gasp!) frozen banana.
*except Kahu Road vanilla. Individual results may vary.


text:
From Wikipedia, the free encyclopedia
|This article needs additional citations for verification. (June 2016) (Learn how and when to remove this template message)
Chrestomathy (/krɛsˈtɒməθi/ kres-TOM-ə-thee; from the Ancient Greek χρηστομάθεια "desire of learning" = χρηστός "useful" + μανθάνω "learn") is a collection of choice literary passages, used especially as an aid in learning a subject.
In philology or in the study of literature, it is a type of reader which presents a sequence of example texts, selected to demonstrate the development of language or literary style. It is different from an anthology because of its didactic purpose.
- Bernhard Dorn, A Chrestomathy of the Pushtu or Afghan language, St. Petersburg: 1847
- Mencken, H. L., A Mencken Chrestomathy, New York: Alfred P. Knopf, 1949
- Zamenhof, L. L., Fundamenta Krestomatio de la Lingvo Esperanto, Paris: Hachette, 1903
- Edward Ullendorff, A Tigrinya Chrestomathy, Stuttgart: Steiner Werlag Wiesbaden GmbH, 1985.
- Bilingual Greek-Latin Grammar, by Georgios Dimitriou, 1785, that contained personal observations, Epistles and Maxims, as well as biographies of notable men.[1]
See also[edit]
- ^ Merry, Bruce (2004). Encyclopedia of modern Greek literature (1. publ. ed.). Westport, Conn. [u.a.]: Greenwood Press. p. 70. ISBN 978-0-313-30813-0.
|This literature-related article is a stub. You can help Wikipedia by expanding it.


text:
The Bozeman Ukulele Cabaret and Community Art Bozeman will join Sacks Thrift to host Art Walk fun in the parking lot of our Bozeman store Friday, July 8. Community Art Bozeman will host a "musical easels" game that invites artists of all stripes to take turns working on paintings. Strummers from the Bozeman Ukulele Cabaret will provide the music. The public is invited to bring a ukulele and be part of this Art Walk Ukulele Flash Mob. Songbooks with chord charts are provided and loaner ukuleles will be on hand. Featured ukulele performers, Jeannette Skankin, "arguably the only ukulele reggae band in Bozeman that dresses like Montana's historic congresswoman," are also slated to make an appearance. All are welcome to stop by, sing along, watch the musical art follies, or pick up a brush and take part. For more info, visit bozemanukes.wordpress.com, find Bozeman Ukulele Cabaret or Community Art Bozeman on Facebook, or email email@example.com.
Sacks Thrift is a program of the Help Center, Inc., the 24-hour Crisis Helpline, 406-586-3333, Sexual Assault Counseling Center, and more, serving southwest Montana.
Two Stores for Your Thrifting Pleasure!
31 E. Main (at Kennedy)
138 W. Mendenhall
(at N. Grand)
Voted Bozeman's Best
Thrift Store!
Sacks of Bozeman and Belgrade are non-profit thrift stores. All proceeds go towards supporting the Help Center programs.