DfE enquiries
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Press release
Information on the pupil premium, which will provide schools with additional funding to be spent on disadvantaged pupils.
A new pupil premium to raise achievement among disadvantaged children will start from 2011, the government announced today.
As set out in the coalition government document, the new pupil premium will provide additional funding for more disadvantaged pupils to ensure they benefit from the same opportunities as pupils from richer families.
Education Secretary Michael Gove and Children’s Minister Sarah Teather have launched a consultation to seek views on how best to operate the premium including what deprivation indicator to use. The premium will help target money so that more can be done to help children from disadvantaged backgrounds that are still not doing as well at school as they could or should do.
Education Secretary Michael Gove said:
Schools should be engines of social mobility. They should provide the knowledge, and the tools, to enable talented young people to overcome accidents of birth and an inheritance of disadvantage in order to enjoy greater opportunities.
Children from poorer backgrounds, who are currently doing less well at school, are falling further and further behind in the qualifications race every year - and that in turn means that they are effectively condemned to ever poorer employment prospects, narrower social and cultural horizons, less by way of resources to invest in their own children - and thus a cycle of disadvantage and inequality is made worse with every year that passes. Last year of the 80,000 pupils who had been on free school meals just 45 made it to Oxbridge. Just 2 out of 57 countries now have a wider attainment gap between the highest and lowest achieving pupils.
This is not good enough and addressing this disparity is a top priority of the coalition government. It is for this reason that we are implementing a pupil premium, to ensure that extra funding is targeted at those deprived pupils that most need it.
The latest figures available show that:
The proposed pupil premium would provide additional per pupil funding on top of the existing funding provided to schools. Schools will be free to spend the additional funding as they choose to raise the achievement of disadvantage pupils.
Children’s Minister Sarah Teather said:
For too long social background has been a deciding factor in a child’s achievement and future prospects. In a fair society, it’s the government’s responsibility to close the gulf in achievement, where the poorest children are almost 3 times less likely to leave school with five good GCSEs than their richer classmates.
That’s why I’m delighted we are today announcing a new pupil premium, which will give extra funding to schools to help them tackle the inequalities that have been a part of our state system for far too long. Thousands of children will finally be getting the extra support they need to succeed.
The consultation on the pupil premium sets out options for how deprivation is calculated including:
In addition, the government set out its proposal for the pupil premium to:
The government also set out its proposals for distributing overall school funding from April 2011. School funding will in the short term continue to be allocated using the current method to allow the pupil premium to be introduced smoothly. However, the government signalled its intention to review school funding for all schools including academies beyond the 2011 to 2012 year and details will be announced in due course.
The school funding consultation is also seeking views on
In addition, the government announced today that all local authorities will be required to introduce the early years single funding formula (EYSFF) from April 2011. For too long, early years funding has been inconsistent and patchy across the country - with too many children, particularly from disadvantaged families, not accessing any or all of their free nursery education hours.
The EYSFF will require all local authorities to be transparent about the funding that they are providing for free nursery education for 3- and 4-year-olds, so that parents and providers are able to hold their local authority to account. It will also require local authorities to fund providers for the children that attend their nursery - rather than allowing funding to be wasted on empty places. This will help to ensure that nurseries are making the best effort to fill their places by attracting and encouraging more families to take up free nursery education for their child.
The government has pledged to ensure that funding is focused on supporting those children from disadvantaged families who benefit most from nursery education. For that reason, every local formula must include a deprivation supplement so that more money will be targeted at the children who need it most. This will be set locally in the short term, but we will look at whether - over time - it is feasible to introduce a pupil premium for the early years.
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Published: 26 July 2010


Advanced Search Tips
- all field query condition operators are "like" by default, except for check box and date fields which use = by default
- to override a field query condition operator, prefix your search keyword(s) with one of the following valid operators followed by a space:
- can use % wildcard anywhere in your field queries
- use 1 or 0 for check box fields


No clothstrip and spatula needed. Since our paste has such a high concentration of honey and sugar, bacteria cannot breed in the jar. ONCE USE SUGAR QUEEN WAX YOU WILL NEVER RETURN BACK TO PLUCKING OR SHAVING
Ingredients: Sugar, Honey, Calamansi, Salt
Directions: Knead, stick, and pull.


Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
Change Log: 2.059
Download D 2.059
released Apr 12, 2012
New/Changed Features
- Add predefined Ddoc macro SRCFILENAME
- Changed lexer to support # as a token, preserving #line's original behavior
- added AES, PCLMULQDQ, RDRAND, AVX, VAES, VPCLMULQDQ, FMA, FP16C to core.cpuid
- Bugzilla 435: Constructors should be templatized
- Bugzilla 2367: Overloading error with string literals
- Bugzilla 3382: [tdpl] Implement uniform function call syntax
- Bugzilla 4536: Typetuples (T...) should have an .init member
- Bugzilla 5525: Eponymous templates should allow for overloaded eponymous members
- Bugzilla 7105: relax inout rules
- Bugzilla 7833: Changelog should clearly mention struct literal/opCmp/opEquals/toHash changes
- Strive to make toHash, toString, opEquals and opCmp functions pure, nothrow, const and @safe. Soon, this will become a requirement.
- The deprecated std.date, std.dateparse, and std.gregorian modules have been removed. Please use std.datetime instead.
- Several deprecated functions in std.file have been removed.
- The old functions in std.path which were scheduled for deprecation have now been deprecated. Please use the new ones which were introduced in 2.055. However, note that curdir and pardir do not have replacements, because they're "." and ".." respectively on all OSes so variables for them were seen as unnecessary. Also, one major change to note about the new std.path functions is that when operating on extensions, they expect "." to be part of the extension whereas the old ones did not (e.g. "file.txt".extension == ".txt" whereas "file.txt".getExt() == "txt").
- The version of std.exception.enforceEx which was scheduled for deprecation has been deprecated. Please use the version which takes exceptions which can be constructed with new E(msg, file, line) (rather than just new E(msg) as the old version did). That way, exceptions constructed with enforceEx will give the file and line number where enforceEx was called.
- Get rid of Win9x support.
- std.typecons: Added Proxy mixin template.
- std.format: Added documentation about compound format specifier.
Druntime Bugs Fixed
Library Bugs Fixed
- Bugzilla 4604: A stack overflow with writeln
- Bugzilla 5523: std.regex handles "\s" and "\W" (etc.) inside square brackets improperly
- Bugzilla 5652: Add \p and \P unicode properties to std.regex
- Bugzilla 5674: AssertError in std.regex
- Bugzilla 5964: std.stdio.readln can throw a UnicodeException
- Bugzilla 6217: [GSOC] result of std.algorithm.map is not movable
- Bugzilla 6403: Upgrade std.regex to Unicode UTS #18 Level 1 support
- Bugzilla 6892: Formatted write with specified length of enum member
- Bugzilla 7111: New regex engine cannot match beginning of empty string
- Bugzilla 7138: Can't call array() on dirEntries
- Bugzilla 7264: Can't iterate result from 4-arg dirEntries as string
- Bugzilla 7299: std.uni missing doc comments
- Bugzilla 7300: std.regex.ShiftOr!dchar.search is broken
- Bugzilla 7374: stdin.byLine() throws AssertError on empty input
- Bugzilla 7460: std.windows.registry reports a false exception message
- Bugzilla 7476: Write(ln) functions no longer accept retro range
- Bugzilla 7628: std.format formatValue incorrect overload
- Bugzilla 7674: regex replace requires escaped format
- Bugzilla 7679: std.regex.split and splitter don't work w/ ctRegex
- Bugzilla 7718: regex and ctRegex produce different results
DMD Bugs Fixed
- rdmd: --force now works with --eval
- rdmd: update --eval's import list
- Bugzilla 176: [module] message "module and package have the same name"
- Bugzilla 783: Cannot use an array w/ const or variable index as new[] size argument.
- Bugzilla 977: Expressions inside a struct or array initializer get wrong line number
- Bugzilla 3279: Confusing error message when comparing types
- Bugzilla 3354: invalid number of args accepted for 1/2 arg floating point instructions
- Bugzilla 3509: Cannot forward reference a template mixin's members in a compile-time context
- Bugzilla 3510: Cannot forward reference a templated type from within a template mixin
- Bugzilla 3559: DMD 1.048+ fails to take function pointer from overloaded member functions
- Bugzilla 3630: bad error location in "has no effect in expression" error
- Bugzilla 3682: Regression(2.038) is expression fails to match types
- Bugzilla 3812: Missing line number for implicit cast of variadic function to array
- Bugzilla 3822: Invalid optimization of alloca called with constant size
- Bugzilla 3927: array.length++; is an error, but ++array.length compiles
- Bugzilla 4241: duplicate union initialization error doesn't give a file location
- Bugzilla 4269: Regression(2.031): invalid type accepted if evaluated while errors are gagged
- Bugzilla 4507: use spellchecker when override function doesn't override anything
- Bugzilla 4820: Regression(1.058, 2.044) in DStress caused by changeset 452
- Bugzilla 4854: Regression(2.047, Mac 10.5 only) writefln Segmentation fault if no globals
- Bugzilla 4993: Temporary values and opIndexAssign
- Bugzilla 5181: Excess cast on in-place operation op= involving conversion
- Bugzilla 5412: import wtf2
- Bugzilla 5554: [qtd] Covariance detection failure
- Bugzilla 5590: Regression(2.036) ICE(e2ir.c): when using .values on enum which is associative array
- Bugzilla 5733: Calling opDispatch As Template Results in Compiler Infinite Loop
- Bugzilla 5879: Not all frontend errors use stderr
- Bugzilla 5889: Struct literal/construction should be rvalue (it binds to ref parameters)
- Bugzilla 6391: Line-less error when passing the '.im' of floating pointer value by reference
- Bugzilla 6438: [CTFE] wrong error "value used before set" when slicing =void array
- Bugzilla 6611: better error message for array post increment/decrement
- Bugzilla 6681: struct constructor call is converted to struct literal that breaks union initialization
- Bugzilla 6685: Allow using "with" with rvalues
- Bugzilla 6699: More cases of __error in error messages
- Bugzilla 6738: Can't call templatized property function from within a struct/class method
- Bugzilla 6785: Wrong error message from pragma(msg) of failed instantiation
- Bugzilla 6982: immutability isn't respected on associative array assignment
- Bugzilla 7038: Type mismatch with const struct
- Bugzilla 7110: opSlice() & opIndex functions works unstable as template arguments
- Bugzilla 7288: ICE(toir.c): with lambda return + auto
- Bugzilla 7353: NRVO not properly working with inferred return type
- Bugzilla 7380: Crash trying to use address of variable in struct constructor at module level
- Bugzilla 7399: Broken import statement in trySemantic() causes silent compiler error
- Bugzilla 7406: tuple foreach doesn't work with mixed tuples
- Bugzilla 7411: Deduce base type from vector types in templates
- Bugzilla 7439: Compound assignment causes segmentation fault
- Bugzilla 7452: Function using enforce() cannot be inferred as @safe because of anonymous function due to lazy argument
- Bugzilla 7462: Error message with _error_ in overridden function
- Bugzilla 7463: Duplicated error message with bad template value parameter
- Bugzilla 7473: [CTFE] Non-ref argument behaves as if it's a ref argument
- Bugzilla 7481: Compiler should 'soldier on' after template errors
- Bugzilla 7493: Initialization of void[][N]
- Bugzilla 7499: ICE(cast.c line 1495) with lambda array
- Bugzilla 7500: [ICE] (template.c line 5287) with immutable lambda function
- Bugzilla 7502: 2.056 regression: Assigning .init takes forever to compile for large structs
- Bugzilla 7504: Cannot assign an object of type 'typeof(null)' to an array
- Bugzilla 7518: std.array.empty doesn't work for shared arrays
- Bugzilla 7525: [2.058 regression] Broken return type inference for delegate returns
- Bugzilla 7527: [CTFE] Segfault when slicing a pointer at compile time
- Bugzilla 7536: ctfeAdrOnStack triggered
- Bugzilla 7544: ICE(interpret.c) Catching an exception with a null catch block
- Bugzilla 7545: ICE(cast.c) Merge integral types through alias this
- Bugzilla 7547: -deps output lists object as a top level module
- Bugzilla 7550: Missing AVX instruction VPMULDQ
- Bugzilla 7552: Cannot get and combine a part of overloaded functions
- Bugzilla 7554: Immutable function pointer arguments too
- Bugzilla 7557: Sea of errors after template failure
- Bugzilla 7562: DMD crashes by using TemplateThisParameter
- Bugzilla 7563: Class members with default template arguments have no type
- Bugzilla 7568: pragma(msg) segfaults with an aggregate including a class.
- Bugzilla 7578: ICE on indexing result of vararg opDispatch
- Bugzilla 7580: Identity assignment of Nullable crashes dmd
- Bugzilla 7582: Untyped nested delegate literals don't compile
- Bugzilla 7583: [CTFE] ICE with tuple and alias this
- Bugzilla 7589: __traits(compiles) does not work with a template that fails to compile
- Bugzilla 7592: Conversion from ireal to ifloat broken when using xmm
- Bugzilla 7595: Data being overwritten.
- Bugzilla 7608: __traits(allMembers) is broken
- Bugzilla 7618: delegate/function pointer call bypass parameter storage class
- Bugzilla 7621: Immutable type equivalence problem
- Bugzilla 7633: Missing CTFE error message
- Bugzilla 7639: Undefined enum AA key crashes compiler
- Bugzilla 7641: std.typecons.Proxy incorrectly allows implicit conversion to class
- Bugzilla 7643: Whole tuple slice isn't resolved as expected
- Bugzilla 7649: Bad lambda inference in default function argument
- Bugzilla 7650: Bad lambda inference in associative array literal
- Bugzilla 7667: ICE(interpret.c): 'ctfeStack.stackPointer() == 0'
- Bugzilla 7669: Broken inout deduction with static array type
- Bugzilla 7670: UFCS problem with @property and structs
- Bugzilla 7671: Broken inout deduction of shared(inout(T[n])) from immutable(int[3])
- Bugzilla 7672: Remove top const doesn't work for inout array type.
- Bugzilla 7681: Regression(2.059head):ICE:opCatAssign(delegate) to undefined identifier
- Bugzilla 7682: shared array type and "cast() is not an lvalue" error
- Bugzilla 7684: IFTI and shared overload doesn't work
- Bugzilla 7694: Internal error: e2ir.c 1251 when calling member function inside struct via alias param
- Bugzilla 7695: Regression(2.058): ICE(mtype.c) on associative array with keys of struct type with const members
- Bugzilla 7698: can't specialize parameterized template value
- Bugzilla 7699: Cannot get frame pointer to in contract when compiling with -inline
- Bugzilla 7702: opDispatch goes into infinite loop
- Bugzilla 7703: [UFCS] explicit template function instantiation as property
- Bugzilla 7705: lambda syntax doesn't allow some valid signatures
- Bugzilla 7713: lambda inference doesn't work on template function argument
- Bugzilla 7722: Refuse normal functions to be used as properties
- Bugzilla 7731: Assertion failure: 't' on line 7911 in file 'mtype.c'
- Bugzilla 7732: [CTFE] wrong code for a struct called AssociativeArray
- Bugzilla 7735: Functions with variadic void[][]... arguments corrupt passed data
- Bugzilla 7742: 'More initializers than fields' error with correct number of fields
- Bugzilla 7743: Parsing problem with nothrow delegate
- Bugzilla 7745: Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken
- Bugzilla 7751: [ICE] (Regression 2.059head) From auto and forward reference
- Bugzilla 7754: static this() in template is stripped during header gen
- Bugzilla 7755: regression(2.059head): ICE in glue.c
- Bugzilla 7757: Inout function with lazy inout parameter doesn't compile
- Bugzilla 7761: lambda expression doesn't parse attributes
- Bugzilla 7768: More readable template error messages
- Bugzilla 7769: relax inout rule doesn't work for template function
- Bugzilla 7722: Refuse normal functions to be used as properties
- Bugzilla 7773: UCFS syntax on built-in attributes too?
- Bugzilla 7781: [CTFE] Segmentation fault on 'mixin({return;}());
- Bugzilla 7782: [ICE] With wrong import syntax
- Bugzilla 7785: [CTFE] ICE when slicing pointer to variable
- Bugzilla 7786: dmd crashes with invalid module name
- Bugzilla 7789: [CTFE] null pointer exception on setting array length
- Bugzilla 7794: Sea of errors when calling regex() after compile error
- Bugzilla 7808: Nullable's alias this does not work with structs containing classes
- Bugzilla 7812: Segfault on invalid code during template match deduction with errors gagged
- Bugzilla 7814: Regression(2.059head) ICE(tocsym.c) using scope(failure) within foreach-range
- Bugzilla 7815: Mixin template forward reference (?) regression
- Bugzilla 7820: regression(DMD 2.059head) Wrong error on forward reference to 'front' with -property switch
- Bugzilla 7823: Can't use a struct initializer to initialize a nested enum used as a default function argument initializer
- Bugzilla 7826: [D2 Beta] Cannot use getHash in toHash without a warning
- Bugzilla 7843: Regression(2.059 beta): Informational warning fails to produce executable
- Bugzilla 7857: File#write formats enum as a boolean.
- Bugzilla 7858: __traits(getOverloads) returns incorrect symbol
- Bugzilla 7859: Crash on invalid alias template parameter type
- Bugzilla 7861: Segfault during __error propagation with self-referencing module
- Bugzilla 7862: Accepts-invalid template forward reference bug related to derivedMembers
- Bugzilla 7868: derivedMembers/static if regression
- Bugzilla 7869: Cannot format pointer of struct has toString member function
- Bugzilla 7871: RangeViolation with findSplitBefore
- Bugzilla 7873: [2.059 beta] IFTI with inout does not properly match template parameter if called from inout function for pointers
- Bugzilla 7886: derivedMembers infinite recursion
- Bugzilla 7888: derivedMembers forward reference error with nested imports
Copyright © 1999-2023 by the D Language Foundation | Page generated by
Ddoc on Wed Mar 1 14:57:13 2023


