text:
April 17, 95
Vol. 10 , No. 10
Dizzy with Democracy: Critical Perspectives on the New World Disorder
Ken Jowitt has been an important and controversial voice in current debates over the global implications of the collapse of communism. In his trenchant study New World Disorder: The Leninist Extinction (1992), Jowitt described the Leninist extinction in the former Soviet Union as creating a "genesis environment." He challenges the "end of history" model of Francis Fukayama and the "clash of civilizations" model of Samuel Huntington. Jowitt cautions those who would see the former Soviet Union simply as a blank slate ready to be inscribed with a democratic capitalist script. Instead, he offers a complex exploration of the possible and competing definitions of political life in the former Soviet empire.
Educated at Columbia College and UC Berkeley, Jowitt is the author of two books and dozens of articles. He is also a contributor on politics to the Times Literary Supplement. He has lectured throughout Europe and in the United States for such prominent organizations as Ameritech, the Defense Intelligence Agency, and McKinsey Corporation. For almost two decades, Jowitt has been known as a legendary lecturer at Berkeley, where he is Professor of Political Science and University Distinguished Teacher.
Join us for this provocative vision of Eastern Europe's future.
General Dwight D. Eisenhower in World War II
David Eisenhower's Eisenhower At War, 1943-1945 (1987), a national bestseller and the sole finalist for the 1986 Pulitzer Prize in history, reflects on the presidency of his grandfather and the tumultuous times that characterized his epoch. Even now, 50 years removed from World War II, Dwight D. Eisenhower remains one of the strongest and most-identifiable icons of the 20th century-his name alone conjures distinct and moving images the likes of which no other public figures can match.
Over the years, David Eisenhower has authored reviews and articles for national publications and books, as well as a column for the Philadelphia Bulletin. The awards and appointments he has earned as a historian and political analyst are testimony to a lifework well sculpted. He has lectured at the University of Pennsylvania on the topics of U.S. foreign policy and postwar Europe, and he has devoted much of his nonwriting time to public speaking on World War II and the American presidency.
After graduating from Amherst College and serving as a naval officer aboard the USS Albany, David Eisenhower earned a law degree from George Washington University. He sits on numerous boards, including those of Gettysburg College, the Pennsylvania Humanities Council, Freedom House, and the Center for the Study of the Presidency. In 1991, in recognition of Eisenhower At War, 1943-1945, he was named a Society of American Historians fellow.
This special presentation is part of the CMC Res Publica series, which recognizes outstanding contributions to public affairs.
A Poet Reads from His Work
In the nearly four decades since John Hollander's first book of poetry, A Crackling of Thorns, was selected by W. H. Auden for publication in the Yale Series of Younger Poets (1958), he has steadily beguiled readers with the variety, polish, and wit of his poems. Hollander explores a broad range of emotional territory with a formal grace and technical control that are rare in modern poetry. Love, loss, art, music, friendship, the fleeting nature of life-Hollander takes us into all of these areas without ever allowing deeply personal observation to slip into selfindulgence. It is, in fact, Hollander's very control that enhances and channels his poetry's emotional expressiveness.
"An unexcelled virtuoso of the verbal keyboard," as Marie Boroff has called him, Hollander is often praised for the musicality of his work, which is also informed by his own interest in music. But the visual arts also lie at the heart of many a Hollander poem. A modern practitioner of the ancient mode of ekphrasis, Hollander has produced poems on art works by, among others, Velazquez, Monet, Edward Hopper, and his own wife, the sculptor Natalie Charkow. In 1969 Hollander demonstrated at once his originality and traditionalism by accomplishing a feat that, according to the editors of The Norton Anthology of Modern Poetry, "no other contemporary could or would attempt." In his book, Types of Shape (1969), Hollander adapted the tradition of emblem poetry to a modern idiom. Each poem in this book, like "Swan and Shadow" shown here, is written in the physical shape of the thing it describes, blending visual and verbal elements into a unified whole.
A distinguished scholar as well as a poet, Hollander is A. Bartlett Giamatti Professor of English at Yale. In addition to his many volumes of poetry, he is the author of four books of literary criticism, including the often reprinted Rhyme's Reason: A Guide to English Verse (1981). His numerous awards include a MacArthur Foundation Fellowship, a Guggenheim Fellowship, and the Bollingen Prize for Poetry. His Selected Poetry was published by Knopf in 1993.
John Hollander's appearance at the Athenaeum is sponsored by the Benjamin Z. Gould Center for Humanistic Studies.
The First 100 Days of the 104th Congress and the Republican Contract with America
THURSDAY, APRIL 20, 1995 12:00 Noon
Ever since Franklin Roosevelt introduced the New Deal during the depths of the Depression, Americans have been obsessed with the first 100 days of a term in office. For the first time in 40 years, the Republicans have regained control of the House of Representatives. What makes the changing of the guard interesting is that no Republican representative in the 104th Congress has ever served under a Republican speaker of the House. Newt Gingrich has announced a public mandate to introduce The Contract With America in hopes of enacting radical change within the first 100 days under Republican rule. Whether this reflects a mandate straight from the public and if the original goal can be achieved are hotly debated topics. The Contract raises intriguing questions concerning the direction of this country. Representative Jay Kim will discuss The Contract With America as well as the first hundred days.
Kim, born in Korea, came to the United States as a young man and settled in the west end of San Bernardino County. Educated in Southern California, Kim founded JAYKIM Engineers which was recognized as one of the top 500 design firms in the country. He began his public service as mayor of Diamond Bar and as a member of the city council. In 1992 Kim was elected to the United States Congress, where he serves on the House Transportation and Infrastructure Committee and the House International Relations Committee. His Athenaeum appearance is sponsored by the Rose Institute of State and Local Government.
Along the Muir Trail
What do a city manager and a college treasurer have in common? Norm King and Fritz Weis share a love for the high Sierra and all of its glorious sights and experiences. These 1965 graduates of Claremont McKenna College have climbed the peaks and trekked the trails of the 211-mile John Muir Trail, which spans the highest and most scenic part of the Sierra Nevada mountains-from the summit of Mount Whitney, through ten mountain passes, finishing in Yosemite Valley. Two 14-day backpacking trips in the summers of 1992 and 1994 provide the stories and slides of a trip replete with bear encounters, fishing tales, flower-filled meadows, and panoramic vistas.
Both amateur photographers, King and Weis have backpacked together since graduating from CMC. King will share with us his interest in the writings of John Muir and will provide background on the creation of the trail. Weis is an avid fly fisherman who relishes the challenge of planning a 14-day trek. When he is not managing the funds of the college, he has been known to produce delightful meals at camp and at home. His recipes for backpacking success should not be missed.
Come share the beauty of the backwoods with these two alumni adventurers and learn about the art of backpacking.
Senior Art Show
FRIDAY, APRIL 21, 1995 3:00 p.m.
The Athenaeum will be transformed into an art gallery as five gifted CMC seniors display their work. The exhibit will be open beginning at 8:00 a.m. until 5:00 p.m. on Friday, April 21. There will be a reception with refreshments and music beginning at 3:00 p.m. at which time you will have the opportunity to greet the artists.
An environment, economics, and politics and film studies major, Asif Ahmed presents Lost Dream, his fifth feature film production. For Ahmed's senior project, he not only wrote the screenplay, he also produced and directed the film. Lost Dream follows two college students, Perry and Giovanni, as they develop a friendship based upon their suicidal behavior. Perry, plagued by prophetic dreams, is tormented by his position in society. Giovanni, distressed by his troubled childhood, has lost his desire to live. Together they challenge each other's existence in search of salvation. The film will be shown in Freeberg lounge at the Athenaeum throughout the day on Friday.
Edrick Chua's work begins with organic forms then ventures far from reality to end in abstract form. He strives for aesthetic appeal over realism. Chua began his career at CMC aiming his studies towards medicine. Though he has kept biology as his major, his minor in art has inspired him to seek a career in architecture. His presentation will feature his experiments in sculpture using paper and wax. He is currently working on a sculpture that will play with light in a wire frame covered with tissue paper.
Rene Gabri is a psychology major who has found time to pursue his interest in art. He feels that these two interests complement one another. His works are in many respects explorations of the self. His style reflects his personal views of the self as a multiplicity of personalities. Gabri has presented his artwork in shows at both Colorado College and Scripps. His drawings have appeared in numerous publications and newspapers. Three of his paintings in this show comprise his series on life. They explore the beginnings of the individual as an unrestrained being, life on earth, and finally a return back to the darkness.
As a studio art and biology major, Helen Oh has brought a scientific quality to her art. Using plaster, she has created a series of work that finds a basis in biomorphic images. Her technique features the use of fabric sheets dipped in plaster then molded to human forms. Observational study, like the kind one finds in the field sciences, inspires her work as an artist. Oh attributes her development to the hands-on and helpful atmosphere fostered within the Scripps art department. In the future, she hopes to pursue a master's degree in the fine arts, then teach art at the college level.
Jeremy Sung entered Claremont McKenna College with an interest in international relations. Since then he has revisited an interest he developed in high school: sculpture. The interaction between fellow artists at Scripps College drew him towards a major in studio art and since then he has experimented with various media to find an affinity with clay and bronze sculpture. Past prints by Sung have been featured at the Emett Student Center at Claremont McKenna College and the Lang Gallery at Scripps. Sung's presentation at the Athenaeum will feature his development as an artist and exploration with various techniques.
Readings From The Fuehrer Bunker: The Complete Cycle
The Fuehrer Bunker: The Complete Cyele (1995) is one of the most unusual and controversial works of modern poetry. W. D. Snodgrass has worked on this cycle of poems for the last quarter century, and its publication this spring coincides with the 50th anniversary of the collapse of Hitler's Reich. An oratorio of dramatic monologues, The Fuehrer Bunker depicts the psychodrama of the German high command-Adolf Hitler, Heinrich Himmler, Joseph Goebbels, Albert Speer, Hermann Goering-during the last months of World War II before Hitler committed suicide in the bunker. "My aim is to investigate the thoughts and feelings behind the public facade which made those actions possible. My poems, then, must include voices they would hide from others, even from themselves," Snodgrass explains.
Displaying technical mastery of a wide variety of poetic forms, Snodgrass explores human evil in many of its incarnations. In a series of villanelles and triolets, Magda Goebbels explains why she killed her children when it was clear Germany was losing the war. Hitler describes his sexual obsessions. Stripped of his command, Himmler attempts to predict the future. Interspersed among the monologues are the songs of Old Lady Barkeep who is both chorus and mistress of ceremonies. She sings of the high command's deceit and craftiness and the people's disillusionment with their leaders.
Snodgrass, along with his mentor, Robert Lowell, was responsible for the emergence of American confessional poetry. He won the Pulitzer Prize in 1960 for his first book, Heart's Needle (1959). In 1977 The Fuehrer Bunker: A Cycle of Poems in Progress was nominated for the National Book Critics Circle award for poetry and produced at the American Place Theater. Snodgrass has been Distinguished Professor of Creative Writing and Contemporary Poetry at the University of Delaware.
In Remembrance of the Holocaust
As we approach the 50th anniversary of V.E. Day, the importance of remembering why World War II was fought only grows. The genocidal destruction of millions of Jews and other innocent people by Hitler's Nazis is one of the most haunting experiences in all of human history; it is the troubling material for countless works of philosophy, history, religion, literature, and art. John Roth, CMC's Pitzer Professor of Philosophy, has earned wide acclaim for his scholarship on the Holocaust and on the American dream. As one of CMC's most cherished assets, he has inspired students for more than two decades, challenging them to achieve a better understanding of the Holocaust that is at once logical and visceral.
Roth received his B.A. from Pomona College, where he first decided to become a teacher. He earned his Ph.D. in philosophy at Yale University and has been a professor of philosophy at CMC ever since. In 1988 he was selected National Professor of the Year by the Council for Advancement and Support of Education and the Carnegie Foundation for the Advancement of Teaching. In addition, he is the author of more than twenty books and numerous articles that have helped to establish him as one of the most esteemed scholars in his field.
The Athenaeum is honored to have this distinguished scholar and teacher as its final speaker of the academic year.
Marian Miner Cook Athenaeum
Claremont McKenna College
385 E. Eighth Street
Claremont, CA 91711
(909) 621-8244
Fax: (909) 621-8579
Email: firstname.lastname@example.com
Campus Location
385 E. Eighth Street
Claremont, CA 91711


