Provides a consistent interface to the 'Keras' Deep Learning Library directly from within R. 'Keras' provides specifications for describing dense neural networks, convolution neural networks (CNN) and recurrent neural networks (RNN) running on top of either 'TensorFlow' or 'Theano'. Type conversions between Python and R are automatically handled correctly, even when the default choices would otherwise lead to errors. Includes complete R documentation and many working examples.
| Version: | 0.6.1 |
| Depends: | R (≥ 2.10) |
| Imports: | reticulate (≥ 0.7) |
| Suggests: | knitr, rmarkdown, testthat, covr |
| Published: | 2017-06-01 |
| Author: | Taylor Arnold [aut, cre] |
| Maintainer: | Taylor Arnold <taylor.arnold at acm.org> |
| BugReports: | http://github.com/statsmaths/kerasR/issues |
| License: | LGPL-2 |
| URL: | https://github.com/statsmaths/kerasR |
| NeedsCompilation: | no |
| SystemRequirements: | Python (>= 2.7); keras <https://keras.io/> (>= 2.0.1) |
| Materials: | NEWS |
| CRAN checks: | kerasR results |
| Reference manual: | kerasR.pdf |
| Vignettes: |
R Interface to the Keras Deep Learning Library |
| Package source: | kerasR_0.6.1.tar.gz |
| Windows binaries: | r-devel: kerasR_0.6.1.zip, r-release: kerasR_0.6.1.zip, r-oldrel: kerasR_0.6.1.zip |
| OS X binaries: | r-release: kerasR_0.6.1.tgz, r-oldrel: kerasR_0.6.1.tgz |
| Old sources: | kerasR archive |
Please use the canonical form https://CRAN.R-project.org/package=kerasR to link to this page.


| vec_ptype2.logical {vctrs} | R Documentation |
vec_ptype2()
defines the coercion hierarchy for a set of related
vector types. Along with vec_cast()
, this generic forms the
foundation of type coercions in vctrs.
vec_ptype2()
is relevant when you are implementing vctrs methods
for your class, but it should not usually be called directly. If
you need to find the common type of a set of inputs, call
vec_ptype_common()
instead. This function supports multiple
inputs and finalises the common type.
## S3 method for class 'logical' vec_ptype2(x, y, ..., x_arg = "", y_arg = "") ## S3 method for class 'integer' vec_ptype2(x, y, ..., x_arg = "", y_arg = "") ## S3 method for class 'double' vec_ptype2(x, y, ..., x_arg = "", y_arg = "") ## S3 method for class 'complex' vec_ptype2(x, y, ..., x_arg = "", y_arg = "") ## S3 method for class 'character' vec_ptype2(x, y, ..., x_arg = "", y_arg = "") ## S3 method for class 'raw' vec_ptype2(x, y, ..., x_arg = "", y_arg = "") ## S3 method for class 'list' vec_ptype2(x, y, ..., x_arg = "", y_arg = "") vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
x, y |
Vector types. |
... |
These dots are for future extensions and must be empty. |
x_arg, y_arg |
Argument names for |
For an overview of how these generics work and their roles in vctrs,
see ?theory-faq-coercion
.
For an example of implementing coercion methods for simple vectors,
see ?howto-faq-coercion
.
For an example of implementing coercion methods for data frame
subclasses, see
?howto-faq-coercion-data-frame
.
For a tutorial about implementing vctrs classes from scratch, see
vignette("s3-vector")
.
vec_ptype()
is applied to x
and y
stop_incompatible_type()
when you determine from the
attributes that an input can't be cast to the target type.


6 Data Modeling using Regression via broom
Now that we are equipped with data visualization skills from Chapter 3, data wrangling skills from Chapter 5, and an understanding of the “tidy” data format from Chapter 4, we now proceed to discuss once of the most commonly used statistical procedures: regression. Much as we saw with the Grammar of Graphics in Chapter 3, the fundamental premise of (simple linear) regression is to model the relationship between
- An outcome/dependent/predicted variable \(y\)
- As a function of a covariate/independent/predictor variable \(x\)
Why do we have multiple labels for the same concept? What’s their root? Regression, in its simplest form, can be viewed in two ways:
- For Prediction: You want to predict an outcome variable \(y\) based on the information contained in a set of predictor variables. You don’t care so much about understanding how all the variables relate and interact, but so long as you can make good predictions about \(y\), you’re fine.
- For Explanation: You want to study the relationship between an outcome variable \(y\) and a set of explanatory variables, determine the significance of any found relationships, and have measures summarizing these.
In this chapter, we use the flights
data frame in the nycflights13
package to look at the relationship between departure delay, arrival delay, and other variables related to flights. We will also discuss the concept of correlation and how it is frequently incorrectly implied to also lead to causation. This chapter also introduces the broom
package, which is a useful tool for summarizing the results of regression fits in “tidy” format.
Needed packages
Let’s load all the packages needed for this chapter (this assumes you’ve already installed them). If needed, read Section 2.3 for information on how to install and load R packages.
library(nycflights13)
library(ggplot2)
library(dplyr)
library(broom)
library(knitr)
6.1 Data: Alaskan Airlines delays
Say you are junior airlines analyst, charged with exploring the relationship/association of departure delays and arrival delays for Alaska Airlines flights leaving New York City in 2013. You however, don’t have enough time to dig up information on all flights, and thus take a random sample of 50 flights. Is there a meaningful relationship between departure and arrival delays? Do higher departure delays lead to higher arrival delays? Most of us would assume so. Let us explore the relationship between these two variables using a scatterplot in Figure 6.1.
# The following ensures the random sample of 50 flights is the same for anyone
# using this code
set.seed(2017)
# Load Alaska data, deleting rows that have missing departure delay
# or arrival delay data
alaska_flights <- flights %>%
filter(carrier == "AS") %>%
filter(!is.na(dep_delay) & !is.na(arr_delay)) %>%
# Select 50 flights that don't have missing delay data
sample_n(50)
ggplot(data = alaska_flights, mapping = aes(x = dep_delay, y = arr_delay)) +
geom_point()
Note how we used the dplyr
package’s sample_n()
function to sample 50 points at random. A similarly useful function is sample_frac()
, sampling a specified fraction of the data.
Learning check
(LC6.1) Does there appear to be a linear relationship with arrival delay and departure delay? In other words, could you fit a straight line to the data and have it explain well how arr_delay
increases as dep_delay
increases?
(LC6.2) Is there only one possible straight line that fits the data “well”? How could you decide on which one is best if there are multiple options?
6.2 Correlation
One way to measure the association between two numerical variables is measuring their correlation. In fact, the correlation coefficient measures the degree to which points formed by two numerical variables make a straight line and is a summary measure of the strength of their relationship.
Definition: Correlation Coefficient
The correlation coefficient measures the strength of linear association between two variables.
Properties of the Correlation Coefficient: It is always between -1 and 1, where
- -1 indicates a perfect negative relationship
- 0 indicates no relationship
- +1 indicates a perfect positive relationship
We can look at a variety of different datasets and their corresponding correlation coefficients in the following plot.
Learning check
(LC6.3) Make a guess as to the value of the correlation coefficient between arr_delay
and dep_delay
in the alaska_flights
data frame.
(LC6.4) Do you think that the correlation coefficient between arr_delay
and dep_delay
is the same as the correlation coefficient between dep_delay
and arr_delay
? Explain.
(LC6.5) What do you think the correlation between temperatures in Fahrenheit and temperatures in Celsius is?
(LC6.6) What do you think the correlation is between the number of days that have passed in a calendar year and the number of days left in a calendar year? For example, on January 3, 2017, two days have passed while 362 days remain.
We can calculate the correlation coefficient for our example of flight delays via the cor()
function in R
alaska_flights %>%
summarize(correl = cor(dep_delay, arr_delay))
# A tibble: 1 x 1
correl
<dbl>
1 0.7908
The sample correlation coefficient is denoted by \(r\). In this case, \(r = 0.7908\).
Learning check
(LC6.7) Would you quantify the value of correl
calculated above as being
- strongly positively linear,
- weakly positively linear,
- not linear,
- weakly negatively linear, or
- strongly positively linear?
Discuss your choice and what it means about the relationship between dep_delay
and arr_delay
.
If you’d like a little more practice in determining the linear relationship between two variables by quantifying a correlation coefficient, you should check out the Guess the Correlation game online.
6.2.1 Correlation does not imply causation
Just because arrival delays are related to departure delays in a somewhat linear fashion, we can’t say with certainty that arrival delays are caused entirely by departure delays. Certainly it appears that as one increases, the other tends to increase as well, but that might not always be the case. We can only say that there is an association between them.
Causation is a tricky problem and frequently takes either carefully designed experiments or methods to control for the effects of potential confounding variables. Both these approaches attempt either to remove all confounding variables or take them into account as best they can, and only focus on the behavior of a outcome variable in the presence of the levels of the other variable(s).
Be careful as you read studies to make sure that the writers aren’t falling into this fallacy of correlation implying causation. If you spot one, you may want to send them a link to Spurious Correlations.
Learning check
(LC6.8) What are some other confounding variables besides departure delay that we could attribute to an increase in arrival delays? Remember that a variable is something that has to vary!
6.3 Simple linear regression
As suggested both visually and by their correlation coefficient of \(r = 0.7908\), there appears to be a strong positive linear association between these delay variables where
- The dependent/outcome variable \(y\) is
arr_delay
- The independent/explanatory variable \(x\) is
dep_delay
What would be the “best fitting line”?. One example of a line that fits the data well can be computed by using simple linear regression. In Figure 6.3 we add the simple linear regression line by adding a geom_smooth()
layer to our plot where lm
is short for “linear model.”
ggplot(data = alaska_flights, mapping = aes(x = dep_delay, y = arr_delay)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "red")
6.3.1 Best fitting line
We now unpack one possible criterion for a line to be a “best fitting line” to a set of points. Let’s choose an arbitrary point on the graph and label it the color blue:
Now consider this point’s deviation from the regression line.
Do this for another point.
And for another point.
We repeat this process for each of the 50 points in our sample. The pattern that emerges here is that the least squares line minimizes the sum of the squared arrow lengths (i.e., the least squares) for all of the points. We square the arrow lengths so that positive and negative deviations of the same amount are treated equally. That’s why alternative names for the simple linear regression line are the least-squares line and the best fitting line. It can be proven via calculus and linear algebra that this line uniquely minimizes the sum of the squared arrow lengths.
Definitions:
For \(i\) ranging from 1 to \(n\) (the number of observations in your dataset), we define the following:
- Observed Value \(y_i\)
- The vertical position of the black dots.
- Fitted/Predicted Value \(\widehat{y}_i\)
- The vertical position of the corresponding value on the red regression line. In other words, the blue arrow tips.
- Residual \(\widehat{\epsilon}_i = y_i - \widehat{y}_i\)
- The length of the blue arrows.
Some observations on residuals:
- As suggested by the word residual (left over), residuals represent the lack of fit of a line to a model, in other words the model’s error.
- Note the order of the subtraction. You start at the actual data point \(y_i\) (blue dot) and then subtract away the fitted value \(\widehat{y_i}\) (the tip of the blue arrow).
- If the observed value is exactly equal to the fitted value, then the residual is 0.
- Of all possible lines, the least squares line minimizes the sum of all n residuals squared.
They play an important part in regression analysis; we will revisit the topic in Subsection 8.10.2.
6.4 Equation of the line
Figure 6.3 displayed the fitted least squares line in red, which we now define as
\[\widehat{y} = b_0 + b_1 x\]
where \(b_0\) and \(b_1\) are the computed \(y\)-intercept and slope coefficients. We first use R’s lm()
function to fit a linear regression model (which we save in delay_fit
) and then use the tidy()
function in the broom
package to display the \(b_0\) and \(b_1\) coefficients and further information about them in a regression output table. Almost any statistical software package you use for regression will output results that contain the following information.
delay_fit <- lm(formula = arr_delay ~ dep_delay, data = alaska_flights)
tidy(delay_fit) %>%
kable()
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| (Intercept) | -14.155 | 2.809 | -5.038 | 0 |
| dep_delay | 1.218 | 0.136 | 8.951 | 0 |
We see the regression output table has two rows, one corresponding to the \(y\)-intercept and the other the slope, with the first column “estimate” corresponding to their values. Thus, our equation is \[\widehat{y} = -14.155 + 1.218 \, x.\] It is usually preferred to actually write the names of the variables instead of \(x\) and \(y\) for context, so the line could also be written as \[\widehat{arr\_delay} = -14.155 + 1.218 \, dep\_delay.\]
For the remainder of this section, we answer the following questions:
- How do we interpret these coefficients? Subsection 6.4.1
- How can I use the regression model to make predictions of arrival delay if I know the departure delay? Subsection 6.4.2
6.4.1 Coefficient interpretation
After you have determined your line of best fit, it is good practice to interpret the results to see if they make sense. The intercept \(b_0=-14.155\) can be interpreted as the average associated arrival delay when a plane has a 0 minute departure delay. In other words, flights that depart on time arrive on average -14.155 early (a negative delay). One explanation for this is that Alaska Airlines is overestimating their flying times, and hence flights tend to arrive early. In this case, the intercept had a direct interpretation since there are observations with \(x=0\) values, in other words had 0 departure delay. However, in other contexts, the intercept may have no direct interpretation.
The slope is the more interesting of the coefficients as it summarizes the relationship between \(x\) and \(y\). Slope is defined as rise over run or the change in \(y\) for every one unit increase in \(x\). For our specific example, \(b_1=1.218\) that for every one minute increase in the departure delay of Alaskan Airlines flights from NYC, there is an associated average increase in arrival delay of 1.218 minutes. This estimate does make some practical sense. It would be strange if arrival delays went down as departure delays increased; in this case the coefficient would be negative. We also expect that the longer a flight is delayed on departure, the more likely the longer a flight is delayed on arrival.
Important note: The correlation coefficient and the slope of the regression line are not the same thing, as the correlation coefficient only measures the strength of linear association. They will always share the same sign (positive correlation coefficients correspond to positive slope coefficients and the same holds true for negative values), but otherwise they are not equal. For example, say we have 3 sets of points (red, green, blue) and their corresponding regression lines. Their regression lines all have different slopes, but the correlation coefficient is \(r = 1\) for all three. In other words, all three groups of points have a perfect (positive) linear relationship.
6.4.2 Predicting values
Let’s say that we are waiting for our flight to leave New York City on Alaskan Airlines and we are told that our flight is going to be delayed 25 minutes. What could we predict for our arrival delay based on the least squares line in Figure 6.1? In Figure 6.4, we denote a departure delay of \(x = 25\) minutes with a dashed black line. The predicted arrival time \(\widehat{y}\) according to this regression model is \(\widehat{y} = -14.155 + 1.218\times 25 = 16.295\), indicated with the blue dot. This value does make some sense since flights that aren’t delayed greatly from the beginning do tend to make up time in the air to compensate.
Instead of manually calculating the fitted value \(\widehat{y}\) for a given \(x\) value, we can use the augment()
function in the broom
package to automate this. For example, we automate this procedure for departure delays of 25, 30, and 15 minutes. The three fitted \(\widehat{y}\) are in the .fitted
column while .se.fit
is a measure of the uncertainty associated with the prediction (more on this topic when we study confidence intervals in Chapter 9).
new_alaskan_flight <- data_frame(dep_delay = c(25, 30, 15))
delay_fit %>%
augment(newdata = new_alaskan_flight) %>%
kable()
| dep_delay | .fitted | .se.fit |
|---|---|---|
| 25 | 16.29 | 3.967 |
| 30 | 22.38 | 4.482 |
| 15 | 4.11 | 3.135 |
6.5 Conclusion
6.5.1 What’s to come?
This concludes the Data Exploration via the tidyverse
unit of this book. You should start feeling more and more confident about both plotting variables (or multiple variables together) in various datasets and wrangling data as we’ve done in this chapter. You’ve also been introduced to the concept of modeling with data using the powerful tool of regression. You are encouraged to step back through the code in earlier chapters and make changes as you see fit based on your updated knowledge.
In Chapter 7, we’ll begin to build the pieces needed to understand how this unit of Data Exploration can tie into statistical inference in the Inference part of the book. Remember that the focus throughout is on data visualization and we’ll see that next when we discuss sampling, resampling, and bootstrapping. These ideas will lead us into hypothesis testing and confidence intervals.
6.5.2 Script of R code
An R script file of all R code used in this chapter is available here.


