(.) parents study intervention child obesity HCHF children practices behaviors childhood Parents {border-style healthy significant px;} #ffffff;} FPPs food parent parenting changes completed health Nutr feeding research responsive Rhode reported curriculum data low-income diet pre/post using Child Healthy Hispanic participants prevention .±. assess community home pilot review sessions studies weight Health activity current intake intervention. n = ) participate physical recruitment retention time (%) Blue Food Intake Island University age children, consent delivered environment frequency including informed measures population pre, px; used years {font-family Behav CFPQ Int Mean Obes Parent balance eating font-size forms non-responsive post; seven study, thank treatment year BMI FPPs, HCHF-BC Pediatr Rev Table analysis completers design double; high impact included intervention, interventions nutrition outcomes participation program provide related significantly strategies study. systematic use vs. (i.e. -item Given U.S. addition addition, and/or availability border-color border-width complete days dietary encouraging example, given implementation importance improvements include influence modeling parental parents, participated practice provided results solid; statistically variety week, work written {font-style {font-weight (), (Table ./s--- Act Availability BMC Behavior CEHC Community Department Dickin Dollahite Navegantes Nutrition Phys Pre Public United Weight activity, attrition available barriers behavior body bold calculated community-based courier; development did early education em; encouragement evidence-based experimental families family fruit help higher improve improving involving items; longitudinal low-income, manuscript. mean overweight parent-reported populations possible post-intervention prevent primarily programs pt;} p = .) quality questions role school similar status status, styles, survey targeted targeting teaching total validated variables


Orcs are one of the most important races in the Warcraft computer game series. Originally presented as a race of typically savage monsters, more recent Warcraft games have revised their image into that of "savage but noble" warriors and shamans. Orcs originally hailed from the world of Draenor until the majority of the clans were tricked into serving a force of world-destroying demons, named the Burning Legion. Under the Legion's influence, the Orcish Horde slaughtered their onetime allies the Draenei and then were mystically transported to Azeroth to conquer it in the Legion's name. After two devastating wars, the orcs were finally defeated by the Human Alliance and rounded up into internment camps.
Warcraft orcs are humanoid, but prodigiously muscled, with broad noses and distinctive tusked mouths. There are many tribes of Orc, each one being specialized: Frostwolves serves as cavalry with their dire wolves, while the Shadowmoon clan provides powerful shamans. The Orcs originally had brown skin, but demonic corruption turned it green, and further demonic influence can turn it red. Male Orcs are significantly larger than humans, around 6.5 feet (2.0 m) tall when standing straight, however most male Orcs have a hunched back. Females, which first appeared as playable characters in World of Warcraft, are slightly larger than a human female and while much more slender than their male counterparts, are nonetheless well-muscled. The tusks of female orcs are very small, and are arguably more exaggerated canines than tusks. Orc warriors wear little armor but have horned helmets and carry wielding axes.
Warcraft is one of the few settings in which orcs are not inherently evil and, after significant plot developments in the latest Warcraft games, can even be heroic. One could consider the orcs to be unfairly treated by humans and not only misunderstood, but vilified. The humans' enmity and prejudice towards the Orcs can be traced back to the first and second invasions and could be partially justified, as it was orcs under the control of the Burning Legion that invaded. Despite the best efforts of reformist orcs (such as Thrall) to usher in an era of peace between humans and orcs, humankind's suspicions towards the orcs are further exacerbated by the bellicose and expansionist attitudes of parts of orc society, such as the Warsong Clan, who encroach upon the ancestral territories of the Night Elves, the allies of the humans. Thrall's orcs have occasionally formed successful alliances with humans.


STYPTSTIX- silver nitrate and potassium nitrate stick
Henry Schein Inc.
Disclaimer: This drug has not been found by FDA to be safe and effective, and this labeling has not been approved by FDA. For further information about unapproved drugs, click here.
INDICATIONS: For cauterization of skin or mucous membrane and for removing warts and granulated tissue.
DIRECTIONS: The healthcare professional moistens the applicator tip with distilled water and applies the tip to the affected area. The strength of the action is controlled by the dilution with distilled water. One StyptStix applicator is generally sufficient for each application.
CONTRAINDICATIONS: Silver salts stain tissue black due to deposition of reduced silver. The stain gradually disappears within a period of two weeks.
WARNINGS: KEEP OUT OF REACH OF CHILDREN. The active ingredients are poisonous and may be fatal when ingested in sufficient doses. The symptoms include toxic gastroenteritis, which may lead to coma, convulsion, paralysis and profound alteration of respiration. If poisoning occurs, consult a physician. In case of eye contact, hold eyes open and immediately flush thoroughly with water for at least 15 minutes and consult a physician.
PRECAUTION: Prolonged ingestion or absorption of silver compounds (organic or inorganic) whether originating industrially or therapeutically leads to disposition of silver in connective tissues, producing a slate-blue discoloration of the skin known asargyria. This discoloration may also appear on mucous membranes such as the margins of gums. The sclera of the eye is also stained. The nature of the pigment is not definitely known, it may be metallic silver or oxide. This discoloration exists throughout life but does not cause any systematic symptoms. While small patches may be removed, this method is so tedious and painful as to be impractical for large areas.
CAUTION: FEDERAL LAW PROHIBITS DISPENSING WITHOUT PRESCRIPTION.
ACTION: Silver nitrate has been commonly used as a caustic antiseptic and an astringent. Potassium nitrate has been used as a topical antiseptic on mucous membranes. The degree of action depends upon the concentration employed and the period of time during which the compound is allowed to act. Silver nitrate is precipitated by chloride ions, so washing with a solution of sodium chloride (table salt) will quickly stop the action of silver ions.
|
STYPTSTIX
silver nitrate applicator stick | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
|
| Labeler - Henry Schein Inc. (012430880) |


Class Resource.Id
Inheritance
System.Object
Resource.Id
Namespace:xAPIWrapper.Tests.Droid
Assembly:xAPIWrapper.Tests.Droid.dll
Syntax
Fields
View Source
action_bar
Declaration
public const int action_bar = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_bar_activity_content
Declaration
public const int action_bar_activity_content = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_bar_container
Declaration
public const int action_bar_container = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_bar_root
Declaration
public const int action_bar_root = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_bar_spinner
Declaration
public const int action_bar_spinner = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_bar_subtitle
Declaration
public const int action_bar_subtitle = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_bar_title
Declaration
public const int action_bar_title = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_context_bar
Declaration
public const int action_context_bar = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_divider
Declaration
public const int action_divider = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int action_menu_divider = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int action_menu_presenter = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_mode_bar
Declaration
public const int action_mode_bar = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action_mode_bar_stub
Declaration
public const int action_mode_bar_stub = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int action_mode_close_button = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
action0
Declaration
public const int action0 = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
activity_chooser_view_content
Declaration
public const int activity_chooser_view_content = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
alertTitle
Declaration
public const int alertTitle = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
always
Declaration
public const int always = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
art
Declaration
public const int art = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
beginning
Declaration
public const int beginning = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
bottom
Declaration
public const int bottom = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int buttonPanel = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int buttons = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
cancel_action
Declaration
public const int cancel_action = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
center
Declaration
public const int center = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
center_horizontal
Declaration
public const int center_horizontal = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
center_vertical
Declaration
public const int center_vertical = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
checkbox
Declaration
public const int checkbox = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
chronometer
Declaration
public const int chronometer = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
clip_horizontal
Declaration
public const int clip_horizontal = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
clip_vertical
Declaration
public const int clip_vertical = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
collapseActionView
Declaration
public const int collapseActionView = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
contentPanel
Declaration
public const int contentPanel = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
custom
Declaration
public const int custom = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
customPanel
Declaration
public const int customPanel = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
decor_content_parent
Declaration
public const int decor_content_parent = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int default_activity_button = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
default_control_frame
Declaration
public const int default_control_frame = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
disableHome
Declaration
public const int disableHome = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
disconnect
Declaration
public const int disconnect = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
edit_query
Declaration
public const int edit_query = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
end
Declaration
public const int end = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
end_padder
Declaration
public const int end_padder = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
enterAlways
Declaration
public const int enterAlways = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
enterAlwaysCollapsed
Declaration
public const int enterAlwaysCollapsed = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
exitUntilCollapsed
Declaration
public const int exitUntilCollapsed = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int expand_activities_button = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
expanded_menu
Declaration
public const int expanded_menu = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
fill
Declaration
public const int fill = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
fill_horizontal
Declaration
public const int fill_horizontal = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
fill_vertical
Declaration
public const int fill_vertical = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
fixed
Declaration
public const int fixed = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
home
Declaration
public const int home = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
homeAsUp
Declaration
public const int homeAsUp = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
icon
Declaration
public const int icon = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
ifRoom
Declaration
public const int ifRoom = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
image
Declaration
public const int image = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
info
Declaration
public const int info = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
left
Declaration
public const int left = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
line1
Declaration
public const int line1 = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
line3
Declaration
public const int line3 = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
list_item
Declaration
public const int list_item = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
listMode
Declaration
public const int listMode = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int media_actions = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int media_route_control_frame = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int media_route_list = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int media_route_volume_layout = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int media_route_volume_slider = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
middle
Declaration
public const int middle = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
mini
Declaration
public const int mini = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
multiply
Declaration
public const int multiply = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
never
Declaration
public const int never = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
none
Declaration
public const int none = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
normal
Declaration
public const int normal = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
parallax
Declaration
public const int parallax = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
parentPanel
Declaration
public const int parentPanel = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
pin
Declaration
public const int pin = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
play_pause
Declaration
public const int play_pause = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
progress_circular
Declaration
public const int progress_circular = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
progress_horizontal
Declaration
public const int progress_horizontal = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
radio
Declaration
public const int radio = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
right
Declaration
public const int right = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
route_name
Declaration
public const int route_name = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
screen
Declaration
public const int screen = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int scroll = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int scrollable = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int scrollView = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_badge
Declaration
public const int search_badge = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_bar
Declaration
public const int search_bar = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
Declaration
public const int search_button = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_close_btn
Declaration
public const int search_close_btn = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_edit_frame
Declaration
public const int search_edit_frame = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_go_btn
Declaration
public const int search_go_btn = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_mag_icon
Declaration
public const int search_mag_icon = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_plate
Declaration
public const int search_plate = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_src_text
Declaration
public const int search_src_text = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
search_voice_btn
Declaration
public const int search_voice_btn = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
select_dialog_listview
Declaration
public const int select_dialog_listview = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
settings
Declaration
public const int settings = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
shortcut
Declaration
public const int shortcut = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
showCustom
Declaration
public const int showCustom = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
showHome
Declaration
public const int showHome = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
showTitle
Declaration
public const int showTitle = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
snackbar_action
Declaration
public const int snackbar_action = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
snackbar_text
Declaration
public const int snackbar_text = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
split_action_bar
Declaration
public const int split_action_bar = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
src_atop
Declaration
public const int src_atop = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
src_in
Declaration
public const int src_in = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
src_over
Declaration
public const int src_over = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
start
Declaration
public const int start = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
status_bar_latest_event_content
Declaration
public const int status_bar_latest_event_content = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
stop
Declaration
public const int stop = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
submit_area
Declaration
public const int submit_area = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
subtitle
Declaration
public const int subtitle = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
tabMode
Declaration
public const int tabMode = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
text
Declaration
public const int text = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
text2
Declaration
public const int text2 = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
textSpacerNoButtons
Declaration
public const int textSpacerNoButtons = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
time
Declaration
public const int time = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
title
Declaration
public const int title = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
title_bar
Declaration
public const int title_bar = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
title_template
Declaration
public const int title_template = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
top
Declaration
public const int top = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
topPanel
Declaration
public const int topPanel = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
up
Declaration
public const int up = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
useLogo
Declaration
public const int useLogo = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
view_offset_helper
Declaration
public const int view_offset_helper = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
withText
Declaration
public const int withText = null
Field Value
| Type |
Description |
| System.Int32 |
|
View Source
wrap_content
Declaration
public const int wrap_content = null
Field Value
| Type |
Description |
| System.Int32 |
|


