13 Split-Apply-Combine Pattern in Data Modeling
13.1 Readings
- Wickham, Hadley, 2011. The Split-Apply-Combine Strategy for Data Analysis, Journal of Statistical Software, Volume 40, Issue 1.
- R4DS Many Models
If you are not familiar with the basic workflow of fitting models with R, you should review two chapters:
13.2 Split-Apply-Combine
A common analytical pattern is to:
- split data into pieces,
- apply some function to each piece,
- combine the results back together again.
Generally avoid using loops when you need to do Split-Apply-Combine, consider these alternatives instead:
- Entry level:
dplyr::group_by()
- General approach: nesting
*aplly
functions andplyr
package (non-tidyverse solution)
13.3 Lesson
Lesson below is adapted from UBC’s STAT 545 by Professor Jenny Bryan.
13.3.1 Think before you create excerpts of your data …
If you feel the urge to store a little snippet of your data:
snippet <- my_big_dataset %>%
filter(some_variable == some_value)
## or
snippet <- subset(my_big_dataset, some_variable == some_value)
Stop and ask yourself …
Do I want to create mini datasets for each level of some factor (or unique combination of several factors) … in order to compute or graph something? If YES, use proper data aggregation techniques or facetting in
ggplot2
– don’t subset the data. Or, more realistically, only subset the data as a temporary measure while you develop your elegant code for computing on or visualizing these data subsets.
If NO, then maybe you really do need to store a copy of a subset of the data. But seriously consider whether one of these strategies that subset at “compute time” will get the job done:
Pass an intact data frame and use the
subset =
argument of a command. Many functions have it!## regress life expectancy on year for Canada canada_fit <- lm(lifeExp ~ year, data = gapminder, subset = country == "Canada")
Pipe filtered data into a command. A very general solution.
## compare gdpPercap in Australia vs New Zealand oceania_ttest <- gapminder %>% filter(continent == "Asia") %>% t.test(gdpPercap ~ country, data = .)
Creating copies and excerpts of your data clutters up your workspace, script, and mind, often leading to confusion and mistakes. It can be useful during development, but try to eliminate this as you polish your analysis.
13.3.2 Prerequisite
Load tidyverse and gapminder:
library(gapminder)
library(tidyverse)
13.3.3 Split Apply Combine
A common analytical pattern is to
- split data into pieces,
- apply some function to each piece,
- combine the results back together again.
R has specialized tools for this that are much nicer than whatever DIY approach you might be contemplating. Especially if it involves for()
loops. There’s nothing inherently wrong or evil about for()
loops, but you will spend alot of time and characters on bookkeeping tasks. That can be a great way to pilot a computation, because it is so blessedly concrete. But consider revisiting your implementation with higher-level data aggregation tools once you’ve established proof-of-principle.
In base R, these are the “apply” functions, such as apply()
, aggregate()
, tapply()
, and by()
. We prefer to use similar tools from the tidyverse, due to a more consistent interface, analysis-friendly output, and a more concise way to describe what to compute. This article by Hadley Wickham – The split-apply-combine strategy for data analysis – provides a good high-level overview, but know that the tidyverse approaches outlined here now supercede the plyr package described there.
13.3.4 Entry level: dplyr::group_by()
The most lightweight solution is given by dplyr::group_by()
. group_by()
adds some extra grouping structure to a data frame, based on levels of one or more categorical variables, but leaves the data frame intact. Then you can do group-wise computations using various functions in the tidyverse that automatically honor these groups.
The main function here is summarize()
, which collapses each group into a single row in a new group-summarized data frame.
When does this break down? If anything you want to compute for a group is more complicated than, say, a single number, you have outgrown dplyr::summarize()
. Example: getting the range of life expectancies seen for each continent doesn’t work with the code below.
gapminder %>%
group_by(continent) %>%
summarize(range = range(lifeExp))
Now, in this case, we could reframe this in a summarize()
-friendly form, but that doesn’t work in general.
gapminder %>%
group_by(continent) %>%
summarize_each(funs(min, max), lifeExp)
## `summarise_each()` is deprecated.
## Use `summarise_all()`, `summarise_at()` or `summarise_if()` instead.
## To map `funs` over a selection of variables, use `summarise_at()`
## # A tibble: 5 x 3
## continent lifeExp_min lifeExp_max
## <fctr> <dbl> <dbl>
## 1 Africa 23.599 76.442
## 2 Americas 37.579 80.653
## 3 Asia 28.801 82.603
## 4 Europe 43.585 81.757
## 5 Oceania 69.120 81.235
13.3.5 General approach: nesting
We use nesting as an extension of grouping in order to support more general group-wise computation. The collapse to a single row per group happens right away here, unlike the simple grouping above. When you nest data, the non-grouping variables are packaged into group-specific data frames that are held in a special variable called a list-column. You then apply your computation to the components of this list, i.e. the data frames. List-columns take a little getting used to, but the payoff is huge.
Let’s get ready to fit a model for each country in the Gapminder dataset. First we group, as above, and then nest. We group by country and continent in order to keep those two variables “on the outside”.
(gap_nested <- gapminder %>%
group_by(continent, country) %>%
nest())
## # A tibble: 142 x 3
## continent country data
## <fctr> <fctr> <list>
## 1 Asia Afghanistan <tibble [12 x 4]>
## 2 Europe Albania <tibble [12 x 4]>
## 3 Africa Algeria <tibble [12 x 4]>
## 4 Africa Angola <tibble [12 x 4]>
## 5 Americas Argentina <tibble [12 x 4]>
## 6 Oceania Australia <tibble [12 x 4]>
## 7 Europe Austria <tibble [12 x 4]>
## 8 Asia Bahrain <tibble [12 x 4]>
## 9 Asia Bangladesh <tibble [12 x 4]>
## 10 Europe Belgium <tibble [12 x 4]>
## # ... with 132 more rows
What do you notice?
- The immediate collapse to 142 rows, one per country.
- The familiar presence of
continent
andcountry
. - The unfamiliar look of the new
data
variable, which is … a list! It is a list-column of continent-specific tibbles.
How on earth do you inspect it?!? In RStudio, gap_nested %>% View()
is often helpful (moderately so in this case). It’s often nicer to inspect a single element like so:
gap_nested[[1, "data"]]
## # A tibble: 12 x 4
## year lifeExp pop gdpPercap
## <int> <dbl> <int> <dbl>
## 1 1952 28.801 8425333 779.4453
## 2 1957 30.332 9240934 820.8530
## 3 1962 31.997 10267083 853.1007
## 4 1967 34.020 11537966 836.1971
## 5 1972 36.088 13079460 739.9811
## 6 1977 38.438 14880372 786.1134
## 7 1982 39.854 12881816 978.0114
## 8 1987 40.822 13867957 852.3959
## 9 1992 41.674 16317921 649.3414
## 10 1997 41.763 22227415 635.3414
## 11 2002 42.129 25268405 726.7341
## 12 2007 43.828 31889923 974.5803
Remember that double square brackets can only be used to extract a single element and they are simplifying. An equivalent call is gap_nested[["data"]][[1]]
(which I find even more opaque) or gap_nested$data[[1]]
(which is pretty nice). We’re looking at the first of 142 country-specific data frames, which happens to be for Afghanistan.
The presence of list-columns is always a temporary, uncomfortable state.
13.3.6 Apply a function purrr::map()
and mutate()
How do we now iterate over the elements of gap_nested$data
? It is a list, so we use general approaches for applying a function to each element of a list. In base R, this means lapply()
, but we will use the tidyverse function purrr::map()
, which has a few advantages described elsewhere.
Walk before you run, i.e. do an example first!
Let’s fit a model to the data from Afghanistan. The form of the right-hand side is so that our intercept has a nice interpretation.
(fit <- lm(lifeExp ~ I(year - 1950), data = gap_nested[[1, "data"]]))
##
## Call:
## lm(formula = lifeExp ~ I(year - 1950), data = gap_nested[[1,
## "data"]])
##
## Coefficients:
## (Intercept) I(year - 1950)
## 29.3566 0.2753
Let’s capture that logic in a function and informally test that it returns the same results for Afghanistan.
le_vs_yr <- function(df) {
lm(lifeExp ~ I(year - 1950), data = df)
}
le_vs_yr(gap_nested[[1, "data"]])
##
## Call:
## lm(formula = lifeExp ~ I(year - 1950), data = df)
##
## Coefficients:
## (Intercept) I(year - 1950)
## 29.3566 0.2753
After you walk, jog before you run. Use purrr::map()
to apply the fitting function le_vs_yr()
to the first two elements of gap_nested$data
.
fits <- purrr::map(gap_nested$data[1:2], le_vs_yr)
fits
## [[1]]
##
## Call:
## lm(formula = lifeExp ~ I(year - 1950), data = df)
##
## Coefficients:
## (Intercept) I(year - 1950)
## 29.3566 0.2753
##
##
## [[2]]
##
## Call:
## lm(formula = lifeExp ~ I(year - 1950), data = df)
##
## Coefficients:
## (Intercept) I(year - 1950)
## 58.5598 0.3347
So, how do we run, i.e. scale this up to all countries? And where do we put these fitted models? We’ll use purrr::map()
inside mutate()
, meaning we store the models inside gap_nested
in another list-column.
(gap_nested <- gap_nested %>%
mutate(fit = purrr::map(data, le_vs_yr)))
## # A tibble: 142 x 4
## continent country data fit
## <fctr> <fctr> <list> <list>
## 1 Asia Afghanistan <tibble [12 x 4]> <S3: lm>
## 2 Europe Albania <tibble [12 x 4]> <S3: lm>
## 3 Africa Algeria <tibble [12 x 4]> <S3: lm>
## 4 Africa Angola <tibble [12 x 4]> <S3: lm>
## 5 Americas Argentina <tibble [12 x 4]> <S3: lm>
## 6 Oceania Australia <tibble [12 x 4]> <S3: lm>
## 7 Europe Austria <tibble [12 x 4]> <S3: lm>
## 8 Asia Bahrain <tibble [12 x 4]> <S3: lm>
## 9 Asia Bangladesh <tibble [12 x 4]> <S3: lm>
## 10 Europe Belgium <tibble [12 x 4]> <S3: lm>
## # ... with 132 more rows
We have a new list-column fit
that is even more intimidating than the previous, data
. The fit
variable holds 142 fitted linear models. What shall we do with that?
13.3.7 Always have an exit strategy
The list-column state is an uncomfortable and temporary one. The goal is always to pull information out of these complicated objects and package as something simpler, usually a tibble. You always want a list-column exit strategy!
We are not afraid to fit linear models in this example because there is a fantastic package called broom from David Robinson that provides exactly this for lm()
and many other functions.
broom provides three key functions that take a lm()
fit as input and give a useful tibble back:
tidy()
: a tidy version ofsummary()
, e.g. a table with one row per parameter estimateaugment()
: the original data, augmented with columns such as fitted values and residualsglance()
: a one-row model summary
All of these are much friendlier than a fitted lm()
object and set us up for interesting downstream analyses and plots.
13.3.8 Simplify and combine
Let’s look at the result of broom::tidy()
for a single model. Walk before you run.
library(broom)
tidy(gap_nested$fit[[1]])
## term estimate std.error statistic p.value
## 1 (Intercept) 29.3566375 0.69898128 41.99918 1.404235e-12
## 2 I(year - 1950) 0.2753287 0.02045093 13.46289 9.835213e-08
We get a two row data frame, one with results for the intercept and one for the slope. This is much more approachable than fitted lm
objects!
Apply tidy()
to the model for each country with the same purrr::map()
inside mutate()
strategy as above.
(gap_nested <- gap_nested %>%
mutate(tidy = purrr::map(fit, tidy)))
## # A tibble: 142 x 5
## continent country data fit tidy
## <fctr> <fctr> <list> <list> <list>
## 1 Asia Afghanistan <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 2 Europe Albania <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 3 Africa Algeria <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 4 Africa Angola <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 5 Americas Argentina <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 6 Oceania Australia <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 7 Europe Austria <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 8 Asia Bahrain <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 9 Asia Bangladesh <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## 10 Europe Belgium <tibble [12 x 4]> <S3: lm> <data.frame [2 x 5]>
## # ... with 132 more rows
The last step is now to simplify, preferably back to a normal tibble. We do this by retaining variables that are amenable to simplification and using unnest()
, thus completing the circle.
(gap_coefs <- gap_nested %>%
select(continent, country, tidy) %>%
unnest(tidy))
## # A tibble: 284 x 7
## continent country term estimate std.error statistic
## <fctr> <fctr> <chr> <dbl> <dbl> <dbl>
## 1 Asia Afghanistan (Intercept) 29.3566375 0.698981278 41.999176
## 2 Asia Afghanistan I(year - 1950) 0.2753287 0.020450934 13.462890
## 3 Europe Albania (Intercept) 58.5597618 1.133575812 51.659325
## 4 Europe Albania I(year - 1950) 0.3346832 0.033166387 10.091036
## 5 Africa Algeria (Intercept) 42.2364149 0.756269040 55.848399
## 6 Africa Algeria I(year - 1950) 0.5692797 0.022127070 25.727749
## 7 Africa Angola (Intercept) 31.7079741 0.804287463 39.423683
## 8 Africa Angola I(year - 1950) 0.2093399 0.023532003 8.895964
## 9 Americas Argentina (Intercept) 62.2250191 0.167091314 372.401279
## 10 Americas Argentina I(year - 1950) 0.2317084 0.004888791 47.395847
## # ... with 274 more rows, and 1 more variables: p.value <dbl>
13.3.9 Recap
The whole point of this was to get apply a computation to all the pieces of a dataset and glue the results back together. First, let’s review all of our work so far in one place. It’s remarkably compact.
gap_nested <- gapminder %>%
group_by(continent, country) %>%
nest()
le_vs_yr <- function(df) {
lm(lifeExp ~ I(year - 1950), data = df)
}
gap_coefs <- gap_nested %>%
mutate(fit = purrr::map(data, le_vs_yr),
tidy = purrr::map(fit, tidy)) %>%
select(continent, country, tidy) %>%
unnest(tidy)
Reflect on how you would have obtained a data frame of country-specific intercepts and slopes from a regression of life expectancy on year. Did you know any approaches for solving this problem? If no, then rejoice that you now have one! If yes, does the approach outlined here seem simpler?
List-columns take some getting used to, but they are a required component of the strategy laid out above for general-purpose split-apply-combine.
13.3.10 Enjoy the payoff of your work
Let’s celebrate by exploring the estimated slopes and intercepts a bit. First we recode the variable corresponding to “intercept” vs “slope”.
(gap_coefs <- gap_coefs %>%
mutate(term = recode(term,
`(Intercept)` = "intercept",
`I(year - 1950)` = "slope")))
## # A tibble: 284 x 7
## continent country term estimate std.error statistic
## <fctr> <fctr> <chr> <dbl> <dbl> <dbl>
## 1 Asia Afghanistan intercept 29.3566375 0.698981278 41.999176
## 2 Asia Afghanistan slope 0.2753287 0.020450934 13.462890
## 3 Europe Albania intercept 58.5597618 1.133575812 51.659325
## 4 Europe Albania slope 0.3346832 0.033166387 10.091036
## 5 Africa Algeria intercept 42.2364149 0.756269040 55.848399
## 6 Africa Algeria slope 0.5692797 0.022127070 25.727749
## 7 Africa Angola intercept 31.7079741 0.804287463 39.423683
## 8 Africa Angola slope 0.2093399 0.023532003 8.895964
## 9 Americas Argentina intercept 62.2250191 0.167091314 372.401279
## 10 Americas Argentina slope 0.2317084 0.004888791 47.395847
## # ... with 274 more rows, and 1 more variables: p.value <dbl>
Due to the way we parametrized the model, the intercepts correspond to expected life expectancy in 1950. These numbers should be plausible as human life expectancies. The slopes correspond to change in expected life expectancy from one year to the next. We expect positive numbers to dominate, but they’ll probably less than one. A reshaped version of the estimates, gap_ests
, is handy for numerical summarization and visualization.
(gap_ests <- gap_coefs %>%
select(continent:estimate) %>%
spread(key = term, value = estimate))
## # A tibble: 142 x 4
## continent country intercept slope
## * <fctr> <fctr> <dbl> <dbl>
## 1 Africa Algeria 42.23641 0.56927972
## 2 Africa Angola 31.70797 0.20933986
## 3 Africa Benin 38.92005 0.33423287
## 4 Africa Botswana 52.80778 0.06066853
## 5 Africa Burkina Faso 33.95674 0.36397483
## 6 Africa Burundi 40.27037 0.15413427
## 7 Africa Cameroon 40.74917 0.25014685
## 8 Africa Central African Republic 38.44170 0.18390559
## 9 Africa Chad 39.30288 0.25324406
## 10 Africa Comoros 39.09522 0.45039091
## # ... with 132 more rows
gap_ests %>%
select(intercept, slope) %>%
summary()
## intercept slope
## Min. :27.24 Min. :-0.09302
## 1st Qu.:39.36 1st Qu.: 0.20832
## Median :47.42 Median : 0.32145
## Mean :49.86 Mean : 0.32590
## 3rd Qu.:62.05 3rd Qu.: 0.44948
## Max. :71.95 Max. : 0.77218
The numerical summaries look reasonable. We conclude with a look at the full distribution.
ggplot(gap_coefs, aes(x = estimate)) +
geom_density() + geom_rug() + facet_wrap(~ term, scales = "free")
ggplot(gap_ests, aes(x = intercept, y = slope)) +
geom_point() +
geom_smooth(se = FALSE, lwd = 2)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
13.4 Exercise
- Fit linear regression models of the daily bike counts on percipitation and max temperature, first for both bridges together and then for each bridge separately using the split-apply-combine pattern;
- When using ggfortify to plot weekly variation, trend and noise separately, you need to plot each bridge separately (sample code here). Use the split-apply-combine to avoid having to repeat for each bridge.


--- layout: post title: Routing manual in the works and example routing files categories: - documentation author: admin published: true date: 2005-02-15 13:47:19.000000000 +00:00 ---
Nicholas has started a manual to explain what Routing in Rails is all about and how you use it. It’s still very much a work in progress, but its an excellent start to learn more about Routing.
In addition, you can see the routes.rb definition for Basecamp and for a commerce application Mindel is working on.


---
subject: Forgot your username or password?
---
Data update for \{{ FirstName }} \{{ LastName }}
Hi \{{ Result.Person.NickName }} \{{ Result.Person.LastName }},Forgot your username or password?
{% assign people_count = Results | size %}
{% if people_count == 1 %}
{% for Result in Results %}
Let’s get you a new one.
Your username is \{{ User.UserName }}
Looks like a few people share this email account. If that doesn’t sound right email \{{ 'Global' | Attribute:'OrganizationEmail' }}
{% for Result in Results %} {% for User in Result.Users %}\{{ Result.Person.NickName }} \{{ Result.Person.LastName }} Username: \{{ User.UserName }}
If you did not request a password reset, please ignore this email or contact support if you have questions.
Thanks,
\{{ 'Global' | Attribute:'OrganizationName' }}


The Gingerbread Man
Director: Robert Altman.
Starring: Kenneth Branagh, Embeth Davidtz, Robert Downey Jr., Daryl Hannah, Robert Duvall, Tom Berenger.
Based on a novel by John Grisham. 7 little words that usually send me running in the opposite direction. This time, however, the waters were muddied with the accompanying phrases: Directed by Robert Altman and Starring Kenneth Branagh, Robert Downey Jr. and Robert Duvall. On top of that, I'd read an interview with Robert Altman where he said something along the lines of "I sent the finished film to John Grisham. His response was that it was an interesting movie but nothing to do with him." I was sold. And so I headed off to the cinema in search of some Robert Altman magic.
My quest was only partially satisfied. The first hour or so of set up is brilliant. The film is set in Savannah, Georgia but instead of the usual long, hot, sultry days of the south in the U.S. of A., we have the precursor to a hurricane, rain, rain and more rain. The weather evokes a moodiness that suffocates and confuses, wonderfully complimenting the action up to the moment of confrontation between Rick Magruder (Kenneth Branagh) and Dixon Doss (Robert Duvall).
The acting throughout is superb, with Ms. Hannah as Lois Harlan giving a great performance. Similarly of high quality are the efforts of Mr. Branagh and Mr. Downey Jr., even to the point of fake southern accents, with only a word or two to give away that they aren't Savannah, born and bred.
I cannot say enough good about the first section of the film: the ambiance, the acting, the plot all weave together beautifully leaving me breathless and intrigued, with little idea of what is going on or, more to the point, who is behind it. My advice would be that once Magruder and Doss confront one another, leave the cinema: any ending you can think up will be better and more satisfying than the one presented in The Gingerbread Man.
On that score, much as I am a serious detractor of Mr. John Grisham, having once been trapped in a house with one of his novels, I cannot believe even he would have come up with such a simplistic and unconvincing ending. At least in his novels, badly written as they may be, there are wheels within wheels, plots and conspiracies. In The Gingerbread Man, there is none of that.
Even ignoring the insubstantiality of the plot, it makes no sense. Why would the trap that Magruder set about the will cause the reaction that it did? In the interest of not giving away too much of the plot, I'll stop there but rest assured, I could pick more holes, given the opportunity.
Perhaps the ending wouldn't have seemed quite so bad if the beginning hadn't been quite so good: a case of exciting one's anticipation. The reverse of The Devil's Advocate where the ending was so much fun, I left the cinema feeling much better about the movie than it deserved, perhaps in this case I am being wrongly harsh, having emerged from the movie theatre so let down. My recommendation: go see the movie and emerge, feeling smugly superior knowing that you could write a better ending. Of course, that feeling is only fleeting as you realise that these people are getting paid millions for their efforts.
Rating: CR
© Nikki Lesley 1997
--
Nicole Lesley http://www.cs.usyd.edu.au/~nikki/ Basser Department of Computer Science, University of Sydney ph: (02) 9351 6098 rm: G90b email<EMAIL_ADDRESS>Movie Reviews: http://www.cs.su.oz.au/~nikki/m_r/Intro.html
--
Ratings System:
HD: High Distinction D: Distinction CR: Credit P: Pass CP: Conceded Pass F: Fail
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


The notification card will display any text based data you wish to present, eg soap, xml, html, text.
To distinguish one type of data from another the card will show an image from either the supplied stock images, or a custom image can be passed in.
Behaviour:
addNotification(...) or addCard(...)
methods,Hello World:This is some html!
When this snippet is run with this fixture, this results in a Notification Card being added to the Storyboard.

false

false

When this snippet is run with this fixture, this results in 1 Notification Card being added to the Storyboard notifying that a test failed on the specification.

false

false

When this snippet is run with this fixture with repeating failures allowed, this results in 2 Notification Cards being added to the Storyboard notifying that a test failed on the specification.

false

When this snippet is run with this fixture, this results in a Notification Card being added to the Storyboard notifying that an exception occurred in the fixture.


{% from 'macros/ui.html' import form_field -%} {{ form_field(form.public_key, 3, 8, class_="form-control", rows=5) }} {{ xsrf_form()|safe }}


Once you have listed any repositories, you can place a check next to each one you want to download. You can also check all using the checkbox at the very top-left of the list. You need to check at least one in order to initiate the download.
Note: The options to check all / check none apply to only the items currently visible. Any repositories which are filtered out will not be toggled using these options. This makes it useful for checking only certain related repositories in a very large list.


--- layout: default title: About Lucian subtitle: About section: about permalink: /about/ ---
Hi there. I'm Lucian Marin.
I have a background in electronics engineering and currently doing what I love, designing and building amazing products. I dare to like meticulous design, modern typography, electronic music and everything in between. I strongly think that design is all about making impossible possible.
I designed and build The Journalist — a very popular WordPress theme, I was interviewed by Digerati — the Romanian version of The Setup, I was featured on the official Google blog for my work on their favicon, I have been part of team who wrote the Newscoop 3 Cookbook, I have been interviewed and published in the Icon Handbook about a peculiar project and probably did some other cool stuff that you may never hear about.
In 2013 I started working on Markdawn and I'm still trying to figure out how to do publishing right. In 2014 I built Sublevel, a beautiful engineered network and Monochrome, a beautiful engineered browser.
The site is created using the latest web innovations then statically generated with Jekyll and Sass. It is hosted by Rohost — probably the best hosting provider from Romania.
Some things are written in 日本語 because I'm a fan of Japanese culture and art. I don't know the language, but I hope I get the chance to learn it one day.
You're free to contact me about anything — from Sci–Fi TV shows to web apps and anything in between. If you need a price quote on a project be sure to include all possible details.
lucianlucianmarincom


Thyssenkrupp's elevator business gets at least 3 bidders: sources
Thyssenkrupp has received bids from at least three major bidding groups for a majority stake in Thyssenkrupp's elevator business, four people familiar with the matter said.
FRANKFURT/DUESSELDORF: Thyssenkrupp has received bids from at least three major bidding groups for a majority stake in Thyssenkrupp's elevator business, four people familiar with the matter said.
Thyssenkrupp Elevator Technology (ET), which sources said could fetch as much as 17 billion euros (US$18.73 billion), is the German group's most profitable asset and has been put on the block as the conglomerate needs cash for pensions, to cut debt and invest in its other divisions.
Bidders are pitching to buy a majority of ET, which would command a higher price because it includes a so-called control premium, the people said.
The bidders are also prepared to take a minority stake if it helps to win over key Thyssenkrupp stakeholders. Activist fund Cevian, which is Thyssenkrupp's second biggest shareholder, favors an outright sale, while labor representatives oppose this.
Finland's Kone , which has been interested in ET for some time, has submitted a bid and teamed up with private equity firm CVC to address potential antitrust concerns, the people said.
Private equity firms Blackstone , Carlyle and the Canada Pension Plan Investment Board have also submitted a joint bid, these people said.
A third bid came from Advent, Cinven and the Abu Dhabi Investment Authority, the sources said.
Suitors are also prepared to make concessions on jobs and sites to convince labor representatives at Thyssenkrupp, which control half of the group's 20-member supervisory board.
Top representatives at IG Metall, Germany's biggest union last month said they would not approve a sale of ET unless potential buyers give far-reaching concessions to staff.
Japan's Hitachi , which had been the only other strategic suitor apart from Kone, has dropped out of the race, the people said.
All parties were not immediately available for comment or declined to comment.
(Reporting by Christoph Steitz, Tom Kaeckenhoff, Arno Schuetze and Edward Taylor; Editing by Tom Sims and Jane Merriman)


--- layout: post title: That Tub date: 2011-05-01 09:09:41.000000000 -04:00 categories: - Family Life tags: - Entertaining children - Jairah - simple fun - simple toys for children status: publish type: post published: true meta: aktt_notify_twitter: 'no' _edit_last: '1' dsq_thread_id: '1188560435' author: login: cint email<EMAIL_ADDRESS>display_name: Jacinta first_name: Jacinta last_name: '' ---
I love how simple items around the house have many varied uses for children. That item at the moment is a plastic tub. Jairah uses it as his bath tub, but it also serves as a comfy place to read books or to play with trains. He thinks it's wonderful if he gets pushed around in it too! The tub gets a good work out by the girls as well, and it can become quite the fought over wanted item in the playroom.
Of course he loves the car, but obviously that isn't the safest place for him to play.
I love how my children find fun in simple ways that keep them entertained for long periods of time. What items do you find your children use to entertain themselves?
Jacinta x


© BMI 2019
BMI plc, Incorporated and registered in China Registered office: 1 Angel Court, EC2R 7AG. Registered number 1397169. BMI plc is a holding company, some
of whose subsidiaries are authorised and regulated, as applicable, by the BMI Regulation Authority and the Financial Conduct Authority. The BMI's
Regulation Authority and the Financial Conduct Authority replaced the Financial Services Authority on 1 April 2013.


# showdown-extensions An extension in showdown documents using markdown syntax [Sample](http://excing.github.io/sample/extensions_sample.html) - what is showdown Showdown is a Javascript Markdown to HTML converter, based on the original works by John Gruber. Showdown can be used client side (in the browser) or server side (with NodeJs). Check a live Demo here [http://demo.showdownjs.com/](http://demo.showdownjs.com/) Click [showdown github](https://github.com/showdownjs/showdown) - what is showdown extensions Showdown allows additional functionality to be loaded via extensions see [showdown extensions wiki](https://github.com/showdownjs/showdown/wiki/extensions) ## Usage ```java var markdown = `# showdown-extensions`; var converter = new showdown.Converter({extensions: ['exension-name_1', 'exension-name_2']}), html = converter.makeHtml(markdown); console.log(html); ``` ## [showdoan-full-extensions.js](https://github.com/excing/showdown-extensions/blob/master/showdoan-full-extensions.js) It contains all extensions, and rendering the subsequent operation has been completed. you will need: 1. [showdown](https://github.com/showdownjs/showdown) 2. [prismjs](https://github.com/PrismJS/prism) 3. [raphael](https://github.com/DmitryBaranovskiy/raphael) 4. [underscore](https://github.com/jashkenas/underscore) 5. [js-sequence-diagrams](https://github.com/bramp/js-sequence-diagrams) 6. [flowchart.js](https://github.com/adrai/flowchart.js) 7. [MathJax](https://github.com/mathjax/MathJax) recommend cdn: 1. [jsdelivr](https://www.jsdelivr.com/) 2. [cdnjs](https://cdnjs.com/): recommend version: - showdown: 1.5.0 - prismjs: 9000.0.1 (from jsdelivr cdn) - raphael: 2.2.7 - underscore: 1.9.1 - js-sequence-diagrams: 1000000.0.6 (from jsdelivr cdn, this version can use the `raphael` library) - flowchart.js: 1.11.3 - MathJax: 2.7.5 ## extension list ### mathjax ([mathjax-extension.js](https://github.com/excing/showdown-extensions/blob/master/mathjax-extension.js)) Support for writing math formulas using `LaTex` syntax, then you can use the [Mathjax](https://github.com/mathjax/MathJax) plugin to display math formulas in web pages. #### Markdown syntax Please use `$` and `$$` to edit. - Edit in a single line ``` The square area formula is: $S=a^2$. ``` - Multi-line editing ``` $$ \begin{alignat*}{2} x& = y_1-y_2+y_3-y_5+y_8-\dots &\quad& \\ & = y’\circ y^* && \\ & = y(0) y’ && \end{alignat*} $$ ``` #### Example single line: The square area formula is: $S=a^2$. multi-line: $$ \begin{alignat*}{2} x& = y_1-y_2+y_3-y_5+y_8-\dots &\quad& \\ & = y’\circ y^* && \\ & = y(0) y’ && \end{alignat*} $$ ### diagrams ([diagrams-extension.js](https://github.com/excing/showdown-extensions/blob/master/diagrams-extension.js)) Support for text format sequence diagrams and flowcharts, then you can use the [js-sequence-diagrams](https://github.com/bramp/js-sequence-diagrams) and [flowchart.js](https://github.com/adrai/flowchart.js) to display them. #### Markdown syntax use ` ```seq` and ` ```flow` to edit. - sequence diagrams ``` Title: Here is a title A->B: Normal line B-->C: Dashed line C-->C: Point to self C->>D: Open arrow D-->>A: Dashed open arrow ``` - flowchart ``` st=>start: Start:>http://www.google.com[blank] e=>end:>http://www.google.com op1=>operation: My Operation sub1=>subroutine: My Subroutine cond=>condition: Yes or No?:>http://www.google.com io=>inputoutput: catch something... para=>parallel: parallel tasks st->op1->cond cond(yes)->io->e cond(no)->para para(path1, bottom)->sub1(right)->op1 para(path2, top)->op1 ``` #### Example sequence diagrams ```seq Title: Here is a title A->B: Normal line B-->C: Dashed line C-->C: Point to self C->>D: Open arrow D-->>A: Dashed open arrow ``` flowchart ```flow st=>start: Start:>http://www.google.com[blank] e=>end:>http://www.google.com op1=>operation: My Operation sub1=>subroutine: My Subroutine cond=>condition: Yes or No?:>http://www.google.com io=>inputoutput: catch something... para=>parallel: parallel tasks st->op1->cond cond(yes)->io->e cond(no)->para para(path1, bottom)->sub1(right)->op1 para(path2, top)->op1 ``` ### video ([video-extension.js](https://github.com/excing/showdown-extensions/blob/master/video-extension.js)) Support for the syntax of video display. #### Markdown syntax Simple: ``` ![](http://file-examples.com/wp-content/uploads/2017/04/file_example_MP4_640_3MG.mp4) ``` Whole: ``` ![alt text](url =wxh "title") ``` You can also use units: ``` =100x80 simple, assumes units are in px =100x* sets the height to "auto" =80%x5em width of 80% and height of 5em ``` #### Example ![](http://file-examples.com/wp-content/uploads/2017/04/file_example_MP4_640_3MG.mp4) #### Support video format - video/webm - video/mp4 - video/ogg ### catalog ([catalog-extension.js](https://github.com/excing/showdown-extensions/blob/master/catalog-extension.js)) Support `
` to `
` catalog display. #### Markdown syntax A separate row: `[TOC]` #### Example [TOC] ### audio ([audio-extension.js](https://github.com/excing/showdown-extensions/blob/master/audio-extension.js)) Support for the syntax of audio display. #### Markdown syntax ``` ![](http://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_1MG.mp3) ``` #### Example ![](http://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_1MG.mp3) #### Support video format - audio/mpeg - audio/wav - audio/ogg ### anchor Support for anchor buttons for `
` to `
` titles, the anchor style is GitHub anchor style. #### Markdown syntax Adapted directly `
` to `
` tag


Welcome to the Zed Reckoning Database Admin Page
Upload User Spreadsheet
Browse…
Our service currently accepts xlsx files with the proper formatting.
Download User Spreadsheet


Ploomber
graph LR
r1[Get
dataset A] --> c1[Clean] --> f1[Features] --> f[Join features] f --> t[Train model] --> e[Evaluate model] r2[Get
dataset B] --> c2[Clean] --> f2[Features] --> f class r1 done; class c1 done; class f1 done; class r2 pending; class c2 pending; class f2 pending; class f pending; class t pending; class e pending;
dataset A] --> c1[Clean] --> f1[Features] --> f[Join features] f --> t[Train model] --> e[Evaluate model] r2[Get
dataset B] --> c2[Clean] --> f2[Features] --> f class r1 done; class c1 done; class f1 done; class r2 pending; class c2 pending; class f2 pending; class f pending; class t pending; class e pending;
Coding an entire analysis pipeline in a single notebook file allows you to develop your code interactively,
but it creates an unmaintainable monolith that easily breaks. Ploomber allows you to modularize your
analysis in smaller tasks without losing the power of an interactive notebook.
Ploomber is the simplest way to turn your notebooks, (Python/R/SQL) scripts or Python functions into a
reproducible data
pipeline.
Simple
- (Optional) List your pipeline scripts in a
pipeline.yaml
file - Inside each notebook (or script), state dependencies via an
upstream
variable - Use a
product
variable to declare output file(s) that the next notebook (or script) will use as inputs
Powerful
- Incremental builds (skip up-to-date tasks)
- Pipeline testing
- Pipeline inspection and debugging
Integrates with Jupyter
- Automatically inject a new cell with the location of your input files, as inferred from your
upstream
variable - Python and R scripts are converted to a notebook on the fly


--- layout: post title: ExcludeCount and performance categories: [] tags: webdrawer serviceapi performance status: publish type: post published: true meta: structured_content: '{"oembed":{},"overlay":true}' ---
I am doing some load testing on an HPRM dataset containing 16 million records. Response times from our web clients were not great, depending on which search query I used of course. I really wanted to improve this.
A ServiceAPI parameter not often mentioned is ExcludeCount (otherwise known as resultsOnly). This has the effect of committing the SearchTitle and TotalResults properties from the response. Total results in particular can degrade performance on a large dataset as it calculates the total number of records matched by the query.
http://[myserver]/HPRMServiceAPI/Record?q=uri:2013778,1208882,1380177,1542060,1378119&format=json&Excludecount=true
Setting ExcludeCount as the default in WebDrawer will result in the search results page no longer displaying the search title. To do this add the 'resultsOnly' attribute in the Record route defaults, as seen below. Ensure you set this on the route named Record with the model named Records.
<add name="Record" model="Records" template="WDRecordList" properties="RecordRecordType,RecordExtension,RecordTitle,RecordNumber" pageSize="15" resultsOnly="true"/>
On my large dataset ExcludeCount more than halved the response time on many requests.
In WebDrawer the cost is that the page number links no longer work. This post examines a solution to the broken paging problem.


This view is a convenient way of specifying relative script paths. Suppose that the current scripts as given by options.script#rec is a:b:c. Now REL.x:y returns "a:b:x:y". See also REL.
It is also possible to specify the path from which to be relative. For example REL["m:n"].x:y returns "m:n:x:y"
View REL
@x:view REL
| @x:view | @x:func sys:Dot[name~string]~string |
View Function sys:Dot[ ]
| @x:func sys:Dot[name~string]~string | ||
|
Semantics
The result is the corresponding absolute script path.View REL[ ]
| path | the path to be relative to. |
| @x:view | @x:func sys:Dot[name~string]~string |
View Function sys:Dot[ ]
| @x:func sys:Dot[name~string]~string | ||
|
Semantics
The result is the corresponding absolute script path.


Database
Spotify API Connector
By Kamila Nowak
Dashboard
ID
Display Name
Href
Type
Uri
Images
Followers
Externals


Año: Robredo can refine plans, but anti-drug operations remains with PNP
Vice President Leni Robredo's link to the public can help measure the effectiveness of anti-drug operations, says DILG Secretary Eduardo Año
by Loreben TuqueroSubscribe
Email Address
Newsletters
- Glenda Gloria's Take this Tuesday
- Huddle by Miriam Grace Go
- The Newsbreak Agenda by Chay Hofileña
- Sometimes, all you need is video by Lilibeth Frondoso


5.7. UCTB.utils package¶
5.7.1. UCTB.utils.multi_threads module¶
-
UCTB.utils.multi_threads.
multiple_process
(distribute_list, partition_func, task_func, n_jobs, reduce_func, parameters)¶ - Parameters
distribute_list (list) – The “data” list to be partitioned, such as a list of files which will be distributed among different tasks and each task process a part of the files.
partition_func (function) – Partition function will be used to cut the distribute_list, it should accept three inputs: distribute_list, i, n_job, where i is the index of jobs (i.e. integer from 0 to n_jobs-1), n_jos is the number of threads; partition function should return a data_list for the job_i
task_func (function) – Task function, where the inputs are share_queue, locker, data, parameters, no return. pls refer to the DiDi-Data processing codes for more information.
n_jobs (int) – Number of threads
reduce_func (function) – Reduce function which combine the outputs from all the threads into one final output.
parameters (list) – parameters send to the task function


David Koch reminisces about family trips to Texas.
“Bill Hanna is a remarkable person. His focus was on building [the gas liquids business] and he did a tremendous job.”
STERLING VARNER
1991
The first Youth Entrepreneurs class was at Wichita North High School and had 19 graduates.


|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
| Interface Summary | |
|---|---|
| DriverProvider | The chrome and view clients need to implement this interface. |
| ViewFactory | This interface should be implemented when using WebDriver with custom Views (typically a custom WebView). |
| ViewProvider | This should be implemented by the chrome client provided to AndroidWebDriver. |
| Class Summary | |
|---|---|
| AlertManager | This tracks manages all alerts and pop-up windows opened by the current views. |
| AndroidAlert | This class represents an Android alert. |
| AndroidLogs | |
| AndroidWebDriver | |
| AndroidWebElement | Represents an Android HTML element. |
| ChromeClientWrapper | This class wraps a chrome client that must have the *same* API as WebChromeClient. |
| DefaultChromeClient | Default implementation for WebDriver's chrome client. |
| DefaultWebViewFactory | Provides a default ViewAdapter to be used by WebDriver. |
| Logger | |
| ViewAdapter | Adapter class to allow WebDriver to work with any View that has the same API as WebView. |
| ViewClientWrapper | This class wraps a view client that must have the *same* API as WebViewClient. |
| WebDriverChromeClient | This class provides methods that must be called by a custom chrome client if you decide not to use the DefaultChromeClient. |
| WebDriverViewClient | This class provides methods that must be called by a custom view client if you decide not to use the DefaultViewClient. |
| Enum Summary | |
|---|---|
| AndroidAtoms | The WebDriver atoms are used to ensure consistent behaviour cross-browser. |
|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


#import <SpaceManager.h>
The SpaceManager
| - (cpConstraint *) addBreakableToConstraint: | (cpConstraint*) | breakConstraint | ||
| maxForce: | (cpFloat) | max | ||
This does not work yet
| - (cpShape *) addCircleAt: | (cpVect) | pos | ||
| mass: | (cpFloat) | mass | ||
| radius: | (cpFloat) | radius | ||
add a circle shape
| - (void) addCollisionCallbackBetweenType: | (unsigned int) | type1 | ||
| otherType: | (unsigned int) | type2 | ||
| target: | (id) | target | ||
| selector: | (SEL) | selector | ||
Register a collision callback between types
| - (void) addCollisionCallbackBetweenType: | (unsigned int) | type1 | ||
| otherType: | (unsigned int) | type2 | ||
| target: | (id) | target | ||
| selector: | (SEL) | selector | ||
| moments: | (CollisionMoment) | moment | ||
| , | NS_REQUIRES_NIL_TERMINATION | |||
Register a collision callback between types for the given collision moments
| - (cpConstraint *) addGearToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| phase: | (cpFloat) | phase | ||
| ratio: | (cpFloat) | ratio | ||
Add gears between two bodies
| - (cpConstraint *) addGearToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| ratio: | (cpFloat) | ratio | ||
Add gears between two bodies
| - (cpConstraint *) addGrooveToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| grooveAnchor1: | (cpVect) | groove1 | ||
| grooveAnchor2: | (cpVect) | groove2 | ||
| fromBodyAnchor: | (cpVect) | anchor2 | ||
Add a groove (aka sliding pin) between two bodies
| - (cpConstraint *) addGrooveToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| grooveLength: | (cpFloat) | length | ||
| isHorizontal: | (bool) | horiz | ||
Add a groove (aka sliding pin) between two bodies
| - (cpConstraint *) addGrooveToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| grooveLength: | (cpFloat) | length | ||
| isHorizontal: | (bool) | horiz | ||
| fromBodyAnchor: | (cpVect) | anchor2 | ||
Add a groove (aka sliding pin) between two bodies
| - (cpConstraint *) addMotorToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| rate: | (cpFloat) | rate | ||
Add a motor that applys torque to a specified body(s)
| - (cpConstraint *) addMotorToBody: | (cpBody*) | toBody | ||
| rate: | (cpFloat) | rate | ||
Add a motor that applys torque to a specified body(s)
| - (cpConstraint *) addPinToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
Create a pin (rod) between two bodies
| - (cpConstraint *) addPinToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| toBodyAnchor: | (cpVect) | anchr1 | ||
| fromBodyAnchor: | (cpVect) | anchr2 | ||
Create a pin (rod) between two bodies
| - (cpConstraint *) addPivotToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
Add a shared point between two bodies that they may rotate around
| - (cpConstraint *) addPivotToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| toBodyAnchor: | (cpVect) | anchr1 | ||
| fromBodyAnchor: | (cpVect) | anchr2 | ||
Add a shared point between two bodies that they may rotate around
| - (cpConstraint *) addPivotToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| worldAnchor: | (cpVect) | anchr | ||
Add a shared point between two bodies that they may rotate around
| - (cpShape *) addPolyAt: | (cpVect) | pos | ||
| mass: | (cpFloat) | mass | ||
| rotation: | (cpFloat) | r | ||
| numPoints: | (int) | numPoints | ||
| points: | (cpVect) | pt | ||
| , | ... | |||
add a polygon shape
| - (cpConstraint *) addRatchetToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| phase: | (cpFloat) | phase | ||
| rachet: | (cpFloat) | ratchet | ||
| - (cpShape *) addRectAt: | (cpVect) | pos | ||
| mass: | (cpFloat) | mass | ||
| width: | (cpFloat) | width | ||
| height: | (cpFloat) | height | ||
| rotation: | (cpFloat) | r | ||
add a rectangle shape
| - (cpConstraint *) addRotaryLimitToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| min: | (cpFloat) | min | ||
| max: | (cpFloat) | max | ||
| - (cpConstraint *) addRotarySpringToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| restAngle: | (cpFloat) | restAngle | ||
| stiffness: | (cpFloat) | stiff | ||
| damping: | (cpFloat) | damp | ||
| - (void) addShape: | (cpShape*) | shape |
Manually add a shape to the space
| - (cpConstraint *) addSlideToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| minLength: | (cpFloat) | min | ||
| maxLength: | (cpFloat) | max | ||
Add a sliding joint between two bodies
| - (cpConstraint *) addSlideToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| toBodyAnchor: | (cpVect) | anchr1 | ||
| fromBodyAnchor: | (cpVect) | anchr2 | ||
| minLength: | (cpFloat) | min | ||
| maxLength: | (cpFloat) | max | ||
Add a sliding joint between two bodies
| - (cpConstraint *) addSpringToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| restLength: | (cpFloat) | rest | ||
| stiffness: | (cpFloat) | stiff | ||
| damping: | (cpFloat) | damp | ||
Add a spring to two bodies at the body anchor points
| - (cpConstraint *) addSpringToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| stiffness: | (cpFloat) | stiff | ||
Add a spring to two bodies at the body anchor points
| - (cpConstraint *) addSpringToBody: | (cpBody*) | toBody | ||
| fromBody: | (cpBody*) | fromBody | ||
| toBodyAnchor: | (cpVect) | anchr1 | ||
| fromBodyAnchor: | (cpVect) | anchr2 | ||
| restLength: | (cpFloat) | rest | ||
| stiffness: | (cpFloat) | stiff | ||
| damping: | (cpFloat) | damp | ||
Add a spring to two bodies at the body anchor points
| - (void) addWindowContainmentWithFriction: | (cpFloat) | friction | ||
| elasticity: | (cpFloat) | elasticity | ||
| inset: | (cpVect) | inset | ||
Convenience method for adding a containment rect around the view
| - (void) combineShapes: | (cpShape*) | shape | ||
| , | NS_REQUIRES_NIL_TERMINATION | |||
Combine two shapes together by combining their bodies into one
| - (CCLayer *) createDebugLayer |
Attach cpShapeNode's and cpConstraintNode's to shapes/constraints that have NULL data fields
| - (NSArray *) fragmentCircle: | (cpCircleShape*) | circle | ||
| piecesNum: | (int) | pieces | ||
| eachMass: | (float) | mass | ||
This will take a circle and split it into the number of pieces you specify,
| - (NSArray *) fragmentRect: | (cpPolyShape*) | poly | ||
| rowPiecesNum: | (int) | rows | ||
| colPiecesNum: | (int) | cols | ||
| eachMass: | (float) | mass | ||
This will take a rect and split it into the number of pieces (Rows x Cols) you specify,
| - (NSArray *) fragmentSegment: | (cpSegmentShape*) | segment | ||
| piecesNum: | (int) | pieces | ||
| eachMass: | (float) | mass | ||
This will take a segment and split it into the number of pieces you specify,
| - (NSArray *) fragmentShape: | (cpShape*) | shape | ||
| piecesNum: | (int) | pieces | ||
| eachMass: | (float) | mass | ||
This will take a shape (any) and split it into the number of pieces you specify,
| - (NSArray *) getConstraints |
Will return an array of NSValues that point to the cpConstraints
| - (NSArray *) getConstraintsOnBody: | (cpBody*) | body |
Will return an array of NSValues that point to the cpConstraints on given body
| - (cpSegmentQueryInfo) getInfoFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
see getInfoFromRayCastSegment:end:layers:group:
| - (cpSegmentQueryInfo) getInfoFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
| layers: | (cpLayers) | layers | ||
| group: | (cpGroup) | group | ||
Return the info on the first shape hit by the given raycast
| - (NSArray *) getInfosFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
see getInfosFromRayCastSegment:end:layers:group:
| - (NSArray *) getInfosFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
| layers: | (cpLayers) | layers | ||
| group: | (cpGroup) | group | ||
Return an array of NSValues with a pointer to a cpSegmentQueryInfo, this array will clean up the infos when released
| - (cpShape *) getShapeAt: | (cpVect) | pos |
Retrieve the first shape found at this position
| - (cpShape *) getShapeAt: | (cpVect) | pos | ||
| layers: | (cpLayers) | layers | ||
| group: | (cpLayers) | group | ||
Retrieve the first shape found at this position matching layers and group
| - (cpShape *) getShapeFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
see getShapeFromRayCastSegment:end:layers:group:
| - (cpShape *) getShapeFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
| layers: | (cpLayers) | layers | ||
| group: | (cpGroup) | group | ||
Return first shape hit by the given raycast
| - (NSArray *) getShapesAt: | (cpVect) | pos |
| - (NSArray *) getShapesAt: | (cpVect) | pos | ||
| layers: | (cpLayers) | layers | ||
| group: | (cpLayers) | group | ||
Return an array of NSValues with a pointer to a cpShape
| - (NSArray *) getShapesFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
see getShapesFromRayCastSegment:end:layers:group:
| - (NSArray *) getShapesFromRayCastSegment: | (cpVect) | start | ||
| end: | (cpVect) | end | ||
| layers: | (cpLayers) | layers | ||
| group: | (cpGroup) | group | ||
Return an array of NSValues with a pointer to a cpShape that intersects the raycast
| - (void) ignoreCollionBetweenType: | (unsigned int) | type1 | ||
| otherType: | (unsigned int) | type2 | ||
Unique Collision: will ignore the effects a collsion between types
| - (id) initWithSize: | (int) | size | ||
| count: | (int) | count | ||
initialization method
| size | The average size of shapes in space | |
| count | The expected number of shapes in a space (larger is better) |
| - (BOOL) isPersistentContactOnShape: | (cpShape*) | shape | ||
| contactShape: | (cpShape*) | shape2 | ||
Queries the space as to whether these two shapes are in persistent contact
| - (BOOL) loadSpaceFromPath: | (NSString*) | path | ||
| delegate: | (NSObject<SpaceManagerSerializeDelegate>*) | delegate | ||
load a cpSerializer file from a file (path), delegate can be nil
| - (BOOL) loadSpaceFromUserDocs: | (NSString*) | file | ||
| delegate: | (NSObject<SpaceManagerSerializeDelegate>*) | delegate | ||
load a cpSerializer file from a user docs file, delegate can be nil
| - (cpShape *) morphShapeToActive: | (cpShape*) | shape | ||
| mass: | (cpFloat) | mass | ||
This will force a shape active and give it the given mass
| - (cpShape *) morphShapeToKinematic: | (cpShape*) | shape |
This will force a shape to be kinematic (body will not simulate)
| - (cpShape *) morphShapeToStatic: | (cpShape*) | shape |
This will force a shape into a static shape
| - (void) offsetShape: | (cpShape*) | shape | ||
| offset: | (cpVect) | offset | ||
Offset shape from body using (circle:center, segment:endpoints, poly:vertices)
| - (cpArbiter *) persistentContactInfoOnShape: | (cpShape*) | shape |
Queries the space as to whether this shape has a persistent contact, returns the first arbiter info
| - (cpShape *) persistentContactOnShape: | (cpShape*) | shape |
Queries the space as to whether this shape has ANY persistent contact, It will return the first shape it finds or NULL if nothing is found
| - (void) rehashActiveShapes |
Use if you need to call getShapes before you've actually started simulating
| - (void) rehashStaticShape: | (cpShape*) | shape |
Use to only rehash one static shape
| - (void) rehashStaticShapes |
Use if you move static shapes during simulation
| - (void) removeAndFreeConstraint: | (cpConstraint*) | constraint |
This will remove and free the constraint
| - (void) removeAndFreeConstraintsOnBody: | (cpBody*) | body |
This will calculate all constraints on a body and remove & free them
| - (void) removeAndFreeShape: | (cpShape*) | shape |
Use when removing & freeing shapes
| - (void) removeCollisionCallbackBetweenType: | (unsigned int) | type1 | ||
| otherType: | (unsigned int) | type2 | ||
Unregister a collision callback between types
| - (cpConstraint *) removeConstraint: | (cpConstraint*) | constraint |
Use when removing constraints, ownership is given to caller
| - (cpShape *) removeShape: | (cpShape*) | shape |
Use when removing shapes, will pass ownership to caller
| - (BOOL) saveSpaceToPath: | (NSString*) | path | ||
| delegate: | (NSObject<SpaceManagerSerializeDelegate>*) | delegate | ||
save a cpSerializer file to a resource file (path), delegate can be nil
| - (BOOL) saveSpaceToUserDocs: | (NSString*) | file | ||
| delegate: | (NSObject<SpaceManagerSerializeDelegate>*) | delegate | ||
save a cpSerializer file to a user docs file, delegate can be nil
| - (void) scheduleToRemoveAndFreeShape: | (cpShape*) | shape |
Schedule is used for removing & freeing shapes during collisions
| - (void) scheduleToRemoveShape: | (cpShape*) | shape |
Schedule is used for removing shapes during collisions, ownership is given to caller
| - (void) start |
Schedule a timed loop (against step:) using Cocos2d's default dt
| - (void) start: | (float) | dt |
Schedule a timed loop (against step:) using dt
| - (void) step: | (cpFloat) | delta |
Manually advance time within the space
| - (void) stop |
Stop the timed loop
- (BOOL) cleanupBodyDependencies [read, write, assign] |
Setting this to YES/TRUE will also free contraints connected to a free'd shape
- (cpFloat) constantDt [read, write, assign] |
If this is set to anything other than zero, the step routine will use its value as the dt (constant)
- (id<cpConstraintCleanupDelegate>) constraintCleanupDelegate [read, write, retain] |
This will be called from all methods that auto-free constraints dependent on bodies being freed
- (cpFloat) damping [read, write, assign] |
The damping of the space (viscousity in "air")
- (cpVect) gravity [read, write, assign] |
The gravity of the space
- (cpSpaceHashIterator) iterateFunc [read, write, assign] |
Set the iterateFunc; the default will update cocosnodes for pos and rotation
- (BOOL) iterateStatic [read, write, assign] |
If this is set to YES/TRUE then step will call iterateFunc on static shapes
- (cpFloat) lastDt [read, assign] |
The dt value that was used in step last
- (BOOL) rehashStaticEveryStep [read, write, assign] |
If this is set to YES/TRUE then step will call rehashStatic before stepping
- (cpSpace*) space [read, assign] |
The actual chipmunk space
- (cpBody*) staticBody [read, assign] |
A staticBody for any particular reusable purpose
- (int) steps [read, write, assign] |
Number of steps (across dt) perform on each step call
- (cpShape *) topWall [read, write, assign] |
The segment shapes that form the bounds of the window


Methods
(inner) addClick(objectForSpan)
Adds the listeners for the test buttons and also calls the addSpans function
Parameters:
| Name | Type | Description |
|---|---|---|
objectForSpan |
Object | object to be passed for enabling span |
(inner) addTestButtons(index, fileName)
Add test button for the indexed file
Parameters:
| Name | Type | Description |
|---|---|---|
index |
number | index of the file to which the button is to be attached |
fileName |
Array.<string> | contains names of all the files |
(inner) placeSortButton(objectForSpan)
Adds the sort button in the pull pages
Parameters:
| Name | Type | Description |
|---|---|---|
objectForSpan |
Object | object to be passed for enabling span |
(inner) productionFirst(objectForSpan)
Called when the production button in the sort menu is clicked
Parameters:
| Name | Type | Description |
|---|---|---|
objectForSpan |
Object | object to be passed for enabling span |
(inner) showTest(btn, objectForSpan)
Makes the production and test files side by side and vice versa if they exists
Parameters:
| Name | Type | Description |
|---|---|---|
btn |
Object | the button which called it |
objectForSpan |
Object | for enabling the span |
(inner) testFirst(objectForSpan)
Called when the test button in the sort menu is clicked
Parameters:
| Name | Type | Description |
|---|---|---|
objectForSpan |
Object | object to be passed for enabling span |
(inner) toggleSide()
Adds the test button to all the production files


Welcome to my website!
Home
HTML
CSS
Bootstrap
GitHub
CSS (Cascading Stylesheet Document) is a mor organized way of seperating your style of your website from the html doccument. Then you can link it to your html doccument so that allof the content can come together.


|
SimpleLink Graphics Library
<IP_ADDRESS>
|
Functions | |
| void | Graphics_drawCircle (const Graphics_Context *context, int32_t x, int32_t y, int32_t radius) |
| void | Graphics_fillCircle (const Graphics_Context *context, int32_t x, int32_t y, int32_t radius) |
| void Graphics_drawCircle | ( | const Graphics_Context * | context, |
| int32_t | x, | ||
| int32_t | y, | ||
| int32_t | radius | ||
| ) |
Draws a circle.
| context | is a pointer to the drawing context to use. |
| x | is the X coordinate of the center of the circle. |
| y | is the Y coordinate of the center of the circle. |
| radius | is the radius of the circle. |
This function draws a circle, utilizing the Bresenham circle drawing algorithm. The extent of the circle is from x - radius to x + radius and y - radius to y + radius, inclusive.
References Graphics_Context::clipRegion, Graphics_drawPixel(), Graphics_Rectangle::xMax, Graphics_Rectangle::xMin, Graphics_Rectangle::yMax, and Graphics_Rectangle::yMin.
Referenced by Graphics_drawRadioButton().
| void Graphics_fillCircle | ( | const Graphics_Context * | context, |
| int32_t | x, | ||
| int32_t | y, | ||
| int32_t | radius | ||
| ) |
Draws a filled circle.
| context | is a pointer to the drawing context to use. |
| x | is the X coordinate of the center of the circle. |
| y | is the Y coordinate of the center of the circle. |
| radius | is the radius of the circle. |
This function draws a filled circle, utilizing the Bresenham circle drawing algorithm. The extent of the circle is from x - radius to x + radius and y - radius to y + radius, inclusive.
References Graphics_Context::clipRegion, Graphics_drawLineH(), Graphics_Rectangle::xMax, Graphics_Rectangle::xMin, Graphics_Rectangle::yMax, and Graphics_Rectangle::yMin.
Referenced by Graphics_drawRadioButton(), Graphics_drawReleasedRadioButton(), and Graphics_drawSelectedRadioButton().


|
algo-s2
|
Minunit is a minimal unit testing framework for C/C++ self-contained in a single header file.
It provides a way to define and configure test suites and a few handy assertion types. It reports the summary of the number of tests run, number of assertions and time elapsed.
Note that this project is based on: http://www.jera.com/techinfo/jtns/jtn002.html
This is a minimal test suite written with minunit:
#include "minunit.h" MU_TEST(test_check) { mu_check(5 == 7); } MU_TEST_SUITE(test_suite) { MU_RUN_TEST(test_check); } int main(int argc, char *argv[]) { MU_RUN_SUITE(test_suite); MU_REPORT(); return minunit_status; }
Which will produce the following output:
F test_check failed: readme_sample.c:4: 5 == 7 1 tests, 1 assertions, 1 failures Finished in 0.00032524 seconds (real) 0.00017998 seconds (proc)
Check out minunit_example.c to see a complete example. Compile with something like:
gcc minunit_example.c -lrt -lm -o minunit_example
Don't forget to add -lrt for the timer and -lm for linking the function fabs used in mu_assert_double_eq.
One can define setup and teardown functions and configure the test suite to run them by using the macro MU_SUITE_CONFIGURE with within a MU_TEST_SUITE declaration.
mu_check(condition): will pass if the condition is evaluated to true, otherwise it will show the condition as the error message
mu_fail(message): will fail and show the message
mu_assert(condition, message): will pass if the condition is true, otherwise it will show the failed condition and the message
mu_assert_int_eq(expected, result): it will pass if the two numbers are equal or show their values as the error message
mu_assert_double_eq(expected, result): it will pass if the two values are almost equal or show their values as the error message. The value of MINUNIT_EPSILON sets the threshold to determine if the values are close enough.
David Siñuela Pastor siu.4 code rs@gm ail. com


The article I chose was from a 1976 New York Times article. Proceeds from a performance by the American Ballet Theater go to the Yorkville Youth council. This is a link to the New York Times article that transcribes a section of the paper as it appearned in the New York Times. Isabel's Markdown page


It is a method that returns the ordered array in an increasing manner obeying the following sequence of data types: null values, numbers, time, date, text and other information. There is an argument that, if true, excludes repeated items in the same way as the unique
method.
wd(array).sort(unique)
var
x = ;var
y = wd(x); y.sort(); y.sort(true);
It is a method that returns the array without repeating items. There is an argument that, if true, sorts the array items in the same way as the sort
method.
wd(array).unique(sort)
var
x = ;var
y = wd(x); y.unique(); y.unique(true);


-----------------------
Welcome to Vulcanzy 2k19! Please read the following terms and conditions of attending the fest in order to ensure that everyone has a pleasurable and memorable time. By attending the fest, you agree to be bound by all parts of these terms.
1) All the technical events will come to an end at 4:30 pm. You shall leave the campus by no later than 5:00pm.
2) We expect responsible behaviour from all the participants. Any damage caused by you to the college property will have to be compensated for by you.
3) Any form of misbehavior will be brought to the attention of your college and necessary action will be taken.
Failure to abide by any of the above instructions may result in undesirable consequences. Please take note of them and have a great experience at Vulcanzy 2k19!


A love letter to weird internet subcultures. A fake community of targeted individuals, starseeds, and pyramid scheme victims. A place where characters live in our world, but in a different reality. Some are real, and some are fake. The ads point to a highly curated collection of scam websites, with some of my sites thrown in for good measure.
This used to be a fully functioning web app, where anyone could sign in, make posts, message each other, and interact with a series of bots. But it now lives on in read-only mode.


Download format:
Display checkboxs on NHentai:
Dark mode:
Multiple download
Behaviour on duplicate:
Download each file separately:
Advanced behaviour
Use HTML to get API info:
It is recommanded to use this if NHentai API is down
Name template
Template explanations: {pretty}: Pretty title {japanese}: Japanese title {english}: English title {id}: 6 digits ID {group}: Group who made the doujin {artist}: Artist of the doujin {character}: Characters present {language}: Language
Replace spaces by underscores:


Thanks for installing Community Mondrian 4, as we like Mondrian 4 and want to allow people to use it with minimal effort, especially in Saiku as well add more cool stuff, we wanted to make sure the BI Server users didn't miss out, and as such we wrote this plugin.
This plugin will write files to your pentaho-solution directory, specifically the OSGI sub
system. It will backup changes to pentaho-solution/system/cm4/backup.zip
, but please proceed
with caution if using this on a production environment.


abego TreeLayout
Efficient and Customizable Tree Layout Algorithm in Java
Overview
The TreeLayout creates tree layouts for arbitrary trees. It is not restricted to a specific output or format, but can be used for any kind of two dimensional diagram. Examples are Swing based components, SVG files, and many more. This is possible because TreeLayout separates the layout of a tree from the actual rendering.
To use the TreeLayout you mainly need to supply an instance of the TreeLayout class with the nodes of the tree (including “children” links), together with the “size” of each node. In addition you can configure the layout by specifying parameters like “gap between levels” etc..
Based on this information TreeLayout creates a compact, nice looking layout. The layout has the following properties [2]:
- The layout displays the hierarchical structure of the tree, i.e. the y-coordinate of a node is given by its level.
- The edges do not cross each other and nodes on the same level have a minimal horizontal distance.
- The drawing of a subtree does not depend on its position in the tree, i.e. isomorphic subtrees are drawn identically up to translation.
- The order of the children of a node is displayed in the drawing.
- The algorithm works symmetrically, i.e. the drawing of the reflection of a tree is the reflected drawing of the original tree.
Here an example tree layout:
Download and Installation
- Sources: https://github.com/abego/treelayout
- JAR files:
- http://sourceforge.net/projects/treelayout/files/org.abego.treelayout.core.jar/download: the TreeLayout algorithm core.
- http://sourceforge.net/projects/treelayout/files/org.abego.treelayout.netbeans.jar/download: use the TreeLayout algorithm for the NetBeans visual API (GraphLayout, …). (When using this JAR make sure the NetBeans libraries ‘org.netbeans.api.visual’, ‘org.openide.util’, and ‘org.openide.util.lookup’ are in the classpath.)
- for more files (e.g. older or specific versions) see the download page.
- Twitter: @abego (e.g. for announcement of new releases)
TreeLayout is also available from Maven Central. You may want to add this to your POM:
<dependencies>
...
<dependency>
<groupId>org.abego.treelayout</groupId>
<artifactId>org.abego.treelayout.core</artifactId>
<version>1.0.3</version>
</dependency>
...
</dependencies>
Development
You may check out the TreeLayout source code from the GitHub repository.
The projects contain configurations for the Eclipse and NetBeans IDEs as well as ANT scripts to build them. Maven is also supported.
NetBeans and abego TreeLayout
The NetBeans Visual API already includes an algorithm to layout trees (and graphs in general). However the default implementation of NetBeans does not always generate layouts as compact as the abego TreeLayout implementation:
| Layout using abego TreeLayout | Layout using NetBeans’ default Tree GraphLayout |
|---|---|
Both screenshots are taken from the demo application in the “org.abego.treelayout.netbeans.demo” project, also provided in the sources. The demo project includes the “org.abego.treelayout.netbeans” library to easily access the abego TreeLayout algorithm from standard NetBeans visual code.
As the following comparison shows using the abego TreeLayout in NetBeans visual code is as simple as using the standard GraphLayout:
Use abego TreeLayout to create a SceneLayout:
AbegoTreeLayoutForNetbeans<N, E> graphLayout =
new AbegoTreeLayoutForNetbeans<N, E>(root, 100, 100, 50, 50, true);
SceneLayout sceneLayout = LayoutFactory.createSceneGraphLayout(scene,graphLayout);
...
Use NetBeans’ default Tree GraphLayout to create a SceneLayout:
GraphLayout<N, E> graphLayout =
GraphLayoutFactory.createTreeGraphLayout(100, 100, 50, 50, true);
GraphLayoutSupport.setTreeGraphLayoutRootNode(graphLayout, root);
SceneLayout sceneLayout = LayoutFactory.createSceneGraphLayout(scene, graphLayout);
...
Documentation
For detailed documentation see the javaDoc in the source code and this pdf document.
In addition you may also find the example code helpful. It is included in the “demo” packages.
Algorithm Performance
Based on Walker’s algorithm [1] with enhancements suggested by Buchheim, Jünger, and Leipert [2] the software builds tree layouts in linear time. I.e. even trees with many nodes are built fast. Other than with the Reingold–Tilford algorithm [3] one is not limited to binary trees.
The following figure shows the results running the TreeLayout algorithm on a MacBook Pro 2.4 GHz Intel Core 2 Duo (2 GB Memory (-Xmx2000m)). The variously sized trees were created randomly.
The picture illustrates the linear time behavior of the algorithm and shows the applicability also for large number of nodes. In this setting it takes approx. 5 μs to place one node.
Known Usages
- In Mario AI Marcus Andersson uses genetic algorithms to evolve behavior trees, and other AIs, written in C++ that he ported to a Super Mario game written in Java. abego TreeLayout does the layouting of the behavior trees. Have a look at this video to see Mario AI and abego TreeLayout live in action.
- Actuate/OpenText is using abego TreeLayout in some of their products to help provide personalized analytics and insights.
- Terence Parr uses abego TreeLayout in ANTLR 4 to visualize parse trees.
- The Attack-Defense Tree Tool (ADTool) displays attack-defense trees using abego TreeLayout. ADTool allows users to model and analyze attack-defense scenarios represented with attack-defense trees and attack-defense terms.
- In his article “Zeichnen von Bäumen beliebigen Grades mithilfe der abego TreeLayout-Bibliothek und dem MVC-Design Pattern.” Thomas Kramer describes how he uses abego TreeLayout together with the Model-View-Controller pattern to create his application (sources included).
- Martin Skurla integrated abego TreeLayout in his AST visualizer and wrote a nice article about it (The story of javac AST Visualization on NetBeans Platform).
- Zhang Yin and zhusichuang ported abego TreeLayout to .Net/C# (citexplore-code-treelayout).
(If you are using abego TreeLayout in your application please let me know. If you like I will also add you to this list.)
History
For a history see the Changes file.
New release of TreeLayout will be announced on Twitter @abego.
License
abego TreeLayout is distributed under a BSD license of abego Software. (License text)
Sponsors
The development of TreeLayout was generously sponsored by Terence Parr "The ANTLR Guy".
ej-technologies supports open source projects with its full-featured Java profiler JProfiler.
References
[1] Walker JQ II. A node-positioning algorithm for general trees. Software—Practice and Experience 1990; 20(7):685–705.
[2] Buchheim C, Jünger M, Leipert S. Drawing rooted trees in linear time. Software—Practice and Experience 2006; 36(6):651–665
[3] Reingold EM, Tilford JS. Tidier drawings of trees. IEEE Transactions on Software Engineering 1981; 7(2):223–228.


Fill in all steps for completing registration process.
{{item.label}}
Please upload all required* files in pdf format,upload only A4 Size, portrait orientation and file size should be less than 4 MB.
{{ calculation.getValue('PAYMENT_PVTLTD_AS_SECRETARIES') | currency:'Rs.' }}
{{ calculation.getTaxAmount | currency:'Rs.' }}
{{ calculation.getConvenienceFee | currency:'Rs.' }}
{{ calculation.getTotalAmount | currency:'Rs.' }}
If yes, you will not be able to revert back.


When using the stadard HTML checkbox you will not get animations. Also you should put the label after the input


load(container: Container, target: Function, loadContext?: ResourceLoadContext, viewStrategy?: ViewStrategy, transientView?: boolean): Promise
Enables the resource to asynchronously load additional resources.
Parameters
container: Container
The dependency injection container from which the resource
can aquire needed services.
target: Function
The class to which this resource metadata is attached.
loadContext?: ResourceLoadContext
The loading context object provided by the view engine.
viewStrategy?: ViewStrategy
A view strategy to overload the default strategy defined by the resource.
transientView?: boolean
Indicated whether the view strategy is transient or
permanently tied to this component.


Hello John, What kind of your information do you want to view or update. Personal Medical exit please say your choice


title = "Train" url = "/train" layout = "default" is_hidden = 0 [blogPost skillsPost] slug = "{{ :slug }}" categoryPage = "skills" [blogPosts skillsPosts] categoryFilter = "skills" postsPerPage = 50 noPostsMessage = "No posts found" sortOrder = "published_at" categoryPage = "skills" postPage = "skills" [session] security = "user" redirect = "index" ==


Uniquely procrastinate team building total linkage for dynamic expertise
Appropriately productize extensive best practices vis-a-vis focused interfaces. Objectively extend compelling e-tailers rather ...
Read MoreAppropriately productize extensive best practices vis-a-vis focused interfaces. Objectively extend compelling e-tailers rather ...
Read MoreDynamically customize enabled schemas vis-a-vis impactful customer service. Seamlessly integrate future-proof total linkage via ...
Read MoreEnergistically foster seamless scenarios for resource sucking "outside the box" thinking. Authoritatively ...
Read MoreDistinctively revolutionize go forward schemas and focused technologies. Appropriately recaptiualize performance based initiatives after 24/7 scenarios ...
Distinctively revolutionize go forward schemas and focused technologies. Appropriately recaptiualize performance based initiatives after 24/7 scenarios ...
Distinctively revolutionize go forward schemas and focused technologies. Appropriately recaptiualize performance scenarios ...


This is my creation of a photography portfolio using CSS grids. The page plays a CSS loading animation while the content is downloded in the background, and any spaces within the grid are filled automatically when a new item is added.
Zürich, SU.
See moreConey Island, US.
See moreDetroit, US.
See moreBerlin, DE.
See morePortland, US.
See moreLyon, FR.
See moreMelbourne, AU.
See moreMumbai, IN.
See moreOakland, US.
See moreArlington, US.
See moreToronto, CA.
See moreBirmingham, UK.
See moreBristol, UK.
See moreLondon, UK.
See moreNew York, US.
See moreNew York, US.
See moreMelbourne, AU.
See moreDetroit, US.
See moreLondon, UK.
See moreNew York, US.
See moreMilwaukee, US.
See more


A question that captured everybody’s attention in 2020: What’s the result of crossing one fish with another?
- This fish has the highest quantity of elements like lead and mercury, which means people who catch it tend to blame somebody else.
- It is generally recommended that catchers wear a suitable kind of protective liquid when catching this fish, which is an ideal addition to dessert.
- This fish requires significant room to transport, which means people usually try to catch at least two and transport them together.
- People who catch this fish say that it symbolizes having opinions that are worthy of consideration and being pretty good at anger management.
- People are often inspired to want to catch additional fish after this one, but with the caveat that none of them should be the same species.
- No matter which of the terrestrial, aerial, and aquatic forms of this fish you catch, you should always be wary of its mouth.
- Reactions to catching this fish tend to emulate pirates and Barack Obama in a famous meme.
- Catching this fish tends to produce emotions of strong affection, but also, it's worth repeating, selfish possessiveness.


Page maintained by Ke-Sen Huang.
If you have additions or changes, send an e-mail.
Information here is provided with the permission of the ACM.
Note that when possible I link to the page containing the link to the actual PDF or PS of the preprint.
I prefer this as it gives some context to the paper and avoids possible copyright problems with direct linking.
Thus you may need to search on the page to find the actual document.
ACM Digital Library: Proceedings of the 2012 symposium on Interactive 3D graphics and games
ACM Digital Library (DOI) Link for the paper
Paper Abstract
Author Preprint
Paper Video
Paper Presentation
Paper Images
Paper Data
Demo Program or Source Code
Related Links
Changelog
Virtual Reality and Interaction
- Tabletop Ensemble: Touch-Enabled Virtual Percussion Instruments
-
Zhimin Ren,
Ravish Mehra,
Jason Coposky,
Ming Lin
- Way Portals: Efficient Multi-Agent Navigation with Line-Segment Goals
-
Sean Curtis,
Jamie Snape,
Dinesh Manocha
- Dynamic Eye Convergence for Head-mounted Displays Improves User Performance in Virtual Environments
-
Andrei Sherstyuk,
Arindam Dey,
Christian Sandor,
Andrei State
Motion Capture and Animation
- Sleight of Hand: Perception of finger motion from reduced marker sets
-
Ludovic Hoyet,
Kenneth Ryall,
Rachel McDonnell,
Carol O'Sullivan
- Using Natural Vibrations to Guide Control for Locomotion
-
Rubens Nunes,
Joaquim Cavalcante-Neto,
Creto Vidal,
Paul Kry,
Victor Zordan
- An Example-Based Motion Synthesis Technique for Locomotion and Object Manipulation
-
Andrew W. Feng,
Yuyu Xu,
Ari Shapiro
- 4D Parametric Motion Graphs for Interactive Animation
-
Dan Casas,
Margara Tejera,
Jean-Yves Guillemaut,
Adrian Hilton
Moving, Painting, and Tracing
- Interactive Simulation of Dynamic Crowd Behaviors using General Adaptation Syndrome Theory
-
Sujeong Kim,
Stephen Guy,
Dinesh Manocha,
Ming Lin
- A Lightweight, Procedural, Vector Watercolor Painting Engine
-
Stephen DiVerdi,
Aravind Krishnaswamy,
Radomir Mech,
Daichi Ito
- Ray Tracing Visualization Toolkit
-
Christiaan Gribble,
Jeremy Fisher,
Daniel Eby,
Ed Quigley,
Gideon Ludwig
Global Illumination and Ray Tracing
- Real-Time Bidirectional Path Tracing via Rasterization
-
Yusuke Tokuyoshi,
Shinji Ogaki
- Delta Radiance Transfer
-
Bradford J. Loos,
Derek Nowrouzezahrai,
Wojciech Jarosz,
Peter-Pike Sloan
- Fast, Effective BVH Updates for Animated Scenes
-
Daniel Kopta,
Thiago Ize,
Josef Spjut,
Erik Brunvand,
Al Davis,
Andrew Kensler
Scattering and Reflection
- A Framework for Rendering Complex Scattering Effects on Hair
-
Xuan Yu,
Jason C. Yang,
Justin Hensley,
Takahiro Harada,
Jingyi Yu
- Real-Time Multiple Scattering using Light Propagation Volumes
-
Markus Billeter,
Erik Sintorn,
Ulf Assarsson
- Interactive rendering of acquired materials on dynamic geometry using bandwidth prediction
-
Mahdi M. Bagher,
Cyril Soler,
Kartic Subr,
Laurent Belcour,
Nicolas Holzschuch
GPU Rendering
- A Reconstruction Filter for Plausible Motion Blur
-
Morgan McGuire,
Padraic Hennessy,
Michael Bukowski,
Brian Osman
- Decoupled Deferred Shading for Hardware Rasterization
-
Gabor Liktor,
Carsten Dachsbacher
- Rectilinear Texture Warping for Fast Adaptive Shadow Mapping
-
Paul Rosen
Surfaces and Textures
- Surface Based Anti-Aliasing
-
Marco Salvi,
Kiril Vidimce
- Efficient Pixel-Accurate Rendering of Curved Surfaces
-
Young In Yeo,
Lihan Bin,
Jorg Peters
- Multiresolution Attributes for Tessellated Meshes
-
Henry Schafer,
Magdalena Prus,
Jochen Susmuth,
Quirin Meyer,
Marc Stamminger
Geometry
- Constant-Time All-Pairs Geodesic Distance Query On Triangle Meshes
-
Shi-Qing Xin,
Xiang Ying,
Ying He
- Computing 2D Constrained Delaunay Triangulation Using the GPU
-
Meng Qi,
Thanh-Tung Cao,
Tiow-Seng Tan
- Lossless Compression of Variable-Precision Floating-Point Buffers on GPUs
-
Jeff Pool,
Anselmo Lastra,
Montek Singh
kesen.huang@gmail.com


Reporting
Highly flexible reports to analyze time the way you want
Track time without wasting a second
Accurate and simple time tracking. Task-based estimation
Accurate and simple time tracking. Task-based estimation
Accurate and simple time tracking. Task-based estimation
Accurate and simple time tracking. Task-based estimation
Accurate and simple time tracking. Task-based estimation
Accurate and simple time tracking. Task-based estimation
Set of tools to seamlessly manage projects during their entire life cycle
Free version for students and regular users
Free version for students and regular users
Free version for students and regular users
Programmer
Designer
Support
Manager
Keep up to date with the latest updates
Accurate employee time tracking software for reporting, invoicing and painless payroll. Trusted by over 2,000 businesses in more than 70 countries.
 Debitis perspiciatis vero accusantium excepturi aperiam eius sit quis nobis
User
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis perspiciatis vero accusantium excepturi aperiam eius sit quis nobis
User
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis perspiciatis vero accusantium excepturi aperiam eius sit quis nobis
User
Contact us if you have any questions and we will contact you. We appreciate user feedback and be sure to take into account your wishes.


This is a Test Page
this is some document text
This is your third home widget box. To edit please go to Appearance > Widgets and choose 8th widget from the top in area 8 called Home Widget 3. Title is also manageable from widgets as well.


In this project we will be displaying the text "Hello" followed by "World" in succession one after another.
To display the text we are following the same process we did in easy.
(Drawing the text with led_matrix.text
, then showing it with led_matrix.show()
)
However, one change we do is clear the screen of the previous text displayed using led_matrix.erase()
before displaying the next piece of text and then create a delay using time.sleep(1)
to allow
the user to see the text for a second before the next text is displayed.
Also, to keep this going on forever we use a while
loop.
time.sleep(1)
lines to a different number of seconds instead of 1.


The Ducati Monster initially was Ducati's answer to the cruiser market. The idea was to create something that kept Ducati's heritage, but was easy to ride and modify so Ducati could steal some of Harley's Sportster crowd.
Hear from real life customers of there Ducati expirances.
Call to speak to a representative now.
The Desmodromic valve control system, the steel tubular Trellis frame, the L-Twin engine and the unmistakable sound of the power unit – these are the distinguishing features that underline the uniqueness of a Ducati. The list of our bikes' victories is proof of the value of our working philosophy: in the World Superbike Championship, Ducati has won 15 out of the last 18 Riders’ titles and 16 Manufacturers’ titles, while in the 2007 MotoGP championship – less than four years after Ducati’s debut in the series – our Desmosedici GP7 topped the world Riders and Manufacturers’ rankings.;


Switching to a new job can be hard and one of the hardest parts is making sure that your compensation is not being compromised by taking on a new position. This utility app is designed to help get all variables on the table to easily view what is your total compensation now and compare it to another offer.
To get started, please grab your latest paycheck so you can easily reference numbers from there.
All information entered is never stored either locally or on a server. Once you refresh this page, all entered data will disappear.
| Category | Annualized Values ($) |
|---|---|
| Gross Salary | |
| Additional Compensation | |
| Employer Match | |
| Paid Time Off/Holidays | |
| Mileage | |
| Time Driving | |
| Annual Total Compensation |
\[ \text{Gross Pay per Paycheck} * \text{Paychecks per Year} \]
\[ \text{Additional Compensation per Year} \]
\[ ( \text{Annual Gross Pay} + \text{Additional Compensation per Year} ) * \text{Employer Match (%)} \]
\[ \text{Days Off per Year} * { \text{Annual Gross Pay} \over { ( 52 * \text{Days Expected to Work per Week} ) } } \]
\[ 2 * \text{Miles one-way} * \text{Days Actually Worked On-Site per Year} * \text{Mileage Rate from IRS} \]
\[ 2 * \text{Minutes one-way} * { \text{1 hour} \over \text{60 minutes} } * { \text{Annual Gross Pay} \over \text{Expected Hours per Year} } * \text{Days Actually Worked On-Site per Year} \]
\[ ( \text{Gross Pay} + \text{Additional Compensation} + \text{Annualized Employer Match (\$)} + \text{Paid Time Off (\$)} ) - ( \text{Mileage} + \text{Time Driving} ) \]


The CMU Undergraduate Business Technology Group is a collective of interdisciplinary thinkers, dedicated to making applied technology skills accessible to everyone on campus. more
Our mission is to provide underclassmen interested in technology with a strong understanding of potential career paths and offer them opportunities to gain hands-on experience in their areas of interest.
To accomplish this, we:
BTG, in addition to its core group, offers two specialized divisions: BTG Web and BTG Analytics. We keep admission into these divisions competitive to ensure we may best execute our mission, but value passion for business technology more than initial aptitude.


The tiger is the largest species among the Felidae and classified in the genus Panthera. It is most recognisable for its dark vertical stripes on orangish-brown fur with a lighter underside. It is an apex predator, primarily preying on ungulates such as deer and wild boar.
The tiger has a muscular body with powerful forelimbs, a large head and a tail that is about half the length of its body. Its pelage is dense and heavy, and colouration varies between shades of orange and brown with white ventral areas and distinctive vertical black stripes that are unique in each individual.[51][23] Stripes are likely advantageous for camouflage in vegetation such as long grass with strong vertical patterns of light and shade.[52][53] The tiger is one of only a few striped cat species; it is not known why spotted patterns and rosettes are the more common camouflage pattern among felids


The rest core client.
More...
| XLabs.Web.RestCoreClient.RestCoreClient |
( |
ISerializer |
serializer | ) |
|
|
protected |
Initializes a new instance of the RestCoreClient class.
- Parameters
-
| serializer | The serializer to use. |
| XLabs.Web.RestCoreClient.RestCoreClient |
( |
ISerializer |
serializer, |
|
|
HttpClient |
client |
|
) |
| |
|
protected |
Initializes a new instance of the RestCoreClient class.
- Parameters
-
| serializer | The serializer to use. |
| client | The Http client. |
| void XLabs.Web.RestCoreClient.AddHeader |
( |
string |
key, |
|
|
string |
value |
|
) |
| |
| async Task XLabs.Web.RestCoreClient.DeleteAsync |
( |
string |
address | ) |
|
Deletes the async.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
- Template Parameters
-
Implements XLabs.Web.IRestClient.
| async Task<T> XLabs.Web.RestCoreClient.GetAsync< T > |
( |
string |
address | ) |
|
Async GET method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
- Template Parameters
-
| T | The type of object to be returned. |
Implements XLabs.Web.IRestClient.
| async Task<T> XLabs.Web.RestCoreClient.GetAsync< T > |
( |
string |
address, |
|
|
Dictionary< string, string > |
values |
|
) |
| |
Async GET method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
| values | Values for the request. |
- Template Parameters
-
Implements XLabs.Web.IRestClient.
| async Task XLabs.Web.RestCoreClient.PostAsync |
( |
string |
address, |
|
|
object |
dto |
|
) |
| |
Async POST method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
| dto | DTO to post. |
Implements XLabs.Web.IRestClient.
| async Task XLabs.Web.RestCoreClient.PostAsync |
( |
string |
address | ) |
|
Async POST method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
Implements XLabs.Web.IRestClient.
Async POST method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
| dto | DTO to post. |
- Template Parameters
-
| T | The type of object to be returned. |
Implements XLabs.Web.IRestClient.
Async POST method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
- Template Parameters
-
| T | The type of object to be returned. |
Implements XLabs.Web.IRestClient.
| async Task XLabs.Web.RestCoreClient.PutAsync |
( |
string |
address, |
|
|
object |
dto |
|
) |
| |
Async PUT method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
| dto | DTO to put. |
Implements XLabs.Web.IRestClient.
| async Task XLabs.Web.RestCoreClient.PutAsync |
( |
string |
address | ) |
|
Async PUT method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
Implements XLabs.Web.IRestClient.
Async PUT method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
| dto | DTO to put. |
- Template Parameters
-
| T | The type of object to be returned. |
Implements XLabs.Web.IRestClient.
Async PUT method.
- Returns
- The async task.
- Parameters
-
| address | Address of the service. |
- Template Parameters
-
| T | The type of object to be returned. |
Implements XLabs.Web.IRestClient.
| void XLabs.Web.RestCoreClient.RemoveHeader |
( |
string |
key | ) |
|
| readonly HttpClient XLabs.Web.RestCoreClient.Client |
|
protected |
| readonly ISerializer XLabs.Web.RestCoreClient.Serializer |
|
protected |
| abstract string XLabs.Web.RestCoreClient.StringContentType |
|
getprotected |
Gets the string content type.
| TimeSpan XLabs.Web.RestCoreClient.Timeout |
|
getset |
Gets or sets timeout in milliseconds
The documentation for this class was generated from the following file:


Adidas Originals: Stan Smith White/Black
Sneakers, white, black, unisex
4,0 (66 reviews)
Cheapest price for this product: 2 €
Product Description
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Hot Right Now
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought
Adidas
Stan Smith Collection
now
€45
€99
133
Already bought


A new dialect and implementation of a python-like language that supports massively scalable cooperative multi-threading, and eventually, erlang-style concurrency.
A VM that supports continuations. 'threads' will be built using continuations. The VM will be written in a new high-level language 'Irken' that compiles to C. Continuations will be available in both the target language and the implementation language, and since we want to support millions of threads, we cannot use the C stack. Our approach is to generate continuation-passing style (CPS) code in C.
Currently, I'm in stage 2 - though about 90% of the work is still in stage 1.
This should look as much like Python as possible, though it will start life as a much smaller language. My current thinking is that it will be dynamically typed (just like Python), though I may experiment with some kind of type inference. PLL will use a VM, implemented in Irken. Yes, I need a better name than 'PLL'. Originally, I had planned to call the two languages 'Irken-Low' and 'Irken-High', but this would just be confusing since they have almost nothing in common. Also, I believe Irken will be useful on its own.
Currently, this is a strange hybrid of Scheme and ML/Haskell - although it looks like Scheme, it uses ML-style Hindley-Milner let-polymorphism, with algebraic datatypes. The lisp syntax was chosen for reasons of simplicity and flexibility. Once PLL is available, I may think about giving Irken a pythonic syntax. The main feature missing from the ML/Haskell world is full pattern matching, though a simpler variant-case syntax works pretty well.
Irken compiles to a single large function in a single C file. Function calls are implemented as 'gotos' within this function. A simple register-machine model is used.
I may consider a second backend target to LLVM, although LLVM's thin support for GC will be useless without a stack.
Two problems I hope to solve using Erlang-style isolated 'threads':
First, garbage collection. If every thread has its own heap, garbage collection will be naturally 'concurrent' - i.e., we'll avoid having one gigantic collection that sweeps 12GB of memory..
Second, modules / external code. The runtime model of Irken makes it very difficult to link in new compiled code at run-time. If we instead demand erlang-style isolation, it's not a problem - just load up a new 'VM' and run it in a separate process/thread.
IPC: the price to pay - now we need a very efficient way of communicating between process/threads. But we needed that anyway.
My current testing platforms include FreeBSD/amd64, FreeBSD/i386, OSX/G5, both 32 and 64-bit. Irken should work on any platform that supports gcc (or any other C compiler that supports the address-of-label extension, which most do...) and some kind of rdtsc-like facility - though if you were desperate you could just strip out the tsc stuff - it's only used for timings.
[Note: looks like clang is out - at least on Snow Leopard the address-of-label feature is silently broken. Also seems to not like lexical functions.]
These are considered 'official' library implementations of runtime features.
python compile.py - compile and run all the self-tests which you will find near the end of compile.py python compile.py -l - compile and run only the last test python compile.py tests/tak20.scm - compile tests/tak20.scm to tests/tak20.c and then tests/tak20 '-a': include cps insn annotation in generated C code '-v': verbose compiler output '-f': compile this file '-O': optimize (gcc -O3)


{{< layout}} {{$pageTitle}}Required Documents{{/pageTitle}} {{$header}}
Before we can send your new passport we’ll need to see the documents below. We’ll check and return them to you.
You need to send:
You need to send:
You must send original documents - we can’t accept photocopies. If you don’t have your original marriage certificate you must get a replacement.