De | Home
Function grapher manual
Table of contents
- Constants
- Functions
- Basic functions
- Trigonometric functions
- Hyperbolic functions
- Wave forms
- Analysis
- Enhancement functions
- Gamma and related
- Combinatorical functions
- Elliptic integrals and related
- Antiderivatives
- Bessel and related
- Hypergeometric functions
- Zeta and related
- Polynomial functions
- Fourier analysis
- Functional analysis
- Other functions
- Number theoretic functions
- Statistical functions
- Complex functions
- Basic functions
- Trigonometric functions
- Hyperbolic functions
- Complex analysis
- Gamma and related
- Antiderivatives
- Zeta and related
- Other
- Operators
- Syntax and semantics
- The graphers in detail
- Examples
- Advanced
Constants
e......Euler's number
pi.....Circle constant
tau....2*pi
deg....pi/180
gon....pi/200
gc.....Euler-Mascheroni constant
gr.....golden ratio
Functions
Basic functions
abs(x)........absolute value
sgn(x)........signum function
sqrt(x).......square root
root(n,x).....nth root
floor(x)......rounds x down
ceil(x).......rounds x up
rd(x).........rounded value
frac(x).......fractional part
max(a,b)......maximum
min(a,b)......minimum
mod(x,m)......modulo funktion
H(x)..........unit step function
exp(x)........natural exponential function
ln(x).........natural logarithm
lg(x).........decadic logarithm
ld(x).........logarithm to base two
log(x,b)......logarithm to base b
Trigonometric functions
sin(x)........sine
cos(x)........cosine
tan(x)........tangent
cot(x)........cotangent
sec(x)........secant
csc(x)........cosecant
asin(x).......arc sine
acos(x).......arc cosine
atan(x).......arc tangent
acot(x).......arc cotangent
asec(x).......arc secant
acsc(x).......arc cosecant
gd(x).........Gudermann function
hypot(x,y)....length of the coordinate vector (x,y)
angle(x,y)....angle of the coordinate vector (x,y)
Hyperbolic functions
sinh(x).......sine hyperbolicus
cosh(x).......cosine hyperbolicus
tanh(x).......tangent hyperbolicus
coth(x).......cotangent hyperbolicus
sech(x).......secant hyperbolicus
csch(x).......cosecant hyperbolicus
asinh(x)......area sine hyperbolicus
acosh(x)......area cosine hyperbolicus
atanh(x)......area tangent hyperbolicus
acoth(x)......area cotangent hyperbolicus
asech(x)......area secant hyperbolicus
acsch(x)......area cosecant hyperbolicus
Wave forms
twave(x,p)....triangle wave, p-periodic
ptwave(x,p)...positive triangle wave, p-periodic
sqwave(x,p)...square wave, p-periodic
psqwave(x,p)..positive square wave, p-periodic
stwave(x,p)...sawtooth wave, p-periodic
pstwave(x,p)..positive sawtooth wave, p-periodic
Analysis
diff(f,x).....derivative of f at x
diff(f,x,2)...second derivative of f at x
diff(f,x,n)...nth derivative of f at x
int(f,0,x)....integral(from 0 to x) f(t) dt
int(f,0,x,n)..integration with n steps
pow(f,n,x)....composition of function f with itself
sum(f,a,b)....sum(k=a to b) f(k)
prod(f,a,b)...product(k=a to b) f(k)
rand(a,b).....random number in the interval [a,b)
inv(f,x)......inverse function f^(-1)(x)
inv(f,x,a,b)..f^(-1)(x) for f defined on [a,b]
Enhancement functions
[a1,...,an]...constructs a list from the values a1,...,an
get(a,i)......element number i of the list a
size(a).......number of elements in the list a
cat(a,b)......concatenates the lists a and b
range(a,b)....constructs the list [a,a+1,a+2,...,b]
range(a,b,d)..constructs the list [a,a+d,a+2d,...,b]
next(a).......cyclically picks an element from the list a
rand(a).......randomly picks an element from the list a
sum(a)........sum of all elements in the list a
prod(a).......product of all elements in the list a
max(a)........maximum of all elements in the list a
min(a)........minimum of all elements in the list a
rev(a)........reversed list
ipp(a)........interpolation polynomial, a=[[x0,y0],...,[xn,yn]]
fn(a).........piecewise linear interpolation
fn(x0,d,a)....piecewise linear interpolation, equidistant nodes
map(f,a)......applys the function f to all elements in a
filter(f,a)...filters elementes from the list a
reduce(f,a)...reduces a with f(x,y)
compose(a)....composition of all functions in the list a
count(f,a)....counts how often f(x) for x in a is true
forall(f,a)...f(x) is true for all x in a
exists(f,a)...f(x) is true for any x in a
table(f,a)....lookup table of f for the list a
apply(f,x)....application of f to x
if(c,a,b).....if c then a else b
not(a)........logical negation
clamp(x,a,b)..min(max(x,a),b)
sma(f,x,n,h)..central simple moving average
Gamma and related
fac(x)........factorial
gamma(x)......gamma function
lngamma(x)....ln(gamma(x)) for large x
digamma(x)....digamma function
pgamma(n,x)...polygamma function
B(a,b)........beta function
gamma(s,x)....lower incomplete gamma function
Gamma(s,x)....upper incomplete gamma function
B(x,a,b)......incomplete beta function B[x](a,b)
I(x,a,b)......B(x,a,b)/B(a,b)
G(x)..........Barnes G-function
hyperK(x).....K-function
Combinatorical functions
bc(n,k).......binomial coefficient
ff(n,k).......falling factorial
rf(n,k).......raising factorial
s1(n,k).......Stirling number of the first kind
s2(n,k).......Stirling number of the second kind
Elliptic integrals and related
K(m)..........complete elliptic integral K(m=k^2)
E(m)..........complete elliptic integral E(m=k^2)
F(phi,m)......incomplete elliptic integral F(phi,m=k^2)
E(phi,m)......incomplete elliptic integral E(phi,m=k^2)
Pi(phi,n,m)...incomplete elliptic integral Pi(phi,n,m=k^2)
RF(x,y,z).....Carlson symmetric form RF(x,y,z)
RJ(x,y,z,p)...Carlson symmetric form RJ(x,y,z,p)
RC(x,y).......shorthand for RF(x,y,y)
RD(x,y,z).....shorthand for RJ(x,y,z,z)
agm(a,b)......arithmetic-geometric mean
magm(a,b).....modified arithmetic-geometric mean
Antiderivatives
Ei(x).........exponential integral
En(n,x).......exponential integral E[n](x)
li(x).........integral logarithm
Li(x).........integral logarithm with offset li(2)
Si(x).........sine integral
Ci(x).........cosine integral
Bessel and related
BJ(a,x).......Bessel function J[a](x)
BY(a,x).......Bessel function Y[a](x)
Bj(a,x).......spherical Bessel function j[a](x)
By(a,x).......spherical Bessel function y[a](x)
BI(a,x).......modified Bessel function I[a](x)
BK(a,x).......modified Bessel function K[a](x)
Ai(x).........Airy function Ai(x)
Bi(x).........Airy function Bi(x)
Hypergeometric functions
F([a1,...,am],[b1,...,bn],x)
..............hypergeometric function
M(a,b,x)......confluent hypergeometric function M(a,b,x)
U(a,b,x)......confluent hypergeometric function U(a,b,x)
Zeta and related
zeta(s).......zeta function
zeta(s,a).....Hurzwitz zeta function
Phi(x,s,a)....Lerch transcendent
Li(s,x).......polylogarithm Li[s](x)
B(k)..........Bernoulli number, B(1)=+1/2
Bm(k).........Bernoulli number, Bm(1)=-1/2
Polynomial functions
PP(n,a,x).....Legendre polynomial P[n,a](x)
PL(n,a,x).....Laguerre polynomial L[n,a](x)
PH(n,x).......Hermite polynomial H[n](x)
PT(n,x).......Chebyshev polynomial T[n](x)
PU(n,x).......Chebyshev polynomial U[n](x)
Fourier analysis
fa(f,i,j).....Fourier coefficients a[i] upto a[j]
fb(f,i,j).....Fourier-coefficients b[i] upto b[j]
fs(x,a0,a,b)..Fourier series, a=[a1,a2,...], b=[b1,b2,...]
fs(x,a0,a)....amplitude-phase form(cos), a=[[A1,phi1],[A2,phi2],...]
Fs(f,x).......sine transform, x in Hz
Fc(f,x).......cosine transform, x in Hz
comb(x,a,p)...Dirac comb of sharpness a und period p
Functional analysis
sinc(x).......cardinal sine: sin(pi*x)/(pi*x)
delta(x,a)....Dirac delta function
L(f,x)........Laplace transform
E(a,b,x)......Mittag Leffler function
D(f,x,r)......fractional derivative (D^r)(f)(x)
J(f,a,x,r)....Riemann-Liouville integral (J[a]^r)(f)(x)
J2(f,a,x,r)...Riemann-Liouville integral, alternative algorithm
Other functions
W(x)..........Lambert W-function, upper branch
Wm1(x)........Lambert W-function, lower branch
Number theoretic functions
pm(x,n,m).....modular power
gcd(a,b)......greatest common divisor
lcm(a,b)......least common multiple
isprime(n)....prime number test
primes(m,n)...the list of prime numbers between m and n
factor(n).....prime number factorization
pcf(n)........prime number counting function pi(n)
phi(n)........Euler's totient function
lambda(n).....Carmichael function
sigma(n,k)....divisor function sigma[k](n)
Statistical functions
erf(x)........error function
norm(x).......cumulative standard normal distribution
mean(a).......arithmetic mean of the elements of a
sd(a).........standard deviation of the elements of a
cdf(a,x)......CDF for the random numbers in a
pmf(a,x)......PMF, a is a list of integer numbers
pmfB(n,p,k)...binomial distribution, PMF
cdfB(n,p,k)...binomial distribution, CDF
pmfG(p,k).....geometric distribution, PMF
cdfG(p,k).....geometric distribution, CDF
pmfH(N,K,n,k)...hypergeometric distribution, PMF
cdfH(N,K,n,k)...hypergeometric distribution, CDF
pmfP(lambda,k)...Poisson distribution, PMF
cdfP(lambda,k)...Poisson distribution, CDF
pmfLog(p,k)...logarithmic distribution, PMF
cdfLog(p,k)...logarithmic distribution, CDF
pdfN(mu,sigma,x)...normal distribution, PDF
cdfN(mu,sigma,x)...normal distribution, CDF
pdfLogN(mu,sigma,x)...log-normal distribution, PDF
cdfLogN(mu,sigma,x)...log-normal distribution, CDF
pdfExp(lambda,x)...exponential distribution, PDF, E=1/lambda
cdfExp(lambda,x)...exponential distribution, CDF, E=1/lambda
pdfst(n,x)....student's t-distribution, PDF
cdfst(n,x)....student's t-distribution, CDF
pdfF(m,n,x)...Fisher distribution, PDF
cdfF(m,n,x)...Fisher distribution, CDF
qfF(m,n,p)...Fisher distribution, quantile function
pdfW(a,b,x)...Weibull distribution, PDF, E=b*gamma(1+1/a)
cdfW(a,b,x)...Weibull distribution, CDF, E=b*gamma(1+1/a)
pdfGamma(b,p,x)...Gamma distribution, PDF, E=p/b
cdfGamma(b,p,x)...Gamma distribution, CDF, E=p/b
pdfBeta(p,q,x)...Beta distribution, PDF
cdfBeta(p,q,x)...Beta distribution, CDF
pdfchisq(n,x)...chi-squared distribution, PDF
cdfchisq(n,x)...chi-squared distribution, CDF
qfchisq(n,p)...chi-squared distribution, quantile function
Complex functions
Basic functions
re(z).........real part
im(z).........imaginary part
conj(z).......conjugation
arg(z)........phase
abs(z)........absolute value
sgn(z)........signum function
sqrt(z).......square root
root(n,z).....nth root
exp(z)........natural exponential function
ln(z).........natural logarithm
lg(z).........decadic logarithm
log(z,b)......logarithm to base b
Trigonometric functions
sin(z)........sine
cos(z)........cosine
tan(z)........tangent
cot(z)........cotangent
asin(z).......arc sine
acos(z).......arc cosine
atan(z).......arc tangent
acot(z).......arc cotangent
Hyperbolic functions
sinh(z).......sine hyperbolicus
cosh(z).......cosine hyperbolicus
tanh(z).......tangent hyperbolicus
coth(z).......cotangent hyperbolicus
asinh(z)......area sine hyperbolicus
acosh(z)......area cosine hyperbolicus
atanh(z)......area tangent hyperbolicus
acoth(z)......area cotangent hyperbolicus
Complex analysis
diff(f,z).....complex derivative
diff(f,z,n)...nth complex derivative
int(f,a,b)....integral(from a to b) f(t) dt
cint(f,g).....contour integral(from g(0) to g(1)) f(z) dz
vint(f,a).....contour integral(from get(a,1) to get(a,n)) f(z) dz
Gamma and related
fac(z)........factorial
gamma(z)......gamma function
digamma(z)....digamma function
gamma(s,z)....lower incomplete gamma function
Gamma(s,z)....upper incomplete gamma function
Elliptic integrals and related
K(m)..........complete elliptic integral K(m=k^2)
E(m)..........complete elliptic integral E(m=k^2)
Antiderivatives
erf(z)........error function
Ei(z).........exponential integral
En(n,z).......exponential integral E[n](z)
Zeta and related
zeta(s).......zeta function
zeta(s,a).....Hurzwitz zeta function
Phi(x,s,a)....Lerch transcendent
B(k)..........Bernoulli number
Other
theta1(z,q)...theta function theta1(z,q)
theta2(z,q)...theta function theta2(z,q)
theta3(z,q)...theta function theta3(z,q)
theta4(z,q)...theta function theta4(z,q)
sn(z,k).......sinus amplitudinis
cn(z,k).......cosinus amplitudinis
dn(z,k).......delta amplitudinis
Operators
01 f\x.....f applied to x
02 a^b.....a to the power of b
03 +a......plus a
03 -a......minus a
04 a*b.....a times b
04 a/b.....a divided by b
04 a%b.....a modulo b
05 a+b.....a plus b
05 a-b.....a minus b
06 a:b.....[a, a+1, a+2, ..., b]
06 a:b:d...[a, a+d, a+2d, ..., b]
07 a<b.....if a is less than b then 1 else 0
07 a>b.....if a is greater than b then 1 else 0
07 a<=b....if a is less than or equal to b then 1 else 0
07 a>=b....if a is greater than or equal to b then 1 else 0
08 a=b.....if abs(a-b)<epsilon then 1 else 0
08 a!=b....if abs(a-b)>epsilon then 1 else 0
09 a&b.....a and b
10 a|b.....a or b
Syntax and semantics
Care should be taken of the following:
* The decimal mark is a point.
(the sign which separates fractional part from integer part)
* x to the power of 2 is written x^2.
* In place of x^-1 you have to write x^(-1).
* The power operator is left-associative.
That means a^b^c = (a^b)^c.
* x/a/b means (x/a)/b.
* In place of 2*x you can also write 2x.
* In place of (x+2)*(x-2) you can also write (x+2)(x-2).
* But in place of x(x-1) you have to write x*(x-1).
* Omitting the multiplication sign in a*x and x*x is also
not allowed.
If a hash sign (#) is written at the beginning of the input line,
then the following function is defined, but not graphed.
For example the follwing input is possible:
f(x) = # sin(x)
g(x) = f(2x)
The notation {x| term of x} is used for the definition of anonymous
functions. For example, the function which maps x to 2x is written
{x|2x}, or alternatively {t|2t} or {u|2u}. This function can be
applied to the variable x like a named function: {t|2t}(x). This is
advantageous in certain cases. For example, the function
f(x) = 1+(x-2)+(x-2)^2/2+(x-2)^3/6
can also be written as
f(x) = {x|1+x+x^2/2+x^3/6}(x-2).
The derivative of x^2 can be stated as
f(x) = diff({t|t^2},x).
An alternative formulation is
f(x) = x^2,
g(x) = diff(f,x).
To draw f(x) = integral(from 0 to x) 2t dt,
write f(x) = int({t|2t},0,x).
The operator ":=" is used to assign a value to a variable.
Instead of
f(x,y) = sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)
you may also write
f(x,y) = r:=sqrt(x^2+y^2), sin(r)/r.

