subject
ARCHIVE 9IZWSAIR95WUMM
-smoker-recipes-book-bundle-top-25-smoking-salmon-1517324572.pdf
January 11, 2017
Filetype: PDF
|
1521 views
system_update_alt
Download
subject
Read
-allez-viens-holt-2-french-cahier-d-x27-activites-003065002X.pdf
October 04, 2016
Filetype: PDF
|
2469 views
system_update_alt
Download
subject
Read
-the-berenstain-bears-the-very-first-christmas-0310751020.pdf
August 07, 2016
Filetype: PDF
|
2180 views
system_update_alt
Download
subject
Read
-if-she-can-beat-me-rockin-she-can-have-my-chair--145365240X.pdf
August 04, 2016
Filetype: PDF
|
2194 views
system_update_alt
Download
subject
Read
-the-spoken-word-recollections-of-dryden-history--1493785249.pdf
December 14, 2016
Filetype: PDF
|
431 views
system_update_alt
Download
subject
Read
-journal-precede-du-livre-de-souvenance-de-pepin--1234516624.pdf
January 02, 2017
Filetype: PDF
|
2140 views
system_update_alt
Download
subject
Read
-oxford-reading-tree-level-1-fireflies-wheels-pap-0198472552.pdf
November 15, 2016
Filetype: PDF
|
2500 views
system_update_alt
Download
subject
Read
-in-the-eye-of-einstein-accessing-your-higher-min-1494770008.pdf
September 20, 2016
Filetype: PDF
|
2741 views
system_update_alt
Download
subject
Read
-wild-flowers-paperback-1508145946.pdf
December 01, 2016
Filetype: PDF
|
3181 views
system_update_alt
Download
subject
Read
-clinician-s-guide-to-pediatric-sleep-disorders-h-0849398193.pdf
September 14, 2016
Filetype: PDF
|
2446 views
system_update_alt
Download
subject
Read
-firmin-adventures-of-a-metropolitan-lowlife-075382339X.pdf
September 10, 2016
Filetype: PDF
|
2561 views
system_update_alt
Download
subject
Read
-dinosaurs-revised-edition-0746073615.pdf
October 02, 2016
Filetype: PDF
|
2993 views
system_update_alt
Download
subject
Read
-lectures-on-the-principles-of-surgery-1234162407.pdf
October 21, 2016
Filetype: PDF
|
2355 views
system_update_alt
Download
subject
Read
-genuine-brand-new-guarantee-digestive-western-me-7117153326.pdf
January 05, 2017
Filetype: PDF
|
1905 views
system_update_alt
Download
subject
Read
-abstraction-and-aging-0387974334.pdf
September 07, 2016
Filetype: PDF
|
1835 views
system_update_alt
Download
subject
Read
-diy-household-hacks-1508439028.pdf
October 10, 2016
Filetype: PDF
|
3089 views
system_update_alt
Download
subject
Read
-tianli-38-sets-a-month-entrance-exam-politics-ne-7223037245.pdf
August 11, 2016
Filetype: PDF
|
2384 views
system_update_alt
Download
subject
Read
-the-wind-in-the-willows-hardback-0141329823.pdf
November 24, 2016
Filetype: PDF
|
691 views
system_update_alt
Download
subject
Read
-800-measurable-iep-goals-and-objectives-for-use--1-1477464840.pdf
October 04, 2016
Filetype: PDF
|
1171 views
system_update_alt
Download
subject
Read
-football-x27-s-strangest-matches-extraordinary-b-1910232866.pdf
October 31, 2016
Filetype: PDF
|
415 views
system_update_alt
Download
subject
Read
-tell-me-144476473X.pdf
December 28, 2016
Filetype: PDF
|
1192 views
system_update_alt
Download
subject
Read
-papers-and-despatches-relating-to-the-arctic-sea-1241443335.pdf
December 01, 2016
Filetype: PDF
|
628 views
system_update_alt
Download
subject
Read
-weapons-of-mass-destruction-the-no-nonsense-guid-1-0297830910.pdf
November 26, 2016
Filetype: PDF
|
3169 views
system_update_alt
Download
subject
Read
-protestantism-in-michigan-a-special-history-of-t-1236155416.pdf
September 02, 2016
Filetype: PDF
|
2587 views
system_update_alt
Download
subject
Read
-a-teacup-collection-paintings-of-porcelain-treas-1452134332.pdf
November 15, 2016
Filetype: PDF
|
2605 views
system_update_alt
Download
subject
Read
-der-trek-nach-westen-die-jagd-auf-bill-buffalo-t-3981031407.pdf
December 11, 2016
Filetype: PDF
|
3014 views
system_update_alt
Download
subject
Read
-harcourt-school-publishers-storytown-alabama-tes-2-0153728248.pdf
October 23, 2016
Filetype: PDF
|
384 views
system_update_alt
Download
subject
Read
-the-samaritan-jesus-paperback-1511753412.pdf
August 06, 2016
Filetype: PDF
|
721 views
system_update_alt
Download
subject
Read
-breakfasts-with-archangel-shecky-and-his-infalli-1884956920.pdf
November 11, 2016
Filetype: PDF
|
2541 views
system_update_alt
Download
subject
Read
-in-a-minute-184539240X.pdf
September 18, 2016
Filetype: PDF
|
531 views
system_update_alt
Download
subject
Read
-zac-power-zac-runs-wild-paperback-192169050X.pdf
December 06, 2016
Filetype: PDF
|
621 views
system_update_alt
Download
subject
Read
-the-progressive-s-pocketbook-of-persuasion-a-too-1412094917.pdf
November 27, 2016
Filetype: PDF
|
2556 views
system_update_alt
Download
subject
Read
-accompanied-by-angels-poems-of-the-incarnation-0802829872.pdf
October 09, 2016
Filetype: PDF
|
2933 views
system_update_alt
Download
subject
Read
-apricot-tree-classic-reprint-paperback-1332251889.pdf
January 08, 2017
Filetype: PDF
|
2239 views
system_update_alt
Download
subject
Read
-100-sideways-miles-hardback-1442444959.pdf
January 06, 2017
Filetype: PDF
|
565 views
system_update_alt
Download
subject
Read
-the-intercultural-dynamics-of-multicultural-work-1847692850.pdf
December 08, 2016
Filetype: PDF
|
2424 views
system_update_alt
Download
subject
Read
-code-talker-a-novel-about-the-navajo-marines-of--0142405965.pdf
November 08, 2016
Filetype: PDF
|
835 views
system_update_alt
Download
subject
Read
-body-systems-2-volume-set-1573027189.pdf
August 27, 2016
Filetype: PDF
|
732 views
system_update_alt
Download
subject
Read
-mind-set-management-the-heart-of-leadership-0195097467.pdf
September 22, 2016
Filetype: PDF
|
445 views
system_update_alt
Download
subject
Read
-ibn-hayyan-the-father-of-chemistry-level-8-paper-0008185816.pdf
January 05, 2017
Filetype: PDF
|
2512 views
system_update_alt
Download
subject
Read
-anti-patterns-1155317416.pdf
November 23, 2016
Filetype: PDF
|
1727 views
system_update_alt
Download
subject
Read
-impact-of-natural-disasters-on-livelihood-patter-3659283215.pdf
October 01, 2016
Filetype: PDF
|
2629 views
system_update_alt
Download
subject
Read
-studyguide-for-discovering-the-western-past-volu-1-1618128779.pdf
December 06, 2016
Filetype: PDF
|
2008 views
system_update_alt
Download
subject
Read
-secondary-ion-mass-spectrometry-sims-iv-3642822584.pdf
November 07, 2016
Filetype: PDF
|
3010 views
system_update_alt
Download
subject
Read
-mindfulness-at-work-pocketbook-2015-1906610797.pdf
September 27, 2016
Filetype: PDF
|
1900 views
system_update_alt
Download
subject
Read
-blood-will-tell-1491574526.pdf
August 08, 2016
Filetype: PDF
|
2303 views
system_update_alt
Download
subject
Read
-life-as-a-gladiator-1429656387.pdf
October 22, 2016
Filetype: PDF
|
2308 views
system_update_alt
Download
subject
Read
-the-crippled-lamb-1400318076.pdf
August 06, 2016
Filetype: PDF
|
1295 views
system_update_alt
Download
subject
Read
-purchasing-agent-volume-9-no-1-magazine-of-centr-123588743X.pdf
September 14, 2016
Filetype: PDF
|
1535 views
system_update_alt
Download
subject
Read
-dk-eyewitness-top-10-travel-guide-dublin-1405358440.pdf
November 28, 2016
Filetype: PDF
|
2183 views
system_update_alt
Download
subject
Read
-calendarium-catholicum-or-an-almanack-for-the-ye-1171273983.pdf
October 04, 2016
Filetype: PDF
|
592 views
system_update_alt
Download
subject
Read
-recovering-reason-essays-in-honor-of-thomas-l-pa-0739146327.pdf
January 16, 2017
Filetype: PDF
|
2527 views
system_update_alt
Download
subject
Read
-model-theory-algebra-and-geometry-paperback-0521143497.pdf
January 05, 2017
Filetype: PDF
|
554 views
system_update_alt
Download
subject
Read
-taylor-swift-red-pvg-1780389396.pdf
November 28, 2016
Filetype: PDF
|
2944 views
system_update_alt
Download
subject
Read
-the-new-life-main-0571326080.pdf
September 06, 2016
Filetype: PDF
|
2597 views
system_update_alt
Download
subject
Read
-the-timetraveller-x27-s-guide-to-tudor-london-1904153097.pdf
August 18, 2016
Filetype: PDF
|
2271 views
system_update_alt
Download
subject
Read
-analytical-technology-in-electromagnetic-field-t-1440147825.pdf
August 19, 2016
Filetype: PDF
|
994 views
system_update_alt
Download
subject
Read
-abe-lincoln-grows-up-0156026155.pdf
September 14, 2016
Filetype: PDF
|
1483 views
system_update_alt
Download
subject
Read
-the-twelve-poems-of-christmas-volume-two-1907598006.pdf
December 18, 2016
Filetype: PDF
|
1174 views
system_update_alt
Download
subject
Read
-amigos-a-traves-de-las-millas-voluntary-service--1479318698.pdf
November 08, 2016
Filetype: PDF
|
2015 views
system_update_alt
Download
subject
Read
-how-to-get-your-ex-back-a-step-by-step-guide-to--0989313514.pdf
October 31, 2016
Filetype: PDF
|
2792 views
system_update_alt
Download
subject
Read
-astray-of-the-herd-observations-commentaries-and-1411622340.pdf
December 26, 2016
Filetype: PDF
|
3236 views
system_update_alt
Download
subject
Read
-advanced-financial-accounting-by-susan-s-hamlen--075932039X.pdf
September 06, 2016
Filetype: PDF
|
2393 views
system_update_alt
Download
subject
Read
-on-the-via-dolorosa-with-christ-0865549249.pdf
January 03, 2017
Filetype: PDF
|
396 views
system_update_alt
Download
subject
Read
September 30, 2016
Filetype: PDF
|
1546 views
system_update_alt
Download
subject
Read
October 12, 2016
Filetype: PDF
|
2777 views
system_update_alt
Download
subject
Read
January 10, 2017
Filetype: PDF
|
1933 views
system_update_alt
Download
subject
Read
September 21, 2016
Filetype: PDF
|
916 views
system_update_alt
Download
subject
Read
November 20, 2016
Filetype: PDF
|
1973 views
system_update_alt
Download
subject
Read
January 10, 2017
Filetype: PDF
|
2984 views
system_update_alt
Download
subject
Read
August 14, 2016
Filetype: PDF
|
492 views
system_update_alt
Download
subject
Read
January 21, 2017
Filetype: PDF
|
2407 views
system_update_alt
Download
subject
Read
December 07, 2016
Filetype: PDF
|
2958 views
system_update_alt
Download
subject
Read
November 16, 2016
Filetype: PDF
|
1792 views
system_update_alt
Download
subject
Read
January 01, 2017
Filetype: PDF
|
2877 views
system_update_alt
Download
subject
Read
August 19, 2016
Filetype: PDF
|
1122 views
system_update_alt
Download
subject
Read
August 28, 2016
Filetype: PDF
|
3141 views
system_update_alt
Download
subject
Read
September 12, 2016
Filetype: PDF
|
2379 views
system_update_alt
Download
subject
Read
October 18, 2016
Filetype: PDF
|
2111 views
system_update_alt
Download
subject
Read
December 05, 2016
Filetype: PDF
|
2055 views
system_update_alt
Download
subject
Read
January 04, 2017
Filetype: PDF
|
1896 views
system_update_alt
Download
subject
Read
December 10, 2016
Filetype: PDF
|
1544 views
system_update_alt
Download
subject
Read
August 14, 2016
Filetype: PDF
|
2772 views
system_update_alt
Download
subject
Read
January 01, 2017
Filetype: PDF
|
3281 views
system_update_alt
Download
subject
Read
November 25, 2016
Filetype: PDF
|
663 views
system_update_alt
Download
subject
Read
December 20, 2016
Filetype: PDF
|
2639 views
system_update_alt
Download
subject
Read
January 04, 2017
Filetype: PDF
|
1588 views
system_update_alt
Download
subject
Read
November 27, 2016
Filetype: PDF
|
1721 views
system_update_alt
Download
subject
Read
January 22, 2017
Filetype: PDF
|
1195 views
system_update_alt
Download
subject
Read
October 14, 2016
Filetype: PDF
|
1837 views
system_update_alt
Download
subject
Read
Other Files


