Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
This API provides interfaces to raw UDP sockets, TCP client sockets and TCP server sockets.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document defines a System Level API for network communication over UDP and TCP sockets.
This document was published by the System Applications Working Group as a First Public Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to<EMAIL_ADDRESS>(subscribe, archives). All feedback is welcome.
Publication as a First Public Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
UDPSocket
TCPSocket
TCPServerSocket
UDPMessageEvent
ConnectEvent
ErrorEvent
UDPOptions
TCPOptions
TCPServerOptions
This section is non-normative.
Use this API to send and receive data over the network using TCP or UDP.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this specification are to be interpreted as described in [RFC2119].
This specification defines conformance criteria that apply to a single product: the user agent that implements the interfaces that it contains.
Implementations that use ECMAScript to implement the APIs defined in this specification MUST implement them in a manner consistent with the ECMAScript Bindings defined in the Web IDL specification [WEBIDL], as this specification uses that specification and terminology.
The EventHandler
interface represents a callback used for event handlers as
defined in [HTML5].
The concepts queue a task and fire a simple event are defined in [HTML5].
The terms event handler and event handler event types are defined in [HTML5].
This API must be only exposed to trusted content.
UDPSocket
The UDPSocket
interface defines
attributes and methods for UDP communication
// // This example shows a simple implementation of UPnP-SSDP M-SEARCH discovery // using a multicast UDPSocket // // Create a UDP socket var mySocket = new UDPSocket (); // Build an SSDP M-SEARCH multicast message var MSearch = "M-SEARCH * HTTP/1.1\r\n" + "ST: " + ServiceType + "\r\n" + "MAN: \"ssdp:discover\"\r\n" + "HOST: <IP_ADDRESS>:1900\r\n" + "MX: 10\r\n\r\n"; var SSDPMulticastAddress = "<IP_ADDRESS>"; var SSDPMulticastPort = 1900; // Join multicast group mySocket.joinMulticastGroup (SSDPMulticastAddress); try { // Send SSDP M-SEARCH multicast message var moreBufferingOK = mySocket.send(MSearch, SSDPMulticastAddress, SSDPMulticastPort); console.log('M-SEARCH Sent!'); } catch(err) { // Sending failed console.error('Sending M-SEARCH failed: ' + err.name); } // Receive M-SEARCH responses mysocket.onmessage = function (udpMessageEvent) { // Convert received data from ArrayBuffer to string var data = arrayBufferToString (udpMessageEvent.data); console.log("Remote address: " + udpMessageEvent.remoteAddress + " Remote port: " + udpMessageEvent.remotePort + " Received data" + data); };
// // This example shows a a simple implementation of reception of UPnP-SSDP // NOTIFY multicast messages // var SSDPMulticastAddress = "<IP_ADDRESS>"; var SSDPMulticastPort = 1900; // Create a UDP socket and bind it to the IP-address of the default // local interface and to the SSDP local port var mySocket = new UDPSocket ({"localPort":SSDPMulticastPort}); // Join multicast group mySocket.joinMulticastGroup (SSDPMulticastAddress); // Receive SSDP NOTFIY mysocket.onmessage = function (UDPMessageEvent) { // Convert received data from ArrayBuffer to string var data = arrayBufferToString (UDPMessageEvent.data); console.log("Remote address: " + UDPMessageEvent.remoteAddress + " Remote port: " + UDPMessageEvent.remotePort + " Received data" + data); };
[Constructor (optional UDPOptions options)]
interface UDPSocket : EventTarget {
readonly attribute DOMString localAddress;
readonly attribute unsigned short localPort;
readonly attribute DOMString? remoteAddress;
readonly attribute unsigned short? remotePort;
readonly attribute boolean addressReuse;
readonly attribute boolean loopback;
readonly attribute unsigned long bufferedAmount;
readonly attribute ReadyState
readyState;;
attribute EventHandler ondrain;
attribute EventHandler onerror;
attribute EventHandler onmessage;
void close ();
void suspend ();
void resume ();
void joinMulticastGroup (DOMString multicastGroupAddress);
void leaveMulticastGroup (DOMString multicastGroupAddress);
boolean send ((DOMString or Blob or ArrayBuffer or ArrayBufferView) data, optional DOMString? remoteAddress, optional unsigned short? remotePort);
};
addressReuse
of type boolean, readonlytrue
allows the socket to be bound to an
address that is already in use. Can be set by the
options
argument in the constructor. Default
is true
.bufferedAmount
of type unsigned long, readonlylocalAddress
of type DOMString, readonlyoptions
argument in the constructor. If not
set the user agent binds the socket to the IPv4/6 address
of the default local interface.localPort
of
type unsigned
short, readonlyoptions
argument in the
constructor. If not set the user agent binds the socket to
a random local port number.loopback
of
type boolean,
readonlytrue
means that data you send is looped
back to your host. Can be set by the options
argument in the constructor. Default is
false
.ondrain
of
type EventHandler,onerror
of
type EventHandler,onmessage
of
type EventHandler,readyState;
of type ReadyState
, readonlyremoteAddress
of type DOMString, readonly ,
nullableremotePort
of type unsigned
short, readonly , nullableclose
Closes the UDP socket. A closed UDP socket can not be used any more.
void
joinMulticastGroup
Joins a multicast group identified by the given address.
Note that even if the socket is only sending to a multicast address, it is a good practice to explicitely join the multicast group (otherwise some routers may not relay packets).
| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| multicastGroupAddress |
DOMString |
✘ | ✘ | The multicast group address. |
void
leaveMulticastGroup
Leaves a multicast group membership identified by the given address.
| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| multicastGroupAddress |
DOMString |
✘ | ✘ | The multicast group address. |
void
resume
Resume reading incoming UDP data and invoking
onmessage
as usual.
void
send
Sends data on the given UDP socket to the given address and port.
If remoteAddress and remotePort arguments are not
given or null the destination is the default address and
port given by the UDPSocket constructor's options
argument's remoteAddress
and
remotePort
fields.
| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| data | (DOMString or
Blob or ArrayBuffer or
ArrayBufferView) |
✘ | ✘ |
The data to write in one of the alternative
representations as stated below:
|
| remoteAddress |
DOMString |
✔ | ✔ | The address of the remote machine. |
| remotePort | unsigned
short |
✔ | ✔ | The port of the remote machine. |
boolean
suspend
Pause reading incoming UDP data and invocations of the
onmessage
handler until resume is
called.
void
When the UDPSocket
constructor is invoked,
the User Agent MUST run
the following steps:
options.localAddress
argument is
absent then bind the socket to the IPv4/6 address of the
default local interface. Otherwise, if the requested local
address is free or if it is in use and the
options.addressReuse
attribute is
true
or absent then bind the socket to the
IPv4/6 address of the requested local interface. Else, throw
an InvalidAccessError
exception and abort these
steps.options.localPort
argument is absent
bind then the socket to any available local port. Otherwise,
if the requested local port is free or if it is in use and
the options.addressReuse
attribute is
true
or absent then bind the socket to the
requested local port. Else, throw an
InvalidAccessError
exception and abort these
steps.options.remoteAddress
field is
present then set the default remote address attribute of the
socket to the requested address.options.remotePort
field is present
then set the default remote port attribute to the requested
port.UDPSocket
object and if the
constructor's options
argument is present set
the corresponding attributes to the values of the fields that
are present in the options
argument, else set
the corresponding attributes to the default values.readyState
attribute to "open".bufferedAmount
attribute to 0.UDPSocket
object to
the application.The send
method when
invoked MUST run the
following steps:
readyState
is "closed" throw DOMException
InvalidStateError
and abort these steps.DOMString
, Blob
,
ArraYBuffer
or ArrayBufferView
,
then throw DOMException InvalidAccessError
and
abort these steps.options.remoteAddress
and
options.remotePort
arguments and the send
method arguments
remoteAddress
and remotePort
are
not present or null then throw DOMException
InvalidAccessError
and abort these steps.ErrorEvent
.
error.name
attribute of the
ErrorEvent
object to
"NetworkError".
error
with the newly created ErrorEvent
instance
at the UDPSocket
object.
readyState
attribute to "closed".data
parameter. If the send
method arguments
remoteAddress
and remotePort
are
present use these as destination, else use the default
address and port of the recipient as stated by the UDPSocket
object constructor's options.remoteAddress
and
options.remotePort
fields.true
or false
as a
hint to the caller that they may either continue sending more
data immediately, or should want to wait until the transport
layer has transmitted buffered data that already have been
written to the socket before buffering more. When less than
an implementation specific value has been buffered and it's
safe to immediately write more set the return value to
true
. When more than an implementation specific
value has been buffered set the return value to
false
. This means that the caller should wait
before buffering more data by more calls to send
until the
ondrain
event handler has been called.bufferedAmount
attribute.
DOMString
the bufferedAmount
attribute is increased by
the number of bytes needed to express the argument as
UTF-8. [UNICODE] [UTF-8]Blob
the
bufferedAmount
attribute is increased by the
size of the Blob
object's raw data, in
bytes. [FILE-API]ArrayBuffer
the bufferedAmount
attribute is increased by
the length of the ArrayBuffer
in bytes.
[TYPED-ARRAYS]ArrayBufferView
the
bufferedAmount
attribute is increased by the
length of the ArrayBufferView
in bytes.
[TYPED-ARRAYS]The close
method when
invoked MUST run the
following steps:
readyState
attribute to "closed".Upon a new UDP datagram being received, the user agent MUST run the following steps:
ArrayBuffer
, [TYPED-ARRAYS], then:
ErrorEvent
.
error.name
attribute of the
ErrorEvent
object to
"NetworkError".
error
with the newly created ErrorEvent
instance
at the UDPSocket
object.
UDPMessageEvent
.
UDPMessageEvent
object's
data attribute to a new read-only ArrayBuffer
object whose contents are the received UDP data
[TYPED-ARRAYS].
remoteAddress
attribute of the
UDPMessageEvent
object to the
source address of the received UDP datagram.
remotePort
attribute of the
UDPMessageEvent
object to the
source port of the received UDP datagram.
message
with the newly created UDPMessageEvent
instance
at the UDPSocket
object.
In the process of sending UDP data, upon a detection that previously-buffered data has been written to the network and it is possible to buffer more data received from the application, the user agent MUST:
drain
at the
UDPSocket
object.
The following are the event handlers (and their
corresponding event handler event types) that MUST be supported as attributes
by the UDPSocket
object.
| event handler | event name |
|---|---|
onmessage |
message |
ondrain |
drain |
onerror |
error |
The message
event SHALL implement the UDPMessageEvent
interface.
The error
event SHALL implement the ErrorEvent
interface.
TCPSocket
The TCPSocket
interface defines
attributes and methods for TCP communication
// // This example shows a simple TCP echo client. // The client will send "Hello World" to the server on port 6789 and log // what has been received from the server. // try { // Create a new TCP client socket and connect to remote host var mySocket = new TCPSocket ("<IP_ADDRESS>", 6789); mySocket.onopen = function() { try { // Send data to server var moreBufferingOK = mySocket.send("Hello World"); console.log('Data sent to server!'); // Receive response from server mySocket.onmessage = function (messageEvent) { // Convert received data from ArrayBuffer to string var data = arrayBufferToString (messageEvent.data); console.log('Data received from server: ' + data); // Close the connection mySocket.close(); } } catch(err) { // Sending failed console.error('Sending failed: ' + err.name); } } // Connection has been closed mySocket.onclose = function { console.log('Connection has been closed'); } // Handle errors mySocket.onerror = function(err) { console.error('Error: ' + err.name); } } catch(err) { // Handle runtime exception console.error('Could not create a TCP socket: ' + err.name); }
[Constructor (DOMString remoteAddress, unsigned short remotePort,
optional TCPOptions options)]
interface TCPSocket : EventTarget {
readonly attribute DOMString remoteAddress;
readonly attribute DOMString remotePort;
readonly attribute DOMString localAddress;
readonly attribute unsigned short localPort;
readonly attribute unsigned long bufferedAmount;
readonly attribute ReadyState
readyState;;
attribute EventHandler ondrain;
attribute EventHandler onopen;
attribute EventHandler onclose;
attribute EventHandler onhalfclose;
attribute EventHandler onerror;
attribute EventHandler onmessage;
void close ();
void halfclose ();
void suspend ();
void resume ();
boolean send ((DOMString or Blob or ArrayBuffer or ArrayBufferView) data);
};
bufferedAmount
of type unsigned long, readonlylocalAddress
of type DOMString, readonlyoptions
argument in the constructor. If not
set the user agent binds the socket to the IPv4/6 address
of the default local interface.localPort
of
type unsigned
short, readonlyoptions
argument in the
constructor. If not set the user agent binds the socket to
a random local port number.onclose
of
type EventHandler,ondrain
of
type EventHandler,onerror
of
type EventHandler,onhalfclose
of type EventHandler,onmessage
of
type EventHandler,onopen
of type
EventHandler,readyState;
of type ReadyState
, readonlyremoteAddress
of type DOMString, readonlyremotePort
of type DOMString,
readonlyclose
Closes the TCP socket.
void
halfclose
"Halfcloses" the TCP socket. This means that FIN is sent and that the socket no longer can be used to send data. However, receiving is still possible.
void
resume
Resume reading incoming TCP data and invoking
onmessage
as usual.
void
send
Sends data on the given connected TCP socket.
| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| data | (DOMString or
Blob or ArrayBuffer or
ArrayBufferView) |
✘ | ✘ |
The data to write in one of the alternative
representations as stated below:
|
boolean
suspend
Pause reading incoming TCP data and invocations of the
onmessage
handler until resume is
called.
void
When the TCPSocket
constructor is invoked,
the User Agent MUST run
the following steps:
remoteAddress
argument is not a valid
IPv4/6 address or the remotePort
argument is not
a valid port number then throw an
InvalidAccessError
exception and abort these
steps, else set the remoteAddress
and
remotePort
attributes to the requested
values.options.localAddress
argument is
absent bind the socket to the IPv4/6 address of the default
local interface. Otherwise, if the requested local address is
free then bind the socket to the IPv4/6 address of the
requested local interface. Else, throw an
InvalidAccessError
exception and abort these
steps.options.localPort
argument is absent
bind then the socket to any available local port. Otherwise,
if the requested local port is free bind the socket to the
requested local port. Else, throw an
InvalidAccessError
exception and abort these
steps.localAddress
and
localPort
attributes to the selected values
according to above.readyState
attribute to
"connecting".bufferedAmount
attribute to 0.TCPSocket
object to the
application.
The send
method when
invoked MUST run the
following steps:
readyState
is not "open" throw
DOMException InvalidStateError
and abort these
steps.DOMString
, Blob
,
ArraYBuffer
or ArrayBufferView
,
then throw DOMException InvalidAccessError
and
abort these steps.readyState
attribute's value
to "closed".ErrorEvent
.
error.name
attribute of the
ErrorEvent
object to
"NetworkError".
error
with the newly created ErrorEvent
instance
at the TCPSocket
object.
close
at
the TCPSocket
object.
data
parameter to the address and
port of the recipient as stated by the TCPSocket object
constructor's remoteAddress
and
remotePort
fields.true
or false
as a
hint to the caller that they may either continue sending more
data immediately, or should want to wait until the transport
layer has transmitted buffered data that already have been
written to the socket before buffering more. When less than
an implementation specific value has been buffered and it's
safe to immediately write more set the return value to
true
. When more than an implementation specific
value has been buffered set the return value to
false
. This means that the caller should wait
before buffering more data by more calls to send
until the
ondrain
event handler has been called.bufferedAmount
attribute.
DOMString
the bufferedAmount
attribute is increased by
the number of bytes needed to express the argument as
UTF-8. [UNICODE] [UTF-8]Blob
the
bufferedAmount
attribute is increased by the
size of the Blob
object's raw data, in
bytes. [FILE-API]ArrayBuffer
the bufferedAmount
attribute is increased by
the length of the ArrayBuffer
in bytes.
[TYPED-ARRAYS]ArrayBufferView
the
bufferedAmount
attribute is increased by the
length of the ArrayBufferView
in bytes.
[TYPED-ARRAYS]The close
method
when invoked MUST run the
following steps:
readyState
is "closing" or "closed" then
do nothing.readyState
is "connecting" then fail the
connection attempt and set the readyState
attribute to "closing".readyState
is "open" close the connection
and set the readyState
attribute to
"closing".The halfclose
method when invoked MUST
run the following steps:
readyState
is "closing" or "closed" then
do nothing.readyState
is "connecting" then complete
the connection attempt. If succesful send FIN and set the
readyState
attribute to "halfclosed".readyState
is "open" then send FIN and
set the readyState
attribute to
"halfclosed".When a new TCP connection has been successfully established the user agent MUST run the following steps:
readyState
attribute's value to
"open".open
at the
TCPSocket
object.
When the attempt to establish a new TCP connection
(readyState
is "connecting") has failed the
user agent
MUST run the following
steps:
readyState
attribute's value to
"closed".ErrorEvent
.
error.name
attribute of the
ErrorEvent
object to
"NetworkError".
error
with
the newly created ErrorEvent
instance at the
TCPSocket
object.
When an established TCP connection (readyState
is "open") is lost the user agent MUST run the following steps:
readyState
attribute's value to
"closed".ErrorEvent
.
error.name
attribute of the
ErrorEvent
object to
"NetworkError".
error
with
the newly created ErrorEvent
instance at the
TCPSocket
object.
close
at the
TCPSocket
object.
Upon a new TCP message being received, the user agent MUST run the following steps:
ArrayBuffer
, [TYPED-ARRAYS], then:
ErrorEvent
.
error.name
attribute of the
ErrorEvent
object to
"NetworkError".
error
with the newly created ErrorEvent
instance
at the UDPSocket
object.
MessageEvent
,
[POSTMSG].MessageEvent
object's data
attribute to a new read-only ArrayBuffer
object
whose contents are the received TCP data [TYPED-ARRAYS].message
with the newly created MessageEvent
instance
at the TCPSocket
object.
Note: It is up to the implementation the define how often
the message
event will be issued and how
much data that will be delivered to the application with each
MessageEvent instance.
In the process of sending TCP data, upon a detection that previously-buffered data has been written to the network and it is possible to buffer more data received from the application, the user agent MUST:
drain
at the
TCPSocket
object.
When a TCP connection has been closed cleanly, either by the
server, or by the client calling close()
the
user agent
MUST run the following
steps:
readyState
attribute's value to
"closed".close
at the
TCPSocket
object.
The following are the event handlers (and their
corresponding event handler event types) that MUST be supported as attributes
by the TCPSocket
object.
| event handler | event name |
|---|---|
onmessage |
message |
ondrain |
drain |
onopen |
open |
onclose |
close |
onhalfclose |
halfclose |
onerror |
error |
The message
event SHALL implement the
MessageEvent
interface, [POSTMSG]. The event's data
attribute is intialized to a new read-only
ArrayBuffer
object whose contents are the
recieved UDP data. [TYPED-ARRAYS]
The error
event SHALL implement the ErrorEvent
interface.
TCPServerSocket
The TCPServerSocket
interface supports
TCP server sockets that listens to connection attempts from TCP
clients
// // This example shows a simple TCP echo server. // The server will listen on port 6789 and respond back with what ever // has been sent to the server. // try { // Create a new server socket that listens on port 6789 var myServerSocket = new TCPServerSocket ({"localPort":6789}); myServerSocket.onconnect = function (connectEvent) { var connectedSocket = connectEvent.connectedSocket; // Read the data connectedSocket.onmessage = function (messageEvent) { var data = messageEvent.data; try { // Send data back to client var moreBufferingOK = connectedSocket.send(data); console.log('Response sent to client!'); } catch(err) { // Sending failed console.error('Sending failed: ' + err.name); } } // Connection has been closed connectedSocket.onclose = function { console.log('Connection has been closed'); } } } catch(err) { // Handle runtime exception console.error('Could not create a TCP server socket: ' + err.name); }
[Constructor (optional TCPServerOptions options)]
interface TCPServerSocket : EventTarget {
readonly attribute DOMString localAddress;
readonly attribute unsigned short localPort;
readonly attribute ReadyState
readyState;;
attribute EventHandler onconnect;
attribute EventHandler onerror;
void close ();
void suspend ();
void resume ();
};
localAddress
of type DOMString, readonlyoptions
argument in the constructor. If
not set the user agent binds the socket to the IPv4/6
address of the default local interface.localPort
of type unsigned short, readonlyoptions
argument in the
constructor. If not set the user agent binds the socket to
a random local port number.onconnect
of type EventHandler,onerror
of type EventHandler,readyState;
of type ReadyState
, readonlyclose
Closes the TCP server socket, i.e. listening for incoming connections is stopped. Existing TCP connections are kept open.
void
resume
Resume listening for incoming connections and
invocations of the onconnecion
handler as
usual.
void
suspend
Pause listening for incoming connections and
invocations of the onconnecion
handler until
resume() is called.
void
When the TCPServerSocket
constructor is
invoked, the User Agent MUST run the following steps:
InvalidAccessError
exception and abort these
steps.options.localAddress
argument is
absent then listen to the IPv4/6 address of the default local
interface. Otherwise, if the requested local address is free
then listen to the IPv4/6 address of the requested local
interface. Else, throw an InvalidAccessError
exception and abort these steps.options.localPort
argument is absent
then bind the socket to any available local port. Otherwise,
if the requested local port is free then bind the socket to
the requested local port. Else, throw an
InvalidAccessError
exception and abort these
steps.TCPServerSocket
object and set the
localAddress
and localPort
attributes to selected values accoring to above.
readyState
attribute to "open".TCPServerSocket
object to the
application.
The close
method
when invoked MUST run the
following steps:
readyState
attribute to
"closed".Upon a new successful connection to the TCP server socket the user agent MUST run the following steps:
ConnectEvent
.
TCPSocket
.
remoteAddress
attribute of
socket to the IPv4/6 address of the peer.remotePort
attribute of
socket to the source port of the of the peer.localAddress
attribute of
socket to the used local IPv4/6 address.localPort
attribute of
socket to the used local source port.readyState
attribute of
socket to "open".bufferedAmount
attribute of
socket to 0.connectedSocket
attribute of the
ConnectEvent
object to
socket.
connect
with
the newly created ConnectEvent
instance at the
TCPServerSocket
object.
Upon a new connection attempt to the TCP server socket that can not be served, e.g. due to max number of open connections, the user agent MUST run the following steps:
ErrorEvent
.
error.name
attribute of the
ErrorEvent
object to
"NetworkError".
error
with
the newly created ErrorEvent
instance at the
TCPServerSocket
object.
The following are the event handlers (and their
corresponding event handler event types) that MUST be supported as attributes
by the TCPServerSocket
object.
| event handler | event name |
|---|---|
onconnect |
connect |
onerror |
error |
The connect
event SHALL implement the ConnectEvent
interface.
The error
event SHALL implement the ErrorEvent
interface.
UDPMessageEvent
The UDPMessageEvent
interface represents
events related to received UDP data. This interface extends the
MessageEvent
interface, [POSTMSG]
The event's data attribute is intialized to a new read-only ArrayBuffer object whose contents are the recieved UDP data, [TYPED-ARRAYS]
[NoInterfaceObject]
interface UDPMessageEvent : MessageEvent {
readonly attribute DOMString remoteAddress;
readonly attribute unsigned short remotePort;
};
remoteAddress
of type DOMString, readonlyremotePort
of type unsigned short, readonlyConnectEvent
The ConnectEvent
interface represents
events related to accepted connections to a TCP server
socket.
[NoInterfaceObject]
interface ConnectEvent : Event {
readonly attribute TCPSocket
connectedSocket;
};
connectedSocket
of type TCPSocket
, readonlyErrorEvent
The ErrorEvent
interface represents
events related to TCP connection errors.
[NoInterfaceObject]
interface ErrorEvent : Event {
readonly attribute DOMError error;
};
error
of type
DOMError,
readonlyUDPOptions
States the options for the UDPSocket. An instance of this
dictionary can optionally be used in the constructor of the
UDPSocket
object, where all fields
are optional.
dictionary UDPOptions {
DOMString localAddress;
unsigned short localPort;
DOMString remoteAddress;
unsigned short remotePort;
boolean addressReuse;
boolean loopback;
};
UDPOptions
MembersaddressReuse
of type booleantrue
allows the socket to be bound to an
address that is already in use. Default is
true
.localAddress
of type DOMStringlocalPort
of type unsigned
shortloopback
of
type booleantrue
means that data you send is looped
back to your host. Default is false
.remoteAddress
of type DOMStringremotePort
of type unsigned
shortDo we need secure transport for UDP sockets??
TCPOptions
States the options for the TCPSocket. An instance of this
dictionary can optionally be used in the constructor of the
TCPSocket
object, where all fields
are optional.
dictionary TCPOptions {
DOMString localAddress;
unsigned short localPort;
boolean useSecureTransport;
};
TCPOptions
MemberslocalAddress
of type DOMStringlocalPort
of type unsigned
shortuseSecureTransport
of type booleantrue
if socket uses SSL or TLS. Default is
false
.Not sure if applications need to be able to bind the TCP Socket to local address/port?
Use of secure transport needs more investigation
TCPServerOptions
States the options for the TCPServerSocket. An instance of this dictionary can optionally be used in the constructor of the TCPServerSocket object, where all fields are optional.
dictionary TCPServerOptions {
DOMString localAddress;
unsigned short localPort;
boolean useSecureTransport;
};
TCPServerOptions
MemberslocalAddress
of type DOMStringlocalPort
of type unsigned shortuseSecureTransport
of type booleantrue
if socket uses SSL or TLS. Default is
false
.Use of secure transport needs more investigation
enum ReadyState {
"connecting",
"open",
"closing",
"closed",
"halfclosed"
};
| Enumeration description | |
|---|---|
connecting |
The TCP connection has not yet been established. |
open |
The TCP connection is established and communication is possible. |
closing |
The TCP connection is going through the closing handshake, or the close() method has been invoked. |
closed |
The TCP connection has been closed or could not be opened. |
halfclosed |
The TCP connection has been "halfclosed", which means that it is not possible to send data but it is still possible to received. |
Many thanks to Robin Berjon for making our lives so much easier with his cool tool.


