{% extends 'ctflex/base/headered.template.html' %} {% block title %} Winners - {{ block.super }} {% endblock %} {% block header %} Winning Teams {% endblock %} {% block content %}
Congratulations to all of our winning teams!
| Team Name | School |
|---|---|
| SST CTF | School of Science and Technology |
| pearl | Montgomery Blair High School |
| meephackerz | None |
| 0x5F3759DF | Polytechnic School |
| Microsoft Tech Support | Richardson High School |
| Panclúst | Montville Township High School |
| perfect blue | Multiple |
| Quadnary | SPASH |
| Richie M. Stalls | Spring-Ford Senior High |
| unlimited_reagents | Bergen County Academies |
| AltF4toWin | Lovejoy High School |
| Cybernetics Core | Academy for Science and Design |
| noxale | noxale |
| Shadyside | Montgomery Blair High School |
| Recycle Plants | SHS + WWPHSN |
| tjcsc | TJHSST |
| Society of Entropy | Westminster School |
| toastcookie | Bellarmine College Preparatory |
| Ponies | Interlake High School |
| Clements | Clements High School |
| Squad Goals | BB&N |
| doop | Niles West High School |
| %20 > tabs | Menlo School |
| U+202e | Poolesville High School |
| Veni | None |
| Blue Wave | Noblesville High School |
| Exodus | Spring-Ford High School |
| TurKimPan | Phillips Academy Andover |
| Chaldeas | South Brunswick High School |
| Cue Us | Menlo School |
| The Concatenators | Cedar Park High School |
| Omega | Northwood High School |
| 0X2.9C__8P+0_9D | Cranbrook High School |
| Trey's Receding Hairline | Menlo School |
| Goyims | Lovejoy High School |
| One hundo percent not FBI | Takoma Park Middle School |
| Wow | TJHSST |
| dictat0rs.php | Wellesley High School |
| PentaHex | Various |
| Keyoungdant | Bergen County Academies |
| CTFlearn | Bergen County Academies |
| dudajeg | None |
| Y Y Combinator Combinator | Ambassador High School |
| pippinpaddleoppsokopolis | Temple City High School |
| Fire Brigade | Liberal Arts and Science Academy |
| /dev/null | South Brunswick High school |
| PNKD | None |
| Cranbrook Kingswood B | Cranbrook Kingswood |
| Blue | Lausanne |
| L Distribution | None |
| Luddites | Kehillah Jewish Highschool |
| [ ] | Livingston High School |
| toasterwar | None |
| HoraceMann | Horace Mann School |
| Retest to an 85 | Lovejoy High School |
| AOL Coding Skuad | Takoma Park Middle School |
| MY NAME JEFF | Chinese International School |
| WHRHS CS 1 | Watchung Hills Regional High School |
| AtreyaSux | Menlo School |
| Blue Power | Vandegrift Highschool |
| Purple Power | Vandegrift High School |
| GeniusDumbos | Herbert Hoover Middle School |
| b2c | Montgomery Blair High School |
| Trey'sDrugAddiction | Menlo School |
| Falcon10 | Pottsgrove High School |
| IT’S NINJANIC!!! | Columbus Academy |
| RMHS Programming Club | Reading Memorial High School |
| 404NFnd | Northfield Mount Hermon School |
| Smash Mouth Official | STEM School Highlands Ranch |
| Forest Park Bruins | Forest Park High School |
| MaldenHighSchool | Malden High School |
| L.L.I.E.S | Verdugo Hills High School |
| The 8 | Cypress Bay High School |
| ZomboCom | Andover High School |
| wearetheidiots | None |
| CVU | Champlain Valley Union High School |
| Lemon | Winchester High School |
| Class Vanishes | Downingtown East high school |
| Dons Cosecant | Loyola Blakefield |
| alias less='more' | MBHS |
| Westwood Robotics | Westwood High School |
| eEEeeeeEeEEeEEE | Oakwood School |
| Red Power | Vandegrift High School |
| Homestead1 | Homestead High School |
| Hose Ain't (Allan) Wirth It | Menlo School |
| Mr. Carpenter | The Gregory School |
| Stomping_On_Your_Code | Stranahan |
| Codeby | 25 |
| Almond robotics | Herbert Hoover’s middle school |
| Tide Codes | Andover High School |
| 🅱yte Me | Granada Hills Charter Highschool |
| Power Rangers | Friendswood High School |
| BAM | Lovejoy High School |
| CAAAN you not? | Bergen County Academies |
| Algonquin | Algonquin Regional High School |
| lo | Plano West Senior High School |
| adergaderga | None |
| ESnowden | Academy for science and design |
| Gold Squadron | OPS #1873 |
| Official Progs | South Technical High School |