Examples:
f(x) = next([x,x^2,1/x])
f(x) = next([-2,-1,1,2])*sin(x)
f(x) = next(-4:4)*sin(x)
If the graphs of the functions are not continuous,
to make them continous increase the number of points.
If a statement has to be evaluated only once, the statement has to
appear behind a semicolon. For example, there is a difference between
f(x) = r:=rand(0,1), x+r
and
f(x) = x+r; r:=rand(0,1).
The graphers in detail
Grapher for real functions
px: viewpoint, x-coordinate
py: viewpoint, y-coordinate
wx: width of the view
wy: height of the view
The x-interval of the view is
[px-wx, px+wx]
and the y-interval is
[py-wy, py+wy].
n: number of points in the interval
[px, px+wx]
a: parameter
d: distance (a:=a-d, a:=a+d)
b: parameter
d: distance (b:=b-d, b:=b+d)
Grapher for implicit functions
To draw two functions simultaneously, simply connect them with
a logical OR. An example is
x*y=1 | y=x.
Replacement of OR (|) with AND (&) results in an equation system.
It is also possible to draw inequalities, for example
abs(x)+abs(y)<1.
Grapher for solutions of differential equations
Write y1 instead of y' and y2 instead of y'' and so on.
Grapher for systems of two differential equations
We want to study the damped oscillator wich is defined by the
equation y''+0.2y'+sin(y)=0. Let v(x):=y'(x). Put in
y'(x)=v,
v'(x)=-0.2v-sin(y).
Now choose v(y) (phase space) instead of y(x). Put in
x0=0,
y(x0)=-10:10,
v(x0)=0.
Grapher for sequences
Recursion is possible. Take the recursive definition
f(n) = if n=0 then 1 else 2f(n-1)
as an example. This has to be written in the form
f(n) = if(n=0,1,2f(n-1)).
In the calculator line it is written in the form
p:=fix({f,n|if(n=0,1,2f(n-1))}).
The function fix will memoize the values. Define
fib:=fix({f,n|if(n=1|n=2,1,f(n-1)+f(n-2))}).
Now fib(40) will be calculated efficiently. Otherwise
the number of calculations would be in O(2^n).
The function sum(f,a,b) can be used to define a series.
The input for sum(from k=1 to n) 1/k is
f(n) = sum({k|1/k},1,n)
or also
f(n) = 1/n,
g(n) = sum(f,1,n).
Grapher for complex valued functions
Let us take the function f(x) = exp(i*x) as an example.
The real part is expressed with
f(x) = exp(i*x) or also with f(x) = re(exp(i*x)).
Analogously the the imaginary part is
g(x) = im(exp(i*x))
and the absolute value is
h(x) = abs(exp(i*x)).
Grapher for fractals
It is also possible to draw Julia sets.
For example put in f(z)=z^2-1 and z0=c.
r: out of bound radius
n: maximum number of iterations
Examples
Tangent line:
g(x) = diff(f,a)(x-a)+f(a)
Normal line:
h(x) = -1/diff(f,a)(x-a)+f(a)
Restriction of f to the interval (0,1):
g(x) = if(0<x&x<1,f(x),nan)
Function f on support (0,1):
g(x) = if(0<x&x<1,f(x),0)
g(x) = f(x)(x>0)(x<1)
Partial sum of the power series of the exponential function:
f(x) = sum({k|x^k/fac(k)},0,20)
Gamma function via parameter integral:
f(x) = int({t|t^(x-1)*exp(-t)},0,10)
Bifurcation diagramm for the logistic map:
f(x) = {r|pow({x|r*x*(1-x)},40,rand(0,1))}(x)
Mandelbrot set:
f(z) = {c|pow({z|z^2+c},10,0)}(z)
Newton fractal of x^3-1=0:
f(z) = pow({x|x-(x^3-1)/(3x^2)},10,z)
Click with the mouse in one of the basins to get the
corresponding root.
Table of prime numbers:
filter(isprime,1:100)
Count the number of primes:
count(isprime,1:100)
Twin primes:
filter({k|isprime(k)&(isprime(k+2)|isprime(k-2))},1:100)
Prime factorization of the numbers from 1 to 100:
table(factor,1:100)
Find cyclic multiplicative groups of integers:
filter({n|phi(n)=lambda(n)},1:100)
Continued fraction representation of the exponential function:
f(x) = 1+x/(1-reduce({t,k|x/k/(1+x/k-t)},rev(2:10)))
Interpolation polynomial of tanh:
f(x) = p(x); p:=ipp(table(tanh,-6:6))
Advanced
Defining functions
The calculator line is not just of use for calculating values,
but also for defining an arbitrary number of functions and
constants. For example, write the input
p:={x|2*x}
and press the calc-button.
Now p(x) is available everywhere.
To define the function permanently, add the line
evals("p:={x|2*x}");
to the end of the file "plot.js". If the function has to be
complex, add the line
evalsc("p:={x|2*x}");
to the end of the file "cplot.js" instead.
A function may be programmed in JavaScript to extend the list
of predefined functions. To achieve the function is available,
add the following code to the end of the file "plot.js".
function p(x){
return 2*x;
}
ftab.p=p;
Functions with two arguments
If you want to have the function p(x,y)=x*y, define p:={x,y|x*y}
in the calculator line and press the calc-button.
Alternatively define a function that takes a list instead.
So define in the calculator line p:={a|get(a,1)*get(a,2)}.
Therefore the function application is written p([x,y])
and not p(x,y).
Domain of a function
To draw the function f(x)=sin(x) only in the interval (0,2pi), write
f(x) = if(0<x&x<2pi,sin(x),nan).
The expression stands for
if 0<x and x<2pi, then sin(x), else not a number.
Solving equations
The equation f(x)=0 with f(x)=e^x+x^3-2x has to be solved. A plot
shows a zero of f in the interval [-2,-1] and that f is injective
in this interval. Therefore it is possible to draw the inverse
function with g(x)=inv(f,x,-2,-1). Now the zero is simply g(0).
To calculate the value, type g(0) in the calculator line.
Tables
To tabulate the function f(x)=x^2 on the intervall [0,4], write
table({x|x^2},0:4:0.1)
in the calculator line. The input is equivalent to
map({x|[x,x^2]},0:4:0.1).
Random numbers
Random numbers following a particular distribution are generated by
the inversion method. Firstly graph the function f(x) = inv(norm,x).
Now calculate f(rand(0,1)) in the calculator line. The results
are normal distributed random numbers. Now define
a:=map({k|f(rand(0,1))},1:1000).
The function g(x) = cdf(a,x) will show the cumulative distribution
function for the random numbers in the list a.
Colors
With color(r,g,b) a function can be drawn in another color.
Each of the values r,g,b goes from 0 to 255.
If a number is too big oder negative, it is restricted
to the intervall from 0 to 255.
For example, you can write
f(x) = sin(x), color(220,180,0).
Then the function will be drawn in yellow.
If bcolor(r,g,b) is calculated in the calculator line,
the background color of the canvas screen will be changed.
Number of pixels
If setw(1080) is calculated in the calculator line,
the width of the canvas screen will be increased to 1080 pixels.
The statement setw(w,h) will change width and height independently.
Coordinate system
The input of sp(x,y) (set position) in the calculator line
changes the origin of the coordinate system to the
pixel position (x,y).
In case there is a selection, "manual" has to be chosen.
Mouse
A click with the mouse on the canvas screen saves the
coordinates pointed to in the variables mx and my.
Thereafter it is possible to evaluate f(mx) in the calculator line.
Vertical lines
If the input is
f(x) = 1/(x-2)/(x-4); vline(2,4),
vertical lines at the points x=2 and x=4
will be drawn in addition to the graph.
Discontinuities
The example
f(x) = sgn(x); scatter([0,0]); box([0,1],[0,-1])
shows how to picture singular points and the absence of points.
A more complicated example:
f(x) = floor(x);
scatter(map({x|[x,x]},-6:6)),
box(map({x|[x+1,x]},-6:6))
Piecewise linear interpolation
Example:
f(x) = p(x); p:=fn([[0,0],[1,1],[2,0],[3,-1],[4,0]])
Piecewise linear interpolation, equidistant nodes
The last example has equidistant nodes. So one can use
a simpler algorithm. The usage is:
fn(x0,d,[y0,y1,y2,y3,...,yn])
That means, we have points:
[x0,y0], [x0+d,y1], [x0+2d,y2], [x0+3d,y3], ..., [x0+n*d,yn]
The last example simplifies to:
f(x) = p(x); p:=fn(0,1,[0,1,0,-1,0])
Linear regression
Let a be a list of points [x,y].
Now t:=rl(a) calculates a linear regression and we have:
y = t.ax*x+t.bx = t.ax*(x-t.mx)+t.my
x = t.ay*y+t.bx = t.ay*(y-t.my)+t.mx
t.mx: x mean
t.my: y mean
t.c: [t.mx,t.my] (center)
r: sample correlation coefficient
Example:
f(x) = p(x);
a:=[[0,0],[1,2],[2,1],[3,4],[4,3],[5,4]],
p:=fn(a), scatter(a), t:=rl(a), box(t.c)
g(x) = t.ax*x+t.bx
h(x) = (x-t.by)/t.ay
Saving images
The instruction save() generates an image of the canvas screen,
that can be saved. In some browsers the canvas screen
itself can be saved as an image. In this case, it is not necessary
to use save().
Animations
We want the amplitude of the sine function to swing between
-1 and 1. Define f(x) = r:=sin(a/10), r*sin(x). Now write ani() in
the calculator line and press the calc-button.
Closures
If you write {x;T(x)} instead of {x|T(x)}, a closure is created,
provied the anonymous function is contained in the term of another
anonymous function.
Let the continued fraction representation of the exponential
function serve as an example. Define
p:=compose(map({k|{t;x/k/(1+x/k-t)}},2:10))
in the calculator line and press the calc-button.
The approximation of the exponential function is
f(x) = 1+x/(1-p(0)).


