Package org.apache.archiva.redback.rbac
Interface RBACManager
-
- All Known Implementing Classes:
AbstractRBACManager
,CachedRbacManager
,JpaRbacManager
,LdapRbacManager
,MemoryRbacManager
public interface RBACManager
Manages the roles, permissions and operations of the RBAC system.- Author:
- Jesse McConnell, Joakim Erdfelt, Martin Stockhammer
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
addChildRole(Role role, Role childRole)
Adds a child to a role.void
addListener(RBACManagerListener listener)
Operation
createOperation(String name)
Permission
createPermission(String name)
Creates an implementation specificPermission
, or return an existingPermission
, depending on the providedname
parameter.Permission
createPermission(String name, String operationName, String resourceIdentifier)
Resource
createResource(String identifier)
Role
createRole(String name)
Role
createRole(String id, String name)
Creates a new role with the given id and role name.UserAssignment
createUserAssignment(String principal)
Creates an implementation specificUserAssignment
, or return an existingUserAssignment
, depending on the providedidentifier
parameter.void
eraseDatabase()
List<? extends Role>
getAllAssignableRoles()
Returns a list of all assignable rolesList<? extends Operation>
getAllOperations()
List<? extends Permission>
getAllPermissions()
List<? extends Resource>
getAllResources()
List<? extends Role>
getAllRoles()
Returns all roles defined in the datastore.List<? extends UserAssignment>
getAllUserAssignments()
Returns all user assignments definedMap<String,List<? extends Permission>>
getAssignedPermissionMap(String principal)
returns a map of assigned permissions keyed off of operation with a list value of PermissionsSet<? extends Permission>
getAssignedPermissions(String principal)
Returns a set of all permissions that are in all active roles for a given principal.Collection<? extends Role>
getAssignedRoles(String principal)
Returns the active roles for a given principal NOTE: roles that are returned might have parent roles themselves, if you just want all permissions then usegetAssignedPermissions(String principal)
Collection<? extends Role>
getAssignedRoles(UserAssignment userAssignment)
Get the Collection ofRole
objects for this UserAssignment.Map<String,? extends Role>
getChildRoleIds(Role role)
Returns all the child roles of a given role as (role id, role) pairs.Map<String,? extends Role>
getChildRoleNames(Role role)
Returns all the child roles of a given role as (name, role) pairs.String
getDescriptionKey()
Collection<? extends Role>
getEffectivelyAssignedRoles(String principal)
Get a list of the effectively assigned roles to the specified user, this includes child rolesCollection<? extends Role>
getEffectivelyUnassignedRoles(String principal)
Get a list of all assignable roles that are currently not effectively assigned to the specific user, meaning, not a child of any already granted roleSet<? extends Role>
getEffectiveRoles(Role role)
Returns all effective roles.Resource
getGlobalResource()
Returns the global resource objectOperation
getOperation(String operationName)
Map<String,? extends Role>
getParentRoleIds(Role role)
Returns all the parent roles of a given role as map of (id, role) elements.Map<String,? extends Role>
getParentRoleNames(Role role)
Returns all the parent roles of a given role as map of (name, role) elements.Permission
getPermission(String permissionName)
Resource
getResource(String resourceIdentifier)
Role
getRole(String roleName)
Returns the role identified by the given nameRole
getRoleById(String id)
Returns the role identified by the given IDMap<String,? extends Role>
getRoles(Collection<String> roleNames)
Returns the role instances for the given role names.Collection<? extends Role>
getUnassignedRoles(String principal)
Get a list of all assignable roles that are currently not assigned to the specific user.UserAssignment
getUserAssignment(String principal)
List<? extends UserAssignment>
getUserAssignmentsForRoles(Collection<String> roleIds)
Returns the assignments for the given rolesvoid
initialize()
consumer of user manager can use it to reload various configuration with the configurable implementation is possible to change dynamically the real implementation used.boolean
isFinalImplementation()
boolean
isReadOnly()
Is the RBACManager read only? if so then create and modify actions are to be disabledboolean
operationExists(String name)
boolean
operationExists(Operation operation)
boolean
permissionExists(String name)
Tests for the existence of a permission.boolean
permissionExists(Permission permission)
void
removeListener(RBACManagerListener listener)
void
removeOperation(String operationName)
void
removeOperation(Operation operation)
void
removePermission(String permissionName)
void
removePermission(Permission permission)
void
removeResource(String resourceIdentifier)
void
removeResource(Resource resource)
void
removeRole(String roleName)
Removes the role with the given name from the datastore.void
removeRole(Role role)
Removes the given role from the datastore.void
removeRoleById(String id)
Removes the role with the given id from the datastore.void
removeUserAssignment(String principal)
Method removeAssignmentvoid
removeUserAssignment(UserAssignment userAssignment)
Method removeAssignmentboolean
resourceExists(String identifier)
boolean
resourceExists(Resource resource)
boolean
roleExists(String name)
Tests for the existence of a Role.boolean
roleExists(Role role)
Returns true, if the given role exists.boolean
roleExistsById(String id)
Returnstrue
, if a role with the given id exists.Operation
saveOperation(Operation operation)
Save the new or existing operation to the store.Permission
savePermission(Permission permission)
Resource
saveResource(Resource resource)
Role
saveRole(Role role)
Persists the given role to the backend datastore.void
saveRoles(Collection<Role> roles)
Persists all of the given roles to the backend datastore.UserAssignment
saveUserAssignment(UserAssignment userAssignment)
Method saveUserAssignmentboolean
userAssignmentExists(String principal)
boolean
userAssignmentExists(UserAssignment assignment)
-
-
-
Method Detail
-
addListener
void addListener(RBACManagerListener listener)
-
removeListener
void removeListener(RBACManagerListener listener)
-
createRole
Role createRole(String name)
Creates an implementation specificRole
, or return an existingRole
, depending on the providedname
parameter. Note: Be sure to usesaveRole(Role)
in order to persist any changes to the Role.- Parameters:
name
- the name.- Returns:
- the new
Role
object.
-
createRole
Role createRole(String id, String name)
Creates a new role with the given id and role name.- Parameters:
id
- the role identifier, which must be uniquename
- the role name, which must be unique- Returns:
- the new role instance
-
roleExists
boolean roleExists(String name) throws RbacManagerException
Tests for the existence of a Role.- Returns:
- true if role exists in store.
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
roleExistsById
boolean roleExistsById(String id) throws RbacManagerException
Returnstrue
, if a role with the given id exists.- Parameters:
id
- the role id- Returns:
true
, if the role with the given id exists, otherwisefalse
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
roleExists
boolean roleExists(Role role) throws RbacManagerException
Returns true, if the given role exists.- Parameters:
role
- the role to check- Returns:
true
, if the role exists, otherwisefalse
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
saveRole
Role saveRole(Role role) throws RbacObjectInvalidException, RbacManagerException
Persists the given role to the backend datastore.- Parameters:
role
- the role to save- Returns:
- the persisted role, if the method was successful
- Throws:
RbacObjectInvalidException
- if the given role object was not validRbacManagerException
- if the access to the backend datastore failed
-
saveRoles
void saveRoles(Collection<Role> roles) throws RbacObjectInvalidException, RbacManagerException
Persists all of the given roles to the backend datastore. Implementations should try to save all role instances and throw exceptions afterwards.- Parameters:
roles
- the list of roles to save- Throws:
RbacObjectInvalidException
- if one of the given role objects was not validRbacManagerException
- if the access to the backend datastore failed
-
getRole
Role getRole(String roleName) throws RbacObjectNotFoundException, RbacManagerException
Returns the role identified by the given name- Parameters:
roleName
- the role name- Returns:
- the role instance, if a role by this name was found
- Throws:
RbacObjectNotFoundException
- if not role was found with the given nameRbacManagerException
- if the access to the underlying datastore failed
-
getRoleById
Role getRoleById(String id) throws RbacObjectNotFoundException, RbacManagerException
Returns the role identified by the given ID- Parameters:
id
- the role id- Returns:
- the role object, if the role with the given id exists
- Throws:
RbacObjectNotFoundException
- if no role was found with the given idRbacManagerException
- if the access to the underlying datastore failed
-
getRoles
Map<String,? extends Role> getRoles(Collection<String> roleNames) throws RbacObjectNotFoundException, RbacManagerException
Returns the role instances for the given role names.- Parameters:
roleNames
- the list of role names.- Returns:
- a map of (name,role) pairs
- Throws:
RbacObjectNotFoundException
- if one of the given roles was not foundRbacManagerException
- if the access to the backend datastore failed
-
addChildRole
void addChildRole(Role role, Role childRole) throws RbacObjectInvalidException, RbacManagerException
Adds a child to a role.- Parameters:
role
- the parent rolechildRole
- the child role, that is added to the parent role- Throws:
RbacObjectInvalidException
- if one of the role objects was not validRbacManagerException
- if the access to the backend datastore failed
-
getChildRoleNames
Map<String,? extends Role> getChildRoleNames(Role role) throws RbacManagerException
Returns all the child roles of a given role as (name, role) pairs.- Parameters:
role
- the parent role- Returns:
- the list of child roles
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
getChildRoleIds
Map<String,? extends Role> getChildRoleIds(Role role) throws RbacManagerException
Returns all the child roles of a given role as (role id, role) pairs.- Parameters:
role
- the parent role- Returns:
- the map of child roles as (role id, role) pairs
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
getParentRoleNames
Map<String,? extends Role> getParentRoleNames(Role role) throws RbacManagerException
Returns all the parent roles of a given role as map of (name, role) elements.- Parameters:
role
- the role to check for parent roles- Returns:
- the list of parent roles that have
role
als child - Throws:
RbacManagerException
- if the access to the backend datastore failed
-
getParentRoleIds
Map<String,? extends Role> getParentRoleIds(Role role) throws RbacManagerException
Returns all the parent roles of a given role as map of (id, role) elements.- Parameters:
role
- the role to check for parents roles- Returns:
- a map of (role id, role) pairs that have
role
as child - Throws:
RbacManagerException
- if the access to the backend datastore failed
-
getAllRoles
List<? extends Role> getAllRoles() throws RbacManagerException
Returns all roles defined in the datastore.- Returns:
- the list of roles defined in the datastore
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
getEffectiveRoles
Set<? extends Role> getEffectiveRoles(Role role) throws RbacObjectNotFoundException, RbacManagerException
Returns all effective roles. Which means a list with the current role and all child roles recursively.- Parameters:
role
- the role to use as starting point- Returns:
- the set of roles that are found as children of the given role
- Throws:
RbacObjectNotFoundException
- if the given role was not foundRbacManagerException
- if the access to the backend datastore failed
-
removeRole
void removeRole(Role role) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
Removes the given role from the datastore.- Parameters:
role
- the role to remove- Throws:
RbacManagerException
- if the access to the backend datastore failedRbacObjectNotFoundException
- if the given role was not foundRbacObjectInvalidException
- if the given role has invalid data
-
removeRole
void removeRole(String roleName) throws RbacObjectNotFoundException, RbacManagerException
Removes the role with the given name from the datastore.- Parameters:
roleName
- the role name- Throws:
RbacObjectNotFoundException
- if the role with the given name was not foundRbacManagerException
- if the access to the backend datastore failed
-
removeRoleById
void removeRoleById(String id) throws RbacObjectNotFoundException, RbacManagerException
Removes the role with the given id from the datastore.- Parameters:
id
- the role id- Throws:
RbacObjectNotFoundException
- if no role with the given id was foundRbacManagerException
- if the access to the backend datastore failed
-
createPermission
Permission createPermission(String name) throws RbacManagerException
Creates an implementation specificPermission
, or return an existingPermission
, depending on the providedname
parameter. Note: Be sure to usesavePermission(Permission)
in order to persist any changes to the Role.- Parameters:
name
- the name.- Returns:
- the new Permission.
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
createPermission
Permission createPermission(String name, String operationName, String resourceIdentifier) throws RbacManagerException
Creates an implementation specificPermission
with specifiedOperation
, andResource
identifiers. Note: Be sure to usesavePermission(Permission)
in order to persist any changes to the Role.- Parameters:
name
- the name.operationName
- theOperation.setName(String)
valueresourceIdentifier
- theResource.setIdentifier(String)
value- Returns:
- the new Permission.
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
permissionExists
boolean permissionExists(String name)
Tests for the existence of a permission.- Parameters:
name
- the name to test for.- Returns:
- true if permission exists.
-
permissionExists
boolean permissionExists(Permission permission)
-
savePermission
Permission savePermission(Permission permission) throws RbacObjectInvalidException, RbacManagerException
-
getPermission
Permission getPermission(String permissionName) throws RbacObjectNotFoundException, RbacManagerException
-
getAllPermissions
List<? extends Permission> getAllPermissions() throws RbacManagerException
- Throws:
RbacManagerException
-
removePermission
void removePermission(Permission permission) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
-
removePermission
void removePermission(String permissionName) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
-
createOperation
Operation createOperation(String name) throws RbacManagerException
Creates an implementation specificOperation
, or return an existingOperation
, depending on the providedname
parameter. Note: Be sure to usesaveOperation(Operation)
in order to persist any changes to the Role.- Parameters:
name
- the name.- Returns:
- the new Operation.
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
operationExists
boolean operationExists(String name)
-
operationExists
boolean operationExists(Operation operation)
-
saveOperation
Operation saveOperation(Operation operation) throws RbacObjectInvalidException, RbacManagerException
Save the new or existing operation to the store.- Parameters:
operation
- the operation to save (new or existing)- Returns:
- the Operation that was saved.
- Throws:
RbacObjectInvalidException
- if the object is not valid and cannot be savedRbacManagerException
- if the access to the backend datastore failed
-
getOperation
Operation getOperation(String operationName) throws RbacObjectNotFoundException, RbacManagerException
-
getAllOperations
List<? extends Operation> getAllOperations() throws RbacManagerException
- Throws:
RbacManagerException
-
removeOperation
void removeOperation(Operation operation) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
-
removeOperation
void removeOperation(String operationName) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
-
createResource
Resource createResource(String identifier) throws RbacManagerException
Creates an implementation specificResource
, or return an existingResource
, depending on the providedidentifier
parameter. Note: Be sure to usesaveResource(Resource)
in order to persist any changes to the Role.- Parameters:
identifier
- the identifier.- Returns:
- the new Resource.
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
resourceExists
boolean resourceExists(String identifier)
-
resourceExists
boolean resourceExists(Resource resource)
-
saveResource
Resource saveResource(Resource resource) throws RbacObjectInvalidException, RbacManagerException
-
getResource
Resource getResource(String resourceIdentifier) throws RbacObjectNotFoundException, RbacManagerException
-
getAllResources
List<? extends Resource> getAllResources() throws RbacManagerException
- Throws:
RbacManagerException
-
removeResource
void removeResource(Resource resource) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
-
removeResource
void removeResource(String resourceIdentifier) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
-
createUserAssignment
UserAssignment createUserAssignment(String principal) throws RbacManagerException
Creates an implementation specificUserAssignment
, or return an existingUserAssignment
, depending on the providedidentifier
parameter. Note: Be sure to usesaveUserAssignment(UserAssignment)
in order to persist any changes to the Role.- Parameters:
principal
- the principal reference to the user.- Returns:
- the new UserAssignment object.
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
userAssignmentExists
boolean userAssignmentExists(String principal)
-
userAssignmentExists
boolean userAssignmentExists(UserAssignment assignment)
-
saveUserAssignment
UserAssignment saveUserAssignment(UserAssignment userAssignment) throws RbacObjectInvalidException, RbacManagerException
Method saveUserAssignment- Parameters:
userAssignment
- the user assignment instance to save- Throws:
RbacObjectInvalidException
- if the instance has invalid data and cannot be savedRbacManagerException
- if the access to the backend datastore failed
-
getUserAssignment
UserAssignment getUserAssignment(String principal) throws RbacObjectNotFoundException, RbacManagerException
-
getAllUserAssignments
List<? extends UserAssignment> getAllUserAssignments() throws RbacManagerException
Returns all user assignments defined- Returns:
- list of assignments
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
getUserAssignmentsForRoles
List<? extends UserAssignment> getUserAssignmentsForRoles(Collection<String> roleIds) throws RbacManagerException
Returns the assignments for the given roles- Parameters:
roleIds
- collection of role names- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
removeUserAssignment
void removeUserAssignment(UserAssignment userAssignment) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
Method removeAssignment- Parameters:
userAssignment
- the assignment to remove- Throws:
RbacObjectNotFoundException
- if the assignment was not foundRbacObjectInvalidException
- if the provided assignment instance has invalid dataRbacManagerException
- if the access to the backend datastore failed
-
removeUserAssignment
void removeUserAssignment(String principal) throws RbacObjectNotFoundException, RbacObjectInvalidException, RbacManagerException
Method removeAssignment- Parameters:
principal
- the principal for which the assignment should be removed- Throws:
RbacObjectNotFoundException
- if the user with the given principal name was not foundRbacObjectInvalidException
- if the principal string was invalidRbacManagerException
- if the access to the backend datastore failed
-
getAssignedRoles
Collection<? extends Role> getAssignedRoles(String principal) throws RbacObjectNotFoundException, RbacManagerException
Returns the active roles for a given principal NOTE: roles that are returned might have parent roles themselves, if you just want all permissions then usegetAssignedPermissions(String principal)
- Parameters:
principal
- the user principal to search for assignments- Returns:
- Collection of
Role
objects. - Throws:
RbacObjectNotFoundException
- if the user with the given principal name was not foundRbacManagerException
- if the access to the backend datastore failed
-
getAssignedRoles
Collection<? extends Role> getAssignedRoles(UserAssignment userAssignment) throws RbacObjectNotFoundException, RbacManagerException
Get the Collection ofRole
objects for this UserAssignment.- Parameters:
userAssignment
- the user assignment instance- Returns:
- Collection of
Role
objects for the provided UserAssignment. - Throws:
RbacObjectNotFoundException
- if the assignment could not be foundRbacManagerException
- if the access to the backend datastore failed
-
getEffectivelyUnassignedRoles
Collection<? extends Role> getEffectivelyUnassignedRoles(String principal) throws RbacManagerException, RbacObjectNotFoundException
Get a list of all assignable roles that are currently not effectively assigned to the specific user, meaning, not a child of any already granted role- Parameters:
principal
- the user principal- Returns:
- the list of roles, that are currently not assigned to the user, or a empty list, if no such role was found.
- Throws:
RbacManagerException
- if the access to the backend datastore failedRbacObjectNotFoundException
- if the user with the given principal was not found
-
getEffectivelyAssignedRoles
Collection<? extends Role> getEffectivelyAssignedRoles(String principal) throws RbacObjectNotFoundException, RbacManagerException
Get a list of the effectively assigned roles to the specified user, this includes child roles- Parameters:
principal
- the user principal- Returns:
- the list of roles effectively assigned to the given user
- Throws:
RbacObjectNotFoundException
- if the user with the given principal was not foundRbacManagerException
- if the access to the backend datastore failed
-
getUnassignedRoles
Collection<? extends Role> getUnassignedRoles(String principal) throws RbacManagerException, RbacObjectNotFoundException
Get a list of all assignable roles that are currently not assigned to the specific user.- Parameters:
principal
- the user principal name- Returns:
- the list of roles not assigned to the given user
- Throws:
RbacManagerException
- if the access to the backend datastore failedRbacObjectNotFoundException
- if the user with the given principal was not found
-
getAssignedPermissions
Set<? extends Permission> getAssignedPermissions(String principal) throws RbacObjectNotFoundException, RbacManagerException
Returns a set of all permissions that are in all active roles for a given principal. This includes permissions from all assigned parent roles.- Parameters:
principal
- the user principal name- Returns:
- the list of all permissions assigned to the user
- Throws:
RbacObjectNotFoundException
- if the user with the given principal name was not foundRbacManagerException
- if the access to the backend datastore failed
-
getAssignedPermissionMap
Map<String,List<? extends Permission>> getAssignedPermissionMap(String principal) throws RbacObjectNotFoundException, RbacManagerException
returns a map of assigned permissions keyed off of operation with a list value of Permissions- Parameters:
principal
- the user principal name- Returns:
- the map of (operation,permission list) pairs
- Throws:
RbacObjectNotFoundException
- if the user with the given principal was not foundRbacManagerException
- if the access to the backend datastore failed
-
getAllAssignableRoles
List<? extends Role> getAllAssignableRoles() throws RbacManagerException
Returns a list of all assignable roles- Returns:
- list of assignable roles
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
getGlobalResource
Resource getGlobalResource() throws RbacManagerException
Returns the global resource object- Returns:
- the global resource object
- Throws:
RbacManagerException
- if the access to the backend datastore failed
-
eraseDatabase
void eraseDatabase()
-
initialize
void initialize()
consumer of user manager can use it to reload various configuration with the configurable implementation is possible to change dynamically the real implementation used.- Since:
- 2.1
-
isFinalImplementation
boolean isFinalImplementation()
- Returns:
- true if this implementation is a final one and not a wrapper (configurable, cached)
- Since:
- 2.1
-
getDescriptionKey
String getDescriptionKey()
- Returns:
- a key to be able to customize label in UI
- Since:
- 2.1
-
isReadOnly
boolean isReadOnly()
Is the RBACManager read only? if so then create and modify actions are to be disabled- Returns:
- boolean true if user manager is read only
-
-


