MTL material format (Lightwave, OBJ)Excerpt from FILE FORMATS, Version 4.2October 1995 Documentation created by: Diane Ramey, Linda Rose, and Lisa Tyerman Copyright 1995 Alias|Wavefront, Inc. All rights reserved
5. Material Library File (.mtl) Material library files contain one or more material definitions, each of which includes the color, texture, and reflection map of individual materials. These are applied to the surfaces and vertices of objects. Material files are stored in ASCII format and have the .mtl extension. An .mtl file differs from other Alias|Wavefront property files, such as light and atmosphere files, in that it can contain more than one material definition (other files contain the definition of only one item). An .mtl file is typically organized as shown below. newmtl my_red Material color & illumination statements texture map statements reflection map statement newmtl my_blue Material color & illumination statements texture map statements reflection map statement newmtl my_green Material color & illumination statements texture map statements reflection map statement Figure 5-1. Typical organization of .mtl file Each material description in an .mtl file consists of the newmtl statement, which assigns a name to the material and designates the start of a material description. This statement is followed by the material color, texture map, and reflection map statements that describe the material. An .mtl file map contain many different material descriptions. After you specify a new material with the "newmtl" statement, you can enter the statements that describe the materials in any order. However, when the Property Editor writes an .mtl file, it puts the statements in a system-assigned order. In this chapter, the statements are described in the system-assigned order. Format The following is a sample format for a material definition in an .mtl file: Material name statement: newmtl my_mtl Material color and illumination statements: Ka 0.0435 0.0435 0.0435 Kd 0.1086 0.1086 0.1086 Ks 0.0000 0.0000 0.0000 Tf 0.9885 0.9885 0.9885 illum 6 d -halo 0.6600 Ns 10.0000 sharpness 60 Ni 1.19713 Texture map statements: map_Ka -s 1 1 1 -o 0 0 0 -mm 0 1 chrome.mpc map_Kd -s 1 1 1 -o 0 0 0 -mm 0 1 chrome.mpc map_Ks -s 1 1 1 -o 0 0 0 -mm 0 1 chrome.mpc map_Ns -s 1 1 1 -o 0 0 0 -mm 0 1 wisp.mps map_d -s 1 1 1 -o 0 0 0 -mm 0 1 wisp.mps disp -s 1 1 .5 wisp.mps decal -s 1 1 1 -o 0 0 0 -mm 0 1 sand.mps bump -s 1 1 1 -o 0 0 0 -bm 1 sand.mpb Reflection map statement: refl -type sphere -mm 0 1 clouds.mpc Material Name The material name statement assigns a name to the material description. Syntax The folowing syntax describes the material name statement. newmtl name Specifies the start of a material description and assigns a name to the material. An .mtl file must have one newmtl statement at the start of each material description. "name" is the name of the material. Names may be any length but cannot include blanks. Underscores may be used in material names. Material color and illumination The statements in this section specify color, transparency, and reflectivity values. Syntax The following syntax describes the material color and illumination statements that apply to all .mtl files. Ka r g b Ka spectral file.rfl factor Ka xyz x y z To specify the ambient reflectivity of the current material, you can use the "Ka" statement, the "Ka spectral" statement, or the "Ka xyz" statement. Tip These statements are mutually exclusive. They cannot be used concurrently in the same material. Ka r g b The Ka statement specifies the ambient reflectivity using RGB values. "r g b" are the values for the red, green, and blue components of the color. The g and b arguments are optional. If only r is specified, then g, and b are assumed to be equal to r. The r g b values are normally in the range of 0.0 to 1.0. Values outside this range increase or decrease the relectivity accordingly. Ka spectral file.rfl factor The "Ka spectral" statement specifies the ambient reflectivity using a spectral curve. "file.rfl" is the name of the .rfl file. "factor" is an optional argument. "factor" is a multiplier for the values in the .rfl file and defaults to 1.0, if not specified. Ka xyz x y z The "Ka xyz" statement specifies the ambient reflectivity using CIEXYZ values. "x y z" are the values of the CIEXYZ color space. The y and z arguments are optional. If only x is specified, then y and z are assumed to be equal to x. The x y z values are normally in the range of 0 to 1. Values outside this range increase or decrease the reflectivity accordingly. Kd r g b Kd spectral file.rfl factor Kd xyz x y z To specify the diffuse reflectivity of the current material, you can use the "Kd" statement, the "Kd spectral" statement, or the "Kd xyz" statement. Tip These statements are mutually exclusive. They cannot be used concurrently in the same material. Kd r g b The Kd statement specifies the diffuse reflectivity using RGB values. "r g b" are the values for the red, green, and blue components of the atmosphere. The g and b arguments are optional. If only r is specified, then g, and b are assumed to be equal to r. The r g b values are normally in the range of 0.0 to 1.0. Values outside this range increase or decrease the relectivity accordingly. Kd spectral file.rfl factor The "Kd spectral" statement specifies the diffuse reflectivity using a spectral curve. "file.rfl" is the name of the .rfl file. "factor" is an optional argument. "factor" is a multiplier for the values in the .rfl file and defaults to 1.0, if not specified. Kd xyz x y z The "Kd xyz" statement specifies the diffuse reflectivity using CIEXYZ values. "x y z" are the values of the CIEXYZ color space. The y and z arguments are optional. If only x is specified, then y and z are assumed to be equal to x. The x y z values are normally in the range of 0 to 1. Values outside this range increase or decrease the reflectivity accordingly. Ks r g b Ks spectral file.rfl factor Ks xyz x y z To specify the specular reflectivity of the current material, you can use the "Ks" statement, the "Ks spectral" statement, or the "Ks xyz" statement. Tip These statements are mutually exclusive. They cannot be used concurrently in the same material. Ks r g b The Ks statement specifies the specular reflectivity using RGB values. "r g b" are the values for the red, green, and blue components of the atmosphere. The g and b arguments are optional. If only r is specified, then g, and b are assumed to be equal to r. The r g b values are normally in the range of 0.0 to 1.0. Values outside this range increase or decrease the relectivity accordingly. Ks spectral file.rfl factor The "Ks spectral" statement specifies the specular reflectivity using a spectral curve. "file.rfl" is the name of the .rfl file. "factor" is an optional argument. "factor" is a multiplier for the values in the .rfl file and defaults to 1.0, if not specified. Ks xyz x y z The "Ks xyz" statement specifies the specular reflectivity using CIEXYZ values. "x y z" are the values of the CIEXYZ color space. The y and z arguments are optional. If only x is specified, then y and z are assumed to be equal to x. The x y z values are normally in the range of 0 to 1. Values outside this range increase or decrease the reflectivity accordingly. Tf r g b Tf spectral file.rfl factor Tf xyz x y z To specify the transmission filter of the current material, you can use the "Tf" statement, the "Tf spectral" statement, or the "Tf xyz" statement. Any light passing through the object is filtered by the transmission filter, which only allows the specifiec colors to pass through. For example, Tf 0 1 0 allows all the green to pass through and filters out all the red and blue. Tip These statements are mutually exclusive. They cannot be used concurrently in the same material. Tf r g b The Tf statement specifies the transmission filter using RGB values. "r g b" are the values for the red, green, and blue components of the atmosphere. The g and b arguments are optional. If only r is specified, then g, and b are assumed to be equal to r. The r g b values are normally in the range of 0.0 to 1.0. Values outside this range increase or decrease the relectivity accordingly. Tf spectral file.rfl factor The "Tf spectral" statement specifies the transmission filterusing a spectral curve. "file.rfl" is the name of the .rfl file. "factor" is an optional argument. "factor" is a multiplier for the values in the .rfl file and defaults to 1.0, if not specified. Tf xyz x y z The "Ks xyz" statement specifies the specular reflectivity using CIEXYZ values. "x y z" are the values of the CIEXYZ color space. The y and z arguments are optional. If only x is specified, then y and z are assumed to be equal to x. The x y z values are normally in the range of 0 to 1. Values outside this range will increase or decrease the intensity of the light transmission accordingly. illum illum_# The "illum" statement specifies the illumination model to use in the material. Illumination models are mathematical equations that represent various material lighting and shading effects. "illum_#"can be a number from 0 to 10. The illumination models are summarized below; for complete descriptions see "Illumination models" on page 5-30.  A factor of 1.0 is fully opaque. This is the default when a new material is created. A factor of 0.0 is fully dissolved (completely transparent). Unlike a real transparent material, the dissolve does not depend upon material thickness nor does it have any spectral character. Dissolve works on all illumination models. d -halo factor Specifies that a dissolve is dependent on the surface orientation relative to the viewer. For example, a sphere with the following dissolve, d -halo 0.0, will be fully dissolved at its center and will appear gradually more opaque toward its edge. "factor" is the minimum amount of dissolve applied to the material. The amount of dissolve will vary between 1.0 (fully opaque) and the specified "factor". The formula is: dissolve = 1.0 - (N*v)(1.0-factor) For a definition of terms, see "Illumination models" on page 5-30. Ns exponent Specifies the specular exponent for the current material. This defines the focus of the specular highlight. "exponent" is the value for the specular exponent. A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. sharpness value Specifies the sharpness of the reflections from the local reflection map. If a material does not have a local reflection map defined in its material definition, sharpness will apply to the global reflection map defined in PreView. "value" can be a number from 0 to 1000. The default is 60. A high value results in a clear reflection of objects in the reflection map. Tip Sharpness values greater than 100 map introduce aliasing effects in flat surfaces that are viewed at a sharp angle Ni optical_density Specifies the optical density for the surface. This is also known as index of refraction. "optical_density" is the value for the optical density. The values can range from 0.001 to 10. A value of 1.0 means that light does not bend as it passes through an object. Increasing the optical_density increases the amount of bending. Glass has an index of refraction of about 1.5. Values of less than 1.0 produce bizarre results and are not recommended. Material texture map Texture map statements modify the material parameters of a surface by associating an image or texture file with material parameters that can be mapped. By modifying existing parameters instead of replacing them, texture maps provide great flexibility in changing the appearance of an object's surface. Image files and texture files can be used interchangeably. If you use an image file, that file is converted to a texture in memory and is discarded after rendering. Tip Using images instead of textures saves disk space and setup time, however, it introduces a small computational cost at the beginning of a render. The material parameters that can be modified by a texture map are: - Ka (color) - Kd (color) - Ks (color) - Ns (scalar) - d (scalar) In addition to the material parameters, the surface normal can be modified. Image file types You can link any image file type that is currently supported. Supported image file types are listed in the chapter "About Image" in the "Advanced Visualizer User's Guide". You can also use the "im_info - a" command to list Image file types, among other things. Texture file types The texture file types you can use are: - mip-mapped texture files (.mpc, .mps, .mpb) - compiled procedural texture files (.cxc, .cxs, .cxb) Mip-mapped texture files Mip-mapped texture files are created from images using the Create Textures panel in the Director or the "texture2D" program. There are three types of texture files: - color texture files (.mpc) - scalar texture files (.mps) - bump texture files (.mpb) Color textures. Color texture files are designated by an extension of ".mpc" in the filename, such as "chrome.mpc". Color textures modify the material color as follows: - Ka - material ambient is multiplied by the texture value - Kd - material diffuse is multiplied by the texture value - Ks - material specular is multiplied by the texture value Scalar textures. Scalar texture files are designated by an extension of ".mps" in the filename, such as "wisp.mps". Scalar textures modify the material scalar values as follows: - Ns - material specular exponent is multiplied by the texture value - d - material dissolve is multiplied by the texture value - decal - uses a scalar value to deform the surface of an object to create surface roughness Bump textures. Bump texture files are designated by an extension of ".mpb" in the filename, such as "sand.mpb". Bump textures modify surface normals. The image used for a bump texture represents the topology or height of the surface relative to the average surface. Dark areas are depressions and light areas are high points. The effect is like embossing the surface with the texture. Procedural texture files Procedural texture files use mathematical formulas to calculate sample values of the texture. The procedural texture file is compiled, stored, and accessed by the Image program when rendering. for more information see chapter 9, "Procedural Texture Files (.cxc, .cxb. and .cxs)". Syntax The following syntax describes the texture map statements that apply to .mtl files. These statements can be used alone or with any combination of options. The options and their arguments are inserted between the keyword and the "filename". map_Ka -options args filename Specifies that a color texture file or a color procedural texture file is applied to the ambient reflectivity of the material. During rendering, the "map_Ka" value is multiplied by the "Ka" value. "filename" is the name of a color texture file (.mpc), a color procedural texture file (.cxc), or an image file. Tip To make sure that the texture retains its original look, use the .rfl file "ident" as the underlying material. This applies to the "map_Ka", "map_Kd", and "map_Ks" statements. For more information on .rfl files, see chapter 8, "Spectral Curve File (.rfl)". The options for the "map_Ka" statement are listed below. These options are described in detail in "Options for texture map statements" on page 5-18. -blendu on | off -blendv on | off -cc on | off -clamp on | off -mm base gain -o u v w -s u v w -t u v w -texres value map_Kd -options args filename Specifies that a color texture file or color procedural texture file is linked to the diffuse reflectivity of the material. During rendering, the map_Kd value is multiplied by the Kd value. "filename" is the name of a color texture file (.mpc), a color procedural texture file (.cxc), or an image file. The options for the map_Kd statement are listed below. These options are described in detail in "Options for texture map statements" on page 5-18. -blendu on | off -blendv on | off -cc on | off -clamp on | off -mm base gain -o u v w -s u v w -t u v w -texres value map_Ks -options args filename Specifies that a color texture file or color procedural texture file is linked to the specular reflectivity of the material. During rendering, the map_Ks value is multiplied by the Ks value. "filename" is the name of a color texture file (.mpc), a color procedural texture file (.cxc), or an image file. The options for the map_Ks statement are listed below. These options are described in detail in "Options for texture map statements" on page 5-18. -blendu on | off -blendv on | off -cc on | off -clamp on | off -mm base gain -o u v w -s u v w -t u v w -texres value map_Ns -options args filename Specifies that a scalar texture file or scalar procedural texture file is linked to the specular exponent of the material. During rendering, the map_Ns value is multiplied by the Ns value. "filename" is the name of a scalar texture file (.mps), a scalar procedural texture file (.cxs), or an image file. The options for the map_Ns statement are listed below. These options are described in detail in "Options for texture map statements" on page 5-18. -blendu on | off -blendv on | off -clamp on | off -imfchan r | g | b | m | l | z -mm base gain -o u v w -s u v w -t u v w -texres value map_d -options args filename Specifies that a scalar texture file or scalar procedural texture file is linked to the dissolve of the material. During rendering, the map_d value is multiplied by the d value. "filename" is the name of a scalar texture file (.mps), a scalar procedural texture file (.cxs), or an image file. The options for the map_d statement are listed below. These options are described in detail in "Options for texture map statements" on page 5-18. -blendu on | off -blendv on | off -clamp on | off -imfchan r | g | b | m | l | z -mm base gain -o u v w -s u v w -t u v w -texres value map_aat on Turns on anti-aliasing of textures in this material without anti- aliasing all textures in the scene. If you wish to selectively anti-alias textures, first insert this statement in the material file. Then, when rendering with the Image panel, choose the anti-alias settings: "shadows", "reflections polygons", or "polygons only". If using Image from the command line, use the -aa or -os options. Do not use the -aat option. Image will anti-alias all textures in materials with the map_aat on statement, using the oversampling level you choose when you run Image. Textures in other materials will not be oversampled. You cannot set a different oversampling level individually for each material, nor can you anti-alias some textures in a material and not others. To anti-alias all textures in all materials, use the -aat option from the Image command line. If a material with "map_aat on" includes a reflection map, all textures in that reflection map will be anti-aliased as well. You will not see the effects of map_aat in the Property Editor. Tip Some .mpc textures map exhibit undesirable effects around the edges of smoothed objects. The "map_aat" statement will correct this. decal -options args filename Specifies that a scalar texture file or a scalar procedural texture file is used to selectively replace the material color with the texture color. "filename" is the name of a scalar texture file (.mps), a scalar procedural texture file (.cxs), or an image file. During rendering, the Ka, Kd, and Ks values and the map_Ka, map_Kd, and map_Ks values are blended according to the following formula: result_color=tex_color(tv)*decal(tv)+mtl_color*(1.0-decal(tv)) where tv is the texture vertex. "result_color" is the blended Ka, Kd, and Ks values. The options for the decal statement are listed below. These options are described in detail in "Options for texture map statements" on page 5-18. -blendu on | off -blendv on | off -clamp on | off -imfchan r | g | b | m | l | z -mm base gain -o u v w -s u v w -t u v w -texres value disp -options args filename Specifies that a scalar texture is used to deform the surface of an object, creating surface roughness. "filename" is the name of a scalar texture file (.mps), a bump procedural texture file (.cxb), or an image file. The options for the disp statement are listed below. These options are described in detail in "Options for texture map statements" on page 5- 18. -blendu on | off -blendv on | off -clamp on | off -imfchan r | g | b | m | l | z -mm base gain -o u v w -s u v w -t u v w -texres value bump -options args filename Specifies that a bump texture file or a bump procedural texture file is linked to the material. "filename" is the name of a bump texture file (.mpb), a bump procedural texture file (.cxb), or an image file. The options for the bump statement are listed below. These options are described in detail in "Options for texture map statements" on page 5- 18. -bm mult -clamp on | off -blendu on | off -blendv on | off -imfchan r | g | b | m | l | z -mm base gain -o u v w -s u v w -t u v w -texres value Options for texture map statements The following options and arguments can be used to modify the texture map statements. -blenu on | off The -blendu option turns texture blending in the horizontal direction (u direction) on or off. The default is on. -blenv on | off The -blendv option turns texture blending in the vertical direction (v direction) on or off. The default is on. -bm mult The -bm option specifies a bump multiplier. You can use it only with the "bump" statement. Values stored with the texture or procedural texture file are multiplied by this value before they are applied to the surface. "mult" is the value for the bump multiplier. It can be positive or negative. Extreme bump multipliers may cause odd visual results because only the surface normal is perturbed and the surface position does not change. For best results, use values between 0 and 1. -boost value The -boost option increases the sharpness, or clarity, of mip-mapped texture files -- that is, color (.mpc), scalar (.mps), and bump (.mpb) files. If you render animations with boost, you may experience some texture crawling. The effects of boost are seen when you render in Image or test render in Model or PreView; they aren't as noticeable in Property Editor. "value" is any non-negative floating point value representing the degree of increased clarity; the greater the value, the greater the clarity. You should start with a boost value of no more than 1 or 2 and increase the value as needed. Note that larger values have more potential to introduce texture crawling when animated. -cc on | off The -cc option turns on color correction for the texture. You can use it only with the color map statements: map_Ka, map_Kd, and map_Ks. -clamp on | off The -clamp option turns clamping on or off. When clamping is on, textures are restricted to 0-1 in the uvw range. The default is off. When clamping is turned on, one copy of the texture is mapped onto the surface, rather than repeating copies of the original texture across the surface of a polygon, which is the default. Outside of the origin texture, the underlying material is unchanged. A postage stamp on an envelope or a label on a can of soup is an example of a texture with clamping turned on. A tile floor or a sidewalk is an example of a texture with clamping turned off. Two-dimensional textures are clamped in the u and v dimensions; 3D procedural textures are clamped in the u, v, and w dimensions. -imfchan r | g | b | m | l | z The -imfchan option specifies the channel used to create a scalar or bump texture. Scalar textures are applied to: transparency specular exponent decal displacement The channel choices are: r specifies the red channel. g specifies the green channel. b specifies the blue channel. m specifies the matte channel. l specifies the luminance channel. z specifies the z-depth channel. The default for bump and scalar textures is "l" (luminance), unless you are building a decal. In that case, the default is "m" (matte). -mm base gain The -mm option modifies the range over which scalar or color texture values may vary. This has an effect only during rendering and does not change the file. "base" adds a base value to the texture values. A positive value makes everything brighter; a negative value makes everything dimmer. The default is 0; the range is unlimited. "gain" expands the range of the texture values. Increasing the number increases the contrast. The default is 1; the range is unlimited. -o u v w The -o option offsets the position of the texture map on the surface by shifting the position of the map origin. The default is 0, 0, 0. "u" is the value for the horizontal direction of the texture "v" is an optional argument. "v" is the value for the vertical direction of the texture. "w" is an optional argument. "w" is the value used for the depth of a 3D texture. -s u v w The -s option scales the size of the texture pattern on the textured surface by expanding or shrinking the pattern. The default is 1, 1, 1. "u" is the value for the horizontal direction of the texture "v" is an optional argument. "v" is the value for the vertical direction of the texture. "w" is an optional argument. "w" is a value used for the depth of a 3D texture. "w" is a value used for the amount of tessellation of the displacement map. -t u v w The -t option turns on turbulence for textures. Adding turbulence to a texture along a specified direction adds variance to the original image and allows a simple image to be repeated over a larger area without noticeable tiling effects. turbulence also lets you use a 2D image as if it were a solid texture, similar to 3D procedural textures like marble and granite. "u" is the value for the horizontal direction of the texture turbulence. "v" is an optional argument. "v" is the value for the vertical direction of the texture turbulence. "w" is an optional argument. "w" is a value used for the depth of the texture turbulence. By default, the turbulence for every texture map used in a material is uvw = (0,0,0). This means that no turbulence will be applied and the 2D texture will behave normally. Only when you raise the turbulence values above zero will you see the effects of turbulence. -texres resolution The -texres option specifies the resolution of texture created when an image is used. The default texture size is the largest power of two that does not exceed the original image size. If the source image is an exact power of 2, the texture cannot be built any larger. If the source image size is not an exact power of 2, you can specify that the texture be built at the next power of 2 greater than the source image size. The original image should be square, otherwise, it will be scaled to fit the closest square size that is not larger than the original. Scaling reduces sharpness. Material reflection map A reflection map is an environment that simulates reflections in specified objects. The environment is represented by a color texture file or procedural texture file that is mapped on the inside of an infinitely large, space. Reflection maps can be spherical or cubic. A spherical reflection map requires only one texture or image file, while a cubic reflection map requires six. Each material description can contain one reflection map statement that specifies a color texture file or a color procedural texture file to represent the environment. The material itself must be assigned an illumination model of 3 or greater. The reflection map statement in the .mtl file defines a local reflection map. That is, each material assigned to an object in a scene can have an individual reflection map. In PreView, you can assign a global reflection map to an object and specify the orientation of the reflection map. Rotating the reflection map creates the effect of animating reflections independently of object motion. When you replace a global reflection map with a local reflection map, the local reflection map inherits the transformation of the global reflection map. Syntax The following syntax statements describe the reflection map statement for .mtl files. refl -type sphere -options -args filename Specifies an infinitely large sphere that casts reflections onto the material. You specify one texture file. "filename" is the color texture file, color procedural texture file, or image file that will be mapped onto the inside of the shape. refl -type cube_side -options -args filenames Specifies an infinitely large sphere that casts reflections onto the material. You can specify different texture files for the "top", "bottom", "front", "back", "left", and "right" with the following statements: refl -type cube_top refl -type cube_bottom refl -type cube_front refl -type cube_back refl -type cube_left refl -type cube_right "filenames" are the color texture files, color procedural texture files, or image files that will be mapped onto the inside of the shape. The "refl" statements for sphere and cube can be used alone or with any combination of the following options. The options and their arguments are inserted between "refl" and "filename". -blendu on | off -blendv on | off -cc on | off -clamp on | off -mm base gain -o u v w -s u v w -t u v w -texres value The options for the reflection map statement are described in detail in "Options for texture map statements" on page 18. Examples 1 Neon green This is a bright green material. When applied to an object, it will remain bright green regardless of any lighting in the scene. newmtl neon_green Kd 0.0000 1.0000 0.0000 illum 0 2 Flat green This is a flat green material. newmtl flat_green Ka 0.0000 1.0000 0.0000 Kd 0.0000 1.0000 0.0000 illum 1 3 Dissolved green This is a flat green, partially dissolved material. newmtl diss_green Ka 0.0000 1.0000 0.0000 Kd 0.0000 1.0000 0.0000 d 0.8000 illum 1 4 Shiny green This is a shiny green material. When applied to an object, it shows a white specular highlight. newmtl shiny_green Ka 0.0000 1.0000 0.0000 Kd 0.0000 1.0000 0.0000 Ks 1.0000 1.0000 1.0000 Ns 200.0000 illum 1 5 Green mirror This is a reflective green material. When applied to an object, it reflects other objects in the same scene. newmtl green_mirror Ka 0.0000 1.0000 0.0000 Kd 0.0000 1.0000 0.0000 Ks 0.0000 1.0000 0.0000 Ns 200.0000 illum 3 6 Fake windshield This material approximates a glass surface. Is it almost completely transparent, but it shows reflections of other objects in the scene. It will not distort the image of objects seen through the material. newmtl fake_windsh Ka 0.0000 0.0000 0.0000 Kd 0.0000 0.0000 0.0000 Ks 0.9000 0.9000 0.9000 d 0.1000 Ns 200 illum 4 7 Fresnel blue This material exhibits an effect known as Fresnel reflection. When applied to an object, white fringes may appear where the object's surface is viewed at a glancing angle. newmtl fresnel_blu Ka 0.0000 0.0000 0.0000 Kd 0.0000 0.0000 0.0000 Ks 0.6180 0.8760 0.1430 Ns 200 illum 5 8 Real windshield This material accurately represents a glass surface. It filters of colorizes objects that are seen through it. Filtering is done according to the transmission color of the material. The material also distorts the image of objects according to its optical density. Note that the material is not dissolved and that its ambient, diffuse, and specular reflective colors have been set to black. Only the transmission color is non-black. newmtl real_windsh Ka 0.0000 0.0000 0.0000 Kd 0.0000 0.0000 0.0000 Ks 0.0000 0.0000 0.0000 Tf 1.0000 1.0000 1.0000 Ns 200 Ni 1.2000 illum 6 9 Fresnel windshield This material combines the effects in examples 7 and 8. newmtl fresnel_win Ka 0.0000 0.0000 1.0000 Kd 0.0000 0.0000 1.0000 Ks 0.6180 0.8760 0.1430 Tf 1.0000 1.0000 1.0000 Ns 200 Ni 1.2000 illum 7 10 Tin This material is based on spectral reflectance samples taken from an actual piece of tin. These samples are stored in a separate .rfl file that is referred to by name in the material. Spectral sample files (.rfl) can be used in any type of material as an alternative to RGB values. newmtl tin Ka spectral tin.rfl Kd spectral tin.rfl Ks spectral tin.rfl Ns 200 illum 3 11 Pine Wood This material includes a texture map of a pine pattern. The material color is set to "ident" to preserve the texture's true color. When applied to an object, this texture map will affect only the ambient and diffuse regions of that object's surface. The color information for the texture is stored in a separate .mpc file that is referred to in the material by its name, "pine.mpc". If you use different .mpc files for ambient and diffuse, you will get unrealistic results. newmtl pine_wood Ka spectral ident.rfl 1 Kd spectral ident.rfl 1 illum 1 map_Ka pine.mpc map_Kd pine.mpc 12 Bumpy leather This material includes a texture map of a leather pattern. The material color is set to "ident" to preserve the texture's true color. When applied to an object, it affects both the color of the object's surface and its apparent bumpiness. The color information for the texture is stored in a separate .mpc file that is referred to in the material by its name, "brown.mpc". The bump information is stored in a separate .mpb file that is referred to in the material by its name, "leath.mpb". The -bm option is used to raise the apparent height of the leather bumps. newmtl bumpy_leath Ka spectral ident.rfl 1 Kd spectral ident.rfl 1 Ks spectral ident.rfl 1 illum 2 map_Ka brown.mpc map_Kd brown.mpc map_Ks brown.mpc bump -bm 2.000 leath.mpb 13 Frosted window This material includes a texture map used to alter the opacity of an object's surface. The material color is set to "ident" to preserve the texture's true color. When applied to an object, the object becomes transparent in certain areas and opaque in others. The variation between opaque and transparent regions is controlled by scalar information stored in a separate .mps file that is referred to in the material by its name, "window.mps". The "-mm" option is used to shift and compress the range of opacity. newmtl frost_wind Ka 0.2 0.2 0.2 Kd 0.6 0.6 0.6 Ks 0.1 0.1 0.1 d 1 Ns 200 illum 2 map_d -mm 0.200 0.800 window.mps 14 Shifted logo This material includes a texture map which illustrates how a texture's origin may be shifted left/right (the "u" direction) or up/down (the "v" direction). The material color is set to "ident" to preserve the texture's true color. In this example, the original image of the logo is off-center to the left. To compensate, the texture's origin is shifted back to the right (the positive "u" direction) using the "-o" option to modify the origin. Ka spectral ident.rfl 1 Kd spectral ident.rfl 1 Ks spectral ident.rfl 1 illum 2 map_Ka -o 0.200 0.000 0.000 logo.mpc map_Kd -o 0.200 0.000 0.000 logo.mpc map_Ks -o 0.200 0.000 0.000 logo.mpc 15 Scaled logo This material includes a texture map showing how a texture may be scaled left or right (in the "u" direction) or up and down (in the "v" direction). The material color is set to "ident" to preserve the texture's true color. In this example, the original image of the logo is too small. To compensate, the texture is scaled slightly to the right (in the positive "u" direction) and up (in the positive "v" direction) using the "-s" option to modify the scale. Ka spectral ident.rfl 1 Kd spectral ident.rfl 1 Ks spectral ident.rfl 1 illum 2 map_Ka -s 1.200 1.200 0.000 logo.mpc map_Kd -s 1.200 1.200 0.000 logo.mpc map_Ks -s 1.200 1.200 0.000 logo.mpc 16 Chrome with spherical reflection map This illustrates a common use for local reflection maps (defined in a material). this material is highly reflective with no diffuse or ambient contribution. Its reflection map is an image with silver streaks that yields a chrome appearance when viewed as a reflection. ka 0 0 0 kd 0 0 0 ks .7 .7 .7 illum 1 refl -type sphere chrome.rla Illumination models The following list defines the terms and vectors that are used in the illumination model equations: Term Definition Ft Fresnel reflectance Ft Fresnel transmittance Ia ambient light I light intensity Ir intensity from reflected direction (reflection map and/or ray tracing) It intensity from transmitted direction Ka ambient reflectance Kd diffuse reflectance Ks specular reflectance Tf transmission filter Vector Definition H unit vector bisector between L and V L unit light vector N unit surface normal V unit view vector The illumination models are: 0 This is a constant color illumination model. The color is the specified Kd for the material. The formula is: color = Kd 1 This is a diffuse illumination model using Lambertian shading. The color includes an ambient constant term and a diffuse shading term for each light source. The formula is color = KaIa + Kd { SUM j=1..ls, (N * Lj)Ij } 2 This is a diffuse and specular illumination model using Lambertian shading and Blinn's interpretation of Phong's specular illumination model (BLIN77). The color includes an ambient constant term, and a diffuse and specular shading term for each light source. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks { SUM j=1..ls, ((H*Hj)^Ns)Ij } 3 This is a diffuse and specular illumination model with reflection using Lambertian shading, Blinn's interpretation of Phong's specular illumination model (BLIN77), and a reflection term similar to that in Whitted's illumination model (WHIT80). The color includes an ambient constant term and a diffuse and specular shading term for each light source. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij } + Ir) Ir = (intensity of reflection map) + (ray trace) 4 The diffuse and specular illumination model used to simulate glass is the same as illumination model 3. When using a very low dissolve (approximately 0.1), specular highlights from lights or reflections become imperceptible. Simulating glass requires an almost transparent object that still reflects strong highlights. The maximum of the average intensity of highlights and reflected lights is used to adjust the dissolve factor. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij } + Ir) 5 This is a diffuse and specular shading models similar to illumination model 3, except that reflection due to Fresnel effects is introduced into the equation. Fresnel reflection results from light striking a diffuse surface at a grazing or glancing angle. When light reflects at a grazing angle, the Ks value approaches 1.0 for all color samples. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij Fr(Lj*Hj,Ks,Ns)Ij} + Fr(N*V,Ks,Ns)Ir}) 6 This is a diffuse and specular illumination model similar to that used by Whitted (WHIT80) that allows rays to refract through a surface. The amount of refraction is based on optical density (Ni). The intensity of light that refracts is equal to 1.0 minus the value of Ks, and the resulting light is filtered by Tf (transmission filter) as it passes through the object. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij } + Ir) + (1.0 - Ks) TfIt 7 This illumination model is similar to illumination model 6, except that reflection and transmission due to Fresnel effects has been introduced to the equation. At grazing angles, more light is reflected and less light is refracted through the object. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij Fr(Lj*Hj,Ks,Ns)Ij} + Fr(N*V,Ks,Ns)Ir}) + (1.0 - Kx)Ft (N*V,(1.0-Ks),Ns)TfIt 8 This illumination model is similar to illumination model 3 without ray tracing. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij } + Ir) Ir = (intensity of reflection map) 9 This illumination model is similar to illumination model 4without ray tracing. The formula is: color = KaIa + Kd { SUM j=1..ls, (N*Lj)Ij } + Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij } + Ir) Ir = (intensity of reflection map) 10 This illumination model is used to cast shadows onto an invisible surface. This is most useful when compositing computer-generated imagery onto live action, since it allows shadows from rendered objects to be composited directly on top of video-grabbed images. The equation for computation of a shadowmatte is formulated as follows. color = Pixel color. The pixel color of a shadowmatte material is always black. color = black M = Matte channel value. This is the image channel which typically represents the opacity of the point on the surface. To store the shadow in the matte channel of the image, it is calculated as: M = 1 - W / P where: P = Unweighted sum. This is the sum of all S values for each light: P = S1 + S2 + S3 + ..... W = Weighted sum. This is the sum of all S values, each weighted by the visibility factor (Q) for the light: W = (S1 * Q1) + (S2 * Q2) + ..... Q = Visibility factor. This is the amount of light from a particular light source that reaches the point to be shaded, after traveling through all shadow objects between the light and the point on the surface. Q = 0 means no light reached the point to be shaded; it was blocked by shadow objects, thus casting a shadow. Q = 1 means that nothing blocked the light, and no shadow was cast. 0 < Q < 1 means that the light was partially blocked by objects that were partially dissolved. S = Summed brightness. This is the sum of the spectral sample intensities for a particular light. The samples are variable, but the default is 3: S = samp1 + samp2 + samp3. |


