Home
OC Wallet
News
Live!
Score
Settings
Profile
© OracleOfCricket Inc.
Home
Register
Login
Login Name
Password
Save Profile Locally?
No
Yes
News
Live!
Score
Settings
Profile
© OracleOfCricket Inc.
Home
Login
Register
Email Address
Confirm Email Address
Password
Confirm Password
First Name
Family Name
Date of Birth
Date
1
2
3
4
5
6
7
Month
January
February
March
April
May
June
July
Year
2000
1999
1998
Batting Style
Right Handed
Left Handed
Bowling Style
Right Arm Fast
Right Arm Medium
Wicketkeeper?
No
Yes
News
Live!
Score
Settings
Profile
© OracleOfCricket Inc.
Home
News - Top Stories
Countries
Associates
Series
Authors
Agencies
News
Live!
Score
Settings
Profile
© OracleOfCricket Inc.
Home
News - Top Stories
Countries
Associates
Series
Authors
Agencies
Test Playing Nations
Bangladesh Cricket Board
Board of Control for Cricket in India
12
Cricket Australia
32
Cricket South Africa
England and Wales Cricket Board
New Zealand Cricket
Pakistan Cricket Board
Sri Lanka Cricket
West Indies Cricket Board
Zimbabwe Cricket
Affiliates
Afghanistan Cricket Federation
Cicket Canada
Cricket Ireland
Cricket Kenya
Koninklijke Nederlandse Cricket Bond
Cricket Scotland
News
Live!
Score
Settings
Profile
© OracleOfCricket Inc.