text:
Contact Information
410.837.6571 - General Info
410.837.4747 - Accounts Payable
410.837.4852 - Payroll
410.837.4731 - Travel
Office of Payroll
University of Baltimore's Office of Payroll is responsible for payment of all staff, faculty and student employees.
The mission of the Payroll office is to provide fast and accurate payment services.
Monday through Friday, 8:30 a.m. to 5:00 p.m.
Contact Personnel:
Christina Kubilius, Paycheck Information Ext. 6571
Christina Kubilius, W-2/W-4 Information Ext. 6571
Christina Kubilius, Lost/Missing Paychecks Ext. 6571

subset: commoncrawl


text:
First, get a better narrator. I never read the book in print. However, listening to Ana and Christian's endless emails, (including dates and times)..Show More »
It is incredibly difficult not to roll your eyes and exclaim "as if" when you listen to this book. The story line itself as an idea could be worked wi..Show More »
Perhaps. It really depends on the subject matter.
"I gape at him"..."Oh Christian"...
"Oh my 50 shades" . Save me now. I grew so tired of hearing the same lines repeated over and over, so I gave u..Show More »
So I finish the Fifty Shades trilogy... Oh the tragedy! Fortunately I can and will listen to all three books over and over. I just can't get enough Fi..Show More »
One of the best book series I've listened to. A love story with lots of erotic sex to boot. all I can say is WOW.


text:
We help families choose a healthy lifestyle, manage health conditions and medications, use preventive screenings and vaccines.
We help families fight obesity, make healthy choices, can, freeze and dry food and to handle food safely.
We help families improve parenting skills, cope with divorce and strengthen relationships.
We help families save energy, prepare for emergencies, make home healthy and to be safe.
We help families increse savings, decrease debt, spend wisely and plan for the future.
UT Extension Family and Consumer Sciences is the University of Tennessee at work in your community. Our top professionals in every county use research-based education to help Tennesseans gain knowledge and develop confidence in making good decisions today and tomorrow. Our success in helping consumers improve their well-being results in economic benefits for individuals, families and communities. Investments in UT Extension Family and Consumer Sciences are investments in your community.
Diabetes is a chonic disease that requires dailly self-care. UT Extension teaches a diabetes-managment class across Tennessee - a state with the sixth highest rate of disease nationally.
The University of Tennessee ExtensionFamily and Consumer Sciences2621 Morgan Circle, 121 Morgan HallKnoxville, TN 37996-4530Phone: (865) 974-7384Fax: (865) 974-1068
The University
of Tennessee
Institute of
UTIA Personnel Directory
· EEO/AA Statement/Non-Discrimination


text:
Adam V Wisnewski PhD
Senior Research Scientist in Medicine (Occupational Medicine)
Departments & Organizations
Office of Student ResearchInternal Medicine: General Internal Medicine; Occupational & Environmental Medicine
- Ph.D., Brown University, 1994
Selected Publications
- Wisnewski AV. Developments in laboratory diagnostics for isocyanate asthma. Curr Opin Allergy Clin Immunol 2007 7:138-45.
- Pronk A, Preller L, Raulf-Heimsoth M, Jonkers ICL, Lammers J-W, Wouters IM, Doeked G, Wisnewski AV, Heederik D. Respiratory symptoms, sensitization and exposure-response relationships in spray painters exposed to isocyanates. Am J Respir Cit Care Med 2007 176:1090-97.
- Ye YM, Kim CW, Kim HR, Kim HM, Suh CH, Nahm DH, Park HS, Redlich CA, Wisnewski AV. Biophysical determinants of toluene diisocyanate antigenicity associated with exposure and asthma. J Allergy Clin Immunol 2006 118:885-91.


text:
Lara Bonner Millar, MD
The Abramson Cancer Center of the University of Pennsylvania
Last Modified: August 16, 2011
Photosensitizers make the body sensitive to light. The period of time over which a patient is sensitive, and therefore should avoid light exposure, varies according to the type of photosensitizer used, but can last up to 6 weeks after treatment. Patients are given light precautions, including avoidance of direct sunlight and bright indoor light for the period of sensitivity. If light precautions are not followed, there is the possibility of sustaining burns, swelling, and pain. Other side effects of PDT are related to the area that is treated and can include coughing, trouble swallowing, stomach pain, painful breathing, local swelling, and/or shortness of breath.
Sep 6, 2011 - In Germany, photodynamic therapy (PDT) using hexylaminolevulinate has the potential to be a more cost-effective treatment for high-grade cervical intraepithelial neoplasia than conization, and implementation of PDT may reduce perinatal morbidity and assoc


text:
|NOTE: This product is no longer being sold and might not be supported. View the End-of-Life Notice to learn:
Powerful, All-in-One Communications
Everything you need to connect your business and be more productive comes in the Cisco Smart Business Communications System (SBCS). In addition to delivering secure access-anytime, anywhere-to integrated voice, video, and wireless networking, the Smart Business Communications System :
- Improves communication with customers, partners, and employees
- Offers the right mix of communications plus integrated and third-party productivity and business operations applications
- Provides a comprehensive solution that is designed to work together while being easier to deploy, operate, and manage
Cisco Smart Business Communications System (SBCS) components:
- Cisco Unified Communications 500 Series
- Cisco SPA300 Series IP Phones
- Cisco SPA500 Series IP Phones
- Cisco Unified IP Phones 6900 Series
- Cisco Unified IP Phones 7900 Series
- Cisco 300 Series Managed Switches
- Cisco ESW 500 Series Switches
- Cisco 520 Series Secure Router
- Cisco AP 500 Series Wireless Access Points
- Cisco Smart CallConnectors
- Cisco Office Manager
- Cisco Configuration Assistant
Featured Content
Real Business Scenarios
See how you can better serve your customers and connect employees.


text:
4 Anti Aging Devices That Really Work
7 Best Dog Water Fountains
5 Best Vacuums For Pet Owners
Top Gift Ideas To Help With Back Pain
10 Cool Gadgets To Assist People With Arthritis & Hand Pain
See More Buy Guides, Product Reviews And Product Picks
Advertisers are our main source of revenue. When we link to certain sites, we may receive a small commission for sales using our links. The opinions expressed on our website reflect the unbiased opinions of our reviewers. If we receive a free sample for review or a small fee to write an "advertorial", that is clearly noted in the article.


text:
Get Instant Pricing with Edmunds Price Promise℠
1Look for "Special Offers" on a specific car
2Get your upfront, locked-in price from the dealer
3Go to the dealership to buy your car with no haggle
Certified Pre-Owned Programs vary significantly from manufacturer to manufacturer. Find out more about the manufacturer programs of the vehicles that interest you.
Help |
About Us |
Contact Us |
Careers |
Affiliate Program |
Dealer Center |
Privacy Statement |
Visitor Agreement |
Membership Agreement
Your Ad Choices
| Site Map
| Glossary
| Mobile
| Developers
Follow Edmunds
© Edmunds.com, Inc.
† Edmunds.com received the highest numerical score in the proprietary J.D. Power 2014 Third-Party Automotive Website Evaluation Study℠. Results based on responses from 3,381 responses, measuring 14 companies and measures third-party automotive website usefulness among new and used vehicle shoppers. Proprietary study results are based on experiences and perceptions of owners surveyed from January 2014. Your experiences may vary. Visit jdpower.com.