To support B.C.’s licensed establishments in safely reopening for business while respecting the physical distancing guidelines outlined by the Provincial Health Officer (PHO) orders, this new authorization permits food primary, liquor primary and manufacturer licensees (i.e., wineries, breweries, distilleries) to temporarily expand their service areas until October 31, 2021.
This authorization is subject to any restrictions within the Liquor Control and Licensing Act, Regulations, branch policies and/or original terms and conditions of licensing. It is important to note that this authorization will permit expanded service areas only and will not expand overall occupancy.
To prevent further financial strain for those licensees most impacted by the pandemic, there will be no fees associated with the temporary extension application.
Local governments will have two options for approval of temporary expansion authorizations for liquor primary and manufacturer licences:
If a local government chooses to review all individual requests for liquor primary and manufacturer applications, the LCRB will require those licensees to provide written approval from their local government with their application. Local government approval can be in the form of a letter or email and must include the following information:
Please get in touch with your local government to determine their approach prior to submitting your application.
Since food primary establishments are not generally required to obtain prior local government approval to expand their service areas, the LCRB will continue to process food primary requests for expanded service areas without requiring local government approval. Food primary licensees must ensure they abide by all local bylaws and acquire any necessary permits.
The LCRB will not require evidence from licensees ensuring they have appropriate permissions from local government (including the use of publicly owned spaces like parking lots, sidewalks, etc.) if their local government has selected the blanket-approval option. It is the responsibility of the licensee to ensure they abide by all local bylaws and acquire any necessary permits. However, all applicants will be required to affirm through an online disclosure that they have met all local government requirements.
Licensees who currently have a permanent structural change application under review by the LCRB may still submit a new application for a temporary expansion authorization to allow for the adherence of social distancing requirements within their current occupancy limits.
To submit an application, please fill out the information in the form below.
Please note that the Agricultural Land Reserve (ALR) Use Regulation permits a food and beverage service lounge if the area is no more than 125 m2 indoors and 125 m2 outdoors.
By submitting this application to LCRB, you are confirming that your areas will not exceed the size restrictions set in the ALR Use Regulation or your specific approval from the Commission.
Please upload documents that provide the following information:
In some cases, a licensee may wish to authorize a specific individual to take certain actions on the licensee's behalf and to legally bind the licensee in respect of those matters. For example:
Download the form here.
As the licensee or authorized signatory of the licensee, I hereby confirm that the operation of the extended service area covered by this authorization will comply with all applicable local government by-laws and regulations and that the local government with jurisdiction respecting the licensee’s operations has provided the requisite approval for the extended service area that is the subject to this authorization.
Where the extension area is on property not owned or controlled by the licensee, I hereby confirm that the licensee has received written approval for such use of the property from the property owner.
Section 57(1)(c) of the Liquor Control and Licensing Act states: “A person commits an offence if the person (c) provides false or misleading information in the following circumstances: (i) when making an application referred to in section 12; (ii) when making a report or when required and as specified by the general manager under section 59.