Developing Awesome Sintra Adventures
Interested in All Things Elm and Python
and exploring the outdoors whenever possible !!!
Geocacher
Swimmer
Photographer
Believes in building health into the OS :)
(Note : Am i talking about some pill or secret ingredient ? Not really !!! I'm mostly talking about leading an healthy lifestyle , healthy work/leisure choices , doing exercise , hiking in the woods ... which in turn translate into being on average an healthier person. No Secret Formulas :) !!! )


Uses audience's phones— no touching required.
Contact-free, waste-free programs for your next event.
Avoids wasting paper on single use items.
Saves money on printing costs.
New fans can instantly follow company, cast, & creatives' social media.
Simple, unique link + QR code option for easy access.
Coordinating PDF design available if you still need a small number of prints.
Get a sneak peek at the sample...
The Forget-Me-Not Players present Romeo & Juliet
A sample e-program for a production of William Shakespeare's Romeo & Juliet
Clear, simple layout showcases your cover art and main program sections, which drop down to reveal info on the show and your team. Audiences can follow each artist's website or social media just by tapping their name.
Fully functional prototype coming soon!


 Is it a bag or is it a sack? He heaves it up the mountain on his back. It is full of pills and potions.
But no one lives upon this peak. So as he climbs who does he seek? Ah, look, a goat, a goat so weak. He'll pamper it with his lotions.
The mountain apothecary is no vet. The weakened goat's our hero's pet. He trapped it once, within a net. But now it roams the slopes.
The air is thin when one's so high. The goat is weak and it may die. The apothecary wears a Catholic tie. He's treated several Popes.
A Papist apothecary, do you say? On the mountain this very day?
Aye, a sinner and a heretic! Evil is what makes him tick. Almighty God, he makes me sick. I'll vomit up my dinner.
I ate in the chalet at the foot of the mount. Me and a baron and a Protestant count. Oh we ate a huge amount, of mountain goat and hog.
See the apothecary come back down. He's taking his goat into the town, where there's a vet of great renown. I'll shove him into the bog.
“Papist Apothecary Drowned In Bog”, the headline in my Daily Log. Now I'll march off into the fog, and vanish whence I came.
I came from haunts of coot and hern. There I watch the Papists burn. Repent! Before it is your turn, and shudder at my name.


backupmusic
backup music files
#THIS IS UNDER CONSTRUCTION
#Supporting libraries
#Install globally for the user - remove the -g if you want to install these locally
npm install -g mocha
npm install -g jsdoc
npm install -g istanbul
npm install -g js-beautify
npm install -g jscs
#Cleanup code, Style Check, Test, Cover, and Generate documents
bin/integration.sh # do everything
bin/cleanup.sh # just cleanup the code and style check it
bin/docGenerate.sh # just generate the code documentation
bin/testAndCover.sh # just test and create a coverage report
#Run the application
bin/backupMusic.sh ./mymusic ./backupofmymusic


VideoCeption
Choose a video to generate it's smart video
Success!
Success!
Positive! The overall sentiment of the document is positive.
Neutral! The overall sentiment of the document is neutral.
Negative! The overall sentiment of the document is negative.


Ref: WM/ITN/233/07 Kind Attention Required. Hello, I have gone through your profile which informed my contemplation to enquire in confidence,if we can jointly do some genuine and legal stock transfer trading together based on a Joint Venture. I have an operative international certified acceptable Medium Term Note Stock (Program) le, which I was thinking we could work with you to reassign the account to your name, and I assume you must have powerful financial sense and capability. After the reassignment, the amount would be transferred to your bank account. The principal amount of the POF is US$50 Million, and I have already worked out modalities to execute the transfer successfully; hence I ask of you to confirm ASAP whether or not you are interested. The BOE is an irrevocable Bank Operative Instrument, which you can use as collateral to bank against a loan immediately we fully reassign to you, which means your bank can even borrow against it. I shall send you evidence of funds which once can still through bank-to-bank confirm existence. I would appreciate that you get back to me upon receipt of this important mail on your opinion towards a lasting business relationship. Respectfully, Williams Morrow


Data Source: LANDSET, 0.2% Inundation in 2030, Ground Elevation
Data Source: LANDSET, 0.2% Inundation in 2030, Ground Elevation
The Southwest Corridor Park, which aligns with the Orange Line MBTA track from Back Bay through Roxbury and Jamaica Plain to Forest Hills, is 4.1 miles long, extremely skinny, and covers 52 acres. According to the 2012 ACS 5-Year Estimates, the median income along this park ranges from $10,445 - $30,000 in the northern parts to $53,136-$100,000 as it moves south [1]. Population density along the Southwest Corridor Park decreases steadily as you go south along it, with the South End neighborhood start of the northern end of the park having densities above 51-100 people per acre and the lower neighborhoods having anywhere from 0-50 people per acre (source: Boston Planning & development agency).
There is no consistent cooling pattern associated with the Southwest Corridor Park. Along its route, the temperatures range from 28-32° Celsius. There may be a pattern of slight cooling around the wider parts of the park, such as near Jamaica Plain, but this does not appear, at first glance, to be significant.


1. The Agreement refers, collectively, to all the terms, conditions, notices contained or referenced in this document and all other operating rules, policies
and procedures that we may publish from time to time on the Website.
2. The Service refers to the applications, software, products, and services provided by Bookswop.
3. You must provide a valid email address in order to complete the signup process. The User refers to the individual person, company, or organization that has visited or is using the Website or Service; that accesses or uses any part of the account; or that directs the use of the account in the performance of its functions.
4. Content refers to content featured or displayed through the Website, including without limitation text, data, articles, images, photographs, graphics, software, applications, designs, features, and other materials that are available on the Website or otherwise available through the Service.
5.
6. You agree that you will not under any circumstances upload, post, host, or transmit any content that is unlawful or promotes unlawful activities, is libelous, defamatory, or fraudulent and discriminatory or abusive toward any individual or group.
7. You agree not to engage in activity that significantly harms our users. We will resolve disputes in favor of protecting our users as a whole.
8. You are solely responsible for the content of, and any harm resulting from, any user-generated content that you post or upload.
9. You retain all moral rights to Content you upload, publish, or submit to any part of the system, including the rights of integrity and attribution.
10. It is your responsibility to properly cancel your account with Bookswop.
11. You consent to receive communications from us in an electronic form via the email address you have submitted.
12. These Terms of Service, together with the Privacy Statement, represent the complete and exclusive statement of the agreement between you and us.


pymatgen.apps.battery.insertion_battery module¶
This module is used for analysis of materials with potential application as intercalation batteries.
-
class
InsertionElectrode
(entries, working_ion_entry)[source]¶ Bases:
pymatgen.apps.battery.battery_abc.AbstractElectrode
A set of topotactically related compounds, with different amounts of a single element, e.g. TiO2 and LiTiO2, that can be used to define an insertion battery electrode.
Create a new InsertionElectrode.
Parameters: - entries – A list of ComputedStructureEntries (or subclasses) representing the different topotactic states of the battery, e.g. TiO2 and LiTiO2.
- working_ion_entry – A single ComputedEntry or PDEntry representing the element that carries charge across the battery, e.g. Li.
-
as_dict_summary
(print_subelectrodes=True)[source]¶ Generate a summary dict.
Parameters: print_subelectrodes – Also print data on all the possible subelectrodes. Returns: A summary of this electrode”s properties in dict format.
-
fully_charged_entry
¶ The most charged entry along the topotactic path.
-
fully_discharged_entry
¶ The most discharged entry along the topotactic path.
-
get_all_entries
(charge_to_discharge=True)[source]¶ Return all entries input for the electrode.
Parameters: charge_to_discharge – order from most charge to most discharged state? Defaults to True. Returns: A list of all entries in the electrode (both stable and unstable), ordered by amount of the working ion.
-
get_max_instability
(min_voltage=None, max_voltage=None)[source]¶ The maximum instability along a path for a specific voltage range.
Parameters: - min_voltage – The minimum allowable voltage.
- max_voltage – The maximum allowable voltage.
Returns: Maximum decomposition energy of all compounds along the insertion path (a subset of the path can be chosen by the optional arguments)
-
get_max_muO2
(min_voltage=None, max_voltage=None)[source]¶ Maximum critical oxygen chemical potential along path.
Parameters: - min_voltage – The minimum allowable voltage.
- max_voltage – The maximum allowable voltage.
Returns: Maximum critical oxygen chemical of all compounds along the insertion path (a subset of the path can be chosen by the optional arguments).
-
get_min_instability
(min_voltage=None, max_voltage=None)[source]¶ The minimum instability along a path for a specific voltage range.
Parameters: - min_voltage – The minimum allowable voltage.
- max_voltage – The maximum allowable voltage.
Returns: Minimum decomposition energy of all compounds along the insertion path (a subset of the path can be chosen by the optional arguments)
-
get_min_muO2
(min_voltage=None, max_voltage=None)[source]¶ Minimum critical oxygen chemical potential along path.
Parameters: - min_voltage – The minimum allowable voltage for a given step
- max_voltage – The maximum allowable voltage allowable for a given step
Returns: Minimum critical oxygen chemical of all compounds along the insertion path (a subset of the path can be chosen by the optional arguments).
-
get_stable_entries
(charge_to_discharge=True)[source]¶ Get the stable entries.
Parameters: charge_to_discharge – order from most charge to most discharged state? Default to True. Returns: A list of stable entries in the electrode, ordered by amount of the working ion.
-
get_sub_electrodes
(adjacent_only=True, include_myself=True)[source]¶ If this electrode contains multiple voltage steps, then it is possible to use only a subset of the voltage steps to define other electrodes. For example, an LiTiO2 electrode might contain three subelectrodes: [LiTiO2 –> TiO2, LiTiO2 –> Li0.5TiO2, Li0.5TiO2 –> TiO2] This method can be used to return all the subelectrodes with some options
Parameters: - adjacent_only – Only return electrodes from compounds that are adjacent on the convex hull, i.e. no electrodes returned will have multiple voltage steps if this is set True.
- include_myself – Include this identical electrode in the list of results.
Returns: A list of InsertionElectrode objects
-
get_unstable_entries
(charge_to_discharge=True)[source]¶ Returns the unstable entries for the electrode.
Parameters: charge_to_discharge – Order from most charge to most discharged state? Defaults to True. Returns: A list of unstable entries in the electrode, ordered by amount of the working ion.
-
voltage_pairs
¶ Returns all the VoltagePairs
-
working_ion
¶ The working ion as an Element object
-
working_ion_entry
¶ The working ion as an Entry object
-
class
InsertionVoltagePair
(entry1, entry2, working_ion_entry)[source]¶ Bases:
pymatgen.apps.battery.battery_abc.AbstractVoltagePair
Defines an Insertion Voltage Pair.
Parameters: - entry1 – Entry corresponding to one of the entries in the voltage step.
- entry2 – Entry corresponding to the other entry in the voltage step.
- working_ion_entry – A single ComputedEntry or PDEntry representing the element that carries charge across the battery, e.g. Li.
-
frac_charge
¶
-
frac_discharge
¶
-
mAh
¶
-
mass_charge
¶
-
mass_discharge
¶
-
vol_charge
¶
-
vol_discharge
¶
-
voltage
¶
-
working_ion_entry
¶


_________________________________________
This document describes how to operate ISOQuant.
For installing ISOQuant application, please read ISOQuant installation guide and follow instructions.
The basic idea behind ISOQuant is to reduce data analysis time and also to ensure constant analysis quality by automating standard analysis steps applied to LC-MS based label-free proteomics data.
ISOQuant extracts preprocessed data from vendor software (Waters PLGS), and transfers extracted information into a relational MySQL database. Once data is transferred, ISOQuant applies a set of statistical analysis steps to it and reports analysis results in human readable, common file formats.
Main workflow contains following steps:
On the main view of ISOQuant, click on ‘select PLGS root folder’ button (figure 1, item 3) to initiate root folder selection. From the appearing folder selection dialog, choose the correct path to PLGS root folder, e.g. C:\PLGS2.4\root. Do not select the PLGS folder, nor one of the project folders inside the root. When you have selected a valid root folder, ISOQuant explores contained projects and shows them as a list inside the projects in PLGS root folder container.
On the main view of ISOQuant, click ‘connect database’ button (figure 1, item 4) and type requested accession data into appropriate fields on appearing dialog (figure 2). Once ISOQuant has successfully connected to a MySQL database, it shows a list of previously imported projects inside the projects in MySQL database (figure 1, item 2) container.
The behavior and the appearance of ISOQuant as well as the attributes of its processing steps may be adapted by editing ISOQuant’s configuration file isoquant.ini. The easiest way to edit the configuration file is to use the built-in configuration editor (figure 3). Which is accessible from ISOQuant’s GUI by clicking edit configuration button (figure 1, item 7) . Please see ISOQuant configuration guide for detailed explanation of attributes and possible values.
Projects to be processed with ISOQuant may be selected from projects in PLGS root folder container (figure 1, item 1) by left clicking them. Multiple projects could be selected by holding Shift or Control and left clicking them.
Right click on selected projects and choose import and process from appearing context menu (figure 4). The appearing submenu offers a set of predefined processing pipelines for processing data in different ways depending on user choice and preprocessing status.
Project designer dialog (figure 5) shows for each selected project the original PLGS project structure and the targeted ISOQuant project structure, which is redefineable by drag-and-drop.
For each selected project every contained Expression Analysis may be selected to be imported and processed by ISOQuant by using Expression Analysis Selector (figure 6).
Automated processing of user chosen contents is initiated after project design or Expression Analysis selection is done. Depending on user choice, data is processed by different predefined analysis pipelines.
After successfully importing and processing data, newly processed projects appear inside projects in MySQL database container (figure 1, item 2). By selecting and right clicking on one of them, its processing results may be reported to a file (figure 7). Different types of report are available offering different points of view at the analysis results.


|
cds
1.5.0
|
Exception "RCU deadlock detected". More...
#include <cds/urcu/details/base.h>
Additional Inherited Members | |
| Public Member Functions inherited from cds::Exception | |
| Exception () | |
| Create empty exception. | |
| Exception (const char *pszMsg) | |
| Create exception with message. | |
| Exception (const std::string &strMsg) | |
| Create exception with message. | |
| virtual | ~Exception () throw () |
| Destructor. | |
| virtual const char * | what () const throw () |
| Return exception message. | |
| Protected Attributes inherited from cds::Exception | |
| std::string | m_strMsg |
| Exception message. | |
Exception "RCU deadlock detected".
This exception is raised when cds::opt::v::rcu_throw_deadlock deadlock checking policy is used, see cds::opt::rcu_check_deadlock option.


New hash objects are created by calling constructor functions:
These functions return the corresponding hash objects for calculating BLAKE2b or BLAKE2s. They optionally take these general parameters:
The following table shows limits for general parameters (in bytes):
| Hash | digest_size | len(key) | len(salt) | len(person) |
|---|---|---|---|---|
| BLAKE2b | 64 | 64 | 16 | 16 |
| BLAKE2s | 32 | 32 | 8 | 8 |
Note
BLAKE2 specification defines constant lengths for salt and personalization parameters, however, for convenience, this implementation accepts byte strings of any size up to the specified length. If the length of the parameter is less than specified, it is padded with zeros, thus, for example, b'salt' and b'salt\x00' is the same value. (This is not the case for key.)
These sizes are available as module constants described below.
Constructor functions also accept the following tree hashing parameters:
See section 2.10 in BLAKE2 specification for comprehensive review of tree hashing.
Hash objects have the following attributes and methods:
The size of the resulting digest in bytes. This is the value given to hash object constructor in digest_size argument.
The internal block size of the hash algorithm in bytes.
Update the hash object with the object, which must be interpretable as buffer of bytes
Note
For better multithreading performance, the Python GIL is released for data larger than 2047 bytes at hash object creation or on update to allow other threads to run.
Return the digest of the data so far.
Like digest() except the digest is returned as a string of double length, containing only hexadecimal digits.
Return a copy of the hash object.
Salt length (maximum length accepted by constructors).
Personalization string length (maximum length accepted by constructors).
Maximum key size.
Maximum digest size that the hash function can output.


{% extends "dashboard.html" %} {# Copyright (c) 2015-present, Philippine-California Advanced Research Institutes- The Village Base Station Project (PCARI-VBTS). All rights reserved. This source code is licensed under the BSD-style license found in the LICENSE file in the root directory of this source tree. #} {% load crispy_forms_tags %} {% load staticfiles i18n %} {% block dashboard-header %}
| Service | Description | Keyword | Number | Published | |
|---|---|---|---|---|---|
| {{ report.name }} | {{ report.description }} | {{ report.keyword }} | {{ report.number }} | {{ report.get_status_display }} | {% if report.status == "P" %} {% else %} {% endif %} |
| No result found. |


This is Charlotte's 🌸2021-2022🌸 Webpage!
For the class website project, I edited the style.css files for the main programming website. I adjusted the colors and fonts and commented out what the programming lines did on the page.
For my next project, I want to focus on the basics of coding, so I will explore the Khan Academy and Odin program and see which works best for me.
10/22/21 Update: I decided to start with the html/css Khan Academy programs, and have been working my way through the intro to html--I'm about 80% through this portion and am already finding myself integrating the material into my webpage.
10/29/21 Update: I have finished the entire Intro to HTML section, mostly watching videos and practicing examples. I am at the beginning of Intro to CSS. Some cool things I have learned are how to write in bold and italics, how to add headings (there are different tiers), how to add paragraphs, how to make regular and ordered lists, and a little bit on how to add images, which I will soon use for my own page.
11/5/21 Update: I am currently working on how to add images onto a page. Using what I learned from the basics of html, I cleaned up the code on my webpage. I also did my teachback on what I learned from html and it seemed to be helpful for the rest of the class. I am about 25% through the Intro to CSS.
11/12/21 Update: I was away for a bit due to extenuating circumstances, so I wasn't able to do much work. I did however get through a good amount of the Intro to CSS.
11/19/21 Update: I have been working through using style tags. Right now I am learning how to change the background color of a webpage and the background color of a paragraph. I am in the middle of one of the challenges and it seems like I did everything right but it won't let me move on to the next step. I will do some trouble-shooting and see if I can fix it.
12/3/21 Update: I worked through the issue on the CSS project, and have learned how to add color to headings and paragraphs with their corresponding tag names. I have been helping peers in editing their own webpages with what I have learned which has been really cool to see how my work applies.
12/10/21 Update: I want to start applying the things I have learned to my page.
12/17/21 Update: I wasn't sure if I was supposed to log an update since we didn't have school, but I have learned how to select elements on a webpage by tag name, id, and class. Selecting elements in a group can make it much easier to add style to certain aspects of the webpage. Happy holidays!! :)
1/27/22 Update: Unfortunately some of my updates were deleted with the new file changes. I have worked through the entire intro to html section. I also was able to finish the intro to CSS and made a mini project using CSS selectors that look at id or class, integrated ordered and unordered lists, and added color based on selectors. I am currntly working on more HTML tags.
2/4/22 Update: This week I have been learning how to add links and tables to a webpage.
Here is a table describing fruits:
| Fruits | Shape | Color |
|---|---|---|
| Blueberry | Circular | Blue |
| Grape | Circular | Purple |
| Kiwi | Oval | Green |
2/11/22 Update: This week I have been using what I learned about tables, links, and tags and worked on a project page within the Khan Academy program. I highlighted different areas using CSS selectors like id and class.
2/25/22 Update: This week I have been learning about internal links and html comments and applied them to project pages on Khan Academy. I also have been working more with tables to familiarize myself with them.
3/4/22 Update: I just reached the end of the More HTML Tags section of the topic. The final assignment was a project page on the Khan Academy Website. In it, I was instructed to make a recipe book. This means using lists, tables with columns and rows for ingredients, selecting by id and class to highlight various titles, internal links to jump from table of contents to specific recipes, and more.
3/10/22 Update: So far I have finished the Intro to HTML, Intro to CSS, More HTML Tags and am about 30% through the CSS Text Properties. I am learning about how to change font styles and sizes right now. I think I will continue to dabble in this as the year goes on because it is super easy and helpful.


Country
{{ physicalAddress?.countryCode | configCode: 'countries' | default }}
Province
{{ physicalAddress?.provinceCode | configCode: 'provinces' | default }}
Street Address
{{ physicalAddress?.street | default }}
City
{{ physicalAddress?.city | default }}
Postal Code
{{ physicalAddress?.postal | postal | default }}


Help! Your friend is trapped in a maze. In this game, we're going to get them out!
1) Delete the cat character (or “sprite”).
2) Choose a character to complete the maze.
3) Make the background (or “backdrop”) all one color.
4) Draw a white path for the character to follow. Don’t make the path too skinny or your maze will be very hard.
(Hint: Use the paintbrush or line-drawing tool. Find it close to the paint bucket. To make the brush or line thicker, adjust the number above the backdrop.)
5) Using two different colors, draw a starting point and and ending point for your maze.
6) Make your character small enough to fit inside the maze.
7) Make your character go to the starting point of the maze when the green flag is clicked.
(Hint: if you drag your character to the starting point, the block that says "Go to" will automatically record that location.)
8) The character will move based on the four different arrow keys.
To start, make your character move right when you press the right arrow key.
(Hint: Look in Events and Motion.)
9) When you press the up key, make your character point in the right direction and then move.
10) Make the other arrow keys (down and left) work the same way.
(Hint: you will also need to tell the character not to rotate.)
11) If your sprite touches a wall of the maze, have it go back to the starting point.
12) Make a second level for your maze game by making a second background.
Follow the same steps you used to create the background for Level 1, including painting the background one solid color, drawing a white path, and creating a finish line.
Make sure to use a different color from Level 1 for your background, but still leave a white path.
13) When you get to the endpoint sprite on Level 1, switch to the second backdrop and have your character go to the starting point for Level 2.
14) If your character touches the wall of the maze in Level 2, have it transport to the starting point of level 2.
(Hint: use the same strategy you used in Level 1.)
15) When the flag is clicked, make sure the background will start at Level 1.
16) When your character touches the finish spot, they’re free!
(Hint: there are many ways to tell the player that they have won the game. Choose one and be creative!)
17) Want to make the game even more your own? This is your chance. You can decorate the background, make obstacles, have the character greet you at the start or when you finish Level 1, etc. Be creative!


