I’m late to this game and missed the connection to the Baltimore late-90s noise scene. I spotted some odd wooden devices in the shop window of Patch Point a couple of years ago. Peter Blasser’s world of weird audio electronics has been seeping in ever since.
Of particular note are his ‘Paper Circuits’. Nothing fancy, no conductive ink, just a print at home substrate for poking and soldering components. They’re a low-cost, accessible entry point for making. Well sort of. They come with a level of esoteric symbolism to decipher. Still, it’s easy to get the hang of, and there’s enough online documentation.
I’ve been making the Lil’ Sidrassi; a noisily-wild touch interfaced synth. I’ve gone through several iterations; there’s some out in the wild amongst friends; I’ll share much more of this in the future. Unfortunately, Covid-19 lockdown has prevented me from launching a series of workshops. I’ll reassess when sensible/safe though.
Working on paper has given me a whole new relationship to building, tinkering, prototyping, and relating to my materials. Twisting, knotting, and threading component legs and wires feels closer to textiles. As great as this is, it’s also time-consuming. Building on paper takes longer than building on a Printed Circuit Board (PCB). There’s also more chance of crossed wires and less chance of durability. Transferring these paper circuits to PCB has benefits, especially if hoping to build at scale.
The final bit of pre-amble I wish to mention is working with PCB software. Briefly, my experiences have been less than positive. I’ve faced either a lack of features or bloated over-complexity for my needs—–the idea of ‘drawing’ my circuits appeals far more. Parts libraries are a bore and drawing my own, developing a more personal language, also appeals. Blasser’s paper circuits were all designed using (Mac only) Osmond PCB. I struggled to understand it at first. Taking Blasser’s freely published source files, I hoped to reverse engineer this process and learn how to do it myself.
I Don’t Have Time For All Of This
No worries, I’m sharing all of this work on GitLab - https://gitlab.com/tripping-on-wires/ciat-lonbarde-pcbs
Credit Where It’s Due
I go into more detail within the GitLab repo but thanks to: Peter Blasser/Ciat Lonbarde for publishing the source files; mlogger/mudlogger, Jason Taylor, and Phil Julian for instructions and advice; and the developers of Osmond PCB for their free software (donate if you can).
Tutorial
We’re going to use Osmond (make sure this is installed) to open Blasser’s paper circuit files and then we’re going to make some minor alterations to get them ready for PCB manufacture. I’m no expert, but this represents some basic functional knowledge I have picked up and which works for me.
Renaming and Opening the Files
First off, the files don’t have the needed .osm extension.
Rename, in finder, adding .osm at the end.
When prompted, click ‘add’, to add the extension.
If successful, the icon and preview will likely change.
Double click this, and it should open in Osmond (you did install that already didn’t you?).
It’s not essential, but I find it easier to set visibility of all layers to ‘No’. This way, you only see the active layer, and you can run through them to check things as you go.
Under the ‘View’ menu select ‘Layers Visible…’
In the popup menu, click all the layers to ‘No’ under ‘Visible’.
A note on Layers. In the bottom left corner, you can select the various layers. Here we have Auxiliary 1 and 2, Screen 1 and 2, Mask 1 and 2, and Layer 1. They all perform slightly different functions, some of which will be covered later.
Moving Traces to the Bottom Layer
For now, we need to make sure we’ve selected Layer 1 (it should be highlighted if it’s selected).
This layer has all the connecting lines on it. These are the connecting traces. While it is possible to have dual-layered (or more) boards, with traces on the top and bottom, I want to keep it simple. At the moment, the solder traces, as the only layer, are on the top. We can add another layer to move things around. Select ‘Design > Dup Layer Before’.
This copies the ‘pads’ (the little solder rings around the holes) but not the ‘paths’ (the traces between components).
It means we have a ‘blank’ (except for the pads) top layer and all the connections on the bottom layer. We’ve essentially moved things down a layer.
Duplicating the Solder Mask
Next, the solder mask, the coloured lacquer that coats the PCB needs sorting out. Layers M1 and M2 have rings marked that go around component holes. The ‘mask’ is applied around these. If it goes over them, you won’t be able to solder onto it. Currently, M1 has the holes masked properly (the traces were originally on the top layer).
M2 only shows the actual drill holes but not the solder mask rings. If this went to production, the solder pads would be covered over, and we’d have nothing to solder to.
To correct this, we’re going to copy everything on M1 and paste it into M2.
Select layer M1. Cmd+A (or Edit > Select All) followed by Cmd+C (or Edit > Copy). Next select layer M2. Don’t click anywhere or it’ll set the origin point for pasting, and things may be out of alignment. Cmd+V (or Edit > Paste).
It may have pasted some text too (on the Rollz it pastes the name of the board) if so, click on the text and delete (backspace).
Adding the Board Edge
The next stage is to add the board edge. I had errors when submitting files for production until I corrected this. Previously, I used a convoluted process between Osmond and KiCad, but this is much simpler.
Go to Layer A1.
Select the pen tool.
Draw a box around the edge of the design (it’s hard to see in the screenshot but the green box right up to the edges).
Exporting to Gerber
I now like to make all the layers visible again (View > Layers Visible…) for final checks.
Providing everything looks good we need to get things ready for export. We’re going to generate Gerber files which can be submitted to PCB manufacturers. My experience was that certain file-naming conventions are required. We can use Osmond’s settings to determine this before export (rather than renaming all the files after export).
Go to Edit > Gerber File Names…
Use the following naming convention (where foo is the project name, i.e. ultra):
- Drill File: foo.drills_pth.xln
- Auxiliary Layer 1: foo.boardoutline.ger
- Auxiliary Layer 2: AUX2.GBR (Leave as is)
- Silkscreen Layer 1: foo.topsilkscreen.ger
- Silkscreen Layer 2: foo.bottomsilkscreen.ger
- Solder Mask Layer 1: foo.topsoldermask.ger
- Solder Mask Layer 2: foo.bottomsoldermask.ger
- Layer 1: foo.toplayer.ger
- Layer 2: foo.bottomlayer.ger
- Layer 3: LAYER3.GBR (Leave as is)
- Layer 4: LAYER4.GBR (Leave as is)
- Layer X: LAYER%d.GBR (Leave as is)
There’s a handy gSheet for calculating these here - https://docs.google.com/spreadsheets/d/1BWzuB8KpecSda6I6lcm_UFY6Q_5YGrkadQNqYiq9PaU/edit#gid=0
I took the screenshot before rather than after but just copy/paste the text into Osmond, one line at a time.
That’s everything all set up. We can now export.
File > Export > Gerber Files… and leave the standard selections.
Sometimes, but not always, I get a warning about all paths not being connected. Others, on forums, report that this can be ignored. So far so good for me too, but I’ll report back if there are are any updates here.

I prefer to create a zip file of these. I find it easier to upload the one zip file to manufacturers rather than a folder of files. I’ll presume you know how to do this and won’t repeat the steps here.
Final Notes
I’ve been using JLCPCB for manufacturing, and the above method has worked for me. I’d recommend making use of any Gerber checking function your manufacturer has available.
If the steps have worked for you, you will have added the .osm extension and opened the files in Osmond. You will have moved the traces to the bottom layer and added the solder mask to this layer. Finally, you will have added the board edge and exported correctly named Gerber files.
Feel free to do this yourself, or use the ones I prepared earlier - https://gitlab.com/tripping-on-wires/ciat-lonbarde-pcb