git mv [-v] [-f] [-n] [-k] <source> <destination> git mv [-v] [-f] [-n] [-k] <source> ... <destination directory>
git-mv(1) Manual Page
NAME
git-mv - Move or rename a file, a directory, or a symlink
SYNOPSIS
git mv <options>... <args>...
DESCRIPTION
Move or rename a file, directory or symlink.
In the first form, it renames <source>, which must exist and be either a file, symlink or directory, to <destination>. In the second form, the last argument has to be an existing directory; the given sources will be moved into this directory.
The index is updated after successful completion, but the change must still be committed.
OPTIONS
- -f
- --force
Force renaming or moving of a file even if the target exists
- -k
Skip move or rename actions which would lead to an error condition. An error happens when a source is neither existing nor controlled by Git, or when it would overwrite an existing file unless -f is given.
- -n
- --dry-run
Do nothing; only show what would happen
- -v
- --verbose
Report the names of files as they are moved.
SUBMODULES
Moving a submodule using a gitfile (which means they were cloned with a Git version 1.7.8 or newer) will update the gitfile and core.worktree setting to make the submodule work in the new location. It also will attempt to update the submodule.<name>.path setting in the gitmodules(5) file and stage that file (unless -n is used).
GIT
Part of the git(1) suite


I recently recieved an ounce of Wild Dagga from an online vendor. I had read some interesting reports on the substance online, and was anxious to see what effects smoking the plant produced.
Working with the substance is a bit difficult...like its cousin, marihuanilla, the plant has small 'thorns' within the flowers. With a little time I was able to pack a nice sized bowl. Unfortunately, the smoke does not taste very pleasant, and it is somewhat harsh on the lungs. It may be better to use a water pipe with this substance. On the bright side, I noticed a definite buzz. It sets in very quickly, and is similar to a marijuana buzz, but much milder with some opiate effects. It did seem difficult to sustain the buzz after a while.
In conclusion, I think this plant is a much better option than Marihuanilla. It has stronger effects and is a little easier to smoke. I would recommend smoking Wild Dagga with a water pipe. I also noticed that there is a resin extract available. Next time, I will order the extract.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


I stumbled upon the devils herb by accident as a teenager - it was offered to me by a drop out I used to score hash from. As this guy didn't work he had lots of spare time to spend reading books on many weird and wonderful things - Datura was one of them - he located the plant for sale in a local garden centre - he went back that night to pinch it. The plant was always in his room kept as a normal houseplant and I often heard his stories about the infamous plant, the powers it held and how it would be ready to try when the pods were more developed.
A friend and I visited him one day looking for hash and he informed us the Datura had been harvested and a small group of people would be trying the brew - we booked our seat at the table and waited for evening to arrive. The brew was cabbage like and bitter - not at all nice.
Shortly after drinking we all fell asleep except for my friend who fought back the urge to pass out - I think I drank another cup of the brew before passing out.
When I awoke I felt ok - a bit thirsty but fine - my friend kept falling off the stool he was sat on - we decided to head home and on the journey my friend kept falling down non existent trap doors - shouting as he fell and then using his upper body strength to pull him self out - this happened several times on the way home.
When we got back my world changed - although I was in a friends living room I thought I was in my bed room and could not work out what his videos were doing in my airing cupboard
I found my self in his kitchen - naked - selling hash to long lost friends and my dog Spike - these friends would appear and disappear but in this strange world that was just their way of moving - they didn't need to walk they were where they wanted to be - My friend got me out of his kitchen and settled me down in his living room but I wanted to go outside and smoke imaginary cigs - I probably did that for an hour before crashing out.
The next morning I awoke to feel normal again - or so I thought - I just wanted to get back to the safety of the familiar surroundings of my own room - I went to pick up my friends phone to call for a lift home but the phone teleported from one shelf to another - each time I reached for the phone it teleported somewhere else.
On arriving home all of the objects so familiar to me seemed to belong to me ,but a me from another dimension - it was like I had returned from my trip but not landed quite where I left off - I was slightly out of sync with the world. I spent the next week on my own recovering from what I now know to be a near death experience- I could interact with pictures and objects in my room - an Indian brave sculpture I had would answer deep and meaningful questions I gave it with either a knowing smile or a disapproving head shake.
My hi-fi played tunes I did not own and had not heard. I took the dose on the Friday evening - I returned to work the following Friday but still looked that ill my boss sent me home thinking I still had the flu I was using as an excuse for looking so wasted and needing time off work. I could not read properly for days after and had extreme difficulty forming sentences - this slowly got better but probably took 12 months for me to become confident enough in my speaking to address a stranger or talk to more than one person at once.
That was about nine years ago - my speech is now what it used to be - I can spout off funny one liners to colleges without fear of stuttering my words or getting words in the wrong order. So has it caused long term damage - well all I can say is my ability to deal with life changing events has gone - I recently lost my best friend due to a tragic accident and split from my partner which sent me into a nasty place - just like the place I was on Datura - a isolated place with only bad feeling and lost companions for company - it has completely changed my out look on life and in one way I am glad I did it because I believe what doesn’t kill me makes me stronger - but if I could go back in time I would probably give that brew a miss and load another bong instead.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Issue 66
Welcome to another issue of Haskell Weekly! Haskell is a purely functional programming language that focuses on correctness, productivity, and expressiveness. This is a weekly summary of what’s going on in its community.
Want to see something featured in Haskell Weekly? We love contributions! Tweet us at @HaskellWeekly or open a pull request.
Featured
-
Faster command line tools with Haskell
What I wish to be true: I write high level Haskell code as declaratively and naively as possible and sufficiently smart compiler optimizations make it as fast as hand tuned Go code. Let’s see if it works out that way!
-
Haskell doesn’t really have a call stack. The evaluation strategy is more like a graph reduction. If you don’t understand that, that’s okay — I don’t either! All I know about it is that it makes questions like “What’s the stack trace for this error?” surprisingly difficult to answer.
-
GHC warnings you should use in addition to
-Wall
There are some useful warnings that are not turned on by
-Wall
. This post will describe which additional warnings you should enable. It will also show examples of bad code that will trigger the warnings. Keep in mind that this bad code will not get caught by-Wall
. -
Unfortunately, intuition and reasoning are not appearing in our types, and therefore we need to rely on our own inner reasoning checker instead of letting GHC enforce things for us. As things scale up, eventually it gets difficult to know what’s happening in the code.
-
Reflections on GHC’s release schedule
With 8.2.1 at long last behind us, now is a good time to reflect on why these cycles are so long, what release schedule we would like to have, and what we can change to realize such a schedule.
-
Haskell’s error facilities are a lot better than most languages. This week we’ll look at some common error handling patterns. We’ll see a couple clear instances where Haskell has simpler and cleaner code.
-
Elm in production: 25,000 lines later
We have managed to take a set of functionality that would have been exceptionally difficult to build using our old methods, and using the strengths of the Elm language and architecture, successfully developed the largest feature in our entire software product to date.
-
Encode state transitions in types using linear types
One has to be careful not to use
s
ever again to avoid ill effects: types have failed us once again. What we need is the ability to consume the olds
, to make it inaccessible. Which, coincidentally, is exactly what linear types enable. -
How is coinduction the dual of induction?
The coinduction rule is not the direct dual of the induction rule, but both are specializations of more general, relational proof methods, where the duality is clearly present.
-
Faster (re)deploys with docker-build-cacher
We traced these shortcomings to a missing key feature: It is not possible to carry statically generated cache files from one build to another once certain source files in the project change.
Jobs
-
FP Complete hiring devops engineers
We are currently seeking to fill multiple devops positions, focusing on rolling out new build, deploy, and monitoring infrastructure. We are looking to hire both remote workers, and at least one engineer in the Phoenix, Arizona area for on site customer work.
In brief
- Gotta Go Fast: A command line utility for practicing typing
- Haskell in Leipzig 2017 submission deadline shifted
- I am a functional programming evangelist
- Invert your mocks!
- Meet Jenkins: GHC’s new CI and build infrastructure
- purerl updates for 0.11
- Streaming programs without laziness: A short primer
- The block in blockchain explained (Merkle trees)
- The oracle-free subset of Lamping’s abstract algorithm is Turing complete
- Today’s Stackage nightly snapshot uses GHC 8.2.1!
- What is new in cross compiling Haskell
- What’s the next best big thing for Haskell after dependent types?
- Yi modularization
Package of the week
This week’s package of the week is justified-containers, a library that provide guarantees about the presence of keys within containers.
Call for participation
- haskell-language-dockerfile: Test suite compilation failure with GHC 8.2
- solga: Build failure with GHC 8.2
- vty: Test suite build failure (due to GHC 8.2 perhaps)
Events
- August 28: Compose :: Melbourne
- August 30: Quito Lambda: La programación funcional