Searching, downloading and manipulating Eurostat data with R
Introduction
We have published a new package eurostat
in CRAN. To install the package in R, use:
install.packages("eurostat")
The eurostat package is based on the SmarterPoland package, which was revised and expanded with new functionality. The new eurostat package includes the following functions:
library(eurostat)
kable(as.data.frame(ls("package:eurostat")))
| ls(“package:eurostat”) |
|---|
| clean_eurostat_cache |
| eurotime2date |
| eurotime2num |
| get_eurostat |
| get_eurostat_dic |
| getEurostatDictionary |
| get_eurostat_toc |
| getEurostatTOC |
| grepEurostatTOC |
| label_eurostat |
| label_eurostat_tables |
| label_eurostat_vars |
| search_eurostat |
This blog post will walk you through the basic functionalities of the package. To reproduce the examples, run the following code to install the required dependencies.
PACKAGES <- c("eurostat","ggplot2","countrycode","tidyr","dplyr","knitr")
# Install packages
inst <- match(PACKAGES, .packages(all=TRUE))
need <- which(is.na(inst))
if (length(need) > 0) install.packages(PACKAGES[need])
# Load packages
lapply(PACKAGES, require, character.only=T)
In this exercise we use indicator tgs00026
, (Disposable income of private households by NUTS 2 regions) from Eurostat. Most indicators in Eurostat database are of country-year -type, however, some indicators have data also at lower level of regional breakdown, as tgs00026
at NUTS2-level. (See more information on regional classification here).
Searching and downloading data from Eurostat
Though we have already picked the data for following demonstrations you can search the available variables using search_eurostat
-function. Data for tables resides in Datasets that are in folders. You can specify in the function whether you want to look for table, dataset or a folder.
results <- search_eurostat("disposable income", type = "dataset")
# print the first 6 rows
kable(head(results))
| title | code | type | last.update.of.data | last.table.structure.change | data.start | data.end | values | |
|---|---|---|---|---|---|---|---|---|
| 1857 | Share of housing cost in disposable income by level of activity limitation, sex and age | hlth_dhc050 | dataset | 16.10.2014 | 2005 | 2012 | NA | |
| 3563 | Gini coefficient of equivalised disposable income (source: SILC) | ilc_di12 | dataset | 18.05.2015 | 16.02.2015 | 1995 | 2014 | NA |
| 3564 | Gini coefficient of equivalised disposable income before social transfers (pensions included in social transfers) | ilc_di12b | dataset | 18.05.2015 | 16.02.2015 | 2003 | 2014 | NA |
| 3565 | Gini coefficient of equivalised disposable income before social transfers (pensions excluded from social transfers) | ilc_di12c | dataset | 18.05.2015 | 16.02.2015 | 2003 | 2014 | NA |
Or you can also download the whole table of contents of the database with get_eurostat_toc
-function. In both cases the values in column code
should be used to download a selected dataset.
toc <- get_eurostat_toc()
# print the first 6 rows
kable(head(toc))
| title | code | type | last.update.of.data | last.table.structure.change | data.start | data.end | values |
|---|---|---|---|---|---|---|---|
| Database by themes | data | folder | NA | ||||
| General and regional statistics | general | folder | NA | ||||
| European and national indicators for short-term analysis | euroind | folder | NA | ||||
| Business and consumer surveys (source: DG ECFIN) | ei_bcs | folder | NA | ||||
| Consumer surveys (source: DG ECFIN) | ei_bcs_cs | folder | NA | ||||
| Consumers - monthly data | ei_bsco_m | dataset | 29.04.2015 | 29.04.2015 | 1985M01 | 2015M04 | NA |
Downloading and plotting time-series data at the NUTS2 regional level
However, we are interested in the disposable household income and first we download the data and convert the time column into numeric format.
library(eurostat)
# Clean the cache first
clean_eurostat_cache()
# Download the income variable
dat <- get_eurostat("tgs00026", time_format = "raw")
# Extract the information on country in question. (First two character in region string mark the country)
dat$cntry <- substr(dat$geo, 1,2)
# Create the variable for proper countrynames using countryname-package
library(countrycode)
dat$countryname <- countrycode(dat$cntry, "iso2c", "country.name")
# convert time column from Date to numeric
dat$time <- eurotime2num(dat$time)
kable(head(dat))
| indic_na | unit | geo | time | values | cntry | countryname |
|---|---|---|---|---|---|---|
| B6N_U | PPCS_HAB | AT11 | 2000 | 13900 | AT | Austria |
| B6N_U | PPCS_HAB | AT12 | 2000 | 15600 | AT | Austria |
| B6N_U | PPCS_HAB | AT13 | 2000 | 17300 | AT | Austria |
| B6N_U | PPCS_HAB | AT21 | 2000 | 14100 | AT | Austria |
| B6N_U | PPCS_HAB | AT22 | 2000 | 14400 | AT | Austria |
| B6N_U | PPCS_HAB | AT31 | 2000 | 14900 | AT | Austria |
Then we plot the data at the regional level and color the lines using country names derived from countrycode
-package.
library(ggplot2)
p <- ggplot(dat, aes(x=time,y=values,group=geo,color=countryname))
p <- p + geom_point() + geom_line()
# Add the region names at the end of each line
p <- p + geom_text(data=merge(dat, aggregate(time ~ geo, dat, max),
by=c("time","geo")),
aes(x=time, y = values, label=geo), hjust=-0.5,vjust=-1,size=3)
p <- p + labs(x="Year", y="Disposable income of private households (€ per year)")
# Place the legend with country names on top in three rows
p <- p + theme(legend.direction = "horizontal", legend.position = "top")
p <- p + guides(color = guide_legend(title = "Country",
title.position = "top",
title.hjust=.5,
nrow=3,
byrow=TRUE))
p
Labelling the data
Function label_eurostat
provides a straighforward way to convert the codes in data into more meaningful labels. The label_eurostat
function requires that the data is in the “default format” with no added columns. First, check unlabeled example data:
# First, remove the cntry and countrycode columns that were added manually
cntry_cols <- dat[ , names(dat) %in% c("cntry","countryname")]
dat <- dat[ , !names(dat) %in% c("cntry","countryname")]
# Unlabeled data
kable(head(dat))
| indic_na | unit | geo | time | values |
|---|---|---|---|---|
| B6N_U | PPCS_HAB | AT11 | 2000 | 13900 |
| B6N_U | PPCS_HAB | AT12 | 2000 | 15600 |
| B6N_U | PPCS_HAB | AT13 | 2000 | 17300 |
| B6N_U | PPCS_HAB | AT21 | 2000 | 14100 |
| B6N_U | PPCS_HAB | AT22 | 2000 | 14400 |
| B6N_U | PPCS_HAB | AT31 | 2000 | 14900 |
Labeling the data based on definitions from dictionary:
# apply the definitions from dictionary
datl <- label_eurostat(dat)
# Labeled data
kable(head(datl))
| indic_na | unit | geo | time | values |
|---|---|---|---|---|
| Disposable income, net (uses) | Purchasing power standard based on final consumption per inhabitant | Burgenland (AT) | 2000 | 13900 |
| Disposable income, net (uses) | Purchasing power standard based on final consumption per inhabitant | Niederösterreich | 2000 | 15600 |
| Disposable income, net (uses) | Purchasing power standard based on final consumption per inhabitant | Wien | 2000 | 17300 |
| Disposable income, net (uses) | Purchasing power standard based on final consumption per inhabitant | Kärnten | 2000 | 14100 |
| Disposable income, net (uses) | Purchasing power standard based on final consumption per inhabitant | Steiermark | 2000 | 14400 |
| Disposable income, net (uses) | Purchasing power standard based on final consumption per inhabitant | Oberösterreich | 2000 | 14900 |
# Bind the country name columns back to the labelled data
datl2 <- cbind(datl,cntry_cols)
For clarity, we plot first four countries in alphabetical order in their own facets with region names.
# subset the first 4 countries in albhabetical order
datl3 <- datl2[datl2$countryname %in% sort(unique(datl2$countryname))[1:4],]
# plot the data using country facets
library(ggplot2)
p <- ggplot(datl3,aes(x=time,y=values,group=geo))
p <- p + geom_point(color="grey") + geom_line(color="grey")
p <- p + geom_text(data=merge(datl3, aggregate(time ~ geo, datl3, max),
by=c("time","geo")),
aes(x=time, y = values, label=geo), vjust=1,size=3)
p <- p + coord_cartesian(xlim=c(min(datl2$time):max(datl2$time)+3))
p <- p + facet_wrap(~countryname, scales = "free", ncol = 1)
p <- p + labs(title=paste0(unique(datl3$indic_na),"\n(",unique(datl3$unit),")"),
x="Year",y="Disposable income of private households (€ per year)")
p
Mapping the household incomes at NUTS2 level
In the following exercise we are plotting household income data from Eurostat on map from three different years. In addition to downloading and manipulating data from EUROSTAT, we will demonstrate how to access and use shapefiles of Europe published by EUROSTAT at Administrative units / Statistical units.
For this exercise you need few more dependencies that can be installed running the following script.
PACKAGES <- c("rgdal","maptools","rgeos","stringr","scales","grid")
# Install packages
inst <- match(PACKAGES, .packages(all=TRUE))
need <- which(is.na(inst))
if (length(need) > 0) install.packages(PACKAGES[need])
# Load packages
lapply(PACKAGES, require, character.only=T)
Downloading and manipulating the tabular data
First, we shall retrieve the nuts2-level figures of variable tgs00026
(Disposable income of private households by NUTS 2 regions) and manipulate the extract the information for creating unit
and geo
variables.
library(eurostat)
df <- get_eurostat("tgs00026", time_format = "raw")
# convert time column from Date to numeric
df$time <- eurotime2num(df$time)
# subset time to have data for 2000, 2005 and 2011
df <- df[df$time %in% c(2000,2005,2011),]
# spread the data into wide format
library(tidyr)
dw <- spread(df, time, values)
Downloading and manipulating the spatial data
Second, we will download the zipped shapefile in 1:60 million scale from year 2010 and subset it at the level of NUTS2.
# Load the GISCO shapefile
download.file("http://ec.europa.eu/eurostat/cache/GISCO/geodatafiles/NUTS_2010_60M_SH.zip", destfile="NUTS_2010_60M_SH.zip")
# unzip
unzip("NUTS_2010_60M_SH.zip")
library(rgdal)
# read into SpatialPolygonsDataFrame
map <- readOGR(dsn = "./NUTS_2010_60M_SH/NUTS_2010_60M_SH/data", layer = "NUTS_RG_60M_2010")
## OGR data source with driver: ESRI Shapefile
## Source: "./NUTS_2010_60M_SH/NUTS_2010_60M_SH/data", layer: "NUTS_RG_60M_2010"
## with 1920 features
## It has 4 fields
# subset the spatialpolygondataframe at NUTS2-level
map_nuts2 <- subset(map, STAT_LEVL_ == 2)
Joining tabular data with spatial data
Third, we will make the both datas of same lenght, give then identical rownames and then merge the tabular data with the spatial data.
# dim show how many regions are in the spatialpolygondataframe
dim(map_nuts2)
## [1] 316 4
# dim show how many regions are in the data.frame
dim(dw)
## [1] 275 6
# Spatial dataframe has 467 rows and attribute data 275.
# We need to make attribute data to have similar number of rows
NUTS_ID <- as.character(map_nuts2$NUTS_ID)
VarX <- rep(NA, 316)
dat <- data.frame(NUTS_ID,VarX)
# then we shall merge this with Eurostat data.frame
dat2 <- merge(dat,dw,by.x="NUTS_ID",by.y="geo", all.x=TRUE)
## merge this manipulated attribute data with the spatialpolygondataframe
## rownames
row.names(dat2) <- dat2$NUTS_ID
row.names(map_nuts2) <- as.character(map_nuts2$NUTS_ID)
## order data
dat2 <- dat2[order(row.names(dat2)), ]
map_nuts2 <- map_nuts2[order(row.names(map_nuts2)), ]
## join
library(maptools)
dat2$NUTS_ID <- NULL
shape <- spCbind(map_nuts2, dat2)
Preparing the data for ggplot2 visualization
As we are using ggplot2-package for plotting, we have to fortify the SpatialPolygonDataFrame
into regular data.frame
-class. As we have income data from several years, we have to also gather
the data into long format for plotting.
## fortify spatialpolygondataframe into data.frame
library(ggplot2)
library(rgeos)
shape$id <- rownames(shape@data)
map.points <- fortify(shape, region = "id")
map.df <- merge(map.points, shape, by = "id")
# As we want to plot map faceted by years from 2003 to 2011
# we have to melt it into long format
# (variable with numerical names got X-prefix during the spCbind-merge,
# therefore the X-prefix in variable names)
library(tidyr)
# lets convert unit variable (that is a list) into character
map.df$unit <- as.character(map.df$unit)
map.df.l <- gather(map.df, "year", "value", 15:17)
# year variable (variable) is class string and type X20xx.
# Lets remove the X and convert it to numerical
library(stringr)
map.df.l$year <- str_replace_all(map.df.l$year, "X","")
map.df.l$year <- factor(map.df.l$year)
map.df.l$year <- as.numeric(levels(map.df.l$year))[map.df.l$year]
Plotting the maps using ggplot2
Breaks in the map are set at equal intervals between yearly regional maximun and minimun values.
library(ggplot2)
library(scales)
library(grid)
# Creating a custom function for creating the breaks and makeing them look neat
categories <- function(x, cat=5) {
library(stringr)
levs <- as.data.frame(as.character(levels(cut_interval(x, cat))))
names(levs) <- "orig"
levs$mod <- str_replace_all(levs$orig, "\\[", "")
levs$mod <- str_replace_all(levs$mod, "\\]", "")
levs$mod <- str_replace_all(levs$mod, "\\(", "")
levs$lower <- gsub(",.*$","", levs$mod)
levs$upper <- gsub(".*,","", levs$mod)
levs$lower <- factor(levs$lower)
levs$lower <- round(as.numeric(levels(levs$lower))[levs$lower],0)
levs$upper <- factor(levs$upper)
levs$upper <- round(as.numeric(levels(levs$upper))[levs$upper],0)
levs$labs <- paste(levs$lower,levs$upper, sep=" - ")
labs <- as.character(c(levs$labs))
y <- cut_interval(x, cat, right = FALSE, labels = labs)
y <- as.character(y)
y[is.na(y)] <- "No Data"
y <- factor(y, levels=c("No Data",labs[1:cat]))
}
# years for for loop
years <- unique(map.df.l$year)
# Loop over the three years
for (year in years) {
# subset data
plot_map <- map.df.l[map.df.l$year == year,]
# set the breaks
plot_map$value_cat <- categories(plot_map$value)
p <- ggplot(data=plot_map, aes(long,lat,group=group))
p <- p + geom_polygon(data = map.df.l, aes(long,lat),fill=NA,colour="white",size = 1)
p <- p + geom_polygon(aes(fill = value_cat),colour="white",size=.2)
p <- p + scale_fill_manual(values=c("Dim Grey","#d7191c","#fdae61","#ffffbf","#a6d96a","#1a9641"))
p <- p + coord_map(project="orthographic", xlim=c(-22,34), ylim=c(35,70))
p <- p + labs(title = paste0("Disposable household incomes in ",year))
p <- p + theme(legend.position = c(0.03,0.40),
legend.justification=c(0,0),
legend.key.size=unit(6,'mm'),
legend.direction = "vertical",
legend.background=element_rect(colour=NA, fill=alpha("white", 2/3)),
legend.text=element_text(size=12),
legend.title=element_text(size=12),
title=element_text(size=16),
panel.background = element_blank(),
plot.background = element_blank(),
panel.grid.minor = element_line(colour = 'Grey80', size = .5, linetype = 'solid'),
panel.grid.major = element_line(colour = 'Grey80', size = .5, linetype = 'solid'),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
plot.margin = unit(c(-3,-1.5, -3, -1.5), "cm"))
p <- p + guides(fill = guide_legend(title = "€ per Year",
title.position = "top",
title.hjust=0))
print(p)
}
We are done! That was a small exercise on how to use the main functions in the eurostat
-package. We hope you find the package useful! All suggestions, bug reports, and contributions are warmly welcome at: https://github.com/ropengov/eurostat. When using the packages, please cite accordingly:
citation("eurostat")
##
## Kindly cite the eurostat R package as follows:
##
## (C) Leo Lahti, Przemyslaw Biecek, Janne Huovari and Markus Kainu
## 2014-2015. eurostat R package URL:
## https://github.com/rOpenGov/eurostat
##
## A BibTeX entry for LaTeX users is
##
## @Misc{,
## title = {eurostat R package},
## author = {Leo Lahti and Przemyslaw Biecek and Janne Huovari and Markus Kainu},
## year = {2014},
## url = {https://github.com/rOpenGov/eurostat},
## }
sessionInfo()
## R version 3.2.0 (2015-04-16)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 14.04.2 LTS
##
## locale:
## [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_GB.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] grid stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] mapproj_1.2-2 maps_2.3-9 scales_0.2.4 stringr_1.0.0
## [5] rgeos_0.3-8 maptools_0.8-36 rgdal_0.9-2 sp_1.1-0
## [9] tidyr_0.2.0 ggplot2_1.0.1 countrycode_0.18 eurostat_1.0.16
## [13] knitr_1.10.5
##
## loaded via a namespace (and not attached):
## [1] Rcpp_0.11.6 magrittr_1.5 MASS_7.3-39 munsell_0.4.2
## [5] lattice_0.20-31 colorspace_1.2-6 highr_0.5 plyr_1.8.2
## [9] dplyr_0.4.1 tools_3.2.0 parallel_3.2.0 gtable_0.1.2
## [13] DBI_0.3.1 lazyeval_0.1.10 digest_0.6.8 assertthat_0.1
## [17] reshape2_1.4.1 formatR_1.2 evaluate_0.7 labeling_0.3
## [21] stringi_0.4-1 foreign_0.8-63 proto_0.3-10


