In a recent bout of insanity, I thought it would be cool to play around with concurrency in pure C. Nothing crazy, maybe controlling access to a shared resource and a semaphore or two for good measure.
Since I assumed this would be no easy feat in C, I deciced I’d start with a problem I knew. So I went with the dining philosophers problem.
There are five (can be adjusted) philosophers sitting around a round table. These philosophers spend their days thinking and eating.
They eat from an endless supply of spaghetti.
Now the problem…there are only five forks available at any given moment. So at most, only two philosophers can eat at the same time.
We need to ensure that access to the forks is limited. The basic idea is that a philosopher will think while waiting to get a hold of the fork to his left and right. Then he’ll eat and release the forks allowing the philosophers to his left and right to eat.
Since the day is shared by all philosophers, we’ll model each philosopher as a thread so they can run at “the same” time.
To do this, we’ll need to ensure we don’t get caught in a deadlock. This can happen if each philosopher grabs the fork to their left, preventing anyone from grabbing the fork to their right. If that happens each philosopher thread would block waiting for the fork on the right.
params_t
StructPOSIX threads take a single void *
parameter. However, we need to pass in four values to each of the threads. We need
to pass in the position of the current philosopher at the table, the total number of philosophers, the semaphore for the
critical region and the semaphores for the forks. To make this possible, we create a simple struct called params_t
to
wrap these values.
main
FunctionWe begin by defining a few semaphores. We need one semaphore for each fork and one for controlling the critical region.
Then we setup and run all of the philosopher threads. Finally, we call pthread_exit
to wait for all threads to
complete.
initialize_semaphores
FunctionWe initialize the forks by setting their initial value to 1
. We could have used mutexes for these, but since they’re
really just binary semaphores I thought I’d stick to one type of lock throughout.
Next, we initialize the lock semaphore. This will be used to wrap the calls to eat
in a critical region. We know that
only two philosophers can eat at the same time (since there are 5 forks and 2 are required to eat). We could initialize
the lock to 2
and it would technically be correct. However, I like to do the simplest thing to avoid deadlock. The
simplest thing is to not let all philosophers grab forks. So instead of 2
, I initialized it to 4
; one less than
the number of philosophers.
run_all_threads
FunctionThis function spawns the philosopher threads. It creates an instance of params_t
to pass to each thread and calls
pthread_create
for each of them. Each thread will call the philosopher
function passing it’s instance of params_t
as the argument.
philosopher
FunctionThis is the meat and potatoes of the app. Here is where each philosopher lives out their day. The interesting part is
surrounding the call to eat
.
First, we wait on the lock. This is the start of the critical region and the part that ensures that no more than four
philosophers are attempting to pick up a fork at any given time. Next we wait on the left and right forks. Since these
semaphores are initialized to 1
, we can be sure that we are the only one that’s using either of them at the moment.
Knowing that, we eat
.
Finally, we post to the forks indicating we’re done eating and post to the lock to exit the critical region to allow other philosophers to eat.
With a little effort, we’ve got a working solution to the dining philosophers problem. I know this example is very contrived, but using POSIX threads seems relatively easy. If you’re interested in learning about pthread, check out this tutorial.


| Bayesian | Bayesian Inference |
| ChemPhys | Chemometrics and Computational Physics |
| Cluster | Cluster Analysis & Finite Mixture Models |
| Distributions | Probability Distributions |
| Econometrics | Computational Econometrics |
| Environmetrics | Analysis of Ecological and Environmental Data |
| ExperimentalDesign | Design of Experiments (DoE) & Analysis of Experimental Data |
| Finance | Empirical Finance |
| Genetics | Statistical Genetics |
| Graphics | Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization |
| gR | gRaphical Models in R |
| HighPerformanceComputing | High Performance and Parallel Computing |
| MachineLearning | Machine Learning & Statistical Learning |
| MedicalImaging | Medical Image Analysis |
| Multivariate | Multivariate Statistics |
| NaturalLanguageProcessing | Natural Language Processing |
| Optimization | Optimization and Mathematical Programming |
| Pharmacokinetics | Analysis of Pharmacokinetic Data |
| Psychometrics | Psychometric Models and Methods |
| Robust | Robust Statistical Methods |
| SocialSciences | Statistics for the Social Sciences |
| Spatial | Analysis of Spatial Data |
| Survival | Survival Analysis |
| TimeSeries | Time Series Analysis |
To automatically install these views, the ctv package needs to be installed, e.g., via
install.packages("ctv")
library("ctv")
and then the views can be installed via install.views or update.views
(which first assesses which of the packages are already installed and up-to-date), e.g.,
install.views("Econometrics")
or
update.views("Econometrics")


