text:
McCormick & Company, Inc., a world leader in the spice, flavor and seasonings industry, is seeking a full time Demand Planner - Supply Chain in the US Consumer Products Division (CPD). This Demand Planner will work at 211 Schilling Circle in Hunt Valley, MD and report to a Supply Chain Planning Manager.
With more than $4 billion in annual sales, McCormick manufactures markets and distributes spices, seasoning mixes, condiments and other flavorful products to the entire food industry – retail outlets, food manufacturers and foodservice businesses. We create differentiating flavors consumers prefer with unmatched quality, science, innovation and service. Every day, no matter where or what you eat, you can enjoy food flavored by McCormick. McCormick makes every moment and meal better™!
As a company recognized for exceptional commitment to employees, McCormick offers a wide variety of benefits, programs and services including, but not limited to, tuition assistance, medical, dental, vision, disability, group life insurance, 401(k), profit sharing, paid holidays and paid vacations.
The Demand Planner I - Supply Chain is a highly analytical resource responsible for maintaining item-level forecasts and facilitating the demand consensus process with cross functional groups for his/her area of accountability.
McCormick & Company is an equal opportunity/affirmative action employer. All qualified applicants will receive consideration for employment without regard to sex, gender identity, sexual orientation, race, color, religion, national origin, disability, protected veteran status, age, or any other characteristic protected by law.
McCormick does not offer employment visa sponsorships upon hire or in the future. You must be lawfully authorized to commence work upon being offered employment.


text:
4 indicted in S.F. slaying of purported pimp
Updated 4:56 pm, Wednesday, November 27, 2013
A San Francisco couple accused of killing a man they suspected of dragging their 17-year-old daughter into prostitution have been indicted along with two others on federal murder and racketeering charges.
The action by a federal grand jury last week means the case will now move to U.S. District Court. Similar state charges that were filed last year in San Francisco Superior Court have been dismissed in light of the indictment.
Barry Gilton, 39; his longtime girlfriend, Lupe Mercado, 38; Gilton's cousin Antonio Gilton, 27; and family friend Alfonso Williams, 36, were named as taking part in the June 4, 2012, slaying of 22-year-old Calvin Sneed in the Bayview district.
- Bear with 2 cubs spotted in Placer Countysfgate
- The Regulars: Mr. Rob Basssfgate
- Crows flocking around Vallejosfgate
- Windows of History: Video animation at SF housesfgate
- Salt & Straw features Thanksgiving ice cream flavors in San Franciscosfgate
- The walk to the Big GameSFGate
- UC Berkeley professor's 'Slaughterbots' video goes viralsfgate
- Mammoth Mountain Resort digs out after after six-foot snowstormsfgate
- Heavenly Mountain's 2017 opening daysfgate
- Massive self-inflating rafts converted into trampolines at Dolores Park in San Franciscosfgate
All four were charged with murder in aid of racketeering, using a gun, and using a gun in a murder that prosecutors said was the result of "maintaining and increasing their positions" in a gang.
Mercado, who was also charged with being an accessory after the fact, pleaded not guilty Tuesday in U.S. District Court in San Francisco.
San Francisco prosecutors have said the parents blamed Sneed, a Compton resident, for selling their daughter on the street after discovering her activities through Twitter messages and online ads. The girl had met Sneed in Los Angeles, where her parents sent her to stay with Antonio Gilton after she began acting out at home.
Prosecutors said the parents first tried to shoot Sneed in Los Angeles on May 27, 2012, but that he was not seriously injured. Then, eight days later, as Sneed picked up the girl at her San Francisco home, someone in a passing SUV gunned him down.
Henry K. Lee is a San Francisco Chronicle staff writer. E-mail: email@example.com Twitter: @henryklee

subset: commoncrawl


text:
by Bob Daniels, New York 2 Society Rep
First off, a big thank you is in order to Jim Brockson and Paul Casale, and all the others who had a hand in making the 2006 Philadelphia convention such a swell success. A few days after the convention, Stan Gerloff asked me to write an article about it, for which I felt honored. With 181 people attending the convention, there must be at least that many who have different opinions of the event. My big regret at this gathering was that I had only a short time to spend with the people that I wanted to talk to and be with.
The 2006 Al Jolson Convention was held at the Ramada Inn in Essington, Pennsylvania, which is about 10 miles from downtown Philadelphia. On the afternoon of Thursday, May 18, eager convention attendees began arriving from all parts of the world. In the evening there was "A Taste Of Philly" buffet, followed by singer Alice Boyd, who happens to be our Central 2 Society Rep. Alice sang beautifully while Bruce Bider, out New York 2 Society Rep, and a very accomplished pianist, accompanied her on the piano. Later on, Alice graciously turned the stage over to any would-be singers who wanted to do their stuff, and, believe me, there were quite a few who were ready and willing to perform.
Things started off on Friday morning at 9:00 a.m. with the opening of the Memorabilia Room, where there were records, videos, CDs, sheet music, books, and tons of other Jolson material for sale. At 2:30 p.m. Steven Rothschild put on an entertaining show where he lip-synced to many Jolson songs. At 3:00 p.m. Ed Greenbaum anchored a panel discussion with the expert assistance of Paul Bowers and Doug Galloway, discussing the behind the scenes work that was done to produce the new set of Lifebuoy CDs.
Hemingway once wrote, "to be a writer you need to give to the people the good and the bad, the people and the places, and how the weather was." As I recall, the weather for the four days of the convention was fine. (Actually, it rained like the dickens on Friday morning ... webmaster)
I, on the other hand, believe that one should dwell upon the brightest parts of any endeavor. And there were certainly a good number of bright spots to the 2006 Philly convention. In any life there will always be problems, and a Jolson Convention is no exception. It may be a sound system, the hotel, the food or whatever. The only people who will never experience such problems are the ones watching the grass from from beneath its roots. The enjoyment of watching enthusiastic performers, hearing or seeing material that you have never heard or seen, is only part of it. The best part of any Jolson convention is the opportunity of getting together with other Jolson fans from around the world. It's the things we share in common that make it enjoyable, and it is wonderful when we discover new friends.
The Friday evening dinner was held in the ballroom at 6:45 p.m., I enjoyed my selection of chicken and the rest of the food, but then I'm rartly unhappy while eating. After dinner, the Avalon String Band entertained us with song and dance. Quite a few of our member threw away their inhibitions, got up from their seats, and did their version of the "Mummers' Strut"! This colorful ostrich-plumed marching string band is a pert of a Philadelphia tradition that dates back to the 19th century.
Around 9:00 p.m., our good friends Rudy Wissler (the voice of Asa Yoelson) and Bill Campbell delighted us all with their special brand of singing. Then, the start of the night, Tony Babino, "The Heart of Al Jolson," accompanied by Dave Gross on a grand piano, electrified the crowd with his captivating Jolson voice. With his singing and off-the-cuff stories, Tony B. was a big hit, as he always is at our events. This was not the end of the evening for a good number of us. We adjourned to the bar and lounge for further friendly comradeship, singing, and a wee bit of liquid libation. After the big Friday night, it must have been pretty hard to get up for the 7:30 a.m. Officers' Meeting.
On Saturday morning, the Memorabilia Room again opened at 9:00 a.m. so that attendees could peruse over and buy some outstanding treasures. The new set of six Lifebuoy CDs proved to be a very popular item. At 10:30 a.m., forty of the group took a trolley bus tour into historic Philadelphia, seeing the Liberty Bell, the Betsy Ross House, Independence Hall, and other city sites.
Meanwhile, back at the hotel, local entertainer Bob Kravitz put on a show with his unique regional treatments of Jolson songs. Ed Greenbaum next presented a fascinating program including soundtrack recordings from The Jolson Story. Ed played several tracks with Jolson quips to and about Morris Stoloff, and even a few mild outbursts. The afternoon wrapped up with Society president Jan Hernstat conducting the Society Auction, which raises much needed revenue to keep the Society solvent, and prevent raising membership dues.
Saturday night's dinner was again held in the Ballroom, followed by the evening's entertainment. Jan Hernstat sang a few songs, then invited Alice Boyd to come up and sing a few duets with him. It was almost like having Jolie and Patty Andrews right there in front of us. Then Rudy Wissler followed, singing to the actual sound tracks from The Jolson Story. Needless to say, Rudy brought the entire room to their feet! Next up was Bill Campbell, who sang beautifully. After Bill's performance, a 30 year-old fellow from Greenwood, Indiana, by the name of S. Michael Simms, got up and sang a few songs, and he did a fine job. Young people are the living message we send to a time we will not see. The only long-term future that our Jolson Society has, or for that matter, our civilization, is out young people. Smikes, as he is known, typifies that message.
We then had a surprise guest show up - Ben Franklin in the flesh. Actor Dean Bennett looked exactly like Ben Franklin. Ben gave a humorous fifteen minute talk detailing the many similarities between himself and the great Al Jolson.
One of the many aspirations of our current Society president, Jan Hernstat, was to have a photograph taken of all the living Al Jolson Society presidents. Even though there remains some speculation as to just how "lively" the past presidents are, on Saturday, May 20, 2006, Jan's goal was fulfilled when, for the first time, all the living presidents, past and present, were gathered together on the same stage. This historic moment was captured on film and is now a part of our Society archives.
After a short break, we settled back for the star attraction of the evening, Richard "Mr. Tin Pan Alley" Halpern, accompanied by Richard Daley at the piano. Richard has been a fan favorite of the Jolson Society for many years. This year, Richard devoted his portion of the show to the early songs Al sang on the Broadway stage. As on Friday night, the fun and music spilled over into the bar and lounge until the wee hours of the morning.
Sunday, May 21, the convention started with a buffet breakfast at 9:00 a.m., then the awards ceremony hosted by our president, Jan Hernstat. Ron Wright was the recipient of a 50-year loyalty award. The recipients of 25-year loyalty awards were Jim Brockson, Leon Price, Fred Parcells, and Victor Munt.
The Presidential Award was renamed the Dolores Kontowicz Presidential Award in honor of our founder and first Society president, Dolores Kontowicz. This year's awards went to Jim Brockson, Paul Casale, John Webster, Debbie Eifler, Joe Ciolino, Peter Dilg, Paul Bowers, Ed Greenbaum, Jon Sonneborn, and Brice Wexler. This was Bruce's fourth Presidential Award, a Society record. Vince Williams of Malta and Bob Daniels of New York were awarded the title of Honorary Member. President Jan Hernstat presented the final award of the day, the Irvin Warwick Award, to Stan Gerloff.
Congratulations to you all, you were honored for what you all gave to the Society. After all the awards were presented, we sang "We'll Meet Again" while holding up cards with the names Karen & John. Karen Rendon, the lovely wife of our vice-president, John Rendon, fell ill only a few weeks before the convention, making it impossible for them to be with us this year. A video was taken of the signs, and sent to Karen with wishes for a speedy recovery.
The 2006 Jolson convention at historic Philadelphia is now, itself, history. "I wanted to sing and America gave me my chance to sing. God bless you all, and good night," said Al Jolson on May 28, 1944, when he hosted the Philco Radio Hall of Fame program from Convention Hall, in Philadelphia, Pennsylvania.