Credits
The 2021 UFO Puzzle Hunt: Murder Mystery is a continuation of the 2020 UFO Puzzle Hunt pioneered by the UFO15 organising committee.
We extend our utmost gratitude to the many people whose effort made this Hunt possible.
- The puzzlers - Chris, Shi Hong, Brenda, Kai Yi, Shu Sheng and Jing Quan (for contributing a few ideas too :) )
- The web-devs - Chris (front-end), UFO15 web-dev team (front-end and back-end)
- The honorary advisors - Sean, Jing Quan and Ren Jie
- And everyone who played a part in solving the puzzles and providing feedback during the dry run!
We hope that you enjoy yourselves through the puzzle hunt!


Zetamind Consulting approaches every client’s business as if it were our own. We believe a consulting firm should be more than an advisor. We put ourselves in our clients’ shoes, align our incentives with their objectives, and collaborate to unlock the full potential of their business. This builds deep and enjoyable relationships.
The right approach is necessary for the right outcome. Zetamind Consulting approaches work by applying its external knowledge to your organization’s internal way of doing work. We know that in order to maximize the potential of success for your company we need to shape our expert advice in a way that applies to your way of doing business. This allows us to create rich relationships with our clients.
Developing Enterprise healthcare applications to improve the way healthcare systems communicate with one another.
Utilizing the latest technology to run enterprise based logistics operations smoothly and minimize operational hurdles.
Developing enterprise software solution to enhance customer experience and drive operational efficiency.
Quick payment settlements and drive speed and security to financial transactions with a tech solution.
Digitize the automotive industry with connected enterprise apps to manage vehicles remotely and enhance the manufacturing process.
Innovate the shopping experience for your customers and business with an engaging digital solution.
Building an enterprise-grade technology product for startups with the next level of innovation.
Automate enterprise production processes and reduce operational cost with an enterprise software solution.
Increasing visibility into complex operations to control costs and optimize the performance of employees, facilities, and assets.
Helping insurance companies of any size track and maintain relationships with their customers, improve marketing and sales processes, and monitor the sales performance of the agency.
We provide off-the-shelf, custom farm management software and scale ERP solutions for such as crop planning, inventory, accounting, equipment maintenance, and reporting.
Helping them manage all aspects of working with both residential and commercial properties, thereby saves time and minimizes the administration costs.


--- layout: post title: "Introduction to GIT WTF" date: 2014-03-03 20:17 comments: true categories: ---
Due to the collaborative nature of git; over time I begin to accumulate quite a few branches and working closely in a team compounds this problem. Remembering what branch needs to be merged, and what branches need a pull can tax the little grey cells.
As a solution to this problem, I present git wtf
Instead of trying to
explain what it is, lets just run git wtf
and examine it’s output.
Here is a run of git wtf
on a project at work
Alot of information there, lets start with the first two lines
storage-node-metadata (1/5) [origin]
remotes/origin/storage-node-metadata
The first line has the branch name storage-node-metadata
Followed in parens by how many new commits this branch introduces on top of
master
(commits ahead). Next is a slash /
followed by
the number of commits master has that are missing from this branch (commits
behind). Following that in brackets is the name of the remote repo this branch
is tracking, in this case we are tracking [origin]
.
In short this one line provides the following:
branch-name (commits ahead/commits behind) [name-of-tracking-remote]
The second line in our example is indented and shows a list of remotes where this branch exists. I published this branch to my github fork of the project so it only shows 1 entry for origin. Knowing what other remotes have this branch can be very helpful. If for instance you are collaborating on a single branch.
So in review, the storage-node-metadata
branch has 1 commit not
merged into master, and is 5 commits behind master
Now lets look at master
master [origin]
remotes/origin/master
remotes/cory/master is 17 commits behind
remotes/upstream/master is 2 commits ahead
Since it’s master it doesn't have commits ahead or behind (0/0)
and should always follow [origin]
. The following indented lines
show all the remotes master can pull from. You can see
remotes/cory/master
is 17 commits behind our master, this means
cory should pull from us or from upstream. You can also see
that upstream is 2 commits ahead, this means we should pull from upstream. git
wtf
will also show if our master is ahead and
needs to be pushed.
On the next line we see the sqlalchemy08
branch.
sqlalchemy08 (2/2) [cory]
remotes/cory/sqlalchemy08
In this branch cory has a patch to introduce sqlalchemy 8.0 into our project.
Since I was reviewing the patch I tracked cory's branch. You will
notice this branch tracks [cory]
instead of [origin]
.
Also notice git wtf
shows us this branch has 2 commits ahead of
master, and 2 behind. I might need to rebase before I merge this branch into master.
Next we see the volume-manager
branch.
volume-manager (5/0) [origin]
remotes/origin/volume-manager
remotes/cory/volume-manager is 1 commits behind
Me and cory are collaborating on this branch. [origin]
tells us
the local branch is tracking origin but the following two indented lines shows
cory has this branch also. It also tells us cory's branch is 1 commit behind.
Which means he needs to pull from us.
Moving on we see branch-not-published
branch-not-published (2/0)
(2/0)
tells us the branch has 2
commits ahead, and no commits behind. Also there is no
[name-of-tracking-remote]
so we know this branch is not tracking a
remote. Notice there are no indented lines following this line. This means
there are no remote branches so we know this branch is local only.
I originaly created git wtf
to help me clean up already merged
branches. Often I do this clean up weeks or months after a branch has
been merged into master.
update-documentation (0/10) [origin]
remotes/origin/update-documentation
Here you can see this branch has already been merged, as it has no new commits to provide and is behind master by 10 commits. which probably means it hasn't been updated in a while
git wtf
does not preform a git fetch
to determine the
status of remote branches, you have to keep your local git repo updated by
preforming git fetch
yourself. I made a helper script called
git fetch-all
which does exactly what it says, it runs git fetch
for all
the remotes git knows about. You can get a copy
here
git wtf
brings order to chaos and riches to poor git programmers.
Download a copy of the git wtf
script from
here
cd `git --exec-path`
git-wtf
On Ubuntu you have 2 options.
git-wtf
script somewhere in your local
$PATH, where git
will find it. I usually create a
~/bin
directory and add ~/bin
to my $PATH then
place git-wtf
and all my other git helper scripts there.


