Human Resource
Recommendation, 2007 April 15
Editors:
Kim Bartkus, HR-XML Consortium
Contributors:
Gail Bubsey (Kelly Services ), Kim Bartkus (HR-XML Consortium), Barbara Johnson (Adecco NA), Tara Ryan (Adecco), Kazuko Sugamura (Manpower Japan), Takahiro Fujiwara (EAST Co., Ltd.), Magali Munoz (Manpower France), Bruno Alcotte (Manpower France), Rémy Bailly (Randstad), Yves Berdah (VidiorBis), Serguei Dounaevetski (Manpower France), Patrice Aranega (Adecco France)
Copyright © 2007 HR-XML Consortium, Inc.
Abstract
The HR-XML SIDES Workgroup has produced 7 major schemas and several reusable modules to allow for transmission of Staffing Industry information between trading partners. This document describes the Human Resource schema, its expected usage, and the business processes meant to be supported.
Table of Contents
4 Implementation Considerations
5 Appendix A - Document Version History
6 Appendix B – Related Documents
Changes were made to the base SIDES specification based on feedback from the European and Japanese Chapters. If available, localized items are documented in section 4 Implementation Considerations or in individual country documentation. Refer to Appendix A - Document Version History for details.
Within the framework of SIDES, the HumanResource (HR) XML document is used to describe a staffing resource’s skills and experiences as they relate to the position opening(s) received via the StaffingOrder XML document. The HumanResource schema is flexible enough to be used in the case of permanent placements, or for “marketing” temporary employees (i.e. sending information spontaneously as opposed to a response to a request); however, for SIDES, its primary purpose is in response to a StaffingOrder XML document.
The Major Components used in the HumanResource process are listed below.
· ResourceInformation - specific information about the staffing resource, i.e. name, contact information, address, employment status (independent contractor vs. payrolled employee vs. other), and availability dates. Usually, in the staffing services scenario, the staffing resource’s name will be sent, and the contact information will be that of the staffing supplier. Typically, no postal address is sent.
· Preferences - describes any special preferences or requirements of the staffing resource that may relate to the position. For example, relocation preferences and resume distribution restrictions are described here.
· Profile - the staffing resource’s skills and experience are described here through use of the Competency schema and the Resume schema.
· ReferenceInformation.
· Screening.
· Rates.
· Submittal of staffing resource’s skills and experience in response to a specific order and position.
· Ability to express the quoted rate for the staffing resource in whatever terms are appropriate (ex. hourly bill rate, hourly pay rate, x markup percentage, flat fee).
· Ability to pass structured XML or text resume information about the staffing resource.
· Ability to communicate screening results (meets/does not meet position requirements).
· Enumeration for most elements.
· Specific process flows for permanent placements and marketing of resumes, although either can be accommodated by the flexibility of the SIDES schema.
· Skills taxonomy.
The Submission and Selection Process generally follows the Order Process. A HumanResource transaction is typically sent in response to a StaffingOrder XML document, although there are exceptions to this chain of events, for example, the marketing of employees. However, for the purpose of SIDES, the focus will be on the HumanResource XML document as a response to a StaffingOrder XML document. General steps are as follows:
· The StaffingOrder document is received and the staffing supplier has decided to pursue attempting to fill the stated position(s).
· The staffing supplier conducts a candidate search and match to the skills and experiences specified in the position. This process is unique to each staffing supplier and there will be no attempt to standardize it. (Recruitment Process)
· A particular staffing resource is chosen, their information placed in the format of the HumanResource schema, and that document is sent to the staffing customer.
· The staffing customer reviews the staffing resource’s information and may request additional information, for example regarding their qualifications, using the StaffingAction XML document.
· A staffing supplier may update the staffing resource’s information for a variety of reasons, for example in response to a query about a specific skill, to modify availability, or to remove the staffing resource from consideration.
· The staffing customer makes a decision to either accept or reject the staffing resource. This decision is conveyed to the staffing supplier, leading to the next phase of SIDES, the Assignment phase.
See Appendix B – Related Documents (SIDES Reusable Modules) for details on Rates and Resource Screening.
|
Elements and Attributes [Global types listed alphabetically in following table.] |
ContentModel* |
Definition |
|
/ |
- HumanResourceType - (1/1) |
A person who presently does work
for, may do work for, or has done work for the organization. |
|
/ HumanResource/ |
- EntityIdType - S (1/*) |
Reference to a specific HumanResource. |
|
/ HumanResource/ |
status - StatusType
- required |
Assigns a status to a candidate or human resource transaction in relation to a business process. |
|
/ HumanResource/
HumanResourceStatus/ |
- StatusType - |
The status of the associated
item. If the status isn't specified, the implementer may place the record in
whatever status seems appropriate given the context of the data. |
|
/ HumanResource/
HumanResourceStatus/ |
- xsd:string - |
Comment field to allow
description of why the status change has occurred. |
|
/ HumanResource/ |
StaffingSupplierId - EntityIdType - S (1/*) StaffingOrganizationId - EntityIdType - S (0/*) |
Contains reference information (a group of id's) regarding other business entities or transactions. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (1/*) |
Unique id used to identify the staffing supplier. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (1/*) |
Unique id used to identify the staffing customer. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique identifier for a Vendor Management System or 3rd party responsible for staffing management |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique identifier for a staffing order. |
|
/ HumanResource/ ReferenceInformation/ |
- EntityIdType - S (0/*) |
Reference to a uniquely identifiable position. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Identifier of the assignment
eventually agreed to by the trading partners. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique id used to identify a particular organizational unit of the staffing supplier. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique id used to identify a particular organizational unit of the staffing customer. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Reference to a master order or project. Used to link multiple orders. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique id used to identify the time card. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique id used to identify the Invoice. |
|
/ HumanResource/
ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique id used to identify the billing information. |
|
/
HumanResource/ ReferenceInformation/ |
- EntityIdType - S (0/*) |
Unique id used to identify the staffing organization. |
|
/ HumanResource/ |
ResourceType - [complexType] - S (0/1) |
Container for contact, eligibility and availability information about the staffing resource. |
|
/ HumanResource/
ResourceInformation/ |
independentContractor - xsd:boolean
- required |
Container for optional descriptor
of the staffing resource. |
|
/ HumanResource/
ResourceInformation/ ResourceType/ |
- xsd:boolean - |
Flag to indicate if this staffing resource is an independent contractor. |
|
/ HumanResource/
ResourceInformation/ ResourceType/ |
- xsd:boolean - |
Flag to indicate if this person is a payrolled employee, meaning the staffing company did not recruit the employee, they only pay them. |
|
/ HumanResource/ ResourceInformation/ |
AvailabilityStartDate - AnyDateTimeNkType - S
(1/1) |
The earliest date that the person
will be available to accept a new position or assignment. |
|
/ HumanResource/
ResourceInformation/ AvailabilityDate/ |
- AnyDateTimeNkType - S (1/1) |
Date the person is available to
start work. |
|
/ HumanResource/
ResourceInformation/ AvailabilityDate/ |
- AnyDateTimeNkType - S (0/1) |
Date the staffing resource is no
longer available for work. |
|
/ HumanResource/ |
Competency - [see include/import] - S
(0/*) |
Context definition: Employment related information about a person, as well as the position attributes they desire. Profiles are generally used as an alternative to a resume and are more conducive to matching.For example, Desired Compensation, Desired Schedule, Desired Position, etc. |
|
/ HumanResource/ Profile/ |
- StaffingPositionHeaderType - S (0/*) |
Contains common position information to be used within other HR-XML Schemas. |
|
/ HumanResource/ |
DesiredShift - [complexType] - S (0/1) |
Container for information about the person's employment related preferences. |
|
/ HumanResource/ |
- xsd:string - S (0/1) |
Comments about the staffing resource in general. |
|
/ HumanResource/ |
Type - SocialInsuranceTypeType
- S (1/1) |
Information about the social
insurance programs offered by the government. |
|
Global types |
ContentModel* |
Definition |
|
/ |
xsd:restriction base: xsd:string [Enumerations]: new, revised, rejected, accepted, withdrawn, suspended, pending |
Globally scoped data type. See element or attribute declaration for definition. |
|
/ |
- [Union]: KnownStatusType,xStringPatternExtensionType |
Globally scoped data type. See element or attribute declaration for definition. |
|
Elements and Attributes [Global types listed alphabetically in following table.] |
ContentModel* |
Definition |
|
/ |
DesiredShift - [complexType] - S (0/1) |
Container for information about the person's employment related preferences. |
|
/ Preferences/ |
ShiftName - xsd:string - S (0/1) |
Description of any work schedule or shift preferences of the staffing resource. |
|
/ Preferences/ DesiredShift/ |
- xsd:string - S (0/1) |
Name of the preferred shift. |
|
/ Preferences/ DesiredShift/ |
- xsd:decimal - S (0/1) |
Hours of the preferred shift. |
|
/ Preferences/ DesiredShift/ |
- LocalTimeNkNaType - S (0/1) |
Start time of the preferred shift. |
|
/ Preferences/ DesiredShift/ |
- LocalTimeNkNaType - S (0/1) |
End time of the preferred shift. |
|
/ Preferences/ DesiredShift/ |
- xsd:string - S (0/1) |
Further descriptive information related to the preferred shift. |
|
/ Preferences/ |
willingToTravel - xsd:boolean
- required |
Information regarding if the person is willing to travel or the position requires travel. |
|
/ Preferences/ Travel/ |
- xsd:boolean - |
Flag to indicate the willingness of the resource to travel as part of the position. |
|
/ Preferences/ Travel/ |
- xsd:string - S (0/1) |
Percentage of time the Resource is willing to travel. |
|
/ Preferences/ Travel/ |
- xsd:string - S (0/1) |
Describes any special travel
considerations. |
|
/ Preferences/ |
TimeMax - xsd:string - S (0/1) |
Container describing the person's
commute preferences. |
|
/ Preferences/ Commute/ |
- xsd:string - S (0/1) |
Maximum amount of time the person is willing to commute. |
|
/ Preferences/ Commute/ |
- xsd:string - S (0/1) |
Maximum amount of distance the
staffing resource is willing to commute. |
|
/ Preferences/ Commute/ |
- xsd:string - S (0/1) |
Comments about commuting preferences. |
|
/ Preferences/ |
willingToRelocate - xsd:boolean
- required |
Contains informtion on whether relocation is an option for the candidate or considered by the hiring company. |
|
/ Preferences/ Relocation/ |
- xsd:boolean - |
Flag to indicate the willingness of the resource to relocate for the position. |
|
/ Preferences/ Relocation/ |
- xsd:string - S (0/1) |
Comments about relocation preferences or restrictions. |
|
/ Preferences/ |
DoNotDistributeTo - xsd:string - S (1/*) |
Allows a person to list employers or recruiters to which the resume or information should not be distributed. |
|
/ Preferences/
DistributionRestrictions/ |
- xsd:string - S (1/*) |
Any company, person, organization, etc. to which the information should not be distributed. |
|
/ Preferences/ |
CompensationAmount - xsd:string - S (1/1) |
Contains the staffing resource's compensation preferences. |
|
/ Preferences/
DesiredCompensation/ |
xsd:extension base: xsd:string |
The monetary amount of compensation the staffing resource desires (requires). |
|
/ Preferences/
DesiredCompensation/ CompensationAmount/ |
xsd:restriction base: xsd:string |
A three-letter code identifying
the currency of a monetary amount. |
|
/ Preferences/
DesiredCompensation/ CompensationAmount/ |
- AmountPeriodType - |
Time interval related to the desired compensation amount. |
|
/ Preferences/
DesiredCompensation/ |
- xsd:string - S (0/1) |
Comments about compensation preferences. |
|
Elements and Attributes [Global types listed alphabetically in following table.] |
ContentModel* |
Definition |
|
/ |
Type - SocialInsuranceTypeType
- S (1/1) |
Information about the social
insurance programs offered by the government. |
|
/ SocialInsurance/ |
- SocialInsuranceTypeType - S (1/1) |
Further defines the associated element in the context provided. |
|
/ SocialInsurance/ Type/ |
- SocialInsuranceEnumType - C (0/1) |
A list of standard values. |
|
/ SocialInsurance/ Type/ |
- xsd:string - C (0/1) |
A string used to extend a list of non-standard values. |
|
/ SocialInsurance/ |
- xsd:boolean - S (1/1) |
Indicates if an individual is participating in the social insurance program. |
|
/ SocialInsurance/ |
- xsd:string - S (0/1) |
Describes why an individual is not participating in the social insurance program. |
|
/ SocialInsurance/ |
- xsd:string - S (0/*) |
Any additional legal description presented in legal format when required. |
|
Global types |
ContentModel* |
Definition |
|
/ |
xsd:restriction base: xsd:string [Enumerations]: Health, WelfarePension, UnemploymentInsurance |
Globally scoped data type. See element or attribute declaration for definition. |
|
/ |
StandardValue - SocialInsuranceEnumType - C
(0/1) |
Globally scoped data type. See element or attribute declaration for definition. |
|
/ [SocialInsuranceTypeType]/ |
- SocialInsuranceEnumType - C (0/1) |
A list of standard values. |
|
/ [SocialInsuranceTypeType]/ |
- xsd:string - C (0/1) |
A string used to extend a list of non-standard values. |
Human resources data, by its very nature, is personal data. The laws of many jurisdictions as well as codes of fair information practice require organizations to handle personal data in a way that protects individuals from loss of privacy.
The data exchange specifications developed by the HR-XML Consortium are designed to be useful across many jurisdictions and within a variety of business contexts. It is not feasible for the HR-XML Consortium to develop specific privacy guidance for every jurisdiction or business context in which the Consortium's specifications might be implemented. When implementing data exchanges using the HR-XML Consortium's data definitions (or, for that matter, using any other type of data exchange mechanism), organizations are advised to examine the privacy protections that may be required under applicable law and codes of fair information practice.
For information on protecting personal data, general references include: European Union Data Protection Directive (95/46/EC); the Association Computing Machinery Code of Ethics (1992); Canadian Standards Association Model Code for the Protection of Personal Information (1995 – PIPEDA); and U.S.-EU Safe Harbor Principles and FAQs (2000).
|
Date |
Description |
|
2004-03-01 |
Initial Draft |
|
2004-03-29 |
Updated definitions |
|
2004-06-09 |
Clarified that AvailabilityDate correction is non-backwards compatible. |
|
2004-Aug-02 |
Approved by membership. |
|
2006-Feb-28 |
Approved by Consortium |
|
2006-Mar-01 |
Added Reference Id's to match other SIDES schema: MasterOrderId, TimeCardId, InvoiceId, BillToEntityId and StaffingOrganizationId. Added staffing-relevant information to PositionHeader. See StaffingOrder.doc (StaffingPositionHeader) for details. Added Social Insurance structure. |
|
2007-Apr-15 |
Approved by Consortium |


The domain model, services and repository interfaces. This is the central part of the application. The ubiquitous language is used in classes, interfaces and method signatures, and every concept in here is familiar to a expert in the cargo shipping domain.
There is no infrastructure or user interface related code here, except for things like transactional, validation and security metadata which is likely to be relevant to a domain expert ("Either all of foo succeeds or none of it does", "In order to do bar you need to be a Supervisor", and so on).


1 write to _includeStrings
Microsoft.PowerShell.Commands.Utility (1)
commands\utility\MatchString.cs (1)
1288
_includeStrings
= value ?? throw PSTraceSource.NewArgumentNullException(nameof(value));
4 references to _includeStrings
Microsoft.PowerShell.Commands.Utility (4)
commands\utility\MatchString.cs (4)
1283
get =>
_includeStrings
;
1290
_include = new WildcardPattern[
_includeStrings
.Length];
1291
for (int i = 0; i <
_includeStrings
.Length; i++)
1293
_include[i] = WildcardPattern.Get(
_includeStrings
[i], WildcardOptions.IgnoreCase);


--- layout: projects_default title: Team ViGIR nav: projects box: true summary: Team ViGIR team member for the DRC ---
I was a member of Team ViGIR for the DARPA Robotics Challenge from January through June of 2015. While on the team, I developed software to ensure robust communication in a simulated disaster scenario, with a low-bandwidth/intermittent network connection from the operator to the robot.
DRC Finals overview video
Team ViGIR (Virginia-Germany Interdisciplinary Robotics), comprising researchers from TORC Robotics, Technische Universität (TU) Darmstadt, Virginia Tech, Oregon State University, Cornell University, and the Leibniz University Hanover was a collaborative research and development effort aimed at advancing the state-of-the-art in humanoid robot control in order to allow for effective human-robot teams. Our goal was to enable robots to more effectively respond to humanitarian disasters, thereby reducing the risk to humans.
Timelapse of Team ViGIR's robot during the finals event
You can see me in the video. I'm one of the people in the blue vests :)
Team ViGIR Feature Video produced by DARPA before the competition in 2015


admin controller
- Copyright:
- Copyright (c) 2014 Typesettin. All rights reserved.
- License:
- MIT
- Source:
Requires
- module:async
- module:path
- module:superagent
- module:moment
- module:semver
- module:periodicjs.core.utilities
- module:periodicjs.core.controller
- module:periodicjs.core.mailer
Methods
-
<inner> asset_show(req, res) → {object}
-
show asset page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> assets_index(req, res) → {object}
-
list assets page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> categories_index(req, res) → {object}
-
list categories page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> category_parent(req, res) → {object}
-
get get category parent page page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> category_show(req, res) → {object}
-
show category information
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> collection_edit(req, res) → {object}
-
edit collection page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> collection_new(req, res) → {object}
-
new collection page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> collections_index(req, res) → {object}
-
list collections page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> contenttype_show(req, res) → {object}
-
show content type page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> contenttypes_index(req, res) → {object}
-
list content types page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> extension_show(req, res) → {object}
-
show selected extension page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> extensions_index(req, res) → {object}
-
list installed extensions
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> getDefaultContentTypes(contenttypesetting, callbackk)
-
get the default content type from stored db defaults
Parameters:
Name Type Description contenttypesetting
object name of default setting
callbackk
function async callback
- Source:
-
<inner> index(req, res) → {object}
-
admin ext home page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> item_edit(req, res) → {object}
-
edit item page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> item_new(req, res) → {object}
-
new item page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> items_index(req, res) → {object}
-
list items page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> loadDefaultContentTypes(contenttypes, callbackk)
-
load contenttype data
Parameters:
Name Type Description contenttypes
object load default contentypes
callbackk
function async callback
- Source:
-
<inner> loadExtension(req, res) → {object}
-
get extension data from selected extension package json
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> loadExtensions(req, res) → {object}
-
load extensions that are enabled and installed
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> loadTheme(req, res) → {object}
-
select theme name from req parameter
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> loadThemes(req, res, next) → {object}
-
loads list of installed themes by reading content/themes directory
Parameters:
Name Type Description req
object res
object next
object async callback
- Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> mail_index(req, res) → {object}
-
send test mail page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> settings_faq(req, res) → {object}
-
settings faq page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> settings_index(req, res) → {object}
-
application settings and theme settings page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> tag_parent(req, res) → {object}
-
get tag parent page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> tag_show(req, res) → {object}
-
show selected tag page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> tags_index(req, res) → {object}
-
list tags page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> theme_show(req, res) → {object}
-
get theme page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> themes_index(req, res) → {object}
-
list installed themes and install new themes page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> users_edit(req, res) → {function}
-
make sure a user is authenticated, if not logged in, send them to login page and return them to original resource after login
Parameters:
Name Type Description req
object res
object - Source:
Returns:
next() callback
- Type
- function
-
<inner> users_index(req, res) → {object}
-
shows list of users page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> users_new(req, res) → {object}
-
create a new user page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object
-
<inner> users_show(req, res) → {object}
-
shows user profile page
Parameters:
Name Type Description req
object res
object - Source:
Returns:
reponds with an error page or sends user to authenicated in resource
- Type
- object


{% include '../general/nav.html' %} {% include '../general/subbar.html' %}
The payment was succesful and the QR code has been sent.
{% include '../general/footer.html' %}


GNP CALAMINE TOPICAL SUSPENSION- zinc oxide lotion
Amerisource Bergen
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
active Ingredients
Calamine 8%
Zinc Oxide 8%
Purpose
Skin Protectant
Skin Protectant
Uses
Dries the oozing and weeping of poison ivy, poison oak, and poison sumac and other skin irritations.
Warnings
For external use only. Use only as directed.
Avoid contat with eyes and moucous membranes.
Ask a doctor
before using on children under 6 years of age.
Stop use and ask a doctor if
- Condition worsens
- Symptoms last for more than 7 days or clear up and occur again within a few days.
Keep out of reach of children.
In case of accidental ingestion, seek professional assistance or contact a Poison Control Center immediately.
Directions
Adults and children 6 mo. of age and older: Shake well before using. Cleanse the skin with soap and water. Let dry before each use. Apply lotion to the affected area using cotton or soft cloth, as often as needed for comfort.
Children under 6 mo. of age: Consult a doctor before use.
Other information
Store at room temperature 15-30C (59-86F)
Inactive Ingredients
Bentonite Magma, Calcium Hydroxide, Glycerin, and Purified Water.
Distributed by: AmrisourceBergen
1300 Morris Drive, Chesterbrooke, PA 19807
Principal Display Panel
Good Neighbor Pharmacy NDC 24385-413-96
Calamine Topical Suspension USP
Skin Protectant
6 FL OZS (177 mL)


% include /partials/head %>
This sample app is meant as a starting point and example for your NodeJS QuickBooks Online integrations.


Word Balloons: Celebrate local comic stores on Saturday
by Matthew PriceFrom zombies to dinosaurs to professional wrestlers, Local Comic Shop Day offers a wide variety of offbeat characters as comic-book stores kick off the holiday shopping season.
This year, more than 600 stores worldwide have signed up to be part of Local Comic Shop Day, set for Saturday.
The 18 LCSD-specific items go on sale in participating local stores Saturday, and are not to be sold online before Monday.
Local Comic Shop Day is a five-year old event conceived and implemented by ComicsPRO comic book specialty retailers to call attention to locally owned independent comic-book stores.
One of the items appearing at this year’s Local Comic Shop Day is “The Walking Dead: The Alien,” the first print comic featuring “The Walking Dead” since the series ended unexpectedly earlier this year. The comic, originally a digital exclusive, is by the creative team of writer Brian K. Vaughan and artist Marcos Martin.
“The Walking Dead” co-creator, Robert Kirkman, is featured in another Local Comic Shop Day comic, “Super Dinosaur #1 Special Edition.” “Super Dinosaur,” which first appeared as an Image comic, is now an animated series on Amazon Prime.
Making its debut nationwide on Local Comic Shop Day is “Over the Ropes” #1. The comic, from Mad Cave, is set in a fictionalized version of the world of 1990s wrestling. Young high-flyer Jason Lynn goes off-script in a match to win the world title, then becomes the talk of the Southern territory as the face-painted wrestler called Phoenix.
“On the surface, Over the Ropes may seem like another Saturday morning wrestling show, but in reality, it’s about the underdog in all of us fighting and clawing for one moment in the spotlight,” writer Jay Sandlin said at madcavestudios.com. “The characters grew out of my desire to write the kind of wrestling story I gravitated to the most; where the predetermined nature of in-ring action and backstage drama blends with shades of reality until the two are indistinguishable.”
In addition, comics fans will find longtime favorites, including Carnage, Doctor Who, and the Crow among this year’s offerings.
For more information about the upcoming event, go to localcomicshopday.com.
Matthew Price<EMAIL_ADDRESS>has written about the comics industry for more than two decades. He is the co-owner of Speeding Bullet Comics in Norman. Price serves on the national Local Comic Shop Day committee for ComicsPRO.
At a glance
Items available for Local Comic Shop Day. Some items may not be available at all locations.
• LCSD 2019 THE WALKING DEAD: THE ALIEN
• LCSD 2019 ABSOLUTE CARNAGE #5 (OF 5) VIRGIN VARIANT
• LCSD 2019 ABSOLUTE CARNAGE #5 (OF 5) LCSD ARTIST VARIANT
• LCSD 2019 DCEASED HC – JOKER COVER
• LCSD 2019 DOCTOR WHO 13TH HOLIDAY SPECIAL #1
• LCSD 2019 DOCTOR WHO 13TH HOLIDAY SPECIAL #2
• LCSD 2019 HAZEL & CHA CHA SAVE CHRISTMAS (UMBRELLA ACADEMY)
• LCSD 2019 OVER THE ROPES #1 (OF 5)
• LCSD 2019 INVADER ZIM TREASURY EDITION
• LCSD 2019 KILLADELPHIA #1
• LCSD 2019 LEGION OF SUPER HEROES #1
• LCSD 2019 NEW MUTANTS #1 ARTIST VARIANT
• LCSD 2019 MMPR SHATTERED GRID BLIND BOX
• LCSD 2019 MMPR YEAR ONE & TWO HC SET
• LCSD 2019 CROW HARK THE HERALD #1 SEELEY COVER
• LCSD 2019 CATALYST PRIME SEVEN DAYS #1 (OF 7)
• LCSD 2019 THESE SAVAGE SHORES TP VOL 01 GOLD EDITION
• LCSD 2019 SUPER DINOSAUR #1 SPECIAL EDITION
Related Photos


File List
Search:
- action.coffee
- api.coffee
- documentation_generator.coffee
- impl
- actions
- create.coffee impl/actions
- delete.coffee impl/actions
- list.coffee impl/actions
- read.coffee impl/actions
- update.coffee impl/actions
- crudl_actions.coffee impl
- default_implementation.coffee impl
- jsend_responder.coffee impl
- implementation.coffee
- resource.coffee
- resource_inflector.coffee
- responder.coffee
- route.coffee


About Me
Hello, my name is Malcolm Munroe. I am currently a computer science teacher at Coral Gables Senior High School; with ambitions of becoming a software developer in the near future. I also plan on earning a Master's Degree in computer science.
Furthermore, I am in the process of earning a UM Coding Bootcamp Certificate. The UM Coding Bootcamp is a rigorous 6 month on campus program which helps graduates transition to a career in the tech industry. I've had an interest in technology ever since my early childhood. I am beyond excited to start my career in tech in the near future. Be sure to check out my portfolio for some of my best projects.


Songs
These are songs that I like to listen to.
Rock
- Layla - Eric Clapton
- Kashmere - Led Zeppelin
- Don't Fear the Reaper - Blue Oyster Cult
- Cities On Flame With Rock and Roll- Blue Oyster Cult
- Beast of Burden - Rolling Stones
- Lo/Hi - The Black Keys
Indie
- Lover's Rock - TV Girls
- Robber - Weather Station
- Any Killers Song
Southern
- Sittin' On the Dock of the Bay - Glen Campbell Cover of Otis Redding
- Any Eagles song


Ebola reporting number cases time non-hospitalized estimates rates data deaths epidemic transmission SDB []. district rate unreported {border-style prevalence Sierra px;} reported #ffffff;} Health case community Western disease total variation Area West distribution districts burials cases, program estimate estimated used week burial capital data, dynamics given mortality weekly < Fig However, Leone. Red access outside posterior px; underreporting using {font-family Dis. Disease International Medicine Sciences Urban all-cause buried conducted district. estimating font-size positive recent reproduction review space temporal Department Estimates Infect Leone Population States United World credible double; fluctuations important mean particularly reproductive series significant significantly size standard time, variable virus (Fig Africa Available: CFR Cross Epidemiology Infectious border-color border-width collab: corrected data. days deaths, different epidemic. hospital incidence increased infectious laboratory observed outbreak program, rates, rates. relative risk solid; swab values varied {font-style {font-weight America[], Bombali Ebola. National New Public Safe Transmission Trop University, [Internet]. [], affect analyses assumed background bold contact control courier; death deviation did district, divided em; enclose epidemic, function generation hospitalized including increase initial interval method models numbers parameter population probable pt;} represent response result, results sample spatiotemporal spread taken tested time-varying uncorrected understanding


ResponseObject
class ResponseObject
An object representing the result of an intersection.
Summary
Properties from ResponseObject
| Renderable |
|
| boolean |
|
| Renderable |
|
| boolean |
|
| number |
|
| number |
|
| number |
|
| Vector2d |
|
| Vector2d |
|
Methods from ResponseObject
| object |
|
Public Properties
indexShapeA: number
number
The index of the colliding shape for the object a body
indexShapeB: number
number
The index of the colliding shape for the object b body
overlap: number
number
Magnitude of the overlap on the shortest colliding axis
overlapV: Vector2d
Vector2d
The overlap vector (i.e. overlapN.scale(overlap, overlap)
). If this vector is subtracted from the position of a, a and b will no longer be colliding
Public Methods
clear() → {object}
Set some values of the response back to their defaults.
Call this between tests if you are going to reuse a single
Response object for multiple intersection tests
(recommended as it will avoid allocating extra memory)
| Type | Description |
|---|---|
| object |
this object for chaining |


Harry Potter’s childhood home is now an Airbnb
by The Spaces TeamBefore he was forced to live under the stairs of his Aunt and Uncle’s home or whisked away to Hogwarts, Harry Potter lived in Godric’s Hollow – and the real-life version of his childhood home is available to rent as an Airbnb in England. The Tudor-style B&B is in the medieval town of Lavenham in the West Country, known for its heritage-listed structures.
De Vere House – as the Grade-I listed 14th-century countryside property is called – is one of the most photographed houses in the UK and is a mecca for Potter-fans. It includes a reception hall, drawing room, dining room and three double bedrooms. Guests can check-in to its guest wing from £120 per night, which houses two en-suite bedroom suites with four-poster beds. The wing has its own private entrance and a full breakfast served in the dining room, is included in the price.
Those expecting a plethora of Harry Potter paraphernalia will be disappointed, however, as the house is outfitted in a traditional style. But perhaps that’s a more authentic experience for devotees of the films and books.
Read next: You can now spend the night with the Royal Family at Jaipur’s City Palace


WATCH LIVE: Trump holds rally in Kentucky
by Mike BrestPresident Trump is holding a "Make America Great Again" rally in Lexington, Kentucky, at 7 p.m. EST to stump for Republican Gov. Matt Bevin ahead of the state's gubernatorial election on Tuesday.
This is one of the first rallies the president has hosted since the House of Representatives voted in favor of an impeachment investigation last week.


{% extends 'base.html' %} {% block title %} Statistics {% endblock title %} {% load static %} {% block content %}
Total number of categories.
Click for a table and chart of all Categories
Total number of object types.
Click for a table and chart of all
Types
Total number of Pandas Commands.
Click for a table and chart of
combined Category and Type
| Category | Count |
|---|---|
| {{ rec.category__category}} | {{ rec.count }} |
| Type | Count |
|---|---|
| {{ rec.appliesto__appliesto}} | {{ rec.count }} |
| Category | Type | Count |
|---|---|---|
| {{ rec.0 }} | {{ rec.1 }} | {{ rec.2 }} |


Publish or perish 'Henry Fool' a charming epic about literary pretentions You're not alone if you think the title of Hal Hartley's absorbing new film `Henry Fool' sounds vaguely Shakespearean. It is, in fact, a title that fits this raggedy, profane movie quite well, considering that Hartley's themes here are ambition, vanity, morality and artistic vision. OK, Shakespeare it ain't. Still, Hartley -- the comic miniaturist who's charmed thousands ... uh, hundreds with unorthodox, sometimes kinky little dramas like `The Unbelievable Truth' and `Amateur' -- has created a scruffy, immensely likable mini-allegory that should become his most popular work. For the first time, Hartley has created a film that doesn't feel like a sardonically diverting daydream. This one has charm and substance. Frustrated writers and unrecognized artists are likely to find a kindred spirit in one of the two protagonists: a deadpan, withdrawn garbage man named Simon Grim (James Urbaniak) and a chain-smoking, greasy-haired mooch named Henry Fool (Thomas Jay Ryan). As his surname suggests, young and tormented Simon leads a miserable kind of life, living with his not-all-there mother and his haggard, sex-mad sister Fay (indy film darling Parker Posey). Into this desperate household walks Henry, a disheveled stranger, to rent the basement apartment. Henry is a gabby Charles Bukowski wannabe who carries with him a grandiose unpublished memoir he darkly calls his `confession,' a literary landmark struggling to be born. With Simon as his silent audience, Henry indulges in wild-eyed paranoia and delusions of artistic importance. He uses a kind of reverse logic to state his case: Since real artists are despised and isolated, then the despised and isolated, a demographic in which both men count themselves, are the world's artists and visionaries. This inspires Simon to pick up the pen and begin writing his own opus. The result is an epic poem that causes a visible reaction from anyone who reads it. It becomes something of a sensation and, after a curt dismissal from a vainglorious publisher, eventually propells Simon to the status of a young lion of American poetry. Curiously, in one of Hartley's more audacious artistic choices, we the audience don't get even a taste of what is contained in Simon's poem or Henry's memoir. We know these works only by the reactions they cause in other people. In this way, we get to judge these `artists' by other means than their creations. Both lead actors are new to film and their freshness is intoxicating. As Simon, James Urbaniak adopts a kind of stoic hostility to the world, looking like a down-on-his-luck ex-member of Devo. It's a treat to see him wrestle with the unfamiliar emotion of gratitude toward Henry, a reprobate who clearly resents Simon's success. Thomas Jay Ryan has the tastier role as the volcanic Henry and he clearly dominates the movie from his first entrance.  As the film progresses and Henry has to deal with Simon's success, envy gives him an edge of unpredictability. The fact that we learn Henry served time for having sex with a 13-year-old girl doesn't take an edge off his charisma. This super-charged relationship between these two losers, with the complicating factor of Simon's sister Fay who literally brings Henry into the family, moves the film forward whenever it threatens to sag. `Henry Fool' is a comic epic about the power of the written word that doesn't bother to show us a single written word. In the end, this film is more about writers than about writing, about the fantasy of literary success more than the reality of it. In that way, it's the unintentional biography of literary pretenders everywhere from Shakespeare on down.
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


{{- $authors := .Site.Params.authors }} {{- $pageAuthor := .Params.author }} {{- with $authors }} {{- $author := index (where . "name" $pageAuthor) 0 }} {{- with $author }}
{{ .bio }}


The equilibrium reaction proceeds to the equiribrium state in which the rate of the forward reaction equals the rate of the backward reaction.
- If an A-ball is drwan, it is changed into a B-ball (which is then remixed)
- If a B-ball is drawn, it is changed into an A-ball (which is then remixed)


I am a Web Developer who has recently transitioned from
a background in hospitality management.
I graduated as a Web Developer from EDA Enspiral
Dev-Academy where I learnt technologies such as HTML5, CSS3, SQL,
JavaScript, React.js, Node.js, Git and GitHub.
People who I have worked with will describe me as a team player
who is absolutely reliable and fun to work with.
They would also say that I work hard and learn fast.
I thrive working under pressure. I enjoy working with other people
and being creative by coming up with new ideas and approaches.
I am also able to speak Spanish (mother tongue) and English.
For the final project, my group and I created a learning Te Reo app, "Korero Mai". This app is intended to be used as a tool to help children ages 5 to 6 get familiar with Te Reo. It focuses on learning pronunciation and simple words through two main types of activities.
Development
Markup & Style
Looks great on any device
React & Angular 2
Version Control System
Rodrigo Delgado Mortimer Terrace, Brooklyn, Wellington 6021. New Zealand
Follow Me


[gecode-users] Re : Maximal consistent assignment
Mikael Zayenz Lagerkvist
zayenz at gmail.com
Tue Oct 21 11:00:02 CEST 2008
On Tue, Oct 21, 2008 at 10:11 AM, <benoitlaurent at neuf.fr> wrote:
> 1) I used the number of "unassigned variables" to constrain the search and
> to speed up
> the branch-and-bound process. If I do not use dummy values any more, I won't
> be able to do so.
I'm not sure how this is achieved: if you require at least x variables
assigned, then you won't know that you can't assign more variables
until an assignment fails, aborting the search anyway. As I don't have
any knowledge of what to use (maximal) partial assignments for, I'm
not really the person discuss this. Anyway, on to the next part...
> 2) As I said before, I am not an expert with GECODE. How can I record
> partial assignments ?
The definition of a partial assignment is just the set of assigned
variables as long as propagation does not detect failure. Thus
whenever a new node is explored and it is not failed, you have a
larger set. At his point in the search you should record it. Places to
insert your code could be in the search-procedure for example, or you
could write your own dfs-exploration. Gecode does not expose any APIs
for reacting to events during the search-process (see [1]).
You said you are searching for a maximal partial assignment, that is
the set of assignments in a node where assignment of any other
variable to any other value gives failure. You can get this
indirectly, for example, by having a standard search and testing the
nodes as you explore them. The test is if the node is directly above
only failures given that you try all possible assignment of variables
to values. Not sure about the efficiency of this method though.
Cheers,
Mikael
[1] http://article.gmane.org/gmane.comp.lib.gecode.user/1701
--
Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/
More information about the gecode-users
mailing list


Using Pegaesys Help:
Press F1 for context help for the current mode.
Blue: Topic divider
Black:Help Contents
Red: Hot Key - Do this
Green:Help- Pick the word
Comments and tips
The double underlined topics are help screens.
The dot underlined topics are pop-up helps.


Setback for BJP as India's financial capital placed under direct rule
by AFPMUMBAI: India’s financial capital plunged into political uncertainty on Tuesday after the president imposed direct rule on Maharashtra state after weeks of deadlock over who would form its government following fiercely fought elections.
India has been battling an economic slowdown and the political stalemate is a setback for Mumbai, which is home to business tycoons, the stockmarket and the glitzy Bollywood film industry.
The move is also a blow for Prime Minister Narendra Modi’s Hindu-nationalist Bharatiya Janata Party (BJP), which was expected to remain in control of India’s richest state after winning the most seats at last month’s polls.
“President Ram Nath Kovind signs proclamation imposing President’s rule in Maharashtra,” the Press Trust of India reported, citing officials.
The state was ruled by the BJP and its right-wing regional ally Shiv Sena ahead of the elections.
But the two parties failed to agree on a power-sharing deal after the election results showed the coalition had won a comfortable majority for a second consecutive term.
Shiv Sena quit the coalition on Monday, hoping to convince ideological rivals the centre-left Indian National Congress and the Nationalist Congress Party to form a government instead.
Under India’s constitution, New Delhi can take direct control of a state in the absence of a local government and after obtaining consent from the president.
The president’s direct rule can last up to six months, but experts said fresh elections are likely to be called within a few weeks to solve the political quagmire, unless one of the parties is able to cobble together a coalition.


AdminPanel Grid Template - 3 Column
Grid Template HTML

Panel 1

Panel Content...

Panel 2

Panel Content...

Panel 3

Panel Content...

Panel 4

Panel Content...

Panel 5

Panel Content...

Panel 6

Panel Content...

Grid Template Javascript
// Init AdminPanels Plugin on ".admin-panels" container
$('.admin-panels').adminpanel({
grid: '.admin-grid',
draggable: true,
// On AdminPanel Init complete we fade in the content. Optional
onFinish: function() {
$('.admin-panels').addClass('animated fadeIn').removeClass('fade-onLoad');
},
// We trigger a window resize after a panel has been modified. This helps catch
// any plugins which may need to update after the panel was changed. Optional
onSave: function() {
$(window).trigger('resize');
}
});
HTML and Panel Requirements
Additional Resources Required:
AdminPanels requires several additional resources to be included on the page.
Required Stylesheet
<link href="assets/admin-tools/admin-plugins/admin-panels/adminpanels.css" type="text/css">
Note: Stylesheet should be included after core theme.css stylesheet.
Required Scripts
<link href="assets/admin-tools/admin-plugins/admin-panels/adminpanels.js">
- Core plugin script
<link href="assets/admin-tools/admin-plugins/admin-panels/json2.js.js">
- Extends JSON functionality
<link href="assets/admin-tools/admin-plugins/admin-panels/jquery.ui.touch-punch.min.js.js" >
- Improves touch support
Note: Scripts should be included after core libraries. jQuery, Bootstrap, Admin Theme Scripts, etc.
Grid Requirements:
The grid must be wrapped in a container with the class .admin-panels
The grid must always begin with a .row
Rows must only contain columns .col-md-4 .col-md-6 etc
. If fullwidth content is desired use .col-md-12
ALL columns must contain the class .admin-grid
Panels should only be placed inside of Columns
ALL Panels must contain a unique, unchanging ID class="panel" id="p1"
ALL Panels must contain a panel-heading. .hidden
can be used if you wish to hide the heading


We're sorry but frontend doesn't work at all without JavaScript enabled. Please enable it to continue.


Warning: this demo won't work in all browsers due to patchy support for processing audio from MediaElements
var video = document.querySelector('video'); var sound = sono.createSound(video); video.play();


Making the Most of Support - Providing Code
Each day the Support Engineers of Appcelerator answer dozens of your questions covering every possible topic for all of the supported platforms. We do our best to respond to your support tickets in the most timely manner possible, and there are a few things that can really help speed that process along. The most important one, which also seems to be the most often overlooked, is providing useful sample code. For the majority of tickets that are submitted without code we'll usually ask for a sample before we can move forward; it's not because we are trying to pass the work on to you, but because everyone's coding style and architectural patterns are different, and these variations can often manifest bugs in different ways. To ensure our first response is helpful and not a request for sample code, please follow these steps:
-
Identify the problem area in your code
-
Create a new sample application
-
Copy the problem code from your main application into your new sample application
-
Wittle down the code as much as possible, leaving few options for where the true problem lies; test the code, and repeat these step as much as possible
-
Attach the sample code to your application, and be specific when discussing it
-
If the code is now constrained to one file (or can be merged into one file), paste the code in-line on your ticket
-
If the sample requires multiple files, upload a ZIP of your /Resources/ folder and attach it to the ticket
-
Please be sure to follow Step #4, as this one is the most helpful in minimizing our response time. Trying to reverse-engineer your application while flipping through dozens of scripts is incredibly time-consuming.
It's also incredibly helpful to us if we can simply drop your code into the app.js file of a new project, so please, include the basic application structure, such as a main window.


---
layout: post
title: Know who you were in your previous Birth
date: 2014-07-16 17:43:00.000000000 +05:30
type: post
published: true
status: publish
categories: []
tags: []
meta:
blogger_blog: www.technoruler.com
blogger_author: VISWAPRASATH KS
blogger_cb097c283b9bbfde97b4822e7250157d_permalink: '543805973926598772'
author:
login: viswaprasath
email<EMAIL_ADDRESS>display_name: Vitchu
first_name: ''
last_name: ''
---
Everyone has lot of things in their mind which are not answered till now. The very important thing which many will be having is who they were in their previous birth. It has been very difficult to find who they were in their previous birth. Many scientist and astorologist tried to find the solution for this question. Many were not able to find it. But now it is possible to find who we were with the help of the technology we have. When it comes to hunt(search) then our best companion will be World best search engine
+Google and no one can beat it.
The result which you get may be similar to the character which you have now. So don't get shocked to know it.
Steps:
- Goto www.Google.com
- Type the following Died [Your date of birth and the year] example died [30th November 1992]
- The results will be appearing.
- The first result which comes will be a Wikipedia Document who you were in the last year.
Share with your friends and family member and give a shocking result to them. Have fun


W3Cx: HTML5.2x HTML5 Apps and Games - Week 1: Advanced HTML5 Multimedia
Not implemented (yet)
Play Stop Vol - Vol + Mute Subtitles chapters transcript


Please enter username and password for CloudStorage use.
Design Taken From Bootsnipp
https://bootsnipp.com/snippets/featured/login-form


import 'dart:async';
main() async {
await for (String msg in printNumbersDownAsync(5)) {
print(msg);
}
}
Stream printNumbersDownAsync(int n) async* {
int k = n;
while (k >= 0) {
yield await loadMessageForNumber(k--);
}
}
Future loadMessageForNumber(int i) async {
await new Future.delayed(new Duration(milliseconds: 50));
if (i % 2 == 0) {
return '$i is even';
} else {
return '$i is odd';
}
}
$ dart async_star.dart
5 is odd
4 is even
3 is odd
2 is even
1 is odd
0 is even


The lex tool uses a regular grammar to describe the language description and break it into tokens. Irrelevant input, such as comments or blanks, is ignored and produces no tokens.
The yacc tool parses the tokens with a context free grammar using a LALR(1) algorithm. If the input file can be reduced into the grammar target symbol the input is correct according to the grammar, otherwise an error is generated.
To provide a more useful output to the parsing procedure than a boolean result, an abstract syntax tree (AST) can be constructed. The AST is an in memory representation of the input that can be used to generate machine code.
Modern instruction selection tools associate AST chunks according to a target processor instruction description. Bottom-Up Rewrite Grammars (burg) tools provide optimal instruction selection by perform a double-pass on an AST.
Both packages rely on the same principle: you define a set of predefined variable values and a set of routines. The relevant routines must all begin with the same prefix, t_ for lex, and the packages scan the given module to detect them. Each of these routines must provide a document string (or docstring) containing the grammar expression the routine processes. Unlike lex or yacc where tokens are integer values, in ply tokens are strings.
In order to illustrate the complete process, a trivial programming language is used. The language provides declarations of global variables bound to character string or integer literals. Only the integer arithmetic addition expression is provided. The values of both types an be printed by a variable argument print statement. For example:
x = 12; y = 45; s = " = "; { print "x", s, x; print "y", s, y; print "x+y", s, x+y; print "x+y+7", s, x+y+7; print "dozen = ", 5+7; }
reserved = { 'print' : 'PRINT', } tokens = [ 'ID', 'STR', 'INT' ] + list(reserved.values()) literals = "{}+=;,"The dictionary reserved defines as keys all the language reserved keyword and provides as the respective values the token identifier. The tokens list defines all tokens, including the reserved keyword. As in yacc, single character tokens, such as separators or terminators, can be defined in a literals string.
Tokens that require non-trivial regular expression descriptions, or require special processing, must be defined in b_ prefixed routines. The ID, STR and INT are such tokens. A t_ID routine must be provided for the ID token:
def t_ID(t): r'[A-Za-z][A-Za-z0-9_]*' t.type = reserved.get(t.value,'ID') return t def t_STR(t): r'\"[^\"]*\"' return t def t_INT(t): r'\d+' t.value = int(t.value) return tthe docstring defines an identifier as letter followed by zero or more letters or digits (or underscore). The return value, the token type, is ID if the argument value is not a reserved keyword, or the dictionary value otherwise. The t_STR returns the literal string as is, a any non inverted comma within inverted commas, and t_INT converts a string of one or more decimal digits into an integer.
Regular expressions that produce no tokens must also be provided as rotines:
def t_COMMENT(t): r'\/\/.*' pass # No return value. Token discarded # Define a rule so we can track line numbers def t_newline(t): r'\n+' t.lexer.lineno += len(t.value) # A string containing ignored characters (spaces and tabs) t_ignore = ' \t'Finnally, an error routine handles the reporting of lexical errors:
def t_error(t): print("line", t.lineno, ": illegal character '%s'" % t.value[0]) t.lexer.skip(1)
precedence = [('left', '+', '-'), ('left', '*', '/', '%')]the current example language, however, only uses the left associative aditive operator:
precedence = [('left', '+')]A tokens variable must also be defined, unless the tokens variable already defined in the scanner is used. The variable describes all terminal symbols in the parser grammar.
As with yacc, the grammar is a set of rules and associated code that is executed when the rule is matched. In a ply based grammar description each rule action is defined with a p_ prefixed function and an associated grammar rule as a docstring.
The first rule, the one that produces the target non-terminal symbol
file, is defined as declarations followed by brace delimited
instructions:
In order to represent "zero or more declarations" a left recursion is used
in conjuntion with an empty rule.
The empty rule build an AST NIL labeled leaf node.
The recursion uses an AST with two branches, one for the repetition and
another for the actual declaration, labeled DECLS:
The pyburg.postfix package provides code generation macros for
intel 32-bit and 64-bit architectures, as well as
arm 32-bit architecture.
In the 32-bit intel architecture postfix uses most
registers, since only 7 are available and each one has a specific usage
as in a RISC architecture.
postfix code generation for other architectures uses only a small
register subset.
The postfix macros are dictionaries, one for each architecture and
assembler format:
def p_file_1(p):
'''file : decls '{' instrs '}' '''
p[0] = BinNode('PROG', p[1], p[3])
The AST root node, labeled PROG, has two branches (declarations and
instructions), the braces are omited.
The rules are identified by is position, as in yacc ($1 for
the first symbol in the right hand side), but are represented in the list
argument.
The left hand side non-terminal is p[0] ($$), since the
function argument was declared as p.
def p_decls_1(p):
'''decls : '''
p[0] = NilNode('NIL')
def p_decls_2(p):
'''decls : decls decl'''
p[0] = BinNode('DECLS', p[1], p[2])
The declaration of a string variable is a bit more complex.
The AST for this rule must include two strings, the variable name and its
initialized value. Since branches must be of the Tree type, the
strings must first be converted into leaf string nodes (StrNode).
Then an attribute, named info, is associated with the AST node in
order to provide language type information, a string (STR) in this
case.
The setattr function dynamically inserts an attribute into the AST
node object.
Finally, the declared valiable (ID) is inserted into a symbol table
(tabid).
The symbol table is a python dictionary associating the declared variable
name with its type (STR):
def p_decl_1(p):
'''decl : ID '=' STR ';' '''
p[0] = BinNode('SET', StrNode('ID', p[1]), StrNode('STR', p[3]))
setattr(p[0].left(), 'info', 'STR')
tabid[p[1]] = 'STR'
The remaining rules follow the same principle.
The add expression must verify the language type of its arguments, since
only integers can be added.
To perform such semantic checking, the info attribute is tested,
previously inserted into the AST node with setattr.
The result of an add expression is always an integer, so this node is
assigned a language type INT:
def p_expr_3(p):
'''expr : expr '+' expr'''
p[0] = BinNode('ADD', p[1], p[3])
if p[1].info == 'STR' or p[3].info == 'STR':
raise RuntimeError("only integers can be added")
setattr(p[0], 'info', 'INT')
As with the scanner, an error routine can be supplied to report syntax errors
in grammar processing during parsing:
def p_error(p):
print("line", p.lineno, ": syntax error at or before", p.type, "=", p.value)
The parsing result is an error, on a syntactic (p_error) or semantic
( raise RuntimeError) error, or a valid AST tree.
The tree should contain all relevant information, including type information,
required by code generation.
Before the code is generated, the tree can be printed in order to check wether
code can be generated with the information contained in the tree nodes.
6 Postfix code generation
Register optimization can result in significant performance gains and the
number of available processor registers has been increasing over the years.
However, a simple code generation procedure can use only two or three registers
and saving most data on the stack. This removes register alocation from the
code generation procedure and enables code selection to produce final code.
The resulting code is almost as performant as when using a large register set,
since most of the stack will be stored in primary cache, except for vector
or structure indexing where a significant performance degradation is expected.
For a dynamic selection of the code generation architecture, the
pyburg.postfix.pf dictionary can be used.
pf = { 'debug': debug, 'num': num, 'arm': arm, 'amd64': amd64,
'i386gas': i386gas, 'i386': i386, 'x64': x64 }
The dictionary keys correspond to the postfix target instructions
that are converted into machine code instructions strings dictionary values.
In order to add two integers, for instance 12+34:
from pyburg.postfix import arm
print(arm['IMM'] % 12, arm['IMM'] % 34, arm['ADD'])
the result is stored on the top of the stack and can be printed by calling
the appropriate routine:
print(arm['CALL'] % 'printi', arm['EXTRN'] % 'printi')
The postfix operation, or dictionary keys, are explained in the
postfix reference.
Once target machine instructions have been selected, registers can be assigned to each instruction. However, if no registers are available at a certain point aditional instructions must be inserted.
Although the pyburg code generation tool can be used to generate instruction for subsequent register alocation, in this tutorial postfix is used. Therefore final machine code is generated and register alocation is necessary.
Using the same principle as ply, pyburg grammars use b_ prefixed routines for rule action code and the associated docstring for rule description.
Additional information on the pyburg specification and code slection grammar rules is available at the pyburg reference.
The goal and terminals variables must be defined. The goal is set to the grammar start symbol and the terminals variable must contain all AST node labels used.
goal = 'prog' terminals = ('ADD', 'SET', 'PROG', 'DECLS', 'NIL', 'INSTRS', 'EXPR') + tuple(tokens)The target language is defined as a set of integer or string variable declarations followed by a set of print instructions. Each print instruction accepts a variable number of string or integer expressions. The string expressions are only string literals or string variables. The integer expressions can use integer literals or variables that can be added.
The target (goal) rule corresponds to AST root node. The AST root node, labeled PROG (see parser p_file_1 rule), has two branches: the left branch describes de declarations, while the right node describes de instructions. If both branches were successfuly selected the rule reduces to a prog non-terminal and the code is generated. The rule has a cost 4 since four postfix instructions are generated (IMM POP LEAVE RET). The instructions perform a function return on the target language, using the immediate 0 as a return value.
def b_prog_1(n,pf,out): ''' prog : PROG(decls,instrs) 4 ''' print((pf['IMM']+pf['POP']+pf['LEAVE']+pf['RET']) % 0, file=out)The routine arguments are the tree node n, the postfix code generation dictionary, and the output file out.
The startup code for the target language function _main is generated by the first reduced rule, that is the empty instructions rule since instructions are left recursive in the parsing grammar. The cost is 1 since only the START postfix operation produces executable code. All other operations are assembler declarations. The START operation builds a function frame to contain local values and is later removed by the LEAVE operation.
def b_instrs_1(n,pf,out): ''' instrs : NIL 1 ''' print((pf['TEXT']+pf['ALIGN']+pf['GLOBL']+pf['LABEL']+pf['START']) % ("_main", pf['FUNC'], "_main"), file=out)An integer literal expression pushes an immediate value to the stack with a IMM operation:
def b_expr_2(n,pf,out): ''' expr : INT 1 ''' print(pf['IMM'] % n.value(), file=out)The adition pops two expressions (expr) from the stack and pushes the result back:
def b_expr_3(n,pf,out): ''' expr : ADD(expr,expr) 1 ''' print(pf['ADD'], file=out)All the code can be generated by selecting a single AST node label on each rule. This approaches reduces the code selection to visitor pattern. However, an instruction selection tool can compare code generation alternatives and select the lowest cost for a given tree. If the addition operation is performed on two literal, for example, the adition can be performed on compile time, that is a constant folding optimization. The cost of adding two integers, using the two rules descibed above, is 3: 1 for each literal (b_expr_2) and 1 for the ADD instruction (b_expr_3). The rule pattern ADD(INT,INT) can be selected when the node labeled ADD contains two INT labeled branches. With a cost of 1, since only an IMM instruction is generated, the rule is selected:
def b_expr_4(n,pf,out): ''' expr : ADD(INT,INT) 1 ''' print(pf['IMM'] % (n.left().value() + n.right().value()), file=out)note that if one of the ADD branches is an ID branch, the pattern is not matched and an the ADD instruction (b_expr_3) must be generated.
Literal strings must be stored in a read-only data segment and a pointer to the first byte loaded into the stack: a char* in the C programming language. Each new string is assigned a new label and a global label counter (lbl) is used to generate L_ prefixed label. Thus a string literal (STR) produces a string expression (str) by pushing its pointer to the stack:
def b_str_2(n,pf,out): ''' str : STR 0 ''' global lbl lbl += 1 print((pf['RODATA']+pf['ALIGN']+pf['LABEL']+pf['STR']+pf['TEXT']+pf['ADDR']) % ( "_L"+str(lbl), n.text()[1:-1], "_L"+str(lbl)), file=out)In the target language declaration section string and integer variables can be declared and initialized. When this variables are accessed in the instruction section, the generated code depends on the variables type: a pointer is pushed to the stack for string while for an integer variable its value is loaded. The selection tool uses the same cost based for all rules, but in this case the node label is ID in both cases (an alternative is to used different labels for each data type). A variables cost procedure can be adopted. The selection tool invoques a programmer given routine to determine the cost of a given node. The programmer supplied routine receive the node and returns a cost. For an ID node, the node type or a symbol table can be looked-up. If the symbol is of the required type, a low cost is returned. Otherwise a high cost is returned forcing the selection tool to look for other code selection alternatives.
def b_str_1(n,pf,out): ''' str : ID isSTR ''' print(pf['ADDR'] % n.text(), file=out) def b_expr_1(n,pf,out): ''' expr : ID isINT ''' print(pf['ADDRV'] % n.text(), file=out)Based on node type information previously stored by the parser, the variable cost routines return a cost of 1 when the identifier is of the requested type and 1000 otherwise.
def isSTR(p): return 1 if p.info == 'STR' else 1000 def isINT(p): return 1 if p.info == 'INT' else 1000
with open(filename, 'r') as file: data = file.read()
tree = ply.yacc.yacc().parse(data, lexer=ply.lex.lex())
pyburg.run(tree, user=postfix.arm, output=sys.stdout)
In order to debug the scanner (lexical analysis tool) all tokens can be printed with:
with open(filename, 'r') as file: data = file.read() lexer = lex.lex(debug=True) lexer.input(data) for t in lexer: print(t)The debug mode of the parser (syntactic analysis tool) is also activated with debug=True argument for the parse routine above and print the AST.
The debug level of pyburg can be controlled by setting a value between 0 (zero) and 5 (five) to the pyburg.debug variable before invoquing the code generator.


We provide our clients the full range of agency services.
Webioweb provides you unlimited set of
website designing options
so that you can easily build your website with us.
Content Development Across All Channels Integrated,
Full-Service Production
Interactive Design & Development
Campaign ROI & Effectiveness Analysis
Business Intelligence Activation
Content Audience, & Market Testing
Audience Segmentation & Profile Development
Paid Search & SEO
Brand Strategy
Content Strategy
please contact us...


资源详情
{include file="media/_detail_1" /}
{include file="media/_detail_2" /}
{include file="media/_detail_3" /}
{include file="media/_detail_4" /}
{include file="media/_detail_5" /}
{include file="media/_detail_6" /}
{include file="media/_detail_7" /}
{include file="media/_detail_8" /}


Python content parser
Type (or just copy&paste) Python code in the box below to parse its contents.
The result will be a JSON object containing all the nodes in the given code. It is also
possible the make POST request directly to this address and give the code in POST parameters code
and mode.
The result will contain the leaf nodes of this ontology.
The ontology is based on the nodes available in Python's AST.
The following parsing modes are available:
- simple: Output contains all the lines and nodes that are present on that line
- complex: Output contains all the lines and nodes that are present on that line and if it is a block structure also the end line number is given
- hierarchical: Output contains all the nodes and their start and end line numbers as a hierarchical structure
- concepts: Output all the concepts (different AST nodes) that are present in the given code


.grey
.red
.blue
.green
.black
.yellow
.purple
.gblue
The multi button classes are .left, .middle and .right. With their usage being self evident.
The large buttons are acheived by simply adding the .large class.
By Joe Pettersson


PATCH ADAMS
*** (out of 4) - a good movie
Release Date: December 25, 1998 Starring: Robin Williams, Monica Potter, Daniel London, Philip Seymour Hoffman, Bob Gunton, Harve Presnell Directed by: Tom Shadyac Distributed by: Universal Pictures MPAA Rating: PG-13 (strong language, crude humor) URL: http://www.execpc.com/~kinnopio/reviews/1998/patch.htm
The long and illustrious career of Robin Williams, which has included both forgettable turns like MRS. DOUBTFIRE and FLUBBER, was punctuated with the actor's first Academy Award in 1998 for his role in GOOD WILL HUNTING. It was his first truly dramatic role since 1989's DEAD POETS SOCIETY, and critical remarks were unanimously positive. His next role, that of a deceased pediatrician in WHAT DREAMS MAY COME, was unfortunately lackluster. And so, after a six-year stint as a comedic actor, the proof on whether or not Williams can cut it in the dramatic league has come down to PATCH ADAMS.
Williams is the title character, Hunter "Patch" Adams, sporting scruffy facial hair that falls between the clean-shavenness of DREAMS and the grotesque hairiness of WILL HUNTING. We're introduced to Patch as he commits himself to a mental institution because of his suicidal tendancies. It's at the institution, however, that he discovers a latent talent for relating to people. He removes himself from the institution and enrolls at the University of Virginia's medical college, where he finds that medical doctrine is a calculating, impersonal trade. His attempts to inject humanity into the profession result in several bouts with expulsion, and the movie climaxes with Patch's appearance before the state medical board.
The characters are well-defined in an Oscar-worthy sense. Although the script does not perform well as a narrative -- there's little story to be told outside of Patch's skit-length experiences -- the script does go a long way toward building the relationships of characters. At medical school, Patch meets up with Truman Schiff (Daniel London), an outsider like himself who relishes Patch's zest for humanity. The two instantly become the best of friends, and it's easy to see why. Monica Potter plays Patch's love interest, a young woman who personifies the things that Patch hates about medical school. For some reason he's attracted to her, and although it never gets said, the audience understands from an intrinsic point of view. The script -- based on Hunter Adams' own story -- works well this way.
The rest of the cast, Bob Gunton as the villain professor in particular, is solid. Director Tom Shadyac (LIAR LIAR) leads us in and out of Patch's life in a sound, intentional manner; combined with Williams' presence on screen, the movie rarely becomes boring. PATCH ADAMS' lack of purpose is its major shortcoming, and for the first ninety minutes out of two hours, there's little feeling of continuity or the passage of time. Nevertheless, it's an emotionally moving picture, and PATCH ADAMS looks to be one of the more memorable of the holiday season. It succeeds at everything it tries, and only fails at the stuff it doesn't try in the first place. By and large there may be another Oscar nomination herein for Williams, but more importantly, it's entertainment for the entire family.
-- Craig Roush<EMAIL_ADDRESS>-- Kinnopio's Movie Reviews http://www.execpc.com/~kinnopio
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


This site is all about Restaurents in NYC.With more than 8 million people in New York City , you'd expect some great chow and some culinary diversity – and that's exactly what you get. Nosh in New York When it comes to food, New York brings a lot to the table. Manhattan alone seems to account for many American culinary art traditions, including pizza, hot dogs and bagels with lox. But beyond the city, iconic dishes abound. whether you're craving bar-style buffalo wings or fancy lobster Newberg, here are the iconic foods of the state of New York.The city manages to bring dishes from all over the world and make them its own.Here’s our rundown of New York's best fare – and, please, don't forget to tip your waiter.
| Restaurent Name | Menu | Map |
|---|---|---|
| GATO | Menu | MAP |
| Marc Forgione | Menu | MAP |
| le-bernardin | Menu | MAP |
| Red Rooster | Menu | MAP |
| Hard Rock Cafe | Menu | MAP |


Toggle navigation
chagers
Home
Blog
Projects
christine's blog
.technical blogs.
Timeboxing That Website
Computer Memory Basics
JavaScript, Ruby, and Documentation
Procs, Lambdas, Blocks, and a Cooking Robot
Such a Classy House, Ruby
The Enumerable Method:
cycle
Arrays & Hashes
CSS Positioning
Keeping Track of Changes in Git
.cultural blogs.
Method: Question?!
Conflict Can Help
Making Positivity Happen
Stereotype Threat
Who's the Driver?
Diversity in the Tech Industry
Thinking & Learning
Some Thoughts on Dev Bootcamp


This is a simple application for take notes of passwords, IDs, and PINs.
(C) 2011 Hiroshi Okada All Rights Reserved.
This program is distributed in the hope that it will be useful, but without any warranty.
Source code of this program is available here.


| < Day Day Up > |
1.5. About the Emacs DisplayWhen you enter Emacs, you see a large workspace near the top of the window where you do your editing. (See Figure 1-1.) Figure 1-1. Understanding the Emacs displayA cursor marks your position. The cursor is also called point, particularly among people who are more familiar with Emacs and in the online help system; therefore, it's useful to remember this term. You don't have to do anything special before you start typing. As long as you type alphanumeric characters and punctuation, Emacs inserts them into your buffer. The cursor indicates where Emacs inserts the new characters; it moves as you type. Unlike many editors (particularly vi), Emacs does not have separate modes for inserting text and giving commands. Try typing something right now, and you'll begin to see how easy Emacs is to use. (If you get stuck for any reason, just press C-g.) 1.5.1 The ToolbarThe toolbar is a new feature in Emacs 21. Its basic icons and their functions are listed in Table 1-3. Note that the toolbar is context sensitive; in some modes, such as the Info mode for reading the Emacs manual, the toolbar changes to provide browsing help. We'll discuss those icons when we cover the relevant modes.
If you don't like the toolbar, you can hide it using a menu option (Options Show/Hide Toolbar), and choosing Options Save Options. For more information, see Section 2.7 at the end of Chapter 2. 1.5.2 The MenusThe menu bar menu lists the options File, Edit, Options, Buffers, Tools, and Help; you can explore them to see what options are available. In addition to navigating the menus using the mouse, Emacs now offers pop-up menus. In the Emacs window, hold down Ctrl and click the right mouse button to pop up the Edit menu.[2]
You can access menus without a mouse using the keyboard. In this case, using keyboard commands is much more efficient than menus, but for completeness, we'll show you how to use the text-based menus. (If you prefer to use the mouse with Emacs but have access only to a text interface, see Chapter 13 to learn how to download and install a version of Emacs that runs graphically on Unix, Linux, Mac OS X, or Windows.) If your mouse does not work with the menus, press F10 or M-` (a back quote, the single open quotation mark, located above the Tab key in the upper-left corner of many keyboards) to access them.
You can select text-based menu options in three ways:
After you select a menu option, choices for that menu appear. Repeat the process until you find the option you're looking for. 1.5.3 The Mode LineJust above the bottom of the window (on the second-to-last line), Emacs prints a lot of information about what it's doing. This line is called the mode line. At the beginning of the mode line, you may see some information about the coding system that Emacs is using for the file; usually you'll see just --:, indicating that there is no unusual encoding scheme in place. Near the left edge of the mode line, you may see two asterisks (**). These asterisks indicate that you've modified whatever you're editing. If you haven't made any changes, the asterisks won't be there. Next, Emacs prints the name of the buffer you are editing (*scratch*). Following this, Emacs shows where you are in the buffer—your position relative to the rest of the file and what line you are on (L5 for line 5 in Figure 1-1). If you're at the beginning of the file, Emacs prints the word Top; if you're at the end, it prints Bot; if you're in the middle, it shows you a percentage (for example, 50% means you're looking at the midpoint); and if the entire file is visible, Emacs prints the word All. In parentheses following this is the editing mode or modes you are in, in this case Lisp Interaction is the major mode (no minor modes are active). The scrollbar on the side of the window also indicates your position in the file.[3]
You will often work with several buffers simultaneously. In this case, each buffer has its own mode line, and when you switch buffers, the mode line reflects the state of the current buffer. Don't worry about this for now; just remember that every buffer has a mode line to describe it. 1.5.4 The MinibufferBelow the mode line is the minibuffer. This is the area where Emacs echoes the commands you enter and where you specify filenames for Emacs to find, values for search and replace, and so on. It is also where Emacs displays error messages. If you find yourself stuck in the minibuffer, press C-g to get out again. |
| < Day Day Up > |


I don't know what has happened to the old MDA from the late 80s, but I miss it. I had the most wonderful experiences on this chemical. One hit, a capsule filled maybe a 1/4 of the way would keep me rushing (eyes shaking back and forth and rolling back in the head, teeth chattering, intense body waves of pleasure) for up to 24 hours. I felt absolute love for everyone and everything. We would go across the street from the dance club to a convenience store where we would buy single roses and then give them to people we had never met before and then sit and talk to them for hours. Making plans for the future together (MDA promises) The visuals were fantastic.
[Erowid Note: Driving while intoxicated or tripping is dangerous and irresponsible because it endangers other people. Don't do it!]
Once on a drive from Seattle to Coeur d'Alene, Idaho, with 3 other friends, we stopped at every rest area and took another capsule, totalling a gram each by the time we reached our destination. A club where I was to dj that night. When we arrived the building was breathing. In the car on the way there we had shared hallucinations, a suggestion would cause us all to see the same thing. One girl was wearing a sweater with elephants on it. The elephants trumpeted and raised their trunks. Curls of neon color would begin in the ear and travel all over the body. A cloud turned into a dragon and swooped down to engulf the car. I drove for awhile and would see people standing in the freeway, when I would hit them they would melt into the car. We had no difficulty diffentiating between reality and hallucinations. It was a marvellous dream state.
And then suddenly it just disappeared and was no longer available. The so-called MDA that became available and is still sometimes available is a joke, nothing at all like the old MDA. NOTHING. I wish I knew what has happened to it.
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.


--- title: Port management keywords: fastai sidebar: home_sidebar nb_path: "nbs/init.ipynb" ---
def test_random_ports():
#bind the socket at the start of the test
s30k = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s30k.bind(('', 30000))
s30k1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s30k1.bind(('', 30001))
with TESTCASE.assertRaises(OSError):
get_random_port_numbers(30000, 30002, 1)
port = get_random_port_numbers(30000, 30003, 1)
#the random is not inclusive of the "end" number
TESTCASE.assertEqual(port, [30002])
s30k.close()
s30k1.close()
test_random_ports()
The docker python bindings has a syntax for ports that looks like this
{container port: host port}
. We will maintain that syntax here for our port pairs so that we can pass it in directly.
def test_port_pairs():
#random.seed(42)
pp = generate_port_pairings([7688, 7999], min_port=5000, max_port=6000)
TESTCASE.assertEqual(len(pp), 2)
pp = generate_port_pairings([80, 8888, 423], min_port=5000, max_port=6000)
TESTCASE.assertEqual(len(pp), 3)
pp = generate_port_pairings([80], min_port=5000, max_port=6000)
TESTCASE.assertEqual(len(pp), 1)
test_port_pairs()
The docker interface gives very complete information about the ports. For example
{'7443/tcp': [{'HostIp': '<IP_ADDRESS>', 'HostPort': '7841'}]
. For our purposes, this is often too much. Give some syntactic sugar to easily access just the host or just the port number
We introduce NamedPorts
here to make finding the appropriate port easier. Here's the use case. Suppose you are using a database system that exposes 3 different ports: an http interface, an https interface, and the actual database connection. You would normally have to depend on the special port numbers to find the port you want. However if we name them, say, ['http', 'https', 'db']
then you know you always have to connect to the named port db
.
class NamedPorts:
pass
def set_port_name(container, container_port, name):
hostport = lookup_host_port(container, container_port)
try:
named_ports = container.port
except AttributeError:
named_ports = NamedPorts()
setattr(named_ports, name, hostport)
container.port = named_ports
return container
def test_lookup_host_port():
class FakeContainer:
def __init__(self, ports):
self.ports = ports
ports = {'7443/tcp': [{'HostIp': '<IP_ADDRESS>', 'HostPort': '7841'}],
'7473/tcp': None,
'7474/tcp': [{'HostIp': '<IP_ADDRESS>', 'HostPort': '7840'}],
'7687/tcp': [{'HostIp': '<IP_ADDRESS>', 'HostPort': '7839'}]}
fc = FakeContainer(ports)
TESTCASE.assertEqual(lookup_host_port(fc, 7443), 7841)
TESTCASE.assertEqual(lookup_host_port(fc, 7687), 7839)
test_lookup_host_port()
A general function that spins up any docker image as a container. It has the following properties.
Heres a design pattern of how you might want to package up specific containers.
def run_httpd(version='alpine', port=None, **kwargs):
image = "httpd:{}".format(version)
if port:
ports = {80: port}
else:
ports = [80]
additional_kwargs = {}
additional_kwargs.update(kwargs)
container = run_container(image, ports=ports,
block_until_port_available=80,
**additional_kwargs)
container = set_port_name(container, 80, 'http')
return container
def test_blocking_until():
c1 = run_httpd()
resp = block_for_startup(c1, 80)
TESTCASE.assertEqual(resp.status_code, 200)
c1.stop()
test_blocking_until()
def test_multiple_containers_colliding():
#multiple containers with exactly the same port mapping should fail
with TESTCASE.assertRaises(docker.errors.APIError):
c1 = run_httpd(port=8080)
c2 = run_httpd(port=8080)
c1.stop()
try:
#just in case made for some strange reason
c2.stop()
except UnboundLocalError:
pass
def test_run_multiple_containers():
#should succeed
c1 = run_httpd()
c2 = run_httpd()
#because they have different (random) ports
TESTCASE.assertNotEqual(c1.port.http, c2.port.http)
c1.stop()
c2.stop()
test_run_multiple_containers()
test_multiple_containers_colliding()
If you specify the container_name as an argument, docker will first look for containers with that name and return it to you. This will not spin up two different containers.
def test_retrieve_same_container():
c1 = run_httpd(container_name="unittest_alpine")
c2 = run_httpd(container_name="unittest_alpine")
TESTCASE.assertEqual(c1.id, c2.id)
c1.stop()
try:
c2.stop()
except docker.errors.NotFound:
pass
#I think there is a race condition where sometimes this fails
test_retrieve_same_container()
notebook2script(_nbpath)