A standard trick of the Locked Room Mystery, in which a key must be retrieved from the other side of a locked door. Fortunately, someone left the key in the old-fashioned lock, from which the key can be dislodged with a handy slender tool (icepick, wire, knitting needle), to be caught on a piece of paper slid under the ill-fitting door.
Modern locks are constructed to prevent this, and modern doors' thresholds seldom have sufficient space to do it. Many doors - even in really old houses, depending on architecture - also have doorframes, which make this an outright impossibility. It's also possible for the key to bounce off the paper. Therefore, it's normally used only in period pieces, or stories set in older houses that haven't been renovated in ages.
It is rarely (if ever) mentioned that this trick is only possible if the key happens to be the right way up in the lock, enabling it to be pushed out.
Probably the best-known subtrope of the Lock and Key Puzzle, and a classic Stock Puzzle.
Examples:
Comics
- Boule et Bill once did this, using Bill's ear as the paper.
Film
- In Heroic Trio, two of the protagonists are locked in a storage closet in a hospital as an Ax-Crazy killer sneaks off the maternity ward to kill babies. They managed to hit the door hard enough to dislodge the key on the other side and slip a hand under the door to get it. This scene is an odd 20 Minutes into the Future example.
- Used by the faerie creatures in Don't be Afraid of the Dark. Unusually, this example shows the key landing on some drawing paper from the locked side of the door, so the creatures themselves can stay hidden from the audience until a later Jump Scare.
- In The Window, Tommy manages to unlock the door to his room by pushing the key out the other side and then snatching it with a hanger underneath the door.
- Played with in Alone, where Jess attempts to escape from the basement with this, but the key is stuck in the lock. She notices a bare nail sticking out of a wooden post, pries it out, and uses it to poke the key loose and catch it with her sweatshirt.
Literature
- In The Unadulterated Cat by Terry Pratchett, Sir Terry describes doing this to rescue next-door's gerbils from his cat, based on a vague memory of a "beat the burglar" piece in The Eagle, and being amazed when it actually worked.
- Moist tries this in Making Money (he would, being a mostly reformed criminal) but it doesn't work.
- Most Enid Blyton series include this at least once, especially The Secret Seven and The Famous Five.
- Bod escapes from the back room of the antique shop this way in The Graveyard Book.
- Also by Neil Gaiman, the protagonist of The Ocean at the End of the Lane does this to get out of his bedroom after the Babysitter from Hell locks him in.
- Mary Russell: Holmes does this to gain access to Mary's locked bedroom in A Monstrous Regiment of Women.
- In the childrens series The Baker Street Irregulars by Terrance Dicks (involving modern-day Sherlock Holmes fans who solved crimes), a Snooping Little Kid is locked in a room by a suspect, and uses this method only to find someone standing guard outside the door watching the entire process. Fortunately the guard finds it Actually Pretty Funny and lets him escape.
- In The Borrowers, six-inch tall Arrietty tells a human-sized boy to push the key out of the lock, after he has been locked in the nursery by Mrs Driver. Arrietty then pushes the key under the door to him.
- An expanded version is used in an episode of The Mentalist: Not only does Jane retrieve the key this way, but he pulls it back into the keyhole from outside the door using fishing line.
- Happy Days: Richie, Potsie and Ralph are locked in the hall closet by a burglar robbing the Cunningham house, and use this to get out.
- The title character of MacGyver has done this on several occasions.
- Get Smart: Maxwell attempts this in "The Return of the Ancient Mariner", but because he's in a comedy series (and also incompetent) the key falls off and ends up on the floor outside.
- Doctor Who:
- Used perfectly straight in the classic episode "The Talons of Weng-Chiang". Bizarrely, the British Board of Film Classification objected to this scene when they vetted the VHS release, because it was teaching children criminal skills. The director pointed out that the concept was used by Enid Blyton, and his own experience was it didn't even work, so the BBFC relented.
- Used again in "The Woman Who Lived", set in the 1600s. The Doctor was going to sonic the lock open, but Ashildr beat him to the punch. Using one of her own Wanted Posters, no less.
- Colditz After finding the door locked and the window barred, Dick Player easily manages to bring the key to his side of the door using method. [1]
- The Coroner: Done by the family of the Victim of the Week to enter the room where the murder has occurred at the start of "Napoleon's Violin". In this case, it is an old, un-renovated stately home.
- Father Brown. Father Brown faces a locked door and asks for a hatpin: as an antique model, the key was left in the keyhole on the far side of the door, and he's able to poke it out and pull it under the door on a sheet of paper. Mrs. McCarthy looks slightly disappointed, apparently assuming he was going to use a Hairpin Lockpick.
- Dead Man's Gun: In "Death Warrant", Pike gains access to Joe Rule's hotel room by sliding a "Wanted!" Poster under the door and using his dagger to poke the key out of the lock on to the poster and drawing it back under door.
Theatre
- The Odd Couple: Oscar does this when he's locked in the closet for some reason.
- Used with no modification in Zork II.
- Played straight in Dark Fall The Journal.
- Subverted in Scratches, in which the key lands on the paper but is too large to fit under the door. Micheal even lampshades the trope as that happens.
- One of the early puzzles in Mystery of Time and Space.
- Used as the solution to a puzzle in Simon the Sorcerer, when Simon finds himself locked inside a pantry.
- This is one of the first puzzles in the Crimson Room series of You Wake Up in a Room Flash games. Although unlocking that door only lets you into another locked room, this one more secure.
- Used in Alone in the Dark 2 by Carnby to get into the underground wine cellar.
- This is one of two ways to get into the murder room in Post Mortem. The other involves regular lock-picking.
- This shows up in prison with Zork: Grand Inquisitor. Though the genre savvy jailors didn't include a lock on your cell door, so you need first to cast a spell to create the lock and the key in the first place...
- Very common in inventory-based casual adventure games.
- You do this while playing as Nico on the second visit to the murdered hacker's apartment in Broken Sword: The Sleeping Dragon using her pencil and a handy nearby newspaper (the first time you climbed onto the balcony and opened the latch on a window with her press ID card).
- One of the least-original challenges in Escape the Museum is this.
- This is used to get into one room fairly late in Penumbra: Overture, though bizarrely the room it's done in seems relatively modern.
- Discussed in Leisure Suit Larry 1: In the Land of the Lounge Lizards Reloaded, as seen in the page quote. Note that the door Larry was talking about was a sliding door, so it wouldn't have worked anyway.
- One escape from the Botanica casual game series uses this method. Paper isn't necessary, as the key falls on a floor mat already protruding under the (very ill-fitting) door.
- Subverted in the second Nightmare Realm hidden object game, as the key falls through a crack in the floor while it's being drawn under the door.
- Used in Hugo II: Whodunit? to have Hugo escape a locked laundry. The review of the game in PC Gamer's "Saturday Crapshoot" has the reviewer breaking into a raging rant about how cliche and unrealistic this puzzle is.
- Optional in Phantasmagoria to get into the attic. If you forget to put the paper down, you can just use the fireplace poker to retrieve the key, instead.
- The trope was discussed in a magazine article promoting Full Throttle, by comparing how that game's protagonist, Ben, would open a locked door using a sandwich compared to Bernard Bernoulli from the Maniac Mansion games. Bernard would disassemble the sandwich to use the lettuce and toothpick, according to the trope. Ben would simply eat the sandwich and kick the door in.
- Escape from the very first room in the IHOG Sacra Terra: Angelic Night is achieved via this method.
- Another IHOG example appears in Shiver: Vanishing Hitchhiker as the means of escape from the hospital's morgue.
- Played straight with a newspaper and screwdriver in the bonus game for Redemption Cemetery: Embodiment of Evil.
- If Valdo gets captured trying to move around Cloux Manor in the final act of Secrets of da Vinci: The Forbidden Manuscript, he has to utilize this to get out of his locked bedroom. The game makes a point of hiding a sheet of paper in the room for him to use in case there isn't one in his inventory.
- Explicitly mentioned to be Yahtzee's measure of a good adventure game in his Zack & Wiki review.
- The featured puzzle in day 2 of Oedipus in my Inventory.
- Used in a parody of Jurassic Park on The Critic, when a velociraptor uses this technique to open a door, demonstrating its intelligence. It then dons an evening jacket and pipe as it explains its plans.


Package Index
-
CEPL.HOST
-
function SET-STEP-FUNC
(FUNC)Call this and pass the function that will be called every time #'cepl:step-host is called
-
function SET-SWAP-FUNC
(FUNC)Call this and pass the function that will be called every time #'cepl:swap is called
-
function SET-WINDOW-SIZE-FUNC
(FUNC)Call this and pass the function that will be called when the cepl needs to query the window size
-
function WINDOW-SIZE
(WIN)When given the host-specific window handle will return the size of the window
-
generic INIT
(&OPTIONAL INIT-FLAGS)Implement this method and initialize your system inside it. This is called as the first step of cepl initializing. init-flags are host specific flags that can be passed from cepl
-
generic REQUEST-CONTEXT
(WIDTH HEIGHT TITLE FULLSCREEN NO-FRAME ALPHA-SIZE DEPTH-SIZE STENCIL-SIZE RED-SIZE GREEN-SIZE BLUE-SIZE BUFFER-SIZE DOUBLE-BUFFER HIDDEN RESIZABLE GL-VERSION)Implement this method and return a list containing: - gl-context as the first element - window as the second element
-
generic SET-PRIMARY-THREAD-AND-RUN
(FUNC &REST ARGS)This will be called from the UI thread (if required by the OS) Implement and use this if you need to do some setup from that thread
-
generic SHUTDOWN
()Implement this with code to shutdown the host. This will be called when cepl is shutdown
-


SAT Solvers¶
Overview¶
A SAT Solver is tool for finding solutions to problems that can be specified using propositional logic formulas.
Here’s an example from Delmar E. Searls.
Start with a problem statement, “If the tire is flat then I will have to remove it and take it to the gas station.”
Translate each basic statement to a variable so that P means “the tire is flat”, Q means “I have to remove the tire”, and R means “I have to take the tire to the gas station.