3
1 Not many of you should become teachers, my brothers, knowing that we will receive greater judgment.
2 For we all stumble in many ways. If anyone does not stumble in his words, he is a perfect man, able to control his whole body also.
3 Now if we put the horses' bits into their mouths they obey us, and we can turn their whole bodies.
4 Notice also that ships, although they are so large and are driven by strong winds, are steered by a very small rudder wherever the pilot desires to turn.
5 Likewise the tongue is a small body part, yet boasts great things. Notice how great a forest is kindled by a spark!
6 The tongue is also a fire, a world of sinfulness set among our body parts, which defiles the whole body and sets on fire the road of life, and itself is set on fire by hell.
7 Every kind of wild animal, bird, reptile, and sea creature is being tamed and has been tamed by mankind,
8 but no one among man is able to tame the tongue; it is a restless evil, full of deadly poison.
9 By the tongue we praise our Lord and Father, and by it we curse men, who have been made in God's image.
10 Out of the same mouth is spoken blessing and cursing. My brothers, these things should not be.
11 Does a spring pour out both fresh and bitter water?
12 My brothers, can a fig tree grow olives, or a grapevine grow figs? Neither can a salt spring produce fresh water.
13 Who among you is wise and understanding? Let that person demonstrate a good life by his works in the humility that comes from wisdom.
14 But if you have bitter jealousy and selfish ambition in your heart, do not boast and lie against the truth.
15 This is not a wisdom that comes down from above, but instead is earthly, unspiritual, demonic.
16 For where jealousy and selfish ambition exist, there is confusion and every vile practice.
17 But the wisdom from above is first pure, then peace-loving, gentle, warm-hearted, full of mercy and good fruit, without favoring certain people, and sincere.
18 And the fruit of righteousness is planted in peace for those who make peace.


This is an example of multiple docs in a single file. List of people younger than 70: <% let people = db.find('default',{ $and: [ { name: {$exts: true }}, { age: { $lt: 70}} ]}, {name : 1}) ^ Error: Can't canonicalize query: BadValue unknown operator: $exts people.forEach(doc => { let id = doc.id let res = doc.execute().json %> - ${res.name} = ${res.age} <% }) %>


ConnectionDialogRepository(pipelineDao: PipelineDao)
This repository is used by CreateConnectionDialog.


public class LXPColorPicker
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
int |
current
x and y are the coordinates of the top left point
w and h are the width and height
current holds the last color selected
|
int |
h
x and y are the coordinates of the top left point
w and h are the width and height
current holds the last color selected
|
int |
w
x and y are the coordinates of the top left point
w and h are the width and height
current holds the last color selected
|
int |
x
x and y are the coordinates of the top left point
w and h are the width and height
current holds the last color selected
|
int |
y
x and y are the coordinates of the top left point
w and h are the width and height
current holds the last color selected
|
| Constructor and Description |
|---|
LXPColorPicker(int x,
int y,
int w,
int h,
int c)
LXColorPicker
Displays a color wheel type color picker.
|
| Modifier and Type | Method and Description |
|---|---|
double |
degreesToPoint(double dy,
double dx)
degreesToPoint is a utility function for calculating the angle from the origin to a point
|
void |
draw(processing.core.PApplet p)
draw simply renders the image
|
byte |
getBlue() |
byte |
getGreen() |
byte |
getRed() |
static int |
HueSat2RGB(double h,
double s) |
static int |
HueSat2RGB(int h,
int s) |
boolean |
pick(processing.core.PApplet p)
Updates the color selected if the mouse is down inside the picker.
|
public int x
public int y
public int w
public int h
public int current
public LXPColorPicker(int x, int y, int w, int h, int c)
x
- location in Processing Applet windowy
- location in Processing Applet windoww
- widthh
- heightc
- initial colorpublic static int HueSat2RGB(int h, int s)
public static int HueSat2RGB(double h, double s)
public double degreesToPoint(double dy, double dx)
dy
- y coordinate of the pointdx
- x coordinate of the pointpublic void draw(processing.core.PApplet p)
p
- the Processing Applet in which to draw the pickerpublic boolean pick(processing.core.PApplet p)
p
- the Processing Appletpublic byte getRed()
public byte getGreen()
public byte getBlue()


