This LGBT History Month, we’ve made our Young Adult LGBT recommendation list bigger and better than ever. Find your new favourite book here or find even more suggestions on our 2017 list.
S/he, by Catherine Bruton
“The new kid at school is not like anyone Kat has met before. Raven is ‘gender-fluid’. Not a boy. Or a girl. But kind of both - sometimes, sort of. At first the class are fascinated, intrigued. But people like labels. They like to put things in boxes. Boy? Girl? Blue? Pink? Do you need to make a choice? Does anyone have a right to know? You decide.”
Release, by Patrick Ness
“Today will change Adam Thorn’s life.  And way across town, a ghost has risen from the lake. Is there time for Adam to find his release?”
Release is also available as an eBook on OverDrive and an eAudiobook on BorrowBox.
Read Kate’s review of Release →
The Gentleman’s Guide to Vice and Virtue, by Mackenzi Lee
“Henry ‘Monty’ Montague doesn’t care that his roguish passions are far from suitable for the gentleman he was born to be. But as Monty embarks on his grand tour of Europe, his quests for pleasure and vice are in danger of coming to an end. Not only does his father expect him to take over the family’s estate upon his return, but Monty is also nursing an impossible crush on his best friend and traveling companion, Percy. So Monty vows to make this yearlong escapade one last hedonistic hurrah and flirt with Percy from Paris to Rome.
“But when one of Monty’s reckless decisions turns their trip abroad into a harrowing manhunt, it calls into question everything he knows, including his relationship with the boy he adores.”
History is All You Left Me, by Adam Silvera
“OCD-afflicted seventeen-year-old, Griffin, has just lost his first love - his best friend, ex-boyfriend and the boy he believed to be his ultimate life partner - in a drowning accident. In a desperate attempt to hold onto every last piece of the past, a broken Griffin forges a friendship with Theo’s new college boyfriend, Jackson. And Griffin will stop at nothing to learn every detail of Theo’s new college life, and ultimate death.
“But as the grieving pair grows closer, readers will question Griffin’s own version of the truth - both in terms of what he’s willing to hide, and what true love ultimately means.”
More Happy Than Not, by Adam Silvera
“In the months after his father’s suicide, it’s been tough for sixteen-year-old Aaron Soto to find happiness again - but he’s still gunning for it. With the support of his girlfriend Genevieve and his overworked mom, he’s slowly remembering what that might feel like. But grief and the smile-shaped scar on his wrist prevent him from forgetting completely.
“When Genevieve leaves for a couple of weeks, Aaron spends all his time hanging out with this new guy, Thomas. Aaron’s crew notices, and they’re not exactly thrilled. But Aaron can’t deny the happiness Thomas brings or how Thomas makes him feel safe from himself, despite the tensions their friendship is stirring with his girlfriend and friends.
“Since Aaron can’t stay away from Thomas or turn off his newfound feelings for him, he considers turning to the Leteo Institute’s revolutionary memory-alteration procedure to straighten himself out, even if it means forgetting who he truly is.
“Why does happiness have to be so hard?”
Gracefully Grayson, by Ami Polonsky
“Grayson Sender has been holding onto a secret for what seems like forever: ‘he’ is a girl on the inside, stuck in the wrong gender’s body. The weight of this secret is crushing, but sharing it would mean facing ridicule, scorn, rejection or worse.
“Despite the risks, Grayson’s true self itches to break free. Will new strength from an unexpected friendship and a caring teacher’s wisdom be enough to help Grayson step into the spotlight she was born to inhabit?”
Girlhood, by Cat Clarke
“Harper has tried to forget the past and fit in at expensive boarding school Duncraggan Academy. Her new group of friends are tight; the kind of girls who Harper knows have her back. But Harper can’t escape the guilt of her twin sister’s Jenna’s death, and her own part in it - and she knows no-one else will ever really understand.
“But new girl Kirsty seems to get Harper in ways she never expected. She has lost a sister too. Harper finally feels secure. She finally feels loved. As if she can grow beyond the person she was when Jenna died. Then Kirsty’s behaviour becomes more erratic. Why is her life a perfect mirror of Harper’s? And why is she so obsessed with Harper’s lost sister? Soon, Harper’s closeness with Kirsty begins to threaten her other relationships, and her own sense of identity.”
Like Other Girls, by Claire Hennessy
“Here’s what sixteen-year-old Lauren knows: she’s not like other girls. She also knows it’s problematic to say that - what’s wrong with girls? She’s even fancied some in the past - but if you were stuck in St Agnes’s, her posh all-girls school in Ireland, you’d feel like that too. Here everyone’s expected to be Perfect Young Ladies - it’s even a song in the painfully-cheesy and sexist musical they’re putting on this year, directed by Lauren’s arch-nemesis.
“Lauren is not like other girls, and nor is her friend Evan, who’s just come out as a trans boy - which Lauren knows she’s supposed to be cool with but still feels betrayed by. (Having had an unrequited crush on Evan for years doesn’t help, either). Why can’t everyone just be themselves without obsessing over labels? Then Lauren discovers she’s pregnant - the most girlish thing of all.”
 They’re hoping to set the world record for the longest kiss. They’re not a couple, but they used to be. Peter and Neil are a couple. Their kisses are different. Avery and Ryan have only just met and are trying to figure out what happens next. Cooper is alone. He’s not sure how he feels.
“As the marathon progresses, these boys, their friends and families evaluate the changing nature of feelings, behaviour and this crazy thing called love.”
The Miseducation of Cameron Post, by Emily Danforth
“When Cameron Post’s parents die suddenly in a car crash, her shocking first thought is relief. Relief they’ll never know that, hours earlier, she had been kissing a girl.
“But that relief doesn’t last, and Cam is forced to move in with her conservative aunt Ruth and her well-intentioned but hopelessly old-fashioned grandmother. She knows that from this point on, her life will forever be different. Survival in Miles City, Montana, means blending in and leaving well enough alone, and Cam becomes an expert at both.
“Then Coley Taylor moves to town. Beautiful, pickup-driving Coley is a perfect cowgirl with the perfect boyfriend to match. She and Cam forge an unexpected and intense friendship, one that seems to leave room for something more to emerge. But just as that starts to seem like a real possibility, ultrareligious Aunt Ruth takes drastic action to ‘fix’ her niece.”
Simon vs. the Homo Sapiens Agenda, by Becky Albertalli
“16-year-old and not-so-openly gay Simon Spier prefers to save his drama for the school musical. But when an email falls into the wrong hands, his secret is at risk of being thrust into the spotlight. And worse still, so will the privacy of ‘Blue’, the pen name of the boy he’s been emailing.
“With messy dynamics emerging in Simon’s once tight-knit group of friends, and his email correspondence with Blue growing more flirtatious every day, Simon’s life suddenly becomes just a little complicated. Now Simon has to find a way to step out of his comfort zone before he’s pushed out - without alienating his friends, compromising himself, or fumbling a shot at happiness with the most confusing, adorable guy he’s never met.”
Naomi and Ely’s No Kiss List, by Rachel Cohn & David Levithan
“Any great friendship can be as confusing, treacherous, inspiring and wonderful as any great romance. Naomi and Ely have been best friends forever. Naomi loves and is in love with Ely, and Ely loves Naomi, but prefers to be in love with boys.
“So they create their ‘No Kiss List’ of people neither of them is allowed to kiss. And this works fine - until Bruce. Bruce is Naomi’s boyfriend, so there’s no reason to put him on the List. But Ely kissed Bruce - and the resulting fallout is going to shake up the world!”
Our Own Private Universe, by Robin Talley
“15-year-old Aki Simon has a theory. And it’s mostly about sex. No, it isn’t that kind of theory. Aki already knows she’s bisexual - even if, until now, it’s mostly been in the hypothetical sense. Aki’s theory is that she’s only got one shot at living an interesting life - and that means she’s got to stop sitting around and thinking so much. It’s time for her to actually do something. Or at least try.
“So when Aki and her friend Lori set off on a trip to a small Mexican town for the summer, and Aki meets Christa - slightly-older, far-more-experienced - it seems her theory is prime for the testing. But something tells her it’s not going to be that easy.”
We Are Okay, by Nina LaCour
“Marin hasn’t spoken to anyone from her old life since the day she left everything behind. No one knows the truth about those final weeks. Not even her best friend Mabel. But even thousands of miles away from the California coast, at college in New York, Marin still feels the pull of the life and tragedy she’s tried to outrun.
“Now, months later, alone in an emptied dorm for winter break, Marin waits. Mabel is coming to visit and Marin will be forced to face everything that’s been left unsaid and finally confront the loneliness that has made a home in her heart.”
Non-fiction
Trans Mission: my quest for a beard, by Alex Bertie
“Being a teenager is difficult enough, but having to go through puberty whilst realising you’re in the wrong body means dealing with a whole new set of problems: bullying, self-doubt and in some cases facing a physical and medical transition.
 He’s also transgender, and was born female. He’s been living as a male for the past few years and he has recently started his physical transition. Throughout this book, Alex will share what it means to be in his shoes, as well as his personal advice to other trans teens.”
