What's included
- Code for all chapters along with build scripts.
- Parent pom.xml files and a shared CommonPointcuts project.
All build scripts are optimized for simplicity of distribution (for example, the top-most parent POM declares dependencies for all projects even though not all projects need all dependencies).
Getting support
While a lot of care has been put into preparing the source packages, you may encounter issues that are most likely related to either your platform or the version of tools you use. In most cases, you will be able to resolve issues by examining the failure and adjusting your environment. However, if you get stuck, the best way to resolve such a problem is by visiting the book's forum. You can search if the problem you encountered has been already posted and resolved. If not, you can post a new message. Please use this forum to post questions directly related to the book and book's source code only.
For general AspectJ questions, the best place to visit is AspectJ Mailing List.
For general Spring AOP questions, the best place to visit is Spring's AOP forum.
Any suggestions to improve the user experience are welcome.
Prerequisite
The specified version for each component represents the tested version; a higher version may work as well.- Java SE Development Kit (JDK) 5 or 6
- Maven 2.2.0 (Important: Lower versions of Maven may not work with some of the projects.)
- Ant 1.7.1 (Optional for Maven users)
- AspectJ 1.6.5
Installation
- From the top-level directory (where this HTML file resides), type the
following command:
For Windows
> install.bat
For Unix systems including Mac OS X
$ ./install.sh
This will install the parent POMs and common projects to the local Maven repository. - (Optional for Maven users) Modify build.properties in the top-level directory to point to the AspectJ home directory
- (Optional for Maven and Ant users) Modify (depending on your platform) setHomes.bat or setHomes.sh to match your environment.
Running from shell
For each section, you will find run.bat/run.sh or multiple run*.bat/run*.sh scripts. Each of these scripts execute appropriate Maven goals, Ant targets, or shell commands and, in some cases, perform needed setup.
Each run*.bat and run*.sh script, in most cases, is a simple wrapper around 'mvn' (and in some chapters, 'ant'). These shell scripts are provided for convenience that show the expected commands matching the text in the book. You may directly execute 'mvn' if you so choose.
Note: You must execute install.bat or install.sh (which will require you to install Maven) before you can successfully execute these commands (even those that don't use Maven)
Maven stack traces often take a bit of careful reading to understand the real error. For example, in Section5.6SofteningCheckedException, you will need to observe the stack trace carefully to see that the real reason is org.aspectj.lang.SoftException, which correctly illustrates the example in the book.
Setting up Eclipse
The Eclipse distribution available with SpringSource Tools Suite is highly recommended, since it comes preconfigured with all required plugins.
Alternatively, you may install Eclipse 3.5 (Java EE edition) followed by installation of the m2Eclipse, AJDT, and Spring IDE plugin.
Each chapter is packaged in Eclipse workspace style (but without the workspace metadata). For example, for chapter 3, you will find the ch03/workspace directory. For each chapter that you want to try, follow these steps (You will need to perform this step only once for each chapter):
- Start STS or Eclipse. When prompted for the workspace, point to the 'workspace' directory of the chapter.
-
Import the existing projects by invoking
- File->Import...
- In the dialog box that appears, choose General/Existing Projects into Workspace (Warning: Do not choose Maven Projects.)
- Let the workspace refresh complete... now you know what to do!
You need to launch a few applications using the load-time weaver. Look for a file with .launch extension (such as LoadTimeWeaver.lauch in chapter 2) in Eclipse package explorer. You can launch such a file through "Run As" menu.If a launch file is provided, executing the driver or tests without it will likely result in unexpected output or test failures.
Known issues
- Although each project is Maven enabled, importing it as Maven Project leads to unexpected issues.


NCT U’s ‘BOSS’ hits 100 Million views, becoming NCT's first MV to reach this milestone
by ratmonsterNCT U ‘BOSS’ became NCT’s first-ever music video to achieve 100 million views on YouTube.
Watch the MV here:
Congratulations to NCT!
NCT U ‘BOSS’ became NCT’s first-ever music video to achieve 100 million views on YouTube.
Watch the MV here:
Congratulations to NCT!


Optimum Nutrition 100% Whey Gold (2.2 kg) Optimum 100% Whey Gold Standard contains Optimum Nutrition proprietary blend of Microfiltered Whey Protein Isolates, Ion-Exchange Whey Protein Isolates, Ultrafiltered Whey Protein Concentrate and HydroWhey Hydrolyzed Whey Peptides. Optimum Nutrition 100% Whey Gold Standard provides whey protein isolates (WPI) - the purest and most expensive source of whey protein available. It now also has a higher protein percentage. ON's 100% Whey Gold Standard has always been a leader in this respect. Now with 24 grams of protein in just slightly over one-ounce serving, it's nearly 79% protein by weight! Optimum Nutrition have included more HydroWhey strategically hydrolyzed, low molecular weight whey peptides to make ON's 100% Whey Gold Standard even faster acting! ON 100% Whey Gold Standard now contains lactase and Aminogen digestive enzymes to further enhance absorption and make this product even more friendly to lactose intolerant individuals. ON 100% Whey Gold Standard is instantized to mix easily and completely with just a few twirls of a spoon. Every serving supplies even more low, moderate, and high molecular weight, biologically active whey protein microfractions including Alpha-lactalbumin, Glycomacropeptides, Beta-lactoglobulin, Immunoglobulin G (IgG), Lactoferrin, lactoperoxidase, and various growth factors. Over 4 grams of glutamine and glutamine precursors as well as 5 grams of BCAAs (leucine, isoleucine, and valine) in each scoop! Features Packed with Whey Protein Isolates Higher Pure Protein Percentage Fast-Acting HYDROWHEY Whey Peptides Provides Whey Protein Microfractions More than 5 grams of BCAAs Over 4 grams of Glutamine & Precursors Instantized to Mix with a Spoon Serving Information Container Size: 908g Serving Size: 1 scoop (29g varies depending on flavour) Servings Per Container: Delicious Strawberry: 30, Vannila Ice Cream: 30, Chocolate Mint: 30, French Vanilla: 29, Banana Cream: 29, Double Chocolate: 29, Extreme Milk Chocolate: 28 Container Size: 2273g Serving Size: 1 scoop (29g varies depending on flavour) Servings Per Container: Delicious Strawberry: 77, Strawberry Banana: 75, Vanilla Ice Cream: 77, Rocky Road: 74, Double Rich Chocolate: 74, Banana Cream: 74, Tropical Punch: 74, Cookies & Cream: 74, Chocolate Mint: 74, French Vanilla Cream: 73, Mocha Cappuccino: 71, Chocolate Toffee Fudge: 71, Extreme Milk Chocolate: 71 Container Size: 4557g Serving Size: 1 scoop (29g varies depending on flavour) Servings Per Container: Delicious Strawberry: 154, Banana: 146, Vanilla Ice Cream: 154, Rocky Road: 149, Double Rich Chocolate: 149 Amounts Per Serving (based on double rich chocolate flavour) Energy: 113 kcal Protein: 23.9 g Total Carbohydrates: 1.8 g Sugars: 1.2 g Fat: 1.1 g Saturates: 0.7 g trans fat: 0 g Dietary Fiber: 0.6 g Sodium: 74 mg Ingredients Protein blend (whey protein isolates, whey protein concentrate, whey peptides), fat reduced cocoa powder, flavorings, sweeteners (acesulfame potassium, sucralose), enzyme complex (amylase, protease, cellulase), lipase Recommended Use Add a single scoop of 100% Whey to 6-8fl oz of water, milk or juice. Mix in a shaker bottle or prepare in an electric blender. Whey protein is best taken immediately following your workout, or at any time of day when you need a quick supply of quality protein. Use it as a milk for your breakfast, or combine it with bananas and oats to make a delicious smoothie.
Открийте пътя към силата и здравословния начин на живот с нас!
Искате да изглеждате добре и да имате добър хранителен режим? Искате да имате стегнато и изчистено от излишните мазнини тяло? Е това вече е възможно с нас. PowerFit.bg предлага най-различни продукти за хранене и хранителни добавки, които да включите в хранителния си режим и да подпомогнете на тренировките си. Тук може дори да съставите свой хранителен режим ако до сега сте нямали такъв. Насладете се на нашите продукти на страхотна цена. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Autem dolorem et illo incidunt laboriosam nemo numquam perferendis placeat, possimus temporibus. Cum harum maxime nemo officia ratione sed sit soluta velit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam asperiores debitis distinctio dolore dolores dolorum harum libero modi reiciendis sapiente! Delectus deserunt expedita minus natus nobis officia perferendis provident voluptatem.
Не пропускайте страхотните ни промоционални предложения само сега!
360Pro Whey is a whey-protein based blend that’s high in protein and low in carbs, fats, and fillers. Some key features that separate 360Cut’s whey protein from the typical whey blend are: Minimum 70% Isolate, 30% Concentrate (may vary a bit by flavor); Soy-free / gluten-free; No artificial colors or dyes; Added digestive enzymes
The Optimum Nutrition Micronized Creatine is made from pure Micronised Creatine Monohydrate and can be easily mixed with your favourite drinks. This particular form of Creatine provides you with an odorless and tasteless powder, so it can easily be mixed with your favorite drinks.
Amino X is a stimulant free BCAA with the athlete in mind. Amino X is designed to support endurance during workouts while aiding in muscle recovery post training. Amino X contains 10 gram blend of BCAA in a 2:1:1 ratio including L-Alanine, Taurine and L-Citrulline.


{% extends "base.html" %} {% block content %}
Your rank: #{{ rank }}
Your high score has been submitted!


{{ "Educational Institution Attended" | uppercase }}
{{ "Academic Qaulifications" | uppercase }}
{{ "professional Qaulifications" | uppercase }}
{{ "internation recognitions" | uppercase }}
{{ "prizes" | uppercase }}
{{ "honours" | uppercase }}
{{ "scholarship" | uppercase }}
{{ "Work Experience" | uppercase }}
{{ "Commendation" | uppercase }}
{{ "Journal Article In Print Publication" | uppercase }}
{{ " ARTICLES ACCEPTED FOR PUBLICATION (IN PRESS)" | uppercase }}
{{ "BOOK ARTICLE / CHATPER" | uppercase }}
{{ "Edited Conference Proceedings" | uppercase }}
THESIS , DISSERTATION AND PROJECTS
MAJOR CONFERENCES ATTENDED
MEMBERSHIP OF PROFESSIONAL BODIES
ADMINISTRATIVE/TECHNICAL EXPERINCES
Extra Curricula Activities
SIGNATURE
DATE :
{{dataSource.masterFormGroupings.dateAndSignature.dateSigned}}


Tobacco smoke contains over 4000 chemical substances, of which at least 250 are known to be harmful and over 50 of them cause cancer. It also contains nicotine, which causes strong addiction.
Smoking leads to death for 50% of its consumers.
It causes many diseases and worsens pre-existing conditions.
Smoking related conditions include: cardiovascular disease, Chronic Obstructive Pulmonary Disease (COPD), cancer, high blood pressure, acid taste in the mouth, worsened asthma, early aging, macular degeneration, stained teeth, loss of teeth, kidney failure, impotence, erectile dysfunction, diabetic retinopath, tuberculosis, Crohn’s disease, multiple sclerosis, chest infections and sudden infant death.
About 15% of the Finnish population are daily smokers. It causes every fifth of adult deaths, in other words about 5 000 finns die to tobacco related diseases every year. A third of cancers is caused by tobacco and every fifth of cardiovascular diseases is related to smoking.
In Finland, 1,5 billion euros are spent every year for tobacco-related health care expenses.
There are no safe levels of smoking, quitting is always a great idea and it's possible, no matter how long one has smoked.
The effects of stopping take effect in our bodies quickly, for example after two days, the body no longer contains nicotine or smog, the lungs have started to heal and the risk of heart attack decreases daily.
About 75% of quitters will encounter
withdrawal symptoms,
thus it is a good idea to plan quitting beforehand.
Smoking is also costly. Smoking a pack of tobacco daily (7 euros) costs 2 555 euros yearly, which equals 25 550 euros in 10 years.


| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
|---|---|---|---|---|---|
| 3C ib | CMP AL, imm8 | I | Valid | Valid | Compare imm8 with AL. |
| 3D iw | CMP AX, imm16 | I | Valid | Valid | Compare imm16 with AX. |
| 3D id | CMP EAX, imm32 | I | Valid | Valid | Compare imm32 with EAX. |
| REX.W + 3D id | CMP RAX, imm32 | I | Valid | N.E. | Compare imm32 sign-extended to 64-bits with RAX. |
| 80 /7 ib | CMP r/m8, imm8 | MI | Valid | Valid | Compare imm8 with r/m8. |
| REX + 80 /7 ib | CMP r/m8*, imm8 | MI | Valid | N.E. | Compare imm8 with r/m8. |
| 81 /7 iw | CMP r/m16, imm16 | MI | Valid | Valid | Compare imm16 with r/m16. |
| 81 /7 id | CMP r/m32, imm32 | MI | Valid | Valid | Compare imm32 with r/m32. |
| REX.W + 81 /7 id | CMP r/m64, imm32 | MI | Valid | N.E. | Compare imm32 sign-extended to 64-bits with r/m64. |
| 83 /7 ib | CMP r/m16, imm8 | MI | Valid | Valid | Compare imm8 with r/m16. |
| 83 /7 ib | CMP r/m32, imm8 | MI | Valid | Valid | Compare imm8 with r/m32. |
| REX.W + 83 /7 ib | CMP r/m64, imm8 | MI | Valid | N.E. | Compare imm8 with r/m64. |
| 38 /r | CMP r/m8, r8 | MR | Valid | Valid | Compare r8 with r/m8. |
| REX + 38 /r | CMP r/m8*, r8* | MR | Valid | N.E. | Compare r8 with r/m8. |
| 39 /r | CMP r/m16, r16 | MR | Valid | Valid | Compare r16 with r/m16. |
| 39 /r | CMP r/m32, r32 | MR | Valid | Valid | Compare r32 with r/m32. |
| REX.W + 39 /r | CMP r/m64,r64 | MR | Valid | N.E. | Compare r64 with r/m64. |
| 3A /r | CMP r8, r/m8 | RM | Valid | Valid | Compare r/m8 with r8. |
| REX + 3A /r | CMP r8*, r/m8* | RM | Valid | N.E. | Compare r/m8 with r8. |
| 3B /r | CMP r16, r/m16 | RM | Valid | Valid | Compare r/m16 with r16. |
| 3B /r | CMP r32, r/m32 | RM | Valid | Valid | Compare r/m32 with r32. |
| REX.W + 3B /r | CMP r64, r/m64 | RM | Valid | N.E. | Compare r/m64 with r64. |
NOTES:
*
In 64-bit mode, r/m8 can not be encoded to access the following byte registers if a REX prefix is used: AH, BH, CH, DH.
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM | ModRM:reg (r) | ModRM:r/m (r) | NA | NA |
| MR | ModRM:r/m (r) | ModRM:reg (r) | NA | NA |
| MI | ModRM:r/m (r) | imm8 | NA | NA |
| I | AL/AX/EAX/RAX (r) | imm8 | NA | NA |
Compares the first source operand with the second source operand and sets the status flags in the EFLAGS register according to the results. The comparison is performed by subtracting the second operand from the first operand and then setting the status flags in the same manner as the SUB instruction. When an immediate value is used as an operand, it is sign-extended to the length of the first operand.
The condition codes used by the Jcc, CMOVcc, and SETcc instructions are based on the results of a CMP instruction. Appendix B, “EFLAGS Condition Codes,” in the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1, shows the relationship of the status flags and the condition codes.
In 64-bit mode, the instruction’s default operation size is 32 bits. Use of the REX.R prefix permits access to addi-tional registers (R8-R15). Use of the REX.W prefix promotes operation to 64 bits. See the summary chart at the beginning of this section for encoding data and limits.
temp ← SRC1 − SignExtend(SRC2); ModifyStatusFlags; (* Modify status flags in the same manner as the SUB instruction*)
The CF, OF, SF, ZF, AF, and PF flags are set according to the result.
| #GP(0) |
If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. If the DS, ES, FS, or GS register contains a NULL segment selector. |
| #SS(0) | If a memory operand effective address is outside the SS segment limit. |
| #PF(fault-code) | If a page fault occurs. |
| #AC(0) | If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. |
| #UD | If the LOCK prefix is used. |
| #GP | If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. |
| #SS | If a memory operand effective address is outside the SS segment limit. |
| #GP(0) | If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. |
| #SS(0) | If a memory operand effective address is outside the SS segment limit. |
| #PF(fault-code) | If a page fault occurs. |
| #AC(0) | If alignment checking is enabled and an unaligned memory reference is made. |
| #UD | If the LOCK prefix is used. |
Same exceptions as in protected mode.
| #SS(0) | If a memory address referencing the SS segment is in a non-canonical form. |
| #GP(0) | If the memory address is in a non-canonical form. |
| #PF(fault-code) | If a page fault occurs. |
| #AC(0) | If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. |
| #UD | If the LOCK prefix is used. |


A Data Warehouse contains huge amounts of data, and increasing exponentially. The key challenge in storage and query performance optimization in such a scenario include :
With huge volumes of data, the cost of the storage subsystem can easily exceed the combined cost of the hardware server and the data server software.
The data compression technology in IBM DB2 9 uses a dictionary based algorithm for compressing data records. That is, DB2 9 can compress rows in database tables by scanning tables for repetitive, duplicate data and building dictionaries that assign short, numeric keys to those repetitive entries. Text data tends to compress well because of recurring strings as well as data with lots of repeating characters, or leading or trailing blanks.
This tutorial demonstrates data compression and highlights the best practices to do the same. The need for compression and their advantages are analysed. The compression size is estimated and verified and a graph comparing the query execution time against the tables with and without compression enabled is generated.


Insert a first name, a last name, and an address to add as a contact.
Result:
First name:
Last name:
Addresses:


--- layout: page title: "About" description: "hello." header-img: "img/about-bg.jpg" ---
life is hard.


Using a combination of WordPress' guide of automated testing and WordPress theme tests for automated testing of bugs.
It's important to test the website in different websites to check for bugs or unexpected behavior.
For the new version of London Cancer we will be testing on Desktop:
And on Mobile:
However its quite difficult to test all these browsers manually. Fortunately there are tools that automate a bit of the process. Tools that we've looked at include Browsershots.org and the more premium Sauce Labs
Creating a website that everyone can use should be the aim of the new website. However how do you test that the website is accessible?
You have to account for:
Source: WordPress Accessibility
Using the WAVE web accessibility tool and checking off the W3C's Web Content Accessibility Guide (WCAG) which is found here.
Google's Pagespeed Insights and using a WordPress plugin to determine plugin performance the site should be sufficient for determining how performant the website is.


SafetyLeaf offers you the simple, quick and
faster registration process for
both HR
Portal and Employ Portal.
Signing up is Simple, Elegant and
Hassle Free.
The Dashboard of both HR and Employee
Portal gives a bird eye view of every
informatiom in one convenient space.
We will notify you with the emails of
renewing your insurance policies nearing
expiration dates.
We are on Cloud and can be accessed
from anywhere and anytime. Signing Up
and Signing Off is easy in SafetyLeaf.
You can sign in and with simple
customizing options you can make the
in-built portals your very own.


Topic 2 Chapter heading
The topics in this section — linear algebra, Bayes’ rule, and likelihood — underlie many of the machine-learning techniques we will be studying later in the course. Bayes’ rule is a way to flip conditional probabilities. Among other things it allows you to interpret data in the light of previous knowledge and belief (which to be fancy, we can call “theory”). Likelihood is a unifying principle for using data to estimate model parameters and is fundamental in statistical theory. It’s also an essential part of Bayes’ rule. And linear algebra is used throughout statistics and machine learning. Among other things, it’s at work behind the motivation and calculations of regression.
2.1 Linear Algebra
The idea here is not to teach you linear algebra, but to expose you to some of the terminology and operations of linear algebra, so that when you see it again later in the course you’ll have a good start.
- A vector — a column of numbers. The dimension is the count of numbers in the vector.
- A space: the set of all possible vectors of a given dimension.
- Scalar multiplication
- Vector addition: walk the first vector, then the second.
- Linear combination: do scalar multiplication on each vector, then add.
- A matrix — a collection of vectors (all the same dimension).
- Dot product: a basic calculations on vectors:
- the length (via Pythagorus)
- the angle between two vectors
- orthogonality: when two vectors are perpendicular, their dot product is zero.
- Matrix operation: Linear combination.
- Take a linear combination of the vectors in a matrix. Analogous to taking a trip. Result: a vector representing the end-point of the trip.
- The subspace spanned by the matrix: the set of all possible points you can get to with a linear combination.
- Matrix operation: Orthogonalization — Find perpendicular vectors that span the same subspace as a matrix. Example, draw the picture for two vectors \(\vec{a}\) and \(\vec{b}\).
- Matrix operation: Projection
- Given a matrix M and a vector V, find the closest point in the subspace of M to the vector V. How? Orthogonalize matrix M, then for each vector in orthogonalized M, subtract out the part of \(V\) aligned with that vector.
- Matrix operation: inversion — the inverse operation to linear combination.
- given an end-point in the space spanned by M, figure out a linear combination that will get you there.
- Vector to vector operation: Outer product. col vector \(\times\) row vector.
- Can generalize to operations other than \(\times\).
For linear algebra folks: Projection is the Q part of QR decomposition. R is the solve part. - In economics, they write things in an older style: Solve \(M b = y\) for \(b\). But \(M\) may not be square, so no regular inverse. - Pre-multiply by \(M^T\) to get \(M^T M b = M^T y\) - Invert to get \(b = (M^T M)^{-1} M^T y\). The matrix \((M^T M)^{-1} M^T\) is called the pseudo inverse.
2.2 Arithmetic of linear algebra operations
- Addition comes for free. Confirm this.
- Scalar multiplication comes for free. Confirm this.
- Write a function for the dot product.
vdot <- function(v, w) {
sum(v * w)
}
- Write a function for the vector length.
vlength <- function(v) {
sqrt(vdot(v, v))
}
- Write a function for the cosine of the angle between two vectors.
vangle <- function(v, w, degrees = FALSE) {
theta <- acos(vdot(v, w) / (vlength(v) * vlength(w)))
if (degrees) theta * (180 / pi )
else theta
}
- Write a function to project vector \(\vec{a}\) onto \(\vec{b}\). Subtracting the result from \(\vec{a}\) will give the component of \(\vec{a}\) orthogonal to \(\vec{b}\). So we can decompose \(\vec{a}\) into two components relative to \(\vec{b}\). Show that the supposedly ortogonal component is really orthogonal to \(b\) — that is, the dot product is 0.
vproject <- function(v, onto) { # the red thing
onto * vlength(v) * cos(vangle(v, onto)) / vlength(onto)
}
vresid <- function(v, onto) {
v - vproject(v, onto)
}
- Generalization: Write a function to orthogonalize a matrix M.
- Generalization: Write a function to calculate the projection of V onto M.
vdot <- function(a, b) {
sum(a * b)
}
vlen <- function(a) sqrt(vdot(a, a))
vcos <- function(a, b) {
vdot(a, b) / (vlen(a) * vlen(b))
}
vangle <- function(a, b, degrees = FALSE) {
res <- vcos(a, b)
if (degrees) res <- res * 180 / pi
res
}
vproj <- function(a, onto = b) {
vlen(a) * vcos(a, onto) * onto
}
2.3 The geometry of fitting
- Data tables: cases and variables.
- Case space (the rows of the matrix) and variable space (the columns).
- A quantitative variable is a vector.
- A categorical variable can be encoded as a set of “dummy” vectors.
- Response variable and explanatory variable
- The linear projection problem: find the point spanned by the explanatory variables that’s closest to the response. That linear combination is the best-fitting model.
- One explanatory and the response
- Two explanatory on board and the response on the board (perfect, but meaningless fit)
- Two explanatory in three-space and the response (residual likely)
2.4 Precision of the coefficients
\[ \mbox{standard error of B coef.} = | \mbox{residuals} | \frac{1}{| \mbox{B} |}\ \frac{1}{\sin( \theta )}\ \frac{1}{\sqrt{n}}\ \sqrt{\frac{n}{n-m}}\]
- \(m\) — degrees of freedom in model
- \(\theta\) — angle between this model vector and the space spanned by the others
- B — this model vector
- residuals — the residual vector
2.5 Likelihood and Bayes
We accept that our models won’t produce an \(\hat{f}(x)\) that always matches \(y\). There is the irreducible error \(\epsilon\), in addition to variance and bias.
- Variance: a measure of how far off our \(\hat{f}()\) is from that we would have been able to construct with an infinite amount of data: \(\hat{f}_\infty()\).
- Bias: a measure of how far off \(\hat{f}_\infty()\) is from \(f()\).
We’re using mean square error or sum of square errors as a measure of how far \(\hat{f}(x_i)\) is from the actual result \(y_i\).
Now we’re going to look at the difference in terms of probabilities: what would be the probability of any particular \(\hat{y}_i\) given our \(\hat{f}(x_i)\).
Let’s quantify probability.
2.6 Summary of Day 8
We finished up our brief introduction to linear algebra and started discussing probability. I suggested the rather broad definition of a probability as a number between zero and one.
2.7 Day 9 Announcements
Make sure you’ve accepted the invitation to the discussion group.
Reading for Thursday: “What is Bayesian statistics and why everything else is wrong”
2.7.1 What’s a probability?
- Chances of something happening
- Frequentist: Number of “favorable events” / number of events
- Bayesian. Number between 0 and 1.
$ p(rain | Sept 29, Libra, Thursday )$
- densities
- cumulative — this is really what probability refers to.
- discrete events
- joint events
- conditional events
- relating joint and conditional: p(A & X) = p(A | X) p(X) = p(X | A) p(A)
- Bayes rule p(A | X) = p(X | A) p(A) / p(X)
2.8 Conditional probability
The probability of an event in a given state of the world. That state of the world might have been set up by another event having occurred.
2.9 Inverting conditional probabilities
What we want is \(p(\mbox{state of world} | \mbox{observations})\). I’ll write this \(p(\theta | {\cal O})\)
Tree with cancer (benign or malignant) and cell shape (round, elongated, ruffled)
SPACE FOR THE TREE
SEE PAPER NOTES. (remember to transcribe them here)
, e.g. observe ruffled, what is the chance that the tumor is malignant.
Of the 10000 people in the study,
* 7000 had benign tumors of which 10% or 700 had ruffled cells * 3000 had malignant tumors of whom 60% or 1800 had ruffled cells
So, of the 2500 people with ruffled cells, 1800 had malignant tumors. \(p( \theta | {\cal O} )\)
2.10 Summary of Day 9
Announcement: Read “What is Bayesian Statistics and why everything else is wrong.”
We derived Bayes’ rule (simple!) from fundamental principles of probability. There are three components of the formula that have individual names:
- The prior. What you know before you examine the data.
- The likelihood. A conditional probability. Given a theory (that is, a way that you think the world works), what is the probability of the data you have observed.
- Typically a likelihood is built around a model that has both a deterministic and a random component. For instance, the output \(y_i\) depends on an input \(x_i\) according to \(y_i = a + b x + \epsilon\).
- We specify the properties (e.g., the variance) of the random component as part of the theory. For instance, we might specify that \(\epsilon\) is drawn from a normal distribution with mean zero and variance \(c^2\).
- The likelihood can be calculated by multiplying together the probabilities of each of values the data indicates. Continuing with the example in the previous points, \(\epsilon_i = y_i - (a + b x_i)\). The calculation would be likelihood \(= \prod_i\)
dnorm(
\(\epsilon_i\), mean = 0, sd = c)
. - In order to have acceptable performance in computer arithmetic, we generally calculate the log likelihood. This allows us to turn the product in the above point into a sum.
- The posterior. Our updated beliefs given the data.
Controversy! Many people believe that performing calculations using a prior is unscientific. This is because the prior reflects the views of the researcher, rather than a solid fact of reality. Nonetheless, everyone agrees that the likelihood is meaningful. Many of the estimation problems of statistics amount to finding parameters that maximize the likelihood. (People who think that using a prior is a reasonable way of doing business, like the author, point out that the model itself is a subjective choice.)
The in-class programming task involved calculating a likelihood with a model that involved the exponential probability distribution. In that task, we were not doing the full Bayesian calculation. Instead, we took as our point estimate of the parameter the argmax, that is, the parameter value that produces the highest likelihood.
2.11 Likelihood example
Consider a mechanism like that behind Figure 3.1 in ISLR.
There seems to be a straight-line relationship between Sales and TV. You can also see that the variance of the residuals is bigger for larger values of TV. The usual least-squares estimator is based on maximizing the likelihood of a model like \(\mbox{Sales} = a + b \mbox{TV} + \epsilon\), where \(\epsilon\) is “iid normal”. But we know the \(\epsilon\) estimated from the data won’t be iid. Our model is therefore wrong. That’s not necessarily a problem, since all models are wrong (they are models after all!) but some models are useful. So the iid model might be useful.
Let’s make some similar data on which we can demonstrate a likelihood calculation.
TV <- runif(500)
Sales <- 3.5 + 12 * TV + (3* TV + 0.75) * rnorm(length(TV))
plot(TV, Sales, ylim = c(0, 25))
Here’s a simple calculation with a “wrong” model:
lm(Sales ~ TV)
##
## Call:
## lm(formula = Sales ~ TV)
##
## Coefficients:
## (Intercept) TV
## 3.391 11.910
If we like, however, we can do the calculation with a “better” model, say, taking the following as the model behind our likelihood.
Sales_likelihood <- function(params) {
a <- params[1]
b <- params[2]
c <- params[3]
d <- params[4]
# Negate so the the minimization routine will produce the maximum likelihood
-sum(log(dnorm(Sales - (a + b * TV), mean = 0, sd = c + d * TV )))
}
Sales_likelihood(c(5, 10, 1, 1))
## [1] 1263.285
nlm(Sales_likelihood, c(5, 10, 1, 1))
## $minimum
## [1] 1040.835
##
## $estimate
## [1] 3.4181833 11.8437802 0.6808023 2.8594718
##
## $gradient
## [1] 1.303770e-05 1.746993e-06 -1.318767e-05 8.905789e-06
##
## $code
## [1] 1
##
## $iterations
## [1] 23
2.12 Exponential probability density
What’s the time between random events, e.g. 500-year storms or earthquakes in a region that has a big one roughly every 100 years?
Earthquake warning in Southern California, late Sept. 2016
But over the last week, anxieties were particularly heightened, and the natural denial that is part of living in earthquake country was harder to pull off.
A swarm of seismic activity at the Salton Sea that began a week ago prompted scientists to say there was an elevated risk for a big San Andreas fault earthquake. By Monday [Oct 3, 2016], that risk had lessened.
But the impact of that warning was still being felt. For some, it meant checking quake safety lists. Others looked at preparing for the Big One, such as bolting bookshelves to walls, installing safety latches on kitchen cabinets and strapping down televisions.
Why has the risk gotten smaller? How much smaller?
2.12.1 Meanwhile, further north …
From *The Really Big One, an article in the New Yorker about discoveries in the last few decades that established a high risk in the Pacific Northwest for an earthquake of magnitude 9.
We now know that the Pacific Northwest has experienced forty-one subduction-zone earthquakes in the past ten thousand years. If you divide ten thousand by forty-one, you get two hundred and forty-three, which is Cascadia’s recurrence interval: the average amount of time that elapses between earthquakes. That timespan is dangerous both because it is too long—long enough for us to unwittingly build an entire civilization on top of our continent’s worst fault line—and because it is not long enough. Counting from the earthquake of 1700, we are now three hundred and fifteen years into a two-hundred-and-forty-three-year cycle.
It is possible to quibble with that number. Recurrence intervals are averages, and averages are tricky: ten is the average of nine and eleven, but also of eighteen and two. It is not possible, however, to dispute the scale of the problem.
The last paragraph …
All day long, just out of sight, the ocean rises up and collapses, spilling foamy overlapping ovals onto the shore. Eighty miles farther out, ten thousand feet below the surface of the sea, the hand of a geological clock is somewhere in its slow sweep. All across the region, seismologists are looking at their watches, wondering how long we have, and what we will do, before geological time catches up to our own.
Have students propose distributions and justify them.
2.13 California earthquake warning, reprise
The Salton Sea earthquake happens. Our prior on large \(\lambda\) immediately surges, so there is a significant probability of a quake in the next hours. But as more time goes by, that probability goes down.
- We’re interested in \(\lambda\) in the exponential distribution \(\lambda \exp(-lambda t)\) . This has a cumulative \(1 - \exp(-\lambda t)\).
- Observation: Earthquake hasn’t occurred after D days. Likelihood is 1 minus the cumulative, or \(\exp(-\lambda D)\).
- Prior: a mix of the conventional (very small lambda) and some small probability of very high lambda.
Plot out the posterior for different values of D:
- D = 0.1 two hours after the quake.
- D = 1 a day after the quake
- D = 3 three days after the quake
The area to the right of 5 days (in expected time to the next quake) is the conventional model.
Plot this out as a function of \(1/\lambda\), so we need to adjust the density by \(| df/d\lambda | = | d \frac{1}{\lambda} / d\lambda| = \lambda^2\)
D <- 30
lambda <- 100/(1:5000)
# prior: proportional to lambda:
# small lambda unlikely, so short time to next earthquake
prior <- function(lambda) (ifelse(lambda < .2, 25, 1/lambda))
plot(lambda, ( prior(lambda)), type = "l", xlim = c(0,5))
plot(1/lambda, exp( - lambda * D) * prior(lambda) * (lambda^2),
type = "l", xlab = "Expected time to the big one, days.",
xlim = c(0, 10))
lines(1/lambda, lambda*.005/prior(lambda), col = "red")
For small D, the “urgency” part of the prior overwhelms the likelihood. As D gets bigger, we revert to the standard model.
2.14 The Price is Right!
The Price is Right is a game show in which contestants compete to guess the price of a prize. The winner is the person whose guess is closest to the actual price considering just those contestants who guesses a price less than or equal to the actual price.
Strategy:
- First person to guess: an honest guess, hedged on the low side.
- Second person: bias guess to be far from the first person’s guess.
- Third person:
- Fourth person: Zero, or just above one of the other guesses.
Play this game. Call down 4 contestants. What’s the price of this yacht?
Now, suppose rather than being a strategic game biased toward the last guesser, we wanted to evaluate political prognosticators. The winner should be the person who makes the best prediction rather than the best guess.
Game: Predict the number of electoral college votes for Donald Trump.
Game: Predict the results of the Ukrainian Parliament’s vote of no confidence in Prime Minister Arseniy Yatsenyuk. How many votes for no confidence were there.1
Play this game asking people to draw the probability distribution of their prediction.
- Suppose you know something about the contestants.
- David Moore from International Studies
- Gary Krueger from Economics
- Sybill Trelawney from Divination Science
- Jesse Ventura from Political Science
- You’ve been asked to assign a probability to each contestant. You’ll use this probability to weight each of their future predictions.
Have the contestants keep their identity secret at first.
Draw a density on the board. Give them a vertical scale for density, insisting that each of their densities has area one.
The Likelihood Game: Who won? How to evaluate the predictions?
- The Bayesian Game:
- The contestants reveal their identity
- What’s your posterior probability on each of them.
2.15 From likelihood to Bayes
Multiply likelihood by prior probability. Normalize so that total probability is 1.
2.16 Choosing models using maximum likelihood
- We model the error as random, with a probability distribution we choose. Often this distribution has parameters.
- To find the error, we need to make an assumption of what the parameters of the deterministic model are.
- Make that assumption.
- Make a similar assumption for the parameters of the probability distribution.
- Find the errors.
- Calculate the probability of those errors given the probability distribution that we choose. That’s the likelihood for the assumed parameters.
- Repeat in order to modify the assumptions to increase the likelihood.
Straight line model:
Gaussian errors:
\[f(x \; | \; \mu, \sigma) = \frac{1}{\sigma\sqrt{2\pi} } \; e^{ -\frac{(x-\mu)^2}{2\sigma^2} }\]
What happens when you take the log … why it’s sum of squares.
Question: What about minimizing the absolute value of the residuals, rather than the square? - Corresponds to a two-sided exponential distribution like \(\frac{\lambda}{2} \exp(-\lambda |x|)\)
2.17 Day 9 Review
Likelihood.
- Choose the “best” of a set of competing models. Often the set is parameterized by quantities such as slope \(m\), intercept \(b\), rate , mean, standard deviation, …
- “Figure of merit” for each model is the probability of the data given the model.
- Often, models have a deterministic part (e.g. \(m x + b\)) and a random part \(\epsilon\).
- Part of the model is our choice for the distribution of \(\epsilon\).
- Given that distribution, and treating each error \(\epsilon_i\) as random, to calculate the likelihood we find the probability of each \(\epsilon_i\) and multiply them together.
- For practical reasons (both algebraic and computational) we work with the log-likelihood.
Example: Mean and standard deviation
data_vals <- runif(10000, min = 20, max = 50)
# data_vals <- rexp(10000, rate = 1)
mean(data_vals)
## [1] 35.07677
median(data_vals)
## [1] 35.01521
sd(data_vals)
## [1] 8.670784
IQR(data_vals)
## [1] 15.02683
LL_gaussian <- function(params) {
center = params[1]
spread = params[2]
sum(log(dnorm(data_vals, mean = center, sd = spread)))
}
optim(par = c(25, 10), LL_gaussian, control = list(fnscale = -1))
## $par
## [1] 35.077971 8.671052
##
## $value
## [1] -35788.48
##
## $counts
## function gradient
## 53 NA
##
## $convergence
## [1] 0
##
## $message
## NULL
LL_exp <- function(params) {
center = params[1]
spread = params[2]
sum(log(dexp(abs(data_vals - center), rate = 1/spread)))
}
optim(par = c(25, 10), LL_exp, control = list(fnscale = -1))
## $par
## [1] 35.015632 7.515695
##
## $value
## [1] -30171.14
##
## $counts
## function gradient
## 55 NA
##
## $convergence
## [1] 0
##
## $message
## NULL
2.18 Reading: What is Bayesian Statistics
Link to “What is Bayesian Statistics and why everything else is wrong.”
Go through sections 1, 2, and 4 in class: about the likelihood calculation, the p-value calculation, and the philosophical criticism of p-values.
Find the likelihood of observing \(k\) cases out of \(E\) employees with a rate of \(\theta\).
E <- 145
k <- 8
theta <- .01
L <- function(theta) dbinom(k, size = E, prob = theta)
Making the plot of likelihood versus \(\theta\)
x <- seq(0,.10, length = 100)
y <- L(x)
plot(x, y, type = "l", xlab = "theta", ylab = "likelihood")
Emphasize the choice of what detail of the sampling model to use. Just this school in isolation?
Suppose we consider that there are 1000 schools near high-tension lines. Our school is presumably one of the highest rates, since other schools who had bigger numbers would come forward. Let’s imagine that our school is in the top 10%. This is like calculating that of 10 schools, the 8 cancer cases we observed are the most of any of those 10. What does this give for the likelihood of theta?
nschools <- 2
Lschools <- function(theta) {
prob_of_k <- dbinom(k, size = E, prob = theta)
less_than_k <- pbinom(k - 0.5, size = E, prob = theta)^(nschools - 1)
prob_of_k * less_than_k
}
x <- seq(0,.05, length = 100)
y <- Lschools(x)
plot(x, y, type = "l", xlab = "theta", ylab = "likelihood")
2.19 Programming Basics: Conditionals
- a function:
ifelse(condition, yes_value, no_value)
Carries out the test for each element in the vector. - a special form:
if (condition) {statements} else {statements}
x <- rnorm(10)
table(x < 0)
##
## FALSE TRUE
## 5 5
ifelse(x >= 0, sqrt(x), "bogus")
## Warning in sqrt(x): NaNs produced
## [1] "0.415098097926984" "bogus" "0.78650648752133"
## [4] "bogus" "0.539146279368726" "1.72054962703838"
## [7] "0.889947136565264" "bogus" "bogus"
## [10] "bogus"
Both of these can be nested.
2.20 ifelse()
examples
library(ISLR)
##
## Attaching package: 'ISLR'
## The following object is masked _by_ '.GlobalEnv':
##
## College
data(Default) # loan balances and defaults.
head(Default)
## default student balance income
## 1 No No 729.5265 44361.625
## 2 No Yes 817.1804 12106.135
## 3 No No 1073.5492 31767.139
## 4 No No 529.2506 35704.494
## 5 No No 785.6559 38463.496
## 6 No Yes 919.5885 7491.559
you_pay <- with(Default,
ifelse(balance / 10 < income, 0.10 * balance, 0.05 * income))
sum(you_pay)
## [1] 835374.9
Determine annual payment amount for student loans. E.g.
- If it’s a student, no payment, otherwise $100
- If it’s a student, no payment. Otherwise 10% of the balance.
- If the balance is less than 10 times the income, 10% of the balance, otherwise 5% of income.
- For those in default, nothing. For the others, any of the above three schemes.
2.21 if … else … examples
- Calculate the median of a set of values.
- if an odd number in the set, then the middle value
- if an even number in the set, the mean of the two values in the middle.
my_median <- function(x) {
if (length(x) %% 2 == 1) {
# odd length
sort(x)[ceiling(length(x)/2)]
} else {
# even length
inds <- length(x)/2 + c(0, 1)
mean(sort(x)[inds])
}
}
my_median(1:11)
## [1] 6
median(1:11)
## [1] 6
pmax()
is a function that takes the case-by-case maximum of each of two input vectors. We’re going to add some error checking.
my_pmax <- function(v1, v2) ifelse(v1 > v2, v1, v2)
my_pmax3 <- function(v1, v2, v3){
ifelse(v1 >= v2,
my_pmax(v1, v3),
my_pmax(v2, v3)
)
}
my_pmax4 <- function(v1, v2, v3, v4) {
ifelse(v1 >= v2,
my_pmax3(v1, v3, v4),
my_pmax3(v2, v3, v4))
}
my_pmax_any <- function(...) {
vectors <- list(...)
if (length(vectors) == 2) my_pmax(...)
if (length(vectors) == 3) my_pmax3(...)
if (length(vectors) == 4) my_pmax4(...)
}
my_pmax(rnorm(10), rnorm(10))
## [1] 1.05113667 0.42541644 0.98409896 0.98163834 -0.37525939
## [6] 0.60408141 0.06943719 1.50049940 1.49312466 1.17298846
- Unless the vectors are either numeric or character, and of the same type, throw an error.
- Add an argument
handle_na
which, ifTRUE
replacesNA
with-Inf
for the purposes of the comparison. - Add an argument
na_rid=
- if “either”, throw away the cases where either of the values is
NA
- if “both”, throw away cases where both are
NA
and otherwise handleNA
as-Inf
- if “neither”, keep all cases.
- if “either”, throw away the cases where either of the values is
2.22 Simple
Write functions that return, case by case,
- the maximum of two vectors.
- three vectors
- four vectors
five vectors
Write a supervisory function that does it for 1 to 5 vectors. Use
...
max_in_parallel <- function(...) {
Vecs <- list(...)
}
- Write a supervisory function that will handle more than 5 vectors.
2.23 Blood testing
It is known that 5% of the members of a population have disease X, which can be discovered by a blood test (that is assumed to perfectly identify both diseased and nondiseased populations). Suppose that N people are to be tested, and the cost of the test is nontrivial. The testing can be done in two ways:
- Everyone can be tested separately; or
- the blood samples of k people are pooled to be analyzed.
Assume that N = nk with n being an integer. If the test is negative, all the people tested are healthy (that is, just this one test is needed). If the test result is positive, each of the k people must be tested separately (that is, a total of k + 1 tests are needed for that group).
- For fixed k what is the expected number of tests needed in (B)?
- Find the k that will minimize the expected number of tests in (B).
- Using the k that minimizes the number of tests, on average how many tests does (B) save in comparison with (A)? Be sure to check your answer using an empirical simulation.
ntests <- function(p = 0.05, npools = 500, pool_size = 10, nsims=1000) {
# generate the number of infected people in each pool
infected_in_pool <- rbinom(npools, p = p, size = pool_size)
# if one or more in a pool is infected, pool_size+1 tests,
# otherwise 1 test
tests_in_each_pool <- ifelse(infected_in_pool > 0, pool_size + 1, 1)
# total across all pools
sum(tests_in_each_pool)
}
Can we do this recursively to get more savings?
people <- runif(100000) < .05
ntests <- function(population) {
if ( (! any(population)) || length(population) == 1) {
# we're done!
total_tests <- 1
} else {
# Split into two groups and test again
split_point <- round(length(population)/2)
group1 <- population[1:split_point]
group2 <- population[(split_point + 1) : length(population)]
total_tests <-
ntests(group1) +
ntests(group2) + 1
# + 1 for the test that said we need to divide the groups
}
total_tests
}
How many tests needed for a population of 10,000 with a prevalence of 1%?
do(10) * ntests(runif(10000) < 0.01)
## ntests
## 1 1373
## 2 1475
## 3 1497
## 4 1273
## 5 1217
## 6 1247
## 7 1499
## 8 1321
## 9 1253
## 10 1411
Try other prevalences to find prevalence at which it’s no longer worthwhile to pool the samples.
2.24 The (hyper)-volume of the hypersphere.
A framework for the volumes: \(C_n r^n\).
- \(n=1\) — the line segment of length \(2r\). Volume is \(2r^1\) so \(C_n = 2\).
- \(n=2\) — the circle of radius \(r\): volume is \(\pi r^2\), so \(C_2 = \pi\)
- \(n=3\) — the sphere of radius \(r\): volume is \(\frac{4}{3}\pi r^3\), so \(C_3 = \frac{4}{3} \pi\)
TASK: Find \(C_4\), \(C_5\), … , \(C_8\).
Programming approach:
- Write the logic. Give explicit names to all quantities that you might want to change later.
dim <- 3 # might vary
npts <- 1000 # might vary
pts <- matrix(runif(dim * npts, min=0, max=1), ncol=dim)
dists <- rowSums( pts^2 )
(2^dim) * sum(dists <= 1) / length(dists)
## [1] 4.312
- Make the “might vary” quantities the arguments to a function that encapsulates the rest of the logic.
sphere_volume <- function(dim=3, npts=1000000) {
pts <- matrix(runif(dim * npts, min=0, max=1), ncol=dim)
dists <- rowSums( pts^2 )
(2^dim) * sum(dists <= 1) / length(dists)
}
sapply(1:20, FUN = sphere_volume)
## [1] 2.000000 3.143072 4.192328 4.929392 5.285536 5.171712 4.689920
## [8] 4.050944 3.212800 2.506752 1.961984 1.253376 0.892928 0.540672
## [15] 0.360448 0.327680 0.393216 0.000000 0.000000 0.000000
Volume of the unit hyper-cube:
2 ^ (1:20)
## [1] 2 4 8 16 32 64 128 256
## [9] 512 1024 2048 4096 8192 16384 32768 65536
## [17]<PHONE_NUMBER>44<PHONE_NUMBER>576
So the volume of the encompassed hyper-sphere goes to zero percent of the volume of the encompassing hyper-cube.
Theoretical formula: \(V_n(R) = \frac{\pi^{n/2}}{\Gamma(\frac{n}{2} + 1)}R^n\)
sapply(1:20, FUN=function(n) (pi^(n/2) / gamma(n/2 + 1)) )
## [1] 2.00000000 3.14159265 4.18879020 4.93480220 5.26378901 5.16771278
## [7] 4.72476597 4.05871213 3.29850890 2.55016404 1.88410388 1.33526277
## [13] 0.91062875 0.59926453 0.38144328 0.23533063 0.14098111 0.08214589
## [19] 0.04662160 0.02580689
2.25 Find the surface area, \(D_n r^{n-1}\).
- \(D_1 = 0\)
- \(D_2 = 2 \pi\)
- \(D_3 = 4 \pi\)
- Find \(D_4\), \(D_5\), …, \(D_7\)
- Two ways:
- Take the derivative wrt \(r\) of the volume.
- Find the fraction of points in a narrow shell between distance 0.99 and 1.01 from the origin.
2.26 In-class programming activity
Explanation of draw poker
- cards: ranks and suits
- hands: royal flush, straight-flush,
Actual result for you to compare your prediction to: one-hundred ninety-four out of three-hundred thirty-nine.↩


Mission Statement
As the old saying states, two heads are better than one. As college students we
have to learn how to ask questions and learn from others. The only problem is that an ICS students is known to go
lone wolf throughout their college career. The goal for us is to give ICS students an opportunity to connect to
their peers in a quick and easy fashion. This app will allow students to quickly reserve a study time in the ICS
space and notify a certain group of that session. We will also make sure that students do not meet poor study
buddies. Never will a student have a bad study buddy and never will a student have to study alone!


Exercise 5.
Another meme which circulated on Facebook in July 2021 shows an image of an electric car charging station, along with a claim about the miles per gallon (mpg) that the car charging will get.
The meme contains a number of quantitative claims, as well as a non-quantitative claim - that the station is running on a diesel generator, which is not true. What are the quantitative claims being made?
Which of the quantitative claims are true? Cite the sources you used to verify the claims.
What about these claims should make you suspicious?


Dear Sir, I am ENGR. Ugochukwu William, I am the Executive Director Projects, of the contract Award Commitee(CAC)of the Niger Delta Development Commission(NDDC) Through my search in the internet ,I got your email address and after due verification with my colleagues,I decided to forward to you this business proposal in anticipation that you may be in position to handle this business with me. We want a reliable person, who could assist us in receiving funds resulted from over invoiced bills from contracts awarded under the budget allocation for NDDC.These bills had been approved for payment by the concernd ministry.The contracts had been executed, commissioned and the contractors had been paid their actual contractual sums.What we are about to receive now is a kick back from the contractors and Under the protocol division as civil servants, we are forbiden to operate or own foreign accounts,this is why am soliciting your assistance in this manner. On our part, all modalities had been worked out in ensuring a smooth transaction .All I want from you is your mailing address and the name that you want the cheques to be issued on. As soon as you indicate your interest, further instructions will be passed on to you on the procedure that we will follow in accomplishing this deal. On accomplishment of this deal you will be entitled to 10% of the total sum.Note,there will be no financial obligation required from you and this transaction is 100% risk free. If this proposal is accepted by you, kindly reach me immediately via e-mail furnishing me with your confidential telephone numbers Looking forward to hearing from you. Best regards ENGR. Ugochukwu William


ROOMMATES A film review by Andrew Hicks Copyright 1995 Andrew Hicks / Fatboy Productions
(*** out of four)
If you've ever perused my college comedy diary "Another Year in the Life of a Nerd" (I never run out of cheap plugs), you know I didn't get along with my first-semester roommate too well. In fact, during the three-week period between Thanksgiving and Christmas Break, I said a total of four sentences to him.
So when I saw in the residence hall cable listings a movie called ROOMMATES, I envisioned 90 minutes of conflict between a couple of bickering young adults trapped in a 10 x 13 foot dorm room. Then I saw that the star of ROOMMATES is Peter Falk. Scratch that idea. But I still say someone should film the story of two college roommates whose relationship is less than ideal. Of course, in my case it would be a silent picture.
Even without the college element, I still decided to watch ROOMMATES because I had absolutely nothing to do, unless you count studying for final exams (And who does?). I'm glad I did. Peter Falk's performance was actually what made the movie. And this is a guy I never considered a real actor, more like someone who went around in a trenchcoat solving prescripted mysteries.
Falk plays Rocky, a 107-year-old Polish baker who raises his grandson after both the kid's parents die. The movie begins with the mom's death and the son moving in with his grandparents. After a couple stops along the son's journey to manhood, ROOMMATES progresses to the present day, with the grandson a surgeon and Rocky in a condemned house he refuses to leave. The surgeon reluctantly offers the only possible solution -- Rocky will have to move into his place, the basement of a building rented by a group of Chinese students ("Communists!").
The movie spans nine more years of Rocky's relationship with his grandson, and the trials posed when the grandson meets and falls in love with--gasp--a woman, and starts spending all his time with her. So, in his grandson's absence, Rocky turns his pursuits to professional boxing, achieveing the world heavyweight title in a climactic fight with Apollo Creed... Or am I confusing movie plots again?
ROOMMATES has an almost epic feel to it, covering several generations of a family with one fiesty immigrant who refuses to die. Death, though, knocks at the door of almost every other major character in the the movie. ROOMMATES has about as many casualties as the first Halloween. The number can't be counted on one hand, unless of course you're the victim of some hideous genetic mutation. And you can probably guess who says farewell to Planet Earth at the end of the movie (no, not Duran Duran). I won't come out and say it. Instead, I'll just sit here and hum "Eye of the Tiger" until each and every one of you figures it out.
ROOMMATES plays on all the major emotions.  Movies that can perfectly mix comedy and drama are always hits with the audience, even though this one bombed at the theaters. My point? There are no absolutes. Or, another possible point, Peter Falk just isn't such a great box office draw. Either way, this is still a good movie and you should give it a chance like I did, whether you hate your roommate or not.
- Visit the Movie Critic at LARGE website at http://www.missouri.edu/~c667778/movies.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


 Use the resources here to explore career ideas and find further advice on a range of career paths. For more ideas, visit Getting ready for work and self-employment and Key Job Sectors in Leeds
If you are 16 or 17 and not in education, employment or training, you can visit one of our drop-in centre services to get support from a Leeds Pathways adviser and/or receive sign-posting to other relevant services.
Grand Futures Leeds is a network of arts organisations across the city that are working together to increase the number of arts training and career opportunities available to young people in Leeds.
If you feel you need to develop further skills or you need more experience to put on your application or CV, try one of the opportunities below.
• National Citizen Service (NCS): For ages 15-17
• Doinggood: Volunteering in Leeds
• Vinspired: Volunteering opportunities
• International Service: Volunteer overseas
• Take a gap year: The Year Out Group
• Take a gap year: Overseas volunteering
• Gap year: Foreign travel advice
• Distance Learning: Open University
• Social Mobility Foundation: Support for high-achieving, disadvantaged young people
You may have already spoken to your careers adviser within school. If you haven't, or if you're looking for further information, the links below can help.
• Plotr: Explore career worlds, employer profiles and find opportunities
• iCould: Find out more about different careers and how to get there
• Careers Box: Watch a variety of films about different jobs


This file has passed.
This file has passed, but there is {{ warnings }} warning.
This file has passed, but there are {{ warnings }} warnings.
View warnings
There
is {{ errors }} error
are {{ errors }} errors
and {{ warnings }}
warning
warnings
in this file.


--- layout: index title: Home permalink: / ---
This site provides an integrated collection of tools to support future water resources planning and management. This includes advances in hydrometeorological datasets, climate downscaling, hydrologic modeling, climate impact assessements, and streamflow prediction, packaged as open-source software, freely available datasets, and guidance on appropriate use - collectively providing a foundation for understanding and adapting to future change.


{% for post in projects %}
{% endfor %}
description:
{{project.description}}
Visit the website
{{project.link}}


SICStus Prolog provides a bi-directional, procedural interface for
program parts written in C and Prolog. The C side of the
interface defines a number of functions and macros for various
operations. On the Prolog side, you have to supply declarations
specifying the names and argument/value types of C functions being
called as predicates. These declarations are used by the
predicate load_foreign_resource/1
, which performs the
actual binding of C functions to predicates.
In most cases, the argument/value type declarations suffice for making the necessary conversions of data automatically as they are passed between C and Prolog. However, it is possible to declare the type of an argument to be a Prolog term, in which case the receiving function will see it as a “handle” object, called an SP_term_ref, for which access functions are provided.
The C support routines are available in a development system as well as in runtime systems. The support routines include:
foreign/[2,3]
declarations.
In addition to the interface described in this chapter,
library(structs)
and library(objects)
(see
lib-structs and lib-objects) allow Prolog to hold pointers
to C data structures and arrays and access and store into fields in
those data structures in a very efficient way, allowing the programmer
to stay completely inside Prolog.


Select a campaign:
HeatPhoenix - 3D models and tutorials
Project P.E.T. - mobile app
BlueBandanaJake - animations
LiteralLapin (OmegaMerak) - music
Minion's Art (Joyce) - Unity shader tutorials
Pedro Medeiros (saint11) - pixel art tutorials
Raw Output
(no data)
(no data)
Patreon Campaigns
Check out the actual campaigns used for this demo and support these creators!


Written by: Wil Calhoun
Transcribed by: Eric Aasen
[Scene: Monica and Rachel's, Chandler, Monica, Phoebe, and Joey are there.]
Chandler: Wait a minute, wait.
Joey: Yeah! Oh my God! (to Chandler) Is this what its like to be you?

Joey: Oh, you have no idea. And-and when were on stage I get to-to kiss her and-and touch her, but then she goes home with the director, and its like somebodys ripping out my heart!
Phoebe: Oh, its so great to see you feeling like this!
Ross: (entering) Hey!
All: Hey!
Ross: Monica, uh Dad called this morning and ah, Aunt Silvia passed away.
Monica: Yes!! Yes! Yeah, yeah, yeah!
Ross: We were all pretty shaken up about it.
Phoebe: Wait, am I missing something though? Cause I thought death was something thats supposed to be sad, in a way.
Ross: Well ah, Aunt Silvia was, well not a nice person.
Monica: Oh, she was a cruel, cranky, old bitch! (Ross gives her a look) (to Ross) And Im sorry she died. Did Dad say I get the dollhouse?
Ross: You get the dollhouse.
Monica: I get the dollhouse!
Phoebe: Wow, a house for dolls, that is so cool! When I was kid, I had a barrel.
Joey: Uh, Pheebs, you had a barrel for a dollhouse?
Phoebe: No, just a barrel.
Monica: Y'know what, you can play with my dollhouse.
Phoebe: Really?! Really?!
Monica: Any time you want. Y'know, when I was younger, all I wanted to do was to play with this dollhouse, but no!! It was to be looked at, but never played with.
Chandler: My Grandmother used to say that exact same thing to me.
Opening Credits
[Scene: Rachels office, Chandler and her are coming back from lunch.]
Rachel: Hey, Sophie!
Sophie: Hey, Rach!
Chandler: Hey.
Sophie: Hey.
Rachel: Thanks for lunch, Chandler. Y'know, you didnt have to walk me all the way back up here.
Chandler: Oh, thats-thats okay, no problem. (He starts to look around her office.)
Rachel: Honey um, honey, you do realise that we dont keep the womens lingerie here in the office?
Chandler: Yes, I realise that.
Rachel: Summer catalogue! (hands him the catalogue)
Chandler: Thats the stuff! (quickly grabs it)
[Rachels boss, Joanna, enters]
Joanna: Rachel, I need the Versachi invoice. (to Chandler) Hello! You dont work for me.
Rachel: (introduces them) Joanna, this is my friend Chandler Bing (to Chandler) Joanna.
Joanna: Bing! Thats a great name.
Chandler: Thanks, its ah, Gaelic, for Thy turkeys done. So ah, Im gonna go, nice, nice meeting you.
Joanna: Me too.
Rachel: Bye, Chandler.
Joanna: (to Rachel) So ah, whats wrong with him?
Rachel: Oh, nothing, hes just goofy like that, I actually, hardly notice it anymore.
Joanna: Oh no, no-no-no, is he ah, married, or involved with anyone?
Rachel: No!! No! Hes not married, or involved, with anyone!
Joanna: Oh, Rachel, (pause) actually, y'know what, forget it.
Rachel: Well, Ill ask him for you, if you want me too?
Joanna: Would you? Or, is it just to sad and desperate, and y'know something that Sophie would do?
Sophie: Uh, uh, uh, I am here.
Joanna: I know that.
[Scene: Monica and Rachel's, Monica is showing off her new dollhouse. Its a huge dollhouse, that takes up the entire living room table.]
Monica: Look at it! Ohhh! Wallpapers a little faded, thats okay. Carpets a little loose. Hardwood floors!!
Phoebe: (entering) Hey!
Chandler: Hello.
Phoebe: Oh! Ooh! Oh Monica! Its so beautiful.
Monica: I know!!!
Phoebe: So, Im here, ready to play.
Monica: Okay.
Phoebe: I brought a bunch of stuff for the house, so check it out. Ha-ha. (She removes this large ceramic dog that comes up to the second floor and places it next to the house.)
Monica: Whats this?
Phoebe: Thats a dog, every house should have a dog.
Monica: Not one that can pee on the roof.
Phoebe: Well, maybe its so big because the house was built on radioactive waste.
Chandler: (holding a tissue) And is this in case the house sneezes?
Phoebe: No, no, thats the ghost for the attic.
Monica: I dont want a ghost.
Phoebe: Well, nobody wants a ghost. But youve got one, because the house is sitting on an ancient Indian burial ground.
Ross: Wait a minute, the house was built on radioactive waste, and an ancient Indian burial ground? That would never happen.
Phoebe: Okay, obviously you dont know much about the U.S. government.
Rachel: (entering) Hey!
All: Hello.
Rachel: I need to talk to you!
Ross: Sure, whats up?
Rachel: Oh, sorry. I meant Chandler.
Ross: I-I know. Well if something comes up... (walks away)
Chandler: Oh, I'm glad you guys are past that little awkward phase.
Rachel: Okay, my boss, Joanna, when you left, she started asking questions about you...
Chandler: Oh-ho, liked what she saw, huh? Dug my action, did she? Checkin out the Chan-Chan man!
Rachel: (looks at him) That was (pause) surreal. Okay, what do think? Are you interested at all?
Chandler: Yeah, she seemed cool, attractive. Ill do it.
Rachel: Oh thank you, Chandler, this is so great, shes gonna love me.
Phoebe: (holding a dinosaur) Okay, dinosaur attack!! Quick, everybody into the house!! Ahh-ahh! (the dinosaur starts attacking the house. She starts to bark like a dog.) Roof! Rrroof-roof-roof!
Monica: Okay, Phoebe, y'know what? That-thats it, thats it, all right? No dinosaurs, no ghosts, no giant dogs, okay? Theyre not the right size, theyre not Victorian, and they just dont go.
Phoebe: Okay, (starts to pack up her stuff) fine. Come dinosaur, were not welcome in the house of no imagination.
Ross: Uh, Pheebs, while were hovering around the subject. I just have to say dinosaurs, they-they dont go, rrroof!
Phoebe: The little ones do.
[Scene: The Theatre, Joey and Kate are getting ready to rehearse the play.]
Joey: Hey, Kate!
Kate: Morning.
Joey: Listen, I ah, went to that restaurant that you were talking about last week...
The Director: Hey, lovely! Come, talk to me a minute! (she goes over to him)
Joey: (to himself) And I ate the food, I had the fish, it was good, yeah. It was good, yeah...
Woman: Hi, oh, Im Lauren, Kates understudy.
Joey: Oh, hey! Joey Tribbiani.
Lauren: I know! I-Im a big fan of yours.
Joey: (looks at her, shocked) What?!
Lauren: I used to umm, schedule my classes so I could watch Dr. Drake Remoray on Days of Our Lives.
Joey: Get out of here, really?!
Lauren: Absolutely!
Joey: Yeah?
Lauren: Oh but then, they went and dropped you down that elevator shaft.
Joey: They gave me the shaft all right.
Lauren: (laughing) Oh, youre so funny. Listen, umm, what are you doing after rehearsals? Do you want to get a drink, or something?
Joey: Well Ahh, (he sees Kate and the director kissing) yeah! Yeah, sure, a drink sounds great.
Lauren: Cool! I-Ill see you then.
Joey: All right.
The Director: All right, its time to act, my talking props. (Both Joey and Kate just look at each other.)
[Scene: Monica and Rachel's, Phoebe is entering with her own dollhouse, that she made herself.]
Phoebe: Hey!
All: Hey!
Phoebe: Look everybody, look at my new dollhouse!!
Rachel: Wow!!
Phoebe: Look, look! (She lifts up the roof, and the front panel falls revealing the interior.)
Ross: Hey, whats this?!
Phoebe: Oh, okay, its the slide instead of stairs. Watch this. (She slides a doll down the slide)
Monica: Its very interesting, Phoebe.
Rachel: Whats this?
Phoebe: The Licorice Room, you can eat all the furniture. And, when guests come over, they can stay on the tootsie roll-away bed.
Ross: This is the coolest house ever!!
(Monica is looking on with a hurt expression on her face.)
Phoebe: Hey, does anybody want to join me in the aroma room? (lights some incense)
Rachel: All right!
Ross: I would!
Monica: Hey, guys, guys, did you see my new, china cabinet?!
Ross and Rachel: Uh-huh.
Phoebe: Watch, watch. (She turns a strand of Christmas lights strung around the house.)
Ross and Rachel: Ooohhhh!!
Phoebe: And, and! (She turns on a bubble maker.)
Ross and Rachel: Ahhhh!!
Chandler: (entering) Hey, my Fathers house does that!
Rachel: (to Chandler) O-o-o-okay, how did it go? Tell me everything.
Chandler: Well, the movie was great, dinner was great, and theres nothing like a cool, crisp New York evening.
Rachel: Hmm.
Chandler: Of course, I didnt get to enjoy any of that, because Joannas such a big, dull dud!
[Scene: Rachels office, Joannas telling Rachel, her side of the story.]
Joanna: Chandler is fantastic!!
Rachel: What?!
Joanna: Oh God, we just clicked! Yknow how people just click? Like he came by to pick me up, and I opened the door, and it was just like, click! Did he tell you?
Rachel: Oh, I....
Joanna: Oh, and hes got such a good heart! Doesnt he have a good heart?
Rachel: Oh, I know...
Joanna: Oh, I know and hes soo sweet! Listen, he said he was going to call, so put him straight through.
Sophie: Isnt this great?!
Joanna: Dont spoil it.
[Scene: The Theatre, Joey and Kate are rehearsing.]
Joey: Come on baby, dont go. Please? What do you say?
[A phone rings.]
The Director: (answering the phone) Hello. Oh! Its you. Just ah, just one-one sec. (to Joey and Kate) I am going to take this call. When I continue, I hope that there will appear on stage this magical thing that in the theatre we call, committing to the moment! (He goes to take the call.)
Joey: (to Kate) That guys like a cartoon. What do you see in him anyway?
Kate: He happens to be brilliant. Which is more than I can say for that sweater youre dating.
Joey: Hey, Im not interested in her sweater! Its whats underneath her sweater that counts. And besides, since ah, since when do you care who Im going out with?
Kate: I dont care. Why, do you want me to care?
Joey: Do you want me to want you to care?
Kate: Do you?
Joey: What?
The Director: (returning) Okay, Im afraid to say this, but lets pick it up where we left off.
[They resume rehearsing.]
Joey: Come on baby, dont go. Please? What do you say?
Kate: Ive got no reason to stay.
(Joey grabs her and kisses her.)
The Director: Stop!! Stop it! You must stop! You are bad actors! This is a terrible play! Ill see you in the morning. (exits)
Kate: I cant believe we go on in, in a week.
Joey: Hey, its gonna be all right.
Lauren: (to Joey) Hey! So since were getting off early, do you want to go and paint mugs?
Joey: What?
Lauren: You know!
Joey: Oh, yeah, with the mug painting. Yeah. I was so listening to that. But ah, y'know what, I think I kinda need to work on my stuff tonight.
Lauren: Oh, okay.
Joey: Okay. (he gives her a peck on the cheek)
Lauren: Ill see you tomorrow. (she kisses him full on the mouth.)
Joey: Okay.
Lauren: Gnight. (exits)
Joey: (to Kate) Ah, are you okay?
Kate: Yeah, I guess. Look, what are we gonna do about this scene, huh?
Joey: I dont know.
Kate: Well umm, maybe if it had more heat.
Joey: How do you mean?
Kate: Well, Adrians looking for a reason to stay, right?
Joey: Maybe he could slip her the tongue.
Kate: Or maybe, maybe he could grab her, and, and, and, and lift her up.
Joey: Yeah, yeah, and then Adrian, she maybe she could wrap her legs around his waist.
Kate: And then she could rip off his shirt and kiss his chest, and, and his stomach!
Joey: And then, then he could use his teeth, his teeth to undo her dress, and, and, and bite her!
Kate: And then right, right when the scene ends, he could take her with this raw, animal....
[cut to Joeys bedroom, Joey and Kate are emerging from under the covers.]
Joey: Something like that?
Kate: Yeah, thats pretty much what I had in mind.
Joey: Yeah.
Commercial Break
[Scene: Monica and Rachel's, Ross and Monica are eating breakfast as Joey enters, very happily.]
Joey: (to Ross) Hey.
Ross: Hi.
Joey: (to Monica) Hey.
(He walks up behind Monica and gives her a big hug and a kiss on the neck.)
Ross: Hi.
Joey: Hey.
(He walks over behind Ross, thinks about it for a moment, and gives him a big hug.)
Ross: Its a little early to be drinkin.
Joey: No-no, things ah, finally happened with Kate.
Ross: Ohhhhh!
Monica: Youre kidding?! Thats great!
Joey: Oh, it was so amazing. After the (pause) love making...
Monica: Oh my.
Joey: Yep. I just, I just watched her sleep for like hours, just breathing in and breathing out. And then I knew she was dreaming cause, cause her eyes keep going like this. (He closes his eyes and moves them around, kinda like hes been processed by the devil, or something.)
Chandler: (entering with Rachel) Im telling ya, Joannas got it all wrong. Okay? All I said was, This was fun. Lets do it again sometime. Ill give you a call.
Rachel: Ohh, gee. I wonder why she thinks youre going to call her?
Chandler: Thats what you say at the end of a date.
Rachel: You cant just say, Nice to meet you, good night?
Chandler: To her face? Look its the end of the date, Im standing there, I know all shes waiting for is for me to say Ill call her and its just y'know, comes out. I cant help it, its a compulsion.
Monica: Come on Rach, when a guy says hes going to call, it doesnt mean hes going to call. Hasnt it ever happened to you?
Rachel: Well, they always called.
Monica: Hmm, bite me.
[Scene: Rachels office.]
Joanna: (entering) Did he call?
Rachel: No. Sorry.
Joanna: Why?! Why?! He said hed call. Why hasnt he called?
Sophie: Maybe hes intimated by really smart, strong, successful women.
Joanna: Sophie, would you please climb out of my butt. Why hasnt he called, Rachel? Why?
Rachel: Okay, okay. Umm, well ah, maybe he, maybe he feels awkward because you are my boss.
Joanna: Awkward? Why should he feel awkward?
Rachel: Well...
Joanna: The only person that should feel awkward is you, and you didnt tell him not to call me, did you?
Rachel: No. I...
Joanna: Because if you feel uncomfortable with your friend dating someone you work for, there are always ways to fix...that.
[Scene: Central Perk, Chandler is reading a magazine as Rachel approaches.]
Rachel: (grabbing the magazine out of his hands) Call her! Call her now!
Chandler: Multiple, so many paper cuts.
Rachel: Why hasnt he called Rachel? Why? Why? I dont understand. Why?  Why? Why?
Chandler: (sarcastic) Oh, well give me the phone then.
Rachel: Come on, this isnt funny. She thinks its my fault that you havent called her.

Rachel: Well then youre going to have to take her out again.
Chandler: Nooo!! Shes really dull! And she gets this gross mascara goop thing in the corner of her eye!
Rachel: I dont care! I dont care! You are going to have to take her out again and end it, and end it in way that she knows its actually ended.
Chandler: All right! Fine! But its just a lunch date, no more than an hour! And from now on I get my own dates, I dont want you setting me up with anybody ever again!
Rachel: Thats fine!
Chandler: Thats just a lot of big talk, y'know.
Rachel: I know.
[Scene: Monica and Rachel's, Ross is entering.]
Ross: Mon?
Monica: (from the bathroom) Im in the shower!
[He closes the door and walks over to get something from the fridge. He starts to smell something and turns around to see Phoebes dollhouse smoking. He runs over and takes off the roof to reveal that the dollhouse fire.]
Ross: Oh, fire! There, theres a fire! Fire!!
[He tries to blow it out, and obviously, it doesnt work. He runs over to the sink to get a glass of water to put out the fire, but since Monica is in the shower the water pressure is very low and takes a long time to fill the glass. In desperation he takes the half full glass over and dumps it on the fire, it doesnt work. He then picks up the dollhouse and considers bringing it over to the sink, but decides to take it into the bathroom and use the shower to put it out. He kicks open the door and we hear Monica scream at the top of her lungs.]
[Scene: The Theatre, Kate is arriving for rehearsal.]
Joey: Hey.
Kate: Hi.
Joey: So I ah, talked to Lauren, kinda told her how things were with us. Did you ah, did you talk to Marshall?
Kate: About what?
Joey: Y'know, about what happened with us.
Kate: Nooo. And theres really no reason he should find out, so ah lets not make a big deal about it, okay?
Joey: What are you talking about? It was a big deal.  I-I was there, youre not that good an actress.
Kate: Look umm, I, I was, I was just caught up in the moment. Thats all it was. Joey, Im-Im sorry you feel bad, but havent you ever sleep with a women where it meant more to her than it did to you?
Joey: Nooo.
Lauren: (entering) Hi, Kate!
Kate: Hi, Lauren.
Joey: Hi, Lauren.
Lauren: Hi, pig!
[Scene: Monica and Rachel's, Monica and Ross are inspecting the damage to the dollhouse.]
Ross: Sorry I ah, I scared you in there.
Monica: Oh, thats okay. By the way, I was just checking the shower massager.
Ross: Yeah.
Phoebe: (entering) Hey!
Monica: (runs over to her) I tried to reach you at work. Theres....been a fire.
Phoebe: What?! Oh my... (sees the remains of the house) Oh my God!! What happened?!
Ross: Well, we believe it originated here. (He uses a pointer and points to the point of origin.) In the Aroma Room.
Phoebe: All right. Did everyone get out okay?
Monica: Well, the giraffes okay. And so is the pirate.
Phoebe: Ohh. What is this?
Ross: No Phoebe, dont look! You dont want to see whats under there!!
Phoebe: (She pauses to ready herself, and removes the tissue.) Ohh, the-the Foster puppets!
(She picks up a charred piece of plastic that once was the Foster puppets, and starts to break down. Monica goes over and comforts her.)
[Scene: Rachels office, Chandler and Joanna are returning from their lunch date. He is telling her about her mascara problem. Rachel is already there.]
Chandler: Its not a big deal. Its, just its right here, (points to his eye) and its all the time.
Joanna: Well, thanks again for lunch.
Chandler: (He looks over at Rachel, who nods her head) Yes, this, this was pleasant.
(Rachel is slowing trying to leave and let them talk.)
Joanna: It was, wasnt it?
Chandler: The food there was, was great.
Joanna: Wasnt it?
Chandler: So take care.
Joanna: You too.
Chandler: Well, this was great. Ill give you a call. We should do it again sometime. (Rachel is disappointed)
Joanna: Great! Im looking forward to it. Rachel, any messages?
Rachel: Sophies desk.
(Chandler starts to leave ashamed of himself, but Rachel stops him in the hallway.)
Rachel: (whispering) Chandler!!
Chandler: Noo!
Rachel: Chandler!!
Chandler: Look, Im sorry. Okay? Im weak, and pathetic, and sorry.
Rachel: Okay, you are going to tell her and youre going to tell her now. (She grabs his nipple and starts to twist it.)
Chandler: AhhhhIm not going to call you.
Joanna: What?
Chandler: Im sorry. Im-Im-Im sorry that I said I was going to when Im not. Look, this has nothing to do with you, y'know? And this isnt Rachels fault. Its me. I have serious, serious problems when it comes to women. I have issues with commitment, intimacy, (pause) mascara goop. And Im really sorry, its just that this is not, this isnt going to work out.
Joanna: Well, this isnt how I was hoping how this would end, but I guess I have to appreciate your honesty.
Chandler: Yeah, o-okay.
Joanna: So...
Chandler: Well this is great! Ill give you a call! We should do it again sometime!
(Rachel is shocked, and holds her arms out in disbelief.)
Closing Credits
[Scene: Chandler and Joey's, Joey is talking on the phone.]
Joey: (on phone) Well, so anyway Beth, what Im saying is I shouldve considered your feelings before I went home with you that night. Ive ah, Ive recently learned whats it like to be on your side of it, and Im sorry. So, do you think you can forgive me? (listens) Great. Thanks. Okay, bye. (He sits down and crosses out something, and dials the phone again.) Hello, Jennifer? (listens) Oh hi, Mrs. Loreo, is Jennifer there? (listens) Oh, shes not home huh? (listens) Well ah, actually I kinda need to talk to you too.
End


Effect of LiCl and DG on different stages of the PDCoV replication cycle. ( A). The levels of vRNA in cells treated with 60 mM LiCl during viral attachment and entry were determined by real-time qPCR. ( B) Same experiment as in A but using DG at 1250 μg/mL. Values represent the mean ± SD of three independent experiments; ns, no significant difference; * p < 0.05; ** p < 0.01; *** p < 0.001.


Restaurant Information
Restaurant Name
Restaurant Phone Number
Restaurant E-mail
Branches Information
Click to Input
Input Branch information
×
Enter Branch Name
Select Branch Location
City
Area
Detail Location
Branch Name
City
Area
Detail Location
Restaurant Name
Restaurant Phone Number
Restaurant E-mail


{% extends "emails/email_template.html" %} {% load staticfiles %} {% block email_body %}
An {{model}} was created and/or updated in the LFUCG Exactions system and it is now pending your approval.
To review the {{model}}, please click here to view the entry.
{% endblock email_body %}


Rest API
Source code for all the REST resources can be found from package io.cassandrareaper.resources.
Login Resource
- POST /login
- Expected form parameters:
* username: User to login with as defined in Shiro settings (default user is admin) * password: Password to authenticate with through Shiro (default password of user admin is: admin) * rememberMe: Boolean to have the Web UI remember the username - Endpoint for logging in to Reaper
- Expected form parameters:
Shiro JWT Provider
- GET /jwt
- Expected query parameters: None
- Returns a JWT to use in all REST calls when authentication is turned on in Reaper.
The token must be passed in the
Authorization
HTTP header in the following form:
Authorization: Bearer [JWT value]
This operation expects that a call was previously made to /login
and that the retrieved session id is passed in the cookies when requesting a JWT.
Ping Resource
- GET /ping
- Expected query parameters: None
- Simple ping resource that can be used to check whether the reaper is running.
Cluster Resource
-
GET /cluster
- Expected query parameters:
- seedHost: Limit the returned cluster list based on the given seed host. (Optional)
- Returns a list of registered cluster names in the service.
- Expected query parameters:
-
GET /cluster/{cluster_name}
- Expected query parameters:
- limit: Limit the number of repair runs returned. Recent runs are prioritized. (Optional)
- Returns a cluster object identified by the given “cluster_name” path parameter.
- Expected query parameters:
-
GET /cluster/{cluster_name}/tables
- Expected query parameters: None
- Returns a map of
<KeyspaceName, List<TableName>>
-
POST /cluster
- Expected query parameters:
- seedHost: Host name or IP address of the added Cassandra clusters seed host.
- jmxPort: A custom port that reaper will use to JMX into the Cluster. Defaults to 7199. (Optional)
- Adds a new cluster to the service, and returns the newly added cluster object, if the operation was successful. If the cluster is already registered, the list of host will be updated to match the current topology.
- Expected query parameters:
-
POST /cluster/auth
- Expected query parameters:
- seedHost: Host name or IP address of the added Cassandra clusters seed host.
- jmxPort: A custom port that reaper will use to JMX into the Cluster. Defaults to 7199. (Optional)
- jmxUsername: JMX Username specific to the Cluster. Defaults to what is defined in configuration. (Optional)
- jmxUsername: JMX Password specific to the Cluster. Defaults to what is defined in configuration. (Optional)
- Adds a new cluster to the service, and returns the newly added cluster object, if the operation was successful. If the cluster is already registered, the list of host will be updated to match the current topology.
- Expected query parameters:
-
PUT /cluster/{cluster_name}
- Expected query parameters:
- seedHost: New host name or IP address used as Cassandra cluster seed.
- jmxPort: A custom port that reaper will use to JMX into the Cluster. Defaults to 7199. (Optional)
- Adds a new cluster or modifies an existing cluster’s seed host. Comes in handy when the previous seed has left the cluster.
- Expected query parameters:
-
PUT /cluster/auth/{cluster_name}
- Expected query parameters:
- seedHost: New host name or IP address used as Cassandra cluster seed.
- jmxPort: A custom port that reaper will use to JMX into the Cluster. Defaults to 7199. (Optional)
- jmxUsername: JMX Username specific to the Cluster. Defaults to what is defined in configuration. (Optional)
- jmxUsername: JMX Password specific to the Cluster. Defaults to what is defined in configuration. (Optional)
- Adds a new cluster or modifies an existing cluster’s seed host. Comes in handy when the previous seed has left the cluster.
- Expected query parameters:
-
DELETE /cluster/{cluster_name}
- Expected query parameters:
- force : Enforce deletion of the cluster even if there are active schedules and a repair run history (Optional)
- Delete a cluster object identified by the given “cluster_name” path parameter. Cluster will get deleted only if there are no schedules or repair runs for the cluster, or the request will fail. Delete repair runs and schedules first before calling this.
- Expected query parameters:
Repair Run Resource
-
GET /repair_run
- Optional query parameters:
- state: Comma separated list of repair run state names. Only names found in
io.cassandrareaper.core.RunState
are accepted. (Optional) - cluster_name: Name of the Cassandra cluster. (Optional)
- keyspace_name: The name of the table keyspace. (Optional)
- state: Comma separated list of repair run state names. Only names found in
- Returns a list of repair runs, optionally fetching only the ones with state state.
- Optional query parameters:
-
GET /repair_run/{id}
- Expected query parameters: None
- Returns a repair run object identified by the given “id” path parameter.
-
GET /repair_run/cluster/{cluster_name}
- Expected query parameters: None
- Returns a list of all repair run statuses found for the given “cluster_name” path parameter.
-
GET /repair_run/{id}/segments
- Expected query parameters: None
- Returns the list of segments of the repair run.
-
POST /repair_run/{id}/segments/abort/{segment_id}
- Expected query parameters: None
- Aborts a running segment and puts it back in NOT_STARTED state. The segment will be processed again later during the lifetime of the repair run.
-
POST /repair_run
- Expected query parameters:
* clusterName: Name of the Cassandra cluster.
* keyspace: The name of the table keyspace.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* owner: Owner name for the run. This could be any string identifying the owner.
* cause: Identifies the process, or cause the repair was started. (Optional)
* segmentCount: Defines the amount of segments per node to create for the repair run. (Optional)
* repairParallelism: Defines the used repair parallelism for repair run. (Optional)
* intensity: Defines the repair intensity for repair run. (Optional)
* incrementalRepair: Defines if incremental repair should be done. [true/false] (Optional)
* nodes : a specific list of nodes whose tokens should be repaired. (Optional)
* datacenters : a specific list of datacenters to repair. (Optional)
* blacklistedTables : The name of the tables that should not be repaired. Cannot be used in conjunction with the tables parameter. (Optional)
* repairThreadCount : Since Cassandra 2.2, repairs can be performed with up to 4 threads in order to parallelize the work on different token ranges. (Optional)
- Endpoint used to create a repair run. Does not allow triggering the run. Creating a repair run includes generating the repair segments. Notice that query parameter “tables” can be a single String, or a comma-separated list of table names. If the “tables” parameter is omitted, and only the keyspace is defined, then created repair run will target all the tables in the keyspace.
- Returns the ID of the newly created repair run if successful.
- Expected query parameters:
* clusterName: Name of the Cassandra cluster.
* keyspace: The name of the table keyspace.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* owner: Owner name for the run. This could be any string identifying the owner.
* cause: Identifies the process, or cause the repair was started. (Optional)
* segmentCount: Defines the amount of segments per node to create for the repair run. (Optional)
* repairParallelism: Defines the used repair parallelism for repair run. (Optional)
* intensity: Defines the repair intensity for repair run. (Optional)
* incrementalRepair: Defines if incremental repair should be done. [true/false] (Optional)
* nodes : a specific list of nodes whose tokens should be repaired. (Optional)
* datacenters : a specific list of datacenters to repair. (Optional)
* blacklistedTables : The name of the tables that should not be repaired. Cannot be used in conjunction with the tables parameter. (Optional)
* repairThreadCount : Since Cassandra 2.2, repairs can be performed with up to 4 threads in order to parallelize the work on different token ranges. (Optional)
-
PUT /repair_run/{id}/state/{state}
- Expected query parameters: None
- Starts, pauses, or resumes a repair run identified by the “id” path parameter.
Can also be used to reattempt a repair run in state “ERROR”, picking up where it left off.
Possible values for given state are: “PAUSED” or “RUNNING”.
-
PUT /repair_run/{id}/intensity/{intensity}
- Expected query parameters: * intensityStr : New value for the intensity of the repair run. Expected is a float between 0.0 and 1.0.
- Modifies the intensity of a PAUSED repair run. Returns OK if all goes well NOT_MODIFIED if new state is the same as the old one, and 409 (CONFLICT) if transition is not supported.
-
DELETE /repair_run/{id}
- Expected query parameters:
- owner: Owner name for the run. If the given owner does not match the stored owner, the delete request will fail.
- Delete a repair run object identified by the given “id” path parameter. Repair run and all the related repair segments will be deleted from the database.
- Expected query parameters:
Repair Schedule Resource
-
GET /repair_schedule
- Expected query parameters:
- clusterName: Filter the returned schedule list based on the given cluster name. (Optional)
- keyspace: Filter the returned schedule list based on the given keyspace name. (Optional)
- Returns all repair schedules present in the Reaper
- Expected query parameters:
-
GET /repair_schedule/{id}
- Expected query parameters: None
- Returns a repair schedule object identified by the given “id” path parameter.
-
GET /repair_schedule/cluster/{cluster_name}
- Expected query parameters: None
- Returns the repair schedule objects for the given cluster.
-
POST /repair_schedule
- Expected query parameters:
* clusterName: Name of the Cassandra cluster.
* keyspace: The name of the table keyspace.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* owner: Owner name for the schedule. This could be any string identifying the owner.
* segmentCountPerNode: Defines the amount of segments per node to create for scheduled repair runs. (Optional)
* repairParallelism: Defines the used repair parallelism for scheduled repair runs. (Optional)
* intensity: Defines the repair intensity for scheduled repair runs. (Optional)
* incrementalRepair: Defines if incremental repair should be done. [true/false] (Optional)
* scheduleDaysBetween: Defines the amount of days to wait between scheduling new repairs.
For example, use value 7 for weekly schedule, and 0 for continuous.
* scheduleTriggerTime: Defines the time for first scheduled trigger for the run.
If you don’t give this value, it will be next mid-night (UTC).
Give date values in ISO format, e.g. “2015-02-11T01:00:00”. (Optional)
* nodes : a specific list of nodes whose tokens should be repaired. (Optional)
* datacenters : a specific list of datacenters to repair. (Optional)
* blacklistedTables : The name of the tables that should not be repaired. Cannot be used in conjunction with the tables parameter. (Optional)
* repairThreadCount : Since Cassandra 2.2, repairs can be performed with up to 4 threads in order to parallelize the work on different token ranges. (Optional)
- Create and activate a scheduled repair.
- Expected query parameters:
* clusterName: Name of the Cassandra cluster.
* keyspace: The name of the table keyspace.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* owner: Owner name for the schedule. This could be any string identifying the owner.
* segmentCountPerNode: Defines the amount of segments per node to create for scheduled repair runs. (Optional)
* repairParallelism: Defines the used repair parallelism for scheduled repair runs. (Optional)
* intensity: Defines the repair intensity for scheduled repair runs. (Optional)
* incrementalRepair: Defines if incremental repair should be done. [true/false] (Optional)
* scheduleDaysBetween: Defines the amount of days to wait between scheduling new repairs.
For example, use value 7 for weekly schedule, and 0 for continuous.
* scheduleTriggerTime: Defines the time for first scheduled trigger for the run.
If you don’t give this value, it will be next mid-night (UTC).
Give date values in ISO format, e.g. “2015-02-11T01:00:00”. (Optional)
* nodes : a specific list of nodes whose tokens should be repaired. (Optional)
* datacenters : a specific list of datacenters to repair. (Optional)
* blacklistedTables : The name of the tables that should not be repaired. Cannot be used in conjunction with the tables parameter. (Optional)
* repairThreadCount : Since Cassandra 2.2, repairs can be performed with up to 4 threads in order to parallelize the work on different token ranges. (Optional)
-
POST /repair_schedule/start/{id}
- Expected query parameters: None
- Force start a repair from a schedule.
-
DELETE /repair_schedule/{id}
- Expected query parameters:
- owner: Owner name for the schedule. If the given owner does not match the stored owner, the delete request will fail.
- Delete a repair schedule object identified by the given “id” path parameter. Repair schedule will get deleted only if there are no associated repair runs for the schedule. Delete all the related repair runs before calling this endpoint.
- Expected query parameters:
-
PUT /repair_schedule/{id}
- Expected query parameters:
- state: “PAUSED” or “ACTIVE”.
- Enables or disables the repair schedule.
- Expected query parameters:
Snapshot Resource
-
GET /snapshot/cluster/{clusterName}/{host}
- Expected query parameters: None
- Lists snapshots for the given host in the given cluster.
-
GET /snapshot/cluster/{clusterName}
- Expected query parameters: None
- Lists all snapshots for the the given cluster.
-
DELETE /snapshot/cluster/{clusterName}/{host}/{snapshotName}
- Expected query parameters: None
- Deletes a specific snapshot on a given node.
-
DELETE /snapshot/cluster/{clusterName}/{snapshotName}
- Expected query parameters: None
- Deletes a specific snapshot on all nodes in a given cluster.
-
POST /snapshot/cluster/{clusterName}
- Expected query parameters:
* keyspace: Name of the Cassandra cluster.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* snapshot_name: name to use for the snapshot. (Optional)
* owner: Owner name for the run. This could be any string identifying the owner.
* cause: Identifies the process, or cause the repair was started. (Optional)
- Create a snapshot on all hosts in a cluster, using the same name.
- Expected query parameters:
* keyspace: Name of the Cassandra cluster.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* snapshot_name: name to use for the snapshot. (Optional)
* owner: Owner name for the run. This could be any string identifying the owner.
* cause: Identifies the process, or cause the repair was started. (Optional)
-
POST /snapshot/cluster/{clusterName}/{host}
- Expected query parameters:
* keyspace: Name of the Cassandra cluster.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* snapshot_name: name to use for the snapshot. (Optional)
- Create a snapshot on a specific host.
- Expected query parameters:
* keyspace: Name of the Cassandra cluster.
* tables: The name of the targeted tables (column families) as comma separated list.
If no tables given, then the whole keyspace is targeted. (Optional)
* snapshot_name: name to use for the snapshot. (Optional)
Crypto Resource
- GET /crypto/encrypt/{text}
- Expected query parameters: * text: The text to encrypt.
- Encrypt text when cryptograph settings are configured in the reaper yaml.
Node Resource
-
GET /node/tpstats/{clusterName}/{host}
- Expected query parameters: None
- Returns thread pool stats for a node.
-
GET /node/dropped/{clusterName}/{host}
- Expected query parameters: None
- Returns dropped messages stats for a node.
-
GET /node/clientRequestLatencies/{clusterName}/{host}
- Expected query parameters: None
- Returns client request latencies for a node.
-
GET /node/streams/{clusterName}/{host}
- Expected query parameters: None
- Returns streams currently happening on a node.
-
GET /node/compactions/{clusterName}/{host}
- Expected query parameters: None
- Returns thread pool stats for a node.
-
GET /node/tokens/{clusterName}/{host}
- Expected query parameters: None
- Returns the tokens owned by a node.