text:
Now here's a naughty face if ever we've seen one - Check out brazilla's PV profile ...
My Ex Girl, all she wore was thongs and she had the biggest titties for a 21 yr old!
Get complete and unrestricted access to all photos and videos - Upgrade Today
No Account? Register for FREE


text:
Browsing Massachusetts » South Easton » Pool Equipment / Accessories
Add a Listing Here
811 Washington St
South Easton, Massachusetts
Thousand Oaks, commonly referred to as "T.O." by local residents, forms the most populated part of a regional area called the Conejo Valley. Newbury
If you are thinking about buying a swimming pool you will need to decide if you are going to go for the cheaper and easier to install above ground
Who said you can never enjoy your pool this winter season? Well, you can still enjoy and have fun dipping in your in ground swimming pools. All you
Pool Builders, the #1 US Pool Company Directory.
Pool Builder
Connect with us
Pool Builder
Copyright © 2015-2017 by Pool Builders | TOP EDM Music


text:
You forgot to mention the epicardium. the thin surface on the surface of the heart. the pericardium is not actualyy part of the heart but a bag that holds the heart.
- Performance of the myocardium is mediated by the [autonomic nervous system]. The sinoatrial node propagates electrical/sympathetic [systole]. The spinal ganglia and vagus nerve propagate electrical/parasympathetic [diastole]. --Lbeben (talk) 02:21, 18 December 2007 (UTC)--Lbeben (talk) 02:34, 17 December 2007 (UTC)
Myocardium and Cardiac muscle[edit]
These two articles refer to the same thing. I think they should be put together. Kadellar (talk) 00:14, 17 March 2008 (UTC)
- See Talk:Cardiac muscle for ongoing discussion ----Seans Potato Business 12:34, 15 June 2008 (UTC)


text: Safes For Sale Menu × Home Power Search Suggest a Category Registration Home Power Search Suggest a Category Registration Safes For Sale Safes For Sale Category shopping Address 1300 Enterprise Dr. Suite A Port, Charlotte, Florida, USA - 33953-3801 Phone (866) 841-3790 Website http://www.vaultandsafe.com/cash_safes.shtml Description:When you are the victim of a robbery, you have been violated and lost your money, jewelry or other valuables. So be creative and find safe places to hide your money. Visit vaultandsafe.com for more details.


text:
mmMac N Cheese
Faneuil Hall Marketplace, Boston, MA 02109
3 people saved this
mmMac N Cheese is base on simple, fresh comfort food. We make varieties of Mac N Cheese from a traditional Mac to Mac with chicken, burger, vegetables, sea food, Cajun and we have delicious grill cheeses and organic salads.
Of Note:
- Meals Served: Lunch, Dinner
Trustees Literary Trail
In addition to the miles of beautiful wooded trails, open beaches, and green pastures found...
Search All Listings Here.


text:
Let's go back in time… back before Darkstalker returned, back before Jade Mountain Academy was founded, back to the SandWing war…
With so many dragons fighting and suspicious, trade must have been harder than usual. But I'm sure dragons of different tribes still met to exchange goods, swap news, maybe even fall in love… right?
Write a story about dragons meeting in secret during the SandWing war.
Posted at:
Please tell us why you'd like to report this post
Recent threads
Wings of Fire: JMA's library /303800
Storystarter: Who are you again? /303076
Storystarter: Shadow House explanation /303077
Under the Horizon blood sand /303801
Need storystarters? Check out Shadow House and Horizon!


text: The Missing Bus Season two episode thirty-one. Contents[show] SynopsisEdit PlotEdit TriviaEdit Cultural ReferencesEdit Cast and CreditsEdit LinksEdit Retrieved from "http://theflintstonesarcheology.wikia.com/wiki/The_Missing_Bus?oldid=4203" Ad blocker interference detected! Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers Wikia is not accessible if you've made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected. Categories: Episodes Season 2 Add category Cancel Save


text:
The Role of Audiovisual Biofeedback on Image Quality During 4D Anatomic and Functional Imaging
- Full Text View
- Tabular View
- No Study Results Posted
- Disclaimer
- How to Read a Study Record
|Lung Cancer
|Device: Real time position management system Device: LS PET/CT Drug: 18-FDG
|Study Type:
|Study Design:
|Observational Model: Cohort
Time Perspective: Prospective
|Official Title:
|Investigating the Role of Audiovisual Biofeedback on Image Quality During 4D Anatomic and Functional Imaging
- Measure the difference in number of artifacts on 4D CT scans using audiovisual biofeedback in comparison to Free breathing. [ Time Frame: Day one ]The first, third, fifth seventh and ninth patients accrued to the protocol will have their free breathing studies performed first. The second, fourth, sixth, eighth and tenth patients accrued to the protocol will have their audiovisual (a/v) biofeedback studies performed first.
|Study Start Date:
|July 2010
|Study Completion Date:
|June 2013
|Primary Completion Date:
|June 2013 (Final data collection date for primary outcome measure)
Device: Real time position management system
- Fludeoxyglucose (18F)
- fluorodeoxyglucose (18F)
Choosing to participate in a study is an important personal decision. Talk with your doctor and family members or friends about deciding to join a study. To learn more about this study, you or your doctor may contact the study research staff using the contacts provided below. For general information, Learn About Clinical Studies.
|Ages Eligible for Study:
|18 Years and older (Adult, Senior)
|Sexes Eligible for Study:
|Accepts Healthy Volunteers:
|Sampling Method:
|Non-Probability Sample
Inclusion Criteria:
Required for inclusion in this study are:
- Informed consent
- Diagnosis of AJCC Stage I-III lung cancer of any histology to be treated using radiotherapy at Stanford Cancer Center
- Age 18 or greater
- Painfree in supine position
- Karnofsky performance status 50 or greater
The inclusion of educationally disadvantaged, decisionally impaired or homeless people are allowed if informed consent, in the opinion of the consenting investigator (study PI, co-PI or research nurse), is obtained.
Exclusion Criteria:
- Pregnant women
- Stanford employees
- Stanford students
- Prisoners will be eligible for the study.
To learn more about this study, you or your doctor may contact the study research staff using the contact information provided by the sponsor.
Please refer to this study by its ClinicalTrials.gov identifier (NCT number): NCT01172041
Please refer to this study by its ClinicalTrials.gov identifier (NCT number): NCT01172041
|United States, California
|Stanford University School of Medicine
|Stanford, California, United States, 94305
|Principal Investigator:
|Bill Loo
|Stanford University
Publications automatically indexed to this study by ClinicalTrials.gov Identifier (NCT Number):
|Responsible Party:
|Stanford University
|ClinicalTrials.gov Identifier:
|NCT01172041 History of Changes
|Other Study ID Numbers:
98393 ( Other Identifier: Stanford University Alternate IRB Approval Number )
SU-05152009-2578 ( Other Identifier: Stanford University )
10886 ( Other Identifier: Stanford IRB )
|First Submitted:
|July 26, 2010
|First Posted:
|July 29, 2010
|Last Update Posted:
|July 1, 2016
|Last Verified:
|June 2016
Additional relevant MeSH terms:
Fluorodeoxyglucose F18
Molecular Mechanisms of Pharmacological Action


text:
Multiple News shows news content from Google News and Feedzilla. Also, this site gets the tweets and Youtube Videos in order to show the user related content from different sources in a single web site.
Twits of ConfessionsExMu
1)It's not a 'niqab' ban, it's a restriction on ALL face coverings 2)It's not just for women, it's for everyone 3… - a month ago View More
This is totally acceptable because POC can't be racist, so this is fine. - a month ago View More
Don't let random white guys pretend they know anything about niqab. They're just narcissists sniffing the delicate… - a month ago View More
.@miss9afi and I both wore the niqab. Her in Saudi; me in Canada We agree w the restriction in Canada-and other Is… - a month ago View More
I'll be whatever you want me to be-just please don't make me go back to being a substitute drama teacher! 😫 - a month ago View More
Just imagine what this country could have been if its original civilization were allowed to flourish 😔🇪🇬💔 - a month ago View More
It baffles me too. And it saddens me. And it infuriates me. - a month ago View More
When you're so used to doing as you're told and never questioning-suddenly having to make decisions for me and my d… - a month ago View More
Eid /Diwali--whatever! Those sweet little brown savages all look alike in their adorable ethnic garb 😍 #PMSelfie - a month ago View More
Please take a moment to sign and RT. A young man in Iran is sentenced to death for insulting Mohammed. - a month ago View More
Latest News
Walmart | Black Friday EDC & Survival Gear Shopping Cyber Monday!
ole miss
The Season: Ole Miss Football
best buy
Best Buy 2017 Black Friday Biggest Line
@questlove @taylorswift13 @FallonTonight Squeeze my...
pandora uk
Last chance to take advantage of our 3 for 2 rings...
Dammit im mad" backwards is still "Dammit im mad"...
Sanders Highly inappropriate to question a four...


text:
The Ultimate Guide to Professionals
Read This if You Have Pests And Need a Quick Solution! Some people know how they can settle with a reliable firm for pest control while the highest populations have no idea. Most homeowners are challenged by the fact that pests have infested throughout their backyard. The greatest populations here would likely find solutions although not soluble ones although they play a little bit role. However, what most of them do not know is that there are better preventive ways they can use and get fruitful results. Good sanitation and also decent home maintenance are the best preventive practices that you should never miss. When the two tips are not effective for you, what you need is some expertise attention which is more effective. Caution is recommended whenever you are dealing with pest removal firms. Note that all of them will promise heaven while they all cannot achieve that. For that reason, you need to use some tactics to ensure that the company you settle with has the capabilities. It is best to play your part before leaving the rest to the expert. You should never blame the provider for incompetence while you failed to do your homework. For instance, you need to commit yourself to doing a lot of research. Again, the issue of pests is never an urgent call that needs to lead you to make unreasonable decisions due to desperations. You cannot be sure of incompetency and competency when you have not answered any of the questions below. Asking the professional about the number of years he/she has been in this industry is the best move you can ever make. You can start to contact some reliable organizations from your state just to ensure that you are on the right track. Remember to check for any company which has ever been accused of misusing pesticides. If you happen to find any of it here, you need to turn around and pretend like you had no intentions of asking for their services.
The Essentials of Tips – Breaking Down the Basics
The last but not least concern is to request for education certificates and legal papers. If the provider gives any excuses why he/she does not have these documents, then just run as fast as you can. One of the crucial signs that you are about to get yourself into a trap is when the service provider hesitates to show off his/her documentations. The only reason that the provider will refuse with the documents is when he/she is hiding something from you. Again, you need to be sure that the facilities are perfect and worth paying for. Some documents are very sensitive, and none of the experts should give any explanations for failing to have any licenses and other papers.Services: 10 Mistakes that Most People Make


