public class Socket extends Object implements Closeable
The actual work of the socket is performed by an instance of the
SocketImpl
class. An application, by changing
the socket factory that creates the socket implementation,
can configure itself to create sockets appropriate to the local
firewall.
setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketChannel
| Modifier | Constructor and Description |
|---|---|
|
Socket()
Creates an unconnected socket, with the
system-default type of SocketImpl.
|
|
Socket(InetAddress address,
int port)
Creates a stream socket and connects it to the specified port
number at the specified IP address.
|
|
Socket(InetAddress host,
int port,
boolean stream)
Deprecated.
Use DatagramSocket instead for UDP transport.
|
|
Socket(InetAddress address,
int port,
InetAddress localAddr,
int localPort)
Creates a socket and connects it to the specified remote address on
the specified remote port.
|
|
Socket(Proxy proxy)
Creates an unconnected socket, specifying the type of proxy, if any,
that should be used regardless of any other settings.
|
protected |
Socket(SocketImpl impl)
Creates an unconnected Socket with a user-specified
SocketImpl.
|
|
Socket(String host,
int port)
Creates a stream socket and connects it to the specified port
number on the named host.
|
|
Socket(String host,
int port,
boolean stream)
Deprecated.
Use DatagramSocket instead for UDP transport.
|
|
Socket(String host,
int port,
InetAddress localAddr,
int localPort)
Creates a socket and connects it to the specified remote host on
the specified remote port.
|
| Modifier and Type | Method and Description |
|---|---|
void |
bind(SocketAddress bindpoint)
Binds the socket to a local address.
|
void |
close()
Closes this socket.
|
void |
connect(SocketAddress endpoint)
Connects this socket to the server.
|
void |
connect(SocketAddress endpoint,
int timeout)
Connects this socket to the server with a specified timeout value.
|
SocketChannel |
getChannel()
Returns the unique
SocketChannel
object associated with this socket, if any. |
InetAddress |
getInetAddress()
Returns the address to which the socket is connected.
|
InputStream |
getInputStream()
Returns an input stream for this socket.
|
boolean |
getKeepAlive()
Tests if
SO_KEEPALIVE is enabled. |
InetAddress |
getLocalAddress()
Gets the local address to which the socket is bound.
|
int |
getLocalPort()
Returns the local port number to which this socket is bound.
|
SocketAddress |
getLocalSocketAddress()
Returns the address of the endpoint this socket is bound to.
|
boolean |
getOOBInline()
Tests if
SO_OOBINLINE is enabled. |
OutputStream |
getOutputStream()
Returns an output stream for this socket.
|
int |
getPort()
Returns the remote port number to which this socket is connected.
|
int |
getReceiveBufferSize()
Gets the value of the
SO_RCVBUF option
for this Socket , that is the buffer size used by the platform
for input on this Socket . |
SocketAddress |
getRemoteSocketAddress()
Returns the address of the endpoint this socket is connected to, or
null if it is unconnected. |
boolean |
getReuseAddress()
Tests if
SO_REUSEADDR is enabled. |
int |
getSendBufferSize()
Get value of the
SO_SNDBUF option
for this Socket , that is the buffer size used by the platform
for output on this Socket . |
int |
getSoLinger()
Returns setting for
SO_LINGER . |
int |
getSoTimeout()
Returns setting for
SO_TIMEOUT . |
boolean |
getTcpNoDelay()
Tests if
TCP_NODELAY is enabled. |
int |
getTrafficClass()
Gets traffic class or type-of-service in the IP header
for packets sent from this Socket
|
boolean |
isBound()
Returns the binding state of the socket.
|
boolean |
isClosed()
Returns the closed state of the socket.
|
boolean |
isConnected()
Returns the connection state of the socket.
|
boolean |
isInputShutdown()
Returns whether the read-half of the socket connection is closed.
|
boolean |
isOutputShutdown()
Returns whether the write-half of the socket connection is closed.
|
void |
sendUrgentData(int data)
Send one byte of urgent data on the socket.
|
void |
setKeepAlive(boolean on)
Enable/disable
SO_KEEPALIVE . |
void |
setOOBInline(boolean on)
Enable/disable
SO_OOBINLINE
(receipt of TCP urgent data)
By default, this option is disabled and TCP urgent data received on a
socket is silently discarded. |
void |
setPerformancePreferences(int connectionTime,
int latency,
int bandwidth)
Sets performance preferences for this socket.
|
void |
setReceiveBufferSize(int size)
Sets the
SO_RCVBUF option to the
specified value for this Socket . |
void |
setReuseAddress(boolean on)
Enable/disable the
SO_REUSEADDR
socket option. |
void |
setSendBufferSize(int size)
Sets the
SO_SNDBUF option to the
specified value for this Socket . |
static void |
setSocketImplFactory(SocketImplFactory fac)
Sets the client socket implementation factory for the
application.
|
void |
setSoLinger(boolean on,
int linger)
Enable/disable
SO_LINGER with the
specified linger time in seconds. |
void |
setSoTimeout(int timeout)
Enable/disable
SO_TIMEOUT
with the specified timeout, in milliseconds. |
void |
setTcpNoDelay(boolean on)
Enable/disable
TCP_NODELAY
(disable/enable Nagle's algorithm). |
void |
setTrafficClass(int tc)
Sets traffic class or type-of-service octet in the IP
header for packets sent from this Socket.
|
void |
shutdownInput()
Places the input stream for this socket at "end of stream".
|
void |
shutdownOutput()
Disables the output stream for this socket.
|
String |
toString()
Converts this socket to a
String . |
public Socket()
public Socket(Proxy proxy)
If there is a security manager, its checkConnect
method
is called with the proxy host address and port number
as its arguments. This could result in a SecurityException.
Examples:
Socket s = new Socket(Proxy.NO_PROXY);
will create
a plain socket ignoring any other proxy configuration.Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080)));
will create a socket connecting through the specified SOCKS proxy
server.proxy
- a Proxy
object specifying what kind
of proxying should be used.IllegalArgumentException
- if the proxy is of an invalid type
or null
.SecurityException
- if a security manager is present and
permission to connect to the proxy is
denied.ProxySelector
,
Proxy
protected Socket(SocketImpl impl) throws SocketException
impl
- an instance of a SocketImpl
the subclass wishes to use on the Socket.SocketException
- if there is an error in the underlying protocol,
such as a TCP error.public Socket(String host, int port) throws UnknownHostException, IOException
If the specified host is null
it is the equivalent of
specifying the address as
InetAddress.getByName
(null)
.
In other words, it is equivalent to specifying an address of the
loopback interface.
If the application has specified a server socket factory, that
factory's createSocketImpl
method is called to create
the actual socket implementation. Otherwise a "plain" socket is created.
If there is a security manager, its
checkConnect
method is called
with the host address and port
as its arguments. This could result in a SecurityException.
host
- the host name, or null
for the loopback address.port
- the port number.UnknownHostException
- if the IP address of
the host could not be determined.IOException
- if an I/O error occurs when creating the socket.SecurityException
- if a security manager exists and its
checkConnect
method doesn't allow the operation.IllegalArgumentException
- if the port parameter is outside
the specified range of valid port values, which is between
0 and 65535, inclusive.setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port) throws IOException
If the application has specified a socket factory, that factory's
createSocketImpl
method is called to create the
actual socket implementation. Otherwise a "plain" socket is created.
If there is a security manager, its
checkConnect
method is called
with the host address and port
as its arguments. This could result in a SecurityException.
address
- the IP address.port
- the port number.IOException
- if an I/O error occurs when creating the socket.SecurityException
- if a security manager exists and its
checkConnect
method doesn't allow the operation.IllegalArgumentException
- if the port parameter is outside
the specified range of valid port values, which is between
0 and 65535, inclusive.NullPointerException
- if address
is null.setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException
If the specified host is null
it is the equivalent of
specifying the address as
InetAddress.getByName
(null)
.
In other words, it is equivalent to specifying an address of the
loopback interface.
A local port number of zero
will let the system pick up a
free port in the bind
operation.
If there is a security manager, its
checkConnect
method is called
with the host address and port
as its arguments. This could result in a SecurityException.
host
- the name of the remote host, or null
for the loopback address.port
- the remote portlocalAddr
- the local address the socket is bound to, or
null
for the anyLocal
address.localPort
- the local port the socket is bound to, or
zero
for a system selected free port.IOException
- if an I/O error occurs when creating the socket.SecurityException
- if a security manager exists and its
checkConnect
method doesn't allow the connection
to the destination, or if its checkListen
method
doesn't allow the bind to the local port.IllegalArgumentException
- if the port parameter or localPort
parameter is outside the specified range of valid port values,
which is between 0 and 65535, inclusive.SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException
If the specified local address is null
it is the equivalent of
specifying the address as the AnyLocal address
(see InetAddress.isAnyLocalAddress
()
).
A local port number of zero
will let the system pick up a
free port in the bind
operation.
If there is a security manager, its
checkConnect
method is called
with the host address and port
as its arguments. This could result in a SecurityException.
address
- the remote addressport
- the remote portlocalAddr
- the local address the socket is bound to, or
null
for the anyLocal
address.localPort
- the local port the socket is bound to or
zero
for a system selected free port.IOException
- if an I/O error occurs when creating the socket.SecurityException
- if a security manager exists and its
checkConnect
method doesn't allow the connection
to the destination, or if its checkListen
method
doesn't allow the bind to the local port.IllegalArgumentException
- if the port parameter or localPort
parameter is outside the specified range of valid port values,
which is between 0 and 65535, inclusive.NullPointerException
- if address
is null.SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(String host, int port, boolean stream) throws IOException
If the specified host is null
it is the equivalent of
specifying the address as
InetAddress.getByName
(null)
.
In other words, it is equivalent to specifying an address of the
loopback interface.
If the stream argument is true
, this creates a
stream socket. If the stream argument is false
, it
creates a datagram socket.
If the application has specified a server socket factory, that
factory's createSocketImpl
method is called to create
the actual socket implementation. Otherwise a "plain" socket is created.
If there is a security manager, its
checkConnect
method is called
with the host address and port
as its arguments. This could result in a SecurityException.
If a UDP socket is used, TCP/IP related socket options will not apply.
host
- the host name, or null
for the loopback address.port
- the port number.stream
- a boolean
indicating whether this is
a stream socket or a datagram socket.IOException
- if an I/O error occurs when creating the socket.SecurityException
- if a security manager exists and its
checkConnect
method doesn't allow the operation.IllegalArgumentException
- if the port parameter is outside
the specified range of valid port values, which is between
0 and 65535, inclusive.setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(InetAddress host, int port, boolean stream) throws IOException
If the stream argument is true
, this creates a
stream socket. If the stream argument is false
, it
creates a datagram socket.
If the application has specified a server socket factory, that
factory's createSocketImpl
method is called to create
the actual socket implementation. Otherwise a "plain" socket is created.
If there is a security manager, its
checkConnect
method is called
with host.getHostAddress()
and port
as its arguments. This could result in a SecurityException.
If UDP socket is used, TCP/IP related socket options will not apply.
host
- the IP address.port
- the port number.stream
- if true
, create a stream socket;
otherwise, create a datagram socket.IOException
- if an I/O error occurs when creating the socket.SecurityException
- if a security manager exists and its
checkConnect
method doesn't allow the operation.IllegalArgumentException
- if the port parameter is outside
the specified range of valid port values, which is between
0 and 65535, inclusive.NullPointerException
- if host
is null.setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
public void connect(SocketAddress endpoint) throws IOException
endpoint
- the SocketAddress
IOException
- if an error occurs during the connectionIllegalBlockingModeException
- if this socket has an associated channel,
and the channel is in non-blocking modeIllegalArgumentException
- if endpoint is null or is a
SocketAddress subclass not supported by this socketpublic void connect(SocketAddress endpoint, int timeout) throws IOException
endpoint
- the SocketAddress
timeout
- the timeout value to be used in milliseconds.IOException
- if an error occurs during the connectionSocketTimeoutException
- if timeout expires before connectingIllegalBlockingModeException
- if this socket has an associated channel,
and the channel is in non-blocking modeIllegalArgumentException
- if endpoint is null or is a
SocketAddress subclass not supported by this socketpublic void bind(SocketAddress bindpoint) throws IOException
If the address is null
, then the system will pick up
an ephemeral port and a valid local address to bind the socket.
bindpoint
- the SocketAddress
to bind toIOException
- if the bind operation fails, or if the socket
is already bound.IllegalArgumentException
- if bindpoint is a
SocketAddress subclass not supported by this socketSecurityException
- if a security manager exists and its
checkListen
method doesn't allow the bind
to the local port.isBound()
public InetAddress getInetAddress()
If the socket was connected prior to being closed
,
then this method will continue to return the connected address
after the socket is closed.
null
if the socket is not connected.public InetAddress getLocalAddress()
If there is a security manager set, its checkConnect
method is
called with the local address and -1
as its arguments to see
if the operation is allowed. If the operation is not allowed,
the loopback
address is returned.
SecurityManager.checkConnect(java.lang.String, int)
public int getPort()
If the socket was connected prior to being closed
,
then this method will continue to return the connected port number
after the socket is closed.
public int getLocalPort()
If the socket was bound prior to being closed
,
then this method will continue to return the local port number
after the socket is closed.
public SocketAddress getRemoteSocketAddress()
null
if it is unconnected.
If the socket was connected prior to being closed
,
then this method will continue to return the connected address
after the socket is closed.
SocketAddress
representing the remote endpoint of this
socket, or null
if it is not connected yet.getInetAddress()
,
getPort()
,
connect(SocketAddress, int)
,
connect(SocketAddress)
public SocketAddress getLocalSocketAddress()
If a socket bound to an endpoint represented by an
InetSocketAddress
is closed
,
then this method will continue to return an InetSocketAddress
after the socket is closed. In that case the returned
InetSocketAddress
's address is the
wildcard
address
and its port is the local port that it was bound to.
If there is a security manager set, its checkConnect
method is
called with the local address and -1
as its arguments to see
if the operation is allowed. If the operation is not allowed,
a SocketAddress
representing the
loopback
address and the local
port to which this socket is bound is returned.
SocketAddress
representing the local endpoint of
this socket, or a SocketAddress
representing the
loopback address if denied by the security manager, or
null
if the socket is not bound yet.getLocalAddress()
,
getLocalPort()
,
bind(SocketAddress)
,
SecurityManager.checkConnect(java.lang.String, int)
public SocketChannel getChannel()
SocketChannel
object associated with this socket, if any.
A socket will have a channel if, and only if, the channel itself was
created via the SocketChannel.open
or ServerSocketChannel.accept
methods.
null
if this socket was not created
for a channelpublic InputStream getInputStream() throws IOException
If this socket has an associated channel then the resulting input
stream delegates all of its operations to the channel. If the channel
is in non-blocking mode then the input stream's read
operations
will throw an IllegalBlockingModeException
.
Under abnormal conditions the underlying connection may be broken by the remote host or the network software (for example a connection reset in the case of TCP connections). When a broken connection is detected by the network software the following applies to the returned input stream :-
The network software may discard bytes that are buffered
by the socket. Bytes that aren't discarded by the network
software can be read using read
.
If there are no bytes buffered on the socket, or all
buffered bytes have been consumed by
read
, then all subsequent
calls to read
will throw an
IOException
.
If there are no bytes buffered on the socket, and the
socket has not been closed using close
, then
available
will
return 0
.
Closing the returned InputStream
will close the associated socket.
IOException
- if an I/O error occurs when creating the
input stream, the socket is closed, the socket is
not connected, or the socket input has been shutdown
using shutdownInput()
public OutputStream getOutputStream() throws IOException
If this socket has an associated channel then the resulting output
stream delegates all of its operations to the channel. If the channel
is in non-blocking mode then the output stream's write
operations will throw an IllegalBlockingModeException
.
Closing the returned OutputStream
will close the associated socket.
IOException
- if an I/O error occurs when creating the
output stream or if the socket is not connected.public void setTcpNoDelay(boolean on) throws SocketException
TCP_NODELAY
(disable/enable Nagle's algorithm).on
- true
to enable TCP_NODELAY,
false
to disable.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.getTcpNoDelay()
public boolean getTcpNoDelay() throws SocketException
TCP_NODELAY
is enabled.boolean
indicating whether or not
TCP_NODELAY
is enabled.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setTcpNoDelay(boolean)
public void setSoLinger(boolean on, int linger) throws SocketException
SO_LINGER
with the
specified linger time in seconds. The maximum timeout value is platform
specific.
The setting only affects socket close.on
- whether or not to linger on.linger
- how long to linger for, if on is true.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.IllegalArgumentException
- if the linger value is negative.getSoLinger()
public int getSoLinger() throws SocketException
SO_LINGER
.
-1 returns implies that the
option is disabled.
The setting only affects socket close.SO_LINGER
.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setSoLinger(boolean, int)
public void sendUrgentData(int data) throws IOException
data
- The byte of data to sendIOException
- if there is an error
sending the data.public void setOOBInline(boolean on) throws SocketException
SO_OOBINLINE
(receipt of TCP urgent data)
By default, this option is disabled and TCP urgent data received on a
socket is silently discarded. If the user wishes to receive urgent data, then
this option must be enabled. When enabled, urgent data is received
inline with normal data.
Note, only limited support is provided for handling incoming urgent data. In particular, no notification of incoming urgent data is provided and there is no capability to distinguish between normal data and urgent data unless provided by a higher level protocol.
on
- true
to enable
SO_OOBINLINE
,
false
to disable.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.getOOBInline()
public boolean getOOBInline() throws SocketException
SO_OOBINLINE
is enabled.boolean
indicating whether or not
SO_OOBINLINE
is enabled.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setOOBInline(boolean)
public void setSoTimeout(int timeout) throws SocketException
SO_TIMEOUT
with the specified timeout, in milliseconds. With this option set
to a non-zero timeout, a read() call on the InputStream associated with
this Socket will block for only this amount of time. If the timeout
expires, a java.net.SocketTimeoutException is raised, though the
Socket is still valid. The option must be enabled
prior to entering the blocking operation to have effect. The
timeout must be > 0
.
A timeout of zero is interpreted as an infinite timeout.timeout
- the specified timeout, in milliseconds.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.getSoTimeout()
public int getSoTimeout() throws SocketException
SO_TIMEOUT
.
0 returns implies that the option is disabled (i.e., timeout of infinity).SO_TIMEOUT
SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setSoTimeout(int)
public void setSendBufferSize(int size) throws SocketException
SO_SNDBUF
option to the
specified value for this Socket
.
The SO_SNDBUF
option is used by the
platform's networking code as a hint for the size to set the underlying
network I/O buffers.
Because SO_SNDBUF
is a hint,
applications that want to verify what size the buffers were set to
should call getSendBufferSize()
.
size
- the size to which to set the send buffer
size. This value must be greater than 0.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.IllegalArgumentException
- if the
value is 0 or is negative.getSendBufferSize()
public int getSendBufferSize() throws SocketException
SO_SNDBUF
option
for this Socket
, that is the buffer size used by the platform
for output on this Socket
.SO_SNDBUF
option for this Socket
.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setSendBufferSize(int)
public void setReceiveBufferSize(int size) throws SocketException
SO_RCVBUF
option to the
specified value for this Socket
. The
SO_RCVBUF
option is
used by the platform's networking code as a hint for the size to set
the underlying network I/O buffers.
Increasing the receive buffer size can increase the performance of network I/O for high-volume connection, while decreasing it can help reduce the backlog of incoming data.
Because SO_RCVBUF
is a hint,
applications that want to verify what size the buffers were set to
should call getReceiveBufferSize()
.
The value of SO_RCVBUF
is also used
to set the TCP receive window that is advertized to the remote peer.
Generally, the window size can be modified at any time when a socket is
connected. However, if a receive window larger than 64K is required then
this must be requested before the socket is connected to the
remote peer. There are two cases to be aware of:
ServerSocket.setReceiveBufferSize(int)
before the ServerSocket
is bound to a local address.size
- the size to which to set the receive buffer
size. This value must be greater than 0.IllegalArgumentException
- if the value is 0 or is
negative.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.getReceiveBufferSize()
,
ServerSocket.setReceiveBufferSize(int)
public int getReceiveBufferSize() throws SocketException
SO_RCVBUF
option
for this Socket
, that is the buffer size used by the platform
for input on this Socket
.SO_RCVBUF
option for this Socket
.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setReceiveBufferSize(int)
public void setKeepAlive(boolean on) throws SocketException
SO_KEEPALIVE
.on
- whether or not to have socket keep alive turned on.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.getKeepAlive()
public boolean getKeepAlive() throws SocketException
SO_KEEPALIVE
is enabled.boolean
indicating whether or not
SO_KEEPALIVE
is enabled.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setKeepAlive(boolean)
public void setTrafficClass(int tc) throws SocketException
The tc must be in the range 0 <= tc <=
255
or an IllegalArgumentException will be thrown.
Notes:
For Internet Protocol v4 the value consists of an
integer
, the least significant 8 bits of which
represent the value of the TOS octet in IP packets sent by
the socket.
RFC 1349 defines the TOS values as follows:
IPTOS_LOWCOST (0x02)
IPTOS_RELIABILITY (0x04)
IPTOS_THROUGHPUT (0x08)
IPTOS_LOWDELAY (0x10)
Setting bits in the precedence field may result in a SocketException indicating that the operation is not permitted.
As RFC 1122 section <IP_ADDRESS> indicates, a compliant TCP implementation should, but is not required to, let application change the TOS field during the lifetime of a connection. So whether the type-of-service field can be changed after the TCP connection has been established depends on the implementation in the underlying platform. Applications should not assume that they can change the TOS field after the connection.
For Internet Protocol v6 tc
is the value that
would be placed into the sin6_flowinfo field of the IP header.
tc
- an int
value for the bitset.SocketException
- if there is an error setting the
traffic class or type-of-servicegetTrafficClass()
,
SocketOptions.IP_TOS
public int getTrafficClass() throws SocketException
As the underlying network implementation may ignore the
traffic class or type-of-service set using setTrafficClass(int)
this method may return a different value than was previously
set using the setTrafficClass(int)
method on this Socket.
SocketException
- if there is an error obtaining the
traffic class or type-of-service value.setTrafficClass(int)
,
SocketOptions.IP_TOS
public void setReuseAddress(boolean on) throws SocketException
SO_REUSEADDR
socket option.
When a TCP connection is closed the connection may remain
in a timeout state for a period of time after the connection
is closed (typically known as the TIME_WAIT
state
or 2MSL
wait state).
For applications using a well known socket address or port
it may not be possible to bind a socket to the required
SocketAddress
if there is a connection in the
timeout state involving the socket address or port.
Enabling SO_REUSEADDR
prior to binding the socket using bind(SocketAddress)
allows
the socket to be bound even though a previous connection is in a timeout
state.
When a Socket
is created the initial setting
of SO_REUSEADDR
is disabled.
The behaviour when SO_REUSEADDR
is
enabled or disabled after a socket is bound (See isBound()
)
is not defined.
on
- whether to enable or disable the socket optionSocketException
- if an error occurs enabling or
disabling the SO_REUSEADDR
socket option, or the socket is closed.getReuseAddress()
,
bind(SocketAddress)
,
isClosed()
,
isBound()
public boolean getReuseAddress() throws SocketException
SO_REUSEADDR
is enabled.boolean
indicating whether or not
SO_REUSEADDR
is enabled.SocketException
- if there is an error
in the underlying protocol, such as a TCP error.setReuseAddress(boolean)
public void close() throws IOException
Any thread currently blocked in an I/O operation upon this socket
will throw a SocketException
.
Once a socket has been closed, it is not available for further networking use (i.e. can't be reconnected or rebound). A new socket needs to be created.
Closing this socket will also close the socket's
InputStream
and
OutputStream
.
If this socket has an associated channel then the channel is closed as well.
close
in interface Closeable
close
in interface AutoCloseable
IOException
- if an I/O error occurs when closing this socket.isClosed()
public void shutdownInput() throws IOException
If you read from a socket input stream after invoking this method on the
socket, the stream's available
method will return 0, and its
read
methods will return -1
(end of stream).
IOException
- if an I/O error occurs when shutting down this
socket.shutdownOutput()
,
close()
,
setSoLinger(boolean, int)
,
isInputShutdown()
public void shutdownOutput() throws IOException
IOException
- if an I/O error occurs when shutting down this
socket.shutdownInput()
,
close()
,
setSoLinger(boolean, int)
,
isOutputShutdown()
public String toString()
String
.public boolean isConnected()
Note: Closing a socket doesn't clear its connection state, which means
this method will return true
for a closed socket
(see isClosed()
) if it was successfuly connected prior
to being closed.
public boolean isBound()
Note: Closing a socket doesn't clear its binding state, which means
this method will return true
for a closed socket
(see isClosed()
) if it was successfuly bound prior
to being closed.
bind(java.net.SocketAddress)
public boolean isClosed()
close()
public boolean isInputShutdown()
shutdownInput()
public boolean isOutputShutdown()
shutdownOutput()
public static void setSocketImplFactory(SocketImplFactory fac) throws IOException
When an application creates a new client socket, the socket
implementation factory's createSocketImpl
method is
called to create the actual socket implementation.
Passing null
to the method is a no-op unless the factory
was already set.
If there is a security manager, this method first calls
the security manager's checkSetFactory
method
to ensure the operation is allowed.
This could result in a SecurityException.
fac
- the desired factory.IOException
- if an I/O error occurs when setting the
socket factory.SocketException
- if the factory is already defined.SecurityException
- if a security manager exists and its
checkSetFactory
method doesn't allow the operation.SocketImplFactory.createSocketImpl()
,
SecurityManager.checkSetFactory()
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
Sockets use the TCP/IP protocol by default. Some implementations may offer alternative protocols which have different performance characteristics than TCP/IP. This method allows the application to express its own preferences as to how these tradeoffs should be made when the implementation chooses from the available protocols.
Performance preferences are described by three integers
whose values indicate the relative importance of short connection time,
low latency, and high bandwidth. The absolute values of the integers
are irrelevant; in order to choose a protocol the values are simply
compared, with larger values indicating stronger preferences. Negative
values represent a lower priority than positive values. If the
application prefers short connection time over both low latency and high
bandwidth, for example, then it could invoke this method with the values
(1, 0, 0)
. If the application prefers high bandwidth above low
latency, and low latency above short connection time, then it could
invoke this method with the values (0, 1, 2)
.
Invoking this method after this socket has been connected will have no effect.
connectionTime
- An int
expressing the relative importance of a short
connection timelatency
- An int
expressing the relative importance of low
latencybandwidth
- An int
expressing the relative importance of high
bandwidthDracula Javadoc Sample, Made with Allan Im.


Top Ten Summer Films Film reviews by Chong Yu Copyright 1994 Chong Yu
10. THE FLINTSTONES Too much hype, but not enough originality. Although reusing jokes from the original cartoon may bring back nostalgic memories in some, they are still the same repetitive jokes, fresh and original decades ago, but not today. Not a complete waste however. Reminiscent of Jurassic Park. Slick presentation (especially Rick Moranis), but didn't leave time for a real screenplay.
9. CITY SLICKERS 2 Comparisons to the first are inevitable, but can stand alone. While the first concentrated on the ineptitude of the vacationers well, this was not as successful. But still a lighthearted comedy worth watching as long as you don't seriously try to enjoy it. The corny ending was nearly a let down, but created a possibility for a sequel with a nice little final scene.
8. THE CLIENT Tommy Lee Jones just is not the intelligent law official he was in THE FUGITIVE, working too much off his reputation from the previous movie. Although acting overall was excellent, the implausibility of three sides in a two-sided conflict often gets in the way.
7. WOLF Hailed as another Jack Nicholson triumph. Although he does put forth a polished performance, he does not have the same bite of earlier roles such as Joker in BATMAN. Poor special effects, but otherwise superbly done, except for the climactic battle scene.
6. THE CROW Violent. Nihilistic. Destructive. Rides on the death of its star with almost a suicidal urgency. Nearly flawless, save for the discovery of hero's "weakness." Although avoided the glorification of drugs present in the original comic, it also missed out on the almost heroic angst of Funboy's death.
5. THE LION KING Amidst the accusations of plagiarism and racism, manages to prove that cartoons (a.k.a. animation) can succeed even with darker themes (i.e., death). However, it is still more a showcase of art, animation, and (to a lesser degree) musical score, than of true direction and story telling.
4. SPEED Solid entertainment. Worth the hype. With such a narrow concept, manages to fill it with an intelligent plotline--a success in itself--while still keeping the pace fast and exhilarating.
3. WHEN A MAN LOVES A WOMAN Too bad it opened too early to be remembered for the Academy Awards. Outstanding performances by all three stars. On the surface it may seem like a family broken apart by one woman's alcoholism, but look deeper and you may see something else. Worth watching again (especially if you are single now and married later).
2. TRUE LIES Arnold Schwarzenegger has finally succeeded in comedy... almost. Tom Arnold (of all people) stole the show. Combines all the best of great action and great comedic films. After the slump of THE LAST ACTION HERO, Schwarzenegger has reproven himself. Amazing (and obviously expensive) specal effects, marred only by unfortunate stereotyping of the Arabic people.
1. FORREST GUMP Of all the films thus far this year, deserves Best Picture. Lighthearted, serious, hilarious, and tragic--uplifting. A minor epic. One of the few films where uncanny special effects blend almost seamlessly into the scenes. Excellent cinematography. Rewrites history, literally--takes a healthy suspension of disbelief. Oscar-calibre performance by Tom Hanks despite a few slips.
Must see's: 6 through 1. Future classics: 3 through 1.
.
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


Draws a fractal based tree on an html canvas using variables that adjusted by sliders.
This simple app manages a user defined set of task lists. I use it instead of paper lists around the house. Most useful as an example Angular / Node / Mongo app.
Mikeyoder (aka yodertv@github) would be happy to hear from you!
2016-2020 Yoder Code


See the main page for more info on Herbie.
Automatically Improving Accuracy for Floating Point Expressions was published at PLDI’2015, where it won the Distinguished Paper Award.
Scientific and engineering applications depend on floating point arithmetic to approximate real arithmetic. This approximation introduces rounding error, which can accumulate to produce unacceptable results. While the numerical methods literature provides techniques to mitigate rounding error, applying these techniques requires manually rearranging expressions and understanding the finer details of floating point arithmetic.
We introduce Herbie, a tool which automatically discovers the rewrites experts perform to improve accuracy. Herbie's heuristic search estimates and localizes rounding error using sampled points (rather than static error analysis), applies a database of rules to generate improvements, takes series expansions, and combines improvements for different input regions. We evaluated Herbie on examples from a classic numerical methods textbook, and found that Herbie was able to improve accuracy on each example, some by up to 60 bits, while imposing a median performance overhead of 40%. Colleagues in machine learning have used Herbie to significantly improve the results of a clustering algorithm, and a mathematical library has accepted two patches generated using Herbie.
The paper describes Herbie’s internals: how ground-truth exact values are found; how Herbie generates new programs that may improve accuracy; how different programs are combined into one. Several of the internal steps are technically interesting on their own, such as the localization heuristic, the rule rewriter, the simplification algorithm, and the regime inference algorithm. The paper also relates several experiments that tested Herbie’s accuracy improvement.
The paper is available in PDF format. TeX sources are available upon request.
The PLDI organizers asked every paper to put together a minute-long video advertising the talk to conference attendees. This didn't make too much sense for the Herbie talk—begin a distinguished paper, the talk would already be given by the time the video abstracts were shown, and it was presented at a plenary session, so no one had to choose whether or not to see the talk. So we decided to be a little more creative.
The Herbie talk was delivered by Pavel Panchekha in at 25 minute slot on . We recorded another take a week after the conference with the same slides, which you can watch below. You can also download the slides in Keynote or PDF format.


Animate.CSS Examples
Bounce, Bounce, Bounce
Wobble, Wobble, Wobble
no more wobble
Swing, Swing, Swing
Createjs and Canvas Element
Draw A Circle


Our sumptuous pure linen bed sheets ( flat sheets and fitted sheets ) are designed to wick away moisture, allowing your skin to breathe as you sleep.
Rs 2699
A pair of rainbow colored boots, has mid-top styling, closed back detail.
Rs 3999
Rs 5398
Rs 10800
Rs 42321
Rs 10749
Rs 201000


{UsersPicksText}: {UserName} {PickNameText}: {PickName} {PickRegionText}: {PickRegion} @ {PickLocation}


Enter Metadata:
Alignment title:
e.g. "Alignment of Thuc. 1.1 in French and English" (title max length 100 chars restricted to alphanumerics and '.','_' and '-')
Enter Text in Language 1:
Text Direction:
Left to Right
Right to Left
Invalid entry
Search for a text
Available Works
Enter your own text URI :
Select
Invalid entry
Enter Text in Language 2:
Text Direction:
Left to Right
Right to Left
Invalid entry
Search for a text
Available Works
Enter your own text URI :
Select
Invalid entry
Language 1:
English
Latin
Greek (Ancient -1453)
Arabic
Chinese
Afrikaans
Akkadian
Albanian
Amharic
Aragonese
Aramaic (Imperial- 700 BC-300 BC)
Aramaic (Samaritan)
Armenian
Asturian (Bable, Leonese)
Avestan
Azerbaijani
Basque
Bengali
Berber
Bosnian
Breton
Bulgarian
Bulgarian (Old, Old Church Slavonic)
Burmese
Catalan
Chagatai
Coptic
Cornish
Croatian
Czech
Danish
Dutch (Flemish)
Dutch (Middle, 1050-1350)
Egyptian (Ancient)
Elamite
English (Middle, 1100-1500)
English (Old, 450-1100)
Estonian
Finnish
French
French (Middle, 1400-1600)
French (Old, 842c. 1400)
Ge'ez
Georgian
German (Low, Low Saxon)
German (Middle-High, 1050-1500)
German (Old-High, 750-1050)
German
Gothic
Greek (Modern, 1453-)
Gujarati
Hebrew
Hindi
Hittite
Hungarian
Icelandic
Indonesian
Irish (Modern)
Irish (Middle 900-1200)
Irish (Old, to 900)
Italian
Japanese
Javanese
Kannada
Khmer (Central)
Korean
Kurdish
Ladino
Lithuanian
Malay
Marathi
Nepal Bhasa (Newari)
Nepali
Newari (Classical)
Norse (Old)
Norwegian
Norwegian (Bokmål)
Norwegian (Nynorsk)
Ossetian
Pahlavi (Middle Persian)
Pali
Pashto
Persian (Farsi)
Persian (Old, 600-400 BC)
Phoenician
Polish
Portuguese
Prakrit
Provençal (Occitan, -1500)
Punjabi (Panjabi)
Rajasthani
Romanian
Romany
Russian
Sanskrit
Scots
Scottish (Gaelic)
Serbian
Sicilian
Sindhi
Sinhalese (Sinhala)
Slovak
Slovenian
Sogdian
Spanish (Castilian)
Sumerian
Swahili
Swedish
Swiss German (Alsatian)
Syriac (Classical)
Syriac (Northeastern, Neo-Aramaic)
Tagalog
Tajik
Tamil
Tatar
Telugu
Thai
Tibetan
Turkish (Modern)
Turkish (Ottoman, 1500-1928 )
Turkmen
Ugaritic
Ukainian
Urdu
Uzbek
Vietnamese
Walloon
Welsh
Yiddish
Other*:
Click to toggle advanced options...
Language 2:
English
Latin
Greek (Ancient -1453)
Arabic
Chinese
Afrikaans
Akkadian
Albanian
Amharic
Aragonese
Aramaic (Imperial- 700 BC-300 BC)
Aramaic (Samaritan)
Armenian
Asturian (Bable, Leonese)
Avestan
Azerbaijani
Basque
Bengali
Berber
Bosnian
Breton
Bulgarian
Bulgarian (Old, Old Church Slavonic)
Burmese
Catalan
Chagatai
Coptic
Cornish
Croatian
Czech
Danish
Dutch (Flemish)
Dutch (Middle, 1050-1350)
Egyptian (Ancient)
Elamite
English (Middle, 1100-1500)
English (Old, 450-1100)
Estonian
Finnish
French
French (Middle, 1400-1600)
French (Old, 842-c. 1400)
Ge'ez
Georgian
German (Low, Low Saxon)
German (Middle-High, 1050-1500)
German (Old-High, 750-1050)
German
Gothic
Greek (Modern, 1453-)
Gujarati
Hebrew
Hindi
Hittite
Hungarian
Icelandic
Indonesian
Irish (Modern)
Irish (Middle 900-1200)
Irish (Old, to 900)
Italian
Japanese
Javanese
Kannada
Khmer (Central)
Korean
Kurdish
Ladino
Lithuanian
Malay
Marathi
Nepal Bhasa (Newari)
Nepali
Newari (Classical)
Norse (Old)
Norwegian
Norwegian (Bokmål)
Norwegian (Nynorsk)
Ossetian
Pahlavi (Middle Persian)
Pali
Pashto
Persian (Farsi)
Persian (Old, 600-400 BC)
Phoenician
Polish
Portuguese
Prakrit
Provençal (Occitan, -1500)
Punjabi (Panjabi)
Rajasthani
Romanian
Romany
Russian
Sanskrit
Scots
Scottish (Gaelic)
Serbian
Sicilian
Sindhi
Sinhalese (Sinhala)
Slovak
Slovenian
Sogdian
Spanish (Castilian)
Sumerian
Swahili
Swedish
Swiss German (Alsatian)
Syriac (Classical)
Syriac (Northeastern, Neo-Aramaic)
Tagalog
Tajik
Tamil
Tatar
Telugu
Thai
Tibetan
Turkish (Modern)
Turkish (Ottoman, 1500-1928 )
Turkmen
Ugaritic
Ukainian
Urdu
Uzbek
Vietnamese
Walloon
Welsh
Yiddish
Other*:
Click to toggle advanced options...
*Please use ISO 639-2 or ISO 639-3 three-letter codes for any other languages
Align


- Current – 0.7.0 (11 Feb 2016) –
Version 0.7.0 is finally out now that this package is 7 years old...
- Dropped compatibility with Python < 2.7.
- Added unit tests with almost complete coverage.
- Fixed a doc bug for SharedMemory.write(). On an
attempt to write outside of the segment, the code raises
ValueError. The documentation had incorrectly stated that
write() would silently
discard the data that overflowed the segment.
- Fixed a code bug in SharedMemory.write() that
incorrectly interpreted offsets > LONG_MAX.
- Fixed a code bug in SharedMemory.write() that
didn’t always generate a ValueError for negative
offsets.
- Fixed a doc/code bug where SharedMemory.attach() was
documented to accept keyword arguments but did not. Now it does.
- Fixed some header bugs that prevented the code from using
PY_SSIZE_T_CLEAN. Thanks to Tilman Koschnick for
bringing this to my attention.
- Added doc to note that this module exposes SHM_RDONLY
as a module-level constant.
- 0.6.8 (12 Sept 2014) –
- Fixed a bug in prober.py where prober would fail
on systems where Python's include file was not named
pyconfig.h. (RHEL 6 is one such system.) Thanks to
Joshua Harlow for the bug report and patch.
- Spasibo again to Yuriy Taraday for pointing out that
the semaphore initialization example I changed in the previous
version was still not
quite correct, and for suggesting something better.
- 0.6.7 (1 August 2014) –
Spasibo to Yuriy Taraday for reporting some doc errors
corrected in this version.
- Added KEY_MIN as a module-level constant. The documentation
has claimed that it was available for a long time so now the
code finally matches the documentation.
- Changed randomly generated keys to never use a value of 0.
- Fixed two documenation errors in the special section on
semaphore initialization and gave long overdue credit to
W. Richard Stevens' book for the code idea. (Any code mistakes
are mine, not his.)
- This is the first version downloadable from PyPI.
- 0.6.6 (15 October 2013) –
Added the ability to use Semaphores in context managers.
Thanks to Matt Ruffalo for the suggestion and patch.
- 0.6.5 (31 March 2013) –
Fixed a bug where SharedMemory.write() claimed to accept
keyword arguments but didn't actually do so. Thanks to
Matt Ruffalo for the bug report and patch.
- 0.6.4 (19 Dec 2012) –
- Added a module-level attach() method based on a
suggestion by Vladimír Včelák.
- Added the ftok() method along with dire warnings about
its use.
- 0.6.3 (3 Oct 2010) –
- Fixed a segfault in write() that occurred any time
an offset was passed. This was introduced in v0.6.0.
Tack to Johan Bernhardtson for the bug report.
- 0.6.2 (6 July 2010) –
- Updated setup.py metadata to reflect Python 3 compatibility.
No functional change.
- 0.6.1 (26 June 2010) –
- Fixed a typo introduced in the previous version that caused
unpredictable behavior (usually a segfault) if a block flag
was passed to MessageQueue.send(). Obrigado
to Álvaro Justen and Ronald Kaiser for the bug report and
patch.
- 0.6.0 (20 May 2010) –
- Added Python 3 support.
- Renamed a constant that caused a problem under AIX.
Thanks to Loic Nageleisen for the bug report.
- Updated this documentation a little.
- 0.5.2 (17 Jan 2010) –
- Fixed a bug that insisted on keys > 0. Thanks to 原志
(Daniel) for the bug report and patch.
- Fixed a bug where the module could have generated invalid
keys on systems that typedef key_t as a
short. I don't think such a system exists, though.
- Fixed a LICENSE file typo.
- Added an RSS feed to this page.
- 0.5.1 (1 Dec 2009) –
No code changes in this version.
- Fixed the comment in sysv_ipc_module.c that
still referred to the GPL license.
- Added the attributes __version, __author__,
__license__ and __copyright__.
- Removed file() from setup.py in favor
of open().
- 0.5 (6 Oct 2009) –
No code changes in this version.
- Changed the license from GPL to BSD.
- 0.4.2 (22 Mar 2009) –
No code changes in this version.
- Fixed broken documentation links to youtube.
- Fixed the project name in the LICENSE file.
- 0.4.1 (12 Feb 2009) –
- Changed status to beta.
- Added automatic generation of keys.
- Added a message queue demo.
- Added str() and repr() support to all
objects.
- Fixed a bug in SharedMemory.write() that could cause
a spurious error of "Attempt to write past end of memory
segment". This bug only occurred on platforms using
different sizes for long and int, or
long and py_size_t
(depending on Python version). Tack to Jesper
for debug help.
- Plugged a memory leak in MessageQueue.receive().
- Added a VERSION attribute to the module.
- 0.4 (28 Jan 2009) –
- Added message queues.
- Fixed a bug where the key attribute of SharedMemory objects
returned garbage.
- Fixed a bug where keys > INT_MAX would get truncated on
platforms where longs are bigger than ints.
- Provided decent inline documentation for object attributes
(available via the help() command).
- Rearranged the code which was suffering growing pains.
- 0.3 (16 Jan 2009) –
This version features a rename of classes and errors
(sorry about breaking the names), some modifications to
semaphore timeouts, and many small fixes.
A semaphore's .block flag now consistently trumps the
timeout. When False, the timeout is irrelevant -- calls
will never block. In prior versions, the flag was ignored
when the timeout was non-zero.
Also, on platforms (such as OS X) where semtimedop() is
not supported, all timeouts are now treated as None.
In other words, when .block is True, all calls
wait as long as necessary.
Other fixes –
- Fixed the poor choices I'd made for class and
error names by removing the leading "SysV" and "SysVIpc".
- Removed dependencies on Python 2.5. The module now works
with Python 2.4.4 and perhaps earlier versions.
- Fixed a bug where I was not following SysV semaphore semantics
for interaction between timeouts and the block flag.
- Fixed compile problems on OpenSolaris 2008.05.
- Got rid of OS X compile warnings.
- Fixed many instances where I was making potentially lossy
conversions between Python values and Unix-specific
types like key_t, pid_t, etc.
- Fixed a bug in the SharedMemory attach() function
that would set an error string but not return an error
value if the passed address was not None or a long.
- Simplified the code a little.
- Restricted the semaphore acquire() and
release() delta to be between SHORT_MIN and
SHORT_MAX since
it
is a short in the SUSv2 spec.
- Fixed a bug where calling acquire() or
release() with a delta of 0 would call
.Z() instead.
- Disallowed byte counts ≤ 0 in
SharedMemory.read()
- Fixed a bug in the SharedMemory init code that
could, under vanishingly rare circumstances, return failure
without setting the error code.
- Removed some dead code relating to the .seq member
of the sem_perm and shm_perm structs.
- Stopped accessing the non-standard key
(a.k.a. _key and __key) element of the
ipc_perm struct.
- Added code to ensure the module doesn't try to create
a string that's larger than Python permits when reading
from shared memory.
- 0.2.1 (3 Jan 2009) –
- Fixed a bug that prevented the module-specific
errors (ExistentialError, etc.) from
being visible in the module.
- Fixed a bug that re-initialized shared memory with
the init character when only IPC_CREAT was specified
and an existing segment was opened.
- Fixed a bug that always defaulted the size of a shared
memory segment to PAGE_SIZE. Updated code and
documentation to use intelligent defaults. Tack to
Jesper for the bug report.
- Several cosmetic changes. (Added more metadata to setup.py,
added a newline to the end of probe_results.h to avoid
compiler complaints, etc.)
- 0.2 (16 Dec 2008) –
Lots of small fixes.
- Fixed a bug where calling shm.remove() on shared
memory that was already removed would cause a SystemError.
(I wasn't setting the Python error before returning.)
- Fixed a couple of bugs that would cause the creation
of a new, read-only shared memory segment to fail.
- Fixed a bug that would cause the creation
of a new, read-only semaphore to fail.
- Added the constant IPC_CREX.
- Renamed (sorry) MAX_KEY to KEY_MAX and
MAX_SEMAPHORE_VALUE to SEMAPHORE_VALUE_MAX
to be consistent with the C naming convention in limits.h.
- Hardcoded SEMAPHORE_VALUE_MAX to 32767 until I can
find a reliable way to determine it at install time.
- Changed prober.py to write out a C header file with
platform-specific definitions in it.
- Replaced OSError in shared memory functions with custom
errors from this module.
- Added code to raise a ValueError when an attempt is made
to assign an out-of-range value to a semaphore.
- Added code to raise a ValueError when an out-of-range key
is passed to a constructor.
- Fixed a bug in the demo program conclusion.c that caused
some informational messages to be printed twice.
- Fixed some documentation bugs.
- 0.1 (4 Dec 2008) – Original (alpha) version.


I have played football for for over 15 years. I've played for the little league team South Jackson 49ers since I was 5 years old. After 8 Years with them I went to Carver middleschool and played my 8th grade year. From 10th through 12th grade I played strong safety at Raymond High
I recently started playing soccer my senior year of high school. My position on the pitch was a Forward/Striker.
I love wrestling. Pro wrestling to be specific. From the Undertaker to the Usos, I really enjoy the show these wrestlers put on for our entertainment. In fact, I hope to start my own wrestling company someday.
I worked at this store for almost a year before moving back home.
UPS was a seasonal job I obtained after I moved back at home.
In March of this year, I started working at Walmart. I currently work at the Store located in Clinton.


{% extends 'base.html' %} {% load i18n crispy_forms_tags %} {% block content %}
{{ project.location }}
{{ project.deadline }}
{{ project.estimated_price }} KRW
{{ project.estimated_period }} {% trans "days" %}
{% trans "Above is a subject to change upon negotiation. Use it as reference purposes only." %}
{% blocktrans %} There is no restriction whatsoever in sharing your contact information. Please feel free to put your e-mail, phone number to get in touch with others. {% endblocktrans %}
{{ project.description|urlize|linebreaks }}
{% endblock %}


0
Central de alertas
December 2, 2019
Nova solicitação de amizade.
Show All Alerts
0
Central de Mensagens
Hi there! I am wondering if you can help me with a problem I've been having.
Emily Fowler · 58m
Am I a good boy? The reason I ask is because someone told me that people say this to all dogs, even if they aren't good...
Chicken the Dog · 2w
ir para a pagina de mensagens
Dados do usuario
Sair
Ready to Leave?
×
Selecione "Logout" se você quer realemnte encerrar esta sessão.


esmond comes with a script to set up a development environment. Run the mkdevenv script:
./mkdevenv
Every time you start a new shell you’ll need to pull in the enviroment variables it creates:
source esmond.env
To setup the database and load the basic config data (OIDs, OIDSets, etc):
# this creates the database structure
python esmond/manage.py syncdb
# this loads the oidsets
python esmond/manage.py loaddata oidsets.json
# this loads the test devices
python esmond/manage.py loaddata test_devices.json
To run tests do:
# run all the tests in the api app
python esmond/manage.py test api
# run all the tests in a file (esmond/api/tests/test_api.py)
python esmond/manage.py test api.tests.test_api
# run all the tests in a class in a file (DeviceAPITests)
python esmond/manage.py test api.tests.test_api.DeviceAPITests
# run just a specific test
python esmond/manage.py test api.tests.test_api.DeviceAPITests.test_get_device_list
Note that the Django testing framework will create a separeate testing database. The fixtures attribute of the test classes specifies which fixtures to load. The fixtures are kept in esmond/api/fixtures in JSON format. We are in the process of deprecating fixtures in favor of creating test objects in code because it is simpler and less error prone.
Coverage (http://nedbatchelder.com/code/coverage/) is a tool that can be used to see how much of the codebase is covered by the unit tests, or how much of a particular module is exercised by a script or piece of code. These are instructions on running against the test suite, but applies to other things like scripts.
To install:
pip install coverage
To run against the test suite, change directory to the root of the esmond codebase and run the following command:
coverage run esmond/manage.py test -v2 api.tests
This will run the entire test suite, one can tailor the “api.tests” bit to only run a subset of the tests.
After this is complete, a data file called ”.coverage” is created in that directory (it will be ignored by .hgignore) containing data from the most recent invocation. This file is used to run the reporting features on.
To get a general coverage report:
coverage report --include=esmond*
The –include arg will make it so it will only produce stats on the codebase instead of also the site-packages modules involved. This will list all of the modules that were hit by the test invocation and what percentage of the code in each was worked by the tests. Modules not listed were not touched, and their absence can be used to determine additional tests to formulate.
To get a report that also lists the line numbers from each module that have been missed:
coverage report --include=esmond* -m
That will display what lines have been missed. Generally a single line of code is just part of a conditional statement and might not be super relevent. But sizable blocks of code (something like: 1104-1119) are candidates for inspection to see if additional tests need to be formulated to execute that block.
To profile the persister, set the “profile_persister = no” line in the config file to “yes.” Then run the persister for a while - do note that the profiler does put some drag on the processes. After 20 minutes or so (or less depending on what you’re checking), wait for the queues to drain from whatever method you used to fill them (poller, data generatation script) and issue a clean shutdown signal to the persister.
Individual files with the cProfile information will be created in the directory indicated by the “traceback_dir” entry in the config file. They will be of the following format:
aluifref-1386882414.34.prof
alusapref-1386882414.54.prof
cassandra_1-1386882414.63.prof
cassandra_2-1386882414.68.prof
cassandra_3-1386882414.73.prof
cassandra_4-1386882414.78.prof
cassandra_5-1386882414.83.prof
cassandra_6-1386882414.88.prof
cassandra_7-1386882414.93.prof
cassandra_8-1386882414.98.prof
cassandra_9-1386882415.04.prof
ifref-1386882414.45.prof
infifref-1386882414.43.prof
They are named by the qname of the persister process that generated them and just a time.time() stamp to make the names unique over subsequent runs.
Don’t forget to turn profiling back to “no” when you are done.
Be aware that unless you perfectly killed the persister at the precice moment it was done consuming things, the top process reported might be {time.sleep}. This is because of a tight loop when a persister process has nothing to do.


⌂ Character Generator (back to start)
[3/6]
Influencing Events
[name]
[title]
⚑
[location]
Fill in as many as you need.
Event 1
Event 2
Event 3
back (input will not be saved)


{{ activator.value.applicationName }} Last updated: {{ activator.value.appUpdated | date: 'dd MMM yyyy' }} | Owner: {{ activator.value.techOwnerName }} {{ activator.value.applicationDescription }}
Deployment setup CI (Continuous integration service) CD (Continuous Deployment) Source control Change control Describe Your Application Application Name Short Description


Mountains rose all around Galina Casban, little more than large hills behind but snowcapped peaks ahead and higher peaks beyond those, yet she really saw none of them. The stones of the slope bruised her bare feet. She panted, lungs laboring already. The sun baked overhead as it had for seemingly endless days, burning the sweat out of her in rivers. Anything other than putting one foot in front of the other seemed beyond her. Strange that with all the sweat coming out of her, she could not find any moisture in her mouth.
She had been Aes Sedai fewer than ninety years, her long black hair untouched as yet by gray, but for nearly twenty of those she had been head of the Red Ajah—called the Highest by other Red sisters, in private; considered by other Reds equal to the Amyrlin Seat—and for all but five of the years she had worn the shawl, she had been of the Black Ajah, in truth. Not to the exclusion of her duties as a Red, but superior to them. Her place on the Supreme Council of the Black Ajah was next to that of Alviarin herself, and she was one of only three who knew the name of the woman who led their hooded meetings. She could speak any name in those meetings—a king’s—and know that name belonged to the dead. It had happened, with a king and with a queen. She had helped to break two Amyrlins, twice helped turn the most powerful woman in the world into a squealing wretch eager to tell all she knew, had helped make it seem that one of those had died in her sleep and had seen the other deposed and stilled. Such things were a duty, like the need to exterminate men with the ability to channel, not actions she took pleasure in beyond that of tasks well done, but she had enjoyed leading the circle that stilled Siuan Sanche. Surely all those things meant that Galina Casban was herself among the mightiest of the world, among the most powerful. Surely they did. They must.
Her legs wavered like springs that had lost their tempering, and she fell heavily, unable to catch herself with arms and elbows tightly bound behind her. The once-white silk shift, the only garment left to her, tore again as she slid on the loose rocks, scraping her welts. A tree stopped her. Face pressed against the ground, she began to sob. “How?” she moaned in a thick voice. “How can this happen to me?”
After a time she realized that she had not been pulled to her feet; no matter how often she fell, she had never before been allowed a moment’s respite. Blinking away tears, she raised her head.
Aiel women covered the mountainside, several hundred of them scattered among the barren trees with their spears, the veils they could raise in an instant hanging down their chests. Galina wanted to laugh. Maidens; they called these monstrous women Maidens. She wished she could laugh. At least there were no men present, a small mercy. Men made her skin crawl, and if one could see her now, less than half-clothed . . .
Anxiously, her eyes sought for Therava, but most of the seventy or so Wise Ones stood together looking at something farther up the slope, blocking her view. There seemed to be a murmur of voices from the front of them. Maybe the Wise Ones were conferring about something. Wise Ones. They had been brutally efficient in teaching her the correct names; never just Aiel woman, and never wilder. They could smell contempt however she hid it. Of course, you did not have to try hiding what had been seared out of you.
Most of the Wise Ones were looking away, but not all. The glow of saidar surrounded a young, pretty, red-haired woman with a delicate mouth who watched Galina with large, intent blue eyes. Perhaps as a sign of their own disdain, they had chosen the weakest of their number to shield her this morning. Micara was not truly weak in the Power—none of them were that—but even smarting from shoulders to knees as she was, Galina could have broken Micara’s shield with little effort. A muscle in her cheek spasmed uncontrollably; it always did when she thought of another escape attempt. The first had been bad enough. The second . . . Shuddering, she fought not to sob again. She would not make the attempt again until she was sure of complete success. Very sure. Absolutely sure.
The mass of Wise Ones parted, turning to follow Therava with their eyes as the hawk-faced woman strode toward Galina. Suddenly panting once more, with apprehension, Galina tried to struggle to her feet. Hands bound and muscles watery, she had only reached her knees when Therava bent over her, necklaces of ivory and gold clattering softly.  Taller than most men, the woman did that even when they were standing, craning Galina’s neck painfully to make her look up into the Wise One’s face. Therava was somewhat stronger in the Power than she, which relatively few women were, but that was not what made Galina tremble. Cold deep blue eyes stabbed into her own, held her more tightly than Therava’s rough hand; they seemed to strip her soul naked as easily as the Wise One handled her. She had not begged yet, not when they made her walk all day with hardly a drop of water, not when they forced her to keep up as they ran for hours, not even when their switches made her howl. Therava’s cruel hard face, staring down at her impassively, made her want to beg. Sometimes she woke at night, stretched out tight between the four stakes where they bound her, woke whimpering from dreams that her whole life would be lived under Therava’s hands.
“She is collapsing already,” the Wise One said in a voice like stone. “Water her, and bring her.” Turning away, she adjusted her shawl, Galina Casban forgotten until there was need to recall her; to Therava, Galina Casban was less important than a stray dog.
Galina did not try to rise; she had been “watered” often enough by now. It was the only way they let her drink. Aching for moisture, she did not resist when a blocky Maiden took her by the hair as Therava had and pulled her head back. She just opened her mouth as far as she could. Another Maiden, with a puckered scar slanting across nose and cheek, tilted a waterskin and slowly poured a trickle into Galina’s waiting mouth. The water was flat and warm; it was delicious. She swallowed convulsively, awkwardly, holding her jaws wide. Almost as much as water to drink, she wanted to move her face under that thin stream, to let it run over her cheeks and forehead.  Spilling water was cause for another beating; they had thrashed her in sight of a creek six paces wide for spilling a mouthful over her chin.
When the waterskin was finally taken away, the blocky Maiden hauled her to her feet by her bound elbows. Galina groaned. The Wise Ones were gathering their skirts over their arms, exposing their legs well above soft knee-high boots. They could not be going to run. Not again. Not in these mountains.
The Wise Ones loped forward as easily as if on level ground. An unseen Maiden cut Galina across the back of her thighs with a switch, and she stumbled to a semblance of a run, half-dragged by the blocky Maiden. The switch slashed her legs whenever they faltered. If this run continued the rest of the day, they would take turns, one Maiden wielding the stick and another dragging. Laboring up slopes and nearly sliding down, Galina ran.  Galina wanted to shout at her to flee, to run before Therava caught her. The Aiel ran on by the snarling animal, unconcerned, and Galina wept with jealousy for the cat’s freedom.
She would be rescued eventually, of course; she knew that. The Tower would not allow a sister to remain in captivity. Elaida would not allow a Red to be held. Surely Alviarin would send rescue. Someone would, anyone, to save her from these monsters, especially from Therava. She would promise anything for that deliverance. She would even keep those promises. She had been broken free of the Three Oaths on joining the Black Ajah, replacing them with a new trinity, but at that moment she truly believed she would keep her word, if it brought rescue. Any promise, to anyone who would free her. Even a man.
By the time low tents appeared, their dark colors fading into the forested mountainsides as well as the cat had, Galina had two Maidens supporting her, pulling her along. Shouts rose from every side, glad cries of greeting, but Galina was dragged on behind the Wise Ones, deeper into the camp, still running, stumbling.
Without warning the hands left her arms.  She coughed on a piece of leaf, but she was too weak to turn her head. The blood pounded her ears, but voices came to her and slowly began to make sense.
“ . . . Took your time, Therava,” a familiar-sounding woman’s voice said. “Nine days. We have been back long since.”
Nine days? Galina shook her head, scrubbing her face on the ground. Since the Aiel had shot her horse from under her, memory blended all the days into a melange of thirst and running and being beaten, but surely it had been longer ago than nine days. Weeks, certainly. A month or more.
“Bring her in,” the familiar voice said impatiently.
Hands pulled her up, shoved her forward, bending her to go under the edge of a large tent with the sides raised all around. She was thrown down on layered carpets, the edge of a red-and-blue Tairen maze overlapping gaudy flowers beneath her nose. With difficulty, she raised her head.
 Sevanna with her hair like fine-spun gold, her clear emerald eyes. Treacherous Sevanna, who had given her word to distract attention by raiding into Cairhien, then broken her pledge by trying to free al’Thor. Sevanna, who at the least might take her from Therava’s clutches.
She struggled up onto her knees, and for the first time realized there were others in the tent. Therava sat on a cushion to Sevanna’s right, at the head of a curving line of Wise Ones, fourteen women who could channel in all, though Micara, who still held the shield on her, stood at the foot of the line rather than sitting. Half of them had been among the Wise Ones who captured her with such scornful ease. She would never again be so careless about Wise Ones; never again. Short, pale-faced men and women in white robes moved behind the Wise Ones, wordlessly offering trays of gold or silver with small cups, and more did the same on the other side of the tent, where a gray-haired woman in an Aiel coat and breeches of brown and gray sat to Sevanna’s left, at the head of a line of twelve stone-faced Aielmen. Men. And she wore nothing but her shift, ripped and gaping in a number of places.  She forced her back stiff to keep from trying to burrow into the rugs and hide from those cold male eyes.
“It seems that Aes Sedai can lie,” Sevanna said, and the blood drained from Galina’s face. The woman could not know; she could not. “You made pledges, Galina Casban, and broke them. Did you think you could murder a Wise One and then run beyond the reach of our spears?”
For a moment, relief froze Galina’s tongue. Sevanna did not know about the Black Ajah. Had she not abandoned the Light long ago, she would have thanked the Light. Relief stilled her tongue, and a tiny spark of indignation. They attacked Aes Sedai and were angry when some of them died? A tiny spark was all she could manage. After all, what was Sevanna’s twisting facts alongside days of beatings and Therava’s eyes? A pained, croaking laugh bubbled up at the absurdity of it. Her throat was so dry.
“Be thankful some of you still live,” she managed past her laughter. “Even now it is not too late to rectify your mistakes, Sevanna.” With an effort, she swallowed rueful mirth before it turned to tears. Just before. “When I return to the White Tower, I will remember those who assist me, even now.” She would have added, “and those who do otherwise,” but Therava’s unwavering stare set fear fluttering in her middle. For all she knew, Therava still might be allowed to do whatever she wished. There had to be some way to induce Sevanna to . . . take charge of her. That tasted bitter, yet anything was better than Therava. Sevanna was ambitious, and greedy. In the midst of frowning at Galina, she had caught sight of her own hand and directed a brief, admiring smile at rings set with large emeralds and firedrops. She wore rings on half her fingers, and necklaces of pearls and rubies and diamonds fit for any queen draped across the swell of her bosom. Sevanna could not be trusted, but perhaps she could be bought. Therava was a force of nature; as well try to buy a flood or an avalanche. “I trust that you will do what is right, Sevanna,” she finished. “The rewards of friendship with the White Tower are great.”
For a long moment, there was silence except for the whisper of the white robes as the servants moved with their trays. Then . . .
“You are da’tsang,” Sevanna said. Galina blinked. She was a despised one? Certainly they had displayed their contempt plainly, but why—?

Therava’s hawklike face might have been carved from wood, yet her eyes, fixed on Galina, glittered accusingly. Galina felt nailed to the spot where she knelt, unable to move a muscle. A hypnotized bird watching a serpent slither nearer. No one had ever made her feel that way. No one.
“Three Wise Ones have spoken.” Sevanna’s satisfied smile was almost welcoming. Therava’s face was stark. The woman did not like whatever had just happened. Something had happened, even if Galina did not know what. Except that it appeared to have delivered her from Therava. That was more than enough for the moment. More than enough.
 The thick wool was hot and itchy and scratchy on her welts, and she welcomed it as though it were silk. Despite Micara still shielding her, she could have laughed as the Maidens led her out of the tent. It did not take long for that desire to vanish entirely. It did not take her long to begin wondering whether begging on her knees before Sevanna would do any good. She would have done it, could she have gotten to the woman, except that Micara made it plain she was not going anywhere she was not told to go, or speak a word unless spoken to.
Arms folded, Sevanna watched the Aes Sedai, the da’tsang, stagger down the mountainside and stop, beside a Maiden squatting on her heels with a switch, to drop the head-shaped stone she had been carrying in her hands. The black hood turned in Sevanna’s direction for a moment, but the da’tsang quickly bent to pick up another large stone and turned to labor back up the fifty paces to where Micara waited with another Maiden. There she dropped that stone, picked up another, and started back down. Da’tsang were always shamed with useless labor; unless there was great need, the woman would not be allowed to carry even a cup of water, yet toil without purpose would fill her hours till she burst of shame. The sun had a long way to climb yet, and many more days lay ahead.
“I did not think she would condemn herself out of her own mouth,” Rhiale said at Sevanna’s shoulder. “Efalin and the others are all but sure she openly admitted killing Desaine.”
“She is mine, Sevanna.” Therava’s jaw tightened. She might have taken the woman, but da’tsang belonged to no one. “I intended to dress her in gai’shain robes of silk,” she muttered. “What is the purpose of this, Sevanna? I expected to have to argue against cutting her throat, not this.”
Rhiale tossed her head, casting a sidelong glance at Sevanna. “Sevanna intends to break her. We have had long talks of what to do should we capture any Aes Sedai. Sevanna wants a tame Aes Sedai to wear white and serve her. An Aes Sedai in black will do well enough, though.”
Sevanna shifted her shawl, irritated by the woman’s tone. Not quite mocking, but all too aware that she wanted somehow to use the Aes Sedai’s channeling as though it were Sevanna’s own. It would be possible. Two gai’shain passed the three Wise Ones, carrying a large brass-strapped chest between them. Short and pale-faced, husband and wife, they had been Lord and Lady in the treekillers’ lands. The pair bowed their heads more meekly than any Aiel in white ever could have managed; their dark eyes were tight with fear of a harsh word, much less a switch. Wetlanders could be tamed like horses.
“The woman is tamed already,” Therava grumbled. “I have looked into her eyes. She is a bird fluttering in the hand and afraid to fly.”
“In nine days?” Rhiale said incredulously, and Sevanna shook her head vigorously.
“She is Aes Sedai, Therava.   She made a vexed, angry sound. “And you heard her threaten us.” The woman had been as slippery as the treekillers, speaking of rewards and letting the threat if no rewards came shout silently. But what else could be expected of Aes Sedai? “It will take long to break her, but this Aes Sedai will beg to obey if it takes a year.” Once she did that . . . Aes Sedai could not lie, of course; she had expected Galina to deny her accusation. Once she swore to obey . . .
“If you want to make an Aes Sedai obey you,” a man’s voice said behind her, “this might help.”
Incredulous, Sevanna spun about to find Caddar standing there, and beside him the woman—the Aes Sedai—Maisia, both dressed in dark silk and fine lace as they had been six days ago, each with a bulging sack hanging incongruously from one shoulder by a strap. Caddar held out a smooth white rod about a foot long in one dark hand.
“How did you come here?” she demanded, then compressed her lips in anger. Plainly he had come as he had before; she was just surprised at him appearing here, in the middle of the camp. She snatched the white rod he offered, and as always he stepped back beyond arm’s reach. “Why have you come?” she amended. “What is this?” A little slimmer than her wrist, the rod was smooth except for a few odd, flowing symbols incised on one flat end. It felt not quite like ivory, not quite like glass. Very cool to the touch.
“You might call it an Oath Rod,” Caddar said, showing teeth in what was doubtless meant for a smile. “It only came into my hands yesterday, and I immediately thought of you.”
Sevanna clamped her hands tight around the rod to keep from hurling it away. Everyone knew what the Aes Sedai’s Oath Rod did. Trying not even to think, much less speak, she thrust it behind her belt and took her hands away.
Rhiale frowned at the rod at Sevanna’s waist, and her eyes rose slowly, coldly, to Sevanna’s face. Therava adjusted her shawl in a clatter of bracelets, and gave a hard, thin smile. There would never be any chance of one of them touching the rod and maybe no chance of any other Wise One doing so either. But there was still Galina Casban. One day she would break.
Raven-eyed Maisia, a little behind Caddar, smiled almost as faintly as Therava. She had seen, and understood. She was observant, for a wetlander.
“Come,” Sevanna told Caddar. “We will drink tea in my tent.” She certainly would not share water with him. Lifting her skirts, she started up the slope.
To her surprise, Caddar was also observant. “All you need do is have your Aes Sedai”—walking easily beside her on his long legs, he grinned suddenly, toothily, at Rhiale and Therava—“or any woman who can channel hold the rod and speak whatever promises you wish while someone channels a little Spirit into the number. The marks on the end of the rod?” he added, raising his eyebrows insultingly. “You can use it to release her, too but that is more painful. Or so I understand.”
Sevanna’s fingers touched the rod lightly. More glass than ivory, and very cool. “It only works on women?” She ducked into the tent ahead of him. The Wise Ones and the leaders of the warrior societies were gone, but the dozen treekiller gai’shain remained, kneeling patiently to one side. No one person had ever kept a dozen gai’shain before, and she possessed more. There would have to be a new name for them, though, since they would never put off the white.
“Women who can channel, Sevanna,” Caddar said, following her in. The man’s tone was incredibly insolent. His dark eyes shone with open amusement. “You will have to wait until you have al’Thor before I give you what will control him.”
Removing the sack from his shoulder, he sat. Not on a cushion near hers, of course. Maisia was not afraid of a blade in her ribs; she lounged on an elbow almost at Sevanna’s side. Sevanna eyed her sideways, then casually undid another lace of her own blouse. She did not recall the woman’s bosom being as round as that. For that matter, her face seemed even more beautiful, as well. Sevanna tried not to grind her teeth.
“Of course,” Caddar went on, “if you mean some other man—There is a thing called a binding chair. Binding people who cannot channel is more difficult than binding those who can. Perhaps a binding chair survived the Breaking, but you will have to wait while I find it.”
Sevanna touched the rod again, then impatiently ordered one of the gai’shain to bring tea. She could wait.  Sooner or later he would give her everything she wanted of him. And now the rod could break Maisia free of him. Surely then the woman would not protect him. For his insults, he would wear black. Sevanna took a small green porcelain cup from the tray the gai’shain held and gave it to the Aes Sedai with her own hands. “It is flavored with mint, Maisia. You will find it refreshing.”
 Well, what could be done to one Aes Sedai could be done to two. Or more.
“What of the traveling boxes?” Sevanna demanded curtly.
Caddar waved the gai’shain away and patted the sack beside him. “I brought as many nar’baha—that is what they were called—as many as I could find.  And I would, if I were you. Al’Thor means to finish you, it seems. Two clans are coming up from the south, and two more are moving to come down from the north. With their Wise Ones, all ready to channel.
Therava sniffed. “A reason to move, certainly, wetlander, but not to run. Even four clans cannot sweep Kinslayer’s Dagger in a day.”
“Didn’t I say?” Caddar’s smile was not at all pleasant. “It seems al’Thor has bound some Aes Sedai to him, too, and they have taught the Wise Ones how to Travel without a nar’baha, over short distances, at least. Twenty or thirty miles. A recent rediscovery, it seems. They could be here—well, today. All four clans.”
Maybe he lied, yet the risk . . . Sevanna could imagine all too well being in Sorilea’s grip. Not allowing herself to shiver, she sent Rhiale to inform the other Wise Ones. Her voice betrayed nothing.
Reaching into his bag, Caddar drew out a gray stone cube, smaller than the callbox she had used to summon him, and much plainer, with no marking but a bright red disc set in one face. “This is a nar’baha,” he said. “It uses saidin, so none of you will see anything, and it has limits. If a woman touches it, it won’t work for days afterward, so I will have to hand them out myself, and it has other limits. Once opened, the gateway will remain for a fixed time, sufficient for a few thousand to go through if they don’t waste time, and the nar’baha needs three days to recover afterward. I have enough extra to carry us where we need to go today, but . . . ”
Therava leaned forward so intently she looked about to fall over, but Sevanna hardly listened. She did not doubt Caddar, exactly; he would not dare betray them, not while he hungered for the gold the Shaido would give him. There were small things, though. Maisia seemed to study him over her tea. Why? And if there was such need for speed, why was there no urgency in his voice? He would not betray, but she would take precautions anyway.
Maeric frowned at the stone cube the wetlander had given him, then at the . . . hole . . . that had appeared when he pressed the red spot. A hole, five paces wide and three high, in midair. Beyond lay rolling hills, not low, covered with brown grass. He did not like things to do with the One Power, especially with the male part of it. Sevanna stepped through another, smaller, hole with the wetlander and a dark woman, following the Wise Ones Sevanna and Rhiale had chosen out. Only a handful of Wise Ones remained with the Moshaine Shaido. Through that second hole, he could see Sevanna talking with Bendhuin. The Green Salts sept would find themselves with few Wise Ones, too; Maeric was sure of it.
Dyrele touched his arm. “Husband,” she murmured, “Sevanna said it would only remain open a short while.”
Maeric nodded. Dyrele always saw straight to the point. Veiling himself, he ran forward and leaped through the hole he had made. Whatever Sevanna and the wetlander said, he would send none of his Moshaine through before he knew it was safe.
He landed heavily on a slope covered with dead grass and nearly pitched head-over-heels down the hill before he caught himself. For a moment he stared back up at the hole. On this side, it hung more than a foot above the ground.
“Wife!” he shouted. “There is a drop!”
Black Eyes leaped through, veiled and spears ready, and Maidens, also. As well try to drink sand as try to keep Maidens from being among the first. The rest of the Moshaine followed at a run, algai’d’siswai and wives and children, jumping down on the fly, craftsfolk and traders and gai’shain, most pulling heavily loaded packhorses and mules, near to six thousand altogether. His sept, his people. They still would be once he went to Rhuidean; Sevanna could not keep him from becoming clan chief for much longer.
Scouts began spreading out immediately, while the sept still rushed out of the hole. Lowering his veil, Maeric shouted orders that sent a screen of algai’d’siswai toward the crests of the surrounding hills while everyone else remained concealed below. There was no telling who or what lay beyond those hills. Rich lands, the wetlander claimed, but this part did not look rich to him.
The rush of his sept became a flood of algai’d’siswai he did not really trust, men who had fled their own clans because they did not believe Rand al’Thor was truly the Car’a’carn. Maeric was not sure what he himself believed, but a man did not abandon sept and clan. These men called themselves Mera’din, the Brotherless, a fitting name, and he had two hundr—
The hole suddenly snapped into a vertical slash of silver that sliced through ten of the Brotherless. Pieces of them fell onto the slope, arms, legs. The front half of a man slid almost to Maeric’s feet.
Staring at the place where the hole had been, he stabbed at the red spot with his thumb. Useless, he knew, but . . . Darin, his eldest son, was one of the Stone Dogs waiting as a rear guard. They would have been the last through. Suraile, his eldest daughter, had remained with the Stone Dog for whom she was thinking of giving up the spear.
His eyes met Dyrele’s, as green and beautiful as the day she had laid the wreath at his feet. And threatened to cut his throat if he did not pick it up. “We can wait.” he said softly. The wetlander had said three days, but maybe he was wrong. His thumb stabbed the red spot again. Dyrele nodded calmly; he hoped there would be no need to cry in one another’s arms once they could be alone.
A Maiden came skittering down the slope from above, hurriedly lowering her veil, and actually breathing hard. “Maeric,” Naeise said, not even waiting for him to see her, “there are spears to the east, only a few miles and running straight at us. I think they are Reyn. At least seven or eight thousand of them.”
He could see other algai’d’siswai running toward him. A young Brother to the Eagle, Cairdin, slid to a stop, speaking as soon as Maeric saw him. “I see you, Maeric. There are spears no more than five miles to the north, and wetlanders on horses. Perhaps ten thousand of each. I do not think any of us broke the crest, but some of the spears have turned toward us.”
Maeric knew before the grizzled Water Seeker named Laerad opened his mouth. “Spears coming over a hill three or four miles to the south. Eight thousand or more. Some of them saw one of the boys.” Laerad never wasted words, and he would never say which boy, who in truth could be anyone without gray hair, to Laerad.
There was no time for wasting words, Maeric knew. “Hamal!” he shouted. No time for proper courtesy to a blacksmith, either.
The big man knew something was wrong; he scrambled up the slope, likely moving faster than he had since first picking up a hammer.
Maeric handed him the stone cube. “You must press the red spot and keep pressing it, no matter what happens, no matter how long it takes for that hole to open. That is the only way out for any of you.” Hamal nodded, but Maeric did not even wait for him to say that he would. Hamal would understand. Maeric touched Dyrele’s cheek, careless of how many eyes were on them. “Shade of my heart, you must prepare to put on white.” Her hand strayed toward the hilt of her belt knife—she had been a Maiden when she made his wreath—but he shook his head firmly. “You must live, wife, roofmistress, to hold together what remains.” Nodding, she pressed fingers to his cheek. He was astonished; she had always been very reserved in public.
Raising his veil, Maeric shoved one spear high above his head. “Moshaine!” he roared. “We dance!”
Up the slope they followed him, men and Maidens, nearly a thousand strong counting the Brotherless. Perhaps they could be counted among the sept. Up the slope and west; that way lay the nearest and the fewest. Perhaps they might buy enough time, though he did not really believe that. He wondered whether Sevanna had known of this. Ah, the world had grown very strange since Rand al’Thor came. Some things could not change, though. Laughing, he began to sing.
“Wash the spears, while the sun climbs high.
Wash the spears, while the sun falls low.
Wash the spears; who fears to die?
Wash the spears; no one I know!”
Singing, the Moshaine Shaido ran to dance their deaths.
Frowning, Graendal watched the gateway close behind the last of the Jumai Shaido. The Jumai and a great many Wise Ones. Unlike with the others, Sammael had not simply knotted this web so it would fall apart eventually. At least, she assumed he held it to the last; the closing, right on the heels of the last brown-and-gray-clad men, was too fortuitous otherwise. Laughing, Sammael tossed away the bag, still holding a few of those useless bits of stone. Her own empty sack was long since discarded. The sun sat low behind the mountains to the west, half of a glowing red ball.
“One of these days,” she said dryly, “you will be too smart for your own good. A fool box, Sammael? Suppose one of them had understood?”
“None did,” he said simply, but he kept rubbing his hands together and staring at where the gateway had been. Or maybe at something beyond. He still held the Mask of Mirrors, giving him the illusion of added height. She had dropped hers as soon as the gateway closed.
“Well, you certainly managed to put a panic into them.”  “Where did you send them? Somewhere ahead of al’Thor’s army, I suppose?”
“Some,” he said absently. “Enough.” His staring introspection vanished abruptly, and his disguise as well. The scar across his face seemed especially livid. “Enough to cause trouble, particularly with their Wise Ones channeling, but not so many that anyone will suspect me. The rest are scattered from Illian to Ghealdan. As to how or why? Maybe al’Thor did it, for his own reasons, but I certainly wouldn’t have wasted most of them if it was my work, now would I?” He laughed again; caught up in his own brilliance.
She adjusted the bodice of her dress to cover a start. Competing that way was remarkably silly—she had told herself that ten thousand times, and never listened once—remarkably silly, and now the dress felt as if it might fall off. Which had nothing to do with her start. He did not know Sevanna had taken every Shaido woman who could channel with her. Was it finally time to abandon him? If she threw herself on Demandred’s mercy . . .
As if reading her thoughts, he said, “You’re tied to me as tightly as my belt, Graendal.” A gateway opened, revealing his private rooms in Illian. “The truth doesn’t matter anymore, if it ever has. You rise with me, or fall with me. The Great Lord rewards success, and he’s never cared how it was achieved.”
“As you say,” she told him. Demandred had no mercy. And Semirhage . . . “I rise or fall with you.” Still, something would have to be worked out. The Great Lord rewarded success, but she would not be pulled down if Sammael failed. She opened a gateway to her palace in Arad Doman, to the long columned room where she could see her pets frolicking in the pool. “But what if al’Thor comes after you himself? What then?”
“Al’Thor isn’t going after anyone,” Sammael laughed. “All I have to do is wait.” Still laughing, he stepped into his gateway and let it close.
The Myrddraal moved from the deeper shadows, becoming visible. In its eyes, the gateways had left a residue—three patches of glowing mist. It could not tell one flow from another, but it could distinguish saidin from saidar by the smell. Saidin smelled like the sharp edge of a knife, the point of a thorn.  No other Myrddraal could smell that difference. Shaidar Haran was like no other Myrddraal.
Picking up a discarded spear, Shaidar Haran used it to upend the bag Sammael had discarded, and then to stir the bits of stone that fell out. Much was happening outside the plan. Would these events churn chaos, or . . .
Angry black flames raced down the spear haft from Shaidar Haran’s hand, the hand of the Hand of the Shadow. In an instant the wooden haft was charred and twisted; the spearhead dropped off. The Myrddraal let the blackened stick fall and dusted soot from its palm. If Sammael served chaos, then all was well. If not . . .
A sudden ache climbed the back of its neck; a faint weakness washed along its limbs. Too long away from Shayol Ghul. That tie had to be severed somehow. With a snarl, it turned to find the edge of shadow that it needed. The day was coming. It would come.


{% set pagetitle = 'Common complaints' %} {% set seq_length = 0 %} {% set seq_position = 0 %} {% set seq_llink = "javascript:;" %} ## set rlink equal to next page href {% set seq_rlink = "javascript:;" %} ## set llink equal to previous page href {% extends "templates.jinja/base.page-with-sequence.html" %} {% block title %} Hesperian - Pregnancy & Birth{% endblock %} {% block id %}Cravings_during_pregnancy{% endblock %} {% block content %}
A food craving is a strong desire to eat a certain food, or even something that is not food at all, like dirt, chalk, or clay. If a woman gets a craving for nutritious foods (like beans, eggs, fruits, and vegetables), it is OK for her to eat as much as she wants.
A woman who wants a lot of "junk food" (like candy, soda, or packaged snacks) should eat nutritious food first.
A woman who craves things that are not food, like dirt or clay, should not eat them. They may poison her and her baby, or make her sick. This may be a sign that she needs more protein and iron-rich foods in her diet.
{% endblock %} {% block footer %} {% endblock %}