domestic | environment | fuel storage – protection from fire | 2007
Every
building
must be designed and
constructed
in such a way that:
(a)
an oil storage installation, incorporating oil storage tanks
used solely to serve a fixed combustion appliance installation
providing space heating or cooking facilities in a
building
,
will inhibit fire from spreading to the tank and its contents
from within, or beyond, the
boundary;
(b)
a container for the storage of woody biomass fuel will inhibit
fire from spreading to its contents from within, or beyond the
boundary
.
Limitation:
This standard does not apply to portable containers.
3.23.0 Introduction
The guidance on oil relates only to its use solely where it serves a
combustion appliance providing space heating or cooking facilities in a
building
. There is other legislation covering the storage of oils for other
purposes. Heating oils comprise Class C2 oil (kerosene) or Class D oil (gas
oil) as specified in BS 2869: 2006.
It is considered unlikely that a fire will originate from the stored oil. It is the
purpose of this guidance therefore, to ensure that a fire that may originate
from a
building
, or other external source, is not transferred to the tank
contents, or if a fire does occur, its effects are limited.
Woody biomass
The acceptance of climate change and the environmental policies put in
place to mitigate its impacts are pushing the commercial introduction of
renewable energy technologies to displace the use of fossil fuels and the
related combustion emissions of greenhouse gases. Woody biomass can be
used as an alternative to fossil fuels and in some EU countries biomass fuel
is the principal source of renewable energy for heating applications. The
carbon dioxide emitted when biomass is burnt can be considered to be offset
by the carbon dioxide absorbed as trees grow. Whilst this does not
compensate for the energy used in processing the wood for fuel, the carbon
dioxide emissions are considerably less than those of fossil fuels.
The use of woody biomass, in the form of wood chips, wood pellets, and logs
may offer a viable alternative to fossil fuels, particularly in areas not served
by the gas grid, although the supply and distribution of chips and pellets is, as
yet, still developing with increasingly more suppliers available.
Information of the different types of woody biomass fuel can be found on
the BSD website under: ‘Storage of woody biomass fuel for heating
equipment’
In the case of
conversions
, as specified in regulation 4, the
building
as
converted
shall meet the requirement of this standard (regulation 12,
schedule 6).
3.23
—
3.23.0
domestic | environment | fuel storage – protection from fire | 2007
3.23.1 Separation of oil tanks from buildings and boundaries
Every fixed oil tank with a capacity of more than 90 litres should be located at
a distance from a
building
to reduce the risk of the fuel that is being stored
from being ignited if there is a fire in the
building
. Some fire protection to, or
Further guidance may be obtained from OFTEC Technical Information Sheet
TI/136, Fire protection of oil storage tanks.
Precautions should also be taken when an oil storage tank is located close to
a
boundary
. The installation of a tank should not inhibit full development of a
neighbouring plot.
Large tanks
An oil tank with a capacity of more than 3500 litres should be located in
accordance with the recommendations in BS 5410: Part 2: 1978.
Small tanks
An oil tank with a capacity of not more than 3500 litres should be located in
accordance with the following table:
Location of oil storage tank not more than 3500 litres capacity
Location of tank
Protection recommended
Buildings without openings Buildings with openings
non-combustible
base; and
any part of the eaves not more
than 1.8 m from the tank and
extending 300 mm beyond
each side of the tank must be
non-combustible
; and, either:
non-combustible
base;
and
any part of the eaves not
more than 1.8 m from the
tank and extending
300 mm beyond each side
of the tank must be
non-combustible
; and
a barrier between the tank
and any part of a
building
not more than 1.8 m from
the tank.
a.
any part of a
building
not
more than 1.8 m from the
tank should be of
type 7, short duration [2], or
a barrier [1].
b.
More than 1.8 m
from any
building
non-combustible
base
non-combustible
base, and
a barrier, or a wall with a
non-combustible
construction
type 7, short duration [2].
non-combustible
base
Externally, wholly
below ground
no protection required
Notes:
1.
BARRIER means an imperforate,
non-combustible
wall or screen at
least 300 mm higher and extending 300 mm beyond either end of
the tank,
constructed
so as to prevent the passage of direct radiated
heat to the tank.
2.
See section 2: Fire, annex 2.B.1.
3.23.1
—
3.23.1
domestic | environment | fuel storage – protection from fire | 2007
3.23.2 Additional fire protection
The fuel feed system from the storage tank to the combustion appliance is
also a potential hazard in the event of fire. The fire valve on the fuel feed,
should be fitted in accordance with Clause 8.3 of BS 5410: Part 1: 1997 and
OFTEC Technical Book 3.
Oil pipelines located inside a
building
should be run in copper or steel pipe.
The recommendations of Clause 8.2 of BS 5410: Part 1: 1997 should be
followed.
Fire can also spread to an oil storage tank along the ground. Provision
should therefore be made to prevent the tank becoming overgrown such as a
solid,
non-combustible
base in full contact with the ground. A base of
concrete at least 100 mm thick or of paving slabs at least 42 mm thick that
extends at least 300 mm beyond all sides of the tank would be appropriate.
However where the tank is within 1 m of the
boundary
and not more than 300
mm from a barrier or a wall of
non-combustible construction
type 7, short
duration (see table to section 2: Fire, annex 2.B.1), the base need only
extend as far as the barrier or wall.
3.23.3 Storage within a building
Where a storage tank is located inside a
building
, additional safety provisions
should be made including the following:
a. the place where the tank is installed should be treated as a
place of
special fire risk
; and
b. the space should be ventilated to the external air; and
c. the space should have an outward opening door that can be easily
opened without a key from the side approached by people making their
escape; and
d. there should be sufficient space for access to the tank and its mountings
and fittings; and
e. a catchpit as described in standard 3.24.
Guidance on protection from spillage is provided to standard 3.24.
Further guidance may be obtained from OFTEC Technical Book 3 for garage
installations.
3.23.4 Bulk storage of woody biomass fuel
By its very nature woody biomass fuel is highly combustible and precautions
need to be taken to reduce the possibility of the stored fuel igniting. To
ensure maximum energy from the fuel, storage should be designed to be
damp free and improve or maintain the moisture content of the fuel at time of
delivery. To inhibit the spread of fire to the contents, bulk storage for wood
fuels should be in containers in accordance with following table:
3.23.2
—
3.23.4
domestic | environment | fuel storage – protection from fire | 2007
Bulk storage of woody biomass fuel
Location of
container
Protection recommended
a.
any part of the
building
eaves not more than 1.8 m
from the container or storage space and extending
300 mm beyond each side of the container or
storage space should be
non-combustible
; and
a barrier [1]
b.
the container or storage frame should be
constructed
to have short fire resistance duration to its
boundary
walls
Within a
building
a.
separated from the
building
with internal wall
constructions
providing short fire resistance
duration type 4 [2]; and
any door to be outward opening providing short
fire resistance duration type 6 [2]; and
separated from the
building
with floor
constructions
providing short fire resistance
duration type 2 [2]; and
external walls constructed
that provide short fire
resistance duration type 7 or type 8 [2] as
appropriate
b.
c.
d.
Notes:
1.
BARRIER means an imperforate,
non-combustible
wall or screen at
least 300 mm higher than and extending 300 mm beyond either end
of the container or storage space
constructed
so as to prevent the
passage of direct radiated heat.
2.
See section 2: Fire, annex 2.B.1.
Protection for pellets
Wood pellets can be damaged during delivery thus producing dust that can
cause an explosion and precautions need to be taken to reduce this risk.
Once a year any dust that has collected in the store should be removed.
Storage containers for wood pellets, where they are to be pumped from a
transporter to the container, should include a protective rubber mat over the
wall to reduce damage to the pellets when they hit the wall. Containers
should have an outward opening door incorporating containment to prevent
the pellets escaping when the door is opened.
Automated supply
To maintain fire proof storage and prevent back-burning there should be an
interruption to the fuel transport system normally by use of a star-feeder or
chute for the fuel to fall into the boiler. The installation should be in
accordance with the safety standards described in BS EN 303-5: 1999.
Small installations
Delivery of woody biomass fuel in bags would only be economical for small
installations such as the suggestion in the guidance to standard 6.2 for the
use of a small woody biomass stove or boiler as secondary heating providing
10% of the annual heating demand. The woody biomass fuel should be
stored separately from the boiler that the fuel feeds for fire safety reasons.
3.23.4
—
3.23.4


My name is Eduardo Frias, I'm currently living in Austin, Texas. I have a cute cat named Leo, and he is fluffy and orange like garfield!
I enjoy reading manga, which are japanese comic books. A good place to start reading manga from is Mangapanda.com . They have hundreds of titles from you to choose from, and the website is updated daily. Feel free to drop me an email here if you want some recommendations on what to read.
Food
I can't live without:
Things to do in SF:


China's Plan To Beat The U.S. Navy: Submersible Missile-Laden Arsenal Ships
A game-changer?
by Sarah SicardKey point: These designs are novel takes on more classic submarine designs, providing unique capabilities to the Chinese navy.
The Chinese navy may be putting a new spin on a classic warship: It’s looking into the possibility of giving missile-laden arsenal ships submersible properties, enabling them to hide stockpiles of missiles, undetectable to radar, below the ocean surface.
The Chinese are exploring two arsenal-ship versions, according to Popular Science: One is a high-speed surface warship that can submerge at will, while the second is more similar to a traditional submarine.
What could a submersible surface ship do that a conventional submarine can’t? It could go really fast on the surface, thanks to a hydroplaning hull, Popular Science reports:
For stealth operations, the arsenal ship would have most of its hull inherently submerged, with only the bridge and a few other parts of the ship above the waterline, reducing the radar cross section. But when traveling with a high-speed naval taskforce, the arsenal ship will sacrifice stealth to use its flat hull bottom to hydroplane at high speeds, cutting across the waves like a speedboat or amphibious armored vehicle.
The alternative plan calls for a platform that behaves similar to World War II submarines, Popular Science writes — typically staying at the surface, but able to completely submerge for stealth.
Two Chinese universities are responsible for the designing the concepts, according to the Wuhan city government. Those institutions, the Wuhan University of Science and Technology and Huazhong University of Science and Technology and Naval University of Engineering, were awarded a state prize for the work.
The concepts have been in the works since 2011, but anticipation is building. According to Popular Science, the diving missile ship’s “proof-of-concept is under construction at Bohai Shipbuilding Heavy Industrial Corporation, to be launched after 2020.”
This article by Sarah Sicard originally appeared at Task & Purpose. Follow Task & Purpose on Twitter .
This article first appeared last year.


4.0 - Navigation
Covers structure and styling of navigation elements throughout the site.
4.1 - Primary Navigation
A primary navigaton bar across the top of the page provides a static placeholder for information, while freeing up the body of the site for the display of content specific information.
In applications which have multiple users, and in which a user may be viewing records of various individuals, it is important to differentiate between the current user and the record of the individual. A common design practice is to embed the current user's information in the navigation bar. This provides user-level context and will allow a system user to visually differentiate between themselves, and the individual associated with any given record.
If search is a feature of the site, it should be incorporated into the navigation bar. This will allow easy access from any area of the site.
Default styling

 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#example-1"> Toggle navigation    </button>

Link #1

Link #2

  Suzie Demo

Action

Another action

Something else here

Separated link

4.2 - Profile
Particularly when viewing medical records, it is important to have context as to the person associated with the medical record which is being viewed. By appropriately incorporating a profile 'snapshot' for identification, users can easily differentiate record associations on a case by case basis. This component should be generally embedded in the top left corner of appropriate pages where identification is necessary, taking priority over any secondary navigational components.
Default styling
Suzie Demo
<EMAIL_ADDRESS>Born: 6/25/1982

Suzie Demo
<EMAIL_ADDRESS>
Born: 6/25/1982

4.3 - Secondary Navigation
Secondary navigation should be used on sub-pages to navigate between various components contained within that area. For instance, a sub navigation could be used to navigate through various parts of a medical record.
If a sub-page requires profile information to be displayed, the navigation should appear below the profile area.
Default styling

 <button type="button" class="btn btn-default">Allergies</button> <button type="button" class="btn btn-default">Medications</button> <button type="button" class="btn btn-default">Lab Results</button>

