"""
Max-p regions algorithm
Source: Wei, Ran, Sergio J. Rey, and Elijah Knaap (2020) "Efficient
regionalization for spatially explicit neighborhood delineation." International
Journal of Geographical Information Science. Accepted 2020-04-12.
"""
from ..BaseClass import BaseSpOptHeuristicSolver
from .base import (
w_to_g,
move_ok,
ok_moves,
region_neighbors,
_centroid,
_closest,
_seeds,
is_neighbor,
)
import matplotlib.pyplot as plt
from scipy.spatial.distance import pdist, squareform
import geopandas as gp
import numpy as np
from copy import deepcopy
from scipy.sparse.csgraph import connected_components
ITERCONSTRUCT = 999
ITERSA = 10
def maxp(
gdf,
w,
attrs_name,
threshold_name,
threshold,
top_n,
max_iterations_construction=ITERCONSTRUCT,
max_iterations_sa=ITERSA,
verbose=False,
):
"""The max-p-regions involves the aggregation of n areas into an unknown maximum number of
homogeneous regions, while ensuring that each region is contiguous and satisfies a minimum
threshold value imposed on a predefined spatially extensive attribute.
Parameters
----------
gdf : geopandas.GeoDataFrame, required
Geodataframe containing original data
w : libpysal.weights.W, required
Weights object created from given data
attrs_name : list, required
Strings for attribute names to measure similarity (cols of ``geopandas.GeoDataFrame``).
threshold_name : string, requied
The name of the spatial extensive attribute variable.
threshold : {int, float}, required
The threshold value.
top_n : int
Max number of candidate regions for enclave assignment.
max_iterations_construction : int
Max number of iterations for construction phase.
max_iterations_SA: int
Max number of iterations for customized simulated annealing.
verbose : boolean
Set to ``True`` for reporting solution progress/debugging.
Default is ``False``.
Returns
-------
max_p : int
The number of regions.
labels : numpy.array
Region IDs for observations.
"""
attr = gdf[attrs_name].values
threshold_array = gdf[threshold_name].values
distance_matrix = squareform(pdist(attr, metric="cityblock"))
n, k = attr.shape
arr = np.arange(n)
max_p, rl_list = construction_phase(
arr,
attr,
threshold_array,
distance_matrix,
w,
threshold,
top_n,
max_iterations_construction,
)
if verbose:
print("max_p: ", max_p)
print("number of good partitions:", len(rl_list))
alpha = 0.998
tabuLength = 10
max_no_move = n
best_obj_value = np.inf
best_label = None
best_fn = None
for irl, rl in enumerate(rl_list):
label, regionList, regionSpatialAttr = rl
if verbose:
print(irl)
for saiter in range(max_iterations_sa):
finalLabel, finalRegionList, finalRegionSpatialAttr = performSA(
label,
regionList,
regionSpatialAttr,
threshold_array,
w,
distance_matrix,
threshold,
alpha,
tabuLength,
max_no_move,
)
totalWithinRegionDistance = calculateWithinRegionDistance(
finalRegionList, distance_matrix
)
if verbose:
print("totalWithinRegionDistance after SA: ")
print(totalWithinRegionDistance)
if totalWithinRegionDistance < best_obj_value:
best_obj_value = totalWithinRegionDistance
best_label = finalLabel
best_fn = irl
if verbose:
print("best objective value:")
print(best_obj_value)
return max_p, best_label
def construction_phase(
arr,
attr,
threshold_array,
distance_matrix,
weight,
spatialThre,
random_assign_choice,
max_it=999,
):
"""Construct feasible solutions for max-p-regions.
Parameters
----------
arr : array, required
An array of index of area units.
attr : array, required
An array of the values of the attributes.
threshold_array : array, required
An array of the values of the spatial extensive attribute.
distance_matrix : array, required
A square-form distance matrix for the attributes.
weight : libpysal.weights.W, required
Weights object created from given data.
spatialThre : {int, float}, required
The threshold value.
random_assign_choice : int, required
The number of top candidate regions to consider for enclave assignment.
max_it : int
Maximum number of iterations. Default is 999.
Returns
-------
real_values : list
``realmaxpv``, ``realLabelsList``
"""
labels_list = []
pv_list = []
max_p = 0
maxp_labels = None
maxp_regionList = None
maxp_regionSpatialAttr = None
for _ in range(max_it):
labels = [0] * len(threshold_array)
C = 0
regionSpatialAttr = {}
enclave = []
regionList = {}
np.random.shuffle(arr)
labeledID = []
for arr_index in range(0, len(threshold_array)):
P = arr[arr_index]
if not (labels[P] == 0):
continue
NeighborPolys = deepcopy(weight.neighbors[P])
if len(NeighborPolys) == 0:
labels[P] = -1
else:
C += 1
labeledID, spatialAttrTotal = growClusterForPoly(
labels, threshold_array, P, NeighborPolys, C, weight, spatialThre
)
if spatialAttrTotal < spatialThre:
C -= 1
enclave.extend(labeledID)
else:
regionList[C] = labeledID
regionSpatialAttr[C] = spatialAttrTotal
num_regions = len(regionList)
for i, l in enumerate(labels):
if l == -1:
enclave.append(i)
if num_regions < max_p:
continue
else:
max_p = num_regions
maxp_labels, maxp_regionList, maxp_regionSpatialAttr = assignEnclave(
enclave,
labels,
regionList,
regionSpatialAttr,
threshold_array,
weight,
distance_matrix,
random_assign=random_assign_choice,
)
pv_list.append(max_p)
labels_list.append([maxp_labels, maxp_regionList, maxp_regionSpatialAttr])
realLabelsList = []
realmaxpv = max(pv_list)
for ipv, pv in enumerate(pv_list):
if pv == realmaxpv:
realLabelsList.append(labels_list[ipv])
real_values = [realmaxpv, realLabelsList]
return real_values
def growClusterForPoly(
labels, threshold_array, P, NeighborPolys, C, weight, spatialThre
):
"""Grow one region from current area unit until threshold constraint is satisified
Parameters
----------
labels : list, required
A list of current region labels
threshold_array : array, required
An array of the values of the spatial extensive attribute.
P : int, required
The index of current area unit
NeighborPolys : list, required
The neighbors of current area unit
C : int, required
The index of current region
weight : libpysal.weights.W, required
Weights object created from given data
spatialThre : {int, float}, required
The threshold value.
Returns
-------
cluster_info : tuple
``labeledID``, ``spatialAttrTotal``
"""
labels[P] = C
labeledID = [P]
spatialAttrTotal = threshold_array[P]
i = 0
while i < len(NeighborPolys):
if spatialAttrTotal >= spatialThre:
break
Pn = NeighborPolys[i]
if labels[Pn] == 0:
labels[Pn] = C
labeledID.append(Pn)
spatialAttrTotal += threshold_array[Pn]
if spatialAttrTotal < spatialThre:
PnNeighborPolys = weight.neighbors[Pn]
for pnn in PnNeighborPolys:
if not pnn in NeighborPolys:
NeighborPolys.append(pnn)
i += 1
cluster_info = labeledID, spatialAttrTotal
return cluster_info
def assignEnclave(
enclave,
labels,
regionList,
regionSpatialAttr,
threshold_array,
weight,
distance_matrix,
random_assign=1,
):
"""Assign the enclaves to the regions identified in the region growth phase
Parameters
----------
enclave : list, required
A list of enclaves.
labels : list, required
A list of region labels for area units.
regionList : dict, required
A dictionary with key as region ID and value as a list of area units assigned to the region.
regionSpatialAttr : dict, required
A dictionary with key as region ID and value as the total spatial extensive attribute of the region.
threshold_array : array, required
An array of the values of the spatial extensive attribute.
weight : libpysal.weights.W, required
Weights object created from given data
distance_matrix : array, required
A square-form distance matrix for the attributes.
random_assign : int, required
The number of top candidate regions to consider for enclave assignment.
Returns
-------
region_info : list
Deep copies of ``labels``, ``regionList``, and ``regionSpatialAttr``
"""
enclave_index = 0
while len(enclave) > 0:
ec = enclave[enclave_index]
ecNeighbors = weight.neighbors[ec]
minDistance = np.Inf
assignedRegion = 0
ecNeighborsList = []
ecTopNeighborsList = []
for ecn in ecNeighbors:
if ecn in enclave:
continue
rm = np.array(regionList[labels[ecn]])
totalDistance = distance_matrix[ec, rm].sum()
ecNeighborsList.append((ecn, totalDistance))
ecNeighborsList = sorted(ecNeighborsList, key=lambda tup: tup[1])
top_num = min([len(ecNeighborsList), random_assign])
if top_num > 0:
ecn_index = np.random.randint(top_num)
assignedRegion = labels[ecNeighborsList[ecn_index][0]]
if assignedRegion == 0:
enclave_index += 1
else:
labels[ec] = assignedRegion
regionList[assignedRegion].append(ec)
regionSpatialAttr[assignedRegion] += threshold_array[ec]
del enclave[enclave_index]
enclave_index = 0
region_info = [deepcopy(labels), deepcopy(regionList), deepcopy(regionSpatialAttr)]
return region_info
def calculateWithinRegionDistance(regionList, distance_matrix):
"""calculate total wthin-region distance/dissimilarity
Parameters
----------
regionList : dict, required
A dictionary with key as region ID and value as a list of area units assigned to the region.
distance_matrix : array, required
A square-form distance matrix for the attributes.
Returns
-------
totalWithinRegionDistance : {int, float}
the total within-region distance
"""
totalWithinRegionDistance = 0
for k, v in regionList.items():
nv = np.array(v)
regionDistance = distance_matrix[nv, :][:, nv].sum() / 2
totalWithinRegionDistance += regionDistance
return totalWithinRegionDistance
def pickMoveArea(
labels,
regionLists,
regionSpatialAttrs,
threshold_array,
weight,
distance_matrix,
threshold,
):
"""pick a spatial unit that can move from one region to another without violating threshold and contiguity constraints
Parameters
----------
labels : list, required
A list of current region labels
regionLists : dict, required
A dictionary with key as region ID and value as a list of area units assigned to the region.
regionSpatialAttrs : dict, required
A dictionary with key as region ID and value as the total spatial extensive attribute of the region.
threshold_array : array, required
An array of the values of the spatial extensive attribute.
weight :libpysal.weights.W, required
Weights object created from given data
threshold : {int, float}, required
The threshold value.
Returns
-------
potentialAreas : list
a list of area units that can move without violating contiguity and threshold constraints
"""
potentialAreas = []
labels_array = np.array(labels)
for k, v in regionSpatialAttrs.items():
rla = np.array(regionLists[k])
rasa = threshold_array[rla]
lostSA = v - rasa
pas_indices = np.where(lostSA > threshold)[0]
if pas_indices.size > 0:
for pasi in pas_indices:
leftAreas = np.delete(rla, pasi)
ws = weight.sparse
cc = connected_components(ws[leftAreas, :][:, leftAreas])
if cc[0] == 1:
potentialAreas.append(rla[pasi])
else:
continue
return potentialAreas
def checkMove(
poa, labels, regionLists, threshold_array, weight, distance_matrix, threshold
):
"""calculate the dissimilarity increase/decrease from one potential move
Parameters
----------
poa : int, required
The index of current area unit that can potentially move
labels : list, required
A list of current region labels
regionLists : dict, required
A dictionary with key as region ID and value as a list of area units assigned to the region.
threshold_array : array, required
An array of the values of the spatial extensive attribute.
weight : libpysal.weights.W, required
Weights object created from given data
distance_matrix : array, required
A square-form distance matrix for the attributes.
threshold : {int, float}, required
The threshold value.
Returns
-------
move_info : list
``lostDistance``, ``minAddedDistance``, and ``potentialMove``.
"""
poaNeighbor = weight.neighbors[poa]
donorRegion = labels[poa]
rm = np.array(regionLists[donorRegion])
lostDistance = distance_matrix[poa, rm].sum()
potentialMove = None
minAddedDistance = np.Inf
for poan in poaNeighbor:
recipientRegion = labels[poan]
if donorRegion != recipientRegion:
rm = np.array(regionLists[recipientRegion])
addedDistance = distance_matrix[poa, rm].sum()
if addedDistance < minAddedDistance:
minAddedDistance = addedDistance
potentialMove = (poa, donorRegion, recipientRegion)
move_info = [lostDistance, minAddedDistance, potentialMove]
return move_info
def performSA(
initLabels,
initRegionList,
initRegionSpatialAttr,
threshold_array,
weight,
distance_matrix,
threshold,
alpha,
tabuLength,
max_no_move,
):
"""perform the tabu list integrated simulated annealing algorithm
Parameters
----------
initLabels : list, required
A list of initial region labels before SA
initRegionList : dict, required
A dictionary with key as region ID and value as a list of area units assigned to the region before SA.
initRegionSpatialAttr : dict, required
A dictionary with key as region ID and value as the total spatial extensive attribute of the region before SA.
threshold_array : array, required
An array of the values of the spatial extensive attribute.
weight : libpysal.weights.W, required
Weights object created from given data.
distance_matrix : array, required
A square-form distance matrix for the attributes.
threshold : {int, float}, required
The threshold value.
alpha : float between 0 and 1, required
Temperature cooling rate
tabuLength : int, required
Max length of a tabuList
max_no_move : int, required
Max number of none improving movements
Returns
-------
sa_res : list
The results from simulated annealing including ``labels``,
``regionLists``, and ``regionSpatialAttrs``.
"""
t = 1
ni_move_ct = 0
make_move_flag = False
tabuList = []
potentialAreas = []
labels = deepcopy(initLabels)
regionLists = deepcopy(initRegionList)
regionSpatialAttrs = deepcopy(initRegionSpatialAttr)
while ni_move_ct <= max_no_move:
if len(potentialAreas) == 0:
potentialAreas = pickMoveArea(
labels,
regionLists,
regionSpatialAttrs,
threshold_array,
weight,
distance_matrix,
threshold,
)
if len(potentialAreas) == 0:
break
poa = potentialAreas[np.random.randint(len(potentialAreas))]
lostDistance, minAddedDistance, potentialMove = checkMove(
poa,
labels,
regionLists,
threshold_array,
weight,
distance_matrix,
threshold,
)
if potentialMove == None:
potentialAreas.remove(poa)
continue
diff = lostDistance - minAddedDistance
donorRegion = potentialMove[1]
recipientRegion = potentialMove[2]
if diff > 0:
make_move_flag = True
if (poa, recipientRegion, donorRegion) not in tabuList:
if len(tabuList) == tabuLength:
tabuList.pop(0)
tabuList.append((poa, recipientRegion, donorRegion))
ni_move_ct = 0
else:
ni_move_ct += 1
prob = np.exp(diff / t)
if prob > np.random.random() and potentialMove not in tabuList:
make_move_flag = True
else:
make_move_flag = False
potentialAreas.remove(poa)
if make_move_flag:
labels[poa] = recipientRegion
regionLists[donorRegion].remove(poa)
regionLists[recipientRegion].append(poa)
regionSpatialAttrs[donorRegion] -= threshold_array[poa]
regionSpatialAttrs[recipientRegion] += threshold_array[poa]
impactedAreas = []
for pa in potentialAreas:
if labels[pa] == recipientRegion or labels[pa] == donorRegion:
impactedAreas.append(pa)
for pa in impactedAreas:
potentialAreas.remove(pa)
t = t * alpha
sa_res = [labels, regionLists, regionSpatialAttrs]
return [labels, regionLists, regionSpatialAttrs]
[docs]class MaxPHeuristic(BaseSpOptHeuristicSolver):
"""The max-p-regions involves the aggregation of n areas into an unknown maximum number of
homogeneous regions, while ensuring that each region is contiguious and satisfies a minimum
threshold value imposed on a predefined spatially extensive attribute.
Parameters
----------
gdf : geopandas.GeoDataFrame, required
Geodataframe containing original data.
w : libpysal.weights.W, required
Weights object created from given data.
attrs_name : list, required
Strings for attribute names (cols of ``geopandas.GeoDataFrame``).
threshold_name : string, required
The name of the spatial extensive attribute variable.
threshold : {int, float}, required
The threshold value.
top_n : int, required
The number of top candidate regions to consider for enclave assignment.
max_iterations_construction : int
Max number of iterations for construction phase.
max_iterations_SA : int
Max number of iterations for customized simulated annealing.
verbose : boolean
Set to ``True`` for reporting solution progress/debugging.
Default is ``False``.
Returns
-------
max_p : int
The number of regions.
labels_ : numpy.array
Region IDs for observations.
Examples
--------
>>> import numpy
>>> import libpysal
>>> import geopandas as gpd
>>> from spopt.region.maxp import MaxPHeuristic
Read the data.
>>> pth = libpysal.examples.get_path("mexicojoin.shp")
>>> mexico = gpd.read_file(pth)
>>> mexico["count"] = 1
Create the weight.
>>> w = libpysal.weights.Queen.from_dataframe(mexico)
Define the collumns of ``geopandas.GeoDataFrame`` to be spatially extensive attribute.
>>> attrs_name = [f"PCGDP{year}" for year in range(1950, 2010, 10)]
Define the spatial extensive attribute variable and the threshold value.
>>> threshold_name = "count"
>>> threshold = 4
Run the max-p-regions algorithm.
>>> model = MaxPHeuristic(mexico, w, attrs_name, threshold_name, threshold)
>>> model.solve()
Get the number of regions and region IDs for unit areas.
>>> model.p
>>> model.labels_
Show the regionalization results.
>>> mexico["maxp"] = model.labels_
>>> mexico.plot(column="maxp", categorical=True, figsize=(12,8), cmap='plasma')
"""
[docs] def __init__(
self,
gdf,
w,
attrs_name,
threshold_name,
threshold,
top_n=2,
max_iterations_construction=99,
max_iterations_sa=ITERSA,
verbose=False,
):
self.gdf = gdf
self.w = w
self.attrs_name = attrs_name
self.threshold_name = threshold_name
self.threshold = threshold
self.top_n = top_n
self.max_iterations_construction = max_iterations_construction
self.max_iterations_sa = max_iterations_sa
self.verbose = verbose
[docs] def solve(self):
"""Solve a max-p-regions problem and get back the results"""
max_p, label = maxp(
self.gdf,
self.w,
self.attrs_name,
self.threshold_name,
self.threshold,
self.top_n,
self.max_iterations_construction,
self.max_iterations_sa,
verbose=self.verbose,
)
self.labels_ = label
self.p = max_p


