# Now that the FIFA World Cup is underway in Russia, billions of people around the globe will be watching the matches
# and trying to predict the tournament champion. But for those of you who aren’t international soccer fanatics, here’s a question:
# what if you could predict which teams will excel in the competition simply by examining some non-soccer related statistics?

# Let’s take a closer look at some demographic data from the 32 nations who are competing in this year’s World Cup tournament.

# Here’s how we’ll approach the problem: we’ll pick out five demographic statistics to examine for each of this year’s qualifying
# countries. We’ll order these nations in each category and compute the percentile ranking for each one.
# Then we’ll compare these numbers against similar demographic information of past World Cup champions.

# In our analysis, we’ll identify a “sweet spot” in which former World Cup champions (since 1962) have positioned themselves in each
# statistical category. Then we’ll see which of our 32 entrants are the most similar demographically.

#Let's first load in our packages.
install.packages("tidyverse")
install.packages("ggplot2")
install.packages("dplyr")

library(tidyverse)

# Next, I navigated to the World Bank DataBank website [http://databank.worldbank.org] and downloaded data pertaining to:
# 1. Population, total
# 2. Population, male (% of total)
# 3. International tourism, number of arrivals
# 4. Cost of damage due to carbon dioxide emissions (% of GNI)
# 5. Birth rate, crude (per 1,000 people)

#... for the World Cup years from 1962 through 2014 AND 2016 (the most recent year available)

# Here's a preview of what the data looked like after creating a pivot table in Excel:
#####
# I loaded all of the csv files into the R GUI...

MalePop <- read.csv("MalePopClean.csv")
Pov <- read.csv("PovertyClean.csv")
Tour <- read.csv("TourismClean.csv")
BRate <- read.csv("BirthRateClean.csv")
Pollution <- read.csv("PollutionClean.csv")

#Then I created a file of all of the World Cup qualifying teams throughout the tournament's history (79 of them),
#along with the years they qualified and loaded that file as well.

WCupteams <- read.csv("WorldCupQualifiers.csv")

#Then I merged the demographic datasets with the list of the World Cup qualifiers
# while eliminating all of the other nations who never qualified
WCUP <- merge(x=WCupteams, y=Pov, by = c("Country.Name", "year"), all.x = TRUE)
WCUP <- merge(x=WCUP, y=MalePop, by = c("Country.Name", "year"), all.x = TRUE)
WCUP <- merge(x=WCUP, y=Tour, by = c("Country.Name", "year"), all.x = TRUE)
WCUP <- merge(x=WCUP, y=BRate, by = c("Country.Name", "year"), all.x = TRUE)
WCUP <- merge(x=WCUP, y=Pollution, by = c("Country.Name", "year"), all.x = TRUE)

#Next, I had to maually create a column [WCUP$RESULTt] which represented how each team fared in each year's tournament
# I used Q for Qualifier, A for Absent (did not qualify that year)
# C for Champion, R for Runner-up

#Then I eliminated the rows which featured a country in a year when it did not qualify for the World Cup
WCUPP <- subset(WCUP, RESULT != "A")

# ONe more feature to be added: the number of teams which participated in each World Cup tournament.
Prior to 1980, there were 16 qualifying teams; 24 teams from 1982-1994; and 32 teams from 1998-present.

WCALLQ$NoTeams <- ifelse(WCALLQ$year < 1979, 16, (ifelse(WCALLQ$year > 1995, 32,24)))

# Then I subseted each year from the dataset

WCup16 <- subset(WCUPP, year == 1962)
WCup16 <- subset(WCUPP, year == 1966)
WCup16 <- subset(WCUPP, year == 1970)
WCup16 <- subset(WCUPP, year == 1974)....
....WCup16 <- subset(WCUPP, year == 2014)
WCup16 <- subset(WCUPP, year == 2016)

## NOTE: Since the year 2016 is the most current for which demographic data is available,
## I used those stats for the 2018 World Cup tournament.

#Now I have a dataset for each World Cup year which allows me to compare all qualifying teams with each demographic feature.

## Time for the sorting!
# First, I will sort each dataset by one feature and give each team a rank

WCup62$RankP <- rank(order(WCup62$Population))

# Then I'll assign these rankings a percentile rank

WCup62$QRankP <- (WCup62$NoTeams - WCup62$RankP + 1)/ WCA70$NoTeams

# I'll do this for each feature...
WCup62$RankMP <- rank(order(WCup62$MalePct))
WCup62$QRankMP <- (WCup62$NoTeams - WCup62$RankMP + 1)/ WCup62$NoTeams
WCup62$RankT <- rank(order(WCup62$Tourists))
WCup62$QRankT <- (WCup62$NoTeams - WCup62$RankT + 1)/ WCup62$NoTeams
WCup62$RankB <- rank(order(WCup62$BirthRate))
WCup62$QRankB <- (WCup62$NoTeams - WCup62$RankB + 1)/ WCup62$NoTeams
WCup62$RankX <- rank(order(WCup62$PolIndex))
WCup62$QRankX <- (WCup62$NoTeams - WCup62$RankX + 1)/ WCup62$NoTeams

# and do this for each year's dataset...
WCup66$RankMP <- rank(order(WCup66$MalePct))
WCup66$QRankMP <- (WCup66$NoTeams - WCup66$RankMP + 1)/ WCup66$NoTeams
WCup70$RankMP <- rank(order(WCup70$MalePct))
WCup70$QRankMP <- (WCup70$NoTeams - WCup70$RankMP + 1)/ WCup70$NoTeams....
WCup16$RankMP <- rank(order(WCup16$MalePct))
WCup16$QRankMP <- (WCup16$NoTeams - WCup16$RankMP + 1)/ WCup16$NoTeams

# Now, it's time to recombine the yearly dataset into one big dataset...

WCupData <- rbind(WCup62,WCup66,WCup70,WCup74,WCup78,WCup82,WCup86,WCup90,WCup94,WCup98,WCup02,WCup06,WCup10,WCup14,WCup16)

#The next step is to compare this new percentile-ranked-by-feature dataset with
# a subset of this dataset made up of ONLY the World Cup champions

WCupChamps <- subset(WCupData, RESULT == "C")

# One more column: one which concatenated the team name and the year in which they qualified

WCupChamps$teamyear <- paste(WCupChamps$Country.Name, WCupChamps$year)

# To identify the "sweet spot" (i.e. quantile range) of the World Cup champions for each feature, I plotted them on a scatter plot

# For population
ggplot() + geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankP), color = "navyblue") +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankP), size=5, color="navyblue", nudge_x = 1.5) +
xlab("World Cup Champions") + ylab("Percentile Rank: Population") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankP), ymax = max(WCupChamps$QRankP), alpha = .2)

# This gives us the "sweet spot" for this feature: the maximum and minimum percentile rankings for each World Cup champion in their respective years.
# After repeating this for the other four demographic features...

# For male population
ggplot() + geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankMP), color = "navyblue") +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankMP), size=5, color="navyblue", nudge_x = 1.5) +
xlab("World Cup Champions") + ylab("Percentile Rank: % Male Population") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankMP), ymax = max(WCupChamps$QRankMP), alpha = .2)

# For pollution
ggplot() + geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankX), color = "navyblue") +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankX), size=5, color="navyblue", nudge_x = 1.5) +
xlab("World Cup Champions") + ylab("Percentile Rank: Pollution Index") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankX), ymax = max(WCupChamps$QRankX), alpha = .2)

# For tourism
ggplot() + geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankT), color = "navyblue") +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankT), size=5, color="navyblue", nudge_x = 1.5) +
xlab("World Cup Champions") + ylab("Percentile Rank: Tourism") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankT), ymax = max(WCupChamps$QRankT), alpha = .2)

# For birth rate
ggplot() + geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankB), color = "navyblue") +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankB), size=5, color="navyblue", nudge_x = 1.5) +
xlab("World Cup Champions") + ylab("Percentile Rank: Birth Rate") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankB), ymax = max(WCupChamps$QRankB), alpha = .2)

# it was determined that the first two years of the dataset, 1962 and 1966, were outliers.
# So those years were eliminated from the datasets

WCupData <- WCupData[!(WCupData$year==1962 & WCupData$year==1966),]
WCupChamps <- WCupChamps[!(WCupChamps$year==1962 & WCupChamps$year==1966),]

# Now, it's time to see where this year's World Cup qualifiers fared in relation to the "sweet spot" for each feature
# We'll plot the original "sweet spot" against the points of this year's qualifiers on the same scatter plot