4.4 - Breadcrumbs
Breadcrumbs should be included for sections of the site in which a user must drill down into data. This is necessary in order to provide a clear method for the user to orient themselves and walk backwards if needed. The breadcrumb is secondary content, and should not be contained within a body panel, but rather set against the background directly; it should use the entire width of the page. Breadcrumb links should start a navigational layer below links available from the navigation bar to minimize redundancy.
Default styling

My Record > Allergies > Review Updates


WBE Covid- testing â€" COVID- (e.g., diagnostic public monitoring SARS-CoV- infectious {border-style data infection px;} #ffffff;} important research health clinical sewage coronavirus greatly surveillance virus biomarkers population Total use RNA analytical community environmental existing infected potential targeted Health approach better current levels major mass need tests tool viral wastewater However, cases caused community-wide critical database detection disease economies feces governments infections key knowledge novel play px; see: test transmission {font-family (Daughton, ability care development emerging especially financial font-size monitor needs number pandemic provide simply studies Research Testing U.S. World application case double; effects individual individuals insufficient long means months national patients pose possible published quickly reveal role scientists shedding used Covid-, Covid-. Elsevier WBE's Water acceleration analysis antigen asymptomatic available best border-color border-width challenges currently domino efforts entire epidemiology essential excreted far hospital however, human incidence increase international known large methods needed new note nucleic numbers pandemic. populations problem problems prove range rapidly reduce required resource sampling science serve solid; spread status targeting testing. tracking using {font-style {font-weight (and (i.e., Coronavirus National Page Randazzo accomplished action active advancements articles assessment b). bold capable centre certain control conventional countless countries courier; decisions detect direct diseases drug easily em; extremely fecal focus general global government healthcare high illicit inevitably infections. information know lack low magnitude maintained manufacturing marker minimizing mitigation phase points population-wide presence primarily providing pt;} rely resources resurgence risk risks stool stress sufficient surrounding treatment unknown useful wide widely worldwide


Sitemap
News
Information
Homepage
Shopping Cart
Product
Category
Kindle
Accessory
Gift
Support
Service
Register membership or Login account
Company
Introduction
Contact us
Sitemap
Amazon
Amazon Kindle
VTC
IVE


CONTENTS | PREV | NEXT
The Java Print
Service API includes a PrintService class and a StreamPrintService
class. A StreamPrintService extends PrintService, and so a
StreamPrintService can be used anywhere a PrintService can be used.
However, PrintService and StreamPrintService are used for different
purposes. APrintService is used to direct output to a printer; a
StreamPrintService is used to export formatted print data to a
stream, usually to a different format. When locating a
StreamPrintService, you specify the required output format in the
form of a MIME type argument and provide an OutputStream to receive
the data. You do not provide a representation class when locating a
StreamPrintService, as you do when locating a PrintService, because
the output is always delivered to an OutputStream.
After locating a
service, you obtain a print job and submit the print job to the
service in the same way whether you are using a PrintService or a
StreamPrintServie. The major differences between StreamPrintService
and PrintService are in the way they are located. The next section
discusses locating both print services and stream print
services.
CONTENTS | PREV | NEXT


|
ActiveTcl User Guide
|
||
variable - create and initialize a namespace variable
variable ?name value...? name
?value?
This command is normally used within a namespace eval command to create one or more variables within a namespace. Each variable name is initialized with value. The value for the last variable is optional.
If a variable name does not exist, it is created. In this case, if value is specified, it is assigned to the newly created variable. If no value is specified, the new variable is left undefined. If the variable already exists, it is set to value if value is specified or left unchanged if no value is given. Normally, name is unqualified (does not include the names of any containing namespaces), and the variable is created in the current namespace. If name includes any namespace qualifiers, the variable is created in the specified namespace. If the variable is not defined, it will be visible to the namespace which command, but not to the info exists command.
If the variable command is executed inside a Tcl procedure, it creates local variables linked to the corresponding namespace variables (and therefore these variables are listed by info locals.) In this way the variable command resembles the global command, although the global command only links to variables in the global namespace. If any values are given, they are used to modify the values of the associated namespace variables. If a namespace variable does not exist, it is created and optionally initialized.
A name argument cannot reference an element within an array. Instead, name should reference the entire array, and the initialization value should be left off. After the variable has been declared, elements within the array can be set using ordinary set or array commands.
global, namespace, procedure, variable
Copyright © 1993-1997 Bell Labs Innovations for Lucent Technologies Copyright © 1997 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.


The basic task we are undertaking here is the traditional task of building a table of contents.
But this table of contents is also going to determine the ids and relationships between resources in our data model.
It is also going to provide us with guidance as to how we structure our files and directories.
While the immediate purpose of doing things this way may not seem immediately obvious, just keep the following rule of in mind.
"Strong organization enables automation."
Tip: you can load any of these files into Oxygen and play around with them by simply coping the url, selecting open url from the file menu, and pasting the url into the provided field.
It is important to reiterate that the standardization of the projectdata file is still a work in progress.
As our community grows, its logic and standardization will improve
For the moment, this means we simply need to build the file in the same way as I have done, so that the automatic scripts will still work, even if this is not always the best way.
What's exciting about the prospect of working together, is that as we had more data, we discover more flaws or bugs in the system and logic, and then improve it together.
The header is not something you need to be too worried about. Its function is simply to collect metadata about this text that helps us link the text to its parent work group, to its author, and to the various witnesses to the text.
This is simply the body tag that will contain your table of contents. (In the future, this mostly likely be changed to simply <body>.)
Within this body tag, there are two main divisions you can make: Items and Divisions.
Items are the privileged divisions in your text. In the case of the Peter of Spain Tractatus, these seem to be Tractatus 1, Tractatus 2, etc, etc.
Items will correspond to the file divisions of your text. We expect there to be a separate directory and file for each section of the text that is identified as an Item. If your text is very small, it is possible that you will only have one Item. But in very large texts, it is extremely helpful to be able to break the text up into multiple files.
Even though Items are privileged sections, it is also quite possible that these sections should be grouped into larger Divisions.
This is very common in Sentences Commentaries, where questions are grouped within distinction Divisions, and distinction Divisions are grouped with book Divisions.
The hasWitnesses section is designed to tell us whether or not a particular Item appears in a particular manuscript. The folio references go further to tell us on what folios this section of the text falls.
It is this data that allows us to build a table of contents for each manuscript as well as for the text as a whole.
We can visualize what this data looks like at http://scta.info.
We can see this data being put to work at http://scta.lombardpress.org
We can see this data being put to work at http://mirador.scta.info


Bournemouth ends goal drought with 1-0 win over Man United
BOURNEMOUTH, England (AP) - Bournemouth beat Manchester United 1-0 in the Premier League on Saturday to increase the pressure on United manager Ole Gunnar Solskjaer.
Bournemouth climbed above midtable United with the win, which was sealed by Joshua King’s strike shortly before halftime - his club’s first goal since September.
The United defense allowed King plenty of time to control Adam Smith’s cross with his chest, flick the ball over his head and knock it through David De Gea’s legs.
After United missed chances to level in an even second half, Solskjaer suggested his squad hadn’t been good enough to compete.
“I thought the response second half, at least we went for it,” said Solskjaer.
“We didn’t stop trying but it was the lack of quality that couldn’t give us the point or three.
“We need a response because games like this you need to win if you want to challenge for the top four and today we’re disappointed.”
United’s defense was slow to react again in the 74th, when De Gea dived at full stretch to push Harry Wilson’s shot wide.
United surged forward in the final 10 minutes but couldn’t come closer than Mason Greenwood hitting the post in the 83rd. Shortly after, goalkeeper Aaron Ramsdale showed good reactions to save a shot from Scott McTominay.
Defeat in pouring rain on England’s south coast ended a recent resurgence for United. It had won its last three games, but has now also failed to win five of its last six league games.
United is three points behind Bournemouth.
King’s strike was Bournemouth’s first league goal since the 2-2 draw with West Ham on Sept. 28. The Cherries are looking to recover some of their strong early-season form after a five-game winless run in all competitions.
More AP soccer: https://apnews.com/Soccer and https://twitter.com/AP_Sports
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


{% extends "base.html" %} {% block title %}Reject Application{% endblock %} {% block content %}
Fill in the rejection reason below, please note, this will be sent out to the user.