Chapter 4 Data Importing & “Tidy” Data
In Subsection 1.2.1, we introduced the concept of a data frame in R: a rectangular spreadsheet-like representation of data where the rows correspond to observations and the columns correspond to variables describing each observation. In Section 1.4, we started exploring our first data frame: the flights
data frame included in the nycflights13
package. In Chapter 2 we created visualizations based on the data included in flights
and other data frames such as weather
. In Chapter 3, we learned how to wrangle data, in other words take existing data frames and transform/modify them to suit our ends.
In this final chapter of the “Data Science via the tidyverse” portion of the book, we extend some of these ideas by discussing a type of data formatting called “tidy” data. You will see that having data stored in “tidy” format is about more than what the everyday definition of the term “tidy” might suggest: having your data “neatly organized.” Instead, we define the term “tidy” as it’s used by data scientists who use R, outlining a set of rules by which data is saved.
Knowledge of this type of data formatting was not necessary for our treatment of data visualization in Chapter 2 and data wrangling in Chapter 3. This is because all the data used was already in “tidy” format. In this chapter, we’ll now see that this format is essential to using the tools we covered up until now. Furthermore, it will also be useful for all subsequent chapters in this book when we cover regression and statistical inference. First however, we’ll show you how to import spreadsheet data in R.
Needed packages
Let’s load all the packages needed for this chapter (this assumes you’ve already installed them). If needed, read Section 1.3 for information on how to install and load R packages.
library(dplyr)
library(ggplot2)
library(readr)
library(tidyr)
library(nycflights13)
library(fivethirtyeight)
4.1 Importing data
Up to this point, we’ve almost entirely used data stored inside of an R package. Say instead you have your own data saved on your computer or somewhere online? How can you analyze this data in R? Spreadsheet data is often saved in one of the following three formats.
First, a Comma Separated Values .csv
file. You can think of a .csv
file as a bare-bones spreadsheet where:
- Each line in the file corresponds to one row of data/one observation.
- Values for each line are separated with commas. In other words, the values of different variables are separated by commas.
- The first line is often, but not always, a header row indicating the names of the columns/variables.
Second, an Excel .xlsx
spreadsheet file. This format is based on Microsoft’s proprietary Excel software. As opposed to a bare-bones .csv
file, an .xlsx
Excel files contains a lot of meta-data, or in other words, data about data. Recall we saw a previous example of meta-data in Section 3.4 when adding “group structure” meta-data to a data frame by using the group_by()
verb. Some examples of Excel spreadsheet meta-data include the use of bold and italic fonts, colored cells, different column widths, and formula macros.
Third, a Google Sheets file, which is a “cloud” or online-based way to work with a spreadsheet. Google Sheets allows you to download your data in both comma separated values .csv
and Excel .xlsx
formats. One way to import Google Sheets data is to go to the Google Sheets menu bar -> File -> Download as -> Select “Microsoft Excel” or “Comma-separated values” and then load that data into R.
We’ll cover two methods for importing .csv
and .xlsx
spreadsheet data in R: one using the console and the other using RStudio’s graphical user interface, abbreviated by “GUI.”
4.1.1 Using the console
First, let’s import a Comma Separated Values .csv
file that exists on the internet. The .csv
file dem_score.csv
contains ratings of the level of democracy in different countries spanning 1952 to 1992 and is accessible at https://moderndive.com/data/dem_score.csv. Let’s use the read_csv()
function from the readr
(Wickham, Hester, and Francois 2018) package to read it off the web, import it into R, and save it in a data frame called dem_score
.
library(readr)
dem_score <- read_csv("https://moderndive.com/data/dem_score.csv")
dem_score
# A tibble: 96 x 10
country `1952` `1957` `1962` `1967` `1972` `1977` `1982` `1987` `1992`
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Albania -9 -9 -9 -9 -9 -9 -9 -9 5
2 Argentina -9 -1 -1 -9 -9 -9 -8 8 7
3 Armenia -9 -7 -7 -7 -7 -7 -7 -7 7
4 Australia 10 10 10 10 10 10 10 10 10
5 Austria 10 10 10 10 10 10 10 10 10
6 Azerbaijan -9 -7 -7 -7 -7 -7 -7 -7 1
7 Belarus -9 -7 -7 -7 -7 -7 -7 -7 7
8 Belgium 10 10 10 10 10 10 10 10 10
9 Bhutan -10 -10 -10 -10 -10 -10 -10 -10 -10
10 Bolivia -4 -3 -3 -4 -7 -7 8 9 9
# … with 86 more rows
In this dem_score
data frame, the minimum value of -10
corresponds to a highly autocratic nation whereas a value of 10
corresponds to a highly democratic nation. Note also that backticks surround the different variable names. Variable names in R by default are not allowed to start with a number nor include spaces, but we can get around this fact by surrounding the column name with backticks. We’ll revisit the dem_score
data frame in a case study in the upcoming Section 4.3.
Note that the read_csv()
function included in the readr
package is different than the read.csv()
function that comes installed with R. While the difference in the names might seem trivial (an _
instead of a .
), the read_csv()
function is, in our opinion, easier to use since it can more easily read data off the web and generally imports data at a much faster speed. Furthermore, the read_csv()
function included in the readr
saves data frames as tibbles
by default. tibble
is short for “tidy table”; we’ll discuss what it makes for data to be “tidy” shortly in the upcoming Section 4.2.
4.1.2 Using RStudio’s interface
Let’s read in the exact same data, but this time from an Excel file saved on your computer. Furthermore, we’ll do this using RStudio’s graphical interface instead of running read_csv()
in the console. First, download the Excel file dem_score.xlsx
by going to https://moderndive.com/data/dem_score.xlsx, then
- Go to the Files pane of RStudio.
- Navigate to the directory (i.e. folder on your computer) where the downloaded
dem_score.xlsx
Excel file is saved. For example, this might be in your Downloads folder. - Click on
dem_score.xlsx
. - Click “Import Dataset…”
At this point you should see a screen pop-up like in Figure 4.1. After clicking on the “Import” button on the bottom right of Figure 4.1, RStudio will save this spreadsheet’s data in a data frame called dem_score
and display its contents in the spreadsheet viewer.
Furthermore, note the “Code Preview” block in the bottom right of Figure 4.1. You can copy and paste this code to reload your data again later automatically, instead of repeating this manual point-and-click process.
4.2 Tidy data
Let’s now switch gears and learn about the concept of “tidy” data format with a motivating example from the fivethirtyeight
package. The fivethirtyeight
package (Kim, Ismay, and Chunn 2018) provides access to the datasets used in many articles published by data journalism website FiveThirtyEight.com. For a complete list of all 107 data sets included in the fivethirtyeight
package, check out the package webpage by going to https://fivethirtyeight-r.netlify.com/articles/fivethirtyeight.html.
Let’s focus our attention on the drinks
data frame:
drinks
# A tibble: 193 x 5
country beer_servings spirit_servings wine_servings total_litres_of_pur…
<chr> <int> <int> <int> <dbl>
1 Afghanistan 0 0 0 0
2 Albania 89 132 54 4.9
3 Algeria 25 0 14 0.7
4 Andorra 245 138 312 12.4
5 Angola 217 57 45 5.9
6 Antigua & B… 102 128 45 4.9
7 Argentina 193 25 221 8.3
8 Armenia 21 179 11 3.8
9 Australia 261 72 212 10.4
10 Austria 279 75 191 9.7
# … with 183 more rows
After reading the help file by running ?drinks
, you’ll see that drinks
is a data frame containing results from a survey of the average number of servings of beer, spirits, and wine consumed in 193 countries. This data was originally reported on FiveThirtyEight.com in Mona Chalabi’s article “Dear Mona Followup: Where Do People Drink The Most Beer, Wine And Spirits?”
Let’s apply some of the data wrangling verbs we learned in Chapter 3 on the drinks
data frame:
filter()
thedrinks
data frame to only consider 4 countries: the United States, China, Italy, and Saudi Arabia thenselect()
all columns excepttotal_litres_of_pure_alcohol
by using the-
sign, thenrename()
the variablesbeer_servings
,spirit_servings
, andwine_servings
tobeer
,spirit
, andwine
respectively.
and save the resulting data frame in drinks_smaller
:
drinks_smaller <- drinks %>%
filter(country %in% c("USA", "China", "Italy", "Saudi Arabia")) %>%
select(-total_litres_of_pure_alcohol) %>%
rename(beer = beer_servings, spirit = spirit_servings, wine = wine_servings)
drinks_smaller
# A tibble: 4 x 4
country beer spirit wine
<chr> <int> <int> <int>
1 China 79 192 8
2 Italy 85 42 237
3 Saudi Arabia 0 5 0
4 USA 249 158 84
Let’s now ask ourselves a question: “Using the drinks_smaller
data frame, how would we create the side-by-side (i.e. dodged) barplot in Figure 4.2?” Recall we saw barplots displaying two categorical variables in Section 2.8.3.
Let’s break down the Grammar of Graphics we introduced in Section 2.1:
- The categorical variable
country
with four levels (China, Italy, Saudi Arabia, USA) would have to be mapped to thex
-position of the bars. - The numerical variable
servings
would have to be mapped to they
-position of the bars (the height of the bars). - The categorical variable
type
with three levels (beer, spirit, wine) would have to be mapped to thefill
color of the bars.
Observe however that drinks_smaller
has three separate variables beer
, spirit
, and wine
. In order to use the ggplot()
function to recreate the barplot in Figure 4.2 however, we need a single variable type
with three possible values: beer
, spirit
, and wine
. We could then map this type
variable to the fill
aesthetic of our plot. In other words, to recreate the barplot in Figure 4.2, our data frame would have to look like this:
drinks_smaller_tidy
# A tibble: 12 x 3
country type servings
<chr> <chr> <int>
1 China beer 79
2 Italy beer 85
3 Saudi Arabia beer 0
4 USA beer 249
5 China spirit 192
6 Italy spirit 42
7 Saudi Arabia spirit 5
8 USA spirit 158
9 China wine 8
10 Italy wine 237
11 Saudi Arabia wine 0
12 USA wine 84
Let’s compare drinks_smaller_tidy
to the drinks_smaller
data frame from earlier:
drinks_smaller
# A tibble: 4 x 4
country beer spirit wine
<chr> <int> <int> <int>
1 China 79 192 8
2 Italy 85 42 237
3 Saudi Arabia 0 5 0
4 USA 249 158 84
Observe that while drinks_smaller
and drinks_smaller_tidy
are both rectangular in shape and contain the same 12 numerical values (3 alcohol types \(\times\) 4 countries), they are formatted differently. drinks_smaller
is formatted in what’s known as “wide” format, whereas drinks_smaller_tidy
is formatted in what’s known as “long/narrow” format.
In the context of doing data science in R, long/narrow format is also known as “tidy” format. In order to use the ggplot2
and dplyr
packages for data visualization and data wrangling, your input data frames must be in “tidy” format. Thus, all non-“tidy” data must be converted to “tidy” format first.
Before we show you how to convert non-“tidy” data frames like drinks_smaller
to “tidy” data frames like drinks_smaller_tidy
, let’s go over the explicit definition of “tidy” data.
4.2.1 Definition of “tidy” data
You have surely heard the word “tidy” in your life:
- “Tidy up your room!”
- “Please write your homework in a tidy way so that it is easier to grade and to provide feedback.”
- Marie Kondo’s best-selling book The Life-Changing Magic of Tidying Up: The Japanese Art of Decluttering and Organizing and Netflix TV series Tidying Up with Marie Kondo.
- “I am not by any stretch of the imagination a tidy person, and the piles of unread books on the coffee table and by my bed have a plaintive, pleading quality to me - ‘Read me, please!’” - Linda Grant
What does it mean for your data to be “tidy”? While “tidy” has a clear English meaning of “organized”, “tidy” in the context of data science using R means that your data follows a standardized format. We will follow Hadley Wickham’s definition of tidy data (Wickham 2014).
A dataset is a collection of values, usually either numbers (if quantitative) or strings AKA text data (if qualitative/categorical). Values are organised in two ways. Every value belongs to a variable and an observation. A variable contains all values that measure the same underlying attribute (like height, temperature, duration) across units. An observation contains all values measured on the same unit (like a person, or a day, or a city) across attributes.
“Tidy” data is a standard way of mapping the meaning of a dataset to its structure. A dataset is messy or tidy depending on how rows, columns and tables are matched up with observations, variables and types. In tidy data:
- Each variable forms a column.
- Each observation forms a row.
- Each type of observational unit forms a table.
For example, say you have the following table of stock prices in Table 4.1:
| Date | Boeing stock price | Amazon stock price | Google stock price |
|---|---|---|---|
| 2009-01-01 | $173.55 | $174.90 | $174.34 |
| 2009-01-02 | $172.61 | $171.42 | $170.04 |
Although the data are neatly organized in a rectangular spreadsheet-type format, they do not follow the definition of data in “tidy” format. While there are three variables corresponding to three unique pieces of information (date, stock name, and stock price), there are not three columns. In “tidy” data format each variable should be its own column, as shown in Table 4.2. Notice that both tables present the same information, but in different formats.
| Date | Stock name | Stock price |
|---|---|---|
| 2009-01-01 | Boeing | $173.55 |
| 2009-01-02 | Boeing | $172.61 |
| 2009-01-01 | Amazon | $174.90 |
| 2009-01-02 | Amazon | $171.42 |
| 2009-01-01 | $174.34 | |
| 2009-01-02 | $170.04 |
Now we have the requisite three columns Date
, Stock Name
, and Stock Price
. On the other hand, consider the data in Table 4.3.
| Date | Boeing Price | Weather |
|---|---|---|
| 2009-01-01 | $173.55 | Sunny |
| 2009-01-02 | $172.61 | Overcast |
In this case, even though the variable “Boeing Price” occurs just like in our non-“tidy” data in Table 4.1, the data is “tidy” since there are three variables corresponding to three unique pieces of information: Date, Boeing stock price, and the weather that particular day.
Learning check
(LC4.1) What are common characteristics of “tidy” data frames?
(LC4.2) What makes “tidy” data frames useful for organizing data?
4.2.2 Converting to “tidy” data
In this book so far, you’ve only seen data frames that were already in “tidy” format. Furthermore, for the rest of this book, you’ll mostly only see data frames that are already in “tidy” format as well. This is not always the case however with all datasets in the world. If your original data frame is in wide i.e. non-“tidy” format and you would like to use the ggplot2
or dplyr
packages, you will first have to convert it “tidy” format using the gather()
function in the tidyr
package (Wickham and Henry 2019).
Going back to our drinks_smaller
data frame from earlier:
drinks_smaller
# A tibble: 4 x 4
country beer spirit wine
<chr> <int> <int> <int>
1 China 79 192 8
2 Italy 85 42 237
3 Saudi Arabia 0 5 0
4 USA 249 158 84
We convert it to “tidy” format by using the gather()
function from the tidyr
package as follows:
drinks_smaller_tidy <- drinks_smaller %>%
gather(key = type, value = servings, -country)
drinks_smaller_tidy
# A tibble: 12 x 3
country type servings
<chr> <chr> <int>
1 China beer 79
2 Italy beer 85
3 Saudi Arabia beer 0
4 USA beer 249
5 China spirit 192
6 Italy spirit 42
7 Saudi Arabia spirit 5
8 USA spirit 158
9 China wine 8
10 Italy wine 237
11 Saudi Arabia wine 0
12 USA wine 84
We set the arguments to gather()
as follows:
key
is the name of the variable in the new “tidy” data frame that will contain the column names of the original data. Observe how we setkey = type
. In the resultingdrinks_smaller_tidy
, the columntype
contains the three types of alcoholbeer
,spirit
, andwine
.value
is the name of the variable in the new “tidy” data frame that will contain the rows and columns of values of the original data. Observe how we setvalue = servings
. In the resultingdrinks_smaller_tidy
, the columnvalue
contains the 4 \(\times\) 3 = 12 numerical values.- The third argument is the columns you either want to or don’t want to tidy. Observe how we set this to
-country
indicating that we don’t want to tidy thecountry
variable indrinks_smaller
and rather onlybeer
,spirit
, andwine
.
The third argument is a little nuanced, so let’s consider code that’s written slightly differently but that produces the same output:
drinks_smaller_tidy <- drinks_smaller %>%
gather(key = type, value = servings, c(beer, spirit, wine))
drinks_smaller_tidy
Note that the third argument now specifies which columns we want to tidy c(beer, spirit, wine)
, instead of the columns we don’t want to tidy using -country
. We use the c()
function to create a vector of the columns in drinks_smaller
that we’d like to tidy.
With our drinks_smaller_tidy
“tidy” formatted data frame, we can now produce the barplot you saw in Figure 4.2 using geom_col()
. Recall from Section 2.8 on barplots that we use geom_col()
and not geom_bar()
, since we would like to map the “pre-counted” servings
variable to the y
-aesthetic of the bars.
ggplot(drinks_smaller_tidy,
aes(x = country, y = servings, fill = type)) +
geom_col(position = "dodge")
Converting “wide” format data to “tidy” format often confuses new R users. The only way to learn to get comfortable with the gather()
function is with practice, practice, and more practice. For example, run ?gather
and look at the examples in the bottom of the help file. We’ll show another example of using gather()
to convert a “wide” formatted data frame to “tidy” format in Section 4.3. For other examples of converting a dataset into “tidy” format, check out the different functions available for data tidying and a case study using data from the World Health Organization in R for Data Science (Grolemund and Wickham 2016).
Learning check
(LC4.3) Take a look the airline_safety
data frame included in the fivethirtyeight
data package. Run the following:
airline_safety
After reading the help file by running ?airline_safety
, we see that airline_safety
is a data frame containing information on different airlines companies’ safety records. This data was originally reported on the data journalism website FiveThirtyEight.com in Nate Silver’s article “Should Travelers Avoid Flying Airlines That Have Had Crashes in the Past?”. Let’s ignore the incl_reg_subsidiaries
and avail_seat_km_per_week
variables for simplicity:
airline_safety_smaller <- airline_safety %>%
select(-c(incl_reg_subsidiaries, avail_seat_km_per_week))
airline_safety_smaller
# A tibble: 56 x 7
airline incidents_85_99 fatal_accidents… fatalities_85_99 incidents_00_14
<chr> <int> <int> <int> <int>
1 Aer Li… 2 0 0 0
2 Aerofl… 76 14 128 6
3 Aeroli… 6 0 0 1
4 Aerome… 3 1 64 5
5 Air Ca… 2 0 0 2
6 Air Fr… 14 4 79 6
7 Air In… 2 1 329 4
8 Air Ne… 3 0 0 5
9 Alaska… 5 0 0 5
10 Alital… 7 2 50 4
# … with 46 more rows, and 2 more variables: fatal_accidents_00_14 <int>,
# fatalities_00_14 <int>
This data frame is not in “tidy” format. How would you convert this data frame to be in “tidy” format, in particular so that it has a variable incident_type_years
indicating the incident type/year and a variable count
of the counts?
4.2.3 nycflights13
package
Recall the nycflights13
package we introduced in Section 1.4 with data about all domestic flights departing from New York City in 2013. Let’s revisit the flights
data frame by running View(flights)
. We saw that flights
has a rectangular shape, with each of its 336,776 rows corresponding to a flight and each of its 22 columns corresponding to different characteristics/measurements of each flight. This satisfied the first two criteria of the definition of “tidy” data from Subsection 4.2.1: that “Each variable forms a column” and “Each observation forms a row.” But what about the third property of “tidy” data that “Each type of observational unit forms a table”?
Recall that we also saw in Section 1.4.3 that the observational unit for the flights
data frame is an individual flight. In other words, the rows of the flights
data frame refer to characteristics/measurements of individual flights. Also included in the nycflights13
package are other data frames with their rows representing different observational units (Wickham 2018):
airlines
: translation between two letter IATA carrier codes and airline company names (16 in total). The observational unit is an airline company.planes
: aircraft information about each of 3,322 planes used. i.e. the observational unit is an aircraft.weather
: hourly meteorological data (about 8705 observations) for each of the three NYC airports. i.e. the observational unit is an hourly measurement of weather at one of the three airports.airports
: airport names and locations. i.e. the observational unit is an airport.
The organization of the information into these five data frames follow the third “tidy” data property: observations corresponding to the same observational unit should be saved in the same table i.e. data frame. You could think of this property as the old English expression: “birds of a feather flock together.”
4.3 Case study: Democracy in Guatemala
In this section, we’ll show you another example of how to convert a data frame that isn’t in “tidy” format (in other words is in “wide” format) to a data frame that is in “tidy” format (in other words is in “long/narrow” format). We’ll do this using the gather()
function from the tidyr
package again.
Furthermore, we’ll make use of functions from the ggplot2
and dplyr
packages to produce a time-series plot showing how the democracy scores have changed over the 40 years from 1952 to 1992 for Guatemala. Recall that we saw time-series plots in Section 2.4 on creating linegraphs using geom_line()
.
Let’s use the dem_score
data frame we imported in Section 4.1, but focus on only data corresponding to Guatemala.
guat_dem <- dem_score %>%
filter(country == "Guatemala")
guat_dem
# A tibble: 1 x 10
country `1952` `1957` `1962` `1967` `1972` `1977` `1982` `1987` `1992`
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Guatemala 2 -6 -5 3 1 -3 -7 3 3
Let’s lay out the Grammar of Graphics we saw in Section 2.1.
First we know we need to set data = guat_dem
and use a geom_line()
layer, but what is the aesthetic mapping of variables. We’d like to see how the democracy score has changed over the years, so we need to map:
year
to the x-position aesthetic anddemocracy_score
to the y-position aesthetic
Now we are stuck in a predicament, much like with our drinks_smaller
example in Section 4.2. We see that we have a variable named country
, but its only value is "Guatemala"
. We have other variables denoted by different year values. Unfortunately, the guat_dem
data frame is not “tidy” and hence is not in the appropriate format to apply the Grammar of Graphics and thus we cannot use the ggplot2
package just yet.
We need to take the values of the columns corresponding to years in guat_dem
and convert them into a new “key” variable called year
. Furthermore, we need to take the democracy score values in the inside of the data frame and turn them into a new “value” variable called democracy_score
. Our resulting data frame will thus have three columns: country
, year
, and democracy_score
. Recall that the gather()
function in the tidyr
package can complete this task for us:
guat_dem_tidy <- guat_dem %>%
gather(key = year, value = democracy_score, -country)
guat_dem_tidy
# A tibble: 9 x 3
country year democracy_score
<chr> <chr> <dbl>
1 Guatemala 1952 2
2 Guatemala 1957 -6
3 Guatemala 1962 -5
4 Guatemala 1967 3
5 Guatemala 1972 1
6 Guatemala 1977 -3
7 Guatemala 1982 -7
8 Guatemala 1987 3
9 Guatemala 1992 3
We set the arguments to gather()
as follows:
key
is the name of the variable in the new “tidy” data frame that will contain the column names of the original data. Observe how we setkey = year
. In the resultingguat_dem_tidy
, the columnyear
contains the years where Guatemala’s democracy scores were measured.value
is the name of the variable in the new “tidy” data frame that will contain the rows and columns of values of the original data. Observe how we setvalue = democracy_score
. In the resultingguat_dem_tidy
the columndemocracy_score
contains the 1 \(\times\) 9 = 9 democracy scores.- The third argument is the columns you either want to or don’t want to tidy. Observe how we set this to
-country
indicating that we don’t want to tidy thecountry
variable inguat_dem
and rather only variables1952
through1992
.
However, observe in the output for guat_dem_tidy
that the year
variable is of type chr
or character. Before we can plot this variable on the x-axis, we need to convert it into a numerical variable using the as.numeric()
function within the mutate()
function, which we saw in Section 3.5 on mutating existing variables to create new ones.
guat_dem_tidy <- guat_dem_tidy %>%
mutate(year = as.numeric(year))
We can now create the time-series plot to visualize how democracy scores in Guatemala have changed from 1952 to 1992 using a geom_line()
.
ggplot(guat_dem_tidy, aes(x = year, y = democracy_score)) +
geom_line() +
labs(x = "Year", y = "Democracy Score")
Learning check
(LC4.4) Convert the dem_score
data frame into
a tidy data frame and assign the name of dem_score_tidy
to the resulting long-formatted data frame.
(LC4.5) Read in the life expectancy data stored at https://moderndive.com/data/le_mess.csv and convert it to a tidy data frame.
4.4 tidyverse
package
Notice at the beginning of the chapter we loaded the following four packages, which are among the four of the most frequently used R packages for data science:
library(dplyr)
library(ggplot2)
library(readr)
library(tidyr)
There is a much quicker way to load these packages than by individually loading them: by installing and loading the tidyverse
package. The tidyverse
package acts as an “umbrella” package whereby installing/loading it will install/load multiple packages at once for you.
After installing the tidyverse
package as you would a normal package via install.packages("tidyverse")
, running:
library(tidyverse)
would be the same as running:
library(ggplot2)
library(dplyr)
library(tidyr)
library(readr)
library(purrr)
library(tibble)
library(stringr)
library(forcats)
You’ve seen the first 4 of these packages: ggplot2
for data visualization, dplyr
for data wrangling, tidyr
for converting data to “tidy” format, and readr
for importing spreadsheet data into R. The remaining packages (purrr
, tibble
, stringr
, and forcats
) are left for a more advanced book; check out R for Data Science to learn about these packages.
For the remainder of this book, we’ll start every chapter by running library(tidyverse)
, instead of loading the various component packages individually. The tidyverse
“umbrella” package gets its name from the fact that all the functions in all its packages are designed to have common inputs and outputs: data frames are in “tidy” format. This standardization of input and output data frames makes transitions between different functions in the different packages as seamless as possible. For more information, check out the tidyverse.org webpage for the package.
4.5 Conclusion
4.5.1 Additional resources
An R script file of all R code used in this chapter is available here.
If you want to learn more about using the readr
and tidyr
package, we suggest you that you check out RStudio’s “Data Import Cheat Sheet.”
You can access these cheatsheets by going to the RStudio Menu Bar -> Help -> Cheatsheets -> “Browse Cheatsheets” -> Scroll down the page to the “Data Import Cheat Sheet”. The first page of this cheatsheet has information on using the readr
package to import data while the second page has information on using the tidyr
package to “tidy” data. You can see a preview of both cheatsheets in the figures below.
4.5.2 What’s to come?
Congratulations! You’ve completed the “Data Science with tidyverse” portion of this book! We’ll now move to the “Data modeling with moderndive” portion of this book in Chapters 5 and 6, where you’ll leverage your data visualization and wrangling skills to model relationships between different variables in data frames.
However, we’re going to leave the Chapter 10 on “Inference for Regression” until after we’ve covered statistical inference in Chapters 7, 8, and 9. Onwards and upwards!
References
Grolemund, Garrett, and Hadley Wickham. 2016. R for Data Science. http://r4ds.had.co.nz/.
Kim, Albert Y., Chester Ismay, and Jennifer Chunn. 2018. Fivethirtyeight: Data and Code Behind the Stories and Interactives at ’Fivethirtyeight’. https://CRAN.R-project.org/package=fivethirtyeight.
Wickham, Hadley. 2014. “Tidy Data.” Journal of Statistical Software Volume 59 (Issue 10). https://www.jstatsoft.org/index.php/jss/article/view/v059i10/v59i10.pdf.
Wickham, Hadley. 2018. Nycflights13: Flights That Departed Nyc in 2013. https://CRAN.R-project.org/package=nycflights13.
Wickham, Hadley, and Lionel Henry. 2019. Tidyr: Easily Tidy Data with ’Spread()’ and ’Gather()’ Functions. https://CRAN.R-project.org/package=tidyr.
Wickham, Hadley, Jim Hester, and Romain Francois. 2018. Readr: Read Rectangular Text Data. https://CRAN.R-project.org/package=readr.