Beyond Magenta: transgender teens speak out, by Susan Kuklin
“Author and photographer Susan Kuklin met and interviewed six transgender or gender-neutral young adults and used her considerable skills to represent them thoughtfully and respectfully before, during, and after their personal acknowledgment of gender identity. Portraits, family photographs and candid images grace the pages, augmenting the emotional and physical journey each youth has taken.”
This Book is Gay, by Juno Dawson
“Former PSHCE teacher and acclaimed YA author Juno Dawson, formerly known as James Dawson, gives an uncensored look at sexual orientation and gender identity. Including testimonials from people across the gender and sexual spectrums, this frank, funny, fully inclusive book explores everything anyone who ever dared to wonder wants to know - from sex to politics, how to pull, stereotypes, how to come-out and more.”
We recommend Mermaids, an organisation that works with families of transgender children.


public abstract class DatatypeFactory extends Object
Factory that creates new javax.xml.datatype
Object
s that map XML to/from Java Object
s.
newInstance()
is used to create a new DatatypeFactory
.
The following implementation resolution mechanisms are used in the following order:
DATATYPEFACTORY_PROPERTY
, "javax.xml.datatype.DatatypeFactory
",
exists, a class with the name of the property's value is instantiated.
Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException
.
Properties
Object
.
The Properties
Object
is then queried for the property as documented in the prior step
and processed as documented in the prior step.
META-INF/services/java.xml.datatype.DatatypeFactory
.
Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException
.
Class
specified by
DATATYPEFACTORY_IMPLEMENTATION_CLASS
.
Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException
.
| Modifier and Type | Field and Description |
|---|---|
static String |
DATATYPEFACTORY_IMPLEMENTATION_CLASS
Default implementation class name as defined in
JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
|
static String |
DATATYPEFACTORY_PROPERTY
Default property name as defined in JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
|
| Modifier | Constructor and Description |
|---|---|
protected |
DatatypeFactory()
Protected constructor to prevent instaniation outside of package.
|
| Modifier and Type | Method and Description |
|---|---|
abstract Duration |
newDuration(boolean isPositive,
BigInteger years,
BigInteger months,
BigInteger days,
BigInteger hours,
BigInteger minutes,
BigDecimal seconds)
Obtain a new instance of a
Duration
specifying the Duration as isPositive, years, months, days, hours, minutes, seconds. |
Duration |
newDuration(boolean isPositive,
int years,
int months,
int days,
int hours,
int minutes,
int seconds)
Obtain a new instance of a
Duration
specifying the Duration as isPositive, years, months, days, hours, minutes, seconds. |
abstract Duration |
newDuration(long durationInMilliSeconds)
Obtain a new instance of a
Duration
specifying the Duration as milliseconds. |
abstract Duration |
newDuration(String lexicalRepresentation)
Obtain a new instance of a
Duration
specifying the Duration as its string representation, "PnYnMnDTnHnMnS",
as defined in XML Schema 1.0 section <IP_ADDRESS>. |
Duration |
newDurationDayTime(boolean isPositive,
BigInteger day,
BigInteger hour,
BigInteger minute,
BigInteger second)
Create a
Duration of type xdt:dayTimeDuration using the specified
day , hour , minute and second as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration. |
Duration |
newDurationDayTime(boolean isPositive,
int day,
int hour,
int minute,
int second)
Create a
Duration of type xdt:dayTimeDuration using the specified
day , hour , minute and second as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration. |
Duration |
newDurationDayTime(long durationInMilliseconds)
Create a
Duration of type xdt:dayTimeDuration using the specified milliseconds as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration. |
Duration |
newDurationDayTime(String lexicalRepresentation)
Create a
Duration of type xdt:dayTimeDuration by parsing its String representation,
"PnDTnHnMnS",
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration. |
Duration |
newDurationYearMonth(boolean isPositive,
BigInteger year,
BigInteger month)
Create a
Duration of type xdt:yearMonthDuration using the specified
year and month as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration. |
Duration |
newDurationYearMonth(boolean isPositive,
int year,
int month)
Create a
Duration of type xdt:yearMonthDuration using the specified
year and month as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration. |
Duration |
newDurationYearMonth(long durationInMilliseconds)
Create a
Duration of type xdt:yearMonthDuration using the specified milliseconds as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration. |
Duration |
newDurationYearMonth(String lexicalRepresentation)
Create a
Duration of type xdt:yearMonthDuration by parsing its String representation,
"PnYnM",
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration. |
static DatatypeFactory |
newInstance()
Obtain a new instance of a
DatatypeFactory . |
static DatatypeFactory |
newInstance(String factoryClassName,
ClassLoader classLoader)
Obtain a new instance of a
DatatypeFactory from class name. |
abstract XMLGregorianCalendar |
newXMLGregorianCalendar()
Create a new instance of an
XMLGregorianCalendar . |
abstract XMLGregorianCalendar |
newXMLGregorianCalendar(BigInteger year,
int month,
int day,
int hour,
int minute,
int second,
BigDecimal fractionalSecond,
int timezone)
Constructor allowing for complete value spaces allowed by
W3C XML Schema 1.0 recommendation for xsd:dateTime and related
builtin datatypes.
|
abstract XMLGregorianCalendar |
newXMLGregorianCalendar(GregorianCalendar cal)
Create an
XMLGregorianCalendar from a GregorianCalendar . |
XMLGregorianCalendar |
newXMLGregorianCalendar(int year,
int month,
int day,
int hour,
int minute,
int second,
int millisecond,
int timezone)
Constructor of value spaces that a
java.util.GregorianCalendar instance would need to convert to an
XMLGregorianCalendar instance. |
abstract XMLGregorianCalendar |
newXMLGregorianCalendar(String lexicalRepresentation)
Create a new XMLGregorianCalendar by parsing the String as a lexical representation.
|
XMLGregorianCalendar |
newXMLGregorianCalendarDate(int year,
int month,
int day,
int timezone)
Create a Java representation of XML Schema builtin datatype
date or g* . |
XMLGregorianCalendar |
newXMLGregorianCalendarTime(int hours,
int minutes,
int seconds,
BigDecimal fractionalSecond,
int timezone)
Create a Java instance of XML Schema builtin datatype time.
|
XMLGregorianCalendar |
newXMLGregorianCalendarTime(int hours,
int minutes,
int seconds,
int timezone)
Create a Java instance of XML Schema builtin datatype
time . |
XMLGregorianCalendar |
newXMLGregorianCalendarTime(int hours,
int minutes,
int seconds,
int milliseconds,
int timezone)
Create a Java instance of XML Schema builtin datatype time.
|
public static final String DATATYPEFACTORY_PROPERTY
Default property name as defined in JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
Default value is javax.xml.datatype.DatatypeFactory
.
public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS
Default implementation class name as defined in JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
Implementers should specify the name of an appropriate class to be instantiated if no other implementation resolution mechanism succeeds.
Users should not refer to this field; it is intended only to document a factory implementation detail.
protected DatatypeFactory()
Protected constructor to prevent instaniation outside of package.
Use newInstance()
to create a DatatypeFactory
.
public static DatatypeFactory newInstance() throws DatatypeConfigurationException
Obtain a new instance of a DatatypeFactory
.
The implementation resolution mechanisms are defined in this
Class
's documentation.
DatatypeFactory
DatatypeConfigurationException
- If the implementation is not
available or cannot be instantiated.newInstance(String factoryClassName, ClassLoader classLoader)
public static DatatypeFactory newInstance(String factoryClassName, ClassLoader classLoader) throws DatatypeConfigurationException
Obtain a new instance of a DatatypeFactory
from class name.
This function is useful when there are multiple providers in the classpath.
It gives more control to the application as it can specify which provider
should be loaded.
Once an application has obtained a reference to a DatatypeFactory
it can use the factory to configure and obtain datatype instances.
Setting the jaxp.debug
system property will cause
this method to print a lot of debug messages
to System.err
about what it is doing and where it is looking at.
If you have problems try:
java -Djaxp.debug=1 YourProgram ....
factoryClassName
- fully qualified factory class name that provides implementation of javax.xml.datatype.DatatypeFactory
.classLoader
- ClassLoader
used to load the factory class. If null
current Thread
's context classLoader is used to load the factory class.DatatypeFactory
DatatypeConfigurationException
- if factoryClassName
is null
, or
the factory class cannot be loaded, instantiated.newInstance()
public abstract Duration newDuration(String lexicalRepresentation)
Obtain a new instance of a Duration
specifying the Duration
as its string representation, "PnYnMnDTnHnMnS",
as defined in XML Schema 1.0 section <IP_ADDRESS>.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration
as:
duration represents a duration of time. The value space of duration is a six-dimensional space where the coordinates designate the Gregorian year, month, day, hour, minute, and second components defined in Section <IP_ADDRESS> of [ISO 8601], respectively. These components are ordered in their significance by their order of appearance i.e. as year, month, day, hour, minute, and second.
All six values are set and availabe from the created Duration
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException
will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
lexicalRepresentation
- String
representation of a Duration
.Duration
created from parsing the lexicalRepresentation
.IllegalArgumentException
- If lexicalRepresentation
is not a valid representation of a Duration
.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- if lexicalRepresentation
is null
.public abstract Duration newDuration(long durationInMilliSeconds)
Obtain a new instance of a Duration
specifying the Duration
as milliseconds.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration
as:
duration represents a duration of time. The value space of duration is a six-dimensional space where the coordinates designate the Gregorian year, month, day, hour, minute, and second components defined in Section <IP_ADDRESS> of [ISO 8601], respectively. These components are ordered in their significance by their order of appearance i.e. as year, month, day, hour, minute, and second.
All six values are set by computing their values from the specified milliseconds
and are availabe using the get
methods of the created Duration
.
The values conform to and are defined by:
XMLGregorianCalendar
Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java RepresentationThe default start instance is defined by GregorianCalendar
's use of the start of the epoch: i.e.,
Calendar.YEAR
= 1970,
Calendar.MONTH
= Calendar.JANUARY
,
Calendar.DATE
= 1, etc.
This is important as there are variations in the Gregorian Calendar,
e.g. leap years have different days in the month = Calendar.FEBRUARY
so the result of Duration.getMonths()
and Duration.getDays()
can be influenced.
durationInMilliSeconds
- Duration in milliseconds to create.Duration
representing durationInMilliSeconds
.public abstract Duration newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)
Obtain a new instance of a Duration
specifying the Duration
as isPositive, years, months, days, hours, minutes, seconds.
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException
will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
A null
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length
of the duration is zero, this parameter will be ignored.years
- of this Duration
months
- of this Duration
days
- of this Duration
hours
- of this Duration
minutes
- of this Duration
seconds
- of this Duration
Duration
created from the specified values.IllegalArgumentException
- If the values are not a valid representation of a
Duration
: if all the fields (years, months, ...) are null or
if any of the fields is negative.UnsupportedOperationException
- If implementation cannot support requested values.public Duration newDuration(boolean isPositive, int years, int months, int days, int hours, int minutes, int seconds)
Obtain a new instance of a Duration
specifying the Duration
as isPositive, years, months, days, hours, minutes, seconds.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length
of the duration is zero, this parameter will be ignored.years
- of this Duration
months
- of this Duration
days
- of this Duration
hours
- of this Duration
minutes
- of this Duration
seconds
- of this Duration
Duration
created from the specified values.IllegalArgumentException
- If the values are not a valid representation of a
Duration
: if any of the fields is negative.newDuration(
boolean isPositive,
BigInteger years,
BigInteger months,
BigInteger days,
BigInteger hours,
BigInteger minutes,
BigDecimal seconds)
public Duration newDurationDayTime(String lexicalRepresentation)
Create a Duration
of type xdt:dayTimeDuration
by parsing its String
representation,
"PnDTnHnMnS",
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
All four values are set and availabe from the created Duration
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException
will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
lexicalRepresentation
- Lexical representation of a duration.Duration
created using the specified lexicalRepresentation
.IllegalArgumentException
- If lexicalRepresentation
is not a valid representation of a Duration
expressed only in terms of days and time.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- If lexicalRepresentation
is null
.public Duration newDurationDayTime(long durationInMilliseconds)
Create a Duration
of type xdt:dayTimeDuration
using the specified milliseconds as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
All four values are set by computing their values from the specified milliseconds
and are availabe using the get
methods of the created Duration
.
The values conform to and are defined by:
XMLGregorianCalendar
Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java RepresentationThe default start instance is defined by GregorianCalendar
's use of the start of the epoch: i.e.,
Calendar.YEAR
= 1970,
Calendar.MONTH
= Calendar.JANUARY
,
Calendar.DATE
= 1, etc.
This is important as there are variations in the Gregorian Calendar,
e.g. leap years have different days in the month = Calendar.FEBRUARY
so the result of Duration.getDays()
can be influenced.
Any remaining milliseconds after determining the day, hour, minute and second are discarded.
durationInMilliseconds
- Milliseconds of Duration
to create.Duration
created with the specified durationInMilliseconds
.public Duration newDurationDayTime(boolean isPositive, BigInteger day, BigInteger hour, BigInteger minute, BigInteger second)
Create a Duration
of type xdt:dayTimeDuration
using the specified
day
, hour
, minute
and second
as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException
will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
A null
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length
of the duration is zero, this parameter will be ignored.day
- Day of Duration
.hour
- Hour of Duration
.minute
- Minute of Duration
.second
- Second of Duration
.Duration
created with the specified day
, hour
, minute
and second
.IllegalArgumentException
- If the values are not a valid representation of a
Duration
: if all the fields (day, hour, ...) are null or
if any of the fields is negative.UnsupportedOperationException
- If implementation cannot support requested values.public Duration newDurationDayTime(boolean isPositive, int day, int hour, int minute, int second)
Create a Duration
of type xdt:dayTimeDuration
using the specified
day
, hour
, minute
and second
as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components.
This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length
of the duration is zero, this parameter will be ignored.day
- Day of Duration
.hour
- Hour of Duration
.minute
- Minute of Duration
.second
- Second of Duration
.Duration
created with the specified day
, hour
, minute
and second
.IllegalArgumentException
- If the values are not a valid representation of a
Duration
: if any of the fields (day, hour, ...) is negative.public Duration newDurationYearMonth(String lexicalRepresentation)
Create a Duration
of type xdt:yearMonthDuration
by parsing its String
representation,
"PnYnM",
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The datatype xdt:yearMonthDuration
is a subtype of xs:duration
whose lexical representation contains only year and month components.
This datatype resides in the namespace XMLConstants.W3C_XPATH_DATATYPE_NS_URI
.
Both values are set and availabe from the created Duration
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException
will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
lexicalRepresentation
- Lexical representation of a duration.Duration
created using the specified lexicalRepresentation
.IllegalArgumentException
- If lexicalRepresentation
is not a valid representation of a Duration
expressed only in terms of years and months.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- If lexicalRepresentation
is null
.public Duration newDurationYearMonth(long durationInMilliseconds)
Create a Duration
of type xdt:yearMonthDuration
using the specified milliseconds as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The datatype xdt:yearMonthDuration
is a subtype of xs:duration
whose lexical representation contains only year and month components.
This datatype resides in the namespace XMLConstants.W3C_XPATH_DATATYPE_NS_URI
.
Both values are set by computing their values from the specified milliseconds
and are availabe using the get
methods of the created Duration
.
The values conform to and are defined by:
XMLGregorianCalendar
Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java RepresentationThe default start instance is defined by GregorianCalendar
's use of the start of the epoch: i.e.,
Calendar.YEAR
= 1970,
Calendar.MONTH
= Calendar.JANUARY
,
Calendar.DATE
= 1, etc.
This is important as there are variations in the Gregorian Calendar,
e.g. leap years have different days in the month = Calendar.FEBRUARY
so the result of Duration.getMonths()
can be influenced.
Any remaining milliseconds after determining the year and month are discarded.
durationInMilliseconds
- Milliseconds of Duration
to create.Duration
created using the specified durationInMilliseconds
.public Duration newDurationYearMonth(boolean isPositive, BigInteger year, BigInteger month)
Create a Duration
of type xdt:yearMonthDuration
using the specified
year
and month
as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The XML Schema specification states that values can be of an arbitrary size.
Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values.
An UnsupportedOperationException
will be thrown with a message indicating implementation limits
if implementation capacities are exceeded.
A null
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length
of the duration is zero, this parameter will be ignored.year
- Year of Duration
.month
- Month of Duration
.Duration
created using the specified year
and month
.IllegalArgumentException
- If the values are not a valid representation of a
Duration
: if all of the fields (year, month) are null or
if any of the fields is negative.UnsupportedOperationException
- If implementation cannot support requested values.public Duration newDurationYearMonth(boolean isPositive, int year, int month)
Create a Duration
of type xdt:yearMonthDuration
using the specified
year
and month
as defined in
XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length
of the duration is zero, this parameter will be ignored.year
- Year of Duration
.month
- Month of Duration
.Duration
created using the specified year
and month
.IllegalArgumentException
- If the values are not a valid representation of a
Duration
: if any of the fields (year, month) is negative.public abstract XMLGregorianCalendar newXMLGregorianCalendar()
Create a new instance of an XMLGregorianCalendar
.
All date/time datatype fields set to DatatypeConstants.FIELD_UNDEFINED
or null.
XMLGregorianCalendar
with all date/time datatype fields set to
DatatypeConstants.FIELD_UNDEFINED
or null.public abstract XMLGregorianCalendar newXMLGregorianCalendar(String lexicalRepresentation)
Create a new XMLGregorianCalendar by parsing the String as a lexical representation.
Parsing the lexical string representation is defined in XML Schema 1.0 Part 2, Section 3.2.[7-14].1, Lexical Representation.
The string representation may not have any leading and trailing whitespaces.
The parsing is done field by field so that the following holds for any lexically correct String x:
newXMLGregorianCalendar(x).toXMLFormat().equals(x)
Except for the noted lexical/canonical representation mismatches listed in XML Schema 1.0 errata, Section <IP_ADDRESS>.
lexicalRepresentation
- Lexical representation of one the eight XML Schema date/time datatypes.XMLGregorianCalendar
created from the lexicalRepresentation
.IllegalArgumentException
- If the lexicalRepresentation
is not a valid XMLGregorianCalendar
.NullPointerException
- If lexicalRepresentation
is null
.public abstract XMLGregorianCalendar newXMLGregorianCalendar(GregorianCalendar cal)
Create an XMLGregorianCalendar
from a GregorianCalendar
.
Field by Field Conversion from
GregorianCalendar to an XMLGregorianCalendar
|
|
|---|---|
java.util.GregorianCalendar field |
javax.xml.datatype.XMLGregorianCalendar field |
ERA == GregorianCalendar.BC ? -YEAR : YEAR |
XMLGregorianCalendar.setYear(int year) |
MONTH + 1 |
XMLGregorianCalendar.setMonth(int month) |
DAY_OF_MONTH |
XMLGregorianCalendar.setDay(int day) |
HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND |
XMLGregorianCalendar.setTime(int hour, int minute, int second, BigDecimal fractional) |
(ZONE_OFFSET + DST_OFFSET) / (60*1000) (in minutes) |
XMLGregorianCalendar.setTimezone(int offset) *
|
*conversion loss of information. It is not possible to represent
a java.util.GregorianCalendar
daylight savings timezone id in the
XML Schema 1.0 date/time datatype representation.
To compute the return value's TimeZone
field,
this.getTimezone() != FIELD_UNDEFINED
,
create a java.util.TimeZone
with a custom timezone id
using the this.getTimezone()
.GregorianCalendar
default timezone value
for the host is defined as specified by
java.util.TimeZone.getDefault()
.cal
- java.util.GregorianCalendar
used to create XMLGregorianCalendar
XMLGregorianCalendar
created from java.util.GregorianCalendar
NullPointerException
- If cal
is null
.public abstract XMLGregorianCalendar newXMLGregorianCalendar(BigInteger year, int month, int day, int hour, int minute, int second, BigDecimal fractionalSecond, int timezone)
Constructor allowing for complete value spaces allowed by
W3C XML Schema 1.0 recommendation for xsd:dateTime and related
builtin datatypes. Note that year
parameter supports
arbitrarily large numbers and fractionalSecond has infinite
precision.
A null
value indicates that field is not set.
year
- of XMLGregorianCalendar
to be created.month
- of XMLGregorianCalendar
to be created.day
- of XMLGregorianCalendar
to be created.hour
- of XMLGregorianCalendar
to be created.minute
- of XMLGregorianCalendar
to be created.second
- of XMLGregorianCalendar
to be created.fractionalSecond
- of XMLGregorianCalendar
to be created.timezone
- of XMLGregorianCalendar
to be created.XMLGregorianCalendar
created from specified values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance
as determined by XMLGregorianCalendar.isValid()
.public XMLGregorianCalendar newXMLGregorianCalendar(int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)
Constructor of value spaces that a
java.util.GregorianCalendar
instance would need to convert to an
XMLGregorianCalendar
instance.
XMLGregorianCalendar eon
and
fractionalSecond
are set to null
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
year
- of XMLGregorianCalendar
to be created.month
- of XMLGregorianCalendar
to be created.day
- of XMLGregorianCalendar
to be created.hour
- of XMLGregorianCalendar
to be created.minute
- of XMLGregorianCalendar
to be created.second
- of XMLGregorianCalendar
to be created.millisecond
- of XMLGregorianCalendar
to be created.timezone
- of XMLGregorianCalendar
to be created.XMLGregorianCalendar
created from specified values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance
as determined by XMLGregorianCalendar.isValid()
.public XMLGregorianCalendar newXMLGregorianCalendarDate(int year, int month, int day, int timezone)
Create a Java representation of XML Schema builtin datatype date
or g*
.
For example, an instance of gYear
can be created invoking this factory
with month
and day
parameters set to
DatatypeConstants.FIELD_UNDEFINED
.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
year
- of XMLGregorianCalendar
to be created.month
- of XMLGregorianCalendar
to be created.day
- of XMLGregorianCalendar
to be created.timezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance
as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, int timezone)
Create a Java instance of XML Schema builtin datatype time
.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
hours
- number of hoursminutes
- number of minutesseconds
- number of secondstimezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance
as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, BigDecimal fractionalSecond, int timezone)
Create a Java instance of XML Schema builtin datatype time.
A null
value indicates that field is not set.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
hours
- number of hoursminutes
- number of minutesseconds
- number of secondsfractionalSecond
- value of null
indicates that this optional field is not set.timezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance
as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, int milliseconds, int timezone)
Create a Java instance of XML Schema builtin datatype time.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
hours
- number of hoursminutes
- number of minutesseconds
- number of secondsmilliseconds
- number of millisecondstimezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field
as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance
as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2015, Oracle and/or its affiliates. All rights reserved.