{% extends '_base.html' %} {% load render_table from django_tables2 %} {% load form_helpers %} {% block title %}Zone Import{% endblock %} {% block content %}
| Field | Description | Example |
|---|---|---|
| Name | Name of zone | foo.net |
| TTL | Time to live, in seconds | 10800 |
| SOA Name | The primary name server for the domain, @ for origin | @ |
| SOA Contact | The responsible party for the domain | ns.foo.net. noc.foo.net. |
| SOA Refresh | Refresh time, in seconds | 3600 |
| SOA Retry | Retry time, in seconds | 3600 |
| SOA Expire | Expire time, in seconds | 604800 |
| SOA Minimum | Negative result TTL, in seconds | 1800 |
| Extra Conf | Extra conf related to the zone, to put in your DNS server main conf file | "notify: <IP_ADDRESS> NOKEY\nprovide-xfr: <IP_ADDRESS> NOKEY" |
| Description | Description (optional) | Mail servers zone |
foo.net,10800,@,ns.foo.net. noc.foo.net.,3600,3600,604800,1800,"notify: <IP_ADDRESS> NOKEY\nprovide-xfr: <IP_ADDRESS> NOKEY",Mail servers zone


Iran's Revolutionary Guards arrest about 100 protest leaders: Iranian judiciary
GENEVA (Reuters) - Iran’s Revolutionary Guards have arrested about 100 leaders of protests that erupted last week over gasoline price rises, Gholamhossein Esmaili, spokesman for Iran’s judiciary, said on Friday according to the official IRNA news agency.
“Approximately 100 leaders, heads and main figures of the recent unrest were identified and arrested in various parts of the country by the Islamic Revolutionary Guards Corps,” Esmaili said.
Iranian authorities have said about 1,000 demonstrators have been arrested.
Anyone who created insecurity or damaged public property will face “severe punishment”, the head the judiciary, Ebrahimi Raisi, said on Friday, according to Mizan, the news site of the judiciary.
A large number of people arrested who had taken part in the protests but did not take part in causing damage or setting fires have been released, judiciary spokesman Esmaili said, according to Mizan.
The Guards said calm had returned across Iran on Thursday, state TV reported. Amnesty International said more than 100 demonstrators had been killed by the security forces, a figure rejected as “speculative” by the government.
Protests began on Nov. 15 in several towns after the government announced gasoline price hikes of at least 50%. They spread to 100 cities and towns and quickly turned political with protesters demanding top officials step down.
State TV showed thousands marching in pro-government rallies in about half a dozen cities on Friday.


Comparing Websites
For my first blog post I'll be comparing three of my favorite websites: Amazon, Pandora, and Fitday.
First up - Amazon.com
I'm not much of a shopper. Neither is my wife. I like to say we're "thrifty" and I'm sometimes tempted to become a hardcore minimalist... but whoa mama, I love buying stuff (occasionally) on Amazon.com! Primarily, I love that I can find used items online for less money than what I'd normally pay for new items in the store. The large number of user reviews and ratings on Amazon are a real gold mine as well. Without user reviews I'd have a much harder time figuring out what to buy.
A bonus to Amazon is that it has a simple, clean design that's easy to navigate. The home page has ads and deals as the main feature, which is all right, but my eye quickly scans past that and up to the search field, which is where I really want to go. Amazon makes it so easy to find what I'm looking for; I can't help but buy stuff through them. They don't always have the best prices on items compared to other sites, but the ease of use and shear volume of items they sell win me over almost every time.
Amazon's content and design is successful because they give the user what they want: lots of features, but simple design and navigation.  Aside from shopping, however, if I have a question about my account, often times I do a Google search rather than search on browsing Amazon's website.
Next up is Pandora.com
Like most human beings, music stirs my soul. I first learned about Pandora back in 2008 while starting a new job as a render wrangler working graveyard shift. I did a Google search for "internet radio" and Pandora popped up. At first I was confused by what it claimed it would do for my listening experience, but it didn't take long for its grandeur to be revealed and I was hooked. For anyone not familiar with Pandora, it lets you create multiple music stations based on a genre, artist, or album. It will find songs that are a match to your criteria, and also play related artists and styles. Much of my favorite music today was introduced to me through Pandora.
Pandora also has a simple and easy to navigate layout. The first two things that stand out when I login are the album cover of the current song and the play controls right above it. To me these are the most important parts of the site, and kudos to them for making them the most important visually. Now, there is one "pesky" thing about Pandora and that's the ads! I know I can pay to get rid of the ads, but since I'm "thrifty" I'm willing to listen to their advertising. It doesn't really bother me anyway since the ads are brief and not too frequent. I've never actually purchased music through Pandora, so they need to get their money's worth out me somehow. Usually I only listen to music when I'm working at my desk, and I enjoy listening to variety more than a predetermined library of songs anyway, so it's never made sense to buy it.
Another awesome thing about Pandora is that I can read more about the artist I'm listening to right on the site, and also find other albums they've created. Once I'm done reading I can easily find way my back to the song that is "Now Playing" by using the navigation bar at the top of the content window. I always walk away from Pandora feeling edified or motivated by the music I've listened to. Truly a remarkable site - life changing in some ways.
Lastly, there's Fitday.com
I discovered Fitday around the same time I discovered Pandora. After getting married I put on a few pounds and it occurred to me there might be a web app that could help me count calories. I've never been a fan of diets, so I was looking for something that didn't seem gimmicky. I tried out several sites, but Fitday won out over the rest of them for several reasons. Fitday's tools were easier for me to access, it allowed me to enter all of my food in grams (unlike any other site I tried), and it had lots of easy to understand reports and graphs. At first, I tracked just about everything. I tracked all of my physical activities and calories so I could see how many calories I was burning, and predict how much weight I would lose in a give week. I must say it worked remarkably well. I lost 65Lbs and felt great. Six years later I still use the site, but with varied success.
Now I must note, my comments on Fitday are based on Fitday Classic. A couple of years ago, there was a redesign of Fitday, called Fitday 2. I try using 2.0 every so often, but always revert to Classic. My main beef with Fitday 2 is that in spite of the cleaner, newer look, it takes me more time to enter my calorie information. In this case, speed and ease of use win out over design. Fitday Classic lets me see a list of all of my entered foods from the past couple of weeks, and check a box next to all of the foods I'll be eating for the current day. After these are checked I hit a button that lets me add all of them to my current day's food log. It all loads up in one shot! Why can't I do that in Fitday 2!? Fitday 2 makes me add any recent food item one at a time, and I have to wait for each item to load. Tedious!
Back to the layout of Fitday Classic: when I first log in, the first thing I see is my food log. Perfect. If I want to review any of my goals or reports, they're all listed at the top in the navigation bar. My only complaint about the navigation bar is that there are too many tabs. Some of them are named too similarly and others seem ill placed. These problems have been fixed in Fitday 2, however since I use the food log more than anything else, I'm content living with the inferior navigation of Fitday Classic.
Like Pandora, since Fitday is free they have advertising. They also sell a PC version of the app, but reviews that I've read indicate there's nothing in the PC version worth bothering with that's not already in the online app. I can't stand the ads on Fitday. Half of the time it's bad cartoon drawings of fat bellies and thighs. Who wants to see that? Really guys? It annoyed me so much I run ad-block software on the site now.
I have a love-hate relationship with the site, beyond the ads and the Classic vs. Fitday 2 issue. When I'm making progress on my fitness and nutrition goals, I love it. When I'm falling short, the site just depresses me and I want to kick it to the curb. I keep coming back though - right now I love it since my fitness goals are on track. It really is a nice tool for losing weight. If you ask me again at Christmas time you might find it has fallen off of my top-three list.
In the end, I'm a believer in eating right and exercising regularly, and believe that you need to be very aware of what you're using to fuel your body. Calorie counting is a simple way to help train your habits.
In conclusion, websites are all at the top of my list primarily because of what they let me do. Shop for cool stuff easily and affordably, listen to my favorite and find new favorites, and keep my fitness goals on track. Usability and design heightens this experience. The site needs to be simple and easy to understand, and powerful enough to keep me engaged.