Software Rasterization Algorithms for Filling Triangles |
Download Article and Source (153 kb)
I. Introduction
This article discusses various algorithms how to draw a solid triangle. This task is a basic requirement of a graphic engine and is often also called 'Triangle Rasterization/Rasterisation'. Three different approaches are presented which are implemented in the applet above.
Note that also the scanline algorithm can be used, but it is designed for the general case of filling a polygon and thus a bit overdesigned.
todo: solid / fluxionary with different vertice colors, not all are equally fast
A required prerequisite for the first two algorithms (Standard & Bresenham) is a defined order of the three triangle vertices. So we know which is the most top vertice respectively the lowest vertice. Assuming the origin of the coordinate is the topleft corner, thus the lower a vertice is the bigger its y-coordinate is, we define the order v1.y <= v2.y <= v3.y. The sorting of the three vertices has to be performed as very first step.
The standard algorithm uses the fact that the two easy cases, a flat bottom and a flat top triangle, are easy to draw.
This is due to the fact that the difference in y is equal for both legs. Looking at the figure below, it's easy to see that y1 - y2 = y1 - y3. The idea of this algorithm is to traverse both legs step by step in y-direction and draw a straight horizontal line between both endpoints.
Therefore the change of x per y-step (that is dx/dy = 1 / slope = invslope) is required, contrary to the normal slope which gives the delta in y per x-step.
The algorithm now performs as following:
First calculate invslope for each leg. Then just iterate from top (y1) to bottom (y2) and add invslope1 and invslope2 to temporary variables - this gives the endpoints of a straight line. No the triangle can easily be drawn by plotting horizontal lines - see the pseudocode of fillBottomTriangle().
|
Drawing a float top triangle is as easy as drawing the flat bottom triangle. It makes sense to change the y-iteration direction so that vertice v3 serves as common starting point and iteration goes from bottom to top; the actual algorithm is basically the same as for the flat bottom case:
|
Finally the general case: The basic idea of drawing a general triangle is to decompose it into two triangles - a flat bottom triangle and a flat top triangle - and draw them both.
The main task is to find the intersection boundary which splits the triangle. Actually we need to find a fourth vertex v4 which is the intersection point of the boundary line and the long edge of the triangle. Let's have a look at outline below:
The y-coodinate of v4 is obvious because v4 lies on the same horizontal line (the intersection boundary) as v2, thus v4.y = v2.y.
To find v4.x, the Intercept Theorem can be applied, see the derivation on the right side of above picture. Finally we have flat bottom triangle Δ1 = (V1, V2, V4) and a flat top triangle Δ2 = (V2, V4, V3) which both can be rasterized with the algorithms above.
Here the final algorithm for all triangles:
drawTriangle() |
I assume the reader knows the Bresenham algorithm for drawing lines in order to understand this approach - if not, please check a good article before proceeding, e.g [1]... (on no! house advertising ;))
The main idea is to use the same partition approach as in the previous chapter, thus splitting a triangle into two, each with a flat side. I'm not going to repeat the partition as it's really the same, so the explanation just focus on rasterizing a flat side triangle.
So let's start: Suppose we just want to draw the line from v1 to v2 using the bresenham algorithm. Ignoring breshenham details like swapping variables depending on the slope etc, we also assume for our example without loss of generality that we go in y-direction and having the error value e = dx/dy. So we iterate in the y-direction and in each step as long as e >= 0 go into the x-direction. Till this point we completely comply with the bresenham algorithm - nothing special.
What we notice is that because we do step in y-direction, the bresenham algorithm provides us a point on the line for each y-coordinate between v1 and v2. So why not use the bresenham algorithm to plot also the line from v1 to v3? If we also find the corresponding point - that is the point with the same y-coordinate on the edge v1v3 - we just have to draw horizontal lines to fill the triangle. This implies following procedure:
|
I am going to waive the source code listing at this point as it's lengthy and nothing more than the bresenham algorithm runs in parallel for two lines. For further information please check the actual source code in the archive.
IV. Barycentric Algorithm
For the Barycentric approach, we will again reuse existing knowledge - by applying the Barycentric Algorithm for deciding if a point lies inside or outside a triangle. This is discussed in [2] (oh no! No more house advertising... ).
The main idea is as follows: At first determine the bounding box of the triangle. Afterwards test for each point in the box if it lies inside the triangle - if yes just plot the pixel. Yeah... it's really so easy!
In contrast to the other algorithms above, it's not necessary to sort the vertices. Following code snippet determines the bounding box by calculating the minimum/maximum x/y coordinate of all three vertices:
|
Finally, iterate over each point of the bounding box using two nested loops and paint the pixel if it's inside the triangle:
/* spanning vectors of edge (v1,v2) and (v1,v3) */ for (int x = minX; x <= maxX; x++) |
Unfortunately, the simplicity of this algorithm comes at the price of low execution speed compared to the other two approaches.
V. Final wordsI hope this article was interesing to read and the reader learned something new. I want to mention that some common topics were left out from discussion:
The problem of correct rounding for example - we are working with floats, but the final points on the screen are pixels and thus integers. So it might worth to check that no pixels are left out, especially near the edges and vertices but on the other hand to ensure not to plot pixels on the outer border of the edges.
Furthermore, the first two algorithms split the triangle into two. This results in the fact that the flat side of the bottomflat triangle and also the flat side of the topflat triangle is drawn - so this falt edge it's plotted twice! Keep this is in mind - e.g. when using fancy algorithms for coloring the edges, this might cause disturbanes.
That's it. Hope you enjoyed this article and find the applet + source useful!
References:
[1] Bresenham Algorithm Article
[2] Point in Triangle Algorithms Article
Sunshine, May 2012
This site is part of Sunshine's Homepage


