class: center, middle, inverse, title-slide # Lecture 01 ## Introduction to Environmental Economics ### Ivan Rudik ### AEM 4510 --- exclude: true ```r if (!require("pacman")) install.packages("pacman") ``` ``` ## Loading required package: pacman ``` ```r pacman::p_load( tidyverse, xaringanExtra, rlang, patchwork, nycflights13, tweetrmd, vembedr ) options(htmltools.dir.version = FALSE) knitr::opts_hooks$set(fig.callout = function(options) { if (options$fig.callout) { options$echo <- FALSE } knitr::opts_chunk$set(echo = TRUE, fig.align="center") options }) ``` ``` ## Warning: 'xaringanExtra::style_panelset' is deprecated. ## Use 'style_panelset_tabs' instead. ## See help("Deprecated") ``` ``` ## Warning in style_panelset_tabs(...): The arguments to `syle_panelset()` changed in xaringanExtra 0.1.0. Please refer to the documentation to update your slides. ``` --- # Roadmap - What is environmental economics? - What are the goals for this class? - Microeconomics recap --- class: inverse, center, middle name: what_is_enviro # What is environmental economics?

 --- # What's enviro econ? First, what is economics? -- .hi[Economics:] the study of how agents (people, firms, etc) make choices with scarce resources and the social results of these choices -- Everything is scarce compared to wants and needs -- We need to choose among alternatives and make trade offs -- These ideas can be applied to the environment --- # What is enviro econ? .hi[Environmental Economics:] the application of economics to the study of the environment as a resource or good -- Environmental economics helps us understand things like: -- The value of mitigating pollution -- How agents will response to climate change policies -- Whether investment tax credits for wind power are cost-effective --- # Air pollution is bad    --- # How do people respond to info? .pull-left[ ![](01-slides-intro_files/figure-html/sequoia-tweet-1.png) ] .pull-right[ Places provide info to help people avoid air pollution Does it work? How well? ] --- # Climate change    --- # Climate change ```{=html} <div class="vembedr" align="center"> <div> <iframe src="https://www.youtube.com/embed/c8vLVrxWIpg" width="533" height="300" frameborder="0" allowfullscreen=""></iframe> </div> </div> ``` --- # Climate change Why do economists care about climate change? -- It affects the economy and how we have to allocate resources! How? -- - Production -- - Learning -- - Leisure -- - Fishing -- - etc, etc --- # Climate change: heat hurts learning    Park et al. (2020) --- # Climate change: heat hurts economic growth    Lyn et al. (2020) --- # Climate change: extreme heat/cold increases mortality    Carleton et al. (2020) --- # What is enviro econ? .pull-left[ Environmental economics is actually pretty new Spurred by .hi[John Krutilla] in the 1950s His paper .green[Conservation Reconsidered] is the landmark paper in the field (sort of like Wealth of Nations and economics as a whole) ] .pull-right[ ![John Krutilla](files/01-krutilla.jpg) ] --- class: inverse, center, middle name: goals # What are the goals of this class?

 --- # What are the goals of this class? Enhance your understanding of how economists think about solving real environmental problems -- Prepare you for after college: - Industry jobs (energy, transportation, finance) - Public sector and NGOs (EPA, DOE, RFF, Brookings, Federal Reserve) - Graduate programs -- Learn both the theory and .hi[applications] of environmental economics --- class: inverse, center, middle name: micro_recap # Microeconomics recap

 --- # Micro recap Is Intro to Micro applicable everywhere? -- ```{=html} <div class="vembedr" align="center"> <div> <iframe src="https://www.youtube.com/embed/9qjvwQrZmpk" width="533" height="300" frameborder="0" allowfullscreen=""></iframe> </div> </div> ``` --- # Creating markets to solve problems How do we solve some problems in practice? -- ```{=html} <div class="vembedr" align="center"> <div> <iframe src="https://www.youtube.com/embed/QwgximJ9vPk" width="533" height="300" frameborder="0" allowfullscreen=""></iframe> </div> </div> ``` --- # Micro recap: terminology .hi[Market:] -- a decentralized collection of all actual and potential buyers and sellers whose interactions determine the allocation and price of a good or service through exchange -- .hi[Demand curve:] -- A schedule or graph showing the quantity of a good that buyers wish to buy at each price; it gives us the marginal willingness to pay or the marginal benefit -- .hi[Supply curve:] -- A schedule or graph showing the quantity of a good that sellers wish to sell at each price; it gives us the marginal willingness to accept or the marginal cost --- # Market demand .pull-left[ ![Demand curve](01-slides-intro_files/figure-html/demand-1.png) ] .pull-right[ Market demand is aggregated from all individual demand curves ] --- # Market demand .pull-left[ ![Demand curve](01-slides-intro_files/figure-html/demand-1.png) ] .pull-right[ Market demand is aggregated from all individual demand curves .hi-blue[Horizontal interpretation:] if buyers face a price of $10/lobster they will want to purchase 20 million ] --- # Market demand .pull-left[ ![Demand curve](01-slides-intro_files/figure-html/demand-1.png) ] .pull-right[ Market demand is aggregated from all individual demand curves .hi-blue[Horizontal interpretation:] if buyers face a price of $10/lobster they will want to purchase 20 million .hi-blue[Vertical interpretation:] if buyers are buying 20 million lobsters, the marginal buyer is willing to pay at most $10 ] --- # Market demand slopes down Why do demand curves slope down? -- As the price of a good increases, people switch to other, similar goods -- This is the .hi-red[substitution effect]: if the price of Coke goes up, people buy more Pepsi -- As the price of a good increases, they can't afford as much of it: purchasing power goes down -- This is the .hi-blue[income effect]: if the price of pizza goes up, we have a lower real budget --- # Market supply .pull-left[ ![Supply curve](01-slides-intro_files/figure-html/supply-1.png) ] .pull-right[ Market supply is aggregated from all individual supply/MC curves ] --- # Market supply .pull-left[ ![Supply curve](01-slides-intro_files/figure-html/supply-1.png) ] .pull-right[ Market supply is aggregated from all individual supply/MC curves .hi-blue[Horizontal interpretation:] if sellers face a price of $15/lobster they will want to sell 20 million ] --- # Market supply .pull-left[ ![Supply curve](01-slides-intro_files/figure-html/supply-1.png) ] .pull-right[ Market supply is aggregated from all individual supply/MC curves .hi-blue[Horizontal interpretation:] if sellers face a price of $15/lobster they will want to sell 20 million .hi-blue[Vertical interpretation:] if sellers are selling 20 million lobsters, the marginal cost of the last lobster is $15 ] --- # Market supply slopes up Why do supply curves slope up? -- If we produce more of a good, we choose the lowest (opportunity) cost production processes first, higher cost production processes later -- Marginal costs go up as production goes up `\(\rightarrow\)` producers need higher prices in order to produce more goods --- # Market equilibrium .pull-left[ ![Market equilibrium is where D=S](01-slides-intro_files/figure-html/equilibrium-1.png) ] .pull-right[ A market equilibrium is a price/quantity pair where the demand curve crosses the supply curve ] --- # Market equilibrium .pull-left[ ![Market equilibrium is where D=S](01-slides-intro_files/figure-html/equilibrium-1.png) ] .pull-right[ A market equilibrium is a price/quantity pair where the demand curve crosses the supply curve This gives us the price where the quantity demanded exactly equals the quantity supplied: no shortages, no surpluses ] --- # Market equilibrium .pull-left[ ![CS is area below demand, above price](01-slides-intro_files/figure-html/cs-1.png) ] .pull-right[ .hi-red[Consumer surplus] is the difference between willingness to pay (demand) and price .hi-blue[Producer surplus] is the difference between price and marginal cost (supply) .hi[Total surplus] is the sum of CS and PS ] --- # Efficiency We have two notions of efficiency: 1. A .hi[socially optimal quantity] is the quantity of the good the maximizes total surplus -- 2. An allocation is .hi[Pareto efficient] if there's no way to change things to make at least one person strictly better off, without making at least one person strictly worse off -- If you can make one person better off without making anyone else worse off its called a .hi-blue[Pareto improvement] --- # Are markets efficient? Are (competitive) markets efficient? -- Under some assumptions, yes: the .hi[First Welfare Theorem] tells us that any competitive equilibrium is Pareto efficient -- Under these assumptions competitive markets also maximize social welfare -- .hi-red[Main takeaway]: markets are often a nice way to allocate scarce resources --- # Under what assumptions are markets efficient? What are the underlying assumptions for market efficiency? 1. Perfect competition 2. Perfect information 3. Complete markets (minimal transactions costs) 4. .hi-red[No externalities] -- .hi-red[Externalities] are when an economic transaction imposes a cost or benefit on a third party -- They drive a wedge between private and social marginal cost, or private and social marginal benefit --- # The key departures in environmental economics In enviro econ, the key departure from the standard perfect market is the introduction of externalities and non-rival and non-excludable goods: -- .hi-red[Non-rival]: additional people can get the benefits of consuming the same unit of the good at no extra cost to others -- .hi-blue[Non-excludable]: extra individuals can't be precluded from consuming the good -- | | **Excludable** | **Non-Excludable** | |----------- |:---------------------------: |:------------------------------------: | |**Rival** | Private goods (food) | Common-pool resources (fish, timber) | | **Non-rival** | Club goods (parks, netflix) | Public goods (air, national defense) | --- # Imperfect information We will also discuss .hi[imperfect information]: when economic actors are uncertainty about the prices or quality of a good -- If there's imperfect information then efficiency may not be achieved -- Why? -- Without the adequate information, buyers or sellers cannot make the choices in their best interest --- # Efficiency and equity The First Welfare Theorem guarantees competitive markets give (Pareto) efficient allocations -- It does not guarantee that these allocations are desirable, any examples? -- E.g. -- - If Elon Musk held **all** the wealth in the world, that would be a Pareto efficient outcome even though it goes against basically all people's notions of equity -- - Perfect price discrimination is also Pareto efficient: producers capture all the surplus but it is maximized --- # Ecological wealth ```{=html} <div class="vembedr" align="center"> <div> <iframe src="https://www.youtube.com/embed/1yzmOrcLIPo" width="533" height="300" frameborder="0" allowfullscreen=""></iframe> </div> </div> ```


