i can do...
didn't say I couldn't do it, I said I wouldn't do it
SHossain06-Oct-19 05:32 PM
but no more
ComputerGenie 👴👴👴06-Oct-19 05:32 PM
yeah, I value my coins and the effort it took to get them
4
Mylo07-Oct-19 06:01 AM
Ok thanks @mrlynch - don’t know if you are existing or running for next election notary.
Alright07-Oct-19 06:24 AM
back at it guys, let me know if anything needs doing
CHMEX07-Oct-19 07:10 AM
we should change keys around end of october for the one that want.
And1_89 wants new ( his own keys)
blackjok3r07-Oct-19 07:26 AM
Yes there are also a few ppl that want to join, there is a hard fork upcoming when we can do that, didn't tie in with the 2 month rotation but it's just worked out that way.(edited)
jorian07-Oct-19 08:23 AM
nice to see you back! made any nice LABS plans you'd like to share while you were travelling? (edited)
phm8707-Oct-19 08:57 AM
It is good to see both of you came back. I hope you had pleasant holidays
mrlynch07-Oct-19 06:52 PM
@Mylo i'm planning on running next election, but i think it would be best to partner up with someone.. trying to do too many things at once rarely goes well
1
ComputerGenie 👴👴👴07-Oct-19 06:59 PM
I'll sell you 1/2 of my node for 987k KMD
CHMEX08-Oct-19 12:06 PM
looks like there is a marketmaker on the LABS/BTC pair on Graviex
ComputerGenie 👴👴👴08-Oct-19 12:08 PM
their blue on black captcha sux balls
CHMEX08-Oct-19 12:09 PM
the irony is in the filename
ComputerGenie 👴👴👴08-Oct-19 12:11 PM
lol
looks in vain for the "marketmaker"
does find someone wanting to holders at $0.00013 per, though(edited)
Oszy09-Oct-19 08:24 AM
it's an arb bot between btc/kmd pair
CrisF09-Oct-19 09:15 AM
Hi, I was looking into the private mining, to prevent the possibility of no-fee transactions. Am I correct in thinking that since a Zero-Knowledge Vote would require voters to run in native I wouldn't be able to keep the chain params secret?
blackjok3r10-Oct-19 02:31 PM
I can make it so that only 1 or a few pubkeys can mine, the code already exists for this in the streamer.
CrisF10-Oct-19 08:42 PM
That's great!
With that it should be enough to do a Zero-Knowledge Vote.(edited)
smk762 - dracocanis ominator11-Oct-19 06:23 AM
I've added a table to track LABS global SegID staking at https://oracle.earth/labs_segid/ to help stakers with choosing a spread for staking LABS(edited)
2
CrisF11-Oct-19 07:20 AM
Thanks, that's awesome!
Oszy11-Oct-19 09:51 AM
nice job @smk762 - dracocanis ominator would it be informative to add getlastsegidstakes 1440 to see how each performed on avg?(edited)
0,1, and 15 seems to be the good ones in the last 24hrs
smk762 - dracocanis ominator11-Oct-19 11:44 AM
updated.
1
1
CHMEX11-Oct-19 11:50 AM
LABS Notarizations over the last 7 Days ( 10'000) blocks
Looks very well distributed
ComputerGenie 👴👴👴11-Oct-19 11:52 AM
thinks @Alright cheated
2
CHMEX11-Oct-19 11:54 AM
here the last 2 weeks I had some downtime which is noticable looks like the top 10 have been online all the time
ComputerGenie 👴👴👴11-Oct-19 11:55 AM
looks like the top 10 have been online all the time
I know # 13 has (edited)
CHMEX11-Oct-19 11:57 AM
ah good to know so there is about 8.5% difference to the 1st one
ComputerGenie 👴👴👴11-Oct-19 11:58 AM
mine was down once (for about 2 hrs) since alright and joker first started their vacation
probably need to redo it again today, RAM usage is getting up there again
CHMEX11-Oct-19 12:01 PM
300MB on iguana
( after 10 days )
ComputerGenie 👴👴👴11-Oct-19 12:03 PM
KMD is the hog for mine
CHMEX11-Oct-19 12:04 PM
yep 3GB
ComputerGenie 👴👴👴11-Oct-19 12:04 PM
and I assume for most, too
1
kevinkatovic11-Oct-19 04:23 PM
Can you guys remove the big machine http://mininglabs.rocks/workers/RQttoKcBABNuYPjNNT56xmLjkRMGLQVxuF its reduced all our payouts by about 30% because kmdlabs isn't balanced correctly. And if I mine as well with a Z11 there will be no benifit to anyone. All of us have about 50K and that worked out nicely but 130-180 miner is only benefiting him/her now. Now we might as well mine hush or pirate because of that. I don't think thats fair can you increase the block reward 30% as much to make up for the difference? Its easy math for me the hashrate is increasing but you dont reward and more blocks with kmd labs to comepensate and I doubt bitcoin works the same way.
ComputerGenie 👴👴👴11-Oct-19 04:27 PM
adds 200k just to piss off @kevinkatovic
@kevinkatovic I'll literally die before I boot a miner out of the pool for no other reason than you don't like the amount of hashrate they paid to own
2
kevinkatovic11-Oct-19 04:40 PM
Yeah Im pretty sure this was litterally done to remove me since Im the only one selling on graviex
To make it unprofitable
Stop joking around if we all sold today there would be no market Im the only one selling
Bernz - Selling LABS11-Oct-19 04:41 PM
youre the one whos sold me 80% of my holdings
jorian11-Oct-19 04:41 PM
not sure if trolling
Bernz - Selling LABS11-Oct-19 04:41 PM
thanks bro
kevinkatovic11-Oct-19 04:41 PM
Im sure seriously if we sell 4000 labs every day the markets gone in a week
jorian11-Oct-19 04:42 PM
then so be it. long live the free market!
1
kevinkatovic11-Oct-19 04:42 PM
Well it doesnt make sense to me
jorian11-Oct-19 04:42 PM
move to russia?
kevinkatovic11-Oct-19 04:42 PM
ha ha
maybe I should
Yup got the good cheap housing cost!
jorian11-Oct-19 04:43 PM
and plenty of space
kevinkatovic11-Oct-19 04:43 PM
Its awesome but now people are monitoring my grid usage which sucks
another 40 minutes till my bitcoin is released
could pay everyone for uhhhh..... 4 months at a high rate?
but im selling not buying
Can't we either pump the price up 30% or increase the block reward 30% more often?
I want the old deal back...
Now its 30% less
Notorys? Maybe they have a better deal?
PHBA206111-Oct-19 04:54 PM
what deal ? the more miners the better for the network isn't it ?
kevinkatovic11-Oct-19 04:55 PM
not in this case apparently the market is fickel its a great deal for the Z11 but not the rest of us sadly now I went from making 1200 labs a day to about 700 or so and we are all pretty much the same I thought
ComputerGenie 👴👴👴11-Oct-19 04:56 PM
Stop joking around
That's not a joke and the only thing stopping me from doubling the pool's hashrate just out of spite is that I don't feel like getting dressed and turning my miners on
CHMEX11-Oct-19 04:56 PM
How many are you selling Kevin?
kevinkatovic11-Oct-19 04:57 PM
Im selling 3 z9 minis
ComputerGenie 👴👴👴11-Oct-19 04:57 PM
You don't get the network hashrate you want just because you want it, otherwise I'd make 800 BTC per day with 1 S9
Bitmain AntMiner Z9 minis Equihash Miner FREE SHIPPING ZEC , Horizen ZEN ZCL HUSH. Condition is Used. Shipped with Canada Post Expedited Parcel or pick up in person prefer bitcoin as payment. I have...
CHMEX11-Oct-19 04:58 PM
ah you are selling hardware Sorry I thought coins
ComputerGenie 👴👴👴11-Oct-19 04:58 PM
I went from making 1200 labs a day to about 700 or so
Would you like me to make it 70?
kevinkatovic11-Oct-19 04:59 PM
lol well I will have bicoin in about 20 minutes I will sell my labs but that rig use to make 1200 labs a day approx until the z11 joined
Now its about 700
ComputerGenie 👴👴👴11-Oct-19 04:59 PM
yes? and?
that's how mining works
you get what you get until the network grows
kevinkatovic11-Oct-19 05:01 PM
Well Im waiting for my strongU stu u6 I'll need hosting for something like that but like most fantasy it appears I tried to buy it from criminals
ComputerGenie 👴👴👴11-Oct-19 05:02 PM
omfg not this story again
jorian11-Oct-19 05:02 PM
1
1
CHMEX11-Oct-19 05:02 PM
so are you selling LABS or not?
kevinkatovic11-Oct-19 05:02 PM
Should of got the popcorn
CHMEX11-Oct-19 05:02 PM
I'm confused
kevinkatovic11-Oct-19 05:02 PM
I will in 20 minutes hang on I will make my token deposit
Bernz - Selling LABS11-Oct-19 05:03 PM
how many and how much per
ComputerGenie 👴👴👴11-Oct-19 05:03 PM
I'm confused
so is @kevinkatovic
2
CHMEX11-Oct-19 05:03 PM
why do you need BTC to sell LABS?
100'000 at graviex price
Brenz ^
PHBA206111-Oct-19 05:03 PM
how long have you been in this mining business kevin ?
you can't just ask other miners to leave because you earn less ...
CHMEX11-Oct-19 05:04 PM
he can... doesnt mean they leave
ComputerGenie 👴👴👴11-Oct-19 05:04 PM
if he posts his begging site because you asked that, I will plug in my miners


SISTER MY SISTER A film review by Carrie A. Gorringe Copyright 1996 Carrie A. Gorringe London Calling Internet
Directed by Nancy Meckler. Written by Nancy Kesselman, from her play, "My Sister In This House". Starring Joely Richardson, Jodhi May, Julie Walters, Sophie Thursfield.
The infamous Le Mans case of 1933, in which the Papin sisters, employed as maids, hacked their employers to death, has been fertile ground for writers most notably Jean Genet and his 1948 play "The Maids". No doubt the concept of murder as a means to personal transcendence appealed to Genet (at least in the theoretical sense), himself not immune to the lure of crime (he wrote his first novel, "Our Lady of the Flowers" in 1942 while serving a long prison sentence). Born illegitimate in 1910, abandoned when young, in reform school by the age of ten, in and out of prison until 1948, surviving when outside by hustling and theft, Genet understood perfectly both the rage of being an outsider and the compulsion that such an outsider has to belong to the society that rejects him or her. Fortunately, he had sufficient talent and, with it, was able to oblige the literary world to accept him on his own terms; granted, he was helped along the way by the approximately 150 years of Romantic literary theory that proceeded him and which permitted him, in a paraphrase of Susan Sontag's succinct analysis of the Romantic mindset, to enter the abyss of human existence and then to report back to the greater world concerning his findings. But Genet's characters were those who could not file reports, their voices having been stymied by socio-economic deprivation. They act out of desperation and in extreme fashion, having no other means of personal liberation, even though their liberation is temporary and will probably lead to self-destruction.
Nancy Meckler's directorial debut, "Sister My Sister", inevitably draws from this literary source but there is a historical dimension added to the mix (courtesy of screenwriter Kesselman, who studied the original case extensively). Christine (Richardson) has been a loyal and devoted servant to Madame Danzard (Walters) and her frumpy daughter Isabelle (Thursfield). Danzard is imperious to the point of tyranny; she not only inspects the results of her maid's dusting with the proverbial white gloves, but she crushes any hint of autonomy emanating from Isabelle as if it were an insect crawling out from underneath a lettuce leaf on her salad plate. It is, quite obviously, the type of repressive atmosphere that would break the will of the most tempered of spirits, and, as the narrative informs us, Christine and her sister Lea (May) were abandoned in a convent while very young by an indifferent mother, and poverty leaves Christine little choice but to accept the caprices of Madame Danzard. Nevertheless, by the time that Christine decides to bring her younger sister to the Danzard household to work as a maid, Christine and Madame Danzard have settled into a social detente which is somewhat unsettled around the edges (Christine's resentment of her inferior position vis-a-vis this domestic tyrant is already apparent, if of necessity muted), but functional. The fragility of this arrangement is made apparent from the moment that Lea enters the household. Lea, her spirit not as inhibited as that of her sister, chafes under the rigidity of Madame Danzard's rules. Soon, under the force of Lea's personality, Christine is soon set on the course of rebellion leading to murder, a situation exacerbated by the sisters' increasingly incestuous closeness.
"Sister My Sister" contains exquisitely measured performances from all of the principals at least for the first forty- five minutes. As portrayed by Walters, Madame Danzard has all the warmth of liquid nitrogen, and has the same upon those who are unfortunate enough to have to endure her presence, especially in the case of her daughter. Thursfield allows the character of Isabelle to subtly seethe with resentment not only over the physical attractiveness of the maids who serve her but also over the glaring irony that despite her mother's brutal treatment of them, they have more freedom than she, with all of her financial privilege, can ever hope for. Isabelle's spirit is broken, its shards capable only of rising up on occasion to sting their owner in her spite. Indeed, all of the characters in this bourgeois prison seem as if they are about to splinter into pieces at the first forbidden word spoken aloud. During the first half of this film, Richardson gives Christine a sense of self-control that is at once so palpable and so fragile that her eyes can convey a lifetime's worth of indescribable pain in one glance; her prickliness is such that it appears as if she might head into the stratosphere within two seconds if someone so much as brushed against her inadvertently. May perfectly captures the facade of breezy insouciance and what lies underneath it that is necessary for Lea to become the catalyst for the tragedy about to unfold. As the outsider who destroys the perverse equilibrium of the Danzard household, and who must do so because she cannot conform to its demands, it is Lea who is the most deeply troubled of the four women. She is willful and transcendent; not wishing to serve others, she wants others to serve her. And yet, given her socio- economic position, she can act neither openly nor, it might be argued, consciously. Therefore, Lea's only hope is to reestablish the interdependent relationship that she shared with her sister at the convent. Only after that has happened can events proceed to their illogical conclusion.
It would seem from the above that "Sister My Sister" has all of the necessary elements for a successful film. However, the central hinge of the script -- that of the incestuous relationship developing between the two sisters -- becomes less covert and subtle and far too explicit and clumsy. The explicitness belongs not so much to the realm of pornography than to that of overblown melodrama ripe enough to verge upon the rotten. The maids' frantic search for sensuality within the family sphere bears no resemblance to the world of the titillatingly erotic, but it does belong to the realm of the desperate. By virtue of an emotionally and financially- deprived upbringing, Christine and Lea are so lacking in both opportunity and imagination that their lesbian relationship can not be seen as a liberating force for either of the participants; indeed, their obsession with each other suggests the behaviour of two survivors of a shipwreck who know that their drowning is imminent. Yet, for all of the deeply evocative portrayals of these women by Richardson and May, and the sympathy engendered thereby, the affair itself assumes an almost risible quality to the extent that it would have severely undermined the narrative trajectory had there not been a flashback at the beginning of the film to remind the viewer that these increasingly indiscreet writhings on screen will have deadly intent by the final reel. Only that thin thread prevents the film from going under by the force of its own stupidity. The switch in acting style from restraint to hyperbole doesn't help matters very much, since it undermines the careful pacing that Meckler established from the beginning, not to mention any interest in how the film will end because the denouement has been given away. As the film's pace becomes almost dizzying in its intensity, the suspense is killed right along with Madame Danzard and her daughter, and the maids' relationship merely stands there looking overblown.
In sum, Meckler should have realised how thin the line is between the suspenseful and the asinine when one is dealing with extremes of emotion. Yet, "Sister My Sister" is worth seeing, provided that one can stomach the film's alternations between the realms of overwrought sexuality and violence.
--
Carrie Gorringe<EMAIL_ADDRESS>FILM REVIEWS http://www.demon.co.uk/london-calling/filmmus.html
London Calling Internet Indepedent Entertainment Magazine
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Welcome to Mnemonica!
This project is born out of three of my greatest passions: web development, mentalism, and card magic. Though admittedly I am not as active in the magical arts anymore, I am quite active in writing applications for the web. On my continuing quest to expand my expertise on this field, I thought it would be cool to writing something that could be useful to the magic community. This is the fruit of my efforts.
Thanks for dropping by! I hope you found this little web app useful for your mem-deck learning.
This app is not perfect, nor complete -- and I plan to improve this over time. Your feedback would be very handy in this regard.
So, if you have any ideas on how to improve Mnemonica, hit me up at {{ mailto }}.


Home
Wharf
Docker
{% if current_user.is_authenticated() %}
Profile
Logout
{% else %}
Login
{% endif %}
{% if current_user.is_authenticated() %}
Logged in as {{ current_user.username }}
{% else %}
Logged in as Anonymous
{% endif %}
Your running services:
Services
Images
URL
Service
Id
Owned By
Running since
Delete
{{ row }}


Menu
Home
About Us
Projects & Achievements
Events
Recruitments
Our Team
Contact Us
DYNAMICS
Events & Workshops
CODING
ROBOTICS
WORKSHOPS
PRESENTATIONS
HACKATHONS
Events
CODE@ARENA ##COVID19
August 1 2020
An Online Coding Contest ar college level for the enthusiatic CODERS. This contest focuses on the logic building of every coders.
Dynamic Hack
5-6 June 2021
First ever hackathon by Team Dynamics which invites all the branches and inter college to participate in it.
CODE@ARENA
Coming Soon
An Online Coding Contest at national level for the enthusiatic CODERS. This contest focuses on the logic building of every coders.
Registration
Coding Event
Keep In Touch
Robotics Event
Keep In Touch
Workshops
Keep in touch
Hackathons
Registrations Open


Toggle navigation
Mayer GmbH
Contact
Sign In
Sign Up
© 2018 » Mayer GmbH
Imprint | Disclaimer
Welcome
Today is ...
Thank you for contacting Mayer GmbH!
(Click here if not redirected automatically...)


A WALK IN THE CLOUDS A film review by James Berardinelli Copyright 1995 James Berardinelli
RATING (0 to 10): 6.6
United States, 1995 U.S. Availability: wide release 8/11/95 Running Length: 1:42 MPAA Classification: PG-13 (Sexual themes) Theatrical Aspect Ratio: 1.85:1
Cast: Keanu Reeves, Aitana Sanchez-Gijon, Giancarlo Giannini, Anthony Quinn, Angelica Aragon Director: Alfonso Arau Producers: Gil Netter, David Zucker, and Jerry Zucker Screenplay: Robert Mark Kamen, Mark Miller, and Harvey Weitzman, adapted from Alessandro Blasetti's 1942 Italian film, FOUR STEPS IN THE CLOUDS Cinematography: Emmanuel Lubezki Music: Maurice Jarre U.S. Distributor: 20th Century Fox
Of all the different kinds of movies, love stories are likely to provoke the widest variety of reaction, since personal preference is such a crucial element in evaluating these films. It's far easier to agree on what constitutes a solid drama or enjoyable comedy than an effective romance. Scenes which melt some hearts will churn the stomachs of others. A WALK IN THE CLOUDS, director Alfonso Arau's followup to LIKE WATER FOR CHOCOLATE, is such a picture. There are moments when this movie is absolutely magical, but the ending lays it on much too thick.
For more than an hour, A WALK IN THE CLOUDS is thoroughly enchanting. With spectacular visuals and a script laced with little romantic touches, the first seventy-five minutes weave a spell that will dissipate the cynicism of even the grumpiest viewer. But then the melodrama, which is initially light and innocuous, asserts its presence and draws the film into a ponderously silly climax. Even the most beautifully-realized love story can't camouflage this kind of flaw.
The story opens in 1945 San Francisco. Paul Sutton (Keanu Reeves) has just returned from the war, where he received a medal for courage under fire. He has a wife waiting for him -- a woman he barely knows, but whom he married on the eve of his departure to give him someone to write to and dream about. Raised in an orphanage, Paul doesn't know what it means to be part of a family, although he has fantasies. His reunion with his wife shatters those. The match which seemed so right when it happened turns out to be a horrible mistake.
Needing to clear his mind and re-think his future, Paul boards a train bound for Sacramento. There, he meets Victoria Aragon (Aitana Sanchez- Gijon), a young woman with a beautiful smile and a sad story. Pregnant as a result of an ill-advised dalliance with a college professor, Victoria is returning to her family's vineyard to help with the annual grape harvest. Once there, she will have to reveal her condition, and she is frightened that her father, Don Pedro (Giancarlo Giannini), a man whose beliefs are deeply rooted in tradition and "the old ways", will react violently to the prospect of an unwed daughter expecting a baby. Paul, ever the gentleman, proposes a solution: he will pretend to be her husband for one day, then abandon her. She agrees, but things go farther than either of the participants anticipated. Victoria and Paul fall in love, and suddenly his marital status becomes an albatross.
With this, his first big-budget, English language picture, Arau outlines a classic case of cultural and generational conflict. Victoria has a pedigree that goes back more than four-hundred years, while Paul has no family, no past, and, in Don Pedro's opinion, no future. Roots and blood-ties are critically important in A WALK IN THE CLOUDS. Arau goes out of his way to illustrate that community and a sense of belonging are at least as important to the story as falling in love. Somehow, however, a similar message came across more clearly in Sandra Bullock's WHILE YOU WERE SLEEPING.
Newcomer Aitana Sanchez-Gijon has a luminance that lights up the screen. Even paired with the rather remote and unresponsive Keanu Reeves, she makes the most of each scene. As for Reeves, he admittedly does a more credible job here than in most of his other work, but, for the most part, that's barely adequate. Screen veterans Giancarlo Giannini and Anthony Quinn both turn in virtuoso performances, the latter as the kind-hearted and helpful grandfather of the troubled Victoria; the former as her angry, inflexible father. Along with Sanchez-Gijon, they compensate for the weaknesses of the star with top billing.
As was true of LIKE WATER FOR CHOCOLATE, A WALK IN THE CLOUDS has an ethereal feel. Shots of the vineyard, enhanced by post-production visual effects, are breathtaking. Arau has molded a world of romance and fantasy. One scene in particular stands out as a reflection of all that's right about the movie: the women, including the "newly married" Victoria, dance around in a giant tub of newly-harvested grapes, crushing the fruit with their feet. It is sensual, erotic, and joyous.
The most disconcerting thing about A WALK IN THE CLOUDS' tendency towards overt melodrama is that almost all of it is totally unnecessary. Minor script changes could have eliminated huge chunks of this, leaving behind an uplifting love story. Even as it is, however, there's still something special about the motion picture. I just wish the final half- hour hadn't been such a bloated disappointment.
- James Berardinelli<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


class CircularBuffer
A circular buffer class. A CircularBuffer can only hold a fixed number of objects. The oldest item is removed to retain equiilibrium.
Public Class Methods
new(size:)
click to toggle source
initialize the object with a size
# File inodium.rb, line 21 def initialize(size)) @max_size = size @buffer = [] end
Public Instance Methods
<<(value)
click to toggle source
A shovel method used to add items to the CircularBuffer, note that if the buffer is full, the first item is removed. to make a space.
# File inodium.rb, line 27 def <<(value) if @buffer.size >= @max_size @buffer.shift @buffer << value if value[:count] > self.highest else @buffer << value unless @buffer.include?(value) end end
highest()
click to toggle source
returns the highest “count” - each item in the buffer has a path, and a count.
# File inodium.rb, line 42 def highest return 0 if @buffer.length == 0 @buffer.sort_by { |hsh| hsh[:count] }[-1][:count] end
report()
click to toggle source
Return the unformatted buffer
# File inodium.rb, line 48 def report @buffer end
size()
click to toggle source
Returns the size of the buffer/
# File inodium.rb, line 37 def size @buffer.size end


This website uses cookies in order to function correctly.
We do not use cookies for tracking and or advertisement purposes.
More info
Accept


QCAT - Quadratic Programming Control Allocation Toolbox Version 1.2.1 25-Aug-2004 Author: Ola Härkegård<EMAIL_ADDRESS>Download: http://www.control.isy.liu.se/~ola/qcat ------------------------------------------------------- Information. qcatdoc - Open QCAT documentation in browser. QP based control allocation sls_alloc - Active set, sequential least squares. wls_alloc - Active set, weighted least squares. wlsc_alloc - C implementation of wls_alloc. mls_alloc - Active set, minimal least squares. ip_alloc - Interior point method. cgi_alloc - Cascaded generalized inverses method. fxp_alloc - Fixed-point method. Direct allocation. dir_alloc - Direct control allocation. Dynamic control allocation. dca - Design dynamic control allocation filter. Simulation. qp_sim - Response of static QP allocator. dir_sim - Response of direct allocator. dyn_sim - Response of dynamic allocator. qcatlib - Simulink blocks for QP and dynamic allocation. Constrained allocation vs linear control. lq2ca - Extract allocator from LQ controller. ca2lq - Merge allocator with LQ controller. vview - View feasible virtual control set. vview_demo - Demo of vview. Other. iscoplanar - Test for coplanar controls. wpinv - Weighted pseudoinverse. Data files. admiredata - Admire test data. f18data - F-18 based test data.


{{ FIRST_NAME }} {{ LAST_NAME }}
{{ EXPECTED_JOB }}
{{ABOUT_ME}}
Experience
{% foreach(experiences) %}
[[ POSITION ]]
[[ TIME_LETTER ]]
@[[ COMPANY_NAME ]] -
[[ DESCRIPTION ]]
{% endforeach %}
Education
{% foreach(education) %}
[[ SUBJECT ]]
[[ TIME_LETTER ]]
[[ COLLEGE_NAME ]]
{% endforeach %}
Core Skills
{% foreach(skills) %}
[[ NAME ]]
{% endforeach %}
Contact
{{EMAIL}}
Email
{{PHONE_NUMBER}}
Phone
{{WEBSITE}}
Website


--- layout: api title: v1.1.0 categories: api version: v1.1.0 navigation: - title: MapBox.js & Leaflet items: - title: Standalone MapBox.js items: - title: L.mapbox.map items: - title: map.getTileJSON items: - title: L.mapbox.tileLayer items: - tileLayer.getTileJSON - tileLayer.setFormat - title: L.mapbox.gridLayer items: - gridLayer.getTileJSON - gridLayer.getData - title: L.mapbox.markerLayer items: - markerLayer.loadURL - markerLayer.loadID - markerLayer.setFilter - markerLayer.getFilter - markerLayer.setGeoJSON - markerLayer.getGeoJSON - title: L.mapbox.geocoder items: - geocoder.query - geocoder.reverseQuery - title: L.mapbox.legendControl items: - title: L.mapbox.gridControl items: - title: L.mapbox.geocoderControl items: - geocoderControl.setURL - geocoderControl.setID - geocoderControl.setTileJSON - geocoderControl.setErrorHandler - geocoderControl.getErrorHandler - title: L.mapbox.marker.icon items: - title: L.mapbox.marker.style items: ---
This API documentation covers the MapBox Javascript API, an API for adding MapBox maps to webpages.
In order to use this API, you'll need to understand basic Javascript and mapping concepts. If you'd like to learn Javascript, start with an interactive course, a book or a printed book. If you'd like to learn more about maps, we've provided a helpful article explaining how web maps work.
The Javascript API is implemented as a Leaflet plugin. Leaflet is an open-source library that provides the basic ability to embed a map, like a MapBox map or a map from OpenStreetMap, into a page. The Leaflet API handles much of the fundamental operations of using maps, so this API documentation is meant to be used in conjunction with the Leaflet API reference.
The MapBox API includes Leaflet and makes it easier to integrate Leaflet with MapBox's maps and services.
Here's a simple page that you can set up with MapBox.js:

<link href='//api.tiles.mapbox.com/mapbox.js/v1.1.0/mapbox.css' rel='stylesheet' />

The necessary Javascript and CSS files for the map are hosted on MapBox's servers, so they're served from a worldwide content-distribution network. There's no API key required to include the Javascript API - you'll identify with MapBox's services simply by using your own custom maps.
This documentation is organized by methods in the Javascript API. Each method
is shown with potential arguments, and their types. For instance, the setFilter
method on L.mapbox.markerLayer
is documented as:
markerLayer.setFilter(filter: function)
The format filter: function
means that the single argument to setFilter
, a filter
function, should be a Javascript function. Other kinds of arguments include
object
, string
, or Element
.
When the API has a Javascript constructor function that returns an object, the constructor
is documented with its full name and the functions on the object are named with just
the type of the object. For instance, L.mapbox.markerLayer
documents a function that
returns a layer for markers. The methods on that object are then documented as
markerLayer.setFilter
, markerLayer.getGeoJSON
, and so on.
Like many other Javascript libraries, some of what the MapBox.js plugin does
is asynchronous - when
you create a layer like L.mapbox.tileLayer('examples.foo')
, the layer
doesn't immediately know which tiles to load and its attribution information.
Instead, it loads this information with an AJAX
call.
For most things you'll write, this isn't a problem, since MapBox.js does a good
job of handling these on-the-fly updates. If you're writing code that needs
to know when layers and other dynamically-loaded objects are ready, you can
use the ready
event to listen for their ready state. For instance:
var layer = L.mapbox.tileLayer('examples.map-0l53fhk2');
layer.on('ready', function() {
// the layer has been fully loaded now, and you can
// call .getTileJSON and investigate its properties
});
Similarly, dynamically-loaded objects produce an error
event if something
goes wrong, like if the map ID you provide is a 404:
var layer = L.mapbox.tileLayer('examples.map-0l53fhk2');
layer.on('error', function(err) {
// for some reason, this layer didn't load.
// you can find out more with the 'err' argument
// passed to this function
});
This library takes advantage of several open specifications, including TileJSON and UTFGrid.
For the purposes of this API, TileJSON is used as a way to describe maps and resources, so it is the configuration format given to layers, maps, and controls. UTFGrid is a fast way to interact with maps with tooltips and customizable behaviors, and is easy to define and produce in TileMill.
The MapBox marker API and the L.mapbox.markers
interface use GeoJSON,
a simple, open standard for geo-data based on JSON
and simple features, like Points and Polygons.
MapBox.js is optimized for mobile devices and small screens by default. There are however best practices to make sure your map always looks its best.
Having the ability to use retina tiles when the device supports them is easy. When creating the map, use the detectRetina
to verify if retina is available and retinaVersion
to use a tilelayer which is designed for retina screens.
var map = L.mapbox.map('map', 'examples.map-y7l23tes', {
detectRetina: true,
retinaVersion: 'examples.map-zswgei2n'
}).setView([40, -74.50], 9);
Modern mobile browsers now support scaling of webpages by leveraging the meta tag viewport
. This enlarges the window making your map look better on a mobile device.  Having a 'tall' map can cause the user to get stuck on the map while scrolling. Another way around this is to disable dragging
for mobile devices: map.dragging.disable();
By default, MapBox.js includes a bundled version of Leaflet that MapBox has ensured is compatible. However, a standalone version of MapBox.js is also available without Leaflet included, which you can use if you would like to supply your own version of Leaflet. You will need to include Leaflet's JavaScript and CSS files, and Leaflet 0.6 or greater is required.
Here's an example of using standalone MapBox.js:

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6/leaflet.css" />
<link href='//api.tiles.mapbox.com/mapbox.js/v1.1.0/mapbox.standalone.css' rel='stylesheet' />

Create and automatically configure a map with layers, markers, and interactivity.
Arguments:
The first argument is required and must be the id of an element, or a DOM element reference.
The second argument is optional and can be:
id
string examples.map-foo
{{site.tileapi}}/v3/examples.map-0l53fhk2.json
The third argument is optional. If provided, it is the same options as provided to L.Map with the following additions:
tileLayer
(boolean | object). If true, a L.mapbox.tileLayer
is added to
the map based on the TileJSON. The value can also be an object which specifies
options for the tileLayer. Default: true
.markerLayer
(boolean | object). If true, a L.mapbox.markerLayer
is added to
the map based on the TileJSON. The value can also be an object which specifies
options for the markerLayer. Default: true
.gridLayer
(boolean | object). If true, a L.mapbox.gridLayer
is added to
the map based on the TileJSON. The value can also be an object which specifies
options for the gridLayer. Default: true
.legendControl
(boolean | object). If true, a L.mapbox.legendControl
is added to
the map. The value can also be an object which specifies options for the legendControl.
Default: true
.Example:
// map refers to a
 element with the ID map
// examples.map-4l7djmvo is the ID of a map on MapBox.com
var map = L.mapbox.map('map', 'examples.map-4l7djmvo');
// map refers to a
 element with the ID map
// This map will have no layers initially
var map = L.mapbox.map('map');
Returns: a map object
Returns this map's TileJSON object which determines its tile source, zoom bounds and other metadata.
Arguments: none
Returns: the TileJSON object
You can add a tiled layer to your map with L.mapbox.tileLayer()
, a simple
interface to layers from MapBox and elsewhere.
Arguments:
The first argument is required and must be:
id
string examples.map-foo
{{site.tileapi}}/v3/examples.map-0l53fhk2.json
The second argument is optional. If provided, it is the same options as provided to L.TileLayer with one addition:
retinaVersion
, if provided, is an alternative value for the first argument
to L.mapbox.tileLayer
which, if retina is detected, is used instead.Example:
// the second argument is optional
var layer = L.mapbox.tileLayer('examples.map-20v6611k');
// you can also provide a full url to a tilejson resource
var layer = L.mapbox.tileLayer('{{site.tileapi}}/v3/examples.map-0l53fhk2.json');
// if provided,you can support retina tiles
var layer = L.mapbox.tileLayer('examples.map-20v6611k', {
detectRetina: true,
// if retina is detected, this layer is used instead
retinaVersion: 'examples.map-zswgei2n'
});
Returns a L.mapbox.tileLayer
object.
Returns this layer's TileJSON object which determines its tile source, zoom bounds and other metadata.
Arguments: none
Example:
var layer = L.mapbox.tileLayer('examples.map-20v6611k')
// since layers load asynchronously through AJAX, use the
// `.on` function to listen for them to be loaded before
// calling `getTileJSON()`
.on('load', function() {
// get TileJSON data from the loaded layer
var TileJSON = layer.getTileJSON();
});
Returns: the TileJSON object
Set the image format of tiles in this layer. You can use lower-quality tiles in order to load maps faster
Arguments:
string
an image format. valid options are: 'png', 'png32', 'png64', 'png128', 'png256', 'jpg70', 'jpg80', 'jpg90'Example:
// Downsample tiles for faster loading times on slow
// internet connections
var layer = L.mapbox.tileLayer('examples.map-20v6611k', {
format: 'jpg70'
});
Returns: the layer object
An L.mapbox.gridLayer
loads UTFGrid tiles of
interactivity into your map, which you can easily access with L.mapbox.gridControl
.
Arguments:
The first argument is required and must be:
id
string examples.map-foo
{{site.tileapi}}/v3/examples.map-0l53fhk2.json
Example:
// the second argument is optional
var layer = L.mapbox.gridLayer('examples.map-20v6611k');
Returns a L.mapbox.gridLayer
object.
Returns this layer's TileJSON object which determines its tile source, zoom bounds and other metadata.
Arguments: none
Example:
var layer = L.mapbox.gridLayer('examples.map-20v6611k')
// since layers load asynchronously through AJAX, use the
// `.on` function to listen for them to be loaded before
// calling `getTileJSON()`
.on('load', function() {
// get TileJSON data from the loaded layer
var TileJSON = layer.getTileJSON();
});
Returns: the TileJSON object
Load data for a given latitude, longitude point on the map, and call the callback function with that data, if any.
Arguments:
latlng
an L.LatLng objectcallback
a function that is called with the grid data as an argumentReturns: the L.mapbox.gridLayer object
L.mapbox.markerLayer
provides an easy way to integrate GeoJSON
from MapBox and elsewhere into your map.
Arguments:
required and must be:
An id
string examples.map-foo
{{site.tileapi}}/v3/examples.map-0l53fhk2.json
The second argument is optional. If provided, it is the same options as provided to L.FeatureGroup, as well as:
filter
: A function that accepts a feature object and returns true
or false
to indicate whether it should be displayed on the map. This can be changed
later using setFilter
.sanitizer
: A function that accepts a string containing tooltip data, and returns a
sanitized result for HTML display. The default will remove dangerous script content,
and is recommended.Example:
var markerLayer = L.mapbox.markerLayer(geojson)
.addTo(map);
Returns a L.mapbox.markerLayer
object.
Load GeoJSON data for this layer from the URL given by url
.
Arguments:
string
a URL referencing a GeoJSON resourceExample:
var markerLayer = L.mapbox.markerLayer()
.addTo(map);
markerLayer.loadURL('my_local_markers.geojson');
Returns: the layer object
Load marker GeoJSON data from a map with the given id
on MapBox.
Arguments:
string
a map idExample:
var markerLayer = L.mapbox.markerLayer()
.addTo(map);
// loads markers from the map `examples.map-0l53fhk2` on MapBox,
// if that map has markers
markerLayer.loadID('examples.map-0l53fhk2');
Returns: the layer object
Sets the filter function for this data layer.
Arguments:
Example:
var markerLayer = L.mapbox.markerLayer(geojson)
// hide all markers
.setFilter(function() { return false; })
.addTo(map);
Returns the markerLayer object.
Gets the filter function for this data layer.
Arguments: none
Example:
var markerLayer = L.mapbox.markerLayer(geojson)
// hide all markers
.setFilter(function() { return false; })
.addTo(map);
// get the filter function
var fn = markerLayer.getFilter()
Returns the filter function.
Set the contents of a markers layer: run the provided features through the filter function and then through the factory function to create elements for the map. If the layer already has features, they are replaced with the new features. An empty array will clear the layer of all features.
Arguments:
features
, an array of GeoJSON feature objects,
or omitted to get the current value.Example:
var markerLayer = L.mapbox.markerLayer(geojson)
.addTo(map);
// a simple GeoJSON featureset with a single point
// with no properties
markerLayer.setGeoJSON({
type: "FeatureCollection",
features: [{
type: "Feature",
geometry: {
type: "Point",
coordinates: [102.0, 0.5]
},
properties: { }
}]
});
Returns the markerLayer object
Get the contents of this layer as GeoJSON data.
Arguments: none
Returns the GeoJSON represented by this layer
A low-level interface to geocoding, useful for more complex uses and reverse geocoding.
(required) must be:
An id
string examples.map-foo
string
that points to TileJSON, like {{site.tileapi}}/v3/examples.map-0l53fhk2.json
Returns a L.mapbox.geocoder
object.
Queries the geocoder with a query string, and returns its result, if any.
Arguments:
The callback is called with arguments
The result. This is an object with the following members:
{ results: // raw results
latlng: // a map-friendly latlng array
bounds: // geojson-style bounds of the first result
lbounds: // leaflet-style bounds of the first result
}
Returns: the geocoder object. The return value of this function is not useful - you must use a callback to get results.
Queries the geocoder with a location, and returns its result, if any.
Arguments:
(required) a query, expressed as an object:
[lon, lat] // an array of lon, lat
{ lat: 0, lon: 0 } // a lon, lat object
{ lat: 0, lng: 0 } // a lng, lat object
The first argument can also be an array of objects in that form to geocode more than one item.
The callback is called with arguments
Returns: the geocoder object. The return value of this function is not useful - you must use a callback to get results.
A map control that shows legends added to maps in MapBox. Legends are auto-detected from active layers.
Arguments:
(optional) an options object. Beyond the default options for map controls, this object has one special parameter:
sanitizer
: A function that accepts a string containing legend data, and returns a
sanitized result for HTML display. The default will remove dangerous script content,
and is recommended.
Example:
var map = L.mapbox.map('map').setView([38, -77], 5);
map.addControl(L.mapbox.legendControl());
Returns: a L.mapbox.legendControl
object.
Interaction is what we call interactive parts of maps that are created with the powerful tooltips & regions system in TileMill. Under the hood, it's powered by the open UTFGrid specification..
Arguments:
L.mapbox.gridLayer()
The second argument can be an options object. Valid options are:
sanitizer
: A function that accepts a string containing interactivity data, and returns a
sanitized result for HTML display. The default will remove dangerous script content,
and is recommended.
template
: A string in the Mustache template
language that will be evaluated with data from the grid to produce HTML for the
interaction.follow
: Whether the tooltip should follow the mouse in a constant
relative position, or should be fixed in the top-right side of the map.
By default, this is false
and the tooltip is stationary.pinnable
: Whether clicking will 'pin' the tooltip open and expose a
'close' button for the user to close the tooltip. By default, this is true
.Example:
var map = L.mapbox.map('map').setView([38, -77], 5);
var gridLayer = L.mapbox.gridLayer('examples.map-8ced9urs');
map.addLayer(L.mapbox.tileLayer('examples.map-8ced9urs'));
map.addLayer(gridLayer);
map.addControl(L.mapbox.gridControl(gridLayer));
Returns: a L.mapbox.gridControl
object.
Adds geocoder functionality as well as a UI element to a map. This uses the MapBox Geocoding API.
This function is currently in private beta: contact MapBox before using this functionality.
Arguments:
(required) either:
An id
string examples.map-foo
{{site.tileapi}}/v3/examples.map-0l53fhk2.json
Example
var map = L.map('map')
.setView([37, -77], 5)
.addControl( L.mapbox.geocoder('examples.map-i875kd35'));
Returns a L.mapbox.geocoderControl
object.
Set the url used for geocoding.
Arguments:
Returns: the geocoder control object
Set the map id used for geocoding.
Arguments:
Returns: the geocoder control object
Set the TileJSON used for geocoding.
Arguments:
Returns: the geocoder object
Set the function called if a geocoding request returns an error.
Arguments:
Returns: the geocoder control object
Returns the current function used by this geocoderControl for error handling.
Arguments: none
Returns: the geocoder control's error handler
A core icon generator used in L.mapbox.marker.style
Arguments:
Returns:
A L.Icon
object with custom settings for iconUrl
, iconSize
, iconAnchor
,
and popupAnchor
.
An icon generator for use in conjunction with pointToLayer
to generate
markers from the MapBox Markers API
and support the simplestyle-spec for
features.
Arguments:
Examples:
L.geoJson(geoJson, {
pointToLayer: L.mapbox.marker.style,
});
Returns:
A L.Marker
object with the latitude, longitude position and a styled marker
Mapbox.js implements a simple, light style on all interaction elements. A dark theme
is available by applying class="dark"
to the map div.
Example:


cma.fitness_transformations.EvalParallel2(object)
class documentationcma.fitness_transformations
(View In Hierarchy)
A class and context manager for parallel evaluations.
This class is based on the Pool class of the multiprocessing
module.
The interface in v2 changed, such that the fitness function can be
given once in the constructor. Hence the number of processes has
become the second (optional) argument of __init__
and the function
has become the second and optional argument of __call__
.
To be used with the with
statement (otherwise terminate
needs to
be called to free resources):
with EvalParallel2(fitness_function) as eval_all: fvals = eval_all(solutions)
assigns a callable EvalParallel2
class instance to eval_all.
The instance can be called with a list
(or tuple
or any
sequence) of solutions and returns their fitness values. That is:
eval_all(solutions) == [fitness_function(x) for x in solutions]
EvalParallel2.__call__
may take three additional optional arguments,
namely fitness_function
(like this the function may change from call
to call), args
passed to fitness and timeout
passed to the
multiprocessing.pool.ApplyResult.get
method which raises
multiprocessing.TimeoutError
in case.
eval_all = EvalParallel2(fitness_function, 0) bypasses
multiprocessing
, hence the construct can be used even when
multiprocessing
fails on this fitness_function
instantiation.
Examples:
>>> import cma >>> from cma.fitness_transformations import EvalParallel2 >>> # class usage, don't forget to call terminate >>> ep = EvalParallel2(cma.fitness_functions.elli, 4) >>> ep([[1,2], [3,4], [4, 5]]) # doctest:+ELLIPSIS [4000000.944... >>> ep.terminate() ... >>> # use with `with` statement (context manager) >>> es = cma.CMAEvolutionStrategy(3 * [1], 1, dict(verbose=-9)) >>> with EvalParallel2(cma.fitness_functions.elli, ... number_of_processes=12) as eval_all: ... while not es.stop(): ... X = es.ask() ... es.tell(X, eval_all(X)) # eval_all also accepts `fitness_function` ... # and `args` as optional arguments >>> assert es.result[1] < 1e-13 and es.result[2] < 1500
Parameters: the EvalParallel2
constructor takes the number of
processes as optional input argument, which is by default
multiprocessing.cpu_count(). If number_of_processes <= 0, no
multiprocessing
is invoked and the fitness is computed directly in a
regular loop.
Limitations: the multiprocessing
module, on which this class is based
upon, may not work with certain class instance methods or Cython
instances, or class instances that contain modules as it uses pickle
.
Details: in some cases the execution may be considerably slowed down, as for example in previous tests done with test suites from coco/bbob.
Comparing setting number_of_processes = 0 with number_of_processes = 1 evaluates the overhead introduced by multiprocessing.Pool.apply_async.
| Method | __init__ | Undocumented |
| Method | __call__ | evaluate a list/sequence of solution-"vectors", return a list of corresponding f-values. |
| Method | terminate | free allocated processing pool |
| Method | __enter__ | Undocumented |
| Method | __exit__ | Undocumented |
| Method | __del__ | though generally not recommended __del__ should be OK here |
evaluate a list/sequence of solution-"vectors", return a list of corresponding f-values.
args
is passed to fitness_function
like
fitness_function(solutions[0], *args).
Raises multiprocessing.TimeoutError
if timeout
is given and
exceeded.


Prev
Next
First slide
Second slide
Third slide
Fourth slide
Prev
Next
First slide
Second slide
Third slide
Fourth slide
Prev
Next
First slide
Second slide
Third slide
Fourth slide


Address: Graphic Era Hill University Bell Road, Clement Town Dehradun, Uttarakhand
Telephone Number:<PHONE_NUMBER>7
Fax Number:<PHONE_NUMBER>0


Covering Flex 4, BlazeDS 4, and Spring BlazeDS Integration 1.0.3.
Christophe Coenraets, March 16th 2010
The Spring BlazeDS Integration Test Drive consists of a series of samples running “out-of-the-box” that allow you to get up and running integrating Flex with Spring in minutes.
This step is optional: All the samples in this Test Drive run out-of-the-box. However, if you want to look at/experiment with the source code in the Flash Builder IDE while running the samples, do the following:
web.xml
In web.xml, the DispatcherServlet is configured to bootstrap the Spring WebApplicationContext as usual. In this simple configuration, all the /messagebroker requests are mapped to the DispatcherServlet.
flex-servlet.xml
In flex-servlet.xml, the BlazeDS message broker is configured as a Spring-managed bean using the simple message-broker tag. This will bootstrap the BlazeDS message broker.
With the message-broker in place, the Spring beans are configured as usual, and exposed for remote access using the remoting-destination tag.
In this Test Drive, we split the configuration into multiple xml files:
In your own web application, you can use a different configuration arrangement, including single-file configuration.
Open Main.mxml in the spring-blazeds-101 project to look at the source code of the application.
Open the following files in a text editor to look at the source code for the server side of the application:
Note that in this first sample, we use a simplistic DAO implementation with low level JDBC code and no real abstraction. This was done intentionally to provide a bare-bones example that focuses exclusively on the Spring/BlazeDS Integration plumbing. In all the other examples of this Test Drive, we use the JdbcTemplate abstraction of the Spring framework to build the data access objects.
Using RemoteObject, you can directly invoke methods of Java objects deployed in your application server, and consume the return value. The return value can be a value of a primitive data type, an object, a collection of objects, an object graph, etc.
Using the Spring BlazeDS integration, Spring beans are exposed using the remoting-destination tag. The productService bean is defined in app-config.xml and is exposed as a remoting destination in flex-servlet.xml.
Java objects returned by server-side methods are deserialized into either dynamic or typed ActionScript objects. In this example, we don't have an explicit ActionScript version of the Product Java class. Product objects are therefore deserialized into dynamic objects. In InSync03 below, we start working with strongly typed model objects.
Open insync01.mxml in the insync01 project to look at the source code of the application.
Open the following files to look at the source code for the server side of the application:
Click here to run the application
Open insync02.mxml in the insync02 project to look at the source code of the application.
This version is similar to insync01, but demonstrates how to use the ResultEvent and FaultEvent to have a finer control over RemoteObject calls.
Open insync03.mxml, Contact.as, and ContactForm.mxml in the insync03 project to look at the source code of the application.
In this version, we work with strongly typed contact objects. The Contact.as class is the ActionScript representation of org.springframework.flex.samples.contact.Contact.java. The [RemoteClass(alias="org.springframework.flex.spring.samples.contact.Contact")] annotation in Contact.as is used to indicate that instances of Contact.as sent to the server should be deserialized as instances of org.springframework.flex.spring.samples.contact.Contact at the server side, and that similarly, instances of org.springframework.flex.spring.samples.contact.Contact retrieved from the server should be deserialized as instances of Contact.as.
Open insync04.mxml in the insync04 project to look at the source code of the application.
Open insync05.mxml and ContactForm.mxml in the insync05 project to look at the source code of the application.
This version enables the user of the application to add contacts. In ContactForm, we remotely invoke the create() method of ContactDAO when dealing with a new contact, and the update() method when updating an existing contact.
Open insync06.mxml, ContactForm.mxml, and ContactEvent.as in the insync06 project to look at the source code of the application.
In this version, ContactForm dispatches events when a contact has been created, updated, or deleted. Other components of the application can register as listeners to these events to perform a specific task when a contact is created, updated or deleted. In this case, the main application registers as a listener to these events and refreshes the contact DataGrid to make sure it reflects the changes made in ContactForm.
Open companymgr.mxml, Company.as, Industry.as, and CompanyForm.mxml in the companymgr project to look at the source code of the application.
Open the following files to look at the source code for the server side of the application:
The CompanyDAO and IndustryDAO beans are not defined in app-config.xml nor exposed in flex-servlet.xml. They are configured using annotations (@Service
,
@RemotingDestination
, @Autowired
, @RemotingInclude
, and @RemotingExclude
) in the class definition. This application is similar to inSync, but demonstrates object associations: the Company class has a property of type Industry.
Open chat.mxml in the chat project to look at the source code of the application. The Message Service manages a set of destinations that Flex clients can publish and subscribe to. Flex provides two components, Producer and Consumer, that you use to publish and subscribe to a destination. To subscribe to a destination, you use the subscribe()
method of the Consumer class. When a message is published to a destination that you subscribed to, the message
event is triggered on the Consumer.
Open flex-servlet.xml to look at the message service configuration. The message service is configured using <flex:message-service />
inside <flex:message-broker />
. The "chat" destination is configured using <flex:message-destination id="chat" />
This example demonstrates how to use the message service to push data from the server to the client. At the server-side, a Java component publishes simulated real time values to a message destination. The Flex client subscribes to that destination and displays the values in real time.
Open simplepush.mxml in the simplepush project to look at the source code of the application.
Open the following files to look at the source code for the server side of the application:
In SimpleFeed.java, the MessageTemplate class is used to publish messages to the "simple-feed" destination.
In flex-servlet.xml, the "simple-feed" destination is configured using<flex:message-destination id="simple-feed" />
Traderdesktop is a more sophisticated data push example showing how to use subtopics to selectively subscribe to specific messages. In this case, the user can subscribe to updates for specific stocks only. At the server side, a Java component publishes simulated market data to a messaging destination.
Open traderdesktop.mxml in the traderdesktop project to look at the source code of the application.
Open the following files to look at the source code for the server side of the application:
<flex:message-destination id="market-feed" allow-subtopics="true" subtopic-separator="." />
This application is identical to the regular chat application above. The only difference is the name of the destination: "jms-chat". At the server-side, the "jms-chat" destination is mapped to a JMS topic.
Open jmschat.mxml in the jmschat project to look at the source code of the application.
Open flex-servlet.xml to look at the configuration of the jms-chat destination. Note that the "jms-chat" destination is mapped to the "chatTopic" JMS topic.
Open infrastructure-config.xml to look at the JMS configuration. In this application, we use an embedded ActiveMQ message broker configured by the connectionFactory bean. You don't have to start ActiveMQ in a separate process.
Open collaboration.mxml in the collaboration project to look at the source code of the application.
Open Main.mxml in the spring-blazeds-security-101 project to look at the source code of the application.
Open the following files in a text editor to look at the the server side configuration:
In app-config.xml, note that the "find*" methods of securedProductService are protected: they can only be accessed by members of ROLE_USER. A basic authentication provider is defined in security-config.xml.


This is text of a post. It only goes so far. After a little bit the text will get cut off. Until that point I will misspell works and typos and such because I can and I’m lazy. This is the rest of the post. Are you happy you showed up? Let me repeat myself.
This is text of a post. It only goes so far. After a little bit the text will get cut off. Until that point I will misspell works and typos and such because I can and I’m lazy. This is the rest of the post. Are you happy you showed up? Let me repeat myself.
This is text of a post. It only goes so far. After a little bit the text will get cut off. Until that point I will misspell works and typos and such because I can and I’m lazy. This is the rest of the post. Are you happy you showed up? Let me repeat myself.
This is text of a post. It only goes so far. After a little bit the text will get cut off. Until that point I will misspell works and typos and such because I can and I’m lazy. This is the rest of the post. Are you happy you showed up? Let me repeat myself.
And this is the end. Thank you for staying.


# Who am I ? * My name is *Pierre Navaro* * **Fortran 77 + PVM** : during my PhD 1998-2002 (Université du Havre) * **Fortran 90-2003 + OpenMP-MPI** : Engineer in Strasbourg (2003-2015) at IRMA * **Numpy + Cython, R + Rcpp** : Engineer in Rennes (2015-now) at IRMAR * **Julia v1.0** since July 2018 ## Instructions to open the notebook and slides * https://github.com/pnavaro/JuliaSMAI2021 * https://pnavaro.github.io/JuliaSMAI2021 --- # Why Julia? * Started in 2009 and first version was released in 2012. * High-level languages like Python and R let one explore and experiment rapidly, but can run slow. * Low-level languages like Fortran/C++ tend to take longer to develop, but run fast. * This is sometimes called the "two language problem" and is something the Julia developers set out to eliminate. * Julia's promise is to provide a "best of both worlds" experience for programmers who need to develop novel algorithms and bring them into production environments with minimal effort. **Julia: A Fresh Approach to Numerical Computing** *Jeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah* SIAM Rev., 59(1), 65–98. (34 pages) 2012 **SciML Scientific Machine Learning Software** https://sciml.ai/citing/ **Differentialequations.jl–a performant and feature-rich ecosystem for solving differential equations in julia,** *Christopher Rackauckas and Qing Nie*, Journal of Open Research Software,, volume 5, number 1, 2017. --- # Implement your own numerical methods to solve $$ y'(t) = 1 - y(t), t \in [0,5], y(0) = 0. $$ -- ## Explicit Euler ```julia euler(f, t, y, h) = t + h, y + h * f(t, y) ``` ``` euler (generic function with 1 method) ``` ## Runge-Kutta 2nd order ```julia rk2(f, t, y, h) = begin ỹ = y + h / 2 * f(t, y) t + h, y + h * f(t + h / 2, ỹ) end ``` ``` rk2 (generic function with 1 method) ``` --- ## Runge-Kutta 4th order ```julia function rk4(f, t, y, dt) y₁ = dt * f(t, y) y₂ = dt * f(t + dt / 2, y + y₁ / 2) y₃ = dt * f(t + dt / 2, y + y₂ / 2) y₄ = dt * f(t + dt, y + y₃) t + dt, y + (y₁ + 2 * y₂ + 2 * y₃ + y₄) / 6 end ``` ``` rk4 (generic function with 1 method) ``` --- ## Solve function ```julia function dsolve(f, method, t₀, y₀, h, nsteps) t = zeros(Float64, nsteps) y = similar(t) t[1] = t₀ y[1] = y₀ for i = 2:nsteps t[i], y[i] = method(f, t[i-1], y[i-1], h) end t, y end ``` ``` dsolve (generic function with 1 method) ``` --- ## Plot solutions ```julia using Plots nsteps, tfinal = 7, 5.0 t₀, x₀ = 0.0, 0.0 dt = tfinal / (nsteps - 1) f(t, x) = 1 - x t, y_euler = dsolve(f, euler, t₀, x₀, dt, nsteps) t, y_rk2 = dsolve(f, rk2, t₀, x₀, dt, nsteps) t, y_rk4 = dsolve(f, rk4, t₀, x₀, dt, nsteps) ``` ``` ([0.0, 0.8333333333333334, 1.6666666666666667, 2.5, 3.3333333333333335, 4.166666666666667, 5.0], [0.0, 0.5624678497942387, 0.8085656175363232, 0.9162413030173554, 0.9633528772107507, 0.9839657055671652, 0.9929844806797695]) ``` --- ```julia plot(t, y_euler; marker = :o, label = "Euler") plot!(t, y_rk2; marker = :d, label = "RK2") plot!(t, y_rk4; marker = :p, label = "RK4") plot!(t -> 1 - exp(-t); line = 3, label = "true solution") ``` ``` "/private/var/folders/56/lhgl67bx4qj6tvjx41b1wgdr0000gn/T/jl_BAvc0r/build/dsolve.png" ``` ![dsolve](dsolve.png) --- ## DifferentialEquations.jl ```julia using DifferentialEquations f(y, p, t) = 1.0 - y y₀, t = 0.0, (0.0, 5.0) prob = ODEProblem(f, y₀, t) sol_euler = solve(prob, Euler(), dt = 1.0) sol = solve(prob) ``` ``` retcode: Success Interpolation: specialized 4th order "free" interpolation, specialized 2nd order "free" stiffness-aware interpolation t: 15-element Vector{Float64}: 0.0 9.999999999999999e-5 0.0010999999999999998 0.011099999999999997 0.076742091466188 0.2256219976613778 0.4455760022489606 0.7272505097568545 1.0899643857570624 1.5331652827982714 2.06972399829104 2.705750446504391 3.4562444530999095 4.3378403240538095 5.0 u: 15-element Vector{Float64}: 0.0 9.999500016666247e-5 0.001099395221772342 0.011038622307372232 0.07387132069817183 0.20198030129465658 0.35954472556518147 0.5167641452122544 0.6637713825376198 0.7841482271226826 0.8737784044472122 0.9331779821204208 0.9684489616227439 0.9869310637824636 0.9932596937939658 ``` --- ```julia plot(sol_euler, label = "Euler") plot!(sol, label = "default") plot!(1:0.1:5, t -> 1.0 - exp(-t), lw = 3, ls = :dash, label = "True Solution!") ``` ![diffeq](diffeq.png) --- `sol.t` is the array of time points that the solution was saved at ```julia sol.t ``` ``` 15-element Vector{Float64}: 0.0 9.999999999999999e-5 0.0010999999999999998 0.011099999999999997 0.076742091466188 0.2256219976613778 0.4455760022489606 0.7272505097568545 1.0899643857570624 1.5331652827982714 2.06972399829104 2.705750446504391 3.4562444530999095 4.3378403240538095 5.0 ``` `sol.u` is the array of solution values ```julia sol.u ``` ``` 15-element Vector{Float64}: 0.0 9.999500016666247e-5 0.001099395221772342 0.011038622307372232 0.07387132069817183 0.20198030129465658 0.35954472556518147 0.5167641452122544 0.6637713825376198 0.7841482271226826 0.8737784044472122 0.9331779821204208 0.9684489616227439 0.9869310637824636 0.9932596937939658 ``` --- ```julia function lorenz(du, u, p, t) du[1] = 10.0 * (u[2] - u[1]) du[2] = u[1] * (28.0 - u[3]) - u[2] du[3] = u[1] * u[2] - (8 / 3) * u[3] end u0 = [1.0; 0.0; 0.0] tspan = (0.0, 100.0) prob = ODEProblem(lorenz, u0, tspan) sol = solve(prob) ``` ``` retcode: Success Interpolation: specialized 4th order "free" interpolation, specialized 2nd order "free" stiffness-aware interpolation t: 1263-element Vector{Float64}: 0.0 3.5678604836301404e-5 0.0003924646531993154 0.0032624077544510573 0.009058075635317072 0.01695646895607931 0.02768995855685593 0.04185635042021763 0.06024041165841079 0.08368541255159562 ⋮ 99.30760258626904 99.39665422328268 99.49536147459878 99.58822928767293 99.68983993598462 99.77864535713971 99.85744078539504 99.93773320913628 100.0 u: 1263-element Vector{Vector{Float64}}: [1.0, 0.0, 0.0] [0.9996434557625105, 0.0009988049817849058, 1.781434788799208e-8] [0.9961045497425811, 0.010965399721242457, 2.146955365838907e-6] [0.9693591634199452, 0.08977060667778931, 0.0001438018342266937] [0.9242043615038835, 0.24228912482984957, 0.0010461623302512404] [0.8800455868998046, 0.43873645009348244, 0.0034242593451028745] [0.8483309847495312, 0.6915629321083602, 0.008487624590227805] [0.8495036669651213, 1.0145426355349096, 0.01821208962127994] [0.9139069574560097, 1.4425599806525806, 0.03669382197085303] [1.088863826836895, 2.052326595543049, 0.0740257368585531] ⋮ [4.669609096878053, 3.061564434452441, 25.1424735017959] [4.188801916573263, 4.617474401440693, 21.09864175382292] [5.559603854699961, 7.905631612648314, 18.79323210016923] [8.556629716266505, 12.533041060088328, 20.6623639692711] [12.280585075547771, 14.505154761545633, 29.332088452699942] [11.736883151600804, 8.279294641640229, 34.68007510231878] [8.10973327066804, 3.2495066495235854, 31.97052076740117] [4.958629886040755, 2.194919965065022, 26.948439650907677] [3.8020065515435855, 2.787021797920187, 23.420567509786622] ``` --- ```julia plot(sol, vars = (1, 2, 3)) ``` ``` ┌ Warning: To maintain consistency with solution indexing, keyword argument vars will be removed in a future version. Please use keyword argument idxs instead. │ caller = ip:0x0 └ @ Core :-1 ``` ![lorenz](lorenz.png) --- ```julia using ParameterizedFunctions lotka_volterra = @ode_def begin d🐁 = α*🐁 - β*🐁*🐈 d🐈 = -γ*🐈 + δ*🐁*🐈 end α β γ δ u0 = [1.0, 1.0] # Initial condition tspan = (0.0, 10.0) # Simulation interval tsteps = 0.0:0.1:10.0 # intermediary points p = [1.5, 1.0, 3.0, 1.0] # equation parameters: p = [α, β, δ, γ] prob = ODEProblem(lotka_volterra, u0, tspan, p) sol = solve(prob) ``` ``` retcode: Success Interpolation: specialized 4th order "free" interpolation, specialized 2nd order "free" stiffness-aware interpolation t: 34-element Vector{Float64}: 0.0 0.0776084743154256 0.23264513699277584 0.4291185174543143 0.6790821987497083 0.9444046158046306 1.2674601546021105 1.6192913303893046 1.9869754428624007 2.2640902393538296 ⋮ 7.584863345264154 7.978068981329682 8.48316543760351 8.719248247740158 8.949206788834692 9.200185054623292 9.438029017301554 9.711808134779586 10.0 u: 34-element Vector{Vector{Float64}}: [1.0, 1.0] [1.0454942346944578, 0.8576684823217127] [1.1758715885138267, 0.639459570317544] [1.4196809607170826, 0.4569962601282084] [1.876719395008001, 0.32473342927911314] [2.5882500645533466, 0.26336255535952163] [3.8607089092207665, 0.2794458098285253] [5.750812667710396, 0.5220072537934558] [6.814978999130169, 1.9177826328390666] [4.3929992925714245, 4.194670792850584] ⋮ [2.614253967788294, 0.26416945387525886] [4.241076127191749, 0.3051236762921916] [6.791123785297795, 1.1345287797146113] [6.265370675764892, 2.74169350754023] [3.7807651118880545, 4.431165685863461] [1.816420140681761, 4.064056625315978] [1.1465021407690728, 2.7911706616216976] [0.9557986135403302, 1.6235622951850799] [1.0337581256020607, 0.9063703842886133] ``` --- # Type-Dispatch Programming * Centered around implementing the generic template of the algorithm not around building representations of data. * The data type choose how to efficiently implement the algorithm. * With this feature share and reuse code is very easy [JuliaCon 2019 | The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski](https://youtu.be/kc9HwsxE1OY) --- Simple gravity pendulum ```julia using DifferentialEquations, Plots g = 9.79 # Gravitational constants L = 1.00 # Length of the pendulum #Initial Conditions u₀ = [0, π / 60] # Initial speed and initial angle tspan = (0.0, 6.3) # time domain #Define the problem function simplependulum(du, u, p, t) θ = u[1] dθ = u[2] du[1] = dθ du[2] = -(g/L)*θ end prob = ODEProblem(simplependulum, u₀, tspan) sol = solve(prob, Tsit5(), reltol = 1e-6) ``` ``` retcode: Success Interpolation: specialized 4th order "free" interpolation t: 51-element Vector{Float64}: 0.0 0.031087055826046293 0.08561410455758335 0.15017614691650324 0.22845000693621464 0.31505859610319265 0.40952552265148245 0.5094804665223178 0.6142606828816117 0.7233814675983777 ⋮ 5.276991527121083 5.427396011335077 5.568207973942741 5.706096737512237 5.841862506521234 5.97857442065412 6.118893944150791 6.267408889178013 6.3 u: 51-element Vector{Vector{Float64}}: [0.0, 0.05235987755982988] [0.0016251489879623073, 0.052112381623717514] [0.004429323578461451, 0.05049245161124966] [0.007577026053634464, 0.04668511432388565] [0.010968722238292433, 0.03954356773072573] [0.013951484712956963, 0.02891353707715841] [0.01603824120236177, 0.014943963379430084] [0.01672973991691839, -0.0012207134336849744] [0.015713051180260403, -0.018011260476534265] [0.012878614479109221, -0.03343350596936019] ⋮ [-0.012041966804622781, -0.03635808653571255] [-0.016001764791371276, -0.015321724384266154] [-0.016561978903112534, 0.007493947984585336] [-0.014042737908113273, 0.028477612500254594] [-0.009043594380336785, 0.04405515312673323] [-0.0023878772866644496, 0.051823979712627824] [0.0048791392846661815, 0.050084788515492334] [0.011535290105166612, 0.037932317215479905] [0.012709480659187212, 0.034061109155362805] ``` --- Analytic and computed solution ```julia u = u₀[2] .* cos.(sqrt(g / L) .* sol.t) scatter(sol.t, getindex.(sol.u, 2), label = "Numerical") plot!(sol.t, u, label = "Analytic") ``` ![](pendulum1.svg) --- [Numbers with Uncertainties](http://tutorials.juliadiffeq.org/html/type_handling/02-uncertainties.html) ```julia using Measurements g = 9.79 ± 0.02; # Gravitational constants L = 1.00 ± 0.01; # Length of the pendulum #Initial Conditions u₀ = [0 ± 0, π / 60 ± 0.01] # Initial speed and initial angle #Define the problem function simplependulum(du, u, p, t) θ = u[1] dθ = u[2] du[1] = dθ du[2] = -(g/L)*θ end #Pass to solvers prob = ODEProblem(simplependulum, u₀, tspan) sol = solve(prob, Tsit5(), reltol = 1e-6); ``` --- Analytic solution ```julia u = u₀[2] .* cos.(sqrt(g / L) .* sol.t) plot(sol.t, getindex.(sol.u, 2), label = "Numerical") plot!(sol.t, u, label = "Analytic") ``` ![](pendulum2.svg) --- # Poisson Equation $$ \frac{\partial^2 u}{\partial x^2} = b \qquad x \in [0,1] $$ $$ u(0) = u(1) = 0, \qquad b = \sin(2\pi x) $$ ```julia using Plots, SparseArrays Δx = 0.05 x = Δx:Δx:1-Δx ## Solve only interior points: the endpoints are set to zero. n = length(x) B = sin.(2π*x) * Δx^2 P = spdiagm( -1 => ones(Float64,n-1), 0 => -2*ones(Float64,n), 1 => ones(Float64,n-1)) u1 = P \ B ``` ``` 19-element Vector{Float64}: -0.007892189393343805 -0.015011836300750241 -0.020662020077425496 -0.024289661368163382 -0.025539661368163383 -0.024289661368163386 -0.0206620200774255 -0.015011836300750248 -0.007892189393343811 -6.308085367188389e-18 0.0078921893933438 0.01501183630075024 0.020662020077425496 0.024289661368163382 0.025539661368163387 0.024289661368163386 0.020662020077425496 0.015011836300750243 0.007892189393343806 ``` --- ```julia plot([0;x;1],[0;u1;0], label="computed") scatter!([0;x;1],-sin.(2π*[0;x;1])/(4π^2),label="exact") ``` ![](poisson1.png) --- # DiffEqOperators.jl ```julia using DiffEqOperators Δx = 0.05 x = Δx:Δx:1-Δx ## Solve only interior points: the endpoints are set to zero. n = length(x) b = sin.(2π*x) # Second order approximation to the second derivative order = 2 deriv = 2 Δ = CenteredDifference{Float64}(deriv, order, Δx, n) bc = Dirichlet0BC(Float64) u2 = (Δ * bc) \ b ``` ``` 19-element Vector{Float64}: -0.007892189393343805 -0.015011836300750241 -0.020662020077425496 -0.024289661368163382 -0.025539661368163383 -0.024289661368163386 -0.0206620200774255 -0.015011836300750248 -0.007892189393343811 -6.308085367188389e-18 0.0078921893933438 0.01501183630075024 0.020662020077425496 0.024289661368163382 0.025539661368163387 0.024289661368163386 0.020662020077425496 0.015011836300750243 0.007892189393343806 ``` --- ```julia plot([0;x;1],[0;u2;0], label="computed") scatter!([0;x;1],-sin.(2π*[0;x;1])/(4π^2),label="exact") ``` ![](poisson2.png) --- # HOODESolver.jl The objective of this Julia package is to valorize the recent developments carried out within [INRIA team MINGuS](https://team.inria.fr/mingus/) on Uniformly Accurate numerical methods (UA) for highly oscillating problems. We propose to solve the following equation $$ \frac{d u(t)}{dt} = \frac{1}{\varepsilon} A u(t) + f(t, u(t)), \qquad u(t=t_0)=u_0, \qquad \varepsilon\in ]0, 1], \qquad (1) $$ with * $u : t \in [t_0, t_1] \mapsto u(t)\in \mathbb{R}^n, \quad t_0, t_1 \in \mathbb{R}$, * $u_0 \in \mathbb{R}^n$, * $A\in {\mathcal{M}}_{n,n}(\mathbb{R})$ is such that $\tau \mapsto \exp(\tau A)$ is $2 \pi$-periodic, * $f : (t, u) \in \mathbb{R}\times \mathbb{R}^n \mapsto \mathbb{R}^n$. https://pnavaro.github.io/HOODESolver.jl/stable/ Philippe Chartier, Nicolas Crouseilles, Mohammed Lemou, Florian Mehats and Xiaofei Zhao. Package: Yves Mocquard and Pierre Navaro. --- ## Two-scale formulation First, rewrite equation (1) using the variable change $w(t)=\exp(-(t-t_0)A/\varepsilon) u(t)$ to obtain $$ \frac{d w(t)}{dt} = F\Big(\frac{t-t_0}{\varepsilon}, w(t) \Big), $$ $$w(t_0) = u_0, \varepsilon \in ]0, 1], $$ where the function $F$ is expressed from the data of the original problem (1) $$F\Big( \frac{s}{\varepsilon}, w \Big) = \exp(-sA/\varepsilon) \; f( \exp(sA/\varepsilon), \; w). $$ We then introduce the function $U(t, \tau), \tau\in [0, 2 \pi]$ such that $U(t, \tau=(t-t_0)/\varepsilon) = w(t)$. The two-scale function is then the solution of the following equation. $$ \frac{\partial U}{\partial t} + \frac{1}{\varepsilon} \frac{\partial U}{\partial \tau} = F( \tau, U), \;\;\; U(t=t_0, \tau)=\Phi(\tau), \;\; \varepsilon\in ]0, 1], \;\;\;\;\;\;\;\;\;\; (2) $$ where $\Phi$ is a function checking $\Phi(\tau=0)=u_{0}$ chosen so that the $U$ solution of (2) is smooth. --- # Hénon-Heiles Example We consider the system of Hénon-Heiles satisfied by $u(t)=(u_1, u_2, u_3, u_4)(t)$. $$ \frac{d u }{dt} = \frac{1}{\varepsilon} Au + f(u), $$ $$ u(t_0)=u_0 \in \mathbb{R}^4, $$ where $A$ and $f$ are selected as follows $$ A= \\begin{pmatrix} 0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ -1 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\end{pmatrix}, \qquad f(u) = \left( \begin{array}{cccc} 0 \\\\ u_4\\\\ -2 u_1 u_2\\\\ -u_2-u_1^2+u_2^2 \end{array} \right). $$ --- # SplitODEProblem The `SplitODEProblem` type from package [DifferentialEquations.jl](https://diffeq.sciml.ai/stable/types/split_ode_types/) offers a interface for this kind of problem. ```julia using Plots, DifferentialEquations epsilon = 0.002 A = [ 0 0 1 0 ; 0 0 0 0 ; -1 0 0 0 ; 0 0 0 0 ] f1 = DiffEqArrayOperator( A ./ epsilon) function f2(du, u, p, t) du[1] = 0 du[2] = u[4] du[3] = 2*u[1]*u[2] du[4] = -u[2] - u[1]^2 + u[2]^2 end tspan = (0.0, 0.1) u0 = [0.55, 0.12, 0.03, 0.89] prob1 = SplitODEProblem(f1, f2, u0, tspan); sol1 = solve(prob1, ETDRK4(), dt=0.001); ``` --- ```julia using HOODESolver, Plots A = [ 0 0 1 0 ; 0 0 0 0 ; -1 0 0 0 ; 0 0 0 0 ] f1 = LinearHOODEOperator( epsilon, A) prob2 = SplitODEProblem(f1, f2, u0, tspan); sol2 = solve(prob2, HOODEAB(), dt=0.01); ``` ``` solve function prob=HOODESolver.HOODEProblem{Float64}(HOODESolver.HOODEFunction{true, 4}(Main.f2), [0.55, 0.12, 0.03, 0.89], (0.0, 0.1), missing, [0 0 1 0; 0 0 0 0; -1 0 0 0; 0 0 0 0], 0.002, missing), nb_tau=32, order=4, order_prep=6, dense=true, nb_t=10, getprecision=true, verbose=100 10/10 12/12 ``` --- ```julia plot(sol1, vars=[3], label="EDTRK4") plot!(sol2, vars=[3], label="HOODEAB") plot!(sol2.t, getindex.(sol2.u, 3), m=:o, label="points") ``` ``` ┌ Warning: To maintain consistency with solution indexing, keyword argument vars will be removed in a future version. Please use keyword argument idxs instead. │ caller = ip:0x0 └ @ Core :-1 ┌ Warning: To maintain consistency with solution indexing, keyword argument vars will be removed in a future version. Please use keyword argument idxs instead. │ caller = ip:0x0 └ @ Core :-1 ``` ![](sol1sol2.png) --- # High precision ```julia u0 = BigFloat.([90, -44, 83, 13]//100) t_end = big"1.0" epsilon = big"0.0017" prob = HOODEProblem(f2, u0, (big"0.0",t_end), missing, A, epsilon) ``` ``` HOODEProblem with uType Vector{BigFloat} and tType BigFloat. In-place: nothing timespan: (0.0, 1.0) u0: 4-element Vector{BigFloat}: 0.8999999999999999999999999999999999999999999999999999999999999999999999999999965 -0.4400000000000000000000000000000000000000000000000000000000000000000000000000014 0.830000000000000000000000000000000000000000000000000000000000000000000000000001 0.1300000000000000000000000000000000000000000000000000000000000000000000000000006 ``` The float are coded on 512 bits. --- ## Precision of the result with ε = 0.015 ![](assets/error_order.png) JOSS paper https://joss.theoj.org/papers/10.21105/joss.03077 Much of HOODESolver.jl was implemented by Y. Mocquard while he was supported by Inria through the AdT (Aide au développement technologique) J-Plaff of the center Rennes- Bretagne Atlantique. --- # Why use Julia language! * **You develop in the same language in which you optimize.** * Packaging system is very efficient (5858 registered packages) * PyPi (311,500 projects) R (17739 packages) * It is very easy to create a package (easier than R and Python) * It is very easy to access to a GPU device. * Nice interface for Linear Algebra and Differential Equations * Easy access to BLAS, LAPACK and scientific computing librairies. * Julia talks to all major Languages - mostly without overhead! --- # What's bad * It is still hard to build shared library or executable from Julia code. * Compilation times lattency. Using [Revise.jl](https://github.com/timholy/Revise.jl) helps a lot. * Plotting takes time (5 seconds for the first plot) * OpenMP is better than the Julia multithreading library but it is progressing. * Does not work well with vectorized code, you need to do a lot of inplace computation to avoid memory allocations and use explicit views to avoid copy. There are some packages like [LoopVectorization.jl](https://github.com/JuliaSIMD/LoopVectorization.jl). [What's Bad About Julia by Jeff Bezanson](https://www.youtube.com/watch?v=TPuJsgyu87U) --- ## From zero to Julia! https://techytok.com/from-zero-to-julia/ ## Python-Julia benchmarks by Thierry Dumont https://github.com/Thierry-Dumont/BenchmarksPythonJuliaAndCo/wiki ## Mailing List * https://listes.services.cnrs.fr/wws/info/julia --- *This page was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*


We have sent you this email because you have set up your NHS login. You may have done this when you ordered a lateral flow test or booked a PCR test on the Covid-19 Digital testing service.
Right now, your NHS login has a verified email address, password, and phone number. This allows you to do basic tasks, like read your general medical information or book further COVID-19 tests.
If you are able to complete a few more registration steps, you will be able to do a lot more. You will get full access to the NHS App and a wider choice of other digital health and care services.
See the full list of websites and apps that you can access with NHS login.
Owned and run by the NHS, the NHS App is a simple and secure way to access a range of NHS services on your smartphone or tablet.
With full access to the NHS App you can:
Find out more about the NHS App at nhs.uk/nhs-app.
Update your email address, phone number, or password in your NHS login settings.
Visit the NHS.UK login page to find out more about it.
Be aware of fraud, and remember:
The NHS App is FREE
The NHS COVID Pass is FREE
The NHS will NEVER ask for payment or any financial details
The NHS will NEVER issue fines or penalties relating to your NHS COVID Pass


Senate chairman constitutes parliamentary committee to protect minorities from forced conversion
by https://www.dawn.com/authors/4728/javed-hussain, Javed HussainSenate Chairman Sadiq Sanjrani formed a 22-member parliamentary committee to work on legislation to prevent the forced conversion of minorities, DawnNewsTV reported on Saturday.
According to a notification by the Senate Secretariat, dated November 21, the Parliamentary Committee to Protect Minorities from Forced Conversions was formed after consultations with National Assembly Speaker Asad Qaiser, Leader of the House in Senate Shibli Faraz and Leader of the Opposition in Senate Raja Zafarul Haq.
Minister for Religious Affairs Noorul Haq Qadri, Minister for Human Rights Shireen Mazari and Minister of State for Parliamentary Affairs Ali Muhammad Khan are part of the committee.
The committee also includes Senators Sikandar Mandhro, Ashok Kumar, Rana Maqbool Ahmad, Nauman Wazir Khattak, Sajjad Hussain Turi, Muhammad Ali Khan Saif and Anwaarul Haq Kakar.
MNAs Malik Muhammad Amir Dogar, Shunila Ruth, Jai Parkash, Lal Chand, Muhammad Aslam Bhootani, Rana Tanveer Hussain, Dr Darshan, Keshoo Mal Kheeal Das, Shagufta Jumani, Ramesh Lal, Naveed Amir Jeeva and Abdul Wasay are also members of the panel.
The committee will decide its terms of reference in its first meeting, the date of which has not been announced yet.


HELLO! I'M THE HAPPY UNICORN
If you want good luck for 7 years, send bitcoin
1PUUy8i9J192xrSXRJypGDbxm8xGSHg616
The happy unicorn says you... Wibaluda!


labeled
by None at 2019-11-07 18:57:39.labeled
by None at 2019-11-06 22:08:52.Google seems to only offer further support using https://support.google.com/webmasters/answer/1249981?hl=en&ref_topic=9002753, I'm going to attempt to contact support using less direct routes.
Attempting to access the admin. suite for Google services is blocked for both my NetID, and the<EMAIL_ADDRESS>accounts:
There appears to be another Gmail account<EMAIL_ADDRESS>which I may be able to use, but I do not have access to this. I will request the password for this account.
I was incorrect, this has been shared on LastPass. However, authentication for this account also leads to the same problems:
I will proceed by enquiring with OIT as to who has access to support from Google.
This shall now be tracked by a ticket in SN@P: https://princeton.service-now.com/snap?sys_id=006820ecdbcd849000822a9b8a96199e&view=sp&id=ticket&table=incident
closed
by James R. Griffin III at 2019-11-07 20:25:29.deployed
by Trey Pendragon at 2019-11-07 16:03:20.deployed
by Trey Pendragon at 2019-11-07 16:07:49.labeled
by James R. Griffin III at 2019-11-07 16:10:16.labeled
by James R. Griffin III at 2019-11-07 16:10:16.labeled
by James R. Griffin III at 2019-11-07 16:10:16.deployed
by Trey Pendragon at 2019-11-07 16:24:34.referenced
by Eliot Jordan at 2019-11-07 21:58:31.referenced
by Eliot Jordan at 2019-11-07 22:02:58.referenced
by Eliot Jordan at 2019-11-07 22:04:07.this was done
closed
by None at 2019-11-07 19:47:46.renamed
by None at 2019-11-07 21:40:50.head_ref_force_pushed
by Eliot Jordan at 2019-11-07 21:58:32.renamed
by Eliot Jordan at 2019-11-07 21:59:33.head_ref_force_pushed
by Eliot Jordan at 2019-11-07 22:02:58.head_ref_force_pushed
by Eliot Jordan at 2019-11-07 22:04:08.deployed
by Trey Pendragon at 2019-11-07 22:05:34.renamed
by Eliot Jordan at 2019-11-07 22:31:40.labeled
by Eliot Jordan at 2019-11-08 00:28:29.labeled
by Eliot Jordan at 2019-11-08 00:28:29.assigned
by Eliot Jordan at 2019-11-08 00:28:29.assigned
by Axa Mei Liauw at 2019-11-07 20:58:33.assigned
by None at 2019-11-07 20:58:33.referenced
by Axa Mei Liauw at 2019-11-07 20:08:19.merged
by Axa Mei Liauw at 2019-11-07 20:08:19.closed
by Axa Mei Liauw at 2019-11-07 20:08:19.head_ref_deleted
by Axa Mei Liauw at 2019-11-07 20:08:22.closed
by Axa Mei Liauw at 2019-11-07 20:56:55.referenced
by Axa Mei Liauw at 2019-11-07 20:56:55.merged
by Axa Mei Liauw at 2019-11-07 20:56:55.closed
by Axa Mei Liauw at 2019-11-07 20:56:55.head_ref_deleted
by Axa Mei Liauw at 2019-11-07 20:56:58.@kevinreiss Would something like this be the correct url?
https://catalog.princeton.edu/requests/11656128?mfhd=11329866&source=firestone_locator
mentioned
by Kevin Reiss at 2019-11-07 21:03:49.subscribed
by Kevin Reiss at 2019-11-07 21:03:49.labeled
by None at 2019-11-07 20:58:47.referenced
by None at 2019-11-07 19:54:48.merged
by None at 2019-11-07 19:54:48.closed
by None at 2019-11-07 19:54:48.head_ref_deleted
by None at 2019-11-07 19:56:02.Coverage remained the same at 79.429% when pulling 95fe7e314caa138683bf212ec3796b81d3ffac24 on dependabot/bundler/loofah-2.3.1 into 3c95829ef3d4e5f21c026d40f36bd1c0f6951a4e on master.
labeled
by None at 2019-11-07 16:16:06.assigned
by Nikitas Tampakis at 2019-11-07 17:49:47.renamed
by Christina Chortaria at 2019-11-07 17:50:24.closed
by Christina Chortaria at 2019-11-07 17:52:03.referenced
by Christina Chortaria at 2019-11-07 17:52:03.merged
by Christina Chortaria at 2019-11-07 17:52:03.closed
by Christina Chortaria at 2019-11-07 17:52:03.labeled
by None at 2019-11-07 14:42:36.referenced
by Christina Chortaria at 2019-11-06 22:06:15.merged
by Christina Chortaria at 2019-11-06 22:06:15.closed
by Christina Chortaria at 2019-11-06 22:06:15.This is has been advanced much further by the work of @hackmastera in order to integrate Sidekiq for asynchronous job processing, and now @tpendragon has been addressing this separately using Elixir on https://github.com/pulibrary/plantain/blob/mega_parser/mega_parser/lib/mega_parser/sax_parser.ex
mentioned
by None at 2019-11-07 18:35:28.subscribed
by None at 2019-11-07 18:35:28.mentioned
by Trey Pendragon at 2019-11-07 18:35:28.subscribed
by Trey Pendragon at 2019-11-07 18:35:28.unassigned
by James R. Griffin III at 2019-11-07 18:35:44.assigned
by Trey Pendragon at 2019-11-07 18:35:44.unassigned
by Trey Pendragon at 2019-11-07 18:53:36.Coverage remained the same at 100.0% when pulling a118c5c05e974672fbd55be2b8bc0c72dd26c21b on dependabot/bundler/loofah-2.3.1 into 44f891afc9719e8880cc24f443123f1054fecff6 on master.
labeled
by None at 2019-11-07 17:49:17.referenced
by None at 2019-11-07 13:33:41.closed
by Axa Mei Liauw at 2019-11-07 13:40:38.review_requested
by None at 2019-11-07 13:34:09.referenced
by Axa Mei Liauw at 2019-11-07 13:40:38.merged
by Axa Mei Liauw at 2019-11-07 13:40:38.closed
by Axa Mei Liauw at 2019-11-07 13:40:39.head_ref_deleted
by Axa Mei Liauw at 2019-11-07 13:40:43.This was structured as an independent role given that I was assisting @cwulfman with the development of a Vagrant Box (and Playbook) for deploying PULFA 2.0.
https://github.com/pulibrary/princeton_ansible/issues/923 was the issue that this was also seeking to advance, but I completely understand the concerns regarding the testing of the Role. It's a simple task really - should I just duplicate this between the pulfa
and plantain
Playbooks @kayiwa and @hackmastera?
923 was the issue that this was also seeking to advance, but I completely understand the concerns regarding the testing of the Role. It's a simple task really - should I just duplicate this between the
pulfa
andplantain
Playbooks @kayiwa and @hackmastera?
I would personally put them as a task in pulfa
and plantain
instead of a playbook.
mentioned
by Cliff Wulfman at 2019-11-07 18:56:50.subscribed
by Cliff Wulfman at 2019-11-07 18:56:50.mentioned
by Francis Kayiwa at 2019-11-07 19:01:31.subscribed
by Francis Kayiwa at 2019-11-07 19:01:31.mentioned
by None at 2019-11-07 19:01:31.subscribed
by None at 2019-11-07 19:01:31.mentioned
by Francis Kayiwa at 2019-11-07 19:26:14.subscribed
by Francis Kayiwa at 2019-11-07 19:26:14.mentioned
by None at 2019-11-07 19:26:14.subscribed
by None at 2019-11-07 19:26:14.This should just duplicate Subversion checkouts between this new Role and that of plantain
(hence, https://github.com/pulibrary/princeton_ansible/pull/933 should remain closed).
review_requested
by Francis Kayiwa at 2019-11-07 12:38:51.head_ref_force_pushed
by Francis Kayiwa at 2019-11-07 12:41:08.head_ref_force_pushed
by Francis Kayiwa at 2019-11-07 14:57:41.head_ref_force_pushed
by Francis Kayiwa at 2019-11-07 20:48:12.@axamei this has been updated.
review_requested
by None at 2019-11-07 19:55:24.mentioned
by Axa Mei Liauw at 2019-11-07 19:58:41.subscribed
by Axa Mei Liauw at 2019-11-07 19:58:41.mentioned
by None at 2019-11-07 20:01:52.subscribed
by None at 2019-11-07 20:01:52.head_ref_force_pushed
by None at 2019-11-07 20:10:34.head_ref_force_pushed
by None at 2019-11-07 20:13:13.mentioned
by Axa Mei Liauw at 2019-11-07 20:48:39.subscribed
by Axa Mei Liauw at 2019-11-07 20:48:39.referenced
by Axa Mei Liauw at 2019-11-07 20:53:34.merged
by Axa Mei Liauw at 2019-11-07 20:53:34.closed
by Axa Mei Liauw at 2019-11-07 20:53:34.head_ref_deleted
by Axa Mei Liauw at 2019-11-07 20:53:39.review_requested
by None at 2019-11-07 20:55:56.review_requested
by Francis Kayiwa at 2019-11-07 22:11:55.review_requested
by Axa Mei Liauw at 2019-11-07 14:36:27.closed
by Axa Mei Liauw at 2019-11-07 21:16:21.Coverage remained the same at 99.285% when pulling d8e0f5da1d978a916f8916d13e4023ee42c09086 on dependabot/bundler/loofah-2.3.1 into b140632738ca57cb80ca1d821cf6faa3028a1083 on master.
labeled
by None at 2019-11-07 16:58:25.referenced
by None at 2019-11-07 14:22:55.merged
by None at 2019-11-07 14:22:55.closed
by None at 2019-11-07 14:22:55.head_ref_deleted
by None at 2019-11-07 14:23:01.Needs a cc all after the feature revert
referenced
by None at 2019-11-07 14:43:57.merged
by None at 2019-11-07 14:43:57.closed
by None at 2019-11-07 14:43:57.head_ref_deleted
by None at 2019-11-07 14:44:01.closed
by None at 2019-11-07 14:47:17.referenced
by None at 2019-11-07 14:47:17.merged
by None at 2019-11-07 14:47:17.closed
by None at 2019-11-07 14:47:17.head_ref_deleted
by None at 2019-11-07 14:47:22.closed
by None at 2019-11-07 14:48:08.review_requested
by Axa Mei Liauw at 2019-11-07 13:52:52.referenced
by None at 2019-11-07 14:48:08.merged
by None at 2019-11-07 14:48:08.closed
by None at 2019-11-07 14:48:09.head_ref_deleted
by None at 2019-11-07 14:48:12.review_requested
by Axa Mei Liauw at 2019-11-07 19:51:28.referenced
by None at 2019-11-07 20:11:30.merged
by None at 2019-11-07 20:11:30.closed
by None at 2019-11-07 20:11:30.assigned
by Axa Mei Liauw at 2019-11-07 14:15:48.closed
by None at 2019-11-07 20:11:30.


{% set page = { title: 'index', dev: true, secondary: true, html_classes: ['page-class'] } %} {% extends page.layout | d(prototype.current.layout) %} {% block primary %}
Patient's name
Joe bloggs
Because of the following condition(s)
Back pain
You are not able to work
This will be the case for
2 weeks
From
4 July 2016
To
18 July 2016
Doctor's address
The Grove Surgery
Thornhill Street
Wakefield
WF1 1PG


Device that writes to a file.
More...
#include </Users/howes/src/sidecar/IO/Writers.h>
|
|
| File () |
| | Constructor for new device.
|
| |
| ACE_FILE_IO & | getDevice () |
| | Obtain reference to ACE file device. More...
|
| |
| const ACE_FILE_IO & | getDevice () const |
| | Obtain reference to ACE file device. More...
|
| |
Device that writes to a file.
Definition at line 34 of file Writers.h.
| ACE_FILE_IO& SideCar::IO::WriterDevices::File::getDevice |
( |
| ) |
|
|
inline |
| const ACE_FILE_IO& SideCar::IO::WriterDevices::File::getDevice |
( |
| ) |
const |
|
inline |
Obtain reference to ACE file device.
- Returns
- file device
Definition at line 52 of file Writers.h.
| ssize_t SideCar::IO::WriterDevices::File::writeToDevice |
( |
const iovec * |
iov, |
|
|
int |
count |
|
) |
| |
|
inlineprotected |
Send data to the device.
- Parameters
-
| iov | address of first iovec structure to use |
| count | number of iovec structures to process |
- Returns
- number of bytes successfully written to device, or -1 if error
Definition at line 64 of file Writers.h.
The documentation for this class was generated from the following file:


The coffee plant is native to Ethiopia. Also in the 18th century people began growing coffee in Brazil. By the early 19th century coffee plantations in Brazil were booming. In the 20th century, a vast amount of coffee was grown in Uganda. During the Second World War coffee was rationed for a short time in the USA. Coffee rationing was introduced in November 1942 but it only lasted until July 1943. Today coffee is still one of the world's most popular drinks. Brazil is still the world's largest producer of coffee.
"Coffee is a hug in a mug"
Coffee supports happiness. People who consume coffee may simply have better underlying health than people who choose not to, says Peter Rogers, who studies the effects of caffeine on behaviour, mood, alertness and attention at the University of Bristol. That's in spite of their unhealthier lifestyle habits, as found in Gunter’s research. “Some people suggested there might be protective effect, which is somewhat controversial as it’s based on population evidence. Meanwhile, people who consume coffee regularly often have higher blood pressure, which should increase the risk of cardiovascular disease. But, Rogers says, there isn’t evidence that higher blood pressure from drinking coffee is associated with higher risk of cardiovascular disease. Clinical trials looking into coffee – which could better determine its benefits and risks – are rarer than population studies. But a group of researchers recently conducted a trial in which they observed the effects of drinking caffeinated coffee on blood sugar. The only thing coffee-drinkers need to be aware of, he says, is withdrawal. “Anyone who drinks a few cups of coffee a day is dependent on caffeine. If you took their coffee away, they’d be tired and would maybe have a headache. These symptoms depend on how much coffee the person was drinking, but they usually last between three days and a week, in which time, caffeine is the only thing that will alleviate them.


Match Play. Red leads 4-0 to 7. How should Red play 22?
pips Red=132 White=153
(CorrectAnswer= 0/0, ErrorScore= 0)
The pure play is bar/23, 13/11(2), 8/6 but being hit on his 5-pt may cost Red his racing lead and White’s home board is as strong as Red’s.
Leading in the match and with the cube already on 2 indicates a level of caution should be applied.
The correct move here is bar/23, 13/11(2), 5/3. For once discretion is the better part of valour. Everything else is a blunder.
Leading in the match and with the cube already on 2 indicates a level of caution should be applied.
The correct move here is bar/23, 13/11(2), 5/3. For once discretion is the better part of valour. Everything else is a blunder.
1. Cubeful 2-ply bar/23 13/11(2) 5/3 Eq.: +0.180 0.591 0.178 0.006 - 0.409 0.117 0.002 2. Cubeful 2-ply bar/23 15/13(2) 5/3 Eq.: +0.140 (-0.041) 0.577 0.154 0.004 - 0.423 0.122 0.002 3. Cubeful 2-ply bar/23 13/11(2) 8/6 Eq.: +0.111 (-0.069) 0.574 0.200 0.007 - 0.426 0.148 0.004 4. Cubeful 2-ply bar/23 8/6 5/1* Eq.: +0.109 (-0.071) 0.572 0.178 0.004 - 0.428 0.145 0.004 5. Cubeful 2-ply bar/23 15/13 8/6 5/3 Eq.: +0.092 (-0.088) 0.564 0.188 0.007 - 0.436 0.144 0.004


STARK555
STARK555 is the smartest.
We love PUBG
PlayerUnknown's Battlegrounds is an online multiplayer battle royale game developed and published by PUBG Corporation, a subsidiary of South Korean video game company Bluehole.
STARK555
STARK555 is the smartest.
RockBhaskarRB
RockBhaskarRB is the Fab.
X3KING3X
X3KING3X is the funniest.


You have met the conditions for using the Apply for a
Family Law Protection Order service.
You will need a BCeID account to access this service. This is an online "ID" and password
that enables you to securely access multiple online government services.
You need a Basic BCeID to use this service. Once you have registered,
you will be taken back to this website.
Register
If you already have a Basic BCeID or Personal BCeID,
then you can login now.
Login


First here are some fun general facts on getting your mood better!
Smile. It’s cheesy, but apparently it’s true: The act of smiling really can turn a frown upside down.
Drastically shorten your debugging time
Jump around. Get happy-making endorphins pumping fast with some jumping jacks, jump rope, or random flailing around (hey, no judgment here) .
Sniff certain scents. Inhaling the scent of orange (or essential orange oil) or lavender can reduce anxiety and improve mood.
Spend WAY more time planning not glued on your screen!
Chew gum. The repetitive action of gnawing on gum can promote relaxation and reduce anxiety and stress .
Increase code reviews and code quality
Ogle (or buy) some flowers. Studies find flowers provide an instant—and lasting—mood boost. Bonus: they can also make us more productive.
Eat some chocolate.As if we needed a reason other than delicious.Eating chocolate can make us feel happy
Manage Your Time
sleep!
Don't chase your tail. The very minute you realize that nothing you're doing is working--stop working. Stop thinking. Go out. Walk around
Count your blessings. Think about or write down what you’re thankful for. Even if there’s not time to write down everything, expressing gratitude creates an instant mood boost.
Achieve a goal. Even small successes can have big mood payoffs. Toss a crumpled ball of paper into the trash can Michael Jordan style, win a game of Solitaire, pick up a pencil off the floor using only your toes—in moments you’ll be basking in the glory of accomplishment.


Add footnote label to any wordwithin a footnote. No footnote text is replacedor styled. Labels Code # Text Style Colour ↷ Figure 1 Early human migration route out of Africa References Code # Text Style Colour ↷ the line in figure 1 represents the path of human