School of Rock The Musical
Composer
Sir Andrew Lloyd Webber
Lyrics
Alain Boublil (French lyrics)
Jean-Marc Natel (French lyrics)
Herbert Kretzmer (English lyrics)
James Fenton (English additional lyrics)
Playwright
Sir Andrew Lloyd Webber
2.1k
4.75/5
210 min
Total shows
14.253
Total
7
Ongoing
3
Premiere
06 - Dec - 15
Based on the film of the same name, School of Rock—The Musical tells the story of wannabe rock star Dewey Finn, who poses as a substitute teacher at a prestigious prep school, while impersonating his best friend, Ned Schneebly. When he discovers his students are musical talents, he enlists his fifth-graders to form a rock group and conquer the Battle of the Bands, in order to achieve his own dream of being a famous rock star.
Production History
15-dec-2015
20-jan-2019
22-OCT-2017
ongoing
15-feb-2017
18-MAR-2020
18-jun-1995
18-MAR-2005
18-dec-2018
18-aug-2019
TBK
TBK
18-mar-2019
25-MAR-2019
User Reviews
AndreaBizz8
BaYJJKil
GhialeHn
Yoshi
FakeStu
XStormX
| Year | Award | Production | Result |
|---|---|---|---|
| 2016 | Best Musical (Tony Award) | Broadway | Nominated |
| 2016 | Favourite Musical (Broadway,com Audience Awards) | Broadway | Nominated |
| 2017 | Best New Musical (WhatsOnStage Award) | West End | Won |
| 2017 | Oustanding Achievement in Music (Laurence Olivier Award) | West End | Won |
| Name | Role | Production | Debut | Last Show | |||
|---|---|---|---|---|---|---|---|
| Alan Pearson | Ned Schneebly | West End | 21-AUG-18 | Currently In | 4/5 | 1.2k | |
| Alex Tomkins | Dewey Finn (Alternate) | West End | 21-AUG-18 | Currently In | 4/5 | 1.2k | |
| Andy Prosser | Swing | West End | 21-AUG-18 | Currently In | 4/5 | 1.2k | |
| Andy Rees | Mr Mooneyham | Broadway | 25-OCT-17 | Currently In | 4.95/5 | 6K | |
| Billy Mitchell | Swing | West End | 21-AUG-18 | Currently In | 4/5 | 1.2k | |
| Cassandra McCowan | Mrs Hathaway | West End | 25-OCT-17 | 30-AUG-18 | 4.75/5 | 3.5K | |
| Catherine Morris | Swing | National Tour | 13-SEP-18 | Currently In | 4/5 | 1.2k |


--- layout: dexie-frontpage-template ---
Dexie was written to be straightforward and easy to learn. If you've ever had to work with native IndexedDB then you'll certainly appreciate Dexie's concise API.
What good is any development tool without great documentation? Dexie is thoroughly explained, and examples are available to help you on your way.
Dexie has near-native performance. Its bulk operations utilize an often-overlooked feature in IndexedDB, ignoring success callbacks when possible.
/*
|----------------------------|
| Declare your database |
|----------------------------|
*/
const db = new Dexie('MyDatabase');
// Declare tables, IDs and indexes
db.version(1).stores({
friends: '++id, name, age'
});
/*
|-----------------------|
| Then run some queries |
|-----------------------|
*/
// Find some old friends
const oldFriends = await db.friends
.where('age').above(75)
.toArray();
// or make a new one
await db.friends.add({
name: 'Camilla',
age: 25,
street: 'East 13:th Street',
picture: await getBlob('camilla.png')
});
Offline databases are groovy! But without keeping the database in sync with a server, you're missing a great deal.
Now go make something awesome.


Animating a header out of a ListView
12 Apr 2014When we enabled Social Sign In for our mobile users in the HootSuite Android app, we wanted to keep the flow simple and light with as few screens and dialogs as possible. This meant that we needed to defer collecting the user’s email address in certain cases until after sign-up.
As such, we wanted to surface an inline notification asking users to enter their email. The design was pretty straightforward: put a dialog inline with the main tab view content where the user can insert the information or dismiss the dialog.
I had done this a few times before, and the cleanest way to implement this in my opinion is to create the inline element as a view and add it as a header to the ListView
object. What I never really had to do before was dismiss it away with a collapsing animation. When implementing that animation, I ran into an issue with ListView
that I did not expect to find.
The logic behind such an animation is not rocket science. First, you’ll want to fade the content out using an AlphaAnimation
. Second, use a custom animation to apply a transformation on the view’s LayoutParams.height
property. Finally, combine the two by using an AnimationSet
, apply an appropriate duration and interpolator, and mark fillAfter
as true to keep the final state after the animation completes. The resulting code is shown here:
final int height = this.getMeasuredHeight();
final AbsListView.LayoutParams layoutParams = (AbsListView.LayoutParams) this.getLayoutParams();
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setDuration(400);
Animation translationAnimation = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
layoutParams.height = (int) (height * (1 - interpolatedTime));
TwitterEmailView.this.setLayoutParams(layoutParams);
Log.i(TAG, "applyTransformation: height = " + layoutParams.height);
}
@Override
public boolean willChangeBounds() {
return true;
}
};
translationAnimation.setDuration(400);
translationAnimation.setStartOffset(300);
AnimationSet set = new AnimationSet(true);
set.setInterpolator(new AccelerateDecelerateInterpolator());
set.addAnimation(alphaAnimation);
set.addAnimation(translationAnimation);
set.setFillAfter(true);
set.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
Log.i(TAG, "onAnimationEnd");
((ListView) TwitterEmailView.this.getParent()).removeHeaderView(TwitterEmailView.this);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
this.startAnimation(set);
But when I ran it on my test device, the result was less than satisfactory:
As you can see in the video above, the height property resets after the animation completes. I added some logcat messages and verified that the LayoutParams.height
at the end of the animation was still 0. Adding a call to set the view as GONE
had the same result.
My assumption at the time was that the ListView
was reverting the header cell to it's original height, or to the height of a normal list item, due to the layout parameter not being preserved by the fillAfter
setting. The best solution then appeared to be to remove the header from the ListView
after the animation completed.
This worked except that I occasionally saw a noticeable flicker after the animation finished before the view was removed. Here's the same video slowed down by 50% so YouTube doesn't filter out the frames showing the flicker.
I then decided to try re-writing the code using the ValueAnimator
APIs that were made available after Honeycomb.
final int height = this.getMeasuredHeight();
final AbsListView.LayoutParams layoutParams = (AbsListView.LayoutParams) this.getLayoutParams();
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(this, "alpha", 0f).setDuration(300);
ValueAnimator heightAnimator = ValueAnimator.ofInt(height, 0).setDuration(400);
heightAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
layoutParams.height = (Integer) valueAnimator.getAnimatedValue();
TwitterEmailView.this.setLayoutParams(layoutParams);
}
});
AnimatorSet set = new AnimatorSet();
set.playSequentially(alphaAnimator, heightAnimator);
set.setInterpolator(new AccelerateDecelerateInterpolator());
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
((ListView) TwitterEmailView.this.getParent()).removeHeaderView(TwitterEmailView.this);
}
});
set.start();
Essentially the same thing, just cleaner and using modern APIs. The interesting bit is that the resulting animation didn't have the flicker anymore. This variant could be used on Gingerbread as well by using the NineOldAndroids library.
To try and understand the difference between the two variants better, I built out a new app to host a simple ListView
and apply the same animation source to it and see what the results were.
Using this new codebase, I still saw the flicker of the old pre-Honeycomb animation technique as I did in the HootSuite application which proved to me that it wasn't occurring due to some other layout issue. As expected, the Honeycomb variant worked as it did before with no flicker.
I theorized that maybe there was a delay in the call to onAnimationEnd
for the pre-Honeycomb method so I added in some logging to measure the time delta of both methods from the last update/transformation call to the onAnimationEnd
call. The timing was rather variable but the V1 method ranged from 20ms-63ms and V2 ranged from 50ms-160ms. Clearly, the delay wasn't involved in that way.
I then created a class that extended FrameLayout
so that I could put in logging in the onLayout()
method to see if that might shed some light on the situation. The V1 method showed the layout bottom progressing towards 0 but jumped up suddenly when the flicker occured. This layout update came before the final onAnimationEnd
callback was called. V2 doesn't show this and instead stays at zero and then calls the callback.
At this point, I reached out to some trusted friends in the Android community for insight and got a huge tip from my pal Ryan Wheedon at AutoTrader. He had run into this in the past and pointed out that ListView
has a "feature" where it handles list children with a height of 0 as MeasureSpec.UNSPECIFIED
which in effect causes the view to measure as WRAP_CONTENT
.
I verified this by first adding more logging to my extended FrameLayout
which indeed showed that the MeasureSpec
for the FrameLayout
was changing from MeasureSpec.EXACTLY
to MeasureSpec.UNSPECIFIED
when the flicker occurred. This resulted in the onMeasure
method measuring how much height is required by the view rather than just setting the height to 0 as requested.
So why does this happen? Well take a look at the following code taken from setupChild(...)
from ListView
:
if (needToMeasure) {
int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec,
mListPadding.left + mListPadding.right, p.width);
int lpHeight = p.height;
int childHeightSpec;
if (lpHeight > 0) {
childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY);
} else {
childHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
}
child.measure(childWidthSpec, childHeightSpec);
} else {
cleanupLayoutState(child);
}
Therefore, if the height specified in the measureSpec
is 0, it forces the new measureSpec
to be MeasureSpec.UNSPECIFIED
. Not exactly desired behaviour for this animation.
So how to fix V1? I was able to get away with overriding onMeasure
to first check if the height measureSpec
is MeasureSpec.UNSPECIFIED
and simply force it back to MeasureSpec.EXACTLY
. This might not be a good solution for all situations since it prevents the use of WRAP_CONTENT
in the layout XML. An alternative solution that doesn't have this limitation is to simply prevent the animation from giving a height of zero. Having the height shrink down to a single pixel which is then removed looked fine on my test device.
The final mystery is why this didn't happen for V2 if the problem was due to ListView
? Ryan also pointed out that header height change calculation was slightly different between the two versions. This caused V1 to reach 0 before the final animation cycle and then measure itself with the incorrect MeasureSpec
just before before being removed. V2 set the view height to 0 in the final cycle and removed it before it can measure itself again. If the math in V2 were changed to match exactly it would show the same flicker as V1.
I’ve posted the source of the demo application to GitHub for people to take a look at and play with. https://github.com/michaelworth/HeaderAnimationDemo


