As you develop your application, you should always consider how your design choices affect performance. Despite ongoing core improvements, mobile devices still face fundamental constraints in processing power, memory usage, and battery life. Therefore, performance and optimization is crucial to achieving faster response time, minimizing memory usage, and maximizing battery life.
In addition to this guide, please view the Cleaning Up Display Objects and Listeners tutorial.
Memory is a critical resource on mobile devices. Some devices may even terminate your application if you consume too much memory.
Eliminate memory leaks — your application should not have memory leaks. Although Lua handles memory management and cleanup automatically, memory leaks can still occur. For example, global variables are never considered garbage; it's up to you to tell Lua that these variables are garbage by setting them to nil
. Global variables are not recommended in general, but if you must use them for convenience, ensure that you remove them from memory when they're no longer needed.
Keep resource files as small as possible — resource files used by your application typically reside on the disk. They must be loaded into memory before they can be used. Images and audio files should be as small as possible. You should also reuse the same image assets whenever it's feasible. For example, if you design a flip-style menu with the same background image for each page, you should use that image on all pages and layer the necessary foreground images over it. For more details, please see Conserving Texture Memory below.
Load resources lazily — avoid loading resource files until they're actually needed. While pre-loading resource files might seem like good practice, this can actually backfire because of how devices respond to low memory situations. One notable exception is audio files. In general, you should load sound effects for a particular scene or level before it begins, because loading them on demand can cause a slight skip during time-critical code. For more information, see Managing Audio below.
Remove objects from the display hierarchy — when a display object is created, it is implicitly added to the display hierarchy. When you no longer need a display object, you should remove it from the display hierarchy and set its reference to nil
. This makes the object eligible for garbage collection. However, this is no guarantee that the object will be removed from memory. If other variables in memory reference the display object, Lua will not consider it garbage. See the Display Objects guide for more information on removing objects.
Battery life is inherently limited on mobile devices because of their small form factor. You can improve battery life by adhering to the following practices.
Network access consumes a considerable amount of power. You can minimize the impact of network traffic by following these guidelines:
Do not "poll"; instead, connect to external network servers only when necessary.
Optimize the data that you transmit so it's as small as possible.
Transmit in bursts. More power is consumed the longer the network is actively transmitting data. It's better to transmit data in bursts rather than spreading it out into smaller transmission packets over time.
GPS and accelerometer hardware also consumes power. If you access location data via GPS, stop collecting it when you have the data you need. If you use the accelerometer, try to limit it to scenes where it's essential for the desired functionality.
Disk access — reading and writing files to the device's local disk — should be handled similarly to network access. It's better to transmit larger packets of data to/from the disk rather than spreading it out over numerous smaller transactions.
If you need to set or transition a specific property of several display objects to the same value — for example, fade an entire overlay menu to alpha=0
— it's better to add the objects to a display group and modify the property of the entire group. It's easier to code and it optimizes memory and speed. See the Display Groups and Coordinates guide for more information.
If you're using sprite animations, a common oversight is allowing offscreen or invisible sprites to continue animating. While these sprites may not be visible to the user, they'll continue to use processor power while animating. We suggest that you pause all animations that move off the screen or otherwise become inactive.
Texture memory is too often ignored until it reaches "critical mass," at which point it's difficult and time-consuming to make the required changes to art assets.
In regards to texture memory, 8-bit or 24-bit PNG images all unpack into 32-bit images. They are rectangular arrays of pixels and there are effectively 4 color arrays (channels) per image: red, green, blue, and alpha (RGB+A).
In OpenGL, textures obey the Power of 2 (PoT) rule. This means that any texture rounds up to the next highest Power of 2 (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, etc.) in terms of the texture memory it occupies. Thus, an image sized 320×480 and another sized 280×400 will both consume 512×512 of texture memory. Note that the next highest PoT occurs independently on either the horizontal or vertical, and the effective size does not always adhere to a "square" configuration — thus, an image sized 920×40 will round up to 1024×64 in required texture memory, not 1024×1024.
While this might seem innocuous at first glance, the actual memory consumption is dictated by both the PoT size and the 4 color channels. This means that each pixel in the texture array requires 4 bytes of memory, and it adds up quickly:
Image(sheet) sized 350×500:
512×512 (pixels) × 4 (bytes) = 1,048,576 bytes = 1 MB
Image(sheet) sized 514×1024:
1024×1024 (pixels) × 4 (bytes) = 4,194,304 bytes = 4 MB
Notice that the next PoT up requires four times the texture memory! This is even more concerning when developing for both "normal" devices and Retina/HD devices. If the pixel density between two devices is double, as with the iPad vs. the Retina iPad, all images will likewise need to double in size to keep them crisp and sharp. However, doubling their size requires more than double the texture memory — 4× in the above example — and in general, Retina/HD devices do not contain 4× the texture memory compared to their predecessors.
With this in mind, texture memory can usually be managed without an excessive amount of effort. Just remember these tips:
Always unload textures (remove them from the display hierarchy) when they're no longer needed.
If you have a background texture that needs to be 525×600 on the screen, consider creating it as a proportional 448×512 image to constrain it to the 512 PoT range. Then, in code, scale it up slightly by setting its desired width and height. If it's just a small increase in size, the minor loss of clarity likely won't be perceived by the user, especially on a small phone screen.
If you're using image sheets, consider using a tool like TexturePacker to pack your images into the smallest PoT configuration possible.
There is also a limit on the maximum texture size that a device will support. If you exceed this limit, the texture will either fail to load or the application will crash. You can use the system.getInfo( "maxTextureSize" )
command to determine the maximum texture size for a particular device. See system.getInfo() for more information.
At the code level, you should adhere to as many Lua optimizations as possible. Most of the performance tricks below pertain primarily to time-critical routines — that is, points in your app where there is a lot happening or where the user experience could be adversely affected by sluggish performance. However, every bit helps and we suggest that you follow these as a habit.
While avoiding global variables and functions isn't always possible across the board, minimal usage is the best practice. Access to local variables and functions is simply faster, especially in time-critical routines.
--NON-LOCAL (DISCOURAGED)
CCX = display.contentCenterX --global variable
for i = 1,100 do
local image = display.newImage( "myImage" )
image.x = CCX
end
--LOCAL (RECOMMENDED)
local CCX = display.contentCenterX --local variable
for i = 1,100 do
local image = display.newImage( "myImage" )
image.x = CCX
end
This also applies to core Lua libraries like the math
library. In time-critical routines, you should always localize library functions.
--NON-LOCAL (DISCOURAGED)
local function foo( x )
for i = 1,100 do
x = x + math.sin(i)
end
return x
end
--"EXTERNAL" LOCAL (RECOMMENDED)
local sin = math.sin --local reference to 'math.sin'
local function foo(x)
for i = 1,100 do
x = x + sin(i)
end
return x
end
Finally, remember that functions should be localized whenever possible. Of course, this will require proper scoping. If you're new to Lua, please refer to Understanding Scope for Beginners.
--NON-LOCAL (DISCOURAGED)
function func1()
func2( "myValue" )
end
function func2( y )
print( y )
end
func1()
--LOCAL (RECOMMENDED)
local function func2( y ) --'func2' properly scoped above 'func1'
print( y )
end
local function func1()
func2( "myValue" )
end
func1()
Let's compare four methods that all achieve the same thing: the common act of inserting values into a table. Of the four, the Lua table.insert()
function is a mediocre performer and should be avoided.
--table.insert() (DISCOURAGED)
local a = {}
local table_insert = table.insert
for i = 1,100 do
table_insert( a, i )
end
--LOOP INDEX METHOD (RECOMMENDED)
local a = {}
for i = 1,100 do
a[i] = i
end
--TABLE SIZE METHOD (ACCEPTABLE)
local a = {}
for i = 1,100 do
a[#a+1] = i
end
--COUNTER METHOD (RECOMMENDED)
local a = {}
local index = 1
for i = 1,100 do
a[index] = i
index = index+1
end
The Lua unpack()
function is not a great performer. Fortunately, a simple loop can be written to accomplish the same thing.
--unpack() (DISCOURAGED)
local a = { 100, 200, 300, 400 }
for i = 1,100 do
print( unpack(a) )
end
--LOOP METHOD (RECOMMENDED)
local a = { 100, 200, 300, 400 }
for i = 1,100 do
print( a[1],a[2],a[3],a[4] )
end
The caveat is that you must know the length of the table to retrieve all of its values in the loop method. Thus, unpack()
still has its uses — in a table of unknown length, for example — but it should be avoided in time-critical routines.
When iterating through a table, the overhead of the Lua ipairs()
function does not justify its use, especially when you can accomplish the same thing using a Lua construct.
--ipairs() (DISCOURAGED)
local t1 = {}
local t2 = {}
local t3 = {}
local t4 = {}
local a = { t1, t2, t3, t4 }
for i,v in ipairs( a ) do
print( i,v )
end
--LUA CONSTRUCT (RECOMMENDED)
local t1 = {}
local t2 = {}
local t3 = {}
local t4 = {}
local a = { t1, t2, t3, t4 }
for i = 1,#a do
print( a[i] )
end
Certain mathematical functions and processes are faster than others. For example, multiplication is faster than division and you should multiply by a decimal instead of dividing.
--MULTIPLICATION BY DECIMAL (RECOMMENDED)
x * 0.5 ; y * 0.125
--DIVISION (DISCOURAGED)
x/2 ; y/8
Multiplication is also faster than exponentiation:
--MULTIPLICATION (RECOMMENDED)
x * x * x
--EXPONENTIATION (DISCOURAGED)
x^3
Finally, avoid math.fmod()
for positive numbers and use the modulus operator instead:
--math.fmod() (DISCOURAGED)
local fmod = math.fmod
for i = 1,100 do
if ( fmod( i,30 ) < 1 ) then
local x = 1
end
end
--MODULUS OPERATOR (RECOMMENDED)
for i = 1,100 do
if ( ( i%30 ) < 1 ) then
local x = 1
end
end
Sound effects for an app should almost always be pre-loaded in non-time-critical code, for example, before a scene or level begins. Additionally, you should compress/sample sounds to the smallest acceptable quality in most cases. 11khz mono (not stereo) is considered acceptable in most cases, since the user will likely be listening through the phone/tablet speaker or earbuds. Also, using simple, cross-platform formats like WAV do not tax the CPU heavily.
If desired, sound effects can be organized in a table as follows, for easy reference and eventual disposal.
local soundTable = {
mySound1 = audio.loadSound( "a.wav" ),
mySound2 = audio.loadSound( "b.wav" ),
mySound3 = audio.loadSound( "c.wav" ),
mySound4 = audio.loadSound( "d.wav" ),
mySound5 = audio.loadSound( "e.wav" ),
mySound6 = audio.loadSound( "f.wav" ),
mySound7 = audio.loadSound( "g.wav" ),
mySound8 = audio.loadSound( "h.wav" ),
}
With this structure, playback is as simple as:
local mySound = audio.play( soundTable["mySound1"] )
Remember, you must dispose of audio files when they're no longer needed and clear any references to them.
local ST = soundTable
for s,v in pairs(ST) do
audio.dispose( ST[s] ) ; ST[s] = nil
end


Card1
Card is-hoverable.is-shadowable
Card is-shadowable
Card is-clickable
Card is-active
Card is-disabled


Description
The brown thrasher is a fairly bird and can be up to about a foot in length! You can often quickly identify these songbirds by their foxy-red coats, spotted white and brown on their belly, flying in out of low lying shrubbery, and pecking away at insects in your lawn. These songbirds have a wide range of songs, though their range of notes may be far less impressive.
They use their curved beaks to eat berries and brush aside soil to find beetles, worms and many other creatures that live in soft topsoil.
Habitat
The brown thrasher can be found in the eastern parts of the United States of America and more so in the southeast reaches of nation. They prefer low lying areas plentiful with brush and shrubbery. This means you will find them in almost any thicket, just outside of any woods, and often in the suburbs.
Nesting
Thrashers prefer to nest in low lying shrubs. They provide some protection from potential predators such as snakes and are typically close to other berry producing plants.
They have between 3 to 5 light blue eggs. Both parents stay and assist in both nesting the eggs and feeding after birth.
Migration
If you live in the southeast, you have the chance to spot, feed, and shoo away the brown thrasher all year long. When it is summer, they can be found as far north as Canada during their breeding season. During the winter they often remain in the southeast and often as far west as Texas and in parts of New Mexico.


U.S. polo assn. full sleev plain tshirt for man
$120.00
Qty:1
size:Medium/large
Cart subtotal:
$168.20
Free delivery worldwide
Free return for 90 days
discount on order gift
full sleeve plain tshirt for man
� 2017 eShopper online store. All rights reserved


climate biodiversity ERA-LAC change publications LAC countries research interface ERA number scientific Fig collaboration European cooperation diversity, {border-style px;} #ffffff;} network global international Latin Research collaborations country study change. development networks America Climate North analysis co-publications like publication studies (e.g., change, common earth sciences Science biological different human increased papers proportion regional total Biodiversity Brazil Caribbean Change corresponding px; science scientists {font-family France However, Sciences Temporal Union domains ecosystem font-size funding increase issues links major performed projects researchers species topics ALCUE-Net America, Conservation Europe [], based better bilateral centrality countries. disciplines double; funded i.e. identified importance level published technology temporal using < Africa, Asia Mexico Overall, Publications betweenness border-color border-width co-authorship collaborative countries, including increasingly interdisciplinarity interdisciplinary network, nodes programmes promoted publications) publications), publications). publications. sciences, solid; used variation {font-style {font-weight (A) (B) BiodivERsA Collaboration Dangles ERA. Intergovernmental Italy LAC, LAC. Mapping Mexico, Moreover, Oceania, Oxford Press; Recherche Saint University addressed bi-regional bold capacity co-publication collab: complex courier; data developed edge em; evolution example, exponential following functional innovation involving loss lower main maximum models need objective particular, paths period plus policy pour project promoting provide pt;} publications, recent regions related requires science, shortest social teams time units


{% extends 'productbase.html' %} {% load static %} {% block content %}
In a deflashing workcell, camera, lighting, and software combine with four-axis robot to perform process what you want..
Among the most common tasks in the industrial environment is picking objects. Objects often must be picked and placed to move them from one stage of industrial processing to another. Robots have proven effective in pick and place environments where all objects are of a similar size and their orientation can be reliably predicted.


McKinsey & Company is a management consulting firm whose mission is to help leaders make distinctive, lasting, and substantial improvements in performance, and constantly build a great firm that attracts, develops, excites, and retains exceptional people.
We have set the standards of excellence in top management consulting for more than 80 years. We advise decision makers in leading companies, the public sector, non-profit organizations, and innovative, fast-growing start-ups around the globe. In Germany alone, approximately 2,000 employees are dedicated to fulfilling our mission: to help clients achieve substantial and lasting improvements in their performance.

Job scope:
- Apply a broad range of creative problem-solving skills, combining technical and analytical excellence to help solve their piece of the overall client puzzle.

- Synthesize conclusions into recommendations and work directly with senior client leaders to implement change.

- Gain broad exposure to a variety of different industries and functional areas, which could include, but are not limited to: pharmaceuticals, retail, and telecommunications on issues such as operations, organization, strategy, and technology.

- Work closely with senior client executives and McKinsey colleagues in one of our most entrepreneurial environments, and help to develop sector-shaping and nation-transforming programs.

- Based in Hanoi, Vietnam

Skills:

- Strong persuasive communication skill

- Excellent command of English

- Extensive experience in rolling out implementation on a large scale and project management

- Superior problem solving and analytical skills

- Willing to work in a highly demanding and result-oriented team environment

- Exhibit self-motivation and highly service-orientated work ethic

- Demonstrated leadership

- Outstanding analytical and conceptual skills

- Other intrinsic skills: strategic management perspective, knowledge of business trends in Asia, strong interpersonal and communication skills, eagerness to travel and experience different cultures.

Qualifications: Requirements:
- MBA from top business school or Advanced Professional Degree

- Minimum of 2 years of working experience

- Excellent university degree

|

|

|

| | | | |


Search for GBIF occurrences - simplified for speed
occ_data(taxonKey = NULL, scientificName = NULL, country = NULL, publishingCountry = NULL, hasCoordinate = NULL, typeStatus = NULL, recordNumber = NULL, lastInterpreted = NULL, continent = NULL, geometry = NULL, geom_big = "asis", geom_size = 40, geom_n = 10, recordedBy = NULL, basisOfRecord = NULL, datasetKey = NULL, eventDate = NULL, catalogNumber = NULL, year = NULL, month = NULL, decimalLatitude = NULL, decimalLongitude = NULL, elevation = NULL, depth = NULL, institutionCode = NULL, collectionCode = NULL, hasGeospatialIssue = NULL, issue = NULL, search = NULL, mediaType = NULL, subgenusKey = NULL, repatriated = NULL, phylumKey = NULL, kingdomKey = NULL, classKey = NULL, orderKey = NULL, familyKey = NULL, genusKey = NULL, establishmentMeans = NULL, protocol = NULL, license = NULL, organismId = NULL, publishingOrg = NULL, stateProvince = NULL, waterBody = NULL, locality = NULL, limit = 500, start = 0, spellCheck = NULL, skip_validate = TRUE, curlopts = list())
| taxonKey | (numeric) A taxon key from the GBIF backbone. All included and synonym taxa are included in the search, so a search for aves with taxononKey=212 (i.e. /occurrence/search?taxonKey=212) will match all birds, no matter which species. You can pass many keys by passing occ_search in a call to an lapply-family function (see last example below). |
|---|---|
| scientificName | A scientific name from the GBIF backbone. All included and synonym taxa are included in the search. |
| country | The 2-letter country code (as per ISO-3166-1) of the country in which the occurrence was recorded. See here http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 |
| publishingCountry | The 2-letter country code (as per ISO-3166-1) of the country in which the occurrence was recorded. |
| hasCoordinate | (logical) Return only occurence records with lat/long data ( |
| typeStatus | Type status of the specimen. One of many options. See |
| recordNumber | Number recorded by collector of the data, different from GBIF record number. See http://rs.tdwg.org/dwc/terms/#recordNumber for more info |
| lastInterpreted | Date the record was last modified in GBIF, in ISO 8601 format: yyyy, yyyy-MM, yyyy-MM-dd, or MM-dd. Supports range queries, smaller,larger (e.g., '1990,1991', whereas '1991,1990' wouldn't work) |
| continent | Continent. One of africa, antarctica, asia, europe, north_america (North America includes the Caribbean and reachies down and includes Panama), oceania, or south_america |
| geometry | Searches for occurrences inside a polygon described in Well Known Text (WKT) format. A WKT shape written as either POINT, LINESTRING, LINEARRING POLYGON, or MULTIPOLYGON. Example of a polygon: POLYGON((30.1 10.1, 20, 20 40, 40 40, 30.1 10.1)) would be queried as http://bit.ly/1BzNwDq. See also the section WKT below. |
| geom_big | (character) One of "axe", "bbox", or "asis" (default). See Details. |
| geom_size | (integer) An integer indicating size of the cell. Default: 40. See Details. |
| geom_n | (integer) An integer indicating number of cells in each dimension. Default: 10. See Details. |
| recordedBy | The person who recorded the occurrence. |
| basisOfRecord | Basis of record, as defined in our BasisOfRecord enum here http://gbif.github.io/gbif-api/apidocs/org/gbif/api/vocabulary/BasisOfRecord.html Acceptable values are:
|
| datasetKey | The occurrence dataset key (a uuid) |
| eventDate | Occurrence date in ISO 8601 format: yyyy, yyyy-MM, yyyy-MM-dd, or MM-dd. Supports range queries, smaller,larger (e.g., '1990,1991', whereas '1991,1990' wouldn't work) |
| catalogNumber | An identifier of any form assigned by the source within a physical collection or digital dataset for the record which may not unique, but should be fairly unique in combination with the institution and collection code. |
| year | The 4 digit year. A year of 98 will be interpreted as AD 98. Supports range queries, smaller,larger (e.g., '1990,1991', whereas '1991,1990' wouldn't work) |
| month | The month of the year, starting with 1 for January. Supports range queries, smaller,larger (e.g., '1,2', whereas '2,1' wouldn't work) |
| decimalLatitude | Latitude in decimals between -90 and 90 based on WGS 84. Supports range queries, smaller,larger (e.g., '25,30', whereas '30,25' wouldn't work) |
| decimalLongitude | Longitude in decimals between -180 and 180 based on WGS 84. Supports range queries (e.g., '-0.4,-0.2', whereas '-0.2,-0.4' wouldn't work). |
| elevation | Elevation in meters above sea level. Supports range queries, smaller,larger (e.g., '5,30', whereas '30,5' wouldn't work) |
| depth | Depth in meters relative to elevation. For example 10 meters below a lake surface with given elevation. Supports range queries, smaller,larger (e.g., '5,30', whereas '30,5' wouldn't work) |
| institutionCode | An identifier of any form assigned by the source to identify the institution the record belongs to. Not guaranteed to be que. |
| collectionCode | An identifier of any form assigned by the source to identify the physical collection or digital dataset uniquely within the text of an institution. |
| hasGeospatialIssue | (logical) Includes/excludes occurrence records which contain spatial
issues (as determined in our record interpretation), i.e. |
| issue | (character) One or more of many possible issues with each occurrence record. See Details. Issues passed to this parameter filter results by the issue. |
| search | Query terms. The value for this parameter can be a simple word or a phrase. |
| mediaType | Media type. Default is NULL, so no filtering on mediatype. Options: NULL, 'MovingImage', 'Sound', and 'StillImage'. |
| subgenusKey | (numeric) Subgenus classification key. |
| repatriated | (character) Searches for records whose publishing country is different to the country where the record was recorded in. |
| phylumKey | (numeric) Phylum classification key. |
| kingdomKey | (numeric) Kingdom classification key. |
| classKey | (numeric) Class classification key. |
| orderKey | (numeric) Order classification key. |
| familyKey | (numeric) Family classification key. |
| genusKey | (numeric) Genus classification key. |
| establishmentMeans | (character) EstablishmentMeans, possible values include: INTRODUCED, INVASIVE, MANAGED, NATIVE, NATURALISED, UNCERTAIN |
| protocol | (character) Protocol or mechanism used to provide the occurrence record. See Details for possible values |
| license | (character) The type license applied to the dataset or record. Possible values: CC0_1_0, CC_BY_4_0, CC_BY_NC_4_0, UNSPECIFIED, and UNSUPPORTED |
| organismId | (numeric) An identifier for the Organism instance (as opposed to a particular digital record of the Organism). May be a globally unique identifier or an identifier specific to the data set. |
| publishingOrg | (character) The publishing organization key (a UUID). |
| stateProvince | (character) The name of the next smaller administrative region than country (state, province, canton, department, region, etc.) in which the Location occurs. |
| waterBody | (character) The name of the water body in which the locations occur |
| locality | (character) The specific description of the place. |
| limit | Number of records to return. Default: 500. Note that the per
request maximum is 300, but since we set it at 500 for the function, we
do two requests to get you the 500 records (if there are that many).
Note that there is a hard maximum of 200,000, which is calculated as the
|
| start | Record number to start at. Use in combination with limit to
page through results. Note that we do the paging internally for you, but
you can manually set the |
| spellCheck | (logical) If |
| skip_validate | (logical) whether to skip |
| curlopts | list of named curl options passed on to
|
| ... | additional facet parameters |
An object of class gbif_data
, which is a S3 class list, with
slots for metadata (meta
) and the occurrence data itself
(data
), and with attributes listing the user supplied arguments
and whether it was a "single" or "many" search; that is, if you supply
two values of the datasetKey
parameter to searches are done, and
it's a "many". meta
is a list of length four with offset, limit,
endOfRecords and count fields. data
is a tibble (aka data.frame)
protocol parameter options:
BIOCASE - A BioCASe protocl compliant service.
DIGIR - A DiGIR service endpoint.
DIGIR_MANIS - A DiGIR service slightly modified for the MANIS network.
DWC_ARCHIVE - A Darwin Core Archive as defined by the Darwin Core Text Guidelines.
EML - A single EML metadata document in any EML version.
FEED - Syndication feeds like RSS or ATOM of various flavors.
OAI_PMH - The Open Archives Initiative Protocol for Metadata Harvesting.
OTHER - Any other service not covered by this enum so far.
TAPIR - A TAPIR service.
TCS_RDF - Taxon Concept data given as RDF based on the TDWG ontology.
TCS_XML - A Taxon Concept Schema document.
WFS - An OGC Web Feature Service.
WMS - An OGC Web Map Service.
Multiple parmeters: Note that you can pass in a vector to one of taxonKey, scientificName, datasetKey, catalogNumber, recordedBy, geometry, country, publishingCountry, recordNumber, search, institutionCode, collectionCode, decimalLatitude, decimalLongitude, depth, year, typeStatus, lastInterpreted, continent, or mediatype parameters in a function call, but not a vector >1 of these parameters at the same time
Hierarchies: hierarchies are returned wih each occurrence object. There is no
option no to return them from the API. However, within the occ_search
function you can select whether to return just hierarchies, just data, all of
data and hiearchies and metadata, or just metadata. If all hierarchies are the
same we just return one for you.
Data: By default only three data fields are returned: name (the species name),
decimallatitude, and decimallongitude. Set parameter minimal=FALSE
if you want more data.
Nerds: You can pass parameters not defined in this function into the call to
the GBIF API to control things about the call itself using ...
. See an example below
that passes in the verbose
function to get details on the http call.
Scientific names vs. taxon keys: In the previous GBIF API and the version of rgbif that
wrapped that API, you could search the equivalent of this function with a species name, which
was convenient. However, names are messy right. So it sorta makes sense to sort out the species
key numbers you want exactly, and then get your occurrence data with this function. GBIF has
added a parameter scientificName to allow searches by scientific names in this function - which
includes synonym taxa. Note: that if you do use the scientificName parameter, we will
check internally that it's not a synonym of an accepted name, and if it is, we'll search on the
accepted name. If you want to force searching by a synonym do so by finding the GBIF identifier
first with any name_*
functions, then pass that ID to the taxonKey
parameter.
WKT: Examples of valid WKT objects:
'POLYGON((-19.5 34.1, 27.8 34.1, 35.9 68.1, -25.3 68.1, -19.5 34.1))'
'MULTIPOLYGON(((-123 38,-116 38,-116 43,-123 43,-123 38)),((-97 41,-93 41,-93 45,-97 45,-97 41)))'
'POINT(-120 40)'
'LINESTRING(3 4,10 50,20 25)'
'LINEARRING' ???' - Not sure how to specify this. Anyone?
Note that GBIF expects counter-clockwise winding order for WKT. You can
supply clockwise WKT, but GBIF treats it as an exclusion, so you get all
data not inside the WKT area. occ_download()
behaves differently
in that you should simply get no data back at all with clockwise WKT.
Long WKT: Options for handling long WKT strings:
Note that long WKT strings are specially handled when using occ_search
or
occ_data
. Here are the three options for long WKT strings (> 1500 characters),
set one of these three via the parameter geom_big
:
asis - the default setting. This means we don't do anything internally. That is, we just pass on your WKT string just as we've done before in this package.
axe - this option uses the geoaxe package to chop up your WKT string in
to many polygons, which then leads to a separate data request for each polygon piece,
then we combine all dat back together to give to you. Note that if your WKT string
is not of type polygon, we drop back to asis
as there's no way to chop up
linestrings, etc. This option will in most cases be slower than the other two options.
However, this polygon splitting approach won't have the problem of
the disconnect between how many records you want and what you actually get back as
with the bbox option.
This method uses chop
, which uses GridTopology
from
the sp package, which has two parameters cellsize
and cells.dim
that we use to chop up polygons. You can tweak those parameters here by tweaking
geom_size
and geom_n
. geom_size
seems to be more useful in
toggling the number of WKT strings you get back.
See wkt_parse
to manually break make WKT bounding box from a larger WKT
string, or break a larger WKT string into many smaller ones.
bbox - this option checks whether your WKT string is longer than 1500 characters,
and if it is we create a bounding box from the WKT, do the GBIF search with that
bounding box, then prune the resulting data to only those occurrences in your original
WKT string. There is a big caveat however. Because we create a bounding box from the WKT,
and the limit
parameter determines some subset of records to get, then when we
prune the resulting data to the WKT, the number of records you get could be less than
what you set with your limit
parameter. However, you could set the limit to be
high enough so that you get all records back found in that bounding box, then you'll
get all the records available within the WKT.
Range queries: A range query is as it sounds - you query on a range of values defined by
a lower and upper limit. Do a range query by specifying the lower and upper limit in a vector
like depth='50,100'
. It would be more R like to specify the range in a vector like
c(50,100)
, but that sort of syntax allows you to do many searches, one for each element in
the vector - thus range queries have to differ. The following parameters support range queries.
decimalLatitude
decimalLongitude
depth
elevation
eventDate
lastInterpreted
month
year
Issue: The options for the issue parameter (from http://gbif.github.io/gbif-api/apidocs/org/gbif/api/vocabulary/OccurrenceIssue.html):
BASIS_OF_RECORD_INVALID The given basis of record is impossible to interpret or seriously different from the recommended vocabulary.
CONTINENT_COUNTRY_MISMATCH The interpreted continent and country do not match up.
CONTINENT_DERIVED_FROM_COORDINATES The interpreted continent is based on the coordinates, not the verbatim string information.
CONTINENT_INVALID Uninterpretable continent values found.
COORDINATE_INVALID Coordinate value given in some form but GBIF is unable to interpret it.
COORDINATE_OUT_OF_RANGE Coordinate has invalid lat/lon values out of their decimal max range.
COORDINATE_REPROJECTED The original coordinate was successfully reprojected from a different geodetic datum to WGS84.
COORDINATE_REPROJECTION_FAILED The given decimal latitude and longitude could not be reprojected to WGS84 based on the provided datum.
COORDINATE_REPROJECTION_SUSPICIOUS Indicates successful coordinate reprojection according to provided datum, but which results in a datum shift larger than 0.1 decimal degrees.
COORDINATE_ROUNDED Original coordinate modified by rounding to 5 decimals.
COUNTRY_COORDINATE_MISMATCH The interpreted occurrence coordinates fall outside of the indicated country.
COUNTRY_DERIVED_FROM_COORDINATES The interpreted country is based on the coordinates, not the verbatim string information.
COUNTRY_INVALID Uninterpretable country values found.
COUNTRY_MISMATCH Interpreted country for dwc:country and dwc:countryCode contradict each other.
DEPTH_MIN_MAX_SWAPPED Set if supplied min>max
DEPTH_NON_NUMERIC Set if depth is a non numeric value
DEPTH_NOT_METRIC Set if supplied depth is not given in the metric system, for example using feet instead of meters
DEPTH_UNLIKELY Set if depth is larger than 11.000m or negative.
ELEVATION_MIN_MAX_SWAPPED Set if supplied min > max elevation
ELEVATION_NON_NUMERIC Set if elevation is a non numeric value
ELEVATION_NOT_METRIC Set if supplied elevation is not given in the metric system, for example using feet instead of meters
ELEVATION_UNLIKELY Set if elevation is above the troposphere (17km) or below 11km (Mariana Trench).
GEODETIC_DATUM_ASSUMED_WGS84 Indicating that the interpreted coordinates assume they are based on WGS84 datum as the datum was either not indicated or interpretable.
GEODETIC_DATUM_INVALID The geodetic datum given could not be interpreted.
IDENTIFIED_DATE_INVALID The date given for dwc:dateIdentified is invalid and cant be interpreted at all.
IDENTIFIED_DATE_UNLIKELY The date given for dwc:dateIdentified is in the future or before Linnean times (1700).
MODIFIED_DATE_INVALID A (partial) invalid date is given for dc:modified, such as a non existing date, invalid zero month, etc.
MODIFIED_DATE_UNLIKELY The date given for dc:modified is in the future or predates unix time (1970).
MULTIMEDIA_DATE_INVALID An invalid date is given for dc:created of a multimedia object.
MULTIMEDIA_URI_INVALID An invalid uri is given for a multimedia object.
PRESUMED_NEGATED_LATITUDE Latitude appears to be negated, e.g. 32.3 instead of -32.3
PRESUMED_NEGATED_LONGITUDE Longitude appears to be negated, e.g. 32.3 instead of -32.3
PRESUMED_SWAPPED_COORDINATE Latitude and longitude appear to be swapped.
RECORDED_DATE_INVALID A (partial) invalid date is given, such as a non existing date, invalid zero month, etc.
RECORDED_DATE_MISMATCH The recording date specified as the eventDate string and the individual year, month, day are contradicting.
RECORDED_DATE_UNLIKELY The recording date is highly unlikely, falling either into the future or represents a very old date before 1600 that predates modern taxonomy.
REFERENCES_URI_INVALID An invalid uri is given for dc:references.
TAXON_MATCH_FUZZY Matching to the taxonomic backbone can only be done using a fuzzy, non exact match.
TAXON_MATCH_HIGHERRANK Matching to the taxonomic backbone can only be done on a higher rank and not the scientific name.
TAXON_MATCH_NONE Matching to the taxonomic backbone cannot be done cause there was no match at all or several matches with too little information to keep them apart (homonyms).
TYPE_STATUS_INVALID The given type status is impossible to interpret or seriously different from the recommended vocabulary.
ZERO_COORDINATE Coordinate is the exact 0/0 coordinate, often indicating a bad null coordinate.
Counts: There is a slight difference in the way records are counted here vs.
results from occ_count
. For equivalent outcomes, in this function
use hasCoordinate=TRUE
, and hasGeospatialIssue=FALSE
to have the
same outcome using occ_count
with isGeoreferenced=TRUE
This does nearly the same thing as occ_search()
, but
is a bit simplified for speed, and is for the most common use case where
user just wants occurrence data, and not other information like taxon
hierarchies and media (e.g., images). Alot of time in occ_search()
is used parsing data to be more useable downstream. We do less of that
in this function.
http://www.gbif.org/developer/occurrence#search
# NOT RUN { (key <- name_backbone(name='Encelia californica')$speciesKey) occ_data(taxonKey = key, limit = 4) (res <- occ_data(taxonKey = key, limit = 400)) # Return 20 results, this is the default by the way (key <- name_suggest(q='Helianthus annuus', rank='species')$key[1]) occ_data(taxonKey=key, limit=20) # Instead of getting a taxon key first, you can search for a name directly ## However, note that using this approach (with \code{scientificName="..."}) ## you are getting synonyms too. The results for using \code{scientifcName} ## and \code{taxonKey} parameters are the same in this case, but I wouldn't ## be surprised if for some names they return different results occ_data(scientificName = 'Ursus americanus', curlopts=list(verbose=TRUE)) key <- name_backbone(name = 'Ursus americanus', rank='species')$usageKey occ_data(taxonKey = key) # Search by dataset key occ_data(datasetKey='7b5d6a48-f762-11e1-a439-00145eb45e9a', limit=10) # Search by catalog number occ_data(catalogNumber="49366", limit=10) ## separate requests: use a vector of strings occ_data(catalogNumber=c("49366","Bird.27847588"), limit=10) ## one request, many instances of same parameter: use semi-colon sep. string occ_data(catalogNumber="49366;Bird.27847588", limit=10) # Use paging parameters (limit and start) to page. Note the different results # for the two queries below. occ_data(datasetKey='7b5d6a48-f762-11e1-a439-00145eb45e9a',start=10,limit=5) occ_data(datasetKey='7b5d6a48-f762-11e1-a439-00145eb45e9a',start=20,limit=5) # Many dataset keys ## separate requests: use a vector of strings occ_data(datasetKey=c("50c9509d-22c7-4a22-a47d-8c48425ef4a7", "7b5d6a48-f762-11e1-a439-00145eb45e9a"), limit=20) ## one request, many instances of same parameter: use semi-colon sep. string v="50c9509d-22c7-4a22-a47d-8c48425ef4a7;7b5d6a48-f762-11e1-a439-00145eb45e9a" occ_data(datasetKey = v, limit=20) # Search by recorder occ_data(recordedBy="smith", limit=20) # Many collector names ## separate requests: use a vector of strings occ_data(recordedBy=c("smith","BJ Stacey"), limit=10) ## one request, many instances of same parameter: use semi-colon sep. string occ_data(recordedBy="smith;BJ Stacey", limit=10) # Pass in curl options for extra fun occ_data(taxonKey=2433407, limit=20, curlopts=list(verbose=TRUE)) occ_data(taxonKey=2433407, limit=20, curlopts = list( noprogress = FALSE, progressfunction = function(down, up) { cat(sprintf("up: %d | down %d\n", up, down)) return(TRUE) } ) ) # occ_data(taxonKey=2433407, limit=20, curlopts=list(timeout_ms=1)) # Search for many species splist <- c('Cyanocitta stelleri', 'Junco hyemalis', 'Aix sponsa') keys <- sapply(splist, function(x) name_suggest(x)$key[1], USE.NAMES=FALSE) ## separate requests: use a vector of strings occ_data(taxonKey = keys, limit=5) ## one request, many instances of same parameter: use semi-colon sep. string occ_data(taxonKey = paste0(keys, collapse = ";"), limit=5) # Search using a synonym name # Note that you'll see a message printing out that the accepted name will # be used occ_data(scientificName = 'Pulsatilla patens', limit=5) # Search on latitidue and longitude occ_data(decimalLatitude=40, decimalLongitude=-120, limit = 10) # Search on a bounding box ## in well known text format ### polygon occ_data(geometry='POLYGON((30.1 10.1,40 40,20 40,10 20,30.1 10.1))', limit=20) ### multipolygon wkt <- 'MULTIPOLYGON(((-123 38,-116 38,-116 43,-123 43,-123 38)), ((-97 41,-93 41,-93 45,-97 45,-97 41)))' occ_data(geometry = gsub("\n\\s+", "", wkt), limit = 20) ### polygon and taxonkey key <- name_suggest(q='Aesculus hippocastanum')$key[1] occ_data(taxonKey=key, geometry='POLYGON((30.1 10.1,40 40,20 40,10 20,30.1 10.1))', limit=20) ## or using bounding box, converted to WKT internally occ_data(geometry=c(-125.0,38.4,-121.8,40.9), limit=20) ## you can seaerch on many geometry objects ### separate requests: use a vector of strings wkts <- c('POLYGON((-102.2 46,-102.2 43.7,-93.9 43.7,-93.9 46,-102.2 46))', 'POLYGON((30.1 10.1,40 40,20 40,10 20,30.1 10.1))') occ_data(geometry = wkts, limit=20) ### one request, many instances of same parameter: use semi-colon sep. string occ_data(geometry = paste0(wkts, collapse = ";"), limit=20) # Search on a long WKT string - too long for a GBIF search API request ## By default, a very long WKT string will likely cause a request failure as ## GBIF only handles strings up to about 1500 characters long. You can leave as is, or ## - Alternatively, you can choose to break up your polygon into many, and do a ## data request on each piece, and the output is put back together (see below) ## - Or, 2nd alternatively, you could use the GBIF download API wkt <- [2241 chars quoted with '"'] wkt <- gsub("\n", " ", wkt) #### Default option with large WKT string fails # res <- occ_data(geometry = wkt) #### if WKT too long, with 'geom_big=bbox': makes into bounding box res <- occ_data(geometry = wkt, geom_big = "bbox") library("rgeos") library("sp") wktsp <- readWKT(wkt) plot(wktsp) coordinates(res$data) <- ~decimalLongitude+decimalLatitude points(res$data) #### Or, use 'geom_big=axe' (res <- occ_data(geometry = wkt, geom_big = "axe")) ##### manipulate essentially number of polygons that result, so number of requests ###### default geom_size is 40 ###### fewer calls (res <- occ_data(geometry = wkt, geom_big = "axe", geom_size=50)) ###### more calls (res <- occ_data(geometry = wkt, geom_big = "axe", geom_size=30)) # Search on country occ_data(country='US', limit=20) isocodes[grep("France", isocodes$name),"code"] occ_data(country='FR', limit=20) occ_data(country='DE', limit=20) ### separate requests: use a vector of strings occ_data(country=c('US','DE'), limit=20) ### one request, many instances of same parameter: use semi-colon sep. string occ_data(country = 'US;DE', limit=20) # Get only occurrences with lat/long data occ_data(taxonKey=key, hasCoordinate=TRUE, limit=20) # Get only occurrences that were recorded as living specimens occ_data(basisOfRecord="LIVING_SPECIMEN", hasCoordinate=TRUE, limit=20) # Get occurrences for a particular eventDate occ_data(taxonKey=key, eventDate="2013", limit=20) occ_data(taxonKey=key, year="2013", limit=20) occ_data(taxonKey=key, month="6", limit=20) # Get occurrences based on depth key <- name_backbone(name='Salmo salar', kingdom='animals')$speciesKey occ_data(taxonKey=key, depth=1, limit=20) # Get occurrences based on elevation key <- name_backbone(name='Puma concolor', kingdom='animals')$speciesKey occ_data(taxonKey=key, elevation=50, hasCoordinate=TRUE, limit=20) # Get occurrences based on institutionCode occ_data(institutionCode="TLMF", limit=20) ### separate requests: use a vector of strings occ_data(institutionCode=c("TLMF","ArtDatabanken"), limit=20) ### one request, many instances of same parameter: use semi-colon sep. string occ_data(institutionCode = "TLMF;ArtDatabanken", limit=20) # Get occurrences based on collectionCode occ_data(collectionCode="Floristic Databases MV - Higher Plants", limit=20) ### separate requests: use a vector of strings occ_data(collectionCode=c("Floristic Databases MV - Higher Plants", "Artport"), limit = 20) ### one request, many instances of same parameter: use semi-colon sep. string occ_data(collectionCode = "Floristic Databases MV - Higher Plants;Artport", limit = 20) # Get only those occurrences with spatial issues occ_data(taxonKey=key, hasGeospatialIssue=TRUE, limit=20) # Search using a query string occ_data(search="kingfisher", limit=20) ## spell check - only works with the `search` parameter ### spelled correctly - same result as above call occ_data(search = "kingfisher", limit=20, spellCheck = TRUE) ### spelled incorrectly - stops with suggested spelling # occ_data(search = "kajsdkla", limit=20, spellCheck = TRUE) ### spelled incorrectly - stops with many suggested spellings ### and number of results for each # occ_data(search = "helir", limit=20, spellCheck = TRUE) # search on repatriated - doesn't work right now # occ_data(repatriated = "") # search on phylumKey occ_data(phylumKey = 7707728, limit = 5) # search on kingdomKey occ_data(kingdomKey = 1, limit = 5) # search on classKey occ_data(classKey = 216, limit = 5) # search on orderKey occ_data(orderKey = 7192402, limit = 5) # search on familyKey occ_data(familyKey = 3925, limit = 5) # search on genusKey occ_data(genusKey = 1935496, limit = 5) # search on establishmentMeans occ_data(establishmentMeans = "INVASIVE", limit = 5) occ_data(establishmentMeans = "NATIVE", limit = 5) occ_data(establishmentMeans = "UNCERTAIN", limit = 5) ### separate requests: use a vector of strings occ_data(establishmentMeans = c("INVASIVE", "NATIVE"), limit = 5) ### one request, many instances of same parameter: use semi-colon sep. string occ_data(establishmentMeans = "INVASIVE;NATIVE", limit = 5) # search on protocol occ_data(protocol = "DIGIR", limit = 5) # search on license occ_data(license = "CC_BY_4_0", limit = 5) # search on organismId occ_data(organismId = "100", limit = 5) # search on publishingOrg occ_data(publishingOrg = "28eb1a3f-1c15-4a95-931a-4af90ecb574d", limit = 5) # search on stateProvince occ_data(stateProvince = "California", limit = 5) # search on waterBody occ_data(waterBody = "pacific ocean", limit = 5) # search on locality occ_data(locality = "Trondheim", limit = 5) ### separate requests: use a vector of strings res <- occ_data(locality = c("Trondheim", "Hovekilen"), limit = 5) res$Trondheim$data res$Hovekilen$data ### one request, many instances of same parameter: use semi-colon sep. string occ_data(locality = "Trondheim;Hovekilen", limit = 5) # Range queries ## See Detail for parameters that support range queries occ_data(depth='50,100', limit = 20) ### this is not a range search, but does two searches for each depth occ_data(depth=c(50,100), limit = 20) ## Range search with year occ_data(year='1999,2000', limit=20) ## Range search with latitude occ_data(decimalLatitude='29.59,29.6', limit = 20) # Search by specimen type status ## Look for possible values of the typeStatus parameter looking at the typestatus dataset occ_data(typeStatus = 'allotype', limit = 20)$data[,c('name','typeStatus')] # Search by specimen record number ## This is the record number of the person/group that submitted the data, not GBIF's numbers ## You can see that many different groups have record number 1, so not super helpful occ_data(recordNumber = 1, limit = 20)$data[,c('name','recordNumber','recordedBy')] # Search by last time interpreted: Date the record was last modified in GBIF ## The lastInterpreted parameter accepts ISO 8601 format dates, including ## yyyy, yyyy-MM, yyyy-MM-dd, or MM-dd. Range queries are accepted for lastInterpreted occ_data(lastInterpreted = '2016-04-02', limit = 20) # Search for occurrences with images occ_data(mediaType = 'StillImage', limit = 20) occ_data(mediaType = 'MovingImage', limit = 20) occ_data(mediaType = 'Sound', limit = 20) # Search by continent ## One of africa, antarctica, asia, europe, north_america, oceania, or ## south_america occ_data(continent = 'south_america', limit = 20)$meta occ_data(continent = 'africa', limit = 20)$meta occ_data(continent = 'oceania', limit = 20)$meta occ_data(continent = 'antarctica', limit = 20)$meta ### separate requests: use a vector of strings occ_data(continent = c('south_america', 'oceania'), limit = 20) ### one request, many instances of same parameter: use semi-colon sep. string occ_data(continent = 'south_america;oceania', limit = 20) # Query based on issues - see Details for options ## one issue x <- occ_data(taxonKey=1, issue='DEPTH_UNLIKELY', limit = 20) x$data[,c('name','key','decimalLatitude','decimalLongitude','depth')] ## two issues occ_data(taxonKey=1, issue=c('DEPTH_UNLIKELY','COORDINATE_ROUNDED'), limit = 20) # Show all records in the Arizona State Lichen Collection that cant be matched to the GBIF # backbone properly: occ_data(datasetKey='84c0e1a0-f762-11e1-a439-00145eb45e9a', issue=c('TAXON_MATCH_NONE','TAXON_MATCH_HIGHERRANK'), limit = 20) # Parsing output by issue (res <- occ_data(geometry='POLYGON((30.1 10.1,40 40,20 40,10 20,30.1 10.1))', limit = 50)) ## what do issues mean, can print whole table, or search for matches head(gbif_issues()) gbif_issues()[ gbif_issues()$code %in% c('cdround','cudc','gass84','txmathi'), ] ## or parse issues in various ways ### remove data rows with certain issue classes library('magrittr') res %>% occ_issues(gass84) ### split issues into separate columns res %>% occ_issues(mutate = "split") ### expand issues to more descriptive names res %>% occ_issues(mutate = "expand") ### split and expand res %>% occ_issues(mutate = "split_expand") ### split, expand, and remove an issue class res %>% occ_issues(-cudc, mutate = "split_expand") # }


--- title: Plotting Individual Orientations sidebar: documentation_sidebar permalink: EBSDOrientationPlots.html folder: documentation toc: false ---
Basics of the plot types for individual orientations data
This section gives an overview over the possibilities that MTEX offers to visualize orientation data. Let us first load a sample EBSD data set
{% highlight matlab %} mtexdata forsterite {% endhighlight %} {% highlight plaintext %} ebsd = EBSD Phase Orientations Mineral Color Symmetry Crystal reference frame 0 58485 (24%) notIndexed 1 152345 (62%) Forsterite LightSkyBlue mmm 2 26058 (11%) Enstatite DarkSeaGreen mmm 3 9064 (3.7%) Diopside Goldenrod 12/m1 X||a*, Y||b*, Z||c Properties: bands, bc, bs, error, mad, x, y Scan unit : um {% endhighlight %}and select all individual orientations of the Iron phase
{% highlight matlab %} ebsd('Fo').orientations {% endhighlight %} {% highlight plaintext %} ans = orientation (Forsterite → xyz) size: 152345 x 1 {% endhighlight %}A pole figure showing scattered points of these data figure can be produced by the command plotPDF.
{% highlight matlab %} plotPDF(ebsd('Fo').orientations,Miller(1,0,0,ebsd('Fo').CS)) {% endhighlight %} {% highlight plaintext %} I'm plotting 1250 random orientations out of 152345 given orientations You can specify the the number points by the option "points". The option "all" ensures that all data are plotted {% endhighlight %}Accordingly, scatter points in inverse pole figures are produced by the command plotIPDF.
{% highlight matlab %} plotIPDF(ebsd('Fo').orientations,xvector) {% endhighlight %} {% highlight plaintext %} I'm plotting 12500 random orientations out of 152345 given orientations {% endhighlight %}The plotting of scatter points in sections of the orientation space is carried out by the command plotSection. In the above examples, the number of plotted orientations was chosen automatically such that the plots not to become too crowded with points. The number of randomly chosen orientations can be specified by the option points.
{% highlight matlab %} plotSection(ebsd('Fo').orientations,'points',1000,'sigma','sections',9) {% endhighlight %} {% highlight plaintext %} plotting 1000 random orientations out of 152345 given orientations {% endhighlight %}Another possibility is to plot the single orientations directly into the orientation space, i.e., either in axis/angle parameterization or in Rodrigues parameterization.
{% highlight matlab %} scatter(ebsd('Fo').orientations) {% endhighlight %} {% highlight plaintext %} plot 2000 random orientations out of 152345 given orientations {% endhighlight %}Here, the optional option 'center' specifies the center of the unique region in the orientation space.
Since EBSD and grain data involves single orientations, the above plotting commands are also applicable for those objects.
Let us consider some grains reconstructed from the EBSD data
{% highlight matlab %} grains = calcGrains(ebsd); {% endhighlight %}Then the scatter plot of the individual orientations of the Iron phase in the inverse pole figure is achieved by
{% highlight matlab %} plotIPDF(ebsd('Fo').orientations,xvector,'points',1000, 'MarkerSize',3); {% endhighlight %} {% highlight plaintext %} I'm plotting 1000 random orientations out of 152345 given orientations {% endhighlight %}In the same way, the mean orientations of grains can be visualized
{% highlight matlab %} hold all plotIPDF(grains('Fo').meanOrientation,xvector,'points',500, 'MarkerSize',3); hold off {% endhighlight %} {% highlight plaintext %} I'm plotting 500 random orientations out of 4092 given orientations {% endhighlight %}One can also use different colors on the scatter points
{% highlight matlab %} h = [Miller(1,0,0,ebsd('Fo').CS),Miller(1,1,0,ebsd('Fo').CS)]; plotPDF(ebsd('Fo').orientations,ebsd('Fo').mad,h,'antipodal','MarkerSize',4) {% endhighlight %} {% highlight plaintext %} I'm plotting 1250 random orientations out of 152345 given orientations You can specify the the number points by the option "points". The option "all" ensures that all data are plotted {% endhighlight %}or some arbitrary data vector
{% highlight matlab %} plotSection(grains('Fo').meanOrientation,log(grains('Fo').area),... 'sigma','sections',9,'MarkerSize',10); {% endhighlight %} {% highlight plaintext %} plotting 2000 random orientations out of 4092 given orientations {% endhighlight %}See also Scatter plots for more information about scatter plot and projections for more information on spherical projections.


HTML was created by Sir Tim Berners-Lee in late 1991 but was not released officially, published in 1995 as HTML 2.0. HTML 4.01 was published in late 1999 and was a major version of HTML. HTML is a very evolving markup language and has evolved with various versions updating.
Another version, XHTML, was a rewrite of HTML as an XML language. XML is a standard markup language that is used to create other markup languages. Hundreds of XML languages are in use today, including GML (Geography Markup Language), MathML, MusicML, and RSS (Really Simple Syndication). Since each of these languages was written in a common language (XML), their content can easily be shared across applications.
<!DOCTYPE html>
<hr style="height:30px">
- Step 1: Open TextEdit (Mac) Open Finder > Applications > TextEdit.
- Step 2: Write Some HTML. Write or copy the following HTML code into Notepad
- Step 3: Save the HTML Page. Save the file on your computer.
- Step 4: View the HTML Page in Your Browser.
JavaScript was invented by Brendan Eich in 1995. It was developed for Netscape 2, and became the ECMA-262 standard in 1997. After Netscape handed JavaScript over to ECMA, the Mozilla foundation continued to develop JavaScript for the Firefox browser.
History — JavaScript often abbreviated as JS, is a programming language that conforms to the ... History[edit]. First appeared: December 4, 1995; 25 years a... Preview release: ECMAScript 2022 / 22 July 2... Stable release: ECMAScript 2021 / June 2021; 5 ... Designed by: Brendan Eich of Netscape initially; ...
LET A = 5;
LET B = 6;
CSS was first proposed by Håkon Wium Lie on October 10, 1994. At the time, Lie was working with Tim Berners-Lee at CERN. ... Style sheets have existed in one form or another since the beginnings of Standard Generalized Markup Language (SGML) in the 1980s, and CSS was developed to provide style sheets for the web.ia
In February 1997, CSS got its own working group inside W3C and the new group set out to work on the features which CSS1 didn't address. The group was chaired by ...
hr {
color:red;
}
p {
margin-left:20px;
}
rel="stylesheet" type="text/css" href="mystyle.css"
- Inline style sheet Internal style sheet External style sheet
Master your language with lessons, quizzes, and projects designed for real-life scenarios. Create portfolio projects that showcase your new skills to help land your dream job. Interactive Online Course. Collaborative Learning. Free 7 Day Pro Trial.
C++ is a popular programming language. C++ is used to create computer programs. Start learning C++ now ». Examples in Each Chapter. Our "Try it Yourself" ...
#include
using namespace std;
int main() {
cout << "Hello World!";
return 0;
- Portability. C++ provides this feature of portability allowing us to develop codes without caring about the hardware. ... Mid-level programming language. ... Object-Oriented. ... Multi-paradigm programming language. ... Memory Management. ... Fast and Powerful. ... Similar to other languages. ... Standard Library. More items...
Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. Developer: Oracle Corporation First appeared: May 23, 1995; 26 years ago Designed by: James Gosling Stable release: Java SE 17 / 14 September 20...
Both Java and C++ have been in production for years. They both have similar syntax, support object-oriented programming (OOP), and they both power some of the biggest enterprise platforms on the market. ... Java is an interpreted language, while C++ is a compiled language.
interface Language {
public void getType();
public void getVersion();
}
interface A {
// members of A
}
interface B {
// members of B
}
class C implements A, B {
// abstract members of A
// abstract members of B
}
- C++ C++ is an object-oriented programming language and is considered the fastest language out there. ... Prolog. Prolog stands for Logic Programming. ... LISP. LISP stands for List Processing. ... Haskell. ... Assembly Language (ASM) ... Rust. ... Esoteric Languages.


Im a full stack web developer currently living in Adelaide, South Australia.
I have been tinkering with technology for as long as I can recall.
For the last 8 years
I have been in the sheet metal industry as a
fully qualified tradesman.
Upon enrolling in the University of Adelaide's
coding bootcamp, I have been set on a
change in career.
Feel free to explore
my portfolio!


CEO & co-founder at Intelligene
CEO & founder a Data Workshop
Visited 28 Countries
Public Speaker
Podcaster


You (mostly) shouldn't care what technology it is, unless you have existing infrastructure... BUT...
You want to get from Point A to Point B. How many of each of these in Manhattan?
iDoneThis -- Daily email reminder and activity logging
CodeBase -- version control hosting and ticketing
Trello -- very user friendly ticketing
"Of the following frameworks, which do you prefer and why: MVC, Ruby on Rails, Spring, Hibernate, Struts, Zend, CakePHP, JQuery, Prototype, mootools."
"Which restaurant is your favorite: Italian food, Japanese food, Asian food, Oriental food, American food, hot dogs, hamburgers, forks, plates, pots, and butter?"
Tons of great info in here about all the OTHER (non-development) aspects of building your business.


{{ notifications }}
{{userlogged}}
{{teamname}}
My Profile
Change Password
Logout
Add User
Users-Teams
Add User
Add User Form
×
Ah snap!!
{{ alerttop }}.
×
Well done.
{{ alert }}.
×
Ah snap!!
{{ errorMessage }}.
User Name
Password
Full Name
Select Your Team
Select a Role
×
Ah snap!!
You are not authorized.


{%extends "confreg/confadmin_base.html" %} {%block title%}Benefit reports{%endblock%} {%block layoutblock%}
Check the benefits for which to include the status.


Debug_window
Dependency Graph
depend
Debug_window
Debug_window
Widget
Widget
Debug_window->Widget
Utils
Utils
Debug_window->Utils
Layout
Layout
Debug_window->Layout
Draw
Draw
Debug_window->Draw
Main
Main
Main->Debug_window
The arrow means
"depends on"
. Only dependencies involving
Debug_window
are displayed. Switch to
circo
style or
dot
style.


Team Information
View Your Team's Information Below!
Jaspreet test
Manager
ID
: 12345
Office
: 33
Email
Tom
Intern
ID
: 14523
School
: Toronto
Email
Sally
Engineer
ID
: 52314
GitHub Username
:
SallySmith
Email


Now, I'm a noob at CSS code, so I need a little help with this idea I had.
I want something like this, where I am able to push a button on a thread and bookmark it.
http://i.imgur.com/CD69BXU.jpg
Think it can be done?
 You need javascript for that.
Also it's posted in the wrong subforums if this was a question, moved.
Topicstarter
Apollo-v7
Oh, so I guess this is not possible than.
Thank you though.
Post edited 1 x times, last by
BrainFooLong
Administrator
BrainFooLong
Administrator
Apollo-v7 wrote:
Oh, so I guess this is not possible than.
Thank you though.
It's possible, but not in that exact behavior like the original threads.
A plugin only can save the title, without the "last post" or the "number of pages" thingy because it's server side generated, so, simply a bookmark in the browser will do the same as it is possible with a plugin or bblog :)
Topicstarter
Apollo-v7
Okay, well, I would very much like to see this feature in some way if it is possible.
If you ever have free time, I would love to hear about this being made! :P
BrainFooLong
Administrator
Well as i said, the only thing what is possible is the same what you already can do with a simple browser bookmark/favorite. So i think it's a overhead to implement such a feature.


Hello {{ user }},
Here is your password reset link: {{ domain + '/#/reset-password' + '?' + 'token=' + token }}


{% extends "./home/base.html" %} {% block content %}
Are you sure you want to delete "{{ maintjob_details.name }}"?


CrimPapers
Articles published on 7 February 2019
On 7 February 2019, 14 new articles were published in 8 journals.
Criminal Courts As Inhabited Institutions: Making Sense of Difference and Similarity in Sentencing by Jeffery T. Ulmer
Forty Years of American Sentencing Guidelines: What Have We Learned? by Richard S. Frase
Morality of Hezbollah’s Conflicts With Israel by Zafer Kızılkaya
A Qualitative Examination of Post-Traumatic Growth in Multiply Body Modified Adults by Carolyn D. Keagy
Editorial
The Public-Private Divide Revisited: Questioning the Middle Ground of Hybridity in Policing by Martin Nøkleberg
Dealing With the Authority to Use Force: Reflections of Belgian Police Officers by Jannie Noppe
Elevating the Scientific and Public Policy Discourse on Crime Prevention: Taking Stock of the ‘what Works’ Report’s Influence 20 Years on
Observers’ Performance At Evaluating Truthfulness When Provided With Comparable Truth Or Small Talk Baselines by Letizia Caso, Nicola Palena, Aldert Vrij, Augusto Gnisci
Development of A Measure of Mental Health Stigma Including Police Behaviors by Kento Yasuhara, Dana L. Formon, Sarah Phillips, Elise M. Yenne
The Effects of Perceived Memory Ability on Memory Conformity For An Event by Lauren A. Monds, Mark Howard, Helen M. Paterson, Richard I. Kemp
Helping the Contras: the Effectiveness of U.s. Support For Foreign Rebels During the Nicaraguan Contra War (1979–1990) by Quint Hoekstra
Preventing the Next Wave of Foreign Terrorist Fighters: Lessons Learned From the Experiences of Algeria and Tunisia by R. Kim Cragin
Recruitment and Incitement to Violence in the Islamic State’s Online Propaganda: Comparative Analysis of Dabiq and Rumiyah by Miron Lakomy


Pooja Hegde's pictures from France will make you want to pack your bags and head for a vacation!
by TIMESOFINDIA.COMPooja Hegde's 'Housefull 4' has been scoring huge at the box office. And recent, the actress took some time off from her busy schedule and jetted off for a vacation.
The actress first visited Saudi Arabia and also shared some pictures on her Instagram. Pooja then moved to another destination which is the beautiful European country, France! The diva took to the photo-sharing app to upload a few more pictures of from her vacay. She posed for the camera while enjoying the streets of the country and huge historical monuments. Pooja looked pretty in a printed dress with a sweater-jacket over it and black boots. Check out the pictures here:
Meanwhile, on the work front, her film 'Housefull 4' starring Akshay Kumar, Riteish Deshmukh, Kriti Sanon, Kriti Kharbanda, Bobby Deol, Chunky Pandey and more along with Pooja hit the theatres on October 25.


Scenario 2: Large In-house Development Team¶
Background¶
The company Acme Banking, a large multi-national bank. Lu is the manager of the lending application software development department and has a staff of 19 people working for him. He has charged his system admin, Peter, with securing CruiseControl.Net.
Some background, Lu is responsible for three applications: lending applications system (LAS), load approval and tracking system (LATS) and bad debt analysis and recovery system (BARS). Each system is an independent web application with a complex set of business rules and a backing database. To allow interactions between the system each application exposes web services. Finally each application has a number of support tools that are Windows-based.
However, to simplify things, Lu's department is only responsible for development. The QA department is responsible for all testing (including deployments) and the Server department is responsible for the actual deployment to PROD. All of these deployments are done via hand-overs, with the receiving department responsible for getting the binaries from the build server.
As for department structure, each team has a team leader and a senior developer. There are also between two and six junior developers in each team. Peter is not included in any of the teams as his full-time role is supporting the developers. All staff are on the same network and have windows logins.
Lu wants to limit access for project to the team that is responsible for it. No team is allowed access to any project that belongs to another team. Additionally only the team leader and senior developer are allowed to start/stop the projects, although the junior developers can force builds. Everything done in the system must be audited.
The Build Setup¶
Each application has two projects - main and tools. Main includes the actual web application, plus the web services, while tools contains all the support tools. This makes a total of six projects.
Each project contains everything required to build the binaries and deploy them to the build server (for the other departments). These are triggered on an interval basis, plus every night at 3am.
Since the hand-over process is manual, there is no impact on other environments. However considering the team size and low-level of trust they want everything locked down.
The Goals¶
There will be three security zones: low, medium and high. The following table shows these zones:
| Zone | Description | Projects | People |
| Low | Permission to force/abort builds. | All | Junior developers |
| Medium | As above, plus permission to start/stop projects. | All | Team leaders and senior developers |
| High | As above, plus access to security information. | n/a | Lu & Peter |
Each application will be divided into low and medium zones. The high level security zone is generic to the system rather than application-specific.
The Plan¶
These goals give a total of seven security groups - low and medium for each application plus a high security group. Everybody within the department will belong to one of these seven groups.
This actual model is a little more complex, but I've put together a diagram as follows:
The Configuration¶
Since I'm looking at the security, not the actual projects, I'm going to use the following general configuration for each project:
1<project name="LAS-Main">
2 <workingDirectory>C:\Build\LAS-Main</workingDirectory>
3 <artifactDirectory>C:\Build\LAS-Main\Deploy</artifactDirectory>
4 <webURL>http://localhost/server/local/project/LAS-Main/ViewProjectReport.aspx</webURL>
5 <!-- Source control block defined here -->
6 <triggers>
7 <intervalTrigger buildCondition="IfModificationExists" seconds="300" />
8 </triggers>
9 <tasks>
10 <!-- Tasks defined here -->
11 </tasks>
12 <publishers>
13 <!-- Publishers defined here -->
14 </publishers>
15</project>
The project name (i.e. LAS-Main) will be changed for each project - a total of six projects.
Again the first step is turning on security - just added the internalSecurity element, plus the required children.
Turning On Security¶
First, I'm going to turn on security for the server. This involves adding a security block to the config file. Since the security will be defined internally, I'm going to use the <internalSecurity> definition:
1<cruisecontrol>
2 <internalSecurity>
3 <users>
4 </users>
5 <permissions>
6 </permissions>
7 </internalSecurity>
8 <!-- Projects defined here -->
9</cruisecontrol>
Now the config file passes validation and security has been turned on for the server. But, all this has done is completely lock down the server, so no one can do anything\!
Adding Some Roles and Users¶
Next, I added the users. Since everyone is on the network I added them with ldapUser elements. This is defined as follows:
1<internalSecurity>
2 <users>
3 <ldapUser name="lu.jones" domain="localhost"/> <!-- Manager -->
4 <ldapUser name="peter.smith" domain="localhost"/> <!-- SysAdmin -->
5 <ldapUser name="mark.doulos" domain="localhost"/> <!-- LAS Team leader -->
6 <ldapUser name="jill.white" domain="localhost"/> <!-- LAS Senior developer -->
7 <ldapUser name="john.asher" domain="localhost"/> <!-- LAS Junior developer -->
8 <!-- Remaining users omitted -->
9 </users>
10 <permissions>
11 </permissions>
12</internalSecurity>
Note there is a domain in here - I've just changed it to localhost for this example. Without the domain the active directory authentication will fail as the authenticator won't know where to look.
I've also added a server-level permission for the high-security permissions:
1<internalSecurity>
2 <users>
3 <ldapUser name="lu.jones" domain="localhost"/> <!-- Manager -->
4 <ldapUser name="peter.smith" domain="localhost"/> <!-- SysAdmin -->
5 <ldapUser name="mark.doulos" domain="localhost"/> <!-- LAS Team leader -->
6 <ldapUser name="jill.white" domain="localhost"/> <!-- LAS Senior developer -->
7 <ldapUser name="john.asher" domain="localhost"/> <!-- LAS Junior developer -->
8 <!-- Remaining users omitted -->
9 </users>
10 <permissions>
11 <rolePermission name="Admin" defaultRight="Allow">
12 <users>
13 <userName name="lu.jones"/>
14 <userName name="peter.smith"/>
15 </users>
16 </rolePermission>
17 </permissions>
18</internalSecurity>
This just says that Lu and Peter have full access to everything.
Locking Down Projects¶
The final step is to lock down the projects. This is where there is slightly more work than scenario one. Since each project needs to be secured, every project will need to be modified.
There are two ways this can be done. One way would be to add the security to each project, the second is to define roles and then link each project to them. Since there are two projects for each application, with identical permissions I'm going to use the second approach.
In the internalSecurity element I define each application role. The following shows an example:
1<internalSecurity>
2 <users>
3 <!-- Omitted for brevity -->
4 </users>
5 <permissions>
6 <rolePermission name="Admin" defaultRight="Allow">
7 <users>
8 <userName name="lu.jones"/>
9 <userName name="peter.smith"/>
10 </users>
11 </rolePermission>
12 <rolePermission name="LAS-Developers" forceBuild="Allow" defaultRight="Deny">
13 <users>
14 <userName name="john.asher"/>
15 <!-- Remaining users omitted -->
16 </users>
17 </rolePermission>
18 <rolePermission name="LAS-Admin" forceBuild="Allow" startProject="Allow" defaultRight="Deny">
19 <users>
20 <userName name="mark.doulos"/>
21 <userName name="jill.white"/>
22 </users>
23 </rolePermission>
24 <!-- Remaining roles omitted -->
25 </permissions>
26</internalSecurity>
Then, in each project I add a security section like the following:
1<project name="LAS-Main">
2 <workingDirectory>C:\Build\LAS-Main</workingDirectory>
3 <artifactDirectory>C:\Build\LAS-Main\Deploy</artifactDirectory>
4 <webURL>http://localhost/server/local/project/LAS-Main/ViewProjectReport.aspx</webURL>
5 <!-- Source control block defined here -->
6 <triggers>
7 <intervalTrigger buildCondition="IfModificationExists" seconds="300" />
8 </triggers>
9 <tasks>
10 <!-- Tasks defined here -->
11 </tasks>
12 <publishers>
13 <!-- Publishers defined here -->
14 </publishers>
15 <security type="defaultProjectSecurity" defaultRight="Deny">
16 <permissions>
17 <rolePermission name="LAS-Developers" ref="LAS-Developers"/>
18 <rolePermission name="LAS-Admin" ref="LAS-Admin"/>
19 <rolePermission name="Admin" ref="Admin"/>
20 </permissions>
21 </security>
22</project>
The first two permissions will change to match the application each project is for, while the last one is the same for all projects (gives Peter & Lu access to the projects).
Audit Logging¶
Finally Lu wants everything audited. This is very simple to do, just add an audit logger and an audit reader. This is done in the internalSecurity element by adding the following elements:
1<internalSecurity>
2 <audit>
3 <xmlFileAudit/>
4 </audit>
5 <auditReader type="xmlFileAuditReader"/>
6 <users>
7 <!-- Omitted for brevity -->
8 </users>
9 <permissions>
10 <!-- Omitted for brevity -->
11 </permissions>
12</internalSecurity>
By default these will use an audit log called SecurityAudit.xml in the same directory as the executables. This can be changed by added a location attribute as follows:
1<internalSecurity>
2 <audit>
3 <xmlFileAudit location="C:\Logs\CCNet_Audit.xml"/>
4 </audit>
5 <auditReader type="xmlFileAuditReader" location="C:\Logs\CCNet_Audit.xml"/>
6 <users>
7 <!-- Omitted for brevity -->
8 </users>
9 <permissions>
10 <!-- Omitted for brevity -->
11 </permissions>
12</internalSecurity>
Note that the location must be on both elements and they point to the same location. This is because the two items work independently of each other and it is possible to have multiple audit loggers.
And that's the security settings for this scenario - the full example, the duplicate projects are omitted since this scenario is focusing on the security.
1<cruisecontrol>
2 <internalSecurity>
3 <audit>
4 <xmlFileAudit location="C:\Logs\CCNet_Audit.xml"/>
5 </audit>
6 <auditReader type="xmlFileAuditReader" location="C:\Logs\CCNet_Audit.xml"/>
7 <users>
8 <ldapUser name="lu.jones" domain="localhost"/> <!-- Manager -->
9 <ldapUser name="peter.smith" domain="localhost"/> <!-- SysAdmin -->
10 <ldapUser name="mark.doulos" domain="localhost"/> <!-- LAS Team leader -->
11 <ldapUser name="jill.white" domain="localhost"/> <!-- LAS Senior developer -->
12 <ldapUser name="john.asher" domain="localhost"/> <!-- LAS Junior developer -->
13 <!-- Remaining users omitted -->
14 </users>
15 <permissions>
16 <rolePermission name="Admin" defaultRight="Allow">
17 <users>
18 <userName name="lu.jones"/>
19 <userName name="peter.smith"/>
20 </users>
21 </rolePermission>
22 <rolePermission name="LAS-Developers" forceBuild="Allow" defaultRight="Deny">
23 <users>
24 <userName name="john.asher"/>
25 <!-- Remaining users omitted -->
26 </users>
27 </rolePermission>
28 <rolePermission name="LAS-Admin" forceBuild="Allow" startProject="Allow" defaultRight="Deny">
29 <users>
30 <userName name="mark.doulos"/>
31 <userName name="jill.white"/>
32 </users>
33 </rolePermission>
34 <!-- Remaining roles omitted -->
35 </permissions>
36 </internalSecurity>
37 <project name="LAS-Main">
38 <workingDirectory>C:\Build\LAS-Main</workingDirectory>
39 <artifactDirectory>C:\Build\LAS-Main\Deploy</artifactDirectory>
40 <webURL>http://localhost/server/local/project/LAS-Main/ViewProjectReport.aspx</webURL>
41 <!-- Source control block defined here -->
42 <triggers>
43 <intervalTrigger buildCondition="IfModificationExists" seconds="300" />
44 </triggers>
45 <tasks>
46 <!-- Tasks defined here -->
47 </tasks>
48 <publishers>
49 <!-- Publishers defined here -->
50 </publishers>
51 <security type="defaultProjectSecurity" defaultRight="Deny">
52 <permissions>
53 <rolePermission name="LAS-Developers" ref="LAS-Developers"/>
54 <rolePermission name="LAS-Admin" ref="LAS-Admin"/>
55 <rolePermission name="Admin" ref="Admin"/>
56 </permissions>
57 </security>
58 </project>
59 <!-- Other projects defined here -->
60</cruisecontrol>
Credits¶
This scenario was originally posted on Automated Coder


Rendering wind forecasts as particles via open-gl. The code is heavily inspired from a mapbox blogpost. The code is adjusted to use the 'CustomLayer'-feature, which didn't exist, when the original example was created.


{{eheadline.text}}
{{eauthor.text}}
Copyright 2016 AllRights Reserved
Terms & Disclaimer | Privacy Policy | Support |
This is a disclaimer text


public class DeprecationRestHandler extends java.lang.Object implements RestHandler
DeprecationRestHandler
provides a proxy for any existing RestHandler
so that usage of the handler can be
logged using the DeprecationLogger
.| 构造器和说明 |
|---|
DeprecationRestHandler(RestHandler handler,
java.lang.String deprecationMessage,
DeprecationLogger deprecationLogger)
Create a
DeprecationRestHandler that encapsulates the handler using the deprecationLogger to log
deprecation warning . |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
handleRequest(RestRequest request,
RestChannel channel,
NodeClient client)
Handles a rest request.
|
static java.lang.String |
requireValidHeader(java.lang.String value)
Throw an exception if the
value is not a valid header . |
static boolean |
validHeaderValue(java.lang.String value)
This does a very basic pass at validating that a header's value contains only expected characters according to RFC-5987, and those
that it references.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
canTripCircuitBreaker, supportsContentStream
public DeprecationRestHandler(RestHandler handler, java.lang.String deprecationMessage, DeprecationLogger deprecationLogger)
DeprecationRestHandler
that encapsulates the handler
using the deprecationLogger
to log
deprecation warning
.handler
- The rest handler to deprecate (it's possible that the handler is reused with a different name!)deprecationMessage
- The message to warn users with when they use the handler
deprecationLogger
- The deprecation loggerjava.lang.NullPointerException
- if any parameter except deprecationMessage
is null
java.lang.IllegalArgumentException
- if deprecationMessage
is not a valid headerpublic void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws java.lang.Exception
Usage is logged via the DeprecationLogger
so that the actual response can be notified of deprecation as well.
handleRequest
在接口中 RestHandler
request
- The request to handlechannel
- The channel to write the request response toclient
- A client to use to make internal requests on behalf of the original requestjava.lang.Exception
public static boolean validHeaderValue(java.lang.String value)
https://tools.ietf.org/html/rfc5987
This is only expected to be used for assertions. The idea is that only readable US-ASCII characters are expected; the rest must be encoded with percent encoding, which makes checking for a valid character range very simple.
value
- The header value to checktrue
if the value
is not obviously wrong.public static java.lang.String requireValidHeader(java.lang.String value)
value
is not a valid header
.value
- The header value to checkvalue
.java.lang.IllegalArgumentException
- if value
is not a valid header
.


{% extends "orga/cfp/base.html" %} {% load bootstrap4 %} {% load i18n %} {% load static %} {% block content %}
{% blocktranslate trimmed %} Build your own custom export here, by selecting all the data you need, and the export format. CSV exports can be opened with Excel and similar applications, while JSON exports are often used for integration with other tools. {% endblocktranslate %}
{% blocktranslate trimmed %} pretalx provides a range of exports. If none of these match what you are looking for, you can also provide a custom plugin to export the data – please ask your administrator to install the plugin. {% endblocktranslate %} {% blocktranslate trimmed %} If you are looking for exports of proposals, sessions or schedule data, please head here: {% endblocktranslate %} {% translate "Schedule exports" %}
{% blocktranslate trimmed %} You can either create exactly the export you need in the "Custom" tab, or use these pre-built exports: {% endblocktranslate %}
{% translate "You can also use the API to export or use data." %}
{% blocktranslate trimmed %} Some of the general exports are only accessible for organisers, or include more information when accessed with your organiser account. If you want to access the organiser version in automatic integrations, you'll have to provide your authentication token just like in the API, like this: {% endblocktranslate %}
curl -H "Authorization: Token {{ request.user.auth_token.key }}" {{ request.event.api_urls.speakers.full }}


Package musichub.server
Class MusicHubServer
java.lang.Object
java.lang.Thread
musichub.server.MusicHubServer
- All Implemented Interfaces:
java.lang.Runnable
public class MusicHubServer
extends java.lang.Thread
MusicHubServer Class
Handle the MusicHub on the server.
- Author:
- Elouan Toy
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ALBUMS_FILE_PATH
static java.lang.String
AUDIOFILES_FILE_PATH
static java.lang.String
DIR
static java.lang.String
ELEMENTS_FILE_PATH
static java.lang.String
PLAYLISTS_FILE_PATH
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
Constructor Summary
Constructors Constructor Description MusicHubServer()
MusicHubServer constructor Prepare the MusicHub by reading XML files and loading them in memory. -
Method Summary
Modifier and Type Method Description void
addAlbum(Album album)
Add an album into the list.void
addElement(AudioElement element)
Add an audio element into the list.void
addElementToAlbum(java.lang.String elementTitle, java.lang.String albumTitle)
Add an audio element to an album.void
addPlaylist(PlayList playlist)
Add a playlist into the list.java.util.Iterator<Album>
albums()
void
close()
Close the server.void
deletePlayList(java.lang.String playListTitle)
Delete a playlist from the list.java.util.Iterator<AudioElement>
elements()
java.util.List<Album>
getAlbums()
java.util.List<AudioElement>
getAudioElements()
java.util.List<PlayList>
getPlaylists()
void
launch(int port)
Start the server and wait for a connection.java.util.Iterator<PlayList>
playlists()
void
saveAlbums()
Write the content of the albums list into the XML file.void
saveElements()
Write the content of the audio elements list into the XML file.void
savePlayLists()
Write the content of the playlists list into the XML file.void
updateAlbums(java.util.List<Album> list)
Replace the albums list with a new one.void
updateElements(java.util.List<AudioElement> list)
Replace the elements list with a new one.void
updatePlaylists(java.util.List<PlayList> list)
Replace the playlists list with a new one.Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, run, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Field Details
-
DIR
public static final java.lang.String DIR -
ALBUMS_FILE_PATH
public static final java.lang.String ALBUMS_FILE_PATH -
PLAYLISTS_FILE_PATH
public static final java.lang.String PLAYLISTS_FILE_PATH -
ELEMENTS_FILE_PATH
public static final java.lang.String ELEMENTS_FILE_PATH -
AUDIOFILES_FILE_PATH
public static final java.lang.String AUDIOFILES_FILE_PATH
-
-
Constructor Details
-
MusicHubServer
public MusicHubServer()MusicHubServer constructor Prepare the MusicHub by reading XML files and loading them in memory.
-
-
Method Details
-
launch
public void launch(int port)Start the server and wait for a connection. Launch the ServerInstance in a new thread if a new client is connected.- Parameters:
int
- port the port where the server should listen
-
close
public void close()Close the server. -
albums
-
playlists
-
elements
-
getAudioElements
-
getAlbums
-
getPlaylists
-
addElement
Add an audio element into the list.- Parameters:
AudioElement
- element the AudioElement to add in the list.
-
addAlbum
Add an album into the list.- Parameters:
Album
- album the album to add in the list.
-
addPlaylist
Add a playlist into the list.- Parameters:
PlayList
- playlist the playlist to add in the list.
-
updateElements
Replace the elements list with a new one.- Parameters:
List
-list the new list.
-
updateAlbums
Replace the albums list with a new one. -
updatePlaylists
Replace the playlists list with a new one.- Parameters:
List
-list the new list.
-
deletePlayList
Delete a playlist from the list.- Parameters:
String
- playlistTitle the name of the playlist to delete.- Throws:
NoPlayListFoundException
-
addElementToAlbum
public void addElementToAlbum(java.lang.String elementTitle, java.lang.String albumTitle) throws NoAlbumFoundException, NoElementFoundExceptionAdd an audio element to an album.- Parameters:
String
- elementTitle title of the audio element to addString
- albumTitle title of the album- Throws:
NoAlbumFoundException
NoElementFoundException
-
saveAlbums
public void saveAlbums()Write the content of the albums list into the XML file. -
savePlayLists
public void savePlayLists()Write the content of the playlists list into the XML file. -
saveElements
public void saveElements()Write the content of the audio elements list into the XML file.
-


Berkeley DB was designed to provide industrial-strength database services to application developers, without requiring them to become database experts. It is a classic C library style toolkit, providing a broad base of functionality to application writers. Berkeley DB was written by programmers, for programmers: its modular design surfaces simple, orthogonal interfaces to core services, and it provides mechanism (for example, good thread support) without imposing policy (for example, the use of threads is not required). Just as importantly, Berkeley DB allows developers to balance performance against the need for crash recovery and concurrent use. An application can use the storage structure that provides the fastest access to its data and can request only the degree of logging and locking that it needs.
Berkeley DB is powerful enough to use as the underlying support for large network servers and simple enough to use in a fast-prototype for a single-user application. There are many large, complex, multi-threaded servers running on fast, multi-processor machines, depending on Berkeley DB transaction semantics for recovery after system or application failure.
Most Berkeley DB applications fall into two categories: basic data management and data management with recovery. In basic data management, applications use the Berkeley DB access methods to manage their data without concern for application or system failure. The only Berkeley DB interfaces necessary for this purpose are the Access Method and Cursor interfaces. In data management with recovery, applications add calls to the transaction subsystem, in order to ensure complete recoverability in the face of application or system failure.
Generally, both of these categories involve linking Berkeley DB into the process' address space. It is also possible to implement client-server models using Berkeley DB. In such cases, application writers use Berkeley DB to implement the server as described above, and then select an IPC mechanism which the client will use to talk to the server. (The Berkeley DB distribution does not include an IPC mechanism, and it is up to the application writer to implement this functionality.)
While Berkeley DB's primary purpose is to provide a complete database environment to applications, it is important to realize that Berkeley DB includes general-purpose shared memory buffer-pool and general-purpose lock manager interfaces, among others. These interfaces are directly useful to application writers that may have no interest in databases.
Additionally, because of the tool-based approach and separate interfaces for each subsystem, you can support a complete transaction environment for other system operations, e.g., Berkeley DB allows you to wrap transactions around the standard UNIX read/write operations! Further, Berkeley DB was designed to interact correctly with the UNIX toolset, a feature no other database package offers. For example, Berkeley DB supports "hot backups" (database backups while the database is in use), and you can use the standard UNIX tools to do those backups, e.g., dump(1), tar(1), cpio(1), pax(1) or even cp(1).
Finally, because scripting languages interfaces are available for Berkeley DB (notably Python, Tcl and Perl), application writers can build incredibly powerful database engines with little effort, (e.g., you can build transaction-protected database applications using your favorite scripting languages, an increasingly important feature in a world using CGI scripts to deliver HTML).


This is a package for Non-Negative Linear Models (NNLM). It implements fast sequential coordinate descent algorithms for non-negative linear regression and non-negative matrix factorization (NMF). It supports mean square error and Kullback-Leibler divergence loss. Many other features are also implemented, including missing value imputation, domain knowledge integration, designable W and H matrices and multiple forms of regularizations.
| Version: | 0.4.2 |
| Depends: | R (≥ 3.0.1) |
| Imports: | Rcpp (≥ 0.11.0), stats, utils |
| LinkingTo: | Rcpp, RcppArmadillo, RcppProgress |
| Suggests: | testthat, knitr, rmarkdown, mice, missForest, ISOpureR |
| Published: | 2018-06-18 |
| Author: | Xihui Lin [aut, cre], Paul C Boutros [aut] |
| Maintainer: | Xihui Lin <ericxihuilin at gmail.com> |
| BugReports: | https://github.com/linxihui/NNLM/issues |
| License: | BSD_2_clause + file LICENSE |
| URL: | https://github.com/linxihui/NNLM |
| NeedsCompilation: | yes |
| Materials: | NEWS |
| In views: | MissingData |
| CRAN checks: | NNLM results |
| Reference manual: | NNLM.pdf |
| Vignettes: |
Fast and versatile NMF |
| Package source: | NNLM_0.4.2.tar.gz |
| Windows binaries: | r-devel: NNLM_0.4.2.zip, r-release: NNLM_0.4.2.zip, r-oldrel: NNLM_0.4.2.zip |
| OS X binaries: | r-release: NNLM_0.4.2.tgz, r-oldrel: NNLM_0.4.2.tgz |
| Old sources: | NNLM archive |
Please use the canonical form https://CRAN.R-project.org/package=NNLM to link to this page.


Why Should I Use HTML5's New Elements?
A question I’m frequently asked typically goes something like this:
“I hear about all these new HTML tags, but I don’t have any problem with using

s like I’ve always done. Why should I care?”
The questioners are referring to the new elements introduced with HTML5, including
(which encapsulates a part of your page containing navigation elements),

(think of a newspaper story, with its heading, byline, callouts, etc.), and <time>
, among others. While it’s true the Web survived for many years without these new elements, there’s no reason to stand on tradition. The new elements provide a number of benefits to both Web developers and end users, and, best of all, you can start using them right away!
- Content aggregators and search providers can better figure out your content. News aggregators and search engines are everywhere, and are often an excellent way to disseminate your published content. Why not make it easy on them by explicitly marking what parts of your page they care about and what parts they can ignore?
- Screen readers need all the help they can get. Many potential visitors require assistive devices to view the Web, but Web sites have been slow to adopt tools to help. HTML5’s new elements help out by letting screen readers know what sections of the page represent real content, and what sections are simply visual fluff.
- The new tags are there, regardless. Either natively or with easy and clever workarounds, practically all browsers in use today recognize the new elements. Plus, they’ve been standardized by a number of industry groups. It’s never been easier to simply start working with them and you can rest easy knowing the new elements are here to stay.
- Your coworkers will thank you. The new elements are far more descriptive than the

standby is, meaning the same content is considerably more understandable to other developers looking at your HTML source. Self-explanatory semantic markup reduces confusion and is often cleaner-looking than its cousins with pervasive use of

tags. - You’re probably already using them. These elements were added to the HTML5 specification because Web designers were already using them…just in a more verbose format. Most Web sites have common sections, like a header, navigation, and footer, yet there was no way to signify this with HTML. Thanks to the new elements, instead of something like this (which used to be all over the Internet):

...

…we now have a much more concise representation of the same concept:
...
Much better.
Whether you’re working on a Web site for the newest, hottest start-up or helping maintain a 10-year-old internal Web site, the new HTML5 elements can provide you with a number of benefits. They’re easy to start using, respected by Web developers and search engines alike, and, soon, you’ll start to wonder how you lived without them.
Have you encountered other benefits of using the new HTML5 elements? Have a particularly-elegant use case for one? Let us know in the comments!


Sign in with your google account to begin exploring the world of NITK and the every day tales of its population. Chronicle your own experiences of the events that happen in campus.
Sign in using your google account:
At Your Service
Up to Date
We update the portal regularly to keep the news fresh.


EMAIL_QUEUE = GirlFriday::WorkQueue.new(:email) do |msg|
UserMailer.registration_email(msg).deliver
end
EMAIL_QUEUE.push(:email => @user.email, :name => @user.name)
Pros
Cons
Post.find(9).send_to_twitter!
Post.find(9).delay.send_to_twitter!
rake jobs:work
Pros
Cons
class Archive
@queue = :file_serve
def self.perform(repo_id, branch = 'master')
repo = Repository.find(repo_id)
repo.create_archive(branch)
end
end
Resque.enqueue(Archive, self.id, branch)
QUEUE=file_serve rake resque:work
Pros
Cons
Celluloid is a concurrent object oriented programming framework for Ruby which lets you build multithreaded programs out of concurrent objects just as easily as you build sequential programs out of regular objects
SuckerPunch.config do
queue name: :log_queue, worker: LogWorker, size: 10
queue name: :awesome_queue, worker: AwesomeWorker, size: 2
end
class LogWorker
include SuckerPunch::Worker
def perform(event)
Log.new(event).track
end
end
SuckerPunch::Queue[:log_queue].perform("login")
SuckerPunch::Queue[:log_queue].async.perform("login")
Pros
Cons
class HardWorker
include Sidekiq::Worker
def perform(name, count)
puts 'Doing hard work'
end
end
HardWorker.perform_async('bob', 5)
sidekiq -c 25
Pros
Cons