Many languages, such as Kotlin, Go, JavaScript, Python, Rust, C#, C++ and others, already have coroutines support that makes the async/await pattern implementation possible. This feature is not yet supported in Swift, but this can be improved by a framework without the need to change the language.
Main features
- It is the first implementation of coroutines for Swift with iOS, macOS and Linux support.
- It includes futures and channels that supplement coroutines for more flexibility.
- It is completely lock-free and uses only atomic primitives for synchronizations.
Motivation
Asynchronous programming is usually associated with callbacks. It is quite convenient until there are too many of them and they start nesting.
Another problem of asynchronous programming is error handling, because Swift’s natural error handling mechanism cannot be used.
What about Rx and other such frameworks?
There are many other frameworks that make it easy to use asynchronous code, such as Combine, RxSwift, PromiseKit and so on. They use other approaches that have some drawbacks:
- Similar to callbacks, you also need to create chained calls, that’s why you can’t normally use loops, exception handling, etc.
- Usually you need to learn a complex new API with hundreds of methods.
- Instead of working with the actual data, you need to operate with some wrappers all the time.
- Chaining of errors can be really complicated to handle.
Async/await
The async/await pattern is an alternative that allows an asynchronous, non-blocking function to be structured in a way similar to an ordinary synchronous function.
It is already well-established in other programming languages and is an evolution in asynchronous programming. The implementation of this pattern is possible thanks to coroutines.
Let’s have a look at the example with coroutine inside of which await()
suspends it and resumes when the result is available without blocking the thread.
//executes coroutine on the main thread
DispatchQueue.main.startCoroutine {
//extension that returns CoFuture<(data: Data, response: URLResponse)>
let dataFuture = URLSession.shared.dataTaskFuture(for: imageURL)
//await CoFuture result that suspends coroutine and doesn't block the thread
let data: Data = try dataFuture.await().data
//create UIImage from the data
guard let image = UIImage(data: data) else { return }
//execute heavy task on global queue and await the result without blocking the thread
let thumbnail: UIImage = try DispatchQueue.global().await { image.makeThumbnail() }
//set image in UIImageView on the main thread
self.imageView.image = thumbnail
}
Documentation
Requirements
- Support only 64-bit architectures
- iOS 10+ / macOS 10.12+ / Ubuntu
- Xcode 10.4+
- Swift 5.2+
Installation
- It’s available through the Swift Package Manager for iOS, macOS and Linux.
- It’s available through CocoaPods for iOS and macOS.
Working with SwiftCoroutine
Coroutines
A coroutine is a computation that can be suspended and resumed at a later time without blocking a thread. Coroutines build upon regular functions and can be executed on any scheduler with a possibility to switch among them during execution.
Key benefits
- Suspend instead of block. The main advantage of coroutines is the ability to suspend their execution at some point without blocking a thread and resuming later on.
- Fast context switching. Switching between coroutines is much faster than switching between threads as it does not require the involvement of operating system.
- Asynchronous code in synchronous manner. The use of coroutines allows an asynchronous, non-blocking function to be structured in a manner similar to an ordinary synchronous function. And even though coroutines can run in multiple threads, your code will still look consistent and therefore easy to understand.
Usage
The coroutines API design is as minimalistic as possible. It consists of the CoroutineScheduler
protocol that describes how to schedule coroutines (DispatchQueue
already conforms it), and the Coroutine
structure with utility methods. This API is enough to do amazing things.
The following example shows the usage of await()
inside a coroutine to wrap asynchronous calls.
//execute coroutine on the main thread
DispatchQueue.main.startCoroutine {
//await URLSessionDataTask response without blocking the thread
let (data, response, error) = try Coroutine.await { callback in
URLSession.shared.dataTask(with: url, completionHandler: callback).resume()
}
. . . use response on the main thread . . .
}
Here’s how we can conform NSManagedObjectContext
to CoroutineScheduler
for launching coroutines on it.
extension NSManagedObjectContext: CoroutineScheduler {
func scheduleTask(_ task: @escaping () -> Void) {
perform(task)
}
}
//execute coroutine on the main thread
DispatchQueue.main.startCoroutine {
let context: NSManagedObjectContext //context with privateQueueConcurrencyType
let request: NSFetchRequest<NSDictionary> //some complex request
//execute request on the context without blocking the main thread
let result: [NSDictionary] = try context.await { try context.fetch(request) }
}
Futures and Promises
A future is a read-only holder for a result that will be provided later and the promise is the provider of this result. They represent the eventual completion or failure of an asynchronous operation.
The futures and promises approach itself has become an industry standart. It is a convenient mechanism to synchronize asynchronous code. But together with coroutines, it takes the usage of asynchronous code to the next level and has become a part of the async/await pattern. If coroutines are a skeleton, then futures and promises are its muscles.
Main features
- Performance. It is much faster than most of other futures and promises implementations.
- Awaitable. You can await the result inside the coroutine.
- Cancellable. You can cancel the whole chain as well as handle it and complete the related actions.
Usage
Futures and promises are represented by the corresponding CoFuture
class and its CoPromise
subclass.
//wraps some async func with CoFuture
func makeIntFuture() -> CoFuture<Int> {
let promise = CoPromise<Int>()
someAsyncFunc { int in
promise.success(int)
}
return promise
}
It allows to start multiple tasks in parallel and synchronize them later with await()
.
//create CoFuture<Int> that takes 2 sec. from the example above
let future1: CoFuture<Int> = makeIntFuture()
//execute coroutine on the global queue and returns CoFuture<Int> with future result
let future2: CoFuture<Int> = DispatchQueue.global().coroutineFuture {
try Coroutine.delay(.seconds(3)) //some work that takes 3 sec.
return 6
}
//execute coroutine on the main thread
DispatchQueue.main.startCoroutine {
let sum: Int = try future1.await() + future2.await() //will await for 3 sec.
self.label.text = "Sum is \(sum)"
}
It’s very easy to transform or compose CoFuture
s into a new one.
let array: [CoFuture<Int>]
//create new CoFuture<Int> with sum of future results
let sum = CoFuture { try array.reduce(0) { try $0 + $1.await() } }
Channels
Futures and promises provide a convenient way to transfer a single value between coroutines. Channels provide a way to transfer a stream of values. Conceptually, a channel is similar to a queue that allows to suspend a coroutine on receive if it is empty, or on send if it is full.
This non-blocking primitive is widely used in such languages as Go and Kotlin, and it is another instrument that improves working with coroutines.
Usage
To create channels, use the CoChannel
class.
//create a channel with a buffer which can store only one element
let channel = CoChannel<Int>(capacity: 1)
DispatchQueue.global().startCoroutine {
for i in 0..<100 {
//imitate some work
try Coroutine.delay(.seconds(1))
//sends a value to the channel and suspends coroutine if its buffer is full
try channel.awaitSend(i)
}
//close channel when all values are sent
channel.close()
}
DispatchQueue.global().startCoroutine {
//receives values until closed and suspends a coroutine if it's empty
for i in channel.makeIterator() {
print("Receive", i)
}
print("Done")
}
Scope
All launched coroutines, CoFuture
s and CoChannel
s, usually do not need to be referenced. They are deinited after their execution. But often there is a need to complete them earlier, when they are no longer needed. For this, CoFuture
and CoChannel
have methods for canceling.
CoScope
makes it easier to manage the life cycle of these objects. It allows you to keep weak references to them and cancel if necessary or on deinit.
Usage
You can add coroutines, CoFuture
s, CoChannel
s and other CoCancellable
to CoScope
to cancel them when they are no longer needed or on deinit.
class ViewController: UIViewController {
let scope = CoScope() //will cancel all objects on `cancel()` or deinit
func performSomeWork() {
//create new `CoChannel` and add to `CoScope`
let channel = makeSomeChannel().added(to: scope)
//execute coroutine and add to `CoScope`
DispatchQueue.main.startCoroutine(in: scope) { [weak self] in
for item in channel.makeIterator() {
try self?.performSomeWork(with: item)
}
}
}
func performSomeWork(with item: Item) throws {
//create new `CoFuture` and add to `CoScope`
let future = makeSomeFuture(item).added(to: scope)
let result = try future.await()
. . . do some work using result . . .
}
}


With a BA in Cognitive Science and a passion for turning words into actions, I love transforming problems into opportunities. I studied the mind and brain to understand how and why we do what we do, and decided to put that knowledge to work. With Experience Design I can empower people to live richer lives, while also excercising both my creative and analytic capabilities to achieve meaningful impact on important problems.


About Us
Rug India is a Manufacturer and Exporter of Indian Handmade Rugs
since 1985, specialised in Custom made rugs in all kinds of
Flatweave, Indo Nepalese, Hand Tufted and Hand Loom rugs. Our goal
is to provide creative and practical design solution throughout
the design build experience with over many exclusive collections
offering a wide variety of unique textures, colors and designs.
We only employ skilled and adult artsian. No Child Labour is used
in our industry.
All our rugs are handmade with perfection by our lovely craftsman
driven to make a Great home. We believe in making each rug with
Love to help bring serenity to any space keeping in mind the rug
should stand the test of time and be loved forever. Every detail
is carefully finished by hand before it leaves for its new home.
Collection
flat weave
Rug India is a Manufacturer and Exporter of Indian Handmade Rugs
since 1985, specialised in Custom made rugs in all kinds of
Flatweave, Indo Nepalese, Hand Tufted and Hand Loom rugs.
Our goal is to provide creative and practical design solution
throughout the design build experience with over many exclusive
collections offering a wide variety of unique textures, colors
and designs.
We only employ skilled and adult artsian. No Child Labour is
used in our industry. All our rugs are handmade with perfection
by our lovely craftsman driven to make a Great home.
We believe in making each rug with Love to help bring serenity
to any space keeping in mind the rug should stand the test of
time and be loved forever.
Every detail is carefully finished by hand before it leaves for
its new home.
hand knotted
Flat weave rug are likely to be the oldest type of rug quality,
which is created using a simple weaving technique that provide a
beautiful detailed pattern and rich colours.
Yarns are woven directly on the loom resulting in lighter, more
flexible and reversible rug as the pattern comes out the same on
the both sides of the rug.
These are durable, easy to move, easy to clean and versatile for
any room and is the perfet laid-back layer.
These can also made in natural material such as Jute, Hemp and
Sisal.
hand tuffed
Kilim rug are generally flat weave rug woven with slightly different patterns and style but still display the same general weaving skill.
They contain wide ranges of styles and are example of amazing craftsmanship.
These are relatively inexpensive and do not shed as much as other type of rug.
hand loom
Hand Knotted rug are made using a technique in which the rug is woven by creating a knot on a specialised loom.
The yarn is tied by hand around the two neighbouring threads creating the knot on the surface of the rug.
This might take couple of weeks to weave a rug but the end result is worth it by far.
Each one is unique and a direct reflection of the weaver’s creativity.
kilim
Kilim rug are generally flat weave rug woven with slightly different patterns and style but still display the same general weaving skill.
They contain wide ranges of styles and are example of amazing craftsmanship.
These are relatively inexpensive and do not shed as much as other type of rug.


Plottable.js
Plottable.js
A library for concisely creating powerful, flexible, interactive charts. Built on D3.js.