We were unable to find that page. If you think this was in error, please let us know!
Back to homepage{% extends "wiki/base.html" %} {% load wiki_tags %} {% block wiki_pagetitle %}{% if article %}{{ article.current_revision.title }}{% else %}Error{% endif %}{% endblock %} {% block wiki_breadcrumbs %} {% include "wiki/includes/breadcrumbs.html" %} {% endblock %} {% block wiki_contents %} {% if error_type == "ancestors_missing" %}


Sketchfab Sculpting Challenge: Stylized Animal
by Bart VeldhuizenSketchfab writes:
This week we challenge you to sculpt a stylized animal, upload it to Sketchfab, and tag it #AnimalSculptChallenge. To give or get feedback on entries, head over to the Forum! And to see all of the entries, check out the tag gallery 12.
Full rules and prize details on the blog.


Insert HTML fragments in your document.
In order to use your own snippets you have to al least one parameter to your xinha_config:
xinha_config.InsertSnippet.snippets = _editor_url+"plugins/InsertSnippet/snippets.php";
The path above indicates the use of the provided backend. This parses a file that contains the snippets and should have the following format:
<!--Snippet ID--> Snippet content <!--/Snippet ID--> ...and so on
You can use the snippets.html in the plugin folder or tell the backend where to find the file like this
with (xinha_config.InsertSnippet) { <?php // define backend configuration for the plugin $backend_data['snippets_file'] = '/file/containing/snippets.html'; require_once '../contrib/php-xinha.php'; xinha_pass_to_php_backend($backend_data); ?> }
Raimund Meyer (xinha@raimundmeyer.de)


--- title: Assets layout: assets_page extra_css: asset-page.css ---
Well, we can first start off with the "why". So, why assets and resources? Well, you can't get much done without them otherwise, of course! Resources refer to things such as softwares and other things that we use to make game devving easier, and so, here we have compiled a list of resources that we have used in games of our very own!
{{resource.description}}
Gamespawn Projects that use this: {{resource.projects}}
Tutorial Link(s): {{resource.tutorial-links}}
Download Link(s): {{resource.download-link}}
{{resource.description}}
Gamespawn Projects that use this: {{resource.projects}}
Tutorial Link(s): {{resource.tutorial-links}}
Download Link(s): {{resource.download-link}}
{{resource.description}}
Gamespawn Projects that use this: {{resource.projects}}
Tutorial Link(s): {{resource.tutorial-links}}
Download Link(s): {{resource.download-link}}
{{resource.description}}
Gamespawn Projects that use this: {{resource.projects}}
Tutorial Link(s): {{resource.tutorial-links}}
Download Link(s): {{resource.download-link}}
{{resource.description}}
Gamespawn Projects that use this: {{resource.projects}}
Tutorial Link(s): {{resource.tutorial-links}}
Download Link(s): {{resource.download-link}}


LinesOfTextGrp
Tag
Name
Req'd
Description
33
NoLinesOfText
Y
Specifies the number of repeating lines of text specified
58
Text
Y
Free format text string
Can be used to elaborate on the reject reason
Used in Messages:
Used in Components:


{% extends "_layout" %} {% set title = "404" %} {% block content %}
What’s worse, a hilarious 404 page can’t be found either.


Guidance
Guidance for young people about the 16 to 19 Bursary Fund in the 2017 to 2018 academic year.
The 16 to 19 Bursary Fund is money the government has given to local authorities, schools, colleges and other education and training providers (education institutions) to give to students who need financial help to stay in education.
There are 2 types of 16 to 19 bursaries:
Your education institution is responsible for managing both types of bursary.
If you are in one of the groups below, you can apply for a vulnerable bursary:
You could get up to £1,200 if you study full time for a minimum of 30 weeks. If your course is only for a few hours a week or less than 30 weeks, you will get less.
It’s important to remember you won’t necessarily get £1,200 if you’re in one of the specific vulnerable groups. The bursary fund is designed to help you with the costs of attending your course, so if you don’t have costs, for example, you’re a residential student who doesn’t travel, and all your meals and equipment are provided, you could get less than £1,200 or nothing at all. Your institution will consider your circumstances when you apply and will explain any decision they make to you.
Your institution will need proof that you are eligible. They will tell you what they need from you.
For example, this could be:
Benefits must be in your own name to get a vulnerable bursary.
 Instead you may be able to apply for a discretionary bursary from your education institution.
As a young carer you won’t get a vulnerable bursary, unless you fall into one of the specific vulnerable groups. You can apply for help for a discretionary bursary. Your education institution will use the information you give them confidentially so you can talk to them about your caring responsibilities when you’re applying for help.
If you’re a young parent in one of the specific vulnerable groups, for example, you’re getting Income Support or Universal Credit in your own name you may get a vulnerable bursary. If you’re not in one of the specific groups you may be able to apply for a discretionary bursary.
You can also get help with childcare costs through Care to Learn .
If you aren’t in one of the specific vulnerable groups, but you need financial help to stay in education, you can apply for a discretionary bursary from your education institution.
To apply you must be aged 16 or over but under 19 (see the eligibility section for some more detail about 19 year olds) and in full or part time further education or training.
Your education institution is responsible for setting the criteria they use for discretionary bursaries. The criteria they use will focus on making sure bursary funds are targeted at students who need the most help to stay in education.
Examples of what their criteria could be based on include:
How much you get is up to your institution. They decide who gets a bursary, how much, when it’s paid and how it’s paid. They can also say what you should spend it on.
Your education institution may ask for evidence of your family’s household income when you apply. Examples of what they might ask for include:
Your institution will let you know what you need to show them.
Bursary fund payments don’t affect your right to Department of Work and Pensions income-related benefits (like Income Support, for example).
However, if you’re getting Disability Living Allowance or Personal Independence Payments and Employment Support Allowance or Universal Credit, your parents can’t get certain benefits (like child benefit) for you.
Some education institutions offer one-off payments for things like educational trips or to attend university interviews. This might be in addition to help with longer-term costs for things like bus fares. Ask your institution for more information.
To get either of the 2 bursaries in the 2017 to 2018 academic year you must meet the conditions for your age and residency. Your study must also meet some conditions.
You must be aged:
If you’re aged over 19 you won’t be eligible for the bursary unless you fall into one of 2 categories:
If you have a EHCP or are a 19+ continuer you should talk to your education institution to see if you get a discretionary bursary while you continue to attend education.
Other students aged over 19 may be able to get other support for older/adult students. Your education institution will tell you what you can apply for.
Students aged 19 or over are not able to get the vulnerable student bursary.
You must meet the residency conditions to get a bursary. Your institution will check this.
If you live in Scotland and travel to England to study, you should contact your home local authority in Scotland to apply for Scottish EMA . You can’t get the bursary fund.
If you live in England and travel to Scotland to study, you should contact your home local authority in England to apply for a bursary. You can’t get Scottish EMA.
If you’re from England and live in Scotland temporarily to study, for example at a residential college, you will be treated as a Scottish resident and should apply to the local authority in Scotland where your college is based for EMA. You can’t get the bursary fund.
If you live in Wales and travel to England to study, you should contact the local authority where you live to apply for Welsh EMA .
You may also apply to your institution for a discretionary bursary. You can’t get a vulnerable bursary.
If you live in England and travel to Wales to study, the support you can apply for depends on the type of institution you’re attending:
All students who live in England and travel to Wales to study who are in one of the specific vulnerable groups, can apply for a vulnerable bursary. If this applies to you, you should contact your local authority in England to apply.
You must be studying at an education institution that’s inspected by a public body that checks quality, such as Ofsted.
It must also be either:
Your institution will tell you if your course meets this condition.
You can be studying full or part time. Your institution will look at the amount of time you’re studying when they’re deciding if you will get a payment and how much you will get.
If you’re studying on a publicly funded distance learning course you might not have the kind of costs the bursary fund is designed to cover such as transport, equipment and uniforms.
If you do want to apply, you should talk to your education institution. They will look at your individual case and let you know if you might be eligible for help.
The bursary is for students in further education or training. There is separate support for higher education students .
If you go to an independent institution that charges fees, you won’t normally get a bursary. However, if you’ve been referred to the institution by your local authority and they pay your fees, you may be able to apply. You should talk to your education institution to see if you can apply.
Students on apprenticeship programmes or any paid learning or training, can’t get a bursary.
Students on traineeships programmes are not paid so are able to apply for a bursary.
If you’re a young offender you can apply for a bursary if:
If you’re eligible, institutions will usually provide you with in-kind support like a travel pass, course material or a meal instead of money.
You can’t apply if:
You need to contact student services or your tutor at your education institution to apply for the bursary. They will tell you what to do. There should also be information about the 16 to 19 Bursary Fund on your institution’s website, including how you should apply.
You should apply as soon as you know where you’re going to study. The sooner you apply, the sooner your support can start. Some institutions may have limited funds available and may allocate funding on a first come first served basis.
You institution will tell you about any closing dates for application and what documents you will need to give them.
Institutions decide how the bursary is paid to you. They might pay it into your bank account in instalments, give you cash or a cheque or pay it to you in kind. This means that instead of getting money they will give you a travel pass, meal vouchers or course equipment. You might get paid partly in money and partly in kind. If you have any questions about your payment you should talk to your institution.
If you’re 16 years old you can open a basic bank account. This will allow BACS transfers (if your institution wants to pay the money into your bank account) and allow you to withdraw money. If you can’t open a bank account you will need to speak to your institution to agree how the bursary will be paid to you.
Some institutions keep some bursary funds to help students who need emergency help or different types of help during the year because their circumstances have changed. Other institutions provide one-off support through separate funds which aren’t connected to the bursary.
If your circumstances change and you think you need more help speak to your education institution straight away. They will be able to tell you what to do.
If you’re a young parent you can apply for a bursary and for help from Care to Learn for help with childcare costs whilst you study. If you have to move away from home to get the main qualification you’re studying for, you may be able to get help with residential costs . You should ask your tutor or student support team for more information and advice.
As the bursary is to help pay for things you need to stay in education, institutions can say what you should spend it on. They may also ask for receipts to show how you’ve spent it.
If the institution buys you any course related equipment with the bursary they can require you to give it back to them when you finish your course.
Education institutions usually set conditions on your bursary. These are rules you need to stick to so you can carry on getting support from the bursary fund. The conditions they set could cover attendance or standards of behaviour. If you don’t stick to the rules the institution has set they may stop your payments. Some institutions will ask you to sign a form to confirm that you’ve understood the rules they’ve set and what will happen if you break them.
If you’re ill or are absent from your institution for another reason this may affect your payments. Your education institution will give you more information about this.
Your application is confidential and our education institution should make sure you’re not singled out as getting a bursary.
If you’re worried, talk to student support services or your tutor.
If you or your parents or carers give false or incomplete information on your bursary application you may be committing fraud.
If your institution thinks this is the case they may pass details of your application to the Department for Education or the police. You and your parents or carers could be prosecuted and your institution will ask you to pay back any bursary payments you should not have had.
Education institutions may do sample checks as part of their assessment of your bursary application. This means they could ask you for further evidence. If you don’t give them the evidence they’ve asked for, or if their looking at the evidence results in you being due a lower amount of bursary, they may stop payments or and ask you to pay back any payments you should not have had.
If you think someone has made a fraudulent claim for the bursary fund, speak to student support services or your tutor in confidence. They will look into it.
You can also report it directly to the Department for Education .
If you’ve any problems with how the bursary is paid, how much money you get or other general questions, you need to talk to your education institution because they manage the funds.
If you think your institution isn’t managing the bursary fund correctly, you should talk to student support services or your tutor. If they can’t help, you can make a formal complaint, by using your institution’s formal complaints procedure. This is usually available on your institution’s website.
Published: 2 March 2017


SweetFreeStuff.com
///////////////////////////////////////////
Free Play: Country Hits MP3 Album Download on Google Play
Posted: 31 Jul 2015 10:57 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Play: Country Hits MP3 Album Download on Google Play
The post Free Play: Country Hits MP3 Album Download on Google Play appeared
first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Fanta Lemonade Slurpee at 7-Eleven This Weekend (8/1-8/2)
Posted: 31 Jul 2015 09:14 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
7-Eleven is giving away freebies each weekend in August! You need to
either download the iPhone or Android App or text EARN to 711711 to
receive the offers as they become available. August 1-2: Free medium Fanta
Slurpee drink August 8-9: Free Juicy Fruit Starburst gum August 15-16: Free
medium Fanta Slurpee drink August 22-23: Free Continue reading Free Fanta
Lemonade Slurpee at 7-Eleven This Weekend (8/1-8/2)
The post Free Fanta Lemonade Slurpee at 7-Eleven This Weekend (8/1-8/2)
appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Tum-E Yummies Drink at Kroger & Affiliate Stores
Posted: 31 Jul 2015 12:30 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Load the coupon to your shoppers card today only (7/30) and use by
8/16. Free Tum-E Yummies Drink at Kroger Affiliate Stores
The post Free Tum-E Yummies Drink at Kroger Affiliate Stores appeared
first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Fresh Express Product at Farm Fresh, Hornbachers, Shop N Save,
Shoppers and Cub Stores
Posted: 30 Jul 2015 11:59 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Load to your shoppers card today only (7/30). Expires 8/6.
https://www.farmfreshsupermarkets.com/savings/digital-coupon.html
https://www.hornbachers.com/savings/digital-coupon.html
https://www.shopnsave.com/savings/digital-coupon.html
https://www.shoppersfood.com/savings/digital-coupon.html
https://www.cub.com/savings/digital-coupon.html
The post Free Fresh Express Product at Farm Fresh, Hornbachers, Shop ‘N
Save, Shoppers and Cub Stores appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free 2015 Christmas Seals
Posted: 30 Jul 2015 10:50 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free 2015 Christmas Seals
The post Free 2015 Christmas Seals appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Nordic Naturals Wellness Sample Kit
Posted: 30 Jul 2015 10:05 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Click Free Sample on the lower right side of the page,
The post Free Nordic Naturals Wellness Sample Kit appeared first on
SweetFreeStuff.com.


MBC's Lunar New Year special 'Idol Star Athletics Championship' confirms filming dates next month
by beansssFilming for MBC's Lunar New Year special 'Idol Star Athletics Championship' will take place next month!
According to reports on November 13, the main body of the upcoming Lunar New Year special, '2020 ISAC' will be filmed this December 16. The newly instated category e-sports, which received positive reviews during this past Chuseok holidays, will return with filming scheduled for early January, 2020.
Lunar New Year falls a little earlier on the calendar next year, coming up on January 25. Did you enjoy the '2019 Idol Star Athletics Championship', aired during the Chuseok holidays?


Test for https://bugs.webkit.org/show_bug.cgi?id=30295 REGRESSION (r48492): Gmail voice and video chat doesn't work.
FAIL: Text did not run


Enumerables: The Group By Method
Feb 22 2016
Any data container in Ruby that utilizes the #each method can then be set to use the full set of Enumberable methods. These methods are stored under the Enumerable module, where they can be accessed by arrays and hashes, as well as any other containers you may need or create. This way, the methods are only created once and can be accessed in a number of ways (truly, this is DRY).
One Enumerable is the #group_by method, shown here:
sample_array.group_by {|i| ..code block.. }
This method will take an array and create a hash that organizes the array's elements according to the results of the code block. For instance,
array = [1,2,3,4,5]
array.group_by {|i| i%2 }
#=> {0=>[2,4], 1=>[1,3,5]}
In this example, our code block can return one of two values - either 0
, if i
is evenly divisible by 2, or 1
, if it isn't. Our #group_by method creates a new hash creates a new key for each value that the code block returns, and then sorts each array element according to which value the code block returned for it.
This is really useful for reorganizing your data to get a more detailed structure around a specific data point, and can be very valuable as your data gets more and more complex.


File
Camera
Type
Perspective camera provides a 3D view, while orthographic and top-view cameras provide an ortho views
Reset
Take view back to its initial state
Field of View
Changing Field of View provides interesting effects, only applies to Perspective Cameras
Clipping Regions
Choose alternate ways of viewing data
Data
Measurement
Measurement segments currently in view area
Particle Size
Larger sizes fill in the display
Z-Exaggeration
Higher values make elevation deltas more apparent
Colorization
Choose an attribute to colorize
Intensity Source
Color modulators, modulation can be played with
Intensity Blending
How much of intensity to blend with color
All Color
All Intensity


1 reference to OuterCmdletCall
System.Management.Automation (1)
FormatAndOutput\common\BaseCommand.cs (1)
165
this.implementation.OuterCmdletCall = new ImplementationCommandBase.OuterCmdletCallback(this.
OuterCmdletCall
);


|
Drake
|
Namespaces | |
| drake | |
| drake::maliput | |
| drake::maliput::utility | |
| drake::maliput::utility::mesh | |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |


The Essential Guide to Frameless Backpacks
Written by Nicolas Cnudde on 01/04/2021
A frameless backpack is a core element of any ultralightweight backpacking strategy. Since the beginning of the 2000s, they’ve been my backpack model of choice for the majority of hiking trips that I’ve done. The following article contains a rundown of why you should consider using a frameless backpack, addresses some of the most frequently asked questions on the subject, and finally provides a list of 15 highly regarded frameless models, including specs, prices, and links for detailed long-term reviews.
Why Choose a Frameless Backpack?
1. Simplicity
Frameless packs generally have simpler designs. Fewer zippers, fewer compartments, fewer straps, no stays – less that can break, rip, or go wrong.
2. Fit
With frameless backpacks, it’s the load itself that provides the structure. With an unrolled or folded sleeping mat acting as a makeshift framesheet, ideally, a frameless pack should mold to the contours of your back.
A moderate or heavy load packed indiscriminately into a frameless model, will be a lot more uncomfortable than it would be in a more forgiving internal or external frame backpack.
3. Weight and durability
Because of their simpler design and lack of framesheet or stays, frameless packs are lighter than other models. Generally speaking, they tip the scales at 0.6 kg (21 oz) or less. That said, over the years I have found that the weight saving doesn’t come at the cost of durability.
4. Size
People who buy backpacks with large carrying capacities (e.g. 65L or more) generally find ways to fill them. You have all that space, it would be a shame to see it go to waste, no? An inherent advantage of frameless packs is that they are relatively small. An inherent advantage of frameless packs is that they are relatively small.
5. Cost
Fewer materials and simpler designs mean that frameless models are usually cheaper than their internal and external framed equivalents.


MotoGP, OFFICIAL Alex Marquez will pair with Marc in Honda Repsol in 2020
PRESS RELEASE - An official release confirms that Alex will make his MotoGP debut alongside his brother on Team HRC for the 2020 season
by Marco CaregnatoIf anyone still had any doubts, these have now been cleared up with the latest Honda release. Alex Marquez will team up with brother Marc on the HRC Repsol team next season. The Spaniard has won the three-way fight against Johann Zarco and Cal Crutchlow, both candidates for the seat vacated by Jorge Lorenzo following news of his retirement. A race that in reality never even began, because although the man himself continues to deny it, it's clear that Marc is involved in this Honda decision, and has a certain leverage considering his own negotiations ahead of the 2021 season.
A very brief release, that precedes a press conference with Alberto Puig, set to take place at Valencia at 7pm. The text is short and to the point but does reveal one interesting detail, in that Alex has only signed a one-year contract, for 2020. Here is the full release:


(Flask + Transformers + Recorderjs)
Flask is a micro web framework written in Python.
Transformers Library for performing speech recognition.
Recorderjs A plugin for recording/exporting the output of Web Audio API nodes
{% extends "footer.html" %} {% block footer%}fixed{% endblock %}


{% extends "base.html" %} {% block title %}
Medieval catalogues > UNIVERSITY AND COLLEGE LIBRARIES OF OXFORD > All Souls College > Books chained in the library, 1466 × 1494
{% endif %}52 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


The Pig Dice Game!
Here are the rules:
*If the player rolls a 1, they score nothing and it becomes the next player's turn.
*If the player rolls any other number, it is added to their turn total and the player's turn continues.
*If a player chooses to "hold", their turn total is added to their score, and it becomes the next player's turn.
*The first player to get to 100 wins!
Player 1 Grand total:
Player 2 Grand total:


This app is a demo, and doesn’t store any of your personal data.
This app is a demo, and doesn’t store any of your personal data.


--- title: Software layout: default ---
For an end user who just wants to download something, we have one piece of software for you to test out. If you run a Unix OS you can download builds of a desktop client from Github.
This is what Ombuds looks like running on a desktop. If you would like an explanation checkout this video.
There are three ways to interact with Ombuds, each method has a different trust model.
Trust Model: Trust our software and your OS.The desktop client is really a Bitcoin full node. It thus receives every Bitcoin transaction and every Bitcoin block. The client parses all this information, extracts Ombuds bulletins, and indexes them locally. Every Ombuds statement ever published in the block chain can be read using the desktop client. This provably complete record comes at the cost of disk space, processing power, and bandwidth.
The desktop client has a Bitcoin wallet and an Ombuds messenger. The client verifies inclusion of Ombuds bulletins in the block chain.
Here are some screenshots.
Trust Model: Trust your Bitcoin peers and your phone.The mobile client includes an SPV client with bloom filters. It thus receives only relevant Bitcoin transactions and every Bitcoin block header. Trusting your Bitcoin peers to honor bloom filters reduces total bandwidth usage and recording only block headers reduces total disk space. Unlike the desktop client, the mobile client does not have an index of all Ombuds' statements.
This means that a user's peers could deny relevant information to the device and even prevent it from publishing if it had full control over the devices ability to connect to "honest" peers. These compromises are necessary for mobile devices that cannot run the full node.
The mobile client has a full featured Bitcoin wallet and an Ombuds messenger. The mobile client confirms block chain inclusion of Ombuds bulletins, but again relies on peers honoring bloom filters. In practice however, peers do honor bloom filters.
Trust Model: Trust the operator of a website and HTTPS.Someone running an Ombuds Desktop Client possesses an index of all Ombuds statements. This index can be formatted and delivered as a web page, viewable to anyone with a browser and an uncensored Internet connection.
However, the person viewing Ombuds bulletins must completely trust the web relay to not censor content. This option provides ultimate convenience: zero disk space, near zero processing power, and near zero bandwidth to see Ombuds bulletins. But a provably complete record of bulletins is in the hands of the website operator.
Here is a screen shot of our site, ahimsa.io, relaying all of the bulletins on the board ahimsa-dev.


{{'Select File'|translate}} {{'to upload' |translate}}.
{{'Delete Current File To Upload Other One' |translate}}.


We decided to use the User Knowledge Modeling Dataset which ranks the students' knowledge status about the subject of Electrical DC Machines of the of Department of Electrical Education of Gazi University in the 2009 semester. The are 4 knowledge levels (very low, low, middle and high). The class distribution is presented below:
The number of the total samples is 403 (both training and testing data). Since, we are insterested in clustering, we combine the two datasets. Each sample has 5 attributes, which are the following:
UNS is the correct knowledge level of user.
%matplotlib inline
import matplotlib.pylab
import numpy as np
data = np.recfromcsv('user_knowledge_modeling_hamdi.csv', delimiter=',')
# split attributes from correct class
labels = np.array([ row[5] for row in data ])
data = data[['stg', 'scg', 'str', 'lpr', 'peg']]
print (len(data))
print (len(data.dtype.names))
data_array = data.view((np.float, len(data.dtype.names)))
#data_array = data_array.transpose()
Let's have a look at how our data actually looks like
print (data_array)
scipy
¶We'll implement the clustering using scipy
modules. First we import the necessary methods:
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial.distance import pdist, squareform
from scipy.cluster.hierarchy import linkage, dendrogram
There are many methods for calculating the distance between the clusters. Let's try first the single linkage method:
data_dist = pdist(data_array) # computing the distance
data_link = linkage(data_dist, method='single') # computing the linkage
Now, let's plot the dendrogram:
dendrogram(data_link)
plt.xlabel('Samples')
plt.ylabel('Distance')
plt.suptitle('Samples clustering (single linkage)', fontweight='bold', fontsize=14);
As we already know, there should be 4 clusters in total (one for each knowledge level). Judging from the dendrogram produced, the single linkage method doesn't work well for our data. It has found over 10 clusters (each cluster is denoted by a separate color), where the "red" one is about $80\%$ of all the samples.
Let's try the complete linkage method:
data_link = linkage(data_dist, method='complete') # computing the linkage
dendrogram(data_link)
plt.xlabel('Samples')
plt.ylabel('Distance')
plt.suptitle('Samples clustering (complete linkage)', fontweight='bold', fontsize=14);
The complete linkage method produces a much better clustering for our data. Each cluster has a decent number of points and the whole clustering result is acceptable.
Let's do on final try using the ward linkage method which uses the Ward variance minimization algorithm. Instead of relying on the minimum or maximum distance between two clusters (single and complete linkage methods respectively), we try to minimize the total within-cluster variance every time we merge two clusters:
data_link = linkage(data_dist, method='ward') # computing the linkage
dendrogram(data_link)
plt.xlabel('Samples')
plt.ylabel('Distance')
plt.suptitle('Samples clustering (ward linkage)', fontweight='bold', fontsize=14);
The Ward's method produces an even better and cleaner clustering, if we were to judge its quality from the difference in the heights in the last few clustering steps. We can see that the heigh difference for the last 3 steps is over $50\%$ of the overall heigh. Thus, these clusters look very solid.
Plotting a heatmap that many R users are used to is a tricky endevour in Python
# Compute and plot first dendrogram.
fig = plt.figure(figsize=(8,8))
# x ywidth height
ax1 = fig.add_axes([0.05,0.1,0.2,0.6])
Z1 = dendrogram(data_link, orientation='right')
ax1.set_xticks([])
# Compute and plot second dendrogram.
ax2 = fig.add_axes([0.3,0.71,0.6,0.2])
Z2 = dendrogram(data_link)
ax2.set_xticks([])
ax2.set_yticks([])
# Compute and plot the heatmap
axmatrix = fig.add_axes([0.3,0.1,0.6,0.6])
idx1 = Z1['leaves']
idx2 = Z2['leaves']
D = squareform(data_dist)
D = D[idx1,:]
D = D[:,idx2]
im = axmatrix.matshow(D, aspect='auto', origin='lower', cmap=plt.cm.YlGnBu)
axmatrix.set_xticks([])
axmatrix.set_yticks([])
# Plot colorbar.
axcolor = fig.add_axes([0.91,0.1,0.02,0.6])
plt.colorbar(im, cax=axcolor)
Another thing you can and should definitely do is check the Cophenetic Correlation Coefficient of your clustering with help of the cophenet() function. This (very very briefly) compares (correlates) the actual pairwise distances of all your samples to those implied by the hierarchical clustering. The closer the value is to 1, the better the clustering preserves the original distances, which in our case is pretty close:
from scipy.cluster.hierarchy import cophenet
from scipy.spatial.distance import pdist
X = data_array
# Compute Cophenetic Correlation Coefficient
for method in ['single', 'complete', 'ward']:
Z = linkage(X, method=method)
c, coph_dists = cophenet(Z, pdist(data_array))
print('%s: %f' % (method, c))
The values for the different clustering methods are very close, thus we cannot say there is a best method, solely based on the Coephenetic Correlation Coefficient.
Let's check now what kinds of elements the Z
array contains:
Z[0]
No matter what method and metric you pick, the linkage()
function will use that method and metric to calculate the distances of the clusters (starting with your n individual samples (data points) as singleton clusters)) and in each iteration will merge the two clusters which have the smallest distance according the selected method and metric. It will return an array of length $n - 1$ giving you information about the $n - 1$ cluster merges which it needs to pairwise merge n clusters. $Z[i]$ will tell us which clusters were merged in the $i-th$ iteration, let's take a look at the first two points that were merged:
We can see that ach row of the resulting array has the format [idx1, idx2, dist, sample_count]
.
In its first iteration the linkage algorithm decided to merge the two clusters (original samples here) with indices 83 and 100, as they only had a ward's distance of $0.03741$. This created a cluster with a total of 2 samples.
Z[1]
In the second iteration the algorithm decided to merge the clusters (original samples here as well) with indices 98 and 102, which had a distance of $0.04690$. This again formed another cluster with a total of 2 samples.
The indices of the clusters until now correspond to our samples. Remember that we had a total of 403 samples, so indices 0 to 402. Let's have a look at the first 20 iterations:
Z[:20]
We can observe that until iteration 19 the algorithm only directly merged original samples. We can also observe the monotonic increase of the ward's distance. In iteration 19 the algorithm decided to merge cluster indices 171 with 414. If you paid attention the 414 should astonish you as we only have original sample indices 0 to 402 for our 403 samples. All indices $idx >= len(X)$ actually refer to the cluster formed in $Z[idx - len(X)]$.
This means that while idx 402 corresponds to X[402] that idx 403 corresponds to the cluster formed in Z[0], idx 404 to Z[1], 405 to Z[2], ...
Hence, the merge iteration 19 merged sample 171 to our samples 155 and 156 that were previously merged in iteration 11.
Let's check out the points coordinates to see if this makes sense:
X[[171, 155, 156]]
Seems pretty close, but let's plot the points again and highlight them. Since our points/samples have 5 attributes (and thus they belong to the $R^5$ space), we can not directly visualize the produced clusters. A partial solution to this problem would be to use PCA to move to the $R^2$ space:
from sklearn.decomposition import PCA
# apply PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
print (X_pca.shape) # 403 samples with 2 dimensions
Now let's plot these above points:
idxs = [171, 155, 156]
plt.figure(figsize=(10, 8))
plt.scatter(X_pca[:,0], X_pca[:,1]) # plot all points
plt.scatter(X_pca[idxs,0], X_pca[idxs,1], c='r') # plot interesting points in red again
plt.show()
Dendrogram visualization
A dendrogram is a visualization in form of a tree showing the order and distances of merges during the hierarchical clustering. Let's plot again the dendrogram in a bigger box:
# calculate full dendrogram
plt.figure(figsize=(25, 10))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Distance')
dendrogram(
Z,
leaf_rotation=90., # rotates the x axis labels
leaf_font_size=8., # font size for the x axis labels
)
plt.show()
If this is the first time you see a dendrogram, it's probably quite confusing, so let's take this apart...
You can also see that from distances $\gt 3$ up there's a big jump of the distance to the final merge at a distance of approx. 6. Let's have a look at the distances of the last 4 merges:
Z[-4:, 2]
In case you're wondering about where the colors come from, you might want to have a look at the color_threshold argument of dendrogram(), which as not specified automagically picked a distance cut-off value of 70 % of the final merge and then colored the first clusters below that in individual colors.
Dendrogram Truncation
As you might have noticed, the above is pretty big for 403 samples already and you probably have way more in real scenarios, so let me spend a few seconds on highlighting some other features of the dendrogram() function:
# Truncated dendrogram
plt.title('Hierarchical Clustering Dendrogram (truncated)')
plt.xlabel('Sample index')
plt.ylabel('Distance')
dendrogram(
Z,
truncate_mode='lastp', # show only the last p merged clusters
p=12, # show only the last p merged clusters
show_leaf_counts=False, # otherwise numbers in brackets are counts
leaf_rotation=90.,
leaf_font_size=12.,
show_contracted=True, # to get a distribution impression in truncated branches
)
plt.show()
The above shows a truncated dendrogram, which only shows the last $p=12$ out of our 402 merges.
The parameter show_contracted
allows us to draw black dots at the heights of those previous cluster merges, so we can still spot gaps even if we don't want to clutter the whole visualization. In our example we can see that the dots are all at pretty small distances (i.e $ \lt 2$) when compared to the last merge at a distance of 6, telling us that we probably didn't miss much there.
As it's kind of hard to keep track of the cluster sizes just by the dots, dendrogram()
will by default also print the cluster sizes in brackets () if a cluster was truncated:
# Truncated dendrogram with cluster sizes
plt.title('Hierarchical Clustering Dendrogram (truncated)')
plt.xlabel('Sample index or (cluster size)')
plt.ylabel('Distance')
dendrogram(
Z,
truncate_mode='lastp', # show only the last p merged clusters
p=12, # show only the last p merged clusters
leaf_rotation=90.,
leaf_font_size=12.,
show_contracted=True, # to get a distribution impression in truncated branches
)
plt.show()
We can now see the sizes of the clusters before the last 12 merges. The left-most cluster is the smallest one, with 13 points, and the right-most is the larges one with 65 points/samples.
Eye Candy
Even though this already makes for quite a nice visualization, we can pimp it even more by also annotating the distances inside the dendrogram by using some of the useful return values dendrogram()
:
def fancy_dendrogram(*args, **kwargs):
max_d = kwargs.pop('max_d', None)
if max_d and 'color_threshold' not in kwargs:
kwargs['color_threshold'] = max_d
annotate_above = kwargs.pop('annotate_above', 0)
ddata = dendrogram(*args, **kwargs)
if not kwargs.get('no_plot', False):
plt.title('Hierarchical Clustering Dendrogram (truncated)')
plt.xlabel('Sample index or (cluster size)')
plt.ylabel('Distance')
for i, d, c in zip(ddata['icoord'], ddata['dcoord'], ddata['color_list']):
x = 0.5 * sum(i[1:3])
y = d[1]
if y > annotate_above:
plt.plot(x, y, 'o', c=c)
plt.annotate("%.3g" % y, (x, y), xytext=(0, -5),
textcoords='offset points',
va='top', ha='center')
if max_d:
plt.axhline(y=max_d, c='k')
return ddata
fancy_dendrogram(
Z,
truncate_mode='lastp',
p=12,
leaf_rotation=90.,
leaf_font_size=12.,
show_contracted=True,
annotate_above=10, # useful in small plots so annotations don't overlap
)
plt.show()
Selecting a Distance Cut-Off aka Determining the Number of Clusters
As explained above already, a big jump in distance is typically what we're interested in if we want to argue for a certain number of clusters. In our case we would probably just say that our cut-off is 3.5, as we are interested in a small number of clusters:
# set cut-off to 3.5
max_d = 3.5 # max_d as in max_distance
#Let's visualize this in the dendrogram as a cut-off line:
fancy_dendrogram(
Z,
truncate_mode='lastp',
p=12,
leaf_rotation=90.,
leaf_font_size=12.,
show_contracted=True,
annotate_above=10,
max_d=max_d, # plot a horizontal cut-off line
)
plt.show()
As we can see, we end up with four clusters.
In general for a chosen cut-off value max_d you can always simply count the number of intersections with vertical lines of the dendrogram to get the number of formed clusters. Say we choose a cut-off of max_d = 3
, we'd get 6 final clusters:
fancy_dendrogram(
Z,
truncate_mode='lastp',
p=12,
leaf_rotation=90.,
leaf_font_size=12.,
show_contracted=True,
annotate_above=10,
max_d=3,
)
plt.show()
Automated Cut-Off Selection
Now while this manual selection of a cut-off value offers a lot of benefits when it comes to checking for a meaningful clustering and cut-off, there are cases in which you want to automate this. The problem again is that there is no golden method to pick the number of clusters for all cases (which is why i think the investigative & backtesting manual method is preferable). Wikipedia lists a couple of common methods. Reading this, you should realize how different the approaches and how vague their descriptions are.
Inconsistency Method
For example, let's have a look at the "inconsistency" method, which seems to be one of the defaults for the fcluster()
function in scipy.
The question driving the inconsistency method is "what makes a distance jump a jump?". It answers this by comparing each cluster merge's height h to the average avg and normalizing it by the standard deviation std formed over the depth previous levels:
inconsistency = h − avgstd
The following shows a matrix of the avg, std, count, inconsistency
for each of the last 10 merges of our hierarchical clustering with depth = 5
from scipy.cluster.hierarchy import inconsistent
depth = 5
incons = inconsistent(Z, depth)
incons[-10:]
We can see that we can not use a certain number as a limit in the inconsistencies, as the inconsincency is not monotonically increasing.
Let's try with depth = 3
:
depth = 3
incons = inconsistent(Z, depth)
incons[-10:]
Again, we fall into the same problem!
Elbow Method
Another thing you might see out there is a variant of the "elbow method". It tries to find the clustering step where the acceleration of distance growth is the biggest (the "strongest elbow" of the blue line graph below, which is the highest value of the green graph below):
last = Z[-10:, 2]
last_rev = last[::-1]
idxs = np.arange(1, len(last) + 1)
plt.plot(idxs, last_rev)
acceleration = np.diff(last, 2) # 2nd derivative of the distances
acceleration_rev = acceleration[::-1]
plt.plot(idxs[:-2] + 1, acceleration_rev)
plt.show()
k = acceleration_rev.argmax() + 2 # if idx 0 is the max of this we want 2 clusters
print ("clusters:", k)
Even though this works nicely in this example, it shouldn't be used blindly in every case. If we used this method on clusters produced by any other method (e.g. single, complete linkage), it isn't certain that it would give good results.
Retrieve the Clusters
Now, let's finally have a look at how to retrieve the clusters, for different ways of determining k. We can use the fcluster
function.
Knowing max_d: Let's say we determined the max distance with help of a dendrogram, then we can do the following to get the cluster id for each of our samples:
from scipy.cluster.hierarchy import fcluster
max_d = 4 # Max distance is set to 4
clusters = fcluster(Z, max_d, criterion='distance')
clusters
Knowing k: Another way starting from the dendrogram is to say "I can see I have k = 4
" clusters, as in our example where we know beforehand the number of different clusters (i.e knowledge levels). You can then use:
k = 4
fcluster(Z, k, criterion='maxclust')
Visualizing Your Clusters
Since our data are 5-dimensional, we cannot directly visualize the resulting clusters. Although, we can use the 2-dimentional points produced by the $PCA$ to visualize the clusters in the 2D. Points with the same color belong to the same cluster:
# Scatter plot of the PCA-ed samples
plt.figure(figsize=(10, 8))
plt.scatter(X_pca[:,0], X_pca[:,1], c=clusters) # plot points with cluster dependent colors
plt.show()
We can see that some points of each cluster are located inside other clusters. This may look confusing at first, but it is totally normal. Remember that have lost some information from the $R^5 \to R^2$ transformation. Our clustering algorithms work on the original data dimension and they take into account information (i.e. point distances, variance of the cluster) that we cannot visualize. If our data were 2D then this plot would indicate that something went terribly wrong!
Finally, we can try to visualize the clusters in the 3D space to keep more info. We can achieve this by keeping one more components form the $PCA$ method:
# PCA: Keep 3 components from each sample
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X)
print(X_pca.shape)
from mpl_toolkits.mplot3d import Axes3D
# Create new 3D figure
fig = plt.figure(figsize=(10, 8))
ax = Axes3D(fig)
# Scatter plot of the 3D PCA-ed samples
ax.scatter(X_pca[:,0], X_pca[:,1], X_pca[:, 2], c=clusters) # plot points with cluster dependent colors
plt.show()
We can even plot an interactive 3d scatter plot!
%matplotlib notebook
# Create new 3D figure
fig = plt.figure(figsize=(10, 8))
ax = Axes3D(fig)
# Scatter plot of the 3D PCA-ed samples
ax.scatter(X_pca[:,0], X_pca[:,1], X_pca[:, 2], c=clusters) # plot points with cluster dependent colors
plt.show()


