| Particles Effect List of Parameters | ||||
| Page | Category | Param Name | Description | Control Image |
| Source | Source | (Control Image) | Particles are generated evenly in areas where the opacity of the Control image is greater than or equal to Threshold. If there is no Control image cell in the current frame or if the overall opacity of it is less than Threshold, the result will be the same as when there is no Control image connected. | ○ |
| Threshold | Threshold to be used in the above image for deciding where to generate particles (0-255). | |||
| Multiple Generators in Control Image | Applies for when there are multiple opaque areas (hereinafter “sources”) in the Control image, surrounded by transparent areas. When ON: The amount of generated particles is equalized for each source. That is, the narrower the generation source, the higher the particle generation density there. When OFF: The density of generated particles is uniform throughout the whole Source image. That is, the amount of particles decreases as each source area becomes narrower. |
― | ||
| Use Control Image Gradation | The particle generation density is changed in proportion to the opacity of the Source image. This option is not compatible with the Multiple Generators in Control Image above. | ― | ||
| Center X | X coordinate of the Center position of the particle generation area, when there is no input image. | ― | ||
| Center Y | Y coordinate of the Center position of the particle generation area, when there is no input image. | ― | ||
| Width | The width of the particle generation area (a rectangle), when there is no input image. | ― | ||
| Height | The height of the particle generation area (a rectangle), when there is no input image. | ― | ||
| Particle Generation | Starting Frame | The scene frame when particles starts to be generated. Negative values are also possible. | ― | |
| Birth Rate | Number of particles generated in every frame. | ― | ||
| Animation Step | Particle animation Step value. *If this Step value is set to 2 or more, the Step of picture change specified in Particle → Animation will be the square of the set value. | ― | ||
| Random Seed | Seed value of random parameters used in this effect. | ― | ||
| Particle | Animation | Hold Frame: The start frame determined randomly from each cell of the Source Column (not Level) is fixed as it is. Random Frame: The frame used changes randomly by the square of the above AnimationStep value. Column: Frame used in each particle changes in the same order of the cells in the Source Column. Starting from the first frame. Column - Random Start: Frame used in each particle changes in the same order of the cells in the Source Column. Starting from a random frame. Column Swing - Random Start: Frame used in each particle changes in the same order of the cells in the Source Column, reverses playback when reaching the end. Starting from a random frame. |
― | |
| Page | Category | Param Name | Description | Control Image |
| Birth Params | Speed | Speed | Initial velocity of particles. | ○ |
| Linked to Scale | Link the speed of the particle with its size. The larger it is, the faster it will appear to have depth. It doesn't seem to be very strictly proportional. | ― | ||
| Speed Angle | The direction of the initial velocity of the particles. 0 is down, 90 is right. | ○ | ||
| Use Gradient Angle | When ON, the initial velocity is adjusted to the gradient vector of the Control image used for Speed Angle. | |||
| Size,Mass& Orientation | Size | Specify the maximum / minimum size range. If there is a Control image, the higher the brightness, the larger the image placed at the particle. Random if there is no Control image. | ○ | |
| Perspective Distribution | When ON and there is a Size Control image, the density of the particles is arranged in inverse proportion to their sizes. Used to place deep particles, such as in sea waves. When this option is ON, the Control Image Gradation option will be ignored. | |||
| Use Control Image for the Whole Lifetime | When ON, the size will be driven according to the brightness of the Control image, at the position of the particle, for each frame. When OFF, the Control image is used only when particles are generated. After that, they will maintain the same size until they disappear. |
― | ||
| Mass | Specify the maximum / minimum range of mass for each particle. Mass is a factor related to the speed, given by the Gravity below. | ― | ||
| Orientation | Specifies the maximum / minimum range of the initial orientation angle of the particles. 0 means no rotation, 90 means 90 degrees to the right. | ○ | ||
| Lifetime | Lifetime | Specify the maximum / minimum range of a particle life (in frames). Lifetime is the length of frames since particles are born, until they completely disappear. | ○ | |
| Use Column Duration for Lifetime | When ON, the particles lifetime will be equal to the length of the Source Column. | ― | ||
| Top Layer | Top Layer | Specify the stacking order of the particles. | ― | |
| Page | Category | Param Name | Description | Control Image |
| Environment | Gravity | Gravity | Specify the value of gravity (= acceleration) to be given to particles. Negative values reverse the direction. When a Control image is connected, the value of Gravity Angle below is not used, and the gradient of luminance of the Control image becomes the gravity. Brighter pixels will produce more gravity. | ○ |
| Gravity Angle | Specifies the direction of gravity. 0 for downwards. At 90 it goes to the left. | ― | ||
| Friction | Friction | Specifies the value of the friction force that stops the movement of particles. The maximum frictional force is obtained when the luminance of the Control image is maximum. Ignored if there is no Control image connected. | ○ | |
| Wind | Wind Intensity | Specifies the speed of the wind that affects particles in an uniform fashion. It is added to their speed, not acceleration. Its effect is somewhat similar to the initial speed (Birth Param → Speed). | ― | |
| Wind Angle | Specify the direction of the wind. 0 is upwards, 90 is to the right. | ― | ||
| Scattering | Horizontal | Specifies a range of horizontal speed values that give random motion to the particles. | ○ | |
| Vertical | Specifies a range of vertical speed values that give random motion to the particles. | ○ | ||
| Swing Mode | Random: Change the Horizontal / Vertical values for each frame. However, the sign of the horizontal / vertical values does not change during the number of frames specified by the lower Swing value. Smooth: Horizontal / Vertical values will remain unchanged for the number of frames specified by the lower Swing value. |
― | ||
| Swing | When Swing Mode is Smooth, specify the minimum / maximum values of the frame interval for resetting the Horizontal / Vertical values. | ― | ||
| Page | Category | Param Name | Description | Control Image |
| Animation | Rotation | Rotation Speed | Specify the rotation speed of each particle. Rotation angle per frame (in degrees). | ― |
| Extra Speed | Specifies the range of angles that are randomly added to each particle. | ― | ||
| Swing Mode | Random: Recalculate the Extra Speed for each frame. Smooth: Rotates at the same Extra Speed value for the number of frames specified by Rotation Swing below. |
― | ||
| Rotation Swing | When Swing Mode is Smooth, specify the minimum / maximum value of the frame interval for re-setting the ExtraSpeed value. | ― | ||
| Follow Particles Movement | When ON, the rotation angle of the particles is set along the traveling direction. The rotation angle is 0 when moving to the right horizontal direction. | ― | ||
| Opacity | Opacity | Minimum / maximum opacity of particles. Fade in from the minimum value to the maximum value and fade out to the minimum value. When a Control image is connected, the opacity of the particle at each frame time is determined according to the luminance value of the Control image. Minimum opacity is reached when black. Opacity is updated every frame. Opacity, when driven by a Control image can be overlaid with the Fade-in / out parameters below. |
○ | |
| Fade-in Frames | Number of frames for the Fade-in. | ― | ||
| Fade-out Frames | Number of frames for the Fade-out. | ― | ||
| Trail Opacity | When a trail is defined in Animation → Trail, it specifies the minimum / maximum values for the opacity of the particles in the trail. | ― | ||
| Trail | Trail | Display a trail for each particle, that fades out over the number of frames specified in the Trail parameter. | ― | |
| Step | The particle trail will be displayed every Step value. That is, there will be (Trail/Step) images displayed in the trail. | ― | ||
| Motion Blur | When turned ON, particles will be rendered with motion blur according to its movement. | ― | ||
| Gamma | Film gamma value used for the motion blur. | ― | ||
| Size Increase | Size Intensity | Specify the minimum / maximum values of the size increase / decrease (as a percentage) that changes randomly in each frame. | ○ | |
| Page | Category | Param Name | Description | Control Image |
| Colors | Birth Color | Birth Color | Defines the color at the moment particles are generated. When each particle is generated, it is randomly selected from the color range specified in the spectrum. If a Control image is connected, the (premultiplyed) RGB values of the image will be used for choosing each particle color. |
○ |
| Birth Spread | Birth color Spread for the particles. | ― | ||
| Birth Intensity | Birth Color influence (%) | ― | ||
| Pick Control Image's Color for Every Frame | Allows to change the color of the particles, at every frame, by using the Control image pixels at the current particle position. | ― | ||
| Fade-in Color | Fade-in Color | Determines the color that the particles fade in. Randomly chosen from the color range specified in the spectrum. If a Control image is connected, the (premultiplyed) RGB values of the image will be used for the particle color. |
○ | |
| Fade-in Spread | Spread for the fade-in of the particles. | ― | ||
| Frame Range | Number of frames, counted from particle generation time, to Fade-in color. | ― | ||
| Fade-in Intensity | Fade-in Color influence (%). | ― | ||
| Fade-out Color | Fade-out Color | Determines the color that the particles fade out to. Randomly chosen from the color range specified in the spectrum. If a Control image is connected, the (premultiplyed) RGB values of the image will be used for each particle color. |
○ | |
| Fade-out Spread | Spread for the fade-out of the particles. | ― | ||
| Frame Range | Number of frames to Fade-out color, counted from the time of death of the particle backwards. | ― | ||
| Fade-out Intensity | Fade-out Color influence (%). | ― |