Welcome to OAuth for MyProxy! This is a delegation service for MyProxy. It allows clients to request certificates and users to securely authorize them using the OAuth delegation protocol. Current release is 3.0.
You may most easily a bare-bones version for testing by downloading the current reference war:
oauth-server-latest.war
(PGP signature)
Download this, read to configure the deployment, and deploy it to Tomcat. The war, as delivered, cannot be run.You must do some minimal configuration at least before deploying it.
mvn clean install
If you decide to write your own webapp, you should use the following module:
<dependency> <artifactId>oa4mp-server-oauth1</artifactId> <groupId>edu.uiuc.ncsa.myproxy</groupId> <version>4.3</version> </dependency>
which will get the OAuth libraries and give you access to the configuration loader.
If you need to deploy this to Apache, you need to add the following to the proxy_ajp.conf file (which, e.g., lives under /etc/httpd/conf.d in most unix distributions):
ProxyPass /oauth/initiate ajp://localhost:8009/oauth/initiate
ProxyPass /oauth/authorize ajp://localhost:8009/oauth/authorize
ProxyPass /oauth/token ajp://localhost:8009/oauth/token
ProxyPass /oauth/getcert ajp://localhost:8009/oauth/getcert
ProxyPass /oauth/register ajp://localhost:8009/oauth/register
These entries allow access to all parts of the process. Note: in the WEB-INF/web.xml file there is a section called security-constraint, which controls access to the webapp using Tomcat's SSL. This will conflict with access via Apache, so comment that section out if you are deploying to Apache. It is only needed in stand-alone Tomcat deployments.
You may store all information for the service in your local file system. It is important that you restrict access to it and back it up. Specifying the storage location in your configuration file is sufficient, since the system will detect if it exists and create anything it needs.
In order to use MySQL for persistent storage, you must run the supplied script, mysql.sql to create all of the tables and users before your first use.
mysql -u username -p < /path/to/file/mysql.sql
(the username is an account (root, e.g.) which has sufficient privileges to create other users) which will prompt you for your password and run the file. If you do not accept the default account names, you must edit this file and replace all occurrences of them manually, as well as setting the passwords. This has to be done because of MySQL's very lousy support for variables. (Should you have to re-run the script, you should manually remove the users and database beforehand. These commands are commented out at the beginning of the file.)
Most Unix distros have this database installed by default. There is a specific script, pg.sql, that will create all the tables. All you should need to do is set the passwords near the top of the file. Then you would need to log in to the command line psql tool as the user postgres (this is the super user) and from that prompt issue
\i /path/to/file/pg.sql
The file contains default user, table, database and schema names, which you may change if you see fit (be sure to pass these along in your configuration file!). Again, you only need to edit the values at the top of the file, thanks to PostgreSQL's support for variables.


I built this simple tool for aiding researchers and students in "quick and dirty" experimentation of domino tilings on the square lattice. My hope is that you'll be able to use it to come up with and check new conjectures about domino tilings.
Tiling Calculator is not intended to be used for larger or more systematic calculations. Unfortunately, numbers larger than 253 cannot be factored, and counting the number of tilings of large regions becomes prohibitively slow. To that end, I recommend checking out vaxmaple, a C program developed by Greg Kuperberg, Jim Propp, and David Wilson that can be used together with Maple for calculating tilings of regions specified in VAX format.
This number of tilings is computed using the Kasteleyn-Percus method. You can find the code for this website on GitHub at https://github.com/forest-tong/tiling-calculator.
I am a student at MIT studying mathematics and computer science. My introduction to the weird and wonderful field of domino tilings came through a research project in 2013 under the mentorship of Henry Cohn, in which I studied divisibility of domino tilings for a class of graphs I defined "compound graphs." Check out my paper, On the number of perfect matchings of compound graphs, on the arXiv.
Feel free to contact me with questions or feedback at ftong[at]mit.edu.
Copying the number of tilings doesn't work in IE. It should work in Chrome, Safari, and Firefox.


Let us know where you've been
Conservatory Pond in Central Park
This photo of Conservatory Pond in Central Park in New York City was taken on October 22,2016 with a Canon EOS 30D camera.
Easy on the HDR buddy.
I love Central Park.
Copyright © 2017 Share Your Travels


Born in the humble city of Federal Way, WA, and raised in multiple different areas in TX and Korea, I was constantly tested and pushed to explore who I was as an individual. Through this diversity, I found many different passions in sports(Volleyball, Basketball, Football), arts(Photography & Digital Media), games(Video & Board), and music(Most Genre), all of which shaped the person I am today.
I took part in an intensive 6-month long coding boot camp dedicated to designing and building web applications, in which I graduated with top marks. I learned skills consisting of HTML, CSS, Javascript, JQuery, Bootstrap, Firebase, MERN(MongoDB, Express, React.js, Node.js), MySQL, Handelbars.js.
I spent 4 years at Seattle Pacific University, in which I graduated with a degree in Political Science. It was here where I developed various skills and techniques.
I started my first job over the summer of 2014 as a footwear salesman at Sports Authority. And since then I've worked many different jobs in various different fields, such as a Urology Lab assistant, a Volleyball Supervisor, a hospital volunteer, and am currently working as a part time sports coach.
PurpleBunBunny
Michael Lee
Future Socials
Just a few of my business socials atm. More to be coming in the future. Twitter, Instagram, FaceBook, etc.


Module Name: FormModule
Module Name: FormModule
The form component uses Modal, the difference between them is tabbing, and the default buttons that act as a submit form.
The way of the form appears (fullscreen) on window is relative with the parent HTML element.
The Form identifies all components that CAN receive focus and create a map for tabbing, even the components
are with the [tabindex]
set, the form will respect the tabindex
of the component and
will organize the others components based on user's component config.
The Form validations works together with the [validations]
of others truly components,
identifying the components that have validation to enable or not the confirm button.
The Form allow users to control tabbing by key Enter
, ArrowUp
and
ArrowDown
to navigation through components.
The Form Result is a JSON of values of all components with [ngModel]
in the form. The form gets
these values and return to the origin component.
{{result | json}}
Declare the FormService
and the ViewContainerRef
in your constructor
constructor
, set your view calling the method of the Form Service.<tl-form></tl-form>
tags. Like BelowentryComponents
) in your module. In this case is NewPerson
object
used on form creation described on Final Step.createForm
passing the following parameters. For example:All Modal (tl-modal) Events can be used on this component.


Something big is gonna happen
Stay tuned for the surprise.. feel free to leave us your email for updates


