|
数字式立体视觉刺激系统
1.0.1
Digital Stereo System
|
类 | |
| struct | NV_DISPLAY_PORT_INFO |
| struct | NV_DISPLAY_PORT_CONFIG |
| struct | NV_HDMI_SUPPORT_INFO |
| struct | tagNV_TIMINGEXT |
| struct | tagNV_TIMING |
| struct | NV_VIEW_TARGET_INFO |
| struct | NV_DISPLAY_PATH |
| struct | NV_DISPLAY_PATH_INFO_V3 |
| struct | NV_DISPLAY_PATH_INFO |
| struct | _NV_POSITION |
| struct | _NV_RESOLUTION |
| struct | _NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1 |
| struct | _NV_DISPLAYCONFIG_PATH_TARGET_INFO_V1 |
| struct | _NV_DISPLAYCONFIG_PATH_TARGET_INFO_V2 |
| struct | _NV_DISPLAYCONFIG_SOURCE_MODE_INFO_V1 |
| struct | _NV_DISPLAYCONFIG_PATH_INFO_V1 |
| struct | _NV_DISPLAYCONFIG_PATH_INFO_V2 |
Macro for constructing the version field of NV_DISPLAY_PORT_CONFIG
Macro for constructing the version fields of NV_DISPLAY_PATH_INFO
| #define _NV_DISPLAYCONFIG_PATH_INFO_V2 _NV_DISPLAYCONFIG_PATH_INFO |
This define is temporary and must be removed once DVS failure is fixed.
| #define _NV_TARGET_VIEW_MODE_ |
| #define NV_DISPLAY_PATH_INFO_VER NV_DISPLAY_PATH_INFO_VER4 |
| #define NV_DISPLAY_PATH_INFO_VER1 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,1) |
| #define NV_DISPLAY_PATH_INFO_VER2 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,2) |
| #define NV_DISPLAY_PATH_INFO_VER3 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,3) |
| #define NV_DISPLAY_PATH_INFO_VER4 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,4) |
| #define NV_DISPLAY_PORT_CONFIG_VER MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_CONFIG,2) |
| #define NV_DISPLAY_PORT_CONFIG_VER_1 MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_CONFIG,1) |
Macro for constructing the version field of NV_DISPLAY_PORT_CONFIG.
| #define NV_DISPLAY_PORT_CONFIG_VER_2 MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_CONFIG,2) |
Macro for constructing the version field of NV_DISPLAY_PORT_CONFIG.
| #define NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_VER NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_VER1 |
| #define NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_VER1 MAKE_NVAPI_VERSION(NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1,1) |
| #define NV_DISPLAYCONFIG_PATH_INFO_VER NV_DISPLAYCONFIG_PATH_INFO_VER2 |
| #define NV_DISPLAYCONFIG_PATH_INFO_VER1 MAKE_NVAPI_VERSION(NV_DISPLAYCONFIG_PATH_INFO_V1,1) |
| #define NV_DISPLAYCONFIG_PATH_INFO_VER2 MAKE_NVAPI_VERSION(NV_DISPLAYCONFIG_PATH_INFO_V2,2) |
| #define NV_HDMI_SUPPORT_INFO_VER MAKE_NVAPI_VERSION(NV_HDMI_SUPPORT_INFO,1) |
| #define NV_VIEW_TARGET_INFO_VER MAKE_NVAPI_VERSION(NV_VIEW_TARGET_INFO,2) |
| #define NVAPI_ADVANCED_MAX_DISPLAY_PATH NVAPI_ADVANCED_MAX_VIEW_TARGET |
| #define NVAPI_ADVANCED_MAX_VIEW_TARGET 4 |
| #define NVAPI_MAX_DISPLAY_PATH NVAPI_MAX_VIEW_TARGET |
| #define NVAPI_MAX_VIEW_TARGET 2 |
| #define NVFORMAT_MAKEFOURCC | ( | ch0, | |
| ch1, | |||
| ch2, | |||
| ch3 | |||
| ) |
| typedef enum _NV_DISPLAYCONFIG_FLAGS NV_DISPLAYCONFIG_FLAGS |
| typedef struct _NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1 NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1 |
| typedef struct _NV_DISPLAYCONFIG_PATH_INFO_V1 NV_DISPLAYCONFIG_PATH_INFO_V1 |
| typedef struct _NV_DISPLAYCONFIG_PATH_INFO_V2 NV_DISPLAYCONFIG_PATH_INFO_V2 |
As version is not defined for this structure we will be using version of NV_DISPLAYCONFIG_PATH_INFO
As version is not defined for this structure we will be using version of NV_DISPLAYCONFIG_PATH_INFO
| typedef enum _NV_FORMAT NV_FORMAT |
Color formats- used in NvAPI_SetViewEx().
| typedef struct _NV_POSITION NV_POSITION |
| typedef struct _NV_RESOLUTION NV_RESOLUTION |
| typedef enum _NV_ROTATE NV_ROTATE |
Rotate modes- used in NvAPI_SetViewEx().
| typedef enum _NV_SCALING NV_SCALING |
Scaling modes - used in NvAPI_SetViewEx().
| typedef enum _NV_TARGET_VIEW_MODE NV_TARGET_VIEW_MODE |
Used in NvAPI_SetView().
| typedef struct tagNV_TIMING NV_TIMING |
The very basic timing structure based on the VESA standard:
| typedef struct tagNV_TIMINGEXT NV_TIMINGEXT |
NVIDIA-specific timing extras
Used in NV_TIMING.
| enum _NV_FORMAT |
| enum _NV_ROTATE |
| enum _NV_SCALING |
Scaling modes - used in NvAPI_SetViewEx().
| enum _NV_TARGET_VIEW_MODE |
| enum NV_DP_BPC |
Used in NV_DISPLAY_PORT_INFO.
| 枚举值 | |
|---|---|
| NV_DP_BPC_DEFAULT | |
| NV_DP_BPC_6 | |
| NV_DP_BPC_8 | |
| NV_DP_BPC_10 | |
| NV_DP_BPC_12 | |
| NV_DP_BPC_16 |
| enum NV_DP_COLOR_FORMAT |
Used in NV_DISPLAY_PORT_INFO.
| 枚举值 | |
|---|---|
| NV_DP_COLOR_FORMAT_RGB | |
| NV_DP_COLOR_FORMAT_YCbCr422 | |
| NV_DP_COLOR_FORMAT_YCbCr444 |
| enum NV_DP_COLORIMETRY |
Used in NV_DISPLAY_PORT_INFO.
| 枚举值 | |
|---|---|
| NV_DP_COLORIMETRY_RGB | |
| NV_DP_COLORIMETRY_YCbCr_ITU601 | |
| NV_DP_COLORIMETRY_YCbCr_ITU709 |
| enum NV_DP_DYNAMIC_RANGE |
Used in NV_DISPLAY_PORT_INFO.
| 枚举值 | |
|---|---|
| NV_DP_DYNAMIC_RANGE_VESA | |
| NV_DP_DYNAMIC_RANGE_CEA |
| enum NV_DP_LANE_COUNT |
Used in NV_DISPLAY_PORT_INFO.
| 枚举值 | |
|---|---|
| NV_DP_1_LANE | |
| NV_DP_2_LANE | |
| NV_DP_4_LANE |
| enum NV_DP_LINK_RATE |
Used in NV_DISPLAY_PORT_INFO.
| 枚举值 | |
|---|---|
| NV_DP_1_62GBPS | |
| NV_DP_2_70GBPS |
| enum NV_MONITOR_CAPS_TYPE |
| __nvapi_deprecated_function | ( | "Do not use this function - it is deprecated in release 290. | Instead, |
| use NvAPI_DISP_SetDisplayConfig." | |||
| ) |
| __nvapi_deprecated_function | ( | "Do not use this function - it is deprecated in release 290. | Instead, |
| use NvAPI_DISP_GetDisplayConfig." | |||
| ) |
This API lets caller retrieve the target display arrangement for selected source display handle.
| [in] | hNvDisplay | NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
| [out] | pTargets | User allocated storage to retrieve an array of NV_VIEW_TARGET_INFO. Can be NULL to retrieve the targetCount. |
| [in,out] | targetMaskCount | Count of target device mask specified in pTargetMask. |
| [out] | targetView | Target view selected from NV_TARGET_VIEW_MODE. |
| NVAPI_OK | Completed request |
| NVAPI_ERROR | Miscellaneous error occurred |
| NVAPI_INVALID_ARGUMENT | Invalid input parameter. |
DESCRIPTION: This API lets caller retrieve the target display arrangement for selected source display handle.
| [in] | hNvDisplay | NVIDIA Display selection. NVAPI_DEFAULT_HANDLE is not allowed, it has to be a handle enumerated with NvAPI_EnumNVidiaDisplayHandle(). |
| [in,out] | pPathInfo | Count field should be set to NVAPI_MAX_DISPLAY_PATH. Can be NULL to retrieve just the pathCount. |
| [in,out] | pPathCount | Number of elements in array pPathInfo->path. |
| [out] | pTargetViewMode | Display view selected from NV_TARGET_VIEW_MODE. |
| NVAPI_OK | Completed request |
| NVAPI_API_NOT_INTIALIZED | NVAPI not initialized |
| NVAPI_ERROR | Miscellaneous error occurred |
| NVAPI_INVALID_ARGUMENT | Invalid input parameter. |
| NVAPI_EXPECTED_DISPLAY_HANDLE | hNvDisplay is not a valid display handle. |
| NVAPI_INTERFACE NvAPI_CreateDisplayFromUnAttachedDisplay | ( | NvUnAttachedDisplayHandle | hNvUnAttachedDisp, |
| NvDisplayHandle * | pNvDisplay | ||
| ) |
This function converts the unattached display handle to an active attached display handle.
At least one GPU must be present in the system and running an NVIDIA display driver.
SUPPORTED OS: Windows XP and higher
| NVAPI_INVALID_ARGUMENT | hNvUnAttachedDisp is not valid or pNvDisplay is NULL. |
| NVAPI_OK | One or more handles were returned |
| NVAPI_NVIDIA_DEVICE_NOT_FOUND | No NVIDIA GPU driving a display was found |
| NVAPI_INTERFACE NvAPI_DisableHWCursor | ( | NvDisplayHandle | hNvDisplay | ) |
This function disables hardware cursor support
SUPPORTED OS: Windows XP
| NvAPI_Disp_ColorControl | ( | NvU32 | displayId, |
| NV_COLOR_DATA * | pColorData | ||
| ) |
DESCRIPTION: This API controls the Color values.
SUPPORTED OS: Windows Vista and higher
| [in] | displayId | Monitor Identifier |
| [in,out] | pColorData | Contains data corresponding to color information |
| NVAPI_INTERFACE NvAPI_DISP_GetDisplayConfig | ( | __inout NvU32 * | pathInfoCount, |
| __out_ecount_full_opt *pathInfoCount NV_DISPLAYCONFIG_PATH_INFO * | pathInfo | ||
| ) |
DESCRIPTION: This API lets caller retrieve the current global display configuration.
USAGE: The caller might have to call this three times to fetch all the required configuration details as follows:
First Pass: Caller should Call NvAPI_DISP_GetDisplayConfig() with pathInfo set to NULL to fetch pathInfoCount.
Second Pass: Allocate memory for pathInfo with respect to the number of pathInfoCount(from First Pass) to fetch //! //! targetInfoCount. If sourceModeInfo is needed allocate memory or it can be initialized to NULL.
Third Pass(Optional, only required if target information is required): Allocate memory for targetInfo with respect to number of targetInfoCount(from Second Pass). SUPPORTED OS: Windows Vista and higher
| [in,out] | pathInfoCount | Number of elements in pathInfo array, returns number of valid topologies, this cannot be null. |
| [in,out] | pathInfo | Array of path information |
| NVAPI_INVALID_ARGUMENT | - Invalid input parameter. Following can be the reason for this return value:
|
| NVAPI_INTERFACE NvAPI_DISP_GetDisplayIdByDisplayName | ( | const char * | displayName, |
| NvU32 * | displayId | ||
| ) |
SUPPORTED OS: Windows XP and higherDESCRIPTION: This API retrieves the Display Id of a given display by display name. The display must be active to retrieve the displayId. In the case of clone mode or Surround gaming, the primary or top-left display will be returned.
| [in] | displayName | Name of display (Eg: "\\DISPLAY1" to retrieve the displayId for. |
| [out] | displayId | Display ID of the requested display. |
retval NVAPI_OK: Capabilties have been returned. retval NVAPI_INVALID_ARGUMENT: One or more args passed in are invalid. retval NVAPI_API_NOT_INTIALIZED: The NvAPI API needs to be initialized first retval NVAPI_NO_IMPLEMENTATION: This entrypoint not available retval NVAPI_ERROR: Miscellaneous error occurred
| NVAPI_INTERFACE NvAPI_DISP_GetGDIPrimaryDisplayId | ( | NvU32 * | displayId | ) |
SUPPORTED OS: Windows XP and higherDESCRIPTION: This API returns the Display ID of the GDI Primary.
| [out] | displayId | Display ID of the GDI Primary display. |
| NVAPI_OK | Capabilties have been returned. |
| NVAPI_NVIDIA_DEVICE_NOT_FOUND | GDI Primary not on an NVIDIA GPU. |
| NVAPI_INVALID_ARGUMENT | One or more args passed in are invalid. |
| NVAPI_API_NOT_INTIALIZED | The NvAPI API needs to be initialized first |
| NVAPI_NO_IMPLEMENTATION | This entrypoint not available |
| NVAPI_ERROR | Miscellaneous error occurred |
| NvAPI_DISP_GetMonitorCapabilities | ( | NvU32 | displayId, |
| NV_MONITOR_CAPABILITIES * | pMonitorCapabilities | ||
| ) |
SUPPORTED OS: Windows Vista and higher
DESCRIPTION: This API returns the Monitor capabilities
SUPPORTED OS: Windows Vista and higher
| [in] | displayId | Monitor Identifier |
| [out] | pMonitorCapabilities | The monitor support info |
| NvAPI_Disp_InfoFrameControl | ( | NvU32 | displayId, |
| NV_INFOFRAME_DATA * | pInfoframeData | ||
| ) |
DESCRIPTION: This API controls the InfoFrame values.
SUPPORTED OS: Windows Vista and higher
| [in] | displayId | Monitor Identifier |
| [in,out] | pInfoframeData | Contains data corresponding to InfoFrame |
| NVAPI_INTERFACE NvAPI_DISP_SetDisplayConfig | ( | __in NvU32 | pathInfoCount, |
| __in_ecount(pathInfoCount) NV_DISPLAYCONFIG_PATH_INFO * | pathInfo, | ||
| __in NvU32 | flags | ||
| ) |
DESCRIPTION: This API lets caller apply a global display configuration across multiple GPUs.
If all sourceIds are zero, then NvAPI will pick up sourceId's based on the following criteria :
Note
: NVAPI will not intelligently choose the sourceIDs for any configs that does not need a modeset.SUPPORTED OS: Windows Vista and higher
| [in] | pathInfoCount | Number of supplied elements in pathInfo |
| [in] | pathInfo | Array of path information |
| [in] | flags | Flags for applying settings |
| NVAPI_OK | - completed request |
| NVAPI_API_NOT_INTIALIZED | - NVAPI not initialized |
| NVAPI_ERROR | - miscellaneous error occurred |
| NVAPI_INVALID_ARGUMENT | - Invalid input parameter. |
| NVAPI_INTERFACE NvAPI_EnableHWCursor | ( | NvDisplayHandle | hNvDisplay | ) |
This function enables hardware cursor support
SUPPORTED OS: Windows XP
| NVAPI_INTERFACE NvAPI_GetAssociatedDisplayOutputId | ( | NvDisplayHandle | hNvDisplay, |
| NvU32 * | pOutputId | ||
| ) |
This function gets the active outputId associated with the display handle.
SUPPORTED OS: Windows XP and higher
| [in] | hNvDisplay | NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
| [out] | outputId | The active display output ID associated with the selected display handle hNvDisplay. The outputid will have only one bit set. In the case of Clone or Span mode, this will indicate the display outputId of the primary display that the GPU is driving. See handles. |
| NVAPI_OK | Call successful. |
| NVAPI_NVIDIA_DEVICE_NOT_FOUND | No NVIDIA GPU driving a display was found. |
| NVAPI_EXPECTED_DISPLAY_HANDLE | hNvDisplay is not a valid display handle. |
| NVAPI_INTERFACE NvAPI_GetAssociatedNvidiaDisplayName | ( | NvDisplayHandle | NvDispHandle, |
| NvAPI_ShortString | szDisplayName | ||
| ) |
For a given NVIDIA display handle, this function returns a string (such as "\\.\DISPLAY1") to identify the display.
SUPPORTED OS: Windows XP and higher
| NVAPI_INVALID_ARGUMENT | Either argument is NULL |
| NVAPI_OK | *pNvDispHandle is now valid |
| NVAPI_NVIDIA_DEVICE_NOT_FOUND | No NVIDIA device maps to that display name |
| NvAPI_GetDisplayPortInfo | ( | NvDisplayHandle | hNvDisplay, |
| NvU32 | outputId, | ||
| NV_DISPLAY_PORT_INFO * | pInfo | ||
| ) |
DESCRIPTION: This function returns the current DisplayPort-related information on the specified device (monitor).
SUPPORTED OS: Windows XP and higher
| [in] | hNvDisplay | NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
| [in] | outputId | The display output ID. If "0", then the default outputId from NvAPI_GetAssociatedDisplayOutputId() will be used. See handles. |
| [out] | pInfo | The DisplayPort information |
| NVAPI_OK | Completed request |
| NVAPI_ERROR | Miscellaneous error occurred |
| NVAPI_INVALID_ARGUMENT | Invalid input parameter. |
| NvAPI_GetHDMISupportInfo | ( | NvDisplayHandle | hNvDisplay, |
| NvU32 | outputId, | ||
| NV_HDMI_SUPPORT_INFO * | pInfo | ||
| ) |
This API returns the current infoframe data on the specified device(monitor).
SUPPORTED OS: Windows Vista and higher
| [in] | hvDisplay | NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
| [in] | outputId | The display output id. If it's "0" then the default outputId from NvAPI_GetAssociatedDisplayOutputId() will be used. See handles. |
| [out] | pInfo | The monitor and GPU's HDMI support info |
| NVAPI_OK | Completed request |
| NVAPI_ERROR | Miscellaneous error occurred |
| NVAPI_INVALID_ARGUMENT | Invalid input parameter. |
| NVAPI_INTERFACE NvAPI_GetSupportedViews | ( | NvDisplayHandle | hNvDisplay, |
| NV_TARGET_VIEW_MODE * | pTargetViews, | ||
| NvU32 * | pViewCount | ||
| ) |
This API lets caller enumerate all the supported NVIDIA display views - nView and Dualview modes.
SUPPORTED OS: Windows XP and higher
| [in] | hNvDisplay | NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
| [out] | pTargetViews | Array of supported views. Can be NULL to retrieve the pViewCount first. |
| [in,out] | pViewCount | Count of supported views. |
| NVAPI_OK | Completed request |
| NVAPI_ERROR | Miscellaneous error occurred |
| NVAPI_INVALID_ARGUMENT | Invalid input parameter. |
| NVAPI_INTERFACE NvAPI_GetUnAttachedAssociatedDisplayName | ( | NvUnAttachedDisplayHandle | hNvUnAttachedDisp, |
| NvAPI_ShortString | szDisplayName | ||
| ) |
This function returns the display name given, for example, "\\DISPLAY1", using the unattached NVIDIA display handle
SUPPORTED OS: Windows XP and higher
| NVAPI_INVALID_ARGUMENT | Either argument is NULL |
| NVAPI_OK | *pNvDispHandle is now valid |
| NVAPI_NVIDIA_DEVICE_NOT_FOUND | No NVIDIA device maps to that display name |
| NVAPI_INTERFACE NvAPI_GetVBlankCounter | ( | NvDisplayHandle | hNvDisplay, |
| NvU32 * | pCounter | ||
| ) |
This function gets the V-blank counter
SUPPORTED OS: Windows XP and higher
| NvAPI_SetDisplayPort | ( | NvDisplayHandle | hNvDisplay, |
| NvU32 | outputId, | ||
| NV_DISPLAY_PORT_CONFIG * | pCfg | ||
| ) |
DESCRIPTION: This function sets up DisplayPort-related configurations.
SUPPORTED OS: Windows XP and higher
| [in] | hNvDisplay | NVIDIA display handle. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
| [in] | outputId | This display output ID, when it's "0" it means the default outputId generated from the return of NvAPI_GetAssociatedDisplayOutputId(). See handles. |
| [in] | pCfg | The display port config structure. If pCfg is NULL, it means to use the driver's default value to setup. |
| NVAPI_OK | Completed request |
| NVAPI_ERROR | Miscellaneous error occurred |
| NVAPI_INVALID_ARGUMENT | Invalid input parameter |
| NVAPI_INTERFACE NvAPI_SetRefreshRateOverride | ( | NvDisplayHandle | hNvDisplay, |
| NvU32 | outputsMask, | ||
| float | refreshRate, | ||
| NvU32 | bSetDeferred | ||
| ) |
This function overrides the refresh rate on the given display/outputsMask. The new refresh rate can be applied right away in this API call or deferred to be applied with the next OS modeset. The override is good for only one modeset (regardless whether it's deferred or immediate).
SUPPORTED OS: Windows XP
| [in] | hNvDisplay | The NVIDIA display handle. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
| [in] | outputsMask | A set of bits that identify all target outputs which are associated with the NVIDIA display handle to apply the refresh rate override. When SLI is enabled, the outputsMask only applies to the GPU that is driving the display output. |
| [in] | refreshRate | The override value. "0.0" means cancel the override. |
| [in] | bSetDeferred |
|
| NVAPI_INVALID_ARGUMENT | hNvDisplay or outputsMask is invalid |
| NVAPI_OK | The refresh rate override is correct set |
| NVAPI_ERROR | The operation failed |


Toggle navigation
hi people
About
(current)
Photos
Top Hits
Poetic Justice
Swimming pools
King Kunta
See him perform live!
Sign Up
(current)
Submit
Kendrick Lamar
Click here to follow Kendrick Lamar
Kendrick Lamar's Shop


The text box converts uppercase and lowercase English characters to different Nepali characters. For example upper case 'A' is converted to 'आ' while lowercase 'a' is converted to 'अ'. Similarly uppercase 'T' is transcribed to 'ट' whereas lowercase 't' is transcribed to 'त'. One more example of character conversion is sa = स, sha = श and S = ष. To get different versions of other special characters just try the capital and small letters in your keyboard.
We are also aware that there are additional characters which are phonetically not possible to be typed with Roman alphabets.
Here are some hints to get special characters for quick and painless Nepali Typing:


The Switcher
The
switcher is a full screen display that shows all of your open windows on
every virtual desktop. You can access the switcher by pressing Windows Key
+ Z by default. The switcher includes the following features.
- View live previews of your open windows.
- Drag windows between desktops.
- Arrange windows on a desktop.
- Move windows in real time.
- Configurable fade in/out.
- Configurable background color.
- Double-click a window to switch to that desktop and activate that window.
- Double-click a blank space on a desktop square to switch to that desktop.


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface MSWinConstants
Constants related to MS Windows DACLs.
| Field Summary | |
|---|---|
static int |
ACCESS_SYSTEM_SECURITY
Flag for permission all specific rights. |
static int |
DELETE
Flag for permission delete. |
static int |
FILE_ADD_FILE
Flag for permission add a file to a directory. |
static int |
FILE_ADD_SUBDIRECTORY
Flag for permission add a subdirectory to a directory. |
static int |
FILE_ALL_ACCESS
Flag for permission STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF. |
static int |
FILE_APPEND_DATA
Flag for permission add data to a file (append). |
static int |
FILE_CASE_PRESERVED_NAMES
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_CASE_SENSITIVE_SEARCH
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_CREATE_PIPE_INSTANCE
Flag for permission create a named pipe. |
static int |
FILE_DELETE_CHILD
Flag for permission delete a file or subdirectory in a directory. |
static int |
FILE_EXECUTE
Flag for permission execute a file. |
static int |
FILE_FILE_COMPRESSION
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_GENERIC_EXECUTE
Flag for permission generic execute. |
static int |
FILE_GENERIC_READ
Flag for permission generic read. |
static int |
FILE_GENERIC_WRITE
Flag for permission generic write. |
static int |
FILE_LIST_DIRECTORY
Flag for permission list contents of a directory. |
static int |
FILE_PERSISTENT_ACLS
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_READ_ATTRIBUTES
Flag for permission all read attributes. |
static int |
FILE_READ_DATA
Flag for permission read file or pipe date. |
static int |
FILE_READ_EA
Flag for permission read. |
static int |
FILE_SUPPORTS_ENCRYPTION
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_SUPPORTS_OBJECT_IDS
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_SUPPORTS_REMOTE_STORAGE
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_SUPPORTS_REPARSE_POINTS
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_SUPPORTS_SPARSE_FILES
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_TRAVERSE
Flag for permission traverse through a directory. |
static int |
FILE_UNICODE_ON_DISK
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_VOLUME_IS_COMPRESSED
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_VOLUME_QUOTAS
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
FILE_WRITE_ATTRIBUTES
Flag for permission all write attributes. |
static int |
FILE_WRITE_DATA
Flag for permission write file or pipe data. |
static int |
FILE_WRITE_EA
Flag for permission write. |
static int |
GENERIC_ALL
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
GENERIC_EXECUTE
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
GENERIC_READ
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
GENERIC_WRITE
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
HKEY_CLASSES_ROOT
HKCR registry root |
static int |
HKEY_CURRENT_CONFIG
HKCC registry root |
static int |
HKEY_CURRENT_USER
HKCU registry root |
static int |
HKEY_DYN_DATA
HKDD registry root |
static int |
HKEY_LOCAL_MACHINE
HKLM registry root |
static int |
HKEY_PERFORMANCE_DATA
HKPD registry root |
static int |
HKEY_USERS
HKU registry root |
static int |
MAXIMUM_ALLOWED
Flag for NT permissions: For more information see the Windows NT description for permisson flags. |
static int |
READ_CONTROL
Flag for permission read. |
static int |
REG_BINARY
Free form binary |
static int |
REG_DWORD
32-bit number |
static int |
REG_EXPAND_SZ
Unicode nul terminated string |
static int |
REG_LINK
Symbolic Link (unicode) |
static int |
REG_MULTI_SZ
Multiple Unicode strings |
static int |
REG_NONE
No value type |
static int |
REG_SZ
Unicode nul terminated string |
static int |
SPECIFIC_RIGHTS_ALL
Flag for permission all specific rights. |
static int |
STANDARD_RIGHTS_ALL
Flag for permission all standard rights. |
static int |
STANDARD_RIGHTS_EXECUTE
Flag for permission standard rights for execute. |
static int |
STANDARD_RIGHTS_READ
Flag for permission standard rights for read. |
static int |
STANDARD_RIGHTS_REQUIRED
Flag for permission standard rights for required. |
static int |
STANDARD_RIGHTS_WRITE
Flag for permission standard rights for write. |
static int |
SYNCHRONIZE
Flag for permission use synchronize. |
static int |
WRITE_DAC
Flag for permission write a DAC. |
static int |
WRITE_OWNER
Flag for permission set owner. |
| Field Detail |
|---|
static final int HKEY_CLASSES_ROOT
static final int HKEY_CURRENT_USER
static final int HKEY_LOCAL_MACHINE
static final int HKEY_USERS
static final int HKEY_PERFORMANCE_DATA
static final int HKEY_CURRENT_CONFIG
static final int HKEY_DYN_DATA
static final int REG_NONE
static final int REG_SZ
static final int REG_EXPAND_SZ
static final int REG_BINARY
static final int REG_DWORD
static final int REG_LINK
static final int REG_MULTI_SZ
static final int FILE_READ_DATA
static final int FILE_LIST_DIRECTORY
static final int FILE_WRITE_DATA
static final int FILE_ADD_FILE
static final int FILE_APPEND_DATA
static final int FILE_ADD_SUBDIRECTORY
static final int FILE_CREATE_PIPE_INSTANCE
static final int FILE_READ_EA
static final int FILE_WRITE_EA
static final int FILE_EXECUTE
static final int FILE_TRAVERSE
static final int FILE_DELETE_CHILD
static final int FILE_READ_ATTRIBUTES
static final int FILE_WRITE_ATTRIBUTES
static final int DELETE
static final int READ_CONTROL
static final int WRITE_DAC
static final int WRITE_OWNER
static final int SYNCHRONIZE
static final int STANDARD_RIGHTS_REQUIRED
static final int STANDARD_RIGHTS_READ
static final int STANDARD_RIGHTS_WRITE
static final int STANDARD_RIGHTS_EXECUTE
static final int STANDARD_RIGHTS_ALL
static final int SPECIFIC_RIGHTS_ALL
static final int FILE_ALL_ACCESS
static final int FILE_GENERIC_READ
static final int FILE_GENERIC_WRITE
static final int FILE_GENERIC_EXECUTE
static final int ACCESS_SYSTEM_SECURITY
static final int MAXIMUM_ALLOWED
static final int GENERIC_READ
static final int GENERIC_WRITE
static final int GENERIC_EXECUTE
static final int GENERIC_ALL
static final int FILE_CASE_SENSITIVE_SEARCH
static final int FILE_CASE_PRESERVED_NAMES
static final int FILE_UNICODE_ON_DISK
static final int FILE_PERSISTENT_ACLS
static final int FILE_FILE_COMPRESSION
static final int FILE_VOLUME_QUOTAS
static final int FILE_SUPPORTS_SPARSE_FILES
static final int FILE_SUPPORTS_REPARSE_POINTS
static final int FILE_SUPPORTS_REMOTE_STORAGE
static final int FILE_VOLUME_IS_COMPRESSED
static final int FILE_SUPPORTS_OBJECT_IDS
static final int FILE_SUPPORTS_ENCRYPTION
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Trust the process.
Set Match Games is creating a decentralized system for game design. Come work on it with us!
Set Match Games dev on Twitch Follow our development progress every Saturday from 10-12 Central. Come hang out!
@jessebmiller "What if we could move fast without breaking things."
I read my email jesse@jessebmiller.com


Account
Id
Account Name
type
PAL
{{ client.id }}
{{ client.name }}
{{ client.type }}
{{ }}
Update
{{ client.id }}
{{ client.name }}
{{ client.type }}
{{ }}
Edit
Delete
Adding Account
Name:
Name is required
type
Type is required
PAL
pal is required
pal length should be greater than 0
pal length should be lesser than 1
Save


Typerr.
Well Done :)
Words typed-
Time taken-
Seconds
Typing speed-
Words/Minute
Stop
W/M
History
Sr No.
Words
Time
Speed
Clear


https://account.smartthings.com/tokens
Visit the Link. Sign in with your Samsung account to be taken to the "Personal Access Tokens" page.
Tap the “Generate new token” button, taking you to a “New Access Token” page.
Provide a name for the new token. Select any functionality you wish to authorize for the token in the “Authorized Scopes” section.
Tap the “Generate Token” button when ready, and you’ll return to the “Personal access tokens” page.
Copy the newly generated token and insert in the settings.
Smarthings Token
350 request per 60 seconds allowed. Each device is 1 request per interval.
Update interval (in seconds)
Additional Update interval for Virtual Switch, they are also refreshed with the normal interval (in seconds, 0 for deactivate)


“A simple smile. That’s the start of opening your heart and being compassionate to others. “ #aayush
check our new blog #ayush
Lorem ipsum dolor sit amet, contur adip elit, sed do mod incid ut labore et dolore magna aliqua. Ut enim ad minim veniam
Join Now. We will send latest update to you.


Hello there, awesome person!
I am a title!
ALL THE BEST
- https://www.youtube.com/watch?v=zfZadurY6c0
- https://to-do.live.com/tasks/id/AQMkADAwATM0MDAAMS1mZgFjLWVjZmUtMDACLTAwCgBGAAADI17qH9YLZkmNkMPM_R_MxQcAZES8fES3Hk62Ua0UfsFU7AAAAgESAAAAZES8fES3Hk62Ua0UfsFU7AAC2UuUYgAAAA==/details
This is a link to Github!


people
Nir Yosef, PhD
Principal Investigator, Associate Professor of Systems Immunology
@Weizmann Institute of Science (active) and EECS @UC Berkeley (on leave)
@YosefLab
Scholar Citations
Wolfson building, office 608
Martin Witte
Lab manager (UC Berkeley)
mwitte (at) berkeley.edu
Shlomit Reich-Zeliger, PhD
Senior Staff Scientist, Lab manager (Weizmann Institute)
shlomit.reich-zeliger (at) weizmann.ac.il
Elior Rahmani, PhD
Postdoctoral associate; joint with Mike Jordan
https://eliorrahmani.com
Scholar Citations
Jonas Maaskola, PhD
Postdoctoral associate
Michal Mark, PhD
Postdoctoral associate
Alex Khodaverdian
Graduate student (EECS)
Adam Gayoso
Graduate student (CCB); joint with Aaron Streets
adamgayoso (at) berkeley.edu@adamgayoso
https://adamgayoso.com/
Scholar Citations
Sebastian Prillo
Graduate student (EECS); joint with Yun S. Song
sprillo (at) berkeley.edu@SebastianPrillo
http://people.eecs.berkeley.edu/~sprillo/
Scholar Citations
Ruchir Rastogi
Graduate student (EECS); joint with Nilah Ioannidis
ruchir_rastogi (at) berkeley.edu@rrastogi02
Scholar Citations
Anmol Kulkarni
Graduate student (Weizmann Institute)
Oier Etxezarreta
MS student (Biomedical Engineering; University of Navarra)
Valeh Valiollah Pour Amiri, M.Sc
Research engineer
valehvpa (at) berkeley.edu
Martin Kim, B.Sc
Research engineer
martinkim (at) berkeley.edu
Kevin An
Undergraduate researcher
kevinan (at) berkeley.edu
Ivan Kristanto
Undergraduate researcher
ivalexander13 (at) berkeley.edu
Akshay Ravoor
Undergraduate researcher
akshayr (at) berkeley.edu
Wilson Wu
Undergraduate researcher
nosliw (at) berkeley.edu
alumni
Anat Kremier, PhD
previously: Postdoctoral associate
first position: Assistant Professor, Department of Biochemistry and Molecular Biology, Rutgers University
Xiuwei Zhang, PhD
previously: Postdoctoral associate
first position: Assistant Professor, School of Computational Science and Engineering, Georgia Institute of Technology
https://xiuweizhang.wordpress.com/
Mariano Gabitto, PhD
previously: Postdoctoral associate
first position: Assistant Investigator, Allen Institute for Brain Science, University of Washington
Matt Jones, PhD
previously: Graduate student (Bioinformatics, UCSF); joint with Jonathan Weissman
first position: Postdoctoral Scholar, Chang lab, Stanford University
https://mattjones315.github.io/
Tal Ashuach, PhD
previously: Graduate student (CCB)
first position: Machine Learning Scientist at Patch Biosciences
Nick Everetts, PhD
previously: Graduate student (CCB); joint with Iswar Hariharan
first position: Postdoc at Hariharan lab
Zoë Steier, PhD
previously: Graduate student (BioE); joint with Aaron Streets
first position: Postdoc at Shalek lab
Chenling Antelope, PhD
previously: Graduate student (CCB)
first position: Computational Biologist at Immunai
Alyssa Morrow, PhD
previously: Graduate student (EECS); joint with Anthony Joseph
first position: Machine Learning Scientist at Patch Biosciences
http://alyssamorrow.com/
Carlos Buen Abad Najar, PhD
previously: Graduate student (CCB); joint with Liana Lareau
first position: Postdoctoral associate, Li and Stephens labs, University of Chicago
Romain Lopez, PhD
previously: Graduate student (EECS); joint with Michael I. Jordan
first position: Postdoctoral scholar, Regev lab, Genentech, Pritchard lab, Stanford
https://romain-lopez.github.io/
David DeTomaso, PhD
previously: Graduate student (CCB)
first position: Scientist at Arsenal Bio
Jim Kaminski, PhD
previously: Graduate student (CCB)
first position: Postdoc at Shalek lab
Shaked Afik, PhD
previously: Graduate student (CCB)
first position: Computational Biologist at Immunai
Ali Sinan Koskal, PhD
previously: Graduate student (EECS)
first position: Google Brain
Michael Cole, PhD
previously: Graduate student (Physics)
first position: Data Scientist at Square
David Fischer, MS
previously: Graduate student
first position: PhD student Computational Biology and Machine Learning, Helmholtz Zentrum München, Germany
Zhongxia (Zee) Yan, MS
previously: Graduate student (EECS)
first position: PhD student, Computer Science, MIT
Kathy Wu, MS
previously: Graduate student (EECS)
first position: Software Engineer, Instabase
Justin Hong, MS
previously: Research engineer
first position: PhD student, Computer Science, Columbia
https://justinhong.me/
Rohan Koodli, MS
previously: Graduate student (EECS)
first position: PhD student, Biomedical Informatics, Stanford
https://www.koodli.com/
Nathan Levy, MS
previously: Graduate student (Machine Learning; ENS Paris-Saclay))
first position: Research engineer, Yosef lab
https://www.linkedin.com/in/nathan-levy-4b7877152/?originalSubdomain=fr
Galen Xing, BA
previously: Software engineer (CZI)
first position: PhD student, Computational Biology, UC Berkeley
https://galenxing.com/
Yanay Rosen, BA
previously: Undergraduate student (LS CS)
first position: PhD student, Computer Science, Stanford
Michael Jayasuriya, BA
previously: Undergraduate student (LS CS)
first position: Software Engineer, Waymo
Richard Zhang, BA
previously: Research & Design engineer
first position: PhD student, Computational Biology, Princeton


