text:
1. Re: AOP in jboss AS 7Kabir Khan Jul 22, 2011 8:17 AM (in response to Nagin Kothari)
JBoss AOP is not part of AS 7. The main reason for having it in previous AS releases was for our EJB container, however in AS 7 a different mechanism is used. The AOP project has not been under active development for > 2 years, and getting it to work with the modular classloading setup in AS 7 will not be an easy task. So, there are no plans to include it in AS 7.
2. Re: AOP in jboss AS 7Nagin Kothari Jul 22, 2011 9:22 AM (in response to Kabir Khan)
We have developed some AOP interceptor around jboss 4.2 & jboss 6 in our application on the client as well as server interceptor stack. Now if we want to move jboss 7 then then How do I migrate those interceptor to new AS 7?
3. Re: AOP in jboss AS 7jaikiran pai Jul 25, 2011 5:50 AM (in response to Nagin Kothari)
The server side interceptor can be changed to a EJB3 spec interceptor instead of AOP. As for the client side interceptor, there won't be AOP style interceptor stack for AS7 so that's going to change.
4. Re: AOP in jboss AS 7klkoster Nov 10, 2011 2:09 PM (in response to jaikiran pai)
Just read this thread and am curious as to what mechanism will be used (if any) to replace the AOP interceptor stack on the client. I have a problem similar to Nagin's, where a token needs to get passed from the client to the server on every call.
5. Re: AOP in jboss AS 7andreicd Jan 23, 2012 4:51 AM (in response to Nagin Kothari)
I have also ecountered the same problem while migrating to jboss 7 ... i was wandering if you found any solution to this problem ... client side interceptors
6. Re: AOP in jboss AS 7Andro Oba Apr 20, 2012 9:00 PM (in response to Kabir Khan)
With JBoss 7, if I have a simple POJO (not an EJB3) and I want to apply an interceptor how I will do it with the new modular classloading of AS 7?
Thanks in advance.
7. Re: AOP in jboss AS 7kkkppp Apr 1, 2013 12:25 AM (in response to Andro Oba)
It seems that old aop libraries still work, the problem is that aopc'd classes are not properly deployed. To work around this you may try -Djboss.aop.path=<your aop config> to deploy them manually


text:
The week's Top Ten best political quotes:
"One problem we're trying to solve is the high cost of health care in America. And I'm pleased that in our quest to reform the health care system, I have gained the support of the American Medical Association. It proves true the old expression that it's easier to catch flies with honey. And if honey doesn't work, feel free to use an open palm and a swift, downward wrist motion." - President Barack Obama, referring to his fly-swatting skills at Friday's Radio & Television Correspondents' Association Dinner.
"I'm kind of itchy here on Friday, I would love to take somebody's phone." - White House Press Secretary Robert Gibbs, threatening reporters who don't turn their cell phones to "vibrate" during briefings.
"I have some really great interns that want to relocate to another office. If you have anything or know of someone who does, please let me know" - An email from Jessica Walton, intern coordinator for Nevada Sen. John Ensign, in the wake of Ensign's admission that he had an affair.
"What else does he have?" - Tank Jones, manager of one-time Bristol Palin boyfriend Levi Johnston, explaining to People magazine why his client should get into acting.
"As you know, there's nothing members of Congress like more than Lady Gaga"- CNN's Anderson Cooper
"I'm excited to meet the president." - One-time Miss California USA Carrie Prejean, at Friday's RTCA dinner.
"Quit apologizing and never call me anything but Elizabeth again. Also, make sure you correct anyone who attempts to call me by any other name but Elizabeth. Are we clear on this? Like I said, it's a hot button for me." - Elizabeth "Liz" Becton, a scheduler for Rep. Jim McDermott, making herself clear - and her name forever muddied - in an email to a PR flak.
"Do me a favor: Could you say 'senator' instead of 'ma'am?' It's just a thing, I worked so hard to get that title, so I'd appreciate it, yes, thank you." - Sen. Barbara Boxer, addressing Brig. Gen. Michael Walsh during his testimony on Capitol Hill this week.
"omg, my Dad's voice messages crack me up 'Meghan! Meghan! Give me a call! I Love You - This is your Dad, OK, Love You, Call me Bye'" - Meghan McCain, Twittering
"So close to 1,000,000 followers. Help put me over the top." - Al Gore, Twittering

subset: commoncrawl


text:
Going Green
It IS easy being green especially if you are the Sonoran Desert. We at the Adobe Rose support the one of a kind ecosystem found here in the Tucson region by being green and encouraging our guests to follow our example. Here's how we do it.
- We ask our guests to let us know when they would like their linens changed and washed.
- Our cleaning products are non-toxic, non-irritating, hypoallergenic, biodegradable, plant derived, made with non-animal ingredients, and are not tested on animals.
- Our floors, both wood and ceramic, are steam cleaned, eliminating the need for chemicals that could transfer to guests' feet.
- The Gilchrist & Soames® soaps and shampoos in guest rooms are a combination luxury and environmental responsibility. Best yet, along with the eco-friendly packaging and product formulas, proceeds of the net sales of BeekindT support honey bee and sustainable pollination research at the University of California Davis.
- In the fall and winter months, our pool may be chilly because it is heated by the rays of the sun alone. In the summer months, our hot tub is drained and closed.
- We harvest rain water and use grey water when appropriate to water our cactus gardens.
- Our living room is illuminated with solar tubes during the day.
- We use CFL light bulbs where possible.
- We recycle as much as possible. Even our gently used soaps and shampoos are recycled to Mexico with the help of a local charity.
- As a company, we have had an energy audit to help us plan our future capital expenditures.


text:
Message Board
Ellis Vidler Message Board
Talk about the novels, new and used books that Vidler has written!
Author Vidler's Book Reviews
Haunting Refrain
Silver Dagger, June 2002, 23.95, 184 pp. ISBN 1570721744 To please her friend, Kate McGuire agrees to partake in a parapsychology study at the local university in the Piedmont area of South Carolina. Nobody is more shocked than Kate is when she touches a headband and receives visions of a woman being strangled by a powerful man. The professor conducting the study tells her that the headband belongs to a woman that has been missing for a few days...


text:
lunarkid2 necesitaba un nuevo diseño de logotipo y lanzó un concurso de diseño en 99designs.
Un ganador ha sido elegido entre 82 diseños de 32 diseñadores freelance.
Dusty Dawgs
We manufacture dog boxes for ATV use. The boxes are made to fit different makes of ATV and allow pets to ride safely and comfortably on the ATV.
The boxes have a drop-gate in the back to allow for easy loading and can also be used to carry cargo.
Our target audience is outdoor ATV enthusiasts and dog lovers. Weekend campers, Farmers, Ranchers etc.
We are looking for something to use in print, web, trailer wraps and on the product itself.
4 or fewer colors as we will be screen printing this on the product.
Simple and Crisp, including "Dusty Dawgs" with earth tones. We're looking for something that is friendly but not too cutesy or silly.
The following are examples of styles we like:
Here are some photos of the product:
Ideally, something landscape, approximately the ratio of a bumper sticker would fit best on the product itself, however please don't be limited by this.
Please don't feel restricted by these instructions, we're open to any concepts & ideas.
We're very excited and will give quick feedback.
Descubre cómo funciona un concurso de diseño u obtén más información sobre nuestros servicios de diseño de logo.


text:
Silver Orb Ring Rose Quartz (P)
Silver Orb Ring Rose Quartz (P)
Select your size Size Guide
Product : Great quality ,beautiful gift ,well price
- Tracked delivery to home or work, direct from the designer.
- Customs fees may apply for international delivery - see FAQs for details.
- Free returns within 14 days, collection arranged by us.
- Price match guarantee
- If you find an item cheaper elsewhere we will match the price*.
- See FAQs or Contact Us for full details.
View More ORA PearlsRings
Meet The Designer
ORA was created by pearl specialist and jewellery designer Bibi Southwell, who has spent over a decade sourcing and developing relationships with pearl farming communities and gem suppliers all over the world. Bibi's vision is to bring new life to the way pearls have been traditionally worn with fresh and fashion-forward designs and branding at affordable prices. Her delicate and simple designs enhance the innate beauty and timeless character of nature's most natural gem. Bibi is qualified with the Gemological Institute of America (GIA) and hand selects the pearls herself at the sources ensuring the finest quality and contributing more directly to the pearl communities. All jewellery pieces are designed and handmade by the designer in her studio in Chelsea, London


text:
Pete Mazzaccaro
It must have taken a lot of courage just to come to work. I know if I had been forced to the floor of my office, a gun pointed at me with the promise "I'll shoot you," I'm not sure I'd be able to return to work all too quickly.
As I stood in the small single-room quarters of the Delphine Gallery last Friday, talking to Vickie Spangler as she recalled the scary events of the day before, I was struck by how calm and cool she seemed.
She recalled the details of what had happened to her less than 24 hours before (see the full story, page 1), interrupted only by other shopkeepers who came to check in on her and offer words of support. Her business partner Deborah Weiner was in the shop as well, helping Spangler account for all that had been taken.
But there might not have been a real way to reach that figure. Sure, they'll eventually get a good idea of just how much the stolen jewelry was worth, but there will be no way to account for the lost sense of security.
"I never thought this would happen to us here," Spangler told me.
Now she'll never feel that way again. Nor will other small shop owners who keep the same 9 to 5 hours on a crowded street that would never seem the likely scene of a daylight holdup (though Spangler is not the first shopkeeper to be robbed at gunpoint during the day in Chestnut Hill).
Spangler's actions – just coming in to work the next day – are remarkable. She said she was shaken, but it was barely apparent in her manner Friday morning. Without hesitation, too, she talked about what she thought Chestnut Hill needed to deal with crime on Germantown Avenue and off.
On one hand, she said she'd love to know there's more police protection. Of course, police can't be everywhere, but there's no way more police wouldn't help. In this instance, the bike officers were looking for the robber within five minutes. Spangler said more police arrived within 10 minutes.
She also said that people need to look out for one another. And in some ways that seemed to happen. Spangler recounted how several people in the area stood up and did pretty brave things, people whose names we don't know.
One man who saw the robbery end from his car on Germantown Avenue, followed the robber around the block to take down the license plate of the getaway vehicle.
Another woman on the corner who saw the man running away, quickly called police. And four young girls who were sitting on a nearby bench on Germantown Avenue rushed into the gallery to help Spangler after they saw the robber run from the shop.
It's good to know that there are plenty of people in the neighborhood who rose to the occasion and came to Spangler's aid.
There's no way to prevent crime from happening. Eventually another shop in Chestnut Hill will be robbed. If and when that happens,everyone needs to be ready to stand up and help, as many people did last Thursday when this happened.
It doesn't take force to stand up to crime. Just vigilance. We don't need to stop enjoying the Avenue, but we can all do ourselves a great service by looking out for one another.


