No goals as SuperSport, Arrows draw
Cape Town - There was no separating SuperSport United and Golden Arrows as they played to an entertaining 0-0 draw at the Mbombela Stadium on Tuesday evening.
Arrows came flying out of the starting blocks and created two chances in quick succession as Ntsako Makhubela fired straight at SuperSport keeper Ronwen Williams, who was called into action again two minutes later to keep out Seth Parusnath's long-range effort.
SuperSport hit back a few minutes later as Thamsanqa Gabuza's driven effort forced a fingertip save from Arrows keeper Edmore Sibanda, before Dean Furman fired just wide of the left-hand upright from outside the box.
And the two teams continued to trade blows as Arrows forged two more opportunities, Danny Phiri shooting wide after being teed up by Parusnath, while Siyabonga Dube also failed to hit the target for the visitors.
However, Arrows were let off the hook on the 20-minute mark as a well worked team move ended with Evans Rusike somehow failing to hit the target when well placed to score.
SuperSport continued to threaten but a lack of cutting edge in front of goal let them down on more than one occasion, with Jamie Webber dragging a shot wide before seeing a powerful long-range effort kept out by Sibanda.
While the first stanza had offered up plenty of goal-scoring chances, the same cannot be said of the second half.
Chances were at a premium at both ends of the pitch, with the two teams showcasing their defensive abilities.
A rare chance presented itself in the 52nd minute as SuperSport whipped in a cross from out wide, but it came to nothing as Gabuza headed over the bar.
Arrows eventually lodged a shot on goal with roughly ten minutes remaining as substitute Danny Venter's shot forcing Williams into making a fingertip save, deflecting the ball onto the woodwork.
And Venter was proving to be a real thorn in the side of the SuperSport defence as he again forced Williams into making a save a few minutes later.
However, with neither side able to find the all-important breakthrough, the match would end with the scoreline still goalless.


We work to ensure every student, regardless of their situation, gets the education they deserve. As of today, more than 250 million children worldwide have not yet achieved basic literacy and numeracy. Some reasons why include...
{{item.text}}
The Oppia Foundation is a 501(c)(3) nonprofit focused on providing quality education to those who lack access to it.
We work towards this through the creation of free, engaging, and effective lessons built on our online learning platform, Oppia.
As seen in:
Oppia is an engaging new approach to online learning that caters specifically to the unique needs of the world's most underserved youth.
{{item.text}}
“ {{learner.testimonial}} ”
- Student, {{learner.age}} years old, from {{learner.location}}
{{engagementDescriptionText.donate}}
{{engagementDescriptionText.partner}}
{{engagementDescriptionText.volunteer}}
Keep in touch by subscribing to our newsletter!
If you have any questions, feel free to send us an email or fill out our Contact Us form.


Olivia Culpo gives a sneak peek of her Sports Illustrated Swimsuit shoot: 'Posing next to a random bucket'
by Stephanie NolascoOlivia Culpo is giving her followers a sneak peek of her next sizzling photoshoot.
The 27-year-old shared several photos from her recent Sports Illustrated Swimsuit shoot in Bali on Instagram.
“Last bts [behind-the-scenes] from @si_swimsuit last week, I promise!” Culpo captioned the slideshow. “Exclusively featuring some underboob and posing next to a random bucket.”
The former Miss Universe winner flaunted her curves in a white bikini, as well as a racy tied-off shirt that left little to the imagination. The model proudly unveiled her toned abs while working it for the cameras.
OLIVIA CULPO CELEBRATES LAST DAY OF BALI VACATION WITH NEON GREEN BIKINI PICS
OLIVIA CULPO SHARES EMOTIONAL PHOTOS SHOWING HER BATTLE WITH DEPRESSION, PERSONAL STRUGGLES
Culpo will be featured in the magazine for the third time in 2020.
The Rhode Island-born star previously revealed on social media she last visited Indonesia while reigning as Miss Universe.
“Can I stay here forever???” she wrote. “#Indonesia Swipe to see the last time I was here for a month when I was miss universe. I love this beautiful country so much.”
This past May, Culpo told Fox News the days leading up to her appearance in the 2019 Sports Illustrated Swimsuit issue was a nerve-wracking experience.
"When I was holding the python I was definitely nervous and then I'm really nervous just leading up to it because I want to make sure that I'm doing everything I can to feel the best and hopefully make the best picture," she explained. "So there's a lot of pressure for sure."
OLIVIA CULPO SHOWS OFF BODY IN SKINTIGHT JUMPSUIT AT 'SPORTS ILLUSTRATED SWIMSUIT' OPEN CASTING CALL
To feel her best, Culpo said she follows a "really strict diet."
"No sugar. No carbs. No alcohol," the brunette stunner revealed. "Basically, all protein and fiber and the only kinds of carbs I'll have is sweet potato or greens or fruit."
So what was the first thing she splurged on after posing for this year's SI Swimsuit issue? "Honestly, I think it was wine," shared Culpo, who added that she typically leads a "lifestyle that's balanced" or what she refers to as the "80-20 rule" when she's not prepping for a shoot.
"I really don't believe in dieting," she explained. "I notice that when I have a shoot coming up or when I'm being really diligent about my diet, I can pretty much do it up until the day or two before and then I start to go crazy, and basically like self-sabotage myself. As soon as I tell myself I can't have sweets then I really want sweets."
When it comes to dealing with critics on social media, the influencer admitted it "can be really, really difficult."
OLIVIA CULPO SAYS MARRIED MEN SLIDE INTO HER DMS
"I definitely see a lot of my friends who are in the public eye struggle as well or get wrapped up in it and it's hard not to sometimes lash out at people or ask them why they're saying certain things," Culpo explained. "But I've honestly been able to develop some pretty thick skin and I have a really great support system as well and the way that I think of it is if there's anything I ever really needed to know, good or bad, my friends and family who actually know me will tell me that.
CLICK HERE TO GET THE FOX NEWS APP
"So when I read mean things online, I don't take it seriously, I really just try to ignore the noise — that's my phrase — because you can't really control what other people are going to say and a lot of the times they don't know you at all."
Fox News’ Mariah Haas contributed to this report.


In New York people bend to the fitful will of public transit. That evening, I knew I was already late when I got to the bus stop but I wasn’t worried; my friends could stand to have another beer while they waited. And besides, they understand that in this city people need to be lenient when it comes to punctuality. Traffic is too thick and public transportation too fickle for anything else.
But even as I tried to board the bus I knew there’d be trouble.
“Do you stop on 110th and 3rd?”  His dark suit and matching hat told of humble begginings and the worn edges of his briefcase exhaled with age. The guy looked like he’d stepped off the stage of The Music Man in 1930 and had been walking ever since. At Houston, just before 1st street, the driver told him that no, he didn’t stop at 110th and 3rd. “But you take 3rd avenue all the way up, right?” The bus driver, with a heavy lower lip and and a tendancy to roll his eyes was showing all signs of being weary of the general public.
“Yeah, and I stop at 108th street and again at 111th street so you can get out at one of those.”
“Well, you can stop at 110th for me when you get there, right?” The driver sulked a bit deeper in his seat and looked at the old man with disbelief.
 “Have a seat.” The old man hobbled off and grabbed a seat in the front. I waited patiently for him to move out of my way and that’s when I noticed — to my great surprise and interest — that so did the line of New Yorkers behind me.
Unexpected. I’d always thought these people to be animals, on a clock and unstable, mouths frothing with frustration at the slightest obstacle. Hmm… or maybe that’s just LA.
What is usually a 10 minute ride so easily turns into 25 though, when at every stop it seems the bus has stopped for quadriplegics and septegenarians. At one point we were stopped for a good 10 minutes for the usual herding of the senior citizens, and on top of that the bus driver had to stand to break up a fight I hadn’t seen start at the front of the bus between two meth addicts about to fall over on school kids.  But again, I seemed to be the only one visually bothered by the disturbance. Maybe I just haven’t been here long enough.
–
I got off at 35th street and walked into Third and Long, the pub where my friends were waiting. There was already a thick fog in the night and the tip of the Empire State building a few blocks away was completely shrouded in mist and cloud. Peter and Jeff were right at the entrance of the pub, each cradling an almost finished ale.
“I’m excited,” Peter told me after the usual pleasantries, “this seems like such a New Yorky thing to do.”
“Well, that makes for two of us,” I told him, “I’ve never been to an art show either. I have no idea what to expect. But Em told me there’d be free booze and probably food, so…”
“Yeah, so, who’s this Em chick?” Jeff asked. I looked at Peter, figuring maybe he would’ve mentioned it already. But no.
“She was in our highschool class,” I told him. “We weren’t friends or anything but, you know how facebook can be.”
“Ahh,” he said, “one of those.” Jeff finished his beer. I pondered getting one myself, but it didn’t look like this was the place to stay if we wanted another round before hitting up this supposed art show. ”Where is this place we’re supposed to go, anyway?” Jeff asked.
“It’s, uh, what’d I say earlier…529 Third?” I mumbled, pointing up the block. “Yeah, yeah…it should be this block up here. Have you guys checked it out?”
“We walked around the block but didn’t see anything obvious,” Peter said.
“Well, shit,” I said, “then, let’s finish those beers and go find this place, eh? They have free booze over there…”
“And food, I hope,” Jeff said. “They’d better, anyway. All I ate today was a gyro in the morning…”
–
After some ten thin slices of mozzarella, and three or four of the fancy cheeses that came around less often, the four glasses of wine we’d each had started kicking in. I’d wanted to flee as soon as I saw the place. It was a small frame shop where everything had bee pushed to the back to create mingling space in the middle. It was chock full of unattractive people that seemed overdressed in order to impress themselves.
The walls were covered in colorful childish abstractions of birds and feathers by a guy named Britto. It wasn’t bad and I didn’t dislike it, but it wasn’t anything I was really impressed with either. There were also three or four pictures taken in different places around the world — cheap, low-res pictures that didn’t belong on someone’s screensaver, let alone at an art gallery. And then there was one painting by The Subway Artist.
It was his show, mind you.
One.
Painting.
When we’d first arrived Em approached our band of out-of-place misfits and introduced herself to Peter and Jeff. I was surprised she hadn’t remembered either one of them from highschool, but I guess that made the conversation a little fresher to start off with. After plenty of wine and the aforementioned bits of cheese, I think they all started remembering things a bit more clearly, like who’d had which teacher for what subject, who people had dated and other contrived and trivial matters. I started getting bored.
“So after I graduated I thought, ‘why not do something different’, you know? So that’s what I did!  “And it was hard at first, you know, like meeting people in the city, and learning, like, what to wear and, like, where to go but things are really going well for me now and my group of girlfriends, we totally go out together all the time now and blah blah blah…”
I took a deep breath and exhaled long and loud, and Peter gave me a stern look of disapproval, but Em left to mingle somewhere else, seemingly unaware of my hostility.
“Take it easy, man.” Peter told me once she’d left. “These are people we know, and our circles are small. These things come back to bite you in the ass.” I rolled my eyes.  Fine, I lied.
Suddenly, and for no reason I could understand, she returned, half-drunk in an instant, dragging in her arms a thin black man. The Artist, I assumed.
“You guys, this is Enrico — he’s the artist,” she shouted, though the room was not so loud. Her voice was starting to slip from her control and I guessed that she would soon start yelling from all the cheap wine she’d had while mingling with us. I could hardly blame her. “Enrico, these guys went to highschool with me, but it’s not like we were ever friends,” she slurred, and then turned to us, “right?” and we weren’t sure what to say. It was true, and I felt the same way, but who wants to call attention to that ten years later? It was a rattling affair to have to put up with and Enrico’s graveyard breath wasn’t making things any easier. We were glad when he slid off to mingle with some other clique and Em disapeared with him.
“I like his style,” I told Peter.  He sipped at his red wine and Jeff offered him a piece of cheese, which he took.
“I think it’d be cool if he did a Warhol thing and actually painted a Subway map ON a Subway map,” I said, thinking out loud.
Peter’s eyes beamed and he finished his wine. “That’s a great idea,” he said, putting his plastic cup down. “You should totally tell him that!” I dismissed him with a spurnful roll of the eyes.
“Right,” I said. “I’m sure artists love having wayward drunks come in from the streets of Murray Hill and tell them how to paint.”
“Well, he looks like he needs some ideas, wouldn’t you say?” Jeff suggested. Which was true. The man did, after all, have only one painting at his own gallery showing.
 “I think I’ve had five glasses of wine and I haven’t eaten anything. I might fall over soon.” But Peter wasn’t having it.
