--- title: The significance of population size, year, age and per cent women on the education level in Sweden author: Mikael Lundqvist date: '2020-04-05' slug: the-significance-of-population-size-year-age-and-per-cent-women-on-the-education-level-in-sweden categories: - R tags: - plot - R Markdown - regression ---
In my last post, I analysed how the level of education is affected by region, sex and year. In this post, I will continue with the same dataset but this time I will include age in the analysis. Please send suggestions for improvement of the analysis to<EMAIL_ADDRESS>First, define libraries and functions.
library (tidyverse)
## -- Attaching packages -------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.2.1 v purrr 0.3.3
## v tibble 2.1.3 v dplyr 0.8.3
## v tidyr 1.0.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## -- Conflicts ----------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library (broom)
library (car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
library (sjPlot)
## Registered S3 methods overwritten by 'lme4':
## method from
## cooks.distance.influence.merMod car
## influence.merMod car
## dfbeta.influence.merMod car
## dfbetas.influence.merMod car
library (leaps)
library (MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
library (earth)
## Warning: package 'earth' was built under R version 3.6.3
## Loading required package: Formula
## Loading required package: plotmo
## Warning: package 'plotmo' was built under R version 3.6.3
## Loading required package: plotrix
## Loading required package: TeachingDemos
## Warning: package 'TeachingDemos' was built under R version 3.6.3
library (acepack)
## Warning: package 'acepack' was built under R version 3.6.3
library (lspline)
## Warning: package 'lspline' was built under R version 3.6.3
library (lme4)
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
library (pROC)
## Warning: package 'pROC' was built under R version 3.6.3
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library (boot)
##
## Attaching package: 'boot'
## The following object is masked from 'package:car':
##
## logit
library (faraway)
##
## Attaching package: 'faraway'
## The following objects are masked from 'package:boot':
##
## logit, melanoma
## The following objects are masked from 'package:car':
##
## logit, vif
library (arm)
## Warning: package 'arm' was built under R version 3.6.3
##
## arm (Version 1.10-1, built: 2018-4-12)
## Working directory is C:/R/rblog/content/post
##
## Attaching package: 'arm'
## The following objects are masked from 'package:faraway':
##
## fround, logit, pfround
## The following object is masked from 'package:boot':
##
## logit
## The following object is masked from 'package:plotrix':
##
## rescale
## The following object is masked from 'package:car':
##
## logit
readfile <- function (file1){read_csv (file1, col_types = cols(), locale = readr::locale (encoding = "latin1"), na = c("..", "NA")) %>%
gather (starts_with("19"), starts_with("20"), key = "year", value = groupsize) %>%
drop_na() %>%
mutate (year_n = parse_number (year))
}
perc_women <- function(x){
ifelse (length(x) == 2, x[2] / (x[1] + x[2]), NA)
}
nuts <- read.csv("nuts.csv") %>%
mutate(NUTS2_sh = substr(NUTS2, 3, 4))
The data table is downloaded from Statistics Sweden. It is saved as a comma-delimited file without heading, UF0506A1.csv, http://www.statistikdatabasen.scb.se/pxweb/en/ssd/.
I will calculate the percentage of women in for the different education levels in the different regions for each year. In my later analysis, I will use the number of people in each education level, region, year and age.
The table: Population 16-74 years of age by region, highest level of education, age and sex. Year 1985 - 2018 NUTS 2 level 2008- 10 year intervals (16-74)
The data is aggregated, the size of each group is in the column groupsize.
tb <- readfile("UF0506A1.csv") %>%
mutate(edulevel = `level of education`) %>%
group_by(edulevel, region, year, sex, age) %>%
mutate(groupsize_age = sum(groupsize)) %>%
group_by(edulevel, region, year, age) %>%
mutate (sum_edu_region_year = sum(groupsize)) %>%
mutate (perc_women = perc_women (groupsize_age)) %>%
group_by(region, year) %>%
mutate (sum_pop = sum(groupsize)) %>% rowwise() %>%
mutate(age_l = unlist(lapply(strsplit(substr(age, 1, 5), "-"), strtoi))[1]) %>%
rowwise() %>%
mutate(age_h = unlist(lapply(strsplit(substr(age, 1, 5), "-"), strtoi))[2]) %>%
mutate(age_n = (age_l + age_h) / 2) %>%
left_join(nuts %>% distinct (NUTS2_en, NUTS2_sh), by = c("region" = "NUTS2_en"))
## Warning: Column `region`/`NUTS2_en` joining character vector and factor,
## coercing into character vector
numedulevel <- read.csv("edulevel_1.csv")
numedulevel[, 2] <- data.frame(c(8, 9, 10, 12, 13, 15, 22, NA))
numedulevel %>%
knitr::kable(
booktabs = TRUE,
caption = 'Calculated in previous post, length of education')
| level.of.education | eduyears |
|---|---|
| primary and secondary education less than 9 years (ISCED97 1) | 8 |
| primary and secondary education 9-10 years (ISCED97 2) | 9 |
| upper secondary education, 2 years or less (ISCED97 3C) | 10 |
| upper secondary education 3 years (ISCED97 3A) | 12 |
| post-secondary education, less than 3 years (ISCED97 4+5B) | 13 |
| post-secondary education 3 years or more (ISCED97 5A) | 15 |
| post-graduate education (ISCED97 6) | 22 |
| no information about level of educational attainment | NA |
tbnum <- tb %>%
right_join(numedulevel, by = c("level of education" = "level.of.education")) %>%
filter(!is.na(eduyears)) %>%
drop_na()
## Warning: Column `level of education`/`level.of.education` joining character
## vector and factor, coercing into character vector
tbnum %>%
filter (year_n == 2018) %>%
ggplot () +
geom_point (mapping = aes(x = NUTS2_sh,y = perc_women, colour = age_n)) +
facet_grid(. ~ eduyears)
tbnum %>%
filter (year_n == 2008) %>%
ggplot () +
geom_point (mapping = aes(x = NUTS2_sh,y = perc_women, colour = age_n)) +
facet_grid(. ~ eduyears)
tbnum %>%
filter (year_n == 1998) %>%
ggplot () +
geom_point (mapping = aes(x = NUTS2_sh,y = perc_women, colour = age_n)) +
facet_grid(. ~ eduyears)
tbnum %>%
filter (year_n == 1988) %>%
ggplot () +
geom_point (mapping = aes(x = NUTS2_sh,y = perc_women, colour = age_n)) +
facet_grid(. ~ eduyears)
summary(tbnum)
## region age level of education sex
## Length:22660 Length:22660 Length:22660 Length:22660
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## year groupsize year_n edulevel
## Length:22660 Min. : 0 Min. :1985 Length:22660
## Class :character 1st Qu.: 1713 1st Qu.:1993 Class :character
## Mode :character Median : 5737 Median :2001 Mode :character
## Mean : 9638 Mean :2001
## 3rd Qu.:14135 3rd Qu.:2010
## Max. :77163 Max. :2018
## groupsize_age sum_edu_region_year perc_women sum_pop
## Min. : 0 Min. : 1 Min. :0.0000 Min. : 266057
## 1st Qu.: 1713 1st Qu.: 3566 1st Qu.:0.4090 1st Qu.: 560119
## Median : 5737 Median : 11566 Median :0.4875 Median : 859794
## Mean : 9638 Mean : 19276 Mean :0.4707 Mean : 824996
## 3rd Qu.:14135 3rd Qu.: 28287 3rd Qu.:0.5542 3rd Qu.:1200038
## Max. :77163 Max. :134645 Max. :1.0000 Max. :1716160
## age_l age_h age_n NUTS2_sh
## Min. :16.00 Min. :24.00 Min. :20.00 Length:22660
## 1st Qu.:25.00 1st Qu.:34.00 1st Qu.:29.50 Class :character
## Median :45.00 Median :54.00 Median :49.50 Mode :character
## Mean :40.37 Mean :49.21 Mean :44.79
## 3rd Qu.:55.00 3rd Qu.:64.00 3rd Qu.:59.50
## Max. :65.00 Max. :74.00 Max. :69.50
## eduyears
## Min. : 8.00
## 1st Qu.: 9.00
## Median :12.00
## Mean :12.64
## 3rd Qu.:15.00
## Max. :22.00
Let’s investigate the shape of the function for the response and predictors. The shape of the predictors has a great impact on the rest of the analysis. I use acepack to fit a model and plot both the response and the predictors.
tbtest <- tbnum %>% dplyr::select(sum_pop, sum_edu_region_year, year_n, perc_women, age_n)
tbtest <- data.frame(tbtest)
acefit <- ace(tbtest, tbnum$eduyears, wt=tbtest$sum_edu_region_year)
plot(tbnum$eduyears, acefit$ty, xlab = "Years of education", ylab = "transformed years of education")
plot(tbtest[,1], acefit$tx[,1], xlab = "Population in region", ylab = "transformed population in region")
plot(tbtest[,2], acefit$tx[,2], xlab = "# persons with same edulevel, region, year", ylab = "transformed # persons with same edulevel, region, year")
plot(tbtest[,3], acefit$tx[,3], xlab = "Year", ylab = "transformed year")
plot(tbtest[,4], acefit$tx[,4], xlab = "Percent women", ylab = "transformed percent women")
plot(tbtest[,5], acefit$tx[,5], xlab = "Age", ylab = "transformed age")
I use MARS to fit hockey-stick functions for the predictors. I do not wish to overfit by using a better approximation at this point. I will include interactions of degree two. I will put more emphasis on groups with larger size by using the number of persons with same edulevel, region, year, age as weights in the regression. From the analysis with acepack, I will approximate the shape of the response with X^-1.
tbtemp <- tbnum %>% dplyr::select(eduyears, sum_pop, sum_edu_region_year, year_n, perc_women, age_n)
mmod <- earth(eduyears^-1 ~ ., weights = tbtest$sum_edu_region_year, data = tbtemp, nk = 9, degree = 2)
summary (mmod)
## Call: earth(formula=eduyears^-1~., data=tbtemp,
## weights=tbtest$sum_edu_region_year, degree=2, nk=9)
##
## coefficients
## (Intercept) 0.109974110
## h(68923-sum_edu_region_year) -0.000000172
## h(sum_edu_region_year-68923) -0.000000071
## h(0.402156-perc_women) -0.142039538
## h(perc_women-0.402156) -0.216582584
## h(2004-year_n) * h(perc_women-0.402156) 0.006151369
## h(year_n-2004) * h(perc_women-0.402156) -0.003086559
## h(perc_women-0.402156) * h(age_n-29.5) 0.004789032
## h(perc_women-0.402156) * h(29.5-age_n) 0.007923485
##
## Selected 9 of 9 terms, and 4 of 5 predictors
## Termination condition: Reached nk 9
## Importance: perc_women, age_n, year_n, sum_edu_region_year, sum_pop-unused
## Weights: 160, 160, 2503, 2503, 27984, 27984, 41596, 41596, 57813, 57813,...
## Number of terms at each degree of interaction: 1 4 4
## GCV 4.263981 RSS 96442.81 GRSq 0.3866042 RSq 0.3876866
plot (mmod)
plotmo (mmod)
## plotmo grid: sum_pop sum_edu_region_year year_n perc_women age_n
##<PHONE_NUMBER>6.5 2001 0.4875054 49.5
model_mmod <- lm (eduyears^-1 ~
lspline(sum_edu_region_year, c(68923)) +
lspline(perc_women, c(0.402156)) +
lspline(year_n, c(2004)):lspline(perc_women, c(0.402156)) +
lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)),
weights = tbtest$sum_edu_region_year,
data = tbnum)
summary (model_mmod)$r.squared
## [1] 0.4067181
anova (model_mmod)
## Analysis of Variance Table
##
## Response: eduyears^-1
## Df Sum Sq Mean Sq
## lspline(sum_edu_region_year, c(68923)) 2 6429 3214.4
## lspline(perc_women, c(0.402156)) 2 11182 5590.8
## lspline(perc_women, c(0.402156)):lspline(year_n, c(2004)) 4 18631 4657.7
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) 4 27819 6954.8
## Residuals 22647 93445 4.1
## F value Pr(>F)
## lspline(sum_edu_region_year, c(68923)) 779.03 < 2.2e-16 ***
## lspline(perc_women, c(0.402156)) 1354.96 < 2.2e-16 ***
## lspline(perc_women, c(0.402156)):lspline(year_n, c(2004)) 1128.81 < 2.2e-16 ***
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) 1685.54 < 2.2e-16 ***
## Residuals
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Since the predictors are on different scales I will also use MARS to fit hockey-stick functions to the standardised data. Weights can not be negative.
tbtemp <- tbnum %>% dplyr::select(eduyears, sum_pop, sum_edu_region_year, year_n, perc_women, age_n)
tbtemp_scale <- data.frame(tbtemp %>% scale())
mmod_scale <- earth(eduyears^-1 ~ ., weights = tbnum$sum_edu_region_year, data = tbtemp_scale, nk = 9, degree = 2)
summary (mmod_scale)
## Call: earth(formula=eduyears^-1~., data=tbtemp_scale,
## weights=tbnum$sum_edu_region_year, degree=2, nk=9)
##
## coefficients
## (Intercept) 1.4518768
## h(1.54673-sum_pop) -1.3123162
## h(2.48479-sum_edu_region_year) 2.2482786
## h(sum_edu_region_year-2.48479) 0.4668398
## h(0.589918-perc_women) -5.1021696
## h(perc_women-0.589918) -5.8909808
## h(-0.905736-age_n) -3.0330857
## h(age_n- -0.905736) -0.5385299
##
## Selected 8 of 9 terms, and 4 of 5 predictors
## Termination condition: Reached nk 9
## Importance: perc_women, sum_edu_region_year, sum_pop, age_n, year_n-unused
## Weights: 160, 160, 2503, 2503, 27984, 27984, 41596, 41596, 57813, 57813,...
## Number of terms at each degree of interaction: 1 7 (additive model)
## GCV 388811.6 RSS<PHONE_NUMBER> GRSq 0.2645814 RSq 0.2657169
plot (mmod_scale)
plotmo (mmod_scale)
## plotmo grid: sum_pop sum_edu_region_year year_n perc_women age_n
## 0.08635757 -0.3683495 -0.04979415 0.1299828 0.2792169
model_mmod_scale <- lm (eduyears^-1 ~
lspline(sum_pop, c(1.54673)) +
lspline(sum_edu_region_year, c(2.48479)) +
lspline(perc_women, c(0.589918)) +
lspline(age_n, c(-0.905736)),
weights = tbtest$sum_edu_region_year,
data = tbtemp_scale)
summary (model_mmod_scale)$r.squared
## [1] 0.2657429
anova (model_mmod_scale)
## Analysis of Variance Table
##
## Response: eduyears^-1
## Df Sum Sq Mean Sq F value
## lspline(sum_pop, c(1.54673)) 2 22976857 11488429 29.585
## lspline(sum_edu_region_year, c(2.48479)) 2 824771527 412385764 1061.981
## lspline(perc_women, c(0.589918)) 2<PHONE_NUMBER><PHONE_NUMBER> 2827.043
## lspline(age_n, c(-0.905736)) 2 140046090 70023045 180.324
## Residuals 22651<PHONE_NUMBER> 388317
## Pr(>F)
## lspline(sum_pop, c(1.54673)) 1.473e-13 ***
## lspline(sum_edu_region_year, c(2.48479)) < 2.2e-16 ***
## lspline(perc_women, c(0.589918)) < 2.2e-16 ***
## lspline(age_n, c(-0.905736)) < 2.2e-16 ***
## Residuals
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
I will use regsubsets to find the model which minimises the AIC using the standardised data. I will include some plots for diagnostic purposes. I have also included a bootstrap test since we can’t count on the errors to be normally distributed.
b <- regsubsets (eduyears^-1 ~ (lspline(sum_edu_region_year, c(2.48479)) + lspline(perc_women, c(0.589918)) + lspline(age_n, c(-0.905736)) + year_n + lspline(sum_pop, c(1.54673))) * (lspline(sum_edu_region_year, c(2.48479)) + lspline(perc_women, c(0.589918)) + lspline(age_n, c(-0.905736)) + year_n + lspline(sum_pop, c(1.54673))), weights = tbnum$sum_edu_region_year, data = tbtemp_scale, nvmax = 12)
rs <- summary(b)
AIC <- 50 * log (rs$rss / 50) + (2:13) * 2
which.min (AIC)
## [1] 4
names (rs$which[4,])[rs$which[4,]]
## [1] "(Intercept)"
## [2] "lspline(perc_women, c(0.589918))1"
## [3] "lspline(sum_edu_region_year, c(2.48479))1:lspline(age_n, c(-0.905736))1"
## [4] "lspline(perc_women, c(0.589918))2:lspline(age_n, c(-0.905736))2"
## [5] "lspline(age_n, c(-0.905736))1:lspline(sum_pop, c(1.54673))1"
model <- lm (eduyears^-1 ~
lspline(perc_women, c(0.402156)) +
lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) +
lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) +
lspline(age_n, c(29.5)):sum_pop,
weights = tbnum$sum_edu_region_year,
data = tbnum)
boxcox(model)
summary (model)
##
## Call:
## lm(formula = eduyears^-1 ~ lspline(perc_women, c(0.402156)) +
## lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) +
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) +
## lspline(age_n, c(29.5)):sum_pop, data = tbnum, weights = tbnum$sum_edu_region_year)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -7.7236 -1.3350 -0.2622 1.2344 6.2808
##
## Coefficients:
## Estimate
## (Intercept) 6.003e-02
## lspline(perc_women, c(0.402156))1 1.614e-01
## lspline(perc_women, c(0.402156))2 -9.712e-02
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))1 1.680e-09
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))1 -9.445e-10
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))2 1.449e-08
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))2 -1.359e-10
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))1 -1.611e-03
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))1 -2.570e-03
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))2 1.802e-04
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))2 3.535e-03
## lspline(age_n, c(29.5))1:sum_pop -2.162e-10
## lspline(age_n, c(29.5))2:sum_pop -3.873e-10
## Std. Error
## (Intercept) 1.629e-03
## lspline(perc_women, c(0.402156))1 6.578e-03
## lspline(perc_women, c(0.402156))2 2.087e-02
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))1 3.435e-10
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))1 6.753e-10
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))2 4.415e-10
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))2 1.118e-09
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))1 1.893e-04
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))1 7.417e-04
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))2 6.717e-05
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))2 1.212e-04
## lspline(age_n, c(29.5))1:sum_pop 1.854e-11
## lspline(age_n, c(29.5))2:sum_pop 2.233e-11
## t value
## (Intercept) 36.838
## lspline(perc_women, c(0.402156))1 24.541
## lspline(perc_women, c(0.402156))2 -4.653
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))1 4.890
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))1 -1.399
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))2 32.817
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))2 -0.122
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))1 -8.510
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))1 -3.465
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))2 2.683
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))2 29.180
## lspline(age_n, c(29.5))1:sum_pop -11.660
## lspline(age_n, c(29.5))2:sum_pop -17.345
## Pr(>|t|)
## (Intercept) < 2e-16 ***
## lspline(perc_women, c(0.402156))1 < 2e-16 ***
## lspline(perc_women, c(0.402156))2 3.30e-06 ***
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))1 1.01e-06 ***
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))1 0.161945
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))2 < 2e-16 ***
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))2 0.903193
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))1 < 2e-16 ***
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))1 0.000531 ***
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))2 0.007309 **
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))2 < 2e-16 ***
## lspline(age_n, c(29.5))1:sum_pop < 2e-16 ***
## lspline(age_n, c(29.5))2:sum_pop < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.069 on 22647 degrees of freedom
## Multiple R-squared: 0.3847, Adjusted R-squared: 0.3844
## F-statistic: 1180 on 12 and 22647 DF, p-value: < 2.2e-16
anova (model)
## Analysis of Variance Table
##
## Response: eduyears^-1
## Df Sum Sq
## lspline(perc_women, c(0.402156)) 2 13795
## lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) 4 29033
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) 4 8736
## lspline(age_n, c(29.5)):sum_pop 2 9027
## Residuals 22647 96916
## Mean Sq F value
## lspline(perc_women, c(0.402156)) 6897.3 1611.75
## lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) 7258.3 1696.10
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) 2183.9 510.33
## lspline(age_n, c(29.5)):sum_pop 4513.4 1054.67
## Residuals 4.3
## Pr(>F)
## lspline(perc_women, c(0.402156)) < 2.2e-16 ***
## lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) < 2.2e-16 ***
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) < 2.2e-16 ***
## lspline(age_n, c(29.5)):sum_pop < 2.2e-16 ***
## Residuals
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot (model)
binnedplot(predict(model), resid(model))
halfnorm(rstudent(model))
tbnum %>% mutate(residuals = residuals(model)) %>%
group_by(eduyears, region, year_n, age_n) %>%
summarise(residuals = mean(residuals), count = sum(groupsize)) %>%
ggplot (aes(x = eduyears, y = residuals, size = sqrt(count), colour = year_n)) +
geom_point() + facet_grid(. ~ age_n)
tbnumpred <- bind_cols(tbnum, as_tibble(predict(model, tbnum, interval = "confidence")))
suppressWarnings(multiclass.roc(tbnumpred$eduyears, tbnumpred$fit))
## Setting direction: controls > cases
## Setting direction: controls < cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls < cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
## Setting direction: controls > cases
##
## Call:
## multiclass.roc.default(response = tbnumpred$eduyears, predictor = tbnumpred$fit)
##
## Data: tbnumpred$fit with 7 levels of tbnumpred$eduyears: 8, 9, 10, 12, 13, 15, 22.
## Multi-class area under the curve: 0.6936
bs <- function(formula, data, indices) {
d <- data[indices,] # allows boot to select sample
fit <- lm(formula, weights = sum_edu_region_year, data=d)
return(coef(fit))
}
results <- boot(data = tbnum, statistic = bs,
R = 1000, formula = eduyears^-1 ~
lspline(perc_women, c(0.402156)) +
lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) +
lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) +
lspline(age_n, c(29.5)):sum_pop,
weights = tbnum$sum_edu_region_year)
results
##
## WEIGHTED BOOTSTRAP
##
##
## Call:
## boot(data = tbnum, statistic = bs, R = 1000, weights = tbnum$sum_edu_region_year,
## formula = eduyears^-1 ~ lspline(perc_women, c(0.402156)) +
## lspline(sum_edu_region_year, c(68923)):lspline(age_n,
## c(29.5)) + lspline(perc_women, c(0.402156)):lspline(age_n,
## c(29.5)) + lspline(age_n, c(29.5)):sum_pop)
##
##
## Bootstrap Statistics :
## original bias std. error mean(t*)
## t1* 6.002560e-02 6.282966e-03 1.487621e-03 6.630857e-02
## t2* 1.614448e-01 -1.489491e-02 6.393635e-03 1.465499e-01
## t3* -9.712093e-02 7.221993e-02 1.927104e-02 -2.490101e-02
## t4* 1.679729e-09 4.440291e-09 3.270648e-10 6.120020e-09
## t5* -9.444671e-10 1.440855e-10 3.744453e-10 -8.003816e-10
## t6* 1.448852e-08 -3.952505e-09 4.193252e-10 1.053602e-08
## t7* -1.359400e-10 1.468111e-09 5.529310e-10 1.332171e-09
## t8* -1.610831e-03 6.882804e-05 1.801159e-04 -1.542003e-03
## t9* -2.570250e-03 -2.067477e-03 6.732789e-04 -4.637727e-03
## t10* 1.801919e-04 7.229534e-04 6.282813e-05 9.031453e-04
## t11* 3.535199e-03 -1.161393e-03 1.113341e-04 2.373805e-03
## t12* -2.161738e-10 -2.930531e-10 1.634625e-11 -5.092269e-10
## t13* -3.872669e-10 6.108726e-11 2.103217e-11 -3.261797e-10
plot(results, index=1) # intercept
There are a few things I would like to investigate to improve the credibility of the analysis. I will assume that the data can be grouped by year of birth and region and investigate how this will affect the model. I have scaled the weights not to affect the residual standard deviation. I will include some plots for diagnostic purposes. I will assume that each year of birth and each region is a group and set them as random effects and the rest of the predictors as fixed effects. I use the mean age in each age group as the year of birth.
temp <- tbnum %>% mutate(yob = year_n - age_n) %>% mutate(region = tbnum$region)
temp <- data.frame(temp)
weights_scaled <- tbtest$sum_edu_region_year / max(tbtest$sum_edu_region_year)
mmodel <- lmer (eduyears^-1 ~
lspline(perc_women, c(0.402156)) +
lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) +
lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) +
lspline(age_n, c(29.5)):sum_pop +
(1|yob) +
(1|region),
weights = weights_scaled,
data = temp)
## Warning: Some predictor variables are on very different scales: consider
## rescaling
plot(mmodel)
qqnorm (residuals(mmodel), main="")
summary (mmodel)
## Linear mixed model fit by REML ['lmerMod']
## Formula:
## eduyears^-1 ~ lspline(perc_women, c(0.402156)) + lspline(sum_edu_region_year,
## c(68923)):lspline(age_n, c(29.5)) + lspline(perc_women, c(0.402156)):lspline(age_n,
## c(29.5)) + lspline(age_n, c(29.5)):sum_pop + (1 | yob) + (1 | region)
## Data: temp
## Weights: weights_scaled
##
## REML criterion at convergence: -107912.7
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -4.1769 -0.6147 -0.1003 0.6108 3.2800
##
## Random effects:
## Groups Name Variance Std.Dev.
## yob (Intercept) 1.053e-04 0.0102603
## region (Intercept) 8.113e-07 0.0009007
## Residual 2.753e-05 0.0052472
## Number of obs: 22660, groups: yob, 108; region, 8
##
## Fixed effects:
## Estimate
## (Intercept) 3.382e-02
## lspline(perc_women, c(0.402156))1 1.806e-01
## lspline(perc_women, c(0.402156))2 -1.222e-01
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))1 3.692e-10
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))1 1.706e-09
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))2 1.440e-08
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))2 -5.056e-09
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))1 8.518e-04
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))1 -1.818e-03
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))2 -1.046e-03
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))2 2.786e-03
## lspline(age_n, c(29.5))1:sum_pop -1.412e-10
## lspline(age_n, c(29.5))2:sum_pop -3.426e-10
## Std. Error
## (Intercept) 2.092e-03
## lspline(perc_women, c(0.402156))1 1.757e-02
## lspline(perc_women, c(0.402156))2 1.953e-02
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))1 3.244e-10
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))1 6.564e-10
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))2 4.148e-10
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))2 1.112e-09
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))1 5.885e-04
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))1 6.941e-04
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))2 6.737e-05
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))2 1.167e-04
## lspline(age_n, c(29.5))1:sum_pop 3.051e-11
## lspline(age_n, c(29.5))2:sum_pop 2.143e-11
## t value
## (Intercept) 16.167
## lspline(perc_women, c(0.402156))1 10.280
## lspline(perc_women, c(0.402156))2 -6.258
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))1 1.138
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))1 2.599
## lspline(sum_edu_region_year, c(68923))1:lspline(age_n, c(29.5))2 34.716
## lspline(sum_edu_region_year, c(68923))2:lspline(age_n, c(29.5))2 -4.549
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))1 1.448
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))1 -2.619
## lspline(perc_women, c(0.402156))1:lspline(age_n, c(29.5))2 -15.525
## lspline(perc_women, c(0.402156))2:lspline(age_n, c(29.5))2 23.876
## lspline(age_n, c(29.5))1:sum_pop -4.627
## lspline(age_n, c(29.5))2:sum_pop -15.987
##
## Correlation matrix not shown by default, as p = 13 > 12.
## Use print(x, correlation=TRUE) or
## vcov(x) if you need it
## fit warnings:
## Some predictor variables are on very different scales: consider rescaling
anova (mmodel)
## Analysis of Variance Table
## Df Sum Sq
## lspline(perc_women, c(0.402156)) 2 0.243294
## lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) 4 0.060730
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) 4 0.030402
## lspline(age_n, c(29.5)):sum_pop 2 0.014060
## Mean Sq F value
## lspline(perc_women, c(0.402156)) 0.121647 4418.15
## lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) 0.015182 551.42
## lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) 0.007600 276.04
## lspline(age_n, c(29.5)):sum_pop 0.007030 255.32
binnedplot(predict(mmodel), resid(mmodel))
halfnorm(rstudent(mmodel))
tbnum %>% mutate(residuals = residuals(mmodel)) %>%
group_by(eduyears, region, year_n, age_n) %>%
summarise(residuals = mean(residuals), count = sum(groupsize)) %>%
ggplot (aes(x = eduyears, y = residuals, size = sqrt(count), colour = year_n)) +
geom_point() + facet_grid(. ~ age_n)
tbnumpred <- bind_cols(temp, as_tibble(predict(mmodel, temp, interval = "confidence")))
## Warning in predict.merMod(mmodel, temp, interval = "confidence"): unused
## arguments ignored
## Warning: Calling `as_tibble()` on a vector is discouraged, because the behavior is likely to change in the future. Use `tibble::enframe(name = NULL)` instead.