Open Fortify Perspective and Findings
In this example we have a project with a simple, vulnerable, application.
Analyze the project by going to HP Fortify->Analyze Project
or
Open an already saved analysis by going to HP Fortify -> Load Saved Audit Project or HP Fortify -> Open Audit Project
This brings up the Fortify Audit perspective
As you can see TEAM Mentor guidance is automatically displayed whenever a Fortify finding is selected in the SCA Analysis Results view.


| is_copyable {rlang} | R Documentation |
When an object is modified, R generally copies it (sometimes
lazily) to enforce value semantics.
However, some internal types are uncopyable. If you try to copy
them, either with <-
or by argument passing, you actually create
references to the original object rather than actual
copies. Modifying these references can thus have far reaching side
effects.
is_copyable(x)
x |
An object to test. |
# Let's add attributes with structure() to uncopyable types. Since # they are not copied, the attributes are changed in place: env <- env() structure(env, foo = "bar") env # These objects that can only be changed with side effect are not # copyable: is_copyable(env) structure(base::list, foo = "bar") str(base::list)


PULP FICTION A film review by Ben Hoffman Copyright 1994 Ben Hoffman
The film begins and ends with Honey Bunny (Amanda Plummer) and her guy, Pumpkin (Tim Roth), a couple of petty thieves who, after mulling over the risks of holding up various and sundry types of retail business and banks hit upon the bright idea of robbing the very restaurant in which they are having breakfast. Think of all the wallets. Thus begins the film which encompasses and interlaces three stories of small-time crooks in a send up of movies about that gangsters. There are more laughs than killings but with plenty of each.
Marsellus Wallace, (Ving Rhames), the boss, has instructed Vincent Vega (John Travolta) to watch over his wife, Mia (Uma Thurman), while he is away on business. The last goon to have baby-sat Mia ended up dead so Vincent is less than thrilled with his assignment. Before that is over, Vincent goes through a deadly series of frantic events which for us, the audience, are hilarious.
Elsewhere, there is Butch Coolidge (Bruce Willis), an upcoming prizefighter being instructed to take a fall in his next fight. Willis, it should be noted, is becoming more and more believable as an actor. In Pulp Fiction, he outdoes himself. In this segment he is helped by Captain Koons (Christopher Walken) who, with a straight face, relates to Butch (as a child) the very weird story of how the captain came into possession of a pocket watch which he is turning over to Coolidge. Fabienne (Maria De Medeiros) is Butch's girlfriend.
There is still another story that threads its way through the film. This one involves Vincent and Jules (Samuel L Jackson). While Travolta is perfect as the crook who seems to get into all kinds of trouble without looking for them, it is Jackson who runs away with the film. Last seen in FRESH, here he really takes over as the Bible-quoting criminal who suddenly sees the Hand of God and wants out.
Harvey Keitel excels as Wolf in a short but very funny bit. Eric Stoltz is the drug dealer and Rosanna Arquette is his wife.
While each of the stories is of the silly kind and what happens now crisscrosses with what happened earlier, it all adds up to a most enjoyable movie.
Written and Directed by Quentin Tarantino.
3 Bytes 4 Bytes = Absolutely must see. 3 Bytes = Too good to be missed. 2 Bytes = So so. 1 Byte = Save your money.
Ben Hoffman
.
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


Document the firewall configuration. Keep the firewall configuration documentation up-to-date.
Documenting the firewall configuration is important for maintenance and security purposes. Good firewall documentation makes the PCI DSS compliance certification process simpler and may be required to pass. Documentation is also very useful when making changes to the configuration and when hiring new staff.
Inspect each firewall and document each configuration setting thoroughly. Delegate responsibility for maintaining network documentation up to date to a staff member.


The Athens Farmers Market Farmer for a Day Program is an opportunity for people to get hands-on experience working at a local farm for a day. The program was the idea of Ed Perkins, president of the Athens Farmers Market executive committee and owner of Sassafras Farm, 10940 Lightfritz Ridge Road, New Marshfield.
“(Farmer for a Day was) just a way to learn and experience a wide range of farms in this area,” Perkins said.
Adam Blaney removes frost-stricken cabbages from the greenhouse on his farm in Albany, Ohio, on March 2, 2020.
Sassafras Farms grows herbs, vegetables and small fruits year-round. Each day at the farm is different. Farmers for a day would join Perkins in a variety of activities –– from weeding to transplanting to harvesting and market preparation.
The program is going on its third year. It’s been a way for students who are interested in farming to see what it’s like, Perkins said. Though there have been participants, Perkins wishes more people would take advantage of the program.
“We want more people to participate,” Perkins said. “It’s a way for us farmers to connect to the community.”
Perkins added that Farmer for a Day has a wide range of participating farms.
“If somebody is interested in farming, they could get a wide variety of experience,” Perkins said. “(There’s) all sorts of things: orchards, apples, peaches and pruning; chickens and collecting eggs, herb growers, picking herbs. There's a maple syrup farm, too.”
Blaney Family Farm, 29760 State Route 143, Albany, is a vegetable farm that participates in the Farmer for a Day program.
Adam Blaney, of Blaney Family Farm, said his farm wouldn’t really exist without volunteering. He didn’t grow up gardening, but he fell in love with the agricultural lifestyle after a volunteering experience in West Virginia.
Adam Blaney plays with his dog, on his farm in Albany, Ohio, on March 2, 2020.
Blaney Family Farm is a newcomer to the Athens Farmers Market. This past February marked its one-year anniversary. Blaney Family Farm had a successful first year, Blaney said.
Blaney Family Farm is built on the idea of farms being a part of the local economy. The farm is a member of Community Supported Agriculture, a method for purchasing products directly from farmers.
“Our goal is to build community through local agriculture,” Blaney said. “Everything we do, we want to do through (the) local community. To us, a farm is a great place for which a community can be built around.”
Blaney stressed that a “local mindset” is very important for Blaney Family Farm. Blaney said buying produce from him puts shoes on his children’s feet –– rather than outsourced produce from a corporate grocery store.
Blaney Family Farm provides lettuce and greens to local businesses like Kindred Market, 284 E. State St., and the Lake Hope Lodge, 27331 OH-278, McArthur.
Like Sassafras Farm, tasks for each day at Blaney’s farm varies. But one thing’s for sure: participants can expect to be treated like family for a day at Blaney Family Farm.

Participation in Farmer for a Day has led to internships and job opportunities, Becky Clark, promotions director for the Athens Farmers Market, said. In fact, most farmers are happy to have visitors.
“Most (farmers) are willing and excited to show people around,” Clark said.
For Clark, Farmer for a Day is a way for people to get outside of Athens and see how people are making a living out of food and farming.
“Farming is cool,” Clark said. “It connects people more with (their) local food system.”
“It’s a way for us farmers to connect to the community.”- Ed Perkins, president of the Athens Farmers Market executive committee and owner and operator of Sassafras Farm
A list of Farmer for a Day hosts can be found online. The list is not entirely up to date, as Blaney Family Farm has not yet been added. Contact the Athens Farmers Market for full information.
The Athens Farmers Market sets up on Wednesdays and Saturdays, 9 a.m. to 1 p.m. and 9 a.m. to noon, respectively, at the East State Street Mall, 1000 E. State St. Currently, vendors are set up both inside and outside the mall. The market is year-round.


⬢
Constituency Name
% of 2017 Labour Vote
Labour 2017: 0%
Labour 2019: 0%
% of 2017 Labour Vote
Labour 2017: 0%
Labour 2019: 0%


Sweet Free Stuff
///////////////////////////////////////////
Free Pack of Sunstar GUM Crayola Kids Flossers (Refer 5 Friends)
Posted: 07 Aug 2014 11:18 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Enter their giveaway on Facebook and refer 5 friends for a Free Pack of
Sunstar GUM Crayola Kids Flossers. Ends 8/11.
The post Free Pack of Sunstar GUM Crayola Kids Flossers (Refer 5 Friends)
appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Jar of Simple Truth Peanut Butter at Ralphs
Posted: 07 Aug 2014 11:00 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Jar of Simple Truth Peanut Butter at Ralphs - expires 8/11
The post Free Jar of Simple Truth Peanut Butter at Ralphs appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Field & Stream
Posted: 07 Aug 2014 09:30 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
The post Free Subscription to Field Stream appeared first on
SweetFreeStuff.com.
CommentsGotta love free stuff. by Michael SharpLove to try it by Jamie
ThompsonI would like a free subscription of F and S by Sharon Anton
///////////////////////////////////////////
Free Rachael Ray Nutrish for Cats Sample
Posted: 07 Aug 2014 08:01 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Rachael Ray Nutrish for Cats Sample
The post Free Rachael Ray Nutrish for Cats Sample appeared first on
SweetFreeStuff.com.
CommentsI would like samples…love the dog food by Leona DuffieLove this!
Got my sample last week and my cat loved it!! by AmandaMe too Janet by
JaniceI would really love to try this for my furbabies,but I never … by
JaniceI cat wait by Malcolm RobeyPlus 10 more…
///////////////////////////////////////////
Free Sample of Schiff Move Free Ultra Omega
Posted: 07 Aug 2014 05:00 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Move Free Ultra® Omega is powered by Omega 3s in 1 smaller pill instead of
2 large Glucosamine and Chondroitin tablets. Like their Facebook page to
request a free sample of Schiff Move Free Ultra Omega.
The post Free Sample of Schiff Move Free Ultra Omega appeared first on
SweetFreeStuff.com.
CommentsI would like to try this product, thanks by Thomas
///////////////////////////////////////////
Free Subscription to Popular Photography Magazine
Posted: 07 Aug 2014 04:53 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
The post Free Subscription to Popular Photography Magazine appeared first
on SweetFreeStuff.com.
///////////////////////////////////////////
Free Front Screen Protector Film for iPhone
Posted: 07 Aug 2014 04:34 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
For iPhone 5, 5c, 5s. For new customers only. Free Front Screen Protector
Film for iPhone
The post Free Front Screen Protector Film for iPhone appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
2 Free Vital4U Energy Pouches
Posted: 06 Aug 2014 11:56 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
2 Free Vital4U Energy Pouches
The post 2 Free Vital4U Energy Pouches appeared first on SweetFreeStuff.com.
CommentsI get tired of receiving notifications of these free items and …
by DeniseI send the form for a free sample ,but the form came back,and …
by Tammie Weaver
///////////////////////////////////////////
Free Sprayground Stickers
Posted: 06 Aug 2014 04:51 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Sprayground Stickers
The post Free Sprayground Stickers appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Tena Trial Kit
Posted: 06 Aug 2014 01:56 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Tena Trial Kit - Click on Get a Free Trial Kit
The post Free Tena Trial Kit appeared first on SweetFreeStuff.com.