What a SAT solver does is determine whether an expression is satisfiable and will generate one, some, or all of the rows that evaluate to true.
Why Do We Care?¶
There are many otherwise difficult problems that can be expressed in propositional logic and computers have gotten good at solving them.
While the above example was simple, the problem grows exponentially with the number of variables. The amazing fact of the early 21st century is that a number of heuristics have been found that make the problem tractable for many practical examples, even ones with tens of thousands of variables.
One example is finding a layout to wire a printed circuit board in a way that doesn’t generate electrical interference.
Tools¶
A tool that is available to Pythonistas is pycosat which is itself a front-end for a PicoSAT which is a popular SAT solver written by Armin Biere in pure C.
The first step is to rewrite the expression into Conjunctive Normal Form (CNF) sometimes called a “product of sums”:
(¬P ∨ Q) ∧ (¬P ∨ R)
In pycosat, P
is written as 1
because it is the first
variable, and ¬P
is written as -1
using a negative
value to indicate negation. We pass in a list of tuples with
each disjunction was a separate tuple:
>>> pprint(list(pycosat.itersolve([(-1, 2), (-1, 3)])), width=20)
[[-1, 2, 3],
[-1, 2, -3],
[-1, -2, 3],
[-1, -2, -3],
[1, 2, 3]]
The Core Challenge¶
With a powerful SAT solver at you disposal, the remaining challenge is to express your problem in a way that pycosat can understand.
I wrote some utility functions that can help. For starters, we
want to write our expressions with symbols instead of numbers
and with ~
for negation instead of a minus sign:
>>> translate([['~P', 'Q'],['~P', 'R']])[0]
[(-1, 2), (-1, 3)]
Often, it is easier to express constraints in Disjunctive normal form
¬P ∨ (Q ∧ R)
and then convert to the CNF required by pycosat:
>>> from_dnf([['~P'], ['Q', 'R']])
[('~P', 'Q'), ('~P', 'R')]
Lastly, there is function, solve_all, that takes care of the round-trip between human readable and pycosat readable:
>>> cnf = from_dnf([['~P'], ['Q', 'R']])
>>> solve_all(cnf, True)
[['~P', 'Q', 'R'],
['~P', 'Q', '~R'],
['~P', '~Q', 'R'],
['~P', '~Q', '~R'],
['P', 'Q', 'R']]
It’s even more readable with humanistic variable names:
>>> cnf = from_dnf([['~FlatTire'], ['NeedToRemove', 'GotoGasStation']])
>>> solve_all(cnf, True)
[['~FlatTire', 'NeedToRemove', 'GotoGasStation'],
['~FlatTire', 'NeedToRemove', '~GotoGasStation'],
['~FlatTire', '~NeedToRemove', 'GotoGasStation'],
['~FlatTire', '~NeedToRemove', '~GotoGasStation'],
['FlatTire', 'NeedToRemove', 'GotoGasStation']]
Higher Level Convenience Functions¶
DNFs can be easy to reason about but are sometimes tedious to write-out.
I have some convenience functions that build a CNF directly from constraints expressed with quantifiers:
# Express that at least one of A, B, and C are true
>>> some_of(['A', 'B', 'C'])
[['A', 'B', 'C']]
# Express that at exactly one of A, B, and C is true
>>> one_of(['A', 'B', 'C'])
[('A', 'B', 'C'),
('~A', '~B'),
('~A', '~C'),
('~B', '~C')]
# Express that no more than one of A, B, and C are true
>>> Q(['A', 'B', 'C']) <= 1
[('~A', '~B'),
('~A', '~C'),
('~B', '~C')]
With these tools as primitives, it is easier to write higher level functions to express problem constraints in conjunctive normal form.
Sudoku Puzzles¶
Given a puzzle in this form:
8 6|4 3|
5 | | 7
| 2 |
---+---+---
32 | 8 | 5
8| 5 |4
1 | 7 | 93
---+---+---
| 4 |
9 | | 4
|6 7|2 8
We enter it in Python as a single string row major order:
s = ('8 64 3 5 7 2 '
'32 8 5 8 5 4 1 7 93'
' 4 9 4 6 72 8')
And expect the computer to solve it:
876|413|529
452|968|371
931|725|684
---+---+---
329|184|756
768|359|412
145|276|893
---+---+---
283|541|967
697|832|145
514|697|238
Code for the Sudoku Solver¶
from sat_utils import solve_one, one_of, basic_fact
from sys import intern
from pprint import pprint
n = 3
grid = '''\
AA AB AC BA BB BC CA CB CC
AD AE AF BD BE BF CD CE CF
AG AH AI BG BH BI CG CH CI
DA DB DC EA EB EC FA FB FC
DD DE DF ED EE EF FD FE FF
DG DH DI EG EH EI FG FH FI
GA GB GC HA HB HC IA IB IC
GD GE GF HD HE HF ID IE IF
GG GH GI HG HH HI IG IH II
'''
values = list('123456789')
table = [row.split() for row in grid.splitlines()]
points = grid.split()
subsquares = dict()
for point in points:
subsquares.setdefault(point[0], []).append(point)
# Groups: rows + columns + subsquares
groups = table[:] + list(zip(*table)) + list(subsquares.values())
del grid, subsquares, table # analysis requires only: points, values, groups
def comb(point, value):
'Format a fact (a value assigned to a given point)'
return intern(f'{point} {value}')
def str_to_facts(s):
'Convert str in row major form to a list of facts'
return [comb(point, value) for point, value in zip(points, s) if value != ' ']
def facts_to_str(facts):
'Convert a list of facts to a string in row major order with blanks for unknowns'
point_to_value = dict(map(str.split, facts))
return ''.join(point_to_value.get(point, ' ') for point in points)
def show(flatline):
'Display grid from a string (values in row major order with blanks for unknowns)'
fmt = '|'.join(['%s' * n] * n)
sep = '+'.join(['-' * n] * n)
for i in range(n):
for j in range(n):
offset = (i * n + j) * n**2
print(fmt % tuple(flatline[offset:offset+n**2]))
if i != n - 1:
print(sep)
for given in [
'53 7 6 195 98 6 8 6 34 8 3 17 2 6 6 28 419 5 8 79',
' 75 4 5 8 17 6 36 2 7 1 5 1 1 5 8 96 1 82 3 4 9 48 ',
' 9 7 4 1 6 2 8 1 43 6 59 1 3 97 8 52 7 6 8 4 7 5 8 2 ',
'67 38 921 85 736 1 8 4 7 5 1 8 4 2 6 8 5 175 24 321 61 84',
'27 15 8 3 7 4 7 5 1 7 9 2 6 2 5 8 6 5 4 8 59 41',
'8 64 3 5 7 2 32 8 5 8 5 4 1 7 93 4 9 4 6 72 8',
]:
cnf = []
# each point assigned exactly one value
for point in points:
cnf += one_of(comb(point, value) for value in values)
# each value gets assigned to exactly one point in each group
for group in groups:
for value in values:
cnf += one_of(comb(point, value) for point in group)
# add facts for known values in a specific puzzle
for known in str_to_facts(given):
cnf += basic_fact(known)
# solve it and display the results
result = facts_to_str(solve_one(cnf))
show(given)
print()
show(result)
print('=-' * 20)
Einstein Puzzle¶
Reportedly this puzzle is from Albert Einstein who is said to have remarked that fewer than 2% of the population can solve this puzzle (this is lore, neither fact is true).
Entities¶
- There are five houses in unique colors: Blue, green, red, white and yellow.
- In each house lives a person of unique nationality: British, Danish, German, Norwegian and Swedish.
- Each person drinks a unique beverage: Beer, coffee, milk, tea and water.
- Each person smokes a unique cigar brand: Blue Master, Dunhill, Pall Mall, Prince and blend.
- Each person keeps a unique pet: Cats, birds, dogs, fish and horses.
Constraints¶
- The Brit lives in a red house.
- The Swede keeps dogs as pets.
- The Dane drinks tea.
- The green house is on the left of the white, next to it.
- The green house owner drinks coffee.
- The person who smokes Pall Mall rears birds.
- The owner of the yellow house smokes Dunhill.
- The man living in the house right in the center drinks milk.
- The Norwegian lives in the first house.
- The man who smokes blend lives next to the one who keeps cats.
- The man who keeps horses lives next to the man who smokes Dunhill.
- The owner who smokes Blue Master drinks beer.
- The German smokes Prince.
- The Norwegian lives next to the blue house.
- The man who smokes blend has a neighbor who drinks water.
Goal¶
The question you need to answer is: “Who keeps fish?”
Solution Techniques¶
Christian Stigen Larsen has a nice write-up on how to solve this problem by hand
Instead, we’ll use a computer to determine all of the relationships:
['1 norwegian', '1 yellow', '1 cat', '1 water', '1 dunhill',
'2 dane', '2 blue', '2 horse', '2 tea', '2 blends',
'3 brit', '3 red', '3 bird', '3 milk', '3 pall mall',
'4 german', '4 green', '4 fish', '4 coffee', '4 prince',
'5 swede', '5 white', '5 dog', '5 root beer', '5 blue master']
The fish is in green house owned by the german who drinks coffee and smokes Prince.
Code for the Einstein Puzzle¶
from sat_utils import solve_one, from_dnf, one_of
from sys import intern
from pprint import pprint
houses = ['1', '2', '3', '4', '5' ]
groups = [
['dane', 'brit', 'swede', 'norwegian', 'german' ],
['yellow', 'red', 'white', 'green', 'blue' ],
['horse', 'cat', 'bird', 'fish', 'dog' ],
['water', 'tea', 'milk', 'coffee', 'root beer'],
['pall mall', 'prince', 'blue master', 'dunhill', 'blends' ],
]
values = [value for group in groups for value in group]
def comb(value, house):
'Format how a value is shown at a given house'
return intern(f'{value} {house}')
def found_at(value, house):
'Value known to be at a specific house'
return [(comb(value, house),)]
def same_house(value1, value2):
'The two values occur in the same house: brit1 & red1 | brit2 & red2 ...'
return from_dnf([(comb(value1, i), comb(value2, i)) for i in houses])
def consecutive(value1, value2):
'The values are in consecutive houses: green1 & white2 | green2 & white3 ...'
return from_dnf([(comb(value1, i), comb(value2, j))
for i, j in zip(houses, houses[1:])])
def beside(value1, value2):
'The values occur side-by-side: blends1 & cat2 | blends2 & cat1 ...'
return from_dnf([(comb(value1, i), comb(value2, j))
for i, j in zip(houses, houses[1:])] +
[(comb(value2, i), comb(value1, j))
for i, j in zip(houses, houses[1:])]
)
cnf = []
# each house gets exactly one value from each attribute group
for house in houses:
for group in groups:
cnf += one_of(comb(value, house) for value in group)
# each value gets assigned to exactly one house
for value in values:
cnf += one_of(comb(value, house) for house in houses)
cnf += same_house('brit', 'red')
cnf += same_house('swede', 'dog')
cnf += same_house('dane', 'tea')
cnf += consecutive('green', 'white')
cnf += same_house('green', 'coffee')
cnf += same_house('pall mall', 'bird')
cnf += same_house('yellow', 'dunhill')
cnf += found_at('milk', 3)
cnf += found_at('norwegian', 1)
cnf += beside('blends', 'cat')
cnf += beside('horse', 'dunhill')
cnf += same_house('blue master', 'root beer')
cnf += same_house('german', 'prince')
cnf += beside('norwegian', 'blue')
cnf += beside('blends', 'water')
pprint(solve_one(cnf))
Essential Utilities for Humanization¶
'Utility functions to humanize interaction with pycosat'
__author__ = 'Raymond Hettinger'
import pycosat # https://pypi.python.org/pypi/pycosat
from itertools import combinations
from functools import lru_cache
from sys import intern
def make_translate(cnf):
"""Make translator from symbolic CNF to PycoSat's numbered clauses.
Return a literal to number dictionary and reverse lookup dict
>>> make_translate([['~a', 'b', '~c'], ['a', '~c']])
({'a': 1, 'c': 3, 'b': 2, '~a': -1, '~b': -2, '~c': -3},
{1: 'a', 2: 'b', 3: 'c', -1: '~a', -3: '~c', -2: '~b'})
"""
lit2num = {}
for clause in cnf:
for literal in clause:
if literal not in lit2num:
var = literal[1:] if literal[0] == '~' else literal
num = len(lit2num) // 2 + 1
lit2num[intern(var)] = num
lit2num[intern('~' + var)] = -num
num2var = {num:lit for lit, num in lit2num.items()}
return lit2num, num2var
def translate(cnf, uniquify=False):
'Translate a symbolic cnf to a numbered cnf and return a reverse mapping'
# DIMACS CNF file format:
# http://people.sc.fsu.edu/~jburkardt/data/cnf/cnf.html
if uniquify:
cnf = list(dict.fromkeys(cnf))
lit2num, num2var = make_translate(cnf)
numbered_cnf = [tuple([lit2num[lit] for lit in clause]) for clause in cnf]
return numbered_cnf, num2var
def itersolve(symbolic_cnf, include_neg=False):
numbered_cnf, num2var = translate(symbolic_cnf)
for solution in pycosat.itersolve(numbered_cnf):
yield [num2var[n] for n in solution if include_neg or n > 0]
def solve_all(symcnf, include_neg=False):
return list(itersolve(symcnf, include_neg))
def solve_one(symcnf, include_neg=False):
return next(itersolve(symcnf, include_neg))
############### Support for Building CNFs ##########################
@lru_cache(maxsize=None)
def neg(element) -> 'element':
'Negate a single element'
return intern(element[1:] if element.startswith('~') else '~' + element)
def from_dnf(groups) -> 'cnf':
'Convert from or-of-ands to and-of-ors'
cnf = {frozenset()}
for group in groups:
nl = {frozenset([literal]) : neg(literal) for literal in group}
# The "clause | literal" prevents dup lits: {x, x, y} -> {x, y}
# The nl check skips over identities: {x, ~x, y} -> True
cnf = {clause | literal for literal in nl for clause in cnf
if nl[literal] not in clause}
# The sc check removes clauses with superfluous terms:
# {{x}, {x, z}, {y, z}} -> {{x}, {y, z}}
# Should this be left until the end?
sc = min(cnf, key=len) # XXX not deterministic
cnf -= {clause for clause in cnf if clause > sc}
return list(map(tuple, cnf))
class Q:
'Quantifier for the number of elements that are true'
def __init__(self, elements):
self.elements = tuple(elements)
def __lt__(self, n: int) -> 'cnf':
return list(combinations(map(neg, self.elements), n))
def __le__(self, n: int) -> 'cnf':
return self < n + 1
def __gt__(self, n: int) -> 'cnf':
return list(combinations(self.elements, len(self.elements)-n))
def __ge__(self, n: int) -> 'cnf':
return self > n - 1
def __eq__(self, n: int) -> 'cnf':
return (self <= n) + (self >= n)
def __ne__(self, n) -> 'cnf':
raise NotImplementedError
def __repr__(self) -> str:
return f'{self.__class__.__name__}(elements={self.elements!r})'
def all_of(elements) -> 'cnf':
'Forces inclusion of matching rows on a truth table'
return Q(elements) == len(elements)
def some_of(elements) -> 'cnf':
'At least one of the elements must be true'
return Q(elements) >= 1
def one_of(elements) -> 'cnf':
'Exactly one of the elements is true'
return Q(elements) == 1
def basic_fact(element) -> 'cnf':
'Assert that this one element always matches'
return Q([element]) == 1
def none_of(elements) -> 'cnf':
'Forces exclusion of matching rows on a truth table'
return Q(elements) == 0


