Eastern Congo Keyboard
Eastern Congo keyboard for languages of the Democratic Republic of the Congo.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.lowsbroadcast.R.attr
public static final class R.attr
| Field Summary | |
|---|---|
static int |
actionBarDivider
Custom divider drawable to use for elements in the action bar. |
static int |
actionBarItemBackground
Custom item state list drawable background for action bar items. |
static int |
actionBarSize
Size of the Action Bar, including the contextual bar used to present Action Modes. |
static int |
actionBarSplitStyle
Reference to a theme that should be used to inflate widgets and layouts destined for the action bar. |
static int |
actionBarStyle
Reference to a style for the Action Bar |
static int |
actionBarTabBarStyle
Must be a reference to another resource, in the form " @[+][package:]type:name "
or to a theme attribute in the form "?[package:][type:]name ". |
static int |
actionBarTabStyle
Default style for tabs within an action bar |
static int |
actionBarTabTextStyle
Must be a reference to another resource, in the form " @[+][package:]type:name "
or to a theme attribute in the form "?[package:][type:]name ". |
static int |
actionBarWidgetTheme
Reference to a theme that should be used to inflate widgets and layouts destined for the action bar. |
static int |
actionButtonStyle
Default action button style. |
static int |
actionDropDownStyle
Default ActionBar dropdown style. |
static int |
actionLayout
An optional layout to be used as an action view. |
static int |
actionMenuTextAppearance
TextAppearance style that will be applied to text that appears within action menu items. |
static int |
actionMenuTextColor
Color for text that appears within action menu items. |
static int |
actionModeBackground
Background drawable to use for action mode UI |
static int |
actionModeCloseButtonStyle
Must be a reference to another resource, in the form " @[+][package:]type:name "
or to a theme attribute in the form "?[package:][type:]name ". |
static int |
actionModeCloseDrawable
Drawable to use for the close action mode button |
static int |
actionModeCopyDrawable
Drawable to use for the Copy action button in Contextual Action Bar |
static int |
actionModeCutDrawable
Drawable to use for the Cut action button in Contextual Action Bar |
static int |
actionModeFindDrawable
Drawable to use for the Find action button in WebView selection action modes |
static int |
actionModePasteDrawable
Drawable to use for the Paste action button in Contextual Action Bar |
static int |
actionModePopupWindowStyle
PopupWindow style to use for action modes when showing as a window overlay. |
static int |
actionModeSelectAllDrawable
Drawable to use for the Select all action button in Contextual Action Bar |
static int |
actionModeShareDrawable
Drawable to use for the Share action button in WebView selection action modes |
static int |
actionModeSplitBackground
Background drawable to use for action mode UI in the lower split bar |
static int |
actionModeStyle
Must be a reference to another resource, in the form " @[+][package:]type:name "
or to a theme attribute in the form "?[package:][type:]name ". |
static int |
actionModeWebSearchDrawable
Drawable to use for the Web Search action button in WebView selection action modes |
static int |
actionOverflowButtonStyle
Must be a reference to another resource, in the form " @[+][package:]type:name "
or to a theme attribute in the form "?[package:][type:]name ". |
static int |
actionProviderClass
The name of an optional ActionProvider class to instantiate an action view and perform operations such as default action for that menu item. |
static int |
actionViewClass
The name of an optional View class to instantiate and use as an action view. |
static int |
activityChooserViewStyle
Default ActivityChooserView style. |
static int |
background
Specifies a background drawable for the action bar. |
static int |
backgroundSplit
Specifies a background drawable for the bottom component of a split action bar. |
static int |
backgroundStacked
Specifies a background drawable for a second stacked row of the action bar. |
static int |
buttonBarButtonStyle
A style that may be applied to Buttons placed within a LinearLayout with the style buttonBarStyle to form a button bar. |
static int |
buttonBarStyle
A style that may be applied to horizontal LinearLayouts to form a button bar. |
static int |
customNavigationLayout
Specifies a layout for custom navigation. |
static int |
disableChildrenWhenDisabled
Whether this spinner should mark child views as enabled/disabled when the spinner itself is enabled/disabled. |
static int |
displayOptions
Options affecting how the action bar is displayed. |
static int |
divider
Specifies the drawable used for item dividers. |
static int |
dividerHorizontal
A drawable that may be used as a horizontal divider between visual elements. |
static int |
dividerPadding
Size of padding on either end of a divider. |
static int |
dividerVertical
A drawable that may be used as a vertical divider between visual elements. |
static int |
dropdownListPreferredItemHeight
The preferred item height for dropdown lists. |
static int |
dropDownListViewStyle
ListPopupWindow comaptibility |
static int |
expandActivityOverflowButtonDrawable
The drawable to show in the button for expanding the activities overflow popup. |
static int |
height
Must be a dimension value, which is a floating point number appended with a unit such as " 14.5sp ". |
static int |
homeAsUpIndicator
Specifies a drawable to use for the 'home as up' indicator. |
static int |
homeLayout
Specifies a layout to use for the "home" section of the action bar. |
static int |
icon
Specifies the drawable used for the application icon. |
static int |
iconifiedByDefault
The default state of the SearchView. |
static int |
indeterminateProgressStyle
Specifies a style resource to use for an indeterminate progress spinner. |
static int |
initialActivityCount
The maximal number of items initially shown in the activity list. |
static int |
isLightTheme
Specifies whether the theme is light, otherwise it is dark. |
static int |
itemPadding
Specifies padding that should be applied to the left and right sides of system-provided items in the bar. |
static int |
listChoiceBackgroundIndicator
Drawable used as a background for selected list items. |
static int |
listPopupWindowStyle
Must be a reference to another resource, in the form " @[+][package:]type:name "
or to a theme attribute in the form "?[package:][type:]name ". |
static int |
listPreferredItemHeight
The preferred list item height. |
static int |
listPreferredItemHeightLarge
A larger, more robust list item height. |
static int |
listPreferredItemHeightSmall
A smaller, sleeker list item height. |
static int |
listPreferredItemPaddingLeft
The preferred padding along the left edge of list items. |
static int |
listPreferredItemPaddingRight
The preferred padding along the right edge of list items. |
static int |
logo
Specifies the drawable used for the application logo. |
static int |
navigationMode
The type of navigation to use. |
static int |
paddingEnd
Sets the padding, in pixels, of the end edge; see android.R.attr#padding . |
static int |
paddingStart
Sets the padding, in pixels, of the start edge; see android.R.attr#padding . |
static int |
panelMenuListTheme
Default Panel Menu style. |
static int |
panelMenuListWidth
Default Panel Menu width. |
static int |
popupMenuStyle
Default PopupMenu style. |
static int |
popupPromptView
Reference to a layout to use for displaying a prompt in the dropdown for spinnerMode="dropdown". |
static int |
progressBarPadding
Specifies the horizontal padding on either end for an embedded progress bar. |
static int |
progressBarStyle
Specifies a style resource to use for an embedded progress bar. |
static int |
prompt
The prompt to display when the spinner's dialog is shown. |
static int |
queryHint
An optional query hint string to be displayed in the empty query field. |
static int |
searchDropdownBackground
SearchView dropdown background |
static int |
searchResultListItemHeight
The list item height for search results. |
static int |
searchViewAutoCompleteTextView
SearchView AutoCompleteTextView style |
static int |
searchViewCloseIcon
SearchView close button icon |
static int |
searchViewEditQuery
SearchView query refinement icon |
static int |
searchViewEditQueryBackground
SearchView query refinement icon background |
static int |
searchViewGoIcon
SearchView Go button icon |
static int |
searchViewSearchIcon
SearchView Search icon |
static int |
searchViewTextField
SearchView text field background for the left section |
static int |
searchViewTextFieldRight
SearchView text field background for the right section |
static int |
searchViewVoiceIcon
SearchView Voice button icon |
static int |
selectableItemBackground
A style that may be applied to buttons or other selectable items that should react to pressed and focus states, but that do not have a clear visual border along the edges. |
static int |
showAsAction
How this item should display in the Action Bar, if present. |
static int |
showDividers
Setting for which dividers to show. |
static int |
spinnerDropDownItemStyle
Default Spinner style. |
static int |
spinnerMode
Display mode for spinner options. |
static int |
spinnerStyle
Default Spinner style. |
static int |
subtitle
Specifies subtitle text used for navigationMode="normal" |
static int |
subtitleTextStyle
Specifies a style to use for subtitle text. |
static int |
textAllCaps
Present the text in ALL CAPS. |
static int |
textAppearanceLargePopupMenu
Text color, typeface, size, and style for the text inside of a popup menu. |
static int |
textAppearanceListItem
The preferred TextAppearance for the primary text of list items. |
static int |
textAppearanceListItemSmall
The preferred TextAppearance for the primary text of small list items. |
static int |
textAppearanceSearchResultSubtitle
Text color, typeface, size, and style for system search result subtitle. |
static int |
textAppearanceSearchResultTitle
Text color, typeface, size, and style for system search result title. |
static int |
textAppearanceSmallPopupMenu
Text color, typeface, size, and style for small text inside of a popup menu. |
static int |
textColorSearchUrl
Text color for urls in search suggestions, used by things like global search |
static int |
title
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. |
static int |
titleTextStyle
Specifies a style to use for title text. |
static int |
windowActionBar
Must be a boolean value, either " true " or "false ". |
static int |
windowActionBarOverlay
Must be a boolean value, either " true " or "false ". |
static int |
windowFixedHeightMajor
A fixed height for the window along the major axis of the screen, that is, when in portrait. |
static int |
windowFixedHeightMinor
A fixed height for the window along the minor axis of the screen, that is, when in landscape. |
static int |
windowFixedWidthMajor
A fixed width for the window along the major axis of the screen, that is, when in landscape. |
static int |
windowFixedWidthMinor
A fixed width for the window along the minor axis of the screen, that is, when in portrait. |
static int |
windowSplitActionBar
Must be a boolean value, either " true " or "false ". |
| Constructor Summary | |
|---|---|
R.attr()
|
| Method Summary |
|---|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int actionBarDivider
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionBarItemBackground
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionBarSize
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int actionBarSplitStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionBarStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionBarTabBarStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionBarTabStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionBarTabTextStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionBarWidgetTheme
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionButtonStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionDropDownStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionLayout
android.view.MenuItem#setActionView(android.view.View)
for more info.
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionMenuTextAppearance
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionMenuTextColor
May be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
May be a color value, in the form of "#rgb
", "#argb
",
"#rrggbb
", or "#aarrggbb
".
public static final int actionModeBackground
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeCloseButtonStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeCloseDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeCopyDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeCutDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeFindDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModePasteDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModePopupWindowStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeSelectAllDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeShareDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeSplitBackground
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionModeWebSearchDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionOverflowButtonStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int actionProviderClass
android.view.MenuItem#setActionProvider(android.view.ActionProvider)
for more info.
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int actionViewClass
android.view.MenuItem#setActionView(android.view.View)
for more info.
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int activityChooserViewStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int background
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int backgroundSplit
May be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
May be a color value, in the form of "#rgb
", "#argb
",
"#rrggbb
", or "#aarrggbb
".
public static final int backgroundStacked
May be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
May be a color value, in the form of "#rgb
", "#argb
",
"#rrggbb
", or "#aarrggbb
".
public static final int buttonBarButtonStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int buttonBarStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int customNavigationLayout
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int disableChildrenWhenDisabled
Must be a boolean value, either "true
" or "false
".
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int displayOptions
Must be one or more (separated by '|') of the following constant values.
| Constant | Value | Description |
|---|---|---|
useLogo | 0x1 | |
showHome | 0x2 | |
homeAsUp | 0x4 | |
showTitle | 0x8 | |
showCustom | 0x10 | |
disableHome | 0x20 |
public static final int divider
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int dividerHorizontal
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int dividerPadding
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int dividerVertical
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int dropDownListViewStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int dropdownListPreferredItemHeight
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int expandActivityOverflowButtonDrawable
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int height
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int homeAsUpIndicator
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int homeLayout
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int icon
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int iconifiedByDefault
Must be a boolean value, either "true
" or "false
".
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int indeterminateProgressStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int initialActivityCount
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int isLightTheme
Must be a boolean value, either "true
" or "false
".
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int itemPadding
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int listChoiceBackgroundIndicator
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int listPopupWindowStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int listPreferredItemHeight
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int listPreferredItemHeightLarge
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int listPreferredItemHeightSmall
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int listPreferredItemPaddingLeft
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int listPreferredItemPaddingRight
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int logo
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int navigationMode
Must be one of the following constant values.
| Constant | Value | Description |
|---|---|---|
normal | 0 | Normal static title text |
listMode | 1 | The action bar will use a selection list for navigation. |
tabMode | 2 | The action bar will use a series of horizontal tabs for navigation. |
public static final int paddingEnd
android.R.attr#padding
.
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int paddingStart
android.R.attr#padding
.
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int panelMenuListTheme
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int panelMenuListWidth
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int popupMenuStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int popupPromptView
@android:id/text1
to be populated with the prompt text.
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int progressBarPadding
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int progressBarStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int prompt
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int queryHint
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int searchDropdownBackground
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchResultListItemHeight
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int searchViewAutoCompleteTextView
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewCloseIcon
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewEditQuery
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewEditQueryBackground
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewGoIcon
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewSearchIcon
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewTextField
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewTextFieldRight
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int searchViewVoiceIcon
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int selectableItemBackground
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int showAsAction
Must be one or more (separated by '|') of the following constant values.
| Constant | Value | Description |
|---|---|---|
never | 0 | Never show this item in an action bar, show it in the overflow menu instead. Mutually exclusive with "ifRoom" and "always". |
ifRoom | 1 | Show this item in an action bar if there is room for it as determined by the system. Favor this option over "always" where possible. Mutually exclusive with "never" and "always". |
always | 2 | Always show this item in an actionbar, even if it would override the system's limits of how much stuff to put there. This may make your action bar look bad on some screens. In most cases you should use "ifRoom" instead. Mutually exclusive with "ifRoom" and "never". |
withText | 4 | When this item is shown as an action in the action bar, show a text label with it even if it has an icon representation. |
collapseActionView | 8 | This item's action view collapses to a normal menu item. When expanded, the action view takes over a larger segment of its container. |
public static final int showDividers
Must be one or more (separated by '|') of the following constant values.
| Constant | Value | Description |
|---|---|---|
none | 0 | |
beginning | 1 | |
middle | 2 | |
end | 4 |
public static final int spinnerDropDownItemStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int spinnerMode
Must be one of the following constant values.
| Constant | Value | Description |
|---|---|---|
dialog | 0 | Spinner options will be presented to the user as a dialog window. |
dropdown | 1 | Spinner options will be presented to the user as an inline dropdown anchored to the spinner widget itself. |
public static final int spinnerStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int subtitle
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int subtitleTextStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int textAllCaps
May be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
May be a boolean value, either "true
" or "false
".
public static final int textAppearanceLargePopupMenu
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int textAppearanceListItem
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int textAppearanceListItemSmall
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int textAppearanceSearchResultSubtitle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int textAppearanceSearchResultTitle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int textAppearanceSmallPopupMenu
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int textColorSearchUrl
May be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
May be a color value, in the form of "#rgb
", "#argb
",
"#rrggbb
", or "#aarrggbb
".
public static final int title
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int titleTextStyle
Must be a reference to another resource, in the form "@[+][package:]type:name
"
or to a theme attribute in the form "?[package:][type:]name
".
public static final int windowActionBar
Must be a boolean value, either "true
" or "false
".
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int windowActionBarOverlay
Must be a boolean value, either "true
" or "false
".
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int windowFixedHeightMajor
May be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%
".
The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
some parent container.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int windowFixedHeightMinor
May be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%
".
The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
some parent container.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int windowFixedWidthMajor
May be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%
".
The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
some parent container.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int windowFixedWidthMinor
May be a dimension value, which is a floating point number appended with a unit such as "14.5sp
".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%
".
The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
some parent container.
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
public static final int windowSplitActionBar
Must be a boolean value, either "true
" or "false
".
This may also be a reference to a resource (in the form
"@[package:]type:name
") or
theme attribute (in the form
"?[package:][type:]name
")
containing a value of this type.
| Constructor Detail |
|---|
public R.attr()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


 I'm going to do my best to fill your mind full of all kinds of technobabble.
This week we are taking a look at variable scope in ruby. How many scopes are there? What do they scope? All shall be made clear in due time my apprentice.
 A scope essentially defines where a vriable is accesable from in the program. There are 5 types of scope within ruby. They are global, class, instance, local, and constant.
Let's start off with local,the simplest of the variables. A local variable is local to the code for which it is declared. It cannot be accessed outside the loop or method it is declared in. These are good to use if you have a variable that you only plan on using once. You would signify a local variable by starting it with an underscore or a lower case letter
'example = x' or '_example = x'
On the opposite end of that we have global variables.
A global variable is accessable from anywhere in the ruby program. It is generally discouraged to use these in the program. This because while they are visible from anywhere in the program, they can also be changed from anywhere in the program. There are a list of predefined global variables that you could make use of in the program. All global variables are preficed with the $ symbol.
Below is a link where you can find a table of these global variables.
Link
Next are the class variables. A class variable is shared among all instances of the class. This means this variable will have the same value throughout the class. Another way you could think about it is that they are like a global variable within the confines of a single class. You would want to use this if you are going to have a variable that you would have remain constant throughout a class. You would add the @@ symbol prefix to the varibale to make it a class variable.
'@@example = 0'
Now we have instance variables. These are similar to a class variable, the difference being that they are only local to specfic instances of an object. You can call and change the instance varible in multiple instanes of an object. The change only remains local within the individual instances. This would be useful if you wanted to use a value for an object but wanted to perform multiple operations to it without changing the original value. The prefix for in instance variable is the @ symbol.
'@example = 0'
Make a point to remember that a class variable has two (@@) while an instance variable only has one (@).
Lastly, there is the constant variable. A constant varible is a variable that should not be changed once it is assigned. Ruby will even issue a warning if you attempt to change a constant variable. If you assign a constant within a module or a class it wil be available anywhere within that. If assigned outside of these it acts like a global variable and it accessable anywhere in the program. To declare a global variable you need to assign the variable so that it is all capitlaized.
'EXAMPLE = 0'
There you have it ladies and gentleman. I do hope I've widened your scope on the issue.


Gelato System 2K38
A Gelato Labs production for LD49
Extras powered by 98.js
Error 404: Start Menu not found


---
title: "Get Faith Baptist Church Logo
Pictures"
description: "A church logo design should inspire people to participate in religious activities besides praying to god."
date: "2021-01-05"
categories:
- "Logo"
images:
- "http://static1.squarespace.com/static/5b7428577e3c3a81a164d4b8/t/5b742b28898583d1baffbb95/1534339882034/FBCLogoName+Teeny.png?format=1500w"
featuredImage: "https://0201.nccdn.net/1_2/000/000/199/76b/logo.png#RDAMDAID28646383"
featured_image: "https://www.faithbaptistofjefferson.org/hp_wordpress/wp-content/uploads/2010/05/FaithBaptistGA_logo.png"
image: "https://faithrapids.org/media/images/Logo-final.png"
---
Get Faith Baptist Church Logo
Pictures. Fbc is a family of believers seeking to glorify god by winning. Invitation vector blue color template.
Pastor and sister hodges' first anniversary july 2018. Search for faith baptist church. create donor profile and set up payment information. At faith baptist church we have dynamic student ministries designed just for teens.
Church logo with the alpha and omega.
I would actually say i was against everything i thought it meant. Tg church logo design vector. We look forward to welcoming you visit our website again or go directly to our faith baptist church facebook page at 9:30 am and you will be able to click and watch the live stream. We are an independent baptist church that is grounded in the word of god.


Planet Earth Report –“Alien Metals to Life is Electric”
The “Planet Earth Report” connects you to headline news on the science, technology, discoveries, people and events changing our planet and the future of the human species.
Alternative Fact Virus: Study Suggests Objective Reality Doesn’t Exist
Computers Evolve a New Path Toward Human Intelligence –Neural networks that borrow strategies from biology are making profound leaps in their abilities. Is ignoring a goal the best way to make truly intelligent machines?
“Planet Earths” –Common in the Universe
“Life is Electric” –NASA Enigma Study Explores Origins of Life on Earth & Beyond
The Day the Mesozoic Died –How the story of the dinosaurs’ demise was uncovered.
“Stangelove & Living Ocean” –Mass Extinction Theories Confirmed
SyFy Wire –Is This Viral Video Evidence that Bigfoot is Really Out There?
From the Farside: UFO Researcher Explains Why She Sold ‘Exotic’ Metal to Tom DeLonge –The U.S. Army will now look for “demonstrable physical phenomena” in a piece of metal the UFOlogist says came from an alien spacecraft.
AI can predict if you’ll die soon – but we’ve no idea how it works
Google’s Totally Creepy, Totally Legal Health-Data Harvesting
Why the hunt for alien life is under way far beneath Earth’s surface –Microbes that breathe sulphur could redefine what it means to be alive and provide clues about what organisms may lurk in the cosmos
Ghost ships, crop circles, and soft gold: A GPS mystery in Shanghai –A sophisticated new electronic warfare system is being used at the world’s busiest port. But is it sand thieves or the Chinese state behind it?
Stone Age artists were obsessed with horses and we don’t know why
NASA Names Most Distant Object Ever Explored ‘Arrokoth,’ the Powhatan Word for Sky
The Dark Psychology of Social Networks
Earthquake Conspiracy Theorists Are Wreaking Havoc During Emergencies –Independent “researchers” are sharing unfounded theories across social media, which have the potential to spread panic and confusion—and have even fooled legitimate government agencies.
Apes Might Know That You Don’t Know What They Know
A Link Between Dark Matter and Antimatter Could Be Why the Universe Exists –In a new experiment, scientists probed a theory that suggests a weird interaction between two of the biggest mysteries in physics could be why our universe exists in the first place.
This Bank Had the Worst Password Policy We’ve Ever Seen –A European bank makes customers pay to change their password


When the Filter section (in Server browser) is collapsed, the "My Filtersets" buttons is unaligned with the 'Refresh and Save filter button'.
In addition, the filters text will be hidden by the new button.
BBLog: 2.0
Google Chrome
ORFK
Global Moderator
you are using a specific theme. report this bug to the theme developer.
im using the standard theme from battlelog and i have the buttons between filtersettings and server list, not on the top where the description of the filter is.
juress
Theme Developer
ORFK wrote:
you are using a specific theme. report this bug to the theme developer.
im using the standard theme from battlelog and i have the buttons between filtersettings and server list, not on the top where the description of the filter is.
Its not a theme problem.
You have to collapse the filter settings window by clicking on the little minus in the left top corner. Then you'll se the bug.
ORFK
Global Moderator
Ohhh true... xD sorry
BrainFooLong
Administrator
Fixed in next update.
Will be removed when filters are hidden. No place at this point for this button.


| Home | Trees | Indices | Help |
|
|---|
|
|
object --+ | dict --+ | mmCIFRow
Contains one row of data. In a mmCIF file, this is one complete set of data found under a section. The data can be accessed by using the column names as class attributes.
|
|||
|
|||
|
|||
| True if D has a key k, else False |
|
||
|
|||
|
|||
|
|||
|
|||
|
|||
| D[k] if k in D, else d |
|
||
|
|||
| True if D has a key k, else False |
|
||
|
|||
|
Inherited from Inherited from |
|
|||
|
Inherited from |
|
|||
| table | |||
|
Inherited from |
|
x==y
|
|
x[i]=y
|
x[y]
|
del x[y]
|
d defaults to None.
|
|
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Mon Jun 27 14:43:16 2011 | http://epydoc.sourceforge.net |


CodeU Developer
The best way to predict the future is to create it. I will try my best to make my future beyond the prediction.
CodeU Developer
I don't know why I work for the meme project while I'm figuratively super-duper lack of salt.
CodeU Developer
I’m just human, I have weakness, I make mistakes and I experience sadness; But I learn from all these things to make me a better person.


rake_nltk
Python implementation of the Rapid Automatic Keyword Extraction algorithm using NLTK.
Table Of Contents
Release History
v1.0.4
v1.0.3
v1.0.2
v1.0.1
v1.0.0
Quick search
Release History
¶
v1.0.4
¶
Adding support for min and max words (inclusive) limits for ranked phrases.
v1.0.3
¶
Adding support for various metrics mentioned in the paper.
v1.0.2
¶
Minor fixes.
v1.0.1
¶
Adding support for other languages.
v1.0.0
¶
First release.


vivo V17 goes official, it's a rebranded S1 Pro
by SagarAfter announcing the V17 Neo and V17 Pro in August and September respectively, vivo has announced the vanilla V17. But, it's not exactly a new phone. It's actually a rebranded S1 Pro that was launched in the Philippines earlier this week.
The vivo V17 is built around a 6.38" Super AMOLED display that has a 2340x1080 pixel resolution and a fingerprint reader underneath for biometric security. It has also a notch up top housing the 32MP selfie camera.
Around the back, the V17 has a 48MP main camera joined by an 8MP ultrawide, 2MP macro and 2MP depth sensor modules arranged in a diamond formation.
On the inside, the vivo V17 has a Snapdragon 665 SoC coupled with 8GB RAM, and it runs Android Pie-based Funtouch OS 9.2 out of the box.
The smartphone comes in a single 128GB storage option, but it does have a microSD card slot allowing storage expansion by up to 256GB.
Fueling the entire package is a 4,500 mAh battery that draws power through a USB-C port and supports 18W fast charging. The smartphone also has the 3.5mm headphone jack and comes with an NFC chip for contact-less payments.
The vivo V17 comes in Cloud Blue and Blue Fog colors and is available for pre-orders in Russia for RUB22,990 ($360/€325) till December 5. Those who pre-book the V17 will get a vivo Y11 for free.


Winter Olympic Medals
Medals given in the winter olympics between 1924 and 2014
Over the years of Winter Olympics men have won more medals than women, but what countries have woman who dominate in gold medals? Check this out...
Resources
First Example
Overall total amount of medals in each Country that participated in the Winter Olympics.
Second Example
Along with the bar graph the treemap shows the countries with the overall most amount of medals to the lowest amount of medals.
Resources
Third Example
Total medals for all the medals along with just showing gold, silver and bronze total medals for each country.
Fourth Example
Totals medals for each sport in the Winter Olympics showing the overall total along with bronze, silver, and gold totals for each sport.
Resources
Fifth Example
Men vs woman in overall total amount of medals won over the years.
Sixth Example
Men vs women in the amount of gold medals they won.
In 1924, 6 medals were won by women in the Winter Olympics and by the end of 2014 they have increased exponentially to 272. While men started at 112 and increased at a much lower rate to 340 by 2014! Finally this line graph and a multi-line graph compares men to women and the gold medals vs total medals they have won over the years


Before Change
if isinstance(mul, (float, int)):
assert mul >= 0.0, "Expected multiplier to have range [0, inf), got value %.4f." % (mul,)
self.mul = Deterministic(mul)
elif isinstance(mul, (tuple, list)):
assert len(mul) == 2, "Expected tuple/list with 2 entries, got %d entries." % (str(len(mul)),)
self.mul = Uniform(mul[0], mul[1])
elif isinstance(mul, StochasticParameter):
After Change
self.loc = Deterministic(loc)
elif ia.is_iterable(loc):
assert len(loc) == 2, "Expected tuple/list with 2 entries for argument "loc", got %d entries." % (str(len(scale)),)
self.loc = Uniform(loc[0], loc[1])
elif isinstance(loc, StochasticParameter):
self.loc = loc
else:
raise Exception("Expected float, int, tuple/list with 2 entries or StochasticParameter for argument "loc". Got %s." % (type(loc),))


libc++ Info About
Quick Links cfe-dev cfe-commits Bug Reports Browse SVN Browse ViewVC
The <atomic>
header is one of the most closely coupled headers to the compiler. Ideally when you invoke any function from <atomic>
, it should result in highly optimized assembly being inserted directly into your application … assembly that is not otherwise representable by higher level C or C++ expressions. The design of the libc++ <atomic>
header started with this goal in mind. A secondary, but still very important goal is that the compiler should have to do minimal work to faciliate the implementaiton of <atomic>
. Without this second goal, then practically speaking, the libc++ <atomic>
header would be doomed to be a barely supported, second class citizen on almost every platform.
Goals:
- Optimal code generation for atomic operations
- Minimal effort for the compiler to achieve goal 1 on any given platform
- Conformance to the C++0X draft standard
The purpose of this document is to inform compiler writers what they need to do to enable a high performance libc++ <atomic>
with minimal effort.
<atomic>
The only “atomic” operations that must actually be lock free in <atomic>
are represented by the following compiler intrinsics:
__atomic_flag__ __atomic_exchange_seq_cst(__atomic_flag__ volatile* obj, __atomic_flag__ desr) { unique_lock<mutex> _(some_mutex); __atomic_flag__ result = *obj; *obj = desr; return result; } void __atomic_store_seq_cst(__atomic_flag__ volatile* obj, __atomic_flag__ desr) { unique_lock<mutex> _(some_mutex); *obj = desr; }
Where:
- If
__has_feature(__atomic_flag)
evaluates to 1 in the preprocessor then the compiler must define__atomic_flag__
(e.g. as a typedef toint
).- If
__has_feature(__atomic_flag)
evaluates to 0 in the preprocessor then the library defines__atomic_flag__
as a typedef tobool
.To communicate that the above intrinsics are available, the compiler must arrange for
__has_feature
to return 1 when fed the intrinsic name appended with an ‘_’ and the mangled type name of__atomic_flag__
.For example if
__atomic_flag__
isunsigned int
:__has_feature(__atomic_flag) == 1 __has_feature(__atomic_exchange_seq_cst_j) == 1 __has_feature(__atomic_store_seq_cst_j) == 1 typedef unsigned int __atomic_flag__; unsigned int __atomic_exchange_seq_cst(unsigned int volatile*, unsigned int) { // ... } void __atomic_store_seq_cst(unsigned int volatile*, unsigned int) { // ... }
That’s it! Compiler writers do the above and you’ve got a fully conforming (though sub-par performance)
<atomic>
header!
<atomic>
It would be good if the above intrinsics worked with all integral types plus void*
. Because this may not be possible to do in a lock-free manner for all integral types on all platforms, a compiler must communicate each type that an intrinsic works with. For example if __atomic_exchange_seq_cst
works for all types except for long long
and unsigned long long
then:
__has_feature(__atomic_exchange_seq_cst_b) == 1 // bool __has_feature(__atomic_exchange_seq_cst_c) == 1 // char __has_feature(__atomic_exchange_seq_cst_a) == 1 // signed char __has_feature(__atomic_exchange_seq_cst_h) == 1 // unsigned char __has_feature(__atomic_exchange_seq_cst_Ds) == 1 // char16_t __has_feature(__atomic_exchange_seq_cst_Di) == 1 // char32_t __has_feature(__atomic_exchange_seq_cst_w) == 1 // wchar_t __has_feature(__atomic_exchange_seq_cst_s) == 1 // short __has_feature(__atomic_exchange_seq_cst_t) == 1 // unsigned short __has_feature(__atomic_exchange_seq_cst_i) == 1 // int __has_feature(__atomic_exchange_seq_cst_j) == 1 // unsigned int __has_feature(__atomic_exchange_seq_cst_l) == 1 // long __has_feature(__atomic_exchange_seq_cst_m) == 1 // unsigned long __has_feature(__atomic_exchange_seq_cst_Pv) == 1 // void*
Note that only the __has_feature
flag is decorated with the argument type. The name of the compiler intrinsic is not decorated, but instead works like a C++ overloaded function.
Additionally there are other intrinsics besides __atomic_exchange_seq_cst
and __atomic_store_seq_cst
. They are optional. But if the compiler can generate faster code than provided by the library, then clients will benefit from the compiler writer’s expertise and knowledge of the targeted platform.
Below is the complete list of sequentially consistent intrinsics, and their library implementations. Template syntax is used to indicate the desired overloading for integral and void* types. The template does not represent a requirement that the intrinsic operate on any type!
T is one of: bool, char, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, char16_t, char32_t, wchar_t, void* template <class T> T __atomic_load_seq_cst(T const volatile* obj) { unique_lock<mutex> _(some_mutex); return *obj; } template <class T> void __atomic_store_seq_cst(T volatile* obj, T desr) { unique_lock<mutex> _(some_mutex); *obj = desr; } template <class T> T __atomic_exchange_seq_cst(T volatile* obj, T desr) { unique_lock<mutex> _(some_mutex); T r = *obj; *obj = desr; return r; } template <class T> bool __atomic_compare_exchange_strong_seq_cst_seq_cst(T volatile* obj, T* exp, T desr) { unique_lock<mutex> _(some_mutex); if (std::memcmp(const_cast<T*>(obj), exp, sizeof(T)) == 0) { std::memcpy(const_cast<T*>(obj), &desr, sizeof(T)); return true; } std::memcpy(exp, const_cast<T*>(obj), sizeof(T)); return false; } template <class T> bool __atomic_compare_exchange_weak_seq_cst_seq_cst(T volatile* obj, T* exp, T desr) { unique_lock<mutex> _(some_mutex); if (std::memcmp(const_cast<T*>(obj), exp, sizeof(T)) == 0) { std::memcpy(const_cast<T*>(obj), &desr, sizeof(T)); return true; } std::memcpy(exp, const_cast<T*>(obj), sizeof(T)); return false; } T is one of: char, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, char16_t, char32_t, wchar_t template <class T> T __atomic_fetch_add_seq_cst(T volatile* obj, T operand) { unique_lock<mutex> _(some_mutex); T r = *obj; *obj += operand; return r; } template <class T> T __atomic_fetch_sub_seq_cst(T volatile* obj, T operand) { unique_lock<mutex> _(some_mutex); T r = *obj; *obj -= operand; return r; } template <class T> T __atomic_fetch_and_seq_cst(T volatile* obj, T operand) { unique_lock<mutex> _(some_mutex); T r = *obj; *obj &= operand; return r; } template <class T> T __atomic_fetch_or_seq_cst(T volatile* obj, T operand) { unique_lock<mutex> _(some_mutex); T r = *obj; *obj |= operand; return r; } template <class T> T __atomic_fetch_xor_seq_cst(T volatile* obj, T operand) { unique_lock<mutex> _(some_mutex); T r = *obj; *obj ^= operand; return r; } void* __atomic_fetch_add_seq_cst(void* volatile* obj, ptrdiff_t operand) { unique_lock<mutex> _(some_mutex); void* r = *obj; (char*&)(*obj) += operand; return r; } void* __atomic_fetch_sub_seq_cst(void* volatile* obj, ptrdiff_t operand) { unique_lock<mutex> _(some_mutex); void* r = *obj; (char*&)(*obj) -= operand; return r; } void __atomic_thread_fence_seq_cst() { unique_lock<mutex> _(some_mutex); } void __atomic_signal_fence_seq_cst() { unique_lock<mutex> _(some_mutex); }
One should consult the (currently draft) C++ standard for the details of the definitions for these operations. For example __atomic_compare_exchange_weak_seq_cst_seq_cst
is allowed to fail spuriously while __atomic_compare_exchange_strong_seq_cst_seq_cst
is not.
If on your platform the lock-free definition of __atomic_compare_exchange_weak_seq_cst_seq_cst
would be the same as __atomic_compare_exchange_strong_seq_cst_seq_cst
, you may omit the __atomic_compare_exchange_weak_seq_cst_seq_cst
intrinsic without a performance cost. The library will prefer your implementation of __atomic_compare_exchange_strong_seq_cst_seq_cst
over its own definition for implementing __atomic_compare_exchange_weak_seq_cst_seq_cst
. That is, the library will arrange for __atomic_compare_exchange_weak_seq_cst_seq_cst
to call __atomic_compare_exchange_strong_seq_cst_seq_cst
if you supply an intrinsic for the strong version but not the weak.
So far all of the intrinsics presented require a sequentially consistent memory ordering. That is, no loads or stores can move across the operation (just as if the library had locked that internal mutex). But <atomic>
supports weaker memory ordering operations. In all, there are six memory orderings (listed here from strongest to weakest):
memory_order_seq_cst memory_order_acq_rel memory_order_release memory_order_acquire memory_order_consume memory_order_relaxed
(See the C++ standard for the detailed definitions of each of these orderings).
On some platforms, the compiler vendor can offer some or even all of the above intrinsics at one or more weaker levels of memory synchronization. This might lead for example to not issuing an mfence
instruction on the x86.
If the compiler does not offer any given operation, at any given memory ordering level, the library will automatically attempt to call the next highest memory ordering operation. This continues up to seq_cst
, and if that doesn’t exist, then the library takes over and does the job with a mutex
. This is a compile-time search & selection operation. At run time, the application will only see the few inlined assembly instructions for the selected intrinsic.
Each intrinsic is appended with the 7-letter name of the memory ordering it addresses. For example a load
with relaxed
ordering is defined by:
T __atomic_load_relaxed(const volatile T* obj);
And announced with:
__has_feature(__atomic_load_relaxed_b) == 1 // bool __has_feature(__atomic_load_relaxed_c) == 1 // char __has_feature(__atomic_load_relaxed_a) == 1 // signed char ...
The __atomic_compare_exchange_strong(weak)
intrinsics are parameterized on two memory orderings. The first ordering applies when the operation returns true
and the second ordering applies when the operation returns false
.
Not every memory ordering is appropriate for every operation. exchange
and the fetch_op
operations support all 6. But load
only supports relaxed
, consume
, acquire
and seq_cst
. store
only supports relaxed
, release
, and seq_cst
. The compare_exchange
operations support the following 16 combinations out of the possible 36:
relaxed_relaxed consume_relaxed consume_consume acquire_relaxed acquire_consume acquire_acquire release_relaxed release_consume release_acquire acq_rel_relaxed acq_rel_consume acq_rel_acquire seq_cst_relaxed seq_cst_consume seq_cst_acquire seq_cst_seq_cst
Again, the compiler supplies intrinsics only for the strongest orderings where it can make a difference. The library takes care of calling the weakest supplied intrinsic that is as strong or stronger than the customer asked for.


Schibsted Next was an incubator within Schibsted where a team of ~30 people in Stockholm came up with new marketplace ideas and tried to make them to grow as fast as possible.
Some of the ideas were a second hand clothing app, an online car shop, and a second hand gift card marketplace.
We worked in several small lean teams consisting of a product owner, tech manager, designer/ux-designer and a user researcher.
Every project started of with a business model canvas, a lot of research including interviews, surveys, prototyping, experimenting and guerilla testing to validate every idea thoroughly.


CORBin: The C ORB Interface System for the Standard ML of New Jersey Compiler
by: Brian S. Corbin
In a world where the networked computing environment is an integral part of an organization, technologies like the Common Object Request Broker Architecture (CORBA) are being widely used to develop distributed applications. Using CORBA, distributed components can be implemented in different programming languages and still interoperate using an Object Request Broker (ORB). Since an ORB is needed in order to utilize CORBA objects and implement CORBA objects, many programming languages go without CORBA support. The C ORB Interface System (CORBin) is an attempt to provide CORBA support to the functional language ML by using an exisiting ORB with C language bindings called ORBit. CORBin provides an IDL compiler (implemented in ML) and a library of C functions. The details of the C ORB Interface System are presented in my M.S. thesis. The thesis is available on http://www.corbinator.com. A copy is also available on this CD-ROM in the paper folder. (paper.ps)
You may be interested in the CORBin System if you're an ML programmer and wish to develop CORBA based applications. Even Non-ML programmers may wish to use the CORBin System if their problem domain requires functionality that is easily implemented in ML.
The C ORB Interface System provides a means by which to utilize existing CORBA objects from within an ML program. It also provides a means by which to implement CORBA objects in ML.
The CORBin System is consists of two components. It includes an IDL compiler, corbin-idl, which processes an Interface Definition Language file and generates some ML and C code to handle the marshalling and unmarshalling of parameters between CORBA objects. It also includes a library of C functions which provide the ability to use a CORBA Name Server via ORBit functionality. For a detailed description of the inner-workings of CORBin, please refer to my thesis.
The C ORB Interface System should still be considered to be a prototype. Although it has successfully been used to implement and communicate with CORBA objects, it has not been tested completely enough to be considered extremely robust. (Feel free to test/extend the functionality of the system!!!)
The directory structure
This CD-ROM makes an attempt to organize the CORBin System and it's required components into an intuitive directory structure. The CORBin-idl directory contains the source code for the CORBin IDL Compiler. ORBit_install contains the source code for the CORBA ORB called ORBit. SML_NJ_install contains the files that make up the SML/NJ distribution. The tests directory contains some example programs that make use of the C ORB Interface System. Refer to these programs to see how to make the System work for you. You may wish to refer back to this directory structure image as you go through the installation steps.
Building the IDL Compiler for your system
Installing the CORBA ORB called ORBit
Setting up Environment Variables
Once the C ORB Interface system has been configured and installed properly, you can begin writing CORBA based applications in ML. Specify your Object's advetised interface in OMG's Interface Definition Lanaguage. Then, simply run corbin-idl with the filename of your IDL specification as the command-line argument.
Example:
corbin-idl my_idl_file.idl
This will create several files in your current working directory as well as rebuilding the SML/NJ runtime system to include the functionality needed to implement and communicate with objects having the interface(s) contained within your IDL file.
Refer to the tests directory to see several examples that make use of the CORBin System. The SyrupManager illustrates the majority of the CORBin System facilities.
Make the CORBin System Better!!!
Also, a better installation procedure would be nice -- like an Automatic one!!!


You can use more commands to move Lucy around. In addition to moveForward(x) you can also use
moveForward(x)
turnRight()
To make her turn 90º to her right
turnLeft()
To make lucy turn 90º to her left


Amanitas (A. muscaria)
We had gathered at Kyle's house, after leaving Kelly's house, nearly 1:00 am. Jon was still going on about his new 'legal' mushrooms, as he had been for the past few hours. Eventually, Kyle started to get interested in trying them, and urged me to try them with him.
I had no reasons to be skeptical of these interesting little mushroom caps, so I took the first dosage Jon gave us (3 caps of roughly 1g each), and ground it up in a grinder, then mixed the little crumbs with some peanut butter. It tasted a little bad, but not intolerable.
After sitting around for about 10 minutes, Kyle appeared to be getting antsy, and wanted more for a sure, full on trip. He ground us another 3g each, and we made it into a little game by competing to find who could eat the pile of ground up mushroom first. We pinched a bit, and chewed. It tasted really dry and gross, but we chased it with lemonade.
Kyle still wasn't satisfied (although our initial consumption had been only 30 min before), and he wanted to straight shot it, by just mixing another 2g each in water. This concoction tasted awfully peculiar. I didn't mind it, but I didn't care for it either. (Note: after regular usage of a fair amount of Amanitas in this form, separataed by about 4 days each in concurrence with one another, it slowly started becoming more intolerable, to the point that the mere sight of a mushroom-water mix makes me sick to my stomach.)
I sat down in Kyle's black leatherman, and zoned out to the music. I was a little dissapointed with the effects. I felt good, but it wasn't anything too different than a Cannabis high (which we had been consistently smoking at various times). The room was dimly lit from Kyle's kitchen table chandelier. I listened to the music, and stared intently at the visualizer on Kyle's computer. I watched the same patterns I had always seen on any given visualizer, not seeing anything unordinary or exciting.
I had been staring at that uncaptivating visualizer for 20 min before I realized I was staring. I shook my head, and looked around the room.
'Gasp!' ZANG! 'Whoah...' Anybody who's tripped before, can testify that those three words are exactly what goes on the second you realize you're tripping.
The room had been vitalized. Everything pulsed with its own energy and significance. Everything was...new. This lead Kyle and I to explode into a an excited frenzy of exploring his captivating apartment. I looked a roll of paper towels, with cartoonish looking cats on them. I remarked that the paper towels were 'weird,' which confused a sober member of the group. He asked me what it looked like, thinking I was seeing it change shape or something that one would expect from LSD(which I have never experienced). I replied that they look like paper towels, but they just had a 'weird' aura, like the 'same kind of weirdness surrounding hardcore computer geek.' I remarked (no offense). I'm not sure if he got what I was saying. I can remember full well the feelings the paper towels alone conveyed in me.
I turned around, and faced Kyle's entertainment center, which was the anchor for his chain of christmas lights strung along the wall of this room. They appeared to be writhing like a snake. This sight was similar to optical illusions on paper: if you stared hard, it would stop, but if I just casually stared at them weakly, they appeared to writhe along the wall.
I called out to Kyle to come see this. His reaction was misleading at first, as he stared at the lights encompassing the room: hm. that's great. they're moving!
This startled me, that he was seeing the same thing I was. It was a weird mental experience, to know that he felt and was experiencing the same sensations I was with this drug.
The rest of the night was spent appraising every object in eyesight, as everything had its own 'feeling' that it emitted. These 'feelings' weren't our run-of-the-mill emotions. I'm talking about new and uplifting, and fully unique 'feelings' were emitted from each object.
I woke to Kyle getting ready for work, with Jon asleep on the floor. Apparently, I had only been asleep for 3.5 hours. When I got up and walked home, I felt at peace.
Those poisonous little mushrooms had changed me. I saw the world a little differently that day, as everything seemed to work in harmony with everything. I was no longer the center of my own universe. I was no longer the main component of my own life. I seemed to play a mere roll, and the energy of the world took over, and played its part in my life concurrently with the rest of time and space.
I got inside my house, dropped all my things, and began laughing hysterically. I didn't know why, and immediately afer realizing I was laughing (which seemed to eminate from nothing, and lasted a solid 2 or 3 min), I stopped abruptly. I gathered my things, and went to bed for the first time in what was at this point 67 hours. My dreams comforted me, and I continued on with my life after waking up.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{%block title%}ASHMC - Associated Students of Harvey Mudd College{%endblock%}
{% block stylin %}
{# multiple http queries are slower than one big css file. #}
{# you should use sass to include this in subsequent stylesheets. #}
{% endblock %}
{% block content %}
{% endblock content %}
{# scripts go at the end, when the page has mostly been loaded already. #}
{% block scriptin %}
{% endblock %}


Here we present a computationally improved version of SciddicaT, which takes advantage of the built-in OpenCAL active cells optimization. As stated above, this optimization is able to restrict computation to a subset of cells which are actually involved in computation, by neglecting those cells for which is sure they will not change state to the next step (stationary cells).
In the case of SciddicaT, only cells containing debris and their neighbours can change state to the next step, as they can be interested in mass variation due to outflows and inflows. At the beginning of the simulation, we can simply initialize the set of active cells to those cells containing debris (i.e. those cells forming the initial landslide source). Moreover, we can add to this set new cells or remove some ones from it. Specifically, if an outflow is computed from an active cell towards a neighbouring non-active cell, this latter can be added to the set of active cells and considered for state change by the remaining elementary processes in the current step of computation10 (if any), or by the next computational step. Similarly, if a given active cell looses a sufficient amount of debris, it can be eliminated from the set of active cells. In the case of SciddicaT, this appens when its thickness becomes lower than or equal to a given threshold (i.e. \(p_\epsilon\)).
In order to account for these processes, we have to slightly revise the SciddicaT definition. In particular we have to add the set of active cells, A. The optimized SciddicaT model is now defined as
\[SciddicaT = < R, A, X, Q , P, \sigma >\] where \(A \subseteq R\) is the set of active cells, while the other components are defned as before. The transition function is now defined as:
\[\sigma : A \times Q^5 \shortrightarrow Q \times A\] denoting that it is applied to only the cells in \(A\) and that it can add/remove active cells. More in detail, the \(\sigma_1\) elementary process has to be modified, as it can activate new cell. Moreover, a new elementary process, \(\sigma_3\), has to be added in order to remove cells that cannot produce outflows during the next computational step due to the fact that their debris thickness is negligible. The new sequence of elementary processes is listed below, in the same order they are applied.
\(\sigma_1 : A \times (Q_z \times Q_h)^5 \times p_\epsilon \times p_r \shortrightarrow Q_o^4 \times A\) determines the outflows from the central cell to the neighboring ones, as before. In addition, each time an outflow is computed, the neighbour receiving the flow is added to the set of active cells.
\(\sigma_2: A \times Q_h \times (Q_o^4)^4 \shortrightarrow Q_h\) determines the value of debris thickness inside the cell by considering mass exchange in the cell neighborhood. This elementary process does not change with respect to the original version of SciddicaT.
\(\sigma_3: A \times Q_h \times p_\epsilon \shortrightarrow A\) removes a cell from \(A\) if its debris thickness is lower than or equal to the \(p_\epsilon\) threshold.
In order to implement the SciddicaT debris flows model in OpenCAL by exploiting the active cells optimization, we have to chage the definition of the CA objet, by also adding the third \(\sigma_3\) elementary process. Moreover, the \(\sigma_1\) elementary process has to be changed. A complete implementation of the sactive cells optimized version of SciddicaT is shown in Listing [lst:cal_Sciddicat-activecells] for the sake of completeness, even if only the differences with respect to the original implementation are commented.
As you can easily see, few modifications to the original source code
are needed to add the active cells optimization to SciddicaT. In
particular, the active cells optimization is enabled by means of the
CAL_OPT_ACTIVE_CELLS
parameter at line 159, while the third
elementary process added at line 165. As regards the elementary
processe
\(\sigma_1\), it is the same of the one of the basic SciddicaT version,
with the exception that when an outflow is generated, the cell
receiving the flow is added to the set A of the active cells (line 88).
Moreover, an active cell is eliminated by the set A by means of the
\(\sigma_3\) elementary process in the case its debris thickness
becomes lower than or equal to the
\(p_\epsilon\) threshold parameter (lines 107-108).
Regarding the computational preformace, the same simulation shown in Figure [fig:sciddicaT] was executed using the new SciddicaT implementation adopting the active cells implementation. Still, only a single core of the Intel Core i7-4702HQ CPU was used, as we did before. The simulation lasted a total of 22 seconds, versus 172 seconds obtained for the basic (non-optimized) version, which is about 8 times faster. This can be condidered a very good result you can easily obtain when your simulation involves only a limited subset of the computational domain.


|
Stereo Vision Toolkit
1.3.1
|
OpenCV camera control. More...
#include <cameraopencv.h>
Public Slots | |
| bool | capture (void) |
| cv::Mat * | getImage (void) |
Signals | |
| void | captured () |
| void | finished () |
Private Types | |
| enum | format { Y800, Y16 } |
Private Attributes | |
| cv::VideoCapture | camera |
| cv::Mat | image |
| cv::Mat | channels [3] |
| cv::Mat | image_buffer |
| format | image_format |
OpenCV camera control.
Connecting and controlling a camera using OpenCV More info see: https://docs.opencv.org/3.4.1/dd/de7/group__videoio.html
Definition at line 21 of file cameraopencv.h.


Forest of the Lost [ao61], forest, in Imperia, wilderness
Last updated Turn #125
Forest of the Lost [ao61], forest, in Imperia, wilderness
------------------------------------------------------------------------
21: Stack of nazgul [af9c], nazgul, number: 2, arrived from the south.
23: Stack of nazgul [af9c], nazgul, number: 2, went north.
Routes leaving Forest of the Lost:
North, forest, to Forest of the Lost [an61], 8 days
East, forest, to Forest of the Lost [ao62], 8 days
South, forest, to Forest of the Lost [ap61], 8 days
West, to Ocean [ao60], The Inner Sea, 2 days
Inner locations:
Yew grove [ad6w], yew grove, 1 day
Seen here:
Stack of giant lizards [an3x], giant lizards, number: 12
Stack of giant lizards [bk5t], giant lizards, number: 3
Stack of giant lizards [dx4m], giant lizards, number: 2
Stack of nazgul [av4m], nazgul, number: 4


rvm and RubyGems
rvm creates a new completely separate gem directory for each version of ruby. In addition you can separate this further and have a set of gems per project/application/gerbil color... see the gemsets for more details on using sets of gems.
DO NOT use sudo to...
work with rvm gems. When you do sudo you are running commands as root, another user in another shell and hence all of the setup that rvm has done for you is ignored while the command runs under sudo (such things as GEM_HOME, etc...). So to reiterate, as soon as you 'sudo' you are running as the root system user which will clear out your environment as well as any files it creates are not able to be modified by your user and will result in strange things happening. (You will start to think that someone has a vodoo doll of your application...)
You can see gem directory of the current selected ruby using the gemdir action:
∴ rvm 1.9.1
∴ rvm gemdir
/Users/wayne/.rvm/gems/ruby/1.9.1
To change to the currently selected Ruby's gem directory, use a subshell:
∴ rvm 1.9.1
∴ cd `rvm gemdir`
∴ pwd
/Users/wayne/.rvm/gems/ruby/1.9.1
If this is something you do frequently you can put the following bash function in your ~/.bash_profile or ~/.zshrc:
# Thanks for the awesome idea batasrki
function gemdir {
if [ -z "$1" ] ; then
echo "gemdir expects a parameter, which should be a valid rvm Ruby selector"
else
rvm use $1
cd `rvm gemdir`
pwd
fi
}
Then switching is very simple:
∴ gemdir 1.8.6
/Users/wayne/.rvm/gems/ruby/1.8.6
∴ pwd
/Users/wayne/.rvm/gems/ruby/1.8.6
∴ gemdir 1.9.1
/Users/wayne/.rvm/gems/ruby/1.9.1
∴ pwd
/Users/wayne/.rvm/gems/ruby/1.9.1


Toggle navigation
FDA Drug Monitor
Drug Names
Adverse Reactions
Enforceable Actions
Drug Detail Three
Drug Detail One
Drug Detail Two
Drug Detail Three


| < Day Day Up > |
8.1 Load Balancing BasicsFigure 8-1. Typical load-balancing architecture for a read-intensive web siteThe basic idea behind load balancing is quite simple. You have a farm or cluster of two or more servers, and you'd like them to share the workload as evenly as possible. In addition to the backend servers, a load balancer (often a specialized piece of hardware) handles the work of routing incoming connections to the least busy of the available servers. Figure 8-1 shows a typical load-balancing implementation for a large web site. Note that one load balancer is used for HTTP traffic and another for MySQL traffic. There are four common goals or objectives in load balancing:
Achieving all four goals is critical to providing the type of reliable service that many modern applications demand.
8.1.1 Differences Between MySQL and HTTP Load BalancingIf you're already familiar with HTTP load balancing, you may be tempted to run ahead and set up something similar for MySQL. After all, MySQL is just another TCP-based network service that happens to run on port 3306 rather that port 80, right? While that's true, there are some important differences between HTTP and MySQL's protocol as well as differences between the ways that database servers and web servers tend to be used. <IP_ADDRESS> RequestsTo begin with, the connect-request-response cycle for MySQL is different. Most web servers and web application servers accept all connections, process a request, respond, and then disconnect almost immediately.[1] They don't perform any fancy authentication. In fact, most don't even bother with a reverse lookup of an inbound IP address. In other words, the process of establishing the connection is very lightweight.
The actual request and response process is typically lightweight too. In many cases, the request is for a static HTML file or an image. In that case, the web server simply reads the file from disk, responds to the client with the data, and logs the request. If the content is dynamic, the PHP, Java, or Perl code that generates it is likely to execute very quickly. The real bottlenecks tend to be the result of waiting on other backend services, such as MySQL or an LDAP server. Sure, there can be poorly designed algorithms that cause the code to execute more slowly, but the bulk of web-based applications tend to have relatively thin business-logic layers. They also tend to push nearly all the data storage and retrieval off to MySQL. Even when there are major differences from request to request, the differences tend to be in the amount of code executed. But that's exactly where you want the extra work to be done. The CPU is far and away the fastest part of the computer. Said another way, when you're dealing with HTTP, all requests are created equal—at least compared to a database server. As you saw early on in this book, the biggest bottleneck on a database server usually isn't CPU; it's the disk. Disk I/O is an order of magnitude slower than the CPU, so even occasionally waiting for disk I/O can make a huge difference in performance. A query that uses an index that happens to be cached in memory may take 0.08 seconds to run, while a slightly different query that requires more disk I/O may take 3 seconds to complete. On the database side, not all requests are created equal. Some are far more expensive than others, and the load balancer has no way of knowing which ones are expensive. That means that the load balancer may not be balancing the load as much as it is crudely distributing the load. <IP_ADDRESS> PartitioningAnother feature that's common in load-balanced web application architectures is a caching system. When users first visit a web site, the web server may assign a session ID to the user, then pull quite a bit of information from a database to construct the user's preferences and profile. Since that can be an expensive operation to perform on every request, the application code caches the data locally on the web server—either on disk or in memory—and reuse it for subsequent visits until the cache expires. To take advantage of the locally cached data, the load balancer is configured to inspect that user's session ID (visible either in the URL or in a site-wide cookie) and use it to decide which backend web server should handle the request. In this way, the load balancer works to send the same user to the same backend server, minimizing the number of times the user's profile must be looked up and cached. Of course, if the server goes offline, the load balancer will select an alternative server for the user. Such a partitioning system eliminates the redundant caching that occurs if the load balancer sent each request to a random backend server each time. Rather than having an effective cache size equal to that of a single server, you end up with an effective cache size equal to the sum of all the backend servers. MySQL's query cache can benefit from such a scheme. If you've dedicated 512 MB of memory on each slave for its query cache, and you have 8 slaves, you can cache up to 4 GB of different data across the cluster. Unfortunately, it's not that easy. MySQL's network protocol doesn't have a way to expose any hints to the load balancer. There are no URL parameters or cookies in which to store a session ID. A solution to this problem is to handle the partitioning of queries at the application level. You can split the 8 servers into 4 clusters of 2 servers each. Then you'd decide, in your application, whether a given query should go to cluster 1, 2, 3, or 4. You'll see more of this shortly. <IP_ADDRESS> Connection poolingMany applications use connection-pooling techniques; these techniques seem especially popular in the Java world and in PHP using persistent connections via mysql_pconnect( ). While connection pooling works rather well under normal conditions, it doesn't always scale well under load because it breaks one of the basic assumptions behind load balancing. With connection pooling, each client maintains a fixed or variable number of connections to one or more database servers. Rather than disconnecting and discarding the connection when a session is complete, the connection is placed back into a share pool so that it can be reused later. Load balancing works best when clients connect and disconnect frequently. That gives the load balancer the best chance of spreading the load evenly; otherwise the transparency is lost. Imagine you have a group of 16 web servers and 4 MySQL servers. Your web site becomes very busy, and the MySQL servers begin to get bogged down, so you add 2 more servers to the cluster. But your application uses connection pooling, so the requests continue to go to the 4 overworked servers while the 2 new ones sit idle. In effect, connection pooling (or persistent connections) work against load balancing. It's possible to compromise between the two if you have a connection-pooling system that allows the size of the pool to change as the demand increases and decreases. Also, by setting timeouts relatively low (say, five minutes instead of six hours), you can still achieve a level of load balancing while taking advantage of persistent database connections. You can also enforce this on the MySQL side by setting each server's wait_timeout to a relatively low number. (This value tells MySQL how long a connection may remain idle before it is disconnected.) Doing so encourages sessions to be reestablished when needed, but the negative affects on the application side are minimal. Most MySQL APIs allow for automatic reconnection to the server any time you attempt to reuse a closed connection. If you make this change, consider also adjusting the thread_cache as described in Section 6.4.4 in Chapter 6. We don't mean to paint connection pooling in a negative light. It certainly has its uses. Every worthwhile Java application server provides some form of connection pooling. As mentioned earlier, some provide their own load-balancing or clustering mechanisms as well. In such systems, connection pooling combined with load balancing is a fine solution because there's a single authority mediating the traffic to the database servers. In the PHP and mysql_pconnect( ) world, there often is not.
|
| < Day Day Up > |