text:
HONOLULU — Carolina Panthers coach Ron Rivera came halfway around the globe and wasn't about to play for a tie.
HONOLULU — Carolina Panthers coach Ron Rivera came halfway around the globe and wasn't about to play for a tie.
Deciding against an extra point to force overtime, Rivera called his own player's number on the two-point try — and Panthers fullback Mike Tolbert delivered by slamming into the end zone to give Team Rice a 22-21 victory over Team Sanders on Sunday at Aloha Stadium.
DeMarco Murray's 20-yard touchdown catch cut Team Sanders' lead to a point with 41 seconds left. With his players yelling "Riverboat Ron" on the sideline, Rivera left the offense on the field, as he and alumni captain Jerry Rice had discussed Saturday.
"I said, 'Jerry, we didn't come here to tie. If it comes down to it, we're going for two.' And he said, 'Absolutely,' " Rivera said on the field afterward. "Then I checked with him one last time. He said, 'Coach, just go for it.' And we did."
Team Sanders' Justin Tucker, the Baltimore kicker who made a 64-yard field goal during the regular season, was short on a 67-yard attempt as time expired.
The Panthers were stuffed on two goal-line situations in a playoff loss to San Francisco two weeks ago, but Tolbert wasn't going to be denied on the play Rivera called a "fullback belly."
"That's a basic play that I think every team in the league has," Tolbert said. "I'm not surprised by any means that Ron wasn't going to go for the tie. They call him Riverboat Ron in Carolina for a reason."
Panthers defensive end Greg Hardy, who was playing tackle for Team Sanders on the final drive, wasn't surprised, either. Hardy said he knew the fullback dive was coming but couldn't stop it because Colts coach Chuck Pagano replaced him with Detroit's Ndamukong Suh on the conversion.
"I knew what he was running, exactly where he was going and they took me out," Hardy said. "I was right there. I was like, 'I know what's about to go down.' And they took me out."
The NFL brought in Hall of Famers Rice and Deion Sanders to draft the teams, and the league tweaked a couple of rules to try to spice up a game that has come under fire in recent years for its quality of play and effort.
From the opening series, when New Orleans Saints quarterback Drew Brees — the starter for Team Rice — was hit from the blind side on consecutive snaps, players seemed to be giving effort.
Saints tight end Jimmy Graham said there was no comparing Sunday's game with the 2012 Pro Bowl, a game that prompted boos from the Aloha Stadium crowd and drew the ire of commissioner Roger Goodell.
"I was here two years ago, and in comparison to that, it was leaps and bounds (better)," said Graham, who caught five passes for 51 yards and a touchdown. "I don't think a Pro Bowl or all-star game can be any better than it was tonight."
But the execution wasn't always there. With rain falling for most of the game, the teams combined for eight turnovers, including six interceptions. Philadelphia's Nick Foles, making his first Pro Bowl appearance, was the only quarterback without a pick.
Rivera kept up his gambling ways after a Foles touchdown pass in the fourth quarter, calling a successful fake punt on a run by Tolbert to keep a drive alive. Team Rice advanced past midfield before Miami cornerback Brent Grimes intercepted Alex Smith.
Panthers linebacker Luke Kuechly had a game-high 12 solo tackles for Team Sanders.
Panthers quarterback Cam Newton, booed during the game two years ago when he threw three interceptions, was 8 of 17 passing for 95 yards with no touchdowns and one interception after taking over for Team Sanders starter Andrew Luck.
N ewton scored on a 1-yard sneak in the second quarter.
After his touchdown run, Newton saluted Sanders with Prime Time's touchdown dance and continued his own tradition by finding a Panthers fan in the front row — a young boy wearing a Newton jersey — and handing him the ball.
Newton didn't get a lot of help.
He was charged with an interception in the first half when Cleveland Browns cornerback Joe Haden took the ball away from Eagles wideout DeSean Jackson. It appeared Jackson had possession of the ball and lost it, which should have been a fumble.
Newton also was victimized by a couple of dropped passes by receivers — on a long pass at the end of the first half that hit A.J. Green in the hands and on a slant pass in the end zone that Dez Bryant couldn't pull in.
There were a couple of interesting moments for the Panthers' Honolulu contingent. On Tolbert's 7-yard run in the first half, he barreled into Kuechly, knocking him backward.
"Make sure you quote me: 'Luke, I'm sorry,' " Tolbert said of his play against Kuechly.
Hardy, who has been a gunner on the Panthers' punt coverage, dropped Kansas City returner Dexter McCluster — Hardy's teammate at Mississippi — on a fourth-quarter punt.
But in the end it was Rivera, Tolbert and the rest of Team Rice celebrating.
"I expected those guys to go for it, and they did," Newton said. "It's kind of a double-edged sword when you see your guys score. When you're on the opposing team, it's not fun, especially for the celebration."


text:
Are You a 365 TRF Donor Yet?
Posted by Deb West
on Feb 17, 2016
Designed to be the next level of foundation giving for those who have consistently achieved EREY status, being a District 5790 365 Donor provides recognition to those Rotarians who have committed to giving a minimum annual gift of $365 (just $1/day).
Click the 365 Donor Form link, download and complete the form, send it to Deb West at firstname.lastname@example.com and become the proud owner of the pin below.
What? You have not been an EREY participant yet? No problem, just complete the form on the link below.
As we near the end of the calendar year, this is a perfect time to make your commitment and send a payment to The Rotary Foundation. Contributions credited for 2015 may be made via rotary.org up until on Thursday, Dec. 31, 2015. Checks mailed to The Rotary Foundation dated no later than Dec. 31, 2015 and received by Jan. 8, 2016 will be credited to the donors' 2015 giving.
here are an address to mail in contributions and a link to TRF online donation form
The Rotary Foundation
14280 Collections Center Drive
Chicago, IL 60693 USA
Tel: 1-866-976-8279 (toll-free)
Fax: +1-847-328-4101
Email: firstname.lastname@example.com
Click here for link to the TRF Contribution Form:

subset: commoncrawl


text:
Year: 2014
Run-Time: 1 x 30 min.
Directed by Barbara Pichler-Hausegger and Walter Reichl
Written by Barbara Pichler-Hausegger
Produced by wrfilm for ORF
Languages: German (ORIGINAL) , German (SUB TITLE)
Format: 16:9
Umeå - 2014 Capital of Culture
Schlaflos in Umeå
Umeå is the least well known European capital of culture of all time, but it is certainly not the least interesting. After all, it has astonishing phenomena such as eight seasons and feminist punk rockers as well as being the home city of Stieg Larsson, creator of the "Millennium" trilogy. The documentary, "Umeå - 2014 Capital of Culture" discovered a few alternatives to the rest of Europe in the "city of a thousand birch trees". Life here is unpretentious and uncomplicated, anti-hierarchical and anti-snobbish. People get involved in politics and take responsibility. Minorities such as the original inhabitants, the Sami, have a fixed place in society.
|Imprint Privacy Policy


text:
Barista-quality coffee is now accessible to everybody! Nespresso coffee can be made at home, and doesn't come with the price tag you'd expect. Their coffee capsules and machines make it so easy and affordable, with even further savings to be made with our Nespresso voucher codes.
We know that good mornings start with good coffee so we will always be here to help you get the best Nespresso discount codes on those essential beans. Whether you like an intense shot of the finest Kenyan espresso or a fruity Columbian cappuccino, with Nespresso you can choose from 25 different capsules. Nespresso was the original capsule coffee creator and years of experience have led to an excellent reputation as the best provider of high end coffee experiences in the comfort of your home.
So if you want to upgrade to the good stuff, get your hands on one of our Nespresso promo codes which can be used with Nespresso's own money saving offers. They will provide you with all the information you need, from helpfully detailed coffee tasting notes with a sliding scale of strengths to 24/7 accessible coffee specialists who can provide ordering and machine assistance.


text:
Titania Fairy Princess Dress
Fabulous gown with another of our trademark extravagant lined skirts. This luxurious dress , in a tasteful pale pink will delight both little Princesses and their parents alike.The Titania Fairy Princess Dress has a satin underskirt, tiered layers of net trimmed with satin ribbon and topped with stunning organza sprinkled with just the right amount of silver sparkle! The attached bodice in lined velvet has delicate ebroidery detail - just gorgeous!
Headress shown available seperately.
Please see size info.
Age Chest Length
2-4 56cm 80cm
4-6 60cm 86cm
6-8 67cm 90cm
8-10 72cm 92cm


text:
- Home
- All Natural Pet Odor Remover
Product Description
This item is no longer available. Pets can be terribly smelly. Dogs and cats have different standards of cleanliness than people. Sometimes, Rex will decide that the puddle of mud outside smells wonderful and he'll decide to roll around in the muck. Other times, Fluffy will decide to mark every corner of the room to mark her territory. You don't have to get rid of your pets to get rid of these odors. There's no need to hide smelly messes with chemicals that stink even worse. This odor control works naturally to trap and eliminate stinky smells. Our All Natural Pet Odor Remover is made with Zeolite. Zeolite is a mineral with microscopic pores that absorb smells in the same way that a sponge absorbs water. These pores are so small that they trap ions from the air, and many smells can be controlled by eliminating ionized gas. All Natural Pet Stink Remover works like a molecular sieve, filtering the air to remove any unpleasant smells. Zeolite is composed of neutral elements such as Aluminum, Silicon, Oxygen, and Sodium. These components are perfectly safe to use around children, pets, and people with chemical sensitivity. The Zeolite in this product has been dried out to increase its odor absorbing power. Freshly mined Zeolite has an average water content of 30%, but this odor absorbing powder is only 3% water. Natural Odor Remover can be used to control smells from cats, dogs, possums, skunks, prarie dogs, rabbits, hedgehogs, groundhogs, porcupines, snakes, lizards, birds, spiders, and many other pets. Odorzout Pet All Surface Granules may also be used to eliminate the odor of deceased animals trapped in crawl spaces or walls. For the best results, you should have Animal Control remove any carcasses and then treat the remaining smells. Just sprinkle lightly along the floor or next to the wall near the source of the odor. This is a green product that can help you get the best results from other earth friendly cleaning products. All Natural Odor Remover is a VOC free alternative to scented candles and bleach based cleansers. The bottle is made from recycled plastic, and the label is made from recycled paper. Each 850 gram bottle is enough to cover 800 to 1,000 square feet. *Recognized by the EPA's "Design for the Environment" program and endorsed by CNN's Linda Cobb.
Product Reviews
This product hasn't received any reviews yet. Be the first to review this product!
Customers also viewed