Overview
Update an existing Emails record.
Summary
Used for updating an archived email, updating a draft to send later, or sending a draft.
Updating an Archived Email
Request Arguments
| Name |
Type |
Description |
Required |
|
message_uid
|
String
|
Only use this field for updating emails imported from an IMAP server, as this is the email's IMAP UID.
|
False
|
|
assigned_user_id
|
String
|
The assigned user's ID.
|
False
|
|
parent_type
|
String
|
The parent record's module.
|
False
|
|
parent_id
|
String
|
The parent record's ID.
|
False
|
|
team_name
|
List
|
List of teams that can access the email.
|
False
|
Request
{
"assigned_user_id": "9c61c46a-a7c5-df71-481c-51d48232f820",
"parent_type": "Leads",
"parent_id": "f6a0611a-7d27-11e7-9d70-3c15c2d582c6",
"team_name": [{
"id": "1",
"display_name": "Global",
"name": "Global",
"name_2": "",
"primary": true,
"selected": false
}]
}
Response
{
"id": "a028341c-ba92-9343-55e7-56cf5beda121",
"date_entered": "2016-02-25T11:53:07-08:00",
"created_by": "9c61c46a-a7c5-df71-481c-51d48232f820",
"created_by_name": "Sarah Smith",
"date_modified": "2016-02-25T11:53:07-08:00",
"modified_by_name": "Sarah Smith",
"modified_user_id": "9c61c46a-a7c5-df71-481c-51d48232f820",
"deleted": false,
"assigned_user_id": "9c61c46a-a7c5-df71-481c-51d48232f820",
"assigned_user_name": "Sarah Smith",
"state": "Archived",
"name": "Re: Discuss Proposal",
"description": "Now is a good time",
"description_html": "
Now is a good time
",
"date_sent": "2012-02-17T06:53:00-08:00",
"message_id": "",
"message_uid": "",
"reply_to_status": false,
"total_attachments": 1,
"parent_name": "Tom Davis",
"parent_type": "Leads",
"parent_id": "f6a0611a-7d27-11e7-9d70-3c15c2d582c6"
"team_count": "",
"team_name": [{
"id": 1,
"name": "Global",
"name_2": "",
"primary": true,
"selected": false
}],
"my_favorite": false,
"_acl": {
"fields": {}
},
"_module": "Emails"
}
Updating a Draft
Request Arguments
| Name |
Type |
Description |
Required |
|
outbound_email_id
|
String
|
The ID of the chosen SMTP configuration for sending an email. Only use this field when saving a draft
or sending an email. The user's default SMTP configuration is used if one hasn't been chosen prior to
sending.
|
False
|
|
name
|
String
|
The email's subject.
|
False
|
|
description_html
|
String
|
The email's HTML body.
|
False
|
|
description
|
String
|
The email's plain text body. This field is not necessary unless the text body is different from the HTML
body.
|
False
|
|
reply_to_id
|
String
|
Only use this field when saving a draft or sending an email that is a reply to another email. This is
the ID of that other email.
|
False
|
|
parent_type
|
String
|
The parent record's module.
|
False
|
|
parent_id
|
String
|
The parent record's ID.
|
False
|
|
to
|
Object
|
The email's recipients found in the TO field. Existing EmailParticipants records cannot be used; only
the create and delete actions are supported. Metadata about each recipient is required to
link the records.
-
parent_type and parent_id can be Accounts, Contacts, Employees, Leads, Prospects,
or Users, out out of the box. These fields are not necessary if only an email address is known
for the recipient.
-
email_address_id is the ID of the email address the recipient used in the email. To get
the ID of the email address, first make a request to
/EmailAddresses POST. If this
argument is not provided, then the primary email address of the parent record is used.
|
False
|
|
cc
|
Object
|
The email's recipients found in the CC field. Existing EmailParticipants records cannot be used; only
the create and delete actions are supported. Metadata about each recipient is required to
link the records.
-
parent_type and parent_id can be Accounts, Contacts, Employees, Leads, Prospects,
or Users, out out of the box. These fields are not necessary if only an email address is known
for the recipient.
-
email_address_id is the ID of the email address the recipient used in the email. To get
the ID of the email address, first make a request to
/EmailAddresses POST. If this
argument is not provided, then the primary email address of the parent record is used.
|
False
|
|
bcc
|
Object
|
The email's recipients found in the BCC field. Existing EmailParticipants records cannot be used; only
the create and delete actions are supported. Metadata about each recipient is required to
link the records.
-
parent_type and parent_id can be Accounts, Contacts, Employees, Leads, Prospects,
or Users, out out of the box. These fields are not necessary if only an email address is known
for the recipient.
-
email_address_id is the ID of the email address the recipient used in the email. To get
the ID of the email address, first make a request to
/EmailAddresses POST. If this
argument is not provided, then the primary email address of the parent record is used.
|
False
|
|
attachments
|
Object
|
The email's attachments. Existing Notes records cannot be used as email attachments; only the
create and delete actions are supported. Metadata about each attachment is required to
link the records.
-
filename_guid is the temporary file ID for an uploaded file to attach as a Notes record.
-
upload_id is the ID of an existing file that the Notes record should reference as the
attachment. This allows files to be shared by multiple Notes records, to preserve space.
-
When using upload_id, file_source should be provided to indicate from where the
file originated. The value should be the module of the record that shares its ID with the file.
So when an attachment comes from an email template, file_source should be
EmailTemplates. And when an attachment comes from a document, file_source should
be DocumentRevisions.
|
False
|
Request
{
"outbound_email_id": "b80adf1a-7d78-11e7-855a-3c15c2d582c6",
"name": "Re: Discuss Proposal (new time)",
"description_html": "
I will call you in 10 minutes.
",
"parent_type": "Contacts",
"parent_id": "79b9c194-7d79-11e7-8fc5-3c15c2d582c6",
"to": {
"create": [{
"parent_type": "Contacts",
"parent_id": "79b9c194-7d79-11e7-8fc5-3c15c2d582c6"
}],
"delete": [
"ea1cec7e-7d27-11e7-9845-3c15c2d582c6"
]
},
"cc": {
"delete": [
"eafa7e9a-7d27-11e7-aa2b-3c15c2d582c6"
]
},
"attachments": {
"create": [{
"upload_id": "a028341c-ba92-9343-55e7-56cf5beda121",
"name": "Contract.pdf",
"filename": "Contract.pdf",
"file_source": "DocumentRevisions"
}],
"delete": [
"e087e79a-7d27-11e7-b02c-3c15c2d582c6"
]
}
}
Response
{
"id": "f3c85966-7d27-11e7-9e9e-3c15c2d582c6",
"date_entered": "2016-02-25T11:53:07-08:00",
"created_by": "9c61c46a-a7c5-df71-481c-51d48232f820",
"created_by_name": "Sarah Smith",
"date_modified": "2016-02-25T12:53:07-08:00",
"modified_by_name": "Sarah Smith",
"modified_user_id": "9c61c46a-a7c5-df71-481c-51d48232f820",
"deleted": false,
"assigned_user_id": "9c61c46a-a7c5-df71-481c-51d48232f820",
"assigned_user_name": "Sarah Smith",
"state": "Draft",
"outbound_email_id": "b80adf1a-7d78-11e7-855a-3c15c2d582c6",
"name": "Re: Discuss Proposal (new time)",
"description": "I will call you in 10 minutes.",
"description_html": "
I will call you in 10 minutes.
",
"date_sent": "2012-02-17T12:53:07-08:00",
"message_id": "",
"message_uid": "",
"reply_to_id": "a028341c-ba92-9343-55e7-56cf5beda121",
"reply_to_status": false,
"total_attachments": 1,
"parent_name": "Jack Horner",
"parent_type": "Contacts",
"parent_id": "79b9c194-7d79-11e7-8fc5-3c15c2d582c6"
"team_count": "",
"team_name": [{
"id": 1,
"name": "Global",
"name_2": "",
"primary": true,
"selected": false
}],
"my_favorite": false,
"_acl": {
"fields": {}
},
"_module": "Emails"
}
Sending an Email
Request Arguments
| Name |
Type |
Description |
Required |
|
state
|
String
|
Use "Ready" to send an email.
|
True
|
|
outbound_email_id
|
String
|
The ID of the chosen SMTP configuration for sending an email. Only use this field when saving a draft
or sending an email. The user's default SMTP configuration is used if one hasn't been chosen prior to
sending.
|
False
|
|
name
|
String
|
The email's subject.
|
False
|
|
description_html
|
String
|
The email's HTML body.
|
False
|
|
description
|
String
|
The email's plain text body. This field is not necessary unless the text body is different from the HTML
body.
|
False
|
|
reply_to_id
|
String
|
Only use this field when saving a draft or sending an email that is a reply to another email. This is
the ID of that other email.
|
False
|
|
parent_type
|
String
|
The parent record's module.
|
False
|
|
parent_id
|
String
|
The parent record's ID.
|
False
|
|
to
|
Object
|
The email's recipients found in the TO field. Existing EmailParticipants records cannot be used; only
the create and delete actions are supported. Metadata about each recipient is required to
link the records.
-
parent_type and parent_id can be Accounts, Contacts, Employees, Leads, Prospects,
or Users, out out of the box. These fields are not necessary if only an email address is known
for the recipient.
-
email_address_id is the ID of the email address the recipient used in the email. To get
the ID of the email address, first make a request to
/EmailAddresses POST. If this
argument is not provided, then the primary email address of the parent record is used.
|
False
|
|
cc
|
Object
|
The email's recipients found in the CC field. Existing EmailParticipants records cannot be used; only
the create and delete actions are supported. Metadata about each recipient is required to
link the records.
-
parent_type and parent_id can be Accounts, Contacts, Employees, Leads, Prospects,
or Users, out out of the box. These fields are not necessary if only an email address is known
for the recipient.
-
email_address_id is the ID of the email address the recipient used in the email. To get
the ID of the email address, first make a request to
/EmailAddresses POST. If this
argument is not provided, then the primary email address of the parent record is used.
|
False
|
|
bcc
|
Object
|
The email's recipients found in the BCC field. Existing EmailParticipants records cannot be used; only
the create and delete actions are supported. Metadata about each recipient is required to
link the records.
-
parent_type and parent_id can be Accounts, Contacts, Employees, Leads, Prospects,
or Users, out out of the box. These fields are not necessary if only an email address is known
for the recipient.
-
email_address_id is the ID of the email address the recipient used in the email. To get
the ID of the email address, first make a request to
/EmailAddresses POST. If this
argument is not provided, then the primary email address of the parent record is used.
|
False
|
|
attachments
|
Object
|
The email's attachments. Existing Notes records cannot be used as email attachments; only the
create and delete actions are supported. Metadata about each attachment is required to
link the records.
-
filename_guid is the temporary file ID for an uploaded file to attach as a Notes record.
-
upload_id is the ID of an existing file that the Notes record should reference as the
attachment. This allows files to be shared by multiple Notes records, to preserve space.
-
When using upload_id, file_source should be provided to indicate from where the
file originated. The value should be the module of the record that shares its ID with the file.
So when an attachment comes from an email template, file_source should be
EmailTemplates. And when an attachment comes from a document, file_source should
be DocumentRevisions.
|
False
|
Request
{
"state": "Ready"
}
Response
{
"id": "a7795664-7def-11e7-8add-3c15c2d582c6",
"date_entered": "2016-02-25T08:53:07-08:00",
"created_by": "9c61c46a-a7c5-df71-481c-51d48232f820",
"created_by_name": "Sarah Smith",
"date_modified": "2016-02-25T08:53:07-08:00",
"modified_by_name": "Sarah Smith",
"modified_user_id": "9c61c46a-a7c5-df71-481c-51d48232f820",
"deleted": false,
"assigned_user_id": "9c61c46a-a7c5-df71-481c-51d48232f820",
"assigned_user_name": "Sarah Smith",
"state": "Archived",
"outbound_email_id": "b80adf1a-7d78-11e7-855a-3c15c2d582c6",
"name": "Discuss Proposal",
"description": "When is a good time for us to chat?",
"description_html": "
When is a good time for us to chat?
",
"date_sent": "2012-02-17T08:53:07-08:00",
"message_id"<EMAIL_ADDRESS>"message_uid": "",
"reply_to_id": "",
"reply_to_status": false,
"total_attachments": 2,
"parent_name": "Tom Davis",
"parent_type": "Leads",
"parent_id": "f6a0611a-7d27-11e7-9d70-3c15c2d582c6"
"team_count": "",
"team_name": [{
"id": 1,
"name": "Global",
"name_2": "",
"primary": true,
"selected": false
}],
"my_favorite": false,
"_acl": {
"fields": {}
},
"_module": "Emails"
}
Change Log
| Version |
Change |
|
v10
|
Added /Emails/:record PUT endpoint.
|


