|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javassist.CtClass
public abstract class CtClass
An instance of CtClass
represents a class.
It is obtained from ClassPool
.
ClassPool.get(String)
| Field Summary | |
|---|---|
static CtClass |
booleanType
The CtClass object representing
the boolean type. |
static CtClass |
byteType
The CtClass object representing
the byte type. |
static CtClass |
charType
The CtClass object representing
the char type. |
static CtClass |
doubleType
The CtClass object representing
the double type. |
static CtClass |
floatType
The CtClass object representing
the float type. |
static CtClass |
intType
The CtClass object representing
the int type. |
static CtClass |
longType
The CtClass object representing
the long type. |
static CtClass |
shortType
The CtClass object representing
the short type. |
static java.lang.String |
version
The version number of this release. |
static CtClass |
voidType
The CtClass object representing
the void type. |
| Method Summary | |
|---|---|
void |
addConstructor(CtConstructor c)
Adds a constructor. |
void |
addField(CtField f)
Adds a field. |
void |
addField(CtField f,
CtField.Initializer init)
Adds a field with an initial value. |
void |
addField(CtField f,
java.lang.String init)
Adds a field with an initial value. |
void |
addInterface(CtClass anInterface)
Adds an interface. |
void |
addMethod(CtMethod m)
Adds a method. |
void |
debugWriteFile()
Writes a class file as writeFile() does although this
method does not prune or freeze the class after writing the class
file. |
void |
debugWriteFile(java.lang.String directoryName)
Writes a class file as writeFile() does although this
method does not prune or freeze the class after writing the class
file. |
void |
defrost()
Defrosts the class so that the class can be modified again. |
void |
detach()
Removes this CtClass object from the
ClassPool . |
void |
freeze()
Makes the class frozen. |
javassist.compiler.AccessorMaker |
getAccessorMaker()
Undocumented method. |
java.lang.Object |
getAnnotation(java.lang.Class clz)
Returns the annotation if the class has the specified annotation class. |
java.lang.Object[] |
getAnnotations()
Returns the annotations associated with this class. |
byte[] |
getAttribute(java.lang.String name)
Obtains an attribute with the given name. |
java.lang.Object[] |
getAvailableAnnotations()
Returns the annotations associated with this class. |
ClassFile |
getClassFile()
Returns a class file for this class. |
ClassFile |
getClassFile2()
Returns a class file for this class (read only). |
CtConstructor |
getClassInitializer()
Gets the class initializer (static constructor) declared in the class. |
ClassPool |
getClassPool()
Returns a ClassPool for this class. |
CtClass |
getComponentType()
If this object represents an array, this method returns the component type of the array. |
CtConstructor |
getConstructor(java.lang.String desc)
Returns the constructor with the given signature, which is represented by a character string called method descriptor. |
CtConstructor[] |
getConstructors()
Returns an array containing CtConstructor objects
representing all the non-private constructors of the class. |
CtBehavior[] |
getDeclaredBehaviors()
Gets all the constructors and methods declared in the class. |
CtConstructor |
getDeclaredConstructor(CtClass[] params)
Returns a constructor receiving the specified parameters. |
CtConstructor[] |
getDeclaredConstructors()
Gets all the constructors declared in the class. |
CtField |
getDeclaredField(java.lang.String name)
Retrieves the field with the specified name among the fields declared in the class. |
CtField |
getDeclaredField(java.lang.String name,
java.lang.String desc)
Retrieves the field with the specified name and type among the fields declared in the class. |
CtField[] |
getDeclaredFields()
Gets all the fields declared in the class. |
CtMethod |
getDeclaredMethod(java.lang.String name)
Retrieves the method with the specified name among the methods declared in the class. |
CtMethod |
getDeclaredMethod(java.lang.String name,
CtClass[] params)
Retrieves the method with the specified name and parameter types among the methods declared in the class. |
CtMethod[] |
getDeclaredMethods()
Gets all methods declared in the class. |
CtClass |
getDeclaringClass()
If this class is a member class or interface of another class, then the class enclosing this class is returned. |
CtMethod |
getEnclosingMethod()
Returns the immediately enclosing method of this class. |
CtField |
getField(java.lang.String name)
Returns the field with the specified name. |
CtField |
getField(java.lang.String name,
java.lang.String desc)
Returns the field with the specified name and type. |
CtField[] |
getFields()
Returns an array containing CtField objects
representing all the non-private fields of the class. |
CtClass[] |
getInterfaces()
Obtains the class objects representing the interfaces implemented by the class or, if this object represents an interface, the interfaces extended by that interface. |
CtMethod |
getMethod(java.lang.String name,
java.lang.String desc)
Returns the method with the given name and signature. |
CtMethod[] |
getMethods()
Returns an array containing CtMethod objects
representing all the non-private methods of the class. |
int |
getModifiers()
Returns the modifiers for this class, encoded in an integer. |
java.lang.String |
getName()
Obtains the fully-qualified name of the class. |
CtClass[] |
getNestedClasses()
Returns an array of nested classes declared in the class. |
java.lang.String |
getPackageName()
Obtains the package name. |
java.util.Collection |
getRefClasses()
Returns a collection of the names of all the classes referenced in this class. |
java.lang.String |
getSimpleName()
Obtains the not-qualified class name. |
CtClass |
getSuperclass()
Obtains the class object representing the superclass of the class. |
java.net.URL |
getURL()
Returns the uniform resource locator (URL) of the class file. |
boolean |
hasAnnotation(java.lang.Class clz)
Returns true if the class has the specified annotation class. |
void |
instrument(CodeConverter converter)
Applies the given converter to all methods and constructors declared in the class. |
void |
instrument(ExprEditor editor)
Modifies the bodies of all methods and constructors declared in the class. |
boolean |
isAnnotation()
Determines whether this object represents an annotation type. |
boolean |
isArray()
Returns true if this object represents an array type. |
boolean |
isEnum()
Determines whether this object represents an enum. |
boolean |
isFrozen()
Returns true if the class has been loaded or written out and thus it cannot be modified any more. |
boolean |
isInterface()
Determines whether this object represents a class or an interface. |
boolean |
isModified()
Returns true if the definition of the class has been modified. |
boolean |
isPrimitive()
Returns true if this object represents a primitive
Java type: boolean, byte, char, short, int, long, float, double,
or void. |
static void |
main(java.lang.String[] args)
Prints the version number and the copyright notice. |
CtConstructor |
makeClassInitializer()
Makes an empty class initializer (static constructor). |
CtClass |
makeNestedClass(java.lang.String name,
boolean isStatic)
Makes a new public nested class. |
java.lang.String |
makeUniqueName(java.lang.String prefix)
Makes a unique member name. |
void |
prune()
Discards unnecessary attributes, in particular, CodeAttribute s (method bodies) of the class,
to minimize the memory footprint. |
void |
rebuildClassFile()
If this method is called, the class file will be rebuilt when it is finally generated by toBytecode() and writeFile() . |
void |
removeConstructor(CtConstructor c)
Removes a constructor declared in this class. |
void |
removeField(CtField f)
Removes a field declared in this class. |
void |
removeMethod(CtMethod m)
Removes a method declared in this class. |
void |
replaceClassName(ClassMap map)
Changes class names appearing in the class file according to the given map . |
void |
replaceClassName(java.lang.String oldName,
java.lang.String newName)
Substitutes newName for all occurrences of a class
name oldName in the class file. |
void |
setAttribute(java.lang.String name,
byte[] data)
Adds a named attribute. |
void |
setInterfaces(CtClass[] list)
Sets implemented interfaces. |
void |
setModifiers(int mod)
Sets the modifiers. |
void |
setName(java.lang.String name)
Sets the class name |
void |
setSuperclass(CtClass clazz)
Changes a super class unless this object represents an interface. |
boolean |
stopPruning(boolean stop)
Disallows (or allows) automatically pruning this CtClass
object. |
boolean |
subclassOf(CtClass superclass)
Determines whether the class directly or indirectly extends the given class. |
boolean |
subtypeOf(CtClass clazz)
Returns true if this class extends or implements
clazz . |
byte[] |
toBytecode()
Converts this class to a class file. |
void |
toBytecode(java.io.DataOutputStream out)
Converts this class to a class file. |
java.lang.Class |
toClass()
Converts this class to a java.lang.Class object. |
java.lang.Class |
toClass(java.lang.ClassLoader loader)
Deprecated. Replaced by toClass(ClassLoader,ProtectionDomain) |
java.lang.Class |
toClass(java.lang.ClassLoader loader,
java.security.ProtectionDomain domain)
Converts this class to a java.lang.Class object. |
java.lang.String |
toString()
Converts the object to a string. |
void |
writeFile()
Writes a class file represented by this CtClass
object in the current directory. |
void |
writeFile(java.lang.String directoryName)
Writes a class file represented by this CtClass
object on a local disk. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String version
public static CtClass booleanType
CtClass
object representing
the boolean
type.
public static CtClass charType
CtClass
object representing
the char
type.
public static CtClass byteType
CtClass
object representing
the byte
type.
public static CtClass shortType
CtClass
object representing
the short
type.
public static CtClass intType
CtClass
object representing
the int
type.
public static CtClass longType
CtClass
object representing
the long
type.
public static CtClass floatType
CtClass
object representing
the float
type.
public static CtClass doubleType
CtClass
object representing
the double
type.
public static CtClass voidType
CtClass
object representing
the void
type.
| Method Detail |
|---|
public static void main(java.lang.String[] args)
The following command invokes this method:
java -jar javassist.jar
public java.lang.String toString()
toString
in class java.lang.Object
public ClassPool getClassPool()
ClassPool
for this class.
public ClassFile getClassFile()
This method is not available if isFrozen()
is true.
public ClassFile getClassFile2()
getClassFile()
.
The ClassFile
object obtained by this method
is read only. Changes to this object might not be reflected
on a class file generated by toBytecode()
,
toClass()
, etc.
This method is available even if isFrozen()
is true. However, if the class is frozen, it might be also
pruned.
getClassFile()
,
isFrozen()
,
prune()
public javassist.compiler.AccessorMaker getAccessorMaker()
public java.net.URL getURL() throws NotFoundException
NotFoundException
public boolean isModified()
public boolean isFrozen()
defrost()
,
detach()
public void freeze()
isFrozen()
,
defrost()
public void defrost()
To avoid changes that will be never reflected, the class is frozen to be unmodifiable if it is loaded or written out. This method should be called only in a case that the class will be reloaded or written out later again.
If defrost()
will be called later, pruning
must be disallowed in advance.
isFrozen()
,
stopPruning(boolean)
,
detach()
public boolean isPrimitive()
true
if this object represents a primitive
Java type: boolean, byte, char, short, int, long, float, double,
or void.
public boolean isArray()
true
if this object represents an array type.
public CtClass getComponentType() throws NotFoundException
null
.
NotFoundException
public boolean subtypeOf(CtClass clazz) throws NotFoundException
true
if this class extends or implements
clazz
. It also returns true
if
this class is the same as clazz
.
NotFoundException
public java.lang.String getName()
public final java.lang.String getSimpleName()
public final java.lang.String getPackageName()
null
.
public void setName(java.lang.String name)
name
- fully-qualified namepublic void replaceClassName(java.lang.String oldName, java.lang.String newName)
newName
for all occurrences of a class
name oldName
in the class file.
oldName
- replaced class namenewName
- substituted class namepublic void replaceClassName(ClassMap map)
map
.
All the class names appearing in the class file are tested
with map
to determine whether each class name is
replaced or not. Thus this method can be used for collecting
all the class names in the class file. To do that, first define
a subclass of ClassMap
so that get()
records all the given parameters. Then, make an instance of
that subclass as an empty hash-table. Finally, pass that instance
to this method. After this method finishes, that instance would
contain all the class names appearing in the class file.
map
- the hashtable associating replaced class names
with substituted names.public java.util.Collection getRefClasses()
This method may return null
.
public boolean isInterface()
true
if this object represents an interface.
public boolean isAnnotation()
true
if this object represents an annotation type.
public boolean isEnum()
true
if this object represents an enum.
public int getModifiers()
javassist.Modifier
.
If the class is a static nested class (a.k.a. static inner class),
the returned modifiers include Modifier.STATIC
.
Modifier
public boolean hasAnnotation(java.lang.Class clz)
clz
- the annotation class.
true
if the annotation is found, otherwise false
.public java.lang.Object getAnnotation(java.lang.Class clz) throws java.lang.ClassNotFoundException
@Author
is associated
with this class, an Author
object is returned.
The member values can be obtained by calling methods on
the Author
object.
clz
- the annotation class.
null
.
java.lang.ClassNotFoundException
public java.lang.Object[] getAnnotations() throws java.lang.ClassNotFoundException
@Author
is associated
with this class, the returned array contains an Author
object. The member values can be obtained by calling methods on
the Author
object.
java.lang.ClassNotFoundException
CtMember.getAnnotations()
public java.lang.Object[] getAvailableAnnotations()
getAnnotations()
except that, if any annotations are not on the classpath,
they are not included in the returned array.
getAnnotations()
,
CtMember.getAvailableAnnotations()
public CtClass[] getNestedClasses() throws NotFoundException
NotFoundException
public void setModifiers(int mod)
If the class is a nested class, this method also modifies the class declaring that nested class (i.e. the enclosing class is modified).
mod
- modifiers encoded by
javassist.Modifier
Modifier
public boolean subclassOf(CtClass superclass)
This method returns true if the given class is identical to the class represented by this object.
public CtClass getSuperclass() throws NotFoundException
java.lang.Object
class and thus it does not have
the super class.
If this object represents an interface, this method
always returns the java.lang.Object
class.
To obtain the super interfaces
extended by that interface, call getInterfaces()
.
NotFoundException
public void setSuperclass(CtClass clazz) throws CannotCompileException
If this object represents an interface, this method is equivalent
to addInterface()
; it appends clazz
to
the list of the super interfaces extended by that interface.
Note that an interface can extend multiple super interfaces.
CannotCompileException
replaceClassName(String, String)
,
replaceClassName(ClassMap)
public CtClass[] getInterfaces() throws NotFoundException
NotFoundException
public void setInterfaces(CtClass[] list)
list
- a list of the CtClass
objects
representing interfaces, or
null
if the class implements
no interfaces.public void addInterface(CtClass anInterface)
anInterface
- the added interface.public CtClass getDeclaringClass() throws NotFoundException
NotFoundException
public CtMethod getEnclosingMethod() throws NotFoundException
NotFoundException
public CtClass makeNestedClass(java.lang.String name, boolean isStatic)
CtClass
, which encloses the nested class, is modified
since a class file includes a list of nested classes.
The current implementation only supports a static nested class.
isStatic
must be true.
name
- the simple name of the nested class.isStatic
- true if the nested class is static.public CtField[] getFields()
CtField
objects
representing all the non-private fields of the class.
That array includes non-private fields inherited from the
superclasses.
public CtField getField(java.lang.String name) throws NotFoundException
NotFoundException
public CtField getField(java.lang.String name, java.lang.String desc) throws NotFoundException
name
- the field name.desc
- the type descriptor of the field. It is available by
CtField.getSignature()
.
NotFoundException
CtField.getSignature()
public CtField[] getDeclaredFields()
Note: the result does not include inherited fields.
public CtField getDeclaredField(java.lang.String name) throws NotFoundException
Note: this method does not search the super classes.
NotFoundException
public CtField getDeclaredField(java.lang.String name, java.lang.String desc) throws NotFoundException
Note: this method does not search the super classes.
name
- the field name.desc
- the type descriptor of the field. It is available by
CtField.getSignature()
.
NotFoundException
CtField.getSignature()
public CtBehavior[] getDeclaredBehaviors()
public CtConstructor[] getConstructors()
CtConstructor
objects
representing all the non-private constructors of the class.
public CtConstructor getConstructor(java.lang.String desc) throws NotFoundException
javassist.bytecode.Descriptor
.
desc
- method descriptor
NotFoundException
Descriptor
public CtConstructor[] getDeclaredConstructors()
CtConstructor
public CtConstructor getDeclaredConstructor(CtClass[] params) throws NotFoundException
params
- parameter types.
NotFoundException
public CtConstructor getClassInitializer()
null
if
no class initializer is not declared.
makeClassInitializer()
,
CtConstructor
public CtMethod[] getMethods()
CtMethod
objects
representing all the non-private methods of the class.
That array includes non-private methods inherited from the
superclasses.
public CtMethod getMethod(java.lang.String name, java.lang.String desc) throws NotFoundException
name
- method namedesc
- method descriptor
NotFoundException
CtBehavior.getSignature()
,
Descriptor
public CtMethod[] getDeclaredMethods()
CtMethod
public CtMethod getDeclaredMethod(java.lang.String name, CtClass[] params) throws NotFoundException
Note: this method does not search the superclasses.
name
- method nameparams
- parameter types
NotFoundException
CtMethod
public CtMethod getDeclaredMethod(java.lang.String name) throws NotFoundException
Note: this method does not search the superclasses.
NotFoundException
CtMethod
public CtConstructor makeClassInitializer() throws CannotCompileException
CannotCompileException
getClassInitializer()
public void addConstructor(CtConstructor c) throws CannotCompileException
makeClassInitializer()
.
CannotCompileException
makeClassInitializer()
public void removeConstructor(CtConstructor c) throws NotFoundException
c
- removed constructor.
NotFoundException
- if the constructor is not found.public void addMethod(CtMethod m) throws CannotCompileException
CannotCompileException
public void removeMethod(CtMethod m) throws NotFoundException
m
- removed method.
NotFoundException
- if the method is not found.public void addField(CtField f) throws CannotCompileException
The CtField
belonging to another
CtClass
cannot be directly added to this class.
Only a field created for this class can be added.
CannotCompileException
CtField.CtField(CtField,CtClass)
public void addField(CtField f, java.lang.String init) throws CannotCompileException
The CtField
belonging to another
CtClass
cannot be directly added to this class.
Only a field created for this class can be added.
The initial value is given as an expression written in Java. Any regular Java expression can be used for specifying the initial value. The followings are examples.
cc.addField(f, "0") // the initial value is 0. cc.addField(f, "i + 1") // i + 1. cc.addField(f, "new Point()"); // a Point object.
Here, the type of variable cc
is CtClass
.
The type of f
is CtField
.
Note: do not change the modifier of the field
(in particular, do not add or remove static
to/from the modifier)
after it is added to the class by addField()
.
init
- an expression for the initial value.
CannotCompileException
CtField.Initializer.byExpr(String)
,
CtField.CtField(CtField,CtClass)
public void addField(CtField f, CtField.Initializer init) throws CannotCompileException
The CtField
belonging to another
CtClass
cannot be directly added to this class.
Only a field created for this class can be added.
For example,
CtClass cc = ...; addField(new CtField(CtClass.intType, "i", cc), CtField.Initializer.constant(1));
This code adds an int
field named "i". The
initial value of this field is 1.
init
- specifies the initial value of the field.
CannotCompileException
CtField.CtField(CtField,CtClass)
public void removeField(CtField f) throws NotFoundException
f
- removed field.
NotFoundException
- if the field is not found.public byte[] getAttribute(java.lang.String name)
This is a convenient method mainly for obtaining
a user-defined attribute. For dealing with attributes, see the
javassist.bytecode
package. For example, the following
expression returns all the attributes of a class file.
getClassFile().getAttributes()
name
- attribute nameAttributeInfo
public void setAttribute(java.lang.String name, byte[] data)
This is a convenient method mainly for adding
a user-defined attribute. For dealing with attributes, see the
javassist.bytecode
package. For example, the following
expression adds an attribute info
to a class file.
getClassFile().addAttribute(info)
name
- attribute namedata
- attribute valueAttributeInfo
public void instrument(CodeConverter converter) throws CannotCompileException
instrument()
on every CtMethod
and CtConstructor
object
in the class.
converter
- specifies how to modify.
CannotCompileException
public void instrument(ExprEditor editor) throws CannotCompileException
instrument()
on every CtMethod
and CtConstructor
object
in the class.
editor
- specifies how to modify.
CannotCompileException
public java.lang.Class toClass() throws CannotCompileException
java.lang.Class
object.
Once this method is called, further modifications are not
allowed any more.
To load the class, this method uses the context class loader
of the current thread. If the program is running on some application
server, the context class loader might be inappropriate to load the
class.
This method is provided for convenience. If you need more complex functionality, you should write your own class loader.
Note: this method calls toClass()
in ClassPool
.
Warining: A Class object returned by this method may not work with a security manager or a signed jar file because a protection domain is not specified.
CannotCompileException
toClass(java.lang.ClassLoader,ProtectionDomain)
,
ClassPool.toClass(CtClass)
public java.lang.Class toClass(java.lang.ClassLoader loader, java.security.ProtectionDomain domain) throws CannotCompileException
java.lang.Class
object.
Once this method is called, further modifications are not allowed
any more.
The class file represented by this CtClass
is
loaded by the given class loader to construct a
java.lang.Class
object. Since a private method
on the class loader is invoked through the reflection API,
the caller must have permissions to do that.
An easy way to obtain ProtectionDomain
object is
to call getProtectionDomain()
in java.lang.Class
. It returns the domain that
the class belongs to.
This method is provided for convenience. If you need more complex functionality, you should write your own class loader.
Note: this method calls toClass()
in ClassPool
.
loader
- the class loader used to load this class.
If it is null, the class loader returned by
ClassPool.getClassLoader()
is used.domain
- the protection domain that the class belongs to.
If it is null, the default domain created
by java.lang.ClassLoader
is used.
CannotCompileException
ClassPool.toClass(CtClass,java.lang.ClassLoader)
public final java.lang.Class toClass(java.lang.ClassLoader loader) throws CannotCompileException
toClass(ClassLoader,ProtectionDomain)
java.lang.Class
object.
Warining: A Class object returned by this method may not work with a security manager or a signed jar file because a protection domain is not specified.
CannotCompileException
public void detach()
CtClass
object from the
ClassPool
.
After this method is called, any method cannot be called on the
removed CtClass
object.
If get()
in ClassPool
is called
with the name of the removed method,
the ClassPool
will read the class file again
and constructs another CtClass
object representing
the same class.
public boolean stopPruning(boolean stop)
CtClass
object.
Javassist can automatically prune a CtClass
object
when toBytecode()
(or toClass()
,
writeFile()
) is called.
Since a ClassPool
holds all instances of CtClass
even after toBytecode()
(or toClass()
,
writeFile()
) is called, pruning may significantly
save memory consumption.
If ClassPool.doPruning
is true, the automatic pruning
is on by default. Otherwise, it is off. The default value of
ClassPool.doPruning
is false.
stop
- disallow pruning if true. Otherwise, allow.
detach()
,
prune()
,
ClassPool.doPruning
public void prune()
CodeAttribute
s (method bodies) of the class,
to minimize the memory footprint.
After calling this method, the class is read only.
It cannot be modified any more.
Furthermore, toBytecode()
,
writeFile()
, toClass()
,
or instrument()
cannot be called.
However, the method names and signatures in the class etc.
are still accessible.
toBytecode()
, writeFile()
, and
toClass()
internally call this method if
automatic pruning is on.
According to some experiments, pruning does not really reduce memory consumption. Only about 20%.  So the automatic pruning is off by default.
stopPruning(boolean)
,
detach()
,
ClassPool.doPruning
,
toBytecode()
,
toClass()
,
writeFile()
,
instrument(CodeConverter)
,
instrument(ExprEditor)
public void rebuildClassFile()
toBytecode()
and writeFile()
.
For a performance reason, the symbol table of the
class file may contain unused entries, for example,
after a method or a filed is deleted.
This method
removes those unused entries. This removal will
minimize the size of the class file.
public byte[] toBytecode() throws java.io.IOException, CannotCompileException
java.io.IOException
CannotCompileException
public void writeFile() throws NotFoundException, java.io.IOException, CannotCompileException
CtClass
object in the current directory.
Once this method is called, further modifications are not
possible any more.
NotFoundException
java.io.IOException
CannotCompileException
debugWriteFile()
public void writeFile(java.lang.String directoryName) throws CannotCompileException, java.io.IOException
CtClass
object on a local disk.
Once this method is called, further modifications are not
possible any more.
directoryName
- it must end without a directory separator.
CannotCompileException
java.io.IOException
debugWriteFile(String)
public void debugWriteFile()
writeFile()
does although this
method does not prune or freeze the class after writing the class
file. Note that, once writeFile()
or toBytecode()
is called, it cannot be called again since the class is pruned and frozen.
This method would be useful for debugging.
public void debugWriteFile(java.lang.String directoryName)
writeFile()
does although this
method does not prune or freeze the class after writing the class
file. Note that, once writeFile()
or toBytecode()
is called, it cannot be called again since the class is pruned and frozen.
This method would be useful for debugging.
directoryName
- it must end without a directory separator.public void toBytecode(java.io.DataOutputStream out) throws CannotCompileException, java.io.IOException
This method dose not close the output stream in the end.
out
- the output stream that a class file is written to.
CannotCompileException
java.io.IOException
public java.lang.String makeUniqueName(java.lang.String prefix)
prefix
- the prefix of the member name.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