text:
Showcase your American pride for baseball with one of our exclusive pendants.
.925 Sterling Silver paired with a XL Stainless Steel 18, 20, 24 inch chain of your choice.
0.6 inches x 0.9 inches approximate size
$ 69.99
The 2.0 FiveTool Baseball Bat Cross is a new and improved version of the Original Baseball Cross. The 2.0 features a stylized bail made to resemble a baseball at the...
$ 69.99
**Free First ClassTracked Shipping** At Five Tool Jewelry we specialize in baseball jewelry for players starting out in their career to major league baseball players. This ring is hand made...


text:
Home »Dress Shoes For Kid » Dress Shoes For Kid
Description: Dress Shoes For Kid from the above 500 x 500 jpeg 18kB resolutions which is part of the Dress Shoes For Kid directory. Download this image for free in HD resolution the choice "download button" below. If you do not find the exact resolution you are looking for, then go for a native or higher resolution.
Detail Of Dress Shoes For Kid
Title : cute to the core blyke low women s black casual platform
File Size : 500 x 500 jpeg 18kB
File Type : image/jpeg
Download :Small Size °Large Size °
This Dress Shoes For Kid is provided only for personal use as image on computers, smartphones or other display devices. If you found any images copyrighted to yours, please contact us and we will remove it. We don't intend to display any copyright protected images.


text:
Average ratings are based on the published values and not the values entered in your own log entries.
Like a lot of trails in Texas, this one's enjoyability depends heavily on the weather. Today it was a solid 4, but when it's hot and humid out, it's more of a 3.
Highlights--a poop-ton of butterflies! It's October, and there are butterflies all over the place.
Nice lunch spot in the bed of the now-dry creek, under a rocky, ferny bluff.
Good shade coverage for much of the hike.
Saw a neat green snake climbing an oak tree.
Another big oak totally festooned with Spanish moss.
Nice scenic overlook.
Plenty enough trail to get a nice, long hike.
When you're hot and tired, the hike up from the creek to the hilltop can be a chore.
A lot of ankle-twisty rocks.
Gnats and mosquitos can be bad in the creek valley.
This is a really short trail, but the caves are a nifty feature, and the trails are dotted with nice pockets of native landscaping. I combined it ith Dick Nichols and the Latta Greenbelt to make a decent ~3.5 mi hike.
I walked the loop on the right side of Beckett and then crossed and did the leg of the Latta Greenbelt. Not sure if I did all of it--it appeared to dead end at a library or community center, and I couldn't pick it back up.
The loop, which is mostly paved, is pretty busy, but I only ran into a few people in the greenbelt. The shade on the loop was particularly pleasant.
I was a little disappointed there wasn't a better trail connecting to the adjacent Karst Preserve--there were some wading-through-the-grass-and-chiggers kinds of trails, but nothing that looked official. When you put all three parks together (Dick Nichols, Latta Greenbelt, and Karst Preserve) you can get a good 3.5 miles or more, which is just the right length for an after-work hike. The combo was kind of fun--part neighborhood trail, part city park, part hiking trail, plus a bit threading across a retail block to get to the karst--quite a varied experience. You'll never forget you're in the middle of a city, though.
We took one of the Wildflower Center's Moonlight Tours of the gardens--this included the woodland trail and the arboretum (which I think is the same as the restoration/research trail also documented on this site).
The arboretum showed up best by full moon, with the prairie looking bright and silvery in the moonlight, and the trees as moody sporadic silhouettes.
Overall, there were rather fewer night-specific features than I had hoped, though it was a pleasant change to experience the center when it's mostly empty and not so hot.
The entire tour was a little less than 3 miles.
Parked at the main lot and hiked east to the dam (crossed on the rocks below the dam). Stumbled around a bit trying to find the real trail on the far side--would have been easier if I had crossed by the eastern mini-parking lot.
Some of the hilltop views from this trail are really beautiful, and the copious cedars mean that the hike has a lovely, spicy smell.
I didn't have time to go into the golden-cheeked warbler preserve, unfortunately, but it was nevertheless quite a nice hike. There are some inclines that are a bit aggressive, which is either a good thing or an annoying thing, depending on your preferences, but in between there were plenty of mostly level bits.
Botanizing was a mixed bag--SO MANY junipers and silktassels, over and over--but I did spot a pretty little native orchid and a gnarly old escarpment black cherry, so that was nifty.


text:
Score from 188 reviews
from 34,0 USD – Hotel
from 43,5 USD – Hotel
from 23,6 USD – Hotel
from 32,2 USD – Hotel
0.03 km
Avenida Benito Juárez García 106 86050, Villahermosa
0.26 km
Boulevard Adolfo Ruiz Cortinez Esq Paseo 86050, Villahermosa
0.28 km
Av. Adolfo Ruiz Cortines ·1110 86000, Villahermosa
0.81 km
Calle 1ro. de Mayo 86040, Villahermosa
* Distances are measured as a straight line, calculated from a starting point to a destination point
All bookings are confirmed instantly. No waiting, no email exchanges, no confusion.
Located just 100 metres from Tomás Garrido Canabal Park and its beautiful lake, this hotel is in Villahermosa business district. It offers a pool, free WiFi and rooms with a balcony.
Bright and spacious, the 4-star rooms at Hotel Cencali provide air conditioning, cable TV, safe and a coffee maker. Room service is available.
Guests enjoy regional cuisine at Hotel Cencali´s restaurant and exotic drinks from the bar. For additional dining options, guests can find restaurants in the surrounding area.
The hotel offers free parking on site and also free transportation airport-hotel-airport. For an additional fee, local excursions can be arranged at the tour desk.
Rooms: 159
Tea/Coffee Maker
Toilet, Free toiletries, Shower, Bathroom, Bath, Hairdryer
Air conditioning, Carpeted, Safety Deposit Box, Desk
Telephone, Cable Channels
This modern room offers a private balcony, free Wi-Fi and free parking. It includes cable TV, air conditioning and coffee maker. The bathroom is fitted with a bathtub.
Hairdryer, Toilet, Free toiletries, Shower, Bath, Bathroom
Desk, Safety Deposit Box, Air conditioning, Carpeted
Cable Channels, Telephone
This Standard Double Room comes with 2 double beds, a private balcony, free Wi-Fi and free parking. It includes cable TV, air conditioning and coffee maker. The bathroom is fitted with a bathtub.
Free toiletries, Toilet, Shower, Bath, Hairdryer, Bathroom
Desk, Air conditioning, Safety Deposit Box, Carpeted
Telephone, Cable Channels
This room features a balcony, cable TV and air conditioning.
Bed type is subject to availability on arrival.
After booking, all of the hotel's details, including telephone and email address, are provided in the online booking confirmation, confirmation email.
Bar, Restaurant (à la carte), Room service
Swimming pool, Fitness centre, Outdoor pool (all year)
Luggage storage, Newspapers, Tour desk, Safety deposit box, 24-hour front desk
Terrace, Garden
Ironing service, Laundry, Dry cleaning
Fax/photocopying, Business centre, Meeting/banquet facilities
Air conditioning, Non-smoking rooms, Lift, Non-smoking throughout
Free WiFi! WiFi is available in public areas and is free of charge.
Free parking! Free private parking is possible at a location nearby (reservation is not needed).
From 15:00 hours
Until 12:00 hours
All children are welcome.
There is no capacity for extra beds in the room.
Pets are not allowed.
Our hotel reviews will help you find the best deal in the right location.
ihr24.com offers the choice of over 600,000 hotels in more than 200 countries.
Sign up for your free My ihr24.com account
Website in English and 17 other languages


text:
by Bon Iver
- Record Label: Jagjaguwar
- Release Date: Jan 20, 2009
- Critic score
- Publication
- By date
The record sounds, appropriately so, as if it were made by a band experimenting, rather than by one man alone, heartbroken, in his so-often-talked-about Wisconsin cabin.
Blood Bank leaves something to be desired--namely the fragility and unplanned expansiveness that defined Emma. Fortunately, this set's remaining songs benefit from feeling slightly incomplete.
The Blood Bank EP is a fine appendix to the Bon Iver story, so far, and in its subdued elegance, the title track has all the emotional generosity of giving blood, tinged with the awareness of mortality.
His new EP, "Blood Bank," is due out on Tuesday on the same label, and three of its four songs abide by similar prescriptions [as "For Emma, Forever Ago."]
Blood Bank certainly dispels concerns that Vernon's accomplishment was somehow environmental--that "For Emma's" poetic circumstances, and not its contents, were responsible for its success.
Although it teases at the contrary for its first half, the idea that we really have no idea quite what to expect from the future of Bon Iver is the greatest gift this four-song breath gives us.
Nothing here really rivals For "Emma" but this is a lovely and worthy EP.
Vernon is great at seizing on something simple and spinning it out to reveal its innner beauty and this EP shows that there's more than just heartbreak to the 27-year-old. The title track, however, does sound like something by Coldplay.
It sees Vernon moving things on a touch, artistically, while still retaining much of what made his debut such a delight to so many.
The Vocoder on the a cappella track 'Woods' puts forth a robotic wooziness that's more about technical expression than personal sentiment. With full-band backing, Vernon also seems more social on the title track and 'Babys.' What remains from "For Emma" is a dizzying and ethereal beauty.
Essentially, Blood Bank is one pretty song--the titular, opening track settling somewhere close to what Damien Jurado's doing these days--and two similarly pretty experiments in stretching Bon Iver's sound.
Recorded over a couple years and in various locations, the EP sounds like outtakes from "Emma," but not in a bad way.
Initially off-putting due to the pitch-corrector's close association with the grossest of gross pop, Woods slowly enchants with mesmerizing vocal layers that pay no mind to verse/chorus/verse conventions.
Whereas "For Emma" felt like a ray of sunlight seamlessly inching across the forest floor, Blood Bank feels like fluorescent-bulbed filler.
It might be helpful to think of Blood Bank not as an EP but as a single with a solid new A-side and three largely irrelevant B-sides.
User Score
Universal acclaim- based on 64 Ratings
User score distribution:
Positive: 9 out of 9
Mixed: 0 out of 9
Negative: 0 out of 9
May 30, 2015A much warmer offering than For Emma, Forever Ago, it's four songs are soulful and evoke incredible emotions. A fitting follow up to BonA much warmer offering than For Emma, Forever Ago, it's four songs are soulful and evoke incredible emotions. A fitting follow up to Bon Iver's debut album.… Full Review »
Jun 15, 2014Still good. I loved the uniqueness of "Woods". I loved that track. Probably a bit too short for my liking, but it still has the intimacy andStill good. I loved the uniqueness of "Woods". I loved that track. Probably a bit too short for my liking, but it still has the intimacy and charm from For Emma, Forever Ago. Love it.… Full Review »