To react to horizontal scrolls the controller simply needs to be initialized using the option {vertical: false}
.
Widen the horizon.Widen the horizon.Widen the horizon.Widen the horizon.Widen the horizon.Widen the horizon.Widen the horizon.
view sourceanother text to try
view source


JE log files are not like the log files of other database systems. Nor are they like the log files or database files created by Berkeley DB C Edition. In this guide you will learn more about log files as you go along, but it is good to keep the following points in mind as you begin using JE.
JE log files are "append only". Record insertions, deletions, and updates are always added at the end
of the current file. The first file is named 00000000.jdb
. When that file grows to a certain size
(10 MB by default) a new file named 00000001.jdb
becomes the current file, and so on.
There are no separate database files. Unlike Berkeley DB C Edition, databases are not stored in files that are separate from the transaction log. The transaction log and the database records are stored together in a single sequential log consisting of multiple log files.
The JE cleaner is responsible for reclaiming unused disk space. When the records in a log file are superseded by deletions or updates recorded in a later log file, the older log file is no longer fully utilized. The cleaner, which operates by default as a separate thread, determines the least utilized log files, copies any still utilized records in those files to the end of the current log file, and finally deletes the now completely un-utilized log file.
See The Cleaner Thread for more information on the cleaner.
Cleaning does not start immediately and never produces 100% utilization. Until you have written enough data to create several log files, and some of that data is obsoleted through deletions and updates, you will not notice any log files being deleted by the cleaner. By default cleaning occurs in the background and maintains the log files at 50% utilization. You can configure a higher utilization value, but configuring too high a utilization value will reduce overall performance.
Cleaning is not automatically performed when closing the environment. If you wish to reduce unused disk space to a minimum at a particular point in time, you must explicitly call a method to perform log cleaning. See the Closing Database Environments for more information.
Log file deletion only occurs after a checkpoint. The cleaner prepares log files to be deleted, but file deletion must be performed after a checkpoint to ensure that the files are no longer referenced. Checkpoints occur on their own schedule, which is every 20 MB of log written, by default. This is part of the reason that you will not see log files being deleted until after several files have been created.
When using JE's replication (high availability) feature, a checkpoint does not delete the cleaned log file but instead instead changes the status of the file to reserved. Reserved files are only deleted when disk utilization exceeds the values set for either EnvironmentConfig.MAX_DISK or EnvironmentConfig.FREE_DISK.
Log files can be spread across multiple directories, and therefore across multiple disks through the use of links or mount points. See Multiple Environment Subdirectories for more information.