text:
CHARLESTON - A Federal Order of Information was released from U.S. Attorney Booth Goodwin Wednesday afternoon, outlining the cases that investigators have built against C. Michael Sparks, Mingo County Prosecutor, and Dallas Toler, Mingo County Magistrate, who both resigned from office earlier that same day.
The order against Sparks reads as follows:
In or about February of 2013, George White was charged with drug-related criminal offenses in circuit court in Mingo County. In or about March 2013, Baisden and the late Sheriff, Eugene Crum, learned that White, with the assistance of his criminal defense attorney, Charles "Butch" West, was providing information to the news media and possibly to federal law enforcement officials about criminal conduct by the sheriff.
David Baisden (since then indicted and resigned from office) and the sheriff advised Prosecutor Sparks that they would seek to coerce White into firing West in order to prevent the defendant and his attorney from further providing information about criminal conduct by the sheriff. Baisden, through a known messenger, then offered White a more favorable plea agreement if he would fire West. In response, White did fire West and replaced him with Attorney Ron Rumora.
After White fired West, Sparks entered into a plea agreement with White under which three of the five criminal counts pending against White were dismissed. As part of the plea agreement, Sparks also accepted a forfeiture from White of $10,000, which was $10,000 less than the forfeiture Sparks originally intended to seek from White. Moreover, as part of the agreement, Sparks agreed to recommend that the sentences for the two counts to which White would plead guilty would run concurrently rather than consecutively. Sparks negotiated this plea agreement in part with Baisden himself and, at Baisden's behest, entered into a plea agreement more favorable than he otherwise would have. Sparks did these acts knowing that a more favorable plea agreement for White was a necessary part of the scheme to coerce White into firing West in order to protect Sheriff Crum. Because Sparks was the County Prosecuting Attorney, his cooperation in this regard was necessary to the scheme's success.
Wherefore, in or about March 2013, in Mingo County, WV, Sparks did, under color of law, willfully and knowingly subject George White to the deprivation of a right, privilege, and immunity secured and protected by the Constitution and the laws of the U.S., and did aid, abet and counsel others known to the U.S. Attorney in doing the same.
This act is in violation of Title 18, U.S. Code, Sections 242 and 2 (a misdemeanor offense that carries a possible sentence of up to one year in a federal prison).
The Information Order against Toler, it reads as follows:
In or about April of 2012 in Mingo County, WV, in an election for federal office, defendant Dallas L. Toler knowingly and willfully deprived and defrauded and attempted to deprive and defraud the residents of the State of WV of a fair and impartially conducted election process by the procurement and submission of a voter registration application that he knew to be materially false, fictitious, and fraudulent under the laws of the State of WV, in that he procured and submitted, and caused to be procured and submitted, a voter registration in the name of a person known to the U.S. Attorney which voter registration application stated that the known person was not under conviction, probation, or parole for a felony, which in truth and fact, as Toler then well knew, the known person was on probation for a felony at the time the voter registration application was completed and submitted.
This act is in violation of Title 42, U.S. Code, Section 1973gg-10, and Title 18, U.S. Code, Section 2 (a felony that carries a possible sentence of up to five years in a federal prison).
Arraignments of the defendants had not been scheduled as of press-time on Wednesday. Additional information will be released to the public as it is handed down by federal prosecutors.


