See "konami code" in the Code panel by pressing "Show Code" button. Try to type this code using your keyboard.


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 116395maths/51988categorytheorygroupoidandcategorytheoryGroupoid.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/116395-maths/topic/category_theory.2Fgroupoid.20and.20category_theory.2FGroupoid.html


Highest-earning 'Jeopardy!' champs to play for a share of $1.5 million
by Nate DayThe three top money winners in “Jeopardy!” history will vie for a share of $1.5 million in January.
ABC and the quiz show’s producer said Monday that Ken Jennings, Brad Rutter and James Holzhauer will compete in primetime episodes on the network.
Less than a week ago, Holzhauer, 35, won the "Jeopardy!" Tournament of Champions, after winning 32 games in a row over the summer. He took home the $250,000 grand prize.
'JEOPARDY!' HOST ALEX TREBEK RECORDS PANCREATIC CANCER PSA: 'I WISH I HAD KNOWN SOONER'
The first contestant to win three matches will receive $1 million. Each runner-up will take home $250,000.
Alex Trebek will host the contest, titled “Jeopardy! The Greatest of All Time,” which will debut on Jan. 7 at 8 p.m. EST.
Rutter is the top all-time money winner, with $4.7 million, followed by Jennings with $3.4 million and Holzhauer with $2.7 million.
In a statement, Trebek, 79, said the three have proved they qualify as the “greatest” and now will compete to be “the best of the best.”
Longtime host Trebek is currently fighting stage four pancreatic cancer and has seen an outpouring of support from fans since announcing his diagnosis earlier this year.
CLICK HERE TO GET THE FOX NEWS APP
Last week, a "Jeopardy!" contestant rendered Trebek speechless – a rarity – after submitting "What is we love you Alex!" for his answer to a question, betting $1,995. He was left with only $5.
The Associated Press contributed to this report