text:
"I'm very against the grain," says 41-year-old violist and composer Eyvind Kang, sipping homemade soup in the sunny living room of the Wallingford home he shares with his wife and sometime collaborator, vocalist Jessika Kenney.
Certainly no one who knows Kang's music would dispute that, especially if they saw Kang playing his "10th NADE" while rollerblading in a skirt at Bumbershoot in the mid-'90s — or heard his scary improvisational trio Chunky Wedgies.
But there is something quieter and calmer about Kang these days. His most recent high-profile Seattle appearance was a meditative, Zen-like piece of performance art called "Time Medicine" at the Frye Art Museum that, while in no way mainstream — musicians including Native American flutist and singer Paul Wagner played in different rooms and at one point played the music in reverse — felt a world away from his past as an "enfant terrible." And while Kang can still create abrasive, cacophonous orchestral noises for large ensemble, he's just as likely to be studying traditional music with a master in some remote part of the globe.
"I don't think I've mellowed," Kang says. "But I feel more rooted. That doesn't take anything away from my process — to be polite and show respect to elders. But I still don't feel obliged to accept rules."
Most Read Entertainment Stories
- 'Super Troopers' stars set their new firefighter comedy, 'Tacoma FD,' in our region. Why?
- ZooTunes summer concert lineup 2019 taking shape
- Big names and aspirations come with 5th Avenue Theatre's Broadway-bound musical 'Marie, Dancing Still' VIEW
- Seattle Opera to become 1 of only 2 big opera companies in the U.S. led by a woman
- 'Gloria Bell' review: Julianne Moore gives a quietly shining performance WATCH
Indeed, Kang, whom performance artist Laurie Anderson enthusiastically describes as "a brilliant, brilliant musician," is still about subversion, but it's more obvious now that he's also building something. A Seattleite since 1991, Kang has played on more than 50 albums, toured with Anderson, Beck and Seattle guitarist Bill Frisell, and is known all over the world by pockets of like-minded souls, whether they play jazz, rock, electronic, experimental, folk, "world" or classical music.
Raised in Canada and Iceland, Kang, like so many of the Emerald City's generative young artists, is an outlier, and a habitual traveler determined to find, through music, spiritual sustenance in a broken world. A voracious scholar who might mention Paracelsus in one breath and Prince in the next, Kang considers his project nothing less than the redefinition of music itself.
"He's a real intellectual, the real thing," says Seattle jazz trumpeter and composer Jim Knapp, whose compositions are the focus of the string ensemble Scrape, which Kang co-founded.
That Kang would have multicultural interests is no surprise. He was born in 1971 in Corvallis, Ore., to the now-prominent Icelandic-Canadian author, Kristjana Gunnars, who was then a student at Oregon State University. Kang moved the following year to Toronto, where his Korean-Canadian father, who would eventually work for the progressive New Democratic Party, pursued a Ph.D. His parents' 1980 separation and their peripatetic careers took Kang on a childhood odyssey that included a stint in Regina (where he started Suzuki violin lessons at age 6), two years in Iceland, teenage time in Winnipeg and, finally, two years at the University of Alberta, in Edmonton.
"I always felt like I was trying to understand the place where we lived," says Kang, "I felt like an immigrant."
With his outsider's perspective, it's no wonder he was drawn to an indigenous point of view. Edward Said's book "Orientalism," among other texts, along with generous helpings of non-European music, eventually led Kang to see classical music as a sort of Western propaganda. Subsequent conversations in Yelm with Washington state Native American activist Janet McCloud, whose "fish-ins" led to the 1974 Boldt Decision that restored Indian treaty rights, reinforced this view.
"Where are we living?" asks Kang, whose gentle but steady speech has something of a Native American cadence about it. "What's this place made out of? … It takes a long time to reconstruct, which is a process of decolonizing the mind."
Remarkably, says Kang, African-American jazz musicians have managed to do exactly that.
"How could you recover Africa within a European instrument — the double bass?" he asks. "But they did it, intuitively."
Kang came to Cornish College in 1991 to study jazz, after meeting Frisell in Edmonton. The great jazz violinist Michael White ultimately became Kang's teacher. White made him see, says Kang, that music wasn't about recordings but "people passing on culture."
That holistic point of view has informed everything Kang has done since graduating in '93. His work is astonishingly wide-ranging. Last year's "A Narrow Garden" (Ipecac) featured 30 musicians playing songs inspired by the 11th-12th century troubadour poet Guilhem IX. Written on Vashon Island, the music includes sounds of nature and wooden flutes, pastoral passages for bassoon, Middle Eastern drums and scales, children's voices, processional vocals and bells ringing, all of which evoke the feeling of a Sunday stroll through the Middle Ages.
Kang studied the Persian stringed instrument, the setar, with Hossein Omoumi (who taught at the University of Washington). "A Narrow Garden" reflects Kang's discovery of the historical connections between European, Persian and Armenian poetic traditions of courtly love.
But the intellectual background isn't essential to appreciating Kang's music, which is keenly emotional, and, observes Frisell, eerily "alchemical."
"He's got this just incredible gift for immediately knowing what the center of the music is," says the guitarist. "I've grown to count on him."
Kang's third instrumental focus after the viola and setar is an Indonesian plucked zither called the kecapi, which he studied in West Java, while Kenney worked with the late Sundanese vocal master Ibu Euis Komaria. The two recently collaborated on a haunting album, "The Face of the Earth" (Ideologic Organ), released on vinyl and featuring songs based on prayer, riddles and poems of romantic love, one by the 12th-13th century Persian poet and mystic, the Divan of Attar. Kang's first album review ever in The New York Times described the disc as "gorgeous" and "serious, refined music."
Kang has a seemingly insatiable appetite for musical knowledge. When he played in Anderson's band for the world premiere of "Delusion," in Vancouver, Canada, Anderson recalls that between rehearsals Kang would run back to his dressing room to practice.
"This is the picture of I have of him — running towards music — and loving it so much that he can't bear to be away from it one second longer."
Kang sees his quest as a lifelong conversation.
"It's like math," he says. "Somebody asks a question and the answer comes in 500 or 1,000 years. We're still having a dialogue with Pythagoras — you know?"
The math connection isn't coincidental. Kang's piece at the Frye was a riff on the way composers traditionally divide time into neat time signatures — three-four, four-four, five-four, etc.
"My experience of time is that it's not a linear experience at all," says Kang. "Because it's consciousness, experience, and the inner experience is mixed with the outer. Or memory. Or dreams."
Kang originally thought to call the piece "time signature," but when he pondered how fragmented and isolated people are, he decided what was really needed was "time medicine."
"Once," he recalls, "when I was taking leave of Janet McCloud's place, I said, 'Thank you … and she said, 'For sharing time?' Those are exactly the terms I'm working with now. Sharing time. I want to share time with musicians and with people that listen."
Paul de Barros: email@example.com or 206-464-3247


text:
Fall 2010
Moral Skepticism, Religious Fanaticism, and Just War
Dr. Hawk will talk about the implicit and explicit denial of objective moral standards. He will define the beliefs, explore their popularity, suggest who benefits from them, draw attention to what mystifies them, and draw out implications for practical ethics
Tuesday, September 14,
Moral Psychology: Everything Old is New Again
The antiquated debate between "rationalists" and "sentimentalists" has been revived with the recent experimental results falling in favor of the "sentimentalists". Is morality more like math or more like beauty? Do we place morality and ethics in the realm of logical progression or more in the realm of emotional response? Dr. Dwyer will present a brief summary of the debate and argue for a difficult account of moral judgement known as "linguistic analogy"
Tuesday, October 12
The Untold War: The Guilt They Carry
How do you deal with knowing that you have killed? "I was just doing my job, protecting freedom and liberty, but that doesn't erase the fact that I took a life." Dr. Sherman's study and work identified the deep and unspoken moral weight of war and the moral burdens on the battlefield. understanding the complexity of battlefield guilt is critical not just for soldiers but for the public that sends its soldiers to war.
Thursday, November 4