Database {{database.name}} is almost full
The Database {{database.name}} in
{{environment}} environment is {{percent}}% in use.
It is using {{used|floatformat}} {{measure_unity}} of {{capacity}} {{measure_unity}}
{% if team.email %}
You are receiving this email because in our records you are in team {{ team.name }}.
If this is not right, contact the Dbaas system administrators.
{% else %}
Team {{ team.name }} has no email set!
{% endif %}
Regards,
Dbaas notification robot
{{domain}}


OBClientRegistration1
- application_type : String
- Enum:
- web
- mobile
- client_id : String
OAuth 2.0 client identifier string
- client_id_issued_at : Integer
Time at which the client identifier was issued expressed as seconds since 1970-01-01T00:00:00Z as measured in UTC
- client_secret : String
OAuth 2.0 client secret string
- client_secret_expires_at : Integer
Time at which the client secret will expire expressed as seconds since 1970-01-01T00:00:00Z as measured in UTC. Set to 0 if does not expire
- id_token_signed_response_alg : SupportedAlgorithms
- request_object_signing_alg : SupportedAlgorithms
- response_types : List
- Enum:
- software_statement : String
- tls_client_auth_subject_dn : String
- token_endpoint_auth_method : String
- Enum:
- private_key_jwt
- client_secret_jwt
- client_secret_basic
- client_secret_post
- tls_client_auth
- token_endpoint_auth_signing_alg : SupportedAlgorithms
- aud : String
The audience for the request. This should be the unique identifier for the ASPSP issued by the issuer of the software statement. Implemented as Base62 encoded GUID
- exp : Integer
The time at which the request expires expressed as seconds since 1970-01-01T00:00:00Z as measured in UTC
- iat : Integer
The time at which the request was issued by the TPP expressed as seconds since 1970-01-01T00:00:00Z as measured in UTC
- iss : String
Unique identifier for the TPP. Implemented as Base62 encoded GUID
- jti : String
Unique identifier for the JWT implemented as UUID v4