Next:
psb_halo Halo
Up:
userhtml
Previous:
psb_spsm Triangular
Contents
Communication routines
The routines in this chapter implement various global communication operators on vectors associated with a discretization mesh. For auxiliary communication routines not tied to a discretization space see
6
.
Subsections
psb_halo -- Halo Data Communication
psb_ovrl -- Overlap Update
psb_gather -- Gather Global Dense Matrix
psb_scatter -- Scatter Global Dense Matrix


It is with great sadness we must announce that Honor Fight of Southern Colorado will no longer be conducting Honor Flights.
The current situation has prevented is from doing any fundraising and we are not in a position to conduct our October flight (if restrictions from the national organization are even lifted by then). For Colorado veterans interested in travelling with one of the other two hubs in Colorado, please contact Rocky Mountain Honor Flight or High Plains Honor Flight.
We would like to thank all the volunteers, guardians, and donors who enabled us to make 13 Flights, creating so many wonderful memories for the HEROES who served in WWII, Korea, and Vietnam. It was our distinct honor to have shared this experience with y'all.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 2
Scallops steamed in their shells with a spicy black bean sauce.
For the scallops with noodles, soak the dried vermicelli in a bowl of just-boiled water for 5-6 minutes, or until tender. Drain well, then chop into 10cm/4in lengths and set aside.
Place the cleaned scallops back into their shells.
For the black bean sauce, mix all of the sauce ingredients together in a bowl. Spoon a teaspoon of the sauce on top of each scallop and gently rub into the scallop flesh.
Wrap some of the soft vermicelli noodles around each scallop, then spoon one teaspoon of water around the noodles. (This helps to keep the noodles moist and works to create a sauce when combined with the steamed juices of the scallops.)
Divide the scallop shells between two heatproof serving plates and place each plate into a bamboo steamer, placing one steamer on top of the other. Place the steamers over a pan or wok of boiling water (making sure the water does not touch the base of the steamer), cover, and steam over a high heat for 4-5 minutes, or until the scallops are cooked through. If you do not have a bamboo steamer, place the shells onto a large heatproof plate set on a rack in a roasting tray. Fill the roasting tray with boiling water from the kettle. Pre-heat the oven to 180C/350F/Gas 4, cover the whole roasting tray with foil and place into the oven to steam for 4-5 minutes.
To serve, serve the scallops in the bamboo steamers, or remove the plates from the steamer and serve on the plates. Sprinkle over the chopped chives or spring onions and serve immediately.


Source code for pwplib.Network
import win32com.client, wmi
from core.config import *
import getpass
[docs]class Network:
"""
Network Class to represent domains or/and workgroups
"""
protocole = "" # Protocole : LDAP, WinNT, SQL ...
domain = "" # Domain
__computers = [] # List of computers (machines)
def __init__(self, domain, protocole="WinNT"):
"""
Initialize a Network Objet to browse our domain.
domain: Windows domain
protocol = protocol type (by default WinNT for WMI)
"""
self.protocole = protocole
self.domain = domain
[docs] def discovery(self):
"""
Discover computers which are from the same Group/Domain.
"""
c = win32com.client.GetObject(self.protocole + "://" + self.domain)
self.__computers = [x.Name for x in c if x.Class.lower() == "computer"]
return self.__computers
[docs] def countPC(self):
"""
Count the number of discovered computers.
"""
return len(self.__computers)
[docs] def getComputersList(self):
"""
Give the entire list of discovered computers.
getComputersList() --> List of computers
"""
return self.__computers
@classmethod
[docs] def connectTo(cls, server, user="", password="", impersonation_level="Impersonate", namespace=""):
"""
Connect to a remote server
connectTo(server, [user], [password], [impersonation_level], [namespace]) --> COMObject Instance
"""
print "Connecting to '%s'" % server
if user == "": # asking for missing login username
user = raw_input("Username: ")
if password == "": # asking for missing login password
password = getpass.getpass()
connect = wmi.connect_server(server=server, user=user, password=password, impersonation_level=impersonation_level, namespace=namespace)
return connect


--- layout: post title: Capistrano 2.4.3 post_id: 51 categories: - announcements date: 2008-06-28 09:15:00.000000000 -06:00 author: Jamis permalink: 2008/6/28/capistrano-2-4-3.html ---
Capistrano 2.4.3 is now available!
gem install capistrano
This is a maintenance release. The changes since 2.4.0 include:
Please report bugs to the Capistrano bug tracker at Lighthouse:
Patches should be generated against the latest version of the code at GitHub:
You may submit patches via email, as submissions to the Capistrano bug tracker, or as GitHub pull-requests.