Version: Beta. Sourcecode on Github. Copyright © 2014 - 2015 by Rhoda Baker and Gordon Tyler.
FINAL FANTASY XIV ©2010 - 2015 SQUARE ENIX CO., LTD. FINAL FANTASY is a registered trademark of Square Enix Holdings Co., Ltd. All material used under license.


Dashboard
Deposit
Rent DAI
Gold Club
Affiliate Program
Total Rent
Sell DAI
GoTV
2FA
Auth Key
Use below key or scan QR-Code to generate google code, you also need Google Auhtenticator app for this
Key:
JORLGGPDFFQDMATN
Enable now


Celcom offers the Huawei Mate 30 from as low as RM15/month
by Alexander WongThe Huawei Mate 30 series has arrived in Malaysia and you can get one from Celcom as little as RM15/month through its EasyPhone program. In addition, the device also comes with additional freebies plus 1-year extended warranty and 1-month screen crack protection.
Huawei Mate 30
The Huawei Mate 30 with 8GB RAM + 128GB storage is officially priced at RM2,799 but you can rent it from Celcom from as low as RM15/month or buy it on instalment from RM28/month. Alternatively, it is also available on a normal contract from RM299 on the highest Platinum Plus plan but do note that you’ll have to pay an upfront payment which will be rebated back to your account.
For EasyPhone, you’ll need to enable auto-billing with a credit card and it is only applicable for cards issued by Maybank, Citibank and CIMB bank. All options are tied to a 24-month contract period.
EasyPhone Rent
EasyPhone Own
Normal Contract
Gold Plus (RM98/month) – RM1,099 (RM700 upfront)
Gold Supreme (RM128/month) – RM999 (RM800 upfront)
Platinum (RM148/month) – RM799 (RM1,000 upfront)
Platinum Plus (RM188/month) – RM299 (RM1,500 upfront)
Huawei Mate 30 Pro
For the top-of-the-line Mate 30 Pro with 8GB RAM + 256GB storage, the device is officially retailing for RM3,899. On Celcom’s EasyPhone Rent, you can get it from RM120/month or buy it on EasyPhone Buy instalment from RM139/month. The device is available on a normal contract from RM2,408.
EasyPhone Rent
EasyPhone Own
Normal Contract
Gold Plus (RM98/month) – RM3,098 (RM300 upfront)
Gold Supreme (RM128/month) – RM2,938 (RM450 upfront)
Platinum (RM148/month) – RM2,798 (RM600 upfront)
Platinum Plus (RM188/month) – RM2,408 (RM1,000 upfront)
For more info, you can check out Celcom’s Mate 30 and Mate 30 Pro pages. Both devices are shipped with Huawei Mobile Services, so you won’t get Google PlayStore and other Google apps pre-installed. In case you missed it, the blue telco is offering a Buy Mate 30 and get Free Huawei P30 combo when you sign up for a Platinum plan together with a supplementary line.