News
October 24, 2019
A study I co-authored with Dr. Eric Leas, Dr. Alicia Nobles, and others, which was published in JAMA Network Open, examined the meteoric rise in interest in cannabidiol (CBD) in the United States. The study was covered by news outlets including Time, USA Today and The Daily Mail. My co-author Dr. John Ayers even discussed our findings on Fox News with Laura Ingraham (note: personally not a Fox News fan). Read the study here or download it here.
December 21, 2018
I am excited to share the findings of a recent paper I co-authored, which was published in JAMA Internal Medicine. Dr. Alicia Nobles, Dr. John Ayers, and I find a statistically significant increase in Google searches for sexual harassment and assault every week for our entire study period (8 months) after Alyssa Milano’s viral #MeToo Tweet on October 15, 2017. Importantly, searches for sexual harassment/assault preventive training and reporting were also increased. Read the study here or press coverage in outlets such as the LA Times and Reuters.
December 14, 2018
I was recently informed that I had the highest overall marks and the highest scoring dissertation in my MPH program. I was invited to present my dissertation at the School of Public Health’s annual Cameron Lecture. Because I’m living in the US, I delivered the presentation remotely ( you can download it from Google Drive here), and the poster linked to my presentation won the Best Poster award.
December 3, 2018
I am honored and humbled to have been awarded a Marshall Scholarship for graduate study in the UK.
November 15, 2018
I was a panelist in a webinar hosted by the University of California San Diego’s Connected and Open Research Ethics Project on the use of Twitter data in public health studies. With co-authors Mark Dredze and Camille Nebeker, we spoke about our paper published in npj Digital Medicine finding that Tweets used in public health studies can often be used to reverse identify research subjects. The recording is available here.
November 8, 2018
I am particularly excited about a paper I co-authored with an interdisciplinary team about how the news covers e-cigarettes. Read it here.
August 28, 2018
My first-authored paper on LGBQ suicide (JAMA: Journal of the American Medical Association) was referenced in a tragic story of 9-year-old suicide in Time Magazine. We hope our research will bring the health epidemic of LGBQ adolescents to light and inspire action among community members and policy-makers to avoid similar tragedies in the future. As stated in a Tweet by Chelsea Clinton, #WeMustDoBetter.
August 8, 2018
My first-authored paper on LGBQ substance use, which was published in the American Journal of Public Health, was covered by Reuters, NBC News, Gay Star News and Business Insider.
June 7, 2018
I gave a talk for University College Cork’s Lunch and Learn Seminar.
March 23, 2018
CBS News in Charlotte, North Carolina interviewed my co-author, Dr. John Ayers, and aired a video segment regarding my first-authored paper in American Journal of Preventive Medicine regarding online marijuana sales.
December 22, 2017
Chelsea Clinton tweeted our research on LGBQ adolescent suicide risk. #WeMustDoBetter
December 19, 2017
My first-authored JAMA: Journal of the American Medical Association paper on suicide risk behaviors among LGBQ adolescents was reported on by CNN, NBC News, US News and World Report, and Reuters.