{% extends "sharp/base.html" %} {% block title %}Creating project... Please wait...{% endblock %} {% block body %}
This should take less then 5 seconds! If it takes more then 1 minute then try the retry button below


Mission: Impossible 2 Rated [PG-13], 125 minutes Starring Tom Cruise Screenplay by Robert Towne Story by Ronald D. Moore &Brannon Braga based on the TV series created by Bruce Geller Directed by John Woo website: www.missionimpossible.com
IN SHORT: An average John Woo flick
"Good morning Mr. Hunt (Tom Cruise). The picture you see is a Dr. Nekhorvich (Rade Sherbedgia) of Biocyte Pharmaceuticals. Dr. Nekhorvich was killed in a plane crash while on his way to deliver something to us. We don't know what but it's really dangerous. IM agent Sean Ambrose (Dougray Scott) was on the plane, too, and we haven't found the body. We're not sure where he is, if he's screwed us, or exactly what your mission is, other than to stop something really nasty from happening. We're sure you'll figure it out along the way. Oh, you can only use two agents and you must include a civilian thief named Nyah Hall (Thandie Newton) on the team. We know we're not supposed to configure your team, but we can discuss that when you come over and discuss the matter in person with us (Anthony Hopkins). If you or any member of you IM team should be caught or killed, yada yada yada. Have a nice day."
With all the baggage of the past buried and forgotten, John Woo takes up the director's reigns, overseeing the one-man strike force that is Ethan Hunt, leader of the Impossible Mission "team," in Mission: Impossible 2. Woo, whose visual sense can make a boy giddy, lets loose with both barrels and all the visual fireworks he can put on the big screen. That's a good thing 'cuz the M:I2 script stinks. Like its big screen predecessor this flick has very little in common with the television series it is based upon, other than a self-destructing set of instructions and characters pulling rubber mask disguises off their faces. We don't compare to Source Material. Fans of the series can figure out what's different from the paragraph above.
Then again, it's summertime, when all most of us want out of a movie is onscreen fireworks and a reason to plunge our mitts into the extra-large-super-sized popcorn up to our elbows. M:I2 delivers that in spades, refusing to cut fight scenes that run on too long, resorting to makeup gimmicks instead of developing a great story and, in short, refusing to roll over and play dead when its story was done. It's almost as if the writers and Woo sat down and figured out what would be really cool to do and which really cool bits would be even cooler if shot in slow motion, and then wrote the script around them. That means a motorcycle duel, a half naked Cruise on a rock and the gun in the sand bits that are in the teevee commercial, and a wee bit of "aerobatic insanity" that reprises something in the last flick and which had the audience happily giggling.
Absolutely giddy. Myself included. I told you.
If you're a novice to the concept, the IM is a secret force that manipulates situations to bring about conclusions that punish the evil guys and ensure that truth, justice and the American way win out. In this case, it's the story of one renegade agent and his possession of an artificially created strain of influenza that could devastate the world. The "good" IM team -- our heroes include Ving Rhames, the only returnee from M:I1 and John Polson as an almost utterly dispensable guy with an Australian accent, useful since the film is set in Australia -- must track and destroy another -- Richard Roxbury is the muscle on bad guy Ambrose's side -- using the civilian and a small tracking device implanted in Newton's ankle, as bait. The notion of one IM team against another one is a good one. The problem is that one team leader knows all about the moves of the other, and not vice versa. The bad guys also have all the IM technology, so how they miss the tracking device is news to me.
No, it's not.  It's scriptwriters ignoring what they've written earlier in the script. But, just as in the last flick, this series is not so much about the story as it is about Ethan Hunt, $20 million dollar action figure.  He makes a great John Woo movie action toy. The action sequences, as in everything John Woo does, are the reason to lay out hard cash to see the flick. Bullets fly. Explosions, um, explode. Cruise does unbelievable physical things believably and gets a love interest to boot. So the hell with history and any requirement of logic in the script.
Buy the extra big popcorn and stick to the small soda. This sequel is less complicated than the last one, but if you have to make a quick run, you'll still miss something important.
On average, a first run movie ticket will run you Eight Bucks. Were Cranky able to set his own price to Mission: Impossible 2, he would have paid...
$4.50
It's a summertime, popcorn dateflick. All sweetener and no nutritional value at all.
Cranky Critic® is a Registered Trademark of, and Copyright © 2000 by, Chuck Schwartz. All Rights Reserved. Cranky on the web at www.crankycritic.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Created on 04/02/2013
@author: victor
Bases: object
Observer for MPI. It’s replicated n times (where n is the number of processes), no possible race conditions occur except a possible race condition with stdout. Because of this, the observer accumulates all messages to finally write them into a file.
Created on 04/02/2013
@author: victor


