|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages that use org.apache.batik.bridge | |
|---|---|
| org.apache.batik.apps.svgbrowser | |
| org.apache.batik.bridge | Provides an API for mapping and maintaining consistency between the SVG DOM tree and the GVT tree. |
| org.apache.batik.bridge.svg12 | |
| org.apache.batik.extension.svg | |
| org.apache.batik.gvt.svg12 | |
| org.apache.batik.script | Provides an API for interpreting scripting language found in SVG files. |
| org.apache.batik.swing | |
| org.apache.batik.swing.svg | |
| org.apache.batik.transcoder | Contains all of the interfaces for transcoding an input stream or a document to a particular ouput format. |
| org.apache.batik.transcoder.image | Provides transcoders for transcoding a SVG document fragment to an image. |
| Classes in org.apache.batik.bridge used by org.apache.batik.apps.svgbrowser | |
|---|---|
| ExternalResourceSecurity
An interface that allows UserAgents to describe the security constraints desired for external resources. |
|
| ScriptSecurity
An interface that allows UserAgents to describe the security constraints desired for scripting. |
|
| UpdateManagerEvent
This class represents an event which indicate an event originated from a UpdateManager instance. |
|
| UpdateManagerListener
This interface represents a listener to the UpdateManagerEvent events. |
| Classes in org.apache.batik.bridge used by org.apache.batik.bridge | |
|---|---|
| AbstractGraphicsNodeBridge
The base bridge class for SVG graphics node. |
|
| AbstractSVGBridge
The base bridge class for SVG elements. |
|
| AbstractSVGFilterPrimitiveElementBridge
The base bridge class for SVG filter primitives. |
|
| AbstractSVGGradientElementBridge
Bridge class for vending gradients. |
|
| AbstractSVGGradientElementBridge.Stop
This class represents a gradient <stop> element. |
|
| AbstractSVGLightingElementBridge
Bridge class for the <feDiffuseLighting> element. |
|
| AbstractSVGLightingElementBridge.AbstractSVGLightElementBridge
The base bridge class for light element. |
|
| AnimatableGenericSVGBridge
Abstract bridge class for animatable elements that do not produce a GraphicsNode. |
|
| AnimatableSVGBridge
Abstract bridge class for those elements that can be animated. |
|
| BaseScriptingEnvironment
This class is the base class for SVG scripting. |
|
| Bridge
A tagging interface that all bridges must implement. |
|
| BridgeContext
This class represents a context used by the various bridges and the builder. |
|
| BridgeEventSupport.Listener
A GraphicsNodeMouseListener that dispatch DOM events accordingly. |
|
| BridgeExtension
This is a Service interface for classes that want to extend the functionality of the Bridge, to support new tags in the rendering tree. |
|
| BridgeUpdateHandler
Interface for objects interested in being notified of updates. |
|
| ClipBridge
Factory class for vending Shape objects that represents a clipping area. |
|
| CSSFontFace
This class represents a <font-face> element or @font-face rule |
|
| CursorManager
The CursorManager class is a helper class which preloads the cursors corresponding to the SVG built in cursors. |
|
| DocumentBridge
Interface for bridge classes that operate on Document nodes. |
|
| DocumentLoader
This class is responsible on loading an SVG document and maintaining a cache. |
|
| ErrorConstants
The error code. |
|
| ExternalResourceSecurity
An interface that allows UserAgents to describe the security constraints desired for external resources. |
|
| FilterBridge
Bridge class for vending Filter objects. |
|
| FilterPrimitiveBridge
Factory class for vending Filter objects that represents a filter primitive. |
|
| FocusManager
A class that manages focus on elements. |
|
| FontFace
This class represents a <font-face> element or @font-face rule |
|
| GenericBridge
A tagging interface that bridges for elements child of GraphicsNodeBridge should implement. |
|
| GraphicsNodeBridge
Bridge class for creating, building, and updating a GraphicsNode according to an Element. |
|
| GVTBuilder
This class is responsible for creating a GVT tree using an SVG DOM tree. |
|
| MarkerBridge
Factory class for vending Marker objects. |
|
| MaskBridge
Factory class for vending Mask objects. |
|
| PaintBridge
Bridge class for vending Paint objects. |
|
| RepaintManager
This class manages the rendering of a GVT tree. |
|
| ScriptingEnvironment
This class contains the informations needed by the SVG scripting. |
|
| ScriptSecurity
An interface that allows UserAgents to describe the security constraints desired for scripting. |
|
| SVGAElementBridge.AnchorListener
To handle a click on an anchor. |
|
| SVGAElementBridge.CursorHolder
|
|
| SVGAElementBridge.CursorMouseOutListener
To handle a mouseout on an anchor and set the cursor. |
|
| SVGAElementBridge.CursorMouseOverListener
To handle a mouseover on an anchor and set the cursor. |
|
| SVGAnimateElementBridge
Bridge class for the 'animate' animation element. |
|
| SVGAnimationElementBridge
An abstract base class for the SVG animation element bridges. |
|
| SVGAnimationEngine
An AnimationEngine for SVG documents. |
|
| SVGAnimationEngine.AnimatableLengthOrIdentFactory
Factory class for AnimatableLengthOrIdentValue s. |
|
| SVGAnimationEngine.AnimatableNumberOrIdentFactory
Factory class for AnimatableNumberOrIdentValue s. |
|
| SVGAnimationEngine.AnimationThread
The thread that ticks the animation. |
|
| SVGAnimationEngine.AnimationThread.Ticker
A runnable that ticks the animation engine. |
|
| SVGAnimationEngine.AnimationTickRunnable
Idle runnable to tick the animation. |
|
| SVGAnimationEngine.CSSValueFactory
Factory class for AnimatableValues for CSS properties. |
|
| SVGAnimationEngine.Factory
Interface for AnimatableValue factories. |
|
| SVGAnimationEngine.UncomputedAnimatableStringValueFactory
Factory class for AnimatableStringValue s. |
|
| SVGDecoratedShapeElementBridge
The base bridge class for decorated shapes. |
|
| SVGDescriptiveElementBridge
Base class for 'descriptive' elements, mostly title and desc. |
|
| SVGFeComponentTransferElementBridge.SVGFeFuncElementBridge
The base bridge class for component transfer function. |
|
| SVGFontFace
This class represents a <font-face> element or @font-face rule |
|
| SVGGElementBridge
Bridge class for the <g> element. |
|
| SVGGlyphElementBridge
Bridge class for the <glyph> element. |
|
| SVGGVTFont
Represents an SVG font. |
|
| SVGImageElementBridge.ProtectedStream
|
|
| SVGKernElementBridge
A base Bridge class for the kerning elements. |
|
| SVGShapeElementBridge
The base bridge class for shapes. |
|
| SVGTextElementBridge
Bridge class for the <text> element. |
|
| SVGTextElementBridge.AbstractTextChildBridgeUpdateHandler
Implementation for the BridgeUpdateHandler
for the child elements of <text>. |
|
| SVGTextElementBridge.AbstractTextChildSVGContext
Implementation of SVGContext for
the children of <text> |
|
| SVGTextElementBridge.AbstractTextChildTextContent
|
|
| SVGTextElementBridge.AttributedStringBuffer
This class is used to build an AttributedString. |
|
| SVGTextElementBridge.CharacterInformation
Helper class to collect information about one Glyph in the GlyphVector |
|
| SVGTextElementBridge.DOMChildNodeRemovedEventListener
The DOM EventListener invoked when a node is removed. |
|
| SVGTextElementBridge.DOMSubtreeModifiedEventListener
The DOM EventListener invoked when the subtree is modified. |
|
| SVGUseElementBridge.ReferencedElementMutationListener
Used to handle modifications to the referenced content |
|
| UpdateManager
This class provides features to manage the update of an SVG document. |
|
| UpdateManagerEvent
This class represents an event which indicate an event originated from a UpdateManager instance. |
|
| UpdateManagerListener
This interface represents a listener to the UpdateManagerEvent events. |
|
| URIResolver
This class is used to resolve the URI that can be found in a SVG document. |
|
| UserAgent
An interface that provides access to the User Agent informations needed by the bridge. |
|
| Viewport
Defines a viewport. |
| Classes in org.apache.batik.bridge used by org.apache.batik.bridge.svg12 | |
|---|---|
| AbstractGraphicsNodeBridge
The base bridge class for SVG graphics node. |
|
| AbstractSVGBridge
The base bridge class for SVG elements. |
|
| AnimatableGenericSVGBridge
Abstract bridge class for animatable elements that do not produce a GraphicsNode. |
|
| AnimatableSVGBridge
Abstract bridge class for those elements that can be animated. |
|
| BaseScriptingEnvironment
This class is the base class for SVG scripting. |
|
| Bridge
A tagging interface that all bridges must implement. |
|
| BridgeContext
This class represents a context used by the various bridges and the builder. |
|
| BridgeContext.EventListenerMememto
A class used to store an EventListener added to the DOM. |
|
| BridgeEventSupport
This class is responsible of tracking GraphicsNodeMouseEvent and fowarding them to the DOM as regular DOM MouseEvent. |
|
| BridgeEventSupport.Listener
A GraphicsNodeMouseListener that dispatch DOM events accordingly. |
|
| BridgeExtension
This is a Service interface for classes that want to extend the functionality of the Bridge, to support new tags in the rendering tree. |
|
| BridgeUpdateHandler
Interface for objects interested in being notified of updates. |
|
| DocumentLoader
This class is responsible on loading an SVG document and maintaining a cache. |
|
| ErrorConstants
The error code. |
|
| FocusManager
A class that manages focus on elements. |
|
| FocusManager.DOMFocusInTracker
The class that is responsible for tracking 'DOMFocusIn' changes. |
|
| FocusManager.MouseClickTracker
The class that is responsible for tracking 'mouseclick' changes. |
|
| FocusManager.MouseOutTracker
The class that is responsible to update the focus according to 'mouseout' event. |
|
| FocusManager.MouseOverTracker
The class that is responsible to update the focus according to 'mouseover' event. |
|
| GenericBridge
A tagging interface that bridges for elements child of GraphicsNodeBridge should implement. |
|
| GraphicsNodeBridge
Bridge class for creating, building, and updating a GraphicsNode according to an Element. |
|
| PaintBridge
Bridge class for vending Paint objects. |
|
| ScriptingEnvironment
This class contains the informations needed by the SVG scripting. |
|
| ScriptingEnvironment.DOMAttrModifiedListener
|
|
| ScriptingEnvironment.DOMNodeInsertedListener
The listener class for 'DOMNodeInserted' event. |
|
| ScriptingEnvironment.DOMNodeRemovedListener
The listener class for 'DOMNodeRemoved' event. |
|
| ScriptingEnvironment.Window
Represents the window object of this environment. |
|
| SVGBridgeExtension
This is a Service interface for classes that want to extend the functionality of the Bridge, to support new tags in the rendering tree. |
|
| SVGImageElementBridge
Bridge class for the <image> element. |
|
| SVGTextElementBridge
Bridge class for the <text> element. |
|
| SVGTextElementBridge.AbstractTextChildBridgeUpdateHandler
Implementation for the BridgeUpdateHandler
for the child elements of <text>. |
|
| SVGTextElementBridge.AbstractTextChildSVGContext
Implementation of SVGContext for
the children of <text> |
|
| SVGTextElementBridge.AbstractTextChildTextContent
|
|
| SVGTextElementBridge.AttributedStringBuffer
This class is used to build an AttributedString. |
|
| SVGTextElementBridge.DOMChildNodeRemovedEventListener
The DOM EventListener invoked when a node is removed. |
|
| SVGTextElementBridge.DOMSubtreeModifiedEventListener
The DOM EventListener invoked when the subtree is modified. |
|
| URIResolver
This class is used to resolve the URI that can be found in a SVG document. |
|
| UserAgent
An interface that provides access to the User Agent informations needed by the bridge. |
|
| Viewport
Defines a viewport. |
| Classes in org.apache.batik.bridge used by org.apache.batik.extension.svg | |
|---|---|
| AbstractGraphicsNodeBridge
The base bridge class for SVG graphics node. |
|
| AbstractSVGBridge
The base bridge class for SVG elements. |
|
| AbstractSVGFilterPrimitiveElementBridge
The base bridge class for SVG filter primitives. |
|
| AnimatableGenericSVGBridge
Abstract bridge class for animatable elements that do not produce a GraphicsNode. |
|
| AnimatableSVGBridge
Abstract bridge class for those elements that can be animated. |
|
| Bridge
A tagging interface that all bridges must implement. |
|
| BridgeContext
This class represents a context used by the various bridges and the builder. |
|
| BridgeExtension
This is a Service interface for classes that want to extend the functionality of the Bridge, to support new tags in the rendering tree. |
|
| BridgeUpdateHandler
Interface for objects interested in being notified of updates. |
|
| ErrorConstants
The error code. |
|
| FilterPrimitiveBridge
Factory class for vending Filter objects that represents a filter primitive. |
|
| GenericBridge
A tagging interface that bridges for elements child of GraphicsNodeBridge should implement. |
|
| GraphicsNodeBridge
Bridge class for creating, building, and updating a GraphicsNode according to an Element. |
|
| PaintBridge
Bridge class for vending Paint objects. |
|
| SVGDecoratedShapeElementBridge
The base bridge class for decorated shapes. |
|
| SVGShapeElementBridge
The base bridge class for shapes. |
|
| SVGTextElementBridge
Bridge class for the <text> element. |
|
| SVGTextElementBridge.AbstractTextChildBridgeUpdateHandler
Implementation for the BridgeUpdateHandler
for the child elements of <text>. |
|
| SVGTextElementBridge.AbstractTextChildSVGContext
Implementation of SVGContext for
the children of <text> |
|
| SVGTextElementBridge.AbstractTextChildTextContent
|
|
| SVGTextElementBridge.AttributedStringBuffer
This class is used to build an AttributedString. |
| Classes in org.apache.batik.bridge used by org.apache.batik.gvt.svg12 | |
|---|---|
| BridgeContext
This class represents a context used by the various bridges and the builder. |
| Classes in org.apache.batik.bridge used by org.apache.batik.script | |
|---|---|
| BridgeContext
This class represents a context used by the various bridges and the builder. |
| Classes in org.apache.batik.bridge used by org.apache.batik.swing | |
|---|---|
| UpdateManagerEvent
This class represents an event which indicate an event originated from a UpdateManager instance. |
|
| UpdateManagerListener
This interface represents a listener to the UpdateManagerEvent events. |
|
| UserAgent
An interface that provides access to the User Agent informations needed by the bridge. |
| Classes in org.apache.batik.bridge used by org.apache.batik.swing.svg | |
|---|---|
| BridgeContext
This class represents a context used by the various bridges and the builder. |
|
| BridgeExtension
This is a Service interface for classes that want to extend the functionality of the Bridge, to support new tags in the rendering tree. |
|
| DocumentLoader
This class is responsible on loading an SVG document and maintaining a cache. |
|
| ExternalResourceSecurity
An interface that allows UserAgents to describe the security constraints desired for external resources. |
|
| ScriptSecurity
An interface that allows UserAgents to describe the security constraints desired for scripting. |
|
| UpdateManager
This class provides features to manage the update of an SVG document. |
|
| UpdateManagerEvent
This class represents an event which indicate an event originated from a UpdateManager instance. |
|
| UpdateManagerListener
This interface represents a listener to the UpdateManagerEvent events. |
|
| UserAgent
An interface that provides access to the User Agent informations needed by the bridge. |
| Classes in org.apache.batik.bridge used by org.apache.batik.transcoder | |
|---|---|
| BridgeContext
This class represents a context used by the various bridges and the builder. |
|
| GVTBuilder
This class is responsible for creating a GVT tree using an SVG DOM tree. |
|
| ScriptSecurity
An interface that allows UserAgents to describe the security constraints desired for scripting. |
|
| UserAgent
An interface that provides access to the User Agent informations needed by the bridge. |
|
| UserAgentAdapter
An abstract user agent adaptor implementation. |
| Classes in org.apache.batik.bridge used by org.apache.batik.transcoder.image | |
|---|---|
| UserAgent
An interface that provides access to the User Agent informations needed by the bridge. |
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