## Multi-class area under the curve: 0.6939
mySumm <- function(.) { s <- sigma(.)
c(beta =getME(., "beta"), sigma = s, sig01 = unname(s * getME(., "theta"))) }
results <- bootMer(mmodel, mySumm, nsim = 1000)
results
##
## PARAMETRIC BOOTSTRAP
##
##
## Call:
## bootMer(x = mmodel, FUN = mySumm, nsim = 1000)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 3.382171e-02 3.204383e-05 1.370011e-03
## t2* 1.806110e-01 5.656583e-04 1.586369e-02
## t3* -1.222301e-01 -1.200144e-04 7.545495e-03
## t4* 3.692235e-10 1.574681e-11 1.758515e-10
## t5* 1.705945e-09 -8.046354e-12 5.355611e-10
## t6* 1.440064e-08 -1.696450e-11 2.268515e-10
## t7* -5.055769e-09 1.234462e-11 8.717959e-10
## t8* 8.518246e-04 -2.117494e-05 5.396222e-04
## t9* -1.817991e-03 5.758882e-06 2.800208e-04
## t10* -1.045953e-03 1.165115e-06 3.192411e-05
## t11* 2.786456e-03 -8.257204e-08 6.151912e-05
## t12* -1.411911e-10 -7.934184e-13 2.229494e-11
## t13* -3.426241e-10 1.956803e-13 9.642223e-12
## t14* 5.247231e-03 -3.268970e-03 1.377226e-05
## t15* 1.026026e-02 -6.487712e-06 6.957391e-04
## t16* 9.007187e-04 -1.190123e-05 2.607631e-04
##
## 118 warning(s): Model failed to converge with max|grad| = 0.00200096 (tol = 0.002, component 1) (and others)
plot(results)
Now let’s see what we have found. I will plot all the models for comparison. I could not get the back transformation in sjPlot to work for the response variable so you will have to endure that the response is the inverse of years of education.
transformeddata <- tbnum %>% mutate(eduyears = eduyears ^ -1)
model <- lm (eduyears ~
lspline(perc_women, c(0.402156)) +
lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) +
lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) +
lspline(age_n, c(29.5)):sum_pop,
weights = tbnum$sum_edu_region_year,
data = transformeddata)
temp <- transformeddata %>% mutate(yob = year_n - age_n) %>% mutate(region = tbnum$region)
temp <- data.frame(temp)
mmodel <- lmer (eduyears ~
lspline(perc_women, c(0.402156)) +
lspline(sum_edu_region_year, c(68923)):lspline(age_n, c(29.5)) +
lspline(perc_women, c(0.402156)):lspline(age_n, c(29.5)) +
lspline(age_n, c(29.5)):sum_pop +
(1|yob) +
(1|region),
weights = weights_scaled,
data = temp)
## Warning: Some predictor variables are on very different scales: consider
## rescaling
plot_model (model, type = "pred", terms = c("perc_women"))
plot_model (mmodel, type = "pred", terms = c("perc_women"))
tbnum %>%
ggplot () +
geom_jitter (mapping = aes(x = perc_women, y = eduyears )) +
labs(
x = "Per cent women",
y = "Years of education"
)
plot_model (model, type = "pred", terms = c("age_n", "sum_edu_region_year"))
plot_model (mmodel, type = "pred", terms = c("age_n", "sum_edu_region_year"))
tbnum %>%
ggplot () +
geom_jitter (mapping = aes(x = sum_edu_region_year, y = eduyears, colour = age_n)) +
labs(
x = "# persons with same edulevel, region, year, age",
y = "Years of education"
)
plot_model (model, type = "pred", terms = c("age_n", "perc_women"))
plot_model (mmodel, type = "pred", terms = c("age_n", "perc_women"))
tbnum %>%
ggplot () +
geom_jitter (mapping = aes(x = perc_women, y = eduyears, colour = age_n)) +
labs(
x = "Age",
y = "Years of education"
)
plot_model (model, type = "pred", terms = c("age_n", "sum_pop"))
plot_model (mmodel, type = "pred", terms = c("age_n", "sum_pop"))
tbnum %>%
ggplot () +
geom_jitter (mapping = aes(x = age_n, y = eduyears, colour = sum_pop)) +
labs(
x = "Age",
y = "Years of education"
)