jQuery Gridly
Gridly is a jQuery plugin to enable dragging and dropping as well as resizing on a grids. In the example below try tapping or dragging any of the bricks.
Example
Installation
To install download one of these packages and include the jquery.gridly.js and jquery.gridly.css files in your head with the following:

<link href="stylesheets/jquery.gridly.css" rel="stylesheet" type="text/css" />
Example
Setting up a gridly is easy. The following snippet is a good start:


Microsoft confirms it's been granted a licence to supply software to Huawei
At last, the licence fairies are delivering
by Chris MerrimanLAW-ABIDING TECH GIANT Microsoft has confirmed that it has been issued a licence allowing it to trade with Huawei.
The Windows maker had been amongst the US companies prevented from working with the Chinese manufacturer, which has been placed on the so-called "entity list" in the midst of the ongoing row over perceived links to the Chinese government.
Microsoft is one of the first companies to obtain such a licence, despite nearly 300 companies making applications, but it should at least give some hope to the others that licences are finally being issued.
In a statement to Bloomberg, it was confirmed that the US Department of Trade has begun issuing licences. They stated that some denials have been sent out, but equally, some licences have been issued.
The move will come as a huge relief all-round, but nowhere more so than in Huawei's MateBook department, which has already seen one model cancelled before launch in the US, amid fears that it wouldn't be able to keep an up-to-date version of Windows under the current restrictions.
Ealier this week, details began to leak about next years' MateBook devices, including its first 15in model. It wasn't clear exactly how Huawei planned to get around the Windows issue with these devices because although the company has dabbled in Linux versions, and has its own Harmony OS on the way, the real money is still in Windows devices - especially given the high-end nature of the Matebook range.
Microsoft is the first really big name to resolve its Huawei relationship, but the one we'll really be watching for is Google. Despite gaining massive plaudits for its Android phones, the ban means that the recent Mate 30 range was released without access to Google services, including the Play Store. It's only when that bit is settled that we'll really be sure that Huawei's Western business is saved. μ
Further reading
It looks like Huawei has a 15in MateBook on the way
- 20 Nov 2019
US gov grants Huawei another 90-day reprieve
- 19 Nov 2019
US will grant licences to trade with Huawei 'very shortly'
- 04 Nov 2019
Huawei will be allowed in 'non-contentious' parts of Blighty's 5G network
- 28 Oct 2019


[1]
cheap rate; poor repss
[2]
Free Long Distance; Free SMS; CHEAP Web; CDMA; Roaming Fees; No Windows Mobile Phones


Playbook Backward Compatibility
- The existing action parameters have been modified for the actions given below. Hence, it is requested to the end-user to please update their existing playbooks by re-inserting | modifying | deleting the corresponding action blocks or by providing appropriate values to these action parameters to ensure the correct functioning of the playbooks created on the earlier versions of the app.
- Upload File - 4 new action parameters 'filename', 'content', 'parent_message_ts' and 'filetype' are added which helps to add the file without specifying vault ID in 'file' parameter. The 'parent_message_ts' can be used to reply in the thread based on the timestamp of the parent message.
- Send Message - 2 new action parameters 'reply_broadcast' and 'parent_message_ts' are added which can be used to reply in the thread based on the timestamp of the parent message.
- New action 'Add Reaction' has been added. Hence, it is requested to the end-user to please update their existing playbooks by inserting the corresponding action blocks for this action on the earlier versions of the app.
Authentication
Phantom's Slack App needs a bot token to read messages from and post messages to slack channels. The app also needs a verification token to verify POST requests received from Slack.
Create a Slack App
Creating a Slack App is required to get the proper bot token for authenticating the Phantom Slack App. To do this, go to https://api.slack.com/apps in a browser, and select Create New App.
In the pop up window, give the app name and associate it with a Slack team/your Workspace, then click Create App.
On the next page, there is a Verification Token. This token will be needed during asset configuration.
In the menu bar on the left, select OAuth & Permissions. On that page, Scroll down to the Scopes section and click Add an OAuth Scope to add scopes to your Bot Token and User Token.
Next, click on Install App in the side bar. On that page, click Install to Workspace.
On the next page, click Allow.
After authorizing the app, the next window will show the app's authorization tokens. The Bot User OAuth Access Token and OAuth Access Token will be required during asset configuration.
Phantom Base URL
The app uses the Phantom Base URL configuration to generate links to actions, so please make sure a valid url is specified in the System Settings.
Phantom Slack Asset
Fill out the required values in the Asset Definition tab.
Fill out the Bot User OAuth Access Token, OAuth Access Token and Verification Token in the Asset Settings tab.
Click SAVE, you will be asked to fill in the Ingest Settings, select one of the labels from the drop-down or you can create a new one and Click SAVE.
After saving the asset, go back to the Asset Settings tab. There will now be a box labeled POST incoming for Slack to this location. This URL will be used later when configuring Slack's Interactive Messages functionality.
Automation User
The Slack app needs a Phantom authentication token to perform some tasks on the Phantom platform. To get this token, it is recommended that you create a new automation user. The steps for creating this user are as follows:
- On the Phantom platform, navigate to Administration->User Management
- Under Users, click + USER
- In the Add User wizard, do the following:
- Set the User Type to Automation
- Give the user a Username like "Slack Automation"
- Set Allowed IPs to <IP_ADDRESS>
- Set the Default Label to the label seen in the Slack asset's Ingest Settings
- Under Roles, in addition to the default Automation role, add the Observer role
- Click CREATE
- Once the new user is created, click on the user in the user list
- On the user's page copy the ph-auth-token field from the Authorization Configuration for REST API box
- Paste the copied token in the Automation User Auth Token on the Slack app's Asset Settings page
Test Connectivity
Now, on the Asset Settings page, click the TEST CONNECTIVITY button, which will display a text box with progress messages. It will show the bot username and bot user ID that Phantom received from Slack. Please ensure that these are correct.
Interactive Messages
In order for Phantom to receive responses to questions from Slack, the functionality needs to be configured. But first, you will need to create a user to allow Slack to authenticate with Phantom (This user is separate from the automation user created above).
Navigate back to the Users tab in Administration, and click on + USER.
In the pop-up window, select the User Type Local. Fill out the required username and password fields. For security reasons DO NOT give the user any roles. This user should only be used to authenticate POST requests from Slack to Phantom.
Set up Interactivity in Slack
Go to the Your apps option in Slack. From the menu on the left select the Interactivity & Shortcuts option.
NOTE: Slack will only send POST requests to endpoints that have an SSL certificate signed by a certificate authority.
Once on this page, toggle on Interactivity.
In the Request URL text box, add the POST incoming for Slack to this location URL found in the Asset Settings window. Before saving these changes, add the username and password of the new user added to Phantom. The URL should end up in the format:
https://<username>:<password>@<phantom_hostname>/rest/handler/slack_3ac26c7f-baa4-4583-86ff-5aac82778a86/slack
After adding the full URL, click Enable Interactive Messages
Slack Bot
Ingest Settings
To run the Phantom SlackBot that will get Phantom to take commands from Slack, ingestion needs to be enabled on the Phantom Slack Asset. To do this go back to the INGEST SETTINGS tab and enable polling and specify the Polling interval as 10 minutes. The "Label to apply to objects from this source" setting is ignored by this app, so it can be set to anything.
To check the status of the phantom bot and restart it if not running, you can Click POLL NOW from the INGEST SETTINGS app and then POLL NOW again. The "Source ID", "Maximum containers", and "Maximum artifacts" settings can be ignored in this case.
The POLL NOW window will display the PID of the SlackBot process as well as the number of artifacts and containers ingested (which will always be zero for this app).
Stopping SlackBot
Once the Phantom SlackBot starts running, the stop bot action needs to be run to stop it. Simply disabling ingestion won't stop SlackBot.
WARNING: Stopping SlackBot is required before upgrading or uninstalling the Phantom Slack App or else an untracked SlackBot process may be left running on the Phantom instance. In addition, deleting a Slack asset that has SlackBot running will result in SlackBot continuing to run, untracked.
Slack Commands
Once a Slack asset has been configured, and SlackBot is running on Phantom, it needs to be invited to the channel, and then commands from Slack can be received by Phantom. In Slack, just mention the bot to get a help message on running commands. All commands follow this syntax:
@BOT_NAME COMMAND COMMAND_PARAMETERS
Running Actions
To run an action on Phantom from Slack, use the act command. The syntax of which is:
@BOT_NAME act ACTION_NAME [--container CONTAINER_ID] [--asset ASSET] [--name NAME]
[--type TYPE] [--parameters PARAMETER:VALUE [PARAMETER:VALUE]*]
required parameters:
ACTION_NAME The name of the action to run on Phantom
--container ID of the container to run the action on
optional parameters:
--name Set a name for the action (defaults to 'Slack generated action')
--type Set the type of the action (defaults to 'phantombot')
--asset Name or ID of the asset to run the action on
If no asset is specified, the given action will run on all possible assets
--parameters List of parameter/value pairs in the format
param1:value1 param2:value2...
examples:
To run the action "list channels" on container 123 using the "slack" asset:
@phantombot act "list channels" --container 123 --asset slack
To run the action "whois ip" on <IP_ADDRESS> using the "whois" asset:
@phantombot act "whois ip" --container 123 --asset whois --parameters ip:<IP_ADDRESS>
To run all possible "whois ip" actions on <IP_ADDRESS> using all assets that support the action, and giving it the name "All WhoIs":
@phantombot act "whois ip" --container 123 --parameters ip:<IP_ADDRESS> --name "All WhoIs"
After receiving an act command, SlackBot will kick off the action and send a link to the action page to Slack. When the action is complete, SlackBot will send a summary of the action results to Slack. If multiple actions are run at once, SlackBot will send action results for each action separately as each action completes.
Running Playbooks
To run a playbook on Phantom from Slack, use the run_playbook command. The syntax of which is:
@BOT_NAME run_playbook [--repo REPO] PLAYBOOK CONTAINER_ID
required parameters:
PLAYBOOK Name or ID of the playbook to run
CONTAINER_ID ID of container to run the playbook on
optional parameters:
--repo REPO Name of the repo the playbook is in (required if the
playbook argument is a name and not an ID)"
examples:
To run the playbook "investigate" which is in the "community" repo, on container 123
@phantombot run_playbook --repo community investigate 123
To run the playbook with ID 32 on container 123:
@phantombot run_playbook 32 123
After receiving a run_playbook command, SlackBot will kick off the playbook and send a link to the container's mission control page to slack. When the playbook has finished running, SlackBot will send a status report of the playbook's run to Slack.
Getting Container Information
To get information about a container, use the get_container command. The syntax of which is:
@BOT_NAME get_container [--container CONTAINER] [--tags TAG [TAG]*]
parameters:
--container ID of the container to retrieve
--tags List of tags of containers to retrieve
Only one of --container or --tags flags can be included at once
Using the --tags flag will return a small summary of containers with the given tag.
examples:
To get information on container 123:
@phantombot get_container 123
To get a list of containers with the tag "my_tag"
@phantombot get_container --tags my_tag
To get a list of containers with one of the following tags: "tag1" "tag2" or "tag3"
@phantombot get_container --tags tag1 tag2 tag3
Running a get_container command will result in SlackBot sending either a list of containers or a set of information on one container to Slack.
Listing Actions or Containers
To get a list of actions or containers, use the list command. The syntax of which is:
@BOT_NAME list [actions|containers]
parameters:
object name of an object to list can be 'actions' or 'containers'
WARNING: If there are many containers on the system, the 'list containers' command can take a long time and can result in a lot of data being dumped on Slack
examples:
To get a list of all actions on the Phantom instance:
@phantombot list actions
To get a list of all containers on the Phantom instance:
@phantombot list containers
Running a list command will result in SlackBot sending a list of either actions or containers to Slack.