Please note
This instruction present migration path for Inspinia .NET MVC5 project.
In any step of migration you need to have in mind your own changes in theme. We don't know how your project look like and what custom code you have,
so please keep that in mind that we can only provide migration for Inspinia code, not for custom code.
This instruction was created based on clear Inspinia 2.7.1 project.
Please also note that migration to BS4 is not an easy task and take some time. It require some global find and replace as well as some local replace and upgrades. If you will have any problems do not hesitate and contact with us.
This migration is created only for basic Left to Right orientation. There is no support for RTL layout yet.
If you find any issue or bug in the migration or in the new version, please send instruction how to reproduce it on<EMAIL_ADDRESS>Replace all bootstrap resource:
Replace all Inspinia resource:
Bootstrap 4 require https://popper.js.org/ library. Add new popper.min.js file to your js folder.
You need to also include the popper.min.js file in your BundleConfig section after bootstrap:
// Bootstrap bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( "~/Scripts/popper.min.js", "~/Scripts/bootstrap.min.js"));
.dl-horizontal
has been dropped. Instead, use .row
on

and use grid column classes (or mixins) on its

and

children..list-inline
now requires that its children list items have the new .list-inline-item
class applied to them..page-header
as, aside from the border, all its styles can be applied via utilities..img-responsive
to .img-fluid
..img-rounded
to .rounded
.img-circle
to .rounded-circle
.table-responsive
right on the

..table-condensed
to .table-sm
for consistency..control-label
to .col-form-label
..input-lg
and .input-sm
to .form-control-lg
and .form-control-sm
, respectively..form-group-*
classes for simplicity’s sake. Use .form-control-*
classes instead now..help-block
and replaced it with .form-text
for block-level help text. For inline help text and other flexible options, use utility classes like .text-muted
..radio-inline
and .checkbox-inline
..checkbox
and .radio
into .form-check
and the various .form-check-*
classes..form-horizontal
class requirement..form-group
no longer applies styles from the .row
via mixin, so .row
is now required for horizontal grid layouts (e.g.,

)..has-error
, .has-warning
, and .has-success
classes with HTML5 form validation via CSS’s :invalid
and :valid
pseudo-classes. (Inspinia left has-* class).form-control-static
to .form-control-plaintext
..btn-default
to .btn-secondary
. (Inspinia left btn-default class).btn-xs
class entirely as .btn-sm
is proportionally much smaller than v3’s. (Inspinia left btn-xs class).btn-group-justified
. As a replacement you can use

as a wrapper around elements with .w-100
.

s or

s now.
and <button>
based dropdown items..divider
to .dropdown-divider
..dropdown-item
.
; this is now provided automatically via CSS’s ::after
on .dropdown-toggle
.576px
grid breakpoint as sm
, meaning there are now five total tiers (xs
, sm
, md
, lg
, and xl
)..col-{breakpoint}-{modifier}-{size}
to .{modifier}-{breakpoint}-{size}
for simpler grid classes.order
classes. For example, instead of .col-8.push-4
and .col-4.pull-8
, you’d use .col-8.order-2
and .col-4.order-1
.sm
grid tier below 768px
for more granular control. We now have xs
, sm
, md
, lg
, and xl
. This also means every tier has been bumped up one level (so .col-md-6
in v3 is now .col-lg-6
in v4).xs
grid classes have been modified to not require the infix to more accurately represent that they start applying styles at min-width: 0
and not a set pixel value. Instead of .col-xs-6
, it’s now .col-6
. All other grid tiers require the infix (e.g., sm
).
a.list-group-item
with an explicit class, .list-group-item-action
, for styling link and button versions of list group items.remote
option (which could be used to automatically load and inject external content into a modal) and the corresponding loaded.bs.modal
event were removed. We recommend instead using client-side templating or a data binding framework, or calling jQuery.load yourself.>
selectors for simpler styling via un-nested classes..nav > li > a
, we use separate classes for .nav
s, .nav-item
s, and .nav-link
s. This makes your HTML more flexible while bringing along increased extensibility..navbar-toggle
is now .navbar-toggler
and has different styles and inner markup (no more three
s)..navbar-form
class entirely. It’s no longer necessary; instead, just use .form-inline
and apply margin utilities as necessary.margin-bottom
or border-radius
by default. Use utilities as necessary..page-item
, .page-link
) are now required on the descendants of .pagination
s.pager
component entirely as it was little more than customized outline buttons..breadcrumb-item
, is now required on the descendants of .breadcrumb
s.label
and .badge
to disambiguate from the
element and simplify related components..badge-default
has been dropped and .badge-secondary
added to match component modifier classes used elsewhere..ibox
So all Inspinia panels have not been changed. We also left basic support for old panels components. Additional you have new card components form BS4.