[Toggle channel list]
Player state: IDLE Media position: 00:00:00 Media duration: 00:00:00 Progress bar: Volume bar: Volume mute: Mute Control media: Play Unload media Control session: Start session Exit session
NOTE: Chromecast follows the Same-origin policy. Meaning: Chromecast will not play any network media files, unless the streaming server properly supports CORS for all requests (using *
).


In pictures: Majan Lounge opened at Muscat airport
by Times News ServicesMuscat: Oman Aviation Services, in partnership with Oman Airports, inaugurated Majan Lounge on the sixth floor of the departures level at Muscat International Airport. The lounge will offer exceptional services to ensure an amazing travel experience.


Title is required
Content is required
Latitude is required
Longitude is required
City is required
Category is required


DBi Control Panel
Get JSON Asynchronously
List debugging messages in Console
Reset localStorage, sessionStorage & Database
Pretty-print JSON Schema
Open Database
Upgrade to v2.0
Upgrade to v3.0
Output Database Schema


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/drop.20hypothesis.20from.20local.20context.html ---
Please remind me, which tactic removes hypotheses from the local context? Because I have used up some hyptheses, and I won't use them again, but the proof state is filling an entire screen.
I couldn't find the tactic in TPIL...
clear
aah, thanks
For reference: https://leanprover.github.io/reference/search.html?q=clear&check_keywords=yes&area=default
I see it is in TPIL, but the words "drop" or "remove" are not in its description
You could try browsing this section if you're looking for something similar in the future.
You can also use replace
in place of have
to clear old hyps as well
I didn't know about replace
.
Last updated: Apr 24 2020 at 19:02 UTC


JAG
These wallpapers are provided free of charge, with no warranty. You may use for personal use only, and not resell them, or include them in packages, themes, or any other form to profit from...unless of course you contact me and offer to share said profits. :-)
Usage Back to Wallpapers


One Day at a Time
After weeks of quarantine amid a global pandemic…
As the days blend together and any semblance of a sleep schedule becomes less and less recognizable, it grows more important for me to hang on to some kind of routine.
At first, the release from daily responsibility came as a relief. I didn’t have anything to do or anywhere to go? Great! I’m a homebody anyways. I reveled in the time I had to myself to read, paint, draw, and voraciously binge any of the leisure activities I’d had on the back burner for years.
But as my addictive personality overindulged in old TV marathons and creating overnight metropoleis in Cities Skyline, any sense of accomplishment or self-motivation began to drain away. Social media and the news seemed stale and irrelevant. The plethora of Zoom parties started feeling forced and redundant.
So here I am, thinking to myself, what can I do every day to help me form some pattern of regularity? The current pillars of my week seem to be:
- Watch Governor Cuomo’s address daily
- Tend to the plants daily
- Babysit once a week
- Tune in to group fitness classes three times a week
Okay, so there is some structure. But it’s not exactly enough. What else can I do to create a routine that stimulates progress? Leisure activities such as reading, gaming, watching TV, and online shopping only lead me deeper down the rabbit hole. Even completing tasks such as dishes, laundry, cooking, vacuuming, etc are not satisfying – they’re just a matter of course in your average day to day.
So what KIND of productivity do I value? Something less transient, something more skill-based, where I can measurably improve and thereby use my time to invest in myself. Ideally, I’d like to engage in at least one meaningful activity – this includes writing, painting, practicing piano, exercise – per day. This is how I’m going to trudge through this rut, this prolonged period of social isolation, even when I don’t feel like cleaning up the paint brushes or taking out the dumbbells. So, I’ll practice one skill each day –
And move forward one day at a time.


--- layout: post title: 'Google TV: everything you ever wanted to know -- Engadget' categories: [] tags: - appletv - entertainment - geek - google - googletv - tv status: publish type: post published: true meta: _original_post_id: '' _original_import_author: John Duprey author: ---


--- layout: post title: Kwartz 2.0 brings more templating choice to Rails categories: - sightings author: admin published: true date: 2005-04-30 06:38:54.000000000 +01:00 ---
Kwartz is a templating system for Ruby built on the concept of Independence of Presentation Logic, which bans loops, conditions, and similar constructs from the template files themselves. Instead that logic is added in a second pass based on ids in the original template.
With the latest 2.0 release, Kwartz is now available as a templating option for Rails. Makoto Kuwata used the hooks created by Jamis Buck to follow the conventions of instance-to-template variables and even allowed the use of helpers.
Another familiar template language for Ruby, Amrita, is also on the way with Rails integration. Rails will still only ship with ERb and Builder for the default options, but Kwartz and soon Amrita are getting very easy to inject as an alternative. Great work, guys!


Toggle navigation
RDF Visualizer
×
×
Select All
Successfully copied !
×
No more Data
×
Insert a valid subject
×
Path of selected element
×
Define the location of properties.xml in config.properties file
×
The tool accepts only .ttl files
×
You must upload at least one file.
×
Check config.properties file
×
The given subject has no label
×
Close
Image Gallery
Model Overview
Enter subject
Open Uri in new tab
Copy Uri
Get path of selected item
Expand All
Collapse All
Mark same instances
Back to source path
View path of Subject
Configuration Page
File Uploader
Add files...
Start upload
Delete data
Label
Uri
URI Configuration
Schema Label URI
Pref Label URI
Type Label URI
Prefix URI
Image type uri URI
Image prefix
Show incoming links
false
true


--- html_id: masternodes title: masternodes ---
adduser axerunner
usermod -aG sudo axerunner
su axerunner
cd ~
sudo apt update sudo apt upgrade sudo apt install ufw git fail2ban python virtualenv unzip pv sudo ufw allow ssh/tcp sudo ufw limit ssh/tcp sudo ufw allow 9937/tcp sudo ufw allow 9936/tcp sudo ufw allow 9337/tcp sudo ufw logging on sudo ufw disable sudo ufw enable
Add some swap:sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'
cd ~
git clone https://github.com/axerunners/axerunner
~/axerunner/axerunner install
~/axerunner/axerunner install sentinel
axe-qt
)and let it sync with the network. After downloading the blockchain you can create masternode address with the key. Open debug console to enter bls generate
and getaccountaddress mn
. Send 1000 AXE to just generated mn
address.
bls generate
{
"secret": "28a85abb5aa8e820f65e33974cef0ab0bf06195f61454d2feb7fa578612d2228",
"public": "144cbf4d472716b9504a54c7ca26906a3346253b787ffeb1a4999325049f5b2c51ef2e7c215d85f0a9142ec1c78db99b"
}
cd ~ && cd .axecore
nano axe.conf
Insert following:
#- - - -
rpcuser=XXX
rpcpassword=XXX
rpcallowip=<IP_ADDRESS>
rpcport=9337
#- - - -
listen=1
server=1
daemon=1
#- - - -
externalip=XXX.XXX.XXX.XXX
masternodeblsprivkey=XXXXXXXXXXXXXXXXXXXXXXXXXXX
#- - - -
rpcuser/password
might be randomexternalip
is the static IP adress of your VPSmasternodeblsprivkey
is generated with bls generate
Press enter to make sure there is a blank line at the end of the file, then press Ctrl + X to close the editor and Y and Enter to save the file. We now need to restart the masternode for this change to take effect:
~/axerunner/axerunner restart now
We need to get a new, unused address from the wallet to serve as the owner address. This is different to the collateral address
getnewaddress
PMwR1zf2Cv9gcMdHULRVbTTMGw7arvpbM5
Then either generate or choose an existing second address to receive the owner’s masternode payouts:
getnewaddress
PLqyR8PHEB7Fp1ue8nSuLfuxQhrj5PSTDv
You can also optionally generate and fund a third address to pay the transaction fee. The private keys to the owner and fee source addresses must exist in the wallet submitting the transaction to the network. If your wallet is protect by a password, it must now be unlocked to perform the following commands. Unlock your wallet for 5 minutes:
walletpassphrase yourSecretPassword 300
We will now prepare an unsigned ProRegTx special transaction using the protx register_prepare
command. This command has the following syntax:
protx register_prepare collateralHash collateralIndex ipAndPort ownerKeyAddr
operatorPubKey votingKeyAddr operatorReward payoutAddress (feeSourceAddress)
Open a text editor such as notepad to prepare this command. Replace each argument to the command as follows:
collateralHash
:The txid of the 1000 Axe collateral funding transactioncollateralIndex
The output index of the 1000 Axe funding transactionipAndPort
Masternode IP address and port, in the format x.x.x.x:9937
ownerKeyAddr
The new Axe address generated above for the owner/voting addressoperatorPubKey
The BLS public key generated abovevotingKeyAddr
The new Axe address generated above, or the address of a delegate, used for proposal votingoperatorReward
The percentage of the block reward allocated to the operator as paymentpayoutAddress
A new or existing Axe address to receive the owner’s masternode rewardsfeeSourceAddress
An (optional) address used to fund ProTx fee. payoutAddress
will be used if not specified.Example (remove line breaks if copying):
protx register_prepare
ad308ec104bdf113444be609eb3dce9474a5550424204c6538843e3ccd3d4e78
1
<IP_ADDRESS>:9999
PMwR1zf2Cv9gcMdHULRVbTTMGw7arvpbM5
144cbf4d472716b9504a54c7ca26906a3346253b787ffeb1a4999325049f5b2c51ef2e7c215d85f0a9142ec1c78db99b
PMwR1zf2Cv9gcMdHULRVbTTMGw7arvpbM5
0
PLqyR8PHEB7Fp1ue8nSuLfuxQhrj5PSTDv
Output:
{
"tx": "0300010001784e3dcd3c3e8438654c20240455a57494ce3deb09e64b4413f1bd04c18e30ad0000000000feffffff01cccfa204000000001976a9141ea44ced396667eb7d1c5b3699e04b5b3046ecfb88ac00000000d1010000000000784e3dcd3c3e8438654c20240455a57494ce3deb09e64b4413f1bd04c18e30ad0100000000000000000000000000ffff8c523b33271411c59262c9633a1bb810a7fc2b833c43cfa852ab144cbf4d472716b9504a54c7ca26906a3346253b787ffeb1a4999325049f5b2c51ef2e7c215d85f0a9142ec1c78db99b11c59262c9633a1bb810a7fc2b833c43cfa852ab00001976a91405c5fed6a3eb0b92ea5119039efae7a8dee5456488ac4e6cc5451440a6044dbd04d33a11f4cddc9021532ede3012ebbc31c0bb4ceb9c00",
"collateralAddress": "PiFfzbwiN9oneftd7cEfr3kQLRwQ4kp7ue",
"signMessage": "PLqyR8PHEB7Fp1ue8nSuLfuxQhrj5PSTDv|0|yMwR1zf2Cv9gcMdHULRVbTTMGw7arvpbM5|PMwR1zf2Cv9gcMdHULRVbTTMGw7arvpbM5|4e00de34ee03d28adb4e1fdaec966ae239c11da7e6115f566fc4b3f75c8a5503"
}
Next we will use the collateralAddress
and signMessage
fields to sign the transaction, and the
output of the tx
field to submit the transaction.
We will now sign the content of the signMessage
field using the private key for the collateral address
as specified in collateralAddress.
signmessage address message
Example:
signmessage PiFfzbwiN9oneftd7cEfr3kQLRwQ4kp7ue PLqyR8PHEB7Fp1ue8nSuLfuxQhrj5PSTDv|0|PMwR1zf2Cv9gcMdHULRVbTTMGw7arvpbM5|PMwR1zf2Cv9gcMdHULRVbTTMGw7arvpbM5|4e00de34ee03d28adb4e1fdaec966ae239c11da7e6115f566fc4b3f75c8a5503
Output:
H3ub9BATtvuV+zDGdkUQNoUGpaYFr/O1FypmrSmH5WJ0KFRi8T10FSew0EJO/+Ij+OLv4r0rt+HS9pQFsZgc2dE=
We will now submit the ProRegTx special transaction to the blockchain to register the masternode. This command must be sent from a Axe Core wallet holding a balance, since a standard transaction fee is involved. The command takes the following syntax:
protx register_submit tx sig
Where:
tx
: The serialized transaction previously returned in the tx
output field from the protx register_prepare
command sig
: The message signed with the collateral key from the signmessage
commandExample:
protx register_submit<PHONE_NUMBER>784e3dcd3c3e8438654c20240455a57494ce3deb09e64b4413f1bd04c18e30ad0000000000feffffff01cccfa204000000001976a9141ea44ced396667eb7d1c5b3699e04b5b3046ecfb88ac00000000d1010000000000784e3dcd3c3e8438654c20240455a57494ce3deb09e64b4413f1bd04c18e30ad0100000000000000000000000000ffff8c523b33271411c59262c9633a1bb810a7fc2b833c43cfa852ab144cbf4d472716b9504a54c7ca26906a3346253b787ffeb1a4999325049f5b2c51ef2e7c215d85f0a9142ec1c78db99b11c59262c9633a1bb810a7fc2b833c43cfa852ab00001976a91405c5fed6a3eb0b92ea5119039efae7a8dee5456488ac4e6cc5451440a6044dbd04d33a11f4cddc9021532ede3012ebbc31c0bb4ceb9c00 H3ub9BATtvuV+zDGdkUQNoUGpaYFr/O1FypmrSmH5WJ0KFRi8T10FSew0EJO/+Ij+OLv4r0rt+HS9pQFsZgc2dE=
Output:
b823338301e47875493c20361a23aef034578030c639480203b394669ab05e09
Your masternode is now registered and will appear on the Deterministic Masternode List after the transaction
is mined to a block. You can view this list on the Masternodes -> Masternodes tab of the Axe Core wallet,
or in the console using the command protx list valid
, where the txid of the final protx register_submit
transaction identifies your DIP003 masternode.
At this point you can go back to your terminal window and monitor your masternode using ~/axerunner/axerunner status