--- layout: page title: "Innovation and Entrepreneurship" prev: None next: OEBPS/004-prefacepage.html book_path: books/peter-f-drucker-innovation-and-entrepreneurship-_oeb/ --- {% include JB/setup %} {% raw %}
Practice and Principles


[gecode-users] Learning in GeCode/SMT
Guido Tack
tack at ps.uni-sb.de
Tue Oct 14 09:10:53 CEST 2008
Max wrote:
> I finally managed to read "Dechter - Backjump-based backtracking for
> constraint satisfaction" and i think it is not restricted to Binary
> Constraints, because it is mentioned several times. And i have not
> found
> the list of allowed pairs in the paper, i thought of nogoods as set of
> domains, not explicit values.
The constraints are given in extension, as tables of allowed tuples
(see e.g. Fig. 1). And you're right, the techniques generalize to non-
binary constraints, but I don't see how they generalize to non-
extensional constraints.
The problem is that systems like Gecode, ILOG Solver, Choco, SICStus
Prolog etc use propagators implementing the constraints. This
technique is not mentioned in Dechter's paper (it is similar to what
they describe as "Backtracking with arc consistency" in 6.3). When
your constraints are implemented by propagators, it is much harder to
explain the reason a certain value was removed from a domain.
> But i can not evaluate the possibilities,
> because i have no idea of how constraint solver do work. I hope the
> CSP
> community will have access to learning algorithms in the future,
> because
> i see a huge potential in them.
Sure, learning is what makes SAT solvers so powerful. It is an
extremely interesting area of research, but it simply isn't understood
well enough to integrate into propagation-based CP solvers yet.
> By the way, can anybody say how the Benchmarks of the paper were
> made if
> no implementations exists of such solvers. I haven't found that in
> the text.
I haven't found any benchmarks in that particular paper. There are
probably prototype implementations of the techniques, maybe you can
ask the authors.
Cheers,
Guido
More information about the gecode-users
mailing list


