Chapter 15 Modules
Exercise 15.6.1
Example passing input$foo to reactive and it not working.
Solution. Solution
I don’t really know what this question is asking, but I think the point is to remember:
The main challenge with this sort of code is remembering when you use the reactive (e.g. x$value) vs. when you use its value (e.g. x$value()). Just remember that when passing an argument to a module, you want the module to react to the value changing which means that you have to pass the reactive, not it’s current value.
Where in this scenario, input$foo
is analogous to x$value
.
Exercise 15.6.2
Rewrite selectVarServer()
so that both data and filter are reactive. Pair it with a app function that lets the user pick the dataset with the dataset module, a function with an inputSelect()
that lets the user filter for numeric, character, or factor variables.
Solution. Solution
The modules datasetInput
, datasetServer
, and selectVarInput
are the same, as well as the find_vars
function.
We can start by creating selectFilterInput
which has the filtering options as choices, and selectFilterServer
which returns the filtering function given the selected choice string.
# create a filter selection input
selectFilterInput <- function(id) {
selectInput(NS(id, "filter"), "Filter",
choices = c("Numeric", "Character", "Factor"),
selected = "Numeric")
}
# switch the function to be applied within the server
selectFilterServer <- function(id) {
moduleServer(id, function(input, output, session) {
eventReactive(input$filter, {
switch(input$filter,
"Numeric" = is.numeric,
"Character" = is.character,
"Factor" = is.factor
)
})
})
}
Now we can update the selectVarServer
to take on an additional filter
argument, and change the update function to not only observe when the data
reactive changes but also our new filter
widget changes. Lastly we pass in the filter reactive to the find_vars
function.
selectVarServer <- function(id, data, filter) { # filter argument
moduleServer(id, function(input, output, session) {
observeEvent({
data()
filter() #observe changes in filter reactive
}, {
updateSelectInput(session, "var", choices = find_vars(data(), filter())) # filter as reactive
})
reactive(data()[[input$var]])
})
}
Putting it together, we add our new module to the UI and server, and by saving the result of the selectFilterServer
to filt
we can pass that to the selectVarServer
selectVarApp <- function() {
ui <- fluidPage(
datasetInput("data", is.data.frame),
# call the new filter UI
selectFilterInput("filter"),
selectVarInput("var"),
verbatimTextOutput("out")
)
server <- function(input, output, session) {
data <- datasetServer("data")
# store the filtering function as a reactive
filt <- selectFilterServer("filter")
# pass the reactive to the select module
var <- selectVarServer("var", data, filter = filt)
output$out <- renderPrint(var())
}
shinyApp(ui, server)
}
Exercise 15.6.3
The following code defines output and server components of a module that takes a numeric input and produces a bulleted list of three summary statistics. Create an app function that allows you to experiment with it. The app function should take a data frame as input, and use numericVarSelectInput()
to pick the variable to summarise.
summaryOuput <- function(id) {
tags$ul(
tags$li("Min: ", textOutput(NS(id, "min"), inline = TRUE)),
tags$li("Max: ", textOutput(NS(id, "max"), inline = TRUE)),
tags$li("Missing: ", textOutput(NS(id, "n_na"), inline = TRUE))
)
}
summaryServer <- function(id, var) {
moduleServer(id, function(input, output, session) {
rng <- reactive({
req(var())
range(var(), na.rm = TRUE)
})
output$min <- renderText(rng()[[1]])
output$max <- renderText(rng()[[2]])
output$n_na <- renderText(sum(is.na(var())))
})
}
Solution. Solution
We only need to add the code above to the selectVarApp()
example in the book, and adapt the app code to include the summaryOutput
instead of the verbatimTextOutput
, and on the server side pass var
to the summaryServer
function instead of to the text output.
selectVarApp <- function(filter = is.numeric) {
ui <- fluidPage(
datasetInput("data", is.data.frame),
selectVarInput("var"),
summaryOutput("summary")
)
server <- function(input, output, session) {
data <- datasetServer("data")
var <- selectVarServer("var", data, filter = filter)
summaryServer("summary", var)
}
shinyApp(ui, server)
}
selectVarApp()
Exercise 15.6.4
The following module input provides a text control that lets you type a date in ISO8601 format (yyyy-mm-dd). Complete the module by providing a server function that uses output$error to display a message if the entered value is not a valid date. The module should return a Date object for valid dates. (Hint: use strptime(x, “%Y-%m-%d”) to parse the string; it will return NA if the value isn’t a valid date.)
ymdDateUI <- function(id, label) {
label <- paste0(label, " (yyyy-mm-dd)")
fluidRow(
textInput(NS(id, "date"), label),
textOutput(NS(id, "error"))
)
}
Solution. Solution
We create a ymdDateServer
function that renders the error if strptime(input$date, "%Y-%m-%d")
is NA
.
ymdDateServer <- function(id, label) {
moduleServer(id, function(input, output, session) {
output$error <- renderText({
print(input$date)
print(strptime(input$date, "%Y-%m-%d"))
if (!is.na(strptime(input$date, "%Y-%m-%d")) | input$date == "") {
NULL
} else {
"Entered value is not a proper date"
}
})
})
}
We put the UI
and Server
code together in the ymdApp
function below:
Exercise 15.6.5
In radioExtraServer()
, return a list that contains both the value and whether or not it came from other.
Solution. Solution
We can adapt the reactive we return from radioExtraServer
to return both the reactive and whether it came from the primary button choices or not as a list.
radioExtraServer <- function(id) {
moduleServer(id, function(input, output, session) {
observeEvent(input$other, ignoreInit = TRUE, {
updateRadioButtons(session, "primary", selected = "other")
})
selected <- reactive({
if (input$primary == "other") {
input$other
} else {
input$primary
}
})
# return the selected reactive inside a list
# adding whether it came from primary or not
list(selected =
reactive({
if (input$primary == "other") {
input$other
} else {
input$primary
}
}),
primary =
reactive(input$primary != "other")
)
})
}
In doing so, we need to adapt the radioExtraApp
code to return extra$selected()
rather than extra
.
radioExtraApp <- function(...) {
ui <- fluidPage(
radioExtraUI("extra", NULL, ...),
textOutput("value")
)
server <- function(input, output, server) {
extra <- radioExtraServer("extra")
output$value <- renderText({
paste0("Selected: ", extra$selected())
})
}
shinyApp(ui, server)
}
radioExtraApp(c("a", "b", "c"))
Exercise 15.6.6
In wizardServer()
verify that the namespacing has been set up correctly by using two or more wizards in a single add, and checking that you can navigate through each wizard independently.


git sizer
Computes various Git repository size metrics and alerts you to any that might cause problems or inconvenience.
More information: home page
- Report only statistics that have a level of concern greater than 0:
git sizer
- Report all statistics:
git sizer -v
- See additional options:
git sizer -h


...
For more information about Topics click here.
For more information about Actionlibs click here.
For more information about Services click here.


Data Fields | |
| int | iSize |
| Size of the structure. | |
| int | iLine |
| Numerical value representing hardware I2C. | |
| int | iAddress |
| The 7-bit I2C slave device address, shifted one bit to the left. | |
| int | iOffset |
| The offset of the data from the address. | |
| int | iAction |
| Read from or write to slave device. ADL_DL_I2C_ACTIONREAD or ADL_DL_I2C_ACTIONWRITE or ADL_DL_I2C_ACTIONREAD_REPEATEDSTART. | |
| int | iSpeed |
| I2C clock speed in KHz. | |
| int | iDataSize |
| A numerical value representing the number of bytes to be sent or received on the I2C bus. | |
| char * | pcData |
| Address of the characters which are to be sent or received on the I2C bus. |
This structure is used to store the I2C information for the current adapter. This structure is used by the ADL_Display_WriteAndReadI2C() function.
| int ADLI2C::iSize |
Size of the structure.
| int ADLI2C::iLine |
Numerical value representing hardware I2C.
| int ADLI2C::iAddress |
The 7-bit I2C slave device address, shifted one bit to the left.
| int ADLI2C::iOffset |
The offset of the data from the address.
| int ADLI2C::iAction |
Read from or write to slave device. ADL_DL_I2C_ACTIONREAD or ADL_DL_I2C_ACTIONWRITE or ADL_DL_I2C_ACTIONREAD_REPEATEDSTART.
| int ADLI2C::iSpeed |
I2C clock speed in KHz.
A numerical value representing the number of bytes to be sent or received on the I2C bus.
| char* ADLI2C::pcData |
Address of the characters which are to be sent or received on the I2C bus.


The Best New Deals + Exclusive Offers from RetailMeNot!
Get Up to 70% Off Women’s Watches + Free 1-Day Shipping at Amazon! Offer Ends 5/12.
More top offers include:
1-800-Flowers.com: Up to 40% Off Mother’s Day Flowers & Gifts
Starbucks Store: Spring Sale Up to 20% Off + Free Shipping on $75 or More
Walmart: Baby Savings Spectacular Up to 30% Off + Free Shipping on $45 or More
& many more at www.retailmenot.com
Copyright 2013 RetailMeNot, Inc. 301 Congress Avenue, Suite 700, Austin, Texas 78701
To opt-out please reply to this email with UNSUBSCRIBE in the subject line.


--- layout: post title: Injecting a version number into WiX via TeamBuild date: '2009-07-11T17:58:00.033+02:00' author: Bart Jolling tags: - WiX - TeamBuild modified_time: '2012-02-23T09:46:12.486+01:00' blogger_id: tag:blogger.com,1999:blog-8436642170609457318.post-7809145166193203342 blogger_orig_url: https://bartjolling.blogspot.com/2009/07/injecting-version-number-into-wix-via.html --- I have found several ways of injecting a version number into Wix via TeamBuild, but most of them require way too much work. After a few days of experimenting I ended up with this solution. My TFSBuild.proj file contains the Major and Minor versions and a target "GenerateBuildNumber" to generate build and revision numbers. I use these to create a 'Versionnumber' property and add that to the <custompropertiesforbuild> property.
<propertygroup> <assemblymajorversion>2</assemblymajorversion> <assemblyminorversion>7</assemblyminorversion> <custompropertiesforbuild> SignAssembly=true;DelaySign=false;AssemblyOriginatorKeyFile=$(PrivateKeyLocation) </custompropertiesforbuild> </propertygroup> <target name="BuildNumberOverrideTarget" dependsontargets="GenerateBuildNumber"> <createproperty value="$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(GeneratedBuildNumber).$(GeneratedRevisionNumber)"> <output taskparameter="Value" propertyname="Versionnumber" /> </createproperty> <!-- Add the dynamically generated Versionnumber to the custom build properties for use in the WIX project --> <createproperty value="$(CustomPropertiesForBuild);Versionnumber=$(Versionnumber)"> <output taskparameter="Value" propertyname="CustomPropertiesForBuild" /> </createproperty> </target>For setting the version number in a WiX project, you need to get the value in the Product.wxs file. My predecessor had defined PRODUCTVERSION to contain a placeholder value "_versionnumber_". Note: The official way would have been to use the <defineconstants> in the WiX project file but in my case, other builds were already depending on the placeholder so I didn't want to change this.
<?define PRODUCTVERSION="_versionnumber_"?>In my WiX project file I have overriden the "BeforeBuild" target to replace the "_versionnumber_" placeholder with the actual value of $(Versionnumber). I'm using the 'File.Replace' task from the SDC Tasks library.
<Target name="BeforeBuild"> <microsoft.sdc.tasks.file.replace Path="Product.wxs" OldValue="%22_versionnumber_%22" NewValue="%22$(Versionnumber)%22" Force="true" IgnoreCase="true"> </Target>As a final step, I have overriden the "AfterBuild" target of the WiX project to rename the output msi in order to contain the versionnumber in the filename as well.
<Target name="AfterBuild"> <Createproperty value="$(TargetDir)%(CultureGroup.OutputFolder)"> <Output taskparameter="Value" propertyname="TargetDir"> </CreateProperty> <Copy sourcefiles="$(TargetDir)$(TargetName)$(TargetExt)" destinationfiles="$(TargetDir)$(TargetName).$(Versionnumber)$(TargetExt)"> <Delete files="$(TargetDir)$(TargetName)$(TargetExt)"> </Target>


