pasuspender
Section: User Commands (1)Updated: User
Index Return to Main Contents
NAME
pasuspender - Temporarily suspend PulseAudioSYNOPSIS
pasuspender [options] -- PROGRAM [ARGUMENTS ...]pasuspender --help
DESCRIPTION
pasuspender is a tool that can be used to tell a local PulseAudio sound server to temporarily suspend access to the audio devices, to allow other applications access them directly. pasuspender will suspend access to the audio devices, fork a child process, and when the child process terminates, resume access again.Make sure to include -- in your pasuspender command line before passing the subprocess command line (as shown above). Otherwise pasuspender itself might end up interpreting the command line switches and options you intended to pass to the subprocess.
OPTIONS
- -h | --help
- Show help.
- --version
- Show version information.
- -s | --server=SERVER
- Specify the sound server to connect to.
AUTHORS
The PulseAudio Developers <mzchyfrnhqvb (at) 0pointer (dot) net>; PulseAudio is available from http://pulseaudio.org/SEE ALSO
pulseaudio(1), padsp(1), pacmd(1), pactl(1)
Index
This document was created by man2html, using the manual pages.
Time: 05:29:07 GMT, December 24, 2015


WITNESS LIST Urban Affairs Committee April 7, 1999-2:00P HB 247 For: Falcone, Ernani (Self and Northwest Neighborhood Alliance) Rodriguez, Martin (Self and Director of Code Compliance/ City of San Antonio) Sherrill, Jody (Self and Northwest Neighborhood Alliance/retired, US Army) HB 1132 For: Bailey, Ken (Texas State Association of Fire Fighters) Ruiz, Jr., Robert V. (Self and State President Texas Latino Police Officer Association/Police Officer) HB 1684 For: McNeil, Jr., Carvel "Corky" (Houston Police Patrolmen's Union) Sanders, Stephen (Houston Police Patrolmen's Union) Against: Ferrel, Craig (Houston Police Department/City of Houston) On: Clark, Mark (Houston Police Officers Union) HB 2147 For: Mintz, David (Texas Apartment Association) On: Hewgley, Bob (Texas General Land Office, David Dewhurst, Commissioner) HB 2238 For: Russell, Sam (Texas Manufactured Housing Association) Stinson, Bill (Texas Association of Realtors) On: Hill, Bobbie (Texas Department of Housing and Community Affairs) HB 2310 For: Rodriguez, Martin (Self and Director of Code Compliance/City of San Antonio) HB 2838 For: Tidwell, Sandy (Self and Tax Assessor collector/Hood County) Against: Russell, Sam (Texas Manufactured Housing Association) On: Hill, Bobbie (Texas Department of Housing and Community Affairs) HB 2925 For: Kennard, Karen (Texas Municipal League) Mundo, Modesto (City of Lake Jackson/City Management) HB 3373 For: Clark, Mark (Houston Police Officers Union) Ferrell, Craig (Houston Police Department/City of Houston) Marticiuc, Hans (Houston Police Officers Union) Against: McNeil, Jr., Carvel "Corky" (Houston Police Patrolmen's Union) Sanders, Stephen (President of Houston Police Patrolmen's Union) HB 3375 For: Clark, Mark (Houston Police Officers Union) Ferrell, Craig (Houston Police Department/City of Houston) Marticiuc, Hans (Houston Police Officers Union) Against: McNeil, Jr., Carvel "Corky" (Houston Police Patrolmen's Union) Sanders, Stephen (President of Houston Police Patrolmen's Union) HB 3376 For: Clark, Mark (Houston Police Officers Union) Ferrell, Craig (Houston Police Department/City of Houston) Marticiuc, Hans (Houston Police Officers Union) Against: McNeil, Jr., Carvel "Corky" (Houston Police Patrolmen's Union) Sanders, Stephen (President of Houston Police Patrolmen's Union) HB 3619 For: Hawk, Curtis (Self and City of Southlake/City Manager) Kennard, Karen (Texas Municipal League)


Apache ESME
News
December 2008
ESME has just joined the Apache Incubator
Overview
Enterprise Social Messaging Experiment (ESME) is a secure and highly scalable microsharing and micromessaging platform that allows people to discover and meet one another and get controlled access to other sources of information, all in a business process context.
The ESME server is written in Scala and uses the Lift web framework to produce a browser-based user interface and also to expose a REST API. The ESME architecture has been devised to meet the business requirements associated with reliability and scalability. The use of the Scala programming language and the Lift web framework on the server provides rapid development capability as well as browser push functionality ("Comet") as standard. The open server side architecture allows other messaging environments - internal (Alerts, Enterprise Services, etc.) as well as public (Twitter, external web-services, etc.) - to be consumed as messaging sources. An event-driven actions framework within ESME allows users to filter their information flow as well as to forward ESME messages to other systems via HTTP or email.
History
If you look at the origins of the ESME project, you will find that the origin was in a plurk (a micro-blogging site like twitter) conversation that at some point moved to the SAP SDN wiki. The project then moved to Assembla and then Google Code
The team involved was originally primarily made of individuals associated with the SAP community but has since expanded to include others from outside that community. The global team includes members from a variety of different nations ranging from India, Spain, Norway, Bulgaria, UK, etc.
Features
Present Features
- Adobe Air client
- Web client
- Extensive set of built-in actions
- Login via Open-ID
Planned Features
- Federation scenarios
- Groups
A few requested Features
- ERP notifictions
- Prioritization
- Show local time for users


Ten eye-catching Conservative policies that you may have missed
The Conservatives’manifesto has been widely interpreted as a ‘low risk’ election pitch which aims to minimise controversy before December 12.
But despite the muted reaction to yesterday’s launch – and the comparatively low level of spending pledges compared to Labour’s plans, a number of Tory policies aside from ‘getting Brexit done’ have attracted attention.
As well as leaving the European Union by December 2020, Boris Johnson’s party says it will increase the number of nurses in England and be carbon neutral by 2050.
The Prime Minister also promised to back a ‘Northern Powerhouse rail plan’and a spending boost for the NHS.
But there were a number of other eye-catching policies that you might have missed – here are some of them.
- Tampon tax abolished
Advertisement Advertisement
Mr Johnson’s party have pledged to abolish the tampon tax – a 5% ‘luxury’ charge on an essential good, which has long outraged women’s groups.
The move is expected to cost around £15 million a year.
- Human rights act ‘update’
The Tories say they will change the Human Right Act to better ‘balance’ individual rights, national security and effective government.
Within a year of returning to power, the party says it would set up a commission to look at how the act can be used most effectively in depth.
Conservative leaders have previously called for the act to be overturned and replaced by a ‘British Bill of Rights’.
- Cancer drugs fund
The Tories will extend the Cancer Drugs Fund – which allows early access to new treatments – to various other illnesses.
A new ‘Innovative Medicines Fund’ will allow doctors to ‘use the most advanced, life-saving treatments for conditions such as cancer or autoimmune disease, or for children with other rare diseases’, the party says.
- More tasers and body cams for police
In a bid to cut crime, Mr Johnson’s party would equip more police with tasers and body cameras.
The Conservatives say this will help keep the public and police officers safe.
The PM is keen to show that he is being tough on knife crime – and his plan would ’empower officers with court orders’ so that they can target known knife carriers through stop and search.
- 30 million trees to be planted in green agenda
Advertisement Advertisement
The Conservatives say they will invest £640 million in a new ‘Nature for Climate’ fund which would see the creation of a ‘Great Northumberland Forest’.
The party hopes to create an additional 75,000 acres of trees a year by the end of the next Parliament and ‘expects’ all new streets to be tree-lined.
As part of its plans to make Britain carbon neutral by 2050, the party say it will also establish a £500 million ‘Blue Planet Fund’ to ‘protect oceans from plastic pollution, warming sea temperatures and overfishing’.
- Voters will have to show ID
The Tories say they are trying to reduce election fraud by making voters show identification at polling stations.
They also aim to ‘stop postal vote harvesting’ and reduce foreign interference in election, though there is limited detail on what this would mean in practice.
- Electric vehicle charging network
An investment of £1 billion is being promised for completing a ‘fast-charging network’, which would ‘ensure’ that everyone is within 30 miles of a rapid charging station for electric vehicles.
The party says the initiative would be prioritised in the first budget after the election.
It also aims to set the earliest date possible to phase out the sale of petrol and diesel cars, after previously considering 2035 as a possible cut off point.
- NHS ‘not for sale’
Amid Labour attacks on the Tories suggesting that the NHS could be part of a trade deal with President Donald Trump’s USA after Brexit, the Conservatives have tried to make it abundantly clear that they would not sell the health service.
Advertisement
The party write: ‘When we are negotiating trade deals, the NHS will not be on the table.
‘The price the NHS pays for drugs will not be on the table. The services the NHS provides will not be on the table.’
- Domestic abuse plans
The Tories say they will pass the Domestic Abuse Bill if they win a majority and increase support for refuges and victims of rape and sexual abuse.
The party also plan to pilot ‘integrated domestic abuse courts that address criminal and family matters in parallel’.
A cash injection of £15 million to support rape victims has already been announced – doubling the current funding for the Rape and Sexual Abuse Support Fund and more Independent Sexual Violence Advisors.
- Fox hunting
This one is not in the manifesto – but is noteable in its absence.
The Conservatives have long promised MPs a free vote on repealing the fox hunting ban.
Instead, this time round the party says simply that it will make ‘no change’ to the current act – which could alienate some rural voters, but will please animal rights groups.
Got a story for Metro.co.uk?
Get in touch with our news team by emailing us at<EMAIL_ADDRESS>For more stories like this, check our news page.