Inside London's Billionaires Row: A steel tycoon's 'Summer Palace' with 12 bathrooms and a basement pool, Business Insider - Business Insider Singapore
by Bill Bostock- A mile-long road in London has been the city’s Billionaires Row since World War II: the capital’s destination for luxury, scandal, murder, and secrecy.
- Steel tycoon Lakshmi Mittal scooped up the Summer Palace in 1996 with cash from his 38% share in ArcelorMittal, the world’s biggest steelmaker, of which he is also CEO.
- The Summer Palace has 12 bathrooms, six reception rooms, and a basement with a swimming pool, jacuzzi and steam room, accessed by a glass elevator.
- This post is part of an interactive series by Insider profiling Billionaires Row.
Lakshmi Mittal was named as the UK’s fifth-richest man in 2018, with a net worth of nearly £16 billion ($20.5 billion) accrued from his role as CEO of ArcelorMittal, the world’s biggest steelmaker.
And one of the ways he put his wealth to use was acquiring a 25,000 sq-ft, 11-bedroom mansion on The Bishops Avenue – London’s Billionaires Row.
He bought the lavish home, nicknamed Summer Palace, in 1996 for £7 million ($11 million.)
It has 12 bathrooms and six reception rooms.
It has two staff apartments on its first floor, each of which have three bedrooms of their own.
When Mittal wanted to sell in the early 2000s he struggled to find a buyer and spent several years renting it out at £10,000 ($16,000) a week.
Mittal had reportedly decided to sell his Summer Palace because Barnet Council, the local authority, had granted permission to redevelop a neighboring mansion into luxury apartments which would overlook his garden.
While Mittal was trying to shift the Summer Palace in 2004, he bought Formula 1 founder Bernie Ecclestone’s £57 million ($105 million) 15-bedroom townhouse on Kensington Palace Gardens, a street just west of central London known for housing embassies.
The same year, Mittal splashed £30 million ($55 million) on his 23-year-old daughter’s 2004 wedding, booking out the 17th-century Vaux le Vicomte palace a few miles south of Paris.
On July 6, 2011, the Summer Palace was finally sold for £36 million ($57 million) to an unnamed eastern European oligarch.
The official owners, Kerner Limited, immediately filed planning permission to add a second basement with a relaxation area for staff, new storage space, and a security control room to monitor CCTV cameras.
As with many of the homes on The Bishops Avenue, the owner is a company registered in a tax haven.
In this case Kerner Limited are based in Jersey, which has no capital gains tax, a low goods tax, and low stamp duty.
- Read more:
- The cavernous mansion once owned by the Saudi royal family, left to rot, and now home to squatters and dead mice
- The grand home of Britain’s first porn baron, who quit school at 15, built a media empire, then sold it
- The Russian financier’s home hit by one of the city’s most lucrative burglaries then ravaged by fire
- Salman Rushdie’s one-time fortified safe house at 9 The Bishops Avenue
- Heath Hall, the mansion-for-hire that Justin Bieber rented for $140,000 a month
- This garish mansion has hosted Mikhail Gorbachev and Simon Cowell and was once Britain’s most expensive home
- Greek fashion tycoon’s home that became a Reddit-famous murder scene on New Year’s Day 1985


{% extends "base.html" %} {% block title %}
Medieval catalogues > CARTHUSIANS > London > Loans to Coventry, 1500
{% endif %}12 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


{% extends 'base_template.html' %} {% load crispy_forms_tags %} {% block content %}
Your account doesn't have access to this page. To proceed please login with an account that has access.
{% else %}Please login to view this page.
{% endif %}Your username and password didn't match. Please try again


|
retinanet-cell-detection
1
retinanet-cell-detection: RetinaNet for cell detection.
|
Functions | |
| def | draw_cross (image, box, color=(0, 255, 0), thickness=1, size=3) |
| def | draw_box (image, box, color, thickness=2) |
| def | draw_caption (image, box, caption) |
| def | draw_boxes (image, boxes, color, thickness=2) |
| def | draw_detections (image, boxes, scores, labels, color=None, label_to_name=None, score_threshold=0.5) |
| def | draw_annotations (image, annotations, color=(0, 255, 0), label_to_name=None) |
| def mynet_ssd_dt-aug.utils.visualization.draw_annotations | ( | image, | |
| annotations, | |||
color = (0, 255, 0) , |
|||
label_to_name = None |
|||
| ) |
Draws annotations in an image. # Arguments image : The image to draw on. annotations : A [N, 5] matrix (x1, y1, x2, y2, label) or dictionary containing bboxes (shaped [N, 4]) and labels (shaped [N]). color : The color of the boxes. By default the color from keras_retinanet.utils.colors.label_color will be used. label_to_name : (optional) Functor for mapping a label to a name.
| def mynet_ssd_dt-aug.utils.visualization.draw_box | ( | image, | |
| box, | |||
| color, | |||
thickness = 2 |
|||
| ) |
Draws a box on an image with a given color. # Arguments image : The image to draw on. box : A list of 4 elements (x1, y1, x2, y2). color : The color of the box. thickness : The thickness of the lines to draw a box with.
| def mynet_ssd_dt-aug.utils.visualization.draw_boxes | ( | image, | |
| boxes, | |||
| color, | |||
thickness = 2 |
|||
| ) |
Draws boxes on an image with a given color. # Arguments image : The image to draw on. boxes : A [N, 4] matrix (x1, y1, x2, y2). color : The color of the boxes. thickness : The thickness of the lines to draw boxes with.
| def mynet_ssd_dt-aug.utils.visualization.draw_caption | ( | image, | |
| box, | |||
| caption | |||
| ) |
Draws a caption above the box in an image. # Arguments image : The image to draw on. box : A list of 4 elements (x1, y1, x2, y2). caption : String containing the text to draw.
| def mynet_ssd_dt-aug.utils.visualization.draw_cross | ( | image, | |
| box, | |||
color = (0, 255, 0) , |
|||
thickness = 1 , |
|||
size = 3 |
|||
| ) |
Draws a cross on an image with a given color. # Arguments image : The image to draw on. box : A list of 4 elements (x1, y1, x2, y2). color : The color of the cross. thickness : The thickness of the lines to draw a cross with.
| def mynet_ssd_dt-aug.utils.visualization.draw_detections | ( | image, | |
| boxes, | |||
| scores, | |||
| labels, | |||
color = None , |
|||
label_to_name = None , |
|||
score_threshold = 0.5 |
|||
| ) |
Draws detections in an image. # Arguments image : The image to draw on. boxes : A [N, 4] matrix (x1, y1, x2, y2). scores : A list of N classification scores. labels : A list of N labels. color : The color of the boxes. By default the color from keras_retinanet.utils.colors.label_color will be used. label_to_name : (optional) Functor for mapping a label to a name. score_threshold : Threshold used for determining what detections to draw.


{% extends '_layouts/layout.html' %} {% block page_title %}{% endblock %} {% block body_css_classes %}nhs-redesign{% endblock %} {% block content %}
{{ error.summary | safe }}
Tell us where you are now to get help in that area.
I don’t know the postcode


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