_Turn_It_Up_ (R) no stars (out of ****)
Another day, another urban drama starring rappers with acting aspirations. The latest entry, _Turn_It_Up_, offers nothing that hasn't been seen nor heard before--lots of gunplay, beatings, drug and alcohol abuse, all to a hip-hop soundtrack. But it is distinctive in a most dubious sense--this is perhaps the worst film of its kind to see a theatrical release.
Mind you, this isn't the worst rapper-starring urban drama ever made; it doesn't quite reach the depths plumbed by the direct-to-video projects produced by and featuring Ice-T. But _Turn_It_Up_ is pretty awful in its own respect. Scripter-director Robert Adetuyi put in very little thought to the plot, which plays into the common perception that the rap music business is dirty and violence-riddled. Diamond (Pras, late of the Fugees) wants to break into said industry, but the studio time for cutting his demo is also cutting deep into what little money he earns doing menial jobs for a local drug lord named Mr. B. (Jason Statham). When the already steep price for the recording sessions goes up, Diamond's hotheaded best friend and partner Gage (Ja Rule) comes up with a seemingly foolproof--and, of course, illegal--funding plan. Needless to say, the plan doesn't go off without a hitch or two.
To say that _Turn_It_Up_ doesn't go off without a hitch or two is an understatement. Beyond the tired, predictable plot--and the equally dull subplots, such as Diamond's fed-up girlfriend (Tamala Jones) and the sudden surfacing of Diamond's long-absent father (Vondie Curtis-Hall, way beneath his league here)--there's some truly abysmal dialogue (Diamond's raps are invariably described as "hot") and acting to match. Jones and Curtis-Hall emerge with their dignity intact, but that's partly a side effect of having fairly little screen time and mostly because they actually have some acting ability. That cannot be said of everyone else. The two rap stars leading the cast are no acting finds; Pras is stiff, and Ja Rule subscribes to the adage, "if you can't act, overact." As bad as they are, they are outdone by the weak work of Statham and the laughably atrocious John Ralston, who plays record label bigwig Mr. White.
But what really does in _Turn_It_Up_ is what's under the terrible execution--or, rather, what isn't there. The script doesn't offer any reason why we should really care about any of these characters and what happens to them, nor do these characters exhibit any qualities that would consistently engage our interest. For all the mayhem that fills the screen in _Turn_It_Up_--and there is a lot of it, both visual and sonic--the film is still a crushing bore.
Michael Dequina<EMAIL_ADDRESS>|<EMAIL_ADDRESS>|<EMAIL_ADDRESS>Mr. Brown's Movie Site: http://www.moviereportsite.com CinemaReview Magazine: http://www.CinemaReview.com on ICQ: #25289934 | on AOL Instant Messenger: MrBrown23
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


| Store Name | 6:00am   | 7:00am   | 8:00am   | 9:00am   | 10:00am   | 11:00am   | 12:00am   | 1:00pm   | 2:00pm   | 3:00pm   | 4:00pm   | 5:00pm   | 6:00pm   | 7:00pm   | 8:00pm   |


#include <stdlib.h>
#include "core.h"
#include <host/host.h>
#include <core/usb.h>
#include <usbspec/usb11spec.h>
#include <lib/list.h>
Functions | |
| void | usb_init () |
| u8 | usb_next_address () |
| void | usb_periodic () |
| usb_device * | usb_add_device () |
| u8 | usb_remove_device (usb_device *dev) |
| u8 | usb_register_driver (usb_driver *dev) |
| void | usb_probe_driver () |
| usb_irp * | usb_get_irp () |
| u8 | usb_remove_irp (usb_irp *irp) |
| u16 | usb_submit_irp (usb_irp *irp) |
| usb_transfer_descriptor * | usb_create_transfer_descriptor (usb_irp *irp) |
| usb_device* usb_add_device | ( | ) |
Enumerate new device and create data structures for the core. usb_add_device expected that the device answers to address zero.
| usb_transfer_descriptor* usb_create_transfer_descriptor | ( | usb_irp * | irp | ) |
Create a transfer descriptor with an parent irp.
| usb_irp* usb_get_irp | ( | ) |
Not implemented.
| void usb_init | ( | ) |
Initialize USB stack.
| u8 usb_next_address | ( | ) |
Get next free usb device address.
| void usb_periodic | ( | ) |
Call this function periodically for control and transfer management.
| void usb_probe_driver | ( | ) |
Call every probe function from every registered driver, to check if there is a valid driver for the new device.
| u8 usb_register_driver | ( | usb_driver * | dev | ) |
Register new driver at usb stack.
first check to find a suitable device (root hub drivers need this call here)
| u8 usb_remove_device | ( | usb_device * | dev | ) |
Find currently detached device and remove data structures
| u8 usb_remove_irp | ( | usb_irp * | irp | ) |
Not implemented.
| u16 usb_submit_irp | ( | usb_irp * | irp | ) |
Takes usb_irp and split it into several usb packeges (SETUP,IN,OUT) In the usbstack they are transported with the usb_transfer_descriptor data structure.
You can see at bit 7 of bmRequestType if this stage is used, default requests are always 8 byte greate, from host to device. Stage 3 is only neccessary if the request expected datas from the device. bit7 - 1 = from device to host -> yes we need data stage bit7 - 0 = from host to device -> no send zero packet
nach einem setup token kann nur ein IN token in stage 3 folgen nie aber ein OUT. Ein Zero OUT wird nur als Bestaetigung benoetigt.
bit7 = 1 Device to Host
bit7 = 1, host beendet mit PID_OUT DATA1 Zero bit7 = 0, device sendet ein PID_IN DATA1 Zero Packet als bestaetigung


This is the nonfair scenario:
When a thread B asks to hold a lock, if the lock is already taken by another thread A. Then the thread B will be suspended. After thread A finished his job, it releases the lock, then thread B is resumed. However, B needs a period of time to be able to actually run it’s task from where it was suspended. And this period of time could be relatively long compared to another thread C who is asking for that exact same lock at the same time. If C could acquire the lock, does C’s job and release the lock before B even “wakes up” (the time between B’s resumed and B’s able to actually run), then it’s a win-win situation for B and C. Because C gets the lock and has it’s job done and releases the lock, while B’s “waking up” and B gets the lock no later than it otherwise would have.
In the fair scenario:
The C will be queued after B.
To set the fairness of a Lock, one can use the parametered constructor. I assume the non-fair lock is faster and I did the following test - 8 threads contenting the same lock and each thread increments the shared counter 100k times. Non-fair lock is 51 times faster than fair lock.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ContentedResource {
private Lock lock;
private long counter = 0L;
public ContentedResource(boolean fair) {
lock = new ReentrantLock(fair);
}
public void increment() {
lock.lock();
try {
counter++;
} finally {
lock.unlock();
}
}
public long getCount() {
lock.lock();
try {
return counter;
} finally {
lock.unlock();
}
}
public static void main(String[] args) throws InterruptedException {
long durationFair = testDuration(true);
long durationNonFair = testDuration(false);
System.out.printf("Non-fair lock is [%d] times faster than fair lock.", (int)durationFair/durationNonFair);
}
private static long testDuration(boolean fair) throws InterruptedException {
ContentedResource contentedResource = new ContentedResource(fair);
ExecutorService threadPool = Executors.newFixedThreadPool(8);
long start = System.currentTimeMillis();
for (int i = 0; i < 8; i++) {
threadPool.execute(new Runnable() {
@Override
public void run() {
long i = 100_000;
while (i-- > 0) {
contentedResource.increment();
}
}
});
}
threadPool.shutdown();
threadPool.awaitTermination(1, TimeUnit.MINUTES);
long duration_millisecond = System.currentTimeMillis() - start;
System.out.printf("Fairness [%5s], count [%d], duration is [%d]ms\n", fair, contentedResource.getCount(),
duration_millisecond);
return duration_millisecond;
}
}
Output:
Fairness [ true], count [800000], duration is [7977]ms
Fairness [false], count [800000], duration is [156]ms
Non-fair lock is [51] times faster than fair lock.


| Package | Description |
|---|---|
| com.leevilehtonen.cookagram.controller | |
| com.leevilehtonen.cookagram.domain | |
| com.leevilehtonen.cookagram.repository | |
| com.leevilehtonen.cookagram.service |
| Modifier and Type | Method and Description |
|---|---|
String |
DefaultController.getSignup(Account account)
Get sigunp page
|
String |
AccountController.postAccounts(Account account,
org.springframework.validation.BindingResult bindingResult,
org.springframework.web.servlet.mvc.support.RedirectAttributes redirectAttributes)
Post request to accounts is used for creating new accounts
|
| Modifier and Type | Method and Description |
|---|---|
Account |
Relationship.getFollowed()
|
Account |
Relationship.getFollower()
|
Account |
ResourceLike.getLiker()
|
Account |
Post.getPoster()
|
| Modifier and Type | Method and Description |
|---|---|
Set<Account> |
Role.getAccounts()
|
| Modifier and Type | Method and Description |
|---|---|
void |
Relationship.setFollowed(Account followed)
|
void |
Relationship.setFollower(Account follower)
|
void |
ResourceLike.setLiker(Account liker)
|
void |
Post.setPoster(Account poster)
|
| Modifier and Type | Method and Description |
|---|---|
void |
Role.setAccounts(Set<Account> accounts)
|
| Modifier and Type | Method and Description |
|---|---|
Account |
AccountRepository.findByEmail(String email)
Finds account by email (as email is unique column we can expect only
one or zero results)
|
Account |
AccountRepository.findByUsername(String username)
Finds account by username (as username is unique column we can expect
only one or zero result)
|
| Modifier and Type | Method and Description |
|---|---|
Set<Relationship> |
RelationshipRepository.findByFollowed(Account followed)
|
Set<Relationship> |
RelationshipRepository.findByFollower(Account follower)
|
Set<ResourceLike> |
LikeRepository.findByLiker(Account liker)
Finds all likes by user
|
List<Post> |
PostRepository.findByPosterOrderByDateDesc(Account poster)
Finds posts of one user in descending date order (used for profile
view)
|
Relationship |
RelationshipRepository.findTopByFollowerAndFollowed(Account follower,
Account followed)
|
ResourceLike |
LikeRepository.findTopByLikerAndPost(Account liker,
Post post)
Finds one by liker and post
|
Post |
PostRepository.findTopByPosterOrderByDateDesc(Account poster)
Finds the latest post by poster (used for profile picture)
|
| Modifier and Type | Method and Description |
|---|---|
List<Post> |
PostRepository.findByPosterInOrderByDateDesc(List<Account> posters)
Finds posts where poster is in the target account list (used for
making the feed functionality)
|
| Modifier and Type | Method and Description |
|---|---|
Account |
AccountService.getAuthenticatedAccount()
Gets the currently authenticated account from security context
|
| Modifier and Type | Method and Description |
|---|---|
Set<Account> |
AccountService.getFollowers(Account account)
Gets the followers of the target account
|
Set<Account> |
AccountService.getFollowings(Account account)
Get the accounts that target account if following
|
| Modifier and Type | Method and Description |
|---|---|
void |
PostService.createPost(String file,
String tags,
Account a)
Creates new post.
|
Set<Long> |
LikeService.getAccountLikedPostIds(Account account)
Get the ids of posts that the account has liked
|
Set<Account> |
AccountService.getFollowers(Account account)
Gets the followers of the target account
|
Set<Account> |
AccountService.getFollowings(Account account)
Get the accounts that target account if following
|
List<Post[]> |
PostService.getPostsByAccount(Account account)
Gets the posts from server and transforms them to 3 by X grid (WxH)
(to easilly add them as a grid to profile page)
|
String |
AccountService.getProfilePictureUrl(Account account)
Gets the profile picture of the account.
|
void |
AccountService.save(Account account)
Saves account which is passed from signup form.
|
void |
LikeService.toggleLike(Account liker,
Long target)
Toggles a like in a post (if account has liked it, it will be unliked
or opposite)
|
Copyright © 2017 Pivotal Software, Inc.. All rights reserved.


---
layout: post
title: Sigma DP1s
tags:
- Camera Bag
- Foveon
- General Photography
- Sigma DP1s
- Site News
status: publish
type: post
published: true
meta:
aktt_notify_twitter: "yes"
_edit_last: "2"
_edit_lock: "1285099179"
_thumbnail_id: "2481"
ghostpool_post_template: Default
ghostpool_link: Full Size Image/Video
ghostpool_post_image: http://photo.rwboyer.com/wp-content/uploads/2010/09/P1000305-icon.jpg
ghostpool_post_faded_image: http://photo.rwboyer.com/wp-content/uploads/2010/09/P1000305-icon.jpg
ghostpool_circle_image: http://photo.rwboyer.com/wp-content/uploads/2010/09/P1000305-icon.jpg
aktt_tweeted: "1"
_wp_old_slug: ""
dsq_thread_id: "375189317"
---
[image title="P1000305-full" size="thumbnail" id="2480" align="left" linkto="viewer" ]Just wanted to give you people out there some news. Something happened that actually makes the Sigma DP1s more attractive to me. It happened within an astonishingly short time. I have never talked about this camera but it has been under my consideration since it was released. Actually all of the DP camera. My hangups about them were typical. Too slow, foveon sensor math (translation = it's not even 5 megapixels, NOT 14 megapixels), no real high ISO to speak of, and no real justification for the stratospheric price.
At some point in the very recent past you can a DP1s for $299 brand spanking new from Amazon. Now that is interesting because the lens is really good and the images even though only 4.8 ish megapixels are actually quite good form RAW files that I have sampled from various photographic situations. That prices is a whopping two hundred bucks cheaper than it was selling for last time I looked and that was kind of cheap at $499 compared to when I was looking at them. You can't even find a used one for near $299.
This is probably the result of the DP1x but wow. If any over you are in the market for this very specialized camera I can say that if you can live within it's parameters it does make stunning images. I may get one just to save me money and stopping me from buying anything else. You see, $299 is far cheaper than just about anything else I could possibly buy to fill up my new gear limiting camera bag.
RB


Chapter 3 Confidence Intervals and Power
Class notes from September 5th, 2017 - UNEDITED
3.1 Confidence Interval Estimation
Confidence intervals are a way to get at a range of likely values for an estimate. It’s an inferrential way of thinking about values from your sample.
We know that over repeated sampling, the CI represents the percentage of sugt intervals that contain the population mean. Just like a p value, you can set the CI to any percentage you want. So just like you can think of a distribution of sample means as a way of describing your parameters, you can also do this with CIs.
A CI gives you an educated guess of identifying the population mean than just knowing one number, which would be the mean itself. Keep in mind for all of this we are operating on the sampling distribution informaiton. Just like the set of t distributions are a set of sampling distributions, CIs are computed from the sampling distributions.
There is a relationship between CIs and p values because at their core is the sampling distribution. They are not the same thing, but they represent information coming from the sampling distribution.
Take a look at the image below. We see here in an image taken from THIS that we can see what a confidence interval is. Image you take a sample from known populaiton paramters. We tell it we want a certain N, mu, and standard deviation. What it then does is construct a CI around that mean. We have a certain amount of information that comes from our sample. Our CI is a symmetrical range that gives you a sense of the possibilites of where the populatin mean might be.
IMAGE WITH ONE
It’s not a probability of the mean being in that CI! A CI represents the percentage of intervals that capture the population mean. This only makes sense if you think about repeated sampling over many experiments. You then calculate the number of intervals that contain the actual population mean.

So now below you can see 25 samples. You can start to see teh sampling distribution get created at the bottom They start to form a normal curve. Notice that every sample mean has a symmetrical intervals. Note that there are 2 sample means and their CI, the entire interval does not have the population mean. But for all of the other ones, they do have the population mean. So 23/25 is 92%, but as we add more in we would eventually add more and approach 95%. Any one of these intervals gives you an estimate of the populatino mean. That does not mean its 95% likely to be right. It’s that in repeated samples 95% of the samples will fall in that range. What we have now is a range of values that might hold the mean. 95% of these will have mean in the long run.
Note that with the sampling distribution at the bottom, we are still using information. We still use mean, the standard error. We still know the degrees of freedom.
Note that this is just a visualzation. Note some of the intervals are wider, some are shoter. This is because your samples SD is goign to hop around. The sample’s CI takes into account the standard error.
We can see now see the difference in means between two sample means. We now plot the difference from TTESTFROM EARLIER. We subtract the two means and can see in the long run, we had a population mean of 10. But if you look at it, note that the populations hop around. Not only that, but they all have CIs.
With this image, if the Null was true, we would get means around 0. Note that a lot of these random samples from a known population that is not the null, over HALF of them make it look like the null could be a reasonable guess. Just like a NHT, sometimes you are going to get a high P value even though we know the Null is false. Why might this happen? Well it might just be that we need to figure out how to set up.
3.2 Example
Let’s return to the example that we are looking at SAT scores with a population mean of 455. We then calculate the 95% confidence interval. What it’s trying to do is capture the inside part. Note your CI is not exactly the mean and the cut off boundary, your mean changes. This is just a reminder we use the sampling distribution interval.
SAMPLING DISTRIBUTION SAT IMAGE
3.3 Computation of Confidece Interval
3.3.1 On a single sample
Confidence interval for a single sample mean.
\[\bar{X} ± (t_{cv}s_{\bar{X}})\]
Note all we are doing is rearranging the t formulat. We multiply both times by the standard error. It’s not your actual t value, it’s the critical value of t. When you have two samples, you just rearrange the values.
\[(\bar{X_{1}}-\bar{X_{1}}) ± (t_{cv})(s_{\bar{X_{1}}-\bar{X_{1}}})\]
Remember we are assuming we are constructing this from the sample means. Let’s return to our example from last chapter. We know the specific numbers from each of our sample means.
PUT IN NUMBERS HERE IN TABLE.
Let’s find out what happens when we look at each on interms of its own mean and a difference. We don’t know the population mean, so we go with the sample mean.
\(t_{cv,df = 149,\alpha=.05,two tailed}= ± 1.97\)
CALCULATION HERE FOR SPRING AND FALL CLASS! NOte they are almost identical
SEE IF YOU CAN COLOR CODE THIS!!!
Note that at this point we are not comparing them against each other. This says beyond just knowing the mean, says interval. This does not mean the population mean is 95% likely to be in that interval. It is if I did this over and over, that 95% of those intervals will hold the sample mean.
The reasons we know this is because it’s better than using the mean alone. Report the CI like it is a descritive statistc. Though note that this comes from the sampling distribution, which comes from an infferential.
3.3.2 Differnence
See slides (updated)


Standard Room
From
$99
/night
Smart TV
High Wi-fii
AC
Parking
Pool
Book Now
Standard Room
From
$99
/night
Smart TV
High Wi-fii
AC
Parking
Pool
Book Now
Standard Room
From
$99
/night
Smart TV
High Wi-fii
AC
Parking
Pool
Book Now
Standard Room
From
$99
/night
Smart TV
High Wi-fii
AC
Parking
Pool
Book Now


My boyfriend and I received 6-7 tablets of Methadone from a friend at a party. We weren't sure if we even wanted to try this, but took them anyway figuring we could always trade them off. After a rather hectic labor day weekend, we decided to try it out. We each took 1 5mg tablet, dimmed the lights, and vegged out in front of the television. Half an hour went by, and I still wasn't feeling much, so I started folding clothes, cleaning up the house, etc.
When I first felt the effects, a light body high, I sat on the bed and continued to watch TV, which had become very interesting. I had no adverse effects, just felt lazy and content for the first 1.5 hours to lay on the bed and talk. I felt pretty good. It wasn't a euphoric feeling, just contentment and light headedness. I turned and asked how my boyfriend was, and he replied with, 'stoned, but not too much. I'm having a hard time getting out of this chair.'. In contrast, I could get up, move around, clean the house, pretty much act normally.
About a half hour afterwards, we decided to take another tablet. A while after that, we were officially spacey, like smoking marijuana without the paranoia. I was experiencing a nice floating body high. I also felt mildy euphoric. We cuddled on the bed and watched TV for a couple more hours. There was no urge to walk around or go adventuring. There were a few bouts of very mild nausea which were easy to fix, I just lay down and they went away. My boyfriend went to sleep at this point. I got up and decided I was hungry. I made a TV dinner, and ate it very, very slowly, along with drinking lots of ice water.
I fell asleep after that, feeling disappointed. All this did for me was make me sort of happy, followed by sort of nauseus, and then sleepy. I had no visuals except at the time I went to sleep, the shadows seemed to be playing tricks on me. I became a little afraid, and ten minutes later I was asleep.
The real problems came in the morning. I literally could not get out of bed until 4pm. I was lethargic and nauseous all day, and the next. The nausea went away when I laid down, so I just slept for two days.
This is not a drug I would try again. The brief mild high was not worth the two bed ridden days of misery afterwards. Other after effects included cold sweats and sour stomach. We could have taken a larger dose, but I felt that if we had taken more, we would have been sick. My stomach was very tender for a few days, and I had to watch what I ate. We were both amazed at how many bad side affects were experienced from such a low dosage.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Sorry! You've hit an error.
We apologize for this problem and hope you'll bear with us as we work to make Collex better!
System administrators have been automatically notified of the error. If you have additional feedback, please e-mail us at $$$$.
To clear your search constraints and re-enter Collex, please click here.


{{config.TITLE}} portal is powered by Openslice, a prototype open source, Operations Support System. It supports VNF/NSD onboarding to OpenSourceMANO (OSM) and NSD deployment management. It also supports TM Forum OpenAPIs regarding Service Catalog Management, Ordering, Resource, etc.


24 October 1996
Disease Outbreak Reported
The National Institute of Communicable Diseases (NICD), Delhi reported 5 930 cases of dengue and dengue haemorrhagic fever of which 251 were fatal as at 22 October 1996. These numbers were based on reports received from hospitals in Delhi. Over half of 783 serum samples tested had antibodies to dengue virus in MAC-ELISA/HI tests. Dengue virus serotype 2 has been isolated by All India Institute of Medical Sciences, New Delhi.


v1.7.0
Release 1.7.0
Template Selection
The publish screen allows the user to select which template to use for the publication, as well as the version of the template. Right now, ToF only supports the official FHIR template and the CDA template (in preparation for upcoming changes to support profiling CDA in ToF). If additional templates are supported/needed by the FHIR IG publisher in the future, we will consider adding them to the list of templates supported by ToF.
MSWord Export Format
A new export format is added to produce an MS Word (docx) document for an implementation guide. This MSWord export format is intended only to be used for tech editing and review purposes, and is not intended for publication/distribution. The document exports narrative content that may require tech editing (grammar, spelling, etc.), such as the implementation guide's description, pages, profile's description, and more.
Support for package-list.json
The HL7 IG Publisher recently requires that a package-list.json file be present in the export. The package-list.json file is intended to provide a history of versions of the implementation guide, as well as some meta-data that is not available in the ImplementationGuide resource, such as the "Canonical URL" of the implementation guide. To satisfy this requirement, users can create a package-list.json definition in the "Edit Implementation Guide" screen's Other tab. When specified, the package-list.json file is included in the HTML export and in the Publish process.
Profile Intro/Notes
New fields for "Intro" and "Notes" have been added to the "Edit Profile" screen's Narrative tab. The intro and notes are included in published profile page.
Profile Elements
The behind-the-scenes functionality for editing a profile's elements is significantly improved. Previous versions included some bugs when working with element slices, which are now fixed. In addition to to the behind-the-scenes improvements, users are now able to edit the flags and cardinality of constrained elements directly in the table/list of elements.
Exporting to GitHub
In previous releases, the functionality for exporting to GitHub occasionally produced errors. This functionality has been re-designed and works much better! Now, after a user selects a repository to export to, they can see all the files in the repository and choose how their exports impact files that already exist in the repository.
Development Log (28)
New Features
- [TRIFFHIR-147] - Create export format for "Tech Edit Document"
- [TRIFFHIR-284] - Create audit records for changes to resources
- [TRIFFHIR-298] - Add "intro" and "notes" fields to profile editing screen and enhance export
- [TRIFFHIR-307] - Support IG parameters for new template
- [TRIFFHIR-319] - Allow user to select template and version from publish screen
- [TRIFFHIR-322] - Generating snapshots when saving and loading
Defects
- [TRIFFHIR-87] - View FHIR Implementation Guide generates "The specified page could not be found" error
- [TRIFFHIR-178] - Editing Pages pop-up module (text-box) disappears when dragging a clicked mouse from inside to outside of module
- [TRIFFHIR-210] - Errors during Export to GITHUB
- [TRIFFHIR-220] - Wrong default FHIR version
- [TRIFFHIR-245] - ServiceRequest/ServiceDefinition for CapabilityStatement > ReST > Resource > Type
- [TRIFFHIR-255] - Element profiling improvements
- [TRIFFHIR-277] - Import text not adding file to project
- [TRIFFHIR-286] - IG Publisher - Remove download text when "Download" = "No"
- [TRIFFHIR-287] - Changing the Implementation Guide ID results in an error
- [TRIFFHIR-297] - When the selected FHIR server is down, show an error message
- [TRIFFHIR-303] - Remove non-standard characters from file name of pages when exporting
- [TRIFFHIR-308] - User id (practitioner.id), not names, appear in permissions when creating new resources: code system and value sets
- [TRIFFHIR-313] - Import Text option generates errors for copy/pasted XML
Improvements
- [TRIFFHIR-222] - Separate functionality for "Other Resources" into two screens
- [TRIFFHIR-229] - Create package-list.json in the root of the IG Publisher Package
- [TRIFFHIR-235] - Add notification (exclamation point) when a Resource contains no permissions.
- [TRIFFHIR-247] - Add button to delete IG from "Edit" screen
- [TRIFFHIR-248] - Update references when changing the ID of a resource
- [TRIFFHIR-288] - Ability to Export a Transaction Bundle
- [TRIFFHIR-320] - Remove 'Introduction' header so only 'Description' remains
- [TRIFFHIR-324] - Support elementdefinition-profile-element extension in type settings within editor
- [TRIFFHIR-326] - Allow editing flags and cardinality from element table


{% extends 'base.html' %} {% block body %}
low cost smart soil monitoring system and a ph meter to use to measure pH level. IOT-enabled sensors take very little time to set up and there is a long battery life, which leads to less maintenance costs. Soil health monitoring system is used to find characteristics of soil such as soil moisture, soil temperature , ph level ,and humidity. These characteristics can be sensed by a open source hardware It consist of various part such ESP8266 microcontroller, FC-28 soil moisture sensor etc.
Footer


3 references to CommandMetadata
System.Management.Automation (3)
engine\ExternalScriptInfo.cs (1)
365
new
CommandMetadata
(this.ScriptBlock, this.Name, LocalPipeline.GetExecutionContextFromTLS());
engine\FunctionInfo.cs (1)
483
new
CommandMetadata
(this.ScriptBlock, this.Name, LocalPipeline.GetExecutionContextFromTLS());
engine\ScriptInfo.cs (1)
120
new
CommandMetadata
(this.ScriptBlock, this.Name, LocalPipeline.GetExecutionContextFromTLS());


HEAD
| Name | Age | Breed |
|---|---|---|
| Rusty | 2 | Mutt |
| Wyatt | 13 | Golden |
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum


Copyright © 2009 Rahmal Conda
Config is a special class, derived from HashWithIndifferentAccess. It was specifically created for handling config data or creating mock objects from yaml files. It provides a dotted notation for accessing embedded hash values, similar to the way one might traverse a object tree.
Copyright © 2009 Rahmal Conda
Copyright © 2009 Rahmal Conda
Copyright © 2009 Rahmal Conda
This class parses key/value based properties files used for configuration. It is used by rconfig to import configuration files of the aforementioned format. Unlike yaml, and xml files it can only support three levels. First, it can have root level properties:
server_url=host.domain.com server_port=8080
Secondly, it can have properties grouped into catagories. The group names must be specified within brackets like [ … ]
[server] url=host.domain.com port=8080
Finally, groups can also be qualified with namespaces, similar to git
config files. Group names are same as before, but with namespace in within
the brackets like [
[host "dev"] domain=dev.server.com [host "prod"] domain=www.server.com
These can be retrieved using dot-notation or variable to do it dynamically.
RConfig.props.host.dev.domain * or - RConfig.props.host[env].domain (where env is 'dev' or 'prod')
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.


Toggle navigation
SCT - Quality Control
About
Keyboard shortcuts:
Previous
Next
Display Columns
Date
Dataset ✔
Subject
Path ✔
File
Contrast ✔
Function
Function+Args ✔
Date
Dataset
Subject
Path
File
Contrast
Function
Function+Args
Toggle overlay (right arrow)


If checked, Hudson will parse the POMs of this project, and see if any of its snapshot dependencies
are built on this Hudson as well. If so, Hudson will set up build dependency relationship so that
whenever the dependency job is built and a new SNAPSHOT jar is created, Hudson will schedule a build
of this project.
This is convenient for automatically performing continuous integration. Hudson will check the snapshot
dependencies from the <dependency> element in the POM, as well as <plugin>s and
<extension>s used in POMs.
If this behavior is problematic, uncheck this option.