Here is my Contact Details :
Email id :-<EMAIL_ADDRESS>Contact NO 📞 :-<PHONE_NUMBER>
Anything You Want To Say :
Your Name:
Email:
Your Message:


Auto Pipes
Framework for Processing Sprinkler Drawings
Drawing:
Delete
Area:
Delete
For:
Branches
Threaded Main
Grooved Main
Grooved Main (RTL)
Welded Main
Welded Main (RTL)
Cut-Sheet
(Debug)


Increasing opacity, makes FADE IN animation
Decreasing opacity, makes FADE OUT animation
Negative translateY, makes it FASTER
Positive translateY, makes it SLOWER
Rotating 180 degree to left
Rotating 180 degree to right
See Demo 2


Huh? The 'brightness' level is really the ambient brightness of the camera, being picked up and shown through the video stream. It's amplified by having this bright strip of white (it works best in low light).


BonziWORLD
Leading the industry in gorilla-based chat clients.
Rules
1. You will immediately cease and not continue to use this site if you're not 13 years old and older.
2. You will not upload, post, discuss, request, or link to anything that violates local or United States law.
3. No using Vyond Style rants against other users.
4. No sexual harassment.
5.
6. Don't even try to inject JS to other users.
7. Don't abuse JavaScript.
8. Do not flood the server with JavaScript bots. Doing this will get you banned.
9. Don't use all caps just because you're mad.
10. Do not impersonate administrators such as any admin. This is strictly forbidden.
11. Spamming will get you muted, do not even try.
12. Posting NSFW videos such as: Body Inflation videos, etc is strictly prohibited. (This rule was added due to trolls posting fetishism videos from YouTube.)
13. Asking an admin for god mode, their color, is strictly prohibited.
14. Advertising in all forms is not welcome here.
15. Do not even try to abuse your admin powers.
16. Doing anything illegal in your local area/country is prohibited.
17. Begging for administrators and user only commands, colors, features can get you muted.
18. Do not even try to bypass our bans using proxys/VPN. Just wait for the ban to be expired!
19. You will not post personal information ("dox") or calls to invasion ("raids")


Across: 1. Aunt goes round city teams in order (14) 9. Laciest flexible material (7) 10. Criticise a revolutionary style (7) 11. Bring on fashionable dog (5) 12. Rage about note Ross returns to attacker (9) 13. Girl holds a lamp broken in The Canaries (3 6) 14. Aesop’s translation lacks a word for “sits” (5) 15. Upset bears with sword (5) 17. Keeping out US lexicon (9) 20. Poles follow Arthur back to lava flow in South Africa (9) 22. Follow scholar with principles (5) 23. Duck travels to find fruit (7) 24. Mr Bolan and I take on radio engineer (7) 25. Letters of agreement? (14) Down: 1. In space I sail into a particular area (14) 2. 14ac during second ascent (7) 3.  (9) 4. Praise account about mail dispute (7) 5. Casts doubts on Pugin’s grand construction (7) 6. Nine characters follow a girl (5) 7. Copper shillings are held by a large number of asset strippers (7) 8. ‘E enters private arrangement with agent (14) 14. Quietly taken around below and robbed! (9) 16. Well done! Now get inside and show boldness! (7) 17. Cockney feller drops back but passes (7) 18. See small group outside in Sri Lanka (7) 19. Rex comes in, dressed, to describe problem toenail (7) 21. Return piece of material to you and me as a sweetener (5)


UPDATE: Several people stabbed in London Bridge incident, declared act of terrorism
A man has been detained, according to Metropolitan Police
by Associated PressPolice say the stabbings and shooting at London Bridge has been declared a “terrorist incident” and that a man was shot dead.
The Metropolitan Police’s Assistant Commissioner Neil Basu says the suspect who died was wearing a hoax explosive vest.
Several people were stabbed close to London Bridge Friday afernoon, and a man has been detained.
The Metropolitan Police force says officer were called “to a stabbing at premises near to London Bridge.”
They say “a man has been detained by police. We believe a number of people have been injured.”
The news comes after witnesses reported hearing gunshots. Sky News reported that police had shot the apparent attacker.
BBC reporter John McManus was in the area and said he saw figures grappling on the bridge. He said: “I thought it was initially a fight,” but then shots rang out.
London Ambulance Service said it had crews on the scene.
Police could be seen ushering people away from the northern end of the bridge, which links the city’s business district with the south bank of the River Thames.
City of London Police, the force responsible for the business district, urged people to stay away from the area.
London Bridge was the scene of a 2017 attack when Islamic State-inspired attackers ran down people on the bridge, killing two, before stabbing several people to death in nearby Borough Market.
ALSO READ: Fatal London terror attack inquest hears from B.C. woman’s fiancé
The Associated Press


The local decoder sample shows how you can install a video decoder for use by the application when playing video encoded in a format supported by the decoder. This feature can be used to provide support for video formats not nativelly supported by Windows 8. As with all Media Plugins, the plugin is only available to this application and only when the application is running.
Video will be playing that is being decoded by the local decoder that was installed using the Windows 8 Media Plugin feature.


Package com.silabs.na.pcap
Class Pcap
- java.lang.Object
-
- com.silabs.na.pcap.Pcap
-
public class Pcap extends java.lang.Object
Entry level API for pcap support.
-
-
Field Summary
Fields Modifier and Type Field Description static int
PCAPNG_VERSION_MAJOR
Major version of pcapng written out by this library.static int
PCAPNG_VERSION_MINOR
Minor version of pcapng written out by this library.static int
RESOLUTION_MICROSECONDS
Resolution in microseconds.static int
RESOLUTION_NANOSECONDS
Resolution in nanoseconds.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static boolean
isFileCorrectType(java.io.File f)
Returns true if this file is of a correct type.static IPcapInput
openForReading(java.io.File f)
Opens a static file and returns the pcap stream.static IPcapOutput
openForWriting(java.io.File f)
Creates a PCAPNG file for writing, using local defaults for hardware and OS name.static IPcapOutput
openForWriting(java.io.File f, java.lang.String hardware, java.lang.String osName, java.lang.String applicationName)
Opens a file for writing.
-
-
-
Field Detail
-
RESOLUTION_MICROSECONDS
public static final int RESOLUTION_MICROSECONDS
Resolution in microseconds.- See Also:
- Constant Field Values
-
RESOLUTION_NANOSECONDS
public static final int RESOLUTION_NANOSECONDS
Resolution in nanoseconds.- See Also:
- Constant Field Values
-
PCAPNG_VERSION_MAJOR
public static final int PCAPNG_VERSION_MAJOR
Major version of pcapng written out by this library.- See Also:
- Constant Field Values
-
PCAPNG_VERSION_MINOR
public static final int PCAPNG_VERSION_MINOR
Minor version of pcapng written out by this library.- See Also:
- Constant Field Values
-
-
Method Detail
-
isFileCorrectType
public static boolean isFileCorrectType(java.io.File f)
Returns true if this file is of a correct type.- Parameters:
f
- File to use.- Returns:
- True if this file can be read with this library.
-
openForWriting
public static IPcapOutput openForWriting(java.io.File f) throws java.io.IOException
Creates a PCAPNG file for writing, using local defaults for hardware and OS name. It uses `java-pcap` as application name. If you wish to pass different value, use the other openForWriting() method.- Parameters:
f
- File to use.- Returns:
- Output object that can be used to add blocks to the file.
- Throws:
java.io.IOException
- from underlying IO operations.
-
openForWriting
public static IPcapOutput openForWriting(java.io.File f, java.lang.String hardware, java.lang.String osName, java.lang.String applicationName) throws java.io.IOException
Opens a file for writing.- Parameters:
f
- File to use.hardware
- String describing hardware used for creating this file.osName
- String describing operating system used in creation of this file.applicationName
- Name of the application creating the PCAPNG file.- Returns:
- Output object that can be used to add blocks to the file.
- Throws:
java.io.IOException
- from underlying IO operations.
-
openForReading
public static IPcapInput openForReading(java.io.File f) throws java.io.IOException
Opens a static file and returns the pcap stream.- Parameters:
f
- File to read.- Returns:
- Input object that can be used to retrieve data.
- Throws:
java.io.IOException
- from underlying IO operations.
-
-