Basic
500 GB Storage
2 Users Allowed
Send up to 3 GB
Professional
1 TB Storage
5 Users Allowed
Send up to 10 GB
Master
2 TB Storage
10 Users Allowed
Send up to 20 GB


Applying for Free and Reduced Price School Meals is easy. With just a few minutes, you can provide us with all the information we need to see if your children qualify.
We’ll walk you through the whole process with this online form. There will be instructions to guide you the whole way, but if you’re ever not sure what to do, you can contact Sonya Smith at the Oakland Unified School District,<PHONE_NUMBER> or<EMAIL_ADDRESS>While completing the application does not guarantee free or reduced priced meals for your children, it should only take a few minutes, and there’s no risk at all in applying.
Why not give it a try?


But Hillary wants my guns!
Q: But Hillary wants my guns!
A: That’s not precisely correct!
Basically, she doesn’t want your guns, unless you’re a felon, a domestic abuser, or someone with severe mental illnesses. And I think we can all agree that people like that shouldn’t really have access to guns.
Here’s what her campaign website says:
-
Expand background checks to more gun sales—including by closing the gun show and internet sales loopholes—and strengthen the background check system by getting rid of the so-called “Charleston Loophole.”
-
Take on the gun lobby by removing the industry’s sweeping protection for illegal and irresponsible actions (which makes it almost impossible for people to hold them accountable), and revoking licenses from dealers who break the law.
-
Keep guns out of the hands of domestic abusers, other violent criminals, and the severely mentally ill by supporting laws that stop domestic abusers from buying and owning guns, making it a federal crime for someone to intentionally buy a gun for a person prohibited from owning one, and closing the loopholes that allow people suffering from severe mental illness to purchase and own guns. She will also support work to keep military-style weapons off our streets.


I am John, and this is my site. I started this somewhere along my Python journey in order to document and share things I may have found interesting or hard, in the hope to help other people. Python is a fantastic language to learn, especially for beginners, due to its simple nature and logical approach to coding. It has expanded greatly in the last few years so now is a great time to start to learn.
Despite some percieved simplicity Python is extremely powerful. Companies like Netflix, Spotify and Instagram all use Python in some way for their websites. Not only is it endorsed by huge companies like those mentioned it is also excellent for those of us who are not programmers but need tasks automating, data processing or right down to an administrator bulk renaming files, or collating several reports into one.
It truely is a great time for anyone to start to learn programming and Python, and hopefully some content on this site will help you if you choose to start that journey.
John.


Doggy Style
So named because Bec just ran over some rich woman's little poodle. Aparently, she was cycling merrily along, when all of a sudden heard this woman shout out.  To top that, Bec couldn't help laughing. My sister - a model of compassion!
Just listening at the moment to Bay FM, a very funky little radio station here in Byron, which plays a top techno/drum 'n bass mix every night. They also do shouts, so I'll get one for everyone back home. You'll never hear it, but I'll do it anyway. I'm off tonight to the Car Park, which is now free for me as James the Promoter gave me a pass. It matters not that he's gay and trying to pull me, as free drinks are thrown in as well. No, it's not just me, as others at the hostel get this as well. Tonight a "world-famous DJ" is playing, Scott Pullen from Sydney. Yep, I had to ask who the hell that was as well.
Post-Car Park: free drinks at the BBQ at the hostel, and at the club resulted in me ending up at some hostel, the Arts Factory, out of town, then borrowing a bike with which to cycle home in the rain, which was coming down harder than Begbie after 20 pints.
Back to the main page


[all packages]
[package ]
[class hierarchy]
[index]
public abstract class PremonType
(source file: PremonType.java)
java.lang.Object
|
+----Printable
|
+----PremonType
The pure class interface.
public abstract class PremonType
extends Printable
-
The class representing a type.
- Author:
- Alan Jeffrey
- Version: v1.0 1998/06/03
- PremonType()
-
- equals(PremonType)
-
Equality on types.
- semantics()
-
Find the semantics of the type as an object.
- traceable()
-
Is the type traceable?
PremonType
public PremonType();
semantics
public abstract Obj semantics();
-
Find the semantics of the type as an object.
- Returns:
- [[this]].
equals
public abstract boolean equals(PremonType T);
-
Equality on types.
- Parameters:
- T - the type to compare to.
- Returns:
- true iff this type equals T.
traceable
public abstract boolean traceable();
-
Is the type traceable?
- Returns:
- true iff this type is traceable.
[all packages]
[package ]
[class hierarchy]
[index]
PremonType.html


Director
The one who started it all.
We are a technology company on a mission to equip students with relevant skills & practical exposure through internships and online trainings. Imagine a world full of freedom and possibilities. A world where you can discover your passion and turn it into your career. A world where your practical skills matter more than your university degree. A world where you do not have to wait till 21 to taste your first work experience (and get a rude shock that it is nothing like you had imagine it to be).
The one with the impeccable taste.
The one with the patience.
Decide exactly what you want and where you want to go. Set a deadline and make a plan to get there.
Define the purpose. Clearly define the purpose of the team, including the overall outcome it has been brought together to achieve.
step on the ladder to beginning any project is the identification of the various team members to be involved.
Choose goals that inspire you and Set goals that are personal to you and will inspire you to reach new heights.
Make what's important clear & and what's clear important. Give the traditional, step-by-step directions to keep it simple.
This understanding may also help students who don’t feel that other students are qualified to give feedback, but you can choose to ignore it.
Transforming Life
Talent are universal but opportunities are not.
Staying Head
Power to develop of top-rated business with future evolving
Great to Grow
Our culture is diverse and committed to personal and professional.
The Pulse
Leading global marketplace for teaching and learning.
Dream Big
The Bigger we thought, the bigger we get and never stop.
Have Fun
No Matter how the workload is but always we have fun.


Kim Sarang's new Instagram update has netizens believing that she's ageless
by sl278Kim Sarang's newest Instagram update has netizens raving that she is absolutely ageless.
The 41-year-old actress recently made an Instagram update on November 14 showing off the star's beautiful natural beauty, making it hard for netizens to believe that the actress is that age.
Netizens have been raving about the actresses, beauty stating:
"She straight up looks like she's in her twenties."
"She's gorgeous beyond words."
"She's ageless."
"I don't understand how a person becomes beautiful."
What do you think of Kim Sarang's look?


