| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Warning: target descriptions are still under active development, and the contents and format may change between GDB releases. The format is expected to stabilize in the future.
One of the challenges of using GDB to debug embedded systems is that there are so many minor variants of each processor architecture in use. It is common practice for vendors to start with a standard processor core -- ARM, PowerPC, or MIPS, for example --- and then make changes to adapt it to a particular market niche. Some architectures have hundreds of variants, available from dozens of vendors. This leads to a number of problems:
set architecture
command can be error-prone.
To address these problems, the GDB remote protocol allows a target system to not only identify itself to GDB, but to actually describe its own features. This lets GDB support processor variants it has never seen before -- to the extent that the descriptions are accurate, and that GDB understands them.
GDB must be linked with the Expat library to support XML target descriptions. See Expat.
F.1 Retrieving Descriptions How descriptions are fetched from a target. F.2 Target Description Format The contents of a target description. F.3 Predefined Target Types Standard types available for target descriptions. F.4 Standard Target Features Features GDB knows about.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Target descriptions can be read from the target automatically, or specified by the user manually. The default behavior is to read the description from the target. GDB retrieves it via the remote protocol using `qXfer' requests (see section qXfer). The annex in the `qXfer' packet will be `target.xml'. The contents of the `target.xml' annex are an XML document, of the form described in F.2 Target Description Format.
Alternatively, you can specify a file to read for the target description. If a file is set, the target will not be queried. The commands to specify a file are:
set tdesc filename path
unset tdesc filename
show tdesc filename
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A target description annex is an XML
document which complies with the Document Type Definition provided in
the GDB sources in `gdb/features/gdb-target.dtd'. This
means you can use generally available tools like xmllint
to
check that your feature descriptions are well-formed and valid.
However, to help people unfamiliar with XML write descriptions for
their targets, we also describe the grammar here.
Target descriptions can identify the architecture of the remote target and (for some architectures) provide information about custom register sets. GDB can use this information to autoconfigure for your target, or to warn you if you connect to an unsupported target.
Here is a simple target description:
<target version="1.0"> <architecture>i386:x86-64</architecture> </target> |
This minimal description only says that the target uses the x86-64 architecture.
A target description has the following overall form, with [ ] marking optional elements and ... marking repeatable elements. The elements are explained further below.
<?xml version="1.0"?> <!DOCTYPE target SYSTEM "gdb-target.dtd"> <target version="1.0"> [architecture] [feature...] </target> |
The description is generally insensitive to whitespace and line breaks, under the usual common-sense rules. The XML version declaration and document type declaration can generally be omitted (GDB does not require them), but specifying them may be useful for XML validation tools. The `version' attribute for `<target>' may also be omitted, but we recommend including it; if future versions of GDB use an incompatible revision of `gdb-target.dtd', they will detect and report the version mismatch.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
It can sometimes be valuable to split a target description up into several different annexes, either for organizational purposes, or to share files between different possible target descriptions. You can divide a description into multiple files by replacing any element of the target description with an inclusion directive of the form:
<xi:include href="document"/> |
When GDB encounters an element of this form, it will retrieve the named XML document, and replace the inclusion directive with the contents of that document. If the current description was read using `qXfer', then so will be the included document; document will be interpreted as the name of an annex. If the current description was read from a file, GDB will look for document as a file in the same directory where it found the original description.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
An `<architecture>' element has this form:
<architecture>arch</architecture> |
arch is an architecture name from the same selection
accepted by set architecture
(see section Specifying a Debugging Target).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Each `<feature>' describes some logical portion of the target system. Features are currently used to describe available CPU registers and the types of their contents. A `<feature>' element has this form:
<feature name="name"> [type...] reg... </feature> |
Each feature's name should be unique within the description. The name of a feature does not matter unless GDB has some special knowledge of the contents of that feature; if it does, the feature should have its standard name. See section F.4 Standard Target Features.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Any register's value is a collection of bits which GDB must interpret. The default interpretation is a two's complement integer, but other types can be requested by name in the register description. Some predefined types are provided by GDB (see section F.3 Predefined Target Types), and the description can define additional composite types.
Each type element must have an `id' attribute, which gives a unique (within the containing `<feature>') name to the type. Types must be defined before they are used.
Some targets offer vector registers, which can be treated as arrays of scalar elements. These types are written as `<vector>' elements, specifying the array element type, type, and the number of elements, count:
<vector id="id" type="type" count="count"/> |
If a register's value is usefully viewed in multiple ways, define it with a union type containing the useful representations. The `<union>' element contains one or more `<field>' elements, each of which has a name and a type:
<union id="id"> <field name="name" type="type"/> ... </union> |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Each register is represented as an element with this form:
<reg name="name" bitsize="size" [regnum="num"] [save-restore="save-restore"] [type="type"] [group="group"]/> |
The components are as follows:
p
and P
packets, and registers appear in the g
and G
packets
in order of increasing register number.
yes
or no
. The default is
yes
, which is appropriate for most registers except for
some system control registers; this is not related to the target's
ABI.
int
and float
. int
is an integer type of the correct size
for bitsize, and float
is a floating point type (in the
architecture's normal floating point format) of the correct size for
bitsize. The default is int
.
general
, float
, or vector
. If no
group is specified, GDB will not display the register
in info registers
.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Type definitions in the self-description can build up composite types from basic building blocks, but can not define fundamental types. Instead, standard identifiers are provided by GDB for the fundamental types. The currently supported types are:
int8
int16
int32
int64
int128
uint8
uint16
uint32
uint64
uint128
code_ptr
data_ptr
ieee_single
ieee_double
arm_fpa_ext
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A target description must contain either no registers or all the target's registers. If the description contains no registers, then GDB will assume a default register layout, selected based on the architecture. If the description contains any registers, the default layout will not be used; the standard registers must be described in the target description, in such a way that GDB can recognize them.
This is accomplished by giving specific names to feature elements which contain standard registers. GDB will look for features with those names and verify that they contain the expected registers; if any known feature is missing required registers, or if any required feature is missing, GDB will reject the target description. You can add additional registers to any of the standard features -- GDB will display them just as if they were added to an unrecognized feature.
This section lists the known features and their expected contents. Sample XML documents for these features are included in the GDB source tree, in the directory `gdb/features'.
Names recognized by GDB should include the name of the company or organization which selected the name, and the overall architecture to which the feature applies; so e.g. the feature containing ARM core registers is named `org.gnu.gdb.arm.core'.
The names of registers are not case sensitive for the purpose of recognizing standard features, but GDB will only display registers using the capitalization used in the description.
F.4.1 ARM Features F.4.2 MIPS Features F.4.3 M68K Features F.4.4 PowerPC Features
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `org.gnu.gdb.arm.core' feature is required for ARM targets. It should contain registers `r0' through `r13', `sp', `lr', `pc', and `cpsr'.
The `org.gnu.gdb.arm.fpa' feature is optional. If present, it should contain registers `f0' through `f7' and `fps'.
The `org.gnu.gdb.xscale.iwmmxt' feature is optional. If present, it should contain at least registers `wR0' through `wR15' and `wCGR0' through `wCGR3'. The `wCID', `wCon', `wCSSF', and `wCASF' registers are optional.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `org.gnu.gdb.mips.cpu' feature is required for MIPS targets. It should contain registers `r0' through `r31', `lo', `hi', and `pc'. They may be 32-bit or 64-bit depending on the target.
The `org.gnu.gdb.mips.cp0' feature is also required. It should contain at least the `status', `badvaddr', and `cause' registers. They may be 32-bit or 64-bit depending on the target.
The `org.gnu.gdb.mips.fpu' feature is currently required, though it may be optional in a future version of GDB. It should contain registers `f0' through `f31', `fcsr', and `fir'. They may be 32-bit or 64-bit depending on the target.
The `org.gnu.gdb.mips.linux' feature is optional. It should contain a single register, `restart', which is used by the Linux kernel to control restartable syscalls.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`org.gnu.gdb.m68k.core'
`org.gnu.gdb.coldfire.core'
`org.gnu.gdb.fido.core'
`org.gnu.gdb.coldfire.fp'
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The `org.gnu.gdb.power.core' feature is required for PowerPC targets. It should contain registers `r0' through `r31', `pc', `msr', `cr', `lr', `ctr', and `xer'. They may be 32-bit or 64-bit depending on the target.
The `org.gnu.gdb.power.fpu' feature is optional. It should contain registers `f0' through `f31' and `fpscr'.
The `org.gnu.gdb.power.altivec' feature is optional. It should contain registers `vr0' through `vr31', `vscr', and `vrsave'.
The `org.gnu.gdb.power.spe' feature is optional. It should contain registers `ev0h' through `ev31h', `acc', and `spefscr'. SPE targets should provide 32-bit registers in `org.gnu.gdb.power.core' and provide the upper halves in `ev0h' through `ev31h'. GDB will combine these to present registers `ev0' through `ev31' to the user.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Please send FSF & GNU inquiries & questions to<EMAIL_ADDRESS>There are also other ways to contact the FSF.
These pages are maintained by the GDB developers.
Copyright Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
This document was generated by GDB Administrator on March, 27 2008 using texi2html


An invitation to participate in a shared project
The project was inspired by all the wonderful Animal Trading Cards from the resourceful students at Udacity Google Developer Challenge. How amazing would it be, if we could see them all in one place!
I would love all of you get involved. Simplest way to contribute is to submit your card and have it displayed on the home page. If you would like to contribute some ideas, all the better.
For those who are dying to put their fresh javaScript skills to test - it would be soo fab to add some cool features. It’s a team effort!
To get things started, let me know about your ideas and what you’d like to do.


Mortal Kombat 11 update 1.12 brings new content and loads of fixes
by Jim HargreavesNetherRealm Studios has released its latest patch for bloody fighting game sequel, Mortal Kombat 11. Those players looking to throw down will need to install the latest 1.12 update which is now available on the Xbox One and PlayStation 4 versions of the game.
The patch notes offer an extensive breakdown of what’s been added to the game and what’s been fixed. NetherRealm has slipped in some new Brutalities and taunts for fans to discover while also ironing out some issues players have been running into. Here are the official patch notes in full.
Mortal Kombat 11 1.12 Patch Notes
General Gameplay Adjustments • Move list corrections & added more move property tags
• Improvements to AI logic
• Reworked the Store to display more items at once and added bundles as a possible item type
• Added several new Brutalities for players to discover
• Added new End of Round Taunts for players to unlock
• Fixed issues where several modifier attacks could sometimes use the wrong facing direction while both characters are canned animation sequence
• Fixed a rare issue with Frame Data Tutorial that could cause successful hits to not count toward the progress
• Fixed an issue that could cause the round winner announcement to be delayed when not in the last round
• Fixed an issue that could cause final hit with certain Background Interactions to prevent the Flawless Victory announcement from occurring
• Fixed a rare practice mode issue that could cause the player to become unresponsive when repeatedly toggling the AI Playback Reset ON & OFF
• Fixed a rare issue that could cause projectile Krushing Blows to become disabled in some situations when it has not been used yet
• Fixed a rare issue that could cause a tie breaker to occur in trade situations on certain command grabs and synchronized attacks. These attacks will now properly trade
• Resurrections will no longer allow the opponent to move while the resurrection is still in progress if it happens at the same time as a Fatal Blow connects
• Fixed a rare audio issue that could cause some projectiles to not play audio when blocked or play a sound at the wrong location when hitting the opponent
• Characters will no longer sometimes face the wrong direction when blocking certain attacks
• The last hit red impact effects will no longer appear when the opponent is hit while in dizzy state after being defeated by a Fatal Blow
• Updated Johnny Cage Announcer voice to reference some unused nicknames
Krypt
• Added support for more special event chests
• Skeleton Keys can now sometimes be traded to the Kollector for Tower Summoning Stones
Towers of Time
• Added new secret events to Towers of Time
• The Ko-Op Tower Platform will now have all multiplayer towers available at once (Group Battles, Tag Battles and Team Raid)
• Added New Character Reward Bundles for first time completion of Ko-Op Towers
• Added new Boss Fight Towers and Premier Tag Towers
• Players can now play KO-Op tag battles solo and select two characters to tag in & out
• Added a new first time Kompletion Reward for completing a Boss Tower on Brutal difficulty that can contain an Augment or a Brutality for the character they are playing as
Stage Specific Adjustments
• Throw Background Interactions can no longer be projectile parried, destroyed or reflected. They can still be affected by projectile immunity
Character Specific Adjustments
Cassie Cage
• Cassie Cage – (Air) Bullet Barrage Amplify will no longer sometimes auto face the opponent
• Cassie Cage – Fixed a rare issue that could cause BLB-118 Drone to become unresponsive if interrupted during BLB-118 Energy Bounce or BLB-118 Escape
• Cassie Cage – BLB-118 Escape and BLB-118 Advance are now properly disabled when afflicted by Terminator’s Incapacitator
• Cassie Cage – Control BLB-118 & Cancel BLB-118 are now properly disabled when afflicted by Terminator’s Incapacitator
• Cassie Cage – Shoulder Charge Amplify Krushing Blow will no longer sometimes clip through objects in the corner of some stages
• Cassie Cage – Fixed an animation issue with Pistols when the match was ended with Flippin’ Out ability
Cetrion
• Cetrion – Conflux of Elements and Elemental Ring specials are now properly disabled when afflicted by Terminator’s Incapacitator
• Cetrion – Attacks that overlap with Cetrion while she is invisible during Unlimited Potential (Towards+Back Punch, Front Kick, Back Kick) will no longer have their active frames cancelled
• Cetrion – Geyser Krushing Blow will no longer sometimes clip through objects in the corner of some stages
D’Vorah
• D’Vorah – Fixed an animation issue when final hit of the match is performed with Infested
Erron Black
• Erron Black – Adjusted Erron Black’s proximity repel regions when performing Shoulder Shimmy (Towards+Back Punch) and Rising Outlaw (Down+Back Punch)
• Erron Black – Fatal Blow can no longer hit opponents behind him unless they are in a combo
• Erron Black – Fixed a rare audio issue with Forward Throw causing lingering sound effects when done during high latency online matches
Frost
• Frost – Adjust the hit region on Avalanche (Away+Front Kick, Back Punch)
• Frost – Fatal Blow can no longer hit opponents behind her unless they are in a combo
• Frost – Fixed an issue with Ice Auger Krushing Blow reaction that was not allowing the opponent to Breakaway
• Frost – Fixed a rare issue that could cause Ice Auger projectile to travel further then intended when it is interrupted
• Frost – Fixed a visual issue that would cause Ice Auger and Ice Auger Amplified to not disappear when hitting an opponent at maximum range
• Frost – Polar Pound’s (Away+Back Kick) visual effects will no longer sometimes linger when interrupted with specific timing
• Frost – Fixed an issue causing Fatal Blow armor to linger when blocked for a few frames which could allow it to absorb a Flawless Block Attack. Fatal Blow armor is now correctly removed when blocked
Geras
• Geras – Reverse Time can no longer be performed during an opponent’s resurrection
• Geras – Xuid & Guid (Towards+Front Punch, Front Punch + Front Kick, Back Kick) and Gauntlet Of The Ages Cancel are no longer disabled when afflicted by Terminator’s Incapacitator
Jacqui Briggs
• Jacqui Briggs – Lethal Clinch Double Spear Knee and Cybernetic Override Cancels are no longer disabled when afflicted by Terminator’s Incapacitator
Jade
• Jade – Divine Forced Amplified will no longer sometimes be missing visual effects when it hits the opponent
• Jade – Fixed an improper animation sometimes being played on Staff if a modifier is used at the same time as an attack using the Staff
Jax
• Jax – Quad Grab’s Power Bomb and Duck and Weave’s Cancel Duck & Weave are no longer disabled when afflicted by Terminator’s Incapacitator
Kabal
• Kabal – Fixed an issue causing Fatal Blow armor to sometimes linger when blocked for a few frames which could allow it to absorb a Flawless Block Attack. Fatal Blow armor is now correctly removed when blocked
Kano
• Kano – Blown Away (Towards+Back Punch, Up, Down, Back Kick) is no longer disabled when afflicted by Terminator’s Incapacitator
Kitana
• Kitana – Fixed an audio issue with the Follow The Leader (Towards+Back Punch, Front Kick, Back Kick) Krushing Blow
Kollector
• Kollector – Damned Bola Cancel is no longer disabled when afflicted by Terminator’s Incapacitator
• Kollector – Fixed a visual issue with War-Quoit Toss when colliding with certain objects
• Kollector – Fixed an issue causing Fatal Blow armor to sometimes linger when blocked for a few frames which could allow it to absorb a Flawless Block Attack. Fatal Blow armor is now correctly removed when blocked
• Kollector – Fixed a rare issue that could occur if the Kukri or Chakram during Take And Deny (Towards+Front Kick, Front Punch, Back Punch, Front Kick) made contact with the opponent on a frame where a rollback occurred during on online match
Kotal Kahn
• Kotal Kahn – Yeyecame Disk Amplify Krushing Blow can now also be performed with Krushing Blow Held Check set to ON by holding the Amplify button
• Kotal Kahn – Fixed an issue causing Fatal Blow armor to sometimes linger when blocked for a few frames which could allow it to absorb a Flawless Block Attack. Fatal Blow armor is now correctly removed when blocked
Kung Lao
• Kung Lao – Hat Toss, Guided Hat, and Possessed Hat now starts up 1 frame faster and had its hit region adjusted on the first active frame
• Kung Lao – (Air) Vortex can now be performed as a 2in1 cancelled from a Jump Attack
• Kung Lao – Fixed an issue causing Fatal Blow armor to sometimes linger when blocked for a few frames which could allow it to absorb a Flawless Block Attack. Fatal Blow armor is now correctly removed when blocked
Liu Kang
• Liu Kang – Adjusted Liu Kangs’s proximity repel regions when ducking
• Liu Kang – Adjusted the hit region on first hit of Nunchaku Stance’s Nunchaku Flurry
• Liu Kang – Lotus Strikes (Towards+Back Kick) is now correctly being counted for the Krushing Blow condition on Nunchaku Stance’s Nunchaku Flurry
• Liu Kang – Fixed an audio issue with Flying Dragon Kick Amplify while Dragon Fire is active
Noob
• Noob – Fade To Black (Towards+Back Punch, Back Punch) had its hit region adjusted
• Noob – Adjusted opponent’s victim region when hit by Turning Chop (Towards+Back Punch) and Fade To Black (Towards+Back Punch, Back Punch)
• Noob – For The Brotherhood (Back+Front Punch, Front Punch + Front Kick, Back Punch) is no longer disabled when afflicted by Terminator’s Incapacitator
Raiden
• Raiden – Lightning Strike now has 4 more frames of hit advantage, 5 more frames of blockstun, and recovers 2 frames faster
• Raiden – Lightning Strike Amplify now has 4 more frames of hit advantage
• Raiden – Fixed an issue causing Lightning Strike Amplify to not be possible if the Lightning Strike hit on the last active frame
• Raiden – Lightning Strike Amplify can now be performed when Lightning Strike misses or is blocked but the follow up Lightning will only track the opponent when Lightning Strike hits
• Raiden – Lightning Rod is now +8 on hit (up from -3)
• Raiden – If the attack from Lightning Strike bounces off Lightning Rod and hits the opponent, Raiden is now +4 to +5 on hit (up from -4 to -13) depending on spacing & active frames
Scorpion
• Scorpion – (Air) Hell Port Cancel is no longer possible when afflicted by Terminator’s Incapacitator
Skarlet
• Skarlet – Blood Ritual self-damage no longer factors in the opponent’s buffs & debuffs. The damage to Skarlet & the opponent is now always based on Skarlet’s buffs & debuffs
• Skarlet – Fixed an issue with Fatal Blow animation sometimes clipping in through objects in Sea of Blood stage
Sonya
• Sonya – Fixed a visual issue with Low Kounter Krushing Blow animation when performed on female characters
• Sonya – K.A.T. turret will no longer sometimes fire in the wrong direction after switching sides with the opponent
• Sonya – Fixed issue that could cause K.A.T. to jump toward the background when performing K.A.T. Tantrum
• Sonya – Fixed K.A.T. turret being able to stay out indefinitely while certain K.A.T. moves are repeatedly used
Sub-Zero
• Sub-Zero – Fixed a rare visual issue with (Air) Ice Axe when performed repeatedly during gameplay
Shang Tsung
• Shang Tsung – Screaming Soul Cancel is no longer possible when afflicted by Terminator’s Incapacitator
• Shang Tsung – Fixed an issue that sometimes prevented Fatalities from being possible if Shang Tsung was defeated while morphed
• Shang Tsung – Shang Tsung will no longer sometimes perform two End of Round Taunts if the round is ended while he is morphed
• Shang Tsung – After morphing into Terminator he can no longer sometimes keep Terminate’s armor active when morphing back into Shang Tsung with specific timing
• Shang Tsung – Fixed a rare issue that could cause Shang Tsung to permanently suffer from Terminator’s Terminate debuff when morphed he if uses it at a certain timing
• Shang Tsung – Fixed a visual issue with weapons playing an incorrect animation when Shang Tsung morphs back into his original form
• Shang Tsung – Fixed an issue that could cause practice mode Easy Krushing Blows to not reset properly when morphed
Nightwolf
• Nightwolf – Helmsplitter Krushing Blow will no longer clip through objects in the corner of some stages
Terminator
• Terminator – Slightly increased combo damage scaling on Infiltrator Toss Amplify and Albi Back Breaker Amplify Krushing Blow
• Terminator – Fixed an issue that could cause Incapacitator debuff to last for an incorrect duration if used immediately after a Krushing Blow or Fatal Blow
• Terminator – Fixed an issue that could cause Terminate buff and visuals to linger after he becomes Endoskeleton
• Terminator – Fixed an issue with Sawed Off damage sometimes being incorrect when reflected
• Terminator – Terminate is now removed when an attack from Terminator is parried
• Terminator – Slightly increased Terminator’s victim regions when Running Man is active
• Terminator – When Terminator is hit while exiting from Running Man it is now considered a punish instead of a Kounter
• Terminator – The wrong skeleton is no longer sometimes shown when hit by electrocution attacks
• Terminator – Running Man Cancel is no longer possible when afflicted by Terminator’s Incapacitator
• Terminator – Fixed an issue causing Killing Machine projectile immunity to not work properly with some Background Interactions
• Terminator – Fixed a visual issue with Terminator’s grenades at match start when he is used as second player during a Tag Battle
• Terminator – Incapacitator damage is now correctly considered a special move
• Terminator – Infiltrator Toss Amplify can now only be performed a maximum of two times in a combo
• Terminator – Fixed a rare camera issue when resetting practice mode shortly after hitting with Running Man Amplify
Unsurprisingly, Mortal Kombat 11 is among the shortlist of games nominated for “Best Fighting Game” in this year’s Game Awards. It’s up against some stiff competition in the forms of Super Smash Bros. Ultimate, and Samurai Shodown, with Dead Or Alive 6 and Jump Force also in the mix.
For more on MK11, make sure you read our review.


--- layout: jcloud/page title: Pages tagline: permalink: /pages/ header: Pages group: navigation --- {% include Jcloud/setup %}


Sequence¶
Is a homogeneous collection which provides random (indexed) access to elements. If the number of elements in the collection is known at compile-time (i.e. is part of the type), the sequence is called static, otherwise – dynamic.
Uniform interface to sequences is provided through
sequence_traits
:
namespace boost {
namespace static_views {
template <class Sequence>
struct sequence_traits {
using value_type = ...;
using reference = ...;
using const_reference = ...;
using index_type = ...;
using size_type = ...;
using difference_type = ...;
static constexpr auto extent() noexcept -> std::ptrdiff_t;
static constexpr auto size(Sequence const&) noexcept -> size_type;
static constexpr auto at(Sequence&, index_type) noexcept -> reference;
static constexpr auto at(Sequence const&, index_type) noexcept -> const_reference;
};
} // namespace static_views
} // namespace boost
size()
and at()
member functions are hopefully self-explanatory.
extent()
allows one to distinguish between static and dynamic
sequences:
- for static sequences it should return the size of the sequence;
- for dynamic sequences it should return
dynamic_extent
indicating that the size cannot be extracted from the type.
For type T
To model the Sequence concept, there should exist a
specialisation of sequence_traits
with typedefs and member
functions listed above. To be more precise, here are the Sequence and
StaticSequence concepts definitions written in Concepts TS syntax:
namespace boost {
namespace static_views {
template <class T>
concept bool Sequence = requires(T& a, T const& b,
typename sequence_traits<T>::index_type i)
{
{ sequence_traits<T>::extent() } noexcept -> std::ptrdiff_t;
sequence_traits<T>::extent() >= 0
|| sequence_traits<T>::extent() == dynamic_extent;
{ sequence_traits<T>::size(b) } noexcept
-> typename sequence_traits<T>::size_type;
{ sequence_traits<T>::at(a, i) }
-> typename sequence_traits<T>::reference;
{ sequence_traits<T>::at(b, i) }
-> typename sequence_traits<T>::const_reference;
};
template <class T>
concept bool StaticSequence = requires()
{
Sequence<T>;
sequence_traits<T>::extent() >= 0;
};
} // namespace static_views
} // namespace boost
C-style arrays, std::array
, and std::tuple
(of the same type,
obviously) model the StaticSequence concept out of the box.


@redfoxlabs_io & @KomodoPlatform will benefit from each other. How? Read @iMyloMylo article and find out.
$KMD #Komodo #blockchain #bitcoin #cryptocurrency #BaaS
https://t.co/8RX4TGPYwz
GatewayBOT11-Apr-19 11:43 AM
[dscrdpioneers] <Audo> Sometimes I don't understand Twitter. Turns out that's not a tweet but "reply" and thus not visible on the main twitter page (https://twitter.com/KomodoPioneers)
[dscrdpioneers] <Audo> I guess that is because the tweet starts with @redfoxlabs_io
GatewayBOT11-Apr-19 11:57 AM
[dscrdpioneers] <Mylo(KomodoPioneers)> Hmmm.....
[dscrdpioneers] <Mylo(KomodoPioneers)> ah well delete and do it again maybe
[dscrdpioneers] <Audo> nah it's good, I think others still see it
[dscrdpioneers] <Audo> (I hope)
KomodoWorld11-Apr-19 12:08 PM
I saw it in my twitter timeline, it's when you see your own page that sometimes it's in the reply tab instead of the main one
GatewayBOT11-Apr-19 12:20 PM
[dscrdpioneers] <Mylo(KomodoPioneers)> awsm thanks kmdworld. when i wrote my comment about delete it and do it again, i thought it was team chat - now everyone knows i'm a twitter n00b
GatewayBOT12-Apr-19 05:16 PM
[dscrdpioneers] <barv> True. If you have to start with @ better put a ' in front to avoid being seen as a reply
Komodo Pioneers is a #Komodo Notary Node candidate with a mission to support the $KMD ecosystem.
Check out Komodo Pioneers as well as the other fine candidates on https://t.co/j9j6dnUAd7
We are going to need your support. Share our infographic and vote us in the EU regio...
A LIVE #blockchain #gaming event is about to begin.
Live Stream starts at 16:30 UTC
Komodo Pioneers sponsored the event drinks, cheers!
@komodoregames @KomodoPlatform @bvanmaarseveen $KMD #Komodo #netherlands
https://t.co/SQncR7iMGE
#K64 couldn’t go so far without the support from @KomodoPlatform @KomodoPioneers @bvanmaarseveen and many other actors in #blockchain #Komodo #community
Vote for Komodo Pioneers VOTE2019: RE72g3g3FgMd6zMvxrR7o3YopTqY7v76Qy
#TogetherWeAreStronger https://t.co/DEYd...
#Komodo Notary Node elections are about to end. (11:59 PM UTC today)
The situation is close: we are currently at 5th place on the EU region. All votes count, thanks for all the support!
Follow the situation live: https://t.co/j9j6dnUAd7
[dscrdpioneers] <Mylo>
GatewayBOT13-May-19 10:03 PM
[dscrdpioneers] <bartwr> Congrats on your 1073715 KMD votes!
GatewayBOT13-May-19 10:26 PM
[dscrdpioneers] <Audo> thanks! The situation is very even in EU, just few votes can change the situation
GatewayBOT14-May-19 12:17 AM
[dscrdpioneers] <Audo> We won the 8th place on EU! very tight race.
Thanks for all the voters once again.
Soon we will be running two notary nodes and it seems like the bull market is starting. If it is then we will have some funding in place to do something. If someone got ideas feel free to message us here or in PM.
We received well over 1M votes which place us on the 8th place in the EU region. In other words, we are about to get elected! However, we are still waiting for the official count and confirmation.
HUGE thanks to all our voters & supporters! Let's make 2019 & 2020 great fo...
Find out in this 4 minute #explainer why @KomodoPlatform & @komodoregames are a #game changer for #Blockchain & #Gaming! $KMD #K64 #POG #ProofOfGameplay #ProofOfSweat #KMDP
https://t.co/Ic16wWIIfS
[dscrdpioneers] <Audo> Barv made an animated presentation
GatewayBOT24-May-19 04:26 AM
[dscrdpioneers] <Mylo> animation is good
GatewayBOT24-May-19 12:21 PM
[dscrdpioneers] <Audo> What's happening in the Netherlands at the end of May early June @barv ?
I'll be there for ~ 1.5 weeks
GatewayBOT25-May-19 11:35 AM
[dscrdpioneers] <barv> Good to hear @Audo ! You are most welcome ! First week of June there will be lots of events because of Dutch Blockchain Week. I will share nice ones with you. Cool!
GatewayBOT25-May-19 07:43 PM
[dscrdpioneers] <Audo>
Deleted User26-May-19 06:34 AM
Hi here :).
Barterlly is now open on BETA mode, and will provide tools for users and CoinOwners to perform OTC trades in a safe way.
Any KMD assetchain dPowed will be listed, and supported, for free.
Other coins not already listed can submit a listing application at : https://barterlly.typeform.com/to/iqpS1H
During the BETA, Barterlly won't charge any fee other than the transaction ones. after the release we will charge 1% on top of every transaction.
Our goal is to provide premium tools for coins listed on the platform. (Discord swapbot, twitter integration, public orders, wallet integration, API, custom templating, and many more).
Feel free to join us on our Discord.
https://discord.gg/RHc95zw
The app link is located at : https://app.barterlly.io
We are open to suggestions, and partnerships.
See you soon !
Barterlly's team
[dscrdpioneers] <Mylo> @Artist wrote an article for getting price data from binance - the reddit post links to other articles he has written. The DEX beta starts sometime this week, so we are preparing a collection of articles to help people use the marketmaker software
[dscrdpioneers] <Mylo> the https://hybriddex.com site is maintained by me, any questions plz don't hesitate to ask.
we review multi coin wallets, token dex, atomic swaps, and general usage of coins for trading.
I am Bart van Maarseveen, and I am a Komodo Pioneer. Komodo Pioneers is a Notary Node team on a mission to help bootstrap community projects and initiatives....
[dscrdpioneers] <pioneer barv> Actually two. But number two is about proof of gameplay & chips. does that count?
[dscrdpioneers] <Audo> not sure, I think it would be second priority versus other meetups that are specifically about rebrand. Better to make the rebrand meetup first at least :)
Let me know when and I might book flights to come
GatewayBOT18-Jul-19 11:17 PM
[dscrdpioneers] <Artist> Proof of gameplay did someone said?
GatewayBOT19-Jul-19 03:16 AM
[dscrdpioneers] <Mylo> rogue is proof of gameplay. chips yes, they will use antara gateways for different currencies to play with blockchain enforced locking/unlocking
GatewayBOT19-Jul-19 12:57 PM
[dscrdpioneers] <pioneer barv> @Audo 30th July Amsterdam we'll do the Antara meetup
[dscrdpioneers] <Audo> can't make that date unfortunately
[dscrdpioneers] <pioneer barv> Then 2 weeks later for the POG and Chips meetup
[dscrdpioneers] <Audo> I will check my schedule
GatewayBOT19-Jul-19 01:45 PM
[dscrdpioneers] <Mylo> hmmmmm what date is POG/CHIPS?
Summer Special! Tuesday July 30th 14:00 We'll kick off in #Amsterdam with #Komodo day! Learn all about @KomodoPlatform and how to "#buidl your own #blockchain" with their #Antara framework. It's free, sponsored by @KomodoPioneers & community passion! >> https://t.co/t...
Let's get all the #Komodo meetups rolling and showcase the power of @KomodoPlatform! If you are thinking of hosting one check out our guide and apply for funding. $KMD #blockchain #bitcoin
Big  Thanks to @bvanmaarseveen & @JeanneDeBit
https://t.co/qWfmSigFCF
[dscrdpioneers] <Audo> p.s., please submit your meetup proposal
Komodo had its first meetup on the continent of Africa!
It was organized by a group of students on the Kampala International University in Uganda.
@kiu_ug @KomodoPlatform $kmd #blockchain #meetup
[dscrdpioneers] <Audo> Hopefully many more will come!
GatewayBOT02-Sep-19 06:46 PM
[dscrdpioneers] <jabz> Am honoured to be here
[dscrdpioneers] <jabz> How is everyone? @here
GatewayBOT03-Sep-19 03:49 AM
[dscrdpioneers] <Mylo> It was great to see that, thanks!! Hope you had a good meet up! If you've got questions about meet ups or questions about materials / follow up, just ask and we'll see what we can organise
GatewayBOT03-Sep-19 05:13 AM
[dscrdpioneers] <jabz> @Mylo your welcome.  Wish me luck.
Thu, Sep 26, 2019, 5:00 PM: SCROLL DOWN FOR ENGLISH VERSION–––––––––––––Tervetuloa Komodo & Bitcoin saunailtaan!Tapahtuman tarkoituksena on puhua lohkoketju teknologiasta, Bitcoinista, ja tietenkin Ko
Join our #Helsinki meetup and enjoy a beer in the sauna while talking about #blockchain.
During the evening, we will showcase @KomodoPlatform's AtomicDEX Wallet and discuss the revolutionary atomic swap #technology, among many other blockchain topics.
https://t.co/R...
Future blockchain developers are here! Pioneers represented Komodo and talked about blockchain tech on Devoxx4Kids event in Utrecht, Netherlands.
@KomodoPlatform @SuperDiesmaster @Devoxx4Kids $KMD #blockchain #Developer
1
[dscrdpioneers] <Audo> thanks to @Diesmaster for inspiring the young devs


--- layout: page title: About ---
My name is Kahli, and I am a Computer Science Student at the University of Texas. I am also a part-time employee working at the Center for Agile Technology at UT as a Developer. I was born in Austin, raised in Austin, and have also made Austin my college town. Oddly enough, with its rapid growth, Austin has become one of the next biggest tech boom towns, which ironically and coincidentally match up with my career field. Life has carved a pretty simple path for me, it seems.
Currently, as of Fall 2015, I'm taking these classes:
Some fun facts about the setup of this website:


MKTableViewController Class Reference
| Inherits from | UITableViewController |
| Declared in | MKTableViewController.h |
Overview
Overview
MKTableViewController is a subclass of UITableViewController that allows for pull down actions. This class does not provide any specific action for a pull down such as pull to refresh. Instead it gives the ablitlty to specify a pull down view of any type, and methods for observing pull and release actions. It is upto you to preform any refresh or reloading actions for the table views data.
Observing Actions
The observation of action are built right into the class; your subclass can access them directry without the use of delegate or notifications. You can observe the view being pulled down, pushed back up, released, and when the operations are complete.
Note You need to forward the observation method to the super class for this view controller to function properly.
Convenience Methods
MKTableViewController offers some convenience methods to to help with tableview layouts. See the Convenience Methods section for more information.
Required Frameworks
- Foundation
- UIKit
Tasks
Pull Down View
-
pullDownView
The view that will be shown when the table view is pulled Down. This view can be any height, MKPullDownTableViewController will adjust accordingly to fit the height of the view.Note If the pullDownView has a height that is grater than the available display area, the pull down control will not function properly.
Observing Pull Down Actions
-
working
Is set toYES
when a pullDownView is fully pulled down and release. Will return toNO
when the shouldReturnPullDownView method is called. Default isNO
.Note When working is set to
YES
, no pull or push actions will be called. -
- didPullDownPullDownView
Called when the pull down view full pulled onto the screenNote This method is called from the scroll view delegate, it may be called several time in a row.
-
- didPushUpPullDownView
Called when the pull down is pushed back up before being released.Note This methoe is called from the scroll view delegate, it may be called several times in a row
-
- didReleasePullDownView
Called when the pull down view is pulled and complete and then the user lifts their finger from the screen. -
- pullDownOperationsCompleted
Called after the pull down view is progamatically moved of the top of the screen.
Convenience Methods
-
- textForFooterInSection:
Convenience method for setting footer text. Method does nothing by default. -
footerFont
The font of the footers. This property is used when setting the height of footers.
Notifications
-
- shouldReturnPullDownView
Subclasses should call this method when they have completed the operations preformed in the didReleasePullDownView method.
Instance Methods
didPullDownPullDownView
Called when the pull down view full pulled onto the screen
Note This method is called from the scroll view delegate, it may be called several time in a row.
- (void)didPullDownPullDownView
Declared In
MKTableViewController.h
didPushUpPullDownView
Called when the pull down is pushed back up before being released.
Note This methoe is called from the scroll view delegate, it may be called several times in a row
- (void)didPushUpPullDownView
Declared In
MKTableViewController.h
didReleasePullDownView
Called when the pull down view is pulled and complete and then the user lifts their finger from the screen.
- (void)didReleasePullDownView
Discussion
Called when the pull down view is pulled and complete and then the user lifts their finger from the screen.
Use this method to pefrom any operations that pulling down the table view will cause. (i.e., refresh data sources).
Note It is required that subclasses call [surer didReleasePullDownView]
in this method. The pull down view will not function properly if this is not done.
Declared In
MKTableViewController.h
pullDownOperationsCompleted
Called after the pull down view is progamatically moved of the top of the screen.
- (void)pullDownOperationsCompleted
Declared In
MKTableViewController.h
shouldReturnPullDownView
Subclasses should call this method when they have completed the operations preformed in the didReleasePullDownView method.
- (void)shouldReturnPullDownView
Discussion
Subclasses should call this method when they have completed the operations preformed in the didReleasePullDownView method.
Calling this method will move the pull down view back of the top of the view and call the pullDownOpertaionsCompleted method.
Declared In
MKTableViewController.h
Properties
footerFont
The font of the footers. This property is used when setting the height of footers.
@property (nonatomic, strong) UIFont *footerFont
Declared In
MKTableViewController.h
pullDownView
The view that will be shown when the table view is pulled Down. This view can be any height, MKPullDownTableViewController will adjust accordingly to fit the height of the view.
Note If the pullDownView has a height that is grater than the available display area, the pull down control will not function properly.
@property (nonatomic, strong) UIView *pullDownView
Declared In
MKTableViewController.h
working
Is set to YES
when a pullDownView is fully pulled down and release. Will return to NO
when the shouldReturnPullDownView method is called. Default is NO
.
Note When working is set to YES
, no pull or push actions will be called.
@property (nonatomic, readonly) BOOL working
Declared In
MKTableViewController.h


"Marius and Jeannette" is one of those movies that succeeds or falls flat depending on your response to the quirky characters screenwriters Robert Guediguian and Jean-Louis Milesi have cooked up. If you're easily charmed by stories featuring nutty folks playing Cupid for troubled lovers, you may find this French comedy enchanting. If eccentricity alone doesn't usually persuade you to buy a ticket, "Marius" is 102 missable minutes. The movie's saving grace is the luminous Ariane Ascaride, whose performance here may remind you of the legendary Anna Magnani. Like Magnani, Ascaride has an earthiness and warmth that makes her instantly endearing. Ascaride plays Jeannette, a mother of two who's had an inordinate amount of bad luck with men and is barely scraping by in the depressed city of Marseilles. When she tries to steal some paint from an abandoned cement factory in the hopes of sprucing up her house, Jeannette runs into guard Marius (Gerard Meylan) and before you can say "la vie en rose," a relationship is blooming. Not counting on Ascaride's charm to carry the film, director Guediguian keeps shifting away from the love story to introduce considerably less beguiling characters, most of whom seem like refugees from some European sitcom. Particularly disorienting is middle-aged Communist Caroline (Pascale Roberts): One minute, she's Sophie Zawistowska, dredging up memories of her imprisonment in a concentration camp, and the next she's Mrs. Roper, trying to put the make on an elderly beau.  Neighbors like these would be a strong incentive for escaping the low-rent district and Guediguian's heavy-handedness as both writer and director doesn't make them any easier to stomach. Aside from Ascaride, the only flashes of interest in "Marius and Jeannette" are the film's observations about the French economy, in which a worker can slip down the ladder of success much more easily than he or she can ascend. The movie's strongest image is a tracking shot that follows Jeannette as she makes her way to the back of a seemingly endless line of job interviewees. That moment has a good deal more truth than anything else in this contrived tale. James Sanford
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Scanlines:
The screen resolution is 160x144 meaning there are 144 visible scanlines. The Gameboy draws each scanline one at a time starting from 0 to 153, this means there are 144 visible scanlines and 8 invisible scanlines. When the current scanline is between 144 and 153 this is the vertical blank period. The current scanline is stored in register address 0xFF44. The pandocs tell us that it takes 456 cpu clock cycles to draw one scanline and move onto the next, so we will need a counter to know when to move onto the next line, we'll call this m_ScanlineCounter. Just like the timer and divider registers we can control the scanline counter by subtracting its value by the amount of clock cycles the last opcode took to exectue. If we look at our main emulator update loop that we emulated in the Getting Started chapter you can see that the UpdateGraphics function gets passed the amount of cycles the last opcode took so we can accurately keep the graphics in sync with the cpu. This is how the UpdateGraphics function is emulated:
void Emulator::UpdateGraphics(int cycles)
{
SetLCDStatus( ) ;
if (IsLCDEnabled())
m_ScalineCounter -= cycles ;
else
return ;
if (m_ScalineCounter <= 0)
{
// time to move onto next scanline
m_Rom[0xFF44]++;
BYTE currentline = ReadMemory(0xFF44) ;
m_ScalineCounter = 456 ;
// we have entered vertical blank period
if (currentline == 144)
RequestInterupt(0) ;
// if gone past scanline 153 reset to 0
else if (currentline > 153)
m_Rom[0xFF44]=0
// draw the current scanline
else if (currentline < 144)
DrawScanLine() ;
}
}
// reset the current scanline if the game tries to write to it
else if (address == 0xFF44)
{
m_Rom[address] = 0 ;
}
Setting the LCD Status:
The memory address 0xFF41 holds the current status of the LCD. The LCD goes through 4 different modes. These are "V-Blank Period", "H-Blank Period", "Searching Sprite Attributes" and "Transferring Data to LCD Driver". Bit 1 and 0 of the lcd status at address 0xFF41 reflects the current LCD mode like so:
00: H-Blank
01: V-Blank
10: Searching Sprites Atts
11: Transfering Data to LCD Driver
When the LCD status changes its mode to either Mode 0, 1 or 2 then this can cause an LCD Interupt Request to happen. Bits 3, 4 and 5 of the LCD Status register (0xFF41) are interupt enabled flags (the same as the Interupt Enabled Register 0xFFFF, see interupts chapter). These bits are set by the game not the emulator and they represent the following:
Bit 3: Mode 0 Interupt Enabled
Bit 4: Mode 1 Interupt Enabled
Bit 5: Mode 2 Interupt Enabled
One important part to emulate with the lcd modes is when the lcd is disabled the mode must be set to mode 1. If you dont do this then you will spend hours like I did wondering why Mario2 wont play past the title screen. You also need to reset the m_ScanlineCounter and current scanline
The last part of the LCD status register (0xFF41) is the Coincidence flag. Basically Bit 2 of the status register is set to 1 if register (0xFF44) is the same value as (0xFF45) otherwise it is set to 0. Bit 6 of the LCD status register (0xFF44) is the same as the interupt enabled bits 3-5 but it isnt to do with the current lcd mode it is to do with the bit 2 coincidence flag. If the conicidence flag (bit 2) is set and the conincidence interupt enabled flag (bit 6) is set then an LCD Interupt is requested. The conicidence flag means the current scanline (0xFF44) is the same as a scanline the game is interested in (0xFF45). The reason why the game would be interested in the current scanline is to do special effects. So when 0xFF44 == 0xFF45 then an interupt can be requested to let the game know that the values are the same.
We now have enough information to put all this together and implement the SetLCDStatus function
void Emulator::SetLCDStatus( )
{
BYTE status = ReadMemory(0xFF41) ;
if (false == IsLCDEnabled())
{
// set the mode to 1 during lcd disabled and reset scanline
m_ScanlineCounter = 456 ;
m_Rom[0xFF44] = 0 ;
status &= 252 ;
status = BitSet(status, 0) ;
WriteMemory(0xFF41,status) ;
return ;
}
BYTE currentline = ReadMemory(0xFF44) ;
BYTE currentmode = status & 0x3 ;
BYTE mode = 0 ;
bool reqInt = false ;
// in vblank so set mode to 1
if (currentline >= 144)
{
mode = 1;
status = BitSet(status,0) ;
status = BitReset(status,1) ;
reqInt = TestBit(status,4) ;
}
else
{
int mode2bounds = 456-80 ;
int mode3bounds = mode2bounds - 172 ;
// mode 2
if (m_ScanlineCounter >= mode2bounds)
{
mode = 2 ;
status = BitSet(status,1) ;
status = BitReset(status,0) ;
reqInt = TestBit(status,5) ;
}
// mode 3
else if(m_ScanlineCounter >= mode3bounds)
{
mode = 3 ;
status = BitSet(status,1) ;
status = BitSet(status,0) ;
}
// mode 0
else
{
mode = 0;
status = BitReset(status,1) ;
status = BitReset(status,0) ;
reqInt = TestBit(status,3) ;
}
}
// just entered a new mode so request interupt
if (reqInt && (mode != currentmode))
RequestInterupt(1) ;
// check the conincidence flag
if (ly == ReadMemory(0xFF45))
{
status = BitSet(status,2) ;
if (TestBit(status,6))
RequestInterupt(1) ;
}
else
{
status = BitReset(status,2) ;
}
WriteMemory(0xFF41,status) ;
}
The LCD Control:
The LCD Control register (0xFF40) will be covered in detail in the chapter called Graphic Emulation however the above code uses the function IsLCDEnabled() a lot which I've yet to implement and this relies on the LCD Control register. Bit 7 of this register is responsible for enabling and disbaling the lcd so we can implement IsLCDEnabled() like so:
bool Emulator::IsLCDEnabled() const
{
return TestBit(ReadMemory(0xFF40),7) ;
}


Kipchoge makes shortlist for IAAF award
by Timothy OlobuluNAIROBI, Kenya, Nov 11 – World marathon record holder Eliud Kipchoge has made it into the five-man shortlist for the 2019 IAAF Male Athlete of the Year award alongside Uganda’s 10,000m world champion Joshua Cheptegei.
Kipchoge had been in the initial list alongside world 15000m champion Timothy Cheruiyot who has unfortunately not mad it to the penultimate shortlist.
He will look to win the IAAF top award for a second consecutive time alongside Cheptegei, USA’s pole vaulter Sam Kendricks, American sprinter Noah Lyles and Norwegian 400m hurdler Karsten Warholm.
Kipchoge set the world record in Berlin last year, leading to his award at the end of the season.
This year, he has only participated in two races, the London Marathon which he successfully clinched as well as the historic Ineos 159 challenge in Austria where he became the first man to run a marathon under two hours.
A three-way vote decided the final shortlist of five, whittled down from the initial 11.
The World Athletics Council and the World Athletics Family cast their votes by email, while fans voted online via our social media platforms. The Council’s vote counted for 50% of the result, while the Athletics Family’s votes and the public votes each counted for 25% of the final result.
The male and female World Athletes of the Year will be announced at the World Athletics Awards 2019 to be staged in Monaco on November 23.
Top five shortlist
Joshua Cheptegei (UGA)
– won world cross-country title in Aarhus
– won world 10,000m title in a world-leading 26:48.36
– won Diamond League 5000m title
Sam Kendricks (USA)
– won world pole vault title
– cleared a world-leading 6.06m to win the US title
– won 12 of his 17 outdoor competitions, including the Diamond League final
Eliud Kipchoge (KEN)
– won London Marathon in a course record of 2:02:37
– ran 1:59:40.2 for 42.195km in Vienna
Noah Lyles (USA)
– won world 200m and 4x100m titles
– ran a world-leading 19.50 in Lausanne to move to fourth on the world all-time list
– won Diamond League titles at 100m and 200m
Karsten Warholm (NOR)
– won the world 400m hurdles title
– undefeated indoors and outdoors at all distances, including at the Diamond League final and the European Indoor Championships
– clocked world-leading 46.92, the second-fastest time in history
(Visited 18 times, 18 visits today)


--- title: "Home" ---
Accountants, still emailing timesheet spreadsheets to your customers? Save time and money using our simple timesheet system.


World
The World class handles the canvas and the drawing of elements. It manages all touch and mouse events, as well as the scaling and axis settings. All elements drawn to the canvas must go through a World object.
Constructor Summary
| Public Constructor | ||
| public |
constructor(id: string, drawCallback: function, resizeCallback: function) |
Member Summary
| Public Members | ||
| public |
Axis object used to draw the main axis. |
|
| public |
Background renderer object. |
|
| public |
HTML canvas created for the world. |
|
| public |
Simple background color for the canvas. |
|
| public |
jQuery reference to the div container of the canvas. |
|
| public |
Context of the created canvas for the world. |
|
| public |
Array of elements added to the world. |
|
| public |
Height of the canvas in pixels. |
|
| public |
Mouse object containing all mouse properties and values. |
|
| public |
Callback function for when the elements are drawn to the canvas. |
|
| public |
Callback function for when the mouse moves over the canvas. |
|
| public |
Callback function for when the canvas gets resized. |
|
| public |
Width before resizing the canvas to the new width. |
|
| public |
Pixel ratio of the device. |
|
| public |
Scale object for the -x axis. |
|
| public |
Scale object for the -y axis. |
|
| public |
Request id number from the requestAnimationFrame. |
|
| public |
Width of the canvas in pixels. |
Method Summary
| Public Methods | ||
| public |
add(args: ...WorldElement) Adds a WorldElement to the world. |
|
| public |
export() Creates a screenshot of the canvas and saves it as sc.png in the same folder as the main file from the simulation. |
|
| public |
Makes sure that a box of width (xMin + xMax) and height {yMin + yMax} fits in the canvas. |
|
| public |
remove(args: ...WorldElement) Remove a WorldElement from the world. |
|
| public |
Sets a new cursor for when the mouse is over the canvas. |
| Private Methods | ||
| private |
Binds a callback function to the mouse, touch and resize event listeners. |
|
| private |
draw() Main draw function. |
|
| private |
getMousePosition(e: *) Obtain the mouse or touch coordinates from the event data obtained from the callback. |
|
| private |
Find if the mouse is over an element. |
|
| private |
Once it has been determined that the mouse is over an element and a dragging process has begun, the position of the object must be updated to follow the mouse. |
|
| private |
resize(e: *) Callback function for the resize event. |
|
| private |
start() Starts the animation loop of 60fps. |
Public Constructors
Public Members
public canvas: object source
HTML canvas created for the world. Important to note is that the canvas does not have an alpha channel. This is done to optimize the framerate.
public color: string source
Simple background color for the canvas. If set to ther value than COLORS.WHITE the canvas will draw a rectangle with the new color at the beginning of every draw cycle. When the background renderer is enabled, the color value is no more relevant.
public mouse: object source
Mouse object containing all mouse properties and values.
Properties:
| Name | Type | Attribute | Description |
| x | number | Current -x position of the mouse in pixels. |
|
| y | number | Current -y position of the mouse in pixels. |
|
| px | number | Previous -x position of the mouse in pixels. |
|
| py | number | Previous -y position of the mouse in pixels. |
|
| dx | number | Change in the -x direction in pixels. |
|
| dy | number | Change in the -y direction in pixels. |
|
| rx | number | Real -x position of the mouse with respect to the axis in units. |
|
| ry | number | Real -y position of the mouse with respect to the axis in units. |
|
| down | boolean | Flag for when the mouse is pressed down over the canvas. |
|
| inCanvas | boolean | Flag for when the mouse is over the canvas. |
|
| dragging | object | Contains the currently dragged WorldElement. If no element is dragged then the value is equal to DRAG_NOTHING. |
|
| over | object | Contains the element that the mouse is currently over. If no element is under the mouse then the value is equal to OVER_NOTHING. |
|
| cursor | string | Current cursor of the canvas. Changes depending if it is over an element. |
public prevWidth: number source
Width before resizing the canvas to the new width. Used to determine if a change has occured in the width in order to continue with the resizing process.
Public Methods
public add(args: ...WorldElement) source
Adds a WorldElement to the world. Multiple elements can be added in a single add function, they only need to be separated by comma.
Params:
| Name | Type | Attribute | Description |
| args | ...WorldElement | Elements to add to the world. |
public export() source
Creates a screenshot of the canvas and saves it as sc.png in the same folder as the main file from the simulation. The canvas data is passed to a php file that only runs at localhost.
public fit(xMin: number, xMax: number, yMin: number, yMax: number, scale: number) source
Makes sure that a box of width (xMin + xMax) and height {yMin + yMax} fits in the canvas. This is used when the dimensions of objects changes dynamically.
Params:
| Name | Type | Attribute | Description |
| xMin | number | Minimum x value required to be displayed. |
|
| xMax | number | Maximum x value required to be displayed. |
|
| yMin | number | Minimum y value required to be displayed. |
|
| yMax | number | Maximum y value required to be displayed. |
|
| scale | number | Scale given to the range provided. If the scale is > 1 then the bounding box will be larger than the data and thus will result in a better fit. |
public remove(args: ...WorldElement) source
Remove a WorldElement from the world. Multiple elements can be removed in a single remove function, they only need to be separated by comma.
Params:
| Name | Type | Attribute | Description |
| args | ...WorldElement | Elements to remove from the world. |
public setCursor(cursor: string) source
Sets a new cursor for when the mouse is over the canvas.
Params:
| Name | Type | Attribute | Description |
| cursor | string | Valid cursor type. |
Private Methods
private bindEventListeners() source
Binds a callback function to the mouse, touch and resize event listeners.
private draw() source
Main draw function. Runs at 60fps and can't be stopped once the world is started. Therefore it is constantly drawing to the canvas. This further optimizes the code needed to run simulations. Looks at the background object to check if it's enabled. If so, it draws the prerendered image to the main canvas, thus avoiding to draw the background every time from scratch. The draw method WorldElement.draw is called for every element added to the world.
private getMousePosition(e: *) source
Obtain the mouse or touch coordinates from the event data obtained from the callback. The data is obtained in pixels, howevere it is also converted to real units using the scale provided. It also calcualtes the previous positio and the change in position in both units (pixels and real units).
Params:
| Name | Type | Attribute | Description |
| e | * |
private isMouseOverElement() source
Find if the mouse is over an element. It queries the method WorldElement.isMouseOver to check if the mouse is over the bounding box of the element.
private moveElements() source
Once it has been determined that the mouse is over an element and a dragging process has begun, the position of the object must be updated to follow the mouse. The function looks at the value of WorldElement.mouseMoveStyle to determine if the position should be updated in pixels or in real values. The position is updated by adding the change in the mouse's position to the element. This creates a smoother movement. Finally, the callback function WorldElement.onMouseMove is called.
private resize(e: *) source
Callback function for the resize event. It recalculates the width of the main canvas as well as all rendered canvases and their elements. It calls the callback function World.onResize.
Params:
| Name | Type | Attribute | Description |
| e | * |


From pentesterlab
In Windows environments when an application or a service is starting it looks for a number of DLL’s in order to function properly. If these DLL’s doesn’t exist or are implemented in an insecure way (DLL’s are called without using a fully qualified path) then it is possible to escalate privileges by forcing the application to load and execute a malicious DLL file.
It should be noted that when an application needs to load a DLL it will go through the following order:
The directory from which the application is loaded
C:\Windows\System32
C:\Windows\System
C:\Windows
The current working directory
Directories in the system PATH environment variable
Directories in the user PATH environment variable
Step 1 – Processes with Missing DLL’s
The first step is to list all the processes on the system and discover these processes which are running as SYSTEM and are missing DLL’s. This can be done just by using the process monitor tool from Sysinternals and by applying the filters below:
Process Monitor will identify if there is any DLL that the application tries to load and the actual path that the application is looking for the missing DLL.
In this example the process Bginfo.exe is missing several DLL files which possibly can be used for privilege escalation.
Step 2 – Folder Permissions
By default if a software is installed on the C:\ directory instead of the C:\Program Files then authenticated users will have write access on that directory. Additionally software like Perl, Python, Ruby etc. usually are added to Path variable. This give the opportunity of privilege escalation since the user can write a malicious DLL in that directory which is going to be loaded the next time that the process will restart with the permission of that process.
Step 3 – DLL Hijacking
Metasploit can be used in order to generate a DLL that will contain a payload which will return a session with the privileges of the service.
The process Bginfo.exe it is running as SYSTEM which means these privileges will be granted to the user upon restart of the service since the DLL with the malicious payload will be loaded and executed by the process.
As it has been identified above the process is missing the Riched32.dll so the pentestlab.dll needs to be renamed as Riched32.dll. This will confuse the application and it will try to load it as the application will think that this is a legitimate DLL. This malicious DLL needs to be dropped in one of the folders that windows are loading DLL files.
As it can be see below when the service restarted a Meterpreter session opened with SYSTEM privileges through DLL hijacking.
Conclusion
In order to be able to escalate privileges via DLL hijacking the following conditions needs to be in place:
Write Permissions on a system folder
Software installation in a non-default directory
A service that is running as system and is missing a DLL
Restart of the service
Discovering applications that are not installed in the Program files it is something common as except of third-party applications that are not forced to be installed in that path there is a possibility of a custom-made software to be found outside of these protected folders. Additionally there are a number of windows services like IKEEXT (IKE and AuthIP IPsec Keying Modules) that are missing DLL’s (wlbsctrl.dll) and can be exploited as well either manually or automatically. For IKEEXT there is a specific Metasploit module:
1 exploit/windows/local/ikeext_service


open education
Open educational resources (OER), also known as Open Content or Open Learning Materials, are educational tools made freely accessible to the public. UNESCO defines OER as “any type of educational materials that are in the public domain or introduced with an open license”. The definition also reveals the main ideal behind this project: “anyone can legally and freely copy, use, adapt and re-share them.” ORE comprise all digital objects created for learning purposes, for example articles, textbooks and digital equivalents. They also refer to methodological resources such as open source software tools and teaching material, e. g. instructional designs, didactic plans, case studies, curricula and simple elements such as pictures, links and short texts used to support teaching. Aim of the project is to loosen the economic and organizational constraints of the education and training sector and give broader access to education.
open source
The principle "open source" refers to a software development approach in which the software's entire source code is available to the public. Thereby, any user cannot only investigate how the software was constructed but also improve the code if bugs were found or write add-ons to the existing code that are thought to be useful. This central quality clearly distinguishes the open source environment from traditional software development where the source code typically is not available to the public or at least not open to changes [1]. The exact guidelines for the accepted modifications can be found in the licenses agreement of each open source software [2]. Furthermore, open source projects do not have classical project management structures or schedules but rather focus on the joint forces of widely distributed people instead, who work independently but in a complementary fashion [3].
[1] Kraker, P., Leony, D., Reinhardt, W. and Beham, G. (2011). The case for an open science in technology enhanced learning. Int. J. Technology Enhanced Learning, Vol. 3, No. 6, pp.643–654. https://doi.org/10.1504/IJTEL.2011.045454
[2] Sowe, S. K., Stamelos, I., & Angelis, L. (2008). Understanding knowledge sharing activities in free/open source software projects: An empirical study. Journal of Systems and Software, 81(3), 431-446. https://doi.org/10.1016/j.jss.2007.03.086
[3] Scacchi, W., Feller, J., Fitzgerald, B., Hissam, S., & Lakhani, K. (2006). Understanding free/open source software development processes. Software Process: Improvement and Practice, 11(2), 95-105. http://dx.doi.org/10.1002/spip.255
open data
Provide open access to research data and content. With open data anyone can freely use, modify and share the data for any purpose. In this context, the term exclusively refers to scientific research data. The content on the web is made available under an open licence and in a structured, non-proprietary format (i.e. XML, PNG, LaTeX, CSV). Sharing data allows for a more efficient replication process by simplifying data exchange and preventing unnecessary data acquisition. Plus, open data enables laboratories to collaborate and accumulate larger data sets in a cost-saving manner for more meaningful results. Smaller research groups are given the means to participate in the discussion. As a consequence, the entire scientific process is shaped more inclusively, allowing contributors to debate on an equal footing regardless of funding.
open peer review
Open educational resources (OER), also known as Open Content or Open Learning Materials, are educational tools made freely accessible to the public. UNESCO defines OER as “any type of educational materials that are in the public domain or introduced with an open license”. The definition also reveals the main ideal behind this project: “anyone can legally and freely copy, use, adapt and re-share them.” ORE comprise all digital objects created for learning purposes, for example articles, textbooks and digital equivalents. They also refer to methodological resources such as open source software tools and teaching material, e. g. instructional designs, didactic plans, case studies, curricula and simple elements such as pictures, links and short texts used to support teaching. Aim of the project is to loosen the economic and organizational constraints of the education and training sector and give broader access to education.
open methodology
Many scientific publications are characterised by a very brief documentation of the methods implemented to answer a research question. However, a full description of procedures, data gathering and analysis steps is often crucial to reproduce, and sometimes to even understand the findings reported in scientific manuscripts. In particular, when working with “open data” it is sometimes necessary to first achieve a profound understanding of the data processing steps that lead to the data resources in their present form before being ready to actually use them. “Open methodology” provides a framework for managing this type of information in a transparent and compressive way. It comprises the full documentation of:
open access
Open access publishing means to provide free access to published works for readers to both read and share. In academia this free publishing typically comes in two legal forms. Using the green way, the author publishes within a journal as usual, but is also allowed to share his work for free in other outlets besides the journals (e.g. the own homepage). Going the gold way, the publisher himself allows free access to the author’s work on his own platform. This second possibility usually comes with an extra payment by the author, but has the advantage, that the published work may receive more attention and is better connected to other publications on the same scientific topic.


Quick Start¶
Install the NuGet package
Install-Package KnightMoves.Hierarchical
It is basically just a single DLL. Here’s what you get.

// Just inherit from TreeNode<TId, T>
// TId is the type of the entity's Id field. If the name of your entity's identifier property
// is "Id" then you should override the inherited "Id" property since it is virtual or remove it
public class Person : TreeNode<string, Person>
{
// Person is now able to function as a tree node
// Id and ParentID are inherited properties or
// override it if you name it the same
public override string Id { get; set; }
public string Name { get; set; }
}
One instance of your class is not useful as a tree. So to illustrate, we start with a collection
of Person
objects.
List<Person> persons = _personRepository.GetPersons();
The persons collection can contain the Person
objects in any order. As long as they have an Id
and
a ParentId
with a single Person
object having a null
ParentId
representing the root node, you can
create the tree like this.
var hierarchy = Person.CreateTree(persons)
The hierarchy
object is a single ITreeNode<TId, T>
object that contains all other objects in its
Children
collection. Some of those children will have child objects in their Children
collection
so on and so forth.
That’s all you need at its most basic level.
Complete Example¶
namespace MyApp
{
// Just inherit from TreeNode<TId, T>
public class Person : TreeNode<string, Person>
{
// Person is now able to function as a tree node
// Id and ParentId are inherited properties
public string Name { get; set; }
}
public class MyFamilyTreeApp
{
public static void Main(string[] args)
{
var grandpa = new Person { Id = "Grandpa", Name = "Richard" };
var dad = new Person { Id = "Dad", ParentId = "Grandpa", Name = "Richard Jr." };
var uncle = new Person { Id = "UncleJohn", ParentId = "Grandpa", Name = "John" };
var cousin = new Person { Id = "CousinAnn", ParentId = "UncleJohn", Name = "Ann" };
var sister = new Person { Id = "SisterJane", ParentId = "Dad", Name = "Jane" };
var me = new Person { Id = "Me", ParentId = "Dad", Name = "MeMyselfAndI" };
var familyMembers = new List<Person>();
// Let's add them in random order just to prove a point
familyMembers.Add(sister);
familyMembers.Add(dad);
familyMembers.Add(uncle);
familyMembers.Add(grandpa);
familyMembers.Add(me);
familyMembers.Add(cousin);
// Not linked in tree structure
Console.WriteLine(grandpa.Children.Count); // prints 0
Console.WriteLine(dad.Parent == null); // prints true
Console.WriteLine(me.Parent == null); // prints true
// Creates tree structure automatically by using Id and ParentId of objects.
// Even though the family members were added in random order to the collection
// the tree is still created properly. It returns a single Person object. In this
// case the root Person object is grandpa and it will return it with all other
// child objects arranged under it in the hierarchy.
var familyTree = Person.CreateTree(familyMembers);
Console.WriteLine(familyTree == grandpa); // prints true
Console.WriteLine(familyTree.Children.Count); // prints 2
Console.WriteLine(familyTree.Children[0] == dad); // prints true
Console.WriteLine(familyTree.Children[1] == uncle); // prints true
Console.WriteLine(familyTree.Children[0].Children.Count); // prints 2
Console.WriteLine(familyTree.Children[0].Children[0] == sister); // prints true
Console.WriteLine(familyTree.Children[0].Children[1] == me); // prints true
Console.WriteLine(familyTree.Children[1].Children.Count); // prints 1
Console.WriteLine(familyTree.Children[1].Children[0] == cousin); // prints true
// Linked in tree now
Console.WriteLine(grandpa.Children.Count); // prints 2
Console.WriteLine(dad.Parent == grandpa); // prints true
Console.WriteLine(me.Parent == dad); // prints true
}
}
}


| INS op | ← | Instruction mnemonic | ||
| Length in bytes | → | 2 | ||
| States | → | 2 7 | ← | Cycles |
| IOZCS | ← | Flags affected |
Flag registers and their bit positions in W:
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|
| - | - | - | I | O | Z | C | S |
Flags affected are always shown in the W bit order: IOZCS. If a flag is marked by "0" it means it is reset after the instruction. If it is marked by "1" it is set. If it is marked by "-" it is not changed. If it is marked by its letter, the corresponding flag is affected by the instruction.
d8 immediate 8-bit data
d16 immediate 16-bit data
a16 16-bit address


THANK YOU FOR REACHING OUT
Working with Space Lemon ensures you to have a fresh, ambitious & human centered experience. A happy collaboration between you and us is our N°1 priority.
In which we'll discuss:
1. Your needs, what is pushing your organisation
forward & what is holding it back
2. Find solutions together to your different obstacles
3. See how SpaceLemon can help you overcome
your struggles
This is obviously an automatic mail response. But it would be amazing if you could fill this form below so we can learn more about your organisation before getting back to you in person.
Disclaimer : This email is NOT a newsletter and you haven't subscribe to any of our newsletter.
We will NEVER use this email for any of our advertising campaign.
If you don't know why you've received this email, please ignore it or contact hey@spacelemon.co


{% extends 'layout.html' %} {% block pageTitle %} Application saved {% endblock %} {% block content %}
Your application will be saved until {{ data['savedUntil'] }}.
{% else %}Your application will be saved until 18 May 2023.
{% endif %}You must send us any remaining evidence we need before this date or your application will expire.
You can now safely close this window and return later.
If you would like to continue uploading your evidence, click 'Continue your application'.


pg_upgrade - upgrade a PostgreSQL server instance
pg_upgrade -b oldbindir -B newbindir -d olddatadir -D newdatadir [option...]
pg_upgrade (formerly called pg_migrator) allows data stored in PostgreSQL data files to be upgraded to a later PostgreSQL major version without the data dump/reload typically required for major version upgrades, e.g. from 8.4.7 to the current major release of PostgreSQL. It is not required for minor version upgrades, e.g. from 9.0.1 to 9.0.4.
Major PostgreSQL releases regularly add new features that often change the layout of the system tables, but the internal data storage format rarely changes. pg_upgrade uses this fact to perform rapid upgrades by creating new system tables and simply reusing the old user data files. If a future major release ever changes the data storage format in a way that makes the old data format unreadable, pg_upgrade will not be usable for such upgrades. (The community will attempt to avoid such situations.)
pg_upgrade does its best to make sure the old and new clusters are binary-compatible, e.g. by checking for compatible compile-time settings, including 32/64-bit binaries. It is important that any external modules are also binary compatible, though this cannot be checked by pg_upgrade.
pg_upgrade supports upgrades from 8.3.X and later to the current major release of PostgreSQL, including snapshot and alpha releases.
pg_upgrade accepts the following command-line arguments:
-b bindir
--old-bindir=bindir
the old PostgreSQL executable directory; environment variable PGBINOLD
-B bindir
--new-bindir=bindir
the new PostgreSQL executable directory; environment variable PGBINNEW
-c
--check
check clusters only, don*(Aqt change any data
-d datadir
--old-datadir=datadir
the old cluster data directory; environment variable PGDATAOLD
-D datadir
--new-datadir=datadir
the new cluster data directory; environment variable PGDATANEW
-j
--jobs
number of simultaneous processes or threads to use
-k
--link
use hard links instead of copying files to the new cluster (use junction points on Windows)
-o options
--old-options options
options to be passed directly to the old postgres command
-O options
--new-options options
options to be passed directly to the new postgres command
-p port
--old-port=port
the old cluster port number; environment variable PGPORTOLD
-P port
--new-port=port
the new cluster port number; environment variable PGPORTNEW
-r
--retain
retain SQL and log files even after successful completion
-U username
--username=username
cluster*(Aqs super user name; environment variable PGUSER
-v
--verbose
enable verbose internal logging
-V
--version
display version information, then exit
-?
--help
show help, then exit
These are the steps to perform an upgrade with pg_upgrade:
h'-04' 1.h'+01'c
Optionally move the old cluster: If you are using a version-specific installation directory, e.g. /opt/PostgreSQL/9.1, you do not need to move the old cluster. The graphical installers all use version-specific installation directories.
If your installation directory is not version-specific, e.g. /usr/local/pgsql, it is necessary to move the current PostgreSQL install directory so it does not interfere with the new PostgreSQL installation. Once the current PostgreSQL server is shut down, it is safe to rename the PostgreSQL installation directory; assuming the old directory is /usr/local/pgsql, you can do:
mv /usr/local/pgsql /usr/local/pgsql.old
to rename the directory.
h'-04' 2.h'+01'c
For source installs, build the new version: Build the new PostgreSQL source with configure flags that are compatible with the old cluster. pg_upgrade will check pg_controldata to make sure all settings are compatible before starting the upgrade.
h'-04' 3.h'+01'c
Install the new PostgreSQL binaries: Install the new server*(Aqs binaries and support files.
For source installs, if you wish to install the new server in a custom location, use the prefix variable:
make prefix=/usr/local/pgsql.new install
h'-04' 4.h'+01'c
Install pg_upgrade and pg_upgrade_support: Install the pg_upgrade binary and pg_upgrade_support library in the new PostgreSQL installation.
h'-04' 5.h'+01'c
Initialize the new PostgreSQL cluster: Initialize the new cluster using initdb. Again, use compatible initdb flags that match the old cluster. Many prebuilt installers do this step automatically. There is no need to start the new cluster.
h'-04' 6.h'+01'c
Install custom shared object files: Install any custom shared object files (or DLLs) used by the old cluster into the new cluster, e.g. pgcrypto.so, whether they are from contrib or some other source. Do not install the schema definitions, e.g. pgcrypto.sql, because these will be upgraded from the old cluster. Also, any custom full text search files (dictionary, synonym, thesaurus, stop words) must also be copied to the new cluster.
h'-04' 7.h'+01'c
Adjust authentication: pg_upgrade will connect to the old and new servers several times, so you might want to set authentication to peer in pg_hba.conf or use a ~/.pgpass file (see Section 31.15, (lqThe Password File(rq, in the documentation).
h'-04' 8.h'+01'c
Stop both servers: Make sure both database servers are stopped using, on Unix, e.g.:
pg_ctl -D /opt/PostgreSQL/8.4 stop pg_ctl -D /opt/PostgreSQL/9.0 stop
or on Windows, using the proper service names:
NET STOP postgresql-8.4 NET STOP postgresql-9.0
or
NET STOP pgsql-8.3 (PostgreSQL 8.3 and older used a different service name)
h'-04' 9.h'+01'c
Run pg_upgrade: Always run the pg_upgrade binary of the new server, not the old one. pg_upgrade requires the specification of the old and new cluster*(Aqs data and executable (bin) directories. You can also specify user and port values, and whether you want the data linked instead of copied (the default).
If you use link mode, the upgrade will be much faster (no file copying) and use less disk space, but you will not be able to access your old cluster once you start the new cluster after the upgrade. Link mode also requires that the old and new cluster data directories be in the same file system. (Tablespaces and pg_xlog can be on different file systems.) See pg_upgrade --help for a full list of options.
The --jobs option allows multiple CPU cores to be used for copying/linking of files and to dump and reload database schemas in parallel; a good place to start is the maximum of the number of CPU cores and tablespaces. This option can dramatically reduce the time to upgrade a multi-database server running on a multiprocessor machine.
For Windows users, you must be logged into an administrative account, and then start a shell as the postgres user and set the proper path:
RUNAS /USER:postgres "CMD.EXE" SET PATH=%PATH%;C:eProgram FilesePostgreSQLe9.0ebin;
and then run pg_upgrade with quoted directories, e.g.:
pg_upgrade.exe --old-datadir "C:/Program Files/PostgreSQL/8.4/data" --new-datadir "C:/Program Files/PostgreSQL/9.0/data" --old-bindir "C:/Program Files/PostgreSQL/8.4/bin" --new-bindir "C:/Program Files/PostgreSQL/9.0/bin"
Once started, pg_upgrade will verify the two clusters are compatible and then do the upgrade. You can use pg_upgrade --check to perform only the checks, even if the old server is still running. pg_upgrade --check will also outline any manual adjustments you will need to make after the upgrade. If you are going to be using link mode, you should use the --link option with --check to enable link-mode-specific checks. pg_upgrade requires write permission in the current directory.
Obviously, no one should be accessing the clusters during the upgrade. pg_upgrade defaults to running servers on port 50432 to avoid unintended client connections. You can use the same port number for both clusters when doing an upgrade because the old and new clusters will not be running at the same time. However, when checking an old running server, the old and new port numbers must be different.
If an error occurs while restoring the database schema, pg_upgrade will exit and you will have to revert to the old cluster as outlined in Step 14 below. To try pg_upgrade again, you will need to modify the old cluster so the pg_upgrade schema restore succeeds. If the problem is a contrib module, you might need to uninstall the contrib module from the old cluster and install it in the new cluster after the upgrade, assuming the module is not being used to store user data.
h'-04' 10.h'+01'c
Restore pg_hba.conf: If you modified pg_hba.conf, restore its original settings. It might also be necessary to adjust other configuration files in the new cluster to match the old cluster, e.g. postgresql.conf.
h'-04' 11.h'+01'c
Post-Upgrade processing: If any post-upgrade processing is required, pg_upgrade will issue warnings as it completes. It will also generate script files that must be run by the administrator. The script files will connect to each database that needs post-upgrade processing. Each script should be run using:
psql --username postgres --file script.sql postgres
The scripts can be run in any order and can be deleted once they have been run.
Caution
In general it is unsafe to access tables referenced in rebuild scripts until the rebuild scripts have run to completion; doing so could yield incorrect results or poor performance. Tables not referenced in rebuild scripts can be accessed immediately.
h'-04' 12.h'+01'c
Statistics: Because optimizer statistics are not transferred by pg_upgrade, you will be instructed to run a command to regenerate that information at the end of the upgrade. You might need to set connection parameters to match your new cluster.
h'-04' 13.h'+01'c
Delete old cluster: Once you are satisfied with the upgrade, you can delete the old cluster*(Aqs data directories by running the script mentioned when pg_upgrade completes. (Automatic deletion is not possible if you have user-defined tablespaces inside the old data directory.) You can also delete the old installation directories (e.g. bin, share).
h'-04' 14.h'+01'c
Reverting to old cluster: If, after running pg_upgrade, you wish to revert to the old cluster, there are several options:
h'-04'(buh'+03'c
If you ran pg_upgrade with --check, no modifications were made to the old cluster and you can re-use it anytime.
h'-04'(buh'+03'c
If you ran pg_upgrade with --link, the data files are shared between the old and new cluster. If you started the new cluster, the new server has written to those shared files and it is unsafe to use the old cluster.
h'-04'(buh'+03'c
If you ran pg_upgrade without --link or did not start the new server, the old cluster was not modified except that, if linking started, a .old suffix was appended to $PGDATA/global/pg_control. To reuse the old cluster, possibly remove the .old suffix from $PGDATA/global/pg_control; you can then restart the old cluster.
pg_upgrade does not support upgrading of databases containing these reg* OID-referencing system data types: regproc, regprocedure, regoper, regoperator, regconfig, and regdictionary. (regtype can be upgraded.)
All failure, rebuild, and reindex cases will be reported by pg_upgrade if they affect your installation; post-upgrade scripts to rebuild tables and indexes will be generated automatically. If you are trying to automate the upgrade of many clusters, you should find that clusters with identical database schemas require the same post-upgrade steps for all cluster upgrades; this is because the post-upgrade steps are based on the database schemas, and not user data.
For deployment testing, create a schema-only copy of the old cluster, insert dummy data, and upgrade that.
If you are upgrading a pre-PostgreSQL 9.2 cluster that uses a configuration-file-only directory, you must pass the real data directory location to pg_upgrade, and pass the configuration directory location to the server, e.g. -d /real-data-directory -o *(Aq-D /configuration-directory*(Aq.
If using a pre-9.1 old server that is using a non-default Unix-domain socket directory or a default that differs from the default of the new cluster, set PGHOST to point to the old server*(Aqs socket location. (This is not relevant on Windows.)
A Log-Shipping Standby Server (Section 25.2, (lqLog-Shipping Standby Servers(rq, in the documentation) cannot be upgraded because the server must allow writes. The simplest way is to upgrade the primary and use rsync to rebuild the standbys. You can run rsync while the primary is down, or as part of a base backup (Section 24.3.2, (lqMaking a Base Backup(rq, in the documentation) which overwrites the old standby cluster.
If you want to use link mode and you do not want your old cluster to be modified when the new cluster is started, make a copy of the old cluster and upgrade that in link mode. To make a valid copy of the old cluster, use rsync to create a dirty copy of the old cluster while the server is running, then shut down the old server and run rsync again to update the copy with any changes to make it consistent. You might want to exclude some files, e.g. postmaster.pid, as documented in Section 24.3.3, (lqMaking a Base Backup Using the Low Level API(rq, in the documentation. If your file system supports file system snapshots or copy-on-write file copies, you can use that to make a backup of the old cluster and tablespaces, though the snapshot and copies must be created simultaneously or while the database server is down.
Upgrading from PostgreSQL 8.3 has additional restrictions not present when upgrading from later PostgreSQL releases. For example, pg_upgrade will not work for upgrading from 8.3 if a user column is defined as:
h'-04'(buh'+03'c
a tsquery data type
h'-04'(buh'+03'c
data type name and is not the first column
You must drop any such columns and upgrade them manually.
pg_upgrade will not work if the ltree contrib module is installed in a database.
pg_upgrade will require a table rebuild if:
h'-04'(buh'+03'c
a user column is of data type tsvector
pg_upgrade will require a reindex if:
h'-04'(buh'+03'c
an index is of type hash or GIN
h'-04'(buh'+03'c
an index uses bpchar_pattern_ops
Also, the default datetime storage format changed to integer after PostgreSQL 8.3. pg_upgrade will check that the datetime storage format used by the old and new clusters match. Make sure your new cluster is built with the configure flag --disable-integer-datetimes.
For Windows users, note that due to different integer datetimes settings used by the graphical installer and the MSI installer, it is only possible to upgrade from version 8.3 of the installer distribution to version 8.4 or later of the installer distribution. It is not possible to upgrade from the MSI installer to the new graphical installer.
initdb(1), pg_ctl(1), pg_dump(1), postgres(1)


Vanna White hosts ‘Wheel of Fortune’ after Sajak has surgery
by The Associated PressLOS ANGELES (AP) — “Wheel of Fortune” host Pat Sajak had to have emergency surgery, and his longtime co-host Vanna White will fill in for him while he recovers.
The show said in a statement that Thursday’s taping was canceled as the 73-year-old Sajak underwent successful surgery to correct a blocked intestine.
The 62-year-old White stepped in as host when taping resumed Friday for episodes that will air starting Dec. 9.
The statement says Sajak is resting comfortably and looking forward to returning but does not say how long he is expected to be out or how long White will act as host.
Sajak and White have co-hosted the show since the early 1980s.
She filled in for him once before for one segment of the show, when Sajak had laryngitis in 1996.
The Associated Press


Text
Text represents a Word centric textfield that wraps Word instances.
- Basics
- Accessibility
- Performance - To the Moon
- Performance - Load Test
- Performance - Input
- Performance - Font Caching
- Style - Typographic Case
- Style - Character styling
- Style - Character styling with multiple fonts
- Style - Ligatures
- Style - Tracking
- Style - Tracking Layout Test
- Style - Stoke and Outline
- Alignment - Single line
- Alignment -Multi-line
- Alignment - Multi-line with breaks
- Alignment - Multi-line with smallcaps Case
- Alignment - Multi-line with lineHeight larger
- Alignment - Multi-line with lineHeight smaller
- Alignment - Tracking
- Alignment - Wordwrap simple
- Alignment - Wordwrap tuning
- Alignment - Wordwrap first word
- Alignment - Wordwrap natural and newlines
- Alignment - Wordwrap natural and lineHeight
- Alignment - Wordwrap newline error case
- Event - complete
- Event - Swap fonts
- Event - Child Events
CharacterText
CharacterText represents a "word-less" textfield that wraps per Character.
- Basics
- Accessibility
- Performance - To the Moon
- Performance - Load Test
- Performance - Input
- Performance - Font Caching
- Style - Typographic Case
- Style - Character styling
- Style - Character styling with multiple fonts
- Style - Ligatures
- Style - Tracking
- Style - Tracking Layout Test
- Style - Stoke and Outline
- Alignment - Single line
- Alignment -Multi-line
- Alignment - Multi-line with breaks
- Alignment - Multi-line with smallcaps Case
- Alignment - Multi-line with lineHeight larger
- Alignment - Multi-line with lineHeight smaller
- Alignment - Tracking
- Alignment - Wordwrap simple
- Alignment - Wordwrap tuning
- Alignment - Wordwrap first word
- Alignment - Wordwrap natural and newlines
- Alignment - Wordwrap natural and lineHeight
- Alignment - Wordwrap newline error case
- Event - complete
- Event - Swap fonts
- Event - Child Events
- Fit - singleLine autoExpand
- Fit - singleLine autoReduce
- Fit - singleLine autoReduce + autoExpand
PathText
PathText represents a textfield that writes Characters to an SVGPath.
- Basics
- Layout
- Accessibility
- Alignment
- Vertical Alignment
- Last Char Test
- Character Limits
- Vertical Alignment Layout
- Flipped
- Initial Tracking
- Performance - Font Caching
- Event - Child Events
Graphics
Graphics extends CreateJS's Graphics Class with the ability to render SVGPath. SVGPath is the basis for all Character and Glyph rendering/caching but can be used directly. These tests are identical to the W3C SVG Tests for SVGPath drawing. The only exception is lack of support for winding rules and 'oddeven' syntax.
Accessibility
By default the txt.Accessibility API is on. The API adds DOM text elements as canvas children that matching the .text property used. The API allows you to further enhance the text written within the canvas element by controlling content in '.accessibilityText' and element order in '.accessibilityPriority'.
About
Txtjs began as an experiment (on a dive trip) to improve the quality of text on <canvas> for web to print apps at Harland Clarke. The idea was to simply render character glyphs to <canvas> using SVGPath drawing commands and build up layout logic progressively. The result is a font and typesetting engine extending CreateJS.
There are many people and projects involved directly and indirectly in the creation and refinement of txtjs.
- Ted Patrick
- Grant Pimpler
- Hossein Gonzales
- Stephen Hahn
- Grant Skinner
- Branden Hall
- Harland Clarke
- SVGPath Initial Impl.
- SVGPath Arc Fix
Warning
Please do not misuse txtjs. It is intended for use for creative applications where style and layout exceed the capabilities of DOM Text or SVG Text. It is not a replacement for DOM Text or SVG Text but rather improves text support on <canvas> for print and design applications. Please do not steal fonts. Txtjs contains an exporter for the txtjs font format and a selection of fonts from the Google Font project licensed as Apache/Ubuntu/OFL. Please respect font owners and their licensed rights when using txtjs in production.
License (BSD)
Copyright (c) 2017, Lightly LLC All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.


ACME Company
Food and Fluids record
Date
Time
Food Item
Amount Taken
Time Taken
Role
select
None
Quarter
Half
Three quarter
Full
select
00:00
00:15
00:30
00:45
01:00
01:15
01:30
01:45
02:00
Back
Print PDF


To make signing into Wunderlist easier, you can connect apps you use everyday with Wunderlist to securely access your lists and to-dos.
Services
Facebook
Microsoft Personal Account
Microsoft Work or School Account
Google
Weibo


Toggle navigation
Moorefield GAA
Home
News
Downloads
Membership
Merchandise
Membership
Complete the form below to sign up for our club membership
First Name
Last Name
Email
Telephone
Address
Section
Men's Football
Ladies Football
Juvenile Football
Hurling
Camogie
Date Of Birth
Confirm