text:
Video: Lightning, Canucks score three goals in about 30 seconds
Jan 2, 2014, 12:20 AM EDT
One can excuse much of the hockey world for being a little bleary eyed during the time of the Tampa Bay Lightning – Vancouver Canucks game.
After all, it's the only game of the night, with a late start. Some may be barely over the "results" of New Year's Eve festivities. There's also that 2014 Winter Classic that may leave some would-be onlookers groggy.
The game started in a yawn-inducing way, too, but hopefully fans didn't doze off during a run of second period goals Wednesday night.
Bruce Richardson scored for Vancouver 11:25 into the middle frame, but things didn't really pick up until four minutes later. Over a span of just more than 30 seconds, a 1-0 game turned into a 2-2 tie. Here are the goals in chronological order.
Valtteri Filppula made it 1-1 with a snapshot 15:27 into the period:
Twenty seconds later, Tyler Johnson gave Tampa Bay a fleeting 2-1 lead:
That lead only made persisted for 14 seconds, however, as Zac Dalpe scored his first goal of the season:
One can only imagine the lightning puns that were striking down on readers after that display.
Update: The Lightning ended up winning 4-2 on Wednesday. The Bolts ended a two-game skid, extending Vancouver's losing streak to two in the process.
From Jackets to Devils: Castron leaves one scouting director job for another
Jul 31, 2015, 4:11 PM EDT
Ray Shero's restructure continues.
One month later, Mike Richards' future remains murky
Jul 31, 2015, 2:46 PM EDT
There is a key deadline approaching though.
Subban working out with former Olympian Ben Johnson
Jul 31, 2015, 1:16 PM EDT
Johnson won a gold medal in 1988, but it was taken away because of a positive steroids test.
Quebecor seeks partners in Quebec City bid
Jul 31, 2015, 11:50 AM EDT
There's a $500 million expansion fee to consider.
Former first-rounder Gormley accepts Coyotes' qualifying offer
Jul 31, 2015, 10:24 AM EDT
This will be a key season for him.
How do Voracek, Giroux compare to the most expensive duos?
Jul 31, 2015, 9:00 AM EDT
Because once Voracek's eight-year contract kicks in, they'll be part of that list.
PHT Morning Skate: Want to design Cory Schneider's mask?
Jul 31, 2015, 8:00 AM EDT
Friday's collection of links.
Report: Further coaching hires expected for Sharks
Jul 30, 2015, 10:27 PM EDT
Former NHL stars are among the list of likely candidates.
Owner Pegula: Sabres have gone through 'two of the most successful seasons we've ever had'
Jul 30, 2015, 9:00 PM EDT
Has Buffalo set itself up for an era of long playoff runs?
Habs' Galchenyuk inks two-year extension
Jul 30, 2015, 7:52 PM EDT
The deal is reportedly worth $5.6 million.
Flames prospect Kylington cleared to play in North America
Jul 30, 2015, 7:11 PM EDT
At one point he was listed as the top European skater in the 2015 draft.
Voracek turns monster season into massive eight-year deal
Jul 30, 2015, 5:52 PM EDT
The Flyers also have forwards Claude Giroux and Sean Couturier locked up.
Zubrus clears waivers, is 'surprised' by buyout
Jul 30, 2015, 4:22 PM EDT
The 37-year-old still wants to continue his career.
Isles draftee Song named ambassador for Beijing's Winter Olympic bid
Jul 30, 2015, 3:00 PM EDT
Along with Yao Ming.
Coyotes want long-term deal with Glendale
Jul 30, 2015, 2:01 PM EDT
"Nobody benefits from a short-term deal like this, in particular, our hockey department."
Report: Canucks, Sutter closing in on five-year deal, north of $20M
Jul 30, 2015, 1:15 PM EDT
Vancouver wasting little time locking up the target of Tuesday's trade.
Bruins in talks with veteran d-man Zidlicky
Jul 30, 2015, 12:50 PM EDT
Boston could use some depth on its back end.
Report: Haula seeking $1.2 million in arbitration, Wild countering at $775K
Jul 30, 2015, 11:50 AM EDT
Hearing is scheduled for Friday at 9 a.m. ET.
Ex-NHLer Ling charged with battery, theft
Jul 30, 2015, 10:50 AM EDT
Alleged incident involved a female victim.
Habs GM hopes Semin will 'bring his skill and his compete level'
Jul 30, 2015, 9:50 AM EDT
As opposed to just his skill.
Top Posts
- How do Voracek, Giroux compare to the most expensive duos? 42
- Voracek turns monster season into massive eight-year deal 63
- Report: Canucks, Sutter closing in on five-year deal, north of $20M 27
- Voynov serving sentence at jail that once advertised it had flat screen TVs 45
- Report: Bernier and Leafs more than $2 million apart ahead of Friday's arbitration hearing 12
- Flyers re-sign Couturier: six years, $26 million 40
- Benning calls Sutter a 'foundation piece' for Canucks 24
- Here's a chart that shows which teams have been good/bad at drafting 40
- Penguins sign Fehr to three-year, $6 million contract 22
- Trade: Penguins send Sutter to Canucks for Bonino, Clendening 54
Most Commented
- Bettman says NHL would have to 'consider' putting Quebec City in the Western Conference (71)
- Voracek turns monster season into massive eight-year deal (63)
- Rangers sign Stepan — six years, $39 million (62)
- NBC Sports to broadcast 105 NHL games in 2015-16 (58)
- Trade: Penguins send Sutter to Canucks for Bonino, Clendening (54)
- D. Stepan (2681)
- G. Bettman (1805)
- L. Couture (1684)
- A. Larsson (1681)
- B. Holtby (1651)
- J. Toews (1635)
- A. Chiasson (1479)
- M. Johansson (1349)
- A. Semin (1294)
- B. Gionta (1278)


text:
Jarome Iginla nets his 550th career goal
Jarome Iginla nets his 550th career goal
Recap: PHI 3, TOR 2
Unlock your personal NFL Now stream by signing in to NFL.com
Boston Bruins forward Jarome Iginla receives the puck in the slot and fires home his 550th career goal on Florida Panthers goaltender Roberto Luongo.
7/28/15: Phils slug past Blue Jays for comeback win
7/28/15: Syndergaard strikes out nine to lift Mets
7/28/15: Aaron Hicks lines a three-bagger to right, scoring Miguel Sano and tying the game at 3 in the bottom of the 6th
Yahoo Sports' Frank Schwab discusses what the Patriots quarterback will do now that his 4-game suspension has been upheld.
Ronda Rousey sits down with Megan Olivi to discuss the team of "Four Horsewomen" that she is a part of. In this fun interview, hear Rousey describe the team dynamic and what makes each of them unique.

subset: commoncrawl


text:
Galveston Begins Latest Push For Casinos With Poll
Galveston goes all in
Just about everyone in Galveston wants casinos, the Galveston Chamber of Commerce has announced.
At least just about everyone who was polled by the Chamber, that is.
The organization has announced the results of a poll of members and non-members that finds 79 percent of respondents support casinos on the island.
The poll was website-based, so it's not the most scientific thing in the world, but it's notable for the way the results are being touted.
The Chamber met yesterday to discuss the poll and prepare for the next legislative session, and it looks like they'll be pushing for a local referendum on the question.
"The people have indicated they want to have a voice and they want to have a vote. We need to be at the table to protect our business interests with whatever plan the legislature develops," Fred Raschke, chairman of the group's board, said.
Two-thirds of the poll respondents said any casino law from the state should include a local option whereby Galveston voters would decide whether or not to bring gambling to the island.
Given the financial resources behind gambling, we can't imagine how inundated mailboxes would be, or what surprising endorsements might come.
Get the This Week's Top Stories Newsletter
Every week we collect the latest news, music and arts stories — along with film and food reviews and the best things to do this week — so that you'll never miss Houston Press' biggest stories.
Sponsor Content
More News
- Ken Paxton Isn't Alone: Five Other Texas Politicians Indicted While in Office
Upcoming Events
Houston Astros vs. Detroit TigersSat., Aug. 15, 6:10pm
Houston Texans vs. San Francisco 49ersSat., Aug. 15, 7:00pm
Houston Roller Derby - August BoutSat., Aug. 15, 7:00pm
Houston Astros vs. Detroit TigersSun., Aug. 16, 1:10pm
- Tickets
- James Harden Offered $200 Million By Adidas In New Shoe Deal
- Houstonian Tourist Brought Loaded Guns To 911 Memorial


text:
Samurai!Hardback Classics of Naval Literature
List price $30.47
You save $11.44 37% off
Free delivery worldwide
Dispatched in 2 business days
When will my order arrive?
Additional formats available
- Format
- Paperback $18.75
- Publisher: Naval Institute Press
- Format: Hardback | 384 pages
- Dimensions: 146mm x 210mm x 32mm | 522g
- Publication date: 15 June 2010
- Publication City/Country: Annopolis
- Illustrations note: 13 photos
- Sales rank: 150,064
Product description
Saburo Sakai is Japan's greatest fighter pilot to survive World War II, and his powerful memoir has proven to be one of the most popular and enduring books ever written on the Pacific war. First published in English in 1957, it gave Americans new perspectives on the air war and on the Japanese pilots who, until then, had been perceived in the United States as mere caricatures. Today, the books remains a valuable eyewitness account of some of the most famous battles in history and a moving, personal story of a courageous naval aviator.A living legend, Sakai engaged in more than two hundred dogfights, from the Philippines to Iwo Jima, and was the only Japanese ace never to lose a wingman in combat. By way's end he reportedly had shot down sixty-four Allied planes. Although this number cannot be confirmed, Sakai's exploits in the air were extraordinary by any standards. His most renowned accomplishment, an epic of aviation survival, occurred after action over Guadalcanal in August 1942. Partially paralyzed and nearly blind from multiple wounds, he managed to fly 560 miles to Rabaul and safely land his crippled Zero.Here, Sakai offers a full account of his experiences, modestly recalling his rise from an impoverished childhood to feats of mythic proportions. And because he shares his innermost thoughts with his readers, the book not only provides rare insights into the Samurai character but also describes with complete honestly the human emotions common to warriors of all causes.Barrett Tillman's introduction to this new Naval Institute Press Classics of Naval Literature edition put the memoir in historical context for today's readers.Saburo Sakai was born into an impoverished Samurai family in 1916. Faced with the prospects of a desolate rural life, he enlisted in the Imperial Japanese Navy at sixteen. By 1937 he had graduated at the top of this his enlisted pilot-training class, and he quickly saw combat in China. By the end of World War II he had logged 3,700 flight hours, including some 1,500 hours in the Zero.
Add item to wishlist
Other people who viewed this bought:
Japanese Destroyer Captain
USD$21.64 - Save $6.41 22% off - RRP $28.05
Man's Search for Meaning
USD$6.91 - Save $2.45 26% off - RRP $9.36
I Know Why the Caged Bird Sings
USD$6.34 - Save $4.58 41% off - RRP $10.92
Yes Please
USD$12.02 - Save $3.59 22% off - RRP $15.61
Can't We Talk About Something Mo...
USD$23.13 - Save $6.55 22% off - RRP $29.68
Down the Rabbit Hole
USD$19.39 - Save $7.16 26% off - RRP $26.55
Other books in this category
I Know Why the Caged Bird Sings
USD$6.34 - Save $4.58 41% off - RRP $10.92
Man's Search for Meaning
USD$6.91 - Save $2.45 26% off - RRP $9.36
H is for Hawk
USD$10.47 - Save $3.58 25% off - RRP $14.05
Lean In
USD$13.91 - Save $6.39 31% off - RRP $20.30
Not That Kind of Girl
USD$19.31 - Save $7.24 27% off - RRP $26.55
American Sniper
USD$8.78 - Save $3.71 29% off - RRP $12.49