| Class and Description |
|---|
| DOMErrorHandlerWrapper
This class handles DOM errors .
|
| ParserConfigurationSettings
This class implements the basic operations for managing parser
configuration features and properties.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| Class and Description |
|---|
| MessageFormatter
This interface provides a generic message formatting mechanism and
is useful for producing messages that must be localized and/or formatted
with replacement text.
|
| SecurityManager
This class is a container for parser settings that relate to
security, or more specifically, it is intended to be used to prevent denial-of-service
attacks from being launched against a system running Xerces.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| URI
A class to represent a Uniform Resource Identifier (URI).
|
| URI.MalformedURIException
MalformedURIExceptions are thrown in the process of building a URI
or setting fields on a URI when an operation would result in an
invalid URI specification.
|
| XMLAttributesImpl
The XMLAttributesImpl class is an implementation of the XMLAttributes
interface which defines a collection of attributes for an element.
|
| XMLResourceIdentifierImpl
The XMLResourceIdentifierImpl class is an implementation of the
XMLResourceIdentifier interface which defines the location identity
of a resource.
|
| XMLStringBuffer
XMLString is a structure used to pass character arrays.
|
| Class and Description |
|---|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| XMLResourceIdentifierImpl
The XMLResourceIdentifierImpl class is an implementation of the
XMLResourceIdentifier interface which defines the location identity
of a resource.
|
| Class and Description |
|---|
| SymbolHash
This class is an unsynchronized hash table primary used for String
to Object mapping.
|
| Class and Description |
|---|
| SymbolHash
This class is an unsynchronized hash table primary used for String
to Object mapping.
|
| Class and Description |
|---|
| MessageFormatter
This interface provides a generic message formatting mechanism and
is useful for producing messages that must be localized and/or formatted
with replacement text.
|
| Class and Description |
|---|
| MessageFormatter
This interface provides a generic message formatting mechanism and
is useful for producing messages that must be localized and/or formatted
with replacement text.
|
| Class and Description |
|---|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| Class and Description |
|---|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| Class and Description |
|---|
| AugmentationsImpl
This class provides an implementation for Augmentations interface.
|
| IntStack
A simple integer based stack.
|
| MessageFormatter
This interface provides a generic message formatting mechanism and
is useful for producing messages that must be localized and/or formatted
with replacement text.
|
| NamespaceSupport
Namespace support for XML document handlers.
|
| SymbolHash
This class is an unsynchronized hash table primary used for String
to Object mapping.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| XMLResourceIdentifierImpl
The XMLResourceIdentifierImpl class is an implementation of the
XMLResourceIdentifier interface which defines the location identity
of a resource.
|
| Class and Description |
|---|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| Class and Description |
|---|
| ParserConfigurationSettings
This class implements the basic operations for managing parser
configuration features and properties.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| Class and Description |
|---|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| Class and Description |
|---|
| SymbolHash
This class is an unsynchronized hash table primary used for String
to Object mapping.
|
| XMLGrammarPoolImpl
Stores grammars in a pool associated to a specific key.
|
| Class and Description |
|---|
| DOMErrorHandlerWrapper
This class handles DOM errors .
|
| NamespaceSupport
Namespace support for XML document handlers.
|
| ParserConfigurationSettings
This class implements the basic operations for managing parser
configuration features and properties.
|
| SymbolHash
This class is an unsynchronized hash table primary used for String
to Object mapping.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| SynchronizedSymbolTable
Synchronized symbol table.
|
| XMLGrammarPoolImpl
Stores grammars in a pool associated to a specific key.
|
| Class and Description |
|---|
| SoftReferenceSymbolTable.SREntry
This class is a symbol table entry.
|
| SymbolHash
This class is an unsynchronized hash table primary used for String
to Object mapping.
|
| SymbolHash.Entry
This class is a key table entry.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| SymbolTable.Entry
This class is a symbol table entry.
|
| URI
A class to represent a Uniform Resource Identifier (URI).
|
| URI.MalformedURIException
MalformedURIExceptions are thrown in the process of building a URI
or setting fields on a URI when an operation would result in an
invalid URI specification.
|
| XMLGrammarPoolImpl.Entry
This class is a grammar pool entry.
|
| XMLResourceIdentifierImpl
The XMLResourceIdentifierImpl class is an implementation of the
XMLResourceIdentifier interface which defines the location identity
of a resource.
|
| Class and Description |
|---|
| IntStack
A simple integer based stack.
|
| MessageFormatter
This interface provides a generic message formatting mechanism and
is useful for producing messages that must be localized and/or formatted
with replacement text.
|
| NamespaceSupport
Namespace support for XML document handlers.
|
| ParserConfigurationSettings
This class implements the basic operations for managing parser
configuration features and properties.
|
| SecurityManager
This class is a container for parser settings that relate to
security, or more specifically, it is intended to be used to prevent denial-of-service
attacks from being launched against a system running Xerces.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| URI.MalformedURIException
MalformedURIExceptions are thrown in the process of building a URI
or setting fields on a URI when an operation would result in an
invalid URI specification.
|
| XMLLocatorWrapper
A light wrapper around an
XMLLocator . |
| Class and Description |
|---|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
| Class and Description |
|---|
| NamespaceSupport
Namespace support for XML document handlers.
|
| SymbolTable
This class is a symbol table implementation that guarantees that
strings used as identifiers are unique references.
|
Copyright © 2021. All rights reserved.


jquery-eclipsefdn-api
Christopher Guindon
|
@chrisguindon
Some assets for this demo are protected by
Cross-Origin Resource Sharing (CORS)
and won't load.
Gerrit
Bugzilla
Wiki
Forums
Marketplace
Github
Coming soon!
Statistics
Marketplace
Bugzilla
N/A
Wiki
N/A
Forums
N/A
Github
N/A
Gerrit
N/A
Events
Loading


Learn how to build dynamic apps
Run by TXT and volunteers from the USC Iovine and Young Academy, Leadership Computer Science (Lead CS) introduces middle school boys of color to computer science, entrepreneurship, and tech careers. Come learn how to build your own app on a college campus with state-of-the-art tech equipment. Our students make real-world, hands-on tech projects for their friends, families, and communities. You too can become a tech entrepreneur and earn prizes for your great idea.


