#include <StateMachine.h>
Public Member Functions | |
| StateMachine (entity_type *FSMowner) | |
| Non-default constructor. | |
| void | SetPrevState (State< entity_type > *state) |
| Set previous state. | |
| void | SetCurrState (State< entity_type > *state) |
| Set current state. | |
| void | SetGlobalState (State< entity_type > *state) |
| Set global state. | |
| void | Update () const |
| Updates the state. | |
| void | ChangeState (State< entity_type > *newState) |
| Change state. | |
| void | RevertToPrevState () |
| Revert to previous state. | |
| State< entity_type > * | GetPrevState () |
| Accessor method. | |
| State< entity_type > * | GetCurrState () |
| Accessor method. | |
| State< entity_type > * | GetGlobalState () |
| Accessor method. | |
| bool | IsInState (const State< entity_type > &state) const |
| Compare a state to current state. |
Definition at line 22 of file StateMachine.h.
| StateMachine< entity_type >::StateMachine | ( | entity_type * | FSMowner | ) | [inline] |
Non-default constructor.
The non-default constructor
| FSMowner | - Owner of the FSM |
Definition at line 33 of file StateMachine.h.
00034 { 00035 m_owner = FSMowner; 00036 m_prevState = NULL; 00037 m_currState = NULL; 00038 m_globalState = NULL; 00039 }
| void StateMachine< entity_type >::SetPrevState | ( | State< entity_type > * | state | ) | [inline] |
Set previous state.
Sets the previous state
| state | - The state to set |
Definition at line 50 of file StateMachine.h.
| void StateMachine< entity_type >::SetCurrState | ( | State< entity_type > * | state | ) | [inline] |
Set current state.
Sets the current state
| state | - The state to set |
Definition at line 61 of file StateMachine.h.
| void StateMachine< entity_type >::SetGlobalState | ( | State< entity_type > * | state | ) | [inline] |
Set global state.
Sets the global state
| state | - The state to set |
Definition at line 72 of file StateMachine.h.
00072 { m_globalState = state; }
| void StateMachine< entity_type >::Update | ( | ) | const [inline] |
Updates the state.
Execute the current state
Definition at line 81 of file StateMachine.h.
00082 { 00083 if (m_globalState) 00084 m_globalState->Execute(m_owner); 00085 if (m_currState) 00086 m_currState->Execute(m_owner); 00087 }
| void StateMachine< entity_type >::ChangeState | ( | State< entity_type > * | newState | ) | [inline] |
Change state.
Changes previous state to current state, and current state to newState
| newState | - New state to set |
Definition at line 98 of file StateMachine.h.
00099 { 00100 m_prevState = m_currState; 00101 m_currState->Exit(m_owner); 00102 m_currState = newState; 00103 m_currState->Enter(m_owner); 00104 }
| void StateMachine< entity_type >::RevertToPrevState | ( | ) | [inline] |
Revert to previous state.
Reverts to the previous state
Definition at line 113 of file StateMachine.h.
| State<entity_type>* StateMachine< entity_type >::GetPrevState | ( | ) | [inline] |
Accessor method.
Access and return the previous state
Definition at line 122 of file StateMachine.h.
| State<entity_type>* StateMachine< entity_type >::GetCurrState | ( | ) | [inline] |
Accessor method.
Access and return the current state
Definition at line 131 of file StateMachine.h.
| State<entity_type>* StateMachine< entity_type >::GetGlobalState | ( | ) | [inline] |
Accessor method.
Access and return the global state
Definition at line 140 of file StateMachine.h.
00140 { return m_globalState; }
| bool StateMachine< entity_type >::IsInState | ( | const State< entity_type > & | state | ) | const [inline] |
Compare a state to current state.
Returns true if current state's type is equal to the type of class passed as parameter
| state | - State to compare |
Definition at line 151 of file StateMachine.h.


Welcome, Kelly!
User Profile
Kelly Miller
- Raleigh, North Carolina
- Software Engineer | Designer
- www.github.com/designbright
-<EMAIL_ADDRESS>Education
- U. of North Carolina at Chapel Hill
- B.A. Exercise and Sport Science
- Women's Rugby Team
- Dean's List
- University of Kentucky
- Majors: Kinesiology and Education
- Women's Soccer Team
- Academic All-SEC
- The Iron Yard
- Full-Stack Engineering Certification
Skills
-
HTML
-
CSS
-
JavaScript
-
React
-
NodeJS
-
SQL
-
NoSQL
-
MongoDB
-
Logo Design
-
UI / UX
-
Data Analytics and Visualization
Meet the Designer
Hello, world!
I'm Kelly. I am a Software Engineer and Designer. I am a self-taught 'creative-ist' with a passion for learning and creating colorful things for the internet.
ExperienceTimeline
-
Full-Stack Software Engineer
Created front and back-end web applications using HTML, CSS, JavaScript, NodeJS, Express, MongoDB, SQL, NoSQL, and API integration
Collaborated with peers to debug and refactor code
Worked in an agile environment to complete paired programming activities
-
People Operations Coordinator
Executive Onboarding Program Manager
Successfully onboarded Red Hat’s Chief Information Officer; VP, Technical Enablement; VP, Tax; VP Global Sales; VP, Sales - West;
Supported Global Talent Acquisition via coordinating candidate interview logistics and documenting team processes
Worked with UX Designer to create a GitHub Getting Started Guide for Linux users
-
Talent Acquisition Coordinator
Supported Product Engineering department via scheduling candidate interviews and composing offer letters
Point of contact for Software Engineering Campus Recruiting Program


dhclient.leases
Section: File Formats (5)Index Return to Main Contents
NAME
dhclient.leases - DHCP client lease databaseDESCRIPTION
The Internet Systems Consortium DHCP client keeps a persistent database of leases that it has acquired that are still valid. The database is a free-form ASCII file containing one valid declaration per lease. If more than one declaration appears for a given lease, the last one in the file is used. The file is written as a log, so this is not an unusual occurrance.The format of the lease declarations is described in dhclient.conf(5).
FILES
/var/lib/dhclient/dhclient.leasesSEE ALSO
dhclient(8), dhcp-options(5), dhclient.conf(5), dhcpd(8), dhcpd.conf(5), RFC2132, RFC2131.AUTHOR
dhclient(8) was written by Ted Lemon under a contract with Vixie Labs. Funding for this project was provided by Internet Systems Consortium. Information about Internet Systems Consortium can be found at https://www.isc.org.
Index
This document was created by man2html, using the manual pages.
Time: 05:33:59 GMT, December 24, 2015


Welcome to McGill University!
Staff Login:
{% if error %}
Error:
{{ error }} {% endif %}
For any questions about this web app,
please email
Yujing Zou
at
<EMAIL_ADDRESS>Thank you very much!


Voxel in an octree - a c++ implementation
Introduction
A voxel is the 3D counterpart of a 2D pixel, it represents a value on a regular grid in 3D space [from Wikipedia], see below an illustration of a regular voxel grid.
An octree is a tree structure in which each internal node has exactly eight children. A node that has no children is called a leaf node. Octrees are most often used to partition a three dimensional space by recursively subdividing it into eight octants [wikipedia], see below.
Typically, each voxel is represented as the leaf node of the octree, and doesn’t have their position (their coordinates) explicitly encoded along with their values. Instead, the position of a voxel is inferred based upon its position relative to other voxels.
In this post, I’ll show a design of voxel index that is independent on which level this particular voxel is in. The implementation is from Simon Fuhrmann’s implementation of Floating Scale Surface Reconstruction. Thanks the original authors for sharing the awesome code, the git repo.
Implementation
Each voxel is indexed by a 64-bit ID, the 63rd index is the unused bit (As convention, the rightmost bit is the 0th bit). Let’s first start with the simplest case, see the node below with 8 children, the index of the eight leaf nodes (voxels) from the first to the eighth octant are: 111, 110, 100, 101, 011, 010, 000, 001. Each voxel is indexed in the order of zyx. In the current case, the level of the root node (the parent node) is 0 and the level of each leaf node is 1. So for the 64-bit voxel index, 21 bits are used to
represent each coordinate of a voxel, and the maximum level of the voxel is 21, the maximum level of a node is 20. So if the index of the voxel is stored in the lth bit
, the first (l-1)
bits are used to store the coordinates of the direct parent node. For example, if the 21st bit stores the dimension index of the octant that the voxel is in, then the first 20 bits store the path to the parent node.
There are generally two methods that interest us:
Get the index of a certain voxel given the level of voxel, the path to the parent node and the octant.
Get the position of a certain voxel given the size of the root node, the position of the center of the root node, and the index of this certain voxel.
Index of Voxel
The index is irrelevant to the level that it’s in, i.e. the voxel shared by nodes from different levels has fixed index. Since 000 can mean either octant 7 or no node, in order to get the correct parent node index for the voxel, it’s important to have both node path and node level.
We use a temporary 64-bit variable index
to store the index of a specific level l
, and a uint64_t array variale to store the index for the x, y, z dimensions seperately, the x, y and z coordinates for each level are stored in element 0, 1, and 2 with higher level in higher bit.
uint64_t index = (path >> (3 * l)) & 7;
for (int i = 0; i < 3; --i)
{
coords[i] = coords[i] << 1; // move the index for the previous level up 1 bit
coords[i] = (coords[i] & (1 << i)) >> i;
}
After we get the index of the direct parent node, we need to retrieve the index of the voxel according to the octant. First we get the index for each dimension and store it in the 0 bit of the cooresponding array variable element. Then we move this bit up 20-level
, where level is the level that parent node is in. The reason why it should 20
, not 21
is because there are 21-level
vacant bits, therefore the left most one is 20-l
th.
for (int i = 0; i < 3; ++i)
{
coords[i] += (octant >> i) & 1; // don't think + is necessary
coords[i] = coords[i] << (20 - level);
}
Position of Voxel
Let’s start with the simplest case, see above the node with 8 children, and use the 2nd octant as an example, whose index is 110
. The maximum index for each dimension is 1 = 2^0
. So if the index for one dimension is 1, then center - size / 2 + 1 / dim_max * size = center + size / 2
is the coordinate for that dimension, otherwise, it’s center - size / 2 + 0 / dim_max * size = center - size / 2
. I haven’t thought of an intuitive explanation for multiple levels yet.
math::Vec3d
VoxelIndex::compute_distance(math::Vec3d const& center, double size) const
{
double const dim_max = static_cast<double>(1 << 20);
double const fx = static_cast<double>(get_offset_x()) / dim_max;
double const fy = static_cast<double>(get_offset_y()) / dim_max;
double const fz = static_cast<double>(get_offset_z()) / dim_max;
return center - size / 2 + math::Vec3d(fx, fy, fz) * size;
}
int32_t
VoxelIndex::get_offset_x(void) const
{
return static_cast<int32_t>(this->index & 0x1fffff);
}


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When you work with us,you are part of a team of committed collaborators.All aspects pf our software development process are integrated ,interactive
and agile.
Our approach unifies design,development and product management to create exceptional prodects.
We start each project by understand your business goals, the user's needs and the product requirements
Then we help translate them into effective and elegant solutions.
We sign a contract or write a line of code our team will spend the necessary time needed to understand your product vision
The outcome of this scoping session is a proposal or a high-level statement of work
based on your requirements,we can provide acomplete offering or just the pieces you need.