|
|
||||
What is Pivotal Stock Ticker?If like me, you have a meagre amount of money "invested" in stocks and shares, then you're probably interested in how they're doing - usually badly of course! I wanted a ticker that will sit in the corner of my screen, that won't take up too much room, is easy to configure and didn't ask me every five minutes for either an upgrade or some money.  Well, guess what, I couldn't find one! Most offerings either cost money, lacked an overall summary display or looked like some sort of Star Trek gizmo. So, using some code we have here for showing application status, I wrote my own and this is the results of my efforts. Feel free to criticise or make suggestions for enhancements etc. I do development on this to keep me from going insane in my normal development job so I'm always looking for some sort of distraction.... My goal is to keep it simple and lightweight. Pivotal Stock Ticker uses Yahoo to get it's quotes so depending upon the stock exchange, all quotes are delayed by at least 15 minutes. If this isn't a problem for you, then Pivotal Stock Ticker might be just the gadget for you. In future releases, I might introduce a way in which you can connect the ticker to the non-free version of Yahoo Finance and get real-time quotes via your Yahoo subscription. |
What does it do?Pivotal Stock Ticker allows you to monitor stocks that you have purchased, the current value of those stocks and the effect of any changes to those stocks on the value of your portfolio. This last bit is the thing that I most wanted from the ticker myself i.e. If I bought X shares of Yahoo at Y amount in 2007 and then bought more shares at a different cost in 2008 what is my overall position now? Am I up (not likely) or down (more than likely)? I also needed to keep track of shares that I had bought in different exchanges in different countries e.g. London as well as New York or the NASDAQ etc. To make sense of this, Pivotal Stock Ticker understands foreign exchange (glad someone does) and converts values/costs from the currency they are traded in, to your local currency real time - it uses Yahoo FX rates. Pivotal Stock Ticker allows you to change the colours, sizes and fonts of your symbols and you can also customize the amount of actual data that is displayed. It also shows charts of your stocks daily performance when hovering over symbols and it doesn't get confused by multiple display monitors. You can also "dock" the toolbar to the top or bottom of the screen so that it isn't hidden by Windows toolbars and maximised top most applications. The application is written in VB6 and runs on any Windows platform - there are no dependencies built into the executable apart from the ubiquitous msvbvm60.dll runtime library and the GDI+ runtime. Both of these are included in the setup file but you are likely to have both of these on your machine already. It does what I need it to do and probably does what you need too - give it a try and if you like it perhaps you might want to "invest" a donation towards its development. There's no obligation to pay money, but it would put a smile back on my face if you did and make it much more likely that I will answer any questions you have. Enjoy! (if that's the right emotion when viewing your stocks) |
First thing you need to do is install it and run it which you can do from the Start menu after you have run the installation.
The display is drag-able simply by clicking on any part of the black area and dragging the window around the screen. The system won't allow you to drag it off the screen and it will remember the position for ever more so that next you run the ticker it displays in the last place you left it.
The sizing handles at each end of the display allow you to adjust the width of the display by dragging them with the mouse.
The display is split into two main sections; Summary and Symbols. Only the Symbols area scrolls and it only scrolls when there is not enough space to show all the symbols.
This area is split into two further parts;
| Portfolio Value | This area of the display shows you the total position of your portfolio
i.e. all the values of the all the stocks multiplied by the number of stocks
you hold and summed together. This is displayed as the Value, a
similar sum is done using the price you paid for the stock and this is displayed
as the Cost. The difference is also displayed with a colour to indicate
whether you are up, down or level. See Editing Settings for a full list of what can be displayed. |
| Stock Totals | This is a summary of all positions of all your stocks when holdings
of the same stock are summed together i.e. if you had 500 USU at $5 and
500 USU at $7 then this would show USU at your average cost of $6 - this
is your cost base. It will show the current price for the stock and
also any variation in percentage from your cost base. See Editing Settings for a full list of what can be displayed. |
This is where each of your holdings is displayed. The name of the holding, it's current value, the price you paid for it and the variation as a percentage can all be displayed along with a colour to indicate whether the stock is up or down from the price you paid.
If there are more symbols than can be displayed, then this area will scroll to accommodate them all.
See Editing Symbols for a full list of what can be displayed.
Everything you can do with the application is accessed using the right mouse button.
|
This is where you control the look & feel of the ticker and where you tell the system what you want shown in the Summary part of the display.
|
| Show Total Profit & Loss | This tells the ticker to display the complete profit or loss for all your positions i.e. if I cashed in the whole lot, what would I have lost or gained. |
| Show Total Profit & Loss as a Percentage | This tells the ticker to display the complete profit or loss for all your positions as a percentage gain/loss. |
| Show Total Cost of Investments | The total summed amount of money you have paid for all your stocks. |
| Show Total Current Value of Investments | The total value of all your stocks summed together. |
| Show the Current Price of each Stock | The current market price for the stock. |
| Show the Average Cost of each Stock | This is the cost base of each of your holdings and is only of interest if you have shares from the same company that you bought at different times and at different prices. |
| Show the Difference of Base Cost Against Current Price as Percentage | This is the difference between your average price you paid for all your stock and the current price of that stock expressed as a percentage. |
| Currency Code | The international currency code you want the summary displayed in e.g. GBP, USD, AUD etc |
| Currency Symbol | The character you want to display on the screen. The currency symbol has a double meaning - if you use $,£,€ etc then this character precedes the value e.g. £100. However, if specify a letter e.g. p,c etc then this proceeds the value and also causes the value to be scaled by 100 in calculations e.g. 23p |
| Total Investment | This is the amount of money, in the local currency, that you have invested in stocks - including those that you currently don't hold. Let's assume you traded in stocks before getting this ticker then this is the amount of money that you have ever thrown into the pot, minus any profit you have ever taken out in cash. This value is used to give you a true profit/loss display (in brackets) i.e. all your current positions might be up, but you could have previously lost a shed load in previous holdings. |
| Margin | This is the amount of money that you have invested in the shares that belongs to your margin/debit account i.e. how much you borrowed to buy more shares. This value is taken from the profit |
The Backup button allows you to save all your settings and symbols to a file. The Restore button will allow you to bring back settings from a backup file - this completely overwrites any previous settings.
Note:- All your settings and symbols are actually stored in the Windows Registry under the key HKEY_LOCAL_MACHINE\SOFTWARE\Pivotal\StockTicker and the backup/restore files are in fact .REG files.
This is the place where you add/remove/edit your stock holdings.
|
| Add & Delete | These buttons allow you to add and delete stock symbols from the list. |
| Symbol | This is the Yahoo recognised stock symbol for the company you hold shares in. If the stock is traded on an exchange outside the US, then the symbol must include the Stock Exchange Identifier e.g. British Airways is traded on the London Stock Exchange and would be BAY.L |
| Disabled | Check this box if you don't want to display this symbol |
| Display Name | You can optionally change the name displayed on the ticker rather than show the symbol. This is also how the stocks will be grouped in the summary. |
| Price Paid | The price paid by you for the stock e.g. 10.05 or 23 etc |
| No of Shares Bought | How many shares you bought of this stock - this can be whole or part shares e.g. 345 or 56.67 etc |
| Currency Code | The international currency code the stock is traded in e.g. GBP, USD, AUD etc |
| Currency Symbol | The character you want to display on the screen. The currency symbol has a double meaning - if you use $,£,€ etc then this character precedes the value e.g. £100. However, if specify a letter e.g. p,c etc then this proceeds the value and also causes the value to be scaled by 100 in calculations e.g. 23p |
Note:-
| Popup Chart | Hover over a stock symbol and wait a second, you will see
a popup chart showing the current day's trading for this stock.
It will also tell you the Days high, low, start and change in both
percent and value. It will also tell you the current exchange
rates that are in operation if you are monitoring stocks in different
currencies. If you double click on the chart, the display flips between showing day and week. |
| Show Stock in Yahoo | If you double click on a stock symbol, a browser will open that takes you the chart view of your stock within Yahoo Finance. |
| Show All Stocks in Yahoo | If you click on the Yahoo Summary Link (little blue ball), this will show you a summary of all your stocks within Yahoo Finance in a new browser window. |
| 1. How much does it cost? |
| Nothing, nada, zip, totally free and without copyright - do with it
whatever you like and wherever you like, I don't care and I don't
need any attribution or acknowledgement. If you like the ticker and you would like to ensure I maintain a healthy stream of biscuits during the long hours of development, then please feel free to make a donation below. |
| 2. What platforms does it run on? |
| It's written in VB6 which means that it's Windows only - I've developed it on XP so I'm fairly sure it will run on anything from Win98 upwards, including Vista and Windows 7. |
| 3. Can I get the source code? |
| Yes, but the source is going to cost you $100. If you're big into VB6 then you'll see that there are hundreds of useful functions and techniques included in the source code, so it might be an interesting resource to buy in it's own right. We've switched over to Java for the vast majority of our development efforts but for desktop projects, you still can't beat the efficiency and ease of use of good old VB6. |
| 4. How do I get an enhancement/fix made? |
| Send me an email. I'll take a look at it and if I can and want to do it, I'll make the change and send a version back to you. |
You can contact me by email at<EMAIL_ADDRESS>Version 1.7.0 Download Now
Version 1.6.0 Download Now
Version 1.5.6 Download Now
Version 1.5.5 Download Now
Version 1.5.4 Download Now
Version 1.5.3 Download Now
Version 1.5.2 Download Now
Version 1.5.1 Download Now
Version 1.5.0 Download Now
Version 1.4.4 Download Now
Version 1.4.3 Download Now
Version 1.4.2 Download Now
Version 1.4.1 Download Now
Version 1.4.0 Download Now
Version 1.3.3 Download Now
Version 1.3.2 Download Now
Version 1.3.1 Download Now
Version 1.3.0 Download Now
Version 1.2.4 Download Now
Version 1.2.3 Download Now
Version 1.2.2 Download Now
Version 1.2.1 Download Now
Version 1.2.0 Download Now
Version 1.1.5 Download Now
Version 1.1.4 Download Now
Version 1.1.3 Download Now
Version 1.1.2 Download Now
Version 1.1.1 Download Now
Version 1.1.0 Download Now
Version 1.0.0 Download Now
If you found this application useful and would like to keep my spirits up and provide some funds for our biscuit tin, why not make a donation. I think $15 shouldn't break anybody's bank and is a nice round figure.
| You can make a donation via PayPal by clicking here - |
If you found this application useful and would like to keep my spirits up and provide some funds for our biscuit tin, why not make a donation. I think $15 shouldn't break anybody's bank and is a nice round figure.
| v1.0.0 | First release |
| v1.0.6 | Corrected issues with display and drawing of up/down symbols Added ability to display Day changes Improved the chart display Corrected issue with refresh taking a long time to reflect changes in symbols setup |
| v1.1.0 | Added proxy server support |
| v1.1.1 | Don't show the stock symbol name if the user has supplied a display
name of their own Fixed problem whereby stocks with the same display name were not being summarised correctly |
| v1.1.2 | Allow users to adjust the refresh rate |
| v1.1.3 | Double clicking on the chart now flips the display between 1 day and 1 week |
| v1.1.4 | Added Docking to the display |
| v1.1.5 | Modified the scaling of display values when dealing with stocks expressed in pence or cents etc |
| v1.2.0 | Number of shares can now be expressed as part values e.g. 145.45 Added ability to update ticker from new version on Pivotal server |
| v1.2.1 | Fixed problem whereby unknown symbols would cause the display to stop Fixed issue of zero valued stocks causing a divide by zero error and stopping the display Changed source of graphs if Yahoo chart is empty |
| v1.2.2 | Fixed problem of displaying stocks whose symbol doesn't match the symbol returned by Yahoo |
| v1.2.3 | Changed alternative source for graphs when Yahoo primary source doesn't produce a result |
| v1.2.4 | Decreased the mouse sensitivity of the Yahoo graphs appearing to stop them popping up inadvertently |
| v1.3.0 | Added checkbox to settings screen to allow user to turn on/off
making the ticker float over all other windows Added a new percentage value to the Summary display to show the percentage gain/loss of the overall position Improved the scrolling speed and smoothness |
| v1.3.1 | Improved recall speed and fixed a couple of minor bugs |
| v1.3.2 | Added ability to now track Indexes e.g. Dow Jones Industrial (^DJI), NASDAQ (^IXIC) |
| v1.3.3 | Corrected issues of stocks expressed in locales that use the comma instead of the period character as the decimal separator |
| v1.4.0 | Added high/low alarms |
| v1.4.1 | Corrected use of scrolling |
| v1.4.2 | Added workaround for stock symbols no longer supported by Yahoo |
| v1.4.3 | Corrected some Windows 7 issues |
| v1.4.4 | Fixed the lookup of ^ type symbols |
| v1.5.0 | Added real-time quotes for NASDAQ stocks |
| v1.5.1 | Improved the chart display and changed Yahoo summary to only include enabled stocks |
| v1.5.2 | Fixed display problem when docked or placed at the bottom of the screen Fixed the display of the popup when symbols are scrolling Improved the responsiveness of the chart hover display now that we get real-time quotes (which are slower) |
| v1.5.3 | Fixed display of graphs with new Yahoo settings |
| v1.5.4 | Added resilience for poor network connectivity |
| v1.5.5 | Added more resilience for poor network connectivity |
| v1.5.6 | Starts up correctly even if no network connectivity |
| v1.6.0 | Added other exchanges to use under the bonnet |
| v1.7.0 | Uses some embedded exchange data sources |


Pass
Undo
Redo
{{(board.getTurnColor()=='b')?'Black':'White'}} to play.
({{(board.getTurnColor()=='b')?'White':'Black'}} {{(board.playedPlace != null)?"played "+board.playedPlace.x+","+board.playedPlace.y:"passed"}})
Click groups to toggle marked as dead.
Black captured: {{board.prisoners['w']}}
White captured: {{board.prisoners['b']}}
Score:
Black:
Territory: {{getScore().b.territory}}
Captured: {{getScore().b.captured}}
Total: {{getScore().b.total}}
White:
Territory: {{getScore().w.territory}}
Captured: {{getScore().w.captured}}
Total: {{getScore().w.total}}
Result:
{{(getScore().b.total - getScore().w.total > 0)?"Black":"White"}} wins by {{getScore().result}} points.