class Builder
Methods
| void |
__construct(Connection $connection)
Create a new database Schema manager. |
|
| bool |
hasTable(string $table)
Determine if the given table exists. |
|
| bool |
hasColumn(string $table, string $column)
Determine if the given table has a given column. |
|
| Blueprint |
table(string $table, Closure $callback)
Modify a table on the schema. |
|
| Blueprint |
create(string $table, Closure $callback)
Create a new table on the schema. |
|
| Blueprint |
drop(string $table)
Drop a table from the schema. |
|
| Blueprint |
dropIfExists(string $table)
Drop a table from the schema if it exists. |
|
| Blueprint |
rename(string $from, string $to)
Rename a table on the schema. |
|
| Connection |
getConnection()
Get the database connection instance. |
|
| Builder |
setConnection(Connection $connection)
Set the database connection instance. |
Details
at line 28
public void
__construct(Connection $connection)
Create a new database Schema manager.
at line 40
public bool
hasTable(string $table)
Determine if the given table exists.
at line 56
public bool
hasColumn(string $table, string $column)
Determine if the given table has a given column.
at line 85
public Blueprint
table(string $table, Closure $callback)
Modify a table on the schema.
at line 97
public Blueprint
create(string $table, Closure $callback)
Create a new table on the schema.
at line 114
public Blueprint
drop(string $table)
Drop a table from the schema.
at line 129
public Blueprint
dropIfExists(string $table)
Drop a table from the schema if it exists.
at line 145
public Blueprint
rename(string $from, string $to)
Rename a table on the schema.
at line 182
public Connection
getConnection()
Get the database connection instance.
at line 193
public Builder
setConnection(Connection $connection)
Set the database connection instance.


|
|
IFXIterator Class ReferenceThis is the abstract base class for all iterators. More...
Inheritance diagram for IFXIterator:
Detailed DescriptionThis is the abstract base class for all iterators.There is nothing more to it at this point than a pointer to a data buffer and a stride between data elements in the buffer.
Constructor & Destructor Documentation
Member Function Documentation
Member Data Documentation
|


 We want to know all about it!
How long did you have to wait to be seated? Were the waitstaff friendly and helpful, or rude and dismissive?
You could lug a notebook and take detailed notes each visit - taking your attention away from why you came in the first place (to experience the meal), or you can leverage FoodieFun and easily record and access all the important details, freeing you up to focus exclusively on the meal.


This challenge is an introduction to javascript and covers basic information such as passing data to functions and showing displaying the outcome
This challenge focuses on strings and introduces arrays.
This challenge was to create a person and check to see if they are age is between 20 and 40.
This challenge focuses on loops. This was to create a function that will display every number till a specified value and some text when some conditions were met. The other exercise was to get a number and keep dividing it by 3 till it got to 1.
This challenge focuses on creating paragraphs, editing them and deleting them.
This challenge focuses on using javascript to load JSON files and searching for a particular attribute in a JSON file.
This challenge focuses on creating a function that simulates a garage.
This challenge focuses on creating a damage modifier calculator using the pokemon api.


CSPICE_GETFOV returns the field-of-view parameters for a user
specified instrument.
Given:
instid NAIF ID for the instrument of interest.
[1,1] = size(instid); int32 = class(instid)
room the max number of double precision 'bounds' vectors to return.
[1,1] = size(room); int32 = class(room)
the call:
[shape, frame, bsight, bounds] = cspice_getfov( instid, room)
returns:
shape the FOV shape for instrument 'instid'. Possible values:
[1,m] = size(shape); char = class(shape)
"POLYGON"
"RECTANGLE"
"CIRCLE"
"ELLIPSE"
frame the name of the frame in which the FOV is defined.
[1,m] = size(frame); char = class(frame)
bsight the vector pointing in the direction of the FOV center
(boresight).
[3,1] = size(bsight); double = class(bsight)
bounds set of vectors pointing to the "corners" of the instrument FOV,
i.e. 'bounds' returns as a N columns of 3-vectors.
[3,n] = size(bounds); double = class(bounds)
Note: do not consider 'bounds' as a matrix in the
conventional sense. Its 3XN form serves only as
a container for the bounds vectors.
Any numerical results shown for this example may differ between
platforms as the results depend on the SPICE kernels used as input
and the machine specific arithmetic implementation.
The example program in this section loads the IK file
'example.ti' with the following contents defining four FOVs of
various shapes and sizes:
KPL/IK
The keywords below define a circular, 10-degree wide FOV with
the boresight along the +Z axis of the 'SC999_INST001' frame
for an instrument with ID -999001 using the "angles"-class
specification.
\begindata
INS-999001_FOV_CLASS_SPEC = 'ANGLES'
INS-999001_FOV_SHAPE = 'CIRCLE'
INS-999001_FOV_FRAME = 'SC999_INST001'
INS-999001_BORESIGHT = ( 0.0, 0.0, 1.0 )
INS-999001_FOV_REF_VECTOR = ( 1.0, 0.0, 0.0 )
INS-999001_FOV_REF_ANGLE = ( 5.0 )
INS-999001_FOV_ANGLE_UNITS = ( 'DEGREES' )
\begintext
The keywords below define an elliptical FOV with 2- and
4-degree angular extents in the XZ and XY planes and the
boresight along the +X axis of the 'SC999_INST002' frame for
an instrument with ID -999002 using the "corners"-class
specification.
\begindata
INS-999002_FOV_SHAPE = 'ELLIPSE'
INS-999002_FOV_FRAME = 'SC999_INST002'
INS-999002_BORESIGHT = ( 1.0, 0.0, 0.0 )
INS-999002_FOV_BOUNDARY_CORNERS = ( 1.0, 0.0, 0.01745506,
1.0, 0.03492077, 0.0 )
\begintext
The keywords below define a rectangular FOV with 1.2- and
0.2-degree angular extents in the ZX and ZY planes and the
boresight along the +Z axis of the 'SC999_INST003' frame for
an instrument with ID -999003 using the "angles"-class
specification.
\begindata
INS-999003_FOV_CLASS_SPEC = 'ANGLES'
INS-999003_FOV_SHAPE = 'RECTANGLE'
INS-999003_FOV_FRAME = 'SC999_INST003'
INS-999003_BORESIGHT = ( 0.0, 0.0, 1.0 )
INS-999003_FOV_REF_VECTOR = ( 1.0, 0.0, 0.0 )
INS-999003_FOV_REF_ANGLE = ( 0.6 )
INS-999003_FOV_CROSS_ANGLE = ( 0.1 )
INS-999003_FOV_ANGLE_UNITS = ( 'DEGREES' )
\begintext
The keywords below define a triangular FOV with the boresight
along the +Y axis of the 'SC999_INST004' frame for an
instrument with ID -999004 using the "corners"-class
specification.
\begindata
INS-999004_FOV_SHAPE = 'POLYGON'
INS-999004_FOV_FRAME = 'SC999_INST004'
INS-999004_BORESIGHT = ( 0.0, 1.0, 0.0 )
INS-999004_FOV_BOUNDARY_CORNERS = ( 0.0, 0.8, 0.5,
0.4, 0.8, -0.2,
-0.4, 0.8, -0.2 )
\begintext
The program shown below loads the IK, fetches parameters for each
of the four FOVs and prints these parameters to the screen.
function getfov_t()
%
% Set maximum number of boundary vectors, number of
% instruments and instrument IDs.
%
MAXBND = 4;
NUMINS = 4;
insids = [ -999001, -999002, -999003, -999004 ];
%
% Load the IK file.
%
cspice_furnsh ( 'example.ti' );
%
% For each instrument ...
%
fprintf ( '--------------------------------------\n' );
for i = 1:NUMINS
%
% ... fetch FOV parameters and ...
%
[shape, frame, bsight, bounds] = ...
cspice_getfov( insids(i), MAXBND );
%
% ... print them to the screen.
%
fprintf ( 'Instrument ID: %i\n', insids(i) );
fprintf ( ' FOV shape: %s\n', shape );
fprintf ( ' FOV frame: %s\n', frame );
fprintf ( 'FOV boresight: %f %f %f\n', ...
bsight(1), bsight(2), bsight(3) );
fprintf ( ' FOV corners: \n' );
[m,n] = size(bounds);
for j= 1:n
fprintf ( ' %f %f %f\n', ...
bounds(1,j), bounds(2,j), bounds(3,j) );
end
fprintf ( '--------------------------------------\n' );
end
The program produces the following output:
--------------------------------------
Instrument ID: -999001
FOV shape: CIRCLE
FOV frame: SC999_INST001
FOV boresight: 0.000000 0.000000 1.000000
FOV corners:
0.087156 0.000000 0.996195
--------------------------------------
Instrument ID: -999002
FOV shape: ELLIPSE
FOV frame: SC999_INST002
FOV boresight: 1.000000 0.000000 0.000000
FOV corners:
1.000000 0.000000 0.017455
1.000000 0.034921 0.000000
--------------------------------------
Instrument ID: -999003
FOV shape: RECTANGLE
FOV frame: SC999_INST003
FOV boresight: 0.000000 0.000000 1.000000
FOV corners:
0.010472 0.001745 0.999944
-0.010472 0.001745 0.999944
-0.010472 -0.001745 0.999944
0.010472 -0.001745 0.999944
--------------------------------------
Instrument ID: -999004
FOV shape: POLYGON
FOV frame: SC999_INST004
FOV boresight: 0.000000 1.000000 0.000000
FOV corners:
0.000000 0.800000 0.500000
0.400000 0.800000 -0.200000
-0.400000 0.800000 -0.200000
--------------------------------------
This routine provides a common interface to retrieving the geometric
characteristics of an instrument field of view for a wide variety of
remote sensing instruments across many different space missions.
Given the NAIF instrument ID, (and having "loaded" the
instrument field of view description via the routine cspice_furnsh)
this routine returns the bore-sight of the instrument, the
"shape" of the field of view, a collection of vectors
that point along the edges of the field of view, and the
name of the reference frame in which these vectors are defined.
Currently this routine supports two classes of specifications
for FOV definitions: "corners" and "angles".
The "corners" specification requires the following keywords
defining the shape, boresight, boundary vectors, and reference
frame of the FOV be provided in one of the text kernel files
(normally an IK file) loaded into the kernel pool (in the
keywords below <INSTID> is replaced with the instrument ID as
passed into the module):
INS<INSTID>_FOV_CLASS_SPEC must be set to 'CORNERS' or
omitted to indicate the
"corners"-class
specification.
INS<INSTID>_FOV_SHAPE must be set to one of these
values:
'CIRCLE'
'ELLIPSE'
'RECTANGLE'
'POLYGON'
INS<INSTID>_FOV_FRAME must contain the name of
the frame in which the
boresight and boundary
corner vectors are defined.
INS<INSTID>_BORESIGHT must be set to a 3D vector
defining the boresight in
the FOV frame specified in
the FOV_FRAME keyword.
INS<INSTID>_FOV_BOUNDARY or
INS<INSTID>_FOV_BOUNDARY_CORNERS must be set to one (for
FOV_SHAPE = 'CIRCLE'), two
(for FOV_SHAPE =
'ELLIPSE'), three (for
FOV_SHAPE = 'RECTANGLE'),
or three or more (for
'POLYGON') 3D vectors
defining the corners of the
FOV in the FOV frame
specified in the FOV_FRAME
keyword.
The "angles" specification requires the following keywords
defining the shape, boresight, reference vector, reference and
cross angular extents of the FOV be provided in one of the text
kernel files (normally an IK file) loaded into the kernel
pool (in the keywords below <INSTID> is replaced with the
instrument ID as passed into the module):
INS<INSTID>_FOV_CLASS_SPEC must be set to 'ANGLES' to
indicate the "angles"-class
specification.
INS<INSTID>_FOV_SHAPE must be set to one of these
values:
'CIRCLE'
'ELLIPSE'
'RECTANGLE'
INS<INSTID>_FOV_FRAME must contain the name of
the frame in which the
boresight and the computed
boundary corner vectors are
defined.
INS<INSTID>_BORESIGHT must be set to a 3D vector
defining the boresight in
the FOV frame specified in
the FOV_FRAME keyword.
INS<INSTID>_FOV_REF_VECTOR must be set to a 3D vector
that together with the
boresight vector defines
the plane in which the
first angular extent of the
FOV specified in the
FOV_REF_ANGLE keyword is
measured.
INS<INSTID>_FOV_REF_ANGLE must be set to the angle
that is 1/2 of the total
FOV angular extent in the
plane defined by the
boresight and the vector
specified in the
FOV_REF_VECTOR keyword.
INS<INSTID>_FOV_CROSS_ANGLE must be set to the angle
that is 1/2 of the total
FOV angular extent in the
plane containing the
boresight and perpendicular
to the plane defined by the
boresight and the vector
specified in the
FOV_REF_VECTOR keyword.
This keyword is not
required for FOV_SHAPE =
'CIRCLE'.
INS<INSTID>_FOV_ANGLE_UNITS must specify units for the
angles given in the
FOV_REF_ANGLE and
FOV_CROSS_ANGLE keywords.
Any angular units
recognized by cspice_convrt
are acceptable.
This routine is intended to be an intermediate level routine.
It is expected that users of this routine will be familiar
with the SPICE frames subsystem and will be comfortable writing
software to further manipulate the vectors retrieved by this
routine.
For important details concerning this module's function, please refer to
the CSPICE routine getfov_c.
MICE.REQ
-Mice Version 1.0.3, 12-MAR-2012, EDW (JPL), SCK (JPL)
I/O descriptions edits to conform to Mice documentation format.
-Mice Version 1.0.2, 24-APR-2010, EDW (JPL)
Minor edit to code comments eliminating typo.
-Mice Version 1.0.1, 05-FEB-2009, BVS (JPL)
Header update: added information about required IK keywords;
replaced old example with a new one more focused on getfov_c and
IK keywords.
-Mice Version 1.0.0, 07-DEC-2005, EDW (JPL)
return instrument's FOV parameters
|


--- # blog page must be named index.html and in its own folder to support pagination # https://jekyllrb.com/docs/pagination/ layout: page title: Blog ---
A curation of learnings, musings and similarly captured day dreams.
Nothing published yet!
{% elsif site.paginate %} {% for post in paginator.posts %} {% include blog-post.html %} {% endfor %} {% else %} {% for post in site.posts %} {% if post.category == 'blog' %} {% if post.hidden != true %} {% include blog-post.html %} {% endif %} {% endif %} {% endfor %} {% endif %}