text:
EDIT: This is no longer available.
Something tells me these free Raisels snacks on Facebook will go fast, so hurry along and sign up. Or don't. Take your sweet time, but don't blame me if you're too late!
Fine, fine, you can still blame me. I'm nothing if not accommodating.


text:
This film is brought to you by the best selling author Takerra Allen produced by Sandra Mobley, based on a true story. Starring Asha Hadiyah, Carter Barron, Deja Nelfiria, Toney Perkins, James A. Lee.
This story is a triumph one, though Heaven goes through so much turmoil you see her strengths rather than her weakness. 'Heaven' a determined teenaged girl, who despite her neglectful home life, and older, abusive boyfriend, is heading off to college to leave it all behind, but gets sidetracked when she falls for a local drug-dealer, immersing herself into his fast life of sex, money, and drugs.
Watch Film HERE
Buy the Book HERE


text:
I must say, I know, I'm terribly behind on blogging… but more on that later.
Here's an image from an engagement session this past fall with the lovely couple, Trish & Shane. We took this on an EXTREMELY windy day out in the Crowsnest Pass (where the wind always blows). Trish & Shane were secretly convinced that the pictures would turn out terrible due to the wind but thankfully, to their delight, we captured some beautiful portraits. If I ever find some time, I'll post more of their session. I had the pleasure of photographing their wedding in Banff this New Year. If I thought the wind was bad… it was nothing. It was brutally cold their wedding day, something in the negative twenties…BUT despite the freezing temperatures, it was a beautiful and lively wedding. The wedding party were such troopers - especially Trish (you'll see why later)! I'm just in the middle of proofing and hope to get a sneak peek up in the next week.
Onto other things… it may beg the question, why am I so behind on blogging? Well boys and girls… let me tell you!
A few recent life changes have led me to reconsider my career path… don't freak out, I'm still going to be a photographer… but not full time. I have decided that while I love photography, I don't wish for it to be my full-time career. So, I'm back at university - for year number SIX. I've decided to pursue my original goal (when I started university six years ago) to become a doctor. So, why am I not blogging so much? Because I'm studying! Yesterday I became a total geek, I signed up for Pre Med Club! I plan on taking the MCAT this summer and applying to various schools this fall. Wish me Luck!
What does this mean for you?
My response time to e-mails can, at times, be delayed by a couple of days. I try my best to get back to you right away but please be patient if I'm behind. If you have sent me an e-mail and it's been longer than a few days, send me another! I appologize if you get lost in the depths of my inbox and I'll put you on the top of the list!
I'm still booking weddings and portraits but sessions are limited. So, plan ahead and book in advance! I plan on putting my calendar back up on the portrait side of the website so you can see what dates are available. Summer 2009 weddings are booking up fast so if you are interested, send me an e-mail or give me a call and I will set you up with all of our information.
That is all for now! I'm off to my Chem Lab (feeling very nerdy)!


text:
COMMUNITY SUpPER TICKETS ON SALE: Tickets are now on sale for the Killargue Schools Reunion Community Supper being held on Saturday 17th August. At present they're available from Patty Reynolds at Killargue Post Office but Bernadette Feeney on 0860315898 will take your orders. Other sellers will make themselves known to you all very soon! Tickets are €15 each, there's a supper, bar, raffle and music by Con Murphy to dance to and of course lots of chat.....it's a Reunion and Community celebration after all! This is the only ticketed event of the 3 day Killargue schools reunion and numbers are limited. No tickets will be on sale at the door so get your tickets now to avoid disappointment!
A NIGHT AT THE RACES: Also on sale NOW are horses and riders for the Race Night taking place on Friday 16th August in Reynolds Lounge and Bar. If you'd like to sponsor a race or buy a horse then please contact anyone from the Race Night organising group, that's Martin Kelly, Tommy Hannon, Patty Reynolds, Michael Flanagan or Ed Conick.
KILLARGUE SCHOOLS REUNION POSTERS: Look out for these across the local villages and towns in the area....they give details of what's going on and where.
REUNION PLANNING GROUP MEETING: Everyone is welcome to turn up and help with the advanced planning of the 3 days of Reunion activities. The next meeting is on Wednesday 17th July starting at 8.30pm. If you are unable to get along to the meeting but can offer your help at one or all of the events then please let either Martin Kelly or Patty Reynolds know.
COMMUNITY AUDIT: The Development Association is really on a roll at the moment and is undertaking a Community Audit over the next 6 weeks or so. This is part of the Community Leadership Programme that the committee is currently undertaking and is designed to discover from local residents just what everyone would like to see happening in the Community Centre, what extra activities or services the Development Association could help to provide and what's working/not working in our community. Members of the association will be calling at homes across Killargue and asking you to help with the work by completing a questionnaire that's been prepared. The questionnaire will either be left with you for collection on another day or it can be completed on the spot. It won't take long....and it'll help a lot.
KILLARGUE CAR TREASURE HUNT: Starting at the Community Centre at 6.30pm on Sunday 21st July this event is just a bit of fun for the summer! The idea is that you pitch up in your car with your family or friends or both, you'll be given a set of clues which will take you around the locality and might even have some connection with the Schools Reunion...or not! It's not about being first back but about completing the route....there might even be prizes.....to find out you'll need to go along. Look out for the posters!
MEDJUGORGE PILGRIMAGE: The pilgrimage will be taking place between 4th-11th October and cost from €520. For details details contact 044-9371787 / 087-6851691.
Baby Boy: Congratulations to Mary and Thomas Doran on the birth of their beautiful son Conor in London. Wishing you health and happiness in the future.


text:
With over a month of concentrated effort put in towards finishing the Heyswood novel I had to 'let it rest' after the Fast Draft weekend challenge. The first few days of last week I tried to do 3rd draft edits, but it just wasn't happening. I was tripping myself up over how to flesh out the scenes that still need to be written. Thankfully, I had scheduled a 'let it rest' short vacation for that weekend. Yay for accurate planning!
Now I'm back, ready to dive into the 3rd draft with
Elements of Fiction Writing – Description By Monica Wood in hand. The next deadline is next Tuesday, 8 days. The plan is to layer in sexual tension, unique character traits and setting. In Scrivner, I've divided the manuscript into Michael Haughe's six stages. I haven't decided how to slice it into daily goals, but I won't be starting with stage one because I get too demoralized working on the begining. I'll save that chunk for September.


text:
The U.S. Presidential elections are in their final days, and the candidates are busy touring swing states in last minute pitches to undecided voters. Early voting is already underway, and some 20 million people have already voted. Most analysts are projecting a win for Obama, but McCain is still in position to pull off the upset. Tuesday is the big day, so all Americans should be sure to exercise their right to vote!
In other news from around the world:
1. The conflict in the Democratic Republic of the Congo, which reignited in late summer after the rebel leader Laurent Nkunda announced his intention to cancel the ceasefire under which the country had effectively been operating since 2002. The latest round of fighting, centered in the eastern part of the country known as North Kivu, has sparked a humanitarian crisis of epic proportions, as an estimated one million refugees have fled their homes. On Wednesday, a new ceasefire was announced after four days of intense fighting, and now the European Union is considering sending troops and aid to the Congo.
2. Ukraine became the latest victim of the global financial crisis on Friday, as its parliament was forced to adopt a package of legislation imposed by the International Monetary Fund as a condition for receiving an emergency $16.5 billion loan from the international organization. Ukraine's turn to the IMF for a rescue package follows on the heels of similar moves in Iceland and Hungary, signaling the wide scope of the crisis. More generally, the Eurozone seems to be facing falling inflation and rising unemployment—with some national variation—as the economic crisis expands.
3. The global economic crisis is also being felt in China, where projections for annual GDP growth have been cut from 12 percent to 9-9 percent. Chinese companies are slashing production output, as worldwide demand slides. Some larger Chinese companies are cutting production by as much as 50 percent, while smaller companies are going out of business altogether. In an effort to rekindle the economy, the Chinese government announced it would cut the benchmark one-year deposit rate.
4. A U.S. raid into Syria last week has provoked a sharp response from within Syria, as protestors demonstrated against the action. Syria's foreign minister condemned the move as an act of "criminal and terrorist aggression." The U.S. claimed that Syria had been home to foreign fighters moving into Iraq, saying hat the raid had successfully targeted Abu Ghadiya, who U.S. officials described as "one of the most prominent foreign fighter facilitators in the region." As a result of the attack, U.S.-Syrian relations have soured and anti-U.S. demonstrations forced the temporary closure of the American Embassy in Damascus.
5. In another development highlighting the continuing efforts of the Russian government to reassert itself on the global stage after the Cold War, Russia is negotiating the construction of a new naval base in Libya. Russia envisions the base as a necessary counterbalance to American interests in the region. In recent weeks, Libya has increasingly opened its economy to foreign investment and has dramatically improved relations with the West.


text:
What is a tolerable upper limit? Follow
The Upper Limit (UL) is the maximum of a nutrient that is considered to be a safe amount for a healthy person to take. If the upper limit is passed there is an increased risk of adverse health effects.
The Upper Limit is fluid in regards to a person's individual health status and environmental factors. For instance: those with hypertension who also smoke may need more antioxidant nutrients than those who don't smoke or have hypertension.
If you have any further questions, concerns, or need additional help, please feel free to reach out. Our knowledgeable support team is happy to assist you. To get in touch, please use one of the contact options below:
- You can open a ticket
- Email us at firstname.lastname@example.com
- Call us at +1 (800) 983-3887
- Live Chat
0 comments
Article is closed for comments.


text:
The DotVote Crusade to Defend Politicians From Cybersquatters
Jeb Bush would love it if you visited his website (you can see why, given his recent poll numbers). He'd be less happy if you clicked on JebBush.com. Head to what seems like the most obvious URL for his campaign, and you'll be redirected to a big smirking picture of Donald Trump flashing a peace sign on his official site and a banner that declares "SHOW YOUR SUPPORT FOR DONALD TRUMP."
This is not exactly the type of exposure the Bush campaign is hoping for.


text:
Caleigh is a Minnesota band whose sound is earthy and eclectic. The three female musicians present a fusion of world folk, celtic, bluegrass, American Old-Time, and original compositions. Caleigh has shared their twenty-year musical journey with audiences throughout Minnesota and fans worldwide via the Internet. The band has released five albums on the Lily Label.
Graced with harp, fiddle, bodhran, banjo, accordion, guitars, mandolin, congas, viola, contra bass, balalika, and captivating vocals, Caleigh's music will inspire the imagination of listeners as they travel through a time-honored musical experience.


text:
I received a notice saying my premium shipping was removed because of late deliveries. How can I control UPS and USPS? I can ship using the services, but j can't get them to deliver on time. This was all during Christmas and they delivered items in 3 days instead of the next day and 2nd day requested. How can I solve this? Any ideas?
- PowerPush asked 4 years ago
It'll come back when your metrics go back above threshold. It's really not a big deal and there's nothing you can do about it but uphold your end and hope for the best.
- Jay answered 4 years ago
I was in a similar situation in November and didn't understand why my shipping wasn't meeting the standards and my metrics were in the toilet. I shipped priority within 24 hours. I found out that I didn't understand what Amazon means when they say an item is "expedited" and I thought priority was expedited to be (embarrassingly) honest. So I had a call with seller support and they helped me set up new shipping templates that would accurately reflect the service I was providing. You can make as many templates as you want and attach them to specific items. Give them a call and get it sorted out. My metrics bounced back pretty quickly after making this switch. Hope this helps.
- gogold answered 4 years ago
Understand that Amazon will hold you responsible for delivery all the way to the customer, which of course, you have no way to control.
- Wing answered 4 years ago
As long as you got the items shipped out in time you will be OK.
- Nora answered 4 years ago
Please login first to submit.


text:
Your shopping cart is empty!
Disclaimer: * Product colour may slightly vary due to photographic lighting sources or your monitor settings.
Color -Golden..
Color- Golden..
Color -Black With Golden..
Color-Grey With Golden..
Lend a fashionable twist to your attire with this pretty pair of hoop designer dangler earrings.
Customer Pre-Booking Request Form
Please fill in your complete details for Booking your connection.


text:
- Departments
- Recycling & Solid Waste
- Recycling Drop-Off Center
Recycling Drop-Off Center
The City of Deerfield Beach Recycling Drop-Off Center makes it easy to recycle and dispose of special wastes. The Drop-Off Center is open to City residents only. The recycleables accepted at the Drop-Off Center are now comprised of the materials in the City's DFB Recycling v2.0 program.
City Shred services are open to residents and DFB businesses.
Please be prepared to pay with credit card or checks made out to the City of Deerfield Beach. Cash will NOT be accepted. All prices are subject to change.
Monday & Saturday, 8 AM - 12 PM
Tuesday - Friday, 8 AM - 4 PM
401 SW 4th Street, Deerfield Beach, FL 33441
Materials Accepted
- Antifreeze
- Auto & Marine Batteries
- Bulk Wastes (Limited)
- Clean Food & Beverage Cans
- Clean Food & Beverage Cartons
- Clean Glass Bottles & Jars
- Clean Plastic Bottles, Tubs & Jugs
- Electronics
- Flattened Cardboard
- Latex Paint
- NICAD & Rechargeable Batteries
- Propane Cylinders
- Scrap Metals
- Shredding
- Tires ($2 per passenger & $5 per large or tire on rim)
- Toner & Printer Cartridges
- Used Motor Oil & Filters (25¢ per gallon)
Bulk Wastes Disposal (Limited)
The City is now accepting small amounts of residential bulk at the DOC. Bulk items must adhere to the following guidelines:
• Residents can bring up to 2 cubic yards of bulk or small items.
• Examples of bulk items accepted at the DOC include toilets, washers or dryers, wood doors and TVs.
• This service is available for Deerfield Beach residents ONLY, and proof of residency must be shown.
• It is the resident's responsibility to unload the materials from the vehicle into the roll-off dumpster provided.
• Items can be dropped off once per week.
• Bulk items may be turned away if they do not comply with these guidelines.
City Shred
Confidential document shredding is available at the DOC for residents and DFB businesses. Please remove large clips, spines and plastic covers. Shredding is available Tuesdays, Wednesdays and Thursdays from 12 PM to 3 PM.
Resident Cost
First Box: $10 | Each Additional Box: $5
DFB Business Cost
First Box: $15 | Each Additional Box: $10
This is a community residential recycling drop-off center. Please do your part to help maintain the area. Avoid leaving items on the ground and drop off only appropriate materials. Household hazardous waste collection is also offered quarterly for Deerfield Beach residents only. For more information on HHW, click here.


text:
The Portion Plate
Here is an idea, what if we said, you can eat anything you want, just as long as you use the portion plate system? There is a brilliant new product out called the portion plate. It's simple really, you split your plate following the Healthy Portion plate guidelines, making sure you get enough carbs, protein and salad/veg.
This can literally be for any meal, spaghetti bol with whole meal pasta and steamed veg. Chilli, with brown rice and veg,you get the idea!
For most clients we speak to, it's the evenings which are the toughest, too much choice, too tired, or bored of your meals. This takes out all the worry, and you can still eat some brilliant food.
For so many people, you say, don't eat this, don't touch that, and that's the only thing on your mind, take the stress away with the portion plate.
Of course you have to eat well in between, but as a guideline, this is spot on. I seriously think if you followed this for 80% of your meals, you would lose weight and feel really good knowing that you are following a really solid plan. For under £10, it's super affordable.
Buy yours today or get a sharpie and draw on your own plate at home, just make sure it's not your best!
Leave a Reply.
Why listen to us?
Good point, there is so much information out there, it's a minefield! We have been in the industry a long time, we know what works, what doesn't and what techniques you can use to achieve your goals. Check out our articles, and learn something new!
Register for Free for the Very Latest Fitness, Diet and Mindset Tips. From Non-bias, Non Guru, No BS Fitness Experts.
December 2017


text:
Honoring your spouse…it's part of the promise
Yesterday I was talking with a man in his eighties and he said something about his marriage that hit me like a bucket of cold water. His wife passed away three years ago after they had been married for 54 years. He sat very comfortably in his wheelchair and told me about all of the great times that they had shared over the years. He talked about all of places they had traveled and about the struggles that they had faced together. Then he said, "Gosh I miss her. I miss loving her and honoring her."
I had never heard anyone say anything like that before so I said, '"So you honored your wife?" He smiled and said, "I certainly tried to. I tried to honor her everyday". He went on to say that he thought the word love was used too much these days. He said, "I love lots of things but I honored my wife".
I'll carry his words with me. After all, isn't that what most of us said that we'd do in the beginning? At some point, didn't we hold hands with our spouses and vow to love and honor them til' death do us part? It's part of the promise that we made.
Dale Harcombe once wrote: "Honoring your spouse means building them up and making others think well of them. It means praising them and accepting them for who they are and not trying to change them into someone else. It means honoring them with your actions and your words. It means honoring them with your body and being faithful to them. Not just in your actions but in your thoughts and imagination as well."
Wow. That's tough. Think about it, how have you honored your spouse this week? It's still part of the deal you know. So this weekend, I challenge you to stay focused on honoring your husband or wife. Find a way to let him/her know that they come first and that you love and honor them.
Give it a shot and let me know how it goes…


text:
Open the Navigation Management window, which can be used to view the full current branch of the menu tree, and edit it.
Chela Metzger has been devoted to libraries and books since she began
volunteering for her school library in fourth grade. She has a Master's
in Library Science from Simmons College and a Diploma in Hand
Bookbinding from the North Bennet Street School. She completed an
advanced rare book conservation internship at Library of Congress in
1994, and has worked as a conservator at The Huntington Library in San
Marino California, The University of Michigan at Ann Arbor and now the
UCLA Library as head of their conservation center.
Chela began teaching book conservation while at The Huntington Library,
and continued through nine years at the University of Texas Program in
Preservation and Conservation Studies, and four years at
Winterthur/University of Delaware Program
in Art Conservation. She was awarded a three month teaching Fulbright
to teach in Argentina in 2000 and continues teaching and consulting in
Latin America. She also enjoys teaching workshops on a variety of
conservation and book history topics, and in 2018
was awarded the AIC's Sheldon and Caroline Keck Award for a sustained
record of excellence in the education and training of conservation
is an occasional exhibiting book artist, a full time library booster,
and a committed bicycle commuter. She wishes she could tour America and
other countries by bike more often!


text:
FreeBSD 6.0 Commit Approvals
The release engineering team utilizes a code freeze to maintain stability in the period immediately preceding a release. The developers below have been given explicit approval by re@ to continue conservative work in a narrowly defined area until the expiration dates below. All other developers are required to get approval for each individual change from re@ before committing to the release branch.
General discussions about the release engineering process or quality assurance issues should be sent to the public freebsd-qa mailing list. MFC requests should be sent to firstname.lastname@example.com.
Approval List
|Ruslan Ermilov
|manual pages
|1 July 2005
|Joseph Koshy
|Performance measurement toolset work: sys/dev/hwpmc, usr.sbin/pmcstat, etc.
|1 July 2005
|Max Laier
|IP6FW removal, contrib/pf PR bugfixes, if_bridge cleanup.
|1 July 2005
|Jeff Roberson
|VFS stability fixes.
|1 July 2005
|Brooks Davis
|ifnet restructuring fixes.
|1 July 2005
|Christian Brueffer
|manual pages and release documentation
|1 July 2005
|Bruce A. Mah
|release documentation
|1 July 2005
|Wilko Bulte
|Alpha release documentation
|1 July 2005
|Peter Wemm
|i386 / amd64 syncing
|1 July 2005
|Robert Watson
|minor manual page tweaks
|1 July 2005
|Denis Peplin
|ru_RU.KOI8-R translation of release documentation
|1 July 2005


text:
Panettone: A traditional sweet bread is a symbol linked with Christmas
A traditional cake/bread made at Christmas time, panettone was created in the Lombardy region and it is the undisputable holiday favorite. Scholars have traced panettone back to the middle ages. The dome shaped sweet bread is traditionally made with candied fruits, raisins and flavored with liquors. Today you can find it with chocolate chips and other ingredients. It is less like a cake then light fluffy sweet bread. The use of natural yeast results in the dough that rises slowly. The rising time can be as long as 48 hours. The long leavening contributes to the long shelf life, which can be as long as 6 months. Italian bakers take pride in the age of their leavening and some are maintained over many years.


text: Tim Pawlenty has been touting the success of Minnesota's home-grown health reforms during his national book tour as he prepares for possible run for the presidency. The former Republican governor says the state has designed a good blueprint for reining-in costs, that the rest of the nation should follow. While it's true that Minnesota has been experimenting with new ways of paying for care, some health care observers believe it's a stretch to say that Minnesota's experiments have had much of an effect on costs at this point. We picked out two of Pawlenty's Minnesota reform claims and examined them.


text:
Omega Frater Jeff Tate Named To Savoy Magazine's Top 100 Most Influential Blacks in Corporate America
Jeff Tate, Vice President, Finance, Dow Performance Plastics has been named to Savoy Magazine's Top 100 Most Influential Blacks in Corporate America 2012 issue.
Savoy is geared toward African-American business professionals and profiles prominent African-American business leaders. With 100,000 readers per issue, the magazine serves as a premier forum for issues of workplace diversity and lifestyle features. Savoy notes the 2012 Top 100 issue is "one of the most definitive lists of African American achievers in Corporate America produced to date." The magazine will be available on newsstands March 13, 2012.
In his role at Dow, Tate has responsibility for short- and long-term financial planning as well as accountability for developing and evaluating value-creating business strategies for Dow Performance Plastics, a $16 billion corporate Division of The Dow Chemical Company.
"We could not be more proud of Jeff for being recognized by this prestigious ranking," said Bill Weideman, Executive Vice President and Chief Financial Officer of The Dow Chemical Company. "He is an exemplary team member who consistently drives financial discipline and pushes the team to strive for higher performance. His unique talents and passion for excellence are well-known, and this honor is further proof of his leadership both at Dow as well as in the community."
In addition to this honor, Tate is also the recipient of the 2010 National Achievement in Industry Award from the National Association of Black Accountants (NABA). He serves as the National Co-Chair of the African American Network for Dow, an internal organization that unites and creates a community for the company's African American employees. Tate earned his Bachelor's degree in Accounting from the University of Alabama and is a member of Omega Psi Phi Fraternity, Inc. He is a Certified Public Accountant and has held various Finance positions since joining Dow in 1992, including most recently as Finance Director of the Company's Investor Relations group.
Tate was chosen for this honor from a pool of more than 500 candidates. Each candidate was selected based on criteria such as community influence and past achievements. The selection committee included Savoy's editorial board, community leaders and representatives from the business and academic sectors.


text:
Recently I had a friend over at my place and since he arrived in the morning, we had breakfast before heading out to the city. I prepared my classic porridge-muesli which is high protein, high carb and mucho deliciousness. While preparing we were discussing breakfast and … [Read more...]
Stay focused on the three basics
When I start working with new clients on my health consulting program, everyone is super excited: New training plan, different diet, different meditation hacks and cool snack ideas. In the initial talk, we always look at the baseline. Where do you stand? What are your goals? … [Read more...]
The 80/20 rule for routines
I'm a guy who loves routines. If you read this blog you know it. I've written about my meditation routine, about my evening routine and I'll soon show you my morning routine as well. I like routines so much that I sometimes have trouble enjoying vacation time and off-time, … [Read more...]
Power napping like a pro
Learn why you should sleep at work, how to do it and whether you should ask your boss if it's cool or not. Folks, let's be honest for a second. There are two kinds of people in this world: Those who can nap and those who can't. Or rather, those who just sleep and could … [Read more...]
How to have effective and productive meetings
Everybody knows them, some hate them, they are almost always a time suck, but very few can be productive: I'm talking about meetings. In the corporate world, or even the startup realms, meetings are like best friend and worst enemy. Best friends with your productivity, if you're … [Read more...]
- « Previous Page
- 1
- 2
- 3
- 4
- 5
- …
- 13
- Next Page »


text:
Personal & Professional Development for Professionals
You're here! The place where you get the tools, resources and support to move beyond your fears and live your dreams. Your life, your business and your relationships – both professionally and personally – depend on it! As a personal development speaker and coach, I get the opportunity to work with people who know there is more to life, but they just aren't sure how to achieve success.
Imagine yourself living your life on your own terms rather than living the agenda someone else set for you.
I am here to tell you that you can! You can move beyond your situation and your circumstances and write your own story. And you know the great thing about you writing your story rather than settling for someone else's story? The story can end the way you want it to.
How do I know this? I was there.
Once upon a time in my life, I experienced what it was like to live with a family not my own. That is the story of a foster child. There was also a time in my life when I was abused emotionally and physically. But you know what? That's not how my story ends.
What I realize is even though these are facts about my life, they are not my life's story. One chapter doesn't make the whole story. When I came to understand this, I picked up my pen and kept writing. I decided that the conflicts of my life would be commas, not periods. I value the lessons life is teaching me, even the hard ones. These lessons and life experiences have been stepping stones into the future Tonya you see today: An owner of 3 businesses, doing it afraid with a smile on my face!
For years I have been able to share my journey through various avenues. As a Corporate Trainer for 16 years for a major finance company I developed leadership programs that started with working on personal development in order to benefit from the end result. Believing I had more to offer I followed my dreams and started my own business. Through this I have been changing and transforming lives one person at a time.
People often say they are never the same once they leave my chair or have a conversation with me. As a Salon owner and a Leadership Developer, I am able to mentor, speak and teach to every client that comes in contact with me, and that is rewarding.
Today I work with executives, managers, directors, entrepreneurs and business owners to help them write their life's story both personally and professionally. I am also an educator for a major hair care line were I am afforded the opportunity to mentor and motivate other owners, stylist, and assistants on their present journey.
Whether you want to develop your leadership skills, improve the culture within your organization or desire personal coaching, you have come to the right place! I look forward to helping take you and/or your organization to the next level by sharing many of life's journeys through the John Maxwell teachings, and my personal victories.


text:
Stephanie Fain
Ministry Role & Responsibility: As the Associate College Minister, I'm responsible for overseeing discipleship and ministry to college girls.
About Me: I've been married to my husband, Wesley, since May 2007 and have two dogs name Molly and Petey. When I am not working I love to travel and hang out with friends. One of my favorite things to do is try new restaurants, especially if they are hole in the wall local places.
On Staff & Member Of Brook Hills Since: June 2009
Favorite Scripture:
"I will sprinkle clean water on you, and you shall be clean from all your uncleanesses and from all your idols I will cleanse you. And I will give you a new heart and a new spirit I will put within you. And I will remove the heart of stone from your flesh and give you a heart of flesh. And I will put my Spirit within you, and cause you to walk in my statues and be careful to obey my rules. You shall dwell in the land that I gave to your fathers, and you shall be my people, and I will be your God." – Ezekial 36:25-28
Interesting Fact: My great grandfather was one of the people who brought cudzoo to the south.


text:
This TKO600 has been used for factory fitting of bellhousings. Never used in a vehicle, a bit dusty but in excellent condition.
Ridding the world of outdated 4-speeds and overworked factory 5-speeds, the TREMEC TKO is the most popular and versatile performance manual trans available in the aftermarket. Begging the question, "Why crush rocks when you could move mountains?", the TKO is an extremely durable unit, perfect for retrofits in early muscle cars and street rods in addition to its originally intended purpose as a significant strength upgrade for late-model muscle machines. Handling up to 600 lb-ft. of torque, the TKO offers strength without compromise; combining awesome power-handling abilities with crisp, positive shift characteristics. A wide range of shifter locations allow for adaptation to an even wider range of vehicles. Add to that a deep overdrive for big savings at the pump and it's easy to see how the TKO has become a legend in it's own time!
1st – 2.87
2nd – 1.89
3rd – 1.28
4th – 1.00
5th – .82
Rev – 2.56
Shaft Length
Ford 7.21″
Bellhousing Conversion Kit (Not included)
The TREMEC TKO-600 transmission can be coupled to the following make engines using our complete Dellow Conversions kit:
– Ford V8
– Chrysler 6
– Chrysler V8
- Holden V6 (GM Version – ask us for gearbox availability)
- Holden V8 (GM Version – ask us for gearbox availability)
- Chev V8 (GM Version – ask us for gearbox availability)
Our conversion kits come with:
Bellhousing, Spigot bush, Pivot, Thrust race & carrier, Speedo cable, Dustcover, Tailshaft yoke, Universal joint, Clutch fork, Clutch plate, Pressure plate, Flywheel
If you would like more information, please contact us on (02) 9774 3873 or (02) 9774 4419.


text:
Don't forget to check your fertilizer openers
Proper maintenance helps prevent injury to seedlings and ensures an even stand.
Don't forget to check the often neglected starter fertilizer equipment on your planter. MSU as well as several other universities recommend placing the starter band 2 inches to the side and 2 inches below the seed for many crops including corn and dry beans. Proper placement ensures that the fertilizer nutrients are in a place where they can be readily utilized by the young seedling, yet far enough away not to cause injury to the tender germinating seed.
Worn out fertilizer opener disks are a common problem observed on many planters. As the opener disks wear down, the starter band becomes more and more shallow, potentially leading to problems associated with starter injury or ineffectiveness. Photo 1 shows an opener disk on a planter that is well past it serviceable life, with just over 3 inches of blade past the hub, this opener has little chance of placing the band 3 1/2 to 4 inches below the soil surface.
Partially frozen, nearly worn out, or worn out opener bearings are another issue. When the openers stop turning and begin to plow (Photo 2), it affects placement of the starter band and the seed furrow.
Worn pivot points in the opener arm can also be the cause of a misplaced starter band. If the opener begins to favor one side, either too close or too far away from the seed, or to wander from side to side, the starter band will not be in its intended position.
Drive mechanisms also merit some attention. Like the seed units, a smooth, even drive is preferred over the stop and go of binding shafts and frozen chain links.
Check dry fertilizer hoppers for unevenly worn or missing auger flighting. This can cause one hopper, or section of a hopper, to apply a lower rate than the hopper next to it. When refilling the hoppers during planting, always be on the lookout for a hopper that is not emptying at the same rate as the others.
On the liquid systems, check the pump regularly. On squeeze pumps, check the hoses for leaks and for uneven wear and the rollers for smooth operation. On all liquid systems, check lines leading from the pump to the openers periodically for leaks, kinks and plugging.
At least once per season, and periodically, perform a calibration check to be sure the planter is applying fertilizer evenly across all rows.
And lastly, as we are waiting for the soil to warm, give the operators manual one more look and always remember to observe all safety precautions.
For more information, also read my article Check your planter before you go to the field.
Did you find this article useful?


text:
The next evolution of the Marvel Cinematic Universe brings a founding member of The Avengers to the big screen for the first time with Marvel Studios' "Ant-Man." Armed with the astonishing ability to shrink in scale but increase in strength, master thief Scott Lang must embrace his inner hero and help his mentor, Dr. Hank Pym, protect the secret behind his spectacular Ant-Man suit from a new generation of towering threats. Against seemingly insurmountable obstacles, Pym and Lang must plan and pull off a heist that will save the world.
Marvel's "Ant-Man" stars Paul Rudd as Scott Lang aka Ant-Man, Evangeline Lilly as Hope Van Dyne, Corey Stoll as Darren Cross aka Yellowjacket, Bobby Cannavale as Paxton, Michael Peña as Luis, Tip "T.I." Harris as Dave, Wood Harris as Gale, Judy Greer as Maggie, David Dastmalchian as Kurt, and Michael Douglas as Dr. Hank Pym.
Peyton Reed directs Marvel's "Ant-Man" with Kevin Feige producing and Louis D'Esposito, Alan Fine, Victoria Alonso, Michael Grillo, Edgar Wright and Stan Lee serving as executive producers. The story is by Edgar Wright & Joe Cornish and the screenplay is by Edgar Wright & Joe Cornish and Adam McKay & Paul Rudd. Marvel's "Ant-Man" delivers a high-stakes, tension-filled adventure on July 17, 2015.[/et_pb_text][/et_pb_column_inner][/et_pb_row_inner][/et_pb_column][et_pb_column type="1_2″][et_pb_text admin_label="Text" background_layout="light" text_orientation="left"]
Genre: Action-Adventure
U.S. Release date: July 17, 2015
Cast: Paul Rudd, Evangeline Lilly, Corey Stoll, Bobby Cannavale, Michael Peña, Tip "T.I." Harris, Wood Harris, Judy Greer, David Dastmalchian and Michael Douglas as Dr. Hank Pym
Director: Peyton Reed
Producer: Kevin Feige
Executive Producers: Louis D'Esposito, Alan Fine, Victoria Alonso, Michael Grillo, Edgar Wright, Stan Lee
Story by: Edgar Wright & Joe Cornish
Screenplay by: Edgar Wright & Joe Cornish and Adam McKay & Paul Rudd
Like ANT-MAN on Facebook: https://www.facebook.com/antman
Follow ANT-MAN on Twitter: https://twitter.com/antman
Visit the official ANT-MAN site: http://marvel.com/antman
ANT-MAN opens in theaters everywhere on July 17th
Latest posts by Bobbie (see all)
- 5 Amazing Picnic Recipes - Jan 5, 2017
- Keep Your Kids Occupied During Those Holiday Road Trips - Nov 9, 2016
- 5 Apps To Help With Your Holiday Road Trips - Nov 9, 2016


text:
Welcome to the forum. It would be better if you introduced yourself properly first, by going to the introductions section and telling members about yourself and your pet(s).
I'm afraid that your use of the initials ESA mean nothing to me. What on earth does ESA stand for? European Space Agency? Ecological Society of America? Electrical Safety Authority? For the possibilities, see: https://acronyms.thefreedictionary.com/ESA
Until you clarify, I'm afraid that I cannot help you.


text:
Even though the season has ended, it hasn't stops the Athena girls from carrying on playing. Whether it is the grass of Victoria Park, Ashcombe's summer tournament or the sand of the Loughborough Uni beach courts, there is always an opportunity to play more volleyball.
Second Annual Awards Night
Leicester Athena celebrated the end of their second ever season with an Awards Night and Annual General Meeting at Peter's Pizzeria in Leicester.
The night was a chance to look back at what we have achieved in the past year and award people for their hard work as well as look forward to the new season and start to plan.
Congratulations to the following people:
Regional league squad
Player's Player of the Year: Adela Romero
Most Improved Player: Faye Rigkou
Most Valuable Player: Kristy Logan
Local league squad
Player's Player of the Year: Charlie Surridge
Most Improved Player: Emma Spiridon
And a special mention for Petra Szőllősyová for being named DMU's Sportswoman of the Year. Also awards were handed out to Kamila (this year's most broken bunny), Sarah (love Bunny) and PanPan (Best Supporter).
Next year, we will have three teams and they will be led by:
National League: Sarah Booth
Regional League: Julia Golinska
Local League: Charlie Surridge
As well as all the club stuff, we said Happy Birthday to Faye and Congratulations to newly-engaged Sarah. As well as eating pizza, we hit Gelato Village for ice cream and Cafe Bruxelles for some dancing.
April 2020