Under Umno probe, Hishammuddin says has nothing to hide
by BY JUSTIN ONGKUALA LUMPUR, Nov 19 — Former Umno vice-president Datuk Seri Hishammuddin Hussein denied leading the Barisan Nasional lawmakers who visited PKR deputy president Datuk Seri Azmin Ali for a clandestine meeting last night.
Earlier, Umno supreme council member Datuk Lokman Noor Adam accused Hishammuddin of colluding with Pakatan Harapan component Bersatu to entice the Opposition lawmakers into the rival party.
“The claim that I led the meeting between Azmin and the Opposition lawmakers is completely untrue. I did not organise the meeting.
“Nevertheless, if the Umno disciplinary board wants to investigate me, then I am ready to be investigated. I have nothing that I want to hide,” he wrote on Twitter.
However, Hishammuddin did not volunteer the identity of the organiser.
Umno disciplinary chairman Tan Sri Apandi Ali confirmed this morning that the board will haul up party lawmakers who attended the meeting with Azmin last night, after formal complaints were filed over the matter.
Those involved in the meeting have refused to divulge what was discussed and tried to play it off as a casual encounter.


Mortgage calculator
Loan amount ($):
Interest rate (%):
Loan period (years):
Total cost of mortgage:
$[payment * years * 12]
Monthly payment:
[amount * interest1200 * (1 + 1 / (pow(1 + interest1200 , years * 12) - 1 ))]
Amazing rate!


For the past few months, I’ve been using the free version of Get Satisfaction to manage end-user support for Hyperspaces, and I thought it was time to write a bit of a retrospective. I want to start by saying that I don’t think there is a perfect answer to user support - people are funny creatures, and they tend to want help on their own terms. This usually means that a tool like Redmine (which I absolutely love for my development and product testing) is going to annoy the hell out of your Mum & Pop software users (what’s a ‘milestone’, and why do I care?).
I’ve been through a few different products over the years, including Sourceforge, Trac and Redmine - all of which were and are brilliant, but far too focused on development. Finally, around 12 months ago, I started looking elsewhere for my user support - “Surely there’s something better!” I told myself. Thankfully, there was: Get Satisfaction. From Wikipedia’s description of Get Satisfaction:
The company describes its product as “people-powered customer service”. On the website, anyone can ask a question, submit an idea or complaint, or give praise; all posts can be read by anyone. Companies can respond to issues regarding their products or services; official responses are marked as official answers to separate them from other responses. Users can rate responses based on how well they resolve the issue.
I started seriously looking at Get Satisfaction around May last year, and at the time I was very impressed. When I publicly launched Hyperspaces earlier this year, there was a Get Satisfaction page for it on launch day.
And for a time, it was great - I’m a big believer in being hands on and communicative. If there’s a problem with my product, I take care to publicly acknowledge that I’ve got the message even if I have no idea how to fix it yet. I did that - I answered, and answered and answered. I think my users appreciated it. w00t!
Then the clouds started to form.
With more questions being posted, the page started getting really messy, and I honestly believe quite hard to use. The interface now seemed cluttered and obstructive rather than helpful, and I was getting lots of duplicate questions - “this isn’t working how it’s supposed to”. I’m a developer, not a user of my product, so I don’t pretend that I always know what mine are thinking, but surely this wasn’t an easy way to get an answer to your question?
I am at the point now where I am seriously reviewing other options for user support. The problem is, I’m yet to find something that’s as simple - and more importantly, free - as Get Satisfaction. entp’s Tender looks really, really nice - but it’s expensive for me.
To complicate matters further, Get Satisfaction has just released version 2.0 of their site. The company overview is now a fantastic layout - nice, simple and straight-forward. It’s categorised and visually sorted. The product pages aren’t so lucky - they’re still a formless mess, and I have a hard time understanding why there’s not some structure to them.
I’ll keep this post updated with what I decide to do, but right now I’m seriously weighing up whether it’s worth pouring some of the money I’ve made from Hyperspaces into a really good support package from somewhere like entp.


DevOps Overview
What's next?
Devops, Application's Lifecycle
UX, UI, Design Thinking
Agility Method, Versioning Tools (Git technlogy)
CI / CD (Docker)


validations
Mongoid includes ActiveModel::Validation to supply the basic validation plus an additional associated and uniqueness validator.
See ActiveModel::Validations documentation for more information.
Common options that can be passed to all validations:
- :allow_nil Specify whether to validate on a nil attribute.
- :if Only run if the supplied value evaluates to true.
- :on Only run when specified, supports :create and :update.
- :unless Only run if the supplied value evaluates to false.
In addition to those validations, information is provided with each macro about its specific options.
validates_acceptance_of
Validate the acceptance of a boolean field:
Options:
- :message Supply a custom error message.
- :accept Specify the accepted value. Default: "1"
validates_acceptance_of :terms
validates_associated
Validate associated documents along with the parent:
Options:
- :message Supply a custom error message.
validates_associated :addresses, :employers
validates_confirmation_of
Validate confirmation of a field via an accessor with "_confirmation" as its suffix:
Options:
- :message Supply a custom error message.
validates_confirmation_of :password
validates_exclusion_of
Validate items are excluded from a collection:
Options:
- :in A list or range the item must not be included in.
- :message Supply a custom error message.
validates_exclusion_of :employers, in: ["Hashrocket"]
validates_format_of
Validate the format of a field:
Options:
- :in A list or range the item must not be included in.
- :allow_blank Specify whether to validate blank attributes.
- :with The regular expression to match against.
- :without The regular expression to check it does not match.
- :message Supply a custom error message.
validates_format_of :title, with: /\A\w+\Z/
validates_inclusion_of
Validate the inclusion of an item in a collection:
Options:
- :allow_blank Specify whether to validate blank attributes.
- :in The list or range the check the value against.
- :message Supply a custom error message.
validates_inclusion_of :employers, in: ["Hashrocket"]
validates_length_of
Validate the length of a field:
Options:
- :allow_blank Specify whether to validate blank attributes.
- :in Specify the range the length of the attribute can fall within.
- :maximum Specify the maximum length of the attribute.
- :message Supply a custom error message.
- :minimum Specify the minimum length of the attribute.
- :tokenizer A block to define how the string should be broken up.
- :too_long Define a custom message if the attribute is too long.
- :too_short Define a custom message if the attribute is too short.
- :within Specify the range the length of the attribute can fall within.
- :wrong_length Define a custom message for an incorrect length.
validates_length_of :password, minimum: 8, maximum: 16
validates_numericality_of
Validate the numericality of a field:
Options:
- :equal_to Specify a value the field must be exactly.
- :even Set that the value must be even.
- :greater_than Specify a value the field must be greater than.
- :greater_than_or_equal_to Specify a value the field must be greater than or equal to.
- :less_than Specify a value the field must be less than.
- :less_than_or_equal_to Specify a value the field must be less than or equal to.
- :message Supply a custom error message.
- :odd Set that the value must be odd.
- :only_integer Set whether the value has to be an integer.
validates_numericality_of :age, even: true
validates_presence_of
Validate that a field exists:
Options:
- :message Supply a custom error message.
validates_presence_of :first_name
validates_uniqueness_of
Validate that the field is unique in the database:
Note that for embedded documents, this will only check that the field is unique within the context of the parent document, not the entire database.
Options:
- :message Supply a custom error message.
- :case_sensitive Whether to use case sensitive matching. Defaults to true.
- :scope Scope uniqueness checks to the value of this field.
validates_uniqueness_of :ssn