This is the simplest website. If you look at the code of this page, you will see that it contains two tags at the top.
The first of these tags is <!doctype html>. This tag tells your web browser that this is an HTML document. HTML is a way of telling a web browser how a page is supposed to appear on your screen.
The second of these tags is <title>. Inside this tag is the title of this page. All webpages must have a title.
You will also notice that each of these paragraphs is contained inside <p> tags. These tags mark the beginning and end of a paragraph.


FATHERS' DAY A film review by Walter Frith Copyright 1997 Walter Frith
'FATHERS' DAY' IS A PLEASANT ENOUGH FORMULA FOR WILLIAMS AND CRYSTAL
Comments on this review may also be sent to<EMAIL_ADDRESS>Film buffs have waited for quite sometime to see the teaming of two of Hollywood's funniest men. Robin Wiliams and Billy Crystal have finally pulled it off with hilarious results in 'Father's Day'. This film reportedly took about thirteen agents between the two stars to close the deal and their names appear on screen at the same time during the opening credits and while Robin Williams' career seems to be sagging a little bit lately, it's Crystal who needs a hit.
Crystal plays a high powered California lawyer while Williams plays a failed writer on the verge of suicide. They don't know each other until each one of them is contacted by a former girlfriend (Nastassja Kinski) who tells them separately that they are each the father of her sixteen year old son. The meet under bizarre circumstances while searching for the boy and they soon work together in trying to find him.
The screenplay by Lowell Ganz and Babaloo Mandel ('Splash', 'Gung Ho', 'Parenthood', 'City Slickers', 'Greedy') contains enough of their jokes which some find offensive but others find their humour squirmingly funny. Director Ivan Reitman ('Stripes', 'Ghostbusters', 'Twins') finds a formula good enough to make this comic escapade work as he relies on allowing the two leads to improvise many scenes which make them such brilliant comedians.
Seventy per cent of the movie's laughs come from Robin Williams but I'm sure if you ask him about the film's success he'll tell you that the success of a lot of comedy films depends largely on the straight man which Crystal plays in a professional manner almost without blinking.
A word of caution. You may never use an outhose again after seeing this movie and look quickly for an almost unrecognizable Mel Gibson!
OUT OF 5> * * * *
Visit Mr. Frith's 'Movie Reviews' section of 'The Review' at http://www.arrowweb.com/review
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


Ingredients
- 3 tablespoons olive oil, divided
- 20 medium shrimp (1/2 lb.), raw, peeled and deveined
- 2 thin slices prosciutto cut into thin strips
- 1 red bell pepper, cut into thin strips
- ¾ tsp. salt divided plus more for pasta water
- ¾ tsp. ground black pepper, divided
- 4 garlic cloves thinly sliced
- 10 green pitted olives, thickly
- 1 cup (4 large) canned artichoke hearts, cut into thin wedges
- 1/3 cup dry white wine such as Pinot Grigio
- 2 tsp. chopped thyme
- 10 ounces linguine
- 1 tablespoon unsalted butter
Directions
- Bring a large pot of water to a boil. In a large deep skillet, heat 1 tablespoon olive oil. Add shrimp and cook over medium heat without stirring, until halfway cooked and pink on bottom, about 1 minute. Turn shrimp, then scatter prosciutto over top; cook until shrimp are barely done; about 30 minutes. Put shrimp and prosciutto in a medium bowl and set aside. Add remaining oil to skillet. Add red pepper strips along with ¼ tsp. each of salt and pepper and cook over medium heat, stirring a few times until softened, about 5minutes. Add garlic and cook about 2 minutes. Add olives, artichokes, wine and thyme and remove from heat.
- Salt the boiling water; add linguine, and cook until al dente, about 9 minutes. Reserve ½ cup pasta water. Drain linguine and add to skillet. Add reserved shrimp, prosciutto, and any accumulated juices to skillet and cook over medium high heat about 1 minute, stirring in reserved pasta water 2 tablespoon at a time. Remove from heat; season with remaining salt and pepper, and stir in butter. Divide among 4 past bowls and serve.
Notes
Makes 4 servings


