| Jump to DART Documentation Main Index |
dart_pop_mod provides a consistent collection of routines that are useful for multiple programs e.g. dart_to_pop, pop_to_dart, etc.
There are no namelists unique to this module.
It is necessary for this module to read some of the POP namelists,
and so they are declared in this module. In one instance, DART
will read the time_manager_nml namelist and write
an updated version to control the length of the integration of POP.
All other information is simply read from the namelists and is used
in the same context as POP itself. The POP documentation should be
consulted. Only the variables of interest to DART are described in
this document.
All namelists are read from a file named pop_in.
namelist /time_manager_nml/ allow_leapyear, stop_count, stop_option
dart_to_pop controls the model advance of LANL/POP by creating a &time_manager_nml in pop_in.DART IFF the DART state being converted has the 'advance_to_time' record. The pop_in.DART must be concatenated with the other namelists needed by POP into a file called pop_in . We have chosen to store the other namelists (which contain static information) in a file called pop_in.part2. Initially, the time_manager_nml is stored in a companion file called pop_in.part1 and the two files are concatenated into the expected pop_in - then, during the course of an assimilation experiment, DART keeps writing out a new time_manager_nml with new integration information - which gets appended with the static information in pop_in.part2
| Contents | Type | Description |
|---|---|---|
| allow_leapyear | logical | DART ignores the setting of this parameter. All observations must use a Gregorian calendar. There are pathological cases, but if you are doing data assimilation, just use the Gregorian calendar. [default: .true.] |
| stop_count | integer | the number of model advance steps to take. [default: 1] |
| stop_option | character(len=64) | The units for the number of model advance steps (stop_count) to take. [default: 'ndays'] |
namelist /io_nml/ luse_pointer_files, pointer_filename
| Contents | Type | Description |
|---|---|---|
| luse_pointer_files | logical | switch to indicate the use of pointer files or not. If .true., a pointer file is used to contain the name of the restart file to be used. DART requires this to be .true. [default: .true.] |
| pointer_filename | character(len=100) | The name of the pointer file. All of the DART scripts presume and require the use of the default. Each ensmeble member gets its own pointer file. [default: rpointer.ocn.[1-N].restart] |
namelist /restart_nml/ restart_freq_opt, restart_freq
| Contents | Type | Description |
|---|---|---|
| luse_pointer_files | logical | switch to indicate the use of pointer files or not. If .true., a pointer file is used to contain the name of the restart file to be used. DART requires this to be .true. [default: .true.] |
| pointer_filename | character(len=100) | The name of the pointer file. All of the DART scripts presume and require the use of the default. Each ensmeble member gets its own pointer file. [default: rpointer.ocn.[1-N].restart] |
namelist /init_ts_nml/ init_ts_option, init_ts_file, init_ts_file_fmt
The dart_pop_mod:initialize_module() routine reads pop_in . There are several code stubs for future use that may allow for a more fully-supported POP namelist implementation. This namelist is one of them. Until further notice, the init_ts_nml is completely ignored by DART.
| Contents | Type | Description |
|---|---|---|
| init_ts_option | character(len=64) | NOT USED by DART. All T,S information comes from a netCDF restart file named pop.r.nc [default: 'restart'] |
| init_ts_file | character(len=100) | NOT USED by DART. All T,S information comes from pop.r.nc [default: 'pop.r'] |
| init_ts_file_fmt | character(len=64) | NOT USED by DART. The file format is 'nc' [default: 'nc'] |
namelist /domain_nml/ ew_boundary_type
DART needs to know if the East-West domain is cyclic for spatial interpolations. Presently, DART has only been tested for the dipole grid, which is cyclic E-W and closed N-S.
| Contents | Type | Description |
|---|---|---|
| ew_boundary_type | character(len=64) | switch to indicate whether the East-West domain is cyclic or not. DART/POP has not been tested in a regional configuration, so DART requires this to be 'cyclic'. [default: 'cyclic'] |
namelist /grid_nml/ horiz_grid_opt, vert_grid_opt, topography_opt, & horiz_grid_file, vert_grid_file, topography_file
The POP grid information comes in several files:
horizontal grid lat/lons in one,
the vertical grid spacing in another, and the
topography (lowest valid vertical level) in a third.
Here is what we can get from the (binary) horizontal grid file:
real(r8), dimension(:,:) :: ULAT, &! latitude (radians) of U points real(r8), dimension(:,:) :: ULON, &! longitude (radians) of U points real(r8), dimension(:,:) :: HTN , &! length (cm) of north edge of T box real(r8), dimension(:,:) :: HTE , &! length (cm) of east edge of T box real(r8), dimension(:,:) :: HUS , &! length (cm) of south edge of U box real(r8), dimension(:,:) :: HUW , &! length (cm) of west edge of U box real(r8), dimension(:,:) :: ANGLE &! angle
The vertical grid file is ascii, with 3 columns/line:
cell thickness(in cm) cell center(in m) cell bottom(in m)
Here is what we can get from the topography file:
integer, dimension(:,:), :: KMT &! k index of deepest grid cell on T grid
These must be derived or come from someplace else ...
KMU k index of deepest grid cell on U grid HT real(r8) value of deepest valid T depth (in cm) HU real(r8) value of deepest valid U depth (in cm)
| Contents | Type | Description |
|---|---|---|
| horiz_grid_opt, vert_grid_opt, topography_opt | character(len=64) | switch to indicate whether or not the grids will come from an external file or not. DART requires ALL of these to be 'file'. [default: 'file'] |
| horiz_grid_file | character(len=100) | The name of the binary file containing the values for the horizontal grid. The dimensions of the grid are read from pop.r.nc. It would have been nice to include the actual grid information in the netCDF files. [default: 'horiz_grid.gx3v5.r8ieee.le'] |
| vert_grid_file | character(len=100) | The name of the ASCII file containing the values for the vertical grid. The file must contain three columns of data pertaining to the cell thickness (in cm), the cell center (in meters), and the cell bottom (in meters). Again, it would have been nice to include the vertical grid information in the netCDF files. [default: 'vert_grid.gx3v5'] |
| topography_grid_file | character(len=100) | The name of the binary file containing the values for the topography information. The dimensions of the grid are read from pop.r.nc. [default: 'topography.gx3v5.r8ieee.le'] |
types_mod time_manager_mod utilities_mod typesizes netcdf
Only a select number of interfaces used are discussed here. Each module has its own discussion of their routines.
| use dart_pop_mod, only : | get_pop_calendar |
| set_model_time_step | |
| get_horiz_grid_dims | |
| get_vert_grid_dim | |
| read_horiz_grid | |
| read_topography | |
| read_vert_grid | |
| write_pop_namelist | |
| get_pop_restart_filename |
character(len=*), intent(out) :: calstring
Returns a string containing the type of calendar in use.
| calstring | DART/POP uses a 'gregorian' calendar. |
type(time_type), intent(out) :: poptimestep
set_model_time_step returns the model time step that was set in the restart_nmlrestart_freq. This is the minimum amount of time DART thinks the POP model can advance. Indirectly, this specifies the minimum assimilation interval.
| poptimestep | the minimum assimilation interval |
integer, intent(out) :: Nx, Ny
get_horiz_grid_dims reads pop.r.nc to determine the number of longitudes and latitudes.
| Nx | the length of the 'i' dimension in the POP restart file. The number of longitudes in use. |
| Ny | the length of the 'j' dimension in the POP restart file. The number of latitudes in use. |
integer, intent(out) :: Nz
get_vert_grid_dim reads pop.r.nc to determine the number of vertical levels in use.
| Nz | the length of the 'k' dimension in the POP restart file. The number of vertical levels in use. |
integer, intent(in) :: nx, ny real(r8), dimension(nx,ny), intent(out) :: ULAT, ULON, TLAT, TLON
read_horiz_grid reads the direct access binary files containing the POP grid information. The first record is REQUIRED to be 'ULAT', the second record is REQUIRED to be 'ULON'.
| nx | The number of longitudes in the grid. |
| ny | The number of latitudes in the grid. |
| ULAT | The matrix of latitudes for the UVEL and VVEL variables. Units are degrees [-90,90]. |
| ULON | The matrix of longitudes for the UVEL and VVEL variables. Units are degrees. [0,360] |
| TLAT | The matrix of latitudes for the SALT and TEMP variables. Units are degrees [-90,90]. |
| TLON | The matrix of longitudes for the SALT and TEMP variables. Units are degrees. [0,360] |
integer, intent(in) :: nx, ny integer, dimension(nx,ny), intent(out) :: KMT, KMU
read_topography reads the direct access binary files containing the POP topography information. The first record is REQUIRED to be 'KMT'. 'KMU' is calculated from 'KMT'.
| nx | The number of longitudes in the grid. |
| ny | The number of latitudes in the grid. |
| KMT | The matrix containing the lowest valid depth index at grid centroids. |
| KMU | The matrix containing the lowest valid depth index at grid corners. |
integer, intent(in) :: nz real(r8), dimension(nz), intent(out) :: ZC, ZG
read_vert_grid reads the ASCII file
containing the information about the vertical levels.
The file must contain three columns of data pertaining to;
1) the cell thickness (in cm),
2) the cell center (in meters),
and
3) the cell bottom (in meters).
| nz | The number of vertical levels. |
| ZC | The depth (in meters) at the grid centers. |
| ZG | The depth (in meters) at the grid edges. |
type(time_type), intent(in) :: model_time type(time_type), intent(in) :: adv_to_time
write_pop_namelist writes the POP namelist time_manager_nml with the information necessary to advance POP to the next assimilation time. The namelist is written to a file called pop_in.DART. Presently, DART is configured to minimally advance POP for 86400 seconds - i.e. 1 day. The forecast length (the difference between 'model_time' and 'adv_to_time') must be an integer number of days with the current setup. An error will result if it is not.
| model_time | The 'valid' time of the current model state. |
| adv_to_time | The time of the next assimilation. |
character(len=*), intent(out) :: filename
get_pop_restart_filename returns the filename containing the POP restart information. At this point the filename is hardwired to pop.r.nc, but may become more flexible in future versions. The filename may be derived from the restart_nml but is currently ignored.
| filename | The name of the POP restart file. |
| filename | purpose |
|---|---|
| pop_in | to read the POP namelists |
| pop.r.nc | provides grid dimensions and 'valid_time' of the model state |
| &grid_nml "horiz_grid_file" | contains the values of the horizontal grid |
| &grid_nml "vert_grid_file" | contains the number and values of the vertical levels |
| &grid_nml "topography_grid_file" | contains the indices of the wet/dry cells |
| pop_in.DART | to control the integration of the POP model advance |
| Routine | Message | Comment |
|---|---|---|
| initialize_module | pop_in:init_ts_file pop.r.nc not found' | The POP restart file MUST be called 'pop.r.nc'. Make a soft link if necessary. |
| get_horiz_grid_dims | unable to find either 'i' or 'nlon' in file pop.r.nc | The POP restart file must contain dimensions named either 'i' or 'nlon'. |
| get_horiz_grid_dims | unable to find either 'j' or 'nlat' in file pop.r.nc | The POP restart file must contain dimensions named either 'j' or 'nlat'. |
| set_model_time_step | restart_freq_opt must be nday | Pretty self-explanatory. The POP namelist must specify the forecast length as a multiple of 'days'. |
| write_pop_namelist | adv_to_time has seconds == xxx must be zero' | DART is asking POP to advance to a time that is a fraction of a day away. This should not be possible. Contact the DART developers. |
| write_pop_namelist | stop_option must be "nday" | the POP time_manager_nml:stop_option is not set to 'nday'. This is required by DART. |
| read_horiz_grid | pop_in:horiz_grid_file 'XYZ' not found | The horizontal grid filename specified in pop_ingrid_nml cannot be found. |
| calc_tpoints | pop_in&domain_nml:ew_boundary_type 'X' unknown | The ew_boundary_type must be 'cyclic' - until DART/POP gets tested with non-cyclic domains. |
| read_topography | pop_in:topography_file 'XYZ' not found | The topography file specified in pop_ingrid_nml cannot be found. |
| read_vert_grid | pop_in:vert_grid_file 'XYZ' not found | The vertical grid file specified in pop_ingrid_nml cannot be found. |
| read_vert_grid | error reading depths, line 'X' | The vertical grid file is corrupt or does not have the expected three pieces of information per line. |
There are no known bugs, but there sure is a lot of dependence on assimilating on daily boundaries - and the pop.r.nc file.
none at this time
N/A
DART software - Copyright UCAR. This open source software is provided by UCAR, "as is", without charge, subject to all terms of use at http://www.image.ucar.edu/DAReS/DART/DART_download