The include
tag allows you to include the content from another file stored in the _includes
folder:
{% include footer.html %}
Jekyll will look for the referenced file (in this case, footer.html
) in the _includes
directory at the root of your source directory and insert its contents.
You can choose to include file fragments relative to the current file by using the include_relative
tag:
{% include_relative somedir/footer.html %}
You won't need to place your included content within the _includes
directory.
Instead, the inclusion is specifically relative to the file where the tag is being used.
For example, if _posts/2014-09-03-my-file.markdown
uses the include_relative
tag,
the included file must be within the _posts
directory or one of its subdirectories.
Note that you cannot use the ../
syntax to specify an include location that refers to a higher-level directory.
All the other capabilities of the include
tag are available to the include_relative
tag,
such as variables.
The name of the file you want to embed can be specified as a variable instead of an actual file name.
For example, suppose you defined a variable in your page's front matter like this:
--- title: My page my_variable: footer_company_a.html ---
You could then reference that variable in your include:
{% if page.my_variable %} {% include {{ page.my_variable }} %} {% endif %}
In this example, the include would insert the file footer_company_a.html
from the _includes/footer_company_a.html
directory.
You can also pass parameters to an include.
For example, suppose you have a file called note.html
in your _includes
folder that contains this formatting:

  Note: {{ include.content }}