from collections import deque
import numpy as np
import pickle, os, sys
[docs]class SimpleReplayBuffer:
def __init__(self, maxDataTuples):
'''The replay buffer
Save data for the replay buffer
Parameters
----------
maxDataTuples : {int}
The size of the ``deque`` that is used for storing the
data tuples. This assumes that the data tuples are
present in the form: ``(state, action, reward, next_state,
done, cumRewards)``. This means that we assume that the
data will have some form of cumulative reward pints associated
with each tuple.
'''
self.maxDataTuples = maxDataTuples
self.memory = deque(maxlen=maxDataTuples)
return
[docs] def append(self, result):
'''append a single tuple to the current replay buffer
This function allows someone to add a single tuple to
the replay buffer.
Parameters
----------
result : {tuple}
The tuple that should be added into the memory buffer.
'''
self.memory.append(result)
return
@property
def len(self):
'''returns the length of the emory buffer
Remember that this is a property and there is no need
to call it as a function.
Returns:
int -- the length of the currrent memory buffer
'''
return len(self.memory)
@property
def shape(self):
'''the shape of the buffer
This is the shape of the memory buffers. This returns
a tuple that contains the length of the buffer for the
first element of the tuple, and the length of each element
as the second element of the tuple. If there is nothing
within the memory, this is going to return a None
Returns:
tuple -- the shape of the data within the memory buffer
'''
N = len(self.memory)
if N > 0:
N1 = len( self.memory[0] )
else:
N1 = None
return N, N1
[docs] def clear(self):
self.memory.clear()
return
[docs] def appendMany(self, results):
'''append multiple tuples to the memory buffer
Most often we will not be insterested in inserting a single data point
into the replay buffer, but rather a whole list of these. This function
just iterates over this list and inserts each tuple one by one.
Parameters
----------
results : {list}
List of tuples that are to be inserted into the replay buffer.
'''
for r in results:
self.memory.append(r)
return
[docs] def appendAllAgentResults(self, allResults):
'''append all data from all agents into the same buffer
This is useful when there is only one agent or when all the agents represent
the same exact larning characteristics. In this case, multiple agents can be
simulated by the same function.
Arguments:
allResults {list} -- List of list tuples to be entered into the buffer.
'''
for results in allResults:
self.appendMany( results )
return
[docs] def sample(self, nSamples):
'''sample from the replay beffer
This function samples form the memory buffer, and returns the number of
samples required. This does sampling in an intelligent manner. Since we are
saving the cumulative rewards, we selectively select values that provide
us greater
Parameters
----------
nSamples : {int}
The number of memory elements to return
Returns
-------
list
A list of samples that can be used for sampling the data.
'''
choice = np.random.choice( np.arange( len(self.memory) ), nSamples)
results = [ self.memory[c] for c in choice]
return results
[docs] def save(self, folder, name):
'''save the replay buffer
This function is going to save the data within the replay buffer
into a pickle file. This will allow us to reload the buffer to
a state where it has already been saved.
Parameters
----------
folder : {str}
path to the folder where the data is to be saved
name : {str}
Name associated with the buffer. Since this program has two agents
acting in tandum, we need to provide a name that will identify which
agent's buffer we are saving.
'''
try:
with open(os.path.join(folder, f'memory_{name}.pickle'), 'wb') as fOut:
pickle.dump(self.memory, fOut, pickle.HIGHEST_PROTOCOL)
except Exception as e:
raise type(e)(
'lib.utils.SimpleReplayBuffer.save - ERROR - ' + str(e)
).with_traceback(sys.exc_info()[2])
return
[docs] def load(self, folder, name):
'''load the data from a particular file
Data saved with the previous command can be reloaded into this new buffer.
Parameters
----------
folder : {str}
Path to the folder where the data is saved
name : {str}
Name of the agent associated whose data is to be extracted.
'''
self.memory = pickle.load(open( os.path.join(folder, f'memory_{name}.pickle'), 'rb' ))
return


Uses PapaParse. There is a known bug where a provided spreadsheet will fail to parse if the first value of the first row is empty.
Currently assumes you have an Islandora instance accessible at localhost:8000 that has JSON:API and CORS (see below) enabled with some existing Controlled Access Terms populated.
Initially my browser refused to load the dropdown boxes from Drupal due to Cross-Origin Resource Sharing (CORS). A bit of searching lead me to a forum post indicating that I needed to configure my site's services.yml to enable CORS. There may be a way to do it without this, but it is what I have right now.


SLIDER
The optional speed parameter specifies the duration of the effect. It can take the following values: "slow", "fast", or milliseconds.The optional callback parameter is a function to be executed after the sliding completes.
The following example demonstrates the slideDown() method:Tabs
Dropdowns
Accordions
Convert Weights
Animated Buttons
Side Navigation
Top Navigation
Modal Boxes
Progress Bars
Parallax
Login Form
HTML Includes
Google Maps
Range Sliders
Tooltips
Slideshow
Filter List
Sort List


The Queen Hind capsized on Sunday morning after leaving the port of Midia, near the south-eastern city of Constanța, on the Black Sea coastline.
All crew members – 22 Syrian nationals – were rescued.
An operation involving police, firefighters and the Romanian coast guard was launched to save the sheep.
Related Articles
Rescued migrants refuse to leave ship taking them to Libya
Nov 19, 2018 10,164 22
Chief plans to raid Tsvangirai home
Mar 11, 2012 149 5
Chief after Tsvangirai’s property over ‘marriage’
Jan 8, 2012 298 1
At least 32 sheep found swimming near the Palau-flagged ship have been rescued, but many are believed to have drowned.
“We have already saved a small number. They were swimming in the sea,” Stoica Anamaria, spokeswoman for the emergency services in Constanța, told the BBC.
The rescue effort will resume on Monday morning after being paused overnight.
Meanwhile, one crew member was taken to hospital with hypothermia.
“He fell into the sea but was very quickly rescued,” Ms Anamaria said, adding that the rest of the crew were “all safe here in the harbour”.
It is not yet known what caused the ship to capsize. An investigation will be carried out when the operation to rescue the sheep and salvage the vessel is finished, authorities said.
The ship, which left Midia at about 12:00 local time (10:00 GMT), was heading to the port city of Jeddah in Saudi Arabia with its cargo.
Built in 1980, the vessel measures 85m (278ft) and has a gross tonnage of 3,785, according to the Marine Traffic website.
It had arrived at the port of Midia on 23 November from the Libyan capital, Tripoli, Romanian media reported.
Pictures show the upended vessel on its side a few hundred metres (yards) from the port, about 20km (12 miles) north of Constanța.
The port is primarily used for the supply of crude oil for nearby industrial and petrochemical facilities. But it is also used by cargo ships carrying live animals from Romania, one of the European Union’s biggest exporters of livestock.
Animal rights campaigners and Romania’s main livestock breeder and exporter association, Acebop, called for an urgent investigation into the overturning of Queen Hind.
“Our association is shocked by the disaster,” Acebop president Mary Pana told AFP news agency. “If we cannot protect livestock during long-distance transports, we should outright ban them.”
Another shipping incident involving a large cargo ship loaded with livestock happened in the Black Sea off Turkey’s coast in 2017.
In that case, the Togo-flagged vessel collided with a Russian naval spy ship, which sank as a result. BBC News


User Profile Instance
A ViewSet that for retrieving and creating users.
GET /v1/users/MINuySgnzVKjMLFzbkPnFoQehFgBWkmYVPFsZzddrYNfgHSLNw/
{ "detail": "Not found." }
A ViewSet that for retrieving and creating users.
GET /v1/users/MINuySgnzVKjMLFzbkPnFoQehFgBWkmYVPFsZzddrYNfgHSLNw/
{ "detail": "Not found." }


Need to catch a train? Enter the train information below to track it. You can even enter as many trains as you'd like!


Toggle navigation
Atomic Arcade Games
More Javascript Games
Go Fish
This game is under construction. Full version coming soon!
Score:
Playing against:
!
Player:
Ask For:


All Projects
My Projects
Projects shared with me
No projects here yet...
Add some with the 'New Project' button!
Project name
Last edited
Access rights
New Project
Edit project
Name
Save
Participants
Add
Warning:
We couldn't find that email in our database. Misspelled something?
Warning:
Your project needs a name!


VPIP
Voluntary Put in Pot
How often you put money in the pot during pre-flop.
AGG
Aggression
How often you raise compared to other actions.
WTS
Went to Showdown
How often you go reach showdown.
TW
Total Winnings
How much profit or loss you have.
PFR
Pre Flop Raise
How often you raise during pre-flop.
PSW
Percentage of Showdowns Won
How often you win showdowns.
BH
Best Hand
The Cards that has won you the most hands.


OpenNebula
Summary
Code management
Summary
Contributors
Companies
Issues management
Summary
Contributors
Companies
Mailing management
Summary
Contributors
Companies
Studies
Timezones analysis
Contributors demography
Data sources
OpenNebula
OpenNebula
/ Complutense University
Contributors
Activity


Media enquiries
Contact our press office if you’re a journalist with a media enquiry or interview request.
Contact our news desk (open Monday to Friday, 7am to 7pm) for breaking news and major developments, including:
- interview requests
- central co-ordination of departmental enquiries
- facts, figures and statistics
- official statements
- diary information
Telephone: 020 3334 3536
Christian Cubitt, Head of News
Telephone: 020 3334 3501
Rob Smith, Deputy Head of News
Telephone: 020 3334 3505
Matt Laddin, Chief Press Officer
Telephone: 020 3334 3523
Andrew Chiles, Chief Press Officer
Telephone: 020 3334 3573
Victoria Buxton, Chief Press Officer
Telephone: 020 3334 3541
Jen Wood, Chief Press Officer
Telephone: 020 3334 3518
Criminal justice desk
Contact the criminal justice desk (open Monday to Friday, 9:30am to 5:30pm) with questions about government policy on criminal justice cases.
Rebecca Evans, Press Officer
Telephone: 020 3334 3503
Law, Rights and International Desk
Contact the Law, Rights and International Desk (open Monday to Friday, 9:30am to 5:30pm) with questions about government policy on:
- human rights
- international cases
Paul Halford, Senior Press Officer
Telephone: 020 3334 3546
Rebecca Gough, Press Officer
Telephone: 020 3334 3506
Andrew McGill, Press Officer
Telephone: 020 3334 3524
Prisons desk
Contact the prisons desk (open Monday to Friday, 9:30am to 5:30pm) with questions about government policy on life in prison.
Tom Bennett, Senior Press Officer
Telephone: 020 3334 4582
Richard Wood, Press Officer
Telephone: 020 3334 3510
Sarah Thacker, Press Officer
Telephone: 020 3334 4584
Probation desk
Contact the probation desk (open Monday to Friday, 9:30am to 5:30pm) with questions about government policy on probation.
Lisa Frascarelli, Senior Press Officer
Telephone: 020 3334 3527
Suzanne O’Brien, Press Officer
Telephone: 020 3334 3533
Alice Booth, Press Officer
Telephone: 020 3334 4872
Out of hours
For urgent out of hours enquiries, contact the duty press officer on 07659 173 270.


