Roadmap
Past three weeks:
- How do we use a functional language?
Next three weeks:
- How do we implement a functional language?
- … in a functional language (of course)
This week: Interpreter
- How do we evaluate a program given its abstract syntax tree (AST)?
- How do we prove properties about our interpreter (e.g. that certain programs never crash)?
The Nano Language
Features of Nano:
- Arithmetic expressions
- Variables and let-bindings
- Functions
- Recursion
Reminder: Calculator
Arithmetic expressions:
e ::= n
| e1 + e2
| e1 - e2
| e1 * e2
Example:
4 + 13
==> 17
Haskell datatype to represent arithmetic expressions:
data Expr = Num Int
| Add Expr Expr
| Sub Expr Expr
| Mul Expr Expr
Haskell function to evaluate an expression:
eval :: Expr -> Int
eval (Num n) = n
eval (Add e1 e2) = eval e1 + eval e2
eval (Sub e1 e2) = eval e1 - eval e2
eval (Mul e1 e2) = eval e1 * eval e2
Alternative representation:
data Binop = Add | Sub | Mul
data Expr = Num Int -- number
| Bin Binop Expr Expr -- binary expression
Evaluator for alternative representation:
eval :: Expr -> Int
eval (Num n) = n
eval (Bin Add e1 e2) = eval e1 + eval e2
eval (Bin Sub e1 e2) = eval e1 - eval e2
eval (Bin Mul e1 e2) = eval e1 * eval e2
The Nano Language
Features of Nano:
- Arithmetic expressions [done]
- Variables and let-bindings
- Functions
- Recursion
Extension: variables
Let’s add variables and let
bindings!
e ::= n | x
| e1 + e2 | e1 - e2 | e1 * e2
| let x = e1 in e2
Example:
let x = 4 + 13 in -- 17
let y = 7 - 5 in -- 2
x * y
==> 34
Haskell representation:
data Expr = Num Int -- number
| ??? -- variable
| Bin Binop Expr Expr -- binary expression
| ??? -- let expression
type Id = String
data Expr = Num Int -- number
| Var Id -- variable
| Bin Binop Expr Expr -- binary expression
| Let Id Expr Expr -- let expression
Haskell function to evaluate an expression:
eval :: Expr -> Int
eval (Num n) = n
eval (Var x) = ???
...
How do we evaluate a variable?
We have to remember which value it was bound to!
Environment
An expression is evaluated in an environment, which maps all its free variables to values
Examples:
x * y
=[x:17, y:2]=> 34
x * y
=[x:17]=> ???
x * (let y = 2 in y)
=[x:17]=> ???
- How should we represent the environment?
- Which operations does it support?
QUIZ
What should this evaluate to?
let x = 5 in
let y = x + z in
let z = 10 in
y
(A) 15
(B) 5
(C) Error: unbound variable x
(D) Error: unbound variable y
(E) Error: unbound variable z
QUIZ
What should this evaluate to?
let x = 1 in
let y = (let x = 2 in 2 * x) + x in
let x = 3 in
x + y
(A) 8
(B) 9
(C) 12
(D) Error: unbound variable x
(E) Error: multiple definitions of x
Environment: API
To evaluate let x = e1 in e2
in env
:
- evaluate
e2
in an extended environmentenv + [x:v]
- where
v
is the result of evaluatinge1
To evaluate x
in env
:
- lookup the most recently added binding for
x
type Value = Int
data Env = ... -- representation not that important
-- | Add a new binding
add :: Id -> Value -> Env -> Env
-- | Lookup the most recently added binding
lookup :: Id -> Env -> Value
Evaluating expressions
Back to our expressions… now with environments!
data Expr = Num Int -- number
| Var Id -- variable
| Bin Binop Expr Expr -- binary expression
| Let Id Expr Expr -- let expression
Haskell function to evaluate an expression:
eval :: Env -> Expr -> Value
eval env (Num n) = n
eval env (Var x) = lookup x env
eval env (Bin op e1 e2) = f v1 v2
where
v1 = eval env e1
v2 = eval env e2
f = case op of
Add -> (+)
Sub -> (-)
Mul -> (*)
eval env (Let x e1 e2) = eval env' e2
where
v = eval env e1
env' = add x v env
Example evaluation
Nano expression
let x = 1 in
let y = (let x = 2 in x) + x in
let x = 3 in
x + y
is represented in Haskell as:
exp1 =
Let "x"
(Num 1)
(Let "y"
(Add
(Let "x" (Num 2) (Var x))
(Var x))
(Let "x"
(Num 3)
(Add (Var x) (Var y))))
is evaluated as:
eval [] exp1
=> eval [] (Let "x" (Num 1) exp2)
=> eval [("x",eval [] (Num 1))] exp2
=> eval [("x",1)]
(Let "y" (Add exp3 exp4) exp2)
=> eval [("y",(eval [("x",1)] (Add exp3 exp4))), ("x",1)]
exp2
=> eval [("y",(eval [("x",1)] (Let "x" (Num 2) (Var "x"))
+ eval [("x",1)] (Var "x"))), ("x",1)]
exp2
=> eval [("y",(eval [("x",2), ("x",1)] (Var "x") -- new binding for x
+ 1)), ("x",1)]
exp2
=> eval [("y",(2 -- use latest binding for x
+ 1)), ("x",1)]
exp2
=> eval [("y",3), ("x",1)]
(Let "x" (Num 3) (Add (Var "x") (Var "y")))
=> eval [("x",3), ("y",3), ("x",1)] -- new binding for x
(Add (Var "x") (Var "y"))
=> eval [("x",3), ("y",3), ("x",1)] (Var "x")
+ eval [("x",3), ("y",3), ("x",1)] (Var "y")
=> 3 + 3
=> 6
Same evaluation in a simplified format (Haskell Expr
terms replaced by their “pretty-printed version”):
eval []
{let x = 1 in let y = (let x = 2 in x) + x in let x = 3 in x + y}
=> eval [x:(eval [] 1)]
{let y = (let x = 2 in x) + x in let x = 3 in x + y}
=> eval [x:1]
{let y = (let x = 2 in x) + x in let x = 3 in x + y}
=> eval [y:(eval [x:1] {(let x = 2 in x) + x}), x:1]
{let x = 3 in x + y}
=> eval [y:(eval [x:1] {let x = 2 in x} + eval [x:1] {x}), x:1]
{let x = 3 in x + y}
-- new binding for x:
=> eval [y:(eval [x:2,x:1] {x} + eval [x:1] {x}), x:1]
{let x = 3 in x + y}
-- use latest binding for x:
=> eval [y:( 2 + eval [x:1] {x}), x:1]
{let x = 3 in x + y}
=> eval [y:( 2 + 1) , x:1]
{let x = 3 in x + y}
=> eval [y:3, x:1]
{let x = 3 in x + y}
-- new binding for x:
=> eval [x:3, y:3, x:1]
{x + y}
=> eval [x:3, y:3, x:1] x + eval [x:3, y:3, x:1] y
-- use latest binding for x:
=> 3 + 3
=> 6
Runtime errors
Haskell function to evaluate an expression:
eval :: Env -> Expr -> Value
eval env (Num n) = n
eval env (Var x) = lookup x env -- can fail!
eval env (Bin op e1 e2) = f v1 v2
where
v1 = eval env e1
v2 = eval env e2
f = case op of
Add -> (+)
Sub -> (-)
Mul -> (*)
eval env (Let x e1 e2) = eval env' e2
where
v = eval env e1
env' = add x v env
How do we make sure lookup
doesn’t cause a run-time error?
Free vs bound variables
In eval env e
, env
must contain bindings for all free variables of e
!
- an occurrence of
x
is free if it is not bound - an occurrence of
x
is bound if it’s insidee2
wherelet x = e1 in e2
- evaluation succeeds when an expression is closed!
QUIZ
Which variables are free in the expression?
let y = (let x = 2 in x) + x in
let x = 3 in
x + y
(A) None
(B) x
(C) y
(D) x y
The Nano Language
Features of Nano:
- Arithmetic expressions [done]
- Variables and let-bindings [done]
- Functions
- Recursion
Extension: functions
Let’s add lambda abstraction and function application!
e ::= n | x
| e1 + e2 | e1 - e2 | e1 * e2
| let x = e1 in e2
| \x -> e -- abstraction
| e1 e2 -- application
Example:
let c = 42 in
let cTimes = \x -> c * x in
cTimes 2
==> 84
Haskell representation:
data Expr = Num Int -- number
| Var Id -- variable
| Bin Binop Expr Expr -- binary expression
| Let Id Expr Expr -- let expression
| ??? -- abstraction
| ??? -- application
data Expr = Num Int -- number
| Var Id -- variable
| Bin Binop Expr Expr -- binary expression
| Let Id Expr Expr -- let expression
| Lam Id Expr -- abstraction
| App Expr Expr -- application
Example:
let c = 42 in
let cTimes = \x -> c * x in
cTimes 2
represented as:
Let "c"
(Num 42)
(Let "cTimes"
(Lam "x" (Mul (Var "c") (Var "x")))
(App (Var "cTimes") (Num 2)))
How should we evaluate this expression?
eval []
{let c = 42 in let cTimes = \x -> c * x in cTimes 2}
=> eval [c:42]
{let cTimes = \x -> c * x in cTimes 2}
=> eval [cTimes:???, c:42]
{cTimes 2}
What is the value of cTimes
???
Rethinking our values
Until now: a program evaluates to an integer (or fails)
type Value = Int
type Env = [(Id, Value)]
eval :: Env -> Expr -> Value
What do these programs evaluate to?
(1)
\x -> 2 * x
==> ???
(2)
let f = \x -> \y -> 2 * (x + y) in
f 5
==> ???
Now: a program evaluates to an integer or a lambda abstraction (or fails)
- Remember: functions are first-class values
Let’s change our definition of values!
data Value = VNum Int
| VLam ??? -- What info do we need to store?
-- Other types stay the same
type Env = [(Id, Value)]
eval :: Env -> Expr -> Value
Function values
How should we represent a function value?
let c = 42 in
let cTimes = \x -> c * x in
cTimes 2
We need to store enough information about cTimes
so that we can later evaluate any application of cTimes
(like cTimes 2
)!
First attempt:
data Value = VNum Int
| VLam Id Expr -- formal + body
Let’s try this!
eval []
{let c = 42 in let cTimes = \x -> c * x in cTimes 2}
=> eval [c:42]
{let cTimes = \x -> c * x in cTimes 2}
=> eval [cTimes:(\x -> c*x), c:42]
{cTimes 2}
-- evaluate the function:
=> eval [cTimes:(\x -> c*x), c:42]
{(\x -> c * x) 2}
-- evaluate the argument, bind to x, evaluate body:
=> eval [x:2, cTimes:(\x -> c*x), c:42]
{c * x}
=> 42 * 2
=> 84
Looks good… can you spot a problem?
QUIZ
What should this evaluate to?
let c = 42 in
let cTimes = \x -> c * x in -- but which c???
let c = 5 in
cTimes 2
(A) 84
(B) 10
(C) Error: multiple definitions of c
Static vs Dynamic Scoping
What we want:
let c = 42 in
let cTimes = \x -> c * x in
let c = 5 in
cTimes 2
=> 84
Lexical (or static) scoping:
- each occurrence of a variable refers to the most recent binding in the program text
- definition of each variable is unique and known statically
- good for readability and debugging: don’t have to figure out where a variable got “assigned”
What we don’t want:
let c = 42 in
let cTimes = \x -> c * x in
let c = 5 in
cTimes 2
=> 10
Dynamic scoping:
- each occurrence of a variable refers to the most recent binding during program execution
- can’t tell where a variable is defined just by looking at the function body
- nightmare for readability and debugging:
let cTimes = \x -> c * x in
let c = 5 in
let res1 = cTimes 2 in -- ==> 10
let c = 10 in
let res2 = cTimes 2 in -- ==> 20!!!
res2 - res1
Function values
data Value = VNum Int
| VLam Id Expr -- formal + body
This representation can only implement dynamic scoping!
let c = 42 in
let cTimes = \x -> c * x in
let c = 5 in
cTimes 2
evaluates as:
eval []
{let c = 42 in let cTimes = \x -> c * x in let c = 5 in cTimes 2}
=> eval [c:42]
{let cTimes = \x -> c * x in let c = 5 in cTimes 2}
=> eval [cTimes:(\x -> c*x), c:42]
{let c = 5 in cTimes 2}
=> eval [c:5, cTimes:(\x -> c*x), c:42]
{cTimes 2}
=> eval [c:5, cTimes:(\x -> c*x), c:42]
{(\x -> c * x) 2}
=> eval [x:2, c:5, cTimes:(\x -> c*x), c:42]
{c * x}
-- latest binding for c is 5!
=> 5 * 2
=> 10
Lesson learned: need to remember what c
was bound to when cTimes
was defined!
- i.e. “freeze” the environment at function definition
Closures
To implement lexical scoping, we will represent function values as closures
Closure = lambda abstraction (formal + body) + environment at function definition
data Value = VNum Int
| VClos Env Id Expr -- env + formal + body
Our example:
eval []
{let c = 42 in let cTimes = \x -> c * x in let c = 5 in cTimes 2}
=> eval [c:42]
{let cTimes = \x -> c * x in let c = 5 in cTimes 2}
-- remember current env:
=> eval [cTimes:<[c:42], \x -> c*x>, c:42]
{let c = 5 in cTimes 2}
=> eval [c:5, cTimes:<[c:42], \x -> c*x>, c:42]
{cTimes 2}
=> eval [c:5, cTimes:<[c:42], \x -> c*x>, c:42]
{<[c:42], \x -> c * x> 2}
-- restore env to the one inside the closure, then bind 2 to x:
=> eval [x:2, c:42]
{c * x}
=> 42 * 2
=> 84
QUIZ
Which variables should be saved in the closure environment of f
?
let a = 20 in
let f =
\x -> let y = x + 1 in
let g = \z -> y + z in
a + g x
in ...
(A) a
(B) a x
(C) y g
(D) a y g
(E) a x y g z
Free vs bound variables
- An occurrence of
x
is free if it is not bound - An occurrence of
x
is bound if it’s insidee2
wherelet x = e1 in e2
e
where\x -> e
- A closure environment has to save all free variables of a function definition!
let a = 20 in
let f =
\x -> let y = x + 1 in
let g = \z -> y + z in
a + g x -- a is the only free variable!
in ...
Evaluator
Let’s modify our evaluator to handle functions!
data Value = VNum Int
| VClos Env Id Expr -- env + formal + body
eval :: Env -> Expr -> Value
eval env (Num n) = VNum n -- must wrap in VNum now!
eval env (Var x) = lookup x env
eval env (Bin op e1 e2) = VNum (f v1 v2)
where
(VNum v1) = eval env e1
(VNum v2) = eval env e2
f = ... -- as before
eval env (Let x e1 e2) = eval env' e2
where
v = eval env e1
env' = add x v env
eval env (Lam x body) = ??? -- construct a closure
eval env (App fun arg) = ??? -- eval fun, then arg, then apply
Evaluating functions:
- Construct a closure: save environment at function definition
- Apply a closure: restore saved environment, add formal, evaluate the body
eval :: Env -> Expr -> Value
...
eval env (Lam x body) = VClos env x body
eval env (App fun arg) = eval bodyEnv body
where
(VClos closEnv x body) = eval env fun -- eval function to closure
vArg = eval env arg -- eval argument
bodyEnv = add x vArg closEnv
QUIZ
With eval
as defined above, what does this evaluate to?
let f = \x -> x + y in
let y = 10 in
f 5
(A) 15
(B) 5
(C) Error: unbound variable x
(D) Error: unbound variable y
(E) Error: unbound variable f
eval []
{let f = \x -> x + y in let y = 10 in f 5}
=> eval [f:<[], \x -> x + y>]
{let y = 10 in f 5}
=> eval [y:10, f:<[], \x -> x + y>]
{f 5}
=> eval [y:10, f:<[], \x -> x + y>]
{<[], \x -> x + y> 5}
=> eval [x:5] -- env got replaced by closure env + formal!
{x + y} -- y is unbound!
QUIZ
With eval
as defined above, what does this evaluate to?
let f = \n -> n * f (n - 1) in
f 5
(A) 120
(B) Evaluation does not terminate
(C) Error: unbound variable f
eval []
{let f = \n -> n * f (n - 1) in f 5}
=> eval [f:<[], \n -> n * f (n - 1)>]
{f 5}
=> eval [f:<[], \n -> n * f (n - 1)>]
{<[], \n -> n * f (n - 1)> 5}
=> eval [n:5] -- env got replaced by closure env + formal!
{n * f (n - 1)} -- f is unbound!
Lesson learned: to support recursion, we need a different way of constructing the closure environment!
The Nano Language
Features of Nano:
- Arithmetic expressions [done]
- Variables and let-bindings [done]
- Functions [done]
- Recursion [this is part of HW4]
Formalizing Nano
Goal: we want to guarantee properties about programs, such as:
- evaluation is deterministic
- all programs terminate
- certain programs never fail at run time
- etc.
To prove theorems about programs we first need to define formally
- their syntax (what programs look like)
- their semantics (what it means to run a program)
Let’s start with Nano1 (Nano w/o functions) and prove some stuff!
Nano1: Syntax
We need to define the syntax for expressions (terms) and values using a grammar:
e ::= n | x -- expressions
| e1 + e2
| let x = e1 in e2
v ::= n -- values
where n ∈ ℕ, x ∈ Var
Nano1: Operational Semantics
Operational semantics defines how to execute a program step by step
Let’s define a step relation (reduction relation) S,e => S',e'
- where S: Var → ℕ is an environment
- a pair
S,e
of an environment and an expression is called a configuration (or evaluation state) - we read this as “expression
e
in an environmentS
makes a step to an expressione'
and a new environmentS'
”
The environment S: Var → ℕ is finite map (a partial function) from variables to integers
S[x]
: the value ofx
inS
dom S
: the domain ofS
(all variables defined inS
)S[x -> v]
: likeS
, butx
now maps tov
We define the step relation inductively through a set of rules:
[Var] S, x => S, S[x] if x in dom(S)
S, e1 => S', e1' -- premise
[Add-L] --------------------------
S, e1 + e2 => S', e1' + e2 -- conclusion
S, e2 => S', e2'
[Add-R] --------------------------
S, n1 + e2 => S', n1 + e2'
[Add] S, n1 + n2 => S, n where n == n1 + n2
S, e1 => S', e1'
[Let-Def] --------------------------------------------
S, let x = e1 in e2 => S', let x = e1' in e2
[Let] S, let x = v in e2 => S[x->v], e2
A reduction is valid if we can build its derivation by “stacking” the rules:
[Var] ------------------------
[x:5], x => [x:5], 5
[Add-L] ---------------------------------
[x:5], x + 2 => [x:5], 5 + 2
Do we have rules for all kinds of expressions?
1. Normal forms
There are no reduction rules for:
S,n
S,x
wherenot (x in dom(S))
Both of these states are normal forms (cannot be further reduced), however:
- in
S,n
, the expressionn
is a value- intuitively, corresponds to successful evaluation
- in
S,x
, the expressionx
is not a value- intuitively, corresponds to a run-time error!
- we say that a configuration
S,x
is stuck
2. Evaluation order
In e1 + e2
, which side should we evaluate first?
In other words, which one of these reductions is valid (or both)?
S, (1 + 2) + (4 + 5) => S, 3 + (4 + 5)
S, (1 + 2) + (4 + 5) => S, (1 + 2) + 9
Reduction (1) is valid because we can build a derivation using the rules:
[Add] ----------------
S, 1 + 2 => S, 3
[Add-L] ----------------------------------------
S, (1 + 2) + (4 + 5) => S, 3 + (4 + 5)
Reduction (2) is invalid because we cannot build a derivation:
- there is no rule whose conclusion matches this reduction!
???
[???] ----------------------------------------
S, (1 + 2) + (4 + 5) => S, (1 + 2) + 9
QUIZ
S, e1 => S', e1'
[Let-Def] --------------------------------------------
S, let x = e1 in e2 => S', let x = e1' in e2
[Let] S, let x = v in e2 => S[x->v], e2
If these are the only rules for let
bindings, which reductions are valid?
(A) [], (let x = 1 + 2 in 4 + 5 + x) => [], (let x = 3 in 4 + 5 + x)
(B) [], (let x = 1 + 2 in 4 + 5 + x) => [], (let x = 1 + 2 in 9 + x)
(C) [], (let x = 1 + 2 in 4 + 5 + x) => [], (4 + 5 + 1 + 2)
(D) A and B
(E) All of the above
Evaluation relation
Like in λ-calculus, we define the multi-step reduction relation S, e =*> S', e'
:
S, e =*> S', e'
iff there exists a sequence of states (S1, e1), ..., (Sn, en)
such that
(S, e) = (S1, e1)
(Sn, en) = (S', e')
Si, ei => S(i+1), e(i+1)
for eachi in [0..n)
Example:
[], (1 + 2) + (4 + 5)
=*> [], 3 + 9
because
[], (1 + 2) + (4 + 5)
=> [], 3 + (4 + 5)
=> [], 3 + 9
Now we define the evaluation relation S, e =~> S', e'
:
S,e =~> S',e'
iff
S, e =*> S', e'
S', e'
is in normal form
Example:
[], (1 + 2) + (4 + 5)
=~> [], 12
because
[], (1 + 2) + (4 + 5)
=> [], 3 + (4 + 5)
=> [], 3 + 9
=> [], 12
and 12
is a value (normal form)
Theorems about Nano1
Let’s prove something about Nano1!
- Every Nano1 program terminates
- Closed Nano1 programs don’t get stuck
- Corollary (1 + 2): Every closed Nano1 program evaluates to a value
How do we prove theorems about languages?
By induction.
Mathematical induction in PL
1. Induction on natural numbers
To prove ∀n.P(n) we need to prove:
- Base case: P(0)
- Inductive case: P(n + 1) assuming the induction hypothesis (IH): that P(n) holds
Compare with inductive definition for natural numbers:
data Nat = Zero -- base case
| Succ Nat -- inductive case
No reason why this would only work for natural numbers…
In fact we can do induction on any inductively defined mathematical object (= any datatype)!
- lists
- trees
- programs (terms)
- etc
2. Induction on terms
e ::= n | x
| e1 + e2
| let x = e1 in e2
To prove ∀e.P(e) we need to prove:
- Base case 1:
P(n)
- Base case 2:
P(x)
- Inductive case 1:
P(e1 + e2)
assuming the IH: thatP(e1)
andP(e2)
hold - Inductive case 2:
P(let x = e1 in e2)
assuming the IH: thatP(e1)
andP(e2)
hold
3. Induction on derivations
Our reduction relation =>
is also defined inductively!
- Axioms are bases cases
- Rules with premises are inductive cases
To prove ∀S, e, S′,e′.P(S, e ⇒ S′,e′) we need to prove:
- Base cases:
[Var]
,[Add]
,[Let]
- Inductive cases:
[Add-L]
,[Add-R]
,[Let-Def]
assuming the IH: thatP
holds of their premise
Theorem: Termination
Theorem I [Termination]: For any state S,e
there exists S',e'
such that S,e =~> S',e'
.
Proof idea: let’s define the size of an expression such that
- size of each expression is positive
- each reduction step strictly decreases the size
Then the length of the execution sequence for S,e
is bounded by the size of e
!
size n = ???
size x = ???
size (e1 + e1) = ???
size (let x = e1 in e2) = ???
Term size:
size n = 1
size x = 2
size (e1 + e1) = size e1 + size e2
size (let x = e1 in e2) = size e1 + size e2
Lemma 1: For any e
, size e > 0
.
Proof: By induction on the term e
.
- Base case 1:
size n = 1 > 0
- Base case 2:
size x = 2 > 0
- Inductive case 1:
size (e1 + e2) = size e1 + size e2 > 0
becausesize e1 > 0
andsize e2 > 0
by IH. - Inductive case 2: similar.
QED.
Lemma 2: For any S, e, S', e'
such that S,e => S',e'
, size e' < size e
.
Proof: By induction on the derivation of S,e => S',e'
.
Base case [Var]
.
- Given: the root of the derivation is
[Var]
:S,x => S,n
wheren = S[x]
- To prove:
size n < size x
size n = 1 < 2 = size x
Base case [Add]
. Try at home.
Inductive case [Add-L]
.
- Given: the root of the derivation is
[Add-L]
:
S, e1 => S', e1'
--------------------------
S, e1 + e2 => S', e1' + e2
- To prove:
size (e1' + e2) < size (e1 + e2)
- IH:
size e1' < size e1
size (e1' + e2)
= -- def. size
size e1' + size e2
< -- IH
size e1 + size e2
= -- def. size
size (e1 + e2)
Inductive case [Add-R]
. Try at home
Base case [Let]
. Try at home
Inductive case [Let-Def]
. Try at home
QED.
QUIZ
S, e1 => S', e1'
[Let-Def] --------------------------------------------
S, let x = e1 in e2 => S', let x = e1' in e2
What is the IH for the inductive case [Let-Def]
?
(A) S, e1 => S', e1'
(B) size e1' < size e1
(C) size (let x = e1 in e2) < size (let x = e1' in e2)
Theorem: Closed Programs don’t Get Stuck
First we need to define what are free variables fv
of an expression:
fv n = {}
fv x = {x}
fv (e1 + e1) = fv e1 + fv e2
fv (let x = e1 in e2) = fv e1 + fv e2 / {x}
Theorem II [No errors]: For any e
such that fv e = {}
, if [],e =~> S',e'
then e'
is a value.
Proof idea:
- Proof by induction on the number of reduction steps
- We can’t get stuck in 0 steps
- With k + 1 steps: we are never stuck in the first step, and the other k steps follow by IH?
- But what if the first step is
[], let x = 5 in e => [x:5], e
?- e might have free variables
- environment is not empty
- do IH does not apply…
- Need to generalize the theorem so that we can prove it by induction!
Lemma 3: For any S,e
such that fv e <= dom S
, if S,e =~> S',e'
then e'
is a value
Proof: by induction on the number k of reduction steps:
- Base case (k = 0): then
S',e' = S,e
, and sincefv e <= dom S
, thene
can’t be an unbound variable - Inductive case (k > 0): then
S,e => S1,e1 =~> S',e'
. To apply IH, we need to show:fv e1 <= dom S1
. We need an auxiliary lemma!
Lemma 4: For any S,e
such that fv e <= dom S
, if S,e => S',e'
then fv e' <= dom S'
, and dom S <= dom S'
Proof: By induction on the derivation of S,e => S',e'
.
Base case [Var]
.
- Given: the root of the derivation is
[Var]
:S, x => S, n
wheren = S[x]
- To prove:
fv n <= dom S
- To prove:
dom S <= dom S
Base case [Add]
. Try at home.
Inductive case [Add-L]
.
- Given: the root of the derivation is
[Add-L]
:
S, e1 => S', e1'
--------------------------
S, e1 + e2 => S', e1' + e2
- Given:
fv (e1 + e2) <= dom S
- To prove:
fv (e1' + e2) <= dom S'
- To prove:
dom S <= dom S'
- IH1:
fv e1' <= dom S'
- IH2:
dom S <= dom S'
fv (e1' + e2) <= dom S'
<==> -- def. fv
fv e1' + fv e2 <= dom S'
<==>
(fv e1' <= dom S') & (fv e2 <= dom S')
<==> -- IH1
fv e2 <= dom S'
<== -- IH2
fv e2 <= dom S
<== -- def fv
fv (e1 + e2) <= dom S
Inductive case [Add-R]
. Try at home
Base case [Let]
.
- Given: the root of the derivation is
[Let]
:S, let x = n in e2 => S[x->n], e2
- Given:
fv (let x = n in e2) <= S
- To prove:
fv e2 <= dom (S[x->n])
- To prove:
dom S <= dom (S[x->n])
fv e2 <= dom (S[x->n])
<==> -- def. dom
fv e2 <= dom S + {x}
<==>
fv e2 / {x} <= dom S
<==> -- def. fv, twice
fv (let x = n in e2) <= dom S
Inductive case [Let-Def]
. Try at home.
QED.
Nano2: adding functions
Syntax
We need to extend the syntax of expressions and values:
e ::= n | x -- expressions
| e1 + e2
| let x = e1 in e2
| \x -> e -- abstraction
| e1 e2 -- application
v ::= n -- values
| <S,\x -> e> -- closure
Operational semantics
We need to extend our reduction relation with rules for abstraction and application:
[Abs] S, \x -> e => S, <S,\x -> e>
[App] S, <S1,\x -> e> v => S1[x->v], e
S, e1 => S', e1'
[App-L] ----------------------
S, e1 e2 => S', e1' e2
S, e => S', e'
[App-R] ----------------------
S, v e => S', v e'
QUIZ
With rules defined as above and S = [x : <[],\y -> 4 + 5>]
, which reductions are valid?
(A) S, x (1 + 2) => S, x 3
(B) S, x (1 + 2) => S, <[],\y -> 4 + 5> (1 + 2)
(C) S, <[],\y -> 4 + 5> (1 + 2) => S, <[],\y -> 4 + 5> 3
(D) S, <[],\y -> 4 + 5> (1 + 2) => S, <[],\y -> 9> (1 + 2)
(E) B and C
Evaluation Order
With S = [x : <[],\y -> 4 + 5>]
:
S, x (1 + 2)
=> S, <[],\y -> 4 + 5> (1 + 2) -- [App-L], [Var]
=> S, <[],\y -> 4 + 5> 3 -- [App-R], [Add]
=> [y:3], 4 + 5 -- [App]
=> [y:3], 9 -- [Add]
Our rules define call-by-value:
- Evaluate the function (to a closure)
- Evaluate the argument (to some value)
- “Make the call”: evaluate the closure-body in the closure-env extended with formal mapped to actual
The alternative is call-by-name:
- do not evaluate the argument before “making the call”
- can we modify the application rules for Nano2 to make it call-by-name?
Theorems about Nano2
Let’s prove something about Nano2!
- Every Nano2 program terminates (?)
- Closed Nano2 programs don’t get stuck (?)
QUIZ
Are these theorems still true?
(A) Both true
(B) 1 is true, 2 is false
(C) 1 is false, 2 is true
(D) Both false
Theorems about Nano2
Every Nano2 program terminates (?)
What about
(\x -> x x) (\x -> x x)
?Closed Nano2 programs don’t get stuck (?)
What about
1 2
?
Both theorems are now false!
To recover these properties, we need to add types:
Every well-typed Nano2 program terminates
Well-typed Nano2 programs don’t get stuck
We’ll do that next week!
That’s all folks!


Welcome to PASII, a hub for all things Club and Society related in DCU
Register Login Dashboard Clubs


Reflections on Foundation Core Skills
What are three new things you have learned about yourself and your ego as a result of the core learning?
- That I unconsciously have a growth mindset for some things but not for others. Being mindful of it have been helpful in recognising whenever I’m limiting myself.
- That emotional intelligence is something I have to keep on developing throughout my life together with developing my mind and skills.
- I’m not very good at truly listening and it’s something I need to work on more.
What are the role of values, empathy and self awareness in learning and programming?
Learning does not happen in a vacuum and gone are the days where programmers sit in a room alone and merely crank out code after code after code. We need to have empathy, integrity and self-awareness as programmers because we create our applications with other people (teammates) for other people (customers).
Our values, as well as having empathy and self-awareness, are what will guide us into becoming not just adequate programmers but rather programmers who will create applications that are inclusive and enjoyed by many.
What has surprised you the most about the core learning?
That it’s not offered in other institutions. It seems like a no-brainer that these skills are needed by everyone not just because they’re needed in the workplace but more importantly because it makes you a better individual and can help you in your day-to-day life.
What were the most challenging aspects of the core learning?
Finding the time for it. Oftentimes, I focus too much on learning the technical skills that I need that I don’t put in the attention and effort that I need to for the core learning which is just as important.
Why do you think we, a programming school, are spending so much time focusing on core learning in a web development bootcamp course?
To set your students up for success. Employers don’t only look at technical skills, the ability to work in teams, teach yourself, handle stress, time management, listening and understanding and other core skills are just as important as how well you can code. Especially in the modern work environment, having these skills set you apart from other people.
Does the time you spent studying core learning here feel like a waste of time? Should you have just used that time to practicing programming instead? Justify your answer.
No, as I was doing the course full-time I had enough time for both the technical and core aspects of the curriculum.


| Home | Libraries | People | FAQ | More |
Default service implementation for an SSL stream.
class stream_service : public io_service::service
|
Name |
Description |
|---|---|
|
The type of a stream implementation. |
|
Name |
Description |
|---|---|
|
Start an asynchronous SSL handshake. |
|
|
Start an asynchronous read. |
|
|
Asynchronously shut down SSL on the stream. |
|
|
Start an asynchronous write. |
|
|
Create a new stream implementation. |
|
|
Destroy a stream implementation. |
|
|
Get the io_service object that owns the service. |
|
|
Perform SSL handshaking. |
|
|
Determine the amount of data that may be read without blocking. |
|
|
(Deprecated: use get_io_service().) Get the io_service object that owns the service. |
|
|
Return a null stream implementation. |
|
|
Peek at the incoming data on the stream. |
|
|
Read some data from the stream. |
|
|
Shut down SSL on the stream. |
|
|
Destroy all user-defined handler objects owned by the service. |
|
|
Construct a new stream service for the specified io_service. |
|
|
Write some data to the stream. |
|
Name |
Description |
|---|---|
|
The unique service identifier. |
Header: boost/asio/ssl/stream_service.hpp
Convenience header: boost/asio/ssl.hpp


{% extends "layout.html" %} {% block body %}
Are you sure you want to reset the experiment {{ experiment.name }}?
Are you sure you want to delete the experiment {{ experiment.name }}?


Concerning FreeCodeCamp's challenge
Show the Local Weather
Celsius/Fahrenheit
Current Temperature:
Country:
City:


Figure skating heroes return to Kelowna for Stars On Ice
by Parker CrookSome of the world's best figure skaters will grace the ice at Prospera Place in Kelowna in May.
The Stars On Ice tour, which began in the United States in 1986, will bring famed athletes who are set to compete in the upcoming World Figure Skating Championships to Kelowna May 8 at 7:30 p.m., according to a media release.
The 2020 starstudded tour lineup, comprised of Olympians, world champions and Canadian champions brings Kurt Browning, Elvis Stojko, Patrick Chan, Meryl Davis, Charlie White, Kaetlyn Osmond, Kaitlyn Weaver and Andrew Poje among others.
Tickets start at $27.50 and go on sale Dec. 6 at 10 a.m. with special on-ice seating and will be available through the Select Your Tickets website here.
For more information about the lineup, visit Stars on Ice online here.


| Job name pattern: |
job.([A-Z]{3}).(.*) |
this is a regular expression and creates two regex groups:
{0} and {1} |
| Group format: |
perm.{0}.Developer |
a format to construct a group with, (pattern references (to
the groups of the job name pattern) are optional, this allows to
define final group names to) |
| Permissions: |
|
check the permissions you would like the group to have for the newly created
job |
| Job name: |
job.ABC.ProjectAJob |
the name of the new job |
| Group assigned: |
perm.ABC.Developer |
the final group assigend to the job - ABC from got extracted
from the job name and used in the group format at the place of {0}.
This group will have the selected permissions for the job. |


Developed in the world's toughest market, we specialize in working in demanding, often impossible conditions.
We have served 100+ startups in Silicon Valley along with the biggest names in tech—Cisco, Google, McAfee, Microsoft, SAP, and VMware. We strive to not only market your product, but understand it's function and place in the technology scene.
Located in Palo Alto, o3 Rocket was founded in 2014 by marketing veterans froma large PR and social media firms. Our intention is to help Silicon Valley companies adapt to rapidly changing marketing campaigns.
8 hours/week, 32 hours/month
Organize messages and positioning
Identify top media and analysts
Outreach to media
4 hours/week, 16 hours/month
Produce content on social channels
Engage with community
Metrics reporting
4 hours/week, 16 hours/month
Content strategy across PR and social community
Corporate blog management and writing
Contributed article placement and creation
Head Marketer
CEO of Oppkey, assisting o3 Rocket accounts


There was an issue with your message. Please try again or send an email directly.
Back to Contact.
Sign up with your email and we'll let you know when we start our next rush!


Surprisingly productive after all-hands meeting this afternoon. Heading out for relaxation and paint scraping. Oh right, only one of those.
8/7/2009, 5:15:58 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Surprisingly productive after all-hands meeting this afternoon. Heading out for relaxation and paint scraping. Oh right, only one of those.
8/7/2009, 5:15:58 PM
Favs: 0
Retweets: 0
link


Bounds for individual eigenvalues and eigenvectors are provided by the driver xGGEVX (subsection <IP_ADDRESS>) or the computational routine xTGSNA (subsection 2.4.8). Bounds for cluster of eigenvalues and their associated pair of deflating subspaces are provided by the driver xGGESX (subsection <IP_ADDRESS>) or the computational routine xTGSEN (subsection 2.4.8).
We let be the ith computed eigenvalue pair and the ith exact eigenvalue pair.4.2Let and be the corresponding computed right and left eigenvectors, and xi and yi the exact right and left eigenvectors (so that and ). As in the standard nonsymmetric eigenvalue problem, we also want to bound the error in the average of a cluster of eigenvalues, corresponding to a subset of the integers from 1 to n. However, since there are both finite and infinite eigenvalues, we need a proper definition for the average of the eigenvalues for . Here we let denote the average of the selected eigenvalues4.3: , and similarly for . We also let and denote the exact pair of left and right deflating subspaces associated with the cluster of selected eigenvalues. Similarly, and are the corresponding computed pair of left and right deflating subspaces.
The algorithms for the generalized nonsymmetric eigenproblem are normwise backward stable; the computed eigenvalues, eigenvectors and deflating subspaces are the exact ones of slightly perturbed matrices A + E and B +F, where . The code fragment in the previous subsection approximates by , where , and the values ABNRM and BBNRM returned by xGGEVX are the 1-norm of the matrices A and B, respectively.
xGGEVX (or xTGSNA) returns reciprocal condition numbers for each eigenvalue pair and corresponding left and right eigenvectors and : si and . si is a reciprocal condition number for the computed eigenpair , and is referred to as RCONDE(i) by xGGEVX. is a reciprocal condition number for the left and right eigenvectors and , and is referred to as RCONDV(i) by xGGEVX (see subsection <IP_ADDRESS> for definitions). Similarly, xGGESX (or xTGSEN) returns condition numbers for eigenvalue clusters and deflating subspaces corresponding to a subset of the eigenvalues. These are and , the reciprocal values of the left and right projection norms p and q, and estimates of the separation between two matrix pairs defined by and (see subsection <IP_ADDRESS> for definitions). xGGESX reports and in RCONDE(1) and RCONDE(2) (PL and PR in xTGSEN)), respectively, and estimates of and in RCONDV(1) and RCONDV(2) (DIF(1) and DIF(2) in xTGSEN), respectively.
As for the nonsymmetric eigenvalue problem we provide both asymptotic and global error bounds. The asymptotic approximate error bounds for eigenvalues, averages of eigenvalues, eigenvectors, and deflating subspaces provided in Table 4.7 are true only for sufficiently small .
If the problem is ill-conditioned, the asymptotic bounds may only hold for extremely small values of . Therefore, we also provide similar global error bounds, which are valid for all perturbations that satisfy an upper bound on . The global error bounds in Table 4.8 are guaranteed to hold for all , where
We let in Table 4.8. If is small, then the computed pair of left and right deflating subspaces (or computed left and right eigenvectors) are small perturbations of the exact pair of deflating subspaces (or the true left and right eigenvectors). The error bounds conform with the corresponding bounds for the nonsymmetric eigenproblem (see subsection <IP_ADDRESS> ).
For ill-conditioned problems the restriction on may also be small. Indeed, a small value of shows that the cluster of eigenvalues (in the (1,1)-blocks of (A, B)) is ill-conditioned in the sense that small perturbations of (A, B) may imply that one eigenvalue in the cluster moves and coalesces with another eigenvalue (outside the cluster). Accordingly, this also means that the associated (left and right) deflating subspaces are sensitive to small perturbations, since the size of the perturbed subspaces may change for small perturbations of (A, B). See also the discussion of singular problems in section <IP_ADDRESS>.
As for the nonsymmetric eigenvalue problem we have global error bounds for
eigenvalues which are true for all E and F.
Let (A, B) be a diagonalizable matrix pair. We let the columns of
and
be the computed left and right
eigenvectors associated with
the computed generalized eigenvalue pairs
.
Moreover, we assume that
and
are normalized such that
and
,
i.e., we
overwrite
with
,
with
and
with
.
Then all eigenvalues
of (A, B) with
lie in the union of n regions
(``spheres'')
Notation Conversion For easy of reference, the following table summarizes the notation used in mathematical expression of the error bounds in tables 4.7 and 4.8 and in the corresponding driver and computational routines.
| Mathematical | Driver Routines | Computational Routines | ||
| notation | name | parameter | name | parameter |
| si | xGGEVX | RCONDE(i) | xTGSNA | S(i) |
| xGGEVX | RCONDV(i) | xTGSNA | DIF(i) | |
| xGGESX | RCONDE(1) | xTGSEN | PL | |
| xGGESX | RCONDE(2) | xTGSEN | PR | |
| xGGESX | RCONDV(1) | xTGSEN | DIF(1) | |
| xGGESX | RCONDV(2) | xTGSEN | DIF(2) |
The quantities li, ri, and used in Table 4.8 (for the global error bounds of the computed eigenvalue pair and the left and right eigenvectors and ) can be obtained by calling xTGSEN with .


MY FINANCES
NAME
SUBJECT
TYPE
VALUE
PAID
EDIT
DELETE
{{fin.name}}
{{fin.subject.name}}
{{fin.type}}
{{fin.financeValue| currency}}
{{fin.paid}}
Add Finance
Add Subject
Get As PDF
New Subject
Name
Cancel
Save
Debit
Credit
Credit
Name
Value
Subject
Pick a subject
Cancel
Save
Debit
Name
Value
Subject
Pick a subject
Payable until
Already Paid?
Already Paid?
Yes
No
Cancel
Save
Credit
Name
Value
Subject
Pick a subject
Cancel
Edit
Debit
Name
Value
Subject
Pick a subject
Payable until
Already Paid?
Already Paid?
Yes
No
Cancel
Edit


Shush
Shush
As Covid 19 spreads around the globe and countries go in to lockdown and work from home, I’ve had to do more and more meetings online.
When I’ve done online meetings in the past, I’ve had to do them either via conference call or via the conferencing setup at work, and therefore on Windows. They’ve generally worked OK.
However, as we’re all currently confined to working from home in the UK, I’ve been using my Mac. And my mechanical keyboard. Which is loud. Like, very loud 1. It means that I can’t type whilst on a conference call, as it’ll drown everyone else out!
We’re using Microsoft Teams for our meetings online and it works well. I can mute my microphone at any time using the on screen controls, but it’s not ideal.
After a bit of googling, I came across Shush. It enables the microphone to be used by a push to talk (PTT) button, instead of the standard behaviour of being constantly on. As it works at an OS level, I don’t have to use the settings in Teams to turn it on and off either and can simply use my hotkey to enable recording.
It’s available in the Mac App Store and is by the same firm that created Divvy, which I’ve used in the past as well.
Once installed and opened, it’s a small menu bar app that shows if the microphone is off or on.
The dropdown lets you choose between a push to talk or a push to silence option, which could be good for podcasters, but I’ve found that on occasions, it’s handy to switch between the two, even in the same call.
It’s pretty barebones - the settings allow you to change the hotkey and basic options.
It works nicely with my Logitech C720 webcam on macOS Catalina. I’m able to use PTT without any issues across a range of programs (as it’s the OS that’s doing all the hard work muting and unmuting the device).
As the Covid 19 pandemic continues, and I’m in daily Team meetings, this £5 app will come in extremely handy. Once this is over and I’m not working from home as much, it may be an app that I never really use again, but in the current time frame, it’s money well spent, and I’ve only been at home for a week so far!
As time goes by, I’m sure I may find other Mac apps that prove to be beneficial during this period, for which I’ll look at posting online about.
-
Knockoff Cherry MX Blues - a sound recording app on my phone suggested approximately 63dB! ↩


To begin, upload a .CSV file
(None of your data will be sent over the network!)
Or, try the demo dataset:
Use these dropdowns to suggest potential relationships between variables


Test purpose
Be aware that applying a filter to a particle system can cause it to fail in interesting yet mysterious ways! In some browsers, the addition of a filter can also cause a significant degradation in canvas animation speeds
- Create a Block entity to match the canvas dimensions, to act as a generation area for an Emitter with a set number of required particles.
- Create additional forces to act on the particles.
- Create the Emitter alongside its World object and artefact entity
- Check that the 'brownian-motion' force function responds to changes in the World object's user-defined 'brownianIntensity' attribute.
- Check that the 'mouse-disruptor' force follows the mouse cursor.
- Create a set of filters. Check to make sure that selecting a filter will make it apply to all the bear images in the Demo scene.
Touch test: should work as expected
Annotated code


Preparation time
overnight
Cooking time
1 to 2 hours
Serves
Serves 4
Ask your butcher to score the skin finely for this as the crackling is essential. The first brief roasting at the higher temperature is essential to set the skin on the route to crispness. These ribs are not sweet and sticky but lightly crisp and lip-tingling.
Put the pork belly in a china or glass dish.
For the rub, peel and crush the garlic to a paste, stirring in the soy, dried chilli flakes, groundnut oil, salt and five-spice powder. Spread this paste over the skin and underside of the pork belly. Leave it to marinate for a good 4 hours, if not overnight.
When the pork has marinated, preheat the oven at 220C/425F/Gas 8. Place the pork in a roasting tin then cook, skin-side up, for about 20 minutes. Lower the heat to 200C/400F/Gas 6 and continue cooking for a further 40-50 minutes, or until the skin is dark and crisp. Leave for 10 minutes to rest, then carve.
Meanwhile, to make the peach salsa, trim and finely chop the spring onions, finely chop the chilli, peel, stone and finely chop the peach and halve the tomatoes. Mix gently then dress with the lime juice and the olive oil.
Serve the ribs with the peach salsa on the side.


You are viewing an historical archive of past issues. Please report new issues to the appropriate project issue tracker on GitHub.
Issues
| # | Summary | Product | Status | Kind | When |
|---|---|---|---|---|---|
| 452 |
Remove black background from floater |
Synergy | open | bug | Created , updated |
| 450 |
Last.fm |
Synergy | closed | bug | |
| 449 |
Volume hot keys stop responding after running for a few days |
Synergy Advance | open | bug | Created , updated |
| 448 |
Integrate WODebug crash reports into Rails backend |
WODebug | open | feature request | Created , updated |
| 445 |
REQUEST: Display confirmation sheet when clicking "Defaults" or "Revert" |
Synergy | closed | feature request | Created , updated |
| 444 |
REQUEST: Hot key for "Buy from Amazon" |
Synergy | open | feature request | Created , updated |
| 443 |
REQUEST: Keep "Buy from Amazon" link active after adding art to iTunes |
Synergy | open | feature request | Created , updated |
| 442 |
Double-click on a Synergy Button set displays random button set |
Synergy | closed | bug | Created , updated |
| 441 |
Typo in opening paragraph |
WinSwitch | closed | bug | |
| 440 |
Special-case handling for parentheses in "Initials Only" mode |
WinSwitch | closed | bug | Created , updated |


 I have been depressed to varying degrees since high school, approximate since I was 15. I had at time been prescribed other medications, but got awful sexual side effects from welbutrin, paxil so I discontinued their use.
About 2 years ago my depression became debilitating, I just stayed at home and smoked pot and did not interact with the world, and my parents wanted to do somthign about it. I relented and was ultimately prescribed remeron (mirtazapine). Overall it was a decent drug, which helped with my depression and anxiety, however the side effects became a big issue. It worked great for helping me get to sleep, especialy after vaporizing some weed. it was fairly effective for anxiety and depression, thought I was still capable of having suicidal thoughts, they were more like fantasies than somthing I would really carry out.
I became a functional person again, held a job and went to school and was generaly happy with the results. At some point the side effects became too much and I asked to be switched from 30mg to 15 mg. I still had side effects however. I gained about 25-30 pounds very, very rapidly. I went from about 155 to about 180 in about two or three months. The rapid weight gain created lots of hideous stretch marks on my upper thighs and my ass (I am too embarassed to get naked now). the weight gain is brought on very similar to 'the munchies', though I don't really get the munchies from smoking weed. If that wasn't bad enough I also developed extreme constipation. It got to the point where I was actualy doing damage to my rectum, causing bleeding and excrutiating bowel movements. I had to see a doctor for this, which was humiliating.
I now had to take a large dose of fibre daily to keep this in check. next I noticed some hazyness and some memory loss, not as a result of smoking pot (which I have been doing for 5 years) coinciding with the medication. Finaly I have some other symptoms which I cannot directly attribute to the medication, namely dry skin and dandruff which may or may not be related. overall the medication worked as advertised, but managed to create some new, and very embarassing problems. I am currently trying to quit taking the medication In the hopes that I no longer need it and will be free of the side effects. I have been off the medication for 12 days now, and for the first week I felt fantastic. not euphoric, just feeling quite good. In the last two days however I have woken up in a panic.
I wake up to my alarm clock and my mind has already gone and left without me, my thoughts spin incomprehensibly and it is frightening. I can't gather myself together enought to control myself, and it is quite debilitating, making the rest of the day a challenge. It took me two hours to get out of bed and another to take shower. I hope this is only temporary, because I have already lost about 5 lbs with exercise, and hope not to have to return to this bittersweet pill.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{% extends "%s/base.html" % lang %} {% block methodology_stat_1 %}7.5M{% endblock %} {% block methodology_stat_2 %}31.3 TB{% endblock %} {% block methodology_description %} Unless otherwise noted, the metrics in all of the 22 chapters of the Web Almanac are sourced from the HTTP Archive dataset. HTTP Archive is a community-run project that has been tracking how the web is built since 2010. Using WebPageTest and Lighthouse under the hood, metadata about over 7.5 million websites are tested monthly and included in a public BigQuery database for analysis. The August 2020 dataset was used as the basis for the Web Almanac's metrics. For more information, see the Methodology page. {% endblock %} {% block foreword %}
2020 has been a year many of us would like to forget. It's rare for a community as globalized as ours to be affected by events as far-reaching as the COVID-19 pandemic and protests against racial injustice. These events almost discouraged us from restarting the project this year—with so many people physically and emotionally drained, how could we expect anyone to want to contribute, let alone have the time and energy for it? We proceeded with caution, hoping there was still community interest.
The purpose of this edition of the Web Almanac is not to forget about 2020, but to memorialize it. For better or worse, this is a chapter in our history. Despite all of the external pressures of this year, over a hundred contributors from the web community signed up and volunteered countless hours of their time for a project dedicated to remembering 2020 and the state of the web. Amazingly, we actually managed to expand the scope of this year's edition by adding three new chapters and only losing one.
When I ask contributors what they enjoy most about the project, the answer is almost always about the people. We work together as teams, we support each other, and in only five months' time we're able to build the equivalent of a 500+ page book! It's an enormous challenge, and while we haven't solved the world's problems, we've shown what's possible when people choose to work together.
Please enjoy the 2020 Web Almanac, the culmination of our labor of love for the web. And be sure to reach out if you'd like to join the team.
— Rick Viscomi, Web Almanac Editor-in-Chief
{% endblock %}


--- layout: page description: "Technische vragen kort uitgelegd" --- {% comment %} This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/. {% endcomment %} {% for post in site.posts %}


Profiling of the student based on CGPA and Experience and Finalizing Universities.
Assistance in Drafting LOR and SOP.
Application to Universities including Courier of Documents.
Further Assistance in Visa slot booking,Blocked Account Information and Assistance in Dorms and Housings.
Founder and Master Student -Universitat Stuttgart
Founder and Master Student -Universitat Saarland
Marketing Expert


$FF10/65296: Patch for reset routine, from $EAA4 Jump from $EAA4: FF10: 8E 03 18 STX $1803 FF13: A9 02 LDA #$02 FF15: 8D 00 18 STA $1800 FF18: A9 1A LDA #$1A FF1A: 8D 02 18 STA $1802 FF1D: 4C A7 EA JMP $EAA7 Previous Page / Next Page


Integer to Word | v1.0.170527
Enter an Integer Number to get English Word.
Enter Number
Description: This web app takes as input an integer number and returns the corresponding english word.


CSS pseudo-classes
|
:first-child, :last-child, :nth-child(2), :nth-last-child(2)
|
|
|
:only-child, :only-of-type
|
|
|
:first-of-type, :last-of-type, :nth-of-type(2), :nth-last-of-type(2)
|
|
|
:not
|
|
|
:active, :focus, :hover, :link, :visited
|
https://www.example.com
|
|
:target
|
test-anchor
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Officiis consequatur recusandae eaque provident blanditiis debitis animi eveniet quaerat quisquam.
|
|
:checked
|
|
|
:empty
|
|
|
:enabled, :disabled, :valid, :invalid
|
|
Elements should have a background color.
caniemail.com, 2019.


Package org.apache.sis.measure
Units of measurements, values related to measurement (like angles and ranges) and their formatters.
A key class in this package is
Units
, which provides static constants
for about 50 units of measurement including all the SI base units
(metre,
kilogram
second,
ampere,
kelvin,
mole and
candela)
together with some derived units
(square metre,
cubic metre,
metres per second,
hertz,
pascal,
newton,
joule,
watt,
tesla,
etc.)
and some dimensionless units
(radian,
steradian,
pixel,
unity).
In relation to units of measurement, this package also defines:
- Quantities
as a
double
value value associated to aUnit
instance. Angle
and its subclasses (Longitude
,Latitude
,ElevationAngle
)Range
and its subclasses (NumberRange
,MeasurementRange
) or annotation (ValueRange
)- Parsers and formatters
(
AngleFormat
,RangeFormat
,UnitFormat
)
prints "kPa", i.e. the kilo prefix has been automatically applied (SI prefixes are applied on SI units only, not on other systems). Other example:System.out.println( Units.PASCAL.multiply(1000) );
prints "8 mW" and "Instance of Power: true", i.e. Apache SIS detects that the result of N⋅m∕s is Watt, inherits the milli prefix from millimetre and creates an instance ofForce f = Quantities.create(4, Units.NEWTON); Length d = Quantities.create(6, Units.MILLIMETRE); Time t = Quantities.create(3, Units.SECOND); Quantity<?> e = f.multiply(d).divide(t); System.out.println(e); System.out.println("Instance of Power: " + (e instanceof Power));
Power
, not just Quantity<Power>
(the generic parent).
Parsing and formatting use Unicode symbols by default, as in µg/m². Parenthesis are recognized at parsing time and used for denominators at formatting time, as in kg/(m²⋅s). While uncommon, Apache SIS accepts fractional powers as in m^⅔. Some sentences like "100 feet", "square metre" and "degree Kelvin" are also recognized at parsing time.
- Since:
- 0.3
Defined in the sis-utility
module
-
Interface Summary Interface Description AngularVelocity The rate of change of an angular displacement with respect to time.Salinity The Practical Salinity Scale (PSS-78). -
Class Summary Class Description Angle An angle in decimal degrees.AngleFormat Parses and formats angles according a specified pattern.AngleFormat.Field Constants that are used as attribute keys in the iterator returned fromAngleFormat.formatToCharacterIterator(Object)
.ElevationAngle The angular height of an object measured from the horizontal plane.Latitude A latitude angle in decimal degrees.Longitude A longitude angle in decimal degrees.MeasurementRange<E extends Number & Comparable<? super E>> A range of numbers associated with a unit of measurement.NumberRange<E extends Number & Comparable<? super E>> A range of numbers capable of widening conversions when performing range operations.Quantities Provides static methods working onQuantity
instances.Range<E extends Comparable<? super E>> A set of minimum and maximum values of a certain class, allowing a user to determine if a value of the same class is contained inside the range.RangeFormat Parses and formatsRange
instances according the given locale.RangeFormat.Field Constants that are used as attribute keys in the iterator returned fromRangeFormat.formatToCharacterIterator(Object)
.UnitFormat Parses and formats units of measurement as SI symbols, URI in OGC namespace or other symbols.Units Provides constants for various Units of Measurement together with static methods working onUnit
instances.UnitServices The central point from which all unit services (parsing, formatting, listing, etc) can be obtained. -
Enum Summary Enum Description UnitFormat.Style Identify whether unit formatting uses ASCII symbols, Unicode symbols or full localized names. -
Annotation Types Summary Annotation Type Description ValueRange The range of values assignable to a field, or to a JavaBean property.


A
Thalia Falkner
Human Bard
1,000 xp
Experience
1
Inspiration
Medium
Size
16/20
Health
5
Temporary Health
16
AC
+3
Initiative
25 ft.
Speed
+1
STR
+1
DEX
+1
CON
+1
INT
+1
WIS
+1
CHA
Feats
Proficiency Bonus
+1
Strength
+1
Dexterity
+1
Constitution
+1
Intelligence
+1
Wisdom
+1
Charisma
+1
Saving throws
Acrobatics (Dex)
+1
Animal Handling (Wis)
+1
Arcana (Int)
+1
Athletics (Str)
+1
Deception (Cha)
+1
History (Int)
+1
Insight (Wis)
+1
Intimidation (Cha)
+1
Investigation (Int)
+1
Medicine (Wis)
+1
Nature (Int)
+1
Perception (Wis)
+1
Performance (Cha)
+1
Persuasion (Cha)
+1
Religion (Int)
+1
Sleight of Hand (Dex)
+1
Stealth (Dex)
+1
Survival (Wis)
+1
Skills
C


{% extends "square_base.html" %} {% block content %}
Over the years, we've had the privilege of working with some of the very talented folks who are now at Square. Square is already well known for its world-class engineering and design, but in recent months we've gotten to know much more about Square the company: its vision, its team, and most crucially, its engineering culture.
The reality behind the reputation is better yet. All of that talent is focused on the mission to make commerce easy -- a big challenge and an even bigger opportunity. We love how Square keeps engineering novel solutions to problems people didn't imagine could be fixed. Their products have already helped millions of local businesses, and the future is more exciting still. We knew Square was the place for us.
We’ve always been proud of our New York City roots, so it's great to see Square's contribution to fulfilling the city’s promise as a world capital for technology. We’re excited to help Square build out its NYC office. With its deep tradition in finance, a burgeoning tech scene, and more than 200,000 small businesses in just 300 square miles, the greatest city in the world is a perfect fit for Square.
As for Viewfinder, existing users will still be able to use the Viewfinder app for the time being, although we will no longer be releasing updates or providing customer support.
It's been a joy to create Viewfinder. We are grateful to our investors, advisors, partners, and most importantly, our users. Your support and feedback made Viewfinder possible. And collectively through Viewfinder, we've captured countless memories, bringing us closer together with friends and family.
For press inquiries, please contact<EMAIL_ADDRESS>Thanks, The Viewfinder team


Home
Designs
Resume
Contact
Home
Designs
Website
Blog
Infographics
Resume
Contact
Website
Blog
Infographics
Website
Blog
Infographics
Some of my Web designs
Some of my Infographics designs
DIV
Professional Presentation Designer
I will design a professional presentation for you.
Preview
Starting at $5
DIV
Professional Presentation Designer
I will design a professional presentation for you.
Preview
Starting at $5
DIV
Professional Presentation Designer
I will design a professional presentation for you.
Preview
Starting at $5
Some of my Web designs
Some of my Infographics designs
DIV
Professional Presentation Designer
I will design a professional presentation for you.
Preview
Starting at $5
DIV
Professional Presentation Designer
I will design a professional presentation for you.
Preview
Starting at $5


Japanese hotel group Unizo gets six new buyout offers
TOKYO: Japanese hotel operator Unizo Holdings said on Sunday (Nov 24) it had received six more buyout offers at a price competitive with an existing US$1.6 billion bid proposed by Blackstone Group .
Unizo said it had received offers from four overseas investment funds and one Japanese fund as well as one domestic company, without naming the bidders.
Unizo said none of the offers would meet its demands.
The multiple offers may further complicate the takeover saga surrounding the hotel operator, which is already in talks with two top global investment groups - Blackstone and Fortress Investment Group.
Unizo in July became a target for a hostile bid by a Japanese travel agent H.I.S. Co . Unizo at one stage turned to SoftBank Group-owned Fortress to fend off the bid. But later it withdrew its support for Fortress' white-knight offer.
Last month, Blackstone offered to buy the company at 5,000 yen per share, valuing Unizo at US$1.6 billion.
Unizo said on Sunday it was positively engaged in talks with Blackstone. Blackstone on Friday extended the deadline for Unizo to respond to its offer..
Fortress is currently running a public tender offer to buy Unizo at 4,100 yen per share, valuing the company at US$1.3 billion.
Unizo said on Sunday it was asking Fortress to raise its bid price to 5,000 yen per share. Unizo said it wanted any bidder to make an offer at 5,000 yen per share or more. Some of the new bidders are still considering the offer price, Unizo said.


--- layout: post title: OData.org Weekly News Letter (6th week 2015) date: 2015-02-10 01:31:35.000000000 +08:00 categories: [] tags: [] status: publish type: post published: true author: Yi Ding ---
http://dynamicsxrmtools.codeplex.com/
http://blogs.msdn.com/b/odatateam/archive/2015/02/06/announcement-odata-web-api-5-4-release.aspx
https://chrome.google.com/webstore/detail/xodata%C2%AE/hpooflanfopjepihkcjjfeonlnhfnmpp
http://raider.mountunion.edu/csc/CSC492/Sp15/proj_topics.html
https://www.npmjs.com/package/flowdata


from abc import ABCMeta, abstractmethod
from ase import Atoms
from describe import System
from future.utils import with_metaclass
[docs]class Descriptor(with_metaclass(ABCMeta)):
"""An abstract base class for all descriptors.
"""
def __init__(self, flatten=True):
"""
Args:
flatten (bool): Whether the output of create() should be flattened
to a 1D array.
"""
self.flatten = flatten
[docs] def create(self, system, **kwargs):
"""Creates the descriptor for the given systems.
Args:
system (System): The system for which to create the
descriptor.
"""
# Ensure that we get a System
if isinstance(system, Atoms):
system = System.from_atoms(system)
return self.describe(system, **kwargs)
[docs] @abstractmethod
def describe(self, system):
"""Creates the descriptor for the given systems.
Args:
system (System): The system for which to create the
descriptor.
Returns:
A descriptor for the system in some numerical form.
"""
[docs] @abstractmethod
def get_number_of_features(self):
"""Used to inquire the final number of features that this descriptor
will have.
Returns:
int: Number of features for this descriptor.
"""


Home
Whishlist
my cart
Contact
Additional 50% Off
On clothes for kids,women & Mens Wear
When an unknown.
$45.00
When an unknown.
$45.00
When an unknown.
$45.00
This Week's Sale
Save Up To 50%
Follow us
Want to change how you receive these emails?
2018 - 19 Copy Right by Themeforest powerd by Pixel Strap
Unsubscribe


Version 3.0.0
General
- [NEW] Added new Feedback module
- [NEW] Minimum iOS Deployment version is now iOS 5.0
- [NEW] Migrated to use ARC
- [NEW] Added localizations provided by Wordcrafts.de: Chinese, English, French, German, Italian, Japanese, Portuguese, Brazilian-Portuguese, Russian, Spanish
- [NEW] Added Romanian, Hungarian localization
- [UPDATE] Updated integration and migration documentation
- Installation & Setup (Recommended)
- Installation & Setup Advanced (Using Git submodule and Xcode sub-project)
- Migration from previous SDK Versions
- [UPDATE] Using embedded.framework for binary distribution containing everything needed in one package
- [UPDATE] Improved Xcode project setup to only use one static library
- [UPDATE] Providing build settings as
HockeySDK.xcconfig
file for easier setup - [UPDATE] Remove
-ObjC
fromOther Linker Flags
, since the SDK doesn’t need it anymore - [UPDATE] Improved documentation
- [UPDATE] Excluded binary UUID check from simulator builds, so unit test targets will work. But functionality based on binary UUID cannot be tested in the simulator, e.g. update without changing build version.
- [BUGFIX] Fixed some new compiler warnings
- [BUGFIX] Fixed some missing new lines at EOF
- [BUGFIX] Make sure sure JSON serialization doesn’t crash if the string is nil
- [BUGFIX] Various additional minor fixes
Crash Reporting
- [NEW] Added anonymous device ID to crash reports
- [UPDATE] The following delegates in
BITCrashManagerDelegate
moved toBITHockeyManagerDelegate
: - (NSString *)userNameForCrashManager:(
BITCrashManager*)crashManager;
is now- (NSString *)userNameForHockeyManager:(
BITHockeyManager*)hockeyManager componentManager:(
BITHockeyBaseManager*)componentManager;
- (NSString *)userEmailForCrashManager:(
BITCrashManager*)crashManager;
is now- (NSString *)userEmailForHockeyManager:(
BITHockeyManager*)hockeyManager componentManager:(
BITHockeyBaseManager*)componentManager;
- [BUGFIX] Moved calculation of time interval between startup and crash further up in the code, so delegates can use this information e.g. to add it into a log file
- [BUGFIX] If a crash was detected but could not be read (if handling crashes on startup is implemented), the delegate is still called
- [BUGFIX] Timestamp in crash report is now always UTC in en_US locale
- [BUGFIX] Make sure crash reports incident identifier and key don’t have special [] chars and some value
Feedback
- [NEW] User feedback interface for direct communication with your users
- [NEW] iOS 6 UIActivity component for integrating feedback
- [NEW] When first opening the feedback list view, user details and show compose screen are automatically shown
Updating
- [NEW] Support for In-App updates without changing
CFBundleVersion
- [UPDATE] Update UI modified to be more iOS 6 alike
- [UPDATE] Update UI shows the company name next to the app name if defined in the backend
[UPDATE] Updated integration and migration documentation: Installation & Setup (Recommended), Installation & Setup Advanced (Using Git submodule and Xcode sub-project), Migration from previous SDK Versions
[BUGFIX] Fixed a problem showing the update UI animated if there TTNavigator class is present even though not being used
- [NEW] Support for In-App updates without changing
Version 3.0.0 RC 1
General:
- [NEW] Added localizations provided by Wordcrafts.de: Chinese, English, French, German, Italian, Japanese, Portuguese, Brazilian-Portuguese, Russian, Spanish
- [NEW] Added Romanian localization
- [UPDATE] Documentation improvements
- [UPDATE] Exclude binary UUID check from simulator builds, so unit test targets will work. But functionality based on binary UUID cannot be tested in the simulator, e.g. update without changing build version.
- [BUGFIX] Cocoapods bugfix for preprocessor definitions
- [BUGFIX] Various additional minor fixes
Feedback:
- [UPDATE] Only push user details screen automatically onto the list view once
- [BUGFIX] Show proper missing user name or email instead of showing
(null)
in a button - [BUGFIX] Various fixes to changing the
requireUserEmail
andrequireUserName
values
Version 3.0.0b5
General:
- [NEW] Remove
-ObjC
fromOther Linker Flags
, since the SDK doesn’t need it - [NEW] Update localizations (german, croatian)
- [BUGFIX] Fix some new compiler warnings
- [BUGFIX] Fix some missing new lines at EOF
- [BUGFIX] Make sure sure JSON serialization doesn’t crash if the string is nil
- [NEW] Remove
Crash Reporting:
- [NEW] Add anonymous device ID to crash reports
- [BUGFIX] Move calculation of time interval between startup and crash further up in the code, so delegates can use this information e.g. to add it into a log file
- [BUGFIX] Call delegate also if a crash was detected but could not be read (if handling crashes on startup is implemented)
- [BUGFIX] Format timestamp in crash report to be always UTC in en_US locale
- [BUGFIX] Make sure crash reports incident identifier and key don’t have special [] chars and some value
Feedback:
- [NEW] Ask user details and show compose screen automatically on first opening feedback list view
- [BUGFIX] Fix some users own messages re-appearing after deleting them
- [BUGFIX] Problems displaying feedback list view in a navigation hierarchy
Updating:
- [BUGFIX] Fix a problem showing the update UI animated if there TTNavigator class is present even though not being used
Version 3.0.0b4
Crash Reporting:
- [BUGFIX] Fix a crash if
username
,useremail
oruserid
delegate method returnsnil
and trying to send a crash report
- [BUGFIX] Fix a crash if
Feedback:
- [BUGFIX] Fix user data UI not always being presented as a form sheet on the iPad
Updating:
- [BUGFIX] Fix a problem showing the update UI animated if there TTNavigator class is present even though not being used
Version 3.0.0b3
General:
- [BUGFIX] Exchange some more prefixes of TTTAttributedLabel class that have been missed out
- [BUGFIX] Fix some new compiler warnings
Crash Reporting:
- [BUGFIX] Format timestamp in crash report to be always UTC in en_US locale
Version 3.0.0b2
General:
- [BUGFIX] Add missing header files to the binary distribution
- [BUGFIX] Add missing new lines of two header files
Version 3.0.0b1
General:
- [NEW] Feedback component
- [NEW] Minimum iOS Deployment version is now iOS 5.0
- [NEW] Migrated to use ARC
- [UPDATE] Improved Xcode project setup to only use one static library
- [UPDATE] Providing build settings as
HockeySDK.xcconfig
file for easier setup - [UPDATE] Using embedded.framework for binary distribution containing everything needed in one package
Feedback:
- [NEW] User feedback interface for direct communication with your users
- [NEW] iOS 6 UIActivity component for integrating feedback
Updating:
- [NEW] Support for In-App updates without changing
CFBundleVersion
- [UPDATE] Update UI modified to be more iOS 6 alike
- [UPDATE] Update UI shows the company name next to the app name if defined in the backend
- [NEW] Support for In-App updates without changing
Version 2.5.5
General:
- [BUGFIX] Fix some new compiler warnings
Crash Reporting:
- [NEW] Add anonymous device ID to crash reports
- [BUGFIX] Move calculation of time interval between startup and crash further up in the code, so delegates can use this information e.g. to add it into a log file
- [BUGFIX] Call delegate also if a crash was detected but could not be read (if handling crashes on startup is implemented)
- [BUGFIX] Format timestamp in crash report to be always UTC in en_US locale
- [BUGFIX] Make sure crash reports incident identifier and key don’t have special [] chars and some value
Updating:
- [BUGFIX] Fix a problem showing the update UI animated if there TTNavigator class is present even though not being used
Version 2.5.4
General:
- Declared as final release, since everything in 2.5.4b3 is working as expected
Version 2.5.4b3
General:
- [NEW] Atlassian JMC support disabled (Use subproject integration if you want it)
Version 2.5.4b2
Crash Reporting:
- [UPDATE] Migrate pre v2.5 auto send user setting
- [BUGFIX] The alert option ‘Auto Send’ did not persist correctly
Updating:
- [BUGFIX] Authorization option did not persist correctly and caused authorization to re-appear on every cold app start
Version 2.5.4b1
General:
- [NEW] JMC support is removed from binary distribution, requires the compiler preprocessor definition
JIRA_MOBILE_CONNECT_SUPPORT_ENABLED=1
to be linked. Enabled when using the subproject - [BUGFIX] Fix compiler warnings when using Cocoapods
- [NEW] JMC support is removed from binary distribution, requires the compiler preprocessor definition
Updating:
- [BUGFIX]
expiryDate
property not working correctly
- [BUGFIX]
Version 2.5.3
General:
- [BUGFIX] Fix checking validity of live identifier not working correctly
Version 2.5.2
General:
- Declared as final release, since everything in 2.5.2b2 is working as expected
Version 2.5.2b2
General:
- [NEW] Added support for armv7s architecture
Updating:
- [BUGFIX] Fix update checks not done when the app becomes active again
Version 2.5.2b1
General:
- [NEW] Replace categories with C functions, so the
Other Linker Flag
-ObjC
and-all_load
won’t not be needed for integration - [BUGFIX] Some code style fixes and missing new lines in headers at EOF
- [NEW] Replace categories with C functions, so the
Crash Reporting:
- [NEW] PLCrashReporter framework now linked into the HockeySDK framework, so that won’t be needed to be added separately any more
- [NEW] Add some error handler detection to optionally notify the developer of multiple handlers that could cause crashes not to be reported to HockeyApp
- [NEW] Show an error in the console if an older version of PLCrashReporter is linked
- [NEW] Make sure the app doesn’t crash if the developer forgot to delete the old PLCrashReporter version and the framework search path is still pointing to it
Updating:
- [BUGFIX] Fix disabling usage tracking and expiry check not working if
checkForUpdateOnLaunch
is set to NO - [BUGFIX]
disableUpdateManager
wasn’t working correctly - [BUGFIX] If the server doesn’t return any app versions, don’t handle this as an error, but show a warning in the console when
debugLogging
is enabled
- [BUGFIX] Fix disabling usage tracking and expiry check not working if
Version 2.5.1
General:
- [BUGFIX] Typo in delegate
shouldUseLiveIdentifier
ofBITHockeyManagerDelegate
- [BUGFIX] Default updateManager delegate wasn’t set
- [BUGFIX] Typo in delegate
Crash Reporting:
- [BUGFIX] Crash when developer sends the notification
BITHockeyNetworkDidBecomeReachableNotification
- [BUGFIX] Crash when developer sends the notification
Version 2.5
General:
[NEW] Unified SDK for accessing HockeyApp on iOS
Requires iOS 4.0 or newer
Replaces the previous separate SDKs for iOS: HockeyKit and QuincyKit.
The previous SDKs are still available and are still working. But future HockeyApp features will only be integrated in this new unified SDK.
Integration either as framework or Xcode subproject using the sourcecode
Check out Installation & Setup
[NEW] Cleaned up public interfaces and internal processing all across the SDK
[NEW] AppleDoc based documentation and HowTos
This allows the documentation to be generated into HTML or DocSet.
Crash Reporting:
[NEW] Workflow to handle crashes that happen on startup.
Check out How to handle crashes on startup for more details.
[NEW] Symbolicate iOS calls async-safe on the device
[NEW] Single property/option to deactivate, require user to agree submitting and autosubmit
E.g. implement a settings screen with the three options and set
[BITCrashManager crashManagerStatus]
to the desired user value.[UPDATED] Updated PLCrashReporter with updates and bugfixes (source available on GitHub)
[REMOVED] Feedback for Crash Groups Status
Please keep using QuincyKit for now if you want this feature. This feature needs to be redesigned on SDK and server side to be more efficient and easier to use.
Updating:
[NEW] Expire beta versions with a given date
[REMOVED] Settings screen
If you want users to be able not to send analytics data, implement the
[BITUpdateManagerDelegate updateManagerShouldSendUsageData:]
delegate and return the value depending on what the user defines in your settings UI.


The Toolbox uses the TLC model checker to model check the current spec. More precisely, TLC checks a model of the specification. The Models help page explains what a model is and how to manage models. The Creating a Model page explains how to create a model. The Checking a Model page explains how to run TLC and what to do when it reports an error.
TLC can make use of multiple processors, getting speedups that are almost linear in the number of processors. It can use multiple processors (cores) in a single computer, and multiple networked computers. See the How to run section of the Model Overview Page and Running TLC in Distributed Mode.


你好我的朋友！
My name is Meredith, I program, and this will become the coolest site on the interweb once it has reached my standards. For now, enjoy the anticipation.
My name is Meredith, I program, and this will become the coolest site on the interweb once it has reached my standards. For now, enjoy the anticipation.


Man (36) admits stealing wallet from Conall Kerrigan who was later found dead near Derry walls
A 36-year-old man has pleaded guilty to stealing the wallet from a man who was later found dead between Derry's walls and Millennium Forum four years ago.
Adrian Vasile Aitoneanu, a Romanian national whose address was given as Selway Street in Rotherham, England, was re-arraigned on the day of his trial at Derry Crown Court on a charge of robbing Conall Kerrigan of his wallet and contents on August 23 2015.
Mr Kerrigan (35) had just returned home from England to Claudy and had planned to set up his own plumbing business.
He was out celebrating with friends on the night his body was found. At the time police said they did not believe his death was the result of a crime.
The defendant also pleaded guilty on re-arraignment to stealing an iPhone 6 valued at £600 from a woman on the same night.
Defence barrister Sean Doherty said there was a potential second defendant in the case, also a Romanian man, whose extradition from the Republic was recently approved.
Mr Doherty said that man had 15 days to appeal the extradition order.
A barrister for the Public Prosecution Service told Judge Elizabeth McCaffrey that if the extradition went ahead "proceedings here are ready to go".
Aitoneanu was released on continuing bail until his plea and sentence hearing takes place on January 7.
Judge McCaffrey ordered a pre-sentence report for that date and also adjourned the case against the man awaiting extradition until December 17.
Subscribe to our most read headlines in the evening newsletter


Home
About
Projects
Resume
PATHUM DANTHANARAYANA
Software Engineering Student, Carleton University
RESUME_


1. Setup
ArchivesSpace
- Our hosts have provided us with test deployments of ArchivesSpace
- See handout or whiteboard for connection details
- Make sure you can access ArchivesSpace Web UI from your web browser
- Make sure you can access ArchivesSpace API from your web browser


An Exhibit of Markdown
From An Exhibit of Markdown by DAVID JOHNSTONE
This note demonstrates some of what Markdown is capable of doing.
Note: Feel free to play with this page. Unlike regular notes, this doesn’t automatically save itself.
Basic formatting
Paragraphs can be written like so. A paragraph is the basic block of Markdown. A paragraph is what text will turn into when there is no reason it should become anything else.
Paragraphs must be separated by a blank line. Basic formatting of italics and bold is supported. This can be nested like so.
Lists
Ordered list
- Item 1
- A second item
- Number 3
- Ⅳ
Note: the fourth item uses the Unicode character for Roman numeral four.
Unordered list
- An item
- Another item
- Yet another item
- And there’s more…
Paragraph modifiers
Code block
Code blocks are very useful for developers and other people who look at code or other things that are written in plain text. As you can see, it uses a fixed-width font.
You can also make inline code
to add code into other things.
Quote
Here is a quote. What this is should be self explanatory. Quotes are automatically indented when they are used.
Headings
There are six levels of headings. They correspond with the six levels of HTML headings. You’ve probably noticed them already in the page. Each level down uses one more hash character.
Headings can also contain formatting
They can even contain inline code
Of course, demonstrating what headings look like messes up the structure of the page.
I don’t recommend using more than three or four levels of headings here, because, when you’re smallest heading isn’t too small, and you’re largest heading isn’t too big, and you want each size up to look noticeably larger and more important, there there are only so many sizes that you can use.
URLs
URLs can be made in a handful of ways:
- A named link to MarkItDown. The easiest way to do these is to select what you want to make a link and hit
Ctrl+L
. - Another named link to MarkItDown
- Sometimes you just want a URL like http://www.markitdown.net/.
Horizontal rule
A horizontal rule is a line that goes across the middle of the page.
It’s sometimes handy for breaking things up.
Images
Markdown can also contain images. I’ll need to add something here sometime.
Finally
There’s actually a lot more to Markdown than this. See the official introduction and syntax for more information. However, be aware that this is not using the official implementation, and this might work subtly differently in some of the little things.


Button
Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.
Default examples
Sizes
Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.
Outline examples
Faded examples Custom
Custom faded button variants


Ceasar's Cipher (also known as Shift Cipher) is the easiest and most well known cipher in cryptography. It uses substitution where each letter in the message is replaced by a letter some fixed number of positions away in the alphabet. For example, with a shift of 1, A would be replaced by B, B would become C, and so on. The method is named after Julius Caesar, who used it in his private correspondence.
Message to Encode — This message is first be converted to upper case letters A-Z, and all non A-Z letters are discarded.
The following algorithm assumes the message has been preconditioned to remove any unwanted characters and covert to uppercase letters.
for (i = 0 to Message.length) asciiNumber = Message.charCodeAt(i) - 65 + self.Shift; Message[i] = String.fromCharCode(absolute(asciiNumber % 26) + 65); return Message


Travello
Locations
Benefits
Contact
Dream the Destination
Travel to yours minds content, let us handle the details
Contact Us
Book Now
Travel Carelessly
We take care of everything,
from picking the perfect hotel
to choosing the best plane seats.


The correlation is a quantitative measure to describes coherences. The correlation analysis considers criterias (e.g. experimental results) and measures - based on a hypothesis - their connection properties.
The quality of the correspondence between criterias and the considered hypothesis is characterised by the correlation coefficient.
The correlation coefficient r is a number of the range -1 and +1. In the case r is near by +1 (r is near by -1) then there is a good connection between the criterias and the hyptothesis (between the criterias and and the "reverse" hypothesis).
If r is near by 0 it is suggested that the criterias are "non correlated" to the hypothesis.
The statistical cryptanalysis is searching for a hypothesis that has a maximum correlation.
Example. Correlation analysis to determine a Caesar encryption key:
At the first step of the Caesar analysis the histograms of the ciphertext and of a reference text are determined (you may define the reference file via menu Options \ Text Options). The main hypothesis is that the histograms of the decrypted ciphertext and the reference text are equal.
Based on this hypothesis the following key hypotheses are derived: the Caesar key is the letter "A", the Caesar key is the letter "B", etc. The key hypothesis with the best correlation is the output of the Caesar analysis:
In this example the letter "J" is the result of the Caesar analysis.


Slow-cooked Pork Carnitas
This recipe makes a lot and is super easy. A whole roast usually makes enough for a few meals (depending on how many people will be eating it). Leftovers can be refrigerated for 4-5 days.
- ⏲ Prep time: 15 min
- 🍳 Cook time: 8 hr 30 min
- 🍽 Servings: 10-11
Ingredients
- 2 ½ lbs. boneless pork shoulder
- 6 cloves of garlic, cut into slivers
- 1 ½ teaspoons cumin
- ½ teaspoon sazon
- ¼ teaspoon dry oregano
- ¾ cup low sodium chicken broth
- 2-3 chipotle peppers in adobo sauce
- 2 bay leaves
- ¼ teaspoon dry adobo seasoning
Directions
- Season pork with kosher salt and pepper.
- In a medium sauté pan on medium-high heat, brown pork on all sides.
- Remove from heat and allow to cool, about 10 minutes.
- Using a sharp knife, insert blade into pork, cutting small holes and insert garlic slivers as far in as you can.
- Pour chicken broth in slow cooker.
- Add pork and season with cumin, adobo, sazon, and oregano.
- Add bay leaves and chipotle peppers.
- Cover and cook low for 8 hours.
- After 8 hours, shred pork using 2 forks and combine with juices.
- Let cook for another 15-30 mins.
Contribution
Recipe tags:
pork
slowcooked
mexican


|
SideCar
|
#include <iosfwd>
#include <string>
Go to the source code of this file.
Data Structures | |
| class | SideCar::IO::Printable< T > |
| Interface definition for classes that can be written to a C++ text output stream (std::ostream) object. More... | |
Namespaces | |
| Logger | |
| Namespace for the Log logging device and support classes. | |
| SideCar | |
| Namespace for all entities specific to the 331 SideCar project. | |
| SideCar::IO | |
| Namespace for entities that handle SideCar data I/O. | |


Location
Santa Fe River, New Mexico and other rivers around the southwest; The tale of La Llorana is present many in Latin American and Mexican cultures.
Description
The ghost of a woman who lost her children and now cries while looking for them in the river, often causing misfortune to those who are near or hear her. She is often described as a very pale figure with long dark hair.  The name La Llorona translates to "the weeping woman."
Legend
The basic story tells of a beautiful woman by the name of María who drowns her children in a river as a means of revenge towards her husband, who had left her for a younger woman. She drowns herself in the river when she realizes her children are dead.
At the gates of heaven, she is challenged over the whereabouts of her children, and is not permitted to enter the afterlife until she has found them. María is forced to wander the Earth for all eternity, searching in vain for her drowned offspring. She constantly weeps, hence her name "La Llorona." She is caught between the living world and the spirit world.
Mexican parents often use this story to prevent their children from wandering out at night. In some versions of this tale, La Llorona will kidnap wandering children who resemble her missing children. She asks them for forgiveness, then drowns the children to take the place of her own. People who claim to have seen her say she appears at night or in the late evening by rivers or lakes. Some believe those who hear the wails of La Llorona are marked for death but those who escape in time are not so marked, similar to the Gaelic banshee legend. She is said to cry, ¡Ay, mis hijos!, which means Oh, my children!
Skepticism
The legend of La Llorona persists in areas where mountain lions are active. The Audubon Field Guide to North American Mammals notes that the mountain lion's "blood curdling mating call has been likened to a woman's scream."This may be the original source of the legend, and may contribute to keeping the legend alive.


Toggle navigation
Bug Tracker
Home
(current)
Submit
First name:
Last name:
Save developer
Description:
Status:
Developer:
Save bug


While I was browsing the net, I came across this amazing remix. As Yuvan is busy butchering his father's masterpieces in the name of remixes, this group of Malaysian hip hop artists have produced another masterpiece remixing the older master piece by Ilayaraja.
http://www.youtube.com/watch?v=uQSDr4609BU


Each inclusion uses regular expression pattern matching, and must be separated by a new line.
An empty list implies that everything is included.
myapp/src/main/web/.*\.html
myapp/src/main/web/.*\.jpeg
myapp/src/main/web/.*\.gif
The example above illustrates that a build will only occur, if html/jpeg/gif files
have been committed to the GitHub repository. Exclusions take precedence over
inclusions, if there is an overlap between included and excluded regions.
More information on regular expressions can be found
here.


Dylos monitor setup full with log
2014-04-10
Dylosmonitorsetupfullwith_log Following http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/ and UdevrulesforUSB’sattachedtoRPi
create a udev rule for RPI
edited the file /etc/udev/rules.d
using command
sudo nano /etc/udev/rules.d/90-phone.rules
and add follwoing lines to giving persistant name for USB data card (HUWAEI E303F) and USB to serial cable for Dylos monitor.
KERNEL==“ttyUSB”, ATTRS{idVendor}==“12d1”, ATTRS{idProduct}==“1506”, NAME=“phone”, MODE=“0666”,SYMLINK+=“mobile” KERNEL==“ttyUSB”, ATTRS{idVendor}==“067b”, ATTRS{idProduct}==“2303”, NAME=“dylos”, MODE=“0666”,SYMLINK+=“dylos”
by this, while connecting these two devices, the folder /dev shows the files for USB data card and USB to serial cable for Dylos monitor. By this, these device can be refered in python script or gammu-config etc.
Gammu installation
gammu-config , with /dev/phone gammu –identify, hangs whole computer, no pinging, and RPI has to be restarted, this is the problem with BBB also, inwhich it even non detect the usb in lsusb.
Found gammu makes problem with RPi, alternative is use it as inetrnet based data tranfer following
http://bigcowpi.blogspot.in/2013/03/raspberry-pi-as-3g-huawei-e303-wireless.html
Internet gets connected with hipuchs, any how try,
Use github as data repository, a alternative to xylos. cron with git push. 1. Writing code for collecting serial and save it as csv file, Use logging module to save the exception and info into a file. 2. Exception hanlder for serial connection and data base problem was addressed by follwoing http://stackoverflow.com/questions/4508849/how-to-log-python-exception executing this
import logging
def foo():
try:
some_code()
except:
logging.exception('')
This makes the python command to run silent and error and exception recorded in log file. exception for SERIAl, database was made. 3. The data coming from serial has to be cleaned to remove unwanted chareterc and spaces. used this command
a= '2014-04-10T09:35,4941,513 '
>>> b = a.strip( ' \r\n' )
Still in sqlite a special chrecters is seen. 4. There is a problem in csv file it is not getting updated, instead overwritten. follwoed this
and changed the flag from ‘w’ to ‘a’ 5. In csv file there is a “ in each line has to see, finally found a old script written for this and used instead, the script is as follows
#!/usr/bin/env python
import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=60)
time.sleep(60)
logfile = open('DYLOS_log.csv', 'a')
while 1:
line = ser.readline()
now = time.strftime("%Y-%m-%dT%H:%M:%S:00.000000+0530", time.localtime())
a = "%s,%s" % (now,line)
#print a
logfile.write(a)
logfile.flush()
logfile.close()
ser.close()
- ##giving github access to RPi##
- followed this to genrate a key https://help.github.com/articles/generating-ssh-keys followed this subprocess based python script to make git push
##adding crontab properly with python script itself followed http://stackoverflow.com/questions/8727935/execute-python-script-on-crontab
Sqlite database was cleaned by follwoing http://stackoverflow.com/questions/4245714/select-numbers-between-a-range-1-to-100-in-sqlite and executed the command of http://stackoverflow.com/questions/4245714/select-numbers-between-a-range-1-to-100-in-sqlite


Cacti (T. peruvianus)
We were four to test the new substance, in cool sweet tasting smoothies. Using frozen tropical fruit along with tropical fruit juice and extra sugar, the dried powdered cactus was delicious. We seperated each 20 gram dose into 3 to 4 glasses and drank them over a period of about an hour.
One fellow in our group felt slight nausea for about 45 minutes, the rest of us felt fine. The effects began while we were still sipping the last of our concoction, with a tingle in the lips and a buzz in the brain. After a little while a bubbling sensation began in my stomach, with fits of giggling to continue uncontrollably for the rest of the trip.
No Paranoia, No self loathing. Only warmth and vibration. Intricate delicate patterns behind the eyes. Everyone has a beautiful aura dancing around them. Everyone is beautiful. No trouble socialising. It`s so peaceful, I could sleep if I needed to. When I closed me eyes and relaxed, I could feel a breeze blow faintly through me. Almost as if I`m under water feeling the slight movement of the earth itself. I could even feel slight pressures around me, moving. Like beautiful buzzing creatures of consciousness. I could swear I`ve discovered the land of faery. It`s all around us, ready for the moment that we`re willing.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


记账平台啥也没干,就是帮你记账.ლ(°◕‵ƹ′◕ლ)
To see the difference between static and fixed top navbars, just scroll.
View navbar docs »


The purpose of this blog is to aid marketing to a point where the content you deliver
is targeted specifically to the wants and needs of your audience.
It also provides answers to most commonly asked questions or provide advice to areas within your niche that your business is an expert on.


/business/get
Get your business location details.
Parameters
| Name |
Type |
Required |
Example |
Description |
| businessId |
integer |
yes |
6418 |
Business id. |
| clientId |
string(40) |
yes |
04f78...9f9f3 |
Client id is a unique user identifier provided by GetFiveStars. |
| hash |
string(64) |
yes |
bd13a40...303f3c5 |
Hash is a digital request signature. Learn how to generate hash here. |
Request
POST https://getfivestars.com/api/business/get
[Content-Type: application/json]
{
"businessId": 6418,
"clientId": "627d5e234e1a2f503c9e12262cf313d693575895",
"hash": "b98340caf25c00be59f5bb5405ca8f358edf22c15a4f8527785af047e541f857"
}
Response
{
"id": 6418,
"name": "Peach Trees Intl.",
"phone": "808-333-3334",
"city": "Haiku",
"state": "HI",
"zip": "96708",
"country": "US",
"streetAddress": "150 Hana Hwy",
"type": "LocalBusiness",
"organisationType": "company",
"customField": "12345", // displayed only if not empty
"websiteURL": "https:\/\/www.peachtreeintl.abc-company.com", // displayed only if not empty
"shortFeedbackUrl": "https:\/\/getfivestars.com\/f.2", // url to the leave feedback form
"errorCode": 0,
"errorMessage": "Success"
}
Errors
| errorCode |
errorMessage |
| -1 |
Unknown error |
| 1 |
Invalid hash sign |
| 2 |
Invalid clientId |
| 3 |
Server error - please contact support |
| 5 |
This user cannot manage selected business |
| 25 |
Business does not exist |


Contact Us
Please fill out this form and we will get in touch with you shortly.


New User !!
forgot password


Toggle navigation
PROFESSIONALS
PORTFOLIO
Residential
Commercial
BLOGS
DESIGN IDEAS
My Inspirations
Add Images
Login
Sign Up
Login
OOppss!!!
The page you are searching for doesn't exist
CONTACT US
Prima Terra Infotech Pvt. Ltd.
+91<PHONE_NUMBER>
+91 22 62319800
<EMAIL_ADDRESS>CONNECT WITH US ON
© Copyrights 2017 - Prima Terra Infotech Pvt. Ltd.


DESPERADO A film review by Clark Goble Copyright 1995 Clark Goble
Director: Robert Rodriguez Screenplay: Robert Rodriguez
Despite the hype that DESPERADO has received in the media and on the net I still went in with some trepidation. After all, the main people praising Rodriguez were fans of the Hong Kong school of directing: lots of bodies and guns that never run out of ammunition.
The movie actually surprised me. The first half was excellent. The best description I could give is to say it is Clint Eastwood's spaghetti westerns as done by Quentin Tarantino. The first half of the film is craftily put together with an excellent eye for both humor and suspense. The bar fight that opens the film is an excellent "dream like sequence" that sets the stage for what was to follow. The main bar room brawl in the first half of the film is one of the best done sequences of this sort since the original RAIDERS OF THE LOST ARK.
Unfortunately, as good as the first half of the movie is, it does not begin to make up for the second half. Rodriguez seems to have run out of plot and by then all of the cameos are dead. What we are left with is a typical action movie without a plot. The twists in the movie end up being silly and the action sequences seem more like the A-Team trapped in a guitar factory. Only the A-Team gunfights seem a little more realistic. It is one thing to be over the top but quite an other to go completely overboard.
I really hope we get to see more of Rodriguez direction: he has great talent. Unfortunately, what we have as a first product is an other example of the paucity of good scripts in Hollywood.
Grade: B- (but only because the first half was so good) D (the second half)
/// Clark Goble ///<EMAIL_ADDRESS>///
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


@(on: String) @notification.view("deploy_" + on, closable = false, glow = true) { @on match { case "pre" => {
The site will be updated in 60 seconds! Fasten your seatbelt.
The site is being updated! Brace for impact.


Training segments
Wrongly classified testing segments
Testing accuracy
Balance histogram
Crop histogram
Confusion matrix