@(flash: String, farmers: List[Farmer]) @import helper._ @main("WeFarm") { @if(flash!=null) {
You can buy lots of fresh and local produce here. If you are a farmer and want to sell your produce, please register.
| Farmer | Farm | Produce | Produce Price |
|---|---|---|---|
| @farmer.username | @farmer.farm | @farmer.produce |<EMAIL_ADDRESS>|


PieceInputListener(piece: Piece, engine: Engine)
Input listener that handles the user input for the Piece class.


Toggle navigation
Kentucky Chapter
History
(current)
Executive Council
The Brothers
Outreach
The Executive Council
President
Connor Oren
Executive Vice President
Jake Miller
Vice President of Membership
Chad Greber
Vice President of Treasury
Mark Millen
Vice President of Standards
David Cottrell
Vice President of External Relations
Robert Cala
Secretary
Seth Holbrook


In england there's an interesting loophole which means it's legal to buy and sell fresh, unprepared magic mushrooms. I get mine from the internet, and you can get just about every kind. Since this has all been possible, I've been doing them fairly regularly. Not too much, maybe every two months, I'll go on two trips in the space of two weeks.
Last night I got together with a very dear friend, who's a sort of boyfriend. Up until last night, we'd been having 15g trips prepared as tea in the method of one of the recipes on this site. The simple one (very effective), with ginger root added, which really does help the stomach. In the past month I've been really changing. Things are getting clearer. Lots of revelations have happened.
Normally we trip in my house, but tonight we were in his, which he shares with a bunch of nice people. Some weird stuff had happened there though and I didn't feel all that relaxed in this place. It's ok but I'm a bit nervy and shy sometimes so that was there with me. It was late and we weren't too evenly matched. He's bigger than me - though we did give him more tea. But he'd gone and had a big stodgy meal no more than an hour beforehand. I'd had nothing but fruit, juice and water all day.
I was up and away in 20 minutes, while he was feeling a bit sick and nothing else. I could feel it was going to be very intense. I don't know where it came from but I started to feel very dark and lonely and the part of my head which is really hard and lonely and judgemental was most prevalent. I think coming up really high and alone was somewhat isolating. And it was VERY heavy. What felt really awful was how I felt a kind of repulsion for my friend. He's big and dark with a big deep voice and he smokes and he makes noise, and all he wanted to do was help, but it was so funny because whenever he spoke to comfort me, it was too much. I do adore him, but it was too much.
I was in this place in my head where I was rejecting Everything. It was awful. Thinking about nasty sad things, illness, madness, violence. Totally rejecting my life and me and the universe. I felt like I was dying. Death death death. It's really awful to resist death. Does no one any favours. It was intense, I always feel like I'm dying on mushrooms. But sometimes I'm open to that. Surrender!
I went to the kitchen to get something sugary. I got some biscuits but when I put them in my mouth I simply couldn't keep them there. They were foul and dry and unreal!  Too intense bleuch! I drank water and ate dates, none of this really did anything. I knew though, that soon I'd stop feeling strung out and then I'd feel amazing.
The carpet was rippling like the top of an oily kaleidoscopic lake. I always see an elephant with an ornate mantle on his head, rather like ganesh. He's in everything. Kaleidoscopes cover everything when I trip and I know 'I'm' a part of it. I always see my face too. This time I was looking at the mad dancing carpet and my face was everywhere. When I'm feeling fine my face is smiling, last night it was wide-eyed and spooked.
Anyway. I climbed into the bed (i.e. bunch of blankets on the floor) and got all foetal. I laughed because it wasn't helping and I knew it wouldn't. Nothign out there can help me or anybody, ever. All we've got is our own feelings. Which can sound good and bad, but it really ought to be a comfort, not a lonely shame.
I made some good decisions. I'd just started taking 'the pill' cause I really need some birth control. Only on the third one, no more, no way. It's disgusting and not right at all. For me anyway. Still kind of fraught. Mr. Man put some ben harper on at my request. I'd always meant to listen to him. Then he went to the bathroom.  Something about 'You can't run from the world, because there's nowhere to run' sang it over and over again. Wow. Yes. Thank you. It was such a gentle song too. Right time right place. It got better from there.
Love is life and it's only feeling love that can bring happiness, no matter how bad things seem to be. I was rejecting everything. I wanted everything to be different. Oscar wilde said something about 'It's not the perfect but the imperfect that is in need of our love'.
The mood all changed, and guy came back and I became very cackling-at-everything and turned into a cynical insane clown. High energy. Lots of laughing. Lots of laughing. Lust for life had come right back. I put on the stone roses. Very good. I paid attentions to things in my head, particularly self-consciusness. Insecurites and stuff. I decided to let them go and do what I really was for a change. So funny to look back and find all the uptight things I've been taught and so nice to realise that beliefs that constrict me, CAN be released, wiped clean. Particularly if I want to.
Oh it went on and so much happened. We'd had our tea at about 10.30 and by 1.00 it was starting to ease off. It was definitley there til we went to sleep at about 4am. I had a lovely time.
Alwasy as I start a trip, I think back to the day as I get ready and do things leading up to the night's activities. I laugh at myself, because 'Where did I think I was going?' I go around in my normal day preparing. Thinking I'm going somewhere that night. But the mushrooms are so in the present. It's my everyday right now, but with an intense clarity (and nice colours). At first the room I was in was horrible, but later it was soo beautiful. Everything was.. is. Mushrooms remind me to be in the moment. Everything is so profound. And they help me make the best decisions.
The 'seperation' of dreams and this shared life, disappears. Memories of my very very strange dreams come back and have the same presence and importance as events in my waking life (dream). I really love mushrooms.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


MontoloVoc vocabulary: Overview
back to
ToC
This ontology has the following classes and properties.
Classes
dataset
Ontology Repository
Restriction Type
Restriction Type Definition
Restriction Type Definition Version
Restriction Type Detector
Restriction Type Expression
Restriction Type Expression Detector
Restriction Type Expression Detector Version
Restriction Type Measure
Restriction Type Statistic
Object Properties
detects restriction type expression
has restriction type definition
Named Individuals
lovcube
me
me


Funding/Revenue
How we will finance the project
NGOs/Universities/Foundations
Already Georgetown University, USAID, MIT, the Center for Sustainable Urban Development (CSUD), and the University of Nairobi, have all backed projects related to improving the Nairobi’s matatu system. We could likely raise money from them to start the project.
Matatu Owners + Insurance Companies
As stated, matatu owners and insurance companies want to track the matatus, so might be willing to pay for the purchase and installation of the GPS trackers.
Users (Questionable)
As the project is designed for public benefit, I would be very hesitant to charge customers for using the site. In the long run, however, we might offer users the ability to pay to reserve bus seats in advance and the site could take a small fraction of those sales.
Challenges/Concerns
The greatest risks to the project's success
Driver Resistance
Drivers generally do not want their owners to know how recklessly they are driving or how much money they are really making. So, many would resist GPS trackers.
Available Seating Information
From talking with Adam White at Digital Matatus, I learned that another big need for customers is knowing not only when the next matatu is arriving, but if it has available seats. It’d be hard to get that info without the driver’s help. Unfortunately, drivers are incentivized to lie to underreport their revenue to the owners. A potential solution would be to allow customers to pay extra to pre-book seats on the matatu and then drivers would be incentivized to be honest about how many seats are available.
Gangs
Criminal gangs run some of the matatu routes. They might attack users who give them negative ratings. For this reason, we’d keep the ratings anonymous.


In this paragraph, we will find that there is an image that has been pushed to the right. It will therefore overlap content nearby, assuming that it is not the last element in its line box.


Resource Type: zone
- Defined in:
- lib/puppet/type/zone.rb
- Providers:
-
solaris
Overview
Manages Solaris zones.
Properties
-
brand
The zone's brand type
-
ensure
(defaults to: running)
The running state of the zone. The valid states directly reflect the states that
zoneadm
provides. The states are linear, in that a zone must beconfigured
, theninstalled
, and only then can berunning
. Note also thathalt
is currently used to stop zones. -
id
The numerical ID of the zone. This number is autogenerated and cannot be changed.
-
iptype
Displays exclusive or shared instance of IP.
-
zonepath
The path to zone's file system.
Parameters
-
archive
The archive file (UAR) containing an archived zone.
-
archived_zonename
If the UAR contains multiple zones. The archived zone to configure and install
-
clone
Instead of installing the zone, clone it from another zone. If the zone root resides on a zfs file system, a snapshot will be used to create the clone; if it resides on a ufs filesystem, a copy of the zone will be used. The zone from which you clone must not be running.
-
config_profile
Path to the config_profile to use to configure a solaris zone. This is set when providing a sysconfig profile instead of running the sysconfig SCI tool on first boot of the zone.
-
install_args
Arguments to the
zoneadm
install command. This can be used to create branded zones. -
name (namevar)
The name of the zone.
-
sysidcfg
%text to go into the
sysidcfg
file when the zone is first booted. The best way is to use a template:# $confdir/modules/site/templates/sysidcfg.erb system_locale=en_US timezone=GMT terminal=xterms security_policy=NONE root_password=<%= password %> timeserver=localhost name_service=DNS {domain_name=<%= domain %> name_server=<%= nameserver %> network_interface=primary realhostname %> ip_address=<%= ip %> netmask=<%= netmask %> protocol_ipv6=no default_route=<%= defaultroute %> nfs4_domain=dynamic
And then call that:
zone { myzone: ip => "bge0:<IP_ADDRESS>", sysidcfg => template("site/sysidcfg.erb"), path => "/opt/zones/myzone", realhostname => "fully.qualified.domain.name" }
The
sysidcfg
only matters on the first booting of the zone, so Puppet only checks for it at that time.} -
zonecfg_archive
Archive to use to configure the zone. Additional commands may be added via zonecfg_export.
-
zonecfg_export
Contains the zone configuration information. This can be passed in in the form of a file generated by the zonecfg command, in the form of a template, or a string.


{% extends "layout.html" %} {% block page_title %} Apply for European Structural and Investment Funding {% endblock %} {% block content %} {% include "includes/phase_banner_alpha.html" %} Home Call list Application overview Project Delivery {% include 'includes/page_errors.html' %} Project (2 of 4) Delivery back Capital Projects Documents Where will the project be delivered? Over what timescale will the project be delivered Who will deliver the project? Who will benefit from the project? From which LEP area(s) will the beneficiaries come from? What are the specific activities that will be undertaken as part of the project? Save and continue Cancel and return to dashboard {% include "includes/application_info.html" %} {% include "includes/secondary_nav.html" %} {% endblock %}


List of frames (url with protocol) separated by newlines.
Number of frames displayed on each line.
Horizontal resolution of the frames.
Vertical resolution of the frames.


--- layout: page title: About header-img: "img/about-bg.png" ---
I'm a Digital Marketer and Designer, venturing into the world of code.


Measures to tackle open burning, hate speech among focus of today’s Dewan Rakyat sitting
KUALA LUMPUR, Nov 11 — The measures the government is taking to tackle open burning in plantations and forests will be among the questions that will be raised in the Dewan Rakyat today.
Another issue that will be raised at today's sitting of the Lower House which enters its 21st day, is on the steps the Communications and Multimedia Ministry is taking to curb hate speech on the Internet.
According to the meeting schedule, these will be among the highlights during today's oral Question-and-Answer session.
Wong Hon Wai (PH-Bukit Bendera) wants the Housing and Local Government Ministry to provide an update on the number of open fire incidents recorded by the Fire and Rescue department in August and September this year.

She fears this can lead to serious racial and religious discord in the country.
Meanwhile, Khoo Poay Tiong (PH-Kota Melaka) will be asking for an update on what initiatives the Health Ministry is taking to help the B40 (lower income) group. — Bernama


We are a registered Christian charity based in Macleod in Victoria, Australia serving the community since 1971 with a wide range of programs and club type offerings based on a friendship model.
The team at Open House is deeply and proudly committed to a friendship based model, with outreach to old, young, disadvantaged, disabled and lonely people left behind, unwanted, unloved, or forgotten by society. For all these people we are “A place to belong," For many participants in our programs, we are their family.
Much of our work is with disadvantaged youth from low socio-economic circumstances. Our early involvement in their lives helps them re-engage and stay on the straight and narrow. We help prevent them, through our offers of friendship, one on one mentoring, and role modelling, from taking troublesome paths that might otherwise lead to detention, suicide, violence, unemployment, teen pregnancy, drug dependency, or other serious consequences.
Multiple participants come back, sometimes decades later, to say Open House literally saved their or their loved ones' lives.
We serve people of all ages from babies or young children and their caregivers, through to older Australians via our friendly club-like activity groups and meals.
Open House receives some funding from the government but our work is largely made possible by donations from generous individuals, organisations and sponsors. They are our lifeline.
Our non-judgmental, accepting of all, friendship model makes Open House attractive participants. For many we are their last chance only hope.
The personal impact for participants, as well as financial savings for society of our programs, is huge. For example, the annual cost of keeping just one youth in detention is over $235,000. Just one person saved through our youth workshop program gives a "positive rate of return" to society.
Similarly the social and economic cost to society of teenage pregnancy or drug use is high. Our joy is saving and making lives!
For old or lonely people we are often their only friends or “family” are here at Open House. We feel particular joy at being there for these people.
“I love the people who come to Open House and I love the feeling of really helping people,” say Val Armit, who has been a volunteer at Open House for twenty years, following eight years of service at another Christian Charity in Ivanhoe. “Many of our participants are isolated, with no one to talk to when they are worried or excited about something. We are there for them to talk to, it’s like a family.”


While even kids can dance, not everyone can dance well. If you want to learn how to dance, you first have to pick a style. Next, you can spend some time learning on your own. Alternatively, join a class at a local community college to improve your skills. Don't forget, you'll need to give your body some love by eating right and exercising to be a stellar dancer.
(1)Know what styles to explore. Each style has a different feel. For instance, the quick beats of tap dancing are very different from the long graceful moves of ballet dancing or the edgy movements of hiphop. Perhaps you could try ballroom dancing with a partner or even Irish dancing.
(2)Watch dance videos online. Try watching different videos to understand the basics of different styles of dance. Maybe you don't have strong enough knees for tap dancing. Maybe you don't like how your feet need to bend in ballet dancing. See what draws you in.
(3)Look at dance magazines and books. These books describe the basics of dancing, so they give you an idea of what you have ahead of you.
=>Try checking out magazines from the library. It's a free way to explore your options.
=> Dive into the history of dances.It may inspire you to choose one.
(4)Watch professionals. Go see a live show in your local community. It doesn't have to be an expensive. Maybe your local college has a dance school. However, watching in person provides a different experience than watching a video. It sweeps you up in the performance.
If you watch someone dance, you'll get a better feel for dancing. You'll see some great moves and get ideas from the pros. If you can't afford a live performance, try checking out movies with dancing, such as musicals. Pay attention to the dancers to see what they are doing. Are they focused? What is their technique like? Do their emotions complement the music? If you notice what inspires you in their movement, it may help you decide what you want to do.
(5)Join a community dance class. Many communities offer introductory dance classes. They can introduce you to variety of types at once. Check out your parks and recreation department or library.
If your community doesn't offer them, check out your local community colleges. Classes at community colleges are cheap.
(6)Know your limitations. If you have good posture and can stretch your legs and point your toes, try classical ballet, not hip hop. When you research dances, make sure you know the body placements. See which ones you think you can do well. Always bear in mind, though, that you are learning. You can and will develop greater flexibility.
(7)Choose your favorite type of dance. While you can always branch out later, start with one type of dance first. Focus on learning that type of dancing before you move on to anything else.
(1)Find an open space to practice. You need space to practice. Choose somewhere with a solid floor where you can make some noise.
(2)Use music with a good beat. Many songs have dance remixes, but you can move to almost anything that has a steady beat.
(3)Learn to hear the beat. Some people have trouble hearing the beat. If that's you, try listening to the music at the beginning of a song. Ask someone who knows music to help you count the beats, tapping your foot in time. Once you get the hang of it, you can do it on your own.
(4)Don't be afraid to move. Once you feel the beat, try moving your body to it. You can worry about technique later. At this point in time, you just want to learn to move your body in time to the beat.
=>You may want to start out by moving just your arms, then adding leg movements (or vice versa). It's easier to focus on one part. Really listen to the beat to be on time with the moves.
(5)Dance at your own pace. Of course you want to immediately be an awesome dancer. However, dancing takes time to learn. If you try too much too soon, you could hurt yourself.
(6)Learn the basics first. Starting at the beginning will help you avoid frustration. It will improve your technique for more complicated moves. Use online tutorials or books to help you learn the basics.
=>For ballet, try the basic positions. For instance, begin in first position. First position is where your heels are together, but each foot points straight out to the side. It may take awhile to achieve this turnout, but use your hips to help you get into this position. Your arms should curve out from your shoulders in an arch.
(7)Go dancing at a club. Dance clubs are a great place to try out certain types of dance moves, such as hip hop, country, or swing dancing.
(1)Join a local dance class. You may have taken a dance class to choose a genre, but now you should take one focused on the type of dance (or dances) you love. Once again, look for community classes or try your local community college. Pick a beginner class, since you're still learning.
(2)Watch professionals. Watching professionals helps create a map in your brain. Essentially, by watching their movements, you are better able to make the movement yourself because your brain has already gone through the motions.
=>You can take in a local performance, as above. Also, pay close attention to your instructor as she shows you how to make the movements.
(3)Practice with friends. If you get friends to take the class together with you, you can spend time outside of class practicing together. That way, you can also provide feedback for each other. You can work on improving together.
(4)Set aside time specifically for practice. The only way to train your body is to practice on a regular basis. It will help your body develop muscle memory, so you can dance without having to think through the motions.
(5)See how you're doing. Take a video of yourself, and watch it to see how you are moving. You can also try posting it on dancing sites to ask for tips from other dancers.
(6)Practice in front of a mirror. Practicing in front of a mirror will let you see what you're doing wrong in real time, so that you're not practicing a move that's wrong.
(7)Go out in the community. Check for local theater companies, and try out for one. You can also see if your community has any local dance groups you could join. One way to find these types of groups is to check event listings in your newspaper. You can see who's performing to find local groups.
(1)Eat your vegetables and fruits. These foods pack a punch when it comes to nutrients.  If you're dancing constantly, you should get about half of your calories from carbohydrates. The other 50 percent should be split, with about 35 percent going to fat and 15 percent going to protein.
=>The carbohydrates fuel your muscles for dancing, giving you energy.
Protein helps rebuild your muscles. In intense dance sessions, your muscles are stressed and the fibers break, which protein helps fix.
(3)Avoid simple carbohydrates.  Instead, choose whole grains and fruits for your carbohydrates.
(4)Hydrate your body. You need to replenish the fluids that your body is losing. In addition, being dehydrated can slow you down.
=>Aim for 8 glasses of water a day that are 8 ounces each.
In an intense dance session, you should drink about 4 glasses of water per hour. to help make up for fluid loss.
(5)Choose lean proteins.  You can also enjoy proteins from plants, such as nuts and beans.
(6)Try cross-training or TRX. To help develop your body, try other exercises to increase your muscles and stamina.
=>For instance, swimming is a great all-body workout that can improve your flexibility. It also takes the stress off your joints. The backstroke is especially good if you need to loosen your upper body.
To develop your leg muscles, try cycling. It's also a great way to increase your overall endurance. Make sure you sit up straight when riding because otherwise you can shorten muscles near the hips.
For flexibility and strength, take a yoga class. Yoga can help lengthen your muscles, as well as strengthen your core.
(7)Lift weights. Lifting weights helps you to develop your muscles. You'll be able to stay in certain dance positions for longer, or move in ways you didn't think you could. You can do standard weightlifting such as bicep curls or leg squats, but only do sets of three with six or eight repetitions with a slightly heavier weight than you would normally use. More weight (but not as many repetitions) will help strengthen your body without adding too much weight in muscles to your body.
For a bicep curl, hold a dumbbell in each hand. Your palm should be facing inwards towards your body. Lift both arms slightly so that your palms are facing upwards. Alternate lifting each arm to your shoulder.
For squats, stand with your feet shoulder width apart.  Bend your knees at the same time, lowering yourself down, and then return to standing. Repeat the exercise.


The goal of Conversational Coding is to broaden computer literacy. We help beginning programmers "level-up," by identifying the important stepping-stones they should land on at each stage in their learning journey, so that they can boost themselves further and quicker.
05 Nov 2014
The real power of using the command line starts becoming apparent when you look at different commands as building blocks, that can be combined to figure things about the system that each command individually cannot produce. In this respect, the command line is very different from using “graphical” or “visual” applications.
Read more...
03 Nov 2014
The “command line” or “shell” is a text-based interface to your
computer. All computers - whether they run Chrome OS, Apple OSX, or
Windows - have a shell. There are essentially two flavors of shells,
though - the UNIX shell and the Windows shell. This tutorial will
focus only on the UNIX shell; the structure of the Windows shell is
similar but there are some critical differences that are beyond the
scope of this tutorial to explain.
Read more...
02 Sep 2014
In the previous lesson on HTTP, we learned what HTTP is and how it forms a critical part of the communication systems that tie browsers, websites, and web applications together. We saw how to look at the HTTP requests being generated by a browser when loading a webpage.
Read more...
01 Sep 2014
Web applications are typically written as computer programs that run constantly, waiting for requests from browsers
running on other computers. Those computers can be someone’s desktop, laptop, or mobile phone. The browser requests are
usually made by a human being who clicks on a link in a webpage (or in her email,) and expects to see a webpage as a
result. The job of the web application is to respond with the code corresponding to the webpage that the browser can
interpret correctly.
Read more...
31 Aug 2014
In this exercise, we figure out how to create and update data in a database. For this purpose, we will use SQLite3 as our database application.
Read more...


Nottingham charity given green light to move from 'decrepit' home after 60 years
Nottingham Mencap has been in consultation to move into the Edwards Lane Community Centre
by Oliver PridmoreA Nottingham charity which helps people with learning difficulties has taken a "huge step forward" after being given the green light to move into a new facility.
Nottingham Mencap has been based at its current facility in Harpenden House in Nottingham for more than 60 years but has been in consultation about a move after the building was described as being "beyond economic repair".
The charity supports people with autism and learning difficulties by helping them develop practical and social skills to live independently.
Now, Mencap has welcomed the "very exciting" news that work should begin on a new facility next Autumn.
Mike Tuck, the Project Director at Richardson Hall Construction, who will be leading the work, said: "This is welcome news for a fantastic organisation doing some incredibly important work.
"Their current building is beyond economic repair therefore rebuilding there wasn’t going to be an option.
"This is a significant project as we aren’t simply upgrading a facility, we are relocating an organisation and helping them to expand their services to deliver a truly 21st century provision for their users."
The new facility will be based at the Edwards Lane Community Centre in Sherwood and plans include it being equipped with a gymnasium, a music room and an IT suite.
The community centre is currently in need of repair but once re-built the charity plans to open it up to people in the surrounding area.
Work is expected to begin on site next autumn and be completed by the spring of 2021.
Mike Caston, CEO of Nottingham Mencap said: "This is a huge step forward for this ambitious project and a very exciting time for all of us here at Nottingham Mencap but especially for our service users.
"Our current venue has served us well for many years but not only is it frankly somewhat decrepit, it is totally outmoded for today’s needs.
"I would like to thank Mike Tuck and the team at Richardson Hall Construction for their invaluable strategic advice and support right from the start of this project and look forward to working with him as we take the next steps on this ambitious but absolutely essential journey."


Singer-rapper Lizzo scores a whopping 8 Grammy nominations, while Bill
NEW YORK (AP) - Singer-rapper Lizzo scores a whopping 8 Grammy nominations, while Billie Eilish and Lil Nas X earn six nominations each .
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


ColorContrastCalc
ColorContrastCalc
is a Utility that helps you choose colors with
sufficient contrast, WCAG 2.0 in mind.
With this library, you can do following things:
- Check the contrast ratio between two colors
- Find (if exists) a color that has sufficient contrast to a given color
- Create a new color from a given color by adjusting properties of the latter
- Sort colors
Installation
$ npm install --save color-contrast-calc
Usage
Here are some examples that will give you a brief overview of the library.
Please refer to the API documentation for more details.
Representing a color
To Represent a color, Color
class is provided.
And most of the operations in this library use this class.
For example, if you want to create an instance of Color
for red,
you may use a method ColorContrastCalc.colorFrom()
.
Save the following code as color-instance.js
:
const ColorContrastCalc = require("color-contrast-calc").ColorContrastCalc;
const Color = require("color-contrast-calc").Color;
// Create an instance of Color from a hex code
// (You can pass 'red' or [255, 0, 0] instead of "#ff0000")
const red = ColorContrastCalc.colorFrom("#ff0000");
console.log(red instanceof Color);
console.log(red.name);
console.log(red.hexCode);
console.log(red.rgb);
console.log(red.hsl);
And execute the script:
$ node color-instance.js
true
red
#ff0000
[ 255, 0, 0 ]
[ 0, 100, 50 ]
Example 1: Calculate the contrast ratio between two colors
If you want to calculate the contrast ratio between yellow and black, save the following code as yellow-black-contrast.js
:
const ColorContrastCalc = require("color-contrast-calc").ColorContrastCalc;
const yellow = ColorContrastCalc.colorFrom("yellow");
const black = ColorContrastCalc.colorFrom("black");
console.log(`contast ratio between yellow and black: ${yellow.contrastRatioAgainst(black)}`);
console.log(`contrast level: ${yellow.contrastLevel(black)}`);
And execute the script:
$ node yellow-black-contrast.js
contast ratio between yellow and black: 19.555999999999997
contrast level: AAA
Or it is also possible to calculate the contrast ratio of two colors from their hex color codes or RGB values.
Save the following code as yellow-black-hex-contrast.js
:
const ContrastChecker = require("color-contrast-calc").ContrastChecker;
const [yellow, black] = ["#ff0", "#000000"];
// or
// [yellow, black] = [[255, 255, 0], [0, 0, 0]];
const ratio = ContrastChecker.contrastRatio(yellow, black);
console.log(`Contrast ratio between yellow and black: ${ratio}`);
console.log(`Contrast level: ${ContrastChecker.ratioToLevel(ratio)}`);
And execute the script:
$ node yellow-black-hex-contrast.js
contast ratio between yellow and black: 19.555999999999997
contrast level: AAA
Example 2: Find colors that have enough contrast ratio with a given color
If you want to find a combination of colors with sufficient contrast
by changing the brightness/lightness of one of those colors, save the
following code as yellow-orange-contrast.js
:
const ColorContrastCalc = require("color-contrast-calc").ColorContrastCalc;
const yellow = ColorContrastCalc.colorFrom("yellow");
const orange = ColorContrastCalc.colorFrom("orange");
// Find brightness adjusted colors.
let aOrange = yellow.findBrightnessThreshold(orange, "A");
let aContrastRatio = yellow.contrastRatioAgainst(aOrange);
let aaOrange = yellow.findBrightnessThreshold(orange, "AA");
let aaContrastRatio = yellow.contrastRatioAgainst(aaOrange);
console.log("# Brightness adjusted colors");
console.log(`aOrange: ${aOrange.hexCode}`);
console.log(`contrast ratio between yellow and aOrange: ${aContrastRatio}`);
console.log(`aaOrange: ${aaOrange.hexCode}`);
console.log(`contrast ratio between yellow and aaOrange: ${aaContrastRatio}`);
// Find lightness adjusted colors.
aOrange = yellow.findLightnessThreshold(orange, "A");
aContrastRatio = yellow.contrastRatioAgainst(aOrange);
aaOrange = yellow.findLightnessThreshold(orange, "AA");
aaContrastRatio = yellow.contrastRatioAgainst(aaOrange);
console.log("# Lightness adjusted colors");
console.log(`aOrange: ${aOrange.hexCode}`);
console.log(`contrast ratio between yellow and aOrange: ${aContrastRatio}`);
console.log(`aaOrange: ${aaOrange.hexCode}`);
console.log(`contrast ratio between yellow and aaOrange: ${aaContrastRatio}`);
And execute the script:
$ node yellow-orange-contrast.js
# Brightness adjusted colors
aOrange: #c68000
contrast ratio between yellow and aOrange: 3.013798229247296
aaOrange: #9d6600
contrast ratio between yellow and aaOrange: 4.512053816540577
# Lightness adjusted colors
aOrange: #c78000
contrast ratio between yellow and aOrange: 3.0011856639235854
aaOrange: #9d6600
contrast ratio between yellow and aaOrange: 4.512053816540577
Example 3: Grayscale of given colors
For getting grayscale, ColorContrastCalc.Color
has an instance method
withGrayscale()
.
For example, save the following code as grayscale.js
:
const ColorContrastCalc = require("color-contrast-calc").ColorContrastCalc;
const yellow = ColorContrastCalc.colorFrom("yellow");
const orange = ColorContrastCalc.colorFrom("orange");
const yellowGrayscale = yellow.withGrayscale();
const orangeGrayscale = orange.withGrayscale();
console.log(`The grayscale of ${yellow.hexCode} is ${yellowGrayscale.hexCode}`);
console.log(`The grayscale of ${orange.hexCode} is ${orangeGrayscale.hexCode}`);
And execute the script:
$ node grayscale.js
The grayscale of #ffff00 is #ededed
The grayscale of #ffa500 is #acacac
And other than withGrayscale
, following instance methods
are available for Color
:
withBrightness
withContrast
withHueRotate
withInvert
withSaturate
Deprecated instance methods
Please note the following methods are deprecated:
newGrayscaleColor
newBrightnessColor
newContrastColor
newHueRotateColor
newInvertColor
newSaturateColor
Example 4: Sort colors
You can sort colors using a method `ColorContrastCalc.sort()'
And by passing the second argument to this method, you can also specify the sort order.
For example, save the following code as sort-colors.js
:
const ColorContrastCalc = require("color-contrast-calc").ColorContrastCalc;
const colorNames = ["red", "yellow", "lime", "cyan", "fuchsia", "blue"];
const colors = colorNames.map(name => ColorContrastCalc.colorFrom(name));
// Sort by hSL order. An uppercase for a component of color means
// that component should be sorted in descending order.
const hslOrdered = ColorContrastCalc.sort(colors, "hSL").map(color => color.name);
console.log(`Colors sorted in the order of hSL: ${hslOrdered}`);
// Sort by RGB order.
const rgbOrdered = ColorContrastCalc.sort(colors, "RGB").map(color => color.name);
console.log(`Colors sorted in the order of RGB: ${rgbOrdered}`);
// You can also change the precedence of components.
const grbOrdered = ColorContrastCalc.sort(colors, "GRB").map(color => color.name);
console.log(`Colors sorted in the order of GRB: ${grbOrdered}`);
// And you can directly sort hex color codes.
//// Hex color codes that correspond to the color_names given above.
const hexCodes = ["#ff0000", "#ff0", "#00ff00", "#0ff", "#f0f", "#0000FF"];
hslOrderedHexCodes = ColorContrastCalc.sort(hexCodes, "hSL");
console.log(`Colors sorted in the order of hSL: ${hslOrderedHexCodes}`);
And execute the script:
$ node sort-colors.js
Colors sorted in the order of hSL: red,yellow,lime,cyan,blue,fuchsia
Colors sorted in the order of RGB: yellow,fuchsia,red,cyan,lime,blue
Colors sorted in the order of GRB: yellow,cyan,lime,fuchsia,red,blue
Colors sorted in the order of hSL: #ff0000,#ff0,#00ff00,#0ff,#0000FF,#f0f
Example 5: Lists of predefined colors
Two lists of colors are provided, one is for named colors and the other for the web safe colors.
And there is a method ColorContrastCalc.hslColors()
that generates
a list of HSL colors that share same saturation and lightness.
For example, save the following code as color-lists.js
:
const ColorContrastCalc = require("color-contrast-calc").ColorContrastCalc;
// Named colors
const namedColors = ColorContrastCalc.NAMED_COLORS;
console.log(`The number of named colors: ${namedColors.length}`);
console.log(`The first of named colors: ${namedColors[0].name}`);
console.log(`The last of named colors: ${namedColors[namedColors.length-1].name}`);
// Web safe colors
const webSafeColors = ColorContrastCalc.WEB_SAFE_COLORS;
console.log(`The number of web safe colors: ${webSafeColors.length}`);
console.log(`The first of web safe colors: ${webSafeColors[0].name}`);
console.log(`The last of web safe colors: ${webSafeColors[webSafeColors.length-1].name}`);
// HSL colors
const hslColors = ColorContrastCalc.hslColors();
console.log(`The number of HSL colors: ${hslColors.length}`);
console.log(`The first of HSL colors: ${hslColors[0].name}`);
console.log(`The 60th of HSL colors: ${hslColors[60].name}`);
console.log(`The 120th of HSL colors: ${hslColors[120].name}`);
console.log(`The last of HSL colors: ${hslColors[hslColors.length-1].name}`);
And execute the script:
$ node color-lists.js
The number of named colors: 147
The first of named colors: aliceblue
The last of named colors: yellowgreen
The number of web safe colors: 216
The first of web safe colors: black
The last of web safe colors: white
The number of HSL colors: 361
The first of HSL colors: red
The 60th of HSL colors: yellow
The 120th of HSL colors: lime
The last of HSL colors: red
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request


Torrent States.
Source position: qBTorrents.pas line 37
type TqBTorrentState = ( |
||
qtsError, |
|
Some error occurred, applies to paused torrents. |
qtsPausedUp, |
|
Torrent is paused and has finished downloading. |
qtsPausedDl, |
|
Torrent is paused and has NOT finished downloading. |
qtsQueuedUp, |
|
Queuing is enabled and torrent is queued for upload. |
qtsQueuedDl, |
|
Queuing is enabled and torrent is queued for download. |
qtsUploading, |
|
Torrent is being seeded and data is being transfered. |
qtsStalledUp, |
|
Torrent is being seeded, but no connection were made. |
qtsStalledDl, |
|
Torrent is being downloaded, but no connection were made. |
qtsCheckingUp, |
|
Torrent has finished downloading and is being checked; this status also applies to preallocation (if enabled) and checking resume data on qBt startup. |
qtsCheckingDl, |
|
Same as checkingUP, but torrent has NOT finished downloading. |
qtsDownloading, |
|
Torrent is being downloaded and data is being transfered. |
qtsMetaDl, |
|
Torrent has just started downloading and is fetching metadata. |
qtsUnknown |
|
Catch all state in case something changes in the API. |
); |


This example illustrates how you can use a tracking tool like google analytics to track how many people is in a meeting room.
Our objective is to find out how many people are using our meeting room on average during the day, we accomplish this by using our huddly sdk and push the tally of people detected to google analytics.
Using google analytics we can create a report that shows the average number of people in the room per hour.
We split up the code in two parts first getting the detections from the camera, secondly we will push the number of detected people to GA.
const HuddlyDeviceAPIUSB = require('@huddly/device-api-usb').default;
const HuddlySdk = require('@huddly/sdk').default;
const meetingRoomName = process.env.HUDDLY_MEETING_ROOM || 'TEST_ROOM';
const usbApi = new HuddlyDeviceAPIUSB();
// Create an instance of the SDK
const sdk = new HuddlySdk(usbApi);
async function init() {
await sdk.init();
sdk.on('ATTACH', async (cameraManager) => {
const autozoomCtl = cameraManager.getAutozoomControl();
// Make sure that autozoom (genius framing is started)
await autozoomCtl.init();
await autozoomCtl.start();
// Now get the detector instance from sdk
const detector = cameraManager.getDetector();
// Setup the detection listener
detector.on('DETECTIONS', detections => {
console.log('Number of people detected', detections.length);
});
// Calling detector init will initiate the generation of detection events
detector.init();
});
}
init();
First we need to setup the sdk and when the camera is attached, get the autozoom controller instance to make sure that autozoom is configured and running on the camera.
const usbApi = new HuddlyDeviceAPIUSB();
// Create an instance of the SDK
const sdk = new HuddlySdk(usbApi, [usbApi]);
await sdk.init();
sdk.on('ATTACH', async (cameraManager) => {
const autozoomCtl = cameraManager.getAutozoomControl();
await autozoomCtl.init();
await autozoomCtl.start();
});
Then we get an instance of te detector class, initialize it and setup the detection listener so we get a detection events.
...
const detector = cameraManager.getDetector();
detector.on('DETECTIONS', detections => {
console.log('Number of people detected', detections.length);
});
...
Finally, calling detector.init()
will start the detection engine which generates detection data that is caught
by our event listener that we set up in the previous step.
detector.init();
The meeting room name is declared with an environment variable, so this can be configured from machine to machine.
export HUDDLY_MEETING_ROOM="my_meeting_room"
Now that we set up how to track events to google analytics.
In order to track with GA we first need to create an account.
Create a GA account and get the tracking ID .
You then need to set the tracking-ui as an environment variables.
export GA_TRACKING_ID=YOUR-TRACKING-ID
And then some utility code that pushed the people count event to google analytics.
const got = require('got');
const GA_TRACKING_ID = process.env.GA_TRACKING_ID;
async function trackEvent (category, action, label, value) {
const data = {
v: '1',
tid: GA_TRACKING_ID,
uid: '555',
t: 'event',
ec: category,
ea: action,
el: label,
ev: value
};
try {
await got.post('http://www.google-analytics.com/collect', {
form: true,
body: data,
});
} catch (e) {
console.log('tracking failed');
}
}
function trackPeopleCount(meetingRoom, numberOfPeople) {
trackEvent('huddly-analytics', 'people-count', meetingRoom, numberOfPeople);
}
module.exports = trackPeopleCount;
You can find more information on google analytics integration here
const trackPeopleCount = require('./tracker');
const HuddlyDeviceAPIUSB = require('@huddly/device-api-usb').default;
const HuddlySdk = require('@huddly/sdk').default;
const meetingRoomName = process.env.HUDDLY_MEETING_ROOM || 'TEST_ROOM';
const usbApi = new HuddlyDeviceAPIUSB();
// Create an instance of the SDK
const sdk = new HuddlySdk(usbApi);
async function init() {
await sdk.init();
sdk.on('ATTACH', async (cameraManager) => {
const autozoomCtl = cameraManager.getAutozoomControl();
// Make sure that autozoom (genius framing is started)
await autozoomCtl.init();
await autozoomCtl.start();
// Now get the detector instance from sdk
const detector = cameraManager.getDetector();
// Setup the detection listener
detector.on('DETECTIONS', detections => {
trackPeopleCount(meetingRoomName, detections.length);
});
// Calling detector init will initiate the generation of detection events
detector.init();
});
}
init();
Next up we want to create our analytics report
We want to create a report that calculates the average number of people in our meeting room per hour.
Setup report
Avg. Value
Hour
Event Label
Exact my_meeting_room
(fill the name you set as environment variable)You should now have tracking data coming in, and you can select different date ranges for your report.


Loading Cognitive Studio App v0.24.0b...
May take a while to load Blazor libraries and you might need to clear cache.
An unhandled error has occurred.
Reload
🗙


Legault not ruling out a 'Quebec Amazon' to promote local retailers
by The Canadian PressQUEBEC - Premier Francois Legault is open to the creation of a Quebec version of Amazon, which his economy minister described Wednesday as a way to serve nationalist customers.
Legault and Pierre Fitzgibbon spoke Wednesday about an “Amazon Quebec” ahead of a meeting with representatives of the online giant's Canadian division.
The premier told reporters he is concerned about the lack of Quebec-made products available on Amazon and wants to make sure the company isn't just selling American products to Quebecers.
The idea of a Quebec-focused platform was first floated in 2017 by businessman Alexandre Taillefer, who later became campaign director for the Quebec Liberal Party.
Fitzgibbon went further then the premier, saying the province could “absolutely” invest in a Quebec platform, as long as it was sustainable.
Any such platform, he added, would also have to a include a homegrown delivery mechanism to ensure goods reach their destinations quickly.
“We have products, we have nationalist clients who like to buy in Quebec, so maybe it's time to look more closely at having a structure,” he said, adding that he was a big believer in Amazon's model.
Fitzgibbon said Quebec has the capacity to deliver groundbreaking solutions. “I keep hammering on how we need to innovate,” he said.
Legault, for his part, said his priority is finding a way to reassure Quebec suppliers.


[Gecode] Succeded with DLLs
Christian Schulte
schulte at imit.kth.se
Sat May 1 13:50:47 CEST 2004
Dear all,
after two days of fiddling I managed to get DLLs to work under Windows with
MSVC. Now it should be easy to do the same with gcc (both cygwin and mingw).

But on the other hand I am quite confused with the automake and other
issues. Separate mails.
Christian
--
Christian Schulte, http://www.imit.kth.se/~schulte/
More information about the gecode-users
mailing list


Current version: 0.10 (11/Jan/2013)
Download here: PyAlgoTrade-0.10.tar.gz
- Sharpe Ratio analysis (pyalgotrade.stratanalyzer.sharpe.SharpeRatio).
- Max. drawdown and max. drawdown duration analysis (pyalgotrade.stratanalyzer.drawdown.DrawDown). Thanks Sedov Anton for reporting a bug in the early implementation.
- Returns analysis (pyalgotrade.stratanalyzer.returns.Returns).
- Trades analysis (pyalgotrade.stratanalyzer.trades.Trades).
- Support for bar timezones (pyalgotrade.marketsession).
- Support for sequence like operations in dataseries (__getitem__ and __len__. getValue and getValueAbsolute will soon get deprecated).
- Support for mapping like operations in bar feeds (__getitem__ and __contains__).
- Support for mapping like operations in bar.Bars (__getitem__ and __contains__).
- Google App Engine: Added support for re-executing strategies.
- broker.backtesting.Broker.getValue no longer needs the bars as a parameter. It will take those out of the feed.
- Bug fix: broker.backtesting.getActiveOrders was not returning all orders during event dispatching.
- Bug fix: Fixed returns calculations for short positions. Thanks John Fawcett for explaining this.
- Bug fix: Fixed a bug in the Strategy class and the backtesting broker when dealing with multiple instruments. Was not handling absence of bars appropriately. Thanks Fabian Braennstroem for reporting this.
- Bug fix: Additional dataseries added to the portfolio subplot were not showing. Thanks Sedov Anton for reporting this.
- Bug fix: Additional subplots (those created using getOrCreateSubplot) are now ordered as created. Thanks Sedov Anton for reporting this and suggesting the fix.
Version: 0.9 (1/Sep/2012)
Download here: PyAlgoTrade-0.9.tar.gz
- Added a method to the strategy class to get notified when an order gets updated (onOrderUpdated). This is only called if the order was placed using the broker interface directly.
- Bug fix: A KeyError exception was raised in the strategy class when placing orders using the broker interface directly. Thanks 'Femto Trader' for reporting this.
Version 0.8 (28/Aug/2012)
Download here: PyAlgoTrade-0.8.tar.gz
- StrategyPlotter now plots each instrument in a separate subplot. getMainSubplot was replaced by getIntrumentSubplot.
- Strategy.exitPosition allows setting the exit order as GTC or not, or matching the entry order (default).
- Bug fix: Was hitting an AssertionError in the strategy class when overwritting exit orders with new ones.
- Bug fix: Set exit-on-session-close orders as GTC.
Version 0.7 (22/Aug/2012)
Download here: PyAlgoTrade-0.7.tar.gz
- Backtesting broker now allows customizing of order filling strategies.
- Added support Stop orders. Thanks Tibor Kiss for adding this.
- Added support StopLimit orders. Thanks Tibor Kiss for adding this.
- TA-Lib integration (pyalgotrade.talibext.indicator).
- Official support for NinjaTrader generated CSV files (pyalgotrade.barfeed.ninjatraderfeed.Feed). csvfeed.NinjaTraderRowParser was removed.
- pyalgotrade.barfeed.csvfeed.YahooFeed was moved to pyalgotrade.barfeed.yahoofeed.Feed. pyalgotrade.barfeed.csvfeed.YahooFeed still works but it will be removed soon.
- Major changes to the broker interface to support other broker types. These changes are not backwards compatible. Thanks Tibor Kiss for adding this.
- Bug fix: Was not honoring the good till canceled attribute when submiting exit orders from inside the position classes.
- Bug fix: Was not getting better prices (when available) for Limit orders. Thanks Tibor Kiss for reporting this.
Version 0.6 (26/Jun/2012)
Download here: PyAlgoTrade-0.6.tar.gz
- Added initial support for NinjaTrader export format (csvfeed.NinjaTraderRowParser).
- pyalgotrade.optimizer.server.serve now returns the best results found.
- Fixes to the optimizer.local module when running on Windows.
- Fixes to the optimizer.local module. The socket used to find a random port to listen on was not being closed. Thanks Tibor Kiss for fixing this.
- Fixes to plotter.py. The marker style used was not supported in some matplotlib versions. Thanks Tibor Kiss for fixing this.
Version 0.5 (21/Jun/2012)
Download here: PyAlgoTrade-0.5.tar.gz
- Added support for optimizing strategies inside Google App Engine.
- StrategyPlotter supports plotting a range.
- Stochastic oscillator supports using adjusted values.
- Improved optimizer module to distribute strategy executions in chunks.
Version 0.4 (8/May/2012)
Download here: PyAlgoTrade-0.4.tar.gz
- Added rate of change technical indicator.
- Added stochastic oscillator technical indicator.
- Added error checking to yahoofinance.get_daily_csv.
- Normalized some method names in StrategyPlotter.
Version 0.3 (22/Apr/2012)
Download here: PyAlgoTrade-0.3.tar.gz
- Support for plotting strategies (StrategyPlotter).
Version 0.2 (14/Apr/2012)
Download here: PyAlgoTrade-0.2.tar.gz
- Added CrossAbove and CrossBelow technical indicators.
- Added support for limit orders.
- Fixed a bug when a position was set to exit on session close but the entry order was not filled.
Version 0.1 (27/Mar/2012)
Download here: PyAlgoTrade-0.1.tar.gz


| EXCHANGE | CRYPTOS | MIN BUY | PAYMENT | PROMO | |||
|---|---|---|---|---|---|---|---|
| Bitpanda | 25 EUR | Buy & sell BTC ETH DASH LTC BCH XRP | Open Account | Read complete Report | |||
| Binance | ... | 100 USD | Exchange the world with Binance | Open Account | Read complete Report | ||
| Changelly | ... | 20 USD | Exchange cryptos at the best rate | Open Account | Read complete Report | ||
| Cex IO | ... | 0.01 BTC | Bitcoin Exchange you can trust | Open Account | Read complete Report | ||
| Bitmex | ... | 0.0001 BTC | Access Global Markets only using Bitcoin | Open Account | Read complete Report |


Answer the following questions to find out what programming language you would be best at!
Congrats on your choice! If you do not like the result, go back and change your answers.


--- layout: post title: YRUHRN? date: 2006-09-27 00:00:00 categories: business social software-development ---
Amazon web services write a book: "An emerging project, YRUHRN, is creating the first book designed, written, edited, marketed, and published using the wisdom of crowds involving over 1,000 people. YRUHRN is based on hundreds of people answering the question, “Why Are You Here – Right Now” via the Amazon service, Mechanical Turk."


Do you want to generate passive income today while building wealth for tomorrow?
Services
Do you want to earn passive income but are not sure how to get started?
Does a quarterly check sound nice but you're afraid that you'll lose money to rookie mistakes?
Learn what you need to know to invest with confidence, so that you can start earning passive income while growing your nest egg.
Sign up for our FREE DIY training, as well a fully guided course to start earning money as quickly as possible.
"How much should I put into this deal?"
"What if I lock up all of my savings and it won't be there when I need it?"
Great questions!
We've helped many people just like you create a plan to invest the right amount in the right deals to minimize risk and have the money they need to be available when they need it.
"How much should I put into this deal?"
"What if I lock up all of my savings and it won't be there when I need it?"
Great questions!
We've helped many people just like you create a plan to invest the right amount in the right deals to minimize risk and have the money they need to be available when they need it.


What happened between I’m a Celebrity’s Nadine Coyle and Girls Aloud?
For one girl band, friendship never ends. For others… it’s not always so smooth.
Girls Aloud – made up of Cheryl, Sarah Harding, Nadine Coyle, Nicola Roberts and Kimberly Walsh – were created through the ITV talent show Popstars: The Rivals in 2002.
After winning the show, the band became one of Britain’s biggest pop bands, earning 20 consecutive top 10 singles in the United Kingdom, including four number ones.
But the band have since gone their separate ways, with a reunion ‘highly unlikely.’ What went wrong with the Biology hit makers?
Did Girls Aloud fall out?
It’s fair to say that the five girls might have been great as a band, but that doesn’t mean they always had to be great friends.
Nadine has hinted at problems between the girls in the past.
On an episode of Celebrity Juice, she told Keith Lemon that she doesn’t see the girls any more.
Advertisement Advertisement
She suggested ‘there was no fallout’ but ‘there was just no friendship to begin with.’
She hinted at a possible cause for the problems to The Sun back in 2017: ‘It was fine at the start but there’s always politics in any band. It just happened that I always got more vocals than everybody else, so in terms of people wanting their voice heard, that wasn’t happening. And it made people very bitter. They didn’t like that.’
And Cheryl, speaking with the BBC, appeared to support this, stating she didn’t enjoy Girls Aloud’s final tour in 2012.
She said: ‘There were still some underlying issues that had never been addressed, sadly. It could have been a lot more fun than it was for us.’
But on a brighter note for fans of the band, she added: ‘There were great bits, too. Times when we cried from laughing. It just didn’t have to be as tough as it was sometimes. That’s all.’
Her leaving two of the five girls off her Girls Aloud anniversary post can’t have helped much, though.
Individually a lot of the girls have shown support to one another over the years.
Cheryl and Nicola Roberts most recently attended Kimberly Walsh’s Big The Musical on London’s West End.
Advertisement Advertisement
And Nadine leapt to Sarah Harding’s defence back when she appeared on Celebrity Big Brother in 2017.
I’m a Celebrity…Get me out of Here! starts tonight at 9pm on ITV.


Influencer Control is a Social Media Analytics Platform for Influencers that shows them key insights about their social media audiences. The Algorithm segments your audience into various influenter domains. It determines the brand value of an influencer by analyzing the engagement rate of the posts, the quality and domain of the Accounts you are following and other factors. It gives you a standard price per promotion depending on quality and quantity of engagements that happen within your niche influencer domain.
For InfluencersBy Influencer Domains, Demographics, Gender and more
depends on engagement rate of your posts, quality and domain of the Accounts an Influencer follows and more.
depends on quality and quantity of engagements that happen within your niche influencer domain
Know what audience to target to growth your influence and add value to your profile


Based on Mining the Web by Richard Dunks is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object jass.engine.Out jass.engine.InOut jass.generators.SingleMode
public class SingleMode
Vibration model of object with 1 mode Changes in freq damping and gains are linearly changed over one buffer rather than abruptly
| Field Summary | |
|---|---|
protected float |
a
modal parameters |
protected float |
ampR
Reson filter gain. |
protected float |
c_i
Cached values. |
protected float |
cutoffRiseExcitation
Cutoff excitation pulse strength above which a bubble is considered rising |
protected float |
d
modal parameters |
protected float |
f
modal parameters |
protected float |
f_base
modal parameters |
protected float |
f_rise
modal parameters |
protected float |
R2
|
float |
srate
Sampling rate in Hertz. |
protected float[] |
tmpBuf
Temp storage |
protected float |
twoRCosTheta
The transfer function of a reson filter is H(z) = 1/(1-twoRCosTheta/z + R2/z*z). |
protected float |
xi
xi factor for rising bubbles as explained in paper |
protected float |
yt_1
State of filter |
protected float |
yt_2
State of filter |
| Fields inherited from class jass.engine.InOut |
|---|
sourceContainer, sourcePassivity, srcBuffers |
| Fields inherited from class jass.engine.Out |
|---|
buf, bufferSize, bufOld, lock |
| Constructor Summary | |
|---|---|
SingleMode(float f,
float d,
float a,
float srate,
int bufferSize)
Create and initialize with provided modal data. |
|
SingleMode(float srate,
int bufferSize)
Create and initialize, but don't set any modal parameters. |
|
SingleMode(int bufferSize)
Constructor for derived classes to call super |
| Method Summary | |
|---|---|
java.lang.Object |
addSource(Source s)
Add a Source. |
protected void |
computeBuffer()
Compute the next buffer and store in member float[] buf. |
protected void |
computeModalFilterBank(float[] output,
float[] force,
int nsamples)
Apply external force[] and compute response through bank of modal filters. |
void |
computeResonCoeff()
Compute the reson coefficients from the modal model parameters. |
void |
setDamping(float d)
Set damping |
void |
setFreq(float f)
Set freq |
void |
setGain(float a)
Set gain |
void |
setRiseCutoffExcitation(float x)
Set xi value for rising bubbles |
void |
setXi(float x)
Set xi value for rising bubbles |
| Methods inherited from class jass.engine.InOut |
|---|
addSource, getBuffer, getSources, removeSource, resetTime |
| Methods inherited from class jass.engine.Out |
|---|
clearBuffer, copyToOld, getBuffer, getBufferSize, getTime, peekAtBuffer, setBufferSize, setTime, setTimeAndNotify |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public float srate
protected float xi
protected float cutoffRiseExcitation
protected float twoRCosTheta
protected float R2
protected float ampR
protected float c_i
protected float f
protected float f_rise
protected float f_base
protected float d
protected float a
protected float[] tmpBuf
protected float yt_1
protected float yt_2
| Constructor Detail |
|---|
public SingleMode(int bufferSize)
bufferSize
- Buffer size used for real-time rendering.public SingleMode(float srate, int bufferSize)
srate
- sampling rate in Hertz.bufferSize
- Buffer size used for real-time rendering.public SingleMode(float f, float d, float a, float srate, int bufferSize)
f
- freq.d
- dampinga
- gainsrate
- sampling rate in Hertz.bufferSize
- Buffer size used for real-time rendering.| Method Detail |
|---|
public void setXi(float x)
x
- xi value (0.1 is normal)public void setRiseCutoffExcitation(float x)
x
- excitation value above which bubble is considered risingpublic java.lang.Object addSource(Source s) throws SinkIsFullException
addSource
in interface Sink
addSource
in class InOut
s
- Source to add.
SinkIsFullException
public void computeResonCoeff()
#setLocation
.
protected void computeBuffer()
computeBuffer
in class Out
public void setDamping(float d)
d
- damping scale.public void setFreq(float f)
f
- freq.public void setGain(float a)
a
- gainprotected void computeModalFilterBank(float[] output, float[] force, int nsamples)
output
- user provided output buffer.force
- input force.nsamples
- number of samples to compute.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


The answer: 0,1.
Functions counter and counter2 are created by different invocations of makeCounter.
counter
counter2
makeCounter
So they have independent outer Lexical Environments, each one has its own count.
count


The img
element is powerful – it downloads, decodes and renders content – and modern browsers support a range of image formats. Including images that work across devices is no different than for desktop, and only requires a few minor tweaks to create a good experience.
picture
element when you want to specify different images depending on device characteristics (a.k.a. art direction).srcset
and the x
descriptor in the img
element to give hints to the browser about the best image to use when choosing from different densities.Remember to use relative units when specifying widths for images to prevent them from accidentally overflowing the viewport. For example, width: 50%;
, will cause the image width to be 50% of the containing element (not the viewport or actual pixel size).
Because CSS allows content to overflow its container, it may be necessary use max-width: 100% to prevent images and other content from overflowing. For example:
img, embed, object, video {
max-width: 100%;
}
Be sure to provide meaningful descriptions via the alt
attribute on img
elements; these help make your site more accessible by providing context to screen readers and other assistive technologies.
img
’s with srcset
for high DPI devicesThe srcset
attribute enhances the behavior of the img
element, making it easy to provide multiple image files for different device characteristics. Similar to the image-set
CSS function native to CSS, srcset
allows the browser to choose the best image depending on the characteristics of the device, for example using a 2x image on a 2x display, and potentially in the future, a 1x image on a 2x device when on a limited bandwidth network.
<img src="photo.png"<EMAIL_ADDRESS>2x" ...>
On browsers that don’t support srcset
, the browser simply uses the default image file specified by the src
attribute. This is why it is important to always include a 1x image that can be displayed on any device, regardless of capabilities. When srcset
is supported, the comma-separated list of image/conditions is parsed prior to making any requests, and only the most appropriate image is downloaded and displayed.
While the conditions can include everything from pixel density to width and height, only pixel density is well supported today. To balance current behavior with future features, stick with simply providing the 2x image in the attribute.
picture
Changing images based on device characteristics, also known as art direction can be accomplished using the picture element. The picture
element defines a declarative solution for providing multiple versions of an image based on different characteristics, like device size, device resolution, orientation, and more.
=======
>>>>>>> origin/master
Important
picture
element is beginning to land in browsers. Although it's not available in every browser yet, we recommend its use because of the strong backward compatibility and potential use of the Picturefill polyfill. See the ResponsiveImages.org site for further details.The picture
element should be used when an image source exists in multiple densities, or when a responsive design dictates a somewhat different image on some types of screens. Similar to the video
element, multiple source
elements can be included, making it possible to specify different image files depending on media queries or image format.
<picture>
<source media="(min-width: 800px)" srcset="head.jpg, head-2x.jpg 2x">
<source media="(min-width: 450px)" srcset="head-small.jpg, head-small-2x.jpg 2x">

</picture>
In the above example, if the browser width is at least 800px, then either head.jpg
or head-2x.jpg
will be used, depending on the device resolution. If the browser is between 450px and 800px, then either head-small.jpg
or head-small-2x.jpg
will be used, again, depending on the device resolution. For screen widths less than 450px and backwards compatibility where the picture
element isn’t supported, the browser will render the img
element instead, and should always be included.
When the final size of the image isn’t known, it can be difficult to specify a density descriptor for the image sources. This is especially true for images that span a proportional width of the browser and are fluid, depending on the size of the browser.
Instead of supplying fixed image sizes and densities, the size of each supplied image can be specified by adding a width descriptor along with the size of the image element, allowing the browser to automatically calculate the effective pixel density and choose the best image to download.

The above example renders an image that is half of the viewport width (sizes="50vw"
), and depending on the width of the browser and it’s device pixel ratio, allowing the browser to choose the correct image regardless of how large the browser window is. For example, the table below shows which image the browser would choose:
In many cases, the size or image may change depending on the site’s layout breakpoints. For example, on a small screen, you might want the image to span the full width of the viewport, while on larger screens, it should only take a small proportion.

The sizes
attribute in the above example uses several media queries to specify the size of the image. When the browser width is greater than 600px, the image will be 25% of the viewport width, when it is between 500px and 600px, the image will be 50% of the viewport width, and below 500px, it will be full width.
Customers want to see what they’re buying. On retail sites, users expect to be able to view high resolution closeups of products to get a better look at details, and study participants got frustrated if they weren’t able to.
A good example of tappable, expandable images is provided by the J. Crew site.
An disappearing overlay indicates that an image is tappable, providing a zoomed in image with fine detail visible.
The compressive image technique serves a highly compressed 2x image to all devices, no matter the actual capabilities of the device. Depending on the type of image and level of compression, image quality may not appear to change, but the file size drops significantly.
Important
JavaScript image replacement checks the capabilities of the device and "does the right thing". You can determine device pixel ratio via window.devicePixelRatio
, get screen width and height, and even potentially do some network connection sniffing via navigator.connection
or issuing a fake request. Once you’ve collected all of this information, you can decide which image to load.
One big drawback to this approach is that using JavaScript means that you will delay image loading until at least the look-ahead parser has finished. This means that images won’t even start downloading until after the pageload
event fires. In addition, the browser will most likely download both the 1x and 2x images, resulting in increased page weight.
The CSS `background` property is a powerful tool for adding complex images to elements, making it easy to add multiple images, cause them to repeat, and more. When combined with media queries, the background property becomes even more powerful, enabling conditional image loading based on screen resolution, viewport size and more.
background-image
property in CSS for high DPI displays using media queries with min-resolution
and -webkit-min-device-pixel-ratio
.Media queries not only affect the page layout, but can also be used to conditionally load images or to provide art direction depending on the viewport width.
For example in the sample below, on smaller screens, only small.png
is downloaded and applied to the content div
, while on larger screens, background-image: url(body.png)
is applied to the body and background-image: url(large.png)
is applied to the content div
.
.example {
height: 400px;
background-image: url(small.png);
background-repeat: no-repeat;
background-size: contain;
background-position-x: center;
}
@media (min-width: 500px) {
body {
background-image: url(body.png);
}
.example {
background-image: url(large.png);
}
}
The image-set()
function in CSS enhances the behavior background
property, making it easy to provide multiple image files for different device characteristics. This allows the browser to choose the best image depending on the characteristics of the device, for example using a 2x image on a 2x display, or a 1x image on a 2x device when on a limited bandwidth network.
background-image: image-set(
url(icon1x.jpg) 1x,
url(icon2x.jpg) 2x
);
In addition to loading the correct image, the browser will also scale it accordingly. In other words, the browser assumes that 2x images are twice as large as 1x images, and so will scale the 2x image down by a factor of 2, so that the image appears to be the same size on the page.
Support for image-set()
is still new and is only supported in Chrome and Safari with the -webkit
vendor prefix. Care must also be taken to include a fallback image for when image-set()
is not supported, for example:
.sample {
width: 128px;
height: 128px;
background-image: url(icon1x.png);
background-image: -webkit-image-set(
url(icon1x.png) 1x,
url(icon2x.png) 2x
);
background-image: image-set(
url(icon1x.png) 1x,
url(icon2x.png) 2x
);
}
The above will load the appropriate asset in browsers that support image-set, and fall back to the 1x asset otherwise. The obvious caveat is that while image-set()
browser support is low, most browsers will get the 1x asset.
Media queries can create rules based on the device pixel ratio, making it possible to specify different images for 2x vs 1x displays.
@media (min-resolution: 2dppx),
(-webkit-min-device-pixel-ratio: 2)
{
/* High dpi styles & resources here */
}
Chrome, Firefox and Opera all support the standard (min-resolution: 2dppx)
, while Safari and Android Browser both require the older vendor prefixed syntax without the dppx
unit. Remember, these styles are only loaded if the device matches the media query, and you must specify styles for the base case. This also provides the benefit of ensuring something will be rendered if the browser doesn’t support resolution specific media queries.
.sample {
width: 128px;
height: 128px;
background-image: url(icon1x.png);
}
@media (min-resolution: 2dppx), /* Standard syntax */
(-webkit-min-device-pixel-ratio: 2) /* Safari & Android Browser */
{
.sample {
background-size: contain;
background-image: url(icon2x.png);
}
}
You can also use the min-width syntax to display alternative images depending on the viewport size. This technique has the advantage that the image is not downloaded if media query doesn’t match. For example, bg.png
is only downloaded and applied to the body
if the browser width is 500px or greater:
@media (min-width: 500px) {
body {
background-image: url(bg.png);
}
}
When adding icons to your page, use SVG icons where possible or in some cases, unicode characters.
Many fonts include support for the myriad of unicode glyphs, which can be used instead of images. Unlike images, unicode fonts scale well, and look good no matter how small or large they appear on screen.
Including a unicode character is done in the same way named entities are: &#XXXX
, where XXXX
represents the unicode character number. For example:
You're a super ★
For more complex icon requirements, SVG icons are generally lightweight, easy to use and can be styled with CSS. SVG have a number of advantages over raster images:
With SVG icons, you can either add icons using inline SVG, like
this checkmark:
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="32" height="32" viewBox="0 0 32 32">
<path d="M27 4l-15 15-7-7-5 5 12 12 20-20z" fill="#000000"></path>
</svg>
or by using an image tag, like this credit card icon:
.
Icon fonts are popular, and can be easy to use, but have some drawbacks compared to SVG icons.
With Font Awesome, you can either add icons by using a unicode
entity, like this HTML5 logo ()
or by adding special classes to an  element like the CSS3
logo ().
There are hundreds of free and paid icon fonts available including Font Awesome, Pictos and Glyphicons.
Be sure to balance the weight of the additional HTTP request and file size with the need for the icons. For example, if you only need a handful of icons, it may be better to use an image or an image sprite.
Images often account for most of the downloaded bytes and also often occupy a significant amount of the visual space on the page. As a result, optimizing images can often yield some of the largest byte savings and performance improvements for your website: the fewer bytes the browser has to download, the less competition there is for client's bandwidth and the faster the browser can download and display all the assets.
There are two types of images to consider: vector images and raster images. For raster images, you also need to choose the right compression format, for example: GIF
, PNG
, JPG
.
Raster images, like photographs and other images which are represented as a grid of individual dots or pixels. Raster images typically come from a camera or scanner, or can be created in the browser with the canvas
element. As the image size gets larger, the file size grows as well. When scaled larger than their original size, raster images get blurry as the browser needs to guess how to fill in the missing pixels.
Vector images, such as logos and line art are be defined by a set of curves, lines, shapes and fill colors. Vector images are created with programs like Adobe Illustrator or Inkscape and saved to a vector format like SVG
. Because vector images are built on simple primitives, they can be scaled without any loss in quality without a change in file size.
When choosing the right format, it is important to consider both the origin of the image (raster or vector), and the content (colors, animation, text, etc). No one format will fit all image types and each has its own strengths and weaknesses.
Start with these guidelines when choosing the right format:
JPG
for photographic images.SVG
for vector art and solid color graphics such as logos and line art. If vector art is unavailable, try WebP or PNG.PNG
rather than GIF
as it allows for more colors and offers better compression ratios.<video>
which provide better image quality and gives the user control over playback.Image file size can be considerably reduced by ‘post-processing’ them after saving. There are a number of tools for image compression – lossy and lossless, online, GUI, command line. Where possible, it’s best to try automating image optimization so that it’s a first-class citizen in your workflow.
Several tools are available that perform further, lossless compression on JPG
and PNG
files, with no effect on image quality. For JPG
, try jpegtran or jpegoptim (available on Linux only; run with the –strip-all option). For PNG
, try OptiPNG or PNGOUT.
CSS spriting is a technique whereby a number of images are combined in a single ‘sprite sheet’ image. Individual images can then be used by specifying the background image for an element (the sprite sheet) plus an offset to display the correct part.
<<<<<<>>>>>> origin/master
.sprite-sheet {
background-image: url(sprite-sheet.png);
width: 40px;
height: 25px;
}
.google-logo {
width: 125px;
height: 45px;
background-position: -190px -170px;
}
.gmail {
background-position: -150px -210px;
}
.maps {
height: 40px;
background-position: -120px -165px;
}
Spriting has the advantage of reducing the number of downloads required to get multiple images, while still enabling caching.
Lazy loading can significantly speed up loading on long pages that include many images below the fold by loading them either as needed or once the primary content has finished loading and rendering. In addition to performance improvements, using lazy loading can create infinite scrolling experiences.
Be careful when creating infinite scrolling pages, because content is loaded as it becomes visible, search engines may never see that content. In addition, users who are looking for information they expect to see in the footer will never see the footer because new content is always loaded.
Sometimes, the best image isn't actually an image at all. Whenever possible, use the native capabilities of the browser to provide the same or similar functionality. Browsers generate visuals that would have previously required images. This means that browsers no longer need to download separate image files and prevents awkwardly scaled images. Icons can be rendered using unicode or special icon fonts.
Wherever possible, text should be text, and not embedded into images, for example using images for headlines, or placing contact information like phone numbers or addresses directly into images. This prevents people from being able to copy and paste the information, makes it inaccessible for screen readers, and isn’t responsive. Instead, place the text in your markup and if necessary use webfonts to achieve the style you need.
Modern browsers can use CSS features to create styles that would previously required images. For examples, complex gradients can be created using the background
property, shadows can be created using box-shadow
and rounded corners can be added with the border-radius
property.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque sit amet augue eu magna scelerisque porta ut ut dolor. Nullam placerat egestas nisl sed sollicitudin. Fusce placerat, ipsum ac vestibulum porta, purus dolor mollis nunc, pharetra vehicula nulla nunc quis elit. Duis ornare fringilla dui non vehicula. In hac habitasse platea dictumst. Donec ipsum lectus, hendrerit malesuada sapien eget, venenatis tempus purus.

Keep in mind that using these techniques does require rendering cycles, which can be significant on mobile. If over-used, you’ll lose any benefit you may have gained and may hinder performance.
Learn about the simplest ways to add video to your site and ensure users get the best possible experience on any device.
Add the video element to load, decode, and play video in your site:
This browser does not support the video element.
<video src="chrome.webm" type="video/webm">

Your browser does not support the video element.

</video>
Not all browsers support the same video formats. The <source>
element lets you specify multiple formats as a fallback in case the user’s browser doesn’t support one of them. For example:
<video controls>
<source src="chrome.webm" type="video/webm">
<source src="chrome.mp4" type="video/mp4">

This browser does not support the video element.

</video>
When the browser parses the <source>
tags, it uses the optional type
attribute to help decide which file to download and play. If the browser supports WebM, it will play chrome.webm, if not, it will check if it can play MPEG-4 videos. Check out A Digital Media Primer for Geeks to find out more about how video and audio work on the web.
This approach has several advantages over serving different HTML or server-side scripting, especially on mobile:
All of these points are especially important in mobile contexts, where bandwidth and latency are at a premium, and the user’s patience is likely to be limited. Not including a type attribute can affect performance when there are multiple sources with unsupported types.
Using your mobile browser developer tools, compare network activity with type attributes and without type attributes. Also check the response headers in your browser developer tools to ensure your server reports the right MIME type; otherwise video source type checks won’t work.
Save bandwidth and make your site feel more responsive: use the Media Fragments API to add a start and end time to the video element.
This browser does not support the video element.
To add a media fragment, you simply add #t=[start_time][,end_time]
to the media URL. For example, to play the video between seconds 5 through 10, specify:
<source src="video/chrome.webm#t=5,10" type="video/webm">
You can also use the Media Fragments API to deliver multiple views on the same video – like cue points in a DVD – without having to encode and serve multiple files.
Remember
Using your browser developer tools, check for Accept-Ranges: bytes
in the response headers:
Add a poster attribute to the video element so that your users have an idea of the content as soon as the element loads, without needing to download video or start playback.
<video poster="poster.jpg" ...>
...
</video>
A poster can also be a fallback if the video src
is broken or none of the video formats supplied are supported. The only downside to poster images is an additional file request, which consumes some bandwidth and requires rendering. For more information see Image optimization.
Here’s a side-by-side comparison of videos without and with a poster image – we’ve made the poster image grayscale to prove it’s not the video:
Not all video formats are supported on all platforms. Check which formats are supported on the major platforms and make sure your video works in each of these.
Use canPlayType()
to find out which video formats are supported. The method takes a string argument consistent of a mime-type
and optional codecs and returns one of the following values:
Here are some examples of canPlayType()
arguments and return values when run in Chrome:
There are lots of tools to help save the same video in different formats:
Want to know which video format was actually chosen by the browser?
In JavaScript, use the video’s currentSrc
property to return the source used.
To see this in action, check out this demo: Chrome and Firefox choose chrome.webm
(because that’s the first in the list of potential sources these browsers support) whereas Safari chooses chrome.mp4
.
When it comes to keeping your users happy, size matters.
The actual video frame size as encoded may be different from the video element dimensions (just as an image may not be displayed using its actual dimensions).
To check the encoded size of a video, use the video element videoWidth
and videoHeight
properties. width
and height
return the dimensions of the video element, which may have been sized using CSS or inline width and height attributes.
When video elements are too big for the viewport, they may overflow their container, making it impossible for the user to see the content or use the controls.
You can control video dimensions using JavaScript or CSS. JavaScript libraries and plugins such as FitVids make it possible to maintain appropriate size and aspect ratio, even for Flash videos from YouTube and other sources.
Use CSS media queries to specify the size of elements depending on the viewport dimensions; max-width: 100%
is your friend.
Use CSS media queries for responsiveness
For media content in iframes (such as YouTube videos), try a responsive approach (like the one proposed by John Surdakowski).
Remember
CSS:
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
HTML:

Compare the responsive sample to the unresponsive version.
Different platforms display video differently. Mobile solutions need to consider device orientation. Use Fullscreen API to control the fullscreen view of video content.
Different platforms display video differently. Mobile solutions need to consider device orientation. Use Fullscreen API to control the fullscreen view of video content.
Device orientation isn’t an issue for desktop monitors or laptops, but is hugely important when considering web page design for mobile and tablets.
Safari on iPhone does a good job of switching between portrait and landscape orientation:
Device orientation on an iPad and Chrome on Android can be problematic. For example, without any customization a video playing on an iPad in landscape orientation looks like this:
Setting the video width: 100%
or max-width: 100%
with CSS can resolve many device orientation layout problems. You may also want to consider fullscreen alternatives.
Different platforms display video differently. Safari on an iPhone displays a video element inline on a web page, but plays video back in fullscreen mode:
On Android, users can request request fullscreen mode by clicking the fullscreen icon. But the default is to play video inline:
Safari on an iPad plays video inline:
For platforms that do not force fullscreen video playback, the Fullscreen API is widely supported. Use this API to control fullscreening of content, or the page.
To full screen an element, like a video:
elem.requestFullScreen();
To full screen the entire document:
document.body.requestFullScreen();
You can also listen for fullscreen state changes:
video.addEventListener("fullscreenchange", handler);
Or, check to see if the element is currently in fullscreen mode:
console.log("In full screen mode: ", video.displayingFullscreen);
You can also use the CSS :fullscreen
pseudo-class to change the way elements are displayed in fullscreen mode.
On devices that support the Fullscreen API, consider using thumbnail images as placeholders for video:
This browser does not support the video element.
To see this in action, check out the demo.
NOTE: requestFullScreen()
is currently vendor prefixed and may require extra code for full cross browser compatibility.
Accessibility isn't a feature. Users who can't hear or see won't be able to experience a video at all without captions or descriptions. The time it takes to add these to your video is much less than the bad experience you are delivering to users. Provide at least a base experience for all users.
To make media more accessible on mobile, include captions or descriptions using the track element.
Remember
Using the track element, captions appear like this:
It’s very easy to add captions to your video – simply add a track element as a child of the video element:
<video controls>
<source src="chrome.webm" type="video/webm" />
<source src="chrome.mp4" type="video/mp4" />
<track src="chrome-subtitles-en.vtt" label="English captions"
kind="captions" srclang="en" default>

This browser does not support the video element.

</video>
The track element src
attribute gives the location of the track file.
A track file consists of timed ‘cues’ in WebVTT format:
WEBVTT
00:00.000 --> 00:04.000
Man sitting on a tree branch, using a laptop.
00:05.000 --> 00:08.000
The branch breaks, and he starts to fall.
...
A quick overview of properties on the video element.
For the complete list of video element attributes and their definitions, see the video element spec.
On desktop, autoplay
tells the browser to immediately start downloading and playing the video as soon as it can. On iOS, and Chrome for Android, autoplay
doesn’t work; users must tap the screen to play the video.
Even on platforms where autoplay is possible, you need to consider whether it’s a good idea to enable it:
Autoplay behavior is configurable in the Android WebView via the WebSettings API. It defaults to true but a WebView app can choose to disable it.
The preload
attribute provides a hint to the browser as to how much information or content should be preloaded.
The preload
attribute has different effects on different platforms. For example, Chrome buffers 25 seconds of video on desktop, none on iOS or Android. This means that on mobile, there may be playback startup delays that don’t happen on desktop. See Steve Souders’ test page for full details.
The HTML5 Rocks Video article does a great job of summarizing the JavaScript properties, methods, and events that can be used to control video playback. We’ve included that content here, updating it with mobile-specific concerns where relevant.
Neither playbackRate (see demo) nor volume are supported on mobile.
On mobile (apart from Opera on Android) play() and pause() don’t work unless called in response to user action, such as clicking a button: see the demo. (Likewise, playback can’t be initiated for content such as embedded YouTube videos.)
These are only a subset of the media events that may be fired. Refer to the Media events page on the Mozilla Developer Network for a complete listing.


Before Change
// Find an existing variable.
with tf.variable_scope(name):
i = 0
while True:
try:
curr_core_var = tf.get_variable("core_%d" % i,
dtype=dtype, trainable=trainable,
collections=collections,
caching_device=caching_device)
variable_cores.append(curr_core_var)
i += 1
except ValueError as e:
if i == 0:
// The variable doesn"t exist or it does but scope.reuse == False,
// raise ValueError.
raise e
else:
// We found all the cores, the i-th core doesn"t exist.
break
// TODO: restore all attrubutes as well.
v = tensor_train.TensorTrain(variable_cores, convert_to_tensors=False)
else:
// Create new variable.
with tf.variable_scope(name):
After Change
if v.name == path:
found_v = v
break
if found_v is None:
raise ValueError("ValueError: Variable does not exist, or was not "
"created with t3f.get_tt_variable(). Did you mean to "
"set reuse=None in VarScope?")
with tf.variable_scope(name):
// Try to get the first core through tf.get_variable to check that we don"t
// violate reuse: it will raise a ValueError otherwise.
tf.get_variable("core_0")


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/tc.html ---
I just discovered that core has transitive closure and is called tc
tc
(source link for the lazy)
Last updated: Apr 24 2020 at 19:02 UTC


Late-season tropical storm forms northeast of Leeward Islands
CHARLOTTE, N.C. (WBTV) - Sebastien formed east of the Leeward Islands Tuesday morning, becoming the 19th named storm of the 2019 Atlantic hurricane season.
Tropical Storm Sebastien is currently a broad area of low pressure located about 250 miles northeast of the northern Leeward Islands, and is gradually becoming better organized, producing heavy rain and thunderstorms in the open waters of the Atlantic.
The tropical storm will continue its northward track, therefore it posses no threat to Caribbean Islands or Bermuda now or in the days to come.
Earlier this morning, satellite imagery indicated a well-defined system that could easily create tropical storm force winds so this disturbance was given the name Sebastien. At last check, tropical-storm-force winds extend outward up to 105 miles from Sebastien's center.
While some growth is expected over the next couple of days, the system is forecast to interact with a frontal system by midweek and further development is unlikely after that time.
If you think this development is rare concerning the time of year, it is. Tropical weather experts say roughly 3% of an average Atlantic hurricane season’s activity occurs after Nov. 18.