Linked Movie App is an university project for the lecture Semantic Web & Linked Data.
The goal was to utilize Semantic Web technologies. We decided to build an app that allows you to create a graph similar to the Google Knowledge Graph
based on the movie data on LinkedMDB.


Twitter is rolling out a fix for the 'auto-scrolling' bug on iOS
Look for v8.1.5 on your iPhone or iPad.
by Richard LawlerHas the Twitter timeline been extra jumpy on your iPhone or iPad? Yesterday Twitter acknowledged the "frustrating" issue, and now an update to address it is rolling out via the App Store. It's unclear if it was supposed to be a seamless addition of new tweets that simply didn't behave properly, but now users should be able to decide whether or not the tweet they're looking at is worth reading without the app deciding it's time to move on. The fixed version is v8.1.5, so if you're still on 8.1, then hang on -- it's coming.


|
mxnet
|
dynamic shape class that can hold shape of arbirary dimension More...
#include <shape.h>
Public Member Functions | |
| Shape () | |
| constructor More... | |
| Shape (const std::vector< index_t > &v) | |
| constructor from a vector of index_t More... | |
| Shape (index_t s1) | |
| constructor one dimmension shape More... | |
| Shape (index_t s1, index_t s2) | |
| constructor two dimmension shape More... | |
| Shape (index_t s1, index_t s2, index_t s3) | |
| constructor three dimmension shape More... | |
| Shape (index_t s1, index_t s2, index_t s3, index_t s4) | |
| constructor four dimmension shape More... | |
| Shape (index_t s1, index_t s2, index_t s3, index_t s4, index_t s5) | |
| constructor five dimmension shape More... | |
| Shape (const Shape &s) | |
| constructor from Shape More... | |
| ~Shape () | |
| destructor More... | |
| template<typename RandomAccessIterator > | |
| void | CopyFrom (RandomAccessIterator begin, RandomAccessIterator end) |
| copy shape from content betwen two iterators More... | |
| Shape & | operator= (const Shape &shape) |
| assignment from shape More... | |
| Shape & | operator= (const std::vector< index_t > &shape) |
| assignment from vector More... | |
| const index_t * | data () const |
| index_t * | data () |
| index_t | ndim (void) const |
| return number of dimension of the tensor inside More... | |
| index_t & | operator[] (index_t i) |
| get corresponding index More... | |
| const index_t & | operator[] (index_t i) const |
| get corresponding index More... | |
| size_t | Size (void) const |
| total number of elements in the tensor More... | |
| bool | operator== (const Shape &s) const |
| bool | operator!= (const Shape &s) const |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const Shape &shape) |
| allow string printing of the shape More... | |
| std::istream & | operator>> (std::istream &is, Shape &shape) |
| read shape from the istream More... | |
dynamic shape class that can hold shape of arbirary dimension
|
inline |
constructor
|
inlineexplicit |
constructor from a vector of index_t
| v | the vector |
|
inlineexplicit |
constructor one dimmension shape
| s1 | size of the first dimmension |
constructor two dimmension shape
| s1 | size of the first dimmension |
| s2 | size of the second dimmension |
constructor three dimmension shape
| s1 | size of the first dimmension |
| s2 | size of the second dimmension |
| s3 | size of the third dimmension |
constructor four dimmension shape
| s1 | size of the first dimmension |
| s2 | size of the second dimmension |
| s3 | size of the third dimmension |
| s4 | size of the fourth dimmension |
constructor five dimmension shape
| s1 | size of the first dimmension |
| s2 | size of the second dimmension |
| s3 | size of the third dimmension |
| s4 | size of the fourth dimmension |
| s5 | size of the fifth dimmension |
|
inline |
constructor from Shape
| s | the source shape |
|
inline |
destructor
|
inline |
copy shape from content betwen two iterators
| begin | the beginning of iterator |
| end | the end of the iterator |
| RandomAccessIterator | iterator type |
|
inline |
|
inline |
|
inline |
return number of dimension of the tensor inside
|
inline |
| s | the shape to compare against |
assignment from shape
| shape | source shape |
assignment from vector
| shape | source shape |
|
inline |
| s | the shape to compare against |
get corresponding index
| i | dimension index |
get corresponding index
| i | dimension index |
|
inline |
total number of elements in the tensor
|
friend |
allow string printing of the shape
| os | the output stream |
| shape | the shape |
|
friend |
read shape from the istream
| is | the input stream |
| shape | the shape |


Crispy Pancakes
Ingredients
- 1.5 cups flour
- 2 tsp baking powder
- 1/2 tsp baking soda
- 3 Tbs sugar
- 2 eggs
- 3 cups milk
- 3 Tbs butter, melted
- vegetable oil
Instructions
- Place a large pan or griddle over medium heat. Apply generous oil. You’re pretty much going to fry these pankcakes.
- In a large bowl, mix together the flour, baking powder, baking soda and sugar.
- Make a well in the center and add the eggs, milk and butter. Whisk together until thoroughly mixed. The mixture should be very soupy.
- Test your griddle using a small amount of batter — make sure that the griddle is hot enough.
- Pour out pancakes (about 1/4 cup at a time), and flip once the bottom has turned a golden brown. One the other side is cooked, serve topped with butter and syrup.


--- layout: post title: Pencil date: '2013-08-04T20:52:00+02:00' categories: - Storyboards picture_url: https://film-Storyboards.tumblr.com/post/57385785767/pencil ---
Circus show Storyboards. Rare use of pencil.


Jellybeanprettykitty: An HTML webpage for a pet cat named Jellybean.
Cupcake Capitol: A webpage for an imaginary cupcake shop.
Languages used:
I'm a student at Epicodus studying JavaScript and Ruby. I'm super excited to enter the field of Web Development. I'm passionate about a great many things including music and people. I love birds, terrestrial radio, fermentation, jokes, and community.
You can listen to this interview of me on Oregon Public Broadcasting: A Miracle Kidney Amid The Coronavirus Pandemic to learn more about my unique story.
I graduated Cum Laude from Portland State University with a BA in History. My studies focused on the American West, American Indian history, and Public History
I have years of experience in various fields including data driven call centers, archival data projects, and the music industry. I am most proud of the recognition I have received at all of my jobs for my compassionate and effective communication skills both with co-workers and clients/customers.
The universe, web development, fermentation, neuroplasticity, spirituality.
Making wine, long walks, learning to grow plants.


{% extends 'pychart/base.html' %} {% block content %}
You have successfully completed registration to PyChart
To get started, why not add edit your profile.


This is a very basic website for MIT's "Cloud & DevOps: Continuous Transformation" course first asignment