|
JUST CAUSE
by Christine Alice Corcos
Pax TV, one of the family networks that specializes in feel good
shows, has launched as part of its Sunday lineup Just Cause,
a "legal drama"featuring an innocent ex-con who earns
her law degree from an "Internet law school" and badgers
an uptight, conservative and conventional Harvard alum and name
partner at a San Francisco law firm into hiring her as a paralegal
and helping her seek a pardon from the governor. Have you read
enough clichés yet? The show actually airs on the WTV
(Women's Television Network) which suggests that while television
may be anti lawyer it isn't anti woman lawyer. Well, perhaps.
The show's premise is that Alexandra
De Monaco (played by perky newcomer Elizabeth, or Lisa, Lackey)
was framed by her sleazy insurance company lawyer husband who
then absconded with five million dollars and her daughter. Even
after five years of wrongful incarceration, Alex is still perky
about life and the legal system, since she attended law school
over the 'net for five years and graduated "at the top of
her class." She is such a good jailhouse lawyer in fact
that she helps out both the other prisoners and the guards. In
gratitude, one other con gives her a cross, which she wears,
quite prominently, in every episode.
Released on parole, Alex sets
off perkily through San Francisco on a search for a job. Her
parole officer, a non-perky sort, finds her a job with a cleaning
service (this features prominently later in the two hour pilot
episode) but she has bigger plans. She approaches name partner
Hamilton Whitney III (Richard Thomas) for assistance with clearing
her name and eventually convinces him to hire her in a kind of
Erin Brockovich position (in which she mimics Brockovich's tenacity
and smarts, though not her dress or language). Alex then proceeds
to uncover the truth about the death of a corporate officer who
intended to blow the whistle on some shady dealings at his firm
(the name Enron drifts through the dialogue), fend off initial
hostility from one of the senior female lawyers (an Asian-American!)
and attentions from both one of the senior male lawyers and the
defendant corporation's sleazy counsel, and break through Whitney's
reserve by taking him to a diner at the airport (You go, girl!)
Throughout, she obeys only
those rules set out by the parole board, cheerfully ignoring
what Whitney instructs her to do. She breaks into the defendant
corporation's offices with the assistance of her friends from
the cleaning crew and catches employees shredding documents that
should have been turned over during discovery. She races into
the courtroom at the last minute to present the judge with an
incriminating memo written by the deceased corporate officer.
 This notion has been attractive
in fiction, film and history for years, but it makes a mockery
of the law. Alex insists she wants to be a lawyer, but only for
those folks she considers as innocent as herself, and apparently
she is the decision maker with regard to innocence.
Apparently, Whitney has no trouble buying into Alex's crusade
to better mankind and right the wrongs of the universe. In the
second episode, Human Trials, Alex discovers that a drug
company has been illegally using human subjects in clinical trials
for a new medication. She agrees to help one of the victims.
At the same time the company's parent corporation approaches
Whitney offering to hire his firm to handle some extensive and
lucrative deals. Their offer is intended to prevent Whitney and
his colleagues from taking the victim's case, or secondarily
from using information discovered through its representation
of the parent corporation against the drug company.
Through a series of convoluted and confusing discussions the
show presents viewers with the conflict of interest dilemma,
once again casting the legal profession as a whole as the culprit
which has created ethical rules of conduct that prevent victims
from getting justice. How does Whitney get around the problem?
He allows Alex to take the corporation's file from the office
and arranges to have the police tipped off that she has cocaine
in her vehicle. Of course she does not, but the district attorney
conveniently seizes the files and reads them, revealing the depth
of the corporation's evil intent. The episode ends happily with
the victim making good progress toward recovery, the evil corporation
in hot water and Alex ever more securely on the road to possible
bar admission.
The show never suggests the
possibility that, if a conflict exists, that another, equally
competent, firm could handle the victim's case. Such a firm would
certainly eventually discover the problem with the drug trials,
since while Alex may be bound by ethical rules, the other non-lawyers
involved in the case who are not employees of the firm are not.
Nor does it explain why, even if Whitney cannot be charged with
releasing private information about his client (the corporation)
Alex cannot. She has, after all, acted directly in contravention
of the rules binding her firm, and the rules that would bind
her in any case were she an attorney.
But the law is not ultimately the subject of Just Cause.
The series overtly poses some interesting questions about the
possibility of reconciling law and justice, but it does so from
the point of view of religion, philosophy, and ethics rather
than law. Of course it is not the first to do so, nor in its
trite presentation of good and evil is it particularly deft in
its presentation. The quite obvious symbolic casting of John-Boy
Walton as the head of the law firm and the extremely pretty and
lively actress who plays the heroine is intended to draw the
viewer into the notion that the law can and should be used in
the service of good, and that good is something we all agree
on. What the show does not do is consider whether a law firm
that takes only those clients that clearly fall on the side of
the angels will stay solvent. That would be an interesting ethical
dilemma for the show to consider.
But Just Cause is really a fantasy about the battle between
good and evil, not primarily a legal drama. It is a morality
play, with the courtroom as the stage. Since we know that bad
guys often get off and good guys sometimes are convicted, the
law is an excuse to allow the writers to explore larger issues
of natural law and higher morality and ethics. The unspoken message
is that the law is amoral and that some lawyers have no ethics,
not a particularly original notion. If this show succeeds it
will be on the strength of its attractive stars and its simple
moral message, not because of any originality in its concept,
writing, or presentation. It seems determined to miss a wonderful
opportunity to explore more deeply the role of religion and ethics
in the life of the lawyer and the law, the opportunity that a
series like The Practice uses to great advantage. It is,
frankly, Lawyers Lite.
Posted December 5, 2002
|


From Iron Maiden Trooper beer to Motorhead whisky: drink up with the best rock and metal beers, wines, whisky and gift ideas
by https://www.facebook.com/LouderPosts/Everything you need to throw the perfect rock'n'roll party this Christmas, courtesy of Iron Maiden, Motorhead, the Rolling Stones, Metallica, Marshall Amps and more
Whether you're buying for yourself or looking for gift ideas for rock fans, the last few years have seen an explosion in branded beers, wines and spirits – Iron Maiden's Trooper beer inspiring many other bands, from Metallica to Motorhead and Marshall amps, to try their hand at hard liquor for hard rockers.
Black Friday 2019 is coming and there might be booze bargains to be had - but until then here's a quick guide to what's available and where to get it. (And if you really want to keep it real, why not make your own home brew?)
Please drink responsibly and always remember Lemmy's rule of drinking: it's not what you drink, or how much you drink, it's how quick you drink it.
Iron Maiden Trooper 8 x 500ml pack
Back in 2015, we reported that Maiden had sold 10 million pints of Trooper, so gawd only knows what they must be at now. Amazon do it in 8 packs – a great starter beer guaranteed to get any self-respecting rock/metalhead party started.
Iron Maiden Sun and Steel Sake Lager Bottle, 12 x 330ml
The latest Iron Maiden beer takes it's name from the Piece Of Mind song of the same name, and Cameron's Brewery have described it as one of the most complex beers it has made in its history: a 4.8% ABV pilsner-style, double fermented hybrid lager made with both lager and saké yeasts. Drink it and get banzai'd.
Iron Maiden Trooper Gift Set
If you're looking for something a bit more special, you could go for the Trooper gift set. It won't get you drunk, but it will be the kind of collectible that'll no doubt sell for big bucks in years to come.
Iron Maiden Trooper Beer Mats
…And if you really, REALLY want to impress, then the final touch is Trooper beer mats. Rumours that Trooper cocktail umbrellas are coming soon are untrue and just made up by me, just then.
- The 50 Greatest Iron Maiden Songs
- Get your hands on the latest Iron Maiden shirts and merch
- The 10 best Iron Maiden videos
Motorhead Road Crew beer (330ml x12)
Raise a toast to Lemmy with the official Motorhead beer – a lovely citrus-y American pale ale that was rolled out last year.
Motorhead Single Malt Whisky 70 cl
One for special occasions. Made by Sweden's own malt whisky brewery Mackmyra Svensk, it's well reviewed and very collectible. A great gift for a Motorhead fan - or to yourself.
Scorpions Single Malt Whisky, 70cl
Scorpions also teamed up with Swedish distillery Mackmyra for their very own single malt. It’s matured in ex-bourbon barrels and oloroso sherry casks - with the twist that it was finished in sweet German cherry wine casks. Read all about it. View Deal
Motorhead Shiraz Rose Wine
You might not associate Motorhead with wine, but in the last couple of years of his life, Lemmy was a wine drinker, switching from JD & coke to rose wine on "doctor's orders" (it's made out of fruit, it's gotta be healthy, right?). This is official 'Head brand, also available in red.
Motorhead Gift Set Bundle
Featuring shot glasses, pint glass, bottle opener, hip flask and coaster set, this might seem pricey at first glance, but if you buy them all separately, it soon mounts up, a nice set for anyone born to raise hell.
- The Wit and Wisdom of Lemmy
- The best Motorhead t-shirts and merch
- Motorhead Studio Albums Ranked Worst to Best
Metallica Enter Night Lager (case of 12)
Available on their recent tour and actually pretty good – "a crisp and refreshing pilsner that has a richly hopped background and a sound bitterness on the finish" – Enter Night can be hard to find, but if you're quick, you can snap up a case of 12 here.
Marshall Amped Up lager
Coming in an array of packages that look like amp heads and combos, the most novel thing about Marshall's Amped Up lager is that it's really good. We know. We went to the launch party and tested it thoroughly.
Crystal Head Vodka 5cl Miniature
Can't afford £90 for the full 175 cl bottle? How about £12 for a cool gift idea? From Blues Brother Dan Ackroyd's Crystal Head, after you drink the vodka you have a great glass skull to keep, fill with whatever you fancy or use as a candle holder.
Over Hoof Spiced Rum Limited Edition by Cloven Hoof
A limited edition quality overproof dark rum, limited to just 666 bottle and coming with an alcoholic volume of 66.6%. "Sip to warm your soul or mix to blow your rocks off," say Cloven Hoof, the rising stars of rock and metal-friendly hard liquor.
The Pogues Whiskey
The Pogues Whiskey is actually a decent wee dram, if you like Irish whiskey, proven by the fact that it's available in decent pubs everywhere. It doesn't make you as poetic as Shane MacGowan but neither do your teeth fall out, so swings and roundabouts. Also available in a Gift Hamper. Lend me 10 pounds and I'll buy you a drink etc.

But, c'mon, it'll be worth it.

You know what they say: if you remember the 60s, you weren't really there.
AC/DC hipflask
An essential part of any gig-goer's armoury, this AC/DC hipflask will be your friend in times of need and bring succour to, well, that mate of yours who never has any money on him and depends on you to get the rounds in.
Skull shot glasses
Look! Shot glasses that are skull-shaped! Life is complete.
Sammy Hagar's Cooking & Partying Handbook
Listen, if there's a guy who knows how to have a good time, it's the Red Rocker: former Montrose and Van Halen singer Sammy Hagar. If you're having a party, do it properly: the Hagar way.


Registration number:
Dowerfield Limited
for the Year Ended 30 June 2019
Chartered Accountants
3 Manor Courtyard
Hughenden Avenue
High Wycombe
Buckinghamshire
HP13 5RE
Dowerfield Limited
Contents
|
Company Information |
|
|
Accountants' Report |
|
|
Balance Sheet |
|
|
Notes to the Unaudited Financial Statements |
Dowerfield Limited
Company Information
|
Director |
Mr C Mawson |
|
Registered office |
|
|
Accountants |
|
|
Page 1 |
Chartered Accountants' Report to the Director on the Preparation of the Unaudited Statutory Accounts of
Dowerfield Limited
for the Year Ended 30 June 2019
In order to assist you to fulfil your duties under the Companies Act 2006, we have prepared for your approval the financial statements of Dowerfield Limited for the year ended 30 June 2019 as set out on pages 3 to 9 from the company's accounting records and from information and explanations you have given us.
As a practising member firm of the Institute of Chartered Accountants in England and Wales (ICAEW), we are subject to its ethical and other professional requirements which are detailed at
http://www.icaew.com/en/members/regulations-standards-and-guidance/.
This report is made solely to the Board of Directors of Dowerfield Limited, as a body, in accordance with the terms of our engagement letter. Our work has been undertaken solely to prepare for your approval the accounts of Dowerfield Limited and state those matters that we have agreed to state to the Board of Directors of Dowerfield Limited, as a body, in this report in accordance with ICAEW Technical Release 07/16 AAF. To the fullest extent permitted by law, we do not accept or assume responsibility to anyone other than Dowerfield Limited and its Board of Directors as a body for our work or for this report.
We have not been instructed to carry out an audit or a review of the accounts of Dowerfield Limited. For this reason, we have not verified the accuracy or completeness of the accounting records or information and explanations you have given to us and we do not, therefore, express any opinion on the statutory accounts.
......................................
Chartered Accountants
Hughenden Avenue
High Wycombe
Buckinghamshire
HP13 5RE
|
Page 2 |
Dowerfield Limited
(Registration number: 01419687)
Balance Sheet as at 30 June 2019
|
Note |
2019 |
2018 |
|
|
Fixed assets |
|||
|
Tangible assets |
- |
|
|
|
Investment property |
|
|
|
|
|
|
||
|
Current assets |
|||
|
Debtors |
|
|
|
|
Cash at bank and in hand |
|
|
|
|
|
|
||
|
Creditors: Amounts falling due within one year |
( |
( |
|
|
Net current liabilities |
( |
( |
|
|
Total assets less current liabilities |
|
|
|
|
Creditors: Amounts falling due after more than one year |
( |
( |
|
|
Net assets/(liabilities) |
|
( |
|
|
Capital and reserves |
|||
|
Called up share capital |
100 |
100 |
|
|
Revaluation reserve |
20,610 |
20,610 |
|
|
Profit and loss account |
1,631 |
(21,403) |
|
|
Total equity |
22,341 |
(693) |
|
Page 3 |
Dowerfield Limited
(Registration number: 01419687)
Balance Sheet as at 30 June 2019
For the financial year ending 30 June 2019 the company was entitled to exemption from audit under section 477 of the Companies Act 2006 relating to small companies.
Director's responsibilities:
|
• |
|
|
• |
The director acknowledges his responsibilities for complying with the requirements of the Act with respect to accounting records and the preparation of accounts. |
These financial statements have been prepared in accordance with the special provisions relating to companies subject to the small companies regime within Part 15 of the Companies Act 2006.
These financial statements have been delivered in accordance with the provisions applicable to companies subject to the small companies regime and the option not to file the Profit and Loss Account has been taken.
Approved and authorised by the
.........................................
Director
|
Page 4 |
Dowerfield Limited
Notes to the Unaudited Financial Statements for the Year Ended 30 June 2019
|
General information |
The company is a private company limited by share capital, incorporated in England and Wales.
|
Accounting policies |
Summary of significant accounting policies and key accounting estimates
The principal accounting policies applied in the preparation of these financial statements are set out below. These policies have been consistently applied to all the years presented, unless otherwise stated.
Statement of compliance
These financial statements have been prepared in accordance with Financial Reporting Standard 102 Section 1A - 'The Financial Reporting Standard applicable in the UK and Republic of Ireland' and the Companies Act 2006.
Basis of preparation
These financial statements have been prepared using the historical cost convention except that as disclosed in the accounting policies certain items are shown at fair value.
Revenue recognition
Income comprises the fair value of rents received or receivable on the rental of investment properties. Income is shown net of sales/value added tax, returns, rebates and discounts.
Tax
The tax expense for the period comprises current and deferred tax. Tax is recognised in profit or loss, except that a change attributable to an item of income or expense recognised as other comprehensive income is also recognised directly in other comprehensive income.
The current income tax charge is calculated on the basis of tax rates and laws that have been enacted or substantively enacted by the reporting date in the countries where the company operates and generates taxable income.
Deferred tax is recognised in respect of all timing differences between taxable profits and profits reported in the financial statements.
Unrelieved tax losses and other deferred tax assets are recognised when it is probable that they will be recovered against the reversal of deferred tax liabilities or other future taxable profits.
Deferred tax is measured using the tax rates and laws that have been enacted or substantively enacted by the reporting date and that are expected to apply to the reversal of the timing difference.
Tangible assets
Tangible assets are stated in the statement of financial position at cost, less any subsequent accumulated depreciation and subsequent accumulated impairment losses.
The cost of tangible assets includes directly attributable incremental costs incurred in their acquisition and installation.
Depreciation
Depreciation is charged so as to write off the cost of assets, other than land and properties under construction over their estimated useful lives, as follows:
|
Page 5 |
Dowerfield Limited
Notes to the Unaudited Financial Statements for the Year Ended 30 June 2019
|
Asset class |
Depreciation method and rate |
|
Computer equipment |
Straight line over 3 years |
Investment property
Borrowings
Interest-bearing borrowings are initially recorded at fair value, net of transaction costs. Interest-bearing borrowings are subsequently carried at amortised cost, with the difference between the proceeds, net of transaction costs, and the amount due on redemption being recognised as a charge to the Profit and Loss Account over the period of the relevant borrowing.
Interest expense is recognised on the basis of the effective interest method and is included in interest payable and similar charges.
Borrowings are classified as current liabilities unless the company has an unconditional right to defer settlement of the liability for at least twelve months after the reporting date.
|
Tangible assets |
|
Furniture, fittings and equipment |
Total |
|
|
Cost or valuation |
||
|
At 1 July 2018 |
|
|
|
At 30 June 2019 |
|
|
|
Depreciation |
||
|
At 1 July 2018 |
|
|
|
Charge for the year |
|
|
|
At 30 June 2019 |
|
|
|
Carrying amount |
||
|
At 30 June 2019 |
- |
- |
|
At 30 June 2018 |
|
|
|
Investment properties |
|
2019 |
|
|
At 1 July |
|
The property was valued by the director at 30 June 2019.
|
Page 6 |
Dowerfield Limited
Notes to the Unaudited Financial Statements for the Year Ended 30 June 2019
|
Debtors |
|
2019 |
2018 |
|
|
Trade debtors |
|
|
|
Prepayments |
- |
|
|
Other debtors |
- |
|
|
|
|
|
Page 7 |
Dowerfield Limited
Notes to the Unaudited Financial Statements for the Year Ended 30 June 2019
|
Creditors |
Creditors: amounts falling due within one year
|
Note |
2019 |
2018 |
|
|
Due within one year |
|||
|
Bank loans and overdrafts |
|
|
|
|
Trade creditors |
|
- |
|
|
Taxation and social security |
|
|
|
|
Accruals and deferred income |
|
|
|
|
|
|
Creditors: amounts falling due after more than one year
|
Note |
2019 |
2018 |
|
|
Due after one year |
|||
|
Loans and borrowings |
|
|
|
Share capital |
Allotted, called up and fully paid shares
|
2019 |
2018 |
|||
|
No. |
£ |
No. |
£ |
|
|
|
|
100 |
|
100 |
|
Page 8 |
Dowerfield Limited
Notes to the Unaudited Financial Statements for the Year Ended 30 June 2019
|
Loans and borrowings |
|
2019 |
2018 |
|
|
Non-current loans and borrowings |
||
|
Bank borrowings |
|
|
|
Other borrowings |
|
|
|
|
|
|
2019 |
2018 |
|
|
Current loans and borrowings |
||
|
Bank borrowings |
|
|
|
Related party transactions |
|
Other transactions with directors |
At 30 June 2019, the company owed the director £230,285 (2018: £242,928). The amount is included in creditors amounts falling due in more than one year. There are no repayment terms and no interest is charged.
|
Page 9 |


Sleeping is one of the most
mysterious yet important activity in our life – it costs us 25 years in average
lifetime. However, the quality of sleeping and the habit of sleeping are largely ignored
in public awareness. According to the surveys, about one third of the adults in the US
sleep less than the suggested 7 hours per day1.; in the UK, 32% people admit
that they
sleep poorly and 14% have used OTC (over-the-counter) remedies2. It seems
that young
people suffer more from sleeping issues: according to a survey on people under 44 in
China, only one in ten interviewees say that they can sleep through the night, and 91.4%
say that they do not feel relaxed and energetic after sleep 3.
A CDC report states that the ratio of suffering
depression or heart attack in short sleep group (<7 hours) is about 1.5 times of that of
the sufficient sleep group, and insufficient sleep would also lead to the increased risk
in having stroke, cancer and diabetes, etc4. Sleep is important, but it is
of unaware
importance.
Melatonin is a hormone secreted by the pineal gland
and controlled by the suprachiasmatic nuclei (SCN) whose endogenous rhythm is entrained
to the light/night period. Melatonin carries the information about daily light/dark
cycle and spread that message to the whole body through bloodstream. According to the
previous research, melatonin not only plays as a very robust biochemical signal of night
to synchronize the circadian rhythms, it may also take part in the regulation of human
seasonal rhythms, immune function, antioxidative defenses, hemostasis and glucose
regulation etc. The regulating system of melatonin is complex, and the physiological
function of melatonin is of great variety.
Since melatonin is a hormone secreted by our body
naturally and has close liaison with sleeping, it becomes an ideal drug of regulating
sleep and tackling sleeping disorders. However, nowadays most of the melatonin is
chemically synthesized, which employs complex steps yet obtains low yield, bringing the
side effects of hazardous co-products, as well as low energy efficiency 5.
Biosynthesis
of melatonin would avoid the production of toxic compounds and reduce the possible
pollution; also, the great compatibility with human body enables long-term effect and
easy modulation. Thus, we tried to build the E. coli that could synthesis melatonin, and
coupling it with repressilator to achieve periodic production and secretion of melatonin
in human body.
The biosynthesis of melatonin from tryptophan needs 4 kinds of reaction, including 5-hydroxylation, decarboxylation, acetylation and transmethylation. However, the sequence of these four kinds of reaction differs in different species. Based on the previous study of serotonin production from tryptophan 6 and melatonin synthesis from serotonin7. we chose to apply the biosynthesis pathway of melatonin in Figure1 in our project. At first, tryptophan decarboxylase (TDC) catalyzes tryptophan into tryptamine. Next, tryptamine is converted into serotonin by tryptamine 5-hydroxylase (T5H). And then, serotonin N-acetyltransferase (SNAT) catalyzes serotonin to N-acetylserotonin (NAS) followed by the action of caffeic acid O-methyltransferase (COMT), resulting in the synthesis of O-methylated NAS, also known as melatonin
Fig. 1 Biosynthesis pathway of melatonin
Then, how do we get these four enzymes expressed to produce enough melatonin periodically? Firstly, in order to couple the biosynthesis of melatonin with repressilator, the last enzyme, COMT, is under the regulation of promoter pTetR, a key part in the repressilator. In this case, the expression of COMT only occurs during the period when the inhibition of TetR is lifted, and melatonin can be produced periodically. Secondly, we want to use mathematical modelling to obtain the optimal ratio of the four enzymes with a higher yield of N-acetylserotonin (NAS), and to choose the combination of the constitutive promoters for expressions of the first three enzymes based on this modeling result. This could reduce the extra energy consumption caused by excessive exogenous protein expression as well as the impact on basic growth metabolism of cells, and accumulate enough NAS. (Fig.2)
Fig. 2 Schematic diagram of our design
To facilitate purification and expression identification, we assembled the coding sequence of each enzyme with pET15b containing an N-6x His tag, and results of colony PCR and sequencing demonstrated that we successfully constructed these plasmids.(Fig.1)
Fig.3 Electrophoresis result of constructed plasmid of (1) pET15b-TDC, (2)pET15b-T5H, (3)pET15b-SNAT, (4) COMT
We purified these four enzymes by affinity chromatography with Ni-NTA Resin and concentrated the purified protein with superfiltration tubes to determine whether these four enzymes were expressed in E. coli BL21 (DE3) respectively. And the results showed that TDC, SNAT and COMT has been expressed successfully under the regulation of promoter pT7 in BL21(DE3). (Fig.4) However, T5H seemed not to be expressed successfully. Thus, we used western blot to further confirm the expression of T5H. Sadly, the results of western blot analysis indicated that T5H might not be expressed successfully in E.coli, because the target band (~70kDa) of T5H existed not only in the line1 (20x concentrated T5H purified by affinity chromatography) and line 2(supernatant of cell lysate (E.coli with pET15b-T5H)), but also in the negative control line 3(supernatant of cell lysate (E.coli without pET15b-T5H)).(Fig.5) In addition, there existed a light target band in the line 7(Fig.6), and a obvious band in the line 1 and line 3 respectively. the SDS-PAGE result indicated that pSB1C3-pTet-COMT could be expressed in E,coli, but most expressed protein were insoluble. This may be caused by constitutive overexpression with a high amount, which showed the need of modeling to determine a optimize proportion of enzymes to some extent.(Fig.6)
Fig.4 SDS-PAGE result for the expression of four enzymes in
E.coli BL21(DE3).
(1) supernate of cell lysate containing TDC;
(2) 10x concentrated purified TDC
(56kDa);
(3) supernate of cell lysate containing T5H;
(4)10x concentrated purified
T5H (71kDa) ;
(5)supernate of cell lysate containing SNAT;
(6) 10x concentrated
purified SNAT (23kDa);
(7)10x concentrated purified COMT(40kDa);
(8) 10x
concentrated purified cell lysate of BL21(DE3);
(9)supernate of cell lysate of
BL21(DE3).
Fig.5 immunoblot analysis result for the expression of T5H in
E.coli BL21(DE3).
(1) 20x concentrated T5H purified by affinity chromatography;
(2) supernatant of
cell lysate (E.coli with pET15b-T5H);
(3) supernatant of cell lysate (E.coli without
pET15b-T5H).
Fig.6 SDS-PAGE result for the purification of pSB1C3-pTet-COMT
in E.coli BL21(DE3) via affinity chromatography.
x
(1) cell lysate;
(2) supernatant of cell lysate;
(3) precipitate of cell lysate;
(4)
flow through;
(5) wash;
(6) elution;
(7) 10x concentrated elution;
(8) positive
control: COMT protein.
To verify the biological function of these four enzymes expressed in E.coli, we used high performance liquid chromatography (HPLC) to analyze tryptophan, tryptamine, serotonin, NAS and melatonin content in extracellular medium fraction of E.coli containing these plasmids respectively and wild-type E.coli BL21(DE3). Tryptophan, tryptamine, serotonin (5-hydroxyltryptamine, 5-HT), NAS and melatonin were identified on the basis of retention times related to standard sample. Content was determined by integrating peak areas and converted to concentration. According to the retention time of the standard sample mix of tryptophan and tryptamine, tryptamine compound of extracellular medium from culture of E.coli containing pET15b-TDC was confirmed, which meant TDC expressed in E.coli could function properly.(Fig. 7) Likewise, the biological function of SNAT and COMT expressed in E.coli were confirmed as well. However, the function of T5H could not be verified by us again, because the retention time of 5-HT was similar to a peak of something unknown existed in extracellular medium fraction of E.coli’s culture.
Fig.7 HPLC analysis results of TDC.
(Top) Supernatant fraction of overnight culture of WT BL21 in LB medium at 20℃ with
1mM IPTG and 1mM tryptophan;
(Middle) Supernatant fraction of overnight culture of TDC overexpressed BL21 in LB
medium at 20℃ with 1mM IPTG and 1mM tryptophan;
(Bottom) Standard sample of the mix of 1mM tryptophan and 1mM tryptamine.
Fig.8 HPLC analysis results of T5H.
(Top) Supernatant fraction of overnight culture of WT BL21 in LB medium at 20℃ with
1mM IPTG and 1mM tryptamine;
(Middle) Supernatant fraction of overnight culture of T5H overexpressed BL21 in LB
medium at 20℃ with 1mM IPTG and 1mM tryptamine;
(Bottom) Standard sample of the mix of 1mM tryptamine and 1mM serotonin.
Fig.9 HPLC analysis results of SNAT.
(Top) Supernatant fraction of overnight culture of WT BL21 in LB medium at 20℃ with
1mM IPTG and 1mM serotonin;
(Middle) Supernatant fraction of overnight culture of SNAT overexpressed BL21 in LB
medium at 20℃ with 1mM IPTG and 1mM serotonin;
(Bottom) Standard sample of the mix of serotonin and NAS
Fig.10 HPLC analysis results of COMT.
(Top) Supernatant fraction of overnight culture of WT BL21 in LB medium at 20℃ with
1mM IPTG and 1mM NAS;
(Middle) Supernatant fraction of overnight culture of TDC overexpressed BL21 in LB
medium at 20℃ with 1mM IPTG and 1mM NAS;
(Bottom) Standard sample of the mix of tryptophan and NAS.
1. Centers for Disease Control and Prevention. 2017. CDC – Data and
Statistics – Sleep and Sleep Disorders.
Retrieved from https://www.cdc.gov/sleep/data_statistics.html
2.The Sleep Council. 2013. The Great British Bedtime Report.
Retrieved from https://www.sleepcouncil.org.uk/wp-content/uploads/2013/02/The-Great-British-Bedtime-Report.pdf
3.China Sleep Research Association. 2017. 2017 China Youth Sleeping Quality White Paper
[in Chinese].
Retrieved from http://news.qq.com/cross/20170320/4ZtR8R31.html
4.Claustrat, B., Brun, J., & Chazot, G. The basic physiology and pathophysiology of
melatonin. Sleep Medicine Reviews, 9(1), 11–24 (2005).
5.Flaugh, M. E., Crowell, T. A., Clemens, J. A., & Sawyer, B. D. Synthesis and
evaluation of the antiovulatory activity of a variety of melatonin analogues. Journal of
Medicinal Chemistry, 22(1), 63–69 (1979).
6. Park, S. et al. Production of serotonin by dual expression of tryptophan
decarboxylase and tryptamine 5-hydroxylase in Escherichia coli. Appl. Microbiol.
Biotechnol. 89, 1387–1394 (2011).
7. Byeon, Y. & Back, K. Melatonin production in Escherichia coli by dual expression of
serotonin N-acetyltransferase and caffeic acid O-methyltransferase. Appl. Microbiol.
Biotechnol. 100, 6683–6691 (2016).


Store Address or Subhead
Remember to set links for the Title, the CTA below, and the image. Set "Alt" text for all images too.
Explore ►
|
|
|
|
|
|
|
|
Store Address or Subhead
Remember to set links for the Title, the CTA below, and the image. Set "Alt" text for all images too.
Explore ►
|
|
|
|
|
Store Address or Subhead
Remember to set links for the Title and the image. Set "Alt" text for all images too.
Store Hours:
Monday – Saturday, 10am – 7pm
Sunday, 11am – 6pm
|
|
|
|
|
|
|
|
Store Address or Subhead
Remember to set links for the Title and the image. Set "Alt" text for all images too.
Store Hours:
Monday – Saturday, 10am – 7pm
Sunday, 11am – 6pm
|
|
|
|
|
|
|


With the deffunction construct, new functions may be defined directly in
XSI. Deffunctions are equivalent in use to other functions in XSI.
The only differences between user-defined external functions and
deffunctions are that deffunctions are written in XSI and executed
by XSI interpretively and user-defined external functions are written
in an external language, such as C, and executed by XSI directly.
Also, deffunctions allow the addition of new functions without having to
recompile and relink XSI.
The syntax of the deffunction construct is:
(deffunction <name> [<comment>]
(<regular-parameter>* [<wildcard-parameter>])
<action>*)
<regular-parameter> ::= <single-field-variable>
<wildcard-parameter> ::= <multifield-variable>


Trump Questions Roger Stone Verdict as Russia Hoaxers Go Free
by Charlie SpieringPresident Donald Trump said that political operative Roger Stone’s jury verdict issued Friday was unfair, pointing to a “double standard.”
“So they now convict Roger Stone of lying and want to jail him for many years to come,” Trump wrote on Twitter.
Roger Stone was convicted of all seven counts brought by Special Counsel Robert Mueller, including false statements to Congress, obstruction of justice, and witness tampering regarding his contact with WikiLeaks operatives during the 2016 elections.
Trump questioned why all of the bureaucrats involved in the Russia hoax such as “Crooked” Hillary Clinton, James Comey, Peter Strzok, Lisa Page, Andrew McCabe, John Brennan, James Clapper, ‘Shifty’ Adam Schiff, Bruce Ohr, Nellie Ohr, Christopher Steele, and Robert Mueller all remained free, despite what he described as obvious lies.
“Didn’t they lie?” Trump asked. “A double standard like never seen before in the history of our Country”:


this link is no good ;-[
maybe it has expired, or it was used before. or perhaps the code is wrong. (copy-paste error?)


Before Change
num_samples = self._network.num_noise_samples
num_batch_samples = num_time_steps * num_samples
num_classes = numpy.int64(self._network.vocabulary.num_classes())
random = self._network.random
if self._network.noise_probs is None:
// The upper bound is exclusive, so this always creates samples that
// are < num_classes.
sample = random.uniform((num_batch_samples,)) * num_classes
sample = sample.astype("int64")
else:
class_probs = self._network.noise_probs[None, :]
// We could repeat the distribution for each time step, and sample k
// noise words per time step. Since k < number of outputs, we would
// never have a problem with sampling without replacement.
// Unfortunately that is very inefficient.
sample = multinomial(random, class_probs, num_batch_samples)
sample.reshape([num_time_steps, num_samples])
// For some reason (maybe a rounding error) it may happen that the
// sample contains a very high or negative value.
sample = tensor.maximum(sample, 0)
sample = tensor.minimum(sample, num_classes - 1)
sample = sample.reshape([num_time_steps, num_samples])
return sample, self._get_target_seq_preact(layer_input, sample)
def _get_shared_sample_tensors(self, layer_input):
After Change
num_samples = self._network.num_noise_samples
num_batch_samples = num_time_steps * num_samples
num_classes = numpy.int64(self._network.vocabulary.num_classes())
noise_sampler = self._network.noise_sampler
// Sampling k noise words per time step is inefficient with multinomial.
sample = noise_sampler.sample(1, num_batch_samples)
sample = sample.reshape([num_time_steps, num_samples])
return sample, self._get_target_seq_preact(layer_input, sample)
def _get_shared_sample_tensors(self, layer_input):


--- layout: page title: "Index" description: "" paginate: 3 --- {% include JB/setup %}
{{ post.date | date: '%Y-%m-%d' }}


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Makes 6 pasties
Using chapati dough instead of pastry adds a wholesome flavour to these pasties, as well as an authentic Indian touch.
Preheat the oven to 220C/425F/Gas 7.
Start by making the chapati dough. Mix the flour and salt together in a bowl. Add the oil then gradually add 160ml/5½fl oz water to form a dough.
Knead the dough on a lightly floured work surface for 5-10 minutes, until elastic and smooth. Place in an oiled bowl and leave to rest for 30 minutes.
To make the filling, squeeze the roasted garlic cloves from their skins into a bowl. Add the ginger, salt and garam masala. Mix to combine. Add the tomatoes and stir. Gently stir the cod portions into the mixture to coat.
Heat the oil in a large frying pan. When the oil is hot, add the carom seeds and cook until they darken in colour. Place the coated cod pieces into the pan and pour over the tomato mixture. Once the sauce begins to boil, reduce the heat and simmer for three minutes. Turn the cod and cook for a further 3-4 minutes, or until the cod is just cooked.
Remove the cod from the pan and set aside. Cook the sauce until the volume of liquid has reduced to a thick sauce. Tip the chickpeas into the sauce and stir. Remove from the heat and set aside to cool.
Divide the chapati dough into six equal pieces. Roll each piece into a ball, then use a rolling pin to roll each ball into a thin disc, about 18cm/7in in diameter.
Take the cooled sauce and flake the cod into it.
Place spoonfuls of the filling into the centre of the chapati discs. Brush the edges with water. Bring the edges of the dough together around the filling and crimp the top to seal.
Place on a baking tray and bake for 30-35 minutes, or until the dough is crisp and golden-brown.


Problem Description
Given two sorted arrays A and B of size m and n respectively. Find the k-th smallest elements in the union of A and B. You can assume that there are no duplicates. (Subproblem of LC No.4)
For example if A = [10, 20, 40, 60] and B =[15, 35, 50, 70, 100] and K = 4 then solution should be 35 because union of above arrays will be C= [10,15,20,35,40,50,60,70,100] and fourth smallest element is 35.
Brute Force (Trivial Solution)
The trivial solution for this problem can be observed from above example. Merge two arrays to a single sorted array the k-th element can be accessed directly. Example shows C is merged from A and B and 35 is 4th element in C. If reader knows the merge sort algorithm, O(m+n) space complexity should be concluded (length of C). Likewise, time complexity is O(m+n) as well.
Slightly Better Solution
Derived from trivial solution, we can apply two pointers idea in merge sort. But instead of actually merging two arrays into a single sorted array, we merely traverse both sorted arrays k steps in order to find kth smallest element. Specifically, the pointer that has smaller value of two should increment one step forward. After k steps traversal, the kth smallest element will be found. This solution is extra-space-free with total time complexity O(k) (k steps traversal)
Awesome Solution among All
We know that n and m can be extremely large, so as the k. Linear complexity is still not ideal. Since the two arrays are sorted, we should somehow take advantage of this to obtain a logarithmic complexity. When we come up with logarithmic complexity, the first thing we should be able to consider is binary search.
Basically, binary search achieves logarithmic complexity by separating input space into two halves in each iteration. The next iteration we are supposed to throw away one half of the array then do the same things on the other half. But how do we exactly apply binary search in two sorted arrays with different size? That can be a tricky part.
Consider an initial guess that how the numbers that smaller than kth element distributed in two arrays. If they are evenly distributed in two arrays, that is, k/2 elements that smaller or equal than kth element in array A and the rest of k - k/2 elements in array B (Why k - k/2 instead of k/2? Consider k is an odd number). It is simple to conclude that the larger one between A[k/2] and B[k/2] is the kth element. But in the case that they are not evenly distributed, that does not work out.
Let’s say the k/2 index in array A is i and the k - k/2 index in array B is j. In general, there are three cases (here I use 0 based indexing):
- A[i-1] > B[j-1]: The portion of B[0:j-1] (j-1 inclusive) can be discarded, since this portion is strictly smaller than A[i-1] The other portion we can discard is A[i:len(A)] (i inclusive). The reason is that A[i-1] is definitely larger than len(B[0:j-1]) + len(A[0:i-2]) elements and there is no duplicates. If kth element locates in A[i:len(A)], we will get a contradiction that kth smallest element in the position that larger than k elements and that’s apparently not true. Figure below shows how it works:
- A[i-1] < B[j-1]: This case is the reverse case of above. Figure below shows how it works:
- Base case:
- Consider if k equals to 1. The smallest number between A[k-1] and B[k-1] should be returned (0 based indexing).
- As long as either of two arrays has been completely discarded, we can just return kth smallest element in the other array.
From now on, we are all set for coding.
def kth_smallest(A, B, k):
if k == 0 or (len(A) == 0 and len(B) == 0) or (k > len(A) + len(B)):
print("Invalid input.")
return None
if k == 1:
return min(A[0], B[0])
if len(A) == 0 or len(B) == 0:
return A[k-1] if len(B) == 0 else B[k-1]
k_half = k // 2;
if len(A) < k_half:
i = len(A)
j = k - i
elif len(B) < k_half:
j = len(B)
i = k - j
else:
i = min(k // 2, len(A))
j = k - i
if A[i-1] > B[j-1]:
return kth_smallest(A[:i], B[j:], k-j)
else:
return kth_smallest(A[i:], B[:j], k-i)
return None
Time Complexity Analysis
The total time complexity has something to do with k in this solution at first glance. Suppose we have array A with size N and array B with size M, we are guaranteed to cut something from A and B more or less. Thus thinking under the entire input space M + N, the final time complexity should be O(log(M + N)) and the base of logarithmic doesn’t matter.


Styleguide code licensed under MIT, documents licensed under a Creative Commons Attribution 3.0 United States License. SecureDrop is an open source whistleblower submission system that media organizations can install to securely accept documents from anonymous sources.
Templates and styles based on the Reproducible Builds styleguide.


Products
Shoes
Shirts
Bags
Hats
Locations
More
Resources
Firebase Console
Contribute to this website
Report an issue
Log in
Admin Panel
Logout
Log In
Have an account?
Email
Password
Sign In
Create one
Email
Password
Confirm Password
Sign Up
Google
GitHub
Profile
users name
Email Verified
Verify


| Rank | Dataset | Breakdown | Location (URL) | Format | Info | Prev. (2014) | Score |
|---|---|---|---|---|---|---|---|
| 1 | Weather forecast |
|
https://donneespubliques.meteo... | GRIB V2 | n/a | 100% | |
|
URL: https://donneespubliques.meteofrance.fr/?fond=produit&id_produit=130&id_rubrique=51 Format: GRIB V2 The "Données de modèle atmosphérique global" includes the forecast of temperature, precipitation, and wind on a worldwide scale. Data are updated every 6 hour. It forecasts at H+102 hours. All the parameters are available here: https://donneespubliques.meteofrance.fr/client/document/description_parametres_modeles-arpege-arome-v2_184.pdf The "Modèle Arome" gives a more precise H+42 hours forecast on these parameters for mainland France. The dataset can be dowloaded here: https://donneespubliques.meteofrance.fr/?fond=produit&id_produit=131&id_rubrique=51 Historical temperature data is collected in more than 60 meteorological weather stations, every 3 hours since 1996, and it is made available here: https://donneespubliques.meteofrance.fr/?fond=produit&id_produit=90&id_rubrique=32 Revision: just added the complementary missing information on the historical temperature data that was further added by Claire-Marie Foulquier-Gazagnes via comment. |
|||||||
| 1 | Election Results |
|
https://www.etalab.gouv.fr/le-... | TXT | #1 100% | 100% | |
|
URL: https://www.etalab.gouv.fr/le-ministere-de-linterieur-ouvre-les-donnees-des-resultats-electoraux-par-bureaux-de-vote-depuis-1999 Format: TXT All the main elections results since 1999 are now available in open data at the polling station level (Bureaux de vote): Élections présidentielles : données 2002, données 2007 (available on Monday 09/28), données 2012 Élections législatives : données 2002, données 2007, données 2012 Élections européennes : données 1999, données 2004, données 2009, données 2014 Élections municipales : données 2001 (available on Monday 09/28), données 2008 (communes de plus de 3500 habitants), données 2014 Élections régionales : données 2004, données 2010 Élections départementales : données 2005 Élections cantonales : données 2001, données 2004, données 2008 (available on Monday 09/28), données 2011 Référendum : données 2000, données 2005 Revision: changed the url to point to an actual list of all corresponding elections datasets, instead of all of the Ministère de l'Intérieur's datasets which include many unrelated ones. |
|||||||
| 1 | Government Budget |
|
https://www.data.gouv.fr/fr/da... | CSV | #1 100% | 100% | |
|
URL: https://www.data.gouv.fr/fr/datasets/budget-de-letat-exercice-2014/ Format: CSV Revision: The originally proposed link pointed to a bunch of very different files including non budget ones, and only reflected the government's intended budget, before it was discussed and largely modified by the parliament (the data is from october 14th 2014, whereas the discussion lasted until the end of december : http://www.assemblee-nationale.fr/14/dossiers/loi_finances_2015.asp ). It seems better to reference data published by the Cour des Comptes which corresponds to the actual final government budget, programme by programme, published as a whole : https://www.data.gouv.fr/fr/datasets/budget-de-letat-exercice-2014/ |
|||||||
| 23 | National Statistics |
|
https://www.data.gouv.fr/fr/da... | CSV, XLS | #1 100% | 90% | |
|
URL: https://www.data.gouv.fr/fr/datasets/?sort=-created&organization=534fff81a3a7292c64a77e5c Format: CSV, XLS INSEE (national statistics institute) is quite a complex website that is somewhat difficult to navigate
|
|||||||
| 12 | Procurement tenders |
|
https://www.data.gouv.fr/fr/da... | XML | n/a | 90% | |
|
URL: https://www.data.gouv.fr/fr/datasets/boamp/ Format: XML Procurements data (both tenders and awarded contracts) is available as open data. However there are challenges with the data:
The dataset on 2014 procurement tenders is an extract of PLACE, the national procurement marketplace. It includes tenders name, description of the tenders and status of the buying unit, supplier name, award title, date of the notification (DAY/MONTH) city, zip code, value of the award, description of the award, if it was attributed to an SME. Data on procurement tenders by some sub-national entities (city, departments, regions) and independant administrative authorities are generally not present on data.gouv.fr but there are some, such as CNIL and the City of Poitiers. |
|||||||
| 24 | Legislation |
|
https://www.data.gouv.fr/fr/da... | XML | #19 70% | 70% | |
|
URL: https://www.data.gouv.fr/fr/datasets/legi-codes-lois-et-reglements-consolides/ Format: XML Data are now available online and for free. Regarding the license, it is now openly licensed but still subject to the 2002-1064 decree http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000413818 which, in theory, authorize the data owner to refuse to grant the license to a reuser. See http://rip.journal-officiel.gouv.fr/index.php/pages/juridiques |
|||||||
| 8 | Water Quality |
|
http://www.sante.gouv.fr/quali... | n/a | n/a | 65% | |
|
URL: http://www.sante.gouv.fr/qualite-de-l-eau-potable This data is on drinking water and is updated on a daily/weekly basis. Detailed data on water sources are also available on: - www.eaufrance.fr: documentation and surface water - www.ades.eaufrance.fr: on groundwater data |
|||||||
| 20 | Location datasets |
|
https://adresse.data.gouv.fr/d... | CSV | #1 100% | 65% | |
|
URL: https://adresse.data.gouv.fr/download/ Format: CSV NEW COMMENT FROM CMFG (ETALAB) : The national address database (BAN) fulfills the requirements to a larger extent as it gives coordinates for all addresses including their zipcodes. It exists in two versions of the base and the first one is the one that is taken into account in this submission (and not in the previous one). We believe this BAN ODBL version can be accepted as an official source because: - A link to the ODBL version of the BAN, distributed by OSM France, is provided on an official & governmental website: https://adresse.data.gouv.fr/download/ (second link at the bottom of the page) according to the terms of the official BAN convention signed between IGN, La Poste, Etalab and OSM France http://openstreetmap.fr/f/Convention%20BAN%2015%20avril%202015%20SCAN%20SIGNE.pdf - the data have the same source than the second version mentionned in the previous comment and is formated at and by Etalab (Prime Minister office for open data and open gov) PREVIOUS COMMENT FROM REGARDS CITOYENS : The previously registered "Base officielle des codes postaux" by La Poste https://www.data.gouv.fr/fr/datasets/base-officielle-des-codes-postaux/ does not match the new requirements as it only provides openly an association of zipcodes with ciies. Some cities have multiple zipcodes, so even by associating the data with the opened administrative borders database GEOFLA http://professionnels.ign.fr/geofla, we would not be able to get coordinates corresponding to zipcodes. Although another database could fulfill the requirements to a larger extant : the national address database BAN that gives coordinates for all addresses including their zipcodes. Unfortunately it exists under two different versions:
The latter dataset named "Base Adresse Nationale" requires registration for direct download and is supplied after form registration under a closed license (see http://www.savoirscom1.info/2015/04/ouverture-de-la-base-dadresses-nationale-ban-la-fete-gachee-par-une-licence-piege/ for a complete legal analysis). |
|||||||
| 30 | Pollutant Emissions |
|
http://www.airqualitynow.eu/co... | n/a | #1 100% | 45% | |
|
URL: http://www.airqualitynow.eu/comparing_home.php It seems that all the data is collected monthly but not released by the government. Although a web site of the European Commission publishes data for many cities in France http://www.airqualitynow.eu/comparing_home.php The previously registered dataset http://www.stats.environnement.developpement-durable.gouv.fr/Eider/series/export/csv.do from Ministère de l'Environnement only provides yearly aggregates at a national level by regions of the required air pollutants emissions. The dataset stopped in 2009 and no update has been published since. Moreover, whereas the dataset requires regular measures, the data offers historical mean annual data. We think this is sufficiently old and unprecise to not be considered here. Some cities provide data on the national OpenData platform, for example in Nantes http://data.nantes.fr/donnees/?keywords=pollution&sort_search=date, Lyon http://data.grandlyon.com/search/?Q=pollution or Saint-Malo https://www.data.gouv.fr/fr/datasets/indice-iqa-de-la-qualite-de-l-air/ but it is also updated yearly. In other cities such as Paris, this is closed data http://www.airparif.asso.fr/. Revision: completed the comment with more links and infos |
|||||||
| 45 | National Map |
|
n/a | Shapefile | #1 100% | 35% | |
|
Format: Shapefile Previous revision was proposing FranceRaster, which is only TIFF images, not matching the prerequisites here. After full examination of all open or not available data from IGN (national geography administration), BD TOPO as shapefiles seems the only dataset matching all the requirements of yearly updates, precision and contents. Some of the different contents can be accessed openly through some of the following databases but either with not enough precision or not enough updates. No combination of those allow to build the full requirements: - ROUTE500 http://professionnels.ign.fr/route500 (roads + national limits, no fresh update) - BD ALTI250 MNT http://professionnels.ign.fr/bdalti (moutains) - BD CARTO http://professionnels.ign.fr/bdcarto (roads + water + national limits, not open) |
|||||||
| 33 | Company Register |
|
n/a | xml, csv | #23 50% | 35% | |
|
Format: xml, csv The whole bulk data is available online under highly restricted conditions for 70 374 € : - http://www.sirene.fr/sirene/public/static/tarifs-rediffusion - http://www.sirene.fr/static-resources/doc/redifsirR2a.pdf |
|||||||
| 36 | Land Ownership |
|
n/a | n/a | n/a | 20% | |
|
The landowner name is not provided in order to protect owners' privacy in accordance to http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000886460 |
|||||||
| 8 | Government Spending |
|
n/a | n/a | #15 10% | 10% | |
|
Spending data at transnational level are collected and stored on the financial information system named CHORUS. Data is however not accessible online or offline to the public. |
Contributors
Reviewers
- Daniela Mattern
- Gil Zaretzer
- Pierre Chrzanowski
- Kamil Gregor
- Mor Rubinstein
- Zach Christensen
- anonymous
- Nisha Thompson
- Rebecca Sentance
- Tryggvi Björgvinsson
- Codrina Maria Ilie
Submitters
- Claire-Marie Foulquier-Gazagnes
- Georg Neumann
- Daniela Mattern
- Pierre Chrzanowski
- anonymous
- Regards Citoyens


frictional games
- Helsingborg, Sweden
- Founded 2006
- Thomas Grip and Jens Nilsson
games and tech
| (2007) | Penumbra: Overture | | (2008) | Penumbra: Black Plague | | (2008) | Penumbra: Requiem |
| HPL1 |
| (2010) | Amnesia: The Dark Descent | | (2013) | Amnesia: A Machine for Pigs |
| HPL2 |
| HPL3 |
amnesia: the dark descent
Modding soma
Level Editor
Modding soma
Model Editor
Modding soma
Material Editor
Modding soma
Particle Editor
Modding soma
- entry.hpc
- resources.cfg
- maps/00_basics/00_basics.hpm
- config/main_init.cfg
SPOILERS!
- Mild spoilers ahead
- Bits and pieces from the game
- First level in level editor
Demo time!
references
- http://frictionalgames.blogspot.de/2016/03/soma-6-months-later.html
- https://wiki.frictionalgames.com/hpl3/start
- https://www.youtube.com/watch?v=TGhwsa1k1LU
- http://www.adventureclassicgaming.com/index.php/site/interviews/293/
- http://www.frictionalgames.com/site/node/102


MSG_GEN_INTERACTION_INITIATE, MSG_GEN_INTERACTION_INITIATE_NO_DISTURB, MSG_GEN_INTERACTION_DISABLE_DISCARDING
For the most part, the Specific UI decides in what way Interactions should be initiated. For example, a popup built as a menu will create a menu title which, when activated, brings down the menu. A dialog box will create an activation trigger within the UI that, when activated, brings the dialog box on-screen. (Notice that it is meaningless to "initiate" a sub-group Interaction as these objects are not independently-displayable.)
You may wish to modify this behavior, either to prevent the user from directly initiating an Interaction, or to add additional ways to bring these Interactions on-screen.
Although in most cases the user is responsible for activating menus (by activating the menu title), an application may manually open a menu with
MSG_GEN_INTERACTION_INITIATE
.
A GIV_DIALOG Interaction may be initiated in several ways:
MSG_GEN_INTERACTION_INITIATE
or a
MSG_GEN_INTERACTION_INITIATE_NO_DISTURB
to bring the dialog on-screen. You may also put Interactions on the GAGCNLT_WINDOWS GCN list to automatically bring them on-screen when an application is launched. Any Interaction must be fully usable and enabled to be brought up in such a manner. Note: If a dialog box is also marked GIA_INITIATED_VIA_USER_DO_DIALOG, it should be initiated with
UserDoDialog()
,
not
MSG_GEN_INTERACTION_INITIATE. These methods are exclusive.
UserDoDialog()
if it is set GIA_INITIATED_VIA_USER_DO_DIALOG. This routine is useful when you wish to block the calling thread until the user responds to the dialog box. A dialog box initiated via
UserDoDialog()
should also be marked GIA_NOT_USER_INITIATABLE. Note that this dialog box may only be brought up with
UserDoDialog()
; it cannot be brought up with MSG_GEN_INTERACTION_INITIATE.
Within most specific UIs a trigger will appear whose sole function is to initiate the dialog. Activating the trigger will bring the dialog box on-screen. You can prevent the display of this default trigger by setting the Interaction GIA_NOT_USER_INITIATABLE in its
GII_attrs
instance field. (See GenInteraction Attributes
).
Your GenInteraction subclass may intercept
MSG_GEN_INTERACTION_INITIATE
to determine when a dialog is being brought on-screen and then perform any needed actions at that time. This is useful if you need to update the UI objects within the dialog before building its visual implementation. You should always call the superclass
after
setting any of this initial data to avoid unnecessary visual updates of the dialog box.
MSG_GEN_INTERACTION_INITIATE_NO_DISTURB
may also be subclassed, but there is little need to intercept it.
GenInteraction dialog boxes may be marked
HINT_INTERACTION_DISCARD_WHEN_CLOSED
.This hint informs the system to discard the dialog box's object block when it is no longer being used, but there is a timing problem if the dialog box needs to be initialized before it is brough on-screen. (The system will think it is off-screen and discard it before initialization is complete.)
In that case, send the dialog box
MSG_GEN_INTERACTION_DISABLE_DISCARDING
to ensure that the dialog box doesn't get discarded between the time that the initialization is performed and the time when the dialog box appears on-screen.
void MSG_GEN_INTERACTION_INITIATE();
This message brings an Interaction on-screen, giving it focus and target if possible. The Interaction must be both within the generic tree and set GS_USABLE before receiving this message. The Interaction must also be fully usable and enabled before it can be initiated. Interactions marked GIA_INITIATED_VIA_USER_DO_DIALOG should not be sent this message. To initiate those dialogs, you must use
UserDoDialog()
. (See Thread Blocking Routines
.)
You may intercept this message to determine when a dialog is coming on-screen. This is useful if you need to set up UI gadgetry in the dialog to show some initial status. The gadgetry should be set up before calling the superclass to avoid unnecessary visual updating of the object.
Source: Unrestricted.
Destination: Any GS_USABLE GenInteraction, though usually only meaningful for GIV_DIALOG interactions.
Parameters: None.
Return: Nothing.
Interception: May be intercepted to find out when an Interaction is appearing on-screen. This is useful for cases in which the UI gadgetry of a dialog box needs to be set up before being visually built. The superclass should be called after setting up the UI to avoid unnecessary visual changes once the interaction is on-screen.
void MSG_GEN_INTERACTION_INITIATE_NO_DISTURB();
This message brings an Interaction on-screen but does not give the dialog the focus or target. This message may place the dialog behind other windows. The Interaction must be both within the generic tree and set GS_USABLE before receiving this message. The Interaction must also be fully usable and enabled before it can be initiated. Interactions marked GIA_INITIATED_VIA_USER_DO_DIALOG should not be sent this message. To initiate those dialogs, you must use
UserDoDialog()
. (See Thread Blocking Routines
.)
Source: Unrestricted.
Destination: Any GS_USABLE GenInteraction, though usually only meaningful for GIV_DIALOG Interactions. Not allowed for GIA_MODAL or GIA_INITIATED_VIA_USER_DO_DIALOG Interactions.
Parameters: None.
Return: Nothing.
Interception: May be intercepted to find out when an Interaction is appearing on-screen. This is useful for cases in which the UI gadgetry of a dialog box needs to be set up before being visually built. The superclass should be called after setting up the UI to avoid unnecessary visual changes once the interaction is on-screen.
void MSG_GEN_INTERACTION_DISABLE_DISCARDING();
This message informs a Interaction with
HINT_INTERACTION_DISCARD_WHEN_CLOSED
that it should not be discarded until it has been brought on-screen. This message is used to ensure that a dialog box that needs initialization is not discarded between the time that initialization commences and the time that the dialog finally appears on-screen.
Source: Unrestricted.
Destination: Any GIV_DIALOG GenInteraction that is marked
HINT_INTERACTION_DISCARD_WHEN_CLOSED
and needs initialization.
Parameters: None.
Return: Nothing.


◆ toString()
| static String com.aarrelaakso.drawl.SVG.toString |
( |
SisuBigDecimal |
number | ) |
|
|
static |
Convert a number to a string for SVG.
The number will be represented with as many decimal points as necessary for SVG and no more than SVG can handle.
- Parameters
-
| number | the number to convert. |
The documentation for this class was generated from the following file:
- /mnt/d/OneDrive/Documents/src/drawl/src/main/java/com/aarrelaakso/drawl/SVG.java


MsgGrowl is a clean CSS3 notification system for alerting users to site information, errors, warnings, and successes.
To get started with MsgGrowl, add the msgGrowl.css stylesheet to your document:
<link rel="stylesheet" href="msgGrowl.css" type="text/css" charset="utf-8" />
Also add the MsgGrowl javascript file to your document:
<script src="msgGrowl.js"></script>
Then add the images folder contained in this download to your project and make sure all the image paths in the msgGrowl.css file are correct.
For support email the author through his Code Canyon author page http://codecanyon.net/user/MadeByAmp
$.msgGrowl ({ title: 'Header' // Optional , text: 'Lorem ipsum dolor sit amet, consectetur.' });
$.msgGrowl ({ type: 'info' , title: 'Header' , text: 'Lorem ipsum dolor sit amet, consectetur.' });
$.msgGrowl ({ title: 'Header' , text: 'Lorem ipsum dolor sit amet, consectetur.' , position: 'bottom-right' });
$.msgGrowl ({ title: 'Header' , text: 'Lorem ipsum dolor sit amet, consectetur.' , sticky: true });
$.msgGrowl ({ title: 'Header' , text: 'Lorem ipsum dolor sit amet, consectetur.' , onOpen: function () { // Callback } , onClose: function () { // Callback } });
| Option Name | Default Value | Explanation |
|---|---|---|
| type | empty string | Designates the type of notication being displayed. Options are an empty string, info, success, error, warning. |
| title | empty string | Optional title which is displayed above the notification text. |
| text | empty string | Required text message for notification. |
| lifetime | 6500 | Time in milliseconds a non-sticky notification will stay on the screen. |
| sticky | false | True/false. When set to true the notification will stay on the screen until closed by the user. |
| position | bottom-right | Designates the region notifications will display in. Options are top-left, top-center, top-right, bottom-left, bottom-center, bottom-right. |
| closeTrigger | true | True/false. When set to true the notification will display a small x in the corner allowing the user to manually close the notification. |
| onOpen | function () {} | Callback function before the notification is opened. |
| onClose | function () {} | Callback funciton after the notication has been removed. |


Source code for acrg_plottools
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 8 12:13:25 2017
@author: as13988
"""
# Generates N HSV or RGB tuples spread over colour space
[docs]class generatecolours:
def __init__(self, N):
import colorsys
HSV_tuples = [(x*1.0/N, 0.5, 0.5) for x in range(N)]
RGB_tuples = map(lambda x: colorsys.hsv_to_rgb(*x), HSV_tuples)
self.RGB = RGB_tuples
self.HSV = HSV_tuples
# Code to set up input for contour plotting
# data: either an xarray DataArray containing lat and lon dimensions or a class containing lat and lon
# lon_range: manually set a lon range
# lat_range: manually set a lat range
# bottom_left: I don't know what the point of this option is!
# map_resolution: resolution of boundary database to use. Can be c (crude), l (low), i (intermediate),
# h (high), f (full) or None. If None, no boundary data will be read in. Resolution drops off by roughly
# 80% between datasets. Higher res datasets are much slower to draw. Default l
[docs]class plot_map_setup:
def __init__(self, data,
lon_range = None, lat_range = None,
bottom_left = False,
map_resolution = "l"):
import xarray
# Extract out the lats and lons
# Check if it's an x-array
if isinstance(data, xarray.DataArry):
lat = data.lat.values
lon = data.lon.values
else:
lat = data.lat
lon = data.lon
if lon_range is None:
lon_range = (min(lon), max(lon))
if lat_range is None:
lat_range = (min(lat), max(lat))
m = Basemap(projection='gall',
llcrnrlat=lat_range[0], urcrnrlat=lat_range[1],
llcrnrlon=lon_range[0], urcrnrlon=lon_range[1],
resolution='l')
if bottom_left == False:
lons, lats = np.meshgrid(lon,lat)
else:
dlon = lon[1] - lon[0]
dlat = lat[1] -lat[0]
lons, lats = np.meshgrid(lon - dlon,
lat - dlat)
x, y = m(lons, lats)
self.x = x
self.y = y
self.m = m