R2 is the request / response API underlying Rest.li. It includes abstractions for REST requests and responses, filter chains for customized processing, and transport abstraction. It is designed so that it can be easily customized for non-open source use cases.
R2 can be used independently, with D2 (our Dynamic Discovery system), or with both D2 and Rest.li.
The following diagram shows the layers involved in the R2 system. Each layer will be described in detail below.
In this section, we describe messages in the R2 system. The message hierarchy has ben designed to make it possible to add and work with broader message abstractions when appropriate. Originally, REST was the basic type of message in R2, but with the addition of R2 Streaming, STREAM became the most basic type of messages in R2, with REST built on top of STREAM. Because REST is the most common use case, we will stick to describing the REST model here, and leave STREAM as a separate doc.
Messages have a few properties that are worth describing here:
“RestMessage” is the root of the message hierarchy. All messages in R2 contain an “entity” (which may be empty), and corresponds to the request or response data. For REST, the R2 entity is equivalent to a REST entity. For Streaming, because of the nature of streaming, the R2 entity is replaced by an EntityStream. R2 Streaming will be discussed more fully in a separate doc.
All REST messages add headers in addition to the base message properties. Headers must conform to the definition in RFC 2616 (described in section 4.2 and associated sections). The RestMessage interface is (Note: all code snippets have been simplified here for documentation purposes, and may not reflect the full complexity of the class hierarchy):
public interface RestMessage extend MessageHeaders
{
/**
* Returns the entity for this message.
*
* @return the entity for this message
*/
ByteString getEntity();
/**
* Returns a {@link RestMessageBuilder}, which provides a means of constructing a new message using
* this message as a starting point. Changes made with the builder are not reflected by this
* message instance.
*
* @return a builder for this message
*/
RestMessageBuilder extends RestMessageBuilder>> builder();
}
In addition to an entity, all messages provide a builder that can be used to copy the message and modify its copy. In the case of the Message above, the builder is a RestMessageBuilder. RestMessages are subdivided into RestRequests and RestResponses. The interfaces for these are described below.
A request has a URI. This provides information to the client about how to direct the request - for example, which protocol to use, which server to connect to, what service to invoke, etc. R2 can be used with D2 (Dynamic Discovery), so in those cases URNs will be used for the URI. These URNs will be resolved internally by the Dynamic Discovery system. RestRequests add a method property, which matches the semantics for a REST message (i.e. the method is one of GET, PUT, POST, DELETE):
public interface RestRequest extends RestMessage, Request
{
/**
* Returns the URI for this request.
*
* @return the URI for this request
*/
URI getURI();
/**
* Returns the REST method for this request.
*
* @return the REST method for this request
* @see com.linkedin.r2.message.rest.RestMethod
*/
String getMethod();
/**
* Returns a {@link RestRequestBuilder}, which provides a means of constructing a new request using
* this request as a starting point. Changes made with the builder are not reflected by this
* request instance.
*
* @return a builder for this request
*/
RestRequestBuilder builder();
}
RestResponses add a status property, which matches the semantics of a REST status code (e.g. 200 - OK, see RFC 2616 for details about HTTP status codes):
public interface RestResponse extends RestMessage, Response
{
/**
* Returns the status for this response.
*
* @return the status for this response
* @see com.linkedin.r2.message.rest.RestStatus
*/
int getStatus();
/**
* Returns a {@link RestResponseBuilder}, which provides a means of constructing a new response using
* this response as a starting point. Changes made with the builder are not reflected by this
* response instance.
*
* @return a builder for this response
*/
@Override
RestResponseBuilder builder();
}
ByteStrings Entities are stored as ByteStrings in R2. ByteStrings provide a mechanism to ensure that the byte data is immutable and not copied unless absolutely necessary. The ByteString interface looks like the following:
public final class ByteString
{
/**
* Returns an empty {@link ByteString}.
*
* @return an empty {@link ByteString}
*/
public static ByteString empty();
/**
* Returns a new {@link ByteString} that wraps a copy of the supplied bytes. Changes to the supplied bytes
* will not be reflected in the returned {@link ByteString}.
*
* @param bytes the bytes to copy
* @return a {@link ByteString} that wraps a copy of the supplied bytes
* @throws NullPointerException if {@code bytes} is {@code null}.
*/
public static ByteString copy(byte[] bytes);
/**
* Returns a new {@link ByteString} that wraps the bytes generated from the supplied string with the
* given charset.
*
* @param str the string to copy
* @param charset the charset used to encode the bytes
* @return a {@link ByteString} that wraps a copy of the supplied bytes
*/
public static ByteString copyString(String str, Charset charset);
/**
* Returns a new {@link ByteString} with bytes read from an {@link InputStream}.
*
* If size is zero, then this method will always return the {@link ByteString#empty()},
* and no bytes will be read from the {@link InputStream}.
* If size is less than zero, then {@link NegativeArraySizeException} will be thrown
* when this method attempt to create an array of negative size.
*
* @param inputStream that will provide the bytes.
* @param size provides the number of bytes to read.
* @return a ByteString that contains the read bytes.
* @throws IOException from InputStream if requested number of bytes
* cannot be read.
*/
public static ByteString read(InputStream inputStream, int size) throws IOException;
/**
* Returns a copy of the bytes in this {@link ByteString}. Changes to the returned byte[] will not be
* reflected in this {@link ByteString}.
*
* Where possible prefer other methods for accessing the underlying bytes, such as
* {@link #asByteBuffer()}, {@link #write(java.io.OutputStream)}, or {@link #asString(Charset)}.
* The first two make no copy of the byte array, while the last minimizes the amount of copying
* (constructing a String from a byte[] always involves copying).
*
* @return a copy of the bytes in this {@link ByteString}
*/
public byte[] copyBytes();
/**
* Copy the bytes in this {@link ByteString} to the provided byte[] starting at the specified offset.
*
* Where possible prefer other methods for accessing the underlying bytes, such as
* {@link #asByteBuffer()}, {@link #write(java.io.OutputStream)}, or {@link #asString(Charset)}.
* The first two make no copy of the byte array, while the last minimizes the amount of copying
* (constructing a String from a byte[] always involves copying).
*
* @param dest is the destination to copy the bytes in this {@link ByteString} to.
* @param offset is the starting offset in the destination to receive the copy.
*/
public void copyBytes(byte[] dest, int offset);
/**
* Returns a read only {@link ByteBuffer} view of this {@link ByteString}. This method makes no copy.
*
* @return read only {@link ByteBuffer} view of this {@link ByteString}.
*/
public ByteBuffer asByteBuffer();
/**
* Return a String representation of the bytes in this {@link ByteString}, decoded using the supplied
* charset.
*
* @param charset the charset to use to decode the bytes
* @return the String representation of this {@link ByteString}
*/
public String asString(Charset charset);
/**
* Return an {@link InputStream} view of the bytes in this {@link ByteString}.
*
* @return an {@link InputStream} view of the bytes in this {@link ByteString}
*/
public InputStream asInputStream();
/**
* Writes this {@link ByteString} to a stream without copying the underlying byte[].
*
* @param out the stream to write the bytes to
*
* @throws IOException if an error occurs while writing to the stream
*/
public void write(OutputStream out) throws IOException;

### Builders
As mentioned previously, builders provide the following basic functionality:
Create a new message
Copy a message, modify it, and create a new immutable copy
To create a new message, use RestRequestBuilder / RestResponseBuilder as appropriate.
Builder methods are designed to be chained. Here is an example of chaining:
final RestResponse res = new RestResponseBuilder()
.setEntity(new byte[] {1,2,3,4})
.setHeader("k1", "v1")
.setStatus(300)
.build()
To copy a message, it is sufficient to ask the message for its builder. Typically this can be done with the builder method, but in some cases a special builder method must be used (when working with abstract messages).
Here is an example of copying and modifying a message:
final RestRequest req = ...;
final RestRequest newReq = req.builder()
.setEntity(new byte[] {5,6,7,8})
.setURI(URI.create("anotherURI"))
.build();
Here is an example of copying and modifying an abstract request:
final Request req = ...;
final Request newReq = req.requestBuilder()
.setEntity(new byte[] {5,6,7,8})
.setURI(URI.create("anotherURI"))
.build();
### Callbacks
R2 is, by design, asynchronous in nature. As will be shown below, R2 provides two mechanisms to wait for an asynchronous operation to complete: callbacks and Futures. Futures should be familiar to most Java developers, so we will not discuss them further in this document. Callbacks are less common in Java and warrant some quick discussion.
In R2, the Callback interface looks like:
public interface Callback
{
/**
* Called if the asynchronous operation completed with a successful result.
*
* @param t the result of the asynchronous operation
*/
void onSuccess(T t);
/**
* Called if the asynchronous operation failed with an error.
*
* @param e the error
*/
void onError(Exception e);
}

In some cases it is only possible to invoke an asynchronous operation with a callback (and not a Future). In those cases, which are not common for external users, it is possible to use a FutureCallback as shown in this example:
final FutureCallback future = new FutureCallback();
asyncOp(..., future);
return future.get();

In some cases, code does not need to wait for completion of an event. In the case of the future, simply do not call get(). In the case of callbacks, use Callbacks.empty(), as shown in this example:
asyncOp(..., Callbacks.empty());
Keep in mind that it will not be possible to know when the operation completed - or even if it completed successfully.
Sometimes code will want to know when an operation has completed, but is not concerned with the result. In this case, a SimpleCallback can be used or adapted to a Callback with Callbacks.adaptSimple(...).
### Client API
The R2 client API provides the mechanism for sending request and responses to a remote service or resource handler. The diagram below shows where the client sits in the R2 stack.
The main interface in this layer is the Client interface, shown here:
public interface Client
{
/**
* Asynchronously issues the given request and returns a {@link Future} that can be used to wait
* for the response.
*
* @param request the request to issue
* @return a future to wait for the response
*/
Future restRequest(RestRequest request);
/**
* Asynchronously issues the given request. The given callback is invoked when the response is
* received. This event driven approach is typically more complicated to use and is appropriate
* for building other abstractions, such as a DAG based resolver.
*
* @param request the request to issue
* @param callback the callback to invoke with the response
*/
void restRequest(RestRequest request, Callback callback);
/**
* Starts asynchronous shutdown of the client. This method should block minimally, if at all.
*
* @param callback a callback to invoke when the shutdown is complete
*/
void shutdown(Callback callback);
}

Requests are made asynchronously using either Futures or Callbacks (see Callback section for details).
### Request Handler API
The Request Handler API is the server-side counterpart to the client, as shown in this diagram:
Request Handlers are used for two purposes:
Determining the rules for dispatching a request to a service / resource manager or another dispatcher
Handling a request (as a service or a resource manager)
The REST Request Handler interface looks like:
public interface RestRequestHandler
{
void handleRequest(RestRequest request, Callback callback);
}

### Filter Chains
The filter chain provides a mechanism for doing special processing for each request and response in the system. For example, logging, statistics collections, etc., are appropriate for this layer.
The FilterChain provides methods for adding new filters and for processing requests, responses, and errors.
Requests pass through the filter chain starting from the beginning and move towards the end. Responses and errors start from the end of the filter chain and move towards the beginning.
If an error occurs while a request moves through the filter chain (either due to a thrown Exception or due to an onError(...) call), then the error is first sent to the filter that raised the error and then it moves back towards the beginning of the filter chain. Any filters that show up after the filter that threw the exception will not get a chance to process the request.
### Filters
R2 provides a set of interfaces that can be implemented to intercept different types of messages. They are:
- Message filters
- MessageFilter - intercepts both requests and responses
- RequestFilter
- ResponseFilter
- REST filters
- RestFilter - intercepts both REST requests and REST responses
- RestRequestFilter
- RestResponseFilter
Messages filters can be used to handle messages in an abstract way (as Requests and Responses). REST filters can be used to handle messages of the specific type (REST or possibly another type, like STREAM). Different types of filters should not be used together, as they override the hooks provided by the Message filters.
#### ClientQueryTunnelFilter / ServerQueryTunnelFilter
One notable set of filters is the ClientQueryTunnelFilter and the ServerQueryTunnelFilter. These filters allow long queries to be transformed by moving the query parameters into the body, and reformulating the request as a POST. The original method is specified by the X-HTTP-Method-Override header. See QueryTunnelUtil.java for more details.
###Wire Attributes
Wire attributes provide a mechanism to send "side-band" data to a remote endpoint along with a request or response. They are exposed at the filter chain layer and can be queried or modified by filters. They are not made available at the request / response layer because the entity (and headers, for REST) should supply all of the data necessary to process a request or response.
Wire attributes are sent as headers with the R2 HTTP transport.
### Local Attributes
Local attributes are used by filters during response processing to get data stored during the request. Filters use this mechanism because responses are not guaranteed to be processed on the same thread as their requests.
### Transports
The transport bridges convert our abstract requests, response, and wire attributes into transport-specific requests. We have support for an asynchronous HTTP transport and possibly other transports at this layer.
HTTP Transport
In the HTTP transport there is a standard transformation of our REST messages to equivalent HTTP messages.
Wire attributes are transported as headers, using the attribute name.
### Transport Protocol
Under the hood, request will be encoded based on [Rest.li protocol](Rest.li-Protocol), and sent over the wire to the server.


{% include meta.html %}
About
Blog
Connect
{{ site.description }}
{{ content }}
{% include analytics.html %}


SQLUser
This
Executor is, technically speaking,
the superclass of Executors that access SQL databases, such as
CollectGenome and
Genomeview. From a practial viewpoint, it
handles some tasks such as logging in to the database manager, etc.
SQLUser and its subclasses are designed to employ any SQL database
manager
for which a Java driver (Java connector) is available, but has only
been tested with MySQL, which is fast, free and easy to install, but
somewhat restricted. Since SQL is not fully standardized, using any
other database manager is likely to cause problems which necessitate
minor adjustments of RetroTector. Please report.
Once you have obtained a Java driver, presumably as a .jar file from
the provider of your database manager, you may change the name of the
file to something shorter (eg sqldriver.jar) and include it in the
class path as described in the
main page.
In your SQL database system you should then establish a database named
'forretrotector', containg the tables 'repbasetemplates', 'polproteins'
and 'refrvs'. It can
conveniently be created and filled using the SQL script
'forretrotector.sql'.
The parameters of SQLUser are:
- User: A user name in the database. Default: "".
- Password: The password for User. Default: "".
- SubProtocol: The SQL implementation to use. Default:
mysql.
- Host: The host to access. Default: localhost.
- JDBCDriver: The class of the Java driver for SQL.
Default: com.mysql.jdbc.Driver.
- Debugging: If Yes, most SQL commands are printed.
Default: No.
In order to avoid entering User and Password every time, an
'SQLUserdefaults' parameter in
Configuration.txt
is very useful.
The SQL databases primarily handled by SQLUser and its subclasses are
designated 'Genomes', though they need not actually correspond to
genomes. Their main characteristic is that they consist of four tables:
- Chromosomes: Contains one row for each directory
scanned in the collecting process, typically one for each chromosome.
- Chains: Contains one row for each Chain found in a
SelectedChains file.
- Puteins: Contains one row for each Putein found in a
Putein file.
- LTRs: contains one row for each LTR found in a
RetroVIDScript file.
These tables all start with an 'id' column with a unique identifying
integer. Otherwise, they contain a large number of columns, many of
them with hopefully self-explaining names. Some of the more obscure
ones:
- In Chromosomes:
- FinishedAt: A Timestamp field showing when the
chromosome was collected by CollectGenome.
- In Chains:
- PreFlankSwept: The 2000 bases before the Chain,
after removal of ALUs, L1s etc by SweepDNA.
- PreFlankRaw: The 2000 bases before the Chain.
- LTR5id: The id in LTRs of the 5'LTR.
- GagPuteinid: The id(s) in Puteins of the Gag
Putein(s) associated with the Chain.
- ProPuteinid: The id(s) in Puteins of the Pro
Putein(s) associated with the Chain.
- PolPuteinid: The id(s) in Puteins of the Pol
Putein(s) associated with the Chain.
- EnvPuteinid: The id(s) in Puteins of the Env
Putein(s) associated with the Chain.
- LTR3id: The id in LTRs of the 3'LTR.
- PostFlankSwept: The 2000 bases after the Chain,
after removal of ALUs, L1s etc by SweepDNA.
- PostFlankRaw: The 2000 bases after the Chain.
- LTRDivergence: The percent dissimilarity between
the LTRs.
- APerc, CPerc, GPerc, TPerc: the percentage of the
repsective bases in this Chain.
- RepBaseFinds: A list of hits (at least 50 bases
long, at least 62% identity) with the sequences
from RepBase contained in the SQL table
'forretrotector.repbasetemplates' mentioned above. Each list item
contains:
- The short name of the sequence, followed by
'<' if the complementary sequence was used.
- The start of the hit in the template.
- The start of the hit in the DNA.
- The length of the hit.
- PolClass: The name of the Pol protein in the SQL
table
'forretrotector.polproteins' mentioned above most similar to the Pol
putein, if there is one, and a similarity measure.
- BestRefRV: The name of the reference RV in the
SQL table
'forretrotector.refrvs' mentioned above most similar to the DNA
sequence of this Chain, % similarity (or occasionally '?%' if there was
insufficient memory) and an integer used by Genomeview.
- ChainInserts: Description of occurrences of ALUs
and L1s and other finds by Brooms
within this Chain.
- Overlapper: The id of a Chain whose core (ie from
CoreFirst to CoreLast) overlaps with the core of this.
- CoreFirst: The start position of the first core (ie
not LTR, PBS or PPT) Motif hit in the Chain.
- CoreLast: The end position of the last core (ie not
LTR, PBS or PPT) Motif hit in the Chain.
- In Puteins
- ChainId: The id of the Chain with which this Putein
is associated.
- Duplicator: The id of another Putein, strongly
suspected of being identical.
- In LTRs:
- InChain: The id of a Chain in which this LTR is
included.
- PairedHotspot: If this LTR occurs in the
RetroVIDScript file as part of at least one LTR pair, this column
contains the hotspot position of one of its companions, otherwise null.
- RepLTRFinds: Similar to RepBaseFinds above, but
related only to this LTR.
- LTRInserts: Description of occurrences of ALUs and
L1s and other finds by Brooms
within this LTR.
Since
SweepDNA
splits the original sequence into overlapping chunks, the same element
may occur in two chunks and yield two (not necessarily completely
identical) entries in the database. The parameters Overlapper and
Duplicator are designed to aid the identification of such cases.


Take Attendence
Save
{{unattended}}
{{present}}
{{absent}}
Remaining
Present
Absent
{{errormessage}}
{{s.detail.studentname}}


1 write to queryExpression
Microsoft.Management.Infrastructure.CimCmdlets (1)
CimIndicationWatcher.cs (1)
206
this.
queryExpression
= theQueryExpression;
2 references to queryExpression
Microsoft.Management.Infrastructure.CimCmdlets (2)
CimIndicationWatcher.cs (2)
285
this.
queryExpression
,
294
this.
queryExpression
,


Hucknall woman finds inspiring note with money in new handbag from Tesco
"It really perked up my day"
by Phoebe RamA woman from Hucknall has shared her experience of 'a random act of kindness' after visiting her local supermarket.
After purchasing a new handbag at Tesco Extra in Hucknall, Clare Smith, 42 said she we "shocked" at what she found inside.
She said: "I went to the store yesterday morning (Thursday, November 21) and picked out the handbag which was the only one, and it was right at the back of a rack.
"I'd been looking for a new bag and not seen one I liked but this one stood out.
"When I got it home, I was removing the packaging and putting my belongings in, and in a zipped pocket was an envelope.
"Inside was the note and the money. It really shocked me."
The note said, "all your dreams are possible, go for it, have faith in yourself," accompanied by a £5 note.
Clare, who works in private cleaning, said she is deciding how she can use the money for a positive cause.
"It really wasn't the money that got me though, but more the note. I've got it pinned up now.
"I want to do something of a similar with the £5 rather than spend it.
"I'd love to know who it was - I've since been told similar things have happened before in Hucknall. It's such a nice thing to do.
"It really perked my day up and I'd like to do the same for someone else."
Hucknall Extra store manager Sam Johnson said: "This is a lovely gesture from someone spreading kindness and we’re really happy they brightened Clare’s day."
With the General Election approaching we want to give you all the results and reactions as they happen. Join our new WhatsApp service to receive breaking news alerts throughout the night by texting ELECTION to<PHONE_NUMBER>2. The first messages will go out December 12 after polls close.


Swipe left or right on the display to show the back of the calculator.
You can find the
calculator handbook online
.
Like the real calculator, the batteries won't need replacing for at least 25 years.
More information:
free15c.com/about.html


In a team of five members, we developed an eBook reader targeted for children. By employing Natural Language Processing and Machine Learning, eMello scans the contents of each page and plays background music to suit the current mood of the page.
My role was to design the User Interface of the application using Adobe XD, followed by XCode and Swift.
In collaboration with three team members, we innovated a string instrument to explore and shed light on instrument design research methodology. We researched on the factors affecting sound quality and projection in an acoustic string instrument as well as skills for material crafting.


PROBABLE AED
2
MINUTES MAP.
👉 HELP MAPPING:
✉
|
WEB
|
APP
DEMO NOT FOR REAL USE - data coming from OSM & Interparking + OSM data for AXA & ING banks
Take also a look at an app such as
AED-MAP


Introduction
This project was inspired by Test First and their approach to teaching beginners to code with a test driven mindeset. After not seeing any comparable Python projects, I decided to start my own. Many thansk to Sarah Allen and Alex Chaffee for providing excellent beginner resources for learning Ruby and Javascript.
Learn Python
Setup
- Install Python
- You will need Python, pip, and virtualenv for this Python tutorial.
- If you're using a Windows environment, go here for excellent instructions on setting up your environment.
- If you're using Mac OS X, go here for similarly excellent instructions.
- For Linux, here are your instructions
- Create your Virtualenv
- Note: For more information on virtual environments, check this out.
- Once you've gotten Python, pip, and virtualenv set up, you'll need to create your virtualenv
- First, enter your course directory.
- Then, create your venv
- Next, activate your virtualenv
- Install the project requirements
- Now enter your first lesson
- Open that lesson's index.html file in a web browser and follow the instructions there to get started!
cd test_driven_python
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
cd lessons
cd lesson_0_hello_world
Next Steps
You should start with the first lesson (lesson_0_hello_world) to get a feel for how this course works. If you've finished that, fantastic! You'll now proceed through the lessons by opening the index.html file in each directory and following the instructions there.
I Need Help
- Where do you go if something doesn't seem to be working?
- Read the error message. Error messages are built to be informative, not scary. There's probably some infomration there that will lead you to your next step
- Google! Googling your error message is one of the most valuable skills you can develop in the early stages of learning to program
- Stack Overflow is a great resource for debugging your code.
- iPython. iPython is an interactive shell where you can test out your code in real time. I've included it in the requirements file, so if you've set up your venv and installed requirements.txt, all you have to do is type
ipython
in your command line with your venv activated, and you can try your code out. Never underestimate the power of debugging using well placed print statements! - Still can't find anything? Is something wrong with this Python course? If you think that's the case, hop over to the github repo and create an issue. Please include which version of Python you're using, and let me know how to reproduce the issue you're seeing.


loadDecorator Class
Decorates the Button to listen for the 'stated' event and to disable itself if loading has occurred. Additionally, the Button will fire a load event on the 'on' event as specified in the configuration. This event is triggered with a 'url' parameter.
Methods
bindSpaceBar
()
private
Used for binding the space bar to the Button's 'on' event as specified in the configuration.
disable
()
Object
public
Adds a disabled state to the Button as well as adding the prop disabled if it is a button or input element.
Returns:
enable
()
Object
public
Removes the disabled state from the Button as well the prop disabled if it is a button or input element.
Returns:
getUrl
()
String
public
Gets the url for the button -- either from the config setting or from the HREF
Returns:
initialize
-
$element
-
settings
Class constructor
Parameters:
-
$element
ObjectJQuery object for the element wrapped by the component
-
settings
ObjectConfiguration settings
Properties
preventDefault
Number
By default the default is prevented setting this to true allows the hash to be updated and urls to resolve
throttle
Number
The time in milliseconds in which to throttle events. Events will only be triggred once per throttle time. This is useful when timing complex css transitions.


Flutter Example Company built the Star Counter app as an Open Source app. This SERVICE is provided by Flutter Example Company at no cost and is intended for use as is.
This page is used to inform visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service.
If you choose to use our Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that we collect is used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy.
The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Star Counter unless otherwise defined in this Privacy Policy.


| Package | Description |
|---|---|
| org.tensorflow.distruntime |
| Modifier and Type | Method and Description |
|---|---|
RunGraphResponse.Builder |
RunGraphResponse.Builder.addAllPartitionGraph(Iterable<? extends GraphDef> values)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.addAllRecv(Iterable<? extends NamedTensorProto> values)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.addPartitionGraph(GraphDef.Builder builderForValue)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.addPartitionGraph(GraphDef value)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.addPartitionGraph(int index,
GraphDef.Builder builderForValue)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.addPartitionGraph(int index,
GraphDef value)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.addRecv(int index,
NamedTensorProto.Builder builderForValue)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.addRecv(int index,
NamedTensorProto value)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.addRecv(NamedTensorProto.Builder builderForValue)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.addRecv(NamedTensorProto value)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.addRepeatedField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field,
Object value) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.clear() |
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearCostGraph()
.tensorflow.CostGraphDef cost_graph = 3; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearOneof(org.nd4j.shade.protobuf.Descriptors.OneofDescriptor oneof) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearPartitionGraph()
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearRecv()
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearStatusCode()
If store_errors_in_response_body is true in the request, then
optionally the server may return an OK status for the RPC and
fill the true status into the fields below, to allow for messages
that are too long to fit in metadata.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearStatusErrorMessage()
string status_error_message = 6; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.clearStepStats()
If the request asked for execution stats, the cost graph, or the partition
graphs, these are returned here.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.clone() |
RunGraphResponse.Builder |
RunGraphResponse.Builder.mergeCostGraph(CostGraphDef value)
.tensorflow.CostGraphDef cost_graph = 3; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.mergeFrom(org.nd4j.shade.protobuf.CodedInputStream input,
org.nd4j.shade.protobuf.ExtensionRegistryLite extensionRegistry) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.mergeFrom(org.nd4j.shade.protobuf.Message other) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.mergeFrom(RunGraphResponse other) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.mergeStepStats(StepStats value)
If the request asked for execution stats, the cost graph, or the partition
graphs, these are returned here.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.mergeUnknownFields(org.nd4j.shade.protobuf.UnknownFieldSet unknownFields) |
static RunGraphResponse.Builder |
RunGraphResponse.newBuilder() |
static RunGraphResponse.Builder |
RunGraphResponse.newBuilder(RunGraphResponse prototype) |
RunGraphResponse.Builder |
RunGraphResponse.newBuilderForType() |
protected RunGraphResponse.Builder |
RunGraphResponse.newBuilderForType(org.nd4j.shade.protobuf.GeneratedMessageV3.BuilderParent parent) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.removePartitionGraph(int index)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.removeRecv(int index)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.setCostGraph(CostGraphDef.Builder builderForValue)
.tensorflow.CostGraphDef cost_graph = 3; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setCostGraph(CostGraphDef value)
.tensorflow.CostGraphDef cost_graph = 3; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field,
Object value) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setPartitionGraph(int index,
GraphDef.Builder builderForValue)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setPartitionGraph(int index,
GraphDef value)
repeated .tensorflow.GraphDef partition_graph = 4; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setRecv(int index,
NamedTensorProto.Builder builderForValue)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.setRecv(int index,
NamedTensorProto value)
A list of tensors corresponding to those requested by
`RunGraphRequest.recv_key`.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.setRepeatedField(org.nd4j.shade.protobuf.Descriptors.FieldDescriptor field,
int index,
Object value) |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setStatusCode(Code value)
If store_errors_in_response_body is true in the request, then
optionally the server may return an OK status for the RPC and
fill the true status into the fields below, to allow for messages
that are too long to fit in metadata.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.setStatusCodeValue(int value)
If store_errors_in_response_body is true in the request, then
optionally the server may return an OK status for the RPC and
fill the true status into the fields below, to allow for messages
that are too long to fit in metadata.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.setStatusErrorMessage(String value)
string status_error_message = 6; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setStatusErrorMessageBytes(org.nd4j.shade.protobuf.ByteString value)
string status_error_message = 6; |
RunGraphResponse.Builder |
RunGraphResponse.Builder.setStepStats(StepStats.Builder builderForValue)
If the request asked for execution stats, the cost graph, or the partition
graphs, these are returned here.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.setStepStats(StepStats value)
If the request asked for execution stats, the cost graph, or the partition
graphs, these are returned here.
|
RunGraphResponse.Builder |
RunGraphResponse.Builder.setUnknownFields(org.nd4j.shade.protobuf.UnknownFieldSet unknownFields) |
RunGraphResponse.Builder |
RunGraphResponse.toBuilder() |
Copyright © 2020. All rights reserved.