To create crop distribution maps with SPAMc, various sources of data are required, including national and subnational agricultural statistics, cropland exent, map of irrigated areas and spatially explicit information on economic and bio-physical suitability. This section provides an overview of which raw data needs to be collected and where to store the datasets so the can be used by SPAMc as input. Details on how this data will be processed are discussed in the articles on Processing subnational statistics and Processing spatial data.
Raw data is stored in the raw_data
folder. When the SPAMc is setup, you can specify the location of this folder. The default setting is to put it in the main SPAMc folder but you also have the possibility to create it somewhere else (e.g. a data server or external drive). This might be convenient when you have limited capacity on your local harddrive to store the required global maps, which can be large (i.e. several gigabytes!).
For practical reasons, we use separate subfolders for each data source. The only exception is the subnational agricultural statistics, which are all stored in one folder. The raw data subfolders for the core global datasets are automatically created when SPAMc is setup and therefore the names cannot be changed. However, if alternative and more detailed information is available from national sources (e.g. cropland map) you can create new folders in the raw_data
folder to store the data.
As you probably have not gone through the process of setting up the model yet, you can either create a temporary raw data folder structure now and copy the data to the SPAMc folder later or setup the model first and save all the data directly in the correct location. In any case, the location of the raw data folder can be changed at any time so there is flexibility.
National crop and price statistics are taken from FAOSTAT and AQUASTAT.
The FAOSTAT crops database is used as a source of data for all crops for which no subnational statistics are available. It is also used to scale all the subnational information so that they add up to the FAOSTAT national totals.
Download the All Data Normalized file (Production_Crops_E_All_Data_(Normalized).zip
) from the FAOSTAT Crops statistics website and save it in the data\raw\faostat
folder.
Unzip the file, which creates the file Production_Crops_E_All_Data_(Normalized).csv
. Rename the file using the following format YYYYMMDD_faostat_crops.csv
In the Malawi example we use: 20200303_faostat_crops.csv
The FAOSTAT Prices database is used to calculate the potential revenue at each grid cell, which is uses to determine the fitness score an priors.
Download the All Data Normalized file (Prices_E_All_Data_(Normalized).zip
) from the FAOSTAT Producer Prices Anual statistics website and save it in the data/raw/faostat
folder.
Unzip the file, which creates the file Prices_E_All_Data_(Normalized).csv
. Rename the file using the following format YYYYMMDD_faostat_prices.csv
In this case we use: 20200303_faostat_prices.csv
Data from AQUASTAT is used to inform the share of irrigated crops in a country. If there are better (national) sources of information to determine this, they can be used as a substitute for the AQUASTAT data.
Download the irrigation data from AQUASTAT. As AQUASTAT does not offer a bulk download option, the the easiest way is to go the AQUASTAT database, tick the irrigation and drainage development box under variables and tick the target country. Click submit and then save the file by selecting csv (flat) on top of the page. Save this file in the data/aquastat
folder. This is a temporary file so you use any name you like.
Unfortunately, the AQUASTAT csv file contains several empty lines and mixes up statistics and meta-data, which requires a bit of manual cleaning. Open the csv file in Excel or similar software and copy all contents to a new file, remove the empty lines in the beginning (the contents of cell A1 should now be Area) and remove the all rows starting with metadata: at the bottom of the file or (even better) copy the meta-data to a new worksheet called metadata. Rename the worksheet with the cleaned AQUASTAT data data and save it in using the following format, YYYYMMDD_aquastat_irrigation.xlsx
, in the Malawi case 20200303_aquastat_irrigation.xlsx
Availability of subnational statistics greatly improve the crop allocation process in SPAMc. Four pieces of information are required:
Harvested area statistics. Data on crop level harvested area at administrative unit level 1 and, if possible, level 2. SPAMc is designed to handle missing information at the subnational level so any data you can get is useful.
Subnational administrative unit map.. It is essential to have a map (e.g. shapefile or any other polygon format) with the location of the subnational administrative units that corresponds with the subnational statistics. These two sources of information need to be perfectly consistent or made consistent.
Cropping intensity statistics. Information on the cropping intensity (e.g. the number of crop rotations in case of multicropping) per crop at the national level and, if available, at the subnational 1 level. This information will be combined with the harvested area statistics to estimate the physical crop area at the national and subnational level.
Farming system area shares. Data on the area share for each crop and all four farming systems, preferably at the national and, if available, subnational 1 level. This information will be combined with physical area estimation to calculate the physical crop area for each of the four farming systems times crop combinations at the national and subnational level.
The section on Model setup explains how to process the subnational administrative unit map. The section on Process subnational statistics provides guidance on how to process the subnational statistics, including which data format to use, how to aggregate the crops to the 40 crops and crop groups, treatment of missing data and checking for internal consistency of the data. It also describes several scripts that processes the AQUASTAT data to estimate the share of irrigated farming system area.
Finding subnational information on harvested area is not easy as they are not always collected and/or published by national statistical agencies and if they are available they often cover a selection of crops and might have many missing values. Cropping intensity and farming system shares are probably even much more difficult to find and often requires making a lot of assumptions to fill data gaps (e.g. assuming the same cropping intensity for similar crops).
Some places where you might look for subnational statistics:
National stastical agencies and agricultural research institutes, are the best places to find subnational agricultural statistics.
CountryStat is database with Food and agriculture statistics at the subnational level. Its predecessor Agro-Maps with older data can also still be accessed. Coverage of both databases is, however, limited.
Knowing in which regions crops are not produced is also very useful. By setting the harvested area to 0 for some regions the model will be forced to allocate the (national) statistics in other subnational units.
Agricultural trade statistics in FAOSTAT might give you an idea about the farmings system shares. If most crop production is exported, a large share of the farmers can probably be categorized as high-input (or irrigated) farming.
As mentioned above, the AQUASTAT database provides information on irrigated area shares.
For the moment simply try to collect as much relevant information as you and store the files in the raw_data/subnational_statistics
folder.
To demarcate the area where crops can be allocated a cropland extent is needed. To account for the uncertainty in the cropland extent, we need a so-called synergy cropland map. There are two options to obtain this type of map. The first is to take an existing product that is available for 2010, which can be readily used as input. A second option is to construct a country specific synergy cropland extent. The latter might be preferred if high-quality country specific cropland maps are available. We explain both options below.
If SPAMc is used to produce crop distribution maps for around 2010, it is possible to use a global synergy map produced by Lu et al. (2020). This map was also used by for the global SPAM2010 (@ Yu et al. 2020). The map, with a resolution of 500x500 meter, is constructed by means of the Self-adapting statistics allocation model (SASAM), which combines and ranks five different global cropland products: GlobeLand30, CCI-LC, GlobCover 2009, MODIS C5, and the Unified Cropland Layer, as well as several region cropland products, e.g. CORINE land cover for Europe for cropland maps for Australia and China. After harmonization of cropland classes, resolution and projection, cropland area statistics from FAOSTAT are used to rank the cropland maps and construct a scoring table that reflects the agreement among the datasets. In addition, maps are produced that contain the medium and maximum cropland area per grid cell.
raw_data/sasam
folder.Similar to the synergy cropland map, we need information on the location of irrigated areas to construct a synergy irrigated cropland extent. We use two global products as input: (1) the Global Map of Irrigated Areas (GMIA) version 5 (Siebert et al. 2013), which presents the location of the area equipped for irrigation at the 5 arcmin resolution and the Global Irrigation Areas map (GIA) (Meier, Zabel, and Mauser 2018), which depicts irrigated area at a resolution of 30 arcsec.
To download the GMIA Visit the GMIA website and click the Download the Global Map of Irrigation Areas - version 5.0 - area equipped for irrigation expressed in hectares per cell
.
Unzip and save the file in the raw_data/gmia
folder. The name of the file should be gmia_v5_aei_ha.asc
To download the GIA, visit the GIA data repository and download the zip file.
Unzip the file and make sure that the global_irrigated_areas.tif
is in the data_raw/gia
folder. Make sure not to use any subfolders!
Spatially explicit information on the biophysical suitability and related potential yield of crops is a key factor to inform the allocation of crops in SPAMc. We use data the latest version of the global agro-ecological zones (GAEZ) data (version 3.0) as a source of information.1 The GAEZ website provides background data on the data. As downloading bulk information from this website is problematic, we stored the relevant GAEZ maps in a data repository.2.
raw_data/gaez
folder.We use global maps of travel time to major cities as a proxy for accesibility of cropland. To take into account changes in infrastructure over time, we use two products that each represent a different period. Nelson (2008) presents a global travel time map for 2000 and Weiss et al. (2018) presents a comparable product for 2015. SPAMc selects the older product if the model is run for using data before 2008, the midpoint between the two maps. So in case the model is run for 2008 or later, there is no need to download the map produced by Nelson (2008).
Download the Accessibility to cities 2015 map (raster format) from here, unzip and save all files it in the raw_data/travel_time_2015
folder. Make sure not to use any subfolders!
If relevant, download the Accessibility to cities 2000 map from here, unzip and all files in in the raw_data/travel_time_2000
folder. Make sure not to use any subfolders!
We use to two sources of information to create a map of a country’s rural population. The first is WorldPop, which presents time series for gridded population. WorldPop maps were generated by applying a machine learning approach to downscale subnational population information. The second source is the Global Rural-Urban Mapping Project (GRUMPv1), which present polygon information on urban areas that are identified by the extent of the nighttime lights and approximated urban extents (circles) based on buffered settlement points.^[GRUMP is a somewhat outdated product as it presents data for the year 1995. We aim to replace it by a more recent source in the future. SPAMc combines the Worldpop and GRUMP datasets to create a map of rural population.
raw_data/data/worldpop
folder.raw_data/grump
folder.To prepare the national land cover and land use maps as input for GLOBIOM, one needs a map with the location of the GLOBIOM simulation units. This map can be downloaded from the data repository.4
Lu, Miao, Wenbin Wu, Liangzhi You, Linda See, Steffen Fritz, Qiangyi Yu, Yanbing Wei, Di Chen, Peng Yang, and Bing Xue. 2020. “A cultivated planet in 2010: 1. the global synergy cropland map.” Earth System Science Data. https://doi.org/doi.org/10.5194/essd-2020-12.
Meier, Jonas, Florian Zabel, and Wolfram Mauser. 2018. “A global approach to estimate irrigated areas – a comparison between different data and statistics.” Hydrology and Earth System Sciences 22 (2): 1119–33. https://doi.org/10.5194/hess-22-1119-2018.
Nelson, A. 2008. “Travel time to major cities: a global map of accessibility.” Global Environment Monitoring Unit, Joint Research Centre of the European Commission. http://forobs.jrc.ec.europa.eu/products/gam/.
Siebert, Stefan, Verena Henrich, Karen Frenken, and Jacob Burke. 2013. “Global Map of Irrigation Areas version 5.” Bonn, Germany: Rheinisch Friedrich-Wilhelms-University.
Weiss, D. J., A. Nelson, H. S. Gibson, W. Temperley, S. Peedell, A. Lieber, M. Hancher, et al. 2018. “A global map of travel time to cities to assess inequalities in accessibility in 2015.” Nature 553 (7688): 333–36. https://doi.org/10.1038/nature25181.
Yu, Qiangyi, Liangzhi You, Ulrike Wood-Sichra, Yating Ru, Alison K. B. Joglekar, Steffen Fritz, Wei Xiong, Wenbin Wu, and Peng Yang. 2020. “A cultivated planet in 2010: 2. the global gridded agricultural production maps.” Earth System Science Data. https://doi.org/https://doi.org/10.5194/essd-2020-11.
It is expected that the results for GAEZv4 will be published soon. We will update this section when new data is available.↩
This is work in progress. Please contact Michiel van Dijk<EMAIL_ADDRESS>to obtain the maps↩
WordPop also offers the possibility to download individual country maps at a resolution of 100mx100m. These files are relatively much larger, in particular for large countries like China and are not required as we will aggregate the population maps to 30 arcsec - the current highest SPAM resolution.↩
This is work in progress. Please contact Michiel van Dijk<EMAIL_ADDRESS>to obtain the map↩


Groton Historical Landmarks
Home
Landmarks
About Us
Nearby by stood a garrison
house, residence of Captain
James Parker, commander of
the town forces in king Philip’s
war. Here Captain Parker par-
leyed with Indian chief John
Monoco regarding his threat to
burn Groton and Boston,
March 13, 1676.
Parker House Landmark
Address:
186 Main St
Groton, MA 01450
United States
Coordinates:
42°36′31″ N 71°34′18″ W


Be part ouf our awesome workshops.
The workshop is a case study about the methodology, the procedure and the technical solutions that we followed in the recent redesign of Skroutz.gr.
Specifically, we will demonstrate the challenges and needs we tried to solve through the application of Card design, the solutions suggested and finally how we managed to implement these solutions in HTML & CSS, keeping our codebase clean and maintainable.
This workshop is about front-end developers and designers who are familiar with basic design & Web UX terms, responsive design, and those able to understand SASS usage.
Hands-on/interactive, but laptop is not required.
Written in HTML, JavaScript and CSS, Chrome Extensions are made up of various different pieces, namely the background script, the content script, popups and option dropdowns. In this workshop we will demonstrate a lean paradigm based on Redux to facilitate communication between the different building blocks and we will combine React with shadow DOM gimmicks to accomplish better content script encapsulation.
This is for everyone.
Laptop is required.
Patchwork http://patchwork.github.io/ is a self-directed, hands-on workshop for learning Git and GitHub. The atmosphere is casual and informal; it is not an event full of presented tutorials and copious note-taking. You will be able to go at your own pace, with the help of a community mentor nearby in case you run into any trouble.
This is for anyone that wants to learn how to use or already uses GitHub. Both beginners and intermediate users.
Hands-on, self-paced, you need a laptop and some preliminary work a day or two before the workshop.


artvision_instanton::TrackIndex::track_t Struct Reference
#include <track_index.h>
Collaboration diagram for artvision_instanton::TrackIndex::track_t:
Public Member Functions | |
| track_t () | |
Public Attributes | |
| int | id |
| Track ID. More... | |
| frame_id_t | gid |
| Global track ID. More... | |
| std::deque< int > | indices |
| The index into the POINTS list at N frames ahead. More... | |
| Point3d< double > | world_point |
| 3D world point of track More... | |
| bool | world_point_set |
| True if WORLD_POINT is set. More... | |
| bool | inlier |
| True if an inlier (defaults to TRUE) More... | |
Constructor & Destructor Documentation
|
inline |
Member Data Documentation
| frame_id_t artvision_instanton::TrackIndex::track_t::gid |
Global track ID.
The global track ID is used when a track is relocalized from a previous observation Expected to be used for loop closure in Navigation, not for Frame-to-Frame tracking
| int artvision_instanton::TrackIndex::track_t::id |
Track ID.
| std::deque<int> artvision_instanton::TrackIndex::track_t::indices |
The index into the POINTS list at N frames ahead.
So indices[0] is the index into the current frames POINTS list, and indices[1] is the index into the next frames POINTS list.
| bool artvision_instanton::TrackIndex::track_t::inlier |
True if an inlier (defaults to TRUE)
| Point3d<double> artvision_instanton::TrackIndex::track_t::world_point |
3D world point of track
| bool artvision_instanton::TrackIndex::track_t::world_point_set |
True if WORLD_POINT is set.
The documentation for this struct was generated from the following file:
- /bitrise/src/Source/AR6/InstantOn/include/AR6/InstantOn/cv/trackers/track_index.h


{{model.remainingTime}} - {{model.text}}
The following text is using a computed binding: {{computeTime(model.clock)}}
This button triggers HandleClick
This button sends on the Click channel


LinEnum has some checks
Another way to tell is to check the /etc/hosts file. Docker usually assigns a random string of characters to the host file.
Seemily easy way is viewing output from 'mount'. You'll see a docker 'overlay' filesystem.


| Particle size: | Speed: | Spline scale: | Abs. time: 0.0 |
| Spline shape 1: | Rotation: | X position: | |
| Spline shape 2: | Elevation: | Y position: | |
| Spline shape 3: | Dolly: | Z position: |
| Particle size: | Speed: | Spline scale: | Abs. time: 0.0 |
| Spline shape 1: | Rotation: | X position: | |
| Spline shape 2: | Elevation: | Y position: | |
| Spline shape 3: | Dolly: | Z position: |


Teams in Major League Baseball
AL East:
Baltimore Orioles
Boston Red Sox
New York Yankees
Tampa Bay Rays
Toronto Blue Jays
NL East:
Atlanta Braves
New York Mets
Miami Marlins
Philadelphia Phillies
Washington Nationals
AL Central:
White Sox
Detroit Tigers
Cleveland Indians
Kansas City Royals
Minnesota Twins
NL Central:
Chicago Cubs
St. Louis Carinals
Milwaukee Brewers
Pittsburgh Pirates
Cincinnati Reds
AL West:
Houston Astros
Los Angeles Angels
Oakland Athletics
Seattle Mariners
Texas Rangers
NL West:
Los Angeles Dodgers
Arizona Diamondbacks
Colorado Rockies
San Diego Padres
San Franciso Giants


In this grapgh we are examining the effects latitude has on clouds
takend from over 2000 different city locations around the world.
Based on the table that is presented the cloudiness of a city does not seem to be dependent upon the latitude
In order to understand how cloud cover is effected in different parts of the world you need to take into account many more observations than just the latitude.
Clouds are effected by numerous factors including humidity and temperature change. An easy hypothisis is the closer to the equator you get the warmer the weather should be and the more humidity thus more clouds.
Clouds are caused by different variables in the weather system. It is the combination of humidity and total moisture content in the air.
In order to have different cloud coverages you need many things. In certain parts of the world cloud cover is affected by cooler temperatures, higher moisture conent and lack of wind of differing preasure systems which would create the wind to move the clouds.


Investors are more skeptical than ever that WeWork will be able to pay back its debt
by finanzen.net GmbH- WeWork's bonds due 2025 fell to a new low of 71 cents Monday, Bloomberg reported.
- The same day, WeWork Chairman Marcelo Claure said that layoffs will begin this week. Roughly 4,000 employees could be out of a job.
- In addition, the U.S. Securities and Exchange Commission is reviewing the company for potential violations.
- And, WeWork lost $1.3 billion in the third quarter, more than double its losses in the same quarter in 2018.
- Read more on Business Insider.
WeWork's bonds have fallen to yet another fresh low as investors grow increasingly worried that the company won't be able to repay its debt.
The company's $669 million in notes due in 2025 fell to 71 cents each on Monday, sliding more than three cents to the new low, Bloomberg reported, citing Trace data. The yield on the bonds is now more than 16%.
A string of bad news is eroding investor confidence in the company, already low after a failed initial public offering attempt in September cut WeWork's valuation to $8 billion from $47 billion.
On Monday, WeWork Chairman Marcelo Claure said that layoffs will begin "in earnest" this week. It's expected that the company could lay off around 4,000 people, roughly a third of the its total employees.
The announcement from Claure came after reports Friday that the U.S. Securities and Exchange Commission is reviewing whether the company violated any financial rules in the months leading up to its IPO flop. A preliminary inquiry is looking at WeWork's business and its disclosures to stakeholders, Bloomberg reported.
And Thursday, a company earnings presentation showed that WeWork lost $1.3 billion in the third quarter, versus $500 million in the same quarter a year ago.


new Observable(transforms)
Constructs a ProAct.Observable. It can be used both as observer and observable.
The observables in ProAct.js form the dependency graph. If some observable listens to changes from another - it depends on it.
The observables can transform the values or events incoming to them.
Every observable can have a parent observable, that will be notified for all the changes on the child-observable, it is something as special observer.
ProAct.Observable is part of the core module of ProAct.js.
TODO listeners must be divided to types in one hash map.Parameters:
| Name | Type | Description |
|---|---|---|
transforms |
Array | A list of transformation to be used on all incoming chages. |
- Source:
Members
-
<constant> constructor :Object
-
Reference to the constructor of this object.
Type:
- Object
- Default Value:
- ProAct.Observable
- Source:
Methods
-
<static> transforms(observable, val) → {Object}
-
Transforms the passed val using the ProAct.Observable#transforms of the passed observable.
Parameters:
Name Type Description observable
ProAct.Observable The ProAct.Observable which transformations should be used. val
Object The value to transform. - Source:
Returns:
The transformed value.- Type
- Object
-
makeErrListener() → {Object}
-
Creates the error listener of this observable. Every observable should have one error listener that should pass to other observables.
This listener turns the observable in a observer for errors.
Should be overriden with specific listener, by default it returns null.
- Default Value:
- null
- Source:
Returns:
The error listener of this observer.- Type
- Object
-
makeEvent(source) → {ProAct.Event}
-
Creates the event to be send to the listeners on update.
The event should be an instance of ProAct.Event.
By default this method returns ProAct.Event.Types.value event.
Parameters:
Name Type Description source
ProAct.Event The source event of the event. It can be null - Default Value:
- {ProAct.Event} with type ProAct.Event.Types.value
- Source:
Returns:
The event.- Type
- ProAct.Event
-
makeListener() → {Object}
-
Creates the listener of this observable. Every observable should have one listener that should pass to other observables.
This listener turns the observable in a observer.
Should be overriden with specific listener, by default it returns null.
- Default Value:
- null
- Source:
Returns:
The listener of this observer.- Type
- Object
-
off(action, listener, listeners) → {ProAct.Observable}
-
Removes a listener from the passed action.
Parameters:
Name Type Description action
String The action to stop listening for. It is the default action if it is empty or skipped. The action can be skipped and on its place as first parameter to be passed the listener.
listener
Object The listener to detach. If it is skipped, null or undefined all the listeners are removed from this observable. listeners
Array By default the listener is detached from the ProAct.Observable#listeners collection. This behavior can be changed by passing another collection here. - Source:
Returns:
this- Type
- ProAct.Observable
-
on(action, listener, listeners) → {ProAct.Observable}
-
Attaches a new listener to this ProAct.Observable. The listener may be function or object that defines a call method. TODO The action is not used here, ProAct.Observable#listeners should be a set of collections. ~meddle@2014-07-12
Parameters:
Name Type Description action
String The action to listen for. It is the default action if it is empty or skipped. The action can be skipped and on its place as first parameter to be passed the listener.
listener
Object The listener to attach. It must be instance of Function or object with a call method. listeners
Array By default the listener is attached to the ProAct.Observable#listeners collection. This behavior can be changed by passing another collection here. - Source:
Returns:
this- Type
- ProAct.Observable


|
Fixing memory leaks in web applications
Part of the bargain we struck when we switched from building server-rendered websites to client-rendered SPAs is that we suddenly had to take a lot more care with the resources on the user’s device. nolanlawson.com Nolan Lawson
|
|
The Impact of Web Performance
In this post, I’ll discuss what I did at ALDO to measure the revenue impact of web performance without having to spend time making performance improvements. I’m going to highlight that performance is a spectrum. simplified.dev CP Clermont
|
|
JavaScript Internationalization in 2020
After many years of careful design we’re seeing a lot of the work now coming close to completion with a number of high profile APIs on track for inclusion in ECMAScript 2020 standard! diary.braniecki.net zbraniecki
|
|
Gatsby Build Speed Improvements With Parallel Image Processing
Recently, Gatsby introduced powerful open source features that allow massive build speed improvements for sites with lots of images. www.netlify.com Jason Lengstorf
|
|
What is the FUGU project?
What is the FUGU project? This week the Chrome team delve into FUGU capabilities, and answer your questions. www.youtube.com Chrome Team
|


I am a
Doing gym is good for healthy life it helps our body to stay fit also release stress from our mind.
Monthly , Quaterly , Yearly plans
Pay only ₹3000/-
Pay only ₹7500/-
Pay only ₹24000/-
What we Provide
We are Available
<EMAIL_ADDRESS>45454545454
Mumbai India


The remote system (Podio) requires you to grant access before proceeding.
Authentication failed!
Project:


We use Illumina NextSeq 550 and Agilent gene expression microarrays to profile the transcriptomes of cells and tissues from humans and animal models of human diseases. An original algorithm determines the Gene Master Regulators (GMR) of cancer nuclei in solid and liquid biopsies, or pathogens in blood and urine samples.
Through various methods of gene editing we manipulate the GMR’s expression to selectively destroy the “bad” cells with minimal impact on the “good” ones. Owing to the unrepeatable set of contributing factors, each patient is unique and thus are his/her GMRs.
We perform a wide range of experimental* and theoretical* genomics studies aiming to identify and edit the genes responsible for cancer and drug resistance phenotypes.


WordPress.com
ERROR
: The password you entered for the email or username
scottbeglin
is incorrect.
Lost your password?
Email or Username
Password
Stay signed in
Register
|
Lost your password?
← Back to WordPress.com


Reaction Trainer
Click the button below to begin. The button will turn red for a short time. When it turns green click it as quickly as you can. Do not click the button early or the game will reset.
Click the button below to begin. The button will turn red for a short time. When it turns green click it as quickly as you can. Do not click the button early or the game will reset.


CHAPTER TWO. LEXICAL ANALYSIS
\n
1
a-z
2
-
3
4
13
12
9
11
6
7
8
10
5
i
0-9
0-9
.
0-9
f
0-9
0-9
-
0-9
,
a-z
a-h
j-z
other
blank,
etc.
blank,
etc.
ID
IF
REAL
ID
NUM
REAL
error
white space
white space
error
error
a-z
0-9
a-e
,
g-z
,
0-9
.
FIGURE 2.4.
Combined ﬁnite automaton.
In a
deterministic
ﬁnite automaton (DFA), no two edges leaving from the
same state are labeled with the same symbol. A DFA
accepts
or
rejects
a
string as follows. Starting in the start state, for each character in the input
string the automaton follows exactly one edge to get to the next state. The
edge must be labeled with the input character. After making
n
transitions for
an
n
-character string, if the automaton is in a ﬁnal state, then it accepts the
string. If it is not in a ﬁnal state, or if at some point there was no appropriately
labeled edge to follow, it rejects. The
language
recognized by an automaton
is the set of strings that it accepts.
For example, it is clear that any string in the language recognized by au-
tomaton
ID
must begin with a letter. Any single letter leads to state 2, which
is ﬁnal; so a single-letter string is accepted. From state 2, any letter or digit
leads back to state 2, so a letter followed by any number of letters and digits
is also accepted.
In fact, the machines shown in
Figure 2.3
accept the same languages as the
regular expressions of
Figure 2.2
.
These are six separate automata; how can they be combined into a single
machine that can serve as a lexical analyzer? We will study formal ways of
doing this in the next section, but here we will just do it ad hoc:
Figure 2.4
shows such a machine. Each ﬁnal state must be labeled with the token-type
22


Leonardo DiCaprio had problem saying ‘n-word’ in Django Unchained
Leonardo DiCaprio is widely regarded as one of the best actors in the world, winning critical acclaim for his roles in The Departed, Wolf Of Wall Street, The Revenant and Once Upon A Time In Hollywood.
But Jamie Foxx revealed the 45-year-old was uncomfortable on the set of Django Unchained, as his character had to use racial slurs.
And, speaking in QT8: The First Eight – a documentary about director Quentin Tarantino’s career so far – he explained there was a point himself and Samuel L Jackson had to force their co-star to utter the n-word, on the set of the 2012 film.
Advertisement Advertisement
In a clip exclusively shared with Metro.co.uk, Jamie recalled: ‘Leonardo DiCaprio had a problem saying the word “n*****”.’
Imitating the Oscar winner, he continued: ‘[He said] ”Pal, pal, it’s tough for me to say this.”
‘I remember Samuel L Jackson going, “Get over here, motherf**ker, this is just another Tuesday motherf**ker.
Charming as ever, Samuel…
The Ray actor admitted his own words of wisdom led to Leo – who played plantation owner Calvin Candie – blanking him on set the next day.
He continued: ‘I said, “Leo, we’re not friends, this is just another Thursday. This is your property. These aren’t humans. This is your property.”
‘And, when Leo came in the next day, it was literally like… “What’s up Leo? What’s up fam?” He didn’t speak.
‘Quentin allowed us to really transport back to that time and it was really real.’
Django is one of Tarantino’s most celebrated films, winning big at the Golden Globes and BAFTAs, with the director also taking home the Oscar for Best Original Screenplay.
But Leonardo has previously spoken out about how tough he found it playing slave-owner Candie – as he was worried about how far to take the character.
Advertisement Advertisement
Speaking about the role, he confessed: ‘It was this incredibly interesting horrific character. I mean, there was absolutely nothing about this man I could identify with.

 You got to push this guy to the outer extreme.”’
Seeing as Leo famously slammed his hand through glass in a pivotal scene, and kept acting until the cameras stopped rolling, we definitely think he nailed it…
Signature Entertainment presents QT8 in cinemas, DVD, Blu-ray and Digital HD from 13 December.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


The Vedanta philosophy, as it is generally called at the present day, really comprises all the various sects that now exist in India.  The word Vedanta literally means the end of the Vedas — the Vedas being the scriptures of the Hindus.1 Sometimes in the West by the Vedas are meant only the hymns and rituals of the Vedas. But at the present time these parts have almost gone out of use, and usually by the word Vedas in India, the Vedanta is meant. All our commentators, when they want to quote a passage from the scriptures, as a rule, quote from the Vedanta, which has another technical name with the commentators — the Shrutis. (The term Shruti — meaning "that which is heard" — though including the whole of the Vedic literature, is chiefly applied by the commentators to the Upanishads.) Now, all the books known by the name of the Vedanta were not entirely written after the ritualistic portions of the Vedas. For instance, one of them — the Ish‚ Upanishad — forms the fortieth chapter of the Yajur-Veda, that being one of the oldest parts of the Vedas. There are other Upanishads2 which form portions of the Brahmanas or ritualistic writings; and the rest of the Upanishads are independent, not comprised in any of the Brahmanas or other parts of the Vedas; but there is no reason to suppose that they were entirely independent of other parts, for, as we well know, many of these have been lost entirely and many of the Brahmanas have become extinct. So it is quite possible that the independent Upanishads belonged to some Brahmanas, which in course of time fell into disuse, while the Upanishads remained. These Upanishads are also called Forest Books or Aranyakas.
The Vedanta, then, practically forms the scriptures of the Hindus, and all systems of philosophy that are orthodox have to take it as their foundation. Even the Buddhists and Jains, when it suits their purpose, will quote a passage from the Vedanta as authority. All schools of philosophy in India, although they claim to have been based upon the Vedas, took different names for their systems. The last one, the system of Vy‚sa, took its stand upon the doctrines of the Vedas more than the previous systems did, and made an attempt to harmonise the preceding philosophies, such as the S‚nkhya and the Ny‚ya, with the doctrines of the Vedanta. So it is especially called the Vedanta philosophy; and the Sutras or aphorisms of Vyasa are, in modern India, the basis of the Vedanta philosophy. Again, these Sutras of Vyasa have been variously explained by different commentators. In general there are three sorts of commentators3 in India now; from their interpretations have arisen three systems of philosophy and sects. One is the dualistic, or Dvaita; a second is the qualified non-dualistic, or Vishisht‚dvaita; and a third is the non-dualistic, or Advaita. Of these the dualistic and the qualified non-dualistic include the largest number of the Indian people. The non-dualists are comparatively few in number. Now I will try to lay before you the ideas that are contained in all these three sects; but before going on, I will make one remark — that these different Vedanta systems have one common psychology, and that is, the psychology of the Sankhya system. The Sankhya psychology is very much like the psychologies of the Nyaya and Vaisheshika systems, differing only in minor particulars.
All the Vedantists agree on three points. They believe in God, in the Vedas as revealed, and in cycles. We have already considered the Vedas. The belief about cycles is as follows: All matter throughout the universe is the outcome of one primal matter called ¬k‚sha; and all force, whether gravitation, attraction or repulsion, or life, is the outcome of one primal force called Pr‚na. Prana acting on Akasha is creating or projecting4 the universe. At the beginning of a cycle, Akasha is motionless, unmanifested. Then Prana begins to act, more and more, creating grosser and grosser forms out of Akasha — plants, animals, men, stars, and so on. After an incalculable time this evolution ceases and involution begins, everything being resolved back through finer and finer forms into the original Akasha and Prana, when a new cycle follows. Now there is something beyond Akasha and Prana. Both can be resolved into a third thing called Mahat — the Cosmic Mind. This Cosmic Mind does not create Akasha and Prana, but changes itself into them.
We will now take up the beliefs about mind, soul, and God. According to the universally accepted Sankhya psychology, in perception — in the case of vision, for instance — there are, first of all, the instruments of vision, the eyes. Behind the instruments — the eyes — is the organ of vision or Indriya — the optic nerve and its centres — which is not the external instrument, but without which the eyes will not see. More still is needed for perception. The mind or Manas must come and attach itself to the organ. And besides this, the sensation must be carried to the intellect or Buddhi — the determinative, reactive state of the mind. When the reaction comes from Buddhi, along with it flashes the external world and egoism. Here then is the will; but everything is not complete. Just as every picture, being composed of successive impulses of light, must be united on something stationary to form a whole, so all the ideas in the mind must be gathered and projected on something that is stationary — relatively to the body and mind — that is, on what is called the Soul or Purusha or ¬tman.
According to the Sankhya philosophy, the reactive state of the mind called Buddhi or intellect is the outcome, the change, or a certain manifestation of the Mahat or Cosmic Mind. The Mahat becomes changed into vibrating thought; and that becomes in one part changed into the organs, and in the other part into the fine particles of matter. Out of the combination of all these, the whole of this universe is produced. Behind even Mahat, the Sankhya conceives of a certain state which is called Avyakta or unmanifested, where even the manifestation of mind is not present, but only the causes exist. It is also called Prakriti. Beyond this Prakriti, and eternally separate from it, is the Purusha, the soul of the Sankhya which is without attributes and omnipresent. The Purusha is not the doer but the witness. The illustration of the crystal is used to explain the Purusha. The latter is said to be like a crystal without any colour, before which different colours are placed, and then it seems to be coloured by the colours before it, but in reality it is not. The Vedantists reject the Sankhya ideas of the soul and nature. They claim that between them there is a huge gulf to be bridged over. On the one hand the Sankhya system comes to nature, and then at once it has to jump over to the other side and come to the soul, which is entirely separate from nature. How can these different colours, as the Sankhya calls them, be able to act on that soul which by its nature is colourless? So the Vedantists, from the very first affirm that this soul and this nature are one.5 Even the dualistic Vedantists admit that the Atman or God is not only the efficient cause of this universe, but also the material cause. But they only say so in so many words. They do not really mean it, for they try to escape from their conclusions, in this way: They say there are three existences in this universe — God, soul, and nature. Nature and soul are, as it were, the body of God, and in this sense it may be said that God and the whole universe are one. But this nature and all these various souls remain different from each other through all eternity. Only at the beginning of a cycle do they become manifest; and when the cycle ends, they become fine, and remain in a fine state. The Advaita Vedantists — the non-dualists — reject this theory of the soul, and, having nearly the whole range of the Upanishads in their favour, build their philosophy entirely upon them. All the books contained in me Upanishads have one subject, one task before them — to prove the following theme: "Just as by the knowledge of one lump of clay we have the knowledge of all the clay in the universe, so what is that, knowing which we know everything in the universe?" The idea of the Advaitists is to generalise the whole universe into one — that something which is really the whole of this universe. And they claim that this whole universe is one, that it is one Being manifesting itself in all these various forms. They admit that what the Sankhya calls nature exists, but say that nature is God. It is this Being, the Sat, which has become converted into all this — the universe, man, soul, and everything that exists. Mind and Mahat are but the manifestations of that one Sat. But then the difficulty arises that this would be pantheism. How came that Sat which is unchangeable, as they admit (for that which is absolute is unchangeable), to be changed into that which is changeable, and perishable? The Advaitists here have a theory which they call Vivarta V‚da or apparent manifestation. According to the dualists and the Sankhyas, the whole of this universe is the evolution of primal nature. According to some of the Advaitists and some of the dualists, the whole of this universe is evolved from God. And according to the Advaitists proper, the followers of Shankaracharya, the whole universe is the apparent evolution of God. God is the material cause of this universe, but not really, only apparently. The celebrated illustration used is that of the rope and the snake, where the rope appeared to be the snake, but was not really so. The rope did not really change into the snake. Even so this whole universe as it exists is that Being. It is unchanged, and all the changes we see in it are only apparent. These changes are caused by Desha, K‚la and Nimitta (space, time, and causation), or, according to a higher psychological generalization, by N‚ma and Rupa (name and form). It is by name and form that one thing is differentiated from another. The name and form alone cause the difference. In reality they are one and the same. Again, it is not, the Vedantists say, that there is something as phenomenon and something as noumenon. The rope is changed into the snake apparently only; and when the delusion ceases, the snake vanishes. When one is in ignorance, he sees the phenomenon and does not see God. When he sees God, this universe vanishes entirely for him. Ignorance or M‚y‚, as it is called, is the cause of all this phenomenon — the Absolute, the Unchangeable, being taken as this manifested universe. This Maya is not absolute zero, nor non-existence. It is defined as neither existence nor non-existence. It is not existence, because that can be said only of the Absolute, the Unchangeable, and in this sense, Maya is non-existence. Again, it cannot be said it is non-existence; for if it were, it could never produce phenomenon. So it is something which is neither; and in the Vedanta philosophy it is called Anirvachaniya or inexpressible. Maya, then, is the real cause of this universe. Maya gives the name and form to what Brahman or God gives the material; and the latter seems to have been transformed into all this. The Advaitists, then, have no place for the individual soul. They say individual souls are created by Maya. In reality they cannot exist. If there were only one existence throughout, how could it be that I am one, and you are one, and so forth? We are all one, and the cause of evil is the perception of duality. As soon as I begin to feel that I am separate from this universe, then first comes fear, and then comes misery. "Where one hears another, one sees another, that is small. Where one does not see another, where one does not hear another, that is the greatest, that is God. In that greatest is perfect happiness. In small things there is no happiness."
According to the Advaita philosophy, then, this differentiation of matter, these phenomena, are, as it were, for a time, hiding the real nature of man; but the latter really has not been changed at all. In the lowest worm, as well as in the highest human being, the same divine nature is present. The worm form is the lower form in which the divinity has been more overshadowed by Maya; that is the highest form in which it has been least overshadowed. Behind everything the same divinity is existing, and out of this comes the basis of morality. Do not injure another. Love everyone as your own self, because the whole universe is one. In injuring another, I am injuring myself; in loving another, I am loving myself. From this also springs that principle of Advaita morality which has been summed up in one word — self-abnegation. The Advaitist says, this little personalised self is the cause of all my misery. This individualised self, which makes me different from all other beings, brings hatred and jealousy and misery, struggle and all other evils. And when this idea has been got rid of, all struggle will cease, all misery vanish. So this is to be given up. We must always hold ourselves ready, even to give up our lives for the lowest beings. When a man has become ready even to give up his life for a little insect, he has reached the perfection which the Advaitist wants to attain; and at that moment when he has become thus ready, the veil of ignorance falls away from him, and he will feel his own nature. Even in this life, he will feel that he is one with the universe. For a time, as it were, the whole of this phenomenal world will disappear for him, and he will realise what he is. But so long as the Karma of this body remains, he will have to live. This state, when the veil has vanished and yet the body remains for some time, is what the Vedantists call the Jivanmukti, the living freedom. If a man is deluded by a mirage for some time, and one day the mirage disappears — if it comes back again the next day, or at some future time, he will not be deluded. Before the mirage first broke, the man could not distinguish between the reality and the deception. But when it has once broken, as long as he has organs and eyes to work with, he will see the image, but will no more be deluded. That fine distinction between the actual world and the mirage he has caught, and the latter cannot delude him any more. So when the Vedantist has realised his own nature, the whole world has vanished for him. It will come back again, but no more the same world of misery. The prison of misery has become changed into Sat, Chit, ¬nanda — Existence Absolute, Knowledge Absolute, Bliss Absolute — and the attainment of this is the goal of the Advaita Philosophy.
(The above address was delivered before the Graduate
Philosophical Society of Harvard University, on March 25, 1896.)
(A discussion following this is available at Vol.
V.)


17 November 2009 - Preliminary tests reveal no significant changes in the pandemic (H1N1) 2009 virus based on investigations of samples taken from patients in Ukraine. Analyses are being performed by two WHO influenza collaborating centres as part of the global influenza surveillance network.
Preliminary genetic sequencing shows that the virus is similar to the virus used for production of the pandemic influenza vaccine, reconfirming the vaccine's efficacy at this time.
Additional questions about the pandemic virus circulating in Ukraine will be answered as more data is available.
WHO commends the government of Ukraine for its open sharing of samples to inform global monitoring of the virus for signs of change.
A total of 34 samples were analysed independently by the WHO Collaborating Centre for Reference and Research on Influenza, Mill Hill in London, UK, and the WHO Collaborating Centre for the Surveillance, Epidemiology and Control of Influenza in Atlanta, Georgia, USA.


Wolfgang Gabriel (* June 9, 1930 in Vienna) is an Austrian composer, conductor and music teacher.  After WWII he attended the Realgymnasium until 1948. From 1946 he also took piano lessons with Hans Sittner, later president of the Academy for Music and Performing Arts in Vienna, and music theory lessons with Leo Lehner, the founder of the choir "Jung-Wien". In 1947 he entered the Academy of Music and Performing Arts in Vienna. There he studied piano with Grete Hinterhofer, music theory with Joseph Marx (later with Alfred Uhl) and conducting in the Kapellmeister class of Hans Swarowsky from 1950. In 1952 he completed his studies with distinction and a graduation prize. From 1954 to 1996 Gabriel taught at the Vienna Academy of Music, first as a répétiteur in the vocal department, then as an assistant to Ernst Reichert and finally as head of an opera class. From 1960 to 2007 he was also the artistic director of the Academic Orchestra Association. As a conductor, he has appeared with the Vienna Symphony Orchestra, the Lower Austrian Tonkünstler, the ORF Symphony Orchestra and several Hungarian orchestras, among others. In the 1950s he directed the newly founded Orchestra of Jeunesses Musicales for several years. From 1988 to 2011 Wolfgang Gabriel was artistic director of the Bachgemeinde Wien. Gabriel composed more than 100 works, including several orchestral and instrumental concertos, chamber music (including several string quartets)piano works and numerous song cycles. His tonal language was influened by Béla Bartók, Igor Stravinsky and Alban Berg. He wrote several of his works for his second wife, the singer Susan Dennis, and for his son Martin Gabriel, who is the principal oboist of the Vienna Philharmonic. Source: Wikipedia


|
|
|
Sassafras Stomp
Sweet, high-energy folk music from the Maine/Montana border!
Johanna Davis (fiddle, voice)
Adam Nordell (guitar, voice, foot percussion)
"Drawing from New England, Quebec, Maritime and Old Time traditions, fiddler Johanna Davis and guitarist Adam Nordell weave harmony vocals and rhythmic accompaniment into their tunes."
|
|
|
Caller:
David Smukler from Syracuse, New York
" An engaging teacher who presents a wide variety of dances, including plenty of New England contras, squares, old chestnuts, and freshly minted dances."
|
|
|
|
Ukrainian Hall
405 Fairmount W.
(at Hutchison)
Montreal, H2V 4B4, Map
|
|
|
6:30 pm to 10 pm
|
|
|
|
|
Regular:
|
|
$14 (Members: $12)
|
|
Students:
|
|
$10 (Members: $8)
|
|
|


--- date: 2010-02-10T00:00:00Z published: true title: Hands-on - D&D on the Microsoft Surface - this is nuts. url: /2010/02/10/hands-on-d-d-on-the-microsoft-surface-this-is-nuts-/ ---
I never got to play this as a kid, but this looks very cool.


×
Products
Flower
Prerolls
Hash
Vape Pens
Find Us
Blog
Merch
Events
For Retailers
Products
Flower
Prerolls
Hash
Vape Pens
Find Us
Blog
Merch
Events
For Retailers
Solventless Vape Catridges
No added flavors
No Solvents


{% block plugs %}
{% endblock %}
NEXRAD AWS Data Access
Nexrad AWS Data Access
Date:
Time From:
Time To:
Radar Site:
{% for site in sites %}
{{site}}
{% endfor %}
Submit


Thank you for joining our little celebration! Here are some details to help you plan your trip. If you have any questions, please e-mail us at<EMAIL_ADDRESS>Saturday, June 20, 2015 at 6 p.m.
The wedding ferry departs at 4 p.m. sharp. Be there on time or you'll literally miss the boat! (See details below.)
Greyfield Inn, our wedding venue, is located on Cumberland Island, a wild and wonderful place. (more information)
The Inn is only accessible by ferry boat, which departs from downtown Fernandia Beach, Florida, on Amelia Island. Do not follow Google Maps to Cumberland Island via St. Mary's, Georgia. That will lead you to the wrong boat.
The ferry carries passengers and luggage only (no cars).
The ferry departs from Fernandina beach at 4 p.m. After the wedding, the ferry will depart Greyfield at 11 p.m.
The nearest major airport is Jacksonville International Airport, about an hour's-drive from Fernandina Beach.
We have a block of rooms reserved at the Hampton Inn & Suites in downtown Fernandina Beach, Florida, from Thursday, June 18, to Monday, June 22.
Depending on the room, the rate is $129, $139 or $149 per night. To receive the block rate, make reservations no later than May 20, 2015. Call<PHONE_NUMBER> and use the secret password “Blizzard-Merrill Wedding.”
If you wish to turn your trip into a longer vacation, there are a number of lodging options on Amelia Island. Sarah's family has enjoyed many vacations at the Amelia Surf and Racquet Club.
The wedding will be outside on Cumberland Island in June. Although we'll be under the shade of mossy trees, it will probably be warm and humid (lows in the 70's and highs in the upper-80's).
Please dress comfortably. Our wedding planner informs us that you can't go wrong with "resort casual." Seriously: We want you to be comfortable and happy on our big day.
The groom is planning to wear nice dress shoes, while the bride has some adventurous outdoor bridal sandals picked out. Take your cues from them and wear what you like (and don't mind being photographed in).
To maximize your time on the island, we recommend taking the first ferry on Friday morning (9:30 a.m.) and the last ferry on Sunday afternoon (3:30 p.m.).
Call Greyfield Inn at<PHONE_NUMBER> by May 20, 2015, to book your room. The rate is $200 per person for the weekend (all meals are included).
If you are planning to arrive Thursday night or leave on Monday morning, you can reserve a room at the Hampton Inn (see above).


TABLE OF INTERACTIONS WITH
DEFERASIROX
From the French ANSM drug interactions document of September 2016, p. 71
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
ACETYLSALICYLIC ACID RxNorm: 1191 ATC: A01AD05 B01AC06 N02BA01 |
With acetylsalicyclic acid in anti-inflammatory doses (>=1 gr per dose and/or >= 3 gr per day) or for antalgic or antipyretic doses (>=500 mg per dose and/or <3 gr per day): increase of the risk of digestive ulceration and hemorrhage |
Take into account |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
ANTICONVULSANT ENZYMATIC INDUCERS CLASS CODE: N03A-001 |
Risk of decrease of the plasma concentrations of deferasirox |
Precaution for use Monitor the ferritinemia during and after the treatment with the enzymatic inducer. If needed, adjustment of the dosage of deferasirox. |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
NON STEROIDAL ANTI-INFLAMMATORY DRUGS CLASS CODE: M01A-002 |
Increase of the risk of causing ulcers and digestive hemorrhage |
Take into account |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
VITAMIN K ANTAGONISTS CLASS CODE: B01AA-001 |
Increase of the risk of causing ulcers and digestive hemorrhage |
Take into account |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
BUSULFAN RxNorm: 1828 ATC: L01AB01 |
Risk of increase of the toxocity of the bufulfan by decrease of its clearance by the deferasirox. |
Take into account |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
DEFERIPRONE RxNorm: 11645 ATC: V03AC02 |
Risk of hyperchelation |
CONTRAINDICATION |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
DEFEROXAMINE RxNorm: 3131 ATC: V03AC01 |
Risk of hyperchelation |
CONTRAINDICATION |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
REPAGLINIDE RxNorm: 73044 ATC: A10BX02 |
Risk of increase of the plasma concentrations of repaglinide due to inhibition of its hepatic metabolism by the deferasirox |
Not recommended If administering these medications together cannot be avoided, strict clinical and biological monitoring. |
DEFERASIROX RxNorm: 614373 ATC: V03AC03 |
RIFAMPICIN RxNorm: 9384 ATC: J04AB02 |
Risk of decrease of the plasma concentrations of deferasirox |
Precaution for use Monitor the ferritinemia during and after the treatment with the enzymatic inducer. If needed, adjust the dosage of deferasirox. |


Events
All w2ui controls have the same event flow. There are two ways you can add/remove events:
- using on"Event" properties
- using .on() and .off() methods
The first way is simple, can be done during object creation, but limits you to a single event listener per event. The second way
lets you add multiple event listeners, but can only be used at run-time. It gives you a better control of the event flow.
Every widget property that start with "on" is an event.
Properties and Methods
Array of event handlers.
on - function (type, handler)
Adds event listener to the w2ui object.
off - function (type, [handler])
Removes event listener to the w2ui object.
Executes all event listeners added with .on() method.
Event Handler Function
When an event is emitted the handler function will receive one parameter: function(event).
This parameter event is an object that contains useful information about the event.
Event handler looks like:
By default all event handlers are triggered before the default behavior. You can cancel event default behavior by:
You can also define a function that will be executed after the default behavior is processed. For example:
You can define several of those functions and all will be executed.


val new: String
String equivalent of the value of the new constant
new - String equivalent of the value of the new constant
new


{% extends "base.html" %} {% block basecontent %}
You have not ordered any drinks
{% else %}You have ordered {{ order.drink.title }}
If you want to cancel, press the button below
If you want to edit, cancel first and then request a new one
{% endif %}See all orders here


{% extends "tutorial.html" %} {% block head %} {% endblock %} {% block onload %}{% endblock %} {% block html5badge %} {% endblock %} {% block iscompatible %} return !!(window.requestFileSystem || window.webkitRequestFileSystem); {% endblock %} {% block content %}
In April 2014, it was announced on public-webapps that the Filesystem API spec is not being considered by other browsers. For now, the API is Chrome-specific and it's unlikely to be implemented by other browsers and is no longer being standardized with the W3C.
I've always thought it would be handy if web applications could read and write files and directories. As we move from offline to online, applications are becoming more complex and the lack of file system APIs has been a hindrance for moving the web forward. Storing or interacting with binary data shouldn't be limited to the desktop. Thankfully, it no longer is thanks to the FileSystem API. With the FileSystem API, a web app can create, read, navigate, and write to a sandboxed section of the user's local file system.
The API is broken up into various themes:
File
/Blob
, FileList
, FileReader
Blob()
, FileWriter
DirectoryReader
, FileEntry
/DirectoryEntry
, LocalFileSystem
At the time of writing this article, Google Chrome has the only working implementation of the
FileSystem API. A dedicated browser UI does not yet exist for file/quota
management. To store data on the user's system, may require your app to request quota.
However, for testing, Chrome can be run with the --unlimited-quota-for-files
flag.
Furthermore, if you're building an app or extension for the Chrome Web Store, the unlimitedStorage
manifest file
permission can be used in place of requesting quota. Eventually, users will receive a permission
dialog to grant, deny, or increase storage for an app.
You may need the --allow-file-access-from-files
flag if you're debugging
your app from file://
. Not using these flags will result in
a SECURITY_ERR
or QUOTA_EXCEEDED_ERR
FileError.
A web app can request access to a sandboxed file system by calling
window.requestFileSystem()
:
// Note: The file system has been prefixed as of Google Chrome 12: window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(type, size, successCallback, opt_errorCallback)
window.TEMPORARY
or window.PERSISTENT
.
Data stored using TEMPORARY
can be removed at the browser's discretion
(for example if more space is needed). PERSISTENT
storage cannot be cleared
unless explicitly authorized by the user or the app and requires the user to grant
quota to your app. See requesting quota.FileSystem
object.FileError
object.If you're calling requestFileSystem()
for the first time, new storage is
created for your app. It's important to remember that this file system is
sandboxed, meaning one web app cannot access another app's files. This also
means you cannot read/write files to an arbitrary folder on the user's hard drive
(for example My Pictures, My Documents, etc.).
Example usage:
function onInitFs(fs) { console.log('Opened file system: ' + fs.name); } window.requestFileSystem(window.TEMPORARY, 5*1024*1024 /*5MB*/, onInitFs, errorHandler);
The FileSystem specification also defines a synchronous API, LocalFileSystemSync
interface that is intended to be used in Web Workers.
However, this tutorial will not cover the synchronous API.
Throughout the remainder of this document, we'll use the same handler for processing errors from the asynchronous calls:
function errorHandler(e) { var msg = ''; switch (e.code) { case FileError.QUOTA_EXCEEDED_ERR: msg = 'QUOTA_EXCEEDED_ERR'; break; case FileError.NOT_FOUND_ERR: msg = 'NOT_FOUND_ERR'; break; case FileError.SECURITY_ERR: msg = 'SECURITY_ERR'; break; case FileError.INVALID_MODIFICATION_ERR: msg = 'INVALID_MODIFICATION_ERR'; break; case FileError.INVALID_STATE_ERR: msg = 'INVALID_STATE_ERR'; break; default: msg = 'Unknown Error'; break; }; console.log('Error: ' + msg); }
Granted, this error callback is very generic, but you get the idea. You'll want to provide human-readable messages to users instead.
To use PERSISTENT
storage, you must obtain permission from the user
to store peristent data. The same restriction doesn't apply to TEMPORARY
storage
because the browser may choose to evict temporarily stored data at its discretion.
To use PERSISTENT
storage with the FileSystem API, Chrome exposes a new
API under window.webkitStorageInfo
to request storage:
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) { window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler); }, function(e) { console.log('Error', e); });
Once the user has granted permission, there's no need to call requestQuota()
in the future (unless you wish to increase your app's quota).
Subsequent calls for equal or lesser quota are a noop.
There is also an API to query an origin's current quota
usage and allocation: window.webkitStorageInfo.queryUsageAndQuota()
Files in the sandboxed environment are represented by the
FileEntry
interface. A FileEntry contains the types of properties (name
, isFile
, ...)
and methods (remove
, moveTo
, copyTo
, ...) that
you'd expect from a standard file system.
Properties and methods of FileEntry
:
fileEntry.isFile === true fileEntry.isDirectory === false fileEntry.name fileEntry.fullPath ... fileEntry.getMetadata(successCallback, opt_errorCallback); fileEntry.remove(successCallback, opt_errorCallback); fileEntry.moveTo(dirEntry, opt_newName, opt_successCallback, opt_errorCallback); fileEntry.copyTo(dirEntry, opt_newName, opt_successCallback, opt_errorCallback); fileEntry.getParent(successCallback, opt_errorCallback); fileEntry.toURL(opt_mimeType); fileEntry.file(successCallback, opt_errorCallback); fileEntry.createWriter(successCallback, opt_errorCallback); ...
To better understand FileEntry
, the rest of this section contains
a bunch of recipes for performing common tasks.
You can look up or create a file with the file system's getFile()
method,
a method of the DirectoryEntry interface.
After requesting a file system, the success callback is passed a FileSystem
object that contains a DirectoryEntry
(fs.root
) pointing to
the root of the app's file system.
The following code creates an empty file called "log.txt" in the root of the app's file system:
function onInitFs(fs) { fs.root.getFile('log.txt', {create: true, exclusive: true}, function(fileEntry) { // fileEntry.isFile === true // fileEntry.name == 'log.txt' // fileEntry.fullPath == '/log.txt' }, errorHandler); } window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
Once the file system has been requested, the success handler is passed
a FileSystem
object. Inside the callback, we can call fs.root.getFile()
with the name of the file to create. You can pass an absolute or relative path, but
it must be valid. For instance, it is an error to attempt to create a file
whose immediate parent does not exist. The second argument to getFile()
is an object literal describing the function's behavior if the file does not exist. In this
example, create: true
creates the file if it doesn't exist
and throws an error if it does (exclusive: true
). Otherwise (if
create: false
), the file is simply fetched and returned.
In either case, the file contents are not overwritten because we're just obtaining a
reference entry to the file in question.
The following code retrieves the file called "log.txt",
its contents are read using the FileReader
API and appended to a new
<textarea> on the page. If log.txt doesn't exist,
an error is thrown.
function onInitFs(fs) { fs.root.getFile('log.txt', {}, function(fileEntry) { // Get a File object representing the file, // then use FileReader to read its contents. fileEntry.file(function(file) { var reader = new FileReader(); reader.onloadend = function(e) { var txtArea = document.createElement('textarea'); txtArea.value = this.result; document.body.appendChild(txtArea); }; reader.readAsText(file); }, errorHandler); }, errorHandler); } window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
The following code creates an empty file called "log.txt" (if it doesn't exist) and fills it with the text 'Lorem Ipsum'.
function onInitFs(fs) { fs.root.getFile('log.txt', {create: true}, function(fileEntry) { // Create a FileWriter object for our FileEntry (log.txt). fileEntry.createWriter(function(fileWriter) { fileWriter.onwriteend = function(e) { console.log('Write completed.'); }; fileWriter.onerror = function(e) { console.log('Write failed: ' + e.toString()); }; // Create a new Blob and write it to log.txt. var blob = new Blob(['Lorem Ipsum'], {type: 'text/plain'}); fileWriter.write(blob); }, errorHandler); }, errorHandler); } window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
This time, we call the FileEntry's createWriter()
method to
obtain a FileWriter
object. Inside the success callback, event
handlers are set up for error
and writeend
events.
The text data is written to the file by creating a blob, appending text to it,
and passing the blob to FileWriter.write()
.
The following code appends the text 'Hello World' to the end of our log file. An error is thrown if the file does not exist.
function onInitFs(fs) { fs.root.getFile('log.txt', {create: false}, function(fileEntry) { // Create a FileWriter object for our FileEntry (log.txt). fileEntry.createWriter(function(fileWriter) { fileWriter.seek(fileWriter.length); // Start write position at EOF. // Create a new Blob and write it to log.txt. var blob = new Blob(['Hello World'], {type: 'text/plain'}); fileWriter.write(blob); }, errorHandler); }, errorHandler); } window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
The following code allows a user to select multiple files using
<input type="file" multiple />
and creates copies of those
files in the app's sandboxed file system.
<input type="file" id="myfile" multiple />
document.querySelector('#myfile').onchange = function(e) { var files = this.files; window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { // Duplicate each file the user selected to the app's fs. for (var i = 0, file; file = files[i]; ++i) { // Capture current iteration's file in local scope for the getFile() callback. (function(f) { fs.root.getFile(f.name, {create: true, exclusive: true}, function(fileEntry) { fileEntry.createWriter(function(fileWriter) { fileWriter.write(f); // Note: write() can take a File or Blob object. }, errorHandler); }, errorHandler); })(file); } }, errorHandler); };
Although we've used an input for the file import, one could easily leverage HTML5 Drag and Drop to achieve the same objective.
As noted in the comment, FileWriter.write()
can accept a Blob
or File
. This is because File
inherits from Blob
.
Therefore, all file objects are blobs.
The following code deletes the file 'log.txt'.
window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { fs.root.getFile('log.txt', {create: false}, function(fileEntry) { fileEntry.remove(function() { console.log('File removed.'); }, errorHandler); }, errorHandler); }, errorHandler);
Directories in the sandbox are represented by the
DirectoryEntry
interface, which shares most of FileEntry's properties
(they inherit from a common Entry
interface). However, DirectoryEntry
has additional methods for manipulating directories.
Properties and methods of DirectoryEntry
:
dirEntry.isDirectory === true // See the section on FileEntry for other inherited properties/methods. ... var dirReader = dirEntry.createReader(); dirEntry.getFile(path, opt_flags, opt_successCallback, opt_errorCallback); dirEntry.getDirectory(path, opt_flags, opt_successCallback, opt_errorCallback); dirEntry.removeRecursively(successCallback, opt_errorCallback); ...
Use the getDirectory()
method of DirectoryEntry
to read or create directories. You can pass either a name or path as
the directory to look up or create.
For example, the following code creates a directory named "MyPictures" in the root directory:
window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { fs.root.getDirectory('MyPictures', {create: true}, function(dirEntry) { ... }, errorHandler); }, errorHandler);
Creating a subdirectory is exactly the same as creating any other directory. However, the API throws an error if you attempt to create a directory whose immediate parent does not exist. The solution is to create each directory sequentially, which is rather tricky to do with an asynchronous API.
The following code creates a new hierarchy (music/genres/jazz) in the root of the app's FileSystem by recursively adding each subdirectory after its parent folder has been created.
var path = 'music/genres/jazz/'; function createDir(rootDirEntry, folders) { // Throw out './' or '/' and move on to prevent something like '/foo/.//bar'. if (folders[0] == '.' || folders[0] == '') { folders = folders.slice(1); } rootDirEntry.getDirectory(folders[0], {create: true}, function(dirEntry) { // Recursively add the new subfolder (if we still have another to create). if (folders.length) { createDir(dirEntry, folders.slice(1)); } }, errorHandler); }; function onInitFs(fs) { createDir(fs.root, path.split('/')); // fs.root is a DirectoryEntry. } window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
Now that "music/genres/jazz" is in place, we can pass its full path
to getDirectory()
and create new subfolders or files under it.
For example:
window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { fs.root.getFile('/music/genres/jazz/song.mp3', {create: true}, function(fileEntry) { ... }, errorHandler); }, errorHandler);
To read the contents of a directory, create a DirectoryReader
and call its readEntries()
method. There is no
guarantee that all of a directory's entries will be returned
in a single call to readEntries()
. That means you need to keep calling
DirectoryReader.readEntries()
until no more results are returned.
The following is code that demonstrates this:

function toArray(list) { return Array.prototype.slice.call(list || [], 0); } function listResults(entries) { // Document fragments can improve performance since they're only appended // to the DOM once. Only one browser reflow occurs. var fragment = document.createDocumentFragment(); entries.forEach(function(entry, i) { var img = entry.isDirectory ? '' : ''; var li = document.createElement('li'); li.innerHTML = [img, '', entry.name, ''].join(''); fragment.appendChild(li); }); document.querySelector('#filelist').appendChild(fragment); } function onInitFs(fs) { var dirReader = fs.root.createReader(); var entries = []; // Call the reader.readEntries() until no more results are returned. var readEntries = function() { dirReader.readEntries (function(results) { if (!results.length) { listResults(entries.sort()); } else { entries = entries.concat(toArray(results)); readEntries(); } }, errorHandler); }; readEntries(); // Start reading dirs. } window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
The DirectoryEntry.remove()
method behaves just like
FileEntry
's. The difference:
attempting to delete a non-empty directory results in an error.
The following removes the empty directory "jazz" from "/music/genres/":
window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { fs.root.getDirectory('music/genres/jazz', {}, function(dirEntry) { dirEntry.remove(function() { console.log('Directory removed.'); }, errorHandler); }, errorHandler); }, errorHandler);
If you have a pesky directory that contains entries, removeRecursively()
is your friend. It deletes the directory and its contents, recursively.
The following code recursively removes the directory "music" and all the files and directories that it contains:
window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { fs.root.getDirectory('/misc/../music', {}, function(dirEntry) { dirEntry.removeRecursively(function() { console.log('Directory removed.'); }, errorHandler); }, errorHandler); }, errorHandler);
FileEntry
and DirectoryEntry
share common operations.
Both FileEntry
and DirectoryEntry
have a
copyTo()
for duplicating existing entries. This method automatically
does a recursive copy on folders.
The following code example copies the file "me.png" from one directory to another:
function copy(cwd, src, dest) { cwd.getFile(src, {}, function(fileEntry) { cwd.getDirectory(dest, {}, function(dirEntry) { fileEntry.copyTo(dirEntry); }, errorHandler); }, errorHandler); } window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { copy(fs.root, '/folder1/me.png', 'folder2/mypics/'); }, errorHandler);
The moveTo()
method present in
FileEntry
and DirectoryEntry
allows you to move or rename a file or directory.
Its first argument is the parent directory to move the file under, and its second
is an optional new name for the file. If a new name isn't provided, the file's
original name is used.
The following example renames "me.png" to "you.png", but does not move the file:
function rename(cwd, src, newName) { cwd.getFile(src, {}, function(fileEntry) { fileEntry.moveTo(cwd, newName); }, errorHandler); } window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { rename(fs.root, 'me.png', 'you.png'); }, errorHandler);
The following example moves "me.png" (located in the root directory) to a folder named "newfolder".
function move(src, dirName) { fs.root.getFile(src, {}, function(fileEntry) { fs.root.getDirectory(dirName, {}, function(dirEntry) { fileEntry.moveTo(dirEntry); }, errorHandler); }, errorHandler); } window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { move('/me.png', 'newfolder/'); }, errorHandler);
The FileSystem API exposes a new URL scheme, filesystem:
,
that can be used to fill src
or href
attributes.
For example, if you wanted to display an image and have its
fileEntry
,
calling toURL()
would give you the file's filesystem:
URL:
var img = document.createElement('img'); img.src = fileEntry.toURL(); // filesystem:http://example.com/temporary/myfile.png document.body.appendChild(img);
Alternatively, if you already have a filesystem:
URL,
resolveLocalFileSystemURL()
will get you back the
fileEntry
:
window.resolveLocalFileSystemURL = window.resolveLocalFileSystemURL || window.webkitResolveLocalFileSystemURL; var url = 'filesystem:http://example.com/temporary/myfile.png'; window.resolveLocalFileSystemURL(url, function(fileEntry) { ... });
This demo lists the files/folders in the filesystem.
{% if is_mobile %}This shell replicates some of the common operations in a UNIX filesystem
(such as cd
, mkdir
, rm
, open
,
and cat
) by abstracting the FileSystem API. To add content, open
the app, then drag and drop files from your desktop onto the terminal window.
There are several storage options available in HTML5, but the FileSystem is different in that it aims to satisfy client-side storage use cases not well served by databases. Generally, these are applications that deal with large binary blobs and/or share data with applications outside of the context of the browser.
The specification lists several use cases: