|
|
CIFXRenderServices Class ReferenceInheritance diagram for CIFXRenderServices:
List of all members.
|
Public Member Functions |
| U32 IFXAPI | AddRef () |
| U32 IFXAPI | Release () |
| IFXRESULT IFXAPI | QueryInterface (IFXREFIID interfaceId, void **ppInterface) |
| IFXRESULT IFXAPI | RegisterRenderer (U32 uRenderId, IFXREFCID cidRender, IFXREFCID cidRenderDevice) |
| IFXRESULT IFXAPI | CreateRenderer (U32 &uRenderId, IFXRenderPtr &rRender, U32 uMonitorNum) |
| IFXRESULT IFXAPI | GetRenderDevice (IFXREFCID cidRenderDevice, U32 uDeviceNum, IFXRenderDevicePtr &rRenderDevice) |
| IFXRESULT IFXAPI | ResetSupportedInfo () |
| IFXRESULT IFXAPI | SetNotSupported (U32 uRenderId) |
| BOOL IFXAPI | GetSupported (U32 uRenderId) |
| BOOL IFXAPI | GetRecommended (U32 uRenderId) |
| IFXRESULT IFXAPI | SetRecommended (U32 uRenderId, BOOL bRecommended) |
| U32 IFXAPI | GetRequestedRenderId () |
| IFXRESULT IFXAPI | SetRequestedRenderId (U32 uRenderId) |
| U32 IFXAPI | GetSafeRenderId () |
| IFXRESULT IFXAPI | SetSafeRenderId (U32 uRenderId) |
| BOOL IFXAPI | GetDefaultAAEnalbed () |
| IFXRESULT IFXAPI | SetDefaultAAEnabled (BOOL bEnabled) |
| IFXenum IFXAPI | GetDefaultAAMode () |
| IFXRESULT IFXAPI | SetDefaultAAMode (IFXenum eAAMode) |
| IFXRESULT IFXAPI | SetTextureRenderFormat (IFXenum eTexFormat) |
| IFXRESULT IFXAPI | SetPixelAspectRatio (F32 fRatio) |
| IFXRESULT IFXAPI | SetDepthBufferFormat (IFXenum eDepthFormat) |
| IFXRESULT IFXAPI | SetVSyncEnabled (BOOL bEnabled) |
| IFXenum IFXAPI | GetTextureRenderFormat () |
| F32 IFXAPI | GetPixelAspectRatio () |
| IFXenum IFXAPI | GetDepthBufferFormat () |
| BOOL IFXAPI | GetVSyncEnabled () |
| U32 IFXAPI | GetColorBufferDepth () |
| U32 IFXAPI | GetNumDevices () |
| const IFXMonitor *IFXAPI | GetMonitors (U32 &uNumMonitors) const |
| IFXRESULT IFXAPI | DeleteTexture (U32 uTextureId) |
| IFXRESULT IFXAPI | DeleteStaticMesh (U32 uId) |
| IFXRESULT IFXAPI | RegisterRenderContext (IFXRenderContext *pRC) |
| IFXRESULT IFXAPI | UnregisterRenderContext (IFXRenderContext *pRC) |
| IFXRESULT IFXAPI | PurgeDevices () |
| IFXRESULT IFXAPI | Reset () |
Protected Member Functions |
| | CIFXRenderServices () |
| virtual | ~CIFXRenderServices () |
| CIFXRenderType *IFXAPI | FindRenderType (IFXREFCID cidRender) |
| CIFXRenderType *IFXAPI | FindRenderType (U32 uRenderId) |
| CIFXRCListEntry *IFXAPI | FindRC (IFXRenderContext *pRC) |
| IFXRESULT IFXAPI | CreateRenderer (IFXRenderPtr &rRender, U32 uDeviceNum, U32 uRenderId) |
| IFXRESULT IFXAPI | Construct () |
Static Protected Member Functions |
static CIFXRenderServices
*IFXAPI | GetSingleton () |
Protected Attributes |
| IFXRESULT | m_iInitialized |
| U32 | m_uNumDevices |
| CIFXRCListEntry * | m_pRenderContexts |
| U32 * | m_puBestRenderers |
| U32 | m_uRequestedRenderer |
| U32 | m_uSafeRenderId |
| U32 | m_uNumRenderTypes |
| CIFXRenderType * | m_pRenderTypes |
| U32 | m_uNumMonitors |
| IFXMonitor * | m_pMonitors |
| IFXenum | m_eTextureRenderFormat |
| F32 | m_fPixelAspectRatio |
| IFXenum | m_eDepthBufferFormat |
| BOOL | m_bVSyncEnabled |
| BOOL | m_bAAEnabled |
| IFXenum | m_eAAMode |
Static Protected Attributes |
| static CIFXRenderServices * | ms_pSingleton = 0 |
Private Attributes |
| U32 | m_refCount |
Friends |
| IFXRESULT IFXAPI_CALLTYPE | CIFXRenderServicesFactory (IFXREFIID intId, void **ppUnk) |
Constructor & Destructor Documentation
| CIFXRenderServices::CIFXRenderServices |
( |
|
) |
[protected] |
|
| CIFXRenderServices::~CIFXRenderServices |
( |
|
) |
[protected, virtual] |
|
Member Function Documentation
| U32 CIFXRenderServices::AddRef |
( |
|
) |
[virtual] |
|
|
|
This method increments the reference count for an interface on a component.
- Note:
- It should be called for every new copy of a pointer to an interface on a given component.
- Returns:
- It returns a U32 that contains a value from 1 to 2^32 - 1 that defines the new reference count. The return value should only be used for debugging purposes.
Implements IFXUnknown. |
| IFXRESULT CIFXRenderServices::Construct |
( |
|
) |
[protected] |
|
| IFXRESULT CIFXRenderServices::CreateRenderer |
( |
IFXRenderPtr & |
rRender, |
|
|
U32 |
uDeviceNum, |
|
|
U32 |
uRenderId |
|
) |
[protected] |
|
| IFXRESULT CIFXRenderServices::CreateRenderer |
( |
U32 & |
uRenderId, |
|
|
IFXRenderPtr & |
rRender, |
|
|
U32 |
uMonitorNum |
|
) |
|
|
| IFXRESULT CIFXRenderServices::DeleteStaticMesh |
( |
U32 |
uId |
) |
[virtual] |
|
|
|
Deletes a cached static mesh from all instances of IFXRenderContext.
- Parameters:
-
| uId | Input U32 containing the id of the static mesh to be deleted. |
- Returns:
- An IFXRESULT value.
- Return values:
-
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::DeleteTexture |
( |
U32 |
uTextureId |
) |
[virtual] |
|
|
|
Deletes a texture from all instances of IFXRenderContext.
- Parameters:
-
| uTextureId | Input U32 containing the id of the texture to be deleted. |
- Returns:
- An IFXRESULT value.
- Return values:
-
Implements IFXRenderServices. |
| U32 CIFXRenderServices::GetColorBufferDepth |
( |
|
) |
[virtual] |
|
|
|
Gets the current bit depth of the color buffer.
This is identical to the current color depth of the primary monitor.
- Returns:
- A U32 value containing the number of bits per pixel in the color buffer (8/16/32).
Implements IFXRenderServices. |
| BOOL CIFXRenderServices::GetDefaultAAEnalbed |
( |
|
) |
[virtual] |
|
|
|
Gets the user-defined default anti-aliasing enabled state.
- Returns:
- A BOOL value.
- Return values:
-
| TRUE | Anti-aliasing is enabled by default. |
| FALSE | Anti-aliasing is disabled by default. |
Implements IFXRenderServices. |
| IFXenum CIFXRenderServices::GetDefaultAAMode |
( |
|
) |
[virtual] |
|
|
|
Gets the user-defined default anti-aliasing mode.
- Returns:
- An IFXenum value.
- Return values:
-
| IFX_AA_2X | 2X anti-aliasing is used. |
| IFX_AA_3X | 3X anti-aliasing is used. On many cards this is Quincunx* anti-aliasing. |
| IFX_AA_4X | 4X anti-aliasing is used. |
| IFX_AA_4X_SW | 4X anti-aliasing using software emulation is used. this is very slow. |
Implements IFXRenderServices. |
| IFXenum CIFXRenderServices::GetDepthBufferFormat |
( |
|
) |
[virtual] |
|
|
|
Retrieves the currently set depth buffer format.
- Returns:
- An IFXenum value containing the current depth buffer format.
- Return values:
-
| IFX_DEPTH_D16S0 | 16-bit depth, no stencil |
| IFX_DEPTH_D32S0 | 24-bit depth, no stencil |
| IFX_DEPTH_D24S8 | 24-bit depth, 8-bit stencil |
Implements IFXRenderServices. |
| const IFXMonitor * CIFXRenderServices::GetMonitors |
( |
U32 & |
uNumMonitors |
) |
const [virtual] |
|
|
|
Retrieves information about all monitors attached to the system and usable for displaying rendered content.
- Parameters:
-
| uNumMonitors | Reference to a U32 that will receive the number of usable monitors attached to the system. |
- Returns:
- A pointer to an IFXMonitor array (of length uNumMonitors) that contains information about each monitor in the system.
Implements IFXRenderServices. |
| U32 CIFXRenderServices::GetNumDevices |
( |
|
) |
[virtual] |
|
|
|
Gets the number of video cards attached to the system.
This may be different than the number of display devices (multiple monitors could be attached to a single video card).
- Returns:
- A U32 value containing the number of video cards present in the system that are usable for rendering.
Implements IFXRenderServices. |
| F32 CIFXRenderServices::GetPixelAspectRatio |
( |
|
) |
[virtual] |
|
| BOOL CIFXRenderServices::GetRecommended |
( |
U32 |
uRenderId |
) |
[virtual] |
|
|
|
Retrieve the user-defined "recommended" flag for the specified renderer type.
All renderers have this flag default to TRUE (recommended) upon registration.
- Parameters:
-
| uRenderId | The renderer type id corresponding to a registered renderer type. |
- Returns:
- A BOOL value.
- Return values:
-
| TRUE | The renderer type is recommended. |
| FALSE | The renderer type is not recommended. This is due to previous call to SetRecommended(). This could also be caused by an invalid uRenderId value. |
Implements IFXRenderServices. |
| U32 CIFXRenderServices::GetRequestedRenderId |
( |
|
) |
[virtual] |
|
|
|
Gets the user-defined requested renderer type ID.
- Returns:
- A U32 value containing the currently set requested renderer type id.
Implements IFXRenderServices. |
| U32 CIFXRenderServices::GetSafeRenderId |
( |
|
) |
[virtual] |
|
|
|
Gets the user-defined "safe" renderer type ID.
This value currently not used for anything.
- Returns:
- A U32 value containing the "safe" renderer type id.
Implements IFXRenderServices. |
| static CIFXRenderServices* IFXAPI CIFXRenderServices::GetSingleton |
( |
|
) |
[inline, static, protected] |
|
| BOOL CIFXRenderServices::GetSupported |
( |
U32 |
uRenderId |
) |
[virtual] |
|
|
|
Query whether a given renderer type is supported on the current system configuration.
If this has not been determined previously, the system will query the renderer type for support (usually doing a test initialization using that renderer type).
- Parameters:
-
| uRenderId | The renderer type ID corresponding to a registered renderer type. |
- Returns:
- A BOOL value.
- Return values:
-
| TRUE | The renderer type is supported on the current system configuration. |
| FALSE | The renderer type is not supported on the current system configuration. This could be due to lack of driver or hardware support, or the user could be using an incompatible color depth. This could also be caused by an invalid uRenderId value. |
Implements IFXRenderServices. |
| IFXenum CIFXRenderServices::GetTextureRenderFormat |
( |
|
) |
[virtual] |
|
|
|
Retrieves the default texture render format.
See SetTextureRenderFormat() for more information.
- Returns:
- An IFXenum value.
- Return values:
-
| IFX_RGBA_8888 | |
| IFX_RGBA_8880 | |
| IFX_RGBA_5650 | |
| IFX_RGBA_5551 | |
| IFX_RGBA_5550 | |
| IFX_RGBA_4444 | |
Implements IFXRenderServices. |
| BOOL CIFXRenderServices::GetVSyncEnabled |
( |
|
) |
[virtual] |
|
|
|
Gets the current vsync enabled state.
- Returns:
- A BOOL value.
- Return values:
-
| TRUE | Vsync is currently enabled. |
| FALSE | VSync is currently disabled. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::PurgeDevices |
( |
|
) |
[virtual] |
|
| IFXRESULT CIFXRenderServices::QueryInterface |
( |
IFXREFIID |
interfaceId, |
|
|
void ** |
ppInterface |
|
) |
[virtual] |
|
|
|
This method provides access to the various interfaces supported by a component.
Upon success, it increments the component's reference count and hands back a pointer to the specified interface.
- Note:
- A number of rules must be adhered to by all implementations of IFXAPI QueryInterface . For a list of such rules, refer to the IFXCOM usage guidelines.
- Returns:
- Upon success, IFX_OK is returned. Otherwise, either IFX_E_INVALID_POINTER or IFX_E_UNSUPPORTED are returned.
Implements IFXUnknown. |
| IFXRESULT CIFXRenderServices::RegisterRenderer |
( |
U32 |
uRenderId, |
|
|
IFXREFCID |
cidRender, |
|
|
IFXREFCID |
cidRenderDevice |
|
) |
[virtual] |
|
|
|
Registers a renderer type with the system.
Each renderer type (DirectX8, OpenGL, Software, etc.) is described by a renderer ID, along with class ID's (CID's) for the type specific implementation of IFXRender and IFXRenderDevice interfaces (these implementations should be derived from CIFXRender and CIFXRenderDevice respectively).
- Parameters:
-
| uRenderId | Input render ID that will be associated with this renderer type. This value must not be 0. |
| cidRender | Input IFXREFCID (class ID) that identifies the renderer specific implementation of IFXRender. This class should be derived from CIFXRender. |
| cidRenderDevice | Input IFXREFCID (class ID) that identifies the renderer specific implementation of IFXRenderDevice. This class should be derived from CIFXRenderDevice. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | Either the value of uRenderId is 0, or the given uRenderId has already been registered. |
Implements IFXRenderServices. |
| U32 CIFXRenderServices::Release |
( |
|
) |
[virtual] |
|
|
|
This method decrements the reference count for the calling interface on a component.
- Note:
- If the reference count on a component falls to zero, the component is destroyed.
- Returns:
- It returns a U32 that contains a value from 1 to 2^32 - 1 that defines the new reference count. The return value should only be used for debugging purposes.
Implements IFXUnknown. |
| IFXRESULT CIFXRenderServices::Reset |
( |
|
) |
|
|
| IFXRESULT CIFXRenderServices::ResetSupportedInfo |
( |
|
) |
[virtual] |
|
|
|
Resets all information relating to what renderer types are supported to default values.
This will force the system to re-run the query to determine which renderers are supported when needed. This is appropriate to do, for example, when the color depth of the desktop changes, potentially making some renderers unable to function properly.
- Returns:
- An IFXRESULT value.
- Return values:
-
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetDefaultAAEnabled |
( |
BOOL |
bEnabled |
) |
[virtual] |
|
|
|
Sets the default anti-aliasing enabled state.
Any IFXRenderContext instance that has IFX_AA_DEFAULT set for it's anti-aliasing enabled value will use this setting. Changing this setting will automatically change all instances of IFXRenderContext that are configured to use IFX_AA_DEFAULT.
- Parameters:
-
| bEnabled | Input BOOL specifying the anti-aliasing enabled state. TRUE will enable anti-aliasing, FALSE will disable anti-aliasing. |
- Returns:
- An IFXRESULT value.
- Return values:
-
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetDefaultAAMode |
( |
IFXenum |
eAAMode |
) |
[virtual] |
|
|
|
Sets the default anti-aliasing mode.
Any IFXRenderContext instances that have an anti-aliasing mode of IFX_AA_DEFAULT will use this setting.
- Parameters:
-
| eAAMode | Input IFXenum value denoting the anti-aliasing mode. The possible values are:
- IFX_AA_2X: 2X anti-aliasing is used.
- IFX_AA_3X: 3X anti-aliasing is used. On many cards this is Quincunx* anti-aliasing.
- IFX_AA_4X: 4X anti-aliasing is used.
- IFX_AA_4X_SW: 4X anti-aliasing is used with software emulation. This is very slow.
|
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The eAAMode value was invalid. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetDepthBufferFormat |
( |
IFXenum |
eDepthFormat |
) |
[virtual] |
|
|
|
Sets the depth buffer format to be used by all IFXRenderContext instances.
The default value is IFX_DEPTH_D32S0. If the rendering system cannot support the specified format, it will fall back to a format that will work.
- Parameters:
-
| eDepthFormat | Input IFXenum value specifying the depth buffer format to use. Possible values are:
- IFX_DEPTH_D16S0: 16-bit depth, no stencil
- IFX_DEPTH_D32S0: 24-bit depth, no stencil
- IFX_DEPTH_D24S8: 24-bit depth, 8-bit stencil
|
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The eDepthFormat value was invalid. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetNotSupported |
( |
U32 |
uRenderId |
) |
[virtual] |
|
|
|
Inform the render services object that the given (pre-registered) renderer type is not supported, and shouldn't even be queried to see if it is.
Some renderer types and driver combinations can cause a system crash when querying for device support. This will prevent that from happening on known bad video drivers.
- Parameters:
-
| uRenderId | The renderer type ID corresponding to a registered renderer type. This renderer type will be listed as unsupported and will not be queried for support. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The value specified for uRenderId was invalid. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetPixelAspectRatio |
( |
F32 |
fRatio |
) |
[virtual] |
|
|
|
Sets the pixel aspect of the device.
The pixel aspect can be changed when the display device used has a pixel aspect other than 1.0. For instance, you are using a standard 4:3 resolution (1600x1200) on a widescreen 16:9 monitor. In that case, you would use a pixel aspect ratio of 1.333333. The initial value is 1.0.
- Parameters:
-
| fRatio | The new pixel aspect ratio to use. Must be a positive non-zero number. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The value specified with fRatio was either 0.0 or negative. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetRecommended |
( |
U32 |
uRenderId, |
|
|
BOOL |
bRecommended |
|
) |
[virtual] |
|
|
|
Sets the recommended flag for the specified renderer type.
This flag is primarily used to denote bad renderer type / video driver combinations.
- Parameters:
-
| uRenderId | The renderer type ID corresponding to a registered renderer type. |
| bRecommended | Input BOOL containing the new recommended flag state. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The uRenderId value was invalid. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetRequestedRenderId |
( |
U32 |
uRenderId |
) |
[virtual] |
|
|
|
Sets the requested renderer type.
When an IFXRenderContext instance has a renderer ID of 0, it will use this renderer type instead. Changing this value will result in all instances of IFXRenderContext that contain a renderer ID of 0 to switch to the new renderer type during the next frame of rendering.
- Parameters:
-
| uRenderId | The renderer type ID corresponding to a registered renderer type. This must be a supported renderer type. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The uRenderId value was invalid. |
| IFX_E_UNSUPPORTED | The renderer type specified by uRenderId is not supported. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetSafeRenderId |
( |
U32 |
uRenderId |
) |
[virtual] |
|
|
|
Set the "safe" renderer type ID.
This value is currently unused.
- Parameters:
-
| uRenderId | The renderer type ID corresponding to a registered renderer type. This must be a supported renderer type. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The uRenderId value was invalid. |
| IFX_E_UNSUPPORTED | The renderer type specified by uRenderId is not supported. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetTextureRenderFormat |
( |
IFXenum |
eTexFormat |
) |
[virtual] |
|
|
|
Sets the default texture render format.
Textures that specify a format of IFX_FMT_DEFAULT will use this format instead. The initial value for this setting is IFX_RGBA_5551.
- Parameters:
-
| eTexFormat | Input IFXenum specifying the default texture render format. Possible values are:
- IFX_RGBA_8888
- IFX_RGBA_8880
- IFX_RGBA_5650
- IFX_RGBA_5551
- IFX_RGBA_5550
- IFX_RGBA_4444
|
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The eTexFormat value was invalid. |
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::SetVSyncEnabled |
( |
BOOL |
bEnabled |
) |
[virtual] |
|
|
|
Sets whether or not vsync is enabled.
If vsync is enabled, renderer types that support it will cause IFXRenderContext::Swap() to block until the next vertical retrace of the monitor before completing. This affects all instances of IFXRenderContext. The initial value is FALSE.
- Parameters:
-
| bEnabled | Input BOOL. If TRUE, vsync is enabled, otherwise, vsync is disabled. |
- Returns:
- An IFXRESULT value.
- Return values:
-
Implements IFXRenderServices. |
| IFXRESULT CIFXRenderServices::UnregisterRenderContext |
( |
IFXRenderContext * |
pRC |
) |
|
|
Friends And Related Function Documentation
| IFXRESULT IFXAPI_CALLTYPE CIFXRenderServicesFactory |
( |
IFXREFIID |
intId, |
|
|
void ** |
ppUnk |
|
) |
[friend] |
|
Member Data Documentation
|
|
Default Anti-Aliasing mode.
|
|
|
The default depth buffer format for the system.
|
|
|
The default texture format for the system.
|
|
|
The default pixel aspect ratio for the system (typically 1).
|
|
|
'Are we initialized?' flag.
|
|
|
List of monitor information structures ('IFXMonitor's) - one for each monitor that is attached to the system.
|
|
|
List of active render contexts.
|
|
|
List of different render types that are registered.
|
|
|
List of best render id's (lowest renderer register that is supported).
There is one render id for every render device in the system. |
|
|
Number of rendering devices (video cards) in the system.
|
|
|
Number of monitors (screens) that could be used for rendering.
|
|
|
Number of different render types that are registered.
|
|
|
The user desired render type.
|
|
|
The id of a renderer that is guaranteed to work (this is used as a fallback if one of the other renderers fail for some reason).
This typically is a software rasterizer. |
© 1999 - 2006 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.
|
|