A little cycle truck putters down a rural road in post-war Japan, carrying four-year-old Mei, her older sister Satsuki, and their father Professor Kusakabe to a new home in the country to be closer to the rural hospital where the girls' mother is recovering from an unspecified (but potentially deadly) disease. Along with the usual tribulations of moving—a spooky old house, new neighbors, fitting in at a new school—Mei encounters an odd little creature in the backyard. While pursuing it, she comes upon the den of a much larger forest spirit that she eventually calls "Totoro". At first, Mei is the only one who sees Totoro, but Satsuki soon meets him as well, and the girls have several fantastic encounters with Totoro, interwoven between subplots involving their family and (human) neighbors.
But the girls' seemingly idyllic rural existence is soon shattered when a health crisis forces their mother to cancel a much-anticipated visit home. Heartbroken, the two girls take out their fear and anger on each other, and Mei eventually sets out for the hospital alone, determined to deliver an ear of corn she believes will make her mother well. The remainder of the film revolves around Satsuki's increasingly desperate search for Mei; when all other options are exhausted, Satsuki appeals directly to Totoro for help—and he is more than delighted to be of assistance.
Totoro is one of Miyazaki's best known films. Totoro himself became the mascot for Studio Ghibli. Miyazaki does not gloss over some of the more frightening aspects of childhood, though: the girls are terrified of their mother dying, a common goat seems monstrous from little Mei's perspective, and the whole village's fright and anxiety when Mei goes missing is almost palpable. Even Totoro—with his huge grin, inscrutable expression, and manic eyes—can be a little scary; Satsuki refers to meeting him as both the funniest and the scariest day of her life.


Contact
|
Download
|
Twitter
Overview
Download
Walkthrough
Guide
Examples
Contributing
User Guide
User Guide
Table of Contents
Quick Start
Defining Applications
Basic Concepts
Advanced Concepts
Common Usage
Management
Introduction
Startup Configuration
Command Line Interface
Management Web Console
Observation APIs
Distributed Management
Resilience
Key APIs
Sensors and Effectors
Policies
Introduction
Writing Policies
Off-the-Shelf Policies
Implementing Policies
Custom Entities
Entity Lifecycle
What to Extend
Configuration
Implementing Sensors
Implementing Effectors
Testing
Extras
Web
Database
NoSQL
Messaging
Provisioning
Start
User Guide
Quick Start
Defining Applications
Basic Concepts
Advanced Concepts
Common Usage
Management
Introduction
Startup Configuration
Command Line Interface
Management Web Console
Observation APIs
Distributed Management
Resilience
Key APIs
Sensors and Effectors
Policies
Introduction
Writing Policies
Off-the-Shelf Policies
Implementing Policies
Custom Entities
Entity Lifecycle
What to Extend
Configuration
Implementing Sensors
Implementing Effectors
Testing
Extras
Web
Database
NoSQL
Messaging
Provisioning
Elsewhere
Examples
Elastic Web Cluster
Global Web Fabric
Whirr Hadoop Cluster
Portable Cloud Foundry
Publish-Subscribe Messaging
API Reference
Contributing
The Code
Build and Test
Tips and Tricks
Wishlist
Links
How to Contribute
License


Leveraging Internet with Radio
Within ICT4D practice, there seems to be little debate, at least when you look at implementation funding, that bringing Internet to rural areas in places like Africa that had been previously “cut off” is good idea and potentially transformative. Until recently more recently, “bringing the Internet” has meant usually plunking down a VSAT, setting up a small computer lab and hoping someday that one day it will become sustainable.
Despite being by and large, unsustainable, such projects are still difficult and are important from a symbolic standpoint and do serve as a temporary bridge in some ways for the digital divide. The problem that is even harder to address is accessibility. How many people actually get to access the Internet on the computers and when then they do are they using it in a way that’s socially beneficial?
Eventually low cost smart phones that are able to access the Internet in an acceptable way (think <$100 Chinese iPhone), will represent a paradigm shift in the way Africans connect to the Internet. Until then, a community radio is probably the best way to make the information on the Internet accessible to rural communities.
The following is a story about a project in I worked on during my time at Geekcorps Mali which helps illustrate this point.
A Weekly Connection to the Outside World
Aboubacrine Touré admits to having become somewhat of a local celebrity in Bourem Inaly, a remote community about 30 kilometers west of Tombouctou on the Niger river in northern Mali. While he is the director of the local community radio station, Radio Beeray (Respect), he is best known throughout the region as the host of Journal of Journals, a weekly radio news program that airs every Sunday night.
Using an IESC Geekcorps Desert PC equipped with an R-BGAN Satellite Modem, Aboubacrine connects to the Internet in search of local and regional news that would be of interest to his listening audience. Over the span of the week, he carefully summarizes the news which he presents in the local language Songhai during his hour-long broadcast.
Radio Beeray’s ability to connect to the Internet is a direct result of USAID Mali’s Communication for Development objective whose aim is “to make it easier for Malians to get access to information that will enable them to improve the quality of their lives.” In partnership with USAID Mali, IESC Geekcorps set out to develop an affordable solution for providing Internet access to its partner radio stations at sites across the remote desert region of northern Mali. Based on VIA components, Geekcorps designed the Desert PC to withstand the extreme heat and dust of a harsh desert environment. Additionally, its power draw is less then a 60W light bulb, which makes the PC ideal for an environment where solar is the primary source of energy. An R-GBAN system along with bandwidth limiting software can be paired with the Desert PC to provide an affordable medium for a community to connect to the outside world.
Since Aboubacrine started the program in early 2006, its reception from the local community has been very positive. He knows of many people who even bought radios for the first time so their families could tune into his program and be connected to the outside world through the news.
When a technical difficulty caused the radio station’s Internet connection to be down temporarily, he was amazed by the number of people who wrote in to complain.
Initially, Journal of Journals was met with a lot of skepticism. Since most people in his remote village had never heard of the Internet, he was often accused of, “making the news up!” Aboubacrine explains. This was especially the case earlier this year when Radio Beeray broke the news that Tuareg rebels had attacked the northern outpost of Kidal. Most people simply did not believe that such an attack was possible and were particularly doubtful since no one from neighboring Timbuktu could corroborate the report. The next day when the Malian national press picked up the story, Radio Beeray skeptics became dedicated listeners.
While he primarily uses the Internet to email and get current news (especially stories relating to tensions in the north and the Ivory Coast civil war), Aboubacrine often has requests to look up things like telephone country codes or weather forecasts. Additionally, the encyclopedia that came installed with the computer has been very popular with local students. Mr. Touré, who also works as a teacher at the local school, admits that access to the Internet has even had a positive effect on his lesson planning. While it will likely be years before the average Malian has access to the web, Radio Beeray shows the Internet remains a powerful tool for helping to bridge the information gap.
There are some key take aways from this project that are important to share. From a technical standpoint, it was a tremendous success. Using a lot of clever engineering, we were able to limit the radio’s bandwidth consumption to about 200K/day or $6 (1MB) a week, which the Radio Director was able to use to connect his community to the outside world – certainly a lot of “bang-for-the-byte”. Despite getting the total Internet cost down to about $30-40 a month (vs. $300+ for VSAT), an amount the Radio could probably sustain, Radio Beeray currently has no Internet. The reason, which is almost always the case, once funding ends payments stop to the satellite provider. We worked so hard to engineer a solution that was affordable that we overlooked the fact that once Geekcorps was gone they would have no way of paying. This is too often the case and in many cases it is unavoidable.
The good news is that increasingly you are able to pay for data via a prepaid scratch card, the same you use to fill up your cell. 2G/3G in Africa is coming and when it gets to Tomboctou, Radio Beeray will be able to stay online.


Adopt a Kitten
Kittens Available for Adoption:
KittenForm
Name:
Likes :
breed :
Good with kids
Good with other cats
Good with Dogs


Index
A B C D E F G I L M N P R S T U W
All Classes All Packages
All Classes All Packages
All Classes All Packages
C
- cancel(Scheduler) - Method in class System.Control.TimeTrigger
-
This method cancel the email sending of report.
- change(String, String, String, Scheduler, String) - Method in class System.Control.TimeTrigger
-
This method changes time to send email or changes the receiver.
- Chart - Class in System.Control
-
This class describes the function of getting the dataset for the charts.
- Chart() - Constructor for class System.Control.Chart
- Chart_Generater - Class in System.Data
-
This class provide the generate the chart that the manager can check the pie chart of each item
- Chart_Generater() - Constructor for class System.Data.Chart_Generater
- Chart_Getter - Class in System.Data
-
This class provide the methods to get different chart.
- Chart_Getter() - Constructor for class System.Data.Chart_Getter
- ChoicePanel - Class in System.GUI
-
This class enables the interface that the manager choose the choice.
- ChoicePanel(TimeTrigger, Scheduler) - Constructor for class System.GUI.ChoicePanel
-
Create the choice panel.
- ChooseBasic - Class in System.GUI
-
This class is the interface for to tell user choose the basic part.
- ChooseBasic() - Constructor for class System.GUI.ChooseBasic
-
Create the application.
- ChoosePayWay - Class in System.GUI
-
Interface of choosing the pay way.
- ChoosePayWay(Entity_Ticket) - Constructor for class System.GUI.ChoosePayWay
-
Create the frame.
- clearInfoForFile(String) - Static method in class System.Data.BM
-
Clear the content of relevant file.
- clearprofile(Entity_Loyalty) - Static method in class System.Control.Loyalty
-
Clear Loyalty entity.
- compareDate(Date, String) - Static method in class System.Data.BM
-
Compare whether the date is in the last week, week begin from Monday.
- Constant - Class in System.Data
-
This class includes some changeless constants and releated methods.
- Constant() - Constructor for class System.Data.Constant
- Constant_Test - Class in Test
-
Test the methods related to constant.
- Constant_Test() - Constructor for class Test.Constant_Test
- countLines(String) - Static method in class System.Data.BM
-
Get the line number of csv file.
- creatRepo() - Static method in class System.Data.Report_Reader
-
Create report.
- csvforstatistic(Date) - Static method in class System.Data.Report_Storer
-
Put the order between sDate and eDate in a new file called report.csv .
All Classes All Packages


Gunzerking
Action Skill. Draw a second gun and go nuts! While Gunzerking you Instantly Regain 50% of Your Total Health, gain Damage Reduction against enemy attacks, and constantly Regenerate Health and Ammo. Does not regenerate rockets. Cooldown: 42 seconds
1/1


