SENTINEL2 -- Sentinel-2 Products
Driver short name
SENTINEL2
Driver built-in by default
This driver is built-in by default, but requires a JPEG2000 capable driver to read the imagery
Driver for Sentinel-2 Level-1B, Level-1C and Level-2A products. Starting with GDAL 2.1.3, Level-1C with "Safe Compact" encoding are also supported.
The SENTINEL2 driver will be used if the main metadata .xml file at the root of a SENTINEL2 data product is opened (whose name is typically S2A_OPER_MTD_SAFL1C_....xml). It can also accept directly .zip files downloaded from the Sentinels Scientific Data Hub
To be able to read the imagery, GDAL must be configured with at least one of the JPEG2000 capable drivers.
SENTINEL-2 data are acquired on 13 spectral bands in the visible and near-infrared (VNIR) and Short-wavelength infrared (SWIR) spectrum, as show in the below table:
Band name |
Resolution (m) |
Central wavelength (nm) |
Band width (nm) |
Purpose |
|---|---|---|---|---|
B01 |
60 |
443 |
20 |
Aerosol detection |
B02 |
10 |
490 |
65 |
Blue |
B03 |
10 |
560 |
35 |
Green |
B04 |
10 |
665 |
30 |
Red |
B05 |
20 |
705 |
15 |
Vegetation classification |
B06 |
20 |
740 |
15 |
Vegetation classification |
B07 |
20 |
783 |
20 |
Vegetation classification |
B08 |
10 |
842 |
115 |
Near infrared |
B08A |
20 |
865 |
20 |
Vegetation classification |
B09 |
60 |
945 |
20 |
Water vapour |
B10 |
60 |
1375 |
30 |
Cirrus |
B11 |
20 |
1610 |
90 |
Snow / ice / cloud discrimination |
B12 |
20 |
2190 |
180 |
Snow / ice / cloud discrimination |
Driver capabilities
Supports Georeferencing
This driver supports georeferencing
Supports VirtualIO
This driver supports virtual I/O operations (/vsimem/, etc.)
Level-1B
Level-1B products are composed of several "granules" of ~ 25 km across-track x ~ 23km along-track, in sensor geometry (i.e. non ortho-rectified). Each granule correspond to the imagery captured by one of the 12 detectors across-track (for a total 290 km swath width). The imagery of each band is put in a separate JPEG2000 file.
Level-1B products are aimed at advanced users.
When opening the main metadata .xml file, the driver will typically expose N * 3 sub-datasets, where N is the number of granules composing the user product, and 3 corresponds to the number of spatial resolutions. There's one for the 4 10m bands, one for the 6 20m bands and one for the 3 60m bands. Caution: the number of such subdatasets can be typically of several hundreds or more.
It is also possible to open the metadata .xml of a given granule, in which case 3 subdatasets will be reported for each of the 3 spatial resolutions.
When opening a subdataset, the georeferencing is made of 5 ground control points for the 4 corner of the images and the center of image.
Level-1C
Level-1C products are organized in ortho-rectified tiles of 100 km x 100 km in UTM WGS84 projections. The imagery of each band is put in a separate JPEG2000 file.
When opening the main metadata .xml file, the driver will typically expose 4 sub-datasets:
one for the 4 10m bands,
one for the 6 20m bands,
one for the 3 60m bands and,
one for a preview of the R,G,B bands at a 320m resolution
All tiles of same resolution and projection are mosaiced together. If a product spans over several UTM zones, they will be exposed as separate subdatasets.
It is also possible to open the metadata .xml file of each tile (only for original L1C encoding, not supported on "Safe Compact" encoding), in which case the driver will typically expose the 4 above mentioned types of sub-datasets.
Level-2A
Similarly to Level-1C, Level-2A products are organized in ortho-rectified tiles of 100 km x 100 km in UTM WGS84 projections. The imagery of each band is put in a separate JPEG2000 file. The values are Bottom-Of-Atmosphere (BOA) reflectances. L2A specific bands are also computed:
AOT: Aerosol Optical Thickness map (at 550nm)
CLD: Raster mask values range from 0 for high confidence clear sky to 100 for high confidence cloudy
SCL: Scene Classification. The meaning of the values is indicated in the Category Names of the band.
SNW: Raster mask values range from 0 for high confidence NO snow/ice to 100 for high confidence snow/ice
WVP: Scene-average Water Vapour map
When opening the main metadata .xml file, the driver will typically expose 4 sub-datasets:
one for the 4 native 10m bands, and L2A specific bands (AOT and WVP)
one for the 6 native 20m bands, plus the 10m bands, except B8, resampled to 20m, and L2A specific bands (AOT, WVP, SCL, CLD and SNW),
one for the 3 native 60m bands, plus the 10m&20m bands, except B8, resampled to 60m, and L2A specific bands (AOT, WVP, SCL, CLD and SNW),
one for a preview of the R,G,B bands at a 320m resolution
All tiles of same resolution and projection are mosaiced together. If a product spans over several UTM zones, they will be exposed as separate subdatasets.
Metadata
Metadata of the main metadata .xml file is available in the general metadata domain. The whole XML file is also accessible through the xml:SENTINEL2 metadata domain.
Subdatasets are based on the VRT format, so the definition of this VRT can be obtained by querying the xml:VRT metadata domain.
Performance issues for L1C and L2A
Due to the way Sentinel-2 products are structured, in particular because of the number of JPEG2000 files involved, zoom-out operations can be very slow for products made of many tiles. For interactive display, it can be useful to generate overviews (can be a slow operation by itself). This can be done with the gdaladdo utility on the subdataset name. The overview file is created next to the main metadata .xml file, with the same name, but prefixed with _XX_EPSG_YYYYY.tif.ovr where XX=10m,20m,60m or PREVIEW and YYYYY is the EPSG code.
Trick: if the content of the zoom-out preview is not important for the use case, blank overviews can be created instantaneously by using the NONE resampling method ('-r none' as gdaladdo switch).
When converting a subdataset to another format like tiled GeoTIFF, if
using the JP2OpenJPEG driver, the recommended minimum value for the
GDAL_CACHEMAX
configuration option is (subdataset_width * 2048 * 2 ) /
10000000 if generating a INTERLEAVE=BAND GeoTIFF, or that value
multiplied by the number of bands for the default INTERLEAVE=PIXEL
configuration. The current versions of the OpenJPEG libraries can also
consume a lot of memory to decode a JPEG2000 tile (up to 600MB), so you
might want to specify the GDAL_NUM_THREADS
configuration option to a
reasonable number of threads if you are short of memory (the default
value is the total number of virtual CPUs).
Open options
The driver can be passed the following open options:
ALPHA=[YES/NO]: Defaults to
NO
. Whether to expose an alpha band. If set, an extra band is added after the Sentinel2 bands with an alpha channel. Its value are:0 on areas with no tiles, or when the tile data is set to the NODATA or SATURATED special values,
4095 on areas with valid data.
Note: above open options can also be specified as configuration options, by prefixing the open option name with SENTINEL2_ (e.g. SENTINEL2_ALPHA).
Examples
Opening the main metadata file of a Sentinel2 product:
$ gdalinfo S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml
Driver: SENTINEL2/Sentinel 2 Files: S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml Size is 512, 512 Coordinate System is `' Metadata: CLOUD_COVERAGE_ASSESSMENT=0.0 DATATAKE_1_DATATAKE_SENSING_START=2015-08-13T10:10:26.027Z DATATAKE_1_DATATAKE_TYPE=INS-NOBS DATATAKE_1_ID=GS2A_20150813T101026_000734_N01.03 DATATAKE_1_SENSING_ORBIT_DIRECTION=DESCENDING DATATAKE_1_SENSING_ORBIT_NUMBER=22 DATATAKE_1_SPACECRAFT_NAME=Sentinel-2A DEGRADED_ANC_DATA_PERCENTAGE=0 DEGRADED_MSI_DATA_PERCENTAGE=0 FOOTPRINT=POLYGON((11.583573986577191 46.02490454425771, 11.538730738326866 45.03757398414644, 12.93007028286133 44.99812645604949, 12.999359413660665 45.98408391203724, 11.583573986577191 46.02490454425771, 11.583573986577191 46.02490454425771)) FORMAT_CORRECTNESS_FLAG=PASSED GENERAL_QUALITY_FLAG=PASSED GENERATION_TIME=2015-08-18T10:14:40.000283Z GEOMETRIC_QUALITY_FLAG=PASSED PREVIEW_GEO_INFO=BrowseImageFootprint PREVIEW_IMAGE_URL=https://pdmcdam2.sentinel2.eo.esa.int/s2pdgs_geoserver/geo_service.php?service=WMS&version=1.1.0&request=GetMap&layers=S2A_A000022_N0103:S2A_A000022_N0103&styles=&bbox=11.538730738326866,44.99812645604949,12.999359413660665,46.02490454425771&width=1579&height=330&srs=EPSG:4326&format=image/png&time=2015-08-13T10:24:06.0Z/2015-08-13T10:24:06.0Z PROCESSING_BASELINE=01.03 PROCESSING_LEVEL=Level-1C PRODUCT_START_TIME=2015-08-13T10:24:06.637Z PRODUCT_STOP_TIME=2015-08-13T10:24:06.637Z PRODUCT_TYPE=S2MSI1C QUANTIFICATION_VALUE=1000 RADIOMETRIC_QUALITY_FLAG=PASSED REFERENCE_BAND=B1 REFLECTANCE_CONVERSION_U=0.973195961910065 SENSOR_QUALITY_FLAG=PASSED SPECIAL_VALUE_NODATA=1 SPECIAL_VALUE_SATURATED=0 Subdatasets: SUBDATASET_1_NAME=SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:10m:EPSG_32632 SUBDATASET_1_DESC=Bands B2, B3, B4, B8 with 10m resolution, UTM 32N SUBDATASET_2_NAME=SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:20m:EPSG_32632 SUBDATASET_2_DESC=Bands B5, B6, B7, B8A, B11, B12 with 20m resolution, UTM 32N SUBDATASET_3_NAME=SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:60m:EPSG_32632 SUBDATASET_3_DESC=Bands B1, B9, B10 with 60m resolution, UTM 32N SUBDATASET_4_NAME=SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:PREVIEW:EPSG_32632 SUBDATASET_4_DESC=RGB preview, UTM 32N Corner Coordinates: Upper Left ( 0.0, 0.0) Lower Left ( 0.0, 512.0) Upper Right ( 512.0, 0.0) Lower Right ( 512.0, 512.0) Center ( 256.0, 256.0)
Opening the .zip file directly:
$ gdalinfo S2A_OPER_PRD_MSIL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.zip
Opening the 10 meters resolution bands of a L1C subdataset:
$ gdalinfo SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:10m:EPSG_32632
Driver: SENTINEL2/Sentinel 2 Files: S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml ./GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_N01.03/S2A_OPER_MTD_L1C_TL_MTI__20150813T201603_A000734_T32TQR.xml ./GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_N01.03/IMG_DATA/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_B04.jp2 ./GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_N01.03/IMG_DATA/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_B03.jp2 ./GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_N01.03/IMG_DATA/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_B02.jp2 ./GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_N01.03/IMG_DATA/S2A_OPER_MSI_L1C_TL_MTI__20150813T201603_A000734_T32TQR_B08.jp2 Size is 10980, 10980 Coordinate System is: PROJCS["WGS 84 / UTM zone 32N", GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",9], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], PARAMETER["false_northing",0], UNIT["metre",1, AUTHORITY["EPSG","9001"]], AXIS["Easting",EAST], AXIS["Northing",NORTH], AUTHORITY["EPSG","32632"]] Origin =<PHONE_NUMBER>00000000000,5100060.000000000000000) Pixel Size = (10.000000000000000,-10.000000000000000) Metadata: [... same as above ...] Image Structure Metadata: COMPRESSION=JPEG2000 Corner Coordinates: Upper Left ( 699960.000, 5100060.000) ( 11d35' 0.87"E, 46d 1'29.66"N) Lower Left ( 699960.000, 4990260.000) ( 11d32'19.43"E, 45d 2'15.27"N) Upper Right ( 809760.000, 5100060.000) ( 12d59'57.69"E, 45d59' 2.70"N) Lower Right ( 809760.000, 4990260.000) ( 12d55'48.25"E, 44d59'53.26"N) Center ( 754860.000, 5045160.000) ( 12d15'46.56"E, 45d30'48.07"N) Band 1 Block=128x128 Type=UInt16, ColorInterp=Red Description = B4, central wavelength 665 nm Overviews: 5490x5490, 2745x2745, 1373x1373, 687x687, 344x344 Metadata: BANDNAME=B4 BANDWIDTH=30 BANDWIDTH_UNIT=nm SOLAR_IRRADIANCE=1512.79 SOLAR_IRRADIANCE_UNIT=W/m2/um WAVELENGTH=665 WAVELENGTH_UNIT=nm Image Structure Metadata: NBITS=12 Band 2 Block=128x128 Type=UInt16, ColorInterp=Green Description = B3, central wavelength 560 nm [...] Band 3 Block=128x128 Type=UInt16, ColorInterp=Blue Description = B2, central wavelength 490 nm [...] Band 4 Block=128x128 Type=UInt16, ColorInterp=Undefined Description = B8, central wavelength 842 nm [...]
Conversion of a L1C subdataset to tiled GeoTIFF
$ gdal_translate SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:10m:EPSG_32632 \ 10m.tif \ -co TILED=YES --config GDAL_CACHEMAX 1000 --config GDAL_NUM_THREADS 2
Generating blank overviews for a L1C subdataset:
$ gdaladdo -r NONE SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:10m:EPSG_32632 4
Creating a VRT file from the subdataset (can be convenient to have the subdatasets as files):
$ python3 -c "import sys; from osgeo import gdal; ds = gdal.Open(sys.argv[1]); open(sys.argv[2], 'wb').write(ds.GetMetadata('xml:VRT')[0].encode('utf-8'))" \ SENTINEL2_L1C:S2A_OPER_MTD_SAFL1C_PDMC_20150818T101440_R022_V20150813T102406_20150813T102406.xml:10m:EPSG_32632 10m.vrt
Opening the 10 meters resolution bands of a L1B subdataset:
$ gdalinfo SENTINEL2_L1B:S2A_OPER_MTD_L1B_GR_SGS__20151024T023555_S20151024T011315_D02.xml:10m
Driver: SENTINEL2/Sentinel 2 Files: S2A_OPER_MTD_L1B_GR_SGS__20151024T023555_S20151024T011315_D02.xml IMG_DATA/S2A_OPER_MSI_L1B_GR_SGS__20151024T023555_S20151024T011315_D02_B04.jp2 IMG_DATA/S2A_OPER_MSI_L1B_GR_SGS__20151024T023555_S20151024T011315_D02_B03.jp2 IMG_DATA/S2A_OPER_MSI_L1B_GR_SGS__20151024T023555_S20151024T011315_D02_B02.jp2 IMG_DATA/S2A_OPER_MSI_L1B_GR_SGS__20151024T023555_S20151024T011315_D02_B08.jp2 Size is 2552, 2304 Coordinate System is `' GCP Projection = GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]] GCP[ 0]: Id=, Info= (0,0) -><PHONE_NUMBER>91036,-21.4282083310724,0) GCP[ 1]: Id=, Info= (0,2304) -><PHONE_NUMBER>36827,-21.6408640426055,0) GCP[ 2]: Id=, Info= (2552,2304) -><PHONE_NUMBER>74251,-21.686125031254,0) GCP[ 3]: Id=, Info= (2552,0) -><PHONE_NUMBER>25145,-21.4734274382519,0) GCP[ 4]: Id=, Info= (1276,1152) -><PHONE_NUMBER>30986,-21.5571457404287,0) Metadata: CLOUDY_PIXEL_PERCENTAGE=0 DATASTRIP_ID=S2A_OPER_MSI_L1B_DS_SGS__20151024T023555_S20151024T011312_N01.04 DATATAKE_1_DATATAKE_SENSING_START=2015-10-24T01:13:12.027Z DATATAKE_1_DATATAKE_TYPE=INS-NOBS DATATAKE_1_ID=GS2A_20151024T011312_001758_N01.04 DATATAKE_1_SENSING_ORBIT_DIRECTION=DESCENDING DATATAKE_1_SENSING_ORBIT_NUMBER=45 DATATAKE_1_SPACECRAFT_NAME=Sentinel-2A DEGRADED_ANC_DATA_PERCENTAGE=0 DEGRADED_MSI_DATA_PERCENTAGE=0 DETECTOR_ID=02 DOWNLINK_PRIORITY=NOMINAL FOOTPRINT=POLYGON((134.635194391036 -21.4282083310724,<PHONE_NUMBER>36827 -21.6408640426055,<PHONE_NUMBER>74251 -21.686125031254,<PHONE_NUMBER>25145 -21.4734274382519,<PHONE_NUMBER>91036 -21.4282083310724)) FORMAT_CORRECTNESS_FLAG=PASSED GENERAL_QUALITY_FLAG=PASSED GENERATION_TIME=2015-11-12T10:55:12.000947Z GEOMETRIC_QUALITY_FLAG=PASSED GRANULE_ID=S2A_OPER_MSI_L1B_GR_SGS__20151024T023555_S20151024T011315_D02_N01.04 PREVIEW_GEO_INFO=BrowseImageFootprint PREVIEW_IMAGE_URL=https://pdmcdam2.sentinel2.eo.esa.int/s2pdgs_geoserver/geo_service.php?service=WMS&version=1.1.0&request=GetMap&layers=S2A_A000045_N0104:S2A_A000045_N0104&styles=&bbox=133.512786023161,-25.3930035889714,137.184847290108,-21.385906922696&width=1579&height=330&srs=EPSG:4326&format=image/png&time=2015-10-24T01:13:15.0Z/2015-10-24T01:14:13.0Z PROCESSING_BASELINE=01.04 PROCESSING_LEVEL=Level-1B PRODUCT_START_TIME=2015-10-24T01:13:15.497656Z PRODUCT_STOP_TIME=2015-10-24T01:14:13.70431Z PRODUCT_TYPE=S2MSI1B RADIOMETRIC_QUALITY_FLAG=PASSED SENSING_TIME=2015-10-24T01:13:15.497656Z SENSOR_QUALITY_FLAG=PASSED SPECIAL_VALUE_NODATA=1 SPECIAL_VALUE_SATURATED=0 Corner Coordinates: Upper Left ( 0.0, 0.0) Lower Left ( 0.0, 2304.0) Upper Right ( 2552.0, 0.0) Lower Right ( 2552.0, 2304.0) Center ( 1276.0, 1152.0) Band 1 Block=128x128 Type=UInt16, ColorInterp=Red Description = B4, central wavelength 665 nm Overviews: 1276x1152, 638x576, 319x288, 160x144 Metadata: BANDNAME=B4 BANDWIDTH=30 BANDWIDTH_UNIT=nm WAVELENGTH=665 WAVELENGTH_UNIT=nm Image Structure Metadata: NBITS=12 Band 2 Block=128x128 Type=UInt16, ColorInterp=Green Description = B3, central wavelength 560 nm [...] Band 3 Block=128x128 Type=UInt16, ColorInterp=Blue Description = B2, central wavelength 490 nm [...] Band 4 Block=128x128 Type=UInt16, ColorInterp=Undefined Description = B8, central wavelength 842 nm [...]
See Also
Credits
This driver has been developed by Spatialys with funding from Centre National d'Etudes Spatiales (CNES)


[gecode-users] Store a SharedHandle inside a Sharedhandle::object
Christian Schulte
cschulte at kth.se
Fri Apr 19 11:58:18 CEST 2013
Hi,
No, that should be just fine.
Christian
--
Christian Schulte, www.ict.kth.se/~cschulte/
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
Of christine bouzant
Sent: Friday, April 19, 2013 10:18 AM
To: users at gecode.org
Subject: [gecode-users] Store a SharedHandle inside a Sharedhandle::object
Hello all,
Is there something wrong about storing a TupletSet inside a class
CarProposition which inherits of SharedHandled::Object ?
I would use the TupletSet copy constructor inside the CarProposition copy
constructor instead of the TupletSet update method since it is space
independant.
Cheers,
Christine.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20130419/13f42989/attachment.html>
More information about the users
mailing list


Get Certified Financial Advice
All-in one financial studio to give you the same financial support you would get as an employee
How it works
Get ongoing support from certified experts, reach financial wellbeing
Tell us your goals
Some quick example text to build on the card title and make up the bulk of the card's content.
Connect your bank account
Some quick example text to build on the card title and make up the bulk of the card's content.
Get personalised advice
Some quick example text to build on the card title and make up the bulk of the card's content.
1:1 video call with certified financial advisers
We put all the experience and know-how in thi product so we can offer you the best product we have ever built.
es, Loans, Weddings, Let's chat.
We put all the experience and know-how in thi product so we can offer you the best product we have ever built.
Connect to your bank account
We put all the experience and know-how in thi product so we can offer you the best product we have ever built.
Personalised support to meet your goals
We put all the experience and know-how in thi product so we can offer you the best product we have ever built.
Simple affordable plan
Get started free and cancel at any time
Free
Free
per month- Up to 5 users
- Basic support on Github
- Monthly updates
- Free cancelation
Multiple Use
£15
per month- Up to 15 users
- Premium email support
- Weekly updates
- Free cancelation
Extended Use
Let's talk
per month- Unlimited users
- One on one support
- Weekly updates
- Free cancelation


broadwayd - Broadway display server
broadwayd [--port PORT] [--address ADDRESS] [--unixsocket ADDRESS] [:DISPLAY]
broadwayd is a display server for the Broadway GDK backend. It allows multiple GTK+ applications to display their windows in the same web browser, by connecting to broadwayd.
When using broadwayd, specify the display number to use, prefixed with a colon, similar to X. The default display number is 1.
broadwayd :5
Then point your web browser at http://<IP_ADDRESS>:8084. Start your applications like this:
BROADWAY_DISPLAY=:5 gtk3-demo
You can add password protection for your session by creating a file in $XDG_CONFIG_HOME/broadway.passwd or $HOME/.config/broadway.passwd with a crypt(3) style password hash. A simple way to generate it is with openssl:
openssl passwd -1 > ~/.config/broadway.passwd
--port
Use PORT as the HTTP port, instead of the default 8080 + (DISPLAY - 1).
--address
Use ADDRESS as the HTTP address, instead of the default http://<IP_ADDRESS>:PORT.
--unixsocket
Use ADDRESS as the unix domain socket address. This option overrides --address and --port. It is available only on Unix-like systems.