Terms of Service
Privacy Policy
Consent
By using our website, you hereby consent to our Privacy Policy and agree to its terms.
Information we collect
The personal information that you are asked to provide, and the reasons why you are asked to provide it, will be made clear to you at the point we ask you to provide your personal information.
If you contact us directly, we may receive additional information about you such as your name, email address, phone number, the contents of the message and/or attachments you may send us, and any other information you may choose to provide.
When you register for an Account, we may ask for your contact information, including items such as name, company name, address, email address, and telephone number.
How we use your information
We use the information we collect in various ways, including to:
- Provide, operate, and maintain our website
- Improve, personalize, and expand our website
- Understand and analyze how you use our website
- Develop new products, services, features, and functionality
- Communicate with you, either directly or through one of our partners, including for customer service, to provide you with updates and other information relating to the website, and for marketing and promotional purposes
- Send you emails
- Find and prevent fraud
Log Files
Technocolabs follows a standard procedure of using log files. These files log visitors when they visit websites. All hosting companies do this and a part of hosting services' analytics. The information collected by log files include internet protocol (IP) addresses, browser type, Internet Service Provider (ISP), date and time stamp, referring/exit pages, and possibly the number of clicks. These are not linked to any information that is personally identifiable. The purpose of the information is for analyzing trends, administering the site, tracking users' movement on the website, and gathering demographic information. Our Privacy Policy was created with the help of the Privacy Policy Generator and the Online Privacy Policy Generator.
Cookies and Web Beacons
Like any other website, Technocolabs uses 'cookies'. These cookies are used to store information including visitors' preferences, and the pages on the website that the visitor accessed or visited. The information is used to optimize the users' experience by customizing our web page content based on visitors' browser type and/or other information.
For more general information on cookies, please read "What Are Cookies".
Our Advertising Partners
Some of advertisers on our site may use cookies and web beacons. Our advertising partners are listed below. Each of our advertising partners has their own Privacy Policy for their policies on user data. For easier access, we hyperlinked to their Privacy Policies below.
Advertising Partners Privacy Policies
You may consult this list to find the Privacy Policy for each of the advertising partners of Technocolabs.
Third-party ad servers or ad networks uses technologies like cookies, JavaScript, or Web Beacons that are used in their respective advertisements and links that appear on Technocolabs, which are sent directly to users' browser. They automatically receive your IP address when this occurs. These technologies are used to measure the effectiveness of their advertising campaigns and/or to personalize the advertising content that you see on websites that you visit.
Note that Technocolabs has no access to or control over these cookies that are used by third-party advertisers.
Third Party Privacy Policies
Technocolabs's Privacy Policy does not apply to other advertisers or websites. Thus, we are advising you to consult the respective Privacy Policies of these third-party ad servers for more detailed information. It may include their practices and instructions about how to opt-out of certain options.
You can choose to disable cookies through your individual browser options. To know more detailed information about cookie management with specific web browsers, it can be found at the browsers' respective websites.
CCPA Privacy Rights (Do Not Sell My Personal Information)
Under the CCPA, among other rights, California consumers have the right to:
Request that a business that collects a consumer's personal data disclose the categories and specific pieces of personal data that a business has collected about consumers.
Request that a business delete any personal data about the consumer that a business has collected.
Request that a business that sells a consumer's personal data, not sell the consumer's personal data.
If you make a request, we have one month to respond to you. If you would like to exercise any of these rights, please contact us.
GDPR Data Protection Rights
We would like to make sure you are fully aware of all of your data protection rights. Every user is entitled to the following:
The right to access – You have the right to request copies of your personal data. We may charge you a small fee for this service.
The right to rectification – You have the right to request that we correct any information you believe is inaccurate. You also have the right to request that we complete the information you believe is incomplete.
The right to erasure – You have the right to request that we erase your personal data, under certain conditions..
The right to restrict processing – You have the right to request that we restrict the processing of your personal data, under certain conditions.
The right to object to processing – You have the right to object to our processing of your personal data, under certain conditions..
The right to data portability – You have the right to request that we transfer the data that we have collected to another organization, or directly to you, under certain conditions.
If you make a request, we have one month to respond to you. If you would like to exercise any of these rights, please contact us..
Children's Information
Another part of our priority is adding protection for children while using the internet. We encourage parents and guardians to observe, participate in, and/or monitor and guide their online activity.
Technocolabs does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records.


Help Information
- LOCATION SEARCH: To find the location of your choice, simply type the name of the city or town, or nearest urban centre, and press enter. You can also select from the list of completion options that appear as you type. You can repeat this process in the second search field to compare the weather data at another location.
- WEATHER: The weather information updates to the current weather for each location selected. It includes the city name, the weather description, the temperature and the windspeed for that location.
- ZOOM FUNCTION: Use the plus [+] and minus [-] buttons on the right of each map to zoom in or to zoom out.
- STREET VIEW: To view the locality at street level place the mouse cursor - it turns into a small hand - on the yellow figure at the right of the map, then click and drag the figure to a location on the map.
- SATELLITE VIEW: To switch to Satellite View and see the geographical terrain of the locality, select the Satellite option near the top left hand corner of the map.
- FORECAST: To see a 5 day weather forecast for the same location, select the 5 Day Forecast button underneath the Weather Information.
- RESOURCES AND DOCUMENTATION: For information about the resources used for this application, and for documentation on the terms of use, click the i (information) icon on the navigation bar to the left side of the screen.


It is the student body which consists the student representatives to file compliants and take some minor decision in the campus.Important contacts of some of the student heads:
Shivam chopra
B.tech 4th year EE
General Secretary
(Hostel affairs)
<EMAIL_ADDRESS><PHONE_NUMBER>
Dheeraj Etta
B.tech 4th year EE
General Secretary
(Academic affairs)
<EMAIL_ADDRESS><PHONE_NUMBER>
Gaurav dewat
B.tech 4th year CSE
General Secretary
(Technical affairs)
<EMAIL_ADDRESS><PHONE_NUMBER>
Nitesh kumar
B.tech 3rd year P&I
General Secretary
(Sports affairs)
<EMAIL_ADDRESS><PHONE_NUMBER>
Further the technical groups of the campus are headquartered in this SAC building.The technical groups are:
- IMG
- MDG
- ArIES(Artificial Intelligence)
-
SDS labs
- SDS labs
- PAG
- InfoSec
- Data Science
- Spicmacay
- Robotics
- Cognizance
- Geek Gazzette
- ACM
- IEEE
- E-cell
- NSS


Improve service delivery in high density areas
by Anonymous© EDITOR — It is sad to note that most local authorities are failing to provide essential services throughout the country.
The economy is in bad shape, everyone knows that. Residents are struggling to service their bills.
For this reason, local authorities’ revenue bases are dwindling.
Under such a scenario, we would expect those at the helm to tighten spending and channel the little revenue trickling their way to essential services provision.
At least that is what is supposed to happen anyway because at the end of the day, councils are there to provide services for residents.
The opposite of this, however, is what we are seeing happening and Harare City Council is the biggest culprit.
The council has been hogging the limelight for all the wrong reasons. It is important to note that service provision in Harare is almost non-existent.
There are perennial shortages of water, raw sewage flowing on the streets, burst water pipes and rubbish is everywhere.
Right now, the quality of water running through our taps is appalling and only the grace of God is saving us.
The city fathers do not seem to care. For a council that is dogged by poor service provision, you can’t have the greatest chunk of the little revenue going towards salaries and wages.


Accessiblity criticism for Parliament's new playground
by RNZDisability commissioner critical of Parliament's new playground
A new playground which opened on the front lawn of Parliament yesterday is a missed opportunity because it does not cater to all children, disability advocates say.
The playground was built as part of an effort to make Parliament more family-friendly, welcoming, and accessible.
Disability Rights Commissioner Paula Tesoriero said it illustrated a much bigger problem in New Zealand around the lack of accessible places and spaces for disabled children and their families to visit.
"This is not just any public space. This is parliament and I would have hoped to this on the very grounds of an institution that should be promoting inclusivity and diversity and diversity and celebrating those things, that a playground had been built that ... all New Zealand children can access," she said.
"I think it's untenable to have a playground on the grounds of Parliament that is launched on international Children's Day and is launched in the context of celebrating a UN Convention on the Rights of Child which explicitly talks about the right to play ... that is not accessible for all New Zealand children...
"The playground is on a slope. The equipment is not accessible. So it has a slide with steps up to it. And then it has balance equipment. So there are a range of accessible equipments that you can put in a playground that enable disabled children to fully participate...
"I would hope that Parliamentary Services would be looking into (it) in the very near future takes the time to rectify the situation and make the park accessible."
Prime Minister Jacinda Ardern and Speaker of the House Trevor Mallard cut the ribbon on the $500,000 playground yesterday morning.
Mr Mallard clearly enjoyed testing the new slide and about 80 children blew bubbles and played on the balance benches.
Ms Ardern said its opening marked the 30th anniversary of the UN Convention of the Rights of the Child.
"That agreement did some really important things," she said.
"It said that children have the right to grow up in a place that looks after their wellbeing - where they're loved and they're nurtured.
"It said that we should make sure children have everything that they need to thrive. And it said that we should make sure that we hear the voices of children and young people."
Wanting to help children inspired her to get into politics in the first place, Ms Ardern said.
She said New Zealand was the only country she knew of with a playground at Parliament - and having it there sent a message about the government's focus on children's wellbeing.
However, the government has also been facing criticism over inaction on child poverty.


Required Files
- rubygems
- test/unit
- shoulda
- tempfile
- mocha
- active_record
- active_support
- ruby-debug
- shoulda_macros/paperclip
Included Modules
- Paperclip::Storage::S3 START:includes
- Paperclip::Storage::S3 START:includes
Classes and Modules
Constants
| ROOT | = | File.join(File.dirname(__FILE__), '..') |
| RAILS_ROOT | = | ROOT |
| RAILS_ENV | = | "test" |
| FIXTURES_DIR | = | File.join(File.dirname(__FILE__), "fixtures") |


| subprogramHeader |
procedure rnd ( var i : int, x : real)
i := round ( x )
end rnd
type t : procedure q ( var j : int, y : real )
var u : t := rnd % Procedure variable u refers to rnd
var j : int
u ( j, 24.6 ) % Call procedure u referring to rnd
var v := u % Subprogram variable v initialized to u
If v is a variable or constant that refers to a subprogram, v can be called, compared for equality to other subprogram variables, assigned and passed as a parameter. Variable v is not an integer, string or pointer and cannot participate in their corresponding operations.
A reference to a subprogram, rather that the code of the subprogram, is contained in a variable v whose type is a subprogram type. This implies that addr (v) is the address of the reference to subprogram, rather than the address of the subprogram. The address of the code is given by #v. See cheat for an explanation of the # operator.
You cannot assign a reference to a subprogram exported from a class. This restriction exists because these subprograms are meaningless without an accompanying reference to an object.
Many potential uses of subprogram variables are better programmed using classes and overriding exported subprograms. See class.