It appears that government-corporation hybrids(g-corps)are the most efficient method to colonize moons, planets, and asteroids for mining resources. Employment functions rather similarly to indentured servitude. The most recent analysis suggests these g-corps also monopolize the production of new bodies. These new bodies, referred to as shifts, typically take a lifetime to pay off. Thus, many fall into debt with these g-corps that span more than the lifetime of their shift. Although one always has the right to opt-out and upload to Strata, many choose not to and rather live indebted. Further analysis is needed to distinguish the reason for this choice.
Sold to the highest bidder one to own them all.
No need for the illusion of capital.
They are the currency.
The value of their life is what rises and falls.
Their bodies no longer their own just another asset to lose or gain.
Even though their minds are eternal they stay bound to the mundane.
Bound to instincts natural selection keeps them in their cells.
Given the gift of an unnatural heaven they choose time and time again a natural hell.


In pictures: Venice devastated by floods blamed on climate change 15 Nov 2019, 11:00 by AFP/REUTERS A general view of the St. Mark’s Basilica, as the high tide reaches its peak, in Venice. PHOTO: Reuters PHOTO: Reuters A police officer wades at the flooded St. Mark’s Square, as the high tide reaches its peak. PHOTO: Reuters A man pumps water from a shop at the flooded St. Mark’s Square. PHOTO: Reuters Workers dismantle a makeshift walkway over the flooded St. Mark’s Square. PHOTO: Reuters A man walks across the flooded St. Mark’s Square, with St. Mark’s Basilica (Rear L) and the Bell Tower. PHOTO: AFP People walk across flooded streets. PHOTO: AFP Officers from the Italian National Police (Polizia di Stato) stand in the flooded St. Mark’s Square. PHOTO: AFP A man stands outside a souvenirs shop as a woman walks across a flooded alleyway. PHOTO: AFP Venice mayor Luigi Brugnaro walks through a flooded arcade by St. Mark’s Square. PHOTO: AFP Recommended Stories


{% extends 'base_fluid.html' %} {% block title %}Add Hypervisor{% endblock %} {% block content %}
Basic description of Hypervisor
Connectivity settings
Writeable directory to store installation media
Resource allocation limits


Well... it’s still Chansey. It didn’t receive any buffs, and a lot more of the metagame can really hurt it by exploiting its weaker physical bulk. Chansey has also received some competition from other bulky normal types or recovery walls in general. So where does this all put Chansey? It’s still one of the premier walls of the metagame, doing the usual BoltBeam or Reflect sets. Toxic may find a moveslot on dream eater teams looking to use Chansey to wall psychic types, so it may find slightly more diversity in its sets. However, Chansey is nowhere near as omnipresent as it was in traditional RBY, and should not even be considered close to mandatory on teams.
- Ice Beam
- Soft-Boiled
- Thunder Wave
- Thunderbolt
A timeless and straightforward set, Chansey walls special attackers with astronomical Special bulk while spreading paralysis when possible. BoltBeam attacks hit the format for neutral damage.
- Seismic Toss
- Soft-Boiled
- Thunder Wave
- Reflect
This is quite possibly as passive as you can get in gen 1, but the set still works the same. Set up Reflect to wall even more threats, and then harass the opposition with paralysis or guaranteed Seismic Toss damage.
Sing can catch some paralysis absorbers by surprise, putting them to sleep when they least expect it. Counter can punish normal type wallbreakers, but the increased effiacy of other physical attack types makes this less useful.
Fighting types: Strong fighting type attackers like Primeape, Machamp, and Poliwrath can rip through all of Chansey's bulk in one clean hit. Karate Chop users can even ignore Reflect boosts via critical hits.
Submission coverage: The buffed Submission can allow many Pokemon to at least 2hko Chansey at the cost of a lot of recoil.
Offensive normal types: Threats like Snorlax and Arcanine can muscle through Chansey's weaker physical bulk.
Flying types: Whirlwind mixed attackers can put a lot of pressure on Chansey.
Swords Dance sweepers: The likes of Scyther and Kabutops can demolish Chansey after a Swords Dance.
Sleep inducers: Putting Chansey to sleep can make it prey to a lot of wallbreakers.
Explosion and Self-Destruct: These can put Chansey in range of other attackers, or just outright remove it.
Author: Kurai
Publish Date: 24th July 2020


Homelessness
Massive increase in number of homeless families in Louth and North East
September homeless figures
by Donard McCabeThe number of homeless families in the North East including Louth increased by over 50% in September according to the September Homeless Report released last week by the Department of Housing, Planning & Local Government.
29 families accessed emergency accommodation in the North East, which includes Monaghan and Cavan, in September. This is up from 19 in August, representing an increase of 52.6% in one month.
The number of adults accessing Louth County Council managed emergency accommodation in September, decreased slightly however.
155 adults accessed managed emergency accommodation in September, down from 170 in August and 180 in July.
One person was recorded as homeless in Monaghan, the same as in August and 13 in Cavan, up from eight in August.