text:
Non-psychoactive CBD oil made from marijuana plants poised to be game-changer – Colorado innovation could open doors in other states, but some remain skeptical
By John Ingold
The Denver Post
Ben Holmes, owner of Centennial Seeds, extracts a solution to prepare a chromatography plate to analyze marijuana plants. (Mark Leffingwell, Daily Camera)
A Colorado marijuana innovation is changing the way lawmakers in even the most conservative parts of the country talk about cannabis and is poised to create a rapid expansion in the number of states that have legalized marijuana in some way.
But many marijuana advocates view the new political campaign with skepticism, fearing it could halt their movement's momentum.
Full Article:
Hemp Can Save the Planet
Recent Posts
- Special Report: Is Hemp the New Kale?
- After The NFL, Pot Saved Boo Williams' Life. He's Trying To Return The Favor.
- Parke-Davis: cannabis not dangerous, even in "immense doses" (c. 1900)
- Former NBA commissioner David Stern: Remove marijuana from banned list
- Could Hemp Fashion Be the Key to Fixing India's Cotton Economy?
Help Support JackHerer.com
If you would like to make a donation, thank you.


text:
Web programmer get job jobs
...speed dating website. This is the new rage of dating hitting America. You get 20 single men and 20 single women together and they all get a short date with everyone. I need web site to do this for marketing and online registration and payment. I need a designer and a programmer and am spliting this into 2 bids. I think this is an excellant opportunity
...new "web design" site. 2. Create a form that customers can fill in, to request information. Recently I created a 9 page website for my new web design business, but my hard drive crashed. Unfortunately, I did not backup my website, and I can't bear to create a whole new website. (I don't have the time either). So, I am happy to pay a programmer or a
...RBS ISP that will handle the billing and radius. I have also found a very experienced web designer, so I will not be needing a website designed anymore as well. Now all I need is a system admin/ programmer to setup a few programs, and make them work together. This job will not require a lot of programming. I am looking for a very experienced person. Here
...custom installed on a web site - a future online magazine. The word "custom" points at teh fact that I want this board to be workable within magazine pages (I bank on your tech knowledge on how to achieve this), thus being installed in a frame or something... no matter how - the goal is to not have this board as a separate entity of a web site - but more
We need a total recruiting software ASP solution that includes candidate and company data, resume parsing, document storage, job distribution, email and faxing, full-text searching, plus much more. Needs to be a full-featured client/server recruiting software package that works over the internet. Program must include features like: 1. ASP recruiting
...using Plesk as the web environment tool, and it keeps screwing up Oscommerce. The programmer that set it up doesn't seem to be able to figure this out. I don't think it is really difficult if you know Plesk. I can point you to the tech docs spelling out what the problem is. If you know Plesk, then this is probably a 15-minute job. If you know your stuff
...interactivity. On the site there are available admin functions for me to use. One of the administrative functions allows me to send emails to all my registered users right from a web browser. My dilemma right now is that I am unable to send the email to every single user because of a timeout error as seen below: "Error Diagnostic Information The time taken
...report program must be a self contained program able to run on my web server. Code lines / sections must be fully explained - so only professional working programmers need to reply. This job is a start and we have many other jobs in PHP and MySQL to be done. We are looking for a programmer that have the ability, interest and time to work closely with us
Before I get into the project requirements, please review the following project requirements. This particular project is very important to our business, and we simply cannot hire a programming student or hobbyist. The person we select to work with us must be very experienced, very professional and very willing to be a team player. We need programmer who
I need a complete art gallery web site. It must have a professional design, layout, and look. I need a browser based administration area where I can add, edit, or delete an artists item. A place where I can add, edit, or delete my own paintings. Send email to an artist or all artists. Suspend or Unsuspend an artist. The artist must register to use the
A programmer from scriptlance already build php scripts for my web site [url removed, login to view] But the php scripts which he build are not so good. I need to fix those php scripts. The scripts does automatic E-gold deposits and withdrawals. Once you deposit specific amount of money there will be start button, once the start button is pressed, the countdowns
Programmers, I am out to build a search site that is as good or better than anything out there on the web today. I need a clone of SmartSearch v4.13 with everything that script has plus these additional functions. 1) Must be as fast as possible. I notice most are asking for PHP but am open to suggestions. 2) My chosen XML feed(s) must integrate seamlessly
...don't have enough time and programming ability to completed my work yet. However, it's nearly finished, only a few function left unfinished. So, I would want any ASP and VB programmer to debug and complete the unfinished function for me. There are two part of the whole system. The first is an ASP application. This do most of the website interface and interaction
This job involves adding the ability for a visitor of a funeral home web site to read an obituary for a person and sign an online condolence (guest book) book. I have already made it possible for the owner to udate, add, remove obituary notices, but now we must add the ability for a visitor to leave their name (sign a 'guestbook') for a certain obituary


text:
Joplin city leaders reveal Connecticut Street expansion plan
Joplin city leaders get their first chance to show off plans for the Connecticut Street widening project to the public. The residents think it's great for drivers and could be useful for evening walks. But beyond that, not much else.
The City of Joplin introduced its $16 and half million dollar Connecticut Street widening project plans today. The first phase, set to begin early next year, will be the replacement of the I-44 overpass, which will be split 50/50 between MODOT and the City of Joplin.
In 2019, crews will widen Connecticut from the bridge south to 44th Street and then widen 44th, east to Range Line. The final part will be from north of the overpass to 32nd Street.
Dan Johnson, Joplin Public Works: "Having the extra lanes will certainly make it a more user friendly street."
It calls for 30 feet of new road on one side and another 10 feet on the other, making it a four lane road. Residents who live on the busy road think it only benefits the driver.
Hope Stansberry Resident: "But with the extra lanes it might help, but it's going to bring in a lot more traffic and for homeowners it's going to be harder for us to even sell our house when we do list it, so that kind of scares me a lot."
Connecticut Street is a major corridor from North Joplin to South Joplin, which is why the city has focused on this road.
Dan Johnson, Joplin Public Works: "We don't really choose to make the traffic go, we follow the traffic and those projections and so far the corridor has proven to be useful."
And according to residents that traffic flow is fast moving.
Hope Stansberry, Resident: "It's going to be a drag race, it already is, it's just going to be a lot more."
Stansberry isn't alone, other homeowners see those races.
Kelli Thornburg, Resident: "You know how many times people try to get from that light to that stop sign going 80 miles an hour, it's ridiculous. Then you have more lanes through here, they're going to go faster."
Despite residents' concerns, the city is hopeful to start work on this project as early as the beginning of the year. All the construction should be over by the year 2020. As for paying for the project, MODOT will cover half and the City of Joplin will cover the other half.


text:
makeup artist Setareh Hosseini just combined astrology and beauty together and it's beautiful! Hosseini created a series of makeup photos for each Zodiac si
It's all in her penetrating stare. Dark and calculating, her eyes are foreboding yet hypnotic. She wears strength and darkness equally well; Nevertheless, she is divine, and in her eyes is where your soul is revealed.
Makeup Looks for Every Zodiac Sign: Taurus


text:
New test detects toxic prions in blood
News Jun 14, 2014
The first cases of variant Creutzfeld Jakob Disease (vCJD) disease in humans occurred in the late 1990s and are thought to be the consequence of eating contaminated beef products. Since then, several cases of secondary infections caused by transfusions with blood from donors who subsequently developed vCJD have been reported, raising concerns about the safety of blood and blood products. A paper published in PLOS Pathogens on June 12 now describes an assay that can detect prions in blood samples from humans with vCJD and in animals at early stages of the (asymptomatic) incubation phase.
To develop the assay, Olivier Andréoletti, from the Ecole Nationale Vétérinaire de Toulouse, France, and colleagues first optimized a method called PMCA (for Protein Misfolding Cyclic Amplification). The method mimics in a test tube the process by which misfolded (toxic) prions propagate, and the researchers determined experimental conditions that enable efficient PMCA amplification of the vCJD agent in the blood.
Having defined such conditions, they show that the assay can detect vCJD in asymptomatic but infected animals in the early phase of the incubation period. They examined blood samples collected from infected sheep and macaques (vCJD-infected macaques are considered the best model of the human disease). In both models, the assay can accurately identify infected animals and detect the presence of vCJD prions in blood from macaques shortly after the initial infection (and several years before clinical disease onset).
Samples from human vCJD patients are rare, and none exist from individuals at preclinical stage of the disease. To test the assay in human blood, the researchers obtained samples from vCJD patients and non-infected controls and analyzed them blindly (i.e. the people who did the assays did not know which samples were which) in two different laboratories. The assay correctly and consistently identified three of the four vCJD affected patients, and yielded no false-positive result in any of the 141 healthy controls. The negative result in one of the vCJD samples raises the question of the potential absence of vCJD agent in the blood of certain patients.
The authors say their "results represent substantial progress towards an applicable vCJD blood detection assay. Such assay could be used to identify vCJD infected but asymptomatic individuals and/or for screening donated blood for the presence of the vCJD agent".
Note: Material may have been edited for length and content. For further information, please contact the cited source.
Caroline Lacroux, Emmanuel Comoy, Mohammed Moudjou, Armand Perret-Liaudet, Séverine Lugan, Claire Litaise, Hugh Simmons, Christelle Jas-Duval, Isabelle Lantier, Vincent Béringue, Martin Groschup, Guillaume Fichet, Pierrette Costes, Nathalie Streichenberger, Frederic Lantier, Jean Philippe Deslys, Didier Vilette, Olivier Andréoletti. Preclinical Detection of Variant CJD and BSE Prions in Blood. PLoS Pathogens, Published June 12 2014. doi: 10.1371/journal.ppat.1004202
Researchers Find a Way to Separate Side Effects of Opioid Drugs Reducing RiskNews
Scientists have discovered a way to separate these two effects -- pain relief and breathing, opening a window of opportunity to make effective pain medications without the risk of respiratory failure.READ MORE
Biological Mechanism of a Leading Cause of Childhood Blindness RevealedNews
Scientists have revealed the pathology of cells and structures stricken by optic nerve hypoplasia, a leading cause of childhood blindness in developed nations.READ MORE
Machine Learning: Helping Determine How a Drug Affects the BrainNews
Machine learning could improve our ability to determine whether a new drug works in the brain, potentially enabling researchers to detect drug effects that would be missed entirely by conventional statistical tests, finds a new UCL study published today in Brain.READ MORE
Comments | 0 ADD COMMENT
Like what you just read? You can find similar content on the communities below.Neuroscience
To personalize the content you see on Technology Networks homepage, Log In or Subscribe for FreeLOGIN SUBSCRIBE FOR FREE
The Legal Implications of Neuroscience Research
News Nov 15, 2017