Cranky Critic® movie reviews: Stop Making Sense [not rated] Starring The Talking Heads, live in concert David Byrne, Chris Franz, Jerry Harrison and Tina Weymouth Filmed at the Pantages Theater, Hollywood CA Directed by Jonathan Demme website: http://www.palmpictures.com
IN SHORT: The Return of the Big White Suit
CrankyCritic.com doesn't put the dollar rating on reissues. This being the 15th anniversary of the release of the Talking Heads concert film, Stop Making Sense is reason enough to re-release the old chestnut, with an upgraded sound mix and video remastering to CD, DVD and other such modern initialed tech like that. Which means I get to wax nostalgic and talk about my days in the music biz and, more important, I get to tell you about Stuff I Like.
The hard part about reviewing concert films is twofold: It isn't fair to the performing artist if the reviewer couldn't care less about the music. It isn't fair to the reader if the reviewer is an unabashed fan, and doesn't tell you. So, in the interest of full disclosure: Cranky likes the Talking Heads. He played their first records on college radio. He produced an appearance on the King Biscuit Flower Hour syndicated concert series, and met both David Byrne and Jerry Harrison of the band, back around 1980. If I wanted to wade through the pre-computer paperwork, there is probably a review of Stop Making Sense from its first release back in 1984. I never saw the band live.
Raving fan? No, not at all. The Talking Heads were an acquired taste. TH'77 and Fear of Music were difficult albums to listen to, because the Talking Heads didn't sound like anything else that had been pressed in black in the Seventies. When you're young, it only takes a song or two to make you go back to an album looking for more gems, and tracks like "Psycho Killer" and "I, Zimbra" (or "Don't Worry About The Government" and "Life During Wartime") were better than good starting points. When the band as a whole discovered funk in the early 80's, collaborating with Parliament's Bernie Worrell among others, the change seemed so radical it threw us off. Now, we'd call them "ahead of their time". Truth is, the band was always ahead of the great curve. But not so far ahead of the fans that we couldn't keep up.
Stop Making Sense captures the Talking Heads at the peak of their powers. Live, the Heads took their music so far beyond anything captured on vinyl that the only disappointment was that the original soundtrack delivered only half the film's music. Cranky is informed that the re-release of the CD contains the whole megilla. If you've sprung for a DVD player, that's on its way too. Let's talk about the film . . .
The first thing that comes to your mind, if you're old enough to remember the original theatrical run, is the Big White Suit that David Byrne sports in the show. Odds are you, like Cranky, confused the numerous parodies of the suit (on whatever teevee comedy shows were in vogue at the time) with reality. The suit doesn't show up until close to the end of the show, and it wasn't as huge as I remember. But that isn't the wildest thing about Stop Making Sense, version 1999.
The wildest thing was sitting in a packed, private screening room with 40 or so other reviewers, watching all but one of 'em try not to move at all while the concert unspooled. Byrne, who spoke briefly before the screening, said he was surprised when the remix was shown at the San Francisco Film Festival earlier in the year because the audience got up and started dancing. Cranky doesn't understand his surprise. Even if you only roll the soundtrack, regardless of whether you like the studio albums or not, it's hard to keep in your seat. The Stop Making Sense soundtrack album is a kickass groove start to finish. In its perfect creation of an audience POV, you don't have to be close to the screen to get the feeling that you're at a Talking Heads concert. The need to dance will follow naturally.
As a snapshot of where the band was in December 1983, Jonathan Demme's film stands as what some rock critics have labeled it, one of the best rock concert films of all time. It is, as with Martin Scorsese's The Last Waltz, one of few concerts that were designed to be photographed on film. Unlike Waltz, Stop Making Sense confines itself strictly to the performance stage. From David Byrne's entrance onto the bare stage, with acoustic guitar and boom box in hand, for a solo performance of Psycho Killer through the song by song assemblage of stage set and performers -- Tina Weymouth (bass) joins Byrne to duet on Heaven as black clad stagehands wheel out instrument platforms for Chris Franz (drums) and Jerry Harrison (guitars and keyboards) -- and touring bandmembers stroll out to their positions, Stop Making Sense takes on all the qualities of a theatrical presentation.
Even better, until an audience shot at the very end, you never see a film camera in any shot, a practice in other films that always bothered me. The actual cinematography, by Jordan Cronenweth (and restored by his son Jeff), is remarkable because is uses the actual stage lighting of the show, rather than bringing all the f-stop levels up to the norm by pouring light out of fills. Byrne and Demme headed back into the mixing room and brought their work up to 1999 technical specs.
Happy happy joy time. Play it all night long.
[If there's no Laserdisc release, Cranky may have to shell out for DVD
Cranky Critic® is a Registered Trademark of, and Copyright © 1999 by, Chuck Schwartz. All Rights Reserved.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: post date: 2014-12-23 08:45:00 +0100 title: "Debian Code Search: taming the latency tail" categories: Artikel tags: - debian ---
It’s been a couple of weeks since I’ve launched Debian Code Search Instant, so people have had the chance to use it for a while and that gives me plenty of data points to look at :-). For every query, I log the search term itself as well as the duration the query took to execute. That way, I can easily identify queries that take a long time and see why that is.
There is a class of queries for which Debian Code Search (DCS) doesn’t perform so well, and that’s queries that consist of trigrams which are extremely common. Whenever DCS receives such a query, it needs to search through a lot of files. Note that it doesn’t really matter if there are plenty of results or not — it’s the number of files that potentially contain a result which matters.
One such query is “arse” (we get a lot of curse words). It consists of only two
trigrams (“ars” and “rse”), which are extremely common in program source code.
As a couple of examples, the terms “parse”, “sparse”, “charset” and “coarse”
are all matched by that. As an aside, if you really want to search for just
“arse”, use word boundaries, i.e. “\barse\b
”, which also makes the query
significantly faster.
When DCS first received the query, “arse” would lead to our frontend server crashing. That was due to (intentionally) unoptimized code — we were aggregating all search results from all 6 source backends in memory, sorted them, and then wrote them out to disk.
I addressed this in commit d2922fe92 with the following measures:
With all of that fixed, the query became at all possible, albeit with a runtime of around 20 minutes.
When running such a long-running query, I noticed that the query ran smooth for a while, but then it took multiple seconds without any visible progress at the end of the query before the results appeared. This was due to the frontend ranking the results and then converting “unsorted.json” into actual result pages. Since we provide results ordered by ranking, but also results grouped by source packages, it was writing every result twice to disk. What’s even worse is that due to re-ordering, every read was essentially random (as opposed to sequential reads).
What’s even worse is that nobody will ever click through all the hundreds of thousands of result pages, so they are prepared entirely in vain. Therefore, with commit c744b236e I made the frontend generate these result pages on demand. This cut down the time for the ranking phase at the end of each query from 20-30 seconds (for big queries) to typically less than one second.
After adding monitoring to each of the source-backends, I realized that during
these long-running queries, the disk I/O and network I/O was nowhere near my
expectations: each source-backend was sending only a low single-digit number of
megabytes per second back to the frontend (typically somewhere between 1 MB/s
and 3 MB/s). This didn’t match up at all with the bandwidth I observed in
earlier performance tests, so I used wget -O /dev/null
to send a
query and discard the result in order to get some theoretical performance
numbers. Suddenly, I was getting more than 10 MB/s worth of results, maxing
out the disks with a read rate of about 200 MB/s.
So where is the bottleneck? I double-checked that neither the CPU on any of our VMs, nor the network between them was saturated. Note that as of this point, the CPU of the frontend was at roughly 70% (of one core), which didn’t seem a lot to me. Then, I followed this excellent tutorial on profiling Go programs to see where the frontend is spending its time. Turns out, the biggest consumer of CPU time was the encoding/json Go package, which is used for deserializing results received from the backend and serializing them again before sending them to the client.
Since I was curious about it for a while already, I decided to give cap’n proto a try to replace
JSON as serialization mechanism for communication between the source backends
and the frontend. Switching
to it (commit 8efd3b41) brought down the CPU load immensely, and made the
query a bit faster. In addition, I killed the next biggest consumer: the
lseek(2)
syscall, which we used to call with SEEK_CUR
and an offset of 0 so that it would tell us the current position. This was
necessary in the first place because we don’t know in advance how many bytes
we’re going to write when serializing a result to disk. The replacement is a
neat little trick:
type countingWriter int64 func (c *countingWriter) Write(p []byte) (n int, err error) { *c += countingWriter(len(p)) return len(p), nil } // […] // Then, use an io.MultiWriter like this: var written countingWriter w := io.MultiWriter(s.tempFiles[backendidx], &written) result.WriteJSON(w)
With some more profiling, the new bottleneck was suddenly the
read(2)
syscall, issued by the cap’n proto deserialization,
operating directly on the network connection buffer. strace
revealed that crunching through the results of one source backend for a long
query, read(2)
was called about 250,000 times. By simply using
a buffered reader (commit 684467ae), I could reduce that to about 2,000
times.
Another bottleneck was the fact that for every processed result, the frontend needed to update the query state, which is shared amongst all goroutines (there is one goroutine for each source backend). All that parallelism isn’t very effective if you need to synchronize the state updates in the end. So with commit 5d46a572, I refactored the state to be per-backend, so that locking is only necessary for the first couple of results, and the vast vast majority of results can be processed entirely without locking.
This brought down the query time from 20 minutes to about 5 minutes, but I
still wasn’t happy with the bandwidth: the frontend was doing a bit over
10 MB/s of reads from all source backends combined, whereas with
wget
I could get around 40 MB/s with the same query. At this
point, the CPU utilization was around 7% of one core on the frontend, and
profiling didn’t immediately reveal an obvious culprit.
After a bit of experimenting (by commenting out code here and there ;-)), I
figured out that the problem was that the frontend was still converting these
results from capnproto buffers to JSON. While that doesn’t take a lot of CPU
time, it delays the network stream from the source-backend: once the local and
remote TCP buffers are full, the source-backend will (intentionally!) not
continue with its search, so that it doesn’t run out of memory. I’m still
convinced that’s a good idea, and in fact I was able to solve the problem in an
elegant way: instead of writing JSON to disk and generating result pages on
demand, we now write
capnproto directly to disk (commit 466b7f3e) and convert it to JSON only
before sending out the result pages. That decreases the overall CPU time since
we only need to convert a small fraction of the results to JSON, but most
importantly, the frontend is now not in the critical path anymore. It can
directly pass the data through, and in fact it uses an
io.TeeReader
to do exactly that.
With all of these optimizations, we’re now down to about 2.5 minutes for the search query “arse”, and the architecture of the system actually got simpler to reason about.
Most importantly, though, the optimizations don’t only play out for a single query, but for many different queries. I’ve deployed the optimized version at the 15th of December 2014, and you can see that the 99th, 95th and 90th percentile latency dropped significantly, i.e. there are a lot fewer spikes than before, and more queries are processed faster, which is particularly obvious in the third graph (which is capped at 2 minutes):


Stats App
Admin
Leagues
Teams
Players
Stat Types
Games
Current Game
Teams
Add new team
Team name
League
Please select
A
B
C
Existing teams
Team name
League
Content Goes Here
This is longer content Donec.
Content Goes Here
This is longer Content Goes.
Content Goes Here
This is longer.


Mood
: mood
Ind
: indicative
The indicative mood is used to make statements.
Examples
- [ess] Afsengaq neghtuq pagunghaghmeng. “A mouse ate crowberries.”
Opt
: optative
The optative mood is used to make commands and suggestions (also imperative for 2nd person subjects).
Examples
- [ess] Igaghyaghqaq egtigu. “Throw the paper away.”
Int
: interrogative
The interrogative mood is used to ask yes/no questions with question words, such as when and why, or other types of questions without question words.
Examples
- [ess] Sanaqsin? “What are you going to do?”
- [ess] Qafsinaneng ighnelguzin? “How many sons do you have?”
Ptc
: participial
In the main clause, the participial mood is used to convey the meaning of a vivid past, the events of which have usually not been witnessed by the speaker. In subordinate clauses, the participial mood has a causal meaning.
Examples
-
[ess] Ayumiq uukna mayeraaghpagtuyalghii. “Long ago there were giants in this area.”
-
[ess] Quyakamken laalighlleghhiiten. “I am glad you came to visit.”
Obl
: participial-oblique
The participial-oblique mood is often - though apparently not always - used to form an observational construction (…) In some cases, however, it appears that the participial-oblique mood is used to express merely a casual linking in time, without the element of observation. (Jacobson, p. 121)
[W]hen used in the subordinate clause, the main clause describes an event focused on because it is unexpected or contains an element of surprise. As a result, the Participial Oblique moods are more accurately translated as ‘it was the fact (in the past) that…, but…’; ‘until now…’; ‘now that…’, and the main clause often contains interjections expressing excitement, particles meaning ‘already’, or the postbase -fte- l-pete- ‘to apparently V’. In addition, the clause in a Participial Oblique mood often contains particles such as taagken ‘next; and then’ or legan ‘and so’, emphasizing continuity with preceding events. Thus, the Participial Oblique moods prevent the focus of attention from being shifted toward the subordinate clause and away from the continuity of events or story line described by the main clause. They are used in vivid narrative, such as traditional stories, but also in conversation. (de Reuse 1994, p. 50)
Examples
- [ess] Mamlegpetuq esghaghyalghiinga. “(I observed or realized that) It was dark when I opened my eyes.”
- [ess] Tungsighyaghtughyaqennguq neghumakanga. “When you went to ask for it, he had eaten it.”
Sbr
: intransitive subordinative
The intransitive subordinative mood is translated as ‘V-ing’ or ‘after V-ing’. When it is used in a subordinate clause, the subject of the verb is the same as the subject of the verb in the main clause. It can be used instead of the indicative mood (or the optative mood for requests or commands) in the main clause in hurried conversation or narrative.
Examples
- [ess] Aakaqa estugaghtuq yavluni tasluqluku tukfighinaluni laluwaaymeng. “My sister went to the store holding her boyfriend’s hand in order to buy onions.”
Prc
: precessive
The precessive mood is translated as ‘before one V-ed or V-s’.
Examples
- [ess] Quginakanka uyviinghet kaatfagilgata. “I am spooked out from the evil-doing shamans before they arrive.”
Cnc
: concessive
The concessive mood is translated as ‘even though one V-s’.
Examples
- [ess] Mekelghiiq aanumalghii mangteghameng amsikaghngaghngaaghmi. “The boy apparently went out of the house even though he was naked.”
Cn1
: consequential I
The consequential I mood is translated as ‘when one V-ed’.
Examples
- [ess] Ighneqa qiyaaq aghyuughyavgu. “My son cried when you scolded him.”
Cn2
: consequential II
The consequential II mood is translated as ‘while one was V-ing’.
Examples
- [ess] Qavaghniinga laalightaqngavnga. “I became sleepy while you were visiting me.”
Ctm
: contemporative
The contemporative mood is translated as ‘whenever one Vs’.
Examples
- [ess] Qaviigatukung qikmiten qilunghata. “We don’t sleep whenever your dogs bark.”
Cnd
: conditional
The conditional mood is translated as ‘if or when one Vs’.
Examples
- [ess] Neghenghilkuvek iyataghllequten. “If you don’t eat, you will get hungry.”
References
-
Steven A. Jacobson. 2001. A Practical Grammar of the St. Lawrence Island / Siberian Yupik Eskimo Language, Preliminary Edition, 2nd edition. Alaska Native Language Center, Fairbanks, Alaska.
-
Willem J. de Reuse. 1994. Siberian Yupik Eskimo – The Language and Its Contacts with Chukchi. Studies in Indigenous Languages of the Americas. University of Utah Press, Salt Lake City, Utah.
Mood in other languages: [akk] [arr] [bej] [bg] [bm] [cs] [cy] [el] [eme] [en] [ess] [et] [fi] [fr] [ga] [gd] [gn] [gub] [hbo] [hu] [hy] [it] [jaa] [ky] [mdf] [myv] [pcm] [qpm] [qtd] [quc] [ru] [say] [sl] [sv] [tpn] [tr] [tt] [u] [ug] [uk] [urb] [urj]