This function turns an element into a leaflet map that display multiple lots, based on its custom attributes. Lot are queried by increment of 20 lot at a time. By default the map start as a heat map on smaller zoom level and will be converted into map of lot polygons on higher zoom level.

data-lot-page
[lot]
will be replaced by the actual lot id.data-program_id
data-project_id
data-block_id
data-relawan_id
data-verifikator_id
data-petani_id
data-status_id


Home
Categories
About
Feedback
Contact
Search
Our Suggestion
Python
Maths
History
Data Science
Motivational


template < class Ty1, class Ty2 > struct is_same;
template < class From, class To > struct is_convertible;
The type From must be a complete type or void.
The type To must be a complete, non-abstract type or void.
For all types From and To other than void, the template specialization is_convertible<From, To> is derived from TRue_type if there is an unambiguous, publicly accessible conversion from an lvalue of the type From to the type To. If there is an ambiguous conversion or a conversion that is not publicly accessible, the template specialization is ill formed. Otherwise, it is derived from false_type.
For all types Ty, the template specialization is_convertible<Ty, void> is derived from TRue_type.
For all types Ty other than void, the template specialization is_convert-ible<void, Ty> is derived from false_type.
template < class Base, class Derived > struct is_base_of;
The types Base and Derived must be complete types.
The template specialization is_base_of<Base, Derived> is derived from TRue_type if the type Base is the same type as Derived or if the type Base is a base class of Derived. Otherwise, it is derived from false_type.