Questions #1
Strongly
Disagree
1
2
3
4
5
Strongly
Agree
Submit
Mr. D's Super Compatibility Calculator
About You
Name
Link to Photo
Take Survey


After all processing has been completed, the designated output directory for the qap_functional_temporal.py
workflow will contain a set of pdf files that contain the relevant reports for the set of scans undergoing quality assessment. The set of output pdfs includes one pdf file per input scan, e.g.: qap_functional_temporal_sub-01.pdf
, which contains the tSNR maps, FD plot and QC metrics for that scan. There will also be a group report pdf in that main output directory, e.g.: qap_functional_temporal_group.pdf
, that contains summary metrics for the entire set of scans.
The image showing the tSNR map for a particular scan, e.g.:
tSNR volume, subject sub-01 (session_1_func_1)
is the rendering of the temporal signal-to-noise ratio information from the scan.
The tSNR plot is similar to the mean EPI plot generated by the qap_functional_spatial.py
workflow, in that both metrics reduce the 4-dimensional
scan to a representative 3-dimensional volume that is then split and displayed as a stack of
axial (horizontal) slices.
For this tSNR plot, the mean of each voxel's timeseries is
also computed and is then divided by the timeseries standard deviation.
Hence, the tSNR plot shows the voxels in which one would expect to have SNR good enough for statistical analyses.
Differences in tSNR are particularly important for comparing the results from region of
interest (ROI) analyses, since any observed functional differences might actually be attributable
to systematic differences in SNR across the regions being compared.
You can learn more about the utility of tSNR plots for fMRI analyses
here.
The image showing the framewise displacement plot for the scan being assessed, e.g.:
FD, subject sub-01 (session_1_func_1)
is the framewise displacement that occurred throughout the scan. This is a temporal motion quality assurance metric and tracks head motions over time, making it easy to determine whether or not the data potentially suffered from significant corruption due to motion. For instance, it is possible to detect if the participant's head was slowly sinking into the cushions in the head coil, or whether the participant was possibly restless or agitated, which would result in several postion changes or movement spikes. The framewise displacement is a frame-by-frame representation of the differences between the BOLD signal intensity value of the n and n+1 timepoints, the n+1 and n+2 timepoints, and so on. The report page for framewise displacement in the functional scan includes both this frame-by-frame plot, as well as a histogram that can be used to visually determine what proportion of timepoints exceeded some pre-set movement threshold (eg: 0.2 mm).
The metrics displayed in the Summary Report were computed using the qap_functional_temporal.py
workflow and have been displayed as violin plots. Eg:
QC measures (subject sub-01_session_1)
The stars in these plots denote where the score for this particular scan falls in the distribution of all scores for scans that were included as inputs to the the functional-temporal workflow.
The metrics computed are as follows:
All metrics are described in more detail in the Taxonomy of QA Measures section of the QAP documentation. Please refer to the QAP website for descriptions of these metrics.
The violin plots included in the group report, e.g.: QC measures (session_1)
are a graphical representation of the columnar values in the qap_functional_temporal.csv
file that was created in the main output directory for the workflow.
The scores for each metric described above were aggregated to create the distributions that were
plotted in both the individual and group reports. Hence, the violin plots in the individual scan
reports and the group reports are identical, except that the group reports do not contain any
stars denoting individual scans. These group reports are intended to provide the user a means of
visually inspecting the overall quality of the temporal data for that group of functional scans.


