Data Maven from Crunchzilla helps build an intuition
and spark a curiosity for statistics and data. At the end of
Data Maven, you'll not only know a bit about statistics, but
also maybe even start to think of statistics as fun!
It's more of a game than a tutorial. To play, you answer
questions and solve problems. Statistics is your tool, and data
provides your answers. Once you have the tools and know where to
look, you'll be ready to take on your own questions.
It's easy to play. Follow the instructions and do what
Data Maven says. Click on the words Data Maven is saying or the
Next button to go to the next lesson. Click on the Back button
to go back to a previous lesson. You can jump to a specific
lesson or back to the beginning using the "Lesson Sections"
link.
Data Maven saves what lesson you are on, so feel free
to stop at any time and come back later. As long as you come
back on the same browser on the same machine, you'll get back to
your lesson.
Try it out! You'll be surprised by how interesting and easy it can
be to answer questions using data and statistics. Have fun!
X
Jump to a Lesson Section
X
Frequently Asked Questions
What is this? What is Data Maven from Crunchzilla?
Data Maven is an interactive tutorial where you explore data and statistics.
So many people have tried to
learn about statistics, only to get bogged down in probability, theory, and math,
without feeling that they were able to do anything with it. Data Maven is
an intuitive game-like tutorial where you try answering questions with data and statistics.
The focus is on action. You answer questions, look at data, and discover how
to use statistics as your tool to do even more.
Why aren't you telling me all the details about statistics?
There are already a lot of tutorials and textbooks out
there that teach statistics with technical, in-depth
explanations of probability, sampling, confidence intervals,
distributions, hypothesis testing, regression, and so on. If
you want that, there are many choices available, many of which
are excellent supplements to Data Maven.
What is hard to find is a tutorial that is fun, immersive, and gets you immediately
working with lots of real data. Data Maven skips a lot of the explanation you
can get elsewhere and instead jumps straight into
what you can do with data and statistics.
By the time you finish Data Maven, you should be curious for
more. At the end, there is a list of other resources to go to to
learn more about statistics, data analysis, and data science.
Why doesn't this work perfectly on an iPad (or other mobile device)?
Data Maven will work and is playable on many mobile devices, but
it isn't designed for mobile. Why not?
Mostly because mobile screens are so small. It's hard to
read a lot on tiny mobile screens, even harder to see
detailed charts, and can even be a challenge to accurately
select the answer you want in the quizzes. Because of that,
Data Maven is designed to work on mobile, but not optimized
for mobile.
Data is plural, isn't it? Shouldn't you say "data are", not "data is"?
Data was originally the plural of datum. Years ago,
people did used to say "data are". Nowadays, the word datum is
rarely used, and the word data is treated as a mass noun similar
to the word information (e.g. "information is great and, golly
gee, data is too").
The Oxford English Dictionary states that data usually
takes a singular verb in current standard English. Most style
guides either favor "data is" or say either is acceptable. And,
"data are" sounds wrong to most younger people. So,
Data Maven from Crunchzilla uses "data is".
Where can I learn more about programming?
Code Maven is a fun way
to learn more about programming and Javascript.
There also are already a lot of tutorials and textbooks out on the Web that teach Javascript
programming, many of which are excellent supplements to Code Maven.
X
About
Data Maven from Crunchzilla is a combination of a game and tutorial
with a focus on action over explanation.
When you work through Data Maven, you dive right into playing
with data and statistics.
Statistics and data analysis are increasingly important
for people working in any field. But many people shy away from statistics,
thinking it is too difficult or too boring for them. Data Maven
demystifies statistics.
Data Maven is more of a game than a tutorial. To play,
you answer questions. Looking at data provides your answers.
Statistics will be your tool, showing you where to look. As you
answer questions, you'll discover new questions.
You'll learn more about how to answer questions. As
you play with Data Maven, you should start to have an intuition
and curiosity for answering questions using data and statistics.
Statistics and data analysis is like a superpower. When
you can use these tools, you can do more, learn more, and know
more. By the time you finish Data Maven, you'll find you too can use
data analysis and statistics to answer questions you have!
Data Maven from Crunchzilla is the fourth interactive
tutorial in the Crunchzilla series.
It was created by Geeky Ventures in Seattle, WA.
X
Terms of Use
"Data Maven" is a website provided by Geeky Ventures.
In order to use the Site, you must accept the terms set forth below.
If you are a minor, your parent or guardian must accept the terms and
full responsibility for your use of the website. THESE TERMS OF
SERVICE CONSTITUTE A BINDING LEGAL AGREEMENT BETWEEN YOU AND GEEKY
VENTURES. BY USING THE WEBSITE, YOU AGREE TO THESE TERMS.
The website HTML, text, images, audio, video, software or other
content that is made available on this website are the property of
Geeky Ventures or its content suppliers. Before you use this content
in some way please take care to ensure that you have the relevant
rights and permissions. You are welcome to display on your computer,
download, and print pages from this website for personal and educational
use only.
THE WEBSITE IS PROVIDED "AS IS".  Geeky Ventures disclaims all warranties, expressed or
implied, including without limitation, warranties of merchantability
and fitness of a particular purpose. Geeky Ventures disclaims
liability for any direct, indirect, incidental, special,
consequential, exemplary, punitive or other damages, or lost profits,
that may result directly or indirectly from the use of the
website. This includes, without limitation, any damage to computer
systems, hardware or software, loss of data, or any other performance
failures, any errors, bugs, viruses or other defects that result from,
or are associated with the use of this website.
Geeky Ventures may modify this agreement at any time, and such
modifications shall be effective immediately.
X
Privacy Policy
Data Maven is extremely protective of privacy. Data Maven
keeps almost no information about people who use the website.
Data Maven does not require registration. It does not have
your e-mail address. It does not know who you are. When you
use Data Maven, you are essentially anonymous.
Data Maven does not use cookies. If you leave the website and
come back, there is a feature that will get you back to the
lesson you were on. That does not use cookies. It is done
using HTML5 Local Storage, which stores data on your machine,
not remotely on the webservers. Data Maven does not even know
what lesson you were on or how many lessons people using
Data Maven have completed, and it is a bit of a shame that we do
not (we love data), but that is how seriously we take privacy.
Like nearly all websites, Data Maven has web server logs that
may contain the IP address used to access the web server. That
is standard in nearly all webservers and not an attempt at data
collection.
In keeping with standard language in privacy policies,
personally identifiable information will not be disclosed to a
third party unless required by law and we may update this policy
from time to time at our sole discretion.
We are very protective of your privacy. We like it that way.
X
Contact
Data Maven can be reached at<EMAIL_ADDRESS>Data Maven would love to hear your suggestions for how she can
teach better. Data Maven doesn't like complaints, but you can send
them to her too, and she will get very sad.
Data Maven from Crunchzilla is a product of Geeky Ventures.
Geeky Ventures is based in Seattle, WA.
X
Old Browser Warning
Oh my. Data Maven does not like your web browser. Your browser
is really old. You need a new web browser.
Data Maven likes Chrome
and Firefox. You can
play with Data Maven if you have those. Go get them and let's play!
Data Maven uses modern web features such as SVG and animations
for the charts and graphics. Modern browsers support those, but
some older browsers such as Internet Explorer 8 on Windows XP and older
mobile devices will not be able to play. You can play if you
install Chrome or Firefox or if you use a different computer
or device.


{% extends "horizon/common/_modal_form.html" %} {% load i18n %} {% block modal-body-right %}
{% blocktrans %}
Run the diagnostic test on all registered Nova nodes. The test will verify
required software is installed on the system.
Warning - these tests may take several minutes to complete.
{% endblocktrans %}


Special Sauce is crawling with trichomes, bursting with zesty lemon flavor, and melting with a smoky, oily aroma. Our Special Sauce smokable hemp flower is 100% organic, offering mental sharpness and increased sociability.
Those who have purchased Special Sauce praise the exemplary experience it provides. With a sweet pine scent accented by hints of fresh fruit and an earthy finish, Special Sauce is a taster’s choice that’s ideal for any social engagement.


DfE enquiries
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Press release
This year 88% of families got a place at their first choice primary school and 85% were offered one at their first choice secondary.
Official statistics published today (24 June 2014) by the Department for Education show that 546,000 (88%) families in England received a place at their first choice of primary school this year, while at secondary level over 444,000 (85%) were offered a place at their first choice school.
A Department for Education spokesperson said:
Ensuring enough school places for the growing population is one of our top priorities. That is why we have more than doubled to £5 billion the funding available to councils to create new school places, and are allowing good schools to expand without the restrictions and bureaucracy they faced in the past.
This has already led to the creation of 260,000 new school places across the country. Thanks to our reforms, the number of children in failing secondary schools has already fallen by a quarter of a million since 2010.
Overall there were more than 623,000 applications for primary school places and over 521,000 for secondary places. Almost 96% of families received a place at 1 of their top 3 preferred primary or secondary schools this year.
Today’s figures show that:
Primary National Offer Day was Wednesday 16 April, when families of 623,526 pupils received the results of their application for a primary school place.
Secondary National Offer Day was Monday 3 March, when families of 521,274 pupils received the results of their application for a secondary school place. Historic data for secondary schools is set out in the table below.
| 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | |
|---|---|---|---|---|---|---|---|
| Number of applications received | 568,723 | 546,744 | 529,645 | 512,193 | 503,734 | 499,968 | 521,274 |
| Percentage offered a place at their highest preference school | 82.0 | 83.2 | 83.2 | 84.6 | 85.3 | 86.7 | 85.2 |
| Percentage offered a place at their second preference school | 8.7 | 8.4 | 8.6 | 8.1 | 7.8 | 7.4 | 7.7 |
| Percentage offered a place at their third preference school | 3.3 | 3.1 | 3.1 | 2.9 | 2.8 | 2.4 | 2.5 |
| Percentage offered a place at their first, second or third preference school | 94.0 | 94.6 | 94.9 | 95.6 | 95.9 | 96.5 | 95.5 |
| Percentage offered a place at a preferred school | 95.6 | 96.2 | 96.6 | 97.2 | 97.6 | 97.8 | 96.8 |
This year we are collecting data on school choices at school level for the first time. This will be published in October 2014.
Nearly 80% of new primary places created are in good or outstanding schools under this government.
Councils are on track towards creating enough places for September, with 212,000 new primary places created between May 2010 and May 2013.
We are building or improving the condition of almost 900 schools in this parliament. This includes:
By contrast the last government began rebuilding or improving the condition of only 389 schools under Building Schools for the Future ( BSF ). The 900 school building projects approved by the coalition is central government’s largest contribution to the school estate in decades.
We set up the Priority School Building Programme to address the condition of the schools most in need of urgent repair. Through the PSBP , 261 schools will be rebuilt or have their condition needs met.
As part of the PSBP all schools will be delivered by the end of 2017 - 2 years earlier than originally planned. Given the success of the PSBP , ministers have also recently announced a second phase of the programme, worth around £2 billion.
We are building schools all at a fraction of the cost of the former government’s Building Schools for the Future programme. It was an expensive and wasteful programme that did not prioritise the most dilapidated schools.
We are providing £150 million to improve school kitchens and dining facilities as part of the introduction of universal infant free school meals.
Over the spending review period, the total capital made available for investment in schools in England will be about £18 billion.
We have opened 174 free schools which when full will provide around 80,000 places. All free schools are meeting parental demand for new schools and 7 in 10 free schools are in areas facing a shortage of school places.
The average £6.6 million cost of a free school is much smaller than the average £25 million cost for the last government’s Building Schools for the Future programme.
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Published: 24 June 2014
From: Department for Education
Part of: School building and maintenance


Image credit: https://i.ytimg.com/vi/MCOeKbNYbGU/maxresdefault.jpg
Image credit: http://media.salon.com/2011/09/school_its_way_more_boring_than_when_you_were_there-460x307.jpg
Image credit: https://rocketpoobabygrins.files.wordpress.com/2013/02/playdough3.jpg
“[Science] is more than a school subject, or the periodic table, or the properties of waves. It is an approach to the world, a critical way to understand and explore and engage with the world, and then have the capacity to change that world..."
— President Barack Obama, March 23, 2015 (https://www.ed.gov/Stem)
Image credit: https://upload.wikimedia.org/wikipedia/commons/8/8d/President_Barack_Obama.jpg


ABACUS Committee 2019-2020
Executive Committee
Viola Pu Ruohan - President
Mary Lu - Vice-President
Jong-Ihn Chung - Treasurer
Maggie Zhang - Secretary
Shing Hei Lee - Entertainment
Kimberley Wang - External
Georgia Hui - Publicity
ABACUS Committee 2018-2019
Executive Committee
Selina Summers - President
Liam Grant - Vice-President
Sarah Ding - Treasurer
Echo Wang - Secretary
Frederick Cheng - Entertainment
Nancy Ni - External
Yi Song - Publicity
ABACUS Committee 2017-2018
Executive Committee
Chloe Huang - President
Owen Chen - Vice-President
Abigail Qin - Treasurer
Oliver Black - Secretary
Tianyu Wang - Entertainment
Edward Rong - External
General Committee
Kate Narciso - Garden Party Coordinator
Olivia Howard - Freshers’ Fair Coordinator
ABACUS Committee 2016-2017
Executive Committee
Peter Choy – Secretary<EMAIL_ADDRESS>St John’s College, Mathematics
Vicky Kwok – Events Officer<EMAIL_ADDRESS>Clare College, Veterinary Medicine
Yue Wu – External Officer<EMAIL_ADDRESS>Murray Edwards College, Medicine
Anna He – Treasurer<EMAIL_ADDRESS>Pembroke College, Economics
Vincent Hao – Publicity Officer<EMAIL_ADDRESS>Clare College, Economics
Lana Huang – President<EMAIL_ADDRESS>Emmanuel College, Medicine
Viggy Rajesh – Vice President<EMAIL_ADDRESS>St John’s College, Economics
General Committee
Olivia Fan Yun Howard – Media Officer<EMAIL_ADDRESS>Newnham College, Engineering
ABACUS Committee 2015-2016
Executive Committee
Lucy Zhuang – President<EMAIL_ADDRESS>Selwyn College, Economics
Yang-Fan Zhou – Vice President<EMAIL_ADDRESS>Churchill College, Chemical Engineering
Rachel Wong – Treasurer<EMAIL_ADDRESS>Trinity College, Mathematics
Angela Lam – Secretary<EMAIL_ADDRESS>Murray Edwards College, Medicine
Mikey Zhao – Events Officer<EMAIL_ADDRESS>Downing College, Engineering
Fiona Lin – External Officer<EMAIL_ADDRESS>Queens’ College, Law
Kevin Pan – Publicity Officer<EMAIL_ADDRESS>Gonville and Caius College, Mathematics
General Committee
Eileen Chen
Nancy Fu
Olivia Howard
Lana Huang
Akuan Liu
Zander Spiller (Media Officer)
Lindi Wang
Maria Wang
Chuyi Yang
Jonathan Zheng
ABACUS Committee 2014-2015
Executive Committee
Lindi Wang – President<EMAIL_ADDRESS>Trinity College, Law
Whitney Hu – Vice President<EMAIL_ADDRESS>Churchill College, Engineering
Chuyi Yang – Treasurer<EMAIL_ADDRESS>Trinity College, Mathematics
Zhilin Jiang – Secretary<EMAIL_ADDRESS>Gonville and Caius, Medicine
Paul Tao – Events Officer<EMAIL_ADDRESS>Trinity College, Natural Sciences
Terence Yuan – External Officer<EMAIL_ADDRESS>Trinity College, Physics
Jennifer Zheng – Publicity Officer<EMAIL_ADDRESS>St. John’s College, Medicine
General Committee
Tim Large
Neptune Jin
Kelly Wan
Nick Niem
Jack Smith
Jean Yang
Irene Li
ABACUS Committee 2013-2014
Executive Committee
Vincent Cheung- President<EMAIL_ADDRESS>Queens’ College, Mathematics
Kelly Wan – Vice President<EMAIL_ADDRESS>King’s College, Economics
Nancy Zheng – Secretary<EMAIL_ADDRESS>Sidney Sussex, Medicine
Zhaoxin Wang – Treasurer<EMAIL_ADDRESS>St John’s College, Mathematics
Jamu Zhao – Events Officer<EMAIL_ADDRESS>Churchill College, Natural Sciences
Adrian Lau – External Officer<EMAIL_ADDRESS>Robinson College, Architecture
Nicholas Niem – Publicity Officer<EMAIL_ADDRESS>Homerton College, Engineering
ABACUS Committee 2012-2013
Executive Committee
[Back L-R: Shang-Wei, Logan, Andi]
[Front L-R: Shan, Christina, Tianqi, Julianna]
Julianna Yau – President<EMAIL_ADDRESS>Peterhouse College, Mathematics
Logan Sun – Vice President<EMAIL_ADDRESS>Clare College, Medicine
Shan Yang – Secretary<EMAIL_ADDRESS>Trinity College, Law
Andi Wang – Treasurer<EMAIL_ADDRESS>St John’s College, Mathematics
Tianqi Wang – Events Officer<EMAIL_ADDRESS>Trinity College, Economics
Christina Ye – External Officer<EMAIL_ADDRESS>Jesus College, Medicine
Shang-Wei Ye – Publicity Officer<EMAIL_ADDRESS>Jesus College, Natural Sciences
General Committee
Charles Shen
Christian Ku
Darren Xu
Jiedi Lei
Kim Liu
Lois Liao
Nelson Tang
Weiye Yang
Yuming Mei
Yuhan Gao
ABACUS Committee 2011-2012
Executive Committee
[L-R: Yuhan, Stephanie, Laurence, Charisa, Yuming, Karen]
Charisa Yeung – President<EMAIL_ADDRESS>St John’s College, History
Stephanie Ng – Secretary<EMAIL_ADDRESS>Robinson College, Law
Yuhan Gao – Treasurer<EMAIL_ADDRESS>Trinity College, Mathematics
Laurence Gribble – Events Officer<EMAIL_ADDRESS>Trinity College, Chinese Studies
Yuming Mei – External Officer<EMAIL_ADDRESS>Emmanuel College, Mathematics
Karen Xiong – Publicity Officer<EMAIL_ADDRESS>Trinity Hall College, Law
General Committee
Andy Tse
Charles Shen
Christian Ku
Darren Xu
Jiaxi Chen
Lois Liao
Weiye Yang
ABACUS Committee 2010-2011
Executive Committee
[L-R: Rui, Justine, Xinmei, Mary, Linda, Xun]
Mary Wang – President<EMAIL_ADDRESS>Trinity College, Economics
Linda Zhou – Secretary<EMAIL_ADDRESS>Newnham College, Economics
Rui Yang Ang – Junior Treasurer<EMAIL_ADDRESS>Emmanuel College, Economics
Xinmei Wang – Events Officer<EMAIL_ADDRESS>Trinity College, Economics
Xun Luo – External Officer<EMAIL_ADDRESS>Gonville and Caius College, Medicine
Justine Shek – Publicity Officer<EMAIL_ADDRESS>Robinson College, Engineering
General Committee
Chiwai Cheung
Charisa Yeung
Charmaine Law
Ryota Nishikawa
Andy Tse
Bryan Sin
Duncan Goudie
Yufan Zhao
ABACUS Committee 2009-2010
Executive Committee
[L-R: Annie, Sean, Tony, Harry, Lynn, Yi]
Harry Huang – President
Tony Qin – Secretary
Lynn Kwo – Junior Treasurer
Annie He – Events Officer
Sean Lee Zheng – External Officer
Yi Luo – Publicity Officer
ABACUS Committee 2006-2007
Executive Committee
Ting Ting Zhang - President
Gonville and Caius College
Richard Chan-Pensley - Treasurer
Corpus Christi College
Di Wu - Secretary
Homerton College
Ken Zhang - Publicity Officer
Fitzwilliam College
Johanna Leung - External Officer
Christ's College
Michelle Ting - Events Officer
Newnham College
General Committee
CentCo Officer, Steph Rymer
CentCo Officer & Webmaster, Ling Ye, Churchill College
CentCo Officer & Fusion Editor, Xi-Lin Wu, Churchill College
ABACUS Committee 2005-2006
Executive Committee
Emily Chiu - President
New Hall
Howard Wong - Vice President & Treasurer
Cauis College
Keith Law - Secretary
Christ's College
Doron Seo - Events Officer
Queens' College
Emma Broom - Publicity Officer
St. Catharine's College
Jason Hu - External Officer
Robinson College
General Committee
CentCo Officer & Webmaster, Fang Lu, Robinson College
CentCo Officer, Stephanie Poon, Corpus Christi College
ABACUS Committee 2004-2005
Executive Committee
Haide Hong - President
Emmanuel College
Paul Nery - Vice President & External Officer
Churchill College
Tom Kwan - Treasurer
Churchill College
Jenn Tiu - Events Officer
Trinity Hall
Jennifer Ah-Kin - Secretary
Clare College
Vivienne Chan - Publicity Officer
Downing College
General Committee
CentCo Officer & Webmaster, Dickie Wong, Churchill College
ABACUS Committee 2003-2004
Executive Committee
Emily Tam - President
Newnham College
Vanessa Lee - Vice President & External Officer
Selwyn College
Jenny Stratton - Secretary
Newnham College
Jessica Tong - Events Officer
Newnham College
Tak Chai - Treasurer
Downing College
Suzana Lay - Publicity Officer
Selwyn College
General Committee
CentCo Officer and Webmaster, Christina Chen, Newnham College
ABACUS Committee 2002-2003
Executive Committee
Geoffrey Ho - President
Trinity College
Suzanne Ko - Vice President & Publicity Officer
Trinity College
Sze Kiu Yeung - Secretary
Homerton College
Qiang Yi - Treasurer
Queens' College
Emma Yeung - Events Officer
King's College
Mika Chan - External Officer
Homerton College
General Committee
CentCo Officer and Membership Secretary, Annie Lin, Selwyn College
CentCo Officer, Tin Yan Koo, New Hall College
CentCo Officer and Webmaster, KC Chan, Churchill College
ABACUS Committee 2001-2002
Executive Committee
Kelvin - President
Trinity College
Nathanael Au - Vice President
Homerton College
Elaine Lee - Treasurer
Queen's College
Yangyang Hou - Publicity Officer
Queen's College
Mary Koo - External Officer
Downing College
Qiang Kwong - Events Officer
Trinity Hall College
General Committee
CentCo Officer, Basil Lam, Magdalene College
CentCo Officer, Tak Chai, Magdalene College
CentCo Officer, Jon Grover, Trinity College
ABACUS Committee 2000-2001
Executive Committee
Sue May Tsui - President
Christ's College
Alvin Chuang - Acting President
Selwyn College
Chris Button - Vice President
Trinity College
Gary Chiang - Treasurer
Churchill College
Matt Pau - Secretary
Emmanual College
Adrian Li - Events Officer
Sidney Sussex College
Basil Lam - Publicity Officer
Magdalene College
General Committee
CentCo Officer, Jon Lau, Downing College


the quality of the code is not just in its execution, but also in its appearance
so it’s not directly about collaboration, efficiency
coding style is extremely personal, and everyone has their own preferred style
again, the text editor is enforcing
aspects of code style:
I liken the situation to a group of musicians trying to form a band. Each one comes in believing that their way of doing things is best (their “method” or “process”). The band will struggle so long as everyone is trying to do their own thing.
team communication!
makes errors obivous
and then at the end he states the tools
so:
these three aspects open the question of how one (or many, actually) negotiate these? what kind of rationale/solutions do they offer?


A beautiful & handcrafted monitor stand to reduce neck and eye strain.
Book-Mark
of $100,000 backed
total backers
days left
The Mastercraft Bamboo Monitor Riser is a sturdy and stylish platform that elevates your screen to a more comfortable viewing height. Placing your monitor at eye level has the potential to improve your posture and make you more comfortable while at work, helping you stay focused on the task at hand.
Featuring artisan craftsmanship, the simplicity of design creates extra desk space below your computer to allow notepads, pens, and USB sticks to be stored under the stand.
Pledge $25 or more
You get an ergonomic stand made of natural bamboo. You've helped us launch our promotional campaign, and you’ll be added to a special Backer member list.
Pledge $75 or more
You get a Black Special Edition computer stand and a personal thank you. You’ll be added to our Backer member list. Shipping is included.
Pledge $200 or more
You get two Special Edition Mahogany stands, a Backer T-Shirt, and a personal thank you. You’ll be added to our Backer member list. Shipping is included.
Want to support us in bringing Mastercraft Bamboo Monitor Riser out in the world?
You get two Special Edition Mahogany stands, a Backer T-Shirt, and a personal thank you. You’ll be added to our Backer member list. Shipping is included.
Your pledge brings us one step closer tosharing Mastercraft Bamboo Monitor Riser worldwide. You will get an email once our campaign is completed.
Got it


DS.JSONSerializer Class
In Ember Data a Serializer is used to serialize and deserialize records when they are transferred in and out of an external source. This process involves normalizing property names, transforming attribute values and serializing relationships.
For maximum performance Ember Data recommends you use the RESTSerializer or one of its subclasses.
JSONSerializer
is useful for simpler or legacy backends that may
not support the http://jsonapi.org/ spec.
Item Index
Methods
- _canSerialize
- _getMappedKey
- applyTransforms
- extract
- extractArray
- extractCreateRecord
- extractDeleteRecord
- extractFind
- extractFindAll
- extractFindBelongsTo
- extractFindHasMany
- extractFindMany
- extractFindQuery
- extractMeta
- extractSave
- extractSingle
- extractUpdateRecord
- keyForAttribute
- keyForRelationship
- normalize
- normalizeAttributes
- normalizeId
- normalizePayload
- normalizeRelationships
- normalizeUsingDeclaredMapping
- serialize
- serializeAttribute
- serializeBelongsTo
- serializeHasMany
- serializeIntoHash
- serializePolymorphicType
- transformFor
Properties
Methods
_canSerialize
-
key
Check attrs.key.serialize property to inform if the key
can be serialized
Parameters:
-
key
String
Returns:
true if the key can be serialized
_getMappedKey
-
key
Looks up the property key that was set by the custom attr
mapping
passed to the serializer.
Parameters:
-
key
String
Returns:
key
applyTransforms
-
type
-
data
Given a subclass of DS.Model
and a JSON object this method will
iterate through each attribute of the DS.Model
and invoke the
DS.Transform#deserialize
method on the matching property of the
JSON object. This method is typically called after the
serializer's normalize
method.
Parameters:
-
type
subclass of DS.Model -
data
ObjectThe data to transform
Returns:
data The transformed data object
extract
-
store
-
type
-
payload
-
id
-
requestType
The extract
method is used to deserialize payload data from the
server. By default the JSONSerializer
does not push the records
into the store. However records that subclass JSONSerializer
such as the RESTSerializer
may push records into the store as
part of the extract call.
This method delegates to a more specific extract method based on
the requestType
.
Example
var get = Ember.get;
socket.on('message', function(message) {
var modelName = message.model;
var data = message.data;
var type = store.modelFor(modelName);
var serializer = store.serializerFor(type.typeKey);
var record = serializer.extract(store, type, data, get(data, 'id'), 'single');
store.push(modelName, record);
});
Parameters:
Returns:
json The deserialized payload
extractArray
-
store
-
type
-
payload
-
id
-
requestType
extractArray
is used to deserialize an array of records
returned from the adapter.
Example
App.PostSerializer = DS.JSONSerializer.extend({
extractArray: function(store, type, payload) {
return payload.map(function(json) {
return this.extractSingle(store, type, json);
}, this);
}
});
Parameters:
Returns:
array An array of deserialized objects
extractCreateRecord
-
store
-
type
-
payload
-
id
-
requestType
extractCreateRecord
is a hook into the extract method used when a
call is made to DS.Store#createRecord
. By default this method is
alias for extractSave.
Parameters:
Returns:
json The deserialized payload
extractDeleteRecord
-
store
-
type
-
payload
-
id
-
requestType
extractDeleteRecord
is a hook into the extract method used when
a call is made to DS.Store#deleteRecord
. By default this method is
alias for extractSave.
Parameters:
Returns:
json The deserialized payload
extractFind
-
store
-
type
-
payload
-
id
-
requestType
extractFind
is a hook into the extract method used when
a call is made to DS.Store#find
. By default this method is
alias for extractSingle.
Parameters:
Returns:
json The deserialized payload
extractFindAll
-
store
-
type
-
payload
-
id
-
requestType
extractFindAll
is a hook into the extract method used when a
call is made to DS.Store#findAll
. By default this method is an
alias for extractArray.
Parameters:
Returns:
array An array of deserialized objects
extractFindBelongsTo
-
store
-
type
-
payload
-
id
-
requestType
extractFindBelongsTo
is a hook into the extract method used when
a call is made to DS.Store#findBelongsTo
. By default this method is
alias for extractSingle.
Parameters:
Returns:
json The deserialized payload
extractFindHasMany
-
store
-
type
-
payload
-
id
-
requestType
extractFindHasMany
is a hook into the extract method used when a
call is made to DS.Store#findHasMany
. By default this method is
alias for extractArray.
Parameters:
Returns:
array An array of deserialized objects
extractFindMany
-
store
-
type
-
payload
-
id
-
requestType
extractFindMany
is a hook into the extract method used when a
call is made to DS.Store#findMany
. By default this method is
alias for extractArray.
Parameters:
Returns:
array An array of deserialized objects
extractFindQuery
-
store
-
type
-
payload
-
id
-
requestType
extractFindQuery
is a hook into the extract method used when a
call is made to DS.Store#findQuery
. By default this method is an
alias for extractArray.
Parameters:
Returns:
array An array of deserialized objects
extractMeta
-
store
-
type
-
payload
extractMeta
is used to deserialize any meta information in the
adapter payload. By default Ember Data expects meta information to
be located on the meta
property of the payload object.
Example
App.PostSerializer = DS.JSONSerializer.extend({
extractMeta: function(store, type, payload) {
if (payload && payload._pagination) {
store.metaForType(type, payload._pagination);
delete payload._pagination;
}
}
});
extractSave
-
store
-
type
-
payload
-
id
-
requestType
extractSave
is a hook into the extract method used when a call
is made to DS.Model#save
. By default this method is alias
for extractSingle.
Parameters:
Returns:
json The deserialized payload
extractSingle
-
store
-
type
-
payload
-
id
-
requestType
extractSingle
is used to deserialize a single record returned
from the adapter.
Example
App.PostSerializer = DS.JSONSerializer.extend({
extractSingle: function(store, type, payload) {
payload.comments = payload._embedded.comment;
delete payload._embedded;
return this._super(store, type, payload);
},
});
Parameters:
Returns:
json The deserialized payload
extractUpdateRecord
-
store
-
type
-
payload
-
id
-
requestType
extractUpdateRecord
is a hook into the extract method used when
a call is made to DS.Store#update
. By default this method is alias
for extractSave.
Parameters:
Returns:
json The deserialized payload
keyForAttribute
-
key
keyForAttribute
can be used to define rules for how to convert an
attribute name in your model to a key in your JSON.
Example
App.ApplicationSerializer = DS.RESTSerializer.extend({
keyForAttribute: function(attr) {
return Ember.String.underscore(attr).toUpperCase();
}
});
Parameters:
-
key
String
Returns:
normalized key
keyForRelationship
-
key
-
relationship
keyForRelationship
can be used to define a custom key when
serializing relationship properties. By default JSONSerializer
does not provide an implementation of this method.
Example
App.PostSerializer = DS.JSONSerializer.extend({
keyForRelationship: function(key, relationship) {
return 'rel_' + Ember.String.underscore(key);
}
});
Returns:
normalized key
normalize
-
type
-
hash
Normalizes a part of the JSON payload returned by the server. You should override this method, munge the hash and call super if you have generic normalization to do.
It takes the type of the record that is being normalized (as a DS.Model class), the property where the hash was originally found, and the hash to normalize.
You can use this method, for example, to normalize underscored keys to camelized or other general-purpose normalizations.
Example
App.ApplicationSerializer = DS.JSONSerializer.extend({
normalize: function(type, hash) {
var fields = Ember.get(type, 'fields');
fields.forEach(function(field) {
var payloadField = Ember.String.underscore(field);
if (field === payloadField) { return; }
hash[field] = hash[payloadField];
delete hash[payloadField];
});
return this._super.apply(this, arguments);
}
});
Parameters:
-
type
subclass of DS.Model -
hash
Object
Returns:
normalizeAttributes
()
private
normalizeId
()
private
normalizePayload
-
payload
You can use this method to normalize all payloads, regardless of whether they represent single records or an array.
For example, you might want to remove some extraneous data from the payload:
App.ApplicationSerializer = DS.JSONSerializer.extend({
normalizePayload: function(payload) {
delete payload.version;
delete payload.status;
return payload;
}
});
Parameters:
-
payload
Object
Returns:
the normalized payload
normalizeRelationships
()
private
normalizeUsingDeclaredMapping
()
private
serialize
-
record
-
options
Called when a record is saved in order to convert the record into JSON.
By default, it creates a JSON object with a key for each attribute and belongsTo relationship.
For example, consider this model:
App.Comment = DS.Model.extend({
title: DS.attr(),
body: DS.attr(),
author: DS.belongsTo('user')
});
The default serialization would create a JSON object like:
{
"title": "Rails is unagi",
"body": "Rails? Omakase? O_O",
"author": 12
}
By default, attributes are passed through as-is, unless
you specified an attribute type (DS.attr('date')
). If
you specify a transform, the JavaScript value will be
serialized when inserted into the JSON hash.
By default, belongs-to relationships are converted into IDs when inserted into the JSON hash.
IDs
serialize
takes an options hash with a single option:
includeId
. If this option is true
, serialize
will,
by default include the ID in the JSON object it builds.
The adapter passes in includeId: true
when serializing
a record for createRecord
, but not for updateRecord
.
Customization
Your server may expect a different JSON format than the built-in serialization format.
In that case, you can implement serialize
yourself and
return a JSON hash of your choosing.
App.PostSerializer = DS.JSONSerializer.extend({
serialize: function(post, options) {
var json = {
POST_TTL: post.get('title'),
POST_BDY: post.get('body'),
POST_CMS: post.get('comments').mapBy('id')
}
if (options.includeId) {
json.POST_ID_ = post.get('id');
}
return json;
}
});
Customizing an App-Wide Serializer
If you want to define a serializer for your entire
application, you'll probably want to use eachAttribute
and eachRelationship
on the record.
App.ApplicationSerializer = DS.JSONSerializer.extend({
serialize: function(record, options) {
var json = {};
record.eachAttribute(function(name) {
json[serverAttributeName(name)] = record.get(name);
})
record.eachRelationship(function(name, relationship) {
if (relationship.kind === 'hasMany') {
json[serverHasManyName(name)] = record.get(name).mapBy('id');
}
});
if (options.includeId) {
json.ID_ = record.get('id');
}
return json;
}
});
function serverAttributeName(attribute) {
return attribute.underscore().toUpperCase();
}
function serverHasManyName(name) {
return serverAttributeName(name.singularize()) + "_IDS";
}
This serializer will generate JSON that looks like this:
{
"TITLE": "Rails is omakase",
"BODY": "Yep. Omakase.",
"COMMENT_IDS": [ 1, 2, 3 ]
}
Tweaking the Default JSON
If you just want to do some small tweaks on the default JSON, you can call super first and make the tweaks on the returned JSON.
App.PostSerializer = DS.JSONSerializer.extend({
serialize: function(record, options) {
var json = this._super.apply(this, arguments);
json.subject = json.title;
delete json.title;
return json;
}
});
Parameters:
-
record
subclass of DS.Model -
options
Object
Returns:
json
serializeAttribute
-
record
-
json
-
key
-
attribute
serializeAttribute
can be used to customize how DS.attr
properties are serialized
For example if you wanted to ensure all your attributes were always
serialized as properties on an attributes
object you could
write:
App.ApplicationSerializer = DS.JSONSerializer.extend({
serializeAttribute: function(record, json, key, attributes) {
json.attributes = json.attributes || {};
this._super(record, json.attributes, key, attributes);
}
});
serializeBelongsTo
-
record
-
json
-
relationship
serializeBelongsTo
can be used to customize how DS.belongsTo
properties are serialized.
Example
App.PostSerializer = DS.JSONSerializer.extend({
serializeBelongsTo: function(record, json, relationship) {
var key = relationship.key;
var belongsTo = get(record, key);
key = this.keyForRelationship ? this.keyForRelationship(key, "belongsTo") : key;
json[key] = Ember.isNone(belongsTo) ? belongsTo : belongsTo.toJSON();
}
});
serializeHasMany
-
record
-
json
-
relationship
serializeHasMany
can be used to customize how DS.hasMany
properties are serialized.
Example
App.PostSerializer = DS.JSONSerializer.extend({
serializeHasMany: function(record, json, relationship) {
var key = relationship.key;
if (key === 'comments') {
return;
} else {
this._super.apply(this, arguments);
}
}
});
serializeIntoHash
-
hash
-
type
-
record
-
options
You can use this method to customize how a serialized record is added to the complete JSON hash to be sent to the server. By default the JSON Serializer does not namespace the payload and just sends the raw serialized JSON object. If your server expects namespaced keys, you should consider using the RESTSerializer. Otherwise you can override this method to customize how the record is added to the hash.
For example, your server may expect underscored root objects.
App.ApplicationSerializer = DS.RESTSerializer.extend({
serializeIntoHash: function(data, type, record, options) {
var root = Ember.String.decamelize(type.typeKey);
data[root] = this.serialize(record, options);
}
});
serializePolymorphicType
-
record
-
json
-
relationship
You can use this method to customize how polymorphic objects are
serialized. Objects are considered to be polymorphic if
{polymorphic: true}
is pass as the second argument to the
DS.belongsTo
function.
Example
App.CommentSerializer = DS.JSONSerializer.extend({
serializePolymorphicType: function(record, json, relationship) {
var key = relationship.key,
belongsTo = get(record, key);
key = this.keyForAttribute ? this.keyForAttribute(key) : key;
if (Ember.isNone(belongsTo)) {
json[key + "_type"] = null;
} else {
json[key + "_type"] = belongsTo.constructor.typeKey;
}
}
});
`
Properties
attrs
Object
The attrs
object can be used to declare a simple mapping between
property names on DS.Model
records and payload keys in the
serialized JSON object representing the record. An object with the
property key
can also be used to designate the attribute's key on
the response payload.
Example
App.Person = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
occupation: DS.attr('string'),
admin: DS.attr('boolean')
});
App.PersonSerializer = DS.JSONSerializer.extend({
attrs: {
admin: 'is_admin',
occupation: {key: 'career'}
}
});
You can also remove attributes by setting the serialize
key to
false in your mapping object.
Example
App.PersonSerializer = DS.JSONSerializer.extend({
attrs: {
admin: {serialize: false},
occupation: {key: 'career'}
}
});
When serialized:
{
"career": "magician"
}
Note that the admin
is now not included in the payload.
primaryKey
String
The primaryKey is used when serializing and deserializing
data. Ember Data always uses the id
property to store the id of
the record. The external source may not always follow this
convention. In these cases it is useful to override the
primaryKey property to match the primaryKey of your external
store.
Example
App.ApplicationSerializer = DS.JSONSerializer.extend({
primaryKey: '_id'
});
Default: 'id'


Furniture Store
Dashboard
Create Furniture
My Publications
Logout
Edit Furniture
Please fill all fields.
Make
Model
Year
Description
Price
Image
Material (optional)


{{site.user_description}}
Computer Science
Master degree
@Utsunomiya University
Computer Science
Bachelor degree
@Utsunomiya University
Information Technology
Associate Degree
@Kushiro College
Event Planning / Organizing
Web Development
English & Japanese & Mongolian
Talking with people
Solving Sudoku Puzzle
Running


Created by Seth Juarez / @sethjuarez
Overview
Elements of a Great Story
Source: Archway Publishing
main character, hero, lead - clearly defined inward and outward goals
who/what is the hero of your presentation?
the villain, main opposition - creates an engine that drives forward a story
who/what is the villain of your presentation?
the bit that sets your story in motion - hero and villain introduced, exposition of main problem
what does that look like in a technical presentation?
turmoil, challenge, quest, mystery, struggle - creates drama, drives characters, moves story
what does that look like in a technical presentation?
ending - success, solution
what does that look like in a technical presentation?
Structure of a Great Story
Source: Wikipedia: Dramatic Structure
the main message your story is meant to convey; theme
this should be written down
be smart about this:
On to Presentation Mechanics


The AgoraRtmDelegate protocol enables Agora RTM callback event notifications to your app.
More...
#import <AgoraRtmKit.h>
The AgoraRtmDelegate protocol enables Agora RTM callback event notifications to your app.
◆ rtmKit:connectionStateChanged:reason: [1/2]
| - (void) rtmKit: |
|
(AgoraRtmKit *_Nonnull) |
kit |
| connectionStateChanged: |
|
(AgoraRtmConnectionState) |
state |
| reason: |
|
(AgoraRtmConnectionChangeReason) |
reason |
|
|
| |
|
optional |
Occurs when the connection state between the SDK and the Agora RTM system changes.
- Parameters
-
| kit | An [AgoraRtmKit](AgoraRtmKit) instance. |
| state | The new connection state. See AgoraRtmConnectionState. |
| reason | The reason for the connection state change. See AgoraRtmConnectionChangeReason. |
◆ rtmKit:connectionStateChanged:reason: [2/2]
| - (void) rtmKit: |
|
(AgoraRtmKit *_Nonnull) |
kit |
| connectionStateChanged: |
|
(AgoraRtmConnectionState) |
state |
| reason: |
|
(AgoraRtmConnectionChangeReason) |
reason |
|
|
| |
|
optional |
Occurs when the connection state between the SDK and the Agora RTM system changes.
- Parameters
-
| kit | An [AgoraRtmKit](AgoraRtmKit) instance. |
| state | The new connection state. See AgoraRtmConnectionState. |
| reason | The reason for the connection state change. See AgoraRtmConnectionChangeReason. |
◆ rtmKit:messageReceived:fromPeer: [1/2]
| - (void) rtmKit: |
|
(AgoraRtmKit *_Nonnull) |
kit |
| messageReceived: |
|
(AgoraRtmMessage *_Nonnull) |
message |
| fromPeer: |
|
(NSString *_Nonnull) |
peerId |
|
|
| |
|
optional |
Occurs when the local user receives a peer-to-peer message.
- Parameters
-
| kit | An [AgoraRtmKit](AgoraRtmKit) instance. |
| message | The received message. |
NOTE** Ensure that you check the type
property when receiving the message instance: If the message type is AgoraRtmMessageTypeRaw
, you need to downcast the received instance from AgoraRtmMessage to AgoraRtmRawMessage. See AgoraRtmMessageType.
- Parameters
-
| peerId | The user ID of the sender. |
◆ rtmKit:messageReceived:fromPeer: [2/2]
| - (void) rtmKit: |
|
(AgoraRtmKit *_Nonnull) |
kit |
| messageReceived: |
|
(AgoraRtmMessage *_Nonnull) |
message |
| fromPeer: |
|
(NSString *_Nonnull) |
peerId |
|
|
| |
|
optional |
Occurs when the local user receives a peer-to-peer message.
- Parameters
-
| kit | An [AgoraRtmKit](AgoraRtmKit) instance. |
| message | The received message. |
NOTE** Ensure that you check the type
property when receiving the message instance: If the message type is AgoraRtmMessageTypeRaw
, you need to downcast the received instance from AgoraRtmMessage to AgoraRtmRawMessage. See AgoraRtmMessageType.
- Parameters
-
| peerId | The user ID of the sender. |
◆ rtmKit:PeersOnlineStatusChanged: [1/2]
| - (void) rtmKit: |
|
(AgoraRtmKit *_Nonnull) |
kit |
| PeersOnlineStatusChanged: |
|
(NSArray< AgoraRtmPeerOnlineStatus * > *_Nonnull) |
onlineStatus |
|
|
| |
|
optional |
Occurs when the online status of the peers, to whom you subscribe, changes.
- When the subscription to the online status of specified peer(s) succeeds, the SDK returns this callback to report the online status of peers, to whom you subscribe.
- When the online status of the peers, to whom you subscribe, changes, the SDK returns this callback to report whose online status has changed.
- If the online status of the peers, to whom you subscribe, changes when the SDK is reconnecting to the server, the SDK returns this callback to report whose online status has changed when successfully reconnecting to the server.
- Parameters
-
| kit | An [AgoraRtmKit](AgoraRtmKit) instance. |
| onlineStatus | An array of peers' online states. See AgoraRtmPeerOnlineStatus. |
◆ rtmKit:PeersOnlineStatusChanged: [2/2]
| - (void) rtmKit: |
|
(AgoraRtmKit *_Nonnull) |
kit |
| PeersOnlineStatusChanged: |
|
(NSArray< AgoraRtmPeerOnlineStatus * > *_Nonnull) |
onlineStatus |
|
|
| |
|
optional |
Occurs when the online status of the peers, to whom you subscribe, changes.
- When the subscription to the online status of specified peer(s) succeeds, the SDK returns this callback to report the online status of peers, to whom you subscribe.
- When the online status of the peers, to whom you subscribe, changes, the SDK returns this callback to report whose online status has changed.
- If the online status of the peers, to whom you subscribe, changes when the SDK is reconnecting to the server, the SDK returns this callback to report whose online status has changed when successfully reconnecting to the server.
- Parameters
-
| kit | An [AgoraRtmKit](AgoraRtmKit) instance. |
| onlineStatus | An array of peers' online states. See AgoraRtmPeerOnlineStatus. |
◆ rtmKitTokenDidExpire: [1/2]
| - (void) rtmKitTokenDidExpire: |
|
(AgoraRtmKit *_Nonnull) |
kit |
|
|
optional |
Occurs when the current RTM Token exceeds the 24-hour validity period.
This callback occurs when the current RTM Token exceeds the 24-hour validity period and reminds the user to renew it. When receiving this callback, generate a new RTM Token on the server and call the [renewToken]([AgoraRtmKit renewToken:completion:]) method to pass the new Token on to the server.
- Parameters
-
| kit | An AgoraRtmKit instance. |
◆ rtmKitTokenDidExpire: [2/2]
| - (void) rtmKitTokenDidExpire: |
|
(AgoraRtmKit *_Nonnull) |
kit |
|
|
optional |
Occurs when the current RTM Token exceeds the 24-hour validity period.
This callback occurs when the current RTM Token exceeds the 24-hour validity period and reminds the user to renew it. When receiving this callback, generate a new RTM Token on the server and call the [renewToken]([AgoraRtmKit renewToken:completion:]) method to pass the new Token on to the server.
- Parameters
-
| kit | An AgoraRtmKit instance. |
The documentation for this protocol was generated from the following file:
- D:/Agora/Unity-RTM/Assets/AgoraEngine/Plugins/iOS/AgoraRtmKit.framework/Headers/AgoraRtmKit.h


{% assign full_name = winner["Given_Names"] | append:" " | append:winner["Last_Name"] %} {% if winner["Nominated_Office"] == "Councillor" %} {% assign position_title = "Councillor for Ward " | append:winner["Ward"] %} {% elsif winner["Nominated_Office"] == "Regional Councillor" %} {% assign position_title = winner["Nominated_Office"] | append: " for " | append: winner["Ward"] %} {% else %} {% assign position_title = winner["Nominated_Office"] %} {% endif %}
{{ winner["Votes"] }} votes - {{ percentage }}


| Overview | Module | Use | Devguide | Index |
| Constants | Constants' Details |
| constants group ExtendedFilePickerElementIds |
|
| Constants' Details | |
CHECKBOX_AUTOEXTENSION
|
|
CHECKBOX_PASSWORD
|
|
CHECKBOX_FILTEROPTIONS
|
|
CHECKBOX_READONLY
|
|
CHECKBOX_LINK
|
|
CHECKBOX_PREVIEW
|
|
PUSHBUTTON_PLAY
|
|
LISTBOX_VERSION
|
|
LISTBOX_TEMPLATE
|
|
LISTBOX_IMAGE_TEMPLATE
|
|
CHECKBOX_SELECTION
|
|
LISTBOX_VERSION_LABEL
|
|
LISTBOX_TEMPLATE_LABEL
|
|
LISTBOX_IMAGE_TEMPLATE_LABEL
|
|
LISTBOX_FILTER_SELECTOR
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


|
Lashkar-e-JhangviThere's a commonly held belief that Wall Street Journal reporter Daniel Pearl was killed by al Qaeda, and that's more or less true.But it's also correct to say he was killed by Lashkar-e-Jhangvi, a Pakistani terrorist group. Not to mention the fact that it will give you instant and overwhelming dominance in dinner-party battles over current events savvy. Lashkar-e-Jhangvi, very roughly pronounced "LAH-SH-kah EYE ZHAH-ng-vee," is an ultraviolent group of Pakistani Islamic fundamentalists. LeJ was founded by a cabal which included Muhammad Ajmal and Haq Nawaz Jhangvi in 1996, because he thought that Pakistan's ultraviolent Sipah-e-Sahaba Pakistan wasn't ultraviolent enough. SSP (whose name roughly translates as "Guardians of the Friends of the Prophet") was a Saudi-funded terror group whose membership reputedly included Ramzi Yousef and Abu Musab al-Zarqawi. In 1994 and 1995, Yousef attempted to assassinate Pakistani Prime Minister Benazir Bhutto, quite possibly on behalf of the SSP, whose stated goal is to transform Pakistan into a Sunni Muslim state under the rule of sha'ria law. SSP and LeJ are Wahabbi-influenced Muslims who follow an obscure school of theology called Deobandi Islam. According to Deobandi Islam, the main problem afflicting the Muslim world is the corrupt and immoral Western influence, which therefore must be eradicated at all costs. Deobandi Muslims have more in common with the Taliban than the Saudis, however, and the Taliban's Dar-ul-Uloom University was a Deoband institution. After Yousef's arrest, SSP fractured into two groups, the violent one (which kept the name SSP) and the even more violent one, which took the name Lashkar-e-Jhangvi, which means "Army of Jhangvi." (Jhangvi himself was assassinated in 1990.) Authorities say that members of Lashkar-e-Jhangvi include Yousef's brother-in-law Daud Badini. Zarqawi is also thought to maintain links to the group. Lashkar-e-Jhangvi has ties to al Qaeda. Although the depth and breadth of those ties are unclear, a few solid facts tend to suggest the ties are close and deep. LeJ maintains a strong presence in Balochistan, the mostly lawless Pakistani province from whence hails Yousef, Badini and Yousef's uncle, Khalid Shaikh Mohammed. At the very least, KSM (al Qaeda's No. 3 commander at the time) enjoyed spending time with LeJ operatives while in Pakistan. Far more likely, he was giving them orders. In January 2002, well after the War on Terror was underway, Wall Street Journal reporter Daniel Pearl hit the streets of Karachi, working on an investigative story about Khalid, who was at the time the third-most wanted terrorist in the world with a $25 million bounty on his head. Pearl was lured into a trap, kidnapped and imprisoned. It's now believed that LeJ militants were responsible for this phase of the operation, including four who were arrested and convicted (three received life sentences). Two more LeJ operatives were secretly held in Karachi after the killing, and later accused of abetting the crime, which they said was committed by three unknown Arabs. By early 2003, at least one of the Arabs was known, and his name was Khalid Shaikh Mohammed. Overall, that adds up to an awful lot of organizational support from Lashkar-e-Jhangvi. Not to mention a high casualty count. Up to seven LeJ operatives are doing time for the murder. In a group that probably numbers less than 100, that's not small change. About the only person who isn't doing time for the murder is the actual murderer, KSM, who is rotting away in an "undisclosed location" receiving much the same treatment as the prisoners at Abu Ghraib. Maybe he wouldn't mind his day in court after all. While Lashkar-e-Jhangvi obviously takes some direction from al Qaeda, the group stays admirably focused on its home turf and its stated goal of radicalizing Pakistan. The stakes in that battle are far from parochial. In addition to its nuclear arsenal (yoiks!), Pakistan is a key strategic ally of the U.S. in its War on Terror (even though the Pakistani government has historically been one of the world's worst offenders as far as harboring and supporting terrorism). To accomplish its goals, LeJ has embarked on a campaign to foment revolution and eliminate its perceived rivals, which include especially Pakistan's significant Shi'a Muslim population. The group killed 25 Shi'a Muslims in 1998 and attempted to assassinate Prime Minister Nawaz Sharif in 1999. Among other things, LeJ is blamed for car bombings against U.S. interests, murdering U.S. oil workers and drive-by shootings of police cadets. In a videotape message made recently, LeJ claimed responsibility for a 2003 suicide attack against a Quetta mosque which killed 50 Shi'a. Pakistan's 151 million people are 97 percent Muslim. About 70 percent are Sunnis (including Lashkar-e-Jhangvi adherents) and about 20 percent (30 million people) are Shi'a. As you can see, there are still a lot of Shi'a to be killed. For a group with fewer that 100 members, divided into cells of five to 15 operatives, LeJ has a disproportionately high impact, mostly because of its effectiveness. It's not an accident that Ramzi Yousef's uncle and brother-in-law are members. LeJ members are hardened operatives, most of whom trained in Afghanistan. They're the most highly trained and vicious killers the world of terrorism has to offer. And LeJ's goal is relatively modest -- to overthrow an already unstable regime and make a country that's already 70% Sunni Muslim into a Sunni theocracy. The depressing truth is that they probably have a good shot at it.
|


respiratory HMPV patients mean RSV prevalence PIV RSV, human PIV, virus infection meteorological relative {border-style syncytial px;} #ffffff;} temperature Guangzhou age children hospitalized infections years Infect correlation acute humidity pathogens pediatric study []. correlated data metapneumovirus positive regression viruses distribution linear ARI China Mean Science analysis clinical conditions independent parainfluenza study, subtropical (Table Guangzhou, duration paramyxovirus sunshine tract (Fig. Fig. Respiratory climate factors features high lower peaks previous px; wind {font-family . ± . Multiple Technology associated collected common detected epidemics font-size negatively paramyxoviruses region seasonal similar viral (IQR, -year .–.), Dis./ Funding double; established illness median monthly pathogen performed pneumonia pressure reports results southern speed variables (p < .) (p < .). Clin Guangdong HMPV, July June Med Medical University, [], [–]. analyzed border-color border-width cause different important incidence included models nosocomial pattern samples solid; using value viruses, winter {font-style {font-weight (.%) (.%), (/) Affiliated Foundation Hospital Meteorological Microbiol National Natural Project Province activity aged analysis. appeared autumn bold childhood conducted coronavirus courier; em; enrolled especially frequently however, humidity, including infants months new pathogens. patterns positively preceding pt;} respectively. summer temperate temperature, tested turned variable virus, young − .


Leeds City Council Bill 2007-08 to 2012-13
- Type of Bill:
- Private Bill
- Parliamentary agents:
- Sharpe Pritchard
- Promoted by:
- Leeds City Council
- Petitioning period:
- Lords: 29.1.10 to 8.2.10Commons: 23.1.08 to 30.1.08
Progress of the Bill
Bill started in the House of Commons
- House of Commons
- House of Lords
- Royal Assent
Last event
- Committee stage: House of Lords | 24.11.2011
Latest Bill
| House | Bill | Date |
|---|---|---|
| Bill as amended in Committee | PDF version | 12.04.2012 |
Latest news on the Bill
Revival of the Bill - Both Houses had to consent in order for this Bill to continue its progress in the current Session of Parliament. The House of Lords agreed to the revival of the Bill on 21 May 2012. The House of Commons agreed to the revival of the Bill on 11 July 2012. It is expected that the Bill will go through the remaining formalities of the revival process in September and early October.
The Bill's next stage will then be a debate on Third Reading in the Chamber, for which no date has yet been set.
Petition information
If you are "specially and directly affected" by this bill you may oppose the bill or seek its amendment before a Select Committee in either or both Houses. If you present a "petition" against the bill at the appropriate times you may be able to have your views on the bill heard by the Committee (in whichever House you petition).There are specific times when petitions can be presented.
The petitioning period in the House of Commons ended on 30 January 2008.
The petitioning period in the House of Lords ended on 8 February 2010.
There will be no further opportunity to petition against the Bill in Parliament.
No petitions were deposited against the Bill in the House of Commons, 1 petition was deposited in the House of Lords. Petitions can be accessed from the "Bill documents" link on the left hand side of this webpage.
Summary of the Bill
The Bill (as originally introduced) makes provisions relating to street trading and consumer protection in the city, in particular by:
- allowing the Council to regulate services offered on the street as well as the sale of goods
- altering the exemption enjoyed by holders of a pedlar’s certificate from the street trading regime in the Local Government (Miscellaneous Provisions) Act 1982
- empowering council officers or the police to seize goods and equipment when they believe a street trading offence has been committed
- empowering courts to order the forfeiture of such articles
- enabling council officers to serve fixed penalty notices for street trading offences.
Stay up to date
Keep up to date with the progress of Bills going through Parliament. Sign up for email alerts or use our RSS feeds.
Related information
What is a Private Bill?
Find out how Private Bills change the law and who Private Bills affect.
Private Bill stages
Learn about the different stages of a Private Bill and how you can get involved.


Chapter 5 Connecting Programs and Compressing output
Now that we’ve been through the whole alignment and filtering pipeline, let’s look at the output. Specifically lets compare the sizes of the files we used. Recall that we can do that with ls -alh
On my folder I get this (some columns and files removed for clarity)
49M 29 Nov 10:46 aln.filtered.sam
59M 28 Nov 16:28 aln.sam
5.0M 2 Jul 15:04 ecoli_genome.fa
18M 28 Nov 15:53 ecoli_left_R1.fq
18M 28 Nov 15:53 ecoli_right_R2.fq
The file sizes are in the left-most column. Check out the relative size of the two read files (18M each) and the alignment SAM files (59M and 49M). The output file is much larger than the input. This has implications for storage when the files are really large (many GB) and there are lots of them. The disk space gets used really quickly. Consider also the redundancy we have - that aln.filtered.sam
is the one we’re interested in, not the aln.sam
so it is taking up unnecesary disk space. It’s easy to see that when you are doing a real experiment with lots of samples and hundreds of GB file size, you’re going to eat up disk space. Also larger files take longer to process, so you’re going to have a long wait. This has implications too when you get to later stages in the analysis
In this chapter we’re going to look at a technique for reducing those housekeeping overheads and speeding things up.
5.1 BAM Files
BAM files are a binary compressed version of SAM files. They contain identical information in a more computer friendly way. This means that people can’t read it, but it is rare in practice that you’ll directly read much of a SAM file with your own eyes. Let’s look at the command to do that
samtools view -S -b aln.filtered.sam > aln.filtered.bam
Again we’re using samtools view
and our options are -S
which means SAM format input and the new one is -b
means BAM format output. Our input file is aln.filtered
and we’re sending the output to aln.filtered.bam
.
If we check the files with ls -alh
now we get
9.2M 29 Nov 14:05 aln.filtered.bam
49M 29 Nov 10:46 aln.filtered.sam
59M 28 Nov 16:28 aln.sam
5.0M 2 Jul 15:04 ecoli_genome.fa
18M 28 Nov 15:53 ecoli_left_R1.fq
18M 28 Nov 15:53 ecoli_right_R2.fq
The BAM file is about a fifth of the size of the SAM file. So we can save space in this way. We have another trick up our sleeve though. We can connect together command lines, so that we don’t have to create intermediate files - this reduces the number of files we have to save. We can do this by using something called pipes.
5.2 Connecting Program Input and Output With Pipes
Most command line programs print their results straight out without sending it to a file. This seems strange, but it adds a lot of flexibility. If also set up our programs to read in this output then we can connect them together. We can do this with pipes. The usual way to do this is to use the |
operator. Let’s look at a common example.
Here we’ll use the command ls
and shuf
to see how this works. We know ls
will ‘list’ our directory contents, shuf
shuffles lines of text sent to it. If we use |
in between we can connect the output of one to the other. Try running ls
a couple of times to verify you get the same output both times and then try this
a few times
ls | shuf
you should get different output everytime. The important thing to note is that shuf
is doing its job on the data sent from ls
, which sends consistent data every time. We don’t have to create an intermediate file for shuf
to work from. The |
character joing two commands is the key.
We can apply this to our minimap2
and samtools
commands.
5.3 From reads to filtered alignments in one step
So let’s try reducing the original alignment pipeline to one step with pipes. We’ll work in the BAM file bit later.
Simply take away the output file names (except the last one!) and replace with pipes. It looks like this
minimap2 -ax sr ecoli_genome.fa ecoli_left_R1.fq ecoli_right_R2.fq | samtools view -S -h -q 25 -f 3 > aln.filtered.from_pipes.sam
when you do ls -alh
you should see the new aln.filtered.from_pipes.sam
file, its size is identical to the file we generated when we created the intermediate aln.sam
file, but this time we didnt need to, saving that disk space.
5.3.1 From reads to filtered alignments in a BAM file in one step
Let’s modify the command to give us BAM not SAM, saving a further step. We already know that samtools view
can output BAM instead of SAM, so lets add that option (-b
) in to the samtools
part.
minimap2 -ax sr ecoli_genome.fa ecoli_left_R1.fq ecoli_right_R2.fq | samtools view -S -h -b -q 25 -f 3 > aln.filtered.from_pipes.bam
If you check the files with ls -alh
now you should see that you have the new aln.filtered.from_pipes.bam
file with no extra intermediate file and the smallest possible output file. Congratulations, you know now the fastest and most optimal way to make alignments and filter them.
5.4 Sorting BAM files
In practice a BAM file of alignments needs to be ordered with the alignments at the start of the first chromosome at the start of the file and the alignments on the end of the last chromosome at the end of the file. This is for computational reasons we don’t need to worry about, but it does mean we need to do another sorting step to make our files useful downstream.
Because all the alignments need to be present before we can start we can’t use the pipe technique above. So we use an input and output file. The command is samtools sort
and looks like this.
samtools sort aln.filtered.from_pipes.bam -o aln.filtered.from_pipes.sorted.bam
Doing ls -alh
shows a new sorted BAM aln.filtered.from_pipes.sorted.bam
that contains the same information but is actually a little smaller due to being sorted. We can safely delete the unsorted version of the BAM file.
5.4.1 Automatically deleting the unsorted BAM
If the sorting goes fine, we have two BAM files with essentially the same information and don’t need the unsorted file. We can of course remove this with rm aln.filtered.from_pipes
. A neat space saving trick is to combine the rm
step with the successful completion of the sort. We can do this by joining the commands with &&
.
That looks like this
samtools sort aln.filtered.from_pipes.bam -o aln.filtered.from_pipes.sorted.bam && rm aln.filtered.from_pipes.bam
The &&
doesn’t connect the data between the two commands, it just doesn’t let the second one start until the first one finishes successfully (computers have an internal concept of whether a command finished properly).
This means if the samtools sort
goes wrong the rm
part will not run and the input file won’t be deleted so you won’t have to remake it. This is especially useful later when we wrap all this into an automatic script.
5.5 Indexing the sorted BAM
Many downstream applications need the BAM file to have an index, so they can quickly jump to a particular part of the reference chromosome. This is a tiny file and we usually don’t need to worry about it. To generate it use samtools index
samtools index aln.filtered.from_pipes.sorted.bam
Using ls -lah
we can see a tiny file called aln.filtered.from_pipes.sorted.bam.bai
, this is the index.
5.6 Further Reading
For a primer on some more aspects of samtools
see this tutorial


Installation
PyTrx set-up
PyTrx has been coded with Python 3 and has been tested on Linux and Windows operating systems (it should also work on Apple operating systems too, it just hasn’t been tested). PyTrx was originally written using a Linux operating system, so the inputted file path structures given in the example scripts may differ between operating systems and it is therefore advised to check file path structures before running these.
PyTrx can either be downloaded directly from the GitHub repository, or installed PyPI package manager (pip).
Installing PyTrx through pip
PyTrx is available through pip and can be installed with the following simple command:
pip install pytrx
Be warned that there are difficulties with the GDAL package on pip, meaning that gdal could not be declared explicitly as a PyTrx dependency in the pip package compiling. Please ensure that gdal is installed separately if installing PyTrx through pip. You should be able to create a new environment, install GDAL and the other dependencies with conda, and then install PyTrx with pip.
conda create --name pytrx python=3.7
conda install gdal opencv pillow scipy matplotlib spyder
pip install pytrx
If you still run into problems then we suggest creating a new conda environment from the .yml environment file provided in the PyTrx repository, as described here. This includes a fresh install of PyTrx.
conda env create --file environment.yml
To check that PyTrx is working, some simple unit tests can be run from the command line.
python -m unittest PyTrx.Area PyTrx.CamEnv PyTrx.DEM PyTrx.Line PyTrx.Velocity
Additionally, open a Python console or IDE such as Spyder, and try to import PyTrx, PyTrx’s help guide, and one of PyTrx’s modules as a test.
import PyTrx
help(PyTrx)
from PyTrx import Area
If PyTrx is working correctly, the unit tests should run successfully and the help statement should print PyTrx’s metadata, including PyTrx’s license, a brief description of the toolset, and its structure. If this does not work and throws up an error, it is likely that the package dependencies are invalid so reconfigure them and then try again.
Cloning PyTrx from GitHub
PyTrx can be cloned from PyTrx’s GitHub repository, or using git.
git clone https://github.com/PennyHow/PyTrx.git
The repository can be installed in your python environment by navigating to the top level of the repository and using pip to install the local package.
python -m pip install -e .
Or you can use PyTrx in a python environment with the installed dependencies. We recommend installing PyTrx’s dependencies with conda.
conda install gdal opencv pillow scipy matplotlib spyder


| Top |
| GtkAdjustment * | hadjustment | Read / Write / Construct |
| GtkPolicyType | hscrollbar-policy | Read / Write |
| gboolean | kinetic-scrolling | Read / Write |
| gint | max-content-height | Read / Write |
| gint | max-content-width | Read / Write |
| gint | min-content-height | Read / Write |
| gint | min-content-width | Read / Write |
| gboolean | overlay-scrolling | Read / Write |
| gboolean | propagate-natural-height | Read / Write |
| gboolean | propagate-natural-width | Read / Write |
| GtkShadowType | shadow-type | Read / Write |
| GtkAdjustment * | vadjustment | Read / Write / Construct |
| GtkPolicyType | vscrollbar-policy | Read / Write |
| GtkCornerType | window-placement | Read / Write |
| gboolean | window-placement-set | Read / Write |
| void | edge-overshot | Run Last |
| void | edge-reached | Run Last |
| void | move-focus-out | Action |
| gboolean | scroll-child | Action |
| struct | GtkScrolledWindow |
| struct | GtkScrolledWindowClass |
| enum | GtkPolicyType |
| enum | GtkCornerType |
GObject ╰── GInitiallyUnowned ╰── GtkWidget ╰── GtkContainer ╰── GtkBin ╰── GtkScrolledWindow ╰── GtkPlacesSidebar
GtkScrolledWindow is a container that accepts a single child widget, makes that child scrollable using either internally added scrollbars or externally associated adjustments, and optionally draws a frame around the child.
Widgets with native scrolling support, i.e. those whose classes implement the
GtkScrollable interface, are added directly. For other types of widget, the
class GtkViewport acts as an adaptor, giving scrollability to other widgets.
GtkScrolledWindow’s implementation of gtk_container_add()
intelligently
accounts for whether or not the added child is a GtkScrollable. If it isn’t,
GtkScrolledWindow wraps the child in a GtkViewport and adds that for you.
Therefore, you can just add any child widget and not worry about the details.
If gtk_container_add()
has added a GtkViewport for you, you can remove
both your added child widget from the GtkViewport, and the GtkViewport
from the GtkScrolledWindow, with either of these calls:
1 2 3 4 5 |
gtk_container_remove (GTK_CONTAINER (scrolled_window), child_widget); // or gtk_container_remove (GTK_CONTAINER (scrolled_window), gtk_bin_get_child (GTK_BIN (scrolled_window))); |
Unless “policy” is GTK_POLICY_NEVER or GTK_POLICY_EXTERNAL, GtkScrolledWindow adds internal GtkScrollbar widgets around its child. The scroll position of the child, and if applicable the scrollbars, is controlled by the “hadjustment” and “vadjustment” that are associated with the GtkScrolledWindow. See the docs on GtkScrollbar for the details, but note that the “step_increment” and “page_increment” fields are only effective if the policy causes scrollbars to be present.
If a GtkScrolledWindow doesn’t behave quite as you would like, or doesn’t have exactly the right layout, it’s very possible to set up your own scrolling with GtkScrollbar and for example a GtkGrid.
GtkScrolledWindow has built-in support for touch devices. When a touchscreen is used, swiping will move the scrolled window, and will expose 'kinetic' behavior. This can be turned off with the “kinetic-scrolling” property if it is undesired.
GtkScrolledWindow also displays visual 'overshoot' indication when the content is pulled beyond the end, and this situation can be captured with the “edge-overshot” signal.
If no mouse device is present, the scrollbars will overlayed as narrow, auto-hiding indicators over the content. If traditional scrollbars are desired although no mouse is present, this behaviour can be turned off with the “overlay-scrolling” property.
GtkScrolledWindow has a main CSS node with name scrolledwindow.
It uses subnodes with names overshoot and undershoot to draw the overflow and underflow indications. These nodes get the .left, .right, .top or .bottom style class added depending on where the indication is drawn.
GtkScrolledWindow also sets the positional style classes (.left, .right, .top, .bottom) and style classes related to overlay scrolling (.overlay-indicator, .dragging, .hovering) on its scrollbars.
If both scrollbars are visible, the area where they meet is drawn with a subnode named junction.
GtkWidget * gtk_scrolled_window_new (GtkAdjustment *hadjustment
,GtkAdjustment *vadjustment
);
Creates a new scrolled window.
The two arguments are the scrolled window’s adjustments; these will be
shared with the scrollbars and the child widget to keep the bars in sync
with the child. Usually you want to pass NULL
for the adjustments, which
will cause the scrolled window to create them for you.
GtkAdjustment *
gtk_scrolled_window_get_hadjustment (GtkScrolledWindow *scrolled_window
);
Returns the horizontal scrollbar’s adjustment, used to connect the horizontal scrollbar to the child widget’s horizontal scroll functionality.
void gtk_scrolled_window_set_hadjustment (GtkScrolledWindow *scrolled_window
,GtkAdjustment *hadjustment
);
Sets the GtkAdjustment for the horizontal scrollbar.
GtkAdjustment *
gtk_scrolled_window_get_vadjustment (GtkScrolledWindow *scrolled_window
);
Returns the vertical scrollbar’s adjustment, used to connect the vertical scrollbar to the child widget’s vertical scroll functionality.
void gtk_scrolled_window_set_vadjustment (GtkScrolledWindow *scrolled_window
,GtkAdjustment *vadjustment
);
Sets the GtkAdjustment for the vertical scrollbar.
GtkWidget *
gtk_scrolled_window_get_hscrollbar (GtkScrolledWindow *scrolled_window
);
Returns the horizontal scrollbar of scrolled_window
.
Since: 2.8
GtkWidget *
gtk_scrolled_window_get_vscrollbar (GtkScrolledWindow *scrolled_window
);
Returns the vertical scrollbar of scrolled_window
.
Since: 2.8
void gtk_scrolled_window_get_policy (GtkScrolledWindow *scrolled_window
,GtkPolicyType *hscrollbar_policy
,GtkPolicyType *vscrollbar_policy
);
Retrieves the current policy values for the horizontal and vertical
scrollbars. See gtk_scrolled_window_set_policy()
.
void gtk_scrolled_window_set_policy (GtkScrolledWindow *scrolled_window
,GtkPolicyType hscrollbar_policy
,GtkPolicyType vscrollbar_policy
);
Sets the scrollbar policy for the horizontal and vertical scrollbars.
The policy determines when the scrollbar should appear; it is a value
from the GtkPolicyType enumeration. If GTK_POLICY_ALWAYS
, the
scrollbar is always present; if GTK_POLICY_NEVER
, the scrollbar is
never present; if GTK_POLICY_AUTOMATIC
, the scrollbar is present only
if needed (that is, if the slider part of the bar would be smaller
than the trough — the display is larger than the page size).
void gtk_scrolled_window_add_with_viewport (GtkScrolledWindow *scrolled_window
,GtkWidget *child
);
gtk_scrolled_window_add_with_viewport
has been deprecated since version 3.8 and should not be used in newly-written code.
gtk_container_add() will automatically add a GtkViewport if the child doesn’t implement GtkScrollable.
Used to add children without native scrolling capabilities. This
is simply a convenience function; it is equivalent to adding the
unscrollable child to a viewport, then adding the viewport to the
scrolled window. If a child has native scrolling, use
gtk_container_add()
instead of this function.
The viewport scrolls the child by moving its GdkWindow, and takes the size of the child to be the size of its toplevel GdkWindow. This will be very wrong for most widgets that support native scrolling; for example, if you add a widget such as GtkTreeView with a viewport, the whole widget will scroll, including the column headings. Thus, widgets with native scrolling support should not be used with the GtkViewport proxy.
A widget supports scrolling natively if it implements the GtkScrollable interface.
GtkCornerType
gtk_scrolled_window_get_placement (GtkScrolledWindow *scrolled_window
);
Gets the placement of the contents with respect to the scrollbars
for the scrolled window. See gtk_scrolled_window_set_placement()
.
the current placement value.
See also gtk_scrolled_window_set_placement()
and
gtk_scrolled_window_unset_placement()
.
void gtk_scrolled_window_set_placement (GtkScrolledWindow *scrolled_window
,GtkCornerType window_placement
);
Sets the placement of the contents with respect to the scrollbars for the scrolled window.
The default is GTK_CORNER_TOP_LEFT
, meaning the child is
in the top left, with the scrollbars underneath and to the right.
Other values in GtkCornerType are GTK_CORNER_TOP_RIGHT
,
GTK_CORNER_BOTTOM_LEFT
, and GTK_CORNER_BOTTOM_RIGHT
.
See also gtk_scrolled_window_get_placement()
and
gtk_scrolled_window_unset_placement()
.
void
gtk_scrolled_window_unset_placement (GtkScrolledWindow *scrolled_window
);
Unsets the placement of the contents with respect to the scrollbars
for the scrolled window. If no window placement is set for a scrolled
window, it defaults to GTK_CORNER_TOP_LEFT
.
See also gtk_scrolled_window_set_placement()
and
gtk_scrolled_window_get_placement()
.
Since: 2.10
GtkShadowType
gtk_scrolled_window_get_shadow_type (GtkScrolledWindow *scrolled_window
);
Gets the shadow type of the scrolled window. See
gtk_scrolled_window_set_shadow_type()
.
void gtk_scrolled_window_set_shadow_type (GtkScrolledWindow *scrolled_window
,GtkShadowType type
);
Changes the type of shadow drawn around the contents of
scrolled_window
.
gboolean
gtk_scrolled_window_get_kinetic_scrolling
(GtkScrolledWindow *scrolled_window
);
Returns the specified kinetic scrolling behavior.
Since: 3.4
void gtk_scrolled_window_set_kinetic_scrolling (GtkScrolledWindow *scrolled_window
,gboolean kinetic_scrolling
);
Turns kinetic scrolling on or off.
Kinetic scrolling only applies to devices with source
GDK_SOURCE_TOUCHSCREEN
.
Since: 3.4
gboolean
gtk_scrolled_window_get_capture_button_press
(GtkScrolledWindow *scrolled_window
);
Return whether button presses are captured during kinetic
scrolling. See gtk_scrolled_window_set_capture_button_press()
.
Since: 3.4
void gtk_scrolled_window_set_capture_button_press (GtkScrolledWindow *scrolled_window
,gboolean capture_button_press
);
Changes the behaviour of scrolled_window
with regard to the initial
event that possibly starts kinetic scrolling. When capture_button_press
is set to TRUE
, the event is captured by the scrolled window, and
then later replayed if it is meant to go to the child widget.
This should be enabled if any child widgets perform non-reversible
actions on “button-press-event”. If they don't, and handle
additionally handle “grab-broken-event”, it might be better
to set capture_button_press
to FALSE
.
This setting only has an effect if kinetic scrolling is enabled.
Since: 3.4
gboolean
gtk_scrolled_window_get_overlay_scrolling
(GtkScrolledWindow *scrolled_window
);
Returns whether overlay scrolling is enabled for this scrolled window.
Since: 3.16
void gtk_scrolled_window_set_overlay_scrolling (GtkScrolledWindow *scrolled_window
,gboolean overlay_scrolling
);
Enables or disables overlay scrolling for this scrolled window.
Since: 3.16
gint
gtk_scrolled_window_get_min_content_width
(GtkScrolledWindow *scrolled_window
);
Gets the minimum content width of scrolled_window
, or -1 if not set.
Since: 3.0
void gtk_scrolled_window_set_min_content_width (GtkScrolledWindow *scrolled_window
,gint width
);
Sets the minimum width that scrolled_window
should keep visible.
Note that this can and (usually will) be smaller than the minimum
size of the content.
It is a programming error to set the minimum content width to a value greater than “max-content-width”.
Since: 3.0
gint
gtk_scrolled_window_get_min_content_height
(GtkScrolledWindow *scrolled_window
);
Gets the minimal content height of scrolled_window
, or -1 if not set.
Since: 3.0
void gtk_scrolled_window_set_min_content_height (GtkScrolledWindow *scrolled_window
,gint height
);
Sets the minimum height that scrolled_window
should keep visible.
Note that this can and (usually will) be smaller than the minimum
size of the content.
It is a programming error to set the minimum content height to a value greater than “max-content-height”.
Since: 3.0
gint
gtk_scrolled_window_get_max_content_width
(GtkScrolledWindow *scrolled_window
);
Returns the maximum content width set.
Since: 3.22
void gtk_scrolled_window_set_max_content_width (GtkScrolledWindow *scrolled_window
,gint width
);
Sets the maximum width that scrolled_window
should keep visible. The
scrolled_window
will grow up to this width before it starts scrolling
the content.
It is a programming error to set the maximum content width to a value smaller than “min-content-width”.
Since: 3.22
gint
gtk_scrolled_window_get_max_content_height
(GtkScrolledWindow *scrolled_window
);
Returns the maximum content height set.
Since: 3.22
void gtk_scrolled_window_set_max_content_height (GtkScrolledWindow *scrolled_window
,gint height
);
Sets the maximum height that scrolled_window
should keep visible. The
scrolled_window
will grow up to this height before it starts scrolling
the content.
It is a programming error to set the maximum content height to a value smaller than “min-content-height”.
Since: 3.22
gboolean
gtk_scrolled_window_get_propagate_natural_width
(GtkScrolledWindow *scrolled_window
);
Reports whether the natural width of the child will be calculated and propagated through the scrolled windows requested natural width.
Since: 3.22
void gtk_scrolled_window_set_propagate_natural_width (GtkScrolledWindow *scrolled_window
,gboolean propagate
);
Sets whether the natural width of the child should be calculated and propagated through the scrolled windows requested natural width.
Since: 3.22
gboolean
gtk_scrolled_window_get_propagate_natural_height
(GtkScrolledWindow *scrolled_window
);
Reports whether the natural height of the child will be calculated and propagated through the scrolled windows requested natural height.
Since: 3.22
void gtk_scrolled_window_set_propagate_natural_height (GtkScrolledWindow *scrolled_window
,gboolean propagate
);
Sets whether the natural height of the child should be calculated and propagated through the scrolled windows requested natural height.
Since: 3.22
struct GtkScrolledWindowClass { GtkBinClass parent_class; gint scrollbar_spacing; /* Action signals for keybindings. Do not connect to these signals */ /* Unfortunately, GtkScrollType is deficient in that there is * no horizontal/vertical variants for GTK_SCROLL_START/END, * so we have to add an additional boolean flag. */ gboolean (*scroll_child) (GtkScrolledWindow *scrolled_window, GtkScrollType scroll, gboolean horizontal); void (* move_focus_out) (GtkScrolledWindow *scrolled_window, GtkDirectionType direction); };
gint |
||
Keybinding signal which gets emitted when a keybinding that scrolls is pressed. |
||
Keybinding signal which gets emitted when focus is moved away from the scrolled window by a keybinding. |
Determines how the size should be computed to achieve the one of the visibility mode for the scrollbars.
|
The scrollbar is always visible. The view size is independent of the content. |
||
|
The scrollbar will appear and disappear as necessary. For example, when all of a GtkTreeView can not be seen. |
||
|
The scrollbar should never appear. In this mode the content determines the size. |
||
|
Don't show a scrollbar, but don't force the size to follow the content. This can be used e.g. to make multiple scrolled windows share a scrollbar. Since: 3.16 |
Specifies which corner a child widget should be placed in when packed into a GtkScrolledWindow. This is effectively the opposite of where the scroll bars are placed.
“hadjustment”
property“hadjustment” GtkAdjustment *
The GtkAdjustment for the horizontal position.
Flags: Read / Write / Construct
“hscrollbar-policy”
property“hscrollbar-policy” GtkPolicyType
When the horizontal scrollbar is displayed.
Flags: Read / Write
Default value: GTK_POLICY_AUTOMATIC
“kinetic-scrolling”
property“kinetic-scrolling” gboolean
Whether kinetic scrolling is enabled or not. Kinetic scrolling
only applies to devices with source GDK_SOURCE_TOUCHSCREEN
.
Flags: Read / Write
Default value: TRUE
Since: 3.4
“max-content-height”
property“max-content-height” gint
The maximum content height of scrolled_window
, or -1 if not set.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
Since: 3.22
“max-content-width”
property“max-content-width” gint
The maximum content width of scrolled_window
, or -1 if not set.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
Since: 3.22
“min-content-height”
property“min-content-height” gint
The minimum content height of scrolled_window
, or -1 if not set.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
Since: 3.0
“min-content-width”
property“min-content-width” gint
The minimum content width of scrolled_window
, or -1 if not set.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
Since: 3.0
“overlay-scrolling”
property“overlay-scrolling” gboolean
Whether overlay scrolling is enabled or not. If it is, the scrollbars are only added as traditional widgets when a mouse is present. Otherwise, they are overlayed on top of the content, as narrow indicators.
Flags: Read / Write
Default value: TRUE
Since: 3.16
“propagate-natural-height”
property“propagate-natural-height” gboolean
Whether the natural height of the child should be calculated and propagated through the scrolled windows requested natural height.
This is useful in cases where an attempt should be made to allocate exactly enough space for the natural size of the child.
Flags: Read / Write
Default value: FALSE
Since: 3.22
“propagate-natural-width”
property“propagate-natural-width” gboolean
Whether the natural width of the child should be calculated and propagated through the scrolled windows requested natural width.
This is useful in cases where an attempt should be made to allocate exactly enough space for the natural size of the child.
Flags: Read / Write
Default value: FALSE
Since: 3.22
“shadow-type”
property“shadow-type” GtkShadowType
Style of bevel around the contents.
Flags: Read / Write
Default value: GTK_SHADOW_NONE
“vadjustment”
property“vadjustment” GtkAdjustment *
The GtkAdjustment for the vertical position.
Flags: Read / Write / Construct
“vscrollbar-policy”
property“vscrollbar-policy” GtkPolicyType
When the vertical scrollbar is displayed.
Flags: Read / Write
Default value: GTK_POLICY_AUTOMATIC
“window-placement”
property“window-placement” GtkCornerType
Where the contents are located with respect to the scrollbars.
Flags: Read / Write
Default value: GTK_CORNER_TOP_LEFT
“window-placement-set”
property“window-placement-set” gboolean
Whether "window-placement" should be used to determine the location of the contents with respect to the scrollbars.
GtkScrolledWindow:window-placement-set
has been deprecated since version 3.10 and should not be used in newly-written code.
This value is ignored and “window-placement” value is always honored.
Flags: Read / Write
Default value: TRUE
Since: 2.10
“scrollbar-spacing”
style property“scrollbar-spacing” gint
Number of pixels between the scrollbars and the scrolled window.
Flags: Read
Allowed values: >= 0
Default value: 3
“scrollbars-within-bevel”
style property“scrollbars-within-bevel” gboolean
Whether to place scrollbars within the scrolled window's bevel.
GtkScrolledWindow:scrollbars-within-bevel
has been deprecated since version 3.20 and should not be used in newly-written code.
the value of this style property is ignored.
Flags: Read
Default value: FALSE
Since: 2.12
“edge-overshot”
signalvoid user_function (GtkScrolledWindow *scrolled_window, GtkPositionType pos, gpointer user_data)
The ::edge-overshot signal is emitted whenever user initiated scrolling makes the scrolledwindow firmly surpass (ie. with some edge resistance) the lower or upper limits defined by the adjustment in that orientation.
A similar behavior without edge resistance is provided by the “edge-reached” signal.
Note: The pos
argument is LTR/RTL aware, so callers should be aware too
if intending to provide behavior on horizontal edges.
scrolled_window |
||
pos |
edge side that was hit |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 3.16
“edge-reached”
signalvoid user_function (GtkScrolledWindow *scrolled_window, GtkPositionType pos, gpointer user_data)
The ::edge-reached signal is emitted whenever user-initiated scrolling makes the scrolledwindow exactly reaches the lower or upper limits defined by the adjustment in that orientation.
A similar behavior with edge resistance is provided by the “edge-overshot” signal.
Note: The pos
argument is LTR/RTL aware, so callers should be aware too
if intending to provide behavior on horizontal edges.
scrolled_window |
||
pos |
edge side that was reached |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 3.16
“move-focus-out”
signalvoid user_function (GtkScrolledWindow *scrolled_window, GtkDirectionType direction_type, gpointer user_data)
The ::move-focus-out signal is a
keybinding signal which gets
emitted when focus is moved away from the scrolled window by a
keybinding. The “move-focus” signal is emitted with
direction_type
on this scrolled windows toplevel parent in the
container hierarchy. The default bindings for this signal are
Tab + Ctrl
and Tab + Ctrl + Shift
.
scrolled_window |
||
direction_type |
either |
|
user_data |
user data set when the signal handler was connected. |
Flags: Action
“scroll-child”
signalgboolean user_function (GtkScrolledWindow *scrolled_window, GtkScrollType scroll, gboolean horizontal, gpointer user_data)
The ::scroll-child signal is a keybinding signal which gets emitted when a keybinding that scrolls is pressed. The horizontal or vertical adjustment is updated which triggers a signal that the scrolled windows child may listen to and scroll itself.
scrolled_window |
||
scroll |
a GtkScrollType describing how much to scroll |
|
horizontal |
whether the keybinding scrolls the child horizontally or not |
|
user_data |
user data set when the signal handler was connected. |
Flags: Action


File: src/away/core/geom/Plane3D.ts
///<reference path="../../_definitions.ts"/> module away.geom { export class Plane3D { /** * The A coefficient of this plane. (Also the x dimension of the plane normal) */ public a:number; /** * The B coefficient of this plane. (Also the y dimension of the plane normal) */ public b:number; /** * The C coefficient of this plane. (Also the z dimension of the plane normal) */ public c:number; /** * The D coefficient of this plane. (Also the inverse dot product between normal and point) */ public d:number; public _iAlignment:number; // indicates the alignment of the plane public static ALIGN_ANY:number = 0; public static ALIGN_XY_AXIS:number = 1; public static ALIGN_YZ_AXIS:number = 2; public static ALIGN_XZ_AXIS:number = 3; /** * Create a Plane3D with ABCD coefficients */ constructor(a:number = 0, b:number = 0, c:number = 0, d:number = 0) { this.a = a; this.b = b; this.c = c; this.d = d; if (a == 0 && b == 0) { this._iAlignment = Plane3D.ALIGN_XY_AXIS; } else if (b == 0 && c == 0) { this._iAlignment = Plane3D.ALIGN_YZ_AXIS; } else if (a == 0 && c == 0) { this._iAlignment = Plane3D.ALIGN_XZ_AXIS; } else { this._iAlignment = Plane3D.ALIGN_ANY; } } /** * Fills this Plane3D with the coefficients from 3 points in 3d space. * @param p0 Vector3D * @param p1 Vector3D * @param p2 Vector3D */ public fromPoints(p0:away.geom.Vector3D, p1:away.geom.Vector3D, p2:away.geom.Vector3D) { var d1x:number = p1.x - p0.x; var d1y:number = p1.y - p0.y; var d1z:number = p1.z - p0.z; var d2x:number = p2.x - p0.x; var d2y:number = p2.y - p0.y; var d2z:number = p2.z - p0.z; this.a = d1y*d2z - d1z*d2y; this.b = d1z*d2x - d1x*d2z; this.c = d1x*d2y - d1y*d2x; this.d = this.a*p0.x + this.b*p0.y + this.c*p0.z; // not using epsilon, since a plane is infinite and a small incorrection can grow very large if (this.a == 0 && this.b == 0) { this._iAlignment = Plane3D.ALIGN_XY_AXIS; } else if (this.b == 0 && this.c == 0) { this._iAlignment = Plane3D.ALIGN_YZ_AXIS; } else if (this.a == 0 && this.c == 0) { this._iAlignment = Plane3D.ALIGN_XZ_AXIS; } else { this._iAlignment = Plane3D.ALIGN_ANY; } } /** * Fills this Plane3D with the coefficients from the plane's normal and a point in 3d space. * @param normal Vector3D * @param point Vector3D */ public fromNormalAndPoint(normal:away.geom.Vector3D, point:away.geom.Vector3D) { this.a = normal.x; this.b = normal.y; this.c = normal.z; this.d = this.a*point.x + this.b*point.y + this.c*point.z; if (this.a == 0 && this.b == 0) { this._iAlignment = Plane3D.ALIGN_XY_AXIS; } else if (this.b == 0 && this.c == 0) { this._iAlignment = Plane3D.ALIGN_YZ_AXIS; } else if (this.a == 0 && this.c == 0) { this._iAlignment = Plane3D.ALIGN_XZ_AXIS; } else { this._iAlignment = Plane3D.ALIGN_ANY; } } /** * Normalize this Plane3D * @return Plane3D This Plane3D. */ public normalize():Plane3D { var len:number = 1/Math.sqrt(this.a*this.a + this.b*this.b + this.c*this.c); this.a *= len; this.b *= len; this.c *= len; this.d *= len; return this; } /** * Returns the signed distance between this Plane3D and the point p. * @param p Vector3D * @returns Number */ public distance(p:away.geom.Vector3D):number { if (this._iAlignment == Plane3D.ALIGN_YZ_AXIS) { return this.a*p.x - this.d; } else if (this._iAlignment == Plane3D.ALIGN_XZ_AXIS) { return this.b*p.y - this.d; } else if (this._iAlignment == Plane3D.ALIGN_XY_AXIS) { return this.c*p.z - this.d; } else { return this.a*p.x + this.b*p.y + this.c*p.z - this.d; } } /** * Classify a point against this Plane3D. (in front, back or intersecting) * @param p Vector3D * @return int Plane3.FRONT or Plane3D.BACK or Plane3D.INTERSECT */ public classifyPoint(p:away.geom.Vector3D, epsilon:number = 0.01):number { // check NaN if (this.d != this.d) return away.geom.PlaneClassification.FRONT; var len:number; if (this._iAlignment == Plane3D.ALIGN_YZ_AXIS) len = this.a*p.x - this.d; else if (this._iAlignment == Plane3D.ALIGN_XZ_AXIS) len = this.b*p.y - this.d; else if (this._iAlignment == Plane3D.ALIGN_XY_AXIS) len = this.c*p.z - this.d; else len = this.a*p.x + this.b*p.y + this.c*p.z - this.d; if (len < -epsilon) return away.geom.PlaneClassification.BACK; else if (len > epsilon) return away.geom.PlaneClassification.FRONT; else return away.geom.PlaneClassification.INTERSECT; } public toString():string { return "Plane3D [a:" + this.a + ", b:" + this.b + ", c:" + this.c + ", d:" + this.d + "]"; } } }


Shirisma Shavers
Learn More About Me!
Toggle navigation
Home
About
Experience
Portfolio
Contact
Blog
Shirisma Shavers
Blogger~PR Consultant/Event Planner~Jr. Developer
Download Resume
Experience Section
Portfolio Section
Contact Section


HTML refers to HyperText Markup language. It is basically the skeleton of all web pages. Learning HTML is the first step in creating web pages and to make this easier, here are a few links to websites that can start you off on your journey as a web developer.
The best place for aspiring coders can learn how to create Websites using Html. Codecademy uses interactive exercises as well as clearly coded examples that allows users to learn and understand code clearly.
HTML code is simply and clearly written, with clear notes provided as well. A "try it youself" section is provided where one can easily practise learnt pieces of code.
It's a community that helps beginners learn to code beginning with basic-but fundamental-HTML, then get experience by contributing to open source projects used by nonprofits. You'll learn to code by completing coding challenges and building projects and also earn verified certificates along the way. Freecode camp also enables users to interact with coders that live close to them, thereby enhancing the coding learning experience.
HTML.com provides coders with comprehensive, easy-to-use references filled with tips, tricks, and techniques. The website offers quick reference to all HTML tags and attributes.
MDN Documentation is simply divided into the Guides and Assesment sections. The guide section provides beginners with informaton on HTML elements and attributes,after which you can assess your skills with provided exercises.


A simple chart.js
visualization of some data sets
Inspired by and sourced from Tyler Vigen's Spurious Correlations
Many statistical tests calculate correlations between variables and when two variables are found to be correlated, it is tempting to assume that this shows that one variable causes the other.
Correlation: 0.992558
Correlation: 0.969724
Correlation: 0.916391
Correlation: 0.903602


| DevIL Documentation | Home | Previous | Next |
The ilPushAttrib function pushes the states indicated by bits onto the state stack.
ILvoid ilPushAttrib(
ILuint Bits
);
ilPushAttrib pushes a new set of modes and attributes onto the state stack, allowing for "a fresh start".
IL_STACK_OVERFLOW - The stack was pushed more times than the current OpenIL implementation allows. Use ilPopAttrib to clear the stack. OpenIL implementations must support a stack depth of at least 32.