element by adding .nav-link
class.
.active
from

to
element.
.progress-bar-*
classes with .bg-*
utilities. For example, class="progress-bar progress-bar-danger"
becomes class="progress-bar bg-danger"
..active
for animated progress bars with .progress-bar-animated
.striped
with progress-bar-striped
and move to the div class="progress...
.carousel-
.
.next
, .prev
, .left
, and .right
are now .carousel-item-next
, .carousel-item-prev
, .carousel-item-left
, and .carousel-item-right
..item
is also now .carousel-item
..carousel-control.right
and .carousel-control.left
are now .carousel-control-next
and .carousel-control-prev
, meaning they no longer require a specific base class..d-none
and d-{sm,md,lg,xl}-none
)..hidden-*
utilities for new display utilities. For example, instead of .hidden-sm-up
, use .d-sm-none
. Renamed the .hidden-print
utilities to use the display utility naming scheme. More info under the Responsive utilities section of this page..float-{sm,md,lg,xl}-{left,right,none}
classes for responsive floats and removed .pull-left
and .pull-right
since they’re redundant to .float-left
and .float-right
..text-{sm,md,lg,xl}-{left,center,right}
..center-block
for the new .mx-auto
class..metismenu
class to the

elements)..float-e-margins
class in theme. It was only needed in buttons example page.


Ordered lasso and time-lag sparse regression. Ordered Lasso fits a linear model and imposes an order constraint on the coefficients. It writes the coefficients as positive and negative parts, and requires positive parts and negative parts are non-increasing and positive. Time-Lag Lasso generalizes the ordered Lasso to a general data matrix with multiple predictors. For more details, see Suo, X.,Tibshirani, R., (2014) 'An Ordered Lasso and Sparse Time-lagged Regression'.
| Version: | 1.7 |
| Depends: | R (≥ 3.0.0), Matrix |
| Imports: | Iso, quadprog, ggplot2, reshape2 |
| Published: | 2014-11-27 |
| Author: | Jerome Friedman, Xiaotong Suo and Robert Tibshirani |
| Maintainer: | Xiaotong Suo <xiaotong at stanford.edu> |
| License: | GPL-2 |
| NeedsCompilation: | yes |
| In views: | TimeSeries |
| CRAN checks: | orderedLasso results |
| Reference manual: | orderedLasso.pdf |
| Package source: | orderedLasso_1.7.tar.gz |
| Windows binaries: | r-devel: orderedLasso_1.7.zip, r-release: orderedLasso_1.7.zip, r-oldrel: orderedLasso_1.7.zip |
| OS X binaries: | r-release: orderedLasso_1.7.tgz, r-oldrel: orderedLasso_1.7.tgz |
Please use the canonical form https://CRAN.R-project.org/package=orderedLasso to link to this page.


MR ISEDORE LAWAN
BANK OF AFRICA.(BOA)
OUAGADOUGOU -BURKINA FASO.
REQUEST FOR YOUR URGENT ASSISTANCE
Reply me here please.
Email<EMAIL_ADDRESS>Dear Friend,
This message might meet you in utmost surprise, however,it's just my urgent need for foreign partner that made me to contact you for this transaction. I am a banker by profession from Burkina faso in west Africa and currently holding the post of Director Auditing and Accounting unit of the bank.I have the opportunity of transfering the left over funds ($11.5million) of one of my bank clients who died along with his entire family on 31 july 2000 in a plane crash.You can confirm the genuiness of the deceased death by clicking on this web site http://news.bbc.co.uk/1/hi/world/europe/859479.stm
Hence,i am inviting you for a business deal where this money can be shared between us in the ratio of 60/30 while 10% will be mapped out for expenses.If you agree to my business proposal.further details of the transfer will be forwarded to you as soon as i receive your return mail. have a great day.
yours,
Mr Isedore Lawan
Send your Reply to my new email address.
Email<EMAIL_ADDRESS>Découvrez Windows Live Spaces et créez votre site Web perso en quelques clics ! Essayez !


Optional, wrapper around two or more mdc-list elements to be grouped together.
Properties
Description
subheader: string
Optional, heading text displayed above each list in a group.
Selector:mdc-list-group-subheader
Optional, heading text displayed above each list in a group.
Selector:mdc-list
Properties
Description
dense: boolean
Increases the density of the list, making it appear more compact.
twoLine: boolean
Increases the height of the row to give it greater visual separation from adjacent rows.
avatar: boolean
Configures the leading tiles of each row to display images instead of icons.
border: boolean
Sets a border around each list item.
singleSelection: boolean
When enabled, the space and enter keys (or click event) will trigger an single list item to become selected and any other previous selected element to become deselected.
interactive: boolean
List items receive styles for hover, focus, and press states (including the ripple). Default is true.
useActivatedClass: boolean
Sets the selection logic to apply/remove the mdc-list-item--activated class.
useSelectedClass: boolean
Sets the selection logic to apply/remove the mdc-list-item--selected class.
wrapFocus: boolean
Sets the list to allow the up arrow on the first element to focus the last element of the list and vice versa.
verticalOrientation: boolean
Sets the list to an orientation causing the keys used for navigation to change. true results in the Up/Down arrow keys being used.
false results in the Left/Right arrow keys being used.
Methods
Parameters
setSelectedIndex(index: number)
Sets the currently selected list item.
getSelectedIndex(): number
Returns the currently selected item index.
focusItemAtIndex(index: number)
Sets focus to the element at the given index in a list.
focusFirstElement()
Sets focus to the first element in a list.
focusLastElement()
Sets focus to the last element in a list.
Event
Description
selectionChange: MdcListItemChange
Change event that is being fired whenever the selected state of an option changes.
Selector:mdc-list-itema[mdc-list-item]
Properties
Description
selected: boolean
Styles the row in an selected state.
activated: boolean
Styles the row in an activated state.
disabled: boolean
Disables the list item.
Selector:mdcListItemGraphic
The first tile in the row. Typically an icon or image.
Selector:mdcListItemMeta
The last tile in the row. Typically small text, icon or image.
Selector:mdc-list-item-text
Primary text for the row (displayed as the middle tile)
Properties
Description
secondaryText: string
Optional secondary text for the list item. Displayed below the primary text.
Selector:mdc-list-item-secondary
Secondary text for the list item. Displayed below the primary text.
Selector:mdc-list-divider
Properties
Description
inset: boolean
Increases the leading margin of the divider so that it does not intersect the avatar column.
padded: boolean
To make a divider match the padding of list items.
Sass Mixins
To customize the list ink colors, use the following mixins.


Use regular expressions to validate input.
A good input validation strategy is to constrain input to known valid values, reject known bad values and to sanitize the input that passes validation. Rejecting bad values is not to be relied on, because there are too many possible bad values. However, it is possible to filter out at least some bad input. Constraining input can be done effectively using regular expressions.
Constrain input as the first step of input validation.
Perform the following actions to constrain input using regular expressions:
Use a regular expression library. C++ does not have built-in regular expression functionality. Find a trusted library that provides regular expression functionality.
Determine valid input patterns. Identify the types of valid input for your input application. For example, some input follows obvious patterns, such as social security or credit card numbers. Other types of input may have less obvious patterns, such as file names. Write regular expressions that describe valid input for your application.
Validate length before applying regular expressions. Applying regular expressions to very long data can result in denial of service conditions, so length of data should be validated first.
Use regular expressions to constrain input. Use the regular expressions you have written to constrain input as the first step of your input validation strategy.
Adapted from Microsoft patterns & practices guidance.


In the following, a group of stars which implement a dynamic map function is introduced. These stars look form the outside pretty much like the common map stars in the HOF domain. However, the DEDynMap star does not have a parameter for the number of multiplications - as it is the buswidth in the HOF domain -, but two additional inputs. These inputs expect events when a new copy of a block is to be put into the topology or is to be taken out of it. So, these stars allow for instantiation and deletion of any block during runtime on demand. Hence, they give the chance to change the topology during the runtime of a simulation.
In the contrary to Ptolemy's HOF stars, these stars have heavily to work and to interact with the scheduler. So, they are only implemented for the DE-domain.
All icons for the stars which are explained below are in a palette mutable.pal, which can be found in $PTOLEMY/src/domains/de/contrib/demo.
The DEDynMap star is always to be used together with DEDynMerge and/or DEDynFork stars in order to adapt the number of portholes and connections automatically during runtime. The master block itself is to be specified textually in the parameters of the DEDynMap star. Alternatively, a graphical version DEDynMapGr is also provided.
The DEDynMap star creates or deletes instances of the master
block and connects their portholes to the multiportholes in DEDynFork
and DEDynMerge. So, these stars separate the runtime mutations
from their outside: All mutations take place between the DEDynFork
and the DEDynMerge stars. The DEDynMap star creates
a new copy of the master block and puts it into the topology each
time it gets fired at the newBlock porthole. It takes a copy out
of the topology and deletes it each time it gets fired at the delBlock
porthole. The copies are identified by an instancenumber. These
stars perform everything needed to mutate the topology, like changing the
number of portholes in DEDynMerge and DEDynFork or setting
up new connections. The user does not need to program anything. These stars
can be used in Ptolemy schematics in the common way: they just are to be
connected with other stars and their states are to be set.


Hi, my name is Shourov and I'm an
I'm a Bangladeshi programmer undergraduate student of a International University of Business Agriculture and Technology.
I am computer enthusiast and I love to code, I also like facing new challenges, exploring new technologies and solving complex problems.
Here are the languages that i'm familiar with:


Drop
This has dropdown items
Hi
Universe
Hello
World
This has dropdown items, too
Hermione
Harry Potter