The power is in your hands to stay healthy
Lets us guide you through the thousands of tastes and experience healthy dishes something you never ate before.
Stay healthy eating better!
Discover
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Maiores incidunt voluptatem officia quasi nihil fugiat odio voluptates aperiam Lorem ipsum, dolor sit amet consectetur adipisicing elit. Maiores incidunt voluptatem officia quasi nihil fugiat odio voluptates aperiam
Birmingham UK
1 Park Road
B64 9DF Kings Street.
call directly
Lunch Service
Monday to Saturday: 12pm - 15.30pm.
Sunday & Bank Holidays: 12pm - 21.30pm.
Dinner Service
Monday to Saturday: 17pm - 22.30pm.
Sunday & Bank Holidays: 12pm - 21.30pm.


About Me
Hi there! My name is Anthony and this is my portfolio. It showcases some of my work from the past 3 months.
Before I got into coding I was working as a field engineer for Halliburton. I think my engineering background really helps me out as I already have the engineering mindset that is required for coding. I also have a creative personality and like to explore new ideas.


|
PLATFORMER_BERRY_NINJA
|
This class represents the Lives component that tracks the number of remaining lives for the character during the game. More...
#include <LivesComponent.hpp>
Public Member Functions | |
| LivesComponent (GameObject *game_object, TTF_Font *lives_font, SDL_Texture *texture) | |
| void | Init () override |
| Initialises the lives component with required textures to render on the screen. More... | |
| void | Update (SDL_Event &event) override |
| This method updates component based on any user based events. More... | |
| void | ProcessUpdate (float delta_time) override |
| This method is used to perform per-frame updates to the lives component. More... | |
| void | Render (SDL_Renderer *renderer) override |
| This method renders the component every frame. More... | |
| ComponentCardinality | GetComponentCardinality () override |
| Getter method to get the cardinality for the component. More... | |
| ComponentType | GetComponentType () override |
| Getter method to retrieve the type of component. More... | |
| void | UpdateLives (int lives) |
| Updates the current remaining lives of the player to the amount specified by the argument. More... | |
| ~LivesComponent () | |
| Destructor of the lives component. More... | |
| Public Member Functions inherited from Component | |
| Component (GameObject *game_object) | |
| The base constructor for Component. More... | |
| virtual GameObject * | GetGameObject () |
| Getter method to get a pointer to the game object to which this component is attached. More... | |
| virtual void | DisableComponent () |
| Use this method to set the disabled status for a component. Calling this method will temporarily disable all functionality of the component. More... | |
| virtual void | EnableComponent () |
| Use this method to set the disabled status for a component. Calling this method will re-enable all the all functionality of the component. More... | |
| ~Component () | |
Additional Inherited Members | |
| Public Attributes inherited from Component | |
| GameObject * | game_object |
| Protected Attributes inherited from Component | |
| bool | disabled = false |
This class represents the Lives component that tracks the number of remaining lives for the character during the game.
This component is responsible for tracking the remaining lives of the player during a game iteration. It is also responsible for rendering the lives count on the screen.
|
explicit |
Constructor to construct the lives component to be used by the character object.
| game_object | Main character game object. |
| lives_font | Font texture of the lives that is rendered on the screen. |
| texture | Lives(Heart) texture that is rendered on the screen. |
| LivesComponent::~LivesComponent | ( | ) |
Destructor of the lives component.
|
overridevirtual |
Getter method to get the cardinality for the component.
Reimplemented from Component.
|
overridevirtual |
Getter method to retrieve the type of component.
Reimplemented from Component.
|
overridevirtual |
Initialises the lives component with required textures to render on the screen.
Initialises the lives component with required textures to render on the screen. The number of lives is initially set to three.
Reimplemented from Component.
|
overridevirtual |
This method is used to perform per-frame updates to the lives component.
This method is overridden.
| delta_time | The time passed between two frames. |
Reimplemented from Component.
|
overridevirtual |
This method renders the component every frame.
| renderer | The renderer that is actually used to draw objects on screen. |
Reimplemented from Component.
|
overridevirtual |
This method updates component based on any user based events.
| event | The event initiated by the user. |
Reimplemented from Component.
| void LivesComponent::UpdateLives | ( | int | lives | ) |
Updates the current remaining lives of the player to the amount specified by the argument.
| lives | Value of the number of lives that is updated to. |


It's about time for a rant article about Deutsche Bahn (DB). DB is the company with the monopoly for public transportation by train.
My key complaints are:
- DB is unreliable
- DB is expensive
- DB is not flexible
On top of that, there are some other complains:
- Information mismanagement
- They are lying about being late
- Information about past delays are not publicly available.
- Comfort: Trains are super crowded. It is impossible in such a crowded train to read or to work.
Notes from the past
- 2019-02-04
- 08:25: Meridian, Abfahrt 8:20, 10 min später
- 08:29: S7, Anfahrt 8:26, 5 min später
- 08:30: Meridian 15 min später
- 08:31: S7 arrived
- 2019-02-06
- 07:52 Uhr: S20 voraussichtlich 5 min später
- 07:54 Uhr: Abfahrt 7:51, um 7:53 sagen sie eine Verspätung um 5 min an
- 2019-02-07 17:31: S7, Abfahrt 17:25: Weiterfahrt verzögert sich um unbestimmte Zeit.
- 2019-02-11:
- 07:50 Uhr: S20 - "Problem at train crossing: On the route München-Pasing - Geltendorf between München-Aubing and Puchheim. There are delays in both directions in the commuter rail transport of the Deutsche Bahn"
- 07:55 Uhr: S20 fällt aus (info nur in der App, keine Info am Bahnsteig)
- 08:47 Uhr: Ich bin in Höllriegelskreuth. 36 minutes delay.
- 17:05 Uhr: S20 fällt aus (App), no information at the station. Train is still shown on the terminal.
- 17:37 Uhr: One additional change of train. 5 minutes delay, but only because I know this happens all the time. If I stayed at the station, I would have 30+ minutes delay.
- 2019-02-12:
- 07:51: S20 is on time
- 2019-02-14:
- 07:29: S20 got cancelled
- 07:57: S3 is 3 minutes delayed
- 08:01: S7 is 4 minutes delayed at Donnersberger Brücke
- 2019-02-18:
- 07:54 Uhr: S20 is 3 minutes delayed
- 2019-02-19:
- 07:51 Uhr: S20 is on time
- 2019-02-20:
- 07:51 Uhr: S20 is on time
- 17:57 Uhr: S7, Abfahrt and arrival at 19:00 at home (delay: 34 min) *
Contradicting Information
Please have a look at the "last update" in the following:
That's why I feel they screw with me. They pretend that they were sending consistent messages, when they are not.
My Delays
I am commuting roughly an 19km distance within Munich. I start roughly at Pasing. Most of my commute is through the "Stammstrecke", the main route within Munich. Here are some of my delays.
- 2019-02-07, 17:29: Expected arrival at 18:06. Real arrival at 19:22. A delay of 1h 16min.
 But about 87.5% of the rails are managed by DB Netz and DB Regio is by far the biggest provider. DB Regio is also responsible for S-Bahn München
MVG is responsible for underground, trams and busses.
The Bayerische Eisenbahngesellschaft seems to be responsible for the train network within Bavaria. Hence Hans Reichhart (CSV) is responsible.


Weather Interactions¶
-
delphin_6_automation.database_interactions.weather_interactions.
assign_indoor_climate_to_project
(delphin_id: str, climate_class: str) → str[source]¶ Assign indoor climate class to a Delphin entry
Parameters: - delphin_id – Database ID
- climate_class – Climate class can be either a or b
Returns: Database ID
-
delphin_6_automation.database_interactions.weather_interactions.
assign_weather_by_name_and_years
(delphin_id: str, weather_station_name: str, years: list) → str[source]¶ Assigns weather and years to a Delphin project in the database
-
delphin_6_automation.database_interactions.weather_interactions.
assign_weather_to_project
(delphin_id: str, weather_documents: list) → str[source]¶ Assign weather to a Delphin entry
Parameters: - delphin_id – Delphin document database.rst ID
- weather_documents – List with weather entries
Returns: Database ID
-
delphin_6_automation.database_interactions.weather_interactions.
change_weather_file_location
(delphin_document: delphin_6_automation.database_interactions.db_templates.delphin_entry.Delphin)[source]¶ Change the file location for the weather files in a Delphin project
-
delphin_6_automation.database_interactions.weather_interactions.
concatenate_weather
(delphin_document: delphin_6_automation.database_interactions.db_templates.delphin_entry.Delphin) → dict[source]¶ Concatenate weather documents together from a Delphin project in the database
-
delphin_6_automation.database_interactions.weather_interactions.
download_weather
(delphin_document: delphin_6_automation.database_interactions.db_templates.delphin_entry.Delphin, folder: str) → bool[source]¶ Download the weather associated with a Delphin project in the database