September 21st, 2015
Alex
Monday morning was my first official day of classes. It was Silver week in Japan (three days of holiday) but we still had class on Monday for some reason. It was mostly empty so the professor just gave a short overview of the class before letting us out early.
Mindy
I had two back to back orientation sessions today. -Cringes- One for CIEE again and the other for Sophia University. However, it was all worth it because I got the student commuter pass on my Suica card that would allow me to freely go between my dorm station, Fujimidai, and the university station, Yotsuya. It’s exciting not having to pay.
Alex with Mindy
I met up with Mindy after class to go to Odaiba with some of her friends. We just walked around and got some food before just deciding to leave. I’ll probably bring her there for a day trip at some point so we can look around more.
September 22nd, 2015
Mindy
I had my Japanese Language placement test in the morning during which I realized I knew no Kanji outside of the very, very basic characters and those in Mahjong. However, I didn’t feel any pressure to cram or study since it was for placement and whatever I didn’t know, I would get the chance to learn later this semester. After I waited outside the testing rooms for some friends and we wandered around Shibuya for a bit.
Alex with Mindy
Check out our full Tuesday post here! (Hint: We played with owls)
September 23rd, 2015
Alex
I slept….. basically all day.
Mindy
Today I had one of the final orientation sessions from CIEE, after which I would be untethered to enjoy the rest of the semester in Tokyo mostly on my own. It was mostly the same “don’t do drugs” and call this number if you’re in trouble. After we headed to the Life Safety Learning Center in Ikebukuro where we experienced a size 7 earthquake simulation and put out faux fires.
September 24th, 2015
Alex with Mindy
I had my first class of the day in the morning. Once that was done, I met Mindy in Nakano station to go get some lunch. I finally took her to butadon and it seems like she really enjoyed it. [I really enjoyed it -Mindy] I went back to campus for class while Mindy just walked around the Nakano area to kill time. We ended up just hanging out at my place for a few hours before getting ramen for dinner with Kevin.
September 25th, 2015
Mindy
Today was CIEE’s planned trip to Kamakura, one of the past capitals of Japan. Currently it’s famous for a giant buddha statue that you can enter for 20 yen. Of course the day was rainy and of course we were rushed the entire day to follow a walking tour schedule. Still, the temples and shrines were super pretty and we had a lunch of karaage and tempura. There is also an amazing taiyaki stand just outside of the Kamakura station from which I got 10 small but delicious anko taiyaki.
Alex with Mindy
Mindy, Kevin, and I left for Shinjuku in the evening to meet up with Gen and Tomo. They took us to a nomihodai, basically an all-you-can-drink place where you order smaller meals to share with the table. We spent a couple hours there before all heading home for the night.
September 26th, 2015
Alex with Mindy
Mindy and I went to Ueno to meet with some of her friends to take a look at the shopping district. We were all really hungry when we got there so we went to an okonomiyaki and monja restaurant where we had to cook our own food basically. I feel like we had a tough time but the food was really good. We ended up walking around Ueno for about 4 or 5 hours and then decided to just go home.
September 27th, 2015
Alex
Today was the date for a trip that the Meiji students had been planning for the exchange students. We met up with them in Shinjuku and then they took us to Tsukiji, basically the fish district of Tokyo. There’s a couple blocks of just fish stores and restaurants and it’s considered the freshest fish in Tokyo. We were split off into groups and I walked around for a while with my group before getting a bowl of fish and rice for lunch. Legitimately the best fish I’ve ever had. We left Tsukiji to go to Ueno to go to the large zoo they have there. We walked around the zoo for about 4 hours and I got to see some animals I’ve never seen before, namely red pandas and giant pandas. Or group split up to go home just after the zoo closed at 5.
Mindy
I woke up late to meet with team okonomiyaki. Initially planned to go to a moon festival but since all the weather reports said it was going to rain, we decided to go to two other places, a light art installation in Ginza and a matsuri in Aomonoyokocho. The art installation was really incredible, there was an entire room with LEDs that were synced up beautifully and walking through the loop with mirrors and strings of lights on both sides made you feel like you were falling through stars. We actually came too late to the matsuri but a friend of mine did get to show off his drinking skills to some local men running a beer stand. Afterwards we headed to Shinjuku to buy school supplies and go to karaoke. It was my first Japanese karaoke but it was really fun!