Highlights specific lines and/or line ranges.
Obviously, this only works on code blocks (

) and not for inline code.
You specify the lines to be highlighted through the data-line
attribute on the

element, in the following simple format:
Examples:
In case you want the line numbering to be offset by a certain number (for example, you want the 1st line to be number 41 instead of 1, which is an offset of 40), you can additionally use the data-line-offset
attribute.
You can also link to specific lines on any code snippet, by using the following as a url hash: #{element-id}.{lines}
where
{element-id}
is the id of the

element and {lines}
is one or more lines or line ranges that follow the format
outlined above. For example, if there is an element with id="play"
on the page, you can link to lines 5-6 by linking to #play.5-6


Timber is a library for doing realtime pitch detection in web apps.
Here's a basic guide on using it in your own projects.
Prerequisites
To get started, you'll need to download at least timber.js and Timber.swf
(do not hotlink them - please host the files yourself).
Using it
Timber uses the swfobject
library. You can either host that yourself, or use the Google-hosted copy:

You also need to import timber.js - you'll be hosting that yourself:

Next you need a placeholder DOM element that will hold the Flash part of Timber. Once the library has
access to the user's microphone, this will be invisible. Until then (but only after you initialize Timber),
this will display a request to access a microphone:

Now you need to initialize Timber:

All three parameters are required. First you need to tell Timber where you've hosted it, so it can fetch the remaining files it needs to run.
Next give it the DOM id of the placeholder you created above. Finally you specify the name of a javascript function which Timber should
call after the library has finished initializing itself.
Once Timber has finished initializing, you can add an event handler that will get called any time a note is detected:
$("timber").setCallback("NOTE_DETECTED", "got_note");
Here's a full list of the callbacks you can add:
"DEBUG" (one string parameter, a debug message)
"MIC_INIT" (one string parameter, the name of the microphone that is being initialized)
"MIC_OK" (no parameters)
"MIC_FAILED" (no parameters)
"NOTE_DETECTED" (two numeric parameters: a note number between 0.0 and 12.0, with 0.0 representing a "C",
and an amplitude between 0.0 and 1.0)
There are two more functions you can invoke on Timber: getMicrophoneNames returns a list of the available
microphones, and useMicrophone tells Timber to try to use one of them.
You don't necessarily need to use these functions - Timber will attempt to use the default microphone as soon
as it's initialized.
Building it
Download and install haxe, and then run ./compile.sh in the src directory.


- Fixed wrong display of Cmd key on OS X
- Built for IntelliJ 2017.1.4 blub
- Stop confusing Alt and Cmd on MacOs for toolbar menus
- Unify displaying shortcuts
- Compatibility with IntelliJ 2016.2 and newer builds (e.g. 2016.3 EAP)
- Compatibility with IntelliJ 2016.2
- Fix persisting color settings
- Make settings work again for 2016.1 - https://github.com/athiele/key-promoter-fork/issues/12
- Known issue: Color settings cannot be saved
- Make settings window display in IntelliJ 2016.1 - https://github.com/athiele/key-promoter-fork/issues/12
- Add option to reset your statistics
- First "key-promoter-fork" version with persistent statistics and a tool window
- Fixed "Plugin settings are reset to initial state on restart" - http://code.google.com/p/key-promoter/issues/detail?id=11 (thanks to Joakim Erelt)
- Menus support for Windows fixed(probably for all platforms except Mac) - http://code.google.com/p/key-promoter/issues/detail?id=8
- Multiple shortcuts supported(all of the rendered) - http://code.google.com/p/key-promoter/issues/detail?id=3
- Idea 10.5 and 11 supported now
- Position of popup in case of dual monitor configuration fixed
- Popup appeared always on top now(for example over dialogs)
- Maia and RubyMine (since 8000) compatible version. (RubyMine repack)
- Selena (since 6767) compatible version.
- NPE fixed.
- Popup text template configurable now.
- Possible to set number of uncshortcutted action invocation (or even turn off this feature by 0 value).
- Minor improvements and bugfixes.
- Popup redraw issues fixed.
- Right click now ignored.
- Refactored and source bundled with plugin (PluginPacker plugin used for packaging).
- Bugfixes.
- Keyboard shortcut association suggested each 3 actio invocations by mouse(not possible to turn off be design :) ).
- Popup UI impoved.
- Fixed dialogs overlapping issue.
- Popup follow the mouse possible now.
- Per shortcut stats for invocations (count displayed in tip popup).
- Previous shortcuts hiding once new appeared.
- Alpha channel transparency for background added.
- Added configuration
- Added support for buttons that has mnemonics (disabled by default)(Known issue: For Mac Alt displayed as mnemonic trigger)
- Tool window button click added
- Animation changed
- Mac menus clicks now supported (thanks to Yegor Yarko and Dmitry Jemerov)


Books by Josh Renneke
By Josh Renneke
Dawn Of The Black Star
Aug 26
(FREE) A courier finds herself on the run from mysterious enemies, with a thief as her only ally
Continue reading
By Josh Renneke
Deleca: Life By Proxy
Aug 26
(FREE) These short stories are set in a near future where people live their lives almost completely through virtual-reality. But if your entire life experience is simulated, are you really living?
Continue reading
By Josh Renneke
Alicia's Two Years
The First Six Months
Aug 26
(FREE) Alicia's Two Years tells the story of a two-year period in the lives of twenty-something Alicia and her friends, living life with no real plan for the future.
Continue reading
By Josh Renneke
Alicia's Two Years
The Second Six Months
Aug 26
($0.99) The highly anticipated sequel recounts the end of the first year with Alicia and friends.
Continue reading
By Josh Renneke
Girl In The Needle
Aug 26
(FREE) Life on Earth is nearly destroyed by an unfeeling goddess who gives the survivors a utopia (of sorts).
Continue reading