The {{ include.content }}
is a parameter that gets populated
when you call the include and specify a value for that parameter, like this:
{% include note.html content="This is my sample note." %}
The value of content
(which is This is my sample note
) will be inserted into the {{ include.content }}
parameter.
Passing parameters to includes is especially helpful
when you want to hide away complex formatting from your Markdown content.
For example, suppose you have a special image syntax with complex formatting,
and you don't want your authors to remember the complex formatting.
As a result, you decide to simplify the formatting by using an include with parameters.
Here's an example of the special image syntax you might want to populate with an include:

This is the Jekyll logo

You could templatize this content in your include and make each value available as a parameter, like this:

{{ include.caption }}

This include contains 5 parameters:
url
max-width
file
alt
caption
Here's an example that passes all the parameters to this include (the include file is named image.html
):
{% include image.html url="http://jekyllrb.com" max-width="200px" file="logo.png" alt="Jekyll logo" caption="This is the Jekyll logo." %}
The result is the original HTML code shown earlier.
To safeguard situations where users don't supply a value for the parameter,
you can use Liquid's default filter.
Overall, you can create includes that act as templates for a variety of uses
— inserting audio or video clips, alerts, special formatting, and more.
Note that you should avoid using too many includes, as this will slow down the build time of your site.
For example, don't use includes every time you insert an image.
(The above technique shows a use case for special images.)
Suppose the parameter you want to pass to the include is a variable rather than a string.
For example, you might be using {{ site.product_name }}
to refer to every instance of your product rather than the actual hard-coded name.
(In this case, your _config.yml
file
would have a key called product_name
with a value of your product's name.)
The string you pass to your include parameter can't contain curly braces.
For example, you can't pass a parameter that contains this:
"The latest version of {{ site.product_name }} is now available."
If you want to include this variable in your parameter that you pass to an include,
you need to store the entire parameter as a variable before passing it to the include.
You can use capture
tags to create the variable:
{% capture download_note %} The latest version of {{ site.product_name }} is now available. {% endcapture %}
Then pass this captured variable into the parameter for the include.
Omit the quotation marks around the parameter content because it's no longer a string (it's a variable):
{% include note.html content=download_note %}