“Get yourself together, man. We’ll get out of here soon enough.” Jeff consented silently, looking sullen and worn with heavy eyelids from the red wine. Peter looked at me and lowered his voice a bit. “I’m rethinking this highschool reunion thing,” he said. I knew he’d been excited for a five-year reunion that never happened but he was nervous about the ten-year one coming up. “Even if I’m in the San Francisco in October, I think there’s very little chance of me showing up. Not after what I’ve seen here tonight.”
“You bet,” I said, thinking of how tired I was of having to condense the last ten years of my fast life into thirty seconds of chit-chat every time I met someone from highschool.  It was all I could do to keep the paintings up on the wall instead of taking them down and slamming them over their boring faces, maybe adding some color to their outlook.
When Em’s short blond friend — Heidi from Iowa, I think — started talking to me about her boyfriend and how she loved having someone she needed in her life, I pulled out the stops. Normally I reserve the harsher, more pointed rhetoric for those friends of mine who have proven — through continued tolerance of my presence — that they can handle it without throwing me into a ditch out of embarassment. But she was asking for it with talk like that in a crowded place, when my head was full of wine and I was bored of the crowd. Her bright blue eyes, young and shallow, had a strange, almost opiate constriction to them, and if she wasn’t so calm and bland I would’ve known instantly that I was dealing with some kind of cocaine or morphine freak.
“Nonsense,” I told her, sometime around my sixth glass of wine. “Necessity is the clearest sign of weakness.” I felt detached from the scene. This was not a person I was speaking to, it was an ideal, one I felt at odds with. I could feel a look callous indifference crawling on my face, and didn’t bother to register her reaction to it.
Then I felt Peter, who’d been standing just behind me, give me a nudge to take it easy again. I nudged him back.
“It’s better to wake up every day and choose to once again have that person in your life than to be resigned to it,” I told her, and sipped my wine. She looked slightly scared, like she’d never considered the prospect before. ”Otherwise it’s all just a cage and you’re just another sap waiting for your time to run out. I think you’ve got a serious problem on your hands, there Iowa,” I told her. “A goddamned ticking bomb.” Her face went blank with disbelief, confusion and the early signs of trauma. She put her empty glass on top of the water cooler by the entrance and muttered something about me not telling her boyfriend that, giving him ideas because she didn’t know what she’d do without him.
“Case in point,” I told her, “But you’ll be fine. I probably wouldn’t have this conversation with him anyway.” She exhaled and her shoulders sank, and then she fled to get more wine. Peter turned to me when she’d left and shot me a glare of what-the-hell-was-THAT.
 “Did you have to shatter that poor girl’s sense of direction?” I caught Heidi looking at our group from the other side of the room where she was talking with Em, who was looking in our direction with nothing but contempt. Who KNOWS what kind of stories that sad girl was telling about us.
“Don’t worry,” I told him. “She won’t bother us anymore with idle chatter. Besides, she’ll wake up tomorrow and forget all about it. She won’t change.”
As the evening wore on and more bland types filled the room we started feeling uneasy and out of place. Most of them seemed to be Em’s friends but I didn’t know Em all that well, nor did I know what kinds of friends she had. Jeff was becoming harder to hold up vertically and he was very hungry. Ers had finally arrived and we were in the mood to get out of there.
“You guys, I know a good bar around here where we can really chill for a while,” Ers announced.
“Please tell me they have food,” Jeff whined.
“They’ll have food,” Ers assured him. “Chips, and meat and stuff. Is that alright?”
“ohmygodthanksiloveyouers,” Jeff mumbled.
We walked down third avenue and got Jeff some pizza, to make sure he didn’t keel over before the next round. Murray Hill is too full of young girls fresh out of college and still on daddy’s credit cards for us to comfortably drag a drunk body through that place. These people have limits and you have to take it easy with that kind of ugliness when the streets are crawling with primped twenty-two-year-old children who are there to ‘experience New York’.
We kept walking and the air got colder. After six or seven blocks we ended up at Rodeo Bar, a place I’d heard Ers talk about before, and stepped in just as it started to rain outside. No one had cash so I bought Ers and Peter a good Irish beer, and asked the Texan waitress to get Jeff some water. I couldn’t hear anything through the blare they were playing before the band started but I saw her scoff. The boys all headed upstairs to get us a couch but I saw the band setting up and told them I’d catch up to them.
The country band started playing their jumpy tunes. It would’ve kept my interest if they’d been a little more genuine, but their lead singer was too big of a douchbag to ignore. Their guitarist and bassist were jamming in the back by the drums, and they were tight. The pretty belle flirting with the violin was hot, standing on stage with a wide stance and short skirt, running the bow softly across the twangy strings. But it would’ve been better if she’d actually played the thing instead of just providing backup vocals.
Oh well. When I got upstairs the three gents were having a sinister-sounding chat that involved bets, dares and potential pay-offs. Jeff looked like he was passed out on the couch but was clearly a very vocal part of the conversation.
“I’m just saying, Ers, I’m offering you $10 to ask her,” Peter said, putting his beer down on the table in front of us.
“Ask her what?” I asked them.
“I’ll give you $20, Peter, if you feel her up and let me know,” said Jeff’s body on the couch. I looked over at the group next to us. One of the girls was dressed in a tight red tank top, leather pants and black boots. Strange, since all of her friends were in jeans and sweatshirts with names like Vanderbuilt and Purdue. But the attention grabber was her chest — tits so terrifyingly perfect they could only exist in Victoria’s Secret catalogues or on the streets of LA.
“Those?” I asked them, and they all nodded proudly, unsure of what they had to be proud of, but proud nonetheless. “Listen. There is no way in this crippled, half-mad world that those things are real. Nature doesn’t work like that. You’d have to breed Gisele Bündchen with Rebecca Romijn for a thousand generations and you still wouldn’t get that kind of perfection. No way.”
“Yes!” Ers shouted, and slapped me a high-five. “Thank you! That’s what I’m saying. There’s no way.”
We all considered it for a minute.
“I think they could be real,” Jeff’s corpse said, still unmoved on the couch.
And then we took him outside and put him on a train that we hoped would get him home.
–
Drunk and exhausted, I rode my own train home later that night with Ers.
“You know, Ers, some of us are teachers, doctors, musicians and what not, and we roll along fulfulling these noble pursuits. But it’s weird — drunk as we all are now, next week Peter’s going to be teaching Algebra and Calculus to a minion of children, idiots and some eager young minds. You know what I’m saying?”
“I haven’t the foggiest,” he said. “I could use another pizza though, or more peanuts or something.”
“That’s what I’m saying. You’re a drunken mess right now, and so am I. But tomorrow you’ll be analyzing the stock value large multi-nationals and I’ll be saving my clients millions of dollars through a well-practiced speech that I may as well not even understand. We do these things despite the fact, or alongside the fact that tonight we were in some bar in midtown getting sloshed and guessing whether this poor girl has real breasts. We travel and do weird things on the weekends, despite are outlandish professions. But all those people at the gallery tonight, and probably most people we’ve known since highschool, those bland and uninteresting hacks…what are they doing? What’s their point?”
“You’re talking too seriously, man. Have you been watching Frontline again?”
“…yeah. So?” He ran his fingers through his crumpled hair smiling and leaned over on his knees, looking at me sitting across the car from him.
“We move through the world day by day, and change things around us slowly. Including ourselves. But so does every one else, man. Some people change more than others and some people are luckier than others, but every one changes over time. You’ve gotta give ‘em more of a chance.”
I thought about it for a sec. “Wow, Ers. That’s pretty deep, calm…mature, even. Does that mean you give everyone you meet the benefit of the doubt?”
“I think most people deserve at least that much, yeah.” I smiled at him.
“What about that guy that was such a tool in high school that you agreed to be friends with on facebook just so you could be the first to know when his life tanks? What was his name? Anthony…something?”
“Roberts?”
“That’s the chap.” He didn’t even think about it.
“No. He’s just a douchbag.”


Question Form Question Header Category Elaborate on Question Submit You submitted the following: header {{ model.UserQuestion }} body {{ model.QuestionBody }} category {{ model.Category }} {{submitted }} Go Back


Increase and decrease the browser window size. You'll see the modules load when
they show up with a gray background color and a border.
screen and (max-width: 320px) — On page load only
screen and (max-width: 320px) — Lazy loaded
screen and (min-width: 900px) — Lazy Loaded
Back


DUCSS Internships
How It's Made 🔨
- Website is built on Ruby on Rails
- Debated on what to include (Description or no description?)
- Went minimal - leave desc. to companies
- Pagination
Improvements ⚒
- More items on pagination
- Make "Internships" appear centred
- Maybe a two column display of items for larger screen widths?
- Make them self-expire and close
Future 💡
- Internships -> Careers!
- Tips, tricks, recommendations
- Maybe graduate jobs for 4th years?
- Tips welcome!


Youth is not a time of life; it is a state of mind; it is not a matter of rosy cheeks, red lips and supple knees; it is a matter of the will, a quality of the imagination, a vigor of the emotions; it is the freshness of the deep springs of life.
Youth means a temperamental predominance of courage over timidity, of the appetite for adventure over the love of ease. This often exists in a man of 60 more than a boy of 20. Nobody grows old merely by a number of years. We grow old by deserting our ideals.
Years may wrinkle the skin, but to give up enthusiasm wrinkles the soul. Worry, fear, self-distrust bows the heart and turns the spirit back to dust.
Whether 60 or 16, there is in every human being’s heart the lure of wonders, the unfailing appetite for what’s next and the joy of the game of living. In the center of your heart and my heart, there is a wireless station; so long as it receives messages of beauty, hope, courage and power from man and from the infinite, so long as you are young.
When your aerials are down, and your spirit is covered with snows of cynicism and the ice of pessimism, then you’ve grown old, even at 20; but as long as your aerials are up, to catch waves of optimism, there’s hope you may die young at 80.