Array vs. Hash, Hash vs. Array. Which one is better? How are they similar? How are they different? Well, I will tell you the short version of everything you will need to know to uses either one of these efficiently. I could give you a technical definition but the simple version is that they both store data. That's it, they keep your information in a nice easily accessible place. But why are there two? Why do we need both?
I know these two might be a little confusing but with real example you will see that they are straight forward. The simple way of looking at the difference between an array and a hash is to actually show you what they look like and how they work.
An array stores anything you put in it, it is a list of anything you would like. For example is you want to store your favorite sport teams; you can have an array like:
On the contrary, a hash is just a fancier version of an array. A hash: is a collection of key/value pairs. A hash looks like this:
In the same example as above, if you would like to add the sport in which your favorite team plays you can have a hash like:
Where you can put any values into the variables. Easy enough, a hash points an object to another object. A key and a value. Think of it putting an answer the question. The key as the question and the value as the answer. In a real life example, you know when you buy something online and you have to type in all of your info, like: name, address, zip, state and so on. A ruby website might use a hash to store all of this data. This is a little easier way of reading a hash.
Well that's it. Arrays and Hashes. Hashes and Arrays. I hope now you can successfully use each one of these. Once you get these down, it is much easier to store your data.


Saracens confirm they will not appeal 35-point deduction for salary cap breach
Premiership club Saracens have also accepted their £5.36million fine with chairman Nigel Wray
by Duncan BechSaracens have chosen not to appeal against their 35-point deduction and £5.36million fine for salary cap breaches.
The English and European champions and Premiership Rugby have released a joint statement declaring the verdict of the independent disciplinary panel will stand unchallenged.
In an apparent admission of guilt, Saracens chairman Nigel Wray said: "We have made mistakes and so, with humility, we must accept these penalties.
"As a club, we will now pull together and meet the challenges that lie ahead.
"We confirm our commitment to the salary cap, and the underlying principle of a level playing field, and will continue to work transparently with Premiership Rugby in this regard."
More to follow.


|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
#include <atomic>
#include <bits/bits.hpp>
#include <bounce/bounce.hpp>
#include <pthread.h>
#include <rtos/thread.hpp>
#include <string_view>
Classes | |
| class | os::posix::Thread |
| Create a POSIX thread. More... | |
Namespaces | |
| os | |
| FreeRTOS Condition Variable Implementation. | |
| os::posix | |
| POSIX types and definitions for OSX and Linux. | |
Macros | |
| #define | PTHREAD_STACK_MIN 8192 |
Enumerations | |
| enum | os::posix::pthread_priority : uint8_t { os::posix::pthread_priority::panic = 99, os::posix::pthread_priority::interrupt = 99, os::posix::pthread_priority::realtime = 99, os::posix::pthread_priority::veryHigh = 50, os::posix::pthread_priority::high = 40, os::posix::pthread_priority::aboveNormal = 30, os::posix::pthread_priority::normal = 20, os::posix::pthread_priority::belowNormal = 10, os::posix::pthread_priority::low = 5, os::posix::pthread_priority::lowest = 1, os::posix::pthread_priority::idle = 0 } |
| PThread priority values. More... | |
Functions | |
| constexpr posix::pthread_priority | os::posix::convert_to_pthread_priority (embvm::thread::priority p) noexcept |
| Convert between framework thread priorities and PThread priorities. More... | |
| #define PTHREAD_STACK_MIN 8192 |


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes
Hierarchy For All Packages
Package Hierarchies:
hr.caellian.flow.conversion
,
hr.caellian.flow.data
,
hr.caellian.flow.network
,
hr.caellian.flow.network.structure
,
hr.caellian.flow.network.transfer
Class Hierarchy
java.lang.Object
hr.caellian.flow.conversion.
ConversionManager
<T>
hr.caellian.flow.conversion.
ConversionRule
hr.caellian.flow.data.
FluxGroup
(implements java.util.function.Predicate<T>)
hr.caellian.flow.network.
NetworkBase
(implements hr.caellian.flow.network.
Network
)
hr.caellian.flow.data.
Pair
<A,B>
hr.caellian.flow.data.
Property
<T> (implements java.lang.Cloneable, java.io.Externalizable)
Interface Hierarchy
hr.caellian.flow.network.transfer.
FluxCompatible
hr.caellian.flow.network.transfer.
FluxReceiver
<B> (also extends hr.caellian.flow.network.transfer.
FluxConductor
, hr.caellian.flow.network.
NetworkComponent
)
hr.caellian.flow.network.transfer.
FluxConductor
hr.caellian.flow.network.transfer.
FluxContainer
<B> (also extends java.io.Externalizable, hr.caellian.flow.network.
NetworkComponent
)
hr.caellian.flow.network.transfer.
FluxEmitter
<B> (also extends hr.caellian.flow.network.
NetworkComponent
)
hr.caellian.flow.network.transfer.
FluxReceiver
<B> (also extends hr.caellian.flow.network.transfer.
FluxCompatible
, hr.caellian.flow.network.
NetworkComponent
)
java.util.function.Function<T,R>
hr.caellian.flow.conversion.
Converter
<T,R>
hr.caellian.flow.network.
Network
hr.caellian.flow.network.
NetworkComponent
hr.caellian.flow.network.transfer.
FluxContainer
<B> (also extends java.io.Externalizable, hr.caellian.flow.network.transfer.
FluxConductor
)
hr.caellian.flow.network.transfer.
FluxEmitter
<B> (also extends hr.caellian.flow.network.transfer.
FluxConductor
)
hr.caellian.flow.network.transfer.
FluxReceiver
<B> (also extends hr.caellian.flow.network.transfer.
FluxCompatible
, hr.caellian.flow.network.transfer.
FluxConductor
)
hr.caellian.flow.network.structure.
StructureComponent
hr.caellian.flow.network.structure.
StructureCore
hr.caellian.flow.network.structure.
StructureDelegate
hr.caellian.flow.network.structure.
StructureCore
hr.caellian.flow.network.structure.
StructureDelegate
hr.caellian.flow.data.
PropertyManager
hr.caellian.flow.data.
Flux
<S> (also extends java.io.Externalizable)
java.io.Serializable
java.io.Externalizable
hr.caellian.flow.data.
Flux
<S> (also extends hr.caellian.flow.data.
PropertyManager
)
hr.caellian.flow.network.transfer.
FluxContainer
<B> (also extends hr.caellian.flow.network.transfer.
FluxConductor
, hr.caellian.flow.network.
NetworkComponent
)
hr.caellian.flow.data.
FluxType
<B>
Enum Hierarchy
java.lang.Object
java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable)
hr.caellian.flow.conversion.
ConversionRule.FilterMode
hr.caellian.flow.conversion.
ConversionRule.ConvertDirection
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes


Which Department you think is appropriate in case of doubt choose medicine Anaesthetics Cardiology ENT Gastroenterology Surgery Gynaecology Haematology Urology Medicine Symptoms:


| Author | Jos de Jong, Almende B.V. |
| Webpage | Chap Links Library |
| License | Apache License, Version 2.0 |
Related pages:
TreeGrid is a visualization which represents data in a hierarchical grid view. It is designed to handle large amouts of data. Items in the TreeGrid can contain custom HTML. Information in one item can be spread over multiple columns, and can have action buttons on the right.
Data for the TreeGrid can be a JSON array or a DataConnector. A DataConnector can be used to connect to a datasource on a server (for example a RESTful web service). Only data which is actually displayed in the TreeGrid will be requested via this DataConnector. TreeGrid offers built in functionality to sort, arrange, and filter items.
The TreeGrid is a stand alone library, and can be used as a Google Visualization Chart. It runs in every modern browser without additional requirements, and is tested on Firefox 3.6, Safari 5.0, Chrome 6.0, Opera 10.6, and Internet Explorer 8+. There is a GWT wrapper available to use the TreeGrid in GWT (Google Web Toolkit), you can find relevant documentation here.
A TreeGrid can be connected to a DataConnector, which is useful for data manipulation and lazy loading. When you are dealing with a small amount of readonly data, it is probably easiest to put the data in a simple JSON Array which is loaded from the server at once. But when dealing with large amounts of data, it will not be feasible to retrieve all data from the server, as it will take to much time and is very expensive for the server.
When dealing with large amounts of data, it is a good idea to use a DataConnector. When a TreeGrid is connected to a DataConnector, every time it redraws it will request the data that is currently displayed from the DataConnector. The DataConnector will check if it has the data in cache, and if it is up to date. If not, it will retrieve the missing data from the server.
Only retrieving the displayed items saves a lot of load on the server side, and keeps the client side fast and reactive. Retrieval of data is always done asynchronously. While retrieving data, the TreeGrid will display a "loading" status for the items being retrieved, to give the user feedback.
A DataConnector typically retrieves data from a RESTful web service. To connect a TreeGrid with your own RESTful web service, you will need to create your own DataConnector which connects to your RESTful web service.
How to create or use a DataConnector is described on the documentation page of the DataConnector at dataconnector.html.
The TreeGrid supports drag and drop operations inside one TreeGrid, and between different TreeGrids in one page.
Drag and drop is only supported when using a DataConnector. The dataconnector can be configured to allow or disallow various drag and drop actions. Drag and Drop must be supported by the server side of the DataConnector, A drag and drop action will remove items from one DataConnector, and append them to another DataConnector.
The Treegrid supports nesting of data (hence the name TreeGrid). Each item can have one or multiple fields containing a JSON Array or a DataConnector. In that case, the item becomes expandable. When expanded, the item displays the nested data as a subgrid right below itself.
Below a treegrid example.
More examples can be found in the examples directory.
<!DOCTYPE HTML>   <title>TreeGrid demo</title>   <link rel="stylesheet" type="text/css" href="../treegrid.css">

To load the TreeGrid, download the file treegrid.zip and unzip it in a sub directory timeline on your html page. Include the files treegrid.js and treegrid.css in the head of your html code.
 <link rel="stylesheet" type="text/css" href="treegrid/treegrid.css">The class name of the TreeGrid is
