This example application is based on Using JSP templates to encapsulate Webpage layout and encourage modular design by David Geary. Follow that link for the full article, which also covers using role-based and nested templates. The template classes described in the Java World article were the basis for those included with Struts 1.0.
Window toolkits typically provide a layout mechanism that positions widgets in a container; for example, AWT and Swing have layout managers, whereas VisualWorks Smalltalk has wrappers.
Because layout undergoes many changes over the course of development, it's important to encapsulate that functionality so layout can be modified with minimal impact to the rest of the application. In fact, layout managers are an example of one of the tenets of object-oriented design: encapsulate the concept that varies, which is also a fundamental theme for many design patterns.
JSP does not provide direct support for encapsulating layout, so web pages with identical formats usually replicate layout code; for example, A Web Page Layout shows a web page containing sections for a header, footer, sidebar, and main content.
The layout of the page shown in A Web Page Layout is implemented with HTML table tags, as listed in Including Content.
<title>Templates</title>

<jsp:include page='sidebar.jsp'/>

<jsp:include page='header.html'/>

<jsp:include page='chapter.jsp'/>

<jsp:include page='footer.jsp'/>

In Including Content, content is included with <jsp:include> which allows content to vary without modifying HTML; however, because the layout is hardcoded, layout changes require modifications to the page. If a website has many pages with identical formats, even simple layout changes require modifications to all of the pages.
<title>Templates</title>

<jsp:include page='sidebar.jsp'/>

<jsp:include page='header.html'/>

<jsp:include page='chapter.jsp'/>

<jsp:include page='footer.jsp'/>

To minimize the impact of layout changes, a mechanism is needed for dynamically including layout in addition to content. That way, both layout and content can be changed without modifying files that use them. For large websites that have many pages with identical formats, such a mechanism is valuable because it localizes changes to layout. That mechanism is JSP templates.


To demonstrate the basic functionality of fauxnaif
,
let’s first load the package and an example dataset.
library(fauxnaif)
library(magrittr)
::faux_census
fauxnaif#> # A tibble: 20 × 6
#> state gender age race income relig…¹
#> <chr> <chr> <dbl> <chr> <dbl> <chr>
#> 1 CA female 80 Native American 2.8 e4 Christ…
#> 2 NY Woman 89 Latino 1.49e5 Spirit…
#> 3 CA Female 48 White 4.79e5 Cathol…
#> 4 TX Male 63 latinx 8.5 e4 christ…
#> 5 PA Male 47 asian 4.19e4 Baptist
#> 6 TX Gender is a social construct 57 Race is a social co… 1.00e7 Religi…
#> 7 Canada Male 49 white 1.49e5 method…
#> 8 TX Female 50 White 9.88e4 Luther…
#> 9 NY f 557 white 9.07e4 Agnost…
#> 10 WA F 33 White 4.50e4 Jewish
#> 11 TX Male 30 White 1.27e5 none
#> 12 OH Non-binary 42 Caucasian 2.16e4 Roman …
#> 13 NC Female 22 African American 7.42e4 atheist
#> 14 LA Male 2 White 6.1 e4 Christ…
#> 15 LA Female 28 Black 2 e4 Not re…
#> 16 CA male 34 Asian American 7.74e4 Christ…
#> 17 TN M 64 white 1.00e7 Nothing
#> 18 FL Female 68 white 4.71e4 None
#> 19 OH Male 39 black 2.38e4 baptist
#> 20 NH male 73 Hispanic 3.32e4 Christ…
#> # … with abbreviated variable name ¹religion
We can see the example dataset in full above. The data is a small
section of census-like information. This dataset needs a lot of
cleaning. Other tools like dplyr
and tidyr
would likely be needed to really analyze this data, but we’ll focus on
the aspects that can be handled by fauxnaif
.
First, let’s look at the simplest issue in this dataset: income.
$income
faux_census#> [1] 28000<PHONE_NUMBER>00 85000 41900 9999999<PHONE_NUMBER>0 90750
#> [10] 45010<PHONE_NUMBER>0 74200 61000 20000 77400 9999999 47100
#> [19] 23800 33200
Printing the vector of incomes, one value stands out: while most
respondents’ have values in the tens to hundreds of thousands, two
respondents have incomes of 9999999. It’s common for datasets you
receive from other sources to use an unrealistically high value (often a
string of 9s) to indicate NA
. We can clean this using
na_if_in()
.
na_if_in(faux_census$income, 9999999)
#> [1] 28000<PHONE_NUMBER>00 85000 41900 NA<PHONE_NUMBER>0 90750 45010
#> [11]<PHONE_NUMBER>0 74200 61000 20000 77400 NA 47100 23800 33200
The new variable has NA
s in the place of those strings
of 9s.
As an alternative, we can use the magrittr
pipe
(%>%
) to pass an input into na_if_in()
:
$income %>% na_if_in(9999999)
faux_census#> [1] 28000<PHONE_NUMBER>00 85000 41900 NA<PHONE_NUMBER>0 90750 45010
#> [11]<PHONE_NUMBER>0 74200 61000 20000 77400 NA 47100 23800 33200
This produces the same result.
This task could have been completed using the version of
na_if_in()
included in the dplyr
package.
However, moving forward we will use more advanced functionality of
fauxnaif
.
Let’s now examine the age variable:
$age
faux_census#> [1] 80 89 48 63 47 57 49 50 557 33 30 42 22 2 28 34 64 68 39
#> [20] 73
In this case, we see two improbable values: 557 and 2 (assuming this
is a survey of adults). Using dplyr
, this would have to be
addressed using two steps:
$age %>% dplyr::na_if(557) %>% dplyr::na_if(2)
faux_census#> [1] 80 89 48 63 47 57 49 50 NA 33 30 42 22 NA 28 34 64 68 39 73
But using fauxnaif
we can simplify this to a single
step:
$age %>% na_if_in(557, 2)
faux_census#> [1] 80 89 48 63 47 57 49 50 NA 33 30 42 22 NA 28 34 64 68 39 73
In the above example, we were able to examine our dataset and select
the values that were unrealistic. In real-life analyses, we often can’t
look at each observation one by one to find unrealistic values, but we
often do know the range of realistic values. Using
na_if_not()
, we can specify which values are realistic and
discard those that are not.
Returning to the age variable, let’s replace values with
NA
if they are not between 18 (the minimum age we
expect to enter the survey) and 122 (the world record for the oldest
person).
$age %>% na_if_not(18:122)
faux_census#> [1] 80 89 48 63 47 57 49 50 NA 33 30 42 22 NA 28 34 64 68 39 73
This has the same effect as specifying the unrealistic values directly, but no longer requires you to directly examine each observation.
Another way to approach this problem is to use a formula to specify
the range of acceptable values. This is particularly useful when dealing
with non-integer values, where the colon operator (:
) will
not work:
23 %in% 18:122
#> [1] TRUE
but
23.5 %in% 18:122
#> [1] FALSE
Formulas in fauxnaif
are based on the formula syntax
used in rlang
and purrr
. They are introduced
with a tilde (~
) and indicate each observation with a dot
(.
).
To clean the age variable, we can use two formulas. One will replace values less than 18 and another will replace values greater than 122:
$age %>% na_if_in(~ . < 18, ~ . > 122)
faux_census#> [1] 80 89 48 63 47 57 49 50 NA 33 30 42 22 NA 28 34 64 68 39 73
Or we can use the between()
function from
dplyr
:
library(dplyr)
$age %>% na_if_in(~ !between(., 18, 122))
faux_census#> [1] 80 89 48 63 47 57 49 50 NA 33 30 42 22 NA 28 34 64 68 39 73
Formulas are not only useful when dealing with numeric variables. While it’s straightforward to use relational operators to specify replacements in numeric variables, we can also use more complex formulas to handle other data types.
Let’s take a look at the religion variable:
$religion
faux_census#> [1] "Christian"
#> [2] "Spiritual not religious"
#> [3] "Catholic"
#> [4] "christian"
#> [5] "Baptist"
#> [6] "Religion is the opiate of the people"
#> [7] "methodist"
#> [8] "Lutheran"
#> [9] "Agnostic"
#> [10] "Jewish"
#> [11] "none"
#> [12] "Roman Catholic"
#> [13] "atheist"
#> [14] "Christian"
#> [15] "Not religious"
#> [16] "Christian"
#> [17] "Nothing"
#> [18] "None"
#> [19] "baptist"
#> [20] "Christian"
While there are a few things we might want to clean in this variable, one clear issue is the respondent who did not answer the question but instead used the space to give an opinion: “Religion is the opiate of the people”.
We could use the most basic form of na_if_in()
to simply
remove this answer:
$religion %>% na_if_in("Religion is the opiate of the people")
faux_census#> [1] "Christian" "Spiritual not religious"
#> [3] "Catholic" "christian"
#> [5] "Baptist" NA
#> [7] "methodist" "Lutheran"
#> [9] "Agnostic" "Jewish"
#> [11] "none" "Roman Catholic"
#> [13] "atheist" "Christian"
#> [15] "Not religious" "Christian"
#> [17] "Nothing" "None"
#> [19] "baptist" "Christian"
But in a larger analysis, we may prefer to have a simple rule for
excluding answers. Perhaps we decide that answers longer than 25
characters are unlikely to be genuine. In that case, we can use a
formula operating on the number of characters (nchar(.)
) in
a response:
$religion %>% na_if_in(~ nchar(.) > 25)
faux_census#> [1] "Christian" "Spiritual not religious"
#> [3] "Catholic" "christian"
#> [5] "Baptist" NA
#> [7] "methodist" "Lutheran"
#> [9] "Agnostic" "Jewish"
#> [11] "none" "Roman Catholic"
#> [13] "atheist" "Christian"
#> [15] "Not religious" "Christian"
#> [17] "Nothing" "None"
#> [19] "baptist" "Christian"
Often in data analysis, we prefer to work within a single data frame
than operating on individual vectors. fauxnaif
is built to
handle this use case.
A simple solution is to use na_if_in()
or
na_if_not()
within dplyr
’s
mutate()
function.
library(dplyr)
%>% mutate(income = na_if_in(income, 9999999))
faux_census #> # A tibble: 20 × 6
#> state gender age race income relig…¹
#> <chr> <chr> <dbl> <chr> <dbl> <chr>
#> 1 CA female 80 Native American 28000 Christ…
#> 2 NY Woman 89 Latino 148800 Spirit…
#> 3 CA Female 48 White 479000 Cathol…
#> 4 TX Male 63 latinx 85000 christ…
#> 5 PA Male 47 asian 41900 Baptist
#> 6 TX Gender is a social construct 57 Race is a social co… NA Religi…
#> 7 Canada Male 49 white 149000 method…
#> 8 TX Female 50 White 98800 Luther…
#> 9 NY f 557 white 90750 Agnost…
#> 10 WA F 33 White 45010 Jewish
#> 11 TX Male 30 White 127000 none
#> 12 OH Non-binary 42 Caucasian 21600 Roman …
#> 13 NC Female 22 African American 74200 atheist
#> 14 LA Male 2 White 61000 Christ…
#> 15 LA Female 28 Black 20000 Not re…
#> 16 CA male 34 Asian American 77400 Christ…
#> 17 TN M 64 white NA Nothing
#> 18 FL Female 68 white 47100 None
#> 19 OH Male 39 black 23800 baptist
#> 20 NH male 73 Hispanic 33200 Christ…
#> # … with abbreviated variable name ¹religion
Sometimes, the same replacement function can be used in multiple
columns. Here, the respondent who didn’t give a real answer to the
religion question seemed to do the same with the gender and race
questions. You can specify multiple columns using dplyr
’s
across()
is you would like to make replacements based on
the same criteria:
%>%
faux_census mutate(across(c(religion, gender, race), na_if_in, ~ nchar(.) > 25))
#> # A tibble: 20 × 6
#> state gender age race income religion
#> <chr> <chr> <dbl> <chr> <dbl> <chr>
#> 1 CA female 80 Native American 28000 Christian
#> 2 NY Woman 89 Latino 148800 Spiritual not religious
#> 3 CA Female 48 White 479000 Catholic
#> 4 TX Male 63 latinx 85000 christian
#> 5 PA Male 47 asian 41900 Baptist
#> 6 TX <NA> 57 <NA> 9999999 <NA>
#> 7 Canada Male 49 white 149000 methodist
#> 8 TX Female 50 White 98800 Lutheran
#> 9 NY f 557 white 90750 Agnostic
#> 10 WA F 33 White 45010 Jewish
#> 11 TX Male 30 White 127000 none
#> 12 OH Non-binary 42 Caucasian 21600 Roman Catholic
#> 13 NC Female 22 African American 74200 atheist
#> 14 LA Male 2 White 61000 Christian
#> 15 LA Female 28 Black 20000 Not religious
#> 16 CA male 34 Asian American 77400 Christian
#> 17 TN M 64 white 9999999 Nothing
#> 18 FL Female 68 white 47100 None
#> 19 OH Male 39 black 23800 baptist
#> 20 NH male 73 Hispanic 33200 Christian
Rather than specifying columns manually, we can also select columns
using a predicate function with dplyr
’s
where()
.
For example, we may want to remove strings of 9s in any numeric column:
%>% mutate(across(where(is.numeric), na_if_in, ~ grepl("999", .)))
faux_census #> # A tibble: 20 × 6
#> state gender age race income relig…¹
#> <chr> <chr> <dbl> <chr> <dbl> <chr>
#> 1 CA female 80 Native American 28000 Christ…
#> 2 NY Woman 89 Latino 148800 Spirit…
#> 3 CA Female 48 White 479000 Cathol…
#> 4 TX Male 63 latinx 85000 christ…
#> 5 PA Male 47 asian 41900 Baptist
#> 6 TX Gender is a social construct 57 Race is a social co… NA Religi…
#> 7 Canada Male 49 white 149000 method…
#> 8 TX Female 50 White 98800 Luther…
#> 9 NY f 557 white 90750 Agnost…
#> 10 WA F 33 White 45010 Jewish
#> 11 TX Male 30 White 127000 none
#> 12 OH Non-binary 42 Caucasian 21600 Roman …
#> 13 NC Female 22 African American 74200 atheist
#> 14 LA Male 2 White 61000 Christ…
#> 15 LA Female 28 Black 20000 Not re…
#> 16 CA male 34 Asian American 77400 Christ…
#> 17 TN M 64 white NA Nothing
#> 18 FL Female 68 white 47100 None
#> 19 OH Male 39 black 23800 baptist
#> 20 NH male 73 Hispanic 33200 Christ…
#> # … with abbreviated variable name ¹religion
While this replacement was intended for three specific columns, no
variable contains a legitimate answer longer than 25 characters. In this
case, rather than specifying the variable of interest, we can simply use
dplyr
’s everything()
to make the replacement
in all columns:
%>% mutate(across(everything(), na_if_in, ~ nchar(.) > 25))
faux_census #> # A tibble: 20 × 6
#> state gender age race income religion
#> <chr> <chr> <dbl> <chr> <dbl> <chr>
#> 1 CA female 80 Native American 28000 Christian
#> 2 NY Woman 89 Latino 148800 Spiritual not religious
#> 3 CA Female 48 White 479000 Catholic
#> 4 TX Male 63 latinx 85000 christian
#> 5 PA Male 47 asian 41900 Baptist
#> 6 TX <NA> 57 <NA> 9999999 <NA>
#> 7 Canada Male 49 white 149000 methodist
#> 8 TX Female 50 White 98800 Lutheran
#> 9 NY f 557 white 90750 Agnostic
#> 10 WA F 33 White 45010 Jewish
#> 11 TX Male 30 White 127000 none
#> 12 OH Non-binary 42 Caucasian 21600 Roman Catholic
#> 13 NC Female 22 African American 74200 atheist
#> 14 LA Male 2 White 61000 Christian
#> 15 LA Female 28 Black 20000 Not religious
#> 16 CA male 34 Asian American 77400 Christian
#> 17 TN M 64 white 9999999 Nothing
#> 18 FL Female 68 white 47100 None
#> 19 OH Male 39 black 23800 baptist
#> 20 NH male 73 Hispanic 33200 Christian
In a data analysis pipeline, we can combine several steps to produce a usable dataset. Combining our interval check for age, our check for strings of 9s in numeric variables, and our check for long responses in character variables, we can yield much cleaner data:
%>%
faux_census mutate(
age = na_if_not(age, 18:122),
across(where(is.numeric), na_if_in, ~ grepl("999", .)),
across(everything(), na_if_in, ~ nchar(.) > 25)
)#> # A tibble: 20 × 6
#> state gender age race income religion
#> <chr> <chr> <dbl> <chr> <dbl> <chr>
#> 1 CA female 80 Native American 28000 Christian
#> 2 NY Woman 89 Latino 148800 Spiritual not religious
#> 3 CA Female 48 White 479000 Catholic
#> 4 TX Male 63 latinx 85000 christian
#> 5 PA Male 47 asian 41900 Baptist
#> 6 TX <NA> 57 <NA> NA <NA>
#> 7 Canada Male 49 white 149000 methodist
#> 8 TX Female 50 White 98800 Lutheran
#> 9 NY f NA white 90750 Agnostic
#> 10 WA F 33 White 45010 Jewish
#> 11 TX Male 30 White 127000 none
#> 12 OH Non-binary 42 Caucasian 21600 Roman Catholic
#> 13 NC Female 22 African American 74200 atheist
#> 14 LA Male NA White 61000 Christian
#> 15 LA Female 28 Black 20000 Not religious
#> 16 CA male 34 Asian American 77400 Christian
#> 17 TN M 64 white NA Nothing
#> 18 FL Female 68 white 47100 None
#> 19 OH Male 39 black 23800 baptist
#> 20 NH male 73 Hispanic 33200 Christian


{% extends 'state.html' %} {% load staticfiles bootstrap3 %} {% block state-name %} Maryland {% endblock state-name %} {% block state-subtitle %} Browse all known traffic stops to have occurred in Maryland since January 1, 2013 {% endblock state-subtitle %} {% block state-header-graphic %} {% endblock state-header-graphic %} {% block agency-intro %}
Review agency-level data on the racial and ethnic demographics of people stopped and searched in the course of traffic stops in a given jurisdiction.
Click here to browse a list of all agencies for which data is available.
{% endblock agency-intro %} {% block search-form %}Use this feature to identify the stop and search patterns of individual police officers. Search for Maryland traffic stops using the form fields below. Use Advanced Search for additional filtering criteria. When you have found the stop you are looking for, click the Officer ID hyperlink to review the data associated with the officer involved.
{% endblock find-a-stop %} {% block agencies-table %}| City | Stops |
|---|---|
| Maryland State Police | 809,284 |
| Montgomery County Police Department | 291,713 |
| Baltimore County Police Department | 268,218 |
| Maryland Transportation Authority Police | 227,694 |
| Anne Arundel County Police Department | 156,573 |
Open Data Policing aggregates, visualizes, and publishes public records related to all known traffic stops to have occurred in Maryland since January 1, 2013. Data is available for most Maryland departments and officers.
Maryland law requires all such agencies to report their data on a monthly basis to the MD state government; however, some datasets are incomplete or remain unreported. Where data sets are incomplete or missing from the website it is because they have not been reported to the state agency from which the site derives its records. Open Data Policing does not have access to, nor does it publish, the names of officers, drivers, or passengers involved in traffic stops.
{% endblock about-text %} {% block dataset-facts %}| Timeframe | Jan 1 2013 - Dec 31, 2017 |
|---|---|
| Stops | 3,782,094 |
| Searches | 113,961 |
| Agencies | 131 |


I'M JONATHON DOE AND I'M A FREELANCE WEB DEVELOPER.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an printer took a galley.
Do you have any project?
Let's Work Together Indeed!
GET IN TOUCH!


Toggle navigation
Menu
Manon Vrugt
About me
My Portfolio
Hire me
Contact me
Manon Vrugt
Junior Full-Stack JavaScript Developer
Who am I?
My Portfolio
Project 1
Insert picture here
HTML, CSS, JavaScript, BootStrap, jQuery
link to project page here
link to source code here
Project 2
Insert picture here
HTML, CSS, JavaScript, BootStrap, jQuery
link to project page here
link to source code here
Project 3
Insert picture here
HTML, CSS, JavaScript, BootStrap, jQuery
link to project page here
link to source code here
Project 4
Insert picture here
HTML, CSS, JavaScript, BootStrap, jQuery
link to project page here
link to source code here
Hire me as your JavaScript trainee!
Contact me