text:
Using Maven2 to build projects which use JNI code
This page documents my experiences with supporting projects which use JNI code, and describes the solution I developed and the tools I use, in the hope that it may save somebody else this pain.
I work in telecoms, which means that we have quite a lot of projects which have a greater or lesser quantity of native code, either because they interface to the operating system at a low level, or simply as a way of dealing with the real-time requirements of our software. As time has gone by, we've built up a reasonably complex heirarchy of applications with native code which depend on libraries with native code, and some of the libraries even export native-level symbols to application native code.
Our investigations with converting JNI-free projects to a Maven2 build process were extremely positive, and it therefore soon became desirable to convert all of our projects, including those with JNI requirements, to Maven2. This led to the following requirements for the build process.
- The build/release process should match as closely as possible that of a non-JNI project - checkout followed by 'mvn package', etc.
- As this functionality will be common to many projects, long incantations of plugin configuration in each pom are unacceptable; it must be possible to either factor everything out to a common parent pom, or just to have sensible defaults which build everything. For example, it should be possible to make use of a library using JNI code - and have it work for unit tests, assemblies, etc - just by adding it to your
- It should be possible to run an application with as little extraneous scripting as possible. Essentially, this means: unzip assembly; run
java -jaron application jar.
- It should be possible to call functions in one JNI library from another. Typically this means having the library's include files and dll available at compile time, and having the library available for dynamic linking at runtime.
- The build process must be portable from one platform to another. I'm happy to require that building for Windows requires Cygwin, but it should be possible to have builds for different platforms alongside each other in the repository, and the right build be chosen when building.
- Our legacy build process must continue to work until the whole company can be migrated to maven2.
For bonus points:
- During the development cycle, it shouldn't be necessary to run the entire maven build cycle for each change. The user's IDE can be configured to build the Java side, so we need a means of quickly building the native side. This also offers an easier upgrade path from our legacy build system, fwiw.
Possible solutions
There are obviously many ways to skin this particular cat; I'll discuss a few of the options.
The first place to look is obviously to see if anybody else has solved this problem. I therefore made a start with the native-maven-plugin. This, however, has a number of problems, which means that it totally fails to meet my requirements.
- The showstopper is that the native code ant the java code are separate projects. This means that it's impossible to get things to build in the right order, because we have to do the following.
- compile java source to class files
- run javah on class files
- compile and link native code
- run unit tests for java code
Some messing about with a very complex project structure is possible, but it's ugly and very hard to set up for each of many projects.
- If you build a library which has a JNI component, making use of it is very complex. Essentially, maven2 downloads the jni library to the depths of your local repository, where it then can't be found by a
- update: this can be worked around by judicious use of a recent maven-dependencies-plugin build.
- Again, when you depend on a library with a JNI component, you need complex incantations in your pom, to depend on both the jar, and a separate profile for each target platform to depend on the native library.
- Building the native code always requires running the full maven build.
JNI library as an attached artifact
The next possibility considered was to build the native library as an 'attached artifact' - in much the same way as a javadoc or source jar can be attached to the main artifact. This solved some of the problems, especially the problem with build order; depending on a library with jni code was still a nightmare, however.
JNI library archived within the jar
The solution I ended up using was to store the compiled jni library in the jar alongside the class files.
This means either cross-compiling for all possible architectures, or more simply, having a different jar for each architecture. This latter fits quite well with our setup - where almost all of our machines are Linux-i386, with a smattering of win32 boxes.
Sadly System.load() can't cope with loading libraries from within a jar, so we'll therefore need a custom loader which extracts the library to a temporary file at runtime; this is obviously achievable, however.
Freehep-NAR plugin
Since I originally wrote this, the freehep project have been working on porting their nar plugin to Maven 2. As of the time of writing (13 October 2006), it's still in Alpha - but I think this may represent a more polished alternative to this problem than my solution. I'd certainly suggest that anybody thinking about this problem takes a look at it.
For an example of a project using this implementation, you may like to download simple-native-example. That directory contains source archives (eg simple-native-example-i386-Linux-c23cxx5-1.0.3-src.zip), as well as binaries compiled for Linux-i386, and javadocs, and may provide helpful examples of the concepts below.
The general idea here, as mentioned above is that we will build our JNI library into a jar, alongside the class files. That means that we end up wit a different jar for each system architecture we are targetting; to distinguish between the different versions, we actually put a system identifier into the names of the artifacts we produce. More on this below.
Directory structure
We need a place to put native code. This should naturally be
src/main/native in the standard directory layout; for a more complex project it may be appropriate to further split this into
src and
The JNI library should be built straight into a subdirectory of
${outputDirectory}/classes (ie,
target/classes); by doing so, it will automatically get built into the project jar, as well as being in the right place when running the project from an IDE which just uses the .class files straight out of
${outputDirectory}/classes. I decided to put such my jni libraries in
META-INF/lib, but this is obviously not set in stone.
Building the JNI
The first thing we need to do (after creating the .java files, with suitable
native methods, of course), is to build the JNI library. I chose to do this using a Makefile, and a
maven-antrun-plugin execution, as this makes it reusable between different build environments, and is easily run independently of Maven. It's also an easy way of making sure the right files, and only the right files, get recompiled.
The Makefile needs to:
- use javah to create .h files from the .class files in the
- use gcc to compile c into object files
- link the object files into the dynamic library.
We now need for
make to be run after the .class files are built; I did this by attaching an execution to the
process-classes phase. I've also added an ant task to write a file containing the compile-time classpath; this can then be used from the Makefile to build the classpath argument for javah.
Library loader
We now have our JNI library on the class path, so we need a way of loading it. I created a separate project which would extract JNI libraries from the class path, then load them. Find it at
http://opensource.mxtelecom.com/maven/repo/com/wapmx/native/mx-native-loader/1.2/. This is added as a dependency to the pom, obviously.
To use it, I simply call
com.wapmx.nativeutils.jniloader.NativeLoader.loadLibrary(libname). More information is in the javadoc for NativeLoader.
I generally prefer to wrap such things in a try/catch block, as follows:
We should now be at the point where our junit tests work from maven; a
mvn test should work! It should also work fine from an IDE.
The artifactId
As I mentioned earlier, we need to be able to keep builds for multiple architectures alongside one another in the repository, so we need to distinguish between different builds somehow. We do this by putting an identifier into the artifactId.
It turns out that we have to distinguish between features of a system which are hard to determine programatically - for example, the libc and libstdc++ versions used by the system. We therefore first create a system property,
${mx.sysinfo} which encodes this information. This needs to be set in `/etc/mavenrc` or `.mavenrc`: for example, on an i386 Linux system using glibc version 2.3 and libstdc++ version 6, we might have:
The precise value you use doesn't really matter (unless you want to share your artifacts outside your organisation), nor even the name of the property, provided you are consistent and the values you choose adequately distinguish between architectures.
It's then simple to use this in your pom; where previously you might have
<project>...<artifactId>my-artifact</artifactId>...</project>, add a suffix to the artifactId thus:
<project>...<artifactId>my-artifact-${mx.sysinfo}</artifactId>...</project>. Similarly, whenever we refer to that artifact, we again add
-${mx.sysinfo} to the names of the artifactIds.
Releasing the project is the same as normal -
mvn release:prepare followed by
mvn release:perform - except that you need to do the perform step on each platform you wish to support. To repeat a release, you can do:
It really is as simple as that. You should now be able to use your JNI-enabled project exactly as you would any other project - with the one proviso that, if you depend on it from another project, you must put a
-${mx.sysinfo} on the end of the artifactId. For example:
The rest of this page isn't relevant to a single JNI project - it describes some extra knobs and whistles I've added in order to handle our more extensive use of JNI.
Functions exported at the native level
Sometimes it's useful for a JNI library to export symbols for other JNI libraries to use. For example, we might want to create a "utilities" library with functions such as JNU_ThrowByName.
We therefore end up with a "library" project and an "application" project. An example of such a pair can be found at http://opensource.mxtelecom.com/maven/repo/com/wapmx/maven2/nativeexample/; the source is at http://opensource.mxtelecom.com/maven/repo/com/wapmx/maven2/nativeexample/nativeexample/1.2/.
Building an "includes" zip
We need to make the .h and .so/.dll files from the library project available when compiling the application project. To do this, I've configured the pom of the library project to build a zip file containing the includes files. We also put the .so file in the zip, as it's much easier to extract from there, it separates runtime and compiletime dependencies more nicely, and because we might as well.
Here's an example assembly descriptor (which can be packaged into the shared build-scripts artifact as below):
And a pom snippet to use it (which can be factored out to a common parent pom):
Unpacking includes and library archives
Now we need to make the build for the application project unpack the includes zip, before trying to compile the native code. We can use the dependencies plugin for this:
We thus end up with
target/extracted/include, and
target/extracted/lib; the Makefile can now be set up to use those two paths at appropriate points.
Ensuring libraries are extracted in the right order
At runtime, we must ensure that our library project's JNI is extracted (and loaded) before we try to load the application project's JNI - otherwise the dynamic linker won't be able to find the library. To this end, I have this in a static initialiser in the application:
Making the OS dynamic linker work
The operating system must be able to find the dynamic library from the library project at runtime for the application project; for Linux, this means that you have to set
LD_LIBRARY_PATH to include wherever the native-loader extracts the libraries to. If we don't, we'll get a cannot open shared object file error.
For example, to make this work when running the tests in the application project, we can do:
You obviously also need to make
java.library.tmpdir and
LD_LIBRARY_PATH agree if running java directly. A similar trick is no doubt possible in Win32 (with
PATH instead of
LD_LIBRARY_PATH), but I haven't tested that.
Also note that, on glibc 2.3.6 at least,
LD_LIBRARY_PATH is parsed at startup, and any non-existent absolute directories ignored; so unless your tmplib exists when you start, you'll still get an error. It's probably easiest just to keep
LD_LIBRARY_PATH relative.
Shared build scripts
We can make use of the unpacking of includes zips to factor out the complicated parts of the Makefile to a single Makefile which is used by all JNI projects. http://opensource.mxtelecom.com/maven/repo/com/wapmx/native/native-build-scripts/1.14/ provides a demonstration of how this might be done.
A previous version of this wiki page suggested putting the platform discriminator in the jar's classifier; I no longer recommend this as it causes problems with snapshot dependencies, and requires a hideous fudge to set a classifier on the main artifact of a build.
Contacting me
If you find this information useful, or you have problems with it, please let me know. I can be contacted at email@example.com.
8 Comments
Regarding the native-maven-plugin showstopper:
If the code could be broken into three projects, it seems like it would remove the circular dependency problem:
- main java code
- jni java code
- native code
The jni java code would have no dependencies. The native code would depend on the jni java code, so it could use the jni java class with javah. The main java code would have a compile dependency on jni java code and a runtime dependency on the native code. The main java code project would contain the unit tests.
It might be annoying to distribute two pure java jars, and a native lib for each platform. The two pure java jars could be combined into a single jar with fourth packaging project.
I've run into cases where I have more than one type of native code, or I'm using different languages and I suggest that src/main/native does not give enough distinction.
How about:
- src/main/cpp
- src/main/php
- src/main/basic
etc. That would follow the existing standard of src/main/java where the dir is designated by language rather than environment.
Scott: It's true; it is possible to make this work, and as such the word "showstopper" is probably a bit strong. However, I am still left with a number of other problems here:
- I still need to set up and maintain a forest of projects for every single native project in the company; there are many of these and sharing setup between them is difficult.
- The hoops you have to jump through to make it work are, imho, opaque, and I am left with a project structure which I barely understand, let alone any of my co-developers.
- I mentioned that, ideally, I'd like to retain the ability to build my native code with a Makefile. Doing so is difficult when the native library becomes the primary artifact of a project.
Brill: yes, if you have projects where you have a variety of languages, what you suggest makes sense. The joy of maven is such that you can configure all this yourself. From my point of view, "native" comprises the very specific case of code written to link into a native library, which is then used with the JNI. Unless you're doing something very odd, I'd imagine this is exclusively C or C++ (which I have no desire to separate), and other things belong better in, for example, src/main/scripts. There is, however, nothing in my setup which would stop you using your choice if you find it more appropriate.
Hi Richard, EXCELLENT post! I regret that I hadn't read this last week, as I just rolled my own solution. I think yours is a bit cleaner in how you're handling native compiles. However, I thought I'd mention a way to bundle native exe/bin files on a platform-independant basis, since this might help others as well. The net effect is that a cross-platform JAR file is created with native binaries for several platforms.
Basically, I'm bundling native exe/dll/so files in a special package "com.mycompany.bin" (avoiding the name "native" because of the special use in .java code). These get extracted from the jar file at runtime, as you have done. These get unpacked by an unpacker class that looks at the System.getProperty() values for "os.name" and "os.arch".
For example, a caller asks the unpacker to get the native "myprogram" program for the current platform. It could be OSX, Linux, Win, and different architectures as well. I search for a property file using the program name, os, and architecture values. This is very similar to using ResourceBundles to load natural language properties. Since the program's platform is determinate at runtime, the properties file path can also be determined (kind of like looking for "ApplicationResources_en_US.properties", but it looks like "myprogram_Windows XP_x86.properties" in this case). The properties file values are then loaded (using Apache Commons Configuration). Then whole sets of bundled files are extracted to a target path, based on the properties (commons configuration allows for arrays of property values, so an array of files is extracted based on the relative classpath).
here's an example fileset:
Once everything is extracted, based on entries in the properties files, and there were no IOExceptions's, the native code is loaded for whatever usecase exists. It's really clean because any program can use the native files just as easiliy as a JAR file from Maven. I store my native JAR bundles in my local Maven repo this way.
Since everything is bundled into one JAR file, I don't actually have to think about what platform it's running on. The appropraite files are unpacked at runtime for me. It has worked great so far. I think one of the keys to being successful in the long run is to pick a method that works, and stick with it for everything native.
cheers, Jason
Thanks for the feedback, Jason. I like the idea of having everything in one jar file - but the question is, how do you create the jar file with libraries for lots of different platforms in it? Presumably you have to either cross-compile, or have a build system which spans multiple boxes?
Actually, it's much more easier if you don't use javah to produce a .h-file which then is used from C-code. In this case native binary could be compiled absolutely independently from java and before building jni-artefact. It makes maven dependencies much more easier and straight.
In this case it's possible to create binaries on different platforms, different environments, etc, and then use maven with appropriate binary in testing environment.
A native build system may produce set of jars (merely zip-archive, even it's not necessary to use jdk) for each platform named as mylibrary-native-{$version}-{$platform}.jar containing only dll/so/lib/etc and upload it into maven-repository as artefacts with classifier (it's easy to do even not using the maven).
The maven build system would use dependency on that artefacts to build and test jni java classes.
There is one issue with this approach - it's impossible to verify on compilation stage if the binary implements all required native functions, but anyway it is covered with test-cases usually.
If anyone comes across this excellent article like I did but is struggling trying to get this working on Mac OSX.
You need to add the variable DYLD_LIBRARY_PATH instead or as well (if you want to support multiple build OS's) as LD_LIBRARY_PATH.
The NAR plugin looks to have moved: http://duns.github.com/maven-nar-plugin/


text:
Misenheimer, N.C. – Coming off the heels of an impressive win against Lees-McRae the Pfeiffer women's basketball team (3-17, 2-10 CC) got off to an early lead before falling in an 88-56 decision versus Mount Olive (13-7, 8-4 CC) on Wednesday evening.
Pfeiffer was led by 11 points from Alexis Stallard and nine points from Carter Williams. Ariana Tillman also tacked on seven points and seven rebounds.
The Falcons jumped to an early 7-2 lead off of a layup by junior Lauren White. The Trojans then answered with a 7-2 run of their own to knot the game at 9-9. Mount Olive made a layup with 13:06 left to play in the half to take the lead 11-9, a lead they would never relinquish. The Falcons answered bucket-for-bucket with the Trojans tying the game at 17 a piece before Mount Olive went on a 23-12 run to take a commanding lead at the half.
Mount Olive posted four players in double figures led by seniors Katie Paschal who had 19 and Jasmine McDonald who had 15 and pulled down nine rebounds. Paschal displayed a scorching 100% from the field in the first half until finally missing a shot with 6:15 left in the game.
Pfeiffer cut the lead down to eight before Mount Olive capitalized on a 16-0 run. The Falcons went on to shoot only 28 percent in the second half, a figure that Mount Olive looked to take advantage of, outscoring the Falcons 48-27 in the half.
The Trojans had a big advantage on the glass, outrebounding the Falcons 40-30. Mount Olive also received some help from the charity stripe going 16-24 while the Falcons went to the line only 11 times capitalizing on seven.
Pfeiffer will look to get back on track when they host Belmont Abbey on Saturday, February 8. Tip-off is set for 5:30 p.m.


text:
June 03, 2015
Note: The information entered here will not be stored or used in any way other than to facilitate delivery of this message. Please see Playbill.com's Privacy Policy for more information.
Playbill Members can now get access to specially priced tickets Tuesday-Thursday, and Friday-Sunday in the Orchestra & Mezzanine!
Click here for details.
Contact Us | Advertise: Rates & Media Kit | Privacy Policy
Send questions and comments to the Webmaster
Copyright © 2015 Playbill, Inc. All Rights Reserved.
Free Membership
Exclusive Ticket Discounts


text:
Single tickets may be purchased online and by telephone at 781-736-3400, option #5.
By Euripides
Translated by Eirene Visvardi and Leonard Muellner with his students
Adapted by Eric Hill and Eirene Visvardi
April 2-5, 2009
Mainstage Theater
Directed by Eric Hill
Featuring Liz Terry as Hecuba
Euripides' compelling story of one woman's devotion and revenge gets a new translation in this production. At the end of the Trojan War, the Greeks are unable to return home until the ghost of Achilles receives the sacrifice he demands: the death of Polyxena, daughter of the now enslaved former queen of Troy, Hecuba. Hecuba grieves the loss of her daughter and vows revenge for the death of her son Polydorus at the hands of the King of Thrace, Polymestor. Hecuba and her women plot their retaliation for her loss since justice is no longer an option in their conquered, weakened state.
Made possible through generous support from the Jaffe Foundation, the Herbert and Kim Marie Beigel New Play Fund, the Ann '56 and Clive Cummis Family Foundation.


text:
MISENHEIMER, N.C. - For the second consecutive week, a member of the Pfeiffer University women's lacrosse team has been named a national player of the week by SynapseSports.com. Freshman Katherine Athens was named "rookie of the week" after helping the Lady Falcons pick up two wins with four groundballs, three draw controls and three caused turnovers. Athens also scored five goals with an assist in wins over Belmont Abbey and Queens.
Pfeiffer will open up their 2011 home schedule tomorrow, Tuesday, March 1st with a 3:00 p.m. matchup with Gannon. Live stats will be available through www.gofalconsports.com. To view the Synapse Sports article, click HERE.


text:
This election looks like it's going to end up like the Bush/Gore contest popular vote-wise...........not exactly a mandate..........
This election looks like it's going to end up like the Bush/Gore contest popular vote-wise...........not exactly a mandate..........
I keep my PM box full. Use email to contact me: firstname.lastname@example.com.
Gonna get another one locked before it's over, huh?!
Hard working person...live in rural conservative area....voted for Senator Obama!
Chad and Keith, I know that you still love me though
"My most prized possession was my library card from the Oakland Public Library." Bill Russell
Its all over but the shouting....
Obama is at 200 electoral votes. With CA, OR and WA, he has enough and it ain't likely that any of those states are going red.
Liberals couldn't care less about a mandate. Once they're in power they'll govern like they own the place and to heck with the 49% of us who voted against them. We're just a bunch of clingers.
Ok is all I can say to all the liberals, you guys have a pet now. Lets see what he can get done to solve this countries problems. He will have a congress that will support his plans. Let's see just how quick he's going to change us!! Remember you might just get what you asked for!!!!
NAFC FC Cody Cut A Lean Grade "Grady" NAFC Paddle Creek's Pack Your Grip "Traveler"
Dont wave your phony patriotism in MY face! If you really love America, open your wallet and hire an American kid to build what you buy. Doug Fraser (paraphrased) 1980
Real Americans buy American.
Snowshoe's All American Guy SH, UDX, WCX ... CODY ... at the bridge
CH. Snowshoe's Girl Crazy MH, UD, WCX, SDHF, OS ... PRESLEY ... at the bridge
Millpond's Baby Boomer MH, QA2 ... BABE (Q win, 2 2nds, 4th, 3 Open greenies, Am greenie, $20 )
Snowshoe's Crazy For Lovin You SH ... NELSON


text:
When the VoIP service has been configured in the mobile device, the internet call can be set as default call type in the following way.
- go to Menu > Contacts and scroll left or right to the VoIP service submenu (e.g. Provider)
- select Options > Settings
- set Default net call service = Yes (or Default service in certain devices)
After the above change, VoIP internet call will be established when calling from the dial button. The voice calls can still be dialed by selecting Options > Call > Voice call.


text:
I'm not sure who is happier that school is out for summer, Margaret or me. Getting up at 6 a.m. to get breakfasts and lunches ready for Bill and Mar and then driving Mar to school and then working my full day has really worn me down. But I know that Margaret is equally … moreSee all Haute Mamas entries
I have a bunch of perennials in my gardens because I don't want to plant annual flowers every year in addition to all the veggies I plant in the garden. Last year, I let the columbines do whatever they wanted and I learn that what they want to do is take over the world, so this … moreSee all Let's Get Dirty entries
I'm heading out of town in a few days, back to Georgia and the land of humidity and bugs. As I started to pack I thought, "I have no travel clothes..." I have work clothes. I have gardening/cleaning/lounging clothes. I have sports gear clothes. I even have the … moreSee all Penny Pinchers entries
Fruita and Grand Junction mountain biking trails have grown by leaps and bounds. Find trails, ideas and more.
It's not that they know so little, it's that so much of what they know is wrong.
I'm Lisa, a twenty-something year old girl who dreams big and feels life deeply. I blog about ideas on cooking, entertaining, home decor, party ideas and more!
Helping you discover books, music, movies and events at your Mesa County Libraries.
Hi! I'm Stephanie, and I like lists almost as much as I like overusing parenthetical statements.
A reference-rich site explaining fun, creative arts and crafts and knitting projects.
It seems only fair that after a month of asking you to fill out our Greatest Love Song Ever bracket, that Rachel and I post ours. As you'll notice, we have pretty different tastes in music. I'm not sure Rachel had heard of Josh Groban before she met me. If she had, she … moreSee all Breakfast for Dinner entries
I've wanted to give fatbiking or snowbiking a shot for a while but last winter we had such good snow conditions the skis always took priority. After all, when you get back to back powder days all winter long, it would be rude not to take advantage of it. This year is a whole … moreSee all The Outdoor Junkie entries
FRIDAY MAY 29 Main Stage (4th & Main) 5:30 p.m. - Changing Lanes Experience 8:30 p.m. - Big Sam's Funky Nation Bookcliff Stage (600 block breezeway) 2 p.m. - Destinee Reed 3:30 p.m. - Shotgun Hodown 5 p.m. - Zolopht 6:30 p.m. - The Williams … moreSee all Music On the Goe entries
Just as you thought we might make it through without a spring frost, the kind that catches fruit buds just waking and turns those dreams of apricot tarts into cooking with cans of chunk pineapple, at 7 .m. Friday the thermometer dropped to 23 degrees and with it the apricots. Not all of … moreSee all Wine Openers entries
Most people have no idea of the perilous condition of our nation's wildlife. Populations of the majority of species are under stress from loss of habitat. Public land and public land managers are recognized for protecting certain large tracts necessary for effective wildlife … moreSee all Birds and More entries
Look Forward toMondaysFind a job you love, and transform the way ...
Staff AuditorConduct financial, internal control and compliance audit...
RN/LPN & CNAFT, PT & PRNCurrent CO license and CPR...
HydroelectricOperations SpecialistThe City is seeking acandid...
SERVICECOORDINATORPart-time (20 hrs/wk)opening for profession...
ExperiencedMechanicfor Heavy Equipment, truck and crusher mainten...


text:
I just received a second response to my request for information on my family from Vodo Cadore. The cover letter is in Italian and I am wondering if there is someone who would be able to help me translate it. Even though I sent it to the Office of Registry it seems that they send the request to the church and they sent me information about my great grandmother's side and my great great grandfather's side. They also sent a copy from it looks like a family registry book on both sides of the family and highlighted the names that are directly related to me. Please let me know if someone can help me with the translation and I can email a copy.
Thank you!


text:
You guys have probably noticed that I haven't been writing a lot over the past two months. And that most of my posts have been about Star Wars. Well, there's a reason for that. Looking back on it, I think I've been playing so much SWTOR not only because it's the new hotness, but also to avoid logging into WoW. Which is somewhat ironic if you take the view that people often play WoW to avoid real life.
When I last talked about my guild in the beginning of November, I mentioned that we had gone through a split, had moved to a more populated server, and were looking at merging with another 10-man guild to get back up to 25s.
That merger turned out to be the worst mistake in the history of our guild.
There is a type of person who believes that all failure is caused by people playing badly. That skill is everything in this game. That the only response to any problem, any difficulty, is to tell people to play better, or recruit better people to replace the failures. That you must always take the "best" raiders you have to a raid to ensure success.
There is a degree of truth in this. But in my view, there usually there are a lot more elements that you can look at before you conclude that the problem is solely due to bad play. Sometimes the strategy is not quite right. Sometimes people misunderstand the plan. Sometimes people just make mistakes. Sometimes you just need practice, to wipe a few nights before everything clicks. Sometimes you just have to go with the army you have, rather than the army you wish you had.
In any case, the merging guild was entirely made up of people who held the first view. They were all very good players, at least pure skill-wise. But their response to any wipe, any failure, was to yell at people, to point fingers and berate them. Sometimes the yelling would start before the attempt even finished, while we still attacking the boss.
It was the worst raiding experience of my life.
And of course we started hemorraging members. In two weeks we went from 35 raiders online to barely 25. We lost some essential people from our old guild before the merger.
The final blow came last week. We only had 23 raiders on, so it was decided to take the 10 "best" people and down some Heroic bosses for progression. Apparently that team had trouble and drama blew up, with lots of yelling and finger-pointing, and the upshot was that the entire group of merged people left the guild.
So we're back down to maybe a 10-man worth of people, minus those people who left earlier. I'm not really certain what will happen. A lot of the people who remain sound rather "shell-shocked", with their confidence in their ability to tackle Heroics broken.
Wednesday, January 11, 2012
In the Wake of a Bad Merger
You guys have probably noticed that I haven't been writing a lot over the past two months. And that most of my posts have been about Star Wars. Well, there's a reason for that. Looking back on it, I think I've been playing so much SWTOR not only because it's the new hotness, but also to avoid logging into WoW. Which is somewhat ironic if you take the view that people often play WoW to avoid real life.
14 comments:
- Zwingli/Caligan said...
I once heard it said, "a Partnership is the only Ship that won't sail."
I was once consulting with someone that was thinking of merging his businesses with another. The CEOs were like minded. They had a similar culture... AND...they had similar problems.
My question to him was, if you are so alike, what makes you think your problems won't be the same...only larger?
He got back with me a month later about how the merger fell through.
Mergers (WoW & IRL) can work, but honestly that may not be the best option at any given moment. At times, we need to let something die so that something else can grow in it's place.
I hope that your guild gets better w/ the other folks gone. I also hope that you're having a blast in SWTOR!
All the Best,
- 1:05 PM, January 11, 2012
- Shannara said...
Just remember, the people in the first group do not have long lives. I mean seriously, those kind of people die pretty young due to their stupidity for believing in such lies.
Skills only matter? LOL, any real adult knows that is not true.
- 1:07 PM, January 11, 2012
- Vatec said...
Ah, guild drama, one of the reasons so many people end up choosing to solo in MMOs. Guild drama at least partially contributed to my exit from Dark Age of Camp-a-lot, The Exciting Game Of Riding Horses And Pointing Fingers!(TM).
As a result, my forays into EQ2 and AoC involved guilds composed primarily of RL friends and alts. In Rift I was lucky enough to stumble into a really fun, laid-back guild.
We made the mistake (seen now with 20/20 hindsight) of recruiting a great guy from another server. He brought friends, who were also good people. But one of the sad facts of life is that even good people don't always get along. They have differing values and viewpoints that often lead to subtle conflict.
One of them was a great, helpful guy who was, unfortunately, really into PvP. He became frustrated that no one else in the guild was really interested. He became frustrated because of perceived imbalances in classes, server populations, and skill levels. He became vocal about it. He finally went back to his original server.
Like the tiny crack that can prove the fatal flaw in a mighty dam, all the people who had transferred from the other server started coming up with excuses as to why they were unhappy. We weren't raiding enough. We didn't PvP enough. The server population was too low. The Auction House on this server sucked. Even when we addressed some of the issues, they came up with other issues. Then, after dragging guild morale down with their constant complaining, they all moved back.
Of course, by then, natural attrition plus low morale had caused other members of the guild to stop logging in. And the worst part is, I can't even say that anyone was really "wrong" or "bad." There's really no one to blame.
So yeah, I have a good idea where you're coming from. Rift just isn't as much fun to play now; and it's not just due to boredom or burnout, but also due to the guild drama.
- 1:28 PM, January 11, 2012
- Jeremy said...
Sorry this happened to you.
It seems the longer a guild exists, the more likely it will eventually disintegrate. At one point my guild was a constant second or third on our server as far as progress. We've been through the near collapse, re-recruitment, failed merger and some people who didn't work out phase. We're now down to a ten man group that likes to play together and is lucky when we stay in the top ten. Although our current group has about 6 members that have been playing together for years, others have come and gone. With each of those new personalities our group dynamic has changed some. Just last week, we had a loot argument (A HUGE NO NO for us and something that has NEVER happened before). After it was resolved we talked about a guild being like a family and how one might tend to fight guildies the one often does with siblings.
Hopefully, the ten man team you have left can find a way to get along and have fun together. If you can make it fun and the people have half a brain (meaning they learn from their mistakes) then you can still progress in WoW.
Good luck.
- 1:35 PM, January 11, 2012
- Logtar said...
I am sorry to hear about your experience. I've seen both the good and bad side of mergers... in the end it is all about the people and what your goal is. You have obviously figured out that skill<>success without the right attitude. I have seen the whole yell thing work on a small scale, but it does not last forever, eventually people want to be treated like adults.
I think 10 mans are a better environment if you want to have fun... pushing progression just has never sounded all that appealing to me because of the pressure it puts on people.
- 1:37 PM, January 11, 2012
- Beruthiel said...
Rohan -
We should go get coffee and talk. Even if it's virtual coffee (/pour a cup). I 100% understand and feel everything you shared above and is something that has been weighing heavily on me as of late.
I hope you land on your feet, wherever it is you land.
- 2:18 PM, January 11, 2012
- Darraxus said...
I am already going to be cancelling my SW:TOR account. I enjoyed it, but once I hit level cap it died down for me. Nobody doing level 50 flashpoints. PVP and Illum is too laggy to be viable for me.
Unfortunately, all of my friends are playing it.
- 2:54 PM, January 11, 2012
- Aidrana said...
Hi Rohan-
Stumbled on your post through a RT. I have always been against mergers because it seems like nothing positive really comes out of it. Yes, people might gain more bodies to raid 25's, but is it *really* worth the heartache that you've just described?
Things like this make me really timid when it comes to mergers. I am sorry you went through that- here's to hoping for the best for you and your team!
- 3:08 PM, January 11, 2012
- Ironshield said...
Sorry to hear of your guild's misfortunes, brother. These things trouble us in our days both online and offline. It is personal. Like the disappointment of a bad relationship gone bad and broken apart.
Good news: there ARE other fish in the sea and your guild WILL add more of them to your roster. You know this. Your guildies might not feel that way today, but they know they were successful long before you ever merged and will be successful again without the 'mergees'.
When we got smaller than a 10m, we started up a raid group on the server without requiring people to change guild tags. Not a pug. Recurring weekly raid with roster just as if in guild. Same discerning reviews before adding someone. It has helped us meet and recruit more people. And we're having fun raids again!
One thing we all know: it'll work out.
Chin up, brother. Swing the Light!
- 4:34 PM, January 11, 2012
- The Renaissance Man said...
My guild went though a pretty ugly merger back in late wrath, and in its aftermath, we wound up dropping down to 10 man raiding rather than risk another. It was a dark time for us, and I sympathize with you for going through it now, especially with a guild that you've been working with for such a long time. I hope you find something that can keep your spirits up, whatever that may be.
- 12:48 AM, January 12, 2012
- Liore said...
Oof, I know what it's like when one's guild is going through a bad patch. It sucks. :(
For what it's worth, in my experience there was no hole that I could not dig the guild out of as long as I was willing to put in the effort. Things will get better, more people will show up, and six weeks from now I bet you'll all be in a much better place.
- 11:44 AM, January 12, 2012
- Rorik said...
Apparently the merging players didn't realize that teamwork is also a skill, one which they are sorely lacking.
It always saddens me to hear of people getting yelled at over a video game.
- 12:46 PM, January 12, 2012
- RJ said...
There is a degree of truth in this. But in my view, there usually there are a lot more elements that you can look at before you conclude that the problem is solely due to bad play. Sometimes the strategy is not quite right. Sometimes people misunderstand the plan. Sometimes people just make mistakes. Sometimes you just need practice, to wipe a few nights before everything clicks. Sometimes you just have to go with the army you have, rather than the army you wish you had.
Now, I'm not saying I disagree with the point you are making as a whole, because you're right. But I would point out that the only example in this list that ISN'T attributed to player skill of one kind or another is the last one. Developing a plan and presenting it to the fellow raiders is itself a pretty key skill for a raid leader, and being able to learn from deliberate practice is also a good skill for anyone to have.
That said, I'm sorry to see that things blew up on you. My own guild basically crumbled silently when TOR came out, even though the majority of the players actually WASN'T switching (or, at least, planning to play both). It made me pretty sad to keep logging in for the regular 10s timings to find out that NO ONE was online at all.
- 6:34 AM, January 13, 2012
- Lassirra said...
Usually the reason why things like this fall through is because people aren't on the same page. I've seen guilds that are purely focused on skill and execution succeed, and I've seen guilds that are purely focused on maintaining positive interpersonal relationships succeed. It sounds like the reason your merger didn't succeed was because you had two groups of people with disparate ideas about priorities try to play together. That doesn't mean the people that stayed are failures and it doesn't mean the people that left are jerks. It just means your priorities weren't the same, and it took a live raid to figure that out. If your guild still wants to move forward, it just means you'll have to find people that feel the same way you do. Those people are out there, it will just take time to find them. In the meantime, all you can do is work with what you have to try to keep up some momentum. Maybe that means doing 10s, maybe that means pugging spots to fill 25s. Either way, I wish you luck and I hope you find what you need to get back to having fun in-game.
- 6:23 AM, January 20, 2012


text:
SNOW HILL — What a difference a year makes.
Entering this season, the Greene Central girls basketball team hadn't won a game in 652 days, including an 0-for-21 campaign a year ago.
That streak was snapped the first time Greene Central met North Lenoir earlier this year in both teams' season opener. With Friday's 53-43 win over North Lenoir, the Rams improved to 3-2.
This one didn't come easy for the Rams, as North Lenoir (1-4) led by a bucket at the half. A disastrous third quarter saw the Hawks go 1-for-14 (7 percent) from the field, partly a result of the Rams' increased intensity on defense and partly as a result of the Hawks' inability to hit open shots. North Lenoir also left 13 points at the uncharitable charity stripe, going just 11 of 24 (46 percent) from the free throw line.
"We've got to hit open shots," NL coach Calvin Sutton said. "We had a great first half, but we have got to execute better. We had a lot of freebies that we didn't convert."
While the Hawks were struggling to convert, the Rams hit their stride and went on a 17-3 run in the third quarter to take control of the game.
"We finally got an offense that could work," first-year Rams coach Meredith Franklin said. "We got back to basics, ran our offense, played good defense and had fun and played some ball."
No one played a bigger role for Greene Central than wunderkind Malaysia Lancaster, a freshman point guard who scored 25 points to go along with nine rebounds.
"It was fun," said Lancaster, who said she sees herself as a "leader" and "a little coach on the floor."
"If I have it, I'll score," she said, "but if I see someone else open, they should shoot too."
The Rams also got 13 points and five steals from Dashika Mason, while Bria Payton contributed eight points and nine rebounds.
The Rams won despite turning the ball over 27 times to the Hawks' 26 but made up for what was messy basketball at times by forcing a number of NL turnovers in the back court.
"We're young, and we're learning," Franklin said. "We've got to slow down and calm down, but I think they're getting it."
North Lenoir led 21-19 at the half, largely thanks to senior Deshona Cox, who finished with 14 points and 20 rebounds (eight and 11, respectively, in the first half). The Hawks also got 10 points out of senior Amanda Bizzell.
In the boys game, North Lenoir completed a season sweep of the winless Rams, beating Greene Central 84-74.
With the win, the Hawks improved to 2-3. They led by as much as 19 in the third quarter, but a furious fourth-quarter rally by the Rams cut that lead to six at 80-74 with just under two minutes to play before the Hawks sealed the victory at the free throw line.
"I'm pleased with the effort we put out," NL coach Anthony Loftin said. "I thought we should have closed a little bit better, and we probably played to the crowd a little bit, but I am tickled to death with the victory."
The Hawks got double digit scoring from Jaquaz Jones (18 points, five assists) Zongio Troy (15 points), Braxton Davis (12 points, four rebounds) and John Carlton (11 points, five rebounds).
Greene Central was paced by Jalyn Harper's 22 points, six rebounds, four assists and four steals. Brandon Belcher added 18 points and four rebounds.
North Lenoir 9 12 8 14—43
Greene Central 11 8 17 17—53
HAWKS (1-4) — Deshona Cox 14, Amanda Bizzell 10, Varnell 6, Supel 4, Foster 4, Porter 3, Goodall 1, Naspeicher 1.
RAMS (3-2) — Malaysia Lancaster 25, Dashika Mason 13, Payton 8, Campbell 4, Stevens 2, Robinson 1.
North Lenoir 20 17 26 21—84
Greene Central 10 19 19 26—74
HAWKS (2-3) — Jaquaz Jones 18, Zongio Troy 15, Braxton Davis 12, John Carlton 11, Summer 8, Sutton 6, Hough 4, King 4, J. Robinson 2, Rouse 2, K. Robinson 1, Pridgen 1.
RAMS (0-5) — Jalyn Harper 22, Brandon Belcher 18, Biggs 8, Braswell 8, Rozelle 6, Bates 6, Smith 4, Wooten 2.


text:
Media Inquiries: For all MAVA media inquiries, please contact us at 703-506-9300 or email firstname.lastname@example.com.
Check back regularly for news, coverage, and announcements about MAVA.
NEW YORK--(BUSINESS WIRE)--AOL Inc. (NYSE:AOL) today announced it has completed its acquisition of Adap.tv, Inc., a leading global, programmatic video advertising platform for the world's largest brands, agencies, and publishers.
Adap.tv is the only complete global programmatic video technology stack across all screens currently in the marketplace and will operate independently as part of AOL's video organization. It will be included as part of the overall solution offered by AOL Networks to leading publishers, advertisers and agencies seeking to maximize the value of their online investments.
"With the addition of Adap.tv, AOL's leadership position in digital video is further solidified," said Tim Armstrong, Chairman and CEO of AOL. "AOL is well positioned to capitalize on two clear trends in the video space – the movement of advertising dollars from linear to online video and the shift from manual transactions to programmatic media buying. We welcome Adap.tv and its extremely talented employees to the AOL team."
Adap.tv will be a part of AOL's Programmatic Upfront - an inaugural event for the industry - slated for September 23, 2013, where hundreds of digital executives will come together to experience the momentum behind automating manual processes and the creative thinking that comes from that efficiency.


text: Spring River Art Gallery Ozarks Region View Website Calculate Trip Hardy Save to foursquare Get Directions Overview:Works from over 20 Northeast Arkansas and Southeast Missouri artists representing a eclectic mix of mediums, styles, and personalities. Many of are award-winning artists; housed in the restored Cochran Building, listed on the National Register of Historic Places. Address: Spring River Art Gallery 112 B Main Street Hardy, AR 72542 Phone: 870-856-2727 Website: http://www.springriverartistsguild.com/ E-mail: firstname.lastname@example.com GPS: N36.3156113 W91.4825870 Payment Methods:VisaMasterCardDiscover Card Miscellaneous On or Near: Spring River


text:
'Pros and Cons' of St. Patrick's Day
Like us on Facebook!
Recent Headlines
in Music
This week's top rock tracks
LISTEN: This week's top rock songs, according to the latest Billboard chart.
PLAYLIST: 19 of the best Summer songs
Memorial Day marks the unofficial start of summer. Start your season off right with this playlist spanning the '60s to now.
Netflix: What's coming and going in June
Take this long weekend to binge on shows and movies that are leaving Netflix and get a sneak peak at what's coming next month.
REVIEW: Disney goes meta at the multiplex with 'Tomorrowland'
Long before the credits roll, Tomorrowland will have you craving a theme park turkey leg and planning a meet up at Mr. Toad's Wild Ride.
in Entertainment, Sports, Viral Videos
WATCH: Getting married by The Rock
It's normal to cry at weddings, but you'll laugh at this one too.


text:
Image may not necessarily represent the actual item -Please read the title and description before purchasing.
Last Price: $853.13
Guns can only be shipped to a location within the USA that holds an FFL (Federal Firearms License) - this can be your local gun shop, pawn shop, sporting goods store, etc. Your local gun dealer will then handle the transfer of the firearm to you.
Please ensure that you have familiarized yourself with the process before placing a firearm order. Please note that you must confirm your acceptance of all of these policies to place a firearm order:
The Model 70 Ultimate Shadow SS features an ultra-tough all-weather synthetic stock with raised rubber gripping surfaces for a sure hold under adverse conditions. Every stock contour and ridge is carefully engineered to provide maximum strength and efficiency with minimum weight. Rifle features Sporter Weight Free Floating Stainless Steel Barrel for years of pinpoint accuracy. The Model 70 features a Pre-'64 Style Controlled Round Feed with Claw Extractor that fully controls cartridge from magazine, to chamber, to ejection and WinSorb Technology Recoil Pad for optimal protection against felt recoil.
Please Note: This description may represent a general group of products. Please read the item's title and specifications for more specific information about this particular item.
Action : BoltCaliber : 30-06 SpringfieldBarrel Length : 24.0"Capacity : 5+1Trigger : M.O.A. Trigger SystemSafety : Three PositionLength : 44.75"Weight : 7 lbsStock : Synthetic BlackFinish : Stainless Steel
Reviews of Winchester Model 70 Ultimate Shadow SS Rifle 535211228, 30-06 Springfield, 24" BBL, Bolt Action, Black Syn Stock, Matte Stainless Finish, 5 + 1 Rd
As thanks for your feedback, we will send you a $5 coupon code for writing a product review!
Just click the 'Write Review' button on the product's information page.
Enter your UPS tracking number to track your order
Firearms | Handguns | Rifles | Shotguns | Tactical Rifles | Tactical Shotguns | All Manufacturers


text: The bottom heating element wasn't working in top oven Kevin Scott W. • Parker, CO • January 09, 2015 Appliance: Frigidaire Frigidaire/electric Wall Oven PLEB30T8CCB My Repair & Advice Before we replaced the board, my wife tried to replace just the element. We had one we had ordered several years ago when this same thing happened. When that didn't work we replaced the board and could see where the old board was damaged so we figured this was the solution. It would have been except the bottom element my wife used to replace the old element (which was fine but had been thrown out figuring the new one was new so why keep the old one) was 1" shorter in the back than the old one. Unbeknownst to us, that one inch was very important as, some of the insulation had moved around and exposed metal that the back of the element was pushing up against. So as soon as we turned it one it was metal on metal and it burned the connectors right off. After a couple connectors blew off and we put our fingers back there and could feel the metal, we figured out what was going on and we were able to find a work around so there was no more metal on metal and the oven works great! So we had two issues, the original was the board was out and then our own made problem of to short of ends on the element. Was this review helpful to you?


text:
FootJoy Women's LoPro Collection Golf Shoes
Product Information:
Add style to your game with the FootJoy® LoPro Collection™ golf shoe. Full grain leather uppers offer outstanding comfort and breathability through your entire round. Extra-thick PU Fit-Beds® with Dri-Lex® covers provide cushioned underfoot comfort and closely mimics the natural shape of the foot. Pulsar™ Cleats by Softspikes® are the number 1-selling cleat and give you an increased sense of grip and walking comfort.
- Full grain leather uppers offer outstanding comfort, breathability and durability
- Extra-thick PU Fit-Beds® with Dri-Lex® covers provide super cushioned underfoot comfort and closely mimics the natural shape of the foot
- LoPro Last features full-rounded toe character with a slightly shallow forefoot and a slightly narrow heel
- DuraMax™ rubber outsoles provide turf gripping, performance, and durability
- Pulsar™ Cleats by Softspikes® are the #1 selling cleat in golf and the overwhelming choice of touring professionals worldwide. These cleats feature all the same turf grip and walking comfort advantages of Black Widow plus the additions of radiused legs for extra durability and cleat webbing for easier cleaning
- FootJoy
Country of Origin: ChinaWeb ID: 21911696
Customer Reviews:
Rated 5 out of 5 by 4 reviewers.
Rated 5 out of 5 by DeineMutter LOVE THESE!! These shoes are so comfortable! Not to mention they match my entire golf wardrobe. I was always annoyed with how unfashionable every other pair of golf shoes I owned. Finally I have a pair of shoes that match my golf game...EXCELLENT!! July 22, 2013
Rated 5 out of 5 by Kathleen Great looking shoe! I haven't worn these shoes yet for a round of golf, but just trying them on at home, they fit great. I have a big, wide foot: Size 11 and although this shoe didn't come in wide, it fits fine with fairly thick socks. I love the colors! The only color missing other than black is green. They will go with nearly everything in my wardrobe (as if I needed that to happen). They seem to have very good support. May 18, 2014
Rated 5 out of 5 by golfonmymind Fashionable & Comfortable I loved this shoe! It's unique and really comfortable. The foot beds are nice and cushioned too. I am pretty consistent in my shoe size but this shoe runs long so I have to wait until the inventory is stocked up again to reorder 1/2 size smaller. Can't wait to get my size and wear them on the course! March 27, 2014
Rated 5 out of 5 by Redahecca Love the colors on this shoe I'm confident with FootJoy and can order it online. Really comfortable on my difficult to fit feet. The hard leather shoes won't work, so this soft style is great for me. Haven't worn it on the course yet, but it promises to be a winner. September 24, 2013
1-4 of 4


text:
You are visiting our UK site. Click here to view our US site
Incense Sticks
High quality incense sticks from South Korea and Japan, designed to set the mood in any clinic.
Incense Sticks
Akebani SticksClassically scented Korean incense sticks
Price: £6.00
[more info]
Smokeless Akebani SticksSmokeless non-scented Korean incense sticks
Price: £6.50
[more info]
Subscribe To CMT
Shopping Basket
Your basket is empty!
Change Language
Change Currency
Events Calendar
Master Tung Acupuncture Parts 1 & 2 with Philip Weeks ( 7th-8th May 2015)
Tung Acupuncture is well known for it's quick and spontaneous results... [more]
Tongue Diagnosis with Philip Weeks (5th June 2015)
Tongue Diagnosis is an important component of holistic diagnosis... [more]


text:
LOUISVILLE - The Miami University softball team opened play at the Red and Black Tournament with a pair of close defeats on Friday. The RedHawks dropped a 4-3 contest to Austin Peay in eight innings in the opener. Miami then fell to 13th-ranked Michigan, 2-0, in the nightcap. The RedHawks are now 2-10 on the season.
The RedHawks struck first in the opener against Austin Peay (6-3) with two runs in the bottom of the second. Allie Larrabee led off with a single through the right side. After the Governors recorded a pair of outs, Kylie McChesney singled to right field to move Larrabee up to third. McChesney then stole second. On the attempt to toss her out, the catcher's throw sailed into center field, allowing Larrabee to come home and score. McChesney then made it 2-0 when an error on a Remy Edwards ground ball allowed her to score.
Paige Myers kept the Governors hitless until the top of the fourth when a double, followed by a single scored a run. In the bottom of the frame, Taylor Shuey led off with a bunt single and stole second. Two batters later, Edwards singled her home to make it 3-1.
With the bases loaded in the top of the fifth, an error allowed Austin Peay to score two runs and tie the score at three. Miami had a chance to win the bottom of the seventh when it got two runners on with one out, but the 'Hawks were unable to bring the winning run home.
Playing the international tiebreaker rule in the eighth inning, the RedHawks were able to get the Governors' placed runner out at home on a ground ball. Austin Peay was able to score a run later in the inning however, to take a 4-3 lead.
In the bottom of the eighth, Megan Mattera was placed on second base. Taylor Shuey was safe on a bunt attempt and then stole second to give Mimai runners at second and third with no one out. After a groundout, Edwards drove a ball to centerfield that was caught. Mattera attempted to score on the sacrifice, but the centerfielder made a great throw to get her out at home and give Austin Peay the victory.
Tiyona Marshall had a strong game for the 'Hawks in the opener, finishing 3-for-4. Shuey was 2-for-3 with one run scored. Myers allowed one earned run on five hits in 4.1 innings. She struck out nine.
Facing the 13th-ranked team in the country in the nightcap, Mattera was up for challenge the strong Michigan (16-5) offense would bring. The sophomore allowed only four hits in six innings pitched. She allowed a single earned run in the bottom of the first inning. The Wolverines would get their other run in the bottom of the fourth off an error by Miami on a stolen base attempt.
Against the reigning Big Ten Pitcher of the Year Hailey Wagner, the RedHawks were able to manage only two hits. Their best chance to score came in the first inning when Kayla Ledbetter walked and advanced to second base on a groundout. It was the only runner Miami was able to put in scoring position.
The RedHawks will face another challenge on Saturday when they face host, 14th-ranked Louisville at 2:30 p.m.


text:
Forgot Your Password?
Take 60 seconds and you'll get full access to everything.
Join now!
Make your hair appointment now. These 30 gorgeously different bobs will have you heading straight to the salon for a new look
Showing 1-1 of 1
Love Celeb Hairstyles?
Get them in your inbox each week.
Please enter a valid email address.
Thank you for signing up!
Please add us to your safe send listso our emails land in your inbox.


text:
HOME NFL San Francisco 49ers Gear San Francisco 49ers Collectibles NFC Championship Merchandise (3 items) Product ID: 1108357
Main Content
Be ready to witness the 49ers and the Ravens collide on football's biggest stage as they battle for the title of Super Bowl Champion with this silver Flip coin card from the Highland Mint. It features a minted 39mm silver-plated Super Bowl XLVII flip coin stunningly displayed with a commemoration of both teams' road to the Super Bowl including scores from the regular season and playoffs—all captured in a protective 4" x 6" acrylic case! This set is a limited edition of 10,000 and is officially licensed by the National Football League!
- Acrylic collectible coin card
- Card measures 4" x 6"
- Certificate of Authenticity included
- High-quality team graphics
- Officially licensed NFL product
49ers Customers also liked:
Special event items are produced by manufacturers only after the outcome of a game or event. These are advanced sale items and will ship immediately after they are received in our warehouse.
Manufacturer direct items are shipped directly from the manufacturer. These items are not available for international or expedited shipping.
Customized items can be personalized with options such as your name, your favorite number, and/or designs. Some options may be limited by league rules.


text:
The Spring Framework is a leading full-stack Java/J2EE application framework. It is aimed primarily at Java projects and delivers significant benefits such as reducing development effort and costs while providing facilities to improve test coverage and quality. It also has mechanisms for allowing beans to be backed by dynamic language code including Groovy and other languages.
Let's have a look at how to use Spring's support for writing dynamic language backed beans to extend an existing Java application. The existing Java application prints out information about countries in sorted order. We want to be able to add new countries and new sorting algorithms but using different languages for each one. Our goal is to not have to change the original Java code but add the new features just through the application wiring.
The Existing Application (Spring and Java)
Suppose we have the following interface:
And the following implementation class:
Spring supports the Dependency Injection style of coding. This style encourages classes which depend on classes like
USA not to hard-code that dependency, e.g. no fragments of code like '
new USA(...)' and no '
import ...USA;'. Such a style allows us to change the concrete implementations we depend on for testing purposes or at a future point in time as our program evolves. In our example above, we might declaratively state our dependencies in a
beans.xml file as follows:
In this example, the
<constructor-arg/> element allows us to use constructor-based injection.
Having done this, we can get access to our beans through a variety of mechanisms. Normally, access to the beans is mostly transparent. In our case though, we are going to make access explicit so you can see what is going on. Our main method might look like this:
Running this results in:
Spring and Groovy
We can extend this example and introduce Groovy in a number of ways. Firstly, we can create the following Groovy class:
And this one too:
So long as the corresponding
.class file is available on the classpath (e.g. by your IDE or by manually running
groovyc), we can simply reference this class in our
beans.xml file. E.g. for the first class we can use:
Alternatively, if the source file is on the classpath, we can use special Spring notation to reference it, e.g. for the second class we can use:
In these examples, the
<property/> and
<lang:property/> elements allows us to use setter-based injection.
Spring and JRuby
If we prefer to code in another language (with a few restrictions - see below), Spring supports other languages too, e.g.:
Spring and Groovy Again
But wait there's more ...
Suppose now that we wish to sort our countries according to population size. We don't want to use Java's built-in sort mechanisms as some of them rely on our objects implementing the
Comparable interface and we don't want that noise in our Ruby script. Instead we will use Groovy. We could simply write a Sort class in Groovy and reference as we have done above. This time however we are going to use an additional Spring feature and have the scripting code within our
beans.xml file. First we define the following Java interface:
We can then include the Groovy sort code directly into the
beans.xml file as follows:
Putting it all together
We now combine all of the approaches above in a final example.
Here is the complete
beans.xml file:
Our Java code to use this example looks like:
And the resulting output (with a little bit of hand formatting) looks like:
What we didn't tell you yet
- Spring supports BeanShell in addition to JRuby and Groovy
- Spring supports the concept of refreshable beans when using the
<lang:language/>element so that if your bean source code changes, the bean will be reloaded (see GINA or the Spring doco for more details)
- The Groovy scripting examples in the current Spring documentation are based on an old version of Groovy, ignore the
@Propertykeywords and use the latest
groovy-all-xxx.jarinstead of the jars they recommend
- The
<lang:language/>element currently only supports setter-based injection
- Spring automatically converts between the object models of the various languages but there are some limitations (particularly with JRuby - see the next section)
Current Limitations
Currently using the Groovy language through Spring is extensively supported. Using other languages like JRuby takes a little more care. Try restricting your JRuby methods to ones which take and return simple data types, e.g. long and String. You may also find that certain operations don't work as you'd expect when working between Ruby and other languages, e.g. if you defined a
compareTo method in our
Fiji.rb file, it would return
long by default rather than the
int which Java is expecting. In addition, the
compareTo method takes an
other object as a parameter. Currently the wrapping of this other object from Java or Groovy into a Ruby object hides the original Java methods.
Further Information
- Section 11.5 of GINA
- Spring documentation for scripting
- The Spring example in Groovy and JMX


text:
Pediatric Dentist
Click Here To Visit Our Gainesville Family Site
3535 Thompson Bridge Road
Gainesville, GA 30506
Mon - Fri: 8:00am - 5:00pm
get directions
Click Here To Visit Our Lilburn Family Site
609 Beaver Ruin Road NW,
Suite B
Lilburn, GA 30047
Mon - Fri: 8:00am - 5:00pm
get directions
Would you like to tell a friend or family member about your experience at our dental office?
You can simply click on the link below to REVIEW US now. We appreciate you taking the time to give us feedback about your visit, and we look forward to continuing to exceed your family's dental needs.
Write A Review