{% extends "layout.html" %} {% block page_title %} Contact the Ministry of Justice {% endblock %} {% block content %} Your comment/feedback Please note we are unable to reply to the feedback you provide in this box. If you require a response, please go back and select 'Question'. What is your comment? {% endblock %}
Please note we are unable to reply to the feedback you provide in this box. If you require a response, please go back and select 'Question'.


Amount due: £0.00 (see details below)
Please note: To view a breakdown of a specific accounting period, follow the link in the accounting period ending column.
| 31 Dec 2020 | Live | 0.00 |
| 31 Dec 2019 | Live | 0.00 |
| 31 Dec 2018 | Live | 0.00 |
| 31 Dec 2017 | Live | 0.00 |
You can also view other accounting periods not listed here.


This is a p element (will not be selected, because it is not the next sibling element of div. It is the previous sibling element.)
This is a p element.
This is another p element.
This is a p element inside a div element (will not be selected, because it does not share the same parent as the other p elements that are selected in this example).
This is a p element.


There are a ton of benefits of version control. The main benefit is giving developers (or any type of creator) revision history of the changes they've made to files. If they need to revert to a previous more stable state, it's simple to do that.
Git helps you keep track of changes by storing a history of the state of your system each time you commit your files to the git repository. By giving yourself lots of checkpoints, you can traverse through time if you need to make changes. It's beneficial for distributed teams because keeping track of changes helps everyone stay organized and prevents the chance of overwriting files.
GitHub is a great place to store your code because it's so tightly integrated with the git system. It's free for public code, and it's social so anyone can find your code and you can find anyone else's code. It's also beneficial to use GitHub to store your code because your profile becomes a developer portfolio, potential employers can see all of the hard work you've done over the years.