%HX_ROBOT_INFO Get information from a simulator/robot. % % info = hx_robot_info() % % HX_CONNECT should have been called first. % % Return value: % info: Structure with the following named fields: % motor_count (int) : Number of motors. The number of motors is less than or equal % to the number of joints. For example, one motor may control % several joints through kinematic joint coupling. % joint_count (int) : Number of joints. The number of joints is greater than or equal % to the number of motors. % contact_sensor_count (int) : Number of contact sensors. A contact sensor measures % the magnitude of the force on that sensor. % imu_count (int) : Number of IMUs (inertial measurement units). An IMU or inertial % measurement unit measures the 3-dimensional linear acceleration % vector and the 3-dimensional angular velocity vector experienced by % the sensor. % motor_limit (float array) : An N by 2 array representing % the angular limits of each motor in the robot, where N is the maximum % number of motors (rad). Each 1x2 row/column of the array corresponds to % a motor. The first entry in the row/column is the lower limit of the motor. % The second entry is the upper limit of the motor. % joint_limit (float array) : Minimum and maximum joint angles (rad). An M by 2 % array representing the angular limits of each joint in the robot, % where M is the maximum number of joints. Each 1x2 row/column of the array % corresponds to a joint. The first entry in the row/column is the lower % limit of the joint. The second entry is the upper limit of the joint. % update_rate (float) : Rate at which the device will process new commands % and provide new sensor data (Hz). % % Throws an error if something failed. % % See also HX_CLOSE, HX_CONNECT, HX_READ_SENSORS, and HX_UPDATE % % For more information, see the Gazebo HAPTIX site % and/or % the MuJoCo HAPTIX site. function info = hx_robot_info() info = hxgz('robot_info'); end