Message Carousel Examples
Standard sliding carousel, slow speed, arrows
Automatic sliding carousel, indicators, stops on interaction
Automatic sliding carousel, indicators & arrows, stops at the end


C#er
Scoreboard
Challenges
Skills
Account
Dashboard
Congrats!
Your skill just increased!
Rank
Level
Skill
Increase


|
Artemis Cubesat Kit - BeagleBone Source Code
0.1
SourcecodefortheBeagleBoneBlack
|
A class for controlling the switched lines to the EPS. Inherits from the GPIO class. More...
#include <switch.h>
Public Member Functions | |
| PDUSwitch (const char *name) | |
| virtual | ~PDUSwitch () |
| bool | IsValid () const |
| SwitchState | SetState (SwitchState state) |
| Sets the state of the switch. More... | |
| SwitchState | GetState () |
| Returns the state of the switch. More... | |
Static Public Member Functions | |
| static const char * | GetSwitchName (SwitchID switch_id) |
| static SwitchID | GetSwitchID (const char *switch_name) |
| static const char * | GetSwitchPinKey (SwitchID switch_id) |
| static int | GetSwitchPin (SwitchID switch_id) |
| static int | GetSwitchPin (const char *switch_name) |
Private Attributes | |
| const char * | name |
| SwitchID | switch_id |
Static Private Attributes | |
| static SwitchedDeviceInfo | switch_info [SWITCH_COUNT+1] |
Additional Inherited Members | |
| Protected Member Functions inherited from cubesat::GPIO | |
| GPIO () | |
| GPIO (Pin pin) | |
| GPIO (const char *pin_key) | |
| virtual | ~GPIO () |
| GPIOMode | SetMode (GPIOMode mode) |
| GPIOMode | GetMode () |
| GPIOValue | DigitalWrite (GPIOValue value) |
| GPIOValue | DigitalRead () |
| const char * | GetPinKey () const |
| int | GetPinNumber () const |
| Static Protected Member Functions inherited from cubesat::GPIO | |
| static Pin | GetPinByKey (const char *key) |
| static Pin | GetPinByName (const char *name) |
| static const char * | GetNameByPin (Pin pin) |
| static const char * | GetKeyByPin (Pin pin) |
| Protected Attributes inherited from cubesat::GPIO | |
| Pin | pin |
| Static Protected Attributes inherited from cubesat::GPIO | |
| static PinInfo | pin_table [97] |
A class for controlling the switched lines to the EPS. Inherits from the GPIO class.
| PDUSwitch::PDUSwitch | ( | const char * | name | ) |
|
virtual |
| SwitchState PDUSwitch::GetState | ( | ) |
Returns the state of the switch.
|
static |
|
static |
|
static |
|
static |
|
static |
|
inline |
| SwitchState PDUSwitch::SetState | ( | SwitchState | state | ) |
Sets the state of the switch.
| state | The state of the switch |
|
private |
|
private |
|
staticprivate |