Functions to do Astronomy related unit conversions.
| requires: | NumPy |
|---|---|
| requires: | cosmocalc (http://cxc.harvard.edu/contrib/cosmocalc/) |
| version: | 0.2 |
| author: | Sami Niemi |
| contact: |<EMAIL_ADDRESS>|
Functions
| ABMagnitudeToJansky(ABmagnitude) | Converts AB magnitudes to Janskys. |
| Luminosity(abs_mag) | Converts AB magnitudes to luminosities in |
| RAandDECfromStandardCoordinates(data) | Converts Standard Coordinates on tangent plane to RA and DEC on the sky. |
| angstromToHertz(A) | Converts Angstroms to Hertz. |
| angularDiameterDistance(z[, H0, WM]) | The angular diameter distance DA is defined as the ratio of |
| arccot(x) | |
| arcminSquaredToSolidAnge(arcmin2) | Converts to solid angle. |
| arcminSquaredToSteradians(arcmin2) | Converts to steradians. |
| comovingVolume(arcmin2, zmin, zmax[, H0, WM]) | Calculates the comoving volume between two redshifts when the sky survey has covered region. |
| convertSphericalToCartesian(r, theta, phi) | Converts Spherical coordinates to Cartesian ones. |
| cosmocalc(z[, H0, WM, WV]) | Calculate useful values for the supplied cosmology. |
| cot(x) | |
| degTodms(ideg) | Converts degrees to degrees:minutes:seconds |
| degTohms(ideg) | Converts degrees to hours:minutes:seconds |
| get_flat_flambda_dmag(plambda, plambda_ref) | Compute the differential AB-mag for an object flat in f_lambda. |
| get_magAB_from_flambda(flambda, wlength) | Converts a mag_AB value at a wavelength to f_lambda. |
| janskyToMagnitude(jansky) | Converts Janskys to AB magnitudes. |
| nanomaggiesToJansky(nanomaggie) | Converts nanomaggies, used for example in SDSS imaging, to Janskys. |
| redshiftFromScale(scale) | Converts a scale factor to redshift. |
| scaleFromRedshift(redshift) | Converts a redshift to a scale factor. |


A bit more about me
Hey I am Morgan, I work for Code School and I love writing code!
Skills
Here are some of the technologies I enjoy writing day-to-day:
- HTML & CSS
- Node.js
- React
- Angular 2
- Webpack
The easiest way to contact me is via twitter: @McCircuit


If you already know about stacks and queues and want to go into the specific sections then click on one of the sections below.
1. Stacks
2. Queues
3. Big O of Stacks and Queues
Stacks is a data structure where one can put an item on the top and then take off an item from the top. Think about a stack of plates where you usually take off the top plate and if you wanted to put a new one then you place it on the top of the stack.
Stacks has many functions. We will be going over push, pop, isEmpty, size, and peek. These are all O(1) functions. We will go over each function.
As you can see below, we have an empty stack as of now. What if we try to push a?
The letter a will be added on top of the stack as of now. What if we try to push b?
As you can see, b will be added on top of the stack. Basically, the push function adds an item onto the top of a stack just like our plates analogy.
As you can see below, we first have a stack with two elements. We called pop twice and the top element of the stack gets removed. Basically, the pop function deletes the top of the stack. What if we try to call pop on an empty stack?
It will throw a NoSuchElementException which is why we should NEVER try to call pop on an empty stack.
As you can see below, an empty stack returns true and a non empty stack returns false. Basically, isEmpty returns true if the stack is empty and false if the stack is not empty.
As you can see, basically the number of elements of a stack is the value that will be returned.
As you can see, basically the element on the top gets returned and the stack stays the same. Please note it will not work on empty stacks as shown on the image on the right.
What is LIFO? It stands for Last In First Out which represents a stack as the latest element that was inserted will be the first element to be popped if the pop function is called. It is really helps in terms of memorization.
We can implement stacks using linked lists. We can use linked lists in push, pop, isEmpty, size, and peek using linked lists. Lets start with push below.
In the push function, we can make a new node and add it to the front of the linked list. The pesudocode of this method is on the left while the Java implementation is on the right.
In the pop function, we can return the neighbor of the front. In the case that is already empty (null), we can throw a NoSuchElementException. We also have decreased the size by 1 which I will explain later. The pesudocode of this method is on the left and the Java implementation is on the right.
In the field, we can declare the variable, size. In the push function, it will increase by 1 and in the pop function, it will decrease by 1.
The pesudocode of this method is on the left and the Java implementation is in the middle (method) and right (field).
Please note: in the first image by value, I mean size.
For the isEmpty method we can just check if the size is zero. If it is zero, then it is empty (return true).
If it is not zero, then it is not empty (return false).
Please note: in the first image by values, I mean size.
For the peek method we can first check if it is null (empty) to see if we can return an element. If it does not then we return the data of the first node. The pesudocode of this method is on the left and the Java implementation is on the right.
Full stack class in Java is implemented using linked lists is located here.
We are going to determine if a combination of parenthesis and/or brackets has valid pairs. Valid pairs will be like (), [], or ([]). We will not accept combinations like )( or }[. More examples are shown below.
Lets start with the example below. A good idea could be to think about how we can use a stack to solve this.
At the first character we will push that character and we keep on going till we reach ]. Think about what could we do from there.
So we can pop out from the stack and check if it is a valid a pair. () and [] are valid pairs. Anything else is not. Once we see a pair that is not valid, we can automatically stop as it is not valid. In this case, the pair is valid as shown on the image on the right.
Now try this problem on your own using a stack.
As you can see (] do not make a valid pair so we can already stop.
Here is the coding implementation of what we have done in Java.
Prefix expressions can be turned into postfix expressions. Now we will use stacks to evaluate postfix expressions.
Now we will be using the postfix expression and stack below to evaluate this. Before scrolling down, try to think about how would you solve this with a stack.
We first added all of the numbers, but now we are at - . What should we do? Think about it before scrolling down.
We can set two variables and declare it in the first two pops. We can perform the function that the character lands on, which is - in this case.
We will perform the operation and then push the result back to the stack as shown in the middle. Also on the third image here is the reason I did b-a
instead of a-b.
We continue with the rest and our answer is -0.4.
Now see how we evaluate this expression using stacks. Scroll down once to see how it is supposed to be done.
Now see how we evaluate this expression using stacks. Now try to code this program by yourself in Java. Implementation of this program in Java is below so you can check your answer and/or use it as a resource.
Java Implementation
Now lets attempt the problems below. Use the following class below for the problems.
For this problem you have to implement a queue using stacks.
Answer with explanation is at the bottom.
For this problem you have to remove all the adjacent duplicates and derive the worst case big o.
Answer with explanation is at the bottom.
For this problem you have to design a stack with a increment opperation.
Answer with explanation is at the bottom.
Queues is a data structure where a line forms and the first one inserted will be deleted. Think about a line at a ticket kiosk where the first one who came to the line will get the ticket.
Queues have many functions. We will be going over enqueue, dequeue, isEmpty, size, and peek. These are all O(1) functions. We will go over each function.
As you can see below, we have an empty queue now. What if we try to enqueue a?
a is added and the image on the right shows the result of when we enqueue b. The purpose of enqueue is to add elements.
As you can see below, we have a queue with two elements. What if we call dequeue?
In the first image the first element that was added, a, is deleted. And then b was deleted in the second image. The purpose of dequeue is to delete the earliest added element. Now think what will happen if we call this method on an empty queue?
No Such Element Exception gets called which is why we should NEVER try to call dequeue on an empty queue.
As you can see below, an empty queue returns true and a non empty queue returns false. Basically, isEmpty returns true if the queue is empty and false if the queue is not empty.
As you can see, basically the number of elements of a queue is the value that will be returned.
As you can see, basically the earliest added element gets returned and the queue stays the same. Please note it will not work on empty queue as shown on the image on the right.
What is FIFO? It stands for First In First Out which represents a queue as the earliest element that was inserted will be the first element to be popped if the dequeue function is called. It really helps for memorization.
We can implement queues using circular linked lists. We can use circular linked lists in enqueue, dequeue, isEmpty, size, and peek. Lets start with enqueue below.
In the enqueue function, if the rear is null/empty we can make a new node and point it to itself or if it is not null then set the next to the next of original rear. We also have to increase the size by 1 which I will explain later. The pesudocode of this method is on the left while the Java implementation is on the right.
In the dequeue function, we can save the neighbor of the rear so we can return it and then we can delete the rear by using rear.next=rear.next.next. In the case that it is already empty (null) we can throw a NoSuchElementException. We also have to decrease the size by 1 which I will explain later. The pesudocode of this method is on the left and the Java implementation is on the right.
In the field, we can declare the variable and size in the field. In the enqueue function, it will increase by 1 and in the dequeue function, it will decrease by 1. The pesudocode of this method is on the left and the Java implementation is in the middle (field) and right (method).
For the isEmpty method we can just check if the size is zero. If it is zero, then it is empty (return true). If it is not zero, then it is not empty (return false).
For the peek method we can first check if it is null (empty) to see if we can return an element. If it does not, then we return the earliest element added to the queue using rear.next. The pesudocode of this method is on the left and the Java implementation is on the right.
Full queue class in Java implemented using circular linked lists is located here.
Now lets look at this problem. We will add the evens to the different queue and keep the odds in the original queue. Also, we will determine the big o.
We first will make the original queue and declare the size.
In every other value of the size of the queue we will enqueue the odd and dequeue the evens. In the case that the size is odd we will enqueue the last one which is an odd.
Since each enqueue and dequeue functions runs 2n times the big o will be O(n).
Now lets attempt the problems below. Use the following class below for the problems.
For this method you have to implement a stack using queues.
Answer with explanation is at the bottom.
For this method you have to calculate the average using queues and then determine the worst case Big O.
Answer with explanation is at the bottom.
Here is explanation of the big o of stacks and queues. As you can see the explanation is very short because the big o of stacks and queues are the same and it is mostly simple.
Stacks and Queues hold n items which is why the space complexity is O(n).


transparent soldier navigation menu - Better Battlelog Forums #98947
Sitemap
19. May 2013 23:31
Post edited 3 x times, last by
RicoSchulz
19. May 2013 23:35
Topicstarter
RicoSchulz
hello,bblog team!
it would be nice for me if you can make a plugin , that makes the soldier navigation menu more transparent - like the vintage themes-here is a pic of mine
http://i.imagebanana.com/img/9kozoxpx/bblogscreen.JPG


This tool allows you to easily map, filter, reduce and sort JSON arrays. It persists settings between reloads. It can help you quickly process data. By Alec Gorge and available on GitHub. Forks are welcome!


usocket – socket module
This module implements a subset of the corresponding CPython module, as described below. For more information, please refer to the original CPython documentation: socket.
This module provides access to the BSD socket interface
Difference from CPython
In order to improve efficiency and consistency, the socket object in MicroPython directly implements the
stream
(class file) interface. In CPython, you need to use themakefile()
method to convert the socket into a file-like object. MicroPython still supports this method (but no operation), so if it is compatible with CPython, be sure to use it.
Socket address format
The native socket address format of the usocket
module is the opaque data type returned by the getaddrinfo function, which must be used to parse text addresses (including numeric addresses):
sockaddr = usocket.getaddrinfo('www.micropython.org', 80)[0][-1]
# You must use getaddrinfo() even for numeric addresses
sockaddr = usocket.getaddrinfo('<IP_ADDRESS>', 80)[0][-1]
# Now you can use that address
sock.connect(addr)
Using getaddrinfo
is the most effective (in terms of memory and processing power), and it is also a portable way to use addresses.
However, the socket
module (note the difference from the native MicroPython usocket
module described here) provides a CPython-compatible way to specify addresses using tuples, as described below. Please note that depending on the MicroPython port
, the socket module can be built in or needs to be installed from micropython-lib
(as in the case of "MicroPython Unix port"), and some ports still only accept numeric addresses in tuples Format and requires the use of the getaddrinfo
function to resolve the domain name.
In general:
- Always use
getaddrinfo
when writing portable applications. - If your port supports fast hacking and interactive use, the tuple address described below can be used as a shortcut.
The tuple address format of the socket
module:
IPv4: (ipv4_address, port), where ipv4_address is a string with a dotted number IPv4 address, for example, "<IP_ADDRESS>", the port number and integer port number are in the range of 1-65535. Please note that domain names are not accepted as ipv4_address, they should be resolved first using usocket.getaddrinfo().
IPv6: (ipv6_address, port, flowinfo, scopeid), where ipv6_address is a string with a colon number IPv6 address, for example:
"2001:db8::1"
, port is an integer port number in the range of 1-65535. flowinfo must be 0. scopeid is the interface scope identifier of the link local address. Please note that domain names are not accepted as ipv6_address, they should be resolved usingusocket.getaddrinfo()
first. The availability of IPv6 support depends on theMicroPython port
.
Method
usocket.socket(af=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP)
Create a new socket using the given address series, socket type and protocol number. Please note that in most cases there is no need to specify proto (not recommended because some MicroPython ports may omit the IPPROTO_ *
constants). Instead, the type parameter will automatically select the required protocol:
# Create STREAM TCP socket
socket(AF_INET, SOCK_STREAM)
# Create DGRAM UDP socket
socket(AF_INET, SOCK_DGRAM)
usocket.getaddrinfo(host, port, af=0, type=0, proto=0, flags=0)
Convert the host / port parameter to a 5-tuple sequence, which contains all the necessary parameters for creating a socket to connect to the service. The parameters af, type and proto (which have the same meaning as the socket()
function) can be used to filter which address is returned. If the parameter is not specified or is zero, all address combinations can be returned (requires filtering on the user side).
The resulting 5-tuple list has the following structure:
(family, type, proto, canonname, sockaddr)
The following example shows how to connect to a given URL:
s = usocket.socket()
# This assumes that if "type" is not specified, an address for
# SOCK_STREAM will be returned, which may be not true
s.connect(usocket.getaddrinfo('www.micropython.org', 80)[0][-1])
It is recommended to use filter parameters:
s = usocket.socket()
# Guaranteed to return an address which can be connect'ed to for
# stream operation.
s.connect(usocket.getaddrinfo('www.micropython.org', 80, 0, SOCK_STREAM)[0][-1])
Difference with CPython
If this function fails, CPython will raise a
socket.gaierror
exception (subclass ofOSError
). MicroPython does not havesocket.gaierror
and directly raises OSError. Please note that the error number ofgetaddrinfo()
forms a separate namespace and may not match the error number in theuerrno
module. In order to distinguishgetaddrinfo()
errors, they are represented by negative numbers, while standard system errors are positive numbers (the error number can be accessed using thee.args[0]
attribute from the exception object). The use of negative values is a temporary detail and may change in the future.
usocket.inet_ntop(af, bin_addr)
Convert the binary network address bin_addr of a given address family af into a text representation:
>>> usocket.inet_ntop(usocket.AF_INET, b"\x7f\0\0\1")
'<IP_ADDRESS>'
usocket.inet_pton(af, txt_addr)
Convert the text network address txt_addr of a given address family af into binary representation:
>>> usocket.inet_pton(usocket.AF_INET, "<IP_ADDRESS>")
b'\x01\x02\x03\x04'
Constant
usocket.AF_INET usocket.AF_INET6
Address family types. Availability depends on the specific MicroPython port
.
usocket.SOCK_STREAM usocket.SOCK_DGRAM
The socket type.
usocket.IPPROTO_UDP usocket.IPPROTO_TCP
IP protocol number. Availability depends on the specific MicroPython port
. Note that you do not need to specify them when calling usocket.socket()
, because SOCK_STREAM
socket type will automatically select IPPROTO_TCP
and SOCK_DGRAM
-IPPROTO_UDP
. Therefore, the only practical use of these constants is as a parameter to setsockopt()
.
usocket.SOL_*
Socket option level (parameter of setsockopt()
). The exact inventory depends on the MicroPython port
.
usocket.SO_*
Socket options (parameters of setsockopt()
). The exact inventory depends on the MicroPython port
.
Class socket
Method
socket.close()
Mark that the socket is closed and release all resources. Once this happens, all future operations on the socket object will fail. If the protocol supports it, the remote end will receive the EOF indication.
Sockets are automatically closed when they are garbage collected, but it is recommended that you "close" them immediately after finishing them.
(maixpy not implemented) socket.bind(address)
Bind the socket to the address. The socket must not be bound.
(maixpy not implemented) socket.listen([backlog])
Make the server accept connections. If backlog is specified, it must be at least 0 (if low, set it to 0); and specify the number of unaccepted connections that the system will allow before rejecting new connections. If not specified, the default reasonable value is selected.
(maixpy not implemented) socket.accept()
Accept the connection. The socket must be bound to an address and listen for connections. The return value is a pair (conn, address), where conn is a new socket object that can be used to send and receive data on the connection, and address is the address of the socket bound to the other end of the connection.
socket.connect(address)
Connect to the remote socket at the address.
socket.send(bytes)
Send data to the socket. The socket must be connected to the remote socket. Returns the number of bytes sent, which may be less than the data length ("short write").
socket.sendall(bytes)
Send all data to the socket. The socket must be connected to the remote socket. Unlike send()
, this method will try to send all data by continuously sending data blocks.
The behavior of this method on non-blocking sockets is undefined. Therefore, on MicroPython, it is recommended to use the write()
method, which has the same "no short write" strategy to block the socket and will return the number of bytes sent on the non-blocking socket.
socket.recv(bufsize)
Receive data from the socket. The return value is a byte object representing the received data. The maximum amount of data received at one time is specified by bufsize.
socket.sendto(bytes, address)
Send data to the socket. The socket should not be connected to the remote socket, because the target socket is specified by the address.
socket.recvfrom(bufsize)
Receive data from the socket. The return value is a pair (byte, address), where bytes is the byte object representing the received data, and address is the address of the socket that sends the data.
socket.setsockopt(level, optname, value)
Set the value of the given socket option. The required symbolic constants are defined in the socket module (SO_* etc.). The value can be an integer or a byte-like object representing a buffer.
socket.settimeout(value)
Note: Not every port supports this method, see below.
Prevent socket operations from setting timeouts. The value parameter can be a non-negative floating point number representing seconds, or it can be None. If a non-zero value is given, if the timeout value has elapsed before the operation is completed, subsequent socket operations will raise an "OSError" exception. If zero is given, the socket is in non-blocking mode. If None is given, the socket is in blocking mode.
Not every "MicroPython port" supports this method. A more portable and universal solution is to use the uselect.poll object. This allows multiple objects to be waited at the same time (not just on sockets, but on generic stream
objects that support polling). example:
# Instead of:
s.settimeout(1.0) # time in seconds
s.read(10) # may timeout
# Use:
poller = uselect.poll()
poller.register(s, uselect.POLLIN)
res = poller.poll(1000) # time in milliseconds
if not res:
# s is still not ready for input, i.e. operation timed out
Difference with CPython
CPython raises
socket.timeout
exception in case of timeout, which is a subclass of OSError. MicroPython directly raises anOSError
. If you useexcept OSError
: to catch exceptions, your code will be valid in both MicroPython and CPython.
socket.setblocking(flag)
Set the blocking or non-blocking mode of the socket: if the flag is false, the socket is set to non-blocking, otherwise it is set to blocking mode.
This method is shorthand for certain settimeout()
calls:
sock.setblocking(True)
is equivalent to sock.settimeout(None)
sock.setblocking(False)
i is equivalent to sock.settimeout(0)
socket.makefile(mode='rb', buffering=0)
Returns the file object associated with the socket. The exact return type depends on the parameters given to makefile(). Support is limited to binary mode ('rb','wb' and'rwb'). CPython parameters: encoding, errors and newlines are not supported.
Difference with CPython
Since MicroPython does not support buffered streams, the value of the buffer parameter is ignored and treated as 0 (unbuffered).
Difference with CPython
Closing the file object returned by makefile() will also close the original socket.
socket.read([size])
Read the size bytes from the slot. Return a bytes object. If no size is given, it will read all the data available in the socket until EOF; therefore, the method will not return until the socket is closed. This function attempts to read the requested data (there is no "short read"). However, for non-blocking sockets, this may not be possible, and then less data will be returned.
socket.readinto(buf[, nbytes])
Read bytes into buf. If nbytes is specified, at most multiple bytes are read. Otherwise, read at most len (buf) bytes. Just like read(), this method follows the "no short read" strategy.
Return value: The number of bytes read and stored in buf.
socket.readline()
Read a line, ending with a newline character.
Return value: the row read.
socket.write(buf)
Write the byte buffer to the socket. This function will try to write all data to the socket (no "short write"). However, for non-blocking sockets, this may not be possible, and the return value will be less than the length of buf.
Return value: The number of bytes written.
exception usocket.error
MicroPython does not have this exception.
Difference with CPython
CPython used to have a
socket.error
exception and is now deprecated. It is an alias ofOSError
. In MicroPython, useOSError
directly.
Routine
Example 1: Download the picture and display it
Note the need to set WiFi SSID and password
import socket
import network
import gc
import os
import lcd, image
fm.register(board_info.WIFI_RX,fm.fpioa.UART2_TX)
fm.register(board_info.WIFI_TX,fm.fpioa.UART2_RX)
uart = machine.UART(machine.UART.UART2,115200,timeout=1000, read_buf_len=4096)
nic=network.ESP8285(uart)
nic.connect("Sipeed_2.4G","------")
sock = socket.socket()
addr = socket.getaddrinfo("dl.sipeed.com", 80)[0][-1]
sock.connect(addr)
sock.send('''GET /MAIX/MaixPy/assets/Alice.bmp HTTP/1.1
Host: dl.sipeed.com
cache-control: no-cache
''')
img = b""
sock.settimeout(5)
while True:
data = sock.recv(4096)
if len(data) == 0:
break
print("rcv:", len(data))
img = img + data
print(len(img))
img = img[img.find(b"\r\n\r\n")+4:]
print(len(img))
print("save to /sd/Alice.bmp")
f = open("/sd/Alice.bmp","wb")
f.write(img)
f.close()
print("save ok")
print("display")
img = image.Image("/sd/Alice.bmp")
lcd.init()
lcd.display(img)
Example 2: Sending pictures
import os
import socket
import network
import gc
fm.register(board_info.WIFI_RX,fm.fpioa.UART2_TX)
fm.register(board_info.WIFI_TX,fm.fpioa.UART2_RX)
uart = machine.UART(machine.UART.UART2,115200,timeout=1000, read_buf_len=4096)
nic=network.ESP8285(uart)
nic.connect("Sipeed_2.4G","-------")
addr = ("<IP_ADDRESS>", 3456)
sock = socket.socket()
sock.connect(addr)
sock.settimeout(5)
f = open("/sd/Alice.bmp","rb")
while True:
img = f.read(2048)
if not img or (len(img) == 0):
break
sock.send(img)
f.close()
sock.close()