--- title: Plugins for Kong layout: default header_title: Plugins header_icon: /assets/images/icons/icn-plugins.svg header_caption: Add powerful functionalities to your APIs header_btn_text: Suggest Plugin header_btn_href: https://github.com/Mashape/kong/issues/new header_btn_target: _blank ---
Protect your APIs and authenticate developers with the following authentication schemes
Find other plugins that can empower your APIs with amazing features
Log requests and response data to your preferred system
Third party plugins from NGINX, Inc.


This website provides a more in-depth overview on what quantum computing is. It discusses what quantum coputers are, what qubits are and how they function, and exactly how and why qubits perform better than traditional bits. For each of these topics, the site provides in depth explanations and clear visuals. The site then provides an extensive timeline of innovations in quantum computing, spanning from 1927 to today, including graphs, charts, diagrams, and images.
This article discusses a nearly forgotten alogirthm in the crytogoraphic world that was developed in 1978. This algorithm happens to be resistant to quantum attacks, and, due to its computational complexity is being sought after so that it can be adapted for a post-quantum future. The article runs through a brief history of ecnryption algorithms, with a specific focus on asymmetric and symmetric code/algorithms and how they relate to modern ecnryption standards. The article then desribes Peter Shor's quantum algorithm that allows quantum computers to break the modern encryption standard. It then delineates why a certain algorithm from 1978 relies on a system different than the modern algorithms - it uses the hidden supgroup problem to create encryptions as opposed to factorization of integers.
This article discusses the current (as of the time it was written: May 2019) state of quantum computing. Specifically, this article focuses on the development of a an algorithm that could break the modern encryption standard - 2048-bit RSA - in around 8 hours. The article first discusses current estimates for how long it will take for data encrypted with 2048-bit RSA to become unsecure (25 years). It then describes the ways that this new algorithm is more efficient than Peter Shor's algorithm (the algorithm that originally showed that quantum computers could break 2048-bit RSA). The article concludes with various reasons why this is worrisome.
This article reports on a test that physicists have designed in order to show that a given quantum computer has achieved quantum supremacy. The article begins by explaining why a benchmark is helpful in determining the strngth of a given computer - as many are designed with specific tasks in mind. It also discusses an important issue with defining quantum supremacy relative to the power of classical computers - as the most powerful classical supercomputers are being improved upon constantly. The article concludes by contrasting theory with reality - as classical computers require more energy to have the equivalent power of a quantum computer, humans are hitting the limit of the amount of energy that can produced, giving quantum computers an ever increasing advantage.
This article discusses the feasibility of using quantum computers for commerial uses within the next five years. The authors highlight 3 potential uses: quantum simulation (using quantum computers to simulate real situations and make predictions), quantum-assisted optimization (using quantum computers to optimize algorithms in order to more efficiently proccess data), and quantum sampling (using quantum computers to more rapidly determine patterns in order to make accurate statistical inferences). The article goes on to discuss technical barriers and business opportunities utilizing commercialized quantum computers. The authors wrap up by expressing hope for the future's use of quantum computing.