Magnify is a platform that creates, instructs, and supports a network of adults acting intentionally to make a difference in young people's lives.
Magnify creates more Everday Mentors. Everyday Mentoring is a concept coined by The Mentoring Partnership that recognizes that everyone can make a mentoring impact in their daily lives. People who have relationships with youths that they want to improve can use the Magnify application to solidify essential mentoring skills without having to change much about their everyday lives.
We envision a future where mentors can move seamlessly through the stages of the mentoring journey: becoming aware of their potential as mentors, self-identifying as mentors and joining a community, learning and intentionally practicing mentoring skills, and seeing their impact.
First, a potential mentor becomes aware of her potential as a mentor through campaigns led by The Mentoring Partnership or when drafted by her own social or professional circles.
She learns to self-identify as a mentor and becomes a member of an active mentoring community.
She learns and intentionally practices mentoring skills.
Finally, she is able to see and track her impact, and others are able to interact with this data as well
We envision a future where mentors can move seamlessly through the stages of the mentoring journey: becoming aware of their potential as mentors, self-identifying as mentors and joining a community, learning and intentionally practicing mentoring skills, and seeing their impact.
Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.
Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.
Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.
We started with 4 months of in-depth research to understand the national mentoring landscape, utilizing proven Human-Computer Interaction methods. We then spent 4 months designing, prototyping, testing, and iterating as we worked toward our final prototype.
This project was completed in 2017 at Carnegie Mellon University as an MHCI Capstone project and was sponsored by The Mentoring Partnership. Team Dynamite is Maddie Borgmann (Research Lead), Kate Carey (Design Lead), Yousef Kazerooni (UX Researcher), Meg Nidever (Product Manager), and Adam Yee (Tech & Interaction Design Lead.
Questions? Contact The Mentoring Partnership to learn more about where this work is headed or how to get involved.


Two Prison Guards On Duty The Night Jeffrey Epstein Died Have Been Arrested
by By David AdamsCONTENT WARNING: This article discusses suicide.
Two federal prison guards tasked with overseeing Jeffrey Epstein the night he died have been arrested and charged, after allegedly falsifying records saying they checked on his cell multiple times throughout the evening.
The New York Times reports a criminal indictment against guards Tova Noel and Michael Thomas, which was unsealed on Tuesday, accuses the pair of sleeping and online shopping in the hours before they found Epstein’s body on August 10.
While the Metropolitan Correctional Centre guards were required to check Epstein’s cell every half-hour, the indictment states neither Noel or Thomas fulfilled that duty – despite signing timesheets claiming they had.
Both guards “repeatedly failed to conduct mandated checks on inmates, and lied on official forms to hide their dereliction,” said US Attorney Geoffrey Berman.
The pair pleaded not guilty to charges of conspiring to defraud the United States and faking official documents, the NYT states.

The death of such a high-profile inmate, with known connections to many rich and powerful figures, sparked intense speculation about what exactly happened at the facility.
While the New York City medical examiner concluded Epstein’s death was the result of suicide, a forensic pathologist hired by Epstein’s estate and who was present for the autopsy said his injuries were suggestive of homicide.
Those theories have been downplayed by authorities.
It has since emerged that the prison was undergoing significant staff shortages at the time of Epstein’s death. The NYT reports Noel was on a 16-hour double shift at the time, while Thomas had already done considerable overtime in the days prior.
Help is available.
If you require immediate assistance, please call 000.
If you are in distress, please call Lifeline on 13 11 44 or chat online.
Under 25? You can reach Kids Helpline at 1800 55 1800 or chat online.
You can also reach the Suicide Call Back Service on 1300 659 467 or chat online.
Image: Patrick McMullan / Getty Images


val hasPrivateKeys: Boolean
This method is used to query whether the instance has a private keys.
Return


A comprehensive dive into WebRTC for client-server web games
15 Mar 2017Multiplayer games are fun. For what they lack in single player immersion, online games compensate with uniquely rewarding experiences in questing with friends, meeting strangers online, and clashing head to head against competent peers. One needs to look no further than the giants of League of Legends, Hearthstone, and Overwatch to realize the mass demand for multiplayer games.1 While these franchises are successful, however, they have significant barriers to entry in their multi-gigabyte game clients. Sure, an installation won’t deter a hardcore gamer, but for the many casual players out there, the extra step is a non-starter.
For this reason, web games have enormous potential when it comes to massively multiplayer experiences. While downloading and installing a client might be too much for some, playing a game by simply visiting a web page is low-friction and conducive to virality. I’m currently building such a game, and in this blog post, I’d like to share my experiences in establishing a raw connection between a browser and the game server.
tl;dr: If you’re already familiar with the concepts, you can check out the full example code to get started.
read more


devito.ir.support package¶
Submodules¶
devito.ir.support.basic module¶
-
class
devito.ir.support.basic.
Vector
[source]¶ Bases:
tuple
A representation of a vector in Z^n.
The elements of a Vector can be integers or any SymPy expression.
If a comparison between a vector and a non-vector is attempted, then the non-vector is promoted to a vector; if this is not possible, an exception is raised. This is handy because it turns a vector-scalar comparison into a vector-vector comparison with the scalar broadcasted to all vector entries. For example:
(3, 4, 5) > 4 => (3, 4, 5) > (4, 4, 4) => False
When we compare two entries that are both generic SymPy expressions, it is generally not possible to determine the truth value of the relation. For example, the truth value of 3*i < 4*j cannot be determined. In some cases, however, the comparison is feasible; for example, i + 4 < i should always return false. A sufficient condition for two Vectors to be comparable is that their pair-wise indices are affine functions of the same variables, with coefficient 1.
-
distance
(other)[source]¶ Compute the distance from
self
toother
.The distance is a reflexive, transitive, and anti-symmetric relation, which establishes a total ordering amongst Vectors.
The distance is a function [Vector x Vector –> D]. D is a tuple of length equal to the Vector
rank
. The i-th entry of D, D_i, indicates whether the i-th component ofself
, self_i, precedes (< 0), equals (== 0), or succeeds (> 0) the i-th component ofother
, other_i.In particular, the absolute value of D_i represents the number of integer points that exist between self_i and sink_i.
3 | | 1 | | 2 |- source = | 2 | , sink = | 4 | , distance => | -2 |
- 1 | | 5 | | -4 |
There are 2, 2, and 4 points between [3-2], [2-4], and [1-5], respectively.
-
rank
¶
-
sum
¶
-
-
class
devito.ir.support.basic.
IterationInstance
[source]¶ Bases:
devito.ir.support.basic.Vector
A representation of the iteration and data points accessed by an
Indexed
object. Three different concepts are distinguished:- Index functions: the expressions telling what iteration space point is accessed.
aindices
: the :class:`Dimension`s acting as iteration variables. There is one aindex for each index function. If the index function is non-affine, then it may not be possible to detect its aindex; in such a case, None is used as placeholder.findices
: the :class:`Dimension`s telling what data space point is accessed.
-
affine
(findices)[source]¶ Return True if all of the provided findices appear in self and are affine, False otherwise.
-
affine_if_present
(findices)[source]¶ Return False if any of the provided findices appears in self and is not affine, True otherwise.
-
aindices
¶
-
distance
(other, findex=None, view=None)[source]¶ Compute the distance from
self
toother
.Parameters: - other – The
IterationInstance
from which the distance is computed. - findex – (Optional) if supplied, compute the distance only up to
and including
findex
(defaults to None). - view – (Optional) an iterable of
findices
(defaults to None); if supplied, project the distance along these dimensions.
- other – The
-
findices_affine
¶
-
findices_irregular
¶
-
index_mode
¶
-
irregular
(findices)[source]¶ Return True if all of the provided findices appear in self and are irregular, False otherwise.
-
is_irregular
¶
-
is_regular
¶
-
is_scalar
¶
-
class
devito.ir.support.basic.
Access
[source]¶ Bases:
devito.ir.support.basic.IterationInstance
A representation of the access performed by a
Indexed
object (a scalar in the degenerate case).The comparison operators
==, !=, <, <=, >, >=
should be regarded as operators for lexicographic ordering ofAccess
objects, based on the values of the index functions (and the index functions only).For example, if two Access objects A and B employ the same index functions, the operation A == B will return True regardless of whether A and B are reads or writes or mixed.
-
is_increment
¶
-
is_local
¶
-
is_read
¶
-
is_read_increment
¶
-
is_write
¶
-
is_write_increment
¶
-
name
¶
-
-
class
devito.ir.support.basic.
TimedAccess
[source]¶ Bases:
devito.ir.support.basic.Access
A special
Access
object enriched with:* a "timestamp"; that is, an integer indicating the access location within the execution flow; * an array of directions; there is one direction for each index, indicating whether the index function is monotonically increasing or decreasing.
Further, a TimedAccess may be regular or irregular. A TimedAccess is regular if and only if all index functions are affine in their respective findex. The downside of irregular TimedAccess objects is that dependence testing is harder, which in turn may force the data dependence analyzer to make stronger assumptions to be conservative.
Given: findices = [x, y, z] w = an object of type Dimension
x+1 | | x | | x | | w | | x+y |- obj1 = | y+2 | , obj2 = | 4 | , obj3 => | x | , obj4 = | y | , obj5 = | y |
- z-3 | | z+1 | | y | | z | | z |
We have that:
* obj1 and obj2 are regular; * obj3 is irregular because an findex, ``x``, appears outside of its index function (i.e., in the second slot, whew ``y`` is expected); * obj4 is irregular, because a different dimension, ``w``, is used in place of ``x`` within the first index function, where ``x`` is expected; * obj5 is irregular, as two findices appear in the same index function -- the one in the first slot, where only ``x`` is expected.
-
distance
(other, findex=None)[source]¶ Compute the distance from
self
toother
.Parameters: - other – The
IterationInstance
from which the distance is computed. - findex – (Optional) if supplied, compute the distance only up to
and including
findex
(defaults to None). - view – (Optional) an iterable of
findices
(defaults to None); if supplied, project the distance along these dimensions.
- other – The
-
class
devito.ir.support.basic.
Scope
(exprs)[source]¶ Bases:
object
-
accesses
¶
-
d_all
¶ Retrieve all flow, anti, and output dependences.
-
d_anti
¶ Retrieve the anti dependencies, or write-after-read.
-
d_flow
¶ Retrieve the flow dependencies, or true dependencies, or read-after-write.
-
d_output
¶ Retrieve the output dependencies, or write-after-write.
-
has_dep
¶ Return True if at least a dependency is detected, False otherwise.
-
devito.ir.support.space module¶
-
class
devito.ir.support.space.
NullInterval
(dim)[source]¶ Bases:
devito.ir.support.space.AbstractInterval
-
is_Null
= True¶
-
merge
(o)¶
-
-
class
devito.ir.support.space.
Interval
(dim, lower, upper)[source]¶ Bases:
devito.ir.support.space.AbstractInterval
Create an
Interval
of extent:dim.extent + abs(upper - lower)
-
is_Defined
= True¶
-
limits
¶
-
-
class
devito.ir.support.space.
IntervalGroup
[source]¶ Bases:
devito.tools.data_structures.PartialOrderTuple
A partially-ordered sequence of :class:`Interval`s with set-like operations exposed.
-
dimensions
¶
-
extent
¶
-
classmethod
generate
(op, *interval_groups)[source]¶ Create a new
IntervalGroup
from the iterative application of the operationop
to theIntervalGroup`s in ``interval_groups`
.Parameters: ig0 = IntervalGroup([Interval(x, 1, -1)]) ig1 = IntervalGroup([Interval(x, 2, -2), Interval(y, 3, -3)]) ig2 = IntervalGroup([Interval(y, 2, -2), Interval(z, 1, -1)])
ret = IntervalGroup.generate(‘intersection’, ig0, ig1, ig2) ret -> IntervalGroup([Interval(x, 2, -2), Interval(y, 3, -3), Interval(z, 1, -1)])
-
is_well_defined
¶ Return True if all :class:`Interval`s are over different :class:`Dimension`s, False otherwise.
-
shape
¶
-
-
class
devito.ir.support.space.
IterationSpace
(intervals, sub_iterators=None, directions=None)[source]¶ Bases:
devito.ir.support.space.Space
A representation of an iteration space and its traversal through :class:`Interval`s and :class:`IterationDirection`s. For each interval, an arbitrary number of (sub-)iterators may be specified (see below).
Parameters: - intervals – An ordered sequence of :class:`Interval`s defining the iteration space.
- sub_iterators – (Optional) a mapper from
Dimension`s in ``intervals`
to iterables ofDerivedDimension
, which represent sub-dimensions along which the iteration space is traversed. - directions – (Optional) a mapper from
Dimension`s in ``intervals`
to :class:`IterationDirection`s.
-
args
¶
-
dimensions
¶
-
directions
¶
-
is_compatible
(other)[source]¶ A relaxed version of
__eq__
, in which only non-derived dimensions are compared for equality.
-
itintervals
¶
-
nonderived_directions
¶
-
project
(cond)[source]¶ Return a new
IterationSpace
in which only someDimension`s in ``self`
are retained. In particular, a dimensiond
inself
is retained if:* either ``cond(d)`` is true (``cond`` is a callable), * or ``d in cond`` is true (``cond`` is an iterable)
-
sub_iterators
¶
-
class
devito.ir.support.space.
DataSpace
(intervals, parts)[source]¶ Bases:
devito.ir.support.space.Space
A representation of a data space.
Parameters: - intervals – A sequence of :class:`Interval`s describing the data space.
- parts – A mapper from
Function`s to iterables of :class:`Interval
describing the individual components of the data space.
-
parts
¶
-
devito.ir.support.space.
Forward
= ++¶ Forward iteration direction (‘++’).
-
devito.ir.support.space.
Backward
= --¶ Backward iteration direction (‘–’).
-
devito.ir.support.space.
Any
= *¶ Wildcard direction (both ‘++’ and ‘–’ would be OK).
devito.ir.support.stencil module¶
-
class
devito.ir.support.stencil.
Stencil
(entries=None)[source]¶ Bases:
devito.tools.data_structures.DefaultOrderedDict
A Stencil is a mapping from
Dimension
symbols to the set of integer offsets used with it in expressions (the “neighboring points accessed”).This also include zero offsets.
The mapping is ordered based on the order in which dimensions are encountered (if extracted from expressions) or inserted.
Note: Expressions must have been indexified for a Stencil to be computed.
-
add
(o)[source]¶ Compute the set union of each Dimension in self with the corresponding Dimension in
o
.
-
diameter
¶
-
dimensions
¶
-
empty
¶
-
entries
¶
-
devito.ir.support.utils module¶
-
devito.ir.support.utils.
detect_accesses
(expr)[source]¶ Return a mapper
M : F -> S
, where F areFunction`s appearing in ``expr`
and S areStencil`s. ``M[f]`
represents all data accesses tof
withinexpr
. Also mapM[None]
to all Dimensions used inexpr
as plain symbols, rather than as array indices.
-
devito.ir.support.utils.
detect_oobs
(mapper)[source]¶ Given M as produced by
detect_accesses()
, return the set of :class:`Dimension`s that cannot be iterated over for the entire computational domain, to avoid out-of-bounds (OOB) accesses.
-
devito.ir.support.utils.
build_iterators
(mapper)[source]¶ Given M as produced by
detect_accesses()
, return a mapperM' : D -> V
, where D is the set ofDimension`s in M, and V is a set of :class:`DerivedDimension`s. M'[d] provides the sub-iterators along the Dimension `d
.
-
devito.ir.support.utils.
build_intervals
(stencil)[source]¶ Given a
Stencil
, return an iterable ofInterval`s, one for each :class:`Dimension
in the stencil.
-
devito.ir.support.utils.
detect_flow_directions
(exprs)[source]¶ Return a mapper from
Dimension`s to iterables of :class:`IterationDirection`s representing the theoretically necessary directions to evaluate ``exprs`
so that the information “naturally flows” from an iteration to another.
-
devito.ir.support.utils.
force_directions
(mapper, key)[source]¶ Return a mapper
M : D -> I
where D is the set ofDimension`s found in the input mapper ``M' : D -> {I}`
, while I = {Any, Backward, Forward} (i.e., the set of possible :class:`IterationDirection`s).The iteration direction is chosen so that the information “naturally flows” from an iteration to another (i.e., to generate “flow” or “read-after-write” dependencies).
In the case of a clash (e.g., both Forward and Backward should be used for a given dimension in order to have a flow dependence), the function
key : D -> I
is used to pick one value.
-
devito.ir.support.utils.
group_expressions
(exprs)[source]¶ {exprs} -> ({exprs'}, {exprs''}, ...)
where:* There are data dependences within exprs' and within exprs''; * There are *no* data dependencies across exprs' and exprs''.


Film review by Kevin Patterson
Clue Rating: *** (out of four) PG, 1985 Directed and written by Jonathan Lynn. Story by Lynn and John Landis. Starring Eileen Brennan, Tim Curry, Madeline Kahn, Christopher Lloyd, Michael McKean, Martin Mull, Lesley Ann Warren.
The 1985 movie "Clue," based on the popular Parker Brothers mystery board game, follows the basic outline of the game pretty closely. Six suspects - Mrs. Peacock (Eileen Brennan), Mrs. White (Madeline Kahn), Professor Plum (Christopher Lloyd), Mr. Green (Michael McKean), Colonel Mustard (Martin Mull), and Miss Scarlet (Lesley Ann Warren) - gather at a mansion, six potential weapons are thrown into the mix, and Mr. Boddy (Lee Ving) is killed. The premise that sets this in motion is fairly interesting: Mr. Boddy has been blackmailing the six suspects for various reasons, and his former butler Wadsworth (Tim Curry) has decided to report him to the police and has thus invited the six in the hopes that they will provide evidence against him. Mr. Boddy then tries to turn the tables on Wadsworth, but his plan goes awry and he is killed. Soon others arrive at the mansion, for reasons I won't give away in this review, and before long the body count is rising. Since Wadsworth has called the police, the guests undertake to unmask the murderer(s) before they arrive.
Still, "Clue" doesn't work very well as a mystery per se. The movie has three separate endings, each revealing a different solution to the various murders. Only one was shown at a time when the movie was released in theaters, but on video we get all three of them, and as a result it becomes obvious to the viewer that the solution is completely arbitrary and that the clues that had accumulated thus far were ambiguous at best. Fortunately, it more than makes up for it with a wicked sense of humor; it would be fair to say that the movie is a comedy first and a mystery second. The script supplies some hilarious one-liners, such as when Wadsworth reveals that Professor Plum used to specialize in treating homicidal lunatics with delusions of grandeur. "Yes, but now I work for the United Nations," Plum explains. "Well, your work has not changed," Wadsworth replies.
 The actors aren't quite on the same page, for example: Curry plays his character like someone who knows he's in a murder mystery spoof, while the rest of them play it fairly straightforward (with the occasional exception of Lloyd, who sometimes slips into his "Dr. Emmet Brown" persona from the Back To The Future series).  with near-hysteria every time another body appears. Similarly, the plotting is rather unfocused and illogical at times; a door-to- door preacher draws big laughs in a scene in which he arrives to warn the guests that "Armageddon is near!" ("It's already here, buddy!" Professor Plum retorts), even though the character's behavior is almost inexplicable once it becomes clear who he really is.
Why, then, does "Clue" get three stars, when this kind of movie normally would only get two or two and a half from me? Well, for one thing, it's more consistently funny than the average comedy; usually, in movies like this, some of the jokes not only don't make that much sense in terms of plot and character but also misfire or downright flop on occasion. "Clue" pretty much hits the mark every time, no matter how little sense some of it makes. And to be fair, some of the humor is also fairly original and unique. Writer/director Jonathan Lynn's screenplay may be mediocre, but his handling of corpse- disposal humor is more skilled and deadpan than similar attempts in otherwise better films like "Fargo" and "Shallow Grave": a scene in which the guests hide the deaths from a policeman by cuing up some music and dancing with the bodies is one of the most hilariously twisted things ever to hit the silver screen.
And, last but not least, I have a sentimental reason for this one: "Clue" was my favorite movie when I was eight years old, loved any detective story I could get my hands on, and played the board game constantly. In fact, young sleuth wannabes with a weird sense of humor are perhaps the ideal audience for this movie. Still, there's plenty of laughs for everyone, and I'd recommend this movie to anyone willing to sit back and enjoy an hour and a half of pure silliness.
Visit my Film Reviews page: http://members.aol.com/KTPattersn/reviews.html
-----== Posted via Deja News, The Leader in Internet Discussion ==----- http://www.dejanews.com/ Now offering spam-free web-based newsreading
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


destrehan plantation fall festival
Destrehan Plantation fall festival coming soon | NOLA.com
Nov 7, 2011 . Arts and crafts, food, music, period demonstrations and other entertainment planned.
http://blog.nola.com/river/2011/11/destrehan_plantation_fall_fest.html
Destrehan Plantation Fall Festival
November 13-14, 2012. Destrehan Plantation Festival. PO Box 5. Destrehan, LA 70047-0005. Nancy Roberts.<PHONE_NUMBER>. Email<EMAIL_ADDRESS>.
http://www.laffnet.org/Destrehan_Plantation_Fall_Festival/Destrehan%20Plantation%20Fall%20Festival.htm
Destrehan Plantation Fall Festival Nov 12-13-car rental? - New ...
Oct 21, 2011 . Hello the Destrehan festival will be on Nov 12 & 13, I'm thinking of doing this on Sunday the 13. I don't think there is public transport available, .
http://www.tripadvisor.com/ShowTopic-g60864-i34-k4896969-Destrehan_Plantation_Fall_Festival_Nov_12_13_car_rental-New_Orleans_Louisiana.html
Things You'll Need
- Certified copies of public records evidence in your case
Instructions
-
-
1
41st Annual Destrehan Plantation Fall Festival | Facebook
Facebook is a social utility that connects people with friends and others who work , study and live around them. People use Facebook to keep up with friends, .
http://www.facebook.com/events/299345596832902/?ref=nfDestrehan Plantation | Since 1787
Website of Destrehan Plantation, antebellum plantation located 25 miles upriver from New Orleans. Tours, gifts, historical demonstrations and more!
http://www.destrehanplantation.org/ -
2
Destrehan Plantation will present its annual fall festival Nov. 9-11 ...
Nov 1, 2012 . St. John United Way seeks donations of equipment, and volunteers are needed.
http://blog.nola.com/river/2012/11/destrehan_plantation_will_pres.htmlDestrehan Plantation Festival | Best of Louisiana on Your Mobile
Continuous live entertainment, a children's area with pony rides, Eurobungee jumping and facepainting are also available. Tours of the plantation house and .
http://m.louisianatravel.com/destrehan-plantation-fall-festival-0 -
-
3
Destrehan Plantation
Erected in 1787 by Charles Paquet, Destrehan Plantation was purchased by indigo . The Plantation celebrates an Anuual Fall Festival the second week-end in .
http://www.nps.gov/nr/travel/louisiana/des.htmDestrehan Plantation - Destrehan - Historical Place | Facebook
Interpreters "Private Ian and Free Woman of Color Dianne" at Destrehan Plantations Fall Fest..... 41 · February 27 at 6:56am .
http://www.facebook.com/destrehanplantation -
4
New Orleans Plantation Homes, Oak Alley, Houmas House, Nottoway
For information on the Destrehan Plantation Fall Festival visit my Seasonal Activities page. Louisiana Plantations Homes: Ormond Plantation .
http://www.exploreneworleans.info/html/plantations.phpDestrehan Plantation Review | Side Trips from New Orleans ...
Read the Fodor's review of Destrehan Plantation, or post your own. . candle making, or open-hearth cooking; an annual fall festival with music, crafts, and food .
http://www.fodors.com/world/north-america/usa/louisiana/side-trips-from-new-orleans/review-461845.html
-
1
References
Resources
- Photo Credit Justice image by MVit from chemistry labs easy experiment


| DOSE: |
0.33 g |
insufflated |
Cocaine |
(powder / crystals) |
I was over at a friends house. We were really bored and some of the 'crackheads' my friend lives with were going to score some coke. I had come in contact with the drug many times in the past and had always been uninterested in it. It never appealed to me in anyway. From what I had read it wasn't all it's cracked up to be (pardon the pun) and I don't like amphetamine like drugs in general.
But like I said we were bored and I decided to give it a shot just to satisfy the slight curiousity I had and to cure the bordom.
So we forked over our money to these shady characters and 30 minutes later they return with an 'gram' of cocaine. In retrospect my friend and I suspected that our 'couriers' had pinched a little for themselves from our bag.
Regardless we split the amount three ways and we each snorted our lot in a two big lines. I'm really not sure how pure the coke was or how much I snorted so don't quote me on dosage.
Immediately after we smoked some cannabis in a pipe. I remember noticing that the effects did not become apparent as quickly as I would have imagined. First I noticed my mouth, throat, and sinus areas going completely numb. My heart rate was definetly increased and soon a euphoria came over me that reminded me of my experiences with MDMA. I remember the feeling of it dripping down my throat was not exactly appealing.
I sat still in my chair for probably 15 minutes. My only comment on the effects was that 'This is interesting.' My friend and I decided to walk to campus. But halfway there I noticed the effects of the drug tapering off rapidly and I was overcome by a general feeling of fatigue and nausea. Nothing too bad, but I remember thinking that higher doses of this stuff could be quite unpleasent to come down from.
Soon I was in a sore mood and parted with my friend and walked home. I felt a little out of it for a few hours after and was soon asleep.
All in all cocaine was exactly what I expected it to be; Interesting but nothing special. I have no desire to repeat the experience.
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.


{{ journal.title }}
{{ journal.date }}
{{journal.content.substring(0, 250)}} [...]
{{journal.content}}
778-456-7891
<EMAIL_ADDRESS>1490 Broadway
Vancouver, BC, V6H 1H5
Monday-Friday: 9am to 5pm
Saturday: 10am to 2pm
Sunday: Closed
April
March


public class Game
extends java.lang.Object
Game
.| Constructor and Description |
|---|
Game()
Creates a new
Game with any properties. |
| Modifier and Type | Method and Description |
|---|---|
void |
addDomino(Domino domino)
|
void |
addPlayer(Player player)
|
java.util.Map<Player,java.lang.Integer> |
calculateScore()
Calculates the score of the
Game . |
void |
createPlayerWithColor(PlayerColor playerColor)
|
Response |
discardDomino()
|
void |
generateDominoes()
|
Player |
getCurrentPlayer()
|
DominoesList |
getDominoes()
|
java.util.List<PlayerColor> |
getFreePlayerColors()
Returns all unused
PlayerColor s. |
GameMode |
getGameMode()
|
Domino |
getNewDomino()
|
DominoesList |
getNewDominoesList()
|
java.util.List<DominoesList> |
getPickedDominoes()
Returns a
List of DominoesList of pickedDominoes. |
java.util.List<Player> |
getPlayers()
|
java.util.List<java.util.Map<Player,java.lang.Integer>> |
getPlayerTurns()
Returns the
List of Player s turns. |
Domino |
getPreviousDomino()
|
DominoesList |
getPreviousDominoesList()
|
int |
getTurnNumber()
Returns the current turn number.
|
java.util.List<Player> |
getWinners()
Calculates the winner of the
Game . |
void |
initiatePlayers()
|
boolean |
isLastTurn()
Returns if this is the last turn of the
Game . |
void |
makeRotateDomino(Domino domino)
Makes rotate a
Domino by 90 degrees. |
int |
numberKingsInGame()
|
void |
pickDominoes()
|
Response |
playerChoosesDomino(Domino domino)
|
Response |
playerChoosesPositionForDomino(Position position1,
Position position2)
|
void |
setCurrentPlayer(Player currentPlayer)
|
void |
setDominoes(DominoesList dominoes)
|
void |
setGameMode(GameMode gameMode)
|
void |
setLastTurn(boolean lastTurn)
Sets if this is the last turn of the
Game . |
void |
setNewDomino(Domino newDomino)
|
void |
setPickedDominoes(java.util.List<DominoesList> pickedDominoes)
Sets the
List of DominoesList of pickedDominoes. |
void |
setPlayers(java.util.List<Player> players)
|
void |
setPlayerTurns(java.util.List<java.util.Map<Player,java.lang.Integer>> playerTurns)
Sets the
List of Player s turns. |
void |
setPreviousDomino(Domino previousDomino)
|
void |
setTurnNumber(int turnNumber)
Sets the current turn number.
|
public Game()
Game
with any properties.public java.util.List<PlayerColor> getFreePlayerColors()
PlayerColor
s.List
of unused PlayerColor
s.public void createPlayerWithColor(PlayerColor playerColor) throws PlayerColorAlreadyUsed
playerColor
- PlayerColor
of the Player
to be created.PlayerColorAlreadyUsed
public void generateDominoes() throws java.io.IOException, InvalidDominoesCSVFile
Domino
s for the current Game
.
This collects all Domino
s stored in a csv file and select randomly the good number of them according to the number of Player
s and the GameMode
.java.io.IOException
InvalidDominoesCSVFile
CSVReader.getDominoes()
public void initiatePlayers() throws MaxCrownsLandPortionExceeded
MaxCrownsLandPortionExceeded
- If a LandPortion
has an invalid number of crowns.public DominoesList getNewDominoesList()
DominoesList
containing all Domino
s in the new Game
line.public DominoesList getPreviousDominoesList()
DominoesList
containing all Domino
s in the previous Game
line.public void pickDominoes() throws NoMoreDominoInGameStack, NotEnoughDominoesInGameStack
NoMoreDominoInGameStack
- There is no more Domino
s in the Game
stack. This is consequently the last turn.NotEnoughDominoesInGameStack
- There is not enough Domino
s in the Game
stack. It's probably a bug as the number of Domino
s in the Game
stack is a multiple of the number of Player
s.public Response playerChoosesDomino(Domino domino)
domino
- Domino
to be set as one of the current Player
.Response.NEXTTURNPLAYER
if it must be the turn of the next Player
.
Response.PICKDOMINOES
if a new turn must be started. A new line of Domino
s must be picked.
Response.SHOWPLACEPOSSIBILITIES
if the Position
possibilities must be shown for the domino.
Response.GAMEOVER
if the Game
is over.
Response.NULL
if nothing must be done. It's probably a bug.public void makeRotateDomino(Domino domino)
public Response discardDomino()
Response.NEXTTURNPLAYER
if it must be the turn of the next Player
.
Response.PICKDOMINOES
if a new turn must be started. A new line of Domino
s must be picked.
Response.NULL
if nothing must be done. It's probably a bug.public Response playerChoosesPositionForDomino(Position position1, Position position2) throws InvalidDominoPosition
position1
- Position
for the first LandPortion
of the Domino
. Take care, position1 must have an x lower than or equal to that of position2. Also, position1 must have an y greater than or equal to that of position2.position2
- Position
for the second LandPortion
of the Domino
.Response.NEXTTURNPLAYER
if it must be the turn of the next Player
.
Response.PICKDOMINOES
if a new turn must be started. A new line of Domino
s must be picked.InvalidDominoPosition
LandPortion
public java.util.Map<Player,java.lang.Integer> calculateScore()
Game
.Map
containing all Player
s and their associated score.public java.util.List<Player> getWinners()
Game
.List
containing one or many winners.public DominoesList getDominoes()
DominoesList
containing all Domino
s in the Game
stack.public void setDominoes(DominoesList dominoes)
Domino
s stored in the Game
stack.
Take care, it replaces all previous Domino
s stored in this stack.dominoes
- DominoesList
to be set as the Game
stack.public void addDomino(Domino domino)
public void setPlayers(java.util.List<Player> players)
public void addPlayer(Player player)
public void setGameMode(GameMode gameMode)
public void setCurrentPlayer(Player currentPlayer)
public java.util.List<java.util.Map<Player,java.lang.Integer>> getPlayerTurns()
List
of Player
s turns.
It contains the order of player turns, for each one.List
of the Player
s turns.public void setPlayerTurns(java.util.List<java.util.Map<Player,java.lang.Integer>> playerTurns)
List
of Player
s turns.
It contains the order of player turns, for each one.
Take care, it replaces the previous List
stored.playerTurns
- List
of the Player
s turns to be set.public int getTurnNumber()
public void setTurnNumber(int turnNumber)
turnNumber
- Current turn number to be srt.public java.util.List<DominoesList> getPickedDominoes()
List
of DominoesList
of pickedDominoes.
At each execution of pickDominoes()
a new DominoesList
is added.List
of DominoesList
of pickedDominoes.pickDominoes()
public void setPickedDominoes(java.util.List<DominoesList> pickedDominoes)
List
of DominoesList
of pickedDominoes.pickedDominoes
- List
of DominoesList
of pickedDominoes to be set.pickDominoes()
public Domino getPreviousDomino()
public void setPreviousDomino(Domino previousDomino)
public Domino getNewDomino()
public void setNewDomino(Domino newDomino)
public boolean isLastTurn()
Game
.Game
.
false otherwise.


Creating an empowering community that allows its members to receive and offer support as well as grow along each other.
Preparing students for their future careers by providing networking and leadership development opportunities, mentoring and resources.
Providing young girls with exposure to STEM fields through workshops and conferences to spark their interest in these fields.


For all the private data of each officegen instance that we don't want the user of officegen to access it.
Each officegen object has it's own copy of the private object so changes been done to the private object of one officegen document will not effect other objects.


{% extends 'layouts/layout-bsa-design-system.html' %} {% block pageTitle %} Start page template - NHS.UK prototype kit {% endblock %} {% block beforeContent %} {{ breadcrumb({ items: [ { href: "/index", text: "Home" } ], href: "/design-system/styles", text: "Styles" }) }} {% endblock %} {% block content %}
Digital services for government staff users in the NHSBSA (new services and existing digital services that are being redeveloped) should use these styles.
In the NHSBSA this includes:
This guidance applies to digital services, and does not affect or change any of the NHSBSA's existing brand advice for print and offline applications.


Jane at the Jail
“Jane, give it up, we all see through your charade. Your story of Alex wanting to marry you makes no sense at all, you were just a fling to him, a mistake made in Bahamas.  It quite nearly did, but clearly Wilma is long past whatever happened with Alex and is busy pursuing Harry. It seems if anyone didn’t get over what happened in the Bahamas it was you! I’m ashamed that I almost considered going out with you.”
“Going out with me… what are you talking…….”
“You clearly pretended to go to bed, but instead hid and waited until you heard Harry finish talking to Alex in the dining room.  I can’t begin to imagine the look on his face. Officers take this woman away!”
“What madness is this?! Dwaine are you drunk?! I can’t believe….”
“Ma’am I think it may be best you come with us and we sort this all out at the station.” The police take a clearly irate Jane away in their squad car while she regales me with some very colourful language.


Welcome to the Dolphin Smalltalk Professional Try-Buy CD.
On this disk you will find two trial versions of Dolphin Smalltalk™; the premier Smalltalk development system for Microsoft Windows™. Please see the sections below for a review of these two different products. First of all, though, just a note about the Microsoft Windows Installer.
All of the installations on the CD make use of the Microsoft Windows Installer mechanism. This has a number of advantages compared with earlier setup technology which means that installations should be easier and more robust. To make use of the MSI you must have an appropriate version of the Windows Installer (1.1) available on your machine before attempting to install any of the downloads on this page. Note that your operating system may already have MSI available, either because it came as part of the OS or because another application has installed it. If you are not sure, and want to save on additional download time, try the Dolphin product links first to see if the MSI file type is recognized by your system and can be opened as an installation file. If it is not, then use one of the following links to update your version of Microsoft Windows to the new installer now.
Dolphin Smalltalk is a fully featured rapid software development system for PC based Microsoft Windows™ applications. It is a highly productive development environment targeted at the graphical Visual Basic / C++ / Java developer who wishes to adopt a pure approach to object-oriented programming. Dolphin Smalltalk takes advantage of the latest Microsoft operating system features and enables the full functionality of the Microsoft Win32 APIs to be accessed from within the Smalltalk environment. As a result, applications built using Dolphin are fully featured, yet fast to market and easy to maintain. Dolphin Smalltalk works with Windows™ 95, 98, ME, NT4 or 2000.
This trial edition is time-limited to expire on 1st June 2001. To use the product after this point you must purchase a full serial number from http://www.object-arts.com. Since the Dolphin trial image will refuse to load after this point you must export as packages any work that you wish to save so that it may subsequently be installed into your purchased copy.
Over the years we've built up quite a community behind Dolphin Smalltalk. To find out more check out our Community links to the world wide web.
This is version of Dolphin Smalltalk Professional that has been pre-loaded with STS (Source Tracking System)- an ENVY™-like clone specially written for the Dolphin environment.
STS uses an object oriented database, OmniBase, as a source code repository where all changes to methods, classes or packages are stored as soon as they are made. Features include browsing of old method/class/package/project/view editions, comparing changes between them, loading partial code from packages without installing them, merging code from different package editions and team development support. Source Tracking System also introduces projects into the Dolphin Smalltalk environment with which you can group multiple package versions together and load them all at once in a predefined order.
STS is available as an add-on to Dolphin from http://www.gorisek.com. This trial edition is time-limited to expire on 1st June 2001. To use the product after this point you must purchase a full Dolphin serial number from http://www.object-arts.com and a copy of STS from the preceding web site.


Head and Shoulders Filming //
Aviva MyDocs Proposal: Pitch Video
Time
2 days
Cost
£1,900
Resources
- Black Magic cinema cameras with tripods
- Tie microphones
- Single compact three-point lights kit
- Premiere Pro
- After Effects
- Adobe Audition
Project overview
Split over two locations in separate countries, our resident director was able to film the client both in our offices in Central London and in our EY office in Zurich, Switzerland. Our director travelled with a small portable pack of essential filming equipment consisting of professional grade cameras, sound equipment and a lighting kit. Once filming was completed, we edited the resulting successful pitch video together in our studio facilities in London.
Thank you so so much for all your hard work in turning around such fantastic videos in such a short space of time. We were all so impressed by how professional and impactful they were. It really was very much appreciated and added the “wow” factor to the pitch.
Sara McLeish - Director, EMEIA Financial Services
Filming with Bespoke Animation //
Oil and Gas – Asset Reliability and Integrity Management
Time
40 days
Cost
£39,033
Resources
- Project Manager
- Digital Designer
- Proof reader/Editorial
- Video/Audio expert
- Black Magic Cinema Camera
- Nikon DSLR
- Green Screen Studio
- Premiere Pro
- DaVinci Resolve
- After Effects
- Adobe Audition
Project overview
Our filming with bespoke animation, as used for our Oil and Gas videos, is a step beyond our standard head and shoulders offering. Employing our highly skilled animators as well as our filming team, the core content is filmed in our state-of-the-art green screen studio, cut and edited in house, and then enhanced with animated backgrounds. These animations can convey statistics, tables, related visuals and hand-drawn characters. The end result allows us to convey supplementary information alongside the central message conveyed by the speaker.
I really like it. The narrative just comes alive with the graphics! Well done on the production.


View and manage the selected building here.
Building Name Use a unique name that is known by almost anyone.
View and manage rooms in this building below.
No rooms found for this building!


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/diagnosing.20loops.20in.20.60simp.60.html ---
Can someone remind me what I'm meant to do to diagnose simp
apparently going into an endless loop, and ending in a timeout? There must be some option to set so I can see which lemmas it is attempting to apply.
Ah, okay: set_option trace.simp_lemmas true
. Curiously in VSCode set option trace.simp
doesn't include in its autocomplete suggestions trace.simp_lemmas
.
Oh, and it's trace.simplify
that I want anyway.
Scott -- if this is not mentioned in the simp docs then add one para and make a PR.
Or just download
https://github.com/leanprover/mathlib/blob/master/docs/extras/simp.md
and edit it and email it me.
Let's get these answers down in a canonical place.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Join the numbers and get to the 2048 tile!
New Game
How to play: Use your arrow keys to move the tiles. When two tiles with the same number touch, they merge into one!
Note: 2048 : Aditi Edition is a fork of the official version of 2048 made for Aditi's Birthday!. You can play it on your phone via http://ash.cm/2048AE.
Hacked together by Ashwin Sinha, from 2048 by Gabriele Cirulli. Based on 1024 by Veewo Studio and conceptually similar to Threes by Asher Vollmer.


public class Sprite
extends totalcross.lang.Object
The sprite attributes are:
You can find a complete game API sample named 'Scape' in the TotalCross samples folder.
Here is some sample code:
// Ball is a the Sprite bouncing on the screen. // The ball bounces on the left, the top and the bottom border and // must be hit by the racket on the right border to keep the ball inside the screen. // If the racket misses the ball, the game is over. public final class Ball extends Sprite { // random generator for the starting speeds private Random rand=new Random(); // keep a reference to the game mainclass for data access & game control. private Ping game; // other important sprite the ball sprite must know about for interaction... private Racket racket; // ball movement speed in both directions in double values for acceleration precision private double speedx,speedy; // and in integer format for quicker move computing. private int ispeedx,ispeedy; //---------------------------------------------------------------- // Ball constructor. // @param game the Ping game mainclass. // @param racket Sprite that interacts with the ball. //---------------------------------------------------------------- public Ball(Ping game,Racket racket) { // setup the sprite by loading the bitmap, defining the transparency color. // The ball element does not fill the whole bitmap, the corners are filled // with WHITE pixels. By setting WHITE as the transparency color and selecting the // DRAW_SPRITE draw mode, the bitmap white pixels are not shown and the background // is not affected by the bitmap display. The background saving feature is disabled // because the whole screen is cleared and redrawn at each frame. No valid region // (null) means, default valid region is right. Except that the miny value must be // incremented to prevent the ball hiding the s super(new Image("ball.bmp"),Color.WHITE,false,null); drawOp=Graphics.DRAW_SPRITE; // the ball may go out of the window when the user misses it doClip = true; // by default the valid area of a sprite is the screen. // reduce the playfield of the racket by the level & score display zone regionMiny+=Ping.GAME_MINY; this.game=game; this.racket=racket; // initialize the ball reinit(); } // initialization needed each time a game starts. // The racket is placed in the middle of the right border and the ball // is placed next to it. // Also defines the initial ball speed. public void reinit() { Coord pos=racket.getBallPosition(halfWidth); setPos(ballHitX=pos.x,pos.y,false); speedx=4+rand.nextFloat()*6.0f; speedy=2+rand.nextFloat()*3.0f; ispeedx=-1; ispeedy=-1; // the toward position specified in the towardPos call is not a // direction but an ending position, so speed is irrelevant. speed=1000; ... } //---------------------------------------------------------------- // Move the ball to next position depending on the current speed. //---------------------------------------------------------------- public void move() { // add the speed vector and enable position validation. // see the "Scape" sample code for more details about position validation. // this towardPos() moves the sprite toward a point, the third parameter // enables position validation which is needed for each position change to // precisely detect the racket or the borders hits. // This call could be optimized to disable the time consuming position // validation when the ball is not near the screen border. towardPos(centerX+ispeedx,centerY+ispeedy,true); }
| Modifier and Type | Field and Description |
|---|---|
protected Image |
background
Background image.
|
protected Graphics |
bgGfx
Background graphic context.
|
protected int |
bgX
Background restoring position.
|
protected int |
bgY
Background restoring position.
|
int |
centerX
Sprite center position.
|
int |
centerY
Sprite center position.
|
boolean |
doClip
set to false if this sprite never reaches the screen boundaries.
|
protected Graphics |
gfx
Graphics to draw at.
|
int |
height
Sprite width/height dimensions.
|
Image |
image
Sprite image.
|
protected static int |
INVALID |
protected int |
regionMaxx
Sprite valid region.
|
protected int |
regionMaxy
Sprite valid region.
|
protected int |
regionMinx
Sprite valid region.
|
protected int |
regionMiny
Sprite valid region.
|
protected boolean |
screenErased |
int |
speed
Speed in pixels used by the function towardPos.
|
protected GfxSurface |
surface
Surface to draw at.
|
int |
width
Sprite width/height dimensions.
|
| Constructor and Description |
|---|
Sprite(Image image,
int transColor,
boolean saveBckgd,
Rect region)
Sprite constructor.
|
Sprite(Image image,
int nrFrames,
int transColor,
boolean saveBckgd,
Rect region)
Sprite constructor.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
collide(Sprite s)
Test if the sprite collides with another one.
|
Coord |
getPos()
Retrieve the sprite position (actually its center).
|
Rect |
getRegion()
Retrieve the sprite valid region.
|
void |
hide()
Restore the sprite's saved background.
|
boolean |
onPositionChange()
Default position validation function.
|
boolean |
setPos(int x,
int y,
boolean doValidate)
Sets the sprite position (actually its center).
|
void |
setRegion(Rect region)
Change the sprite valid region.
|
void |
show()
Draw the sprite at it's current position using the defined drawOp.
|
boolean |
towardPos(int x,
int y,
boolean doValidate)
Moves the sprite toward the specified position.
|
public int centerX
public int centerY
public int width
public int height
protected int regionMinx
onPositionChange()
protected int regionMiny
onPositionChange()
protected int regionMaxx
onPositionChange()
protected int regionMaxy
onPositionChange()
public Image image
protected Graphics gfx
protected GfxSurface surface
public int speed
towardPos(int, int, boolean)
protected boolean screenErased
public boolean doClip
protected static final int INVALID
protected Image background
protected Graphics bgGfx
protected int bgX
protected int bgY
public Sprite(Image image, int transColor, boolean saveBckgd, Rect region) throws totalcross.lang.IllegalArgumentException, totalcross.lang.IllegalStateException, ImageException
image
- sprite image.transColor
- sprite's transparency color or -1 if nonesaveBckgd
- true if the background should be saved each time the sprite is drawn to restore it once the sprite
moves.region
- defines the sprite valid area.ImageException
totalcross.lang.IllegalStateException
totalcross.lang.IllegalArgumentException
public Sprite(Image image, int nrFrames, int transColor, boolean saveBckgd, Rect region) throws totalcross.lang.IllegalArgumentException, totalcross.lang.IllegalStateException, ImageException
image
- sprite image.transColor
- sprite's transparency color or -1 if nonesaveBckgd
- true if the background should be saved each time the sprite is drawn to restore it once the sprite
moves.region
- defines the sprite valid area.ImageException
totalcross.lang.IllegalStateException
totalcross.lang.IllegalArgumentException
public final Rect getRegion()
public final void setRegion(Rect region)
region
- new positions validity areapublic boolean onPositionChange()
towardPos(int, int, boolean)
public final boolean setPos(int x, int y, boolean doValidate)
x
- position.y
- position.doValidate
- if true the position is validated which means that the onPositionChange() function is called.onPositionChange()
public final Coord getPos()
public boolean towardPos(int x, int y, boolean doValidate)
x
- position.y
- position.doValidate
- if true the position is validated which means that the onPositionChange() function is called.onPositionChange()
public void show()
public void hide()
public boolean collide(Sprite s)
s
- sprite to test with