Tips and tricks to keep yourself and your kids safe when browsing the web. We build websites, we know how they work and can show you what to avoid or what to proactively do to stay safe online.
 By using your real name you are challenging the millions of people online to find out every piece of information they can about you, your REAL information. Not that JimmyJon123 has a really cool Scratch account but that James Johnson lives at 1234 JavaScript lane.
There are so many people out there that can find out almost everything about you with very little information. If your account gets hacked, no worries you can make a new one. If someone hacks into your house it will be very expensive to get a new one.
Be safe, protect your name.
Tip #2: Don’t Just Click Random Things!
 Some do it for free but those who want to get paid for their hard work need to take in money on their site. Instead of asking you for money directly, no you can’t just insert it into the disk drive, they serve ads. Some of those brilliant people we were talking about earlier make those ads. They make the ads look exactly like that download link you are supposed to click. But don’t click it! So many of those ads are advertising malware or other harmful viruses. If a site has a bunch of ads that all say download here or make it look like they are part of the site, that web page should probably be off limits all together.
Know what you are clicking before your click it.
Tip #3: No Website Ever Needs to Know Your Password
If you get an official looking email that is asking for your password it is a scam. The web developers that run and build the site have access to your passwords stored in their database, that only they can see. They never need to ask you for your password.
Your password is like the key to your house, don’t go handing it out to anyone.
Tip #4: Know the Sites You Visit
The web is a beautiful place that has a seemingly infinite number of places to visit. However, there are some out there that are up to no good. Some sites can be trusted, big names and dot coms are usually safe. If you go trolling for a free copy of that song you love so much you will inevitably end up some place you will not like. Covered in malware and ads the site spells scam. Know the sites that you are visiting and if it doesn’t sound familiar, stay away.
When in doubt search up the name of the site and the word scam or virus in the same search and see what comes up.
Tip #5: Surf the Web with an Adult
Life experience is a magical thing that often comes when we mess up, and adults have been around long enough to know about messing up, a lot. If you are still to young to navigate a busy mall by yourself then wandering around the internet should be done with an adult present as well. No they don’t have to watch your every move, and parents you don’t need to hover over them. Just keep them within ear or eye shot to stop something drastic from happening.
The “Hey what is this?” is much better to hear than the “Ummm I can’t get it to turn on” phrase.


| First Name | Last Name | Job Title | DOB | Status |
|---|---|---|---|---|
| Isidra | Boudreaux | Traffic Court Referee | 22 Jun 1972 | |
| Maria | Nicley | Meat Packager | 28 Oct 1966 | |
| Shona | Woldt | Airline Transport Pilot | 3 Oct 1981 | |
| Granville | Leonardo | Business Services Sales Representative | 19 Apr 1969 | |
| Easer | Dragoo | Drywall Stripper | 13 Dec 1977 | |
| Maple | Halladay | Aviation Tactical Readiness Officer | 30 Dec 1991 | |
| Maxine | Woldt | Business Services Sales Representative | 17 Oct 1987 | |
| Lorraine | Mcgaughy | Hemodialysis Technician | 11 Nov 1983 | |
| Lizzee | Goodlow | Technical Services Librarian | 1 Nov 1961 | |
| Judi | Badgett | Electrical Lineworker | 23 Jun 1981 | |
| Rivka | Bittinger | Broadcast Maintenance Engineer | 20 Oct 1993 | |
| Isidra | Furniss | Jig Bore Tool Maker | 13 Jun 1987 | |
| Lauri | Hyland | Blackjack Supervisor | 15 Nov 1985 | |
| Consuelo | Robare | Internal Medicine Nurse Practitioner | 13 Feb 1974 | |
| Claudine | Hogle | Potato Sorter | 2 Dec 1963 | |
| Ilona | Mcgaughy | Cloak Room Attendant | 23 Mar 1990 | |
| Jesusa | Shumpert | Internal Medicine Nurse Practitioner | 23 Nov 1962 | |
| Claudine | Pennock | Electrical Lineworker | 29 Apr 1971 | |
| Carie | Branco | Fashion Designer | 15 Jul 1979 | |
| Jason | Mcfetridge | Staff Electronic Warfare Officer | 11 Jun 1981 |