style="overflow-y:scroll;">
$MOTTO_LINE1
$MOTTO_LINE2
$STAY_TUNED
$STAY_TUNED2
$PLAY_BTN_CAPTION
$GAME_CLIENT_DEF $CLIENT_SIZE_AND_VERSION
$PLAY_BTN_CAPTION2
$GAME_CLIENT_DEF2 $CLIENT_SIZE_AND_VERSION
$TITLE_NEWS
$NEWSFEED
$PAGE_HOMEHEAD
$TITLE_ABOUT
$PAGE_ABOUT
Terms of Service
Privacy Policy
Legal Info
Support:
<EMAIL_ADDRESS>$TITLE_BEST_PLAYERS
$TITLE_BEST_PLAYERS1
$TITLE_BEST_PLAYERS2
$TITLE_BEST_PLAYERS3
$TITLE_BEST_GUILDS
$TITLE_BEST_PLAYERS
$COL_PLACE
$COL_NAME
$COL_LEVEL
$COL_FAME
$COL_WINLOSS
$RANKING_PAGES0
$RANKING_TYPE0
$TITLE_BEST_PLAYERS2
$COL_PLACE
$COL_NAME
$COL_LEVEL
$COL_FAME
$COL_WINLOSS
$RANKING_PAGES2
$RANKING_TYPE2
$TITLE_BEST_PLAYERS1
$COL_PLACE
$COL_NAME
$COL_LEVEL
$COL_FAME
$COL_WINLOSS
$RANKING_PAGES1
$RANKING_TYPE1
$TITLE_BEST_PLAYERS3
$COL_PLACE
$COL_NAME
$COL_LEVEL
$COL_FAME
$COL_WINLOSS
$RANKING_PAGES3
$RANKING_TYPE3
$TITLE_BEST_GUILDS
$COL_PLACE
$COL_NAME
$COL_LEVEL
$COL_EXP
$COL_LEADER
$RANKING_PAGES_GUILDS
$RANKING_GUILDS
$SUGGESTED_THREADS
$FORUM_PAGE_HOME
$USERNAME
style='visibility:hidden'>
$BTN_LOGIN
$BTN_SIGNUP
$USERNAME
$LABEL_ABOUT
$LABEL_LEADERBOARD
$LABEL_FORUMS
English
Русский
$BTN_ADDQUOTE
$TITLE_LOGIN
$LABEL_LOGIN1
$BTN_ENTER
$TITLE_NEW_ACCOUNT
$LABEL_NEWACC1
$LABEL_NEWACC2
$LABEL_NEWACC3
$BTN_NEWACC
MOD THREAD
Apply
Player
$LABEL_TITLE
$LABEL_GUILD
$LABEL_REALNAME
$LABEL_LOCATION
$COLUMN_LEVEL
$COLUMN_FAME
$COLUMN_W_L
$COLUMN_PLACE
$LABEL_CUSTOMDECKS:
$LABEL_RANDOMDECKS:
$LABEL_DRAFTS:
$LABEL_TOTAL:


Constructor
new GameObject(game, boundingBox)
Creates a base GameObject
Parameters:
| Name | Type | Description |
|---|---|---|
game |
Object | The game manager class |
boundingBox |
Object | Initial size and position of this GameObject |
- Source:
Extends
Members
dimensions
Gets the bounding box dimensions of this Object
- Source:
Methods
AbstractMethod(methodName)
Raises an error if an abstract base class method is called
Parameters:
| Name | Type | Description |
|---|---|---|
methodName |
string | The name of the method that is abstract |
- Overrides:
- Source:
collision(object) → {boolean}
Simple collision test between this GameObject and another
Parameters:
| Name | Type | Description |
|---|---|---|
object |
Object | The GameObject to check for intersection |
- Source:
Returns:
true/false if colliding
- Type
- boolean
draw()
Abstract interface definition for the draw method.
Must be overridden in derived classes.
- Source:
intersects(object) → {Object}
Performs a comprehensive collision test that checks where the two objects are
overlapping and indicates the closest point to move them out of collision.
Parameters:
| Name | Type | Description |
|---|---|---|
object |
Object | The object to check for intersection |
- Source:
Returns:
a dictionary with side: axis of intersection and
pos: closest point of non-intersection
- Type
- Object


|
tesseract
5.0.0-alpha-619-ge9db
|
#include "adaptive.h"
#include "emalloc.h"
#include "classify.h"
#include <cassert>
#include <cstdio>
Go to the source code of this file.
Namespaces | |
| tesseract | |
Functions | |
| void | AddAdaptedClass (ADAPT_TEMPLATES Templates, ADAPT_CLASS Class, CLASS_ID ClassId) |
| void | FreeTempConfig (TEMP_CONFIG Config) |
| void | FreeTempProto (void *arg) |
| ADAPT_CLASS | NewAdaptedClass () |
| void | free_adapted_class (ADAPT_CLASS adapt_class) |
| void | free_adapted_templates (ADAPT_TEMPLATES templates) |
| TEMP_CONFIG | NewTempConfig (int MaxProtoId, int FontinfoId) |
| TEMP_PROTO | NewTempProto () |
| ADAPT_CLASS | ReadAdaptedClass (TFile *fp) |
| PERM_CONFIG | ReadPermConfig (TFile *fp) |
| TEMP_CONFIG | ReadTempConfig (TFile *fp) |
| void | WriteAdaptedClass (FILE *File, ADAPT_CLASS Class, int NumConfigs) |
| void | WritePermConfig (FILE *File, PERM_CONFIG Config) |
| void | WriteTempConfig (FILE *File, TEMP_CONFIG Config) |
| void AddAdaptedClass | ( | ADAPT_TEMPLATES | Templates, |
| ADAPT_CLASS | Class, | ||
| CLASS_ID | ClassId | ||
| ) |
This routine adds a new adapted class to an existing set of adapted templates.
| Templates | set of templates to add new class to |
| Class | new class to add to templates |
| ClassId | class id to associate with new class |
Definition at line 45 of file adaptive.cpp.
| void free_adapted_class | ( | ADAPT_CLASS | adapt_class | ) |
Definition at line 124 of file adaptive.cpp.
| void free_adapted_templates | ( | ADAPT_TEMPLATES | templates | ) |
Definition at line 182 of file adaptive.cpp.
| void FreeTempConfig | ( | TEMP_CONFIG | Config | ) |
This routine frees all memory consumed by a temporary configuration.
| Config | config to be freed |
Definition at line 74 of file adaptive.cpp.
| void FreeTempProto | ( | void * | arg | ) |
Definition at line 81 of file adaptive.cpp.
| ADAPT_CLASS NewAdaptedClass | ( | ) |
This operation allocates and initializes a new adapted class data structure and returns a ptr to it.
Definition at line 102 of file adaptive.cpp.
| TEMP_CONFIG NewTempConfig | ( | int | MaxProtoId, |
| int | FontinfoId | ||
| ) |
This routine allocates and returns a new temporary config.
| MaxProtoId | max id of any proto in new config |
| FontinfoId | font information from pre-trained templates |
Definition at line 203 of file adaptive.cpp.
| TEMP_PROTO NewTempProto | ( | ) |
This routine allocates and returns a new temporary proto.
Definition at line 228 of file adaptive.cpp.
| ADAPT_CLASS ReadAdaptedClass | ( | TFile * | fp | ) |
Read an adapted class description from file and return a ptr to the adapted class.
| fp | open file to read adapted class from |
Definition at line 281 of file adaptive.cpp.
| PERM_CONFIG ReadPermConfig | ( | TFile * | fp | ) |
Read a permanent configuration description from file and return a ptr to it.
| fp | open file to read permanent config from |
Definition at line 362 of file adaptive.cpp.
| TEMP_CONFIG ReadTempConfig | ( | TFile * | fp | ) |
Read a temporary configuration description from file and return a ptr to it.
| fp | open file to read temporary config from |
Definition at line 386 of file adaptive.cpp.
| void WriteAdaptedClass | ( | FILE * | File, |
| ADAPT_CLASS | Class, | ||
| int | NumConfigs | ||
| ) |
This routine writes a binary representation of Class to File.
| File | open file to write Class to |
| Class | adapted class to write to File |
| NumConfigs | number of configs in Class |
Definition at line 409 of file adaptive.cpp.
| void WritePermConfig | ( | FILE * | File, |
| PERM_CONFIG | Config | ||
| ) |
This routine writes a binary representation of a permanent configuration to File.
| File | open file to write Config to |
| Config | permanent config to write to File |
Definition at line 481 of file adaptive.cpp.
| void WriteTempConfig | ( | FILE * | File, |
| TEMP_CONFIG | Config | ||
| ) |
This routine writes a binary representation of a temporary configuration to File.
| File | open file to write Config to |
| Config | temporary config to write to File |
Definition at line 503 of file adaptive.cpp.


Multi-Search-Template APIedit
The multiSearchTemplate
API executes multiple search template
requests in a single http request in parallel.
Multi-Search-Template Requestedit
The MultiSearchTemplateRequest
is built empty and you add all of the searches that
you wish to execute to it:
String [] searchTerms = {"elasticsearch", "logstash", "kibana"}; MultiSearchTemplateRequest multiRequest = new MultiSearchTemplateRequest(); for (String searchTerm : searchTerms) { SearchTemplateRequest request = new SearchTemplateRequest(); request.setRequest(new SearchRequest("posts")); request.setScriptType(ScriptType.INLINE); request.setScript( "{" + " \"query\": { \"match\" : { \"{{field}}\" : \"{{value}}\" } }," + " \"size\" : \"{{size}}\"" + "}"); Map<String, Object> scriptParams = new HashMap<>(); scriptParams.put("field", "title"); scriptParams.put("value", searchTerm); scriptParams.put("size", 5); request.setScriptParams(scriptParams); multiRequest.add(request); }
|
Create an empty |
|
|
Create one or more |
|
|
Add the |
Optional argumentsedit
The multiSearchTemplate’s max_concurrent_searches
request parameter can be used to control
the maximum number of concurrent searches the multi search api will execute.
This default is based on the number of data nodes and the default search thread pool size.
Synchronous Executionedit
The multiSearchTemplate
method executes `MultiSearchTemplateRequest`s synchronously:
MultiSearchTemplateResponse multiResponse = client.msearchTemplate(multiRequest, RequestOptions.DEFAULT);
Asynchronous Executionedit
The multiSearchTemplateAsync
method executes MultiSearchTemplateRequest`s asynchronously,
calling the provided `ActionListener
when the response is ready.
client.msearchTemplateAsync(multiRequest, RequestOptions.DEFAULT, listener);
The parameters are the MultiSearchTemplateRequest
to execute and the ActionListener
to use when
the execution completes
The asynchronous method does not block and returns immediately. Once it is
completed the ActionListener
is called back using the onResponse
method
if the execution successfully completed or using the onFailure
method if
it failed.
A typical listener for MultiSearchTemplateResponse
looks like:
MultiSearchTemplateResponseedit
The MultiSearchTemplateResponse
that is returned by executing the multiSearchTemplate
method contains
a MultiSearchTemplateResponse.Item
for each SearchTemplateRequest
in the
MultiSearchTemplateRequest
. Each MultiSearchTemplateResponse.Item
contains an
exception in getFailure
if the request failed or a
SearchResponse
in getResponse
if
the request succeeded:
for (Item item : multiResponse.getResponses()) { if (item.isFailure()) { String error = item.getFailureMessage(); } else { SearchTemplateResponse searchTemplateResponse = item.getResponse(); SearchResponse searchResponse = searchTemplateResponse.getResponse(); searchResponse.getHits(); } }
|
An array of responses is returned - one response for each request |
|
|
Failed search template requests have error messages |
|
|
Successful requests contain a |


Message History Limit
Saved
New Message Sound
Emoticons
Load older history
More history available for this day ⤴
Send
☺
Connecting
⚙
⤴
⤵


Hsqldb installation is very easy. Just extract the file in the archive. That's it!
Following shows steps to startup the database server.
Let's create new folder to hold database files.
Select File - New - Folder.
Let's name the folder data. It seems Hsqldb script files use data.
Create server.properties file in folder data with the following script.
The script tells Hsqldb to name the database file demo and use port 9001 for management access (this this the default port number). server.properties
server.database=demo
server.port=9001
It is possible to start and maintain Hsqldb by typing Java commands but since
that's tiresome, let's just copy them from the demo folder.
Files to copy are:
runManager.bat - GUI utility to execute SQL commands
runManagerSwing.bat - Same as runManager.bat but with Swing
runServer.bat - Script to start Hsqldb database server
runUtil.bat - Script to use Hsqldb utilities
runWebServer.bat - Script to start Hsqldb web server
Select these file with your mouse. Press the Ctrl
key while clicking the left mouse button to select multiple files at once.
Keep pressing the Ctrl and the left mouse button while
dragging the mouse pointer to the data folder. Release the mouse to copy the files.
Move to the data folder and check that the files were copied.
It's finally time to start up the Hsqldb server!
Select the runServer.bat file.
A console window should open and display database server start up process. Do not close this window! Proceed to the next page to
properly shutdown the server.
If the console window closes, it means there is something wrong. Recheck of each step.


Session is an Android application developed in Android Studio that I am working on when I find the time to do so.
The main idea behind it, is that it will allow users to discover each other, and be paired based entirely on musical interests.
The authorization procedure involves quick login by aid of the ParseDB on AWS. The user can then set up their profile, as well as explore a seemingly infinite directory of artists, courtesy of the LastFM API.
Identifying types of users enables the idea that a user can take on the role of one seeking fellow musicians, so that the aim is not to be a space for matching people, but for a space to aid the formation and networking of local musicians. In doing so, the user can not only find friends with similar musical genre interests, but possibly be involved in the musical industry and help to cultivate it.
The motivation behind the idea is one that resonates with me personally as I noticed there a severe lack of communication and networking in the local music scene, so if you are a musician of some type, it is extremely difficult to find likeminded people and assemble them to just in general, make more local music, with the added benefit of being able to find new artists/bands, and make a few friends along the way.
Some noteworthy tech used include the following;


Create tooltips with CSS.
A tooltip is often used to specify extra information about something when the user moves the mouse pointer over an element:
Create a tooltip that appears when the user moves the mouse over an element:

Hover over me
Tooltip text

HTML) Use a container element (like
) and add the "tooltip"
class to it. When the user mouse over this
, it will show the tooltip text.
The tooltip text is placed inside an inline element (like ) with class="tooltiptext"
.
CSS) The tooltip
class use position:relative
, which is needed to position the tooltip text (position:absolute
). Note: See examples below on how to position the tooltip.
The tooltiptext
class holds the actual tooltip text. It is hidden by default, and will be visible on hover (see below). We have also added some basic styles to it: 120px width, black background color, white text color, centered text, and 5px top and bottom padding.
The CSS3 border-radius
property is used to add rounded corners to the tooltip text.
The :hover
selector is used to show the tooltip text when the user moves the mouse over the
 with class="tooltip"
.
In this example, the tooltip is placed to the right (left:105%
) of the "hoverable" text (
). Also note that top:-5px
is used to place it in the middle of its container element. We use the number 5 because the tooltip text has a top and bottom padding of 5px. If you increase its padding, also increase the value of the top
property to ensure that it stays in the middle (if this is something you want). The same applies if you want the tooltip placed to the left.
.tooltip .tooltiptext {
top: -5px;
left: 105%;
}
Result:
.tooltip .tooltiptext {
top: -5px;
right: 105%;
}
Result:
If you want the tooltip to appear on top or on the bottom, see examples below. Note that we use the margin-left
property with a value of minus 60 pixels. This is to center the tooltip above/below the hoverable text. It is set to the half of the tooltip's width (120/2 = 60).
.tooltip .tooltiptext {
width: 120px;
bottom: 100%;
left: 50%;
margin-left: -60px; /* Use half of the width (120/2 = 60), to center the tooltip */
}
Result:
.tooltip .tooltiptext {
width: 120px;
top: 100%;
left: 50%;
margin-left: -60px; /* Use half of the width (120/2 = 60), to center the tooltip */
}
Result:
To create an arrow that should appear from a specific side of the tooltip, add "empty" content after tooltip, with the pseudo-element class ::after
together with the content
property. The arrow itself is created using borders. This will make the tooltip look like a speech bubble.
This example demonstrates how to add an arrow to the bottom of the tooltip:
.tooltip .tooltiptext::after {
content: " ";
position: absolute;
top: 100%; /* At the bottom of the tooltip */
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: black transparent transparent transparent;
}
Result:
Position the arrow inside the tooltip: top: 100%
will place the arrow at the bottom of the tooltip. left: 50%
will center the arrow.
Note: The border-width
property specifies the size of the arrow. If you change this, also change the margin-left
value to the same. This will keep the arrow centered.
The border-color
is used to transform the content into an arrow. We set the top border to black, and the rest to transparent. If all sides were black, you would end up with a black square box.
This example demonstrates how to add an arrow to the top of the tooltip. Notice that we set the bottom border color this time:
.tooltip .tooltiptext::after {
content: " ";
position: absolute;
bottom: 100%; /* At the top of the tooltip */
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent black transparent;
}
Result:
This example demonstrates how to add an arrow to the left of the tooltip:
.tooltip .tooltiptext::after {
content: " ";
position: absolute;
top: 50%;
right: 100%; /* To the left of the tooltip */
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent black transparent transparent;
}
Result:
This example demonstrates how to add an arrow to the right of the tooltip:
.tooltip .tooltiptext::after {
content: " ";
position: absolute;
top: 50%;
left: 100%; /* To the right of the tooltip */
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent transparent black;
}
Result:
If you want to fade in the tooltip text when it is about to be visible, you can use the CSS3 transition
property together with the opacity
property, and go from being completely invisible to 100% visible, in a number of specified seconds (1 second in our example):
.tooltip .tooltiptext {
opacity: 0;
transition: opacity 1s;
}
.tooltip:hover .tooltiptext {
opacity: 1;
}


Store Manager : view all sales
sales record.
view all sales here below.
| index | sale made by | date | products sold | total sales volume |
|---|---|---|---|---|
| 1. | morris waracci | 8 October 2018 | 30 | 2500 ksh |
| 2. | morris waracci | 8 October 2018 | 2 | 300 ksh |
view all sales here below.
| index | sale made by | date | products sold | total sales volume |
|---|---|---|---|---|
| 1. | morris waracci | 8 October 2018 | 30 | 2500 ksh |
| 2. | morris waracci | 8 October 2018 | 2 | 300 ksh |


Here you can read our handy guide about what to do when.
This page was written by Eren Yalçın
Top of page


The Lean CLI is distributed as a Python package, so it requires pip
to be installed. To learn how to install pip
on your operating system, see Installing pip.
The commands which run the LEAN engine locally also depend on Docker being installed and running.


Michel Chatmajian
Software engineering student
Home
Projects
About Me
Resume
It's local on a remote server


Up to this point, it has been assumed that a parametrized URI is the input to a traversal. While this is true, the URI is actually converted into a JSON object and that serves as the primary object by which the traversal code can retrieve its parameters from. The mapping between a URI and JSON is described using an example (as taken from the Parameters Sample Kibble).
http://localhost:8182/graphs/tp-sample/parameters?a=1&b.a=marko&b.b=true&b.c.a=peter&c=[marko,povel]
{
"a" : 1,
"b" : {
"a" : "marko",
"b" : true,
"c" : {
"a" : "peter"
}
}
"c" : ["marko","povel"]
}
There are two JSON documents used during a Rexster query:
requestObject
(input) is generated from the query parameter component of the URI request.responseObject
(output) is provided by extension the results of the evaluation.Rexster provides support for parsing and constructing the requestObject
and responseObject
, respectively.


Session 6
We can add background images to divs just like we do background colors.
See the Pen Background-Image by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.We can adjust the size of the image by using a property called:
background-size
See the Pen Background-size by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.
We can apply a value of "cover
" so that we can scale the image to the largest size such that both its width and its height can fit inside the content area.
If you're feeling bold you can check out this slightly more advanced codepen that uses the background-attachment property.
See the Pen Background-size by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.Let's add a background image to a div. In the example we added a background image to the header.
Build gradients with CSS - because doing it with images is annoying!
An extreme example of how many colors you can use! It's unlimited!
See the Pen Linear Gradients by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.A more suble example using two colors.
See the Pen Linear Gradients - two color by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.See the Pen Radial Gradients - multi-color by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.See the Pen Radial Gradients - two color by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.That's why people have made things like the Ultimate CSS Gradient Generator to make our lives easier!
Add a background gradient to a section of your site
Simply put, allows you to create rounded corners on boxes.
Designers rejoice!
20px radius on all corners
See the Pen Border Radius by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.10px radius on top left & bottom right
40px on top right & bottom left
See the Pen Border-Radius - Two Values by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.10px radius on top left
25px radius top right
50px radius bottom right
100px radius bottom left
See the Pen Border-radius - four values by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.50% radius on all corners
See the Pen Border-radius - circle by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.In CSS, we can choose colors with hexadecimal #0000FF or rgb(0, 0, 255)
In CSS3, there are ways to control opacity of a color too!
controls the opacity of a color
.example2 {
background-color: rgba(255, 0, 0, 0.8);
}
color property using (red, green, blue, opacity)
opacity is a decimal value from 0 to 1
controls the opacity of an element
.example2 {
opacity: 0.8;
}
decimal value from 0 to 1
See the Pen RGBA & Opacity by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.Change some colors to have alpha transparency or opacity.
Use http://hex2rgba.devoth.com/ to convert HEX to RGBA.
Hint: Try making the navbar 80% opaque.
Add a drop shadow to a text element to make it stand out against its background.
The first value is the X-coordinate
Second value is the Y-coordinate
Third value is the blur radius
Fourth value is the color of the shadow
See the Pen Text Shadow by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.You can apply multiple text shadows by comma separating and also using different alpha transparencies with RGBA colors as well!
See the Pen Text-shadow - 3D by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.Adds a drop shadow to an element
box-shadow: offset-x offset-y color
.example1 { box-shadow: 5px 5px red; }
box-shadow: offset-x offset-y blur spread color
.example { box-shadow: 0 0 5px 5px red; }
box-shadow: offset-x offset-y blur spread color
.example { box-shadow: 0 2px 5px 0px red; }
See the Pen Box Shadow by Girl Develop It Boulder/Denver (@gdiboulder) on CodePen.
Interact with this example.


Hilo
The main Hilo Object / function
This module has the following classes:
Module description found:
src\test.js:34
API Docs for: 0.1.0-pre-dev-beta-10. Authored by Erik Royall and contributors.
The main Hilo Object / function
This module has the following classes:
src\test.js:34


A service is a component which runs in the background without direct interaction with the user.
As the service has no user interface, it is not bound to the lifecycle of an activity.
Uses:
To create a service, the class should implement the android.app.Service interface.
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
public class MyService extends Service {
...
}
In order for the Service to work, the implementing class should be declared in the AndroidManifest file.
<application ... >
<service android:name=".MyService">
</application>


{{- template "layout/default-start.html" $ -}}
The following table lists which units you can convert between:


(Top) Annual mean time series of climate forcings agents: CO 2 concentrations (from reconstructions [Yoshimori, Stocker, Raible, & Renold, 2005] and Mauna Loa measurements, NOAA), total solar irradiance (TSI; Coddington, Lean, Pilewskie, Snow, & Lindholm, 2016); note that effective solar forcing of 1 W/m 2 in TSI translates to ca. 0.175 W/m 2 when correcting for insulated area and albedo, which is accounted for by using a different scale), as well as estimated forcing from stratospheric and tropospheric aerosols (from NASA/GISS CMIP5). (Bottom) Indices of the Pacific Decadal Oscillation (PDO) and the Atlantic Multidecadal Oscillation (AMO). The AMO index is defined (Trenberth & Shea, 2006) as the difference in SST averages over the regions (0–60°N, 0–80°W) and (60°S–60°N). The PDO is calculated by projecting the first Empirical Orthogonal Function mode onto the median realization of HadSST<IP_ADDRESS> at 5° resolution (from the Climate Explorer, following Mantua, Hare, Zhang, Wallace, and Francis ( 1997)


Travel Tripper
Hotels
Complex
Link
Dropdown
Action
Another action
Something else here
Separated link
Start
Cancel


Congrats, you have been chosen to test new products for BusMall, a startup dedicated to disrupting the normal world of public transportation commerce.
In this test you will chose your favorite out of 3 products that show up as images. You will be allowed 25 clicks and then the test will end. You can then collect your reward of $200 but do not pass go.


public final class TextAttribute extends AttributedCharacterIterator.Attribute
TextAttribute
class defines attribute keys and
attribute values used for text rendering.
TextAttribute
instances are used as attribute keys to
identify attributes in
Font
,
TextLayout
,
AttributedCharacterIterator
,
and other classes handling text attributes. Other constants defined
in this class can be used as attribute values.
For each text attribute, the documentation provides:
null
is treated the same as the
default value and results in the default behavior.
TextAttribute.WEIGHT_BOLD
and
new Float(2.0)
indicate the same WEIGHT
.
Number
(used for
WEIGHT
, WIDTH
, POSTURE
,
SIZE
, JUSTIFICATION
, and
TRACKING
) can vary along their natural range and are
not restricted to the predefined constants.
Number.floatValue()
is used to get the actual value
from the Number
.
WEIGHT
, WIDTH
, and
POSTURE
are interpolated by the system, which
can select the 'nearest available' font or use other techniques to
approximate the user's request.
| Key | Value Type | Principal Constants | Default Value |
|---|---|---|---|
FAMILY |
String | See Font DIALOG ,
DIALOG_INPUT ,SERIF ,
SANS_SERIF , and MONOSPACED .
|
"Default" (use platform default) |
WEIGHT |
Number | WEIGHT_REGULAR, WEIGHT_BOLD | WEIGHT_REGULAR |
WIDTH |
Number | WIDTH_CONDENSED, WIDTH_REGULAR, WIDTH_EXTENDED |
WIDTH_REGULAR |
POSTURE |
Number | POSTURE_REGULAR, POSTURE_OBLIQUE | POSTURE_REGULAR |
SIZE |
Number | none | 12.0 |
TRANSFORM |
TransformAttribute |
See TransformAttribute IDENTITY |
TransformAttribute.IDENTITY |
SUPERSCRIPT |
Integer | SUPERSCRIPT_SUPER, SUPERSCRIPT_SUB | 0 (use the standard glyphs and metrics) |
FONT |
Font |
none | null (do not override font resolution) |
CHAR_REPLACEMENT |
GraphicAttribute |
none | null (draw text using font glyphs) |
FOREGROUND |
Paint |
none | null (use current graphics paint) |
BACKGROUND |
Paint |
none | null (do not render background) |
UNDERLINE |
Integer | UNDERLINE_ON | -1 (do not render underline) |
STRIKETHROUGH |
Boolean | STRIKETHROUGH_ON | false (do not render strikethrough) |
RUN_DIRECTION |
Boolean | RUN_DIRECTION_LTR RUN_DIRECTION_RTL |
null (use Bidi standard default) |
BIDI_EMBEDDING |
Integer | none | 0 (use base line direction) |
JUSTIFICATION |
Number | JUSTIFICATION_FULL | JUSTIFICATION_FULL |
INPUT_METHOD_HIGHLIGHT |
InputMethodHighlight ,Annotation |
(see class) | null (do not apply input highlighting) |
INPUT_METHOD_UNDERLINE |
Integer | UNDERLINE_LOW_ONE_PIXEL, UNDERLINE_LOW_TWO_PIXEL |
-1 (do not render underline) |
SWAP_COLORS |
Boolean | SWAP_COLORS_ON | false (do not swap colors) |
NUMERIC_SHAPING |
NumericShaper |
none | null (do not shape digits) |
KERNING |
Integer | KERNING_ON | 0 (do not request kerning) |
LIGATURES |
Integer | LIGATURES_ON | 0 (do not form optional ligatures) |
TRACKING |
Number | TRACKING_LOOSE, TRACKING_TIGHT | 0 (do not add tracking) |
Font
,
TextLayout
,
AttributedCharacterIterator
,
Serialized Form| Modifier and Type | Field and Description |
|---|---|
static TextAttribute |
BACKGROUND
Attribute key for the paint used to render the background of
the text.
|
static TextAttribute |
BIDI_EMBEDDING
Attribute key for the embedding level of the text.
|
static TextAttribute |
CHAR_REPLACEMENT
Attribute key for a user-defined glyph to display in lieu
of the font's standard glyph for a character.
|
static TextAttribute |
FAMILY
Attribute key for the font name.
|
static TextAttribute |
FONT
Attribute key used to provide the font to use to render text.
|
static TextAttribute |
FOREGROUND
Attribute key for the paint used to render the text.
|
static TextAttribute |
INPUT_METHOD_HIGHLIGHT
Attribute key for input method highlight styles.
|
static TextAttribute |
INPUT_METHOD_UNDERLINE
Attribute key for input method underlines.
|
static TextAttribute |
JUSTIFICATION
Attribute key for the justification of a paragraph.
|
static Float |
JUSTIFICATION_FULL
Justify the line to the full requested width.
|
static Float |
JUSTIFICATION_NONE
Do not allow the line to be justified.
|
static TextAttribute |
KERNING
Attribute key to request kerning.
|
static Integer |
KERNING_ON
Request standard kerning.
|
static TextAttribute |
LIGATURES
Attribute key for enabling optional ligatures.
|
static Integer |
LIGATURES_ON
Request standard optional ligatures.
|
static TextAttribute |
NUMERIC_SHAPING
Attribute key for converting ASCII decimal digits to other
decimal ranges.
|
static TextAttribute |
POSTURE
Attribute key for the posture of a font.
|
static Float |
POSTURE_OBLIQUE
The standard italic posture.
|
static Float |
POSTURE_REGULAR
The standard posture, upright.
|
static TextAttribute |
RUN_DIRECTION
Attribute key for the run direction of the line.
|
static Boolean |
RUN_DIRECTION_LTR
Left-to-right run direction.
|
static Boolean |
RUN_DIRECTION_RTL
Right-to-left run direction.
|
static TextAttribute |
SIZE
Attribute key for the font size.
|
static TextAttribute |
STRIKETHROUGH
Attribute key for strikethrough.
|
static Boolean |
STRIKETHROUGH_ON
A single strikethrough.
|
static TextAttribute |
SUPERSCRIPT
Attribute key for superscripting and subscripting.
|
static Integer |
SUPERSCRIPT_SUB
Standard subscript.
|
static Integer |
SUPERSCRIPT_SUPER
Standard superscript.
|
static TextAttribute |
SWAP_COLORS
Attribute key for swapping foreground and background
Paints . |
static Boolean |
SWAP_COLORS_ON
Swap foreground and background.
|
static TextAttribute |
TRACKING
Attribute key to control tracking.
|
static Float |
TRACKING_LOOSE
Perform loose tracking.
|
static Float |
TRACKING_TIGHT
Perform tight tracking.
|
static TextAttribute |
TRANSFORM
Attribute key for the transform of a font.
|
static TextAttribute |
UNDERLINE
Attribute key for underline.
|
static Integer |
UNDERLINE_LOW_DASHED
Single pixel dashed low underline.
|
static Integer |
UNDERLINE_LOW_DOTTED
Single pixel dotted low underline.
|
static Integer |
UNDERLINE_LOW_GRAY
Double pixel gray low underline.
|
static Integer |
UNDERLINE_LOW_ONE_PIXEL
Single pixel solid low underline.
|
static Integer |
UNDERLINE_LOW_TWO_PIXEL
Double pixel solid low underline.
|
static Integer |
UNDERLINE_ON
Standard underline.
|
static TextAttribute |
WEIGHT
Attribute key for the weight of a font.
|
static Float |
WEIGHT_BOLD
The standard bold weight.
|
static Float |
WEIGHT_DEMIBOLD
A moderately lighter weight than
WEIGHT_BOLD . |
static Float |
WEIGHT_DEMILIGHT
An intermediate weight between
WEIGHT_LIGHT and
WEIGHT_STANDARD . |
static Float |
WEIGHT_EXTRA_LIGHT
The lightest predefined weight.
|
static Float |
WEIGHT_EXTRABOLD
An extra heavy weight.
|
static Float |
WEIGHT_HEAVY
A moderately heavier weight than
WEIGHT_BOLD . |
static Float |
WEIGHT_LIGHT
The standard light weight.
|
static Float |
WEIGHT_MEDIUM
An intermediate weight between
WEIGHT_REGULAR and
WEIGHT_BOLD . |
static Float |
WEIGHT_REGULAR
The standard weight.
|
static Float |
WEIGHT_SEMIBOLD
A moderately heavier weight than
WEIGHT_REGULAR . |
static Float |
WEIGHT_ULTRABOLD
The heaviest predefined weight.
|
static TextAttribute |
WIDTH
Attribute key for the width of a font.
|
static Float |
WIDTH_CONDENSED
The most condensed predefined width.
|
static Float |
WIDTH_EXTENDED
The most extended predefined width.
|
static Float |
WIDTH_REGULAR
The standard width.
|
static Float |
WIDTH_SEMI_CONDENSED
A moderately condensed width.
|
static Float |
WIDTH_SEMI_EXTENDED
A moderately extended width.
|
INPUT_METHOD_SEGMENT, LANGUAGE, READING
| Modifier | Constructor and Description |
|---|---|
protected |
TextAttribute(String name)
Constructs a
TextAttribute with the specified name. |
| Modifier and Type | Method and Description |
|---|---|
protected Object |
readResolve()
Resolves instances being deserialized to the predefined constants.
|
equals, getName, hashCode, toString
public static final TextAttribute FAMILY
String
. The default value is
"Default"
, which causes the platform default font
family to be used.
The Font
class defines constants for the logical
font names
DIALOG
,
DIALOG_INPUT
,
SANS_SERIF
,
SERIF
, and
MONOSPACED
.
This defines the value passed as name
to the
Font
constructor. Both logical and physical
font names are allowed. If a font with the requested name
is not found, the default font is used.
Note: This attribute is unfortunately misnamed, as it specifies the face name and not just the family. Thus values such as "Lucida Sans Bold" will select that face if it exists. Note, though, that if the requested face does not exist, the default will be used with regular weight. The "Bold" in the name is part of the face name, not a separate request that the font's weight be bold.
public static final TextAttribute WEIGHT
Number
. The default value is
WEIGHT_REGULAR
.
Several constant values are provided, see WEIGHT_EXTRA_LIGHT
, WEIGHT_LIGHT
, WEIGHT_DEMILIGHT
, WEIGHT_REGULAR
, WEIGHT_SEMIBOLD
, WEIGHT_MEDIUM
, WEIGHT_DEMIBOLD
, WEIGHT_BOLD
, WEIGHT_HEAVY
,
WEIGHT_EXTRABOLD
, and WEIGHT_ULTRABOLD
. The
value WEIGHT_BOLD
corresponds to the
style value Font.BOLD
as passed to the
Font
constructor.
The value is roughly the ratio of the stem width to that of the regular weight.
The system can interpolate the provided value.
public static final Float WEIGHT_EXTRA_LIGHT
WEIGHT
public static final Float WEIGHT_DEMILIGHT
WEIGHT_LIGHT
and
WEIGHT_STANDARD
.WEIGHT
public static final Float WEIGHT_REGULAR
WEIGHT
.WEIGHT
public static final Float WEIGHT_SEMIBOLD
WEIGHT_REGULAR
.WEIGHT
public static final Float WEIGHT_MEDIUM
WEIGHT_REGULAR
and
WEIGHT_BOLD
.WEIGHT
public static final Float WEIGHT_DEMIBOLD
WEIGHT_BOLD
.WEIGHT
public static final Float WEIGHT_HEAVY
WEIGHT_BOLD
.WEIGHT
public static final Float WEIGHT_ULTRABOLD
WEIGHT
public static final TextAttribute WIDTH
Number
. The default value is
WIDTH_REGULAR
.
Several constant values are provided, see WIDTH_CONDENSED
, WIDTH_SEMI_CONDENSED
, WIDTH_REGULAR
, WIDTH_SEMI_EXTENDED
, WIDTH_EXTENDED
.
The value is roughly the ratio of the advance width to that of the regular width.
The system can interpolate the provided value.
public static final Float WIDTH_CONDENSED
WIDTH
public static final Float WIDTH_SEMI_CONDENSED
WIDTH
public static final Float WIDTH_REGULAR
WIDTH
.WIDTH
public static final Float WIDTH_SEMI_EXTENDED
WIDTH
public static final Float WIDTH_EXTENDED
WIDTH
public static final TextAttribute POSTURE
Number
. The default value is
POSTURE_REGULAR
.
Two constant values are provided, POSTURE_REGULAR
and POSTURE_OBLIQUE
. The value
POSTURE_OBLIQUE
corresponds to the style value
Font.ITALIC
as passed to the Font
constructor.
The value is roughly the slope of the stems of the font, expressed as the run over the rise. Positive values lean right.
The system can interpolate the provided value.
This will affect the font's italic angle as returned by
Font.getItalicAngle
.
Font.getItalicAngle()
public static final Float POSTURE_REGULAR
POSTURE
.POSTURE
public static final Float POSTURE_OBLIQUE
POSTURE
public static final TextAttribute SIZE
Number
. The default value is 12pt.
This corresponds to the size
parameter to the
Font
constructor.
Very large or small sizes will impact rendering performance, and the rendering system might not render text at these sizes. Negative sizes are illegal and result in the default size.
Note that the appearance and metrics of a 12pt font with a 2x transform might be different than that of a 24 point font with no transform.
public static final TextAttribute TRANSFORM
TransformAttribute
. The
default value is TransformAttribute.IDENTITY
.
The TransformAttribute
class defines the
constant IDENTITY
.
This corresponds to the transform passed to
Font.deriveFont(AffineTransform)
. Since that
transform is mutable and TextAttribute
values must
not be, the TransformAttribute
wrapper class is
used.
The primary intent is to support scaling and skewing, though other effects are possible.
Some transforms will cause the baseline to be rotated and/or shifted. The text and the baseline are transformed together so that the text follows the new baseline. For example, with text on a horizontal baseline, the new baseline follows the direction of the unit x vector passed through the transform. Text metrics are measured against this new baseline. So, for example, with other things being equal, text rendered with a rotated TRANSFORM and an unrotated TRANSFORM will measure as having the same ascent, descent, and advance.
In styled text, the baselines for each such run are aligned
one after the other to potentially create a non-linear baseline
for the entire run of text. For more information, see TextLayout.getLayoutPath()
.
TransformAttribute
,
AffineTransform
public static final TextAttribute SUPERSCRIPT
Integer
. The default value is
0, which means that no superscript or subscript is used.
Two constant values are provided, see SUPERSCRIPT_SUPER
and SUPERSCRIPT_SUB
. These have
the values 1 and -1 respectively. Values of
greater magnitude define greater levels of superscript or
subscripting, for example, 2 corresponds to super-superscript,
3 to super-super-superscript, and similarly for negative values
and subscript, up to a level of 7 (or -7). Values beyond this
range are reserved; behavior is platform-dependent.
SUPERSCRIPT
can
impact the ascent and descent of a font. The ascent
and descent can never become negative, however.
public static final Integer SUPERSCRIPT_SUPER
SUPERSCRIPT
public static final Integer SUPERSCRIPT_SUB
SUPERSCRIPT
public static final TextAttribute FONT
Font
. The default
value is null, indicating that normal resolution of a
Font
from attributes should be performed.
TextLayout
and
AttributedCharacterIterator
work in terms of
Maps
of TextAttributes
. Normally,
all the attributes are examined and used to select and
configure a Font
instance. If a FONT
attribute is present, though, its associated Font
will be used. This provides a way for users to override the
resolution of font attributes into a Font
, or
force use of a particular Font
instance. This
also allows users to specify subclasses of Font
in
cases where a Font
can be subclassed.
FONT
is used for special situations where
clients already have a Font
instance but still
need to use Map
-based APIs. Typically, there will
be no other attributes in the Map
except the
FONT
attribute. With Map
-based APIs
the common case is to specify all attributes individually, so
FONT
is not needed or desireable.
However, if both FONT
and other attributes are
present in the Map
, the rendering system will
merge the attributes defined in the Font
with the
additional attributes. This merging process classifies
TextAttributes
into two groups. One group, the
'primary' group, is considered fundamental to the selection and
metric behavior of a font. These attributes are
FAMILY
, WEIGHT
, WIDTH
,
POSTURE
, SIZE
,
TRANSFORM
, SUPERSCRIPT
, and
TRACKING
. The other group, the 'secondary' group,
consists of all other defined attributes, with the exception of
FONT
itself.
To generate the new Map
, first the
Font
is obtained from the FONT
attribute, and all of its attributes extracted into a
new Map
. Then only the secondary
attributes from the original Map
are added to
those in the new Map
. Thus the values of primary
attributes come solely from the Font
, and the
values of secondary attributes originate with the
Font
but can be overridden by other values in the
Map
.
Note:Font's
Map
-based
constructor and deriveFont
methods do not process
the FONT
attribute, as these are used to create
new Font
objects. Instead, Font.getFont(Map)
should be used to
handle the FONT
attribute.
Font
public static final TextAttribute CHAR_REPLACEMENT
This attribute is used to reserve space for a graphic or
other component embedded in a line of text. It is required for
correct positioning of 'inline' components within a line when
bidirectional reordering (see Bidi
) is
performed. Each character (Unicode code point) will be
rendered using the provided GraphicAttribute. Typically, the
characters to which this attribute is applied should be
\uFFFC
.
The GraphicAttribute determines the logical and visual bounds of the text; the actual Font values are ignored.
GraphicAttribute
public static final TextAttribute FOREGROUND
Paint
. The default value is
null, indicating that the Paint
set on the
Graphics2D
at the time of rendering is used.
Glyphs will be rendered using this
Paint
regardless of the Paint
value
set on the Graphics
(but see SWAP_COLORS
).
Paint
,
SWAP_COLORS
public static final TextAttribute BACKGROUND
Paint
.
The default value is null, indicating that the background
should not be rendered.
The logical bounds of the text will be filled using this
Paint
, and then the text will be rendered on top
of it (but see SWAP_COLORS
).
The visual bounds of the text is extended to include the logical bounds, if necessary. The outline is not affected.
Paint
,
SWAP_COLORS
public static final TextAttribute UNDERLINE
Integer
. The default value is -1, which
means no underline.
The constant value UNDERLINE_ON
is provided.
The underline affects both the visual bounds and the outline of the text.
public static final TextAttribute STRIKETHROUGH
Boolean
. The default value is
false
, which means no strikethrough.
The constant value STRIKETHROUGH_ON
is provided.
The strikethrough affects both the visual bounds and the outline of the text.
public static final Boolean STRIKETHROUGH_ON
STRIKETHROUGH
public static final TextAttribute RUN_DIRECTION
Boolean
. The default value is
null, which indicates that the standard Bidi algorithm for
determining run direction should be used with the value Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT
.
The constants RUN_DIRECTION_RTL
and RUN_DIRECTION_LTR
are provided.
This determines the value passed to the Bidi
constructor to select the primary direction of
the text in the paragraph.
Note: This attribute should have the same value for all the text in a paragraph, otherwise the behavior is undetermined.
Bidi
public static final Boolean RUN_DIRECTION_LTR
RUN_DIRECTION
public static final Boolean RUN_DIRECTION_RTL
RUN_DIRECTION
public static final TextAttribute BIDI_EMBEDDING
Integer
. The default value is
null
, indicating that the the Bidirectional
algorithm should run without explicit embeddings.
Positive values 1 through 61 are embedding levels,
negative values -1 through -61 are override levels.
The value 0 means that the base line direction is used. These
levels are passed in the embedding levels array to the Bidi
constructor.
Note: When this attribute is present anywhere in a paragraph, then any Unicode bidi control characters (RLO, LRO, RLE, LRE, and PDF) in the paragraph are disregarded, and runs of text where this attribute is not present are treated as though it were present and had the value 0.
Bidi
public static final TextAttribute JUSTIFICATION
Number
. The default value is
1, indicating that justification should use the full width
provided. Values are pinned to the range [0..1].
The constants JUSTIFICATION_FULL
and JUSTIFICATION_NONE
are provided.
Specifies the fraction of the extra space to use when
justification is requested on a TextLayout
. For
example, if the line is 50 points wide and it is requested to
justify to 70 points, a value of 0.75 will pad to use
three-quarters of the remaining space, or 15 points, so that
the resulting line will be 65 points in length.
Note: This should have the same value for all the text in a paragraph, otherwise the behavior is undetermined.
TextLayout.getJustifiedLayout(float)
public static final Float JUSTIFICATION_FULL
JUSTIFICATION
.JUSTIFICATION
public static final Float JUSTIFICATION_NONE
JUSTIFICATION
public static final TextAttribute INPUT_METHOD_HIGHLIGHT
Values are instances of InputMethodHighlight
or Annotation
. The default value is null
,
which means that input method styles should not be applied
before rendering.
If adjacent runs of text with the same
InputMethodHighlight
need to be rendered
separately, the InputMethodHighlights
should be
wrapped in Annotation
instances.
Input method highlights are used while text is being composed by an input method. Text editing components should retain them even if they generally only deal with unstyled text, and make them available to the drawing routines.
Font
,
InputMethodHighlight
,
Annotation
public static final TextAttribute INPUT_METHOD_UNDERLINE
Integer
. The default
value is -1
, which means no underline.
Several constant values are provided, see UNDERLINE_LOW_ONE_PIXEL
, UNDERLINE_LOW_TWO_PIXEL
,
UNDERLINE_LOW_DOTTED
, UNDERLINE_LOW_GRAY
, and
UNDERLINE_LOW_DASHED
.
This may be used in conjunction with UNDERLINE
if
desired. The primary purpose is for use by input methods.
Other use of these underlines for simple ornamentation might
confuse users.
The input method underline affects both the visual bounds and the outline of the text.
public static final Integer UNDERLINE_LOW_ONE_PIXEL
INPUT_METHOD_UNDERLINE
public static final Integer UNDERLINE_LOW_TWO_PIXEL
INPUT_METHOD_UNDERLINE
public static final Integer UNDERLINE_LOW_DOTTED
INPUT_METHOD_UNDERLINE
public static final Integer UNDERLINE_LOW_GRAY
INPUT_METHOD_UNDERLINE
public static final Integer UNDERLINE_LOW_DASHED
INPUT_METHOD_UNDERLINE
public static final TextAttribute SWAP_COLORS
Paints
. Values are instances of
Boolean
. The default value is
false
, which means do not swap colors.
The constant value SWAP_COLORS_ON
is defined.
If the FOREGROUND
attribute is set, its
Paint
will be used as the background, otherwise
the Paint
currently on the Graphics
will be used. If the BACKGROUND
attribute is set, its
Paint
will be used as the foreground, otherwise
the system will find a contrasting color to the
(resolved) background so that the text will be visible.
FOREGROUND
,
BACKGROUND
public static final Boolean SWAP_COLORS_ON
SWAP_COLORS
public static final TextAttribute NUMERIC_SHAPING
NumericShaper
.
The default is null
, which means do not perform
numeric shaping.
When a numeric shaper is defined, the text is first processed by the shaper before any other analysis of the text is performed.
Note: This should have the same value for all the text in the paragraph, otherwise the behavior is undetermined.
NumericShaper
public static final TextAttribute KERNING
Integer
. The default value is
0
, which does not request kerning.
The constant value KERNING_ON
is provided.
The default advances of single characters are not appropriate for some character sequences, for example "To" or "AWAY". Without kerning the adjacent characters appear to be separated by too much space. Kerning causes selected sequences of characters to be spaced differently for a more pleasing visual appearance.
public static final Integer KERNING_ON
KERNING
public static final TextAttribute LIGATURES
Integer
. The default value is
0
, which means do not use optional ligatures.
The constant value LIGATURES_ON
is defined.
Ligatures required by the writing system are always enabled.
public static final Integer LIGATURES_ON
LIGATURES
public static final TextAttribute TRACKING
Number
. The default value is
0
, which means no additional tracking.
The constant values TRACKING_TIGHT
and TRACKING_LOOSE
are provided.
The tracking value is multiplied by the font point size and
passed through the font transform to determine an additional
amount to add to the advance of each glyph cluster. Positive
tracking values will inhibit formation of optional ligatures.
Tracking values are typically between -0.1
and
0.3
; values outside this range are generally not
desireable.
public static final Float TRACKING_TIGHT
TRACKING
protected TextAttribute(String name)
TextAttribute
with the specified name.name
- the attribute name to assign to this
TextAttribute
protected Object readResolve() throws InvalidObjectException
readResolve
in class AttributedCharacterIterator.Attribute
Attribute
objectInvalidObjectException
- if the object to resolve is not
an instance of Attribute
Dracula Javadoc Sample, Made with Allan Im.


Gwent: Pro Ladder Analysis and National Rankings
Data for on players in Pro Ladder is released on playgwent.com, but it is limited. You get the rank, the score, the country of origin and the number of matches played. Using some fairly basic data analysis tricks there must be more we can do with these data! Using python we’ll scrape data for the top Gwent players on pro-ladder and calculate additional statistics about the current season, popularity of the game in different countries, players’ efficiency, players national rank, …
A jupyter notebook with all code can be found on GitHub which you can explore through Binder without installing anything. For those that want to check their own national rank or ladder efficiency index (and don’t care about the code). Download links for the full tables discussed here (in Excel-format) are available here:
- Player Statistics : Player data for each season, with ladder efficiency and national rank added.
- Player Summaries : Summary data for each player that made an appearance in pro rank. Includes number of appearances on the leaderboards, min and max MMR, best rank, best national rank, …
- Seasonal summary : Number of games played each season in Masters 2, minimum and maximum MMR as well as top 500,200 and 64 cutoffs.
- National Statistics : Data per country, number of pro players per million inhabitants, …
Update 04/08/2021: Downloads are now linked to the Gwent Pro Rank Data page which will be updated more frequently.
Update 12/03/2021: All files were updated and now contain Season of the Wolf and Season of Love from Masters 3 (2021).
Update 03/09/2020: Credit where credit is due! After putting this blog post up I found two articles by Lerio2 that predate mine where he did the same analysis to check the popularity and rank countries (based on teams of 4 players). Though I did my analysis independently, he had the idea several months earlier and deserves full credit for that! You can read his articles, called Nations of Gwent, here and here
Getting the Data
Python has two powerful packages to scrape data from the web: the requests library to download data and BeautifulSoup to parse the HTML that comes back and extract information. The tabular data from playgwent.com is pretty straightforward to parse. There is the rank, the player’s handle, the number of matches played and their score (which is called the Matchmaking Rating or MMR).
Furthermore, there is a flag icon indicating the country the player is from. These icons have a class that contains the two letter code, which follows the official ISO 3166 international standard.
<i class="flag-icon flag-icon-pl"></i>
The two letter code can be easily extracted from the the html tag, while converting it to a human readable name can be done in a few lines of code using the python library pycountry. As shown in the stub below, you can provide it with a two letter code (pl in the example below) and it will return all other names, including the common name (Poland here). So after scraping the data, the pycountry library was used to get proper names for all countries.
import pycountry
pycountry.countries.get(alpha_2='pl')
# Output:
# Country(alpha_2='PL', alpha_3='POL', name='Poland', numeric='616', official_name='Republic of Poland')
While reading the data we’ll also keep track of which players were in the top 500 the season before (note that this does require all seasons to be loaded and in orde). So we end up with a table (called full_df in the code), that looks like this:
| rank | name | country | matches | mmr | season | previous_top500 |
|---|---|---|---|---|---|---|
| 1 | kolemoen | Germany | 431 | 10484 | M2_01 Wolf 2020 | no |
| 2 | kams134 | Poland | 923 | 10477 | M2_01 Wolf 2020 | no |
| 3 | TailBot | Poland | 538 | 10472 | M2_01 Wolf 2020 | no |
| 4 | Pajabol | Poland | 820 | 10471 | M2_01 Wolf 2020 | no |
| 5 | Adzikov | Poland | 1105 | 10442 | M2_01 Wolf 2020 | no |
Adding National Rank and Efficiency Statistics
The rank on playgwent.com is the global rank, adding a national rank can be done in a single line of code. The
groupby
function in combination with the rank
function does exactly what we want here.
full_df['national_rank'] = full_df.groupby(['country','season'])["mmr"].rank("first", ascending=False)
In Gwent you need to play at least 25 games with four out of six factions. This will give you a base score, MMR, of 9600. Winning a game increases the MMR, depending on the current rank of your opponent (usually about 7 points are gained) and losing costs you MMR points. The highest reached MMR per faction is summed up to get the final score. So with a higher win-rate, better scores can be obtained with fewer games. To find out which players are more efficient in climbing (and arguably better at the game than others at the same MMR) we we take the MMR, subtract the base value (9600) and divide by the number of matches. However, as increasing the MMR score becomes progressively more difficult as players will face better opponents as they climb the ladder, Lerio2 from Team Legacy proposed to divide by the square root of the number of matches. Their metric, the Ladder Efficiency Index or LEI is calculated here as well.
full_df['efficiency'] = ((full_df['mmr']-9600))/full_df['matches']
full_df['lei'] = ((full_df['mmr']-9600))/np.sqrt(full_df['matches'])
Now our full dataframe has two additional columns one with the simple linear efficiency and one with Team Legacy’s Ladder Efficiency Index.
| rank | name | country | matches | mmr | season | previous_top500 | national_rank | efficiency | lei |
|---|---|---|---|---|---|---|---|---|---|
| 1 | kolemoen | Germany | 431 | 10484 | M2_01 Wolf 2020 | no | 1.0 | 2.051044 | 42.580782 |
| 2 | kams134 | Poland | 923 | 10477 | M2_01 Wolf 2020 | no | 1.0 | 0.950163 | 28.866807 |
| 3 | TailBot | Poland | 538 | 10472 | M2_01 Wolf 2020 | no | 2.0 | 1.620818 | 37.594590 |
| 4 | Pajabol | Poland | 820 | 10471 | M2_01 Wolf 2020 | no | 3.0 | 1.062195 | 30.416639 |
| 5 | Adzikov | Poland | 1105 | 10442 | M2_01 Wolf 2020 | no | 4.0 | 0.761991 | 25.329753 |
You can download the full table here.
Season Summary
About every month or so there is a new season in Gwent. Using the groupby
function we can very quickly create a summary
how many games were played by the pro-ranked players (do note that only the 2860 best players are listed on the website).
We’ll also add the cutoff values for rank 500, 200 and 64 as these are important thresholds for competitive players.
Here the aggregate function agg
is used in combination with NamedAgg to calculate all statistics in one go.
per_season_df = full_df.groupby(['season']).agg(
min_mmr = pd.NamedAgg('mmr', 'min'),
max_mmr = pd.NamedAgg('mmr', 'max'),
num_matches = pd.NamedAgg('matches', 'sum')
).reset_index()
top500_cutoffs = full_df[full_df['rank'] == 500][['season', 'mmr']].rename(columns={'mmr': 'top500_cutoff'})
top200_cutoffs = full_df[full_df['rank'] == 200][['season', 'mmr']].rename(columns={'mmr': 'top200_cutoff'})
top64_cutoffs = full_df[full_df['rank'] == 64][['season', 'mmr']].rename(columns={'mmr': 'top64_cutoff'})
per_season_df = pd.merge(per_season_df, top500_cutoffs, on='season')
per_season_df = pd.merge(per_season_df, top200_cutoffs, on='season')
per_season_df = pd.merge(per_season_df, top64_cutoffs, on='season')
per_season_df
The full output from this you can see below:
| season | min_mmr | max_mmr | num_matches | top500_cutoff | top200_cutoff | top64_cutoff |
|---|---|---|---|---|---|---|
| M2_01 Wolf 2020 | 2407 | 10484 | 699496 | 9749 | 9872 | 10061 |
| M2_02 Love 2020 | 7776 | 10537 | 769358 | 9832 | 9952 | 10117 |
| M2_03 Bear 2020 | 9427 | 10669 | 862678 | 9867 | 9995 | 10204 |
| M2_04 Elf 2020 | 9666 | 10751 | 1004830 | 9952 | 10087 | 10293 |
| M2_05 Viper 2020 | 9635 | 10622 | 859640 | 9910 | 10028 | 10255 |
| M2_06 Magic 2020 | 9624 | 10597 | 793401 | 9896 | 10002 | 10191 |
| M2_07 Griffin 2020 | 9698 | 10667 | 996742 | 9978 | 10100 | 10289 |
| M2_08 Draconid 2020 | 9666 | 10546 | 838212 | 9946 | 10061 | 10246 |
The number of matches played by the top players is an indication how many people are playing the game, as more active players would require more games to be played to climb pro ladder. You can see that the popularity peaked during the Season of the Elves. During this season also some new leader abilities were introduced, so the fresh content could also to players return to the game. A similar increase in matches can be seen in the Season of the Griffin with the release of new cards through the Master Mirror expansion. So it seems that new content is a good incentive for players to play more, and spark a fiercer competition.
You can download the full table here.
Where is Gwent Being Played
So using the groupby
function in combination with the agg
we can very quickly count how many pro players there are
per country. We can then combine this with the population size of each country (and somewhat up-to-date list can be found
here). By dividing the number
of players in pro-ladder by the number of inhabitants (in millions) we can get the number of pro players per capita.
| season | country | total_matches | num_players | pro_players_per_million | matches_per_player |
|---|---|---|---|---|---|
| M2_08 Draconid 2020 | Poland | 72225 | 267 | 7.047129 | 270.505618 |
| M2_08 Draconid 2020 | Estonia | 1726 | 7 | 5.280436 | 246.571429 |
| M2_08 Draconid 2020 | Russian Federation | 195905 | 673 | 4.613626 | 291.092125 |
| M2_08 Draconid 2020 | Belarus | 10260 | 39 | 4.125931 | 263.076923 |
| M2_08 Draconid 2020 | Ukraine | 52333 | 162 | 3.682351 | 323.043210 |
The top 5 countries is comprised out of Eastern European Countries, which is no surprise as the company that created Gwent is based in Poland and The Witcher lore has been created based on Slavic myths and legends. Iceland, Finland, Hong Kong, Malta and Croatia complete the top 10.
You can download the full table, which includes data for all seasons and countries here.
Which Country has the best Gwent Team
Now we know where the most pro players are per capita, but what if countries were able to send a team of three e-athletes to a world championship? Which countries would do best with their team of three pro players. To this end all countries with three or more players were selected, and the top 3 players for each of those countries picked. Next, the average MMR and total MMR for those players, was calculated as well as the efficiency to climb and the rank for each country. The code is up on GitHub for those interested, but also here it is a simple matter of filtering and grouping data using built-in pandas functions.
The results for Season of the Draconid are shown below. It seems that China has the best team of three this season followed by Russia and Poland.
| season | country | mean_mmr | total_mmr | mean_matches_per_player | total_matches | nation_rank | efficiency | lei |
|---|---|---|---|---|---|---|---|---|
| M2_08 Draconid 2020 | China | 10489.333333 | 31468 | 409 | 1227 | 1 | 2.174409 | 43.974703 |
| M2_08 Draconid 2020 | Russian Federation | 10479.666667 | 31439 | 636 | 1908 | 2 | 1.383124 | 34.881052 |
| M2_08 Draconid 2020 | Poland | 10439.333333 | 31318 | 657 | 1971 | 3 | 1.277524 | 32.745512 |
Player Summaries
For players that made it up to Pro Rank during multiple seasons we’ll quickly generate a summary. Again the groupby and agg function are being leveraged again to group things and get the summary statistics. We’ll count the number of appearnaces on pro ladder, the min, mean, max MMR score. Average number of matches and total number of matches as well as the best global and national ranks.
This can give you a quick impression of all the data available on a player. Here you can see the output from myself (handle sepro).
| name | country | appearances | min_mmr | mean_mmr | max_mmr | mean_matches | num_matches | best_rank | best_national_rank |
|---|---|---|---|---|---|---|---|---|---|
| sepro | Belgium | 3 | 9746 | 9782 | 9820 | 243 | 728 | 1138 | 2.0 |
You can download the full table here to find your own or your favorite players stats.
Conclusion
Initially, I set out to get players national ranks. When you are from a small country, just making it to Pro Rank will likely give you bragging rights about being in the top 3 of your country. Though with some fairly basic data science you can very quickly get a lot more details on various aspects of the game.
This type of project I would really recommend for people starting out with programming. Find a topic you like and write some code to get some data about it, do some analysis and generate a few plots.
Liked this post ? You can buy me a coffee


Directing Audio¶
Here we explain how to pipe your system audio directly to LedFx without having to use a microphone or any other peripheral devices.
Linux¶
Tested on Ubuntu 20.10 64-bit
Requirements
Instructions
In the LedFx UI under “Settings” -> “Audio Input”, choose “pulse” as the current device
In PulseAudio Volume Control under “Recording”, choose “ALSA plug-in” and set “Capture from” to the audio stream you want to capture (e.g. “Monitor of Built-in Audio Analog Stereo”)
Linux CLI¶
Note
Python will not show in Pulsemixer until pulse is set like Audio Input in LedFx UI and some reactive effect is set and send to device.
Tested on Ubuntu 20.10 64-bit, Raspberry Pi OS (32 and 64-Bit)
Requirements
Instructions
In the LedFx UI under “Settings” -> “Audio Input”, choose “pulse” as the current device
In Pulsemixer under “F1 Output”, choose your audio application and move it to output stream you want to listen on (e.g. “Built-in Audio Digital Stereo”)
In Pulsemixer under “F2 Input”, choose “python” and move it to the audio stream you want to capture (e.g. “Monitor of Built-in Audio Digital Stereo”)
macOS¶
Tested on macOS Catalina 10.15.7
Requirements
Instructions
In Audio MIDI Setup, create a Multi Output Device
In Audio MIDI Setup, choose “BlackHole 2ch” and set it as “Input”
In the LedFx UI under “Settings” -> “Audio Input”, choose “BlackHole 2ch” as the current device
Alternatives
Loopback: Can direct the audio output of individual applications but requires expensive license to run more than 20 minutes.


{% extends "boards/view.html" %} {% block page_title %}Agility rating for project {{board.name}}{% endblock %} {% block content %}
Please, create first an agility rating


Unwraps an object into a list of TFDecorators and a final target.
tf.compat.v1.app.flags.tf_decorator.unwrap
tf.compat.v1.flags.tf_decorator.unwrap(maybe_tf_decorator)
maybe_tf_decorator
: Any callable object.A tuple whose first element is an list of TFDecorator-derived objects that
were applied to the final callable target, and whose second element is the
final undecorated callable target. If the maybe_tf_decorator
parameter is
not decorated by any TFDecorators, the first tuple element will be an empty
list. The TFDecorator
list is ordered from outermost to innermost
decorators.


#* The server renders this HTML page in an end-user's browser when an error occurs during email ownership verification Velocity variables (identified by the $ character) are generated at runtime by the server. Change text or formatting as needed. Modifying Velocity statements is not recommended as it may interfere with expected server behavior. *# #set( $messageKeyPrefix = "local.identity.email.verification.error." )


@* * Copyright 2019 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @( field: Field, label: String, labelArgs: Seq[Any] = Nil, inputClass: Option[String] = None, disabled: Boolean = false, value: Option[String] = None )(implicit messages: Messages)


You won! You kept fighting until you reahed the top, the same way you have to keep fighting to secure your rights!
Home


Ségou (also Segou, Segu, Seku) is a town and an urban commune in south-central Mali that lies 235 kilometres (146 mi) northeast of Bamako on the River Niger. The town is the capital of the Ségou Cercle and the Ségou Region. With 130,690 inhabitants in 2009, it is the fifth-largest town in Mali. The village of Ségou-Koro, 10 km upstream of the present town, was established in the 17th century and became the capital of the Bambara Empire.
History
In the middle of the 19th century there were four villages with the name of Ségou spread out over a distance of around 12 km along the right bank of the river. They were, starting from the most upstream, Ségou-Koro (Old Ségou), Ségou-Bougou, Ségou-Koura (New Ségou) and Ségou-Sikoro. The present town is on the site of Ségou-Sikoro. The village of Ségou-Koro prospered after Biton Mamary Coulibaly became king in 1712 and founded the Ségou (or Bamana) Empire. Mungo Park became the first European known to have visited the village in 1796.[5] The empire gradually declined and was conquered by El Hadj Umar Tall's Toucouleur Empire in 1861, then by the French Army Colonel Louis Archinard in 1890.
Spaceflights cannot be stopped. This is not the work of any one man or even a group of men. It is a historical process which mankind is carrying out in accordance with the natural laws of human development.
Bambara Kingdom
The Bambaras from Djenné with Kaladjan Koulibaly established their nation along the Niger River and founded the town of Ségou-Koro, the capital of the Bambara state. Bortolot (2003) says that Ségou evolved from a simple social structure, characterized by hunting and farming, to a more complex city dominated by a dynasty system. One of Koulibaly's descendants, Mamary Coulibaly, became the chief of the Bi-Ton and later took the name Biton. Biton spread terror, organised the army, and restructured the association into a city. He expanded the territory from Segou Koro to Timbuktu. Under his rule, the Macina and Djenné trading centers became a part of Ségou. Timbuktu was not part of Ségou. It remained autonomous and paid tribute to Biton. After Biton's death in 1755, one of the Coulibaly family slaves, Ngolo Diarra, obtained power to control the Bambara kingdom and established the Diarra dynasty. Ngolo Diarra ruled Ségou until the 19th century. He moved the kingdom's capital from Segou-Koro to Ségou-Sikoro, close to the site of the current city. Diarra continued Biton's conquest and extended the kingdom from Guinea to Timbuktu.


Ghost of von Hellmann:
Oh, the horror! The von Hellmann's are dead and Lidia is a demon? Her curse upon this land is depriving me of my rest!
"It's the truth."


Contact Us
Navbar
Home
(current)
We would love to hear from you!
First Name *
Last Name *
Email Address *
Telephone Number
Comments/Questions *
Send


Please use your local team name. E.g. "Team Rubicon Region 5" or "LDS Church-Plainview Stake" rather than "Team Rubicon" or "LDS Church".


Why Wait? Currys PC World's Black Friday Sale Starts Today
Here are the best deals you can grab right now and why there's no reason to wait.
by PCMag UKWe review products independently, but we may earn affiliate commissions from buying links on this page. Terms of use.
Black Friday 2019 might not officially start until November 29, but plenty of retailers run sale events that last a lot longer than 24 hours. For example, Currys PC World's Black Friday sale has already kicked off.
To entice customers to shop now rather than wait until November 29, Currys PC World is offering a Black Friday Price Guarantee - if the price of any product you purchase ends up being lower on Black Friday, they’ll refund you the difference.
Currys are calling it the ‘Why Wait’ sale because, though more products will be discounted closer to Black Friday, if something catches your eye now, there’s no better time to buy it.
SEE ALSO: Black Friday UK 2019: The Best Deals on Laptops, TVs, Gaming, and Tech
Price matching
The store’s Price Promise means you won’t find a cheaper deal elsewhere. If you find the product you’re after is being sold for less at another UK store, Currys will match the price - even on offer-code discounts. This price matching can be done before you purchase the product at Currys or up to 7 days after.
The best deals right now
Experienced bargain hunters know that some of the biggest Black Friday savings can be made on tech and appliances, making Currys PC World a must-visit store during the sale period. These are the best deals in each category.
Gaming
- Nintendo Switch Neon and Pokemon Sword Bundle for £279.00 (£44.99 off)
- Nintendo Switch Neon and Pokemon Shield Bundle for £279.00 (£44.99 off)
- Nintendo Switch Grey and Pokemon Sword Bundle for £279.00 (£44.99 off)
- Nintendo Switch Grey and Pokemon Shield Bundle for £279.00 (£44.99 off)
Tech
- Fitbit Inspire HR Fitness Tracker & Google Nest Mini Bundle for £74.99 (£64 off)
- Urbanista Stockholm Wireless Bluetooth Earphones for £44.99 (£45 off)
- Canon EOS 4000D DSLR Camera for £349 (£150 off)
- Huawei P30 Lite - 128 GB for £229.99 (£49.01 off)
- Motorola G7 Plus - 64 GB for £199.99 (£70 off)
Home Entertainment
- Samsung 65" Smart 4K Ultra HD HDR LED TV for £599 (£150 off)
- LG 55" Smart 4K Ultra HD HDR OLED TV with Google Assistant for £1099 (£500 off)
- LG 65" Smart 4K Ultra HD HDR OLED TV with Google Assistant for £1999 (£800 off)
- LG SK8 2.1 Wireless Soundbar with Dolby Atmos for £299 (£300 off)
- NOW TV Smart Box and 4 NOW TV Pass Bundle for £24.99 (£45 off)
Computing
- HP Pavilion 14" Intel® Core™ i3 Laptop - 128 GB SSD for £349 (£180 off)
- Lenovo IdeaPad 15.6" Intel® Core™ i3 Laptop for £299 (£100 off)
- MSI GF63 Thin 15.6” Intel® Core™ i5 GTX 1650 Gaming Laptop - 256 GB SSD for £799 (£100 off)
- HP ENVY 5020 Wireless All in One Printer for £34 (£35.99 off)
Home Appliances
- Dyson V8 Absolute Cordless Bagless Vacuum Cleaner for £299.99 (£100 off)
- LG American-Style Fridge Freezer for £849 (£450 off)
- KitchenAid Artisan Stand Mixer for £279 (£220 off)
- Kenwood Combination Microwave for £89 (£110 off)
- Hotpoint Smart WMFUG942GUK Washing Machine for £239 (£110 off)
- De'Longhi Dinamica ECAM 350.15B Bean to Cup Coffee Machine for £399 (£600 off)
- Dyson AM09 Hot & Cool Fan Heater for £299 (£100 off)
This article was originally published on BlackFriday.co.uk


Class representing a TCP connection.
More...
#include <cl_TCPSocket.h>
|
| class | TCPServer |
| |
| template<class T > |
| std::vector< T * > | select (const std::vector< T *> &sockets, float timeoutSeconds) |
| |
Class representing a TCP connection.
§ TCPSocket() [1/4]
| SSocks::TCPSocket::TCPSocket |
( |
| ) |
|
Generate socket without connection.
§ TCPSocket() [2/4]
| SSocks::TCPSocket::TCPSocket |
( |
const HostAddress & |
host | ) |
|
Generate socket and connect to indicated host.
- Parameters
-
| host | A HostAddress object indicating the host and port to connect to. |
§ TCPSocket() [3/4]
| SSocks::TCPSocket::TCPSocket |
( |
const TCPSocket & |
| ) |
|
|
delete |
Copying is prohibited, as sockets are unique resources.
§ TCPSocket() [4/4]
| SSocks::TCPSocket::TCPSocket |
( |
TCPSocket && |
moveFrom | ) |
|
Move constructor to transfer ownership to a new TCPSocket.
- Parameters
-
| moveFrom | The object to transfer the resource from. |
§ ~TCPSocket()
| SSocks::TCPSocket::~TCPSocket |
( |
| ) |
|
§ close()
| void SSocks::TCPSocket::close |
( |
| ) |
|
Close the present connection.
If no connection exists then no action will be taken. Blocking will be set to true on closure.
§ connect()
| void SSocks::TCPSocket::connect |
( |
const HostAddress & |
host | ) |
|
Connect to indicated host.
- Parameters
-
| host | A HostAddress object indicating the host and port to connect to. |
§ isBlocking()
| bool SSocks::TCPSocket::isBlocking |
( |
| ) |
const |
Indicates whether or not the socket is in blocking mode.
- See also
- setBlocking()
- Returns
- true if the socket can block; false if it is in non-blocking mode
§ isOpen()
| bool SSocks::TCPSocket::isOpen |
( |
| ) |
const |
Indicates whether the socket is connected to a remote host.
Calls to send() and recv() can update this value if the remote host closed the connection.
- Returns
- true if the socket is connected; false if it is not.
§ operator=() [1/2]
Copying is prohibited, as sockets are unique resources.
§ operator=() [2/2]
| void SSocks::TCPSocket::operator= |
( |
TCPSocket && |
moveFrom | ) |
|
Move-assign operator to transfer ownership to a new TCPSocket.
- Parameters
-
| moveFrom | The object to transfer the resource from. |
§ peek()
| std::vector<char> SSocks::TCPSocket::peek |
( |
size_t |
len | ) |
|
Recieve up to 'len' bytes of data from the remote machine without removing them from the buffer.
Similar to recv(), but does not remove data from the hardware socket buffer. This means that if you peek(100) three times in a row you should get the same data three times in a row, assuming there are 100 or more bytes available to read. SSocks::peek() will not attempt to continually read in order to fill its returned buffer as SSocks::recv() does, even if it's set to block. It will simply grab what's immediately available and return it.
NOTE THAT PEEK CAN CLOSE THE SOCKET JUST AS RECV WOULD.
Make sure to react appropriately to zero-length returns.
- Parameters
-
| len | The maximum number of bytes to read. |
- Returns
- A vector of char containing the recived data.
§ recv()
| std::vector<char> SSocks::TCPSocket::recv |
( |
size_t |
len | ) |
|
Recieve up to 'len' bytes of data from the remote machine.
If the socket is set to block then this function will continue reading until it reaches 'len' bytes or the socket is closed by the remote machine. Otherwise it will attempt to read and return whatever it gets in a single pass (may be empty). Make sure to check isOpen() after recv() to ensure that the remote host has not closed the connection.
- Parameters
-
| len | The maximum number of bytes to read. |
- Returns
- A vector of char containing the recived data.
§ send() [1/3]
| size_t SSocks::TCPSocket::send |
( |
const void * |
data, |
|
|
size_t |
len |
|
) |
| |
Send data through the socket to the connected machine.
If the socket is blocking then all data will be sent. Otherwise a single send will be issued and the function will return.
- Parameters
-
| data | A pointer to the data to be sent. |
| len | The number of bytes to send. |
- Returns
- The number of bytes sent.
§ send() [2/3]
| size_t SSocks::TCPSocket::send |
( |
const std::string & |
data | ) |
|
Send data through the socket to the connected machine.
If the socket is blocking then all data will be sent. Otherwise a single send will be issued and the function will return.
- Parameters
-
| data | A std::string to send. Note that this will not send a null terminator. |
- Returns
- The number of bytes sent.
§ send() [3/3]
| size_t SSocks::TCPSocket::send |
( |
const std::vector< char > |
data | ) |
|
Send data through the socket to the connected machine.
If the socket is blocking then all data will be sent. Otherwise a single send will be issued and the function will return.
- Parameters
-
| data | A vector of char holding the data to send. |
- Returns
- The number of bytes sent.
§ setBlocking()
| void SSocks::TCPSocket::setBlocking |
( |
bool |
block | ) |
|
Set whether or not the socket is in blocking mode.
A blocking socket will pause its thread on send/recv until it can complete its task. That is, a blocking recv() will wait until it has recieved some data before returning. A non-blocking socket will return immediately from send/recv, even if it was unable to actually send or recieve any data. All sockets default to blocking.
- Parameters
-
| block | Set true to allow the socket to block; false for non-blocking mode |
§ select
template<class T >
| std::vector<T*> select |
( |
const std::vector< T *> & |
sockets, |
|
|
float |
timeoutSeconds |
|
) |
| |
|
friend |
§ TCPServer
The documentation for this class was generated from the following file:


class: center, middle # Good Ideas for Open Source (Python) Development Patrick Young --- # Disclaimer * I'm not an expert in open source Python development * These are my options alone * These are tools I've found useful; I'd really like to hear about others you like --- # Why Open Source? * Gain trust/mind share - developers are: 1.  **Cheap** (hard to convince the powers that be to open up the check book) 3. **Hate vendor lock-in** * Good promotion for you and DigitalGlobe * Check out how many stars [MapBox's](https://github.com/mapbox) projects have (27 pages of repos!) * Happy developers are productive developers * Encourages better code * Less apt to be sloppy if someone else can take peak * Discourages code bloat * Lots of free tooling for you if you're project is open source (more coming) --- # Write Good Documentation * No one will use your package if it takes more than a second to figure out what it does * [GitHub](https://github.com/github/markup) renders MarkDown and Restructured Text (and a bunch of others) in a README.md/rst for you! Use this feature! * A good place for the elevator pitch on your project, quick install instructions, etc * I don't think its a great place for all your documentation to be hosted... --- # Write Good Documentation * It is a pain to hand write your API documentation (time consuming, quickly out of date) * Instead use [Sphinx](http://sphinx-doc.org/) (python.org's documentation is generated in this way) * I like to write my doc strings as in the [Google style guide](https://google.github.io/styleguide/pyguide.html) and Sphinx renders them nicely automatically: .center[![](images/ipython-docstring.png "IPython")] --- # Write Good Documentation * It is a pain to hand write your API documentation (time consuming, quickly out of date) * Instead use [Sphinx](http://sphinx-doc.org/) (python.org's documentation is generated in this way) * I like to write my doc strings as in the [Google style guide](https://google.github.io/styleguide/pyguide.html) and Sphinx renders them nicely automatically: .center[![](images/sphinx.png "Sphinx Rendered")] --- # Host Your Documentation Online * Open source projects can use [Read the Docs](https://readthedocs.org/) for free hosting, here's an [example](http://tiletanic.readthedocs.org/en/latest/) * Awesome Sphinx integration, builds on every commit! .center[![](images/rthed.png "Read the Docs")] * Another options is [GitHub pages](https://pages.github.com/), integrates nicely with [Jekyll](http://jekyllrb.com/) --- # Make Your Package Easily Installable * No one wants to spend hours figuring out how to integrate your code into their project * [Pip](https://pip.pypa.io/en/stable/) is the tool of choice for installing Python projects (on PyPi or locally) * Included in recent versions of Python * You make your package installable via a `setup.py` in your root directory * Pretty straightforward for pure Python, things are more complicated if you build c extensions, etc. * The [Python Packaging Authority](https://packaging.python.org/en/latest/) is a great resource --- # Make Your Package Easily Installable A real example: ```python import sys from setuptools import setup, find_packages open_kwds = {} if sys.version_info > (3,): open_kwds['encoding'] = 'utf-8' with open('README.rst', **open_kwds) as f: readme = f.read() setup(name='tiletanic', version='0.0.4', description='Geospatial tiling utilities', long_description=readme, classifiers=[], keywords='', author='Patrick Young'<EMAIL_ADDRESS>url='https://github.com/digitalglobe/tiletanic', license='MIT', packages=find_packages(exclude=['tests', 'docs']), include_package_data=True, install_requires=['shapely>=1.5'] ) ``` --- # Put Your Package in PyPi * Canonical place for Python packages, lets you run .center[`pip install your-awesome-package`] * Easy to do if you've got your `setup.py` in order ([a tutorial](https://packaging.python.org/en/latest/distributing/#uploading-your-project-to-pypi)) * There is a [test site](https://wiki.python.org/moin/TestPyPI) to practice on (you get one shot with a given version number on PyPi) --- # Write Some Tests * As your package grows, you will inevitably refactor * It's hard to know if you've broken something * Quite nice to have when installing in a new environment * Customers of your code will want to run them if something goes wrong * I like [pytest](http://pytest.org/latest/) over the built in [unittest](https://docs.python.org/2/library/unittest.html) package * Has a great runner (will run unittest, nose, doctests in addition to pytest style) * Lots of built in magic (fixtures, temporary directory and file support, etc) ```python def test_cover_geometry_multilinestring1(tiler, mls): """A MultiLineString geometry.""" tiles = [tile for tile in cover_geometry(tiler, mls, 8)] assert len(tiles) == 4 assert set(tiles) == {(127, 88, 8), (127, 89, 8), (128, 88, 8), (128, 89, 8)} ``` --- # Use Continuous Integration * I like [travis](https://travis-ci.org/) and its free for open source! * Just drop a `.travis.yml` file in your root directory and get an account: ```yaml language: python python: - "2.7" before_install: - sudo add-apt-repository -y ppa:ubuntugis/ppa - sudo apt-get update -qq - sudo apt-get install -qq libgeos-dev python-numpy - pip install -r requirements-dev.txt install: - pip install -e . script: "py.test tests" ``` * Supports much more than Python --- # Use Continuous Integration * Travis runs on every commit and alerts you to success/failure with nice logs .center[![](images/travis.png "travis")] --- # Summary For an open source Python package to be useful, I think one ought to: 1. Write good documentation (this is easy if you keep up on your doc strings) 2. Publish your documentation (A summary in GitHub, API docs in Read The Docs) 3. Make it easy to install your package (`setup.py` + pushing to PyPi) 4. Write some tests (100% coverage just for the sake of it is of dubious value) 5. Use continuous integration (lots of free options for open source) **PS:** I try to follow [PEP8](https://www.python.org/dev/peps/pep-0008/) standards, but I don't always get it write and it can be pain to fix. Check out [Yapf](https://github.com/google/yapf) for an automatic solution!


species range climatic plant size precipitation rare climate common mean OpenUrl biomass conditions natural temperature survival botanical species, Science niche CrossRef Ecology Web widespread Table difference View differences garden plants annual rarer species. able change lower aboveground distribution larger predicted general higher production rarity tolerance values Download Switzerland different range. used change. generally indicates models ones populations terms Switzerland. Text conditions, data effects environmental gardens. increase new number obtained relationship <; European Fig. Fischer However, Range advantage better breadth calculated changes continuous correlated differ dryer ecological endangered fundamental gardens line niches planted response size, small survived value Abstract Common Figure Letters Plant changing correlation current differing experiment extreme favorable future garden. i.e. inline interaction large level linear models. occur particularly popup quadratic range, respond results showed suggests survival, table: test using van wetter wider width .), Ackerly Baker Brown FREE Gaston Open Rare S). Switzerland, Zimmermann affected average climates commonness conditions. data-hide-link-title=""> data-icon-position="" der difference, effect experimental figure geographic germination given grid however, log-scale) mixed negative occupied pattern pattern. performance plastic point population positive represent represents size. study subset tab tolerant variables


Displays a basic message box with title and message.
Show Basic
Displays a message box with different button options.
Show OK/Cancel
Show Abort/Retry/Ignore
Show Yes/No/Cancel
Show Yes/No
Show Retry/Cancel
Displays a message box with a callback after user selects any of the message buttons
Show with Callback


are getting married!
You heard that right! We're getting married, and we're really looking forward to celebrating with everyone! It's going to be amazing!
Tell me more! What are the plans?The marriage of
Natalie Milor
&
Drew Jess
Polloksheilds Burgh Hall
70 Glencairn Drive
Glasgow
G41 4LL
Saturday
March 24th 2018
Ceremony starts at 2pm
Arrive from 1:30pm
Every wedding's got to have some great songs, right? Help us pick some excellent tracks!
Coming soon!