Targeted, Robust, and Model-free Differential Methylation Analysis
Authors: Nima Hejazi and Mark van der Laan
methyvim
?methyvim
is an R package that provides facilities for differential methylation analysis based on variable importance measures (VIMs), statistical target parameters inspired by causal inference.
The statistical methodology implemented computes targeted minimum loss estimates of several well-characterized variable importance measures:
For discrete-valued treatments or exposures:
The average treatment effect (ATE): The effect of a binary exposure or treatment on the observed methylation at a target CpG site is estimated, controlling for the observed methylation at all other CpG sites in the same neighborhood as the target site, based on an additive form. In particular, the parameter estimate represents the additive difference in methylation that would have been observed at the target site had all observations received the treatment versus the scenario in which none received the treatment.
The relative risk (RR): The effect of a binary exposure or treatment on the observed methylation at a target CpG site is estimated, controlling for the observed methylation at all other CpG sites in the same neighborhood as the target site, based on an geometric form. In particular, the parameter estimate represents the multiplicative difference in methylation that would have been observed at the target site had all observations received the treatment versus the scenario in which none received the treatment.
For continuous-valued treatments or exposures (WIP: support planned):
These methods allow differential methylation effects to be quantified in a manner that is largely assumption-free, especially of the variety exploited in parametric models. The statistical algorithm consists in several major steps:
limma
, tmle.npvi
.tmle.npvi
and tmle
R packages.For a general discussion of the framework of targeted minimum loss estimation and its myriad applications, the canonical references are van der Laan and Rose (2011) and van der Laan and Rose (2018). Hernan and Robins (2019) and Pearl (2000) may be of interest to those desiring a more general introduction to statistical causal inference.
For standard use, install from Bioconductor using BiocManager
:
if (!requireNamespace("BiocManager", quietly=TRUE)) {
install.packages("BiocManager")
}
BiocManager::install("methyvim")
To contribute, install the bleeding-edge development version from GitHub via remotes
:
Current and prior Bioconductor releases are available under branches with numbers prefixed by “RELEASE_”. For example, to install the version of this package available via Bioconductor 3.6, use
For details on how to best use the methyvim
R package, please consult the most recent package vignette available through the Bioconductor project.
Contributions are very welcome. Interested contributors should consult our contribution guidelines prior to submitting a pull request.
After using the methyvim
R package, please cite the following:
@article{hejazi2018methyvim,
doi = {10.12688/f1000research.16047.1},
url = {https://dx.doi.org/10.12688/f1000research.16047.1},
year = {2018},
publisher = {Faculty of 1000 Ltd},
volume = {7},
number = {1424},
author = {Hejazi, Nima S and Phillips, Rachael V and Hubbard, Alan E
and {van der Laan}, Mark J},
title = {{methyvim}: Targeted, robust, and model-free differential
methylation analysis in {R}},
journal = {F1000Research}
}
@manual{hejazi2019methyvimbioc,
author = {Hejazi, Nima S and {van der Laan}, Mark J},
title = {{methyvim}: Targeted, robust, and model-free differential
methylation analysis},
doi = {10.18129/B9.bioc.methyvim},
url = {https://bioconductor.org/packages/methyvim},
note = {R package version 1.8.0}
}
The development of this software was supported in part through grants from the National Institutes of Health: T32 LM012417-02, R01 ES021369-05, and P42 ES004705-29.
© 2017-2019 Nima S. Hejazi
The contents of this repository are distributed under the MIT license. See file LICENSE
for details.


Job and Position Header
Recommendation, 2007 April15
Editors:
Kim Bartkus
Contributors:
Members of the CPO work group
Members of the SIDES work group
Copyright © 2007 HR-XML Consortium, Inc.
Abstract
Many business processes within the HR Industry use the term Job or Position, with each process requiring its own set of elements within the Job or Position. This document focuses on identifying the common Job and Position elements across those business processes.
Table of Contents
1.2 Relationship to Business Processes
2 Supported Business Processes
4 Implementation Considerations
5 Appendix A - Revision History
6 Appendix B - Related Documents. 15
7 Appendix C – Reference Examples
A detailed analysis of the Staffing Industry Data Exchange Standards (SIDES) specification and related Cross Process Objects was conducted by a coalition of Staffing Companies in France. The purpose of the analysis was to take a regional implementation perspective and to evaluate how closely the global specifications met localized requirements. Feedback was documented and requests for additions or cardinality changes were structured based on the need for backward compatibility.
The scope section provides a summary of changes made to the Position Header schema, as requested by the review group.
Job and Position are high-level entities that may be used within a variety of HRM models and business processes. Both entities may be categorized into fragments such as Duties and Responsibilities, Work Policy, Requirements, and Work Schedule. The purpose of this specification is to define Job and Position information that is common to all business processes. The schemas created from this project are flexible enough to be used within other HR-XML Consortium schemas and suitable for international use.
Job
Jobs are broad based definitions that vary in detail within different companies depending on the labor environment, the industry and the countries the company does business in. Job serves as a template for more specifically defined positions and assignments in a company, in part, to provide equitable opportunity for similar work done across disparate business units inside and outside the organization. Jobs may be refined into steps based on the level of competency or experience required to perform the job’s activities.
Position
Positions are specific instances of jobs. Jobs describe the nature of the work, whereas related positions represent the time, place and organizational structure in which a person or persons actually perform the work. Positions usually have a specific budget associated with them.
The JobHeader and PositionHeader Schema are cross-process objects that will be used within other HR-XML Schemas. They will contain:
· Header information necessary to identify the Job.
· Header information necessary to identify the Position.
· Job Evaluation Details
· Work Policy Details
· Financial Information
· Duties & Responsibilities
· Requirements
· Bargaining Unit Information
· Regulatory Information
· Legal Entity Information
· Organizational Unit Information
· Work Site Information
· Work Schedule Information
· Budget Information
· Work Environment Information
· Audit Details
· Physical Requirements (Person can sit, stand, carry maximum weight)
The following elements were added to PositionHeader 1.1:
|
Component |
Details |
|
PositionHeader/RequestedPerson |
Tag, 0/* Allows a client to name a specific person they either would like or require to fill a position. |
|
RequestedPerson/PersonName |
PersonNameType, 0/1 |
|
RequestedPerson/PersonId |
EntityIdType, 0/1 |
|
RequestedPerson/Supplier |
EntityReferenceType, 0/1 |
|
RequestedPerson/mandatory |
Boolean attribute, 0/1 If “true”, indicates that the RequestedPerson is the only person acceptable to fill the position |
|
RequestedPerson/currentlyAssigned |
Boolean attribute, 0/1 If “true”, indicated that the RequestedPerson is currently assigned at the client and would need to be redeployed |
|
PositionHeader/PositionSpecificCondition |
0/* Informs that the position includes risks. |
|
PositionSpecificCondition/Code |
String, 0/1 |
|
PositionSpecificCondition/Description |
String, 0/1 |
|
PositionSpecificCondition/Value |
String, 0/1 |
· Syntax must be self-documenting
· Must take into consideration global requirements
· Must be deployable in existing HR-XML Schemas
Consideration has been given to the vocabulary currently being used in all HR-XML Consortium specifications. Elements that are specific to a Job have “Job” prefix. Elements that are specific to a Position have a “Position” prefix. All generic elements have a more universally accepted name so they can be used with the same meaning in other schemas.
Many HR business processes rely on and exchange information regarding jobs and positions. Below is a list of the business functions that could potentially utilize the JobHeader and PositionHeader Schemas:
Organizational Definition - job is a fundamental component of the organizational definition, which is part of the Main HRM model. Work Roles and Positions define the work to be done in terms of jobs with their related duties and responsibilities.
Job Evaluations - standard job evaluation methods are used to compare jobs, measure job complexity and establish equitable remuneration based on a job’s importance and value to an organization.
Position Control/Budgeting - the establishment and control of the positions within an organization is highly dependent on position status information.
Financial Planning and Control - financial information is frequently captured by function, location and fund designations that are identified by job or position.
Compensation and Benefits - may use job or position as the basis for compensation and benefits determination.
Wage Surveys - jobs are used as the basis for comparing wages in other organizations and locations.
Competency Management - the knowledge, skills and abilities needed to carry out the organizations business are captured as requirements at a job or position level.
Training and Development - development of an individual to meet the requirements of a job or a position requires an awareness of the skills gap between the person and the job or position.
Regulation - regulatory and contractual relationships are sometimes dependent on job related information.
Recruiting and Staffing - recruiters use job and position data for hiring purposes. Postings may be created for jobs or positions. Talent searches are often conducted by job.
Experience Tracking - work experience may be tracked by job or position for promotion, seniority or wage stepping purposes.
Work Scheduling - work areas are manned to meet production needs on the basis of the jobs that need to be done.
Time & Attendance - timesheet details may be provided on a job or position basis.
|
Elements and Attributes [Global types listed alphabetically in following table.] |
ContentModel* |
Definition |
|
/ |
validFrom - AnyDateTimeType
- |
Contains common job information
to be used within other HR-XML Schemas. |
|
/ JobHeader/ |
- AnyDateTimeType - |
The date the event begins, is
active or valid. |
|
/ JobHeader/ |
- AnyDateTimeType - |
The date through which the event is
active or valid. |
|
/ JobHeader/ |
- JobIdentifierType
- S (1/1) |
Uniquely identifies a job within an organization. |
|
/ JobHeader/ JobId/ |
- xsd:string - S (1/1) |
A unique identifier used to reference the entity. The Id it is associated with the higher level element. |
|
/ JobHeader/ JobId/ |
IdIssuer - xsd:string - S (0/1) |
Contains the domain information
for the Id. |
|
/ JobHeader/ JobId/ Domain/ |
- xsd:string - S (0/1) |
The entity responsible for the
issuing Id. |
|
/ JobHeader/ JobId/ Domain/ |
- xsd:string - S (0/1) |
Information that can be used to
help identify the job or position. |
|
/ JobHeader/ |
- xsd:string - S (0/1) |
The name of a job. This might be used for a job posting. |
|
/ JobHeader/ |
- xsd:string - S (0/1) |
A textual description of the job. |
|
/ JobHeader/ |
Code - xsd:string
- S (0/1) |
The current status of the job. |
|
/ JobHeader/ JobStatus/ |
- xsd:string - S (0/1) |
A code to further describe the
associated element. |
|
/ JobHeader/ JobStatus/ |
- xsd:string - S (0/1) |
Describes the contextual information
relating to a specific element. |
|
/ JobHeader/ |
type - xsd:string
- |
A grouping of similar jobs in
terms of function, job duties, tasks, responsibilities, job evaluation
method, or similarity in pay philosophy. |
|
/ JobHeader/ JobLevel/ |
- xsd:string - |
Further defines the associated
element in the context provided. |
|
/ JobHeader/ JobLevel/ |
- xsd:string - S (0/1) |
A code to further describe the
associated element. |
|
/ JobHeader/ JobLevel/ |
- xsd:string - S (0/1) |
Describes the contextual
information relating to a specific element. |
|
/ JobHeader/ |
type - xsd:string
- |
A grouping of jobs under one or more classification schemes that is meaningful to an organization. |
|
/ JobHeader/ JobCategory/ |
- xsd:string - |
Further defines the associated
element in the context provided. |
|
/ JobHeader/ JobCategory/ |
- xsd:string - S (0/1) |
A code to further describe the
associated element. |
|
/ JobHeader/ JobCategory/ |
- xsd:string - S (0/1) |
Describes the contextual
information relating to a specific element. |
|
Elements and Attributes [Global types listed alphabetically in following table.] |
ContentModel* |
Definition |
|
/ |
validFrom - AnyDateTimeType
- |
Contains common position
information to be used within other HR-XML Schemas. |
|
/ PositionHeader/ |
- AnyDateTimeType - |
The date the event begins, is
active or valid. |
|
/ PositionHeader/ |
- AnyDateTimeType - |
The date through which the event
is active or valid. |
|
/ PositionHeader/ |
- PositionIdentifierType - S (1/1) |
Reference to a uniquely identifiable position. |
|
/ PositionHeader/ PositionId/ |
- xsd:string - S (1/1) |
A unique identifier used to reference the entity. The Id it is associated with the higher level element. |
|
/ PositionHeader/ PositionId/ |
IdIssuer - xsd:string - S (0/1) |
Contains the domain information
for the Id. |
|
/ PositionHeader/ PositionId/
Domain/ |
- xsd:string - S (0/1) |
The entity responsible for the
issuing Id. |
|
/ PositionHeader/ PositionId/
Domain/ |
- xsd:string - S (0/1) |
Information that can be used to
help identify the job or position. |
|
/ PositionHeader/ |
- PositionIdentifierType - S (0/1) |
Uniquely identifies a job within an organization. |
|
/ PositionHeader/ JobId/ |
- xsd:string - S (1/1) |
A unique identifier used to reference the entity. The Id it is associated with the higher level element. |
|
/ PositionHeader/ JobId/ |
IdIssuer - xsd:string - S (0/1) |
Contains the domain information
for the Id. |
|
/ PositionHeader/ JobId/ Domain/ |
- xsd:string - S (0/1) |
The entity responsible for the
issuing Id. |
|
/ PositionHeader/ JobId/ Domain/ |
- xsd:string - S (0/1) |
Information that can be used to
help identify the job or position. |
|
/ PositionHeader/ |
- xsd:string - S (0/1) |
A short phrase describing the position
the way it would be listed on a business card or in a company directory. |
|
/ PositionHeader/ |
- xsd:string - S (0/1) |
Describes the category or nature
of the position. |
|
/ PositionHeader/ |
- xsd:string - S (0/1) |
A description of the duties and
responsibilities of the position. |
|
/ PositionHeader/ |
Code - xsd:string
- S (0/1) |
The current state of the
position. |
|
/ PositionHeader/ PositionStatus/ |
- xsd:string - S (0/1) |
A code to further describe the
associated element. |
|
/ PositionHeader/ PositionStatus/ |
- xsd:string - S (0/1) |
Describes the contextual
information relating to a specific element. |
|
/ PositionHeader/ |
- PositionIdentifierType
- S (0/1) |
Identifies the parent position that this position reports to. |
|
/ PositionHeader/
ReportToPositionId/ |
- xsd:string - S (1/1) |
A unique identifier used to reference the entity. The Id it is associated with the higher level element. |
|
/ PositionHeader/
ReportToPositionId/ |
IdIssuer - xsd:string - S (0/1) |
Contains the domain information
for the Id. |
|
/ PositionHeader/
ReportToPositionId/ Domain/ |
- xsd:string - S (0/1) |
The entity responsible for the
issuing Id. |
|
/ PositionHeader/
ReportToPositionId/ Domain/ |
- xsd:string - S (0/1) |
Information that can be used to
help identify the job or position. |
|
/ PositionHeader/ |
- xsd:string - S (0/1) |
Any instructions related to the
position. |
|
/ PositionHeader/ |
- xsd:string - S (0/1) |
Describes the type of hours for
the position. |
|
/ PositionHeader/ |
- xsd:double - S (0/1) |
A numerical quantity that is
assigned or determined by calculation or measurement. |
|
/ PositionHeader/ |
mandatory - xsd:boolean
- |
Container to indicate that a particular resource is being identified and requested for the position. |
|
/ PositionHeader/
RequestedPerson/ |
- xsd:boolean - |
Flag to indicate that the particular person identified for the position is mandatory, the position is not open to any other person. |
|
/ PositionHeader/
RequestedPerson/ |
- xsd:boolean - |
Flag to indicate that the person identified and requested for the position is currently working on a different assignment for the customer. |
|
/ PositionHeader/
RequestedPerson/ |
- PersonNameType - S (0/1) |
The name of a person. |
|
/ PositionHeader/
RequestedPerson/ |
- EntityIdType - S (0/1) |
A unique identifier for a person. |
|
/ PositionHeader/
RequestedPerson/ |
- EntityReferenceType - S (0/1) |
Information about the supplier of the posting, resume, position, or candidate. |
|
/ PositionHeader/ |
ConditionCode - xsd:string - S (0/1) |
Contains information about any factors that could impact on the risk evaluation or work environment of the position. |
|
/ PositionHeader/
PositionSpecificCondition/ |
- xsd:string - S (0/1) |
A categorization or identifying code for a condition or requirement relating to a particular position. |
|
/ PositionHeader/
PositionSpecificCondition/ |
- xsd:string - S (0/1) |
Describes the category or
classification of the condition/requirement associated with a particular
position. |
|
/ PositionHeader/ PositionSpecificCondition/ |
- xsd:string - S (0/1) |
Describes the actual
condition/requirement associated with the position. |
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).
Most elements in the Job Header and Position Header schemas are optional; this provides the maximum flexibility for reuse.
When workgroups need to define a Position within their business process, they should include the PositionHeader Schema and any other required schema (WorkPolicy, WorkSchedule, Duties&Responsibilities, etc.) in their Position wrapper. Individual elements may also be included in the wrapper. For example, the Order workgroup requires ReportToPerson and ConfirmToPerson information that is not pertinent to other Position requirements. When building the wrapper, the PositionHeader schema is always required. All other schemas are optional based on the business process being performed.
The same implementation guidelines apply to a Job wrapper.
|
Date |
Description |
|
2003-Feb-26 |
Approved recommendation by HR-XML Consortium. The default and targetNamespaces of all HR-XML schemas have been standardized to "http://ns.hr-xml.org". This recommendation is available as part of the HR-XML 2_0 architecture. |
|
2004-Apr-16 |
Updated overview, diagrams, definitions and examples. |
|
2006-Feb-28 |
Approved by Consortium |
|
2007-Apr-15 |
Approved by Consortium |
|
Link |
|
|
JobHeader schema |
|
|
PositionHeader schema |
|
|
Staffing Industry Data Exchange Standards |
http://ns.hr-xml.org/2_5/HR-XML-2_5/SIDES/SIDES.html
|
|
Staffing Exchange Protocol |
http://ns.hr-xml.org/2_5/HR-XML-2_5/SEP/StaffingExchangeProtocol.html |
|
Entity Identifiers |
http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/EntityIdentifiers.html |
<JobHeader validFrom="2001-12-15" validTo="2002-02-15">
<JobId>
<Id>Programmer</Id>
<Domain>
<IdIssuer>ABC Company</IdIssuer>
<IdType>Id</IdType>
</Domain>
</JobId>
<JobTitle>Associate Programmer</JobTitle>
<JobDescription>Program according to design documents. Conduct unit testing on all work. Document changes made to programs.</JobDescription>
<JobStatus>
1
<Description>Active</Description>
</JobStatus>
<JobLevel type="Family">
Salaried
<Description>Salaried, Non-executive Job Family</Description>
<JobLevel type="Type">
PROG
<Description>Programmer</Description>
<JobLevel type="Step">
1
<Description>Programmer 1</Description>
</JobLevel>
</JobLevel>
</JobLevel>
<JobCategory type="HighTech">
Technical
<Description>High Tech Employee</Description>
</JobCategory>
</JobHeader>
<PositionHeader validFrom="2001-12-21" validTo="2002-01-15">
<PositionId>
<Id>Programmer1</Id>
<Domain>
<IdIssuer>ABC Company</IdIssuer>
<IdType>Id</IdType>
</Domain>
</PositionId>
<JobId>
<Id>Programmer</Id>
</JobId>
<PositionTitle>Associate Programmer - Financial Group</PositionTitle>
<PositionType>Permanent Placement</PositionType>
<PositionDescription>Program according to design documents. Conduct unit testing of all work. Document changes made to programs. Specific duties include General Ledger, Accounts Payable, and Accounts Receivable.</PositionDescription>
<PositionStatus>
1
<Description>Active</Description>
</PositionStatus>
<ReportToPositionId>
<Id>Manager1</Id>
</ReportToPositionId>
<SpecialInstructions>Report to main lobby on first day of work.</SpecialInstructions>
<TypeOfHours>Fulltime</TypeOfHours>
<Quantity>1</Quantity>
<RequestedPerson>
<PersonName>
<FormattedName>Jacob Peterson</FormattedName>
</PersonName>
<Supplier>
<Name>Elliot Smitte</Name>
</Supplier>
</RequestedPerson>
<PositionSpecificCondition>
<ConditionCode>ES541</ConditionCode>
<ConditionDescription>Low risk exposure</ConditionDescription>
<ConditionValue>Eye Strain</ConditionValue>
</PositionSpecificCondition>
</PositionHeader>


Let ABC be an isosceles triangle having the side AB equal to the side AC, and let the straight lines BD and CE be produced further in a straight line with AB and AC.
I say that the angle ABC equals the angle ACB, and the angle CBD equals the angle BCE.
Take an arbitrary point F on BD. Cut off AG from AE the greater equal to AF the less, and join the straight lines FC and GB.
Since AF equals AG, and AB equals AC, therefore the two sides FA and AC equal the two sides GA and AB, respectively, and they contain a common angle, the angle FAG.
Therefore the base FC equals the base GB, the triangle AFC equals the triangle AGB, and the remaining angles equal the remaining angles respectively, namely those opposite the equal sides, that is, the angle ACF equals the angle ABG, and the angle AFC equals the angle AGB.
Since the whole AF equals the whole AG, and in these AB equals AC, therefore the remainder BF equals the remainder CG.
But FC was also proved equal to GB, therefore the two sides BF and FC equal the two sides CG and GB respectively, and the angle BFC equals the angle CGB, while the base BC is common to them. Therefore the triangle BFC also equals the triangle CGB, and the remaining angles equal the remaining angles respectively, namely those opposite the equal sides. Therefore the angle FBC equals the angle GCB, and the angle BCF equals the angle CBG.
Accordingly, since the whole angle ABG was proved equal to the angle ACF, and in these the angle CBG equals the angle BCF, the remaining angle ABC equals the remaining angle ACB, and they are at the base of the triangle ABC. But the angle FBC was also proved equal to the angle GCB, and they are under the base.
Therefore in isosceles triangles the angles at the base equal one another, and, if the equal straight lines are produced further, then the angles under the base equal one another.
Unfortunately, such an argument would be circular. I.13 depends on I.11, I.11 on I.8, I.8 on I.7, and I.7 on I.5. Thus, I.13 cannot be used in the proof of I.5. It may appear that I.7 only depends on the first conclusion of I.5, but a case of I.7 that Euclid does not discuss relies on the second conclusion of I.5.
This proposition has been called the Pons Asinorum, or Asses’ Bridge. Whether this name is due to its difficulty (which it isn’t) or the resemblance of its figure to a bridge is not clear. Very few of the propositions in the Elements are known by names.
The difficulty lies in treating one triangle as two, or in making a correspondence between a triangle and itself, but not the correspondence of identity. There is nothing wrong with this proof formally, but it might be more difficult for a student just learning geometry.


{{ template "header_visitor.html" . }}
Thank You. You finished your assigned text. You will be signed out now automatically. If you sign in again, you will be presented with a new text to work on.


ANTZ RATING: 6.5 / 10 --> So-so
For more reviews and movie trivia, visit http://www.joblo.com/
PLOT: One ant living among millions of others doesn't feel right in just following orders and not thinking for himself all day, and attempts to find more meaning in his monotonous, everyday humdrum existence.
CRITIQUE: Competent, adult computer-animated feature from DreamWorks, manages to draw some great one-liners from star Woody Allen, a few chuckles here and there, and a semi-interesting story line, but nothing too outstanding. It was also fun in respect to all of the big names that had voice parts in this film, but somehow the movie didn't blow me away overall. The special effects were good, but nothing spectacular, the characters were interesting, but not fully engaging, and the lack of songs made it feel as though it was missing a certain "je-ne-sais-quoi".  Also, I don't see kids appreciating most of the adult humor laced through this film. The cute homages to other films like PULP FICTION (7.5/10) and RAMBO (When the Stallone ant is being interrogated) was also nice, but overall, the movie is just a passable good time, with some laughs, a lot of big star voices, and a short running time (about one hour and twenty minutes).
Little Known Facts about this film and its stars: Woody Allen recorded his part as "Z" in only 5 days.
Review Date: March 21, 1999 Directors: Eric Darnell and Tim Johnson Writers: Todd Alcott, Chris Weitz and Paul Weitz Producers: Brad Lewis, Aron Warner and Patty Wooton Actors (voices): Woody Allen as "Z", Sharon Stone as Bala, Gene Hackman as General Mandible, Sylvester Stallone as Weaver, Jennifer Lopez as Azteca, Christopher Walken as Colonel Cutter Genre: Animation/Comedy Year of Release: 1998
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


| Top |
A WebKitPrintCustomWidget allows to embed a custom widget in the print
dialog by connecting to the “create-custom-widget”
signal, creating a new WebKitPrintCustomWidget with
webkit_print_custom_widget_new()
and returning it from there. You can later
use webkit_print_operation_run_dialog()
to display the dialog.
WebKitPrintCustomWidget * webkit_print_custom_widget_new (GtkWidget *widget
,const char *title
);
Create a new WebKitPrintCustomWidget with given widget
and title
. The widget
ownership is taken and it is destroyed together with the dialog even if this
object could still be alive at that point. You typically want to pass a container
widget with multiple widgets in it.
Since: 2.16
GtkWidget *
webkit_print_custom_widget_get_widget (WebKitPrintCustomWidget *print_custom_widget
);
Return the value of “widget” property for the given
print_custom_widget
object. The returned value will always be valid if called
from “apply” or “update”
callbacks, but it will be NULL
if called after the
“apply” signal is emitted.
Since: 2.16
const gchar *
webkit_print_custom_widget_get_title (WebKitPrintCustomWidget *print_custom_widget
);
Return the value of “title” property for the given
print_custom_widget
object.
Since: 2.16
“title”
property“title” gchar *
The title of the custom widget.
Flags: Read / Write / Construct Only
Default value: NULL
Since: 2.16
“apply”
signalvoid user_function (WebKitPrintCustomWidget *print_custom_widget, gpointer user_data)
Emitted right before the printing will start. You should read the information from the widget and update the content based on it if necessary. The widget is not guaranteed to be valid at a later time.
print_custom_widget |
the WebKitPrintCustomWidget on which the signal was emitted |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 2.16
“update”
signalvoid user_function (WebKitPrintCustomWidget *print_custom_widget, GtkPageSetup *page_setup, GtkPrintSettings *print_settings, gpointer user_data)
Emitted after change of selected printer in the dialog. The actual page setup and print settings are available and the custom widget can actualize itself according to their values.
print_custom_widget |
the WebKitPrintCustomWidget on which the signal was emitted |
|
page_setup |
actual page setup |
|
print_settings |
actual print settings |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 2.16


Pairing and Feedback
April 19, 2014
Pairing
What was it like to pair with others to solve challenges?
I thought it was interesting pairing to solve challenges, and usually more difficult than I would have thought. I actually thought all my paired challenges went really well and I had good chemistry with my pairs each time, but I just figuring out roles and being on the same page was more challenging than I thought it would be.
Was something particularly fun or rewarding?
Not necessarily fun, but I was interested to see what other people were very good at or had a strong knowledge of relative to me, and conversely what they didn't have as good of a grasp of as I did. For example, I felt comfortable with creating and manipulating objects in JavaScript, while other people seemed to have a better grasp of CSS and creating functions.
Was something frustrating and difficult for you?
Honestly, no, there wasn't anything really frustrating. Other than issues with Google Hangouts or Stypi or bad Internet connections, I enjoyed all my pairing sessions.
Feedback
How did you feel when you read your feedback?
Was the feedback you received helpful to your learning?
Based on the feedback you've received, what are you going to do to improve next time you pair?
Apparently none of my feedback has been rated by other students yet, so I can't really answer these questions.
Added the following on May 27, 2014: So far I think the feedback I've received has been helpful. Mostly it has centered on two things I already knew I needed to work on (emphasis on pseudocoding and just slowing down and not thinking too far ahead), so it's good that the feedback is reinforcing what I already thought were my weaknesses.
How was it to write feedback?
Writing feedback, like pairing, was more difficult than I thought. After a good session I had to wrack my brain to find critiques or things my pair could improve on, and at the same time I didn't want to sound too harsh in articulating those things. I was trying to be specific but it is difficult to be specific without giving away who I am or which session I'm talking about.
What was most difficult for you when writing feedback for your pair?
Again, the hardest thing was articulating my thoughts without sounding unkind or wording it in an unspecific way that isn't particularly helpful to anyone. Also, for example if I suggested something, trying to describe how much of an issue I thought the behavior was (a big issue or a minor issue) was pretty difficult to articulate.


%{ 'layout' }%> <%{ content %>
This page spends from an existing 2/3-multisig smart contract using 2 hardware wallets.
You and your co-signer will need a total of 2 hardware wallets. Both wallets do not need to be co-located. Your co-signer can use this application on their own computer and send you their signature via a (preferably secure) side-channel such as email.
If signing with a Trezor, it will display the following message for you to sign:
If signing with a Ledger, it will display the following message for you to sign:
Once both signature are obtained, you can broadcast this spend.
We recommend setting the gas limit for spends to 100000 gas. This dapp should automatically set the gas limit for the broadcasting transacation.
The following spend transaction is being broadcast:
<%{ 'spend_transaction' {txid: true} }%>The following transaction was confirmed:
<%{ 'spend_transaction' {txid: true} }%>The spending transaction failed.


{% extends "master.html" %} {% block title %}Created{% endblock %} {% block body %}
Your lists have been created. Click below to visit your list page on Twitter and see them.
Your Lists


Espresso, steamed, strong frappuccino lungo robusta caffeine fair trade instant. Blue mountain decaffeinated, shop, single shot, medium arabica acerbic in est blue mountain sweet roast. Pumpkin spice, robust extra, siphon, froth arabica cultivar crema body. Viennese cup robust turkish in fair trade body.
What? We're not at all alike! Congratulations - you just destroyed the Enterprise. You're going to be an interesting companion, Mr. Data. The Federation's gone; the Borg is everywhere! Computer, lights up! Captain, why are we out here chasing comets? We know you're dealing in stolen ore. But I wanna talk about the assassination attempt on Lieutenant Worf. But the probability of making a six is no greater than that of rolling a seven. Yes, absolutely, I do indeed concur, wholeheartedly! I think you've let your personal feelings cloud your judgement. I suggest you drop it, Mr. Data.
Every day is taco ipsum tuesday. Burritos are very tasty. It’s taco Tuesday Monday. 50 cent tacos! I’ll take 30. It’s taco time all the time. I’d have to say, those tacos are on fleek. Does guac cost extra? Fish tacos: lettuce or cabbage, pico de gallo, avocado and a sour cream or citrus/mayonnaise sauce, all placed on top of a corn or flour tortilla. BARBACOA!! TACOS!! Yeah, apparently the taco shack was robbed. They left the money but took the tacos. Carne asada on corn tortillas. TACOS!!
Every day is taco ipsum tuesday. Burritos are very tasty. It’s taco Tuesday Monday. 50 cent tacos! I’ll take 30. It’s taco time all the time. I’d have to say, those tacos are on fleek. Does guac cost extra? Fish tacos: lettuce or cabbage, pico de gallo, avocado and a sour cream or citrus/mayonnaise sauce, all placed on top of a corn or flour tortilla. BARBACOA!! TACOS!! Yeah, apparently the taco shack was robbed. They left the money but took the tacos. Carne asada on corn tortillas. TACOS!!
 Sit on the laptop chirp at birds hide head under blanket so no one can see or Gate keepers of hell. Put toy mouse in food bowl run out of litter box at full speed meow in empty rooms but walk on car leaving trail of paw prints on hood and windshield or scratch leg; meow for can opener to feed me yet milk the cow yet this cat happen now, it was too purr-fect!!! and ask to be pet then attack owners hand. Fall asleep on the washing machine lounge in doorway yet cat not kitten around , so plan steps for world domination eat an easter feather as if it were a bird then burp victoriously, but tender and human is washing you why halp oh the horror flee scratch hiss bite. Groom forever, stretch tongue and leave it slightly out, blep cats making all the muffins.
Drag and drop here ->


SCENE I. Cyprus. A street.
Enter IAGO and RODERIGO
- IAGO
- Here, stand behind this bulk; straight will he come:
- Wear thy good rapier bare, and put it home:
- Quick, quick; fear nothing; I'll be at thy elbow:
- It makes us, or it mars us; think on that,
- And fix most firm thy resolution.
- RODERIGO
- Be near at hand; I may miscarry in't.
- IAGO
- Here, at thy hand: be bold, and take thy stand.
Retires
- RODERIGO
- I have no great devotion to the deed;
- And yet he hath given me satisfying reasons:
- 'Tis but a man gone. Forth, my sword: he dies.
- IAGO
- I have rubb'd this young quat almost to the sense,
- And he grows angry. Now, whether he kill Cassio,
- Or Cassio him, or each do kill the other,
- Every way makes my gain: live Roderigo,
- He calls me to a restitution large
- Of gold and jewels that I bobb'd from him,
- As gifts to Desdemona;
- It must not be: if Cassio do remain,
- He hath a daily beauty in his life
- That makes me ugly; and, besides, the Moor
- May unfold me to him; there stand I in much peril:
- No, he must die. But so: I hear him coming.
Enter CASSIO
- RODERIGO
- I know his gait, 'tis he. — Villain, thou diest!
Makes a pass at CASSIO
- CASSIO
- That thrust had been mine enemy indeed,
- But that my coat is better than thou know'st
- I will make proof of thine.
Draws, and wounds RODERIGO
- RODERIGO
- O, I am slain!
IAGO from behind wounds CASSIO in the leg, and exit
- CASSIO
- I am maim'd for ever. Help, ho! murder! murder!
Falls
Enter OTHELLO
- OTHELLO
- The voice of Cassio: Iago keeps his word.
- RODERIGO
- O, villain that I am!
- OTHELLO
- It is even so.
- CASSIO
- O, help, ho! light! a surgeon!
- OTHELLO
- 'Tis he: — O brave Iago, honest and just,
- That hast such noble sense of thy friend's wrong!
- Thou teachest me.
- Forth of my heart those charms, thine eyes, are blotted;
- Thy bed, lust-stain'd, shall with lust's blood be spotted.
Exit
Enter LODOVICO and GRATIANO
- CASSIO
- What, ho! no watch? no passage? murder! murder!
- GRATIANO
- 'Tis some mischance; the cry is very direful.
- CASSIO
- O, help!
- LODOVICO
- Hark!
- RODERIGO
- O wretched villain!
- LODOVICO
- Two or three groan: it is a heavy night:
- These may be counterfeits: let's think't unsafe
- To come in to the cry without more help.
- RODERIGO
- Nobody come? then shall I bleed to death.
- LODOVICO
- Hark!
Re-enter IAGO, with a light
- GRATIANO
- Here's one comes in his shirt, with light and weapons.
- IAGO
- Who's there? whose noise is this that ones on murder?
- LODOVICO
- We do not know.
- IAGO
- Did not you hear a cry?
- CASSIO
- Here, here! for heaven's sake, help me!
- IAGO
- What's the matter?
- GRATIANO
- This is Othello's ancient, as I take it.
- LODOVICO
- The same indeed; a very valiant fellow.
- IAGO
- What are you here that cry so grievously?
- CASSIO
- Iago? O, I am spoil'd, undone by villains!
- Give me some help.
- IAGO
- O me, lieutenant! what villains have done this?
- CASSIO
- I think that one of them is hereabout,
- And cannot make away.
- IAGO
- O treacherous villains!
- What are you there? come in, and give some help.
To LODOVICO and GRATIANO
- RODERIGO
- O, help me here!
- CASSIO
- That's one of them.
- IAGO
- O murderous slave! O villain!
Stabs RODERIGO
- RODERIGO
- O damn'd Iago! O inhuman dog!
- IAGO
- Kill men i' the dark! — Where be these bloody thieves? —
- How silent is this town! — Ho! murder! murder! —
- What may you be? are you of good or evil?
- LODOVICO
- As you shall prove us, praise us.
- IAGO
- Signior Lodovico?
- LODOVICO
- He, sir.
- IAGO
- I cry you mercy. Here's Cassio hurt by villains.
- GRATIANO
- Cassio!
- IAGO
- How is't, brother!
- CASSIO
- My leg is cut in two.
- IAGO
- Marry, heaven forbid!
- Light, gentlemen; I'll bind it with my shirt.
Enter BIANCA
- BIANCA
- What is the matter, ho? who is't that cried?
- IAGO
- Who is't that cried!
- BIANCA
- O my dear Cassio! my sweet Cassio! O Cassio,
- Cassio, Cassio!
- IAGO
- O notable strumpet! Cassio, may you suspect
- Who they should be that have thus many led you?
- CASSIO
- No.
- GRATIANO
- I am to find you thus: I have been to seek you.
- IAGO
- Lend me a garter. So. O, for a chair,
- To bear him easily hence!
- BIANCA
- Alas, he faints! O Cassio, Cassio, Cassio!
- IAGO
- Gentlemen all, I do suspect this trash
- To be a party in this injury.
- Patience awhile, good Cassio. Come, come;
- Lend me a light. Know we this face or no?
- Alas my friend and my dear countryman
- Roderigo! no: — yes, sure: O heaven! Roderigo.
- GRATIANO
- What, of Venice?
- IAGO
- Even he, sir; did you know him?
- GRATIANO
- Know him! ay.
- IAGO
- Signior Gratiano?
- GRATIANO
- I am glad to see you.
- IAGO
- How do you, Cassio? O, a chair, a chair!
- GRATIANO
- Roderigo!
- IAGO
- He, he 'tis he.
- A chair brought in
- O, that's well said; the chair!
- GRATIANO
- Some good man bear him carefully from hence;
- I'll fetch the general's surgeon.
- To BIANCA
- For you, mistress,
- Save you your labour. He that lies slain
- here, Cassio,
- Was my dear friend: what malice was between you?
- CASSIO
- None in the world; nor do I know the man.
- IAGO
- To BIANCA What, look you pale? O, bear him out
- o' the air.
 Look you pale, mistress?
- Do you perceive the gastness of her eye?
- Nay, if you stare, we shall hear more anon.
- Behold her well; I pray you, look upon her:
- Do you see, gentlemen? nay, guiltiness will speak,
- Though tongues were out of use.
Enter EMILIA
- EMILIA
- 'Las, what's the matter? what's the matter, husband?
- IAGO
- Cassio hath here been set on in the dark
- By Roderigo and fellows that are scaped:
- He's almost slain, and Roderigo dead.
- EMILIA
- Alas, good gentleman! alas, good Cassio!
- IAGO
- This is the fruit of whoring. Prithee, Emilia,
- Go know of Cassio where he supp'd to-night.
- To BIANCA
- What, do you shake at that?
- BIANCA
- He supp'd at my house; but I therefore shake not.
- IAGO
- O, did he so? I charge you, go with me.
- EMILIA
- Fie, fie upon thee, strumpet!
- BIANCA
- I am no strumpet; but of life as honest
- As you that thus abuse me.
- EMILIA
- As I! foh! fie upon thee!
- IAGO
- Kind gentlemen, let's go see poor Cassio dress'd.
- Come, mistress, you must tell's another tale.
- Emilia run you to the citadel,
- And tell my lord and lady what hath happ'd.
- Will you go on? I pray.
- Aside
- This is the night
- That either makes me or fordoes me quite.
Exeunt
SCENE II. A bedchamber in the castle: DESDEMONA in bed asleep; a light burning.
Enter OTHELLO
- OTHELLO
- It is the cause, it is the cause, my soul —
- Let me not name it to you, you chaste stars! —
- It is the cause. Yet I'll not shed her blood;
- Nor scar that whiter skin of hers than snow,
- And smooth as monumental alabaster.
- Yet she must die, else she'll betray more men.
- Put out the light, and then put out the light:
- If I quench thee, thou flaming minister,
- I can again thy former light restore,
- Should I repent me: but once put out thy light,
- Thou cunning'st pattern of excelling nature,
- I know not where is that Promethean heat
- That can thy light relume. When I have pluck'd the rose,
- I cannot give it vital growth again.
- It must needs wither: I'll smell it on the tree.
- Kissing her
- Ah balmy breath, that dost almost persuade
- Justice to break her sword! One more, one more.
 One more, and this the last:
- So sweet was ne'er so fatal. I must weep,
- But they are cruel tears: this sorrow's heavenly;
- It strikes where it doth love. She wakes.
- DESDEMONA
- Who's there? Othello?
- OTHELLO
- Ay. Desdemona.
- DESDEMONA
- Will you come to bed, my lord?
- OTHELLO
- Have you pray'd to-night, Desdemona?
- DESDEMONA
- Ay, my lord.
- OTHELLO
- If you bethink yourself of any crime
- Unreconciled as yet to heaven and grace,
- Solicit for it straight.
- DESDEMONA
- Alas, my lord, what do you mean by that?
- OTHELLO
- Well, do it, and be brief; I will walk by:
- I would not kill thy unprepared spirit;
- No; heaven forfend! I would not kill thy soul.
- DESDEMONA
- Talk you of killing?
- OTHELLO
- Ay, I do.
- DESDEMONA
- Then heaven
- Have mercy on me!
- OTHELLO
- Amen, with all my heart!
- DESDEMONA
- If you say so, I hope you will not kill me.
- OTHELLO
- Hum!
- DESDEMONA
- And yet I fear you; for you are fatal then
- When your eyes roll so: why I should fear I know not,
- Since guiltiness I know not; but yet I feel I fear.
- OTHELLO
- Think on thy sins.
- DESDEMONA
- They are loves I bear to you.
- OTHELLO
- Ay, and for that thou diest.
- DESDEMONA
- That death's unnatural that kills for loving.
- Alas, why gnaw you so your nether lip?
- Some bloody passion shakes your very frame:
- These are portents; but yet I hope, I hope,
- They do not point on me.
- OTHELLO
- Peace, and be still!
- DESDEMONA
- I will so. What's the matter?
- OTHELLO
- That handkerchief which I so loved and gave thee
- Thou gavest to Cassio.
- DESDEMONA
- No, by my life and soul!
- Send for the man, and ask him.
- OTHELLO
- Sweet soul, take heed,
- Take heed of perjury; thou art on thy deathbed.
- DESDEMONA
- Ay, but not yet to die.
- OTHELLO
- Yes, presently:
- Therefore confess thee freely of thy sin;
- For to deny each article with oath
- Cannot remove nor choke the strong conception
- That I do groan withal. Thou art to die.
- DESDEMONA
- Then Lord have mercy on me!
- OTHELLO
- I say, amen.
- DESDEMONA
- And have you mercy too! I never did
- Offend you in my life; never loved Cassio
- But with such general warranty of heaven
- As I might love: I never gave him token.
- OTHELLO
- By heaven, I saw my handkerchief in's hand.
- O perjured woman! thou dost stone my heart,
- And makest me call what I intend to do
- A murder, which I thought a sacrifice:
- I saw the handkerchief.
- DESDEMONA
- He found it then;
- I never gave it him: send for him hither;
- Let him confess a truth.
- OTHELLO
- He hath confess'd.
- DESDEMONA
- What, my lord?
- OTHELLO
- That he hath used thee.
- DESDEMONA
- How? unlawfully?
- OTHELLO
- Ay.
- DESDEMONA
- He will not say so.
- OTHELLO
- No, his mouth is stopp'd;
- Honest Iago hath ta'en order for't.
- DESDEMONA
- O! my fear interprets: what, is he dead?
- OTHELLO
- Had all his hairs been lives, my great revenge
- Had stomach for them all.
- DESDEMONA
- Alas! he is betray'd and I undone.
- OTHELLO
- Out, strumpet! weep'st thou for him to my face?

- OTHELLO
- Down, strumpet!
- DESDEMONA
- Kill me to-morrow: let me live to-night!
- OTHELLO
- Nay, if you strive —
- DESDEMONA
- But half an hour!
- OTHELLO
- Being done, there is no pause.
- DESDEMONA
- But while I say one prayer!
- OTHELLO
- It is too late.
He stifles her
- EMILIA
- Within My lord, my lord! what, ho! my lord, my lord!
- OTHELLO
- What noise is this? Not dead? not yet quite dead?
- I that am cruel am yet merciful;
- I would not have thee linger in thy pain: So, so.
- EMILIA
- Within What, ho! my lord, my lord!
- OTHELLO
- Who's there?
- EMILIA
- Within O, good my lord, I would speak a word with you!
- OTHELLO
- Yes: 'tis Emilia. By and by. She's dead.
- 'Tis like she comes to speak of Cassio's death. —
- The noise was here. Ha! no more moving?
- Still as the grave. Shall she come in? were't good? —
- I think she stirs again: — no. What's best to do?
- If she come in, she'll sure speak to my wife:
- My wife! my wife! what wife? I have no wife.
- O insupportable! O heavy hour!
- Methinks it should be now a huge eclipse
- Of sun and moon, and that the affrighted globe
- Should yawn at alteration.
- EMILIA
- Within I do beseech you
- That I may speak with you, O, good my lord!
- OTHELLO
- I had forgot thee: O, come in, Emilia;
- Soft; by and by. Let me the curtains draw.
- Where art thou?
- Unlocks the door
- Enter EMILIA
- What's the matter with thee now?
- EMILIA
- O, my good lord, yonder's foul murders done!
- OTHELLO
- What, now?
- EMILIA
- But now, my lord.
- OTHELLO
- It is the very error of the moon;
- She comes more nearer earth than she was wont,
- And makes men mad.
- EMILIA
- Cassio, my lord, hath kill'd a young Venetian
- Call'd Roderigo.
- OTHELLO
- Roderigo kill'd!
- And Cassio kill'd!
- EMILIA
- No, Cassio is not kill'd.
- OTHELLO
- Not Cassio kill'd! then murder's out of tune,
- And sweet revenge grows harsh.
- DESDEMONA
- O, falsely, falsely murder'd!
- EMILIA
- Alas, what cry is that?
- OTHELLO
- That! what?
- EMILIA
- Out, and alas! that was my lady's voice.
- Help! help, ho! help! O lady, speak again!
- Sweet Desdemona! O sweet mistress, speak!

- EMILIA
- O, who hath done this deed?
- DESDEMONA
- Nobody; I myself. Farewell
- Commend me to my kind lord: O, farewell!
Dies
- OTHELLO
- Why, how should she be murder'd?
- EMILIA
- Alas, who knows?
- OTHELLO
- You heard her say herself, it was not I.
- EMILIA
- She said so: I must needs report the truth.

- EMILIA
- O, the more angel she,
- And you the blacker devil!
- OTHELLO
- She turn'd to folly, and she was a whore.
- EMILIA
- Thou dost belie her, and thou art a devil.
- OTHELLO
- She was false as water.
- EMILIA
- Thou art rash as fire, to say
- That she was false: O, she was heavenly true!
- OTHELLO
- Cassio did top her; ask thy husband else.
- O, I were damn'd beneath all depth in hell,
- But that I did proceed upon just grounds
- To this extremity. Thy husband knew it all.
- EMILIA
- My husband!
- OTHELLO
- Thy husband.
- EMILIA
- That she was false to wedlock?
- OTHELLO
- Ay, with Cassio. Nay, had she been true,
- If heaven would make me such another world
- Of one entire and Perfect chrysolite,
- I'ld not have sold her for it.
- EMILIA
- My husband!

- EMILIA
- My husband!
- OTHELLO
- What needs this iteration, woman? I say thy husband.
- EMILIA
- O mistress, villany hath made mocks with love,
- My husband say that she was false!
- OTHELLO
- He, woman;
- I say thy husband: dost understand the word?
- My friend, thy husband, honest, honest Iago.

- OTHELLO
- Ha!
- EMILIA
- Do thy worst:
- This deed of thine is no more worthy heaven
- Than thou wast worthy her.
- OTHELLO
- Peace, you were best.
- EMILIA
- Thou hast not half that power to do me harm
- As I have to be hurt. O gull! O dolt!
- As ignorant as dirt! thou hast done a deed —
- I care not for thy sword; I'll make thee known,
- Though I lost twenty lives. — Help! help, ho! help!
- The Moor hath kill'd my mistress! Murder! murder!
Enter MONTANO, GRATIANO, IAGO, and others
- MONTANO
- What is the matter? How now, general!
- EMILIA
- O, are you come, Iago? you have done well,
- That men must lay their murders on your neck.
- GRATIANO
- What is the matter?
- EMILIA
- Disprove this villain, if thou be'st a man:
- He says thou told'st him that his wife was false:
- I know thou didst not, thou'rt not such a villain:
- Speak, for my heart is full.
- IAGO
- I told him what I thought, and told no more
- Than what he found himself was apt and true.
- EMILIA
- But did you ever tell him she was false?
- IAGO
- I did.

- She false with Cassio! — did you say with Cassio?
- IAGO
- With Cassio, mistress. Go to, charm your tongue.
- EMILIA
- I will not charm my tongue; I am bound to speak:
- My mistress here lies murder'd in her bed —
- All
- O heavens forfend!
- EMILIA
- And your reports have set the murder on.
- OTHELLO
- Nay, stare not, masters: it is true, indeed.
- GRATIANO
- 'Tis a strange truth.
- MONTANO
- O monstrous act!
- EMILIA
- Villany, villany, villany!
- I think upon't, I think: I smell't: O villany! —
- I thought so then: — I'll kill myself for grief: —
- O villany, villany!
- IAGO
- What, are you mad? I charge you, get you home.
- EMILIA
- Good gentlemen, let me have leave to speak:
- 'Tis proper I obey him, but not now.
- Perchance, Iago, I will ne'er go home.
- OTHELLO
- O! O! O!
He falls on the bed
- EMILIA
- Nay, lay thee down and roar;
- For thou hast kill'd the sweetest innocent
- That e'er did lift up eye.
- OTHELLO
- Rising O, she was foul!

- GRATIANO
- Poor Desdemona! I am glad thy father's dead:
- Thy match was mortal to him, and pure grief
- Shore his old thread in twain: did he live now,
- This sight would make him do a desperate turn,
- Yea, curse his better angel from his side,
- And fall to reprobation.
- OTHELLO
- 'Tis pitiful; but yet Iago knows
- That she with Cassio hath the act of shame
- A thousand times committed; Cassio confess'd it:
- And she did gratify his amorous works
- With that recognizance and pledge of love
- Which I first gave her; I saw it in his hand:
- It was a handkerchief, an antique token
- My father gave my mother.
- EMILIA
- O heaven! O heavenly powers!
- IAGO
- Come, hold your peace.
- EMILIA
- 'Twill out, 'twill out: I peace!
- No, I will speak as liberal as the north:
- Let heaven and men and devils, let them all,
- All, all, cry shame against me, yet I'll speak.
- IAGO
- Be wise, and get you home.
- EMILIA
- I will not.
IAGO offers to stab EMILIA
- GRATIANO
- Fie!
- Your sword upon a woman?
- EMILIA
- O thou dull Moor! that handkerchief thou speak'st of
- I found by fortune and did give my husband;
- For often, with a solemn earnestness,
- More than indeed belong'd to such a trifle,
- He begg'd of me to steal it.
- IAGO
- Villanous whore!
- EMILIA
- She give it Cassio! no, alas! I found it,
- And I did give't my husband.
- IAGO
- Filth, thou liest!
- EMILIA
- By heaven, I do not, I do not, gentlemen.
- O murderous coxcomb! what should such a fool
- Do with so good a woman?
- OTHELLO
- Are there no stones in heaven
- But what serve for the thunder? — Precious villain!
He runs at IAGO IAGO, from behind, stabs EMILIA, and exit
- GRATIANO
- The woman falls; sure, he hath kill'd his wife.
- EMILIA
- Ay, ay: O, lay me by my mistress' side.
- GRATIANO
- He's gone, but his wife's kill'd.
- MONTANO
- 'Tis a notorious villain. Take you this weapon,
- Which I have here recover'd from the Moor:
- Come, guard the door without; let him not pass,
- But kill him rather. I'll after that same villain,
- For 'tis a damned slave.
Exeunt MONTANO and GRATIANO
- OTHELLO
- I am not valiant neither,
- But ever puny whipster gets my sword:
- But why should honour outlive honesty?
- Let it go all.
- EMILIA
- What did thy song bode, lady?
- Hark, canst thou hear me? I will play the swan.

- Singing
- Willow, willow, willow —
- Moor, she was chaste; she loved thee, cruel Moor;
- So come my soul to bliss, as I speak true;
- So speaking as I think, I die, I die.
Dies
- OTHELLO
- I have another weapon in this chamber;
- It is a sword of Spain, the ice-brook's temper: —
- O, here it is. Uncle, I must come forth.
- GRATIANO
- Within If thou attempt it, it will cost thee dear:
- Thou hast no weapon, and perforce must suffer.
- OTHELLO
- Look in upon me then and speak with me,
- Or, naked as I am, I will assault thee.
Re-enter GRATIANO
- GRATIANO
- What is the matter?
- OTHELLO
- Behold, I have a weapon;
- A better never did itself sustain
- Upon a soldier's thigh: I have seen the day,
- That, with this little arm and this good sword,
- I have made my way through more impediments
- Than twenty times your stop: but, O vain boast!
- Who can control his fate? 'tis not so now.
- Be not afraid, though you do see me weapon'd;
- Here is my journey's end, here is my butt,
- And very sea-mark of my utmost sail.
 Where should Othello go?
- Now, how dost thou look now? O ill-starr'd wench!
- Pale as thy smock! when we shall meet at compt,
- This look of thine will hurl my soul from heaven,
- And fiends will snatch at it. Cold, cold, my girl!
- Even like thy chastity. O cursed slave!
- Whip me, ye devils,
- From the possession of this heavenly sight!
- Blow me about in winds! roast me in sulphur!
- Wash me in steep-down gulfs of liquid fire!
- O Desdemona! Desdemona! dead!
- Oh! Oh! Oh!
Enter LODOVICO. MONTANO, CASSIO carried in a chair,
and Officers with IAGO, prisoner
- LODOVICO
- Where is this rash and most unfortunate man?
- OTHELLO
- That's he that was Othello: here I am.
- LODOVICO
- Where is that viper? bring the villain forth.
- OTHELLO
- I look down towards his feet; but that's a fable.
- If that thou best a devil, I cannot kill thee.
Wounds IAGO
- LODOVICO
- Wrench his sword from him.
- IAGO
- I bleed, sir; but not kill'd.
- OTHELLO
- I am not sorry neither: I'ld have thee live;
- For, in my sense, 'tis happiness to die.
- LODOVICO
- O thou Othello, thou wert once so good,
- Fall'n in the practise of a damned slave,
- What shall be said to thee?
- OTHELLO
- Why, any thing:
- An honourable murderer, if you will;
- For nought I did in hate, but all in honour.
- LODOVICO
- This wretch hath part confess'd his villany:
- Did you and he consent in Cassio's death?
- OTHELLO
- Ay.
- CASSIO
- Dear general, I never gave you cause.
- OTHELLO
- I do believe it, and I ask your pardon.

- IAGO
- Demand me nothing: what you know, you know:
- From this time forth I never will speak word.
- LODOVICO
- What, not to pray?
- GRATIANO
- Torments will ope your lips.
- OTHELLO
- Well, thou dost best.
- LODOVICO
- Sir, you shall understand what hath befall'n,
- Which, as I think, you know not. Here is a letter
- Found in the pocket of the slain Roderigo;
- And here another: the one of them imports
- The death of Cassio to be undertook
- By Roderigo.
- OTHELLO
- O villain!
- CASSIO
- Most heathenish and most gross!
- LODOVICO
- Now here's another discontented paper,
- Found in his pocket too; and this, it seems,
- Roderigo meant to have sent this damned villain;
- But that belike Iago in the interim
- Came in and satisfied him.
- OTHELLO
- O the pernicious caitiff!
- How came you, Cassio, by that handkerchief
- That was my wife's?
- CASSIO
- I found it in my chamber:
- And he himself confess'd but even now
- That there he dropp'd it for a special purpose
- Which wrought to his desire.
- OTHELLO
- O fool! fool! fool!
- CASSIO
- There is besides in Roderigo's letter,
- How he upbraids Iago, that he made him
- Brave me upon the watch; whereon it came
- That I was cast: and even but now he spake,
- After long seeming dead, Iago hurt him,
- Iago set him on.
 For this slave,
- If there be any cunning cruelty
- That can torment him much and hold him long,
- It shall be his. You shall close prisoner rest,
- Till that the nature of your fault be known
- To the Venetian state. Come, bring him away.
- OTHELLO
- Soft you; a word or two before you go.
- I have done the state some service, and they know't.
- No more of that. I pray you, in your letters,
- When you shall these unlucky deeds relate,
- Speak of me as I am; nothing extenuate,
- Nor set down aught in malice: then must you speak
- Of one that loved not wisely but too well;
- Of one not easily jealous, but being wrought
- Perplex'd in the extreme; of one whose hand,
- Like the base Indian, threw a pearl away
- Richer than all his tribe; of one whose subdued eyes,
- Albeit unused to the melting mood,
- Drop tears as fast as the Arabian trees
- Their medicinal gum. Set you down this;
- And say besides, that in Aleppo once,
- Where a malignant and a turban'd Turk
- Beat a Venetian and traduced the state,
- I took by the throat the circumcised dog,
- And smote him, thus.

- GRATIANO
- All that's spoke is marr'd.

Falls on the bed, and dies
- CASSIO
- This did I fear, but thought he had no weapon;
- For he was great of heart.
- LODOVICO
- To IAGO O Spartan dog,
- More fell than anguish, hunger, or the sea!
- Look on the tragic loading of this bed;
- This is thy work: the object poisons sight;
- Let it be hid. Gratiano, keep the house,
- And seize upon the fortunes of the Moor,
- For they succeed on you. To you, lord governor,
- Remains the censure of this hellish villain;
- The time, the place, the torture: O, enforce it!
- Myself will straight aboard: and to the state
- This heavy act with heavy heart relate.
Exeunt


--- layout: post title: Python decorates tagline: " its functions and classes" permalink: /python/decorators-dissection.html categories: [literate programming] tags: [python, decorator] ---
It's undoubtly a tough task and a final point in Python functions scrutiny. But persistence and attention to details should eliminate most of headache.
def primitive_function(arg_1, arg_2): """Multiply arguments and return result""" return arg_1 * arg_2 assert(primitive_function(2, 2) == 4)
But what if we put the arbitrary function inside?
def parent_function(arg_1, arg_2): """Evaluates all nested functions""" def first_nested_function(*args): """Converts positional argument""" # args[0] += 1 print(args) def second_nested_function(**kwargs): """Converts named argument""" kwargs['b'] += 1 first_nested_function() #second_nested_function() #return args[0] + kwargs['b'] pass # assert(parent_function(4, b=7) == 13)
def decorator(any_function_as_an_argument): """Do nothing, just returning an input function""" return any_function_as_an_argument @decorator def sample_function(a, b): return a + b assert(sample_function(2, 3) == 5)
None


Click this button to login to your account or create an account with us
Generating QR code...
Scan this QR code with ConnectMe app
It looks that you are signing in for the first time
Please fill in the information below to create your account:


Email address must be verified before account is activated. This address is used for account notifications and password recovery.
Enter your name for display purposes.
The Ark wallet address is used for contract payments.
An email has been sent to {{model.emailAddress}}. Please follow the link in the email to active your account and sign in.


Generic programming should just be normal programming
Meme (originally Bjarne Stroustrup?)
Indeed, the Concepts TS goes all in on unifying declarations:
bool is_convex(Shape &s); // Valid whether Shape is a class or a concept
Unfortunately, it was soon discovered that unification was not so simple
&&
depends on whether
Shape
is a class or a conceptis_convex
depends on whether Shape
is a class or a concept (e.g., is &is_convex
valid?)is_convex
will differ greatly depending
on whether Shape
is a class or a conceptOf course, it would solve all of the above problems 😃
Shape
is a class or a conceptis_convex
would be the same whether Shape
is a class or a conceptis_convex
would be the same whether Shape
is a class or a conceptSpoiler alert: I love P1141
Shape
a base class with virtual functions or a concept?Shape
is a class, is_convex
will be an
ordinary function and the body can include statements like new Shape();
Shape
is a concept, is_convex
will be a function template and the body of is_convex
will be very different. For example,
new Shape
will no longer be legalis_convex
is a library function,
users of the library will also be saddled to that decision, regardless of whether
dynamic dispatch or performance is more important to themis_convex
that work the same
whether shape
is an OO base class or a generic conceptbool is_convex(Shape auto &s); // Shape is deduced
Shape
is a concept, now all we have to do is describe what it means when Shape
is a class in a way that provides all of the requirements for unificationShape auto
as a concept,
even if Shape
is a classShape auto
Shape &
represents the concept (i.e., notion) that it
can receive objects of any type that inherits from Shape
, so we will just make
that our concepts interpretation!Shape
is a class, then define the
concept inherits_from_Shape
by
and we propose that the compiler rewritetemplate<typename T> concept bool inherits_from_Shape = is_convertible_v<T *, Shape *>;
as the constrained concepts declarationbool is_convex(Shape auto &s);
bool is_convex(inherits_from_Shape auto &s);
Shape
is a class
can be called with any object that inherits frombool is_convex(Shape auto &s);
Shape
, just the same as the familiar
bool is_convex(Shape &s);
inherits_from_Shape
concept, it is a function template, treats && as a universal reference, etc.
just like it would if Shape
were a concept!Shape
a concept with the
same methods (e.g., for
better performance), the usage of is_convex
doesn't change at all!is_convex
with the assumption
that Shape
is a class, then we will be back to having a “Potemkin Village Unification”Shape
in the body with the
inherits_from_shape
concept and now any constructs that don't work for concepts
are prohibited, allowing us to switch Shape
to a concept laterShape
within the body are followed by auto
bool is_convex(Shape auto &s) {Shape *x = new Shape;// Ill-formed! Assumes Shape is a class Shape auto &s2 = convex_hull(s); // OK. Does not assumeShape
is a class return s2 == s; }
To sum up, our proposal is simply
classname auto
occurs,
replace it with inherits_from_classname auto
classname auto
occurs in a function signature,
all occurrences of classname
in the body must be followed by
auto
(this may be relaxed if desired)That's pretty much it.
Let's illustrate with another example
Here is a function taking two arguments
// Want to work identically whether Shape is a concept or type bool sameShapeMaybeDifferentPosition(Shape auto const &s1, Shape auto const &s2) { Shape auto const &s1Translated = s1 - s1.lower_left(); Shape auto const &s2Translated = s2 - s2.lower_left(); return s1Translated == s2Translated; }
Notes:
Shape
is a base class with virtual
functions or a concept requiring the same methods, so it is easy to switch between them to tune
the tradeoffs between compile-time and runtime dispatch or if circumstances change laterShape
C auto
are agnostic
as to whether C
is a class with virtual functions or a concept specifying
the same semanticsC
will always be a class and have no interest in
unification, you can simply ignore this proposal since it only applies if C
is
followed by auto
void f(C c); // Works as always. Not a function template
so there is no impact when not used
auto
sigil
be allowed (but not necessarily required) after a concept name as much as possible within a function body
to maximize the functionality of class/concept agnostic code/


Lazy vs. Eager Enumerables
As described in the main enumerables topic, Rezolver builds lazy enumerables by default, but can also generate eager enumerables. This topic describes the difference between the two and also shows how you can configure your container to build enumerables differently for different types.
Background
What is a Lazy enumerable?
A lazy enumerable is simply one which produces results as you enumerate it rather than being backed by an array or collection which already contains the objects.
As an example, the .Net function Range function generates a lazy enumerable which, when enumerated, provides a range of n integer values starting from a given lower bound:
// an enumerable which starts at 0 and keeps returning values up to, and including, 9
var enumerable = Enumerable.Range(0, 10);
// an enumerable which starts at 100 and keeps returning values up to, and including, 199
var enumerable2 = Enumerable.Range(100, 100);
When you foreach
these enumerables (or call the .GetEnumerator()
) function, these lazy enumerables will
continue generating new results (via the IEnumerator<int>.MoveNext
implementation) until n results have been returned.
Crucially, if you then foreach
these enumerables a second time, you will get a new sequence - with the code that generates each
result being executed again each time. The side effect of this being that if you do something like this:
var enumerable = Enumerable.Range(0, 10).Select(i => new Foo(i));
foreach(var o in enumerable)
{
}
//and then a second time
foreach(var o in enumerable)
{
}
The objects produced by the Select
method are always new instances whenever you enumerate - so in the above example
20 new instances of Foo
are created - not 10.
What is an eager enumerable?
Typically, an eager enumerable is one which has been created from a data structure which already contains all the objects which will be enumerated. The simplest example of this being an array:
var a = new[] { new Foo(), new Foo(), new Foo() };
foreach(var o in a)
{
}
// enumerating the same instances again
foreach(var o in a)
{
}
In this case, all the objects produced by the enumerable are already in memory, and the enumerator is merely walking an array, linked list or whatever.
Tip
Most .Net developers will already be familiar with the idea of 'realising' an enumerable to force it to become 'eager', using the ToArray or ToList extension methods. These functions simply enumerate their input enumerable once, storing the results into an array/list or similar structure.
Examples
Lazy enumerable
To demonstrate Rezolver's default behaviour of creating lazy enumerables, we'll get it to construct an enumerable of the first of these two (contrived) classes:
public class CallsYouBackOnCreate
{
public CallsYouBackOnCreate(Action<CallsYouBackOnCreate> callback)
{
callback(this);
}
}
public class CallsYouBackOnCreate2
{
public CallsYouBackOnCreate2(Action<CallsYouBackOnCreate2> callback)
{
callback(this);
}
}
The example registers an Action<CallsYouBackOnCreate>
callback, in addition to three entries for the CallsYouBackOnCreate
type, which increments a local counter - meaning that we can monitor how many times the constructor for that type is called.
var container = new Container();
var instanceCounter = 0;
// ensures we get an enumerable with three items
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterObject<Action<CallsYouBackOnCreate>>(
o => ++instanceCounter);
var items = container.ResolveMany<CallsYouBackOnCreate>();
// start by asserting that no instances have been created yet
Assert.Equal(0, instanceCounter);
var lastCounter = instanceCounter;
foreach(var item in items)
{
// every time we move next, a new item should be created,
// which, in turn, fires the delegate which increments the
// counter
Assert.Equal(lastCounter + 1, instanceCounter);
lastCounter = instanceCounter;
}
// more importantly - if we enumerate it again, then the
// objects are created again
foreach (var item in items)
{
Assert.Equal(lastCounter + 1, instanceCounter);
lastCounter = instanceCounter;
}
There are a few takeaways from this example:
- Immediately after resolving an instance of the enumerable, we assert that no instances of
CallsYouBackOnCreate
have been created - The two
foreach
loops verify that each instance produced from the enumerable is created just-in-time - The instances produced by the enumerable are not retained by the underlying enumerator. New instances are being created every time enumeration occurs.
In the context of this example, clearly it seems odd that we'd want an enumerable that keeps generating new instances every
time we enumerate it. In the real-world, however, most of the time we inject enumerables, the receiving object will
enumerate once. Equally, if the receiver does expect to enumerate multiple times and wants to guarantee that only the
correct number of items will ever be produced exactly once, then a simple .ToArray()
call will do the trick.
Eager enumerable (global)
As with many other Rezolver behaviours, lazy/eager enumerable creation is controlled by an option which can be set on an ITargetContainer either globally (which affects all enumerables) or on a per-type basis (see next).
The option that controls this behaviour is LazyEnumerables - which of course has a
Default value of true
(thus when it's not explicitly set on a target container, lazy
enumerables are enabled).
This example is very similar to the lazy enumerable example above - but this time we're going to disable all lazy enumerables on the ITargetContainer which underpins the container:
var container = new Container();
var instanceCounter = 0;
// set this option to disable lazy enumerables globally
container.SetOption<Options.LazyEnumerables>(false);
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterObject<Action<CallsYouBackOnCreate>>(
o => ++instanceCounter);
var items = container.ResolveMany<CallsYouBackOnCreate>();
// this time all instances will be created immediately.
Assert.Equal(3, instanceCounter);
// and we'll just assert that the instance count never changes
foreach(var item in items)
{
Assert.Equal(3, instanceCounter);
}
foreach (var item in items)
{
Assert.Equal(3, instanceCounter);
}
In contrast to the previous example, then, note that all the instances within the enumerable are created as soon as the container returns it to the caller (or injects it as a constructor/delegate argument) - and also note that the number of instances created doesn't change on repeated enumerations.
Warning
Do not confuse this behaviour with that of a singleton. If we were to fetch two eager enumerables from the container, then both would create their instances up-front, independent of each other.
Eager enumerable (per-service)
Obviously, being able to switch all enumerables to eager is likely to be a bit of a sledgehammer in many cases. So Rezolver also lets you control the production of lazy or eager enumerables on a per-type basis.
To do this, when setting the LazyEnumerables options to false
, you also include the type of service
whose enumerables are to be affected (see the SetOption overload for more):
// for this test we'll drop the two foreach loops and just use .ToArray()
var container = new Container();
var instanceCounter1 = 0;
var instanceCounter2 = 0;
// set this option to disable lazy enumerables only for
// the type 'CallsYouBackOnCreate2'
container.SetOption<Options.LazyEnumerables, CallsYouBackOnCreate2>(false);
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterType<CallsYouBackOnCreate>();
container.RegisterObject<Action<CallsYouBackOnCreate>>(
o => ++instanceCounter1);
container.RegisterType<CallsYouBackOnCreate2>();
container.RegisterType<CallsYouBackOnCreate2>();
container.RegisterType<CallsYouBackOnCreate2>();
container.RegisterObject<Action<CallsYouBackOnCreate2>>(
o => ++instanceCounter2);
// will be lazy
var items1 = container.ResolveMany<CallsYouBackOnCreate>();
Assert.Equal(0, instanceCounter1);
// will be eager
var items2 = container.ResolveMany<CallsYouBackOnCreate2>();
Assert.Equal(3, instanceCounter2);
var array1a = items1.ToArray();
var array1b = items1.ToArray();
var array2a = items2.ToArray();
var array2b = items2.ToArray();
Assert.Equal(6, instanceCounter1);
Assert.Equal(3, instanceCounter2);
Tip
Remember - per-service options can also be defined for open generics and for common bases or interfaces of a given type.
This means you can set it for BaseClass
and it will apply to any type derived from it (unless you also set it
specifically for that derived type). Equally, setting it for the open generic IGeneric<>
will apply to any
closed generic built from it (again - unless you expressly set it differently for that closed generic).
Tip
Although it should be obvious by now - you can very easily invert the lazy enumerable behaviour to opt-in instead of
opt-out by setting the LazyEnumerables to false
globally, which then allows you to set it to
true
for specific services.
Benefits of being lazy
The reasons why Rezolver defaults to lazy enumerables are the same as why you'd use them in any .Net project:
- Lazy enumerables are generally faster to create than an eager enumerable containing the same results, because typically the enumerable just wraps a function. The eager version of the same enumerable will still use that function to produce the instances, but must also execute it and capture the results on creation.
- Lazy enumerables generally have a lower memory overhead. The pathological case (and, admittedly, not necessarily relevant in the IOC world) is an enumerable that produces a theoretically infinite series. Such enumerables can clearly never be evaluated eagerly, because they require more storage than the machine (or in most theories of reality, the universe itself!) has available. The more realistic case is where you might have 100s of registrations for a given type, all the implementations of which consume big chunks of memory - creating an eager enumerable of these will instantly grab a chunk of memory for those instances, whereas a lazily evaluated enumerable would not.
That said, there are of course reasons why you'd still want to use an eager enumerable. Perhaps the objects are singletons and/or are 'hard' to create - in which case you might as well expend a bit of extra effort up front to create them so you don't have to do it later.


We are SuperM, one of Asia's finest Korean bands. We are made up of 7 members from different popular K-pop bands (from the likes of Exo, Shinee and NCT). We have songs like Jopping and 100. Which topped the 200 Billboard Charts in America in both 2019 and 2020. We also had our first US Tour in 2019 with sell-out venues all around America. Our current 2020 tour is on a halt due to the current Covid-19 Pandemic.
Formed in 2019 by SM Entertainment and Capitol Records, SuperM consists of Taemin, Baekhyun, Kai, Taeyong, Ten, Mark and Lucas. These are members of existing bands by SM Entertainment to create a K-Pop SuperGroup. Their latest album "Super One" has peaked the US charts at 1 in 2020.


✏ Please connect your earphone/headphone and give permission (if you're using Google Chrome) to use your microphone.
✏ Click the record button and speak out the line that appears.
✏ Click stop to end recording.
✏ Click next for a new sentence.
✏ You may play the recording and discard it if you don't like it.
✏ The recording doesn't have to be completely clean/devoid of noise, some small amount of noise is not an issue. Just make sure what you are saying can be heard clearly.
✏ Please say the sentences exactly as written.
✏ Please play back each recording at least once to make sure it recorded what you said correctly.


Always centers the camera to the world origin by pixelflinger · Pull Request #913 · google/filament This is effectively moving all shader computations to view space, improving floating-point precision in the shaders, by staying around zero where fp precision is highest. This also ensures that whe...
Past, Present, Future: From Co-ops to Cryptonetworks - Andreessen Horowitz Today, some of the most valuable corporations in the world today are “network operators”. Thanks to network effects, these platforms become more valuable to existing users as each new user joins. N…
Dicey Dungeons v0.16.1 - Dicey Dungeons by Terry Cavanagh, chipzel, Marlowe Dobbe Hey all! Just uploaded a minor bugfix update for this week's big update! Here's the changelog: Design changes: Jester: - "Ice shatter" has been made more powerful. - "Flame Blast" countdown red...
Tiger - Breakdown - Blender 2.8 Eevee development test Music: Phoenix and City of lonely ghosts by Sergey Cheremisinov http://freemusicarchive.org/music/Sergey_Cheremisinov/ Artstation: https://www.artstation.com/dbystedt Twitter: https://twitter.com/3dbystedt Created in open source and free software Bl...
Crew Demo-1 Mission | Launch At 2:49 a.m. EST on March 2, SpaceX launched Crew Dragon’s first demonstration mission from Launch Complex 39A (LC-39A) at NASA’s Kennedy Space Center in Florida. The intent of this test flight without crew on board the spacecraft was to demonstrate Space...
Live coverage: Crew Dragon capsule returns to Earth – Spaceflight Now If you would like to see more articles like this please support our coverage of the space program by becoming a Spaceflight Now Member. If everyone who enjoys our website helps fund it, we can expand and improve our coverage further.
The Trust Official Trailer #1 (2016) - Elijah Wood, Nicolas Cage Movie HD Subscribe to TRAILERS: http://bit.ly/sxaw6h Subscribe to COMING SOON: http://bit.ly/H2vZUn Like us on FACEBOOK: http://bit.ly/1QyRMsE Follow us on TWITTER: http://bit.ly/1ghOWmt The Trust Official Trailer #1 (2016) - Elijah Wood, Nicolas Cage Movie HD A ...
CensoredUsername/dynasm-rs A dynasm-like tool for rust. Contribute to CensoredUsername/dynasm-rs development by creating an account on GitHub.


SPECIAL DISCOUNT | 10% Discount on all services for our first-time customer's.
ASE certified technicians totaling 45 plus years of experience. There's nothing that we don't fix. Minor to major repairs? We do it all! A/C, electrical, cooling systems, engine overhauls, etc. You get the point!
Get a QuoteAt Wright Automotive & Air, our word is our bond. We provide unrivaled services that always put our customers first. You can expect to receive services of the utmost quality. Our technicians always work with you in mind, as if they're doing the work for their own family.
Free Consultation
Child Friendly
Debit & Credit Cards Accepted
1505 W 10th Place, Suite 102, Tempe, AZ 85281
Tuesday - Saturday: 8:00am - 6:00pm
Sunday & Monday: CLOSED


VII.4 Building Development Transportation and Accessibility
Transportation &) Accessibility –
Building Development (VII.4.)
Efficient ingress and egress to the building. (These are the Big Three.)
- Cars, bikes, pedestrians,
- Mail, shipping, receiving
- Trash collection and removal
Emergency ingress and egress:
- Emergency vehicles like ambulances and fire-fighting equipment (turning radii)
- Fire and police access to building systems
- Water outlets
- Elevator controls
- HVAC controls
- Alarm systems
Efficient accessibility within the building(s):
- Elevators, escalations, "people movers"
- Hallways, stairs, suite entrances
- Emergency routes (stairways, corridors, shelter in place facilities)
- Americans with Disabilities Act Compliance
- This is an all-encompassing act that is constantly being updated.
- It is included in most local building codes.
- Compliance is not compromised!


View Highscores
0
Code Quiz
Click the start button to start the quiz
Start
All done!
Your final score is
.


2022
Coupled Rigid-Block Analysis: Stability-Aware Design of Complex Discrete-Element Assemblies
Kao, Gene Ting-Chun, Antonino Iannuzzo, Bernhard Thomaszewski, Stelian Coros, Tom Van Mele, and Philippe Block. "Coupled Rigid-Block Analysis: Stability-Aware Design of Complex Discrete-Element Assemblies." Computer-Aided Design 146 (2022): 103216.
A computational design pipeline of 3D discrete-element assemblies in architecture
Kao, Gene Ting-Chun, Francesco Ranaudo, Antonino Iannuzzo, Stelian Coros, Tom Van Mele, and Philippe Block. "A computational design pipeline of 3D discrete-element assemblies in architecture." In Proceedings of the 2022 European Congress on Computational Methods in Applied Sciences and Engineering (ECCOMAS), Oslo 2022. abstract accepted.
建築與科學 - 瑞士蘇黎世聯邦理工學院的數位建築實踐 Architecture and Science - Digital Architecture in the Swiss Federal Institute of Technology Zurich
Kao, Gene Ting-Chun "Architecture and Science - Digital Architecture in the Swiss Federal Institute of Technology Zurich." In Taiwan Architect 567 (2022): 112-115.
2021
Understanding rigid-block equilibrium method via mathematical programming
Kao, Gene Ting-Chun, Antonino Iannuzzo, Stelian Coros, Tom Van Mele, and Philippe Block. "Understanding the rigid-block equilibrium method by way of mathematical programming." Proceedings of the Institution of Civil Engineers-Engineering and Computational Mechanics 174, no. 4 (2021): 178-192.
COMPAS Masonry: a computational framework for practical assessment of unreinforced masonry structures
Iannuzzo, Antonino, Alessandro Dell’Endice, Ricardo Maia Avelino, Gene Ting-Chun Kao, Tom Van Mele, and Philippe Block. "COMPAS masonry: a computational framework for practical assessment of unreinforced masonry structures." In Proceedings of the SAHC Symposium. 2021.
2020
3d-printed bending-active formwork for shell structures
Wang, Xiang, Kam-Ming Mark Tam, Alexandre Beaudouin-Mackay, Benjamin Hoyle, Molly Mason, Zhe Guo, Weizhe Gao et al. "3d-Printed Bending-Active Formwork for Shell Structures." In Architectural Intelligence, pp. 295-314. Springer, Singapore, 2020.
2019
High-performance corrugated concrete shell construction on bending-actuated robotically 3D-printed formworks
Wang, Xiang, Kam-Ming Mark Tam, Dalma Földesi, Hyerin Lee, Jung In Seo, Anna Vasileiou, Youyuan Luo et al. "High-Performance Corrugated Concrete Shell Construction on Bending-actuated Robotically 3D-printed Formworks." In Proceedings of IASS Annual Symposia, vol. 2019, no. 6, pp. 1-8. International Association for Shell and Spatial Structures (IASS), 2019.
Tile-vault construction on bending-actuated robotically 3D-printed formwork
Wang, Xiang, Kam-Ming Mark Tam, Alexandre Beaudouin-Mackay, Benjamin Hoyle, Molly Mason, Zhe Guo, Weizhe Gao et al. "Tile-vault construction on bending-actuated robotically 3D-printed formwork" In Proceedings of the IASS Symposium 2019, Barcelona, 2019.
2017
Assembly-aware design of masonry shell structures: a computational approach
Kao, Gene TC, Axel Körner, Daniel Sonntag, Long Nguyen, Achim Menges, and Jan Knippers. "Assembly-aware design of masonry shell structures: a computational approach." In Proceedings of IASS Annual Symposia, vol. 2017, no. 23, pp. 1-10. International Association for Shell and Spatial Structures (IASS), 2017.