The Aeronauts film review: Felicity Jones shines in this good old-fashioned adventure
by Helen CraneA template is emerging for films starring Eddie Redmayne, and The Aeronauts fits it. It’s a period piece (in this case, the 1860s), everyone is endearingly upper-class, and proceedings are dominated at all times by an overriding sense of whimsy.
It is based on the true Victorian adventure story of scientist James Glaisher (Redmayne) and hot air balloon pilot Amelia Rennes (Felicity Jones) who team up to fly higher than any human has gone before, so Glaisher can prove his theories about predicting the weather, which have been roundly ridiculed by the academic establishment.
Redmayne and Jones also starred together in Stephen Hawking biopic The Theory of Everything, and at times The Aeronauts charts similar territory, with a serious, anorak type meeting an adorably kooky girl and getting a lesson in how to live a little.
Read more: Doctor Sleep film review: Returning to the Overlook Hotel is a joy in this mid-tier horror
The twee-ometer goes into overdrive once or twice, particularly in one bizarre scene with a kaleidoscope of butterflies (yes, that is the collective noun).
But at least the would-be love story that threatens to emerge is thrown out in favour of good old-fashioned Victorian adventuring. The closest we get is the tease of a kiss after the pair get thrown around in their basket when they pass through a storm, and the film is better for it. Jones is the driving force, constantly making us hold our breath with her vertiginous daredevil antics. Piloting a hot air balloon, it turns out, is terrifying.
It was a bit disappointing to find out that her character was actually made up, replacing Glaisher’s real-life flight partner Henry Coxwell – although Jones has said Rennes was an amalgam of several different male and female pilots of the time.
Thankfully, that doesn’t detract too much from this jovial jaunt through the skies in a wicker basket.


Sorry to change subject.
I have a scenario I'd like some direction on plz:
1. There are two addresses: Rxyz1 & Rxyz2
2. The blockchain is currently at block 10,000
3. I would like to create a rule where Rxyz1 can only send to Rxyz2 when the height is at 10,9XX.
4. In fact I am happy for Rxyz1 to send to Rxyz2 anytime in the blockchain life it is 100 blocks before the next thousand. e.g. 11,9XX, 12,9XX, ... ... 505,9XX
What is the best way?
5. Instead of 505,9XX can we use a method similar to "time based sapling activation" that says 100 blocks after 9am UTC the transaction will be valid.
6. Can we make transactions valid between set hours, e.g. 9am-5pm
?


I am a Computer Science MS Data Science & Engineering track student in University of Colorado Boulder. I am interested in building application and services. Experienced in leveraging frameworks to build deep learning models and analyze big data.
Coursework includes: Network Analysis & Modeling, Data Center Scale Computing
GPA: 3.63 / 4.0
Coursework includes: Data Science, Information Retrieval & Extraction, Machine Learning Project, Intelligent Surveillance, Design Thinking on Mobile Service
Apart from programming, I enjoy spending time doing outdoors sports. I am an avid basketball player, and enjoy trying all sort of sports including skiing, badminton, and table tennis.
When forced indoors, I love watching movies and tv series. I play the violin from time to time. During NBA season, I love gathering with friends to watch our favoriate teams' game. I often spend a lot of time learning new programming tools through Youtube channel and Blogs.


Jaafar Rammal
OUPS
We are still building this page. It will be available very soon
Sorry!
Back to main page


9 February 2004
Situation (human) in Viet Nam
Laboratory tests have confirmed an additional three cases of H5N1 in Viet Nam. All three cases were hospitalized in Ho Chi Minh City.

Altogether, Viet Nam has reported 18 laboratory confirmed cases, 13 of which were fatal.
Overview of the global situation: public health concerns
– The outbreaks of H5N1 avian influenza in poultry, currently reported in eight Asian countries, are historically unprecedented in their scale, geographical spread, and economic consequences for the agricultural sector.
– The risk is great that the H5N1 strain has become endemic in poultry populations of this geographical area.
– Infection in birds could spread to distant regions.
– To date, human cases have been reported in only two countries, Viet Nam and Thailand, with very widespread outbreaks in poultry.
– It can be anticipated that human cases will also be detected in other countries where outbreaks in poultry are spreading.
– Evidence to date suggests that the H5N1 strain is not easily transmitted from poultry to humans.
– Influenza viruses are genetically unstable and their behaviour cannot be predicted. The present situation could change very quickly.
– When a disease which affects an economically important sector of agriculture also poses a risk to human health, the risk to humans – however unpredictable – must not be minimized in the interest of maintaining consumer confidence.
– Measures aimed at eliminating the disease in poultry also reduce opportunities for human exposures and infections. These measures must be carried out urgently, giving highest priority to the protection of human health.
Correction
On 6 February, WHO reported the results from genetic sequencing of H5N1 viruses taken from two sisters in a family cluster in Viet Nam. The sequencing announced Friday by WHO showed that the two viruses were both entirely of avian origin with no human genes, indicating the viruses had not become adapted to be easily transmitted from one human to another.
Today, WHO has learned that the virus from only one sister has been sequenced, not both sisters. The second virus sequenced and reported was from another case in Viet Nam.
The virus from the second sister is being sequenced this week.


Dogs and cats have a reputation for being "man's best friends" for excellent reasons. They are wonderful companions. Many breeds, in addition to being affectionate, devoted members of the family, are useful workers and guardians. Help to rescue, donate, volunteer, foster, adopt, and be proud to have their greatness by your side.
This website is made for people who wants to adopt animals from Sunny Animal Shelter.
We have hundreds of animals available for adoption every day. If you are looking to add an awesome dog, cat or rabbit to your family, ACC is the right place to find your new furry friend. We have been matching pets with people for over 17 years, and when you visit one of our Shelters, our staff and volunteers will work with you to try to find your perfect loyal companion. Before adopting, we suggest you do your research on pet care and the right animal for your family, as this is a long-term decision. ACC has a wide variety of flyers available for your review and education.If you are looking for a particular breed, please be sure to fill out a Breed Request Form, Cat or Dog, and we will contact you by e-mail when your requested pure-bred dog or cat comes to one of our Shelters.Please note that we cannot guarantee that we will find what you are looking for since special breeds do get adopted very quickly at our Care Centers.
Sunny Animal Shelter
phone#:315-262-4837
<EMAIL_ADDRESS>adress:5217 90th St., Elmhurst, NY 11373


{% extends "root.html" %} {%- block inner %} {{super()}}
Upload the compressed ZIP file that contains your plugin.