madvise - give advice about use of memory
#include <sys/mman.h>
int madvise(void *addr, size_t
length, int advice);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
madvise():
- Since glibc 2.19:
- _DEFAULT_SOURCE
- Up to and including glibc 2.19:
- _BSD_SOURCE
The madvise() system call is used to give advice or directions to the
kernel about the address range beginning at address addr and with size
length bytes In most cases, the goal of such advice is to improve
system or application performance.
Initially, the system call supported a set of
"conventional" advice values, which are also available on
several other implementations. (Note, though, that madvise() is not
specified in POSIX.) Subsequently, a number of Linux-specific advice
values have been added.
The advice values listed below allow an application to tell the kernel
how it expects to use some mapped or shared memory areas, so that the kernel
can choose appropriate read-ahead and caching techniques. These advice
values do not influence the semantics of the application (except in the case
of MADV_DONTNEED), but may influence its performance. All of the
advice values listed here have analogs in the POSIX-specified
posix_madvise(3) function, and the values have the same meanings, with
the exception of MADV_DONTNEED.
The advice is indicated in the advice argument, which is
one of the following:
- MADV_NORMAL
- No special treatment. This is the default.
- MADV_RANDOM
- Expect page references in random order. (Hence, read ahead may be less
useful than normally.)
- MADV_SEQUENTIAL
- Expect page references in sequential order. (Hence, pages in the given
range can be aggressively read ahead, and may be freed soon after they are
accessed.)
- MADV_WILLNEED
- Expect access in the near future. (Hence, it might be a good idea to read
some pages ahead.)
- MADV_DONTNEED
- Do not expect access in the near future. (For the time being, the
application is finished with the given range, so the kernel can free
resources associated with it.)
- After a successful MADV_DONTNEED operation, the semantics of memory
access in the specified region are changed: subsequent accesses of pages
in the range will succeed, but will result in either repopulating the
memory contents from the up-to-date contents of the underlying mapped file
(for shared file mappings, shared anonymous mappings, and shmem-based
techniques such as System V shared memory segments) or zero-fill-on-demand
pages for anonymous private mappings.
- Note that, when applied to shared mappings, MADV_DONTNEED might not
lead to immediate freeing of the pages in the range. The kernel is free to
delay freeing the pages until an appropriate moment. The resident set size
(RSS) of the calling process will be immediately reduced however.
- MADV_DONTNEED cannot be applied to locked pages, Huge TLB pages, or
VM_PFNMAP pages. (Pages marked with the kernel-internal
VM_PFNMAP flag are special memory areas that are not managed by the
virtual memory subsystem. Such pages are typically created by device
drivers that map the pages into user space.)
The following Linux-specific advice values have no counterparts in the
POSIX-specified posix_madvise(3), and may or may not have counterparts
in the madvise() interface available on other implementations. Note
that some of these operations change the semantics of memory accesses.
- MADV_REMOVE (since Linux 2.6.16)
- Free up a given range of pages and its associated backing store. This is
equivalent to punching a hole in the corresponding byte range of the
backing store (see fallocate(2)). Subsequent accesses in the
specified address range will see bytes containing zero.
- The specified address range must be mapped shared and writable. This flag
cannot be applied to locked pages, Huge TLB pages, or VM_PFNMAP
pages.
- In the initial implementation, only tmpfs(5) was supported
MADV_REMOVE; but since Linux 3.5, any filesystem which supports the
fallocate(2) FALLOC_FL_PUNCH_HOLE mode also supports
MADV_REMOVE. Hugetlbfs fails with the error EINVAL and other
filesystems fail with the error EOPNOTSUPP.
- MADV_DONTFORK (since Linux 2.6.16)
- Do not make the pages in this range available to the child after a
fork(2). This is useful to prevent copy-on-write semantics from
changing the physical location of a page if the parent writes to it after
a fork(2). (Such page relocations cause problems for hardware that
DMAs into the page.)
- MADV_DOFORK (since Linux 2.6.16)
- Undo the effect of MADV_DONTFORK, restoring the default behavior,
whereby a mapping is inherited across fork(2).
- MADV_HWPOISON (since Linux 2.6.32)
- Poison the pages in the range specified by addr and length
and handle subsequent references to those pages like a hardware memory
corruption. This operation is available only for privileged
(CAP_SYS_ADMIN) processes. This operation may result in the calling
process receiving a SIGBUS and the page being unmapped.
- This feature is intended for testing of memory error-handling code; it is
available only if the kernel was configured with
CONFIG_MEMORY_FAILURE.
- MADV_MERGEABLE (since Linux 2.6.32)
- Enable Kernel Samepage Merging (KSM) for the pages in the range specified
by addr and length. The kernel regularly scans those areas
of user memory that have been marked as mergeable, looking for pages with
identical content. These are replaced by a single write-protected page
(which is automatically copied if a process later wants to update the
content of the page). KSM merges only private anonymous pages (see
mmap(2)).
- The KSM feature is intended for applications that generate many instances
of the same data (e.g., virtualization systems such as KVM). It can
consume a lot of processing power; use with care. See the Linux kernel
source file Documentation/admin-guide/mm/ksm.rst for more
details.
- The MADV_MERGEABLE and MADV_UNMERGEABLE operations are
available only if the kernel was configured with CONFIG_KSM.
- MADV_UNMERGEABLE (since Linux 2.6.32)
- Undo the effect of an earlier MADV_MERGEABLE operation on the
specified address range; KSM unmerges whatever pages it had merged in the
address range specified by addr and length.
- MADV_SOFT_OFFLINE (since Linux 2.6.33)
- Soft offline the pages in the range specified by addr and
length. The memory of each page in the specified range is preserved
(i.e., when next accessed, the same content will be visible, but in a new
physical page frame), and the original page is offlined (i.e., no longer
used, and taken out of normal memory management). The effect of the
MADV_SOFT_OFFLINE operation is invisible to (i.e., does not change
the semantics of) the calling process.
- This feature is intended for testing of memory error-handling code; it is
available only if the kernel was configured with
CONFIG_MEMORY_FAILURE.
- MADV_HUGEPAGE (since Linux 2.6.38)
- Enable Transparent Huge Pages (THP) for pages in the range specified by
addr and length. Currently, Transparent Huge Pages work only
with private anonymous pages (see mmap(2)). The kernel will
regularly scan the areas marked as huge page candidates to replace them
with huge pages. The kernel will also allocate huge pages directly when
the region is naturally aligned to the huge page size (see
posix_memalign(2)).
- This feature is primarily aimed at applications that use large mappings of
data and access large regions of that memory at a time (e.g.,
virtualization systems such as QEMU). It can very easily waste memory
(e.g., a 2 MB mapping that only ever accesses 1 byte will result in
2 MB of wired memory instead of one 4 KB page). See the
Linux kernel source file Documentation/admin-guide/mm/transhuge.rst
for more details.
- The MADV_HUGEPAGE and MADV_NOHUGEPAGE operations are
available only if the kernel was configured with
CONFIG_TRANSPARENT_HUGEPAGE.
- MADV_NOHUGEPAGE (since Linux 2.6.38)
- Ensures that memory in the address range specified by addr and
length will not be collapsed into huge pages.
- MADV_DONTDUMP (since Linux 3.4)
- Exclude from a core dump those pages in the range specified by addr
and length. This is useful in applications that have large areas of
memory that are known not to be useful in a core dump. The effect of
MADV_DONTDUMP takes precedence over the bit mask that is set via
the /proc/[pid]/coredump_filter file (see core(5)).
- MADV_DODUMP (since Linux 3.4)
- Undo the effect of an earlier MADV_DONTDUMP.
- MADV_FREE (since Linux 4.5)
- The application no longer requires the pages in the range specified by
addr and len. The kernel can thus free these pages, but the
freeing could be delayed until memory pressure occurs. For each of the
pages that has been marked to be freed but has not yet been freed, the
free operation will be canceled if the caller writes into the page. After
a successful MADV_FREE operation, any stale data (i.e., dirty,
unwritten pages) will be lost when the kernel frees the pages. However,
subsequent writes to pages in the range will succeed and then kernel
cannot free those dirtied pages, so that the caller can always see just
written data. If there is no subsequent write, the kernel can free the
pages at any time. Once pages in the range have been freed, the caller
will see zero-fill-on-demand pages upon subsequent page references.
- The MADV_FREE operation can be applied only to private anonymous
pages (see mmap(2)). In Linux before version 4.12, when freeing
pages on a swapless system, the pages in the given range are freed
instantly, regardless of memory pressure.
- MADV_WIPEONFORK (since Linux 4.14)
- Present the child process with zero-filled memory in this range after a
fork(2). This is useful in forking servers in order to ensure that
sensitive per-process data (for example, PRNG seeds, cryptographic
secrets, and so on) is not handed to child processes.
- The MADV_WIPEONFORK operation can be applied only to private
anonymous pages (see mmap(2)).
- Within the child created by fork(2), the MADV_WIPEONFORK
setting remains in place on the specified address range. This setting is
cleared during execve(2).
- MADV_KEEPONFORK (since Linux 4.14)
- Undo the effect of an earlier MADV_WIPEONFORK.
On success, madvise() returns zero. On error, it returns -1 and
errno is set appropriately.
- EACCES
- advice is MADV_REMOVE, but the specified address range is
not a shared writable mapping.
- EAGAIN
- A kernel resource was temporarily unavailable.
- EBADF
- The map exists, but the area maps something that isn't a file.
- EINVAL
- addr is not page-aligned or length is negative.
- EINVAL
- advice is not a valid.
- EINVAL
- advice is MADV_DONTNEED or MADV_REMOVE and the
specified address range includes locked, Huge TLB pages, or
VM_PFNMAP pages.
- EINVAL
- advice is MADV_MERGEABLE or MADV_UNMERGEABLE, but the
kernel was not configured with CONFIG_KSM.
- EINVAL
- advice is MADV_FREE or MADV_WIPEONFORK but the
specified address range includes file, Huge TLB, MAP_SHARED, or
VM_PFNMAP ranges.
- EIO
- (for MADV_WILLNEED) Paging in this area would exceed the process's
maximum resident set size.
- ENOMEM
- (for MADV_WILLNEED) Not enough memory: paging in failed.
- ENOMEM
- Addresses in the specified range are not currently mapped, or are outside
the address space of the process.
- EPERM
- advice is MADV_HWPOISON, but the caller does not have the
CAP_SYS_ADMIN capability.
Since Linux 3.18, support for this system call is optional, depending on the
setting of the CONFIG_ADVISE_SYSCALLS configuration option.
madvise() is not specified by any standards. Versions of this system
call, implementing a wide variety of advice values, exist on many other
implementations. Other implementations typically implement at least the flags
listed above under Conventional advice flags, albeit with some
variation in semantics.
POSIX.1-2001 describes posix_madvise(3) with constants
POSIX_MADV_NORMAL, POSIX_MADV_RANDOM,
POSIX_MADV_SEQUENTIAL, POSIX_MADV_WILLNEED, and
POSIX_MADV_DONTNEED, and so on, with behavior close to the similarly
named flags listed above.
The Linux implementation requires that the address addr be page-aligned,
and allows length to be zero. If there are some parts of the specified
address range that are not mapped, the Linux version of madvise()
ignores them and applies the call to the rest (but returns ENOMEM from
the system call, as it should).
getrlimit(2), mincore(2), mmap(2), mprotect(2),
msync(2), munmap(2), prctl(2), posix_madvise(3),
core(5)
This page is part of release 5.05 of the Linux man-pages project. A
description of the project, information about reporting bugs, and the latest
version of this page, can be found at https://www.kernel.org/doc/man-pages/.


-
basic
$29
Basic plan
-
pro
$95
Professional plan
-
mid
$65
Medium plan
professional plan
Plan "Pro" offers 500GB of top speed, high-quality Internet connection for all of your devices. Perfect for offices and other shared spaces, where you need a reliable, fast network. Contract length is 3 years.


Team Badlands
Aaron Greiner, Franton Lin, Haley Pelletier, Radmer ver der Heyde, Shrinidhi Thirumalai
Project Brief
Consent Form
Inspirational Designs Assignment
Needs Analysis
Design Artifacts
Design Development


{% extends "layouts/default.html" %} {% block title %} Panels {% endblock title %} {% block stylesheets %} {% endblock stylesheets %} {% block content %}
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.
A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.
A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.
A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.


Weathermaster:
Main Menu
Welcome to the Research Laboratory.
[Quest _120_PavelsResearch 32042-11.htm|Guardian]
[Quest _120_PavelsResearch 32042-12.htm|Research Laboratory Building]
[Quest _120_PavelsResearch 32042-13.htm|Working Golem]
[Quest _120_PavelsResearch 32042-15.htm|"Is there anything else I have to do?"]