Your personal data, including your voting and browsing history will not be intentionally shared with third parties.
Your comments are public by design and are accessible by third parties. We will never modify the content of comments, but we may remove them.
When logged in, you will not be served any third-party content (scripts, cookies, or images).
Responsibilities
You may not make automated requests to the site for the purpose of voting or commenting. Other types of automated requests must be limited to once every thirty seconds.
Posting links with the primary goal of directing traffic to outside sites, or increasing their search engine visibility, will be construed as spam and may result in account bans.
You must not abuse the site by knowingly posting malicious code, or links to malicious sites, that could harm other users. If you find a security or privacy bug, please report it to<EMAIL_ADDRESS>You may not use the site to harass other users.
You may not use the site to post inappropriate content which includes but is not limited to pornographic content.
You may not post the personal information of users outside of their names and affiliations.
Accounts consuming an unreasonable proportion of site resources, or posting harassing or innapropriate content are subject to being banned from the site.


menubar - Creates an instance of the menubar Class.
Create and return a new instance of the menubar class. The menubar class encapsulates the definition, installation and dynamic behavior of a menubar. The class doesn't depend on a widget framework and therefore can be used with or without a framework (e.g. Bwidget, IWidget, Snit, etc.). Unlike other Tk widget commands, the menubar command doesn't have a pathName argument because menubars are handled by the window manager (i.e. wm) and not the application.
The following options can be passed to the menubar new command.
These options are inherited from the Tk menu command, their effect is platform specific.
An instance of the menubar class provides methods for compiling a description of the menubar, configuring menu items and installing the menubar in toplevel windows.
A menubar can be thought of as a tree of cascading menus. Users define a menubar using a language that results in a human readable description of a menubar. The description of the menubar is then compiled by an instance of the menubar class after which it can be installed in one or more toplevel windows.
The menubar class provides many unique capabilities that are not found in other tcl/tk menubar implementation. Some of these are:
A tagging system that simplifies access to menu entries in the menu tree.
Support for user defined tags that depend on the toplevel window context.
A simplified and uniform interface for all callback commands.
Namespace support for all callback commands so callback commands can be easily grouped into namespaces.
Support for hiding and exposing menus on the menubar.
A simplified method for creating radiobutton groups.
Automatic management of state variables for checkbuttons and radiobuttons.
Scope control for the state variables of checkbuttons and radiobuttons.
Tear-off menu management that ensures only one tearoff menu is created.
Support for dynamic menu extension to simplify the creation of recent document menus.
Support for saving and restoring dynamic menu extensions.
The visible rendering of a menubar in a toplevel window is a horizontally group of cascading Tk menus.
A menu is an ordered list of items that is rendered vertically. Menus are not visible until a user preforms some action (normally a <ButtonPress-1> event). A menu may contain any number of child menus that are rendered as cascading menus. Cascading menus are rendered next to the parent menu when they are activated.
A menu contains an ordered list of items called entries. Menu entries have a type and the menubar class supports the following 6 entry types: Command, Checkbutton, Radiobutton, Separator, Group and Menu.
Each menu entry has a visible string that is called the entry label.
A tag is name that is normally used to referr to an item in a menu tree. A tag name is an alphanumeric character string that may include the underscore character. Menu tree tags are defined for all nodes and leafs in a menu tree. This provides a flat abstraction of the tree and simplifies item referencing in menubar methods. Without this abstraction it would be necessary to reference menu elements using a tree path which could change at run-time. The menubar class also has a method that can create a user defined tag. User defined tags store values that change based on the currently active toplevel window. User defined tags can be used to store widget pathnames use by callback code so that output can be routed to the appropriate toplevel window.
Compiles body into a tree of menu entries which define the visual layout of the menubar. The body argument describes the layout using the following syntax, where the elements of the syntax are described below.
body == definitions
definitions ::= { <ignore> | <definition> | <definition> <definitions> } ignore ::= { <nl> | <white-space> <nl> | # <comment> <nl> } definition ::= { <command> | <checkbutton> | <radiobutton> | <separator> | <group> | <menu> } command ::= <label> C <tag> <nl> checkbutton ::= <label> X<scope> { <tag> | <tag>+ } <nl> radiobutton ::= <label> R<scope> { <tag> | <tag>+ } <nl> separator ::= <stext> S <tag> <nl> group ::= <dummy> G <tag> <nl> menu ::= <label> { M:<tag> | M:<tag>+ } <nl> <definitions> stext ::= '--' | <label> scope ::= '' | '@' | '='
The C type entry is the most common type of entry. This entry executes a command when it is invoked.
A X type entry behaves much like a Tk checkbutton widget. When it is invoked it toggles back and forth between a selected and deselected states. The value of a checkbutton is a boolean (i.e. 1 or 0). By default all checkbuttons are deselected. If you want the checkbutton to be initially selected then include a trailing plus (+) with the tag name. See SCOPE CONTROL below for a description of the scope indicator.
A R type menu entry behaves much like a Tk radiobutton widget. Each radiobutton entry is a member of a radiobutton group that controls the behavior of the radiobuttons in the group. All radiobuttons in a group are given the same tag name. In the example below Red, Green and Blue all have the same tag and are therefore all in the same radiobutton group. A trailing plus (+) on the tag name of a radiobutton entry will cause the entry to be the initially selected entry. See SCOPE CONTROL below for a description of the scope indicator.
A S type menu entry is an entry that is displayed either as a horizontal dividing line or a label. Separators are not active elements of a menu and have no associated behavior if they are invoked. If <stext> is two dashes (i.e. '--') then the separator will be displayed as a horizontal line otherwise <stext> will be displayed as a bold label surrounded by double dashes (e.g. "-- <stext> --") with a lightgray background.
The G type menu entry marks a location in the menu tree where entries can be dynamically added and removed. Menu extension can only occur at the end of a menu so G type entries must be the last item on a menu. A G type entry is rendered as a separator line. The group.<xxx> sub-commands are used to manipulate command group entries.
An M type entry is used to define both menubar menus and cascading menus. Menu entries are the most complicated of the 6 menu types. A menu entry is composed of three list elements. The first element of the list is its label. The second element of the list is a composite string consisting of a type identifier (M) followed by an optional tag (beginning with a ':' separator) and finally an optional plus (+) which indicates that the menu is a tear-off menu. The final element of the list is a LIST VALUE.
The install method installs the menubar created with the define method into toplevel window pathName. The body argument of the command contains a tcl script which is used to initialize the installed menubar. Normally the tcl script will contain calls to various menubar methods to perform the initialization. The initialization code is only run once when the menubar is installed. The namespace in which the install method is executed becomes the default namespace for callback commands (see menu.namespace below for more details).
Configures the tags of a menubar and returns an empty string. This method provides a convenient way to configure a larger number of tags without the verbosity of using the tag.configure method.
Option may have any of the values accepted by the tag.configure method.
The tag-settings argument is a string that is converted to a list of tag-value pairs using the following syntax.
Syntax for tag-settings.
tag-settings ::= { <ignore> | <value> | <value> <tag-settings> } ignore ::= { <nl> | <white-space> <nl> | # <comment> <nl> } value ::= <tag> <option-value> <nl>
Change the namespace for a sub-tree of the menubar starting at entry tag. The new value will be namespace. Each entry in the menubar tree has an associated namespace which will be used for its callback procedure. The default namespace is the namespace where the install method was executed. The namespace method can be used to change the namespace that will be used for callbacks in a sub-tree of the menubar. This method can only be used in the context of an install script.
Remove (hide) a menubar entry. When a menubar tree is defined all entries are visible by default. This method can be used to hide a menubar entry. The hide methods can be used in the context of an install script so that a menu will be initially hidden at application start up. The tag argument is the tag name of the menu to be hidden.
Exposes (shows) a hidden menubar entry. When a menubar tree is defined all entries are visible by default. If a entry is hidden from the user (using the menu.hide method) then it can be exposed again using the show method. The tag argument is the tag name of the menu to be shown.
Add a user defined tag value. The tag.add method adds a new tag-value pair to the the tags defined for a menubar. User defined tags are different from the tags created by the define method. The tag.add method can only be used in an install script and its value is associated with the toplevel where the menubar is installed. This makes the tag context sensitive so callback code that queries the tag value will receive a value that is associated with the window that performed the callback.
Given the pathName of a toplevel window and a tag this method configures the menu entry associated with the tag and return an empty string.
These option are the same as those described for menu entries in the Tk menu documentation.
Returns the value of the configuration option given by option or the value of a user defined tag. The option argument may be any of the options accepted by the tag.configure method for the tag type. User defined tags are queried without an option value.
Add a command to the group with tag name tag. This method appends a new command entry to the end of a command group. The order of the arguments is fixed but arguments to the right can be ignored. Arguments to this method have the following meaning.
The tag name of the command group.
The displayed label for the menu entry.
A command prefix that will be used for callback command.
An accelerator string that will be displayed next to the entry label.
A bind sequence that will be bound to the callback command.
Sets the active state of the command. One of: normal, disabled, active
Delete a command from a group with tag name tag. This method deletes command label from a command group.
Change the position of an entry in a group with tag name tag. The direction argument is the direction ('up' or 'down') the entry will be moved. The entry that is moved has the name label.
Configure the options of an entry in the command group with tag name tag. This method is similar to the tag.configure method except that it works on entries in a command group. Set documentation for the tag.configure method (above) for more details on command entry options.
Return a string serialization of the entries in a command group. The argument tag is the tag name for the group that is to be serialized. The resulting serialization is a list containing three element (1) the tag name of the group (2) a dictionary containing group level options (3) a list of zero or more similar three element lists that describe the entries in the group.
Replace the contents of group tag tag with the commands defined in the serialization stream. The original contents of the group are lost.
This method should be used in code that creates a new notebook tab. Execution of this method will cause state storage to be allocated for the new notebook tab. The pathname for the notebook tab is passed as an argument to the method.
This command deallocates the state store for a notebook tab. The pathname for the notebook tab is passed as an argument to the method.
This method should be used in the callback for menubar checkbuttons or radiobuttons that have notebook tab scope control. When this method is executed it will move the value associated with tag into the tab store for the tab identified by pathname.
This method should be place in a bind script that is triggered by a notebooks <<NotebookTabChanged>> event.
By default a menubar instance looks the same in all installed toplevel windows. As changes are made to one instance of a menubar all the other instances are immediately updated. This means the internal state of all the menu entries for the instances are synchronized. This behavior is called global scope control of the menubar state.
The menubar class allows finer scope control on check and radio buttons. The scope of these entry types can be modified by adding a modifier character to their type character. Two modifier characters are supported as show in the table below.
'' ::= global scope (no character) '@' ::= local scope modifier '=' ::= notebook tab scope modifier
When the local scope character (@) is added to the definition of a button, the button is given a new variable for each installed toplevel window. This has the effect of making the button's state local to the window (i.e. local scope). An example use case for this behavior might be a status bar that can be toggled on an off by a checkbutton. The developer may want to allow the user to control the visibility of the status bar on a per window basis. In this case a local modifier would be added to the status bar selector so the callback code would receive an appropriate value based on the current toplevel window.
The notebook tab scope character (=) is similar in effect to the local scope character but it allows a notebook tab selection to also manage the state of of a button. Adding the notebook tab scope modifier enables notebook tab scope control but the developer must then make use of the notebook.xxxx sub-commands to actively manage state values as tabs are added, deleted and selected.
package require Tcl package require Tk package require menubar set tout [text .t -width 25 -height 12] pack ${tout} -expand 1 -fill both set mbar [menubar new \ -borderwidth 4 \ -relief groove \ -foreground black \ -background tan \ ] ${mbar} define { File M:file { Exit C exit } Edit M:items+ { # Label Type Tag Name(s) # ----------------- ---- --------- "Cut" C cut "Copy" C copy "Paste" C paste -- S s2 "Options" M:opts { "CheckList" M:chx+ { Coffee X coffee+ Donut X donut Eggs X eggs } "RadioButtons" M:btn+ { "Red" R color "Green" R color+ "Blue" R color } } } Help M:help { About C about } } ${mbar} install . { ${mbar} tag.add tout ${tout} ${mbar} menu.configure -command { # file menu exit {Exit} # Item menu cut {CB Edit cut} copy {CB Edit copy} paste {CB Edit paste} # boolean menu coffee {CB CheckButton} donut {CB CheckButton} eggs {CB CheckButton} # radio menu color {CB RadioButton} # Help menu about {CB About} } -bind { exit {1 Cntl+Q Control-Key-q} cut {2 Cntl+X Control-Key-x} copy {0 Cntl+C Control-Key-c} paste {0 Cntl+V Control-Key-v} coffee {0 Cntl+A Control-Key-a} donut {0 Cntl+B Control-Key-b} eggs {0 Cntl+C Control-Key-c} about 0 } -background { exit red } -foreground { exit white } } proc pout { txt } { global mbar set tout [${mbar} tag.cget . tout] ${tout} insert end "${txt}\n" } proc Exit { args } { puts "Goodbye" exit } proc CB { args } { set alist [lassign ${args} cmd] pout "${cmd}: [join ${alist} {, }]" } wm minsize . 300 300 wm geometry . +4+4 wm protocol . WM_DELETE_WINDOW exit wm title . "Example" wm focusmodel . active pout "Example started ..."
This implementation uses TclOO so it requires 8.6. The code has been tested on Windows (Vista), Linux and OSX (10.4).
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category menubar of the Tklib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.
Copyright © 2009 Tom Krehbiel<EMAIL_ADDRESS>All rights reserved.


This site runs from a Hewlett Packard 9000/715 workstation using NCSA HTTPd. Most of the pages were written within a four-week period. The site is best viewed using a graphical browser running at a screen resolution of 640x480 and 256 colours or better. If graphics are not required you can also use Lynx (or similar) as ALT tags have been used where required.
Creating this site has directly and indirectly involved many in The Met.Office. Thanks to all the people whose words we stole, whose time we hijacked and in whose footsteps we trod.
Felicity Bellini - Graphics (doodled in her paint package)
"There are many restrictions when designing pages for the Internet;
image size and resolution, number of graphics, colour and type... These
pages are a compromise between the original designs and what could
actually be written. Our site not only looks good, but is hopefully
easy to use; the Home page should help you locate any information
you require. The buttons and graphics were initially created in Adobe
Illustrator and Photoshop on the Apple Macintosh. Having saved them
as BMP files (68 dpi, 8-bit, indexed colour), they were then converted
to GIFs on the PC using CorelDraw. The programmer then strutted his
stuff with HTML to produce the finished article you see here."
James Barrott - Project Manager (hassled people for site content)
Ian Watkins - Technical Co-ordinator (kludged together the HTML)
David Tinkler
Jacquie Syvret - Education
Andy Brady
"To create this site I had to use guile, flattery and persuasion to
assemble a big heap of information about meteorology and The Met. Office.
This was heaved over to Felicity and Ian who knitted it into the tasteful construction in which you
stand."
"The site was built with a tree structure in mind as this allowed
the use of a toolbar at the bottom of each page. However, because this is
hypertext, some pages are not on the tree, therefore, on these pages
a full toolbar isn't available. I used a PC to build this site and my toolkit
includes PFE (Programmers File Editor) and PaintShop Pro v3.11. A workstation
was only used to test the forms and cgi-bin scripts."
Web project group
Gordon Higgins
Jim Ephraums
Kirby James
Additional material
Kate Smith - Services and Business
Technical assistance
Chris Paulson-Ellis
Graham Hughes
Ian Watkins |<EMAIL_ADDRESS>| Last updated: 28 September 1995 | © Crown Copyright 1995


| Documentation Contents |
The class path is the path that the Java runtime environment searches for classes and other resource files. The class search path (more commonly known by the shorter name, "class path") can be set using either the
-classpath
option when calling a JDK tool (the preferred method) or by setting theCLASSPATH
environment variable. The-classpath
option is preferred because you can set it individually for each application without affecting other applications and without other applications modifying its value.
%
sdkTool-classpath
classpath1:
classpath2...-or-
% setenv CLASSPATH
classpath1:
classpath2...where:
- sdkTool
- A command-line tool, such as
java
,javac
,javadoc
, orapt
. For a listing, see JDK Tools.- classpath1
:
classpath2- Class paths to the .jar, .zip or .class files. Each classpath should end with a filename or directory depending on what you are setting the class path to:
- For a .jar or .zip file that contains .class files, the class path ends with the name of the .zip or .jar file.
- For .class files in an unnamed package, the class path ends with the directory that contains the .class files.
- For .class files in a named package, the class path ends with the directory that contains the "root" package (the first package in the full package name).
Multiple path entries are separated by colons.
The default class path is the current directory. Setting the
CLASSPATH
variable or using the-classpath
command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings.Classpath entries that are neither directories nor archives (.zip or .jar files) nor * are ignored.
The class path tells the JDK tools and applications where to find third-party and user-defined classes -- that is, classes that are not extensions or part of the Java platform. The class path needs to find any classes you've compiled with the javac compiler -- its default is the current directory to conveniently enable those classes to be found.
The JDK, the JVM and other JDK tools find classes by searching the Java platform (bootstrap) classes, any extension classes, and the class path, in that order. (For details on the search strategy, see How Classes Are Found.) Class libraries for most applications will want to take advantage of the extensions mechanism. You only need to set the class path when you want to load a class that's (a) not in the current directory or in any of its subdirectories, and (b) not in a location specified by the extensions mechanism.
If you are upgrading from an older version of the JDK, your startup settings may include
CLASSPATH
settings that are no longer needed. You should remove any settings that are not application-specific, such asclasses.zip
. Some third-party applications that use the Java Virtual Machine may modify yourCLASSPATH
environment variable to include the libaries they use. Such settings can remain.You can change the class path by using the JDK tools' -classpath option when you invoke the JVM or other JDK tools or by using the
CLASSPATH
environment variable. Using the-classpath
option is preferred over settingCLASSPATH
environment variable because you can set it individually for each application without affecting other applications and without other applications modifying its value.Classes can be stored either in directories (folders) or in archive files. The Java platform classes are stored in
rt.jar
. For more details on archives and information on how the class path works, see Understanding the class path and package names near the end of this document.
- Important Note: Some older versions of the JDK software included a
<
jdk-dir>/classes
entry in the default class path. That directory exists for use by the JDK software, and should not be used for application classes. Application classes should be placed in a directory outside of the JDK direcotry hierarchy. That way, installing a new JDK does not force you to reinstall application classes. For compatibility with older versions, applications that use the<
jdk-dir>/classes
directory as a class library will run in the current version, but there is no guarantee that they will run in future versions.
The Java tools java, jdb, javac, and javah have a
-classpath
option which replaces the path or paths specified by theCLASSPATH
environment variable while the tool runs. This is the recommended option for changing class path settings, because each application can have the class path it needs without interfering with any other application.The runtime tool java has a
-cp
option, as well. This option is an abbreviation for-classpath
.For very special cases, both java and javac have options that let you change the path they use to find their own class libraries. The vast majority of users will never to need to use those options, however.
In general, you will want to use the
-classpath
command-line option, as explained in the previous section. This section shows you how to set theCLASSPATH
environment variable if you want to do that, or clear settings left over from a previous installation.
In csh, the
CLASSPATH
environment variable is modified with thesetenv
command. The format is:
setenv CLASSPATH
path1:
path2In sh, the
CLASSPATH
environment variable can be modified with these commands:
CLASSPATH =
path1:
path2:
...
export CLASSPATH
If your
CLASSPATH
environment variable has been set to a value that is not correct, or if your startup file or script is setting an incorrect path, you can unsetCLASSPATH
in csh by using:
unsetenv CLASSPATH
In sh, you would use:
unset CLASSPATH
These commands unset
CLASSPATH
for the current shell only. You should also delete or modify your startup settings to ensure that you have the rightCLASSPATH
settings in future sessions.
If the
CLASSPATH
variable is set at system startup, the place to look for it depends on the shell you are running:
Shell Startup Script csh, tcsh Examine your .cshrc
file for thesetenv
command.sh, ksh Examine your .profile
file for theexport
command.
Class path entries can contain the basename wildcard character *, which is considered equivalent to specifying a list of all the files in the directory with the extension
.jar
or.JAR
. For example, the class path entryfoo/*
specifies all JAR files in the directory namedfoo
. A classpath entry consisting simply of * expands to a list of all the jar files in the current directory. Files will be considered regardless of whether or not they are hidden (that is, have names beginning with '.').A class path entry that contains * will not match class files. To match both classes and JAR files in a single directory
foo
, use eitherfoo:foo/*
orfoo/*:foo
. The order chosen determines whether the classes and resources infoo
are loaded before JAR files infoo
, or vice versa.Subdirectories are not searched recursively. For example,
foo/*
looks for JAR files only infoo
, not infoo/bar
,foo/baz
, etc.The order in which the JAR files in a directory are enumerated in the expanded class path is not specified and may vary from platform to platform and even from moment to moment on the same machine. A well-constructed application should not depend upon any particular order. If a specific order is required then the JAR files can be enumerated explicitly in the class path.
Expansion of wildcards is done early, prior to the invocation of a program's
main
method, rather than late, during the class-loading process itself. Each element of the input class path containing a wildcard is replaced by the (possibly empty) sequence of elements generated by enumerating the JAR files in the named directory. For example, if the directoryfoo
containsa.jar
,b.jar
, andc.jar
, then the class pathfoo/*
is expanded intofoo/a.jar:foo/b.jar:foo/c.jar
, and that string would be the value of the system propertyjava.class.path
.The
CLASSPATH
environment variable is not treated any differently from the-classpath
(or-cp
) command-line option. That is, wildcards are honored in all these cases. However, class path wildcards are not honored in theClass-Path
jar-manifest header.
Java classes are organized into packages which are mapped to directories in the file system. But, unlike the file system, whenever you specify a package name, you specify the whole package name -- never part of it. For example, the package name for
java.awt.Button
is always specified asjava.awt
.For example, suppose you want the Java runtime to find a class named
Cool.class
in the packageutility.myapp
. If the path to that directory is/java/MyClasses/utility/myapp
, you would set the class path so that it contains/java/MyClasses
.To run that app, you could use the following JVM command:
% java -classpath /java/MyClasses utility.myapp.Cool
When the app runs, the JVM uses the class path settings to find any other classes defined in the
utility.myapp
package that are used by theCool
class.Note that the entire package name is specified in the command. It is not possible, for example, to set the class path so it contains
/java/MyClasses/utility
and use the commandjava myapp.Cool
. The class would not be found.(You may be wondering what defines the package name for a class. The answer is that the package name is part of the class and cannot be modified, except by recompiling the class.)
Note: An interesting consequence of the package specification mechanism is that files which are part of the same package may actually exist in different directories. The package name will be the same for each class, but the path to each file may start from a different directory in the class path.
When classes are stored in a directory (folder), like
/java/MyClasses/utility/myapp
, then the class path entry points to the directory that contains the first element of the package name. (in this case,/java/MyClasses
, since the package name isutility.myapp
.)But when classes are stored in an archive file (a .zip or .jar file) the class path entry is the path to and including the .zip or .jar file. For example, to use a class library that is in a .jar file, the command would look something like this:
% java -classpath /java/MyClasses/myclasses.jar utility.myapp.Cool
To find class files in the directory
/java/MyClasses
as well as classes in/java/OtherClasses
, you would set the class path to:
% java -classpath /java/MyClasses:/java/OtherClasses ...
Note that the two paths are separated by a colon.
The order in which you specify multiple class path entries is important. The Java interpreter will look for classes in the directories in the order they appear in the class path variable. In the example above, the Java interpreter will first look for a needed class in the directory
/java/MyClasses
. Only if it doesn't find a class with the proper name in that directory will the interpreter look in the/java/OtherClasses
directory.
Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved. Please send comments using this Feedback page. |
Java Technology |


#include <stBasicObjects.h>
Inheritance diagram for stBasicArrayObject< DataType, OIDType >:
Public Member Functions | |
| stBasicArrayObject () | |
| stBasicArrayObject (stSize n, const DataType *data=NULL) | |
| virtual | ~stBasicArrayObject () |
| void | SetData (const DataType *data) |
| DataType * | GetData () |
| stSize | GetSize () |
| DataType & | operator[] (int idx) |
| DataType | Get (stCount idx) |
| long | GetOID () |
| void | SetOID (OIDType oid) |
| stBasicArrayObject * | Clone () |
| stSize | GetSerializedSize () |
| const stByte * | Serialize () |
| void | Unserialize (const stByte *data, stSize dataSize) |
| bool | IsEqual (stObject *obj) |
This object holds an array of some type and its OID. The OID may be used to hold an additional information about the object (like the primary key in a database) and will never be used by the distance functions.
The template parameter DataType defines the data type of each unit of the array. It may be any C/C++ standard numeric types (integers, characters and floating points). The template parameter OIDType defines the type of the OID to be used. As DataType, it may assume any numeric type. By default, it will always be and int value.
The Serialized version of this class is organized as follows:
I'll provide the figure later...
This class template was designed to work with the metric evaluators defined in stBasicMetricEvaluators.h.
Marcos Rodrigues Vieira<EMAIL_ADDRESS>It needs optimizations.
Definition at line 112 of file stBasicObjects.h.
|
|
Default constructor. It creates an array with 0 elements. Use SetSize() to change the number of entries before use this instance. This constructor is required by the stObject interface. Definition at line 120 of file stBasicObjects.h. Referenced by stBasicArrayObject< DataType, OIDType >::Clone(). |
|
|
Creates a new instance of this class with n entries. If the parameter data is not NULL, the content pointed by it will be used to initializate this instance.
Definition at line 135 of file stBasicObjects.h. References stBasicArrayObject< DataType, OIDType >::SetData(), and stSize. |
|
|
Disposes this instance and releases all associated resources. Definition at line 153 of file stBasicObjects.h. |
|
|
This method must create a clone (copy) of this class. The new instance must have the same behaviour of the original instance but can not keep any links to its creator (they are independent). In other words, the clone will not reflect any changes done in the original class.
Implements stObject. Definition at line 233 of file stBasicObjects.h. References stBasicArrayObject< DataType, OIDType >::SetOID(), and stBasicArrayObject< DataType, OIDType >::stBasicArrayObject(). |
|
|
Gets the value of the element at a given position.
|
|
|
Returns the pointer to the data array. Definition at line 174 of file stBasicObjects.h. |
|
|
Returns the OID associated with this instance.
Reimplemented from stObject. Definition at line 209 of file stBasicObjects.h. |
|
|
This method must return the size of the serialized version of this object in bytes.
Implements stObject. Definition at line 242 of file stBasicObjects.h. References stSize. |
|
|
Returns the number of the elements of this array. Definition at line 181 of file stBasicObjects.h. References stSize. |
|
|
This method must return True if the object in parameter is equal (has the same content) of the object that call it.
Implements stObject. |
|
|
This operator can be used to access all positions of the array for reading or writing.
Definition at line 192 of file stBasicObjects.h. |
|
|
This method must create a serialized version of this instance. The serialized version is an array of bytes that will hold all information required to rebuild this object. For example, if the object is a string, the serialized form may be the string itself without the terminator character (since it is a sequence of bytes). This array will be used by the SlimTree to store the object into a disk page and to recover it (by calling Unserialize()) and its size given by GetSerializedSize(). The effect of the of A->Unserialize(B->Serialize(), B->GetSerializedSize()) must be the same of A=B->Clone(). Implementation note: The SlimTree will not claim the ownership of the returned array. The object must dispose it when it is not required. In case of the serialized version be a pointer to an internal array, no copy operation will be necessary.
Implements stObject. Definition at line 249 of file stBasicObjects.h. References stByte. |
|
|
Copies the content of the array data to this object. The array pointed by data must have at least GetSize() entries.
Definition at line 166 of file stBasicObjects.h. Referenced by stBasicArrayObject< DataType, OIDType >::stBasicArrayObject(). |
|
|
Sets the OID associated with this instance.
Definition at line 223 of file stBasicObjects.h. Referenced by stBasicArrayObject< DataType, OIDType >::Clone(). |
|
|
This method must rebuild the object from its serialized version. The serialized version is an array of bytes that holds all information required to rebuild an object. For example, if the object is a string, the serialized form may be the string itself without the terminator character (since it is a sequence of bytes). This method will be used by the SlimTree to rebuild the object to compare it with another object (the sample object in a query or another rebuilt object). The effect of the of A->Unserialize(B->Serialize(), B->GetSerializedSize()) must be the same of A=B->Clone(). Implementation note: The SlimTree is the owner of the data array. This means that this array may vanish at any time after the call of Unserialize(). There is also another restriction. The Unserialize() method must never modify the contents of the data array.
Implements stObject. Definition at line 256 of file stBasicObjects.h. |


Have you fallen in love with Beetle?
Buy it now!Google Maps API
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
ExploreLanding page
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.
ExploreThe Best Team in the World
Testimonials
Have you fallen in love with Beetle?
Buy it now!


#include <stDBMNode.h>
Public Member Functions | |
| stDBMMemNode (stSize pageSize, stCount numberOfEntries=32) | |
| ~stDBMMemNode () | |
| stCount | GetNumberOfEntries () |
| stDBMMemNodeEntry & | GetEntry (stCount idx) |
| stCount | GetNEntries (stCount idx) |
| void | SetNEntries (stCount idx, stCount NEntries) |
| stDistance | GetRadius (stCount idx) |
| void | SetRadius (stCount idx, stDistance radius) |
| int | AddEntry (stSize size, ObjectType *object, stPageID subTree) |
| void | SetEntry (stCount idx, stDistance distance, stDistance radius) |
| void | RemoveEntry (stCount idx) |
| void | RemoveAll () |
| stDistance | GetMinimumRadius () |
| stSize | GetFree () |
| stSize | GetUsed () |
Since all objects are stored using their implementation (not the serialized form), this class is very useful to optimize heavy object manipulations such as MinMax algorithms.
By the other side, this class will unserialize all objects of the node without exceptions. Due to that, the use of this class is not recommended for procedures with low rate of object unserializations/serializations. Another disadvantage of this class is the potential high memory usage.
Definition at line 462 of file stDBMNode.h.
|
|
Creates a new instance of this class. The parameter page is an instance of stPage that hold the node data. The parameter create tells to stPage what operation will be performed. True means that the page will be initialized and false means that the page will be used as it is. The default value is false.
|
|
|
Release all resources associate. Definition at line 516 of file stDBMNode.h. |
|
|
Adds a new entry to this node. This method will return the idx of the new node or a negative value for failure. This method will fail if there is not enough space to hold the new object. If you have added a new entry successfully, you may edit the entry fields using the method GetEntry().
|
|
|
Returns the reference of the desired entry. You may use this method to read and modify the entry information.
Definition at line 542 of file stDBMNode.h. |
|
|
Returns the amount of the free space in this node. Definition at line 693 of file stDBMNode.h. |
|
|
Returns the minimum radius of this node. |
|
|
Returns the number of entries that this subtree has. This parameter does not make sense if the object is not a representative object.
Definition at line 560 of file stDBMNode.h. |
|
|
Returns the number of entries in this node.
Definition at line 526 of file stDBMNode.h. |
|
|
Returns the radius of the subtree. This parameter does not make sense if the object is not a representative object.
Definition at line 596 of file stDBMNode.h. |
|
|
Returns the amount of the space used. |
|
|
Remove All entries. |
|
|
Removes an entry from this object.
|
|
|
Sets the fields of the Entry in idx location. Definition at line 647 of file stDBMNode.h. |
|
|
Sets the number of entries that this subtree has. This parameter does not make sense if the object is not a representative object.
Definition at line 578 of file stDBMNode.h. |
|
|
Sets the radius of the subtree. This parameter does not make sense if the object is not a representative object.
Definition at line 614 of file stDBMNode.h. |


MOBO Awards to return in 2020 after two year break
"We are returning with even more determination and energy."
The MOBOs will return with their biggest event yet in 2020, after the awards ceremony took a two year break.
The ceremony will return to London’s SSE Arena Wembley on November 12 2020, with organisers promising “more determination and energy” than ever before.
MOBO founder Kanya King said: “We felt empowered to bring MOBO back to Brent to coincide with the borough’s Year of Culture because this is where our fight to challenge the status quo to create a level playing field started.
“We are returning with even more determination and energy to support and boost our culture wherever we can.”
King added: “2020 will see many positive changes that will impact more and more talented young people – very proud to be back and to help ensure that the younger generation will also dare to dream.”
The landmark ceremony, which celebrates music of black origin from across the globe, has previously see appearances from the likes of Jay-Z, Beyonce and Stormzy.
Tickets are also on sale now, ranging from £25 to £49 and you can buy them here.
It comes after the ceremony took a break in 2018 and 2019, with organisers teasing the “evolution” of the event.
“The evolution of the MOBO Awards is always at the forefront of our mind and we want to ensure that we continue to build on the strong foundation of the brand and its heritage for a wider purpose and bigger impact,” organisers said at the time.
The last event in 2017 saw victories for Stormzy, J Hus and Dave.


This year, for the first time ever, we asked members of the Ionic community to tell us about the tools and technologies they use to develop Ionic apps, and what types of apps they’re building.
More than 13,000 developers shared their story.
The results reveal some very interesting trends that, we hope, will serve Ionic community members and vendors alike. While we encourage you to check out the data yourself, here are the top insights and observations from our team at Ionic.
App Trends
Hybrid dev is taking over.
Two years ago, 20% of developers surveyed were building exclusively with native tools instead of hybrid. In the next two years, that number is only 2.9% - a nearly 7x decrease. Similarly, the number of hybrid-built apps is growing as a share of overall app development. In the next two years, 32.7% of developers surveyed expect to completely abandon native development in favor of hybrid.
The broader trend is that hybrid development is gaining traction, while the native approach is waning. We think that makes sense. The benefits of hybrid are obvious. And as the web evolves, there are fewer and fewer reasons not to adopt.
More than just consumer apps.
Many enterprises focused on B2E.
The types of apps being built for commercial purposes aren't just consumer apps, althought that remains a dominant use case. A large percentage of apps being built with Ionic (41.7%) are actually for internal-use apps. This is consistent with a broader trend in the enterprise, where the value of mobile extends beyond the essential flagship consumer app. More and more, older legacy systems are steadily being replaced - or modernized - with mobile experiences that make employees happier, and more productive.
PWAs? Yes.
Wearables and smart devices? No.
There’s been a lot of talk about wearables and other smart devices, but the data shows that app development on these platforms is still very nascent. Only 3% of developers are building for smartwatches, and even fewer (2.7%) for TVs.
And for all the talk about tablets taking over the world, they still accounted for less than half (45%) of responses - while Android was targeted by 94.3% of developers, and 83.2% for iOS.
Finally, 31.5% of developers are targeting progressive web apps. That’s a big jump for something the dev community just started talking about two years ago. Meanwhile, responsive web apps were targeted by 34.7% of respondents. What’s driving this trend? Part of it could be app fatigue among consumers who care more about mobile experiences and less about installing yet another app, and developers who want their apps to run on mobile and desktop web environments, not just in the app stores.
Overall, we see this as validation for two things that Ionic has been saying for awhile: mobile remains the killer platform, and web is the future.
Tools of the Trade
Firebase tops hosted backend services.
Google’s Firebase is the clear winner in backend services. For push notifications, Firebase was used by 41.3% of Ionic devs, while AWS was used by just 8.2%. There was a similar disparity between Firebase Auth and Amazon Cognito (30% vs. 2.5%). And Firebase topped the list of hosted backend databases, with 32.4% of developers using it compared to a combined 11.5% for Amazon DynamoDB and RDS.
Our take: The Firebase strategy of focusing on ease of use, and adding services on top of their free DB, appears to be working.
Node dominates and Google owns analytics.
The survey results confirmed some previously held beliefs. Node.js is the dominant choice (56.6% of devs) when it comes to backend technology. And Google owns the analytics space, with Google Analytics and Firebase Analytics emerging as clear winners (used by 68.3% and 24.9% of devs, respectively).
Microsoft winning over devs with VS Code.
VS Code was launched two years ago at the 2015 Microsoft Build conference. Aimed at cross-platform developers, Code was touted for its speed (fast), size (small), and advanced debugging features.
Fast-forward two years, and adoption of Code has grown to nearly half of the developers we surveyed (46.7%) - by far the most widely adopted among Editors and IDEs on the list. Sublime, Atom, and Webstorm trail as the next most popular code editors.
Add to that the 12.7% of devs using Visual Studio IDE, and it looks like Microsoft has really won over developers with its code editing and development toolsets. Of course, it doesn’t hurt that Microsoft is the reference editor for common tools like TypeScript, which may have helped them become the defacto text editor.
Dev Habits
Device testing in the cloud is still nascent.
Device testing is one of the most challenging aspects of mobile app development. Even in larger teams, no one has enough devices to cover every scenario.
With access to large device farms, AWS, Firebase, and others like Browserstack and Sauce Labs, have emerged as a way to move device testing to the cloud and gain much better test coverage in the process.
And yet, an overwhelming majority of devs we surveyed (65.1%) are not using any cloud device testing services. Time will tell if these services take off, or remain a niche offering.
Real-time remote updates gaining traction.
The survey results show that most developers (53.2%) are still pushing app updates the traditional way - through the App Stores.
Meanwhile, some are embracing rapid real-time updates that are made possible with hybrid apps. Using tools like Ionic Deploy and PhoneGap ContentSync, apps can be updated - at the web layer - remotely, outside of the App Store, though still in compliance with Apple and Android standards.
We expect to see adoption of real-time remote updates increasing over the next year.
Ionic Developers care about design.
We were a bit surprised to see how many devs are using prototyping tools as part of their development flow. This is a good sign that developers care about design, and have embraced rapid prototyping tools that help them get their ideas out on paper, before engaging in costly development work.
Ionic Creator was cited as a popular prototyping tool of choice (used by 22.8% of respondents), followed by popular design solutions Sketch (17.6%), Balsamiq (12%), and Invision (10.1%).
Almost half of participants not tracking errors and crashes.
A surprising percentage of developers surveyed (44%) reported that that they aren’t tracking errors or crashes in the apps they’re building. This sizable gap in adoption suggest there is some disillusionment in the tools that exist today. One possible explanation is that native crash tools are less effective when it comes to understanding the web layer. If true, the market for crash reporting in hybrid apps is still up for grabs.
Who’s building apps with Ionic
Web developers are moving to mobile.
We asked respondents to tell us about their development background. Nearly 80% of 13,000+ Ionic developers who took the survey identify themselves as web developers. An additional 10.8% identified as newbies learning to develop mobile apps for the first time, while a sizable percentage (8.4%) described themselves as “born-and-bred" mobile developers.
Overall, the data suggests that Ionic serves a broad cross-section of the developer community - from newbies to hardcore devs. It’s also clear that Ionic is fulfilling its mission to help web developers participate in the thriving mobile app economy. By embracing the power of open web technologies, Ionic is helping the vast web developer community build mobile experiences using tools they already know and love. We’re excited to see that the approach seems to be working.
Mostly building for commercial use.
The vast majority of Ionic devs (75.2%) are building apps for commercial use. By far the biggest segment of developers we surveyed (41.9%) were contract developers and dev shops building on behalf of their clients, while many others (33.3%) were building apps for their company. The companies they represent range from solo shops to large enterprises.
Big Picture
The web is winning. 🎉
Looking at the big picture from this year’s results, the broader trend is the web is winning. Hybrid apps are beginning to dominate. Progressive web apps are catching on faster than we anticipated. And more and more web developers are moving into the mobile space. Most importantly, “cross-platform” doesn’t just mean iOS and Android. It means a consistent experience across mobile and desktop, web and app store, phone and tablet.
Of course, we’re not too surprised. Developers building hybrid apps and PWAs are taking advantage of the single most adopted, tested, and dominant technology stack in the world: The Web. Ionic has always bet on the web, and it looks like we’re not alone.
—
Survey Results
Data from the survey is available below. Feel free to interact, play, and form your own conclusions!
Backend Technology
What services do you use to send Push Notifications?
How do you manage user authentication?
What database(s) do you use for your backend?
How do you host the server-side of your app?
What backend technology does your app run on?
What service do you use for Analytics?
How do you test your app in the cloud?
How do you track errors and crashes in your app?
How do you update your apps remotely?
Tools and Testing
What Text Editor or IDE do you use?
Use any App Prototyping tools?
How do you beta test and gather feedback?
How do you distribute your apps to users?
Meta Stuff
What platform do you develop your apps on?

Who are you building apps for?
How many Ionic apps have you built?
What kind of apps are you building?
What platforms do you target?
What is your background?
What version of Ionic are you using?
In the past two years, what percentage of your apps were hybrid (mix
of web and native code)?
What percentage do you expect in the next two years?
Methodology
The Ionic Developer Survey was fielded from February 2017 to June 2017. A total of 13,248 respondents completed the survey during that period. Responses were collected directly by Ionic using Google Forms. Analysis of the results was performed by Ionic following completion of the survey in June 2017.


{{description}}
{{#exampleUrl}}
…while trying to load the search results.
We apologize for the inconvenience caused.
Please try again later.
We could not find any results matching your search query.


The xi editor project is an attempt to build a high quality text editor, using modern software engineering techniques. It is initially built for Mac OS X, using Cocoa for the user interface. There are also frontends for other operating systems available from third-party developers.
Goals include:
Incredibly high performance. All editing operations should commit and paint in under 16ms. The editor should never make you wait for anything.
Beauty. The editor should fit well on a modern desktop, and not look like a throwback from the '80s or '90s. Text drawing should be done with the best technology available (Core Text on Mac, DirectWrite on Windows, etc.), and support Unicode fully.
Reliability. Crashing, hanging, or losing work should never happen.
Developer friendliness. It should be easy to customize xi editor, whether by adding plug-ins or hacking on the core.


Application Vetting
Enterprises can vet applications for exploitable vulnerabilities or unwanted (privacy-invasive or malicious) behaviors. Enterprises can inspect applications themselves or use a third-party service.
Enterprises may impose policies to only allow pre-approved applications to be installed on their devices or may impose policies to block use of specific applications known to have issues. In Bring Your Own Device (BYOD) environments, enterprises may only be able to impose these policies over an enterprise-managed portion of the device.
Application Vetting is not a complete mitigation. Techniques such as Detect App Analysis Environment exist that can enable adversaries to bypass vetting.
ID: M1005
Version: 1.0
Techniques Addressed by Mitigation
| Domain | ID | Name | Description |
|---|---|---|---|
| Mobile | T1453 | Abuse Accessibility Features | Enterprises could perform app vetting before allowing apps to be installed on devices and search for abuse of accessibility features as part of the analysis, or otherwise use mobile app reputation services to search for known malicious apps. |
| Mobile | T1401 | Abuse Device Administrator Access to Prevent Removal | It is rare for applications to utilize Device Administrator access. App vetting can detect apps that do so, and those apps should be closely scrutinized. Maggi and Zanero describe a static analysis approach that can be used to identify ransomware apps including apps that abuse Device Administrator access. [2] |
| Mobile | T1435 | Access Calendar Entries | On Android, accessing device calendar data requires that the app hold the READ_CALENDAR permission. Apps that request this permission could be closely scrutinized to ensure that the request is appropriate. On iOS, the app vetting process can determine whether apps access device calendar data, with extra scrutiny applied to any that do so. |
| Mobile | T1433 | Access Call Log | On Android, accessing the device call log requires that the app hold the READ_CALL_LOG permission. Apps that request this permission could be closely scrutinized to ensure that the request is appropriate. |
| Mobile | T1432 | Access Contact List | On Android, accessing the device contact list requires that the app hold the READ_CONTACTS permission. Apps that request this permission could be closely scrutinized to ensure that the request is appropriate. On iOS, the app vetting process can determine whether apps access the device contact list, with extra scrutiny applied to any that do so. |
| Mobile | T1413 | Access Sensitive Data in Device Logs | |
| Mobile | T1409 | Access Sensitive Data or Credentials in Files | Ensure that applications do not store sensitive data or credentials insecurely (e.g., with insecure file permissions or in an insecure location such as external data storage). |
| Mobile | T1416 | Android Intent Hijacking | When vetting applications for potential security weaknesses, the vetting process could look for insecure use of intents. Developers should be encouraged to use techniques to ensure that the intent can only be sent to an appropriate destination (e.g., use explicit rather than implicit intents, permission checking, checking of the destination app's signing certificate, or the App Links feature added in Android 6.0). For mobile applications using OAuth, encourage use of best practice. [5] [4] |
| Mobile | T1402 | App Auto-Start at Device Boot | Enterprises could potentially vet apps before allowing their use on devices, and carefully scrutinize apps that declare a BroadcastReceiver containing an intent-filter for BOOT_COMPLETED. Unfortunately this is likely not practical due to the vast number of apps with this behavior. |
| Mobile | T1418 | Application Discovery | Application vetting techniques could search for use of the Android PackageManager class to enumerate other apps, and such applications could have extra scrutiny applied to them. However, this technique may not be practical if many apps invoke these methods as part of their legitimate behavior. On iOS, application vetting techniques could similarly search for use of the private API call necessary to obtain a list of apps installed on the device. Additionally, on iOS, use of the private API call is likely to result in the app not being accepted into Apple's App Store. |
| Mobile | T1414 | Capture Clipboard Data | |
| Mobile | T1412 | Capture SMS Messages | Enterprises performing application vetting could search for applications that declare the RECEIVE_SMS permission and scrutinize them closely. |
| Mobile | T1475 | Deliver Malicious App via Authorized App Store | App store operators and enterprises could assess reputational characteristics of the app, including the popularity of the app or other apps from the same developer and whether or not security issues have been found in other apps from the same developer. |
| Mobile | T1419 | Device Type Discovery | App vetting procedures can search for apps that use the android.os.Build class, but these procedures could potentially be evaded and are likely not practical in this case, as many apps are likely to use this functionality as part of their legitimate behavior. |
| Mobile | T1407 | Download New Code at Runtime | Application vetting techniques could (either statically or dynamically) look for indications that the application downloads and executes new code at runtime (e.g., on Android use of DexClassLoader, System.load, or the WebView JavaScriptInterface capability, or on iOS use of JSPatch or similar capabilities). Unfortunately, this is only a partial mitigation, as additional scrutiny would still need to be applied to applications that use these techniques, as the techniques are often used without malicious intent, and because applications may employ other techniques such as to hide their use of these techniques. |
| Mobile | T1471 | Encrypt Files | Maggi and Zanero describe a static analysis approach that may be able to identify ransomware apps that encrypt user files on the device. [2] |
| Mobile | T1404 | Exploit OS Vulnerability | Application vetting may be able to identify the presence of exploit code within applications. |
| Mobile | T1405 | Exploit TEE Vulnerability | |
| Mobile | T1472 | Generate Fraudulent Advertising Revenue | |
| Mobile | T1430 | Location Tracking | On Android, applications must request the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to access the device's physical location. Extra scrutiny could be given to applications that request these permissions. On iOS, calls to the relevant APIs could be detected during the vetting process. |
| Mobile | T1446 | Lock User Out of Device | It is rare for applications to utilize Device Administrator access. App vetting can detect apps that do so, and those apps should be closely scrutinized. Maggi and Zanero4 describe a static analysis approach that can be used to identify ransomware apps including apps that abuse Device Administrator access. [2] |
| Mobile | T1417 | Malicious Third Party Keyboard App | It is rare for apps to register themselves as a device keyboard. Apps that do so should be closely scrutinized during the vetting process. |
| Mobile | T1463 | Manipulate Device Communication | Application vetting techniques can scan for use of cleartext communication, insecure TrustManager implementations, and other potential network communication weaknesses. The Google Play Store now automatically assesses submitted applications for insecure TrustManager implementations. [1] |
| Mobile | T1429 | Microphone or Camera Recordings | On Android, applications must request the RECORD_AUDIO permission to access the microphone and the CAMERA permission to access the camera. Extra scrutiny could be given to applications that request these permissions. On iOS, calls to the relevant APIs could be detected during the vetting process. |
| Mobile | T1410 | Network Traffic Capture or Redirection | Closely scrutinize applications that request VPN access before allowing their use. |
| Mobile | T1406 | Obfuscated Files or Information | Application vetting techniques may be able to alert to the presence of obfuscated or encrypted code in applications, and such applications could have extra scrutiny applied. Unfortunately, this mitigation is likely impractical, as many legitimate applications apply code obfuscation or encryption to resist adversary techniques such as Repackaged Application. Dynamic analysis when used in application vetting may in some cases be able to identify malicious code in obfuscated or encrypted form by detecting the code at execution time (after it is deobfuscated or decrypted). Some application vetting techniques apply reputation analysis of the application developer and can alert to potentially suspicious applications without actual examination of application code. |
| Mobile | T1448 | Premium SMS Toll Fraud | |
| Mobile | T1424 | Process Discovery | Application vetting techniques could be used to attempt to identify applications with this behavior. |
| Mobile | T1422 | System Network Configuration Discovery | Application vetting could be used to analyze applications to determine whether they access this information, including determining whether the application requests the Android ACCESS_NETWORK_STATE permission (required in order to access NetworkInterface information) or the READ_PHONE_STATE permission (required in order to access TelephonyManager information). |
| Mobile | T1421 | System Network Connections Discovery | During application vetting, applications could be examined to see if they have this behavior, and extra scrutiny could potentially be given to applications that do. |
| Mobile | T1415 | URL Scheme Hijacking | Check for potential malicious definitions of URL schemes when vetting applications. Also, when examining apps for potential vulnerabilities, encourage use of universal links as an alternative to URL schemes. When examining apps that use OAuth, encourage use of best practices. [3] [4] |
| Mobile | T1411 | User Interface Spoofing | |
| Mobile | T1447 | Wipe Device Data |
References
- Google. (n.d.). How to fix apps containing an unsafe implementation of TrustManager. Retrieved December 24, 2016.
- Federico Maggi and Stefano Zanero. (2016). Pocket-Sized Badness - Why Ransomware Comes as a Plot Twist in the Cat-Mouse Game. Retrieved December 21, 2016.
- Apple. (n.d.). Support Universal Links. Retrieved December 21, 2016.