| Apache Struts 2 Documentation > Home > Guides > Core Developers Guide > Related Tools > QuickStart |
Today, most web development still follows a strict code/compile/deploy/review development cycle. In practice, the deploy steps often means stopping and starting the web server, which can steal a significant amount of development time.The QuickStart feature is designed to reduce or eliminate restarting the server after changes to source code or configuration files. The goal is to allow developers to work interactively with an application as it is being developed, so that we can write better code faster. Essentially, QuickStart is a combination of technologies and conventions.
The best way to get started with any new technology can be to just jump in and try it out. If you agree, download a distribution and take the WW:QuickStart feature for a spin.
QuickStart is included in the framework distribution. Launch it opening a command window on the distribution root and running
> java \-jar struts2-core.jar quickstart:mywebapp
With QuickStart running, you can fire up a web browser, open http://localhost:8080/mywebapp, and begin developing your application.
QuickStart requires Java 1.5.
| java.net.BindException: Address already in use Out of the box, QuickStart is set to use port 8080. If another service is already running at 8080 (say, Tomcat), you should stop that service before starting QuickStart. |
There is a little more to using QuickStart effectively. But not much more. QuickStart assumes the a specific directory structure.
You can quickly get started by copying one of the existing webapps from the distribution.
Once you have a starter application up and running, you are free to change your classes, JSPs, template files, and other resources on the fly - all without compiling or redeploying. Some files, such as web.xml, will require that you restart QuickStart for the changes to take affect. Similarly, some frameworks, such as Hibernate, do not offer the full class-reloading support that Struts does. Your mileage may vary, but we think no matter what you'll love developing in QuickStart.
Don't have a directory structure like the one laid out? Want to use a port other than 8080? No problem! There are two options for you:
While the quickstart:xxx shorthand is nice, it often doesn't work for many people beyond the initial distribution packaging. So QuickStart allows you to specify three options from the command line:
Suppose your project layout is the following:
You could launch your application using QuickStart by executing the command:
> java \-jar lib/struts2-core.jar quickstart /project src/webapp src/java
Sometimes the command line options still aren't enough. For whatever reasons, port 8080 might not be enough, or you may need to extend other configurations. Or perhaps your JARs are not in your project but instead are in some other directory (very common if you use Maven to build your project). To help out, QuickStart provides a configuration file that let's you tweak how the deployment happens and how it is configured as much as you'd like. Consider the sample quickstart.xml file:
If you use this deployment technique, you must remember that quickstart.xml must be in the same working directory in which you execute the java -jar webwork.jar quickstart command. You don't need to pass any additional command line arguments to QuickStart, but you must have this file in your working directory.
QuickStart combines Struts 2 with an embedded Jetty server, some advanced class loading, and the Eclipse Java compiler. (Don't worry, the Eclipse IDE is not required!)
Running struts2-core.jar bootstraps the classpath and includes every JAR found in the lib directory. It also includes struts2-core.jar, of course. The procss then invokes the QuickStart application. This, in turn, starts a Jetty server that is configured to the web application specified in the quickstart:xxx argument.
The Jetty server's context ClassLoader is specified as a custom ClassLoader that looks at the source files in webapps/xxx/src/java and compiles them on the fly. These classes are also reloaded whenever a change is detected.
Because the framework creates a new Action on every request, reloading the classes works great. You are free to change the entire class schema (methods, fields, inheritance, and so forth). Because none of the objects are cached or stored in long-term storage, you usually won't run into any problems here.
Running QuickStart from your IDE is no different than running it from the command line. The only difference is that you need to set up the structure and classpath in your IDE properly. It doesn't really matter what is in the classpath as long the struts2-core.jar is included. Pay close attention to your working directory.
An example of what IntelliJ IDEA looks like when launching QuickStart from within the Struts project is included for reference (click for a larger view):
While the framework is pretty good about making class reloading in QuickStart easy, other libraries and code are not. As a general rule of thumb, if any objects have long term state (singleton, session scope, etc), they will not be reloaded. The reloaded classes will only take affect after a new instance has been created with the new keyword or through reflection.
For example, Hibernate has been found to store references to the objects it persists for long periods of time because of it's caching mechanism. It also happens to hold a reference to the Class instance itself. This makes it very difficult, if not impossible, to allow you to change your models on the fly.
| ClassCastException Most problems will manifest themselves through a ClassCastException, or some other weird class-related error. You may even find yourself banging your head against the wall because some Foo instance can't be cast to the Foo class. This is the biggest challenge with using QuickStart and can best be mitigated by using libraries and code that share very little state. |
Quickstart is a handy tool for development of your applications. We recommend that you give QuickStart a try, to see if it meets your development needs. However, QuickStart is not meant to be your sole environment for web application development. QuickStart is meant to help you rapidily create proof-of-concepts and so that you can see the result. We recommend you always at least test your work under other applications servers, such as Tomcat, Resin, or even the standard, standalone version of Jetty.


Collect 3 fruits to move on to the next level. Reach Level 7 to win.
Time Remaining:
Score:
Level:
Time Passed:
High Score:
Top Scores


Coverage report:
67%
Hot-keys on this page
n
s
m
x
c
change column sorting
Module
statements
missing
excluded
coverage
Total
1186
391
0
67%
/home/vitor/dendribuilder/BuildingBlock
103
42
0
59%
/home/vitor/dendribuilder/BuildingBlockFactory
32
5
0
84%
/home/vitor/dendribuilder/angle
68
15
0
78%
/home/vitor/dendribuilder/angle_params
38
8
0
79%
/home/vitor/dendribuilder/atom
118
38
0
68%
/home/vitor/dendribuilder/bond
50
8
0
84%
/home/vitor/dendribuilder/bond_params
29
6
0
79%
/home/vitor/dendribuilder/branch
16
6
0
63%
/home/vitor/dendribuilder/connection
6
0
0
100%
/home/vitor/dendribuilder/dendrimer
83
62
0
25%
/home/vitor/dendribuilder/dihe_params
50
17
0
66%
/home/vitor/dendribuilder/dihedral
95
61
0
36%
/home/vitor/dendribuilder/exclusions
15
7
0
53%
/home/vitor/dendribuilder/ff_params
104
5
0
95%
/home/vitor/dendribuilder/itp
137
77
0
44%
/home/vitor/dendribuilder/polymer
73
14
0
81%
/home/vitor/dendribuilder/utils
35
20
0
43%
angleTests
23
0
0
100%
bondTests
28
0
0
100%
buildingBlockFactoryTests
22
0
0
100%
buildingBlockTests
13
0
0
100%
dendritest
17
0
0
100%
polymerTests
21
0
0
100%
testEnv
10
0
0
100%


Noise filters and prototype selection¶
TomekLinkRemoval¶
API¶
Example¶
>>> noise_filter= smote_variants.TomekLinkRemoval()
>>> X_samp, y_samp= noise_filter.remove_noise(X, y)
Tomek link removal
- References:
BibTex:
@article{smoteNoise0, author = {Batista, Gustavo E. A. P. A. and Prati, Ronaldo C. and Monard, Maria Carolina}, title = {A Study of the Behavior of Several Methods for Balancing Machine Learning Training Data}, journal = {SIGKDD Explor. Newsl.}, issue_date = {June 2004}, volume = {6}, number = {1}, month = jun, year = {2004}, issn = {1931-0145}, pages = {20--29}, numpages = {10}, url = {http://doi.acm.org/10.1145/1007730.1007735}, doi = {10.1145/1007730.1007735}, acmid = {1007735}, publisher = {ACM}, address = {New York, NY, USA} }
URL: https://drive.google.com/open?id=1-AckPO4e4R3e3P3Zrsh6dVoFwRhL5Obx
CondensedNearestNeighbors¶
API¶
Example¶
>>> noise_filter= smote_variants.CondensedNearestNeighbors()
>>> X_samp, y_samp= noise_filter.remove_noise(X, y)
Condensed nearest neighbors
- References:
BibTex:
@ARTICLE{condensed_nn, author={P. Hart}, journal={IEEE Transactions on Information Theory}, title={The condensed nearest neighbor rule (Corresp.)}, year={1968}, volume={14}, number={3}, pages={515-516}, keywords={Pattern classification}, doi={10.1109/TIT.1968.1054155}, ISSN={0018-9448}, month={May}}
OneSidedSelection¶
API¶
Example¶
>>> noise_filter= smote_variants.OneSidedSelection()
>>> X_samp, y_samp= noise_filter.remove_noise(X, y)
- References:
BibTex:
@article{smoteNoise0, author = {Batista, Gustavo E. A. P. A. and Prati, Ronaldo C. and Monard, Maria Carolina}, title = {A Study of the Behavior of Several Methods for Balancing Machine Learning Training Data}, journal = {SIGKDD Explor. Newsl.}, issue_date = {June 2004}, volume = {6}, number = {1}, month = jun, year = {2004}, issn = {1931-0145}, pages = {20--29}, numpages = {10}, url = {http://doi.acm.org/10.1145/1007730.1007735}, doi = {10.1145/1007730.1007735}, acmid = {1007735}, publisher = {ACM}, address = {New York, NY, USA} }
URL: https://drive.google.com/open?id=1-AckPO4e4R3e3P3Zrsh6dVoFwRhL5Obx
CNNTomekLinks¶
API¶
Example¶
>>> noise_filter= smote_variants.CNNTomekLinks()
>>> X_samp, y_samp= noise_filter.remove_noise(X, y)
- References:
BibTex:
@article{smoteNoise0, author = {Batista, Gustavo E. A. P. A. and Prati, Ronaldo C. and Monard, Maria Carolina}, title = {A Study of the Behavior of Several Methods for Balancing Machine Learning Training Data}, journal = {SIGKDD Explor. Newsl.}, issue_date = {June 2004}, volume = {6}, number = {1}, month = jun, year = {2004}, issn = {1931-0145}, pages = {20--29}, numpages = {10}, url = {http://doi.acm.org/10.1145/1007730.1007735}, doi = {10.1145/1007730.1007735}, acmid = {1007735}, publisher = {ACM}, address = {New York, NY, USA} }
URL: https://drive.google.com/open?id=1-AckPO4e4R3e3P3Zrsh6dVoFwRhL5Obx
NeighborhoodCleaningRule¶
API¶
Example¶
>>> noise_filter= smote_variants.NeighborhoodCleaningRule()
>>> X_samp, y_samp= noise_filter.remove_noise(X, y)
- References:
BibTex:
@article{smoteNoise0, author = {Batista, Gustavo E. A. P. A. and Prati, Ronaldo C. and Monard, Maria Carolina}, title = {A Study of the Behavior of Several Methods for Balancing Machine Learning Training Data}, journal = {SIGKDD Explor. Newsl.}, issue_date = {June 2004}, volume = {6}, number = {1}, month = jun, year = {2004}, issn = {1931-0145}, pages = {20--29}, numpages = {10}, url = {http://doi.acm.org/10.1145/1007730.1007735}, doi = {10.1145/1007730.1007735}, acmid = {1007735}, publisher = {ACM}, address = {New York, NY, USA} }
URL: https://drive.google.com/open?id=1-AckPO4e4R3e3P3Zrsh6dVoFwRhL5Obx
EditedNearestNeighbors¶
API¶
Example¶
>>> noise_filter= smote_variants.EditedNearestNeighbors()
>>> X_samp, y_samp= noise_filter.remove_noise(X, y)
- References:
BibTex:
@article{smoteNoise0, author = {Batista, Gustavo E. A. P. A. and Prati, Ronaldo C. and Monard, Maria Carolina}, title = {A Study of the Behavior of Several Methods for Balancing Machine Learning Training Data}, journal = {SIGKDD Explor. Newsl.}, issue_date = {June 2004}, volume = {6}, number = {1}, month = jun, year = {2004}, issn = {1931-0145}, pages = {20--29}, numpages = {10}, url = {http://doi.acm.org/10.1145/1007730.1007735}, doi = {10.1145/1007730.1007735}, acmid = {1007735}, publisher = {ACM}, address = {New York, NY, USA} }
URL: https://drive.google.com/open?id=1-AckPO4e4R3e3P3Zrsh6dVoFwRhL5Obx


by Woody Gilk / @shadowhand
Tech Lead at When I Work
Long time contributor to open source
Equip, League, Kohana, DOMPDF, etc …
4587 contributions to 270 repositories and counting
Husband & Father
Tea drinker
It's not just for the British!
“An immutable object is an object whose state cannot be modified after it is created.”
Given this code…
$widget = new Widget([
'price' => 5.00,
'color' => 'yellow',
'quantity' => 3,
]);
$cart->add($widget);
What is the state of $widget
?
joind.in link goes here


* * * FIRST MODULE: PROFILER* * *
User Input/Form
Collect user preferences with a form element
Run the next module with job title/city
HTML form element to collect info from user
JavaScript for interactive elements
Bootstrap components for design
Title
Text


Travel and Aviation Consulting
We are a company that offers design and build services for you from initial sketches to the final construction.
Challenging established thinking,
achieving sustainable advantage
our servicesWe are a company that offers design and build services for you from initial sketches to the final construction.
The sector is diverse, including professional services, education and training, and support services and outsourcing.
We are a company that offers design and build services for you from initial sketches to the final construction.
We are a company that offers design and build services for you from initial sketches to the final construction.
We are a company that offers design and build services for you from initial sketches to the final construction.
We are a company that offers design and build services for you from initial sketches to the final construction.
To help entrepreneurs get their act together
before they talk to investors.
Receive premium pricing from Top Tier financial institutions. Pricing from Top Tier financial institutions.
With Consulting WP you'll get no re-quotes, no dealer intervention and fair order execution.
Trade Forex and CFDs with the world's best trading platforms on your desktop or mobile device.
We were amazed by how little effort was required on our part to have Consulting WP prepare thesematerials.We exchanged a few phone calls and e-mails, and they... handled the rest.
Amanda Seyfried
Founder & CEO, Arcade Systems


We can create custom HTML elements, described by our class, with its own methods and properties, events and so on.
Once a custom element is defined, we can use it on par with built-in HTML elements.
That’s great, as HTML dictionary is rich, but not infinite. There are no <easy-tabs>
, <sliding-carousel>
, <beautiful-upload>
… Just think of any other tag we might need.
We can define them with a special class, and then use as if they were always a part of HTML.
There are two kinds of custom elements:
HTMLElement
class.HTMLButtonElement
etc.First we’ll cover autonomous elements, and then move to customized built-in ones.
To create a custom element, we need to tell the browser several details about it: how to show it, what to do when the element is added or removed to page, etc.
That’s done by making a class with special methods. That’s easy, as there are only few methods, and all of them are optional.
Here’s a sketch with the full list:
class MyElement extends HTMLElement {
constructor() {
super();
// element created
}
connectedCallback() {
// browser calls this method when the element is added to the document
// (can be called many times if an element is repeatedly added/removed)
}
disconnectedCallback() {
// browser calls this method when the element is removed from the document
// (can be called many times if an element is repeatedly added/removed)
}
static get observedAttributes() {
return [
/* array of attribute names to monitor for changes */
];
}
attributeChangedCallback(name, oldValue, newValue) {
// called when one of attributes listed above is modified
}
adoptedCallback() {
// called when the element is moved to a new document
// (happens in document.adoptNode, very rarely used)
}
// there can be other element methods and properties
}
After that, we need to register the element:
// let the browser know that <my-element> is served by our new class
customElements.define("my-element", MyElement);
Now for any HTML elements with tag <my-element>
, an instance of MyElement
is created, and the aforementioned methods are called. We also can document.createElement('my-element')
in JavaScript.
``smart header="Custom element name must contain a hyphen
-" Custom element name must have a hyphen
-, e.g.
my-elementand
super-buttonare valid names, but
myelement` is not.
That’s to ensure that there are no name conflicts between built-in and custom HTML elements.
## Example: "time-formatted"
For example, there already exists `<time>` element in HTML, for date/time. But it doesn't do any formatting by itself.
Let's create `<time-formatted>` element that displays the time in a nice, language-aware format:
```html run height=50 autorun="no-epub"
<script>
*!*
class TimeFormatted extends HTMLElement { // (1)
*/!*
connectedCallback() {
let date = new Date(this.getAttribute('datetime') || Date.now());
this.innerHTML = new Intl.DateTimeFormat("default", {
year: this.getAttribute('year') || undefined,
month: this.getAttribute('month') || undefined,
day: this.getAttribute('day') || undefined,
hour: this.getAttribute('hour') || undefined,
minute: this.getAttribute('minute') || undefined,
second: this.getAttribute('second') || undefined,
timeZoneName: this.getAttribute('time-zone-name') || undefined,
}).format(date);
}
}
*!*
customElements.define("time-formatted", TimeFormatted); // (2)
*/!*
</script>
<!-- (3) -->
*!*
<time-formatted datetime="2019-12-01"
*/!*
year="numeric" month="long" day="numeric"
hour="numeric" minute="numeric" second="numeric"
time-zone-name="short"
></time-formatted>
connectedCallback()
– the browser calls it when <time-formatted>
element is added to page (or when HTML parser detects it), and it uses the built-in Intl.DateTimeFormat data formatter, well-supported across the browsers, to show a nicely formatted time.customElements.define(tag, class)
.``smart header="Custom elements upgrade" If the browser encounters any
elements before
customElements.define`, that’s not an error. But the element is yet unknown, just like any non-standard tag.
Such “undefined” elements can be styled with CSS selector :not(:defined)
.
When customElement.define
is called, they are “upgraded”: a new instance of TimeFormatted
is created for each, and connectedCallback
is called. They become :defined
.
To get the information about custom elements, there are methods: - customElements.get(name)
– returns the class for a custom element with the given name
, - customElements.whenDefined(name)
– returns a promise that resolves (without value) when a custom element with the given name
becomes defined. ```
``smart header="Rendering in
connectedCallback, not in
constructor" In the example above, element content is rendered (created) in
connectedCallback`.
Why not in the constructor
?
The reason is simple: when constructor
is called, it’s yet too early. The element is created, but the browser did not yet process/assign attributes at this stage: calls to getAttribute
would return null
. So we can’t really render there.
Besides, if you think about it, that’s better performance-wise – to delay the work until it’s really needed.
The connectedCallback
triggers when the element is added to the document. Not just appended to another element as a child, but actually becomes a part of the page. So we can build detached DOM, create elements and prepare them for later use. They will only be actually rendered when they make it into the page.
## Observing attributes
In the current implementation of `<time-formatted>`, after the element is rendered, further attribute changes don't have any effect. That's strange for an HTML element. Usually, when we change an attribute, like `a.href`, we expect the change to be immediately visible. So let's fix this.
We can observe attributes by providing their list in `observedAttributes()` static getter. For such attributes, `attributeChangedCallback` is called when they are modified. It doesn't trigger for other, unlisted attributes (that's for performance reasons).
Here's a new `<time-formatted>`, that auto-updates when attributes change:
```html run autorun="no-epub" height=50
<script>
class TimeFormatted extends HTMLElement {
*!*
render() { // (1)
*/!*
let date = new Date(this.getAttribute('datetime') || Date.now());
this.innerHTML = new Intl.DateTimeFormat("default", {
year: this.getAttribute('year') || undefined,
month: this.getAttribute('month') || undefined,
day: this.getAttribute('day') || undefined,
hour: this.getAttribute('hour') || undefined,
minute: this.getAttribute('minute') || undefined,
second: this.getAttribute('second') || undefined,
timeZoneName: this.getAttribute('time-zone-name') || undefined,
}).format(date);
}
*!*
connectedCallback() { // (2)
*/!*
if (!this.rendered) {
this.render();
this.rendered = true;
}
}
*!*
static get observedAttributes() { // (3)
*/!*
return ['datetime', 'year', 'month', 'day', 'hour', 'minute', 'second', 'time-zone-name'];
}
*!*
attributeChangedCallback(name, oldValue, newValue) { // (4)
*/!*
this.render();
}
}
customElements.define("time-formatted", TimeFormatted);
</script>
<time-formatted id="elem" hour="numeric" minute="numeric" second="numeric"></time-formatted>
<script>
*!*
setInterval(() => elem.setAttribute('datetime', new Date()), 1000); // (5)
*/!*
</script>
render()
helper method.observedAttributes()
, attributeChangedCallback
triggers.When HTML parser builds the DOM, elements are processed one after another, parents before children. E.g. if we have <outer><inner></inner></outer>
, then <outer>
element is created and connected to DOM first, and then <inner>
.
That leads to important consequences for custom elements.
For example, if a custom element tries to access innerHTML
in connectedCallback
, it gets nothing:
!
If you run it, the alert
is empty.
That’s exactly because there are no children on that stage, the DOM is unfinished. HTML parser connected the custom element <user-info>
, and is going to proceed to its children, but just didn’t yet.
If we’d like to pass information to custom element, we can use attributes. They are available immediately.
Or, if we really need the children, we can defer access to them with zero-delay setTimeout
.
This works:
```html run height=40!
Now the alert
in line (*)
shows “John”, as we run it asynchronously, after the HTML parsing is complete. We can process children if needed and finish the initialization.
On the other hand, this solution is also not perfect. If nested custom elements also use setTimeout
to initialize themselves, then they queue up: the outer setTimeout
triggers first, and then the inner one.
So the outer element finishes the initialization before the inner one.
Let’s demonstrate that on example:
``html run height=0 <script> customElements.define( "user-info", class extends HTMLElement { connectedCallback() { alert(
${this.id} connected.`); setTimeout(() => alert(`${this.id} initialized.`)); } } );
!
Output order:
We can clearly see that the outer element finishes initialization (3)
before the inner one (4)
.
There’s no built-in callback that triggers after nested elements are ready. If needed, we can implement such thing on our own. For instance, inner elements can dispatch events like initialized
, and outer ones can listen and react on them.
New elements that we create, such as <time-formatted>
, don’t have any associated semantics. They are unknown to search engines, and accessibility devices can’t handle them.
But such things can be important. E.g, a search engine would be interested to know that we actually show a time. And if we’re making a special kind of button, why not reuse the existing <button>
functionality?
We can extend and customize built-in HTML elements by inheriting from their classes.
For example, buttons are instances of HTMLButtonElement
, let’s build upon it.
Extend HTMLButtonElement
with our class:
Provide the third argument to customElements.define
, that specifies the tag:
There may be different tags that share the same DOM-class, that’s why specifying extends
is needed.
At the end, to use our custom element, insert a regular <button>
tag, but add is="hello-button"
to it:
Here’s a full example:
```html run autorun=“no-epub”! /! ! /! ```
Our new button extends the built-in one. So it keeps the same styles and standard features like disabled
attribute.
Custom elements can be of two types:
“Autonomous” – new tags, extending HTMLElement
.
Definition scheme:
class MyElement extends HTMLElement {
constructor() {
super(); /* ... */
}
connectedCallback() {
/* ... */
}
disconnectedCallback() {
/* ... */
}
static get observedAttributes() {
return [
/* ... */
];
}
attributeChangedCallback(name, oldValue, newValue) {
/* ... */
}
adoptedCallback() {
/* ... */
}
}
customElements.define("my-element", MyElement);
/* <my-element> */
“Customized built-in elements” – extensions of existing elements.
Requires one more .define
argument, and is="..."
in HTML:
Custom elements are well-supported among browsers. There’s a polyfill https://github.com/webcomponents/polyfills/tree/master/packages/webcomponentsjs.


NAB Closes the Book on Options Fiasco
Mon 18th Dec 2006 06:00:00
National Australia Bank (NAB) has revealed that the Australian Prudential Regulation Authority (APRA) has closed the remaining remedial actions associated with the foreign exchange options trading losses that were revealed in January 2004


You use the Certificate Installation Wizard to
Install self-signed certificate
Generate the Certificate Signing Request (CSR) that is sent to a commercial certificate authorizer
Install the commercially signed certificate when it has been authorized
To learn more about certificates, see Managing Certificates from the Administration Console.
When Zmail Collaboration Serveris installed, the self-signed certificate is automatically installed and can be used for testing Zmail Collaboration Server. You should generate the CSR and install the commercial certificate when Zmail Collaboration Serveris used in your production environment.
When you are using a commercially signed certificate, the Certificate Install Wizard is run twice:
The first time to generate the CSR and download the file to send to a certificate authority (CA) who issues a signed certificate.
The second time to install the signed certificate that is returned from the CA.
To generate the CSR, you complete a form with details about the domain, company, and country, and then generate a CSR with the RSA private key. You save this file to your computer and submit it to your commercial certificate authorizer.
As you enter information about your company, before you generate the CSR you must know the following details:
Common Name ( CN). This is the exact domain name that should be used to access your Web site securely.
Are you going to use a wildcard common name? If you want to manage multiple sub domains on a single domain on the server with a single certificate, check this box. An asterisk (*) is added to the Common Name field.
Country Name (C) The country you want the certificate to display as your company location.
State/Province ( ST) The state/province you want the certificate to display as your company location.
City ( L) The city you want the certificate to display as your company location.
Organization Name (O). Your company name.
Organization Unit ( OU). The unit name (if applicable).
Are you going to use Subject Alternative Name (SAN)? The input should be a valid domain name. When SAN is used, the domain name is compared with the common name and then to the SAN to find a match. You can create multiple SANs. When the alternate name is entered here, the client ignores the common name and tries to match the server name to one of the SAN names.
Go to Configure > Certificates page and in the gear box select Install Certificate. A Certificate Installation Wizard opens.
Select the target server from the drop-down menu and click Next.
Select Generate the CSR for the commercial certificate authorizer. Click Next.
Enter the server information as described in How to generate a Certificate Signing Request.. Click Next. The CSR including the RSA Private Key is generated.
Click Download the CSR and save the file to your computer. Change the default name to your servername.csr.
After you save the . csr name, on the Certificate Installation Wizard dialog, click Finish.
Now you submit the .csr file to a commercial certificate authorizer. When they send the digitally signed certificate back, use the Certificates Wizard to install the certificate on the Zmail Collaboration Server.
When the commercial certificate is received, save the signed certificate to a folder that you can access from the administration console. Then start the Certificate Installation Wizard.
Go to Configure > Certificates page and in the gear box select Install Certificate. A Certificate Installation Wizard opens.
Select the target server from the drop-down menu and click Next.
Select Install the commercially signed certificate. Click Next.
Verify that the information displayed is the correct information for the CSR. Click Next.
Click Browse to find the commercial certificate. Click Next.
The target server is listed. Click Install.
When the certificate is installed, you must restart the server to apply the certificate. Restart the service from the ZCS server command line. Enter zmcontrol restart.


THE AMERICAN PRESIDENT A film review by Ben Hoffman Copyright 1995 Ben Hoffman
It is not likely that many people imagine an American President's life is easy. Director Rob Reiner has made a most delightful film about what goes on behind the scenes in running the country, and still made it a most entertaining movie. The film not only has humor but it packs a powerful punch at our Right Wing (with the dastardly Senator Rumson played by Richard Dreyfuss.)  Even media harassment is covered. Terrific.
President Andrew Shepherd (Michael Douglas) is a widower with a young teenage daughter. Sydney Ellen Wade (Annette Bening) works for an environmental group where she is in the forefront of trying to get their agenda voted on and passed by Congress. When the President and accidentally meet, at the White House, Sydney meet, he is, to use an old but charming word, smitten. He has got it bad.
After a series of humorous incidents where she does not believe the phone calls to her sister's home where she is staying, are really coming from the White House, they finally get together. When the President invites her to a State dinner, the right wing goes into action to smear him and to find out what they can about her past life. And when you look, you find.
As part of the President's staff are Martin Sheen, Michael J Fox, Anna Deveare Smith, Samantha Mathis, Shawna Waldron and David Paymer. Great cast, great story, great entertainment. Oscar, here we come.
4 bytes 4 Bytes = Superb 3 Bytes = Too good to be missed. 2 Bytes = So so. 1 Byte = Save your money.
-- Ben Hoffman
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


o3.init(callbackFunction)
Use this function to initialize o3 by passing a callback function that you would like to receive a response from O3 App
o3.requestToConnect()
Use this function to request a permission from a user that your dapp would like to connect.
o3.getPlatform()
Use this function to get a user's device platform
o3.getAccounts()
Use this function to get logged in accounts. Response includes address and public key.
o3.isAppAvailable()
Use this function to check if users is still logged in to O3. If browser is closed, response will be false.
o3.getDeviceInfo()
Use this function to get user's device information.
o3.requestToSignRawTransaction(rawTxInHex)
Use this function to request a user to sign a raw transaction. Response is signed transaction with user's private key.
Output


Login Don't have an account? Create one. Username or email Password Remember Me Login Forgotten your password? Login with a social network Login with Facebook Login with Twitter Login with Google Plus


My name is Joi Best. I graduated from Old Dominion University in May 2019 with a B.S in Computer Science and December 2020 with a M.S in Computer Science. I am passionate about coding and creating innovative solutions to solve problems. I enjoy watching movies and tv shows in my spare time. My goal is to combine my passions and hobbies together as I work on my personal Computer Science projects.
I enjoy solving problems with code!
I like to critique and analyze TV shows!
I like to critique and analyze films!
I enjoy all genres of music!
A new blog post will be released at least once a month. Check out my blog by clicking on the link below!
Blog PostsEmail me at<EMAIL_ADDRESS>You can also contact me through my various social media accounts found below in the footer.


Angular 2 is the new improved version of the ever popular JavaScript framework AngularJS. Angular 2 is a re-imagining of Angular applying all lessons learned from v1.x and promotes a component based architecture while leveraging new features of ES2015 (or TypeScript) like classes and modules.
Bootstrap is a free and open-source front-end web framework for designing websites and web applications. It contains HTML- and CSS-based design templates for typography, forms, buttons, navigation and other interface components, as well as optional JavaScript extensions.
The indented syntax is a metalanguage. SCSS is a nested metalanguage, as valid CSS is valid SCSS with the same semantics. Sass supports integration with the Firefox extension Firebug. SassScript provides the following mechanisms: variables, nesting, mixins, and selector inheritance.
JavaScript, often abbreviated as "JS", is a high-level, dynamic, untyped, interpreted run-time language. It has been standardized in the ECMAScript language specification.
HTML5 is a markup language used for structuring and presenting content on the World Wide Web. It is the fifth and current version of the HTML standard.
Important Features:
CSS3 is the latest evolution of the Cascading Style Sheets language and aims at extending CSS2.1. It brings a lot of long-awaited novelties, like rounded corners, shadows, gradients, transitions or animations, as well as new layouts like multi-columns, flexible box or grid layouts.


Looking to work with me? Nice to meet you.
Need help with one of these?
Send me a message and I will get back to you as soon as possible.


MacGyver of the Day: Electronics Hacker Jeri Ellsworth [DIY Week]
One day I hope to be as awesome as her.Ed. note: Senior Editor of MAKE magazine Phil Torrone joins us to celebrate more modern-day MacGyvers as we continue DIY week at Lifehacker. Today’s maker: entrepreneur and self-taught computer chip designer Jeri Ellsworth.
Pictured above, MacGyver of the Day: Jeri Ellsworth - Electronics hacker, chip maker, race car builder, pin ball machine maker, blowing-stuff-up’er…
Hi Lifehackers! MAKE is best known for sharing all the goodness of making things for yourself, learning new skills and many times, voiding warranties… Marcus Chan of the San Francisco Chronicle said we’re the “The kind of magazine that would impress MacGyver” - and that’s what this week is about. It’s a little known fact, but MAKE even has the creator of MacGyver writing at MAKE: Lee D. Zlotoff! Lee is a writer/producer/director among whose numerous credits is creator of MacGyver (you can see his articles here). Let’s dive in and meet today’s MacGyver - Jeri!
Jeri was hacking, modding, and running her own computer store in the late 1990sâ€”and more.. Quick, to the Wikipedia!
Jeri Ellsworth is an American entrepreneur and self-taught computer chip designer. She is best known for, in 2004, creating a Commodore 64 emulator within a joystick, called Commodore 30-in-1 Direct to TV. The “computer in a joystick” could run 30 video games from the early 1980s, and was very popular during the 2004 Christmas season, at peak selling over 70,000 units in a single day via the QVC shopping channel. She is a pinball machine aficionado and owns over 60 full-sized pinball arcade games.
Before we continue…
I live in an actual electronics factory and let me tell you, what Jeri made was really, really incredible. She reverse engineered and designed the entire Commodore 64 audio and video system on a field-programmable gate array (FPGA) and then managed to get it made cheap enough so it could sold on QVC. A FPGA allows you to design circuits after a chip was madeâ€””an integrated circuit designed to be configured by the customer or designer after manufacturing.” She went from prototype to a top-selling product, 70k in one day!
Just to be clear for the super-geeks out there, here’s the photo she *looked at* to reverse engineer the chip; then in her head, she visualized the transistor layout and converted it to a FPGA. Thousands of transistors, weird tricks, dealing with skew timing and delays, process variability, sneaky chip stuff, NTSC video generationâ€” this was an amazing feat. We could probably wrap up this article now, but this volume dial goes to 11. Let’s roll.
The chassis picture to the left is from Jeri’s late
teens and early 20’s when she hand-built a race car chassis
from a piles of tubular steel.
Jeri recently put up photos of her “chip fab”. She writes, “It took me 2 years to achieve my dream of making transistors and simple IC’s at home.”
Jeri recently said in an email: “Of course I love fire and blowing stuff up. Then, there’s my addiction to pinball”. I’ve included some more photos, videos from her show and other odds and ends.  Take a look at the many videos and projects she has online and make something!
The 52-Inch Etch A Sketch
Jeri builds a 52-inch Etch A Sketch from a HD projection TV, tent
poles, golf tee, and gear reduced motors.
Nintendo Purse
Pictured above: Jeri Ellsworth showing her homemade (working) Nintendo purse at a semiconductor show the same day as a roller derby event she skated in.
And here’s the video about the Nintendo on a chip and C64 that Jeri
installed into a purse. It used a LCD from a portable DVD player
and an 8 amp hour battery, which lasts for 9 hours.
DIY Pinball Machine
Homemade pinball machine she is working on…
Fire-Breathing Furby
And last, the fire-breathing Furby she made!
Phil Torrone is Senior Editor of MAKE magazine, contributing editor to Popular Science, and creative director of Adafruit Industries, where they make educational electronics and kits like the TV-B-Gone and some “other” hacky projects that sometimes make the rounds in these parts of the web. You may have seen MAKE in bookstores, public television, online, or been to one of their Maker Faires (there will be 3 this year, they are expecting over 100k attendees!). His personal site is http://www.braincraft.com.


Construct a new Shape object.
This is the basic Shape class. It can be considered an abstract class, even though no such thing really existing in JavaScript
| Type: | Shape | Coordinate |
| Description: | A new shape. |
| MemoryException | if there is no more memory |
| GeneralShapeException | rarely (if ever) |


MISSION TO MARS A film review by Steve Rhodes Copyright 2000 Steve Rhodes RATING (0 TO ****): ***
Brian De Palma, who hasn't made a decent movie in over a decade, surprising shows with MISSION TO MARS that he can still be as good as he once was. And for a director who is known for his proclivity for excessive violence (SNAKE EYES for example), he brings in MISSION TO MARS at just PG. (Actually, given its intensity, a PG-13 might have been more appropriate, but that's a minor quibble.)
In a film that pays homage to many other science fiction films that have gone before it, most notably 2001: A SPACE ODYSSEY, MISSION TO MARS manages to feel fresh, not derivative. An imaginative and magical film, it has a mesmerizing effect on the audience as it builds slowly toward the big secret.
The story and script, which has no less than 4 names attached (Lowell Cannon, Jim Thomas, John Thomas and Graham Yost), concerns two missions to Mars in the year 2020. After tragedy strikes the first mission, another crew is sent to rescue any survivors of the first. Don Cheadle plays the leader of the first crew. Tim Robbins, Gary Sinise, Connie Nielsen, and Jerry O'Connell play members of the crew on the rescue ship.
De Palma's staging choices are truly inspired. In a light-hearted moment, two married members of the crew dance in the weightlessness of outer space. This sequence dazzles with a gossamer beauty.
Another breathtaking scene concerns a space walk gone bad. Using the quietness and solitude of space, De Palma gives us a disaster in real-time that feels like slow-motion.
Only the music by Ennio Morricone (THE LEGEND OF 1900) sometimes goes strangely wrong. Half of the time it is lovely, and the other half it is gratingly inappropriate.
A few of the scenes are delicately funny. What can you do with Dr. Pepper in space? How about using it as a salvation aid?
MISSION TO MARS runs 1:53. It is rated PG for mild science-fiction violence. The film would be appropriate for kids 11 and up, although many younger ones might enjoy it as well.
The film opens nationwide in the United States on Friday, March 10. In the San Jose area it will be playing at the AMC and the Century theaters.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


COVID-19
Home
(current)
COVID-19 Others - Italy REPORT
Novel Coronavirus (COVID-19) cases data provided by JHU CSSE
Italy - 10149
Infections - Others - 696
Italy - 631
Deaths - Others - 6
Italy - 724
Recovery - Others - 40
Back to Others
Compare To China
Compare to Italy
Compare to Spain


{% include "layout/header.html" %} {% include "layout/navbar_home.html" %} Previous Next Insights Analysis result towards bank customer churn dataset. View Prediction Predictive modeling of bank customer churn using Random Forest. Input Form {% include "layout/footnotes.html" %} {% include "layout/footer.html" %}
Analysis result towards bank customer churn dataset.
Predictive modeling of bank customer churn using Random Forest.


Specifying VM Settings Specifying Watchdog Settings Managing Virtual Disks Managing Virtual Network Interfaces Performing RSP Operations
4. Click Save to save your settings permanently.Disable VM consoles globally to reduce memory requirements Change the memory footprint for a VM in a slot Open a virtual machine (VM) console for an RSP package
2. To enable VM console access globally, select the Enable VM Consoles check box. Clear the check box to disable VM Consoles globally.
Low - Specifies low priority relative to other VMs. Normal - Specifies normal priority relative to other VMs. High - Specifies a high priority relative to other VMs. Note: The default priority setting is Normal. In the event of CPU contention, CPU resources are allocated to the VMs according to the priority specified. VMs with the same priority level receive equal access to the CPU. Specify how many megabytes of memory to allocate to the VM. The value must be a multiple of 4.Note: Although you can change the memory footprint for a VM in the slot using this option, Riverbed recommends using the default value provided by the vendor. (Appears only when VM Console access is enabled globally at the top of the page.) Opens the VMware console. You can log in to the VM console and open the VM connection to the package.
5. Click Restart Slot to restart the slot and the VM.You can configure an RSP watchdog using ping monitoring or heartbeat monitoring (or both). If either mechanism fails to respond within the time-out period, the watchdog assumes the slot has failed. For details on RSP watchdog, see the RSP User’s Guide.A guest application inside the VM opens a virtual serial port and transmits a signal at regular intervals out of this port to the Steelhead appliance. This signal is called the slot heartbeat.On the host side the RSP system opens a UNIX pipe, created by the VMware Server, corresponding to the other end of this virtual serial port.If the RSP system does not detect the slot heartbeat in a certain time period, it assumes that the VM has failed and applies the failure policy to the slot. Other than the designated heartbeat characters, the VM ignores all data received over the virtual serial port.A package sending a heartbeat through a virtual serial port must also accept any input sent through the same port by the Steelhead appliance.The watchdog continues to monitor the slot for the heartbeat. If and when it reappears, the watchdog assumes the VM is fully operational and directs the network traffic through the slot.
Specify the number of seconds to wait for a response from the package. You must enter a positive integer.Note: If you enable ping monitoring, specify a larger number of seconds for the watchdog time-out than for the ping interval. The time must be greater than or equal to the ping interval. Specify the number of seconds to wait during the slot startup time before watchdog monitoring begins.Block on failure - Specifies that the watchdog blocks traffic if the VM in the slot fails. Bypass on failure - Specifies that the watchdog bypasses traffic if the VM in the slot fails. Enables ping monitoring that monitors the package by simply pinging a network interface in a virtual machine. The RSP package must have a management VNI before you can configure ping monitoring. For details, see Managing Virtual Network Interfaces. Specify these options:Ping Watchdog IP - Specify an IP address of the management VNI to ping. Ping Watchdog Interval - Specify the number of seconds between pings to determine whether the package is responsive (for example, 60). You must enter a positive integer. Enables a watchdog process that operates as a heartbeat to monitor each package’s health, and if necessary, automatically restart the virtual machines gracefully. For details, see Configuring the Heartbeat Watchdog.Creating or Deleting a Virtual Disk Attaching a Virtual Disk to a VM Extending a Virtual Disk Important: Before creating a virtual disk, choose Configure > Branch Services > RSP Service to display the RSP Service Page. Confirm that there is sufficient RSP Free Space available for the virtual disk.
3. Click Disks.A list of each disk name, whether it is attached to the VM, the adapter, bus, and size information appears.
4. Click Create a Disk and complete the configuration as described in this table.
Specify the virtual disk size in MB. The maximum value of disk size is limited to the RSP free space displayed in the RSP Service page. Specify the adapter type. The adapters connect the disk to the system. Select an adapter from the drop-down menu:IDE adapter LSI Logic SCSI adapter Bus Logic SCSI adapter Select the check boxes next to the names of the virtual disks you want to delete from the VM, and click Delete Selected Disks.When you delete a virtual disk, the system deletes the files in the disk and returns the free space to the RSP system.Important: You can delete a virtual disk if it is detached from the VM. For details, see Detaching a Virtual Disk from a VM.After you create a virtual disk, you can attach it to a VM. Ensure that the VM is powered off before you attach the virtual disk to it because the system does not attach a virtual disk to a running VM.
3. Click Disks.A list of each disk name, whether it is attached to the VM, the adapter, bus, and size information appears.
For SCSI adapters (LSI Logic and Bus Logic), you can select a controller value from 0 to 3. For the IDE adapter, you can select a controller value 0 or 1. Select a value for the device ID from the drop-down menu. For SCSI adapters, the device has a value from 0 to 15. For the IDE adapter, the device is 0 or 1.Ensure that the VM is powered off. Check that your system meets RSP requirements and has enough free space to accommodate the new disk size. For details, see the RSP User’s Guide. Create a backup of your disk.
2. Slots Page - Select the slot name in the Slot column.
3. Click Disks.A list of each disk name, whether it is attached to the VM, the adapter, bus, and size information appears.
You can detach an existing disk from a VM. If the VM is powered on, the disk is detached only after you restart the VM. You can detach any disk from the VM, including the disk in the source RSP package.To remove these files, you must delete the disk. For details, see Creating or Deleting a Virtual Disk.
3. Click Disks.A list of each disk name, whether it is attached to the VM, the adapter, bus, and size information appears.
4. Select the name of an attached disk and click Detach to detach the disk from the VM.After you install and configure RSP, you can add a VNI to your configuration. For an overview of VNIs, see the RSP User’s Guide.This section describes how to update VLAN settings in the optimization VNIs and how to bridge a management VNI to an interface.
5.
6. Click Update VNI.
4. Under Management Virtual Network Interfaces, after the VNI name, click primary or aux as the physical interface.
5. Click Update Slot.Uninstalling a Slot Restoring an RSP Backup Before you uninstall an RSP package from a slot, disable the slot in which the RSP package resides. For details, see To enable, disable, or restart a slot.If the slot is powered on, click Disable. If the slot is powered off, the controls to uninstall the slot appear.
4. Click Uninstall Slot.You use the RSP Slots - Operations page to restore the RSP data in case the Steelhead appliance fails. You create the RSP backup file in the RSP Backups page. For details, see Configuring RSP Backups.You must restore an RSP backup into the same slot in which it was previously installed on the same Steelhead appliance model.
4. Click Install.


Welcome to the game! Repeat back the pattern by pressing buttons. You have 60 seconds once you start!


Teacher Report
Correctness
Correctness characteristics
Student work characteristics
Teacher:
Course:
Activity:
Stage:
Submit
*There is no data for this parameters


Item Sliding - Icons
Icons Only
Icons in Start Slot
More
Archive
Icons in End Slot
More
Archive
Icons in Top Slot
More
Archive
Icons in Bottom Slot
More
Archive


http://www.susangranger.com/
Susan Granger's review of "WOMAN ON TOP" (Fox Searchlight Pictures)
Spanish star Penelope Cruz is as intoxicating as Brazilian bossa-nova rhythms in Fina Torres's wannabe "Like Water for Chocolate" that also uses cooking as a metaphor for passionate romance. As Isabella, she's both cursed and blessed. She's cursed with severe motion sickness that forces her to be "in control" of her movement - driving, dancing and being on top when she makes love. Yet she's blessed with culinary genius, working as chef in a small seaside restaurant owned by her mucho-macho musician husband, Toninho (Murilo Benicio). But when she catches him in bed with another woman, she flees Bahia, seeking solace with her childhood friend, a transvestite (Harold Perrineau, Jr.) in San Francisco, where she's "discovered" by a TV producer (Mark Feuerstein) and becomes the sultry star of a local cooking show. Meanwhile, despondent Toninho is determined to win her back. So much for story. It's charismatic Penelope Cruz that fascinates. Curiously, she's not a traditional beauty; her thin nose is far too long. But she's stunning, radiant and utterly compelling, particularly when she sways to Luis Bacalov's Latino score. On the other hand, Vera Blasi's flimsy plot goes beyond disbelief, needing far too much voice-over narration. And Fina Torres' clumsy attempt at magical realism cannot compare with Alfonso Arau ("Like Water For Chocolate"), even with Thierry Arbogast's caressing cinematography. Aside from Murilo Benicio's realization that, without his wife, his life is barren, there is no character development. Harold Perrineau Jr. serves as comic relief, and Mark Feuerstein's fumbling ineptitude grows cloying quickly. On the Granger Movie Gauge of 1 to 10, "Woman on Top" is a frothy, sensuous 6, as ephemeral and enchanting as the aromas that waft from Isabella's cuisine.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Find a Recipe
Choose a category:
-- select an option --
Breakfast
Starters
Chicken
Beef
Pork
Lamb
Goat
Seafood
Pasta
Vegetarian
Vegan
Sides
Dessert
Miscellaneous


|
Anti-Freeze V 1.0
|
Static Public Member Functions | |
| static AntiFreezeApp | getApplication () |
| static void | main (String[] args) |
Protected Member Functions | |
| void | startup () |
| void | configureWindow (java.awt.Window root) |
Static Protected Member Functions | |
| static void | setStatusJob (AFJob startupStatusJob) |
| static void | killStatusJob () |
The main class of the application.
Definition at line 17 of file AntiFreezeApp.java.
| void com.wms.antifreeze.AntiFreezeApp.configureWindow | ( | java.awt.Window | root | ) | [protected] |
This method is to initialize the specified window by injecting resources. Windows shown in our application come fully initialized from the GUI builder, so this additional configuration is not needed.
| root |
Definition at line 68 of file AntiFreezeApp.java.
| static AntiFreezeApp com.wms.antifreeze.AntiFreezeApp.getApplication | ( | ) | [static] |
A convenient static getter for the application instance.
Definition at line 75 of file AntiFreezeApp.java.
| static void com.wms.antifreeze.AntiFreezeApp.killStatusJob | ( | ) | [static, protected] |
| static void com.wms.antifreeze.AntiFreezeApp.main | ( | String[] | args | ) | [static] |
Main method launching the application.
| args |
Definition at line 83 of file AntiFreezeApp.java.
| static void com.wms.antifreeze.AntiFreezeApp.setStatusJob | ( | AFJob | startupStatusJob | ) | [static, protected] |
Definition at line 48 of file AntiFreezeApp.java.
| void com.wms.antifreeze.AntiFreezeApp.startup | ( | ) | [protected] |


Widget displaying console output and accepting command input.
Implements:
- eval python expressions / exec python statements
- storable history of commands
- exception handling allowing commands to be interpreted in the context of any level in the exception stack frame
Why not just use python in an interactive shell (or ipython) ? There are a few reasons:
- pyside does not yet allow Qt event processing and interactive shell at the same time
- on some systems, typing in the console _blocks_ the qt event loop until the user presses enter. This can
be baffling and frustrating to users since it would appear the program has frozen.
- some terminals (eg windows cmd.exe) have notoriously unfriendly interfaces
- ability to add extra features like exception stack introspection
- ability to have multiple interactive prompts, including for spawned sub-processes
-
catchAllExceptions(catch=True)
If True, the console will catch all unhandled exceptions and display the stack
trace. Each exception caught clears the last.
-
catchNextException(catch=True)
If True, the console will catch the next unhandled exception and display the stack
trace.
-
displayException()
Display the current exception and stack.
-
loadHistory()
Return the list of previously-invoked command strings (or None).
-
saveHistory(history)
Store the list of previously-invoked command strings.


|
ActiveTcl User Guide
|
||
Tk_InternAtom, Tk_GetAtomName - manage cache of X atoms
#include <tk.h>
Atom
Tk_InternAtom(tkwin, name)
CONST char *
Tk_GetAtomName(tkwin, atom)
These procedures are similar to the Xlib procedures XInternAtom and XGetAtomName. Tk_InternAtom returns the atom identifier associated with string given by name; the atom identifier is only valid for the display associated with tkwin. Tk_GetAtomName returns the string associated with atom on tkwin's display. The string returned by Tk_GetAtomName is in Tk's storage: the caller need not free this space when finished with the string, and the caller should not modify the contents of the returned string. If there is no atom atom on tkwin's display, then Tk_GetAtomName returns the string ``?bad atom?''.
Tk caches the information returned by Tk_InternAtom and Tk_GetAtomName so that future calls for the same information can be serviced from the cache without contacting the server. Thus Tk_InternAtom and Tk_GetAtomName are generally much faster than their Xlib counterparts, and they should be used in place of the Xlib procedures.
Copyright © 1990 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.


Summary
What's Cooking is an electronic cooking book. It is a great way to not only store your favourite recipes, but to also discover new ones too. Rather than having to search through a whole range of different cook books, you can simply search through our database of high quailty, user reviewed recipes at your leasure. You can even add your own!
While What's Cooking is aimed at students, anybody can use it. even your Gran!
Development Team
Mike Linford
Designer
Tom Fyles
Developer
Jack Cridge
Project Manager
Nathan Jones
Content Manager