Return travel network distances and time using the Google Maps API
dist_google(from, to, google_api = Sys.getenv("GOOGLEDIST"), g_units = "metric", mode = "bicycling", arrival_time = "")
| from | Text string or coordinates (a numeric vector of
|
|---|---|
| to | Text string or coordinates (a numeric vector of
|
| google_api | String value containing the Google API key to use. |
| g_units | Text string, either metric (default) or imperial. |
| mode | Text string specifying the mode of transport. Can be bicycling (default), walking, driving or transit |
| arrival_time | Time of arrival in date format. |
Estimate travel times accounting for the road network - see https://developers.google.com/maps/documentation/distance-matrix/ Note: Currently returns the json object returned by the Google Maps API and uses the same origins and destinations.
not_run({ # Distances from one origin to one destination dist_google(from = c(0, 52), to = c(0, 53)) data("cents") # Distances from between all origins and destinations dists_cycle = dist_google(from = cents, to = cents) dists_drive = dist_google(cents, cents, mode = "driving") dists_trans = dist_google(cents, cents, mode = "transit") dists_trans_am = dist_google(cents, cents, mode = "transit", arrival_time = strptime("2016-05-27 09:00:00", format = "%Y-%m-%d %H:%M:%S", tz = "BST")) # Find out how much longer (or shorter) cycling takes than walking summary(dists_cycle$duration / dists_trans$duration) # Difference between travelling now and for 9am arrival summary(dists_trans_am$duration / dists_trans$duration) odf = points2odf(cents) odf = cbind(odf, dists) head(odf) flow = points2flow(cents) # show the results for duration (thicker line = shorter) plot(flow, lwd = mean(odf$duration) / odf$duration) dist_google(c("Hereford"), c("Weobley", "Leominster", "Kington")) dist_google(c("Hereford"), c("Weobley", "Leominster", "Kington"), mode = "transit", arrival_time = strptime("2016-05-27 17:30:00", format = "%Y-%m-%d %H:%M:%S", tz = "BST")) })


Whether you are a first time home buyer or an experienced home buyer, this application will help with all the steps required to start your home buying process.
You can have your questions related to home buying answered through our chat interface, where you can speak to a home buyer expert or with other home buyers just like you.
You can build you team of expert lawyers, realtors and home inspectors needed for your home buying process. All their details on how to could get in touch with them are provided on their respective pages
Missed any BHC classes?. Not to worry, all videos and seminars will be uploaded under our BHC videos feature for you to catch up on any of the missed sessions
You can also keep track of all the steps that you have completed or not completed by using the Road Map feature.
Do you need a mortgage plan? Go to the mortgage plan option and fill in a short form get the best mortgage plans from banks around you


A-Aron's Web page
Golf is life!!
Github
I am not really sure why it is important to me it is just a pain is the booty I think there are too many steps and to much clicking in places that I did not know were buttons. I understand that that is how you make the websiter an acuall website but it still should be somewhat easier you know what they say if it was easy everyone would do it. Although if I can somewhat get it or get it with a little help I fell like anyone can do it.
Quote of the day: Winning isn't everything, but wanting it is!!


--- title: 'GMMs: visualization using PCA' author: Darrick Sturgeon date: '2018-06-17' slug: gmms-visualization-using-pca categories: - data visualization - machine learning tags: - ggplot2 - R description: Desc hacker_news_id: '' lobsters_id: '' meta_img: /images/image.jpg ---
I chose the cran built-in iris dataset.
This dataset is a very nice dataset for clustering.
Sorry for choosing an easy dataset! I had meant to work through the visualization first and repeat this with a more interesting example.
data <- iris[, !(names(iris) %in% c('Species'))] # filter out classes for training
ggplot(iris, aes(x = Sepal.Width,
y = Sepal.Length,
color = Species)) +
geom_point() +
ggtitle('IRIS') +
xlab('Sepal Width') + ylab('Sepal Length')
The goal is to explore the data using clustering methods. To do this, we will employ and visualize a Gaussian Mixture Model, we will also employ Principal Component Analysis to (hopefully) give the best view of the clusters.
GMMs for clustering can be effective in cases where the data:
–
–
–
–
Generally, clustering falls under the purvue of unsupervised machine learning. We want to see what ‘natural’ boundaries we can find to divide a dataset without telling it anything explicit about the classes we are looking for. This could be to validate the classes, or, to find new classes if we have no prior information.
Probably the most prolific clustering method is “K-means”, which in short, attempts to effectively split the data into several “mean” values, where data is classified based on proximity to a given mean.
In contrast, a Gaussian Mixture Model gives both class mean as well as variances under a multivariate normal distribution. In some ways, the GMM is a natural extension of Kmeans to a probabilistic model, where we can now say something about the expected distribution of new data.
GMMs can be done in R using the package “mixtools”. Unfortunately, the package is not conformed to the tidyverse so you end up with some nested lists as outputs instead of dataframes. There is also a package “mclust”, which is possibly a better choice in terms of features or organization (I haven’t had the chance to try it).
set.seed(3)
smp_size <- floor(0.6 * nrow(data))
idx <- sample(seq_len(nrow(data)), smp_size)
train <- data[idx,]
test <- data[-idx,]
mvn <- mixtools::mvnormalmixEM(train, k = 3)
number of iterations= 32
classify <- function(x) {
comp.1 <- dmvnorm(x, mvn$mu[[1]], mvn$sigma[[1]], log = TRUE) * mvn$lambda[1]
comp.2 <- dmvnorm(x, mvn$mu[[2]], mvn$sigma[[2]], log = TRUE) * mvn$lambda[2]
comp.3 <- dmvnorm(x, mvn$mu[[3]], mvn$sigma[[3]], log = TRUE) * mvn$lambda[3]
return(rbind(comp.1, comp.2, comp.3))
}
pca <- prcomp(data, scale=TRUE, center=TRUE)
comps <- data.frame(pca$x)
colnames(comps) <- c('pc1', 'pc2', 'pc3', 'pc4')
comps$Species <- iris$Species
comps <- rbind(comps[idx,], comps[-idx,])
tmp <- as.data.frame(mvn$posterior) %>%
mutate(cls=apply(.[,], 1, function(x) names(x)[which.max(x)])) %>%
select(cls) %>%
mutate(train = 'TRAIN')
tmp2 <- t(classify(as.matrix(test)))
colnames(tmp2) <- c('comp.1', 'comp.2', 'comp.3')
tmp2 <- as.data.frame(tmp2) %>%
mutate(cls=apply(.[,], 1, function(x) names(x)[which.max(x)])) %>%
select(cls) %>%
mutate(train = 'TEST')
tm <- rbind(tmp, tmp2)
comps$cls <- tm$cls
comps$train <- tm$train
comps <- comps %>% mutate(cls = factor(cls))
comps <- comps %>% mutate(correct = case_when(Species == 'setosa' & cls == 'comp.1' ~ TRUE,
Species == 'versicolor' & cls == 'comp.2' ~ TRUE,
Species == 'virginica' & cls == 'comp.3' ~ TRUE,
TRUE ~ FALSE))
iris2 <- rbind(iris[idx,], iris[-idx,])
iris2$cls <- comps$cls
iris2$train <- comps$train
iris2 <- iris2 %>% mutate(cls = factor(cls))
iris2$correct <- comps$correct
plt <- ggplot(comps, aes(x = pc1, y = pc2)) +
geom_point(data = comps[comps$correct==FALSE,], mapping = aes(color = correct), size = 6, solid = F, shape = 1) +
geom_point(aes(color = cls), size = 2) +
stat_ellipse(data = comps[comps[,'train']=='TRAIN',], aes(color = cls), type = "norm", level = .68, show.legend = FALSE) +
stat_ellipse(data = comps[comps[,'train']=='TRAIN',], aes(color = cls), type = "norm", linetype = 2, level = .95, show.legend = FALSE) +
scale_color_manual(values = c('#4daf4a','#377eb8','#a65628','#e41a1c'),
labels = c('setosa', 'versicolor', 'virginica', 'misclassified'),
name = "Predicted Class") +
ggtitle('The Iris Dataset', subtitle = 'Unsupervised Clustering using a GMM') +
xlab('Principal Component 1') +
ylab('Principal Component 2') +
guides(color = guide_legend(override.aes = list(linetype = c(1, 1, 1, 0), shape = c(16, 16, 16, 1), size = c(2, 2, 2, 3)))) +
theme(text=element_text(size=16, family="Lato")) +
scale_x_continuous(breaks = c(-2, -1, 0, 1, 2, 3)) + facet_wrap(~train)
plt
not_iris <- iris2
not_iris <- not_iris %>% mutate(ntrain = train)
not_iris <- not_iris[,!(names(not_iris) %in% c('train'))]
iris2 <- iris2 %>% mutate(train = factor(train, levels = c('TRAIN', 'TEST')))
ggplot(iris2, aes(x = Petal.Width, y = Petal.Length)) +
geom_point(data = iris2[iris2$correct==FALSE,], mapping = aes(color = correct), size = 6, solid = F, shape = 1) +
geom_point(aes(color = cls, shape = Species), size = 2) +
stat_ellipse(data = not_iris[not_iris$ntrain == 'TRAIN',], aes(x = Petal.Width, y = Petal.Length, color = cls), type = "norm", level = .68, show.legend = FALSE) +
stat_ellipse(data = not_iris[not_iris$ntrain == 'TRAIN',], aes(x = Petal.Width, y = Petal.Length, color = cls), type = "norm", linetype = 2, level = .95, show.legend = FALSE) +
scale_color_manual(values = c('#4daf4a','#377eb8','#a65628','#e41a1c'),
labels = c('setosa', 'versicolor', 'virginica', 'misclassified'),
name = "Predicted Class") +
scale_shape_manual(values = c(1, 2, 3), name = 'True Class') +
ggtitle('The Iris Dataset', subtitle = 'Unsupervised Clustering using a GMM') +
xlab('Petal Width (cm)') +
ylab('Petal Length (cm)') +
guides(color = guide_legend(override.aes = list(linetype = c(1, 1, 1, 0), shape = c(16, 16, 16, 1), size = c(2, 2, 2, 3)))) +
theme(text=element_text(size=16, family="Lato")) + facet_wrap(~train)
#+
#scale_x_continuous(breaks = c(-2, -1, 0, 1, 2, 3))
This is a scatter plot with two things added: Some information about the distributions found by the model, which are multivariate gaussians, and information about the classification encoded into shape and color.
While not explicitly stated due to legend difficulties, The solid and dotted lines respectively represent the 1 standard deviation (68%) and 2 standard deviation (97%) levels for the respective multivariate gaussian.
The true class is represented by shape, and the predicted class is represented by the color, which matches the color of the associated gaussian. The red circles help draw the eye two where a shape/color mismatch has occurred.
Running the GMM was of course, the first challenge. The R package mixtools was very easy to use, but the output format left something to be desired.
Classification of the test set (and the training set actually) had to be done with a custom R function and mutate.
Splitting and joining the (randomly shuffled) train and test sets then recombining them with the labels.
– ## Plotting
The “stat_ellipse” geom proved extremely useful for this task. Stat ellipse fits a t or normal distribution to a set of data. By fitting a normal distribution to each of the GMM’s classifications, you recover the covariances of those components in the GMM.
The colors took a little bit, I wanted two colors which contrast very starkly, (blue and brown) but also such that red still draws the eye enough.
You can actually compute the curves where the gaussian level sets intersect, meaning we could show the class decision boundaries. These are very cool plots but obviously take a bit more time to set up.
There are two annotations I would add: accuracy to both plots, and either a legend or annotations for the gaussian level sets.
I still don’t know the best way to visualize true classes vs. predicted classes, I thought this did a fairly good job, but if the number of clusters increases by much… 6 different shapes may get horrendous. In the end, I think maybe three plots may do the trick: True class, predicted class, highlighted misclassifications (everything else grey). These in succession would be extremely clear.
Adding ‘linestyle’ to the legend proved rather difficult, as the two types of line plotted: solid and dashed, were really not based on any facet of the data. This proves quite difficult for ggplot, where most suggestions are to simply hack the plot to have such a distinction, e.g., adding a geom_line with alpha=0. I tried this and it did not work as intended.
ggplot doesn’t offer anything too nice for geometric shapes. The “stat_ellipse” function allows you to fit a normal distribution to a set of data and draw the level curves around it. This is actually equivalent to the solution for the GMM if you “color” by the classes output from the GMM. If, for some reason, stat_ellipse didn’t give the precise ellipses you were seeking, or you wish to plot some other curve, you would have to plot the two (upper and lower) curves for each ellipse. Basically, a lot of algebra for the average user.


This file implements the datacheck module. This module combines functions ranging from data quality check to data processing as it runs through all the medical data records. In details:
- It defines a set of datachecks and runs the data quality tests following instructions given by the developper in dev/dev-defined.js: module:module_datacheck.definition_value. Then it prepares the display to enable their visualization by the user.
In order to run these tests and manage the outputs properly, the global values listed as members are stored ing
, consult module:g.module_datacheck for the complete list. - It computes values that are parsed directly to
g
and are required for other functions all over the place to work properly (which is particularly confusing):- module:g.medical_completeness which is used to display completeness rates on the map,
- module:g.medical_loclists which is used to setup the 'Goto' drop-down lists on the map,
- module:g.medical_weeklist which is not currently used,
- module:g.medical_yearlist which is used to setup the 'series' charts and 'pie' charts to visualize data by years.
- Since:
- 1.0
- TODO
-
- The distinction between the two function (data check and processing) could be made in futur versions.
Requires
- module:index.html
- module:lang/module-lang.js
- module:js/main-loadfiles.js
Members
-
static,constantmodule:module_datacheck.definition_recordArray.<{key: String, isnumber: Boolean}>
dev-defined -
Defines the list of fields that are expected to constitute a unique identifier of a record to be used in the errors log in module:module_datacheck. The elements are coded in the following way:
{key: 'header_in_datafile', isnumber: boolean},
-
staticmodule:module_datacheck.diseasecheckBoolean
module-datacheck -
Check if disease array module:g.medical_diseaseslist is provided empty. If true, the list of diseases is created in module:module_datacheck~dataprocessing. If the list is not provided empty, it is used to perform a datacheck in the same function (module:module_datacheck~dataprocessing).
Stored in module:g.module_datacheck. -
staticmodule:module_datacheck.logArray.<String>
module-datacheck -
A log of all errors and missing data found during the datacheck process. Written in 'csv' style to be easy to export, use and analyze by the user with any external software. All the elements of the array are 'csv' strings. Element 0 contains the headers and other elements contain values parsed by module:module_datacheck~dataprocessing > module:module_datacheck~errorlogging.
This log is then displayed to the user by module:module_datacheck~showlog.
Stored in module:g.module_datacheck. -
staticmodule:module_datacheck.showemptyString
module-datacheck -
Store the current state of visibility of
empty
errors by the end user in the errorlog. It is changed by the user in module:module_datacheck~showlog > module:module_datacheck~ShowEmpty and will affect module:module_datacheck~showlog in return.
Stored in module:g.module_datacheck. -
staticmodule:module_datacheck.sumObject.<Object>
module-datacheck -
A quantitative summary of the datacheck process. Stores separately for each key, number of errors on values and number of empty values. Also aggregates per error and per empty values and sums overall.
The object is populated in module:module_datacheck~dataprocessing > module:module_datacheck~errorlogging.
Stored in module:g.module_datacheck.
Methods
-
innercompletenessCheck(rec)
module-datacheck -
Computes completeness percentage for each combination of administrative level and epiweek, combining records counting from module:g.medical_data is browsed in module:module_datacheck~dataprocessing and numbers of lowest administrative division per administrative division stored in module:g.geometry_subnum. Processing triggered in module:module_datacheck~dataprocessing.
Name Type Description rec
Object A record from the module:g.medical_data Array.
-
innerCopyText(id)
module-datacheck -
Triggered when the copy to clipboard button is pressed by the user in module:module_datacheck~showlog. Copies to clipboard the text previously selected by module:module_datacheck~SelectText.
Name Type Description id
String of the div from which the text will be selected.
-
innerdataprocessing()
module-datacheck -
Procedural component: should be rethought to be modular (OO programming...).
Main procedure of the datacheck module.
Contains the definition of the data checks at value and at record levels. Browses all the records of module:g.medical_data and all the values of each record, perform tests and produces an error log module:module_datacheck.log as well as a quantitative summary module:module_datacheck.sum.
Also produces some essential outputs along the way as mentioned in introduction module:module_datacheck. This has been coded this way in order to avoid browsing all the data multiple times but it brings some confusion and should be revised.
Is triggered in module:main_loadfiles~read_medical.
Requires:- module:g.medical_headerlist
- module:g.geometry_keylist
- module:g.geometry_levellist
- module:g.geometry_loclists
- module:module_datacheck.definition_record
- module:g.geometry_subnum
- module:module_datacheck.diseasecheck
- module:g.medical_data (filters empty records)
- module:module_datacheck~toTitleCase
- TODO
-
- The distinction between the two function (data check and processing) could be made in futur versions.
- Should be broken down in smaller pieces.
-
innerdisplay()
module-datacheck -
Converts module:g.module_datacheck.sum into html to be displayed for user.
Function triggered in module:main_loadfiles~generate_display. -
innererrorlogging(test, test_type, key, rec)
module-datacheck -
Write the results from a value or record check performed in module:module_datacheck~dataprocessing while browsing all the data. The log is written in a 'csv' style and stored in module:module_datacheck.log.
Name Type Description test
Boolean Result of a value check test from module:module_datacheck~testvalue or of a record check test from module:module_datacheck~testrecord.
test_type
String Name of the value check test from g.module_datacheck.definition_value
test_type
or directly parsed by module:module_datacheck~dataprocessing forempty
ordduplicate
test types.key
String A key to read a value in
rec
taken from module:g.medical_headerlist Array.rec
Object A record from the module:g.medical_data Array.
-
innerinteraction()
module-datacheck -
Show/hide error log interaction by user click on button defined in module:module_datacheck~showlog.
Function triggered in module:main_loadfiles~generate_display. -
innerSelectText(id)
module-datacheck -
Triggered when the copy to clipboard button is pressed by the user in module:module_datacheck~showlog > module:module_datacheck~CopyText. Selects all the 'csv'-style text of the error log.
Name Type Description id
String of the div from which the text will be selected.
-
innerShowEmpty()
module-datacheck -
Triggered when the show/hide missing errors button is pressed by the user in module:module_datacheck~showlog. Toggles module:module_datacheck.showempty, redraws the log with module:module_datacheck~showlog and resettle show/hide error log interaction with module:module_datacheck~interaction.
-
innershowlog()
module-datacheck -
Converts module:g.module_datacheck.log into html to be displayed for user. Includes buttons to show/hide missing values (current states stored in module:module_datacheck.showempty) and copy to clipboard. The html string is parsed to #datalog div defined in module:main_loadfiles~generate_display and this showlog function is also triggerd by the same function.
-
innertestrecord(rec){Boolean}
module-datacheck -
Defines datacheck tests on entire records.
Requires module:g.medical_headerlist
Currently implemented test_types is:duplicates
which checks if the record is a duplicate - test performed on all records. Uses intermediary uniquereclist and duplicatereclist objects to perform the test.
Name Type Description rec
Object A record from the module:g.medical_data Array.
Returns:
Type Description Boolean -
innertestvalue(rec, key, other){Boolean}
module-datacheck -
Defines datacheck tests on values.
The association between keys in module:g.medical_data and these definitions are made in module:module_datacheck.definition_value.
Requires module:g.medical_headerlist, eventually some more elements for specific tests.
Tests are coded in the following way:'test_key': function(rec,key,none){ var value = rec[g.medical_headerlist[key]]; var cond = ... performs the test on the value return cond; },
Currently implemented test_types are:integer
which checks if the value is an integer,float
which checks if the value is a float,positivefloat
which checks if the value is a positivefloat,epiwk
which checks format is 'YYYY-WW',inlist
which checks if the value is in a list (typically parsed in module:module_datacheck.definition_valuesetup
),ingeometry
which checks whether the location name in the module:g.medical_data matches any location name in the module:g.geometry_loclists and populates module:g.medical_loclists with matching location names,empty
which checks if the value either equalsundefined
or''
- this test is performed to all values.
Name Type Description rec
Object A record from the module:g.medical_data Array.
key
String A key to read a value in
rec
taken from module:g.medical_headerlist Array.other
A third argument that have to be parsed in some specific cases (currently an Array of elements in
inlist
test).Returns:
Type Description Boolean Example
epiwk: function(rec,key,none){ var value = rec[g.medical_headerlist[key]]; var year = value.split('-')[0]; var week = value.split('-')[1]; var cond_1 = (year.length == 4) && (week.length == 2); var cond_2 = year > 0; var cond_3 = week > 0 && week < 54; return cond_1 && cond_2 && cond_3; },
-
innertoTitleCase(str){String}
module-datacheck -
Takes a string and returns the same string with title case (first letter of each word is capitalized). Used to normalize strings such as administrative division names or disease names.
Name Type Description str
String Returns:
Type Description String


11 Prolog Reference Pages
mpg-ref
: Reading the Reference Pages
mpg-top
: Topical List of Prolog Built-Ins
mpg-bpr
: Built-In Predicates
User's Manual
Table of Contents
Next
Previous
Up
Node Menu
Send feedback on this subject.


Products
Plan assets and execute operations with certainty
IRIS Warehouse Simulator enables data-driven warehousing assets and operation planning for the most accurate allocation of resources possible.
Accurate warehouse asset and layout planning is often a pipe dream. It is usually done soley experientially or experimentally. And it's near impossible to determine the optimal amount of resources and layout required for maximum efficiency. IRIS Warehouse Simulator gives you the visibility and ability to make the best decisions.
Identify potential demand and operational variables, execute data-driven planning effectively.
Simulate operations in virtual layouts and simulations without implementing any costly and permanent physical changes.
Pinpoint and remediate current bottlenecks and poor practices through simulation.
Simulate and determine operations with certainty.
Realize the optimal warehouse layout and warehouse asset placement unique to your operations without making a single structural or operational change.
Calculate optimal fleet size, asset location and different permutations of robotic operations digitally before committing to large robot hardware expenditure.
Ascertain the right allocation of workloads and headcount required to maximize productivity and utilize human capital effectively.
IRIS Warehouse Simulator virtualizes your operations based on different configurations and allows you to “know before you go” before making a cost-incurring change to your warehouse.
Quickly identify current practices that are creating inefficiencies through simple and intuitive visualizations.
Easily deploy and integrate our tools with your current operations infrastructure with your orchestration tool of choice.
Everything Cosmiqo does is extensible through our APIs - and we mean everything. From cloud to on-premise, if it has an API, we have you covered.
IRIS runs in the background and you get your output without having to ongoing manual operations input for IRIS to work.
Modularised and flexible, IRIS tools can scale with your operations even as you introduce new processes and tools.


Gateway
BOT
24-Nov-18 01:39 PM
[dscrdeql] <c2k> no one would know that
but if you go to dexstats you can see the size of the wallets
[dscrdeql] <Steve10> I haven't been around for a while, didn't realize the price was even 50 SATs. I bought a bag at 14 SATs and will be hodling it for a while! I loved rains and did get a nice little chunk from rain but totally understand needing to move people to the exchange.
[dscrdeql] <c2k> cooll. hold on to that steve
[dscrdeql] <c2k> and if you can get on over to stex and grab some more before rewards announcement and build announcement im pretty sure you will be happy about your decision
[dscrdeql] <Steve10> @c2k oh I plan on it. I think this project is great and I'm looking forward to seeing the first build
[dscrdeql] <c2k>
[dscrdeql] <Veens> Wheres the giveaway??
[dscrdeql] <c2k> what giveaway are you referring too?
[dscrdeql] <Steve10> I don't have enough yet to take advantage of the rewards. This market killed me so buying has been limited
[dscrdeql] <c2k> totally understood. yes the whole crypto market is feeling some pain
[dscrdeql] <c2k> but with EQLI going from 20sats to 50sats recently while BTC and others have tumbled, anyone who has a large amount of my investment in eqli should be happy about not losing money!
[dscrdeql] <Steve10> Totally agree! Think it's my only investment not down
[dscrdeql] <SwimedDragon> Plus side is that if anyone wants to buy extra btc to buy EQLI, this is a perfect chance with these low prices
[dscrdeql] <SwimedDragon> Those orders on 100 sats is about half of the total amount of EQLI for sale
[dscrdeql] <Steve10> I'm going to have to see how much it would cost me to get to 100k EQLI so I can get rewards.
[dscrdeql] <SwimedDragon> If you have other coins that are staking, you can alway's sell some of those profits of to buy EQLI
[dscrdeql] <c2k> the market moves around the 50sats to 80sats area a lot
if you try in there somewhere you may have some luck
[dscrdeql] <SwimedDragon> Sadly prices on all coins are currently down so at this moment it's not worth it to sell off some coins
[dscrdeql] <Steve10> I wish I could sell off some stuff but to far in the red to do it.
[dscrdeql] <SwimedDragon> Sometimes even small faucet amounts can be a nice addition to buy some
[dscrdeql] <SwimedDragon> But if you're going to do all kind of faucets and free earning stuff, it will cost a lot of time I think
[dscrdeql] <Combat Wombat> I won't be buying anything for myself this Christmas... the money I would of spent will go towards cryptos prob 50/50 kmd/eqli
[dscrdeql] <c2k> great idea combat
[dscrdeql] <Combat Wombat> plus i'll eat at home a few times instead of going out to dinner
[dscrdeql] <c2k> i have been doing the same with both too
[dscrdeql] <c2k>
[dscrdeql] <Combat Wombat> i got everything i need so no point in going and wasting it would rather throw it into cryptos
[dscrdeql] <Combat Wombat> yep c2k
[dscrdeql] <Combat Wombat> ill go shopping when my coins moon
[dscrdeql] <c2k> haha. totallyhear you.
i used to buy coffee in starbucks, now i make my own
[dscrdeql] <c2k> plus other little things
[dscrdeql] <Combat Wombat> eh i still use a kettle to make my coffees
[dscrdeql] <Combat Wombat> lol
[dscrdeql] <Combat Wombat> hope you been well c2k
[dscrdeql] <c2k> yes thanks. been sick a lot lately so quiet
[dscrdeql] <Combat Wombat> ah not good hope your better now
[dscrdeql] <c2k> getting there thanks
[dscrdeql] <c2k> i like the progress cowboy is making. really encouraging
[dscrdeql] <Combat Wombat> cowboy is a gun
[dscrdeql] <Buddz1993> Ye I’m up nearly 180% from my holdings s in EQLI só can’t complain really .
(edited)
[dscrdeql] <c2k> love to hear that buddz. all of us who bought early feel thankful for that
[dscrdeql] <Buddz1993> Indeed imagine when this thing goes ballistic it’s insane
[dscrdeql] <Buddz1993> If you hold nearly 1 mil like me you will be extremely healthy


Login with one-time code via email
Login with one-time code via SMS
Login with magic link via email
Login with magic link via SMS


Sewing
- Factory
Sign in to start your session
Remember User
Korean
English
Spanish
Sign In
Forgot Password
Register Now!


NC man charged in secret peeping of minor
ALEXANDER COUNTY, N.C. (WBTV) - A 38-year-old Alexander County man is accused of secretly installing a camera inside a home with the intention to view a nude minor.
Jody Eric Connolly was arrested and charged with felony secret peeping, felony possession of a photographic image from peeping and misdemeanor secret peeping.
“Connolly also unlawfully and willfully did peep secretly into a bathroom occupied by a nude minor female,” deputies say.
Connolly was taken to the Alexander County Sheriff’s Office Detention Center and placed under a $50,000 secured bond. He’s expected to appear in court Monday.


Charging Forward with Redux
Posted January 28, 2019
My automated blog is a big step closer — thanks to a new understanding of React's helper library Redux.
The basic definition of redux is to "bring back or revive." In the JavaScript library world, Redux makes state mutations more predictable by imposing certain restrictions on how and when updates — aka dispatch actions — happen.
Exploring blog automation solutions
Why explore Redux? Back in December, I blogged about learning projects I hoped to execute in 2019. It's not quite February, but I've already made progress on one: automating my blog. It's non-linear progress, because I don't think Redux will be useful for my purposes. But learning what won't work is part of the process.
On the other hand, Redux IS a popular library. It works with other single page applications too, not just React. And understanding Redux has helped me better understand state, the benefits of a central data store, how dispatch actions maintain order in bigger apps, React life cycles, ES6, etc., all of which propels my coding progress forward.
What's the big deal about blog automation?
My blog doesn't even accept comments right now, but there are still a lot of moving parts. And the manual updates required to keep those moving parts in sync take longer with every post I write. As of now, every update entails these steps:
- Creating an image in two sizes — one for the post itself, and one for the blog page
- Updating the third post preview on my Blog page with an excerpt from the new post
- Adding a link to the post I removed from the blog page to the Blog Archive
- Adding the newest archived post to all archived posts
- Switching out the right column on the now-archived blog from Twitter feed to archive list
- Switching the new post excerpt on my About and Content pages
- Writing the new post
- Pushing all updates to Github
- Pushing all updates to my portfolio host, GoDaddy
Automation won't eliminate all of these steps, but I should be able to auto-push archived posts to a searchable list. It also should make my blog more dynamic, interactive, and less time-consuming.
My biggest little portfolio update so far
Portfolio visitors who happen to click on my new Redux app will be underwhelmed. What's so important about a couple of clickable post excerpts you can delete? On its face, nothing. But when I demo that app, I'll explain it represents the research I've done to determine the best method for creating a more automated, interactive blog. It's also the first project I wasn't specifically assigned. Despite choosing my own path of study, I believe my app displays progress, and I'm proud to post it online. It's well-commented, it's successfully deployed to Heroku, and it's an amazing learning tool that illustrates my eagerness for and commitment to growing as a developer.
I have the next step in my blog research journey ready to go — including first-row portfolio placeholder spots for it and my future final product: a lean, mean React-based blog.


Chapter 2. Pointer Manipulation
In C, for any
type T, we can form a corresponding type for
variables that contain addresses in memory where objects of
type T reside. One way to look at variables
like this is that they actually "point to" the objects. Thus,
these variables are called pointers. Pointers are very important
in C, but in many ways, they are a blessing and a curse. On
the one hand, they are a powerful means of building data
structures and precisely manipulating memory. On the other
hand, they are easy to misuse, and their misuse often leads to
unpredictably buggy software; thus, they come with a great
deal of responsibility. Considering this, it is no surprise
that pointers embody what some people love about C and what
other people hate. Whatever the case, to use C effectively, we
must have a thorough understanding of them. This chapter
presents several topics on pointers and introduces several of
the techniques using pointers that are employed throughout
this book.
This chapter covers:
- Pointer
fundamentals
-
Including one of the best techniques for
understanding pointers: drawing diagrams. Another
fundamental aspect of pointer usage is learning how to avoid
dangling pointers.
- Storage allocation
-
The process of reserving space in memory.
Understanding pointers as they relate to storage allocation
is especially important because pointers are a virtual carte
blanche when it comes to accessing memory.
- Aggregates and pointer
arithmetic
-
In C, aggregates are structures and arrays.
Pointer arithmetic defines the rules by which calculations
with pointers are performed. Pointers to structures are
important in building data structures. Arrays and pointers
in C use pointer arithmetic in the same way.
- Pointers as parameters to
functions
-
The means by which C simulates
call-by-reference parameter passing. In C, it is also common
to use pointers as an efficient means of passing arrays and
large structures.
- Pointers to
pointers
-
Pointers that point to other pointers
instead of pointing to data. Pointers to pointers are
particularly common as parameters to functions.
- Generic pointers and
casts
-
Mechanisms that bypass and override C's
type system. Generic pointers let us point to data without
being concerned with its type for the moment. Casts allow us
to override the type of a variable temporarily.
- Function pointers
-
Pointers that
point to executable code, or blocks of information needed to
invoke executable code, instead of pointing to data. They
are used to store and manage functions as if they were
pieces of data. |


--- layout: post esbma_id: 1135 title: New section date: 2004-08-24 03:25:06 ---
I have created a separate section of my weblog to contain all entries related to Winnable Solitaire.


Reconstruction and Simulation of Orientation Data
This program produces a file of orientation data when you click into an empty projection (Simulation) or when you click on data points in a bitmap (reconstruction).
A third application is the simulation of displacement planes (Calculation of MRSS), and the calculation of the
direction of theoretical striations (MRSS)on
these planes.for arbitrary principal stresses and shape factors of the stress-ellipsoid.
Click in the menu "Method" on one of these options.


Before the test runs this file will be pushed to the selected BlazeMeter test and select as executable file. Existing file with the same name will be replaced. Provide a file that is locate in job workspace(relative path).
Limitations: For Taurus and FunctionalApi tests will set 'Test type': JMeter if file has '.jmx' extension and Taurus - for '.yml' and '.yaml' files. Other 'Test types', please, set in the BlazeMeter application.
Supported test types: Taurus, FunctionalApi, JMeter


Pirate (ARRR) is a cryptocurrency that solves the issue of financial privacy on the blockchain through forced anonymous transactions. Protect your wallet and transactions with Pirate’s completely anonymous network. With forced private transactions, your privacy cannot be compromised by another users’ activity on the network. If you wish to learn more, please join the official Pirate Discord at https://pirate.black/discord/ or message FishyGuts#5085, who will be happy to help out.
100 messages
Before 05-Dec-19 12:00 AM
Bikob204-Dec-18 12:23 PM
yea
And in terms of further arrr-adoption for people will be much better to read about a fully shielded chain than about a NEARLY fully shielded chain.
"fully shielded user coin base" - good one
LocoMB04-Dec-18 12:29 PM
@FishyGuts ... seems the word 'attacked' is mssing on p12:
'In May 16 2018, Bitcoin Gold was by an unknown actor who...'(edited)
1
Flexatron04-Dec-18 12:29 PM
sharp
thanks @LocoMB
Bikob204-Dec-18 12:30 PM
You can add Vertocoin (VTC) 51%
it's happened today, online, with success.
Flexatron04-Dec-18 12:31 PM
for V2.0
LocoMB04-Dec-18 12:31 PM
didnt it happen before to VERTcoin?
Flexatron04-Dec-18 12:48 PM
can always add it later when the attack has finished
seems to be still ongoing
or no its finished
kp04-Dec-18 12:51 PM
Amazing job dude
mrlynch04-Dec-18 12:59 PM
Roadmap
"The following Pirate features AND estimated deliveries..."
Well done @Flexatron
Flexatron04-Dec-18 01:05 PM
thanks
got all the comments processed so keep m coming
Bikob204-Dec-18 01:07 PM
"The following Pirate features AND estimated deliveries multiplied by the number π" to be perfectly correct
Flexatron04-Dec-18 01:08 PM
its meant like the dates are estimations of deliveries, but already worded it differently
haha
Bikob204-Dec-18 01:10 PM
the dates - as derivative of work hour estimation
actionslacks04-Dec-18 01:13 PM
!arrrtip @Flexatron 1000
ARRR TipBotBOT04-Dec-18 01:13 PM
TipBot
@actionslacks (actionslacks#4072)
You tipped @Flexatron999.9999 ARRR
A network fee of 0.0001 ARRR was deducted from the amount.
This operation is pending. You will be notified when when it has finished.
Flexatron04-Dec-18 01:14 PM
thanks! @actionslacks
actionslacks04-Dec-18 01:20 PM
Thanks for your hard work @Flexatron
Flexatron04-Dec-18 01:20 PM
help flex through the winter
appreciated, you're welcome, great community (edited)
passcombo.com 🏴☠🏴04-Dec-18 01:29 PM
@Flexatron are new ttx 100% z ? if so then new tx are full z, there is just minority of < 0.1% tx that are not z, but these are old, but it does not matter since all new are z?(edited)
Flexatron04-Dec-18 01:32 PM
what's your question exactly(edited)
there will still be "new"non z coins going into mining pools, older non-z coins are cpu mined so "old"(edited)
Cryptofist04-Dec-18 01:35 PM
Fully shielded peer to peer initiated transactions. or Fully shielded user initiated transactions(edited)
@Flexatron my mind has been on this "how do we say 100%" dilemma for a bit.
Thats correct though right?
Flexatron04-Dec-18 01:38 PM
hmm, also an option(edited)
Strob04-Dec-18 01:42 PM
Good job Flexatron!
ph03nix04-Dec-18 01:56 PM
!arrrtip @Flexatron 7.7701
ARRR TipBotBOT04-Dec-18 01:56 PM
TipBot
Error sending coin. [object Object]
ph03nix04-Dec-18 01:56 PM
!arrrtip @Flexatron 7.7771
ARRR TipBotBOT04-Dec-18 01:56 PM
TipBot
@ph03nix (ph03nix#3115)
You tipped @Flexatron7.777 ARRR
A network fee of 0.0001 ARRR was deducted from the amount.
This operation is pending. You will be notified when when it has finished.
Flexatron04-Dec-18 01:58 PM
LoPhatMelk04-Dec-18 01:58 PM
Great job Flex!
Flexatron04-Dec-18 02:16 PM
acidus04-Dec-18 02:20 PM
excellent work Flex and rest of the team
sorin9004-Dec-18 02:28 PM
@FishyGuts all the bots are back on. Seems that some already used them anyway
ComputerGenie 👴👴👴04-Dec-18 03:35 PM
// This feature results in fully shielded user coins in the Pirate chain. By consistently utilizing zk-SNARK technology..
is 3 hrs lat to the convo, but thought he'd add his thought
Flexatron04-Dec-18 03:38 PM
Appreciated genie ;p
plazma04-Dec-18 03:59 PM
cool paper @Flexatron
Flexatron04-Dec-18 04:00 PM
The frontpaper sure looks "icy" @plazma
plazma04-Dec-18 04:04 PM
@Flexatron yea blue and black.....
FishyGuts04-Dec-18 04:09 PM
!kmdtip @Flexatron 500
KMD TipBotBOT04-Dec-18 04:09 PM
TipBot
Cannot tip with entered amount.
FishyGuts04-Dec-18 04:09 PM
Wut
!kmdtip @Flexatron 500
KMD TipBotBOT04-Dec-18 04:09 PM
TipBot
Cannot tip with entered amount.
Flexatron04-Dec-18 04:09 PM
Third time's a charm
Nope
FishyGuts04-Dec-18 04:09 PM
!kmdtip @Flexatron 501
KMD TipBotBOT04-Dec-18 04:09 PM
TipBot
Cannot tip with entered amount.
FishyGuts04-Dec-18 04:13 PM
!kmdtip @Flexatron 477
KMD TipBotBOT04-Dec-18 04:13 PM
TipBot
@FishyGuts (FishyGuts#5085)
You tipped @Flexatron477 KMD
FishyGuts04-Dec-18 04:13 PM
!arrrtip @Flexatron 2000
ARRR TipBotBOT04-Dec-18 04:13 PM
TipBot
@FishyGuts (FishyGuts#5085)
You tipped @Flexatron1999.9999 ARRR
A network fee of 0.0001 ARRR was deducted from the amount.
This operation is pending. You will be notified when when it has finished.
Flexatron04-Dec-18 04:14 PM
ARRR TipBotBOT04-Dec-18 04:17 PM
TipBot
:clock10: You have an ongoing operation. Please wait until current operation is finished.
ComputerGenie 👴👴👴04-Dec-18 04:22 PM
!arrrtip cannon 250
ARRR TipBotBOT04-Dec-18 04:22 PM
:skull_crossbones: @freakyarch@+ ✪ No worries@qll0@JimD@J1m have been cannonstruck with 49.99998 ARRR!
A network fee of 0.0001 ARRR was deducted from the total amount.
This operation is pending. You will be notified when when it has finished.
Bikob204-Dec-18 04:33 PM
@FishyGuts Q4 site redesign achievable?
Flexatron04-Dec-18 04:42 PM
It's close yea
But fishy probably knows better
Zanzarismo04-Dec-18 04:45 PM
how are we feeling today mateys?
ComputerGenie 👴👴👴04-Dec-18 04:48 PM
"we" are feeling with our fingers
1
1
Zanzarismo04-Dec-18 04:53 PM
That's how we operate here, eyy?
Flexatron04-Dec-18 04:54 PM
The sea is always salty
Zanzarismo04-Dec-18 04:55 PM
the key is to be patient, then we can reverse osmosis the water and from that we can drink
ComputerGenie 👴👴👴04-Dec-18 05:01 PM
That's how we operate here, eyy?has no idea how you people operate there
Ok..... Time to set sail Pirates.
We've built the new discord and we want to get all of us migrated over there. We have radio, and tip bots and will get a bridge to the one remaining Pirate channel in KMD discord once everyone sets sail.
TODAY THE INVITE BOUNTY STARTS!!!!
So get your ref link and lets annoy everyone on social media platforms from Instagram to Twitter, FB to Gab, Reddit to Steemit!
https://discord.gg/UsJT5AY
1
1
Zanzarismo04-Dec-18 05:41 PM
How many pirate are in circulation now? is there a way to tell?
FishyGuts04-Dec-18 05:42 PM
256 x Blockheight
Does Coinpaprika not show this? Ill reach out to them if not.


This page connects to a single Server Sent Event (SSE) streams, but listens to multiple events.

Waiting for Posts...


---
layout: post
title: Interesting Reads 5/3 - 5/9
date: '2014-05-10T10:30:00.001-04:00'
author: Allison McMillan
tags:
- friends
- software development
- things I've read
- becoming a developer
modified_time: '2014-05-10T10:30:36.994-04:00'
blogger_id: tag:blogger.com,1999:blog-6054545261088815023.post-2038821119275996101
blogger_orig_url: http://allisonsherenmcmillan.blogspot.com/2014/05/interesting-reads-53-59.html
---
Here are some really great reads from this past week. Lots of good fodder for self-reflection and thinking critically about programming and life, in general
Enjoy!
The hardest parts of software development
An interesting post about being more interesting… not sure I agree with all the entire post but interesting to think about.
Love Love Love this!!: http://blog.samstokes.co.uk/blog/2014/05/01/what-programming-is-like/
The importance of looking up and recognizing what's around you.


Unlike ice cream hot chocolate in a cone is great for a cold day. Simply dip a cone in some melted chocolate and then pour some hot chocolate in the cone. The chocolate coating will prevent the cone from breaking.
30mins


weed management Weed [], research change questions weeds University Research science species plant {border-style Science evolution climate invasive px;} #ffffff;} agricultural systems approaches environmental plants Department crop Plant global management. need future Ecology challenges ecosystem natural negative Australia Climate Sciences USA adoption efforts important interactions sustainable weedy Biological Transdisciplinary better ecological impacts invasion problems role adaptation discipline diversity ecology horizon px; range resistance social soil {font-family Agroecology Biology Global New address continued focus font-size integrated potential technological understand wider (ranked Environment Liebman Neve School Ward associated competitive double; ecology, food fundamental http://orcid.org/--- human increased intensification long‐term strategies support Agricultural Crop Evolution IWM Jordan Society Trends ability biological border-color border-width context control facilitate herbicides impact increase invasions invasiveness likely priorities private scanning scientists services solid; systems, traits transdisciplinary workshop {font-style {font-weight Agriculture Baraibar Graham Institute Invasiveness Mortensen Nature Phytologist Review Storkey Williams acknowledges agroecological agroecosystems. best bold challenge considered courier; critical cropping current dispersal diverse economic em; emerging evolutionary facilitated functioning gap health herbicide highly identified increasing integration invaded losses new populations predict pt;} public ranked recognised sector selection socio‐economic themes trophic ‘applied’


# WHAT'S GOOGLE YO
For the sake of the sanity of the people who ask non-redundant questions on the CVN Facebook community page, here is a list of things that gets asked all the time by those who are too lazy to Google basic information that has been on [CrownVic.net](http://www.crownvic.net/) for the last 16 years...
This is what happens when you actually use Google for research...
### GEAR RATIOS
PSA to CVN FB: I will make an example out of you and stick it on this page if you ask this simple question again.
We have Google and [crownvic.net](http://www.crownvic.net) at our disposal...what excuse could you possibly have for taking time out of your day to tell us that you know nothing about the topic instead of researching it...
Anyway, here are just a few links to CV.net:
* [Road Test Results; 2.73 vs 3.27 vs 3.55 vs DOHC MM](http://www.crownvic.net/ubbthreads/ubbthreads.php?ubb=showflat&Number=2344535)
* [3.55 DRIVESHAFT - NEED HELP, PLEASE!](http://www.crownvic.net/ubbthreads/ubbthreads.php?ubb=showflat&Number=1309821&page=0#Post1309821)
* [AXLE--3.27 vs. 3.55 vs. 3.73](http://www.crownvic.net/ubbthreads/ubbthreads.php?ubb=showflat&Number=40231)
There. Now you have no excuse not to know.
Also, if you express concern about gas mileage and you drive a Panther, please leave the Facebook page and go buy this:
Moving right along...
### COLD AIR INTAKES
Stop asking if aftermarket cold air intakes will increase your performance. They will not. The best intake for a Panther with the stock 4.6L 2V V8 is the 04+ CVPI intake/airbox/MAF setup. NO, K&N cone filters will not give you +20hp. Just, STAHP.
* [dRock96Marquis' Panther "MZT" and bolt-on performance FAQ](http://www.crownvic.net/drock96marquis/MZT.htm)
### OIL
I don't understand how this could be any simpler...Do people not read the owner's manual or instructions for anything that they own?
_"What's a great oil."_ Was that supposed to be a question.
 The Ford engineers designed this engine to work with this Motorcraft oil. Stop trying to be smarter than the engineers. Why would you use more expensive synthetic motor oil in a car that was literally designed to use this particular synthetic blend motor oil? If you really don't want to follow the owner's manual and consider yourself a rebel, then... I really don't know what to tell you.

We did it by using Google and spending a bit of money. There are coilovers out there for our cars. [I'll link you to Naake's site as a start](http://www.naake.com/store/mercury-marauder), but you're on your own from there.  No one will make a cheap set because there's little demand for that in the Panther community. Not every grandpa wants his MGM or LTC slammed and riding like a drift car.
Here's one of the many lowering threads on CV.net: [Any pics of the 1.5 inch drop springs on a panther](http://www.crownvic.net/ubbthreads/ubbthreads.php?ubb=showflat&Number=2277450&page=1)
If you're dying for a set of proper coilovers, [contact BC Racing NA on Facebook](https://www.facebook.com/BCRacingNA/?fref=ts) or go to their website at [BC Racing North America](http://www.bcracing-na.com) and spam them for Crown Victoria coilovers. If you ask, you'll be directed to them.
Air suspension: If you do not have at least $1k burning a hole in your pocket, please don't ask about air suspension builds. In case you're drowning in cash and want to build a proper IRS air setup, here's a thread for inspiration:
* [Dropping a 00cvpi (air ride+IRS swap)](http://www.crownvic.net/ubbthreads/ubbthreads.php?ubb=showflat&Number=2030254&page=1)
If you have the motivation to do an air setup, you'll research everything you need to know on your own.
### GRAMMAR
This whole page needs to revisit elementary school. I've seen first graders do a better job with punctuation than some of the posts I see on CVN Facebook page. It's difficult to read quickly and correctly the first time around when you're that lazy. I will post examples of such extreme laziness.  It's really not that difficult to use the comma, question mark, and period keys on your keyboard every once in a while...
I don't even see a question mark anywhere in this post...
Carlos strikes again...
...if you don't know how to research which tools you need to work on your car...I don't know what to tell you...


FIORILE A film review by James Berardinelli Copyright 1994 James Berardinelli
Rating (0 to 10): 6.0
Date Released: varies Running Length: 1:58 Rated: PG-13 (Violence, brief nudity)
Starring: Claudio Bigagli, Galatea Ranzi, Michael Vartan, Lino Capolicchio, Constanze Engelbrecht Directors: Paolo and Vittorio Taviani Producer: Grazia Volpi Screenplay: Paolo and Vittorio Taviani and Sandro Petraglia Music: Nicola Pilvani Released by Fine Line Features In Italian (with a little French) with subtitles
The latest offering from the Taviani brothers (PADRE PADRONE and THE NIGHT OF THE SHOOTING STARS) is FIORILE, a series of four vignettes interconnected by the common theme of a curse that haunts a family through the centuries. Since the late 1790s, the Benedettis--called the Maledettis ("the cursed") by the peasants who accept the stories about them--have been victims of a series of strange and tragic events. If fate has a sense of irony, it's on display here, as the source of this family's riches lies at the root of their misery.
The story opens a few years before 1800, as Napoleon's army marches through Tuscany. A young French officer, Jean (Michael Vartan), falls in love with a local girl, Elisabetta (Galatea Ranzi), whom he calls "Fiorile" after the French Revolutionaries' name for the month of May. While the two dally in the woods, Elisabetta's brother Corrado (Claudio Bigagli) steals a chest full of gold that had been placed in Jean's charge. This act leads to the officer's disgrace, and heartbreak for Elisabetta.
One hundred years later, one of Elisabetta's descendents (also played by Galatea Ranzi, to emphasize the familial relationship) is given an opportunity to avenge her ancestor. The target of her wrath is her brother, a near-copy of Corrado (Claudio Bigagli again).
During the war years of the mid-forties, another member of the Benedetti family, Massimo (Michael Vartan's second role), must struggle with his belief in the family curse while fighting to help the anti-Mussolini rebels with whom he sympathizes. Captured, then inexplicably set free by the fascists, Massimo must live not only with the specter of the Benedetti history hanging over his life, but also the weight of guilt that he was spared when his comrades were killed.
The final episode of FIORILE takes place in modern times, and has Massimo's son and grandchildren visiting the old man at the Tuscany home where he has become a hermit. Their arrival opens old wounds and forces him to face truths which he would prefer to hide from.
The 18th Century segment of FIORILE is brilliantly-written and performed. Irony, tragedy, and romance blend together to form what is by far the best half-hour of the film. After that, however, the characters become progressively less-compelling, and the storyline gradually loses its appeal. The second vignette is largely static; the third manages something of a recovery; and the fourth goes nowhere, doing little to close the "curse" story arc with a satisfying resolution.
The Tavianis have done some interesting things in this movie, the most notable of which is casting the three main leads in multiple roles to emphasize the intertwining of the fates of the Benedettis across the decades. Unfortunately, the brothers are unable to sustain the sense of immediacy inherent in the first act. FIORILE starts strong but finishes weak.
The cost of greed is not a new theme to the movies, nor is the concept of the sins of the fathers being visited upon their children. FIORILE weds the two together, but makes the mistake of presenting the initial act far more impressively than the consequences, and that somehow seems in large part to defeat the point that the filmmakers are attempting to present.
- James Berardinelli<EMAIL_ADDRESS>.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Your browser does not support HTML5 video.
Citrus
Congratulations {{ username_ret }} !!
$1 has been credited to your Citrus wallet
Your browser does not support HTML5 video.
Return Home


I’ve been running my personal email server for almost 6 years. The initial setup was on “bare metal”. Afterwards only little maintenance time was needed. Recently I decided to reduce number of servers and moved to another provider. To avoid migrating “bare metal” setup, I dockerized it. It is still not very easy to use compared to existing solutions, but works for my scale.
The dockerized image source is on GitHub and supports:
postfix
with virtual users based on file setupdovecot
for imap, auth andsieve
for filtering- encrypted mail directories by default for all users with
mail-crypt-plugin
spamassassin
for spam filtering- DKIM optionally
Runit to supervise multiple docker processes
When I was dockerizing all email related service, I was not aware of the best docker practices to make a single image with multiple services,
but run them in separate containers. At that time I decided to make a single container to supervise multiple processes in a single docker container.
runit
init system was used. Most of the services was easy to add, but postfix required a special attention due to isolation. The final list of services:
# cat /service/postfix/run
#!/bin/bash
/usr/lib/postfix/configure-instance.sh postfix
exec /usr/lib/postfix/sbin/master
# cat /service/cron/run
#!/bin/bash
exec cron -f
# cat /service/dovecot/run
#!/bin/bash
exec dovecot -F
# cat /service/opendkim/run
#!/bin/bash
exec opendkim -x /etc/opendkim.conf -f
# cat /service/rsyslog/run
#!/bin/bash
exec rsyslogd -n
# cat /service/spamassassin/run
#!/bin/bash
exec spamd --max-children 5
In the future I am planning to split these service into multiple containers according to the best docker practices.
Virtual users, domains and aliases
A few files have to be mounted for proper setup:
virtual_domains
which contains list of domains for virtual transportvirtual_boxes
describes accounts for the virtual transportvirtual_aliases
adds additional aliases
Encrypted mailboxes
All mailboxes are encrypted by default with dovecot mail-crypt
plugin. /etc/dovecot/users
is used to configure user passwords.
To generate a new password you can use
doveadm pw -s SHA512-CRYPT -p "<PASSWORD>"
NOTE: If user’s password is lost, mailbox cannot be decrypted anymore
To change user’s password it is not enough to change it in /etc/dovecot/users
. Prevoius email won’t be possible to decrypt anymore.
To set new password for the private key run:
doveadm mailbox cryptokey password -u "$user" -n "$password_new1" -o "$password_old"
Certificates
To support renewable certificates it is better to mount the whole folder and provide CERT_LOCATION
and CERT_KEY_LOCATION
.
If you mount files directly, inode might change during certificate renewal and postfix/dovecot won’t be able to use new cert until container is restarted.
DKIM
DKIM setup is not trivial and requires manual setup of private and public keys for all your virtual domains. Later I plan to simplify it.


A class which cointains all variables and methods for creating URL objects for performing the queries to Freesound.
More...
|
|
static String | HOST = String("www.freesound.org") |
| | Freesound website.
|
| |
|
static String | BASE = String("https://" + HOST + "/apiv2") |
| | The base URL for the requests.
|
| |
|
static String | TEXT_SEARCH = String("/search/text/") |
| | The text search resource.
|
| |
|
static String | CONTENT_SEARCH = String("/search/content/") |
| | The content search resource.
|
| |
|
static String | COMBINED_SEARCH = String("/search/combined/") |
| | The combined search resource, not implemented.
|
| |
|
static String | SOUND = String("/sounds/<sound_id>/") |
| | The sound instance resource.
|
| |
|
static String | SOUND_ANALYSIS = String("/sounds/<sound_id>/analysis/") |
| | The sound analysis resource.
|
| |
|
static String | SIMILAR_SOUNDS = String("/sounds/<sound_id>/similar/") |
| | The similar sounds resource.
|
| |
|
static String | COMMENTS = String("/sounds/<sound_id>/comments/") |
| | The sound comments resource.
|
| |
|
static String | DOWNLOAD = String("/sounds/<sound_id>/download/") |
| | The download sound resource.
|
| |
|
static String | UPLOAD = String("/sounds/upload/") |
| | The upload sound resource.
|
| |
|
static String | DESCRIBE = String("/sounds/<sound_id>/describe/") |
| | The describe sound resource.
|
| |
|
static String | PENDING = String("/sounds/pending_uploads/") |
| | The pending uploads resource.
|
| |
|
static String | BOOKMARK = String("/sounds/<sound_id>/bookmark/") |
| | The bookmark sound resource.
|
| |
|
static String | RATE = String("/sounds/<sound_id>/rate/") |
| | The rate sound resource.
|
| |
|
static String | COMMENT = String("/sounds/<sound_id>/comment/") |
| | The comment sound resource.
|
| |
|
static String | AUTHORIZE = String("/oauth2/authorize/") |
| | The authorization resource.
|
| |
|
static String | LOGOUT = String("/api-auth/logout/") |
| | The logout resource.
|
| |
|
static String | LOGOUT_AUTHORIZE = String("/oauth2/logout_and_authorize/") |
| | The logout and authorize resource.
|
| |
|
static String | ACCESS_TOKEN = String("/oauth2/access_token/") |
| | The get access token resource.
|
| |
|
static String | ME = String("/me/") |
| | The me resource.
|
| |
|
static String | USER = String("/users/<username>/") |
| | The user instance resource.
|
| |
|
static String | USER_SOUNDS = String("/users/<username>/sounds/") |
| | The get user sounds resource.
|
| |
|
static String | USER_PACKS = String("/users/<username>/packs/") |
| | The get user packs resource.
|
| |
|
static String | USER_BOOKMARK_CATEGORIES = String("/users/<username>/bookmark_categories/") |
| | The get user bookmark categories resources.
|
| |
|
static String | USER_BOOKMARK_CATEGORY_SOUNDS = String("/users/<username>/bookmark_categories/<category_id>/sounds/") |
| | The user bookmark category sounds resources.
|
| |
|
static String | PACK = String("/packs/<pack_id>/") |
| | The get pack instance resource.
|
| |
|
static String | PACK_SOUNDS = String("/packs/<pack_id>/sounds/") |
| | The pack sounds.
|
| |
|
static String | PACK_DOWNLOAD = String("/packs/<pack_id>/download/") |
| | The pack download resource.
|
| |
|
static String | CONFIRMATION = String("https://" + HOST + "/home/app_permissions/permission_granted/") |
| | The confirmation URL.
|
| |
|
static String | EDIT = String("/sounds/<sound_id>/edit/") |
| | The edit sound resource.
|
| |
A class which cointains all variables and methods for creating URL objects for performing the queries to Freesound.
- Author
- Antonio
- Date
- 09/07/2019


--- layout: post title: no title date: '2017-10-28T11:30:17+02:00' categories: - Storyboards picture_url: https://film-Storyboards.tumblr.com/post/166882439133 ---


Creates and configures $sanitize
instance.
enableSvg([flag]);
Enables a subset of svg to be supported by the sanitizer.
By enabling this setting without taking other precautions, you might expose your application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned outside of the containing element and be rendered over other elements on the page (e.g. a login link). Such behavior can then result in phishing incidents.
To protect against these, explicitly setup overflow: hidden
css rule for all potential svg
tags within the sanitized content:
.rootOfTheIncludedContent svg {
overflow: hidden !important;
}
| Param | Type | Details |
|---|---|---|
|
flag
(optional)
|
boolean |
Enable or disable SVG support in the sanitizer. |
| boolean$sanitizeProvider | Returns the currently configured value if called without an argument or self for chaining otherwise. |
addValidElements(elements);
Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe and are not stripped off during sanitization. You can extend the following lists of elements:
htmlElements
: A list of elements (tag names) to extend the current list of safe HTML
elements. HTML elements considered safe will not be removed during sanitization. All other
elements will be stripped off.
htmlVoidElements
: This is similar to htmlElements
, but marks the elements as
"void elements" (similar to HTML
void elements). These
elements have no end tag and cannot have content.
svgElements
: This is similar to htmlElements
, but for SVG elements. This list is only
taken into account if SVG is enabled for
$sanitize
.
$sanitize
service has been instantiated, this method has no effect.
| Param | Type | Details |
|---|---|---|
| elements | Array.<String>Object |
A list of valid HTML elements or an object with one or more of the following properties:
Passing an array ( |
| $sanitizeProvider | Returns self for chaining. |
addValidAttrs(attrs);
Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are not stripped off during sanitization.
Note:
The new attributes will not be treated as URI attributes, which means their values will not be
sanitized as URIs using $compileProvider
's
aHrefSanitizationWhitelist and
imgSrcSanitizationWhitelist.
$sanitize
service has been instantiated, this method has no effect.
| Param | Type | Details |
|---|---|---|
| attrs | Array<String> |
A list of valid attributes. |
| $sanitizeProvider | Returns self for chaining. |


Blog #3
Week 4
January 3, 2015
This week in DBC we focused on Arrays and Hashes. Arrays and Hashes are popular structures in Ruby used for storing data.
Arrays can store any type of thing that we have access to in Ruby. That could be a string, a number, or even another array.
A hash is similar to an array. Hashes are basically the same as arrays, except that a hash not only contains values, but also keys pointing to those values. Each key can occur only once in a hash.
Here is an example of a array:
numbers = [1,2,"three",[4,5,6]]
Here is an example of a hash:
grocery_list{
"milk" => "chocolate",
"cookies" => "oreos",
"cereal" => "cheerios"
}
While learning about the two I found a great a example to explain the two. It was explained something like this. If you make a grocery list into an array you can only add a single item. In a hash you can name the item it is that you are looking for, which would be called the key and you can also add the brand name, the type, or the quantity, which would be the value.


A Plane Crashed in Congo, there Are Casualties
A plane crashed in the Democratic Republic of the Congo, AFP reported. A small plane, with 15 passengers on board, crashed in the densely populated Goma region, Busy Bee reported.
The plane, operated by the local company Busy Bee, crashed during takeoff for a flight to the city of Beni, North Kivu Governor Carly Nzanzu Kasivita's office said in a statement, Al Jazeera reported. There is currently no information what happened with the passengers and crew, or whether there are casualties on the ground.
Rescuers pulled six bodies under the wreckage of the small passenger plane, AFP reported.


Tomato price hits record high at Rs400 a kilo in Karachi
by https://www.dawn.com/authors/107/aamir-shafaat-khan, Aamir Shafaat KhanKARACHI: The price of tomato hit a record high in Karachi on Tuesday and reached Rs400 per kilogram from Rs300-320 per kg on Monday.
In the absence of any landed price of the Iranian tomato, greedy traders also brought the price of Swat and Sindh crop at par with the Iranian tomato rate to make huge profits.
But the local administration, like its past practice, quoted an unrealistic retail rate of Rs253 per kg compared to Rs193 per kg on Monday.
In the first week of November, the official retail rate of tomato was Rs117 per kg and Tuesday’s official price clearly indicated that the government itself was revising the price upward.
There are hardly any traders selling tomato at the control rate.
A representative of wholesalers asks citizens not to buy tomato to break monopoly of a few traders
Traders said a box containing 13-14 kg of tomato was available at Rs4,200-4,500 depending on the quality, thus forcing many traders to suspend purchasing.
The government had last week issued a permit for importing 4,500 tonnes of tomato from Iran, but the arrival of the red fruit had yet to pick up pace in the market, resulting in a persistent hike in the rates in view of rising demand.
Of the 4,500 tonnes, only 989 tonnes had arrived in the country so far, a trader said, adding that he could not confirm whether more quantities arrived at the Taftan border on Tuesday.
People urged to not buy tomato for ‘two-three days’
Falahi Anjuman Wholesale Vegetable Market president Haji Shahjehan said two containers carrying 44 tonnes of tomato had arrived on Sunday while on Tuesday only one container reached the market. This failed to bring any relief for consumers. The wholesale price had crossed over Rs300 from Rs180-220 per kg on Monday, he added.
He blamed the federal government for restricting import to a few people instead of allowing a free import by any trader. As a result, the limited quantities were already booked and sold at the Taftan border. Previously open imports had somewhat kept the tomato prices stable, he said.
“Being president of the wholesale market, I can only urge the customers to restrict their purchases for two to three days as it may break the monopoly of a few traders as well as bring down the tomato prices,” he said.
He claimed that the Sindh crop had started in limited quantities and the price of a 10-kg wooden box of tomato in Mirpurkhas was Rs2,300.
Consumers are paying Rs100 for a mere 250 grams or just four tomatoes. They said the government had yet to take serious notice in checking the landed and selling price of the Iranian tomato to curb profiteering by traders.
Published in Dawn, November 20th, 2019


template<class Variable, class Residual, class Data, class LinearSolver, class Feasibility>
class drake::solvers::fbstab::FBstabAlgorithm< Variable, Residual, Data, LinearSolver, Feasibility >
This class implements the FBstab solver for convex quadratic programs, see https://arxiv.org/pdf/1901.04046.pdf for more details.
FBstab tries to solve instances of the following convex QP:
min. 1/2 z'*H*z + f'*z
s.t. Gz = h
Az <= b
The algorithm is implemented using to abstract objects representing variables, residuals etc. These are template parameters for the class and should be written so as to be efficient for specific classes of QPs, e.g., model predictive control QPs or sparse QPs.
The algorithm exits when: ||π(x)|| <= abs_tol + ||π(x0)|| rel_tol where π is the natural residual function, (17) in https://arxiv.org/pdf/1901.04046.pdf.
- Template Parameters
-
| Variable | storage and methods for primal-dual variables |
| Residual | storage and methods for QP residuals |
| Data | QP specific data storage and operations |
| LinearSolver | solves Newton step systems |
| Feasibility | checks for primal-dual infeasibility |
|
| | FBstabAlgorithm (Variable *x1, Variable *x2, Variable *x3, Variable *x4, Residual *r1, Residual *r2, LinearSolver *lin_sol, Feasibility *fcheck) |
| | Saves the components objects needed by the solver. More...
|
| |
| SolverOut | Solve (const Data *qp_data, Variable *x0) |
| | Attempts to solve the QP for the given data starting from the supplied initial guess. More...
|
| |
| void | UpdateOption (const char *option, double value) |
| | Allows setting of algorithm options. More...
|
| |
| void | UpdateOption (const char *option, int value) |
| |
| void | UpdateOption (const char *option, bool value) |
| |
| Display | get_display_level () const |
| | Getter for display_level_. More...
|
| |
| void | set_display_level (Display v) |
| | Setter for display_level_. More...
|
| |


Icons
Kraken includes support for both SVG icons and icon fonts. As an emerging best practice, it's strongly recommended that you use SVG.
Note: Because of namespacing conflicts, you cannot use SVG and icon fonts together by default. If you plan on using both, change the class names for at least one of them to avoid conflicts.
SVG Sprites
Kraken's build system will generate an SVG sprite from individual SVG files. Alternatively, you can use IcoMoon to generate an SVG sprite for you.
Include the contents of your SVG sprite as a hidden element directly after the opening
tag.
<svg xmlns="http://www.w3.org/2000/svg" hidden>
<symbol id="icon-logo" viewBox="0 0 100 100">
<path d="M92.842 20.437L90.61 47.905 66.19 53.31l-13.6-10.06-.002-26.23 14.45 7.41 25.804-3.993zM65.97 60.827L52.59 50.13v7.048l6.224 5.354-28.008 6.685-10.432-12.403 1.7 24.16 10.02 14.52 26.378-7.8.118-8.64..,"/>
</symbol>
<symbol id="icon-goldfish" viewBox="0 0 100 100">
...
</symbol>
</svg>
Include icons on your site by referencing their ID, which will be the original file name prefixed with icon-
. Add the .icon
class—which sets the height, width, and color to inherit based on its context—and any others to the svg
tag.
<svg class="icon">
<use xlink:href="#icon-logo"></use>
</svg>
Kraken comes with SVG support detection that adds an .svg
class to the
element if supported. If an image is more than decorative, always include supporting text in a
with the .icon-fallback-text
class. This text will display when SVG is not supported by the browser, and is accessible screen readers.
<svg class="icon some-other-class">
<use xlink:href="#icon-twitter"></use>
</svg>
Tweet This
Icon Fonts
IcoMoon is an incredible app for building custom icon fonts.
Add icons to your markup by applying the .icon
class to an empty
tag, as well as the name of the icon prefixed with .icon-
.

While icon fonts are well supported, some browsers—most notably Opera Mini—have issues with them. Kraken comes with icon font support detection that adds a .font-face
class to the
element if supported.
If an icon is more than decorative, always include supporting text in a
with the .icon-fallback-text
class. This text will display when icon fonts are not supported by the browser, and is accessible screen readers.

Tweet This
Learn more about icon fonts in this guide for beginners.


I took lead in the making of a design system for Openbank, the Openbank Design Guidelines, to achieve cross-platform, cross-product consistency and to both accelerate internal production times as well as minimize production risks between teams working across several time zones.
After gaining buy-in from management through a PoC, we put together a team of designers and developers to map and refine/redefine elements and components based on our own approach to Atomic design. We held weekly design review meetings with the bank's stakeholders to gain insight of our client's needs and to be on the same page regarding the latest iterations of the Design language.
By being part of this initiative I gained invaluable knowledge about banking, e-commerce, fintech, and insurtech industries, and became a Design System and DesignOps touchstone inside the company.
Category
B2E, Design systems, Internal tools
Platforms
Web, iOS, Android
Role
Product Designer
Time
1 year, 7 months
Context
About Openbank
Openbank is the digital bank of the Santander Group. It started as a branch of the Santander bank as a telephone bank in 1995. They had a few milestones like being the first real-time online broker in 1999 and being the first bank with native iOS and Android app 2011, but it wans't until their rebrand with Safron and partnership with Globant that things started to pick up steam.
Working with Globant, Openbank launched their new web and apps on 2017 with focus on usability and ease-of-use.
Problem definition
A year went by building features and growing exponentially, and starting 2018 Openbank had two specific concerns regarding design:
Accesibility was being enforced in the EU and they had a few months to become compliant with the Web Content Accesibility Guidelines (WCAG).
Because of growth speed, proper visual QA was slightly neglected, so the number of visual and interaction inconsistencies were starting to show.
Both these problems were being approached separately, and we even had a third separate initiative for responsiveness.
Lastly, my team (Insurances) was having some frictions with the Engineering team (ENG) that I was itching to solve.
Objective
That's when I stumbled upon Design Systems, which at the time were all the rage.
I hypothesized that a properly built Design system for Openbank could potentially solve all the previously stated problems and would even set us up for more sustainable growth in the future.
The stars aligned and UXPin was hosting a week-long event called Design Systems Virtual Summit packed with talks and webinars from industry leading professionals. Back in 2018 going virtual wasn't the norm, so it was a huge opportunity for me to have close contact with experts on the matter.
I asked for the week off to take everything from the Summit in, and thankfully the account accepted. I quickly learned that, before I could even start working on a proper Design System, I had to prove its value.
So first things first, I needed to come up with a proof of concept (POC) to show around.
POC: Buttons
Approach
I paired up with a visual designer working on the consistency problem and decided that in order to gain buy-in we needed to make an impact with the POC; so we started with Buttons, a "fairly simple" element that's basically in every page.
Audit
To highlight the magnitude of the problem, I went through the site taking screenshots of different buttons that already were on production. It wasn't long until I had enough to make my case. =P
Solution
We had some interviews with some frontend engineers to get to know why these inconsistencies reached prod, and part of the problem was that the documentation for designs was only consumed by the Design team. If ever. We talked to our designers and it turned out most of them were just copy-pasting elements from previous files.
So we focused then on what seemed to be the weakest link; the documentation. I started a first draft as a Google Site, so everybody on the account could have easy access to it.
We named the documentation Openbank Design Guidelines (The guideline, for short) and it was purposefully written in English so it could be consumed by our teams in India as well.
We came back with this solution to the engineers and designers that were previously interviewed and they loved the concept.
Having found new allies on the ENG team and after ironing out some details, we presented the POC to the account's management team and they were totally on board as well.
Going for it
That’s when it exploded.
Team
Now I had a team to build the entire thing:
1 Project Manager
2 Business Analysts
1 Tech Director
1 Product Designer (me)
3 Tech Leaders (Android, iOS, Web)
2 Android Developers
2 iOS Developers
2 Frontend Developers
1 Quality Analysts
On the Design side I interacted on a daily basis with basically every designer on the account, which was organized in 4 verticals of work: Public, Onboarding, Private, and Wealth.
Every vertical consisted of:
1 Design Lead
1-2 UX Designers
2-3 Visual Designers
Yes. It was a huge team. I haven’t had that much fun in years. ^_^
My role
Early on I was responsible for the complete end to end process of taking an element into the design system:
Discovery – Auditing verticals to identify most of the use cases.
Ideation – Coming up with a strategy that solves most (if not every) case with regular chechpoints with ENG.
Validation – Having regular meetings with the client and iterating as necessary.
Execution – Building the element in the Design library and giving support to its implementation.
Documentation – Writing the element’s guidelines on The guideline.
Publishing – And communicating status of elements to the rest of the account.
I knew that being owner of the entire process of a project this big wasn’t feasible, so after a couple of weeks, when I had a fairly polished process, I was a able to take some designers to help me with not-so-crucial steps: audits, adding the element to the library, documenting on the Guideline, and communicating status.
These designers were actually from the account and were being rotated back after a couple of months so they would act as ambassadors for the design system on their teams, in an effort to bolster adoption throughout the rest of the account.
This enabled me to keep ownership and my focus on the Ideation and Validation steps, while still overseeing the rest and having direct feedback from other designers regarding the process.
Process
Audit
Ideation
Validation
Execution
Documentation
Publishing
Wrap up
Outcomes
Openbank Design System paved the way (in parallel with an initiative called Model bank) for scaling design and allowing Openbank to grow comfortably into international markets, namely Germany, the Netherlands, Portugal, and Argentina.
Openbank Design System empowered Openbank’s Design team and helped position them as an strategic asset, not just people making things pretty. They were able to grow from a couple of designers to tens in a matter of months.
The design system, which started as an internal effort, was later on sold to the bank after they understood the importance of having a robust design system, and having ownership and agency over it.
This project eventuallly led to me kickstart a Design System Initiative (DSI) inside Globant, and started mentoring other senior designers on the matter.
Next steps
As I mentioned, the bank took ownership of the design system and continued its development on their own. Still, I had sort of a roadmap in mind:
Short and medium term — Finish documenting and adding to Design libraries the current basic components. Build Foundations, Components, and Containers in the Dev library. Come up with a way of taking feedback and contributions for future needs.
Long term — Having live code in the Guideline and add integration to Strorybook. Complete Components and Containers in the Libraries. Refactor the Dev tech stack so all 4 verticals (and 3 platforms) can consume code from just one place.
Learnings
A design system is a common lenguage for teams to craft better experiences faster. And as such it isn’t only about designers, but the entire team. By making sure its easily consumed and retrofed by other roles, such as developers, testers, writers, owners, and managers, you make the design system stronger and more relevant.
A design system isn’t a deliverable. It should be approached as a live product that serves other products. In that regard, it should have a clear mission, defined users, a thought out roadmap, a prioritized backlog, efficient procceses, and so on.
There isn’t a one-size-fits-all solution, since every team is different and a design system, as a tool, should be tailored to the team’s specific needs and work dynamics.


Type Function Object File Library io.* Return value Number Revision Current Public Release (2013.2076) Keywords seek, files Sample code /CoronaSDK/SampleCode/Storage/FileDemo See also io.open()
Sets and gets the file position, measured from the beginning of the file, to the position given by offset plus a base.
The function can be used to get the current file position ("cur"
) or "set"
the file position to the beginning, end, or any position in-between.
In case of success, the function returns the file position as a Number, measured in bytes from the beginning of the file. If this function fails, it returns nil
, plus a String describing the error.
File:seek( [mode] [, offset] )
String. Can be one of the following values:
"set"
: base is position 0 (beginning of the file);"cur"
: base is current position (default);"end"
: base is end of file;The default value for mode is "cur"
, and for offset is 0. Therefore, the call File:seek()
returns the current file position, without changing it; the call File:seek("set")
sets the position to the beginning of the file (and returns 0); and the call File:seek("end")
sets the position to the end of the file, and returns its size.
Number. Specifies the position for the "set"
mode. The number is 0
based (which is the beginning of the file).
local fh = io.tmpfile()
fh:write( "My temporary file data" )
fh:flush() -- ensure data written to file
print( "file position: ", fh:seek() ) -- show current position
fh:seek( "set", 0 ) -- reset file position to beginning
local content = fh:read( "*a" ) -- read all the file
print( "File content: " .. content )
print( "file position: ", fh:seek("end") ) -- show the end position of file