Designed by Adam Scott and adapted for the web by Phill Sparks © {{ now.Format "2006" }}. All rights reserved. This work is derived from the Lorien Trust Role-Playing System.


number {border-style px;} #ffffff;} China patients secondary N/A infection January -nCoV day recovered /–/, CrI different online: outbreak outside parameters .–.) coronavirus infectious model SEIR developed px; scenarios transmission {font-family China, font-size human infected novel removed Coronavirus [], countries days double; infected, scenario total virus (-nCoV) (IQR (R) .–., However, March Novel Wuhan, []. basic border-color border-width cases control did exposed, person reproductive simulation solid; {font-style {font-weight (%CI: (Figure .–. .–.). Abbreviations Available Figure Transmission [Internet]Available began bold caused community courier; em; impact infections maximum outbreaks period possibility pt;} removed. risk scenario. susceptible, symptomatic


| AdvancedValue |
|
Defines an advamced value type as either a single basic advanved value or an array of basic advanced values |
|
| AdvancedValueEntry |
|
Defines the range of types that can be used when specifying advanced search criteria |
|
| BasicAdvancedValue |
|
Defines the possible basic types of an advanced value |
|
| AppEvents |
|
A union of the different events that the AppService can generate |
|
| AuditEvents |
|
A composite type describing a set of AuditEvents |
|
| CCWebService |
|
Describes the fields available in all web service configuration objects |
|
| FieldValue |
|
A union type for the values that can be found in a column of a Sinequa index |
|
| HttpRequestInitializer |
|
| JsonValue |
|
A union type of the possible JSON types |
|
| ListAggregation |
|
Describes the fields specific to a list aggregation |
|
| ListAggregationItem |
|
Describes any fields particular to a list aggregation item |
|
| TreeAggregation |
|
Describes the fields specific to a tree aggregation |
|


Calculates the critical path for a series of tasks, creates Gantt charts and generates network diagrams in order to provide similar functionality to the basic tools offered by 'MS Project'.
| Version: | 0.2.1 |
| Depends: | R (≥ 3.3.0) |
| Imports: | R6 (≥ 2.2.2), igraph (≥ 1.0.1), ggplot2 (≥ 2.2.1), tidyr (≥ 0.6.3), mc2d (≥ 0.1-18), Rcpp |
| LinkingTo: | Rcpp |
| Suggests: | testthat |
| Published: | 2018-07-26 |
| Author: | Ben Greenawald [aut, cre, cph], Yael Grushka-Cockayne [aut, cph] |
| Maintainer: | Ben Greenawald <bgreenawald at gmail.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | yes |
| Materials: | README NEWS |
| CRAN checks: | projmanr results |
| Reference manual: | projmanr.pdf |
| Package source: | projmanr_0.2.1.tar.gz |
| Windows binaries: | r-devel: projmanr_0.2.1.zip, r-release: projmanr_0.2.1.zip, r-oldrel: projmanr_0.2.1.zip |
| OS X binaries: | r-release: projmanr_0.2.1.tgz, r-oldrel: projmanr_0.2.1.tgz |
| Old sources: | projmanr archive |
Please use the canonical form https://CRAN.R-project.org/package=projmanr to link to this page.


If you are familiar enough with South East Asia countries especially like Malaysia and Singapore, you shall observe how obsessed they are the people into lottery and jackpot betting. These games are often found to be one of the main entertainments for the older generation folks. Unfortunately, my mom is one of them.
Image source
She has been a loyal customer for lottery company like TOTO, Damacai, and whatever 4D, 5D, 6D shit, for more than 20 years. Although she is not as desperate as those serious lottery gamblers, she would constantly contribute a couple of hundreds of Malaysia Ringgit to the lottery company every month. Those number could add up to a handsome sum. Ironically, she knows she stands a slim chance of getting back the betting capital, let alone winning a huge Jackpot. But still, she couldn’t leave the losing game while keep telling us that she is going to give it up ‘soon’ for the last ten years. Pathetically funny.
Image source
This has to be changed
We’ve talked about this topic yesterday and somehow I just felt like I’ve had enough of her lottery addiction that I make a suggestion:
From now on, whenever you feel like going to buy the lottery tickets, drop those cash in a box. I will collect and use it to invest in crypto on your behalf.
I’m not sure if one day she would hit a big jackpot to not only cover all lost bets over the decades but winning a huge lump sum of money which is more than enough to retire herself. There is only one thing I’m really certain, and that is the chances of any top 100 cryptocurrencies skyrocketing is much likely to happen than she hitting that big jackpot.
Furthermore, I added some irresistible clauses in the one-year deal. That is regardless how the crypto investment is doing after one year, I will pay her investment back with at least 50% gaining out of my pocket. Meaning if she invested a total of $5000 then she will at least get back a sum of $7500 no matter what. If market decides that she will gain 10 times of her capital, that is what she will be received too.
The deal is on, of course.
The next question is, in what coin should I invest for my mom? I’m not intended to diversify her portfolio as that would be too troublesome for me to maintain. Wait, she is very interested in my articles in Steem and would read it every day despite having no idea what all these crypto and blockchain tech is about. My mom is definitely one of my biggest supporters to create content on Steem. Then why not I use her money to regularly buy in Steem and power my account up? Brilliant idea indeed!
Some will say that crypto is a high-risk investment, I should not put all the eggs in one basket. Maybe. But rather than letting the money completely ‘donated’ to lottery company with almost zero chance to get back any of it, betting it with crypto sounds a lot wiser to me.
By making this deal with my lottery-addicted mom…
- She can finally give up the addiction which is almost as same as throwing coins in the sea.
- She is already in a 100% winning position as I personally guaranteed her ROI no matter how is the crypto investment’s performance.
- She can now support my work on Steem both spiritually and financially.
- I can grow my SP over the course by her regular investment.
- Even if I got to pay cash out all her Steem after one year, I will still be benefited a lot by the additional SP.
- Lastly, if Steem fails and drops to zero she is not losing anyhow. As this will be the same result as betting in lottery.
She already handed me her first investment fund that would otherwise spend on the lottery. And I shall convert it all to Steem as this is one of the best time to buy in when the whole market is on the falling side. I should make a conclusion post after one year to see if she made a wise deal this time.
Certainly a big YES if you ask me.
This page is synchronized from the post: ‘Made my mom quit gambling by offering an irresistible deal’


AWS::S3::Bucket
The AWS::S3::Bucket
resource creates an Amazon Simple Storage Service (Amazon S3) bucket in the same
AWS
Region where you create the AWS CloudFormation stack.
To control how AWS CloudFormation handles the bucket when the stack is deleted, you can set a deletion policy for your bucket. For Amazon S3 buckets, you can choose to retain the bucket or to delete the bucket. For more information, see DeletionPolicy Attribute.
Important
You can only delete empty buckets. Deletion fails for buckets that have contents.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::S3::Bucket", "Properties" : { "AccessControl" :
String
, "AccelerateConfiguration" : AccelerateConfiguration, "AnalyticsConfigurations" : [ AnalyticsConfiguration, ... ], "BucketEncryption" : BucketEncryption, "BucketName" :String
, "CorsConfiguration" :CorsConfiguration
, "InventoryConfigurations" : [ InventoryConfiguration, ... ], "LifecycleConfiguration" :LifecycleConfiguration
, "LoggingConfiguration" :LoggingConfiguration
, "MetricsConfigurations" : [ MetricsConfiguration, ... ] "NotificationConfiguration" :NotificationConfiguration
, "PublicAccessBlockConfiguration" :PublicAccessBlockConfiguration
, "ReplicationConfiguration" :ReplicationConfiguration
, "Tags" : [Resource Tag, ...
], "VersioningConfiguration" :VersioningConfiguration
, "WebsiteConfiguration" :WebsiteConfiguration
} }
YAML
Type: AWS::S3::Bucket Properties: AccessControl:
String
AccelerateConfiguration: AccelerateConfiguration AnalyticsConfigurations: - AnalyticsConfigurationBucketEncryption: BucketEncryption BucketName:
String
CorsConfiguration:CorsConfiguration
InventoryConfigurations: - InventoryConfigurationLifecycleConfiguration:
LifecycleConfiguration
LoggingConfiguration:LoggingConfiguration
MetricsConfigurations: - MetricsConfiguration NotificationConfiguration:NotificationConfiguration
PublicAccessBlockConfiguration:PublicAccessBlockConfiguration
ReplicationConfiguration:ReplicationConfiguration
Tags: -Resource Tag
VersioningConfiguration:VersioningConfiguration
WebsiteConfiguration:WebsiteConfiguration
Properties
AccessControl
-
A canned access control list (ACL) that grants predefined permissions to the bucket. For more information about canned ACLs, see Canned ACLs in the Amazon S3 documentation in the Amazon Simple Storage Service Developer Guide.
Required: No
Type: String
Valid values:
AuthenticatedRead
|AwsExecRead
|BucketOwnerRead
|BucketOwnerFullControl
|LogDeliveryWrite
|Private
|PublicRead
|PublicReadWrite
Update requires: No interruption
AccelerateConfiguration
-
Configuration for the transfer acceleration state. For more information, see Amazon S3 Transfer Acceleration in the Amazon Simple Storage Service Developer Guide.
Required: No
Type: AccelerateConfiguration
Update requires: No interruption
AnalyticsConfigurations
-
The configuration and any analyses for the analytics filter of an Amazon S3 bucket. Duplicates not allowed.
Required: No
Type: List of AnalyticsConfiguration
Update requires: No interruption
BucketEncryption
-
Specifies default encryption for a bucket using server-side encryption with either Amazon S3-managed keys (SSE-S3) or AWS KMS-managed keys (SSE-KMS).
Required: No
Type: BucketEncryption
Update requires: No interruption
BucketName
-
A name for the bucket. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name. For more information, see Name Type. The bucket name must contain only lowercase letters, numbers, periods (.), and dashes (-).
Important
If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
Required: No
Type: String
Update requires: Replacement
CorsConfiguration
-
Rules that define cross-origin resource sharing of objects in this bucket. For more information, see Enabling Cross-Origin Resource Sharing in the Amazon Simple Storage Service Developer Guide.
Required: No
Type: CorsConfiguration
Update requires: No interruption
InventoryConfigurations
-
The inventory configuration for an Amazon S3 bucket. Duplicates not allowed.
Required: No
Type: List of InventoryConfiguration
Update requires: No interruption
LifecycleConfiguration
-
Rules that define how Amazon S3 manages objects during their lifetime. For more information, see Object Lifecycle Management in the Amazon Simple Storage Service Developer Guide.
Required: No
Type: LifecycleConfiguration
Update requires: No interruption
LoggingConfiguration
-
Settings that define where logs are stored.
Required: No
Type: LoggingConfiguration
Update requires: No interruption
MetricsConfigurations
-
Settings that define a metrics configuration for the CloudWatch request metrics from the bucket. For a list of request metrics, see Amazon S3 CloudWatch Request Metrics in the Amazon Simple Storage Service Developer Guide.
Required: No
Type: List of MetricsConfiguration
Update requires: No interruption
Duplicates not allowed.
NotificationConfiguration
-
Configuration that defines how Amazon S3 handles bucket notifications.
Required: No
Type: NotificationConfiguration
Update requires: No interruption
PublicAccessBlockConfiguration
-
Configuration that defines how Amazon S3 handles public access.
Required: No
Type: PublicAccessBlockConfiguration
Update requires: No interruption
ReplicationConfiguration
-
Configuration for replicating objects in an S3 bucket. To enable replication, you must also enable versioning by using the
VersioningConfiguration
property.Amazon S3 can store replicated objects in only one destination (S3 bucket). The destination bucket must already exist and be in a different AWS Region than your source bucket.
Required: No
Type: ReplicationConfiguration
Update requires: No interruption
Tags
-
An arbitrary set of tags (key-value pairs) for this S3 bucket.
Important
We recommend limiting the number of tags to seven. Applying more than seven tags prevents the AWS CLI and the AWS CloudFormation console and API actions from listing the tags for the S3 bucket.
Required: No
Type: Resource Tag
Update requires: No interruption
VersioningConfiguration
-
Enables multiple variants of all objects in this bucket. You might enable versioning to prevent objects from being deleted or overwritten by mistake or to archive objects so that you can retrieve previous versions of them.
Required: No
Type: VersioningConfiguration
Update requires: No interruption
WebsiteConfiguration
-
Information used to configure the bucket as a static website. For more information, see Hosting Websites on Amazon S3.
Required: No
Type: WebsiteConfiguration
Update requires: No interruption
Return Values
Ref
When the logical ID of this resource is provided to the Ref
intrinsic
function, Ref
returns the resource name.
Example: mystack-mybucket-kdwwxmddtr2g
.
For more information about using the Ref
function, see Ref.
Fn::GetAtt
Fn::GetAtt
returns a value for a specified attribute of this type.
The following are the available attributes and sample return values.
Arn
-
Returns the Amazon Resource Name (ARN) of the specified bucket.
Example:
arn:aws:s3:::mybucket
DomainName
-
Returns the IPv4 DNS name of the specified bucket.
Example:
mystack-mybucket-kdwwxmddtr2g.s3.amazonaws.com
DualStackDomainName
-
Returns the IPv6 DNS name of the specified bucket.
Example:
mystack-mybucket-kdwwxmddtr2g.s3.dualstack.
us-east-2
.amazonaws.com
For more information about dual-stack endpoints, see Using Amazon S3 Dual-Stack Endpoints.
RegionalDomainName
-
Returns the regional domain name of the specified bucket.
Example:
mystack-mybucket-kdwwxmddtr2g.s3.us-east-2.amazonaws.com
WebsiteURL
-
Returns the Amazon S3 website endpoint for the specified bucket.
Example (IPv4):
http://mystack-mybucket-kdwwxmddtr2g.s3-website-
us-east-2
.amazonaws.com/
Example (IPv6):
http://mystack-mybucket-kdwwxmddtr2g.s3.dualstack.
us-east-2
.amazonaws.com/
For more information about using Fn::GetAtt
, see Fn::GetAtt.
Examples
Associate a Replication Configuration IAM Role with an S3 Bucket
The following example creates an S3 bucket and grants it permission to write to a
replication bucket by using an AWS Identity and Access Management (IAM) role. To avoid
a circular dependency, the
role's policy is declared as a separate resource. The bucket depends on the
WorkItemBucketBackupRole
role. If the policy is included in the role, the
role also depends on the bucket.
JSON
"RecordServiceS3Bucket": { "Type": "AWS::S3::Bucket", "DeletionPolicy": "Retain", "Properties": { "ReplicationConfiguration": { "Role": { "Fn::GetAtt": [ "WorkItemBucketBackupRole", "Arn" ] }, "Rules": [{ "Destination": { "Bucket": { "Fn::Join": [ "", [ "arn:aws:s3:::", { "Fn::Join": [ "-", [ { "Ref": "AWS::Region" }, { "Ref": "AWS::StackName" }, "replicationbucket" ]] } ]] }, "StorageClass": "STANDARD" }, "Id": "Backup", "Prefix": "", "Status": "Enabled" }] }, "VersioningConfiguration": { "Status": "Enabled" } } }, "WorkItemBucketBackupRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [{ "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "s3.amazonaws.com" ] } }] } } }, "BucketBackupPolicy": { "Type": "AWS::IAM::Policy", "Properties": { "PolicyDocument": { "Statement": [{ "Action": [ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Effect": "Allow", "Resource": [{ "Fn::Join": [ "", [ "arn:aws:s3:::", { "Ref": "RecordServiceS3Bucket" } ] ] }] },{ "Action": [ "s3:GetObjectVersion", "s3:GetObjectVersionAcl" ], "Effect": "Allow", "Resource": [{ "Fn::Join": [ "", [ "arn:aws:s3:::", { "Ref": "RecordServiceS3Bucket" }, "/*" ] ] }] }, { "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Effect": "Allow", "Resource": [{ "Fn::Join": [ "", [ "arn:aws:s3:::", { "Fn::Join": [ "-", [ { "Ref": "AWS::Region" }, { "Ref": "AWS::StackName" }, "replicationbucket" ]] }, "/*" ]] }] }] }, "PolicyName": "BucketBackupPolicy", "Roles": [{ "Ref": "WorkItemBucketBackupRole" }] } }
YAML
RecordServiceS3Bucket: Type: AWS::S3::Bucket DeletionPolicy: Retain Properties: ReplicationConfiguration: Role: !GetAtt [WorkItemBucketBackupRole, Arn] Rules: - Destination: Bucket: !Join ['', ['arn:aws:s3:::', !Join ['-', [!Ref 'AWS::Region', !Ref 'AWS::StackName', replicationbucket]]]] StorageClass: STANDARD Id: Backup Prefix: '' Status: Enabled VersioningConfiguration: Status: Enabled WorkItemBucketBackupRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: ['sts:AssumeRole'] Effect: Allow Principal: Service: [s3.amazonaws.com] BucketBackupPolicy: Type: AWS::IAM::Policy Properties: PolicyDocument: Statement: - Action: ['s3:GetReplicationConfiguration', 's3:ListBucket'] Effect: Allow Resource: - !Join ['', ['arn:aws:s3:::', !Ref 'RecordServiceS3Bucket']] - Action: ['s3:GetObjectVersion', 's3:GetObjectVersionAcl'] Effect: Allow Resource: - !Join ['', ['arn:aws:s3:::', !Ref 'RecordServiceS3Bucket', /*]] - Action: ['s3:ReplicateObject', 's3:ReplicateDelete'] Effect: Allow Resource: - !Join ['', ['arn:aws:s3:::', !Join ['-', [!Ref 'AWS::Region', !Ref 'AWS::StackName', replicationbucket]], /*]] PolicyName: BucketBackupPolicy Roles: [!Ref 'WorkItemBucketBackupRole']
Configure a Static Website with a Routing Rule
In this example, AWS::S3::Bucket's Fn::GetAtt
values are used to provide
outputs. If an HTTP 404 error occurs, the routing rule redirects requests to an EC2
instance
and inserts the object key prefix report-404/
in the redirect. For example, if
you request a page called ExamplePage.html
and it results in an HTTP 404 error,
the request is routed to a page called report-404/ExamplePage.html
on the
specified instance. For all other HTTP error codes, error.html
is returned.
This example also specifies a metrics configuration called EntireBucket
that enables CloudWatch request metrics at the bucket level.
JSON
"Resources" : { "S3Bucket" : { "Type" : "AWS::S3::Bucket", "Properties" : { "AccessControl" : "PublicRead", "BucketName" : "public-bucket", "MetricsConfigurations": [ { "Id": "EntireBucket" } ], "WebsiteConfiguration" : { "IndexDocument" : "index.html", "ErrorDocument" : "error.html", "RoutingRules": [ { "RoutingRuleCondition": { "HttpErrorCodeReturnedEquals": "404", "KeyPrefixEquals": "out1/" }, "RedirectRule": { "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com", "ReplaceKeyPrefixWith": "report-404/" } } ] } }, "DeletionPolicy" : "Retain" } }, "Outputs" : { "WebsiteURL" : { "Value" : { "Fn::GetAtt" : [ "S3Bucket", "WebsiteURL" ] }, "Description" : "URL for website hosted on S3" }, "S3BucketSecureURL" : { "Value" : { "Fn::Join" : [ "", [ "https://", { "Fn::GetAtt" : [ "S3Bucket", "DomainName" ] } ] ] }, "Description" : "Name of S3 bucket to hold website content" } }
YAML
Resources: S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: PublicRead BucketName: public-bucket MetricsConfigurations: - Id: EntireBucket WebsiteConfiguration: IndexDocument: index.html ErrorDocument: error.html RoutingRules: - RoutingRuleCondition: HttpErrorCodeReturnedEquals: '404' KeyPrefixEquals: out1/ RedirectRule: HostName: ec2-11-22-333-44.compute-1.amazonaws.com ReplaceKeyPrefixWith: report-404/ DeletionPolicy: Retain Outputs: WebsiteURL: Value: !GetAtt [S3Bucket, WebsiteURL] Description: URL for website hosted on S3 S3BucketSecureURL: Value: !Join ['', ['https://', !GetAtt [S3Bucket, DomainName]]] Description: Name of S3 bucket to hold website content
Enable Cross-Origin Resource Sharing
The following example template shows an S3 bucket with two cross-origin resource sharing rules.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicReadWrite", "CorsConfiguration": { "CorsRules": [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposedHeaders": [ "Date" ], "Id": "myCORSRuleId1", "MaxAge": "3600" }, { "AllowedHeaders": [ "x-amz-*" ], "AllowedMethods": [ "DELETE" ], "AllowedOrigins": [ "http://www.example1.com", "http://www.example2.com" ], "ExposedHeaders": [ "Connection", "Server", "Date" ], "Id": "myCORSRuleId2", "MaxAge": "1800" } ] } } } }, "Outputs": { "BucketName": { "Value": { "Ref": "S3Bucket" }, "Description": "Name of the sample Amazon S3 bucket with CORS enabled." } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: PublicReadWrite CorsConfiguration: CorsRules: - AllowedHeaders: ['*'] AllowedMethods: [GET] AllowedOrigins: ['*'] ExposedHeaders: [Date] Id: myCORSRuleId1 MaxAge: '3600' - AllowedHeaders: [x-amz-*] AllowedMethods: [DELETE] AllowedOrigins: ['http://www.example1.com', 'http://www.example2.com'] ExposedHeaders: [Connection, Server, Date] Id: myCORSRuleId2 MaxAge: '1800' Outputs: BucketName: Value: !Ref 'S3Bucket' Description: Name of the sample Amazon S3 bucket with CORS enabled.
Manage the Lifecycle for Amazon S3 Objects
The following example template shows an S3 bucket with a lifecycle configuration
rule. The rule applies to all objects with the glacier
key prefix. The objects
are transitioned to Glacier after one day, and deleted after one year.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicReadWrite", "LifecycleConfiguration": { "Rules": [ { "Id": "GlacierRule", "Prefix": "glacier", "Status": "Enabled", "ExpirationInDays": "365", "Transitions": [ { "TransitionInDays": "1", "StorageClass": "Glacier" } ] } ] } } } }, "Outputs": { "BucketName": { "Value": { "Ref": "S3Bucket" }, "Description": "Name of the sample Amazon S3 bucket with a lifecycle configuration." } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: PublicReadWrite LifecycleConfiguration: Rules: - Id: GlacierRule Prefix: glacier Status: Enabled ExpirationInDays: '365' Transitions: - TransitionInDays: '1' StorageClass: Glacier Outputs: BucketName: Value: !Ref 'S3Bucket' Description: Name of the sample Amazon S3 bucket with a lifecycle configuration.
Log Access Requests for a Specific S3 Bucket
The following example template creates two S3 buckets. The
LoggingBucket
bucket store the logs from the S3Bucket
bucket. To
receive logs from the S3Bucket
bucket, the logging bucket requires log delivery
write permissions.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead", "LoggingConfiguration": { "DestinationBucketName": {"Ref" : "LoggingBucket"}, "LogFilePrefix": "testing-logs" } } }, "LoggingBucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "LogDeliveryWrite" } } }, "Outputs": { "BucketName": { "Value": { "Ref": "S3Bucket" }, "Description": "Name of the sample Amazon S3 bucket with a logging configuration." } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: PublicRead LoggingConfiguration: DestinationBucketName: !Ref 'LoggingBucket' LogFilePrefix: testing-logs LoggingBucket: Type: AWS::S3::Bucket Properties: AccessControl: LogDeliveryWrite Outputs: BucketName: Value: !Ref 'S3Bucket' Description: Name of the sample Amazon S3 bucket with a logging configuration.
Receive S3 Bucket Notifications to an SNS Topic
The following example template shows an S3 bucket with a notification configuration that sends an event to the specified SNS topic when Amazon S3 has lost all replicas of an object.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicReadWrite", "NotificationConfiguration": { "TopicConfigurations": [ { "Topic": "arn:aws:sns:us-east-1:123456789012:TestTopic", "Event": "s3:ReducedRedundancyLostObject" } ] } } } }, "Outputs": { "BucketName": { "Value": { "Ref": "S3Bucket" }, "Description": "Name of the sample Amazon S3 bucket with a notification configuration." } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: PublicReadWrite NotificationConfiguration: TopicConfigurations: - Topic: arn:aws:sns:us-east-1:123456789012:TestTopic Event: s3:ReducedRedundancyLostObject Outputs: BucketName: Value: !Ref 'S3Bucket' Description: Name of the sample Amazon S3 bucket with a notification configuration.
Replicate Objects and Store Them in Another S3 Bucket
The following example includes two replication rules. Amazon S3 replicates objects
with
the MyPrefix
or MyOtherPrefix
prefixes and stores them in the
my-replication-bucket
bucket, which must be in a different AWS Region than
the S3Bucket
bucket.
JSON
"S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "VersioningConfiguration":{ "Status":"Enabled" }, "ReplicationConfiguration": { "Role": "arn:aws:iam::123456789012:role/replication_role", "Rules": [ { "Id": "MyRule1", "Status": "Enabled", "Prefix": "MyPrefix", "Destination": { "Bucket": "arn:aws:s3:::my-replication-bucket", "StorageClass": "STANDARD" } }, { "Status": "Enabled", "Prefix": "MyOtherPrefix", "Destination": { "Bucket": "arn:aws:s3:::my-replication-bucket" } } ] } } }
YAML
S3Bucket: Type: AWS::S3::Bucket Properties: VersioningConfiguration: Status: Enabled ReplicationConfiguration: Role: arn:aws:iam::123456789012:role/replication_role Rules: - Id: MyRule1 Status: Enabled Prefix: MyPrefix Destination: Bucket: arn:aws:s3:::my-replication-bucket StorageClass: STANDARD - Status: Enabled Prefix: MyOtherPrefix Destination: Bucket: arn:aws:s3:::my-replication-bucket
Specify Analytics and Inventory Configurations for an Amazon S3 Bucket
The following example specifies analytics and inventory results to be generated for an S3 bucket, including the format of the results and the bucket to which they are published. The inventory list is enabled to generate weekly, and only includes the current version of each object.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "S3 Bucket with Inventory and Analytics Configurations", "Resources": { "Helper": { "Type": "AWS::S3::Bucket" }, "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AnalyticsConfigurations": [ { "Id": "AnalyticsConfigurationId", "StorageClassAnalysis": { "DataExport": { "Destination": { "BucketArn": { "Fn::GetAtt": [ "Helper", "Arn" ] }, "Format": "CSV", "Prefix": "AnalyticsDestinationPrefix" }, "OutputSchemaVersion": "V_1" } }, "Prefix": "AnalyticsConfigurationPrefix", "TagFilters": [ { "Key": "AnalyticsTagKey", "Value": "AnalyticsTagValue" } ] } ], "InventoryConfigurations": [ { "Id": "InventoryConfigurationId", "Destination": { "BucketArn": { "Fn::GetAtt": [ "Helper", "Arn" ] }, "Format": "CSV", "Prefix": "InventoryDestinationPrefix" }, "Enabled": "true", "IncludedObjectVersions": "Current", "Prefix": "InventoryConfigurationPrefix", "ScheduleFrequency": "Weekly" } ] } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Description: S3 Bucket with Inventory and Analytics Configurations Resources: Helper: Type: AWS::S3::Bucket S3Bucket: Type: AWS::S3::Bucket Properties: AnalyticsConfigurations: - Id: AnalyticsConfigurationId StorageClassAnalysis: DataExport: Destination: BucketArn: !GetAtt - Helper - Arn Format: CSV Prefix: AnalyticsDestinationPrefix OutputSchemaVersion: V_1 Prefix: AnalyticsConfigurationPrefix TagFilters: - Key: AnalyticsTagKey Value: AnalyticsTagValue InventoryConfigurations: - Id: InventoryConfigurationId Destination: BucketArn: !GetAtt - Helper - Arn Format: CSV Prefix: InventoryDestinationPrefix Enabled: 'true' IncludedObjectVersions: Current Prefix: InventoryConfigurationPrefix ScheduleFrequency: Weekly
Create a Bucket with Default Encryption Enabled
The following example creates a bucket with server-side bucket encryption configured. This example uses S3-managed keys. You can use KMS-managed keys instead by modifying the Amazon S3 Bucket ServerSideEncryptionByDefault property.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "S3 bucket with default encryption", "Resources": { "EncryptedS3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": { "Fn::Sub": "encryptedbucket-${AWS::Region}-${AWS::AccountId}" }, "BucketEncryption": { "ServerSideEncryptionConfiguration": [{ "ServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } }] } }, "DeletionPolicy": "Delete" } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Description: S3 bucket with default encryption Resources: EncryptedS3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Sub 'encryptedbucket-${AWS::Region}-${AWS::AccountId}' BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: AES256 DeletionPolicy: Delete
More Info
-
For more examples, see Amazon S3 Template Snippets.
-
Access Control List (ACL) Overview in the Amazon Simple Storage Service Developer Guide
-
Hosting a Static Website on Amazon S3 in the Amazon Simple Storage Service Developer Guide


Lucy in The Sky and Lawless Burgerbar join forces for Lucy Beer & Burger Bar
by Coconuts JakartaYou can never go wrong with burgers and beers, and now, two of the best in their respective specialties have joined forces to bring the two together in the capital.
Syah Establishments, the group behind some of the hippest spots in Jakarta, such as Hotel Monopoli (and its two bars) in Kemang and Sofia at The Gunawarman, recently opened Lucy Beer & Burger Bar in SCBD. As the name suggests, it’s a combination of popular lounge Lucy in the Sky and the Kemang-based Lawless Burgerbar.
Located at Lucy in the Sky, Lucy Beer & Burger Bar promises to bring together the best of the two famous F&B establishments. The Lucy Lawless, a burger layered with a beef patty, romaine lettuce, tomatoes, a sunny-side up, and Russian dressing, is one obvious end product of the marriage. It also happens that the dish shares its name with the lead actress of Xena: Warrior Princess.
Another house specialty is the Cock Sparrer, a spicy deep fried chicken breast fillet stacked between two cheese toasts.
The nightlife and culinary scene in SCBD certainly just got a whole lot juicier.
FIND IT:
Lucy Beer & Burger Bar, Fairgrounds, SCBD Lot. 22
Open Sun-Thu, 4pm-1am; Fri-Sat 4pm-2am
Phone +62 813 1986 7542
Lucy Beer & Burger Bar’s Coconuts Directory listing , and Instagram


An accessible wrapper for React Router.
Documentation at https://oaf-project.github.io/oaf-react-router/
BrowserRouter
and HashRouter
import "core-js/es6/map";
.React Router does not reset the window's scroll position or the focused element after page navigation.
The React Router documentation sketches a "scroll to top" approach that scrolls the window back to the top of the page after navigation, emulating native browser behavior. There are also packages to do this for you, such as trevorr/react-scroll-manager or react-router-scroll-top. Unfortunately, these approaches address only the scroll half of the question, ignoring keyboard focus:
One of the unique features of single page applications that can create challenges for people using screen readers is that there’s never a page refresh, only view refreshes. As a result, the focused element often disappears from the interface, and the person using the screen reader is left searching for clues as to what happened and what’s now showing in the application view. Places where focus is commonly lost include: page changes, item deleting, modal closing, and expanding and closing record details.
Oaf React Router fixes this by moving focus to something it calls the "primary focus target" after navigation, which by default is the first h1
element inside the page's main
element, but this is configurable.
In addition to moving focus, Oaf React Router will also scroll the primary focus target into view, so you don't need to worry about scrolling to the top of the page after a page navigation.
In a non-single page app website, a web browser will reset focus to the very top of the document after navigation (at the same time that it scrolls to top). You can emulate this with Oaf React Router by setting the primary focus target to body
instead of the default main h1
.
See:
After a POP navigation (i.e. after navigation back or forward through history) browsers typically restore focus and scroll position to where they were when the user last navigated away from that page.
React Router does not emulate this, so Oaf React Router takes care of it for you. Note that browsers such as Firefox and Safari will restore both scroll position and the last focused element, but for some reason Chrome restores only the scroll position, not the focused element. To imitate this, Oaf React Router will move focus to the primary focus target (as described in the previous section) instead of to the last focused element when a POP navigation occurs in Chrome.
Note that there is a proposed scroll restoration standard but it is not widely implemented and it only addresses scroll position, not focus (notice a theme emerging?) so it is of no use to us.
See:
Every page in your React app must have a unique and descriptive title. Oaf React Router will set the page title for you using a function that maps from location
s to page titles. You must supply this function. For how to provide this function, see the usage section below.
See:
Oaf React Router will announce page navigation events to screen reader users via a visually hidden aria-live
element. Announcing navigation is required because:
Screen readers are clever enough to read a lot of information that the browser expose naturally, but if no information exists to read out, the screen reader will remain ominously silent, even if something very important has happened on screen.
Unfortunately, this is the case with many routed SPA applications today. Screen readers are able to recognise actual browser navigation very easily as the browser will tell the screen reader that it has navigated to another web page. In the case of SPAs, like those built with React or Angular, the router software will take over some of the navigation actions from the browser in order to control the application without constantly reloading the host HTML page.
The result: A totally silent page transition leading to a very confusing experience for these users. Imagine trying to navigate a web application if you could not even see that the navigation was successful!
By default, Oaf React Router will announce "navigated to foo" where "foo" is the page title returned by the function described in the previous section. You can override this to support localization, etc.
See:
Another native browser feature that React Router doesn't emulate is scrolling to the element identified by the hash fragment in a URL. For example, if you load https://en.wikipedia.org/wiki/Firefox#Performance, your browser will scroll down to the <span id="Performance">
automatically.
There are other libraries that tackle this issue—for example rafrex/react-router-hash-link—but they typically only address scroll to the exclusion of focus (there's that theme again).
Oaf React Router implements this for you, taking care of both focus and scroll.
A caveat here is that the identified element must exist in the DOM straight after the route is rendered. If the element won't exist for some time, e.g. until after an API response, then Oaf React Router won't focus or scroll to it, falling back on the primary focus target.
# yarn
yarn add oaf-react-router
# npm
npm install oaf-react-router
- import { BrowserRouter as Router } from "react-router-dom";
+ import { Router } from "react-router-dom";
+ import { createBrowserHistory } from "history";
+ import { wrapHistory } from "oaf-react-router";
+ const history = createBrowserHistory(); // or createHashHistory()
+ wrapHistory(history);
ReactDOM.render((
- <Router>
+ <Router history={history}>
...
</Router>
), document.getElementById("root"));
const history = createBrowserHistory();
const settings = {
announcementsDivId: "announcements",
primaryFocusTarget: "main h1, [role=main] h1",
// This assumes you're setting the document title via some other means (e.g. React Helmet).
// If you're not, you should return a unique and descriptive page title for each page
// from this function and set `setPageTitle` to true.
documentTitle: (location: Location) => document.title,
// BYO localization
navigationMessage: (title: string, location: Location, action: Action): string => `Navigated to ${title}.`,
shouldHandleAction: (previousLocation: Location, nextLocation: Location, action: Action) => true,
disableAutoScrollRestoration: true,
announcePageNavigation: true,
setPageTitle: false,
handleHashFragment: true,
// Set this to false if you are using HashRouter or MemoryRouter.
restorePageStateOnPop: true,
// Set this to true for smooth scrolling.
// For browser compatibility you might want iamdustan's smoothscroll polyfill https://github.com/iamdustan/smoothscroll
smoothScroll: false,
};
wrapHistory(history, settings);
You may already be using React Helmet or some other technique to set the document title on route change. That's fine, just be mindful of how you might announce page navigation to users of screen readers and other assistive technology.
In the case of React Helmet, you might do something like this:
setPageTitle
and announcePageNavigation
to false
in the config object you pass to Oaf React Router's wrapHistory
function.onChangeClientState
callback.announce
function from Oaf Side Effects (which is what Oaf React Router itself uses).You may see focus outlines around your h1
elements (or elsewhere, per primaryFocusTarget
) when using Oaf React Router.
You might be tempted to remove these focus outlines with something like the following:
[tabindex="-1"]:focus {
outline: 0 !important;
}
Don't do this! Focus outlines are important for accessibility. See for example:
Note that Bootstrap 4 unfortunately removes these focus outlines. If you use Bootstrap, you can restore them with Oaf Bootstrap 4.
All that said, if you absolutely must remove focus outlines (stubborn client, stubborn boss, stubborn designer, whatever), consider using the :focus-visible
polyfill so focus outlines are only hidden from mouse users, not keyboard users.
Generated using TypeDoc


Three firms fined for sub-standard products
by Special CorrespondentThe Revenue Divisional Officer (RDO), Muvattupuzha, has slapped a penalty of ₹11.15 lakh on three companies for sale of sub-standard products based on cases filed by officials of the Food Safety Department in Ernakulam.
An official release issued by the department said that Kairali Oil Mills, Kizhakkambalam, has been slapped with a fine of ₹6 lakh in three cases in which the adjudication process was carried out by the RDO for sale of coconut oil brands including Kitchen Tasty, K.P.N. Sudham and “Shudhamaya Thani Nadan Velichanna”.
The official imposed a fine of ₹2 lakh on PKM Prime Foods Pvt Ltd based in Kolencherry for sale of tomato sauce that failed to meet the food safety standards.
ABH Trading Company at Palakkad was imposed a fine of ₹3.15 lakh for sale of “Keralayeem” coconut oil.
Food safety officials said that the companies were issued notices earlier for marketing substandard products in violation of the Food Safety Act.


UPLOAD
CLEAN
OpenDocument Spreadsheet (.ods)
Comma-Separated Values (.csv)
HTML (.html)
DOWNLOAD
COPY
Filename


SALE
Vera Bradley
Carry the day in style with this extra-large tote crafted in our chic B.B. Collection textured PVC. Featuring colorful faux leather trim, this tote offers a roomy interior plus just enough perfectly placed pockets to keep smaller items organized and easy to find.
WOW
Check WHAT!
POP
Let the Game begin
Registration is on - get ready for the Open
MEN
10% Discount for your subscription
Carry the day in style with this extra-large tote crafted in our chic B.B. Collection textured PVC. Featuring colorful faux leather trim, this tote offers a roomy interior.


The Brick House / Srijit Srinivas - ARCHITECTS
- Curated by Paula Pintos
- about 2 hours
Houses · Thiruvananthapuram, India
- version="1.0" encoding="UTF-8"? Architects: Srijit Srinivas - ARCHITECTS
- AreaArea of this architecture projectArea: 4250.0 m2
- version="1.0" encoding="UTF-8"?YearCompletion year of this architecture project Year: 2019
- version="1.0" encoding="UTF-8"?PhotographsPhotographs: Prasanth Mohan, Running Studios
- version="1.0" encoding="UTF-8"?ManufacturersBrands with products used in this architecture project Manufacturers: Adobe, AutoDesk, Changi, Decowood, Grohe, Hybec, Trojan, Tulip
- Lead Architect Srijit Srinivas
- Design Team Srijit Srinivas, Remya Raveendran
- Clients Dr. Anup Narayanan & Dr. Arya A. R.
- Landscape Design Srijit Srinivas - ARCHITECTS
More Specs Less Specs
Text description provided by the architects. Located on a long and irregularly narrow site in Trivandrum with its longer side facing west, the The BRICKHAUS, Keralam, India is designed to be both a place of respite and exhilaration for the Clients – a young family both Doctors and their two kids, the lady of the house a trained dancer too. The plan addresses the diverse requirements - a blend of novelty and function, Public presentation & Private expression.
The house is an exploration in revealing the beauty of the oldest and most versatile material – the country burnt brick. The BRICKHAUS naturally evokes a feeling of nostalgia. The house has an ethnic charm, which is accentuated in the varied play of light & shadows by placement and detailing of fenestrations and the material palette. The design has also attempted to bring nature inside, with both the use of contextually detailed skylights and jali work– defining breezeways facilitating natural cooling of the interiors and complemented with a distribution of internal gardens and pools, working together to bring in a magical play of light.
The house is an unspoken narrative of open and interconnected spaces that challenge the standard assumptions of load-bearing brick construction, an intimate variation of scaling of space, of polished concrete floors and Exposed Concrete ceilings, of un-rendered brick. The house becomes a celebration of the imperfection of the material substrate, and the organic expression of asymmetry conspicuously present throughout all adding to a sense of sensory dynamism. The custom-built furniture and joinery items add to the charm of the house. From a functional layout, the Dining area with its east-west orientation opens out to a landscaped internal Courtyard, connecting the house with the ‘outdoors’.
This functional syntax is carried across to other parts of the house also, such as the master bedroom having a landscaped court bounded by brick louvers bringing in cool breezes whilst also being privacy screen controlling views in from the outside. On this same theme, the Medical Consultancy space and its adjoined Guest Bedroom form a separate block spatially separate to the rest of the house, but subtly blended in with the house. A carefully detailed brick-paved path forms the tectonic cord connecting the two spatial blocks together whilst also doubling up as a performance stage floor for small family gatherings. The quiet reflective brick-edged lotus pool beside the informal stage gives a palpable and inviting vibe to this space.
Internally, the timber staircase and its juxtaposition to a traditional swing in the adjoining internal courtyard uses the visual language of litheness and motion to tie together the larger layout of contingent spaces, whilst allowing through-views for a sense of a spatial continuum. From an energy consumption perspective, The BRICKHAUS is a ‘Net Zero’ entity. The BRICKHAUS has tastefully responded to the potential of its site, and the aspirational requirements of its clients to deliver a restrained architectural end product, which is both visually capturing as well as functionally efficient, and an organic addition to the local milieu.


| 031:007 Khan | : |
And when Our Verses (of the Qur'an) are recited to such a one, he turns away in pride, as if he heard them not, as if there were deafness in his ear. So announce to him a painful torment. |
| 031:007 Maulana | : |
And when Our messages are recited to him, he turns back proudly, as if he had not heard them, as if there were deafness in his ears; so announce to him a painful chastisement. |
| 031:007 Pickthal | : |
And when Our revelations are recited unto him he turneth away in pride as if he heard them not, as if there were a deafness in his ears. So give him tidings of a painful doom. |
| 031:007 Rashad | : |
And when our revelations are recited to the one of them, he turns away in arrogance as if he never heard them, as if his ears are deaf. Promise him a painful retribution. |
| 031:007 Sarwar | : |
When Our revelations are recited to them, they turn back on their heels out of pride as if they did not hear them or their ears had been sealed off. Warn them of the painful torment. |
| 031:007 Shakir | : |
And when Our communications are recited to him, he turns back proudly, as if he had not heard them, as though in his ears were a heaviness, therefore announce to him a painful chastisement. |
| 031:007 Sherali | : |
And when Our Signs are recited to him, he turns away disdainfully, as though he heard them not, as if there were a heaviness in his ears. So announce to him a painful punishment. |
| 031:007 Yusufali | : |
When Our Signs are rehearsed to such a one, he turns away in arrogance, as if he heard them not, as if there were deafness in both his ears: announce to him a grievous Penalty. |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > عقائد البشر وأهواؤهم Pillars of Islam> Islamic> Oneness of Allah>The Human Beliefs and Inclinations أركان الإسلام > التوحيد > الكافرون > تشبيههم بالموتى والصم والبكم والعمي Pillars of Islam> Islamic> The Disbelievers> Their Resemblance with the Deceased, the Deaf, the Mute and the Blind أركان الإسلام > التوحيد > الكافرون > مثال من لا يستجيب لله Pillars of Islam> Islamic> The Disbelievers> An Example of Whoever doesn't Respond to Allah القرآن الكريم > تلاوته > الأمر بتلاوته The Holy Quran> The Quran Recitation> The Command to Recit it القرآن الكريم > حقيقته وتصديقه للكتب الأوائل The Holy Quran> The Quran's Reality and its confirmation of the Previous Books
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Handle climate data from the 'DWD' ('Deutscher Wetterdienst', see <https://www.dwd.de/EN/climate_environment/cdc/cdc.html> for more information). Choose files with 'selectDWD()', download and process data sets with 'dataDWD()' and 'readDWD()'.
| Version: | 0.11.0 |
| Depends: | R (≥ 2.10) |
| Imports: | berryFunctions (≥ 1.17.0), pbapply |
| Suggests: | RCurl, leaflet, knitr, rmarkdown, testthat, data.table, OSMscale, R.rsp |
| Published: | 2018-11-26 |
| Author: | Berry Boessenkool |
| Maintainer: | Berry Boessenkool <berry-b at gmx.de> |
| BugReports: | https://github.com/brry/rdwd/issues |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | https://github.com/brry/rdwd |
| NeedsCompilation: | no |
| SystemRequirements: | Pandoc (>= 1.12.3), pandoc-citeproc |
| Materials: | README NEWS |
| CRAN checks: | rdwd results |
| Reference manual: | rdwd.pdf |
| Vignettes: |
rdwd use cases DWD weather stations map rdwd: climate data from the German Weather Service |
| Package source: | rdwd_0.11.0.tar.gz |
| Windows binaries: | r-devel: rdwd_0.11.0.zip, r-release: rdwd_0.11.0.zip, r-oldrel: rdwd_0.11.0.zip |
| OS X binaries: | r-release: rdwd_0.11.0.tgz, r-oldrel: rdwd_0.11.0.tgz |
| Old sources: | rdwd archive |
Please use the canonical form https://CRAN.R-project.org/package=rdwd to link to this page.


Welcome to your Google App Engine Python web app
Potentially useful links:
Local:
This (static) file (/index.html)
Python-based (dynamic) endpoint (/api/)
Application RPC Utilization Statistics
Application Instance WarmUp route handler
External:
Your account's GAE applications "console"
GAE app.yaml documentation
GAE python "third party" libraries


Deuteronomy 23:25
When thou comest into the standing corn of thy neighbor, then thou mayest pluck the ears with thine hand; but thou shalt not move a sickle unto thy neighbor's standing corn.


3. Project Summary
Give a concise and simple description, in plain language, or the study in each of the sections below.
4. Principle Investigator
The principal investigator must be a Curtin staff member. If this application is for a student project the principal investigator must be one of the student's supervisors.
5. Co-Investigators
6. Contact Person
Next section >
< Previous section


About Me
My Hobbies
Skiing
Golf
Poker
Bills to pay
Mortgage
Car
Cable
My favorite people
Eddie
Jon
kaiden
Masha
Lana
Lilliana
Coronavirus Information
Johns Hopkins
Worldometer


26 October 1998
Disease Outbreak Reported
The Preventive Health Department of the Sulaimania governorate of Iraq reported 20 cholera cases and 1 death during the period, 12 September - 6 October 1998. Health and sanitary measures have been implemented to prevent further spread.


Is there a way to get multigraph to open with the latest data being displayed, rather than the earliest? Everytime I open it I have to click the Day button to see the information I'm interested in.
Thanks
Lloyd
Archived Forum |
|
Open Multigraph at latest dataSubmitted by Lloyd on Sun, 09/09/2012 - 11:23Is there a way to get multigraph to open with the latest data being displayed, rather than the earliest? Everytime I open it I have to click the Day button to see the information I'm interested in. Thanks Lloyd » |
Re: Open Multigraph at latest data
Hello Lloyd, yes this is possible, if you go to vis/multigraph, click on day and then on save at the bottom of the page. The multigraph should then always load the last day.
Re: Open Multigraph at latest data
Hi Trystan.
First, thank you for a very exciting project that. I am currently trying it out on my solar power installation and a RFM12PI and a Funky sensor displaying data on emoncms.org/jensk
I to have the same problem about the display of todays data on multigrapf. I have tried the Vis - Multigraph - select multigraph#. I cannot find the save button - neither after pressing the View Fullscreen button.
Is it my browser or is there someting i am not understanding regarding this?
Re: Open Multigraph at latest data
Just go to Vis -> Multigraph -> Select the one you want to change -> Click "D". Done (AFAIK)!
Re: Open Multigraph at latest data
yes it works now. Thank you
Any idea as how to limit only to showing the hours where there is data in the multigraph?


In this project, you'll build your first neural network and use it to predict daily bike rental ridership. We've provided some of the code, but left the implementation of the neural network up to you (for the most part). After you've submitted this project, feel free to explore the data and the model more.
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
A critical step in working with neural networks is preparing the data correctly. Variables on different scales make it difficult for the network to efficiently learn the correct weights. Below, we've written the code to load and prepare the data. You'll learn more about this soon!
data_path = 'Bike-Sharing-Dataset/hour.csv'
rides = pd.read_csv(data_path)
rides.head()
This dataset has the number of riders for each hour of each day from January 1 2011 to December 31 2012. The number of riders is split between casual and registered, summed up in the cnt
column. You can see the first few rows of the data above.
Below is a plot showing the number of bike riders over the first 10 days or so in the data set. (Some days don't have exactly 24 entries in the data set, so it's not exactly 10 days.) You can see the hourly rentals here. This data is pretty complicated! The weekends have lower over all ridership and there are spikes when people are biking to and from work during the week. Looking at the data above, we also have information about temperature, humidity, and windspeed, all of these likely affecting the number of riders. You'll be trying to capture all this with your model.
rides[:24*10].plot(x='dteday', y='cnt')
Here we have some categorical variables like season, weather, month. To include these in our model, we'll need to make binary dummy variables. This is simple to do with Pandas thanks to get_dummies()
.
dummy_fields = ['season', 'weathersit', 'mnth', 'hr', 'weekday']
for each in dummy_fields:
dummies = pd.get_dummies(rides[each], prefix=each, drop_first=False)
rides = pd.concat([rides, dummies], axis=1)
fields_to_drop = ['instant', 'dteday', 'season', 'weathersit',
'weekday', 'atemp', 'mnth', 'workingday', 'hr']
data = rides.drop(fields_to_drop, axis=1)
data.head()
To make training the network easier, we'll standardize each of the continuous variables. That is, we'll shift and scale the variables such that they have zero mean and a standard deviation of 1.
The scaling factors are saved so we can go backwards when we use the network for predictions.
quant_features = ['casual', 'registered', 'cnt', 'temp', 'hum', 'windspeed']
# Store scalings in a dictionary so we can convert back later
scaled_features = {}
for each in quant_features:
mean, std = data[each].mean(), data[each].std()
scaled_features[each] = [mean, std]
data.loc[:, each] = (data[each] - mean)/std
We'll save the data for the last approximately 21 days to use as a test set after we've trained the network. We'll use this set to make predictions and compare them with the actual number of riders.
# Save data for approximately the last 21 days
test_data = data[-21*24:]
# Now remove the test data from the data set
data = data[:-21*24]
# Separate the data into features and targets
target_fields = ['cnt', 'casual', 'registered']
features, targets = data.drop(target_fields, axis=1), data[target_fields]
test_features, test_targets = test_data.drop(target_fields, axis=1), test_data[target_fields]
We'll split the data into two sets, one for training and one for validating as the network is being trained. Since this is time series data, we'll train on historical data, then try to predict on future data (the validation set).
# Hold out the last 60 days or so of the remaining data as a validation set
train_features, train_targets = features[:-60*24], targets[:-60*24]
val_features, val_targets = features[-60*24:], targets[-60*24:]
Below you'll build your network. We've built out the structure and the backwards pass. You'll implement the forward pass through the network. You'll also set the hyperparameters: the learning rate, the number of hidden units, and the number of training passes.
<img src="assets/neural_network.png" width=300px>
The network has two layers, a hidden layer and an output layer. The hidden layer will use the sigmoid function for activations. The output layer has only one node and is used for the regression, the output of the node is the same as the input of the node. That is, the activation function is $f(x)=x$. A function that takes the input signal and generates an output signal, but takes into account the threshold, is called an activation function. We work through each layer of our network calculating the outputs for each neuron. All of the outputs from one layer become inputs to the neurons on the next layer. This process is called forward propagation.
We use the weights to propagate signals forward from the input to the output layers in a neural network. We use the weights to also propagate error backwards from the output back into the network to update our weights. This is called backpropagation.
Hint: You'll need the derivative of the output activation function ($f(x) = x$) for the backpropagation implementation. If you aren't familiar with calculus, this function is equivalent to the equation $y = x$. What is the slope of that equation? That is the derivative of $f(x)$.
Below, you have these tasks:
self.activation_function
in __init__
to your sigmoid function.train
method.train
method, including calculating the output error.run
method.class NeuralNetwork(object):
def __init__(self, input_nodes, hidden_nodes, output_nodes, learning_rate):
# Set number of nodes in input, hidden and output layers.
self.input_nodes = input_nodes
self.hidden_nodes = hidden_nodes
self.output_nodes = output_nodes
# Initialize weights
self.weights_input_to_hidden = np.random.normal(0.0, self.input_nodes**-0.5,
(self.input_nodes, self.hidden_nodes))
self.weights_hidden_to_output = np.random.normal(0.0, self.hidden_nodes**-0.5,
(self.hidden_nodes, self.output_nodes))
self.lr = learning_rate
#### TODO: Set self.activation_function to your implemented sigmoid function ####
#
# Note: in Python, you can define a function with a lambda expression,
# as shown below.
self.activation_function = lambda x : 1 / (1 + np.exp(-x)) # Replace 0 with your sigmoid calculation.
### If the lambda code above is not something you're familiar with,
# You can uncomment out the following three lines and put your
# implementation there instead.
#
#def sigmoid(x):
# return 0 # Replace 0 with your sigmoid calculation here
#self.activation_function = sigmoid
def train(self, features, targets):
''' Train the network on batch of features and targets.
Arguments
---------
features: 2D array, each row is one data record, each column is a feature
targets: 1D array of target values
'''
n_records = features.shape[0]
delta_weights_i_h = np.zeros(self.weights_input_to_hidden.shape)
delta_weights_h_o = np.zeros(self.weights_hidden_to_output.shape)
for X, y in zip(features, targets):
#### Implement the forward pass here ####
### Forward pass ###
# TODO: Hidden layer - Replace these values with your calculations.
hidden_inputs = np.dot(X, self.weights_input_to_hidden) # signals into hidden layer
hidden_outputs = self.activation_function(hidden_inputs) # signals from hidden layer
# TODO: Output layer - Replace these values with your calculations.
final_inputs = np.dot(hidden_outputs, self.weights_hidden_to_output) # signals into final output layer
final_outputs = final_inputs # signals from final output layer
#### Implement the backward pass here ####
### Backward pass ###
# TODO: Output error - Replace this value with your calculations.
error = y - final_outputs # Output layer error is the difference between desired target and actual output.
# TODO: Calculate the hidden layer's contribution to the error
hidden_error = np.dot(error, self.weights_hidden_to_output.T)
# print("Error: ", error, self.weights_hidden_to_output, hidden_error)
# TODO: Backpropagated error terms - Replace these values with your calculations.
output_error_term = error
hidden_error_term = hidden_error * hidden_outputs * (1 - hidden_outputs)
# print("Hidden Error Term: ", hidden_error_term)
# Weight step (input to hidden)
# print("Delta Weights H > O: ", hidden_error_term, X, X[:,None])
delta_weights_i_h += hidden_error_term * X[:,None]
# Weight step (hidden to output)
delta_weights_h_o += output_error_term * hidden_outputs[:,None]
# TODO: Update the weights - Replace these values with your calculations.
self.weights_hidden_to_output += self.lr * delta_weights_h_o / n_records # update hidden-to-output weights with gradient descent step
self.weights_input_to_hidden += self.lr * delta_weights_i_h / n_records # update input-to-hidden weights with gradient descent step
def run(self, features):
''' Run a forward pass through the network with input features
Arguments
---------
features: 1D array of feature values
'''
#### Implement the forward pass here ####
# TODO: Hidden layer - replace these values with the appropriate calculations.
hidden_inputs = np.dot(features, self.weights_input_to_hidden) # signals into hidden layer
hidden_outputs = self.activation_function(hidden_inputs) # signals from hidden layer
# TODO: Output layer - Replace these values with the appropriate calculations.
final_inputs = np.dot(hidden_outputs, self.weights_hidden_to_output) # signals into final output layer
final_outputs = final_inputs # signals from final output layer
return final_outputs
def MSE(y, Y):
return np.mean((y-Y)**2)
Run these unit tests to check the correctness of your network implementation. This will help you be sure your network was implemented correctly befor you starting trying to train it. These tests must all be successful to pass the project.
import unittest
inputs = np.array([[0.5, -0.2, 0.1]])
targets = np.array([[0.4]])
test_w_i_h = np.array([[0.1, -0.2],
[0.4, 0.5],
[-0.3, 0.2]])
test_w_h_o = np.array([[0.3],
[-0.1]])
class TestMethods(unittest.TestCase):
##########
# Unit tests for data loading
##########
def test_data_path(self):
# Test that file path to dataset has been unaltered
self.assertTrue(data_path.lower() == 'bike-sharing-dataset/hour.csv')
def test_data_loaded(self):
# Test that data frame loaded
self.assertTrue(isinstance(rides, pd.DataFrame))
##########
# Unit tests for network functionality
##########
def test_activation(self):
network = NeuralNetwork(3, 2, 1, 0.5)
# Test that the activation function is a sigmoid
self.assertTrue(np.all(network.activation_function(0.5) == 1/(1+np.exp(-0.5))))
def test_train(self):
# Test that weights are updated correctly on training
network = NeuralNetwork(3, 2, 1, 0.5)
network.weights_input_to_hidden = test_w_i_h.copy()
network.weights_hidden_to_output = test_w_h_o.copy()
network.train(inputs, targets)
self.assertTrue(np.allclose(network.weights_hidden_to_output,
np.array([[ 0.37275328],
[-0.03172939]])))
self.assertTrue(np.allclose(network.weights_input_to_hidden,
np.array([[ 0.10562014, -0.20185996],
[0.39775194, 0.50074398],
[-0.29887597, 0.19962801]])))
def test_run(self):
# Test correctness of run method
network = NeuralNetwork(3, 2, 1, 0.5)
network.weights_input_to_hidden = test_w_i_h.copy()
network.weights_hidden_to_output = test_w_h_o.copy()
self.assertTrue(np.allclose(network.run(inputs), 0.09998924))
suite = unittest.TestLoader().loadTestsFromModule(TestMethods())
unittest.TextTestRunner().run(suite)
Here you'll set the hyperparameters for the network. The strategy here is to find hyperparameters such that the error on the training set is low, but you're not overfitting to the data. If you train the network too long or have too many hidden nodes, it can become overly specific to the training set and will fail to generalize to the validation set. That is, the loss on the validation set will start increasing as the training set loss drops.
You'll also be using a method know as Stochastic Gradient Descent (SGD) to train the network. The idea is that for each training pass, you grab a random sample of the data instead of using the whole data set. You use many more training passes than with normal gradient descent, but each pass is much faster. This ends up training the network more efficiently. You'll learn more about SGD later.
This is the number of batches of samples from the training data we'll use to train the network. The more iterations you use, the better the model will fit the data. However, if you use too many iterations, then the model with not generalize well to other data, this is called overfitting. You want to find a number here where the network has a low training loss, and the validation loss is at a minimum. As you start overfitting, you'll see the training loss continue to decrease while the validation loss starts to increase.
This scales the size of weight updates. If this is too big, the weights tend to explode and the network fails to fit the data. A good choice to start at is 0.1. If the network has problems fitting the data, try reducing the learning rate. Note that the lower the learning rate, the smaller the steps are in the weight updates and the longer it takes for the neural network to converge.
The more hidden nodes you have, the more accurate predictions the model will make. Try a few different numbers and see how it affects the performance. You can look at the losses dictionary for a metric of the network performance. If the number of hidden units is too low, then the model won't have enough space to learn and if it is too high there are too many options for the direction that the learning can take. The trick here is to find the right balance in number of hidden units you choose.
import sys
### Set the hyperparameters here ###
# Training loss: 0.077 ... Validation loss: 0.162
# iterations = 2500
# learning_rate = 0.005 * 128 # batch size is 128, so actual is lr / records
# hidden_nodes = 14
# output_nodes = 1
print("features shape: ", train_features.shape)
iterations = 13000
learning_rate = 0.001 * 128 # batch size is 128, so actual is lr / records
hidden_nodes = 14
output_nodes = 1
N_i = train_features.shape[1]
network = NeuralNetwork(N_i, hidden_nodes, output_nodes, learning_rate)
losses = {'train':[], 'validation':[]}
for ii in range(iterations):
# Go through a random batch of 128 records from the training data set
batch = np.random.choice(train_features.index, size=128)
X, y = train_features.ix[batch].values, train_targets.ix[batch]['cnt']
network.train(X, y)
# Printing out the training progress
train_loss = MSE(network.run(train_features).T, train_targets['cnt'].values)
val_loss = MSE(network.run(val_features).T, val_targets['cnt'].values)
sys.stdout.write("\rProgress: {:2.1f}".format(100 * ii/float(iterations)) \
+ "% ... Training loss: " + str(train_loss)[:5] \
+ " ... Validation loss: " + str(val_loss)[:5])
sys.stdout.flush()
losses['train'].append(train_loss)
losses['validation'].append(val_loss)
plt.plot(losses['train'], label='Training loss')
plt.plot(losses['validation'], label='Validation loss')
plt.legend()
_ = plt.ylim()
Here, use the test data to view how well your network is modeling the data. If something is completely wrong here, make sure each step in your network is implemented correctly.
fig, ax = plt.subplots(figsize=(8,4))
mean, std = scaled_features['cnt']
predictions = network.run(test_features).T*std + mean
ax.plot(predictions[0], label='Prediction')
ax.plot((test_targets['cnt']*std + mean).values, label='Data')
ax.set_xlim(right=len(predictions))
ax.legend()
dates = pd.to_datetime(rides.ix[test_data.index]['dteday'])
dates = dates.apply(lambda d: d.strftime('%b %d'))
ax.set_xticks(np.arange(len(dates))[12::24])
_ = ax.set_xticklabels(dates[12::24], rotation=45)
Answer these questions about your results. How well does the model predict the data? Where does it fail? Why does it fail where it does?
Note: You can edit the text in this cell by double clicking on it. When you want to render the text, press control + enter
It can predict regular weeks/days pretty well. The dataset contains two year of bike rentals so it has trained daily and hourly information well because it has a lot of datapoints relatively.
The end of December is a holiday period and really with only one data point (Christmas 2011, not Christmas 2012 because that was taken out as test_data) it will not predict accurately unless we overfit the model which we don't want do.
Below is an example of predictions around Thanksgiving 2012. You can see here that the predictions are off on 22nd of November (thanksgiving) and the days after.
# Get data from Thanksgiving 2012
proof_data = data[-25*24:-10*24]
# Separate the data into features and targets
proof_features, proof_targets = proof_data.drop(target_fields, axis=1), proof_data[target_fields]
fig, ax = plt.subplots(figsize=(8,4))
mean, std = scaled_features['cnt']
predictions = network.run(proof_features).T*std + mean
ax.plot(predictions[0], label='Prediction')
ax.plot((proof_targets['cnt']*std + mean).values, label='Data')
ax.set_xlim(right=len(predictions))
ax.legend()
dates = pd.to_datetime(rides.ix[proof_data.index]['dteday'])
dates = dates.apply(lambda d: d.strftime('%b %d'))
ax.set_xticks(np.arange(len(dates))[12::24])
_ = ax.set_xticklabels(dates[12::24], rotation=45)


case study-stage1-lesson1sub #Casestudy
Stage 1: study MIT course
Learn MIT 6.S094- Deep Learning and Self-Driving Cars Course!
Course website:
https://selfdrivingcars.mit.edu/ ,all slides are videos can be downloaded from this page
There are 5 lectures, each about 90 minutes.
Lecture 1: learning summary deadline 20171120
Material to research:
1. CASE study
2. MIT lecture 1: see
https://selfdrivingcars.mit.edu/
3. use internet
Please cover all the related items in the case study material that you can find in lesson 1.You need to do extensive research.
Submit your summary of lesson 1 in the form of PPT, try to use multimedia presentation:
list the related key term or item in outline of your PPT and elaborate each one with sufficient materials and summarize it.
Submission:
HL students
- Doris:
- Alex:
- Tom:
- Charles:
- Michael:
- Enzo:
- Arthur
(SL Optional)


MICRO INVERTER PROJECTINSTRUCTOR: SIR ASIM ALI SAMEJO |
|---|
| Microinverter is a device that converts direct current (DC) to alternating current (AC). Microinverters contrast with conventional string and central solar inverters, in which a single inverter is connected to multiple solar panels. The output from several microinverters can be combined and often fed to the electrical grid. |
| In recent years the use of solar energy in domestic as well as at large scale has been increased exponentially. The reason of the use of the solar energy at the domestic level is that one can get rid of the load shedding as well as of the electricity bills. While at large scale the governments are trying to achieve the “Paris Agreement” goal of lowering the global average temperature up to 2 degree Celsius until the end of this century. The governments are focusing on the clean energy. So the new power plants are mostly the renewable which are environment friendly. |
| The solar power plants are one of the main sources of this renewable energy. The solar energy is generated in DC form. While the home appliances runs on the AC electricity. Here the DC to AC converter is required. The more is the number of solar power plants, the more is the demand of the inverters. |
| Moreover, the inverters are also used in the electric vehicles, whose demand is also boosting in the recent years. Most of the countries are replacing the ordinary fuel vehicles with the electric vehicles to reduce the carbon emissions. |
| Consequently, the inverter is a very important device, which has the vast applications at domestic level as well as at industrial level. That is why we have selected this project of immense importance. |


Face Verification
Check the likelihood that two faces belong to the same person. The API will return a confidence score about how likely it
is that the two faces belong to one person.
{{errorMessage}}
Verification Result:
{{ verificationStatus }}
{{ resultStatus }}
Want to build this?