text:
YAPC Europe / Amsterdam
Friday, 3 August 2001
Gerald Richter / ecos gmbh <email@example.com>
mod_perl-2.0 - overview of mod_perl-2.0
mod_perl was introduced in early 1996, both Perl and Apache have changed a great deal since that time. mod_perl has adjusted to both along the way over the past 4 and a half years or so using the same code base. Over this course of time, the mod_perl sources have become more and more difficult to maintain, in large part to provide compatibility between the many different flavors of Apache and Perl. And, compatibility across these versions and flavors is a more diffcult goal for mod_perl to reach that a typical Apache or Perl module, since mod_perl reaches a bit deeper into the corners of Apache and Perl internals than most. Discussions of the idea to rewrite mod_perl as version 2.0 started in 1998, but never made it much further than an idea. When Apache 2.0 development was underway it became clear that a rewrite of mod_perl would be required to adjust to the new Apache architechure and API.
Of the many changes happening in Apache 2.0, the one which has the most impact on mod_perl is the introduction of threads to the overall design. Threads have been a part of Apache on the win32 side since the Apache port was introduced. The mod_perl port to win32 happened in verison 1.00b1, released in June of 1997. This port enabled mod_perl to compile and run in a threaded windows environment, with one major caveat: only one concurrent mod_perl request could be handled at any given time. This was due to the fact that Perl did not introduce thread safe interpreters until version 5.6.0, released in March of 2000. Contrary to popular belief, the ``thread support'' implemented in Perl 5.005 (released July 1998), did not make Perl thread safe internally. Well before that version, Perl had the notion of ``Multiplicity'', which allowed multiple interpreter instances in the same process. However, these instances were not thread safe, that is, concurrent callbacks into multiple interpreters were not supported.
It just so happens that the release of Perl 5.6.0 was nearly at the same time as the first alpha version of Apache 2.0. The development of mod_perl 2.0 was underway before those releases, but as both Perl 5.6.x and Apache 2.0 are reaching stability, mod_perl-2.0 becomes more of a reality. In addition to the adjustments for threads and Apache 2.0 API changes, this rewrite of mod_perl is an opportunity to clean up the source tree. This includes both removing the old backward compatibility bandaids and building a smarter, stronger and faster implementation based on lessons learned over the 4.5 years since mod_perl was introduced.
This paper and talk assume basic knowlege of mod_perl 1.xx features and will focus only the differences mod_perl-2.00 will bring.
Note 1: The Apache and mod_perl APIs mentioned in this paper are both in an ``alpha'' state and subject to change.
Note 2: Some of the mod_perl APIs mentioned in this paper do not even exist and are subject to be implemented, in which case you would be redirected to ``Note 1''.
Note: This section will give you a brief overview of the changes in Apache 2.0, just enough to understand where mod_perl will fit in. For more details on Apache 2.0 consult the papers by Ryan Bloom.
In Apache 1.3.x concurrent requests were handled by multiple
processes, and the logic to manage these processes lived in one place,
http_main.c, 7200 some odd lines of code. If Apache 1.3.x is
compiled on a Win32 system large parts of this source file are
redefined to handle requests using threads. Now suppose you want to
change the way Apache 1.3.x processes requests, say, into a DCE RPC
listener. This is possible only by slicing and dicing http_main.c
into more pieces or by redefining the standalone_main function,
with a
-DSTANDALONE_MAIN=your_function compile time flag.
Neither of which is a clean, modular mechanism.
Apache-2.0 solves this problem by intoducing Multi Processing Model modules, better known as MPMs. The task of managing incoming requests is left to the MPMs, shrinking http_main.c to less than 500 lines of code. Several MPMs are included with Apache 2.0 in the src/modules/mpm directory:
Apache 1.3.x has been ported to a very large number of platforms including various flavors of unix, win32, os/2, the list goes on. However, in 1.3.x there was no clear-cut, pre-designed portability layer for third-party modules to take advantage of. APR provides this API layer in a very clean way. For mod_perl, APR will assist a great deal with portability. Combined with the portablity of Perl, mod_perl-2.0 needs only to implement a portable build system, the rest comes ``for free''. A Perl interface will be provided for certain areas of APR, such as the shared memory abstraction, but the majority of APR will be used by mod_perl ``under the covers''.
In Apache 1.3, modules were registered using the module structure, normally static to mod_foo.c. This structure contains pointers to the command table, config create/merge functions, response handler table and function pointers for all of the other hooks, such as child_init and check_user_id. In 2.0, this structure has been pruned down to the first three items mention and a new function pointer added called register_hooks. It is the job of register_hooks to register functions for all other hooks (such as child_init and check_user_id). Not only is hook registration now dynamic, it is also possible for modules to register more than one function per hook, unlike 1.3. The new hook mechanism also makes it possible to sort registered functions, unlike 1.3 with function pointers hardwired into the module structure, and each module structure into a linked list. Order in 1.3 depended on this list, which was possible to order using compile-time and configuration-time configuration, but that was left to the user. Whereas in 2.0, the add_hook functions accept an order preference parameter, those commonly used are:
For mod_perl, dynamic registration provides a cleaner way to bypass the Perl*Handler configuration. By simply adding this configuration:
PerlModule Apache::Foo
Apache/Foo.pm can register hooks itself at server startup:
Apache::Hook->add(PerlAuthenHandler => \&authenticate, Apache::Hook::MIDDLE); Apache::Hook->add(PerlLogHandler => \&logger, Apache::Hook::LAST);
However, this means that Perl subroutines registered via this mechanism will be called for *every* request. It will be left to that subroutine to decide if it was to handle or decline the given phase. As there is overhead in entering the Perl runtime, it will most likely be to your advantage to continue using Perl*Handler configuration to reduce this overhead. If it is the case that your Perl*Handler should be invoked for every request, the hook registration mechanism will save some configuration keystrokes.
When configuration files are read by Apache 1.3, it hands off the parsed text to module configuration directive handlers and discards that text afterwards. With Apache 2.0, the configuration files are first parsed into a tree structure, which is then walked to pass data down to the modules. This tree is then left in memory with an API for accessing it at request time. The tree can be quite useful for other modules. For example, in 1.3, mod_info has it's own configuration parser and parses the configuration files each time you access it. With 2.0 there is already a parse tree in memory, which mod_info can then walk to output it's information.
If a mod_perl 1.xx module wants access to configuration information,
there are two approaches. A module can ``subclass'' directive handlers,
saving a copy of the data for itself, then returning DECLINE_CMD so
the other modules are also handed the info. Or, the
$Apache::Server::SaveConfig variable can be set to save <Perl>
configuration in the
%Apache::ReadConfig:: namespace. Both methods
are rather kludgy, version 2.0 will provide a Perl interface to the
Apache configuration tree.
Filtering of Perl modules output has been possible for years since
tied filehandle support was added to Perl. There are several modules,
such as Apache::Filter and Apache::OutputChain which have been
written to provide mechanisms for filtering the
STDOUT ``stream''.
There are several of these modules because no one approach has quite
been able to offer the ease of use one would expect, which is due
simply to limitations of the Perl tied filehandle design. Another
problem is that these filters can only filter the output of other Perl
modules. C modules in Apache 1.3 send data directly to the client and
there is no clean way to capture this stream. Apache 2.0 has solved
this problem by introducing a filtering API. With the baseline i/o
stream tied to this filter mechansim, any module can filter the output
of any other module, with any number of filters in between.
Apache 1.3 is hardwired to speak only one protocol, HTTP. Apache 2.0 has moved to more of a ``server framework'' architecture making it possible to plugin handlers for protocols other than HTTP. The protocol module design also abstracts the transport layer so protocols such as SSL can be hooked into the server without requiring modifications to the Apache source code. This allows Apache to be extended much further than in the past, making it possible to add support for protocols such as FTP, SMTP, RPC flavors and the like. The main advantage being that protocol plugins can take advantage of Apache's portability, process/thread management, configuration mechanism and plugin API.
Thread safe Perl interpreters, also known as ``ithreads'' (Intepreter Threads) provide the mechanism need for mod_perl to adapt to the Apache 2.0 thread architecture. This mechanism is a compile time option which encapsulates the Perl runtime inside of a single PerlInterpreter structure. With each interpreter instance containing its own symbol tables, stacks and other Perl runtime mechanisms, it is possible for any number of threads in the same process to concurrently callback into Perl. This of course requires each thread to have it's own PerlInterpreter object, or at least that each instance is only access by one thread at any given time.
mod_perl-1.xx has only a single PerlInterpreter, which is contructed by the parent process, then inherited across the forks to child processes. mod_perl-2.0 has a configurable number of PerlInterpreters and two classes of interpreters, parent and clone. A parent is like that in 1.xx, the main interpreter created at startup time which compiles any pre-loaded Perl code. A clone is created from the parent using the Perl API perl_clone() function. At request time, parent interpreters are only used for making more clones, as they are the interpreters which actually handle requests. Care is taken by Perl to copy only mutable data, which means that no runtime locking is required and read-only data such as the syntax tree is shared from the parent.
Rather than create a PerlInterperter per-thread by default, mod_perl creates a pool of interpreters. The pool mechanism helps cut down memory usage a great deal. As already mentioned, the syntax tree is shared between all cloned interpreters. If your server is serving more than mod_perl requests, having a smaller number of PerlInterpreters than the number of threads will clearly cut down on memory usage. Finally and perhaps the biggest win is memory reuse. That is, as calls are made into Perl subroutines, memory allocations are made for variables when they are used for the first time. Subsequent use of variables may allocate more memory, e.g. if the string needs to hold a larger than it did before, or an array more elements than in the past. As an optimization, Perl hangs onto these allocations, even though their values ``go out of scope''. With the 1.xx model, random children would be hit with these allocations. With 2.0, mod_perl has much better control over which PerlInterpreters are used for incoming requests. The intepreters are stored in two linked lists, one for available interpreters one for busy. When needed to handle a request, one is taken from the head of the available list and put back into the head of the list when done. This means if you have, say, 10 interpreters configured to be cloned at startup time, but no more than 5 are ever used concurrently, those 5 continue to reuse Perls allocations, while the other 5 remain much smaller, but ready to go if the need arises.
Various attributes of the pools are configurable with the following configuration directives:
PerlInterpLifetime request
For example, if a PerlAccessHandler is configured, an interpreter will selected before it is run and not released until after the logging phase.
Intepreters will be shared across subrequests by default, however, it is possible configure the intepreter lifetime to be per-subrequest on a per-directory basis:
PerlInterpLifetime subrequest
With this configuration, an autoindex generated page for example would select an interpreter for each item in the listing that is configured with a Perl*Handler.
It is also possible to configure the lifetime to be per-handler:
PerlInterpLifetime handler
With this configuration, an interpreter will be selected before PerlAccessHandlers are run, and putback immediately afterwards, before Apache moves onto the authentication phase. If a PerlFixupHandler is configured further down the chain, another interpreter will be selected and again putback afterwards, before PerlResponseHandler is run.
For protocol handlers, the interpreter is held for the lifetime of the connection. However, a C protocol module might hook into mod_perl (e.g. mod_ftp) and provide a request_rec. In this case, the default lifetime is that of the request. Should a mod_perl handler want to maintain state for the lifetime of an ftp connection, it is possible to do so on a per-virtualhost basis:
PerlInterpLifetime connection
The Perl ``ithreads'' implementation ensures that Perl code is thread safe, at least with respect to the Apache threads in which it is running. However, it does not ensure that extensions which call into third-party C/C++ libraries are thread safe. In the case of non-threadsafe extensions, if it is not possible to fix those routines, care will need to be taken to serialize calls into such functions (either at the xs or Perl level).
Another issue is that ``global'' variables are only global to the interpreter in which they are created. Some research has been done on the concept of solar variables which are global across all interpreter instances. It has not been decided if this feature would best fit built into the Perl core or as an extension, but fear not, the feature will be provided in one form or another.
As we discussed, mod_perl implements a pool mechanism to manage PerlInterpreters between threads. This mechanism has been abstracted into an API known as ``tipool'', Thread Item Pool. This pool can be used to manage any data structure, in which you wish to have a smaller number than the number of configured threads. A good example of such a data structure is a database connection handle. The Apache::DBI module implements persisent connections for 1.xx, but may result in each child maintaining its own connection, when it is most often the case that number of connections is never needed concurrently. The TIPool API provides a mechanism to solve this problem, consisting of the following methods:
my $tip = Apache::TIPool->new($p, {Start => 3, Max => 6}, {grow => \&new_connection, shrink => \&close_connection}, \%my_config);
The configuration parameters, Start, Max, MinSpare, MaxSpare and MaxRequests configure the pool for your items, just as the PerlInterp* directives do for PerlInterpreters.
The grow callback is called to create new items to be added to the pool, shrink is called when an item is removed from the pool.
my $item = $tip->pop;
Future improvements will be made to the TIPool API, such as the ability to sort the available and busy lists and specify if items should be popped and putback to/from the head or tail of the list.
Now we will take a look at how to make DBI take advantage of TIPool API with the Apache::DBIPool module. The module configuration in httpd.conf will look something like so:
PerlModule Apache::DBIPool
<DBIPool dbi:mysql:db_name> DBIPoolStart 10 DBIPoolMax 20 DBIPoolMaxSpare 10 DBIPoolMinSpare 5 DBIUserName dougm DBIPassWord XxXx </DBIPool>
The module is loaded using the PerlModule directive just as with other modules. TIPools are then configured using DBIPool configuration sections. The argument given to the container is the dsn and within are the pool directives Start, Max, MaxSpare and MinSpare. The UserName and PassWord directives will be passed to the DBI connect method. There can be any number of DBIPool containers, provided each dsn is different, and/or each container is inside a different VirtualHost container.
Now let's examine the source code, keeping in mind this module contains the basics and the official release (tbd) will likely contain more details, such as how it hooks into DBI.pm to provide transparency the way Apache::DBI currently does.
After pulling in the modules needed Apache::TIPool, Apache::ModuleConfig and DBI, we setup a callback table. The new_connection function will be called with the TIP needs to add a new item and close_connection when an item is being removed from the pool. The Apache::Hook add method registers a PerlPostConfigHandler which will be called after Apache has read the configuration files.
This handler (our init function) is passed 3 Apache::Pool objects and one Apache::Server object. Each Apache::Pool has a different lifetime, the first will be alive until configuration is read again, such as during restarts. The second will be alive until logs are re-opened and the third is a temporary pool which is cleared before Apache starts serving requests. Since the DBI connection pool is associated with configuration in httpd.conf, we will use that pool.
The Apache::ModuleConfig get method is called with the Apache::Server object to give us the configuration associated with the given server. Next is a while loop which iterates over the configuration parsed by the DBIPool directive handler. The keys of this hash are the configured dsn, of which there is one per DBIPool configuration section. The values will be a hash reference to the pool configuration, Start, Max, MinSpare, MaxSpare and MaxRequests.
A new Apache::TIPool is then contructed, passing it the
$pconf Apache::Pool, configuration
$params, the $callbacks
table and
$conn hash ref. The TIPool is then saved into the
$cfg object, indexed by the dsn.
At the time Apache::TIPool::new is called, the new_connection callback will be called the number of time to which Start is configured. This callback localizes Apache::DBIPool::connect to a code reference which makes the real database connection.
At request time Apache::DBIPool::connect will fetch a database handle from the TIPool. It does so by digging into the configuration object associated with the current virtual host to obtain a reference to the TIPool object. It then calls the pop method, which will immediatly return a database handle if one is available. If all opened connection are in used and the current number of connections is less than the configured Max, the call to pop will result in a call to new_connection. If Max has already been reached, then pop will block until a handle is putback into the pool.
Finally, the handle is blessed into the Apache::DBIPool::db class which will override the dbd class disconnect method. The overridden disconnect method obtains a reference to the TIPool object and passes it to the putback method, making it available for use by other threads. Should the Perl code using this handle neglect to call the disconnect method, the overridden connect method has already registered a cleanup function to make sure it is putback.
package Apache::DBIPool;
use strict; use Apache::TIPool (); use Apache::ModuleConfig (); use DBI ();
my $callbacks = { grow => \&new_connection, #add new connection to the pool shrink => \&close_connection, #handle removed connection from pool };
Apache::Hook->add(PerlPostConfigHandler => \&init); #called at startup
sub init { my($pconf, $plog, $ptemp, $s) = @_;
my $cfg = Apache::ModuleConfig->get($s, __PACKAGE__);
#create a TIPool for each dsn while (my($conn, $params) = each %{ $cfg->{DBIPool} }) { my $tip = Apache::TIPool->new($pconf, $params, $callbacks, $conn); $cfg->{TIPool}->{ $conn->{dsn} } = $tip; } }
sub new_connection { my($tip, $conn) = @_;
#make actual connection to the database local *Apache::DBIPool::connect = sub { my($class, $drh) = (shift, shift); $drh->connect($dbname, @_); };
return DBI->connect(@{$conn}{qw(dsn username password attr)}); }
sub close_connection { my($tip, $conn, $dbh) = @_; my $driver = (split $conn->{dsn}, ':')[1]; my $method = join '::', 'DBD', $driver, 'db', 'disconnect'; $dbh->$method(); #call the real disconnect method }
my $EndToken = '</DBIPool>';
#parse <DBIPool dbi:mysql:...>...
sub DBIPool ($$$;*) { my($cfg, $parms, $dsn, $cfg_fh) = @_; $dsn =~ s/>$//;
$cfg->{DBIPool}->{$dsn}->{dsn} = $dsn;
while((my $line = <$cfg_fh>) !~ m:^$EndToken:o) { my($name, $value) = split $line, /\s+/, 2; $name =~ s/^DBIPool(\w+)/lc $1/ei; $cfg->{DBIPool}->{$dsn}->{$name} = $value; } }
sub config { my $r = Apache->request; return Apache::ModuleConfig->get($r, __PACKAGE__); }
#called from DBI::connect sub connect { my($class, $drh) = (shift, shift);
$drh->{DSN} = join ':', 'dbi', $drh->{Name}, $_[0]; my $cfg = config();
my $tip = $cfg->{TIPool}->{ $drh->{DSN} };
unless ($tip) { #XXX: do a real connect or fallback to Apache::DBI }
my $item = $tip->pop; #select a connection from the pool
$r->register_cleanup(sub { #incase disconnect() is not called $tip->putback($item); });
return bless 'Apache::DBIPool::db', $item->data; #the dbh }
package Apache::DBIPool::db;
our @ISA = qw(DBI::db);
#override disconnect, puts database handle back in the pool sub disconnect { my $dbh = shift; my $tip = config()->{TIPool}->{ $dbh->{DSN} }; $tip->putback($dbh); 1; }
A new configuration directive to mod_perl-2.0, PerlOptions, provides fine-grained configuration for what were compile-time only options in mod_perl-1.xx. In addition, this directive provides control over what class of PerlInterpreter is used for a VirtualHost or location configured with Location, Directory, etc.
These are all best explained with examples, first here's how to disable mod_perl for a certain host:
<VirtualHost ...> PerlOptions -Enable </VirtualHost>
Suppose a one of the hosts does not want to allow users to configure PerlAuthenHandler, PerlAuthzHandler or PerlAccessHandler or <Perl> sections:
<VirtualHost ...> PerlOptions -Authen -Authz -Access -Sections </VirtualHost>
Or maybe everything but the response handler:
<VirtualHost ...> PerlOptions None +Response </VirtualHost>
A common problem with mod_perl-1.xx was the shared namespace between
all code within the process. Consider two developers using the same
server and each which to run a different version of a module with the
same name. This example will create two parent Perls, one for each
VirtualHost, each with its own namespace and pointing to a
different paths in
<VirtualHost ...> ServerName dev1 PerlOptions +Parent PerlSwitches -Mblib=/home/dev1/lib/perl </VirtualHost>
<VirtualHost ...> ServerName dev2 PerlOptions +Parent PerlSwitches -Mblib=/home/dev2/lib/perl </VirtualHost>
Or even for a given location, for something like ``dirty'' cgi scripts:
<Location /cgi-bin> PerlOptions +Parent PerlInterpMaxRequests 1 PerlInterpStart 1 PerlInterpMax 1 PerlHandler Apache::Registry </Location>
Will use a fresh interpreter with its own namespace to handle each request.
Should you wish to fine tune Interpreter pools for a given host:
<VirtualHost ...> PerlOptions +Clone PerlInterpStart 2 PerlInterpMax 2 </VirtualHost>
This might be worthwhile in the case where certain hosts have their own sets of large-ish modules, used only in each host. By tuning each host to have it's own pool, that host will continue to reuse the Perl allocations in their specific modules.
In 1.x versions of mod_perl, configured Perl*Handlers which are not a fully qualified subroutine name are resolved at request time, loading the handler module from disk if needed. In 2.x, configured Perl*Handlers are resolved at startup time. By default, modules are not auto-loaded during startup-time resolution. It is possible to configure this feature with:
PerlOptions +Autoload
Consider this configuration:
PerlResponseHandler Apache::Magick
In this case, Apache::Magick is the package name, and the subroutine name will default to handler. If the Apache::Magick module is not already loaded, PerlOptions +Autoload will attempt to pull it in at startup time.
The mod_perl-2.0 interface to the Apache filter API is much simpler than the C API, hiding most of the details underneath. Perl filters are configured using the PerlFilterHandler directive, for example:
PerlFilterHandler Apache::ReverseFilter
This simply registers the filter, which can then be turned on using the core AddOutputFilter directive:
<Location /foo> AddOutputFilter Apache::ReverseFilter </Location>
The Apache::ReverseFilter handler will now be called for anything accessed in the /foo url space. The AddOutputFilter directive takes any number of filters, for example, this configuration will first send the output to mod_include, which will in turn pass its output down to Apache::ReverseFilter:
AddOutputFilter INCLUDE Apache::ReverseFilter
For our example, Apache::ReverseFilter simply reverses all of the
output characters and then sends them downstream. The first argument
to a filter handler is an Apache::Filter object, which at the
moment provides two methods read and write. The read method
pulls down a chunk of the output stream into the given buffer,
returning the length read into the buffer. An optional size argument
may be given to specify the maximum size to read into the buffer. If
omitted, an arbitrary size will fill the buffer, depending on the
upstream filter. The write method passes data down to the next
filter. In our case
scalar reverse takes advantage of Perl's
builtins to reverse the upstream buffer:
package Apache::ReverseFilter;
use strict;
sub handler { my $filter = shift;
while ($filter->read(my $buffer, 1024)) { $filter->write(scalar reverse $buffer); }
return Apache::OK; }
In 1.x, the Perl interface back into the Apache API and data structures was done piecemeal. As functions and structure members were found to be useful or new features were added to the Apache API, the xs code was written for them here and there.
The goal for 2.0 is to generate the majority of xs code and provide thin wrappers were needed to make the API more Perlish. As part of this goal, nearly the entire APR and Apache API, along with their public data structures will covered from the get-go. Certain functions and structures which are considered ``private'' to Apache or otherwise un-useful to Perl will not be glued. The API behaves just as it did in 1.x, sosers of the API will not notice the difference, other than the addition of many new methods. And in the case of APR, it is possible to use APR modules outside of Apache, for example:
% perl -MAPR -MAPR::UUID -le 'print APR::UUID->new->format' b059a4b2-d11d-b211-bc23-d644b8ce0981
The mod_perl generator is a custom suite of modules specifically tuned for gluing Apache and allows for complete control over everything, providing many possibilities none of xsubpp, swig nor Inline.pm are designed to do. Advantages to generating the glue code include:
Apache 2.0 ships with an example protocol module, mod_echo, which simply reads data from the client and echos it right back. Here we'll take a look at a Perl version of that module, called Apache::Echo. A protocol handler is configured using the PerlProcessConnectionHandler directive and we'll use the Listen and VirtualHost directives to bind to a non-standard port 8084:
Listen 8084 <VirtualHost _default_:8084> PerlProcessConnectionHandler Apache::Echo </VirtualHost>
Apache::Echo is then enabled when starting Apache:
% httpd
And we give it a whirl:
% telnet localhost 8084 Trying 127.0.0.1... Connected to localhost (127.0.0.1). Escape character is '^]'. hello apachecon hello apachecon ^]
The code is just a few lines of code, with the standard package
declaration and of course,
use strict;. As with all
Perl*Handlers, the subroutine name defaults to handler. However,
in the case of a protocol handler, the first argument is not a
request_rec, but a conn_rec blessed into the
Apache::Connection class. We have direct access to the client
socket via Apache::Connection's client_socket method. This
returns an object blessed into the APR::Socket class.
Inside the echo loop, we attempt to read BUFF_LEN bytes from the
client socket into the
$buff buffer. The
$rlen parameter will
be set to the number of bytes actually read. The APR::Socket
recv method will return an apr_status_t value, be we need only
check the read length to break out of the loop if it is less than or
equal to 0 bytes. If we received some data, it is immediately
echoed back to the client with the APR::Socket send method.
If we were unable to echo back the same number of bytes read from the
client, assume the connection was dropped and break out of the loop.
Once the client has disconnected, the module returns Apache::OK,
telling Apache we have handled the connection:
package Apache::Echo;
use strict; use Apache::Connection (); use APR::Socket ();
use constant BUFF_LEN => 1024;
sub handler { my Apache::Connection $c = shift; my APR::Socket $socket = $c->client_socket;
my $buff;
for (;;) { my($rlen, $wlen); my $rlen = BUFF_LEN; $socket->recv($buff, $rlen); last if $rlen <= 0; $wlen = $rlen; $socket->send($buff, $wlen); last if $wlen != $rlen; }
return Apache::OK; }
Our first protocol handler example took advange of Apache's server framework, but did not tap into any other modules. The next example is based on the example in the ``TCP Servers with IO::Socket'' section of perlipc. Of course, we don't need IO::Socket since Apache takes care of those details for us. The rest of that example can still be used to illustrate implementing a simple text protocol. In this case, one where a command is sent by the client to be executed on the server side, with results sent back to the client.
The Apache::CommandServer handler will support four commands: motd, date, who and quit. These are probably not commands which can be exploited, but should we add such commands, we'll want to limit access based on ip address/hostname, authentication and authorization. Protocol handlers need to take care of these tasks themselves, since we bypass the HTTP protocol handler.
As with all PerlProcessConnectionHandlers, we are passed an
Apache::Connection object as the first argument. Again, we will be
directly accessing the client socket via the client_socket method.
The login subroutine is called to check if access by this client
should be allowed. This routine makes up for what we lost with the
core HTTP protocol handler bypassed. First we call the
Apache::RequestRec new method, which returns a request_rec
object, just like that which is passed into request time
Perl*Handlers and returned by the subrequest API methods,
lookup_uri and lookup_file. However, this ``fake request'' does
not run handlers for any of the phases, it simply returns an object
which we can use to do that ourselves. The
location_merge method
is passed the ``location'' for this request, it will look up the
<Location> section that matches the given name and merge it with the
default server configuration. For example, should we only wish to
allow access to this server from certain locations:
<Location Apache::CommandServer> deny from all allow from 10.* </Location>
The location_merge method only looks up and merges the configuration, we still need to apply it. This is done in for loop, iterating over three methods: run_access_checker, run_check_user_id and run_auth_checker. These methods will call directly into the Apache functions that invoke module handlers for these phases and will return an integer status code, such as OK, DECLINED or FORBIDDEN. If run_access_check returns something other than OK or DECLINED, that status will be propagated up to the handler routine and then back up to Apache. Otherwise, the access check passed and the loop will break unless some_auth_required returns true. This would be false given the previous configuration example, but would be true in the presense of a require directive, such as:
<Location Apache::CommandServer> deny from all allow from 10.* require user dougm </Location>
Given this configuration, some_auth_required will return true. The user method is then called, which will return false if we have not yet authenticated. A prompt utility is called to read the username and password, which are then injected into the headers_in table using the set_basic_credentials method. The Authenticate field in this table is set to a base64 encoded value of the username:password pair, exactly the same format a browser would send for Basic authentication. Next time through the loop run_check_user_id is called, which will in turn invoke any authentication handlers, such as mod_auth. When mod_auth calls the ap_get_basic_auth_pw() API function (as all Basic auth modules do), it will get back the username and password we injected. If we fail authentication a 401 status code is returned which we propagate up. Otherwise, authorization handlers are run via run_auth_checker. Authorization handlers normally need the user field of the request_rec for its checks and that field was filled in when mod_auth called ap_get_basic_auth_pw().
Provided login is a success, a welcome message is printed and main request loop entered. Inside the loop the getline function returns just one line of data, with newline characters stripped. If the string sent by the client is in our command table, the command is then invoked, otherwise a usage message is sent. If the command does not return a true value, we break out of the loop. Let's give it a try with this configuration:
Listen 8085 <VirtualHost _default_:8085> PerlProcessConnectionHandler Apache::CommandServer
<Location Apache::CommandServer> allow from 127.0.0.1 require user dougm satisfy any AuthUserFile /tmp/basic-auth </Location> </VirtualHost>
% telnet localhost 8085 Trying 127.0.0.1... Connected to localhost (127.0.0.1). Escape character is '^]'. Login: dougm Password: foo Welcome to Apache::CommandServer Available commands: motd date who quit motd Have a lot of fun... date Mon Mar 12 19:20:10 PST 2001 who dougm tty1 Mar 12 00:49 dougm pts/0 Mar 12 11:23 dougm pts/1 Mar 12 14:08 dougm pts/2 Mar 12 17:09 quit Connection closed by foreign host.
package Apache::CommandServer;
use strict; use Apache::Connection (); use APR::Socket ();
my @cmds = qw(motd date who quit); my %commands = map { $_, \&{$_} } @cmds;
sub handler { my Apache::Connection $c = shift; my APR::Socket $socket = $c->client_socket;
if ((my $rc = login($c)) != Apache::OK) { $socket->send("Access Denied\n"); return $rc; }
$socket->send("Welcome to " . __PACKAGE__ . "\nAvailable commands: @cmds\n");
for (;;) { my $cmd; next unless $cmd = getline($socket);
if (my $sub = $commands{$cmd}) { last unless $sub->($socket) == APR::SUCCESS; } else { $socket->send("Commands: @cmds\n"); } }
return Apache::OK; }
sub login { my $c = shift;
my $r = Apache::RequestRec->new($c); $r->location_merge(__PACKAGE__);
for my $method (qw(run_access_checker run_check_user_id run_auth_checker)) { my $rc = $r->$method();
if ($rc != Apache::OK and $rc != Apache::DECLINED) { return $rc; }
last unless $r->some_auth_required;
unless ($r->user) { my $socket = $c->client_socket; my $username = prompt($socket, "Login"); my $password = prompt($socket, "Password");
$r->set_basic_credentials($username, $password); } }
return Apache::OK; }
sub getline { my $socket = shift; my $line; $socket->recv($line, 1024); return unless $line; $line =~ s/[\r\n]*$//; return $line; }
sub prompt { my($socket, $msg) = @_; $socket->send("$msg: "); getline($socket); }
sub motd { my $socket = shift; open my $fh, '/etc/motd' or return; local $/; my $status = $socket->send(scalar <$fh>); close $fh; return $status; }
sub date { my $socket = shift; $socket->send(scalar(localtime) . "\n"); }
sub who { my $socket = shift; $socket->send(scalar `who`); }
sub quit {1}
As mentioned in the introduction, the rewrite of mod_perl gives us the chances to build a smarter, stronger and faster implementation based on lessons learned over the 4.5 years since mod_perl was introduced. There are optimizations which can be made in the mod_perl source code, some which can be made in the Perl space by optimizing its syntax tree and some a combination of both. In this section we'll take a brief look at some of the optimizations that are being considered.
The details of these optimizations will from the most part be hidden from mod_perl users, the exeception being that some will only be turned on with configuration directives. The explanation of these optimization ideas are best left for the live talk, a few which will be overviewed include:
this document: Doug MacEachern
talk on YAPC 2001 in Amsterdam: Gerald Richter <email@example.com>


text:
Party Bucket - Red - R17.00
Regular price R 17.00
Buy Online - Party Bucket - Red includes the following:
Chips, Lollipop, Sherbet, Small Chocolate, Sherbet, Ziffer, Marshmallow, Fizzer, Magic pop, Oops and a Toffee.
Please note:
All party packs content may vary due to availability.
To reduce courier costs, we don't include a cool drink, and the sweets will be packed in separate plastic bags ready for each bucket. The buckets will be inserted into each other in the box.


text:
Tenants belongings
Hi. I have an Order for Possession obtained via Section 8 route and a Bailiffs Appointment is set for early April. It appears that the tenant has now abandoned the property. Once the Bailiffs appointment has been carried out - how long do I need to give the tenant to remove his belongings and can I start the clock ticking now?
Also I intend to pursue the tenant for the rent arrears, I know where he is working and just need to find out his address, which is not a problem for me. Is the best way to pursue the rent arrears through an Attachment of Earnings? I do not think he has any assets of value and I am currently waiting for the results of an Attachments of Earnings search. Do you have any other advice for me regarding getting the rent arrears paid.
Thank you
Want to read more?
This is a members only forum, if you want to read more you need to login to your membership, if you are not a member, click here to join.


text:
TFS: Sync Microsoft Project Plan with Visual Studio TFS tasks – Step by Step Guide
1. Install Visual Studio Team Explorer
2. Install TFS Power Tools
3. Identify list of tasks / groups which need to be synced to TFS, example all task in "Analysis Phase", deployment task, or whole project as the case may be.
4. Get/grant "Admin Access" from an Administrator/to consultant.
a. Right Click on Project è Team Project Settings => Group Membership
b. Select Project Administrators and click on Properties.
c. Select "Windows User or Group" and click on "Add".
d. Click on "Add", Select the User to grant Permissions.
e. Click on "OK" and "OK" on the parent window to apply the settings.
5. Update the Process Template using the "Process Editor".
6. Based upon the Process template selected during the creation of the TFS Project, use one of the following ZIP:
7. Unzip the selected file and follow the steps below:
a. Open Microsoft Visual Studio 2010.
b. Using Team Explorer connect to the TFS Server.
c. Select Team è Process Editor è Work Item Types è Import WIT
d. Select Team Project Collection and click on "Connect".
e. Select the right Project to Import to:
f. Select the Path of the Task.XML unzipped in above step.
g. Repeat the steps "a-f" for "Unplanned Task.xml". You would be able to see a new Work Item Type called "UnPlanned Task"
h. Execute the "Visual Studio Command Prompt (2010)" in "Run as Administrator" mode
i. Update the values of the <TFS Server Collection URL> and <Team Project> in the below command line:
TFSFieldMapping upload /collection:" <TFS Server Collection URL> " /teamproject:" <Team Project> " /mappingfile:MappingFile.xml
j. On the Command Prompt change the directory to location of the Un Zip files
k. Execute the above command with correct values of <TFS Server Collection URL> and <Team Project> .
8. In MPP: All the Resources should be taken from Active Directory, follow the steps below:
9. For the tasks selected in point 1 makes sure that all the resources assigned are Active Directory Users, we cannot have any resources which are not resolved in Active Directory.
10. Go to Team Tab
11. Connect to Team Project.
12. Select the TFS Project
13. You might get this screen, just continue and press "Update".
14. Make sure you have defined Iteration and Area Path for your TFS Project. This can be done from inside the MS Project itself.
15. Add following new Columns in the MPP which come after connecting to TFS.
a. Iteration Path
b. Area Path
c. Work Item Type
d. Publish and Refresh
e. State (Optional)
16. Click on Add New Column and select è Area Path
17. Click on Add New Column and select è Iteration Path
18. Make sure that Area Path and Iteration Path for the Tasks to be synced have correct values selected:
19. Select "Work Item Type" and set the value as "Task".
20. For Publish and Refresh select the value as "Yes" against the entire Task that you want to perform sync with TFS.
Possible values for Publish and Refresh are
a. Yes (Publish to TFS)
b. No (Don't Publish)
c. Refresh Only
When you use Microsoft Project to create parent and child tasks, it assigns parent tasks the rollup of hours that are defined for all its child tasks. Rollup hours are not published to Team Foundation so that the hours are not double-counted in certain reports. The Microsoft Project mapping file attribute, IfSummaryRefreshOnly, suppresses the publication to Team Foundation of the hours that are assigned to summary tasks. You can view the rollup of hours for summary tasks in Office Project but not in Team Foundation.
21. Once all has been setup just go to Team Tab and click "Publish".


text:
Jane Austen dressing up – it's fun.
As part of the Jane Austen Centre Exhibition, we invite you to try on and pose for photos in the clothes of the era. We have a selection of Regency dresses, coats, bonnets, top hats, shawls, fans, reticules and parasols for you to try on and pose with, and encourage you to take your own photos to document your experience. As you would imagine, the dress-up portion of the visit is one of our most popular attractions, and has quickly become one of our most beloved installations at The Centre.
When you visit, you must try it yourself!
Help with dressing-up and your photos
Our friendly staff are always on hand to offer tips and advice on how to wear the various bonnets and accessories. They will also offer to take your photo on your own camera if you wish. The staff will also suggest good places to stand to get that authentic shot.
This is proving an extremely popular part of the exhibition and we intend to increase the quantity of items to try on to include various dresses and spencer jackets.
There are often hoots of delight as our visitors have fun posing in front of the full length mirror or in front of one of our Regency displays
What Jane Austen said in a letter to her sister Cassandra whilst she was holidaying in Bath in 1799
Flowers are very much worn, and fruit is still more the thing. Elizabeth has a bunch of strawberries, and I have seen grapes, cherries, plums, and apricots. There are likewise almonds and raisins, French plums, and tamarinds at the grocers', but I have never seen any of them in hats… Elizabeth has given me a hat, and it is not only a pretty hat, but a pretty style of hat too. It is something like Eliza's, only, instead of being all straw, half of it is narrow purple ribbon. I flatter myself, however, that you can understand very little of it from this description. Heaven forbid that I should ever offer such encouragement to explanations as to give a clear one on any occasion myself! But I must write no more of this. . .
Jane Austen to Cassandra
Queen's Square, Bath
June 2, 1799
A Youtube video on how to make a Regency poke bonnet