Updated For Bootstrap 4
Newly improved, and full of great utility classes, Bootstrap 4 is leading the way in mobile responsive web development! All of the themes of Orbit Themes are now using Bootstrap 4!
Easy to Use & Customize
Landing Page is just HTML and CSS with a splash of SCSS for users who demand some deeper customization options. Out of the box, just add your content and images, and your new landing page will be ready to go!
Fully Responsive Design
When you use a theme created by Start Bootstrap, you know that the theme will look great on any device, whether it's a phone, tablet, or desktop the page will behave responsively!
What people are saying
John Doe
"This is Great! Thanks so much Orbit Themes!"
Sandeep Bhatt
"Thanks so much for making these free resources available to us!"
Bret Lee
"Bootstrap 4 is amazing and Thank you for everything. "


Syntax:
gr_license();
Returns: (string) The license string
Description:
The Gesture Recognition Engine for GameMaker Studio 2, uses internally the $P Algorithm.
The $P Point-Cloud Recognizer algorithm used in this Gesture Recognition Engine, is distributed under the "New BSD License". It means that if you use this extension you:
draw_text(x,y, gr_license());
Syntax:
gr_template_add(name, data_type, points_data);
| Argument name | Type | Description |
|---|---|---|
| name | string | The name of the gesture. You can create multiple gestures with the same name. |
| data_type | string | A string that specify the type of data provided in points_data argument. It can be "path", "array_path", "array_points", "array_raw", "list_points" or "list_raw". |
| points_data | array|list|path | The data that will be determinate the points of the path. |
Returns: (Gesture) The new created gesture
Description:
Creates and adds a gesture to the Recognition system as a template gesture. Check gr_gesture_create to know more about the arguments.
Syntax:
gr_template_delete_all([dont_destroy_gestures]);
| Argument name | Type | Description |
|---|---|---|
| dont_destroy_gestures | boolean | If true, the gestures will be only removed from the template list without destroying them |
Description:
Removes all gestures from the templates list.
By default, it also calls gr_gesture_destroy on each gesture to free the memory.
If for some reason you only want to delete the gestures from the list but without destroying them,
you can pass true as the optional dont_destroy_gestures
argument.
Syntax:
gr_template_find_by_name(name);
| Argument name | Type | Description |
|---|---|---|
| name | string | The name of the gesture that you are looking. |
Returns: (Gesture) The gesture
Description:
Finds and returns the first added template gesture with the specified name.
Syntax:
gr_template_find_by_index(index);
| Argument name | Type | Description |
|---|---|---|
| index | integer | The index starting from 0 of the gesture that you are looking. |
Returns: (Gesture) The gesture
Description:
Finds and returns the first added template gesture with the specified name.
Syntax:
gr_template_number();
Returns: (integer) The number of total templates on the system
Description:
gr_template_number();
Syntax:
gr_template_get_all([exclude_disabled ]);
| Argument name | Type | Description |
|---|---|---|
| exclude_disabled | bool | If true, only the enabled gestures will be returned |
Returns: (Array) An array with all the gestures added
Description:
Returns an array with all the template gestures added to the system
Syntax:
gr_gesture_create(name, gesture_data_type, points_data);
| Argument name | Type | Description |
|---|---|---|
| name | string | The name of the gesture. You can create multiple gestures with the same name. |
| gesture_data_type | string | A string that specify the type of data provided in points_data argument. It can be "path", "array_path", "array_points", "array_raw", "list_points" or "list_raw". |
| points_data | array|list|path | The data that will be determinate the points of the path. |
Returns: (Gesture) The new created gesture
Description:
Creates a gesture with the specified name ussing the points_data specified. Note: if you want to add the gesture to the recognition system you must use gr_add instead. You can use one of the following strings in the data_type argument to create you gesture:
Warning, if you pass a ds_list as the points_data argument, the gesture will be created and the list will be destroyed.
Syntax:
gr_gesture_set_enabled(gesture, enabled);
| Argument name | Type | Description |
|---|---|---|
| gesture | Gesture | The gesture |
| enabled | bool | True if enabled |
Description:
Sets the enabled propery of a specified gesture. If a gesture is disabled, then is ignored by the system when performing the gesture recognition process.
Syntax:
gr_gesture_get_enabled(gesture);
| Argument name | Type | Description |
|---|---|---|
| gesture | Gesture | The gesture |
Returns: (bool) True if enabled
Description:
Gets the enabled propery of a specified gesture. If a gesture is disabled, then is ignored by the system when performing the gesture recognition process.
Syntax:
gr_gesture_get_name(gesture);
| Argument name | Type | Description |
|---|---|---|
| gesture | Gesture | The gesture |
Returns: (string) The gesture name
Description:
Gets the name of a gesture
Syntax:
gr_gesture_get_point(gesture, index);
| Argument name | Type | Description |
|---|---|---|
| gesture | Gesture | The gesture |
| index | integer | The point index |
Returns: (Point) The specified point
Description:
Gets the name of a gesture
Info: Gestures are preprocesed and stored diferently than you spect. So it's probably that you encounter that the number of points that you get inside a gesture is different than the number of points you provided when created the gesture
Syntax:
gr_gesture_points_number(gesture);
| Argument name | Type | Description |
|---|---|---|
| gesture | Gesture | The gesture |
Returns: (integer) The number of points inside the gesture
Description:
Gets the number of points inside a gesture.
Info: Gestures are preprocesed and stored diferently than you spect. So it's probably that you encounter that the number of points that you get inside a gesture is different than the number of points you provided when created the gesture
Syntax:
gr_gesture_destroy(gesture);
| Argument name | Type | Description |
|---|---|---|
| gesture | Gesture | The gesture to destroy |
Returns: (undefined) The value undefined. See example.
Description:
Destroys the specified gesture and free up memory.
Use it as: my_gesture = gr_gesture_destroy(my_gesture);
Example:
my_gesture = gr_gesture_destroy(my_gesture);
Syntax:
gr_point_create(x, y, stroke);
| Argument name | Type | Description |
|---|---|---|
| x | real | The x coordinate of the point. |
| y | real | The y coordinate of the point. |
| stroke | integer | The stroke index for the specified point startig from zero. |
Returns: (Point) The point instance
Description:
Creates a point and returns it. If you are creating a gesture with multiple strokes, you can pass the stroke index. If not, simply pass 0 (zero) for the stroke parameter.
Syntax:
gr_point_get_x(point);
| Argument name | Type | Description |
|---|---|---|
| point | Point | The point |
Returns: (real) The X coordinate of the specified point
Description:
Returns the X coordinate of the specified point
Example:
// This code will manually draw each point of the recorded gesture
var size = gr_record_points_number(record);
for (var i = 0; i < size; i++) {
var point = gr_record_get_point(record, i);
var xx = gr_point_get_x(point);
var yy = gr_point_get_y(point);
draw_circle(xx, yy, 3, false);
}
Syntax:
gr_point_get_y(point);
| Argument name | Type | Description |
|---|---|---|
| point | Point | The point |
Returns: (real) The Y coordinate of the specified point
Description:
Returns the Y coordinate of the specified point
Example:
// This code will manually draw each point of the recorded gesture
var size = gr_record_points_number(record);
for (var i = 0; i < size; i++) {
var point = gr_record_get_point(record, i);
var xx = gr_point_get_x(point);
var yy = gr_point_get_y(point);
draw_circle(xx, yy, 3, false);
}
Syntax:
gr_point_get_stroke(point);
| Argument name | Type | Description |
|---|---|---|
| point | Point | The point |
Returns: (integer) The stroke index of the specified point
Description:
Returns the Stroke index of the specified point
Syntax:
gr_point_distance(point1, point2);
| Argument name | Type | Description |
|---|---|---|
| point1 | Point | The first point |
| point2 | Point | The second point |
Returns: (real) The distance between two points
Description:
Returns the distance between two points
Syntax:
gr_recognition_async_process(result, [time_to_spend ]);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object to process |
| time_to_spend | real | The minimum number of milliseconds to spend in the async recognition process |
Returns: (boolean) True if the recognition has ended. If you pass undefined or an invalid "result"
Description:
Process the recognition object asynchronous.
If the recognition is in progress, the funtion returns false. When the recognition is ready, the function returns true.
Then, you can use the normal gr_recognition_get
functions to get the results of the recognition.
The second argument, specifies how many milliseconds should be spent computing the result. If you don't pass this argument, it is automatically calculated based on the room_speed.
Example:
/// Global mouse up event
/// Pass true to activate the async mode
recognition = gr_record_recognize(record, true);
/// Step event
if (gr_recogtition_async_is_ready(recognition)) {
var ready = gr_recognition_async_process(recognition);
if (ready) {
var name = gr_recognition_get_name(recognition, 0);
recognition = undefined; // reset the result
show_message("You have drawn a " + name );
}
}
/// Draw event
var ready = gr_recognition_async_is_ready(recognition);
var total = gr_recognition_async_total(recognition);
var number = gr_recognition_async_total(number);
var progress = floor(number / total * 100);
draw_text(x, y, "Recognition is " + (ready ? "ready" : "in progress"));
draw_text(x, y, "Progress: " + string(progress) + "%");
Syntax:
gr_recognition_async_is_ready(result);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object |
Returns: (boolean) True if the results are ready. False if the job is in progress. If the result object is not async, then it always return true
Description:
Returns true if the recognition is already computed, and is ready. You can use in in the step event to check the recognition state. Check the example below.
INFO: if you pass a value that is not a Recognition, the function returns false.
Syntax:
gr_recognition_async_total(result);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object |
Returns: (integer) The number of total templates to be processed by the async recognition system
Description:
gr_recognition_async_total(result);
Syntax:
gr_recognition_async_number(result);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object |
Returns: (integer) The number of templates processed by the async recognition system
Description:
If the recognition is not async, then the total number of templates processed will be returned
Syntax:
gr_recognition_get_name(result, [index]);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object |
| index | integer | The index of the recognition starting from zero |
Returns: (string) The gesture template name of the result with the specified index
Description:
Returns the name of the recognized pattern gesture for that recognition result with the specified index.
For example, to get the name of the most similar pattern acording to the recognition results you can
use var name = gr_recognition_get_name(result, 0);
. To get the second most similar pattern, use 1, and so on.
The index must be between ´0´ and ´gr_recognition_get_number(recognition) - 1´, and they are ordered
by the accuracy.
If you don't specify the index, then the index 0 (the most accurate result) is assumed.
Syntax:
gr_recognition_get_accuracy(result, [index]);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object |
| index | integer | The index of the recognition starting from zero |
Returns: (real) The accuracy of the result with the specified index
Description:
Returns the accuracy (as a real from 0.00 to 1.00) of the recognized pattern gesture for that recognition result with the specified index.
For example, to get the accuracy of the most similar pattern acording to the recognition results you can
use var accuracy = gr_recognition_get_accuracy(result, 0);
. To get the second most similar pattern, use 1, and so on.
The index must be between ´0´ and ´gr_recognition_get_number(recognition) - 1´, and they are ordered
by the accuracy.
If you don't specify the index, then the index 0 (the most accurate result) is assumed.
Syntax:
gr_recognition_to_map(result);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object |
Returns: (ds_map) A ds_map
Description:
Creates and returns a new ds_map where each key is the name of the template gesture and the value is the accuracy score of that gesture template.
Example:
var map = gr_recognition_to_map(result);
var s = map[? "triangle"];
show_debug_message("The accuracy score for the triangle gesture is " + string(s));
Syntax:
gr_recognition_get_number(result);
| Argument name | Type | Description |
|---|---|---|
| result | Result | The recognition result object |
Returns: (integer) The number of total recognition results
Description:
Returns the number of total recognition results. Normally, this is equal to the total number of template gestures on the system at the time of the recognition ocurred.
Syntax:
gr_path_resample(points_list, n);
| Argument name | Type | Description |
|---|---|---|
| points_list | ds_list | A ds_list with points |
| n | integer | The number of points |
Returns: (ds_list) A new resampled ds_list
Description:
Note: This function is used internally by the system, but is public in case you want to use it for something
Resample a figure of ds_list of an arbitrary number of points and returns a new ds_list with the new number of points. The coordinates of each point are interpolated in the resampling process.
Syntax:
gr_path_length(points_list);
| Argument name | Type | Description |
|---|---|---|
| points_list | ds_list | A ds_list with points |
Returns: (real) length traversed by a point path
Description:
Returns the length of a path
Syntax:
gr_path_distance(points_list1, points_list2);
| Argument name | Type | Description |
|---|---|---|
| points_list1 | ds_list | A ds_list with points |
| points_list2 | ds_list | A ds_list with points |
Returns: (real) average distance between corresponding points in two paths
Description:
Returns the average distance between correspoinding points in two paths.
Syntax:
gr_path_centroid(points_list);
| Argument name | Type | Description |
|---|---|---|
| points_list | ds_list | A ds_list with points |
Returns: (Point) The centroid of the path
Description:
Calculates the centroid of a path of points
Syntax:
gr_path_scale(points_list);
| Argument name | Type | Description |
|---|---|---|
| points_list | ds_list | A ds_list with points |
Returns: (ds_list) The same point_list
Description:
Normalizes the size of a path of points
Syntax:
gr_path_translate(points_list, translate_to);
| Argument name | Type | Description |
|---|---|---|
| points_list | ds_list | A ds_list with points |
| translate_to | Point | The location to translate the centroid to |
Returns: (ds_list) The same point_list
Description:
Translates points' centroid to the specified location in space
Syntax:
gr_draw_points_list(points_list, x, y, scale_x, scale_y);
| Argument name | Type | Description |
|---|---|---|
| points_list | ds_list | A ds_list with Point objects. You can create new points with gr_point_create. |
| x | real | The x position |
| y | real | The y position |
| scale_x | real | The horizontal scale. 1 = no scale. |
| scale_y | real | The vertical scale. 1 = no scale. |
Returns: (nothing) Nothing
Description:
Draw the list of points on the screen.
This is an advanced function, normally, you want to use gr_draw_gesture
to
draw a gesture, or gr_draw_record
to draw a record.
To configure the colour and width of the line, you MUST use first gr_draw_config
.
Syntax:
gr_draw_gesture(gesture_or_name, x, y, width, height);
| Argument name | Type | Description |
|---|---|---|
| gesture_or_name | Gesture|string | The gesture instance of the name of the gesture |
| x | real | The x position of the top left corner of the gesture |
| y | real | The y position of the top left corner of the gesture |
| width | real | The width of the gesture |
| height | real | The height of the gesture |
Description:
Draws a path of the given gesture on the screen.
To configure the colour and width of the line, you MUST use first gr_draw_config
.
Syntax:
gr_draw_record(record);
| Argument name | Type | Description |
|---|---|---|
| record | Record | The record to draw |
Description:
Draws a path of the given gesture record on the screen
To configure the colour and width of the line, you MUST use first gr_draw_config
.
Syntax:
gr_draw_config(width, color, round_corners);
| Argument name | Type | Description |
|---|---|---|
| width | real | The width of the stroke |
| color | real | THe color of the stroke |
| round_corners | boolean | If true, the drawing methods will use circles to create a round corners effect |
Description:
Configure the width, color and corners mode of the another gr_draw_
methods.
You MUST call this before calling any other method since there is no default value for the width, color and corners.
Syntax:
gr_record_create();
Returns: (Record) The new record instance
Description:
Creates a new record instance. A record, represents a User recorded gesture. Is composed by a set of points. The points are usually captured using a mouse, touchscreen, or another input device and then are shown on the screen. One record, can have multiple strokes. At least one stroke with two points are needed to be able to recognize any gesture.
Example:
// create
record = undefined;
// global mouse presed event
gr_record_destroy(record); // Destroy the previous gesture record
record = gr_record_create(); // And creates a new gesture record
// global mouse down event
if (record != undefined) {
gr_record_add_point(record, mouse_x, mouse_y);
}
// global mouse released event
if (record != undefined) {
result = gr_record_recognize(record);
// Then, do stuff with the result of the recognition
}
Syntax:
gr_record_destroy(record);
| Argument name | Type | Description |
|---|---|---|
| record | Record | The record to destroy |
Returns: (undefined) Returns undefined (see example to understand why)
Description:
gr_record_destroy(record);
Syntax:
gr_record_add_point(record, x, y, [stroke_number]);
| Argument name | Type | Description |
|---|---|---|
| record | Record | The record to add the point |
| x | real | The point x coordinate (usually, you want to use mouse_x) |
| y | real | The point y coordinate (usually, you want to use mouse_y) |
| stroke_number | integer | The stroke number, by default is stroke 0 |
Description:
gr_record_add_point(record, x, y, [stroke_number = 0]);
Syntax:
gr_record_draw( record, line_width, line_col, line_alpha, bullets_rad, bullets_col, bullets_alpha);
| Argument name | Type | Description |
|---|---|---|
| record | Record | The record you want to draw |
| line_width | real | The line width |
| line_col | color | The line color |
| line_alpha | real | The line alpha |
| bullets_rad | real | The radius of each bullet (vertex point) |
| bullets_col | color | The color of each bullet (vertex point) |
| bullets_alpha | real | The alpha of each bullet (vertex point) |
Returns: (nothing) Nothing
Description:
Draws a gesture record on the screen. You can choose your own line width, color and alpha.
Also, you can choose a radius, color and alpha to draw a circle or bullet in each vertex of the
recorded gesture.
This is a very simple code to draw the gesture, if you need a more advanced drawing, you can
use the functions gr_record_get_point
to iterate over the points of the recording and draw it yourself.
Syntax:
gr_record_points_number(record);
| Argument name | Type | Description |
|---|---|---|
| record | Record | The record |
Returns: (integer) The number of points on the record (for all strokes)
Description:
Get the number of points inside the gesture record (for all strokes)
Syntax:
gr_record_get_point(record, i);
| Argument name | Type | Description |
|---|---|---|
| record | Record | The record |
| i | integer | The point index |
Returns: (Point) The point number i inside the recording
Description:
Get the specified point in the specified gesture record.
You can use the gr_point
functions to get info about the point.
Example:
// This code will manually draw each point of the recorded gesture
var size = gr_record_points_number(record);
for (var i = 0; i < size; i++) {
var point = gr_record_get_point(record, i);
var xx = gr_point_get_x(point);
var yy = gr_point_get_y(point);
draw_circle(xx, yy, 3, false);
}
Syntax:
gr_record_recognize(record, [async]);
| Argument name | Type | Description |
|---|---|---|
| record | Record | The record object to recognize |
| async | boolean | If true, the recognition will be made asynchronous |
Returns: (Recognition) The recognition result object
Description:
Recognize the current record and return a Recognition result object. You must use the ´gr_recognition_*´ functions to get the available information about the result. The recognition process is made synchornously. It means, that if you have A LOT of templates to be recognized, this function can be slow and freeze the game. If notice that your game slows, then you need to use the async mode.
The async mode let you split the recognition process over multiple game frames (steps). To use the async mode, pass true as the second argument. To learn more about the async mode, check gr_recognition_async_process();
NOTE: The algorithm ussed was the $P algorithm. I (Javier "Ciberman" Mora) am not the creator of the $P algorithm. The gesture recognition engine for GMS2 is a rewrite for GMS of the $P algorithm with a lot of useful aditions. The algorithm itself is released under the "New BSD License". Check the script gr_license for more info.
WARNING: the passed record will be affected. So if you want to preserve the original point list, you must duplicate it first.


Welcome to In Uheart
Be shining ,Be strong
If you saw the darkness in front of you,don't be afraid,that's because sunshine is at your back
Welcome To In Uheart