[Note that the follow-up is set to rec.arts.sf.written rather than rec.art.sf.movies. This was done on purpose. -Moderator]
THE WHOLE WIDE WORLD A film review by James Berardinelli Copyright 1997 James Berardinelli
RATING (0 TO 10): 8.0 Alternative Scale: ***1/2 out of ****
United States, 1996 U.S. Release Date: 12/25/96 (limited); 1/97 (wider) Running Length: 1:45 MPAA Classification: PG (Mild profanity, mature themes) Theatrical Aspect Ratio: 2.35:1
Cast: Vincent D'Onofrio, Renee Zellweger, Ann Wedgeworth, Harve Presnell, Benjamin Mouton, Michael Corbett, Helen Cates Director: Dan Ireland Producers: Carl-Jan Colpaert, Kevin Reidy, Dan Ireland, and Vincent D'Onofrio Screenplay: Michael Scott Myers based on the novel ONE WHO WALKED ALONE by Novalyne Price Ellis Cinematography: Claudio Rocha Music: Hans Zimmer and Harry Gregory-Williams U.S. Distributor: Sony Pictures Classics
During the course of his short, stormy life, Depression era writer Robert E. Howard created more than two dozen pulp heroes, and wrote hundreds of short stories. His best-known creation, Conan the Barbarian, became so popular during the 1970s and '80s that he spawned comic books, more than fifty original novels (far outstripping Howard's original output), and two motion pictures (CONAN THE BARBARIAN and CONAN THE DESTROYER, both starring Arnold Schwarzenegger). It's said that the best way to know an author is to read his writing, and, as Dan Ireland's THE WHOLE WIDE WORLD shows, Howard was a man who gave his all to his work.
During Conan's resurgence in the 1970s, a lot of things -- many of them profoundly uncomplimentary -- were written and said about the author, who had died some forty years earlier from a self-inflicted gunshot wound. Novalyne Price Ellis, a woman who had enjoyed a special relationship with Howard, decided to set the record straight by revealing "the real Bob Howard." The result was ONE WHO WALKED ALONE, which was published in 1985. This memoir became the basis of THE WHOLE WIDE WORLD, which presents a portrait of Howard as seen through the eyes of a woman who loved him, but would never in return be loved in the same way.
The film opens during 1933 in Brownwood, Texas, with the meeting of Novalyne (Renee Zellweger), a would-be author, and Robert (Vincent D'Onofrio), "the best pulp writer in the whole wide world." The two hit it off almost immediately, despite the difference in their life-views. Over the course of the next three years, their relationship ebbs and flows, with Novalyne falling for Robert in a way that is never reciprocated. It's clear that he cares for her, but he is emotionally unable to commit to a relationship. In his own words: "The road I walk, I walk alone."
Although THE WHOLE WIDE WORLD is primarily a study of the characters and their romantic liaison, Michael Scott Myers' script finds time to explore other fascinating issues, including the philosophy of writing and the power of imagination. Robert and Novalyne spend hours on end debating their craft and the dubious virtues of the Conan stories. He explains to her that "excitement's my specialty... excitement and adventure." When she relates the plot of one of her recent stories, he breaks out laughing.
THE WHOLE WIDE WORLD contains some wonderfully tender moments, including one where Robert and Novalyne hold hands with a glorious, golden sunset in the background. There are also some startling sequences that evoke the state of Robert's mind. In one scene, the camera zooms in on his eyes as he speaks passionately about who Conan is. As his speech becomes more animated, we can hear the distant clang of clashing swords. Ireland uses such innovative audio tricks to open the window to Robert's mental state a little wider. And, while we never fully comprehend the complex workings of the author's mind, we understand that his extreme devotion to his mother (Ann Wedgeworth) lies at the core of his inability to resolve his feelings for Novalyne.
This film would not be as stirring, nor would the love story be as poignant, if not for the dynamic portrayals of the two main actors. Vincent D'Onofrio is commanding as Robert, presenting him as a "morose, ungainly misfit among men" whose shy, gentle nature is occasionally ripped apart by brief, psychotic episodes. Renee Zellweger, who has become a hot prospect after her eye-opening turn in JERRY MAGUIRE, here proves that the talent displayed opposite Tom Cruise was no fluke. Novalyne, not unlike MAGUIRE's Dorothy, is a strong, independent woman - - a spitfire with a vulnerable side. And, considering the strength of her performance, you'd never guess that the role was developed with Olivia D'Abo in mind. (D'Abo was five months pregnant when THE WHOLE WIDE WORLD went into production, and, as a result, was unable to appear.)
There's nothing earthshaking about THE WHOLE WIDE WORLD, a film that is, by the director's own admission, very small. Nevertheless, it successfully accomplishes what it sets out to do, and the result is affecting and involving. So, while it may be true that the best way to get into the mind of Robert E. Howard is to read his stories, seeing THE WHOLE WIDE WORLD will give you an appreciation of a side of him that was never revealed in any Conan yarn.
- James Berardinelli e-mail<EMAIL_ADDRESS>ReelViews web site: http://www.cybernex.net/~berardin
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


| PostgreSQL 9.5.19 Documentation | |||
|---|---|---|---|
| Prev | Up | Chapter 54. Writing A Foreign Data Wrapper | Next |
If an FDW's underlying storage mechanism has a concept of locking individual rows to prevent concurrent updates of those rows, it is usually worthwhile for the FDW to perform row-level locking with as close an approximation as practical to the semantics used in ordinary PostgreSQL tables. There are multiple considerations involved in this.
One key decision to be made is whether to perform early locking or late locking. In early locking, a row is locked when it is first retrieved from the underlying store, while in late locking, the row is locked only when it is known that it needs to be locked. (The difference arises because some rows may be discarded by locally-checked restriction or join conditions.) Early locking is much simpler and avoids extra round trips to a remote store, but it can cause locking of rows that need not have been locked, resulting in reduced concurrency or even unexpected deadlocks. Also, late locking is only possible if the row to be locked can be uniquely re-identified later. Preferably the row identifier should identify a specific version of the row, as PostgreSQL TIDs do.
By default, PostgreSQL ignores locking considerations when interfacing to FDWs, but an FDW can perform early locking without any explicit support from the core code. The API functions described in Section 54.2.4, which were added in PostgreSQL 9.5, allow an FDW to use late locking if it wishes.
An additional consideration is that in READ COMMITTED isolation mode, PostgreSQL may need to re-check restriction and join conditions against an updated version of some target tuple. Rechecking join conditions requires re-obtaining copies of the non-target rows that were previously joined to the target tuple. When working with standard PostgreSQL tables, this is done by including the TIDs of the non-target tables in the column list projected through the join, and then re-fetching non-target rows when required. This approach keeps the join data set compact, but it requires inexpensive re-fetch capability, as well as a TID that can uniquely identify the row version to be re-fetched. By default, therefore, the approach used with foreign tables is to include a copy of the entire row fetched from a foreign table in the column list projected through the join. This puts no special demands on the FDW but can result in reduced performance of merge and hash joins. An FDW that is capable of meeting the re-fetch requirements can choose to do it the first way.
For an UPDATE or DELETE on a foreign table, it
is recommended that the ForeignScan operation on the target
table perform early locking on the rows that it fetches, perhaps via the
equivalent of SELECT FOR UPDATE. An FDW can detect whether
a table is an UPDATE/DELETE target at plan time
by comparing its relid to root->parse->resultRelation,
or at execution time by using ExecRelationIsTargetRelation()
.
An alternative possibility is to perform late locking within the
ExecForeignUpdate
or ExecForeignDelete
callback, but no special support is provided for this.
For foreign tables that are specified to be locked by a SELECT
FOR UPDATE/SHARE command, the ForeignScan operation can
again perform early locking by fetching tuples with the equivalent
of SELECT FOR UPDATE/SHARE. To perform late locking
instead, provide the callback functions defined
in Section 54.2.4.
In GetForeignRowMarkType
, select rowmark option
ROW_MARK_EXCLUSIVE, ROW_MARK_NOKEYEXCLUSIVE,
ROW_MARK_SHARE, or ROW_MARK_KEYSHARE depending
on the requested lock strength. (The core code will act the same
regardless of which of these four options you choose.)
Elsewhere, you can detect whether a foreign table was specified to be
locked by this type of command by using get_plan_rowmark
at
plan time, or ExecFindRowMark
at execution time; you must
check not only whether a non-null rowmark struct is returned, but that
its strength field is not LCS_NONE.
Lastly, for foreign tables that are used in an UPDATE,
DELETE or SELECT FOR UPDATE/SHARE command but
are not specified to be row-locked, you can override the default choice
to copy entire rows by having GetForeignRowMarkType
select
option ROW_MARK_REFERENCE when it sees lock strength
LCS_NONE. This will cause RefetchForeignRow
to
be called with that value for markType; it should then
re-fetch the row without acquiring any new lock. (If you have
a GetForeignRowMarkType
function but don't wish to re-fetch
unlocked rows, select option ROW_MARK_COPY
for LCS_NONE.)
See src/include/nodes/lockoptions.h, the comments for RowMarkType and PlanRowMark in src/include/nodes/plannodes.h, and the comments for ExecRowMark in src/include/nodes/execnodes.h for additional information.


{% extends "layout.html" %} {% block title %}About{% endblock %} {% block css %} {% endblock %}%} {% block content %}
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sint, explicabo dolores ipsam aliquam inventore corrupti eveniet quisquam quod totam laudantium repudiandae obcaecati ea consectetur debitis velit facere nisi expedita vel?
What does this team member to? Keep it short! This is also a great spot for social links!
What does this team member to? Keep it short! This is also a great spot for social links!
What does this team member to? Keep it short! This is also a great spot for social links!


hello james!
Welcome to your Dashboard
total visitors
32669
324 new user
total order placeed
15500
10 new
total profit
$43,900
$340 This Week
delivery peocessing
2600
120 This Week
statistics
income
outcome
global sales by top locations
- north america
- south america
- asia
- africa
product status
margin
profit
lost
others


|
|||||||||||||||||
Background Information This course is to introduce SharePoint 2010 to IT professional who need to understand, install, configure and administrate, and design a Microsoft SharePoint Environment. Who Should Attend The target audience for this course is:
|
UTS Short Courses -
|
9 days to go!
UTS - Developing Windows and Web Applications using
Visual Studio.NET
|
Background Information
UTS has the proud distinction of being the first academic institution in the world to teach participants to develop on the .NET Framework with Visual Studio 2010. The .NET Framework is one of the leading Microsoft development platforms for Windows and Web applications and this short course aims to introduce attendees to the latest Microsoft Development platform Visual Studio 2010.
The framework improves on Java's capabilities, providing an API for multiple languages to generate and communicate with each other through the Common Language Runtime(CLR). Conceptually, .NET languages are not much different to traditional OO languages, however, students and programmers may need a short training course to understand its capabilities, the functionalities, the object and communication structure for these services and the best practices surrounding these technologies.
In this course, participants will be exposed to C# as well as learn how to rapidly create data driven forms on the web and on windows.
Who Should Attend
Who will benefit?
7 days to go!
UTS - SQL Server 2008 for Developers |
Background Information
Participants will design, build, query and develop enterprise
SQL Server 2008 databases and servers.
This is a practical course for the ICT Industry utilizing the
latest SQL Server 2008 (Katmai) developed by Microsoft. SQL
Server 2008 provides much anticipated improvements to the
management studio with Intellisense support, as well as new
geospatial data types and a wealth of programming
enhancements. This course provides attendees with the
knowledge necessary to take advantage of new features provided
by SQL Server 2008. It provides a comprehensive overview of
technologies, security and design best practices with
particular emphasis on hands-on skills.
Who Should Attend
The target audience for this course is:
56 days to go!
UTS - SQL Server 2008 for Business Intelligence |
Background Information
Microsoft SQL Server 2008 is a complete business intelligence (BI) platform that provides the features, tools, and functionality to build both classic and innovative kinds of analytical applications.
Microsoft SQL Server 2008 Business Intelligence components supports the development and use of business intelligence in enterprises of all sizes. It can be used by employees and external parties, not just management and analysts. To this end, SQL Server 2008 is complete, integrated, easy to use, publishes data as web services, delivers excellent performance on commodity hardware and contains many new features that can be used to develop innovative analytical applications.
Who Should Attend
The target audience for this course is:
If you would like to advertise your product or service with SSW or would like to find out more about various advertising opportunities, please email your enquiry to sophiebelle or call: +61 2 9953 3000.
February 2010 |
EmploymentDue to the tremendous growth that our business has experienced over the last few months, we are seeking enthusiastic people to join the SSW team. Our Company is based in Neutral Bay which is one of the most elegant and scenic areas of Sydney. SSW is an Australian owned progressive consulting firm specialising in building, implementing and maintaining Microsoft .NET software applications. We are currently strongly looking for a SharePoint Developer. We are also currently looking for:
|
| Copyright � SSW 1990-2010. All Rights Reserved. | Proudly developed by SSW Sydney Web Design | |||||
|


PharmaNet Site Registration
Sets up individual PharmaNet access accounts at the location or requests setups by the software vendor. They may
be the location’s office administrator, HR lead, operational manager, medical office assistant (MOA), a
practitioner, or the software vendor. May also be the Signing Authority.


House Monitor Dashboard
Dinosaur Name Feed
Cinnamon Roll Stock
0
Pi Project Completion
0%
DIY Tasks Completed
0
Back Lawn Grass Height Checker
Pond Wildlife
Frogs
Toads
Newts
Sharks
Crocodiles


<lcAttitude>
The <lcAttitude>
describes mental
state that influences the choices of personal
actions.
Category: Learning and training: common content elements


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface MessageUpcall
Describes the interface for upcall based communication.
Creating a ReceivePort
with a MessageUpcall
allows for
upcall based communication.
The ReceivePort
must be created with the
Ibis.createReceivePort(PortType, String, MessageUpcall)
method,
or one of its other variants with a MessageUpcall
parameter.
After the receive port is created, upcalls can be enabled through the
ReceivePort.enableMessageUpcalls()
call, and disabled through the
ReceivePort.disableMessageUpcalls()
call. Initially, upcalls are
disabled.
For a given receive port, only one message can be active at any time,
and by default, the message is active as long as the upcall is active.
However, the message can be de-activated using the
ReadMessage.finish()
call. This is the only way in which
a receive port can have more than one active upcall.
Note: to prevent deadlocks, upcalls are not allowed to block in condition synchronization or network access as long as the message is active. However, upcalls are allowed to enter/exit synchronized methods for critical section operations.
| Method Summary | |
|---|---|
void |
upcall(ReadMessage readMessage)
This is the upcall announcing the receipt of a ReadMessage . |
| Method Detail |
|---|
void upcall(ReadMessage readMessage) throws IOException, ClassNotFoundException
ReadMessage
.
If the upcall throws an exception, the message is to be
considered finished. In this case, implementations should call
ReadMessage.finish()
or, in case of an IOException
,
ReadMessage.finish(IOException)
.
readMessage
- the message received.
IOException
- may be thrown by any of the methods invoked on the message.
ClassNotFoundException
- may be thrown by a ReadMessage.readObject()
call.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Use character count indicators when users are likely to exceed character limits. Indicators are useful when technical requirements lead to restrictive character limits or when user entries are freeform and could be very long.
Don’t use character count indicators when character limits are apparent or implied by the data type.
Don’t use character count indicators on inputs when users are unlikely to exceed character limits. Use normal form validation instead.
The character count indicator component extends the form classes that define styles and the appearance of input field states.
For validation messages when users exceed character limits, use the following format:
Limit <input field label> to <n> characters.
The character count indicator always appears in the top right above the input field. Long field labels do not displace indicators. The labels wrap to multiple lines instead.


Professors: We have monthly report to professors and they provide valuable advice to us each time.
Thanks to Biological Experiment Teaching Center of School of Bioengineering, Dalian University of Technology for providing us a specific laboratory to finish our project.
Thanks to Laboratory center of basic chemistry of School of Chemistry, Dalian University of Technology for providing us a laboratory to prepare AuNPs.
Thanks to Key Laboratory of Industrial Ecology and Environmental Engineering of School of Environmental Science and Technology, Dalian University of Technology for providing us Confocal Laser Scanning Microscope.
Thanks to Professor Huanan Wang's Lab in Dalian University of Technology for providing us equipment to measure DLS size distribution.
Thanks to Biomass Conversion Technology Group of Dalian Institute of Chemical Physics, Chinese Academy of Sciences for providing us Flow cytometer.
Thanks to Professor Lulu Han's research group in Dalian University of Technology for providing us MCF-7 and A431 cells.
Thanks to Professor Miao Wang's research group in Dalian University of Technology for providing us HeLa cells.
Thanks to Biomolecular Functional Research Group of Dalian Institute of Chemical Physics, Chinese Academy of Sciences for providing us MCF-7 cells.
During the project, we had a lot of problems, and thanks to the help of these teachers, so that we can successfully complete our project.
Prof. Xinkui Wang
We decided to use AuNPs to verify whether the aptamer binds to kanamycin, so we asked Prof. Wang for help on how to prepare AuNPs and improving our experimental protocol.
Prof. Mahinur Akkaya
The preparation of the circular template is the most important part of our experiment, but we don't know exactly how to separate the prepared circular template. Thanks to Prof. Akkaya for helping us solve this problem.
Prof. Dongsheng Liu
For DNA hydrogels, we know very little about it, so we asked experts in this field for help. Prof. Liu provided us with a variety of methods to detect the degree of hydrogel formation.
Thanks to the doctor at Liaoning Cancer Hospital for providing the situation of patients macroscopically.
Thanks to the High School Attached to Dalian University of Technology for supporting our science projects.
Thanks to the debating team of Dalian University of Technology.
Thanks to the iGEM team: XMU_China.
Thanks to the iGEM team: Athens, CSMU, Taiwan, Strasbourg, Madrid, BOKU-Vienna and Cornell.
Thanks to the iGEM team: NEU_China.
Thanks to the Conference of China iGEMer Community (CCiC).
As a team from China, it is a great cost to travel to Boston and participate in this year’s iGEM, however, we are fortunate enough to have three generous sponsors. We are grateful to Dalian University of Technology, especially to School of Bioengineeering, International Office, School of Innovation and Enterpreneurship, Alumni Association of DUT, also to Fengmuyuan Technology Co., Ltd. (Dalian, China) and Baoxing Bio-Equipment Engineering Co., Ltd. (Shanghai, China) for supporting us financially.


{{thisDeviceName()}}
Upgrade To {%version%}
Upgrade To {%version%}
Help
{{ account.Name }}
Account
Logout
Home page
Documentation
Support
Statistics
Changelog
Bugs
Source Code


{% extends 'master.html' %} {% block content %}
Forgot Password
Your account [{{ request.user.username }}] is not authorized to view this content.
If you believe this message is in error please contact AskIT.


The
Native File System API
is not supported in this browser yet, and Text Editor is running
in legacy mode. In legacy mode, the file modified indicators are not shown.
If you're running Chrome, you can enable the Native File System
APIs by enabling the #native-file-system-api
flag in chrome://flags.
Text Editor is a simple text editor similar to notepad that makes
it easy to edit text files on your local file system. It shows how
to easily use the new HTML5 Native File System APIs. To learn more
about the Native File System APIs and how this demo was built, check out
The native file system APIs article on Web Fundamentals, or see the
source code on GitHub.
Written by Pete LePage.
Last Updated: [[BUILD_DATE]] (v[[VERSION]])


Click Next if you are satisfied with your shape.
Click Edit Shape if you would like to make changes to your shape.
Click Add Shape if you would like to add more shapes to your drawing (multipolygon).
Edit Shape
Add Shape
Click and drag the handles or vertices of the shape.
When you are done, click Done Editing below.
Done Editing


Other Usefull Tools
MTK Droid Tool
MTK droid tools is a simple and user friendly software developed by Mediatek Inc. which you can use for rooting, backing up stock firmware or flash your Android mobile. As well as you can create scatter file for Mediatek devices and backup or restore device IMEI. Also Keep in mind that MTK tools specially designed for Mediatek devices. So it might not work properly on other types of chipsets. Be aware about that rooting or flashing IMEI may void your device warranty. Do it at your own risk!!!
IMEI Writing Tools
IMEI writing tools allows you to flash IMEI on your Smartphones and tablets of various chipsets including MediaTek, SpreadTrum and more devices. Do at your own risk. It may void your warrenty.
Rooting Tools
We are having vide variety of rooting tools for mobiles.


This repository contains documentation for the PowerVR SDK.
Available documents:
- SDK Browser
- Framework Manuals
- Reference Documentation
What is the PowerVR SDK?
The SDK supports iOS, Android and Linux PowerVR devices. It also supports Windows, OS X and Linux PC emulation. Imagination's OpenGL ES emulation library, PVRVFrame, can be downloaded from our website here.
The SDK includes optimized example applications to demonstrate the most efficient ways of implementing common 3D graphics effects on PowerVR graphics cores. It also includes a cross-platform OS and graphics API abstraction layer, and a library of helper code for resource loading, vector and matrix maths, text printing and more.
SDK Browser
The SDK Browser provides an overview of the PowerVR SDK, including a introduction to its features and dependencies, instructions for building the SDK locally, a summary of the various modules which make up the SDK Framework, and a list of all of the available code examples.
Framework Manuals
The PowerVR SDK Framework is a collection of modules intended to make graphics application development much easier.
Each module has an associated reference manual which summarises the files and classes which make up the module.
- PVRVk - PVRVk provides a simplified abstraction of the Vulkan API.
- PVRAssets - PVRAssets is a simple way to load and handle assets, in particular those in PowerVR formats.
- PVRShell - PVRShell provides a basic structure for developing Vulkan and OpenGL ES applications.
- PVRCamera - PVRCamera helps when developing with hardware camera.
- PVRCore - PVRCore provides core which helps with performing common tasks, and links the other modules together.
- PVRUtils - PVRUtils works directly with the rendering API by providing tools to simplify boilerplate API code
Reference Documentation
The PowerVR SDK package contains a collection of reference documentation to help you develop effectively for PowerVR devices.
The SDK Browser gives a list of the available documentation along with links to access the individual documents in PDF form.
This list can be found here


From Here, you have acess to all the data of this website, so use it carefully.
And don't share this link to anyone...
This is for home page data...
Names of files should be
- logo.png
- home-animation.gif
- photography-original-feature.jpg
- photography-edited-feature.jpg
- video-feature.mp4
- graphics-feature.jpg
- animation-feature.mp4
- web-feature.gif
- freelancing-work1.jpg
- freelancing-work2.jpg
- freelancing-work3.jpg
- freelancing-work4.jpg


Donation Organization
for charity works
Home
Volunteer
Donate
Projects
About Us
Fill this form
Full Name
Age
Phone Number
Profle Picture
Gender
Male
Female
Office
Zarqa
Amman
Irbid
Submit
Check Events
Zarqa RunnerUps
Zarqa Donations
Zarqa FoodFest
Amman Donations
Amman RunnerUps
Amman FoodFest
Irbid Donations
Irbid RunnerUps
Irbid FoodFest


MS Trusted Most to Provide Security Systems
Here. "One of the most surprising results of the 2003 InfoWorld Security Survey is that more respondents trust Microsoft to deliver companywide enterprise OS security than they do any other vendor."
Nice to know folks trust us about *something*. : )