{% if page.teaser-img %}
{% else %}
{% endif %}
Elusive Truth
Traveling not in search of answers, but of better questions.
Articles
Dailies
Photos
Subscribe


I'm a computer science Master degree graduate with more than two years of experience in teaching & development. That's helped me to develop my passion & skills in technology, marketing & communication. I have also participated in many associations and events to learn more about organization and teamwork. Joining your team will help me to improve my skills, learn more about new cultures, make connections & know interesting people.


Player states
The player state, that you can obtain either with the
getPlayerState
method or through the
playerStateChange
player event, is a central part of our API: it is from
this value that you will know:
- when a new content finished loading
- when the content is paused to build buffer
- when the content is ended
- as a generality, in what “state” is the player currently
As such, it is important this concept is understood when developping with the rx-player, which is exactly the point of this page.
List of possible states
Today the player can have one of these 9 possible states:
STOPPED
LOADING
LOADED
PLAYING
PAUSED
BUFFERING
SEEKING
ENDED
RELOADING
The STOPPED state
STOPPED
is the default state of the player. It indicates that no content is
playing.
To simplify state exploitation, STOPPED
is also emitted as a transition state
when loading a new content while another one was currently loaded (or loading).
That way, you can just listen to the STOPPED
state to know when the current
content is not loaded anymore.
When the player encounters an error, it will also stop and switch
to the STOPPED
state.
The LOADING state
The LOADING
state indicates that a new content is currently loading.
It appears only after the STOPPED
state.
That means that the player is currently downloading enough of the content to be able to play it.
While this state is active, most of the content-related APIs (like
setAudioTrack
) are not available. You have to wait for the LOADED
state for
that.
The LOADED state
LOADED
appears only after a LOADING
state, and indicates that the current
content can now be played.
From this point onward, most of the content-related APIs (like setAudioTrack
)
are now available.
If the autoPlay
loadVideo option has been set to
true, the state will then switch to PLAYING
directly. Else, the player will
usually be paused and stay in the LOADED
state (there is some edge cases, see
the “Possible state transitions” chapter for more information).
The PLAYING state
Indicates that the player is currently playing the content.
The PAUSED state
Indicates that the player is currently paused in the content.
The BUFFERING state
The content is paused because it needs to build buffer.
The player will not play until it gets out of this state.
The SEEKING state
The content is paused because it needs to build buffer after seeking in the
content (this can be seen as a special BUFFERING
case).
The player will not play until it gets out of this state.
The ENDED state
The player reached the end of the content.
If the stopAtEnd
player option has been set to
true
or not set, the player will immediately stop the content. In that case,
the ENDED
state can be considered like the STOPPED
state - in terms of what
you can do.
Else, it should now be paused at the last frame if a video content is available at this time and this state acts like what you can expect from HTML5 playback:
-
when seeking when the content is ended, you will be paused (even if you were playing before)
-
after calling
play
, you will play back from the beginning
The RELOADING state
This state indicates that the player needs to “re-load” then content.
This can happen for different reasons:
-
When you switch the video track for another one, when the previous one was currently decoding.
-
When you update manually the audio and video bitrate through respectively the
setAudioBitrate
andsetVideoBitrate
APIs (Only if you set themanualBitrateSwitchingMode
loadVideo option to"direct"
).
In those cases, we need to stop and reload the content on the browser-side, due to browser limitation.
While this state is active, multiple player API are unavailable:
- you cannot play or pause
- you cannot seek
- you cannot obtain the position or duration
- you cannot get or switch the available video, text or audio tracks.
- you cannot get or switch the available video or audio bitrates.
This is why we sometime recommend to manage this state as if it was the
LOADING
state (where those APIs - and other - are also not available).
However, the player won’t go to the LOADED
state after RELOADING
, you will
instead know that it had finished reloading simply when it goes out of this
state (see the “Possible state transitions” chapter for more information).
Possible state transitions
The player goes from one state to another during runtime but those changes does
not happen at random. There is actually possible state transitions (like from
STOPPED
to LOADING
) and impossible ones (like from LOADING
to SEEKING
).
We will list here every possible state transitions. Note that we can never have two times the same state consecutively.
From STOPPED
:
LOADING
: a new content begin to load
From LOADING
:
-
LOADED
: the loading content was loaded succesfully and can now be played (most of the content-related APIs can also be used from this point) -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to load the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.
From LOADED
:
-
PLAYING
: The content started to play. -
SEEKING
: A user seeked in the content. -
ENDED
: You are at the end of the content. Callingplay
will play back from the beginning. -
RELOADING
: The content needs to be reloaded. -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to play the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.
From PLAYING
:
-
PAUSED
: The content is paused. -
SEEKING
: A user seeked in the content. -
BUFFERING
: The player needs to pause to download content. -
ENDED
: You are at the end of the content. Callingplay
will play back from the beginning. -
RELOADING
: The content needs to be reloaded. -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to play the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.
From PAUSED
:
-
PLAYING
: The content plays (is un-paused). -
SEEKING
: A user seeked in the content. -
BUFFERING
: The player needs to pause to download content. -
ENDED
: You are at the end of the content. Callingplay
will play back from the beginning. -
RELOADING
: The content needs to be reloaded. -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to play the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.
From BUFFERING
:
-
PLAYING
: The content plays (and finished buffering) -
PAUSED
: The content is paused (and finished buffering) -
ENDED
: You are at the end of the content. Callingplay
will play back from the beginning. -
RELOADING
: The content needs to be reloaded. -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to play the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.
From SEEKING
:
-
PLAYING
: The content plays (and finished to seek) -
PAUSED
: The content is paused (and finished to seek) -
ENDED
: You are at the end of the content. Callingplay
will play back from the beginning. -
RELOADING
: The content needs to be reloaded. -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to play the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.
From ENDED
if the stopAtEnd
player option has been
set to true
or not set:
STOPPED
: Only state transition possible here. Happens if either:- You stopped the current through the stop method.
- You are loading a new content.
From ENDED
if the stopAtEnd
player option has been
set to false
:
-
PLAYING
: Theplay
method was called. The content plays back from the beginning. -
PAUSED
: A user seeked into a part of the content already-downloaded. The content is paused after the seek, regardless of if you were paused before reaching theENDED
state. -
SEEKING
: A user seeked in the content. -
RELOADING
: The content needs to be reloaded. -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to play the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.
From RELOADING
:
-
PLAYING
: The content finished to reload and was not paused before reloading. -
PAUSED
: The content finished to reload and was paused before reloading. -
ENDED
: The content finished to reload and you are at the end of the content. Callingplay
will play back from the beginning. -
STOPPED
: Either:- You stopped the current through the stop method.
- You are loading a new content.
- An error happened which made it impossible to reload the content.
The corresponding error can be found either through the
getError
method method or through theplayerStateChange
player event.