google_charts.Rd
Google Charts can be displayed inside an info_window
info_window
When using a chart in an info_window
you need to use a list
with at least
two elements named data
and type
. You can also use a third element called options
for controlling the appearance of the chart.
You must also supply the id
argument to the layer your are adding (e.g. add_markers()
),
and the data
must have a column with the same name as the id
(and therefore
the same name as the id
column in the original data
supplied to the add_
function).
See the specific chart sections for details on how to structure the data
.
the type
element can be one of
area
bar
bubble
candlestick
column
combo
histogram
line
pie
scatter
data
An area chart requires a data.frame
of at least three columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third or more columns: the data used in the chart
type - area
options see the area charts documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/areachart
Each row of data represents a data point at the same x-axis location
data
A bar chart requires a data.frame
of at least three columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third or more columns: the data used in the chart
type - bar
options
See the bar chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/barchart
data
A bubble chart requires a data.frame
of at least four, and at most six columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third column: x-axis value
Fourth column: y-axis value
Fith column: visualised as colour
Sixth column: visualised as size
type - bubble
options
See the bubble chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/bubblechart
data
A candlestick chart requires a data.frame
of at least six columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third column: Number specifying the 'low' number for the data
Fourth column: Number specifying the opening/initial value of the data. This is one vertical border of the candle. If less than the column 4 value, the candle will be filled; otherwise it will be hollow.
Fith column: Number specifying the closing/final value of the data. This is the second vertical border of the candle. If less than the column 3 value, the candle will be hollow; otherwise it will be filled.
Sixth column: Number specifying the high/maximum value of this marker. This is the top of the candle's center line.
type - candlestick
options
See the candlestick chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/candlestickchart
data
A column chart requires a data.frame
of at least three columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third or more columns: the data used in the chart
type - column
options
See the column chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/columnchart
A combo chart lets you render each series as a different marker type from the following list: line, area, bars, candlesticks, and stepped area.
data
A combo chart requires a data.frame
of at least three columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third or more columns: the data used in the chart
type - combo
options
See the column chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/combochart
data
A histogram chart requires a data.frame
of at least three columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third or more columns: the data used in the chart
type - histogram
options
See the histogram chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/histogram
data
A line chart requires a data.frame
of at least three columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third or more columns: the data used in the chart
type - line
options
See the line chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/linechart
data
A pie chart requires a data.frame
of three columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third column: the data used in the chart
type - pie
options
See the pie chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/piechart
data
A scatter chart requires a data.frame
of at least four columns:
First column: a column of id values, where the column has the same name as the
id column in the data
argument, and therefore the same name as the value supplied
to the id
argument.
Second column: variable names used for labelling the data
Third column: the data plotted on x-axis
Fourth or more columns: the data plotted on y-axis
type - scatter
options
See the scatter chart documentation for various other examples https://developers.google.com/chart/interactive/docs/gallery/scatterchart
# NOT RUN { set_key("your_api_key") ## AREA markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 2), year = rep( c("year1", "year2")), arrivals = sample(1:100, size = nrow(tram_stops) * 2, replace = T), departures = sample(1:100, size = nrow(tram_stops) * 2, replace = T)) chartList <- list(data = markerCharts, type = 'area', options = list(width = 400, chartArea = list(width = "50%"))) google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") tram_route$id <- c(rep(1, 30), rep(2, 25)) lineCharts <- data.frame(id = rep(c(1,2), each = 2), year = rep( c("year1", "year2") ), arrivals = sample(1:100, size = 4), departures = sample(1:100, size = 4)) chartList <- list(data = lineCharts, type = 'area') google_map() %>% add_polylines(data = tram_route, id = 'id', stroke_colour = "id", stroke_weight = 10, lat = "shape_pt_lat", lon = "shape_pt_lon", info_window = chartList ) # }# NOT RUN { ## BAR markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 2), year = rep( c("year1", "year2")), arrivals = sample(1:100, size = nrow(tram_stops) * 2, replace = T), departures = sample(1:100, size = nrow(tram_stops) * 2, replace = T)) chartList <- list(data = markerCharts, type = 'bar') google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") lineChart <- data.frame(id = 33, year = c("year1","year2"), val1 = c(1,2), val2 = c(2,1)) chartList <- list(data = lineChart, type = 'bar') google_map() %>% add_polylines(data = melbourne[melbourne$polygonId == 33, ], polyline = "polyline", info_window = chartList) # }# NOT RUN { ## BUBBLE markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 4), ID = sample(letters, size = nrow(tram_stops) * 4, replace = T), time = sample(1:1440, size = nrow(tram_stops) * 4, replace = T), passengers = sample(1:100, size = nrow(tram_stops) * 4, replace = T), year = c("year1", "year2", "year3", "year4"), group = sample(50:100, size = nrow(tram_stops) * 4, replace = T)) chartList <- list(data = markerCharts, type = 'bubble') google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") # }# NOT RUN { ## CANDLESTICK markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 5), day = rep(c("Mon", "Tues", "Weds", "Thurs", "Fri"), times = nrow(tram_stops) ), val1 = rep(c(20, 31, 50, 77, 68), times = nrow(tram_stops) ), val2 = rep(c(28, 38, 55, 77, 66), times = nrow(tram_stops) ), val3 = rep(c(38, 55, 77, 66, 22), times = nrow(tram_stops) ), val4 = rep(c(45, 66, 80, 50, 15), times = nrow(tram_stops) ) ) chartList <- list(data = markerCharts, type = 'candlestick', options = list(legend = 'none', bar = list(groupWidth = "100%"), candlestick = list( fallingColor = list( strokeWidth = 0, fill = "#a52714"), risingColor = list( strokeWidth = 0, fill = "#0f9d58") ) )) google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") # }# NOT RUN { ## COLUMN markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 2), year = rep( c("year1", "year2")), arrivals = sample(1:100, size = nrow(tram_stops) * 2, replace = T), departures = sample(1:100, size = nrow(tram_stops) * 2, replace = T)) chartList <- list(data = markerCharts, type = 'column') google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") polyChart <- data.frame(id = 33, year = c("year1","year2"), val1 = c(1,2), val2 = c(2,1)) chartList <- list(data = polyChart, type = 'column') google_map() %>% add_polygons(data = melbourne[melbourne$polygonId == 33, ], polyline = "polyline", info_window = chartList) tram_route$id <- 1 polyChart <- data.frame(id = 1, year = c("year1","year2"), val1 = c(1,2), val2 = c(2,1)) chartList <- list(data = polyChart, type = 'column') google_map() %>% add_polygons(data = tram_route, lon = "shape_pt_lon", lat = "shape_pt_lat", info_window = chartList) # }# NOT RUN { ## COMBO markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 2), year = rep( c("year1", "year2")), arrivals = sample(1:100, size = nrow(tram_stops) * 2, replace = T), departures = sample(1:100, size = nrow(tram_stops) * 2, replace = T)) markerCharts$val <- sample(1:100, size = nrow(markerCharts), replace = T) chartList <- list(data = markerCharts, type = 'combo', options = list( "title" = "Passengers at stops", "vAxis" = list( title = "passengers" ), "hAxis" = list( title = "load" ), "seriesType" = "bars", "series" = list( "2" = list( "type" = "line" )))) ## 0-indexed google_map() %>% add_circles(data = tram_stops, info_window = chartList, id = "stop_id") # }# NOT RUN { ## HISTOGRAM markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 20), day = as.character(1:20)) markerCharts$wait <- rnorm(nrow(markerCharts), 0, 1) chartList <- list(data = markerCharts, type = 'histogram') google_map() %>% add_circles(data = tram_stops, info_window = chartList, id = "stop_id") # }# NOT RUN { ## Line markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 20), day = as.character(1:20), value = sample(1:100, size = nrow(tram_stops) * 20, replace = T)) chartList <- list(data = markerCharts, type = 'line') google_map() %>% add_circles(data = tram_stops, info_window = chartList, id = "stop_id") # }# NOT RUN { ## PIE markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 3)) markerCharts$variable <- c("yes", "no", "maybe") markerCharts$value <- sample(1:10, size = nrow(markerCharts), replace = T) chartList <- list(data = markerCharts, type = 'pie', options = list(title = "my pie", is3D = TRUE, height = 240, width = 240, colors = c('#440154', '#21908C', '#FDE725'))) google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") ## use pieHole option to make a donut chart chartList <- list(data = markerCharts, type = 'pie', options = list(title = "my pie", pieHole = 0.4, height = 240, width = 240, colors = c('#440154', '#21908C', '#FDE725'))) google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") # }# NOT RUN { ## SCATTER markerCharts <- data.frame(stop_id = rep(tram_stops$stop_id, each = 5)) markerCharts$arrival <- sample(1:10, size = nrow(markerCharts), replace = T) markerCharts$departure <- sample(1:10, size = nrow(markerCharts), replace = T) chartList <- list(data = markerCharts, type = 'scatter') google_map() %>% add_markers(data = tram_stops, info_window = chartList, id = "stop_id") # }