- soliloquy
- In drama, where a character speaks to themselves, representing their inner thoughts or feelings and in the process relaying them to the audience (but not to other characters.)
- monologue
- In drama, where a character speaks their thoughts out loud to share them with the audience and any other characters present.
- aside
- In drama, where a character shares a comment only with the audience for humorous or dramatic effect. This is usually a feeling, thought or piece of additional background information.


Riki
Tips
- Smoke Screen. Great silence, great blind, great slow, great range. So don't hotbox your gank target in
the center of the cloud unless you're terrified of them casting something, just leave them near the edge
of the AoE. By reflex, most enemies won't even realize that you duped them until they're halfway through
the cloud.
- You can Blink Strike to allies as well as enemies. And like all other pseudo-Blinks you can cast it
while Frostbitten or Ensnared.
- If you're trying to cover a lot of ground, try to chain Blinks on creeps or other heroes to reach your
target. You won't break invisibility by casting Blink Strike if you're quick to cancel the follow-up attack.
- You can Blink Strike onto allied (but not enemy) couriers.
- You still have collision when you're in Permanent Invisibility, so don't bump into enemies you're
stalking.
- Treat Tricks of the Trade how you would Slark's Shadow Dance. You don't really want to blow it as soon
as you jump on an enemy, but rather use it for the banish if things are getting hairy. Enemies won't want to
stick around in the AoE and if Blink Strike is maxed, it'll come off CD before Tricks ends, so you can jump
to an ally to escape.
- Riki has very high armor to start, but you also have like no HP to back it up.
- If you're prowling around an area that you think might be sentry warded, try intentionally forcing creep aggro while invis by right clicking a hero. This is a quick way to confirm if the enemy has true sight or not.
- Another way to confirm is through heroes who go into 'attack stances' like Brew, Jugg, Abaddon, or listening to see if enemies say deny lines even though there is no one else in your lane. If these things happen for no good reason, they can see you.
- Diffusal Blade is considered core on Riki for three main reasons: 1. Riki loves AGI items. 2. You can
Purge enemies to keep them in your Smoke Screen even longer. 3. You can Purge Dust, you can Purge
Amplify Damage, and you can Purge Track off yourself.
Counters
- ♪ Turn around. Every now and then you get a little bit greedy when you realize that you've got no
farm. Turn around. Every now and then you get a little bit tired of listening to all the 'missing'
calls. Turn around. Every now and then you get a little bit nervous when you're in your jungle
without any wards. Turn around.   He is practically
working with a Double Damage rune from Cloak and Dagger when your back is turned, so if you think you can last the
Smoke's duration, turn around and have a chat with him. Most of your attacks will miss, and you're still
going to be silenced, but if backup is coming, fight him. All of this is assuming that you're not playing
Bristleback, though.
- Good anti-Riki items as a support include pretty much any mid-game support item. Smoke Screen stops you
from using spells, not items. Force Staff is the typical pickup, Eul's is good, and Ghost Scepter is
good. For late game, you'll pretty much always want to go for a Necro 3, Orchid, or Sheep.
- Riki holds a strong grudge against both King Bars. BKB and MKB are both good carry items against a Riki
because they both allow you to fight in the Smoke.
- Practice the buddy system. Riki can't really deal with solo-ganking two heroes at the same time.
- Don't make it obvious that you have a Sentry Ward down in the lane unless you're ready to go for the
kill.
- Keep your Spidey senses on point.
- When pushing, place a Sentry Ward in/around/behind your team out of the Tower's sight. If your team
hasn't been super aggressive with detection, it's highly likely that Riki is ghost riding your whip and
waiting for the perfect Smoke.
- Dust of Appearance slows invis units by 20%. Since the only way Riki can force himself to become visible
is by attacking, Dust is usually a huge pain for him to deal with when escaping.