./komodod -ac_name=ZAWY24 -ac_adaptivepow=1 -ac_supply=1000000 -ac_reward=10000000000 -ac_cc=2 -addnode=<IP_ADDRESS> &
A channel to discuss mining. For useful links and more info click the pinned messages to the right.
100 messages
Before 05-Dec-19 12:00 AM
ComputerGenie 👴👴👴08-Dec-18 11:39 PM
Anyone know why I'd be getting -bash: ./komodo-cli: No such file or directory in my /komodo/src directory after updating to master branch
Because there's no file named komodo-cli in your /komodo/src directory
2
SHossain08-Dec-18 11:52 PM
@blackjok3r Congratulations!  Post your KMD address.
look in the pinned messages of this channel for a pool
djwillz2409-Dec-18 01:38 AM
Need to find tutorial
Alright09-Dec-18 01:42 AM
did you download it?
well I need to go, once you download that, just create a file with .bat extension in the same folder as the exe. Open the .bat in text editor and put this in it
zm --server servername.com --port 1234 --user <your KMD address>
you can find server and port at pool website
there's a list of pools in the pinned messages of this channel
@webworker01 while both sprout and sapling addresses are supported, it would be best to phase out sprout addresses sooner than later, for obvious reasons. Maybe just do sprout payments once per day ? some way to incentivize people to switch to a sapling address.
1
WoundedxWarr1or09-Dec-18 09:03 AM
Hello, I asked this in another section that discussed the update, but I haven't seen a reply as of yet. I actively mine Komodo, at the time I started the first valid wallet I located was on my cell phone in the Coinomi wallet. I was wondering if there is any action I need to take prior to the update being executed. I plan to update to the new desktop wallet after the update, but as of yet the links are still not active to download. Please advise .. thank you. Very Respectfully, WX2
NutellaLicka09-Dec-18 09:05 AM
@ronyi this happened to me, I had to try and build it about 3-4 times before it successfully built. I'm not sure why though
jl777c09-Dec-18 09:21 AM
as long as coinimi updates, there wont be an issue. just make sure you update prior to the next time you are sending coins
ronyi09-Dec-18 10:28 AM
@NutellaLicka yes, but i think(permission issue?) sudo ./zcutil/build.sh -j$(nproc) worked smoothly for me....
blackjok3r10-Dec-18 12:55 AM
@webworker01
I am back today, I think I can make the payment processor work for pirate, sapling should work by just using a sapling address, can have a go at this today. Unless you have it sorted?
NutellaLicka10-Dec-18 12:59 AM
I think the problem is when there is a mix of sapling and sprout addresses that need to be paid out
Also, I am happy to do some testing with you. I am trying to get the RKT chain up and running at the moment
blackjok3r10-Dec-18 02:54 AM
Just had a look at the pool code, and yes that will be the problem.
My pool should actually work already with the Z-tx that web made for Pirate.... however if that happens, then there will be an issue with the sendmany.
NutellaLicka10-Dec-18 03:04 AM
One way around it is by forcing sapling addresses from the start. Easy for a new pool, not so easy for web and their pool with a lot of people on it currently.
A small change to the var getProperAddress in the payment processor should ensure that the pool won't accept sapling addresses
(In web's knomp anyhow)
blackjok3r10-Dec-18 03:06 AM
Yeah ... it seems like you need to have 2 seperate configs... one for sapling address and one for sprout
and people will need to move over after it activates
NutellaLicka10-Dec-18 03:09 AM
It is a difficult problem to manage. I think for your pool, you'd be better off forcing sapling addresses from the get go. That way you don't have to worry about sprout
blackjok3r10-Dec-18 03:09 AM
I dont have a pirate pool... Just wasnt sure if they needed mine for it or not..
I thaught that my pool didnt work with z-tx payments, but I juts read the code and it looks like it will work just fine.
NutellaLicka10-Dec-18 03:11 AM
Yeah I believe snomp has z transaction and shielding in the payment processor as well(edited)
blackjok3r10-Dec-18 03:12 AM
I am testing my pool with an ac_private=1 chain now.. will test just with spaling address's ... and ignore the sprout stuff. It seems like having seperate ports for sprout and sapling will be the only way to do this for pirate.. every other chain works already.
JaseOfAllTrades10-Dec-18 08:12 AM
I have a noob question, what is a sapling?
Necessary to mind KMDs? Also, any other coin that is on the KMD ecosystem to mine that could also still be profitable for 1070s GPU rigs?
JaseOfAllTrades10-Dec-18 08:54 AM
*mine
JaseOfAllTrades10-Dec-18 09:05 AM
Hmm okay. How does that directly/indirectly affect miners, if it does?
JaseOfAllTrades10-Dec-18 09:15 AM
Ah alrights. It's clearer now. Thanks for pointing me in the right direction.
As to the other question on, are there any other coin to mine in the komodo infrastructure already?
NutellaLicka10-Dec-18 09:15 AM
Surely is
There is a bunch. VRSC (good for CPU/GPU), ARRR (mostly mined by ASIC's, if you have cheap electricity and a lot of GPU's this could still be profitable), KMD (self explanatory), HUSH. They're just a couple I can think of
JaseOfAllTrades10-Dec-18 09:18 AM
VRSC. Ah yes, not the first time hearing about this. Will be looking at this as i only have CPU/GPU hardware to mine


Michael Huang
Programmer
-<PHONE_NUMBER>
- [email protected]
- http://michaelyh.com
About
I’m a well rounded programmer who loves everything open source. I learned a lot from looking at and making programs inspired by open source technology.
Work Experience
Lead Technology Developer, Aced
August 2015 - Present
I am the lead technology developer at Aced, a group at our school. I’m developing an iOS application and a website using AWS Cognito authentication with Facebook sign-in for multi-device support and other AWS API for database, storage, notification and analytics. I have worked both the front-end and the back-end. Users signup and access it on either iOS app or the website.
Highlights
- Use of AWS API
- Gained experience in coding for iOS
- Lots of social networking integration
Education
- Henry M. Gunn High School
2014 - 2018 (expected)
Courses
- Objective-Oriented Programming
- AP CS
- Mathematics
- Self-Study
- Present
Courses
- A lot
Skills
Frontend
- HTML
- CSS
- Javascript
- JQuery
Backend
- Node
- Ruby
- Python
- Java
iOS Development
- Swift
- Objc-C
Android Development
- Java
Scripts
- Javascript
- Python
- Ruby
Publications
s
1 October 2014
Innovative middle-out compression algorithm that changes the way we store data.
Website: http://en.wikipedia.org/wiki/Silicon_Valley_(TV_series)
Interests
Programming
- Scripts
- Automating
Cycling
- Nature
- Relaxing
- Wind
Gaming
- Chill
- Friends
- Socializing
- Grinding


Easily learn the relative order of letters in the alphabet by showing whether a letter comes before or after another in the alphabet. Earn a point for each correct answer, but wrong answers reset the score.


Lectures on difficult topics tend to be overwhelming - you sit there and derp away in the lecture theatre, and it’s not until later when what you’ve been presented with is used in a practical application that you understand the gravity of it.
A recent assignment opened up a whole new thought process when it came to writing programs.
Computers are fast right? Surely it doesn’t matter how long what you write will take to work when its of this scale, as long as it works? And computers have loads of memory, it doesn’t matter surely if it takes up a little bit more room than needed?
Wrong actually. It would have been so easy to write a program for the topic at hand (string matching with wildcard characters) that ran in a way that still seemed instantaneous for moderately small inputs. Instead, we discovered how much of a ballache, yet how useful faster methods are, when you’re using large, and realistically sized inputs.
Using a method called FFT (Fast Fourier Transform), the program I eventually completed ran considerably quicker than how it would have in the way I would have first thought of (for maths types, in O(nlogn) time as opposed to O(n^2)). Instantaneous for small inputs, but when I fed War & Peace in, and told it to match a small bit of text, the result came back within a blink of eye - as opposed to seconds. Still not a great difference. But take a look at this:
FFT runs along the purple line. The easier approach runs along the blue line. You can see how the time taken gets quickly out of hand with the blue line as the number of elements grows. (picture (c) Recursive Design - http://recursive-design.com)
Worth doing then, I reckon. Even though the algorithmic processes behind the FFT are in no way obvious, or even understandable without a decent amount of study, it’s obvious by looking at the graph just how much it helps. That’s the beauty of well designed software programs today. They’re very approachable and simple to use, giving the illusion that there’s not much to it, but in reality there’s things like this chugging along in the background, doing the menial tasks almost instantly, so you’re not there tapping your fingers on the desk waiting.
It just shows how much of an upward curve there is to progress. Every step to make things faster requires a new way of thinking that pushes the boundaries of what’s possible, and it’s only when something is proven to be running within minimum time that it’s time to move on. Or perhaps you just look into other approaches. Without this, we’d still be stuck with Windows 95, or even, with no computers at all. This stuff is incredibly important to learn, and is certainly worth sticking at.


ngModel
the model to be bound to the control
ngDisabled
indicates whether this control is disabled or not
ngRequired
indicates whether the value of this control is required or not (at least one checked checkbox in the list)
ngValidating
indicated whether the value of this control is validated or not
ngLabel
the label for this control, viewed as header
ngTip
the sublabel for this control, viewed as subheader
ngItems
these objects represent the checkboxlist options
ngValueField
the name of the option property that should be used as value
ngNameField
the name of the option property that should be used as name
ngDisabledField
the name of the option property that should be used as disabled
ngDescriptionField
the name of the option property that should be used as description
<ctrl-check-list
ng-model="sample.value"
ng-disabled="false"
ng-required="false"
ng-label="sample label text"
ng-tip="sample tip text"
ng-items="options"
ng-name-field="name"
ng-value-field="value"
ng-disabled-field="disabled"
ng-description-field="description"></ctrl-check-list>


Table Name: tabGrant Application
| Sr | Fieldname | Type | Label | Options |
|---|---|---|---|---|
| 1 | applicant_type |
Select | Applicant Type |
Individual Organization |
| 2 | applicant_name |
Data | Name | |
| 3 | contact_person |
Data | Contact Person | |
| 4 | email |
Data | ||
| 5 | column_break_5 |
Column Break | ||
| 6 | status |
Select | Status |
Open Received In Progress Approved Rejected Expired Withdrawn |
| 7 | website_url |
Data | Website URL | |
| 8 | company |
Link | Company | Company |
| 9 | address_contacts |
Section Break | Address and Contact |
fa fa-map-marker |
| 10 | address_html |
HTML | Address HTML | |
| 11 | column_break_9 |
Column Break | ||
| 12 | contact_html |
HTML | Contact HTML | |
| 13 | grant_application_details |
Section Break | Grant Application Details | |
| 14 | grant_description |
Long Text | Grant Description | |
| 15 | section_break_15 |
Section Break | ||
| 16 | amount |
Currency | Requested Amount | |
| 17 | has_any_past_grant_record |
Check | Has any past Grant Record | |
| 18 | column_break_17 |
Column Break | ||
| 19 | route |
Data | Route | |
| 20 | published |
Check | Show on Website | |
| 21 | assessment_result |
Section Break | Assessment Result | |
| 22 | assessment_mark |
Float | Assessment Mark (Out of 10) | |
| 23 | note |
Small Text | Note | |
| 24 | column_break_24 |
Column Break | ||
| 25 | assessment_manager |
Link | Assessment Manager | User |
| 26 | email_notification_sent |
Check | Email Notification Sent |
Inherits from frappe.website.website_generator.WebsiteGenerator
No docs
Load address and contacts in __onload
No docs
erpnext.non_profit.doctype.grant_application.grant_application.get_list_context (context)
No docs
Public API
/api/method/erpnext.non_profit.doctype.grant_application.grant_application.send_grant_review_emails
erpnext.non_profit.doctype.grant_application.grant_application.send_grant_review_emails (grant_application)
No docs


# Original: https://learnxinyminutes.com/docs/elixir/ # Single line comments start with a number symbol. # There's no multi-line comment, # but you can stack multiple comments. # To use the elixir shell use the `iex` command. # Compile your modules with the `elixirc` command. # Both should be in your path if you installed elixir correctly. ## --------------------------- ## -- Basic types ## --------------------------- # There are numbers 3 # integer 0x1F # integer 3.0 # float # Atoms, that are literals, a constant with name. They start with `:`. :hello # atom # Tuples that are stored contiguously in memory. {1,2,3} # tuple # We can access a tuple element with the `elem` function: elem({1, 2, 3}, 0) #=> 1 # Lists that are implemented as linked lists. [1,2,3] # list # We can access the head and tail of a list as follows: [head | tail] = [1,2,3] head #=> 1 tail #=> [2,3] # In elixir, just like in Erlang, the `=` denotes pattern matching and # not an assignment. # # This means that the left-hand side (pattern) is matched against a # right-hand side. # # This is how the above example of accessing the head and tail of a list works. # A pattern match will error when the sides don't match, in this example # the tuples have different sizes. # {a, b, c} = {1, 2} #=> ** (MatchError) no match of right hand side value: {1,2} # There are also binaries <<1,2,3>> # binary # Strings and char lists "hello" # string 'hello' # char list # Multi-line strings """ I'm a multi-line string. """ #=> "I'm a multi-line\nstring.\n" # Strings are all encoded in UTF-8: "héllò" #=> "héllò" # Strings are really just binaries, and char lists are just lists. <<?a, ?b, ?c>> #=> "abc" [?a, ?b, ?c] #=> 'abc' # `?a` in elixir returns the ASCII integer for the letter `a` ?a #=> 97 # To concatenate lists use `++`, for binaries use `<>` [1,2,3] ++ [4,5] #=> [1,2,3,4,5] 'hello ' ++ 'world' #=> 'hello world' <<1,2,3>> <> <<4,5>> #=> <<1,2,3,4,5>> "hello " <> "world" #=> "hello world" # Ranges are represented as `start..end` (both inclusive) 1..10 #=> 1..10 lower..upper = 1..10 # Can use pattern matching on ranges as well [lower, upper] #=> [1, 10] ## --------------------------- ## -- Operators ## --------------------------- # Some math 1 + 1 #=> 2 10 - 5 #=> 5 5 * 2 #=> 10 10 / 2 #=> 5.0 # In elixir the operator `/` always returns a float. # To do integer division use `div` div(10, 2) #=> 5 # To get the division remainder use `rem` rem(10, 3) #=> 1 # There are also boolean operators: `or`, `and` and `not`. # These operators expect a boolean as their first argument. true and true #=> true false or true #=> true # 1 and true #=> ** (ArgumentError) argument error # Elixir also provides `||`, `&&` and `!` which accept arguments of any type. # All values except `false` and `nil` will evaluate to true. 1 || true #=> 1 false && 1 #=> false nil && 20 #=> nil !true #=> false # For comparisons we have: `==`, `!=`, `===`, `!==`, `<=`, `>=`, `<` and `>` 1 == 1 #=> true 1 != 1 #=> false 1 < 2 #=> true # `===` and `!==` are more strict when comparing integers and floats: 1 == 1.0 #=> true 1 === 1.0 #=> false # We can also compare two different data types: 1 < :hello #=> true # The overall sorting order is defined below: # number < atom < reference < functions < port < pid < tuple < list < bit string # To quote Joe Armstrong on this: "The actual order is not important, # but that a total ordering is well defined is important." ## --------------------------- ## -- Control Flow ## --------------------------- # `if` expression if false do "This will never be seen" else "This will" end # There's also `unless` unless true do "This will never be seen" else "This will" end # Remember pattern matching? Many control-flow structures in elixir rely on it. # `case` allows us to compare a value against many patterns: case {:one, :two} do {:four, :five} -> "This won't match" {:one, x} -> "This will match and bind `x` to `:two`" _ -> "This will match any value" end # It's common to bind the value to `_` if we don't need it. # For example, if only the head of a list matters to us: [head | _] = [1,2,3] head #=> 1 # For better readability we can do the following: [head | _tail] = [:a, :b, :c] head #=> :a # `cond` lets us check for many conditions at the same time. # Use `cond` instead of nesting many `if` expressions. cond do 1 + 1 == 3 -> "I will never be seen" 2 * 5 == 12 -> "Me neither" 1 + 2 == 3 -> "But I will" end # It is common to set the last condition equal to `true`, which will always match. cond do 1 + 1 == 3 -> "I will never be seen" 2 * 5 == 12 -> "Me neither" true -> "But I will (this is essentially an else)" end # `try/catch` is used to catch values that are thrown, it also supports an # `after` clause that is invoked whether or not a value is caught. try do throw(:hello) catch message -> "Got #{message}." after IO.puts("I'm the after clause.") end #=> I'm the after clause # "Got :hello" ## --------------------------- ## -- Modules and Functions ## --------------------------- # Anonymous functions (notice the dot) square = fn(x) -> x * x end square.(5) #=> 25 # They also accept many clauses and guards. # Guards let you fine tune pattern matching, # they are indicated by the `when` keyword: f = fn x, y when x > 0 -> x + y x, y -> x * y end f.(1, 3) #=> 4 f.(-1, 3) #=> -3 # Elixir also provides many built-in functions. # These are available in the current scope. is_number(10) #=> true is_list("hello") #=> false elem({1,2,3}, 0) #=> 1 # You can group several functions into a module. Inside a module use `def` # to define your functions. defmodule Math do def sum(a, b) do a + b end def square(x) do x * x end end Math.sum(1, 2) #=> 3 Math.square(3) #=> 9 # To compile our simple Math module save it as `math.ex` and use `elixirc` # in your terminal: elixirc math.ex # Inside a module we can define functions with `def` and private functions with `defp`. # A function defined with `def` is available to be invoked from other modules, # a private function can only be invoked locally. defmodule PrivateMath do def sum(a, b) do do_sum(a, b) end defp do_sum(a, b) do a + b end end PrivateMath.sum(1, 2) #=> 3 # PrivateMath.do_sum(1, 2) #=> ** (UndefinedFunctionError) # Function declarations also support guards and multiple clauses: defmodule Geometry do def area({:rectangle, w, h}) do w * h end def area({:circle, r}) when is_number(r) do 3.14 * r * r end end Geometry.area({:rectangle, 2, 3}) #=> 6 Geometry.area({:circle, 3}) #=> 28.25999999999999801048 # Geometry.area({:circle, "not_a_number"}) #=> ** (FunctionClauseError) no function clause matching in Geometry.area/1 # Due to immutability, recursion is a big part of elixir defmodule Recursion do def sum_list([head | tail], acc) do sum_list(tail, acc + head) end def sum_list([], acc) do acc end end Recursion.sum_list([1,2,3], 0) #=> 6 # Elixir modules support attributes, there are built-in attributes and you # may also add custom ones. defmodule MyMod do @moduledoc """ This is a built-in attribute on a example module. """ @my_data 100 # This is a custom attribute. IO.inspect(@my_data) #=> 100 end ## --------------------------- ## -- Structs and Exceptions ## --------------------------- # Structs are extensions on top of maps that bring default values, # compile-time guarantees and polymorphism into Elixir. defmodule Person do defstruct name: nil, age: 0, height: 0 end joe_info = %Person{ name: "Joe", age: 30, height: 180 } #=> %Person{age: 30, height: 180, name: "Joe"} # Access the value of name joe_info.name #=> "Joe" # Update the value of age older_joe_info = %{ joe_info | age: 31 } #=> %Person{age: 31, height: 180, name: "Joe"} # The `try` block with the `rescue` keyword is used to handle exceptions try do raise "some error" rescue RuntimeError -> "rescued a runtime error" _error -> "this will rescue any error" end #=> "rescued a runtime error" # All exceptions have a message try do raise "some error" rescue x in [RuntimeError] -> x.message end #=> "some error" ## --------------------------- ## -- Concurrency ## --------------------------- # Elixir relies on the actor model for concurrency. All we need to write # concurrent programs in elixir are three primitives: spawning processes, # sending messages and receiving messages. # To start a new process we use the `spawn` function, which takes a function # as argument. f = fn -> 2 * 2 end #=> #Function<erl_eval.20.80484245> spawn(f) #=> #PID<0.40.0> # `spawn` returns a pid (process identifier), you can use this pid to send # messages to the process. To do message passing we use the `send` operator. # For all of this to be useful we need to be able to receive messages. This is # achieved with the `receive` mechanism: # The `receive do` block is used to listen for messages and process # them when they are received. A `receive do` block will only # process one received message. In order to process multiple # messages, a function with a `receive do` block must recursively # call itself to get into the `receive do` block again. defmodule Geometry do def area_loop do receive do {:rectangle, w, h} -> IO.puts("Area = #{w * h}") area_loop() {:circle, r} -> IO.puts("Area = #{3.14 * r * r}") area_loop() end end end # Compile the module and create a process that evaluates `area_loop` in the shell pid = spawn(fn -> Geometry.area_loop() end) #=> #PID<0.40.0> # Alternatively pid = spawn(Geometry, :area_loop, []) # Send a message to `pid` that will match a pattern in the receive statement send pid, {:rectangle, 2, 3} #=> Area = 6 # {:rectangle,2,3} send pid, {:circle, 2} #=> Area = 12.56000000000000049738 # {:circle,2} # The shell is also a process, you can use `self` to get the current pid self() #=> #PID<0.27.0> # Code not found in the original, but needed to test the full range of the syntax def function, do: {:ok, result} [ :a, :b, :c ] %{ a: "a", b: "b", c: "c" } %A{ a: "a", b: "b", c: "c" }


An individual Standards and Interoperability (S&I) Initiative is a project aimed at solving a particular challenge that hinders interoperability in the healthcare industry. The Initiative organizes work necessary for the development or evolution of deliverables that further enable interoperability. The Initiative has no formal status outside of that purpose. There are two types of Initiatives within the S&I Framework – Staff Assigned Initiatives and Community Assigned Initiatives.
Initiatives that have formal staff allocations by the S&I Steering Team. The purpose of a Staff Assigned Initiative is to provide additional input and guidance to an area that the Office of the National Coordinator (or initiative sponsor, if applicable) has determined to be an interoperability priority.
Initiatives that do not have formal staff allocations by the S&I Steering Team, but are provided infrastructure support by the S&I Framework, such as use of the S&I Framework Wiki.
The purpose of this Initiative is to improve the exchange of core clinical information among providers, patients and other authorized entities electronically in support of meaningful use and IOM-identified needs for improvement in the quality of care. Learn More
The purpose of this Initiative is to address the challenge of lab reporting to ambulatory primary care providers. This will be driven primarily by the needs of internal medicine, family practice and pediatrics, but may also be leveraged by other providers and settings. Learn More
This initiative has two purposes:
The purpose of this Initiative is to define the standards and services for distributed population health queries from certified EHRs and other sources of patient records. Learn More
The purpose of this Initiative is to enable the implementation and management of varying disclosure policies in an electronic health information exchange environment in an interoperable manner. The goal is to enable a pilot project that allows providers to share portions of an electronic medical record while not sharing others, in line with applicable policy. Learn More
The esMD Initiative will offer providers a new mechanism for submitting medical documentation to review contractors, such as the CMS Improper Payments auditors. Learn More
This initiative aims to enable providers to electronically exchange and protect electronic health information created or maintained by the certified EHR technology through the implementation of appropriate technical capabilities. The preliminary focus was on developing an analysis of the issues related to complying with digital certificate requirements for exchanging data with Federal agencies. Learn More
The purpose of this initiative is to to support and advance patient-centric interoperable health information exchange across the long-term and post-acute care spectrum. Learn More
The purpose of this initiative is to harmonize HIT standards and implementation guides for bi-directional interoperable communication between clinical care and public health entities for selected use cases. Learn More


{include file='public/header' /}
搜商品
{foreach $data as $k=>$v}
{$v['catename']}
{foreach $v['child'] as $kk=>$vv}
{$vv['catename']}
{/foreach}
热门分类
{foreach $v['child'] as $kk=>$vv}
{$vv['catename']}
{/foreach}
{/foreach}
{foreach $banner as $k=>$v}
{/foreach}
{foreach $goods as $k=>$v}
{$v['name']}
{foreach $v['goods'] as $kk=>$vv}
{$vv['goods_name']}
¥
{$vv['original_price']}
{/foreach}
热销商品推荐
换一批
{foreach $v['hot'] as $kkk=>$vvv}
{$vvv['goods_name']}
¥
{$vvv['original_price']}
{/foreach}
{/foreach}
{include file='public/footer' /}


Fireworks cancelled at Dorrigo Show 2019
The Dorrigo Show committee has decided to cancel the fireworks display scheduled for Saturday night.
"Although the committee was completely satisfied that the fireworks would be safe, they have been postponed to a more appropriate time when the fires are out and the smoke has cleared and everyone on the plateau and beyond has a reason to celebrate," a spokesperson said.
"We would like to thank you all for the comments, opinions and feedback, both online and in person. Most of it was useful in our decision-making. Our whole purpose is to provide a community event that pleases as many people as possible. Having your feedback is a great way to help us achieve that.
"We look forward to the 'wet season' when we may all breathe easily again and to another event hosted by us that supports our families, our friends and our community. As for the show, we hope you will continue to support us by coming along to enjoy what we have provided."
The annual fun run on Sunday morning has also been called off due to the health issues posed by exercising in smoky conditions.
However, the three-day event will still offer constant entertainment.
Highlights include:
- The Friday night rodeo
- A Circus Challenge on Saturday evening that will have young and the not so young engaged in various activities.
- The Backtrack Boys demonstrating dog high jumps.
- A Bush Dog demonstration by a leading trialler Warren Taylor, commentated by Scott Amon, Saturday at 10am.
Old show favourites which draw big numbers include:
- A large beef cattle show, highlighting many British and European breeds
- A dairy cattle exhibition
- Numerous horse and pony classes, including show jumping
- Woodchops, with cross-cut sawing (for women and men) and tree felling
- A large array of pavilion events including children's classes, art, photography, flowers and veggies, and many more.
- On-ground competition for motorbike riders
Children, youth and young adults always have been serious contributors to Dorrigo Show.Sally Duckett, Show President
Axemen from across northern NSW will be in a corner of the showground competing in underhand, standing block and tree felling.
Last year, fifteen-year-old Austin Scrivener from Walcha was a crowd favourite, finishing first in the finals for the 300mm underhand and knocking the top of his tree ahead of the rest.


Capstone Project Objective Entry
Group Credentials
Project Objectives
Group Credentials
Email
Leader's Roll No
Leader's Phone No.
Mentor Email
Project Objectives
Objective 1
Objective 2
Objective 3
Objective 4
Objective 5


The assertEquals
command evaluates an expression and compares
the result to the contents of an element in the document. The command reports
a success if the evaluation result is equal to the text in the document,
or a failure otherwise. The comparisons are case-sensitive.
Given this instrumentation:
<span concordion:assertEquals="#user.firstName">Fred</span>
We get the following outcomes depending on the evaluation result of the expression #user.firstName
:
| Evaluation Result | Outcome |
|---|---|
| Fred | SUCCESS |
| Wilma | FAILURE |
| fred | FAILURE |


# Install release version from CRAN
install.packages("cchsflow")
# Install the most recent version from GitHub
devtools::install_github("Big-Life-Lab/cchsflow")
Use rec_with_table()
to transform the variables of a CCHS dataset.
In this example, the sex
variable in the 2001 CCHS cycle is transformed into a harmonized sex
variable that is consistent all CCHS cycles.
sex2001 <- rec_with_table(cchs2001_p, "DHH_SEX",
log = TRUE,
var_labels = c(DHH_SEX = "SEX")
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> The variable DHHA_SEX was recoded into DHH_SEX for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 1 1 79
#> 2 2 2 121
#> 3 NA::a 6 0
#> 4 NA::b [7,9] 0
#> DHH_SEX
#> 1 2
#> 2 2
#> 3 1
#> 4 2
#> 5 2
#> 6 1
cchs2001_p
is the name of test CCHS data that is included in the cchsflow library. cchsflow includes test CCHS data for the public use microdata file (PUMF) for all general household survey (.1 versions) between 2001 and 2013. Each survey cycle has a sample of 200 respondents. cchs2000_p
indicates this isthe CCHS 2001 PUMF file. See Reference for more information of each CCHS cycle.
You’ll want to use cchsflow on your own CCHS data that you’ll need to first load: something like cchs2001 <- read.csv("~/data/cchs2001.csv")
. CCHS PUMF data can be obtained from Statistics Canada.
DHH_SEX
is the name of the harmonized variable for sex. Up to 2007, the variable names in CCHS changed every cycle. Since 2007, there has generally been a consistent name. cchsflow uses the variable name from the 2007 cycle whenever possible. For example, in the CCHS 2001, the variable for sex is DHHA_SEX
and in CCHS 2007 the same variable is DHH_SEX
. This name, DHH_SEX
is the harmonized name for sex, meaning DHHA_SEX
is transformed to DHH_SEX
using rec_with_table()
.
The rules for the transformation and harmonization are in two dataframes that are included in variables
and variable_details
, both included in cchsflow. There are vignettes that further describe variables
and variable_details
, including how to add or customize transformed variables.
cchsflow includes commonly used sociodemographic, health behaviour and health status variables. In general, variables across CCHS cycles can be grouped into five categories:
Consistent and unchanged across all cycles. These variables have no changes to the wording of the question that was asked, the response values and who was asked the question (same inclusion criteria and skip pattern).
Mostly consistent across cycles. These variables may have a small change in wording or response category. Notes for these variables are printed to the console when they are recoded with rec_with_table()
. The notes are contained in variable_details$notes
. Caution is required when using these variables. The notes should be reviewed to assess whether these variables can be used in your study. See Example 2.
Either not collected in all cycles or have major changes between cycles. These variable may be included in cchsflow with a note that says which cycles include the variable and can be transformed to a common variable. See Example 4.
Mostly consistent but with complex changes or transformation rules. See the Reference for these derived and “Potentially problematic variables”. See Example 7.
Not consistent between cycles. Variable that are inconsistent or not asked in most cycles are not included in cchsflow. In the future, we hope to include these variables with an marker that they’ve been reviewed but rejected from inclusion in cchsflow.
notes
provide context for the decisions that informed harmonization that may affect your decision to use a harmonized variable.
warning(
"cchsflow includes ", length(unique(variable_details$notes)),
" variables with notes."
)
#> Warning: cchsflow includes 94 variables with notes.
For example, for DHHGAGE_A
the category NA::b
has the following note
:
Not applicable, don't know, refusal, not stated (96-99) were options only in CCHS 2003, but had zero responses
.
This note informs the decision to combine values 96 to 99 in DHHGAGE_A
for CCHS2003 into one common missing value NA::b
. The label for the NA::b
category is, “don't know (97); refusal (98); not stated (99)
”.
By default, rec_with_table()
prints notes to the console.
BMI2001 <- rec_with_table(cchs2001_p, "HWTGBMI", log = TRUE)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for HWTGBMI: CCHS 2001 restricts BMI to ages 20-64. CCHS 2015-2016 uses adjusted BMI. Consider using using HWTGBMI_der for the most concistent BMI variable across all CCHS cycles. See documentation for BMI_fun() in derived variables for more details, or type ?BMI_fun in the console.
#> NOTE for HWTGBMI: CCHS 2001 and 2003 codes not applicable and missing variables as 999.6 and 999.7-999.9 respectively, while CCHS 2005 onwards codes not applicable and missing variables as 999.96 and 999.7-999.99 respectively
#> NOTE for HWTGBMI: Don't know (999.7) and refusal (999.8) not included in 2001 CCHS
#> The variable HWTAGBMI was recoded into HWTGBMI for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [11.91,57.9] 142
#> 2 NA::a 999.6 58
#> 3 NA::b [999.7,999.9] 0
Several variables such as BMI have a quite a few notes reflecting a range of changes that occurred over CCHS cycles. Variables with notes can usually be used after reviewing and considering whether or how the variable changes affect your use. There can also be further guidance in notes. For example, BMI notes include advice to use HWTGBMI_der
. Despite the large number of changes, BMI can be used for most studies because the common transformed variable HWTGBMI_der
was derived from height and weight variables that are included and largely unchanged across CCHS cycles. However, to use HWTGBMI_der
you’ll also need to include the transformed measures for height (HWTGHTM
) and weight (HWTGWTK
). More information about HWTGBMI_der
can be found in the documentation reference for ‘derived variable functions’ or by typing ?BMI_fun
in the R console.
BMI2001C <- rec_with_table(cchs2001_p,
c("HWTGHTM", "HWTGWTK", "HWTGBMI_der"),
log = TRUE
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for HWTGHTM: 2001 and 2003 CCHS use inches, values converted to meters to 3 decimal points
#> NOTE for HWTGHTM: 74+ inches converted to 76 inches
#> The variable HWTAGHT was recoded into HWTGHTM for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 1.118 1 0
#> 2 1.143 2 0
#> 3 1.168 3 0
#> 4 1.194 4 0
#> 5 1.219 5 0
#> 6 1.245 6 0
#> 7 1.27 7 0
#> 8 1.295 8 0
#> 9 1.321 9 0
#> 10 1.346 10 0
#> 11 1.372 11 0
#> 12 1.397 12 0
#> 13 1.422 13 1
#> 14 1.448 14 0
#> 15 1.473 15 1
#> 16 1.499 16 2
#> 17 1.524 17 8
#> 18 1.549 18 7
#> 19 1.575 19 21
#> 20 1.6 20 12
#> 21 1.626 21 13
#> 22 1.651 22 19
#> 23 1.676 23 16
#> 24 1.702 24 21
#> 25 1.727 25 16
#> 26 1.753 26 11
#> 27 1.778 27 13
#> 28 1.803 28 14
#> 29 1.829 29 10
#> 30 1.854 30 8
#> 31 1.93 31 6
#> 32 NA::a 96 0
#> 33 NA::b 99 1
#> The variable HWTAGWTK was recoded into HWTGWTK for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [27.0,135.0] 199
#> 2 NA::a 999.96 0
#> 3 NA::b [999.97,999.99] 1
Warning messages will appear when your dataset is missing variables in your variables
worksheet or rec_with_table()
call.
rec_with_table()
can include variable and value labels for the harmonized variables using the var_labels
attribute. By default, rec_with_table()
will include all labels if then all variables in variables
are recoded. See Example 6.
sex2001 <- rec_with_table(cchs2001_p, "DHH_SEX",
log = TRUE,
var_labels = c("DHH_SEX" = "Sex")
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> The variable DHHA_SEX was recoded into DHH_SEX for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 1 1 79
#> 2 2 2 121
#> 3 NA::a 6 0
#> 4 NA::b [7,9] 0
Labels can then be used in plots and tables.
If you’ve been watching, you may have noticed that cchsflow recodes the values in factor or categorical variables for 6 (“not applicable”), 7 (“don’t know”), and 8 (“refusal”), 9 (“not stated”) into tagged_NA
values NA(a) (“not applicable”) and NA (b) (“missing”). There are two reasons. First, the typical uses of CCHS consider the two values “not applicable” and “missing” for most situations. Second, R and other open languages typically support only one NA.
Be careful when use use NA
in your study. See missing data (tagged_na)
for more information.
library(haven)
x <- c(1:5, tagged_na("a"), tagged_na("b"), tagged_na("b"), NA)
x
#> [1] 1 2 3 4 5 NA NA NA NA
# Do you want to calculate mean by excluding 'missing', 'not applicable', or both?
sum(!is_tagged_na(x, "a"))
#> [1] 8
sum(!is_tagged_na(x, "b"))
#> [1] 7
sum(!is.na(x))
#> [1] 5
sum(!is_tagged_na(x))
#> [1] 6
rec_with_table()
With rec_with_table()
there are also default arguments that do not need to be called unless you would like to modify them.
variables
defaults to NULL. This results in the variables.csv
sheet in the cchsflow package being used to specify which variables to transform. This argument can be modified if you want use your own variables.csv
sheet or by specifying particular variables to transform.database_name
defaults to NULL. This results in rec_with_table()
using the database indicated in the data
argument.variable_details
defaults to NULL. This results in the variable_details.csv
sheet in the cchsflow being used. This argument can be modified if want use your own variable_details.csv
sheet.else_value
defaults to NA. Values out of range set to NA.append_to_data
defaults to FALSE. Transformed variables will not be appended to the original CCHS dataset.log
defaults to FALSE. Logs of the variable transformations will not be displayed.notes
defaults to TRUE. Information in the Notes
column from variable_details.csv
will be displayedvar_labels
is set to NULL. This argument can be used to add labels to a transformed dataset that only contains a subset of variables from variables.csv
. The format to add labels to a subset of variables is c(variable = "Label")
.attach_data_name
is set to FALSE. This argument can be used to append a column that denotes the name of the dataset each transformed row came from. See Example 8.This example shows how you can transform and combine a variable across multiple CCHS cycles. The sex variable in CCHS 2001 (DHHA_SEX
) and CCHS 2012 (DHH_SEX
) is transformed a common variable (DHH_SEX
) and combined into a single dataset. In cchsflow the CCHS 2007 variable name is used as the common variable name. See the variable_details vignette for more information.
sex2001 <- rec_with_table(cchs2001_p, "DHH_SEX", log = TRUE)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> The variable DHHA_SEX was recoded into DHH_SEX for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 1 1 79
#> 2 2 2 121
#> 3 NA::a 6 0
#> 4 NA::b [7,9] 0
head(sex2001)
#> DHH_SEX
#> 1 2
#> 2 2
#> 3 1
#> 4 2
#> 5 2
#> 6 1
sex2012 <- rec_with_table(cchs2012_p, "DHH_SEX", log = TRUE)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> The variable DHH_SEX was recoded into DHH_SEX for the database cchs2012_p the following recodes were made:
#> value_to From rows_recoded
#> 1 1 1 78
#> 2 2 2 122
#> 3 NA::a 6 0
#> 4 NA::b [7,9] 0
tail(sex2012)
#> DHH_SEX
#> 195 1
#> 196 2
#> 197 1
#> 198 2
#> 199 1
#> 200 1
combined_sex <- merge_rec_data(sex2001, sex2012)
#> DHH_SEX
#> 1 2
#> 2 2
#> 3 1
#> 4 2
#> 5 2
#> 6 1
#> DHH_SEX
#> 395 1
#> 396 2
#> 397 1
#> 398 2
#> 399 1
#> 400 1
There are many variables in the CCHS that changes in categories between cycles in a way that the variable cannot preserve all categories for all CCHS cycles. An example is the categorical variable for age
. cchsflow offers three options to facilitate the use of these variables with inconsistent categories across cycles.
age
variable into a common variable for only cycles with the same category responsesTransform the age
variable into variables that cannot be combined across cycles. The categories in age
variable in the CCHS changed in 2005 and therefore it is not possible to have the same age
categories across all CCHS cycles.
DHHGAGE_A
is the age variable for CCHS cycles 2001-2003, and DHHGAGE_B
is the age variable for CCHS cycles 2005-2018.
age2001 <- rec_with_table(cchs2001_p, "DHHGAGE_A")
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for DHHGAGE_A: Not applicable, don't know, refusal, not stated (96-99) were options only in CCHS 2003, but had zero responses
head(age2001)
#> DHHGAGE_A
#> 1 15
#> 2 15
#> 3 5
#> 4 14
#> 5 3
#> 6 14
age2012 <- rec_with_table(cchs2012_p, "DHHGAGE_B")
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
tail(age2012)
#> DHHGAGE_B
#> 195 8
#> 196 11
#> 197 6
#> 198 15
#> 199 9
#> 200 16
combined_age_cat <- merge_rec_data(age2001, age2012)
#> DHHGAGE_A DHHGAGE_B
#> 1 15 NA(c)
#> 2 15 NA(c)
#> 3 5 NA(c)
#> 4 14 NA(c)
#> 5 3 NA(c)
#> 6 14 NA(c)
#> DHHGAGE_A DHHGAGE_B
#> 395 NA(c) 8
#> 396 NA(c) 11
#> 397 NA(c) 6
#> 398 NA(c) 15
#> 399 NA(c) 9
#> 400 NA(c) 16
age
variable into a continuous age_cont
variableTransform categorical variables such as age
into a single harmonized age_cont
variable. This variable takes the midpoint age of each category for all CCHS cycles. With this option, the age category variable from all CCHS cycles can be combined into a single dataset.
age2001_cont <- rec_with_table(cchs2001_p, "DHHGAGE_cont")
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for DHHGAGE_cont: Not applicable, don't know, refusal, not stated (96-99) were options in CCHS 2003, but had zero responses
head(age2001_cont)
#> DHHGAGE_cont
#> 1 85
#> 2 85
#> 3 32
#> 4 77
#> 5 22
#> 6 77
age2012_cont <- rec_with_table(cchs2012_p, "DHHGAGE_cont")
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
tail(age2012_cont)
#> DHHGAGE_cont
#> 195 42
#> 196 57
#> 197 32
#> 198 77
#> 199 47
#> 200 85
combined_age_cont <- merge_rec_data(age2001_cont, age2012_cont)
#> DHHGAGE_cont
#> 1 85
#> 2 85
#> 3 32
#> 4 77
#> 5 22
#> 6 77
#> DHHGAGE_cont
#> 395 42
#> 396 57
#> 397 32
#> 398 77
#> 399 47
#> 400 85
age
variable into a harmonized categorical variablecchsflow often includes a common harmonized categorical variable that has new, consistent categories across all cycles. These new categorical variables generally have fewer category levels than the original variables, reflecting the need to combine categories. Read the Notes
variable for details.
The variables argument in rec_with_table()
allows multiple variables to be transformed from a CCHS dataset. In this example, the age and sex variables from the 2001 and 2012 CCHS datasets will be transformed and labeled using rec_with_table()
. They will then be combined into a single dataset and labeled using merge_rec_data()
.
age_sex_2001 <- rec_with_table(cchs2001_p, c("DHHGAGE_cont", "DHH_SEX"),
var_labels = c(DHHGAGE_cont = "Age", DHH_SEX = "Sex")
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for DHHGAGE_cont: Not applicable, don't know, refusal, not stated (96-99) were options in CCHS 2003, but had zero responses
get_label(age_sex_2001)
#> DHH_SEX DHHGAGE_cont
#> "Sex" "Age"
age_sex_2012 <- rec_with_table(cchs2012_p, c("DHHGAGE_cont", "DHH_SEX"),
var_labels = c(DHHGAGE_cont = "Age", DHH_SEX = "Sex")
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
get_label(age_sex_2012)
#> DHH_SEX DHHGAGE_cont
#> "Sex" "Age"
In the above example, var_labels
is called in rec_with_table()
to label the age and sex variables in the 2001 and 2012 datasets. Use get_label()
to view the variable labels in your transformed dataset. As mentioned previously, var_labels
can be used all the variables in variables.csv
or a subset of variables.
combined_age_sex <- merge_rec_data(age_sex_2001, age_sex_2012)
In the above code, merge_rec_data()
is used to merge and label the combined age and sex dataset. Similar to before, you can check if labels have been added using get_label()
.
get_label(combined_age_sex)
#> DHH_SEX DHHGAGE_cont
#> "Sex" "Age"
For more information on get_label()
and other label helper functions, please refer to the sjlabelled package.
All the variables listed in variables.csv
& variable_details.csv
will be transformed if the variables argument in rec_with_table()
is not specified. In this example, all variables specified in the two worksheets will be transformed, combined, and labeled for the 2001 and 2012 CCHS cycles.
transformed2001 <- rec_with_table(data = cchs2001_p, notes = FALSE)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> No variables detected.
#> Loading cchsflow variables
#> Using the passed data variable name as database_name
transformed2012 <- rec_with_table(data = cchs2012_p, notes = FALSE)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> No variables detected.
#> Loading cchsflow variables
#> Using the passed data variable name as database_name
combined_cchs <- merge_rec_data(transformed2001, transformed2012)
CCHS derived variables are recoded (harmonized) using the same method as other CCHS cchsflow variables, with one additional considerations.
Derived variables in CCHS are created from existing, original variables that are transformed into a new variable. An example is body mass index (BMI). Respondents are asked to report their height and weight. BMI is then derived (calculated) using recoded variables for height and weight.
Recoding BMI
into a harmonized variable requires their underlying initial variables (height and weight). This first step of harmonizing underlying variables is completed for you, but you must have the underlying variables in your dataset.
Using the BMI example illustrated in the derived variables article, rec_with_table()
is able to transform BMI across multiple cycles provided that height (HWTGHTM
) and weight (HWTGWTK
) are specified.
bmi2001 <- rec_with_table(cchs2001_p, c("HWTGHTM", "HWTGWTK", "HWTGBMI_der"),
log = TRUE
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for HWTGHTM: 2001 and 2003 CCHS use inches, values converted to meters to 3 decimal points
#> NOTE for HWTGHTM: 74+ inches converted to 76 inches
#> The variable HWTAGHT was recoded into HWTGHTM for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 1.118 1 0
#> 2 1.143 2 0
#> 3 1.168 3 0
#> 4 1.194 4 0
#> 5 1.219 5 0
#> 6 1.245 6 0
#> 7 1.27 7 0
#> 8 1.295 8 0
#> 9 1.321 9 0
#> 10 1.346 10 0
#> 11 1.372 11 0
#> 12 1.397 12 0
#> 13 1.422 13 1
#> 14 1.448 14 0
#> 15 1.473 15 1
#> 16 1.499 16 2
#> 17 1.524 17 8
#> 18 1.549 18 7
#> 19 1.575 19 21
#> 20 1.6 20 12
#> 21 1.626 21 13
#> 22 1.651 22 19
#> 23 1.676 23 16
#> 24 1.702 24 21
#> 25 1.727 25 16
#> 26 1.753 26 11
#> 27 1.778 27 13
#> 28 1.803 28 14
#> 29 1.829 29 10
#> 30 1.854 30 8
#> 31 1.93 31 6
#> 32 NA::a 96 0
#> 33 NA::b 99 1
#> The variable HWTAGWTK was recoded into HWTGWTK for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [27.0,135.0] 199
#> 2 NA::a 999.96 0
#> 3 NA::b [999.97,999.99] 1
head(bmi2001)
#> HWTGHTM HWTGWTK HWTGBMI_der
#> 1 1.422 56.25 27.81784
#> 2 1.549 51.75 21.56788
#> 3 1.803 78.75 24.22474
#> 4 1.575 60.75 24.48980
#> 5 1.727 63.00 21.12301
#> 6 1.829 91.80 27.44197
bmi2012 <- rec_with_table(cchs2012_p, c("HWTGHTM", "HWTGWTK", "HWTGBMI_der"),
log = TRUE
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for HWTGHTM: Height is a reported in meters from 2005 CCHS onwards
#> The variable HWTGHTM was recoded into HWTGHTM for the database cchs2012_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [0.914,2.134] 191
#> 2 NA::a 9.996 2
#> 3 NA::b [9.997,9.999] 7
#> The variable HWTGWTK was recoded into HWTGWTK for the database cchs2012_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [27.0,135.0] 189
#> 2 NA::a 999.96 0
#> 3 NA::b [999.97,999.99] 11
tail(bmi2012)
#> HWTGHTM HWTGWTK HWTGBMI_der
#> 195 1.829 108.00 32.28467
#> 196 1.524 70.20 30.22506
#> 197 1.803 84.00 25.83972
#> 198 1.575 63.00 25.39683
#> 199 1.829 85.50 25.55870
#> 200 1.702 74.25 25.63170
combined_bmi <- merge_rec_data(bmi2001, bmi2012)
head(combined_bmi)
#> HWTGHTM HWTGWTK HWTGBMI_der
#> 1 1.422 56.25 27.81784
#> 2 1.549 51.75 21.56788
#> 3 1.803 78.75 24.22474
#> 4 1.575 60.75 24.48980
#> 5 1.727 63.00 21.12301
#> 6 1.829 91.80 27.44197
tail(combined_bmi)
#> HWTGHTM HWTGWTK HWTGBMI_der
#> 395 1.829 108.00 32.28467
#> 396 1.524 70.20 30.22506
#> 397 1.803 84.00 25.83972
#> 398 1.575 63.00 25.39683
#> 399 1.829 85.50 25.55870
#> 400 1.702 74.25 25.63170
It can be important to know from which cycle data comes from after combining all the cycles. rec_with_table()
provides the option of appending a column that indicates from which dataset respondents come from by setting the parameter attach_data_name
to be TRUE. Using the BMI example in Example 7, rec_with_table()
can specify which dataset each respondent came from.
bmi2001 <- rec_with_table(cchs2001_p, c("HWTGHTM", "HWTGWTK", "HWTGBMI_der"),
log = TRUE, attach_data_name = TRUE
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for HWTGHTM: 2001 and 2003 CCHS use inches, values converted to meters to 3 decimal points
#> NOTE for HWTGHTM: 74+ inches converted to 76 inches
#> The variable HWTAGHT was recoded into HWTGHTM for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 1.118 1 0
#> 2 1.143 2 0
#> 3 1.168 3 0
#> 4 1.194 4 0
#> 5 1.219 5 0
#> 6 1.245 6 0
#> 7 1.27 7 0
#> 8 1.295 8 0
#> 9 1.321 9 0
#> 10 1.346 10 0
#> 11 1.372 11 0
#> 12 1.397 12 0
#> 13 1.422 13 1
#> 14 1.448 14 0
#> 15 1.473 15 1
#> 16 1.499 16 2
#> 17 1.524 17 8
#> 18 1.549 18 7
#> 19 1.575 19 21
#> 20 1.6 20 12
#> 21 1.626 21 13
#> 22 1.651 22 19
#> 23 1.676 23 16
#> 24 1.702 24 21
#> 25 1.727 25 16
#> 26 1.753 26 11
#> 27 1.778 27 13
#> 28 1.803 28 14
#> 29 1.829 29 10
#> 30 1.854 30 8
#> 31 1.93 31 6
#> 32 NA::a 96 0
#> 33 NA::b 99 1
#> The variable HWTAGWTK was recoded into HWTGWTK for the database cchs2001_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [27.0,135.0] 199
#> 2 NA::a 999.96 0
#> 3 NA::b [999.97,999.99] 1
head(bmi2001)
#> HWTGHTM HWTGWTK HWTGBMI_der data_name
#> 1 1.422 56.25 27.81784 cchs2001_p
#> 2 1.549 51.75 21.56788 cchs2001_p
#> 3 1.803 78.75 24.22474 cchs2001_p
#> 4 1.575 60.75 24.48980 cchs2001_p
#> 5 1.727 63.00 21.12301 cchs2001_p
#> 6 1.829 91.80 27.44197 cchs2001_p
bmi2012 <- rec_with_table(cchs2012_p, c("HWTGHTM", "HWTGWTK", "HWTGBMI_der"),
log = TRUE, attach_data_name = TRUE
)
#> No variable_details detected.
#> Loading cchsflow variable_details
#> Using the passed data variable name as database_name
#> NOTE for HWTGHTM: Height is a reported in meters from 2005 CCHS onwards
#> The variable HWTGHTM was recoded into HWTGHTM for the database cchs2012_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [0.914,2.134] 191
#> 2 NA::a 9.996 2
#> 3 NA::b [9.997,9.999] 7
#> The variable HWTGWTK was recoded into HWTGWTK for the database cchs2012_p the following recodes were made:
#> value_to From rows_recoded
#> 1 copy [27.0,135.0] 189
#> 2 NA::a 999.96 0
#> 3 NA::b [999.97,999.99] 11
tail(bmi2012)
#> HWTGHTM HWTGWTK HWTGBMI_der data_name
#> 195 1.829 108.00 32.28467 cchs2012_p
#> 196 1.524 70.20 30.22506 cchs2012_p
#> 197 1.803 84.00 25.83972 cchs2012_p
#> 198 1.575 63.00 25.39683 cchs2012_p
#> 199 1.829 85.50 25.55870 cchs2012_p
#> 200 1.702 74.25 25.63170 cchs2012_p
combined_bmi <- merge_rec_data(bmi2001, bmi2012)
head(combined_bmi)
#> HWTGHTM HWTGWTK HWTGBMI_der data_name
#> 1 1.422 56.25 27.81784 cchs2001_p
#> 2 1.549 51.75 21.56788 cchs2001_p
#> 3 1.803 78.75 24.22474 cchs2001_p
#> 4 1.575 60.75 24.48980 cchs2001_p
#> 5 1.727 63.00 21.12301 cchs2001_p
#> 6 1.829 91.80 27.44197 cchs2001_p
tail(combined_bmi)
#> HWTGHTM HWTGWTK HWTGBMI_der data_name
#> 395 1.829 108.00 32.28467 cchs2012_p
#> 396 1.524 70.20 30.22506 cchs2012_p
#> 397 1.803 84.00 25.83972 cchs2012_p
#> 398 1.575 63.00 25.39683 cchs2012_p
#> 399 1.829 85.50 25.55870 cchs2012_p
#> 400 1.702 74.25 25.63170 cchs2012_p