This represents known issue with the LAPACK software package that have not been yet solved. (As of Sunday October 26th 2008.)
- LAPACK does not have any exceptional shift strategy for QZ
- DQDS algorithm (useful to compute the singular values of a matrix)
1 -- LAPACK does not have any exceptional shift strategy for QZ
[1.1-- The problems] LAPACK current shift strategy is known to fail on various pencils. Here are three pencils, (A1,B1), (A2,B2), (A3,B3) where LAPACK fails A1 = [ 0 0 1 ; 0 1 0 ; 1 0 0 ]; B1 = [ 2 0 0 ; 0 0 1 ; 0 1 0 ]; Pencil (A1,B1) has been sent to us by Zbigniew Leyk, Senior Lecturer, Department of Computer Science, Texas A & M University on Jan 30 2007. See: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=317 A2 = [ 0 0 0 1 ; 1 0 0 0 ; 0 1 0 0 ; 0 0 1 0 ]; B2 = [ 1 0 0 0 ; 0 1 0 0 ; 0 0 1 0 ; 0 0 0 1 ]; Pencil (A2,B2) has been sent to us by Daniel Kressner in 2005 who quote Vasile Sima. A3 = [ 1 1 0; 0 0 -1; 1 0 0 ]; B3 = [ -1 0 -1; 0 -1 0; -1 0 -1 ]; Pencil (A3,B3) has been sent to us by Patrick Alken from University of Colorado at Boulder on Apr 24 2007. See: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=382 A4 = [ 1 1e-9 0; 1e-9 1 0; 0 0 1 ]; B4 = [ 1 0 0; 0 1 0; 0 0 1 ]; Pencil (A4,B4) has been sent to us by Micheal Baudin from the Scilab project on Tu Oct 28th 2008. This one pencil make ZGGEV fail. DGGEV handles it correctly. http://bugzilla.scilab.org/show_bug.cgi?id=3652 [1.2-- The fixes] [1.2.a-- Mathworks' patch] Bobby Cheng sent the lapackers the Mathworks patch to fix LAPACK QZ. This patch works fine on the pencils (A1,B1) and (A2,B2). But fails on pencil (A3,B3). As observed by Jim Demmel, matlab qz works fine with pencil (A3,B3). Date: Thu, 15 Sep 2005 20:35:00 +0200 (CEST) From: Daniel Kressner Subject: Re: [Lapackers] Mathworks modif on LAPACK Hi, below are some comments on Mathworks' modifications to DGEBAL and DHGEQZ. > 1)Change SCLFAC from 8 to 2 to be the same as LINPACK. > > File: > cgebal.f > zgebal.f > sgebal.f > dgebal.f I support the point of view taken by Mathworks. Changing SCLFAC from 8 to 2 may result in a few extra iterations of the balancing algorithm, but it may also give a balanced matrix of slightly smaller norm and consequently one or two more accurate digits in the computed eigenvalues. I am not aware that the execution time needed by balancing could be a major concern when solving nonsymmetric eigenvalues. > 3)Change to implicit shift and exceptional shift calculations. > Some problem were not converging. > > Files: > zhgeqz.f (lines 602-672) > chgeqz.f (lines 602-672) > shgeqz.f (lines 657-667, 819-821) > dhgeqz.f (lines 657-667, 819-821) As far as I can see, Mathworks applied four changes to *HGEQZ (not all of them are marked in the code): (1) Exceptional shift strategy As also pointed out by Vasile Sima, the exceptional shift strategy for the QZ algorithm currently implemented in DHGEQZ seems to be less effective than the one for the QR algorithm. For example, it fails for the matrix pair [ 0 0 0 1 ] [ 1 0 0 0 ] A = [ 0 1 0 0 ], B = identity. [ 0 0 1 0 ] LAPACK's exceptional shift is zero (this is the same as the standard shift -> no convergence). Mathworks' exceptional shift is one (much better). (2) Choice of single real shift DHGEQZ applies a single shift QZ algorithm if the computed shifts are real. This seems to be a relict of Ward's combination shift QZ algorithm, which has no meaningful purpose anymore (applying two single shift QZ iterations is more expensive than applying one double shift QZ iteration, even in terms of flops). If two real shifts are computed, Mathworks' change has the effect that always the shift closer to the last diagonal element of A\B is used. If I remember correctly, this is in the spirit of what Wilkinson proposed for symmetric matrices. I support this change and expect that it can lead to slightly faster convergence. (3) Mathworks included B22 = -B22 on line 820 (in DHGEQZ) This is a bug fix and I highly recommend to include it. It seems that DHGEQZ computes wrong complex conjugate eigenvalue pairs if DLASV2 computes negative diagonal elements (I am not sure whether this is an unlikely event in the context of the QZ algorithm). (4) Mathworks uses the workspace to store the number of iterations needed for each eigenvalue. This is probably used for debugging and should not be included in LAPACK. As announced at the Householder meeting, Bo Kagstrom and I are currently working on an extension of Ralph Byers' multishift aggressive QR code to QZ. This code will take the modifs of Mathworks into account. However, I suggest to include these modifs (particularly (1) and (3)) already in the next update of LAPACK. With best regards, Daniel [1.2.b-- David Day's patch] I found in the lapackers archive a patch from David Day. From: David Day (Sandia) Date: Tue Sep 7 09:49:40 2004 Subject: [Lapackers] Re: [Fwd: Convergence failure of LAPACK's zggevx] Dear Jim Demmel: The reported problem does involve the Exceptional shifts in QZ. Changing the QZ exceptional shift to something similar to what I have advixed for real QR and real QZ does fix this particular bug report. In my version of zhgeqz.f lines 603 read ELSE * * Exceptional shift. Chosen for no particularly good reason. * ESHIFT = ESHIFT + DCONJG( ( ASCALE*A( ILAST-1, ILAST ) ) / $ ( BSCALE*B( ILAST-1, ILAST-1 ) ) ) After these lines, I added TEMP = $ ABS(ASCALE*A(ILAST-1,ILAST-2)/(BSCALE*B(ILAST-1,ILAST-1)))+ $ ABS(ASCALE*A(ILAST ,ILAST-1)/(BSCALE*B(ILAST-2,ILAST-2))) TEMP2 = $ ABS(ASCALE*A(ILAST-1,ILAST-2)/(BSCALE*B(ILAST-2,ILAST-2)))+ $ ABS(ASCALE*A(ILAST ,ILAST-1)/(BSCALE*B(ILAST-1,ILAST-1))) ESHIFT = DCMPLX(MIN(TEMP, TEMP2),0) This changes the value of the shift, now set on line 616 SHIFT = ESHIFT Thank you for including me in this discussion. --David M. Day [1.2.c-- Patrick Alken's patch] Date: Wed, 2 May 2007 16:14:55 -0600 From: Patrick AlkenSubject: Re: [Lapack] dggev fails on non-singular system Hello, I have done some testing and I have found that the following patch fixes all the 3x3 and 4x4 matrix systems that I found failures on: Replace (in dhgeqz.f): 629 IF( ( DBLE( MAXIT )*SAFMIN )*ABS( H( ILAST-1, ILAST) ).LT. 630 $ ABS( T( ILAST-1, ILAST-1 ) ) ) THEN 631 ESHIFT = ESHIFT + H( ILAST-1, ILAST ) / 632 $ T( ILAST-1, ILAST-1 ) 633 ELSE 634 ESHIFT = ESHIFT + ONE / ( SAFMIN*DBLE( MAXIT ) ) 635 END IF with: 629 IF( ( DBLE( MAXIT )*SAFMIN )*ABS( H( ILAST, ILAST-1) ).LT. 630 $ ABS( T( ILAST-1, ILAST-1 ) ) ) THEN 631 ESHIFT = ESHIFT + 0.736 * H( ILAST, ILAST-1 ) / 632 $ T( ILAST-1, ILAST-1 ) 633 ELSE 634 ESHIFT = ESHIFT + ONE / ( SAFMIN*DBLE( MAXIT ) ) 635 END IF The idea here is the following: in the previous code, its certainly possible for H(ILAST-1,ILAST) to equal 0, in which case the test will pass but ESHIFT will not be modified at all. I have just replaced it with H(ILAST,ILAST-1) which is guaranteed not to be zero, since its a subdiagonal element and the previous tests will search for zeros on the subdiagonal. The 0.736 coefficient is arbitrary - without it, I still found a small number of convergence failures on 4x4 integer systems. Patrick Alken [1.3-- Fix] Wait for a new QZ with early agressive deflation and multishift.2 -- DQDS algorithm (useful to compute the singular values of a matrix)
Cleve Moler reported that LAPACK DLASQ1 routine (called by DBDSQR when only the singular values are needed) fails on the bidiagonal matrix: set_Moler_200.c. Osni Marques provided us with DLASQ1-6 routines that passes the matrix. I have done some investigation to find out why the 200 by 200 matrix that Cleve Moler sent to us weeks ago leads to a failure in Matlab's "norm". My understanding is that "norm" resorts to LAPACK's dbdsqr, which in turn calls dqds, i.e. dlasq1 (which calls dlasq2 etc), if only singular vectors are desired. Indeed, LAPACK 3.1.1's dlasq1 returns INFO=2 (Matlab prints "Warning: SVD did not converge at index = 2") for Cleve's matrix, meaning "current block of Z not diagonalized after 30*N iterations (in inner while loop)". This is related to the NBIG = 30*( N0-I0+1 ) limit that is set in dlasq2, where I0 and N0 indicate the active (sub)matrix dlasq2 is dealing with. It starts with I0=1 and N0=N if there is no initial splitting; I0 and N0 may change later if splittings occur. These are my findings: 1) Contrary to what I had originally thought, LAPACK 3.1.1's dlasq2 does not contain our last modifications, in particular a mechanism to reverse (flip) the qd-array in some adverse situations. The lack of this mechanism may greatly delay convergence. In fact, LAPACK 3.1.1's dqds works if we allow more than 30*N iterations: without flipping, convergence is achieved in 8073 iterations (to achieve this I changed 30*N to 300*N). In contrast, the latest dqds that we have produced works just fine on Cleve's matrix: convergence is achieved in 969 iterations. Interestingly, LAPACK 3.1.1 converges in 970 iterations if we first flip Cleve's matrix (similarly, "norm" also works fine). 2) In the computation of shifts (by dlasq4), we have TTYPE.EQ.-6, i.e. "Case 6, no information to guide us." This case is based on a variable G that is used for the computation of the shift (S = G*DMIN). Modifications were performed in the dqds routines to make them thread safe (by removing SAVE statements) but in LAPACK 3.1.1 G seems to be set to zero too often. I am afraid that for a sequence of TTYPE.EQ.-6 this may lead to shifts that are not so efficient. My records indicate that I submitted our latest version of dqds for inclusion in LAPACK on 07/11/06 but the changes have not been incorporated (LAPACK 3.1 is dated 11/12/06, and LAPACK 3.1.1 is dated 02/26/07). In any case, I am sending it attached so it can be compared with LAPACK 3.1.1's dqds. I am also attaching Cleve's 200 by 200 matrix as well as its flipped form in case someone (in the cc list) would like to experiment with them. Cheers, Osni The reason for which Osni code is not in LAPACK is that Osni code fail on some of the matrices in the LAPACK testing, for example: set_PB1_30.c. Indeed the double precision routines of Osni are fine, there are only a few problems with the single precision routines. Current status: Hello lapackers, I did not understand upfront what Bobby Cheng was saying with his: "MATLAB switched back to the old algorithm and lost some speed." So I asked Bobby Cheng for their files. MathWorks simply have hacked xBDSQR so that they use the QR algorithm (they simply have commented the lines that call DLASQ1). So they use QR even if they want only the singular values. Matlab does not use the dqds algorithm when computing a norm for example. Julien.