TOY STORY A film review by Steve Rhodes Copyright 1995 Steve Rhodes
RATING (0 TO ****): ****
TOY STORY is an absolutely wonderful movie for both kids and adults. It stretches your mind creatively to look at inanimate objects with a new respect, and it dazzles your senses with a wonderful new art form, the full length computer generated movie that is a cross between a Disney cartoon and a live action film. Moreover, in a year with some quite imaginative kids movies (THE INDIAN IN THE CUPBOARD and THE SECRET OF ROAN INISH being the second and third best of 1995), this one stands head and shoulders above all of the rest.
TOY STORY has some good voices: Tim Allen as Buzz Lightyear, Tom Hanks as Woody, Laurie Metcalf as Mrs. Davis, John Morris as Andy, Annie Potts as Bo Peep, John Ratzenberger as Hamm, Don Rickles as Mr. Potato Head, Wallace Shawn as Rex, Jim Varney as Slinky and Erik Von Detten as Sid, but the voices are not what make the show as in some animated movies, e. g., Robin William in ALADDIN. TOY STORY is special because of the story itself and because of the computer generated animation that is nothing less than phenomenal. The computer work stands alone as a major new contribution to the magic of movies. Yes, this has been done before perhaps, but not to this scale and degree of sophistication. Pixar (and Disney) have a major hit on their hands. I look forward to many more magical pictures from this creative team.
As the story unfolds we find the toys in Andy's room having their morning staff meeting chaired by their leader Woody. Woody holds this elevated position by virtue of being Andy's favorite toy. Woody announces that, "Tuesday's plastic corrosion awareness meeting was a big success." The staff meeting is broken up by Andy's birthday party. The tension surrounds what toys Andy will get. Although Mr. Potato Head is hoping for a Mrs. Potato Head, most toys are dreading the event.
Woody sends out toy soldiers with a Fisher Price monitor to bug Andy's party. The walk of the toy soldiers is great. They have to shuffle along. Remember that cheap toy soldiers have their feet stuck on a single strip of plastic which makes sneaking up on the enemy extremely difficult. The old toys wait in Andy's room listening to the monitor with the dread that people listened to reports of World War II on their radios. This could mean their demise too, and as Hamm, the piggy bank, puts it, "Yes sir, we're next month's garage sale fodder for sure."
It is at the birthday party that Andy gets Buzz Lightyear. Unlike the other toys, poor Buzz thinks he actually is a spaceman. He keeps communicating with his command center since he is afterall on a critical intergalactic mission. The toys fall in love with him, and Woody drops out of favor with Andy. Woody laments, "What chance does a toy like me have against a Buzz Lightyear action figure?" The majority of the movie is about the conflicts between Woody and Buzz.
There are excellent lessons taught to kids along the way.  Sid has a room full of "cannibal toys". Whether or not Sid will get Woody and Buzz and then blow them to smithereens is the other highlight of the show. I will not give any of this away. The ending is perfect too. See it all yourself.
The toys are hyper-realistic, but the people in the movie are drawn more cartoon characterish. My wife, Sally, said that she thought this was to make the point that it is the toys in the story that are real more than the people. I suspect she is right. The colors of the toys have a luminescence that I have not seen before on the screen. The accuracy of the toys is reminiscent of the Vermeer and the other great Dutch painters of the seventeenth century, absolute devotion to the small details and to lighting effects. The toys in the good boy, Andy's, room are perfect, but the ones in the evil Sid's room are pure THE NIGHTMARE BEFORE CHRISTMAS style.
The wonderful script (Joel Cohen, John Lasseter, Alex Sokolow, Andrew Stanton, and Joss Whedon) uses dialog to make the toys come alive and yet be extremely funny. Rex, the dinosaur, introduces himself to Buzz saying, "I'm from Mattel. Well, actually I'm from a smaller company that was purchased by Mattel in a leveraged buyout." I hope the writers win a lot of awards.
TOY STORY runs a fast and extremely well paced 1:17. I posit no one will get bored during this movie. It is rated G but I should warn people that young viewers may get scared by Sid and his toys. This is not overdone, but I did hear several very young (age 2?) kids screaming at the top of their lungs at a couple of spots in the show. Jeffrey (6 1/2) and his friends Allison (6 1/2) and Josh (4) went. They gave it double thumbs up. Luckily our two families had more laps than kids so that when the scary scenes came, all kids had a place to go. Perhaps you should check your kid to lap ratio before you go. Jeffrey gets angry at shows that scare him, but not this one. He took it in stride as part of the movie going experience. His version of revisionist history, by the way, claims that he actually gave the movie six thumbs up rather than just two. I give the movie my strongest recommendation and award it a full ****.
**** = One of the top few films of this or any year. A must see film. *** = Excellent show. Look for it. ** = Average movie. Kind of enjoyable. * = Poor show.  Totally unbearable.
REVIEW WRITTEN ON: November 27, 1995
Opinions expressed are mine and not meant to reflect my employer's.
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


Endless Plains [an74], plain, in Imperia, peasants: 164
Last updated Turn #146
Endless Plains [an74], plain, in Imperia, peasants: 164
------------------------------------------------------------------------
0: Garrison [jl7n], garrison, Imperial Empire, with ten peasants guards
0: Endless Plains [an74].
19: Arthur the Great [h3y], Imperial Empire, priest of the Church of
19: Halon [157], with 71 nazgul, arrived from the east.
20: Arthur the Great [h3y], Imperial Empire, priest of the Church of
20: Halon [157], with 71 nazgul, went west.
30: The population grows by one peasant.
Province controlled by Hyksos Keep [y57], castle, in Imperial
Mountains [ao73]
Ruled by The Bard [s2a], duke
Entrance fees:
Routes leaving Endless Plains:
North, plain, to Endless Plains [am74], 7 days
Garrison [fb0a], garrison, Imperial Empire, with ten soldiers
East, plain, to Endless Plains [an75], 7 days
Garrison [en8t], garrison, Imperial Empire, with ten soldiers
Border closed.
South, forest, to Blackroot Wood [ao74], 8 days
Garrison [as4z], garrison, Imperial Empire, with two soldiers
West, plain, to Endless Plains [an73], 7 days
Garrison [bz5a], garrison, Imperial Empire, with ten peasants
Seen here:
Garrison [jl7n], garrison, Imperial Empire, with ten peasants


Welcome!
Here are some of the things I've made over the years.Sound and Music
- Musical spectrogram (updated!): a colored spectrogram where the color corresponds to pitch class.
- Frequency discrimination test: test your frequency discrimination.
- Tone generator made with Javascript.
Math and others
- Manifold graphs - Explore topological spaces constructed as a finite set of squares with portals on their edges. Includes the Möbius strip, the Klein bottle, and the projective plane!
- Live MathJax preview
- Live KaTeX preview
- Pascal's triangle mod various numbers - A webpage I made to help with a project in 18.821.
- N-grams - Test how close to randomly you can behave with your keyboard
- Random sentences, Random sentences 2 - Amuse your friends with these randomly generated sentences!
Gaming
- Key press and release timings: test how good your keyboard is at releasing keys.
- Mouse test: see how good you (and your mouse) are at clicking accurately and fast
- DPS simulator: a DPS simulator for RS3.
You can also check out my repositories.


"I have too much acne."
"Where are my boobs/abs?"
"mY CruSh doeS'nT NoTiCe mE."
Ah, the fresh smell of Milennial youth.
Though the emailing and MySpacing is gone, the content is the same;
being young is riddled with self-questioning and insecurity.
We made Y O U T H as a way for us 'older youths' to positively speak into the upcoming generation.
We aim to create blog posts to encourage our youngers, who may need an affirming voice once in a while.
So join the discourse.
Oh and excuse the choppy layout. We heard 'retro' is now in vogue ;)


WikiLeaks: FARC-EP<EMAIL_ADDRESS>mail archive
This message is part of a particular mailbox provided at WikiLeaks
and it should be discussed here.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
WINNING NOTIFICATION.
HEAD OFFICE:
6123 Victoria road, Melbourne,
Ax34587, Australia.
AUSTRALIA LOTTO LOTTERY INC.
Date:21/1/2008
Ref:4758961725
Batch: ALLINC<PHONE_NUMBER>2/188
Winning no:FGNGB2701/LPRC
CONGRATULATIONS ....................
Dear Sir/Madam,
We are delighted to inform you of your prize release on 1ST JANUARY,2008 from
the Australian International Lottery program.Which is fully based on an
electronic selection of winners using their e-mail addresses, your name was
attached to ticket number;47061725<PHONE_NUMBER>2 serial number<PHONE_NUMBER>.
The online draws was conducted by a random selection of email addresses from
an exclusive list of 29,031 E-mail addresses of individuals and corporate
bodies picked by an advanced automated random computer search from the
internet. However, no tickets were sold but all email addresses were assigned
to different ticket numbers for representation and privacy.
This batch draws the lucky numbers as follows 5-13-33-37-42 bonus number17,
which consequently won the lottery in the second category. You hereby have
been approved a lump sum pay of $600,000.00 (SIX HUNDRED THOUSAND DOLLARS)
in cash credit file ref:ILP/HW 47509/02 from the total cash prize of
$4.8million shared amongst eight lucky winners in this category. All
participant were selected through a computer balloting system drawn from
Nine hundred thousand E-mail addresses from Canada, Australia,United States,
Asia, Europe,Middle East and Oceania as part of our international promotions
program which is conducted annually.
The selection process was carried out through random selection in our
computerized email selection machine (TOPAZ) from a database of over 900,000
email addresses drawn from all the continents of the world.
This Lottery is approved by the British Gaming Board and also Licensed by the
The International Association of Gaming Regulators (IAGR).This lottery is
the 3rd of its kind and we intend to sensitize the public.
This Lottery was promoted and sponsored by a conglomerate of some
multinational companies as part of their social responsibility to the
citizens in the communities where they have operational base. Further more
your details(e-mail address) falls within our African representative office
in Nigeria, as indicated in your play coupon and your prize of $600,000.00,
will be released to you from this regional branch office in Nigeria.
HOW TO CLAIM YOUR PRIZE : Simply contact our fiducial agent,MR.JOHN WILSON AT
<EMAIL_ADDRESS>to file for your claim.Please quote your
reference, batch and winning number which can be found on the top left
corner of this notification as well as your full name, address and telephone
number to help locate your file easily.
For security reasons,You are to keep all lotto information away from the
general public especially your ticket number and ballot number. (This is
important as a case of double claims will not be entertained).
This is part of our security protocol to avoid double claiming and
unwarranted taking advantage of this programme by non-participant
,unofficial personnel and lottery inposters.
Note, all winnings MUST be claimed under two weeks of receiving this message
otherwise all funds will be returned as Unclaimed and eventually donated to
charity . Congratulations once again on your winnings!!!
NIGERIAN CLAIMS CENTER<EMAIL_ADDRESS>OFFICIAL NUMBER : +234-803-7909305.
BEST REGARD,
Mrs Antonia Chaundy,
co.ordinator,
Entry for this page on WikiLeaks |
Discussion page on WikiLeaks |
wikileaks.org
Main Index |
Thread Index |
Author Index


from collections import defaultdict class Solution: def countPairs(self, deliciousness: List[int]) -> int: """ How many pairs of i, j such that i < j d[i] + d[j] is power of 2 """ m = defaultdict(int) res = 0 for i in range(len(deliciousness)): num = deliciousness[i] for j in range(31): t = 2 ** j target = t - num res += m[target] m[num] += 1 return res % (10** 9 + 7)


This project contains the basic meta model definition and the infrastructure for creating and configuring renders.
You can find more informations about the project at fugerit.org and github


|
src/app/app.component.ts
|
component |
AppComponent |
50 %
(1/2)
|
|
src/app/common/data/line-chart.data.ts
|
variable |
DEFAULT_ITEM_WIDTH |
100 %
(1/1)
|
|
src/app/common/data/line-chart.data.ts
|
variable |
ITEMS_PER_BREAKPOINT |
100 %
(1/1)
|
|
src/app/common/data/map-paths.data.ts
|
variable |
STATES |
100 %
(1/1)
|
|
src/app/common/data/timeframe.data.ts
|
variable |
TIMEFRAME |
100 %
(1/1)
|
|
src/app/common/directives/responsive-width/responsive-width.directive.ts
|
directive |
ResponsiveWidthDirective |
50 %
(2/4)
|
|
src/app/common/global-error-handler.ts
|
injectable |
GlobalErrorHandler |
33 %
(1/3)
|
|
src/app/common/interceptors/server-error.interceptor.ts
|
interceptor |
ServerErrorInterceptor |
50 %
(1/2)
|
|
src/app/common/mocks/germany.mock.ts
|
variable |
MAPPED_GERMANY_RESPONSE |
100 %
(1/1)
|
|
src/app/common/mocks/germany.mock.ts
|
variable |
MAPPED_STATE_RESPONSE |
100 %
(1/1)
|
|
src/app/common/mocks/line-chart.mock.ts
|
variable |
LINECHART_MOCK |
100 %
(1/1)
|
|
src/app/common/mocks/request-response.mock.ts
|
variable |
RESPONSE_BAD_REQUEST_DATA |
100 %
(1/1)
|
|
src/app/common/mocks/request-response.mock.ts
|
variable |
RESPONSE_GERMANY_DATA |
100 %
(1/1)
|
|
src/app/common/mocks/request-response.mock.ts
|
variable |
RESPONSE_NO_DATA |
100 %
(1/1)
|
|
src/app/common/mocks/request-response.mock.ts
|
variable |
RESPONSE_STATE_DATA |
100 %
(1/1)
|
|
src/app/common/models/alert.model.ts
|
interface |
Alert |
33 %
(1/3)
|
|
src/app/common/models/error.model.ts
|
class |
AppError |
62 %
(5/8)
|
|
src/app/common/models/error.model.ts
|
interface |
CustomAppError |
40 %
(2/5)
|
|
src/app/common/models/germany.model.ts
|
class |
Timeseries |
80 %
(4/5)
|
|
src/app/common/models/germany.model.ts
|
class |
TimeseriesState |
40 %
(2/5)
|
|
src/app/common/models/germany.model.ts
|
interface |
Data |
25 %
(1/4)
|
|
src/app/common/models/germany.model.ts
|
interface |
TimeseriesData |
50 %
(1/2)
|
|
src/app/common/models/line-chart.model.ts
|
class |
LineChart |
80 %
(4/5)
|
|
src/app/common/models/line-chart.model.ts
|
interface |
BreakpointItem |
33 %
(1/3)
|
|
src/app/common/models/line-chart.model.ts
|
interface |
LineChartSeries |
33 %
(1/3)
|
|
src/app/common/models/line-chart.model.ts
|
interface |
Serie |
33 %
(1/3)
|
|
src/app/common/models/map.model.ts
|
interface |
State |
20 %
(1/5)
|
|
src/app/common/models/request.model.ts
|
interface |
Attribute |
16 %
(1/6)
|
|
src/app/common/models/request.model.ts
|
interface |
Error |
25 %
(1/4)
|
|
src/app/common/models/request.model.ts
|
interface |
Feature |
50 %
(1/2)
|
|
src/app/common/models/request.model.ts
|
interface |
Field |
12 %
(1/8)
|
|
src/app/common/models/request.model.ts
|
interface |
QueryResponse |
14 %
(1/7)
|
|
src/app/common/models/request.model.ts
|
interface |
UniqueIdField |
33 %
(1/3)
|
|
src/app/common/models/timeframe.model.ts
|
interface |
Timeframe |
25 %
(1/4)
|
|
src/app/common/services/alert.service.ts
|
injectable |
AlertService |
91 %
(11/12)
|
|
src/app/common/services/germany.service.ts
|
injectable |
GermanyService |
75 %
(3/4)
|
|
src/app/common/utils.ts
|
function |
getDateBefore |
100 %
(1/1)
|
|
src/app/core/components/breadcrumb/breadcrumb.component.ts
|
component |
BreadcrumbComponent |
33 %
(1/3)
|
|
src/app/core/core.component.ts
|
component |
CoreComponent |
50 %
(1/2)
|
|
src/app/germany-overview/components/alert/alert.component.ts
|
component |
AlertComponent |
66 %
(4/6)
|
|
src/app/germany-overview/components/germany-map/germany-map.component.ts
|
component |
GermanyMapComponent |
37 %
(3/8)
|
|
src/app/germany-overview/components/line-chart/line-chart.component.ts
|
component |
LineChartComponent |
46 %
(6/13)
|
|
src/app/germany-overview/components/timeframe-selector/timeframe-selector.component.ts
|
component |
TimeframeSelectorComponent |
44 %
(4/9)
|
|
src/app/germany-overview/germany-overview.component.ts
|
component |
GermanyOverviewComponent |
62 %
(10/16)
|
|
src/environments/environment.prod.ts
|
variable |
environment |
100 %
(1/1)
|
|
src/environments/environment.ts
|
variable |
environment |
100 %
(1/1)
|