function Counter (appStorage) {
this.appStorage = appStorage
}
Counter.prototype.markCompleted = function (exerciseName) {
var completed = this.appStorage.get('completed') || []
if (completed.indexOf(exerciseName) === -1) {
completed.push(exerciseName)
}
this.appStorage.save('completed', completed)
}
Counter.prototype.countRemaining = function (exercises) {
var completed = this.appStorage.get('completed')
return exercises.length - (completed ? completed.length : 0)
}
Counter.prototype.getNext = function (exercises) {
var current = this.appStorage.get('current')
var remainingAfterCurrent = exercises.slice(exercises.indexOf(current) + 1)
var completed = this.appStorage.get('completed') || []
var incompleteAfterCurrent = remainingAfterCurrent.filter(function (elem) {
return completed.indexOf(elem) < 0
})
if (incompleteAfterCurrent.length === 0) {
return new Error('error.no_uncomplete_left')
}
return incompleteAfterCurrent[0]
}
module.exports = Counter
|


Breaking Degeneracy with the Spin-Orbit Interaction
Background
In quantum mechanics, the spin-orbit interaction is the interaction of the spin of a particle \(S\) with its orbital motion \(L\). It is a well-known effect that lifts the degeneracy of the one-electron energy levels in atoms, molecules, and crystals.
The nonrelativistic Schrodinger equation is used to find the electronic band structure of crystal lattices. Since there are no relativistic corrections (i.e. no spin terms in the Hamiltonian), each of the bands is doubly degenerate - both the spin up and spin down electrons have the same energy. However, if we introduce a correction in the Schrodinger equation that involves the spin of the particle, we see that these degenerate bands split apart. The spin-orbit interaction is one such correction; it has the form:
\[\begin{equation} \mathcal{H}_{so} = \frac{1}{2 m^2 c^2} \frac{1}{r} \frac{dV}{dr} \vec{L} \cdot \vec{S} \end{equation}\]In the equation above, \(m\) is the mass of the electron, \(c\) is the speed of light, \((1/r)(dV/dr)\) describes the electric field of the nucleus on the electron, \(\vec{S}\) is the spin of the electron, and \(\vec{L}\) is the orbital angular momentum of the electron.
Let’s take some time to analyze the commutation relationships of the spin-orbit interaction with the \(\vec{S}\), \(\vec{L}\), and \(\vec{J} = \vec{L} + \vec{S}\) operators.
Commutation Relationships
Let’s start off with the spin operator \(\vec{S}\). The commutation relationship between two orthoganal spins is:
\[\begin{equation} [S_i, S_j] = i\hbar \epsilon_{ijk} S_k \end{equation}\]We can find the commutation relationship of spin and the spin-orbit interaction by analyzing a single component of the spin:
\[\begin{align} \left [ S_i, \vec{L} \cdot \vec{S} \right ] &= \left [ S_i, L_i S_i + L_j S_j + L_k S_k \right ] \\[0.1cm] &= \left [ S_i, L_i S_i \right ] + \left [ S_i, L_j S_j \right ] + \left [ S_i, L_k S_k \right ] \\[0.1cm] &= \left [ S_i, L_i \right ] S_i + L_i \left [ S_i, S_i \right ] + \left [ S_i, L_j \right ] S_j + L_j \left [ S_i, S_j \right ] + \left [ S_i, L_k \right ] S_k + L_k \left [ S_i, S_k \right ] \\[0.1cm] &= L_j \left [ S_i, S_j \right ] + L_k \left [ S_i, S_k \right ] \\[0.1cm] &= L_j \left ( i \hbar S_k \right ) + L_k \left ( -i \hbar S_j \right ) \\[0.1cm] &= i\hbar \left ( L_j S_k - L_k S_j \right ) \\[0.1cm] &= i\hbar \left ( \vec{L} \times \vec{S} \right )_i \end{align}\]We see that this procedure can be repeated for each of the other two components of spin giving:
\[\begin{equation} \left [ \vec{S}, \vec{L} \cdot \vec{S} \right ] = i\hbar \left ( \vec{L} \times \vec{S} \right ) \end{equation}\]Finally, the commutation of the \(\vec{S}^2\) operator and the spin-orbit operator is:
\[\begin{align} \left [ \vec{S}^2, \vec{L} \cdot \vec{S} \right ] &= \left [ S_i S_i + S_j S_j + S_k S_k, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= \left [ S_i S_i, \vec{L} \cdot \vec{S} \right ] + \left [ S_j S_j, \vec{L} \cdot \vec{S} \right ] + \left [ S_k S_k, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= S_i \left [ S_i, \vec{L} \cdot \vec{S} \right ] + \left [ S_i, \vec{L} \cdot \vec{S} \right ] S_i + S_j \left [ S_j, \vec{L} \cdot \vec{S} \right ] + \left [ S_j, \vec{L} \cdot \vec{S} \right ] S_j + S_k \left [ S_k, \vec{L} \cdot \vec{S} \right ] + \left [ S_k, \vec{L} \cdot \vec{S} \right ] S_k \\[0.1cm] &= 2i\hbar \left ( \vec{L} \times \vec{S} \right )_i S_i + 2i\hbar \left ( \vec{L} \times \vec{S} \right )_j S_j + 2i\hbar \left ( \vec{L} \times \vec{S} \right )_k S_k \\[0.1cm] &= 2i\hbar \left ( \vec{L} \times \vec{S} \right ) \cdot \vec{S} \\[0.1cm] &= 0 \end{align}\]The last line above comes from the properties of the cross product. The commutation relationship of orthogonal orbital angular momentum operators is given by:
\[\begin{equation} [L_i, L_j] = i\hbar \epsilon_{ijk} L_k \end{equation}\]The commutation relationship of \(\vec{L}\) and the spin-orbit interaction is very similar to the relationship seen for \(\vec{S}\) seen above:
\[\begin{align} \left [ L_i, \vec{L} \cdot \vec{S} \right ] &= \left [ L_i, L_i S_i + L_j S_j + L_k S_k \right ] \\[0.1cm] &= \left [ L_i, L_i S_i \right ] + \left [ L_i, L_j S_j \right ] + \left [ L_i, L_k S_k \right ] \\[0.1cm] &= \left [ L_i, L_i \right ] S_i + L_i \left [ L_i, S_i \right ] + \left [ L_i, L_j \right ] S_j + L_j \left [ L_i, S_j \right ] + \left [ L_i, L_k \right ] S_k + L_k \left [ L_i, S_k \right ] \\[0.1cm] &= \left [ L_i, L_j \right ] S_j + \left [ L_i, L_k \right ] S_k \\[0.1cm] &= \left ( i \hbar L_k \right )S_j + \left ( -i \hbar L_j \right )S_k \\[0.1cm] &= i\hbar \left ( L_k S_j - L_j S_k \right ) \\[0.1cm] &= i\hbar \left ( \vec{S} \times \vec{L} \right )_i \end{align}\]Repeating for the remaining two components and adding the three terms gives:
\[\begin{equation} \left [ \vec{L}, \vec{L} \cdot \vec{S} \right ] = i\hbar \left ( \vec{S} \times \vec{L} \right ) \end{equation}\]Finally, the commutation relationship between \(\vec{L}^2\) and the spin-orbit interaction is:
\[\begin{align} \left [ \vec{L}^2, \vec{L} \cdot \vec{S} \right ] &= \left [ L_i L_i + L_j L_j + L_k L_k, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= \left [ L_i L_i, \vec{L} \cdot \vec{S} \right ] + \left [ L_j L_j, \vec{L} \cdot \vec{S} \right ] + \left [ L_k L_k, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= L_i \left [ L_i, \vec{L} \cdot \vec{S} \right ] + \left [ L_i, \vec{L} \cdot \vec{S} \right ] L_i + L_j \left [ L_j, \vec{L} \cdot \vec{S} \right ] + \left [ L_j, \vec{L} \cdot \vec{S} \right ] L_j + L_k \left [ L_k, \vec{L} \cdot \vec{S} \right ] + \left [ L_k, \vec{L} \cdot \vec{S} \right ] L_k \\[0.1cm] &= 2i\hbar \left ( \vec{S} \times \vec{L} \right )_i L_i + 2i\hbar \left ( \vec{S} \times \vec{L} \right )_j L_j + 2i\hbar \left ( \vec{S} \times \vec{L} \right )_k L_k \\[0.1cm] &= 2i\hbar \left ( \vec{S} \times \vec{L} \right ) \cdot \vec{L} \\[0.1cm] &= 0 \end{align}\]The total angular momentum operator \(J\) is given by:
\[\begin{equation} \vec{J} = \vec{L} + \vec{S} \end{equation}\]We can analyze the commutation relationship between \(\vec{J}\) and the spin-orbit interaction using some of the relationships that we derived above to simplify this expression. Unlike spin operator or the orbital angular momentum operator, we see that the total angular momentum operator does commute with the spin-orbit interaction:
\[\begin{align} \left [ \vec{J}, \vec{L} \cdot \vec{S} \right ] &= \left [ (\vec{L} + \vec{S}), \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= \left [ \vec{L}, \vec{L} \cdot \vec{S} \right ] + \left [ \vec{S}, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= i\hbar (\vec{S} \times \vec{L}) + i\hbar (\vec{L} \times \vec{S}) \\[0.1cm] &= i\hbar (\vec{S} \times \vec{L}) - i\hbar (\vec{S} \times \vec{L}) \\[0.1cm] &= 0 \end{align}\]Finally, we can analyze the commutation relationship between the spin-orbit interaction and the \(\vec{J}^2\) operator. Once again, we can simplify the expression and use some of the relationships that we derived above:
\[\begin{align} \left [ \vec{J}^2, \vec{L} \cdot \vec{S} \right ] &= \left [ (\vec{L} + \vec{S})^2, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= [(\vec{L}^2 + \vec{S}^2 + 2\vec{L} \cdot \vec{S}), \vec{L} \cdot \vec{S} ] \\[0.1cm] &= \left [ \vec{L}^2, \vec{L} \cdot \vec{S} \right ] + \left [ \vec{S}^2, \vec{L} \cdot \vec{S} \right ] + \left [ 2\vec{L} \cdot \vec{S}, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= \left [ \vec{L}^2, \vec{L} \cdot \vec{S} \right ] + \left [ \vec{S}^2, \vec{L} \cdot \vec{S} \right ] + 2 \left [ \vec{L} \cdot \vec{S}, \vec{L} \cdot \vec{S} \right ] \\[0.1cm] &= 0 + 0 + 2(0) \\[0.1cm] &= 0 \end{align}\]Conclusions
These relationships are interesting, but why do we care?
Suppose I want to use perturbation theory to study the splitting of the electronic band structure as I mentioned above. Choosing a basis in \(L_z\) or \(S_z\) is not a good idea in this case. The \(\vec{L}\) and \(\vec{S}\) operators do not commute with the spin-orbit Hamiltonian, and thus, will not make good basis states for degenerate perturbation theory. However, choosing a basis in \(L^2\), \(S^2\), \(J\), or \(J^2\) would work out very well. These operators commute with the spin-orbit Hamiltonian, and so they would be good choices for degenerate perturbation theory.
Additionally, since these operators commute with the spin-orbit Hamiltonian, they are constants of motion - quantities that are conserved throughout the evolution of the object. Thus, they are particularly interesting to study in this system.


Config file:
GamerProfile.xml
Path:
%USERPROFILE%\Documents\My Games\Far Cry 4\
Sensitivity 1
Minimum:
MouseLookSensitivity="0.001"
Default:
MouseLookSensitivity="1"
Maximum:
MouseLookSensitivity="20"
Console:
N/A
Notes:
With version 1.5 mouse acceleration was completely fixed, and the calculations are now spot on.
Set the following values to 0 to get the best mouse response:
MouseAccelerationOn
MouseAcceleration
Smoothness
Smoothness_Ironsight
UseMouseSmooth
Engine:
Dunia Engine 2
Affected by:
FOV: No | WPS: No | Resolution: No
Default FOV:
FOVScaleFactor="75" | Horizontal Degrees (4:3 Base)
Set the FOV multiplier in the config file.
Added:
2014-11-25 09:04:07
Updated:
N/A


|
| class | AssemblyUtils |
| | Utils to load types
|
| |
| class | CollectionExtensions |
| |
| class | ConvertibleTypeKey |
| |
| class | CsvAttribute |
| |
| class | CsvConfig |
| |
| class | CsvDictionaryWriter |
| |
| class | CsvSerializer |
| |
| class | CsvStreamExtensions |
| |
| class | CsvWriter |
| |
| class | DateTimeExtensions |
| | A fast, standards-based, serialization-issue free DateTime serailizer.
|
| |
| class | DynamicProxy |
| |
| class | Env |
| |
| interface | ITracer |
| |
| interface | ITypeSerializer |
| |
| class | JsConfig |
| |
| class | JsConfigScope |
| |
| class | JsonArrayObjects |
| |
| class | JsonExtensions |
| |
| class | JsonObject |
| |
| class | JsonSerializer |
| | Creates an instance of a Type from a string value
|
| |
| struct | JsonValue |
| |
| class | JsvFormatter |
| |
| class | ListExtensions |
| |
| class | MapExtensions |
| |
| class | PlatformExtensions |
| |
| class | QueryStringSerializer |
| |
| class | QueryStringWriter |
| | Implement the serializer using a more static approach
|
| |
| class | ReflectionExtensions |
| |
| class | StreamExtensions |
| |
| class | StringExtensions |
| |
| class | SystemTime |
| |
| class | TextExtensions |
| |
| class | Tracer |
| |
| class | TranslateListWithConvertibleElements |
| |
| class | TranslateListWithElements |
| |
| class | TypeConfig |
| |
| class | TypeSerializer |
| | Creates an instance of a Type from a string value
|
| |


Test Collections MD Headers
Markdown with Headers
Body:
Markdown Document for Header Testing
This is a markdown document with a bunch of headers in different formats.
Level 2 Heading underlined
Level 3 Heading
Let’s see how this works.
Level 4 Heading
And this.


RE: Important notice and offer to collaborate
To Whom It May Concern:
My name is Chris Dortch. I am Co-founder, Stockholder, Director, and President of Global Archive Holdings, Inc., which is the parent company to Global Archive, Inc. and owner of various innovative media technologies and brands. Here are just three of the company’s websites:
1) MotionLoops.com: a marketplace for DJ’s, where looping video animations can be downloaded, and
where users can purchase hard drives filled with digital content for their live performances.
2) motionlogos.com : an innovative tool that converts standard logos uploaded by a user, into 3D logo
animations.
3) globalarchive.com/ : a marketplace for film-makers, marketing companies, ad agencies, and social
media enthusiasts where users can purchase award-winning digital media.
The Pasadena California based media company recently completed a reorganization/merger with its technology
counterpart in Austin Texas, and while I am currently involved in the day-to-day operations of the company,
I am an entrepreneur who is always looking for new projects. I would love to discuss any ideas you may have for
my company or me.
I am available to talk most days between 9 am and 10 pm CDT with 24-hour notice and can be reached almost anytime via text<PHONE_NUMBER>) or Skype (chrisdortch). Please contact me at your earliest convenience regarding this or any other ideas you may have. Thanks for your consideration. I look forward to hearing from you soon.
Sincerely,
Chris Dortch


[Erowid Note: The doses of heroin described here are considered extremely high, see Heroin Dose Chart]
I am addicted to Heroin since 2002. Now, I am in buprenorphine substituion program for about a year. My daily dosage is 8mg.
Situation 1. : I get up at 10:00. Crush 4mg Subutex (Buprenorphine tabs) with cards, make a fat line and snort it. It takes about 20-50mins till I start to feel the effects.
My mood lifts slowly. I watch MTV and as time goes by I enjoy watching it more & more.
At 14:00 a friend arrives with 5g of some real good Heroin. We make 1g lines (each) snort them, and I light a cigarette. By the time I finish my cigarette I feel the effects of the Heroin about 70% (because of the Subutex). 14:30 we take another gram each. I wait 10 mins, and my face is already itching and I'm scratching myself like every junkie does when hes high on smack.
 I feel like in a cosiest blanket in the world. If I have enough heroin, it wins over the bup and I can get wasted like I wanted to.
Now Situation 2: I wake up at 10:00. A friends come to my place and brings 5g of heroin and some 3g of some good peruvian coke. We chill, mix speedballs, snort about 2g Smack & 1g coke. We are high as hell. Cant stop chatting, cant stop smoking cigs. We play poker. We do anything. Anything we do is just great fun. With the time we snort everything away. At 16:00 we beep a dealer, he arrives with another 5g of horse and 2g of the same great coke. So we chill, get high, smoke some weed, havin a blast. Time goes by. Its already 22:00 in the evening. All the drugs are gone, and I'm too high on coke. I need something to calm down so I go sleep soon. I smoke weed, but it dont really help. I dunno what to do. Then I remember I still got Subutex.
I crush 4mg and snort it. I also take 2 Alprazolam pills. Within an hour I start feeling relaxed and calm.
Once I snorted 1/2g heroin, and 30 mins later I snorted 2mg buprenorphine and nothing special happened.
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.


×
You have been logged out.
Please sign in
Username
or
Password
are incorrect.
Email address
Password
Sign in


A block is the smallest unit of a block chain.
For our example it consists of only 5 elements:
A block is considered "valid" if its hash has a certain form. For our example we want the hash to start with a certain amount of zeroes.
The higher the number of zeroes we want a hash to start with, the harder it will be to find a nonce that makes the hash of the block to look
the way we want. This is what is called the difficulty. You can change the difficulty of this example page by enabling expert mode.
Links:


Next: Syntax of a Ratio, Previous: Syntax of a Rational, Up: Constructing Numbers from Tokens
Integers can be written as a sequence of digits, optionally preceded by a sign and optionally followed by a decimal point; see Figure~2–9. When a decimal point is used, the digits are taken to be in radix 10; when no decimal point is used, the digits are taken to be in radix given by the current input base.
For information on how integers are printed, see Printing Integers.


Acme Paper Co.
Corp Water Doctor
Local Buyer / Water Quality Manager
Solenis
Existing Service Tech
Account Rep


Microsoft
`Prev `__
M
`Next `__
--------------
**Microsoft**
The new `*Evil Empire* <../E/Evil-Empire.html>`__ (the old one was
`*IBM* <../I/IBM.html>`__). The basic complaints are, as formerly with
IBM, that (a) their system designs are horrible botches, (b) we can't
get `*source* <../S/source.html>`__ to fix them, and (c) they throw
their weight around a lot. See also `*Halloween
Documents* <../H/Halloween-Documents.html>`__.
--------------
+---------------------------------------+----------------------------+-----------------------------------+
| `Prev `__ | `Up <../M.html>`__ | `Next `__ |
+---------------------------------------+----------------------------+-----------------------------------+
| Microsloth Windows | `Home <../index.html>`__ | micros~1 |
+---------------------------------------+----------------------------+-----------------------------------+


My projects
Programming skills are like muscles, if we stop training them. soon, they will be weak/forgotten, in this case side projects are the best training to keep up with the new technologies and enhance my programming skills. and if possible, also contribute to the opensouce community.
Here are some of my projects below.
{% for project in site.data.myprojects %}
{% endfor %}
{{ project.description }}


Attach the [ZoneComponent] attribute to elements that contain multiple content areas (zones) to place a component within the specified zone.
The [ZoneComponent] attribute can be used on a layout to define the default content of a zone within the layout. It can also be used on a region or page that contains a layout to overide the layout and change the content of the zone for this instance of the layout.
Example usage:
[IsLayout("interfaceLandingPage_Header", "title,detail")] [ZoneTemplate("detail", "/data/interfacedefinition")] internal class LandingPageHeaderLayout : DocumentHeadLayout { } [IsLayout("areaLandingPage_Header", "title,detail")] [ZoneTemplate("detail", "/data/area")] internal class LandingPageHeaderLayout : DocumentHeadLayout { } [ZoneRegion("title", "documentHead_Title")] [ZoneRegion("detail", "documentHead_Detail")] [ZoneComponent("title", "text:verticalText")] [Container("div", "{ns}_document_head_layout")] internal class DocumentHeadLayout : ContentElement { }
The [ZoneComponent()] attribute has the following properties you can set.
This is the name of the zone within a layout where the component should be rendered.
This is the name of the component to render into this zone of the layout. If the component is in a different package then the component name must be qualified with the package namespace as a prefix separated by a colon.


If your Jenkins server sits behind a firewall and does not have the direct
access to the internet, and if your server JVM is not configured appropriately
(
See JDK networking properties for more details
) to enable internet connection, you can specify the HTTP proxy server name in
this field to allow Jenkins to install plugins on behalf of you. Note that
Jenkins uses HTTPS to communicate with the update center to download plugins.
Leaving this field empty means Jenkins will try to connect to the internet
directly.
If you are unsure about the value, check the browser proxy configuration.