Hi, I'm
I'm a British Technology Consulting Professional. I value a user centered approach and enjoy working in both advisory & delivery roles.
I'm interested in design, engineering and improvement of both digital and physical spaces.
I'm also conversational in Mandarin Chinese 我說中文.
I'm based in Taichung 台中, Taiwan 台灣, currently working as a freelance digital strategist & web developer.
If you would like to work with me, please send me an email. I consider both contract and permanent roles, and am willing to relocate.
You can download my CV (Resumé) here.
You can email me at<EMAIL_ADDRESS>Alternatively, find me on one of the following social networks:


<EMAIL_ADDRESS><EMAIL_ADDRESS>lots of technology ready to be explored
+
medium defined by its creative usage
=
Introducing
var ctx = new AudioContext();
Made for real time analysis
but I need faster processing
var ctx = new OfflineAudioContex(1, 44100 * 60, 44100);
comes in periodic waves
number of times the wave pattern repeats every second, meassured in Hz
human perception of periodicity of the soundwave
length = size in sample frames
sampleRate = number of sample frames per second
var analyser = ctx.createAnalyser();
analyser.fftSize = 4096;
var processor = ctx.createScriptProcessor(16384, 1, 1);
processor.onaudioprocess = function(ev) {
var data = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(data);
// save data for further use
}
determine the biggest value and its key
calculate the the frequency from the key
and look up the musical note
This is bascially Chris Wilson's (@cwilso) pitch detection
request navigator.getUserMedia
use stream as source
use AnalyserNode to get data
Chris uses autocorrelation to determine the input frequency
Read about it on Wikipedia
fire when chords change
calculated from the amount of chord changes
drawing bars with the value from FFT
http://lislis.de/games/ukulele-hero | source