1. Please make the number of nodes on your own and, enter the
number of nodes excluding the reference node. (External Tip: Make
the node that has more number of elements connected to it as the
reference node)
2. Also count all the elements in the given circuit and enter it.
3. Now choose the elements that are present in the circuit from
the dropdown menu.
4. Once this is done, start entering the requested values for each
element abiding to the passive sign convention, a picture as a
helping hand is shown for each of the element. Don't make any
mistake in this, then the resuls might not be define or it can be
wrong.
5. After ensuring all the entered values are correct, hit the
submit button and you are done the answer now pops up.


for i : -4 .. 4
const arg := i / 4
put "Arc sine of ", arg, " is ",
arcsin (arg), " radians"
end for
the arcsind function which finds the arc sine of a value with the result given in degrees. (2p radians are the same as 360 degrees.)
See also predefined unit Math.


Copyright © 2009 Marc Worrell Date: 2009-04-07
Authors: Marc Worrell (marc@worrell.nl).
| assert_table_name/1 | Check if a name is a valid SQL table name. |
| assoc/2 | Return property lists of the results of a query on the database in the Context. |
| assoc/3 | |
| assoc/4 | |
| assoc_props/2 | |
| assoc_props/3 | |
| assoc_props/4 | |
| assoc_props_row/2 | |
| assoc_props_row/3 | |
| assoc_row/2 | |
| assoc_row/3 | |
| column_names/2 | Return a list with the column names of a table. |
| columns/2 | Return a property list with all columns of the table. |
| create_table/3 | Ensure that a table with the given columns exists, alter any existing table to add, modify or drop columns. |
| delete/3 | Delete a row from a table, the row must have a column with the name 'id'. |
| drop_table/2 | Make sure that a table is dropped, only when the table exists. |
| equery/2 | |
| equery/3 | |
| flush/1 | Flush all cached information about the database. |
| get/2 | |
| get_parameter/2 | |
| has_connection/1 | Check if we have database connection. |
| insert/2 | Insert a new row in a table, use only default values. |
| insert/3 | Insert a row, setting the fields to the props. |
| prepare_cols/2 | Check if all cols are valid columns in the target table, move unknown properties to the props column (if exists). |
| q/2 | |
| q/3 | |
| q/4 | |
| q1/2 | |
| q1/3 | |
| q1/4 | |
| q_row/2 | |
| q_row/3 | |
| select/3 | Read a row from a table, the row must have a column with the name 'id'. |
| set/3 | Simple get/set functions for db property lists. |
| table_exists/2 | Check the information schema if a certain table exists in the context database. |
| transaction/2 | Perform a function inside a transaction, do a rollback on exceptions. |
| transaction/3 | Perform a transaction with extra options. |
| transaction_clear/1 | Clear any transaction in the context, useful when starting a thread with this context. |
| update/4 | Update a row in a table, merging the props list with any new props values. |
| update_sequence/3 | Update the sequence of the ids in the table. |
assert_table_name(T::String) -> true
Check if a name is a valid SQL table name. Crashes when invalid
assoc(Sql::SqlQuery, Context) -> Rows
Return property lists of the results of a query on the database in the Context
assoc(Sql, Parameters, Context) -> any()
assoc(Sql, Parameters, Context, Timeout) -> any()
assoc_props(Sql, Context) -> any()
assoc_props(Sql, Parameters, Context) -> any()
assoc_props(Sql, Parameters, Context, Timeout) -> any()
assoc_props_row(Sql, Context) -> any()
assoc_props_row(Sql, Parameters, Context) -> any()
assoc_row(Sql, Context) -> any()
assoc_row(Sql, Parameters, Context) -> any()
column_names(Table, Context) -> [atom()]
Return a list with the column names of a table. The names are sorted.
columns(Table, Context) -> [#column_def{}]
Return a property list with all columns of the table. (example: [{id,int4,modifier},...])
create_table(Table, Cols, Context) -> any()
Ensure that a table with the given columns exists, alter any existing table to add, modify or drop columns. The 'id' (with type serial) column _must_ be defined when creating the table.
delete(Table, Id, Context) -> {ok, RowsDeleted}
Delete a row from a table, the row must have a column with the name 'id'
drop_table(Name, Context) -> any()
Make sure that a table is dropped, only when the table exists
equery(Sql, Context) -> any()
equery(Sql, Parameters, Context) -> any()
flush(Context) -> any()
Flush all cached information about the database.
get(Key, Props) -> any()
get_parameter(Parameter, Context) -> any()
has_connection(Context) -> any()
Check if we have database connection
insert(Table, Context) -> {ok, Id}
Insert a new row in a table, use only default values.
insert(Table::atom(), Props::proplist(), Context) -> {ok, Id} | Error
Insert a row, setting the fields to the props. Unknown columns are serialized in the props column. When the table has an 'id' column then the new id is returned.
prepare_cols(Cols, Props) -> any()
Check if all cols are valid columns in the target table, move unknown properties to the props column (if exists)
q(Sql, Context) -> any()
q(Sql, Parameters, Context) -> any()
q(Sql, Parameters, Context, Timeout) -> any()
q1(Sql, Context) -> any()
q1(Sql, Parameters, Context) -> any()
q1(Sql, Parameters, Context, Timeout) -> any()
q_row(Sql, Context) -> any()
q_row(Sql, Args, Context) -> any()
select(Table, Id, Context) -> {ok, Row}
Read a row from a table, the row must have a column with the name 'id'. The props column contents is merged with the other properties returned.
set(Key, Props, Value) -> any()
Simple get/set functions for db property lists
table_exists(Table::TableName, Context) -> bool()
Check the information schema if a certain table exists in the context database.
transaction(Function, Context) -> FunctionResult | {error, Reason}
Perform a function inside a transaction, do a rollback on exceptions
transaction(Function, Options, Context) -> any()
Perform a transaction with extra options. Default retry on deadlock
transaction_clear(Context) -> any()
Clear any transaction in the context, useful when starting a thread with this context.
update(Table, Id, Parameters, Context) -> {ok, RowsUpdated}
Update a row in a table, merging the props list with any new props values
update_sequence(Table, Ids::IdList, Context) -> void()
Update the sequence of the ids in the table. They will be renumbered according to their position in the id list.
Generated by EDoc, Apr 11 2012, 20:41:28.


Sunny Leone buys stake in IPL Soccer team; tournament in UK in June 2020
Sunny's team Leicester Galactos is co-owned by Jaz Dhami
by IANSBollywood star Sunny Leone has bought a stake in the Leicester Galactos team of IPL Soccer, a celebrity-owned seven-a-side indoor football tournament held in the UK.
Sunny's team is co-owned by Jaz Dhami.
Sunny said: "Sports speak a global language and it's my pleasure that I get the chance to encourage emerging talent. IPL Soccer gives the right kind of exposure, facilities and platform to the soccer players.
Former England football star Micheal Owen brand ambassador of the league.
"Sport is one of the few institutions that can break down barriers and stereotypes. Providing fully inclusive opportunities for all are at the core of the IPL soccer Programme," said Owen.
The "Mastizaade" star recently posted the video of her kicking the ball at a goalpost, alongside the caption, "What's my name.. what's my name?"
IPL Soccer founder Sany Supra expressed his joy on having Sunny Leone on board.
"Football and the Entertainment world together to showcase across the globe," he stated.
The tournament helmed in UK will flag off in June 2020.


Reports any Channel which is not opened in
front of a try block and closed in the corresponding
finally block. Such resources may be inadvertently leaked
if an exception is thrown before the resource is closed. Channel resources reported
by this inspection include any instances created by calling
getChannel() on a file or socket resource.
Use the checkbox below to specify if a Channel is allowed to be opened inside a try
block.
Powered by InspectionGadgets


Before Change
"There"s this notion that the wealthy use their money to buy politicians; more accurately, it"s that they can buy policy, and specifically, tax policy," said Jared Bernstein, a senior fellow at the left-leaning Center on Budget and Policy Priorities who served as chief economic adviser to Vice President Joseph R. Biden Jr. "That"s why these egregious loopholes exist, and why it"s so hard to close them."
// self.spacy_doc = spacy_pipeline(preprocess.normalize_whitespace(text))
self.spacy_doc = spacy_pipeline(re.sub(r"\s+", " ", text))
def test_words(self):
expected = [
After Change
Two weeks ago, I was in Kuwait participating in an I.M.F. seminar for Arab educators. For 30 minutes, we discussed the impact of technology trends on education in the Middle East. And then an Egyptian education official raised his hand and asked if he could ask me a personal question: "I heard Donald Trump say we need to close mosques in the United States," he said with great sorrow. "Is that what we want our kids to learn?"
self.spacy_doc = spacy_pipeline(text.strip())
cols = [attrs.TAG, attrs.HEAD, attrs.DEP]
values = np.array(
[[425, 1, 1499956], [443, 1, 392], [447, 3, 365], [416, 2, 407], [445, 1, 393],
[455, 0, 53503], [432, -1, 405], [441, -1, 401], [456, -3, 364], [432, -1, 405],
[426, 2, 379], [441, 1, 9480], [440, -3, 401], [432, -1, 405], [433, 1, 367],


Search
Random Article
Welcome to Microbay Wiki View!
This viewer will show the top 3 results in wikipedia that you search!


perl6-internals
Mission: To develop RFCs on the internals API and architecture of perl6.
Description: This list is for discussion of internals design, architecture changes, embedding, extending, and so on.
Subscribe<EMAIL_ADDRESS>-
Archive
perl6-language
Mission: To develop RFCs on the language design of perl6.
Description: This list is for discussing user-visible changes to the language.
Subscribe<EMAIL_ADDRESS>-
Archive
perl-qa
Mission: To develop RFCs on QA processes in perl6 development.
Description: This list is for the topics relating to quality assurance, including test suites, validation processes, and bug tracking.
Subscribe<EMAIL_ADDRESS>-
Archive
perl6-stdlib
Mission: To develop RFCs on the standard perl6 library.
Description: This list is for this list will cover module APIs (e.g., fixing the screwup with IPC::Open2 and IPC::Open3's argument order), proposed new standard modules (e.g., web and FTP), installation (e.g., suggest a perl6 CPAN design that makes the equivalent of CPAN.pm easy to write), and so on.
Subscribe<EMAIL_ADDRESS>-
Archive
perl6-meta (closed)
Mission: Discussion and development of the process of developing perl6. (this is to the ongoing process what<EMAIL_ADDRESS>was to the initial work).
Archive
perl6-build (closed)
Mission: To develop RFCs on the configuration and installation of perl6.
Archive
perl6-internals-api-extensions (closed)
Mission: Develop the API for perl 6 extensions
Description: This group is charged with developing the API perl presents to extensions. This group should develop an RFC for this, as well as a header file, stub source, and as a few rough test programs.
perl6-internals-api-embed (closed)
Mission: Develop the API for perl 6 embedders
Description: This group is charged with developing the API perl presents to embedding programs. This group should develop an RFC for this, as well as a header file, stub source, and as a few rough test programs.
Archive
perl6-internals-api-parser (closed)
Mission: Develop the API for the perl 6 parser
Description: This group is charged with developing the API for the perl 6 parser/lexer/tokeniser. This group should develop an RFC for this, as well as a header file, stub source, and as a few rough test programs. The parser will be written in perl.
Archive
perl6-internals-bignum (closed)
Mission: Working group for the BIGNUM package.
Archive
perl6-internals-syntax-tree (closed)
Mission: Develop the syntax tree structure for perl 6
Description: This group is charged with developing the structure of the syntax tree (or HIR, if you'd prefer that term) that the perl 6 parser hands off to the bytecode compiler, optimizer, and execution engine.
perl6-internals-unicode (closed)
Mission: Develop a consistent vision of how perl should handle unicode (and all character data) internally.
Description: This group's mission is to get perl 6 a solid foundation to handle unicode data. This includes how perl handles character and binary data internally, as well as how it presents that data to external code. (Including binary extensions and embedding apps)
Archive
perl6-language-data (closed)
Mission: Discuss and draft RFCS for Perl 6 language features related to the Perl Data Language (PDL) and numeric Perl in general. Report weekly to the Language WG.
Archive
perl6-language-flow (closed)
Mission: Draft, discuss, and revise RFCs relating to flow control in Perl 6, eg switch/case, looping, etc. Suggest/request other flowcontrol-related lists if appropriate
Description: Submit flowcontrol-related RFCs to the Perl 6 librarian as they are developed.
Archive
perl6-language-io (closed)
Mission: Draft and discuss I/O related RFCs, including (but not limited to) RFCs 14 and 30.
Description: Submit I/O related RFCs to the Perl 6 librarian as they are developed.
Archive
perl6-language-regex (closed)
Mission: Draft and discuss RFCs related to regexp language issues in Perl 6. Report weekly to Language WG.
Archive
perl6-language-subs (closed)
Mission: Draft, discuss, and revise RFCs relating to subroutines in Perl 6, eg named parameters, want(), prototyping
Description: Submit subroutine-related RFCs to the Perl 6 librarian as they are developed.
Archive
perl6-language-mlc (closed)
Mission: Discuss and redraft the multiline comments RFC
Description: Michael to post the redrafted RFC back to perl6-language
Archive
perl6-language-strict (closed)
Mission: Discuss the use of the strict pragma in Perl 6
Description: Redrafted versions of Perl RFCs 6 and 16, sent to the librarian and hence to the perl6-language list
Archive
perl6-language-datetime (closed)
Mission: To develop RFCs related to date and time handling in Perl 6, including RFCs 48, 7, etc; to identify areas which need to be addressed by the stdlib working group.
Archive
perl6-language-errors (closed)
Mission: To develop RFCs related to error handling and exceptions in Perl 6, possibly combining existing RFCs into a more cohesive whole.
Archive
perl6-language-objects (closed)
Mission: Develop RFCs related to objects and OO programming in Perl, possibly rationalising existing RFCs where they cover the same ground.
Archive
perl6-licenses (closed)
Mission: To develop RFCs on licensing.
Description: Larry has suggested some changes to the Artistic license, which need to be codified. The perl6 copyright holder policy needs to be defined.
Archive
perl6-language-unlink (closed)
Mission: Discuss and redraft RFC 29. Draft and discuss an opposing RFC *or* rename RFC 29 to "ways of dealing with unlink()" and discuss various viewpoints.
Description: Submit redrafted RFC 29 to perl6-language. Optionally submit opposing RFC.


| TextGridShiny {TextGridShiny} | R Documentation |
TextGridShiny allows to read TextGrid files and to display the annotated data. In addition, it is possible to interact with the created visual annotation in adding tiers and labels.
TextGridShiny(message, width = NULL, height = NULL, elementId = NULL)
message |
A textgrid file containing the labels. |
width |
Width of the resulting graph - defaults to fit container, probably leave this alone |
height |
Height of the resulting graph - defaults to fit container, probably leave this alone |
elementId |
Do not specify, this is used by the 'htmlwidgets' package |
A Annotation Interface which is an 'htmlwidgets
' object
## Not run: library(TextGridShiny) TextGridShiny("inst/extdata/oran.TextGrid") ## End(Not run)


Improve this Doc
Alerts are a great way to provide the user with important information, prompt the user to provide information, or ask the user to confirm an action. Alerts can be thought of as a type of “floating” modal that cover only a portion of the screen. This means Alerts should only be used for quick actions like password verification, small app notifications, or options. More in depth user flows should be reserved for full screen [Modals](#modals).
Alerts can be configured to include custom buttons, input fields, radio buttons, and checkboxes.
_For complete usage information, check out the [Alert API docs](../api/components/alert/AlertController)._
Basic Usage
Demo Source
```typescript
import { AlertController } from 'ionic-angular';
export class MyPage {
constructor(public alertCtrl: AlertController) {
}
showAlert() {
let options = {
title: 'New Friend!',
subTitle: 'Your friend, Obi wan Kenobi, just accepted your friend request!',
buttons: [
{
text: 'Cancel',
handler: data => {
console.log('Cancel clicked');
}
},
{
text: 'OK'
}
]
}
let alert = this.alertCtrl.create(options);
alert.present();
}
}
```


Building on (Staffell 2017) and (Khan, Jack, and Stephenson 2018), we are interested in GHG emissions from UK electricity generation over time. We are especially interested in how this might change during the UK covid-19 lockdown period (from ).
Several articles by ythe UK ESO and others have already explored this topic:
Fortunately the UK Electricity System Operator publishes half-hourly generation data which includes both power generation (and thus ‘demand’) by fuels and also includes a per-kWh carbon intensity for the electricity produced per half-hour. We use this data to explore the following research questions:
To what extent has electricty demand shown deviation from ‘normal’ demand patterns during the lockdown period?
Has the composition of fuel sources supplying electriicty changed during this period?
Has the lockdown changed greenhouse-gas emissions associated with electriicty generation?
This is ‘grid’ generation from major power stations of various kinds. Data downloaded from https://data.nationalgrideso.com/carbon-intensity1/historic-generation-mix/r/historic_gb_generation_mix
and pre-processed.
| DATETIME | year | rDateTimeUTC | GENERATION | CARBON_INTENSITY |
|---|---|---|---|---|
| 2015-01-01 00:00:00 | 2015 | 2015-01-01 00:00:00 | 29822 | 378 |
| 2015-01-01 00:30:00 | 2015 | 2015-01-01 00:30:00 | 30394 | 392 |
| 2015-01-01 01:00:00 | 2015 | 2015-01-01 01:00:00 | 30398 | 394 |
| 2015-01-01 01:30:00 | 2015 | 2015-01-01 01:30:00 | 29252 | 377 |
| 2015-01-01 02:00:00 | 2015 | 2015-01-01 02:00:00 | 28488 | 362 |
| 2015-01-01 02:30:00 | 2015 | 2015-01-01 02:30:00 | 28021 | 352 |
Note that according to the dataset source:
mean MW
over the half hour or it may mean MWh per half-hour
. It is unclear. The % refers to the fuel mix. Which one could easily calculate from the MW values. But anyway…Table 2.2 shows the mean half hourly generation (MW) and mean carbon intensity over the years covered by the data. It also shows the implied mean half-hourly total kg CO2e per half hour which we have calculated as follows: {#kgcalc} * convert GENERATION
(MW) to MWh per half hour by GENERATION/2
(1 MW for half an hour = 1/2 MWh) * convert the result to kWh (* 10000
) * multiply by the CARBON_INTENSITY
which is in gCO2e/kWh * divide by 1000 to get Kg
Yes, we have *1000 and then /1000 which is 1 but for the sake of clarity we have kept all the steps.
NB: we are unclear how generation via interconnect is included in the original carbon intensity calculation but note that the ESO forecast methodology document states that it is.
| year | Mean halfhourly generation (MW) | Mean half-hourly carbon intensity (gCO2e/kWh) | Mean total half-hourly CO2e (Tonnes) | Max data in range | N months to date | nObs |
|---|---|---|---|---|---|---|
| 2015 | 34521.79 | 389.81 | 6868.33 | 2015-12-31 | 12 | 17472 |
| 2016 | 34131.39 | 299.37 | 5265.33 | 2016-12-31 | 12 | 17520 |
| 2017 | 33954.87 | 262.87 | 4637.33 | 2017-12-31 | 12 | 17472 |
| 2018 | 33882.94 | 234.84 | 4115.63 | 2018-12-31 | 12 | 17472 |
| 2019 | 33278.08 | 214.15 | 3664.61 | 2019-12-31 | 12 | 17472 |
| 2020 | 32033.54 | 183.30 | 3022.46 | 2020-06-06 | 6 | 7536 |
As we can see mean half-hourly generation has declined over the years but much less spectacularly than the mean carbon intensity which decreased by 30 from 2017 to 2020.
Essentially ‘non-grid’ generation from solar photovoltaic and small scale wind which is ‘embedded’ - i.e. non-grid connected as it is connected ‘downstream’ of the grid exit points. We are not entirely sure if this is accounted for in the grid dataset or not.
We have not yet found a source of this data (if we even need it).
For now embedded generation data is probably not included in the following analysis but we would expect it to depress grid demand when there is greatest insolation (middle of the day, obvs) and wind (largely random in the UK?).
In this section we analyse changes in electricity demand and associated carbon emissions during the UK Covid-19 lockdown via analysis of the generation data.
Several articles and analyses have suggested that demand (and thus generation) patterns have shifted so that weekdays have become more like weekends.
Figure 3.1 uses the openair TheilSen()
function (Carslaw and Ropkins 2012) to create a de-seasoned trend plot for mean monthly half-hourly (i.e. the mean of all half-hourly GW values for each month) generation in GW split by peak period (07:00 - 08:30 and 16:00 - 20:00) .
These plots show that there has been a steady decline of ~ 0.4 - 0.5 GW mean half hourly generation (and thus demand) per year since 2015 in each time period. The substantial below-trend fall in generation during lockdown in early Spring 2020 is clear, especailly for the morning peak, day-time and, to a lesser extent, evening peak periods. There appears to have been a smaller below-trend reduction at other times as we would expect. We can also see a notable drop in generation in late 2015 which was unusually warm and wet.
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
| year | Mean GW | N obs |
|---|---|---|
| 2015 | 34.52 | 17472 |
| 2016 | 34.13 | 17520 |
| 2017 | 33.95 | 17472 |
| 2018 | 33.88 | 17472 |
| 2019 | 33.28 | 17472 |
| 2020 | 32.03 | 7536 |
Figure 3.2 shows total half-hourly generation since 2020-02-01. Overall generation has fallen as we would expect given the season (less heating and lighting required) and weekdays are indeed less easy to distinguish from weekends.
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
Figure 3.3 shows the daily generation profiles over time for each day of the week. Clearly the shapes are both reducing in magnitude (seasonal and lockdown effects) and also converging in shape.
Figure 3.4 shows the difference between hourly and weekday patterns for lockdown 2020 and the same months in all years from 2018 onwards. It is interesting to note that the twin peak demand periods have been maintained during lockdown but they are considerably lower although we should expect some ‘natural’ reduction due to the overall downward generation trend shown in Figure 3.1. The lower middle monthly plot suggests that while lockdown caused a considerable drop in generation, this difference is now starting to converge on ‘normal’ seasonal demand levels.
## Plot start date: 2018-01-01
## Plot end date: 2020-06-06 23:30:00
## Warning in checkPrep(mydata, vars, type, remove.calm = FALSE): Detected data with Daylight Saving Time, converting to UTC/
## GMT
Figure 3.5 is a similar plot but in this case the generation is normalised within each period to enable clarification of changes in the temporal shape of demand rather than changes in the overall level. As we can see the normalised plots indicate that the relative temporal distribution of generation (demand) is very similar between each period. The shape of demand is therefore relatively unchanged, but it’s level is distinctly lower (Figure 3.4).
## Warning in checkPrep(mydata, vars, type, remove.calm = FALSE): Detected data with Daylight Saving Time, converting to UTC/
## GMT
For this analysis we have shifted the dates for the comparison years to ensure that weekdays and weekends align in each year of data but this does not mean that Easter is the same weekend across the comparison periods nor that Bank Holidays (e.g. VE day 2020) are consistent.
Figure 3.6 shows the most recent mean daily half-hourly GW compared to the same day in previous years. As hinted by Figure 3.4, lockdown clearly reduced demand below the seasonal trend as Figure 3.1 suggested and also levels of demand are now starting to converge on the seasonal trend (c.f. Figure 3.4).
Beware temperature differences - need to control for heating degree days as 2020 was a very warm spring
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Figure 3.7 shows the percentage difference between the mean half-hourly generation per day in 2020 and the pre 2020 average for the same day. As we can see January 2020 was already slightly lower than previous years but February appears similar. There appears to be a substantial lockdown effect albiet with some fluctuations and very large dips on VE Day (Friday 8th May) and Thursday 28th May.
Figure 3.8 shows the trend in the ratio between maximum and minimum half-hourly generation by day. This shows that 2020 was already less ‘peaky’ than previous years with a lower ratio between maximum and minimum generation on most days. This appear to have amplified in the first week or so of UK lockdown with a further reduction in the ratio but this has not been sustained over time with greater variance as we move into May 2020.
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
tbc
There are two aspects to this. The first is carbon intensity
which is driven by the mix of fuels being used to generate electricity at any given time. The second is the total greenhouse gasses emitted which is, obviously, the intensity * the volume. Given the slight uncertainty over units (see Section 2) we assume this is GENERATION
* CARBON_INTENSITY
.
Clearly the first of these is driven by the mix of fuels and in the UK this reflects a complex dynamic system of availability of renewables, price, interconnect and demand. To some extent we would expect that lower overall demand should (but not always) increase the share of renewables. However other factors are also at play:
Figure 3.9 agin uses the openair TheilSen()
function (Carslaw and Ropkins 2012) to create a de-seasoned trend plot but this time for mean half-hourly carbon intensity by peak demand period. Again Table 3.2 indicates the years over which the trend is calculated. This plot shows that carbon intensity has fallen by around 40 kg CO2e/MWh per year over the time period in all time periods. However it is also noticeable that mean carbon intensity has marginally increased above trend in the months of lockdown.
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
| year | Mean CI | N obs |
|---|---|---|
| 2015 | 389.81 | 17472 |
| 2016 | 299.37 | 17520 |
| 2017 | 262.87 | 17472 |
| 2018 | 234.84 | 17472 |
| 2019 | 214.15 | 17472 |
| 2020 | 183.30 | 7536 |
Figure 3.10 shows half-hourly carbon intensity since 2020-02-01. Overall generation has fallen as we would expect given the season (less heating and lighting required) and weekdays are indeed less easy to distinguish from weekends.
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
Figure 3.11 shows the daily carbon intensity profiles over time for each day of the week.
Figure 3.12 shows the difference between hourly and weekday patterns for lockdown 2020 and the previous year(s) starting from January 2018. This plot is not particularly informative since we now CI is already lower in 2020 than previous years and we would expect it to fall during the spring as solar generation increases its contributon. The lockdown phases will also be affected by small numbers of highly windy days.
## Plot start date: 2018-01-01
## Plot end date: 2020-06-06 23:30:00
## Warning in checkPrep(mydata, vars, type, remove.calm = FALSE): Detected data with Daylight Saving Time, converting to UTC/
## GMT
Figure 3.13 shows the mean half-hourly carbon intensity per day in 2020 and the pre 2020 average for the same day. As we would expect given Figure 3.9, 2020 was already considerably lower than the average of previous years but this is not necessarily sustained through lockdown although the affects of weather on solar and wind availability need to be taken in to account.
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Figure 3.14 shows the percentage difference between the mean half-hourly carbon intensity per day in 2020 and the pre 2020 average for the same day. As expected, 2020 was already considerably lower than the average of previous years but this is not necessarily sustained through lockdown although the affects of weather on solar and wind availability need to be taken in to account.
tbc
In this section we use our calculation of total CO2e emitted per half hour (see Section 2.1) to analyse the changes in total CO2e emitted which is, after all, what we are mostly interested in from a climate change point of view. Remember that this value is driven both by total generation (demand) and carbon intensity. As we saw above, these are not always tightly correlated.
Figure 3.15 agin uses the openair TheilSen()
function (Carslaw and Ropkins 2012) to create a de-seasoned trend plot but this time for mean half-hourly carbon intensity by peak demnand period. Again Table 3.3 indicates the years over which the trend is calculated.
This plot shows that total CO2e emissions intensity has fallen by a half-hourly mean of ~600-800 tonnes of CO2e over the time period. However there is some variation around this trend with apparently slightly above trend emissions in the evening peak period during April and May 2020 noticeable despite the almost complete absence of coal generation during this period (see Annex, Figure ??).
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
| year | Mean half-hourly C02e (T) | N obs |
|---|---|---|
| 2015 | 6868.33 | 17472 |
| 2016 | 5265.33 | 17520 |
| 2017 | 4637.33 | 17472 |
| 2018 | 4115.63 | 17472 |
| 2019 | 3664.61 | 17472 |
| 2020 | 3022.46 | 7536 |
Figure 3.16 shows total half-hourly CO2e emissions since 2020-02-01. Overall generation has fallen as we would expect given the season (less heating and lighting required) and weekdays are indeed less easy to distinguish from weekends.
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
Figure 3.17 shows the daily CO2e emissions profiles over time for each day of the week since 2020-02-01.
Figure 3.18 shows the difference between hourly and weekday patterns for lockdown 2020 and the previous year(s) starting from January 2018. Again, due to the downward trends we have already identified, we would expect total CO2e emissions to be lower during 2020 and also to fall during the spring as solar generation increases its contributon.
## Plot start date: 2018-01-01
## Plot end date: 2020-06-06 23:30:00
## Warning in checkPrep(mydata, vars, type, remove.calm = FALSE): Detected data with Daylight Saving Time, converting to UTC/
## GMT
Figure 3.19 shows the mean half-hourly carbon intensity per day in 2020 and the pre 2020 average for the same day. As expected, 2020 was already considerably lower than the average of previous years but this is not necessarily sustained through lockdown although the affects of weather on solar and wind availability need to be taken in to account.
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Figure 3.20 shows the percentage difference between the mean half-hourly carbon intensity per day in 2020 and the pre 2020 average for the same day. As expected, 2020 was already considerably lower than the average of previous years but this is not necessarily sustained through lockdown although the affects of weather on solar and wind availability need to be taken in to account.
tbc
If you wish to use any of the material from this report please cite as:
This work is (c) 2020 the authors. Usage rights are specified in the License section (5.4).
All code used to create this report is available from:
This work is made available under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License.
This means you are free to:
Under the following terms:
Notices:
For the avoidance of doubt and explanation of terms please refer to the full license notice and legal code.
You may not be reading the most recent version of this report. Please check:
We do not ‘support’ the code but if you notice a problem please check the issues on our repo and if it doesn’t already exist, please open a new one. * this report’s edit history
This work was supported by:
| Name | gridGenDT |
| Number of rows | 94944 |
| Number of columns | 46 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| Date | 1 |
| difftime | 1 |
| factor | 1 |
| numeric | 38 |
| POSIXct | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| DATETIME | 0 | 1 | 19 | 19 | 0 | 94944 | 0 |
| rDateTime | 0 | 1 | 20 | 20 | 0 | 94944 | 0 |
| lockdown | 0 | 1 | 11 | 23 | 0 | 4 | 0 |
Variable type: Date
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| obsDate | 0 | 1 | 2015-01-01 | 2020-06-06 | 2017-09-18 | 1978 |
Variable type: difftime
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| hms | 0 | 1 | 0 secs | 84600 secs | 42300 secs | 48 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| peakPeriod | 0 | 1 | FALSE | 5 | Day: 29670, Ear: 27692, Eve: 15824, Lat: 15824 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| GAS | 0 | 1 | 1.254120e+04 | 5.263570e+03 | 1840.00 | 8.426000e+03 | 1.223100e+04 | 1.643000e+04 | 2.747200e+04 | ▅▇▇▅▁ |
| COAL | 0 | 1 | 3.100550e+03 | 3.705050e+03 | 0.00 | 3.620000e+02 | 1.457000e+03 | 4.880000e+03 | 1.775800e+04 | ▇▂▁▁▁ |
| NUCLEAR | 0 | 1 | 6.981340e+03 | 9.754200e+02 | 3705.00 | 6.394000e+03 | 7.119000e+03 | 7.724000e+03 | 9.013000e+03 | ▁▂▆▇▃ |
| WIND | 0 | 1 | 4.958450e+03 | 3.541360e+03 | 0.00 | 2.121000e+03 | 4.206000e+03 | 6.930000e+03 | 1.712900e+04 | ▇▆▃▂▁ |
| HYDRO | 0 | 1 | 4.253000e+02 | 2.557000e+02 | 0.00 | 2.190000e+02 | 3.920000e+02 | 6.000000e+02 | 1.403000e+03 | ▇▇▅▂▁ |
| IMPORTS | 0 | 1 | 2.553460e+03 | 8.898500e+02 | 0.00 | 2.032000e+03 | 2.742000e+03 | 3.058000e+03 | 4.884000e+03 | ▁▃▇▇▁ |
| BIOMASS | 0 | 1 | 9.181300e+02 | 1.049950e+03 | 0.00 | 0.000000e+00 | 0.000000e+00 | 1.898000e+03 | 3.204000e+03 | ▇▁▂▂▁ |
| OTHER | 0 | 1 | 8.358100e+02 | 8.069500e+02 | 0.00 | 9.900000e+01 | 5.785000e+02 | 1.566000e+03 | 2.456000e+03 | ▇▁▂▁▃ |
| SOLAR | 0 | 1 | 1.215080e+03 | 1.914370e+03 | 0.00 | 0.000000e+00 | 1.200000e+01 | 1.920000e+03 | 9.680000e+03 | ▇▂▁▁▁ |
| STORAGE | 0 | 1 | 2.721700e+02 | 3.222300e+02 | 0.00 | 0.000000e+00 | 2.120000e+02 | 4.020000e+02 | 2.394000e+03 | ▇▂▁▁▁ |
| GENERATION | 0 | 1 | 3.380148e+04 | 7.049410e+03 | 18287.00 | 2.830600e+04 | 3.364550e+04 | 3.877125e+04 | 5.345400e+04 | ▃▇▇▅▁ |
| CARBON_INTENSITY | 0 | 1 | 2.725200e+02 | 9.305000e+01 | 54.00 | 2.070000e+02 | 2.590000e+02 | 3.360000e+02 | 5.800000e+02 | ▂▇▆▃▁ |
| LOW_CARBON | 0 | 1 | 1.449830e+04 | 4.062260e+03 | 6747.00 | 1.136600e+04 | 1.392950e+04 | 1.702600e+04 | 3.074600e+04 | ▅▇▅▁▁ |
| ZERO_CARBON | 0 | 1 | 1.358017e+04 | 3.696420e+03 | 5164.00 | 1.070400e+04 | 1.318600e+04 | 1.597500e+04 | 2.847300e+04 | ▃▇▅▂▁ |
| RENEWABLE | 0 | 1 | 6.598840e+03 | 3.909420e+03 | 125.00 | 3.543000e+03 | 6.033000e+03 | 8.968000e+03 | 2.311800e+04 | ▇▇▃▁▁ |
| FOSSIL | 0 | 1 | 1.564174e+04 | 6.774330e+03 | 2421.00 | 1.045600e+04 | 1.494600e+04 | 2.003900e+04 | 3.824200e+04 | ▅▇▆▂▁ |
| GAS_perc | 0 | 1 | 3.632000e+01 | 1.134000e+01 | 6.00 | 2.810000e+01 | 3.720000e+01 | 4.520000e+01 | 6.530000e+01 | ▂▅▇▇▁ |
| COAL_perc | 0 | 1 | 8.460000e+00 | 9.540000e+00 | 0.00 | 1.200000e+00 | 4.300000e+00 | 1.410000e+01 | 4.530000e+01 | ▇▂▂▁▁ |
| NUCLEAR_perc | 0 | 1 | 2.155000e+01 | 5.420000e+00 | 9.70 | 1.760000e+01 | 2.070000e+01 | 2.490000e+01 | 4.310000e+01 | ▂▇▅▁▁ |
| WIND_perc | 0 | 1 | 1.504000e+01 | 1.090000e+01 | 0.00 | 6.400000e+00 | 1.270000e+01 | 2.100000e+01 | 5.830000e+01 | ▇▆▂▁▁ |
| HYDRO_perc | 0 | 1 | 1.230000e+00 | 6.800000e-01 | 0.00 | 7.000000e-01 | 1.200000e+00 | 1.700000e+00 | 4.200000e+00 | ▆▇▅▁▁ |
| IMPORTS_perc | 0 | 1 | 7.920000e+00 | 3.150000e+00 | 0.00 | 5.900000e+00 | 8.100000e+00 | 1.010000e+01 | 1.890000e+01 | ▂▆▇▂▁ |
| BIOMASS_perc | 0 | 1 | 2.820000e+00 | 3.300000e+00 | 0.00 | 0.000000e+00 | 0.000000e+00 | 5.700000e+00 | 1.610000e+01 | ▇▃▂▁▁ |
| OTHER_perc | 0 | 1 | 2.550000e+00 | 2.520000e+00 | 0.00 | 3.000000e-01 | 1.700000e+00 | 4.700000e+00 | 1.050000e+01 | ▇▂▃▁▁ |
| SOLAR_perc | 0 | 1 | 3.400000e+00 | 5.480000e+00 | 0.00 | 0.000000e+00 | 0.000000e+00 | 5.200000e+00 | 3.280000e+01 | ▇▂▁▁▁ |
| STORAGE_perc | 0 | 1 | 7.200000e-01 | 8.300000e-01 | 0.00 | 0.000000e+00 | 6.000000e-01 | 1.100000e+00 | 7.900000e+00 | ▇▁▁▁▁ |
| GENERATION_perc | 0 | 1 | 1.000000e+02 | 0.000000e+00 | 100.00 | 1.000000e+02 | 1.000000e+02 | 1.000000e+02 | 1.000000e+02 | ▁▁▇▁▁ |
| LOW_CARBON_perc | 0 | 1 | 4.404000e+01 | 1.292000e+01 | 16.40 | 3.430000e+01 | 4.220000e+01 | 5.200000e+01 | 8.790000e+01 | ▃▇▅▂▁ |
| ZERO_CARBON_perc | 0 | 1 | 4.122000e+01 | 1.177000e+01 | 15.50 | 3.250000e+01 | 3.950000e+01 | 4.850000e+01 | 8.510000e+01 | ▂▇▅▂▁ |
| RENEWABLE_perc | 0 | 1 | 1.967000e+01 | 1.152000e+01 | 0.50 | 1.080000e+01 | 1.780000e+01 | 2.640000e+01 | 6.620000e+01 | ▇▇▃▁▁ |
| FOSSIL_perc | 0 | 1 | 4.478000e+01 | 1.276000e+01 | 9.00 | 3.620000e+01 | 4.590000e+01 | 5.420000e+01 | 7.670000e+01 | ▁▅▇▇▂ |
| year | 0 | 1 | 2.017240e+03 | 1.580000e+00 | 2015.00 | 2.016000e+03 | 2.017000e+03 | 2.019000e+03 | 2.020000e+03 | ▇▃▃▃▂ |
| nHalfHours | 0 | 1 | 4.800000e+01 | 0.000000e+00 | 48.00 | 4.800000e+01 | 4.800000e+01 | 4.800000e+01 | 4.800000e+01 | ▁▁▇▁▁ |
| GW | 0 | 1 | 3.380000e+01 | 7.050000e+00 | 18.29 | 2.831000e+01 | 3.365000e+01 | 3.877000e+01 | 5.345000e+01 | ▃▇▇▅▁ |
| totalC02e_g | 0 | 1 | 4.760588e+09 | 2.286452e+09 | 776697500.00 | 3.047852e+09 | 4.310907e+09 | 6.088041e+09 | 1.327839e+10 | ▆▇▃▂▁ |
| totalC02e_kg | 0 | 1 | 4.760588e+06 | 2.286452e+06 | 776697.50 | 3.047852e+06 | 4.310907e+06 | 6.088041e+06 | 1.327839e+07 | ▆▇▃▂▁ |
| totalC02e_T | 0 | 1 | 4.760590e+03 | 2.286450e+03 | 776.70 | 3.047850e+03 | 4.310910e+03 | 6.088040e+03 | 1.327839e+04 | ▆▇▃▂▁ |
| month | 0 | 1 | 6.260000e+00 | 3.460000e+00 | 1.00 | 3.000000e+00 | 6.000000e+00 | 9.000000e+00 | 1.200000e+01 | ▇▆▅▅▇ |
Variable type: POSIXct
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| rDateTimeUTC | 0 | 1 | 2015-01-01 | 2020-06-06 23:30:00 | 2017-09-18 23:45:00 | 94944 |
| date | 0 | 1 | 2015-01-01 | 2020-06-06 23:30:00 | 2017-09-18 23:45:00 | 94944 |
| year | coal | gas | nuclear | wind | hydro | solar | biomass | imports | other | N obs |
|---|---|---|---|---|---|---|---|---|---|---|
| 2015 | 8501.75 | 9636.22 | 7502.69 | 3331.11 | 466.80 | 830.20 | 0.00 | 2656.91 | 1289.76 | 17472 |
| 2016 | 3195.44 | 14506.72 | 7605.16 | 3009.30 | 383.93 | 1179.91 | 0.00 | 2309.63 | 1615.29 | 17520 |
| 2017 | 2358.16 | 13615.49 | 7484.17 | 4620.53 | 450.90 | 1240.04 | 254.42 | 2221.83 | 1396.04 | 17472 |
| 2018 | 1756.75 | 13155.89 | 6921.38 | 5633.11 | 365.93 | 1343.86 | 1837.52 | 2516.07 | 81.57 | 17472 |
| 2019 | 679.23 | 13074.03 | 6023.42 | 6641.34 | 407.94 | 1340.81 | 1961.30 | 2868.53 | 88.55 | 17472 |
| 2020 | 807.91 | 9555.54 | 5516.39 | 8580.45 | 543.85 | 1541.21 | 2169.89 | 3005.59 | 153.51 | 7536 |
Figure ?? shows Theil-Sen plots for each fuel. Note that these are not de-seasoned so that the seasonal patterns can be seen. Theil-Sen trend lines are linear and so may go negative when a steep trends asymptotes to 0 (see e.g. coal). They also tend not to perform well when seasonal patterns are present.
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
## [1] "Taking bootstrap samples. Please wait."
Figure 6.11 shows the relationship between half-hourly carbon intensity and half-hourly generation over the last five years. 2020 is excluded as it is not yet complete.
##
## Attaching package: 'gtools'
## The following object is masked from 'package:drake':
##
## running
The openair package (Carslaw and Ropkins 2012) contains a number of novel plotting methods.
## Warning: `as_data_frame()` is deprecated as of tibble 2.0.0.
## Please use `as_tibble()` instead.
## The signature and semantics have changed, see `?as_tibble`.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
## Warning: `data_frame()` is deprecated as of tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
Analysis completed in 125.63 seconds ( 2.09 minutes) using knitr in RStudio with R version 3.6.0 (2019-04-26) running on x86_64-redhat-linux-gnu.
## R version 3.6.0 (2019-04-26)
## Platform: x86_64-redhat-linux-gnu (64-bit)
## Running under: Red Hat Enterprise Linux
##
## Matrix products: default
## BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so
##
## locale:
## [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
## [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 LC_PAPER=en_GB.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] gtools_3.8.1 openair_2.7-2 kableExtra_1.1.0 zoo_1.8-4 skimr_2.1.1 lubridate_1.7.8
## [7] hms_0.5.3 ggplot2_3.3.0 drake_7.12.1 data.table_1.12.0 gridCarbon_0.1.0 here_0.1
##
## loaded via a namespace (and not attached):
## [1] Rcpp_1.0.1 txtq_0.2.0 lattice_0.20-38 tidyr_1.0.3 prettyunits_1.0.2 assertthat_0.2.0
## [7] rprojroot_1.3-2 digest_0.6.25 utf8_1.1.4 R6_2.3.0 repr_1.1.0 backports_1.1.3
## [13] evaluate_0.14 highr_0.7 httr_1.4.1 pillar_1.4.4 rlang_0.4.6 progress_1.2.2
## [19] rstudioapi_0.11 hexbin_1.27.2 Matrix_1.2-17 rmarkdown_2.1 labeling_0.3 splines_3.6.0
## [25] webshot_0.5.2 readr_1.3.1 stringr_1.4.0 igraph_1.2.2 munsell_0.5.0 compiler_3.6.0
## [31] xfun_0.13 pkgconfig_2.0.2 base64enc_0.1-3 mgcv_1.8-28 htmltools_0.3.6 tidyselect_0.2.5
## [37] tibble_3.0.1 bookdown_0.19 fansi_0.4.0 viridisLite_0.3.0 crayon_1.3.4 dplyr_0.8.5
## [43] withr_2.1.2 MASS_7.3-51.4 grid_3.6.0 nlme_3.1-139 jsonlite_1.6 gtable_0.2.0
## [49] lifecycle_0.2.0 magrittr_1.5 storr_1.2.1 scales_1.0.0 cli_2.0.2 stringi_1.2.4
## [55] mapproj_1.2.7 latticeExtra_0.6-28 xml2_1.3.2 ellipsis_0.3.1 filelock_1.0.2 generics_0.0.2
## [61] vctrs_0.3.0 RColorBrewer_1.1-2 tools_3.6.0 forcats_0.5.0 glue_1.3.0 purrr_0.3.4
## [67] maps_3.3.0 parallel_3.6.0 yaml_2.2.0 colorspace_1.4-0 cluster_2.0.8 base64url_1.4
## [73] rvest_0.3.5 knitr_1.28
Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, and Winston Chang. 2018. Rmarkdown: Dynamic Documents for R. https://CRAN.R-project.org/package=rmarkdown.
Carslaw, David C., and Karl Ropkins. 2012. “Openair — an R Package for Air Quality Data Analysis.” Environmental Modelling & Software 27–28 (0): 52–61. doi:10.1016/j.envsoft.2011.09.008.
Dowle, M, A Srinivasan, T Short, S Lianoglou with contributions from R Saporta, and E Antonyan. 2015. Data.table: Extension of Data.frame. https://CRAN.R-project.org/package=data.table.
Grolemund, Garrett, and Hadley Wickham. 2011. “Dates and Times Made Easy with lubridate.” Journal of Statistical Software 40 (3): 1–25. http://www.jstatsoft.org/v40/i03/.
Khan, Imran, Michael W. Jack, and Janet Stephenson. 2018. “Analysis of Greenhouse Gas Emissions in Electricity Systems Using Time-Varying Carbon Intensity.” Journal of Cleaner Production 184 (May): 1091–1101. doi:10.1016/j.jclepro.2018.02.309.
Landau, William Michael. 2019. Drake: A Pipeline Toolkit for Reproducible Computation at Scale. https://CRAN.R-project.org/package=drake.
R Core Team. 2016. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Staffell, Iain. 2017. “Measuring the Progress and Impacts of Decarbonising British Electricity.” Energy Policy 102 (March): 463–75. doi:10.1016/j.enpol.2016.12.037.
Wickham, Hadley. 2009. Ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. http://ggplot2.org.
Xie, Yihui. 2016a. Bookdown: Authoring Books and Technical Documents with R Markdown. Boca Raton, Florida: Chapman; Hall/CRC. https://github.com/rstudio/bookdown.
———. 2016b. Knitr: A General-Purpose Package for Dynamic Report Generation in R. https://CRAN.R-project.org/package=knitr.
Zeileis, Achim, and Gabor Grothendieck. 2005. “Zoo: S3 Infrastructure for Regular and Irregular Time Series.” Journal of Statistical Software 14 (6): 1–27. doi:10.18637/jss.v014.i06.
Zhu, Hao. 2018. KableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax. https://CRAN.R-project.org/package=kableExtra.


| Metric | Tag | Overall | Per Function |
|---|---|---|---|
| Lines of Code | LOC | 694 | ****** |
| McCabe's Cyclomatic Number | MVG | 141 | ****** |
| Lines of Comment | COM | 51 | ******** |
| LOC/COM | L_C | 13.608 | |
| MVG/COM | M_C | 2.765 | |
| Weighted Methods per Class ( weighting = unity ) | WMC1 | 40 | |
| Weighted Methods per Class ( weighting = visible ) | WMCv | 0 | |
| Depth of Inheritance Tree | DIT | 0 | |
| Number of Children | NOC | 0 | |
| Coupling between objects | CBO | 12 | |
| Information Flow measure ( inclusive ) | IF4 | 121 | ******** |
| Information Flow measure ( visible ) | IF4v | 121 | ******** |
| Information Flow measure ( concrete ) | IF4c | 0 | ******** |
| Description | LOC | MVG | COM | L_C | M_C |
|---|---|---|---|---|---|
| No module extents have been identified for this module | |||||
| Function prototype | LOC | MVG | COM | L_C | M_C |
|---|---|---|---|---|---|
| IPCThreadState( ) definition ./binder/IPCThreadState.cpp:665 | 11 | 0 | 0 | ------ | ------ |
| attemptIncStrongHandle( int32_t ) definition ./binder/IPCThreadState.cpp:617 | 15 | 3 | 1 | ------ | ------ |
| clearCaller( ) definition ./binder/IPCThreadState.cpp:389 | 5 | 0 | 0 | ------ | ------ |
| clearCallingIdentity( ) definition ./binder/IPCThreadState.cpp:356 | 6 | 1 | 0 | ------ | ------ |
| clearDeathNotification( int32_t, BpBinder * ) definition ./binder/IPCThreadState.cpp:657 | 7 | 1 | 0 | ------ | ------ |
| clearLastError( ) definition ./binder/IPCThreadState.cpp:339 | 6 | 1 | 0 | ------ | ------ |
| decStrongHandle( int32_t ) definition ./binder/IPCThreadState.cpp:596 | 6 | 0 | 0 | ------ | ------ |
| decWeakHandle( int32_t ) definition ./binder/IPCThreadState.cpp:610 | 6 | 0 | 0 | ------ | ------ |
| disableBackgroundScheduling( bool ) definition ./binder/IPCThreadState.cpp:329 | 4 | 0 | 0 | ------ | ------ |
| executeCommand( int32_t ) definition ./binder/IPCThreadState.cpp:926 | 160 | 26 | 18 | 8.889 | 1.444 |
| expungeHandle( int32_t, IBinder * ) definition ./binder/IPCThreadState.cpp:641 | 5 | 0 | 0 | ------ | ------ |
| flushCommands( ) definition ./binder/IPCThreadState.cpp:395 | 6 | 2 | 0 | ------ | ------ |
| freeBuffer( Parcel *, const uint8_t *, size_t, const binder_size_t *, size_t, void * ) definition ./binder/IPCThreadState.cpp:1150 | 14 | 1 | 5 | ------ | ------ |
| getAndExecuteCommand( ) definition ./binder/IPCThreadState.cpp:402 | 18 | 4 | 7 | ------ | ------ |
| getCallingPid( ) definition ./binder/IPCThreadState.cpp:346 | 4 | 1 | 0 | ------ | ------ |
| getCallingUid( ) definition ./binder/IPCThreadState.cpp:351 | 4 | 1 | 0 | ------ | ------ |
| getLastTransactionBinderFlags( ) definition ./binder/IPCThreadState.cpp:378 | 4 | 1 | 0 | ------ | ------ |
| getStrictModePolicy( ) definition ./binder/IPCThreadState.cpp:368 | 4 | 1 | 0 | ------ | ------ |
| handlePolledCommands( ) definition ./binder/IPCThreadState.cpp:504 | 10 | 2 | 0 | ------ | ------ |
| incStrongHandle( int32_t ) definition ./binder/IPCThreadState.cpp:589 | 6 | 0 | 0 | ------ | ------ |
| incWeakHandle( int32_t ) definition ./binder/IPCThreadState.cpp:603 | 6 | 0 | 0 | ------ | ------ |
| joinThreadPool( bool ) definition ./binder/IPCThreadState.cpp:456 | 23 | 10 | 6 | 3.833 | 1.667 |
| process( ) definition ./binder/IPCThreadState.cpp:334 | 4 | 1 | 0 | ------ | ------ |
| processPendingDerefs( ) definition ./binder/IPCThreadState.cpp:433 | 21 | 5 | 1 | 21.000 | 5.000 |
| requestDeathNotification( int32_t, BpBinder * ) definition ./binder/IPCThreadState.cpp:649 | 7 | 1 | 0 | ------ | ------ |
| restoreCallingIdentity( int64_t ) definition ./binder/IPCThreadState.cpp:383 | 5 | 0 | 0 | ------ | ------ |
| self( ) definition ./binder/IPCThreadState.cpp:280 | 21 | 9 | 0 | ****** | ****** |
| selfOrNull( ) definition ./binder/IPCThreadState.cpp:304 | 9 | 3 | 0 | ------ | ------ |
| sendReply( const Parcel &, uint32_t ) definition ./binder/IPCThreadState.cpp:681 | 8 | 3 | 0 | ------ | ------ |
| setLastTransactionBinderFlags( int32_t ) definition ./binder/IPCThreadState.cpp:373 | 4 | 0 | 0 | ------ | ------ |
| setStrictModePolicy( int32_t ) definition ./binder/IPCThreadState.cpp:363 | 4 | 0 | 0 | ------ | ------ |
| setupPolling( int * ) definition ./binder/IPCThreadState.cpp:493 | 9 | 3 | 0 | ------ | ------ |
| shutdown( ) definition ./binder/IPCThreadState.cpp:314 | 12 | 2 | 1 | ------ | ------ |
| stopProcess( bool ) definition ./binder/IPCThreadState.cpp:517 | 7 | 0 | 3 | ------ | ------ |
| talkWithDriver( bool ) definition ./binder/IPCThreadState.cpp:782 | 80 | 21 | 6 | 13.333 | 3.500 |
| threadDestructor( void * ) definition ./binder/IPCThreadState.cpp:1135 | 11 | 2 | 0 | ------ | ------ |
| transact( int32_t, uint32_t, const Parcel &, Parcel *, uint32_t ) definition ./binder/IPCThreadState.cpp:527 | 50 | 11 | 2 | 25.000 | 5.500 |
| waitForResponse( Parcel *, status_t * ) definition ./binder/IPCThreadState.cpp:691 | 78 | 21 | 0 | ****** | ****** |
| writeTransactionData( int32_t, uint32_t, int32_t, uint32_t, const Parcel &, status_t * ) definition ./binder/IPCThreadState.cpp:883 | 31 | 4 | 1 | 31.000 | ------ |
| ~IPCThreadState( ) definition ./binder/IPCThreadState.cpp:677 | 3 | 0 | 0 | ------ | ------ |


This Survey Form is for feedback and advice for projects and experiences
How many years of experience do you have? (Choose one option)
What should I improve on? (Check all that apply)
Any comments or suggestions?
Which option best describes your current role?


%inherit file="base.htm" />
<%block name="content">
Your order has been received!
Your Ordered Items
| Item |
Qty |
Price |
Total |
%for product in Objects:
|
${product.name} |
${Objects[product]} |
$${product.price} |
$${product.price} |
%endfor
Your Billing Option
| Name on Card |
Description |
| ${userbilling.name} |
${userbilling.cardtype.name} ending in ${userbilling.number[-4:]} |
Your Shipping Information
%for value in usershipping.customer():
| ${value.key} |
%endfor
%for value in usershipping.customer():
| ${value.value} |
%endfor
Your Delivery Option
| Option |
Price |
| ${useroption.daystoarrive}-Day Shipping |
%if useroption.price == 0:
Free! |
%else:
$${useroption.price} |
%endif
Your Order Details
| Estimated Arrival |
Order Total |
| < < < < ${EndDate} |
< < < < ${totalcharged} |
Continue Shopping
%block>


NetsGets Websites
We can't find this page!
Looks Like...
1. This link is old or non-existent.
2. Anton, our server, is in a bad mood.
Take Me Home!


Beta This is a test version of the layout of this page. Take the survey to help us improve it
Guidance
A framework to help schools to collect information about their income and expenditure.
This guidance applies to maintained schools and pupil referral units and is for:
It is optional for nurseries and non-maintained special schools.
The consistent financial reporting (CFR) framework provides a standard template for schools to collect information about their income and expenditure by financial years, which maintained schools provide to their local authorities in a financial statement each year.
Financial statements must be in line with the approved headings set out in the The Consistent Financial Reporting (England) Regulations 2012 .
The guidance provides definitions for each CFR code set out in the regulations.
Financial statements include:
The information supports benchmarking and enables governors and local authorities to produce simple reports. The financial benchmarking website enables comparisons of school income and expenditure profiles with similar schools.
PDF , 437KB , 39 pages
PDF , 454KB , 37 pages
MS Word Document , 4.86MB
MS Word Document , 2.49MB
Published: 21 April 2015
Updated: 23 March 2016
From: Education Funding Agency


Matt Seei
President/Sales
President/Sales
Vice President/Operations
Operations Manager
Accounts Payable/Receivable
Shipping/Receiving/Facilities
Service Manager
Service Technician (Ryobi, Challenge Machinery, Baum Folder)
Service Technician (Duplo)
Service Technician (Mimaki)