Quick tutorial
This tutorial is probably your first touch with JointJS library. It shows you how to create a simple Finite State Machine diagram. At the end of this tutorial you can also find a popular "Hello world" program.
Getting started
Scripts:
- raphael-min.js: Raphaël library, provides cross browser abstract layer for rendering vector objects.
- joint.js: Joint library core.
- joint.dia.js: Joint diagramming library core, provides abstraction for diagrams elements. (necessary for diagram plugins, see below)
- joint.dia.fsa.js: Finite state machine diagram plugin.
Example: To create a Finite state machine diagram, put these scripts into your document's header:

Or alternatively you can use the standalone package provided which includes both
Joint and Joint.dia libraries, all plugins and Raphaël library, all in one file.

Then you have to create a holder for your diagram.

Once you have the holder created, you have to initialize diagram paper.
Joint.paper("myfsa", 1000, 200); /*(id or HTMLElement, width, height)*/
Creating your first Finite State Machine diagram
Each kind of diagram is implemented as a separate plugin. FSA plugin contains elements such as State, StartState, EndState and definition of the arrow suitable for FSA diagrams Joint.dia.fsa.arrow. Concrete elements are created using create method. This method takes as an argument object containing all necessary parameters for the element. (for list of all options, see FSA plugin API)
var s0 = fsa.StartState.create({ position: {x: 50, y: 50} });
var se = fsa.EndState.create({ position: {x: 450, y: 150} });
var s1 = fsa.State.create({ position: {x: 120, y: 120}, label: "state 1" });
var s2 = fsa.State.create({ position: {x: 300, y: 50}, label: "state 2" });
Joint library provides API for creating your own arrows which reside both connection ends. Usually, diagram plugins should provide arrows specific for diagrams they implement. Connections can register objects to which they can stick. You can also refine what connection end you want to stick to what object. For normal purposes (especially FSA diagrams) it is a good practice to create an array which holds all the diagram elements. Note the usage of registerForever() method. The difference between register() and registerForever is that the latter stores a reference to the array object provided as the only argument. That means that all elements added later to the array are registered as well.
var all = [s0, s1, s2, se];
s0.joint(s1, fsa.arrow).registerForever(all);
s1.joint(s2, fsa.arrow).registerForever(all);
s2.joint(se, fsa.arrow).registerForever(all);
The final diagram is by default interactive. You can drag arrows, break connections and move states:
Hello world!
Joint library is independent of diagram plugins. It means that it can be used on its own for connecting vector objects created by Raphaël library. This is useful if you just want a functionality of connecting vector objects together. Connections as well as arrows and behavior is fully customizable. For more details, see Joint library API.

</>


Bluetooth
Bluetooth
Visibility
Device name
Devices
Settings application will be launched in order to change state of the Bluetooth.
Settings application will be launched in order to change visibility of the device.
Devices
Device info
Device name
Device status
Device type
Device address
Pair
Pairing...
Unpair
Unpairing...
Send file
Sending file...


| YARN-5444 |
Fix failing unit tests in TestLinuxContainerExecutorWithMocks |
Major |
nodemanager |
Yufei Gu |
Yufei Gu |
| MAPREDUCE-6808 |
Log map attempts as part of shuffle handler audit log |
Major |
. |
Jonathan Eagles |
Gergő Pásztor |
| HADOOP-14578 |
Bind IPC connections to kerberos UPN host for proxy users |
Major |
ipc |
Daryn Sharp |
Daryn Sharp |
| HADOOP-14677 |
mvn clean compile fails |
Major |
build |
Andras Bokor |
Andras Bokor |
| HADOOP-14702 |
Fix formatting issue and regression caused by conversion from APT to Markdown |
Minor |
documentation |
Doris Gu |
Doris Gu |
| YARN-6965 |
Duplicate instantiation in FairSchedulerQueueInfo |
Minor |
fairscheduler |
Masahiro Tanaka |
Masahiro Tanaka |
| HDFS-11738 |
Hedged pread takes more time when block moved from initial locations |
Major |
hdfs-client |
Vinayakumar B |
Vinayakumar B |
| HDFS-12318 |
Fix IOException condition for openInfo in DFSInputStream |
Major |
. |
legend |
legend |
| HDFS-12336 |
Listing encryption zones still fails when deleted EZ is not a direct child of snapshottable directory |
Minor |
encryption, hdfs |
Wellington Chevreuil |
Wellington Chevreuil |
| MAPREDUCE-6931 |
Remove TestDFSIO “Total Throughput” calculation |
Critical |
benchmarks, test |
Dennis Huo |
Dennis Huo |
| YARN-7116 |
CapacityScheduler Web UI: Queue’s AM usage is always show on per-user’s AM usage. |
Major |
capacity scheduler, webapp |
Wangda Tan |
Wangda Tan |
| HADOOP-14824 |
Update ADLS SDK to 2.2.2 for MSI fix |
Major |
fs/adl |
Atul Sikaria |
Atul Sikaria |
| YARN-7120 |
CapacitySchedulerPage NPE in “Aggregate scheduler counts” section |
Minor |
. |
Eric Payne |
Eric Payne |
| YARN-7164 |
TestAMRMClientOnRMRestart fails sporadically with bind address in use |
Major |
test |
Jason Lowe |
Jason Lowe |
| HDFS-12369 |
Edit log corruption due to hard lease recovery of not-closed file which has snapshots |
Major |
namenode |
Xiao Chen |
Xiao Chen |
| HADOOP-14867 |
Update HDFS Federation setup document, for incorrect property name for secondary name node http address |
Major |
. |
Bharat Viswanadham |
Bharat Viswanadham |
| YARN-4727 |
Unable to override the $HADOOP_CONF_DIR env variable for container |
Major |
nodemanager |
Terence Yim |
Jason Lowe |
| MAPREDUCE-6957 |
shuffle hangs after a node manager connection timeout |
Major |
mrv2 |
Jooseong Kim |
Jooseong Kim |
| HDFS-12424 |
Datatable sorting on the Datanode Information page in the Namenode UI is broken |
Major |
. |
Shawna Martell |
Shawna Martell |
| HDFS-12323 |
NameNode terminates after full GC thinking QJM unresponsive if full GC is much longer than timeout |
Major |
namenode, qjm |
Erik Krogen |
Erik Krogen |
| MAPREDUCE-6960 |
Shuffle Handler prints disk error stack traces for every read failure. |
Major |
. |
Kuhu Shukla |
Kuhu Shukla |
| HDFS-11799 |
Introduce a config to allow setting up write pipeline with fewer nodes than replication factor |
Major |
. |
Yongjun Zhang |
Brahma Reddy Battula |
| YARN-6771 |
Use classloader inside configuration class to make new classes |
Major |
. |
Jongyoul Lee |
Jongyoul Lee |
| HDFS-12526 |
FSDirectory should use Time.monotonicNow for durations |
Minor |
. |
Chetna Chaudhari |
Bharat Viswanadham |
| HDFS-12371 |
“BlockVerificationFailures” and “BlocksVerified” show up as 0 in Datanode JMX |
Major |
metrics |
Sai Nukavarapu |
Hanisha Koneru |
| MAPREDUCE-6966 |
DistSum should use Time.monotonicNow for measuring durations |
Minor |
. |
Chetna Chaudhari |
Chetna Chaudhari |
| HDFS-12531 |
Fix conflict in the javadoc of UnderReplicatedBlocks.java in branch-2 |
Minor |
documentation |
Akira Ajisaka |
Bharat Viswanadham |
| HDFS-12495 |
TestPendingInvalidateBlock#testPendingDeleteUnknownBlocks fails intermittently |
Major |
. |
Eric Badger |
Eric Badger |
| HADOOP-14891 |
Remove references to Guava Objects.toStringHelper |
Major |
. |
Jonathan Eagles |
Jonathan Eagles |
| HADOOP-14902 |
LoadGenerator#genFile write close timing is incorrectly calculated |
Major |
fs |
Jason Lowe |
Hanisha Koneru |
| YARN-7084 |
TestSchedulingMonitor#testRMStarts fails sporadically |
Major |
. |
Jason Lowe |
Jason Lowe |
| YARN-7226 |
Whitelisted variables do not support delayed variable expansion |
Major |
nodemanager |
Jason Lowe |
Jason Lowe |
| YARN-7285 |
ContainerExecutor always launches with priorities due to yarn-default property |
Minor |
nodemanager |
Jason Lowe |
Jason Lowe |
| YARN-7245 |
Max AM Resource column in Active Users Info section of Capacity Scheduler UI page should be updated per-user |
Major |
capacity scheduler, yarn |
Eric Payne |
Eric Payne |
| HADOOP-14912 |
FairCallQueue may defer servicing calls |
Major |
ipc |
Daryn Sharp |
Daryn Sharp |
| HDFS-12659 |
Update TestDeadDatanode#testNonDFSUsedONDeadNodeReReg to increase heartbeat recheck interval |
Minor |
. |
Ajay Kumar |
Ajay Kumar |
| HDFS-12485 |
expunge may fail to remove trash from encryption zone |
Major |
. |
Wei-Chiu Chuang |
Wei-Chiu Chuang |
| YARN-7333 |
container-executor fails to remove entries from a directory that is not writable or executable |
Critical |
. |
Jason Lowe |
Jason Lowe |
| HADOOP-14966 |
Handle JDK-8071638 for hadoop-common |
Blocker |
. |
Bibin A Chundatt |
Bibin A Chundatt |
| HDFS-9914 |
Fix configurable WebhDFS connect/read timeout |
Blocker |
hdfs-client, webhdfs |
Xiaoyu Yao |
Xiaoyu Yao |
| YARN-7244 |
ShuffleHandler is not aware of disks that are added |
Major |
. |
Kuhu Shukla |
Kuhu Shukla |
| HADOOP-14990 |
Clean up jdiff xml files added for 2.8.2 release |
Blocker |
. |
Subru Krishnan |
Junping Du |
| HADOOP-14919 |
BZip2 drops records when reading data in splits |
Critical |
. |
Aki Tanaka |
Jason Lowe |
| YARN-7370 |
Preemption properties should be refreshable |
Major |
capacity scheduler, scheduler preemption |
Eric Payne |
Gergely Novák |
| YARN-7361 |
Improve the docker container runtime documentation |
Major |
. |
Shane Kumpf |
Shane Kumpf |
| YARN-7469 |
Capacity Scheduler Intra-queue preemption: User can starve if newest app is exactly at user limit |
Major |
capacity scheduler, yarn |
Eric Payne |
Eric Payne |
| HADOOP-15047 |
Python is required for -Preleasedoc but not documented in branch-2.8 |
Major |
build, documentation |
Akira Ajisaka |
Bharat Viswanadham |
| YARN-7496 |
CS Intra-queue preemption user-limit calculations are not in line with LeafQueue user-limit calculations |
Major |
. |
Eric Payne |
Eric Payne |
| HDFS-12832 |
INode.getFullPathName may throw ArrayIndexOutOfBoundsException lead to NameNode exit |
Critical |
namenode |
DENG FEI |
Konstantin Shvachko |
| HDFS-12638 |
Delete copy-on-truncate block along with the original block, when deleting a file being truncated |
Blocker |
hdfs |
Jiandan Yang |
Konstantin Shvachko |