{#include header.include.html title='Apiman API signup approval granted' /} {#include standard-body.include.html notificationHeader='API signup approval granted!' name=notification.recipient.fullName} {#notificationBody}
Your request to sign up to {event.apiId}
version {event.apiVersion}
from organisation {event.apiOrgId}
has been granted.
You can visit the Apiman portal immediately to get your API key!
Here is some information about the Client App you used to sign up to {event.apiId} {event.apiVersion}.
The API and plan you signed up to


Developed and design web application using Python, Django Framework and Bootstrap.
Implemented CRUD operation and manage list of task
You can create list of task, update, delete and cross off, uncross task.
Building a personal blog website
Technologies Used : Python, Wagtail (CMS) and sqlite.
Wagtail is a free and open source content management system and it is a Python based CMS made for Django.
Developed and design blog web application using Python, Wagtail (CMS) and sqlite, used HTML/CSS and Bootstrap for UI.
Implemented Stremfield, RichTextField, FieldPanel, ImageChooserPanel, Page model etc.
You can create blog name, blog image and blog body content from admin panel.
Manage Admin Panel by wagtail controls.
House Price Prediction
This application is predict house price.
Using Numpy and Pandas Python library implemented data analyst process such as data cleaning, handle null values, feature engineering, dimensionality reduction, gridsearchcv for hyperparameter tunning, k fold cross validation, outlier detection and removal etc.
Using Metplotlib library build some plots such as scatter plot, histogram and bar plots for data visualization.
Build the model using Sklearn linear regression and build training dataset, fit the data to the using linear regression and predict the house price.
Build Python Flask application used HTML/CSS and Javascript that uses the model to serve http users requests and display house price.


About the team
Digit41 is a community of developers who are trying to make blockchain technology easy to use for everyone.
Liberty, privacy and censorship resistance are our core values and we are ready to fight for them in every line of codes.
--- layout: default title: About permalink: /about ---
Digit41 is a community of developers who are trying to make blockchain technology easy to use for everyone.
Liberty, privacy and censorship resistance are our core values and we are ready to fight for them in every line of codes.
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND
POOYA RAJAMAND


Architecture and Solution Structure
Press the Up Arrow and Down Arrow keys to increment and decrement the counter.
This project demonstrates how to isolate your HTML rendering and event handlers from the core application logic of your JS web components.
Download the source: architecture.zip
Modify the counter app as follows:
This project uses <script type="module">
and ES modules, so it will not work from a
file:// URL
You'll need to run a local web server that serves .js
files with the
application/javascript
MIME type -
if you don't have one set up, check out rif/spark, a tiny web server
written in Go
that will turn any folder on your machine into a website.


BLUE IN THE FACE A film review by Steve Rhodes Copyright 1995 Steve Rhodes
RATING (0 TO ****): ** 1/2
BLUE IN THE FACE was made by the same directors (Wayne Wang and Paul Auster) that made the highly acclaimed SMOKE. In fact, the whole reason that BLUE IN THE FACE was made was that the directors and the cast found that they had an extra week on their hands, so hey, they decided to make a fast, improvisational movie with the same sets and some of the same cast. The result is a fun, upbeat movie that is another talk fest just like SMOKE, but not as serious - think of it as SMOKE-lite.
BLUE IN THE FACE is a series of vignettes. The writing is credited to the directors, but it feels like the actors were winging it most of the time. The movie is again set in the Brooklyn Cigar Company run by Auggie Wren (Harvey Keitel) but owned by Vinnie (Victor Argo). The subject this time is Belgium waffles, Jackie Robinson (Keith David), the passing of the Brooklyn Dodgers, and the destruction of Ebbets Field. A subplot has Vinnie closing the cigar shop to turn it into a health food store since, "Tobacco is out. Wheat germ is in."
The picture starts with a 10 year old kid (Sharif Rashed) stealing the handbag of a beautiful, miniskirted, young woman (Mira Sorvino from Barcelona). Auggie chases the kid down only to have the woman say let him go. Auggie takes the bag from the woman and gives it to the kid and tells him to beat it. She is nonplused. The movie is a series of crazy incidents like that.
Intertwined with the regular movie, there are two different series of interviews, documentary style. One series is done with a cheap camcorder that produces grainy, saturated images. I believe that these interviews were real. There is also a set of made up interviews, mainly of an unnamed owner (Lou Reed) of another smoke shop. He is a talker, a philosopher, and a long time New Yorker. He tells us, "I'm scared twenty-four hours a day, but not in New York. I'm scared in Sweden" and then he goes on to explain it is because they keep benevolently looking after his every move there. In another of his scenes, he says, "Yes, I am smoking cigarettes and some of my friends have died of them, but I am not downing a quart of Scotch in fifteen minutes. Looked at that way, cigarettes are actually a health tool!"
One of Auggie's regulars, Bob (Jim Jarmusch), decides to give up cigarettes, but smoke his last one with Auggie. Bob regrets having to give them up, saying that, "Coffee and cigarettes. That's like the breakfast of champions."
Keitel makes you feel good to be alive. His smile is infectious. You want so bad to be there swapping stories. In fact the ultimate message of the film has to be that the brotherhood of mankind transcends all races. Many scenes feature actors of one race telling how many people of some other race live in Brooklyn.
I have only touched on the numerous sketches in BLUE IN THE FACE. Among others, you get to see a signing telegram one with Madonna and a seduction one by the store owner's wife, Dot (played by none other than Roseanne). And on and on.
It is a fun time at the movies. The sets by Kalina Ivanov are just as imaginative and realistic as in SMOKE since they are the exact same ones. The costumes (Claudia Brown) are a little more outlandish than SMOKE since I think she wanted to tease the audience a bit more. The cinematography (Adam Holender) is natural but not anything special.
BLUE IN THE FACE is edited (Maysie Hoy) crisply and runs a fast 1:29. It is rated R for a little nudity and a little bad language. Personally, I would have given it a PG-13. It would be fine for any teenager, and perhaps even slightly younger kids. This is a little movie that I am not wild about, but did enjoy, and I can and do recommend it to you. It gets ** 1/2 in my book.
**** = One of the top few films of this or any year. A must see film. *** = Excellent show. Look for it. ** = Average movie. Kind of enjoyable. * = Poor show.  Totally unbearable.
REVIEW WRITTEN ON: October 23, 1995
Opinions expressed are mine and not meant to reflect my employer's.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Tern consists of several components. Depending on what you are trying to do with it, you will be interested in a different layer. At the very top are the editor plugins. These talk to a Tern server, which is implemented on top of the server module, which uses the inference engine to do the actual type inference.
The bin/tern
binary (node.js script, really),
is used to start a Tern server. You will usually want to let an
editor plugin start it for you, but it can be started
manually, which can be useful for debugging.
(Note that the basic structure of the server is also available through a programming interface, and that some project, especially those running client-side in a browser, will want to use that instead of the HTTP server described here.)
When started, the server will look for a .tern-project
file in the
current directory or one of the directories above that, and use it for
its configuration. If no project file is found,
it’ll fall back to a default configuration. You can change this
default configuration by putting a .tern-config
file, with the same
format as .tern-project
, in your home directory.
A server write the port it is listening on (which is random) to standard output on startup. It will serve a simple JSON protocol via HTTP on that port. Clients can upload code and ask questions about the code through this protocol.
The following command-line flags are supported:
--port <number>
Specify a port to listen on, instead of the default behavior of letting the OS pick a random unused port.
--host <host>
Specify a host to listen on. Defaults to <IP_ADDRESS>.
Pass null
or any
to listen on all available hosts.
--persistent
By default, the server will shut itself down after five minutes of inactivity. Pass it a this option to disable auto-shutdown.
--ignore-stdin
By default, the server will close when its standard input stream is closed. Pass this flag to disable that behavior.
--verbose
Will cause the server to spit out information about the requests and responses that it handles, and any errors that are raised. Useful for debugging.
--no-port-file
The server won’t write a .tern-port
file. Can be
used if the port files are a problem for you. Will prevent other
clients from finding the server (and may thus result in multiple
servers for the same project).
Sending queries to a Tern server is done by making POST
requests to
the server’s port (using /
as the requests’s path) with a
JSON document in the body of the request.
This document should be an object, with three optional fields,
query
, files
, and timeout
.
The first (query
) describes the kind of information you are
requesting. It may be omitted if the request is only used to push new
code to the server (in which case you’ll get an empty object, {}
as
response). The files
property, if given, contains an array of file
specifications, as described below. It may be omitted when the query
should operate on the code that the server already has, without adding
anything new. When the timeout
field is set, it should contain a
number, which is interpreted as the maximum amount of milliseconds to
work (CPU work, ignoring I/O) on this request before returning with a
timeout error.
A query is an object with at least a type
property, which determines
what kind of query it is. Depending on the type, other properties must
or may be present in order to provide further details.
These are the queries that a Tern server understands by default. (Plug-ins may add custom query types.)
completions
Asks the server for a set of completions at the given point.
Accepted fields are:
file
, end
(required)
Specify the location to complete at. See below.
types
(optional, default false
)
Whether to include the types of the completions in the result data.
depths
(optional, default false
)
Whether to include the distance (in scopes for variables, in prototypes for properties) between the completions and the origin position in the result data.
docs
, urls
, origins
(optional, default false
)
Whether to include documentation strings, urls, and origin files (if found) in the result data.
filter
(optional, default true
)
When on, only completions that match the current word at the given point will be returned. Turn this off to get all results, so that you can filter on the client side.
caseInsensitive
(optional, default false
)
Whether to use a case-insensitive compare between the current word and potential completions.
guess
(optional, default true
)
When completing a property and no
completions are found, Tern will use some heuristics to try and return
some properties anyway. Set this to false
to turn that off.
sort
(optional, default true
)
Determines whether the result set will be sorted.
expandWordForward
(optional, default true
)
When disabled, only the text before the given position is considered part of the word. When enabled (the default), the whole variable name that the cursor is on will be included.
omitObjectPrototype
(optional, default true
)
Whether to ignore
the properties of Object.prototype
unless they have been spelled out
by at least to characters.
includeKeywords
(optional, default false
)
Whether to include JavaScript keywords when completing something that is not a property.
inLiteral
(optional, default true
)
If completions should be returned when inside a literal.
The result returned will be an object with start
and end
properties, which give the start and end offsets of the
word that was completed, an isProperty
property that holds a boolean
indicating whether the completion is for a property or a variable, and
a completions
property holding an array of completions. When one of
the types
, depths
, docs
, urls
, or origins
options was
passed, the array will hold objects with a name
property (the
completion text), and, depending on the options, type
, depth
,
doc
, url
, and origin
properties. When none of these options are
enabled, the result array will hold plain strings.
type
Query the type of something.
file
, end
(required), start
(optional)
Specify the expression we want the type of. See below.
preferFunction
(optional, default false
)
Set to true
when you
are interested in a function type. This will cause function types to
win when something has multiple types.
depth
(optional, default 0
)
Determines how deep the type string must be expanded. Nested objects will only display property types up to this depth, and be represented by their type name or a representation showing only property names below it.
The returned object will have the following properties:
type
(string)
A description of the type of the value. May be "?"
when no type was found.
guess
(bool)
Whether the given type was guessed, or should be considered reliable.
name
(string, optional)
The name associated with the type.
exprName
(string, optional)
When the inspected expression was an identifier or a property access, this will hold the name of the variable or property.
doc
, url
, origin
(strings, optional)
If the type had documentation and origin information associated with it, these will also be returned.
definition
Asks for the definition of something. This will try, for a variable or property, to return the point at which it was defined. If that fails, or the chosen expression is not an identifier or property reference, it will try to return the definition site of the type the expression has. If no type is found, or the type is not an object or function (other types don’t store their definition site), it will fail to return useful information.
Only takes file
, end
(required), and start
(optional) fields to
specify the expression you want the definition of. See below.
The returned object will have the following properties:
start
, end
(offsets, optional)
The start and end positions of the definition.
file
(string, optional)
The file in which the definition was defined.
context
(string, optional), contextOffset
(number, optional)
A slice of the code in front of the definition, and the offset from the start of the context to the actual definition. Can be used to find a definition’s location in a modified file.
doc
, url
, origin
(strings, optional)
If the definition had documentation or an origin associated with it, it will be returned.
documentation
Get the documentation string and URL for a given expression, if any.
Takes file
, end
(required), and start
(optional) fields to
specify the expression we are interested in. See below.
Returns an object with the following properties:
doc
, url
, origin
(strings, optional)
The documentation string, url, and the origin of the definition or value, if any.
refs
Used to find all references to a given variable or property.
Takes file
, end
(required), and start
(optional) fields to
specify the expression we are interested in. See below.
Returns an object with a name
property holding the name of the
variable or property, a refs
property holding an array of {file,
start, end}
objects, and, for variables, a type
property holding
either "global"
or "local"
.
rename
Rename a variable in a scope-aware way.
Takes file
, end
(required), and start
(optional) fields to
specify the variable we want to rename (see below), and a
newName
property that gives the new name of the variable.
Returns an object whose changes
property holds an array of {file,
start, end, text}
objects, which give the changes that must be
performed to apply the rename. The client is responsible for doing the
actual modification.
properties
Get a list of all known object property names (for any object).
prefix
(string, optional)
Causes the server to only return properties that start with the given string.
sort
(optional, default true
)
Whether the result should be sorted.
The returned object will have a completions
property holding an
array of strings, which are the property names.
files
Get the files that the server currently holds in its set of analyzed files.
Does not take any parameters. Returns an object with a files
property holding an array of strings (the file names).
When specifying a location, which is needed for most of
the query types, the required file
field may hold either a filename,
or a string in the form "#N"
, where N
should be an integer
referring to one of the files included in the request (more on that
later). The required end
field is an offset into
this file, either a number or a {line, ch}
object. It should point
at the end of the expression the request is interested in, or
somewhere inside of it if that doesn’t end up pointing inside a
sub-expression (in which case the inner expression would be used). An
optional start
field can be used to disambiguate between
expressions—if given, the innermost expression that spans the range
between start and end will be used.
Offsets into a file can be either (zero-based) integers, or {line,
ch}
objects, where both line
and ch
are zero-based integers.
Offsets returned by the server will be integers, unless the
lineCharPositions
field in the request was set to true
, in which
case they will be {line, ch}
objects.
The format of the doc
field in responses will, by default, only
contain the first few sentences of the documentation string, and have
newlines stripped. To get the full string, with newlines intact, you
can add a docFormat
field to your query with the value "full"
.
Requests that take an input expression also accept a
variable
field which, when given, will cause the server to not look
for an expression in the code, but to make up a variable expression
with the given name. This does not remove the need to pass in an
end
, since that will be used to determine the scope in which the
variable is interpreted.
The files
property of a request must, if present,
hold an array of file descriptions. These can be complete files, which
have a type
property holding "full"
and name
and text
properties holding strings. Complete files will be stored by the
server and can be reused in later requests.
Alternatively, you can pass in partial files. This is useful when
needing to perform a query on a large file without re-uploading and
re-analyzing the whole file. A partial file has a type
property
holding the string "part"
, a text
property holding some slice of
the file (starting at a line boundary), a name
property referring to
an existing file, and an offset
property, either an integer or a
{line, ch}
object, indicating the approximate position of the
fragment in the file.
To remove a file from the server’s model of the project, you can
include an object with a name
property that identifies the file and
a type
property of "delete"
.
The base server (without HTTP or configuration-file
reading) is implemented in lib/tern.js
. That package exposes a
Server
constructor that can be used to create a server. It takes an
object holding configuration options as argument. These are
recognized (all have a default):
defs
(array of strings)
The definition objects to load into the server’s environment.
plugins
(object)
Specifies the set of plugins that the server should load. The property names of the object name the plugins, and their values hold options that will be passed to them.
ecmaVersion
(number)
The ECMAScript version to parse. Should be either 5 or 6. Default is 6.
getFile
(function)
Provides a way for the
server to try and fetch the content of files. Depending on the async
option, this is either a function that takes a filename and returns a
string (when not async
), or a function that takes a filename and a
callback, and calls the callback with an optional error as the first
argument, and the content string (if no error) as the second.
async
(bool)
Indicates whether getFile
is
asynchronous. Default is false
.
fetchTimeout
(number)
Indicates the
maximum amount of milliseconds to wait for an asynchronous getFile
before giving up on it. Defaults to 1000
.
A server object has the following methods:
addFile(name: string, text?: string, parent?: string)
Register a file with the server. Note that files can also be included in requests. When using this to automatically load a dependency, specify the name of the file (as Tern knows it) as the third argument. That way, the file is counted towards the dependency budget of the root of its dependency graph.
delFile(name: string)
Unregister a file.
request(doc: object, callback: fn(error, response))
Perform a request. doc
is a (parsed) JSON document as described in
the protocol documentation. The callback
function will
be called when the request completes. If an error occurred, it will be
passed as a first argument. Otherwise, the resonse (parsed) JSON
object will be passed as second argument.
When the server hasn’t been configured to be
asynchronous, the callback will be called before
request
returns.
flush(callback: fn())
Forces all files to be fetched an analyzed, and then calls the callback function.
on(eventType: string, handler: fn())
Register an event handler for the named type of event.
off(eventType: string, handler: fn())
Unregister an event handler.
addDefs(defs: object, atFront?: bool)
Add
a set of type definitions to the server. If atFront
is
true, they will be added before all other existing definitions.
Otherwise, they are added at the back.
deleteDefs(name: string)
Delete
a set of type definitions from the server, by providing the name,
taken from defs[!name]
property from the definitions. If that property is not
available in the current type definitions, it can’t be removed.
loadPlugin(name: string, options?: object)
Load a server plugin (or don’t do anything, if the plugin is already loaded).
The server fires the following type of events (mostly useful for plugins):
"reset" ()
When the server throws away its current analysis data and starts a fresh run.
"beforeLoad" (file)
Before analyzing a file.
file
is an object holding {name, text, scope}
properties.
"afterLoad" (file)
After analyzing a file.
"preParse" (text, options)
Will be run right before a file is parsed, and passed the given text and options. If a handler returns a new text value, the origin text will be overriden. This is useful for instance when a plugin is able to extract JavaScript content from an HTML file.
"postParse" (ast, text)
Run right after a file is parsed, and passed the parse tree and the parsed file as arguments.
"preInfer" (ast, scope)
Run right before the type inference pass, passing the syntax tree and a scope object.
"postInfer" (ast, scope)
Run after the type inference pass.
"typeAt" (file, end, expr, type)
Run after Tern
attempts to find the type at the position end
in the given file. A
handler may return either the given type (already calculated by Tern
and earlier "typeAt"
passes) or an alternate type to be used
instead. This is useful when a plugin can provide a more helpful type
than Tern (e.g. within comments).
"completion" (file, query)
Run at the start of a completion query. May return a valid completion result to replace the default completion algorithm.
To be able to specify the types of things without actually analyzing
source code, either because there is no JavaScript source code (as for
the built-in types) or because the source code is too big, or because
Tern is unable to construct the correct types from the source code,
Tern defines a JSON data format for specifying types. A few examples
of files in this format can be found in the defs/
directory in the
distribution.
A type definition data structure is basically a tree of objects, where
the top-level object specifies variables in the global scope, and the
nested objects specify properties of object types. Properties prefixed
with an exclamation point (!
) hold special directives, all other
properties refer to variable or property names.
Here is an example:
{ "!name": "mylibrary", "!define": { "point": { "x": "number", "y": "number" } }, "MyConstructor": { "!type": "fn(arg: string)", "staticFunction": "fn() -> bool", "prototype": { "property": "[number]", "clone": "fn() -> +MyConstructor", "getPoint": "fn(i: number) -> point" } }, "someOtherGlobal": "string" }
This defines a library that sets two globals, MyConstructor
holding
a constructor function, and someOtherGlobal
holding a string. The
origin of the types, variables, and properties defined by this
document will be "mylibrary"
, as set by the !name
property.
The value of a variable or property can be either a string or an
object. Strings can be one of the built-in types ("number"
,
"string"
, "bool"
), a function type ("fn(arg1: type1, arg2: type2)
-> rettype"
, where -> rettype
is optional), an object type
({attr1: type, attr2: type}
), or an array type ("[type]"
). Strings
can also name types, either by describing the path to the type in the
global scope ("Date.prototype"
) or by referring to one of the local
definitions in the !define
property of the document. Finally, a type
can be prefixed with a +
to indicate an instance of a constructor
(+Date
).
Objects describe types by enumerating their properties. By default,
their type will simply be an instance of Object
, but a !type
property can be used to make the type a function or array type, as the
example does for MyConstructor
. Alternatively, a !proto
property
can be used to give the object a custom prototype, for example
"!proto": Element.prototype
.
Documentation can be attached to a type using !doc
, which should
hold a (short) documentation string and !url
, which should hold a
URL that has the full documentation of the type or function being
defined.
Finally, a function can be annotated with effects that it has. These
aren’t currently documented, but you can search for !effects
in
defs/ecmascript.json
to see some examples. Similarly, a function type
string’s return type may contain the variables !0
(the first
argument’s type, !N
for the N+1th), !this
(the self type of the
call), and a special property !ret
(the return type of a function).
Plugins are JavaScript programs that add extra functionality to a server. The distribution currently comes plugins for parsing doc comments, and plugins for node.js and RequireJS, which teach the Tern server about the dependency management mechanisms defined by those systems (as well as, for node.js, including types for the built-in libraries).
A plugin can use several hooks to add custom behavior.
infer.registerFunction(name: string, f: fn(self, args, argnodes))
This is a function in the inference engine module that
allows custom ways to compute function return types or effects. When a
function is specified to return !custom:myname
or has an effect
"custom myname"
, a call to the function will cause the function
registered under "myname"
to be called with the argument types and
argument AST nodes given to the call. This is used, for example, to
make calls to require
trigger the necessary machinations to fetch a
dependency and return its type.
tern.registerPlugin(name: string, fn(Server, options))
This can be used to register an initialization function for the plugin with the given name. A Tern server, when configured to load this plugin, will call this initialization function, passing in the server instance and the options specified for the plugin (if any). This is the place where you register event handlers on the server, add type definitions, load other plugins as dependencies, and/or initialize the plugin’s state.
See the server’s list of events for ways to wire up plugin behavior.
tern.defineQueryType(name: string, desc: object)
Defines a new type of query with the server. The desc
object is a
property describing the request. It should at least have a run
property, which holds a function fn(Server, query)
that will be
called to handle queries with a type
property that matches the given
name. It may also have a takesFile
property which, if true, will
cause the server to try and resolve the file on which the query
operates (from its file
property) and pass that (a {name, text,
scope, ast}
object) as a third argument to the run
function. You
will probably need to use the inference module’s API to
do someting useful in this function.
This plugin, which is enabled by default in the bin/tern
server,
parses comments before function declarations, variable declarations,
and object properties. It will look for
JSDoc-style type declarations, and try to parse
them and add them to the inferred types, and it will treat the first
sentence of comment text as the docstring for the defined variable or
property.
To turn this plugin off, set doc_comment: null
in your
plugin option.
The plugin understands the following configuration parameters:
strong
When enabled, types specified in comments take precedence over inferred types.
When enabled, this plugin will gather (short) strings in your code,
and completing when inside a string will try to complete to previously
seen strings. Takes a single option, maxLength
, which controls the
maximum length of string values to gather, and defaults to 15.
This plugin implements CommonJS-style (require("foo")
) modules. It
will wrap files in a file-local scope, and bind require
, module
,
and exports
in this scope. Does not implement a module resolution
strategy (see for example the node_resolve
plugin). Depends on the modules
plugin.
The node.js plugin, called "node"
, provides
variables that are part of the node environment, such as process
and
__dirname
, and loads the commonjs
and
node_resolve
plugins to allow node-style
module loading. It defines types for the built-in modules that node.js
provides ("fs"
, "http"
, etc).
This plugin defines the node.js module resolution strategy—things like
defaulting to index.js
when requiring a directory and searching
node_modules
directories. It depends on the
modules
plugin. Note that this plugin only does
something meaningful when the Tern server is running on node.js
itself.
This is a supporting plugin to act as a dependency for other module-loading and module-resolving plugins. It understands the following configuration parameters:
dontLoad
Can be set to true
to disable dynamic loading of
required modules entirely, or to a regular expression to disable
loading of files that match the expression.
load
If dontLoad
isn’t given, this setting is checked. If it is
a regular expression, the plugin will only load files that match the
expression.
modules
Can be used to assign JSON type definitions to certain modules, so that those are loaded instead of the source code itself. If given, should be an object mapping module names to either JSON objects defining the types in the module, or a string referring to a file name (relative to the project directory) that contains the JSON data.
This plugin (es_modules
) builds on top of the
modules
plugin to support ECMAScript 6’s import
and export
based module inclusion.
This plugin ("webpack"
) make use of enhance-resolve
module from
webpack https://webpack.github.io/, so it can understand the resolve
field of webpack.config.js
for file resolving.
commonjs
plugin and
es_modules
plugin plugin are loaded in the
meanwhile for correct file resolve, this also means you can still
have commonjs
and/or es_modules
in your .tern-project
file,
but not necessary.
You can use configPath
option for resolve the config file of webpack
like:
{ "libs": [ ], "plugins": { "webpack": { "configPath": "./lib/webpack.prod.js", } } }
configPath
should be a file path relative to .tern-project
, you
can omit it if they’re in the same folder.
This plugin ("requirejs"
) teaches the server to understand
RequireJS-style dependency management. It
defines the global functions define
and requirejs
, and will do its
best to resolve dependencies and give them their proper types.
These options are understood:
baseURL
The base path to prefix to dependency filenames.
paths
An object mapping filename prefixes to specific paths. For
example {"acorn": "lib/acorn/"}
.
override
An object that can be used to override some dependency
names to refer to predetermined types. The value associated with a
name can be a string starting with the character =
, in which case
the part after the =
will be interpreted as a global variable (or
dot-separated path) that contains the proper type. If it is a string
not starting with =
, it is interpreted as the path to the file that
contains the code for the module. If it is an object, it is
interpreted as JSON type definition.
Adds the angular
object to the top-level environment, and tries to
wire up some of the bizarre dependency management scheme from this
library, so that dependency injections get the right types. Enabled
with the name "angular"
.
It is possible to write third-party plugins or JSON type definitions and distribute them independently, either as packages using npm or as raw JavaScript files.
When a name attribute is specified in the libs
section of the
project configuration, Tern first searches for a file name
.json
in
its distribution defs
directory, then for a file name
.json
in
the user’s project directory, and finally for an installed package
named "tern-
name
"
to load as a JSON Type Definition. A JSON Type
Definition distributed as an npm package must have a package name
matching the pattern "tern-
name
"
.
When a name attribute is specified in the plugins
section of the
project configuration, Tern first searches for a file name
.js
in its
distribution plugin
directory, then for a file name
.js
in the
user’s project directory, and finally for an installed package named
"tern-
name
"
to load as a plugin. A plugin distributed as an npm package
must have a package name matching the pattern "tern-
name
"
.
The main module for a third-party plugin that will be installed outside of
the Tern distribution should export a single method initialize(ternDir:
string)
which takes the location of the Tern distribution loading the
plugin as an argument. Tern will call this method immediately after loading
the plugin to tell the plugin where to find Tern modules. A plugin with
this method will work regardless of its install location relative to the
Tern distribution, but plugins without it may fail to find Tern modules or
even silently load the wrong Tern modules depending on install location.
Plugin packages can specify the Tern version required as a peer dependency.
A .tern-project
file is a JSON file in a format
like this:
{ "libs": [ "browser", "jquery" ], "loadEagerly": [ "importantfile.js" ], "plugins": { "requirejs": { "baseURL": "./", "paths": {} } } }
The libs
property refers to the JSON type descriptions
that should be loaded into the environment for this project. See the
defs/
directory for examples. The strings given here will be
suffixed with .json
, and searched for first in the project’s own
dir, and then in the defs/
directory of the Tern distribution.
By default, local files are loaded into the Tern server when queries
are run on them in the editor. loadEagerly
allows you to force some
files to always be loaded, it may be an array of filenames or glob
patterns (i.e. foo/bar/*.js
). The dontLoad
option can be used to
prevent Tern from loading certain files. It also takes an array of
file names or glob patterns.
The plugins
field may hold object used to load and configure Tern
plugins. The names of the properties refer to files that implement
plugins, either in the project dir or under plugin/
in the Tern
directory. Their values are configuration objects that will be passed
to the plugins. You can leave them at {}
when you don’t need to pass
any options.
You can specify an ecmaVersion
field to configure the version of
ECMAScript that Tern parses. The default is 6, and leaving it at that
should be safe even for ECMAScript 5 code, but you can set it to 5 as
well.
To configure the amount of work Tern is prepared to do to load a
single dependency, the dependencyBudget
option can be added to a
project file. It indicates the maximum size of the files loaded in
response to a single dependency (through plugins that load
dependencies, such as the node and
RequireJS plugins), counted in expressions. The
default value is 20 000. Files loaded as dependencies of dependencies
count towards the budget of the original dependency.
bin/test
Runs Tern’s own testsuite. Tests are defined in the test/
directory, as code interspersed with comments that indicate the
types and conditions to check for.
bin/condense
Utility for condensing source code down to a JSON type definition file. Takes a list of files to condense, optionally
interleaved with filenames prefixed with a +
, which will be loaded
(to provide type information) but not included in the output.
Pass --plugin name
or --plugin name={jsonconfig}
to load
plugins. Use --def file
to load JSON definitions.
The inference engine module (lib/infer.js
) implements a system that,
given a context and an abstract syntax tree (parsed representation of
the code), tries to infer the types of the variables and properties in
the code.
The parser is implemented in a separate module,
Acorn, which provides a regular
JavaScript parser, an error-tolerant parser, and a number of utilities
for iterating through and searching in abstract syntax trees. The
syntax tree format used by Acorn and Tern is described in the
Mozilla
parser API document (though support for features that are not in
ECMAScript 5, such as let
, is omitted).
A high-level description of the way Tern’s type inference algorithm works can be found in a blog post I wrote on the subject.
This module also exposes some utility functions that are useful to implement the services the server exposes.
A context is an object that holds a global JavaScript scope, as well as some meta-information and state used by the type inference process. Almost all operations in the inference module require a context.
To prevent having to pass the context around through every function, a
form of dynamic binding is used—the withContext
function executes a
function body with a given object used as the current context.
infer.Context(defs: [object])
A constructor
function for contexts. defs
should be an array of type definition objects, which will be used to initialize the
global scope.
infer.withContext(context: Context, f: fn())
Calls f
with the current context bound to context
. Basically, all
code that does something with the inference engine should be wrapped
in such a call.
infer.cx() → Context
Returns the current context object.
context.topScope
The top-level scope of the context.
To push code into a context, you first parse it, yielding a syntax tree, and then tell Tern to analyze that.
infer.parse(text: string, options?: {}) → AST
Parse a piece of code for use by Tern. Will automatically fall back to the error-tolerant parser if the regular parser can’t parse the code.
infer.analyze(ast: AST, name: string, scope?: Scope)
Analyze a syntax tree. name
will be used to set the origin of types,
properties, and variables produced by this code. The optional scope
argument can be used to specify a scope in which the
code should be analyzed. It will default to the top-level scope.
The same code, or slightly modified variants of the same code, can be analyzed in a context multiple times. The variables and properties that the context knows, as well as the types it assigns to them, will become the union of the variables and types created by the various forms of the code. When incrementally re-analyzing code as it is being edited, this leads to a degradation in the preciseness of the results. To prevent that, it is possible to purge all elements that come from a specific origin from a context.
infer.purgeTypes(origins: [string], start?: number, end?: number)
Purges the types that have one of the origins given from the context.
start
and end
can be given to only purge types that occurred in
the source code between those offsets. This is not entirely
precise—the state of the context won’t be back where it was before the
file was analyzed—but it prevents most of the noticeable inaccuracies
that re-analysis tends to produce.
infer.markVariablesDefinedBy(scope: Scope, origins: [string], start?: number, end?: number)
Cleaning up variables is slightly trickier than cleaning up types.
This does a first pass over the given scope, and marks variables
defined by the given origins. This is indended to be followed by a
call to analyze
and then a call to
purgeMarkedVariables
.
infer.purgeMarkedVariables
Purges
variables that were marked by a call to
markVariablesDefinedBy
and not
re-defined in the meantime.
Tern has a more or less complete implementation of the JavaScript type system.
infer.Obj(proto, name?: string)
Constructor for the
type that represents JavaScript objects. proto
may be another
object, or true
as a short-hand for Object.prototype
, or null
for prototype-less objects.
infer.Fn(name: string?, self: AVal, args: [AVal], argNames: [string], retval: AVal)
Constructor for the type that implements functions. Inherits from
Obj. The AVal
types are used to track
the input and output types of the function.
infer.Arr(contentType: AVal)
Constructor that creates an array type with the given content type.
context.num
The primitive number type.
context.str
The primitive string type.
context.bool
The primitive boolean type.
Types expose the following interface (plus some AVal
-compatibility
methods, see below).
type.name: string
The name of the type, if any.
type.origin: string
The origin file of the type.
type.originNode: AST
The syntax node that defined the type. Only present for object and function types, and even for those it may be missing (if the type was created by a type definition file, or synthesized in some other way).
type.toString(maxDepth: number) → string
Return
a string that describes the type. maxDepth
indicates the depth to
which inner types should be shown.
type.getProp(prop: string) → AVal
Get an
AVal
that represents the named property of this type.
type.forAllProps(f: fn(prop: string, val: AVal, local: bool))
Call the given function for all properties of the object, including properties that are added in the future.
Object types have a few extra methods and properties.
obj.proto
The prototype of the object, or null
.
obj.props
An object mapping the object’s known properties to AVals. Don’t manipulate this directly (ever), only use it if you have to iterate over the properties.
obj.hasProp(prop: string) → AVal?
Looks up
the AVal associated with the given property, or returns null
if it
doesn’t exist.
obj.defProp(prop: string, originNode?: AST) → AVal
Looks up the given property, or defines it if it did not yet exist (in which case it will be associated with the given AST node).
Abstract values are objects used to represent sets of types. Each variable and property has an abstract value associated with it, but they are also used for other purposes, such as tracking the return type of a function, or building up the type for some kinds of expressions.
In a cleanly typed program where each thing has only a single type, abstract values will all have one type associated with them. When, for example, a variable can hold two different types of values, the associated abstract value will hold both these types. In some cases, no type can be assigned to something at all, in which case the abstract value remains empty.
Abstract values expose the following interface:
infer.AVal()
Constructor. Creates an empty AVal.
aval.addType(type: Type, weight?: number)
Add a type to this abstract value. If the type is already in there,
this is a no-op. weight
can be given to give this type a non-default
weight, which is mostly useful when adding a provisionary type that
should be overridden later if a real type is found. The default weight
is 100
, and passing a weight lower than that will make the type
assignment “weak”.
aval.propagate(target: Constraint)
Sets this AVal to propagate all types it receives to the given constraint. This is the mechanism by which types are propagated through the type graph.
aval.hasType(type: Type) → bool
Queries whether the AVal currently holds the given type.
aval.isEmpty() → bool
Queries whether the AVal is empty.
aval.getType(guess?: bool) → Type?
Asks the
abstract value for its current type. May return null
when there is
no type, or conflicting types are present. When guess
is true
or
not given, an empty AVal will try to use heuristics based on its
propagation edges to guess a type.
aval.getFunctionType() → Type?
Asks the AVal if it contains a function type. Useful when you aren’t interested in other kinds of types.
Abstract values that are used to represent variables or properties
will have, when possible, an originNode
property pointing to an AST
node.
As a memory-consuming hack, types also expose the interface of abstact values, so that in cases where an AVal is expected, but the precise type is known, the type object can simply be used.
The infer.ANull
value is a special AVal-like object
that never holds any types, and discards types added to it. It can be
used as a placeholder in situations where we either aren’t interested
in the types, or there simply are no types.
Constraints are things that can receive values. They use the same
addType
method to receive them, which causes all AVals to also be
useable as constraints. The inference engine defines a number of
additional constraints to propagate values in more indirect ways. See
the blog post on the
inference algorithm for some examples.
infer.constraint(methods: object) → constructor
This is a constructor-constructor for constraints. It’ll create a
constructor with all the given methods copied into its prototype,
which will run its construct
method on its arguments when
instantiated.
Beyond addType
, there are a few optional
methods that constraints can expose to tell the system something about
itself.
constraint.typeHint() → Type?
May return a type
that getType
can use to “guess” its type
based on the fact that it propagates to this constraint.
constraint.propHint() → string?
May return a string when this constraint is indicative of the presence of a specific property in the source AVal.
Scopes are derived from the Obj
type, and variables
are represented the same way as properties.
infer.Scope(parent?: Scope)
Constructor for scope objects. The top scope won’t have a parent.
scope.defVar(name: string, originNode: AST) → AVal
Ensures that this scope or some scope above it has a property by the
given name (defining it in the top scope if it is missing), and, if
the property doesn’t already have an
originNode
, assigns the given node to it.
These are miscellaneous utilities that come in helpful when doing code analysis.
infer.findExpressionAt(ast: AST, start: number?, end: number, scope?: Scope) → {node, state}
Searches the given syntax tree for an expression that ends at the
given end offset and, if start
is given, starts at the given start
offset. scope
can be given to override the outer scope, which
defaults to the context’s top scope. Will return a {node, state}
object if successful, where node
is AST node, and state
is the
scope at that point. Returns null
if unsuccessful.
infer.findExpressionAround(ast: AST, start: number?, end: number, scope?: Scope) → {node, state}
Similar to findExpressionAt
,
except that it will return the innermost expression node that spans
the given range, rather than only exact matches.
infer.findClosestExpression(ast: AST, start: number?, end: number, scope?: Scope) → {node, state}
Similar to findExpressionAround
,
except that it use the same AST walker as
findExpressionAt
.
infer.expressionType(expr: {node, state}) → AVal
Determine an expression for the given node and scope (as returned by
the functions above). Will return an AVal
or plain
Type
.
infer.scopeAt(ast: AST, pos: number, scope?: Scope) → Scope
Find the scope at a given position in the syntax tree. The scope
parameter can be used to override the scope used for code that isn’t
wrapped in any function.
infer.findRefs(ast: AST, scope: Scope, name: string, refScope: Scope, f: fn(AST, Scope))
Will traverse the given syntax tree, using scope
as the starting
scope, looking for references to variable name
that resolve to scope
refScope
, and call f
with the node of the reference and its local
scope for each of them.
infer.findPropRefs(ast: AST, scope: Scope, objType: Obj, propName: string, f: fn(AST))
Analogous to findRefs
, but used to look for
references to a specific property instead. Whereas findRefs
is
precise, this is dependent on type inference, and thus can not be
relied on to be precise.
Whenever the code in lib/infer.js
guesses a type through fuzzy
heuristics (through getType
or
expressionType
), it sets a flag. The
following two function allow access to this flag:
infer.didGuess() → bool
Test whether the guessing flag is set.
infer.resetGuessing(val?: bool)
Reset the guessing flag.
If your editor of choice is not yet supported, you are encouraged to
try and port one of the existing plugins to it. When figuring out how
things work, the code powering the demo, in doc/demo/demo.js
, might
also come in useful.
All these plugins use the node.js-based server, and thus require that (as well as npm) to be installed.
The Emacs mode is part of the main tern repository. It can be installed as follows:
Make sure you are using Emacs 24 or later. The Tern mode requires lexical scoping.
Clone this repository somewhere. Do npm install
to get the
dependencies.
Make Emacs aware of emacs/tern.el
. For example by adding this to
your .emacs
file:
(add-to-list 'load-path "/path/to/tern/emacs/") (autoload 'tern-mode "tern.el" nil t)
Optionally set tern-mode
to be automatically enabled for your
JavaScript mode of choice. Here’s the snippet for js-mode
:
(add-hook 'js-mode-hook (lambda () (tern-mode t)))
The Emacs mode uses the bin/tern
server, and project configuration
is done with a .tern-project
file.
Buffers in tern-mode
add a completion-at-point
function that
activates Tern’s completion. So, unless you rebound the key, M-tab
(or C-M-i
) will trigger completion.
When the point is in an argument list, Tern will show argument names and types at the bottom of the screen.
The following additional keys are bound:
M-.
Jump to the definition of the thing under the cursor.

C-c C-r
Rename the variable under the cursor.
C-c C-c
Find the type of the thing under the cursor.
C-c C-d
Find docs of the thing under the cursor. Press again to open the associated URL (if any).
If you want to use auto-complete.el
for completion, append following codes:
(eval-after-load 'tern '(progn (require 'tern-auto-complete) (tern-ac-setup)))
If tern-ac-on-dot
is non-nil (default), typing .
(dot) invokes auto-complete to select completions.
Calling the command tern-ac-complete
, one can invoke auto-complete manually.
The Vim plugin is maintained in a separate repository. Please see its README for details.
There are two implementations of Sublime Text modules for Tern. One written by me, at https://github.com/ternjs/tern_for_sublime. This one uses the node.js-based server. The other is written by Sergey Chikuyonok, and can be found at https://github.com/emmetio/sublime-tern. It uses a Python V8 bridge to run the server.
See the readme files in those repositories for details.
tern.java is a Tern client written in Java. It includes Eclipse integration.
tern_for_gedit integrates Tern with the gedit editor.
JavaScript Tern Completion.tmbundle integrates Tern with TextMate.
This is a place to gather links to software that is built on Tern. Drop me an email if you want to suggest a link.
jsctags is a tool that generates ctags files from JavaScript code by using Tern’s inference engine.
The CodeMirror browser-based editor has an addon for integrating with Tern.
tern.ace integrates Tern in the ACE editor.
tern.orion integrates Tern in the Orion editor.


My Contact
Menu
Home
Resume
Contact
Welcome to Marsha's WebSite
What are you thankful for? Looking forward to hearing from you.
Name
Email
Message