text:
10 East Main Street
Richmond, Vermont 05477
Tel: 802-434-6080
Email: firstname.lastname@example.com
Website: greenseainc.com
CEO/President: Ben Kinnaman
Number of Employees: 12
Greensea Systems, Inc. founded in 2006 to provide the offshore industry with advanced control and navigation software in an operator-friendly format. Since our start, we have grown steadily and have invested heavily in the development of a navigation and control technology that enables unprecedented increases in operator efficiency and capability.
The Tech:
• openSEA. Greensea anchors its navigation and control technology with the Open Software and Equipment Architecture, openSEA. Greensea designed and developed openSEA specifically as a modular programming environment for unmanned vehicles. openSEA is built on a robust error reporting and communication backbone and provides proven and tested software modules ranging from optimal control and Kalman filtering, to data management, to native support for hundreds of widely used sensors and devices.
• openSEA Suite. The openSEA Suite is a suite of software built on openSEA that can be deployed as independent applications or as linked modules to augment system capability.
Applications within this suite include a sensor server (openSENSOR), a configurable aided Inertial Navigation System (openINS), a vehicle autopilot and control system (openCMD), and a mission management and planning system (openMNGR). All applications in the openSEA Suite are integrated into Greensea's user interface framework, openVIZ. Greensea offers Software Development Kits and interface support packages for the openSEA Suite and openSEA API to facilitate system customization, private labeling, and servicing.
Leveraging the architecture of openSEA and the applications within the openSEA Suite, Greensea provides capabilities including mission management, waypoint navigation, station keeping, dynamic positioning, autopilots, and target acquisition on a native INS core.
(As published in the July/August 2013 edition of Marine Technologies - www.seadiscovery.com)
KEP Marine – the manufacturer of type approved displays, computers and peripherals, announced the release of the affordable, high-quality KMGBL Glass Bridge Light Displays.
Strainstall designs and delivers a load measurement solution for the world's largest floating wharf at Port of Dampier.
Strainstall, part of James Fisher and Sons plc,
Rolls-Royce announced delivery of the twin fixed pitch propellers to Bath Iron Works for installation on the U.S. Navy's most modern surface combatant, the future USS Zumwalt,
The Spanish company SENER, Ingeniería y Sistemas S.A has closed a contract with U.K.-based BAE Systems PLC for the integration between FORAN CAD/CAM System and
Costa's two new cruise ships will be the largest ever built based on guest capacity; Costa will join sister brand AIDA Cruises in building the first-ever cruise
Egypt plans to allow smaller vessels in the Mediterranean direct access to East Port Said around the clock instead of just eight hours a day by building a side channel near the Suez Canal,
A small section of the Upper Houston Ship Channel was closed Tuesday morning after a report of 1,000 gallons of diesel entered Greens Bayou from a cement facility, the U.
The COMPIT annual edition took part this year from May 11-13 in Ulrichshusen, Germany, with the participation of SENER. This event is an International Conference
The extensive global network of Furuno service centers, subsidiaries and distributors was one of the reasons that Holland America Line (HAL) chose Furuno when
Ship Handling by Hervé Baudu
Responding to the recommendations arising from the STCW convention on the knowledge of maneuvering required of deck officers, the
Recently, Pilita Clark, the Environment Correspondent at the Financial Times, wrote a very interesting article about a new report, 'The New Climate Economy', which I would highly recommend reading.


text:
anonymous asked:
I've been naturally skinny all of my life and I've been told that I'm way too skinny and that i look sickly, etc etc. I understand what you mean by saying fat shaming is horrible but I wouldn't say its worse then shaming someone for being naturally skinny. They're both horrible in an equally way.
you get called names for being skinny which is bad, yes and im truly sorry!! I've been there too and let me tell you firsthand i understand how annoying it is!
as a skinny girl, there aren't million-dollar companies made solely to make you feel unwanted because of your size. you don't turn on a comedy show or watch a #1 comedy movie and see people reducing you to nothing more than a punchline every single sentence. you don't feel alone as a result of not seeing anyone as large as you in popular media . you aren't told that your only job in life is to please men, only to experience extreme dissonance because you don't fit the archetype. you don't constantly get denied jobs and due respect simply for being fat.
being called names for being skinny is unpleasant, 100% agree. but being told that you're a failure in life for being fat is much worse and it's selfish to say the two of them are anywhere near the same.


text:
Hamish and Andy's secret to successITS A friendship forged over beer and sustained by regular top-ups, so it makes sense to meet in a pub. And because Hamish Blake and Andy Lee are the people's jokesters, their cross-media stardom based on their broad appeal, it's logical that the ... NEWS.com.au, 2 weeks ago
Chadstone sings the song
Coach Ken Schwab said it was great to see the Chadstone boys celebrate a win. Picture: Hamish Blair Source: News Corp Australia CHADSTONE has secured its first win almost three years. The Synners first win since a Round 16, 2012 success against Mt ...Herald Sun, 1 month ago
Inside the creative mind
SIBLING's retail project DUST picked up the top prize at the Australian Interior Design Awards. Picture: Peter Bennetts Source: Supplied The Melbourne School of Design, by John Wardle Architects and NADAAA. Source: Supplied Award for Interior Design ...The Australian, 2 months ago
Sweet win for Lyne
THURSDAY night's Rabobank Executive Development Program graduation dinner held a sweet but well deserved win for one Queensland participant. Held at The Esplanade at Balmoral Beach, Mosman, cane grower Chris Lyne of Ayr Farming, Ayr, not only took ...The Land Australia, 4 days ago
Volts bolster batting ranks
Otago are the big winners from the first round of New Zealand Cricket's domestic contracts, despite losing Jesse Ryder to Central Districts. NZC confirmed 14 players from each of the six major associations to be offered contracts for the 2015-16 ...The Press NZ, 5 days ago Otago Volts cover Jesse Ryder departure with three batting signings Dominion Post, 5 days ago
NZ cricket contracts: The winners and losers
Major association cricket contracts have been handed out to 14 players at each of the six provinces. A 15th player will be offered a deal by August 10 to round out their rosters. So who are the winners, or losers out of the wheeling and ...New Zealand Herald, 5 days ago Major Associations announce first round of domestic contracts Yahoo! News Australia, 5 days ago
Iti Pounamu, Series 3 Episode 15
| Māori Television Jump to navigation Jump to content TV show sub navigation Last aired on Monday 20 July 2015 Award winning short film by Hamish Bennett, Ross and Beth is the story of a humble farming couple, a sudden ...Maori Television, 1 week ago
2015 Emmy Nominations
HBO's " Game of Thrones " swept the 2015 Emmy nominations , which were announced this afternoon, with 24, including best drama series while FOX's ratings juggernaut, " Empire ," only received three nominations including lead actress Taraji P.Examiner.com, 1 week ago 2015 Emmy nominations snub 'Empire' & 'Big Bang Theory' Examiner.com, 1 week ago
Golden Globe Awards Nominated for Two Emmys
The nominees are below: OUTSTANDING DRAMA SERIES Better Call Saul Downton Abbey Game of Thrones Homeland House of Cards Mad Men Orange is the New Black OUTSTANDING COMEDY SERIES Louie Modern Family ...Hollywood Foreign Press Association, 1 week ago Emmy Nominations: The Complete List Variety, 1 week ago Complete list of Emmy Award nominations 2015: Game of Thrones leads with 24; Amy Schumer, Tatiana Maslany surprise Washington Post, 1 week ago Emmy Award nominations 2015: Game of Thrones leads with 24 Washington Post, 1 week ago
Emmy Awards 2015: Check out full list of nominees
By Hassan Sanusi The full list of nominations have just been released for the Emmy awards Game of Thrones bagged the highest number of nominations Photo Emmys Check out the full list of nominees for the 67th Emmy Awards which will hold on ...Uncova, 1 week ago Emmy Nominations 2015 Full List Mail.com, 1 week ago
Realtime News
on your WebpageAdd Widget >Get your members hooked!