# For population
ggplot() + geom_point(data=WCup16, aes(x=Country.Name, y=QRankP), color = "red") +
geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankP), color = "navyblue") +
geom_text(data=WCup16, aes(label = WCup16$Country.Name, x=WCup16$Country.Name, y=WCup16$QRankP), size=5, color="red", nudge_y = -.01) +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankP), size=5, color="navyblue", nudge_x = 1.5) +
xlab("2018 World Cup Qualifying Nations") + ylab("Percentile Rank: Population") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankP), ymax = max(WCupChamps$QRankP), alpha = .2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

# When looking at the plot, we can eliminate the teams which fall outside of the "sweet spot."
# Repeating the process for each feature...

# For male population
ggplot() + geom_point(data=WCup16, aes(x=Country.Name, y=QRankMP), color = "red") +
geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankMP), color = "navyblue") +
geom_text(data=WCup16, aes(label = WCup16$Country.Name, x=WCup16$Country.Name, y=WCup16$QRankMP), size=5, color="red", nudge_y = -.01) +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankMP), size=5, color="navyblue", nudge_x = 1.5) +
xlab("2018 World Cup Qualifying Nations") + ylab("Percentile Rank: % Male Population") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankMP), ymax = max(WCupChamps$QRankMP), alpha = .2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

# For pollution
ggplot() + geom_point(data=WCup16, aes(x=Country.Name, y=QRankX), color = "red") +
geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankX), color = "navyblue") +
geom_text(data=WCup16, aes(label = WCup16$Country.Name, x=WCup16$Country.Name, y=WCup16$QRankX), size=5, color="red", nudge_y = -.01) +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankX), size=5, color="navyblue", nudge_x = 1.5) +
xlab("2018 World Cup Qualifying Nations") + ylab("Percentile Rank: Pollution Index") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankX), ymax = max(WCupChamps$QRankX), alpha = .2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

# For tourism
ggplot() + geom_point(data=WCup16, aes(x=Country.Name, y=QRankT), color = "red") +
geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankT), color = "navyblue") +
geom_text(data=WCup16, aes(label = WCup16$Country.Name, x=WCup16$Country.Name, y=WCup16$QRankT), size=5, color="red", nudge_y = -.01) +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankT), size=5, color="navyblue", nudge_x = 1.5) +
xlab("2018 World Cup Qualifying Nations") + ylab("Percentile Rank: Tourism") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankT), ymax = max(WCupChamps$QRankT), alpha = .2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