|
tgbot-cpp
|
Functions | |
| bool | startsWith (const std::string &str1, const std::string &str2) |
| bool | endsWith (const std::string &str1, const std::string &str2) |
| void | split (const std::string &str, char delimiter, std::vector< std::string > &dest) |
| std::string | generateRandomString (size_t length) |
| std::string | urlEncode (const std::string &value, const std::string &additionalLegitChars="") |
| std::string | urlDecode (const std::string &value) |
| std::vector< std::string > | split (const std::string &str, char delimiter) |
| bool StringTools::endsWith | ( | const std::string & | str1, |
| const std::string & | str2 | ||
| ) |
Checks if first string is ending with second string
| str1 | First string |
| str2 | Second string |
| std::string StringTools::generateRandomString | ( | size_t | length | ) |
Generates pseudo random string. It's recommended to call srand before this method.
| length | Length of resulting string. |
| void StringTools::split | ( | const std::string & | str, |
| char | delimiter, | ||
| std::vector< std::string > & | dest | ||
| ) |
Splits string to smaller substrings which have between them a delimiter. Resulting substrings won't have delimiter.
| str | Source string |
| delimiter | Delimiter |
| dest | Array to which substrings will be saved. |
|
inline |
Splits string to smaller substrings which have between them a delimiter. Resulting substrings won't have delimiter.
| str | Source string |
| delimiter | Delimiter |
Definition at line 84 of file StringTools.h.
| bool StringTools::startsWith | ( | const std::string & | str1, |
| const std::string & | str2 | ||
| ) |
Checks if first string is starting with second string
| str1 | First string |
| str2 | Second string |
| std::string StringTools::urlDecode | ( | const std::string & | value | ) |
Performs url decode.
| value | Encoded url string |
| std::string StringTools::urlEncode | ( | const std::string & | value, |
| const std::string & | additionalLegitChars = "" |
||
| ) |
Performs url encode.
| value | Source url string |
| additionalLegitChars | Optional. String of chars which will be not encoded in source url string. |


{% extends 'common/templates/base_single.html' %} {% load nonce %} {% block title %}Authorize {{oauth_consumer_ref.app_name}}{% endblock %} {% block content %}
{{oauth_consumer_ref.app_name}} would like to {{perms_pretty}} your posts. If you agree, {{oauth_consumer_ref.app_name}} will be able to access and update your posts until you tell us otherwise.


Canadian women climb to No. 3 in latest World Rugby rankings
by The Canadian Press, StaffTORONTO -- Helped by a pair of wins over the U.S., Canada has moved up one spot to No. 3 in World Rugby women's rankings.
The Americans dropped one place to sixth after the 19-0 and 52-7 losses to Canada in California.
New Zealand remains atop the standings, followed by England. Canada, meanwhile, returned to third for the first time since June.
France fell one rung to fourth while Australia moved past the Americans into fifth. The rest of the top 10 was unchanged with Italy seventh followed by Wales, Spain and Ireland.
Japan was a big mover, climbing 15 places to a career-high No. 12 after drawing Italy 17-17 and beating Scotland 24-20.
The Canadian men are ranked 22nd in the world.
This report by The Canadian Press was first published Nov. 25, 2019.


This is a sample page, to demonstrate the types of things you can put in your markdown file. The source of this page is here.
Let's add a div with a gray background:


Crunch time! Your interactive prototypes have to be ready for user testing by the end of this week.
By the end of this week your interactive prototypes should be fully functional. Use the JSON and handlebars techniques that you learned in lab (or equivalent technology) to populate the data for your application. Remember, we are not at the "making it pretty" phase yet, so don't procrastinate by playing with Photoshop. If you planned it out right and you have been doing your work, you should be in good shape. If not, it's time to step it up. You will get much less out of user testing if you are still struggling with bugs and a half finished interface.
Keep updating your development plan. You'll submit it again this week. (If you'd like to give yourself the option of "late days", set an early deadline so your schedule has some flexibility.)
Here is an example of a pretty good development plan (except that it's missing time estimates).
GradeSource++: This example project from last year abstracts GradeSource for you and works with the data to show you where you are in a class.
Balancr: This app helps people balance their time between work and play. They have done a wonderful job making the app functional-- you can create a sign-up, add activities, and see it reflected on the pie chart.
Note: since we may grade your assignment up to a few days after submission, per the honor code, we expect that the prototype URL show the state of your prototype at the time of submission. You will very likely be updating your prototype after submission, but please do so on another version.
| Category | Nope | Adequacy | Proficiency | Mastery |
|---|---|---|---|---|
| Functionality 3 points |
0: No pages are connected and interactive. | 1: Prototype lacks a lot of features or has many bugs. | 2: Prototype is mostly complete but may still lack one or two features. | 3: Prototype is completely functional and ready for user testing. While not completely polished, the overall look and feel is reflective of the final prototype. |
| Data/Templates 2 points |
0: No data customization. | 1: Data customization (e.g., JSON/Handlebars) in key places. | 2: Pervasive data customization and templating. All major functionality is templated rather than copied & pasted. | |
| Mobile Design 3 points |
0: Prototype is not designed for a mobile form factor. | 1: Minimal attempt to design the prototype for a mobile form factor. | 2: Prototype is somewhat designed for a mobile form factor. | 3: The prototype's information architecture is well-tuned for a mobile form factor. |
| Goals 3 points |
0: No goals were met. | 1: Only a few goals were met. | 2: Most, but not all, of the goals were met. | 3: All goals were met. |
| Updated Development Plan 3 points |
0: No updates to plan. | 1: Plan reflects some minor changes. | 2: Plan is mostly updated, but is lacking some detail or deadlines seem unreasonable. | 3: Plan is detailed and reflects progress, new tasks, and any changes to previous tasks. |
Github Repo 1 point. |
Github Repo URL present. | |||
Outside the Box 1 point. Up to 5% of submissions. |
Your prototype is amazing and the TAs are extremely impressed with how complete it is. Not only is everything working, you have either solved an incredibly difficult engineering problem or you have introduced an extremely unique design. Your prototype shows thought and care. You should turn your app into a start-up or at least bring it to market. |


Hi, enter your IMDB ID below and your list of unseen movies from the Top 250 movie list at IMDB will be fetched. The list is a list with all the top 250 movies you have not rated. Your ID should be on the form ur00000000. You can find it in the url on your profile page. Using usernames are in the making and will soon be available.
| # | Title | Rating | Year | Links |
|---|---|---|---|---|
| {{movie.rank}} | {{movie.title}} | {{movie.rating}} | {{movie.year}} | IMDB |


Developer’s guide¶
This document is intended to explain and document style and implementation choices made in the library.  (Though there might of course be explicitly made decisions that nevertheless turn out to be stupid).
This document is organized like the library, with individual modules/sub-modules/functions each having their own section. For completeness, everything in the library should have a section here, even if that section is empty. Since ideally the reasoning behind most things would be clear from documentation/code, this document serves merely as a “last resort” of kinds. For all those things that the user doesn’t get to have an opinion on, but where it might be relevant for devs to know the reasoning.
### Side note: workflow
While python of course does not have to be compiled, there is a Makefile for
this library. This can be used to run the tests and check for code coverage,
compile this Developer’s guide into a pdf, and build the documentation.
Recommended use is to either run make all
whenever you change anything, or,
if you need the output some other place, adapt the DUMPPATH
in the Makefile
and run make myall
.
tracklib¶
Docstring notation: use double backticks (``) around code expressions (actual examples go into doctest blocks!), single backticks (`) around any single identifier (module names, functions, attributes, …), and the construction `!var` for identifiers that Sphinx should not attempt to generate links for (such as np.ndarray, keyword arguments, etc.)
trajectory¶
### Trajectory The main purpose of this class is to provide a common type for trajectories of all kinds, with differing spatial dimension or number of loci. The main functionality of the base class are the modifier functions (abs, diff, relative, …) that can be used to perform standard processing tasks.
Any specific trajectory will be of a subclass of Trajectory, such that functionality that is specific to say two-locus trajectories in three dimensions can be implemented. It is unlikely that this will find use, but the specializations depending on either number of loci or spatial dimensions prove to be useful.
The plotting functions might undergo review at some point.
We chose to base this library on constant framerate trajectories, because some analysis methods (e.g. MSD) do not work as well with freely spaced trajectories.
> Currently the paradigm concerning the actual data is to try and avoid ever > having to directly access it from outside the class. This leads to > complications (see []-operator), so maybe we should move away from it? It is > mostly a style question…
EDIT: Resorted to accepting some direct access to the data. The new paradigm: for everything that requires the (N, T, d) shape, you can just as well access Trajectory.data directly. Most of the time, the []-operator will probably be preferred anyways.
#### fromArray()
#### N, T, d
#### __len__()
#### __getitem__()
When providing element access, do we return a three dimensional array, or do we
squeeze it (remove single entry dimensions)? There are arguments for both: on
the one hand, keeping dimensionality definite means that we know exactly what
to expect from the []-operator.
After some deliberation, the best solution seems to be to squeeze the N and T dimensions, but leave d as it is. When processing trajectories we usually will know (or check) N, and what happens to T is determined by the user-provided slice. We do for the most part want to write analysis methods that are agnostic to d, so polymorphism seems useful here. The only problem with this solution is that for some “naturally 1d” trajectories (such as absolute distances between loci) it might be annoying to carry that extra dimension. I deem the polymorphism argument to be stronger though.
#### Modifiers: abs, diff, relative, dims
Note that fromArray() already copies the array passed to it, so there’s no need
to do that explicity. Otherwise, the key for these functions is that they’re
chainable:
`
traj_processd = traj.relative().abs().diff()
`
(or something like that).
#### #yield_dims() More of a sketch of an idea. Would it be useful to have something like this?
#### plot_vstime()
#### plot_spatial() What exactly to do here depends on N and d, but independently. This is thus implemented in Trajectory_?d, calling the ‘raw’ plotting function in Trajectory_?N.
### N12Error This special exception might be useful if there were more use cases for it, which might happen as the library grows. Right now it’s a bit pointless.
taggedset¶
### TaggedSet The idea here is a many-to-many dict: have a bunch of data that can belong to one or more subsets of the whole data set. Of course one subset will usually also contain more than one datum, thus many-to-many. It is very natural to then select some of these subsets for processing. For practically all purposes the class will then behave as if it contained only those data in the current selection. The idea for usage is thus: load all data whatsoever into one TaggedSet object, then work with subsets of this.
Interfaces: this class actually does implement the Sequence interface,
implicitly. We do not implement the Set/MutableSet interface though, because
dealing with copy operations would be tricky: we want __iter__
to return just
the data, no tags, but the Set functions assume that iterating through the Set
gives full information. Apart from that the functionality added by
Set/MutableSet (comparisons and set operations) is not particularly relevant to
this class, so we resort to implementing just the &= operator by hand, because
it’s useful. Note that mergein()
has slightly more functionality though.
#### makeTagsSet()
#### add()
#### __iter__(), __call__()
#### __len__()
#### __getitem__()
#### makeSelection(), refineSelection()
The default value for logic
is debatable. Depending on how the class is used,
any
or all
can make more sense.
#### saveSelection(), restoreSelection()
Need the copying to prevent accidentally giving away access to
self._selection
.
#### copySelection() Should be mostly unnecessary (see the paradigm about using just one data set above), but who knows.
#### mergein(), __iand__()
#### addTags(), tagset()
#### filter(), process()
#### map_unique()
clean¶
#### split_trajectory_at_big_steps() It might make sense to expand the capabilities of this function to N=2 (TODO)
#### split_dataset_at_big_steps()
load¶
#### evalSPT() Maybe generalize this to generic text files? Though having this module organized by file type should be very handy.
util.mcmc¶
### Sampler
#### propose_update(), logL(), callback_logging()
Note that self.stepsize
will only be set in run()
. That means that if it is
used in these overridden methods, they won’t run outside of the sampler. This
seems to be reasonable, so is not considered a bug.
#### configure() We choose this implementation over e.g. passing a dict to run(), because it is clearer / easier to document. While this might sound like a non-reason, it does imply that this way usage will be clearer. For example it makes it a bit harder to reuse this config dict somewhere else (because we do not allow additional entries), such that we avoid giant, undocumentable config messes.
#### run() Returns logL at all steps (not just after burn in), because we mostly need the likelihood history to check convergence, which ideally happens during burn in.
util.util¶
Currently just a graveyard, might be deprecated.
models.rouse¶
Likelihood is implemented as an individual function instead of a method mainly for a conceptual reason: the likelihood gives a “score” for a combination of (trace, looptrace, model). There is no reason why one of these should be preferred, so it makes more sense to have the likelihood separately, rather than integrating it into Model.
### Model Note the two different modes for dynamics: propagate() propagates an ensemble (mean + covariance/sem), while evolve() evolves an explicit conformation.
#### __eq__, __repr__
#### give_matrices()
#### setup_dynamics()
#### check_setup_called()
#### _propagate_ode() Careful with integrators: the three Runge-Kutta integrators ‘RK45’, ‘RK23’, and ‘DOP853’ were seen to give covariance matrices with negative eigenvalues. This was not observed for ‘Radau’, ‘BDF’, ‘LSODA’, of which ‘LSODA’ seemed to be the fastest.
#### _propagate_exp()
#### propagate()
#### conf_ss()
#### evolve()
#### conformations_from_looptrace()
### likelihood It is a bit unclear, where the parameters for the measurement process should be stored. For now, we decided to shove the measurement vector into the model, while the localization error stays separate / goes into Trajectory.meta. There might be better solutions.
#### _likelihood_filter()
The if noise == 0
block is nonsense. I haven’t found a good way of dealing
with zero noise in this method yet.
#### _likelihood_direct()
models.statgauss¶
#### sampleMSD subtractMean: is it possible to incorporate finite-size effects here? (for a finite trajectory, the mean actually shouldn’t be zero exactly, but follow some distribution that is tightly peaked around zero; is this independent of the displacements?)
#### dataset
#### control Should this be merged with dataset somehow? They perform very similar tasks.
analysis.kld¶
#### perezcruz() Need to update: incorporate parity (due to library restructuring)
analysis.kli¶
#### traj_likelihood()
### LoopSequence
#### toLooptrace(), fromLooptrace()
#### numLoops()
#### plottable()
### LoopSequenceMCMC The trick with copying attributes from the parent class is supposed to make Sphinx recognize these and print the docstring. Should be removed if it screws up anything important.
In the other direction, we do not want propopse_update() and logL() to show up in the documentation, because the user should not interact with them. Thus we simply set the docstring to the empty string.
#### setup()
#### propose_update()
#### logL()
### LoopTraceMCMC
#### propose_update
#### logL
analysis.plots¶
#### length_distribution()
#### msd_overview()
#### trajectories_spatial()
#### distance_distribution()
tests¶
Not strictly part of the library, but here are notes on the tests/test.py script:
For analysis methods it is difficult to check quantitative correctness (will maybe come at some point, with example data). For now, we mostly just check that all the code runs and passes some basic consistency checks.


Play Audio
Basic use:
- Bookmark it
- Visit a page that links to audio files
- Click the bookmarklet
Features:
- Play/pause
- Prev/Next
- Random
- Click any song in the playlist to play it
- Click a point along the progressbar to skip ahead/back
-
On Android devices:
- Player controls are available via a Media Notification.
- So the player can run in the background and be controled without returning to the browser tab.
- As a result, the player can also be controlled via connected devices with media controls or notification sync (Headphones, smartwatches, etc...)
-
If no audio files are detected when the bookmarklet is clicked:
- A prompt will appear with an input.
- Enter the type of audio you would like to find, and click 'ok'.
- A custom Google search will return pages containing audio links and the search term.
- Visit one of the pages from the Google search.
- Click the bookmarklet
If it doesn't work:
- Refresh the page (without using the bookmarklet) and test the links to audio files.
- Clicking one of these links should play it in the browser's default audio player.
- If it does something else (doesnt play, loads another webpage, initiates a download, etc...), then this page will not work.
- If the links do play in the browser, but the boomarklet still doesnt work, it is probably my fault.
Support:
I have tested in Chrome on Mac, Android, and Chromebook. That is all.


DHS ZINC- pyrithione zinc shampoo
Person and Covey
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
WARNINGS AND PRECAUTIONS
For external use only. Ask a physician before use if you have Psoriasis or Seborrheic Dermatitis that covers a large area of the body. Do not get into eyes. If contact occurs, rinse eyes thoroughly with water. Stop use and ask a physician if condition worsens or does not improve after regular use.
Dosage and Administration
Shake well before using. Wet hair thoroughly. Apply a liberal amount of shampoo and massage into a rich lather. Allow lather to remain on scalp for several minutes. Rinse hair well and repeat application. For best results use at least twice a week or as directed by a physician.
Indications and Use
Helps prevent recurrence of scalp itching and flaking associated with Seborrheic Dermatitis and Dandruff.
OTC - KEEP OUT OF REACH OF CHILDREN
Yes. If swallowed, get medical help or contact a Poison Control Center right away.
PURPOSE
Recommended for control of Dandruff of Seborrheic Dermatitis
INACTIVE INGREDIENTS
Purified Water
TEA Lauryl Sulfate
Cocamidopropyl Hydroxysultaine
Sodium Chloride
PEG 8 Distearate
Methocel E4M Premium
Veegum
Herbal Bouquet No. 1751 Perfume
FD&C Yellow No.6
Active Ingredient
pyrithione zinc
PACKAGE LABEL.PRINCIPAL DISPLAY PANEL
DHS Zinc 8oz.jpg
PACKAGE LABEL.PRINCIPAL DISPLAY PANEL
DHS Zinc 16oz.jpg


Tamagottawalk Timer
One 20-minute brisk walk per day will boost you from the deadly "inactive" category.


Two Wordpress Plugins I've Started Using
1 min read
Remove Query Strings From Static Resources
This plugin will remove any query strings from static resources like CSS & JS files, and will improve your speed scores in services like PageSpeed, YSlow, Pingdoom and GTmetrix.
Resources with a “?” or “&” in the URL are not cached by some proxy caching servers, and moving the query string and encode the parameters into the URL will increase your WordPress site performance grade significant.
This plugin creates static html files from your dynamic WordPress blog. When a page is rendered, php and mysql are used. Therefor, system needs RAM and CPU. If many visitors come to a site, system uses lots of RAM and CPU so page is rendered so slowly. In this case, you need a cache system not to render page again and again. Cache system generates a static html file and saves. Other users reach to static html page.


Authentication & Authorization
Authentication
The application uses Laravel's authentication configured out of the box.
The project started with the default guard web
used to authenticate users
. Every resource revolved around the staff of DUCS. Midway into the project we introduced scholars. Since their interaction with the app was seperate from that of the staff, we created a new guard named scholars
for them. Effectively, anybody can log into the application either as a user or as a scholar and each request is authenticated using either guards.
Authorization
We have made use of Laravel Policy to authenticate user actions.
The policies autorize actions on the resource that they are defined on. The policy methods are mapped to a controller method on its corresponding resource.
The naming convention followed is like so:
Note: By convention, to authorize a
update
action onIncomingLetter
model the framework check if there exists anIncomingLetterPolicy
, and if it does, it calls theupdate
method to check if the user should be allowed to perform the action. If the Policy does not exist or method does not exist, user is not allowed.
While a major chunk of actions could be authorised against permissions that the user has, a few of them required a combination of permissions and custom logic as defined by the use-case.
For the first case, consider example
#IncomingLetterPolicy#view
// determine if the user can view an incoming letter
public function view(User $user, IncomingLetter $letter)
{
return $user->can('incoming letters:view');
}
For the second,
LeavePolicy#respond
// determine if the user can respond to a scholar leave
public function respond($user, Leave $leave)
{
return get_class($user) === User::class
&& $user->can('leaves:respond')
&& in_array($leave->status, [LeaveStatus::APPLIED, LeaveStatus::RECOMMENDED]);
}
Perrmissions are only created for users(i.e the office staff, faculty and the UG teachers). Since, scholars use the application to maintain their individual profiles, permissions do not govern their actions. The overlying condition is them being owner of the instance of the resource they interact with.
Moreover, there exists a super-admin in the application allowed to act bypassing any permissions. This is to allow extra flexibility and reduce margin of error.


Buy-in
Available Balance:
135.999
Buy-in Amount:
Min
($ 40)
Max
($ 80)
Ok
Cancel
Table
Add Chips
Lobby
Prize Pool:20k
My position :3rd of 3
in 3min 15/30
Pot:15,600,000
Koby Oliv52
100,000
Koby Oliv52
100,000
TAKE SIT
Koby Oliv52
100,000
Koby Oliv52
100,000
N
FOLD
100,000
25%
Koby Oliv52
100,000
Koby Oliv52
100,000
25%
Koby Oliv52
100,000
Sit out next hand
Fold to any bet
Chat
Hands
Notes
Stats
asdasd
Min
1/2
Pot
Max
0
FOLD
CALL 500
Raise To 1000


Payment Prototype
Gov Pay Journeys
| Scenario | Card number |
|---|---|
| P0010 - Customer card error |<PHONE_NUMBER>000002 |
| P0020 - Payment window timed out |<PHONE_NUMBER>665556 |
| P0030 - User cancels payment |<PHONE_NUMBER>665556 |
| P0050 - Gov Pay card error |<PHONE_NUMBER>000119 |
| Gov Pay successful payment in full |<PHONE_NUMBER>105100 |
| Gov Pay successful partial payment |<PHONE_NUMBER>98431 |
| Service down after confirming Gov Pay |<PHONE_NUMBER>000119 |


Thermostat
Temperature (Celcius)
[temp]
up
down
Power Saving Status
[On]
Power Saving Toggle
Energy Usage
[Medium]
Different Place Checker
[N/A]
Melbourn
London
Bersenbrück
Paris
Kyiv
Minsk
Berlin
Moscow


Danh is keen on applying data engineering and machine learning tools to solve real-world problems and help businesses make efficient science-based decisions. He has experience collaborating with key stakeholders and acquiring domain knowledge to frame and solve business problems. Danh is passionate about turning data into actionable insights.
He sharpens his skills in full-stack data science and engineering cycles, including building data pipelines (ETL/ELT) with infrastructure as code, performing data analysis and BI reports, and developing and productionizing statistical and machine learning models. Danh has acquired strong programming (Python, SQL) knowledge and has actively contributed to several open-source projects on GitHub. He is a team player with an open mind and is eager to collaborate.
Danh is building the data platform for the Investment Data System Team at HESTA, a Super Fund with more than 1 million Australian members. Hesta invests close to $74 billion. Before that, Danh worked at the Pacific service team, Johnson Controls Australia, his tasks involved building data pipelines, developing and productionizing Dynamic Pricing models, modelling Customer churning risks on cloud, as well as performing data analysis and creating high-quality BI reports and KPI dashboards.
Danh has experience in programming, and has been a Data instructor at Monash Data Fluency, where he teaches hands-on data-related workshops with Python, Git, Bash, and High-Performance Computing to research students and staff at Monash University. He loves Data Science and Bayesian statistics, and actively contributes to open-source projects like PyMC and Aesara on GitHub. He’s worked on a Google Summer of Code project to develop a module that supports Multi-output Gaussian Processes in PyMC.
Before that, Danh was a Ph.D. researcher at Monash University, working on Machine learning for intelligent transport systems. This research focuses on understanding people’s choice behaviors when selecting their activity locations and travel modes. In this research, he applied various Machine learning methods (Bayesian methods, choice models, tree-based, and deep neural networks) with econometrics modeling approaches.


pymatgen.analysis.chemenv.connectivity.connectivity_finder module¶
-
class
ConnectivityFinder
(multiple_environments_choice=None)[source]¶ Bases:
object
Main class used to find the structure connectivity of a structure
Constructor for the ConnectivityFinder.
- Parameters
multiple_environments_choice – defines the procedure to apply when
the environment of a given site is described as a “mix” of more than one coordination environments.
-
get_structure_connectivity
(light_structure_environments)[source]¶ Get the structure connectivity from the coordination environments provided as an input.
- Parameters
light_structure_environments – LightStructureEnvironments with the
relevant coordination environments in the structure :return: a StructureConnectivity object describing the connectivity of the environments in the structure


PCU
Chad'z rating: ** (out of 4 = fair/below average)
1994, PG-13, 80 minutes [1 hour, 20 minutes]
[comedy]
starring: Jeremy Piven (Droz), Chris Young (Tom), Megan Ward (Katy), Jon Favreau (Gutter); written by Adam Leff, Zak Penn; produced by Paul Schiff; directed by Hart Bochner.
Seen December 21, 1997 on home video (borrowed from Shane Rogers).
The screwball college comedy is a long-dead genre, and it's no wonder - there's only so many ways you can tell the same story about hazing and partying. Today, college life isn't so much about being popular as it is being politically correct (PC), and from the title alone, "PCU" invokes the stinging satirical commentary the genre was missing. Unfortunately, that's also where the film's wit ends, as it turns out to be just an updated screwball flick that substitutes PC for fraternity wars and panty raids.
Right from the get-go it's clear how clueless the film is about college as it presents us with two cartoony extremes: Tom (Young), the clean-cut, jacket- and-tie-wearing, geeky pre-frosh who's visiting Port Chester University for the weekend; and Droz (Piven), the seventh-year senior/slacker who's stuck with having to show him around. When the two meet, Droz tells Tom to get the 1950s college images out of his head, which is amazing, since I would tell the filmmakers to get the 1990s college images out of their heads! It's as if they've watched way too much MTV and think all GenXers must be either outrageously liberal or lazy, and have combined it with the campiness of "National Lampoon's Animal House."
Case-in-point: Droz leads Tom through a courtyard where all the different PC groups are camped out such as the "Womynists," the black militants, the pot- heads, and the people who fight for a different cause each week (this week it's anti-meat). Within minutes, Droz and his fellow slackers get geeky little Tom to join in on their prank as they hurl meat at the protesters, and a chase scene ensues.
Now, the PC-obsessed nature of the student groups has obviously been exaggerated as a parody, and does make for some funny jokes, but the problem is there's no sense of moderation. Had the film been about a longer period of time instead of just two days (and just plain longer for that matter - 80 minutes is much too short for such a mainstream film), that would have provided for opportunities for sharp satire instead of just throwing it all at us at the same time.
About the only thing the film does correctly is establish a conflict for the protagonists to overcome, and in this case it's Droz's house's efforts to raise over $7,000 in 24 hours to pay their damages fee or else they'll be evicted. And what better way to raise money than by throwing a party and charging admission? Unfortunately, the campus is split into such rigid sects, is there really any way to get everyone together? Droz believes there is and explains why with the kind of logic that would work fine in a sitcom, but seems ridiculous here.
The ball finally gets rolling as each member of the house goes out to get someone or something and/or keep others away. This gives the film a good reason to be all over the map and to constantly switch from character to character. The wild antics pour in and although some of them are funny (at first), the film makes the same mistake of packing them too close together. We get scenes of Tom being chased all over campus by different PC groups which he has managed to offend (accidentally of course). Meanwhile Droz and company go looking for kegs and sabotage a party in which the all the school's administrator's are attending.
It should be noted that the film is not nearly as bad as it could have been. It does occasionally show signs of promise with its scenes of dialogue, but those are often trite and contrived. Special mention should be made to Jon Favreau as Gutter, who, although he is a generic character, is at least interesting and likable.
There's so much more that could have been done with "PCU," most notably, focusing more on the PC and less on the U.
Please visit Chad'z Movie Page @ http://members.aol.com/ChadPolenz - over 180 new and old films reviewed in depth, not just blind ratings and quick capsules. Also, check out The FIRST Shay Astar Web Page @ http://members.aol.com/ChadPolenz/ShayAstar.html
To receive Chad'z movie reviews directly, send e-mail to<EMAIL_ADDRESS>with "subscribe plan#_" in the header (plan 1 - new releases, plan 2 - all movies reviewed).
(C) 1997 Chad Polenz
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


--- layout: default title: Error ---
I can't find the page you are looking for. You should probably go to archive page and see if anything there tickles your fancy.


Symbol
Get Price
Price
Percent Change
%
Interval Size
%
Number of Intervals
IV Factor
ADD LEG
CALCULATE
×
{{chain}}
Bid
Call
Ask
Strike
Bid
Put
Ask
{{option.callBid}}
{{option.call}}
{{option.callAsk}}
{{option.strike}}
{{option.putBid}}
{{option.put}}
{{option.putAsk}}


This option causes the AccuRev plugin to revert any overlapped entries in the workspace prior to performing an update of the workspace. Overlapped entries cause the update step to fail, which in turn causes the build to be marked as failed. (which in turn causes the next build to purge the workspace and therefore negate any purpose in using workspaces)
this option is primarily useful in cases where you are using an AccuRev workspace and when performing a build on that workspace would cause artifacts to overlap in the parent stream. If you keep getting warnings and failed builds due to overlaps, and you don't want to purge the entire workspace on each build then you need this option.


TOTP Manager
Choose a file...
No file uploaded
Passphrase
Select Key
---
Key Name
Secret Key
Plain Text
Use P/W
Number of Digits
Token Period (sec)
Add to List
Update List
Delete from List
Encrypt and Save
.txt
Clear Form/Data
Updating in 0 seconds


"Storytelling is very difficult. But adding the flavor helps to relay the storytelling, meaning in a cut scene, with a set camera and effects, you can make the users feel sorrow, or make them happy or laugh. This is an easy approach, which we have been doing. That is one point, the second point is that if I make multiple storylines and allow the users to select which story, this might really sacrifice the deep emotion the user might feel; when there's a concrete storyline, and you kind of go along that rail, you feel the destiny of the story, which at the end, makes you feel more moved. But when you make it interactive — if you want multiple stories where you go one way or another — will that make the player more moved when he or she finishes the game? These two points are really the key which I am thinking about, and if this works, I think I could probably introduce a more interactive storytelling method."
This page was created by Kenji Yamamoto


(Route : News Menu, Post Article Command)
The News Article dialog box allows you to compose a Usenet newsgroup article.
This is a Hot Spot image. Move your mouse pointer over the image
and when the mouse pointer changes to the shape of a hand click
the left mouse button once for extra help.
The Newsgroups text box will be filled in with the name of the current newsgroup.
Enter the title of your message in the Subject text box.
Select the address that you would like replies sent to in the Reply To list box. One Reply To address is kept for each newsgroup, or you can choose your default Reply To address. Reply-To addresses are only acted upon when the article is sent via an Internet news server. If your article is being sent through CIX the Reply-To address will be set to your CIX email address.
If you want to attach an encoded file to your message, locate the file by clicking the Attachment button or enter the name and location of the file in the Attachment text box. If you do add an attached file then you can select the method of encoding from the Encoding list.
Now enter your message in the main part of the dialog box. You can add a signature to the end of your message by choosing one from the Signature list.
Click the Save button to send your message the next time Ameol blinks.


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
S
T
U
W
S
safeStop()
- Method in class Utils.
JWarTickGenerator
Sets the stop flag and waits for thread to actually stop.
sendAIPositionChange(int, int)
- Method in interface AI.
ControllableUnit
sendAIPositionChange(int, int)
- Method in class AI.
JAIBuilder
sendAIPositionChange(int, int)
- Method in class AI.
JAIControllable
sendAIPositionChange(int, int)
- Method in class AI.
JAIKiller
sendAIStopMovement()
- Method in interface AI.
ControllableUnit
sendAIStopMovement()
- Method in class AI.
JAIBuilder
sendAIStopMovement()
- Method in class AI.
JAIControllable
sendAIStopMovement()
- Method in class AI.
JAIKiller
setAIModule(JAIGeneric)
- Method in class Objects.
JWarDynamicObject
Selects a new current AI module.
setBarOrder(int)
- Method in class Objects.
JWarInfoBar
Sets the bar's order in the Objects's view area.
setBarValue(int)
- Method in class Objects.
JWarInfoBar
Sets the current info bar value.
setBattleField(JBattleField)
- Method in class Controllers.
JCTRLGeneric
Sets the Battle Field object.
setBattleField(JBattleField)
- Method in class Objects.
JWarDynamicObject
Assigns the battle field.
setEnabled(boolean)
- Method in class AI.
JAIGeneric
Enables or disables this AI module.
setFieldSizes(int, int)
- Method in class UI.
JBattleField
Resizes the battle field to the newest selected field sizes.
setGameType(int)
- Static method in class AI.
JWarParty
Selects currently used game type.
setMapCell(int, int, int)
- Method in class UI.
JBattleField
Sets an item into the map cell.
setMaxBarValue(int)
- Method in class Objects.
JWarInfoBar
Sets the info bar max value.
setNativeLookAndFeel()
- Static method in class
JMainFrame
Selects the current OS native look&feel for the swing UI.
setObjectLife(int)
- Method in class Objects.
JWarLifeObject
Sets Object's Life.
setObjectMaxLife(int)
- Method in class Objects.
JWarLifeObject
Sets Objects's Max Life.
setObjectMaxTrainStatus(int)
- Method in class Objects.
JWarTrainerObject
Sets Objects's Max Training.
setObjectPosition(int, int)
- Method in class Objects.
JWarDynamicObject
Sets the new position on the map.
setObjectState(int)
- Method in class Objects.
JWarDynamicObject
Selects a new state(icon) for this Dynamic Object
setObjectTrainStatus(int)
- Method in class Objects.
JWarTrainerObject
Sets Object's Training.
setParty(JWarParty)
- Method in class Controllers.
JCTRLGeneric
Sets the party owner for this Controller.
setParty(JWarParty)
- Method in class Objects.
JWarDynamicObject
Sets this unit's party.
setPartyResources(int)
- Method in class AI.
JWarParty
Sets current party resources
setPositionX(int)
- Method in class AI.
MapPosition
Sets the current position of X.
setPositionY(int)
- Method in class AI.
MapPosition
Sets the current position of Y.
setSelectedObject(JWarDynamicObject)
- Static method in class Objects.
JWarDynamicObject
Sets the current selected object.
setSelectedObject(JWarDynamicObject)
- Static method in class UI.
JWarUnitInfoPanel
setStopFlag()
- Method in class Utils.
JWarTickGenerator
Tells Tick Manager to stop it's execution!
setUnitImage(ImageIcon)
- Method in class UI.
JWarUnitInfoPanel
setupObject()
- Method in class Objects.
JWarBuilderMachine
setupObject()
- Method in class Objects.
JWarCritterObject
setupObject()
- Method in class Objects.
JWarDynamicObject
Load resources must be implemented here!
setupObject()
- Method in class Objects.
JWarKillerMachine
setupObject()
- Method in class Objects.
JWarLifeObject
setupObject()
- Method in class Objects.
JWarMainBuilding
setupObject()
- Method in class Objects.
JWarMineralObject
setupObject()
- Method in class Objects.
JWarTrainerObject
setWarObject(JWarDynamicObject)
- Method in class UI.
JWarUnitInfoPanel
startResourceCollection()
- Method in interface AI.
BuildingOptions
startResourceCollection()
- Method in class AI.
JAIBuilder
subscribeForTicks(TickReceiver)
- Method in class Utils.
JWarTickGenerator
Add a new Tick receiver to the list.
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
S
T
U
W


Tags: female-nude
Style: Impressionism
Artist: Morisot Berthe
Title: The Reclining Shepherdess
Year: 1891
Genre: nude painting (nu)
Categories: tailed_frog (55.1%); fountain (4.9%); tree_frog (4.0%); frilled_lizard (2.6%); chain (2.5%)
<< previous image next image >>


A bitset is really a cross between a set and a vector. Like the vector specialization vector<bool>, a bitset represents a sequence of binary (0/1 bit) values. However, set operations can be performed on bitsets using the logical bit-wise operators. The class bitset does not provide any iterators for accessing elements.
The bitset header file must appear in all programs that use the bitset datatype:
#include <bitset>
A bitset is a template class abstraction. However, the template argument is not a type, but an integer value. The value represents the number of bits the set contains.
std::bitset<126> bset_one; // create a set of 126 bits
An alternative technique permits the size of the set to be specified as an argument to the constructor. The actual size will be the smaller of the value used as the template argument and the constructor argument. This technique is useful when a program contains two or more bit vectors of differing sizes. Consistently using the larger size for the template argument means that only one set of methods for the class is generated. The actual size, however, is determined by the constructor.
std::bitset<126> bset_two(100); // this set has only 100 bits
A third form of constructor takes as argument a string of 0 and 1 characters. A bitset is created that has holds as many elements as there are characters in the string, and is initialized with the values from the string.
std::bitset<126> small_set("10101010"); // this set has 8 bits
An individual bit in the bitset can be accessed using the subscript operation. Whether the bit is one or not can be determined using the member function test(). Whether any bit in the bitset is on is tested using the member function any(), which yields a boolean value. The inverse of any() is returned by the member function none():
bset_one[3] = 1; if (bset_one.test(4)) std::cout << "bit position 4 is set" << std::endl; if (bset_one.any()) std::cout << "some bit position is set" << std::endl; if (bset_one.none()) std::cout << "no bit position is set" << std::endl;
The function set() can be used to set a specific bit. The function bset_one.set(I) is equivalent to bset_one[I] = true. Invoking the function without any arguments sets all bit positions to true. The function reset() is similar, and sets the indicated position to false, or all positions to false if invoked with no argument. The function flip() flips either the indicated position, or all positions if no argument is provided. The function flip() is also provided as a member function for the individual bit references.
bset_one.flip(); // flip the entire set bset_one.flip(12); // flip only bit 12 bset_one[12].flip(); // reflip bit 12
The member function size() returns the number of bits in the bitset, while the member function count() yields the number of bits that are set.
The set operations on bitsets are implemented using the bit-wise operators, analogous to the way the same operators act on integer arguments.
The negation operator operator~() applied to a bitset returns a new bitset containing the inverse of the elements in the argument set.
The intersection of two bitsets is formed using the and operator operator&(). The assignment form of the operator can also be used. In the assignment form, the target becomes the disjunction of the two sets:
bset_three = bset_two & bset_four; bset_five &= bset_three;
The union of two sets is formed in a similar manner using the or operator, operator|(). The exclusive-or is formed using the bit-wise exclusive or operator, operator^().
The left and right shift operators, operator<<() and operator>>(), can be used to shift a bitset left or right as they are used on integer arguments. If a bit is shifted left by an integer value n, then the new bit position I is the value of the former I-n. Zeros are shifted into the new positions.
The member function to_ulong() converts a bitset into an unsigned long. A std::out_of_range exception is thrown if this function is called on a bitset containing more elements than can fit into an unsigned long.
The member function to_string() converts a bitset into an object of type string. The string has as one character for each bit in the bitset. Each zero bit corresponds to the character 0, while each one bit is represented by the character 1.


{% extends "samples.html" %} {% block title %}Samples with Strain Name: {{ standard_designation }}{% endblock %} {% block header %}{{ standard_designation }}
{% endblock %} {% block nosamples %}No samples found for Strain Name: {{ standard_designation }}{% endblock %}


Class DiceExpression
The DiceExpression class can be used to fluently add DiceTerms to a collection and then Roll them.
Inheritance
Inherited Members
Namespace: RogueSharp.DiceNotation
Assembly: RogueSharp.dll
Syntax
public class DiceExpression
Constructors
| Improve this Doc View SourceDiceExpression()
Construct a new DiceExpression class with an empty list of terms
Declaration
public DiceExpression()
Methods
| Improve this Doc View SourceConstant(Int32)
Add a constant to this DiceExpression with the specified integer value
Declaration
public DiceExpression Constant(int value)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | value | An integer constant to add to this DiceExpression |
Returns
| Type | Description |
|---|---|
| DiceExpression | A DiceExpression representing the previous terms in this DiceExpression plus this newly added Constant |
Dice(Int32, Int32)
Add multiple Dice to this DiceExpression with the specified parameters
Declaration
public DiceExpression Dice(int multiplicity, int sides)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | multiplicity | The number of Dice |
| System.Int32 | sides | The number of sides per Die |
Returns
| Type | Description |
|---|---|
| DiceExpression | A DiceExpression representing the previous terms in this DiceExpression plus these newly added Dice |
Dice(Int32, Int32, Int32)
Add multiple Dice to this DiceExpression with the specified parameters
Declaration
public DiceExpression Dice(int multiplicity, int sides, int scalar)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | multiplicity | The number of Dice |
| System.Int32 | sides | The number of sides per Die |
| System.Int32 | scalar | The value to multiply the result of the Roll of these Dice by |
Returns
| Type | Description |
|---|---|
| DiceExpression | A DiceExpression representing the previous terms in this DiceExpression plus these newly added Dice |
Dice(Int32, Int32, Int32, Nullable<Int32>)
Add multiple Dice to this DiceExpression with the specified parameters
Declaration
public DiceExpression Dice(int multiplicity, int sides, int scalar, int? choose)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | multiplicity | The number of Dice |
| System.Int32 | sides | The number of sides per Die |
| System.Int32 | scalar | The value to multiply the result of the Roll of these Dice by |
| System.Nullable<System.Int32> | choose | Optional number of dice to choose out of the total rolled. The highest rolled Dice will be chosen. |
Returns
| Type | Description |
|---|---|
| DiceExpression | A DiceExpression representing the previous terms in this DiceExpression plus these newly added Dice |
Die(Int32)
Add a single Die to this DiceExpression with the specified number of sides
Declaration
public DiceExpression Die(int sides)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | sides | The number of sides on the Die to add to this DiceExpression |
Returns
| Type | Description |
|---|---|
| DiceExpression | A DiceExpression representing the previous terms in this DiceExpression plus this newly added Die |
Die(Int32, Int32)
Add a single Die to this DiceExpression with the specified number of sides and scalar
Declaration
public DiceExpression Die(int sides, int scalar)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | sides | The number of sides on the Die to add to this DiceExpression |
| System.Int32 | scalar | The value to multiply the result of the Roll of this Die by |
Returns
| Type | Description |
|---|---|
| DiceExpression | A DiceExpression representing the previous terms in this DiceExpression plus this newly added Die |
MaxRoll()
Roll all of the Dice that are part of this DiceExpression, but force all of the rolls to be the highest possible result
Declaration
public DiceResult MaxRoll()
Returns
| Type | Description |
|---|---|
| DiceResult | A DiceResult representing the results of this Roll. All dice should have rolled their maximum values |
MinRoll()
Roll all of the Dice that are part of this DiceExpression, but force all of the rolls to be the lowest possible result
Declaration
public DiceResult MinRoll()
Returns
| Type | Description |
|---|---|
| DiceResult | A DiceResult representing the results of this Roll. All dice should have rolled their minimum values |
Roll()
Roll all of the Dice that are part of this DiceExpression
Declaration
public DiceResult Roll()
Returns
| Type | Description |
|---|---|
| DiceResult | A DiceResult representing the results of this Roll |
Remarks
Uses DotNetRandom as its RNG
Roll(IRandom)
Roll all of the Dice that are part of this DiceExpression
Declaration
public DiceResult Roll(IRandom random)
Parameters
| Type | Name | Description |
|---|---|---|
| IRandom | random | IRandom RNG used to perform the Roll. |
Returns
| Type | Description |
|---|---|
| DiceResult | A DiceResult representing the results of this Roll |
ToString()
Returns a string that represents this DiceExpression
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| System.String | A string representing this DiceExpression |


Comments
-
Greg Hurrell
Status changed:
- From: New
- To: Open
-
Greg Hurrell
Will have to play with the
optgroup
HTML element. Note also that theoption
element supports adisabled
attribute, so that could be used to make "headings" within the pop-up. -
Greg Hurrell
Will probably want to two fields to the products table: "postion" (an integer specifying display order) and "group" (a string such as "Developer", "Consumer" etc). I could model this as a proper, normalized association (ie with a separate "groups" or "product_groups" table and possible a "through" table as well) but I don't know if it's worth it when all I really want to do is sort the items in a pop-up (and later divide the product listing pages up into sections).
-
Greg Hurrell
I think the final category name list is going to be:
- Consumer
- Developer
- Server
-
Greg Hurrell
Ok, model changes have been made and
products#index
updated too.Last piece of the puzzle will be the pop-up menus.
-
Greg Hurrell
Ok, this is now done and it's definitely a nice UI improvement.
For now the static product pop-ups (
issues#new
,issues#edit
, and issue search too) are done. The AJAX in-place editing (as inissues#show
) still uses the old style (1-level) menu. -
Greg Hurrell
Ok, the AJAX case is now handled too.
Will mark as closed.
-
Greg Hurrell
Status changed:
- From: open
- To: closed
Add a comment
Comments are now closed for this issue.