A pattern matcher has the following form:
(match <arg-expression> <clause> <clause> ... )
<clause> -> (<pattern> <body>) |
(<pattern> (=> <non-pattern identifier>) <body>)
Syntax: it is an error if <arg-expression> does not match a pattern in any of the clauses. It is an error for the <non-pattern identifier> to be a pattern variable.
A pattern can have one of the following forms:
<pattern> -> (<pattern> ...) |
#(<pattern> ...) |
<pattern identifier> |
<pattern s-expression> |
<tail pattern> |
<ellipsis pattern> |
<record pattern> |
<getter or setter pattern> |
<field pattern> |
<predicate pattern> |
<boolean pattern> |
<tree pattern> |
<quasi-quote pattern> |
_
Syntax: A <pattern identifier> is any identifier except and or not set! get! $ struct object _ ... ___
=..
***
*..
= ? quote quasi-quote unquote-splicing
and can be used as a pattern variable. A pattern variable will match any value.
A <pattern s-expression> can be a boolean, number, character, vector, a (quote symbol) or (quote <pattern s-expression> ...). A <pattern s-expression> matches an <arg-expression> that is exactly like it. (A symbol in a quoted s-expression does not need a separate quote).
A tail pattern has the form:
<tail pattern> -> (<pattern> <pattern> ... . <pattern>) |
#(<pattern> <pattern> ... . <pattern>)
An ellipsis pattern has the form:
<ellipsis pattern> -> (<pattern> <pattern> ... <ellipsis form> <pattern> ...) |
#(<pattern> <pattern> ... <ellipsis form> <pattern> ...)
<ellipsis form> -> ... |
___ |
=.. <number> |
*.. <number 1> <number 2>
Syntax: It is an error for a list to contain more than one ellipsis form or tail pattern, but the patterns that list contains can contain additional ellipsis forms or tail patterns. It is an error for <number 2> to be less than <number 1>.
A record pattern has the form:
<record pattern> -> ($ <record type> <pattern> <pattern> ...) |
(struct <record type> <pattern> <pattern> ...) |
(object <record type> (<slot name> <pattern>) (<slot name> <pattern>) ...)
<record type> -> implementation dependent
<slot name> -> <identifier>
Syntax: It is an error for the number of patterns in the $ or struct forms to exceed the number of fields in the record. It is an error if the record does not have a field named <slot name>. If a record is exported from a library without its <record type>, this form cannot be used.
A getter or setter pattern has the form:
<getter or setter pattern> -> (get! <pattern identifier>) |
(set! <pattern identifier>)
A field pattern has the form:
<field pattern> -> (= <operator> <pattern>)
A predicate pattern has the form:
<predicate pattern> -> (? <predicate> <pattern> ...)
A boolean pattern has the form:
<boolean pattern> -> (and <pattern> ...) |
(or <pattern> ...) |
(not <pattern> <pattern> ...)
Syntax: It is an error for not patterns to be empty. It is an error to refer to the same variable inside and outside a not pattern.
A tree pattern has the form:
<tree pattern> -> (<pattern> *** <pattern>)
Syntax: It is an error to combine *** with ..., ___, ., *.., or =.. .
A quasi-quote pattern has the form:
<quasi-quote pattern> -> `<quasi-quote datum> |
(quasi-quote <quasi-quote datum>)
<quasi-quote datum> -> <pattern s-expression> |
<identifier> |
(<quasi-quote contents> ...)
<quasi-quote contents> -> <quasi-quote datum> |
,<pattern> |
(unquote <pattern>) |
,@<pattern> |
(unquote-splicing <pattern>)
Syntax: identifiers in unquoted patterns are subject to the same naming constraints as other pattern variables. ,@/unquote-splicing is a type of ellipsis pattern so it is a syntax error if a list contains this pattern in combination with tail, or other ellipsis patterns (=.. and *.. have to be unquoted to be interpreted as ellipsis patterns).
A _ pattern is a wildcard that will match anything but does not bind.
Helper forms:
(match-lambda <clause> <clause> ...)
(match-lambda* <clause> <clause> ...)
(match-let (<match-let clause> ...) <body>)
(match-let <identifier> (<match-let clause> ...) <body>)
(match-let\* (<match-let clause> ...) <body>)
(match-letrec (<match-let clause> ...) <body>)
<match-let clause> -> (<pattern> <arg-expression>) |
<binding spec>
Semantics: The use of match takes an expression and compares it to a series of patterns, beginning with the leftmost. When the expression matches a pattern, it evaluates the corresponding body, with any bindings formed in the pattern. A failure pattern assigns a zero-argument function to a procedure so that if it is determined in the body that the match actually failed, that procedure can be called to restart matching at the next argument.
A pattern identifier (which is any identifier except and or not set! get! $ struct object _ ... ___ =.. *** *.. = ? quote quasi-quote unquote-splicing
) will match and bind anything, and bind it to that pattern variable. The special identifier _ matches anything but does not bind. The forms (<pattern> ...) and #(<pattern> ...) match lists and vectors whose elements match the contained patterns (() and #() match the empty list and vector).
A pattern s-expression matches literal values.
A tail pattern matches the rest of a list or vector.
A pattern followed by ellipsis matches zero or more times. A pattern followed by =.. k
matches k times. A pattern followed by *.. k j
matches between k and j times (inclusive).
The $
and struct
syntax of record patterns match record fields positionally. The object
record pattern matches an identifier against the record field slot names. This pattern may not be available (because an implementation has not made the necessary record introspection forms available) or may not be available for a particular record (because the record type is not exported).
Getter and setter functions bind a zero- and one-argument function to their identifier. The getter function returns the value of its match when called, and the setter function will take a new value to set its match to.
A field pattern (= <operator> <pattern> ...)
applies operator (a one argument function) to what it is matching, and then matches the return value against its pattern. A predicate pattern (? <predicate> <pattern>)
is similar in that it applies its predicate to a value, but if the predicate is true, that value is then matched against all additional patterns.
A boolean pattern has one of the forms (and <pattern> ...), (or <pattern> ...), (not <pattern> <pattern> ...)
. All of the forms in an and pattern must match, and an empty and pattern is true. At least one of the forms in the or pattern must match, and an empty or is false. None of the forms in a not pattern should match and an empty not is a syntax error.
In a tree pattern (<left pattern> *** <right pattern>), the /<left pattern> represents a path to the subtree that matches the <right pattern>.
In a quasi-quote pattern, <pattern s-expressions> and <identifiers> match their literal values (as symbols in the case of <identifiers>). Unquoted <pattern>s match as usual, and unquote-spliced <pattern>s have ellipsis matching.
match-lambda
produces a one-argument lambda expression that matches its argument. match-lambda*
makes a lambda expression that accepts any number of arguments and matches against a list of those arguments.
match-let
match-let*
and match-letrec
both allow binding a name to a value through either standard let/letrec syntax or by matching a pattern against a value.


Portable Drives
| Name | L&A MyDesktop | L&A MyNote |
| Suitable For | Ultra-compact, auto and cloud backup to go. |
Complete backup and storage. |
| Type | Hard Drive | Solid State/ Hard Drive |
| Designed For | Portable/Desktop | Portable |
| Capacity | 1 TB to 5 TB | 128GB to 2 TB |
| File Copy / Write Speed | Up to 120MB/s | Up to 550MB/s(SSD), Up to 150MB/s(HDD) |
| Form Factor | 3.5-inch | 1.5-inch |
| Cache | 64MB | 64MB |


Welcome to YETI’s documentation!¶
Useful links
Yeti is a platform meant to organize observables, indicators of compromise, TTPs, and knowledge on threats in a single, unified repository. Yeti will also automatically enrich observables (e.g. resolve domains, geolocate IPs) so that you don’t have to. Yeti provides an interface for humans (shiny Bootstrap-based UI) and one for machines (web API) so that your other tools can talk nicely to it.
Yeti was born out of frustration of having to answer the question “where have I seen this artifact before?” or Googling shady domains to tie them to a malware family.
In a nutshell, Yeti allows you to:
- Submit observables and get a pretty good guess on the nature of the threat.
- Inversely, focus on a threat and quickly list all TTPs, Observables, and associated malware.
- Let responders skip the “Google the artifact” stage of incident response.
- Let analysts focus on adding intelligence rather than worrying about machine-readable export formats.
- Visualize relationship graphs between different threats.
This is done by:
- Collecting and processing observables from a wide array of different sources (MISP instances, malware trackers, XML feeds, JSON feeds...)
- Providing a web API to automate queries (think incident management platform) and enrichment (think malware sandbox).
- Export the data in user-defined formats so that they can be ingested by third-party applications (think blocklists, SIEM).


Bethany's
Fantastic Pie Shop
Specials
Cheese Cakes
Fruit Pies
Swag Shop
Fruit Pie Gallery
Apple
$19.97
Cherry
$17.97
Cranberry
$15.97
Peach
$15.97
Pumpkin
$15.97
Rhubarb
$15.97
Strawberry
$15.97


{% extends "global/Page.html" %} {% load otree static %} {% block title %} Game Page 1 {% endblock %} {% block content %}
You are in treatment: {{ player.treatment }}


Komodore64 is a Dutch video game company creating the next level entertainment experience for everyone. We lead the mass adoption of blockchain games by introducing K64 Virtual Console.
Komodo (KMD) gained 25% on Sunday morning fresh off the back of a week of positive developments. One of those - Komodore64 - looks particularly interesting.
The Commodore 64 Games System (often abbreviated C64GS) is the cartridge-based home video game console version of the popular Commodore 64 home computer. It was released in December 1990 by Commodore into a booming console market dominated by Nintendo and Sega. It was only re...


Datasets¶
The Dataset
class is used to provide utilities for data management, such as adding training samples,
encoding and decoding data points for the training, serialization and restoration to continue training and so on.
A Dataset
is an internal component of the algorithm being used, and will often not be interacted with directly.
It provides a convenient interface to the HyperParameterList
that is used to wrap the hyper parameters, and its
serialization / recovery for multiple training runs.
Class Information¶
Dataset¶
pyshac.config.data.Dataset(parameter_list=None, basedir='shac')
Dataset manager for the engines.
Holds the samples and their associated evaluated values in a format that can be serialized / restored as well as encoder / decoded for training.
Arguments:
- parameter_list (hp.HyperParameterList | list | None): A python list of Hyper Parameters, or a HyperParameterList that has been built. Can also be None, if the parameters are to be assigned later.
- basedir (str): The base directory where the data of the engine will be stored.
Dataset methods¶
add_sample¶
add_sample(parameters, value)
Adds a single row of data to the dataset. Each row contains the hyper parameter configuration as well as its associated evaluation measure.
Arguments:
- parameters (list): A list of hyper parameters that have been sampled
- value (float): The evaluation measure for the above sample.
clear¶
clear()
Removes all the data of the dataset.
decode_dataset¶
decode_dataset(X=None)
Decode the input samples such that discrete hyper parameters are mapped to their original values and continuous valued hyper paramters are left alone.
Arguments:
- X (np.ndarray | None): The input list of encoded samples. Can be None, in which case it defaults to the internal samples, which are encoded and then decoded.
Returns:
np.ndarray
encode_dataset¶
encode_dataset(X=None, Y=None, objective='max')
Encode the entire dataset such that discrete hyper parameters are mapped to integer indices and continuous valued hyper paramters are left alone.
Arguments
- X (list | np.ndarray | None): The input list of samples. Can be None, in which case it defaults to the internal samples.
- Y (list | np.ndarray | None): The input list of evaluation measures. Can be None, in which case it defaults to the internal evaluation values.
- objective (str): Whether to maximize or minimize the value of the labels.
Raises:
- ValueError: If
objective
is not in [max
,min
]
Returns:
A tuple of numpy arrays (np.ndarray, np.ndarray)
get_best_parameters¶
get_best_parameters(objective='max')
Selects the best hyper parameters according to the maximization or minimization of the objective value.
Returns None
if there are no samples in the dataset.
Arguments:
- objective: String label indicating whether to maximize or minimize the objective value.
Raises:
- ValueError: If the objective is not
max
ormin
.
Returns:
A list of hyperparameter settings or None
if the dataset is empty.
get_dataset¶
get_dataset()
Gets the entire dataset as a numpy array.
Returns:
(np.ndarray, np.ndarray)
get_parameters¶
get_parameters()
Gets the hyper parameter list manager
Returns:
HyperParameterList
load_from_directory¶
load_from_directory(basedir='shac')
Static method to load the dataset from a directory.
Arguments:
- basedir (str): The base directory where 'shac' directory is. It will build the path to the data and parameters itself.
Raises:
- FileNotFoundError: If the directory does not contain the data and parameters.
prepare_parameter¶
prepare_parameter(sample)
Wraps a hyper parameter sample list with the name of the parameter in an OrderedDict.
Arguments:
- sample (list): A list of sampled hyper parameters
Returns:
OrderedDict(str, int | float | str)
restore_dataset¶
restore_dataset()
Restores the entire dataset from a CSV file saved at the path provided by
data_path
. Also loads the parameters (list of hyperparameters).
Raises:
- FileNotFoundError: If the dataset is not at the provided path.
save_dataset¶
save_dataset()
Serializes the entire dataset into a CSV file saved at the path
provide by data_path
. Also saves the parameters (list of hyper parameters).
Raises:
- ValueError: If trying to save a dataset when its parameters have not been set.
set_dataset¶
set_dataset(X, Y)
Sets a numpy array as the dataset.
Arguments:
- X (list | tuple | np.ndarray): A numpy array or python list/tuple that contains the samples of the dataset.
- Y (list | tuple | np.ndarray): A numpy array or python list/tuple that contains the evaluations of the dataset.
set_parameters¶
set_parameters(parameters)
Sets the hyper parameter list manager
Arguments:
- parameters (hp.HyperParameterList | list): a Hyper Parameter List or a python list of Hyper Parameters.
flatten_parameters¶
flatten_parameters(params)
Takes an OrderedDict or a list of lists, and flattens it into a list containing the items.
Arguments:
- params (OrderedDict | list of lists): The parameters that were provided by the engine, either as an OrderedDict or a list of list representation.
Returns:
a flattened python list containing just the sampled values.


- search(View) - Method in class com.example.vitabu.searchBooksActivity
-
- searchBookResultsActivity - Class in com.example.vitabu
-
- searchBookResultsActivity() - Constructor for class com.example.vitabu.searchBookResultsActivity
-
- searchBookResultsRecyclerViewAdapter - Class in com.example.vitabu
-
- searchBookResultsRecyclerViewAdapter(ArrayList<Book>) - Constructor for class com.example.vitabu.searchBookResultsRecyclerViewAdapter
-
- searchBookResultsRecyclerViewAdapter.OnItemClickListener - Interface in com.example.vitabu
-
- searchBookResultsRecyclerViewAdapter.ViewHolder - Class in com.example.vitabu
-
- searchBooks(Runnable, Runnable, String, String, String, String) - Method in class com.example.vitabu.Database
-
Searches database for books based on the provided search criteria.
- searchBooksActivity - Class in com.example.vitabu
-
- searchBooksActivity() - Constructor for class com.example.vitabu.searchBooksActivity
-
- SearchTest - Class in com.example.vitabu
-
- SearchTest() - Constructor for class com.example.vitabu.SearchTest
-
- sendReviewNotifications(Runnable, Runnable, BorrowRecord) - Method in class com.example.vitabu.Database
-
- setAddress(String) - Method in class com.example.vitabu.Location
-
The setter for the address
- setApproved(boolean) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the approved flag.
- setAuthor(String) - Method in class com.example.vitabu.Book
-
The setter for the author of the book.
- setBody(String) - Method in class com.example.vitabu.Review
-
The setter for the body of the review.
- setBookid(String) - Method in class com.example.vitabu.Book
-
- setBookid(String) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the Book's ID
- setBooksBorrowed(int) - Method in class com.example.vitabu.LocalUser
-
The setter for the number of books that the user borrowed.
- setBooksBorrowed(int) - Method in class com.example.vitabu.User
-
The setter of the number of books that the user has borrowed
- setBooksBorrowed(int) - Method in class com.example.vitabu.UserAbstract
-
- setBooksOwned(int) - Method in class com.example.vitabu.LocalUser
-
The setter for the number of books that the user owns.
- setBooksOwned(int) - Method in class com.example.vitabu.User
-
The setter for the number of books owned by the user.
- setBooksOwned(int) - Method in class com.example.vitabu.UserAbstract
-
- setBorrower(String) - Method in class com.example.vitabu.Book
-
Sets the borrower.
- setBorrowerName(String) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the borrower's username
- setBorrowerName(String) - Method in class com.example.vitabu.Review
-
The setter for the username of the borrower of the book
- setBorrowerRating(float) - Method in class com.example.vitabu.LocalUser
-
The setter for the user's borrower rating.
- setBorrowerRating(float) - Method in class com.example.vitabu.User
-
The setter for the borrower rating of the user.
- setBorrowerRating(float) - Method in class com.example.vitabu.UserAbstract
-
- setBorrowRecordId(String) - Method in class com.example.vitabu.Notification
-
The setter for the borrow record ID
- setCity(String) - Method in class com.example.vitabu.Location
-
The setter for the city.
- setCountry(String) - Method in class com.example.vitabu.Location
-
The setter for the country.
- setDate(Date) - Method in class com.example.vitabu.Notification
-
The setter for the notification's date
- setDate(Date) - Method in class com.example.vitabu.Review
-
The setter for the date when the review was created
- setDateBorrowed(Date) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the date for the book being initially borrowed
- setDescription(String) - Method in class com.example.vitabu.Book
-
Sets the description of the book.
- setEmail(String) - Method in class com.example.vitabu.User
-
The setter for the user's email
- setISBN(String) - Method in class com.example.vitabu.Book
-
The setter for the ISBN of the book.
- setJoinDate(Date) - Method in class com.example.vitabu.LocalUser
-
The setter for the date when the user joined
- setJoinDate(Date) - Method in class com.example.vitabu.User
-
The setter for the date when the user joined the platform.
- setJoinDate(Date) - Method in class com.example.vitabu.UserAbstract
-
- setLat(double) - Method in class com.example.vitabu.Location
-
The setter for the lat.
- setLng(double) - Method in class com.example.vitabu.Location
-
The setter for the lat.
- setLocation(Location) - Method in class com.example.vitabu.LocalUser
-
The setter for the user's general location.
- setLocation(Location) - Method in class com.example.vitabu.User
-
The setter for the location of the user.
- setLocation(Location) - Method in class com.example.vitabu.UserAbstract
-
- setMeetingActivity - Class in com.example.vitabu
-
- setMeetingActivity() - Constructor for class com.example.vitabu.setMeetingActivity
-
- setMessage(String) - Method in class com.example.vitabu.Notification
-
The setter for the message in the notification.
- setNotificationid(String) - Method in class com.example.vitabu.Notification
-
The setter for the notification's ID
- setNumBorrowerReviews(int) - Method in class com.example.vitabu.LocalUser
-
The setter for the number of owner reviews of the user.
- setNumBorrowerReviews(int) - Method in class com.example.vitabu.User
-
The setter for the number of owner reviews of the user.
- setNumBorrowerReviews(int) - Method in class com.example.vitabu.UserAbstract
-
- setNumOwnerReviews(int) - Method in class com.example.vitabu.LocalUser
-
The setter for the number of owner reviews of the user.
- setNumOwnerReviews(int) - Method in class com.example.vitabu.User
-
The setter for the number of owner reviews of the user.
- setNumOwnerReviews(int) - Method in class com.example.vitabu.UserAbstract
-
- setOnItemClickListener(acceptBookRequestsRecyclerViewAdapter.OnItemClickListener) - Method in class com.example.vitabu.acceptBookRequestsRecyclerViewAdapter
-
- setOnItemClickListener(searchBookResultsRecyclerViewAdapter.OnItemClickListener) - Method in class com.example.vitabu.searchBookResultsRecyclerViewAdapter
-
- setOwnerEmail(String) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the Owner's email
- setOwnerName(String) - Method in class com.example.vitabu.Book
-
The setter for the owner's username of the book.
- setOwnerName(String) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the owner's username
- setOwnerName(String) - Method in class com.example.vitabu.Review
-
The setter for the username of the Owner of the book
- setOwnerNotes(String) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the Owner's notes
- setOwnerPhoneNumber(String) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the Owner's phone number
- setOwnerRating(float) - Method in class com.example.vitabu.LocalUser
-
The setter for the user's owner rating.
- setOwnerRating(float) - Method in class com.example.vitabu.User
-
The setter for the owner rating of the user.
- setOwnerRating(float) - Method in class com.example.vitabu.UserAbstract
-
- setPickUpLocation(Location) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the pickup location.
- setProvinceOrState(String) - Method in class com.example.vitabu.Location
-
The setter for the province
- setRating(float) - Method in class com.example.vitabu.Review
-
This is a setter for the rating that only permits the rating to be within a specific range of
values.
- setRecordid(String) - Method in class com.example.vitabu.BorrowRecord
-
The setter for the ID of the record.
- setReviewFrom(String) - Method in class com.example.vitabu.Review
-
The setter for the reviewer's username
- setReviewid(String) - Method in class com.example.vitabu.Review
-
The setter for the review ID
- setReviewTo(String) - Method in class com.example.vitabu.Review
-
The setter for the username of the recipient of the review
- setSeen(boolean) - Method in class com.example.vitabu.Notification
-
The setter for the seen flag in the notification
- setStatus(String) - Method in class com.example.vitabu.Book
-
Can only set the status to one of the following: requested, accepted, borrowed, or available.
- setTitle(String) - Method in class com.example.vitabu.Book
-
The setter for the title of the book.
- setTitle(String) - Method in class com.example.vitabu.Notification
-
The setter for the title of the book pertaining to this notification
- setType(String) - Method in class com.example.vitabu.Notification
-
The setter for the type of notification
- setUp() - Method in class com.example.vitabu.AddBookTest
-
- setUp() - Method in class com.example.vitabu.BookInfoTest
-
- setUp() - Method in class com.example.vitabu.BrowseBooksTest
-
- setUp() - Method in class com.example.vitabu.EditProfileTest
-
- setUp() - Method in class com.example.vitabu.LoginTest
-
- setUp() - Method in class com.example.vitabu.MyBooksTest
-
- setUp() - Method in class com.example.vitabu.RegisterTest
-
- setUp() - Method in class com.example.vitabu.RequestsTest
-
- setUp() - Method in class com.example.vitabu.SearchTest
-
- setUserid(String) - Method in class com.example.vitabu.LocalUser
-
The setter for the user's userid.
- setUserid(String) - Method in class com.example.vitabu.User
-
The setter for the user's UserID
- setUserid(String) - Method in class com.example.vitabu.UserAbstract
-
- setUserName(String) - Method in class com.example.vitabu.LocalUser
-
This is the setter for the user's username.
- setUserName(String) - Method in class com.example.vitabu.Notification
-
The setter for the notification owner's username
- setUserName(String) - Method in class com.example.vitabu.User
-
The setter for the user's username
- setUserName(String) - Method in class com.example.vitabu.UserAbstract
-
- showDatePickerDialog(View) - Method in class com.example.vitabu.setMeetingActivity
-
Shows Date picker dialog.
- showTimePickerDialog(View) - Method in class com.example.vitabu.setMeetingActivity
-
Shows time picker dialog.
- signIn(String, String) - Method in class com.example.vitabu.MainActivity
-
Sign in user with firebase.
- signUp(Location, String, String, String) - Method in class com.example.vitabu.registerActivity
-
This method attempts to register a user with the provided information.
- signUpFail() - Method in class com.example.vitabu.registerActivity
-
- signUpSuccess() - Method in class com.example.vitabu.registerActivity
-
- start() - Method in class com.example.vitabu.AddBookTest
-
- start() - Method in class com.example.vitabu.BookInfoTest
-
- start() - Method in class com.example.vitabu.BrowseBooksTest
-
- start() - Method in class com.example.vitabu.EditProfileTest
-
- start() - Method in class com.example.vitabu.LoginTest
-
- start() - Method in class com.example.vitabu.MyBooksTest
-
- start() - Method in class com.example.vitabu.RegisterTest
-
- start() - Method in class com.example.vitabu.RequestsTest
-
- start() - Method in class com.example.vitabu.SearchTest
-
- startAcceptBookRequestActivity(Book) - Method in class com.example.vitabu.NotificationsFragment
-
- startBackgroundThread() - Method in class com.example.vitabu.ISBNActivity
-
- startBrowseBooksActivity() - Method in class com.example.vitabu.MainActivity
-
- startReviewActivity(Notification) - Method in class com.example.vitabu.NotificationsFragment
-
- status - Variable in class com.example.vitabu.searchBookResultsRecyclerViewAdapter.ViewHolder
-
- stopBackgroundThread() - Method in class com.example.vitabu.ISBNActivity
-


SpiceJet, Emirates sign codeshare agreement for flight ticket bookings
While passengers of Emirates will be able to access the SpiceJet network first from early 2020, SpiceJet passengers travelling from India to Dubai will also be able to access Emirates' network
by Press Trust of IndiaSpiceJet on Monday said it has signed a codeshare agreement with Emirates that will allow passengers of the Dubai-based airline to book tickets on the Indian budget carrier using Emirates' ticketing system from early 2020.
"The codeshare agreement means travellers from across the globe can book a single ticket with attractive fares to any of Emirates' nine points across India and connect onwards to 172 domestic routes that are part of SpiceJet's network," the Indian budget carrier said in a press release.
While passengers of Emirates will be able to access the SpiceJet network first from early 2020, SpiceJet passengers travelling from India to Dubai will also be able to access Emirates' expansive network later, opening up multiple international connections for them.


Contact<EMAIL_ADDRESS>Each actor should do one thing and one thing only. If actors follow SRP principle then it becomes easier to define fault strategy.
Save guard your sensitive data. If an actor stores an application state you don't want to loose make sure you don't perform any risky operation inside that actor.
Inject explicit supervisor actor to the actor hierarchy to have fine-grained control over supervisor strategy
Most common approach of work distribution in akka world is push based but in reality pull based workers scale better
Blocking operations should be avoided but if you have to have them make sure you use separate dispatchers for them
Actors are great when you need work distribution and mutable state. Futures are great you want to compose small asynchronous operations
Implement business logic in separate traits so they are easily testable.
Akka pattern is a general reusable solution to commonly occurring scalability problems faced by real world Akka applications.
Its a template used in various situations to solve a particular scalability problem. Each pattern can have many implementations.
Discuss possible options
TODO
TODO
TODO
TODO


{{checked}}
Choose another owner
{% for owner in owners %}
{% endfor %}
{{owner.login}}
/
{{checkedRepo}}
Choose repository
{% for repo in repos %}
{% endfor %}
{{repo.name}}


Customer Details
First Name
Last Name
Male
Female
Other
Preferred contact method Email
Phone
Email
Phone
Varna
Sofia
Plovdiv
Age
Programming language
Java
PHP
C#
JavaScript
Python
Ruby
Other
I agree the Terms and Conditions


Salmon Cookies
Home of the origional "Cho-CoHo-Chip Cookie!"
Tackle Shop
Checkout our latest Merch! Stock is is first come first serve and sellsout fast, make sure to sign up for our mailing list to get notifications when your favorites are back in-stock.
About Salmon Cookies!
Salmon Cookies is a PNW based company out of Seattle Washington, dedicated to our high quality design and all natural ingredients. Our designs are inspired by the beautiful King, Chinook and CoHo salmon that roam that call the Oceans and Rivers on Washington home. Come into any of our locations and ask us about how you can get involved in protecting and conserving the species and ecosystems.
Looking to find out more?
Poke around our site. We have an interactive sales table that lets you submit your own Salmon Cookies location and see how it stacks up.


Data and ontologies in the KB were last updated on February 4, 2019.
| Annotated matrices: | {{annotationSummary.annotated_matrices}} |
| Annotated taxa: | {{annotationSummary.annotated_taxa}} |
| Annotated characters: | {{annotationSummary.annotated_characters}} |
| Annotated character states: | {{annotationSummary.annotated_states}} |
Available at GitHub in NeXML format.
A character annotation report is available for all the NeXML data loaded into the KB.
Logical relationships expressed in ontologies tie together everything in the Knowledgebase and drive functionality. The KB includes and builds on these community-developed ontologies:
All the software developed by the Phenoscape project is open source and available at GitHub.
Organism silhouettes are courtesy of PhyloPic. In particular, we thank artists Madeleine Price Ball and Sarah Werning.


HeartSocket Overlay Url Builder
Use this form to generate a url that you can paste in OBS browser url
Websocket URI
Overlay file
Basic
Monitor
Responsive Graph
Beat Saber
Overlay file
Copy to Clipboad
If you like Heartsocket


Portfolio Gallery
Emily Morgan's Work
Logo Design
UI/UX, Portfolio
Logo Design
UI/UX, Portfolio
Illustrated Flower
Illustrations, Portfolio
Logo Designs
UI/UX, Portfolio
Logo Design
UI/UX, Portfolio
Illustration of a Woman
Illustrations, Portfolio
3D artwork
3D Design, Portfolio


| # | Who | = | Penalty | * | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | nimiranio | 6 | 140 | + 00:07 | + 00:07 | + 00:13 | + 00:21 | + 00:30 | + 01:02 | |
| 2 | aLOVEz_Dinosaur | 6 | 192 | + 00:04 | + 00:10 | + 00:16 | + 00:31 | +1 00:53 | + 01:08 | |
| 3 | aniket025 | 6 | 229 | +1 00:05 | + 00:12 | + 00:18 | + 00:32 | +1 01:23 | + 00:59 | |
| 4 | aaronnaidu | 6 | 234 | + 00:06 | + 00:15 | +1 00:27 | + 00:35 | + 00:53 | + 01:28 | |
| 5 | zenitsu_ | 6 | 243 | + 00:03 | + 00:24 | + 00:20 | + 00:33 | + 01:04 | +1 01:29 | |
| 6 | LLL564 | 6 | 256 | + 00:03 | + 00:11 | + 00:21 | + 00:32 | + 01:04 | +1 01:55 | |
| 7 | sthfaceless | 6 | 266 | + 00:04 | + 00:12 | + 00:23 | + 00:39 | +1 01:02 | +1 01:46 | |
| 8 | OutragedOmar | 6 | 271 | + 00:04 | + 00:13 | + 00:18 | + 00:26 | +2 01:51 | +1 01:09 | |
| 9 | Iogey | 6 | 283 | + 00:03 | + 00:10 | + 00:21 | + 00:36 | +1 01:48 | +2 01:15 | |
| 10 | claristxdy | 6 | 287 | + 00:03 | + 00:10 | + 00:18 | + 00:34 | +2 02:01 | +1 01:11 | |
| 11 | KareninAA | 6 | 304 | + 00:06 | + 00:15 | +1 00:24 | +1 00:51 | + 01:21 | + 01:47 | |
| 12 | -is-this-purple- | 6 | 307 | + 00:03 | + 00:09 | +1 00:32 | + 00:46 | + 01:11 | +1 02:06 | |
| 13 | v01dieJESUZz | 6 | 310 | +2 00:08 | + 00:18 | +2 00:40 | + 00:35 | +1 00:26 | +2 01:53 | |
| 14 | AssWeCan2020 | 6 | 316 | + 00:03 | + 00:12 | + 00:19 | + 00:39 | +1 01:26 | +2 02:07 | |
| 15 | ILLENIUM2 | 6 | 318 | + 00:02 | + 00:12 | + 00:18 | + 00:36 | +5 01:59 | +1 01:11 | |
| 16 | Ishbaev | 6 | 320 | + 00:03 | + 00:26 | + 00:35 | + 00:48 | + 01:48 | + 01:40 | |
| 17 | liyunfan1223 | 6 | 334 | + 00:07 | + 00:16 | + 00:27 | + 00:39 | +2 01:23 | +2 02:02 | |
| 18 | pavveu | 6 | 338 | + 00:05 | + 00:15 | + 00:25 | + 00:42 | +1 01:48 | +1 02:03 | |
| 18 | B4D0 | 6 | 338 | +1 00:05 | + 00:13 | +2 00:41 | +2 00:39 | +1 01:46 | + 01:14 | |
| 20 | KellyLu | 6 | 348 | + 00:04 | + 00:16 | +1 00:25 | + 00:44 | +3 01:29 | +1 02:00 | |
| 21 | nemshri | 6 | 362 | +2 00:09 | + 00:15 | +2 00:32 | + 00:57 | +1 01:54 | + 01:25 | |
| 22 | Muhammad_Hokimiyon | 6 | 370 | +1 00:04 | + 00:21 | +4 00:23 | +2 00:39 | + 02:00 | +1 01:23 | |
| 23 | fan_of_potter | 6 | 396 | + 00:13 | + 00:24 | + 00:37 | + 01:46 | + 02:06 | + 01:30 | |
| 24 | ufds_siiii | 5 | 114 | + 00:02 | + 00:07 | +1 00:17 | + 00:27 | + 00:51 | -1 | |
| 25 | Top1Top1Top1Top1 | 5 | 120 | +1 00:11 | + 00:09 | + 00:18 | + 00:24 | -1 | + 00:48 | |
| 26 | RIPinPeace | 5 | 125 | + 00:02 | + 00:07 | +1 00:19 | + 00:29 | + 00:58 | -1 | |
| 27 | IOIchik | 5 | 137 | + 00:02 | + 00:06 | +1 00:12 | +1 00:19 | +2 00:58 | -2 | |
| 27 | My_password_is_qwerty123 | 5 | 137 | + 00:08 | + 00:06 | + 00:19 | + 00:28 | +2 00:56 | ||
| 29 | Yakudza | 5 | 138 | + 00:02 | + 00:07 | +1 00:11 | + 00:34 | + 01:14 | ||
| 30 | _HossamYehia_ | 5 | 146 | +3 | + 00:04 | + 00:16 | + 00:24 | + 00:37 | -2 | + 01:05 |
| 31 | 25_din_me_paisa_double | 5 | 149 | + 00:03 | + 00:09 | + 00:19 | + 00:29 | +2 01:09 | -1 | |
| 32 | PaciukZvichainyi | 5 | 153 | -2 | + 00:02 | + 00:09 | +1 00:20 | + 00:32 | + 01:20 | |
| 33 | achibulup | 5 | 155 | + 00:27 | + 00:38 | + 00:08 | + 00:21 | + 01:01 | -2 | |
| 34 | -.-Ache-.- | 5 | 159 | + 00:04 | + 00:10 | +1 00:18 | + 00:30 | +2 01:07 | ||
| 35 | longlong233 | 5 | 163 | +1 00:05 | + 00:13 | + 00:25 | + 00:37 | + 01:13 | ||
| 36 | dm99 | 5 | 164 | + 00:07 | + 00:18 | + 00:28 | + 00:42 | + 01:09 | -1 | |
| 37 | timaktimak | 5 | 166 | + 00:08 | + 00:16 | + 00:24 | + 00:40 | + 01:18 | ||
| 38 | Mohd. | 5 | 175 | + 00:05 | + 00:11 | + 00:18 | + 00:48 | +1 01:23 | ||
| 39 | Anemone | 5 | 179 | + 00:07 | + 00:17 | + 00:29 | + 00:42 | + 01:24 | ||
| 40 | ZADaCHI | 5 | 181 | + 00:07 | + 00:15 | + 00:21 | + 00:48 | + 01:30 | -2 | |
| 41 | Night_Kitten | 5 | 183 | + 00:03 | + 00:13 | + 00:27 | + 00:49 | + 01:31 | ||
| 42 | SuperMadMan | 5 | 184 | + 00:03 | + 00:20 | + 00:32 | + 00:42 | -6 | +2 01:07 | |
| 42 | bntti | 5 | 184 | +1 00:06 | + 00:12 | + 00:18 | + 00:33 | -4 | +1 01:35 | |
| 44 | Ziware | 5 | 188 | + 00:03 | + 00:12 | + 00:17 | + 00:36 | +2 01:40 | ||
| 44 | AhooraBozorgManesh | 5 | 188 | + 00:03 | + 00:11 | + 00:19 | + 00:38 | +2 01:37 | ||
| 46 | bigspot | 5 | 195 | + 00:03 | + 00:13 | + 00:26 | + 00:45 | +2 01:28 | ||
| 47 | Mathematician2000 | 5 | 200 | + 00:04 | + 00:10 | + 00:17 | + 00:47 | -2 | +1 01:52 | |
| 47 | egardoz01 | 5 | 200 | +1 00:06 | + 00:13 | + 00:23 | + 00:32 | +2 01:36 | ||
| 49 | cckk4467 | 5 | 201 | +1 00:04 | + 00:14 | + 00:26 | + 00:52 | + 01:35 | ||
| 50 | NCWu_dabo | 5 | 205 | + 00:06 | + 00:23 | + 00:07 | + 00:48 | +1 01:51 | ||
| 51 | tourist_2.0 | 5 | 208 | + 00:05 | + 00:18 | + 00:34 | + 00:50 | + 01:41 | ||
| 52 | mini4141 | 5 | 211 | +1 00:07 | + 00:18 | + 00:36 | + 00:52 | + 01:28 | ||
| 53 | pyonsu | 5 | 213 | + 00:04 | + 00:18 | +1 00:38 | + 00:46 | -2 | + 01:37 | |
| 54 | arnbt | 5 | 216 | +1 00:06 | + 00:16 | + 00:25 | + 00:41 | + 01:58 | ||
| 54 | coding_panda | 5 | 216 | + 00:04 | + 00:23 | + 00:11 | +2 00:53 | + 01:45 | ||
| 56 | Daniel19Frenzy | 5 | 218 | + 00:04 | + 00:13 | + 00:28 | +3 00:53 | + 01:30 | ||
| 56 | blaze.kick | 5 | 218 | +1 00:10 | + 00:19 | +2 00:30 | + 00:41 | + 01:28 | ||
| 56 | cui010 | 5 | 218 | + 00:04 | + 00:14 | +1 00:25 | +1 01:08 | -1 | + 01:27 | |
| 59 | humblefoolboi | 5 | 220 | +1 00:04 | + 00:11 | +3 00:32 | + 00:52 | + 01:21 | ||
| 59 | zzq236 | 5 | 220 | + 00:02 | + 00:11 | +1 00:26 | + 00:43 | +2 01:48 | ||
| 59 | ttiiaann32 | 5 | 220 | + 00:04 | + 00:10 | +2 00:31 | + 00:47 | +2 01:28 | -1 | |
| 62 | Kishan1432000 | 5 | 221 | + 00:16 | + 00:24 | + 00:08 | + 00:38 | +3 01:45 | ||
| 63 | Chthollypipishan | 5 | 222 | + 00:06 | + 00:13 | + 00:18 | +1 01:14 | + 01:41 | ||
| 64 | avicii | 5 | 223 | + 00:02 | + 00:11 | + 00:32 | + 00:59 | +1 01:49 | ||
| 64 | rainbowbunny | 5 | 223 | + 00:06 | + 00:14 | + 00:19 | + 00:36 | +3 01:58 | ||
| 64 | Astronomax | 5 | 223 | + 00:02 | +1 00:14 | + 00:20 | +1 00:50 | +1 01:47 | ||
| 67 | ArtemStep | 5 | 224 | + 00:06 | + 00:14 | + 00:21 | + 01:06 | +1 01:47 | ||
| 68 | The_Atheist | 5 | 225 | + 00:06 | + 00:27 | + 00:35 | + 00:54 | +1 01:33 | ||
| 69 | Savcev | 5 | 227 | + 00:02 | + 00:09 | + 00:15 | +1 01:02 | +1 01:59 | ||
| 70 | proBoi | 5 | 228 | + 00:04 | + 00:29 | + 00:17 | + 00:43 | +1 02:05 | ||
| 71 | GrumpyLama | 5 | 230 | + 00:06 | + 00:17 | + 00:29 | + 00:56 | +1 01:52 | ||
| 71 | oceanlin | 5 | 230 | + 00:05 | + 00:16 | + 00:28 | + 00:52 | + 02:09 | ||
| 71 | moody_moose | 5 | 230 | +1 : -1 | +1 00:04 | + 00:10 | + 00:17 | +1 01:01 | + 01:58 | |
| 74 | -SHINIGAMI- | 5 | 231 | + 00:05 | + 00:19 | + 00:28 | + 00:55 | +2 01:44 | ||
| 75 | aman239843 | 5 | 232 | + 00:04 | + 00:17 | + 00:33 | + 00:50 | +1 01:58 | ||
| 76 | Shiroishi | 5 | 233 | +1 00:04 | + 00:09 | +1 00:28 | + 00:50 | +2 01:42 | ||
| 77 | Bob2006 | 5 | 234 | +1 00:07 | + 00:25 | +4 00:45 | + 00:19 | +2 01:08 | ||
| 78 | shivamsalil | 5 | 235 | +1 00:05 | + 00:15 | + 00:27 | + 01:02 | +1 01:46 | ||
| 79 | wmxwmx | 5 | 239 | + 00:04 | + 00:18 | + 00:40 | + 01:10 | + 01:47 | ||
| 79 | _vagabond | 5 | 239 | + 00:08 | + 00:26 | + 00:32 | + 00:46 | +1 01:57 | ||
| 79 | Arscool | 5 | 239 | +1 00:07 | + 00:21 | + 00:31 | + 01:01 | + 01:49 | ||
| 79 | infixint943 | 5 | 239 | + 00:06 | + 00:14 | + 00:23 | +1 00:38 | +3 01:58 | ||
| 83 | asdfrgsass | 5 | 240 | + 00:02 | + 00:07 | + 00:27 | +1 00:59 | +2 01:55 | ||
| 83 | jonatas57 | 5 | 240 | + 00:02 | + 00:10 | +2 00:36 | + 00:49 | +2 01:43 | ||
| 85 | DDDickWWW | 5 | 241 | + 00:11 | + 00:21 | + 00:17 | + 00:57 | +1 02:05 | ||
| 86 | Theofratus | 5 | 242 | + 00:07 | + 00:15 | +1 00:42 | + 00:59 | +1 01:39 | ||
| 86 | umiraito1 | 5 | 242 | + 00:06 | + 00:17 | + 00:27 | +1 01:04 | + 01:58 | ||
| 86 | Triple-H | 5 | 242 | + 00:06 | + 00:15 | + 00:43 | + 00:59 | + 01:59 | ||
| 86 | Liviu2000 | 5 | 242 | +1 00:08 | + 00:18 | + 00:29 | + 00:51 | +2 01:46 | ||
| 90 | wegame10086 | 5 | 244 | + 00:03 | + 00:14 | + 00:21 | +1 00:51 | +2 02:05 | -1 | |
| 91 | minoum | 5 | 246 | + 00:07 | + 00:23 | +1 00:41 | + 00:54 | +1 01:41 | ||
| 92 | zhangwen123 | 5 | 249 | +1 00:10 | + 00:40 | + 00:31 | + 01:22 | +1 01:06 | ||
| 93 | aps552 | 5 | 250 | + 00:04 | + 00:12 | + 00:17 | +4 00:53 | +1 01:54 | ||
| 93 | xiaohejun | 5 | 250 | +1 00:08 | + 00:21 | + 00:32 | + 01:04 | + 01:55 | ||
| 95 | shubham_364 | 5 | 251 | + 00:06 | + 00:16 | + 00:43 | + 01:11 | + 01:55 | ||
| 96 | XY_py | 5 | 253 | + 00:04 | + 00:16 | + 00:37 | + 00:56 | +2 02:00 | ||
| 96 | ElyesChaabouni | 5 | 253 | + 00:04 | + 00:16 | +1 00:45 | + 00:56 | +1 01:52 | ||
| 96 | Dark_Coder31 | 5 | 253 | + 00:06 | + 00:17 | + 00:32 | + 00:49 | +2 02:09 | ||
| 99 | Shahidul1004 | 5 | 254 | + 00:05 | + 00:19 | + 00:36 | + 01:09 | + 02:05 | ||
| 99 | Black_berry | 5 | 254 | + 00:03 | + 00:12 | +1 00:38 | + 01:10 | + 02:01 | ||
| 101 | LanFromJapan | 5 | 256 | + 00:05 | + 00:14 | + 00:22 | +1 00:50 | +4 01:55 | ||
| 101 | 1q2w3e4r5t | 5 | 256 | + 00:06 | + 00:18 | + 00:35 | + 01:06 | +1 02:01 | ||
| 103 | Luzivanlt | 5 | 260 | + 00:30 | + 00:26 | +1 00:08 | + 00:39 | +3 01:57 | ||
| 103 | nChurgulia | 5 | 260 | + 00:02 | + 00:10 | +2 00:30 | + 00:50 | +4 01:48 | ||
| 105 | SI_AM | 5 | 262 | + 00:04 | + 00:18 | + 00:43 | + 01:19 | + 01:58 | ||
| 106 | jalalium | 5 | 263 | + 00:03 | + 00:13 | + 00:37 | +1 01:10 | +1 02:00 | ||
| 106 | Juvitus | 5 | 263 | + 00:03 | + 00:43 | +1 00:16 | + 00:54 | +1 02:07 | ||
| 106 | anik_ewu | 5 | 263 | + 00:09 | + 00:21 | + 00:37 | + 01:03 | +1 02:03 | ||
| 109 | H4XX | 5 | 265 | +1 00:07 | + 00:19 | + 00:30 | +1 01:02 | + 02:07 | ||
| 110 | streaker_rules | 5 | 266 | + 00:04 | + 00:19 | +1 00:40 | + 00:55 | +1 02:08 | ||
| 110 | sarthakag | 5 | 266 | + 00:03 | + 00:15 | +2 00:37 | + 00:52 | +2 01:59 | ||
| 112 | Prunus | 5 | 270 | + 00:03 | + 00:17 | +2 00:40 | + 00:58 | +1 02:02 | ||
| 112 | maria_atmazhitova | 5 | 270 | + 00:04 | + 00:40 | + 00:18 | + 01:09 | +2 01:59 | ||
| 114 | lemg | 5 | 271 | + 00:06 | + 00:19 | +1 00:38 | + 00:59 | +2 01:59 | ||
| 115 | YJJ_Konnyaku | 5 | 272 | + 00:06 | + 00:15 | +2 01:03 | + 00:41 | +1 01:57 | ||
| 116 | i_miss_littlestar | 5 | 273 | +1 00:04 | + 00:12 | +1 00:23 | +1 01:00 | +2 02:04 | ||
| 117 | nikeshthapa255 | 5 | 276 | +1 00:06 | + 00:18 | + 00:28 | + 01:26 | +1 01:58 | ||
| 118 | charlotte_lxy | 5 | 279 | + 00:09 | + 00:35 | +1 00:55 | + 00:43 | + 02:07 | ||
| 119 | deadpool66 | 5 | 280 | +1 00:08 | + 00:25 | + 00:40 | +1 01:54 | + 01:13 | ||
| 120 | Mohamed_Saad62 | 5 | 281 | + 00:06 | + 00:18 | + 00:33 | + 01:06 | +3 02:08 | ||
| 121 | geekpradd | 5 | 282 | + 00:04 | + 00:40 | +1 00:33 | + 01:03 | +2 01:52 | ||
| 122 | octocoder | 5 | 284 | + 00:06 | + 00:20 | + 00:33 | +4 00:54 | -1 | +1 02:01 | |
| 122 | epascual_v2 | 5 | 284 | +1 00:06 | + 00:17 | + 00:38 | +2 01:01 | +1 02:02 | ||
| 124 | denmen0207 | 5 | 285 | + 00:05 | + 00:15 | +1 00:44 | +1 01:07 | +2 01:54 | ||
| 125 | Kavit_Kheni | 5 | 286 | +1 00:04 | + 00:22 | + 00:31 | + 01:12 | +2 02:07 | ||
| 126 | xtd | 5 | 287 | + 00:06 | + 00:35 | + 00:36 | + 01:41 | +1 01:39 | ||
| 126 | WillAchieveTheImpossible | 5 | 287 | +1 00:04 | + 00:12 | + 00:18 | + 00:41 | +8 02:02 | ||
| 128 | O_Iq | 5 | 288 | +1 00:12 | + 00:36 | + 00:23 | + 01:02 | +2 02:05 | ||
| 129 | Ahmed_Nabiiil | 5 | 292 | + 00:05 | + 00:17 | +2 00:47 | + 01:05 | +1 02:08 | ||
| 129 | ewaoneup | 5 | 292 | + 00:03 | +1 00:27 | + 00:40 | + 00:55 | +3 02:07 | ||
| 131 | BaseAI | 5 | 294 | +1 01:08 | + 00:13 | + 00:29 | + 00:50 | +1 01:54 | ||
| 131 | Exile_2k4 | 5 | 294 | + 00:04 | + 00:19 | + 00:29 | +3 01:23 | +1 01:59 | ||
| 133 | LukalukaXXX | 5 | 298 | +1 00:08 | + 00:38 | +1 00:21 | + 01:15 | +1 02:06 | ||
| 134 | vladpower | 5 | 299 | + 00:05 | + 00:20 | +2 00:54 | + 01:06 | +1 02:04 | ||
| 135 | BBang3 | 5 | 305 | + 00:05 | + 00:24 | +1 00:52 | + 01:26 | + 02:08 | ||
| 136 | alamin_tushar | 5 | 310 | + 00:06 | + 00:19 | +1 00:40 | +2 01:27 | + 02:08 | ||
| 137 | gustavo_m32 | 5 | 314 | + 00:09 | + 00:22 | +3 00:57 | + 01:12 | +1 01:54 | ||
| 138 | islingr | 5 | 316 | + 00:38 | + 00:49 | + 01:01 | +2 01:54 | + 00:34 | ||
| 138 | AIchilajiang | 5 | 316 | + 00:08 | + 00:55 | +1 00:46 | + 01:10 | + 02:07 | ||
| 138 | ijevtic | 5 | 316 | + 00:03 | + 00:12 | +1 00:56 | + 01:37 | +1 02:08 | ||
| 141 | Rajdeep | 5 | 317 | + 00:13 | + 00:48 | + 00:55 | + 01:25 | + 01:56 | ||
| 142 | VirtualApple | 5 | 319 | + 00:03 | + 00:15 | +3 00:53 | + 01:21 | +1 02:07 | ||
| 143 | __psy__cho | 5 | 324 | + 00:05 | + 00:19 | +3 01:01 | + 01:20 | +1 01:59 | ||
| 144 | BlueClover | 5 | 330 | +1 00:07 | + 00:19 | + 00:33 | +3 01:35 | +1 02:06 | ||
| 145 | bluesquanium | 5 | 331 | +1 00:11 | + 00:20 | +2 02:00 | + 00:41 | +2 01:29 | ||
| 146 | youdieorniggas | 5 | 335 | + 01:20 | + 01:34 | + 01:13 | + 00:35 | -6 | +3 00:23 | |
| 147 | naksh9619_ | 5 | 338 | + 00:04 | + 00:25 | +1 00:58 | +3 01:25 | + 02:06 | ||
| 148 | apikdech | 5 | 351 | + 00:05 | + 00:20 | +4 00:53 | +1 01:26 | +1 02:07 | ||
| 148 | forgotter | 5 | 351 | + 00:34 | + 01:00 | +3 00:25 | + 01:26 | + 01:56 | ||
| 150 | Boortsog | 5 | 362 | + 00:23 | +1 00:27 | + 01:13 | + 01:46 | + 02:03 | -1 | |
| 151 | yez-zain | 5 | 363 | +1 00:08 | + 00:23 | +2 01:02 | + 01:51 | + 02:09 | ||
| 152 | avnitjnkol | 5 | 369 | +1 00:27 | + 00:38 | + 00:22 | +5 01:15 | +3 01:57 | ||
| 153 | tin2016_tdduy | 5 | 380 | + 00:05 | + 00:14 | +4 01:19 | + 01:48 | +1 02:04 | ||
| 154 | karan_noob | 5 | 383 | +1 00:19 | +2 01:00 | + 00:55 | +1 01:33 | + 01:56 | ||
| 155 | Messiah_10 | 5 | 398 | +4 00:20 | + 01:08 | +1 00:39 | + 02:05 | + 01:36 | ||
| 156 | LOlPop | 5 | 406 | +2 00:23 | + 00:31 | +1 00:40 | +1 01:04 | +8 02:08 | ||
| 156 | MDario123 | 5 | 406 | +1 01:24 | + 01:00 | + 01:33 | + 02:04 | + 00:35 | ||
| 158 | Crz-Willis | 5 | 413 | + 00:11 | + 00:44 | +5 01:58 | + 01:24 | +2 01:26 | ||
| 159 | ngot23 | 5 | 417 | + 01:31 | +1 01:39 | + 01:11 | + 01:47 | -2 | +2 00:19 | |
| 160 | _HeWhoMustNotBeNamed_ | 5 | 433 | +1 00:06 | +8 01:01 | + 01:08 | + 01:23 | + 02:05 | ||
| 161 | dlz666 | 5 | 450 | +2 00:45 | + 01:07 | +1 00:55 | +1 02:05 | +1 01:48 | ||
| 162 | demon12321 | 4 | 61 | + 00:03 | + 00:09 | + 00:17 | + 00:32 | -5 | ||
| 163 | .resQ | 4 | 65 | + 00:04 | + 00:12 | + 00:19 | + 00:30 | |||
| 164 | Mew | 4 | 73 | + 00:03 | + 00:18 | + 00:08 | + 00:44 | |||
| 164 | SlDE | 4 | 73 | + 00:06 | + 00:14 | + 00:21 | + 00:32 | -2 | ||
| 166 | Saraw | 4 | 74 | + 00:04 | + 00:14 | + 00:21 | + 00:35 | -6 | ||
| 167 | Fukuzatsu | 4 | 75 | + 00:02 | + 00:10 | + 00:15 | + 00:48 | -4 | ||
| 168 | Azamat | 4 | 77 | + 00:06 | + 00:13 | + 00:23 | + 00:35 | -3 | ||
| 169 | Matteo.Verz | 4 | 79 | + 00:01 | + 00:07 | + 00:24 | + 00:47 | -4 | ||
| 170 | Sho10 | 4 | 80 | + 00:02 | + 00:26 | + 00:12 | + 00:40 | -1 | ||
| 170 | ZUFECJJ | 4 | 80 | + 00:03 | + 00:12 | + 00:20 | +1 00:35 | -4 | ||
| 172 | lokilaggy | 4 | 83 | + 00:03 | + 00:09 | + 00:28 | + 00:43 | -2 | ||
| 172 | desmond_kaneki | 4 | 83 | + 00:03 | + 00:12 | + 00:20 | + 00:48 | -1 | ||
| 172 | veerappan | 4 | 83 | +1 00:12 | + 00:19 | + 00:09 | + 00:33 | -2 | ||
| 175 | Momo_zzz | 4 | 84 | + 00:04 | + 00:15 | + 00:24 | + 00:41 | -4 | ||
| 176 | devalfa | 4 | 87 | + 00:04 | + 00:13 | + 00:23 | + 00:47 | |||
| 176 | WGree | 4 | 87 | + 00:04 | + 00:14 | + 00:20 | +1 00:39 | -1 | ||
| 178 | anshul_jindal | 4 | 88 | + 00:04 | + 00:27 | + 00:13 | + 00:44 | |||
| 178 | kawara_y | 4 | 88 | + 00:04 | + 00:11 | + 00:25 | + 00:48 | -2 | -1 | |
| 180 | Dilshod--Imomov | 4 | 89 | + 00:04 | + 00:17 | + 00:23 | + 00:45 | -1 | ||
| 180 | nhuvinhpro123 | 4 | 89 | + 00:04 | + 00:10 | + 00:20 | + 00:55 | |||
| 180 | ChiliAct | 4 | 89 | + 00:05 | + 00:15 | + 00:26 | + 00:43 | -4 | ||
| 183 | IamL | 4 | 91 | + 00:02 | + 00:11 | +1 00:28 | + 00:40 | |||
| 184 | Eng.Zayady | 4 | 92 | + 00:04 | + 00:15 | + 00:26 | + 00:47 | |||
| 185 | BDFCL | 4 | 93 | + 00:05 | + 00:18 | + 00:29 | + 00:41 | -5 | ||
| 186 | cool__dude__69 | 4 | 95 | + 00:04 | + 00:16 | + 00:27 | + 00:48 | -2 | ||
| 187 | omega_k | 4 | 96 | + 00:03 | + 00:14 | + 00:27 | + 00:52 | -1 | ||
| 187 | JVM | 4 | 96 | + 00:05 | + 00:25 | + 00:17 | + 00:49 | -4 | ||
| 189 | _HonEy | 4 | 97 | + 00:04 | + 00:16 | + 00:30 | + 00:47 | |||
| 189 | Vimmer | 4 | 97 | -2 | + 00:02 | + 00:08 | + 00:14 | +3 00:43 | -3 | |
| 189 | 1234 | 4 | 97 | + 00:04 | + 00:15 | + 00:21 | + 00:57 | |||
| 192 | AceOfStrings | 4 | 98 | + 00:05 | + 00:16 | + 00:26 | + 00:51 | |||
| 193 | Hirky | 4 | 99 | +1 00:07 | + 00:15 | + 00:23 | + 00:44 | -5 | ||
| 193 | Mansurbek | 4 | 99 | + 00:04 | + 00:20 | + 00:11 | +1 00:54 | -3 | ||
| 195 | bennhatbapquan | 4 | 100 | + 00:04 | + 00:15 | +1 00:27 | + 00:44 | |||
| 195 | neverate | 4 | 100 | + 00:02 | + 00:15 | + 00:32 | + 00:51 | |||
| 195 | AsilenceBTF | 4 | 100 | + 00:05 | + 00:15 | + 00:23 | + 00:57 | |||
| 198 | Marshmalloc | 4 | 101 | +1 00:17 | + 00:13 | + 00:21 | + 00:40 | |||
| 198 | U__Square | 4 | 101 | + 00:03 | + 00:16 | + 00:28 | + 00:54 | |||
| 198 | Xuan | 4 | 101 | -1 | + 00:04 | + 00:11 | + 00:28 | + 00:58 | ||
|
Accepted
Tried |
6560 7150 |
4847 5259 |
3938 5400 |
1139 1768 |
132 305 |
104 188 |


Primaries and grays
Headings, body and other common text elements
“Here’s an insightful quote from the article that is worth isolating for emphasis.”
Lead Text Lead Link
Body Text Body Link
Small Text Small Link
Tiny Text Tiny LinkToggle element based on the Card for displaying discrete portions of information
Used for adding notices around the interface
Represent users or customers around the interface
A simple utility to transform an image into a background for an element.
Indicate the current page’s location within a navigational hierarchy
Structural component for displaying boxed content
Some quick example text to build on the card title and make up the bulk of the card's content.
Link HereSome quick example text to build on the card title and make up the bulk of the card's content.
Link HereSome quick example text to build on the card title and make up the bulk of the card's content.
Link HereDecorative elements to give your site some dynamic appeal
Styles for navigation and context dropdowns
Size and state variations for text inputs
Checkboxes, Radios and Select dropdowns
Common interface iconography. For all icons, see the Icons Reference
Common social network icons. For all icons, see the Icons Reference
Handy utilities for displaying icons around the interface. For all icons, see the Icons Reference
Preset arrangements for icons with associated content
A small encapsulated element based on the card. Displays small media items that generally live in a group.
Indicate a series of related content exists across multiple pages.
Display supplemental information upon click
Preset styles to imply depth on interface components
Navigational element responsible for toggling the display of content in a near-by container
Display supplemental information upon hover


Your question has been moderated
Ask a question
Upload Photos Toggle
Cancel
Your question has been updated
Upload Photos Toggle
Cancel


Read the documentation
Paste your HTML code below and click on the button to convert it to the PDFmake format:
Result:


Saveanalyst
Savefile:
Load save
Decoded save:
Encode save
UnJSONify save
You can also access the JSONified save by typing 'JSONsave' in the console.


--- layout: default title: Recipes image: "http://assets.eliduke.com/recipes/vegan-mac-and-cheese-4.jpg" excerpt: "This where I collect all of my most favorite recipes." ---


Clint Eastwood’s ‘Richard Jewell’ Faces Criticism Over Historical Accuracy
by Corey AtadClint Eastwood’s new movie hasn’t even premiered yet, but it’s already stirring up controversy.
“Richard Jewell”, which stars Paul Walter Hauser as a security guard falsely suspected of bombing the 1996 Olympics in Atlanta, is facing criticism from the Atlanta Journal-Constitution over the film’s portrayal of their reporting on the real life case.
The Wrap obtained a letter from AJC editor-in-chief Kevin G. Riley calling out the movie for key inaccuracies, including a scene in which reporter Kathy Scruggs is depicted trading sex with an FBI agent for a tip on the story, with Riley writing there is no evidence that actually took place.
Additionally, Riley disputed the film’s characterization that the AJC used questionable sourcing for its reporting.
“This is essential because the underlying theme of the movie is that the FBI and press are not to be trusted. Yet the way the press is portrayed often differs from reality,” Riley said. “As more and more filmmaking has come to Atlanta and Georgia, we’ve gotten a taste of just how difficult it can be to cover this industry. I share this information in the spirit of a fellow journalist who knows how crucial it remains to have solid information when covering demanding stories. It’s also ironic that a film purporting to hold the media to account disregards such crucial facts.”
Warner Bros. has not yet responded to Riley’s letter.
“Richard Jewell” hits theatres Dec. 13.


THE THIRTEENTH FLOOR (1999)
A film review by Steve Kong Edited by Steve Kong Copyright 1999 Steve Kong
What a difference time can make. Time is an important factor with The Thirteenth Floor. And it is with time that The Thirteenth Floor fails. The film runs too long and was released too late. These aren't its only failings though.
On the 13th floor of some corporate building, a project is being tested. This ultra-secret and ambitious project allows for people to jack into a computer-generated world. Are the people in the computer-generated world are so real that they could come out and hurt someone in the "real" world? The world generated by the computer is of Los Angeles around 1937.
The project is headed by Hammond (Armin Mueller-Stahl) Fuller and his right hand man Douglas (Craig Bierko) Hall. When someone murders Fuller, an LAPD detective, McBain (Dennis Haysbert) suspects that Hall is the murderer. Hall has everything to gain from the death of Fuller, including the whole company that Fuller started. But, things get more complicated as Fuller's daughter Jane (Getchen Mol) arrives in town to take control of the company.
The movie flips between the current time, which isn't specified, but I take it to be 1999, and the computer-generated 1937. And it is in these trips back and forth that The Thirteenth Floor makes its first time based error. The trips do not really serve much purpose, some of the travel does reveal information, but for the most part the travel is unneeded.
The murder mystery that is at the heart of the movie is flat. The romance that supposedly exists between Douglas and Jane fizzles. And thrill in the movie is rather tame. There are also a few attempts at some action sequences, but those are rather dull also.
The plot of the film is so meticulously setup that at about an hour into the film I was able to correctly predict how the film was going to end. The script by Josef Rusnak and Ravel Centeno-Rodriguez contain some good ideas, but all have already been covered and done by the more exciting and thrilling The Matrix. And because the ideas have been done before and done better, this is where The Thirteenth Floor makes its second time based error. The release time of The Thirteenth Floor was too late. While The Matrix is still doing well in the theatres, why would anyone go to see the mediocre at best The Thirteenth Floor?
The movie comes out of the production house of Roland Emmerich and Dean Devlin, the two guys who brought us Universal Soldier, Stargate, Independence Day, and Godzilla. Some may argue that I should have known better. For those of you who have read my Independence Day and Godzilla reviews, you know that I'm not a big of fan of anything that comes from Emmerich and Devlin. (For the record though, I did enjoy Stargate). So, why would I go see The Thirteenth Floor? One reason only: Getchen Mol.
Mol who didn't get enough to do in Rounders also gets relegated to doing not much in The Thirteenth Floor. That's too bad because I think that she's got great talent. If only someone in Hollywood will give her something worthwhile to work with. Mueller-Stahl is also not given enough material to work with. He is the best actor in this film and that's a waste of talent. Haysbert goes over-the-top with his portrayal of Detective McBain and it goes to his advantage. His McBain is one of the most memorable characters of the film because of Haysbert's performance.
As for the lead actor in the film, Bierko, that is one of the failings of the film. Bierko, who does a mean imitation of George Clooney, is bland and ineffective in his role. He has two types of onscreen emotions, angry or confused. Because Bierko is the point of view of the film, him being the weak link is a point against the film.
The one thing that I loved about the film is the cinematography. When you look at the film you can tell that the cinematographer, Wedigo von Schultzendorff, spent a lot of time with director, Josef Rusnak, planning out the look of the film. The distinct look of the 1937 world compared to the 1999 world is wonderful. The 1937 world is brown and colorless, it is also not a perfect recreation of the 1937 Los Angeles, but one of which Fuller remembers. The 1999 world is bluish-green and a bit more futurist looking than being set in the 1990s. Kudos to von Schultzendorff for a beautiful looking film.
Had The Thirteenth Floor been a shorter film and had been released a year or two earlier, it would be a film to recommend. But, at this point, what the film presents has been done and has been done better and there is nothing to recommend about this film. Should you see The Thirteenth Floor? No, don't see on the big screen nor on video for a good movie about alternate computer-generated realities, for that watch The Matrix. But, if you like Gretchen Mol or want to see some beautiful looking cinematography, then check out The Thirteenth Floor on video.
--- Steve Kong<EMAIL_ADDRESS>not all film critics are the same. i'm your hard boiled movie guide.
http://boiledmovies.sbay.com/
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Indianapolis Marathon
Indianapolis IN/USA
Race Winners
(20 runnings)
3:11:01 2:55:50 3:08:06 3:06:16.7 20 Oct
2007
2:34:46
3:15:34
21 Oct
2006
2:37:58
3:02:53
15 Oct
2005
2:47:15
3:08:58
16 Oct
2004
2:41:34
3:01:32
18 Oct
2003
2:35:33
3:12:39
19 Oct
2002
2:40:02
3:05:23
20 Oct
2001
2:35:20
3:14:08
07 Oct
2000
2:37:08
2:57:51
09 Oct
1999
2:30:32
3:05:13
10 Oct
1998
2:32:08
3:02:16
11 Oct
1997
2:39:33
3:12:16
12 Oct
1996
2:34:16
3:02:11
Notes: 1996 was the inaugural year. This race was acquired by the
Indianapolis Monumental Marathon and is being held as a half marathon.
17 Oct
2015
2:41:44
Fred Miller (USA)
3:04:40
Natalia Rivas (USA)
18 Oct
2014
2:48:03
Jonathan Damiano (USA)
2:54:47
Bonita Paul (RSA)
19 Oct
2013
2:44:24
Jason Barhorst (USA)
3:11:23
Lauren Manuel (USA)
20 Oct
2012
2:52:34
Anthony Klingler (USA)
3:14:09
Dianne Griesser (CO/USA)
15 Oct
2011
2:35:30
Andy Williams (USA)
Angela Homberg (USA)
16 Oct
2010
2:32:57
Tilahun Abebe (ETH)
Sarah Baysden (USA)
17 Oct
2009
2:38:07
Joshua Bland (IL/USA)
Kristine Huff (TN/USA)
18 Oct
2008
2:37:15.6
Chuck Engle-2
Cassie Peller (IN/USA)
Erik Bush (IL/USA)
Andrea Crapisi (IL/USA)
Matt Sweetman (IN/USA)
Katherine Demeritt (IN/USA)
Tim Ives (IA/USA)
Elizabeth Thomas (IN/USA)
Rick Sica (IN/USA)
Tracy Stewart (CO/USA)
Chuck Engle (MS/USA)
Diane Burgin (IL/USA)
Hunter Brock (IN/USA)
Tamara Whitten (IN/USA)
Michael Smith (IN/USA)
Tracy Gates (IN/USA)
Scott Colford (IN/USA)
Sarah Blossom (IN/USA)
Rudolph Jun (FL/CZE)
Suzanne Klapheke (KY/USA)
John Caie (OH/USA)
Patrice Carroll (TN/USA)
Tim Zanellato (IN/USA)
Kathy Casey-2
Steven Maslowski (IN/USA)
Kathy Casey (IN/USA)
Most Wins
(1996-date)
Men
2
Chuck Engle (OH/USA)
2003,2008
Women
2
Kathy Casey (IN/USA)
1996-97
Prize Money (ARRS qualified
runners only)
No information on prize money has been received for this racen.
Race Time Bias
(sec/km)
Insufficient data to calculate race time biases.
Competitive Level
(1990-date)
Insufficient data to calculate competitive levels.
Quality Performances
Men No men under 2:20 Women No women under 2:50
Last Updated on
17 Sep 2017
Contributors: Juraj Gasparovic (1), Klaas Loonstra (5), Josh Drew


Interested in Contributing?
- Check out available resources.
- Create an account and start submitting your own systems.
Scored Systems
| System | Submitter | System Notes | Constraint | Run Notes | BLEU | BLEU-cased | TER | BEER 2.0 | CharactTER |
|---|---|---|---|---|---|---|---|---|---|
| Alibaba-ensemble-model (Details) | Alibaba-MT Alibaba-MT |
Greedy ensemble with hundreds of fine tuned models, then greedy re-rank with about 50 features, base on multiple sets of ensemble outputs. | yes |
34.8 |
34.8 |
0.552 |
0.617 |
0.468 |
|
| Alibaba-single-model (Details) | Kai Song Alibaba-MT |
Transformer single model, no UN corpus, corpus filtering, back translation(30M), fine-tuned on selected(use a CNN classifier) in-domain corpus. | yes | single model |
34.4 |
34.3 |
0.550 |
0.616 |
0.463 |
| edin-marian-ens-enru (Details) | denis.emelin The University of Edinburgh |
ensemble (4*attentive RNN) + right-to-left re-ranking (4*attentive RNN) + fine-tuning on semi-'in-domain' data mixed with in-domain backtranslations | yes |
29.8 |
29.8 |
0.601 |
0.591 |
0.492 |
|
| edin-marian-ens-enru (Details) | denis.emelin The University of Edinburgh |
ensemble (4*attentive RNN) + right-to-left re-ranking (4*attentive RNN) + fine-tuning on semi-'in-domain' data mixed with in-domain backtranslations | yes | Final run. |
29.8 |
29.8 |
0.601 |
0.591 |
0.492 |
| PROMT Hybrid NMT (Details) | Alex Molchanov PROMT LLC |
no | Marian NMT ensemble of 5 transformers, with named entities processing and backoff to RBMT |
27.3 |
27.3 |
failed |
0.577 |
0.516 |
|
| M_translation (Details) | Mingy personal |
yes |
25.6 |
25.6 |
failed |
0.562 |
0.538 |
||
| PROMT Hybrid NMT (Details) | Alex Molchanov PROMT LLC |
no | OpenNMT Neural Postediting (deep brnn) |
25.3 |
25.3 |
0.652 |
0.564 |
0.532 |
|
| parfda (Details) | bicici |
yes | en-ru using PRO for tuning |
19.7 |
19.7 |
0.728 |
0.527 |
0.613 |
|
| PROMT Rule-based (Details) | Alex Molchanov PROMT LLC |
no | PROMT Rule-based |
18.1 |
18.1 |
0.723 |
0.526 |
0.573 |


This is a local, test communication server using an ESP8266 MCU. It is updated frequently so expect bugs.
Enter a name and send a message. The message will appear below and is visible to anyone else connected to the access point. It's just that easy! Messages are deleted every time the device is reset and the oldest messages after hitting the 32 message limit.
It's not my fault if something breaks so use at your own risk!


Class: ActiveStorage::Analyzer::AudioAnalyzer
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
|
|
|
Instance Chain:
|
|
| Inherits: |
ActiveStorage::Analyzer
|
| Defined in: | activestorage/lib/active_storage/analyzer/audio_analyzer.rb |
Overview
Class Attribute Summary
::ActiveStorage::Analyzer
- Inherited
| .analyze_later? | Implement this method in concrete subclasses. |
Class Method Summary
::ActiveStorage::Analyzer
- Inherited
Instance Attribute Summary
::ActiveStorage::Analyzer
- Inherited
Instance Method Summary
- #metadata
- #audio_stream private
- #bit_rate private
- #duration private
- #ffprobe_path private
- #probe private
- #probe_from(file) private
- #streams private
::ActiveStorage::Analyzer
- Inherited
| #metadata | Override this method in a concrete subclass. |
| #download_blob_to_tempfile | Downloads the blob to a tempfile on disk. |
| #instrument, #logger, #tmpdir |
Constructor Details
This class inherits a constructor from ActiveStorage::Analyzer
Class Method Details
.accept?(blob) ⇒ Boolean
Instance Method Details
#audio_stream (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/audio_analyzer.rb', line 32
def audio_stream @audio_stream ||= streams.detect { |stream| stream["codec_type"] == "audio" } || {} end
#bit_rate (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/audio_analyzer.rb', line 27
def bit_rate bit_rate = audio_stream["bit_rate"] Integer(bit_rate) if bit_rate end
#duration (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/audio_analyzer.rb', line 22
def duration duration = audio_stream["duration"] Float(duration) if duration end
#ffprobe_path (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/audio_analyzer.rb', line 61
def ffprobe_path ActiveStorage.paths[:ffprobe] || "ffprobe" end
#metadata
[ GitHub ]#probe (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/audio_analyzer.rb', line 40
def probe @probe ||= download_blob_to_tempfile { |file| probe_from(file) } end
#probe_from(file) (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/audio_analyzer.rb', line 44
def probe_from(file) instrument(File.basename(ffprobe_path)) do IO.popen([ ffprobe_path, "-print_format", "json", "-show_streams", "-show_format", "-v", "error", file.path ]) do |output| JSON.parse(output.read) end end rescue Errno::ENOENT logger.info "Skipping audio analysis because ffprobe isn't installed" {} end
#streams (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/audio_analyzer.rb', line 36
def streams probe["streams"] || [] end


Invented by Chris St. Clair
Help page by Bill St. Clair
To start a new game, ensure that the "remote" radio button is selected, select "2" or "4" for "Players" near the bottom of the page, fill in your "Name", ensure that the server "URL" is correct (it will be), and click the "New Game" button. The "Game ID" will be filled in with a string you can give to the other player(s) to join.
If you want the game to be visible to anyone who goes to the "Public" page, check the "public" checkbox before clicking on "New Game".
To join a game already in process, select the "remote" radio button, fill in your "Name", paste in the "Game ID" given to you by the person who started the game, ensure that the "URL" is correct, and click the "Join Game" button.
To join a public game that has started, but still needs players, click the "Public" link, near the top of the page or below the game controls, fill in your "Name", if you haven't already on the main page, and click one of the "Join" buttons in a listed game.
After the "New Game" or "Join Game" request has been returned by the server, you can "Resign" at any time. Otherwise, the server will notice when the game is over, either because after placement it is not possible to resolve, or because one of the player's home circles cannot be changed."
You can also use the page as a board for a local game, and control all players locally. To do this, select the "local" radio button, fill in the "Names" with a comma-separated list of player names (or let it default), and click "New Game".
In a local game, if you check "Place Only", you will be able to place as many stones as you want without resolving. When you uncheck "Place Only", you'll switch back to resolution phase, if there's anything to resolve, or regular placement phase otherwise.
Your nodes are colored green. In four-player games, the resolver's nodes, if you are not the resolver, are colored red.
Each turn begins with the Placement phase. You must place one stone on an empty square. You can do this either by typing the color and node name into the box next to your name (e.g. "wb1" puts a White stone on node "B1") and pressing the "Place" button, or by selecting "white" or "black" for the "Placement Click Color" and clicking on an empty node.
In a "local" game, you need to fill in all the boxes and press "Place" or click once per player.
If there are resolutions to be made, those stones will be outlined in red. If there are not, play will proceed with placement for the next turn.
To make a resolution, click on one of the red-outlined stones. It's outline will be changed to orange, and the places it can move will be outlined in green. Click on one of the green-outlined locations to make the move. Click on the orange-outlined selected stone to cancel the selection. Continue until there are no longer any red-outlined stones, and the game switches to placement phase for the next turn.
The code that detects a full home circle for one player isn't perfect, but I think it's good enough. If you find a problem with it, send me a screen shot of the board where end of game was wrongly decided (either no end of game when there should have been or end of game when there shouldn't), and I'll fix it.
Sometimes, after placement, the board cannot be resolved. If each player clicks the "Unresolvable" check box for his/her name, the resolver will do final resolution. In this mode, regular stone-sliding resolutions may be done, but the player may also click a destination that is NOT circled in green, to remove the orange-circled stone from the board. Once there are no longer any red-circled (unresolved) stones, the game is over.
Since there may be disagreement about whether a removed stone is part of an unbreakable loop, if the resolver says to remove a stone, all the other players will be asked to agree or disagree. This appears on the same line as the "Unresolvable" votes, allowing each player to click the "No" button to disagree, or his labelled check box to agree.
Before all players have clicked their "Unresolvable" check boxes, a player may click it again to change his/her mind, and mark the game as once again resolvable.
At the bottom of the screen is a table containing the history of the game. Click the "Undo" button to undo the last resolution move or placement.
The numbers in parentheses next to the input boxes are the score for each player. The first number is the number of stones in the (outer) home circle for that player's region. The second number is the total number of stones in that player's region (only relevant if there is a tie in the home circle).
Below the "Game ID" line is a line containing a long text input box and a "Restore" button. The text box is a representation of the current state of the game, the board, the player names, and the resolver. It will be updated as you play. You can save it at any time, by selecting (triple-click will select the whole thing in most browsers) and copying, then pasting into a file or email.
To restore a saved game, enter your "Name", paste the saved string back into the text box, and click the "Restore" button. This will work exactly the same as the "New Game" button, except the initial board, number of players, and resolver will be taken from the saved string. If you check the "public" box, the game will be public. You will be player number 1, so if you were NOT player 1 when you saved the game, you will have changed players.
The history table at the bottom of the screen doesn't yet reflect that the game started with a saved state.
Clicking the "GitHub" link near the bottom of the page will open the source code repository in a new browser tab/window.
Bill St. Clair <billstclair@gmail.com>


| Platform 1 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 2 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 3 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 4 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 5 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 6 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 7 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 8 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 9 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 1 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 11 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |
| Platform 12 | |||
| Screen | Train No | Class | Remove |
| {{x.screen}} | {{x.trainNumber}} | {{x.journeyClass}} |


{{game.date | date:'medium'}}
{{game.players[0].player.name}} vs {{game.players[1].player.name ? game.players[1].player.name : game.unregistered + ' (pending registration)'}}
Pending
{{game.players[0].score}} to {{game.players[1].score}}
This game was declined by {{game.players[1].player.name}}
{{error}}


Saved Money Is Spent Money
We all know it’s a good idea to save money, but it’s hard enough to put cash aside when we’re already footing the bills, spending time with friends and family, and purchasing everyday life necessities. I’ve lost track of the number of times I portioned away cash that was intended for savings, only to have it evaporate into thin air by the end of the month. People are fickle things, and simply saying we’re going to do something doesn’t always make it happen.
I’m a firm believer that if we want to deeply change our behavior, we first need to change how we think. A savings orientated mindset understands that “saved money is the same as spent money.”
But wait, that makes no sense!
It’s easiest for me to view money that’s been saved as paying for something right now. The only caveat is that we can pull this money out in the future, and there could be more/less cash available. A common misconception that I see is that saved money is the same as unspent money. While the two are similar because they’re both unused funds in the bank account, the mental approach is drastically different. Let’s take a look at some examples where the mindset that saved money is the same as unspent money takes place.
Shoppers fall for a common sales trap when they see big discounts on expensive items.
Let’s say there’s a new pair of designer shoes you’ve been itching to buy for months. At first release the price tag is a whopping 200 bucks.  From there it’s easy to think “wow I saved myself $150!” The reality is that we still spent $150 more then spending no money at all.
Another tactic used by shopping malls are “buy one get one free” inventory sales.
This example also highlights that there’s a difference between saved money and unspent money. Studies have shown that sales tactics like “buy one hat get another free” push people to buy an extra article of clothing they ordinarily wouldn’t buy. It’s no surprise that holiday season is one of the most profitable sales period despite having yearly Black Friday, Cyber Monday and Christmas holiday discounts. Vendors prey on the belief that unspent money directly translates savings.
Some immediate actions
To convert discounts into savings, try taking unspent money and putting it into a savings account instead. The $50 shoes you paid for? Deliberately move the discounted $150 into an account where you’re less likely to touch it. The extra “free” hat? Take the money from the unspent hat and put it in a savings account. By moving unspent funds we’re converting it to saved money.
There’s a lot of wisdom in the words “time is money”. I like to think of savings as spending money now, for the future. I find this concept closely related to investing. Investing is similar to saving money because we are spending money now so we can access it in the future. The possibility that we may have more or less money is the caveat that makes investing so unique.
Conversely, spending money from the future, for now is the concept behind credit. Whenever we tap into our credit cards we’re borrowing money from our future for today’s purchases. Credit also has a caveat in that using it usually involves using more money via interest. I find it interesting that it’s a direct inverse of investments which can translate to earning more money in the future.
By adopting the mentality that saved money is spent money, creating things like a zero-based budget, realizing the value of investments, and planning to have good credit become significantly easier. I believe this happens because it forces us to creatively think about the amount of spending money we actually have. Imagine picking up a box of chocolates with the intent of only eating a few chocolates, but pleasantly realizing you have more? It’s easy to consume more chocolates than you originally intended since you have more than expected!
Money often operates in the same way. With today’s online checking accounts it’s easy to check up on balances with just a few key strokes. If my checkings account is fatter than usual (e.g. right after payday) I notice I have a tendency to loosen up the wallet, even though in reality I’m earning the same amount everyday anyways. Shifting money into a savings account and waiting for a true crisis (loss of income, accident, medical emergency) works wonders for financial self-confidence and mental security. When we treat saved money as spent money, it becomes much easier to limit ourselves from using it frivolously in the future.
Per usual, thanks for taking the time to read BrunchBucks. If you find a typo just contact me via email! Feel free to leave a comment below or share this with friends.
Subscribe via RSS


Notifications
Disable ALL notifications
Disable 30 minute notifications
Disable 15 minute notifications
Disable New Event notifications
Disable GTAV Event notifications
Disable Forza Event notifications
Save
Options Saved


{{define "product"}}
Not compatible with older Mac not capable of handling 4K video output. If your Mac is new, upgrade to a later version of macOS if you have any problems.