text:
The 44-year-old patient has Hunter syndrome, which doctors hope to treat using zinc finger nucleases.
Discovering Novel Antibiotics
February 1, 2017|
Three methods identify and activate silent bacterial gene clusters to uncover new drugs
February 1, 2017|
Three methods identify and activate silent bacterial gene clusters to uncover new drugs
January 24, 2017|
Study of 81 six-week-olds who were born by C-section or vaginal delivery didn't show differences in the structure or function of their microbiota, despite contrary results from other studies on babies.
January 13, 2017|
Researchers examine how underground microbes and nutrients affect plant populations.
January 1, 2017|
In Chapter 6, "The Hormonal Essence of the T-Rex?" author Cordelia Fine considers the biological dogma that testes, and the powerful hormones they exude, are the root of all sexual inequality.
January 1, 2017|
Science under Trump, gene drive, medical marijuana, and more
December 29, 2016|
The latest CRISPR deactivators to be discovered turn off the Streptococcus pyogenes Cas9 widely used in genome editing.
December 22, 2016|
A metagenomics analysis finds Cas9 in archaea for the first time, along with two previously unknown Cas nucleases from bacteria.
December 19, 2016|
Selected quotes from an eventful year
December 12, 2016|
Documents suggest Feng Zhang started working on CRISPR before Jennifer Doudna's group published; researchers call for CRISPR technology to be shared openly
December 8, 2016|
Scientists present evidence of bacteria-driven mating in flagellate eukaryotes at the American Society for Cell Biology annual meeting.


text:
- Who We Are
- Youth & Young Families
- Young Professionals
- Adult Learning
- Calendar
- Life Events
- Facilities
- Prayer
- Music
- Donate
Parents' Corner
Parents' Corner
Your connection to young families in our community
Looking to connect your family to a vibrant, young Jewish community? The Shaar offers unique programming for children of all ages, as well as "Parents' Night Out" events, for those times when you want to leave the little ones behind.
Growing Up @ the Shaar
We are invested in your child's Jewish journey at every age and stage:
Join our Shaar Parents Facebook group. Share photos of recent events, and receive thoughtful articles and resources connected to Jewish parenting.
Sign-up for our Youth and Young Families mailing list. Stay informed about all the upcoming events geared towards young families!
Subscribe to our weekly e-Newsletter. Receive important information about the synagogue, find out about upcoming events, and read the latest blog posts by our youth staff!
Coffee with Maharat
Every Friday at 9:15 AM at Foundation School
After drop-off, join Maharat Rachel Kohl Finegold and other parents for coffee and some Jewish parenting insight.
Contact us today!
To learn more about Parents' Corner, please contact Maharat Rachel Kohl Finegold:
Tel. 514-937-9474 ext. 174
Fri, November 24 2017 6 Kislev 5778
Fri, November 24 2017
6 Kislev 5778
Events at the Shaar
Nov 27Sisterhood Storytelling Evening
Monday, Nov 27th 7:30 PM to 9:30 PM
Dec 6Vertical Whisky Tasting
Wednesday, Dec 6th 7:00 PM to 9:00 PM
Dec 8Scholar-in-Residence Rabba Sara Hurwitz
Friday, Dec 8th 4:00 PM to 8:00 PM
Dec 13Chanukah Extravaganzaa - Gr. 1 - 6
Wednesday, Dec 13th 5:00 PM to 7:00 PM
Dec 15YP @ the Shaar: Chanukah Dinner
Friday, Dec 15th 6:45 PM to 10:00 PM
Dec 16Chanukah Party for Adults
Motzei Shabbat, Dec 16th 7:30 PM to 10:00 PM
Dec 17Chanukah in the Spinagogue - 6 yrs and under
Sunday, Dec 17th 10:00 AM to 12:00 PM