{% extends "base.html" %} {% block style %} li span.date { color: #999; } {% endblock style %} {% block breadcrumbs %}{{ super() }} › Bill Tracker › The Week In Legislature{% endblock breadcrumbs %} {% block content %}
A round-up of what happened to which legislation in Colorado's state legislature for the week ending {{response.issue_date|date_raw|datetimeformat}}.
{% if response.prev_next[0] %} PREVIOUS: See {{response.prev_next[0]|date_raw|datetime_filter}}'s week in review. {% endif %} {% if response.prev_next[1] %} NEXT: See {{response.prev_next[1]|date_raw|datetime_filter}}'s week in review. {% endif %}
{% if response.news %}No legislation signed into law this week.
{% endif %}No legislation passed the Colorado State House this week.
{% endif %}No legislation passed the Colorado State Senate this week.
{% endif %}See all the legislation that have been introduced this session
{% else %}No legislation introduced this week.
{% endif %}See all of the current session's bills.
{# {u'title': u'Sentencing For Certain 2nd Degree Assaults', u'created_at': u'2015-03-24 21:28:11', u'updated_at': u'2015-10-07 12:07:47', u'id': u'COB00003396', u'chamber': u'lower', u'state': u'co', u'session': u'2015A', u'type': [u'bill'], u'subjects': [], u'bill_id': u'HB 15-1303'} #}{% if response.prev_next[0] %} PREVIOUS: See {{response.prev_next[0]|date_raw|datetime_filter}}'s week in review. {% endif %} {% if response.prev_next[1] %} NEXT: See {{response.prev_next[1]|date_raw|datetime_filter}}'s week in review. {% endif %}
{% endblock content %}


A web with web fonts is more beautiful, readable, accessible and open.
Google Fonts makes it quick and easy for everyone to use web fonts, including
professional designers and developers. We believe that everyone should be able
to bring quality typography to their web pages and applications.
Our goal is to create a directory of web fonts for the world to use. Our API service
makes it easy to add Google Fonts to a website in seconds. The service runs on
Google’s servers which are fast, reliable and tested. Google provides this service
free of charge.
All of the fonts are Open Source. This means that you are free to share your favorites
with friends and colleagues. You can even customize them for your own use,
or collaborate with the original designer to improve them. And you can use them
in every way you want, privately or commercially — in print, on your computer,
or in your websites.


Interfacing with WhiteboxTools using Python scripting
- Using the whitebox_tools.py script
- Handling tool output
- Additional functions in whitebox_tools.py
- An example WhiteboxTools Python project
WhiteboxTools provides an elegant and powerful Python-based interface that allows for easy workflow automation of common geoprocessing tasks. This interface with the WhiteboxTools stand-alone executable is contained within the whitebox_tools.py script. Let's look at this Python programmer interface in this tutorial.
The following material has been extracted from the WhiteboxTools User Manual, which can be found in pdf form along with the download.
By combining the WhiteboxTools library with a high-level scripting language, such as Python, users are capable of creating powerful stand-alone geospatial applications and workflow automation scripts. In fact, WhiteboxTools functionality can be called from many different programming languages. However, given the prevalent use of the Python language in the geospatial fields, the library is distributed with several resources specifically aimed at Python scripting. This section focuses on how Python programming can be used to interact with the WhiteboxTools library.
Note that all of the following material assumes the user system is configured with Python 3. The code snippets below are not guaranteed to work with older versions of the language.
Using the whitebox_tools.py script
Interacting with WhiteboxTools from Python scripts is
easy. To begin, each script must start by importing the WhiteboxTools
class, contained with the whitebox_tools.py script; a new
WhiteboxTools
object can then be created:
from WBT.whitebox_tools import WhiteboxTools
wbt = WhiteboxTools()
Depending on the relative location of the WhiteboxTools directory
and the script file that you are importing to, the import statement may
need to be altered slightly. In the above script, it is assumed that the
folder containing the WhiteboxTools files (including the whitebox_tools
Python script) is named WBT
(Line 1) and that
the calling script is located in the parent directory of WBT
.
See
An Example WhiteboxTools Python Project for more details on project
set-up. The use of wbt
to designate the WhiteboxTools
object variable in the above script (Line 3) is just the convention
used in this manual and other project resources. In fact, any variable
name can be used for this purpose.
The WhiteboxTools
class expects to find
the WhiteboxTools executable file (whitebox_tools.exe on Windows
and whitebox_tools on other platforms) within the same directory
(WBT
) as the whitebox_tools.py script. If the binary
file is located in a separate directory, you will need to set the
executable directory as follows:
wbt.set_whitebox_dir('/local/path/to/whitebox/binary/')
# Or alternatively...
wbt.exe_path = '/local/path/to/whitebox/binary/'
Individual tools can be called using the convenience
methods provided in the WhiteboxTools
class:
# This line performs a 5 x 5 mean filter on 'inFile.tif':
wbt.mean_filter('/file/path/inFile.tif', '/file/path/outFile.tif', 5, 5)
Each tool has a cooresponding convenience method.
The listing of tools in this manual includes information about each
tool's Python convienience method, including default parameter values.
Parameters with default values may be optionally left off of function
calls. In addition to the convenience methods, tools can be called using
the run_tool()
method, specifying the tool name and a
list of tool arguments. Each of the tool-specific convenience methods
collect their parameters into a properly formated list and then
ultimately call the run_tools()
method. Notice that
while internally whitebox_tools.exe uses CamelCase
(e.g. MeanFilter) to denote tool names, the Python interface of
whitebox_tools.py uses snake_case (e.g. mean_filter),
according to Python style conventions. The only exceptions are tools
with names that clash with Python keywords (e.g. And()
,
Not()
, and Or()
).
The return value can be used to check for errors during operation:
if wbt.ruggedness_index('/path/DEM.tif', '/path/ruggedness.tif') != 0:
# Non-zero returns indicate an error.
print('ERROR running ruggedness_index')
If, like me, your data files tend to be burried deeply in layers of sub-directories, specifying complete file names as input parameters can be tedius. In this case, the best option is setting the working directory before calling tools:
from whitebox_tools import WhiteboxTools
wbt = WhiteboxTools()
wbt.work_dir = "/path/to/data/" # Sets the Whitebox working directory
# Because the working directory has been set, file arguments can be
# specified simply using file names, without paths.
wbt.d_inf_flow_accumulation("DEM.tif", "output.tif", log=True)
An advanced text editor, such as VS Code or Atom, can provide hints and autocompletion for available tool convenience methods and their parameters, including default values (see below).
Sometimes it can be useful to print a complete list of available tools:
print(wbt.list_tools()) # List all tools in WhiteboxTools
The list_tools()
method also takes an
optional keywords list to search for tools:
# Lists tools with 'lidar' or 'LAS' in tool name or description.
print(wbt.list_tools(['lidar', 'LAS']))
To retrieve more detailed information for a specific tool,
use the tool_help()
method:
print(wbt.tool_help("elev_percentile"))
tool_help()
prints tool details including
a description, tool parameters (and their flags), and example usage at
the command line prompt. The above statement prints this report:
ElevPercentile
Description:
Calculates the elevation percentile raster from a DEM.
Toolbox: Geomorphometric Analysis
Parameters:
Flag Description
----------------- -----------
-i, --input, --dem Input raster DEM file.
-o, --output Output raster file.
--filterx Size of the filter kernel in the x-direction.
--filtery Size of the filter kernel in the y-direction.
--sig_digits Number of significant digits.
Example usage:
>>./whitebox_tools -r=ElevPercentile -v --wd="/path/to/data/" --dem=DEM.tif
>>-o=output.tif --filterx=25
A note on default parameter values
Each tool contains one or more parameters with default values. These will always be listed after any input parameters that do not have default values. You do not need to specify a parameter with a default value if you accept the default. That is, unless you intend to specify an input value different from the default, you may leave these parameters off of the function call. However, be mindful of the fact that Python assigns values to parameters based on order, unless parameter names are specified.
Consider the Hillshade tool as an example. The User Manual gives the following function definition for the tool:
hillshade(
dem,
output,
azimuth=315.0,
altitude=30.0,
zfactor=1.0,
callback=default_callback)
The dem
and output
parameters do not have
default values and must be specified every time you call this function.
Each of the remaining parameters have default values and can, optionally,
be left off of calls to the hillshade
function. As an
example, say I want to accept the default values for all the parameters
except altitude
. I would then need to use the named-parameter
form of the function call:
wbt.hillshade(
"DEM.tif",
"hillshade.tif",
altitude=20.0)
If I hadn't specified the parameter name for altitude
,
Python would have assumed that the value 20.0 should be assigned to
the third parameter, azimuth
.
Handling tool output
Tools will frequently print text to the standard
output during their execution, including warnings, progress updates and
other notifications. Sometimes, when users run many tools in complex
workflows and in batch mode, these output messages can be undesirable.
Most tools will have their outputs suppressed by setting the verbose mode
to False
as follows:
wbt.set_verbose_mode(False)
# Or, alternatively...
wbt.verbose = False
Alternatively, it may be helpful to capture the text output of a tool for custom processing. This is achieved by specifying a custom callback function to the tool's convenience function:
# This callback function suppresses printing progress updates,
# which always use the '%' character. The callback function
# approach is flexible and allows for any level of complex
# interaction with tool outputs.
def my_callback(value):
if not "%" in value:
print(value)
wbt.slope('DEM.tif', 'slope_raster.tif', callback=my_callback)
Every convienience function takes an optional callback as the last parameter. The default callback simply prints tool outputs to the standard output without any additional processing. Callback functions can serve as a means of cancelling operations:
def my_callback(value):
if user_selected_cancel_btn: # Assumes a 'Cancel' button on a GUI
print('Cancelling operation...')
wbt.cancel_op = True
else:
print(value)
wbt.breach_depressions('DEM.tif', 'DEM_breached.tif', callback=my_callback)
Additional functions in whitebox_tools.py
The whitebox_tools.py script provides several other functions for interacting with the WhiteboxTools library, including:
# Print the WhiteboxTools help...a listing of available commands
print(wbt.help())
# Print the WhiteboxTools license
print(wbt.license())
# Print the WhiteboxTools version
print("Version information: {}".format(wbt.version()))
# Get the toolbox associated with a tool
tb = wbt.toolbox('lidar_info')
# Retrieve a JSON object of a tool's parameters.
tp = tool_parameters('raster_histogram')
# Opens a browser and navigates to a tool's source code in the
# WhiteboxTools GitHub repository
wbt.view_code('watershed')
For a working example of how to call functions and run tools from Python, see the whitebox_example.py Python script, which is distributed with the WhiteboxTools library.
An example WhiteboxTools Python project
In this section, we will create a Python project that utilizes the WhiteboxTools library to interpolate a LiDAR point-cloud, to process the resulting digital elevation model (DEM) to make it suitable for hydrological applications, and to perform a simple flow-accumulation operation. I suggest using an advanced coding text editor, such as Visual Studio Code or Atom, for this tutorial, but Python code can be written using any basic text editor.
Begin by creating a dedicated project directory called FlowAccumExample and copy WhiteboxTools binary file (i.e. the compressed file downloaded from here) into this folder. Using the decompression software on your computer, decompress (i.e. an operation sometimes called unzipping) the file into the newly created FlowAccumExample directory. You will find the compressed file contains a folder with contents similar to the following:
The folder contains a number of files, including the
WhiteboxTools executable file, the whitebox_tools.py python
script, the WhiteboxTools Runner (wb_runner.py), and the user
manual. It is likely that the folder has a name that reflects the
operating system and architecture that the binary file was compiled for
(e.g. WhiteboxTools_darwin_amd64). Rename this directory to WBT
.
Also note, depending on your decompression software, it may be the case
that the contents of the WBT
folder itself contains a sub-directory
that actually holds these files. If this is the case, be sure to move
the contents of the sub-directory into the WBT
parent directory.
Using your text editor, create a new Python script
file, called FlowAccumulation.py within the FlowAccumExample
directory. We will begin by importing the WhiteboxTools
class from the whitebox_tools.py script contained within the
WBT
sub-directory. Unfortunately, Python's module system is
only able to import classes and function definitions declared in external
Python scripts if these external files are contained somewhere
on the Python path or in the directory containing the script file into
which you are importing. This is important because based on
the project structure that we have established, the whitebox_tools.py
script is actually contained within a sub-directory of the
FlowAccumExample directory and is therefore not directly
accessible, unless you have previously installed the script on the Python
path. Another, perhaps easier solution to this problem is to create a
file named __init__.py (those are two leading and trailing
underscore characters) within the FlowAccumExample directory.
The presence of this empty file will make Python treat the WBT
directory as containing packages, in this case, the whitebox_tools
package. For more information, see the Python documentation on
modules and packages.
At this stage, you should have a project directory structure like that of the following:
Many operating systems will disallow the execution of files that are downloaded directly from the Internet. As such, it is possible that you will need to explicitly give the whitebox_tools.exe permission to execute on your computer (Note: here we are referring to the compiled WhiteboxTools binary file and not the similarly named Python script whitebox_tools.py also contained in the folder). The procedure for doing this depends on your specific operating system. On MacOS, for example, this is usually achieved using the 'Security & Privacy' tab under 'System Preferences'. To test whether whitebox_tools.exe has permission to run on your system, double-click the file. If the file is configured to execute, a command terminal will automatically open and the WhiteboxTools help documentation and a listing of the available tools will be printed. If this does not occur, you likely need to give the file permission to execute.
Using your text editor, you may now add the following lines to the FlowAccumulation.py file:
from WBT.whitebox_tools import WhiteboxTools
wbt = WhiteboxTools()
In the import statement, WBT
is a
reference to the package folder containing the WhiteboxTools files;
whitebox_tools
is a reference to the whitebox_tools.py
script contained with this package folder; and WhiteboxTools
is a reference to the WhiteboxTools class contained within this
script file. Please note that if you named your directory containing
the WhiteboxTools files something other than WBT
, you would
need to alter the import statement accordingly.
Visit the Geomorphometry and Hydrogeomatics Research Group WhiteboxTools Downloads website and download the St. Elis Mountains and Gulf of Alaska sample data set (StElisAk.las). This file contains a LiDAR point cloud that has been previously filtered to remove points associated with non-ground returns, mainly trees. Create a sub-directory within the project folder called 'data' and copy StElisAk.las into the folder.
Now we can complete our flow accumulation analysis with the following code:
import os
from WBT.whitebox_tools import WhiteboxTools
wbt = WhiteboxTools()
# Set the working directory, i.e. the folder containing the data,
# to the 'data' sub-directory.
wbt.work_dir = os.path.dirname(os.path.abspath(__file__)) + "/data/"
# When you're running mulitple tools, the outputs can be a tad
# chatty. In this case, you may want to suppress the output by
# setting the verbose mode to False.
# wbt.verbose = False
# Interpolate the LiDAR data using an inverse-distance weighting
# (IDW) scheme.
print("Interpolating DEM...")
wbt.lidar_idw_interpolation(
i="StElisAk.las",
output="raw_dem.tif",
parameter="elevation",
returns="last",
resolution=1.0,
weight=1.0,
radius=2.5
)
# The resulting DEM will contain NoData gaps. We need to fill
# these in by interpolating across the gap.
print("Filling missing data...")
wbt.fill_missing_data(
i="raw_dem.tif",
output="dem_nodata_filled.tif",
filter=11
)
# This DEM will contain grid cells that have no lower neighbours.
# This condition is unsuited for flow-path modelling applications
# because these operations assume that each interior cell in the
# DEM has at least one downslope neighour. We'll use an operation
# called depression breaching to 'fix' the elevations within the
# DEM to enforce continuous flow.
print("Performing flow enforcement...")
wbt.breach_depressions(
dem="dem_nodata_filled.tif",
output="dem_hydro_enforced.tif"
)
# Lastly, perform the flow accumulation operation using the
# D-infinity flow algorithm.
print("Performing flow accumulation...")
wbt.d_inf_flow_accumulation(
dem="dem_hydro_enforced.tif",
output="flow_accum.tif",
log=True
)
print("Complete!")
To run the above script, open a terminal (command
prompt), cd
to the script containing folder, and run the following
command:
>>python FlowAccumulation.py
If Python 3 is not your default Python version,
substitute python3
for python
in the above
command line. The final D-infinity flow accumulation raster can be
displayed in any GIS software of choice and should look similar to
the following:


Presented by xyy
Today, we are gonna talk about the jQuery.
You need some HTML,CSS and JavaScript skills to be able to use jQuery effectively.


Have you ever heard “Done but not tested”, or “It is 80% done” for the past 3 weeks? How did that make you feel? If you are the individual asking you probably lost some trust amongst the team. And if you are the individual that was asked, you probably feel some frustration as you might not have a good idea as to what done is. So what does it mean to be done?
We all have a different meaning of what done and quality means, on top of that it could vary greatly based on industry and application. For instance, a website quality might mean it is visually appealing and meets user experience guidelines, where an internal application that is used by a handful of users might not have as strict of a guideline on the user interface. However, quality is defined for your product it has to be consistent. We can do this by creating a Definition of Done (DoD). The DoD is a contract of what quality means between the Scrum Team and the business.
When first creating a DoD for your product there are a couple of rules you should follow:
- Binary done or not done
- Detailed (Unit Tested instead of Tested)
- Quantified (80% Unit Tested)
- As detailed as possible
Your definition of done for a new team should start off small, and as the product grows your DoD should get more detailed and defined as well. For example, for a new product you might only have a few items on your DoD.
Example 1:
- Code is 80% Unit tested
- Meets all acceptance criteria
- Product Owner has reviewed it
- At the end of every sprint during the retrospective you should be reviewing your DoD and if needed modifying or adding to it. Over time that same DoD
- might look something like this:
Example 2:
- Code is 90% Unit tested
- Meets all acceptance criteria
- Product Owner has reviewed it
- All web pages’ load in under 3 seconds
- Web pages adhere to the Design Guide
- Functional tests are automated
- Deployed to the UAT environment
- Tested in the latest versions of Firefox, Chrome and Internet Explore
Watch out for too many items on your DoD, if you have say 50 items on there the chances of having the team go through each and making sure that they have meet them goes down. Also watch out for the team arguing over the same item on the DoD every time, chances are it is not defined enough.
Now that we have a Definition of Done and we have defined what quality means for our product we can move away from answers like “Done but not tested” or “Done,Done” to either “Done” or “Not Done”. Doing so will once again build trust between the Development team and the Business. By having a common understanding of what quality is. Plus this gives the business what they really wanted Done software.


A requirement is a statement that identifies a necessary capability, attribute, characteristic, or quality of a system for it have value and utility to a customer, organization or internal user. A requirement specification refers to an explicit set of requirements to be satisfied by a material, design, product, or service.


| Tags | self explorations, values |
When I'm feeling the happiest, the proudest, and the most satisfied, the following values come to mind: achievement, ambition, accomplishment, loyalty, freedom, confidence, inspiration, self-respect, and self-reliance. In general I definitely try to live up to these values to the best of my ability even when things seem to get hard. I think it is especially important to remember my values when I have a bad day and nothing seems to be going right. For example, if I am failing at multiple things in the same day and receive harsh criticism for it, it is important to take a step back and tell myself that I am a person of worth and I have the mental and physical stamina to pull through. I think that freedom is one of my most important values. I would hate to ever be caged like a bird and not be able to explore and learn new things at any time that I wanted. I want to be able to have the choice and mobility to learn as I please and move from place to place as I please. I think that this value helps me maintain a healthy mental state of mind.
The very last topic someone asked my advice on actually had to do with a popular video game called League of Legends. The person had asked me what the skill build order and itemization was for a particular champion and I went through it with him step by step so that he could have the most enjoyable experience out of the game he was playing. I think that this is relevant to my value of freedom because even though I am very busy these couple of weeks with work and learning Javascript while at DBC, I still have the freedom to talk about or get involved with my side interests and hobbies. There is no brick wall that stops me from still playing around with what makes me happy and I feel that this is very important.
I feel that I generally admire people who are self-confident, emotionally intelligent, hard working, and independent. These are the types of values that I like to have for myself also. I think that having these values will help pull me through any type of ordeal no matter what the stress level is or the amount of stereotype threat involved with it. At the end of the day, it's important to know that you are your own best friend and that no one will ever understand you better than yourself. So make sure that you treat yourself with respect and don't beat yourself up over something too harshly because you are the only one who will be there at the very end to pick yourself out of the mud and move on. I think that physical exercise in general is a good way to reduce feelings of stress or pull yourself out of some minor depression. Yoga is probably is a good way to reduce stress levels. Taking a short break and doing something that interests you for 15 minutes to half an hour before going back to work can also be a good way to feel better. I feel like the pomodoro technique can be applied here if something regularly stresses you out, you should take a 5 minute break after every 25 minutes of working on something or being somewhere so that you don't get burnt out.