10
SELECT count(xiangm_id) as all_ID from xiangmuxianshi_t where xianshi_fenlei_hao=33
@{int:@{count:all_ID}/@{pPage:length}}@{int:@{count:all_ID}%@{pPage:length}}@{pPage:length}@{int:@{pPage:pages}+1}0@{int:@{count:all_ID}-@{pPage:odd}}@{int:@{pPage:start}-0}0
SELECT t1.xiangm_id,xm_tupian,xm_name,xm_shichangj,xm_leixing,xmzhuangt_id,xm_chuxj,jiaoyi_jiaz,mingcheng_sp,sp_xiaol,dpk_tjzs,fabu_ren,user_nicheng,xm_xihuans,xm_pinluns from xiangmu_t t1,xiangmuxianshi_t t2,yonghuxingxi_t t3 where t1.xiangm_id = t2.xiangm_id and xianshi_fenlei_hao=33 and user_id=fabu_ren order by xianshi_fenlei_hao,xianshi_shunxu_hao limit @{pPage:start},@{pPage:length}


The GQ Machine Quilting Frame
The top of the line quilting frameThe GQ machine quilting frame is the top of the line, and designed to give you the optimal quilting experience. Using favorite features from past frames, the GQ frame also has innovative characteristics that are all its own. The carriage uses a fully dual-wheel system that enhances stitch qualit. The steel construction makes it extra durable and able to withstand years of heavy use.
SureTrack™ Dual-Wheel System
For enhanced stitchingThe SureTrack dual-wheel system provides the feel of a smooth gliding carriage as you quilt. The SureTrack enhances stitch quality, accuracy, and carriage motion.
No-Baste Quilting Rail System
The GQ Quilting Frame saves you valuable time by eliminating the ordeal of basting. All the quilt layers are attached to their own rails, and then come together and on to the take-up rail as you quilt. The GQ frame even features a fourth rail to help manage the batting layer
Other GQ Frame Features
Under-Table Storage Shelf
All of the most important quilt functions and settings can be changed and are seen right on the display! So you'll always have quick access to stitching mode, stitch speed or stitch length, and needle position.
Fourth Rail for Batting
The GQ Quilting Frame includes a fourth rail to manage your batting and keep it off of the floor.
Leveling Feet
No matter what floor your frame is on, these feet are an easy way to make sure it's level and balanced.
Aluminum and Steel Construction
Much of the body of the GQ frame is aluminum, making it sturdy, yet light-weight. The rails of the frame are made from steel for maximum rigidity.
Height-Adjustable Legs
Height-adjustable legs let you work at the level that is most comfortable to you.
Precision Locking Ratchets
Handling fabric tension is easy with these locking/unlocking ratchets.
Included Accessories
Bungee Clamps
For Perfect Side TensionThe Bungee Clamps provide excellent and even side tension at the edges of your quilt. These new and improved Grace Company Bungee Clamps have been designed with a sleek new profile to make attaching and removing them even easier!
Fabri-Fast Tube and Tool
Easy Fabric LoadingThe unique Grace Company Fabri-Fast rails make attaching fabric to your rails a breeze. Use the included Fabri-Fast tool to push your fabric and the provided Fabri-Fast tube into the rail slot.
 Use the dial to set the speed of your sewing machine as you quilt. It works with many sewing machines on the market. Check the compatibility list to see if it will work with your quilting or sewing machine!
Additional Accessories
Optional Idler Rail
Convenient for machines with larger throatsYou usually have to continually raise the take-up rail as the quilt gets rolled up onto it. Not so with this optional idler rail! The idler rail keeps tension on all the quilt layers and allows the take-up rail to remain at a fixed height. This item is only available for quilting machines with larger throat spaces.
Buy Now2 Foot Extension
Extend the length of your frameAdd the 2 foot extension to your GQ Quilting Frame for the largest available quilting space!
Buy NowGQ Frame Specs
Maximum Quilt Area
- King:
- 108"
- Crib:
- 48"
Maximum Machine Throat Size
20 inches
Rail Diameter
1½ inches
Track System
Dual-wheel track


1. Overall Accuracy Equality
When the overall procedure accuracy is the same for each group, overall accuracy equality is achieved. Overall procedure accuracy, as previously mentioned, is the total correct number of predictions made by the algorithm, and is defined as (TP + TN)/N.
This definition assumes that true negatives and true positives are equally desirable in our system. In real-world cases, however, it is possible that true positives may be more desirable than true negatives. Rather, false negatives (wrong predictions of negatives) might be twice as undesirable as false positives (wrong predictions of positives).
Overall Accuracy Equality, according to the State of the Art paper, is not commonly used as it doesn't differentiate between success and failure accuracy.
2. Statistical Parity
Statistical Parity is achieved when the prediction distribution is the same across all protected groups. From our previous example, this implies that if sleep patterns was a protected class, the proportion of people predicted to have coffee with (or without) sugar should be equal for people who get less than five hours of sleep, and for people who get more than five hours of sleep.
Statistical parity, also known as demographic parity, has been criticized as it can lead to highly undesirable outcomes. It is defined as (TP + FP)/N or (FN + TN)/N.
By simply sampling more (or less) people from these predicted groups, we could modify the proportions for prediction distribution and achieve statistical parity by changing our population, rather than modifying our algorithm, to equalize the proportion of predictions based on sleep patterns.
3. Conditional Procedure Accuracy Equality
As the name suggests, this fairness is achieved when the conditional procedure accuracy is the same across all protected groups. Simply put, the accuracy of predicting positives (and negatives) from all actual positives (and negatives) should be equal across groups. Thus, the value for TP/(TP + FN) and TN/(TN + FP) should be the same.
This is similar to considering that the false positive and false negative rates are the same across groups.
A closely similar definition of conditional procedure accuracy equality is also referred to as "equalized odds," and "equality of opportunity" is the same as this, for the more desirable outcome only.
4. Conditional Use Accuracy Equality
This differs from the previous fairness in that it depends on the ratio of a predicted outcome among all predictions. The proportion of each prediction should remain the same across groups. This fairness asks that conditional on the prediction of success (or failure), is the probability of success (or failure) the same across groups? Thus, the ratios TP/(TP + FP) and TN/(FN + TN) should be equal across all groups.
Both conditional procedure and conditional use accuracy equality are concerns in criminal justive risk assesments (more on this later). Chouldechova refers to conditional use accuracy equality as positive predictive value (PPV) and corresponds to TP/(TP + FN).
5. Treatment Equality
Treatment equality is achieved when the ratio of false negatives to false positives (or vice versa) is the same across protected groups. This equality is considered a "lever with which to achieve other kinds of fairness." It is defined as FN/FP or FP/FN.
We could treat people who get more sleep differently than people who get lesser sleep to achieve conditional use accuracy equality, by weighing their false negatives for heavily. This would change the treatment ratio, and would be an indicator of unfair treatment of people who get more seep.
6. Total Fairness
Total fairness is achieved when all the above fairness, overall accuracy equality, statistical parity, conditional procedure accuracy equality, conditional use accuracy equality and treatment equality are achieved.
Recent research shows that some of the above fairness are at odds at each other, thus making it impossible to achieve total fairness.
Again, it is important to remember that definitions of fairness exists only between different groups (or classes) of the sample, and when there are more than two outcome categories.


Consent page
Please accept following scopes:
Please accept following claims:
(Descriptions for scopes and claims can be found at http://openid.net/specs/openid-connect-core-1_0.html


From:Lamadrid Victor To:Allwein Robert ; Ames Chuck Sent:2017-01-11T04:41:54.0000000Z Subject:FW: Deal Validation
fyi.
-----Original Message-----
From: Hernandez, Elizabeth L.
Sent: Wednesday, October 10, 2001 7:51 AM
To: Lamadrid, Victor; Garcia, Clarissa; Smith, George F.
Cc: Goodell, Scott; Germany, Chris; Farmer, Daren J.; South, Steven P.; Tholt, Jane M.; Reitmeyer, Jay; Pereira, Susan W.; Ring, Andrea; Kelly, Katherine L.; Ferries, Nelson; Barbe, Robin; Gillespie, Steve; Baumbach, David
Subject: Deal Validation
Effective immediately Sean Riordan @X5-4298 will be responsible for Deal Validation issues. He is taking over all my current duties as I will be moving to a new group. I will be helping Sean with Deal Validation issues until 10/19/2001.
Please let your group know that they should now be calling Sean for assistance.
***********
EDRM Enron Email Data Set has been produced in EML, PST and NSF format by ZL Technologies, Inc. This Data Set is licensed under a Creative Commons Attribution 3.0 United States License <http://creativecommons.org/licenses/by/3.0/us/> . To provide attribution, please cite to "ZL Technologies, Inc. (http://www.zlti.com)."
***********
California


Copy from remote to local
Copy remote file.txt to /tmp/file.txt
scp [user]@[host]:file.txt /tmp/file.txt
Copy from local to remote
Copy local file.txt to remote /tmp/file.txt
scp file.txt [user]@[host]:/tmp/file.txt
Copy recursively (full directories)
The following will copy remote /home/ubuntu/.vim directory and all of its contents to ./vim.
scp -r [user]@[host]:/home/ubuntu/.vim ./vim
Use non-standard port
Uses -P instead of -p switch in regular SSH command. The following uses port 2222.
scp -P 2222 [user]@[host]:/home/ubuntu/test.py ./test.py


EFCC To Arraign Mompha November 25
by Oyindamola OlubajoAnti-graft agency, Economic and Financial Crimes Commission (EFCC), is set to arraign Instagram celebrity, Ismaila Mustapha aka Mompha before a Federal High Court, Lagos on Monday, November 25, 2019.
This comes after Mompha filed a suit against EFCC alleging unlawful detention and violation of his rights.
Mompha asked the court to award N5m against the EFCC for detaining him beyond the constitutionally-allowed period without being charged to court.
A 14- count criminal charge bordering on money laundering has been filed and served on the suspect who is currently in the custody of the Commission.
The Bureau De Change operator is to be arraigned alongside his company, Ismalob Investments Limited, the firm through which he allegedly laundered N14 billion.
The social media celebrity was arrested based on actionable intelligence linking him to fraud and money laundering on Friday, October 18, 2019.
Mompha who allegedly perpetrate his fraudulent activities under the guise of being a Bureau de Change operator used the BDC business he jointly owns with his siblings, as a decoy to launder his proceeds of crime.
In a related development, Kayode Philip and Hamza Koudeih, high valued targets in Organized Cyber Syndicate Network (OCSN) will also be arraigned during the week.
They have been duly served with a 24-count charge bordering on conspiracy and money laundering.
Hamza allegedly operates two firms namely THK Services Limited and CHK Properties Limited through which he allegedly laundered about N19billion.