The Composable Enterprise
We have witnessed a major shift over recent decades towards a digital services based economy. Exponential growth in the power of information technology enhanced by Internet driven network effects mean that even the most mundane manufactured products are seen as just one component of a broader digital services based value chain.
The shift to digital services has transformed the global competitive landscape. Maintaining competitive differentiation requires continuous innovation – and lifecycles are contracting. In other words change is a constant. The dynamics of a hyper-competitive global market mean that static and long-lived models of company structure, operations and information technology services are no longer fit for purpose. We need a new operating model for the enterprise.
It is a reality of business today that supplier relationships, logistics networks, product and service design and customer service all survives in a state of permanent flux. Any path to sustainable competitive advantage will require a high degree of operational adaptability.
Business functions, processes, organizations, supplier relationships and technology need to be seen as building blocks that can be re–configured as needed to address changing competitive landscape. This new Component Operating Model (COM) requires a ‘Lego Brick’ approach to designing and implementing processes and the organizations that support them.
Implementing a COM based approach will have profound impacts on the structure of organizations, the nature of work. Business designs based on COM will create significant stress for traditional IT infrastructures and organizations. Our current IT services were built to serve a static – and often functionally silo’d – operating model.
IT needs to become much more dynamically adaptable to keep pace with the speed of business today. A new Component Architecture Model (CAM) approach to IT infrastructure, applications and services will be required to ensure that IT can deliver what the business needs.
The time between identifying a business need and delivering the required IT solution needs to becomes hours and days rather than months and years. The ‘Ying and Yang’ of COM and CAM is a radical departure from the discontinuities of the past. We are about to enter an era where - for the first time - business and technology operating models can be seamlessly aligned to enable fast, flexible response to a rapidly changing competitive landscapes.
Combining the approaches of both COM and CAM will enable us to view the entire portfolio of business functions, processes, organizations, relationships and technology as a set of re-usable components that can be configured as demanded. Welcome to the Composable Enterprise™.
Radical Change
Most companies would consider the Composable Enterprise Model™ (CEM)radical today. And yet its difficult to imagine how more static approaches to business operations will survive in an increasingly dynamic and competitive global economy.
A ‘chasm’ already exists between those companies that grew-up-digital and those more traditional companies attempting to adapt to new digital markets. Companies such as Amazon have always had to deal with hyper-competition and constant, fast-cycle change.
Amazon’s approach to building out its retail business is driven by a deep understanding of digital business dynamics. Amazon is perhaps the closest proxy for a Composable Enterprise™ today and that makes it a formidable competitor for traditional ‘Bricks and Mortar’ retailers.
Building a _Composable Enterprise™ _operating model - where functions and processes can be continually re-configured with low cost and operational impact - raises significant challenges. The two greatest of these will undoubtedly be organization and technology. This is change management in extremis. Change of this magnitude requires visionary and forceful top-down leadership.
Implementing the Composable Enterprise approach is not going to happen from the bottom-up. The level of disruption in most organizations will require a vision to which staff can aspire. The greater the change the more compelling that vision will need to be. Companies are unlikely to find that they have a large proportion of staff with the skills and capability to build, operate and thrive in the Composable Enterprise™ model.
Significant re-skilling will be required. Many already-digital businesses are likely to find that the demands placed on IT by the Composable Enterprise™ modelfar exceed the capabilities of existing systems and application landscapes. This will be amplified for company’s attempting to transform from more traditional ‘analog’ business models.
The vast majority of IT systems in existence were designed for static business models and not for fast re-configuration of business processes, data flows and interconnection between disparate functions. As I will describe below the radical CEM based approach will require a radical technology fabric to match.
The Component Organization Model
Successful re-configuration of a company’s organization and processes to support the Composable Enterprise approach will require a radical departure from historic models of organization and process design.
The new Component Operating Model approach requires us to break processes and the organizations that manage them into their most fundamental building blocks. COM is based on the following key design principles that aim to maximize adaptability and the speed with which new processes can be configured and enhanced.
The Minimal Function – Compound business processes are broken down into the minimized set of ‘atomic’ functions. Each function can accomplish some aspect of the process independently of other functions and consists of the smallest organization possible to accomplish the function. The purpose of this principle is to ensure that individual functions can be improved or replaced while minimizing impact to the wider organization and business process.
Least Dependency – Individual business functions should be designed to minimize dependency on any other function. This principle ensures that failures in a single function do not bring the entire process to a halt. Process steps such as authorizations should be asynchronous to avoid creating serial dependencies.
_Shared Knowledge – _Knowledge (Data, information and context) is a resource shared across all functions. Data governance and security policies should be designed to maximize safe access to data to the broadest audience. Functions are prohibited from maintaining ‘Private’ data sets. The holding and protection of ‘private’ knowledge is one of the key barriers to organizational agility. When knowledge is not openly shared then individual functions can create dependencies on their existence even when that is not optimal for the overall business.
_Predictable Contracts – _Each function defines the information and authorizations it requires, what work product will be output and provides quantified performance guarantees. This approach aims to minimize the governance and supervisory overhead that are often layered into organizations to overcome a lack of predictability and performance between business functions.
Maximized Human Value – Human resource should be applied only to those tasks that cannot be automated: Front-line customer/partner engagement and service and where insight, analysis and qualitative decision making is required etc. This approach has two payoffs. It minimizes overall human resource expense and maximizes the value of roles in the business leading to higher job satisfaction and lower attrition.
We do not yet delve into appropriate governance approaches for COM but it is clear that ‘Kanban’ would be the most effective approach to overall process control in the Composed Enterprise™ operating model. A ‘Pull-through’ demand-forecasting approach should maximize the efficiency of the overall production process.
What is truly radical about CEM is – finally – for there to be an intimate and fully aligned relationship between business and IT. This has never existed in the history of enterprise computing. From the days of IT staff in white lab coats managing huge mainframe computers to the present highly distributed and virtualized application environments – IT has never been able to keep pace with the demands of the business.
The Component Architecture Model
Technology provides the ‘fabric’ – infrastructure, applications and services - that underpin CEM. Information is the lifeblood of any value chain in today’s global economy and that ‘blood supply’ should connect the farthest reaches of company’s global business processes.
The dynamic and configurable nature of the Composable Enterprise™ operating model places significant demands on the underlying technology fabric. This is likely to mean a radical departure from the legacy IT infrastructures and applications portfolios found inside most organizations today.
The majority of legacy IT environments were built to support a much more static business model. It was assumed that business processes would remain unchanged for long periods or at least be subject to only minor modifications. Applications were generally designed to support the needs of functional silos within the business: Manufacturing, Finance, Sales, Supply-chain, Marketing, and Human-Resources etc. The growing need to build horizontally integrated processes between these functions has significantly challenged IT organizations and budgets over the last decade.
The Composable Enterprise™ business model takes horizontal process integration to an entirely new level by assuming that operating functions; processes, products and services will be subject to continuous change and re-configuration. Enabling the Composable Operating Model will require a radically new approach to enterprise IT. In effect the COM will require a matching Composable IT Architecture. The key attributes and capabilities for such Composable Architecture Model (CAM) would be: Elastic Infrastructure – The ability to scale up and down IT infrastructure resources based on changing demand patterns. Component Service based Applications –
Implementation of business applications as a ‘Composition’ of finer grained ‘atomic’ services to enable rapid re-configuration and enhancement. This capability when combined with Elastic Infrastructure enables business applications and services to be scaled rapidly to meet the changing consumer or business demands.
Auto Everything – The technology fabric should be architected to require the minimum of human intervention. Dynamic re-configuration of services, elastic resource provisioning and operations should be fully automated.
Unified Master Data Model – Implementation of a business defined and governed master data model providing a single-source-of data truth across the business.
Integrated Analytics – All data to be used by the business for decision-making, consumer and market insights, process and operational analytics should be aggregated in one integrated repository. This ensures a single-source-of-truth for all data based business decisions.
People Services – The fabric should expose core services that enable role-based user authentication and user profile management to facilitate expertise discovery and rapid organizational re-configuration.
Process Services - The fabric should expose core services that facilitate process monitoring and workflow integration to facilitate rapid process re-configuration.
Data Services - All master and analytics data should be accessible through standards based data access services and should be consumable in both human and machine accessible form. Any Time, Anywhere, Any Device Access – Operational applications should be made available using a web based ‘Software as a Service’ (SaaS) delivery model accessible from any device capable of running a modern web browser.
The purpose of these requirements is to ensure that IT applications and services can be managed and delivered with the same level of granularity as the business functions that use them.
The Enterprise as a Service
The CEM approach is based on the need to ensure seamless alignment between business operations and IT services because no matter how mundane – all business is digital today.
Historic disconnects between IT and the business - from a function and rate of change perspective - are addressed under the CEM approach by creating structural alignment between business operations and the technology architecture.
The design principles behind COM and CAM are identical: Decompose everything to the most ‘atomic’ level, enable independent execution, interoperate through clearly defined interfaces and share information openly. It does not matter whether you are designing a business function or software component the same principles apply.
The purpose behind these high level principles is straight forward – even if implementation may not be: To facilitate, rapid adaptability, response to changing demand patterns and flexible and robust operations.
Implementation of CEM requires the implementation of both COM and CAM. Combining COM and CAM enables us to view the Enterprise as a Service: A matched portfolio of functional, organizational and technology components that enable rapid re-configuration in response to future demands of a modern digital services economy.


Saint Altar:
At last, the third Altar of Saints! No less forbidding than the first two!
Sprinkle the Blood of Saint.


Scrawl.js
- demonstration 415
Scrawl filters - separate
Extensions: images, filters, animation
Alpha
Channel
red
green
blue
yellow
cyan
magenta
Scenario:
???
Actions:
???
Known browser issues:
???
Result images:


Important details in Mandela's life
- Born July 18, 1918 in the South African village of Mvezo
- 1939 Attended Univeristy of Fort Hare
- Established African National Congress Youth League in 1944
- Led 1953 campaign for the Defiance of Unjust Laws
- In 1962 the Apartheid Government banned the ANC
- Arrested in 1962 for treason and sent to Robben Island Prison
- Released from prison in 1990 by FW DeKlerk
- Elected President of South Africa in 1994
- United Nations declared July 18 "Nelson Mandela Day"
- Died on December 5, 2013 from a lung infection


CakePHP provides a wrapper and suite of utility features on top of PHP’s native
session
extension. Sessions allow you to identify unique users across
requests and store persistent data for specific users. Unlike Cookies, session
data is not available on the client side. Usage of $_SESSION
is generally
avoided in CakePHP, and instead usage of the Session classes is preferred.
Session configuration is generally defined in /config/app.php
. The available
options are:
Session.timeout
- The number of minutes before CakePHP’s session
handler expires the session.Session.defaults
- Allows you to use the built-in default session
configurations as a base for your session configuration. See below for the
built-in defaults.Session.handler
- Allows you to define a custom session handler. The core
database and cache session handlers use this. See below for additional
information on Session handlers.Session.ini
- Allows you to set additional session ini settings for your
config. This combined with Session.handler
replace the custom session
handling features of previous versionsSession.cookie
- The name of the cookie to use. Defaults to ‘CAKEPHP’.Session.cookiePath
- The url path for which session cookie is set. Maps to
the session.cookie_path
php.ini config. Defaults to base path of app.CakePHP’s defaults session.cookie_secure
to true
, when your application
is on an SSL protocol. If your application serves from both SSL and non-SSL
protocols, then you might have problems with sessions being lost. If you need
access to the session on both SSL and non-SSL domains you will want to disable
this:
Configure::write('Session', [
'defaults' => 'php',
'ini' => [
'session.cookie_secure' => false
]
]);
The session cookie path defaults to app’s base path. To change this you can use
the session.cookie_path
ini value. For example if you want your session to
persist across all subdomains you can do:
Configure::write('Session', [
'defaults' => 'php',
'ini' => [
'session.cookie_path' => '/',
'session.cookie_domain' => '.yourdomain.com'
]
]);
By default PHP sets the session cookie to expire as soon as the browser is
closed, regardless of the configured Session.timeout
value. The cookie
timeout is controlled by the session.cookie_lifetime
ini value and can be
configured using:
Configure::write('Session', [
'defaults' => 'php',
'ini' => [
// Invalidate the cookie after 30 minutes without visiting
// any page on the site.
'session.cookie_lifetime' => 1800
]
]);
The difference between Session.timeout
and the session.cookie_lifetime
value is that the latter relies on the client telling the truth about the
cookie. If you require stricter timeout checking, without relying on what the
client reports, you should use Session.timeout
.
Please note that Session.timeout
corresponds to the total time of
inactivity for a user (i.e. the time without visiting any page where the session
is used), and does not limit the total amount of minutes a user can stay
on the site.
CakePHP comes with several built-in session configurations. You can either use these as the basis for your session configuration, or you can create a fully custom solution. To use defaults, simply set the ‘defaults’ key to the name of the default you want to use. You can then override any sub setting by declaring it in your Session config:
Configure::write('Session', [
'defaults' => 'php'
]);
The above will use the built-in ‘php’ session configuration. You could augment part or all of it by doing the following:
Configure::write('Session', [
'defaults' => 'php',
'cookie' => 'my_app',
'timeout' => 4320 // 3 days
]);
The above overrides the timeout and cookie name for the ‘php’ session configuration. The built-in configurations are:
php
- Saves sessions with the standard settings in your php.ini file.cake
- Saves sessions as files inside tmp/sessions
. This is a
good option when on hosts that don’t allow you to write outside your own home
dir.database
- Use the built-in database sessions. See below for more
information.cache
- Use the built-in cache sessions. See below for more information.Session handlers can also be defined in the session config array. By defining
the ‘handler.engine’ config key, you can name the class name, or provide
a handler instance. The class/object must implement the
native PHP SessionHandlerInterface
. Implementing this interface will allow
Session
to automatically map the methods for the handler. Both the core
Cache and Database session handlers use this method for saving sessions.
Additional settings for the handler should be placed inside the handler array.
You can then read those values out from inside your handler:
'Session' => [
'handler' => [
'engine' => 'DatabaseSession',
'model' => 'CustomSessions'
]
]
The above shows how you could setup the Database session handler with an
application model. When using class names as your handler.engine, CakePHP will
expect to find your class in the Network\Session
namespace. For example, if
you had an AppSessionHandler
class, the file should be
src/Network/Session/AppSessionHandler.php, and the class name should be
App\Network\Session\AppSessionHandler
. You can also use session handlers
from inside plugins. By setting the engine to MyPlugin.PluginSessionHandler
.
If you need to use a database to store your session data, configure as follows:
'Session' => [
'defaults' => 'database'
]
This configuration requires a database table, having this schema:
CREATE TABLE `sessions` (
`id` char(40) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`created` datetime DEFAULT CURRENT_TIMESTAMP, -- Optional
`modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- Optional
`data` blob DEFAULT NULL, -- for PostgreSQL use bytea instead of blob
`expires` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
You can find a copy of the schema for the sessions table in the application skeleton in config/schema/sessions.sql
.
You can also use your own Table
class to handle the saving of the sessions:
'Session' => [
'defaults' => 'database',
'handler' => [
'engine' => 'DatabaseSession',
'model' => 'CustomSessions'
]
]
The above will tell Session to use the built-in ‘database’ defaults, and
specify that a Table called CustomSessions
will be the delegate for saving
session information to the database.
The Cache class can be used to store sessions as well. This allows you to store sessions in a cache like APC, Memcached, or XCache. There are some caveats to using cache sessions, in that if you exhaust the cache space, sessions will start to expire as records are evicted.
To use Cache based sessions you can configure you Session config like:
Configure::write('Session', [
'defaults' => 'cache',
'handler' => [
'config' => 'session'
]
]);
This will configure Session to use the CacheSession
class as the
delegate for saving the sessions. You can use the ‘config’ key which cache
configuration to use. The default cache configuration is 'default'
.
The built-in defaults attempt to provide a common base for session
configuration. You may need to tweak specific ini flags as well. CakePHP
exposes the ability to customize the ini settings for both default
configurations, as well as custom ones. The ini
key in the session settings,
allows you to specify individual configuration values. For example you can use
it to control settings like session.gc_divisor
:
Configure::write('Session', [
'defaults' => 'php',
'ini' => [
'session.cookie_name' => 'MyCookie',
'session.cookie_lifetime' => 1800, // Valid for 30 minutes
'session.gc_divisor' => 1000,
'session.cookie_httponly' => true
]
]);
Creating a custom session handler is straightforward in CakePHP. In this example we’ll create a session handler that stores sessions both in the Cache (APC) and the database. This gives us the best of fast IO of APC, without having to worry about sessions evaporating when the cache fills up.
First we’ll need to create our custom class and put it in src/Network/Session/ComboSession.php. The class should look something like:
namespace App\Network\Session;
use Cake\Cache\Cache;
use Cake\Core\Configure;
use Cake\Network\Session\DatabaseSession;
class ComboSession extends DatabaseSession
{
public $cacheKey;
public function __construct()
{
$this->cacheKey = Configure::read('Session.handler.cache');
parent::__construct();
}
// Read data from the session.
public function read($id)
{
$result = Cache::read($id, $this->cacheKey);
if ($result) {
return $result;
}
return parent::read($id);
}
// Write data into the session.
public function write($id, $data)
{
Cache::write($id, $data, $this->cacheKey);
return parent::write($id, $data);
}
// Destroy a session.
public function destroy($id)
{
Cache::delete($id, $this->cacheKey);
return parent::destroy($id);
}
// Removes expired sessions.
public function gc($expires = null)
{
return Cache::gc($this->cacheKey) && parent::gc($expires);
}
}
Our class extends the built-in DatabaseSession
so we don’t have to duplicate
all of its logic and behavior. We wrap each operation with
a Cake\Cache\Cache
operation. This lets us fetch sessions from
the fast cache, and not have to worry about what happens when we fill the cache.
Using this session handler is also easy. In your app.php make the session
block look like the following:
'Session' => [
'defaults' => 'database',
'handler' => [
'engine' => 'ComboSession',
'model' => 'Session',
'cache' => 'apc'
]
],
// Make sure to add a apc cache config
'Cache' => [
'apc' => ['engine' => 'Apc']
]
Now our application will start using our custom session handler for reading and writing session data.
Session
¶You can access the session data any place you have access to a request object. This means the session is accessible from:
In addition to the basic session object, you can also use the
Cake\View\Helper\SessionHelper
to interact with the session in
your views. A basic example of session usage would be:
$name = $this->request->session()->read('User.name');
// If you are accessing the session multiple times,
// you will probably want a local variable.
$session = $this->request->session();
$name = $session->read('User.name');
Session::
read
($key)¶You can read values from the session using Hash::extract()
compatible syntax:
$session->read('Config.language');
Session::
write
($key, $value)¶$key
should be the dot separated path you wish to write $value
to:
$session->write('Config.language', 'en');
You may also specify one or multiple hashes like so:
$session->write([
'Config.theme' => 'blue',
'Config.language' => 'en',
]);
Session::
delete
($key)¶When you need to delete data from the session, you can use delete()
:
$session->delete('Some.value');
Session::
consume
($key)¶When you need to read and delete data from the session, you can use
consume()
:
$session->consume('Some.value');
Session::
check
($key)¶If you want to see if data exists in the session, you can use check()
:
if ($session->check('Config.language')) {
// Config.language exists and is not null.
}
Session::
destroy
()¶Destroying the session is useful when users log out. To destroy a session, use
the destroy()
method:
$session->destroy();
Destroying a session will remove all serverside data in the session, but will not remove the session cookie.


| DEPARTING: | Today () | Flexible date | |
| COUNTRY — | CITY — | ||
| FROM: |
|
||
| TO: |
|
||
|
|
Click on globe to select locations or enter country and city.
SELECT FLOATING ALTITUDE using the slider. This mode calculates only fixed-altitude flight.
Changing wind speed and direction means departure time can significantly affect the flight path. You will see eight trajectories starting from the same spot, but launched on successive days.
Color-coded by departure date:
today,
tomorrow,
2 days,
3 days,
4 days,
5 days,
6 days,
7 days.


Transfer Window Countdown: 7 Players Who Are On Sundowns’ Radar…
by Soccer LadumaMamelodi Sundowns have arguably the strongest squad in the Premier Soccer League, however, Siya sources have over the past months, revealed that the Brazilians are still eyeing a number of players who could become new additions.
The January transfer window is just over a month away, where after the halfway mark in the season, clubs will get the opportunity to reshuffle and strengthen their squads.
While a number of players at the Brazilians are being linked with an exit, Soccer Laduma takes a look at seven of the players who have been linked with a move to the Chloorkop-based club.
As reported in this week’s edition of Soccer Laduma, Thabo Nodada is being eyed up by the Brazilians as a possible midfield addition, although Cape Town City are expected to shake off any local interest in the player.
Read more: 11 Players From Chiefs And Co Who Could Leave In January
Thamsanqa Mkhize and Edmilson Dove are two more players at the Citizens who have also caught Sundowns’ interest, despite their full-back positions of not much concern at the moment.
Although having Mauricio Affonso, Tokelo Rantie, Jose Ali Meza, Phakamani Mahlambi and Emiliano Tade upfront, the Brazilians have still been monitoring SuperSport United’s, Bradley Grobler, who is one of the top goal-scorers this season.
George Maluleka has also previously caught the eye of Sundowns and with the player’s contract with Chiefs coming to an end on June 30 next year, it remains to be seen whether the Brazilians could revisit their interest in the player before Chiefs land his signature on a new deal.
Also at SuperSport, Tebogo Mokoena and Aubrey Modiba have long been on Sundowns’ radar, although Matsatsantsa are yet to budge on local interest in the duo.


--- ---
Returns the list of views on the page containing loaded content.
Returns the list of views on the page containing loaded content.
Returns an array of fully-qualified view names.
Returns the list of views currently available on the page, by fully-qualified name.
Returns the list of views currently available on the page, by fully-qualified name.
Returns an array of fully-qualified view names.
Deactivates a ViewConfig.
Deactivates a ViewConfig.
This function deactivates a ViewConfig
.
After calling sync, it will un-pair from any ui-view
with which it is currently paired.
The ViewConfig view to deregister.
Registers a ui-view
component
Registers a ui-view
component
When a ui-view
component is created, it uses this method to register itself.
After registration the sync method is used to ensure all ui-view
are configured with the proper ViewConfig.
Note: the ui-view
component uses the ViewConfig
to determine what view should be loaded inside the ui-view
,
and what the view's state context is.
Note: There is no corresponding deregisterUIView
.
A ui-view
should hang on to the return value of registerUIView
and invoke it to deregister itself.
The metadata for a UIView
a de-registration function used when the view is destroyed.
Given a ui-view and a ViewConfig, determines if they "match".
Given a ui-view and a ViewConfig, determines if they "match".
A ui-view has a fully qualified name (fqn) and a context object. The fqn is built from its overall location in the DOM, describing its nesting relationship to any parent ui-view tags it is nested inside of.
A ViewConfig has a target ui-view name and a context anchor. The ui-view name can be a simple name, or can be a segmented ui-view path, describing a portion of a ui-view fqn.
In order for a ui-view to match ViewConfig, ui-view's $type must match the ViewConfig's $type
If the ViewConfig's target ui-view name is a simple name (no dots), then a ui-view matches if:
If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:
Example:
DOM:
uiViews: [ { fqn: "$default", creationContext: { name: "" } }, { fqn: "$default.foo", creationContext: { name: "A" } }, { fqn: "$default.foo.$default", creationContext: { name: "A.B" } } { fqn: "$default.foo.$default.bar", creationContext: { name: "A.B.C" } } ]
These four view configs all match the ui-view with the fqn: "$default.foo.$default.bar":
Using ViewConfig3 as an example, it matches the ui-view with fqn "$default.foo.$default.bar" because:
Normalizes a view's name from a state.views configuration block.
Normalizes a view's name from a state.views configuration block.
This should be used by a framework implementation to calculate the values for _ViewDeclaration.$uiViewName and _ViewDeclaration.$uiViewContextAnchor.
the context object (state declaration) that the view belongs to
the name of the view, as declared in the StateDeclaration.views
the normalized uiViewName and uiViewContextAnchor that the view targets
Generated using TypeDoc
The View service
This service pairs existing
ui-view
components (which live in the DOM) with view configs (from the state declaration objects: StateDeclaration.views).After a successful Transition, the views from the newly entered states are activated via activateViewConfig. The views from exited states are deactivated via deactivateViewConfig. (See: the registerActivateViews Transition Hook)
As
ui-view
components pop in and out of existence, they register themselves using registerUIView.When the sync function is called, the registered
ui-view
(s) (ActiveUIView) are configured with the matching ViewConfig(s)


jsconsole.com is a simple JavaScript command line tool. However, it also provides the ability to bridge across to other browser windows to remotely control and debug that window - be it in another browser or another device altogether.
In fact, mobile web app debugging is so damn tricky, that I gave up, and decided to build this very tool instead. See the videos examples if you'd rather see this in action now.
To create a new session, in the jsconsole prompt, simply run:
:listen
This will yield a unique key along the lines of FAE031CD-74A0-46D3-AE36-757BAB262BEA
. Now using this unique key, include a <script>
anywhere in the web app that you wish to debug:
<script src="https://jsconsole.com/remote.js?FAE031CD-74A0-46D3-AE36-757BAB262BEA"></script>
Now any calls to console.log
from your web app will display the result in the jsconsole session that is listening to your key. Equally, if you run a command in the jsconsole session, the code will injected in to your web app and the result returned to jsconsole.
In addition to generating a new code with :listen
, you can also ask jsconsole to listen to a predefined code (but for your own security, try to chose something unique that only you know):
:listen FAE031CD-74A0-46D3-AE36-757BAB262BEA
Now I can use the same remote key in my web app to avoid having to regenerate a new code each time. Note that only the last remote client (i.e. your web app) to connect to jsconsole will recieve remote debug calls - previous windows will be ignored.
To know when the web app has connected, jsconsole will notify you by showing your the userAgent
string for the device:
:listen FAE031CD-74A0-46D3-AE36-757BAB262BEA
Creating connection...
Connected to "FAE031CD-74A0-46D3-AE36-757BAB262BEA"
Connection established with Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-GB; rv:<IP_ADDRESS>) Gecko/20100722 Firefox/3.6.8
Note that this technique is also injecting code directly in to your web app - this tool should only be used for debugging. I can't take respibility for how you use this tool, basically: take care!
Remote debugging has been developed to work on all platforms, even if the technology isn't supported. However, jsconsole remote debugging has specifically tested and working on the follow mobile devices (feel free to add to this list):


B
ERKSHIRE
H
ATHAWAY INC.
3555 Farnam Street
Omaha, NE 68131
Official Home Page
A Message from Warren E Buffett
New Releases
Updated November 6, 2015
Annual & Interim Reports
Updated November 6, 2015
Warren Buffett's Letters to Berkshire Shareholders
Updated February 28, 2015
Special Letters From Warren & Charlie RE:Past, Present and Future
Charlie Munger's Letters to Wesco Shareholders
Link to SEC Filings
Annual Meeting Information
Links to Berkshire Subsidiary Companies
Celebrating 50 Years of a Profitable Partnership
(A commemorative book first sold at the 2015 Annual Meeting and now for sale on eBay.)
Corporate Governance
Comparative Rights and Relative Prices of Class A and B Stock
Owner's Manual
Berkshire Activewear
Letters from Warren E. Buffett Regarding Pledges to Make Gifts of Berkshire Stock


---
layout: post
title: Open Source for Non-Geeks
tags:
- Open Source Software
status: publish
type: post
published: true
meta: {}
---
My colleague Simon, who is self confessed suit-compliant human, was pleased to be able to install our Open source product without problems in an hour on our server.
I think this illustrates a trend that has been evident for some time -- Open source software is now ready for the mainstream and can be used by anyone. To be sure there are bad examples of the art, however that applies across the whole software industry unfortunatly.
Can world domination be far away? :-).


Hi, my name is Rafael Brahmantya and im a selftaught
Frontend Web Developer. Im a Junior Highschool Student
and i currently live in Bali, Indonesia.
I learned Javascript, CSS, and HTML, oh yeah fun fact, i
made this web with a CSS framework named Bootstrap, and
yeah
pretty good right !


MBBlinkIdOverlayViewController
public class MBBlinkIdOverlayViewController : MBCustomOverlayViewController
MBBlinkIdOverlayViewController
contains the UI of BlinkIDUI
module.
It contains UI components that guide user through scanning process.
Main components are:
MBViewfinderView
DocumentSelection
storyboard which presents the user with a way to change the type of document they are scanning.Buttons to turn on/off the torch and dismiss the BlinkIDUI
view controller.
Note
Most of the UI aspects are customizable either by changing the properties defined through extensions of UIFont
and UIColor
presented in MBTheme
file, or by changing the various properties through MBBlinkSettings
sharedInstance.
-
Initializes the viewcontroller defined in
MBBlinkIDOverlay.storyboard
.Declaration
Swift
public class func initFromStoryboard() -> MBBlinkIdOverlayViewController
-
Declaration
Swift
override public func viewDidLoad()
-
Declaration
Swift
public override func viewDidAppear(_ animated: Bool)
-
Declaration
Swift
override public func viewWillAppear(_ animated: Bool)
-
Declaration
Swift
public override func viewWillDisappear(_ animated: Bool)
-
Declaration
Swift
override public func viewDidLayoutSubviews()
-
Declaration
Swift
public override func prepare(for segue: UIStoryboardSegue, sender: Any?)
-
Declaration
Swift
public func recognizerRunnerViewController(_ recognizerRunnerViewController: UIViewController & MBRecognizerRunnerViewController, didFinishGlareDetectionWithResult glareFound: Bool)
-
Declaration
Swift
public func recognizerRunnerViewController(_ recognizerRunnerViewController: UIViewController & MBRecognizerRunnerViewController, didFinishDetectionWithDisplayablePoints displayablePoints: MBDisplayablePointsDetection)


brolgar
stats_on_stats.Rmd
To better understand longitudinal data we can think about some of the exploratory data analysis happening over three datasets:
These are “stats on stats” of longitudinal data.
Let’s expand on this.
We have the full set of data, which we can look at in “full spaghetti” form like so:
So here we have our data
Now we can consider the features, just say for example we are only interested in the maximum of ln_wages
, we can do the following:
And from here we can explore the features - what is the distribution of the maximum values?
We can get the summary of these:
And now we want to identify those individuals who are at, or closest to the quartiles using keys_near()
.
max_quants <- quantile(x = max_wages[["max"]],
probs = c(0.25, 0.5, 0.75))
part_near <- partial(near,
y = max_wages[["max"]],
tol = 0.05)
summarise_l_max_wages <- max_wages %>%
summarise(id = list(id),
qs = list(as.list(quantile(x = max,
probs = c(0.25, 0.5, 0.75),
type = 7)))
)
l_max_wages_near <- summarise_l_max_wages %>%
mutate(is_near = list(map_dfr(flatten(qs), part_near))) %>%
select(id, is_near) %>%
unnest() %>%
gather(key = "near_q",
value = "value",
2:4,
-id) %>%
mutate(quant_is_near = case_when(
value ~ glue::glue("q_{readr::parse_number(near_q)}")
)) %>%
filter(!is.na(quant_is_near))
l_max_wages_near
wages %>%
inner_join(l_max_wages_near, by = "id") %>%
ggplot(aes(x = exper,
y = lnw,
group = id,
colour = near_q)) +
geom_line() +
facet_wrap(~near_q)
l_wages_all <- longnostic_all(wages,
id = id,
var = lnw,
formula = lnw ~ exper)
l_wages_all %>%
filter(!is.na(l_slope_exper)) %>%
select(id, l_slope_exper) %>%
mutate(q50 = quantile(l_slope_exper, 0.5, type = 7)) %>%
mutate(near_q50 = near_quantile(x = l_slope_exper,
probs = c(0.5),
tol = 0.001)) %>%
mutate(dist_q50 = abs(l_slope_exper - quantile(l_slope_exper,
probs = 0.5,
type = 7))) %>%
arrange(dist_q50)


Regular Expressions
August 9, 2015
I was amazed when I first learned about regular expressions. Using a brief set of characters, it’s possible to search a string of text for almost anything you want. Regular expressions are powerful tools that help in pattern matching, for example with find and replace operations.
Many programming languages, including Ruby and Javascript, have built-in regular expression capabilities. Others offer their functionality through a library. Each character in a regular expression is either a “metacharacter” with a special meaning that performs an operation, or a regular character that is understood according to its literal meaning.
Here are some of the basic concepts of regular expressions.
- Boolean “or”
- You can use a vertical bar to separate alternatives. For example, gray | grey matches gray or grey.
- Grouping
- Parentheses are used to group operators. Using the example above, gr( a | e )y also will match gray or grey.
- Quantification
- Quantifying characters specify how often an element is allowed to occur. Some of the most common ones are the question mark, the asterisk, and the plus sign.
- ? indicates zero or one elements
- * indicates zero or more elements
- + indicates one or more elements


iui-canvg.js is an extension for the iUI framework. It is currently EXPERIMENTAL
It uses CanVG to render SVG images into HTML5 canvas tags.
SVG support is not required, but canvas support is required.
For info on how to use this extension see Instructions.
Sean Gilligan
The CanVG Extension is easy to install into your iUI powered web app. It requires no changes to existing iUI components. Start by linking the iui-canvg.js to your main index file just like the you would iui.js.
The canvg extension requires canvg.js and rgbcolor.js. It requires HTML5 canvas support in the browser, but does not require SVG support.
You can now place compatible SVG content in iUI "pages" and have it automatically rendered in an HTML canvas
Use the following markup for each iUI view ("page") that contains an SVG image:

<canvas></canvas>

The CanVG Extension will use JavaScript to render the SVG image into the canvas tag before the iUI view (aka "page") is made active.


Women are hugely underrepresented in tech--whether in academia, research, industry, or leadership roles. FemmeHacks strives to bring women together to create a platform for peer support, community-building, exploration, and mentorship. We want to have fun together, building products that are for us and by us. Together we are stronger than ever, and allowing for a welcoming space where exploration is encouraged will allow for huge strides in the building of a supportive community. And then when we're all the CEOs of every damn company out there, we'll laugh and reminisce at our time spent at FemmeHacks :)