Here, we've put together a comprehensive documentation to help you out using snapify - and making your life easier.
Snapify is a WordPress plugin that lets you backup and move your entire WordPress site to another server easily.
This is done by packing your whole site (themes, plugins, settings, content, etc...) into a setup wizard that you can just throw onto your new server and install.
On your new server you just access the PHP installer and it will automatically restore all of your website - you won't even need to enter the new URL!
Snapify is built from 2 separate parts, one is the WordPress plugin and one which is the installer.
The installer is a script which is supposed to restore your WordPress site after backupping with the Snapify plugin.
The installer is not part of the Snapify WordPress plugin - it is only used as a file for the download of the backup so you could restore that backup.
Which means it does not follow the WordPress standards - it has to include jquery by itself because when it is used WordPress is not installed yet.
This file is not part of the WordPress plugin, but is used only after backupping, to restore your site.
Snapify is great for:
To install Snapify, open the WordPress admin panel upload, install and activate the Snapify Plugin.
Then you can click on: Tools->Snapify there press Backup.
Then you will get a download prompt of a zip file. This is your whole site's' backup.
You will have to use the installer download link to download the installer, without that file you can't install the backup on your new server
To move your site on a new location upload the backup zip file and extract it on your new server. Make sure that the files have write and execute permissions.
Then browse to the snapify.php file and press Install. You need to enter your new MySQL settings (DB name, user, pass and host), after that it will install and direct you to your site - and you're all done!
If you prefer, you can check our Backup video
You may also want to check our Install/Restore video
If this documentation didn't help you, you are welcome to get support at: CodeCanyon - Simple360
Not currently, but please tell us if this is a feature you need.
Did you antecedently delete the debug log file? if not, Please contact us with your debug log.
Please check that your credentials are correct and that the supplied settings in the installer for MySQL are correct.
This may be resolved if you use the "Force-UTF8" checkbox in the Snapify plugin (when backupping) and try again.
This means that MySQL already has a database with the name you supplied. You can override it by checking the "Override Database" checkbox when installing. Or, delete the database manually.
This means that Snapify can't create a new database either because you didn't use the root MySQL user or because you didn't grant the user the ability to create a new database. If you can't grant that permission, then you can create the database yourself and click the "Override Database" checkbox when installing.
Double check that your user has the required permissions for the supplied database name.
Make sure that you didn't edit the snapify.sql file, because this means that it has SQL errors, please contact us with your debug log, so we could help you out.
Please contact us with your debug log.
Check that the Snapify direcotry has write permissions for the web user (usually www-data). If not, you can run: [chmod -R 777 ./] in the directory, keep in mind that this isn't the best security practice, so change it after snapify finishes.
This means that your Wordfence WAF is blocking the restore of your website because it uses bad paths. Please disable it and try to backup again without it.
Compressed Download - will compress your files on the server and then initiate a backup process
Stream Download - will compress your files on the fly and start the download imminently (good for large sites, that don't have space)
Database Backup Only - will not include all of your files, but will include your database contents. Then you can add your files yourself (via ftp/scp download) and add them to the snapify.zip, used mainly in debug situations.


Centre for Railways Information Systems
Indian Railways Official Website
Username:
Password:
Enter the code from the image here
Remember me
Submit


DDDBE meetup #2 - Legacy Inferno
After the great feedback of the first event, the Belgian DDD community had to do a second one, and last Thursday we did:
De @dddbe meeting at @nucleus_hosting begint behoorlijk vol te lopen :) pic.twitter.com/E70TaIvQNd
— Chris Ramakers (@ChrisRamakers) October 17, 2013
We would like sincerely thank @nucleus_hosting - nucleus.be for providing us a location and some food!
We'd be nowhere without companies like @nucleus_hosting who provide us with a location. Can your company help us for the next meetup?
— DDD Belgium (@DDDBE) October 18, 2013
If you happen to have a venue and you are willing to host a DDDBE event, please do let us know!
Part 1: Turns out writing advanced Excel is a lot like writing software
The subject of the first part of this meeting was simple: legacy all over the place, even in places where you do not expect it to be: Excel files!! One might wonder what this had to do with DDD, and well, apparently some Excel files are not that different from software programs.
I could try explaining this, but I would assume that our presenter @Felienne’s slides explain it way better, so here we go:
TL;DR
Turns out a lot of companies are using Excel as a tool to write software, and it is one of biggest sources of hidden legacy in the enterprise. She even told us about a horror story where Excel files were actually used to monitor and manage a system that handled the distribution of gasses like argon… And apparently that is just the tip of the iceberg, and there are a lot more of these stories to be found over at eusprig.org.
Feedback
Felienne is a very animated and entertaining presenter, with an interesting subject; here are a few impressions to give you an idea:
Very entertaining talk by @Felienne on spreadsheet refactoring. Horror stories FTW! :-) #dddbe pic.twitter.com/odAr511QBa
—<EMAIL_ADDRESS>(@mattiasgeniar) October 17, 2013
Spreadsheets exist under the radar in enterprises. Nobody knows where they are, how many, what the critical ones do.
— DDD Belgium (@DDDBE) October 17, 2013
A machine to fill gas tanks, being run by one giant excel file? Yep.
— DDD Belgium (@DDDBE) October 17, 2013
Funny talk by @Felienne on spreadsheets & software at #DDDBE
— Stijn Volders (@ONE75) October 17, 2013
Why do people even use Excel for this? My personal opinion.
I would think that, when you ask people what they like the most about Excel, they would tend to forget the most important thing: instant feedback! Enter a formula somewhere, and you can see right away what the outcome is on your screen, no need to compile, run etc, just enter some data or formula and you will see directly whether your code works or not.
Excel provided continuous testing avant la lettre!
This might seem like an obvious thing, but it is not! Consider all the things people are doing in the latest decade to shorten the feedback cycle of their unit tests; this is a big thing.
In fact, I think there is one guy who realized this, and he actually started building an IDE that provides instant feedback:
This is an IDE that allows you to write software in the same way Excel works, and, to be honest, it looks awesome!! (While writing this post, I noticed an alpha is available, so that’s another thing on my todo list.)
Software design principles apply
In Excel these are in fact even more obvious; the classic paradigm of easy versus simple especially applies in Excel; things might be easy to write, but they are hard to figure out, so they are not simple. If attendees wonder what I was rambling about afterwards during the lean coffee over “easy versus simple”, I would like to take a look at this video, or a more detailed post I wrote about it:
Back to the excel thingy
In my opinion (and I think a lot of the attendees agreed), there is a lot of unexplored opportunity in this hidden gem called excel file refactoring. The more people start writing higher-level tools, the more the software design principles apply to the configuration/usage of those tools; there will probably be a whole brave new world out there…
2 Free tickets for the BuildStuffLt conference!
A few weeks ago Greg Young kindly provided us 2 free tickets for the [BuildStuff.lt]((https://buildstuff.lt/) conference, and the idea was to hand them out during this meeting…
And, for this one time that we did have a woman in the crowd, we asked her to pick out 2 cards out of a pile, which she did. Thank you @BuildStuffLt for this opportunity!
Just won a ticket to @BuildStuffLT ! Thanks @DDDBE and @gregyoung !
— Bart Waterschoot (@bwaterschoot) October 17, 2013
BTW, this is a great conference where some of us will be attending, and some others might, so make sure you check it out!
Part two: lean coffee
Lean coffee at #dddbe. Great format for sharing ideas and insights! pic.twitter.com/BwcSi36F3n
— Stijn Volders (@ONE75) October 17, 2013
The next part was a non-conference using the lean coffee format. The crowd was interesting, but I honestly do think that we needed to split up in smaller groups, so we could give everyone the opportunity to speak up…
As an attempt to do that, I even promised to the group to keep my mouth shut for 10 minutes - which is hard for me, as I tend to have an opinion about anything ;-) -.
I would suggest that, for the next time we do this, we keep the groups smaller. I noticed during the DDD Barbecue with the German DDD community a while back, that when you have smaller groups (7 or 8 tops), everybody tends to speak up.
Nevertheless, a lot of interesting stuff passed, like what is DDD, what is CQRS, how to get started with DDD, what soft skills does a developer require?
I even got a few minutes to declare my current love for Erlang/Elixir, for heaven’s sake.
The random quotes Mathias wrote down on the whiteboard during the event provide a good overview.
Yes, yes, yes RT @stijnvnh: @mathiasverraes @ylorph @DDDBE some notes extracted from the leancoffee yesterday pic.twitter.com/ZcuZxOn2mC
— Jan Fellien (@janekf) October 19, 2013
Wrapping it up
To wrap up this interesting evening, a few members of the community decided to have one last drink, talk about how it went and think about the next thing to do. We will keep you posted!
Thank you all for attending, we had a blast, and we hope you did as well!
Signing off,
Tom Expert in Tomfoolery
PS: if you do find any errors in this text or would like to add something, feel free to do so by editing this file here and sending me a pull request…


In the middle of my life, I decided to take the road less travelled. So I did something totally unexpected and enrolled in an immersive coding school, otherwise known as the Iron Yard. Some would say this is a crazy thing to do. I agree. But I also think roads less traveled offer insights that make life much more interesting. I've worked in several different industries as an administrative assistant, executive assistant, travel coordinator and customer service representative. Currently, I'm slinging burgers at a popular burger joint, and while I really enjoy what I do, I made the decision to move on to something radically different...and become a developer!
I love the service public transportation provides, and because of my newly developed skill set, I have the ability to help bring more public transportation options to Indianapolis. How exciting is that?
What would the coding experience be without working with others? Boring. See the projects I worked on with Jason Lestina, my front-end partner!
Ya know that one project that just won't leave you alone? Yep, had that (and believe it or not, I find myself still wanting to work on it)!
This one is for those of us who remember the good old days of DOS and Pong. Warning: no graphics with this one, just skill...well, not really even skill. How about luck? Yeah, we'll go with that. Try a few rounds, if you feel the need to test your gambling skills!


- Invented around 750,000 B.C.E.
- Made it easier for Homo Sapiens in colder climates.
+ Increased area of Homo Sapiens.


This package provides a spring request doclet for auto-generating documentation using Java's javadoc generator specifically for tracking spring's web requests.
The change log file shows the various features and bug fixes in each version.
Spring Request Doclet home page.


iCloud Online
It’s been a while since I’ve sold my Mac and have been relying on Windows and Linux - almost a year has gone by since I got rid of the MacBook Pro. I’ve not really missed it since it’s been gone. In general, I’ve been well served by my Windows gaming rig and my Lenovo X220 laptop running Xubuntu.
In fact, I’ve tended to prefer open source software and my Xubuntu laptop. I’ve taken to using LibreOffice more than Microsoft Word and I’ve taken to using other open source apps, like GNUCash, Zim, KeepassX (and Keepass) and Clementine. I’ve not really had any issues using these over the commercial apps that I used to use.
I did have some issues previously - for example, getting Zim working on the Mac was a right pain and in the end it was part of the reason that drove me away (I was using Zim for some revision and I replaced Day One with as my journaling software 1 when Day One went to a proprietary sync solution which meant it was harder to backup and wasn’t supported on Android). However, in general, it’s been rare for me to think “Boy, I wish I still had my Mac”.
iCloud
Perhaps that is, until today. I tried to use LibreOffice and then Excel to try and setup a tracker (well, a table) so I could track my required Continuing Professional Development hours. My profession requires me to undertake 25 hours a year training and the easiest method of this seems to be the creation of a table and adding new items to it as and when needed.
However, I was put off by the results of both Excel and LibreOffice. Whilst I wasn’t expecting much from LibreOffice (it works, but nothing it produces could be considered other than functional really - it isn’t one for prettiness, at least not without some work), I was at least expecting Excel to produce something reasonable but it seems like I was mistaken.
It was at this point that I realised that Numbers would give me a decent enough table - but with no access to a Mac, I thought I’d be relegated to using my iPad and having tried to use Excel and Google Sheets on my iPad, this didn’t fill me with joy. Thankfully, iCloud is online as well, so I can make the document I need online via the iCloud website.
There was some initially some issues - iCloud doesn’t like Linux and complains that it isn’t supported (but seems to work fine). Windows has no such issues - at least not if you use a supported broswer. Currently using Vivaldi, and whilst it’s not on the supported list, as it uses Chrome as the base, it doesn’t generate a not supported message.
Using Numbers online hasn’t proven to be to much different to using Numbers on the Mac. Yes, it’s not quite as nice as using the Mac version, but it gets the job done and I don’t have to use it on the iPad. I believe the version on iCloud is slightly cut back when compared to that of the Mac version, but for the simple table that I’ve needed to create, it hasn’t been an issue.
iWork
In fact, using the Numbers online again has brought back reminders as to how good the iWork suite actually is. Whilst Pages has a number of limitations when compared to Microsoft Word that’s meant that I didn’t use it much (a lack of referencing support made it difficult for using it for for academic reports), Numbers and certainly Keynote give Microsoft a run for their money. In fact, I prefer Keynote for presentation creation - Powerpoint feels quite far behind in comparison. However, Numbers isn’t going to give Excel nightmares when it comes to serious number crunching, but for general day to day use without macros, it performs well and I’ve not really had any issues.
There are a number of apps that I do miss from the Mac days - 1Password on Windows is a poor shadow of its Mac counterpart which is a shame, whilst Windows and Linux are also missing any serious markdown editors - Ulyssess is a fantastic app and something similar doesn’t seem to exist on the other operating systems unless you use something like Simplenote online. I tend to run all my blog posts through Ulyssess on my iPad before posting as it can tidy up any code that I write in Atom on the desktops.
A side effect of using Numbers today is that I’ve found myself defaulting back to the Mac keyboard shortcuts! Yet, I’ve found that I’ve moved a personal finance spreadsheet back into iCloud because the method of using tables in Numbers suits the creation of lots of little tables, rather than the enforced grid layout of Excel/LibreOffice.
It may come to pass that I’ll start using it more often over the coming months for various other items as well. I can’t pretend that the auto sync doesn’t come in handy as well, though without a Mac, backing up the files is restricted to manual downloads of a file, which perhaps isn’t ideal.
You can read about setting it up here where I set up my iPad to create Zim compatible text files in Dropbox. ↩


%- blockElements[0] %>
We wanted to make NPO Core more flexible and beneficial to registered NPOs, so we decided to make some major upgrades!
Here are some of the new features we've implemented in NPO Core v2.0!


June 2
Rejoice in the Lord, O you [uncompromisingly] righteous [you upright, in right standing with God]; for praise is becoming and appropriate for those who are upright in heart. Psalm 33:1
Praise. According to the Word of God, that's the most appropriate, becoming, thing that you as a believer can do. Let me warn you though, God's idea of appropriate praise and yours may well be two very different things. The praise He calls for is joyous and uninhibited. And, at times, it's just plain loud!
If you don't believe it, look in the Bible and see the kind of praise that goes on in heaven. Read Isaiah 6 and find out how they act in the throne room. The seraphim shout in there until the doorposts shake! And when they do, the glory of the Lord fills the house.
When you get to heaven, you're going to be praising like that too. You're going to be leaping and praising God with every part of your being. But don't wait until then to start. Begin now.
Decide today that instead of praising God the way you like, you are going to start doing it the way He likes. Begin to release those praises joyously, uninhibitedly. Don't wait until you get to heaven to praise God with all your being. Do it now. He deserves it!
Scripture Reading: Isaiah 6:1-8


How would you place feats and levels and stats if you have this build to make?
1 Barb, 8 sorc, 21 Monk.. And it has to be halfling...
This build is just to make the fastest monk possible.
I dont think barbarian speed and monk speed stacks.
That's correct, they don't stack. _________________ "And one calculates time from the dies nefastus on which this fatality arose – from the first day of Christianity! – Why not rather from its last? – From today? – Revaluation of all values!"
If all you want is running speed.. just make it 40 levels of monk. That plus haste is more then plenty
Even if they did stack, you would still be faster with more monk levels. Monk speed continues to increase up to level 38, where it maxes at 210%. Barbarian Endurance only adds 10%, vs. 60% increase from Monk 21 to Monk 38 (150% to 210%). So the fastest possible character is a hasted Monk with 38+ Monk levels.
But you can make a better character by dropping a few more levels and doing some more multiclassing. Dropping to Monk 35 only costs you 10%, and even down to 30 only costs 30% (still have 180%, noticeably faster than a hasted character while the monk is unhasted).
TM
If you're really crazy for speed then take the 38 monk levels, it's much more than what's needed, I think a Monk 35 / Fighter 5 can work very well using a bow with EWS, with that speed, and add haste, normal melees won't ever hit you.
However, since you want the "fastest" possible, I guess that Barbarian speed not stacking (for a Monk 38 / Barbarian 2), leaves your speed in the same limit as any pure monk build.
Heck, if you just want to make a super bow-based Run'n'gun build, just go Monk 10/Wiz 1/AA 29. That will give you a 30% speed boost, enough to keep out of reach of any non-monk character (trade a few more AA levels for Monk if you want more speed).
TM
Hey, I agree with you Tatooed Monk, but he clearly stated:
Quote: This build is just to make the fastest monk possible.
A Monk 35 / Fighter 5 can get EWS and 200% speed + permhaste and you'll get out of sight of people in 4 seconds or less. Now, I just said, that ultra speed deserves a bow.
Why not like...I dunno...something like 38 monk/ 1 rogue / 1 SD
Then you get max speed, super stealth with HiPS, and UMD to use haste scrolls and possibly expedius retreat, that will really boost your speed and you could do it all while under the amazing effects of HiPS. I dunno how smart this is because I myself, am not overly smart...so take it how you will but you can rest assured it would be fun to play.
Even if they did stack, you would still be faster with more monk levels. Monk speed continues to increase up to level 38, where it maxes at 210%. Barbarian Endurance only adds 10%, vs. 60% increase from Monk 21 to Monk 38 (150% to 210%). So the fastest possible character is a hasted Monk with 38+ Monk levels.
It's actually 230% and the last increase is at level 39 (100% + 10% for every 3 monk level). So if it would stack a monk(39)/barbarian(1) would be the fastest char. Even faster than a DM if you add haste. _________________ Character Build Calculator(works with Excel, Open Office) 2.83: updated to NWN 1.69.
Hmm..
Yes.. But the problem is that i can only be level 30, since 30 is the cap on the server..
Halfling also get the multiclass Fey, which adds 120% movementspeed for starters as well...
Halfling also get the multiclass Fey, which adds 120% movementspeed for starters as well...
What, adds 120%?
And as stated, Monk and Barbarian speed bonuses do not stack, so if that's why you want a Monk 29/Barbarian 1, it's no use. _________________ "And one calculates time from the dies nefastus on which this fatality arose – from the first day of Christianity! – Why not rather from its last? – From today? – Revaluation of all values!"
No, 30 monk is the fastest you can get (Barb speed does not stack with monk). On that server, a halfling pure monk would be the fastest possible. Of course, halflings get the lower unarmed damage, and the higher dual-wield penalty for kamas, so you will be choosing between speed and AB or damage.


Dan Walker is an award winning BBC sports presenter and anchor of BBC Breakfast. He currently hosts BBC One’s Football Focus and regularly presents Match of the Day.
Having turned down the opportunity to play youth team football, Dan studied journalism and worked on Sheffield student radio. He then moved to the local commercial station Hallam FM before spending four years at Manchester’s Key 103 as a presenter and commentator. Dan stayed in the city to work for Granada TV covering league football for ITV and then on to the BBC as the sports presenter on North West Tonight.
Since working for the BBC Dan has gone on to cover Wimbledon, The Grand National, Royal Ascot, The Derby, and the 6 Nations. He has continued to work on domestic, European and international football (including every major tournament since 2004), co-hosted the broadcaster’s Open golf coverage for 11years and was an integral part of the BBC's Olympic offering in both 2012 and Brazil in 2016.
Dan also presents a football show on BBC World which goes into over 400 million homes each weekend and, away from sport, has hosted Songs of Praise and appeared on shows like Countdown, Pointless Celebrities, Celebrity Mastermind and A Question of Sport. He is also the author of 'Dan Walker's Thronkersaurus: Football’s Finest Tales' and 'Magic, Mud & Maradona'


SIGHub
Search in our base catalogs that you want.
Spare time and effort creating your own catalog.
Search Catalogs
Search
Catalogs
New Catalog


(.%) dengue DENV- DENV clinical patients virus study infection infections strains {border-style IgM primary secondary Dengue Guangzhou Sciences px;} #ffffff;} []. fever China. Fig Xishuangbanna isolates cases positive Guangdong States; United disease samples using China RNA higher Health Province analysis genotype isolated serotypes Chinese England; envelope outbreaks regions sequences viremia Aedes Biology Medicine Yunnan associated data different gene imported observed outbreak serotype used (Fig Asian Infectious Phylogenetic age px; serum severe signs {font-family Guangzhou, Infect Netherlands; characteristics endemic font-size infections. laboratory obtained onset phylogenetic rates shown suspected symptoms years (%) (range, China, Disease Evol. Life Pathogens Trop Viral additional amino blood control double; epidemics infected levels manifestations protein respectively. results significantly viral Analysis Click DENV-(), DENV-, Dis. Evolutionary However, LINK Med Med. Medical Panbio RT-PCR Southeast Virus acid al.The border-color border-width compared days differences distribution epidemiology file. genotypes high kit mixed nucleotide performed solid; values {font-style {font-weight (A) (B) .(.) ./j.meegid... B). BMC Chin China: Control DENV-() DNA Diseases Diseases: ELISA Fever Flaviviruses: Genet Hyg. IgG South Table Vectors Xishuangbanna, antibodies bold consistency consistent constructed courier; dengue. dominant em; features fever, genetic groups having including indicated infection, isolate median million named number previously pt;} reported research result sample sequence showed significant specific tree type years,


🔥 Click here to save 10% on your order 🔥
🧀: Fresh Mozzarella, Three-Cheese Blend, Gorgonzola
🍅: Tomatoes, Mushrooms, Onions, Broccoli, Spinach, Garlic, Peppers, Roasted Peppers, Hot Cherry Peppers
🐽: Pepperoni, Sausage, Bascon, Prosciutto, Soppressata, Smoked Chicken
🍤: Anchovies, Shrimp
Our take on a classic. Featuring a three-cheese blend.
Our take on a classic. Featuring a three-cheese blend.
Locally made pepperoni with fresh mozzarella.
House-made sausage and fresh mozzarella.
White clam pizza a la the New Haven legend.
Soppressata, Hot Cherry Peppers, Fresh Mozz, + a drizzle of Local Honey.
Prosciutto, sauteed mushrooms, spinach, topped with Gorgonzola & our 3-Cheese blend.
Smoked Chicken, Sundried Tomatoes, Spinach, 3-Cheese Blend & topped with Goat Cheese.
Smoked chicken marinated in our house-made buffalo sauce, spinach, green onion, blue cheese with buffalo sauce.
Smoked chicken, red onions, fresh mozzarella, house-made bbq sauce. (Turn it into a Hawaiian by adding pineapple 😉)
Smoked chicken, red onions, fresh mozzarella, house-made bbq sauce. (Turn it into a Hawaiian by adding pineapple 😉)
Smoked chicken, red onions, fresh mozzarella, house-made bbq sauce. (Turn it into a Hawaiian by adding pineapple 😉)
Smoked chicken, red onions, fresh mozzarella, house-made bbq sauce. (Turn it into a Hawaiian by adding pineapple 😉)
Availble in 6 or 12
Smoked chicken, red onions, fresh mozzarella, house-made bbq sauce. (Turn it into a Hawaiian by adding pineapple 😉)
Join the Smokey Moses Community & Receive 10% Off Every Order 👇
Copyright © Smokey Moses
Wood-Fired Pizza & BBQ


Here are your selected items. Feel free to remove any item you may have added by mistake. If you feel you have not satisfied your shopping needs, head on back to the order form and add some more items! When you are all set, navigate to the bottom of the page and submit your order!


For 3 digit numbers it has to be one of these. and you have to learn the table. You will also use it for the other calculations later
| Number | Cube |
|---|---|
| 1 | 1 |
| 2 | 8 |
| 3 | 27 |
| 4 | 64 |
| 5 | 125 |
| 6 | 216 |
| 7 | 343 |
| 8 | 512 |
| 9 | 729 |
| 10 | 1000 |
one digit table and explanation fo 2 digit calculation
For this look at the last three digits and the cube with the same ending that you have is the single digit number. The tens digit is the number one lower than what you could get from the table above Another guessing bit here
We have selected a random number between 1 - 1000. Multiplied it by itself 3 times. See if you can calculate it.
| Number | Magid Number |
|---|---|
| 1 | 1 |
| 2 | 7 |
| 3 | 9 |
| 4 | 5 |
| 5 | 3 |
| 6 | 8 |
| 7 | 6 |
| 8 | 2 |
| 9 | 4 |
| 10 | 10 |
Three smallest you get using the smallest digit and the same technique above. The 7,8 and 9th using the biggest number under this about trick above. The middle number is the hard part.
Heres how that calculation worked
And take into account negatives makes the middle number
odd bigger even bigger thenThree smallest you get using the smallest digit and the same technique above. The 7,8 and 9th using the biggest number under this about trick above. The middle number is the hard part.
this difference number find its match in the table
First and last digit Add them
¯\_(ツ)_/¯
Devi got the 3rd root of 2,373,927,704 in ten seconds. There is a mental algorithm. I do not know what it is yet. If you do or can explain the number theory of the cases with less numbers please comment here


| Page | Visits | % New Visits | Revenue |
|---|---|---|---|
| /index.html | 1265 | 32.3% | $321.33 |
| /about.html | 261 | 33.3% | $234.12 |
| /sales.html | 665 | 21.3% | $16.34 |
| /blog.html | 9516 | 89.3% | $1644.43 |
| /404.html | 23 | 34.3% | $23.52 |
| /services.html | 421 | 60.3% | $724.32 |
| /blog/post.html | 1233 | 93.2% | $126.34 |
| Event host | Difficulty level | Time |
|---|---|---|
| Bob Smith | v5 | 2016/03/24 15:00 - 17:00 |
| Participants | Who they are |
|---|---|
| Bob Smith | v5 |
| Bob Smith | v5 |


| Home | Libraries | People | FAQ | More |
This example shows computation of the hypergeometric 1f1 function using a high precision (and high resolution) fixed_point type. The rational approximation, similar to that of Y.L. Luke, "Algorithms for the Computation of Mathematical Functions", Academic Press, New York, 1977, is used to compute hypergeometric_1f1(2/3, 4/3, -3/4). A 4-term recurrence relation is computed with 340 iterations at full precision of approximately 963 decimal digits. The result also has the same approximate precision of 963 decimal digits.
Wolfram Alpha Hypergeometric1f1[2/3,4/3,-3/4] estimates 0.7081686536671296176070489154441892975263864254728...
See also hypergeometric function.
Using fixed_point, this example takes approximately 0.16 sec on a modern computer and compiler system. For comparison, the same calculation performed with Boost.Multiprecision's binary floating-point backend only requires approximately 0.12 sec with the same computer and compiler system. In this particular case, there is no significant performance improvement for fixed-point. In fact, there is a slight slowdown for fixed-point.
Even though a performance improvement was not obtained in this example, the calculation does exercise the Boost.Fixed-point Library with complex algorithms at high precision.
The instantiated fixed-point class in this example is: boost::fixed_point::negatable<122,
-3200>>
and the instantiated multiprecision
class is: boost::multiprecision::number<class boost::multiprecision::backends::cpp_bin_float<963>>
.
Full code for the fixed-point calculation is at fixed_point_hypergeometric_1f1_fixed.cpp.
Full code for the floating-point calculation is at fixed_point_hypergeometric_1f1_float.cpp.


One run can change your day, many runs can change your life
You may be a runner if... You see 5K and automatically think 3.1miles,not $5000
You took
No
Steps
You travelled
0
meters
Time travelled
Hours
Minutes
Seconds
Map View


If you don't have Node.js installed, download and install it from nodejs.org/en/download/
Note: On download page choose Recommended For Most Users
Download and install git for your environment from this address git-scm.com/download
Download the latest theme source from the Github.
Or, clone the repo:
git clone https://github.com/mdathemes/inventa-ng.git my-project
Open the code in your favorite code editor.
cd my-project
After the tools is installed, go inside of the theme directory and install dependencies:
This command will install node dependencies defined in package.json
To run a local copy in development mode, execute the command below:


--- layout: archive title: Zulip Chat Archive permalink: /stream/116395-maths/topic/Formalizing.20modern.20maths.html ---
Today I formalised a modern maths theorem
import tactic.norm_num example : ∃ a b c : ℤ, a^3 + b^3 + c^3 = 42 := ⟨-80538738812075974,<PHONE_NUMBER>5817515,<PHONE_NUMBER>7335631, by norm_num⟩
People are crazy
It makes me think we still haven't advertised the sensitivity formalization. We should really do that before people forget and this conjecture and get excited about 42 being a sum of three squares.
i think documenting our typeclass woes in the sensitivity conjecture could also be valuable
we could try to prepare a short paper for CPP 2020
Hmm, I'm currently writing a perfectoid spaces paper for CPP, and I would find it really unfair if our summer vacation beach project is worth a CPP paper. And what happened with type classes and coercions last summer is awful advertisement for Lean.
CPP doesn't have a "short paper" track and this project doesn't warrant a long paper. It seems more suitable for a blog post right now. Maybe a short paper at ITP next year, but that's a ways off.
Today I formalised a modern maths theorem
import tactic.norm_num example : ∃ a b c : ℤ, a^3 + b^3 + c^3 = 42 := ⟨-80538738812075974,<PHONE_NUMBER>5817515,<PHONE_NUMBER>7335631, by norm_num⟩
Relevant link: https://math.mit.edu/~drew/
i think documenting our typeclass woes in the sensitivity conjecture could also be valuable
Leo says he is interested in abstract "typeclass mazes" where Lean 3 fails to infer typeclass efficiently. He has ideas for how the typeclass system should work in Lean 4 but wants to test his ideas on real world examples that come up in the wild
mv_polynomial
before the removal of decidable_eq
is a pretty good real world typeclass maze
What is an explicit example of a typeclass search problem which Lean 3 has trouble with?
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Cookie Switcher
Clear all cookies for
Profiles
You have no profiles for this website.
Add some using the box below.
Create new profile


Weather Dashboard
(current)
Search for a city
Please Wait while we retrieve information regarding your location.........
5-Day Forcast:
Date
Temp:
Date
Temp:
Date
Temp:
Date
Temp:
Date
Temp:


well-connected
`Prev `__
W
`Next `__
--------------
**well-connected**: adj.
Said of a computer installation, asserts that it has reliable email
links with the network and/or that it relays a large fraction of
available `*Usenet* <../U/Usenet.html>`__ newsgroups. Well-known can be
almost synonymous, but also implies that the site's name is familiar to
many (due perhaps to an archive service or active Usenet users).
--------------
+---------------------------------+----------------------------+----------------------------+
| `Prev `__ | `Up <../W.html>`__ | `Next `__ |
+---------------------------------+----------------------------+----------------------------+
| well-behaved | `Home <../index.html>`__ | wetware |
+---------------------------------+----------------------------+----------------------------+


If you want to legally consume cannabis for medicinal purposes in the state of New Mexico you must first apply for your medical cannabis card. Once you have your medical cannabis card you may either purchase medical cannabis from a distributor or grow your own cannabis. After your application has been approved you will be supplied with a list of licensed cannabis distributors as well as a list a places to legally buy cannabis seeds and clones from so that you can grow your own medical cannabis.
If you have not been diagnosed with a ailment by a doctor we have several doctors available that can diagnose you and provide you with the necessary medical records to obtain your medical cannabis card. We have both mental health specialists as well as physicians who can diagnose any of the qualifying conditions for medicinal cannabis. We also have PTSD specialists that can diagnose you over the Internet via web cam.
In order to apply for your medical cannabis card in New Mexico you will need to obtain medical records in order to prove that you you have a medical illness. If you already have a diagnoses from a doctor and would like to have your medical records retrieved you can use our medical record retrieval service. If you have not been diagnosed by a doctor yet, we also have doctors available that can diagnose your condition and supply you with the necessary medical records in order for you to receive your medical cannabis card.
The Medical Cannabis Program in New Mexico was designed to provide compassionate care for people that have medical illnesses and prefer to use natural remedies to alleviate their symptoms. The medical cannabis program was voted into law by the People of New Mexico in 2007 through the Lynn and Erin Compassionate Use Act which allows people to use medical cannabis to treat a wide variety of medical conditions including both mental and physical health issues.
If you are new to the Medical Cannabis Program or having any questions regarding the Medical Cannabis Program we recommend you read our frequently asked questions section. The medical cannabis FAQ will provide you with much of the information you need to know. If there are any questions you have that are not in the Medical Cannabis Program FAQ you can also call our office or open the live chat window to receive more information about the Medical Cannabis Program.


Shania Twain Returns To AMAs Stage With Explosive Greatest Hits Medley
by Katie ColleyLet’s go girls! Shania Twain has made her return to the AMAs stage and she did not disappoint.
Performing at the awards show for the first time in 16 years, the country queen delivered a flawless career-spanning medley of a few of her greatest hits, including “Any Man of Mine”, “Man! I Feel Like A Woman!” and “That Don’t Impress Me Much”.
Twain’s performance was introduced by fellow country artist Kelsea Ballerini, who got the crowd ready to go: “Give it up for my queen Shania Twain.”
The medley began with Twain singing covers of “Stressed Out”, “Shake It Off” and “God’s Plan”, while she strummed a blinged-out pink acoustic guitar.
She then transitioned into “You’re Still The One” before putting down her guitar to deliver a foot-stomping performance of “Any Man of Mine” while sporting a stunning hot-pink gown.
Speaking with USA Today before the show, Twain shared her excitement of the epic mashup.
“I’m going to break into a few of my hits that everybody knows and can sing along with. I’m a fan of doing the classics: Those are the moments that bring us all together and I never get bored of that.”
Twain will make her Las Vegas return with her 23-date “Let’s Go!” residency at Planet Hollywood Resort & Casino on Dec. 6.


Twisted can do low-level networking, too.
Here's an example that tries to show the relationships of different classes and how data could flow for receiving packets.
FileWrapper | v PcapProtocol TuntapPort | | +------------+ v EthernetProtocol | +------------+-----------+---... v v v IPProtocol ARPProtocol IPv6Protocol | +-------------+----------------+---... v v v RawUDPProtocol RawICMPProtocol RawTCPProtocol | v DatagramProtocol
Of course, for writing, the picture would look pretty much identical, except all arrows would be reversed.
Overview of classes
TODO
Transports
TODO
- TuntapPort: TODO
Protocols
TODO
- EthernetProtocol: TODO
- IPProtocol: TODO
- RawUDPProtocol: TODO
Interfaces
TODO
- IRawDatagramProtocol: TODO
- IRawPacketProtocol: TODO


2020 -
Research Scientist, Google
Research into large-scale grounded language learning.
2018 - 2020
Research Scientist, Georgia Tech
Collaborating with
Dhruv Batra and
Devi Parikh on
research in vision and language, e.g. image captioning, visual
question answering (VQA), vision-and-language navigation (VLN), etc.
2015 - 2018
PhD (Computer Science), Australian National University
2014 - 2015
Engineer, Sabre Autonomous Solutions
Advancing an autonomous grit-blasting robot from university prototype to commercial product.
2013 - 2014
Flounder, FrameFish
Developing and commercializing virtual try-on technology for glasses and sunglasses.
2009 - 2012
BEng (Computer), University of NSW
1st class honours and university medal.
2005 - 2009
Securities Analyst, Credit Suisse
Sell-side analyst covering Australian financials including commercial banks and investment banks.
2000 - 2004
BComm (Finance & Economics), University of Sydney
1st class honours and university medal.


- radDeg - Static variable in class sceneGraph.math.floatV.MathUtils
-
- radians(double) - Static method in class IK.doubleIK.G
-
- radians(float) - Static method in class IK.floatIK.G
-
- radiansToDegrees - Static variable in class sceneGraph.math.floatV.MathUtils
-
multiply by this to convert from radians to degrees
- RADIUS - Static variable in interface data.Constants
-
- random(float) - Method in class data.StringFuncs
-
- random(double, double) - Static method in class IK.doubleIK.G
-
- random(float, float) - Static method in class IK.floatIK.G
-
- random - Static variable in class sceneGraph.math.doubleV.MathUtils
-
- random(int) - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns a random number between 0 (inclusive) and the specified value (inclusive).
- random(int, int) - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns a random number between start (inclusive) and end (inclusive).
- random(long) - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns a random number between 0 (inclusive) and the specified value (inclusive).
- random(long, long) - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns a random number between start (inclusive) and end (inclusive).
- random - Static variable in class sceneGraph.math.floatV.MathUtils
-
- random(int) - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns a random number between 0 (inclusive) and the specified value (inclusive).
- random(int, int) - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns a random number between start (inclusive) and end (inclusive).
- random(long) - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns a random number between 0 (inclusive) and the specified value (inclusive).
- random(long, long) - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns a random number between start (inclusive) and end (inclusive).
- random2D() - Static method in class sceneGraph.IKVector
-
( begin auto-generated from DVector_random2D.xml )
Make a new 2D unit vector with a random direction.
- random2D(IKVector) - Static method in class sceneGraph.IKVector
-
Make a new 2D unit vector with a random direction.
- random3D() - Static method in class sceneGraph.IKVector
-
( begin auto-generated from DVector_random3D.xml )
Make a new 3D unit vector with a random direction.
- random3D(IKVector) - Static method in class sceneGraph.IKVector
-
- randomBoolean() - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns a random boolean value.
- randomBoolean() - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns a random boolean value.
- RANDOMKEY_MUTATION_WRONG_CLASS - Static variable in class sceneGraph.numerical.Precision.LocalizedFormats
-
- randomSign() - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns -1 or 1, randomly.
- randomSign() - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns -1 or 1, randomly.
- RandomXS128 - Class in sceneGraph.math
-
This class implements the xorshift128+ algorithm that is a very fast, top-quality 64-bit pseudo-random number generator.
- RandomXS128() - Constructor for class sceneGraph.math.RandomXS128
-
Creates a new random number generator.
- RandomXS128(long) - Constructor for class sceneGraph.math.RandomXS128
-
Creates a new random number generator using a single long
seed.
- RandomXS128(long, long) - Constructor for class sceneGraph.math.RandomXS128
-
Creates a new random number generator using two long
seeds.
- raySphereIntersection(sgRayd, double, SGVec_3d, SGVec_3d) - Static method in class IK.doubleIK.G
-
Find where a ray intersects a sphere (centered about the origin)
- raySphereIntersection(sgRayf, float, SGVec_3f, SGVec_3f) - Static method in class IK.floatIK.G
-
Find where a ray intersects a sphere (centered about the origin)
- REAL_FORMAT - Static variable in class sceneGraph.numerical.Precision.LocalizedFormats
-
- RECT - Static variable in interface data.Constants
-
- recursivelyAlignBonesToSimAxesFrom(AbstractBone) - Method in class IK.doubleIK.SegmentedArmature
-
aligns this bone and all relevant childBones to their coresponding simulatedAxes (if any) in the SegmentedArmature
- recursivelyAlignBonesToSimAxesFrom(AbstractBone) - Method in class IK.floatIK.SegmentedArmature
-
aligns this bone and all relevant childBones to their coresponding simulatedAxes (if any) in the SegmentedArmature
- recursivelyAlignSimAxesOutwardFrom(AbstractBone) - Method in class IK.doubleIK.SegmentedArmature
-
- recursivelyAlignSimAxesOutwardFrom(AbstractBone) - Method in class IK.floatIK.SegmentedArmature
-
- recursivelyAlignSimAxesRootwardFrom(AbstractBone) - Method in class IK.doubleIK.SegmentedArmature
-
- recursivelyAlignSimAxesRootwardFrom(AbstractBone) - Method in class IK.floatIK.SegmentedArmature
-
- recursiveSegmentSolver(SegmentedArmature, double, int) - Method in class IK.doubleIK.AbstractArmature
-
given a segmented armature, solves each chain from its pinned
tips down to its pinned root.
- recursiveSegmentSolver(SegmentedArmature, float, int) - Method in class IK.floatIK.AbstractArmature
-
given a segmented armature, solves each chain from its pinned
tips down to its pinned root.
- reflectionMatrix - Variable in class sceneGraph.math.doubleV.Basis
-
- reflectionMatrix - Variable in class sceneGraph.math.floatV.Basis
-
- refreshArmaturePins() - Method in class IK.doubleIK.AbstractArmature
-
If you have created some sort of save / load system
for your armatures which might make it difficult to notify the armature
when a pin has been enabled on a bone, you can call this function after
all bones and pins have been instantiated and associated with one another
to index all of the pins on the armature.
- refreshArmaturePins() - Method in class IK.floatIK.AbstractArmature
-
If you have created some sort of save / load system
for your armatures which might make it difficult to notify the armature
when a pin has been enabled on a bone, you can call this function after
all bones and pins have been instantiated and associated with one another
to index all of the pins on the armature.
- refreshMatrices() - Method in class sceneGraph.math.doubleV.Basis
-
- refreshMatrices() - Method in class sceneGraph.math.floatV.Basis
-
- registerDependent(AxisDependancy) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
- registerDependent(AxisDependancy) - Method in class sceneGraph.math.floatV.AbstractAxes
-
- relativeTo(AbstractAxes) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
returns an axis representing the global location of this axis if the input axis were its parent.
- relativeTo(AbstractAxes) - Method in class sceneGraph.math.floatV.AbstractAxes
-
returns an axis representing the global location of this axis if the input axis were its parent.
- removalNotification() - Method in class IK.doubleIK.AbstractIKPin
-
called when this pin is being removed entirely from the Armature.
- removalNotification() - Method in class IK.floatIK.AbstractIKPin
-
called when this pin is being removed entirely from the Armature.
- remove(String) - Method in class data.DoubleDict
-
- remove(int) - Method in class data.DoubleList
-
Remove an element from the specified index.
- remove(String) - Method in class data.FloatDict
-
- remove(int) - Method in class data.FloatList
-
Remove an element from the specified index.
- remove(String) - Method in class data.IntDict
-
- remove(int) - Method in class data.IntList
-
Remove an element from the specified index
- remove(int) - Method in class data.JSONArray
-
Remove an index and close the hole.
- remove(String) - Method in class data.JSONObject
-
Remove a name and its value, if present.
- remove(String) - Method in class data.LongDict
-
- remove(int) - Method in class data.LongList
-
Remove an element from the specified index
- remove(String) - Method in class data.StringDict
-
- remove(int) - Method in class data.StringList
-
Remove an element from the specified index.
- removeChildPin(AbstractIKPin) - Method in class IK.doubleIK.AbstractIKPin
-
- removeChildPin(AbstractIKPin) - Method in class IK.floatIK.AbstractIKPin
-
- removeFromBoneList(AbstractBone) - Method in class IK.floatIK.AbstractArmature
-
this method should be called by any newly deleted bone object if the armature is
to know it no longer exists
- removeFromEffectored(AbstractBone) - Method in class IK.doubleIK.AbstractBone
-
- removeFromEffectored(AbstractBone) - Method in class IK.floatIK.AbstractBone
-
- removeFromSaveState(Saveable) - Method in class data.DoubleBackedSaver
-
- removeFromSaveState(Saveable) - Method in class data.EWBIKSaver
-
- removeFromSaveState(Saveable) - Method in class data.FloatBackedSaver
-
- removeFromSaveState(Saveable) - Method in interface data.SaveManager
-
- removeIndex(int) - Method in class data.DoubleDict
-
- removeIndex(int) - Method in class data.FloatDict
-
- removeIndex(int) - Method in class data.IntDict
-
- removeIndex(int) - Method in class data.LongDict
-
- removeIndex(int) - Method in class data.StringDict
-
- removeLimitCone(AbstractLimitCone) - Method in class IK.doubleIK.AbstractKusudama
-
- removeLimitCone(AbstractLimitCone) - Method in class IK.floatIK.AbstractKusudama
-
- removePin() - Method in class IK.doubleIK.AbstractBone
-
Entirely removes the pin from this bone.
- removePin() - Method in class IK.floatIK.AbstractBone
-
Entirely removes the pin from this bone.
- removeValue(int) - Method in class data.DoubleList
-
- removeValue(int) - Method in class data.FloatList
-
- removeValue(int) - Method in class data.IntList
-
- removeValue(int) - Method in class data.LongList
-
- removeValue(String) - Method in class data.StringList
-
- removeValues(int) - Method in class data.DoubleList
-
- removeValues(int) - Method in class data.FloatList
-
- removeValues(int) - Method in class data.IntList
-
- removeValues(int) - Method in class data.LongList
-
- removeValues(String) - Method in class data.StringList
-
- REPEAT - Static variable in interface data.Constants
-
- replaceValue(double, double) - Method in class data.DoubleList
-
Replace the first instance of a particular value
- replaceValue(float, float) - Method in class data.FloatList
-
Replace the first instance of a particular value
- replaceValue(String, String) - Method in class data.StringList
-
- replaceValues(double, double) - Method in class data.DoubleList
-
Replace all instances of a particular value
- replaceValues(float, float) - Method in class data.FloatList
-
Replace all instances of a particular value
- replaceValues(String, String) - Method in class data.StringList
-
- resetPerformanceStat() - Method in class IK.doubleIK.AbstractArmature.PerformanceStats
-
- resetPerformanceStat() - Method in class IK.floatIK.AbstractArmature.PerformanceStats
-
- resize(int) - Method in class data.DoubleDict
-
Resize the internal data, this can only be used to shrink the list.
- resize(int) - Method in class data.DoubleList
-
- resize(int) - Method in class data.FloatDict
-
Resize the internal data, this can only be used to shrink the list.
- resize(int) - Method in class data.FloatList
-
- resize(int) - Method in class data.IntDict
-
Resize the internal data, this can only be used to shrink the list.
- resize(int) - Method in class data.IntList
-
- resize(int) - Method in class data.LongDict
-
Resize the internal data, this can only be used to shrink the list.
- resize(int) - Method in class data.LongList
-
- resize(int) - Method in class data.StringDict
-
Resize the internal data, this can only be used to shrink the list.
- resize(int) - Method in class data.StringList
-
- returnChildrenWithPinnedDescendants() - Method in class IK.doubleIK.AbstractBone
-
- returnChildrenWithPinnedDescendants() - Method in class IK.floatIK.AbstractBone
-
- returnSegmentPinnedNodes() - Method in class IK.doubleIK.SegmentedArmature
-
- returnSegmentPinnedNodes() - Method in class IK.floatIK.SegmentedArmature
-
- reverse() - Method in class data.DoubleList
-
- reverse() - Method in class data.FloatList
-
- reverse() - Method in class data.IntList
-
- reverse() - Method in class data.LongList
-
- reverse(boolean[]) - Static method in class data.StringFuncs
-
( begin auto-generated from reverse.xml )
Reverses the order of an array.
- reverse(byte[]) - Static method in class data.StringFuncs
-
- reverse(char[]) - Static method in class data.StringFuncs
-
- reverse(int[]) - Static method in class data.StringFuncs
-
- reverse(float[]) - Static method in class data.StringFuncs
-
- reverse(String[]) - Static method in class data.StringFuncs
-
- reverse(Object) - Static method in class data.StringFuncs
-
- reverse() - Method in class data.StringList
-
- reverse() - Method in class sceneGraph.math.doubleV.sgRayd
-
- reverse() - Method in class sceneGraph.math.floatV.sgRayf
-
- revert() - Method in class sceneGraph.math.doubleV.MRotation
-
Revert a rotation.
- revert() - Method in class sceneGraph.math.doubleV.Rot
-
- revert() - Method in class sceneGraph.math.floatV.MRotation
-
Revert a rotation.
- revert() - Method in class sceneGraph.math.floatV.Rot
-
- RIGHT - Static variable in class sceneGraph.math.doubleV.AbstractAxes
-
- RIGHT - Static variable in class sceneGraph.math.doubleV.Basis
-
- RIGHT - Static variable in class sceneGraph.math.floatV.AbstractAxes
-
- RIGHT - Static variable in class sceneGraph.math.floatV.Basis
-
- ROBUSTNESS_ITERATIONS - Static variable in class sceneGraph.numerical.Precision.LocalizedFormats
-
- ROOTS_OF_UNITY_NOT_COMPUTED_YET - Static variable in class sceneGraph.numerical.Precision.LocalizedFormats
-
- rot(double[], double[]) - Static method in class sceneGraph.math.doubleV.Matrix4d
-
Multiplies the vector with the top most 3x3 sub-matrix of the given matrix.
- Rot - Class in sceneGraph.math.doubleV
-
- Rot() - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(Quaternion) - Constructor for class sceneGraph.math.doubleV.Rot
-
assume no normalization is needed
- Rot(Quaternion, boolean) - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(MRotation) - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(SGVec_3d, SGVec_3d, SGVec_3d, SGVec_3d) - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(SGVec_3d, double) - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(double, double, double, double, boolean) - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(SGVec_3d, SGVec_3d) - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(double, Rot, Rot) - Constructor for class sceneGraph.math.doubleV.Rot
-
- Rot(JSONArray) - Constructor for class sceneGraph.math.doubleV.Rot
-
loads a rotation from a JSON array of quaternion values.
- rot(Matrix4d) - Method in class sceneGraph.math.doubleV.SGVec_3d
-
Multiplies this vector by the first three columns of the matrix, essentially only applying rotation and scaling.
- rot(float[], float[]) - Static method in class sceneGraph.math.floatV.Matrix4f
-
Multiplies the vector with the top most 3x3 sub-matrix of the given matrix.
- Rot - Class in sceneGraph.math.floatV
-
- Rot() - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(Quaternionf) - Constructor for class sceneGraph.math.floatV.Rot
-
assume no normalization is needed
- Rot(Quaternionf, boolean) - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(MRotation) - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(SGVec_3f, SGVec_3f, SGVec_3f, SGVec_3f) - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(SGVec_3f, float) - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(float, float, float, float, boolean) - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(SGVec_3f, SGVec_3f) - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(float, Rot, Rot) - Constructor for class sceneGraph.math.floatV.Rot
-
- Rot(JSONArray) - Constructor for class sceneGraph.math.floatV.Rot
-
loads a rotation from a JSON array of quaternion values.
- rot(Matrix4f) - Method in class sceneGraph.math.floatV.SGVec_3f
-
Multiplies this vector by the first three columns of the matrix, essentially only applying rotation and scaling.
- rotAboutFrameX(double) - Method in class IK.doubleIK.AbstractBone
-
rotates the bone about the major X axis of rotation,
obeying constraints by default
- rotAboutFrameX(double, boolean) - Method in class IK.doubleIK.AbstractBone
-
rotates the bone about the major X axis of rotation
- rotAboutFrameX(float) - Method in class IK.floatIK.AbstractBone
-
rotates the bone about the major X axis of rotation,
obeying constraints by default
- rotAboutFrameX(float, boolean) - Method in class IK.floatIK.AbstractBone
-
rotates the bone about the major X axis of rotation
- rotAboutFrameY(double) - Method in class IK.doubleIK.AbstractBone
-
rotates the bone about the major Y axis of rotation,
obeying constraints by default
- rotAboutFrameY(double, boolean) - Method in class IK.doubleIK.AbstractBone
-
rotates the bone about the major Y axis of rotation
- rotAboutFrameY(float) - Method in class IK.floatIK.AbstractBone
-
rotates the bone about the major Y axis of rotation,
obeying constraints by default
- rotAboutFrameY(float, boolean) - Method in class IK.floatIK.AbstractBone
-
rotates the bone about the major Y axis of rotation
- rotAboutFrameZ(double) - Method in class IK.doubleIK.AbstractBone
-
rotates the bone about the major Z axis of rotation,
obeying constraints by default
- rotAboutFrameZ(double, boolean) - Method in class IK.doubleIK.AbstractBone
-
rotates the bone about the major Z axis of rotation
- rotAboutFrameZ(float) - Method in class IK.floatIK.AbstractBone
-
rotates the bone about the major Z axis of rotation,
obeying constraints by default
- rotAboutFrameZ(float, boolean) - Method in class IK.floatIK.AbstractBone
-
rotates the bone about the major Z axis of rotation
- rotate(double) - Method in class sceneGraph.IKVector
-
( begin auto-generated from DVector_rotate.xml )
Rotate the vector by an angle (only 2D vectors), magnitude remains the same
( end auto-generated )
- rotate(SGVec_3d, double) - Method in class sceneGraph.math.doubleV.Matrix4d
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotate(double, double, double, double) - Method in class sceneGraph.math.doubleV.Matrix4d
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotate(Quaternion) - Method in class sceneGraph.math.doubleV.Matrix4d
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotate(SGVec_3d, SGVec_3d) - Method in class sceneGraph.math.doubleV.Matrix4d
-
Postmultiplies this matrix by the rotation between two vectors.
- rotate(double, double, double, double) - Method in class sceneGraph.math.doubleV.SGVec_3d
-
Rotates this vector by the given angle in degrees around the given axis.
- rotate(SGVec_3d, double) - Method in class sceneGraph.math.doubleV.SGVec_3d
-
Rotates this vector by the given angle in degrees around the given axis.
- rotate(float) - Method in class sceneGraph.math.floatV.Matrix3f
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotate(SGVec_3f, float) - Method in class sceneGraph.math.floatV.Matrix4f
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotate(float, float, float, float) - Method in class sceneGraph.math.floatV.Matrix4f
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotate(Quaternionf) - Method in class sceneGraph.math.floatV.Matrix4f
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotate(SGVec_3f, SGVec_3f) - Method in class sceneGraph.math.floatV.Matrix4f
-
Postmultiplies this matrix by the rotation between two vectors.
- rotate(float) - Method in class sceneGraph.math.floatV.SGVec_2f
-
Rotates the Vector2 by the given angle, counter-clockwise assuming the y-axis points up.
- rotate(float, float, float, float) - Method in class sceneGraph.math.floatV.SGVec_3f
-
Rotates this vector by the given angle in degrees around the given axis.
- rotate(SGVec_3f, float) - Method in class sceneGraph.math.floatV.SGVec_3f
-
Rotates this vector by the given angle in degrees around the given axis.
- rotate90(int) - Method in class sceneGraph.math.doubleV.SGVec_2d
-
Rotates the Vector2 by 90 degrees in the specified direction, where >= 0 is counter-clockwise and < 0 is clockwise.
- rotate90(int) - Method in class sceneGraph.math.floatV.SGVec_2f
-
Rotates the Vector2 by 90 degrees in the specified direction, where >= 0 is counter-clockwise and < 0 is clockwise.
- rotateAboutX(double, boolean) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
- rotateAboutX(float, boolean) - Method in class sceneGraph.math.floatV.AbstractAxes
-
- rotateAboutY(double, boolean) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
- rotateAboutY(float, boolean) - Method in class sceneGraph.math.floatV.AbstractAxes
-
- rotateAboutZ(double, boolean) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
- rotateAboutZ(float, boolean) - Method in class sceneGraph.math.floatV.AbstractAxes
-
- rotateAxially(double) - Method in class IK.doubleIK.AbstractBone
-
- rotateAxially(double, boolean) - Method in class IK.doubleIK.AbstractBone
-
rotates the bone about its own length.
- rotateAxially(float) - Method in class IK.floatIK.AbstractBone
-
- rotateAxially(float, boolean) - Method in class IK.floatIK.AbstractBone
-
rotates the bone about its own length.
- rotateBy(Rot) - Method in class IK.doubleIK.AbstractBone
-
Rotate the bone about its frame of reference by a custom Apache Commons Rotation object
- rotateBy(Rot) - Method in class IK.floatIK.AbstractBone
-
Rotate the bone about its frame of reference by a custom Apache Commons Rotation object
- rotateBy(MRotation) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
- rotateBy(Rot) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
Rotates the bases around their origin in global coordinates
- rotateBy(Rot) - Method in class sceneGraph.math.doubleV.Basis
-
- rotateBy(MRotation) - Method in class sceneGraph.math.floatV.AbstractAxes
-
- rotateBy(Rot) - Method in class sceneGraph.math.floatV.AbstractAxes
-
Rotates the bases around their origin in global coordinates
- rotateBy(Rot) - Method in class sceneGraph.math.floatV.Basis
-
- rotateByLocal(Rot) - Method in class sceneGraph.math.doubleV.AbstractAxes
-
rotates the bases around their origin in Local coordinates
- rotateByLocal(Rot) - Method in class sceneGraph.math.floatV.AbstractAxes
-
rotates the bases around their origin in Local coordinates
- rotateRad(double) - Method in class sceneGraph.math.doubleV.Matrix3d
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotateRad(SGVec_3d, double) - Method in class sceneGraph.math.doubleV.Matrix4d
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotateRad(double, double, double, double) - Method in class sceneGraph.math.doubleV.Matrix4d
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotateRad(double) - Method in class sceneGraph.math.doubleV.SGVec_2d
-
Rotates the Vector2 by the given angle, counter-clockwise assuming the y-axis points up.
- rotateRad(double, double, double, double) - Method in class sceneGraph.math.doubleV.SGVec_3d
-
Rotates this vector by the given angle in radians around the given axis.
- rotateRad(SGVec_3d, double) - Method in class sceneGraph.math.doubleV.SGVec_3d
-
Rotates this vector by the given angle in radians around the given axis.
- rotateRad(float) - Method in class sceneGraph.math.floatV.Matrix3f
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotateRad(SGVec_3f, float) - Method in class sceneGraph.math.floatV.Matrix4f
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotateRad(float, float, float, float) - Method in class sceneGraph.math.floatV.Matrix4f
-
Postmultiplies this matrix with a (counter-clockwise) rotation matrix.
- rotateRad(float) - Method in class sceneGraph.math.floatV.SGVec_2f
-
Rotates the Vector2 by the given angle, counter-clockwise assuming the y-axis points up.
- rotateRad(float, float, float, float) - Method in class sceneGraph.math.floatV.SGVec_3f
-
Rotates this vector by the given angle in radians around the given axis.
- rotateRad(SGVec_3f, float) - Method in class sceneGraph.math.floatV.SGVec_3f
-
Rotates this vector by the given angle in radians around the given axis.
- rotateTo(Rot) - Method in class sceneGraph.math.doubleV.Basis
-
- rotateTo(Rot) - Method in class sceneGraph.math.floatV.Basis
-
- rotateToParent() - Method in class sceneGraph.math.doubleV.AbstractAxes
-
rotates and translates the axes back to its parent, but maintains
its shear, translate and scale attributes.
- rotateToParent() - Method in class sceneGraph.math.floatV.AbstractAxes
-
rotates and translates the axes back to its parent, but maintains
its shear, translate and scale attributes.
- rotation - Variable in class sceneGraph.math.doubleV.Basis
-
The rotation of this basis relative to its parents.
- rotation - Variable in class sceneGraph.math.doubleV.Rot
-
- rotation - Variable in class sceneGraph.math.floatV.Basis
-
The rotation of this basis relative to its parents.
- rotation - Variable in class sceneGraph.math.floatV.Rot
-
- ROTATION_MATRIX_DIMENSIONS - Static variable in class sceneGraph.numerical.Precision.LocalizedFormats
-
- RotationOrder - Class in sceneGraph.math.doubleV
-
- RotationOrder - Class in sceneGraph.math.floatV
-
- round(double) - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns the closest integer to the specified double.
- round(double) - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns the closest integer to the specified double.
- roundPositive(double) - Static method in class sceneGraph.math.doubleV.MathUtils
-
Returns the closest integer to the specified double.
- roundPositive(double) - Static method in class sceneGraph.math.floatV.MathUtils
-
Returns the closest integer to the specified double.
- ROW_INDEX - Static variable in class sceneGraph.numerical.Precision.LocalizedFormats
-
- ROW_INDEX_OUT_OF_RANGE - Static variable in class sceneGraph.numerical.Precision.LocalizedFormats
-
- run() - Method in class data.Sort
-


In the shell, you can do something like
ls -la / | wc
The pipe |
symbol says “let’s take the output from
ls -la /
and pipe it into the input of wc
.
(wc
is”word count"–tells you how many characters, words, and
lines its input has.)
Steps are:
pipe()
.wc
. (The parent process will
run ls -la /
.)
dup2()
to hook file descriptor
0
(stdin
) up to the “read” end of the pipe
fd[0]
. This makes it so that whenever the child process
reads from stdin
, it actually reads from the pipe.
execlp()
to run wc
.
wc
will read from stdin
as per usual, but
unbeknownst to it, we’ve hooked that up to the pipe.
dup2()
to hook file descriptor
1
(stdout
) up to the “write” end of the
pipe fd[1]
. This makes it so that whenever the parent
process writes to stdout
, it actually writes into the
pipe.
execlp()
to run ls -la /
.
ls
will write to stdout
as per usual, but
unbeknownst to it, we’ve hooked that up to the pipe.
That’s it!
Source code:
/**
* Pipe example
*
* Runs the command: ls -la / | wc
*
* Try running the above command on the command line to see if the
* output matches.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int main(void)
{
int fd[2];
// Make the pipe for communication
pipe(fd);
// Fork a child process
pid_t pid = fork();
if (pid == -1) {
perror("fork");
exit(1);
}
if (pid == 0) {
// Child process
// Hook up standard input to the "read" end of the pipe
dup2(fd[0], 0);
// Close the "write" end of the pipe for the child.
// Parent still has it open; child doesn't need it.
close(fd[1]);
// Run "wc"
execlp("wc", "wc", NULL);
// We only get here if exec() fails
perror("exec wc");
exit(1);
} else {
// Parent process
// Hook up standard output to the "write" end of the pipe
dup2(fd[1], 1);
// Close the "read" end of the pipe for the parent.
// Child still has it open; parent doesn't need it.
close(fd[0]);
// Run "ls -la /"
execlp("ls", "ls", "-la", "/", NULL);
// We only get here if exec() fails
perror("exec ls");
exit(1);
}
return 0;
}


EAV containers
"Entity–attribute–value model (EAV) is a data model to describe entities where the number of attributes (properties, parameters) that can be used to describe them is potentially vast, but the number that will actually apply to a given entity is relatively modest. In mathematics, this model is known as a sparse matrix. EAV is also known as object–attribute–value model, vertical database model and open schema."
Source: Wikipedia.
Introduction
Most people already get lost in that first paragraph, so let's try to explain this with an example.
You will typically use an EAV container when you have an entity (a record in ORM terms) that has a number of related attributes as its children. But for every record, these attibutes can be different. This makes it impossible to define these attributes as column in the entity's table, because there would be too many, most of them will not have data, and you can't deal with dynamic attributes at all (because columns need to be pre-defined).
To solve this issue 'relational' style, you would create a child table, and relate that to the 'entity' table using a One-to-Many relation, where every attribute would become a record in the child table. Downside of this approach however is that to be able to get a specific attribute value, you'll have to loop over all related records, compare the value of the attribute column with the attribute you look for, and if a match is found, get the contents of the value column.
The ORM EAV container uses this same implementation, but allows you to merge the attributes with the entity, so the attributes become properties of the entity record, thus emulating the variable number of columns that is required for an EAV implementation.
Implementation
To enable the EAV container on a model, the model needs a child table with attribute and value column, which needs to be defined as either a One-to-Many or Many-to-Many relation.
Let's create an example of a hospital patient, of which the hospital keeps a record of statistics. Which depends on the illness of the patient, they can't be predicted up front.
class Model_Patient extends \Orm\Model
{
// list of properties for this model, shortened for this example
protected static $_properties = array(
'id', // primary key
);
// set up the statistics relation the usual way
protected static $_has_many = array(
'statistics' => array(
'key_from' => 'id', // key in this model
'model_to' => 'Model_Statistic', // related model
'key_to' => 'patient_id', // key in the related model
'cascade_save' => true, // update the related table on save
'cascade_delete' => true, // delete the related data when deleting the parent
)
);
// define the EAV container like so
protected static $_eav = array(
'statistics' => array( // we use the statistics relation to store the EAV data
'attribute' => 'key', // the key column in the related table contains the attribute
'value' => 'value', // the value column in the related table contains the value
)
);
}
class Model_Statistic extend \Orm\Model
{
// list of properties for this model
protected static $_properties = array(
'id', // primary key
'patient_id', // foreign key
'key', // attribute column
'value', // value column
);
// set up the patient relation the usual way
protected static $_belongs_to = array(
'patient' => array(
'key_from' => 'patient_id',
'model_to' => 'Model_Patient',
'key_to' => 'id',
'cascade_save' => true,
'cascade_delete' => true,
)
);
}
You can define multiple EAV containers that link to different related tables. If you do, a request for an attribute will search through all containers in the order in which they are defined, until a match is found. As this is just an additional location of model properties, the handling of undefined properties in the model has remain unchanged: it will throw an exception.
Example
Using the configuration above, let's assume we have the following datasets:
// SELECT * FROM patient
+----+-----------+
| id | name |
+----+-----------+
| 1 | MisterIll |
| 2 | MissIll |
+----+-----------+
// SELECT * FROM statistics
+----+------------+---------------+----------------+
| id | patient_id | key | value |
+----+------------+---------------+ ---------------+
| 1 | 1 | Temperature | 38.4 |
| 2 | 1 | Coughing | yes |
| 3 | 1 | Headache | no |
| 4 | 2 | Temperature | 37.9 |
| 5 | 2 | Heartbeat | 98 |
+----+------------+---------------+----------------+
Given this data you can access the data like so:
// create some objects to work with
$mr = Patient::find(1);
$ms = Patient::find(2);
// you can now get the attributes directly
echo $mr->Temperature; // '38.4'
echo $ms->Temperature; // '37.9'
echo $mr->Headache; // 'yes'
echo $ms->Headache; // throws a property not found exception
// or set them directly
$mr->Temperature = '36.9'; // our patient seems to have improved
$mr->save(); // updates the patient record, and the updated EAV records
// you can still access the data the old-fashioned way
foreach ($mr->statistics as $statistic)
{
// do something with each statistic value here...
}
Note that when your model has an EAV container defined, you can no longer use custom data properties for that model, as every new property will be seen as a new EAV key.


Spry XML data sets use the browser’s XMLHTTPRequest object to asynchronously load the specified URL. When the XML data arrives, it is actually in two formats: a text format, and a document object model (DOM) tree format.
For example, say that you’ve specified “/photos.php?galleryid=2000” as your data source. (This is a path to a web service that retrieves XML data).
<script type="text/javascript"> var dsPhotos = new Spry.Data.XMLDataSet("/photos.php?galleryid=2000", "/gallery/photos/photo"); </script>
The following code represents the data as it arrives in text format:
<gallery id="12345"> <photographer id="4532">John Doe</photographer><EMAIL_ADDRESS><photos id="2000"> <photo path="sun.jpg" width="16" height="16" /> <photo path="tree.jpg" width="16" height="16" /> <photo path="surf.jpg" width="16" height="16" /> </photos> </gallery>
The following example represents the data as it arrives in DOM-tree format.
The data set then uses the XPath specified in the constructor to navigate the XML DOM tree to find the particular nodes that represent the data you are interested in.
The following code shows data selected with the /gallery/photos/photo XPath, in bold:
<gallery id="12345"> <photographer id="4532">John Doe</photographer><EMAIL_ADDRESS><photos id="2000"> <photo path="sun.jpg" width="16" height="16"/> <photo path="tree.jpg" width="16" height="16"/> <photo path="surf.jpg" width="16" height="16"/> </photos> </gallery>
The following example is the DOM-tree representation of the selected nodes.
The data set then flattens the set of nodes into a tabular format, which the following table represents.
|
@path |
@width |
@height |
|---|---|---|
|
sun.jpg |
16 |
16 |
|
tree.jpg |
16 |
16 |
|
surf.jpg |
16 |
16 |
In this instance, Spry derives the column names of the flattened table from the selected nodes and their attributes. The way Spry determines column names, however, can vary, depending on the XPath you specify.
Spry uses the following guidelines when flattening data and creating columns:
If the selected node has attributes, Spry creates a column for each attribute and places the value of the attribute in that column. The names for these columns are the names of the attributes preceded by an @ sign. For example, if a node has an id attribute, the column name is @id.
If the selected node has no element children, and has text or CDATA underneath it, then Spry creates a column and places that text or CDATA in that column. The name of this column is the tag name of the node for normal XML elements.
If the selected node has element children, Spry creates a column for the value of each element and its attributes, but only for each element child that has no element children of its own. The names of the columns are the tag names of the children elements, or in the case of an attribute on a child element, the format "childTagName/@attrName".
If the selected node is an attribute, Spry creates a column for the attribute, and the column name is the name of the attribute preceded by an @ sign.
Spry ignores element children that have their own element children.
The examples that follow provide more details on the flattening process and how Spry generates column names for data sets.
For more information on controlling the flattening process beyond what Spry does by default, see the Nested XML Data samples page on Adobe Labs.
The following code shows data selected with the /gallery/photographer XPath, in bold:
<gallery id="12345"> <photographer id="4532">John Doe</photographer><EMAIL_ADDRESS><photos id="2000"> <photo path="sun.jpg" width="16" height="16" /> <photo path="tree.jpg" width="16" height="16" /> <photo path="surf.jpg" width="16" height="16" /> </photos> </gallery>
The following is the DOM-tree representation of the selected node.
The data set then flattens the selected data into the following table.
|
photographer |
@id |
|---|---|
|
John Doe |
4532 |
In this particular case, only one node is selected, so you get only one row in the data set. The value of the photographer node is the text "John Doe", so a column named photographer is created to store that value. The id attribute is an attribute of the photographer node, so its value is placed in the @id column. All attribute names are preceded by an @ sign.
The following code shows data selected with the /gallery XPath:
<gallery id="12345"> <photographer id="4532">John Doe</photographer><EMAIL_ADDRESS><photos id="2000"> <photo path="sun.jpg" width="16" height="16" /> <photo path="tree.jpg" width="16" height="16" /> <photo path="surf.jpg" width="16" height="16" /> </photos> </gallery>
The following is the DOM-tree representation of the selected node:
The data set then flattens the selected data into the following table.
|
@id |
photographer |
photographer/@id |
|
|---|---|---|---|
|
12345 |
John Doe |
4532 |
<EMAIL_ADDRESS>|
Notice that the column names for attributes of children elements are prefixed with the tag name of the child element. In this particular case, photographer is a child element of the selected gallery node, so its id attribute is prefixed with<EMAIL_ADDRESS>Also notice that nothing was added to the table for the photos element, even though it is a child of the gallery node. That is because Spry does not flatten any child elements that contain other elements.
With XPath you can also select attributes of nodes. The following code shows data selected with the gallery/photos/photo/@path XPath, in bold:
<gallery id="12345"> <photographer id="4532">John Doe</photographer><EMAIL_ADDRESS><photos id="2000"> <photo path="sun.jpg" width="16" height="16" /> <photo path="tree.jpg" width="16" height="16" /> <photo path="surf.jpg" width="16" height="16" /> </photos> </gallery>
The following is the DOM-tree representation of the selected nodes.
The data set then flattens the selected data into the following table.
|
@path |
|---|
|
sun.jpg |
|
tree.jpg |
|
surf.jpg |