You've just created a simple Play Framework application! Now lets explore the code and make some changes.
Once the application has been compiled and the server started, your application can be accessed at: http://localhost:9000
Check in Run to see the server status.
To see how HTTP verbs and paths are mapped to controllers that handle the requests check out the conf/routes file. The single controller class for this application is defined in the app/controllers/Application.java file.
A regular controller method in Play takes request and returns a response, like:
public static Result syncFoo() {
return ok("sync foo");
}
Underneath the covers Play is implementing this in a async & non-blocking way, meaning threads in a waiting state can be reclaimed and used for something else. This differs from the usual Java servlet model where each open connection must have a thread.
But this simple controller method doesn't have anything asynchronous about it. There is no reason to be asynchronous unless you can also be non-blocking so you don't have to add extra async boilerplate code to your controllers unless there is something to not block on. If you did want to do this same thing asynchronously using Java 8's Lambdas it would look like:
public static F.Promise<Result> asyncFoo() {
return F.Promise.promise(() -> ok("async foo"));
}
Instead of returning a Result
this controller method returns a handle to something that will in the future return the result. In Play's Java API this is a Promise
. This now allows an event to trigger the response and in the meantime the thread used for handling this request can be reclaimed. This controller method constructs a Promise
that immediately is completed with a value, the Result
. The controller is now asynchronous but it still isn't non-blocking because it has nothing to not block on.
A simple example of non-blocking is to set a delay or callback to happen after some amount of time. Here is an example of that:
public static F.Promise<Result> asyncNonBlockingFoo() {
return F.Promise.delayed(() -> ok("async non-blocking foo"), 5, TimeUnit.SECONDS);
}
When a request comes into this controller method the method will immediately return the Promise
. Now Play can un-block a thread. During the 5 second delay there won't be any threads used for the request. Try this request in your browser. You will notice that your browser loading indicator spins for 5 seconds but even though there was an open connection to the server for the request, most of the time no threads were being used to handle the request.
Artificial delays are a simple place to not-block but aren't are very usual. A more practical place to not-block is when an incoming request must fetch some remote data in order to fulfill the request. Here is an example that does just that:
public static F.Promise<Result> reactiveRequest() {
F.Promise<WS.Response> typesafePromise = WS.url("http://www.typesafe.com").get();
return typesafePromise.map(response -> ok(response.getBody()));
}
The controller method returns a Promise
so it is asynchronous. Inside the controller method a web client request is made to www.typesafe.com
which is async & non-blocking. It returns a Promise<WS.Response>
but the controller method must return a Promise<Result>
. The WS.Response
is essentially the read side of a web response and the Result
is the write side. When the response comes back from www.typesafe.com
we need to transform the WS.Response
into a Result
. The map
method on the Promise
allows us to do exactly that. When the response comes back the Lambda function is executed on the response, which in this case creates the Result
containing just the response body. Try it out in your browser.
Note: You will notice that since we didn't set the content type the response is just plain text. Usually we'd be working with JSON or other data formats instead of HTML pages.
There were two requests, both of which were async & non-blocking; the request from your browser to the Play app and the request from the Play app to www.typesafe.com
. Each of these requests was not using a thread when it was waiting for the other side to respond. This is called Reactive Composition. There was some point of time when we were just waiting for www.typesafe.com
to respond, during which no threads were being used to handle this request. But as soon as the response came back from www.typesafe.com
, the typesafePromise
was completed, then the Response
was transformed into Result
and the controller method's Promise was completed, thus sending the response back to the user.
This gets more exciting when a web request composes together more than one async & non-blocking service in order to produce a result. Here is an example of a controller method that makes two web requests:
public static F.Promise<Result> reactiveComposition() {
final F.Promise<WS.Response> twitterPromise = WS.url("http://www.twitter.com").get();
final F.Promise<WS.Response> typesafePromise = WS.url("http://www.typesafe.com").get();
return twitterPromise.flatMap((twitter) ->
typesafePromise.map((typesafe) ->
ok(twitter.getBody() + typesafe.getBody())));
}
In this case an incoming request needs to compose together responses from www.twitter.com
and www.typesafe.com
. One way to get the responses from both requests in a async & non-blocking way is to call flatMap
on one, then inside that Lambda function, call map
on the other. The reason for the flatMap
is it's Lambda function takes a response but returns a Promise<Result>
instead of just a Result
. Using a map
in this way would result in a Promise<Promise<Result>>
and we really just a Promise<Result>
so we flatten
them. (Note: flatMap
is really a map
and a flatten
together.)
Try this example out in your browser.
Now three requests are chained together and are all async & non-blocking. So there is some amount of time when we are waiting on either www.twitter.com
and www.typesafe.com
and no threads are being used for the user's request.
Not only can typical web requests be async & non-blocking but this same foundation can be used for doing Reactive Push from the server to the client. Play supports three different ways to do this which have varying browser support: Comet, Server Sent Events, and WebSockets. WebSockets in unique because it supports bi-directional Reactive Push so the client can also push messages to the server.
Here is an example controller method that sets up the Server Sent Event channel (also known as EventSource
) and sends a message when the browser connects to that channel:
public static Result events() {
EventSource eventSource = new EventSource() {
public void onConnected() {
sendData("hello");
}
};
return ok(eventSource);
}
Note: This example doesn't yet take advantage of Lambdas but it will be able to in the upcoming Play 2.3 release. Also in most cases these messages would be JSON but this simple example just sends a string.
You can find the client-side code for this example (written in CoffeeScript) in the app/assets/javascripts/index.coffee file.
Once created the eventSource
object can be used to send messages to the client whenever your applications wants to push a message. The only time a thread is used for this push connection is when a message is being sent.
WebSockets provide a way to do bi-directional push. In Play this is done async & non-blocking like everything else. Here is a controller method that creates the WebSocket:
public static WebSocket<String> echo() {
return new WebSocket<String>() {
public void onReady(final In<String> in, final Out<String> out) {
in.onMessage(out::write);
}
};
}
In this case the WebSocket has a onMessage
handler for when the client sends a message to the server. This uses a Java 8 method handle to simply send that message back down to the client. Check out the app/assets/javascripts/index.coffee file to see the client-side of this example.


Apply for help with NHS costs
What is your address?
Make sure your GP and dentist have your correct home address.
Why this is important
Random checks are carried out on patients prescriptions and dental claims.
This is to make sure people are claiming correctly. One way we do this is to match the address you give with the address on your medical records.


Today is
12 am
01 am
02 am
03 am
04 am
05 am
06 am
07 am
08 am
09 am
Applied Statistics
10 am
11 am
History of the World from 1500
12 pm
Computer Science
Comp. Sci. lab 4
01 pm
02 pm
03 pm
04 pm
05 pm
06 pm
07 pm
08 pm
09 pm
History Reflection 3
10 pm
11 pm
Applied Statistics Homework 5


{% extends 'email.'|add:email_format %} {% block header %}Tell us if the HiPEAC Jobs portal is helping you recruit talent.{% endblock %} {% block body %} Dear {{ user_name }}, Thank you for using HiPEAC Jobs. A number of vacancies at {{ institution_name }} on the portal have now expired. {% for job in jobs %} {% if email_format == 'html' %}


The Merchant of Venice
by William Shakespeare
Merchant of Venice: Act 2, Scene 5
Additional Information
- Year Published: 1597
- Language: English
- Country of Origin: England
- Source: Shakespeare, W. (1597). The Merchant of Venice.New York: Sully and Kleinteich.
-
Readability:
- Flesch–Kincaid Level: 11.0
- Word Count: 481
- Genre: Tragedy
- Keywords: 16th century literature, british literature, comedy, drama, merchant of venice, william shakespeare
- ✎ Cite This
Downloads
SCENE. The same. Before SHYLOCK'S house
(Enter SHYLOCK and LAUNCELOT.)
SHYLOCK.
Well, thou shalt see; thy eyes shall be thy judge,
The difference of old Shylock and Bassanio:—
What, Jessica!—Thou shalt not gormandize,
As thou hast done with me;—What, Jessica!—
And sleep and snore, and rend apparel out—
Why, Jessica, I say!
LAUNCELOT.
Why, Jessica!
SHYLOCK.
Who bids thee call? I do not bid thee call.
LAUNCELOT.
Your worship was wont to tell me I could do nothing
without bidding.
(Enter JESSICA.)
JESSICA.
Call you? What is your will?
SHYLOCK.
I am bid forth to supper, Jessica:
There are my keys. But wherefore should I go?
I am not bid for love; they flatter me;
But yet I'll go in hate, to feed upon
The prodigal Christian. Jessica, my girl,
Look to my house. I am right loath to go;
There is some ill a-brewing towards my rest,
For I did dream of money-bags to-night.
LAUNCELOT.

SHYLOCK.
So do I his.
LAUNCELOT.
And they have conspired together; I will not say you
shall see a masque, but if you do, then it was not for nothing
that my nose fell a-bleeding on Black Monday last at six o'clock
i' the morning, falling out that year on Ash-Wednesday was four
year in the afternoon.
SHYLOCK.
What! are there masques?  By Jacob's staff, I swear
I have no mind of feasting forth to-night;
But I will go. Go you before me, sirrah;
Say I will come.
LAUNCELOT.
I will go before, sir. Mistress, look out at window for all this;
There will come a Christian by
Will be worth a Jewess' eye.
(Exit LAUNCELOT.)
SHYLOCK.
What says that fool of Hagar's offspring, ha?
JESSICA.
His words were 'Farewell, mistress'; nothing else.
SHYLOCK.
The patch is kind enough, but a huge feeder;
Snail-slow in profit, and he sleeps by day
More than the wild-cat; drones hive not with me,
Therefore I part with him; and part with him
To one that I would have him help to waste
His borrow'd purse.
(Exit.)
JESSICA.
Farewell; and if my fortune be not crost,
I have a father, you a daughter, lost.
(Exit.)


| Request | Date of PX | Type of PX | Location of PX | Histology | Accession Number | Facility | Phone | Fax | Destruction Policy (years) | {{col.columnDisplay}} | Request | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unable To Obtain | ||
|
|


From these results, numtel:webcomponent has been created.
| # | Option | Advantages | Disadvantages |
|---|---|---|---|
| 1 | X-Tags WebComponent |
|
|
| 2 | iframe |
|
|
| 3 | Polymer WebComponent |
|
|
Prepared by Ben Green on October 24, 2014
You've pressed the button {{counter}} times.