% for (var css in htmlWebpackPlugin.files.css) { %><% } %>
It seems that you have JavaScript disabled. Visit this site to obtain instructions on how to enable JavaScript.


Film review by Kevin Patterson
The Elephant Man (PG, 1980) Written by Eric Bergren, Christopher DeVore, and David Lynch. Directed by David Lynch. Starring Anthony Hopkins, John Hurt.
The Elephant Man is based on the true story of John Merrick, a man born so horribly disfigured that he was put in a carnival freak show, where he got his nickname "Elephant Man." Assumed to be a complete imbecile and exploited by the freak show owner, his plight was ignored until he was taken to the hospital for beatings from his owner. It was there that Dr. Frederick Trieves discovered that Merrick was in fact quite intelligent and could hold conversation like anyone else; painfully aware of his own humiliation, he had always been afraid to speak.
Fine performances are turned in by Anthony Hopkins as Dr. Trieves, the well-meaning physician who nevertheless realizes he is walking a fine line between genuinely helping Merrick and using the case for the sake of notoriety among the medical community, and by John Hurt as Merrick. Hurt successfully plays his character as someone who is very grateful for the chance finally to experience life as a human rather than as an animal in a zoo and approaches everything with both the wonder of a child and the wisdom of an adult. It is this characterization that, more than anything else, makes The Elephant Man such a powerful story: it is impossible not to sympathize with Merrick. Director David Lynch, who is well-known for his bizarre films, appropriately puts aside his usual weirdness here to concentrate on the story; he in fact possesses an almost equal flair for emotional intensity, which serves this film well.
There are two minor flaws in The Elephant Man- first of all, the sequence in which Merrick is kidnapped by his former owner and put back in the carnival is merely glossed over; he escapes and returns to Dr. Trieves almost immediately. I can't help but think that to be dragged back to his status as a circus freak after years of building up his self-respect from nothing must have been more significant in the life of the real John Merrick; this deserved more time. (On the other hand, this part does at least pave the way for what is perhaps the climax of the film, when Merrick finally has the courage to declare, "I am not an animal! I am a human being!") Second of all, many of the transitions between scenes suffered from inexplicably choppy editing. I am not someone who usually notices that kind of thing in a film, but it's kind of hard not to notice that the screen is starting to fade out while a character is still talking.
These small problems, however, do not change the status of The Elephant Man as a classic drama and a wonderfully told story of the strength of human dignity. Hats off to Hurt, Hopkins, and Lynch for this one.
Grade: A-
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


