This demo blog post uses a very developmental version of fmi. To run the demo
on your own computer, you will have to do the following:
Accessing FMI weather station data using package fmi
As explained in the previous post,
package fmi brings various kinds of data
from the Finnish Meteorological Institute’s (FMI) open API to R. The work on the
package is still very much in progress, but when I got asked if it’s
possible to get location (i.e. wheather station) specific precipitation and
temperature data for a specific time period, I decided to take fmi for a spin.
FMI deserves compliments for the implemenetation of an open API, but the
documentation of some of the API parameters has left room for improvement.
For some lively discussion (in Finnish), see here.
Fortunately, method getDailyWeather() in fmi returns the necessary
measurements (precipitation and temperature) as is, so no need to figure out the
specific parameter values for the request. A
little more digging
does reveal, however, more information for example on the units used to record the
measurements. Hand picking the information from the XML reveals the following
table:
Parameter
Label
Base phenomenon
Unit
Stat function
Agg time period
rrday
Precipitation amount
Amount of precipitation
mm
acc
PT24H
snow
Snow depth
Snow cover
cm
instant
PT1M
tday
Air temperature
Temperature
degC
avg
P1D
tmax
Maximum temperature
Temperature
degC
max
PT24H
tmin
Minimum temperature
Temperature
degC
min
PT24H
So far so good, rrday and tday should do the trick. However, we still need
to be able to query a specific weather station, for which we need some sort of
an identifier. The location we’re interested is Kiutaköngäs in Kuusamo, a rather
spectacular section of rapids in the river Oulanka located right next to the
Oulanka national park:
It turns out (not by coincidence) that FMI has an active observation station
located at Kiutaköngäs. It may be possible to get a full list of weather
stations throught the FMI API itself, but so far fmi does not know anything
about it. In the meanwhile, I scraped
a table of observation stations
from the FMI web site, and created a utility function fmi_weather_stations()
in fmi. The function returns a dataframe of all active observation stations:
Using column FMISID seems promising, and with a little skimming through the
table, we can locate the correct station:
The convience methods in fmi took a little adjusting, but afterwards it is
possible to use FMISID in the query paramaters. Following the fmi tutorial,
it is now possible to do the following. NOTE! You will need to provide
your own apiKey first:
Obviously we are usually interested in time periods longer than one day. In
addition, massaging the data returned by getDailyWeather() still takes a
little manual work. Wrapping this manual work into an utility function:
Using the function above simplifies querying. For demonstration, let’s
get data for the whole year 2012:
Let’s take a look at the measurement data (first 2 days):
The measurements may contain NAs and values -1, which I suspect may also have
something to do with missing values but can’t say for sure.
For comparison’s sake, let’s also get some data from Kaisaniemi (Helsinki)
observation station:
Plotting
Let’s inspect the data by some plotting. First, however, some more data
processing:
First, lets plot the minimum (tmin), average (tday) and maximum (tmax)
temperature per day over year 2012. Plotting below uses
a custom theme for ggplot2.
While we’re at it, let’s also plot the snowdepth:
Finally, let’s take a look at precipitation measurement values and their means:
That’s it, a small demo on how to use fmi package for fetching observation
station specific data.


Eventor is a Personal Event Reminder manager. It assists you in remembering all your important personal forthcoming events, such as birthdays, anniversaries and the like. Eventor is not a calender program - use the builtin Datebook for calendering. The builtin Datebook can do what Eventor does - but Eventor does it more intuitively :o)
Some features of Eventor:
Installation of Eventor is like installing any other Palm OS program:
When the synchronization is done you will have a 'Eventor' icon in the Unfiled category on your Palm PDA. Feel free to move Eventor to another category.
If you use Microsoft Windows 95 or better you might want to install the Eventor Conduit as well:
On the main screen all registered events are shown. Tap on the name of an event to view the event and details of this event. Tap New to add an event. Tap Next to show details of the next forthcoming event. The Print button will only be shown if you have Palm Print installed. Tap the button to get a printout of all events. This have been tested on my Tungsten|T using a bluetooth connection to a MPI bluetooth printer adapter driving an Epson Stylus Color 640 printer.
Tapping an event on the main screen brings up the View Event dialog with details about the event. Tap Done to return to the main screen. Tap Edit to edit the details of the event. Tap Delete to delete the event - you will be asked to confirm your action. The number in parenthesis after the date is the age of the event. This is the number of years passed since the first time this event occured. F.ex. for a persons birthday the age would be the age of the person.
Tapping New on the main screen or Edit on the View Event dialog brings up the Edit Event dialog. If this is a new event all fields are empty.
Enter a short description of the event in the Event field. Set the date of the event by tapping the Not Set button. If you want to be reminded of the event, check the Remind me checkbox. Enter the number of days you want to be reminded before the event is due in the day(s) before event field. If you want to be reminded everyday from the day(s) before event date to the day the event is due, check the Repeat every day to event checkbox.
You can place the event in a category by selecting the category in the upper right corner of the screen.
Tap OK to add the event, Cancel to discard the event and return to the main screen.
Example. I want to add my own birthday, I want to be reminded 5 days before and everyday there after until the event is due. My birthday is 12th of June, 1971. So I set the category to the builtin Birthday category enter a description ("My own birthday") in the Event field. The date is set to 6-12-1971 (American notation). I check the Remind me checkbox. I wanted to be reminded 5 days before the event (day(s) before event) and everyday there after (Repeat every day to event).
The date notation used on this dialog and the main screen is based upon your preferences.
If you bring up the menu on the main screen you have the following options:
If you select the Notifications menu item you will be given a list of forthcoming events. Use the little arrows in the lower right corner (not shown) to show the next/previous event. This dialog is also brought up once a day if there are any pending events. So you do not need to launch Eventor to see forthcoming events. Tap Done to dismiss the dialog.
Select Preferences from the main menu to change the behaviour of Eventor. Eventor brings up the Notifications dialog at the time specified in Alarm at. Default is to bring up the dialog at midnight. Check the Sound alarm box to have Eventor play a sound when the Event list is shown. The sound is only played at the time specified in the Alarm at box. Check the Show notifications on power up box to show the Event list each turn you turn on your PDA. This requries Palm OS 4.0 or better, though. Tap OK to save the new preferences, Cancel to discard changes.
That is all there is to it. Enjoy! :o)


'Real living wage' rises in pre-Christmas pay bump
Thousands of UK workers will enjoy a pre-Christmas pay bump if their employer is a member of the "real living wage" campaign.
Businesses who have signed up to the voluntary scheme will lift their UK hourly rate by 30p to £9.30.
People living in London will see their hourly pay rise by 20p to £10.75.
The scheme is separate to the statutory National Living Wage for workers aged 25 and above which currently stands at £8.21 an hour.
The Living Wage Foundation said its "real" pay rate - which applies to all employees over 18 - is calculated independently and is based on costs such as food, clothing and household bills.
Some 6,000 organisations are now signed up to the scheme, including new members Crystal Palace Football Club, insurer Hiscox, Welsh Water and London City Airport.
They join existing members such as Burberry, the luxury fashion company, and West Ham United Football Club.
The Living Wage Foundation said around 210,000 workers will benefit from the increase.
New research by accountancy firm KPMG suggests that the number of UK jobs paying less than the "real living wage" has fallen over the past year from 22% to 19%.
However, it said 5.2 million jobs pay below the "real" living rate.
The National Living Wage is a key campaign issue as the UK heads towards the general election on 12 December.
An independent report, commissioned by the former Chancellor Philip Hammond, concluded that raising the National Living Wage would have little impact on jobs.
The Conservative Party has promised to increase the National Living Wage to £10.40 by 2024 and to lower the minimum age to 21.
Labour said it will immediately lift the hourly rate to £10 for everyone aged 16 and over if they win the election.
Under the current arrangement, workers under 18 are paid £4.35 an hour.
At the weekend, SNP leader Nicola Sturgeon accused the Tories of short-changing young people with a "discriminatory" minimum wage policy.
She said the SNP will demand an end to the "rip-off" of workers aged under 25.
Katherine Chapman, director of the Living Wage Foundation, said while it is "fantastic" there is so much focus on wages: "We have always been working with businesses to take action now rather than waiting for legislation."
Pam Batty, vice president of corporate responsibility at Burberry, said: "We are calling on all companies to join the pledge, as we know it will meaningfully improve the lives of their people, who are their most valuable asset."


Snookes1516.github.io
We can re-build your resume with our custom made resume templates and create a professional looking resume that is going to stand out and get you noticed. Online custom essays, term papers, research papers, reports, reviews and homework assignments. Professional custom writing service offers high quality and absolutely. Last Updated: September 24, 2018. By using or accessing Indeed’s websites (“Site”), you are consenting to Indeed’s use of Cookies as outlined below. Students California State University Stanislaus. Continuing Education New Mexico State University Alamogordo.
For more information regarding our Resume Writing Company please give Acclaimed Resumes Inc, located in Hoffman Estates, Illinois a call at<PHONE_NUMBER>. How to Choose a Resume Writing Service. Resumesplanet.com - Professional Resume Writing Services. Leading experts in Federal Resume Writing and Federal Career Training and Consulting. Our certified staff will help you land a government.
Resume writing services, fees, New Jersey, Freehold. Federal Resume Writing, Training, Books - The Resume Place. Cover Letters Writing Service by Resume World, Toronto. Resume Writing Services Fees Effective Resumes. GET NOTICED and GET HIRED with a compelling resume and extensive interviewing resources. Traditional resume writing services starting at 00. Results guaranteed.
Professional Resume Writers Military Resume Writers. Your first step in hiring a resume writing service is to review their website and make sure it has a professional appearance. The site should explain We offer Attorney Resume Writing Service, Legal Resume, lawyer resume, Sample Resumes, Law Student Resume, Certified Resume Writers, Sample Legal Resume, Cover Letter. Resume Writing Services and Cover Letter Writing Service from best Professional Resume Writers for Students Resumes, Recent Graduates as well as Experienced. 2018 Average Resume Writer Cost (with Price Factors). Resumesplanet.com - first-rate professional custom resume writing service, providing helpful career tips and more to help get your career on track. Functional Resume Example and Writing. Service Fees - Resume Writing and Interview Coaching.
Will Your Resume Land the Interview? The question is, how much should you pay for a professional resume? So how much should you spend writing get a quality price. Omaha’s Premier Resume Writing Service Why Put Your Career and Financial Future at Risk by Hiring Anyone Other than the Best? Not only has Haute Resume Career.
Our mission at ResumeGo, a professional resume writing service, is to help people further their professional careers by giving them the best chance of getting hired. Your resume and other job search tools are written and provided by an experienced writer Human Resources professional - Heather McBride, SPHR, SHRM-SCP. Wikipedia:Conflict of interest - Wikipedia. Academic ResourcesOur colleges and departments have resources related to academic majors, including advising holds. The Academic Success Center (ASC) Review an example of a functional resume, which emphasizes skills and experience, when to use a functional resume, what to include, and tips for writing. Please enter your Authorization Number and Password below in order to continue your saved application. Free Resume Review by the Professionals at ZipJob. Resume Writing Fees - Chesepeake Career Management Services.
Resume Writing Service Fees - Our Prices. Résumé Writing Fees: Fees for professional resume portfolios vary depending upon individual needs, background, and experience. Bennett, Scott A. The Elements of Résumé Style: Essential Rules and Eye-Opening Advice for Writing Résumés and Cover Letters that Work. AMACOM, 2005 ISBN 0-8144. Learn how to create a professional federal resume and explore services
Get a free resume review by a professional resume writer. Your free resume evaluation includes ATS scan results. Try our Free Resume Checker and Grader today. A comprehensive, coeducational Catholic High school Diocese of Wollongong - Albion Park Act Justly, love tenderly and walk humbly with your God Micah. RighteousRésumés.com Delivers Real Results! Resume, cover letter, LinkedIn profile, selection criteria and interview coaching fees. Purchase online via our resume writing services. The Cooper Union, open since 1859, grants degrees in art, architecture and engineering and offers courses in continuing education in New York City's East Village. Tuition Fees Admission Eastern New Mexico University.
Acclaimed Resumes - Professional Resume Writing Service. Cookies, Privacy and Terms of Service Indeed.com.
Munaaz is the end solution to all your Catering Equipment requirements, based in Cape Town. Contact Affordable-Papers: Your Personal Essay Writer Exceeds. Professional Resume Writers, Resume Writing Services. St Joseph's Catholic High School. Federal Resumes Federal Resume Guidance. Attorney Resume - Legal Resume, Legal Cover Letter. What is Continuing Education? Continuing Education offers a wide variety of non-credit courses for lifelong learning in the areas of Community Education. Professional Resumé Writing Service Resume Writing Services. Resume writing services fees Career - Glide Outplacement.
Professional Resume Writers. Our Resume Writing Services cover Sydney, Melbourne, Brisbane, Adelaide, Perth, Canberra, Australia. Our professional Resume Writers. To hire a Resume Writer to improve your resume, A quality resume writing service doesn t to work solely on your resume. Often rush fees are billed. We are the premier Federal Resume Writing company to choose. We created the federal resume in 1996 and continue to be on the forefront of using the best formats. Yes, Executive Résumé Writing is our specialty and we deliver Real Results. Superior Résumé Writing Services in N. Dallas Texas for professionals, managers. Federal Resume Writing - The Resume Place. Executive Resume Service Packages and Pricing. Executive Resume Packages for VP to C-Level Executives including Executive Resumes, Executive Cover Letters, LinkedIn. Resume Writing Services, Professional Resume Writing. Executive Resume Writing Packages Executive Resume.
Conflict of interest (COI) editing involves contributing to Wikipedia about yourself, family, friends, clients, employers, or your financial and other relationships. Find out how to benefit from professionally written cover letters from Resume World in Toronto. Resume Writing Fees . We pride ourselves in our professionalism. All professional resume writing, development and counseling fees are based


This is my portfolio website where you can find my graphic design and illustration work. Im from the greater buffalo area and I Graduated from UB in 2016 with a BFA in Communications Design
print media created for the college of arts and sciences
In 2014, I had the opportunity to work in the graphic design office for the college of arts and sciences at UB. During my time there, I made print media to help promote events and programs within the university, and learned the inns and outs of formatting for print, as well as working with clients and revising the projects to fit their needs.


{% extends "base.mail.html" %}
{% load i18n %}
{% block content %}
{% blocktrans context 'email' %}
Hi {{ recipient_name }},
Good news, your initiative {{ title }} has been approved!
People can now join your activities. No activities yet? This is the perfect
moment to create one (or two), so people can help you reach your initiative’s goal.
{% endblocktrans %}
{% endblock %}
{% block action %}
{% trans 'View initiative' context 'email' %}
{% endblock %}`


Took this on a busride to wonderland about 30 minutes on.
First impressions (0-30 minutes after ingestion) - don't really feel a thing, wondering if it was even going to work
30-60 minutes - take 1 hit off a joint, get pretty buzzed. get back on the bus, i start looking out the windows and there is most certainly something funny about the clouds, i also feel buzzed so not sure if the 2C-I has kicked yet, then at approx. the 1 hour mark, i get seriouls nausea, not near as bad as dxm but i feel absolutely terrible. This is where i begin to climb, it seems that every period of nausea (which were made in about 5 minute invervals) brought me to a new level until the nausea finally finished at about the 2 hour mark.  I also start to feel a tiny bit euphoric with still a pretty good buzz - nothing comparable to my good friend dxm however. We arrive at wonderland, no difficulty walking - no real intoxication, most certainly one of the downfalls.
Upon entrance to the park (about 4 hour mark now probably) i start to feel extremely fucked, so we decide to go on some rides. In the line i feel i have discovered existance - how everything comes together and the process of becoming a person. I also believed that neverbefore have we as the human race been closer to the time before our birth. There were TONS of people waiting in line, as i waited i came to say some phrases over and over again which i thought were of great beauty, things such as 'it's it, this is it, we're here, this is where we're going' simple little phrases.
The nature of existance - i discovered this again while in line, basically my belief was that before life we start as tons of people waiting in line and each ride on a roller coaster, a complete ride of fear, is the process of creating one person, so all these people get ordered into line and then processed into people.
The first ride - screamed my ass off, upon finishing the ride i felt it a necessity to yell that i had came, which did not actually happen.
now off to the second ride - to be honest i can't even remember what it was, but after finishing the first ride i had these great feelings that all humans were basically the same and if i were to get lost i could find a group of people just like my friends.
On my way to prove my theory, i found this cool frost place that had all these vending machines around, i decided to stay under this frost for periods of 10 minutes at a time, i'd become completely still. I can imagine at this time that the hundreds of people walking by, PROBABLY knew i was fucked.
After walking by my friends at fast speeds several times, and a few more attempts to get lost, we decided to try some more rides.   I kept moving around a lot in the line and was always figiting, yelling and talking a lot. Now the line to topgun has greatly shortened and we are about to get on, i don't feel in the least bit scared, like i probably would usually.
Now the ride. We get on and i'm thinking, 'WTF am i doing?' as the ride starts up and we roll out, i yell HEY at the operator of the ride, and we start what could quite possibly be the longest ride up i've ever experienced.  The fall comes, i let out a scream that i didn't know was possible, as we start going into loops, spinning upside down - i realize something, i can't even feel the ride. I had joked about it before, but this time i could truly not even feel the ride, i just sat there trying to talk to my friend riding with me as he was screaming. To be honest, i was not too happy with the ride, it seemed like nothing and i wanted my wasted time in line back.
After this, i decided that to prolong my experience i would again get lost, but this time COMPLETELY LOST.
So i went on my way into complete delirium.
Me: Yes it was the one over by the green one, but let me tell you it did not bust my mind.
People: So where is it?
 I walked around probably for half an hour and thought i was not going to find my friends for the rest of the night. I almost walked on to some rides by accident but i figured out where i was by the time i almost went on them. At this point, i became extremely disconnected from the world and felt very alone, it was a really really dark feeling. After walking around endlessly, i was starting to become tired then i look and see 4-5 people pointing at me, i've found my friends.
After this great find, i discover we're near a treed area that is sort of blocked off, i decide to take an adventure there. It was in the middle of all this chaos and was an extremely peaceful place covered by trees. Then i see the underbelly of wonderland (people putting out trash). This new experience led me to realize that i really had to piss, (i attempted the use of the washroom earlier but i couldn't feel my body at all, so i wasn't sure if i had to go and when i would try the walls would start moving and i couldn't see anything). At one point i actually saw the process of my memories being remembered, and it wasn't working properly so i knew i wasn't goin to remember everything. Anyway, found the washrooms probably 30 minutes later and i somehow managed to drain my bladder, i guess i really did have to go - i'll be damned.
After this we went to the imax theatre where we watched one small film of some racing which fucked me up quite well, then went to the other theatre and watched the sponge bob one, which was QUITE crazy.
After this we pretty much have to return to the entrance of wonderland so that we can return home, this is probably 8-9 hours after ingestion.  We watch billy madison and i find it quite funny but halfway through the movie, i lose track and i don't remember anything that happened - maybe it got turned off, i have no idea. All i could see were red lights outside the windows. We stop for food and i get McDonalds but i wasn't really hungry and i had not eaten anything since lunch that day, i thought food was disgusting and i had no idea how people ate it. The fact that I ate at mcdonalds was a sign i was finally beginning to come down, about 10 hours after ingestion.
[Erowid Note: Driving while intoxicated or tripping is dangerous and irresponsible because it endangers other people. Don't do it!]
I made it home, jumped into bed and couldn't sleep at all, i felt absolutely exhausted and i could not sleep. This was terrible. I eventually did fall asleep, probably half an hour later.
Upon waking up, i felt quite good.
Afterthoughts about the trip:
I felt that of my many profound ideas (most of which weren't mentioned because i couldn't describe them in words) were just my mind FUCKED on drugs, i didn't get that feeling of a pure experience, it just felt like i was seeing something i wasn't supposed to be seeing, like i somehow wrongly tapped into the mechanics of existence.
The trip was also far too intense and long, it never let up the whole time it was on. I also hated how long it took to come on, i can see how people get impatient and end up taking 100mg or something crazy like that.
I don't think i'll ever try 2c-i again, the trip was far too much, it absolutely overwhelmed me and took away everything i knew. It however did not compare to a 3rd-4th plateau dxm trip, in terms of intensity, quality of high, or fun.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Other efforts that require your help
Animal Rescue / Rights
Children's rights & welfare
Environmental
Humanitarian
Women's Rights
As the Taliban has breached the capital city of Kabul, thousands of Afghans are fighting to find a way out. Humanitarians and soldiers on the ground are doing what they can, but here is our oppurtunity to help save hundreds of lives. Read more on the efforts to get planes on the ground to bring Afghans to safety.
As we battle our everyday stresses, we are also at war with a contagion that has sweep across the globe. Medical workers are working endless hours to help protect us. Here's how we can help prevent the spread.
Haiti was recently hit by a 7.2 magnitude earthquake leaving over a thousand Haitians and counting dead. As rescue efforts are in progress, survivors, many left without homes and any possesions, are in search of aid, food, and supplies.
Our world is telling us that things are changing for the worst. As ice caps melts, deforestation continues, and the heat level around the world rise, we must find way to help planet Earth.


Easily add new values.
Searching for and finding new values is easy.
Easily define new pages.
An easy-to-use API for defining new pages.
glance.page("cpu","CPU") .find("*.cpu") .asPercent(1.0)
All in the browser.
There are no dependencies on anything running on the server.
Open source, easily extensible.
Using open source components, glance was designed so that users can easily develop new components, and make more use of the components.
Bring metrics in.
Easily integrate graphite metrics. Just adding a graphite metric handler will allow users to start pulling graphite metrics into their dashboards.
Get insights out.


show-for-global-setting-showrelative
show-for-global-setting-showutc
show-for-global-setting-timezone-utc
show-for-global-setting-timezone-local
hide-for-global-setting-timezone-utc show-for-global-setting-showutc


Salmon Cookies Sales Page
Back to Homepage
Enter New Store Sales Information
Store Location
Min Customer
Max Customer
Average Sale
Submit


A Java developer's guide to Spock
Derek Eskens
@snekse
Dev 15+ years, OPI 3+ years
Java, JS, Groovy
Star Wars > Star Trek
'Foodie for Life' is tattooed across my tummy
We now have stakeholders asking for testing metrics
and faster deployment of features
Headline
Learn how ___ deploys to production ___ times a day
Testing now takes less code and less time.
class CrewRecruiterServiceSpockMockitoTest
extends Specification implements CommonCrew {
//Inject Mockito mocks into your Spock tests 😱
@InjectMocks CrewRecruiterService crewRecruiterService
@Mock PayrollService payrollService
def setup() {
MockitoAnnotations.initMocks(this);
}
void "SelectForBudget can be tested with Mockito mocks"() {
Mockito.when(payrollService.getSalary(any(CrewMember)))
.thenReturn(100000L)
when:
List crew = crewRecruiterService.selectForBudget(200000L, POOL)
then: "Use 3rd party fluent assertion library"
// AKA: crew == [KIRK, SPOCK]
assertThat(crew).containsExactly(KIRK, SPOCK).inOrder();
}
}
@Test
public void selectForBudget() throws Exception {
// Mock $100k salary for Kirk & Spock
when(payrollService.getSalary(KIRK)).thenReturn(100000L);
when(payrollService.getSalary(SPOCK)).thenReturn(100000L);
// When selecting crew on a $200k budget
List<CrewMember> crew = crewRecruiterService.selectForBudget(200000L, POOL);
// Then Kirk and Spock are the only 2 members selected, and returned in that order.
Assert.assertEquals(new ArrayList<>(asList(KIRK, SPOCK)), crew);
//create inOrder object passing any mocks that need to be verified in order
InOrder inOrder = inOrder(payrollService);
inOrder.verify(payrollService).getSalary(argThat(arg -> arg == CommonCrew.KIRK));
inOrder.verify(payrollService).getSalary(argThat(arg -> arg == CommonCrew.SPOCK));
inOrder.verifyNoMoreInteractions();
}
void "SelectForBudget spends budget in crew priority order /
and avoids unnecessary calls to payroll service"() {
when:
def crew = crewRecruiterService.selectForBudget(200000L, POOL)
then:
1 * payrollService.getSalary(KIRK) >> 100000 // first add Kirk
then:
1 * payrollService.getSalary(SPOCK) >> 100000 // add Spock after Kirk
then:
0 * payrollService.getSalary(_)
and:
crew == [KIRK, SPOCK]
}
void "SelectForBudget spends budget in crew priority order /
and avoids unnecessary calls to payroll service"() {
when: 'We have enough to pay for Kirk and Spock'
def crew = crewRecruiterService.selectForBudget(200000L, POOL)
then: 'We only make our expensive external system salary calls in the order we expect'
1 * payrollService.getSalary(KIRK) >> 100000 // first add Kirk
then: 'add Spock'
1 * payrollService.getSalary(SPOCK) >> 100000 // // add Spock after Kirk
then: 'no more calls to that service since we have depleted our budget'
0 * payrollService.getSalary(_)
and: 'our crew consists of just Kirk and Spock'
crew == [KIRK, SPOCK]
}
def "set course test"() {
Route routeFromEarthToAndoria = new Route([
"Hang a left at Mars",
"Turn right at Alpha Centauri A",
"Gravity assist from Midos V"])
when:
Route results = navigationSystem.setCourse("Andoria")
then:
// ↓ verify this mock called exactly 1 time w/ these params
1 * mockCAS.findRoute("Earth", "Andoria") >> routeFromEarthToAndoria
// ↑ (then return) pojo route
results.directions.first() == "Hang a left at Mars"
}
@Unroll("A budget of #salaryCap pays for #expectedCrew")
void "SelectForBudget adds crew in priority order until budget depleted"() {
when: 'selecting crew at various salary cap levels'
def crew = crewRecruiterService.selectForBudget(salaryCap, POOL)
then: 'we get back crew we can afford in priority order'
crew == expectedCrew
where:
salaryCap || expectedCrew
0 || []
100000 || [KIRK]
299999 || [KIRK, SPOCK]
MAX_VALUE || POOL
}
Closure filterCrewByLevel = { List crew, int rank ->
crew.findResults { it.rank.commandLevel < rank }
}
// ...
1 * mockService.findOfficers(crewMembers) >> {
filterCrewByLevel(it, 5)
}
def KIRK = new CrewMember(firstName: "James", lastName: "Kirk")
Range oneToTen = (1..10) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def crewNames = ["Kirk", "Spock", "Ensign Redshirt"] // ArrayList
// Transform a collection
List crew = crewNames.collect { String lastName ->
long yos = getRandomFromRange(oneToTen) //calling outer scope refs
new CrewMember(lastName: lastName, yearsOfService: yos)
}
// IT, " vs ', interpolation of strings, elvis, null-safe
crew.each { println "${it.firstName?:''} $it.lastName - $it.rank?.salary" }
assert KIRK != SPOCK // == is .equals, === for references
http://groovy-lang.org/differences.html
http://groovy-lang.org/syntax.html
@Subject Starship starship = new Starship()
@Collaborator PayrollService payrollService = Mock()
@Shared def POOL = ["Kirk", "Spock", "Ensign Redshirt"].asImmutable()
@Collaborator def crewManager = Spy(CrewManager, constructorArgs: [POOL])
def "A very descriptive name for our test"() {
def currentCrew = ['RebelSpy'] + POOL /* given: */
expect:
currentCrew.size() == 4
when:
def result = starship.findIntruders()
then:
(1..4) * payrollService.getSalary(_) //default returns falsey
1 * crewManager.getExpectedCrew(starship) //concrete call
(1.._) * crewManager.isSpy(starship, _ as CrewMember) >> { ship, cm ->
return ship.name == 'Enterprise' && cm.lastName.contains('Spy')
}
result.lastName == 'RebelSpy'
}
class MyFirstSpockSpec extends Specification {
StringUtil stringUtil = new StringUtil()
// optional setup / teardown methods
def setup() {} // run before every feature method
def cleanup() {} // run after every feature method
def setupSpec() {} // run before the first feature method
def cleanupSpec() {} // run after the last feature method
void testContains() {
expect:
stringUtil.contains("Spock", "S")
}
}
class SetupMethodsAreNotNeededSpec extends MyBaseSpecification {
// Setup methods aren't really needed
StringUtil stringUtilOne = new StringUtil()
@Shared NumberUtil numberUtilOne = new NumberUtil()
/* ---------------- But if you really want them... ----------------*/
StringUtil stringUtilTwo
@Shared NumberUtil numberUtilTwo
def setup() {
//super.setup() //calling super for Fixture methods isn't needed
stringUtilTwo = new StringUtil()
}
def setupSpec() {
numberUtilTwo = new NumberUtil() //instance fields must be @Shared
}
}
void testSpockIsCool() {
// The setup: or given: labels are optional
def crew = [KIRK, SPOCK, SCOTTY]
expect: "the obvious answer from a fanboy"
SPOCK == fanboy.whoIsTheCoolest(crew)
when: "Spock isn't an option"
fanFav = fanboy.whoIsTheCoolest([KIRK, SCOTTY])
then: "Kung Fu is cool"
fanFav == KIRK
and: "for visual separation"
fanFav.name.contains('James')
cleanup: "optional clean up"
SPOCK.mindMeld(fanboy)
}
void "expect assertions to be truthy"() {
expect:
SPOCK.fullName == "S'chn T'gai Spock"
SPOCK.isCool() && ! SPOCK.isFunny()
SPOCK.rank > 0
SPOCK.salary // Truthy
when:
SPOCK.tellJoke()
then:
thrown(IllogicalRequestException)
when:
SPOCK.writeTests()
then:
notThrown(IllogicalRequestException)
noExceptionThrown() // Rarely used
}
void "Registering a crew member is done completely"() {
when:
def crewMember = ship.getCrewMemberById(1)
then:
with(crewMember) {
firstName == 'James'
lastName == 'Kirk'
rank.title == 'Captain'
}
}
void "getCrew returns the expected size of valid crew members"() {
when:
def crew = ship.getCrew()
then:
crew.size() == 12
// This would not tell you _which_ crewMember failed the assertion
crew.every { crewMember.fullName?:'' != '' }
crew.each { assertIsValidCrewMember(it) }
}
void assertIsValidCrewMember(crewMember) {
assert crewMember.fullName?:'' != ''
}
Condition not satisfied:
crew.collect { it.fullName }.join(';') == [KIRK, RED_SHIRT].collect { it.fullName }.join(';')
| | | | | | | |
| [James Kirk] James Kirk| Kirk Doe [James Kirk, John Doe] James Kirk;John Doe
[Kirk] false
9 differences (52% similarity)
James Kirk(---------)
James Kirk(;John Doe)
at com.objectpartners.eskens.spock.services.CrewRecruiterServiceSpockTest.
Crew has a red shirt(CrewRecruiterServiceSpockTest.groovy:76)
com.objectpartners.eskens.spock.services.CrewRecruiterServiceSpockTest > Crew has a red shirt FAILED
org.spockframework.runtime.SpockComparisonFailure at CrewRecruiterServiceSpockTest.groovy:76
1 test completed, 1 failed
:test FAILED
@Unroll("A budget of #salaryCap pays for #expectedCrew")
void "SelectForBudget adds crew in priority order until budget depleted"() {
given: 'a flat rate of 100,000 per member'
payrollService.getSalary(_) >> 100000
when: 'selecting crew at various salary cap levels'
def crew = crewRecruiterService.selectForBudget(salaryCap, POOL)
then: 'we get back crew we can afford in priority order'
crew == expectedCrew
where: 'input of salaryCap should produce output of expectedCrew'
salaryCap || expectedCrew
0 || []
100000 || [KIRK]
299999 || [KIRK, SPOCK]
MAX_VALUE || POOL
}
@Unroll("Scotty, warp #warpSpeed")
void "Engines don't blow up if we give it a bad command"() {
when: 'we tell the ship to warp at various level'
ship.controls.command('warp', warpSpeed)
then: 'It never explodes'
noExceptionThrown()
where:
warpSpeed || _
null || _
0 || _
1 || _
MAX_VALUE || _
'Bajillion' || _
}
@Shared CrewManager crewMgr = new CrewManagerTestingUtil()
static final ENTERPRISE = "USS Enterprise - NCC-1701"
@Unroll("#crewMember should be assigned to the #expectedShip")
void "Using Shared and statics"() {
expect:
// ...
where: "props defined outside test must be static"
crewMember || expectedShip
crewMgr.get('Spock') || ENTERPRISE
crewMgr.get('Kirk') || ENTERPRISE
crewMgr.get('Data') || 'USS Enterprise - NCC-1701-C'
}
given: 'an initial speed'
ship.controls.command('warp', start)
assert getCurrentWarpSpeed() == start
when:
ship.controls.command("${multiplier} our velocity")
then:
getCurrentWarpSpeed() == finalSpeed
where: 'we reference our start value to calculate the final value'
start | multiplier || finalSpeed
1 | 'Double' || start * 2
4 | 'Triple' || start * 3
7 | 'Quadruple' || 12 //Max warp factor is 12
expect: 'an initial speed'
sendCommand('warp', start)
expect:
sendCommand("${command} our velocity").getCurrentWarpSpeed() == finalSpeed
where: 'we reference our start value to calculate the final value'
start | command | multiplier
1 | 'Double' | 2
7 | 'Quadruple' | 4
finalSpeed = [(start * multiplier), 12].max() //Max warp factor is 12
def "spock can maths"() {
expect:
[a,b].sum(0) == c
where:
a << [2, 3, 4]
b << (2..6).step(2)
c << "4,7,10".split(',')
}
where:
[lastName, rank, yos] << excel.get(1, ['B','C','J'])
when:
command.call(start)
then:
getCurrentWarpSpeed() == finalSpeed
where: 'fun with closures'
maxAwareCaptain = { speed ->
KIRK.say( speed > 12 ?  Slow Down!'
: 'Steady as she goes, Mr Sulu')
}
start | command || finalSpeed
1 | { ship.command('warp 2') } || 2
6 | { KIRK.say('Warp factor one, Mr. Sulu.') } || 1
12 | maxAwareCaptain || 12
13 | maxAwareCaptain || 12
BridgeInterface bridgeInterface = Mock()
def foodReplicator = Mock(FoodReplicator)
Beamer beamer = Mock(Beamer)
PayrollService payrollService = Spy()
def engineControl = Spy(EngineControl)
def crewManager = Spy(CrewManager, constructorArgs: [POOL])
CrewMember SPOCK = h2.getCrewMember( [ lastName: 'Spock' ])
def spockSpy = Spy(SPOCK) //New feature!
Ship ship = new UssEnterprise()
CrewManager crewManager = Mock()
def setup() {
ship.crewManager = crewManager
}
CrewManager crewManager = Mock()
Ship ship = new UssEnterprise(crewManager: crewManager)
@Subject Ship ship = new UssEnterprise()
@Collaborator CrewManager crewManager = Mock()
// http://bit.ly/spock-subjects-collaborators-extension
when: 'a crew member asks for cereal'
computer.command('I want some cereal')
then: """
expect FoodReplicator called once
with a quantity param of 1
and cereal type of 'Sugar Smacks'
"""
1 * foodReplicator.make(1, 'Sugar Smacks') /*
| | | |
| | | |
| | | argument constraints
| | method constraint
| target constraint
cardinality
*/
/** Taken (almost) directly from the docs **/
1 * computer.command("Lights") // exactly one call
0 * computer.command("Lights") // zero calls
(1..3) * computer.command("Lights") // between one and three calls (inclusive)
(1.._) * computer.command("Lights") // at least one call
(_..3) * computer.command("Lights") // at most three calls
/*
^^ Groovy Ranges at work
*/
_ * computer.command("Lights") // any number of calls, including zero
// (rarely needed; see 'Strict Mocking')
computer.command("Lights") // cardinality is optional, same as: _ *
_ * _.getStatus() // Match any getStatus() call for all mocks/spies
_ * tribble._ // Match any method call on a tribble
_ * targetingSystem./Fire.*/ // Match all firing requests via regex
_ * _._ // Match any method call on any mock/spy
(..) * .(*_) // Highly illogical
/** Taken (almost) directly from the docs **/
1 * computer.command("lights") // an argument that is equal to the String "lights"
1 * computer.command(!"lights") // an argument that is unequal to the String "lights"
1 * computer.command() // the empty argument list (would never match in our example)
1 * computer.command(_) // any single argument (including null)
1 * computer.command(*_) // any argument list (including the empty argument list)
1 * computer.command(!null) // any non-null argument
1 * computer.command(_ as String) // any non-null argument that is-a String
1 * computer.command({ it.length() > 3 }) // an argument that satisfies the given predicate
// (here: message length is greater than 3)
1 * foodReplicator.make( {it > 0}, !null, _ ) // Multiple arguments
Ensure only expected calls are executed
then: 'expect to make a banana and fail if anything else is made'
1 * foodReplicator.make(1, 'Banana')
0 * foodReplicator.make(*_)
when: 'Kirk pushes the big red button'
def response = bigRedButton.push()
then: 'Klingons have fired on use and disabled out weapons'
targetingSystem.fireAllTheWeapons() >> { throw new WeaponsMalfunction('') }
then: 'the response confirms the targeting failed'
response == "I'm sorry, Captain. I'm afraid I can't do that."
when: 'Kirk pushes the big red button'
response = bigRedButton.push()
then: 'but since he reprogrammed the system'
targetingSystem.fireAllTheWeapons() >> new TargetingResponse()
then: 'the response indicates targeting worked'
response == "Targeting confirmed."
computer.request('What is 1 + 1') >> "2"
computer.request('What is 1 + 2') >> "3"
computer.request("Do the thing") >> "Okay" >> "No"
computer.request("Tribble count") >>> ["2", "3", "4", "Many"]
foodReplicator.make(*_) >> {args -> "Food: $args[1]; Qty: $args[0]" }
foodReplicator.make(*_) >> {qty, food -> "Making $qty "+ pluralize(qty, food)}
// Complex mocking
foodReplicator.make(*_) >> {int qty, String food ->
if (food == 'Cereal') {
return 'Sorry, we are out of sugar smacks'
}
return "Making $qty "+ pluralize(qty, food)
}
// Forcing exceptions
foodReplicator.make( {it <= 0} , _ ) >> { throw new InvalidQuantity(it[0]) }
def payrollService = Spy(PayrollService) {
// Mock the pay for every crew member the same amount
_ * getSalaryFor(_ as CrewMember) >> 50_000
}
when:
def amountPaid = accountingService.payCrew()
then: """
We confirm we ask for getTotalCrewPayroll for our crew,
but let the impl do it's thing. When the impl calls
getSalaryFor, that's when our stubbing comes in
"""
1 * payrollService.getTotalCrewPayroll(CREW)
amountPaid == 600_000 // assuming crew of 12
def alienLibrary = Spy(AlienLibrary)
when:
def result = comms.sendBeacon('Hailing Borg Ship')
then: "We call the actual implementation _after_ we mess with it"
alienLibrary.receive(_) >> { msg ->
def alteredOutgoingMsg = filterNSFW(msg)
def alienResp = callRealMethodWithArgs(alteredOutgoingMsg)
return translateResponse(alienResp)
}
result == "Test Often and Prosper"
Provides Spring integration so beans can be injected into integration specs
Or borrow ones like the great subject/collaborator extension
@SpringBootTest
class CrewMemberIntegrationTest extends Specification {
@Autowire MockMvc mvc
@Autowire CrewRepo crewRepo
def jsonSlurper = new JsonSlurper()
void 'can fetch crew member by ID'() {
def rank = new Rank(level: 5, title: 'Grand Admiral')
def khan = new CrewMember(lastName:'Khan', rank: rank )
CrewMember khan = crewRepo.saveAndFlush(khan)
when:
def data = jsonSlurper.parseText(getJson(mvc, "/crew/${khan.id}"))
then:
data.id != null
data.lastName == 'Khan'
data.rank.title == 'Grand Admiral'
}
}
@SpringBootTest
class CrewServiceIntegrationTest extends Specification {
@Autowired CrewService crewService
@Autowired ExternalSalaryService mockSalaryService
// test, tests, tests
/** Override Spring's beans with Spock mocks **/
@TestConfiguration
static class Config {
private DetachedMockFactory factory = new DetachedMockFactory()
@Bean
ExternalSalaryService externalSalaryService() {
factory.Mock(ExternalSalaryService)
}
}
}
@Autowired CrewService crewService // class under test
@Autowired ExternalSalaryService mockSalaryService // Mocked Bean
void "crew service delegates to ExternalSalaryService"() {
when: 'we have 5 crew members in H2'
def amt = crewService.getTotalCrewCost()
then: 'use the mocked spring bean in an integration test 😃'
mockSalaryService.getSalaryFor(_) >> 100000
amt == 500000
}
Blog post with more information
Coming soon...
@SpringBean & @SpringSpy
@AutoCleanup def fio = new FileIOService()
@Timeout(5)
@Use(DiscoMixin)
@Issue('BUG-1701')
void "is Spock cool"() {
expect: SPOCK.dance() == "Doin' the Hustle"
}
@Ignore("Optional description")
@IgnoreRest //Only run tests annotated w/ this
@IgnoreIf({ System.getProperty("os.name").contains("borg") })
@Requires({ os.holodeck })
@PendingFeature
def "Failing tests marked as skipped"() { expect: false }
@PendingFeature // Failing Test! No longer pending :-)
def "marks data driven feature where all iterations pass as _failed!_"() {
expect: test
where: test << [true, true, true]
}
@Rule
public Retry retry = new Retry(3);
void "taking kobayashi maru test"() {
expect:
kobayashiMaru.takeTest().results == 'passed'
}
void "access network filesystem"() {
when:
federationCommand.requestFiles('Kobayashi Maru')
then:
noExceptionThrown()
}
3rd party FoodReplicator is creating new instances of ReplicatedFood
You need to mock what ReplicatedFood#tastesLike() returns
We can't mock or spy FoodReplicator
def anyFood = GroovyMock(ReplicatedFood, global: true)
when:
def courses = foodReplicator.request("A 5 course meal")
then: 'call our mocked static method once'
1 * ReplicatedFood.getStaticMenuOptions() >> ['Chicken', 'Sugar Smacks', 'Soup']
and: 'Every food item created is a mock, so override tastesLike'
5 * anyFood.tastesLike() >> ['Soup', 'Chicken']
and: 'We should know what our dinner will taste like'
courses*.tastesLike() == ['Soup', 'Chicken', 'Chicken', 'Chicken', 'Chicken']
def "@PendingFeature marks data driven feature where all iterations pass as failed"() {
when:
runner.runWithImports("""
class Foo extends Specification {
@PendingFeature
def bar() {
expect: test
where:
test << [true, true, true]
}
}
""")
then:
AssertionError e = thrown(AssertionError)
e.message == "Feature is marked with @PendingFeature but passes unexpectedly"
}


{%extends 'base.html' %} {% block title %}
Starting Date: {{booking[4]}}
Ending Date: {{booking[5]}}
Total Cost: ${{booking[6] * booking[7]}} AUD
Status: Waiting for host response
Potential User: {{booking[9]}}
Price: ${{booking[6]}} AUD
Status: Waiting for your response


1Johns Hopkins University, Baltimore, MD, USA 2Intuitive Surgical, Inc., Sunnyvale, CA, USA 3Worcester Polytechnic Institute, Worcester, MA, USA


Files | |
| file | access.hpp |
| file | assert.hpp |
| file | closure.hpp |
| file | coordinate_dimension.hpp |
| file | coordinate_system.hpp |
| file | coordinate_type.hpp |
| file | cs.hpp |
| file | exception.hpp |
| file | exterior_ring.hpp |
| file | geometry_id.hpp |
| file | interior_rings.hpp |
| file | interior_type.hpp |
| file | is_areal.hpp |
| file | mutable_range.hpp |
| file | point_order.hpp |
| file | point_type.hpp |
| file | radian_access.hpp |
| file | radius.hpp |
| file | reverse_dispatch.hpp |
| file | ring_type.hpp |
| file | srs.hpp |
| file | tag.hpp |
| file | tag_cast.hpp |
| file | tags.hpp |
| file | topological_dimension.hpp |
|
April 2, 2011 |
Copyright © 2007-2011 Barend Gehrels, Amsterdam, the Netherlands Copyright © 2008-2011 Bruno Lalande, Paris, France Copyright © 2009-2010 Mateusz Loskot, London, UK |


The avatar component displays an image to identify a record. The component includes an option to let users change the image. To select a different image, users can click the image or drag another image on top of it. In addition, when images are missing, the avatar component can display the initials of a name that you provide.
File
object that represents the avatar.
src
does not specify an image, the component extracts initials from the first and last words of this name and displays them in place of the missing image. To ensure that the component extracts the correct initials, specify a name with no prefix (e.g. "Dr.", "Mrs.") or suffix (e.g. "Jr.", "Esq."). You can also provide the initials with a space between them (e.g. "R H").
SkyFileItem
object when the image is updated.
File
object associated with the SkyFileItem
object.


\
Machine learning is the science of giving computers the ability to learn without being explicitly programmed. The idea is that there exist generic algorithms which can be used to find patterns in a broad class of data sets without having to write code specifically for each problem. The algorithm will build its own logic based on the data.
Machine learning is a subfield of computer science, and is closely related to computational statistics. It evolved from the study of pattern recognition in artificial intelligence (AI) research, and has made contributions to AI tasks like computer vision, natural language processing and speech recognition. It has also, especially in later years, found applications in a wide variety of other areas, including bioinformatics, economy, physics, finance and marketing.
The approaches to machine learning are many, but are often split into two main categories. In supervised learning we know the answer to a problem, and let the computer deduce the logic behind it. On the other hand, unsupervised learning is a method for finding patterns and relationship in data sets without any prior knowledge of the system. Some authours also operate with a third category, namely reinforcement learning. This is a paradigm of learning inspired by behavioural psychology, where learning is achieved by trial-and-error, solely from rewards and punishment.
Another way to categorize machine learning tasks is to consider the desired output of a system. Some of the most common tasks are:
Before we proceed however, there are several practicalities with data analysis and software tools we would like to present. These tools will help us in our understanding of various machine learning algorithms.
Our emphasis here is on understanding the mathematical aspects of different algorithms, however, where possible we will emphasize the importance of using available software.
If you have Python installed (we recommend Python3) and you feel pretty familiar with installing different packages, we recommend that you install the following Python packages via pip as
For Python3, replace pip with pip3.
For OSX users we recommend also, after having installed Xcode, to install brew. Brew allows for a seamless installation of additional software via for example
For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution you can use pip as well and simply install Python as
etc etc.
 The software library R is tuned to statistically analysis and allows for an easy usage of the tools we will discuss in these texts.
To install R with Jupyter notebook following the link here
For the C++ affecianodas, Jupyter/IPython notebook allows you also to install C++ and run codes written in this language interactively in the browser. Since we will emphasize writing many of the algorithms yourself, you can thus opt for either Python or C++ as programming languages.
To add more entropy, cython can also be used when running your notebooks. It means that Python with the Jupyter/IPython notebook setup allows you to integrate widely popular softwares and tools for scientific computing. With its versatility, including symbolic operations, Python offers a unique computational environment. Your Jupyter/IPython notebook can easily be converted into a nicely rendered PDF file or a Latex file for further processing. For example, convert to latex as
jupyter nbconvert filename.ipynb --to latex
If you use the light mark-up language doconce you can convert a standard ascii text file into various HTML formats, ipython notebooks, latex files, pdf files etc.
import numpy as np
import matplotlib.pyplot as plt
from scipy import sparse
import pandas as pd
from IPython.display import display
eye = np.eye(4)
print(eye)
sparse_mtx = sparse.csr_matrix(eye)
print(sparse_mtx)
x = np.linspace(-10,10,100)
y = np.sin(x)
plt.plot(x,y,marker='x')
plt.show()
data = {'Name': ["John", "Anna", "Peter", "Linda"], 'Location': ["Nairobi", "Napoli", "London", "Buenos Aires"], 'Age':[51, 21, 34, 45]}
data_pandas = pd.DataFrame(data)
display(data_pandas)
import numpy as np
import matplotlib.pyplot as plt
from scipy import sparse
import pandas as pd
from IPython.display import display
import mglearn
import sklearn
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
x, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3,3,1000,endpoint=False).reshape(-1,1)
reg = DecisionTreeRegressor(min_samples_split=3).fit(x,y)
plt.plot(line, reg.predict(line), label="decision tree")
regline = LinearRegression().fit(x,y)
plt.plot(line, regline.predict(line), label= "Linear Rgression")
plt.show()
The population dynamics of a simple predator-prey system is a classical example shown in many biology textbooks when ecological systems are discussed. The system contains all elements of the scientific method:
Lots of data about populations of hares and lynx collected from furs in Hudson Bay, Canada, are available. It is known that the populations oscillate. Why? Here we start by
Most mammalian predators rely on a variety of prey, which complicates mathematical modeling; however, a few predators have become highly specialized and seek almost exclusively a single prey species. An example of this simplified predator-prey interaction is seen in Canadian northern forests, where the populations of the lynx and the snowshoe hare are intertwined in a life and death struggle.
One reason that this particular system has been so extensively studied is that the Hudson Bay company kept careful records of all furs from the early 1800s into the 1900s. The records for the furs collected by the Hudson Bay company showed distinct oscillations (approximately 12 year periods), suggesting that these species caused almost periodic fluctuations of each other's populations. The table here shows data from 1900 to 1920.
| Year | Hares (x1000) | Lynx (x1000) |
|---|---|---|
| 1900 | 30.0 | 4.0 |
| 1901 | 47.2 | 6.1 |
| 1902 | 70.2 | 9.8 |
| 1903 | 77.4 | 35.2 |
| 1904 | 36.3 | 59.4 |
| 1905 | 20.6 | 41.7 |
| 1906 | 18.1 | 19.0 |
| 1907 | 21.4 | 13.0 |
| 1908 | 22.0 | 8.3 |
| 1909 | 25.4 | 9.1 |
| 1910 | 27.1 | 7.4 |
| 1911 | 40.3 | 8.0 |
| 1912 | 57 | 12.3 |
| 1913 | 76.6 | 19.5 |
| 1914 | 52.3 | 45.7 |
| 1915 | 19.5 | 51.1 |
| 1916 | 11.2 | 29.7 |
| 1917 | 7.6 | 15.8 |
| 1918 | 14.6 | 9.7 |
| 1919 | 16.2 | 10.1 |
| 1920 | 24.7 | 8.6 |
import numpy as np
from matplotlib import pyplot as plt
# Load in data file
data = np.loadtxt('src/Hudson_Bay.csv', delimiter=',', skiprows=1)
# Make arrays containing x-axis and hares and lynx populations
year = data[:,0]
hares = data[:,1]
lynx = data[:,2]
plt.plot(year, hares ,'b-+', year, lynx, 'r-o')
plt.axis([1900,1920,0, 100.0])
plt.xlabel(r'Year')
plt.ylabel(r'Numbers of hares and lynx ')
plt.legend(('Hares','Lynx'), loc='upper right')
plt.title(r'Population of hares and lynx from 1900-1920 (x1000)}')
plt.savefig('Hudson_Bay_data.pdf')
plt.savefig('Hudson_Bay_data.png')
plt.show()
We see from the plot that there are indeed fluctuations. We would like to create a mathematical model that explains these population fluctuations. Ecologists have predicted that in a simple predator-prey system that a rise in prey population is followed (with a lag) by a rise in the predator population. When the predator population is sufficiently high, then the prey population begins dropping. After the prey population falls, then the predator population falls, which allows the prey population to recover and complete one cycle of this interaction. Thus, we see that qualitatively oscillations occur. Can a mathematical model predict this? What causes cycles to slow or speed up? What affects the amplitude of the oscillation or do you expect to see the oscillations damp to a stable equilibrium? The models tend to ignore factors like climate and other complicating factors. How significant are these?
The classical way (in all books) is to present the Lotka-Volterra equations:
$$
\begin{align*}
\frac{dH}{dt} &= H(a - b L)\\
\frac{dL}{dt} &= - L(d - c H)
\end{align*}
$$
Here,
Most books quickly establish the model and then use considerable space on discussing the qualitative properties of this nonlinear system of ODEs (which cannot be solved)
The population of hares evolves due to births and deaths exactly as a bacteria population:
$$
\Delta H = a \Delta t H^n
$$
However, hares have an additional loss in the population because
they are eaten by lynx.
All the hares and lynx can form
\( H\cdot L \) pairs in total. When such pairs meet during a time
interval \( \Delta t \), there is some
small probablity that the lynx will eat the hare.
So in fraction \( b\Delta t HL \), the lynx eat hares. This
loss of hares must be accounted for. Subtracted in the equation for hares:
$$ \Delta H = a\Delta t H^n - b \Delta t H^nL^n$$
We assume that the primary growth for the lynx population depends on sufficient food for raising lynx kittens, which implies an adequate source of nutrients from predation on hares. Thus, the growth of the lynx population does not only depend of how many lynx there are, but on how many hares they can eat. In a time interval \( \Delta t HL \) hares and lynx can meet, and in a fraction \( b\Delta t HL \) the lynx eats the hare. All of this does not contribute to the growth of lynx, again just a fraction of \( b\Delta t HL \) that we write as \( d\Delta t HL \). In addition, lynx die just as in the population dynamics with one isolated animal population, leading to a loss \( -c\Delta t L \).
The accounting of lynx then looks like
$$ \Delta L = d\Delta t H^nL^n - c\Delta t L^n$$
By writing up the definition of \( \Delta H \) and \( \Delta L \), and putting all assumed known terms \( H^n \) and \( L^n \) on the right-hand side, we have
$$ H^{n+1} = H^n + a\Delta t H^n - b\Delta t H^n L^n $$
$$ L^{n+1} = L^n + d\Delta t H^nL^n - c\Delta t L^n $$
Note:
import numpy as np
import matplotlib.pyplot as plt
def solver(m, H0, L0, dt, a, b, c, d, t0):
"""Solve the difference equations for H and L over m years
with time step dt (measured in years."""
num_intervals = int(m/float(dt))
t = np.linspace(t0, t0 + m, num_intervals+1)
H = np.zeros(t.size)
L = np.zeros(t.size)
print('Init:', H0, L0, dt)
H[0] = H0
L[0] = L0
for n in range(0, len(t)-1):
H[n+1] = H[n] + a*dt*H[n] - b*dt*H[n]*L[n]
L[n+1] = L[n] + d*dt*H[n]*L[n] - c*dt*L[n]
return H, L, t
# Load in data file
data = np.loadtxt('src/Hudson_Bay.csv', delimiter=',', skiprows=1)
# Make arrays containing x-axis and hares and lynx populations
t_e = data[:,0]
H_e = data[:,1]
L_e = data[:,2]
# Simulate using the model
H, L, t = solver(m=20, H0=34.91, L0=3.857, dt=0.1,
a=0.4807, b=0.02482, c=0.9272, d=0.02756,
t0=1900)
# Visualize simulations and data
plt.plot(t_e, H_e, 'b-+', t_e, L_e, 'r-o', t, H, 'm--', t, L, 'k--')
plt.xlabel('Year')
plt.ylabel('Numbers of hares and lynx')
plt.axis([1900, 1920, 0, 140])
plt.title(r'Population of hares and lynx 1900-1920 (x1000)')
plt.legend(('H_e', 'L_e', 'H', 'L'), loc='upper left')
plt.savefig('Hudson_Bay_sim.pdf')
plt.savefig('Hudson_Bay_sim.png')
plt.show()
If we perform a least-square fitting, we can find optimal values for the parameters \( a \), \( b \), \( d \), \( c \). The optimal parameters are \( a=0.4807 \), \( b=0.02482 \), \( d=0.9272 \) and \( c=0.02756 \). These parameters result in a slightly modified initial conditions, namely \( H(0) = 34.91 \) and \( L(0)=3.857 \). With these parameters we are now ready to solve the equations and plot these data together with the experimental values.
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display
import sklearn
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
data = np.loadtxt('src/Hudson_Bay.csv', delimiter=',', skiprows=1)
x = data[:,0]
y = data[:,1]
line = np.linspace(1900,1920,1000,endpoint=False).reshape(-1,1)
reg = DecisionTreeRegressor(min_samples_split=3).fit(x.reshape(-1,1),y.reshape(-1,1))
plt.plot(line, reg.predict(line), label="decision tree")
regline = LinearRegression().fit(x.reshape(-1,1),y.reshape(-1,1))
plt.plot(line, regline.predict(line), label= "Linear Regression")
plt.plot(x, y, label= "Linear Regression")
plt.show()
HudsonBay = read.csv("src/Hudson_Bay.csv",header=T)
fix(HudsonBay)
dim(HudsonBay)
names(HudsonBay)
plot(HudsonBay$Year, HudsonBay$Hares..x1000.)
attach(HudsonBay)
plot(Year, Hares..x1000.)
plot(Year, Hares..x1000., col="red", varwidth=T, xlab="Years", ylab="Haresx 1000")
summary(HudsonBay)
summary(Hares..x1000.)
library(MASS)
library(ISLR)
scatter.smooth(x=Year, y = Hares..x1000.)
linearMod = lm(Hares..x1000. ~ Year)
print(linearMod)
summary(linearMod)
plot(linearMod)
confint(linearMod)
predict(linearMod,data.frame(Year=c(1910,1914,1920)),interval="confidence")
set.seed(1485)
len = 24
x = runif(len)
y = x^3+rnorm(len, 0,0.06)
ds = data.frame(x = x, y = y)
str(ds)
plot( y ~ x, main ="Known cubic with noise")
s = seq(0,1,length =100)
lines(s, s^3, lty =2, col ="green")
m = nls(y ~ I(x^power), data = ds, start = list(power=1), trace = T)
class(m)
summary(m)
power = round(summary(m)$coefficients[1], 3)
power.se = round(summary(m)$coefficients[2], 3)
plot(y ~ x, main = "Fitted power model", sub = "Blue: fit; green: known")
s = seq(0, 1, length = 100)
lines(s, s^3, lty = 2, col = "green")
lines(s, predict(m, list(x = s)), lty = 1, col = "blue")
text(0, 0.5, paste("y =x^ (", power, " +/- ", power.se, ")", sep = ""), pos = 4)


This website's theme is a modification of an original Bootstrap theme found online. Source: Start Bootstrap
The Road Trip To Computing Science.
Music, Sports and Many More.Take A Look!
The Different Fields That I Have Worked In.
Find Out More By Clicking The Button Below.


Kathleen's Portfolio
Hello! I am Kathleen Qian. Welcome to my portfolio!
I come from the Australian National University (located in Canberra). I'm in double degree of Advanced Computing (R&D) and Actuarial Studies.
I love listening to music, trying delicious food around the world, reading historical or cultural books and drawing Chinese paintings in my free time. I am eager for Lego, Ring Fit Adventure and Avalon board game recently.
Profile Links
Project Experience
- “Tortoise Smart Home” Internet of Things Device (November 2018 – February 2019)
- The Impact of Data Quality on Inferencing Quality (June 2019 – January 2020)
- “QPet” Startup Project (November 2019 – March 2020)
Built a complete IoT smart home artefact for pet tortoises with the own website remotely control and monitor.
An individual data analysis research project with half-way paper and poster.
Published a public innovation blog, designed a startup logo, developed market analysis and delivered a presentation.
Favourite Movies
- Eight Below 🐶
- Bridge to Terabithia 🧚
- The Chronicles of Narnia 🦁
- Almost all Disney live-action movies...💗
My Photos
Click HERE to see more of my photos! 🎞


--- layout: page title: CodeWeekEU 2015 Storytelling and Video Contest ---
Europe Code Week ambassadors encourage all event organizers to tell their CodeWeek stories by making short videos and sharing them on YouTube.
The CodeWeekEU-2015 Video Contest provides an additional motivation to share and promote the videos in order to keep raising awareness of the importance of computational thinking beyond Code Week.
You can take participate with three kinds of videos:
The first round of the contest ended on October 31, 2015, but videos can be submitted (and liked) until December 31, 2015 to take part in the second round! The most popular videos (those with most views, likes, and comments on YouTube by the end of the contest) will be displayed on Europe Code Week website.
The most popular videos in each country will be awarded with official certificates.
Additional prizes can be offered by sponsors.


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
A markup annotation
An annotation associates an object such as a note, sound, or movie with a location on a page of a PDF document, or provides a way to interact with the user by means of the mouse and keyboard.
__construct(
$annotationDictionary
)
:
void
Annotation object constructor
| Name | Type | Description |
|---|---|---|
| $annotationDictionary |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
create(
float $x1, float $y1, float $x2, float $y2, string $text, string $subType, array $quadPoints
)
:
\Zend_Pdf_Annotation_Markup
Create markup annotation object
Text markup annotations appear as highlights, underlines, strikeouts or jagged ("squiggly") underlines in the text of a document. When opened, they display a pop-up window containing the text of the associated note.
$subType parameter may contain Zend_Pdf_Annotation_Markup::SUBTYPE_HIGHLIGHT Zend_Pdf_Annotation_Markup::SUBTYPE_UNDERLINE Zend_Pdf_Annotation_Markup::SUBTYPE_SQUIGGLY Zend_Pdf_Annotation_Markup::SUBTYPE_STRIKEOUT for for a highlight, underline, squiggly-underline, or strikeout annotation, respectively.
$quadPoints is an array of 8xN numbers specifying the coordinates of N quadrilaterals default user space. Each quadrilateral encompasses a word or group of contiguous words in the text underlying the annotation. The coordinates for each quadrilateral are given in the order x1 y1 x2 y2 x3 y3 x4 y4 specifying the quadrilateral’s four vertices in counterclockwise order starting from left bottom corner. The text is oriented with respect to the edge connecting points (x1, y1) and (x2, y2).
| Name | Type | Description |
|---|---|---|
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float | |
| $text | string | |
| $subType | string | |
| $quadPoints | array | [x1 y1 x2 y2 x3 y3 x4 y4] |
| Type | Description |
|---|---|
| \Zend_Pdf_Annotation_Markup |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
getBottom(
)
:
float
Get bottom edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::getBottom()| Type | Description |
|---|---|
| float |
getLeft(
)
:
float
Get left edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::getLeft()| Type | Description |
|---|---|
| float |
getRight(
)
:
float
Get right edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::getRight()| Type | Description |
|---|---|
| float |
getText(
)
:
string
Return text to be displayed for the annotation or, if this type of annotation does not display text, an alternate description of the annotation’s contents in human-readable form.
Inherited from: \Zend_Pdf_Annotation::getText()| Type | Description |
|---|---|
| string |
getTop(
)
:
float
Get top edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::getTop()| Type | Description |
|---|---|
| float |
setBottom(
float $bottom
)
:
\Zend_Pdf_Annotation
Set bottom edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::setBottom()setLeft(
float $left
)
:
\Zend_Pdf_Annotation
Set left edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::setLeft()setRight(
float $right
)
:
\Zend_Pdf_Annotation
Set right edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::setRight()setText(
string $text
)
:
\Zend_Pdf_Annotation
Set text to be displayed for the annotation or, if this type of annotation does not display text, an alternate description of the annotation’s contents in human-readable form.
Inherited from: \Zend_Pdf_Annotation::setText()setTop(
float $top
)
:
\Zend_Pdf_Annotation
Set top edge of the annotation rectangle.
Inherited from: \Zend_Pdf_Annotation::setTop()


{% extends "layout.html" %} {% block subcontent %}
This is me trying to solve the United Remote Coding Challenge.
The functionnalities implemented so far are :


{{ partial "meta.html" . }}
{{ .Title }}
Error
Woops. Looks like this page doesn't exist.
Go to homepage


Facebook Messenger for Windows now has a dark mode – here's how to enable it
by Mark Wycislik-WilsonFacebook Messenger for Windows now has a dark mode – here's how to enable it
Turn your messages dark on the desktop
(Image credit: Facebook Messenger)
The dark mode phenomenon continues to spread its inky fingers through websites and apps on all platforms – and Facebook is not immune. The Messenger component of social network might be most readily associated with the iOS and Android apps as well as the Facebook website, and it's easy to forget that there's actually a Windows 10 Facebook Messenger app available that allows for easy messaging on the desktop.
More than this, Facebook is also running a beta program for the Messenger desktop app, trying out new features and options on those eager to use the very latest version of the tool. For anyone with the beta installed, there's a nice treat available now: dark mode.
- How to activate dark mode in WhatsApp on the web
- How to enable dark mode for Google Chrome
- How to enable dark mode for Facebook
In fact, the Facebook Messenger beta app includes a number of theming options. You'll find the new options by clicking the 'Settings' button (the gear icon) to the upper left of the app window, and then heading to the 'Appearance' section. Click the drop-down menu and you'll find four options to choose from.
Select Light mode, and nothing will change – Messenger will retain its white background. But if you want to dial down the brightness, you have two choices. Select Dark if you really enjoy darker tones, or opt for Gray for something dark but subtle.
There's also the 'Mirror system preferences' option, which makes Messenger respect the app theme settings you've set in Windows.
Paint it black
Dark mode isn't the only option you'll find in the beta version of the app. It also allows for easy file-sharing thanks to the fact you can simply drag and drop files onto the Messenger window. Other options include the ability to delete sent messages, and to hide chats.
You can download the latest beta version of Facebook Messenger for Windows 10 from the Microsoft Store.


A framework for the integration of Logic Programming in external systems for generic applications, conceived in order to help developers at designing and implementing complex reasoning tasks by means of logic-based solvers on different platforms.
We currently provide implementations of EmbASP in three different programming languages: Java, Python, and C#. EmbASP also contains ready-made libraries for embedding several logic-based solvers:
Note that DLV, DLV2 and Solver.Planning.Domains can also be used on Android.
The framework has been designed to be easily extensible and adaptable to different solvers and platforms. Solvers can be invoked in different ways: via REST API as for Solver.Planning.Domains, native binary execution as for most of the "desktop solvers", library invocation as in the Android solvers, or any other way that can be implemented using the OOP paradigm.
The general architecture of EmbASP is depicted in the following figure: it is intended as an abstract framework to be implemented in some object-oriented programming language.
In addition, this architecture can be specialized for different platforms, logic languages and solvers.
The figure also reports general dependencies among the main modules.
The framework architecture has been designed by means of four modules:
Base
,
Platforms
,
Languages
, and
Specialization
. In the following, we denote with "solver" a logic-based system that is meant to be
used by external application with the help of EmbASP.
The
Base
module defines the basic components of the Framework.
The
Handler
component mediates the communication between the Framework and the user that can provide
it with the input program(s) via the component
InputProgram
, along with any desired solver's option(s) via the component
OptionDescriptor
. A
Service
component is meant for managing the chosen solver executions.
Two different execution modes can be made available: synchronous or asynchronous. While in the synchronous mode any call
to the execution of the solver is
blocking (i.e., the caller waits until the reasoning task is completed), in asynchronous
mode the call is non-blocking: a
Callback
component notifies the caller once the reasoning task is completed. The result of the
execution (i.e., the output of the logic system) is handled by the
Output
component, in both modes.
The
Platforms
module is meant for containing what is platform-dependent; in particular, the
Handler
and
Service
components from the
Base
module that should be adapted according to the platform at hand, since they take care
of practically launching solvers.
The
DesktopHandler
manages the
DesktopService
for the execution of the solver on a Desktop platform, and, in a similay way, the
AndroidHandler
manages the
AndroidService
on an Android platform.
The
Languages
module defines specific facilities for each supported logic language.
The generic
Mapper
component is conceived as an utility for managing input and output via objects, if the
programming language at hand permits it.
The sub-module ASP comprises components such as
ASPInputProgram
that adapts
InputProgram
to the ASP case, while
AnswerSets
, composed of a set of
AnswerSet
, represents the
Output
for ASP. Moreover the
ASPMapper
allow the management of ASP input facts and answer sets via objects.
The Datalog sub-module resembles the ASP sub-module very closely:
DatalogInputProgram
is the Datalog equivalent of ASPInputProgram
,
MinimalModels
is the equivalent of AnswerSets
,
MinimalModel
is the equivalent of AnswerSet
,
and DatalogMapper
is the equivalent of ASPMapper
.
Similarly, the sub-module PDDL includes
PDDLInputProgram
,
Action
,
Plan
and
PDDLMapper
.
The
Specialization
module defines what is system-dependent; in particular, the
Service
,
Output
and
OptionDescriptor
components from the
Base
module should be adapted in order to effectively interact with the solver at hand.
In particular, this module contains specific extensions for the different solvers of the DesktopService
(
DLVDesktopService
, DLV2DesktopService
, IDLVDesktopService
, DLVHEXDesktopService
,
ClingoDesktopService
and SPDDesktopService
) and the AndroidService
(
DLVAndroidService
, DLV2AndroidService
and ). There are also the extensions of the
AnswerSets
for ASP language (DLVAnswerSets
, DLV2AnswerSets
, DLVHEXAnswerSets
and
ClingoAnswerSets
) of the Plan
for PDDL language (SPDPlan
), and of the MinimalModels
for the Datalog language (IDLVMinimalModels
).
For a complete documentation regarding EmbASP, visit our page on readthedocs.org.
It provides a detailed description about EmbASP implementations and some examples of EmbASP usage.
The framework is released under The MIT License (MIT)
The framework library for DLV on Android embeds the DLV system itself, which is free for academic and non-commercial educational use, as well as for use by non-profit organizations. For further information about DLV, please refer to the DLVSystem Ltd. home page.
DLVfit is a health and fitness app that monitors the user activity during the day and suggests some workout plans that depend on her age, weight, gender and goals. The app periodically stores some information about the user activities (running, walking, etc.) and infers the current amount of calories burned so far. When the user asks for a workout plan, DLVfit proposes a set of exercises that would allow the user to reach her daily goal, taking into account also to her preferences. The suggested workout plans are computed in the background by DLV via EmbASP.
The ASP program used within DLVfit can be found in the repository. Basically, the program guesses for possible fitness exercises to do in order to burn the remaing calories. Each answer set represent a possible workout plan, in which is ensured that the user's requirements about the calories to burn and the time to spend in the workout are respected. Moreover, also user's preferences are taken into account by means of weak constraints.
You can download the latest version of DLVfit here.
The app should work on most devices equipped with Android 4.x/5.x.
The list of compatible devices include (but it is not limited to):
GuessAndCheckers is a native mobile application that works as an helper for users that play "live" games of the (Italian) checkers (i.e., by means of physical board and pieces). The app, that runs on Android, can help a player at any time: by means of the device camera a picture of the board is taken, and the information about the current status of the game is properly inferred thanks to OpenCV, an open source computer vision and machine learning software; an ASP-based artificial intelligence module then suggests the move.
Thanks to EmbASP and the use of ASP,
GuessAndCheckers features a fully-declarative approach that made easy to develop
and improve several different strategies, also experimenting with many combinations thereof.
The source code of this application along with the Android Application Package (APK)
are available online.
You can download the latest version of GuessAndCheckers here.
DLVEdu is an educational Android App for children, that integrates well-established mobile technologies, such as voice or drawn text recognition, with the modeling capabilities of ASP. In particular, it is able to guide the child throughout the learning tasks, by proposing a series of educational games, and developing a personalized educational path. The games are divided into four macro-areas: Logic, Numeric-Mathematical, Memory, and Verbal Language. The usage of ASP allows the application to adapt to the game experiences fulfilled by the user, her formative gap, and the obtained improvements.
The application continuously profiles the user by recording mistakes and successes, and dynamically builds and updates a customized educational path along the different games. The application features a "Parent Area", that allows parents to monitor child's achievements and to express some preferences, such as explicit filters of some games or educational areas.
Connect4 is an application that allows a user to play the popular Connect Four game (also
known as Four-in-a-Row) against an ASP-based artificial player.
The Connect Four game is played by two opponents on a vertical 7*6 rectangular board.
At each turn, the players fill the board by dropping 1 disk into one of the column so
that it falls from the top to the lowest unoccupied position in the column. The winner
is the first player who gets four of her disks in a line, connected either horizontally,
vertically, or diagonally.
Different AIs have been implemented, ranging from the most powerful one implementing advanced techniques for the perfect play to the simplest one relying on some classical heuristic strategies. By using EmbASP, two different versions of the same app have been built: one for Android, making use of DLV, and one for Java-enabled desktop platforms, making use of clingo.
LoIDE
is a web-based IDE for Logic Programming.
An extensive documentation can be found
here.
A live beta version can be found online at
https://www.mat.unical.it/calimeri/projects/loide
This online version uses the
ASPServerExecutor to run the ASP solvers (using the EmbASP Framework).
Pac-Man Unity-EmbASP is a version of the Pac-Man game made using Unity as Game Engine and EmbASP as AI framework


--- layout: base ---
Blockchains were built to be censorship-resistant platforms. However, when looking at the state of the blockchain ecosystem today, it’s clear that blockchains are not as censorship resistant as they may first look, due to the ability for block proposers (both PoW miners and PoS validators) to censor transactions.
Furthermore, these block producers are able to frontrun or even “steal” my extraction for their own profit, leading to a problem known as Miner Extractable Value (or MEV for short). We are building a solution for this problem using a technique called Threshold Decryption, as a plugin to the Tendermint Core BFT consensus engine. With this plugin, users are able to submit encrypted transactions to the blockchain, which are only decrypted and executed after being commited to a block by a quorum of 2/3 validators.
By creating mempool level privacy, we will be able to solve the censorship and frontrunning problems that have long plagued blockchain systems.
As one of the largest validators on many Cosmos SDK-based stacks, the security, functionality, and future of the Cosmos SDK stack is extremely important to us. Having been part of the core development team of the stack for many years, we remain active contributors to the open source Cosmos SDK and Tendermint Core projects.
As one of the most active governance participants on the Cosmos Hub, we make many governance proposals for feature requests to improve the Cosmos Hub and Cosmos ecosystem. However, along with making proposals, we spec and implement our proposals, and then collaborate with other teams to include these new features into the Cosmos SDK and be activated on the Cosmos Hub.
Straightedge is a Cosmos SDK-based chain that supports the CosmWasm smart contracting language. It was conceived of by a group of Edgeware community members who were unhappy about certain practices in the initial distribution of the Edgeware token,
which are laid out here:
https://medium.com/straightedge/straightedge-distribution-faq-9298b8909932
Sikka helped coordinate the launch of the Straightedge chain by writing much of the initial codebase, the claim STR wallet (straighted.ge/claim), and organized the genesis validators. Now that the chain is launched, Sikka remains an active community member and validator.


Accounting Made for You, the Non-Accountant
Join 5 million people using FreshBooks to painlessly send invoices, track time and capture expenses. Watch the TV ad to see why.
No credit card required. No Contracts. Cancel anytime.
Join 5 million people using FreshBooks to painlessly send invoices, track time and capture expenses. Watch the TV ad to see why.
No credit card required. No Contracts. Cancel anytime.


mixRasch: Mixture Rasch Models with JMLE
Estimates Rasch models and mixture Rasch models, including the dichotomous Rasch model, the rating scale model, and the partial credit model.
| Version: |
1.1 |
| Published: |
2014-03-06 |
| Author: |
John T. Willse |
| Maintainer: |
John T. Willse <willse at uncg.edu> |
| License: |
GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: |
no |
| In views: |
Cluster, Psychometrics |
| CRAN checks: |
mixRasch results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=mixRasch
to link to this page.


Hello! My name is Regina and I have a Bachelor's degree in Biochemistry and recently completed a second degree in Computer Science at the University of British Columbia. People love asking me why did I make such a big career change. During my Biochemistry degree, I had the opportunity to work in a Bioinformatics lab and that was what sparked my interest to learn more about Computer Science.
Did I dislike Biochemistry? No! My undergraduate work was even part of a paper published in a scientific journal (link here if you're interested).
I like that in computer science, I can still have my problem solving urges met but in a much shorter time frame.
I've had the opportunity to work as a co-op at 2 different startup companies where I've gained the ability to learn new skills quickly. I had a lot of fun as a developer and do not regret my career change.
My passions outside of coding include drawing, baking, and playing video games.


PASSWD
Section: Linux Programmer's Manual (5)
Updated: 2014-02-11
Index
Return to Main Contents
NAME
passwd - password file
DESCRIPTION
The
/etc/passwd
file is a text file that describes user login accounts for the system.
It should have read permission allowed for all users (many utilities, like
ls(1)
use it to map user IDs to usernames), but write access only for the
superuser.
In the good old days there was no great problem with this general
read permission.
Everybody could read the encrypted passwords, but the
hardware was too slow to crack a well-chosen password, and moreover the
basic assumption used to be that of a friendly user-community.
These days many people run some version of the shadow password suite, where
/etc/passwd
has an 'x' character in the password field,
and the encrypted passwords are in
/etc/shadow,
which is readable by the superuser only.
If the encrypted password, whether in
/etc/passwd
or in
/etc/shadow,
is an empty string, login is allowed without even asking for a password.
Note that this functionality may be intentionally disabled in applications,
or configurable (for example using the "nullok" or "nonull" arguments to
pam_unix.so).
If the encrypted password in
/etc/passwd
is "*NP*" (without the quotes),
the shadow record should be obtained from an NIS+ server.
Regardless of whether shadow passwords are used, many system administrators
use an asterisk (*) in the encrypted password field to make sure
that this user can not authenticate him- or herself using a
password.
(But see NOTES below.)
If you create a new login, first put an asterisk (*) in the password field,
then use
passwd(1)
to set it.
Each line of the file describes a single user,
and contains seven colon-separated fields:
-
name:password:UID:GID:GECOS:directory:shell
The field are as follows:
- name
-
This is the user's login name.
It should not contain capital letters.
- password
-
This is either the encrypted user password,
an asterisk (*), or the letter 'x'.
(See
pwconv(8)
for an explanation of 'x'.)
- UID
-
The privileged
root
login account (superuser) has the user ID 0.
- GID
-
This is the numeric primary group ID for this user.
(Additional groups for the user are defined in the system group file; see
group(5)).
- GECOS
-
This field (sometimes called the "comment field")
is optional and used only for informational purposes.
Usually, it contains the full username.
Some programs (for example,
finger(1))
display information from this field.
-
GECOS stands for "General Electric Comprehensive Operating System",
which was renamed to GCOS when
GE's large systems division was sold to Honeywell.
Dennis Ritchie has reported: "Sometimes we sent printer output or
batch jobs to the GCOS machine.
The gcos field in the password file was a place to stash the
information for the $IDENTcard.
Not elegant."
- directory
-
This is the user's home directory:
the initial directory where the user is placed after logging in.
The value in this field is used to set the
HOME
environment variable.
- shell
-
This is the program to run at login (if empty, use
/bin/sh).
If set to a nonexistent executable, the user will be unable to login
through
login(1).
The value in this field is used to set the
SHELL
environment variable.
FILES
/etc/passwd
NOTES
If you want to create user groups, there must be an entry in
/etc/group,
or no group will exist.
If the encrypted password is set to an asterisk (*), the user will be unable
to login using
login(1),
but may still login using
rlogin(1),
run existing processes and initiate new ones through
rsh(1),
cron(8),
at(1),
or mail filters, etc.
Trying to lock an account by simply changing the
shell field yields the same result and additionally allows the use of
su(1).
SEE ALSO
login(1),
passwd(1),
su(1),
crypt(3),
getpwent(3),
getpwnam(3),
group(5),
shadow(5)
Index
- NAME
-
- DESCRIPTION
-
- FILES
-
- NOTES
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:55:20 GMT, September 18, 2014


Key Features
There are a number of special features that I
believe together make this book a unique approach to covering
the subject of data structures and algorithms:
- Consistent format for every
chapter
-
Every chapter (excluding those in the first
part of the book) follows a consistent format. This format
allows most of the book to be read as a textbook or a
reference, whichever is needed at the moment.
- Clearly identified topics and
applications
-
Each chapter (except Chapter
1) begins with a brief introduction, followed by a list
of clearly identified topics and their relevance to real
applications.
- Analyses of every operation,
algorithm, and example
-
An analysis is provided for every operation
of abstract datatypes, every algorithm in the algorithms
chapters, and every example throughout the book. Each
analysis uses the techniques presented in Chapter
4.
- Real examples, not just
trivial exercises
-
All examples are from real applications,
not just trivial exercises. Examples like these are exciting
and teach more than just the topic being demonstrated.
- Real implementations using
real code
-
All implementations are written in C, not
pseudocode. The benefit of this is that when implementing
many data structures and algorithms, there are considerable
details pseudocode does not address.
- Questions and answers for
further thought
-
At the end of each chapter (except Chapter
1), there is a series of questions along with their
answers. These emphasize important ideas from the chapter
and touch on additional topics.
- Lists of related topics for
further exploration
-
At the end of each chapter (except Chapter
1), there is a list of related topics for further
exploration. Each topic is presented with a brief
description.
- Numerous cross references and
call-outs
-
Cross references and call-outs mark topics
mentioned in one place that are introduced elsewhere. Thus,
it is easy to locate additional information.
- Insightful organization and
application of topics
-
Many of the data structures or algorithms
in one chapter use data structures and algorithms presented
elsewhere in the book. Thus, they serve as examples of how
to use other data structures and algorithms themselves. All
dependencies are carefully marked with a cross reference or
call-out.
- Coverage of fundamental
topics, plus more
-
This book covers the fundamental data
structures and algorithms of computer science. It also
covers several topics not normally addressed in books on the
subject. These include numerical methods, data compression
(in more detail), data encryption, and geometric
algorithms.
|


In remote sensing, designing a field campaign to collect ground-truth data can be a challenging task. We need to collect representative samples while accounting for issues such as budget constraints and limited accessibility created by e.g. poor infrastructure. As suggested by Olofsson et al. (2014) <doi:10.1016/j.rse.2014.02.015>, this demands the establishment of best-practices to collect ground-truth data that avoid the waste of time and funds. 'fieldRS' addresses this issue by helping scientists and practitioners design field campaigns through the identification of priority sampling sites, the extraction of potential sampling plots and the conversion of plots into consistent training and validation samples that can be used in e.g. land cover classification.
| Version: | 0.2.1 |
| Imports: | raster, sp, caret, ggplot2, grDevices, spatialEco, rgeos, stringdist, concaveman |
| Suggests: | knitr, rmarkdown, kableExtra, imager, randomForest, rgdal, RStoolbox |
| Published: | 2018-12-11 |
| Author: | Ruben Remelgado [aut, cre] |
| Maintainer: | Ruben Remelgado <remelgado.ruben at gmail.com> |
| BugReports: | https://github.com/RRemelgado/fieldRS/issues/ |
| License: | GPL (≥ 3) |
| URL: | https://github.com/RRemelgado/fieldRS/ |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | fieldRS results |
| Reference manual: | fieldRS.pdf |
| Vignettes: |
fieldRS - Tools for remote sensing field work" |
| Package source: | fieldRS_0.2.1.tar.gz |
| Windows binaries: | r-devel: fieldRS_0.2.1.zip, r-release: fieldRS_0.2.1.zip, r-oldrel: fieldRS_0.2.1.zip |
| OS X binaries: | r-release: fieldRS_0.2.1.tgz, r-oldrel: fieldRS_0.2.1.tgz |
| Old sources: | fieldRS archive |
Please use the canonical form https://CRAN.R-project.org/package=fieldRS to link to this page.


This web app allows for the searching of Movies and finding out more information about them. Use the search box below to begin!


Table Of Contents
TUIO Input Provider¶
TUIO is the de facto standard network protocol for the transmission of touch and fiducial information between a server and a client. To learn more about TUIO (which is itself based on the OSC protocol), please refer to http://tuio.org – The specification should be of special interest.
Configure a TUIO provider in the config.ini¶
The TUIO provider can be configured in the configuration file in the
[input]
section:
[input]
# name = tuio,<ip>:<port>
multitouchtable = tuio,<IP_ADDRESS>:3333
Configure a TUIO provider in the App¶
You must add the provider before your application is run, like this:
from kivy.app import App
from kivy.config import Config
class TestApp(App):
def build(self):
Config.set('input', 'multitouchscreen1', 'tuio,<IP_ADDRESS>:3333')
# You can also add a second TUIO listener
# Config.set('input', 'source2', 'tuio,<IP_ADDRESS>:3334')
# Then do the usual things
# ...
return
-
class
kivy.input.providers.tuio.
TuioMotionEventProvider
(device, args)[ソース]¶ ベースクラス:
kivy.input.provider.MotionEventProvider
The TUIO provider listens to a socket and handles some of the incoming OSC messages:
- /tuio/2Dcur
- /tuio/2Dobj
You can easily extend the provider to handle new TUIO paths like so:
# Create a class to handle the new TUIO type/path # Replace NEWPATH with the pathname you want to handle class TuioNEWPATHMotionEvent(MotionEvent): def __init__(self, id, args): super(TuioNEWPATHMotionEvent, self).__init__(id, args) def depack(self, args): # In this method, implement 'unpacking' for the received # arguments. you basically translate from TUIO args to Kivy # MotionEvent variables. If all you receive are x and y # values, you can do it like this: if len(args) == 2: self.sx, self.sy = args self.profile = ('pos', ) self.sy = 1 - self.sy super(TuioNEWPATHMotionEvent, self).depack(args) # Register it with the TUIO MotionEvent provider. # You obviously need to replace the PATH placeholders appropriately. TuioMotionEventProvider.register('/tuio/PATH', TuioNEWPATHMotionEvent)
注釈
The class name is of no technical importance. Your class will be associated with the path that you pass to the
register()
function. To keep things simple, you should name your class after the path that it handles, though.


About Us
Booking
Check Out
Login
Register
Our Restaurents
Our Resorts
Home
Restaurants and Resorts
Restaurants
Resorts
Designed for natural living.
Interior


Lower back pain
Osteopathic treatment can prevent or relieve this common problem.
Be careful lifting the baby especially out of the cot, pram and off the floor. When lifting, bend your knees and try not to twist. Hold in your deep abdominal muscles. Whilst lifting the baby in and out of the car put one foot up on the car.
Try to use a changing table or a chest of drawers for changing clothes/nappies. Use a bath seat for the baby.
Start doing pelvic floor exercises immediately after the baby is born. Walk daily with the baby in the pram (do not lean into the pram), walk tall and hold in your abdominal muscles and your pelvic floor. If you have a weak pelvic floor it is not advisable to start any more aggressive abdominal exercises than a tummy tuck.


{% extends '_base.html' %} {% load static %} {% block title %}Home page{% endblock title %} {% block content %}
Would you like to store a location you like?
Click here to add one!
Or
See the locations already added!