links.TreeGrid
var treegrid = new links.TreeGrid(container);After being loaded, the treegrid can be drawn via the method
draw
,
provided with data and options.
treegrid.draw(data, options);
where data is a DataConnector
or a JSON Array
,
and options is a name-value map in the JSON format.
The TreeGrid supports two data types: a JSON Array or a DataConnector. The items in an array or dataconnector can contain pointers to other arrays or dataconnectors, and the two data types can be mixed together.
The TreeGrid supports a JSON Array as data format. The data from an array will be loaded once, and is usable for static data. The array must contain objects, with an arbitrary set of fields.
A table is constructed as:
var data = [ {"firstname": "John", "lastname": "Smith", "age": 15, "class": "B10"}, {"firstname": "Susan", "lastname": "Brown", "age": 16, "class": "B10"}, {"firstname": "David", "lastname": "Harris", "age": 14, "class": "B10"} ];
In case of a DataConnector
, data will be loaded and updated via
this data connector. There are a couple of DataConnectors provided by default,
such as the DataTable
. New data connectors can be created for
other data sources, such as a RESTful web service or a database connection.
The DataConnector is documented on the page dataconnector.html.
When an item has one or multiple fields containing a JSON Array or a DataConnector, the item becomes expandable. When expanded, the item displays this nested data as a subgrid right below itself.
Example:
var data = [ {"name": "John", "friends": [{"name": "Susan"},{"name": "Harry"}]}, {"name": "Susan"}, {"name": "David"} ];
Each item can contain a field _actions
, containing an array
with one or multiple actions. Actions are displayed as a button or
a link at the right side of an item. When clicked, an
event will be fired.
| Name | Type | Required | Description |
|---|---|---|---|
| event | String | yes | The name of the action. When the action is clicked, an event with this name is fired. Example events are 'delete', 'edit', 'open'. An eventlistener can be used to link an event to execution of a method. |
| image | String | no | Url of an image to be displayed on the button. If no image is provided, the action will be displayed as a link. |
| text | String | no | The value of text will be displayed as text for the link.
If no text is provided, the name of the event will be displayed on the link.
Only applicable when no image is provided. |
| title | String | no | When the mouse is hovered over an action, the title will be displayed. The title can contain an explanation of the action. |
Example:
var data = [ {"name": "John", "_actions": [{"event": "edit"}, {"event": "delete"}]}, {"name": "Susan", "_actions": [{"event": "edit"}, {"event": "delete"}]}, {"name": "David", "_actions": [{"event": "edit"}, {"event": "delete"}]} ];
Each item can contain a field _icons
, containing an array
with one or multiple items. Items are displayed as an image at the left side
of an item and can be used for visualizing a status or the type of an icon.
| Name | Type | Required | Description |
|---|---|---|---|
| height | String | no | The height of the icon, for example '32px'. |
| image | String | yes | Url of an image to be displayed. |
| title | String | no | When the mouse is hovered over an icon, the title will be displayed. The title can contain an explanation of the icon. |
| width | String | no | The width of the icon, for example '32px'. |
Example:
var data = [ {"name": "John", "_icons": [{"image": "img/leader.png"}, {"image": "img/online.png"}]}, {"name": "Susan", "_icons": [{"image": "img/member.png"}]}, {"name": "David", "_icons": [{"image": "img/member.png"}, {"image": "img/online.png"}]} ];
All fields starting with an underscore _
are hidden by default.
For example to store a hidden field containing an id in the items, on can use
a field named _id
. The visibility and order of fields can be
specified in more detail via a DataConnector (see dataconnector.html).
Example:
var data = [ {"name": "John", "_id": "145912", "_rev": 6}, {"name": "Susan", "_id": "142831", "_rev": 2}, {"name": "David", "_id": "148692", "_rev": 14} ];
Options can be used to customize the treegrid. Options are defined as a JSON object.
var options = { 'width': '100%', 'height': '600px', 'items': { 'defaultHeight' : 24, // px } };
The following options are available.
| Name | Type | Default | Description |
|---|---|---|---|
| width | String | '100%' | The width of the TreeGrid in pixels or as a percentage. |
| height | String | '100%' | The width of the TreeGrid in pixels or as a percentage. |
| indentationWidth | Number | 20 | The indentation with for nested grids, in pixels. |
| items.defaultHeight | Number | 24 | The default height of an item in pixels. This height is used to estimate the height of the TreeGrid contents for items which are not yet loaded. |
| items.minHeight | Number | 24 | The minimum height of an item in pixels. A minimum height of an item prevents the item from getting a height of zero in case of no data. |
The TreeGrid supports the following methods. Note that methods to manipulate the data are not available in the TreeGrid, but in the DataConnector of the data.
| Method | Return Type | Description |
|---|---|---|
| draw(data, options) | none | Loads data, sets options, and draws the TreeGrid.
data is a JSON Array or DataTable.
options is an (optional) JSON Object containing values for options.
|
| redraw() | none | Redraw the TreeGrid. When the height of the TreeGrid has been changed (for example when the height is 100% and the page is resized), this method can be used to force a redraw of the TreeGrid. |
The TreeGrid fires events after an item is selected, expanded, collaped, or when an action button is clicked. The events can be cached by creating a listener. Listeners can be registered using the event messages from the Google API or event messages from the CHAP Links library.
Here an example on how to catch a select
event.
function onselect(properties) { alert('Selected items: ' + JSON.stringify(properties.items)); } google.visualization.events.addListener(mytreegrid, 'select', onselect); // Or, when using the event bus of the CHAP Links library: // links.events.addListener(mytreegrid, 'select', onselect);
The following events are available.
| name | Description | Properties |
|---|---|---|
| collapse | Collapse an item. |
|
| expand | Expand an item. This is only possible when the item contains nested data. This data will be displayed as a subgrid below the item. |
|
| rangechange | Visible range is changing. Fired repeatedly while the user is modifying the visible window by moving (dragging) or by zooming (scrolling). | none |
| rangechanged | Visible range has been changed. Fired once after the user has modified the visible window by moving (dragging) or by zooming (scrolling) | none |
| ready | The chart is ready for external method calls. If you want to interact with the chart, and call methods after you draw it, you should set up a listener for this event before you call the draw method, and call them only after the event was fired. | none |
| select | When the user clicks on an item on the treegrid, it will be selected. The visualization then fires this event. The event is also fired when an item is deselected. This will return an empty array with items. |
|
The TreeGrid can fire user defined events. This occurs when an item has action buttons defined (see Actions). The custom defined action event will be fired when the user clicks the action button.
All HTML elements of the TreeGrid have a class name and a default css style. The styles can be overwritten, which enables full customization of the layout of the TreeGrid.
For example, to change the background and the border of the header, include the following code inside the head of your html code or in a separate stylesheet.

| Class name | Description | Default style |
|---|---|---|
| .treegrid-frame | The frame surrounding the TreeGrid. |
border: 1px solid #BEBEBE; color: #1A1A1A; |
| .treegrid-header | The header, showing field names on top of a Grid. |
font-weight: bold; background-color: #D5DDF6; border-bottom: 1px solid #97B0F8; |
| .treegrid-header-field | An individual field containing one field name in the header. |
padding: 4px; |
| .treegrid-item | One item in a Grid, one row containing field values. |
border-width: 1px; border-style: solid; border-color: white; |
| .treegrid-item | A selected item. |
background-color: #FFFF80; border-color: #FFD500; |
| .treegrid-item-dirty | An item which data is not up to date. |
color: gray; |
|
.treegrid-droparea, .treegrid-item-dragover |
A Drop area for dropping an item on another item. |
background-color: #F5F5F5; border: 1px dashed gray; |
| .treegrid-item-dragbefore | A Drop area for dropping an item in between two items. |
border-top-color: red; border-style: dashed; border-top-width: 1px; border-bottom-width: 1px; |
| .treegrid-item-dragbefore | A single field value in an item. |
padding: 4px; |
| .treegrid-drag-image | Layout for the drag image, shown when dragging one or multiple items around. |
padding: 5px; background-color: #FFFF80; border: 1px solid #FFD500; font-weight: bold; border-radius: 3px; z-index: 99999; position: relative; |
| .treegrid-fold | The fold/expand button in folded state. |
background: url('img/treeRightTriangleBlack.png') no-repeat center; cursor: pointer; |
| .treegrid-unfold | The fold/expand button in expanded state. |
background: url('img/treeDownTriangleBlack.png') no-repeat center; cursor: pointer; |
| .treegrid-loading-icon | Icon shown on the left side of an item when the item is being loaded. |
background: url('img/wait16trans.gif') no-repeat center; |
| .treegrid-error-icon | Icon shown on the left side of an item when there was an error retrieving this item. |
background: url('img/warning-icon-16.png') no-repeat center; |
|
.treegrid-fold, .treegrid-unfold, .treegrid-loading-icon, .treegrid-error-icon |
Layout equal for all buttons and icons. |
width: 20px; height: 24px; border: none; float: left; |
| .treegrid-verticalscroll-background | Background of the vertical scrollbar. |
background-color: gray; opacity: 0.1; filter: alpha(opacity=10);*/ /* For IE8 and earlier */ width: 100%; height: 100%; |
| .treegrid-verticalscroll-bar | The draggable bar of the vertical scrollbar. |
background-color: #BFBFBF; border: 2px solid white; |
| .treegrid-loading | Text displaying a loading message. | color: lightgray; |
| .treegrid-error | Text displaying an error message. | color: red; |
|
.treegrid-loading, .treegrid-error |
Style common for the loading and error messages | padding: 4px; |
| .treegrid-icons | Container for the icons, shown on the left of an item. | |
| .treegrid-icon | A single icon image, shown on the left of an item. |
padding-right: 4px; padding-bottom: 4px; |
|
.treegrid-actions |
Container for the action buttons, shown on the right of an item. | padding: 4px; |
|
.treegrid-action-image |
Style for an individual action, when an image is provided and the action is displayed as a button. |
margin-left: 5px; border: none; |
|
.treegrid-action-link |
Style for an individual action, when no image is provided and the action button is displayed as a link. |
margin-left: 5px; color: #97B0F8; |
|
.treegrid-action-link:hover |
Style for an individual action link when hovered. |
color: red; |
All code and data are processed and rendered in the browser. No data is sent to any server.


# Metrics collection can also be controlled at runtime by sending control messages
# to /system/cluster-metrics actor: `akka.cluster.metrics.{CollectionStartMessage,CollectionStopMessage}`
enabled = on
# FQCN of the metrics collector implementation.
# It must implement `akka.cluster.metrics.MetricsCollector` and
# have public constructor with akka.actor.ActorSystem parameter.
# Will try to load in the following order of priority:
# 1) configured custom collector 2) internal `SigarMetricsCollector` 3) internal `JmxMetricsCollector`
provider = ""
# Try all 3 available collector providers, or else fail on the configured custom collector provider.
fallback = true
# How often metrics are sampled on a node.
# Shorter interval will collect the metrics more often.
# Also controls frequency of the metrics publication to the node system event bus.
sample-interval = 3s
# How often a node publishes metrics information to the other nodes in the cluster.
# Shorter interval will publish the metrics gossip more often.
gossip-interval = 3s
# How quickly the exponential weighting of past data is decayed compared to
# new data. Set lower to increase the bias toward newer values.
# The relevance of each data sample is halved for every passing half-life
# duration, i.e. after 4 times the half-life, a data sample’s relevance is
# reduced to 6% of its original relevance. The initial relevance of a data
# sample is given by 1 – 0.5 ^ (collect-interval / half-life).
# See http://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average
moving-average-half-life = 12s
}
}
# Cluster metrics extension serializers and routers.
akka.actor {
# Protobuf serializer for remote cluster metrics messages.
serializers {
akka-cluster-metrics = "akka.cluster.metrics.protobuf.MessageSerializer"
}
# Interface binding for remote cluster metrics messages.
serialization-bindings {
"akka.cluster.metrics.ClusterMetricsMessage" = akka-cluster-metrics
}
# Globally unique metrics extension serializer identifier.
serialization-identifiers {
"akka.cluster.metrics.protobuf.MessageSerializer" = 10
}
# Provide routing of messages based on cluster metrics.
router.type-mapping {
cluster-metrics-adaptive-pool = "akka.cluster.metrics.AdaptiveLoadBalancingPool"
cluster-metrics-adaptive-group = "akka.cluster.metrics.AdaptiveLoadBalancingGroup"
}
}
akka-cluster-tools ~~~~~~~~~~~~------
############################################
# Akka Cluster Tools Reference Config File #
############################################
# This is the reference config file that contains all the default settings.
# Make your edits/overrides in your application.conf.
# //#pub-sub-ext-config
# Settings for the DistributedPubSub extension
akka.cluster.pub-sub {
# Actor name of the mediator actor, /system/distributedPubSubMediator
name = distributedPubSubMediator
# Start the mediator on members tagged with this role.
# All members are used if undefined or empty.
role = ""
# The routing logic to use for 'Send'
# Possible values: random, round-robin, broadcast
routing-logic = random
# How often the DistributedPubSubMediator should send out gossip information
gossip-interval = 1s
# Removed entries are pruned after this duration
removed-time-to-live = 120s
# Maximum number of elements to transfer in one message when synchronizing the registries.
# Next chunk will be transferred in next round of gossip.
max-delta-elements = 3000
# The id of the dispatcher to use for DistributedPubSubMediator actors.
# If not specified default dispatcher is used.
# If specified you need to define the settings of the actual dispatcher.
use-dispatcher = ""
}
# //#pub-sub-ext-config
# Protobuf serializer for cluster DistributedPubSubMeditor messages
akka.actor {
serializers {
akka-pubsub = "akka.cluster.pubsub.protobuf.DistributedPubSubMessageSerializer"
}
serialization-bindings {
"akka.cluster.pubsub.DistributedPubSubMessage" = akka-pubsub
}
serialization-identifiers {
"akka.cluster.pubsub.protobuf.DistributedPubSubMessageSerializer" = 9
}
}
# //#receptionist-ext-config
# Settings for the ClusterClientReceptionist extension
akka.cluster.client.receptionist {
# Actor name of the ClusterReceptionist actor, /system/receptionist
name = receptionist
# Start the receptionist on members tagged with this role.
# All members are used if undefined or empty.
role = ""
# The receptionist will send this number of contact points to the client
number-of-contacts = 3
# The actor that tunnel response messages to the client will be stopped
# after this time of inactivity.
response-tunnel-receive-timeout = 30s
# The id of the dispatcher to use for ClusterReceptionist actors.
# If not specified default dispatcher is used.
# If specified you need to define the settings of the actual dispatcher.
use-dispatcher = ""
# How often failure detection heartbeat messages should be received for
# each ClusterClient
heartbeat-interval = 2s
# Number of potentially lost/delayed heartbeats that will be
# accepted before considering it to be an anomaly.
# The ClusterReceptionist is using the akka.remote.DeadlineFailureDetector, which
# will trigger if there are no heartbeats within the duration
# heartbeat-interval + acceptable-heartbeat-pause, i.e. 15 seconds with
# the default settings.
acceptable-heartbeat-pause = 13s
# Failure detection checking interval for checking all ClusterClients
failure-detection-interval = 2s
}
# //#receptionist-ext-config
# //#cluster-client-config
# Settings for the ClusterClient
akka.cluster.client {
# Actor paths of the ClusterReceptionist actors on the servers (cluster nodes)
# that the client will try to contact initially. It is mandatory to specify
# at least one initial contact.
# Comma separated full actor paths defined by a string on the form of
# "akka.tcp://system@hostname:port/system/receptionist"
initial-contacts = []
# Interval at which the client retries to establish contact with one of
# ClusterReceptionist on the servers (cluster nodes)
establishing-get-contacts-interval = 3s
# Interval at which the client will ask the ClusterReceptionist for
# new contact points to be used for next reconnect.
refresh-contacts-interval = 60s
# How often failure detection heartbeat messages should be sent
heartbeat-interval = 2s
# Number of potentially lost/delayed heartbeats that will be
# accepted before considering it to be an anomaly.
# The ClusterClient is using the akka.remote.DeadlineFailureDetector, which
# will trigger if there are no heartbeats within the duration
# heartbeat-interval + acceptable-heartbeat-pause, i.e. 15 seconds with
# the default settings.
acceptable-heartbeat-pause = 13s
# If connection to the receptionist is not established the client will buffer
# this number of messages and deliver them the connection is established.
# When the buffer is full old messages will be dropped when new messages are sent
# via the client. Use 0 to disable buffering, i.e. messages will be dropped
# immediately if the location of the singleton is unknown.
# Maximum allowed buffer size is 10000.
buffer-size = 1000
# If connection to the receiptionist is lost and the client has not been
# able to acquire a new connection for this long the client will stop itself.
# This duration makes it possible to watch the cluster client and react on a more permanent
# loss of connection with the cluster, for example by accessing some kind of
# service registry for an updated set of initial contacts to start a new cluster client with.
# If this is not wanted it can be set to "off" to disable the timeout and retry
# forever.
reconnect-timeout = off
}
# //#cluster-client-config
# Protobuf serializer for ClusterClient messages
akka.actor {
serializers {
akka-cluster-client = "akka.cluster.client.protobuf.ClusterClientMessageSerializer"
}
serialization-bindings {
"akka.cluster.client.ClusterClientMessage" = akka-cluster-client
}
serialization-identifiers {
"akka.cluster.client.protobuf.ClusterClientMessageSerializer" = 15
}
}
# //#singleton-config
akka.cluster.singleton {
# The actor name of the child singleton actor.
singleton-name = "singleton"
# Singleton among the nodes tagged with specified role.
# If the role is not specified it's a singleton among all nodes in the cluster.
role = ""
# When a node is becoming oldest it sends hand-over request to previous oldest,
# that might be leaving the cluster. This is retried with this interval until
# the previous oldest confirms that the hand over has started or the previous
# oldest member is removed from the cluster (+ akka.cluster.down-removal-margin).
hand-over-retry-interval = 1s
# The number of retries are derived from hand-over-retry-interval and
# akka.cluster.down-removal-margin (or ClusterSingletonManagerSettings.removalMargin),
# but it will never be less than this property.
min-number-of-hand-over-retries = 10
}
# //#singleton-config
# //#singleton-proxy-config
akka.cluster.singleton-proxy {
# The actor name of the singleton actor that is started by the ClusterSingletonManager
singleton-name = ${akka.cluster.singleton.singleton-name}
# The role of the cluster nodes where the singleton can be deployed.
# If the role is not specified then any node will do.
role = ""
# Interval at which the proxy will try to resolve the singleton instance.
singleton-identification-interval = 1s
# If the location of the singleton is unknown the proxy will buffer this
# number of messages and deliver them when the singleton is identified.
# When the buffer is full old messages will be dropped when new messages are
# sent via the proxy.
# Use 0 to disable buffering, i.e. messages will be dropped immediately if
# the location of the singleton is unknown.
# Maximum allowed buffer size is 10000.
buffer-size = 1000
}
# //#singleton-proxy-config
# Serializer for cluster ClusterSingleton messages
akka.actor {
serializers {
akka-singleton = "akka.cluster.singleton.protobuf.ClusterSingletonMessageSerializer"
}
serialization-bindings {
"akka.cluster.singleton.ClusterSingletonMessage" = akka-singleton
}
serialization-identifiers {
"akka.cluster.singleton.protobuf.ClusterSingletonMessageSerializer" = 14
}
}
akka-cluster-sharding ~~~~~~~~~~~~---------
###############################################
# Akka Cluster Sharding Reference Config File #
###############################################
# This is the reference config file that contains all the default settings.
# Make your edits/overrides in your application.conf.
# //#sharding-ext-config
# Settings for the ClusterShardingExtension
akka.cluster.sharding {
# The extension creates a top level actor with this name in top level system scope,
# e.g. '/system/sharding'
guardian-name = sharding
# Specifies that entities runs on cluster nodes with a specific role.
# If the role is not specified (or empty) all nodes in the cluster are used.
role = ""
# When this is set to 'on' the active entity actors will automatically be restarted
# upon Shard restart. i.e. if the Shard is started on a different ShardRegion
# due to rebalance or crash.
remember-entities = off
# If the coordinator can't store state changes it will be stopped
# and started again after this duration, with an exponential back-off
# of up to 5 times this duration.
coordinator-failure-backoff = 5 s
# The ShardRegion retries registration and shard location requests to the
# ShardCoordinator with this interval if it does not reply.
retry-interval = 2 s
# Maximum number of messages that are buffered by a ShardRegion actor.
buffer-size = 100000
# Timeout of the shard rebalancing process.
handoff-timeout = 60 s
# Time given to a region to acknowledge it's hosting a shard.
shard-start-timeout = 10 s
# If the shard is remembering entities and can't store state changes
# will be stopped and then started again after this duration. Any messages
# sent to an affected entity may be lost in this process.
shard-failure-backoff = 10 s
# If the shard is remembering entities and an entity stops itself without
# using passivate. The entity will be restarted after this duration or when
# the next message for it is received, which ever occurs first.
entity-restart-backoff = 10 s
# Rebalance check is performed periodically with this interval.
rebalance-interval = 10 s
# Absolute path to the journal plugin configuration entity that is to be
# used for the internal persistence of ClusterSharding. If not defined
# the default journal plugin is used. Note that this is not related to
# persistence used by the entity actors.
journal-plugin-id = ""
# Absolute path to the snapshot plugin configuration entity that is to be
# used for the internal persistence of ClusterSharding. If not defined
# the default snapshot plugin is used. Note that this is not related to
# persistence used by the entity actors.
snapshot-plugin-id = ""
# Parameter which determines how the coordinator will be store a state
# valid values either "persistence" or "ddata"
# The "ddata" mode is experimental, since it depends on the experimental
# module akka-distributed-data-experimental.
state-store-mode = "persistence"
# The shard saves persistent snapshots after this number of persistent
# events. Snapshots are used to reduce recovery times.
snapshot-after = 1000
# Setting for the default shard allocation strategy
least-shard-allocation-strategy {
# Threshold of how large the difference between most and least number of
# allocated shards must be to begin the rebalancing.
rebalance-threshold = 10
# The number of ongoing rebalancing processes is limited to this number.
max-simultaneous-rebalance = 3
}
# Timeout of waiting the initial distributed state (an initial state will be queried again if the timeout happened)
# works only for state-store-mode = "ddata"
waiting-for-state-timeout = 5 s
# Timeout of waiting for update the distributed state (update will be retried if the timeout happened)
# works only for state-store-mode = "ddata"
updating-state-timeout = 5 s
# The shard uses this strategy to determines how to recover the underlying entity actors. The strategy is only used
# by the persistent shard when rebalancing or restarting. The value can either be "all" or "constant". The "all"
# strategy start all the underlying entity actors at the same time. The constant strategy will start the underlying
# entity actors at a fix rate. The default strategy "all".
entity-recovery-strategy = "all"
# Default settings for the constant rate entity recovery strategy
entity-recovery-constant-rate-strategy {
# Sets the frequency at which a batch of entity actors is started.
frequency = 100 ms
# Sets the number of entity actors to be restart at a particular interval
number-of-entities = 5
}
# Settings for the coordinator singleton. Same layout as akka.cluster.singleton.
# The "role" of the singleton configuration is not used. The singleton role will
# be the same as "akka.cluster.sharding.role".
coordinator-singleton = ${akka.cluster.singleton}
# The id of the dispatcher to use for ClusterSharding actors.
# If not specified default dispatcher is used.
# If specified you need to define the settings of the actual dispatcher.
# This dispatcher for the entity actors is defined by the user provided
# Props, i.e. this dispatcher is not used for the entity actors.
use-dispatcher = ""
}
# //#sharding-ext-config
# Protobuf serializer for Cluster Sharding messages
akka.actor {
serializers {
akka-sharding = "akka.cluster.sharding.protobuf.ClusterShardingMessageSerializer"
}
serialization-bindings {
"akka.cluster.sharding.ClusterShardingSerializable" = akka-sharding
}
serialization-identifiers {
"akka.cluster.sharding.protobuf.ClusterShardingMessageSerializer" = 13
}
}
akka-distributed-data ~~~~~~~~~~~~---------
##############################################
# Akka Distributed DataReference Config File #
##############################################
# This is the reference config file that contains all the default settings.
# Make your edits/overrides in your application.conf.
#//#distributed-data
# Settings for the DistributedData extension
akka.cluster.distributed-data {
# Actor name of the Replicator actor, /system/ddataReplicator
name = ddataReplicator
# Replicas are running on members tagged with this role.
# All members are used if undefined or empty.
role = ""
# How often the Replicator should send out gossip information
gossip-interval = 2 s
# How often the subscribers will be notified of changes, if any
notify-subscribers-interval = 500 ms
# Maximum number of entries to transfer in one gossip message when synchronizing
# the replicas. Next chunk will be transferred in next round of gossip.
max-delta-elements = 1000
# The id of the dispatcher to use for Replicator actors. If not specified
# default dispatcher is used.
# If specified you need to define the settings of the actual dispatcher.
use-dispatcher = ""
# How often the Replicator checks for pruning of data associated with
# removed cluster nodes.
pruning-interval = 30 s
# How long time it takes (worst case) to spread the data to all other replica nodes.
# This is used when initiating and completing the pruning process of data associated
# with removed cluster nodes. The time measurement is stopped when any replica is
# unreachable, so it should be configured to worst case in a healthy cluster.
max-pruning-dissemination = 60 s
# Serialized Write and Read messages are cached when they are sent to
# several nodes. If no further activity they are removed from the cache
# after this duration.
serializer-cache-time-to-live = 10s
}
#//#distributed-data
# Protobuf serializer for cluster DistributedData messages
akka.actor {
serializers {
akka-data-replication = "akka.cluster.ddata.protobuf.ReplicatorMessageSerializer"
akka-replicated-data = "akka.cluster.ddata.protobuf.ReplicatedDataSerializer"
}
serialization-bindings {
"akka.cluster.ddata.Replicator$ReplicatorMessage" = akka-data-replication
"akka.cluster.ddata.ReplicatedDataSerialization" = akka-replicated-data
}
serialization-identifiers {
"akka.cluster.ddata.protobuf.ReplicatedDataSerializer" = 11
"akka.cluster.ddata.protobuf.ReplicatorMessageSerializer" = 12
}
}
Contents