Functions for displaying multiple images with a color scale, i.e., heat maps, possibly with projected coordinates. The package relies on the base graphics system, so graphics are rendered rapidly.
| Version: | 2.0 |
| Depends: | R (≥ 2.10) |
| Imports: | fields, mapproj, viridisLite, ggplot2, maps, MBA |
| Suggests: | abind, viridis, testthat, spatstat, gear, broom, gridExtra, knitr, rmarkdown |
| Published: | 2017-10-24 |
| Author: | Joshua French |
| Maintainer: | Joshua French <joshua.french at ucdenver.edu> |
| BugReports: | https://github.com/jpfrench81/autoimage/issues |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| Citation: | autoimage citation info |
| Materials: | README NEWS |
| CRAN checks: | autoimage results |
| Reference manual: | autoimage.pdf |
| Vignettes: |
How to Use the **autoimage** package Producing heat maps with **autoimage** and **ggplot2** |
| Package source: | autoimage_2.0.tar.gz |
| Windows binaries: | r-devel: autoimage_2.0.zip, r-release: autoimage_2.0.zip, r-oldrel: autoimage_2.0.zip |
| OS X binaries: | r-release: autoimage_2.0.tgz, r-oldrel: autoimage_2.0.tgz |
| Old sources: | autoimage archive |
Please use the canonical form https://CRAN.R-project.org/package=autoimage to link to this page.


Family Court inaugurated
by Special CorrespondentTIRUVARUR
A Family Court has been set up at Mannargudi in Tiruvarur district.
According to a press release, the new District Judge grade court was inaugurated through video-conference by Madras High Court Judges T.S. Sivagnanam and G.K. Ilanthiraiyan on Friday where the Principal District and Sessions Judge, Tiruvarur, R. Kalaimathi, Collector T. Anand and the Superintendent of Police M.Durai took part in the function on District Court complex here.
With the inauguration of the Family Court headed by Judge S. Pakkirisamy at Mannargudi, the total number of courts in Tiruvarur district had increased to 17 from 16, the release added.


Reports class parameters that shadow a superclass var
.
Example:
class Animal { var name: String = "" } class Cat(name: String = "") extends Animal { // Makes `name` a private[this] val, which shadows the var def usage = name }
When extending a class with a non-private
var
, the user might expect that a class parameter of the subclass
will override the var
from the superclass, but in fact it will only shadow it. This may sometimes lead to
non-trivial errors.
Please note that the highlight will appear only if the value is actually used.


Design and document the software development processes to comply with PCI DSS.
Design and document the software development processes in compliance with PCI DSS by performing the following actions:
Develop code in compliance with PCI DSS. Be aware of the PCI DSS requirements through-out the development process to make sure that the resulting application is PCI DSS compliant. It may be helpful to review the PCI DSS requirements to see which ones apply to the application(s) you are developing. Links to the PCI DSS requirements to consider when organizing software development are listed at the end of the article under Related Items.
Separate the development and production environments. Designate a separate development environment. Remove all development elements from the production environment. Assign different staff to the development and the production environments.
Review custom code. Review all custom application code. Have someone other than the author of the code do the review. Have someone who is knowledgeable about securing coding practices do the review. Security Innovation can assist you with the code review process. Correct all the discovered bugs and vulnerabilities. Have the management evaluate the review results and approve them before releasing the code.


Enhancement
Quick links:
Maven Plugin
The maven plugin uses the agent to enhance the classes. You need to specify the packages that you want the agent to search for classes that it should enhance.
packages
The packages specified are scanned for classes
annotated with @Singleton
, @Path
, @Service
etc
as well as the Avaje Metrics @Timed
annotation.
debug=0..9
In the transformArgs element you can specify a debug level from 0 to 9 which provides some debug logging of what the enhancement process is doing.
<build>
<plugins>
<plugin>
<groupId>org.avaje.metric</groupId>
<artifactId>enhance-maven-plugin</artifactId>
<version>4.2.1</version>
<executions>
<execution>
<id>main</id>
<phase>process-classes</phase>
<configuration>
<packages>org.example.myapp.**</packages>
<transformArgs>debug=1</transformArgs>
</configuration>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Agent
The agent utilises ASM (repackaged and included with the agent) to perform the enhancement. Most often I'd expect
people to not use the agent directly and instead use the maven plugin but you certainly can. You can
use the agent using the usual javaagent command line and alternatively you can load the agent at
runtime using the avaje-agentloader
.
Maven artifact
<dependency>
<groupId>org.avaje.metric</groupId>
<artifactId>avaje-metric-agent</artifactId>
<version>4.2.1</version>
</dependency>
If you want to find out exactly how the enhancement works you want to review the source code for the agent.
metric-name-mapping.txt
When the agent starts it searches for all metric-name-mapping.txt resources in the classpath.
These resources are loaded using Properties and are expected to be in properties format of
name=value pairs per line. These name=value pairs are then sorted by longest name ... and this
is the order in which they are searched in order to transform/truncate the default metric names
(of package.Class.method) into typically shorter metric names that often have common prefixs
like web.api
etc.
Bytecode specifics
So when the agent determines that a particular class should be enhanced it adds some bytecode. The source for this is at https://github.com/avaje-metric/avaje-metric-agent.
ADD STATIC FIELDS
Say the agent determines that there are 3 methods that it is going to enhance and 2 of those are TimedMetric and the 3rd is a BucketTimedMetric. The agent will generate bytecode that is equivilent to the Java code below.
// Add one static field for each method
private static TimedMetric _$metric_1;
private static TimedMetric _$metric_2;
private static BucketTimedMetric _$metric_3;
// create a static initialisation block if
// one does not already exist. Otherwise add
// the _$initMetrics() to the existing one.
static {
_$initMetrics();
}
// Add this method to initialise each metric
private static void _$initMetrics() {
_$metric_1 = MetricManager.getTimedMetric("simpleSerivce.doSomething");
_$metric_2 = MetricManager.getTimedMetric("simpleSerivce.doSomethingElse");
_$metric_3 = MetricManager.getTimedMetric("simpleSerivce.doBucketSomething", 100, 200);
}
...
Having the _$initMetrics() method means that is it easy to either add the static initialisation block or add the call to _$initMetrics(); to an existing static initialisation block.
Note that the metric names and bucket ranges have been determined at this point.
ENHANCE METHODS
Each timed method is enhanced using the ASM AdviceAdapter. In Java terms it looks something like the code below.
public void doSomething() {
// local variables to store the start nanos
// and active status of the 'Per request' timing
boolean _$metricActiveThreadContext = _$metric_1.isActiveThreadContext();
long _$metricStart = System.nanoTime();
try {
// The original method code in here ...
...
// opCode is one of the return opcodes;
_$metric_1.operationEnd(opCode, _$metricStart, _$metricActiveThreadContext);
} catch (RuntimeException e) {
// opCode = ATHROW;
_$metric_1.operationEnd(opCode, _$metricStart, _$metricActiveThreadContext);
throw e;
}
}
Note that there was a conscience decision to have the operationEnd() method on TimedMetric and BucketTimedMetric and pass the opcode and start nanos. This was so that the added bytecode was as simple and minimalist as possible. In the case where you want to turn off metric collection with enhanced code the added bytecode is still executed but the TimedMetric.operationEnd() method is a NOOP. The operationEnd() methods do look a little clunky on the API but it serves a reasonable purpose.
Overhead
The overhead of an enhanced method should be in the order of 140 nanoseconds. Micro benchmarks are notoriously difficult but I believe 140 nanoseconds to be a good indication of the overhead added by the timed metric enhancement.
For perspective, executing approx 7000 methods with an overhead of 140 nanoseconds would add 1 millisecond to execution time.


ATOM is a powerfull machine learning tool for analysing your power grids atom give a clear idea about total usege of power in your local grids and give detaild energy report by using atommachine learnig algorthams also give idea about instrumets connected to your grid.


{{game.tags}}
{{game.synopse}}
{{game.releasedate}}
{{game.developer}}
{{game.editor}}
{{game.genre}}
{{game.rating}}


public class DependencyParser
extends java.lang.Object
This is an implementation of the method described in
Danqi Chen and Christopher Manning. A Fast and Accurate Dependency Parser Using Neural Networks. In EMNLP 2014.
New models can be trained from the command line; see main(java.lang.String[])
for details on training options. This parser will also output
CoNLL-X format predictions; again see main(java.lang.String[])
for available
options.
This parser can also be used programmatically. The easiest way to
prepare the parser with a pre-trained model is to call
loadFromModelFile(String)
. Then call
predict(edu.stanford.nlp.util.CoreMap)
on the returned
parser instance in order to get new parses.
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
DEFAULT_MODEL |
| Constructor and Description |
|---|
DependencyParser(java.util.Properties properties) |
| Modifier and Type | Method and Description |
|---|---|
Dataset |
genTrainExamples(java.util.List<CoreMap> sents,
java.util.List<edu.stanford.nlp.parser.nndep.DependencyTree> trees) |
java.util.List<java.lang.Integer> |
getFeatures(Configuration c) |
int |
getLabelID(java.lang.String s) |
int |
getPosID(java.lang.String s) |
int |
getWordID(java.lang.String s)
Get an integer ID for the given word.
|
static DependencyParser |
loadFromModelFile(java.lang.String modelFile)
Convenience method; see
loadFromModelFile(String, java.util.Properties) . |
static DependencyParser |
loadFromModelFile(java.lang.String modelFile,
java.util.Properties extraProperties)
Load a saved parser model.
|
void |
loadModelFile(java.lang.String modelFile)
Load a parser model file, printing out some messages about the grammar in the file.
|
static void |
main(java.lang.String[] args)
A main program for training, testing and using the parser.
|
GrammaticalStructure |
predict(CoreMap sentence)
Determine the dependency parse of the given sentence using the loaded model.
|
GrammaticalStructure |
predict(java.util.List<? extends HasWord> sentence)
Convenience method for
predict(edu.stanford.nlp.util.CoreMap) . |
double |
testCoNLL(java.lang.String testFile,
java.lang.String outFile)
Run the parser in the modelFile on a testFile and perhaps save output.
|
void |
train(java.lang.String trainFile,
java.lang.String modelFile) |
void |
train(java.lang.String trainFile,
java.lang.String devFile,
java.lang.String modelFile) |
void |
train(java.lang.String trainFile,
java.lang.String devFile,
java.lang.String modelFile,
java.lang.String embedFile) |
void |
train(java.lang.String trainFile,
java.lang.String devFile,
java.lang.String modelFile,
java.lang.String embedFile,
java.lang.String preModel)
Train a new dependency parser model.
|
void |
writeModelFile(java.lang.String modelFile) |
public static final java.lang.String DEFAULT_MODEL
public int getWordID(java.lang.String s)
Classifier.E
.public int getPosID(java.lang.String s)
public int getLabelID(java.lang.String s)
public java.util.List<java.lang.Integer> getFeatures(Configuration c)
public Dataset genTrainExamples(java.util.List<CoreMap> sents, java.util.List<edu.stanford.nlp.parser.nndep.DependencyTree> trees)
public void writeModelFile(java.lang.String modelFile)
public static DependencyParser loadFromModelFile(java.lang.String modelFile)
loadFromModelFile(String, java.util.Properties)
.public static DependencyParser loadFromModelFile(java.lang.String modelFile, java.util.Properties extraProperties)
modelFile
- Path to serialized model (may be GZipped)extraProperties
- Extra test-time properties not already associated with model (may be null)initialize(boolean)
modelpublic void loadModelFile(java.lang.String modelFile)
modelFile
- The file (classpath resource, etc.) to load the model from.public void train(java.lang.String trainFile, java.lang.String devFile, java.lang.String modelFile, java.lang.String embedFile, java.lang.String preModel)
trainFile
- Training datadevFile
- Development data (used for regular UAS evaluation
of model)modelFile
- String to which model should be savedembedFile
- File containing word embeddings for words used in
training corpuspublic void train(java.lang.String trainFile, java.lang.String devFile, java.lang.String modelFile, java.lang.String embedFile)
public void train(java.lang.String trainFile, java.lang.String devFile, java.lang.String modelFile)
train(String, String, String, String)
public void train(java.lang.String trainFile, java.lang.String modelFile)
train(String, String, String)
public GrammaticalStructure predict(CoreMap sentence)
java.lang.IllegalStateException
- If parser has not yet been loaded and initialized
(see initialize(boolean)
public GrammaticalStructure predict(java.util.List<? extends HasWord> sentence)
predict(edu.stanford.nlp.util.CoreMap)
. The tokens of the provided sentence must
also have tag annotations (the parser requires part-of-speech tags).predict(edu.stanford.nlp.util.CoreMap)
public double testCoNLL(java.lang.String testFile, java.lang.String outFile)
testFile
- File to parse. In CoNLL-X format. Assumed to have gold answers included.outFile
- File to write results to in CoNLL-X format. If null, no output is writtenpublic static void main(java.lang.String[] args)
You can use this program to train new parsers from treebank data, evaluate on test treebank data, or parse raw text input.
Sample usages:
java edu.stanford.nlp.parser.nndep.DependencyParser -trainFile trainPath -devFile devPath -embedFile wordEmbeddingFile -embeddingSize wordEmbeddingDimensionality -model modelOutputFile.txt.gz
java edu.stanford.nlp.parser.nndep.DependencyParser -model modelOutputFile.txt.gz -textFile rawTextToParse -outFile dependenciesOutputFile.txt
java edu.stanford.nlp.parser.nndep.DependencyParser -model modelOutputFile.txt.gz -textFile - -outFile -
See below for more information on all of these training / test options and more.
Input / output options:
| Option | Required for training | Required for testing / parsing | Description |
|---|---|---|---|
| ‑devFile | Optional | No | Path to a development-set treebank in CoNLL-X format. If provided, the |
| ‑embedFile | Optional (highly recommended!) | No | A word embedding file, containing distributed representations of English words. Each line of the provided file should contain a single word followed by the elements of the corresponding word embedding (space-delimited). It is not absolutely necessary that all words in the treebank be covered by this embedding file, though the parser's performance will generally improve if you are able to provide better embeddings for more words. |
| ‑model | Yes | Yes | Path to a model file. If the path ends in .gz, the model will be read as a Gzipped model file. During training, we write to this path; at test time we read a pre-trained model from this path. |
| ‑textFile | No | Yes (or testFile) | Path to a plaintext file containing sentences to be parsed. |
| ‑testFile | No | Yes (or textFile) | Path to a test-set treebank in CoNLL-X format for final evaluation of the parser. |
| ‑trainFile | Yes | No | Path to a training treebank in CoNLL-X format |
| Option | Default | Description |
|---|---|---|
| ‑adaAlpha | 0.01 | Global learning rate for AdaGrad training |
| ‑adaEps | 1e-6 | Epsilon value added to the denominator of AdaGrad update expression for numerical stability |
| ‑batchSize | 10000 | Size of mini-batch used for training |
| ‑clearGradientsPerIter | 0 | Clear AdaGrad gradient histories every n iterations. If zero, no gradient clearing is performed. |
| ‑dropProb | 0.5 | Dropout probability. For each training example we randomly choose some amount of units to disable in the neural network classifier. This parameter controls the proportion of units "dropped out." |
| ‑embeddingSize | 50 | Dimensionality of word embeddings provided |
| ‑evalPerIter | 100 | Run full UAS (unlabeled attachment score) evaluation every time we finish this number of iterations. (Only valid if a development treebank is provided with ‑devFile.) |
| ‑hiddenSize | 200 | Dimensionality of hidden layer in neural network classifier |
| ‑initRange | 0.01 | Bounds of range within which weight matrix elements should be initialized. Each element is drawn from a uniform distribution over the range [-initRange, initRange]. |
| ‑maxIter | 20000 | Number of training iterations to complete before stopping and saving the final model. |
| ‑numPreComputed | 100000 | The parser pre-computes hidden-layer unit activations for particular inputs words at both training and testing time in order to speed up feedforward computation in the neural network. This parameter determines how many words for which we should compute hidden-layer activations. |
| ‑regParameter | 1e-8 | Regularization parameter for training |
| ‑saveIntermediate | true | If true, continually save the model version which gets the highest UAS value on the dev set. (Only valid if a development treebank is provided with ‑devFile.) |
| ‑trainingThreads | 1 | Number of threads to use during training. Note that depending on training batch size, it may be unwise to simply choose the maximum amount of threads for your machine. On our 16-core test machines: a batch size of 10,000 runs fastest with around 6 threads; a batch size of 100,000 runs best with around 10 threads. |
| ‑wordCutOff | 1 | The parser can optionally ignore rare words by simply choosing an arbitrary "unknown" feature representation for words that appear with frequency less than n in the corpus. This n is controlled by the wordCutOff parameter. |
| Option | Default | Description |
|---|---|---|
| ‑escaper | N/A | Only applicable for testing with -textFile. If provided, use this word-escaper when parsing raw sentences. (Should be a fully-qualified class name like edu.stanford.nlp.trees.international.arabic.ATBEscaper.) |
| ‑numPreComputed | 100000 | The parser pre-computes hidden-layer unit activations for particular inputs words at both training and testing time in order to speed up feedforward computation in the neural network. This parameter determines how many words for which we should compute hidden-layer activations. |
| ‑sentenceDelimiter | N/A | Only applicable for testing with -textFile. If provided, assume that the given textFile has already been sentence-split, and that sentences are separated by this delimiter. |
| ‑tagger.model | edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger | Only applicable for testing with -textFile. Path to a part-of-speech tagger to use to pre-tag the raw sentences before parsing. |


This chapter introduces MPI features that support the development of parallel libraries. Parallel libraries are needed to encapsulate the distracting complications inherent in parallel implementations of key algorithms. They help to ensure consistent correctness of such procedures, and provide a ``higher level'' of portability than MPI itself can provide. As such, libraries prevent each programmer from repeating the work of defining consistent data structures, data layouts, and methods that implement key algorithms (such as matrix operations). Since the best libraries come with several variations on parallel systems (different data layouts, different strategies depending on the size of the system or problem, or type of floating point), this too needs to be hidden from the user.
We refer the reader to [55] and [3] for further information on writing libraries in MPI, using the features described in this chapter.


White to play 45
pips White=167 Black=158
(CorrectAnswer= 0/0, ErrorScore= 0)
1. 24/20 13/8 eq: -0.166 45.64% (G:11.47% B:0.49%) 54.36% (G:12.87% B:0.56%) 2. 24/20 6/1* eq: -0.178 (-0.011) 45.44% (G:11.56% B:0.37%) 54.56% (G:13.42% B:0.68%) 3. 13/9 13/8 eq: -0.192 (-0.025) 45.05% (G:12.32% B:0.44%) 54.95% (G:13.66% B:0.77%) 4. 13/4 eq: -0.233 (-0.066) 43.60% (G:11.57% B:0.38%) 56.40% (G:14.24% B:0.80%) 5. 13/9 6/1* eq: -0.253 (-0.086) 43.35% (G:11.84% B:0.31%) 56.65% (G:15.15% B:0.96%)


Where to Buy Xiaomi Mi Note 10 in the UK
We explain where to buy the 108Mp Mi Note 10 in the UK - and for just £354.
by Marie BlackXiaomi's Mi Note 10 is not available in the UK just yet, but buy the Global version through GearBest and you'll get a significant discount with the phone down to just £354.07!
We're expecting great things from Mi Note 10, not least from its 108Mp penta-lens camera - a world first. Other specs include a 6.47in AMOLED Dot Drop display, the Snapdragon 730G processor, up to 8GB of RAM and 256GB of storage, and a huge 5,260mAh battery that boasts 30W wired charging.
GearBest has earned our trust as a vendor that we have been using for many years to supply Xiaomi phones for review. It's listing Mi Note 10 for £354.07 when you use coupon code GBXMNT10BF.
GearBest is offering Mi Note 10 in:
Check out some more great Xiaomi deals:
Xiaomi Mi 9 (64GB)
From: eBuyer
Was: £499
Now: £349.98 (£150 off)
View Deal
Xiaomi Mi Mix 3
From: eBuyer
Was: £499
Now: £332.98 (£166 off)
View Deal
Xiaomi Mi 9T (6GB/64GB)
From: GearBest
Was: £237
Now: £210.38 (Use code GBMI9T501)
View Deal


Jennifer Lopez: I was told not to be so open about turning 50
The actress and singer said there was concern she would be seen as ‘over’.
Jennifer Lopez has said she was discouraged from being open about turning 50.
The Hustlers actress, who celebrated her landmark birthday on July 24 with a lavish party at Gloria Estefan’s house in Miami, said people were concerned she would be perceived as past her prime.
Asked by GQ magazine if anybody told her she should not be so frank about her age, she said: “Yes, everybody. All the men. No, that’s not true. It was the women.
“They were like, ‘Do we want to put this out there?’ I just didn’t see it. I’m like, ‘Everybody knows how old I am — what’s the big deal?’
“In this industry, by the time you’re 30, they’re already like, ‘She’s done’.
 But it’s such a beautiful time in women’s lives.
“Artists, women especially, get so much better as they grow and mature. You can see it! Meryl Streep’s career took off after she was 40. Tina Turner, after she was 40. Cher.
“It’s not that (those women) weren’t who they were before that. But as they got older, they blossomed in a way they hadn’t before, right?
“They came into their own power, and they started realising, like, ‘I am the scarce asset, I am the prize. I have something beautiful to offer to the world that’s only mine’. And I feel the same thing!
“There is no reason to ever be ashamed of where you’re at. Not when you’re doing your best. Not when you’re in your best moment.
“There’s always gonna be people to tell you no. Or ‘You can’t’. Or ‘You shouldn’t’. It’s gonna happen.  I’m still gonna succeed. I’m still gonna do my best’. Defy the odds. Why not?”
Lopez, who has been named icon of the year by the magazine, also addressed how her fiance Alex Rodriguez has pushed her, saying: “I mean, we’re very similar.
“We’re really alike in our drive, in our ambition. He’s an athlete. He wanted to be the best. I’m the same way. I just want to be great at what I do. We’re both like that.
“We’re both super-hard workers. We’re driven by our passions. And we have a tremendous amount of respect for each other.
“Everybody in the room can be talking, and if he says something, I key in on it, and if everybody in the room is kinda in his ear and I go, ‘I don’t think that’s the right thing’, he’ll hear me, he’ll listen.
“He knows I only have his best interest at heart, and I only want him to thrive and succeed and to be his best self.
“And I believe that he wants that for me. He wants me to be seen and to get what I deserve. Like, he’s made his half a billion. And he’s like, ‘I want you to have that’.”


Hey I'm Justin!
I love to develop algorithms and make applicable projects to ease the world and make our society a better place. I love to work on projects with my friends, and learn more everyday to improve what I can do.
Being a programmer for more than 5 years now, I am excited to learn and experiment in AI, Virtual Reality, and Augmented Reality!
Contact me below and we can grab coffee or boba, maybe I can spoil you with my puns because trust me I got a latte of them 😂
Amber Kantner (Director of Santa Clara iD Tech Camps) - "Justin Yu's programming skills really shone through his engaging lessons, and his enthusiasm for all aspects of camp made him a great addition to our team."
Brandon Zwier (Assistant Director of Santa Clara iD Tech Camps) - "Justin Yu worked as a wonderful teacher and mentor, and helped raise staff morale in any way he could. Punctual and hardworking, Justin made a fantastic addition to our team."
Brittney Nicole (Director of San Jose iD Tech Camps) - "Justin was a top performer at camp, he always went above and beyond to ensure the success of his students and brought a positive energy into work every morning!"
Courses Finished
Machine learning model that given an input of an image containing a logo of a company, the model will blur it out in real time. Model was based on a CNN (Convolutional Neural Network) that was inspired by Darknet and VGG models. Used YOLO algorithm to scan the image in real time and used python library scikit to blur part of an image given a bounding box. I worked on training CNN using YOLO algorithm.
Github DetailsMachine learning model that predicts if a movie review is rated "really negative", "negative", "neutral", "positive", or "really positive". Coded in Python using Sklearn library to test different models for highest accuracy and F measure. I worked on testing different models and found out SVM was the best model compared to other machine learning models.
Github DetailsWeb Application that allows users to report lost and found items. Users can make an account and data will be stored in a database. I worked on the Search Bar, forms, and storing information into a database. Also helped with styling, and the Google Map API. Used Web2py, Vue.js, SQL, Python, Javascript, and HTML/CSS.
View Project Github DetailsProject for HackUCSC(2018). Web Application that allows users to assign tasks to housemates in an orderly fashion. Used FireBase for a database, and used HTML/CSS and Bootsrap to design the pages. Made the user authentication, user login, and designed some layouts.
View Project GithubProject for CalHacks(2016). Used Amadeus API to calculate cheapest flight for users with given input. Used JavaScript, HTML/CSS. Simulated an AI like interaction to make it easy for users to intearct with the Web Application.
GitHubProject for HackDavis(2016). Web Application for college students to sell things to one another. Used Firebase to store data for users. Users were able to signup and login. Used bootstrap, HTML/CSS to design the page.
GitHub


Elon Musk's Starship Prototype Exploded during Testing
The first full-scale prototype of the Starship Mark 1 spacecraft by SpaceX (Space Ex) exploded during tests at a launch site in the Boca Chica area of Texas, TASS reported.
"The purpose of today's test was to pressurize systems to the max, so the outcome was not completely unexpected. There were no injuries, nor is this a serious setback.", SpaceX said in a statement.
The prototype Starcraft MK-1 was unveiled on September 28 in Texas. The ship, with a 50 m lenght and 9 m in diameter, is made of alloy steel. Its carrying capacity is 150 tonnes. During the presentation, SpaceX head Elon Musk said the ship's first orbital flight would be completed in half a year.


Regularly report location information and additional information through PUT method.
name: Device name (requires Base64 coding)
info: Additional information (requires Base64 coding)
long: Longitude of the device position
lat: Latitude of the device location
/rst/lab/voice/device?name=dGFueGu&info=dGFueGu&lat=116.391467&lon=39.927761
Push the stream through RTMP and push the stream address rtmp: //www.iamray.cn/stream/name.
Where name is the same value in location interface(requires Base64 coding)


When using the models of the translational sublibrary it is recommended to make sure that all arrows point in the same direction because then all component have the same reference system. In the example the distance from flange_a of Rod1 to flange_b of Rod2 is 2 m. The distance from flange_a of Rod1 to flange_b of Rod3 is also 2 m though it is difficult to see that. Without the arrows it would be almost impossible to notice. That all arrows point in the same direction is a sufficient condition for an easy use of the library. There are cases where horizontally flipped models can be used without problems.


Writing a simple deploy script with Fabric and @roles
I first heard about Fabric a couple years ago while at Lolapps and liked the idea of:
writing deployment and sysadmin scripts in a language other than Bash
that language being Python, which we used everywhere else
but we already had a huge swath of shell scripts that worked well (and truth be told, Bash isn’t really that bad). But now that we have at clean slate for Rollbar, Fabric it is.
I wanted a simple deployment script that would do the following:
check to make sure it’s running as the user “deploy” (since that’s the user that has ssh keys set up and owns the code on the remote machines)
for each webserver:
git pull
pip install -r requirements.txt
in series, restart each web process
make an HTTP POST to our deploys api to record that the deploy completed successfully
importsysfromfabric.apiimportrun,local,cd,env,roles,executeimportrequestsenv.hosts=['web1','web2']defdeploy():# pre-roll checkscheck_user()# do the roll.update_and_restart()# post-roll tasksrollbar_record_deploy()defupdate_and_restart():code_dir='/home/deploy/www/mox'withcd(code_dir):run("git pull")run("pip install -r requirements.txt")run("supervisorctl restart web1")run("supervisorctl restart web2")defcheck_user():iflocal('whoami',capture=True)!='deploy':print"This command should be run as deploy. Run like: sudo -u deploy fab deploy"sys.exit(1)defrollbar_record_deploy():# read access_token from production.iniaccess_token=local("grep 'rollbar.access_token' production.ini | sed 's/^.* = //g'",capture=True)environment='production'local_username=local('whoami',capture=True)revision=local('git log -n 1 --pretty=format:"%H"',capture=True)resp=requests.post('https://api.rollbar.com/api/1/deploy/',{'access_token':access_token,'environment':environment,'local_username':local_username,'revision':revision},timeout=3)ifresp.status_code==200:print"Deploy recorded successfully"else:print"Error recording deploy:",resp.text
Looks close-ish, right? It knows which hosts to deploy to, checks that it’s running as deploy, updates and restarts each host, and records the deploy. Here’s the output:
Lots of good things happening. But it’s doing the whole process – check_user, update_and_restart, rollbar_record_deploy – twice, once for each host. The duplicate check_user just slows things down, but the duplicate rollbar_record_deploy is going to mess with our deploy history, and it’s only going to get worse as we add more servers.
Fabric’s solution to this, described in their docs, is “roles”. We can map hosts to roles, then decorate tasks with which roles they apply to. Here we replace the env.hosts declaration with env.roledefs, decorate update_and_restart with @roles, and call update_and_restart with execute so that the @roles decorator is honored:
importsysfromfabric.apiimportrun,local,cd,env,roles,executeimportrequestsenv.roledefs={'web':['web1','web2']}defdeploy():# pre-roll checkscheck_user()# do the roll.# execute() will call the passed-in function, honoring host/role decorators.execute(update_and_restart)# post-roll tasksrollbar_record_deploy()@roles('web')defupdate_and_restart():code_dir='/home/deploy/www/mox'withcd(code_dir):run("git pull")run("pip install -r requirements.txt")run("supervisorctl restart web1")run("supervisorctl restart web2")defcheck_user():iflocal('whoami',capture=True)!='deploy':print"This command should be run as deploy. Run like: sudo -u deploy fab deploy"sys.exit(1)defrollbar_record_deploy():# read access_token from production.iniaccess_token=local("grep 'rollbar.access_token' production.ini | sed 's/^.* = //g'",capture=True)environment='production'local_username=local('whoami',capture=True)revision=local('git log -n 1 --pretty=format:"%H"',capture=True)resp=requests.post('https://api.rollbar.com/api/1/deploy/',{'access_token':access_token,'environment':environment,'local_username':local_username,'revision':revision},timeout=3)ifresp.status_code==200:print"Deploy recorded successfully"else:print"Error recording deploy:",resp.text
That’s more like it. Since env.hosts is not set, the undecorated tasks just run locally (and only once), and the @roles('web')-decorated task runs for each web host.


Game Class
Container for all game objects. Handles updating the state of game objects each turn. Listens for player input to trigger and resolve new turns.
Constructor
Game
()
Item Index
Methods
Methods
entityCanMoveThrough
-
entity
-
x
-
y
Checks if an entity can move through a map tile. This does NOT check for entities on the tile blocking movement. This is where code for special cases changing an entity's ability to pass through a tile should be placed. Things like flying, swimming and ghosts moving through walls.
Parameters:
-
entity
Entity- The entity to check.
-
x
Number- The x map tile coord to check.
-
y
Number- The y map tile coord to check.
Returns:
entityCanMoveTo
-
entity
-
x
-
y
Checks if an entity can move through and into a map tile and that tile is un-occupied.
Parameters:
-
entity
Entity- The entity to check.
-
x
Number- The x map tile coord to check.
-
y
Number- The y map tile coord to check.
Returns:
entityCanSeeThrough
-
x
-
y
Checks if a map tile can be seen through. This is where code for special cases like smoke, fog, x-ray vision can be implemented by checking the entity param.
Parameters:
-
x
Number- The x map tile coord to check.
-
y
Number- The y map tile coord to check.
Returns:
entityMoveTo
-
entity
-
x
-
y
Changes the position of an entity on the map.
Updates entity position in this.entityManager and calls tile.onEntityEnter.
this.entityCanMoveTo()
should always be checked first.
Parameters:
-
entity
Entity- The entity to move.
-
x
Number- The tile map x coord to move to.
-
y
Number- The tile map y coord to move to.
getObjectsAtPostion
-
x
-
y
Gets all objects at tile position
Parameters:
-
x
Number -
y
Number
Returns:
onClick
-
x
-
y
Handles tile mouse click events.
Parameters:
-
x
Number- Mouse x coord relative to window.
-
y
Number- Mouse y coord relative to window.
onHover
-
x
-
y
Handles tile mouse hover events
Parameters:
-
x
Number- Mouse x coord relative to window.
-
y
Number- Mouse y coord relative to window.
onKeyAction
-
action
Handles user input actions.
Parameters:
-
action
String- Action triggered by user input.
setMapSize
-
width
-
height
Sets the size of the map resizing this.map and this.entityManager.
Parameters:
-
width
Number- Width in tilse to set map and entityManager to.
-
height
Number- Height in tilse to set map and entityManager to.
start
()
Starts the game.
Properties
entityManager
EntityManager
The current entityManager.
gameOver
Bool
If true input actions are ignored.
lighting
Lighting
The current Lighting.
queueDraw
Boolean
If true the map will be drawn even if this.player.update(action)
returns false.
this.queueDraw
is set to false after every update.


SNAKE3d is a little 3d JavaScript game based on THREE.JS using WebGL. It was created by four students while a Computer-Science-Camp at University Trier. We published this game under the MIT-License and everyone could help to improve our game:
Angaben gemäß § 5 TMG und Verantwortlichkeit für den Inhalt nach § 55 Abs. 2 RStV:
Jan Hillesheim
Hauptstraße 13
56220 Kaltenengers


Ashley Marie France
shall wed
Brady Lennon Lewis
June 5th, 2015
Treasure Island, FL
Wedding Party
We've found the hottest guys and girls around. Click the icon to see the starting lineup for this wedding.
shall wed
June 5th, 2015
We've found the hottest guys and girls around. Click the icon to see the starting lineup for this wedding.


ADGenICam¶
| author: | Mark Rivers, University of Chicago |
|---|
Contents
Overview¶
This is an areaDetector base class driver for GenICam cameras.
GenICam is a Generic Interface for Cameras from the European Machine Vision Association (EMVA). The stated goal of GenICam is:
- The goal of GenICam (Generic Interface for Cameras) is to provide a generic programming interface for all kinds of devices (mainly cameras), no matter what interface technology (GigE Vision, USB3 Vision, CoaXPress, Camera Link HS, Camera Link etc.) they are using or what features they are implementing. The result is that the application programming interface (API) will be identical regardless of interface technology.
GenICam supports the following interface standards:
- GigE Vision
- USB3 Vision
- Camera Link
- Camera Link HS
- IIDC2 (Firewire)
GenICam cameras are controlled via features such as ExposureTime, Gain, TriggerMode, etc. Each feature has a name, data type, flags indicating whether it can be read or written, etc. Many features are defined in the GenICam specification, and vendors must use these names for those features. Vendors are also free to add new features that are specific to their cameras.
All GenICam cameras contain an XML file that provides a complete description of all of the features available in that camera. ADGenICam provides Python scripts that read and parse the XML file and automatically produce the EPICS database (.template) file and medm display (.adl) files. These medm files can then be autoconverted to edm, CSS-Boy, and caQtDM files.
This is a small snippet from an XML file for the feature called PixelFormat:
<Enumeration Name="PixelFormat" NameSpace="Standard">
<ToolTip>Format of the pixel data.</ToolTip>
<Description>Format of the pixel data.</Description>
<DisplayName>Pixel Format</DisplayName>
<Visibility> Beginner</Visibility>
<pIsLocked>TLParamsLocked</pIsLocked>
<ImposedAccessMode>RW</ImposedAccessMode>
<EnumEntry Name="Mono8" NameSpace="Standard">
<ToolTip>Pixel format set to Mono 8.</ToolTip>
<Description>Pixel format set to Mono 8.</Description>
<DisplayName>Mono 8</DisplayName>
<pIsImplemented>Mono8Inq_Reg</pIsImplemented>
<Value>0x01080001</Value>
</EnumEntry>
Derived classes¶
ADGenICam is a base class from which actual detector driver classes are derived. areaDetector includes the following derived classes:
- ADAravis: Driver that uses the aravis library. Runs on most Linux systems, and can control any GenICam camera.
- ADSpinnaker: Driver that uses the FLIR Spinnaker SDK. Runs on Windows and Linux Ubuntu 18. Controls only FLIR/Point Grey cameras.
- ADVimba: Driver that uses the AVT Vimba SDK. Runs on Windows and most Linux systems. Controls only AVT/Prosilica cameras.
ADGenICam class describes this class in detail.
ADGenICam and aravis¶
A problem with the GenICam standard is that while it provides a reference implementation, it is not open-source. Source code derived from the reference implementation cannot be freely distributed.
One solution to this is the aravis project, which is a reverse-engineered library and utilities for GenICam cameras. aravis is available only on Linux. areaDetector has long had an aravisGigE driver based on aravis. Although it is called aravisGigE, the driver actually supports USB cameras as well as GigE and 10 GigE cameras.
There is a new ADAravis driver. This driver also uses aravis, but it differs from aravisGigE by using this ADGenICam base class to significantly reduce the amount of code. Many of the ideas in ADGenICam were borrowed from aravisGigE.
Installing aravis¶
The aravis package is required for aravisGigE and ADAravis drivers. It is also required to extract the XML file from the camera, even when using drivers that are not based on aravis, e.g. the ADSpinnaker driver or the ADVimba driver. ADSpinnaker and ADVimba can run on Windows, but the XML file extraction must be done once on Linux.
aravis 0.7.x and higher use the meson and ninja build systems, rather than the autoconf and gnumake systems used in previous versions.
The following shows the steps to build and install aravis 0.8.1 on a Centos 7 machine running as root:
yum install ninja-build
yum install meson
yum install glib2-devel
yum install gtk-doc
yum install libxml2-devel
yum install gtk3-devel
yum install gstreamer1
yum install gstreamer1-devel
yum install gstreamer1-plugins-base-devel
yum install libnotify-devel
yum install gtk-doc
yum install gobject-introspection-devel
yum install zlib-devel
cd /usr/local
git clone https://github.com/AravisProject/aravis
cd aravis/
git checkout ARAVIS_0_8_1
meson build
cd build
ninja-build
ninja-build install
The steps above will be different if you do not have root access and need to install elsewhere, or if you are running another OS like Ubuntu where apt install is used in place of yum install. The names of the required packages will also be different on another OS like Ubuntu.
Downloading the XML file¶
To use the ADGenICam driver it is first necessary to download the XML file from the camera. To my knowledge the only code available to download the XML file from any GenICam camera is the arv-tool program that is included in the aravis package. This means that the aravis package is required to create the XML file, and so the camera must be available from a Linux system at least once initially.
However, if using the ADSpinnaker driver or the ADVimba driver aravis is not needed to build the driver or at run-time.
To extract the XML file from the camera first run the arv-tool program to make a list of all the GenICam cameras that are visible from the Linux system, for example:
TahoeU18:/corvette/home/epics/devel/areaDetector/ADGenICam> arv-tool-0.8
Allied Vision Technologies-GC1380H (02-2142A)-02-2142A-06178 (<IP_ADDRESS>)
Allied Vision Technologies-GT1380 (02-2604A)-02-2604A-07008 (<IP_ADDRESS>)
Allied Vision Technologies-Manta G-507B (E0022704)-50-0503479161 (<IP_ADDRESS>)
Allied Vision Technologies-Manta G-507C (E0022705)-50-0503419258 (<IP_ADDRESS>)
Allied Vision Technologies-Manta_G-146C (E0020011)-50-0503317598 (<IP_ADDRESS>)
FLIR-Oryx ORX-10G-51S5M-18011754 (<IP_ADDRESS>)
Then download the XML file with the command arv-tool -n cameraName genicam > XML_file_name, for example:
TahoeU18:/corvette/home/epics/devel/areaDetector/ADGenICam> arv-tool-0.8 -n "Allied Vision Technologies-Manta G-507B (E0022704)-50-0503479161" genicam > xml/AVT_Manta_G507B.xml
TahoeU18:/corvette/home/epics/devel/areaDetector/ADGenICam> ls -ltr xml
total 19496
-rw-rw-r-- 1 epics domain users 332287 Oct 7 2018 PGR_Blackfly_50S5C.xml
-rw-r--r-- 1 epics domain users 317859 Jun 2 2019 PGR_Blackfly_20E4C.xml
...
-rwxrwxr-x 1 epics domain users 202059 May 14 14:59 AVT_Mako_G158C.xml
-rw-rw-r-- 1 epics domain users 483863 Sep 15 18:32 Basler_piA640_210gm.xml
-rw-rw-r-- 1 epics domain users 924352 Sep 15 18:32 FLIR_BFS_70S7M.xml
-rw-r--r-- 1 epics domain users 232180 Sep 29 12:12 AVT_Manta_G507B.xml
Python scripts¶
Python script to create EPICS database¶
ADGenICam/scripts/makeDb.py is a Python program to read the XML file and produce an EPICS database (.template) file. The first argument is the name of the XML file and the second argument is the name of the .template file.
For example:
TahoeU18:/corvette/home/epics/devel/areaDetector/ADGenICam> python scripts/makeDb.py xml/PGR_Blackfly_20E4C.xml GenICamApp/Db/PGR_Blackfly_20E4C.template
More than 16 enum entries for PixelFormat mbbi record, discarding additional options.
If needed, edit the Enumeration tag for PixelFormat to select the 16 you want.
Don't know what to do with Register
More than 16 enum entries for GevSupportedOptionSelector mbbi record, discarding additional options.
If needed, edit the Enumeration tag for GevSupportedOptionSelector to select the 16 you want.
More than 16 enum entries for ChunkPixelFormat mbbi record, discarding additional options.
If needed, edit the Enumeration tag for ChunkPixelFormat to select the 16 you want.
TahoeU18:/corvette/home/epics/devel/areaDetector/ADGenICam> ls -ltr GenICamApp/Db/*.template
-rw-rw-r-- 1 epics domain users 142961 Oct 8 2018 GenICamApp/Db/PGR_Blackfly_50S5C.template
-rw-rw-r-- 1 epics domain users 117222 Oct 30 2018 GenICamApp/Db/AVT_Manta_G507C.template
-rw-r--r-- 1 epics domain users 220518 May 31 10:43 GenICamApp/Db/FLIR_ORX_10G_51S5.template
-rw-r--r-- 1 epics domain users 137902 Jun 2 09:38 GenICamApp/Db/PGR_Blackfly_20E4C.template
Note that there were some warnings from makeDb.py about more than 16 enumeration options. Some GenICam cameras support more than 16 choices for some enumeration features, but EPICS mbbo/mbbi records are limited to 16. However, this warning is usually not significant, because the XML file contains all possible values for the enum choices, but at run-time ADGenICam limits the choices to those actually available for the current camera and operating mode, and in practice appears never to be more than 16. Ignore the warning about Don’t know what to do with Register, the register entries are not needed.
This is a portion of the PGR_Blackfly_20E4C.template created above for the ExposureAuto mbbi and mbbo records:
record(mbbi, "$(P)$(R)GC_ExposureAuto_RBV") {
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))GC_E_ExposureAuto")
field(ZRST, "Off")
field(ZRVL, "0")
field(ONST, "Once")
field(ONVL, "1")
field(TWST, "Continuous")
field(TWVL, "2")
field(SCAN, "I/O Intr")
field(DISA, "0")
info(autosaveFields, "DESC ZRSV ONSV TWSV THSV FRSV FVSV SXSV SVSV EISV NISV TESV ELSV TVSV TTSV FTSV FFSV TSE")
}
record(mbbo, "$(P)$(R)GC_ExposureAuto") {
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))GC_E_ExposureAuto")
field(DOL, "0")
field(ZRST, "Off")
field(ZRVL, "0")
field(ONST, "Once")
field(ONVL, "1")
field(TWST, "Continuous")
field(TWVL, "2")
field(DISA, "0")
info(autosaveFields, "DESC ZRSV ONSV TWSV THSV FRSV FVSV SXSV SVSV EISV NISV TESV ELSV TVSV TTSV FTSV FFSV TSE PINI VAL")
}
GenICam integer features are 64 bit integers. Prior to R1-2 of ADGenICam EPICS longin and longout records were used for these features. However, longin and longout records are limited to 32 bits, and thus cannot represent the features when the value is larger than 32 bits. In EPICS base 3.16.1 or 7.0 and higher int64in and int64out records can be used for these 64-bit integer features. Prior to base 3.6.1 ai and ao record can be used. These are 64-bit floats, which can exactly represent integers up to 52 bits, which is a significant improvement over the 32 bit limitation of longin and longout records.
In R1-2 makeDb.py makeDb.py was changed to accept a –devInt64 flag. If this flag is present then the database will use int64in and int64out records. This is recommended when using base 3.16.1 or 7.0 or higher. For previous versions of base the –devInt64 flag must not be used, and makeDb.py will create ai and ao records instead.
This Python script, and the one to create medm screens described next, attempt to name the EPICS records as the name of the GenICam feature, preceded by the string GC_ to prevent conflict with any record names already defined in areaDetector. However, many GenICam feature names are quite long and this would lead to record names that are too long, particularly since they will have IOC-specific prefixes added to them. The Python scripts limit the record names to being 20 characters. This truncation is done by trimming words in the name to 3 characters, where words are defined to begin with an upper-case character. The words are trimmed from left to right until the record name is no more than 20 characters. For example, the GenICam feature name AutoExposureTimeLowerLimit has the record name GC_AutExpTimLowLimit. This trimming algorithm is different from the one in aravisGigE, and has the advantage that the names are more readable, and a given GenICam feature name will almost always result in the same record name, which was not true for aravisGigE. In aravisGigE the feature names were truncated to 16, and a final digit was assigned in case of duplicate names.
For example, for the GenICam property AcquisitionFrameRate on a Point Grey BlackFly 20E4C aravisGigE produces the record name $(P)$(R)AcquisitionFram1, while ADGenICam produces $(P)$(R)GC_AcqFrameRate, which is more understandable because it includes the word Rate. Furthermore ADGenICam produces this same record name for this feature on the FLIR Oryx 51S5, while aravisGigE produces $(P)$(R)AcquisitionFram6, which is different from what is produces for the BlackFly camera. This is because the number of duplicate names after truncation is different for the 2 cameras.
Python script to create medm screens¶
ADGenICam/scripts/makeAdl.py is a Python program to read the XML file and produce a medm (.adl) files. The first argument is the name of the XML file and the second argument is the base name of the adl files. The medm files are [baseFile]-features1.adl, [baseFile]-features2.adl, etc.
For example:
TahoeU18:/corvette/home/epics/devel/areaDetector/ADGenICam> python scripts/makeAdl.py xml/PGR_Blackfly_20E4C.xml GenICamApp/op/adl/PGR_Blackfly_20E4C
Don't know what to do with Register
TahoeU18:/corvette/home/epics/devel/areaDetector/ADGenICam> ls -ltr GenICamApp/op/adl/PGR_Blackfly_20E4C-features_*
-rw-r--r-- 1 epics domain users 50125 Jun 3 14:40 GenICamApp/op/adl/PGR_Blackfly_20E4C-features_1.adl
-rw-r--r-- 1 epics domain users 40041 Jun 3 14:40 GenICamApp/op/adl/PGR_Blackfly_20E4C-features_2.adl
-rw-r--r-- 1 epics domain users 49498 Jun 3 14:40 GenICamApp/op/adl/PGR_Blackfly_20E4C-features_3.adl
-rw-r--r-- 1 epics domain users 5760 Jun 3 14:40 GenICamApp/op/adl/PGR_Blackfly_20E4C-features_4.adl
The number of camera specific screens generated is determined by the number of features in a specific camera and by the maximum screen size specified in the Python program. In this case 4 .adl files were created. These are shown in the MEDM screens section below.
To change the maximum size of the adl files these 2 lines in makeAdl.py can be edited:
maxScreenWidth = 1600
maxScreenHeight = 850
Shell scripts¶
addCamera.sh is a simple script that runs both makeDb.py and makeAdl.py. It is run from the top-level ADGenICam directory and is passed the name of the camera, i.e. the name of the XML file without the path and without the .xml extension. It can be edited to enable or disable the –devInt64 flag for makeDb.py.
updateCameras.sh is a simple script that runs addCamera.sh for all cameras in the xml/ directory. It is useful for updating all databases and OPI screens when the Python scripts are changed.
ADGenICam Classes¶
ADGenICam provides three classes that are used by derived classes for real cameras.
GenICamFeature class¶
This class defines a GenICam feature and associates it with an asyn parameter. Real drivers must define a class derived from ADGenICam that implements a number of pure virtual functions, for example to write/read features to/from the camera. This is the complete list of all pure virtual functions that the derived class must implement:
// These are the pure virtual functions that derived classes must implement
virtual bool isImplemented(void) = 0;
virtual bool isAvailable(void) = 0;
virtual bool isReadable(void) = 0;
virtual bool isWritable(void) = 0;
virtual int readInteger(void) = 0;
virtual int readIntegerMin(void) = 0;
virtual int readIntegerMax(void) = 0;
virtual int readIncrement(void) = 0;
virtual void writeInteger(int value) = 0;
virtual bool readBoolean(void) = 0;
virtual void writeBoolean (bool value) = 0;
virtual double readDouble(void) = 0;
virtual double readDoubleMin(void) = 0;
virtual double readDoubleMax(void) = 0;
virtual void writeDouble(double value) = 0;
virtual int readEnumIndex(void) = 0;
virtual void writeEnumIndex(int value) = 0;
virtual std::string readEnumString(void) = 0;
virtual void writeEnumString(std::string const & value) = 0;
virtual void readEnumChoices(std::vector<std::string>& enumStrings, std::vector<int>& enumValues) = 0;
virtual std::string readString(void) = 0;
virtual void writeString(std::string const & value) = 0;
virtual void writeCommand(void) = 0;
This class includes the following properties:
std::string mAsynName; // asyn parameter name
asynParamType mAsynType; // asyn parameter type
int mAsynIndex; // asyn parameter index
std::string mFeatureName; // GenICam feature name
GCFeatureType_t mFeatureType; // GenICam feature type
The class contains methods to convert the units used by EPICS drivers to/from those used by GenICam. These conversions currently include:
- GenICam ExposureTime, ExposureTimeAbs, and TriggerDelay features: EPICS uses seconds, GenICam uses microseconds
- EPICS AcquirePeriod: EPICS uses period in seconds, GenICam uses frame rate in Hz
- EPICS ImageMode: EPICS uses [Single, Multiple, Continuous] enums, GenICam uses [Continuous, SingleFrame, Multiframe], and we want to use the EPICS values.
The class contains methods to write the features value to the camera, and to read the current value of the feature from the camera.
ADGenICamFeatureSet¶
This class is a collection of all of the GenICamFeature objects for the camera, implemented as a C++ std::multiset. It provides methods to insert and find the GenICamFeature objects, to read all of the feature values from the camera, and to print a report of all of the feature attributes and values. This report() method is called when asynReport is called for the owner ADGenICam class.
ADGenICam class¶
This is the base class from which the actual camera driver will derive. ADGenICam inherits from ADDriver.
It contains the following methods:
- createFeature() This is a pure virtual method that the derived class must implement. It creates a detector-specific feature object derived from GenICamFeature.
- drvUserCreate() This is the method that is called when EPICS base is initializing the records during iocInit. Most areaDetector drivers do not implement this method. This is because they create their detector-specific parameters in their constructor, and the asynPortDriver base class implements drvUserCreate. ADGenICam is different. It creates the detector-specific parameters dynamically as the database file created by the Python script described above is read in during iocInit. For each GenICam feature that is passed in the drvUser argument to this function it calls createFeature() described above.
- addADDriverFeatures() This function creates GenICam features for all of the standard ADDriver parameters that map to GenICam features. This allows the standard records such as ADManufacturer, ADModel, ADMaxSizeX, ADMaxSizeY, etc. to get their values with no feature-specific code in this class or the derived class.
- writeInt32() This function handles writes to integer parameters. If the parameter is associated with a GenICam feature then it writes the value to the camera. Because writing to one feature can affect the values of other features, the values of all GenICam features are read back after the write is complete. This includes the enum strings and values for all enum features, since these may have changed as well.
- writeFloat64() This function handles writes to double precision parameters. If the parameter is associated with a GenICam feature then it writes the value to the camera. Because writing to one feature can affect the values of other features, the values of all GenICam features are read back after the write is complete. This includes the enum strings and values for all enum features, since these may have changed as well.
- readEnum() This reads the enum strings associated with a parameter. If the parameter is associated with a GenICam feature then it reads the enum strings and values for that feature, so EPICS bo/bi/mbbo/mbbi record enum choices are constructed at run-time with the choices the camera actually supports. This function is called at iocInit for all enum features. These enum choices can also change at run-time as explained above, and this class does callbacks to device support with the new choices.
- startCapture() This is a pure virtual function that the derived class must implement to start the camera acquisition.
- stopCapture() This is a pure virtual function that the derived class must implement to stop the camera acquisition.
The following is part of the output of the asynReport 1 ARV1 command for the ADAravis driver, which inherits from ADGenICam. Note that it prints the list of features:
epics> asynReport 1 ARV1
ARV1 multiDevice:No canBlock:Yes autoConnect:Yes
enabled:Yes connected:Yes numberConnects 1
nDevices 0 nQueued 0 blocked:No
asynManagerLock:No synchronousLock:No
exceptionActive:No exceptionUsers 1 exceptionNotifys 0
traceMask:0x1 traceIOMask:0x2 traceInfoMask:0x1
Aravis GigE detector ARV1
NX, NY: 1600 1200
Data type: 1
Feature list
Node name: AcquisitionFrameCount
value: 1
Node name: AcquisitionFrameCount
value: 1
Node name: AcquisitionFrameRate
value: 43.956043
Node name: AcquisitionFrameRate
value: 43.956043
Node name: AcquisitionFrameRate
value: 43.956043
Node name: AcquisitionFrameRateAuto
value: Continuous
Node name: AcquisitionFrameRateEnabled
value: false
Node name: AcquisitionFrameRateEnabled
value: false
Node name: AcquisitionMode
value: Continuous
...
This is the output of asynReport with details increased from 1 to 2 so additional information about each feature is printed:
epics> asynReport 2 ARV1
ARV1 multiDevice:No canBlock:Yes autoConnect:Yes
enabled:Yes connected:Yes numberConnects 1
nDevices 0 nQueued 0 blocked:No
asynManagerLock:No synchronousLock:No
exceptionActive:No exceptionUsers 1 exceptionNotifys 0
traceMask:0x1 traceIOMask:0x2 traceInfoMask:0x1
interposeInterfaceList
asynOctet pinterface 0x55d81c1bbfa0 drvPvt 0x55d81ca033c0
interfaceList
asynCommon pinterface 0x55d81c1baed0 drvPvt 0x55d81c9ff750
asynDrvUser pinterface 0x55d81c1bacc0 drvPvt 0x55d81c9ff750
asynOctet pinterface 0x55d81c1bade0 drvPvt 0x55d81c9ff750
asynInt32 pinterface 0x55d81c1baea0 drvPvt 0x55d81c9ff750
asynFloat64 pinterface 0x55d81c1bae40 drvPvt 0x55d81c9ff750
asynInt32Array pinterface 0x55d81c1bad80 drvPvt 0x55d81c9ff750
asynGenericPointer pinterface 0x55d81c1bad20 drvPvt 0x55d81c9ff750
asynEnum pinterface 0x55d81c1bace0 drvPvt 0x55d81c9ff750
Aravis GigE detector ARV1
NX, NY: 1600 1200
Data type: 1
Feature list
Node name: AcquisitionFrameCount
value: 1
asynIndex: 72
asynName: NIMAGES
asynType: 1
isImplemented: true
isAvailable: false
isReadable: true
isWritable: true
Node name: AcquisitionFrameCount
value: 1
asynIndex: 215
asynName: GC_I_AcquisitionFrameCount
asynType: 1
isImplemented: true
isAvailable: false
isReadable: true
isWritable: true
Node name: AcquisitionFrameRate
value: 43.956043
asynIndex: 134
asynName: GC_D_AcquisitionFrameRate
asynType: 3
isImplemented: true
isAvailable: true
isReadable: true
isWritable: false
Node name: AcquisitionFrameRate
value: 43.956043
asynIndex: 94
asynName: GC_FRAMERATE
asynType: 3
isImplemented: true
isAvailable: true
isReadable: true
isWritable: false
Node name: AcquisitionFrameRate
value: 43.956043
asynIndex: 75
asynName: ACQ_PERIOD
asynType: 3
isImplemented: true
isAvailable: true
isReadable: true
isWritable: false
Node name: AcquisitionFrameRateAuto
value: Continuous
asynIndex: 165
asynName: GC_E_AcquisitionFrameRateAuto
asynType: 1
isImplemented: true
isAvailable: true
isReadable: true
isWritable: false
enums: 0: Off
2: Continuous
Node name: AcquisitionFrameRateEnabled
value: false
asynIndex: 299
asynName: GC_B_AcquisitionFrameRateEnabled
asynType: 1
isImplemented: true
isAvailable: true
isReadable: true
isWritable: true
Node name: AcquisitionFrameRateEnabled
value: false
asynIndex: 95
asynName: GC_FRAMERATE_ENABLE
asynType: 1
isImplemented: true
isAvailable: true
isReadable: true
isWritable: true
Node name: AcquisitionMode
value: Continuous
asynIndex: 69
asynName: IMAGE_MODE
asynType: 1
isImplemented: true
isAvailable: true
isReadable: true
isWritable: true
Node name: AcquisitionMode
value: Continuous
asynIndex: 164
asynName: GC_E_AcquisitionMode
asynType: 1
isImplemented: true
isAvailable: true
isReadable: true
isWritable: true
enums: 0: Continuous
1: SingleFrame
2: MultiFrame
...
Standard driver parameters¶
ADGenICam implements many of the driver parameters from the ADDriver base class by mapping these parameters to GenICam features. The following table lists the mapping between the standard records and GenICam features.
| EPICS record names | Record types | GenICam features | Description |
|---|---|---|---|
| Manufacturer_RBV | stringin | DeviceVendorName | The camera manufacturer name |
| Model_RBV | stringin | DeviceModelName | The camera model name |
| FirmwareVersion_RBV | stringin | DeviceFirmwareVersion | The camera firmware version |
| SerialNumber_RBV | stringin | DeviceSerialNumber | The camera serial number |
| MaxSizeX_RBV | longin | WidthMax | Sensor width |
| MaxSizeY_RBV | longin | HeightMax | Sensor height |
| SizeX, SizeX_RBV | longout, longin | Width | Width of region to read out |
| SizeY, SizeY_RBV | longout, longin | Height | Height of region to read out |
| MinX, MinX_RBV | longout, longin | OffsetX | X start of region to read out |
| MinY, MinY_RBV | longout, longin | OffsetY | Y start of region to read out |
| BinX, BinX_RBV | longout, longin | BinningHorizontal | Horizontal binning factor |
| BinY, BinY_RBV | longout, longin | BinningVertial | Vertical binning factor |
| ImageMode, ImageMode_RBV | mbbo, mbbi | AcquisitionMode | The driver maps the standard areaDetector enums [Single, Multiple, Continuous] into the GenICam enums [Continuous, SingleFrame, MultiFrame]. |
| AcquireTime, AcquireTime_RBV | ao, ai | ExposureTime or ExposureTimeAbs | Exposure time in seconds. The units are converted to/from the microseconds used by GenICam. |
| AcquirePeriod, AcquirePeriod_RBV | ao, ai | AcquisitionFrameRate or AcquisitionFrameRateAbs | Acquire period in seconds. The units are converted to/from the frames/s used by GenICam. |
| AcquireTime, AcquireTime_RBV | ao, ai | ExposureTime or ExposureTimeAbs | Exposure time in seconds. The units are converted to/from the microseconds used by GenICam. |
| NumImages,, NumImages_RBV | longout, longin | AcquisitionFrameCount | Number of images to acquire when ImageMode=Multiple |
| Gain, Gain_RBV | ao, ai | Gain | Analog gain. Units may vary, often in dB. |
ADGenICam driver parameters¶
ADGenICam adds a number of driver parameters beyond those in the ADDriver base class and the camera-specific parameters described above. These parameters are intended to abstract the most commonly used GenICam features so that they:
- Have the same EPICS record names regardless of the actual GenICam feature name.
- Exist even if there is no corresponding GenICam feature for a specific camera, so that OPI screens don’t show invalid widgets and scripts will not generate errors due to non-existent PVs.
| EPICS record names | Record types | GenICam features | Description |
|---|---|---|---|
| FrameRate, FrameRate_RBV | ao, ai | AcquisitionFrameRate or AcquisitionFrameRateAbs | Frame rate in frames/s |
| FrameRateEnable, FrameRateEnable_RBV | bo, bi | AcquisitionFrameRateEnable or AcquisitionFrameRateEnabled | Enables/disables frame rate. If disabled then exposure time or readout time determines frame rate. |
| TriggerSource, TriggerSource_RBV | mbbo, mbbi | TriggerSource | Source of trigger signals. |
| TriggerOverlap, TriggerOverlap_RBV | mbbo, mbbi | TriggerOverlap | Controls whether trigger signals can overlap the exposure or readout. |
| TriggerSoftware | bo | TriggerSoftware | Generates a software trigger when processed. |
| ExposureMode, ExposureMode_RBV | mbbo, mbbi | ExposureMode | Typical values are Timed and TriggerWidth. |
| ExposureAuto, ExposureAuto_RBV | mbbo, mbbi | ExposureAuto | Enables automatically changing the ExposureTime for optimal image. |
| GainAuto, GainAuto_RBV | mbbo, mbbi | GainAuto | Enables automatically changing the Gain for optimal image. |
| PixelFormat, PixelFormat_RBV | mbbo, mbbi | PixelFormat | Typical values are Mono8, Mono16, RGB8Packed, etc. |
Linux USB and GigE System Settings¶
In order to run GigE and USB-3 cameras at their full frame rates on Linux it is necessary to change some of the default Linux system settings.
For GigE cameras the default values of the net.core.rmem_max and net.core.rmem_default are typically much to low (~200 KB) for optimal performance of GigE and 10 GigE cameras. These should be increased to 8 MB. To set the values immediately execute the following commands as root:
sysctl -w net.core.rmem_max=8388608 net.core.rmem_default=8388608
To make the settings permanent add these lines to /etc/sysctl.conf:
net.core.rmem_max=8388608
net.core.rmem_default=8388608
For USB-3 cameras by default Linux limits image capture to 2 MB. To capture images over 2 MB, extend the USBFS limit on how many buffers can be locked into the driver. This is done by updating the boot params in grub. You can set the memory limit until the next reboot, or set it permanently.
To set the maximum usbfs memory limit until the next reboot, run this command as root:
modprobe usbcore usbfs_memory_mb=1000
This method does not work with Ubuntu 14.04 or newer. With Ubuntu 14.04, users must set the memory limit permanently.
To set the maximum usbfs memory limit permanently:
Open the /etc/default/grub file in any text editor. Find and replace:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
with this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=1000"
Update grub with these settings:
update-grub
On some Linux systems the update-grub command does not exist, so use this instead:
grub2-mkconfig -o /boot/grub2/grub.cfg
Reboot and test a USB 3 camera.
If this method fails to set the memory limit, run the following command:
sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
To confirm that you have successfully updated the memory limit, run the following command:
cat /sys/module/usbcore/parameters/usbfs_memory_mb
MEDM screens¶
The following is the MEDM screen ADGenICam.adl when controlling a Point Grey Blackfly BFLY-PGE-20E4C camera. This screen is generic and can be used for any GemICam camera.
The following is the MEDM screen PGR_Blackyfly_20E4C-features1.adl when controlling a Point Grey Blackfly BFLY-PGE-20E4C camera. This screen was autogenerated by the Python script described above, and is specific to this camera model. It is loaded from the “Camera-specific features” related display widget in the above screen.
The following are the additional three feature screens generated by the Python program described above. The number of camera specific screens generated is determined by the number of features in a specific camera and by the maximum screen size specified in the Python program.
Known issues¶
- New cameras use the Gain feature, which is a double. Some old cameras use GainRaw or GainRawChannelB which is an integer. The ADGain parameter cannot be used for GainRawChannelB because the data types don’t match, so one must use feature itself.
- Some cameras use an integer for the AcquireTime or AcquirePeriod features. These won’t work, the data types won’t match, so one must use raw feature.
- These problems could possibly be fixed by checking for the case when asynType is different from expected.
- BinningMode feature is only supported by raw feature. I have no way to test this, I don’t have any cameras with that feature.
- aravisGige allowed setting the binning with ADBinX and ADBinY even if BinningMode only supported certain enums.


{% extends "base/confirmation.html" %} {% block page_title %}{% trans %}Password change successful{% endtrans %}{% endblock %} {% block content %} {% trans %}
Your password was changed.


What is the best new audio interface of 2019?
by MusicRadarWhat is the best new audio interface of 2019?
The audio interface is essential to your workflow and the best examples are often those that just get out of the way, enabling you to interact with your choice of DAW seamlessly, while offering good quality recording and monitoring.
Here we have put together a shortlist of the best new audio interfaces of 2019, but which I/O box gets your vote? Have you been impressed by any of the gear on the list below? Let us know who you think deserves the title.
Want to vote in other Best in music tech 2019 categories? Have your say here. Voting closes at midnight on 4 December 2019.


Personal training and fitness program for all levels
personal trianing by appointment all days of the week from 5am to 8pm. No previous exercise experience required. personal training by appointment all days of the week from 5am to 8pm. No previous exercise experience required.
- NEW to exercise
- MALE and FEMALE clients
- all AGES
- other THINGS
- THAT I do
- I will LIST it Here
- so EVERYONE can see it
- NEW to exercise
- MALE and FEMALE clients
- all AGES
- other THINGS
- THAT I do
- I will LIST it Here
- so EVERYONE can see it
WHY train with AKFitness?
WHY train with AKFitness?
AKFitness will help you achieve your fitness goals efficently. You will work hard, but you will also see RESULTS. AKFitness will not only train your body, but also your mind. You can receive a personalized dieting plan that is tailored to work with your body, not against it. Still need more reasons? Check out what some other clients have to say:
"Cupcake ipsum dolor sit amet. Soufflé dessert sesame snaps liquorice. Lollipop jelly beans candy pie wafer macaroon cupcake gingerbread sugar plum. Pastry cake gummi bears marzipan sugar plum bonbon donut.
Sesame snaps liquorice chocolate bar cake gummies muffin macaroon donut. Fruitcake cupcake oat cake brownie dragée liquorice. Danish cake muffin danish powder."
"Cupcake ipsum dolor sit amet. Soufflé dessert sesame snaps liquorice. Lollipop jelly beans candy pie wafer macaroon cupcake gingerbread sugar plum. Pastry cake gummi bears marzipan sugar plum bonbon donut.
Sesame snaps liquorice chocolate bar cake gummies muffin macaroon donut. Fruitcake cupcake oat cake brownie dragée liquorice. Danish cake muffin danish powder."
"Cupcake ipsum dolor sit amet. Soufflé dessert sesame snaps liquorice. Lollipop jelly beans candy pie wafer macaroon cupcake gingerbread sugar plum. Pastry cake gummi bears marzipan sugar plum bonbon donut.
Sesame snaps liquorice chocolate bar cake gummies muffin macaroon donut. Fruitcake cupcake oat cake brownie dragée liquorice. Danish cake muffin danish powder."
Follow @a_kanner32 on Instagram