{% extends 'base.html' %} {% from 'launch_button.html' import launch_button %} {% block container %}
In this project, you will play Minecraft with a bot that is there to help you. Use the in-game chat to talk to the bot. Tell it where to go. Tell it what to do. Try to build something with its help.
For this project, you are asked to interact with the bot for 10 minutes. You may ask it to do anything you'd like. Explore what the bot can and cannot do.
The bot may ask you questions so it can learn over time. Please try to answer the questions it asks you.
When you are done, you will be asked to fill out a quick survey to help improve the bot.
Facebook AI Research will process the log of your game actions and in-game chats in accordance with our Data Policy. The log of your in-game actions and chats with the bot will be recorded for research purposes, and may be used by and/or shared with third parties in connection with this research. This may involve public disclosure of the log as part of a research paper or data set. We will take measures to remove any information that directly identifies you before doing so, but cannot guarantee that the logs will be completely anonymous. Do not send sensitive or personally identifiable information (for example, name, address, email, or phone number) in chats to the bot, and do not build structures with personally identifiable information (for example writing your name in blocks). Facebook's Community Standards apply and you may not use any racist, sexist, or otherwise offensive language. If you violate our policies you may be blocked.


{% extends 'layout.html' %} {% block content %} 404 Sorry but the requested page is not found ! Here are some usefull links Homepage {% endblock %}
Sorry but the requested page is not found !