Sign In
Don't have an account?
Sign Up
Join by Meeting Number
Watch Video
Want to explore Webex?
Learn more


{% extends 'site.html' %} {% block content %} {% load static %}
Raise your hand and you will receive a paper content. Once the timer runs out, this papers will be picked up.
How does grass look?
How does trees look?
How does a lovely house look like?
What will you drive?
What does a good town needs?
What does a good town needs?
Imagine that you are working in New York, in a job that is paying you $15 an hour for a 40-hour working week, which gives you earnings of $600 per week. There are 168 hours in a week, so after 40 hours of work, you are left with 128 hours of free time for all your non-work activities, including leisure and sleep.
Suppose, by some happy stroke of luck, you are offered a job at a much higher wage—six times higher.
Your new hourly wage is $90. Not only that, your prospective employer lets you choose how many hours you work each week.
Will you carry on working 40 hours per week?
If you do, your weekly pay will be six times higher than before: $3,600.
Or will you decide that you are satisfied with the goods you can buy with your weekly earnings of $600?
You can now earn this by cutting your weekly hours to just 6 hours and 40 minutes (a six-day weekend!), and enjoy about 26% more free time than before.
Or would you use this higher hourly wage rate to raise both your weekly earnings and your free time by some intermediate amount?
The idea of suddenly receiving a six-fold increase in your hourly wage and being able to choose your own hours of work might not seem very realistic. But we know from Unit 2 that technological progress since the Industrial Revolution has been accompanied by a dramatic rise in wages. In fact, the average real hourly earnings of American workers did increase more than six-fold during the twentieth century.
And while employees ordinarily cannot just tell their employer how many hours they want to work, over long time periods the typical hours that we work do change. In part, this is a response to how much we prefer to work. As individuals, we can choose part-time work, although this may restrict our job options. Political parties also respond to the preferences of voters, so changes in typical working hours have occurred in many countries as a result of legislation that imposes maximum working hours.
So have people used economic progress as a way to consume more goods, enjoy more free time, or both?
The answer is both, but in different proportions in different countries. While hourly earnings increased by more than six-fold for twentieth century Americans, their average annual work time fell by a little more than one-third. So people at the end of this century enjoyed a four-fold increase in annual earnings with which they could buy goods and services, but a much smaller increase of slightly less than one-fifth in their free time. (The percentage increase in free time would be higher if you did not count time spent asleep as free time, but it is still small relative to the increase in earnings.)