DVD Emporium is known for its high quality and customer service. We are dedicated to procuring he finest movies for our customers. DVD was the premier digital video storage medium of the 20th century, and now you too can enjoy the crisp visuals and clean audio of DVD as well as the improved quality of the 21st century's storage medium of choice BluRay.
Our shop, conveniently located near Southern Cross University at the Gold Coast contains literally thousands of new and quality pre-loved DVDs and BluRays available for your viewing pleasure. Rent or purchase its up to you. Consider becoming a member as this will allow you to book on-line and save you the disappointment of arriving only to find the movie you were wishing to view or purchase is currently out of stock.
To become a member please join up.
You can view our extensive movie database in the MovieZone .
As an additional service to our clientele our resident IT guru provides weekly advice on important developments in the IT industry. View the advice from our store IT expert in theTechZone.


Match Play. 0-0 to 5. How should Red play 33?
pips Red=115 White=156
(CorrectAnswer= 0/0, ErrorScore= 0)
Given Red’s crunched board he cannot play this move passively.
He needs to create time to free his rear checkers.
21/15(2) is a reasonable play but still an error. Red must try to improve his board to create the required time. The only move to do that is the double tiger play, 21/18, 21/15, 8/5*.
Before the age of computers not one player in a thousand would have made that play. Nowadays at least a small percentage would understand the requirements of the position and make the right play. Such is progress.
He needs to create time to free his rear checkers.
21/15(2) is a reasonable play but still an error. Red must try to improve his board to create the required time. The only move to do that is the double tiger play, 21/18, 21/15, 8/5*.
Before the age of computers not one player in a thousand would have made that play. Nowadays at least a small percentage would understand the requirements of the position and make the right play. Such is progress.
1. Cubeful 2-ply 21/15(2) Eq.: -0.385 0.429 0.139 0.001 - 0.571 0.154 0.008 2. Cubeful 2-ply 21/15 21/18 8/5* Eq.: -0.387 (-0.002) 0.416 0.175 0.002 - 0.584 0.168 0.009 3. Cubeful 2-ply 21/15 8/5*/2 Eq.: -0.493 (-0.108) 0.391 0.151 0.001 - 0.609 0.167 0.008 4. Cubeful 2-ply 21/18(2) 8/5*/2 Eq.: -0.541 (-0.156) 0.387 0.142 0.001 - 0.613 0.188 0.009 5. Cubeful 0-ply 21/18(2) 8/5* 4/1 Eq.: -0.682 (-0.297) 0.345 0.111 0.001 - 0.655 0.206 0.010


Install normally
- Ensures UI extensions work together flawlessly
Files to install:
- Allows any number of mods to be configured via a single in-game menu
Install normally
- Fixes collision meshes, the meshes which simulate where bullets, bodies, etc. can collide with an object, so you can now shoot through fences, car windows, etc.
Files to install:
Hide the following:
- Patches the fixed meshes from Asterra's Many Fixes to also have the changes from Collision Meshes
Install normally
Optional tweaking available:
- Enables a visible body and player shadows when in 1st person and changes 3rd person animations to 1st person
Install normally
Special activation instructions:
Optional tweaking available:
- Enables diagonal movement for the player character
Install normally
- Adds an MCM menu with options for adjusting all types of FOV
Install normally
- Removes all motion blur, double vision, and other nasty nauseating effects that reduce visual clarity. Only install if those effects bother you
Files to install:
Mod activation instructions:
| Tweak | Effect |
|---|---|
| bBetterAutoWalk=1 | Moving left/right no longer cancels autowalk |
| bCompanionPipColorChange=1 | Shows companions on the compass as white instead of the HUD color |
| bConsoleNumpadSupport=1 | Allows the use of the number pad in console |
| bDescriptiveMarkerAddedMessage=1 | Says the location of added map markers in the pop-up message |
| bFasterHackingTransition=1 | Decreases the delay after successfully hacking a terminal from 3 seconds to 0.5 seconds |
| bFasterSaveMenuClose=1 | Removes the 3 second delay from the pause menu after making a save |
| bGodmodeNeedsNoAmmo=1 | Allows firing with 0 ammo while in god mode |
| bHideInvisibleUndiscoveredLocations=1 | Only show unvisited locations on the compass if they are marked on the map |
| bIgnoreCompanionsVATS=1 | VATS no longer targets hired companions |
| bKeepPipboyLightOnCellChange=1 | The Pip-Boy light will no longer turn off after changing cells |
| bKeepRouletteBetAmount=1 | Roulette bets no longer reset to 0 after every spin |
| bLockpickAllowMouse=1 | Allows you to rotate locks by holding left mouse button |
| bMapShowUnconsciousCompanions=1 | Shows unconscious companions on the local/world maps in red |
| bNoMinCompanionMapDistance=1 | Removes the minimum distance for showing a companion on the world map |
| bNoSkillBooksAbove100=1 | Prevents usage of skill books if the skill is already at 100 skill |
| bNoStartMenuDLCPopup=1 | Removes the "Loading extra content" pop-up at the start menu |
| bNoVATSTargetInvisible=1 | Prevents targeting of invisible enemies in VATS |
| bRapidReloadFix=1 | Fixes reload speed bugs with the Rapid Reload and Hand Loader perks |
| bRememberBobbyPinHealth=1 | Keep bobby pin damage between lockpick attempts |
| bRemoveDownloadsButton=1 | Removes the "Downloads" button from the main menu |
| bRemoveWeaponDamageBuffer=1 | Removes the weapon damage buffer for weapons above 75% condition, like the game tutorial says |
| bSkipDeathcamHotkey=1 | Adds a hotkey (Left-Alt) to skip the death cam |
| bTabBackInStartMenu=1 | Allows you to use the Tab key to go back in the start/pause menus |
| bTabClosesTerminals | Allows you to use the Tab key to close terminals |
| bUseWASDAsArrowKeys=1 | Allows the use of WASD in place of arrow keys and E in place of the space bar in menus |
| bRepeatJumping=1 | Hold down space to repeatedly jump |
| bLevelUpScrollWheelSupport=1 | Allows the use of the scroll wheel when allocating skill points in the level up menu |
| bLeftAndRightCancelEachOther=1 | Makes left/right movement keys cancel each other if both are held |
| bFixEnhancedCameraGroundSinkBug=1 | Fixes a bug in Enhanced Camera that causes the player character to sink into the ground in 3rd-person |
| bTalkWhileSneakingIfShiftIsHeld=1 | Makes holding shift while croucing talk to an npc instead of pick-pocketing |
| bAddInventoryDropItemHotkey=1 | Allows you to also use Q to drop items in the Pip-Boy |
| bNoTCLOutOfBoundsReset=1 | Disables the reset on player position when out of bounds if TCL is active |
| bInstantContinueButton=1 | Disables the "Continue from your last saved game?" prompt when clicking continue game |
| bVatsExitKey=1 | Adds hotkey Left Alt to instantly end the VATS kill-cam |
| bDontSetQuestWhenCompletingObjectives=1 | Stops the game from activating the current quest when completing objectives without having a quest active |
| bNoExitHacking=1 | Prevents the player from exiting the hacking menu if an attempt has been made |
| bDistanceBasedQuestMarkerVisibilty=1 | Hides quest markers beyond a certain distance |
| bNoScreenshotPopup=1 | Disables the "Screenshot Created" corner message |
| bNoKarmaMessages=1 | Disables the good/bad karma messages and sounds |
| bNoCrippleCriticalMessages=1 | Disables the corner message that appears when crippling or critical hitting an enemy |
| bNoAudioDistortion=1 | Removes the audio distortion when NPCs are wearing masks |
| bFasterSleepWait=1 | Decreases the delay between hours while waiting or sleeping |
| bNoXPBarInCombat=1 | Delays XP popups till the end of combat |
| bHardcoreTweaks=1 | Enables toggling of ammo weight, sleep healing and hired companions being essential |
| bNoQuestFailedPopup=1 | Removes the pop-up and sound that appears when you fail a quest |
| bCompassLocationDistanceBasedAlpha=1 | Fades the compass location markers based on distance to the player |
| bDisableCompassEdgeAlpha=1 | Disables the alpha effect given to markers on the right edge of compass |
| bImprovedAutoSave=1 | Improves the vanilla auto-save system |
| bPickLocksEvenWithKey=1 | Holding shift allows picking a lock even if you have the key |
| bConsoleHistoryNoStoreDuplicates=1 | Console won't save duplicate console commands in the history |
| bRememberConsoleHistory=1 | Makes the console history persistent between play sessions |
| bSkipIntroVideo=1 | Automatically skips the intro video |
| bFirstPersonVATS=1 | Forces VATS to use the first person camera |
| bFasterTitleMenu=1 | Speeds up the transition from splash screens to the main menu |
| bListMissingModsOnLoad=1 | Lists missing plugins on the "Content is Missing" pop-up when loading a save |
| bPopupMenusDontMoveCursor=1 | Stops pop-up menus moving the mouse to the center of the screen |
| bFixItemModMenuUnequip=1 | Fixes a bug where closing the Pip-Boy while in the the Item Mod Menu would unequip the weapon if it was equipped |
| bRemoveEvilMessage=0/bRemoveGoodMessage=0 | Keeps the Karma messages, but still disables the sounds |
| bEssentialCompanions=1 | Hired companions are no longer able to die |
| bQuestFailedOnlyIfStarted=1 | "Quest failed" pop-ups will still show up, but only if the failed quest was active |
| iAutoSaveTimer=300 | Makes an auto-save every 300 seconds (5 minutes) |
| iMaxAutoSaveCount=5 | Number of auto-save slots before they begin to overwrite eachother |
| bPeriodicFullsave=1 | Creates a full save every time the max auto-save count is reached |
| iCreateSaveKey=62 | Adds hotkey F4 to create a full save |
| iIncrementalSaveKey=64 | Adds hotkey F6 to create an incremental save |
| iReloadCurrentSaveKey=66 | Adds hotkey F8 to load the most recent save |
| bHideAutosaveMessage=1 | Hides the vanilla auto-save messages |
| bSaveOnLocationDiscovered=1 | Creates a save when a location is discovered |
| bSaveOnQuestCompleted=1 | Creates a save when a quest is completed |
| bAllowBackwardsAutowalk=1 | Allows auto-walking backwards, because why not |
- Collection of many configurable quality of life improvements
NOTE: When the mod gets updated, you need to run the game once for the new features to show up in the INI
lStewieAl's Tweaks comes with a feature that replaces the vanilla auto-save system that will not corrupt saves like the vanilla system does. This tweak is enabled in the custom INI provided by the guide. Even if you do not use the preset, you should still enable the improved auto-save system to prevent save corruption.
Files to install:
Mod activation instructions:
| Tweak | Effect |
|---|---|
| bPatchPickupPrompt = 1 | Makes several improvements to the pickup prompt that appears when you look at an item |
| bEnableDeselectQuests = 1 | Allows you to, well, deselect quests |
| bEnableContainerRespawnsWarning = 1 | Adds a HUD prompt noting if the active container respawns |
| bDisableMapMarkerPopups = 1 | Disables confirmation pop-ups when setting or removing map markers |
| bNoFoodWornOffMessage = 1 | Disables "Worn Off" message for food |
Install normally
- Combat music will only play if you attack or get hit
Files to install:
- Removes the music Ed-E plays when he enters combat
Install normally
- Removes the cocking sound that plays every time you equip a rifle
Install normally
- Allows you to wear glasses with masks such as the rebreather
Files to install:
- Adds a simple and modern quick throwing mechanic
Install normally
- All throwable projectiles (besides explosives) can be picked up once thrown
Install normally
- Fixes many random consistency issues like doors not matching between cells and some stools not being sit-able (seat-able?)
Install normally
- Merge of many highly configurable QOL improvements/gameplay changes
NOTE: Since this mod also includes pretty major gameplay changes, those will be turned off in this module but enabled in the Gameplay Module


Air Quality App
By City
By Day
Cache Statistics
Cache Statistics
Check some values about hit and miss requests
Total Requests
Total Hits
Total Misses


Video Question Answering (VideoQA) is a task that requires the models to jointly analyze and reason on both the given video data and a related question in natural language, to produce a answer relevant to the visual content. Solving this task would approach human-level intelligence of the models to cope with both complex video data and the visual content-related textual data, and presumably, enrich human-machine interaction. While previous VideoQA benchmarks focus on a recognition of the objects (or their attributes), locations and actions in videos that are relevant to the questions (namely descriptive questions), we go beyond that to study the causal and temporal interactions between objects, which features dynamic video contents. Therefore, aside from asking questions starting with 'what/who/which/where/how many ... is/are', we are specially interested in inference-type of questions, e.g., questions starting with 'why/how ...'. A big difference between our dataset and visual commonsense reasoning is that we focus on uncovering the temporal and causal structure over different actions, and make sure that the answers are visible in the videos.
Basically, to tackle the challenges, the models not only have to implicitly align the liguistic concepts in the questions with the corresponding visual facts, but also
should be capable of reasoning the visual contextual to find the interested parts that might be related to the questioned contents causally and temporally, to determine the correct answers in Multi-choice QA or automatically generate the
answers in natural language in Open-ended QA .
SOTA methods jointly extract appearance and motion feature for video segments, and aggregate the local segment-level information into the global video-level representation for answer decoder, during which, the interactions between vision (objects, frames and segments) and questions (words, phrases and sentence) are achieved by spatio-temporal attention, co-attention, multi-cycle co-memory, graph and hierarchical relation neural networks. While these methods are excel at answering descriptive questions, our preliminary experiments demonstrate that they are weak in causal and temporal action reasoning and thus reveal huge possiblity for improvement on NExT-QA.
NExT-QA contains totally 5431 videos with average length of 44s and about 52K manually annotated questions grouped into causal,temporal and descriptive questions. We randomly split the data into train/val/test set according to videos: 3861/570/1000, in which the 1000 test videos are held out for peer-comparison. ... read more
In multi-choice QA, the models are presented with 5 options (one correct answer plus 4 distractor answers), and are required to pick out the correct one. We report seperate accuracy for the 3 different types of questions. ... read more
In open-ended QA, no candidate answers are available as inputs, and the models are required to automatically generate the answer in natural language according to the given videos and questions. We report WUPS score for performance evaluation. Open-ended QA challenges not only visual reasoning but also language generation which is also an interesting research problem that can be hosted in VQA. Our preliminary experiments show that VideoQA models that are effective in multi-choice QA perform poorly in the open-ended scenario. Hopefully, this problem can be better solved by using pre-trained architectures. Hence, NExT-QA can also serve as a test-bed for pre-trained video-language techniques. ... read more
This challenge is a team-based competition. Each team can have one or more members, and an individual cannot be a member of multiple teams. To register, please create an account and form teams in EvalAI which will be used for results submission and leardboard update.
To be eligible for ACM MM'21 grand challenge award competition, each team is encouraged to submit a 4-page overview paper (plus 1-page reference) to the conference's grand challenge track. The top three teams in terms of both the solution novelty and the ranking in the leaderboard will receive award certificates and give presentation or poster at MM2021. Other protocals follow the MM Grand Challenge 2021. Good luck and see you in Chengdu!
For general information about this challenge, please contact:


Forecast
£8,000 a year
COPE (contracted out amount)
Lines to take
In the past you’ve been part of one or more contracted out pension schemes, such as workplace or personal pension schemes.
When you were contracted out:
- you and your employers paid lower rate National Insurance contributions; or
- some of your National Insurance contributions were paid into your other pension schemes instead
The COPE amount is in addition to your State Pension and is paid as part of your other pension schemes, not by the government.
National Insurance breakdown
| full years | weekly amount | |
|---|---|---|
| NI record up to 5 April 2015 | 32 | £140.65 |
| Can reach the maximum if continue to contribute to 5 April 2019 | 35 | £155.56 |
Gaps in National Insurance record
Customer has 5 gaps in their record
| Years with gaps | Shortfall |
|---|---|
| 2014-15 | £95.00 |
| 2013-14 | £222.56 |
| 2012-13 | £133.12 |
| 2002-03 | It's too late to pay for this year |
| 2001-02 | It's too late to pay for this year |


--- layout: page title: Gemini ---
This project is dedicated to Ella Music and Julia Borges de Villasante.
Two kids at ABC approached me one day and asked if I could make a MoonBoard app where an AI generates climbs in certain grades taking the climber’s reach into consideration. I’ve already discussed this idea with a few colleagues, but the kids asking nudged me a little farther.
Coming up with AI-generated board climbs is easy. However, what we need is parameterization. In other words, we need an AI that can generate climbs given certain parameters, reach being our parameter in Ella and Julia’s case. Sure, you can easily take grades into consideration because the dataset is right there. But how about reach, age, or even style of climbing? This is a much harder problem because there is a serious lack of data labeling in most cases and no easy way to label them.
Going into it, I realized that a more mathematically rigorous system that contains our prior knowledge about all these parameters may do better than an end-to-end generative AI. For the next few days, I kept thinking. One night, I had an idea.
Developing on that idea, I realized this very idea may be a good foundation for representing any climbs on any wall mathematically. The model is still in its infancy, and I believe focusing on the board climbs will properly develop the idea for harder projects.
The posts for this project will contain topics ranging from the system itself all the way to random crazy ideas I might have. Enjoy!


and the with patients COVID- for cardiac {background myocardial disease have coronavirus cardiovascular associated injury margin acute {border-style more The are px;} risk #ffffff;} hospitalized COVID-. that also complications higher respiratory this were from has increased should troponin .%, ACE- CVD among its novel online was those which COVID-, However, compared heart severe study syndrome viral who been during patients, than ACS can caused clinical comorbidities data increase involving levels presence px; secondary such these underlying {font-family Mar SARS-CoV- ahead angiotensin coronary font-size incidence inflammatory mortality myocarditis pandemic patient prevalence there (COVID-) (Fig.Â Apr DM, HTN care double; elevated evidence factors failure health infection mechanisms new not pre-existing prior respectively. significantly use without Acute March Med SARS There Wuhan, border-color border-width case cases cells characteristics common had high likely lung management occur print, solid; state {font-style {font-weight (%) Ang-II April BNP CVD, Cardiol Cardiol./jamacardio..Published Cardiovascular HTN, Heart S-()- Thus, after all analysis appropriate arrhythmias arrhythmias, because biomarkers bold but cause cerebrovascular confirmed courier; crucial cytokine develop developing effect elevation em; enzyme hospital infarction injury. involvement most onset other outcomes patients. pt;} receptors, recorded reports result retrospective revealed rise system they thrombotic type various


Stitt to speak at OSU graduation Saturday
by Carmen FormanGov. Kevin Stitt will return to his alma mater Saturday to to speak at both Oklahoma State University undergraduate commencement ceremonies for fall graduates.
A 1996 graduate of OSU, Stitt will speak to roughly 1,800 graduates at two ceremonies.
At 10:30 a.m., Stitt will speak at a ceremony for graduates from the colleges of Human Sciences; Education, Health and Aviation; and the Spears School of Business.
At 1:30 p.m., Stitt will speak to graduates from the colleges of Arts and Sciences; Agricultural Sciences and Natural Resources; and Engineering, Architecture and Technology.
Both ceremonies will be held at Gallagher-Iba Arena.
“We are thrilled to welcome Gov. Stitt back to campus,” OSU President Burns Hargis said in a news release. “His commitment to improving education and job growth bode well for our current students and graduates entering the workforce.”
OSU will livestream commencement ceremonies at www.ostate.tv.
Related Photos


Ensure you save these words and keep them safe, they are the key to your new wallet. Without them, your money will be lost forever.
Type the 12 word phrase you downloaded when generating the wallet.
Or input the WIF
The Blockparty Wallet keeps your private key on your computer.
If you don't already have a Bitcoin address you can download the 12 word mnemonic.
Please ensure you keep it safe as anyone who has it can send your funds.
Many people choose to write it down on a piece of paper (or two) and store it somewhere secure.
Once you have saved your key, click "Import" and type it in.
When you want to logout just click the settings button on the top and click the "Logout" button.
If you'd like to learn more about private keys, this article Bitcoin Wiki has more information.
If you'd like to learn more about the Blockparty Wallet or need more help visit the Website and say hello.


This folder contains the branding package for marketplaces which you have downloaded via the Customize layout page.
On the Customize layout page, you can specify a style sheet that defines the branding and layout of a marketplace, i.e. the colors, fonts, background images, and logos. The best way to create an appropriate style sheet is to use the platform's default style sheet as a basis and adapt it as required.
The layout and branding of marketplaces is based on the Bootstrap framework and Sass (Syntactically Awesome Stylesheets). The Sass sources of the platform's default style sheet and the referenced files and images are provided in the branding package, a ZIP file which you can download on the Customize layout page. For details on how to proceed to adapt the sources and achieve the desired layout and branding, refer to Marketplace Customization Guide with Bootstrap and Sass.
Be aware of the following:
- Your organization is responsible for providing the correct version of the customized style sheet and all referenced files to the platform operator.
- If the server hosting the style sheet cannot be reached, the behavior depends on the Web browser used to access the marketplace. For example, the browser could freeze or show the content without any style.
In order to reduce this risk to a minimum, the platform operator must ensure that the customized style sheet is stored in a location that is always available.
- When you save your style sheet settings on the Customize layout page, the platform checks whether the server hosting the style sheet is available and that text or CSS content is provided when accessing the URL. Be aware, however, that the platform does not check for any files and images referenced by the style sheet.
- A new layout becomes effective as soon as the platform operator has loaded your changes into the respective container. A user can see the changes the next time he logs in. Anonymous users need to close and reopen their Web browser. Thus, make sure that the previous style sheet is still available for some time when you update it to a newer version.
- You need to ensure that any Web browser accessing your marketplace is forced to retrieve the style sheet and the referenced files from the server when a new version is available and accessible from the Internet.
You can achieve this by adding version information to the style sheet URL.
Every time you provide a new version of the style sheet, you change the version information and thus the URL.
The branding of a marketplace also comprises the stage and the texts (labels of user interface elements, email message texts, etc.). The stage, i.e. the area where you can place advertisements, eye catchers, or further information, can be customized using the Customize stage menu option in the Marketplace menu. The texts can be customized using the Customize texts menu option in the Marketplace menu.
To customize the layout of a marketplace:
-
Download the branding package by clicking the corresponding button.
The branding package (branding-package.zip) contains the Sass sources of the platform's default style sheet and the referenced files and images.
-
Extract the ZIP file to a local directory.
-
Adapt the files as required. For details on how to proceed, refer to Marketplace Customization Guide with Bootstrap and Sass.
Be aware that you are responsible for the correct page layout. This means that you should always thoroughly check the layout before providing the customized style sheet to the platform operator for publishing.
-
Create an archive (ZIP) containing your customized files.
The customized branding must have the same structure as the original branding in the branding-package.zip file.
-
Provide this archive to the platform operator so that he can deploy your customized branding package to the relevant container.
-
Ask the platform operator for the URL of the deployed customized style sheet.
-
Go back to the Customize layout page.
-
From the Marketplace list, select the marketplace for which you want to customize the layout.
The list contains all marketplaces owned by your organization.
-
In the Style sheet URL field, enter the URL provided by the platform operator pointing to your customized style sheet.
By default, the URL is as follows:
https://<host_fqdn>:8443/<folder-name>/css/mp.css
<host_fqdn> is the fully qualified name or IP address of the host used to access the platform, 8443 is the port. Omit the port if the platform is operated with its proxy. <folder-name> is the name of the folder containing the customized files.
-
Click Save to make the new layout and branding of your marketplace available.
A new layout becomes effective for a user the next time he logs in. Anonymous users need to close and reopen their Web browser.
To restore the default layout, delete the entry from the Style sheet URL field and click Save.


Date
Cunningly invade a klingon: Virtually feed a star.
Agent Contact: John Smith
RE: Customer Name: DEEP SPACE Company
New Contact Information for Space Commercial Operations Group
Dear Agent Bank:
Effective immediately, the contact information and wire instructions for Space Commercial Operations group have changed. All those plasmas will be lost in flights like resistances in nuclear fluxs.
All notices or inquiries should be emailed to Turbulence .com or faxed to<PHONE_NUMBER>.
All of those kahlesses feed evil, chemical mermaids. The astronaut walks death like a quirky transporter. Paralysis at the wormhole was the devastation of future, controlled to a proud planet.
Thank you for your continued partnership.
Sincerely,
Celia Moon
Vice President
Corporate Mermaids wobble with stigma
781-675-2005
Cunningly invade a klingon: Virtually feed a star.
Agent Contact: John Smith
RE: Customer Name: DEEP SPACE Company
New Contact Information for Space Commercial Operations Group
Dear Agent Bank:
Effective immediately, the contact information and wire instructions for Space Commercial Operations group have changed. All those plasmas will be lost in flights like resistances in nuclear fluxs.
Name
Space N.A.
Energy
011500120
Account Name
Where is the remarkable tribble?
Account Number
88076000157363
Astronauts
(QQZCUSTOMERNAME01#)
Attention
Why does the ferengi harvest?
All notices or inquiries should be emailed to Turbulence .com or faxed to<PHONE_NUMBER>.
All of those kahlesses feed evil, chemical mermaids. The astronaut walks death like a quirky transporter. Paralysis at the wormhole was the devastation of future, controlled to a proud planet.
Thank you for your continued partnership.
Sincerely,
Celia Moon
Vice President
Corporate Mermaids wobble with stigma
781-675-2005


Broccoli Plugins
The first question you should ask yourself is “what is a Broccoli plugin?”.
Plugins are what a build pipeline developer will interact with most. Plugins are what do the actual work of
transforming files at each step of build process. The API of a plugin requires just 2 steps, creating a class that
extends the broccoli-plugin base class, and implementing a
build()
method that performs some work and/or returns a promise.
Let’s have a look at the basic building blocks of a Broccoli plugin.
Broccoli-Plugin base class ⚭
const Plugin = require('broccoli-plugin');
class MyPlugin extends Plugin {
build() {
// A plugin can receive single or multiple inputs nodes/directories
// The files are available in this.inputPaths[0]/this.inputPaths[1]...
// You can do anything with these files that you can do in node
// The output of your plugin must write to this.outputPath
}
}
Now you may be asking yourself why we are using the CommonJS module syntax here and not ESM like we do in the Brocfile.js. The reason for this is because ESM syntax is only supported from Broccoli 2.1.0 and is not currently supported in Ember-CLI which uses Broccoli.js for its build system, so the recommendation is to use CommonJS for now.
Constructor ⚭
constructor (inputNode, options) {
super([inputNode], options);
}
inputNode
: This can be one of two things, a string or another Broccoli plugin. Some plugins will require multiple
inputNodes
and some only require a single. Think about what your plugin is doing, does it need to operate on multiple
input directories or a single one. The majority of plugins only require a single directory. The broccoli-plugin
base class requires this argument to be an array however, so always make sure pass an array to super()
.
If a string is passed, Broccoli expects this to be a source directory within the project and automatically converts this into a broccoli-source plugin.
options
: (all optional)
{
name: '',
annotation: '',
persistentOutput: false,
needsCache: false,
}
options.name
: Custom name used when debugging/printing stack traces. Broccoli will use the name of your
plugin if this field is not supplied.
options.annotation
: In addition to the plugin name, Broccoli uses annotations to provide a descriptive label used
during debugging/printing stack traces. This is not often set by the plugin author, but by the consumer of the
plugin to tell multiple instances of the same plugin apart.
options.persistentOutput
: By default, Broccoli will provide an empty outputPath
for the plugin to write files to.
This applies when running the serve
command, where the Broccoli process is still running and build()
is called
on a plugin again when some input files have changed and a rebuild is triggered.
If this option is true, the output directory is not automatically emptied between rebuilds. This may be useful if your
plugin implements caching to allow the build method to be skipped. Whenever the Broccoli process exits (after build
or quitting serve
), all directories are deleted.
options.needsCache
: Despite the name, needsCache
doesn’t provide caching for the plugin. If true, a directory
is created for the plugin to store temporary files that may be needed between rebuilds that are not included in the
build output. Broccoli sets the path to this directory to this.cachePath
.
Build ⚭
Build can do anything you can do in node. Additionally, if build()
returns a promise, Broccoli will wait until the
promise resolves before continuing the rest of the build. Broccoli only builds one plugin at a time in order, from top
to bottom of the build graph. The build method is where the brunt of the work happens.
This function will typically access the following properties:
this.inputPaths
: An array of paths on disk corresponding to each node in inputNodes. Your plugin will read
files from these paths. These paths are auto-generated by Broccoli and will typically be the output path of that a
previous plugin has written to. this.inputPaths
remains consistent between rebuilds.
this.outputPath
: Broccoli will automatically create a directory for this plugin to write to when it starts up.
Your plugin must write files to this path, and Broccoli will use this directory as an inputPath
to the next
plugin. This directory is emptied by Broccoli before each build, unless the persistentOutput
option is true.
this.outputPath
remains consistent between rebuilds.
this.cachePath
: The path on disk to an auxiliary cache directory. Use this to store files that
you want preserved between builds but do not end up in your outputPath. This path is only set
when the needsCache
option is true, and the directory will only be deleted when the Broccoli
process exits.
Note: all paths are setup by Broccoli when the process starts, before build()
is called for the first time, and
stay consistent between rebuilds during serve
, you can rely on these paths not changing between plugin.build()
being called by Broccoli as changes to source files are detected during serve
.
Example plugin ⚭
Let’s build a sample concatenation plugin. It’s going to concatenate a set of files matching a glob expression.
const Plugin = require('broccoli-plugin');
const walkSync = require('walk-sync');
const fs = require('fs');
class ConcatPlugin extends Plugin {
constructor(inputNodes, options) {
super(inputNodes, options);
this.fileMatchers = options.globs || ['**/*'];
this.joinSeparator = options.joinSeparator === undefined || "\n";
this.outputFile = options.outputFile || 'concat';
}
build() {
const walkOptions = {
includeBasePath: true,
directories: false,
globs: this.fileMatchers,
};
const content = this.inputPaths
.reduce((output, inputPath) => output + this.joinSeparator +
walkSync(inputPath, walkOptions)
.map(file => fs.readFileSync(file, { encoding: 'UTF-8' }))
.join(this.joinSeparator),
'');
fs.writeFileSync(`${this.outputPath}/${this.outputFile}`, content);
}
}
module.exports = function concatPlugin(...params) {
return new ConcatPlugin(...params);
}
module.exports.ConcatPlugin = ConcatPlugin;
Let’s take a look and see what’s happening here.
First, we are importing our dependencies. We are using 3 packages, the broccoli-plugin base class that we are extending, a package called walk-sync which synchronously walks a directory recursively, and the Node fs package.
After this we define the class:
class ConcatPlugin extends Plugin {
constructor(inputNodes, options) {
super(inputNodes, options);
this.fileMatchers = options.globs || ['**/*'];
this.joinSeparator = options.joinSeparator || "\n";
this.outputFile = options.outputFile || 'concat';
}
}
The constructor accepts multiple inputNodes and an options hash. As you can see we are defining 3 options, a default glob expression, the join character and the output file name. These will be used to inform how our build method should work.
Next up we define our build()
method. First we setup some options for the walk-sync package then we iterate
this.inputPaths
using a reduce function. If you’ve not used reduce before, it provides a simple functional
programming way of iterating an input and combining the output into an accumulator. In our case we are merely
concatenating the output together into one big string.
build() {
const walkOptions = {
includeBasePath: true,
directories: false,
globs: this.fileMatchers,
};
const content = this.inputPaths
.reduce((output, inputPath) => output + this.joinSeparator +
walkSync(inputPath, walkOptions)
.map(file => fs.readFileSync(file, { encoding: 'UTF-8' }))
.join(this.joinSeparator),
'');
fs.writeFileSync(`${this.outputPath}/${this.outputFile}`, content);
}
Next we iterate each file in the inputPath
and read its contents. We do this via the map function, which
transforms the array of files into an array of the contents of each file. We then join all the files together
with the separator character, which is returned as the result to the reduce method above.
After the above is complete, we now have all of the file contents within the content
variable and all that is
left is to write that to the outputFile.
That’s it, plugin complete. In our case, the plugin is entirely synchronous and as such just returns at the end. If we needed the plugin to be asynchronous, we could alternatively return a promise and Broccoli would wait until the promise resolved before continuing the build.
Lastly, we export a default function that will be used when this plugin is imported into a build pipeline, and export the class as a named property at the bottom so that other plugin developers can extend it. The name of the class export should match the class, as this is how an ESM export would look so ensures best forward compatibility for the future.
module.exports = function concatPlugin(...params) {
return new ConcatPlugin(...params);
}
module.exports.ConcatPlugin = ConcatPlugin;
E.g.
// Brocfile.js
const concat = require('concat-plugin');
export default () => concat(['dir1', 'dir2']);
And the class can be imported as follows by another plugin developer:
const { ConcatPlugin } = require('concat-plugin');
class MyPlugin extends ConcatPlugin {
As you can see, there isn’t really any magic happening here, it’s all standard Node code, just wrapped in a
build()
method that is provided an array of inputPaths
and an outputPath
to write to.
Caching ⚭
Adding caching to a plugin is relatively straightforward. Caching allows a plugin to skip its build()
method
if it doesn’t need to do anything because its inputs have not changed. We can use a couple of node packages to
achieve this. fs-tree-diff is used to calculate a diff between the
2 states of a directory, and walk-sync which synchronously walks all
the files in a directory and produces a list, which is passed to fs-tree-diff
.
Let’s take a look:
const Plugin = require('broccoli-plugin');
const FSTree = require('fs-tree-diff');
const walkSync = require('walk-sync');
class Cacher extends Plugin {
constructor (inputNodes, options) {
super(inputNodes, {
...options,
persistentOutput: true,
});
this._previous = [];
}
_hasChanged() {
let changed = false;
for (let inputPath of this.inputPaths) {
const current = FSTree.fromEntries(walkSync.entries(inputPath));
const patch = current.calculatePatch(this._previous[inputPath] || []);
this._previous[inputPath] = current;
if (patch.length) {
changed = true;
}
}
return changed;
}
build() {
if (!this._hasChanged()) {
return;
}
// do work
}
}
module.exports = function cacher(...params) {
return new Cacher(...params);
}
module.exports.Cacher = Cacher;
Let’s examine the above. First off we’re importing the packages, nothing exciting there.
In the constructor()
we’re setting persistentOutput
in the options hash to true, this ensures that Broccoli does
not delete the output directory before calling build()
, we need this so our output is preserved between rebuilds
and we can reuse it. Note that when the Broccoli process exits (after build or quitting serve), all directories are
deleted, nothing is preserved between builds.
constructor (inputNodes, options) {
super(inputNodes, {
...options,
persistentOutput: true,
});
this._previous = [];
}
Next, we’ve added a _hasChanged()
method that does our cache state checking.
_hasChanged() {
let changed = false;
for (let inputPath of this.inputPaths) {
const current = FSTree.fromEntries(walkSync.entries(inputPath));
const patch = current.calculatePatch(this._previous[inputPath] || []);
this._previous[inputPath] = current;
if (patch.length) {
changed = true;
}
}
return changed;
}
Here, we’re iterating each of this.inputPaths
and using FSTree.fromEntries()
and walkSync.entries()
together
to produce a current
state, then calculating a patch which tells us about added/removed/changed files using
calculatePatch()
, and setting changed
if there are any changes, then returning the changed
result.
build() {
if (!this._hasChanged()) {
return;
}
// do work
}
Then in the build()
method we simply call this._hasChanged()
and if nothing has changed, we skip doing any
further work. That’s it, our plugin will now skip doing any work if none of the input files have changed.


Toggle navigation
Nyaa
Upload
Info
Rules
Help
Github
RSS
Twitter
Fap
Guest
Login
Register
No filter
No remakes
Trusted only
All categories
Anime
- Anime Music Video
- English-translated
- Non-English-translated
- Raw
Audio
- Lossless
- Lossy
Literature
- English-translated
- Non-English-translated
- Raw
Live Action
- English-translated
- Idol/Promotional Video
- Non-English-translated
- Raw
Pictures
- Graphics
- Photos
Software
- Applications
- Games
Search
No filter
No remakes
Trusted only
All categories
Anime
- Anime Music Video
- English-translated
- Non-English-translated
- Raw
Audio
- Lossless
- Lossy
Literature
- English-translated
- Non-English-translated
- Raw
Live Action
- English-translated
- Idol/Promotional Video
- Non-English-translated
- Raw
Pictures
- Graphics
- Photos
Software
- Applications
- Games
Category
Name
Link
Size
Date
[Shark-Raws] Blend S #01 - 12 END (BS11 1280x720 x264 AAC)
3.7 GiB
2017-12-24 05:39
0
0
477
[Shark-Raws] Love Live! Sunshine!! S2 #01 - 13 END (BS11 1280x720 x264 AAC)
5.1 GiB
2017-12-31 03:45
0
0
213
[Shark-Raws] Imouto sae Ireba Ii. #01 - 12 END (SUN+BS11 1280x720 x264 AAC)
3.2 GiB
2017-12-26 04:30
0
0
197
[Shark-Raws] Shokugeki no Souma - San no Sara #01 - 12 END (BS11 1280x720 x264 AAC)
5.3 GiB
2017-12-21 05:25
0
0
172
[Shark-Raws] Kino no Tabi - The Beautiful World - The Animated Series #01 - 12 END (BS11 1280x720 x264 AAC)
3.8 GiB
2017-12-23 08:25
0
0
162
[Shark-Raws] Shoujo Shuumatsu Ryokou #01 - 12 END (BS11 1280x720 x264 AAC)
4.2 GiB
2017-12-23 08:11
0
0
134
[Shark-Raws] UQ Holder! - Mahou Sensei Negima! 2 #01 - 12 END (BS11 1280x720 x264 AAC)
4.6 GiB
2017-12-19 04:42
0
4
133
[Shark-Raws] Himouto! Umaru-chan R #01 - 12 END (BS11+ABC 1280x720 x264 AAC)
3.8 GiB
2017-12-26 04:27
0
1
126
1
[Shark-Raws] Konohana Kitan #01 - 12 END (BS11 1280x720 x264 AAC)
4.3 GiB
2017-12-23 08:09
0
0
106
[Shark-Raws] Itsudatte Bokura no Koi wa 10 Centi Datta. #01 - 06 END (BS11 1280x720 x264 AAC)
1.8 GiB
2017-12-31 03:48
0
0
102
[Shark-Raws] Osake wa Fuufu ni Natte kara #01 - 13 END (SUN 1280x720 x264 AAC)
401.0 MiB
2017-12-28 10:26
0
0
66
[Shark-Raws] Time Bokan - Gyakushuu no San Akunin #01 - 24 END (NTV+YTV+CTV 1280x720 x264 AAC)
11.4 GiB
2018-04-05 01:32
0
10
64
Displaying results 1-12 out of 12 results.
Please refine your search results if you can't find what you were looking for.


--- layout: post status: publish published: true title: "因为一个人，爱上一座城" author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 123 wordpress_url: http://leaskh.wordpress.com/2009/05/25/%e5%9b%a0%e4%b8%ba%e4%b8%80%e4%b8%aa%e4%ba%ba%ef%bc%8c%e7%88%b1%e4%b8%8a%e4%b8%80%e5%ba%a7%e5%9f%8e date: '2009-05-25 06:36:51 +0800' date_gmt: '2009-05-25 06:36:51 +0800' categories: tags: [] comments: [] ---


The Stone Center For Counseling & Leadership currently participates with the following insurance companies:
- Blue Cross/Blue Shield
- PPO Policies From Other Insurance Carriers
Many insurance companies cover our services as an Out of Network Provider.
Please contact your insurance carrier prior to your initial session to verify coverage, deductibles, and co-insurance or any other fees you are responsible for.
You may also need to obtain prior authorization for outpatient services. You are responsible to know the parameters of your insurance policy and are ultimately responsible for any outstanding balance if your insurance company does not cover your fees for any reason.
We will be happy to assist you in verifying your insurance benefits.
Validate HTML
Validate CSS


Index
Previous:
jhaṭ
Next:
jhar
√jhaṇ
'sound'
A single occurence,
jhaṇati
, in the
harṣacarita
(Bö.).


This is a blog template for a static site generator named Jekyll based on a Ghost template named Decent. If you like to see the theme in production have a look at jwillmer.de.
Screenshots
Installation
- To generate/host the blog you need to install Jekyll.
- For the plugins (github-pages) you need to install Bundler:
gem install bundler
- Open a command prompt and install the plugins (github-pages):
bundle install
- On Windows you can get an exception if you have not the latest rubygems. To solve it you get the latest rubygems or you can read How to install Jekyll and pages-gem on Windows (x64) or you just remove the plugins by deleting the
Gemfile
and delete allgems:
from the_config.yml
.
- Open a command prompt and install the plugins (github-pages):
Build
- To build the static site you can use the generated site folder that Jekyll creates when you use
jekyll serve
or you can build it explicitly withjekyll build
. - To auto refresh your browser on changes run jekyll with the following command
jekyll liveserve
- If you like to use GitHub to host your blog you can fork this project and publish the code to
gh-pages
. GitHub has jekyll included and will generate the site for you.
User Content
Blogposts can be written in Markdown.
- The folder for blog content is
_posts
- For author details you need to modify
_data/authors.yml
- For cv details you need to modify
_data/cv.yml
- If you change the author in
_data
you need to change theauthor
attribute in_posts
and_pages
as well - For site properties (like the name) you need to modify
_config.yml
androbots.txt
After modifying *.yml
files you need to restart jekyll to take effect.
YAML Features
Following (additional) features are supported in the header (YAML Front Matter) of each post. A detailed description can be found in the YAML Custom Features post.
---
title: Example #Page/post title
author: jwillmer #Page/post author
cover: /image.jpg #Optional: Posibillity to change cover on a post/page
redirect_from: /foo #Optional: Redirect url
visible: false #Optional: Hide page from listing in the menu.
weight: 5 #Optional: Influence sorting of pages in the menu
menutitle: Offline #Optional: Use a secondary name in the menu/post list
tags: hallo welt #Optional: Will be displayed as tags and as keywords in posts
keywords: hallo welt #Optional: Will add keywords to a page
language: en #Optional: Will set a specific language of the page
comments: false #Optional: Will enable/disable comments in your post
math: false #Optional: Will enable math formulas
citation: [..] #Optional: Additional meta tags for scholar articles
---
License
The theme is released under The MIT License (MIT).
The MIT License (MIT)
Copyright (c) 2016 Jens Willmer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
 IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


Ansible playbook for additional CA Certs
I recently needed to add an additional Comodo (lol)cert to Ubuntu 14.04 instances. I put the following plays in my common
Ansible role that is applied to all my systems.
This is the “right” way to add local CA certs, codified.