# For birth rate
ggplot() + geom_point(data=WCup16, aes(x=Country.Name, y=QRankB), color = "red") +
geom_point(data=WCupChamps, aes(x=Country.Name, y=QRankB), color = "navyblue") +
geom_text(data=WCup16, aes(label = WCup16$Country.Name, x=WCup16$Country.Name, y=WCup16$QRankB), size=5, color="red", nudge_y = -.01) +
geom_text(data=WCupChamps, aes(label = WCupChamps$teamyear, x=WCupChamps$Country.Name, y=WCupChamps$QRankB), size=5, color="navyblue", nudge_x = 1.5) +
xlab("2018 World Cup Qualifying Nations") + ylab("Percentile Rank: Birth Rate") +
annotate("rect", xmin = "Argentina", xmax = "Uruguay", ymin = min(WCupChamps$QRankB), ymax = max(WCupChamps$QRankB), alpha = .2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

# ... the only four team remaining are: Germany, Spain, Poland, and Mexico.


ok


[R/plotting-colours.R:89:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L89) *style:* **Lines should not be more than 100 characters.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-colours.R:89:32:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L89) *style:* **Put spaces around all infix operators.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                              ~^~~
```
[R/plotting-colours.R:89:35:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L89) *style:* **Put spaces around all infix operators.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                                 ~^~~
```
[R/plotting-colours.R:89:41:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L89) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                                        ^
```
[R/plotting-colours.R:106:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L106) *style:* **Lines should not be more than 100 characters.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-colours.R:106:32:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L106) *style:* **Put spaces around all infix operators.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                              ~^~~
```
[R/plotting-colours.R:106:35:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L106) *style:* **Put spaces around all infix operators.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                                 ~^~~
```
[R/plotting-colours.R:106:41:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L106) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                                        ^
```
[R/plotting-colours.R:131:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L131) *style:* **Lines should not be more than 100 characters.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-colours.R:131:32:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L131) *style:* **Put spaces around all infix operators.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                              ~^~~
```
[R/plotting-colours.R:131:35:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L131) *style:* **Put spaces around all infix operators.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                                 ~^~~
```
[R/plotting-colours.R:131:41:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L131) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
      if (all(na.omit(object[])%%1==0)) { # some factor rasters are actually real number -- makes no sense
                                        ^
```
[R/plotting-colours.R:284:75:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L284) *style:* **Put spaces around all infix operators.**
```r
    isFac <- any(raster::is.factor(grobToPlot)) & all(na.omit(grobToPlot[]%%1)==0)
                                                                         ~^~~
```
[R/plotting-colours.R:284:79:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-colours.R#L284) *style:* **Put spaces around all infix operators.**
```r
    isFac <- any(raster::is.factor(grobToPlot)) & all(na.omit(grobToPlot[]%%1)==0)
                                                                             ~^~~
```
[R/plotting-helpers.R:1023:44:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L1023) *style:* **Commas should always have a space after.**
```r
          grobToPlot <- grobToPlot[polySeq,]
                                           ^
```
[R/plotting-helpers.R:1028:38:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L1028) *style:* **Commas should always have a space after.**
```r
        grobToPlot <- grobToPlot[a[1,],]
                                     ^
```
[R/plotting-helpers.R:1028:40:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L1028) *style:* **Commas should always have a space after.**
```r
        grobToPlot <- grobToPlot[a[1,],]
                                       ^
```
[R/plotting-helpers.R:1291:41:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L1291) *style:* **Put spaces around all infix operators.**
```r
            if (all(na.omit(grobToPlot[]%%1)==0)) {
                                       ~^~~
```
[R/plotting-helpers.R:1291:45:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L1291) *style:* **Put spaces around all infix operators.**
```r
            if (all(na.omit(grobToPlot[]%%1)==0)) {
                                           ~^~~
```
[R/plotting-helpers.R:1380:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L1380) *style:* **Lines should not be more than 100 characters.**
```r
    grid.rect(x = 0, height = unit(1 + needsNewTitle * inherits(grobToPlot, "Raster") * 0.20 / (nRows / 2), "npc"),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2511:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2511) *style:* **Lines should not be more than 100 characters.**
```r
#'          jitter(sort(rbeta(nPoints, betaPar, betaPar) * (maxY - minY) + minY, decreasing = TRUE)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2589:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2589) *style:* **Variable or function name should be lowerCamelCase.**
```r
thin.SpatialPolygons <- function(x, tolerance = NULL, returnDataFrame = FALSE, minCoordsToThin = 0,
^~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2610:8:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2610) *style:* **Commented code should be removed.**
```r
      #xyOrd[["out"]] <- xyOrd[["out"]][thinRes, ]# thin line
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2633:50:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2633) *style:* **Commas should always have a space after.**
```r
            dat <- x@data[as.numeric(names1) + 1,]
                                                 ^
```
[R/plotting-helpers.R:2634:14:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2634) *style:* **Commented code should be removed.**
```r
            #row.names(dat) <- as.character(seq_len(length(xyOrd)))
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2666:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2666) *style:* **Variable or function name should be lowerCamelCase.**
```r
thin.default <- function(x, tolerance, returnDataFrame, minCoordsToThin, ...) {
^~~~~~~~~~~~
```
[R/plotting-helpers.R:2701:3:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2701) *style:* **Variable or function name should be lowerCamelCase.**
```r
  IDs <- tryCatch(unlist(lapply(ordSeq, function(xx) {
  ^~~
```
[R/plotting-helpers.R:2726:7:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2726) *style:* **Commented code should be removed.**
```r
    # Polygons <- rep(rep(seq(numPolygons), numPolygon), idLength$V1) # sequential numbering
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2727:5:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2727) *style:* **Variable or function name should be lowerCamelCase.**
```r
    Polygons <- rep(rep(IDs, numPolygon), idLength$V1) # actual ID labelling
    ^~~~~~~~
```
[R/plotting-helpers.R:2728:5:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2728) *style:* **Variable or function name should be lowerCamelCase.**
```r
    Polygon <- rep(unlist(lapply(numPolygon, seq)), idLength$V1)
    ^~~~~~~
```
[R/plotting-helpers.R:2735:36:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2735) *style:* **Commas should always have a space after.**
```r
    return(data.frame(lat = xyOrd[,1], long = xyOrd[,2], order = orders,
                                   ^
```
[R/plotting-helpers.R:2735:54:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2735) *style:* **Commas should always have a space after.**
```r
    return(data.frame(lat = xyOrd[,1], long = xyOrd[,2], order = orders,
                                                     ^
```
[R/plotting-helpers.R:2737:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2737) *style:* **Lines should not be more than 100 characters.**
```r
                      #group = paste0(as.character(Polygons), ".", as.character(Polygon)))) # the actual fortify
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2740:40:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2740) *style:* **Commas should always have a space after.**
```r
    out <- setDT(data.frame(x = xyOrd[,1], y = xyOrd[,2], groups = groups))
                                       ^
```
[R/plotting-helpers.R:2740:55:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2740) *style:* **Commas should always have a space after.**
```r
    out <- setDT(data.frame(x = xyOrd[,1], y = xyOrd[,2], groups = groups))
                                                      ^
```
[R/plotting-helpers.R:2755:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2755) *style:* **Lines should not be more than 100 characters.**
```r
    which(polygon@data$Shape_Area>(sort(polygon@data$Shape_Area, decreasing = TRUE)[maxNumPolygons]))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting-helpers.R:2755:34:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2755) *style:* **Put spaces around all infix operators.**
```r
    which(polygon@data$Shape_Area>(sort(polygon@data$Shape_Area, decreasing = TRUE)[maxNumPolygons]))
                                ~^~
```
[R/plotting-helpers.R:2755:35:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2755) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    which(polygon@data$Shape_Area>(sort(polygon@data$Shape_Area, decreasing = TRUE)[maxNumPolygons]))
                                  ^
```
[R/plotting-helpers.R:2778:26:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-helpers.R#L2778) *style:* **Commas should always have a space after.**
```r
          totalAvailable," polygons in this view. See options('reproducuble.maxNumPolygons')")
                         ^
```
[R/plotting-other.R:202:48:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-other.R#L202) *style:* **Put spaces around all infix operators.**
```r
  if (any(raster::is.factor(ras1)) & all(ras1[]%%1==0)) {
                                              ~^~~
```
[R/plotting-other.R:202:51:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-other.R#L202) *style:* **Put spaces around all infix operators.**
```r
  if (any(raster::is.factor(ras1)) & all(ras1[]%%1==0)) {
                                                 ~^~~
```
[R/plotting-other.R:251:30:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-other.R#L251) *style:* **Commas should always have a space after.**
```r
    if (sum(corners$coords[1,] - corners$coords[2,]) %==% 0) {
                             ^
```
[R/plotting-other.R:251:51:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-other.R#L251) *style:* **Commas should always have a space after.**
```r
    if (sum(corners$coords[1,] - corners$coords[2,]) %==% 0) {
                                                  ^
```
[R/plotting-other.R:335:27:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-other.R#L335) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    if (length(row) == 0) { # above the plot
                          ^
```
[R/plotting-other.R:338:30:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting-other.R#L338) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    if (length(column) == 0) { # above the plot
                             ^
```
[R/plotting.R:308:6:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting.R#L308) *style:* **Commented code should be removed.**
```r
    #whFrame <- grep(scalls, pattern = "^Plot|^quickPlot::Plot")
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/plotting.R:318:8:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/R/plotting.R#L318) *style:* **Commented code should be removed.**
```r
      #dotObjs <- mget(dotNames[!noName], envir = plotFrame, inherits = TRUE)
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test-clickExtent.R:10:3:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-clickExtent.R#L10) *style:* **Variable or function name should be lowerCamelCase.**
```r
  Sr1 <- Polygon(coords1)
  ^~~
```
[tests/testthat/test-clickExtent.R:11:3:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-clickExtent.R#L11) *style:* **Variable or function name should be lowerCamelCase.**
```r
  Srs1 <- Polygons(list(Sr1), "s1")
  ^~~~
```
[tests/testthat/test-clickExtent.R:13:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-clickExtent.R#L13) *style:* **Lines should not be more than 100 characters.**
```r
  crs(shpEcozone) <- "+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test-clickExtent.R:21:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-clickExtent.R#L21) *style:* **Lines should not be more than 100 characters.**
```r
                       url = "http://www.ec.gc.ca/data_donnees/STB-DGST/003/Boreal-ecosystem-anthropogenic-disturbance-vector-data-2008-2010.zip")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test-clickExtent.R:23:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-clickExtent.R#L23) *style:* **Lines should not be more than 100 characters.**
```r
  bb <- raster::shapefile(file.path(dirname(tempdir()), "EC_borealdisturbance_polygonal_2008_2010_FINAL_ALBERS.shp"))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test-examples.R:11:15:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-examples.R#L11) *style:* **Closing curly-braces should always be on their own line, unless it's followed by an else.**
```r
    setwd(owd)}
              ^
```
[tests/testthat/test-Plot-do-call.R:8:3:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-do-call.R#L8) *style:* **Variable or function name should be lowerCamelCase.**
```r
  Sr1 <- Polygon(coords1)
  ^~~
```
[tests/testthat/test-Plot-do-call.R:9:3:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-do-call.R#L9) *style:* **Variable or function name should be lowerCamelCase.**
```r
  Srs1 <- Polygons(list(Sr1), "s1")
  ^~~~
```
[tests/testthat/test-Plot-do-call.R:11:1:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-do-call.R#L11) *style:* **Lines should not be more than 100 characters.**
```r
  crs(shpEcozone) <- "+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test-Plot-do-call.R:17:24:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-do-call.R#L17) *style:* **Commas should always have a space after.**
```r
  r <- raster(extent(0,10,0,10), res = 1, vals = 1:100)
                       ^
```
[tests/testthat/test-Plot-do-call.R:17:27:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-do-call.R#L17) *style:* **Commas should always have a space after.**
```r
  r <- raster(extent(0,10,0,10), res = 1, vals = 1:100)
                          ^
```
[tests/testthat/test-Plot-do-call.R:17:29:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-do-call.R#L17) *style:* **Commas should always have a space after.**
```r
  r <- raster(extent(0,10,0,10), res = 1, vals = 1:100)
                            ^
```
[tests/testthat/test-Plot-nonVisual.R:65:21:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-nonVisual.R#L65) *style:* **Commented code should be removed.**
```r
  library(raster); #on.exit(detach("package:raster"), add = TRUE)
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test-Plot-nonVisual.R:70:3:](https://github.com/PredictiveEcology/quickPlot/blob/dc5bb799e6b228e7ee07efd38d7bdf8e0d558451/tests/testthat/test-Plot-nonVisual.R#L70) *style:* **Variable or function name should be lowerCamelCase.**
```r
  N <- ncol * nrow
  ^
```


IBM Cloud [toolchain](https://console.ng.bluemix.net/devops/toolchains/1aa42b64-6415-44fc-bb69-a9ff39c481d4?env_id=ibm%3Ayp%3Aus-south "cloud-native-toolchain-tutorial-20180620133827138"): [Delivery Pipeline](https://console.ng.bluemix.net/devops/pipelines/5ebf27c5-7610-4a53-9ca6-49fe986eed44?env_id=ibm%3Ayp%3Aus-south "sample-cloud-native-toolchain-tutorial-20180620133827138") deployed [sample-cloud-native-toolchain-tutorial-20180620133827138](https://github.com/MezaG/sample-cloud-native-toolchain-tutorial-20180620133827138/releases/tag/deploy-ibm-yp-us-south-fernando.meza-ibm.com-prod-20180620-181112 "deploy-ibm-yp-us-south-fernando.meza-ibm.com-prod-20180620-181112") to [prod](https://console.bluemix.net/apps/ba32839d-ec50-41c4-9ff7-75674d879686?env_id=ibm:yp:us-south "ibm:yp:us-south:fernando.meza@ibm.com:prod"), including this commit


Allow-Multiple-AirLoops-in-Airflow-Netwrok-Model (lgu1234) - x86_64-Linux-Ubuntu-14.04-gcc-4.8-IntegrationCoverage-Debug: OK (2309 of 2311 tests passed, 0 test warnings)

Failures:

EnergyPlusFixture Test Summary
 * Passed: 642
 * OTHER_FAULT: 1

integration Test Summary
 * Passed: 628
 * Failed: 1

![Build Badge](http://img.shields.io/badge/build%20status-warnings-yellow.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-99.91%25-yellow.png) ![Coverage Badge](http://img.shields.io/badge/coverage%20status-71.17%25-green.png)


That's a good point! Thanks @JacquesCarette

Done in commit 893f071.


Allow-Multiple-AirLoops-in-Airflow-Netwrok-Model (lgu1234) - x86_64-Linux-Ubuntu-14.04-custom_check: OK (0 of 0 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png)


You can still use the localise function. The following works:
```
is_locally_planar = localise(Graph.is_planar)
```


This benchmark and the following benchmark is subject to a compiler optimization (which one?), which would render this and the following benchmark meaningless. I would inject some "randomness" to the output variable by, say, "requiring" `__filename` and `./../lib`.


@hvelarde feito


Wrong commit message... Should read "fix #273507: Crash on score containing drum track with no drumset"


это я забыл удалить.. Для проверки работы делал


You updated to 2.2.4 but didn't update the version string in the cck2.cfg file:
https://github.com/netrunner-rolling/netrunner-settings-firefox/commit/6a311c2e57e4a0a808ca9f4cf9679b6a338f3349


Created multidev environment [therapyrealm-d8#ci-11](https://dashboard.pantheon.io/sites/1e2f72fb-b1d6-4944-b76a-de18b38c3d0c#ci-11).

[![Visit Site](https://raw.githubusercontent.com/pantheon-systems/ci-drops-8/0.1.0/data/img/visit-site-36.png)](https://ci-11-therapyrealm-d8.pantheonsite.io/)


Created multidev environment [rail-uga-stellar#pr-16](https://dashboard.pantheon.io/sites/05f5afa3-c1ec-448f-915a-9234103f2409#pr-16).

[![Visit Site](https://raw.githubusercontent.com/pantheon-systems/ci-drops-8/0.1.0/data/img/visit-site-36.png)](https://pr-16-rail-uga-stellar.pantheonsite.io/)


Can we please backport this fix to 8.5.x?

We currently cannot run drush site install when settings.php already exists, and we have a preconfigured settings.php that we cannot get away from.


Thanks to this I learnt about pipes! \*thumbs up\*

but this in mind it means we should either use:
```
router.events.pipe(
  filter(...),
  map(...))
.subscribe(...)
```

or stick to the "common" approach:
```
router.events
  .filter(...),
  .map(...)
  .subscribe(...)
```


Obviously, then, the check can be whether `out` is a function.


Created multidev environment [wvuonline#ci-177](https://dashboard.pantheon.io/sites/8fb52aa5-5525-4d73-9b84-f2d86faf1da2#ci-177).

[![Visit Site](https://raw.githubusercontent.com/pantheon-systems/ci-drops-8/0.1.0/data/img/visit-site-36.png)](https://ci-177-wvuonline.pantheonsite.io/)


# Specs execution successful
:scroll: [View logs](http://bamboo.comnull)
### Plans updated

Bamboo specs have been successfully imported and the following plans have been updated.

Project | Plan | Build
---|---|---
[Test](http://bamboo.com/browse/TEST) | [Comment test](http://bamboo.com/browse/TEST-CTEST)  | :white_check_mark: [\#1](http://bamboo.com/browse/TEST-CTEST-1)
[New project](http://bamboo.com/browse/NEW) | [Disabled plan](http://bamboo.com/browse/NEW-DISABLED) **disabled** | :white_check_mark: [\#1](http://bamboo.com/browse/NEW-DISABLED-1)

### Deployments updated

Bamboo specs have been successfully imported and the following deployment projects have been updated.

|Deployment project |
----|
[Deployment test](http://bamboo.com/deploy/viewDeploymentProjectVersions.action?id=2162689)|


Why is this done here? Should happen before calling `tic`.


Good to know that localStorage exists 👍
since we are storing/memorizing last selected language, key should be more appropriate


woo! github is confusing!


Whoops. This kind of defeated the whole purpose of the immutable demo. 🤦♂


This world must be told Hello. So here it is, Hello.


мне кажется, что метод set_in_use лучше вызвать внутри метода wagon_add. Что-б он у нас добавлялся наверняка только в случае успешного добавления вагона


This file is a project directory, whenever you add new component, it will register in this file automatically by the VS IDE.


Этот метод тоже на мой взгляд лучше двинуть в wagon_remove


Why that commit and not these others?

jagrav-omni/device_oneplus_oneplus3@b46f54d6f6fc2161db49c49e50ace9d7be29cd45

gtpitch/device_essential_mata@b73681009ca2e8ac7ad0d0a428603ee9a62dd4d4

I don't know if @TheScarastic kept up or not the authorship but I'm curious about why do you picked that commit.


I think that the docs should be updated to include the third argument. The `parent` was added when I thought there was a good chance that partial route paths would be added. I'm not so sure of that anymore :man_shrugging:.

For your code, I would just create a default match to pass to `matchPath` to replicate the default match a `<Router>` creates (although maybe a wildcard path would be better).


Why is this on a new line? I don't think it will hurt the 80-char limit putting it on same line.


What was the rationale for creating separate benchmark files? Was one benchmark affecting the performance of other benchmarks? This is typically (beside the distinguish between "regular" and "length" benchmarks) the only reason why we have split benchmarks into separate files, elsewhere. And maybe, occasionally, when we have many benchmarks (similar to many tests) and we want to split into smaller files. But I am not seeing the overarching motivation here.


remove newlines on 2589 and 2594


Hi there,
I need some help please. I tried to bind the contact but no success. I loaded the add on an used the demo.XX to configure it.

ERROR] [el.item.internal.GenericItemProvider] - Binding configuration of type 'channel' of item 'HanFunContact' could not be parsed correctly.


show graph is not working
File "/home/mohamed/Social Network/Social-Network/Code/Users.py", line 349, in show_graph
    j= k[0]


Similar question. Why separate "factory" benchmarks into a separate file? I am not seeing the need.


### I'm getting very detailed with you because your code looks great!  *Fantastic job!*

**style.css**
* Your images overlapped in my screen; layout fix needed (think about size and margins)!  Remember to accommodate users who may be on different hardware than you
* Line 11: this has `display: inline`, so `height` will not do anything
* Line 22: Why are you setting a height on `<main>`?  HTML and CSS generally handle vertical flow very well (there are of course exceptions) and I bet there is another way to get what you want.  Setting `height` on elements can overcomplicate things and come back to bite you. :)
* Line 38 (Line 11 in index.html): this id name is not great.  The element is an `<ul>` inside the `<header>`, so calling it `ulHeader` doesn't give us any new information about it.  Class and id names are an opportunity to give yourself, other devs, and really anyone who will see your code, more information about your code.  Consider why you need an id here - it is to make this `<ul>` do something?  Is there context that you want to give a clue to using this id name?  Do you need an id here at all, or can you use a selector like `header ul` in your CSS?  Perhaps you should use a `<nav>` tag instead of `header` (or maybe use both)?

**index.html**
* orphan `</div>` tag on line 34
* I like the instructions to the tester!  Nice
* extra indent inside `<header>`
* Good use of `<h1>` and `<h2>`
* Line 25: similar thoughts about the id `sect-el` as I had for `ulHeader`.  Think about what this id allows you to do, or what this `<section>` is for: it's where the photos get displayed.  Consider an id like "products-display" or "vote-section" - either of these will be more informative from within app.js than `sect-el`

**app.js**
* If all you are using `name` for is to set your `alt` values, consider making them more descriptive.  If you will use the `name` values as they are for something else, consider making a new property on your constructor for your `alt` tags that will allow you to be more descriptive.  Alt tags are read by screen readers to help visually impaired users understand what images are showing, so an alt tag like "usb" is not particularly useful.  (This would be a stretch goal and I made it up, so feel free to simply remember this idea for the future!)
* Along the same lines as the comments on `sect-el` - consider changing `sectEl` to something more informative.  Same thought for line 7 and `ulEl`

**user_stories.md**
* missing opening asterisk on line 2 for italics
* line 8: do you mean to say "H2"?


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

You do not have sufficient scopes. You are missing the following scopes:

{
  "AnyOf": \[
    {
      "AnyOf": \[
        "queue:create\-task:highest:aws\-provisioner\-v1/servo\-docker\-worker",
        "queue:create\-task:very\-high:aws\-provisioner\-v1/servo\-docker\-worker",
        "queue:create\-task:high:aws\-provisioner\-v1/servo\-docker\-worker",
        "queue:create\-task:medium:aws\-provisioner\-v1/servo\-docker\-worker",
        "queue:create\-task:low:aws\-provisioner\-v1/servo\-docker\-worker",
        "queue:create\-task:very\-low:aws\-provisioner\-v1/servo\-docker\-worker",
        "queue:create\-task:lowest:aws\-provisioner\-v1/servo\-docker\-worker"
      \]
    },
    {
      "AnyOf": \[
        "queue:create\-task:aws\-provisioner\-v1/servo\-docker\-worker",
        {
          "AllOf": \[
            "queue:define\-task:aws\-provisioner\-v1/servo\-docker\-worker",
            "queue:task\-group\-id:taskcluster\-github/Ksr0zWsYS9yCjSznSgEknw",
            "queue:schedule\-task:taskcluster\-github/Ksr0zWsYS9yCjSznSgEknw/Ksr0zWsYS9yCjSznSgEknw"
          \]
        }
      \]
    }
  \]
}

You have the scopes:

```
\[
  "assume:project:taskcluster:mozilla\-github\-repository",
  "assume:repo:github.com/servo/servo:pull\-request",
  "notify:email:\*",
  "notify:irc\-channel:\*",
  "notify:irc\-user:\*",
  "queue:create\-task:aws\-provisioner\-v1/github\-worker",
  "queue:create\-task:aws\-provisioner\-v1/github\-worker\-windows",
  "queue:create\-task:aws\-provisioner\-v1/servo",
  "queue:create\-task:aws\-provisioner\-v1/win2012r2",
  "queue:route:garbage.\*",
  "queue:route:index.garbage.\*",
  "queue:route:notify.email.\*",
  "queue:route:notify.irc\-channel.\*",
  "queue:route:notify.irc\-user.\*",
  "queue:scheduler\-id:taskcluster\-github",
  "secrets:get:garbage/\*",
  "secrets:set:garbage/\*"
\]
```

This request requires you to satisfy this scope expression:

```
{
  "AllOf": \[
    {
      "AnyOf": \[
        {
          "AllOf": \[
            "queue:scheduler\-id:taskcluster\-github",
            {
              "AnyOf": \[
                "queue:create\-task:highest:aws\-provisioner\-v1/servo\-docker\-worker",
                "queue:create\-task:very\-high:aws\-provisioner\-v1/servo\-docker\-worker",
                "queue:create\-task:high:aws\-provisioner\-v1/servo\-docker\-worker",
                "queue:create\-task:medium:aws\-provisioner\-v1/servo\-docker\-worker",
                "queue:create\-task:low:aws\-provisioner\-v1/servo\-docker\-worker",
                "queue:create\-task:very\-low:aws\-provisioner\-v1/servo\-docker\-worker",
                "queue:create\-task:lowest:aws\-provisioner\-v1/servo\-docker\-worker"
              \]
            }
          \]
        },
        {
          "AnyOf": \[
            "queue:create\-task:aws\-provisioner\-v1/servo\-docker\-worker",
            {
              "AllOf": \[
                "queue:define\-task:aws\-provisioner\-v1/servo\-docker\-worker",
                "queue:task\-group\-id:taskcluster\-github/Ksr0zWsYS9yCjSznSgEknw",
                "queue:schedule\-task:taskcluster\-github/Ksr0zWsYS9yCjSznSgEknw/Ksr0zWsYS9yCjSznSgEknw"
              \]
            }
          \]
        }
      \]
    }
  \]
}
```
----
method:     createTask
errorCode:  InsufficientScopes
statusCode: 403
time:       2018-06-20T18:31:11.785Z

</details>


if you add `true` as second parameter you don't need the `$iteration` variable 😉


# Specs execution successful
:scroll: [View logs](http://bamboo.comnull)
### Plans updated

Bamboo specs have been successfully imported and the following plans have been updated.

Project | Plan | Build
---|---|---
[Test](http://bamboo.com/browse/TEST) | [Comment test](http://bamboo.com/browse/TEST-CTEST)  | :white_check_mark: [\#1](http://bamboo.com/browse/TEST-CTEST-1)
[New project](http://bamboo.com/browse/NEW) | [Disabled plan](http://bamboo.com/browse/NEW-DISABLED) **disabled** | :white_check_mark: [\#1](http://bamboo.com/browse/NEW-DISABLED-1)

### Deployments updated

Bamboo specs have been successfully imported and the following deployment projects have been updated.

|Deployment project |
----|
[Deployment test](http://bamboo.com/deploy/viewDeploymentProjectVersions.action?id=2162689)|


Not clear to me that this additional check is necessary here.


перенеси в главный контролер инклуды которые будут во всех контроллерах


Everything in FileMapping.hs from integration tests onwards fails, but the stuff before that does succeed.

`getCanonicalFileNameSafe` tries to canonicalise the longest prefix in the path that does exist. But according to the documentation, even `canonicalizePath` does that, and `canonicalizePath` only fails when `getCurrentDirectory` fails, in which case `getCanonicalFileNameSafe` will also fail.


What compiler optimization are you seeking to avoid?


dev branch shows webui branch. is this on purpose?

```
[![branch](https://img.shields.io/badge/branch-webui-orange.svg)](https://github.org/xoseperez/espurna/tree/webui/)
[![travis](https://travis-ci.org/xoseperez/espurna.svg?branch=webui)](https://travis-ci.org/xoseperez/espurna)
[![codacy](https://img.shields.io/codacy/grade/c9496e25cf07434cba786b462cb15f49/webui.svg)](https://www.codacy.com/app/xoseperez/espurna/dashboard)
```


Como es que funciona esto?


авторизация?
используй Pundit


Cache a reference to the nested object you want to update. Repeatedly walking the object path as done here is unnecessary work. It is possible that a compiler might optimize this away, but I see no reason to depend on that.


@jBarz did you use the GitHub merge button? If so, we try to avoid it, and push commits from the command line. This commit is also missing the PR metadata:

PR-URL: https://github.com/libuv/libuv/pull/1876
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>


Same comment as above regarding caching a reference.


Not convinced that this benchmark needs to be in a separate file.


Related to this https://github.com/pytest-dev/pytest/issues/3280

Also  the linked issue https://github.com/pytest-dev/pytest/pull/3327

I will create pr for this


See 1b1426e


Why do you need to randomly pick an array element to update? Why can you not just update, say, the first or last array element? You are including two bits of "randomness" here, when you really only need one.


I think **PKG_CONFIG_ALLOW_SYSTEM_CFLAGS** is required.


ahh, sorry about that. I thought the metadata got automatically included :-(
What should I do next. Should I revert and recommit with the metadata?


On both my FreeBSD and GhostBSD boxes I noticed that recently updating packages pulled in tesseract without me having played with mayan or anything there (graphics/opencv seems to unconditionally depend on it now). On mayan-ng: I'll cover that one in my next mail to you (as well as SunOS stuff, etc). Just didn't want to spam you right after my previous mail since you mentioned that you'd not be home for two weeks.


Why is this necessary? Why can you not just do this at `L45`? Line length concerns?


Remove @MockBean entirely.


Also, why use `round`? Why is this relevant?


# Specs execution successful
:scroll: [View logs](http://bamboo.comnull)
### Plans updated

Bamboo specs have been successfully imported and the following plans have been updated.

Project | Plan | Build
---|---|---
[Test](http://bamboo.com/browse/TEST) | [Comment test](http://bamboo.com/browse/TEST-CTEST)  | :white_check_mark: [\#1](http://bamboo.com/browse/TEST-CTEST-1)
[New project](http://bamboo.com/browse/NEW) | [Disabled plan](http://bamboo.com/browse/NEW-DISABLED) **disabled** | :white_check_mark: [\#1](http://bamboo.com/browse/NEW-DISABLED-1)

### Deployments updated

Bamboo specs have been successfully imported and the following deployment projects have been updated.

|Deployment project |
----|
[Deployment test](http://bamboo.com/deploy/viewDeploymentProjectVersions.action?id=2162689)|


Thanks a lot! :+1:


Possible security vulnerability: Possible command injection


Style/Documentation: Missing top-level class documentation comment.


Style/FrozenStringLiteralComment: Missing magic comment `# frozen_string_literal: true`.


Style/SymbolArray: Use `%i` or `%I` for an array of symbols.


Style/EmptyMethod: Put empty method definitions on a single line.


Metrics/LineLength: Line is too long. [89/80]


Metrics/LineLength: Line is too long. [83/80]


Metrics/LineLength: Line is too long. [93/80]


well, this is akward, edited creds


Lint/Void: Literal `"Not"` used in void context.


Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.


Lint/Void: Literal `'cool'` used in void context.


Layout/EmptyLinesAroundAccessModifier: Keep a blank line before and after `private`.


Layout/IndentationWidth: Use 2 (not 4) spaces for indentation.


Layout/IndentationConsistency: Inconsistent indentation detected.


Metrics/LineLength: Line is too long. [88/80]


Style/Documentation: Missing top-level module documentation comment.


Metrics/LineLength: Line is too long. [81/80]


Metrics/LineLength: Line is too long. [86/80]


Style/NumericLiterals: Use underscores(_) as decimal mark and separate every 3 digits with them.


Layout/EmptyLinesAroundBlockBody: Extra empty line detected at block body beginning.


# Specs execution successful
:scroll: [View logs](http://bamboo.comnull)
### Plans updated

Bamboo specs have been successfully imported and the following plans have been updated.

Project | Plan | Build
---|---|---
[Test](http://bamboo.com/browse/TEST) | [Comment test](http://bamboo.com/browse/TEST-CTEST)  | :white_check_mark: [\#1](http://bamboo.com/browse/TEST-CTEST-1)
[New project](http://bamboo.com/browse/NEW) | [Disabled plan](http://bamboo.com/browse/NEW-DISABLED) **disabled** | :white_check_mark: [\#1](http://bamboo.com/browse/NEW-DISABLED-1)

### Deployments updated

Bamboo specs have been successfully imported and the following deployment projects have been updated.

|Deployment project |
----|
[Deployment test](http://bamboo.com/deploy/viewDeploymentProjectVersions.action?id=2162689)|


k


добавь скоуп в Bid модель, для вот этого where(lot_id: id).order(proposed_price: :desc).first


Created multidev environment [composer-digital-initiatives#pr-41](https://dashboard.pantheon.io/sites/3d35643a-2d94-44d8-ac78-4f1526e12dcf#pr-41).

[![Visit Site](https://raw.githubusercontent.com/pantheon-systems/ci-drops-8/0.1.0/data/img/visit-site-36.png)](https://pr-41-composer-digital-initiatives.pantheonsite.io/)


"Beta-Aktualisierungen" would be more accurate.

There is a typo: "Fehler beeinhalten" should be "Fehler beinhalten".


In general, doing this kind of thing (i.e., initializing to a particular value type such as `null` and then setting to a different value type such as `number`) is "confusing" to a compiler. Prefer **always** to use consistent type information. If you had done this with a plain `array` (e.g., `arr = [null,null,null,null]` and `arr[0] = randu()`), a compiler would not be able to make the initial optimization of using a `Float64` backed buffer (i.e., "unboxed") and instead would have probably done the "boxed" route, using indirect pointer access. These things matter.


intro


А вот тут добавление вагона очень зря убрал. Проверка по классу очень хорошая идея. Только вывод не нужен


does `sched_clock_tick()` need to be called with rq lock held?  I don't think so. If you agree, move it out of the rq-lock.


I noticed that this undoes this commit: https://github.com/vimeo/psalm/commit/89f78befa7c29b576b7d9a0ff29354d8ab045919


И в PassengerTrain тоже верни, если убрал


может ли быть lot_start_time или lot_end_time пустым, и как провалидируется потом?


тот же вопрос


этот роут нам нужен?


Right. Feel free to open a MR to merge it when you’re ready. :)


Don't use short form like DL_ABSOLUTE, use full symbol name.


PHP docs show that this param is optional: https://secure.php.net/mysqli_get_client_info

Example from docs shows that as well:

```
/* We don't need a connection to determine
   the version of mysql client library */

printf("Client library version: %s\n", mysqli_get_client_info());
```


Overall patch looks Ok. Look at comments above. Add my Tested-by and Reviewed-by in advance but don't send it till its ready :)


FactoryBot. --- лишнее


Hey man -- just curious why is this necessary?  Plugins are running in the same address space as the rest of the app correct?

We already have this in root-levetl 'electron-cash'

```
if is_local or is_android:
    import imp
    imp.load_module('electroncash', *imp.find_module('lib'))
    imp.load_module('electroncash_gui', *imp.find_module('gui'))
    imp.load_module('electroncash_plugins', *imp.find_module('plugins'))
```

Am I missing something?


Neat!


Typically, if you catch a mistake like that pretty quickly, you can just amend the commit and force push over it. I think in this case, you should be fine to force push it, if you can do it right now. If too much time passes, or other commits land first, it's helpful to just include the info on the commit like I did here for future reference.


los 5 mas recientes


This does return `false` according to the docs: https://secure.php.net/manual/en/pdostatement.fetchcolumn.php


Tesseract would probably be removed with "pkg autoremove".  It's probably left over from early mayan testing.  I don't see any dependencies on tesseract except for the python ocr port which only mayan needs.


travis don't support ~~osx~~ windows


start =(void *)((uintptr_t)start + (uintptr_t)prefix)


можно добавить в хелперы что бы не писать постоянно parse_json_string(response.body)
что то типа
def json_response
     JSON.parse(response.body)
end


What problem is this addressing? Is `ganglia.report_moab_nodes.size(800,250).png` returning a string with extra quotes?


So we need to shadow libkern definitions, call our wrappers and call real functions from wrappers.


I wonder where is the new database located on? We didn’t have the step to set the server connection in this video. How does the Entity Framework set up the database?


@jamesbiller to mark me as a reviewer you have to submit the post as pull request. Please go over with @hackrush01 or myself in the office.


как вариант https://github.com/stympy/faker/blob/master/doc/lorem.md


CoreML -> Core ML


заюзай фабрику


__API Description file syntax error on line 1007__: Expected type object but found type array (Autogenerated message from apiary.io)


Попробовал поправить следующим коммитом


I have a question to the statement about _REML_ in the news file:

> but can also be useful for some non-Gaussian response variabes if used with caution

Is this a general statement (i.e. applies to generalized linear mixed models), or is it related to the _glmmTMB_-package, e.g. because you need to add more functionality to make REML work with non-Gaussian models?


Does return false: https://secure.php.net/manual/en/datetime.format.php

>Returns the formatted date string on success or FALSE on failure.


Yes, it's to allow running tests through the standard unittest module. See https://github.com/fyookball/electrum/pull/723#issuecomment-396529965.


If this is common (updating this file from Phan), should tests be added to prevent these sorts of regressions?


To sort names correctly in the general case, first names and last names should be compared independently. Either can contain spaces, for instance.


Oh. ha.  Nvm.  Yes.  Makes sense.  I'll tell Marcel this is ok to merge.


Would it be possible to make a key index for each of the objects and use that instead of indexOf?


usuario: _asdasd3212@yopmail.com_
pass: _asdasd3212_
proyecto: [https://go.gliffy.com/go/share/s1k7adyp2bu0slsjks7k](url)


$(call inherit-product, vendor/lineage/config/common_full_phone.mk) "vendor" not "vendort"


Dear Poggit user,

This is an automatic message from Poggit-CI. Poggit-CI was triggered by this commit, but failed to create builds due to the following error:

You are trying to create too many projects. We only allow creating up to 10
new projects per week.

Contact @SOF3 [on Discord](https://discord.gg/NgHf9jt) to request for extra
quota. We will increase your quota **for free** if you are really trying to
build **your own plugins**, i.e. not forks or copied code.

**Do not try to use another account just to overcome this limit**, or you
may be **banned** from Poggit.

As a result, no builds could be created from this commit. More details might be available for repo admins at [the webhook delivery response log](https://github.com/LegendryDileo/CloudSystem/settings/hooks) — see the webhook starting with `https://poggit.pmmp.io/webhooks.gh.repo` and look for the delivery with ID `e1436790-74bb-11e8-90c4-c4c2a663666f`.

Shall you need any assistance, you may contact us on [on Discord](https://discord.gg/NgHf9jt), or more publicly, [on GitHub](https://github.com/poggit/support/issues). Commenting on this commit directly will **not** notify any Poggit staff.

Regards,
Poggit Bot (@poggit-bot)
The official Poggit automation account


Dear Poggit user,

This is an automatic message from Poggit-CI. Poggit-CI was triggered by this commit, but failed to create builds due to the following error:

You are trying to create too many projects. We only allow creating up to 10
new projects per week.

Contact @SOF3 [on Discord](https://discord.gg/NgHf9jt) to request for extra
quota. We will increase your quota **for free** if you are really trying to
build **your own plugins**, i.e. not forks or copied code.

**Do not try to use another account just to overcome this limit**, or you
may be **banned** from Poggit.

As a result, no builds could be created from this commit. More details might be available for repo admins at [the webhook delivery response log](https://github.com/LegendryDileo/CloudSystem/settings/hooks) — see the webhook starting with `https://poggit.pmmp.io/webhooks.gh.repo` and look for the delivery with ID `ea0600fe-74bb-11e8-9382-b662c1d7ea8b`.

Shall you need any assistance, you may contact us on [on Discord](https://discord.gg/NgHf9jt), or more publicly, [on GitHub](https://github.com/poggit/support/issues). Commenting on this commit directly will **not** notify any Poggit staff.

Regards,
Poggit Bot (@poggit-bot)
The official Poggit automation account


The best approach would be to use:
`return this.httpClient.post<IEventSchema>(...)`
since all http methods (get, post... etc) are a generic ones, by passing the type there is no need for casting


When app created angular Cli Json the structure is different,
in angular 6 the angular cli file replaced with angular.json.
the paths referred to the file in it must be changed to successfully build the app else it will throw MULTI error after 90% build


Accidental push to master?


## Jenkins Build Summary

Built from [this commit](https://github.com/scottschurr/rippled/commit/89938b846e6e6ab80dca53d8b17d3447b0f40712)

Built at __20180620 - 19:00:53__

### Test Results

Build Type | Log | Result | Status
---------- | --- | ------ | ------
msvc.debug | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/msvc.debug.txt) | 1029 cases, 0 failed, t: 565s | PASS :white_check_mark:
coverage | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/coverage.txt) | 1032 cases, 0 failed, t: 686s | PASS :white_check_mark:
docs | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/docs.txt) | 1 cases, 0 failed, t: 2s | PASS :white_check_mark:
gcc.release.unity
-Dassert=true,
MANUAL_TESTS=true | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/gcc.release.unity_Dassert_true_MANUAL_TESTS_true.txt) | 1093 cases, 1 failed, t: 779s | FAIL :red_circle:
clang.debug.unity | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/clang.debug.unity.txt) | 1032 cases, 0 failed, t: 249s | PASS :white_check_mark:
clang.debug.unity,
PARALLEL_TESTS=false | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/clang.debug.unity_PARALLEL_TESTS_false.txt) | 1032 cases, 0 failed, t: 492s | PASS :white_check_mark:
gcc.debug.unity | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/gcc.debug.unity.txt) | 1032 cases, 0 failed, t: 249s | PASS :white_check_mark:
clang.debug.nounity | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/clang.debug.nounity.txt) | 1030 cases, 0 failed, t: 677s | PASS :white_check_mark:
msvc.debug,
PROJECT_NAME=rippled_classic | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/msvc.debug_PROJECT_NAME_rippled_classic.txt) | 1029 cases, 0 failed, t: 1246s | PASS :white_check_mark:
clang.release.unity
-Dassert=true | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/clang.release.unity_Dassert_true.txt) | 1031 cases, 0 failed, t: 336s | PASS :white_check_mark:
gcc.debug.nounity | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/gcc.debug.nounity.txt) | 1030 cases, 0 failed, t: 559s | PASS :white_check_mark:
msvc.release | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/msvc.release.txt) | 1028 cases, 0 failed, t: 521s | PASS :white_check_mark:
gcc.debug.unity
-Dstatic=true | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/gcc.debug.unity_Dstatic_true.txt) | 1032 cases, 0 failed, t: 248s | PASS :white_check_mark:
gcc.release.unity
-Dassert=true | [logfile](http://ci.ops.ripple.com/job/scott-schurr-rippled/job/joeloser_deprecate_dirdelete/4//artifact/gcc.release.unity_Dassert_true.txt) | 1031 cases, 0 failed, t: 352s | PASS :white_check_mark:


@kojoty To chyba nigdy nie działało ;). Poprawię przy okazji, bo grzebię w okolicach.


not need


@gith-account thanks; I've included your suggested changes


Sorted.


I forgot to push the file. I have updated it. Thank you for the note


I was referring to boxes with FreeBSD or GhostBSD that are not using Raven (yes, I still have some such systems! But I'm hoping that Raven will provide most of what I need by the end of the year or so. ;)). In the FPC tesseract seems to be a dependency for graphics/opencv now (which is used by Chromium and the likes). That's why it was pulled in when the quarter changed, I think.


I believe it has to do with the fact that "REML" for GLMMs is not entirely well established: opinions range from "sure, integrate over the fixed-effect parameters, what's the big deal?" to "that doesn't (or might not) make sense, or at least you should call it 'integrated likelihood' or 'GREML' instead". See refs/links in [the relevant section of the GLMM FAQ](http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html#reml-for-glmms)


My examples are shown in the code for testing in EpisodeNumberWithoutSeasonTests.cs.

When I had wrote this change, I was under the impression that every season starts with an episode 1 for that season, as I had looked at many examples and did not find anything showing otherwise. That TVDB page is unusual because it divides a weekly show into seasons by year, but it still also maintains a sequential episode number that does not reset between seasons. If you revert my change, you also will break episode title parsing that is similar to my example in the comment. I have several shows that are in the format "SeriesName (Year-Year)\Episode 31" or "SeriesName (Year-Year)\SeriesName 31"

What is actually happening here is a complicated issue for which we need a solution that looks at a broader context of episodes in sub-directories instead of making a final match based only on the single file's address. Or we can re-order the list of regular expressions used if we the coders can agree on proof that some regex will only produce matches are are a subset of matches for another regex, and thus the regex with subset results should be tried first before the regex with broader results.

When parsing episode titles, you run the file's address through a series of regular expressions. The first regex that gets a match on the address is used immediately, but a different regex that is further down the regex list fits the file's address more accurately. I believe an earlier regex in your regex list is more aggressive in matching than one further in the list. For the one further in the list, it is impossible to have a successful match because its matches will always be a subset to the earlier one. Therefore when I invalidated matches that were resulting in episodes that were above 365 for seasons above 1 (a reasonable condition from what I had seen in initial research), all of my files were parsed correctly by the regex that had finally been given a chance.

What are your thoughts? I'd be disappointed if you simply reverted to favor those more complex-looking episode addresses. It's not unreasonable for my examples to be having the correct results.


The following doc(s) have been deployed to the [wordpresss](https://wordpresss-static-docs.pantheonsite.io/docs) Multidev environment:
- [/docs/wordpress-s3](https://wordpresss-static-docs.pantheonsite.io/docs/wordpress-s3)


By mistake


Thanks for this one! I was trying to track down this issue for the last 3 days!


ok, fixed


Fixed.


Changed.


@jensens Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.registry/15/violations
```
plone/registry/recordsproxy.py:6:1: I001 isort found an import in the wrong position
plone/registry/recordsproxy.py:17:5: F401 'collections.UserDict' imported but unused
plone/registry/recordsproxy.py:34:34: Q000 Remove bad quotes.
plone/registry/recordsproxy.py:48:12: E111 indentation is not a multiple of four
plone/registry/recordsproxy.py:66:16: Q000 Remove bad quotes.
plone/registry/recordsproxy.py:68:43: C812 missing trailing comma
plone/registry/recordsproxy.py:76:28: Q000 Remove bad quotes.
plone/registry/recordsproxy.py:85:32: Q000 Remove bad quotes.
plone/registry/recordsproxy.py:103:29: C812 missing trailing comma
plone/registry/recordsproxy.py:134:30: C812 missing trailing comma
plone/registry/recordsproxy.py:152:19: C812 missing trailing comma
plone/registry/recordsproxy.py:201:26: W601 .has_key() is deprecated, use 'in'
plone/registry/recordsproxy.py:256:1: W391 blank line at end of file
plone/registry/events.py:20:16: Q000 Remove bad quotes.
plone/registry/events.py:20:16: S001 found module formatter
plone/registry/tests.py:12:1: F401 'zope.testing.doctestunit' imported but unused
plone/registry/tests.py:33:12: P002 found "hasattr", consider replacing it
plone/registry/tests.py:55:36: Q000 Remove bad quotes.
plone/registry/tests.py:55:60: Q000 Remove bad quotes.
plone/registry/tests.py:56:34: Q000 Remove bad quotes.
plone/registry/tests.py:63:15: Q000 Remove bad quotes.
plone/registry/tests.py:65:18: C812 missing trailing comma
plone/registry/tests.py:68:15: Q000 Remove bad quotes.
plone/registry/tests.py:69:29: C812 missing trailing comma
plone/registry/tests.py:72:1: E302 expected 2 blank lines, found 1
plone/registry/tests.py:76:31: Q000 Remove bad quotes.
plone/registry/tests.py:137:40: Q000 Remove bad quotes.
plone/registry/tests.py:137:60: Q000 Remove bad quotes.
plone/registry/tests.py:178:34: Q000 Remove bad quotes.
plone/registry/tests.py:180:28: Q000 Remove bad quotes.
plone/registry/tests.py:182:36: Q000 Remove bad quotes.
plone/registry/tests.py:192:33: Q000 Remove bad quotes.
plone/registry/tests.py:193:67: Q000 Remove bad quotes.
plone/registry/tests.py:194:61: Q000 Remove bad quotes.
plone/registry/tests.py:235:44: C812 missing trailing comma
plone/registry/tests.py:243:44: C812 missing trailing comma
plone/registry/tests.py:251:44: C812 missing trailing comma
plone/registry/registry.py:24:1: I001 isort found an import in the wrong position
plone/registry/registry.py:25:1: I003 isort expected 1 blank line in imports, found 0
plone/registry/registry.py:60:11: T000 Todo note found.
plone/registry/registry.py:72:32: Q000 Remove bad quotes.
plone/registry/registry.py:79:25: Q000 Remove bad quotes.
plone/registry/registry.py:80:25: Q000 Remove bad quotes.
plone/registry/registry.py:82:33: C812 missing trailing comma
plone/registry/registry.py:83:26: C812 missing trailing comma
plone/registry/registry.py:95:32: Q000 Remove bad quotes.
plone/registry/registry.py:105:21: Q000 Remove bad quotes.
plone/registry/registry.py:106:21: Q000 Remove bad quotes.
plone/registry/registry.py:108:49: C812 missing trailing comma
plone/registry/registry.py:109:22: C812 missing trailing comma
plone/registry/registry.py:124:17: B901 blind except: statement
plone/registry/registry.py:130:32: C812 missing trailing comma
plone/registry/registry.py:141:20: C812 missing trailing comma
plone/registry/registry.py:175:9: Q000 Remove bad quotes.
plone/registry/registry.py:176:9: Q000 Remove bad quotes.
plone/registry/registry.py:177:9: Q000 Remove bad quotes.
plone/registry/registry.py:178:9: Q000 Remove bad quotes.
plone/registry/registry.py:180:9: Q000 Remove bad quotes.
plone/registry/registry.py:192:30: Q000 Remove bad quotes.
plone/registry/registry.py:291:21: Q000 Remove bad quotes.
plone/registry/registry.py:291:68: C812 missing trailing comma
plone/registry/registry.py:308:13: Q000 Remove bad quotes.
plone/registry/registry.py:309:13: Q000 Remove bad quotes.
plone/registry/registry.py:310:31: C812 missing trailing comma
plone/registry/interfaces.py:28:23: C812 missing trailing comma
plone/registry/interfaces.py:32:23: C812 missing trailing comma
plone/registry/interfaces.py:46:67: C812 missing trailing comma
plone/registry/interfaces.py:50:22: C812 missing trailing comma
plone/registry/interfaces.py:68:32: C812 missing trailing comma
plone/registry/interfaces.py:73:70: C812 missing trailing comma
plone/registry/interfaces.py:85:23: C812 missing trailing comma
plone/registry/interfaces.py:112:45: Q000 Remove bad quotes.
plone/registry/interfaces.py:118:22: C812 missing trailing comma
plone/registry/interfaces.py:122:61: C812 missing trailing comma
plone/registry/interfaces.py:195:22: C812 missing trailing comma
plone/registry/interfaces.py:208:22: C812 missing trailing comma
plone/registry/fieldfactory.py:35:30: Q000 Remove bad quotes.
plone/registry/fieldfactory.py:44:74: C812 missing trailing comma
plone/registry/fieldfactory.py:54:17: Q000 Remove bad quotes.
plone/registry/fieldfactory.py:55:17: Q000 Remove bad quotes.
plone/registry/fieldfactory.py:92:17: Q000 Remove bad quotes.
plone/registry/fieldfactory.py:93:17: Q000 Remove bad quotes.
plone/registry/__init__.py:2:1: F401 'plone.registry.fieldref.FieldRef' imported but unused
plone/registry/__init__.py:3:1: F401 'plone.registry.record.Record' imported but unused
plone/registry/__init__.py:4:1: F401 'plone.registry.registry.Registry' imported but unused
plone/registry/field.py:17:1: I001 isort found an import in the wrong position
plone/registry/field.py:59:13: Q000 Remove bad quotes.
plone/registry/field.py:60:13: Q000 Remove bad quotes.
plone/registry/field.py:60:43: C812 missing trailing comma
plone/registry/field.py:97:17: Q000 Remove bad quotes.
plone/registry/field.py:98:17: Q000 Remove bad quotes.
plone/registry/field.py:101:18: C812 missing trailing comma
plone/registry/field.py:124:42: C812 missing trailing comma
plone/registry/field.py:236:21: Q000 Remove bad quotes.
plone/registry/field.py:237:21: Q000 Remove bad quotes.
plone/registry/field.py:237:63: C812 missing trailing comma
plone/registry/field.py:242:17: Q000 Remove bad quotes.
plone/registry/field.py:243:17: Q000 Remove bad quotes.
plone/registry/field.py:243:75: C812 missing trailing comma
plone/registry/field.py:247:13: Q000 Remove bad quotes.
plone/registry/field.py:249:13: Q000 Remove bad quotes.
plone/registry/field.py:257:25: Q000 Remove bad quotes.
plone/registry/field.py:257:79: C812 missing trailing comma
plone/registry/record.py:28:16: Q000 Remove bad quotes.
plone/registry/record.py:34:30: Q000 Remove bad quotes.
plone/registry/record.py:115:16: Q000 Remove bad quotes.
plone/registry/record.py:115:16: S001 found module formatter
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


d'oh. good catch, thanks


Done


(Just for information, these icon are no longer comparable by https://josm.openstreetmap.de/wiki/ImageryCompare.)


You can return here and get rid of the variable.


Thanks for the clarification!


I'm new to the Godot engine, so I imagine I did everything wrong that can be done wrong. Feedback would be appreciated.


That's dirty! 😝


@ninjarails - Do you remember why this change was made? Is it just to prevent another query, or is there another reason?

I'm running into a situation where I want to create an Accounting::Profile from an existing Authorize.Net Customer Profile (e.g. the profile_id already exists, and I don't want to create a new customer). In that case, it makes sense to reach out and check for existing details before creating a new Accounting::Profile.

Thoughts?


@Makapoh54 - hey, hope you are well,
please be informed that I already start with some coding stuff for Bootcamp


You're absolutely right -- I just deleted the offending constructor (which was originally there for scaffolding as I built the class), since it violates the spirit of the class.


ok ok. I am new to javascript. And I thought that if I needed the accounts in all use cases, I might as well make them global... Guess I need to work with a before() or a beforeEach(). Will check out how that works


Great news. I saw that in Changelogs (Allow to share glossaries between structure). It means that we'll be able to add some items in typologies without associating them to any structure and that they will be able for all users of all structures, right ?


@chaolmu It seems that we don't need to add the mass of the legs "explicitly", 'cause the mass of the base_link included all links that "fix"  to it. In the model, the mass of the base_link included the mass of the arms, the motors, and the legs.


Remove unnecessary Changes. This don't looks good to me


I can test the result of the split seperately. But if I test the balance that is inside the contract, doesn't that also cover the result of the split message ?


@reyzin please review this commit to make sure I changed to sha512 correctly


I even debated about including a note in there about loop-invariant code motion. However, running the benchmark it seems as if the compiler is not (yet) able to optimize the code in this manner.  Will refactor according to your suggestion to make sure.


His use case is actually not that complex, I think he just had some problems typing up his issue report in the forums.

If you look at his season and episode names, they exactly match what is listed on tvdb: https://www.thetvdb.com/series/running-man

And since we are always advising users to follow tvdb naming, we have to support this scenario. So for now at least that means his use case will have to trump yours but if there's a way of getting both to work then that would be fine with me.


Is it possible to make the getRhs() method available, since the program analysis query (https://github.com/boalang/compiler/blob/program-analysis/test/program-analysis/local-may-alais.boa) is accessing the rhs of a CFGNode.


well, to comment further, I'd need to know why opencv port maintainer felt it was necessary to add it my default and what it brings (and more importantly what is lost by not having it).


chamo quejeso