🔢 What is GRIB2?¶
GRIB stands for “gridded binary” and is an international standard for meteorological data. There is an old standard GRIB, and a new standard GRIB2. In these documents, when I refer to GRIB I really mean the new GRIB2 standard.
Yes, GRIB is notoriously difficult to work with and has a steep learning curve for those unfamiliar with the format. I won’t discuss here the good, bad, and ugly of GRIB frankly because I’m not an expert and probably will say something wrong. However, even seasoned meteorologists complain about GRIB. Since complaining won’t fix the problem, I choose to embrace it because, for now, NWP data is widely distributed as GRIB2.
Command Line Tools¶
There are two command-line tools for looking at GRIB file contents.
wgrib2 is a product of NOAA and can be installed via conda-forge in your environment (linux only). | wrgib2 documentation |
grib_ls is a product of ECMWF and is a dependency of cfgrib. This utility is included when you install cfgrib in your conda environment.
For a sample GRIB2 file with precipitation data, below is the output using both tools
$ wgrib2 subset_20201214_hrrr.t00z.wrfsfcf12.grib2
1:0:d=2020121400:APCP:surface:0-12 hour acc fcst:
2:887244:d=2020121400:APCP:surface:11-12 hour acc fcst:
$ grib_ls subset_20201214_hrrr.t00z.wrfsfcf12.grib2
subset_20201214_hrrr.t00z.wrfsfcf12.grib2
edition centre date dataType gridType typeOfLevel level stepRange shortName packingType
2 kwbc 20201214 fc lambert surface 0 0-12 tp grid_complex_spatial_differencing
2 kwbc 20201214 fc lambert surface 0 11-12 tp grid_complex_spatial_differencing
2 of 2 messages in subset_20201214_hrrr.t00z.wrfsfcf12.grib2
2 of 2 total messages in 1 files
Python Tools¶
There are two key python packages for reading GRIB2 files. Both can be installed via conda-forge.
pygrib is what I started to learn and still use sometimes. | Video Demo | pygrib GitHub |
cfgrib works well reading GRIB2 data as xarray datasets. Make sure you have the latest version (>0.9.8) | cfgrib GitHub
How GRIB subsetting works in Herbie¶
GRIB files are gridded binary. GRIB _messages_ or _fields_ are stacked on top of each other in a file. Each field contains data for one variable at a specific level across the gridded model domain. Because the file is made up of individual “messages,” it is possible to download portions of GRIB2 file by retrieving just specific messages.
Herbie supports subsetting GRIB2 files by GRIB message, provided that an _inventory_ or _index_ (.idx) file exists. The index file tells us the beginning byte of each GRIB message. To download a subset, Herbie uses the cURL command which allows you to download a range of bytes from a file. By repeating the cURL command and appending the messages you a file, you can subset a full file on the remote server and download only the fields you need. Keep in mind that a GRIB message represents the variable over the full grid. It is only possible to subset the file by GRIB message and not by geographical region (i.e., you cannot do a regional subset).
Why would you want to subset GRIB2 files? Well, GRIB files provided by operational forecast centers are usually very large because they can contain hundred of model output variables, and each variable is its own GRIB message. For example, native grid HRRR files can be ~700 MB each! That adds up quick if you need a lot of days and forecasts. Often, you only need some of the data in the file. The size of a single HRRR message is about 1 MB. If you subset the data as you download it, you will save a lot of disk space and improve download time.
The challenge to downloading parts of the full GRIB2 file finding the byte range for a variable you want. That is what Herbie does for you. It looks at the index file, identifies the variables you want and its byte range, and downloads each message you request with cURL.
Each GRIB2 file has a unique index file and looks something like this example from the HRRR model
1:0:d=2021072701:REFC:entire atmosphere:anl:
2:354859:d=2021072701:RETOP:cloud top:anl:
3:624897:d=2021072701:var discipline=0 center=7 local_table=1 parmcat=16 parm=201:entire atmosphere:anl:
4:1037681:d=2021072701:VIL:entire atmosphere:anl:
5:1332326:d=2021072701:VIS:surface:anl:
6:2730828:d=2021072701:REFD:1000 m above ground:anl:
7:2921075:d=2021072701:REFD:4000 m above ground:anl:
8:3140924:d=2021072701:REFD:263 K level:anl:
9:3364551:d=2021072701:GUST:surface:anl:
10:4522696:d=2021072701:UGRD:250 mb:anl:
11:5299993:d=2021072701:VGRD:250 mb:anl:
12:6083105:d=2021072701:UGRD:300 mb:anl:
13:6840781:d=2021072701:VGRD:300 mb:anl:
14:7614021:d=2021072701:HGT:500 mb:anl:
15:8356201:d=2021072701:TMP:500 mb:anl:
16:8898145:d=2021072701:DPT:500 mb:anl:
17:9954184:d=2021072701:UGRD:500 mb:anl:
18:10538876:d=2021072701:VGRD:500 mb:anl:
Each part has meaning as described in the figure
For example, we can call the cURL command to download a valid GRIB2 file with only the 2 meter temperature variable.
curl -o 20180101_00zf00_2mTemp.grib2 --range 34884036-36136433 https://pando-rgw01.chpc.utah.edu/hrrr/sfc/20180101/hrrr.t00z.wrfsfcf00.grib2
You could repeat the cURL download for different ranges append several variables output to the same file.
curl --range ######-###### >> outFile.grib2
For Herbie to download a subset of the file, this index file must exist on a remote server. Without the index file, it is impossible to know the byte range for each variable. If the index files do not exists, ask the data provider to generate the inventory files and host them on the remote server. The index files can be created using wgrib2.
wgrib2 -s file.grib2 > file.grib2.idx
Generally speaking, index files share the same URL as the GRIB2 file except with .idx
appended to the end of the file name. If the GRIB2 file hrrr.t01z.wrfsfcf00.grib2
exists, then the index file would be hrrr.t01z.wrfsfcf00.grib2.idx
.
Note
Regional subsetting is not possible with the methods. This would require some server-side processes. A useful alternative to the GRIB standard is the fairly new Zarr format, which makes subsetting by region possible.
Note
This method is similar to that used in Wesley Ebisuzaki’s Fast Downloading GRIB script.
Note
When an index file doesn’t exist, wgrib2 is used to print the index inventory. wgrib2 can be installed via conda for Linux, but the installation for Windows is a bit more involved. Instead, eccodes can be installed via conda for Linux, OS, and Windows. You can use eccodes’ grib_ls command to print out a type of inventory that includes the beginning byte with grib_ls -p count,offset,date,hour,level,typeOfLevel,name,step file.grib2
, though Herbie does not interpret this type of inventory. (Pull request anyone?)
$ grib_ls -p count,offset,date,hour,level,typeOfLevel,name,step file.grib2
hrrr.t12z.wrfsfcf06.grib2.subset_14-15-16-17-18
count offset date hour level typeOfLevel name step
1 0 20210101 12 500 isobaricInhPa Geopotential Height 6
2<PHONE_NUMBER>0101 12 500 isobaricInhPa Temperature 6
3 1.2795e+06 20210101 12 500 isobaricInhPa Dew point temperature 6
4 2.21452e+06 20210101 12 500 isobaricInhPa U component of wind 6
5 2.80253e+06 20210101 12 500 isobaricInhPa V component of wind 6
5 of 5 messages in file.grib2