Figure 3.1 shows trends in income and working hours since 1870 in three countries.
As in Unit 1, income is measured as per-capita GDP in US dollars. This is not the same as average earnings, but gives us a useful indication of average income for the purposes of comparison across countries and through time. In the late nineteenth and early twentieth century, average income approximately trebled, and hours of work fell substantially. During the rest of the twentieth century, income per head rose four-fold.
Hours of work continued to fall in the Netherlands and France (albeit more slowly) but levelled off in the US, where there has been little change since 1960.
While many countries have experienced similar trends, there are still differences in outcomes. Figure 3.2 illustrates the wide disparities in free time and income between countries in 2013. Here we have calculated free time by subtracting average annual working hours from the number of hours in a year. You can see that the higher-income countries seem to have lower working hours and more free time, but there are also some striking differences between them. For example, the Netherlands and the US have similar levels of income, but Dutch workers have much more free time. And the US and Turkey have similar amounts of free time but a large difference in income.
In many countries there has been a huge increase in living standards since 1870. But in some places people have carried on working just as hard as before but consumed more, while in other countries people now have much more free time.
Why has this happened?
We will provide some answers to this question by studying a basic problem of economics—scarcity—and how we make choices when we cannot have all of everything that we want, such as goods and free time.
Study the model of decision making that we use carefully! It will be used repeatedly throughout the course, because it provides insight into a wide range of economic problems.
Currently you work for 40 hours per week at the wage rate of £20 an hour. Your free hours are defined as the number of hours not spent in work per week, which in this case is 24 hours × 7 days − 40 hours = 128 hours per week. Suppose now that your wage rate has increased by 25%. If you are happy to keep your total weekly income constant, then:
Look again at Figure 3.1, which depicts the annual number of
hours worked against GDP per capita in the US, France and the
Netherlands, between 1870 and 2000.
Which of the following is true?
In Unit 2 we saw that labour can be thought of as an input in the production of goods and services. Labour is work; for example the welding, assembling, and testing required to make a car. Work activity is often difficult to measure, which is an important point in later units because employers find it difficult to determine the exact amount of work that their employees are doing. We also cannot measure the effort required by different activities in a comparable way (for example, baking a cake versus building a car), so economists often measure labour simply as the number of hours worked by individuals engaged in production, and assume that as the number of hours worked increases, the amount of goods produced also increases.
As a student, you make a choice every day: how many hours to spend studying. There may be many factors influencing your choice: how much you enjoy your work, how difficult you find it, how much work your friends do, and so on. Perhaps part of the motivation to devote time to studying comes from your belief that the more time you spend studying, the higher the grade you will be able to obtain at the end of the course. In this unit, we will construct a simple model of a student’s choice of how many hours to work, based on the assumption that the more time spent working, the better the final grade will be.
At first sight there seems to be only a weak relationship between the average number of hours per week the students spent studying and their Grade Point Average (GPA) at the end of the semester. This is in Figure 3.3.
The 84 students have been split into two groups according to their hours of study. The average GPA for those with high study time is 3.43—only just above the GPA of those with low study time.
| Figure 3.3 | High study time (42 students) | Low study time (42 students) |
|---|---|---|
| Average GPA (out of 4.0 GPA scale) | 3.43 | 3.36 |
Looking more closely, we discover this study is an interesting illustration of why we should be careful when we make ceteris paribus assumptions (remember from Unit 2 that this means ‘holding other things constant’). Within each group of 42 students there are many potentially important differences. The conditions in which they study would be an obvious difference to consider: an hour working in a busy, noisy room may not be as useful as an hour spent in the library.
In Figure 3.4, we see that students studying in poor environments are more likely to study longer hours. Of these 42 students, 31 of them have high study time, compared with only 11 of the students with good environments. Perhaps they are distracted by other people around them, so it takes them longer to complete their assignments than students who work in the library.
| Figure 3.4 | High study time (out of 4.0 GPA scale) | Low study time (out of 4.0 GPA scale) |
|---|---|---|
| Good environment | 3.63 (11 students) | 3.43 (31 students) |
| Poor environment | 3.36 (31 students) | 3.17 (11 students) |
Now look at the average GPAs in the top row: if the environment is good, students who study longer do better—and you can see in the bottom row that high study time pays off for those who work in poor environments too. This relationship was not as clear when we didn’t consider the effect of the study environment.
So, after taking into account environment and other relevant factors (including the students’ past GPAs, and the hours they spent in paid work or partying), the psychologists estimated that an additional hour of study time per week raised a student’s GPA at the end of the semester by 0.24 points on average. If we take two students who are the same in all respects except for study time, we predict that the one who studies for longer will have a GPA that is 0.24 points higher for each extra hour: study time raises GPA by 0.24 per hour, ceteris paribus.
Alexei’s marginal product is the increase in his grade from increasing study time by one hour. Follow the steps in Figure 3.5 to see how to calculate the marginal product, and compare it with the average product.
| Study hours | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 or more |
| Grade | 0 | 20 | 33 | 42 | 50 | 57 | 63 | 69 | 74 | 78 | 81 | 84 | 86 | 88 | 89 | 90 |
At each point on the production function, the marginal product is the increase in the grade from studying one more hour. The marginal product corresponds to the slope of the production function.
Alexei’s production function in Figure 3.5 gets flatter the more hours he studies, so the marginal product of an additional hour falls as we move along the curve.
The marginal product is
diminishing
. The model captures the idea that an extra hour of study helps a lot if you are not studying much, but if you are already studying a lot, then studying even more does not help very much.
In Figure 3.5, output increases as the input increases, but the marginal product falls—the function becomes gradually flatter.
A production function with this shape is described as
concave
.
If we compare the marginal and average products at any point on Alexei’s production function, we find that the marginal product is below the average product. For example, when he works for four hours his average product is 50/4 = 12.5 points per hour, but an extra hour’s work raises his grade from 50 to 57, so the marginal product is 7. This happens because the marginal product is diminishing: each hour is less productive than the ones that came before. And it implies that the average product is also diminishing: each additional hour of study per day lowers the average product of all his study time, taken as a whole.
Lastly, notice that if Alexei was already studying for 15 hours a day, the marginal product of an additional hour would be zero. Studying more would not improve his grade. As you might know from experience, a lack of either sleep or time to relax could even lower Alexei’s grade if he worked more than 15 hours a day. If this were the case, then his production function would start to slope downward, and Alexei’s marginal product would become negative.
Marginal change is an important and common concept in economics. You will often see it marked as a slope on a diagram. With a production function like the one in Figure 3.5, the slope changes continuously as we move along the curve. We have said that when Alexei studies for 4 hours a day the marginal product is 7, the increase in the grade from one more hour of study. Because the slope of the curve changes between 4 and 5 hours on the horizontal axis, this is only an approximation to the actual marginal product. More precisely, the marginal product is the rate at which the grade increases, per hour of additional study. In Figure 3.5 the true marginal product is the slope of the tangent to the curve at 4 hours. In this unit, we will use approximations so that we can work in whole numbers, but you may notice that sometimes these numbers are not quite the same as the slopes.
The marginal product is the rate of change of the grade at 4 hours of study. Suppose Alexei has been studying for 4 hours a day, and studies for 1 minute longer each day (a total of 4.016667 hours). Then, according to the graph, his grade will rise by a very small amount—about 0.124. A more precise estimate of the marginal product (the rate of change) would be:
If we looked at smaller changes in study time even further (the rise in grade for each additional second of study per day, for example) we would get closer to the true marginal product, which is the slope of the tangent to the curve at 4 hours of study.
Figure 3.5 shows Alexei’s production function, with the final
grade (the output) related to the number of hours spent studying (the
input).
Which of the following is true?
If Alexei has the production function shown in Figure 3.5, how many hours per day will he choose to study? The decision depends on his preferences —the things that he cares about. If he cared only about grades, he should study for 15 hours a day. But, like other people, Alexei also cares about his free time—he likes to sleep, go out or watch TV. So he faces a trade-off: how many percentage points is he willing to give up in order to spend time on things other than study? We illustrate his preferences using Figure 3.6, with free time on the horizontal axis and final grade on the vertical axis. Free time is defined as all the time that he does not spend studying. Every point in the diagram represents a different combination of free time and final grade. Given his production function, not every combination that Alexei would want will be possible, but for the moment we will only consider the combinations that he would prefer.
We can assume:
Suppose he says he is indifferent between A and D, meaning he would feel equally satisfied with either outcome. We say that these two outcomes would give Alexei the same utility
And we know that he prefers A to B, so B provides lower utility than A or D. A systematic way to graph Alexei’s preferences would be to start by looking for all of the combinations that give him the same utility as A and D. We could ask Alexei another question: ‘Imagine that you could have the combination at A (15 hours of free time, 84 points). How many points would you be willing to sacrifice for an extra hour of free time? Suppose that after due consideration, he answers ‘nine’. Then we know that he is indifferent between A and E (16 hours, 75 points). Then we could ask the same question about combination E, and so on until point D. Eventually we could draw up a table like the one in Figure 3.6. Alexei is indifferent between A and E, between E and F, and so on, which means he is indifferent between all of the combinations from A to D.
The combinations in the table are plotted in Figure 3.6, and joined together to form a downward-sloping curve, called an indifference curve , which joins together all of the combinations that provide equal utility or ‘satisfaction’.
If you look at the three curves drawn in Figure 3.6, you can see that the one through A gives higher utility than the one through B. The curve through C gives the lowest utility of the three. To describe preferences we don’t need to know the exact utility of each option; we only need to know which combinations provide more or less utility than others.
The curves we have drawn capture our typical assumptions about people’s preferences between two goods. In other models, these will often be consumption goods such as food or clothing, and we refer to the person as a consumer. In our model of a student’s preferences, the goods are ‘final grade’ and ‘free time’. Notice that:
To understand the last property in the list, look at Alexei’s indifference curves, which are plotted again in Figure 3.7. If he is at A, with 15 hours of free time and a grade of 84, he would be willing to sacrifice 9 percentage points for an extra hour of free time, taking him to E (remember that he is indifferent between A and E).
We say that his
marginal rate of substitution (MRS)
between grade points and free time at A is nine; it is the reduction in his grade that would keep Alexei’s utility constant following a one-hour increase of free time.
We have drawn the indifference curves as becoming gradually flatter because it seems reasonable to assume that the more free time and the lower the grade he has, the less willing he will be to sacrifice further percentage points in return for free time, so his MRS will be lower. In Figure 3.7 we have calculated the MRS at each combination along the indifference curve. You can see that, when Alexei has more free time and a lower grade, the MRS—the number of percentage points he would give up to get an extra hour of free time—gradually falls.
The MRS is just the slope of the indifference curve, and it falls as we move to the right along the curve. If you think about moving from one point to another in Figure 3.7, you can see that the indifference curves get flatter if you increase the amount of free time, and steeper if you increase the grade. When free time is scarce relative to grade points, Alexei is less willing to sacrifice an hour for a higher grade: his MRS is high and his indifference curve is steep.
As the analysis in Figure 3.7 shows, if you move up the vertical line through 15 hours, the indifference curves get steeper: the MRS increases. For a given amount of free time, Alexei is willing to give up more grade points for an additional hour when he has a lot of points compared to when he has few (for example, if he was in danger of failing the course). By the time you reach A, where his grade is 84, the MRS is high; grade points are so plentiful here that he is willing to give up 9 percentage points for an extra hour of free time.
You can see the same effect if you fix the grade and vary the amount of free time. If you move to the right along the horizontal line for a grade of 54, the MRS becomes lower at each indifference curve. As free time becomes more plentiful, Alexei becomes less and less willing to give up grade points for more time.
Alexei faces a dilemma: we know from looking at his preferences that he wants both his grade and his free time to be as high as possible. But given his production function, he cannot increase his free time without getting a lower grade in the exam. Another way of expressing this is to say that free time has an opportunity cost : to get more free time, Alexei has to forgo the opportunity of getting a higher grade. In economics, opportunity costs are relevant whenever we study individuals choosing between alternative and mutually exclusive courses of action. When we consider the cost of taking action A we include the fact that if we do A, we cannot do B. So ‘not doing B’ becomes part of the cost of doing A. This is called an opportunity cost because doing A means forgoing the opportunity to do B.
Imagine that an accountant and an economist have been asked to report the cost of going to a concert, A, in a theatre, which has a $25 admission cost. In a nearby park there is concert B, which is free but happens at the same time.
Suppose that the most you would have been willing to pay to attend the free concert in the park (if it wasn’t free) was $15. The benefit of your next best alternative to concert A would be $15 of enjoyment in the park. This is the opportunity cost of going to concert A.
So the total
economic cost
of concert A is $25 + $15 = $40. If the pleasure you anticipate from being at concert A is greater than the economic cost, say $50, then you will forego concert B and buy a ticket to the theatre. On the other hand, if you anticipate $35 worth of pleasure from concert A, then the economic cost of $40 means you will not choose to go to the theatre. In simple terms, given that you have to pay $25 for the ticket, you will instead opt for concert B, pocketing the $25 to spend on other things and enjoying $15 worth of benefit from the free park concert.
Why don’t accountants think this way?
Because it is not their job. Accountants are paid to keep track of money, not to provide decision rules on how to choose among alternatives,
some of which do not have a stated price. But making sensible decisions and predicting how sensible people will make decisions involve more than keeping track of money. An accountant might argue that the park concert is irrelevant:
In Unit 2, we said that if an action brings greater net benefits than the next best alternative, it yields an economic rent and you will do it. Another way of saying this is that you receive an economic rent from taking an action when it results in a benefit greater than its economic cost (the sum of out-of-pocket and opportunity costs). The table in Figure 3.8 summarizes the example of your choice of which concert to attend.
| Figure 3.8 | A high value on the theatre choice (A) | A low value on the theatre choice (A) |
|---|---|---|
| Out-of-pocket cost (price of ticket for A) | $25 | $25 |
| Opportunity cost (foregone pleasure of B, park concert) | $15 | $15 |
| Economic cost (sum of out-of-pocket and opportunity cost) | $40 | $40 |
| Enjoyment of theatre concert (A) | $50 | $35 |
| Economic rent (enjoyment minus economic cost) | $10 | -$5 |
| Decision | A: Go to the theatre concert | B: Go to the park concert |
You are a taxi driver in Melbourne who earns A$50 for a day’s work.
You have been offered a one-day ticket to the Australian Open for
A$40. As a tennis fan, you value the experience at A$100.
With this information, what can we say?


Resize this page to see the columns move!
This porridge is too hot!
This porridge is too cold!
This porridge tastes juuust right!