text:
Stay connected
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
Follow us on Twitter
Tag Archives: Match-making
The Right Match: Yaser and Salma
2010 was quite a lucky year for me, as that's when I found my soulmate. I had registered on Shaadi.com and became a SelectShaadi member in May, 2010 and soon found my special someone.
Posted by Shaadilive on 04/07/2012 in Inspiring Stories 2 Comments
Tagged Life partner, love, Marriage, Match-making
Tagged Life partner, love, Marriage, Match-making
Get Closer to That Special Someone
Finding your life partner online is a process of interacting and testing how compatible you are with the opposite person. Here's a list of some dos and don'ts to keep in mind while getting to know your prospective spouse on … Read More…
Posted by Shaadilive on 30/05/2012 in Shaadi Tips Post A Comment
Tagged Compatibility, Connect, Interact, Life partner, Match-making, Perfect match
Tagged Compatibility, Connect, Interact, Life partner, Match-making, Perfect match
Shaadi.com Turns 15
Shaadi.com completed 15 years of successful matchmaking on Octboer 19, 2011. The portal has already changed the lives of over 2 million people through successful marriages in last few years.
Posted by Shaadilive on 19/10/2011 in Shaadi Buzz 1 Comment
Tagged Anupam Mittal, Match-making, Matrimonial, shaadi.com
Tagged Anupam Mittal, Match-making, Matrimonial, shaadi.com
5 Rules To Follow On Shaadi.com
If you are looking for your life-partner on Shaadi.com or planning to register on the website, here's some handy information to help you find the 'right' match…
Posted by Shaadilive on 13/10/2011 in Shaadi Tips 4 Comments
Tagged Browsing, Connect, Express Interest, Interact, Internet, Life partner, Match-making, Matrimonial, Single
Tagged Browsing, Connect, Express Interest, Interact, Internet, Life partner, Match-making, Matrimonial, Single
Make Your First Date A Success – Dos and Don'ts
Are you planning to meet your prospective partner sometime soon? Here's how you can make it a success. Check out the must dos and don'ts for meeting a prospective partner.
Posted by Shaadilive on 04/10/2011 in Shaadi Tips 2 Comments
Tagged Connect, First date, Interact, Marriage, Match-making, Partner, Right match, Soulmate, Wonderful
Tagged Connect, First date, Interact, Marriage, Match-making, Partner, Right match, Soulmate, Wonderful
Happily Married: Prateek and Simpy
Shaadi.com has helped thousands of people find their soulmate online and here's one more couple who just can't stop thanking Shaadi.com…
Posted by Shaadilive on 15/09/2011 in Inspiring Stories 1 Comment
Tagged Life partner, Match-making, Perfect match, shaadi.com
Tagged Life partner, Match-making, Perfect match, shaadi.com
Popular Tags
#ShaadiDotCom #Shaadi.com #ShaadiTrivia 18 years Advice Anti-Dowry Anupam Mittal April Fool Awards bridal collection Browsing chat Chennai Super Kings Commitment Compatibility Connect Counsellor Couple couples Cricket Shaadi.com CSK Dating Dhoni Dress Right Eco-friendly Express Interest Family fathers day Festival First date First impression Happily Married Help In-laws Indian Innovative inspiring couple inspiring story Interact Internet IPL Life partner love Made for each other Marriage Marriage Tips Match Match-making Matchmaking Matrimonial matrimonial sites member Men Online Match Parents Partner Partner Search perfect life partner Perfect match Perfect partner Potential match Product Product Update product updates Prospective spouse Relationship Relationships Research Right match Search shaadi.com Shaadi.com App Shaadi on Mobile Shaadi Survey Single Social Soulmate study success story Survey Tips Traditional Trust Video Ways To Propose Wedding Women Wonderful