text:
Models of Human Sentence Comprehension in Computational Psycholinguistics
John Hale
Computational models of human sentence comprehension help researchers reason about how grammar might actually be used in the understanding process. Taking a cognitivist approach, this article relates computational psycholinguistics to neighboring fields (such as linguistics), surveys important precedents, and catalogs open problems.
Ferdinand de Saussure
John E. Joseph
Ferdinand de Saussure (1857–1913), the founding figure of modern linguistics, made his mark on the field with a book he published a month after his 21st birthday, in which he proposed a radical rethinking of the original system of vowels in Proto-Indo-European. A year later, he submitted his doctoral thesis on a morpho-syntactic topic, the genitive absolute in Sanskrit, to the University of Leipzig. He went to Paris intending to do a second, French doctorate, but instead he was given responsibility for courses on Gothic and Old High Gerrman at the École Pratique des Hautes Études, and for managing the publications of the Société de Linguistique de Paris. He abandoned more than one large publication project of his own during the decade he spent in Paris. In 1891 he returned to his native Geneva, where the University created a chair in Sanskrit and the history and comparison of languages for him. He produced some significant work on Lithuanian during this period, connected to his early book on the Indo-European vowel system, and yielding Saussure's Law, concerning the placement of stress in Lithuanian. He undertook writing projects about the general nature of language, but again abandoned them. In 1907, 1908–1909, and 1910–1911, he gave three courses in general linguistics at the University of Geneva, in which he developed an approach to languages as systems of signs, each sign consisting of a signifier (sound pattern) and a signified (concept), both of them mental rather than physical in nature, and conjoined arbitrarily and inseparably. The socially shared language system, or langue, makes possible the production and comprehension of parole, utterances, by individual speakers and hearers. Each signifier and signified is a value generated by its difference from all the other signifiers or signifieds with which it coexists on an associative (or paradigmatic) axis, and affected as well by its syntagmatic axis. Shortly after Saussure's death at 55, two of his colleagues, Bally and Sechehaye, gathered together students' notes from the three courses, as well as manuscript notes by Saussure, and from them constructed the Cours de linguistique générale, published in 1916. Over the course of the next several decades, this book became the basis for the structuralist approach, initially within linguistics, and later adapted to other fields. Saussure left behind a large quantity of manuscript material that has gradually been published over the last few decades, and continues to be published, shedding new light on his thought.
William Labov
Matthew J. Gordon
William Labov (b. 1927) is an American linguist who pioneered the study of variationist sociolinguistics. Born and raised in northern New Jersey, Labov studied English and philosophy at Harvard University (BA, 1948) and worked as an industrial chemist for several years before entering graduate school in linguistics at Columbia University in 1961. He completed his PhD in 1964, under the direction of Uriel Weinreich. He worked at Columbia until 1971, when he joined the faculty of the University of Pennsylvania, where he taught until his retirement in 2014.
Labov's influence on the field began with research he conducted in graduate school. His study of changing pronunciations on Martha's Vineyard, the subject of his master's thesis, introduced a method for observing sound change in progress and broke with tradition by exploring social motivations for linguistic innovations. For his PhD dissertation, Labov carried out a study of dialect patterns on the Lower East Side of New York City. Using a systematic, quantitative methodology, he demonstrated that linguistic variation is socially stratified, such that the use of pronunciation features (e.g., dropping of post-vocalic /r/) correlates with social class, ethnicity, etc. in regular patterns. Labov's early research was greatly influential and inspired many scholars to carry out similar projects in other communities. The paradigm came to be known as variationist sociolinguistics.
Much of Labov's scholarship seeks to advance our understanding of language change. Historical linguists traditionally study completed linguistic changes, often long after they occurred, but Labov developed a method for examining active changes through a quantitative comparison of speakers representing several generations. This approach produces a new perspective on the change process by revealing intermediate stages. Labov has brought insights from this research to bear on theoretical debates within historical linguistics and the field more broadly. His work in this area has also documented many active sound changes in American English. Among these changes are innovations underway in particular dialects, such as the vowel changes in Philadelphia, as well as broader regional patterns, such as the Northern Cities Shift heard in the Great Lakes states.
Throughout his career, social justice concerns have fueled Labov's research. He has sought to demonstrate that the speech of stigmatized groups is as systematic and rule-governed as any other. He led a pioneering study in Harlem in the late 1960s that shone new light on African American English, demonstrating, for example, that grammatical usages like the deletion of the copula (e.g., He fast) are subject to regular constraints. Labov has served as an expert witness in court and before the U.S. Congress to share insights from his study of African American English. He has also worked to promote literacy for speakers of non-standard dialects, carrying out research on reading and developing material for the teaching of reading to these populations.
Franz Rainer
Blocking can be defined as the non-occurrence of some linguistic form, whose existence could be expected on general grounds, due to the existence of a rival form. *Oxes, for example, is blocked by oxen, *stealer by thief. Although blocking is closely associated with morphology, in reality the competing "forms" can not only be morphemes or words, but can also be syntactic units. In German, for example, the compound Rotwein 'red wine' blocks the phrasal unit *roter Wein (in the relevant sense), just as the phrasal unit rote Rübe 'beetroot; lit. red beet' blocks the compound *Rotrübe. In these examples, one crucial factor determining blocking is synonymy; speakers apparently have a deep-rooted presumption against synonyms. Whether homonymy can also lead to a similar avoidance strategy, is still controversial. But even if homonymy blocking exists, it certainly is much less systematic than synonymy blocking.
In all the examples mentioned above, it is a word stored in the mental lexicon that blocks a rival formation. However, besides such cases of lexical blocking, one can observe blocking among productive patterns. Dutch has three suffixes for deriving agent nouns from verbal bases, -er, -der, and -aar. Of these three suffixes, the first one is the default choice, while -der and -aar are chosen in very specific phonological environments: as Geert Booij describes in The Morphology of Dutch (2002), "the suffix -aar occurs after stems ending in a coronal sonorant consonant preceded by schwa, and -der occurs after stems ending in /r/" (p. 122). Contrary to lexical blocking, the effect of this kind of pattern blocking does not depend on words stored in the mental lexicon and their token frequency but on abstract features (in the case at hand, phonological features).
Blocking was first recognized by the Indian grammarian Pāṇini in the 5th or 4th century


text:
To be honest, I have never really been much of one for galas. But times are changing and there are two characteristics of this year's Earth Day Canada Gala that I think you guys might find interesting.
First off, the year-old Mill Street Beer Hall is the venue again this year. It's a huge space that is made up of smaller areas, including plenty of the requisite patio square footage, so it seems ideal for large-scale events. (more…)


text: University of Birmingham and Qatar In 'Qatar' University of Birmingham and QatarBirmingham alumni activities in QatarScholarships for students from QatarStudent life at Birmingham Back to 'Your country information' The University of Birmingham welcomes applications from students from Qatar. A growing number of Qatari students are studying undergraduate and postgraduate programmes at Birmingham in a range of disciplines. Want to study in Dubai? Register for our open day The student experience Find out about student life and how to get involved in the student community to make the most of your time here. Scholarships Find out more about scholarships and financial support. Entry requirements The following information is for guidance only and should be used together with the University's general entrance requirements and any specific degree programme requirements. Foundation Pathways Students who have a B grade average in the Qatar Secondary School Certificate, to include Grade B in Advanced Level Mathematics for our Engineering and Physical Sciences pathway. Or, average of 85% in the Thanawiyan Mustaqala (Secondary School Leaving Certificate), to include 85% in Mathematics for our Engineering and Physical Sciences pathway, will normally be considered for entry to the Foundation Programme before progressing to their chosen undergraduate degree programme. For further information see the Birmingham International Academy website. Undergraduate The University will consider students who have taken GCE A Level examinations, the International Baccalaureate (IB), or a suitable foundation programme, such as the Birmingham International Academy, for entrance to undergraduate programmes. Postgraduate Holders of a good honours degree from a recognised university with a GPA of 3.0/4.0 or 75%, will usually be considered for postgraduate study at the University of Birmingham. PhD applications will be considered on an individual basis. English Language You may be required to provide evidence of your English ability. Please view the entry requirements for specific programme requirements. How to applyInterested in applying? Find out more about how to apply for undergraduate and postgraduate study at the University of Birmingham by watching our video above! AccommodationFind out more about student accommodation. The University has a wide variety of accommodation to suit every need making Birmingham feel like a home away from home. Alumni in QatarThe University has many strong alumni groups all over the world. Find out more about Birmingham alumni activities in Qatar by clicking on the picture above. Our students from the Middle East tell you more about what it is like to study at the University of Birmingham! Contact us There are various ways to contact us, whether you need support with your application, information on living and studying in Birmingham, or visa and immigration advice. Birmingham representatives in Qatar The University of Birmingham contact for Qatar is Catherine Yates. To contact Catherine with your questions, please email firstname.lastname@example.com or 'Like' our Middle East Facebook page IDP based in Dubai and Abui Dhabi in the UAE can assist students from Qatar with their applications to Birmingham and in applying for a visa. IDP Education DubaiOffice No.104,Centry Plaza Building.Jumeirah 1, P.O. Box 50085 Dubai, UAE.Tel: +971 4 344 6814Fax: +971 4344 6817Email: email@example.com: www.middleeast.idp.comIDP Education Abu Dhabi1802 Union National Bank Building.Airport Road (Corniche Side)P.O. Box 32919Abu Dhabi, UAE.Tel: +971 2 622 8367 / +971 2 622 8368Fax: +971 2 622 8369Email: firstname.lastname@example.com: www.middleeast.idp.comGobal Connections based in Amman, Jordan can also assist students from Qatar with their applications to Birmingham and in applying for a visa. Global Connections P.O. Box 1115Amman 11821JordanTel: +962 779729665 / +962 779729668Email: email@example.com: www.gconnections.eu The British Council The British Council has offices in many countries throughout the world which are able to provide you with advice about studying in the UK. Most offices also have an education library and internet facilities where you can consult university material. The British Council can also provide advice about funding opportunities. The Postgraduate Recruitment team, academic staff and current students represent the University at study and careers fairs across the UK and the EU. Find full details of our next postgraduate visits. For all international visits please check our events page. EventsRSS FeedAtom Feed There are no results that match your criteria.


text:
The Manchester Ship Canal part 03
Composer: Kay, R H
Medium: Lithograph, coloured
Date: 1883
The Manchester Ship Canal was one of the greatest engineering projects of the Victorian period, with 5 sets of massive locks, 7 swing road bridges, 5 high level railway viaducts and the famous swing aquaduct at Barton. It made Manchester one of the major ports of the world, contributing considerably to the prosperity of the area. Music Hall songs celebrated success like this and helped to make people proud of their achievements, illustrating how important their work was to the future of the nation.


text:
Yes, The DMCA Is Still Quite Controversial
from the anti-circumvention? deptMichael Scott points us to an interesting blog post by law professor Tim Armstrong wondering if the DMCA is still controversial, noting that while many of the biggest fears associated with the DMCA when it was first passed did, in fact, come true, many of them were cut back by court decisions that limited the interpretations of the DMCA away from the most dangerous ones.
Dire predictions followed about how the DMCA would restrict fair use, distort competition, erode privacy, and jeopardize academic research. In the early years of the statute's existence, these predictions appeared to be fully justified: the DMCA was invoked to attack a DVD player for the Linux operating system; to imprison a Russian programmer transiently present in the United States based on conduct that was lawful in Russia where it occurred, and to harass and threaten an American computer scientist in an attempt to deter him from publishing his academic research, among other things. Cases like these appeared to substantiate the view that the DMCA had fundamentally upset the historical balance between the rights of owners and the rights of users of copyrighted works.He notes some more recent court cases, and the fact that the Library of Congress is finally approving consumer-friendly DMCA exemptions.
I can't help noticing, however, that since the high-water mark of 2001 or thereabouts, the progression of developments under the DMCA has almost uniformly been in the direction of recognizing greater rights for users and fewer rights for copyright owners. The courts have been rebuffing efforts to use the DMCA as a tool to impede competition, and content producers seem to be relying less and less on the types of DRM technologies that were at issue in the early wave of cases.
I don't buy it, however. There is still plenty that is highly controversial about the DMCA, and the fact that producers are relying less and less on DRM doesn't fix the massive problems that the law has created with its anti-circumvention provisions, that still make perfectly non-infringing activities illegal for no good reason at all. Separately, there's a rather important lawsuit going on right now questioning the limits of the DMCA's safe harbors, which could have tremendous chilling effects on internet services if the district court's ruling is not upheld. And while it may be amusing that some of the DMCA's biggest supporters are now complaining about the aspects they don't like, that doesn't make the overall law any less controversial for those who feel that it has always been a massive and dangerous overreach.
Unfortunately, it does seem like most people have accepted that the DMCA will not be fixed any time soon, but to claim that things are fine and dandy since we avoided the worst of the worst, seems to miss out on many of the ongoing concerns.