Richard Hollamby, COWI UK Bridge, RIHY
2018-02-27
Provides useful classes and functions to faciliate the general dynamic analysis of 2nd order structural systems, as characterised by their mass, stiffness, damping and constraints.
This package is intended to serve as a structured repository for such content. At present all modules are written by Richard Hollamby (COWI UK Bridge, RIHY). However the aim is that others should feel able (and are strongly encouraged!) to participate by submitting improvements. The only proviso for this is that code improvements should be written to be project-independent.
The overriding aim is for this package to be reliable, testable, and developed in such a way that its performance and capabilities improve with time, due to time investment made during projects.
Applications include (but are not limited to):
Time history analysis:
Based on full mass, stiffness and damping matrices
As above, but for systems with multi-point constraints
For systems represented by a (usually truncated) set of modes
For systems with non-proportional damping
TMD design and analysis
Response spectrum analysis of ground motion time series data
Pedestrian response analyses:
Transient response per UK NA to BS EN 1992-1 approach (walkers/joggers)
Steady-state crowd loading:
UK NA to BS EN 1992-1 approach (vertical response)
HiVoSS approach (vertical and lateral responses)
Lateral instability under crowd loading
Benefits of using this package:
Fully-documented python API (see Docs link), where a rich html API
is generated from docstrings in source code using pdoc
and Markdown syntax.
All routines written in Python 3, to allow dynamic analysis to be carried
out within a more general routine, or used as an import
in IPython notebook
As everything is public (in principle) in Python, users familiar with the source code have options:
Add new functionality, to extent the capabilities of this package (please consult RIHY to discuss long-term incorporation of improvements)
Tweak existing functionality, for a given application (this is generally project-specific, so would not be incorporated)
This project is hosted on GitHub and uses Git to provide robust version control


University
IUB
NSU
School
SECS
SB
Major
CSE
BBA
Report Date:
Number of students for the year:
Number of staff:
Upload
Submit
Delete
Clear


Issue: FORMAT-ATSIGN-COLONReferences: FORMAT description (p386)
Category: CLARIFICATION
Edit history: Version 1 by Pitman 02/27/87
Version 2 by cleanup committee 15-Mar-87
Version 3 by Masinter 15-Mar-87
Version 4 by Masinter 5-Jun-87
Problem Description:
CLtL describes the format op syntax as:
"a format directive consists of a tilde (~), optional prefix parameters
separated by commas, optional colon (:) and atsign (@) modifiers, and a
single character indicating what kind of directive this is."
CLtL uses :@ fairly consistently throughout without saying whether @: is
legal. Is @: allowed?
Proposal (FORMAT-ATSIGN-COLON:OK):
There is no required ordering between the @ and : modifier.
Rationale:
This is currently underspecified, and this way of specifying it will
cause the least disruption to user code.
Current practice:
Most implementations accept these in either order. Some implementations
have been known to expect only<EMAIL_ADDRESS>Adoption Cost:
The change to accept either syntax is probably quite trivial.
Benefits:
Having @: and :@ mean different things would be awkward.
Conversion Cost:
Existing user code would be unaffected.
Aesthetics:
Leaving these unordered is slightly simpler conceptually.
Discussion:
The cleanup committee supports this clarification.


var argument: Argument?
The argument that caused this error. This may be set after the error is thrown.
argument - The argument that caused this error. This may be set after the error is thrown.
argument


A simple Angular Directive to easily determine if a element in in the viewport.
Number of times elment entered or left viewport {{count}}
Scroll Down and view log to see the inViewport event.
To install this library, run:
npm install @ngx-lite/in-viewport --save
and then from your Angular
AppModule
:


Welcome the R graph gallery, a collection of charts made with the R programming language. Hundreds of charts are displayed in several sections, always with their reproducible code available. The gallery makes a focus on the tidyverse and ggplot2. Feel free to suggest a chart or report a bug; any feedback is highly welcome. Stay in touch with the gallery by following it on Twitter or Github


This guest post by Robert Carpenter will introduce you to Amber, a Rails/Phoenix-like web framework for Crystal. Don’t forget to reach out to us if you want to share some experience of your own.
The Amber Framework is a young and growing web framework written in our favorite language, Crystal. It shares many similarities with Rails, but - like Crystal itself - compatibility with Rails is not a design goal.
Here are a few reasons why I <3 Amber:
- Familiar framework design
- Compile time checks that save your sanity and maybe even your soul
- Open and welcoming framework development team
- Raw Speed
Familiar Framework Design
Amber projects follow similar design to Rails and other MVC focused web frameworks. It borrows organization and concepts where they’re successful and builds on that foundation where developer efficiency or simplicity can be improved.
Rails veterans will recognize many of these files and folders immediately:
Models, views, controllers, and migrations are all right where you’d expect them. You’ll feel right at home. Environment config files follow a familiar style and a working asset pipeline is available right out of the box, if you want it (thanks to webpack).
Compile Time checks
Thanks to Crystal, a large portion of an Amber project is evaluated at compile time. Never again get an email from production complaining about something so mundane as a Missing Template
, controller#action missing
, or Undefined method .downcase for nil:NilClass
.
Amber even parses and compiles templates and layout files which not only verifies that the code is calling methods and getters safely, it saves a lot of time during a request.
Crystal does a great job of complaining when a method call on a variable isn’t valid for all possible types of that variable. Amber uses that power to ensure the application isn’t going to break at runtime wherever possible.
Observe what happens when compiling an Amber application with this broken template:
The compiler complains, notifies you of the problem, and even suggests a correction:
These compile time checks can save your sanity when an accidental typo slips its way into your routes file, or accidentally forgetting to commit a view template.
Open and welcoming dev team
The Amber project is active. Development on the tools, framework, libraries, and documentation is constant. Yet I’ve felt welcomed into the fold as an Amber contributor as the core team readily reviews and merges my pull requests, discusses framework direction and goals, and openly accepts suggestions and contributions from casual contributors as well as frequent benefactors. This picture is from the Github Pulse and shows how active the project has been this month:
Raw Speed
Last but certainly not least, thanks to Crystal, Amber is fast. The compiled web is real, and it’s far more friendly now than ever before.
Check out this log excerpt from a project I’ve been working on:
This particular request is slow by Amber standards, but it checks all the boxes:
- SELECT queries across several tables1
- validating logged-in user session, and authenticating access for the request2
- rendering html views (not just JSON)3
Compare to a page with similar database and rendering overhead in a Rails 5 application:
That’s right. Thanks to the speed of Crystal, Amber can complete an entire request in about the same amount of time it takes Rails to query the database. That means each server can handle more traffic, is more resilient to denial of service, and every page is more responsive4.
For a real sample of speed, this excerpt is from a basic Read route such as this:
Or even faster, serving a static file:
Amazingly, because Amber views are compiled in, rendering a template and layout can be significantly faster than serving static files when the application is configured for it5:
No matter what your application is doing, Amber can do it faster.
Summary
A lot of software is written for the web today. Ruby and Rails showed the world that development doesn’t need to be painful for developers. Crystal is a language where development ease meets speed, and Amber is a framework built on that tradition. Developer friendliness meets raw speed and power, for the web. Or to borrow from Amber’s tag-line: Productivity. Performance. Happiness.