text:
More Topics
Creator's Hub
Collect Leads
Get Started
Tips & Tricks
For Business
Upcoming SlideShare
Loading in...
Like this document? Why not share!
Fle - Présentation
by roymickael
702 views
FLE - Sons Alphabet
by Nathalie Maguérès
1283 views
ABCD Open Source Software for manag...
by sangeetadhamdhere
326 views
Koha vs abcd
by Joel Nakitare
323 views
155414315 alter-ego-2-cahier-d-acti...
by Andreea Monacu St...
3383 views
Personalización del SIGB Koha para ...
by 4th International...
3551 views
Share SlideShare
Email sent successfully!
Size (px)
Start on
Show related SlideShares at end
WordPress Shortcode
Published on
Jan 04, 2010
Published in:
0 Comments
Full Name
Comment goes here.
12 hours ago
Are you sure you want to
Your message goes here
Be the first to comment
Be the first to like this
No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
No embeds
No notes for slide
Transcript of "abcd"
1. NHibernate explained Table of contents Disclaimer ........................................................................................................................................- 2 - Additional resources.........................................................................................................................- 3 - NHibernate by example....................................................................................................................- 4 - The scenario .................................................................................................................................- 5 - Mapping the schema.....................................................................................................................- 6 - Configuring the session factory..................................................................................................- 10 - Performing basic crud operations...............................................................................................- 11 - Querying data using ICriteria.....................................................................................................- 13 - ICriteria API short examples..................................................................................................- 13 - Using query by example (QBE) .............................................................................................- 15 - Querying for exactly the needed data.....................................................................................- 17 - Querying using IQuery...............................................................................................................- 17 - Performing queries .................................................................................................................- 17 - IQuery API short examples ....................................................................................................- 18 - Performance consideration.........................................................................................................- 20 - Mapping entities.....................................................................................................................- 20 - Loading data using ISession.Get or ICriteria .........................................................................- 21 - Loading data using IQuery.....................................................................................................- 21 - -1-
License Copyright © Dragos Nuta, 2005 This product is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. You should have received a copy of the GNU Lesser General Public License along with this product; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Disclaimer DOCUMENTATION IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENTATION IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENTATION IS WITH YOU. SHOULD ANY DOCUMENTATION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENTATION IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL WRITER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF DOCUMENTATION, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO THE USE OF THE DOCUMENTATION, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. -2-
Additional resources Resources for NHibernate 1.x and Hibernate 2.1: "Hibernate in Action" written by Christian Bauer and Gavin King (members of the Hibernate team) http://wiki.nhibernate.org/ www.nhibernate.org forum.hibernate.org http://wiki.nhibernate.org/display/NH/Documentation http://www.hibernate.org/hib_docs/reference/en/html/ -3-
NHibernate by example This chapter is a practical example of using NHibernate in an application. Here we will cover mappings, basic create/update/delete operations and querying with both IQuery and ICriteria. As a short description of the application, the application can manage a list of products together with their details (manufacturers, suppliers) and a simple sale system that can register sales of products for a date together with the quantity sold and its price. The entities in this application are: product - each product can be manufactured by one or many manufacturers manufacturer - a manufacturer can make one or more products supplier - each product is bought from only one supplier there is a special kind of supplier for which we have to save the address, this is called an important supplier and that database schema represents such a supplier within another table where only the address is saved. sale - is defined by the product being sold, the quantity, the price and sale date. Please note that the target of these samples is not to show how to build the best domain model out of this but to show as many kinds of approaches as possible, and than, build code to use these objects. In a real world example the mappings that we will use for this example may not suit the application needs. For example, on some associations we will not use lazy loading or with other we will use eager fetching (fetch=join), such decisions should be thoroughly analyzed before used like that as that affect the performance, the queries and others. -4-
The scenario The database schema The following schema represents the relational modeling of the previously described application. -5-
The class diagram There are some things to say about how this domain model is designed, one is that you will notice that each class has a specialized constructor with most of the properties. I consider this a good practice both in terms of code verbosity and because such constructors allow creating a reasonable well formed state of an entity. The purpose of overriding ToString method on each of the classes was to enable representation of an object as easy as possible for outputting data in the user interface. Of course that in a good design this should be localizable but it's not the case for this sample. Mapping the schema NOTE: In the following mappings all the properties have the types specified. This is not absolutely necessary because NHibernate detects the type using reflection but I consider it an improvement because it reduces the use of reflection. There are types that must be specifically set in the mappings, one of these are DateTime properties that can be: date, date and time, just time or timestamp, so here is the need to specify the type in the mapping. Also the type must be configured in the mapping when using custom types (such as the Nullable library that comes with NHibernate Contrib). In this example that mappings will be stored in assemblies by adding them in the project as "Build Action=Embedded Resource". You can also add the mappings at runtime to the configuration object by adding the assembly or assemblies containing mapping files. Other means of adding xml mappings to NHibernate will be presented later. -6-
The following snippets show the mapping used for each of the entities. Manufacturer.hbm.xml <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" auto-import="true" default- access="nosetter.camelcase"> <class name="OrderSystem.Objects.Manufacturer, OrderSystem.Objects" table="MANUFACTURER" lazy="true" mutable="true"> <id name="ManufacturerId" unsaved-value="0" column="ID_MANUFACTURER" type="System.Int32"> <generator class="hilo"/> </id> <set name="ProductSet" table="PRODUCT_X_MANUFACTURER" cascade="none" lazy="true" inverse="false"> <key column="FK_MANUFACTURER" /> <many-to-many class="OrderSystem.Objects.Product, OrderSystem.Objects" column="FK_PRODUCT" /> </set> <property name="Name" column="NAME" not-null="true" type="System.String" /> </class> </hibernate-mapping> The auto-import attribute set to true in the hibernate-mapping element tells NHibernate to treat entities as having unique names consequently in HQL queries only the name of the class can be specified. The class is mapped using assembly qualified name (type with namespace and assembly name) The persistent instance is lazy loaded (lazy=true) and it's mutable, meaning that insert/update on entities of this type is allowed and the session tracks changes in order to detect when an instance is dirty. If the type represents some built in system data that is not modified by the application, setting mutable=false can provide some optimization. Note that by default, NHibernate considers all classes to be mutable and also starting with v1.0.2 classes are lazy if not otherwise specified. The id is mapped using zero as unsaved value The many-to-many relation with the products is mapped using a set (Iesi.Collections.ISet). The set is configured as lazy and the inverse is set to false because this will be the updatable end while the other end of the relation will not be persistent directly. We configured the column in the many-to-many table that points back to the MANUFACTURER table using the key element. Also the content of the set is configured using the many-to-many element for which we specify the class that will be found at the other end (Product) and the column in the many-to-many table that points to the other end of the association. The name property uses the property element for mapping and here we specify the column name, the null/not null option and the type (not mandatory as stated before). Product.hbm.xml <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" auto-import="true" default- access="nosetter.camelcase"> <class name="OrderSystem.Objects.Product, OrderSystem.Objects" table="PRODUCT" lazy="true" mutable="true"> -7-
<id name="ProductId" unsaved-value="0" column="ID_PRODUCT" type="System.Int32"> <generator class="hilo"/> </id> <set name="ManufacturerSet" table="PRODUCT_X_MANUFACTURER" cascade="none" lazy="true" inverse="true"> <key column="FK_PRODUCT" /> <many-to-many class="OrderSystem.Objects.Manufacturer, OrderSystem.Objects" column="FK_MANUFACTURER" /> </set> <property name="Name" column="NAME" not-null="true" type="System.String" /> <many-to-one name="Supplier" column="FK_SUPPLIER" not-null="true" fetch="join" cascade="none" /> </class> </hibernate-mapping> This end of the many-to-many mapping is set as inverse=true so changes to this endpoint will not be persisted. Note that cascading is applied for this association end also, the inverse=true only affects if SQL statements will be generated for this association end point. The reference to the Supplier that sales this item is marks as fetch=join this way, when a Product instance is loaded the Supplier will also be loaded using a outer join statement if not otherwise specified (in the next part there will be examples that show how to change the fetch behavior using ICriteria and IQuery). Supplier.hbm.xml <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" auto-import="true" default- access="nosetter.camelcase"> <class name="OrderSystem.Objects.Supplier, OrderSystem.Objects" table="SUPPLIER" lazy="true" mutable="true"> <id name="SupplierId" unsaved-value="0" column="ID_SUPPLIER" type="System.Int32"> <generator class="hilo"/> </id> <bag name="ProductList" table="PRODUCT" cascade="none" fetch="join" inverse="true"> <key column="FK_SUPPLIER" /> <one-to-many class="OrderSystem.Objects.Product, OrderSystem.Objects" /> </bag> <property name="Name" column="NAME" not-null="true" type="System.String" /> </class> </hibernate-mapping> Here we use a bag to hold a list of instances of the Product type. The list is loaded using an outer join and is set as inverse=true so the end-point of the relation will not be updatable. A bag is a simple collection represented by an IList in the domain model that does not ensure the items in the collection are distinct. A reason for using bags in mappings is if we need an indexer in the collection. Another type that is also an IList in the domain model is list, the list being a special kind of mapping for which we can also specify what column will represent the indexer value. ImportantSupplier.hbm.xml <?xml version="1.0" encoding="utf-8"?> -8-
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" auto-import="true" default- access="nosetter.camelcase"> <joined-subclass name="OrderSystem.Objects.ImportantSupplier, OrderSystem.Objects" extends="OrderSystem.Objects.Supplier, OrderSystem.Objects" table="IMPORTANT_SUPPLIER" lazy="true"> <key column="ID_IMPORTANT_SUPPLIER" /> <property name="Address" column="ADDRESS" not-null="true" type="System.String" /> </joined-subclass> </hibernate-mapping> The object ImportantSupplier is mapped as a class inheriting from Supplier class. This is stated using the "extends" attribute from the joined-class element. This class is also marked as lazy=true. A condition for joined-subclass is that the base class and the derived one must have the same lazy state. In this case must be noted that we cannot perform a type-check on a proxy of the base class. For example if product has a lazy reference to supplier and the supplier is an ImportantSupplier the following assertion will fail: bool isImportant = typeof(product.Supplier) == typeof(ImportantSupplier); // product.Supplier will be a NHibernate Supplier proxy, inherited from Supplier // in order to be sure of the type either we perform an eager load on the Supplier property // or check like this isImportant = session.Load( typeof(Supplier), product.Supplier.SupplierId ) is ImportantSupplier; We configure the key column that points to the base class, this column will be used to join the SUPPLIER and the IMPORTANT_SUPPLIER tables. The ImportantSupplier class will inherit all the attributes of the Supplier base class. In addition the the Supplier class, the ImportantSupplier defines the Address property of type string. Sale.hbm.xml <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" auto-import="true" default- access="nosetter.camelcase"> <class name="OrderSystem.Objects.Sale, OrderSystem.Objects" table="SALE" lazy="true" mutable="true"> <id name="SaleId" unsaved-value="0" column="ID_SALE" type="System.Int32"> <generator class="hilo"/> </id> <property name="Price" column="PRICE" not-null="true" type="System.Decimal" /> <many-to-one name="Product" column="FK_PRODUCT" not-null="true" fetch="select" cascade="none" /> <property name="Quantity" column="QUANTITY" not-null="true" type="System.Decimal" /> <property name="SaleDate" column="SALE_DATE" not-null="true" type="System.DateTime" /> </class> </hibernate-mapping> This mapping has no new concepts different from the previous mappings. Although not provided by this example, the one-to-one mapping is similar to the many-to-one mapping with only some small changes, meaning that for the one-to-one mapping wee have a -9-
"constrained" attribute (boolean value) that if set to true will allow NHibernate to perform some loading optimizations. This attribute tells NHibernate if the relation always has an instance at the other end, this way there is no need to check at load time if the property is null or not. Otherwise, NHibernate has to check if there is something at the other end performing a separate select or a join because null cannot be wrapped within a proxy. The classes (business entities) The classes have no exotic form of some sort. These are all POCO (plain old C# objects) with no special base class whatsoever. Only the ImportantSupplier is inherited from the Supplier class because it was mapped that way. What should be noted here is that all properties that can be exposed as proxies are marked as virtual (eg. Product.Supplier or Product.ManufacturerSet). If the virtual is omitted you will not be able to use them as lazy instances. Also in general, all collections should be marked as virtual because NHibernate always replaces collections with a proxy I order to detect changes to such collections. The set collections are mapped as Iesi.Collections.ISet, the bag collections are mapped as System.Collections.IList). In the constructor the collections must be initialized (to System.Collections.ArrayList or Iesi.Collections.ListSet) in order to allow adding elements to newly created instances. Configuring the session factory class NHibernateSessionFactory { private static NHibernate.Cfg.Configuration cfg = null; private static NHibernate.ISessionFactory sessionFactory = null; static NHibernateSessionFactory() { cfg = new NHibernate.Cfg.Configuration(); // set provider & driver properties cfg.Properties.Add( "hibernate.connection.provider", "NHibernate.Connection.DriverConnectionProvider"); cfg.Properties.Add( "hibernate.connection.driver_class", "NHibernate.Driver.SqlClientDriver"); cfg.Properties.Add( "hibernate.dialect", "NHibernate.Dialect.MsSql2000Dialect"); cfg.Properties.Add( "hibernate.max_fetch_depth", "-1"); // allows for unlimited outer joins (recommeded value is maximum 4 cfg.Properties.Add( "hibernate.connection.connection_string", "Server=myserver;initial catalog=OrderSystem;User Id=sa;Password="); // here we add all the needed assemblies that contain mappings or objects - 10 -
cfg.AddAssembly(Assembly.LoadFrom("OrderSystem.Objects.dll")); //cfg.AddDirectory( new System.IO.DirectoryInfo(@"c:myprojectmappings") ); //cfg.AddFile(@"c:myprojectmappingssomeclass.hmb.xml"); //cfg.AddInputStream(new System.IO.StringReader("..xml goes here..")); sessionFactory = cfg.BuildSessionFactory(); } public static NHibernate.ISession OpenSession() { return sessionFactory.OpenSession(); } } This code is an example of a utility class creating the NHibernate configuration and session factory at startup. The code configures NHibernate to work on a Microsoft SQL Server database using the specified connection string and also adds all the objects and mappings defined in the current assembly. Some ways for adding mappings to the configuration are presented. Also keep in mind that all mappings can be modified in memory if necessary before building the session factory just after loading the mappings. Performing basic crud operations Adding data using cascades and the "transitive persistence using cascades" concept. public int SaveObjectAndReturnSupplier(bool makeImportant, int prodCount) { ISession session = NHibernateSessionFactory.OpenSession(); ITransaction transaction = session.BeginTransaction(); string timeStamp = DateTime.Now.ToString("yyyyMMdd-HHmmss"); // create important supplier Supplier s = makeImportant ? new ImportantSupplier("supplier " + timeStamp, "n/a") : new Supplier("supplier " + timeStamp); // create manufacturer Manufacturer m = new Manufacturer("manufacturer " + timeStamp); // create products and link to supplier for (int i = 0; i < prodCount; i++) { Product p = new Product(); p.Name = "product " + timeStamp; p.Supplier = s; s.ProductList.Add(p); // sync both ways m.ProductSet.Add(p); p.ManufacturerSet.Add(m); } try { Console.WriteLine("Saving changes..."); - 11 -
// all changes will be persisted because of cascades set to save-update or all session.Save(s); transaction.Commit(); Console.WriteLine("Save succeded"); } catch { transaction.Rollback(); Console.WriteLine("Save failed"); throw; } finally { session.Close(); } return s.SupplierId; } Example for listing information saved with previous example. public void ListSupplierProductsAndManufacturers(int supplierId) { Console.WriteLine("Loading results for supplier " + supplierId.ToString()); ISession session = NHibernateSessionFactory.OpenSession(); Supplier s = (Supplier)session.Get(typeof(Supplier), supplierId); Console.Write(s.Name + " is "); Console.WriteLine(s is ImportantSupplier ? "important" : "normal"); Console.WriteLine("Products..."); foreach(Product p in s.ProductList) { Console.WriteLine("t" + p.Name); foreach (Manufacturer m in p.ManufacturerSet) Console.WriteLine("tt" + m.Name); } session.Close(); } Example for adding sales for each product sold by a supplier. public void AddSaleForEachProduct(int supplierId) { ISession session = NHibernateSessionFactory.OpenSession(); Supplier s = (Supplier)session.Load(typeof(Supplier), supplierId); Console.WriteLine("Adding sales..."); foreach (Product p in s.ProductList) { Sale sale = new Sale(new Random().Next(), p, 1, DateTime.Now); session.Save(sale); } Console.WriteLine("Saving sales"); session.Flush(); } Calling the above functions CrudTest test = new CrudTest(); int suppId; suppId = test.SaveObjectAndReturnSupplier(true, 4); test.ListSupplierProductsAndManufacturers(suppId); - 12 -
suppId = test.SaveObjectAndReturnSupplier(false, 2); test.ListSupplierProductsAndManufacturers(suppId); test.AddSaleForEachProduct(suppId); Output on the console after using the above routines should be this: Saving changes... Save succeded Loading results for supplier 1998849 supplier 20060116-174034 is important Products... product 20060116-174034 manufacturer 20060116-174034 product 20060116-174034 manufacturer 20060116-174034 product 20060116-174034 manufacturer 20060116-174034 product 20060116-174034 manufacturer 20060116-174034 Saving changes... Save succeded Loading results for supplier 1998850 supplier 20060116-174035 is normal Products... product 20060116-174035 manufacturer 20060116-174035 product 20060116-174035 manufacturer 20060116-174035 Adding sales... Saving sales Querying data using ICriteria ICriteria API short examples The ICriteria is a powerful API that allows querying data but he following things describe the concept behind ICriteria: It allows querying of a single entity, using it you will always get a list of objects of a single persistent type. It allows adding conditional expression (for the where part of the query) in an object oriented manner using expression classes that are applied to the query. These expression support basic comparison (equal, not equal, greater, less, greater or equal, less or equal, in, null, not null, like), logical operators (conjunction, disjunction, not) and event plain SQL conditions. It can perform eager fetching or lazy fetching of associations, thus overriding the default behavior defined in the mappings. It allows creating conditional expressions on associations using CreateAlias or CreateCriteria but both of these methods imply an inner join. It has a limitation when using SetFetchMode and CreateAlias/CreateCriteria on an association path because an inner join is used to connect two end points of an association and so in a master- - 13 -
detail association only the masters that have details will be retrieved. This limitation can be worked around using SQL expressions. Below there are some examples of tasks that can be performed with an ICriteria: ISession session = NHibernateSessionFactory.OpenSession(); ICriteria criteria; IList result; criteria = session.CreateCriteria(typeof(Sale)); // adding where conditions criteria.Add(Expression.Or( Expression.Gt("Price", 40), Expression.Between("Quantity", 0, 5)) ); // adding where condition on associated classes using aliases criteria.CreateAlias("Product", "p") .Add(Expression.Like("p.Name", "product%")) .SetFetchMode("Product.Supplier", FetchMode.Select); // the result is => sales with price > 40 and qty between 0 and 5 where product name like 'product%' result = criteria.List(); The generated query is something like: SELECT this.ID_SALE as ID_SALE1_, this.FK_PRODUCT as FK_PRODUCT1_, this.PRICE as PRICE1_, this.QUANTITY as QUANTITY1_, this.SALE_DATE as SALE_DATE1_, p.ID_PRODUCT as ID_PRODUCT0_, p.FK_SUPPLIER as FK_SUPPL3_0_, p.NAME as NAME0_ FROM SALE this inner join PRODUCT p on this.FK_PRODUCT=p.ID_PRODUCT WHERE (this.PRICE > @p0 or this.QUANTITY between @p1 and @p2) and p.NAME like @p3 criteria = session.CreateCriteria(typeof(Sale)); // adding where condition on associated classes using sub-criterias ICriteria subCriteria = criteria .CreateCriteria("Product") .CreateCriteria("Supplier") .Add(Expression.Like("Name", "supplier%")); // force sale.Product.Supplier.ProductList to be left un-initialized criteria.SetFetchMode("Product.Supplier.ProductList", FetchMode.Select); // sorting result set criteria.AddOrder(NHibernate.Expression.Order.Asc("SaleDate")); - 14 -
//paging int currentPage = 0, pageSize = 5; criteria.SetFirstResult(currentPage * pageSize).SetMaxResults(pageSize); // locking results for upgrade criteria.SetLockMode(LockMode.Upgrade); // caching the entire result-set in the second level cache criteria.SetCacheable(true).SetCacheRegion("app_special_sales"); // sales with sale.Product.Supplier.Name like 'supplier%' without retrieving entire ProductList of a supplier // ordering by SaleDate. Retrieve 5 results starting from record 0 and lock the sales for upgrade result = criteria.List(); The generated query is something like: SELECT this.ID_SALE as ID_SALE1_, this.FK_PRODUCT as FK_PRODUCT1_, this.PRICE as PRICE1_, this.QUANTITY as QUANTITY1_, this.SALE_DATE as SALE_DATE1_, p.ID_PRODUCT as ID_PRODUCT0_, p.FK_SUPPLIER as FK_SUPPL3_0_, p.NAME as NAME0_ FROM SALE this inner join PRODUCT p on this.FK_PRODUCT=p.ID_PRODUCT WHERE (this.PRICE > @p0 or this.QUANTITY between @p1 and @p2) and p.NAME like @p3 Using query by example (QBE) ISession session = NHibernateSessionFactory.OpenSession(); ICriteria criteria; IList result = null; Product example = new Product(); example.Name = "product 20060116-174035"; // 2 results should match at this point NHibernate.Expression.Example queryEx = Example.Create(example).IgnoreCase(); // retrieves all products, because of fetch=join with the supplier the supplier will be fetched // in the same select, and also because supplier has the list of products mapped as // fetch=join, for each supplier all products will be retrieved criteria = session.CreateCriteria(typeof(Product)).Add(queryEx); result = criteria.List(); // count in this case is 4 (2 prod with 1 supp each, each supplier has 2 prod) // #1: using result transformer criteria = session.CreateCriteria(typeof(Product)).Add(queryEx) .SetResultTransformer(CriteriaUtil.DistinctRootEntity); result = criteria.List(); // 2 results // #2: disabling join fetching if we don't need the supplier criteria = session.CreateCriteria(typeof(Product)).Add(queryEx) .SetFetchMode("Supplier", FetchMode.Select); result = criteria.List(); // 2 results // #3: disabling fetching on product.Suplier.Products criteria = session.CreateCriteria(typeof(Product)).Add(queryEx) - 15 -
.SetFetchMode("Supplier.ProductList", FetchMode.Select); result = criteria.List(); Before considering this example I restate that this should be taken as is, changing mappings would prevent lots of the problems but what I want is to show is how NHibernate works. Also consider that fetching using join is also controlled by the max_fetch_depth parameter of the configuration. At some point in a query you may see that you have unexpected behavior but it may be the result of your configuration in most cases. Using query-by-example you can show a query the form of records you want to obtain and let NHibernate create the full parameterized query. In this example we are searching products having the name "product 20060116-174035". The example class also allows filtering string properties using LIKE, ignore case, exclude ad-hoc properties from search and much more. Look at NHibernate.Expressions.Example for more details. For the current mappings, when NHibernate creates the query it takes into consideration the fetch=join association and includes them in the select by default. This way, for the current test set, there are two products with this name, each of them has one supplier, each supplier having in turn two products. This will cause the first query to return four results, meaning each product twice. The approximate SQL generated is: FROM PRODUCT this left outer join SUPPLIER supplier1_ left outer join IMPORTANT_SUPPLIER [supplier1__1_] left outer join PRODUCT productlis2_ on supplier1_.ID_SUPPLIER=productlis2_.FK_SUPPLIER The first solution query shows how to obtain the correct result count using a query transformer with distinct root entity that will generate the same query as above; it will only be transformed after execution. Keep in mind that this is a solution only if we really want to have the supplier and all the products that the supplier sells. Otherwise this is just another ill query that for a large database will take forever to run for such a simple task. The second solution excludes the supplier from the query this way obtaining an SQL like: FROM PRODUCT this This is a solution if we don't need the information regarding the supplier because the supplier will be loaded as a proxy. If we need the supplier and take this approach we will get to the N+1 select problem because a query will be generated each time we first access a supplier proxy. The third solution is similar to the above but takes into consideration the case where we need the supplier data but we really don't need the whole list of products that each supplier sells. The query generated will be: FROM PRODUCT this left outer join SUPPLIER supplier1_ left outer join IMPORTANT_SUPPLIER [supplier1__1_] - 16 -
Querying for exactly the needed data Problem: get all sales to put in a grid, for each sale we need the product name to display it also. ISession session = NHibernateSessionFactory.OpenSession(); ICriteria criteria = null; IList result = null; string buffer = null; // approach #1: when querying products we will hit the N+1 select problem criteria = session.CreateCriteria(typeof(Sale)); result = criteria.List(); // because product.Supplier is mapped as fetch=join the select issued // for each product will join with the supplier table foreach (Sale s in result) buffer = s.Product.Name; // approach #2: get all sales with the product (no N+1 problem, also don't need supplier so don't get it) criteria = session.CreateCriteria(typeof(Sale)) .SetFetchMode("Product", FetchMode.Join) .SetFetchMode("Product.Supplier", FetchMode.Select); result = criteria.List(); foreach (Sale s in result) buffer = s.Product.Name; In the first approach we queried for all sales in the system. The foreach statement is supposed to force retrieval of product name. If you watch the SELECT statements issued by this we will get one select for all sales and one select for each product of each sale. Of course NHibernate will not retrieve twice the same product so for example if we have 3 sales of 2 products, 3 selects will be issued: one for the sales and two for the products. …FROM sale …FROM product WHERE id = 1 …FROM product WHERE id = 2 In the second approach we instruct NHibernate to include the product information in the criteria. The second line instructs NHibernate to perform a select on the supplier information for each product only when the supplier of the product is accessed (FetchMode.Select). If we would have removed the second fetch mode line, the select issued by the query would be of the following form: … FROM sale INNER JOIN product INNER JOIN supplier INNER JOIN important_supplier Because we don't need the supplier information we have managed to instruct NHibernate exactly the needed data. ...FROM sale INNER JOIN product We could have mapped the classes appropriately but for the sake of this discussion let's suppose that we had a very good reason for the current mappings. Querying using IQuery Performing queries HQL is similar in syntax with SQL but with some considerable differences: - 17 -
Allows OOP like full association traversal (eg. Order.OrderDetail.Product.Name="my product") but with some exceptions (traversing to a collection is allowed only with special functions elements or indices). Is case sensitive. Performs polymorphic queries (querying for Cat retrieve DomesticCat-s or WildCats-s if Cat is the abstract base class). Provides more search mechanisms. Can interpret constants and enumerations in the where clause (not in the select part). The join syntax is slightly different as with SQL - the join is made given an association path from the object to a member object or collection because NHibernate already knows the columns that define the association. It also borrows a lot from SQL: Has "select…from…where…group by…having…order by" syntax. Performs all type of joins (left outer, right outer, inner, full and cross join). Supports aggregate functions and all SQL expressions (eg. arithmetic operators, in, between exists, all). No parameter or one parameter functions (through query substitutions). IQuery API short examples The following code snippets show common tasks that can be accomplished using IQuery. As all previous examples this is the setup of the code samples: ISession session = NHibernateSessionFactory.OpenSession(); IQuery query; IList result = null; An important feature of HQL is that it allows referencing properties using association paths, in this example from the sale we got the product name using s.Product.Name. Also the sample shows how to add a simple like condition. The IQuery has multiple methods for setting parameters (named or unnamed), some with specific type or for collections for entities etc. The result of such a query is an IList containing strings as elements. If the select list contained more than one element (lets say we selecte the s.Date property also), the result would have been an IList, each element beeing in turn also an IList. This last list contains the selected row (a string and a date). As a rule, NHibernate returns IList of objects when only one element is selected otherwise returns IList of IList's. // traverse an association from many part to one part with pagination query = session.CreateQuery("select s.Product.Name from Sale s where s.Product.Name like :filterName"); query.SetString("filterName", "%"); query.SetFirstResult(5).SetMaxResults(10); result = query.List(); Association traversal is not allowed when the association path contains a reference to a collection. For traversing this kind of associations, an explicit join mode must be specified (outer, inner etc.). // traversing associated collections - 18 -
query = session.CreateQuery("select s.ProductList.Name from Supplier s"); result = query.List(); // exception because association path contains a collection query = session.CreateQuery("select p.Name from Supplier s inner join s.ProductList p"); result = query.List(); This code sample shows usage of the special HQL function elements. This function allows retrieval of all elements of a collection. Another special HQL function that applies to collections is size that allows retrieving the element count of a collection. A call to size will be translated into a subselect counting the collection elements. // get all elements of a collection query = session.CreateQuery( "select elements(m.ProductSet) from Manufacturer m where m.ManufacturerId = :id") .SetInt32("id", 2064385); result = query.List(); // using size to check collection count in HQL, retrieves sales of products with only one supplier query = session.CreateQuery("from Sale s where size(s.Product.ManufacturerSet) = 1"); result = query.List(); Another feature of NHibernate is how it handles the IN sql clause. You can map the content of an IN clause to a named paramter and initialize it with a collection. Be aware that setting the value of such a paramter to an empty collection will throw an exception on the database because empty IN sets are not accepted on any RDBMS // get all manufactureres whose products were sold query = session.CreateQuery( @"select distinct m.Name from Sale s inner join s.Product.ManufacturerSet m where s.Date in (:allowedDates) order by m.Name"); query.SetParameterList("allowedDate", new DateTime[] { new DateTime(2000, 01, 01), DateTime.Now.Date }); result = query.List(); All previous examples executed the query using the List method that returns an IList of objects that meet the seach criteria. Another option is to run the query using the UniqueResult. This is not equivalent to SQL TOP 1 statement because it retrieves the full result set and checks that it contains one or more instances of the same value or otherwise throws an exception. UniqueResult only applies to queries returning having a single element in the select list (entity or value, doesn't matter). // retrieving scalar value using UniqueResult query = session.CreateQuery("select max( s.Date ) from Sale s"); object uniqueResult = query.UniqueResult(); The eager fetching presented with the ICriteria query method is also present in HQL this time the sintax is inner join fetch to an association path. As a result of the folowing code snippet, the product will have the ManufacturerSet collection already initialized after running the query. // eager fetching associations query = session.CreateQuery("from Product p inner join fetch p.ManufacturerSet"); result = query.List(); - 19 -
All examples of HQL up the this one use query in-code statements. You can also store statements in NHibernate configuration file, key them and then retrieve them by key. For this you must add a line like <query name="suppliers">from Supplier</query> to one of your mapping files. // using named queries // <query name="suppliers">from Supplier</query> query = session.GetNamedQuery("suppliers"); result = query.List(); The code snippet bellow shows two new concepts. First concept is instructing the query to retrieve a list of objects of a custom type instead of the common IList mode using the select new statement. Classes that are used with this types of queries must be also declared in one of your mapping files using the syntax <import class="OrderSystem.Objects.ReportObjects.SaleDetails, OrderSystem.Objects"/>. After declaring the class in the mapping you can use it in such queries. Another new concept the snippet bellow is executing the query and obtaining an IEnumerable result. // using select new style queries query = session.CreateQuery( "select new SaleDetails(s.Product.Name, s.SaleDate, s.Price, s.Quantity) from Sale s"); IEnumerator enumerator = query.Enumerable().GetEnumerator(); while (enumerator.MoveNext()) { object item = enumerator.Current; } Performance consideration As any good thing, NHibernate comes with its drawbacks, and often there is the danger that all the great features (transitive persistence, dirty-tracking, lazy loading) that it has to offer turn in dangerous, un-optimized, bug-prone code. You can't talk about "the architecture" that you should use when using NHibernate because it depends on each situation, but you can surely talk about some guide-lines. General rule is keeping the sessions as short as possible. Reasons for this are that sessions imply connections to database, transactions and memory occupied by objects associated with the session. Mapping entities Almost always it's a good thing to start with everything being lazy (classes, collections) and then, by analyzing requirements, decide what should be eagerly fetched and what not. The mapping examples I showed in this examples were not provided as guidelines for mapping but merely as examples to work with when performing queries and a presentation of the variety of things that NHibernate provides. As it was presented in the previous code samples, eager fetching can be either a bless or a curse if not all aspects of the application are taken into consideration. For example the association between supplier and product in the above examples was setup as fetch=join, this way, transparently, each time we retrieved a supplier (by session load/get or by ICriteria) the entire list was loaded. This thing also happened each time we instructed a criteria to retrieve a supplier association eagerly. This could lead to both unexpected behavior (the results count is larger than expected because of the cartesian product) or not optimized queries that, at some point, will take forever to execute. - 20 -
Another thing is that start-up time can be improved if we provide as much information as possible so that Reflection use is minimized. Of course the configuration is usually loaded only once but with ASP.NET, if the process is restarted because of encountered problems or occupied memory, the configuration object will be lost and will be again recreated. Loading data using ISession.Get or ICriteria When loading instances they will be tracked down by the session for its entire life-cycle. So when loading large sets of data through these methods you have two large performance issues: Computing effort for checking dirty state for objects. Memory occupied by all those instances in the session pool. The first point can be tweaked either by evicting unnecessary objects from the session, or marking the classes as mutable="false" in the mappings. Further, evicting the objects from the session will cause another round-trip to the database if the entity will be requested again later (considering that it is much cheaper to keep instances in memory than to hit the DB). Marking classes as mutable="false" is not always possible, only hard-coded data that never changes can be defined this way because not insert/updates/delete will be possible on an instance of such a class. Another thing to tweak for ICriteria is the fetch mode for association. You can force retrieval of entire objects or force skipping retrieval for others using ICriteria.SetFetchMode. Be careful to the logic of such actions, because, for example, setting join fetch on Product.Sale without setting fetch join to Product will produce no result if product is not also fetched eagerly. And also SetFetchMode does not work on an association where CreateAlias or CreateCriteria is used. Also, consider that the cost of select by id is smaller than retrieving by using join, but on the other hand, executing N selects by id is more expensive then using one big select with join. When loading a Product for example, you can load the Supplier using a separate select but if you also want to access the sales is better to use join fetching on the original load or use a separate query to load all sales at once rather than allowing NHibernate to fetch each sale in turn. So in terms of database optimization, you should try to load exactly the amount of data needed as compact as possible but remember that join fetching is limited by the setting of the max_fetch_depth configuration variable. Loading data using IQuery IQuery has the advantage that it can retrieve just values so there is nothing to manage state for, and also, if needed you can cache results using the same syntax as with the ICriteria (SetCachable, SetCacheRegion) and so you can minimize round-trips to database when the results are needed more often. Another advantage of using IQuery to select just values instead of entities is that there is no danger that at some point, someone accesses some un-initialized collections that perform a lot of select statements in background. When using IQuery to load object graphs the same consideration for ICriteria must be taken into account. With regard to database optimization, it is a good practice to create queries that have a constant form. For example, we have to problem if retrieving all sales filtered by the name and/or by the price: - 21 -
ISession session = NHibernateSessionFactory.OpenSession(); int priceFilter = 0; string nameFilter = null; IQuery query = null; IList result = null; // solution #1 ArrayList filters = new ArrayList(); string statement = "select s.Product.Name, s.SaleDate, s.Price, s.Quantity from Sale s"; if (priceFilter != -1) filters.Add("s.Price > :priceFilter"); if (nameFilter != null) filters.Add("s.Product.Name like :nameFilter"); for (int i = 0; i < filters.Count; i++) { if (i == 0) statement += " where "; else statement += " and "; statement += (string)filters[i]; } query = session.CreateQuery(statement); if (priceFilter != -1) query.SetDecimal("priceFilter", priceFilter); if (nameFilter != null) query.SetString("nameFilter", nameFilter); result = query.List(); // solution #2 query = session.CreateQuery( @"select s.Product.Name, s.SaleDate, s.Price, s.Quantity from Sale s where (:priceFilter = -1 or s.Price > :priceFilter) and (:nameFilter is null or s.Product.Name = :nameFilter)"); query.SetDecimal("priceFilter", priceFilter); query.SetString("nameFilter", nameFilter); result = query.List(); The second solution may benefit if the database caches the execution plan and reuses it. - 22 -


text:
VANCOUVER, B.C. – Chris Higgins scored at 3:41 of overtime to give the Vancouver Canucks a 3-2 victory over the Phoenix Coyotes on Friday night.
Vancouver squeaked out the decision after squandering a 2-0 lead in the final 10 minutes of regulation.
The Canucks earned their fourth victory in five games while the Coyotes suffered their third loss in four outings.
Higgins scored after he kicked the puck away from Phoenix center Mike Ribeiro in the Vancouver zone and then raced down the left wing and beat Coyotes goaltender Mike Smith with a quick shot to the far side.
- Seattle police officer faces firing over arrest of man carrying a golf club
- Mariners' triple play hadn't been seen since 1955
- Man killed by escort had axes, shovel, bleach; may be linked to missing women
- True-crime author Ann Rule dies at age 83
- 5 things you should know about Microsoft's Windows 10
Most Read Stories
Canucks goalie Roberto Luongo made 37 saves for the victory and Smith stopped 29 shots.
Jason Garrison and Henrik Sedin also scored for Vancouver.
Antoine Vermette and David Moss responded with goals for the Coyotes.
The Coyotes rallied in the final 10 minutes of the third period after trailing 2-0 at the end of the second.
Both teams produced 10 shots in a scoreless first period.
Luongo stopped David Moss on a rush up the middle in the first five minutes, and Daniel Sedin almost scored while flat on his stomach near the Phoenix net.
Garrison opened the scoring on a power play at 1:26 of the second period as he wired in a slap shot from the point less than a minute after Oliver Ekman-Larson took a holding penalty.
Vancouver's power play has scored in seven consecutive games.
Sedin put the Canucks ahead 2-0 in the final minute of the second period. The play started as Ryan Stanton came out of the penalty box, snared the puck and launched a break with Daniel and Henrik Sedin.
Stanton sent the puck to Daniel Sedin, who set up his twin for a one-timer that beat Smith cleanly.


text:
Computer and Network Support Ticket, Chat, Phone, Social Agent
United States - Last active: 2 days ago - Tests: 9 - Portfolio: 1
Since before graduating high school, I have been involved in the technology field. My core competency is in problem-solving, staff training, and technical support, but as the sole contractor in many places, I have expanded into roles in Linux and Windows server Administration, IIS Services, C++ scripting, and Administrative support and budgeting. My professional work experience began as a jack-of-all-trades at the local library, and soon expanded to systems and network administration roles at libraries in nearby towns. I have recently received my B.A. in Business Information Systems, adding to my A.A.S in Microcomputer Support Specialist and A+ Certification.
- Network Administration
- Windows XP Administration
- Comptuer Maintenance
- Computer Networking
- Computer Repair
- Linux System Administration
- Network Security
- Technical Support
- chat support
- Phone Support
Groups: Pro Customer Service
Server Administrator, Automation, Script, C++, VC++, AutoIt, imacros
Bangladesh - Last active: 1 day ago - Tests: 10 - Portfolio: 2
Virtual Assistant, Programmer and Automator. Can do Ad posting and Lead Generation. I can make web bots, I have good experience in windows automation. I have worked with AutoIt, imacros, Sekuli, winautomation, autohotkey etc. I can fix any hardware, network and OS related problem of PC or Server. I have good experience in troubleshooting and virus removal. I have experience in web scraping too. I am a system administrator, I have good experience in Linux and Asterisk. I also want challenging Development and Programming position where i can apply my technical skills and experience to facilitate the success of complex and large project. I want established my self as a professional software developer and programmer, so that over last 8 years I have developed wide range of desktop application for my clients using VB, .NET, C#, C++, Delphi, MySql, Access.
- .NET Framework
- Microsoft Visual C++
- Microsoft Foundation Classes (MFC)
- Autoit
- Scripting
- Assembly Language
- Microsoft Access Administration
- Comptuer Maintenance
- Computer Repair
- Computer Networking
- chat support
- Technical Support
- virus removal
- Operating Systems Development
- Linux System Administration
- Visual Basic
- Network Planning
- Network Administration
- Microsoft Excel
- Microsoft PowerPoint
Associated with: Interwave
systems administrator
Ukraine - Last active: 1 month ago - Tests: 14
I'm looking for a remote fulltime job in these fields: 1. *nix/networks (little experience). Any price. 2. Technical support. 5-7$/hr. 3. QA (little experience). Any price.
- Windows Administration
- virus removal
- Windows XP Administration
- Network Administration
- Computer Networking
- Structured Cabling
- Autoit
- Technical Support
- Helpdesk
- System Automation
- Ubuntu
- FreeBSD
- phpMyAdmin
- Email Technical Support
- chat support
- Russian Language
- Ukrainian
Associated with: ServerIssues.com
Dominican Republic - Last active: 2 months ago - Tests: 4
I'm a programmer who loves everything about programming, I have experience with: C#, Visual Basic.net, Visual basic 6, c++, c, java, php, jquery etc, 3 years of experience working with c#, Visual Basic and Java. 2 Years of experience working with Qlikview 10 and 11.
Expert in dataentry/Article writing/wordpress/HTML/Proofreading
India - Last active: 10 days ago - Tests: 4 - Portfolio: 6
I'm a communicator, and the sincerity that emanates from what I say can be heard and felt. I have had extensive experience in dealing with customers and clients in various fields like retail, customer service, training, quality assurance, account management, and business development. English communication skills is my forte and I believe this is my ticket to accomplish tasks asked of me. Writing and speaking are both interests and talents. All the above, plus my good work ethic, will certainly appeal to people who would want detail and timeliness in the work they want done. i am an exceedingly hard-working and dedicated human being. Apart from this I am also versatile and love to handle new challenges that life throws at me. I have been a virtual assistant for five years already, and wit great success, which shows my dedication.
IT | Data Entry & Web Research Professional
Philippines - Last active: 15 days ago - Tests: 13 - Portfolio: 3
My objective is to obtain a career in the field of Information Technology that offers me an opportunity for career growth, where my skills are valued; and to give benefit to the company I serve.
- Data Entry
- Internet research
- WordPress
- Content Management
- Microsoft Word
- Microsoft Excel
- Spreadsheets
- Adobe Acrobat
- Transcription
- Microsoft Publisher
- PhotoScape
- Adobe Photoshop
- Photo Editing
- MySQL Administration
- PostgreSQL Administration
- Joomla!
- Microsoft Outlook Development
- Microsoft PowerPoint
- Ulead VideoStudio
- Adobe Fireworks
- Visual Basic
- Java
- Email Marketing
- Data Analytics
- Data Encoding
- Database Administration
- Database design
- Yahoo! Messenger
- Google Docs
- Google search
- Google Spreadsheets
- report writing
- Accounting
- Quantitative Analysis
- Real Estate IDX
- Teaching Mathematics
- Translation English Filipino
- Customer service
- Translation Filipino English
- Email Handling
- Ad Posting
- Virtual Assistant
- Administrative Support
- Directory Submission
- chat support
- Skype
- Zen Cart
- OpenCart
- Video editing
- Social Media Marketing
- Zendesk
- PDF Conversion
- Adobe PDF
System Integration Advisor
Romania - Last active: 2 months ago - Tests: 4
I have worked for different companies where I gained my experience on different platforms now have a specific set of skills. Also, thanks to my pursued university, Polytechnics Bucharest, I have a good base in C/C++ and other programming languages.
Global Recruiting and Knowledge Management
Philippines - Last active: 3 days ago - Tests: 6
I have 4 years of experience focused on senior-level, multi-skill customer service and technical support roles handling and utilizing various communication channels such inbound and outbound phone calls, fax, emails and chats to ensure customer satisfaction. I've worked in banking, travel and tech industries. I am a problem solver. I never ran out of creative ideas. I pay a lot of attention to details. I am an effective communicator. I am friendly, supportive and proactive leader and teammate! CUSTOMER SERVICE EXPERIENCE Technical Support for Linksys Router Linksys is one of the most popular internet router for home and small office. Responsibilities: ▪ Provided phone technical support for US and Canada end-users. The calls are a mix of non-technical customers such as household members as well as technical experts such as IT personnels of small to mid-size companies. Highlights: ✓ I was one of the two highest ranking trainees in a batch of 80 new hires. I accumulated enough score to be exempted for the final evaluation. Travel eRep for expedia.com Expedia is a leading online travel agency. It was owned by Microsoft at the time. Responsibilities: ▪ Processed travel reservations such as Flights, Hotels, Cars and Activities ▪ Coordinated and negotiated with the airlines, hotels, car rental companies, and attraction & events companies to make sure customers get the best travel experience ▪ Utilized inbound and outbound calls, fax and email to communicate with customers and business partners Highlights: ✓ Was regularized with "AA" grade ✓ Maintained 100% Customer Satisfaction grade ✓ Was the highest ranking trainee in a batch of 80 new hires ✓ Was awarded Mentor's Choice upon training completion Processing Executive for HSBC HSBC Data Processing Phils. is the in-house BPO subsidiary of the financial giant HSBC. Responsibilities: ▪ Answered inbound customer calls from the bank's North American credit card holders ▪ Updated customer account information, processed payments, assisted customers in processing balance transfers and sold various type of relevant products such as identity theft protection and different types of insurance Highlights: ✓ Awarded "Site Highest Sales Transfers" for the month of September 2005 ✓ Awarded the Certificate of Excellence for Perfect Attendance
Sales Order,Eazybi, Link Builder ,Logistic, Product Assistant
Philippines - Last active: 9 days ago - Tests: 4 - Portfolio: 1
Over the last 5 years, I have developed a strong experience with all aspects of time management on being virtual assistant. My core competency lies in complete end-end tasks in providing quality time management, and I am seeking opportunities to be able to provide a good service for your business. I also have some experience in the following areas: Data Entry, Web Research, Exposure in Logistics, Link Builder , Wordpress , EDI user, Sales Order, Master Data Management. My main objective is to provide work with 100% accuracy. In addition, I would also like to be of help to those who need help to get job done in a well-timed manner yet with accurate details.
Customer Support - Chat / Email / Ticket Support - Technical Support
India - Last active: 2 days ago - Tests: 7 - Portfolio: 13
Excellent verbal & written English. Unique combination of skill-sets. Fast learner. Virtualization. VirtualBox. Mailserver setup. Translation (English, Marathi, Hindi & Gujarati). Basic WordPress setup; password recovery & MU setup. Basic Joomla setup & password recovery. Data entry. Video editor. Audio editor. Photo editor. Vector tracing. Map creation. Visualizer. Trainer. Documentation. I have practiced all skills that are in my profile. My best skills: 1. Troubleshooting of problems with computer hardware & networking: I am comfortable using Windows and Linux both as a desktop operating system as well as a troubleshooting tool. I can troubleshoot and resolve virus & spyware related problems; plus a lot of other issues that are related to hardware & software. 2. Video Editing: I do wedding videos. Where I tend to use effects and tricks suitable for weddings. Some of the skills involved are Adding music; Retaining original sound; Enhancing original sound and making it suitable to listen; Add/create titles with effects using AfterEffects; Making slideshows from pictures and videos; Making DVDs with customized menus; and many more. 3. Photo Editing: Again, though I primarily do wedding pictures, I have skills like Removing background; Adding custom background; Make-up effects for faces; Color correction; Black&White to Color; and other relevant things. 4. Typing, Documentation & Translation: I have been an expert in Microsoft Word and also have worked with Adobe InDesign. I can do all tasks that you could do in Microsoft Word for a good formatting. InDesign has more options for flexibility when preparing documents such as portfolios, manuals, brochures, etc. I also do translation (English, Hindi, Gujarati). See my portfolio for examples. 5. Vector Graphics: I have been using Adobe Illustrator since quite some time now. I am learning to achieve expertise in it, so I often use the Internet to learn whenever I am stuck. Being a fast learner enables me to learn things fast as well as also add my own ideas.


text:
Coming up in the next {{countdown}} {{countdownlbl}}
Coming up next:
Skip to this video now
Now Playing:
Related Videos
Now Playing: {{itm.title}}
Play Video
This transcript has been automatically generated and may not be 100% accurate.
Oscar Pistorius Sickened by Crime Scene Photos Shown in Court
Oscar Pistorius driven to vomit after photos of girlfriend's bloody face are shown in court.
Grisly Crime Scene Photos Shown in Pistorius Trial
Oscar Pistorius will testify, could be first defense witness called to "set the tone" for rest of trial.
Now Playing: Oscar Pistorius Sickened by Crime Scene Photos Shown in Court
Now Playing: Grisly Crime Scene Photos Shown in Pistorius Trial
Now Playing: Oscar Pistorius Trial: Forensics Take Center Stage
Now Playing: Chinese Woman Saves Child Before Dying in Escalator Accident
Now Playing: Search Continues for Teen Boaters Missing off Florida's Coast, President Obama Makes Historic A Visit To Ethiopia, Wildfires Rage In California
Now Playing: US, Turkey Planning 'Islamic State-Free Zone'
Now Playing: President Obama Wades into GOP Politics From Abroad
Now Playing: President Obama in Africa
Now Playing: President Obama Addresses Terrorism and Gay Rights and on His Trip to Kenya
Now Playing: Admiral Jim Stavridis on the Fight to Beat ISIS
Now Playing: Turkey's Joins Offensive Against ISIS
Now Playing: Loretta Lynch: ISIS a Serious if Not More Serious Threat Than Al-Qaeda
Now Playing: Surfer's Heartfelt Return to the Water After Shark Attack
Now Playing: Mysterious Crop Circles Re-Appear in Russian Field
Now Playing: Flags Lowered To Honor Chattanooga Victims, Sen. Graham's Cell Phone Number Revealed, Gov. .John Kasich Announces His Presidential Bid
Now Playing: Beluga Whale Hoses Down Visitors at Japanese Aquarium
Now Playing: Are the French Actually Rude? Stereotype Put to the Test
Now Playing: Surfer Returns Home After Shark Attack in South African Waters
Now Playing: Cuban Foreign Minister On Whether Castro Will Visit U.S.: 'I'm Sure, But I Don't Know When'
Now Playing: Cop Goes Undercover in Wheelchair to Catch Thieves, Finds Kindness Instead
Now Playing: Security Reacts Quickly as FIFA's Sepp Blatter Approached by Demonstrator
Now Playing: Cuba, US Officially Restore Diplomatic Relations


text:
Blue Monogram
Wayf top, Ace Delivery skirt, c/o BaubleBar monogram necklace, Jack Rogers sandals, c/o Brandy Pham bracelet This summer we've travelled everywhere from Sicily to Montauk to Bermuda. Last week we hit one more destination with a trip to Los Angeles for a family reunion and one of my college friend's weddings. A fun fact about me is that I went to college in LA and lived in … Read the post >>


text:
Written on: 11/06/2013
I have booked with weekender breaks at least 4 times now.
Their team is efficient and very prompt at answering any queries. A bit surprised with some negative review below.
So far so good I am happy with their service and will be certainly using them again for city breaks in the future.
Written on: 29/07/2013
Dear Customer,
Thank you for choosing Weekender Breaks for your recent booking.
We appreciate your comments, and the time you have taken to post your feedback and were delighted to hear that you had a great holiday.
Many Thanks,
Weekender Customer Service
As rated by our community of reviewers
" Paris 4 days with disneyland " Read More
" Always available to help. Have become my first port of call. " Read More
Written by AlexMcL
" Great! " Read More
" Every thing was good " Read More
" Great customer service " Read More


text:
NYWC 2012 Dallas- A Ministry of Understanding: Utilizing Research to Grow and Deepen Your Youth Ministry
By Dean Borgman
YS Price: $6.00
- Retail Price: $6.00 (You Save 0%)
A Ministry of Understanding: Utilizing Research to Grow and Deepen Your Youth Ministry
Youth workers across the globe are often struggling to keep up with the issues and demands of ministering to the young. Culture moves quickly; urban, suburban, and rural contexts require new understandings as communities change; and new problems require quick thinking. The Center For Youth Studies has compiled more than 300 topics in an Encyclopedia of Youth Studies, researched, written, and produced by youth workers like you, who are passionate about reaching every new generation. We will spend time in this seminar speaking to the importance of good research in effective ministry and show how the Encyclopedia can be used for growing your own understanding of issues for proper action, as well as for training your team to meet the challenges you are facing together.
Finding Faith in the Dark
Laurie Polich
NYWC 2015 Louisville Intensive- Understanding, Analyzing, Responding To and Using Youth Culture in Ministry
Dan Kimball
NYWC 2015 San Diego Intensive- Awkward Bible Moments: Preparing Youth for Tough Theological Challenges to the Bible
Dan Kimball
Help! My Kids are Hurting
Marv Penner
Can I Ask That 2 Student's Guide
Jim Candy, Kara Powell, Brad Griffin
Can I Ask That 2 Leader's Guide
Kara Powell, Brad Griffin, Jim Candy


text:
Growing Up WILD with Your Family
Date: 02/04/2012
Time: 01:00 pm - 05:00 pm
WhereMorrison Nature Center 16002 E Smith Rd. Aurora, Colorado, United States
This activity filled workshop designed to help kids explore nature is for parents, caregivers and ... Read More >>
This activity filled workshop designed to help kids explore nature is for parents, caregivers and others who live or work with children ages 3-7. Participants receive a free "Growing Up WILD" guidebook (a $25 value). $20 fee due the day of program.
Registration required. Adults only. Hide
Registration required. Adults only. Hide
More Events Like This:
Recently Posted Articles
Watermelon Kebobs Recipe: An easy, fast, no-mess meal for lunch boxes or snacks on-the-go. >>
Watermelon Lemonade Cream Pie Recipe: Use a delicious, nutritious melon for a savory lunchbox >>
Vista Verde Family Vacation: Mountains of Hospitality: From day-long backcountry excursions to >>
Tough Little Mudders: Kids emerge from mud pits messy, and a little more confident, in this >>
Updated Shops & Services
Jack & Jill Children's Salon: Jack & Jill Children's Salon is the only a full-service salon >>
Craig Johlfs, CMFC, Financial Advisor: Craig Johlfs and his team are committed to providing the >>
St. Luke's Little School: St. Luke's Little School is an amazing hands-on Christian preschool >>


text:
SAndp500 Financials
Like this page on Facebook for updates
The Week Ahead: City eager to weigh up strength of Mitie
Monday 12 August 2013
Anthony Hilton: These numbers don't add up to a recession
Saturday 20 July 2013
The unemployment figures came out on Thursday and showed a better-than-expected improvement, with the rate now the lowest since December 2010.
US economy boosted by 200,000 new jobs
Saturday 06 July 2013
Figures for June show positive signs for recovery as Dow Jones leaps in response
Glencore chief strengthens board
Thursday 13 June 2013
Glencore Xstrata's chief executive, Ivan Glasenberg, has announced three new appointments to the board of the wheat trading-to-coal mining empire, including the veteran Wall Street banker John Mack.
When the Money Runs Out, By Stephen D King. Yale, £20. The Growth Map, By Jim O'Neill. Portfolio Penguin, £10.99
Tuesday 04 June 2013
We call it globalisation and it is one of the two great economic stories of our time: that shift of economic power from the old developed world to the new emerging one. The other story is the nasty economic cycle we have just experienced. The two stories are linked because the failures of Western economic management that exacerbated the last recession have sped up the power shift.
Markets set for sterling sell-off after AAA setback for Britain
Monday 25 February 2013
Analysts expect pound to weaken against dollar and euro in response to Moody's decision
Google to pay Apple $1bn next year to be default search engine on iOS
Tuesday 12 February 2013
Technology website Tech Crunch is reporting that Google will pay Apple at least $1bn (£629m) next year to be the default iOS search engine.
Struggling Man Group hires KPMG to review its governance
Sunday 10 February 2013
Man Group, the troubled hedge fund that started life supplying rum to the Royal Navy in the 1780s, has asked KPMG to sort out its governance after a shareholder revolt last year.
New City jobs treble, but it's still a long way from boom
Monday 04 February 2013
The number of new City jobs trebled last month but only against December's count which was the lowest since the financial crisis began in 2008.
Banks pitch for broker role with North Sea oil explorer Cairn Energy
Sunday 09 December 2012
Goldman Sachs and JP Morgan are among the big names pitching for a key advisory role with Cairn Energy, the Edinburgh-based group that explores for oil from the North Sea to Kathmandu.
Simon Calder's Holiday Helpdesk: Out-of-towners seeking advice on Euro exchange deals
Thursday 08 November 2012
Every day our travel guru answers your travel questions
Satyajit Das: No easy solution as America sinks ever deeper into the debt mire
Wednesday 31 October 2012
Midweek View: The United States is not only not saving nuts, it's eating the ones left over from the last winter
The Business Matrix: Friday 26 October 2012
Friday 26 October 2012
Santander loses £52m from bid
The Business Matrix: Thursday 25 October 2012
Thursday 25 October 2012
Admiralty Arch in £60m hotel deal
Morgan Stanley beats forecasts
Friday 19 October 2012
The US investment bank Morgan Stanley swung to a $1bn (£620m) loss over the third quarter – but beat market hopes with earnings that rose on the back of strong revenues from its bond-trading business.
Yvette Cooper: Our choice is years of Tory rule under Jeremy Corbyn – or a return to a Labour government
Is Britain really full up? Are migrants taking our jobs? Leading academic answers the most common anti-immigration claims
Calais Migrant Crisis: Deputy Mayor of Calais labels Cameron's use of 'swarm' as 'racist' and 'ignorant'
Chris Leslie: Jeremy Corbyn's anti-austerity agenda will harm the poor, says Labour shadow Chancellor
While we fixate on Calais, the Home Office is quietly deporting dozens of migrants on 'ghost flights'
Calais crisis: The seven claims made about the migrants - and the reality
- 1 Artist Jamie McCartney: How The Great Wall of Vagina is a stand against 'body fascism'
- 2 Katie Hopkins reveals fear she will die during brain surgery to cure epilepsy
- 3 Tom Cruise: Reporters banned from asking actor about Scientology
- 4 Dutch King Willem-Alexander declares the end of the welfare state
- 5 Michael B Jordan and Kate Mara handle excruciatingly awkward and offensive interview questions like pros


text:
Sister's Summer School Catechism: Nun's New Adventure
* Additional fees apply. No coupon or promo codes necessary to enjoy the displayed discount price.
The last date listed for Sister's Summer School Catechism was Sunday July 21, 2013 / 2:00pm.
Most Popular Theater Event Nearby
Fiddler on the Roof: Beloved Musical Celebrates Life's Traditions
- Full Price:
- $56.00
- Our Price:
- $30.00
Let your spirit soar as you get swept away by one of the most beloved musicals of all time with this… More
Venue Details
Reviews & Ratings
Featured review from Goldstar Member
view more less of this review
I thoroughly enjoyed Sister's Summer School Catechism. I didn't think it was quite as funny as Midnight Catechism but was still laugh-out-loud funny. Some of the funniest things come from the audience so every performance is different. I plan on going again tomorrow.
star this review starred report as inappropriate
My friend and I were in the front row, dead center. Sister was absolutely hysterical.
We laughed from the moment we sat down until the end. I got picked on twice and almost
half the audience got called on and the answers to Sister's questions...continued
About the Ticket Supplier: Eisemann Center Presents
Conveniently located in the Galatyn Park Urban Center in the heart of Richardson's business and technology area, the Charles W. Eisemann Center for Performing Arts and Corporate Presentations is an important component of the cultural and corporate landscapes of the North Texas region.


text:
game loads down and to the left,,,,updated everthing,,,,,,cant play any help with half a screen and it wont let me change setting,,,,
Threats of violence. We take these seriously and will alert the proper authorities.
Posts containing personal information about other players. This includes physical addresses, e-mail addresses, phone numbers, and inappropriate photos and/or videos.
Harassing or discriminatory language. This will not be tolerated.


text:
StyleWatchI Really Love My: Jennifer Lopez's Luxe Purse & More!
Check out Jennifer Lopez's favorite designer bag, Emma Roberts's cheetah-print sneakers and more styles stars can't get enough of – then shop the look for less!
More from PEOPLE
Latest News!
- Caitlyn Jenner Steps Out for Lunch With Pal Candis Cayne
- Read the Cover Story: Inside Blake & Miranda's Shocking Split
- Woman Born Without Arms Tells 3-Year-Old With Same Condition,'You Can Do Anything' (Video)
- Kelsea Ballerini Talks Ultimate Jam Session with Taylor Swift: 'I Was on Cloud 900'
- Khloé Kardashian on Why She Lives with Rob: 'I Wouldn't Have It Any Other Way'


text:
Casey Anthony Won't Accept Probation, Begins Appeal
Casey Anthony's lawyers are appealing the judge's ruling that she has to serve one year of probation in Florida for check fraud. They want her to have full credit of the probation being completed while she was behind bars, which pretty much defies the definition of probation.
This post was created by a user and has not been vetted or endorsed by BuzzFeed's editorial staff. BuzzFeed Community is a place where anyone can post awesome lists and creations. Learn more or post your buzz!
Preview Your Response
Here Are The Top Stories
- The family of Sandra Bland, who died in a Texas jail cell in July three days after she was detained during a traffic stop, filed a wrongful death lawsuit in federal court.
- Migrant deaths in the Mediterranean have exceeded 2,000, making 2015 the deadliest year for people trying to reach Europe, according to the International Organization for Migration.
- Fox News has announced the 10 Republican candidates who will participate in the first debate of the 2016 U.S. presidential race on Thursday.