| 036:067 Khan | : |
And if it had been Our Will, We could have transformed them (into animals or lifeless objects) in their places. Then they should have been unable to go forward (move about) nor they could have turned back. [As it happened with the Jews see Verse 7:166 The Qur'an]. |
| 036:067 Maulana | : |
And if We pleased, We would transform them in their place, then they would not be able to go on, or turn back. |
| 036:067 Pickthal | : |
And had We willed, We verily could have fixed them in their place, making them powerless to go forward or turn back. |
| 036:067 Rashad | : |
If we will, we can freeze them in place; thus, they can neither move forward, nor go back. |
| 036:067 Sarwar | : |
We could have turned them into other creatures on the spot had We wanted and they would not have been able to precede or turn back. |
| 036:067 Shakir | : |
And if We please We would surely transform them in their place, then they would not be able to go on, nor will they return. |
| 036:067 Sherali | : |
And if WE had so willed, WE could have transformed them in their places, then they would not be able to move forward or turn back. |
| 036:067 Yusufali | : |
And if it had been Our Will, We could have transformed them (to remain) in their places; then should they have been unable to move about, nor could they have returned (after error). |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > مشيئته Pillars of Islam> Islamic> Oneness of Allah> His Will
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Operation Windmill
Words by John Q. Public, Pictures from the Smithsonian Institution Archives
Captian’s Log, Dec 15, 1947:
It’s cold here in the Antartic.
BRRRRRRRR
The cool sleds we wanted
finally came.
RAD SLEDS!
Everyone was really excited and started
fighting to see who would ride first.
ME FIRST!
ME FIRST!
ME FIRST!
ME FIRST!
ME FIRST!
ME FIRST!
ME FIRST!
ME FIRST!
Fortunantly, this cool penguin
showed up and calmed us down.
CHILL OUT, GUYS…
She introduced us
to her new baby.
The End!


|
|||||||
|
1. Introduction
2. Installing Karrigell 3. The Web server 4. Configuration options 5. Working with Apache, LightTPD or Xitami 6. Programming 7. Debugging 8. Python scripts 9. CGI scripts 10. Karrigell Services 11. Python Inside HTML 12. HTML Inside Python 13. HTMLTags - generate HTML in Python 14. Including documents 15. Sessions 16. Authentication 17. Translation and Unicode 18. Summary of built-in names |
9. CGI scriptsNew in version 2.3.1If you have developed CGI scripts on another environment, you can run them with Karrigell without modification. Warning : in version 2.3.1 this only works with the asynchronous web server ; support for other servers will be added later All you have to do is put them in specific directories. By default, use the
folder |


Tome of Mastering
Download
Tools
Graph
About
Language: Elvish
Spoken by
Banshee
Spoken by
Centaur
Spoken by
Drider
Spoken by
Drow
Spoken by
Drow Elite Warrior
Spoken by
Drow Mage
Spoken by
Drow Priestess of Lolth
Spoken by
Dryad
Spoken by
Giant Elk
Spoken by
Giant Owl
Spoken by
Pegasus
Spoken by
Satyr
Spoken by
Sprite
Spoken by
Treant
Spoken by
Unicorn
Spoken by
Yochlol
Spoken by
Autumn Eladrin
Spoken by
Drow Arachnomancer
Spoken by
Drow Favored Consort
Spoken by
Drow House Captain
Spoken by
Drow Inquisitor
Spoken by
Drow Matron Mother
Spoken by
Drow Shadowblade
Spoken by
Gloom Weaver
Spoken by
Maurezhi
Spoken by
Retriever
Spoken by
Shadow Dancer
Spoken by
Soul Monger
Spoken by
Spring Eladrin
Spoken by
Summer Eladrin
Spoken by
Winter Eladrin
Spoken by
Darkling
Spoken by
Darkling Elder
Spoken by
Draegloth
Spoken by
Yeth Hound


Advanced backend management
Estimated reading time: 2 minutesBackend access to host ports
Docker Assemble requires its own buildkit instance to be running in a Docker container on the local system. You can start and manage the backend using the backend
subcommand of docker assemble
. For more information, see Install Docker Assemble.
As the backend runs in a container with its own network namespace, it cannot access host resources directly. This is most noticeable when trying to push to a local registry as localhost:5000
.
The backend supports a sidecar container which proxies ports from within the backend container to the container’s gateway (which is in effect a host IP). This is sufficient to allow access to host ports which have been bound to <IP_ADDRESS>
(or to the gateway specifically), but not ones which are bound to <IP_ADDRESS>
.
By default, port 5000 is proxied in this way, as that is the most common port used for a local registry to allow access to a local registry on localhost:5000
(the most common setup). You can proxy other ports using the --allow-host-port
option to docker assemble backend start.
For example, to expose port 6000
instead of port 5000
, run:
$ docker assemble backend start --allow-host-port 6000
Notes:
- You can repeat the
--allow-host-port
option or give it a comma separated list of ports.Passing
--allow-host-port 0
disables the default and no ports are exposed. For example:
$ docker assemble backend start --allow-host-port 0
- On Docker Desktop, this functionality allows the backend to access ports on the Docker Desktop VM host, rather than the Windows or macOS host. To access the the Windows or macOS host port, you can use
host.docker.internal
as usual.
Backend sub-commands
Info
The info sub-command describes the backend:
~$ docker assemble backend info
ID: 2f03e7d288e6bea770a2acba4c8c918732aefcd1946c94c918e8a54792e4540f (running)
Image: docker/assemble-backend@sha256:«…»
Sidecar containers:
- 0f339c0cc8d7 docker-assemble-backend-username-proxy-port-5000 (running)
Found 1 worker(s):
- 70it95b8x171u5g9jbixkscz9
Platforms:
- linux/amd64
Labels:
- com.docker.assemble.commit: «…»
- org.mobyproject.buildkit.worker.executor: oci
- org.mobyproject.buildkit.worker.hostname: 2f03e7d288e6
- org.mobyproject.buildkit.worker.snapshotter: overlayfs
Build cache contains 54 entries, total size 3.65GB (0B currently in use)
Stop
The stop sub-command destroys the backend container
~$ docker assemble backend stop
Logs
The logs sub-command displays the backend logs.
~$ docker assemble backend logs
Cache
The build cache gets lost when the backend is stopped. To avoid this, you can create a volume named docker-assemble-backend-cache-«username»
and it will automatically be used as the build cache.
Alternatively you can specify a named docker volume to use for the cache. For example:
~$ docker volume create $USER-assemble-cache
username-assemble-cache
~$ docker assemble backend start --cache-volume=username-assemble-cache
Pulling image «…»: Success
Started container "docker-assemble-backend-username" (74476d3fdea7)
For information regarding the current cache contents, run the command docker assemble backend cache usage
.
To clean the cache, run docker assemble backend cache purge
.


nbify
Convert Markdown to Jupyter Notebook
Example URLs
http://sebastianraschka.com/faq/docs/tensorflow-vs-scikitlearn.md
Resource
Source Code
nbify and
md2ipynb
by
Yasuaki Uechi


--- layout: example categories: example/v1.0.0 version: v1.0.0 title: Linking to external data description: Hover over countries to view UTFGrid data along with data from an external source. tags: - layers ---


Hello! My name is Nadiya, I am a student at Epicodus programming school based in Portland, OR. This is a completely new path for me which I really enjoy.
More about meCupcake Shop is a website for one of the amazing cupcake shops in NY city. You can find a lot of useful information about that place. Is was created with simple HTML and CSS.
Private Island Resort is a website for one of imaginary wealthy customers who needed a new website for his future business. Is was created with simple HTML and CSS.
My First Webpage is the first project I was working on in my Intro to programing class. Is was created with simple HTML and CSS.
Why programming? Because it can be fascinating! Honestly, I find it more a matter of mesmerizing compulsion than of motivation.
When an idea puzzles me, I can't easily put it aside; it devours my peace of mind and ruins my sleep until I either find something resembling a satisfying answer, or resign from fatigue. As it happens, the types of thoughts that cause this can often be put to rest more easily using a computer as an aid, so it's good to have some command of those.
For this reason, even if I couldn't make a living off of it, I would still be writing programs in order to shut my mind up when it decides to skip merrily out of control on some calculator-friendly tangent. As luck would have it, I've found a corner where indulging in this weakness (to a reasonable extent) is rewarded with a paycheck, so I spend less time suppressing the urge to tinker at work, and enjoy the off hours in a far better mood.
I should probably have to discipline myself more if there was no career to be made (or if the programs would all be repetitive boilerplate material), but as long as I have an unbounded supply of interesting problems, there doesn't seem to be a good reason to take another path instead.


{% load staticfiles %}
Home
Add
Sell
Buy
Ware
Item
Update
Logout
Sold List
Bought List
Ware House
Items
FSN
ABC
Dead Stock
Reorder List
Help?
{% block content %} {% endblock %}
Do Transcations
View Transcations
General Help
?
Get Help
{% include "webapp/includes/footer.html" %}


{%extends 'wiki/_base.html' %} {% load staticfiles %} {% block content %} {{ block.super }} {# ## Insert HTML Fragment Starting Here###}
To open the Events Calendar, click on the Event menu item.
The Event Calendar allows you to view information about ongoing and upcoming events as well as add new events.
Click on the Add Event button.
New page will open with fields for information related to the event
In the Title field enter the event's name (i.e. Lockheed-Martin Design Training).
For Start* enter or use the pop-up calendar to select start date (i.e. 2015-12.16).
For End* enter or use the pop-up calendar to select end date (i.e. 2015-12-18).
If the event will last entire day, check the All day option
Next Event allows you to select the following event the hardware will be sent to.
Pool field should be left on Default Pool.
Click on the "Shipping" tab. This allows you to enter related shipping information.
In the Date Shipped field enter or use the pop-up calendar to select 2015-12-16
Airbills To Event - airbill information for shipment sent to the event (i.e. airbill #:<PHONE_NUMBER>87989)
Airbills From Event - airbill information for shipment returning from the event (i.e. airbill #:<PHONE_NUMBER>7888)
CaseAssigned allows you to select a shipping case that has been assigned to this event. (In this case there aren't any cases assigned)
Click on the next tab labeled "Details". This page contains additional information about the event and requested hardware
In the Site field enter the name of client's site where the event will take place (i.e. Lockheed - Martin Collinsville)
Seat Revenue is the calculated revenue from laptop sent to the event. It can be left blank if unknown.
Projector Revenue is the calculated revenue from each projector sent to the event. It can be left blank if unknown.
Laptops Requested is the number of laptops the client has requested for the event.
If client requested projectors, then check the Projector Requested option
Config Assigned is the name of saved configuration for laptops. There isn't one for this event, so there's nothing to select.
Next, click on the "Contacts" tab. This tab allows you to select the shipping contact and the instructor for the event.
For Shipping Contact use the drop-down list to select Bruce Tanner.
Under Instructor Contact scroll down the list and click on Bruce Tanner to select him as the instructor for the event.
Finally, click on the Hardware Tab to select hardware which will be sent out to the event.
Under Hardware, select six Dell laptops
To remove hardware from the list, click on the item you wish to remove and it will be removed automatically.
Click on the Save button to save all the information you entered and create the event.
To edit an event:
Click on the Events menu-item to go to the Events calendar
Select the event you wish to edit


My name is Kevin Tobin and my date of birth is the 1st of October 19**. I am Irish and i was born in Cork City.I am currently Living in 9* Weston Vi** Ba**** Carrigaline, County Cork.
My Email Address is<EMAIL_ADDRESS>Phone number is (353)(87)2723***
For primary school i attended Scoil An Spioraid Naoimh in Bishoptown on the Curraheen Road.
For secondary school I went to Colaiste An Spioraid Naoimh. I completed my Junior and Leaving Certificate here.
Studying Business Information Systems
Business Information Systems is a course that gives students both a great insight into the business and programming.
Transition Year...I worked with Junior and Senior Infants in the prep School.The purpose of the College is to assist and co-operate with parents in preparing young people for life. The desired goal is that each student will mature, emotionally, intellectually and socially, into a well-integrated, self-confident, competent, Christian person who is committed to the service of God and of his fellow man.
CBC WebsiteI was a bartender in the RCYC from 2016 to December 2018. My Roles include: -Providing first class customer service to a varied customer base. -Pulling pints and serving beverages. -adapting communication styles to suit the needs of each individual customer. -Maintaining presentation-front and back of the Royal Cork Yacht Club. -Handling cash and ensuring that the nightly till records are accurate.
I am a part time Porter My Roles include: -adapting communication styles to suit the needs of each individual customer. - Maintaining presentation-front and back of the Cork University Cork.
Throughout my years of work i have developed skills such as being reliable,dependable,hardworking and punctual in my time.


# -*- coding: utf-8 -*-
"""Principal Component Analysis
Created on Tue Sep 29 20:11:23 2009
Author: josef-pktd
TODO : add class for better reuse of results
"""
import numpy as np
[docs]def pca(data, keepdim=0, normalize=0, demean=True):
'''principal components with eigenvector decomposition
similar to princomp in matlab
Parameters
----------
data : ndarray, 2d
data with observations by rows and variables in columns
keepdim : integer
number of eigenvectors to keep
if keepdim is zero, then all eigenvectors are included
normalize : boolean
if true, then eigenvectors are normalized by sqrt of eigenvalues
demean : boolean
if true, then the column mean is subtracted from the data
Returns
-------
xreduced : ndarray, 2d, (nobs, nvars)
projection of the data x on the kept eigenvectors
factors : ndarray, 2d, (nobs, nfactors)
factor matrix, given by np.dot(x, evecs)
evals : ndarray, 2d, (nobs, nfactors)
eigenvalues
evecs : ndarray, 2d, (nobs, nfactors)
eigenvectors, normalized if normalize is true
Notes
-----
See Also
--------
pcasvd : principal component analysis using svd
'''
x = np.array(data)
#make copy so original doesn't change, maybe not necessary anymore
if demean:
m = x.mean(0)
else:
m = np.zeros(x.shape[1])
x -= m
# Covariance matrix
xcov = np.cov(x, rowvar=0)
# Compute eigenvalues and sort into descending order
evals, evecs = np.linalg.eig(xcov)
indices = np.argsort(evals)
indices = indices[::-1]
evecs = evecs[:,indices]
evals = evals[indices]
if keepdim > 0 and keepdim < x.shape[1]:
evecs = evecs[:,:keepdim]
evals = evals[:keepdim]
if normalize:
#for i in range(shape(evecs)[1]):
# evecs[:,i] / linalg.norm(evecs[:,i]) * sqrt(evals[i])
evecs = evecs/np.sqrt(evals) #np.sqrt(np.dot(evecs.T, evecs) * evals)
# get factor matrix
#x = np.dot(evecs.T, x.T)
factors = np.dot(x, evecs)
# get original data from reduced number of components
#xreduced = np.dot(evecs.T, factors) + m
#print x.shape, factors.shape, evecs.shape, m.shape
xreduced = np.dot(factors, evecs.T) + m
return xreduced, factors, evals, evecs
[docs]def pcasvd(data, keepdim=0, demean=True):
'''principal components with svd
Parameters
----------
data : ndarray, 2d
data with observations by rows and variables in columns
keepdim : integer
number of eigenvectors to keep
if keepdim is zero, then all eigenvectors are included
demean : boolean
if true, then the column mean is subtracted from the data
Returns
-------
xreduced : ndarray, 2d, (nobs, nvars)
projection of the data x on the kept eigenvectors
factors : ndarray, 2d, (nobs, nfactors)
factor matrix, given by np.dot(x, evecs)
evals : ndarray, 2d, (nobs, nfactors)
eigenvalues
evecs : ndarray, 2d, (nobs, nfactors)
eigenvectors, normalized if normalize is true
See Also
-------
pca : principal component analysis using eigenvector decomposition
Notes
-----
This doesn't have yet the normalize option of pca.
'''
nobs, nvars = data.shape
#print nobs, nvars, keepdim
x = np.array(data)
#make copy so original doesn't change
if demean:
m = x.mean(0)
else:
m = 0
## if keepdim == 0:
## keepdim = nvars
## "print reassigning keepdim to max", keepdim
x -= m
U, s, v = np.linalg.svd(x.T, full_matrices=1)
factors = np.dot(U.T, x.T).T #princomps
if keepdim:
xreduced = np.dot(factors[:,:keepdim], U[:,:keepdim].T) + m
else:
xreduced = data
keepdim = nvars
"print reassigning keepdim to max", keepdim
# s = evals, U = evecs
# no idea why denominator for s is with minus 1
evals = s**2/(x.shape[0]-1)
#print keepdim
return xreduced, factors[:,:keepdim], evals[:keepdim], U[:,:keepdim] #, v
__all__ = ['pca', 'pcasvd']


Home
Sales
Contact us
New Branch
New Branch Location:
Maximum Cookies Per Hour:
Minimum Cookies Per Hour:
Average Coockies Per Hour:


Scott Sinclair 'ready' for Celtic action as he showcases incredible physical condition
The Celtic attacker looks ready to take on all-comers as he attempts to get back in the first XI.
by Jonathan McFarlaneScott Sinclair has taken to social media to show fans he's ready for first team football.
The winger published a photo on his Instagram account showing the star flexing in just a pair of red shorts.

Alongside the picture, Sinclair added the comment: "No matter what the situation, I'm focused and ready!"
A former Player of the Year, the Englishman has made only six appearances for Neil Lennon 's men this season after falling behind Mo Ellyounoussi and Mikey Johnston in the pecking order.
The player arrived in a £2.75m deal from Aston Villa in 2016 and has, to date, won every domestic trophy available to him.
He has scored 62 goals and racked up 34 assists in 166 games for the club.


Name
Price
Recipe name
Ingredients
Add product img
Image
Upload img
Delete
Edit
Back to main page
Ready to Leave?
×
Select "Logout" below if you are ready to end your current session.


WITNESS LIST Appropriations Committee February 24, 2005-7:00A Budget Against: Briggs, Ross (Self) Colwell, Erin (Vogue College) Davis, Jennifer (Self) Finch, Roland (Self) Holcombe, Linda (Texas Industrial Vocational Association (TIVA)) Kennedy, Jimmie Kay (Self) Schnabel, Charlie (Lone Star Cosmetology Association) Shirley, Joe (Self) Willingham, Ruby Elaine (Self) On: Brooke, Linda (Texas Juvenile Probation Commission) Brown, Ronald L. (TSBBE) Davis, Colonel Tommy (Texas Department of Public Safety) Dehnert, Allen (Adjutant General's Department) Dickerson, James (Texas State Board of Barber Examiners (Public Member)) Dozier, Jim (TCLEOSE) Gutierrez, David (Texas Commission on Jail Standards) Hamilton, Billy (Comptroller of Public Accounts) Harris, Dwight (Texas Youth Commission) Humphrey, Antoinette F. (Texas Cosmetology Commission) Hutchings, Vonda (Self) Johnson, Phil (Council of Chief Justices, Seventh Court of Appeals - Amarillo) Julian, Terry (Texas Commission on Jail Standards) Keller, Sharon (Texas Court of Criminal Appeals) Kuntz Jr., William H. (Texas Department of Licensing and Regulation) Livingston, Brad (Texas Department of Criminal Justice) Marcovich, Carrice (Office of Court Administration) McBee, Barry (Office of the Attorney General) McHugh, Colleen (Texas Public Safety Commission) Monk, John (Health Professions Council) Parker, Glen (Barber Board) Spriggs, Vicki (Texas Juvenile Probation Commission) Warren, Sr, Gary L. (Texas Commission on Fire Protection) Weber, Andrew (Supreme Court of Texas) Wells, John (Texas Military Facilities Commission)


12 December 2008 - The Ministry of Health of Cambodia has announced a new confirmed case of human infection with the H5N1 avian influenza virus.
The 19-year-old male, from Kandal Province, developed symptoms on 28 November and initially sought medical attention at a local health centre on 30 November. The presence of the H5N1 virus was confirmed by the National Influenza Centre, the Institut Pasteur in Cambodia, on 11 December. The patient is currently hospitalised and a team led by the Ministry of Health is conducting field investigations into the source of his infection. Contacts of the case are also being identified and provided with prophylaxis.
Of the 8 cases confirmed to date in Cambodia, 7 have been fatal.


Manage your money more easily and invest in your goals with the free 22seven app.
Your data is secure, private and insured.
Keep track of your money more simply.
Get a personalised budget, automatically
Find relevant insights, regularly.
Invest in your goals and reach them sooner.
All your accounts. All your transactions. All together. Link bank accounts, credit and store cards, investments, loans and rewards.
100+ supported institutionsIt’s generated for you. And based on your own, actual spending. See exactly how much you spend on what each month. Know what you‘ve already spent and have left to spend, and find more money
Nudges are hints and observations about your money. See things you didn’t know or hadn’t considered, and use your money better.
Putting money towards your future can be a pain. But the right planning can change that. Set, track and invest in your life goals from as little as R350.
Pssssssst!
For a limited time, you can put a minimum of R250 into your goals (instead of the usual R350). Once off or monthly. Or both!
I love it, it helped me detect when my insurance charged me twice
It’s my 3rd day using this app and I love it already; an insurance company deducted money twice from my account; I was not aware of it and the app could pick that up for me so I was able to get my money and the app could pick that up for me so I was to get my money back; thank you very much.
Letshego, Dec 2017
Thanks to 22seven I’m debt free
Yay!! When I made a decision 6 months ago to turn my financial life around, I started doing research and came across 22seven. You’ve certainly made sticking to that decision a lot easier. Today I’m debt free. From a debt of R40 000 6 months ago… may you keep nudging me as I move from debt to building an emergency fund and eventually growing my wealth through savings and investments.
Thandekile, Jan 2018
The best app I have used in 2018
This is by far the best app I have used in 2018. Why did it take me so long to get it?! It helps me keep track of all my spending- to the cent. I am more aware of my spending habits as all my accounts are linked to the app. If you need budgeting tools and a reality check about your spending, this is the best app for you. If you have a goal you are saving towards, this is for you - as the app tells you how much you need to save per month to reach your goal. It’s WONDERFULL!!!!!
Manileng, Dec 2018
We use the same security measures as banks, governments and the military. Your information is always encrypted, and we won’t sell your data to third parties.
Read only.
We can only fetch your information. No one can touch your money.
You can feel reassured because we're insured by Beazley.
Backed by Old Mutual.
One of the biggest, oldest and most trusted financial institutions of South Africa
The first thing you’ll do is link your money stuff: cheque and savings accounts, credit and store cards, investments, loans and rewards.
When you link accounts, 22seven usually gets the last 3 months’ transactions from them. After that, they’re automatically updated whenever you log in, or daily
22seven identifies each transaction and automatically puts it into a category like Groceries, Rent or Pets. Use existing categories or create your own.
We automatically add up what you spend on each category, each month, so you see exactly where your money goes. Brace yourself: it’s honest about what you do with your money.
The Svens, our support team, are available from 8am to 8pm.
<EMAIL_ADDRESS>+27 87 8550 4331


Release notes for Groovy 3.0
|
Parrot Parser
Groovy 3.0, has a new parser that is far more flexible and maintainable than the parser in previous versions of Groovy. It’s called the Parrot parser because in the early days of creating the parser, the goal was for the new parser’s output to be an exact echo of what the old parser produced. The new parser has since been extended to support additional syntax options and language features.
Disabling the parser
The new parser is enabled by default in Groovy 3.0.
You can disable the new parser by using a system property.
Use -Dgroovy.antlr4=false
(set via JAVA_OPTS
if needed).
It is not envisaged that this property would be needed in normal
use. However, at least initially, if you have a problematic source
file that doesn’t seem to work with the new parser, you may be
able to revert to the old parser to compile just that file.
You won’t be able to use any of the new language features with the
old parser. The old parser will be deprecated and eventually removed
in future Groovy versions.
do/while loop
Java’s class do/while loop is now supported. Example:
// classic Java-style do..while loop
def count = 5
def fact = 1
do {
fact *= count--
} while(count > 1)
assert fact == 120
Enhanced classic Java-style for loop
The more elaborate form of Java’s classic for loop with comma-separate expressions is now supported. Example:
def facts = []
def count = 5
for (int fact = 1, i = 1; i <= count; i++, fact *= i) {
facts << fact
}
assert facts == [1, 2, 6, 24, 120]
Multi-assignment in combination with for loop
Groovy has supported multi-assignment statements since Groovy 1.6:
// multi-assignment with types
def (String x, int y) = ['foo', 42]
assert "$x $y" == 'foo 42'
These can now appear in for loops:
// multi-assignment goes loopy
def baNums = []
for (def (String u, int v) = ['bar', 42]; v < 45; u++, v++) {
baNums << "$u $v"
}
assert baNums == ['bar 42', 'bas 43', 'bat 44']
Java-style array initialization
Groovy has always supported literal list/array definitions using square brackets and has avoided Java-style curly braces so as not to conflict with closure definitions. In the case where the curly braces come immediately after an array type declaration however, there is no ambiguity with closure definitions, so the Java style is now also supported.
Examples:
def primes = new int[] {2, 3, 5, 7, 11}
assert primes.size() == 5 && primes.sum() == 28
assert primes.class.name == '[I'
def pets = new String[] {'cat', 'dog'}
assert pets.size() == 2 && pets.sum() == 'catdog'
assert pets.class.name == '[Ljava.lang.String;'
// traditional Groovy alternative still supported
String[] groovyBooks = [ 'Groovy in Action', 'Making Java Groovy' ]
assert groovyBooks.every{ it.contains('Groovy') }
Java-style Lambda syntax
The Java syntax for lambda expressions is now supported.
|
Examples:
import static java.util.stream.Collectors.toList
(1..10).forEach((it) -> { println it })
assert (1..10).stream()
.filter((it) -> it % 2 == 0)
.map((it) -> it * 2)
.collect(toList()) == [4, 8, 12, 16, 20]
The normal variants are supported and Groovy adds additional features such as default parameter values:
// general form
def add = (int x, int y) -> { def z = y; return x + z }
assert add(3, 4) == 7
// curly braces are optional for a single expression
def sub = (int x, int y) -> x - y
assert sub(4, 3) == 1
// parameter types are optional
def mult = (x, y) -> x * y
assert mult(3, 4) == 12
// no parentheses required for a single parameter with no type
def isEven = n -> n % 2 == 0
assert isEven(6)
assert !isEven(7)
// no arguments case
def theAnswer = () -> 42
assert theAnswer() == 42
// any statement requires braces
def checkMath = () -> { assert 1 + 1 == 2 }
checkMath()
// example showing default parameter values (no Java equivalent)
def addWithDefault = (int x, int y = 100) -> x + y
assert addWithDefault(1, 200) == 201
assert addWithDefault(1) == 101
Method references
The Java 8 method reference syntax using the double colon syntax is now supported.
|
The following examples illustrate referencing both static and instance methods of a class:
import java.util.stream.Stream
import static java.util.stream.Collectors.toList
// class::staticMethod
assert ['1', '2', '3'] ==
Stream.of(1, 2, 3)
.map(String::valueOf)
.collect(toList())
// class::instanceMethod
assert ['A', 'B', 'C'] ==
['a', 'b', 'c'].stream()
.map(String::toUpperCase)
.collect(toList())
The following examples illustrate referencing methods of instance variables:
// instance::instanceMethod
def sizeAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'::length
assert sizeAlphabet() == 26
// instance::staticMethod
def hexer = 42::toHexString
assert hexer(127) == '7f'
The following examples illustrate referencing constructors:
// normal constructor
def r = Random::new
assert r().nextInt(10) in 0..9
// array constructor refs are handy when working with various Java libraries, e.g. streams
assert [1, 2, 3].stream().toArray().class.name == '[Ljava.lang.Object;'
assert [1, 2, 3].stream().toArray(Integer[]::new).class.name == '[Ljava.lang.Integer;'
// works with multi-dimensional arrays too
def make2d = String[][]::new
def tictac = make2d(3, 3)
tictac[0] = ['X', 'O', 'X']
tictac[1] = ['X', 'X', 'O']
tictac[2] = ['O', 'X', 'O']
assert tictac*.join().join('\n') == '''
XOX
XXO
OXO
'''.trim()
// also useful for your own classes
import groovy.transform.Canonical
import java.util.stream.Collectors
@Canonical
class Animal {
String kind
}
def a = Animal::new
assert a('lion').kind == 'lion'
def c = Animal
assert c::new('cat').kind == 'cat'
def pets = ['cat', 'dog'].stream().map(Animal::new)
def names = pets.map(Animal::toString).collect(Collectors.joining( "," ))
assert names == 'Animal(cat),Animal(dog)'
!in and !instanceof operators
When wanting the negated form, rather than having to bracket expressions containing
the in
and instanceof
infix operators and placing the exclamation operator in
front of the brackets, an inline variant is now also supported. Examples:
/* assert !(45 instanceof Date) // old form */
assert 45 !instanceof Date
assert 4 !in [1, 3, 5, 7]
Elvis assignment operator
Groovy introduced the Elvis operator Example:
import groovy.transform.ToString
@ToString
class Element {
String name
int atomicNumber
}
def he = new Element(name: 'Helium')
he.with {
name = name ?: 'Hydrogen' // existing Elvis operator
atomicNumber ?= 2 // new Elvis assignment shorthand
}
assert he.toString() == 'Element(Helium, 2)'
Identity comparison operators
Both ===
and !==
are supported which are the same as calling the is()
method.
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode
class Creature { String type }
def cat = new Creature(type: 'cat')
def copyCat = cat
def lion = new Creature(type: 'cat')
assert cat.equals(lion) // Java logical equality
assert cat == lion // Groovy shorthand operator
assert cat.is(copyCat) // Groovy identity
assert cat === copyCat // operator shorthand
assert cat !== lion // negated operator shorthand
Safe indexing
String[] array = ['a', 'b']
assert 'b' == array?[1] // get using normal array index
array?[1] = 'c' // set using normal array index
assert 'c' == array?[1]
array = null
assert null == array?[1] // return null for all index values
array?[1] = 'c' // quietly ignore attempt to set value
assert array == null
ARM Try with resources
Groovy often provides better alternatives to Java 7’s try
-with-resources statement for Automatic Resource Management (ARM).
That syntax is now supported for Java programmers migrating to Groovy and still wanting to use the old style:
class FromResource extends ByteArrayInputStream {
@Override
void close() throws IOException {
super.close()
println "FromResource closing"
}
FromResource(String input) {
super(input.toLowerCase().bytes)
}
}
class ToResource extends ByteArrayOutputStream {
@Override
void close() throws IOException {
super.close()
println "ToResource closing"
}
}
def wrestle(s) {
try (
FromResource from = new FromResource(s)
ToResource to = new ToResource()
) {
to << from
return to.toString()
}
}
assert wrestle("ARM was here!").contains('arm')
Which yields the following output:
ToResource closing FromResource closing
Nested code blocks
An infrequently used structure within Java is the anonymous code block. It’s generally not encouraged as it’s often a sign that refactoring the related code into a method is in order. But it’s sometimes useful to restrict scoping and is now available in Groovy:
{
def a = 1
a++
assert 2 == a
}
try {
a++ // not defined at this point
} catch(MissingPropertyException ex) {
println ex.message
}
{
{
// inner nesting is another scope
def a = 'banana'
assert a.size() == 6
}
def a = 1
assert a == 1
}
Be aware though that in Groovy having a code block looking structure after any method call will be seen as an attempt to pass a closure as the last parameter in the method call. This happens even after a new line. So it’s safe to start an anonymous code block after any other block (e.g. an if-then-else statement or another anonymous code block). Anywhere else and you might need to terminate the previous statement with a semicolon. In which case, see the note above about refactoring your code! :-)
Interface default methods
Java 8 supports adding default implementations to interfaces. Groovy now supports this too:
interface Greetable {
String target()
default String salutation() {
'Greetings'
}
default String greet() {
"${salutation()}, ${target()}"
}
}
class Greetee implements Greetable {
String name
@Override
String target() { name }
}
def daniel = new Greetee(name: 'Daniel')
assert 'Greetings, Daniel' == "${daniel.salutation()}, ${daniel.target()}"
assert 'Greetings, Daniel' == daniel.greet()
|
Miscellaneous improvements
Embedded GroovyDoc
You can now embed Groovydoc in various ways.
It can be attached to the AST as node metadata and available during compilation for use by for instance
AST transformations or other tools. This is enabled using the groovy.attach.groovydoc
system property.
It can also be embedded into the class file via an annotation and available at runtime for access
via reflection or via other tools. This is enabled using the 'groovy.attach.runtime.groovydoc' system property
to globally enable the attachment of all Groovydoc or by using a special @Groovydoc
tag/annotation at
the start of any Groovydoc comment. You normally don’t deal with the annotation directly - the compiler handles
proper placement of the annotation and an extension method allows easy access to the Groovydoc comment value.
Here is a typical example:
/** fee fi */
class Foo {
/** @Groovydoc fo fum */
def bar() { }
}
// next line assumes groovy.attach.runtime.groovydoc system property is true
assert Foo.class.groovydoc.content.contains('fee fi')
def bar = Foo.methods.find{ it.name == 'bar' }
// next line always true due to explicit @Groovydoc
assert bar.groovydoc.content.contains('@Groovydoc fo fum')
JSR308 improvements (work in progress)
Groovy has been improving JSR-308 support over recent versions. As part of implementing the new grammar, additional support has been added.
JDK requirements
Groovy 3.0 requires JDK8+ to build and JDK8 is the minimum version of the JRE that we support. As additional Java 9/10 support is added, the version required to build may be bumped to JDK9.
More information
You can browse all the tickets closed for Groovy 3.0 in JIRA. Note: some of the tickets relevant for this release are contained in the tickets closed for Groovy 2.6.


create_watchgroup(3f) - [M_stopwatch] creates a M_StopWatch watch group (LICENSE:PD)
Synopsis
Description
Diagnostics
Examples
Bugs
Author
See Also
subroutine create_watchgroup(watch, handle, err)
type (watchtype), intent(IN) :: watch OR type (watchtype), intent(IN) :: watch(:)
type (watchgroup), intent(OUT) :: handle integer, optional, intent(OUT) :: err
Creates a new watch group and returns a handle for it. A watch group must be created by this routine before it is passed to any other M_StopWatch routines. In Fortran 90 it is impossible to test whether or not a watch group has been created, and using a watch group that has not been created may cause the program to crash. It is not an error to create a watch group that has already been created, however the prior information and memory locations will be lost. Watch groups should be destroyed (see destroy_watchgroup(3)) before they are recreated. Also, local variable watch groups should be destroyed before returning from a subroutine, to avoid memory leaks.One or more watches may be optionally specified. If watch is present, the watch group will initially contain the specified watch(es). If watch is omitted, the watch group will initially be empty. Watches can be added and removed from the group with join_watchgroup and leave_watchgroup. The argument watch can be a single variable of type watchtype (see M_stopwatch(3)) to start the group with one watch, or an array of type watchtype to start the group with several watches.
The argument handle is a variable of type watchgroup that will subsequently be used to access the watch group.
If present, the optional intent OUT integer argument err returns a status code. The code is the sum of the values listed below.An error message will be printed to a specified I/O unit (unit 6 by default) if print_errors is TRUE (default is TRUE). The error message contains more detail about the cause of the error than can be obtained from just the status code, so you should set print_errors to TRUE if you have trouble determining the cause of the error.
If abort_errors is TRUE (default is FALSE), the program will terminate on an error condition. Otherwise, the program will continue execution but the watch group will not be created.
See option_stopwatch(3) for further information on print_errors, abort_errors and I/O units.
The relevant status codes and messages are:
0 No errors; execution successful.
1 Watch needs to be created. This error occurs if you attempt to put a watch that has been destroyed in the group. The watch must first be created again. See also the comment about watches that have never been created in the BUGS section.
512 Failed to allocate required memory. When a group is created, memory is allocated for the group. Also, when create_watchgroup is called with an array of watches, temporary memory is allocated. This error occurs if the Fortran allocate statement returns a nonzero status indicating that memory could not be allocated. Avoid memory leaks by always destroying watches and groups before recreating them, and destroying local variable watches and groups before returning from a subroutine.
1024 Error occurred while deallocating memory. This error occurs if the Fortran deallocate statement returns a nonzero status while deallocating temporary memory used for an array of watches. The group is created, but be aware that other problems could develop as a result of the deallocate error.
type (watchtype) w(3) type (watchgroup) g1, g2 integer errcodecall create_watchgroup(handle=g1) call create_watchgroup(w, g2, err=errcode)
The first call creates an empty group g1. The second call creates the group g2 with three watches, and returns a status code.
It cannot be determined whether or not a watch variable has been created (passed as an argument to create_watch). If a watch that has never been created is passed into create_watchgroup, it might generate a Fortran error due to passing a pointer with undefined association status to the Fortran intrinsic function associated. However, some compilers will allow this as an extension to the Fortran 90 standard and recognize that the pointer is not associated, in which case the Watch needs to be created error message is generated.
William F. Mitchell<EMAIL_ADDRESS>National Institute of Standards and Technology
M_stopwatch(3), create_watch(3), destroy_watchgroup(3), destroy_watch(3), end_pause_watch(3), inquiry_stopwatch(3), join_watchgroup(3), leave_watchgroup(3), option_stopwatch(3), pause_watch(3), print_watch(3), read_watch(3), reset_watch(3), start_watch(3), stop_watch(3)
| M_StopWatch 1.1 | CREATE_WATCHGROUP (3) | September 22, 2017 |


SSL Certificate Chain Resolver
All operating systems contain a set of default trusted root certificates. But Certificate Authorities usually don't use their root certificate to sign customer certificates. They use so called intermediate certificates instead, because these can be rotated more frequently.

This tool can help you fix the incomplete certificate chain issue, also reported as Extra download by Qualys SSL Server Test.
If you need an online tool to solve this issue, take a look at certificatechain.io
Spatie is a webdesign agency in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.
Postcardware
You're free to use this package (it's MIT-licensed), but if it makes it to your production environment you are required to send us a postcard from your hometown, mentioning which of our package(s) you are using.
Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium.
The best postcards will get published on the open source page on our website.
Installation
This package can be installed using composer by running this command.
composer global require spatie/ssl-certificate-chain-resolver
Usage
Let's assume you have an incomplete certificate called cert.crt
. To generate the a file containing the certificate and the entire trust chain, you can use this command:
ssl-certificate-chain-resolver resolve cert.crt
A file containing the certificate and the entire trust chain will be saved as certificate-including-trust-chain.crt
You can also pass the name of the file of the outputfile as the second argument:
ssl-certificate-chain-resolver resolve cert.crt your-output-file.crt
If the outputfile already exists, you will be asked if it's ok to overwrite it.
Updating
You can update ssl-certificate-chain-resolver to the latest version by running:
composer global update spatie/ssl-certificate-chain-resolver
Limitations
Currently this package does not work with Entity validation certificates or certificates issued by Let's Encrypt. A PR that adds this to package would be highly appreciated.
Testing
Functional and unit tests are included with the package.
You can run them yourself with vendor/bin/codecept run
Credits
This package was inspired by cert-chain-resolver written by Jan Žák. Some text, mainly the background about the trust chain, was copied from the readme of his repo.
Background: the trust chain
All operating systems contain a set of default trusted root certificates. But Certificate Authorities usually don't use their root certificate to sign customer certificates. Instead of they use so called intermediate certificates, because they can be rotated more frequently.
A certificate can contain a special Authority Information Access extension (RFC-3280) with URL to issuer's certificate. Most browsers can use the AIA extension to download missing intermediate certificate to complete the certificate chain. This is the exact meaning of the Extra download message. But some clients, mostly mobile browsers, don't support this extension, so they report such certificate as untrusted.
This results in 'untrusted'-warnings like this, since the browser thinks you are on an insecure connection.
A server should always send a complete chain, which means concatenated all certificates from the certificate to the trusted root certificate (exclusive, in this order), to prevent such issues. So when installing a SSL certificate on a server you should install all intermediate certificates as wel. You should be able to fetch intermediate certificates from the issuer and concat them together by yourself.
This tool helps you automatize that boring task by looping over certificate's AIA extension field.
About Spatie
Spatie is a webdesign agency in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.
License
The MIT License (MIT). Please see License File for more information.


Teen Africa recruits teen presenters in Africa for launch
COME December 1, 2019 a new teen TV channel, Teen Africa TV, will be launched at the Balmoral Hall, Federal Palace Hotel.
Performing at the December 1st launch which will be aired live on HipTV and TATV will be the 2Baba, Joeboy and Crayon as well as other teen acts from the TATV performing ensemble.
The TV is a brainchild of Charles Novia who is the founder/CEO.
“Teen Africa TV is presently the biggest indigenous visual ecosystem for Teenagers in this part of the world,” said Novia.
Read Also: Africa’s first teen channel launches December 1st
“We speak the language of the Teens and we understand what they want. Our programmes are borne from research by them and ALL our original programmes have teens and young adults as Presenters. We have given them their own world and there is nothing like this. The TATV presenters and Brand Ambassadors are some of the best teen talents in the country and we are very proud of them. We have assembled the next breakout youth talents who will take over the entertainment scene in Africa and the world in a few years and TATV is the natural springboard for these talents to ‘blow’.”
After the launch, Teen Africa TV will be on DSTV and Gotv as a 24 hour daily channel with the best original content for the teens and family audience. In what promises to be a revolution in the broadcast and media space in Africa, TATV will be the station to watch.


Which Sony products will receive Android 10 upgrades?
Google has announced Android 10, so you’re probably wondering when your trusty Xperia device will get the shiny new upgrade. Well, look no further than this blog – as we have all the news you’re waiting for!
Owners of Sony’s premium flagship Xperia 1 and recently announced Xperia 5 will be among the first to receive the new tech, which will be available this December.
Owners of Xperia 10, 10 Plus, XZ2, XZ2 Compact, XZ2 Premium and XZ3 devices can expect to access the upgrade early 2020 onwards*.


Have a question about this post, Bootstrap, GitHub, or anything else? Ask away on Twitter or in my AMA repo.


Newfoundland Provincial Championships Marathon
Saint John's NF/CAN
Website: races.nautilusrunning.com/marathon
Race Winners
(66 runnings)
3:17:15 3:11:56 3:37:04 3:47:07 16 Sep
2007
3:09:24
3:04:21
17 Sep
2006
2:36:33
2:48:27
18 Sep
2005
2:45:23
3:08:19
19 Sep
2004
2:48:47
2:58:22
14 Sep
2003
2:40:53
3:04:31
15 Sep
2002
2:36:21
3:05:40
16 Sep
2001
2:51:46
3:08:10
17 Sep
2000
2:44:46
3:05:51
19 Sep
1999
2:49:08
3:09:51
20 Sep
1998
2:45:50
3:11:57
21 Sep
1997
2:37:57
3:19:55
01 Sep
1996
2:35:23
3:12:30 03 Sep
1995
2:33:11
3:13:59 04 Sep
1994
2:49:09
3:16:53
05 Sep
1993
2:50:26
3:21:50
06 Sep
1992
2:48:00
3:20:00 15 Sep
1991
2:32:01
3:06:57
16 Sep
1990
2:35:21
3:13:45 27 Aug
1989
2:41:44
3:14:09 28 Aug
1988
2:34:12
3:21:35 13 Sep
1987
2:38:05
3:31:05 28 Sep
1986
2:46:15
3:19:12
08 Sep
1985
2:32:35
3:28:45 09 Sep
1984
2:39:13
3:33:20 11 Sep
1983
2:34:46
3:36:56
12 Sep
1982
2:36:06
3:42:08 13 Sep
1981
2:37:39
21 Sep
1980
2:30:02
4:01:05 09 Sep
1979
2:20:45
3:00:17
23 Jul 1978
2:35:29
4:30:37
17 Jul 1977
2:44:16
22 Aug 1976
3:15:51
07 Sep
1975
2:47:05
4:24:18 25 Aug 1974
2:49:47
07 Oct
1973
2:42:44
03 Jun
1972
2:58:16
03 Oct
1971
2:40:58
1970
---
27 Sep
1969
2:44:45
05 Oct
1968
3:18:49
23 Sep
1967
3:12:40
17 Sep
1966
3:14:48
18 Sep
1965
2:58:17.4
17 Oct 1964
3:14:20
28 Sep
1963
2:59:09
29 Sep
1962
2:40:40
23 Sep
1961
3:17:00
24 Sep
1960
3:10:24
26 Sep
1959
3:37:00
1958
---
21 Sep
1957
3:05:51 08
Oct
1956
2:53:10
26
Sep
1955
3:02:09
18 Oct
1954
2:50:02
12 Oct
1953
2:45:43
13 Oct
1952
2:59:14
08 Oct
1951
2:58:50
09 Oct
1950
3:07:26
Notes: 1950 is the inaugural year. All years
were provincial championships except 1986 when these championships were held in
Stephenville; (pc) is used to indicate a non-winning provincial champion as listed below. There was no provincial
champion in 1969. A race was not held in 1958, probably due to too few
entries (five required).
17 Sep
2017
2:37:12
Ian Royle-4
3:55:21
Kim Dwyer (CAN)
25 Sep
2016
2:41:53
Ian Royle-3
3:22:54
Adrienne Peters (CAN)
27 Sep
2015
2:48:54
Ian Royle-2
2:52:52
Caroline McIlroy-3
21 Sep
2014
2:51:42
Edward Durnford-4
3:32:05
Janet Quick-2
22 Sep
2013
2:39:53
Ian Royle (CAN)
3:53:00
Erin Sullivan (CAN)
23 Sep
2012
2:52:04
Jason White (NF/CAN)
3:11:35
Stephanie Hodge-4
25 Sep
2011
2:47:53
Edward Durnford-3
Janet Quick (CAN)
26 Sep
2010
2:45:23
Joseph Dunford (NF/CAN)
Allison Hobeika-2
27 Sep
2009
2:54:08
Edward Durnford-2
Sheri-Lynn Burden (CAN)
14 Sep
2008
2:54:58
Edward Durnford (NF/CAN)
Angelique Myles (CAN)
Bill Pomeroy (NF/CAN)
Allison Hobeika (NF/CAN)
William Fitzgerald-2
Caroline McIlroy-2
William Fitzgerald (CAN)
Caroline McIlroy (ENG)
Dean Alyward-2
Stephanie Hodge-3
David Ruggles-2 (pc)
Marie Decker-6
David Ruggles (ON/CAN) (pc)
Marie Decker-5
Lionel Foote-3
Stephanie Hodge-2
Dean Alyward (NF/CAN)
Marie Decker-4
Gerry Donovan (NF/CAN)
Marie Decker-3
Peter Power (NF/CAN)
Marie Decker-2
Ernie Lucas (NF/CAN)
Marie Decker (NF/CAN)
Harold St Croix (NF/CAN)
Stephanie Hodge (NF/CAN)
Darren Murphy (ON/CAN)
(pc)
Rhea Athey (CAN)
Gerard Doran (NF/CAN)
Joan
Thorne-Bulgin-8
Lionel Foote-2
Joan
Thorne-Bulgin-7
Lionel Foote (NF/CAN)
Pam
Bulgin (NF/CAN)
Mike Greene-3
Sue Malone (NF/CAN)
Mike Greene-2
Denise Lawlor-2
Gordon Brockerville-5
Denise Lawlor (CAN)
Don Howell-2
Joan
Thorne-Bulgin-6
Gordon Brockerville-4
Joan
Thorne-Bulgin-5
Randy Churchill (NF/CAN)
Joan
Thorne-Bulgin-4
Don Howell (NF/CAN)
Kay Singleton (CAN)
Gavin Will (NF/CAN)
Joan
Thorne-Bulgin-3
Gordon Brockerville-3
Joan
Thorne-Bulgin-2
Gordon Brockerville-2
Joan Thorne-Bulgin (NF/CAN)
Art Meaney (NF/CAN)
Gordon Brockerville (NF/CAN)
Florence Wallach (CAN)
Ken Inglis (ON/CAN) (nc)
(pc)
Wendy Robertson (CAN) (nc) (pc)
Ray Will (NF/CAN)
Anne Doyle (NF/CAN)
Mike Greene (NF/CAN)
Bren Kelly-2
Joe Ryan (NF/CAN)
Mercedes Connors (NF/CAN)
Tony Oxford-2
Tony Oxford (NF/CAN)
Bren Kelly (NF/CAN)
Dan Clarke-2 (pc)
not held
Dan Clarke (USA)
Charles Spurrell-3
Harold Picco (NF/CAN)
Don Coaker-2
Herb Riechert (CAN) (pc)
Don Coaker (NF/CAN)
Charles Spurrell-2
Charles Spurrell (NF/CAN)
Jim Jackson-4
Jim Jackson-3
Frank Martin (NF/CAN)
not held
Jim Jackson-2
Jim Jackson (NF/CAN)
Greg Doyle (NF/CAN)
George Hillier-4
George Hillier-3
George Hillier-2
George Hillier (NF/CAN)
George Crane (NF/CAN)
(nc) => Canadian national championships
(pc) => Newfoundland & Labrador provincial championships
2003 Dean Alyward was the provincial champion (2nd place, 2:49:23)
2002 Dean Alyward was the provincial champion (2nd place, 2:47:45)
1995 Lionel Foote was the provincial champion (2nd place, 2:44:12)
1979 Ray WIll was the provincial champion (6th place, 2:34:31)
1979 Mercedes Connors was the provincial champion (3rd place, 4:08:38)
1971 Bren Kelly was the provincial champion (2nd place, 3:18:42)
1965 Don Coaker was the provincial champion (2nd place, 3:16:20)
Most Wins (1950-date)
Men
5
Gordon Brockerville (NF/CAN)
1980,1982-83,1987,1989
Women
8
Joan Thorne-Bulgin (NF/CAN)
1982-84,1986-88,1993-94
Prize Money
(ADR qualified runners)
No information on prize money has been received for this race.
Race Time Bias
Insufficient data to calculate race time biases.
Competitive Level
Insufficient data to calculate competitive levels.
Quality Performances
Men No men under 2:20
Women <2:50 1
Finishers
Year Men Women M+F 2017 50 22 72 2016 38 26 64 2015 48 60 108 2014 24 18 42 2013 36 12 48 2012 41 14 55 2011 41 17 58 2010 45 23 68 2009 45 12 57 2008 26 11 37 2007 49 18 67 2006 39 13 52 2005 45 17 62 2004 35 13 48 2003 72 20 92 2002 48 18 66 2001 64 18 82 2000 64 21 85 1999 67 25 92 1998 58 15 73 1997 80 13 93 1996 72 18 90 1995 77 14 91 1994 56 6 62 1993 53 6 59 1992 51 6 57 1991 48 6 54 1990 61 5 66 1989 50 5 55 1988 38 5 43 1987 32 5 37 1986 35 2 37 1985 38 1 39 1984 26 1 27 1983 13 3 16* 1982 49 2 51 1981 44 44 1980 35 3 38 1979 61 4 65 1978 10 1 11 1977 10 10 1976 5 5 1975 5 1 6 1974 3 3 1973 7 7 1972 3 3 1971 3 3 1969 1 1 1968 2 2 1967 2 2 1969 1 1 1965 4 4 1964 1 1 1963 3 3 1962 3 3 1961 4 4 1960 4 4 1959 3 3 1957 3 3 1956 6 6 1955 3 3 1954 4 4 1953 5 5 1952 4 4 1951 4 4 1950 11 11 Sums 1970 500 2470 M/F 3.94
Last Updated on
18 Sep 2017
Contributors: Chris Pickard (50), Erin Sullivan, Joe Ryan (32), Klaas Loonstra (10), Maurice Wilson (5), Juraj Gasparovic (2)