text:
Common code in Spring MVC, where to put it?
During my journey coding an actuator for a non-Spring Boot application, I came upon an interesting problem regarding where to actually put a snippet of common code. This post tries to list all available options, and their respective pros and cons in a specific context.
As a concrete example, let's use the REST endpoint returning the map of all JVM properties accessible through the
/jvmpropssub-context. Furthermore, I wanted to offer the option to search not only for a single property e.g.
/jvmprops/java.vm.vendorbut also to allow for filtering for a subset of properties e.g.
== The current situation
The code is designed around nothing but boring guidelines for a Spring application. The upper layer consists of controllers. They are annotated with
@RestControllerand provide REST endpoints made available as
@RequestMapping-annotated methods. In turn, those methods call the second layer implemented as services.
As seen above, the filter pattern itself is the last path segment. It's mapped to a method parameter via the
@RestController class JvmPropsController(private val service: JvmPropsService) { @RequestMapping(path = arrayOf("/jvmprops/{filter}"), method = arrayOf(GET)) fun readJvmProps(@PathVariable filter: String): Map<String, *> = service.getJvmProps() } —-
To effectively implement filtering, the path segment allows star characters. In Java however, string matching is achieved via regular expression. It's then mandatory to "translate" the simple calling pattern to a full-fledge regexp. Regarding the above example, not only the dot character needs to be escaped - from
.but to
\\., but the star character needs to be translated accordingly - from
[source,java] val regex = filter.replace(".", "\.").replace("", ".")
Then, the associated service returns the filtered map, which is in turn returned by the controller. Spring Boot and Jackson take care of JSON serialization.
== Straightforward alternatives
This is all fine and nice, until additional map-returning endpoints are required (for example, to get environment variables), and the above snippet ends up being copied-pasted in each of them.
There surely must be a better solution, so where factor this code?
=== In a controller parent class
The easiest hack is to create a parent class for all controllers, put the code there and call it explicitly.
abstract class ArtificialController() { fun toRegex(filter: String) = filter.replace(".", "\.").replace("", ".") }
@RestController class JvmProps(private val service: JvmPropsService): ArtificialController() { @RequestMapping(path = arrayOf("/jvmprops/{filter}"), method = arrayOf(GET)) fun readJvmProps(@PathVariable filter: String): Map<String, *> { val regex = toRegex(filter) return service.getJvmProps(regex) } } —-
This approach has three main disadvantages:
. It creates an artificial parent class just for the sake of sharing common code. . It's necessary for other controllers to inherit from this parent class. . It requires an explicit call, putting the responsibility of the transformation in the client code. Chances are high that no developer but the one who created the method will ever use it.
=== In a service parent class
Instead of setting the code in a shared method of the controller layer, it can be set in the service layer.
The same disadvantages as above apply.
=== In a third-party dependency
Instead of an artificial class hierarchy, let's introduce an unrelated dependency class. This translates into the following code.
class Regexer { fun toRegex(filter: String) = filter.replace(".", "\.").replace("", ".") }
@RestController class JvmProps(private val service: JvmPropsService, private val regexer: Regexer) { @RequestMapping(path = arrayOf("/jvmprops/{filter}"), method = arrayOf(GET)) fun readJvmProps(@PathVariable filter: String): Map<String, *> { val regex = regexer.toRegex(filter) return service.getJvmProps(regex) } } —-
While favoring composition over inheritance, this approach still leaves out a big loophole: the client code is required to call the shared one.
=== In a Kotlin extension function
If one is allowed to use alternate languages on the JVM, it's possible to benefit for Kotlin's extension functions:
interface ArtificialController
fun ArtificialController.toRegex(filter: String) = filter.replace(".", "\.").replace("", ".")
@RestController class JvmProps(private val service: JvmPropsService): ArtificialController { @RequestMapping(path = arrayOf("/jvmprops/{filter}"), method = arrayOf(GET)) fun readJvmProps(@PathVariable filter: String): Map<String, *> { val regex = toRegex(filter) return service.getJvmProps(regex) } } —-
Compared to putting the code in a parent controller, at least the code is localized to the file. But the same disadvantages still apply, so the gain is only marginal.
== More refined alternatives
Refactorings described above work in every possible context. The following options apply specifically for (Spring Boot) web applications.
They all follow the same approach: instead of explicitly calling the shared code, let's somehow wrap controllers in a single component where it will be executed.
=== In a servlet filter
In a web application, code that needs to be executed before/after different controllers are bound to take place in a servlet filter.
With Spring MVC, this is achieved through a filter registration bean:
@Bean fun filterBean() = FilterRegistrationBean().apply { urlPatterns = arrayListOf("/jvmProps/") filter = object : Filter { override fun destroy() {} override fun init(config: FilterConfig) {} override fun doFilter(req: ServletRequest, resp: ServletResponse, chain: FilterChain) { chain.doFilter(httpServletReq, resp) val httpServletReq = req as HttpServletRequest val paths = request.pathInfo.split("/") if (paths.size > 2) { val subpaths = paths.subList(2, paths.size) val filter = subpaths.joinToString("") val regex = filter.replace(".", "\.") .replace("", ".*") // Change the JSON here… } } } } —-
The good point about the above code is it doesn't require controllers to call the shared code explicitly. There's a not-so-slight problem however: at this point, the map has already been serialized into JSON, and been processed into the response. It's mandatory to wrap the initial respons in a response wrapper before proceeding with the filter chain and process the JSON instead of an in-memory data structure.
Not only is this way quite fragile, it has a huge impact on performance.
=== In a Spring MVC interceptor
Moving the above code from a filter in a Spring MVC interceptor unfortunately doesn't improve anything.
=== In an aspect
The need of translating the string parameter and to filter the map are typical cross-cutting concerns. This is a typical use-case fore Aspect-Oriented Programming. Here's what the code looks like:
@Aspect class FilterAspect { @Around("execution(Map ch.frankel.actuator.controller..(..))") fun filter(joinPoint: ProceedingJoinPoint): Map<String, > { val map = joinPoint.proceed() as Map<String, *> val filter = joinPoint.args[0] as String val regex = filter.replace(".", "\.").replace("", ".*") return map.filter { it.key.matches(regex.toRegex()) } } } —-
Choosing this option works in the intended way. Plus, the aspect will be applied automatically to all methods of all classes in the configured package that return a map.
=== In a Spring MVC advice
There's a nice gem hidden in Spring MVC: a specialized advice being executed just after the controller returns but before the returned value is serialized in JSON format (thanks to @Dr4K4n for the hint).
The class just needs to:
. Implement the
ResponseBodyAdviceinterface . Be annotated with
@ControllerAdviceto be scanned by Spring, and to control which package it will be applied to
@ControllerAdvice("ch.frankel.actuator.controller") class TransformBodyAdvice(): ResponseBodyAdvice<Map<String, Any?» {
override fun supports(returnType: MethodParameter, converterType: Class<out HttpMessageConverter<*») = returnType.method.returnType == Map::class.java
override fun beforeBodyWrite(map: Map<String, Any?>, methodParameter: MethodParameter, mediaType: MediaType, clazz: Class<out HttpMessageConverter<*», serverHttpRequest: ServerHttpRequest, serverHttpResponse: ServerHttpResponse): Map<String, Any?> { val request = (serverHttpRequest as ServletServerHttpRequest).servletRequest val filterPredicate = getFilterPredicate(request) return map.filter(filterPredicate) }
private fun getFilterPredicate(request: HttpServletRequest): (Map.Entry<String, Any?>) -> Boolean { val paths = request.pathInfo.split("/") if (paths.size > 2) { val subpaths = paths.subList(2, paths.size) val filter = subpaths.joinToString("") val regex = filter.replace(".", "\.") .replace("", ".") .toRegex() return { it.key.matches(regex) } } return { true } } } —-
This code doesn't require to be called explicitly, it will be applied to all controllers in the configured package. It also will only be applied if the return type of the method is of type
Map(no generics check due to type erasure though).
Even better, it paves the way for future development involving further processing (ordering, paging, etc.).
== Conclusion
There are several ways to share common code in a Spring MVC app, each having different pros and cons. In this post, for this specific use-case, the
ResponseBodyAdvicehas the most benefits.
The main taking here is that the more tools one has around one's toolbelt, the better the final choice. Go explore some tools you don't know already about: what about reading some documentation today?Categories: JavaEE Spring MVCClean codeDesign
Fully configurable mappings for Spring MVC
:page-liquid: :experimental: :imagesdir: /assets/resources/fully-configurable-mappings-spring-mvc/
As I wrote some weeks link:{% post_url 2017-03-05-use-case-spring-component-scan %}[earlier^], I'm trying to implement features of the Spring Boot actuator in a non-Boot Spring MVC applications. Developing the endpoints themselves is quite straightforward. Much more challenging, however, is to be able to configure the mapping in a properties file, like in the actuator. This got me to check more closely at how it was done in the current code. This post sums up my "reverse-engineering" attempt around the subject.
== Standard MVC
=== Usage
In Spring MVC, in a class annotated with the
@Controllerannotation, methods can be in turn annotated with
@RequestMapping. This annotation accepts a
valueattribute (or alternatively a
pathone) to define from which path it can be called.
The path can be fixed e.g.
/userbut can also accepts variables e.g.
/user/{id}filled at runtime. In that case, parameters should can be mapped to method parameters via
@RequestMapping(path = "/user/{id}", method = arrayOf(RequestMethod.GET)) fun getUser(@PathVariable("id") id:String) = repository.findUserById(id) —-
While adapted to REST API, this has to important limitations regarding configuration:
- The pattern is set during development time and does not change afterwards
- The filling of parameters occurs at runtime
=== Implementation
With the above, mappings in
@Controller-annotated classes will get registered during context startup through the
DefaultAnnotationHandlerMappingclass. Note there's a default bean of this type registered in the context. This is summed up in the following diagram:
image::defaultannotationhandlermapping.png[DefaultAnnotationHandlerMapping sequence diagram,714,533,align="center"]
In essence, the magic applies only to
@Controller-annotated classes. Or, to be more strict, quoting the
DefaultAnnotationHandlerMapping's Javadoc:
[quote] __ Annotated controllers are usually marked with the Controller stereotype at the type level. This is not strictly necessary when RequestMapping is applied at the type level (since such a handler usually implements the
org.springframework.web.servlet.mvc.Controllerinterface). However, Controller is required for detecting RequestMapping annotations at the method level if RequestMapping is not present at the type level. __
== Actuator
=== Usage
Spring Boot actuator allows for configuring the path associated with each endpoint in the
application.propertiesfile (or using alternative methods for Boot configuration).
For example, the metrics endpoint is available by default via the
metricspath. But's it possible to configure a completely different path:
[source] endpoints.metrics.id=mymetrics
Also, actuator endpoints are by default accessible directly under the root, but it's possible to group them under a dedicated sub-context:
[source] management.context-path=/manage
With the above configuration, the metrics endpoint is now available under the
=== Implementation
Additional actuator endpoints should implements the
MvcEndpointinterface. Methods annotated with
@RequestMappingwill work in the exact same way as for standard controllers above. This is achieved via a dedicated handler mapping,
EndpointHandlerMappingin the Spring context.
[quote] __ HandlerMapping to map Endpoints to URLs via Endpoint.getId(). The semantics of
@RequestMappingshould be identical to a normal
@Controller, but the endpoints should not be annotated as
@Controller(otherwise they will be mapped by the normal MVC mechanisms). __
The class hierarchy is the following:
image::mvcendpoint.png[MvcEndpoint class diagram,834,476,align="center"]
This diagram shows what's part of Spring Boot and what's not.
== Conclusion
Actuator endpoints reuse some from the existing Spring MVC code to handle
@RequestMapping. It's done in a dedicated mapping class so as to separate standard MVC controllers and Spring Boot's actuator endpoint class hierarchy. In order to achieve fully configurable mappings in Spring MVC, this is the part of the code study, to duplicate and to adapt should one wants fully configurable mappings.Categories: JavaEE Spring MVCactuatorSpring Boot
Metrics, metrics everywhere
:imagesdir: /assets/resources/metrics-metrics-everywhere/
With DevOps, metrics are starting to be among the non-functional requirements any application has to bring into scope. Before going further, there are several comments I'd like to make:
. Metrics are not only about non-functional stuff. Many metrics represent very important KPI for the business. For example, for an e-commerce shop, the business needs to know how many customers leave the checkout process, and in which screen. True, there are several solutions to achieve this, though they are all web-based (Google Analytics comes to mind) and metrics might also be required for different architectures. And having all metrics in the same backend mean they can be correlated easily. . Metrics, as any other +++NFR+++ (e.g. logging and exception handling) should be designed and managed upfront and not pushed in as an afterthought. How do I know that? Well, one of my last project focused on functional requirement only, and only in the end did project management realized +++NFR+++ were important. Trust me when I say it was gory - and it has cost much more than if designed in the early phases of the project. . Metrics have an overhead. However, without metrics, it's not possible to increase performance. Just accept that and live with it.
The inputs are the following: the application is http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html[Spring MVC^]-based and metrics have to be aggregated in http://graphite.wikidot.com/[Graphite^]. We will start by using the excellent https://dropwizard.github.io/metrics/[Metrics project^]: not only does it get the job done, its https://dropwizard.github.io/metrics/3.1.0/manual/[documentation^] is of very high quality and it's available under the friendly OpenSource Apache v2.0 license.
That said, let's imagine a "standard" base architecture to manage those components.
First, though Metrics offer a Graphite endpoint, this requires configuration in each environment and this makes it harder, especially on developers workstations. To manage this, we'll send metrics to JMX and introduce http://www.jmxtrans.org/[jmxtrans^] as a middle component between JMX and graphite. As every JVM provides JMX services, this requires no configuration when there's none needed - and has no impact on performance.
Second, as developers, we usually enjoy develop everything from scratch in order to show off how good we are - or sometimes because they didn't browse the documentation. My point of view as a software engineer is that I'd rather not reinvent the wheel and focus on the task at end. Actually, Spring Boot already http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html=production-ready-code-hale-metrics[integrates with Metrics^] through the Actuator component. However, it only provides GaugeService - to send unique values, and CounterService - to increment/decrement values. This might be good enough for +++FR+++ but not for +++NFR+++ so we might want to tweak things a little.
The flow would be designed like this: Code > Spring Boot > Metrics > JMX > Graphite
The starting point is to create an aspect, as performance metric is a cross-cutting concern:
@Aspect public class MetricAspect {
private final MetricSender metricSender; @Autowired public MetricAspect(MetricSender metricSender) { this.metricSender = metricSender; } @Around("execution(* ch.frankel.blog.metrics.ping..*(..)) ||execution(* ch.frankel.blog.metrics.dice..*(..))") public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { StopWatch stopWatch = metricSender.getStartedStopWatch(); try { return pjp.proceed(); } finally { Class<?> clazz = pjp.getTarget().getClass(); String methodName = pjp.getSignature().getName(); metricSender.stopAndSend(stopWatch, clazz, methodName); } } } ----
The only thing outside of the ordinary is the usage of autowiring as aspects don't seem to be able to be the target of explicit wiring (yet?). Also notice the aspect itself doesn't interact with the Metrics API, it only delegates to a dedicated component:
public class MetricSender {
private final MetricRegistry registry; public MetricSender(MetricRegistry registry) { this.registry = registry; } private Histogram getOrAdd(String metricsName) { Map<String, Histogram> registeredHistograms = registry.getHistograms(); Histogram registeredHistogram = registeredHistograms.get(metricsName); if (registeredHistogram == null) { Reservoir reservoir = new ExponentiallyDecayingReservoir(); registeredHistogram = new Histogram(reservoir); registry.register(metricsName, registeredHistogram); } return registeredHistogram; } public StopWatch getStartedStopWatch() { StopWatch stopWatch = new StopWatch(); stopWatch.start(); return stopWatch; } private String computeMetricName(Class<?> clazz, String methodName) { return clazz.getName() + '.' + methodName; } public void stopAndSend(StopWatch stopWatch, Class<?> clazz, String methodName) { stopWatch.stop(); String metricName = computeMetricName(clazz, methodName); getOrAdd(metricName).update(stopWatch.getTotalTimeMillis()); } } ----
The sender does several interesting things (but with no state):
- It returns a new
StopWatchfor the aspect to pass back after method execution
- It computes the metric name depending on the class and the method
- It stops the
StopWatchand sends the time to the
- Note it also lazily creates and registers a new
Histogramwith an
ExponentiallyDecayingReservoirinstance. The default behavior is to provide an
UniformReservoir, which keeps data forever and is not suitable for our need.
The final step is to tell the Metrics API to send data to JMX. This can be done in one of the configuration classes, preferably the one dedicated to metrics, using the
@PostConstructannotation on the desired method.
@Configuration public class MetricsConfiguration {
@Autowired private MetricRegistry metricRegistry; @Bean public MetricSender metricSender() { return new MetricSender(metricRegistry); } @PostConstruct public void connectRegistryToJmx() { JmxReporter reporter = JmxReporter.forRegistry(metricRegistry).build(); reporter.start(); } } ----
The JConsole should look like the following. Icing on the cake, all default Spring Boot metrics are also available:
image::jconsole.png[JConsole screenshot,662,452,align="center"]
Sources for this article are link:/assets/resources/metrics-metrics-everywhere/spring-metrics-1.0.0.zip[available] in Maven "format".Categories: Java devopsgraphitemetricsperformancespringSpring MVC
- It returns a new
Sanitizing webapp outputs as an an afterthought
For sure, software security should be part of every developer's requirements: they should be explained and detailed before development. Unfortunately, it happens in real life that this is not always the case. Alternatively, even when it is, developers make mistakes and/or have to make with tight (read impossible) plannings. In the absence of security checks automated tools, sooner or later, an issue will appear.
I've been thinking about a way to sanitize the output of a large-scale legacy Spring MVC application in a reliable way (i.e. not go on each page to fix issues). Basically, there are 4 ways output is displayed in the HTML page.
[options="header,autowidth"] |===
# Name Sample snippet Description 1 Form taglib Outputs a bean attribute 2 Spring taglib <spring:message code="label.name.first"> Outputs a message from a properties file 3 Java Standard Taglib Library Outputs a value 4 Expression Language ${pageContext.request.requestURI} Outputs a value
== Spring taglibs
Spring taglibs are a breeze to work with. Basically, Spring offers multiple ways to sanitize the output, each scope parameter having a possibility to be overridden by a narrower one:
. Application scoped, with the boolean
defaultHtmlEscapecontext parameter + [source,xml] —-
defaultHtmlEscape true
+ . Page scoped (i.e. all forms on page), with the
<spring:defaultHtmlEscape>tag . Tag scoped, with the
htmlEscapeattribute of the tag
There's only one catch; the
<spring:message>tag can take not only a code (the key in the property file) but also arguments - however, those are not escaped:
[source] Hello, ${0} ${1}
A possible sanitization technique consists of the following steps:
. Create a new
SanitizeMessageTag: +
- Inherit from Spring's
- Override the relevant
- Use the desired sanitization technique (Spring uses its own
HtmlUtils.htmlEscape(String)) + . Copy the existing Spring TagLib Descriptor and create a new one out of it . Update it to bind the
messagetag to the newly created
SanitizeMessageTagclass . Last but not least, override the configuration of the taglib in the web deployment descriptor: + [source,xml] —-
http://www.springframework.org/tags /WEB-INF/tld/sanitized-spring-form.tld
+ By default, the JavaEE specifications mandates for the container to look for TLDs insides JARs located under the
WEB-INF/libdirectory. It is also possible to configure them in the web deployment descriptor. However, the configuration takes precedence over automatic scanning.
This way, existing JSP using the Spring taglib will automatically benefit from the new tag with no page-to-page update necessary.
<c:out>tag works the same way as the
<spring:message>one, the only difference being there's no global configuration parameter, only a
escapeXmltag attribute which defaults to
The same technique as above can be used to default to
The EL syntax enables output outside any taglib so that the previous TLD override technique cannot be used to solve this.
Not known to many developers, EL snippets are governed by so-called EL resolvers. Standard application servers (including servlet containers like Tomcat) provide standard EL resolvers, but it is also possible to add others at runtime.
NOTE: Though only a single EL resolver can be set in the JSP context, the resolver hierarchy implements the Composite pattern, so it's not an issue.
Steps required to sanitize EL syntax by default are:
. Subclasses relevant necessary EL resolvers - those are
BeanELResolver, since they may return strings . For each, override the
getValue()method: +
- Call
- Check the return value
If it is a string, sanitize the value before returning it, otherwise, leave it as it is + . Create a
ServletContextListenerto register these new EL resolvers + [source,java] —- public class SanitizeELResolverListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) { ServletContext context = event.getServletContext(); JspFactory jspFactory = JspFactory.getDefaultFactory(); JspApplicationContext jspApplicationContext = jspFactory.getJspApplicationContext(context); ELResolver sber = new SanitizeBeanELResolver(); jspApplicationContext.addELResolver(sber); // Register other EL resolvers } } —-
== Summary
Trying to sanitize the output of an application after it has been developed is not the good way to raise developers concerns about security. However, dire situations require dire solutions. When the application has already been developed, the above approaches - one for taglibs, one for EL, show how to achieve this in a way that does not impact existing code and get the job done.Categories: JavaEE JSTLsecuritySpring MVC
- Inherit from Spring's
Chaining URL View resolvers in Spring MVC
Standard Java EE forward to internal resources go something like this:
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) { req.getRequestDispatcher("/WEB-INF/page/my.jsp").forward(req, resp); } } —-
Admittedly, there's no decoupling between the servlet code and the view technology, even without the JSP location.
Spring MVC introduces the notion of
ViewResolver. The controller just handles logical names, mapping between the logical name and the actual resource is handled by the
ViewResolver. Even better, controllers are completely independent from resolvers: just registering the latter in the Spring context is enough.
Here's a very basic controller, notice there's no hint as to the final resource location.
@Controller public class MyController {
@RequestMapping("/logical") public String displayLogicalResource() { return "my"; } } —-
Even better, there's nothing here as to the resource nature; it could be a JSP, an HTML, a Tiles, an Excel sheet, whatever. Each has a location strategy based on a http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-viewresolver-resolver[dedicated^]
ViewResolver. The most used resolver is the http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/view/InternalResourceViewResolver.html[
InternalResourceViewResolver]; it meant to forward to internal resources, most of the time, JSPs. It is initialized like this:
@Bean public ViewResolver pageViewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/page/"); resolver.setSuffix(".jsp"); return resolver; } —-
Given this view resolver available in the Spring context, the logical name
"my"will tried to be resolved with the
"/WEB-INF/page/my.jsp"path. If the resource exists, fine, otherwise, Spring MVC will return a 404.
Now, what if I've different folders with JSP? I expect to be able to configure two different view resolvers, one with a certain prefix, the other with a different one. I also expect them to be checked in a determined order, and to fallback from the first to the last. Spring MVC offers http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-viewresolver-chaining[multiple resolvers with deterministic order^], with a big caveat: it does not apply to
Quoting Spring MVC Javadoc:
[quote] When chaining ViewResolvers, an InternalResourceViewResolver always needs to be last, as it will attempt to resolve any view name, no matter whether the underlying resource actually exists.
This means I cannot configure two
InternalResourceViewResolverin my context, or more precisely I can but the first will terminate the lookup process. The reasoning behind (as well as the actual code), is that the resolver gets an handle on the RequestDispatcher configured with the resource path. Only much later is the dispatcher forwarded to, only to find that it does not exist.
To me, this is not acceptable as my use-case is commonplace. Furthermore, configuring only
"/WEB-INF"for prefix and returning the rest of the path (
"/page/my") is out of the question as it ultimately defeats the purpose of decoupling the logical name from the resource location. Worst of all, I've seen controller code such as the following to cope with this limitation:
[source,java] return getViews().get("my"); // The controller has a Map view property with "my" as key and the complete path as the "value"
I think there must be some more Spring-ish way to achieve that and I've come to what I think is an elegant solution in the form of a ViewResolver that checks if the resource exists.
public class ChainableUrlBasedViewResolver extends UrlBasedViewResolver {
public ChainableUrlBasedViewResolver() { setViewClass(InternalResourceView.class); }
@Override protected AbstractUrlBasedView buildView(String viewName) throws Exception { String url = getPrefix() + viewName + getSuffix(); InputStream stream = getServletContext().getResourceAsStream(url); if (stream == null) { return new NonExistentView(); } return super.buildView(viewName); }
private static class NonExistentView extends AbstractUrlBasedView { @Override protected boolean isUrlRequired() { return false; }
@Override public boolean checkResource(Locale locale) throws Exception { return false; } @Override protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { // Purposely empty, it should never get called } } } ----
My first attempt was trying to return
nullwithin the
buildView()method. Unfortunately, there was some NPE being thrown later in the code. Therefore, the method returns a view that a. tells caller that the underlying resource does not exist b. does not allow for its URL to be checked (it also fails at some point if this is not set).
I'm pretty happy with this solution, as it enables me to configure my context like that:
@Configuration @EnableWebMvc @ComponentScan(basePackages = "ch.frankel.blog.spring.viewresolver.controller") public class WebConfig {
@Bean public ViewResolver pageViewResolver() { UrlBasedViewResolver resolver = new ChainableUrlBasedViewResolver(); resolver.setPrefix("/WEB-INF/page/"); resolver.setSuffix(".jsp"); resolver.setOrder(0); return resolver; }
@Bean public ViewResolver jspViewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/jsp/"); resolver.setSuffix(".jsp"); resolver.setOrder(1); return resolver; } } —-
Now, I'm pretty well inside Spring philosophy: I'm completely decoupled, and I'm using Spring nominal resolver ordering. The only con is that one resource can shadow another another by having the same logical name pointing to different resources given different view resolvers. As it is already the case with multiple view resolvers, I'm ready to accept the risk.
A showcase project can be found link:/assets/resources/chaining-url-view-resolvers-in-spring-mvc/viewresolver.zip[here] in IntelliJ IDEA/Maven format.Categories: JavaEE Spring MVC
Spring 3.2 sweetness
:page-liquid: :experimental:
Even the most extreme Spring opponents have to admit it is all about making developers life easier. Version 3.2 of Spring MVC brings even more sweetness to the table.
== Sweetness #1: No web.xml
The ability to run a webapp without any web deployment descriptor comes from Servlet 3.0.
One option would be to annotate your servlet with the
@WebServletannotation to set mapping and complementary data. When you get your servlet for free, like Spring's
DispatcherServlet, you'd need to subclass you servlet for no other purpose than adding annotation(s).
Alternatively, Servlet 3.0 offers a way to both programmatically register servlets in the container and to offer hooks at startup through the
ServletContainerInitializerinterface. The container will call the
onStartup()method of all concrete implementation at webapp startup. The Spring framework leverages this feature to do so for
Spring MVC 3.2 provides such an implementation -
AbstractContextLoaderInitializer, to programmatically register the
DispatcherServlet. This means that as soon as the spring-webmvc jar is in the
WEB-INF/libfolder of the webapp, you've got the Dispatcher servlet up and ready.
This replaces both the servlet and servlet mapping and the context listener declarations in the web.xml.
== Sweetness #2: Easy Java configuration integration
Java configuration is the way to configure Spring injection explicitly in a typesafe way. I won't go into the full demonstration of it, as I link:{% post_url 2013-03-10-consider-replacing-spring-xml-configuration-with-javaconfig %}[already wrote about that^] some time ago.
Earlier Spring versions provided a way to use Java configuration classes instead of XML files in the web deployment descriptor. Spring 3.2 offers
AbstractAnnotationConfigDispatcherServletInitializer, a
AbstractContextLoaderInitializersubclass with hooks for Java configuration classes.
Your own concrete subclass has to implement methods to define servlet mappings, as well as root and web Java configuration classes:
public class SugarSpringWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override protected Class<?>[] getRootConfigClasses() { return new Class[] { JavaConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { return new Class[] { WebConfig.class }; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } } ----
At this point, you just need to create those configuration classes.
== Sweetness #3: integration testing at the mapping level
Your code should be unit-tested, that is tested in isolation to ensure that each method is bug-free, and integration-tested to ensure that collaboration between classes yield expected results.
Before v. 3.2, the Spring test framework let you assemble your configuration classes / files easily enough. The problem lay in the way you would call entry-points - the controllers. You could call methods of those controllers, but not the mappings, leaving those untested.
With v. 3.2, Spring Test brings a whole MVC testing framework which entry-points are mappings. This way, instead of testing method
x()of controller
C, you would test a request to
/z, letting Spring MVC handle it so we can check for expected results.
The framework also provide expectations for view returning, forwarding, redirecting, and model attribute setting, all with the help of a specific DSL:
public class SayHelloControllerIT extends AbstractTestNGSpringContextTests {
private MockMvc mockMvc; @BeforeMethod public void setUp() { mockMvc = webAppContextSetup((WebApplicationContext) applicationContext).build(); } @Test(dataProvider = "pathParameterAndExpectedModelValue") public void accessingSayhelloWithSubpathShouldForwardToJspWithModelFilled(String path, String value) throws Exception { mockMvc.perform(get("/sayHello/Jo")).andExpect(view().name("sayHello")).andExpect(model().attribute("name", "Jo")); } } ----
The project for this article can be link:/assets/resources/spring-3-2-sweetness/spring-sweet-1.0.0.zip[downloaded] in Eclipse/Maven format.Categories: JavaEE integration testingspringSpring MVC
Posts Tagged 'Spring MVC'


text:
Jobs in Cadwell
Email me jobs like this
Posted 5 days ago by Inside Out Purchasing & Supply
Study Programme Tutor
Posted Yesterday by Oakmoor Recruitment limited New
Streetworks Administrator
Posted 8 November by Anglian Water
Business Development Manager Specification Sales
Posted 5 days ago by SER (Staffing) Ltd
Care Worker
Housing Assistant (Estates) - Lincolnshire
Posted 5 days ago by networx
Forensic Mental Health Care Assistant
Posted 8 November by Service Care Solutions Featured
NQT Primary Teachers - Lincolnshire
Posted 8 November by Principal Resourcing
Care Assistant
Chef De Partie - Great stable team
Posted 9 October by 360 Resourcing Solutions Ltd
Customer Service Assistant - Clifton
Posted 5 days ago by Matt Burton
Email me jobs like this
Featured New
Sales Specialist - Managed Services
Posted Yesterday by Ricoh UK Ltd Featured New
CTO - DATA Science
Posted 5 days ago by Ignata Tech
Domestic Gas Engineer
Posted 8 November by Build Recruitment Limited
Care Assistant
Audit Semi Senior
Posted 8 November by Public Practice Recruitment Ltd Featured
Senior Production Manager - Nights
Posted 8 November by Bonfire Recruitment Featured
Featured New
Area Business Development Manager
Posted Yesterday by Ricoh UK Ltd Featured New
Care Assistant - Home Care
Replace a saved search
Replace a saved search
Shortlisted job limit
You have reached your limit of 100 shortlisted jobs. To save more, please delete some of your existing shortlisted jobs. View shortlisted jobs


text:
Brown Bag Party Time
Make Your Summer Sizzle Specials
Host a Brown Bag Party in the months of June July or August and you will receive Brown Bag Party's normal 20% of your sales in love loot to spend on your sexy shopping spree. PLUS to help your summer sizzle you will receive a LOVE CUSHION (100$ Retail Value) ABSOLUTELY FREE just for hosting your Brown Bag Party with me! If your party attendance is more than 10 you will get an EXTRA 24$ added to your Sexy Shopping Spree and if you have more than 15 guests you will get an EXTRA 48$ added. If 3 of your friends book a party of their own you will also receive a 60$ toy for FREE! If your sales are over 500$ you can choose from
5 Hostess Exclusive Items you can purchase at up to 60% OFF.
Call me today to book your ULTIMATE Ladies Night In!
Our Parties are FREE FUN and EDUCATIONAL!
GREAT for Bachelorette parties, Birthday Parties, Couples Parties or just a Fun Ladies Night In!
Already a member? Click here to log in


text:
From furniture to flatware, all orders over $49.00 ship free* 2-Day Delivery on Best Sellers
Enjoy 2-day delivery on more than 480,000 items $4.99 Shipping Under $49.00...For orders that don't qualify for free shipping, it's just $4.99
Replace your basic bedding with a colorful fun duvet cover. The lightweight microfiber is a soft hypoallergenic fabric with a soft touch similar 1000 thread count fabric. Features: -Gone Fishin collec.. See Full Details »
Delivery Estimates : Enter your shipping zip or postal code to calculate shipping estimates Get Delivery Estimate
We want you to love it. If you don't, you may return your purchase within 30 days of delivery. All you need to do is visit our Self-Service Return Center for instructions. Return credits are issued within 24 hours once the item is received and inspected. Please note that shipping charges are non-refundable. The cost of return shipping will be deducted from your refund. Read More
Shopping on the web is feasible to flourish as online services bring lovely result, with better facts and tools to compare and contrast. World&'s inhabitants are continuously getting a lot more access to computers and this will be the only reason why shopping online is getting very popular. Reaching here will not allow you to go bare handed. You will really love to acquire Gone Fishin Lightweight Duvet Cover Size: Full Queen came from here. It&'s amazing price and superb offers will truly win your heart. People who are seeking Gone Fishin Lightweight Duvet Cover Size: Full Queen can get no other place much better than this to go shopping for their desired product. Buying Gone Fishin Lightweight Duvet Cover Size: Full Queen from this level is really easily and affordable and reviews could make things more clear.
|Mirabelle Decorative Cotton Throw Pillow
|$ 160.00
|Tailored Pique Coverlet Collection
|$ 280.00
|Golden Baroque Printed Throw Pillow Size: 20" H x 20" W x 5" D
|$ 31.85
|Triangles Duvet Cover Size: Twin
|$ 113.99
|Melody Pillow Case Color: Sea Glass
|$ 130.00
|Bonfire Regata Outdoor/Indoor Lumbar Pillow Size: 16.5" H x 24.5" W x 5" D
|$ 67.70
|Carmella Quilt Set Color: Emerald, Size: Full/Queen
|$ 37.42
|Glynis Floral Cotton Throw Pillow Color: Mint Red, Size: 20" x 20"
|$ 66.46
|Laras Floral Cotton Throw Pillow Size: 18" x 18"
|$ 59.99
|Melody Pillow Case Color: Coral
|$ 130.00
Tell us what you think! Tell us what you think about this product.Read and Write


text:
Finding relief from degenerative scoliosis symptoms
Scoliosis is a condition in which the spine shifts out of alignment, sometimes caused by the natural degeneration of the spine or sometimes as a birth defect. This condition is characterized by an abnormal curvature of the spine, usually prevalent in the hips or shoulder blades.
Though the condition most commonly arises during adolescence, it can also develop later in life as the spine weakens with age. After years of constant pressure and movement, the facet joints of the spine that connect the vertebrae can wear down, allowing vertebrae to shift to the left or right. As the vertebrae shift, the condition's signature "S" or "C" curve in the spine can develop.
This form of the condition — called degenerative scoliosis — is most common among individuals age 65 and older and almost always develops in the lumbar spine (lower back).
While some patients with degenerative scoliosis experience no symptoms, others may notice uneven shoulders and hips or that one shoulder blade has become more prominent than the other. If the misaligned vertebrae press against a spinal nerve, nerve root or the spinal cord, the following symptoms of pain can occur:
- Radiating pain
- Numbness
- Tingling
- Muscle weakness in the lower extremities
In severe cases, some patients with degenerative scoliosis may also have difficulty breathing or with continence. If you lose bladder or bowel control at any point, seek medical attention immediately.
Nonsurgical treatments
Initially, your doctor may recommend a series of conservative treatments to help reduce your symptoms and realign your spine without surgery. This is often achieved with the use of the following treatments:
- Over-the-counter nonsteroidal anti-inflammatory drugs (NSAIDs) such as ibuprofen
- Cryotherapy
- Physical therapy
- Weight loss or other lifestyle changes
If these nonsurgical treatments do not reduce your pain or symptoms after several months, your doctor may recommend spine surgery to help realign your vertebrae and relieve the pressure on your pinched nerve.
Laser Spine Institute
The minimally invasive spine surgery offered at Laser Spine Institute can help treat adult degenerative scoliosis in a safer and effective manner than traditional open back surgery. This is because our procedures do not require a large incision and the cutting of the large muscles that support the spine.
On the contrary, our minimally invasive procedures are performed through a small incision, sometimes less than one inch, and involve no muscle disruption. Because of this minimally invasive approach to the spine, our patients can experience a shorter recovery time^ and lower risk of complication than patients who choose traditional open back surgery.
To treat adult degenerative scoliosis, we offer two types of minimally invasive spine surgeries. While some patients are able to receive a decompression procedure, patients with scoliosis often require the spine to be realigned and then a minimally invasive stabilization surgery (also known as a fusion) to hold the alignment in place to reduce the symptoms of scoliosis.
For more information about the benefits of minimally invasive spine surgery to find relief from degenerative scoliosis, contact Laser Spine Institute today. We can look over your MRI report or CT scan and tell you if you are a candidate for our minimally invasive spine surgery.