short intro
backend engineer, specialise in AWS / Node space
past iTICKET, Xero, Pushpay
now working for exciting startup building Vetenary Software
VetRadar - Join us!
Quicky...
why go monorepo?
cross project changes
simplified dependencies
test across entire project
simplified code roll-out (my opinion)
not here to sell you on the idea, this is an implementation talk
monorepo 101
how does it look like?
.
├── package.json
├── modules
| ├── module1
| | └── package.json
| └── module2
| └── package.json
└── sls
├── lambdas
| └── package.json
└── lambda_layers
└── package.json
dumping all your projects in a single repo comes with problems
- each package/module needs it's dependencies downloaded
- how do you manage packages depend on other packages?
- disk space
- version management
Javascript everywhere...
what's your options?
upcoming npm v7
lerna
yarn workspaces
or why not yarn & lerna 🤭
lerna supports yarn workspaces 🎉
projects that use lerna, Babel, React, Jest to name a few
DISCLAIMER: I haven't used yarn workspaces in production
lerna and yarn workspaces are tools to help you simplify these issues
BIG NOTE: they're not deployment tools
think very carefully how you will roll-out your code
- what is the deployment cadence of each deployable package in your repo
- what is your package versioning strategy (fixed or independent)
- fixed all packages get the same version
- independent package versions get incremented independently
whats our mono-repo deployment strategy?
- platform code is in a mono-repo
- production deploy => publish and fixed version increment
- deploy entire stack every time
- same version of code everywhere === less guess work
- all automated - single button press
- deploy very often, multiple times a day (when we get more devs 🤘)
🏖🍻🍷🧟♂ find what works for you...
demo time - living with a mono-repo


-webkit-perspective-origin
Sets the origin of the -webkit-perspective property.
Sets the origin of the -webkit-perspective property described in "-webkit-perspective."
This property effectively sets the x and y position at which the viewer appears to be looking at the children of the element. The default value is 50%
for both x and y coordinates.
-webkit-perspective-origin: <posx> <posy>;
The x-origin as a percentage or value.
| 50% (by default) | The default value is 50% . |
| center | Sets the x or y origin to the center of the element’s border box. If this constant appears before left or right, specifies the y-origin. If it appears after top or bottom, specifies the x-origin. If appears alone, centers both the x and y origin. |
| left | Sets the x-origin to the left side of the border box. |
| right | Sets the x-origin to the right side of the border box. |
The y-origin as a percentage or value.
| 50% (by default) | The default value is 50% . |
| center | Sets the x or y origin to the center of the element’s border box. If this constant appears before left or right, specifies the y-origin. If it appears after top or bottom, specifies the x-origin. If appears alone, centers both the x and y origin. |
| top | Sets the y-origin to the top of the element’s border box. |
| bottom | Sets the y-origin to the bottom of the element’s border box. |


Hello, I'm Michelle Schoofs.
I am a Responsive Front-end Web Developer who thrives on visual storytelling and the best user experience. When I'm not hard at work, pursuing side projects or continuing my education, you can find me painting, working on my novel, or rocking some music while playing with my dogs.
I was born in Milwaukee, but my family moved before my 5th birthday out to Salt Lake City in time for me to begin kindergarten, only to return to WI after I graduated from high school. Utah is a gorgeous state with many national parks. My mother's love of going for a ride made me love traveling around on day trips to see the world. Whenever I travel, I prefer driving over flying because I'm free to go where I want, when I want, and I get to see some amazing country in the process. Best trip? Driving from Milwaukee to Alaska, and back again. Fantastic time and done in just two and a half weeks with a stop-over in Glacier Natl. Park.
One of my passions is MUSIC! Most people would never guess that I am a hard rock and heavy metal rocker, but I am! I also enjoy other types of music as well. When not rocking out, I'm partial to the '70s music from my childhood, and movie scores. My favorite band is Apocalyptica. This Finnish group consists of three classically trained cellists and a drummer. They don't have a singer but often collaborate with singers in different bands. They are amazing! I have traveled to see them in other states many times, and I would highly recommend that you go see them in concert if you have the opportunity. They have even made me a lover of opera.
When I was young, I wanted to be an artist and writer. As life and work took up most of my time, I had stepped away from both for a while. Recently, I have delved back in and rekindled those flames. I love painting, as well as capturing moments through photography. I have written a novel, and although it has been in the editing process for a while, I do hope to have it published someday. I have to! I have several other solid stories milling about in my head, so I have to make time to work on all of them. Maybe I'll even get some new poetry written too. I love getting those creative juices flowing again and working on websites is lighting more creative fires in me.


tl;dr: put in your instance domain. Drag links to bookmarks bar.
Because of the decentralized structure of the Fediverse, you risk seeing only a subset of a conversation because some of the people who take part are not being followed by anyone in your instance.
To make sure you see the whole conversation and not just the subset that reached your instance, you need to read the conversation on the instance of the person who started it.
A web browser is therefore much more efficient than a dedicated Mastodon client for making interesting discoveries. You can follow the links opening new tabs on your web browser to discover the entire conversation where the initial authors is registered.
But you'll quickly feel that reacting to a post or following someone who is not in your instance is a bit tedious.
What if you could click on a link in your bookmarks bar, and it would take you back to your own instance, but seeing the profile of the person you want to follow or interact with?
Just type in the domain of your instance in the text input field below and we'll generate links that you can drag to your bookmark bar.
tl;dr: put in your instance domain. Drag links to bookmarks bar.


Dissertation Obsession Tweet
A model
My study buddy from college is probably the physics PhD student I look up to the most. He’s pioneered a new technique in classifying events and particles using detector images. He’s one of the most creative and compelling guys I know. He also communicates his ideas clearly and often asks questions that will make you think about your work. I don’t think he asks to make himself look smart. He asks because wants to understand.
He’s quite hardworking but also he’s the type that seems to be ultra interested in the work he’s doing. And his interest in his work often radiates with the way he explains his results to other people. I haven’t reached quite that level yet when it comes to the work I’m doing. I haven’t taken ownership yet and am still getting my rhythm back. I’ve decided to revisit a few articles on a “good kind of obsession” - one related to creative work output.
Obsessive Focus and Interest in your own work
Obsessive focus and interest in their work is not uncommon among known geniuses such as Albert Einstein, Richard Feynman and Bill Gates. They could work for hours at a time on a certain problem. Mere mortals, including I, think that this ability to work without distraction is a mere natural ability that cannot be developed. I do think it is indeed easier to lose track of time and just get completely immersed in some work you are absolutely interested in. How can we take advantage of “obsession” as a productivity tool? And also learn to “unobsess” when no progress is made for a while, which means a new strategy must be made?
Cal Newport has a few blog entries on this. One is related to his Deep Habits series (Obsess When Needed](https://www.calnewport.com/blog/2014/11/13/deep-habits-obsess-when-needed/)). Another one was (On the Obsessive Focus of Bill Gates)[https://www.calnewport.com/blog/2014/10/27/on-the-obsessive-focus-of-bill-gates/].
Having Rituals and mood setting
Having to deal with a broken leg and other logistical problems, my days have been quite fragmented. But I was able to squeeze in a few hours of work and was able to accomplish a major task which was to map out the components of my dissertation. I divided my dissertation into 5 different phases. They may change over time but having an idea of what milestones to reach has helped me a lot in the past when finishing projects. I’ve done Phase 0, and will begin Phase 1 this week and hopefully have some results to present to our collaboration meeting by the end of January.
 So I have some level of confidence I can get out of this local minimum. I’ve let go of the “I’ll work when I feel inspired” attitude. One can deliberately do creative, or important work even when initially uninspired with a combination of diffuse and focused modes of thinking. It takes practice to find something that works.
I picked up a few things from this blog. So here are some concrete things to do: 1.) Schedule undistracted work time chunks 2.) Restart “Streaks” and Deep Work hours tracking. So far this has been working pretty well with my french learning and my ‘Exercising’ habits. I just need to adapt this to my physics work which requires more time and concentration power. 3.) Establish Rituals to set the mood for working. For physics and software work, the minimum number of hours to do ‘ok’ work is 3 hours. The first hour is usually “diffuse” thinking mode or mood setting.
When things normalize, I might have to work at least 6-9 hours a day for physics and schedule everything else around physics work. In these hours, I’ve to formulate my weekly questions, see how others approached the problem, attempt to answer the questions, and then communicate the results. For software, usually some time must be devoted to reading documentation and doing bug fixes, rewriting the documenation and then reconciling the bug fixes with the rest of the code base.
Might also read this book on Daily Rituals: How artists work. Let’s see how this goes. Let’s see if it radiates interest.


|
Figure 1
|
Scanning electron micrographs revealing the microstructure m ... |
|
Figure 2
|
X-ray diffractograms revealing the atomic structure of the p ... |
|
Figure 3
|
Differential scanning calorimetry of the primary-Au, MGMC, a ... |
|
Figure 4
|
Plate coupons of the primary-Au, MGMC, and metallic glass al ... |
|
Figure 5
|
Color Coordinates vs. Metallic Glass Molar Fraction. Plots o ... |