--- layout: default title: Page not found permalink: 404.html sitemap: false ---
Go back to our homepage and try again


Frequently Ask Question
Ask The Question, Learn With Perfection, Lead With Conviction
Ask whatever you want
Get your exam related doubts and questions answered by experienced and qualified faculty
- Stuck with subject related queries?
- Confused among lots of career choices?
- Looking for expert guidance in studies?
- Want latest notification about exams?
Student Testimonial
My younger son returns very happy with all activities happening at your coaching every day.  You have the motst qualified teachers in the area! My daughter is very satisfied with lessons of English and Math – they give her additional impact for development. Thank you!
Prach Pandey
StudentMeet our Teachers
V.K.Tiwari
DirectorWe have an excellent teacher to child ratio at our Kindergarten to ensure that each child receives the attention he or she needs
Er.Rajneesh Tiwari
Co-DirectorWe have an excellent teacher to child ratio at our Kindergarten to ensure that each child receives the attention he or she needs
Raju Mishra
IT Dep.& Cultural HeadWe have an excellent teacher to child ratio at our Kindergarten to ensure that each child receives the attention he or she needs
Er. Anand Tiwari
Physics TeacherWe have an excellent teacher to child ratio at our Kindergarten to ensure that each child receives the attention he or she needs
Shmriti Tiwari
TeacherWe have an excellent teacher to child ratio at our Kindergarten to ensure that each child receives the attention he or she needs
Shweta Agarawal
TeacherWe have an excellent teacher to child ratio at our Kindergarten to ensure that each child receives the attention he or she needs
Quicky Enquiry
Please fill the below form.