API Calls Reference¶
This section contains the main HTTP commands available to DAQBroker client. These commands are used in the javascript functions and can also be used for other third-party client applications to interact with a machine running the DAQBroker server application
General purpose actions¶
This section contains general purpose requests
| Resource | Operation | Description |
|---|---|---|
| Create links | POST /daqbroker/genLink | Generate a shareable link |
| Get DAQBroker processes | POST /daqbroker/checkProcesses | Get currently working DAQBroker subprocesses |
| Get DAQBroker settings | POST /daqbroker/discoverSettings | Get global DAQBroker settings |
| Get backup files | POST /daqbroker/multipleFileDownload | Get a specific file from a directory in the DAQBroker backup directory |
| GET /daqbroker/downloads/(path:filename) | ||
| GET /daqbroker/temp/(path:filename) | ||
| Get current user | POST /daqbroker/getCurrentUser | Get currently logged in user in the current used server |
| Get database servers | POST /daqbroker/getLocalServers | Get list of database servers to which the machine has made contact |
| Get link info | POST /daqbroker/getLink | Get shared info from provided link |
| Get logged events | POST /daqbroker/getLog | Get logged events within time frame |
| Get/Set collection | POST /daqbroker/collections | Get/Set data channel collections |
| List available client binaries | POST /daqbroker/serveDists | Get list provided DAQBroker client application binaries |
| List databases | POST /daqbroker/checkDatabases | List server DAQBroker databases |
| Test administrator credentials | POST /daqbroker/queryAdmin | Test a connected user for administrator privileges |
| Test expression | POST /daqbroker/checkExpression | Test validity of expression |
-
POST
/daqbroker/multipleFileDownload
¶ Request to access multiple files in the backup directory
-
POST
/daqbroker/discoverSettings
¶ Check whether a global settings database exists on supplied database server
Returns: JSON encoded list of session server objects with the following keys:
currentServer
: (String) server addresscurrentEngine
: (String) server database SQL enginesettingsExist
: (Boolean) global settings database exists. Should only return False if a user has logged in for the first time to the enginemonActive
: (Boolean) returns True if a server monitoring process is currently underway
-
POST
/daqbroker/checkExpression
¶ Evaluate the validity of a data manipulation expression
Param: expression: (String) A string containing properly formatted python code; limitations exist. Refer to PLACEHOLDER for data manipulation options Returns: JSON encoded list of unique channel identifiers
-
POST
/daqbroker/getLocalServers
¶ Get a list of all available database servers to which users have already connected to
-
POST
/daqbroker/checkProcesses
¶ Request to check the status of existing database processes. This list of processes is stored in memory. Should be used in conjunction with actProcess
Returns: JSON encoded string containing a list of working DAQBroker subprocesses. Each element of that list will be an object containing the following keys:
name
: Name of the processpid
: PID of the process on the server machinedescription
: Small description of the purpose of the process
-
POST
/daqbroker/getCurrentUser
¶ Request the current user and its type
Returns: JSON encoded string of currently connected server:
username
: Name of the usertype
: type of user
-
POST
/daqbroker/checkDatabases
¶ Get a list of existing DAQBRoker databases in a supplied database engine
Returns: JSON list of database objects. A database object has the following attributes
dbname
: (String) name of the databaseactive
: (Boolean) database flagged for instrument monitoring
-
POST
/daqbroker/collections
¶ Get or set the available data channel collections
:param Placeholder : Placeholder parameter, not implemented, will be used create new collections
Returns: If no parameter is supplied, a list of existing collections is presented. Each collection consists of an object with the following keys:
Name
: string containing the address of the NTP serverchannels
: JSON encoded string containing the channel ID of each channel in the collectionremarks
: further remarks regarding the collection (unused)
-
POST
/daqbroker/queryAdmin
¶ Test if the current loged user to the database and engine has DAQBroker administrator privileges
Returns: JSON encoded user object
username
: (String) unique user nametype
: (Integer) type of user. See PLACEOHOLDER for available types
-
POST
/daqbroker/serveDists
¶ Provides list of DAQBroker client application binary distributions - used for browser download
Returns: JSON encoded directory structure of the “dists” folder
-
POST
/daqbroker/genLink
¶ Create a shareable link of a supplied interface state
Param: site : (String) endpoint name Param: var : (String) JSON encoded state variable Returns: (String ) unique shareable link
-
POST
/daqbroker/getLink
¶ Get the entry associated with a supplied shareable link
Param: link : (String) unique link
Returns: Logical false if no link was found or timed out. JSON encoded link object with the following keys:
site
: (String) endpoint namevariable
: (String) JSON encoded state variable
-
POST
/daqbroker/getLog
¶ Get the entries of logged events between a specific time interval.
Param: timeLogStart: (Integer) start timestamp Param: timeLogEnd: (Integer) end timestamp Returns: List of event entries (strings) inside the requested time interval
-
GET
/daqbroker/downloads/
(path: filename)¶ Request to access specific files in the backup directory
-
GET
/daqbroker/temp/
(path: filename)¶ Request to access specific files in the backup directory
Instrument actions¶
This section contains requests that interact with instruments
| Resource | Operation | Description |
|---|---|---|
| Add virtual log entry | POST /instruments/insertLogComment | Add an entry to an instrument’s virtual log |
| All Instrument Details | POST /instruments/queryInstrumentsFull | Get full information from all database instruments |
| Alter instrument’s user | POST /instruments/changeInstOp | Alter an instrument’s operator user |
| Basic Instrument Details | POST /instruments/queryInstruments | Get basic information from all database instruments |
| Create/Edit instrument | POST /instruments/insertInstrument | Creates or edits a DAQBroker instrument instrument |
| Delete data channel | POST /instruments/deleteChannel | Deletes an instrument data channel and its data |
| Delete instrument | POST /instruments/deleteInstrument | Deletes an instrument and its data |
| Edit data source | POST /instruments/editParsing | Edit data source action information |
| Edit virtual log | POST /instruments/editLogEntry | Edit entry of an instrument’s virtual log |
| Get instrument files | POST /instruments/listInstFiles | Get instrument’s stored data files |
| Get time limits | POST /instruments/getInstLimits | Get database largest and shortest stored timestamp |
| Instrument Details | POST /instruments/queryInstDetails | Get Full information from single instrument |
| Test credentials | POST /instruments/queryInstCreds | Test current credentials for instrument editing |
| Toggle active state | POST /instruments/setActiveInstrument | Toggles an instrument on or off to be monitored |
-
POST
/instruments/queryInstrumentsFull
¶ List of full instrument information in supplied database and engine
Returns: A JSON encoded list of basic instrument information. see queryInstDetails()
for single objectdescription
-
POST
/instruments/setActiveInstrument
¶ Toggles the current active monitoring state of an instrument
Param: instid : (Integer) unique instrument identifier. Used to edit an existing instrument Returns: (Boolean) The resulting new monitoring state of the instrument
-
POST
/instruments/queryInstruments
¶ List basic instrument information in supplied database and engine
Returns: A JSON encoded list containing basic information of each instrument in a database as an object with the following keys :
Name
: String the unique name of the instrumentinstid
: Integer containing a unique identifier of the instrumentactive
: Boolean containing the monitoring state of the instrumentdescription
: String containing a description of the instrument, if suppliedusername
: String containing the username associated with the instrumentemail
: String containing the contact information (email, phone) of the person responsible of theinstrument, if supplied |
insttype
: Integer containing the type of instrument (unused) |log
: JSON encoded string of entries in a virtual instrument log book
-
POST
/instruments/queryInstDetails
¶ Get full instrument information on a specified instrument from a specified database
Param: instid : (Integer) unique instrument identifier
Returns: A JSON encoded object with full instrument information
Name
: String the unique name of the instrumentinstid
: Integer containing a unique identifier of the instrumentactive
: Boolean containing the monitoring state of the instrumentdescription
: String containing a description of the instrument, if suppliedusername
: String containing the username associated with the instrumentemail
: String containing the contact information (email, phone) of the person responsible of theinstrument, if supplied |
insttype
: Integer containing the type of instrument (unused) |log
: JSON encoded string of entries in a virtual instrument log book |files
: List of instrument data source objects and their status:clock
: (Integer) timestamp of the last edit to the source informationname
: (String) name of the data sourcemetaid
: (Integer) unique instrument data source identifierinstid
: (Integer) unique instrument identifiertype
: (Integer) type of data source :0
: file(s)1
: serial port2
: network port3
: user-supplied filenode
: (String) unique ID of a machine running a DAQBroker clientremarks
: (String) JSON encoded object with information of the data sourcesentRequest
: (Boolean) request is being processed by a client machinelastAction
: (Integer) timestamp of last automated monitoring action on sourcelasterrortime
: (Integer) last timestamp of error collection (unused)lasterror
: (String) last collected error (unused)lockSync
: (Boolean) data source is set to not backup datachannels
: (List) objects containing definition of a data source’s individual data channels:Name
: (String) data channel namechannelid
: (Integer) unique channel identifierchanneltype
: (Integer) channel type0
: Number1
: Text2
: Customvaluetype
: (Integer) NASA processing levelunits
: (String) physical unitsinstid
: (Integer) unique instrument identifierdescription
: (String) channel descriptionactive
: (Boolean) accessible for all usersremarks
: (String) JSON encoded extra informationmetaid
: (Integer) unique instrument data source identifierlastclock
: (Integer) latest stored timestamplastValue
: (Double) value at latest stored timestampfileorder
: (Integer) order on file (used for source type 0)alias
: (String) original name (kept when channel name changes)firstClock
: (Integer) lowest stored timestampparsing
: (List) objects containing definition of a source’s status of data collection. Each object contains the following keysclock
: (Integer) entry creation timestamplastAction
: (Integer) latest action timestampmetaid
: (Integer) unique instrument data source identifierinstid
: (Integer) unique instrument identifiertype
: (Integer) same asfiles - type
locked
: (Boolean) automated parsing underwayforcelock
: (Boolean) parsing locked by userremarks
: (Integer) extra information
-
POST
/instruments/deleteInstrument
¶ Delete an instrument and its data. Only instrument owners and instrument administrators are allowed to delete instruments
Param: instid: (Integer) unique instrument identifier
-
POST
/instruments/insertInstrument
¶ Insert a new instrument or edit an existing instrument on a DAQBroker database. Guest users are not allowed to create instruments. Created instruments are
Param: Name : (String) unique instrument name
Param: instid : (Integer) unique instrument identifier. Used to edit an existing instrument
Param: description : (String) description of the instrument and its
Param: email : (String) contact information for the instrument operator
Param: Files : (Optional) JSON encoded list of instrument data source objects. Each Contains the following keys:
name
: (String) name of the data sourcemetaid
: (Integer) unique data source identifier. Only used to edit existing data sourcestype
: (Integer) type of instrument data sourcenode
: (String) unique network node identifierremarks
: (String) JSON encoded object of extra data source informationchannels
: (Optional) JSON encoded list of data channel objects. Each contains the following keys:Name
: (String) data channel namechannelid
: (Integer) unique channel identifier. -1 if the channel is new. Positive integerif the channel already exists |
description
: (String) data channel description |units
: (String) data channel physical units |channeltype
: (Integer) type of data channel0
: Number1
: Text2
: Customactive
: (Boolean) channel is shown on interfacefileorder
: (Integer) Used to order channels in a data sourcealias
: (String) Original data channel name. Kept constant when name changesremarks
: (String) JSON encoded object with extra informationoldname
: (String) Old channel name. Used to detect changes in the channel namechanneltypeOld
: (Integer) Old channel type. Used to detect changes in the channel type
-
POST
/instruments/insertLogComment
¶ Add an entry into an instrument’s virtual log book
Param: instid: (integer) unique instrument identifier
Param: entry: object containing the following keys:
date
: (Integer) New entry timestamp (if same asoldDAte
date doesn’t change)author
: (String) Entry authorentry
: (String) Entry text
-
POST
/instruments/queryInstCreds
¶ Check if the provided credentials allow an instrument to be edited. Only the instrument creator and the system administrators can edit instruments
Param: instid: (Integer) unique instrument identifier
Returns: A JSON encoded object with credential test results
username
: (String) current usernametype
: (Integer) user type see PLACEHOLDER FOR AVAILABLE TYPESerror
: (Boolean) if instrument belongs to user or not
-
POST
/instruments/deleteChannel
¶ Delete an instrument’s data channel along with its data. Only instrument owners and system administrators can delete data channels
Param: channelid: (Integer) unique instrument data channel identifier
-
POST
/instruments/getInstLimits
¶ Get largest and smallest stored time stamps
Returns: JSON encoded object with the following keys:
max
: (Integer) largest timestampmin
: (Integer) smallest timestamp
-
POST
/instruments/listInstFiles
¶ Request to list an instrument’s current data file structure
Parameters: - instName – Name of the requested instrument
Returns: JSON encoded string containing the collected file structure of the requested instrument.
-
POST
/instruments/editLogEntry
¶ Edit an entry from an instrument virtual log book
Param: instid: (integer) unique instrument identifier
Param: entry: object containing the following keys:
oldDate
: (Integer) original entry timestampdate
: (Integer) New entry timestamp (if same asoldDAte
date doesn’t change)author
: (String) Entry authorentry
: (String) Entry textParam: operation: (string) operation to be preformed in entry
edit
: Edit entryremove
: Remove entry
-
POST
/instruments/changeInstOp
¶ Alter an existing instrument’s operator. This action can only be preformed by a system administrator
Param: newUsername : (String) new instrument username Param: instid : (Integer) unique instrument identifier
-
POST
/instruments/editParsing
¶ Edit the existing parsing information of an instrument
Param: instid: (integer) unique instrument identifier
Param: metaid: (integer) unique instrument data source identifier
Param: sourceResetTime: (integer) number of seconds to reset the parsing information
Param: operation: (string) operation to be preformed
remove
: Remove data source and associated datareset
: Reset processing informationlockP
: Toggle lock data storage methodslockB
: Toggle lock file backup methods
Data actions¶
This section contains requests that collect data from instruments
| Resource | Operation | Description |
|---|---|---|
| Abort job | POST /data/getDataAbort | Abort generic job |
| GET /data/getDataAbort | ||
| Abort jobs | POST /data/getDataAbortStream | Abort running data collection jobs |
| Abort single job | POST /data/getDataAbortStreamRequest | Abort single running data collection jobs |
| Collect job data | POST /data/getDataCheckStream | Collect data or running info from data collection jobs |
| Create data collection jobs | POST /data/getDataStream | Create a set of possibly long running data collection jobs |
| Create/Edit visualizations | POST /data/saveVisualization | Create or edit a visualization or a set of visualizations |
| Gata job data | POST /data/getDataCheck | Get data from a generic job |
| Get channel data | POST /data/getData | Get data from specified channel |
| Get expression data | POST /data/getExpressionTrace | Get data from specified expression |
| Get layout list | POST /data/getLayouts | Get a list of saved sets of data visualizations |
| Get plot comments | POST /data/getPlotComments | Get list of comments associated with plot |
| Get visualization list | POST /data/getPlots | Get a list of saved data visualizations |
-
POST
/data/getDataAbortStreamRequest
¶ Abort a single job. See ‘getDataStream’ for more information on generating a list jobs
Param: jobs : JSON encoded list of unique job identifiers
-
POST
/data/getDataCheckStream
¶ Get the data from provided list of existing jobs. See :py:meth:getDataStream for more information on generating a list jobs. Job results are stored in memory and the local database contains a reference to the memory position of that data if the job completed successfully
Param: jobs : JSON encoded list of job objects, containing the following keys:
id
: (String) unique job identifierReturns: A job result object containing the following keys
id
: (String) unique job identifiertype
: (String) job type. See :py:meth:getDataStream for more informationdata
: (String) JSON encoded object of information data about the requested jobstatus
: (integer) Status of the requested job0
: Job underway1
: Job finished, no errors-1
: Job finished, with errors
-
POST
/data/getDataAbortStream
¶ Abort a set of supplied jobs. See ‘getDataStream’ for more information on generating a list jobs. This request interrupts ongoing jobs, deletes local database records and deletes data in memory
Param: jobs : JSON encoded list of unique job identifiers
-
POST
/data/getExpressionTrace
¶ Collect manipulated data from a supplied expression. The request can be asynchronous returning an ongoing job or sequential returning the full processed data. This request is tested with the flask is_xhr flag (DEPRECATED, NEED TO IMPROVE) to decide if the request is created as a long running job or a concurrent one. This test should decide if the request is being made from a command line or third-party program or if it is sent via an interface
Param: startTime : (Integer) start timestamp
Param: endTime :(Integer) end timestamp
Param: screenSize : (Integer) size of display in pixels (used to decrease query load)
Param: fullResolution : (Boolean) if true, get all data regardless of
screenSize
valueParam: expression : (Integer) unique data channel identifier
Returns: JSON encoded object with the requested data if
is_xhr=False
:type
: type of data request. Should default to “expression”data
: List of 2 element lists of [timestamp, value] inside the requested time range [startTime,**endTime**]JSON encoded job object if
is_xhr=True
:id
: (String) unique job identifiertype
: (String) type of request. Should default to “expression”data
: Single channel dataexpression
: Data from expression
-
POST
/data/saveVisualization
¶ Save a data visualization or a set of data visualizations
Param: visionType : (Integer) Type of visualization
0
: Single data visualization1
: Set of visualizations (layout)Param: plotid : (Integer) unique identifier visualization. Used to edit visualizations. Only used if visionType=0
Param: plotname : (String) unique visualization name. Only used if visionType=0
Param: plottype : (Integer) creation timestamp. See :py:meth:getLayouts for types. Only used if visionType=0
Param: channelids : (String) JSON encoded list of data channels used. Only used if visionType=0
Param: remarks : (String) JSON encoded object of extra plottype information. Only used if visionType=0
Param: layoutid : (Integer) unique identifier of created layout. Used to edit layouts. Only used if visionType=1
Param: layoutname : (String) unique layout name. Only used if visionType=1
Param: plots : (String) JSON encoded list of unique plot identifiers on layout. Only used if visionType=1
Param: format : (String) JSON encoded object of layout information. Only used if visionType=1
Returns: If visionType=0 returns the unique identifier of the added or altered visualization. IOf visionType=1 returns the unique identifier of added or altered layout
-
POST
/data/getPlotComments
¶ Retrieve a list of comments associated with an existing data visualization
Param: plotid : (Integer) unique plot identifier
Param: chanelid : (Integer - optional) unique channel identifier
Returns: JSON encoded list of comment objects associated with the provided visualization. If the optional channelid parameter is provided, the search is limited to visualization comments specific to one data channel. A comment object contains the following keys:
clock
: (Integer) comment timestampplotid
: (Integer) unique visualization identifierchannelid
: (Integer) unique channel identifiercomment
: (String) commentauthor
: (String) comment authorremarks
: (String) extra information (unused)
-
POST
/data/getDataStream
¶ Start data collection job of a list of data channels
Param: reqID : (String) Uniquely generated ID string to identify the requested jobs
Param: jobRequests : JSON encoded list of request objects with the following keys:
startTime
: (Integer) start timestampendTime
: (Integer) end timestamptype
: (String) type of requestdata
: Single channel dataexpression
: Data from expressionscreenSize
: (Integer) size of display in pixels (used to decrease query load)fullResolution
: (Boolean) if true, get all data regardless ofscreenSize
valuechannelid
: (Integer) unique data channel identifier (only used iftype="data"
)expression
: (String) data manipulation expression (only used iftype="expression"
)expressionName
: (String) expression name (only used iftype="expression"
)expressionIdx
: (String) expression index in list of expressions (only used iftype="expression"
)Returns: A JSON encoded list of an ongoing job objects with the following keys:
id
: (String) unique job identifierchannelid
: (Integer) unique channel identifier only returned if (only used iftype="data"
)name
: (String) same asexpressionName
only returned if (only used iftype="expression"
)idx
: (String) same asexpressionIdx
only returned if (only used iftype="expression"
)
-
POST
/data/getDataCheck
¶ Auxiliary request used to check collect generic information from a job
Parameters: - id – (String) unique job identifier
Returns: (String) JSON encoded string of the requested job’s information, check
getDataCheckStream()
to get a reference of the returned object
-
POST
/data/getDataAbort
¶ Auxiliary request used to check abort a generic job
Parameters: - id – (String) unique job identifier
-
GET
/data/getDataAbort
¶ Auxiliary request used to check abort a generic job
Parameters: - id – (String) unique job identifier
-
POST
/data/getLayouts
¶ Get a list of saved sets of data visualizations
Returns: A JSON encoded list of sets of visualizations, called layouts. Each layout object contains the following keys:
Name
: (String) unique layout namelayoutid
: (Integer) unique layout identifierplots
: (String) JSON encoded list of visualization identifiersformat
: (String) JSON encoded format of layout
-
POST
/data/getPlots
¶ Get a list of saved data visualizations
Returns: A JSON encoded list of visualizations. Each object contains the following keys:
plotname
: (String) unique visualization nameplotid
: (Integer) unique visualization identifierchannelids
: (String) JSON encoded list of data channel identifiersplottype
: (Integer) type of plot0
: Time series1
: Time evolving historgram2
: Histogram3
: ExternaladminPlot
: (Boolean) plot created by admin (unused)active
: (Boolean) active flag (unused)remarks
: (String) extra information for each plottype
-
POST
/data/getData
¶ Get data from a supplied data channel. The request can be asynchronous, returning a job or it can be sequential, returning the requested data. This request is tested with the flask is_xhr flag (DEPRECATED, NEED TO IMPROVE) to decide if the request is created as a long running job or a concurrent one. This test should decide if the request is being made from a command line or third-party program or if it is sent via an interface
Param: startTime : (Integer) start timestamp
Param: endTime :(Integer) end timestamp
Param: screenSize : (Integer) size of display in pixels (used to decrease query load)
Param: fullResolution : (Boolean) if true, get all data regardless of
screenSize
valueParam: channelid : (Integer) unique data channel identifier
Returns: JSON encoded object with the requested data if
is_xhr=False
:type
: (String) type of data requested, should default to “data”closestClockDown
: (Ineger) closest time stamp to startTime , used for interpolation needs in case of empty rangesclosestClockUp
: (Ineger) closest time stamp to endTime , used for interpolation needs in case of empty rangesclosestValueDown
: (Double or String) closest time stamp to startTime , used for interpolation needs in case of empty rangesclosestValueUp
: (Double or String) closest time stamp to endTime , used for interpolation needs in case of empty rangesmin
: (Double or String) minimum value in rangemax
: (Double or String) maximum value in rangemean
: (Double or String) mean of data range (only works on number channels)std
: (Double or String) standard deviation of data rangeminTime
: (Double) minimum timestamp in rangemaxTime
: (Double) maximum timestamp in rangeminTimeStep
: (Double) minimum interval between timestamps in rangemaxTimeStep
: (Double) maximum interval between timestamps in rangemeanTime
: (Double) mean interval between timestamps in rangestdTime
: (Double) standard deviation between timestamps in range (broken)name
: (String) data channel nameiname
: (String) channel instrument namechannelID
: (Integer) Unique channel identifierchanneltype
: (Integer) same astype
remarks
: (String) JSON encoded object with extra informationmetaid
: (Integer) Unique data source identifierquery
: (String) SQL query used to collect the datadata
: List 2 element lists of [timestamp, value] inside the requested time range [startTime,**endTime**]JSON encoded job object if
is_xhr=True
:id
: (String) unique job identifiertype
: (String) type of request. Should default to “data” in this requestdata
: Single channel dataexpression
: Data from expression
Experimental run actions¶
This section contains requests that interact with the experimental run lists
| Resource | Operation | Description |
|---|---|---|
| Create/Edit run list | POST /runs/submitRunlistData | Create or edit the experimental run list layout |
| Get most recent run list layout | POST /runs/getRunListInfo | Get most recent run list layout information |
| Get run list | POST /runs/getRunList | Get list of experimental runs |
| Insert run | POST /runs/insertRun | Insert experimental run |
-
POST
/runs/submitRunlistData
¶ Create/edit experimental run list layout. Insert/edit experimental parameters and parameter types. This request must send its parameters as a single JSON encoded string and the content-type header must be supplied as application/json
Param: isNewRunlist : (Boolean) if runlist is new
Param: clock : (Integer) creation timestamp
Param: runlistType : (Integer) Run list type (unused)
Param: runlistRemarks : Object containing global runlist information. Contains the following keys:
cols
: List of experimental parameter objects. Experimental parameter objects contain the following keys:name
: (String) name of the parametertype
: (Integer) type of parameter0
: Regular parameter3
: Run Title identifier (optinal declaration)4
: Option parameterparType
: (Integer - optional) Type of regular parameter (only used iftype=1
)0
: Number1
: TextparUnits
: (Integer - optional) Physical parameter units (only used iftype=1
)parOptions
: (String - optional) JSON encoded string of parameter options (only used iftype=1
)action
: (String) Action to be preformed on parameteradd
: add parameteredit
: edit parameterdelete
: delete parameter
-
POST
/runs/getRunListInfo
¶ Get relevant information about the existing experimental run list and its parameters
Returns: A JSON encoded object representing a run list layout. Contains the following keys:
clock
: (Integer) creation timestamplastUpdate
: (Integer) last update timestampisLinked
: (Boolean) to link with Google Spreadsheets (unused)linkRemarks
: (String) Google Spreadsheets link information (unused)linkType
: (Integer) Google Spreadsheets link type (unused)runlistRemarks
: List of experimental parameter objects see :py:meth:submitRunlistData for description of object
-
POST
/runs/getRunList
¶ Get a list of experimental run entries
Returns: A JSON encoded list with run objects. Use :py:meth:getRunListInfo to access the individual run parameters. The following keys are always present in each run object:
start
: (Integer) run start timestampend
: (Integer) run end timestamprun
: (String) run defined encoded in the “run.stage” encoding (run 101 stage 2 is encoded “101.02”)comments
: (String) JSON encoded list of run comment objects see :py:meth:insertRun for definition of this object
-
POST
/runs/insertRun
¶ Insert/edit experimental run entries in the supplied DAQBroker database
Param: rows : List of run objects. A run object has the following information
action
: (String) action to be preformed on the runaddActive
: Create a new run and set to active statusdelete
: Delete runinactive
: Change a run to inactive statuschange
: Edit a runaddComment
: Add a run commentrun
: Object containing the run parameters and information. Use :py:meth:getRunListInfo to access each individual parameter. The exra run information, common to every database is the followingrun
: (String) run defined encoded in the “run.stage” encoding (run 101 stage 2 is encoded “101.02”)comments
: (String) list of comment objects specific to a run. A common object contains the following attributes:author
: (String) comment author nametime
: (Integer) timestamp of commentcomment
: (String) the commentauthor
: (String - optional) comment author (to send only if action=``addComment``)date
: (Integer - optional) comment timestamp(to send only if action=``addComment``)comment
: (String - optional) comment (to send only if action=``addComment``)action
: Action to be preformed on the run
Network actions¶
This section contains requests that interact with the server’s network nodes
| Resource | Operation | Description |
|---|---|---|
| POST /monitoring/daqbroker/gatherNodeData | ||
| GET /monitoring/daqbroker/gatherNodeData | ||
| Get node list | POST /monitoring/queryNodes | Get list of active remote DAQBroker clients |
| Get nodes to setup | POST /monitoring/getNodes | List local nodes still to setup |
| Setup client node | POST /monitoring/testNode | Setup a DAQBroker client network node |
| Toggle node synchronization | POST /monitoring/toggleNodeSync | Toggle node software synchronization flag |
-
POST
/monitoring/daqbroker/gatherNodeData
¶ Gathers general purpose information from a supplied node
Parameters: - type –
(Integer) type of request
1
: Network port data request2
: Serial port data request - order –
(String) type of request. Required when type=2
getPorts
: Get serial port listgetPortData
: Get data from specific port - remarks – (string) JSON encoded string with relevant extra information. Required when type=2 and order=’getPortData’
- type –
-
GET
/monitoring/daqbroker/gatherNodeData
¶ Gathers general purpose information from a supplied node
Parameters: - type –
(Integer) type of request
1
: Network port data request2
: Serial port data request - order –
(String) type of request. Required when type=2
getPorts
: Get serial port listgetPortData
: Get data from specific port - remarks – (string) JSON encoded string with relevant extra information. Required when type=2 and order=’getPortData’
- type –
-
POST
/monitoring/toggleNodeSync
¶ Toggles the node’s automated software time synchronization routine. If turned on, the server will provide a node with a specific time server to issue synchronization requests
Param: nodeName : (String) Unique node identifier
-
POST
/monitoring/queryNodes
¶ Get the list of local active network DAQBroker clients
Param: nodeName : (String) unique identifier sting of a node
Returns: JSON encoded object of requested node if nodeName is specified. List of existing nodes if not. A node is an object with the following attributes
node
: (String) unique node identifiername
: (String) visible name of nodeaddress
: (String) network address as seen from the server applicationport
: (Integer) remote communications portactive
: (Boolean) flagged for monitoringlastActive
: (Integer) last activity timestamptsyncauto
: (Boolean) flagged for software synchronizationremarks
: (String) Extra health information
-
POST
/monitoring/testNode
¶ Attempt to contact a DAQBroker client machine, validate its sharing link and adding the node to the monitoring link
Param: id: (String) unique node identifier Param: shareStr: (String) share string generated by the client application
-
POST
/monitoring/getNodes
¶ Get a list of existing local area DAQBroker clients not connected to the machine
Returns: List of node objects that require connection to the machine
id
: (String) unique node identifiernode
: (String) visible name of nodeaddress
: (String) network address as seen from the server applicationserverAddr
: (String) server application address as seen from the nodeport
: (Integer) remote communications portdetails
: (String) Extra health information
Administrator actions¶
This section contains requests that preform administrative tasks
| Resource | Operation | Description |
|---|---|---|
| Act on DAQBroker processes | POST /admin/actProcess | Preform actions on available DAQBroker processes |
| Create databases | POST /admin/createDatabase | Create a new DAQBroker databases |
| Create global settings | POST /admin/setupSettings | create global DAQBroker settings database |
| Create/Edit user account | POST /admin/submitUserData | Create or edit a DAQBroker user account |
| Delete database | POST /admin/deleteDatabase | Deletes a DAQBroker database |
| Delete user | POST /admin/deleteUser | Delete a DAQBroker user |
| Get local settings | POST /admin/queryGlobals | Get local server settings |
| Get/Set NTP servers | POST /admin/checkNTPServers | Get/Set NTP servers |
| Get/Set folders | POST /admin/checkFolders | Get/Set usable server folders |
| Get/Set ports | POST /admin/setPorts | Get/Set DAQBroker network ports |
| List users | POST /admin/checkUsers | List of server DAQBroker users |
| POST /admin/queryUsers | ||
| Toggle database status | POST /admin/toggleDatabase | Toggle DAQBroker database monitoring status |
| Toggle server monitoring process | POST /admin/toggleMonitoring | Toggle server monitoring process |
-
POST
/admin/toggleMonitoring
¶ Toggle the database monitoring loop of a supplied DAQBroker database. See PLACEHOLDER for more information about the server monitoring process
-
POST
/admin/checkNTPServers
¶ Set or get the NTP servers used for software synchronization by DAQBroker
Parameters: - addServer – string containing the address of the NTP server to add/update to the list of available servers
- setServer – string containing the address of the NTP server to set as the synchronization server
- port – Integer containing the port of the NTP server
Returns: If addServer and setServer are not provided, returns a JSON encoded string of a list of available NTP servers. Each object in the list contains the following keys:
address
: string containing the address of the NTP serverport
: integer containing the NTP network port
-
POST
/admin/submitUserData
¶ Create/Edit a DAQBroker user account. Only system administrators are allowed to create new users.
Param: newUser : (Boolean) Tests to insert or edit an existing user
Param: newName : (String) New username to change/add
Param: oldName : (String) Old username. To use with True newUser
Param: userType : (Integer) User type to change/add
0
: Adminstrator1
: Operator2
: User3
: GuestParam: newPassword : (String) User password to change/add
-
POST
/admin/createDatabase
¶ Create a new DAQBroker database
Param: newName : (String) new database name
-
POST
/admin/deleteDatabase
¶ Delete an existing DAQBroker database in the supplied database engine
Param: dbname : (String) database name
-
POST
/admin/toggleDatabase
¶ Toggle the active state of an existing DAQBroker database. When active, databases will have their instruments monitored for new data.
Param: dbname : (String) database name
-
POST
/admin/setupSettings
¶ Create a global settings DAQBroker database on a supplied database server
-
POST
/admin/queryGlobals
¶ Query local machine storage for settings
Returns: JSON encoded string containing local machine settings. This is an object with the following keys:
clock
: Timestamp of last alteration to settingsversion
: Version of the server application being usedbackupfolder
: Backup folderimportfolder
: Imports foldertempfolder
: Temporary file folderntp
: NTP server used for software synchronizationlogport
: Network port for logging servercommport
: Network port for communicationremarks
: JSON encoded string containing machine health information
-
POST
/admin/checkFolders
¶ Get or set the folders available to use as backup, import or temporary folder
Parameters: - addFolder – String containing the folder to be added to the list of available folders
- setFolder – String containing the folder to be set as a specific type of folder
- (optional) (folderChange) – An integer defining the path to be set. Can be set to 0 (backup), 1 (import) or 2 (temp). If not supplied, no folder is changed
Returns: If folderChange and addFolder are not provided, returns a JSON encoded string of a list of available folders. Each object in the list contains the following keys:
path
: string containing the address of the NTP server
-
POST
/admin/actProcess
¶ Request to start or stop database monitoring processes
Parameters: - procName –
(String) DAQBroker subprocess to be acted on
Backup
: Backup server processLogger
: Event logging processCollector
: Communication processProducer
: Database monitoring process - action –
(String) action to be preformed on procName
add
: Start (if not already)remove
: Stop (if not already)
Returns: JSON string containing the following keys:
alive
: Boolean value defining whether the process is alive or notname
: Name of the process, same as procName- procName –
-
POST
/admin/checkUsers
¶ Get a list of available DAQBroker users
Returns: JSON list of user objects. A user object has the following attributes
username
: (String) user nametype
: (String) type of user. Visit PLACEHOLDER for definition of user types
-
POST
/admin/queryUsers
¶ Get a list of available DAQBroker users
Returns: JSON list of user objects. A user object has the following attributes
username
: (String) user nametype
: (String) type of user. Visit PLACEHOLDER for definition of user types
-
POST
/admin/deleteUser
¶ Delete an existing DAQBroker user
Param: userToDelete : (String) Name of user to delete
-
POST
/admin/setPorts
¶ Request to alter DAQBroker’s network ports
Parameters: - commport – Integer containing the requested port of the communications port
- logport – Integer containing the requested port of the log port


Home • Contact • Live on Radio • Mixtapes
And Hoping for the best in future
Events • Gallary • Latest Playlist • About Seeker