Extending Checkout
Note: Spartacus 2.x is no longer maintained. Please upgrade to the latest version.
Overview
The checkout feature in Spartacus is CMS-driven, which means every page in the checkout flow is based on CMS pages, slots and components. As a result, you can change the content of each page, add new components, convert the checkout into a single-step checkout, or create very sophisticated multi-step checkout flows with only a minimal amount of configuration in the storefront application.
Routing and Configuration
In the checkout, you often have links from one step to another, which is the reason for registering each checkout page as a semantic page in the storefront configuration.
The following is the default route configuration for checkout:
B2cStorefrontModule.withConfig({
routing: {
routes: {
checkout: {
paths: ['checkout'],
},
checkoutShippingAddress: {
paths: ['checkout/shipping-address']
},
checkoutDeliveryMode: {
paths: ['checkout/delivery-mode']
},
checkoutPaymentDetails: {
paths: ['checkout/payment-details']
},
checkoutReviewOrder: {
paths: ['checkout/review-order']
}
},
},
}),
Although the default checkout has four steps, the default configuration defines five semantic pages. This additional page has a general checkout
route that is linked to from every component that should redirect to the checkout. From this general checkout page, Spartacus redirects to the correct checkout step.
If you want to link to the checkout, always point to this general checkout page, regardless of how your checkout is set up. For example, with a multi-step checkout, you can use your CheckoutGuard
to take care of redirecting to the correct checkout step. With a single-step checkout, you can set all components on this checkout
route and remove the CheckoutGuard
from the component configuration.
For more information about the CheckoutGuard
, see the CheckoutGuard section below.
Aside from the route configuration, you can also configure the checkout by defining the responsibility of each step, the route to the page, and the order of the steps. The following is the default configuration:
B2cStorefrontModule.withConfig({
checkout: {
steps: [
{
id: 'shippingAddress',
name: 'checkoutProgress.shippingAddress',
routeName: 'checkoutShippingAddress',
type: [CheckoutStepType.SHIPPING_ADDRESS],
},
{
id: 'deliveryMode',
name: 'checkoutProgress.deliveryMode',
routeName: 'checkoutDeliveryMode',
type: [CheckoutStepType.DELIVERY_MODE],
},
{
id: 'paymentDetails',
name: 'checkoutProgress.paymentDetails',
routeName: 'checkoutPaymentDetails',
type: [CheckoutStepType.PAYMENT_DETAILS],
},
{
id: 'reviewOrder',
name: 'checkoutProgress.reviewOrder',
routeName: 'checkoutReviewOrder',
type: [CheckoutStepType.REVIEW_ORDER],
},
],
},
})
The attributes in the steps
array work as follows:
- The
id
attribute should have a unique value. You can useid
when you need to identify a specific step in the configuration. - The
name
attribute is used in theCheckoutProgress
component to indicate which checkout steps have been completed. Thename
is also used as a translation key. - The
routeName
attribute specifies the semantic page for each step. - The
type
attribute is used by the checkout guards. For more information, see Protecting Routes.
Also, the order of the steps in the steps
array determines which steps are “previous” and “next” for the navigation buttons in the checkout flow. For example, based on the default configuration, the Back button for the delivery mode component points to the previous shippingAddress
step, while the Next button points to the paymentDetails
step. If you change the order of the steps in the configuration, the navigation buttons automatically update to link to the correct pages.
Components
Every checkout component is a CMS component. Furthermore, in the default checkout, all components are CMSFlexComponents. Compared to other CMS components, these components have more guards defined in the configuration, but are otherwise identical to regular CMS components.
Protecting Routes
The checkout uses component guards instead of page guards. You protect routes by applying guards in the CMS component mapping.
Component guards have the same API as page guards. Spartacus exposes the following guards as part of the checkout:
ShippingAddressSetGuard
DeliveryModeSetGuard
PaymentDetailsSetGuard
CheckoutGuard
As an example, if you wanted to restrict access to the Review Order page, so that it displays only when the shipping address, delivery mode and payment details were correctly set, you would set guards for the review order component to guards: [ShippingAddressSetGuard, DeliveryModeSetGuard, PaymentDetailsSetGuard]
. Then, when you try to access the Review Order page, Spartacus first checks the guards for every component on that page, and only displays the page if every guard returns true
. If one of the guard returns false
, or returns a redirect URL, Spartacus redirects to the provided URL.
The following is an example scenario:
- A user sets the shipping address.
- The user comes back to shop after a few days, and the browser auto-suggests the Review Order page from a previous order.
- The user follows the suggestion.
- The
ShippingAddressSetGuard
returnstrue
. - The
DeliveryModeSetGuard
returnscheckout/delivery-mode
redirect. - The
PaymentDetailsSetGuard
returnscheckout/payment-details
redirect. - The user is redirected to the Delivery Mode selection page.
The order of the guards is important because the first redirect is used. In general, you should define guards in the same order as the checkout flow.
CheckoutGuard
A special CheckoutGuard
is responsible for redirecting to the correct step. The default implementation redirects every checkout request to the first step. You can replace this with your own guard (for example, you could redirect users to the first step that is not set). A custom example is provided in the Express Checkout section, below.
Configuring Where Guards Redirect To
In the checkout configuration, for each step, you specify a type
attribute and the type of data that should be set. A guard looks for the first step that contains the specific type
and then redirects to this step.
For example, ShippingAddressSetGuard
searches the checkout configuration for the first step with a type
containing CheckoutStepType.shippingAddress
, then reads the step route and redirects to that page.
Note that, on each checkout step, you can have multiple components. As a result, the type
property is an array.
CMS Catalog Content and Default Template
In the default checkout, Spartacus uses a modified MultiStepCheckoutOrderSummaryPageTemplate
. In addition to BodyContent
and SideContent
, Spartacus includes TopContent
and BottomContent
for 100% of the sections above and below the BodyContent
and SideContent
page slots.
For the default checkout flow, Spartacus includes an impex file with all pages, slots, components and relations configured. This impex is available as part of the spartacussampledataaddon
AddOn. For more information, see Spartacussampledataaddon AddOn
Extensibility
The following sections describe some common ways to modify the checkout. Of course, you can also extend checkout services and components like any other services and components that are shipped with the Spartacus libraries.
Changing the Order of the Checkout Flow
The following scenario describes how to change the order of two steps. In the default configuration, the checkout flow starts with setting a shipping address, followed by setting the delivery mode, and finally by filling in the payment details. In this scenario, the configuration is modified so that the payment details step occurs before the delivery mode step.
To achieve this, you change the checkout configuration in the storefront configuration, and change the guards in the CMS components that are used on the checkout pages. The following is an example:
@NgModule({
imports: [
B2cStorefrontModule.withConfig({
...restOfConfig,
checkout: {
// You must specify all of the steps (this configuration is not merged with the default one)
steps: [
{
id: 'shippingAddress',
name: 'checkoutProgress.shippingAddress',
routeName: 'checkoutShippingAddress',
type: [CheckoutStepType.SHIPPING_ADDRESS],
},
// Change the payment details step to be before the delivery mode
{
id: 'paymentDetails',
name: 'checkoutProgress.paymentDetails',
routeName: 'checkoutPaymentDetails',
type: [CheckoutStepType.PAYMENT_DETAILS],
},
{
id: 'deliveryMode',
name: 'checkoutProgress.deliveryMode',
routeName: 'checkoutDeliveryMode',
type: [CheckoutStepType.DELIVERY_MODE],
},
{
id: 'reviewOrder',
name: 'checkoutProgress.reviewOrder',
routeName: 'checkoutReviewOrder',
type: [CheckoutStepType.REVIEW_ORDER],
},
],
},
cmsComponents: {
CheckoutPaymentDetails: {
component: PaymentMethodsComponent,
// The default CheckoutPaymentDetails uses the DeliveryModeSetGuard, but in this case, the delivery mode details will not be set yet.
// Instead, override the component guards with a new set that does not include the DeliveryModeSetGuard
guards: [AuthGuard, CartNotEmptyGuard, ShippingAddressSetGuard],
},
CheckoutDeliveryMode: {
component: DeliveryModeComponent,
// In the CheckoutDeliveryMode, we need to also check if the payment details are set, so we add the PaymentDetailsSetGuard
guards: [
AuthGuard,
CartNotEmptyGuard,
ShippingAddressSetGuard,
PaymentDetailsSetGuard,
],
},
},
}),
],
bootstrap: [StorefrontComponent],
})
export class AppModule {}
Adding Another Checkout Step
To add an extra checkout step, the approach is similar to changing the order of the checkout flow: you provide the checkout configuration in the storefront configuration, and set the page, slots, and components in CMS. The following is an example:
@NgModule({
imports: [
B2cStorefrontModule.withConfig({
...restOfConfig,
routing: {
routes: {
// Create a route for your new checkout step
checkoutCharity: { paths: ['checkout/charity'] },
},
},
checkout: {
steps: [
{
id: 'shippingAddress',
name: 'checkoutProgress.shippingAddress',
routeName: 'checkoutShippingAddress',
type: [CheckoutStepType.SHIPPING_ADDRESS],
},
{
id: 'deliveryMode',
name: 'checkoutProgress.deliveryMode',
routeName: 'checkoutDeliveryMode',
type: [CheckoutStepType.DELIVERY_MODE],
},
{
id: 'paymentDetails',
name: 'checkoutProgress.paymentDetails',
routeName: 'checkoutPaymentDetails',
type: [CheckoutStepType.PAYMENT_DETAILS],
},
// Add the charity step here, before the review order step
{
id: 'charity',
name: 'checkoutProgress.charity', // Provide translation for this key
routeName: 'checkoutCharity',
type: [],
},
{
id: 'reviewOrder',
name: 'checkoutProgress.reviewOrder',
routeName: 'checkoutReviewOrder',
type: [CheckoutStepType.REVIEW_ORDER],
},
],
},
}),
],
bootstrap: [StorefrontComponent],
})
export class AppModule {}
Combining Checkout Steps
Combining checkout steps is also very similar to the previous examples. In most cases, the required steps are the following:
- Configure new pages, slots, and components in CMS
- Adjust the configuration of the steps (for example, add/combine/remove steps)
- Map your own Angular components to the CMS components
- Review the component guards and adjust if needed
- Check for missing translations
In addition to combining steps, the following example shows how to create a new component, which is very similar to the DeliveryModeComponent
except that it has a Save button instead of a Next button. Note, this Save button only saves information, without a redirect.
@NgModule({
imports: [
B2cStorefrontModule.withConfig({
routing: {
routes: {
// Add a new route for the combined step
checkoutDeliveryModePaymentDetails: {
paths: ['checkout/delivery-and-payment'],
},
},
},
checkout: {
steps: [
{
id: 'shippingAddress',
name: 'checkoutProgress.shippingAddress',
routeName: 'checkoutShippingAddress',
type: [CheckoutStepType.SHIPPING_ADDRESS],
},
// Replace two steps with one
{
id: 'deliveryModePaymentDetails',
name: 'checkoutProgress.deliveryModePaymentDetails', // Provide translation for this key
routeName: 'checkoutDeliveryModePaymentDetails',
// This step sets both the delivery mode and the payment details, so you have to define both of these types
type: [
CheckoutStepType.DELIVERY_MODE,
CheckoutStepType.PAYMENT_DETAILS,
],
},
{
id: 'reviewOrder',
name: 'checkoutProgress.reviewOrder',
routeName: 'checkoutReviewOrder',
type: [CheckoutStepType.REVIEW_ORDER],
},
],
},
cmsComponents: {
CheckoutPaymentDetails: {
component: PaymentMethodsComponent,
// DeliveryModeSetGuard is removed because it is set on the same page
guards: [AuthGuard, CartNotEmptyGuard, ShippingAddressSetGuard],
},
},
}),
],
bootstrap: [StorefrontComponent],
})
Note: You can use this same approach to combine all the steps into a single-step checkout.
Express Checkout
The following scenario describes how to provide express checkout for users who have previously ordered from this store. In this example, when the Express Checkout button is clicked, the user is brought directly to the Review Order page, which is populated with the default address, the default payment method, and the fastest shipping method.
Clicking the default checkout button redirects to the /checkout
route. To invoke express checkout, you need to pass the additional express
query param.
The first step in setting up express checkout is to create an ExpressCheckoutGuard
. The following is an example:
import { Injectable } from '@angular/core';
import {
CanActivate,
Router,
UrlTree,
ActivatedRouteSnapshot,
} from '@angular/router';
import { CheckoutConfig } from '../config/checkout-config';
import {
RoutingConfigService,
} from '@spartacus/core';
@Injectable({
providedIn: 'root',
})
export class ExpressCheckoutGuard implements CanActivate {
constructor(
private router: Router,
private config: CheckoutConfig,
private routingConfigService: RoutingConfigService,
private checkoutConfigService: CheckoutConfigService,
) {}
canActivate(route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> {
// Check for the express query param
if (route.queryParams.express) {
// To avoid a long example, the following are only steps, instead of real code:
// 1. Fetch the default delivery address, payment method and delivery mode.
// 2. Set those defaults in the order.
// 3. Watch for order details and return the review order URL.
const checkoutStep: CheckoutStep = this.checkoutConfigService.getCheckoutStep(
CheckoutStepType.REVIEW_ORDER
);
return this.router.parseUrl(
checkoutStep &&
this.routingConfigService.getRouteConfig(
checkoutStep.routeName
).paths[0]
);
} else {
// Redirect to the first step in the default checkout flow
return of(
this.router.parseUrl(
this.routingConfigService.getRouteConfig(
this.config.checkout.steps[0].routeName
).paths[0]
)
);
}
}
}
Now that you have created the ExpressCheckoutGuard
, you can use it in the Checkout Orchestrator. The following is an example:
@NgModule({
imports: [
B2cStorefrontModule.withConfig({
cmsComponents: {
CheckoutOrchestrator: {
component: CheckoutOrchestratorComponent,
// Replace the CheckoutGuard with the ExpressCheckoutGuard for the Checkout Orchestrator
guards: [AuthGuard, CartNotEmptyGuard, ExpressCheckoutGuard],
},
},
}),
],
bootstrap: [StorefrontComponent],
})
Express checkout is now ready. The only steps that remain are to create express checkout links, and to place them on the page.


Andrus stays with Rangers, passing 2nd chance to opt out
ARLINGTON, Texas (AP) - Elvis Andrus is staying with the Rangers after the shortstop passed up on a second chance to opt out of his contract and become a free agent.
Andrus has $43 million and three years left on his contract in Texas.
He just completed his 11th season with the Rangers. The 31-year-old shortstop is the team’s longest-tenured player, and the only player remaining from their only two World Series appearances in 2010 and 2011.
Andrus hit .275 with 12 homers, 72 RBIs and 31 stolen bases in 147 games this year. He is a .275 career hitter with 73 homers and a team-record 302 stolen bases.
He also had the opportunity to opt out after the 2018 season, when he was limited to 97 games because of a fractured right elbow. The two potential opt-outs were part of the $120 million, eight-year deal he signed before the 2015 season.
Texas also reinstated right-hander Jesse Chavez, All-Star slugger Joey Gallo and lefty Taylor Hearn from the 60-day injured list on Monday.
Tim Federowicz elected to become a free agent after the Rangers assigned the catcher outright to Triple-A Nashville.
More AP MLB: https://apnews.com/tag/MLB and https://twitter.com/AP_Sports
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


The MIT License (MIT)
Copyright (c) 2015 orvice
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
您当前所访问的站点使用的是下面所提到的开源程序。您能看到这个页面仅代表这个站点使用了本程序，其使用过程中发生的一切问题需要其自行解决，本程序不承担任何责任。
此列表为参与到 ss-panel-v3 glzjin mod {$config["version"]} 中的人员，在此表示感谢。
所有被引用过代码的同学，以及所有提交过issue的同学。当然，还有在使用这份程序的你我Ta。


1. Are you most interested in:
4. How much previous programming experience do you have?
2. What type of company do you want to work for?
5. Which OS do you prefer?
3. What sort of developer do you want to be?


--- layout: page title: About Me permalink: /about/ ---
I'm Kerolos. I likes to design and build beautiful iOS apps. my path to becoming an iOS developer was not direct I kind of fell into it. I was a premed student at St. Mary's College of California where I took my first programming class and fell in love with coding and the rest is history...
I'm passionate about the iOS platform and strive to follow its philosophy of building neat solutions on the inside and out. I care about pixel-perfect design as much as object-oriented code. I enjoy transforming static mock-ups into live and responsive forms especially custom interfaces and innovative UI concepts. My focus at the moment is native iOS development using UIKit but I also have some experience building web based applications with JavaScript, HTML, and CSS using Meteor technologies.
I'm always looking to find interesting and challenging projects with new technologies, so this doesn’t mean that I’m limited to the technologies mentioned here.
Skills: Git, Github, Command Line, Objective-C, Swift, Xcode, iOS, iOS Development, Parse, Bohemian Coding - Sketch3, App Prototyping, Scrum, Lean Startup.
You can find out about my current iOS activity on this blog, and see some of the iOS projects I'm working on Github. I'm open to discuss opportunities in iOS development. You can reach out to me on LinkedIn and Twitter. You can also use the Contact form on this website.


{% extends 'dashboard/navbar_base.html' %} {% load markdown_deux_tags %} {% block title %}{{ event.title }} | Warwick.gg{% endblock %} {% block js %} {% endblock %} {% block body %} {% if request.user.is_authenticated %} {% endif %}
Here you can find out about the tournament{{ tournaments|pluralize }} that will be happening at {{ event.title }}.
*: Must be a current student at the University of Warwick.
{% if event.has_livestream %}Note: This event will be streamed live on platform(s) such as Twitch.tv or YouTube. If you would like to not appear on the stream then do talk to one of the event organisers on the day.
{% endif %} {% if event.has_photography %}Note: There is a possibility of photography at this event. If you would like to not appear in any photographs, please talk to one of the event organisers on the day.
{% endif %}You have already signed up - click here to un-signup.
{% if event.has_seating %}Click the button below to go to the seating plan.
Click the button on the right to go to the seating plan.
{% endif %}Your sign up for {{ event.title }} is currently in progress and we are waiting for your payment to complete. Check back in a few minutes for any updates!
If your sign up is stuck or you are having trouble, please contact CompSoc/Esports exec.
{% elif signups_open %} {% if event.signup_count == event.signup_limit %}Signups for {{ event.title }} have filled up! Check back frequently to see if anyone has opened up a space.
{% else %}Signups are open for {{ event.title }}! Click here to sign up.
{% endif %} {% else %}Signups for {{ event.title }} aren't open just yet. They open at {{ signup_start|date:'P l jS F Y' }}, so check back then!
{% endif %}To sign up for {{ event.title }}, you need to have logged into your Warwick.gg account! To log in or sign up, click here.
Signup Comments


Toggle navigation
Curriculum online
Selecciona template
Acerca del proyecto
Sign out
Curriculum online
Name
Email
Phone
Address 1
Address 2
Education
+
Languages
+
Interests
+
Photography
Art
Programming
Software
+
Work experience
+
×
Add education
×
Add Language
Language
English
Spanish
Italian
French
×
Add Interests
×
Add software
×
Add work experience
×
Edit education
×
Edit Language
Language
English
Spanish
Italian
French
×
Add Interests
×
Edit software
×
Edit work experience


Upload metadata and source files of your contract to make it available. Note that the metadata file has to be exactly the same as at deploy time. Browse repository here or via ipfs/ipns gateway.


{% extends "base.html" %} {% block content %}
As as I former clinician. I know all too well how frustrating patient care can be. You're expected to take phone calls, treat multiple patients at once, manage cancellations and late arrivals, and write error free documentation, all while delivering strong outcomes and satisfaction. I always wished I had a tool to help me focus quickly amongst the chaos.
ClinNotes was designed with the above scenario in mind. Whether you're rattled from something earlier in the day, or just havent seen a scheduled patient for a few weeks. Clinnotes allows clincians to record and store patient and episode of care specific reflections and reminders. A glance at these prior to a patient visit can quickly refresh your memory about relevant patient details that you've specifically set. This way you no longer have to look back and read your previous notes and documentation as we all know it is optimized for billing and litigation, not skill acquisition and patient care.
Get Started