比较常见的数据库SQL面试题以及答案
下面的SQL题目都是比较基础，比较常见的数据库SQL面试题，在技术面试环节虽然碰到相同题目的机会比较少，但解题的基本思路都是差不多的。下面是SQL面试题描述：
Student(S#,Sname,Sage,Ssex) 学生表 * S#：学号；Sname：学生姓名；Sage：学生年龄；Ssex：学生性别* Course(C#,Cname,T#) 课程表 C#,课程编号；Cname：课程名字；T#：教师编号 SC(S#,C#,score) 成绩表 * S#：学号；C#,课程编号；score：成绩* Teacher(T#,Tname) 教师表 T#：教师编号； Tname：教师名字
问题及答案： 1、查询“001”课程比“002”课程成绩高的所有学生的学号； select a.S# from (select s#,score from SC where C#=’001′) a,(select s#,score from SC where C#=’002′) b where a.score>b.score and a.s#=b.s#;
2、查询平均成绩大于60分的同学的学号和平均成绩； select S#,avg(score) from sc group by S# having avg(score) >60;
3、查询所有同学的学号、姓名、选课数、总成绩； select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname
4、查询姓“李”的老师的个数； select count(distinct(Tname)) from Teacher where Tname like ‘李%’;
5、查询没学过“叶平”老师课的同学的学号、姓名； select Student.S#,Student.Sname from Student where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’);
6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名； select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#=’001’and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);
7、查询学过“叶平”老师所教的所有课的同学的学号、姓名； select S#,Sname from Student where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’叶平’));
8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名； Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#=’002′) score2 from Student,SC where Student.S#=SC.S# and C#=’001′) S_2 where score2 <score;
9、查询所有课程成绩小于60分的同学的学号、姓名； select S#,Sname from Student where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);
10、查询没有学全所有课的同学的学号、姓名； select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名； select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#=’1001′;
12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名； select distinct SC.S#,Sname from Student,SC where Student.S#=SC.S# and C# in (select C# from SC where S#=’001′);
13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩； update SC set score=(select avg(SC_2.score) from SC SC_2 where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname=’叶平’);
14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名； select S# from SC where C# in (select C# from SC where S#=’1002′) group by S# having count()=(select count() from SC where S#=’1002′);
15、删除学习“叶平”老师课的SC表记录； Delect SC from course ,Teacher where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;
16、向SC表中插入一些记录，这些记录要求符合以下条件：没有上过编号“003”课程的同学学号、2、 号课的平均成绩； Insert SC select S#,’002′,(Select avg(score) from SC where C#=’002′) from Student where S# not in (Select S# from SC where C#=’002′);
17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩，按如下形式显示： 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分 SELECT S# as 学生ID ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#=’004′) AS 数据库 ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#=’001′) AS 企业管理 ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#=’006′) AS 英语 ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩 FROM SC AS t GROUP BY S# ORDER BY avg(t.score)
18、查询各科成绩最高和最低的分：以如下形式显示：课程ID，最高分，最低分 SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分 FROM SC L ,SC AS R WHERE L.C# = R.C# and L.score = (SELECT MAX(IL.score) FROM SC AS IL,Student AS IM WHERE L.C# = IL.C# and IM.S#=IL.S# GROUP BY IL.C#) AND R.Score = (SELECT MIN(IR.score) FROM SC AS IR WHERE R.C# = IR.C# GROUP BY IR.C# ); 19、按各科平均成绩从低到高和及格率的百分数从高到低顺序 SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0) AS 平均成绩 ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT() AS 及格百分数 FROM SC T,Course where t.C#=course.C# GROUP BY t.C# ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT() DESC
20、查询如下课程平均成绩和及格率的百分数(用”1行”显示): 企业管理（001），马克思（002），OO&UML （003），数据库（004） SELECT SUM(CASE WHEN C# =’001′ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘001’ THEN 1 ELSE 0 END) AS 企业管理平均分 ,100 * SUM(CASE WHEN C# = ‘001’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘001’ THEN 1 ELSE 0 END) AS 企业管理及格百分数 ,SUM(CASE WHEN C# = ‘002’ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘002’ THEN 1 ELSE 0 END) AS 马克思平均分 ,100 * SUM(CASE WHEN C# = ‘002’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘002’ THEN 1 ELSE 0 END) AS 马克思及格百分数 ,SUM(CASE WHEN C# = ‘003’ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘003’ THEN 1 ELSE 0 END) AS UML平均分 ,100 * SUM(CASE WHEN C# = ‘003’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘003’ THEN 1 ELSE 0 END) AS UML及格百分数 ,SUM(CASE WHEN C# = ‘004’ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘004’ THEN 1 ELSE 0 END) AS 数据库平均分 ,100 * SUM(CASE WHEN C# = ‘004’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘004’ THEN 1 ELSE 0 END) AS 数据库及格百分数 FROM SC
21、查询不同老师所教不同课程平均分从高到低显示 SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ＩＤ,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩 FROM SC AS T,Course AS C ,Teacher AS Z where T.C#=C.C# and C.T#=Z.T# GROUP BY C.C# ORDER BY AVG(Score) DESC
22、查询如下课程成绩第 3 名到第 6 名的学生成绩单：企业管理（001），马克思（002），UML （003），数据库（004） [学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩 SELECT DISTINCT top 3 SC.S# As 学生学号, Student.Sname AS 学生姓名 , T1.score AS 企业管理, T2.score AS 马克思, T3.score AS UML, T4.score AS 数据库, ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分 FROM Student,SC LEFT JOIN SC AS T1 ON SC.S# = T1.S# AND T1.C# = ‘001’ LEFT JOIN SC AS T2 ON SC.S# = T2.S# AND T2.C# = ‘002’ LEFT JOIN SC AS T3 ON SC.S# = T3.S# AND T3.C# = ‘003’ LEFT JOIN SC AS T4 ON SC.S# = T4.S# AND T4.C# = ‘004’ WHERE student.S#=SC.S# and ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) NOT IN (SELECT DISTINCT TOP 15 WITH TIES ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) FROM sc LEFT JOIN sc AS T1 ON sc.S# = T1.S# AND T1.C# = ‘k1’ LEFT JOIN sc AS T2 ON sc.S# = T2.S# AND T2.C# = ‘k2’ LEFT JOIN sc AS T3 ON sc.S# = T3.S# AND T3.C# = ‘k3’ LEFT JOIN sc AS T4 ON sc.S# = T4.S# AND T4.C# = ‘k4’ ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);
23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60] SELECT SC.C# as 课程ID, Cname as 课程名称 ,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 – 85] ,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 – 70] ,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 – 60] ,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Course where SC.C#=Course.C# GROUP BY SC.C#,Cname;
24、查询学生平均成绩及其名次 SELECT 1+(SELECT COUNT( distinct 平均成绩) FROM (SELECT S#,AVG(score) AS 平均成绩 FROM SC GROUP BY S# ) AS T1 WHERE 平均成绩 > T2.平均成绩) as 名次, S# as 学生学号,平均成绩 FROM (SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) AS T2 ORDER BY 平均成绩 desc; 25、查询各科成绩前三名的记录:(不考虑成绩并列情况) SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 FROM SC t1 WHERE score IN (SELECT TOP 3 score FROM SC WHERE t1.C#= C# ORDER BY score DESC ) ORDER BY t1.C#; 26、查询每门课程被选修的学生数 select c#,count(S#) from sc group by C#;
27、查询出只选修了一门课程的全部学生的学号和姓名 select SC.S#,Student.Sname,count(C#) AS 选课数 from SC ,Student where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;
28、查询男生、女生人数 Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex=’男’; Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex=’女’；
29、查询姓“张”的学生名单 SELECT Sname FROM Student WHERE Sname like ‘张%’;
30、查询同名同性学生名单，并统计同名人数 select Sname,count() from Student group by Sname having count()>1;;
31、1981年出生的学生名单(注：Student表中Sage列的类型是datetime) select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age from student where CONVERT(char(11),DATEPART(year,Sage))=’1981′;
32、查询每门课程的平均成绩，结果按平均成绩升序排列，平均成绩相同时，按课程号降序排列 Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;
33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩 select Sname,SC.S# ,avg(score) from Student,SC where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;
34、查询课程名称为“数据库”，且分数低于60的学生姓名和分数 Select Sname,isnull(score,0) from Student,SC,Course where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname=’数据库’and score <60; 35、查询所有学生的选课情况；
SELECT SC.S#,SC.C#,Sname,Cname FROM SC,Student,Course where SC.S#=Student.S# and SC.C#=Course.C# ;
36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数； SELECT distinct student.S#,student.Sname,SC.C#,SC.score
FROM student,Sc WHERE SC.score>=70 AND SC.S#=student.S#;
37、查询不及格的课程，并按课程号从大到小排列 select c# from sc where scor e <60 order by C# ;
38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名； select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#=’003′;
39、求选了课程的学生人数 select count(*) from sc;
40、查询选修“叶平”老师所授课程的学生中，成绩最高的学生姓名及其成绩 select Student.Sname,score from Student,SC,Course C,Teacher where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname=’叶平’ and SC.score=(select max(score)from SC where C#=C.C# );
41、查询各个课程及相应的选修人数 select count(*) from sc group by C#;
42、查询不同课程成绩相同的学生的学号、课程号、学生成绩 select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;
43、查询每门功成绩最好的前两名 SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 FROM SC t1 WHERE score IN (SELECT TOP 2 score FROM SC WHERE t1.C#= C# ORDER BY score DESC ) ORDER BY t1.C#;
44、统计每门课程的学生选修人数（超过10人的课程才统计）。要求输出课程号和选修人数，查询结果按人数降序排列，查询结果按人数降序排列，若人数相同，按课程号升序排列 select C# as 课程号,count() as 人数 from sc group by C# order by count() desc,c#
45、检索至少选修两门课程的学生学号 select S# from sc group by s# having count(*) > = 2
46、查询全部学生都选修的课程的课程号和课程名 select C#,Cname from Course where C# in (select c# from sc group by c#)
47、查询没学过“叶平”老师讲授的任一门课程的学生姓名 select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname=’叶平’);
48、查询两门以上不及格课程的同学的学号及其平均成绩 select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#; 49、检索“004”课程分数小于60，按分数降序排列的同学学号 select S# from SC where C#=’004’and score <60 order by score desc;
50、删除“002”同学的“001”课程的成绩 delete from Sc where S#=’002’and C#=’001′;


GOP counsel Steve Castor brought a reusable grocery bag instead of a briefcase to an impeachment hearing
by<EMAIL_ADDRESS>(Grace Panetta)Screenshot via C-SPAN
- At a Monday hearing in the impeachment inquiry of President Donald Trump, the Republicans' counsel, Steve Castor, raised some eyebrows with his unique choice of a bag to transport his documents.
- A clip of the beginning of the hearing from C-SPAN showed Castor entering the room with what appeared to be a reusable Fresh Market shopping bag to carry his documents.
- Internet commentators were both bewildered and slightly amused by Castor bringing a shopping bag to the hearing.
- Visit Business Insider's homepage for more stories.
At the Monday hearing in the impeachment inquiry of President Donald Trump, the Republicans' counsel, Steve Castor, raised some eyebrows with his unique choice of a bag to transport his documents.
A clip of the hearing from C-SPAN showed Castor entering the room with what appeared to be a reusable shopping bag from the grocery chain Fresh Market, setting it on the table, and removing some folders and other materials.
Internet commentators were both bewildered and slightly amused by Castor bringing a shopping bag to the hearing, with some initially identifying it incorrectly as a Whole Foods bag.
- Read more:
- A protester from the conspiracy site InfoWars interrupted the latest impeachment hearing as soon as it began, shouting 'Trump is innocent!'
- Michelle Obama tells Jenna Bush Hager that Trump's impeachment is 'surreal' but says the country will 'come back from it'
- The 5 biggest questions surrounding Amazon's new grocery chain
Read the original article on Business Insider


I (Aliza) needed a way to compose Dita Von Teese's face out of 7,532 dots for this (nearly) award-winning project for Spotify. Here are some other ideas about how you could use coördinator.
This project is free and open source under an Apache 2.0 license. I'd love for you to contribute.
Many thanks to my colleagues on the Data:Design team for letting me put the spot in Spotify, Rich Harris for Pathologist (and Svelte and Rollup), the fine folks of csv soundsystem for their open source support, and Noah Veltman for a clutch tweet in the nick of time!


|
KlusterKite
0.0.0
A framework to create scalable and redundant services based on awesome Akka.Net project.
|
Short description of NuGet package More...
Public Member Functions | |
| PackageDescription () | |
| Initializes a new instance of the PackageDescription class. More... | |
| PackageDescription (string id, string version) | |
| Initializes a new instance of the PackageDescription class. More... | |
| override bool | Equals (object obj) |
| override int | GetHashCode () |
| Serves as the default hash function. More... | |
Static Public Member Functions | |
| static bool | operator!= (PackageDescription left, PackageDescription right) |
| Determines whether the specified object is not equal to the current object. More... | |
| static bool | operator== (PackageDescription left, PackageDescription right) |
| Determines whether the specified object is equal to the current object. More... | |
Properties | |
| string | Id [get, set] |
| Gets or sets the package Id More... | |
| string | Version [get, set] |
| Gets or sets the package version More... | |
Short description of NuGet package
Definition at line 20 of file PackageDescription.cs.
| KlusterKite.NodeManager.Launcher.Messages.PackageDescription.PackageDescription | ( | ) |
Initializes a new instance of the PackageDescription class.
Definition at line 25 of file PackageDescription.cs.
| KlusterKite.NodeManager.Launcher.Messages.PackageDescription.PackageDescription | ( | string | id, |
| string | version | ||
| ) |
Initializes a new instance of the PackageDescription class.
| id | The id. |
| version | The version. |
Definition at line 38 of file PackageDescription.cs.
| override bool KlusterKite.NodeManager.Launcher.Messages.PackageDescription.Equals | ( | object | obj | ) |
Definition at line 79 of file PackageDescription.cs.
| override int KlusterKite.NodeManager.Launcher.Messages.PackageDescription.GetHashCode | ( | ) |
Serves as the default hash function.
Definition at line 102 of file PackageDescription.cs.
|
static |
Determines whether the specified object is not equal to the current object.
| left | The left operand |
| right | The right operand |
Definition at line 64 of file PackageDescription.cs.
|
static |
Determines whether the specified object is equal to the current object.
| left | The left operand |
| right | The right operand |
Definition at line 73 of file PackageDescription.cs.
|
getset |
Gets or sets the package Id
Definition at line 48 of file PackageDescription.cs.
|
getset |
Gets or sets the package version
Definition at line 54 of file PackageDescription.cs.


Heavy rains expected to hit Egypt, EMA warns
by Egypt Today staffCAIRO – 15 November 2019: The Egyptian Meteorological Authority (EMA) warned on Friday from unstable weather and heavy rains that might hit the country.
The Ministry of Local Development affirmed its readiness to deal with the warnings, which indicate the continuation of weather fluctuations during the current period.
Minister of Local Development, Major General Mahmoud Sharawi, ordered to raise the level of readiness for operation rooms and crisis management teams.
He also ordered governorates to follow up on weather conditions and to communicate with the operation and emergency rooms in case of emergencies.
The ministry revealed that the deployment of emergency equipment in the streets was coordinated with the concerned authorities to deal with any unexpected events.


Algorithms¶
Note
- This page contains the pseudo code outlining the algorithms implemented.
- An effort has been made to implement the algorithm in a way that allows easy correspondence with the pseudo code, facilitating learning.
Important
- The pseudo code is written based on the original papers from which the algorithms are derived; slight modifications might be made, while retaining the essence of the algorithm.
- Minor modifications have been made to the implementation of Dijkstra to highlight it’s similarity of A*.
- Using the grid on which the algorithm runs to maintain cost would make the speed up the algorithms significantly for both A* and Dijkstra, and remove the necessity for using the closed list, maintaining cost in the open list.
Todo
- Highlight changes between pseudocode and implementation
Contents
Dijkstra¶
procedure main()
OL = 0 //Initialize the open list. Priority queue sorted by cost
CL = 0 //Initialize the closed list
OL <— sstart
while(!OL.empty())
q <— OL.pop()
for all s in Succ(q)
if(s=sgoal) return path found
if(s is obstacle) continue
s.parent <— q
s.cost = q.cost + distance between successor and q
if(s` = s in OL && s`.cost < s.cost)
continue
if(s` = s in OL && s`.cost < s.cost)
continue
OL <— s
CL <— q
return no path
A*¶
procedure main()
OL = 0 //Initialize the open list. Priority queue sorted by cost + heuristic cost value
CL = 0 //Initialize the closed list
OL <— sstart
while(!OL.empty())
q <— OL.pop()
for all s in Succ(q)
if(s=sgoal) return path found
if(s is obstacle) continue
s.parent <— q
s.cost = q.cost + distance between successor and q
s.h_cost = heuristic(s, sgoal)
if(s` = s in OL && s`.cost + s`.h_cost < s.cost + s.h_cost)
continue
if(s` = s in CL && s`.cost + s`.h_cost < s.cost + s.h_cost)
continue
OL <— s
CL <— q
return no path
LPA*:¶
procedure CalculateKey(s)
return [min(g(s), rhs(s)) + h(sstart, s); min(g(s),rhs(s))];
procedure Initialize()
U = 0;
for all s in S rhs(s) = g(s) = inf
rhs(sstart) = 0;
U.insert(sstart, CalculateKey(sstart));
procedure UpdateVertex()
if(u!=sstart) rhs(s) = minfor all s’ in Succ(u)c(u, s’) + g(s’)
if(u in U) U.remove(u)
if(g(u)!=rhs(u)) U.insert(u, CalculateKey(u));
procedure ComputeShortestPath()
while(U.TopKey() < CalculateKey(sgoal) OR rhs(sgoal) != g(sgoal))
u = U.Pop();
if(g(u) > rhs(u))
g(u) = rhs(u);
for all s in Succ(u) UpdateVertex(s);
else
g(u) = inf;
for all s in Succ(u) (union) {u} UpdateVertex(s)
procedure Main()
Initialize();
forever: // This runs for n times by default in current implementation
ComputeShortestPath();
Scan graph for changed edge costs;
if any edge cost changed // this occurs with probability 1/n for every iteration
for all directed edges (u,v) with changed edge costs
Update the edge cost c(u,v);
UpdateVertex(u)
D* Lite:¶
procedure CalculateKey(s)
return [min(g(s), rhs(s)) + h(sstart, s) + km; min(g(s),rhs(s))];
procedure Initialize()
U = 0;
km= 0;
for all s in S rhs(s) = g(s) = inf
rhs(sgoal) = 0;
U.insert(sgoal, CalculateKey(sgoal));
procedure UpdateVertex()
if(u!=sgoal) rhs(s) = minfor all s’ in Succ(u)c(u, s’) + g(s’)
if(u in U) U.remove(u)
if(g(u)!=rhs(u)) U.insert(u, CalculateKey(u));
procedure ComputeShortestPath()
while(U.TopKey() < CalculateKey(sstart) OR rhs(sstart) != g(sstart))
kold= U.TopKey();
u = U.Pop();
if(kold< CalculateKey(u))
U.insert(u, CalculateKey(u))
else if(g(u) > rhs(u))
g(u) = rhs(u);
for all s in Pred(u) UpdateVertex(s);
else
g(u) = inf;
for all s in Pred(u) (union) {u} UpdateVertex(s)
procedure Main()
slast= sstart
Initialize();
ComputeShortestPath();
while(sstart!=sgoal)
/ if(g(sstart)=inf) there is no known path /
sstart= arg minfor all s’ in Succ(s:sub:`start)`(c(sstart,s’)+g(s’)
Move to start
Scan graph for changed edge costs;
if any edge cost changed
km= km+ h(slast,sstart);
slast= sstart
for all directed edges (u,v) with changed edge costs
Update the edge cost c(u,v);
UpdateVertex(u)
ComputeShortestPath()
RRT¶
procedure main()
T = 0; // Initialize list/tree
for k = 1 to K
qrand← GenerateRandomNode()
qparent← FindNearestPoint(qrand, T, threshold) // Returns closest node based on distance
if(qparentexists)
qparent<— qparent
if(qrand= goal) return path found
return no path
RRTStar¶
procedure rewire()
for all node in close_node_list != qparent
if(qrand.cost + dist(node ,qrand) < node.cost)
node.parent <— qrand
node.cost <— qrand.cost + distance(node, qrand)
procedure main()
T = 0; // Initialize list/tree
for k = 1 to K
qrand← GenerateRandomNode()
qparent, close_node_list ← FindNearestPoint(qrand, T, threshold) // Returns node that results in lowest total cost and list of all close nodes // Updates qrand.cost to qparent.cost + distance(qrand, qparent)
if(qparentexists)
qparent<— qparent
if(qrand= goal) return path found
rewire()
return no path
Ant Colony Optimization¶
procedure main()
Initialize ant colony
for each iterations
initialize ants
for each ant
while ant position != goal and number of steps < max steps
calculate probabilities of possible next edges to traverse
choose next position based on probability
if not next positions possible, break
if reached revisited points, remove loop and reduce number of steps taken
update pheromone trail
update ant in ant colony
update pheromone trail by evaporation equation
update pheromone trails based on ants that reached the goal
if path found return last best path
else return no path
Genetic Algorithm¶
procedure main()
Initialize paths
for each generation
choose paths based on criteria
mutate paths (using CrossoverMutation()) to find new paths if number of paths less than set number
for each path
calculate cost and validity of path
if path valid add to paths list
if path found return last best path
else return no path
procedure CrossoverMutation()
randomly choose 2 chromosomes (paths) in path list
initialize new chromosome
for each gene in chromosome
choose either the gene from the first chromosome, form the second chromosome or a random gene based on probabilities set
add this gene to new chromosome
return new chromosome


add
Ask Jugaad
Test 1
Test 2
Disabled Tab
Title your requirement
Add most appropriate title. It will help us to understand your requirement better.
Description
Quantity
Add tags to post {{post.title}}.


Alert!
This transaction have been mark as a fraud and blocked. Our operator will call you for more details on your number +40724 *** ***
Message!
Thank you for your feedback and we appologise for any inconvenience. Your transaction will be processed in few minutes.
Message!
{{message}}


Welcome to PetShop
Congratulations, you have a PET. This page will help you with the next few steps.
You’re using Play @version
@(message: String, style: String = "java")
@defining(play.core.PlayVersion.current) { version =>
Congratulations, you have a PET. This page will help you with the next few steps.
You’re using Play @version


Eyewitness This: California gets less-than-glowing report on its preterm birth rates from March of Dimes
by ABC7.com staffThe March of Dimes gave California a less-than-glowing report on its preterm birth rates.
The number of mothers and babies statewide who died and the number of severe pregnancy complications rose to 8.8% in 2019. That was a 10-year-high.
Los Angeles County's numbers remained unchanged at 9% are the 5th highest in the state.
While there is no single cause research does show that inequalities in access to quality health care have a major impact on rates.
March of Dimes is a United States nonprofit organization that works to improve the health of mothers and babies.
Watch Eyewitness This for more stories making headlines.


{% load static icon %} No organizations yet Create or join an organization to get started. Create an Organization {% icon "life-buoy" class="me-2" height="16" width="16" %} Get support
Create or join an organization to get started.


If I have to explain to my non-technical friend, I will start to compering the Html,CSS and doc as my house...
Html is like the structure of my house:
Where the walls is place, what room is my living-room, kitchen, bathroom.
CSS is the style:
What color of the walls and the decorations I want to place
Dom is the tools:
How could you put all this toguether whitout tools,rigth.
What is meant by boxifying design and box model?
Turning every element on my websit as boxes, that way is easy to visualise the areas and work on it. Content, picture, navegation, if you think it a box its easy to work on it


The domestic dog is a wolf-like canid that can be found around the world.
Golden Retrievers
Labradors
German Shepherds, French Bulldogs, Poodles...


Close
Login
Sign Up
Enter your personal details
to create an acount
Username*
Password*
Repeat password *
Create an account with
Facebook
Create an account with
Google+
Enter your Username and password
to log in
Username*
Password *
Show
Sign in with
Facebook
Sign in with
Google+


Dery's Groceries
L
Marque
xx.x $
x un.
1
Total: 0$
We currently only offer curbside pick-up.Pick-up available 24/7.
- All fields must be provided - We cannot complete your order before