{% extends "base.html" %} {% load bootstrap3 %} {% block title %}Become a guide{% endblock %} {% block content %}
Thanks for your interest in being an IETF Guide! Please provide the email address you would like to use. We will send you a link to a page where you can provide details, and maintain those details later.
If you are already registered as a guide, but don't remember the link that was sent to you previously, it's safe to just provide your email address here again to cause the link to be resent.
{% endblock %}


A Deity's Story is available now!
By downloading you agree to only use for educational purposes. You will not redistrubute, modify or copy any of its contents.
ABOUT.
Psst... this website is still ongoing development.
Alex. 25. M. Artist & Aspiring Game Developer.
Contact
For all enquiries please email<EMAIL_ADDRESS>CV, Linked in & Unity Connect page available upon request. Personal Website (Under Construction).
A 3d Platformer with 2D characters. Developed by Alexander Evans (Shu Creative) for University as a Game Aspect showcasing a specific Art Style.


CS49000-IOS is a course on developing applications for iOS, using the Swift programming language.
Topics include views, networking, navigation, passing data, autolayout, backend integration, authentication, animations, gestures, device frameworks, custom views, multithreading, and drawing.
This course is done in partnership with CodePath which provides the curriculum as well as resources for students to use.
No exams or quizzes!
There is NO REQUIRED textbook for this class. Since Swift is a relatively new and changing language the best resources right now are websites. Suggested resources:
Xcode allows for you to run your application on a device simulator. So a physical iOS device is not required, but strongly recommended.
If you have a question about the grading or would like to know your grade, talk to one of the teaching assistants about it. A more detailed grade breakdown can be found here
For the most part class policies will be the same as CodePath's unless there is a conflict with a Purdue policy which will then supersede the CodePath policy.
Purdue University values intellectual integrity and the highest standards of academic conduct. To know and understand what is academic integrity, what is expected from you, and what you should NOT do, read carefully this document: Academic Integrity.
In CS49000-IOS, a first instance of academic dishonesty results in a zero for that assignment. A second instance of academic dishonesty results in a grade of F.
In accordance with the Purdue University Department of Computer Science Academic Integrity Policy, all instances of academic dishonesty on an exam, project, or lab assignment are reported to the Dean of Students Office.
To report an emergency, call 911. To obtain updates regarding an ongoing emergency, sign up for Purdue Alert text messages, view www.purdue.edu/ea.
There are nearly 300 Emergency Telephones outdoors across campus and in parking garages that connect directly to the PUPD. If you feel threatened or need help, push the button and you will be connected immediately.
If we hear a fire alarm during class we will immediately suspend class, evacuate the building, and proceed outdoors. Do not use the elevator.
If we are notified during class of a Shelter in Place requirement for a tornado warning, we will suspend class and shelter in [the basement].
If we are notified during class of a Shelter in Place requirement for a hazardous materials release, or a civil disturbance, including a shooting or other use of weapons, we will suspend class and shelter in the classroom, shutting the door and turning off the lights.
In the event of a major campus emergency, course requirements, deadlines and grading percentages are subject to changes that may be necessitated by a revised semester calendar or other circumstances beyond the instructor’s control. If an emergency occurs, you can consult the Purdue web page (http://www.purdue.edu).
Copyright © 2020, Purdue University, all rights reserved. Purdue University is an equal access/equal opportunity university. If you have trouble accessing this page because of a disability, please contact Siraj Zaneer. Please review the Emergency Preparedness website for additional information. http://www.purdue.edu/ehps/emergency_preparedness/index.html


Explainer : No, SC Has Not Referred Sabarimala Review To Larger Bench 16 Nov 2019, 08:30 by LIVELAW NEWS NETWORK Explainer video on the SC order in Sabarimala review case passed on Nov 14


OSCARQ
Welcome to
OSCARQ
, an Open Source Cyber-Risk Quantification tool developed by
Kaustubh Kishore, Garima Pandita, Sanya Kapoor, Arnav Goel and Vaibhav Srivastava
Choose your platform


Simple - by data structure
Simple - by template
Switch on hover
Switch on hover delay
Controlled active position
Nested


When you visit my site I collect the personal information you give us such as your name, address and email address.
When you browse my site, I also automatically receive your computer’s internet protocol (IP) address in order to provide me with information that helps us learn about your browser and operating system.
Email marketing (if applicable): With your permission, I may send you emails about our site, new products and other updates.
SECTION 2 - CONSENT
How do you get my consent?
When you provide me with personal information via the contact form, you imply that you consent to my collecting it and using it for that specific reason only.
If I ask for your personal information for a secondary reason, like marketing, I will either ask you directly for your expressed consent, or provide you with an opportunity to say no.
How do I withdraw my consent?
If after you opt-in, you change your mind, you may withdraw your consent for us to contact you, for the continued collection, use or disclosure of your information, at anytime, by contacting me at<EMAIL_ADDRESS>or mailing us at: Brice Walker 8119 29th Avenue Ct S, Apartment J, Lakewood, WA, 98499, United States
SECTION 3 - DISCLOSURE
I may disclose your personal information if am are required by law to do so or if you violate omy Terms of Service.
SECTION 5 - THIRD-PARTY SERVICES
In general, the third-party providers such as Google Analytics used by me will only collect, use and disclose your information to the extent necessary to allow them to perform the services they provide to us.
However, certain third-party service providers have their own privacy policies in respect to the information we are required to provide to them for your purchase-related transactions.
For these providers, I recommend that you read their privacy policies so you can understand the manner in which your personal information will be handled by these providers.
In particular, remember that certain providers may be located in or have facilities that are located in a different jurisdiction than either you or us. So if you elect to proceed with a transaction that involves the services of a third-party service provider, then your information may become subject to the laws of the jurisdiction(s) in which that service provider or its facilities are located.
As an example, if you are located in Canada and your transaction is processed by a payment gateway located in the United States, then your personal information used in completing that transaction may be subject to disclosure under United States legislation, including the Patriot Act.
Once you leave my site’s website or are redirected to a third-party website or application, you are no longer governed by this Privacy Policy or our website’s Terms of Service.
Links
When you click on links on my site, they may direct you away from our site. I am not responsible for the privacy practices of other sites and encourage you to read their privacy statements.
SECTION 6 - SECURITY
To protect your personal information, I take reasonable precautions and follow industry best practices to make sure it is not inappropriately lost, misused, accessed, disclosed, altered or destroyed.
COOKIES
I use cookies and google analytics to track page hits. I’ve listed them here so you can choose if you want to opt-out of cookies or not. I use this information to inform decisions regarding the hosting of my website by tracking bandwidth and to better understand interest in my site by tracking user trends.
SECTION 7 - AGE OF CONSENT
By using this site, you represent that you are at least the age of majority in your state or province of residence, or that you are the age of majority in your state or province of residence and you have given me your consent to allow any of your minor dependents to use this site.
SECTION 8 - CHANGES TO THIS PRIVACY POLICY
I reserve the right to modify this privacy policy at any time, so please review it frequently. Changes and clarifications will take effect immediately upon their posting on the website. If I make material changes to this policy, I will notify you here that it has been updated, so that you are aware of what information I collect, how I use it, and under what circumstances, if any, I use and/or disclose it.
QUESTIONS AND CONTACT INFORMATION
If you would like to: access, correct, amend or delete any personal information we have about you, register a complaint, or simply want more information contact me at<EMAIL_ADDRESS>or by mail at Brice Walker
[Re: Privacy Compliance Officer]
[8119 29th Avenue Ct S, Apartment J, Lakewood, WA, 98499, United States]
----


Meet your Match!
Have a great idea for a product, but need help making it a reality? We're here to help. Startup Matchmaker is the best place for designers and developers to find each other.
 Developer? Put yourself out there so that others can find you!
Sign Up Now
second bucket
Find a Developer
Looking for a fantastic developer to work with on the next big thing? Look no further.
Start Your Search
third bucket
Find a Designer
Need someone who can make a product intuitive and appealing? Get ready.
Start Your Search


Sets build current patches only mode.
If this is enabled, all currently running or scheduled builds for previous patchsets will be canceled before a new build is scheduled for the new patchset.


Task Description */
Create a module for a Telerik Academy course
The course has a title and presentations
Each presentation also has a title
There is a homework for each presentation
There is a set of students listed for the course
Each student has firstname, lastname and an ID
IDs must be unique integer numbers which are at least 1
Each student can submit a homework for each presentation in the course
Create method init
Accepts a string - course title
Accepts an array of strings - presentation titles
Throws if there is an invalid title
Titles do not start or end with spaces
Titles do not have consecutive spaces
Titles have at least one character
Throws if there are no presentations
Create method addStudent which lists a student for the course
Accepts a string in the format 'Firstname Lastname'
Throws if any of the names are not valid
Names start with an upper case letter
All other symbols in the name (if any) are lowercase letters
Generates a unique student ID and returns it
Create method getAllStudents that returns an array of students in the format:
{firstname: 'string', lastname: 'string', id: StudentID}
Create method submitHomework
Accepts studentID and homeworkID
homeworkID 1 is for the first presentation
homeworkID 2 is for the second one
...
Throws if any of the IDs are invalid
Create method pushExamResults
Accepts an array of items in the format {StudentID: ..., Score: ...}
StudentIDs which are not listed get 0 points
Throw if there is an invalid StudentID
Throw if same StudentID is given more than once ( he tried to cheat (: )
Throw if Score is not a number
Create method getTopStudents which returns an array of the top 10 performing students
Array must be sorted from best to worst
If there are less than 10, return them all
The final score that is used to calculate the top performing students is done as follows:
75% of the exam result
25% the submitted homework (count of submitted homeworks / count of all homeworks) for the course
Course.init('test',['test test']


This is not just another TodoMVC demo of a framework. Make sure you download the latest Cerebral Debugger from
the Chrome Store
, and you will see :-) Read more at the
Cerebral Website


Enum ImageEncoderType
This specifies the encoder type used to encode a collection of bitmap frame objects to an image stream.
This is used by the ImageSvgConverter converter.
Namespace: SharpVectors.Converters
Assembly: SharpVectors.Converters.Wpf.dll
Syntax
public enum ImageEncoderType
Fields
BmpBitmap
GifBitmap
JpegBitmap
PngBitmap
TiffBitmap
WmpBitmap
| Name | Description |
|---|---|
| BmpBitmap | Specifies an encoder that is used to encode bitmap (BMP) format images, that is BmpBitmapEncoder. |
| GifBitmap | Specifies an encoder that is used to encode Graphics Interchange Format (GIF) images, that is GifBitmapEncoder. |
| JpegBitmap | Specifies an encoder that is used to encode Joint Photographics Experts Group (JPEG) format images, that is JpegBitmapEncoder. |
| PngBitmap | Specifies an encoder that is used to encode Portable Network Graphics (PNG) format images, that is PngBitmapEncoder. |
| TiffBitmap | Specifies an encoder that is used to encode Tagged Image File Format (TIFF) images, that is TiffBitmapEncoder. |
| WmpBitmap | Specifies an encoder that is used to Microsoft Windows Media Photo (WDP) images, that is WmpBitmapEncoder. |


National Parks I've Visited
On this map, you can find the location of every U.S. National Park. There are 63 declared National Parks in the United States, California leading with 9.
The parks are separated by places I've visited and places I have yet to visit (obviously I have a lot of work to do). Locations marked by a square = visited and those marked by a circle = unvisited.


Javascript Language
( ) - Parentheses:
- Hold paramater names when defining a function and hold argument values when calling a function. E.g. Defining the function:
golf(par, score)
and calling the function: golf(4, 3)
. Note: If parameters are not required, empty parenthesis must still be used when defining and calling a function.
- Surround conditional statements in some functions. E.g.
if(it snows tomorrow)wear boots.
- Determine the order of operations in mathematical equations. E.g.
X = 4 + (3 x 2)
[ ] - Brackets:
- Hold values in an array (each one separated by a comma) and hold the index number when accessing an array. E.g.
basket [apple, banana, lemon]
and basket[2] = lemon
{ } - Braces:
- Holds KEY:VALUE pairs when defining an object (each pair separated by a comma). E.g.
Basket {apple: large, banana: small}
- Hold blocks of code within functions (each statement separated by a semicolon). E.g.
make drink {pour water; get cup}
'Single quotes'
- Used to surround strings of English language text to let the browser know it is not code.
- The only rule is that the opening and closing quotations MUST be the same. This means you can use the opposite pair within your string and they will appear in the actual text on the page. E.g.
"Press the 'contact' button!"
= Press the 'contact' button!
"Double quotes":
- Double quotes do exactly the same job as single quotes, so it is down to personal preference which you choose to use as a developer.
- As shown above, you would also use double quotes in conjunction with single quotes where you have a need to display a string within the string you have already declared, or where you need to exit the string in order to display some other code such as in some instances
when you are using JavaScript to alter HTML elements of a website.


{% extends 'layout.html'%} {% block content %}
Sorry, but that page does not exist.
Return to homepage.


Trader Espen:
Welcome, traveler! Please take your time and peruse our items. But don't you sometimes feel our lives are meant to be more than sharp swords and cold metal? My advice is to take some time in this beautiful city to to rest your mind and body...
Buy/Sell/Refund.
Ask about the local lord and tax rate.
Quest


--- layout: post title: Programmer needed for JSP to Rails conversion categories: - jobs author: admin published: true date: 2005-01-22 00:34:07.000000000 +00:00 ---
Gately’s would like to dump their JSP-powered shop and upgrade to Rails. They’re looking for Rails talent to help them do just that:
We need a developer who is proficient in (and hates) JSP for a contract-to-hire position which would involve replacing a JSP app with a Rails app for a growing e-tailer in the Denver, CO area. Would prefer local talent, but would consider teleworkers from anywhere with the right skills. Please contact me (Solomon White, solo [at] gatelys [dotcom]) if you feel you might be a fit.


Hydrate your brain with GR8 content
A conference dedicated to the technologies in the Groovy ecosystem
Stats & Facts
- @Copenhagen
- 1 university day
- 2 conference days
- 2 tracks
- 36 sessions
- 23 speakers
- 150 attendees
- Lots of goodies
- BBQ & Beers
Monday
- [KO,FP] Getting groovy
- [KO] Creating RESTful API's with Grails and Spring Security
- [KO] Unleashing the power of AST transformations
- [FP] Getting Groovy With Lego Mindstorms EV3
Tuesday
- [KO,FP] Groovy in 2014 and beyond
- [KO,FP] Application architectures with Grails
- [KO,FP] Integration using Apache Camel and Groovy
- [KO] Hybrid client/server view rendering with Grails
- [FP] Metaprogramming With The Groovy Runtime
- [KO] Vert.x using Groovy - How you can simplify non-blocking code
- [FP] Metaprogramminmg With The Groovy Compiler
- [KO] Grails & DevOps: continuous integration and delivery in the cloud
- [FP] BDD using Cucumber JVM and Groovy
- [FP] Bootstrapping your projects with Lazybones
- [KO] Polyglot Web Development With Grails 2
- [FP] Griffon: what's new and what's comming
- [KO,FP] Groovy puzzlers
Wednesday
- [KO,FP] Grails 3.0 and Beyond
- [KO] Ratpack and Grails 3
- [FP] Gradle Goodness
- [KO,FP] Cut your Grails application to pieces - build feature plugins
- [FP] Building Micro Services using Groovy, Spring Boot and friends
- [KO] Developing Android applications with Groovy?
- [KO,FP] The new Groovy Meta Object Protocol in examples
- [KO] Functional testing your Grails app with GEB
- [FP] Getting Groovy and Grails into the Enterprise
- [KO,FP] Idiomatic Spock
Buzzwords
- microservices
- lightweight
- restful
- BDD/TDD
Microservices
Single concern, deployable in isolation
SOA
Microservices
using Groovy/Grails
Restful annotations in Grails
GORM
Grails 3.0
@Grab("com.h2database:h2:1.3.173")
import grails.persistence.*
@Entity
@Resource(uri='/books')
class Book {
String title
}
Custom AST transformations
AST transformation
==
annotations that alter the generated java bytecode
@ToString
class Book {
String title
}
More info? http://melix.github.io/ast-workshop/
Grails feauture plugins
See: gr8crm
On the tech radar
- Lazybones: project generation
- Ratpack: lightweight netty event-driven toolkit for web applications
- Apache camel
- Spring boot (ideal for microservices)
- Functional testing with GEB
- Cucumber
General thoughts
- There's one build system to rule them all
- Groovy ecosystem is evolving with the new technologies
- Existing technologies are embracing groovy
Thank you


Guess Me
Think of Someone...
I'm Ready!
Yes
No
OK, I gave up...
You thought of:
Question to differentiate:
Make me Smarter!


|
UMI3D Unity SDK
2.5.b.221125
A UMI3D sdk implementation using Unity
|
Emote data, including a reference to the icon resource More...
Public Member Functions | |||||
| ulong | Id () | ||||
| UMI3D Id of an entity. Null id is 0 Ids are set between 1 and 18,446,744,073,709,551,615. Actualy between 1 and 9,223,372,036,854,775,807 due to the serializer not sutporting unsigned values.
| |||||
| IEntity | ToEntityDto (UMI3DUser user) | ||||
| Export the UMI3DEmote to a UMI3DEmoteDto for transfer More... | |||||
| Bytable | ToBytes (UMI3DUser user) | ||||
Convert the entity to a list of bytes as a bytable.
Used in networking with bytes. More... | |||||
| bool | LoadOnConnection (UMI3DUser user) | ||||
Condition to be loaded on connection.
| |||||
| bool | AddConnectionFilter (UMI3DUserFilter filter) | ||||
Add a filtering condition from the user filtering.
| |||||
| bool | RemoveConnectionFilter (UMI3DUserFilter filter) | ||||
Remove a filtering condition from the user filtering.
| |||||
| LoadEntity | GetLoadEntity (HashSet< UMI3DUser > users=null) | ||||
Ask the clients to load the entity.
| |||||
| DeleteEntity | GetDeleteEntity (HashSet< UMI3DUser > users=null) | ||||
Ask the clients to delete the entity.
| |||||
| LoadEntity | GetLoadEntity (HashSet< UMI3DUser > users=null) | ||||
| Ask the clients to load the entity. More... | |||||
| DeleteEntity | GetDeleteEntity (HashSet< UMI3DUser > users=null) | ||||
| Ask the clients to delete the entity. More... | |||||
| IEntity | ToEntityDto (UMI3DUser user) | ||||
| Convert the entity to a DTO. More... | |||||
| Bytable | ToBytes (UMI3DUser user) | ||||
| Convert the entity to a list of bytes as a bytable. More... | |||||
| bool | LoadOnConnection (UMI3DUser user) | ||||
| Condition to be loaded on connection. More... | |||||
| bool | AddConnectionFilter (UMI3DUserFilter filter) | ||||
| Add a filtering condition from the user filtering. More... | |||||
| bool | RemoveConnectionFilter (UMI3DUserFilter filter) | ||||
| Remove a filtering condition from the user filtering. More... | |||||
| ulong | Id () | ||||
| UMI3D Id of an entity. More... | |||||
Public Attributes | |
| ulong | id |
| Emote entity id More... | |
| string | stateName |
| Emote state name in Animator More... | |
| string | label |
| Emote name displayed to players More... | |
| UMI3DAsyncProperty< bool > | _available |
| bool | availableAtStart |
| True if the user can see and play the emote at the start. More... | |
| UMI3DResourceFile | iconResource |
| Icon illustrating the emote ressource details. More... | |
| bool | registered = false |
| True when the entity is registered into the environment More... | |
Properties | |
| UMI3DAsyncProperty< bool > | Available [get] |
| If the user can see and play the emote. More... | |
Emote data, including a reference to the icon resource
An emote is a short animation that is played to convey a specific communication, often an emotion. Emotes are used on non-immersive devices to allow the user to communicate non-verbally.
| bool umi3d.edk.userCapture.UMI3DEmote.AddConnectionFilter | ( | UMI3DUserFilter | filter | ) |
Add a filtering condition from the user filtering.
| filter |
Implements umi3d.edk.UMI3DMediaEntity.
| DeleteEntity umi3d.edk.userCapture.UMI3DEmote.GetDeleteEntity | ( | HashSet< UMI3DUser > | users = null | ) |
Ask the clients to delete the entity.
| users | Target clients user set. |
Implements umi3d.edk.UMI3DLoadableEntity.
| LoadEntity umi3d.edk.userCapture.UMI3DEmote.GetLoadEntity | ( | HashSet< UMI3DUser > | users = null | ) |
Ask the clients to load the entity.
| users | Target clients user set. |
Implements umi3d.edk.UMI3DLoadableEntity.
| ulong umi3d.edk.userCapture.UMI3DEmote.Id | ( | ) |
UMI3D Id of an entity. Null id is 0
Ids are set between 1 and 18,446,744,073,709,551,615.
Actualy between 1 and 9,223,372,036,854,775,807 due to the serializer not sutporting unsigned values.
Implements umi3d.edk.UMI3DEntity.
| bool umi3d.edk.userCapture.UMI3DEmote.LoadOnConnection | ( | UMI3DUser | user | ) |
Condition to be loaded on connection.
| user |
Implements umi3d.edk.UMI3DMediaEntity.
| bool umi3d.edk.userCapture.UMI3DEmote.RemoveConnectionFilter | ( | UMI3DUserFilter | filter | ) |
Remove a filtering condition from the user filtering.
| filter |
Implements umi3d.edk.UMI3DMediaEntity.
Convert the entity to a list of bytes as a bytable.
| baseSize | |
| user |
Used in networking with bytes.
Implements umi3d.edk.UMI3DLoadableEntity.
Export the UMI3DEmote to a UMI3DEmoteDto for transfer
Implements umi3d.edk.UMI3DLoadableEntity.
| UMI3DAsyncProperty<bool> umi3d.edk.userCapture.UMI3DEmote._available |
| bool umi3d.edk.userCapture.UMI3DEmote.availableAtStart |
True if the user can see and play the emote at the start.
| UMI3DResourceFile umi3d.edk.userCapture.UMI3DEmote.iconResource |
Icon illustrating the emote ressource details.
It illustrates the emote to be displayed on the client side.
| ulong umi3d.edk.userCapture.UMI3DEmote.id |
Emote entity id
| string umi3d.edk.userCapture.UMI3DEmote.label |
Emote name displayed to players
| bool umi3d.edk.userCapture.UMI3DEmote.registered = false |
True when the entity is registered into the environment
| string umi3d.edk.userCapture.UMI3DEmote.stateName |
Emote state name in Animator
|
get |
If the user can see and play the emote.


new DataVector(dataset, source)
A vector of data values inside the dataset. The source of a data vector can be either a column in the dataset's data table or a formula. The length of the vector is fixed by the dataset. The DataVector class doesn't store actual values, it only defines functions to read from the dataset.
Parameters:
| Name | Type | Description |
|---|---|---|
dataset |
Dataset | The underlying dataset |
source |
number | string | Either a column index into the dataset, or a formula |


This package contains interfaces and classes for locating resources in a generic way.
The main interface defined in this package is Locator
. A
locator is a generic pointer to a resource. Concrete implementations
of this interface support specific ways of obtaining a resource, e.g.
Locator
interface all these
different variants can be handled transparently.
$Id: package.html 205 2012-01-29 18:29:57Z oheger $


{% extends "base.html" %} {% block outdated %} You're not viewing the latest version. Click here to go to the latest version. {% endblock %}


Functionality and data access tools for transport planning, including origin-destination analysis, route allocation and modelling travel patterns.
| Version: | 0.2.6 |
| Depends: | R (≥ 3.0.2) |
| Imports: | sp (≥ 1.3.1), curl (≥ 3.2), readr (≥ 1.1.1), dplyr (≥ 0.7.6), httr (≥ 1.3.1), jsonlite (≥ 1.5), stringi (≥ 1.2.4), stringr (≥ 1.3.1), lubridate (≥ 1.7.4), maptools (≥ 0.9.3), raster (≥ 2.6.7), rgdal (≥ 1.3.4), rgeos (≥ 0.3.28), openxlsx (≥ 4.1.0), methods, R.utils (≥ 2.7.0), geosphere (≥ 1.5.7), Rcpp (≥ 0.12.1), igraph (≥ 1.2.2), nabor (≥ 0.5.0), rlang (≥ 0.2.2), lwgeom (≥ 0.1.4), sf (≥ 0.6.3) |
| LinkingTo: | RcppArmadillo (≥ <IP_ADDRESS>.0), Rcpp (≥ 0.12.18) |
| Suggests: | testthat (≥ 2.0.0), knitr (≥ 1.20), rmarkdown (≥ 1.10), dodgr (≥ 0.0.3), tmap (≥ 2.1.1) |
| Published: | 2018-10-20 |
| Author: | Robin Lovelace [aut, cre], Richard Ellison [aut], Barry Rowlingson [ctb] (Author of overline), Nick Bearman [ctb] (Co-author of gclip), Malcolm Morgan [ctb] (Co-author of angle_diff), Nikolai Berkoff [ctb] (Co-author of line2route), Scott Chamberlin [rev] (Scott reviewed the package for rOpenSci, see https://github.com/ropensci/onboarding/issues/10) |
| Maintainer: | Robin Lovelace <rob00x at gmail.com> |
| BugReports: | https://github.com/ropensci/stplanr/issues |
| License: | MIT + file LICENSE |
| URL: | https://github.com/ropensci/stplanr |
| NeedsCompilation: | yes |
| SystemRequirements: | GNU make |
| Materials: | README NEWS |
| In views: | Spatial |
| CRAN checks: | stplanr results |
| Reference manual: | stplanr.pdf |
| Vignettes: |
Introducing stplanr stplanr A Package for Transport Planning |
| Package source: | stplanr_0.2.6.tar.gz |
| Windows binaries: | r-devel: stplanr_0.2.6.zip, r-release: stplanr_0.2.6.zip, r-oldrel: stplanr_0.2.6.zip |
| OS X binaries: | r-release: stplanr_0.2.6.tgz, r-oldrel: stplanr_0.2.6.tgz |
| Old sources: | stplanr archive |
Please use the canonical form https://CRAN.R-project.org/package=stplanr to link to this page.


{% for proposal in site.hibahcme %}{% assign proposal_count = proposal_count | plus: 1 %}{% endfor %}


smoking HIV study tobacco studies (.–.) PLWH review []. smokers living current {border-style cessation px;} #ffffff;} people prevalence health included quit interventions systematic changes consumption data meta-analysis proportion use CI: Tobacco cohort initiation quitting .–.) [], care used (., Data cigarette population px; {font-family HIV: JJB. assessed decreased did font-size heterogeneity immunodeficiency including information mean/median need number patients patterns risk using varied < (Fig. AIDS ART HIV-infected HIV-positive Studies Table associated completion double; global inclusion relevant respectively. Commons Creative Health JRN, Meta-analysis border-color border-width change considered countries disease duration factors healthcare high low model nicotine publication quality reported smoker solid; strategy studies, studies. study, virus {font-style {font-weight .%, .collab: .–. Africa CI) Control DNT, HIV, However, Human PLWH. Public antiretroviral appropriate article bold category chronic conducted control counselling courier; diagnosis em; general habits highly independently infection investigate multiple participants persons priority programs providers pt;} records results services shifted smoking, therapy time, tried use,


Before Change
bg_color = (0, 0, 0)
bg_color = _rgb_vector([bg_color])
unique_labels = list(set(label.flat))
// Ensure that the background label is in front to match call to `chain`.
if bg_label in unique_labels:
unique_labels.remove(bg_label)
unique_labels.insert(0, bg_label)
After Change
// color cycle. bg_label should always be mapped to the first color, so
// its rank must be 0. Other labels should be ranked from small to large
// from 1.
if len(bg_label_rank_list) > 0:
bg_label_rank = bg_label_rank_list[0]
mapped_labels[mapped_labels < bg_label_rank] += 1
mapped_labels[label.flat == bg_label] = 0
else:
mapped_labels += 1
// Modify labels and color cycle so background color is used only once.
color_cycle = itertools.cycle(colors)
color_cycle = itertools.chain(bg_color, color_cycle)
return mapped_labels, color_cycle


This package contains additional useful models which do not belong to the original SPICE3 model set.
| Name | Description |
|---|---|
| poly | POLY function of SPICE2 |
| E_VCV_POLY | Polynomial voltage controlled voltage source, like SPICE2 |
| G_VCC_POLY | Polynomial voltage controlled current source, like SPICE2 |
| H_CCV_POLY | Polynomial current controlled voltage source, like SPICE2 |
| F_CCC_POLY | Polynomial current controlled current source, like SPICE2 |


I am a person. I try and make basic software. My programs typically use JavaScript, however my expertise is not purely limited to this.


Pro_Pack : Optimiser¶
ProPack optimiser module manages the health of assets and your Maya scene via a complex Health object system. The HealthValidation class runs tests that are bound to it, formatted such that each test returns a HealthTestObject. These objects contain both the results of the test, what failed, what passed and where ever possible they also have a fix method bound to them.
This is a crucial part of the ProPack systems for clients, dealing not just with overall optimisation methods and cleanups, but also a complex health runner setup.
The key to all of the testing systems are HealthTestObjects formatted in a specific manner and passed into the HealthValidation class to run and collate.
Each test makes and returns an instance of a HealthTestObject and is self contained, they can be run standalone without the HealthValidation class to test specific things, or grouped into a bigger set of tests, for example to health check a rig prior to releasing to an animator.
>>> # import statement for the module via the r9pro decompiler >>> from Red9.pro_pack import r9pro >>> r9pro.r9import('r9popt') >>> import r9popt>>> def simple_example_test(expected=False): ... ''' ... This is an example of how to write correctly formatted Health tests ... for the Validation systems based on simply matching a predictable input result. ... This is how all the Maya environment tests are built in the ProPack ... ... In simple tests like this we can just compare the results with the expected data ... such that HealthObject.results_returned==HealthObject.results_expected ... ... :param expected: status of the test expected ... ''' ... # we make a fresh instance of a HealthTestObject, this is crucial ... HealthObject = r9popt.HealthTestObject(name='simple_example_test') ... ... # set the internal results_expected to that arg passed in ... HealthObject.results_expected = expected ... ... # bind a fix method is you have one written ... # HealthObject.fix_method=maya_timeUnits_fix ... ... # run the actual test and push it's result to the HealthObject ... HealthObject.results_returned = cmds.about(q=True, batch=True) ... ... # do the simple compare by calling the set_byCompare func ... # this sets the status internally and sets the test as having been run ... HealthObject.set_byCompare() ... ... # we ALWAYS have to return the HealthObject ... return HealthObject>>> def custom_example_test(expected): ... ''' ... more complex test, most of the time we don't know what exactly ... is in the scene before we run the test so the above example is useless. ... In this example we're constructing the test and managing the results ... directly ... ... :param expected: a list of nodes we expect to be present ... ''' ... # as above, take an instance of the HealthObject and set the initial vars ... HealthObject=r9popt.HealthTestObject(name='custom_example') ... HealthObject.results_expected=expected ... ... for node in expected: ... # run our test ... if not cmds.objExists(node): ... # test failed so we add the failed nodes to the results_failed list ... HealthObject.results_failed_nodes.append(node) ... # we can also set the log info, displayed when we get the overall status ... HealthObject.log_message+='failed node : "%s" : Missing in Scene' % node ... else: ... # test passed so add the passed nodes to the results ... HealthObject.results_passed_nodes.append(node) ... # if we have failed nodes then the test failed and we need to set it's status as such ... # by default the HealthObject is set as failed ... if not HealthObject.results_failed_nodes: ... HealthObject.set_passed() ... # return the HealthObject ... return HealthObjectWhen we put this together with the HealValidation system we get a very powerful way of checking data inside Maya. In Pro for clients this is also bound to the fileOpen callback, allowing us to test the scene after load against a given project template.
>>> class Client_SceneOpen_HealthValidation(r9popt.HealthValidation): >>> def __init__(self, *args, **kwargs): ... # Tests to run, note this is a list of tuples where the second ... # arg is the expected result if specified ... self.tests=[(r9popt.maya_sceneUnits_test, {'expected':'centimeter'}), # Maya environment units ... (r9popt.maya_timeUnits_test, {'expected':'ntsc'}), # Maya environment fps 'ntsc' 30fps ... (r9popt.maya_upAxis_test, {'expected':'y'})] # Maya environment world axis Y-up >>> >>> test=Client_SceneOpen_HealthValidation() >>> test.run_health() >>> >>> test.getStatus() # pass or fail? >>> print test.prettyPrintStatus() # note this is formatted as a string for output to file >>> test.writeStatus(filepath) # output the test results to file >>> >>> # fix anything that failed >>> test.run_fix_methods()You could of course just take an instance of the default HealthValidataion object and fill up the internal tests list but it’s often easier to have a bespoke class to test a specific set of data
>>> test=r9popt.HealthValidation() >>> test.tests=[(r9popt.maya_sceneUnits_test, {'expected':'centimeter'}), ... (r9popt.maya_timeUnits_test, {'expected':'ntsc'}), ... (r9popt.maya_upAxis_test, {'expected':'y'})] >>> test.run_health()
Optmizer module for dealing with the health of a scene
Main Classes
OptimizerUI () |
|
OptimizeScene () |
The OptimizeScene class is responsible for wind optimization of the current Maya Scene. |
HealthTestObject (name) |
HealthTestObject is a base class object that should be managed and returned by all of the Health Test functions. |
HealthValidation (*args, **kwargs) |
This is the main Health Test system for all of ProPack and Red9’s internal publisher system. |
-
optimizer_ui
()¶ stub for the pro openUI call
-
class
OptimizeScene
¶ Bases:
object
The OptimizeScene class is responsible for wind optimization of the current Maya Scene.
when initializing the class we expose a number of internal options to allow you to tailor how the optimize_full system deals with your scene
-
optimize_base
(pre_post=True, *args)¶ Base Maya Optimizer’s with a few extra cleanups thrown in for good measure
-
optimize_full
(runBase=True, *args)¶ Optimize by exporting all DagObjects to a temp file then importing the data and running a base optimize on the remaining data.
Parameters: runBase – do we run the base optimiser func first? - ..note ::
- any additional nodes you need to retain during the process, such as non-dag nodes like Audio Nodes need to be handling either by adding a selection method and adding that in the self.get_retained_funcs list, OR adding to the initial self.nodes_to_retain list
-
get_nodes_to_retain
()¶ nodes to include in the rootNode list that gets exported during the optimize_full function call. This is so that we can add in additional non DAG nodes such as audio nodes into the temp export to ensure everything we want to retain is kept.
-
-
delete_format_output
(func)¶ simple decorator to format the return prints, a fix method should return a list of nodes / data that it’s fixed and this decorator prints that status out after the fix method has been run.
-
class
HealthTestObject
(name)¶ Bases:
object
HealthTestObject is a base class object that should be managed and returned by all of the Health Test functions. It’s an encapsulated status object for a particular test method, holding results from the test and fix methods.
>>> test=opt.maya_timeUnits_test(expected='ntscf') >>> test.print_status >>> test.run_fix_method()
- Internal Vars of note:
- self.fix_method=None # fix function for this test object
- self.results_failed_nodes=[] # nodes deemed to have failed the test, where appropriate
- self.results_passed_nodes=[] # nodes that passed the test
- self.results_returned=None # results used to compare against if the results_expected var was given
- self.results_expected=None # if specified this is the result expected from the test method.
- self.log_message=’’ # during the tests we generally fill this with useful info for the print feedbacks
-
run_fix_method
()¶ If this test object has already run and has a fix method bound, and the test failed then run the fix method.
-
has_run
¶ has this HealthObject been run as part of a test
-
selectFailedNodes
()¶
-
print_status
()¶
-
status
¶ wrapper for the status of the object, if the test passed, failed or threw a warning. This also compares any results_expected with the data from the test so we can compare against an expected set of data.
Note
Test.status=’PASSED’ if either the test.set_passed() has been run internally, or if self.results_expected == self.results_returned. This allows for simple matching of default data such as Maya environment calls etc. For more complex status checking I’d recommend doing that inside your test function and setting the status there using the set_passed etc.
-
set_byCompare
()¶ automatically set the status based on comparing the results_expected==results_returned This is generally for simple test methods where you can guarantee the results are consistent.
-
<<<<<<< HEAD
-
set_by_failed
()¶ automatically set failed if there are failed results in the test object
-
=======
>>>>>>> d7ab8a039c4da0838a07bf4a9ec3ad957667b21e
-
set_failed
()¶ set test as failed, note this also sets the has_run flag to True
-
set_passed
()¶ set test as passed, note this also sets the has_run flag to True
-
set_warning
()¶ set test as passed, note this also sets the has_run flag to True
-
set_corrupt
()¶ set test as passed, note this also sets the has_run flag to True
-
failed
¶
-
passed
¶
-
class
HealthValidation
(*args, **kwargs)¶ Bases:
object
This is the main Health Test system for all of ProPack and Red9’s internal publisher system. The idea is that you bind individual test to the class to run, each test returns a HealthTestObject which means we can easily collate data and fix issues via the run_fix_methods
In Pro for clients this is also bound to the fileOpen callback, allowing us to test the scene after load against a given project template.
See examples in the API docs above
-
bindTests
(testdata=[], filepath=None)¶ bind a custom set of tests from an external config list, tests are specified as a list of tuples where the first value is the function, the second is a list of kws to pass into the function, usually expectedResult etc. If there are no kws to pass just set that to None
Parameters: - testdata – [] list of tuples as above
- filepath – path to a json file with the tests setup and correctly formatted
-
loadTests
(filepath)¶ load in tests from a file for ease
Parameters: filepath – filepath to take the tests from . Not currently implemented
-
run_health
(verbose=True, detailed=False)¶ run the given set of test objects
Parameters: - verbose – run the printouts or run it silently
- detailed – turn on all the detailed results feedback in the printouts
-
run_fix_methods
()¶ run all fix methods bound to those HealthTestObjects that failed
-
run_customFuncs
()¶ run any custom functions bound to this test setup
-
getFailedTests
(asDict=False)¶ for each healthObject validate it’s status and return those HealthTestObjects that failed and or threw a warning or error
Parameters: asDict – either return a straight list of failed HeallthTestObjects or a dict where the key is the test name
-
getStatus
(asDict=False, verbose=False)¶ for each healthObject validate it’s status and return the overall result
Parameters: - asDict – If False (default) return the overall status of all the tests as a bool, if True return a dict where the keys are the status and value is a list of tests matching that status
- verbose – if true print all the results out, else just return the status itself
-
prettyPrintStatus
(overview=True, detailed=False, passed=True, indepth=True)¶ Simple formatter to make sense of the results in a manner that can be either printed to screen or out to file. It’s worth testing the flags here as there is a LOT of formatting possible to tweak the results into a format that contains just the base data, or all the comples fails etc
Parameters: - overview – just print / return the overview of each test status - no results data
- detailed – turn on the detailed results in the feedback data
- passed – include passed tests in the detailed data
- indepth – expand the detailed results to include all the health results data
-
writeStatus
(filepath=None, indepth=False)¶ write a detailed log out to a given filepath
Parameters: - filepath – filepath for the log file
- indepth – expand the detailed results to include all the health results data
-
-
class
RigHealthValidation
(*args, **kws)¶ Bases:
Red9.pro_pack.core.optimiser.HealthValidation
TestClass to see if the extraction of class inheritance is running for the optimiser Health system
-
get_metaRigs
()¶ generic mrig call for all base tests
-
get_rootJnt
()¶ generic call for all tests dealing with skeleton roots
-
maya_timeUnits_test
(expected='ntsc')¶ Maya Units: time is as expected
-
maya_timeUnits_fix
(HealthObject)¶
-
maya_sceneUnits_test
(expected='centimeter')¶ Maya Units: sceneUnits are es expected
-
maya_sceneUnits_fix
(HealthObject)¶
-
maya_upAxis_test
(expected='y')¶ Maya Units: upAxis is as expected
-
maya_upAxis_fix
(HealthObject)¶ fix the upAxis to the expected result
-
maya_evalManager_test
(expected='off')¶ Maya Eval Manager: off, parallel or serial (which should never be run in production only for debugging)
-
maya_evalManager_fix
(HealthObject)¶ fix the evalManager graph to the expected result
-
maya_timerange_test
(expected=(0, 1))¶ Maya Eval Manager: off, parallel or serial (which should never be run in production only for debugging)
-
maya_timerange_fix
(HealthObject)¶ fix the evalManager graph to the expected result
-
nodes_exist_test
(expected=[])¶ Check in the Maya scene for a pre-existing set of nodes
-
meta_nodes_get
(*args)¶ simple get for all metaNodes in the scene
-
meta_nodes_invalid_test
(expected=False)¶ test for metaNodes in the scene which are deemed inValid by their own internal mNode.isValid() call. Usually if they have no connections to other nodes. Failed Results built : HealthObject.results_failed_nodes : [mRig,...]
Parameters: expected – NA - unused
-
meta_nodes_invalid_fix
(*args, **kwargs)¶ find all inValid metaNodes by deleting them via their internal mNode.delete() call This fix method is bound in such a way that it will run the test method internally if not already run.
-
mRigs_haveKeys_test
(expected=False, mRigs=[])¶ Test to check is all mRigs in the scene have existing keys or not Failed Results built : HealthObject.results_failed_nodes : [mRig,...]
Parameters: - expected – if we’re expecting keys or not
- mRigs – specific mRig metaNodes only if passed
-
mRigs_haveKeys_fix
(*args, **kwargs)¶ Remove all keys found and reset / zeropose the rig This fix method is bound in such a way that it will run the test method internally if not already run.
-
mRigs_zeroPose_test
(expected=None, mRigs=[])¶ Test to check is all mRigs in the scene have existing zeroPoses Failed Results built : HealthObject.results_failed_nodes : [mRig,...]
Parameters: - expected – NA - unused
- mRigs – specific mRig metaNodes only if passed
-
mRigs_zeroPose_fix
(*args, **kwargs)¶ Add a ZeroPose to the Rig in it’s current state This fix method is bound in such a way that it will run the test method internally if not already run.
-
mRigs_attrMap_test
(expected=None, mRigs=[])¶ Test to check is all mRigs in the scene have existing attrMaps Failed Results built : HealthObject.results_failed_nodes : [mRig,...]
Parameters: - expected – NA - unused
- mRigs – specific mRig metaNodes only if passed
-
mRigs_attrMap_fix
(*args, **kwargs)¶ Add a ZeroPose to the Rig in it’s current state This fix method is bound in such a way that it will run the test method internally if not already run.
-
mRigs_renderMeshes_hooked
(expected=1, mRigs=[])¶ Test to check is all mRigs in the scene have existing renderMeshes hooked up or at least the expected number or above. This wire is used by the PoseSaver to create the PosePointCloud visual mesh reference Failed Results built : HealthObject.results_failed_nodes : [mRig,...]
Parameters: - expected – minimum number of expected meshes hooked up
- mRigs – specific mRig metaNodes only if passed
-
mRigs_renderMeshes_head_hooked
(expected=1, mRigs=[], group='main')¶ Test to check is all mRigs in the scene have existing renderMeshes hooked up or at least the expected number or above. This wire is used by the PoseSaver to create the PosePointCloud visual mesh reference Failed Results built : HealthObject.results_failed_nodes : [mRig,...]
Parameters: - expected – minimum number of expected meshes hooked up
- mRigs – specific mRig metaNodes only if passed
-
mRigs_exportSkeletonRoot
(expected=None, mRigs=[])¶ Test to check is all mRigs in the scene have existing exportSkeletonRoot hooked up this wire is used by the PoseSaver to generate the skeletonData block Failed Results built : HealthObject.results_failed_nodes : [mRig,...]
Parameters: - expected – NA - unused
- mRigs – specific mRig metaNodes only if passed
-
mRigs_mirrorIndexClashes_test
(expected=None, mRigs=[])¶ Test to check for any clashing mirrorIndexes on mRigs Failed Results built : HealthObject.results_failed_nodes : [(mRig, node),...]
Parameters: - expected – NA - unused
- mRigs – specific mRig metaNodes only if passed
-
mRigs_mirrorIndexMissing_test
(expected=None, mRigs=[])¶ Test to check that all controllers wired to the rigs have mirrorIndexes assigned Failed Results built : HealthObject.results_failed_nodes : [(mRig, node),...]
Parameters: - expected – NA - unused
- mRigs – specific mRig metaNodes only if passed
-
mRigs_unwired_ctrls_test
(expected=None, mRigs=[], searchPattern=[])¶ Test to check that all nurbsCurves, with optional name matching under the ctrl_main of the mRig are wired to the systems. This is a WARNING only as it’s a very general test but useful for debugging everything Failed Results built : HealthObject.results_failed_nodes : [(mRig, node),...]
Parameters: - expected – NA - unused
- mRigs – specific mRig metaNodes only if passed
- searchPatetrn – if given this is used in the search to find nurbsCurves with given naming conventions
This is a Warning failure only
-
mRigs_characterset_test
(expected=True, mRigs=[])¶ check to see if all the mRig controllers attributes that are exposed are wired to a valid characterSet
-
mRigs_characterset_fix
(*args, **kwargs)¶ fix character set membership for the failed mRig node attrs
-
mRigs_timecode_attrs_test
(expected=True, mRigs=[])¶ check to see if the mRig has timecode attrs propagated to it
-
mRigs_timecode_attrs_fix
(*args, **kwargs)¶ Add production TimeCode attrs to CTRL_Main if not found
-
mRig_pickertemplate_test
(expected=True, mRigs=[], templatefile='')¶ generic MetaRig also supported with this test check to see if the mRig has a valid Pro Picker template
This is a Warning failure only
Parameters: - expected – if we were expecting a picker or not
- mRigs – given mRigs to test, if None then we find all instances of mRigs in the scene
- templatefile – template file to use iun the fix method if not already found
-
mRig_pickertemplate_fix
(*args, **kwargs)¶ Add production TimeCode attrs to CTRL_Main if not found
-
skin_influenced_by_test
(expected=None, skins=[])¶ Test to check for any meshes / skinClusters that have more than influences than the expected This ONLY tests skinClusters attached to mesh objects
Parameters: - expected – maximum number of skin weights per vert for all skinClusters found or passed
- skins – list of specific skins to test if you want to test only specific skins
-
skin_method_test
(expected='dq', skins=[])¶ Test to check the skinMethod used by all skinClusters matches the expected either dq or linear. This ONLY tests skinClusters attached to mesh objects
Parameters: - expected – ‘linear’,’dq’ or ‘blended’ skinning methods, relates to 0=linear, 1=dq, 2=weightBlended
- skins – list of specific skins to test if you want to test only specific skins
-
skin_method_fix
(*args, **kwargs)¶ set the skinning method on the failed nodes appropriately
-
skinned_joints_at_zero_rotate
(expected='True', skins=[])¶ Test to check that all joints that are part of a skinCluster have zero_rotates. This ONLY tests skinClusters attached to mesh objects
Parameters: - expected – True - all joints have zero rotates
- skins – list of specific skins to test if you want to test only specific skins
-
skeleton_rotate_tolerance
(rootJnt=None, tolerance=0.001, searchPattern=[], fk=False)¶ Test to check that all joints under a given rootJnt have a rotation value under the given tolerance. This is used when binding a rig-up to ensure that we get no additional gimbal introduced via a rig system etc.
Running the fix method will zero the rotate values
Parameters: - rootJnt – root joint for the test, if not passed we use the first instance of mRig.skeletonRoot
- tolerance – maximum allowed rotate in any axis for the joints
- searchPattern – regex arg passed so we can do simple testing for strings and ignore matches.
- fk – IF we’re dealing with an mRig then this option switches the rig into FK mode before the test
-
skeleton_rotate_tolerance_fix
(*args, **kwargs)¶ set all failed joints to zero
-
skeleton_has_keys
(rootJnt=None, searchPattern=[], expected=False)¶ Test to check that all joints under a given rootJnt have no animation keys set on them. If no rootJnt is passed then we try and inspect the mRig or SrcExt / exportTag nodes
Running the fix method will delete all keys from the skeleton
Parameters: - rootJnt – root joint for the test, if not passed we use the first instance of mRig.skeletonRoot
- searchPattern – regex arg passed so we can do simple testing for strings and ignore matches.
-
skeleton_has_keys_fix
(*args, **kwargs)¶ delete all found animCurves on the failed joints
-
skeleton_unique_names_test
(rootJnt=None)¶ check that all joints in a given skeleton have unique short names results_failed={shortname:(longname1, longname2, ...)}
Parameters: rootJnt – root of the skeleton to test if not passed we use the mRig networks
-
blends_have_targetGeo_test
(expected=True, blends=[], meshcheck=True)¶ test that any blendshapes in the scene have respective original target meshes wired up to the blend node
Parameters: - expected – whether the targets should or shouldn’t be in the scene
- blends – specific blendShape nodes to test against, default=[]
- meshcheck – only check blends associated to polymeshes, default=True
-
blends_targetGeo_name_test
(expected=True, blends=[], meshcheck=True)¶ test that any blendshapes in the scene have respective original target meshes that are names as per the target attrs driving them this its crucial for some game engine exporters
Parameters: - expected – hard set to True, we wouldn’t run the test unless we expected it to be so.
- blends – specific blendShape nodes to test against, default=[]
-
blends_targetGeo_name_fix
(HealthObject)¶ try and rename any failed target meshes back to the name of the target on the blendshape they’re connected too
-
blends_target_count_test
(expected=100)¶ test that any blendshapes in the scene have less than a given number of blendTargets
-
mesh_compare_generate
(mesh, filepath=None)¶ safe consistent method to generate the test mesh to use in the compare call
-
mesh_compare_against_OBJ_test
(expected, mesh)¶ compare a given mesh against an expected OBJ file generated by the mesh_compare_generate func above and passed in as a path. This is useful when building complex facial systems so you can validate that your mesh returns to the actual master Mesh delivered by clients. Sometimes simply turning off the skinCluster envelope is not enough reassurance that the mesh matches.
Parameters: - expected – in this case a path to an obj file that we’re going to validate the given mesh against
- mesh – mesh to compare against in scene
Note
This requires Diffmerge.exe, you can download from https://sourcegear.com/diffmerge/. Once downloaded drop it here Red9/pakcages/diffMerge.exe
-
texture_path_isValid_test
(expected=True)¶ test if all file nodes have valid texture paths
TODO: return r9File objects so we can automatically do the p4sync if needed??
-
texture_path_isValid_fix
(HealthObject)¶ if we have an asset control like P4 try and run a file sync
-
texture_path_under_rootfolder_test
(expected='')¶ test to see if the texture paths for all file nodes are under the correct rootfolder path
Parameters: expected – rootpath to test against
-
texture_path_under_rootfolder_fix
(HealthObject)¶ repath the textures if they aren’t in a subfolder from the basefile
-
shape_node_names_test
(nodes, expected='True')¶ Test to check that shape names under transforms are named accordingly
Parameters: - expected – True - all joints have zero rotates
- nodes – list of specific nodes to test if you want to test only specific shapes
-
shape_node_names_test_fix
(*args, **kwargs)¶ fix shapeNode names based on transform parent names
-
chSet_arrays
()¶ CharacterSet debugging for placeholder list orders
-
nodeTypes_present_test
(expected=0, nodeType='audio')¶ test for the presence of a specific nodeType in the scene
Parameters: - expected – int=0, number of nodes of this nodeType in the scene that’s acceptable
- nodeType – Maya nodeTyoe to scan for, default=audio
-
nodeTypes_present_fix
(*args, **kwargs)¶
-
<<<<<<< HEAD
constraints_interpType
(expected=[2, 0])¶ test all orient and parent constraints and validate their interpType is set as expected. This by default is set to a list [2,0], allowing noflip and shortest to pass and all other interTypes to fail. The first var in the expected list is then used as the default which fails will get set too
=======constraints_interpType
(expected=2)¶test all orient and parent constraints and validate their interpType is set as expected
>>>>>>> d7ab8a039c4da0838a07bf4a9ec3ad957667b21e<<<<<<< HEAD Parameters: expected – [2, 0] where 0=’noflip’, 1=’average’, 2=’shortest’, not that is this is given as a list then the first arg is the default that failed interTypes will get set too. =======Parameters: expected – 1=’average’, 2=’shortest’, >>>>>>> d7ab8a039c4da0838a07bf4a9ec3ad957667b21e
-
constraints_interpType_fix
(*args, **kwargs)¶
-
displayLayers_test
(expected=[])¶ test to see if displayLayers are present and if they should be or not
Parameters: expected – [] list of layers expected to be present, any others would fail the test
-
displayLayers_fix
(*args, **kwargs)¶ remove all displayLayers that failed the test
-
reference_nodes_invalid_test
(*args)¶ return a list of reference nodes in the scene that have no file pointer and are therefore invalid
-
reference_nodes_invalid_fix
(*args, **kwargs)¶ remove any references that come back as invalid
-
namespaces_found_test
(expected=[])¶ test for the existance of namespaces in the scene
Parameters: expected – [] list of namespaces that are valid
-
namespaces_found_fix
(*args, **kwargs)¶ remove any references that come back as invalid
-
unknownPlugins_test
(expected=True)¶ test to find unKnown/dead plug-in nodes in the scene and remove them
-
unknownPlugins_fix
(*args, **kwargs)¶ fix method : delete all old plugins
-
turtle_nodes_present_test
(expected=False)¶ test for the presence of BLOODY Turtle Nodes
-
turtle_nodes_present_fix
(HealthObject)¶
-
audio_nodes_get
()¶
-
audio_nodes_delete
(*args, **kwargs)¶
-
turtle_nodes_get
()¶ Return Turtle nodes in the scene
-
turtle_nodes_delete
(*args, **kwargs)¶ Remove Turtle nodes from the scene
-
hik_nodes_valid_get
(*args)¶ return any HIK nodes in the scene


Hack Playground is a virtual world that brings HackMIT, one of the largest undergraduate hackathons, right to your home. Playground preserves the atmosphere of innovation and connection of a hackathon. You can walk through the Sponsor Town and schedule a coffee chat with a sponsor, gain inspiration by visiting the Nonprofit Village, or chat with other hackers.
View ProjectWe use appreader to manage the thousands of applications we receive for HackMIT each year. The website streamlines the admissions process by distributing apps to team members, keeping track of applications scores, and running a scoring algorithm to generate a final list of admitted applicants. The open source version will be coming soon!
View ProjectQuill is HackMIT's hackathon registration portal. For hackers, it's a clean and streamlined interface to submit registration and confirmation information. For hackathon organizers, it's an easy way to manage applications, view registration stats, check-in hackers day-of, and more!
View ProjectHELPq was originally built for HackMIT, but has been used at hackathons like Blueprint, Meteor Summer Hackathon 2015, WHACK, MakeMIT and WildHacks (among others!).
It is a real-time help queue and mentor management application, targeted at hackathons and classrooms, where there is a need for issues to be claimed and satisfied within minutes. It includes a simple interface for requesting tickets, claiming tickets, administrating users/mentors, and examining metrics.
Gavel is the judging system used at HackMIT. It incorporates a lot of research on mathematical psychology along with fancy math to produce very fair judging results. It's capable of scaling to large events, being used at HackMIT's 1000-person hackathon.
View ProjectCog is the hardware checkout system that we beta-tested at HackMIT 2017. It makes it easy for organizers to manage hardware inventory and track which hackers have what, and it allow hackers to quickly find the hardware they want for their hack.
View ProjectA WiFi-based presence sharing system for specific physical spaces.
View ProjectEach year, HackMIT releases a challenging online puzzle in conjuction with registration. Our 2020 puzzle incorporated our Hack to the Future theme, and featured challenges involving reverse-engineering, CAPTCHAs, secret codes, and neural networks, among many other things!
View ProjectThe HackMIT homepage, with code released under an MIT license and content/assets released under a CC BY-NC-ND license.
View ProjectRedisred is a small Redis-based URL redirector with great Slack integration!
View ProjectHubot-redisred is the most convenient way to use Redisred.
View ProjectHubot-group lets you easily @mention groups of people.
View ProjectHubot-conf is a two-part configuration management system for Hubot. It can be used by Hubot script implementors to read configuration values. It can also be used by Hubot users to be able to dynamically set (or override) configuration values through the chat interface.
View ProjectHubot-shortcut lets you create !shortcuts for your Hubot commands.
View Project


Newport is a popular New England summer resort, famous for its Mansions and watching the racing in the Bay from the Yacht Club lawn. It is the home of Salve Regina University and Naval Station Newport.. A major 18th century port city, Newport now contains among the highest number of surviving colonial buildings of any city in the USA.
It is also the major boating destination on the Atlantic coast and practically all marine facilities are to be found here.
This harbour is an important port of refuge. The approaches are well marked and entrance is possible both day and night. Note that fog is common here and the local racing clubs think nothing of racing in zero visibility conditions, so approach with extreme caution if entering the harbour at such a time.
Position 41° 28'N, 71° 22'W (harbour approaches)
It is necessary to call or fax the CBP office 2 hours prior to arrival to arrange a time for inspection. Nobody must leave the boat until clearance is complete. Inspections are done during normal working hours.
Last updated November 2014.
There are several marinas on the east side of the harbour and one on Goat Island, plus hundreds of moorings in the harbour, many for transients. Call Oldport Marine on VHF 68, Newport Mooring Service on VHF 09, Brenton Cove on VHF 09 and the Harbormaster on VHF 16.
The main City anchorage is a small area at the southern end of the main harbour, just south of the main east-west channel as you enter the harbour from Fort Adams. Be sure to contact the Harbormaster on VHF Ch:16 for directions.
There are two federal anchorages, one is directly north of Goat Island, and the other is directly west of Goat Island.
All areas are busy in the Summer.
For those at anchor or on a mooring, the new Newport Maritime Centre (see below) is a welcome addition to Newport's facilities for transient cruisers. They provide restrooms and showers, a laundry and internet access.
20nm north of Newport, there are several full service marinas at Greenwich Bay, Apponaug.
Portsmouth and Bristol also provide marinas.
Anchoring
Anchoring is permitted in the harbour, but contact the Harbour Master (VHF ch. 16) first. Boats must not be left unattended (i.e. not leave the area)
Last updated March 2015.


MASTER IN ADVANCED COMPUTATION FOR ARCHITECTURE & DESIGN MaCAD 2020/2021
DESIGN STUDIO
The city today is lacking the community space: the modern architecture has created a number of single-function venues which are often separated far from each other. Even the so-called multifunctional or mixed-use buildings are really mostly the retail centers with an entertainment component and they are usually located far from the residential areas. The only areas fully adaptable to all kinds of public activities are parks but there the climate issues come into play.
Moscow is located in the sharply continental climate zone, with the annual temperature difference over 50 C, cold winter, hot summer and frequent rains in the midseason. Altogether this calls for the sheltered public space. Another problem, specific to Moscow, is the deficit of the quality public space in the old residential areas in the historical center. There are plenty of world-class museums and theaters, bars and restaurants but there is no space which would combine various public functions in one building and suit all ages and genders.


Australian man accused of starting bushfire to protect cannabis crop
SYDNEY: An Australian man has been accused of deliberately lighting a fire to protect his cannabis crop, sparking an out-of-control bushfire as blazes rage along the country's east coast.
Four people have been killed and more than 300 homes destroyed in devastating bushfires that have razed more than one million hectares (2.5 million acres) along the eastern seaboard in just over a week.
Police said a 51-year-old man appeared before a local court on Saturday (Nov 16) charged with intentionally lighting a fire at Ebor in New South Wales state in an attempt to protect his cannabis crop.
The alleged bungled attempt on Thursday at backburning - a practice used by firefighters to clear the undergrowth that fuels fires - quickly spread the flames and the man did not try to extinguish the blaze, according to police.
The Ebor fire is about 10,000 hectares in size - and is still burning three days later.
Authorities believe arsonists are behind several other bushfires across badly-hit New South Wales as well as in neighbouring Queensland, and have appealed to the public for information leading to more arrests.
On Sunday, there were 130 fires burning across the two states, large swathes of which have already been ravaged by a crippling drought.
New South Wales firefighters undertook back burning as temperatures dipped on Saturday night, ahead of an expected deterioration in fire conditions early next week.
Parts of Queensland were facing "extreme fire danger" as high temperatures and low humidity were forecast to combine with storms to create challenging conditions for firefighters.
Bushfire-prone Australia has experienced a horrific start to its fire season, which scientists say is beginning earlier and becoming more extreme as a result of climate change, which is raising temperatures and sapping moisture from the environment.
Growing calls to curb fossil fuels and drastically cut greenhouse gas emissions are being ignored by the country's conservative government, which is eager to protect its highly lucrative mining industry.


Widely known as the best Japanese curry in SF. This is a small location thats main focus is to provide curry to go for FiDi lunch crowd. Be careful that you check their hours in advance as they close early and on the weekends.
Muracci's WebsiteThis SoMa joint doesn't specialize in Japanese food, but Asian Fusion. That doesn't stop it from having one of the best katsu curries in town. Seating is limited, but there is a park near by that is a great place to eat and relax.
HRD's WebsiteDoes let the strange Yoshyoku (Japanese version of western food) menu scare you away. The food is really good and the curry can be made any way you like it with extra veggies or spice!
On the Bridge's WebsiteBelow is a list of some of the best Japanese food SF. The list is not exhaustive, so please submit suggestions for additions to the list in the form below!


Ecto.Multi is a set of utilities aimed at composing and executing atomic operations, usually (but not always, as you’ll see soon) performed against the database. Furthermore, it handles rollbacks, provides results on either success or error, flattens-out nested code and saves multiple round trips to the database.
If you find yourself running and managing many database queries (and other operations), then keep reading and you may find some useful tools to add your Elixir/Ecto toolbox.
Creating a Multi
Everything starts with a %Multi{}
struct. You can create a new Multi calling the Ecto.Multi.new()
function:
iex> Ecto.Multi.new()
%Ecto.Multi{names: %MapSet<[]>, operations: []}
Executing Multi operations
To run a Multi, you have to hand it over to Repo.transaction/1
:
iex> Ecto.Multi.new() |> Repo.transaction()
{:ok, %{}}
Clearly we just ran an empty Multi, which was obviously successful since nothing was performed (and nothing returned in the second element of the {:ok, return} tuple. To make Multis useful, you need to add operations to them.
Next, we’re going to cover the most common operations you may end up doing.
Working with individual changesets
When working with multiple %Ecto.Changeset{}
s, usually you will call Repo.insert/1
/ update/1
etc multiple times to run the operations. Switching to Ecto.Multi
is as easy as replacing Repo.update/1
with its equivalent Ecto.Multi.update/3
, for example.
Assuming you already have a team_changeset
, user_changeset
and foo_changeset
created beforehand, this would look like so:
Ecto.Multi.new()
|> Ecto.Multi.insert(:team, team_changeset)
|> Ecto.Multi.update(:user, user_changeset)
|> Ecto.Multi.delete(:foo, foo_changeset)
|> Repo.transaction()
The atoms used — :user
,:team
and :foo
— are up to you. You can pass anything (also you can use a string, instead of an atom) as long as it’s a unique value for the current Multi.
Result of a previous operation
Operations will be run in the order they’re added to the Multi. Often you need the result of a previous operation, which you can get by running a custom Multi operation, like so:
Ecto.Multi.new()
|> Ecto.Multi.insert(:team, team_changeset)
|> Ecto.Multi.run(:user, fn repo, %{team: team} ->
# Use the inserted team.
repo.update(user_changeset)
end)
Ecto.Multi.run/3
needs a name for its first parameter, just like Multi insert/delete/update etc functions, which I have called :user
; the second is a function, which provides you with the current Ecto Repo, alongside the results of previous operations. The results are just a map, and you can use the unique key to pattern-match and get the result for a specific operation, in this case :team
.
Notice that here we call repo.update(user_changeset)
(which is the same function as Ecto.Repo.update/1
); you need to return an {:ok, val}
or a {:error, val}
tuple from the function you pass to Multi.run/3
. Using Repo.update
will give us just what we need.
Custom operations
Actually, Multi.run/3
could be used for pretty much anything. As long as you return a success/error tuple, it will become part of the same atomic transaction:
Ecto.Multi.new()
|> Ecto.Multi.insert_all(:users, MyApp.User, users)
|> Ecto.Multi.run(:pro_users, fn _repo, %{users: users} ->
result = Enum.filter(users, & &1.role == "pro")
{:ok, result}
end)
Here :pro_users
will be available to use for subsequent operations and in the result returned by Repo.transaction/1
. It’s a great way to ensure code is run together with the rest of the database operations. If the :users
operation fails or something else before that, this potentially expensive filtering function will never be executed.
Working with multiple Multis and dynamic data
The beauty of Ecto.Multi is that it’s just a data structure, which you can pass around. It is easy to dynamically generate data and combine different multis together, before executing everything as a single transaction:
posts
|> Stream.filter(fn post ->
# Filter old posts...
end)
|> Stream.map(fn post ->
# Create changesets.
Ecto.Changeset.change(post, %{category: "new"})
end)
|> Stream.map(fn post_cs ->
# Create a Multi with a single update
# operation, generating a unique key for the op.
key = "post_#{post_cs.data.id}"
Ecto.Multi.update(Ecto.Multi.new(), key, post_cs)
end)
|> Enum.reduce(Multi.new(), &Multi.append/2)
Thanks to Multi.append/2
we now have a single Multi with all update operations in order. There’s also merge
and prepend
if you need them.
Handling results
Once you call Repo.transaction/1
, you can pattern-match the result tuple.
In the case of success, you will receive all {:ok, result}
with result being a map; operations and their successful results will be in the result map, under the unique key you have chosen.
In the case of an error, all database operations will be rolled back, and you will be given {:error, failed_operation, failed_value, changes_so_far}
which allows you to handle errors from specific operations individually and inspect them. Note that changes_so_far
simply means “operations that went well until this one failed” and no data is actually left in the database.
Ecto.Multi.new()
|> Ecto.Multi.insert(:team, team_changeset)
|> Ecto.Multi.update(:user, user_changeset)
|> Ecto.Multi.delete(:foo, foo_changeset)
|> Repo.transaction
|> case do
{:ok, %{user: user, team: team, foo: foo}} ->
# Yay, success!
{:error, :foo, value, _} ->
# It seems that :foo failed!
{:error, op, res, others} ->
# One of the others failed!
end
Conclusion
This brief guide tried to cover the most common use cases and functions. Hope you found it useful, and if you would like to learn more — head over to the official Ecto.Multi documentation where you can explore everything that’s available to you.
Caught a mistake or want to contribute to the article? Edit this page on GitHub!


Simple DEV environment setup with Docker and Docker Compose
In the search bar you can get the answer to the question from the exercise type on of the below (eg "max-stops") to query the endpoint.


Recommend a community
We need your help finding great pilot communities for the project! Have an idea? Please let us know!
Help out & get more info!
Help out and get more information as we get started. This is an entirely open source effort, from the start!
{{ form.email.errors }}{% block content_title %}{% endblock %}
{% block content %}{% endblock %}


This application was developed by James Madison University students enrolled in ISAT 306.
The purpose of this application is to provide a medium which allows the everyday homeowner to track how much energy is being consumed in their house in real time.
The use will be able to see exactly how much energy is being used in the house and what room(s) it is coming from, creating an effective way to know where to save costs.


| [ class tree: Spyc ] [ index: Spyc ] [ all elements ] |
|
Packages: default ActiveGateway Samurai Spyc Files: Classes: |
|
| [ class tree: Spyc ] [ index: Spyc ] [ all elements ] |
|
Packages: default ActiveGateway Samurai Spyc Files: Classes: |
|


using address:
get pool length:
chef address length:check pool info
chef address pool numberTVL:
chef address pool numberdeposit amount:
chef address pool id user addresscheck pending:
chef address pool id user addressdeposit:
chef address pool id amountwithdraw:
chef address pool id amount


---
layout: default
title: Pattern Library
class: styleguide
---
Version: {{ site.version }} -- Updated: {{ site.time }}
{% include patterns/box/index.html %}
{% include patterns/breadcrumbs/index.html %}
{% include patterns/forms/index.html %}
{% include patterns/lists/index.html %}
{% include patterns/summary/index.html %}
{% include patterns/modals/index.html %}
{% include patterns/tooltips/index.html %}
{% include patterns/pagination/index.html %}
{% include patterns/pills/index.html %}
{% include patterns/accordion/index.html %}
{% include patterns/tabs/index.html %}
{% include patterns/message-box/index.html %}
{% include patterns/info-box/index.html %}
{% include patterns/tables/index.html %}
FIN.


todos
Left click on the todo to mark as complete
Right click on the todo to delete it
Left click on the todo to mark as complete
Right click on the todo to delete it


The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available.
See JDK Release Notes for information about new features, enhancements, and removed or deprecated options for all JDK releases.
Are you a student trying to learn the Java language or a professional seeking to expand your skill set? If you are feeling a bit overwhelmed by the breadth of the Java platform, here are a few suggested learning paths to help you get the most from your Java learning experience.
New To Java
The following trails are most useful for beginners:
- Getting Started – An introduction to Java technology and lessons on installing Java development software and using it to create a simple program.
- Learning the Java Language – Lessons describing essential concepts such as classes, objects, inheritance, datatypes, generics, and packages.
- Essential Java Classes – Lessons on exceptions, basic input/output, concurrency, regular expressions, and the platform environment.
Building On The Foundation
Ready to dive deeper into the technology? See the following topics:
- Collections – Lessons on using and extending the Java Collections Framework.
- Lambda Expressions: Learn how and why to use Lambda Expressions in your applications.
- Aggregate Operations: Explore how Aggregate Operations, Streams, and Lambda Expressions work together to provide powerful filtering capabilities.
- Packaging Programs In JAR Files – Lesson on creating and signing JAR files.
- Internationalization – An introduction to designing software so that it can be easily be adapted (localized) to various languages and regions.
- Reflection – An API that represents ("reflects") the classes, interfaces, and objects in the current Java Virtual Machine.
- Security – Java platform features that help protect applications from malicious software.
- JavaBeans – The Java platform's component technology.
- The Extension Mechanism – How to make custom APIs available to all applications running on the Java platform.
- Generics – An enhancement to the type system that supports operations on objects of various types while providing compile-time type safety.
Cherish the Client?
If you want to focus on developing Java based desktop solutions and rich Internet applications, see the following topics:
- Get Started with JavaFX – A collection of sample applications that's designed to get you started with common JavaFX tasks
- Get Started with Scene Builder – Shows you, step-by-step, how to create a simple issue-tracking application using the JavaFX Scene Builder tool.
- Creating a GUI with Swing – A comprehensive introduction to GUI creation on the Java platform.
- Deployment – How to package applications and applets using JAR files, and deploy them using Java Web Start and Java Plug-in.
- 2D Graphics – How to display and print 2D graphics in applications.
- Full-Screen Exclusive Mode API – How to write applications that more fully utilize the user's graphics hardware.
Fervor Over Server!
If you are interested in acquiring skills important for middleware, server-side, or web application development, see the following trails:
- JDBC Database Access – Introduces an API for connectivity between the Java applications and a wide range of databases and a data sources.
- JMX – Java Management Extensions provides a standard way of managing resources such as applications, devices, and services.
- JNDI – Java Naming and Directory Interface enables accessing the Naming and Directory Service such as DNS and LDAP.
- JAXP – Introduces the Java API for XML Processing (JAXP) 1.4 technology.
- RMI – The Remote Method Invocation API allows an object to invoke methods of an object running on another Java Virtual Machine.
- Concurrency – The Java platform has APIs to help you develop multi-threaded programs.