text:
dirtgoat needed a new logo design and created a contest on 99designs.
A winner was selected from 79 designs submitted by 14 freelance designers.
We are Australia's number 1 mountainboard distributor/retailer. Supplying the best quality boards and accessories since 1999.
We are the Australian distributer of Ground Industries Mountainboards.
Our customers are generally the type who look for something more challenging and extreme in a sport or pastime. Usually in the 10-30 year old. Often we are a crossover sport for skateboarders and snowboarders down hills and over jumps, but boards are also very popular inconjuction with a kite for landboarding.
Needs to read mountainboards.com.au in the font.
Graphic element could incorporate a picture of a rider, board or both whether it be in its original form or abstract. As a background to the wording.
No defined colours but must work with any background.
Logo will be used for web, print and other media.
Lots of examples of our products and what we do can be found of the following sites-
Find out how a design contest works or learn more about our logo design services.


text:
Getting Started with Doctrine¶
This guide covers getting started with the Doctrine ORM. After working through the guide you should know:
- How to install and configure Doctrine by connecting it to a database
- Mapping PHP objects to database tables
- Generating a database schema from PHP objects
- Using the
EntityManagerto insert, update, delete and find objects in the database.
Guide Assumptions¶
This guide is designed for beginners that haven't worked with Doctrine ORM before. There are some prerequesites for the tutorial that have to be installed:
- PHP 5.4 or above
- Composer Package Manager (Install Composer)
The code of this tutorial is available on Github.
This tutorial assumes you work with Doctrine 2.4 and above. Some of the code will not work with lower versions.
What is Doctrine?¶
Doctrine 2 is an object-relational mapper (ORM) for PHP 5.4+ that provides transparent persistence for PHP objects. It uses the Data Mapper pattern at the heart, aiming for a complete separation of your domain/business logic from the persistence in a relational database management system.
The benefit of Doctrine for the programmer is the ability to focus on the object-oriented business logic and worry about persistence only as a secondary problem. This doesn't mean persistence is downplayed by Doctrine 2, however it is our belief that there are considerable benefits for object-oriented programming if persistence and entities are kept separated.
What are Entities?¶
Entities are PHP Objects that can be identified over many requests by a unique identifier or primary key. These classes don't need to extend any abstract base class or interface. An entity class must not be final or contain final methods. Additionally it must not implement clone nor wakeup or do so safely.
An entity contains persistable properties. A persistable property is an instance variable of the entity that is saved into and retrieved from the database by Doctrine's data mapping capabilities.
An Example Model: Bug Tracker¶
For this Getting Started Guide for Doctrine we will implement the Bug Tracker domain model from the Zend_Db_Table documentation. Reading their documentation we can extract the requirements:
- A Bug has a description, creation date, status, reporter and engineer
- A Bug can occur on different Products (platforms)
- A Product has a name.
- Bug reporters and engineers are both Users of the system.
- A User can create new Bugs.
- The assigned engineer can close a Bug.
- A User can see all his reported or assigned Bugs.
- Bugs can be paginated through a list-view.
Project Setup¶
Create a new empty folder for this tutorial project, for example
doctrine2-tutorial and create a new file
composer.json with
the following contents:
"require": {
"doctrine/orm": "2.4.*",
"symfony/yaml": "2.*"
"autoload": {
"psr-0": {"": "src/"}
Install Doctrine using the Composer Dependency Management tool, by calling:
$ composer install
This will install the packages Doctrine Common, Doctrine DBAL, Doctrine ORM, Symfony YAML and Symfony Console into the vendor directory. The Symfony dependencies are not required by Doctrine but will be used in this tutorial.
Add the following directories:
|-- config
| |-- xml
| `-- yaml
`-- src
Obtaining the EntityManager¶
Doctrine's public interface is the EntityManager, it provides the access point to the complete lifecycle management of your entities and transforms entities from and back to persistence. You have to configure and create it to use your entities with Doctrine 2. I will show the configuration steps and then discuss them step by step:
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once "vendor/autoload.php";
// Create a simple "default" Doctrine ORM configuration for Annotations
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode);
// or if you prefer yaml or XML
//$config = Setup::createXMLMetadataConfiguration(array(__DIR__."/config/xml"), $isDevMode);
//$config = Setup::createYAMLMetadataConfiguration(array(__DIR__."/config/yaml"), $isDevMode);
// database configuration parameters
$conn = array(
'driver' => 'pdo_sqlite',
'path' => __DIR__ . '/db.sqlite',
// obtaining the entity manager
$entityManager = EntityManager::create($conn, $config);
The first require statement sets up the autoloading capabilities of Doctrine using the Composer autoload.
The second block consists of the instantiation of the ORM
Configuration object using the Setup helper. It assumes a bunch
of defaults that you don't have to bother about for now. You can
read up on the configuration details in the
reference chapter on configuration.
The third block shows the configuration options required to connect to a database, in my case a file-based sqlite database. All the configuration options for all the shipped drivers are given in the DBAL Configuration section of the manual.
The last block shows how the
EntityManager is obtained from a
factory method.
Generating the Database Schema¶
Now that we have defined the Metadata mappings and bootstrapped the EntityManager we want to generate the relational database schema from it. Doctrine has a Command-Line Interface that allows you to access the SchemaTool, a component that generates the required tables to work with the metadata.
For the command-line tool to work a cli-config.php file has to be present in the project root directory, where you will execute the doctrine command. Its a fairly simple file:
// cli-config.php
require_once "bootstrap.php";
return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager);
You can then change into your project directory and call the Doctrine command-line tool:
$ cd project/
$ vendor/bin/doctrine orm:schema-tool:create
At this point no entity metadata exists in src so you will see a message like "No Metadata Classes to process." Don't worry, we'll create a Product entity and corresponding metadata in the next section.
You should be aware that during the development process you'll periodically need to update your database schema to be in sync with your Entities metadata.
You can easily recreate the database:
$ vendor/bin/doctrine orm:schema-tool:drop --force
$ vendor/bin/doctrine orm:schema-tool:create
Or use the update functionality:
$ vendor/bin/doctrine orm:schema-tool:update --force
The updating of databases uses a Diff Algorithm for a given
Database Schema, a cornerstone of the
Doctrine\DBAL package,
which can even be used without the Doctrine ORM package.
Starting with the Product¶
We start with the simplest entity, the Product. Create a
src/Product.php file to contain the
entity definition:
// src/Product.php
class Product
* @var int
protected $id;
* @var string
protected $name;
public function getId()
return $this->id;
public function getName()
return $this->name;
public function setName($name)
$this->name = $name;
Note that all fields are set to protected (not public) with a
mutator (getter and setter) defined for every field except $id.
The use of mutators allows Doctrine to hook into calls which
manipulate the entities in ways that it could not if you just
directly set the values with
entity#field = foo;
The id field has no setter since, generally speaking, your code should not set this value since it represents a database id value. (Note that Doctrine itself can still set the value using the Reflection API instead of a defined setter function)
The next step for persistence with Doctrine is to describe the
structure of the
Product entity to Doctrine using a metadata
language. The metadata language describes how entities, their
properties and references should be persisted and what constraints
should be applied to them.
Metadata for entities are configured using a XML, YAML or Docblock Annotations. This Getting Started Guide will show the mappings for all Mapping Drivers. References in the text will be made to the XML mapping.
<?php // src/Product.php /** * @Entity @Table(name="products") **/ class Product { /** @Id @Column(type="integer") @GeneratedValue **/ protected $id; /** @Column(type="string") **/ protected $name; // .. (other code) }
<!-- config/xml/Product.dcm.xml --> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd"> <entity name="Product" table="products"> <id name="id" type="integer"> <generator strategy="AUTO" /> </id> <field name="name" type="string" /> </entity> </doctrine-mapping>
# config/yaml/Product.dcm.yml Product: type: entity table: products id: id: type: integer generator: strategy: AUTO fields: name: type: string
The top-level
entity definition tag specifies information about
the class and table-name. The primitive type
Product#name is
defined as a
field attribute. The
id property is defined with
id tag, this has a
generator tag nested inside which
defines that the primary key generation mechanism automatically
uses the database platforms native id generation strategy (for
example AUTO INCREMENT in the case of MySql or Sequences in the
case of PostgreSql and Oracle).
Now that we have defined our first entity, let's update the database:
$ vendor/bin/doctrine orm:schema-tool:update --force --dump-sql
Specifying both flags
--force and
-dump-sql prints and executes the DDL
Now create a new script that will insert products into the database:
// create_product.php
require_once "bootstrap.php";
$newProductName = $argv[1];
$product = new Product();
echo "Created Product with ID " . $product->getId() . "\n";
Call this script from the command-line to see how new products are created:
$ php create_product.php ORM
$ php create_product.php DBAL
What is happening here? Using the
Product is pretty standard OOP.
The interesting bits are the use of the
EntityManager service. To
notify the EntityManager that a new entity should be inserted into the database
you have to call
persist(). To initiate a transaction to actually perform
the insertion, You have to explicitly call
flush() on the
This distinction between persist and flush is allows to aggregate all writes (INSERT, UPDATE, DELETE) into one single transaction, which is executed when flush is called. Using this approach the write-performance is significantly better than in a scenario where updates are done for each entity in isolation.
Doctrine follows the UnitOfWork pattern which additionally detects all entities that were fetched and have changed during the request. You don't have to keep track of entities yourself, when Doctrine already knows about them.
As a next step we want to fetch a list of all the Products. Let's create a new script for this:
// list_products.php
require_once "bootstrap.php";
$productRepository = $entityManager->getRepository('Product');
$products = $productRepository->findAll();
foreach ($products as $product) {
echo sprintf("-%s\n", $product->getName());
EntityManager#getRepository() method can create a finder object (called
a repository) for every entity. It is provided by Doctrine and contains some
finder methods such as
Let's continue with displaying the name of a product based on its ID:
// show_product.php <id>
require_once "bootstrap.php";
$id = $argv[1];
$product = $entityManager->find('Product', $id);
if ($product === null) {
echo "No product found.\n";
echo sprintf("-%s\n", $product->getName());
Updating a product name demonstrates the functionality UnitOfWork of pattern discussed before. We only need to find a product entity and all changes to its properties are written to the database:
// update_product.php <id> <new-name>
require_once "bootstrap.php";
$id = $argv[1];
$newName = $argv[2];
$product = $entityManager->find('Product', $id);
if ($product === null) {
echo "Product $id does not exist.\n";
After calling this script on one of the existing products, you can verify the
product name changed by calling the
show_product.php script.
Adding Bug and User Entities¶
We continue with the bug tracker domain, by creating the missing classes
Bug and
User and putting them into
src/Bug.php and
src/User.php respectively.
// src/Bug.php
* @Entity(repositoryClass="BugRepository") @Table(name="bugs")
class Bug
* @Id @Column(type="integer") @GeneratedValue
* @var int
protected $id;
* @Column(type="string")
* @var string
protected $description;
* @Column(type="datetime")
* @var DateTime
protected $created;
* @Column(type="string")
* @var string
protected $status;
public function getId()
return $this->id;
public function getDescription()
return $this->description;
public function setDescription($description)
$this->description = $description;
public function setCreated(DateTime $created)
$this->created = $created;
public function getCreated()
return $this->created;
public function setStatus($status)
$this->status = $status;
public function getStatus()
return $this->status;
// src/User.php
* @Entity @Table(name="users")
class User
* @Id @GeneratedValue @Column(type="integer")
* @var int
protected $id;
* @Column(type="string")
* @var string
protected $name;
public function getId()
return $this->id;
public function getName()
return $this->name;
public function setName($name)
$this->name = $name;
All of the properties discussed so far are simple string and integer values, for example the id fields of the entities, their names, description, status and change dates. Next we will model the dynamic relationships between the entities by defining the references between entities.
References between objects are foreign keys in the database. You never have to (and never should) work with the foreign keys directly, only with the objects that represent the foreign key through their own identity.
For every foreign key you either have a Doctrine ManyToOne or OneToOne association. On the inverse sides of these foreign keys you can have OneToMany associations. Obviously you can have ManyToMany associations that connect two tables with each other through a join table with two foreign keys.
Now that you know the basics about references in Doctrine, we can extend the domain model to match the requirements:
// src/Bug.php
use Doctrine\Common\Collections\ArrayCollection;
class Bug
// ... (previous code)
protected $products;
public function __construct()
$this->products = new ArrayCollection();
// src/User.php
use Doctrine\Common\Collections\ArrayCollection;
class User
// ... (previous code)
protected $reportedBugs;
protected $assignedBugs;
public function __construct()
$this->reportedBugs = new ArrayCollection();
$this->assignedBugs = new ArrayCollection();
Whenever an entity is recreated from the database, an Collection implementation of the type Doctrine is injected into your entity instead of an array. Compared to the ArrayCollection this implementation helps the Doctrine ORM understand the changes that have happened to the collection which are noteworthy for persistence.
Lazy load proxies always contain an instance of
Doctrine's EntityManager and all its dependencies. Therefore a
var_dump() will possibly dump a very large recursive structure
which is impossible to render and read. You have to use
Doctrine\Common\Util\Debug::dump() to restrict the dumping to a
human readable level. Additionally you should be aware that dumping
the EntityManager to a Browser may take several minutes, and the
Debug::dump() method just ignores any occurrences of it in Proxy
Because we only work with collections for the references we must be careful to implement a bidirectional reference in the domain model. The concept of owning or inverse side of a relation is central to this notion and should always be kept in mind. The following assumptions are made about relations and have to be followed to be able to work with Doctrine 2. These assumptions are not unique to Doctrine 2 but are best practices in handling database relations and Object-Relational Mapping.
- Changes to Collections are saved or updated, when the entity on the owning side of the collection is saved or updated.
- Saving an Entity at the inverse side of a relation never triggers a persist operation to changes to the collection.
- In a one-to-one relation the entity holding the foreign key of the related entity on its own database table is always the owning side of the relation.
- In a many-to-many relation, both sides can be the owning side of the relation. However in a bi-directional many-to-many relation only one is allowed to be.
- In a many-to-one relation the Many-side is the owning side by default, because it holds the foreign key.
- The OneToMany side of a relation is inverse by default, since the foreign key is saved on the Many side. A OneToMany relation can only be the owning side, if its implemented using a ManyToMany relation with join table and restricting the one side to allow only UNIQUE values per database constraint.
Consistency of bi-directional references on the inverse side of a relation have to be managed in userland application code. Doctrine cannot magically update your collections to be consistent.
In the case of Users and Bugs we have references back and forth to the assigned and reported bugs from a user, making this relation bi-directional. We have to change the code to ensure consistency of the bi-directional reference:
// src/Bug.php
class Bug
// ... (previous code)
protected $engineer;
protected $reporter;
public function setEngineer($engineer)
$this->engineer = $engineer;
public function setReporter($reporter)
$this->reporter = $reporter;
public function getEngineer()
return $this->engineer;
public function getReporter()
return $this->reporter;
// src/User.php
class User
// ... (previous code)
private $reportedBugs = null;
private $assignedBugs = null;
public function addReportedBug($bug)
$this->reportedBugs[] = $bug;
public function assignedToBug($bug)
$this->assignedBugs[] = $bug;
I chose to name the inverse methods in past-tense, which should indicate that the actual assigning has already taken place and the methods are only used for ensuring consistency of the references. This approach is my personal preference, you can choose whatever method to make this work.
You can see from
User#addReportedBug() and
User#assignedToBug() that using this method in userland alone
would not add the Bug to the collection of the owning side in
Bug#reporter or
Bug#engineer. Using these methods and
calling Doctrine for persistence would not update the collections
representation in the database.
Only using
Bug#setEngineer() or
correctly saves the relation information.
Bug#reporter and
Bug#engineer properties are
Many-To-One relations, which point to a User. In a normalized
relational model the foreign key is saved on the Bug's table, hence
in our object-relation model the Bug is at the owning side of the
relation. You should always make sure that the use-cases of your
domain model should drive which side is an inverse or owning one in
your Doctrine mapping. In our example, whenever a new bug is saved
or an engineer is assigned to the bug, we don't want to update the
User to persist the reference, but the Bug. This is the case with
the Bug being at the owning side of the relation.
Bugs reference Products by an uni-directional ManyToMany relation in the database that points from Bugs to Products.
// src/Bug.php
class Bug
// ... (previous code)
protected $products = null;
public function assignToProduct($product)
$this->products[] = $product;
public function getProducts()
return $this->products;
We are now finished with the domain model given the requirements.
Lets add metadata mappings for the
User and
Bug as we did for
Product before:
<?php // src/Bug.php /** * @Entity @Table(name="bugs") **/ class Bug { /** * @Id @Column(type="integer") @GeneratedValue **/ protected $id; /** * @Column(type="string") **/ protected $description; /** * @Column(type="datetime") **/ protected $created; /** * @Column(type="string") **/ protected $status; /** * @ManyToOne(targetEntity="User", inversedBy="assignedBugs") **/ protected $engineer; /** * @ManyToOne(targetEntity="User", inversedBy="reportedBugs") **/ protected $reporter; /** * @ManyToMany(targetEntity="Product") **/ protected $products; // ... (other code) }
<!-- config/xml/Bug.dcm.xml --> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd"> <entity name="Bug" table="bugs"> <id name="id" type="integer"> <generator strategy="AUTO" /> </id> <field name="description" type="text" /> <field name="created" type="datetime" /> <field name="status" type="string" /> <many-to-one target-entity="User" field="reporter" inversed-by="reportedBugs" /> <many-to-one target-entity="User" field="engineer" inversed-by="assignedBugs" /> <many-to-many target-entity="Product" field="products" /> </entity> </doctrine-mapping>
# config/yaml/Bug.dcm.yml Bug: type: entity table: bugs id: id: type: integer generator: strategy: AUTO fields: description: type: text created: type: datetime status: type: string manyToOne: reporter: targetEntity: User inversedBy: reportedBugs engineer: targetEntity: User inversedBy: assignedBugs manyToMany: products: targetEntity: Product
Here we have the entity, id and primitive type definitions.
For the "created" field we have used the
datetime type,
which translates the YYYY-mm-dd HH:mm:ss database format
into a PHP DateTime instance and back.
After the field definitions the two qualified references to the
user entity are defined. They are created by the
tag. The class name of the related entity has to be specified with
target-entity attribute, which is enough information for
the database mapper to access the foreign-table. Since
reporter and
engineer are on the owning side of a
bi-directional relation we also have to specify the
attribute. They have to point to the field names on the inverse
side of the relationship. We will see in the next example that the
attribute has a counterpart
mapped-by which makes that
the inverse side.
The last definition is for the
Bug#products collection. It
holds all products where the specific bug occurs. Again
you have to define the
target-entity and
field attributes
on the
many-to-many tag.
The last missing definition is that of the User entity:
<?php // src/User.php /** * @Entity @Table(name="users") **/ class User { /** * @Id @GeneratedValue @Column(type="integer") * @var int **/ protected $id; /** * @Column(type="string") * @var string **/ protected $name; /** * @OneToMany(targetEntity="Bug", mappedBy="reporter") * @var Bug[] **/ protected $reportedBugs = null; /** * @OneToMany(targetEntity="Bug", mappedBy="engineer") * @var Bug[] **/ protected $assignedBugs = null; // .. (other code) }
<!-- config/xml/User.dcm.xml --> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd"> <entity name="User" table="users"> <id name="id" type="integer"> <generator strategy="AUTO" /> </id> <field name="name" type="string" /> <one-to-many target-entity="Bug" field="reportedBugs" mapped-by="reporter" /> <one-to-many target-entity="Bug" field="assignedBugs" mapped-by="engineer" /> </entity> </doctrine-mapping>
# config/xml/User.dcm.yml User: type: entity table: users id: id: type: integer generator: strategy: AUTO fields: name: type: string oneToMany: reportedBugs: targetEntity: Bug mappedBy: reporter assignedBugs: targetEntity: Bug mappedBy: engineer
Here are some new things to mention about the
one-to-many tags.
Remember that we discussed about the inverse and owning side. Now
both reportedBugs and assignedBugs are inverse relations, which
means the join details have already been defined on the owning
side. Therefore we only have to specify the property on the Bug
class that holds the owning sides.
This example has a fair overview of the most basic features of the metadata definition language.
Update your database running:
$ vendor/bin/doctrine orm:schema-tool:update --force
Implementing more Requirements¶
For starters we need a create user entities:
// create_user.php
require_once "bootstrap.php";
$newUsername = $argv[1];
$user = new User();
echo "Created User with ID " . $user->getId() . "\n";
Now call:
$ php create_user.php beberlei
We now have the data to create a bug and the code for this scenario may look like this:
// create_bug.php
require_once "bootstrap.php";
$theReporterId = $argv[1];
$theDefaultEngineerId = $argv[2];
$productIds = explode(",", $argv[3]);
$reporter = $entityManager->find("User", $theReporterId);
$engineer = $entityManager->find("User", $theDefaultEngineerId);
if (!$reporter || !$engineer) {
echo "No reporter and/or engineer found for the input.\n";
$bug = new Bug();
$bug->setDescription("Something does not work!");
$bug->setCreated(new DateTime("now"));
foreach ($productIds as $productId) {
$product = $entityManager->find("Product", $productId);
echo "Your new Bug Id: ".$bug->getId()."\n";
Since we only have one user and product, probably with the ID of 1, we can call this script with:
php create_bug.php 1 1 1
This is the first contact with the read API of the EntityManager,
showing that a call to
EntityManager#find($name, $id) returns a
single instance of an entity queried by primary key. Besides this
we see the persist + flush pattern again to save the Bug into the
See how simple relating Bug, Reporter, Engineer and Products is done by using the discussed methods in the "A first prototype" section. The UnitOfWork will detect this relations when flush is called and relate them in the database appropriately.
Queries for Application Use-Cases¶
List of Bugs¶
Using the previous examples we can fill up the database quite a bit, however we now need to discuss how to query the underlying mapper for the required view representations. When opening the application, bugs can be paginated through a list-view, which is the first read-only use-case:
// list_bugs.php
require_once "bootstrap.php";
$dql = "SELECT b, e, r FROM Bug b JOIN b.engineer e JOIN b.reporter r ORDER BY b.created DESC";
$query = $entityManager->createQuery($dql);
$bugs = $query->getResult();
foreach ($bugs as $bug) {
echo $bug->getDescription()." - ".$bug->getCreated()->format('d.m.Y')."\n";
echo " Reported by: ".$bug->getReporter()->getName()."\n";
echo " Assigned to: ".$bug->getEngineer()->getName()."\n";
foreach ($bug->getProducts() as $product) {
echo " Platform: ".$product->getName()."\n";
echo "\n";
The DQL Query in this example fetches the 30 most recent bugs with their respective engineer and reporter in one single SQL statement. The console output of this script is then:
Something does not work! - 02.04.2010
Reported by: beberlei
Assigned to: beberlei
Platform: My Product
DQL is not SQL
You may wonder why we start writing SQL at the beginning of this use-case. Don't we use an ORM to get rid of all the endless hand-writing of SQL? Doctrine introduces DQL which is best described as object-query-language and is a dialect of OQL and similar to HQL or JPQL. It does not know the concept of columns and tables, but only those of Entity-Class and property. Using the Metadata we defined before it allows for very short distinctive and powerful queries.
An important reason why DQL is favourable to the Query API of most ORMs is its similarity to SQL. The DQL language allows query constructs that most ORMs don't, GROUP BY even with HAVING, Sub-selects, Fetch-Joins of nested classes, mixed results with entities and scalar data such as COUNT() results and much more. Using DQL you should seldom come to the point where you want to throw your ORM into the dumpster, because it doesn't support some the more powerful SQL concepts.
Instead of handwriting DQL you can use the
QueryBuilder retrieved
by calling
$entityManager->createQueryBuilder(). There are more
details about this in the relevant part of the documentation.
As a last resort you can still use Native SQL and a description of the
result set to retrieve entities from the database. DQL boils down to a
Native SQL statement and a
ResultSetMapping instance itself. Using
Native SQL you could even use stored procedures for data retrieval, or
make use of advanced non-portable database queries like PostgreSql's
recursive queries.
Array Hydration of the Bug List¶
In the previous use-case we retrieved the results as their respective object instances. We are not limited to retrieving objects only from Doctrine however. For a simple list view like the previous one we only need read access to our entities and can switch the hydration from objects to simple PHP arrays instead.
Hydration can be an expensive process so only retrieving what you need can yield considerable performance benefits for read-only requests.
Implementing the same list view as before using array hydration we can rewrite our code:
// list_bugs_array.php
require_once "bootstrap.php";
$dql = "SELECT b, e, r, p FROM Bug b JOIN b.engineer e ".
"JOIN b.reporter r JOIN b.products p ORDER BY b.created DESC";
$query = $entityManager->createQuery($dql);
$bugs = $query->getArrayResult();
foreach ($bugs as $bug) {
echo $bug['description'] . " - " . $bug['created']->format('d.m.Y')."\n";
echo " Reported by: ".$bug['reporter']['name']."\n";
echo " Assigned to: ".$bug['engineer']['name']."\n";
foreach ($bug['products'] as $product) {
echo " Platform: ".$product['name']."\n";
echo "\n";
There is one significant difference in the DQL query however, we have to add an additional fetch-join for the products connected to a bug. The resulting SQL query for this single select statement is pretty large, however still more efficient to retrieve compared to hydrating objects.
Find by Primary Key¶
The next Use-Case is displaying a Bug by primary key. This could be
done using DQL as in the previous example with a where clause,
however there is a convenience method on the
EntityManager that
handles loading by primary key, which we have already seen in the
write scenarios:
// show_bug.php
require_once "bootstrap.php";
$theBugId = $argv[1];
$bug = $entityManager->find("Bug", (int)$theBugId);
echo "Bug: ".$bug->getDescription()."\n";
echo "Engineer: ".$bug->getEngineer()->getName()."\n";
The output of the engineer's name is fetched from the database! What is happening?
Since we only retrieved the bug by primary key both the engineer and reporter are not immediately loaded from the database but are replaced by LazyLoading proxies. These proxies will load behind the scenes, when the first method is called on them.
Sample code of this proxy generated code can be found in the specified Proxy Directory, it looks like:
namespace MyProject\Proxies;
class UserProxy extends \User implements \Doctrine\ORM\Proxy\Proxy
// .. lazy load code here
public function addReportedBug($bug)
return parent::addReportedBug($bug);
public function assignedToBug($bug)
return parent::assignedToBug($bug);
See how upon each method call the proxy is lazily loaded from the database?
The call prints:
$ php show_bug.php 1
Bug: Something does not work!
Engineer: beberlei
Lazy loading additional data can be very convenient but the additional queries create an overhead. If you know that certain fields will always (or usually) be required by the query then you will get better performance by explicitly retrieving them all in the first query.
Dashboard of the User¶
For the next use-case we want to retrieve the dashboard view, a list of all open bugs the user reported or was assigned to. This will be achieved using DQL again, this time with some WHERE clauses and usage of bound parameters:
// dashboard.php
require_once "bootstrap.php";
$theUserId = $argv[1];
$dql = "SELECT b, e, r FROM Bug b JOIN b.engineer e JOIN b.reporter r ".
"WHERE b.status = 'OPEN' AND (e.id = ?1 OR r.id = ?1) ORDER BY b.created DESC";
$myBugs = $entityManager->createQuery($dql)
->setParameter(1, $theUserId)
echo "You have created or assigned to " . count($myBugs) . " open bugs:\n\n";
foreach ($myBugs as $bug) {
echo $bug->getId() . " - " . $bug->getDescription()."\n";
Number of Bugs¶
Until now we only retrieved entities or their array representation. Doctrine also supports the retrieval of non-entities through DQL. These values are called "scalar result values" and may even be aggregate values using COUNT, SUM, MIN, MAX or AVG functions.
We will need this knowledge to retrieve the number of open bugs grouped by product:
// products.php
require_once "bootstrap.php";
$dql = "SELECT p.id, p.name, count(b.id) AS openBugs FROM Bug b ".
"JOIN b.products p WHERE b.status = 'OPEN' GROUP BY p.id";
$productBugs = $entityManager->createQuery($dql)->getScalarResult();
foreach ($productBugs as $productBug) {
echo $productBug['name']." has " . $productBug['openBugs'] . " open bugs!\n";
Updating Entities¶
There is a single use-case missing from the requirements, Engineers should be able to close a bug. This looks like:
// src/Bug.php
class Bug
public function close()
$this->status = "CLOSE";
// close_bug.php
require_once "bootstrap.php";
$theBugId = $argv[1];
$bug = $entityManager->find("Bug", (int)$theBugId);
When retrieving the Bug from the database it is inserted into the
IdentityMap inside the UnitOfWork of Doctrine. This means your Bug
with exactly this id can only exist once during the whole request
no matter how often you call
EntityManager#find(). It even
detects entities that are hydrated using DQL and are already
present in the Identity Map.
When flush is called the EntityManager loops over all the entities in the identity map and performs a comparison between the values originally retrieved from the database and those values the entity currently has. If at least one of these properties is different the entity is scheduled for an UPDATE against the database. Only the changed columns are updated, which offers a pretty good performance improvement compared to updating all the properties.
Entity Repositories¶
For now we have not discussed how to separate the Doctrine query logic from your model.
In Doctrine 1 there was the concept of
Doctrine_Table instances for this
separation. The similar concept in Doctrine2 is called Entity Repositories, integrating
the repository pattern at the heart of Doctrine.
Every Entity uses a default repository by default and offers a bunch of convenience methods that you can use to query for instances of that Entity. Take for example our Product entity. If we wanted to Query by name, we can use:
$product = $entityManager->getRepository('Product')
->findOneBy(array('name' => $productName));
The method
findOneBy() takes an array of fields or association keys and the values to match against.
If you want to find all entities matching a condition you can use
findBy(), for
example querying for all closed bugs:
$bugs = $entityManager->getRepository('Bug')
->findBy(array('status' => 'CLOSED'));
foreach ($bugs as $bug) {
// do stuff
Compared to DQL these query methods are falling short of functionality very fast.
Doctrine offers you a convenient way to extend the functionalities of the default
and put all the specialized DQL query logic on it. For this you have to create a subclass
Doctrine\ORM\EntityRepository, in our case a
BugRepository and group all
the previously discussed query functionality in it:
// src/BugRepository.php
use Doctrine\ORM\EntityRepository;
class BugRepository extends EntityRepository
public function getRecentBugs($number = 30)
$dql = "SELECT b, e, r FROM Bug b JOIN b.engineer e JOIN b.reporter r ORDER BY b.created DESC";
$query = $this->getEntityManager()->createQuery($dql);
return $query->getResult();
public function getRecentBugsArray($number = 30)
$dql = "SELECT b, e, r, p FROM Bug b JOIN b.engineer e ".
"JOIN b.reporter r JOIN b.products p ORDER BY b.created DESC";
$query = $this->getEntityManager()->createQuery($dql);
return $query->getArrayResult();
public function getUsersBugs($userId, $number = 15)
$dql = "SELECT b, e, r FROM Bug b JOIN b.engineer e JOIN b.reporter r ".
"WHERE b.status = 'OPEN' AND e.id = ?1 OR r.id = ?1 ORDER BY b.created DESC";
return $this->getEntityManager()->createQuery($dql)
->setParameter(1, $userId)
public function getOpenBugsByProduct()
$dql = "SELECT p.id, p.name, count(b.id) AS openBugs FROM Bug b ".
"JOIN b.products p WHERE b.status = 'OPEN' GROUP BY p.id";
return $this->getEntityManager()->createQuery($dql)->getScalarResult();
To be able to use this query logic through
we have to adjust the metadata slightly.
<?php /** * @Entity(repositoryClass="BugRepository") * @Table(name="bugs") **/ class Bug { //... }
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd"> <entity name="Bug" table="bugs" repository-class="BugRepository"> </entity> </doctrine-mapping>
Bug: type: entity repositoryClass: BugRepository
Now we can remove our query logic in all the places and instead use them through the EntityRepository. As an example here is the code of the first use case "List of Bugs":
// list_bugs_repository.php
require_once "bootstrap.php";
$bugs = $entityManager->getRepository('Bug')->getRecentBugs();
foreach ($bugs as $bug) {
echo $bug->getDescription()." - ".$bug->getCreated()->format('d.m.Y')."\n";
echo " Reported by: ".$bug->getReporter()->getName()."\n";
echo " Assigned to: ".$bug->getEngineer()->getName()."\n";
foreach ($bug->getProducts() as $product) {
echo " Platform: ".$product->getName()."\n";
echo "\n";
Using EntityRepositories you can avoid coupling your model with specific query logic. You can also re-use query logic easily throughout your application.
This tutorial is over here, I hope you had fun. Additional content will be added to this tutorial incrementally, topics will include:
- More on Association Mappings
- Lifecycle Events triggered in the UnitOfWork
- Ordering of Collections
Additional details on all the topics discussed here can be found in the respective manual chapters.


text:
BUY RYTHMOL NO PRESCRIPTION, DES MOINES — Day one of the state track meet at Drake Stadium offered up a mixed bag of about everything. Some cold, cheap RYTHMOL no rx, RYTHMOL from canada, some rain, but also some all-time records that went down, buy cheap RYTHMOL no rx, Effects of RYTHMOL, and two state champions from the area.
This was is I liked and didn't like from the meet, RYTHMOL samples, RYTHMOL for sale, and what is ahead for today.
• What I liked: Heaven Chandler, RYTHMOL australia, uk, us, usa. RYTHMOL online cod, I'd never seen her compete in anything until Thursday. The freshman is a phenom who will only get better as she gets older, BUY RYTHMOL NO PRESCRIPTION. She popped two jumps in the finals of the 2A long jump to take home the fifth state championship in school history and first in nine years, where can i buy cheapest RYTHMOL online. Generic RYTHMOL, She also qualified for Saturday's 100-meter dash finals. Chandler was one of the several who exceeded their seeds on the day, RYTHMOL steet value. RYTHMOL natural, She was sixth-fastest going into the 100 and sixth in the long jump. BUY RYTHMOL NO PRESCRIPTION, But Chandler is an amazing talent and very likable. She'll be fun to cover the next few years, RYTHMOL pictures. My RYTHMOL experience, • What I liked: The seniors laying it on the line. It was real nice to see Keokuk's Morgan Kayvan and Rachel Carman start their final state track meet on a high note, canada, mexico, india. RYTHMOL without a prescription, Kayvan placed in the 3,000 for the fourth straight year, RYTHMOL overnight, RYTHMOL trusted pharmacy reviews, fighting back from a deep back to take eighth. Carman, who'd tried to qualify in the 3A high jump for four years, finally made the most of her opportunity, finishing fourth at 5-2, BUY RYTHMOL NO PRESCRIPTION. These are the kinds of things you like to see the state meet, purchase RYTHMOL online no prescription. Buy no prescription RYTHMOL online, • What I didn't like: The cold and rain. There was plenty of it Thursday, RYTHMOL mg, Where to buy RYTHMOL, but the rain lasted probably three hours. It wasn't real cold, is RYTHMOL safe, RYTHMOL brand name, but just damp. BUY RYTHMOL NO PRESCRIPTION, It didn't seem to hinder any performances. There were 11 records set on the day, about RYTHMOL, Online buying RYTHMOL hcl, eight on the girls' side.
• What I didn't like: Burlington's and Mount Pleasant's shuttle hurdle relays, RYTHMOL dangers. RYTHMOL canada, mexico, india, Both were expected to contend this year and were expected to score points. Neither came close as runners on both teams tripped over hurdles that cost valuable seconds and placings, RYTHMOL australia, uk, us, usa. It was particularly bad for Mount Pleasant, who ran its only race of the day at 7:15 p.m., only to see it come in 24th, BUY RYTHMOL NO PRESCRIPTION. RYTHMOL no rx, Shocking, positively shocking.
What's ahead for today:
• Mount Pleasant takes the track hoping to overcome the shuttle hurdle disaster. Much of the Panthers' meet now becomes about what Kim Scarbrough will do in her finale. She takes the track in the 100 hurdles, where she's seeded fifth and will compete in the long jump, where she is seeded second. BUY RYTHMOL NO PRESCRIPTION, • What will Columbus' Kelsey Lyon do in the high jump. This has been a tough event for her during her career, but her senior season has been her best. This could be a great way to end her career, as she's seeded ninth.
• The shot put should be rewarding. Fort Madison's Amanda Houston is third in 3A, while Burlington's Alicia Steffany is fifth. The Bloodhounds should get on the board here.
• The talented freshmen will compete again. Chandler will run the 100 hurdles, and Mediapolis' Tayo Ajose will compete in the high jump. Ajose should score points for the Bullettes.
Similar posts: BUY MICROZIDE OVER THE COUNTER. BUY FRISIUM OVER THE COUNTER. BUY ZOPICLONE NO PRESCRIPTION. AMARYL FOR SALE. BARBITAL pharmacy. Online buying TEGRITAL. INDERAL reviews. AMARYL trusted pharmacy reviews.
Trackbacks from: BUY RYTHMOL NO PRESCRIPTION. BUY RYTHMOL NO PRESCRIPTION. BUY RYTHMOL NO PRESCRIPTION. BUY RYTHMOL NO PRESCRIPTION. Buy RYTHMOL from mexico. Buy cheap RYTHMOL. RYTHMOL dose. Purchase RYTHMOL online no prescription.


text:
Sweet Potato Salad Recipe
with Roasted Poblano, Roasted Corn & Chipotle
A sweet potato salad for summer, a colorful and mouth-watering blend of sweet potato, roasted poblano pepper and roasted corn. No mayonnaise so perfect for a 'dish to carry' for potlucks, picnics and family dinners.
"This is a keeper for summer. Thanks for the inspiration." ~ Anonymous
"It is just wonderful!" ~ DLA in OKC
"This is the perfect summer sweet potato recipe!" ~ Holly
Please welcome Mario Aranda of O Olive Oil, my guide to the pleasure of fine olive oils and artisan vinegars for a couple of years now. And meet Mario's mother, too, his 'vinegar mother', that is.
"Vinegar is essentially sour wine; even the word itself is taken from the French for Vin Aigre, sour wine. "To make vinegar, you start with wine, then trigger the acidifying process. For most vinegars, this is a harsh 48-hour chemical and mechanical process in steel tanks.
"Not so for good vinegar. Good vinegar starts with good wine and a very old vinegar starter called a 'mother'. In the olden days, vinegar mothers and yeast starters (for bread) were treasured and protected. Each family had a keeper of the 'mothers'.
"I grew up in a Sephardic Jewish family in Mexico back in the 1950s. My great-aunt Juliana kept the family's bread starters and vinegar mothers alive. My mother, alas, kept killing her starts or letting them die. So as a kid, I would have to walk across the river to get new starts, much to my aunt's eye-rolling dismay!
"The 'mother' we use at O Olive Oil hails from the Azores and is many generations old. Portuguese immigrants brought it to California in the early 1930s. To make our vinegars, we place fine Napa wines in ventilated oak barrels, then add our own special ingredients (apricot wine to sherry, say, or cherry wine to zinfandel) and a bit of our vinegar 'mother'. Then nature begins her alchemy that slowly, slooowly turns wine into vinegar. We barrel-age the vinegar for several months and even years."
Would you like to sample good vinegar from O Olive Oil? There's a discount and a give-away, especially for Kitchen Parade readers, between now and May 3, 2010. Here's the giveaway information.
SWEET POTATO SALAD with
Time to table: 35 minutes
Makes 4 cups
- 2 pounds sweet potatoes, peeled and diced small
- 1 large poblano pepper or green pepper
- 1 tablespoon olive oil
- 1 cup corn (see TIPS)
- 1 tablespoon olive oil
- 2 tablespoons sherry vinegar (see TIPS)
- 2 tablespoons honey or agave nectar
- 1/2 teaspoon adobo sauce from canned chipotle chiles
- 2 cloves garlic, minced
- 2 green onions, chopped
- 1/4 teaspoon dried sage
- 1/8 teaspoon dried thyme
- 2 tablespoons fresh cilantro or fresh basil, chopped
- Salt & pepper to taste
- For garnish, additional cilantro or basil
COOK SWEET POTATOES Cook the sweet potatoes in boiling salted water until barely soft OR steam for about 10 minutes. (See TIPS.)
ROAST PEPPER Move oven rack close to the broiler, set oven on broil. Slice the pepper in half vertically; remove core, membrane and seeds. Flatten halves skin-side up on foil on a baking sheet. Place under broiler til skins blister and blacken. Remove from broiler, fold foil over the pepper to form a tight packet; let rest 5 minutes. Lift off and discard skins; slice flesh into strips.
ROAST CORN In a non-stick skillet, heat 1 tablespoon olive oil on medium high until shimmery. Add the corn and cook, stirring often, until the kernels turn golden brown. (It's fun! Some kernels just might pop!)
COMBINE Meanwhile, collect remaining ingredients in a large bowl. Stir in the cooked sweet potatoes, roasted pepper and roasted corn. Taste and adjust seasoning if needed.
SERVE & SAVOR To serve, transfer to a serving bowl to serve at room temperature, otherwise refrigerate to serve later but do return to room temperature. Garnish the salad with a sprinkle of chopped cilantro or a leaf of fresh basil.
More Favorite Summer Salad Recipes
More Favorite Sweet Potato Recipes
from Kitchen Parade
~ My Favorite Sweet Potato Recipes ~
from A Veggie Venture
Shop Your Pantry First
~ poblano peppers ~
~ corn ~
~ All Recipes, By Ingredient ~
~ How to Save Money on Groceries ~
© Copyright 2010, 2013 Kitchen Parade


text:
The Great One's daughter has been benched — from Twitter, that is. Paulina Gretzky, first-born child of Canadian hockey royalty in Wayne Gretzky and his wife Janet Jones, has shut down her Twitter account in the wake of … shall we say? … rather racy photos that have made the rounds of the social media world.
"Having a nice sit down dinner with my dad about social media..haha #SIKEEE (sic)," Paulina tweeted prior to closing her account.
The 22-year-old aspiring entertainer, posted numerous photos of herself and friends partying in nightclubs, tanning and striking suggestive poses. She first came to public attention at the 2003 Heritage Classic in Edmonton, an outdoors NHL game between the host Edmonton Oilers and the Montreal Canadiens, when she sang I Will Remember You.
Her song Collecting Dust is on the soundtrack to the MTV show Laguna Beach: The Real Orange County.
She has had bit acting roles in the 2009 remake of Fame as "Gorgeous Blonde Senior" and as the deputy in Guns, Girls and Gambling, starring Gary Oldman and Christian Slater.
Her mother, Jones, was a budding actress in the 1980s when she posed on the cover and in a semi-nude pictorial in the March 1987 issue of Playboy magazine.
What's the family fuss all about? Click here for more photos.
Paulina Gretzky photos, then and now — click here.


text:
Blue Bicycle Planner
Blue Bicycle planner artwork by Jenny Penton and ready for you to begin planning your life.
Choose your cover, and your month for each plan book in the drop down! Cover script and dashboard script will be changed to reflect the month you choose.
Included in all planners: dashboard, 2 page dated calendar, goal section, and daily section.
Each planner cover is made with heavy and durable fine art paper. Each planner includes 80 pages of the highest quality 24lb journaling paper that beautifully takes most art mediums (water color, acrylic, ink etc.), a coordinating art dashboard, dated 2 page calendar, and daisy art dividers to inspire your goal and daily planning.
The planners are bound and stitched with thick vivid red thread; all this attention to detail is what gives Designs by Planner Perfect it's distinct look.
This planner is made specially for you when ordered; please allow up to two weeks for shipment.
Because we custom make each plan book, journal, and all accessories specifically for your order please allow up to 14 days to produce, process, and begin shipment.
share with a friend
complete your collection


text:
Release Date: 1980 |
This is a nice, tight review. I like the way you put links to your references, also. I have never really gotten into Gabriel past his better known songs, and then some. But I have seen him a couple of times live and think he is an amazing performer and showman. This sounds like it might be a nice place to start with him to delve deeper into his work. I'm going to add him to my library at my music service.
Album Rating: 4.5Peter Gabriel is great, there need to be more reviews of him, I will be reviewing him soon too sometime. He is an amazing songwriter and makes great music
This was a well written and entertaining review. You focused on the drumming a lot throughout the review and the comparisons to Low make it even more interesting.
Album Rating: 3.0I love this album, Biko and Family Snapshot are the highlights for me.
Peter Gabriel is a genius, plain and simple.
Album Rating: 4.5Thanks everyone, though I probably should've mentioned Biko.
Album Rating: 4.0Sweet review. This is a great album, probably my favourite of his. But I haaaaaaaaaaaaaaate "Games Without Frontiers". Easily my least favourite song ever.
Album Rating: 3.0I think Security edges out Peter Gabriel III just slightly. And morrissey, what is so bad about "Games Without Frontiers"? If there's any PG song to rip on, it is "Kiss That Frog".
Album Rating: 4.0I really have no rational reason for hating it, there is just something about it that makes me never want to listen to music again.
Album Rating: 5.0 | Sound OffThis album is required listening for anyone who likes music. It's undeniably great and still fresh after 27 years.
Album Rating: 4.5I'm in love with Family Snapshot at the moment ^^
Album Rating: 5.0 | Sound OffJohn, I'm disappointed boy!
fucking awesome
Album Rating: 4.5rules hard
Album Rating: 4.5get this cunt to 100 pages right now
Album Rating: 4.5fags
Album Rating: 4.5rules
Greatest Peter Gabriel solo album.
This or IV anyway, not sure which is better.
Album Rating: 4.5ugh so fuckin good ugh cant even explain ughh
Bands: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


text:
Note: #PBAAuctions is now the new Auctions channel of PBA, Simply type /j #PBAAuctions to join.
Strictly no chatting in this channel and you MUST use your game name, not your forum name.
For a guide on how to set up an auction, go here: http://pbaforum.net/viewtopic.php?f=33&t=20076
Too many people are holding false auctions in the chat and therefore many are complaining to staff about not getting the pokemon they won in the auction. If this continues then auctions WILL be banned, so this is a warning to all players.
Here are some guideline rules about auctioning:
- -Auctions are to be held ONLY by using the bot.
Say !auction to start and auction with the bot. The bot is there for your own security. Each sale is logged with the bot should someone try to say
you didn't win or any other problems and makes auctions more fair. If you host an auction not using the bot it is illegal.
- Do not complain about auction prices.
Everyone can auction whatever they pokemon they want for whatever price they want. If you don't like a price, don't bid and don't complain. I.e "omg that is not worth that much omg that will never sell." It's rude and you wouldn't like it done to you. People will not want to bid if everyone just complains. Don't say "i'm not complaining" either, say NOTHING about the price if you don't like or don't think it's right, they can figure it out for themselves by seeing no one bought it.
-Whatever the winning bid is, you sell/buy it for that price.
Do not refuse to sell the pokemon if it's not a price you like. Start the auction at a price a little lower or around a price you'd be willing to accept. It's not fair on the other players who want it, win and then you don't hold your end of the bargain.
- Absolutely NO PM BIDS. Any auction bids must be posted in the chat for all the see.
Many people lie that someone made a bid in PM to try and increase the auction price; these are false bids and strictly against the rules. No PM bids count, no matter what. Seriously, don't give us 'they're to shy' or anything like that, there is no excuse what so ever that is acceptable.
- You are not under any circumstances allowed to cancel your auction.
If you start an auction, you must finish it. If it's at a price that's not what you hoped then too bad. Start at a price you'd be happy with as stated above. Staff will not cancel and auction for you.
- Do not leave in the middle of an auction (thus cancelling it) and then sign back in and restart the auction.
This is the same as cancelling. Don't hold an auction if you know you will have to leave soon. All auctions are logged so we will be able to see who won.
- Whoever wins the auction gets it.
Only those who are bidding on the pokemon are eligible to buy it (i.e. don't decide to just accept a random trade offer, or give it to a friend)
- No minimum increasements.
Do not say people can only place a bid if it is so much higher than the last. Ths is too annoying for both the auction holder and bidders to follow and just a way to get more money out of players. If someone wants to bid as little as 1 pokemoney more than the last bid, they can do so.
- You MUST use the correct pokemon ID.
When you post an auction to Pichu (the bot) using !auction, you must enter the correct ID of the pokemon. This is so others can look and see you do own it and the pokemon exists. If you are making multiple auctions of the same species of pokemon, you cannot re-use the ID of one already sold.
Each pokemon has it's own unique ID and every ID must be associated with the pokemon you are bidding.
- If a pokemon is not bought, do not keep re-posting it.
If you auction gets no bids, don't immediately add it again. No one obviously wants it and others are waiting to bid. You can put it up for bid again later or some other time if you wish when there are more/different people present, but don't keep posting it every 5 minutes.
If you do not meet the above requirement then your auction is classified as a false auction and you will either be warned or banned on site. Three warnings will lead to a ban. The punishment for false auctions is based on the judgement of which ever staff member witnesses it, so they DO NOT have to give a warning, they can ban you on site if they feel you deserve it as each situation is different.
If players continue to break these rules, then auctions will be banned and anyone trying to hold and auction will be warned and/or banned on sight.


text:
|Item Price
|your basket is empty
|sub total
New Frontiers in Product Modeling and Simulation
The NAFEMS 2014 Americas Conference and the Collaboration & Interoperability Congress (CIC) held co-located events at the beautiful Cheyenne Mountain Resort in Colorado Springs, CO in May 2014.
The central theme of the co-located events was, "Driving Product Development with Collaboration, Simulation, and Integration."
Access Abstracts and Presentations
What is the future for engineering analysis and simulation?
Where will it lead us in the next decade?
How can designers and engineers realize its full potential?
What are the business, technological, and human enablers that will take past successful developments to new levels in the next ten years?
NAFEMS, the premier global organization dedicated to the advancement and improvement of engineering simulation, addressed these questions during its 2014 Americas Conference in Colorado Springs, CO on May 28-30, 2014.
NAFEMS events are the only truly independent and vendor-neutral conferences dedicated to engineering analysis and simulation. The 2014 conference brought together the leading visionaries, developers, and practitioners of CAE-related technologies in an open forum, unlike any other, to share experiences, discuss relevant trends, discover common themes, and explore future issues.
Two Conferences in One
Registration to the NAFEMS Americas Conference 2014 also included access to the 3D Collaboration & Interoperability Congress (CIC) which was co-located with the Conference in Colorado Springs, CO, USA. The central theme of the co-located events was, "Driving Product Development with Collaboration, Simulation, and Integration."
3D Collaboration & Interoperability Congress (CIC)
The CIC is dedicated to fostering and improving collaboration and interoperability throughout the product lifecycle. Manufacturing is a distributed business, usually involving global design teams and supply chains. World-class manufacturing cannot happen unless people work together effectively, collaborating from any location, and sharing product data safely, accurately and confidently.
Now in its tenth year, CIC is the only industry and vendor-neutral event in the world addressing collaboration and interoperability in product development, manufacturing and business communications. This makes it an essential forum to get an unbiased perspective to help guide product development, manufacturing and IT strategies in these mission-critical areas.
Find out more at www.3dcic.com


text:
[New South Wales, Australia. April 17. Image via Getty.]
Keeper Liz Minor bottle feeds an African serval kitten (Leptailurus serval), successfully bred as part of the Mogo Zoo's internationally renowned breeding program. The serval inhabits most parts of Africa and has a gestation period of only seventy-five days. — Getty
Additional, unrelated cute can be found here.
The Pandas' Secret [NPR]


text:
Request a Security Review
Enter your information below and we'll get in touch with you to schedule your free security assessment.
At Lake Arrowhead Security, we pride ourselves on our expert abilities to educate and advise clients about all available security and smart automation system options.
An on-site home security system assessment gives our security professionals an opportunity to ask questions about your security needs and educate you on security and smart control solutions. Solutions range from traditional burglar, fire, and video surveillance systems to comprehensive smart automation solutions. Smart automation allows users to remotely arm and disarm their systems; access real time video; and manage thermostats, small appliances and lights all with the push of a button. Together we will design an effective and affordable package to manage your home or business 24 hours a day without fail.
Lake Arrowhead Security has led the way in keeping communities safer with sound security solutions as well as reliable and respected expertise. Call Lake Arrowhead Security now for a complimentary on-site security consultation and take one step closer towards peace of mind.