influenza viral cells RIG-I RNA (Figure antiviral virus shRNA viruses titers used ′-PPP mG-capped {border-style using px;} transfected #ffffff;} infected NSshRNA analysis expression mRNA target activation control day reduction therapeutic ′-PPP-NSshRNA Influenza protein sequence type A/Brisbane// IFN-β However, RIG-I, constructs scrambled shRNAs silencing inhibition prophylactic significant treatment Figure IFN-β, MOI followed gene harvested levels logs transcription -fold RIG-I-mediated administered increase induction infection log plaque px; shRNA, transfection vitro {font-family (in A/PR// Control IFN USA), administration capped circulating compared differences end font-size forward immune independent manufacturer’s moiety neuraminidase pathway post-infection post-infection, real-time reverse shown suppress time ′-PPP-NSshRNA, %–% A). Antiviral Centers DNA Disease Is. NS, NSshRNAs PCR [], assay baloxavir cell counterparts, double; effects experiments. induced interferon mean mediated pandemic pathogen polymerase potential quantitative represent responses sense sequences study supernatants titer treated virus. vivo-jetPEI ′-PPP-NSshRNAs CA, Cell Error GAG IFN-λ, Med. Mice One-way Prophylactic RANTES Res. Sci. Therapeutic USA). Vero Virol. accessibility analyze bars border-color border-width collected comparisons conserved corresponding did dose drug-resistant dual-function earlier effect effectiveness groups human increases inhibits lung major mock multiple performed post-transfection prior reduced replication resistance resistant results sequence, solid; suppresses treat vaccine versus {font-style {font-weight (HN) ANOVA B), Dis. IVT Infect. MDCK RNAs Surveill. United access addition, analyzed approach approved bold containing counterparts courier; days decrease domains dsDNA effective em; fold group group. inhibited kit lack lysates measured medical mice model number observed points pt;} regions respectively. resulted resulting ribozyme secondary shRNAs, significantly similar small strains strains. studies template triphosphate virus, vivo ′-PPP-scrambled


Royal Group and Fusionex Group sign MOA to power up Smart Trade Facilitation in Cambodia
by SponsoredThe Royal group, Cambodia’s leading conglomerate and Fusionex Group, one of the largest multi award-winning and the leading data technology group in the region, signed a memorandum of agreement where both groups will cooperate in the area of Smart Trade Facilitation in Cambodia.
Neak Oknha Kith Meng, Chairman and group CEO of RGC, emphasized that the Royal Group via its subsidiaries (WING, CELLCARD and EZECOM) is the leading digitalization, payment provider, internet service provider and partner of choice in Cambodia. RGC is partnering with Fusionex Group, a world-class leader for pioneering technologies in Big Data, Artificial Intelligence (AI) and Smart Trade Facilitation to power up trade facilitation for the Kingdom of Cambodia.
This cooperation between the two leading groups will help to bring the know-how and expertise in areas of Data Analytics, Big Data, AI and Smart Trade Facilitation to Cambodia which will be a welcome impetus to support economic growth in the Kingdom and encourage cross-border trade.


Child nodes inside of a node_modules
path under this package.
An array of resolved dependencies of this package.
Indicates all dependencies are resolved or not.
A package's unique id as {package name}/{package version}
format.
Indicates this node and it's dependencies are linked or not.
This value is changed as true
after linkDependencies call.
Contents of the package.json file of this package.
Name of the package. The name field of package.json. If the name field of package.json is empty, directory name of the package will be used.
An upper directory node of child nodes in a node_modules
directory.
parent1/node_modules/child1
An absolute path of this node.
An array of dependencies which remain unresolved after dependency resolution try.
Indicates this node is validated.
Returns a node with the given name which this node depends on.
The name of a dependency.
Returns true
if this node depends on the package
with the given name and optional version.
The name of a dependency.
The version of the dependency.
For each unresolved dependencies, this method check if the dependency node exist, and if it exists and satisfies version then add to dependencies and remove from unresolvedDependencies.
If the package.json
has the optionalDependencies
and some of it also
exists unresolved dependencies, this method will remove them from
the unresolved dependencies.
Calls linkDependencies, then calls validate
Called when the resolution process for this node has been ended.
If this value is true this node will resolve devDependencies
too.
Validates all of this node's dependencies recursively.
Generated using TypeDoc
Represents a package as a graph node.


BY EDWIN JAHIEL
CHILDREN OF HEAVEN ( BACHEHA-YE ASEMAN) (Iran, 1997; US release 1999) *** Written and directed by Majid Majidi. Photography, Parviz Malek-zadeh. Editing, Hassan Hassan-doost. Set design, Ashgar Nezadh Imani. Production mgr., Seyed Saeed Seyedzade. Music, Keivan Jahanshahi. Produced by Donah Film Co. & Institute for the Intellectual Development of Children & Young Adults. Cast: Amir Naji (Ali's Father), Mir Farrokh Hashemian (Ali), Bahareh Seddiqi (Zahra), Nafiseh Jafar Mohammadi (Roya), Fereshteh Sarabandi (Ali's Mother), Kamal Mir-karimi (the Principal) and Behzad Rafi'i (the Coach). A Miramax release. 88 minutes. In Farsi, with English subtitles. Rated G. At the Art Theater.
Iranian cinema became known around the mid-1960s. In 1979, the fall of the Shah and the takeover by the Ayatollah Khomeini's regime made the country into a theocracy with many restrictions and severe censorship.During the Khomeini decade, cinema declined in numbers, quality and scope.
 Several directors --these days the big name is Abbas Kiarostami --became world figures, not in the entertainment-oriented, subtitles-loathing USA, but in Europe and its festivals. Censorship however, though somewhat relaxed, is still going strong in Iran.
Iranian movies have a special niche from the Shah's days on: films for and/or about children. An Iranian researcher preparing a video documentary interviewed several filmmakers on such movies. Other than the expected reasons ("kids are our future" etc.) a major stated or subsumed factor was those films are "safer" and face reduced censorship. As I construe this, many kidpics can also be an alibi for hinting at negative social and other conditions.
Before several autocratic regimes dissolved, the device of circumventing the censors via indirection was thriving in many countries. In Franco's Spain or Communist Poland and Czechoslovakia, seemingly non-political subjects and characters used, in fact "invisible" allusions through symbols, metaphors, humor or irony, to make their critical points. The work of many filmmakers was enriched and refined by necessary subtleties. Many movies of this kind were among the best of national productions.
Children of Heaven is about two kids, Ali, 9, and his younger sister Zahra, and about a pair of sneakers, Zahra's only shoes. Their working-class family is dirt poor --but honest, of course. It lacks most basic necessities and is hounded by their landlord for overdue rent. In their home and on the streets, we get telling views of how the other half lives, more probably the other nine-tenths.
Even the gift of a ballpoint pen takes on large dimensions. I couldn't help wondering what one of the household's Persian rugs might fetch in the West, and perhaps keep the group in comfort for a long time
During one of his many errands, Ali has Zahra's pitiful sneakers repaired by a cobbler. Within minutes these get mistakenly picked up by a blind trashman. Returning home, the terribly upset Ali is greeted by Zahra's enchanting smile--before, that is, he tells her the awful truth. Zahra will smile just twice again in the course of the hour-and-a-half movie.
The siblings say nothing of the loss to their parents since the family is too poor to afford new shoes. I also suppose that Iranian youngsters, unlike those of most western countries, have a traditional respect of their seniors--and respect often goes hand in hand with fear of being the bearer of bad news.
In their predicament, the siblings decide to share Ali's own (and only) pair of sneakers when the children go to their respective schools. Zahra's school is in the morning, Ali's in the afternoon, so there's a kind of relay race as she passes on the sneakers to her impatiently waiting brother. Times don't dovetail precisely, so the boy gets to school just minutes late, is caught three times by the strict but kind (as we later see) principal. Why Ali doesn't give the man his perfectly good excuse baffles me. Is Iran so tight-lipped before authority?
The schoolchildren are so nicely disciplined and well-mannered in their shabby classrooms that it makes American schools look like high-tech infernos.
Complications and supense follow. Zahra sees her old shoes being worn by a classmate. Father gets on his rickety old bicycle with Ali, to seek gardening jobs for the rich. They cross a Tehran that's beyond their depressed areas. It's a revelation, another world, a modern city with wide road, tree-lined avenues, tall buildings, consumer advertising.
Reaching a beautiful residential neighborhood, they are in a fairyland of clean, quiet, empty streets totally walled palatial villas with gardens, intercoms from the gate door to the house, and at times guard dogs .(Read: splendid but dehumanized)
The points made by the contrasts are obvious. Disembodied refusals are heard on the intercoms. The father, a terrible, tongue-tied salesman, is rescued by Ali's making the proposals. Papa gets new respect for his son as he is hired by a nice old grandfather who pays him handsomely. (Read: wealthy people do have a heart). Ali plays with the grandson.(Read: kids are kids, with no social distinctions. Read also: poor little rich boys are bored and isolated, as in a number of Hollywood pictures).
Once the job is done, the pair leave in high spirits. You sense that something bad is going to happen. It does, when the bike's brakes don't work. It is not a serious accident but financially the poor people are back to square one.
At the boys school, the gym teacher had announced an inter-school competition of long distance running, four kilometers. The first prize is two weeks in a holiday camp, a dream for have-not students. Ali, preoccupied with his troubles and bad shoes did not sign up, but discovering that third prize is a pair of sneakers, he begs tearfully to enter the race. The teacher relents.
In an American film, the boy would have won not just third place but first. I won't say any more. The hard race is well and suspensefully filmed, the movie's conclusion is very good, without a neat wrap-up --a big plus.
Acting is good, kids and adults are "real." Among the grownups are several instances of kindness. The style of COH mixes the documentary and the dramatic, is clearly (and by the director's admission) derived from Italian neorealist films, notably De Sica's classic The Bicycle Thief (1948) and certain other European movies on poverty.
In fact, a new Majidi movie ( all I know is that it is a "comedy-documentary") made in Iran, produced by Kevin Costner and Jim Wilson, was announced for February 1999. Its title : The Bicycle Thief. I have no news of it. Perhaps its U.S. release was postponed because a re-release of De Sica's The Bicycle Thief has been playing recently in a few U.S. locations.
COH was a major hit in Iran and a 1999 Oscar nominee for Best Foreign Film. It is a good picture, although a number of tricks, plot devices, obvious constructions, coincidences (note the blind man and the girl with Zahra's shoes) and manipulations, all for a good cause no doubt, will be sensed by the viewers. Try as he may, writer-director Majidi cannot even approximate the starkness of De Sica's tone. The Italian film was in black and white and in wet wintry weather, while the colors and sunshine of COH act as a small palliative to the characters' travails.
The category "Children's Films" may give the false impression that this is a Disneyfied movie. No, it is for adults, and for young ones who are able to read the subtitles on the screen.
" Le mauvais gout mene au crime" (Stendhal)
Edwin Jahiel's movie reviews are at http://www.prairienet.org/ejahiel
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews