text:
Aquara is een gemeente in de Italiaanse provincie Salerno (regio Campanië) en telt 1764 inwoners (31-12-2004). De oppervlakte bedraagt 32,4 km², de bevolkingsdichtheid is 56 inwoners per km².

Demografie
Aquara telt ongeveer 737 huishoudens. Het aantal inwoners daalde in de periode 1991-2001 met 8,1% volgens cijfers uit de tienjaarlijkse volkstellingen van ISTAT.

Geografie
Aquara grenst aan de volgende gemeenten: Bellosguardo, Castel San Lorenzo, Castelcivita, Felitto, Ottati, Roccadaspide.

Gemeente in Salerno


I received the following item at no cost to me to facilitate my review; however all opinions remain my own. For more information, see my full disclosure policy.
When I was pregnant with my first child, I spent a lot of time preparing. Childbirth and parenting classes, books on parenting and childbirth, fancy registry items that all the popular sites insisted I couldn't be without… I did it all.
One thing I didn't prepare for though was our newborn's sleeping. I had given it some thought. I knew I wanted to cosleep with Ethan, but that our mattress was too soft for it to be done safely, so until he got older he would sleep in a fancy bassinet beside our bed… or so I thought. Ethan however had different plans. As soon as I layed him down it became a crying session. Whether we layed him down in a awake, sleepy, recently asleep, in a deep sleep or any other possible time. This of course, led to some unsafe sleep habits as my husband and I tried desperately to get sleep… any kind of sleep.
We eventually got into a (much safer) groove, and for the most part, Ethan sleeps pretty well now. Looking back on what I know now, there's definitly some things I would do differently.
Now with baby #2 on the way and Ethan still being little, sleep is something I can't afford to figure out through trial and error. I need to have plans (and backup plans) in place before baby is here. This time I'm preparing for my newborn's sleep with Elizabeth Pantley's new book, "The No-Cry Sleep Solution for Newborns".
Elizabeth Pantley is a parent educator, mother, and author of the No Cry solution series, which includes several books dedicated to sleep. Her latest book, "The No-Cry Sleep Solutions for Newborns" focuses on ensuring good sleep habits from the moment baby is born.
Initially, I was hesitant to give this book a go, as most books that delve into the realm of baby sleep advocate some sort of form of Cry It Out (CIO), which I'm extremely against. This book is definitly not that. Within the first couple pages Pantley proclaims that she does not believe that a baby should ever be left to cry herself to sleep.
The book starts out talking about the author's experiences with her own children and grandchildren, and how this book can help you with your newborn's sleep (and thus your own!) It then launches into a summary of the 15 keys to amazing newborn sleep that makes up the majority of the book. The summary is a good place to start as you can easily see what each key is about and then flip to the subsequent chapter for more details. This is great if there is a specific topic that you want to read first (pink noise, the sucking reflex).
Throughout the book, Pantley draws upon a wide variety of research and opinions to support her points. These include research studies, her own experience and the experience and thoughts of other parents who have used Pantley's methods. These things together make for very relateable chapters.
Many of the keys in the books will look familiar to seasoned parents or parents who have already done other reading. Getting to know your baby and their sleep signals, respecting babies inner time clocks and happily awake time, and various comfort measures to recreate the womb (swaddling, pink noice, movement) are all things that are included. I did none of these with my firstborn until late in the game. Had I known what a difference they would actually make in my son's sleep I would have used them much sooner.
If you're expecting a book with a play by play or a schedule of exactly what you need to do, then this book is not for you. The No-Cry Sleep Solution focuses on the natural biology of newborn children, and how parents can make the transition from womb to world easier on baby. It is about adjusting your own expectations rather then trying to adjust your baby.
This is a book I highly recommend parents place on their reading list – particularly first time parents (though seasoned parents will likely benefit from the ideas presented as well). Ideally this book will be read before baby is born (who has time to read a book when they have a 2 week old?), but can be read anytime while baby is new. It dispels the myths associated with newborn sleep and intead teaches parents tips and tricks to ensure newborn sleep that is developmentally appropriate and biologically conscious.
For more information on The No-Cry Sleep Solution for Newborns and The No Cry book series, visit Elizabeth Pantley's website, No Cry Solution.
"The No-Cry Sleep Solution for Newborns" is available for purchase on Amazon.com and at most places where books are sold.
Hi, Stephanie! Seems like a super informative book full of lots of great tips. Since you've had experience with crying newborns, and have already read some books on the subject, I was wondering if you knew anything about using gripe water. I came across it recently and heard it's good for colic. Thanks!


text:
Home » East-side not-for-profit plans $9 million, 51-apartment mixed-use project
East-side not-for-profit plans $9 million, 51-apartment mixed-use project
July 2, 2019 | Mickey Shuey
Keywords Apartments / Banking & Finance / Development/Redevelopment / Economic Development / Government & Economic Development / Real Estate & Retail / Residential Real Estate
Central Indiana homebuilding slump reaches seven months
White House hopeful Warren pitches new private equity constraints
Owners hope to turn former Marsh store into self-storage facility in Noblesville
Facebook's currency plan gets hostile reception in Congress
St. Lucas Lofts would include 51 apartment units
An east-side community development group plans to build a $9 million mixed-use development along East New York Street as part of continued efforts to revitalize the Englewood neighborhood.
To be known as St. Lucas Lofts, the project by Englewood Community Development Corp. calls for two, three-story apartment buildings at the southeast corner of East New York Street and Temple Avenue.
The development would include 51 apartment units, along with more than 2,500 square feet of community space and nearly 2,000 square feet of commercial retail space.
ECDC Executive Director Joe Bowling said the project would be comprised of two L-shaped buildings, one with 26 units and the other with 25 units. The units would range from 504-square-foot one-bedroom layouts to two-bedroom units with up to 1,072 square feet.
The more populous building would also have 980 square feet of community space and just over 1,900 square feet of commercial retail space. The other building would have about 1,660 square feet of community space.
At least 10 of the units would be designated for individuals who are recovering from homelessness, through a partnership with Outreach Indiana, which has a shelter and resource center about two blocks west of the development.
The concept for St. Lucas Lofts was first proposed during the Great Places 2020 planning stage, and the current design is "very similar" to the original concept, Bowling said.
"We're really excited about this," Bowling said. "It's something we've been thinking about for close to three or four years now."
Bowling said each building is expected to have a pair of community classrooms, where neighborhood residents could gather for meetings, specialty courses and other events.
There also would be surface-lot parking, although the total number of spaces has not yet been finalized.
Bowling said the group hopes to utilize a variety of funding sources for the $9 million project, including tax credits and other financial assistance from the Indiana Housing and Community Development Authority.
The group later this month will request rental housing tax credits and low-income housing tax credits, he said. It also plans to make payments in lieu of taxes to the city, although Bowling could not confirm how much when he spoke to IBJ on Monday.
The development corporation is expected to ask the city's Metropolitan Development Commission on Wednesday to rezone the project's one-acre site—comprised of three parcels with SU-1, D-8, and D-5 zoning designations—to an MU-1 classification, which allows for mixed-use developments.
Current zoning for the D-5 and D-8 districts only allows for single- or two-family dwellings, while the SU-1 designation permits a religious use. The site was formerly home to St. Lucas Church.
The Lofts project is one of several affordable housing developments that ECDC has taken on in recent years. Others include the now-underway $38 million adaptive reuse of the P.R. Mallory building on East Washington Street and the Oxford Flats project on North Oxford Street.
The design and landscape architect for the St. Lucas Lofts project is Indianapolis-based Blackline Studio, which also worked on the Oxford Flats project. A general contractor has not yet been selected for the Lofts development.
Bowling said the group hopes to break ground on the project in spring 2020.
Please enable JavaScript to view this content.
Editor's note: IBJ is now using a new comment system. Your Disqus account will no longer work on the IBJ site. Instead, you can leave a comment on stories by signing in to your IBJ account. If you have not registered, please sign up for a free account now. Past comments are not currently showing up on stories, but they will be added in the coming weeks. Please note our updated comment policy that will govern how comments are moderated.

redpajama_set_name: RedPajamaCommonCrawl


There are also subcategories containing more Belfast alternative medicine suppliers.
Based in Ballymoghan Lane, Magherafelt.
Based in Coolafinny Road, Eglinton, Londonderry.
Based in Banbridge Road, Rathfriland, Newry.
Based in The Square, Rostrevor, Newry.
Based in George Street, Ballymena.
Based in Glenwell Gardens, Newtownabbey.
Based in Laganvale Manor, Stranmillis.
Based in Upper Lisburn Road, Finaghy.
Based in Strand Road, Coleraine.
Based in Queen Street, Ballymena.
Based in Fairhill Lane, Fairhill Lane, Ballymena.
Based in Shipquay Street, Shipquay Street, Londonderry.
Based in Elgin Street, Belfast.


In July, LBBC expert Nicole Simone, MD, answered your questions about how radiation therapy works, what to expect from treatment, the side effects it can cause, and when a doctor might recommend you need it.
In June, LBBC expert Pallav K. Mehta, MD answered your questions about the landmark trials TAILORx, PERSEPHONE, ASTRRA and other studies presented at the 2018 American Society of Clinical Oncology Annual Meeting, including how the findings might change treatment, who they impact, and what they mean for you.
In May, Living Beyond Breast Cancer expert Kelly Grosklags, LICSW, BCD, answered your questions about grief and grieving, including what causes it, how to recognize it, ways to cope and when you should seek help.
In April, Living Beyond Breast Cancer expert Arash Asher, MD, will answer your questions about cognitive changes after cancer treatment, often called chemobrain, including how to recognize it, what may cause it, and how to manage it.
In March, Living Beyond Breast Cancer expert William J. Gradishar, MD, FACP, answered your questions about second opinions and metastatic breast cancer.
In February, Living Beyond Breast Cancer expert Angela DeMichele, MD, MSCE, answered your questions about breast cancer recurrence.


D4 Advanced Media | Does Your Site Have Too Many WP Plugins?
Does Your Site Have Too Many WP Plugins?
Can D4AM Compete with Drag & Drop Web Design?
D4 Launches Western Surgical Group Website!
Web Design: What's Best Practice?


Bitcoin comes to Cuba. Could it help end the country's crazy two-currency system?
Blockchain technology has garnered a lot of attention in the financial world, as the decentralized public ledger could transform the way the industry keeps records or handles transactions. Several banks all over the world are trying to explore the applications of blockchain technology in their internal operations while some forward-looking companies such as Overstock have experimented with the bitcoin-related technology in securities clearing.
For blockchain-based private security company Symbiont, blockchain technology could spell the future of Wall Street through 'smart securities' or 'smart contracts'.
According to Symbiont CEO Mark Smith, the company plans to focus on private equity markets. He explained that many startups are avoiding public offerings and that a robust private securities market might shape the future of finance.
"There is lot of interest from freelancers in India who suddenly are now getting bitcoins from U.S.-based companies, and then they scramble to understand what is bitcoin," Indian Bitcoin startup Blockonomics founder Shiva Sitamraju told Bitcoin Magazine.
The increase of Indian freelancers' and developers' involvement with Bitcoin startups and organizations has created an efficient environment for local people to buy and purchase bitcoins instantly.
Fernando Villar, the Cuban-American founder of a group called BitcoinCuba, told Crypto-Currency News that he made the transaction this week using public wi-fi networks that Cuba's socialist government has started installing in public parks.
"The future for Bitcoin in Cuba is promising, but it's going to take some time and effort," Villar told CCN. "Cubans are only now being connected through public Wi-Fi, which is somewhat cost prohibitive at $2 an hour, with the average Cuban salary about $20 a month. ... [but] it's only a matter of time before they also start receiving money through those networks."


text:
Soundbites
By Stephen Seigel
FAMILIAR FACES: A San Francisco-based trio will perform in town this week, but locals will likely recognize the band's members from their associations with Tucson bands past and present.
Roma 79--the name is taken from a rather obscure reference from the DVD version of This Is Spinal Tap--comprises drummer Aaron Bonsall, singer/bassist Jeremy Patfield and guitarist Andrew Skikne, all former Tucsonans. The trio began as a side project while the members were busy with other musical projects: Skikne was guitarist for the Red Switch and drummer for the Quadratics and the Strawmen; Bonsall was bassist for the Quadratics, drummer for the Matt Mitchell Trio and Todd Hammes, and had a namesake jazz trio; and Patfield played sax for the Matt Mitchell Trio and Todd Hammes (pure testament to the incestuous nature of the Tucson music scene).
Anyhoo, a couple years back Bonsall and Patfield recorded drums, bass, and vocals for the then-unnamed project, before relocating to the Bay Area, and Skikne added his guitar parts later, resulting in a four-song EP. Realizing there was something there worth exploring, the project was nonetheless put on the back burner in favor of the Red Swiitch, Skikne's main outlet at the time. Eventually, Skikne and Josh Levine, the Red Swtch's singer/guitarist, decided to move the band to San Francisco, adopting Bonsall and Patfield as their rhythm section, but after an exploratory visit to the area, Levine decided to keep the Red Switch in Tucson. But Skikne's heart was still set on the move and, thus, he ventured to the Bay Area alone, knowing he had an alternate plan to resurrect the trio that had recorded the EP.
Since Skikne relocated last year, Roma 79 has recorded the score for the Comedy Central original movie, Porn 'n' Chicken (which has aired incessantly on the network and is due out on DVD this summer), toured the Midwest, and, this week, arrives in town to perform as part of its first West Coast tour.
If you dig indie rock that explodes in bursts between sections of tastefully meandering, nearly ambient, atmospheric sections, you'd do well to check them out.
Roma 79 performs with openers Chango Malo, Traindodge and Riddle of Steel on Friday, May 30, at Club Congress, 311 E. Congress St. The show begins at 9 p.m., and there's a $5 cover. For more information call 622-8848.
LET THE NAKED GAMES BEGIN! And speaking of the Bay Area -- in a day and age when it's somehow considered "cool" for bands to turn their backs to the crowd while playing, and to barely show any sort of emotion at all, Oakland's Fleshies are a throwback to a time when punk rock was loud, abrasive, snotty, and most importantly of all, dangerous.
The band, which sounds a bit like two trains--one blaring Turbonegro, the other At-the-Drive-In--careening toward each other on the same track, with a handcart dishing out the Butthole Surfers' art-weirdness sandwiched between them, claims to be four ordinary guys. But, do ordinary guys strip naked onstage, attempt to stop spinning bicycle tires with their genitalia, then smash beer bottles and roll around in them, while still naked? When Fleshies' "normal" frontman John Pseudonym (aka John No Moniker, John Geek, John Mink and, my personal favorite, John Shenanigans) does, it's just another day at the office: punch in, punch someone in the face, punch out.
The band has just released its latest album, The Sicilian, on Alternative Tentacles, whose label head, the infamous former Dead Kennedys frontman Jello Biafra, describes the Fleshies as "definitely the sort of kick-ass live band drenched in sickness that belongs on Alternative Tentacles. I saw them and I was amazed -- (John) was spazzing out all over the stage, all over the floor. He wound up nude by the end of the set, and I thought, 'Aha, this is what punk rock was supposed to be.'" Word up, Jello.
Fleshies perform with openers Sexy and Tommy Lasorda (both from the Bay Area), and locals Shark Pants and Cocaine Piñata, at 9 p.m. on Saturday, May 31, at Vaudeville Cabaret, 110 E. Congress St. Cover is a mere five bucks. For further details call 622-3535 or log onto www.fleshies.net.
KARMA CHAMELEONS: Hailed as the greatest thing to happen to rock and roll since the last band they called "the greatest thing to happen to rock and roll," the Datsuns are probably already hated by the ever-fickle British music press. But since the New Zealand band's self-titled debut album was just released here in the states in February, and they're making their first Tucson appearance this week, let me take a second to tell you what to expect.
While the current trend in music may be "garage rock" (whatever the hell that means anymore) that echoes '60s-era proto-punk, the Datsuns look to '70s-era rock bands like Thin Lizzy, Bad Company and Deep Purple for inspiration, or more accurately, who to rip off next. So faithful is their emulation, so over-the-top, that it either exposes those bands for their ridiculous power-of-rock-ness, or pays homage with a wink and a nod, depending on your point of view.
The Datsuns perform at Skrappy's, 201 E. Broadway, on Tuesday, June 3. The Star Spangles and a band to be announced open the show at 7 p.m. For more info call 358-4287 or log onto www.skrappys.com.
ALL ABOARD THE MARRAKESH EXPRESS: With 100 degree-plus days finally here, the Anselmo Valencia Amphitheatre's summer concert series is the perfect place to kick it in the not-quite-so-hot summer nights. This week brings harmony-laden '60s holdovers and family favorites--just try to hate your parents when "Teach Your Children" blasts out of the speakers--Crosby, Stills and Nash (but, alas, no Young) to the outdoor amphitheater. Gold section tickets are a whopping $60 (not including those appalling Ticketmaster fees), with pavilion seats not far behind at $50. Since we wouldn't want you to blow your entire summer concert budget in one fell swoop, we recommend picking up a $20 lawn ticket and bringing a blanket.
CSN performs at 8 p.m. on Wednesday, June 4, at AVA, located next to Casino del Sol, 5655 W. Valencia Road. For more info, log onto www.casinodelsol.com. For tickets, call 321-1000 or log onto www.ticketmaster.com.
Stephen Seigel
Latest in Soundbites
B-Sides: Viva La Vinyl
By Heather Hoch
B-Sides
BSides
More Soundbites »
All Music »


I had a wonderful ride today. My friend brought along a lovely lady and her Horse "Zen". Perfect weather, wonderful girls to ride with. I was riding along side and looked down to see the vintage kid's Roy Rogers gloves that this gal was wearing! A girl after my own heart! I knew she was a kindred spirit then. How cute is this?
Photo is a little blurry as I took it while riding Red. I wear gloves too, but nothing like hers!!!!
Perfect day for horsewomen in gloves!!!!


Proline is an English made twine designed specifically for diabolo enthusiasts and performers. Their use of tough, gorgeous coloured fibres mean their string is ideal for both the stage and practising in style. Proline is the perfect blend of performance and durability, 'wearing in' in quickly and lasting extremely well. The bright colours make ProLine a very visual prop, ideal for working in dark environments. Proline is compatible with all diabolo sticks on the market.
The 25 metre rolls of Proline are available in five bright colours with their signature faint black stripe running though it. Please make your colour selection below by clicking the relevant box.


text:
Letizia Borghesi (Cles, 16 oktober 1998) is een wielrenster en veldrijdster uit Italië.

In 2019 won ze de vierde etappe in de Giro Rosa en werd ze zevende in de Brabantse Pijl.

Palmares
2019
 4e etappe Giro Rosa

Ploegen
 2022 –  EF Education-TIBCO-SVB
 2023 –  EF Education-TIBCO-SVB

Italiaans wielrenner
Italiaans veldrijder

redpajama_set_name: RedPajamaWikipedia


text:
John Earle, né à York vers 1601, mort à Londres le , est un évêque et écrivain anglais.

Biographie
Earle est nommé précepteur du prince héritier, le futur Charles II d'Angleterre. Lors de l'intermède du Commonwealth, il accompagne le prince en exil en France. Chapelain du roi, il revient en Angleterre au moment de la restauration. Doyen de Westminster en 1660, il est nommé évêque de Worcester en 1662, puis de Salisbury l'année suivante.

Œuvre
La traduction des Caractères de Théophraste par Isaac Casaubon (1559-1614) avait mis le genre à la mode. Après d'autres imitateurs comme Joseph Hall (Caracters of Virtues and Vices, 1608) ou Thomas Overbury (New Characters in The Wife, 1615), il compose Microcosmography qui paraît en 1628.

On lui doit également une traduction latine de l'Eikon Basilike en 1649. Paru dix jours après l'exécution de Charles Ier, Eikon Basilike or The Pourtrature of His Sacred Majestie in His Solitudes and Sufferings se présente sous forme d'une autobiographie du monarque, dont l'attribution reste incertaine. Earle rédigea la traduction à la demande de son fils, Charles II.

Références

Liens externes

Écrivain anglais du XVIIe siècle
Écrivain anglais de langue latine
Traducteur anglais du XVIIe siècle
Doyen de Westminster
Traducteur vers le latin
Décès en novembre 1665
Étudiant de Christ Church (Oxford)
Naissance en 1601


Prestige Park Square 2 and 3 Bedroom Apartments located at Bannerghatta Main Road Bangalore. The property is spread across 8 Acres of land, with more than 70 % of land area utilized for landscaping gardens, water bodies and amenities. Park Square has to 586 high rise residential apartments of sizes ranging between 1115 sft to 1885 sft. This is a RERA Approved housing project and the rera carpet area of houses are in between 776 sq.ft to 1224 sq.ft.
Price 70 Lakhs to 1.25 Crores.
Prestige Park Square Price of 2 bedroom apartment ranges between Rs. 60 Lakhs to 75 Lakhs and the rera carpet area of 2 bhk is 787 SFT. The Basic Cost price of 3 bedroom home ranges between Rs. 5250 per sft to Rs. 5750 per sft, as the price varies from floor to floor. Prestige Park Square Tower 1 front facing flats Price is as follows - From Floor 3 to 9 and floor 21 to 27 the selling price is Rs. 5250 per sft, floor 16 to 20 the basic cost price is Rs. 5350 per sft and for floor 10 to 15 the rate is Rs. 5450 per sft.
Prestige Keys 2018 - Pay 10% to book an apartment and balance pay in 2020. Hurry this is a limited period offer and includes projects such as Prestige Park Square, Prestige Song of the South, Prestige Kingfisher Towers, Prestige Hermitage, Prestige White Meadows, Prestige Leela Residences and Prestige Golfshire.
Prestige Park Square amenities includes Club House, Swimming Pool, Tennis Court, Squash Court, Gym, Badminton Court, Cricket Net, Table Tennis, Billiards, Health Club, Kids play area and Multi court.
3 Bedroom 1771 1224 1.05 Cr.
Prestige Park Square Project is developed by Prestige Constructions. Prestige Group is one of the leading real estate developers of India having its head office in Bangalore. Prestige constructions have already completed more than 200 projects spanning across 64.12 million square foot of developed area, including residential, commercial, Retail and Hospitality segment. Some of the Landmark Project of the group includes Prestige Shantiniketan, Cessna Business Park, Prestige Tech Park, UB City Mall, Forum Mall, Prestige Kingfisher Towers, Prestige Golfshire and many more. Most of the Fortune 500 companies like JP Morgan, 3M, Cisco, LinkedIn, Juniper Networks, LG, Accenture and Oracle office is located at Prestige constructions business parks. Major Brands like Louis Vuitton. At present prestige constructions have got over 65 ongoing projects spanning over 67 Million square feet of area. Prestige Park Square will be another land mark residential project to the portfolio.


Pop superstar Katy Perry struggles to find her footing on her fifth studio album, 'Witness.' Sometimes it works, while other times it doesn't.
Katy Perry returns with her fifth studio album, Witness, following a four-year hiatus. Witness earned the pop superstar another no. 1 album. However, the quality of the effort is mixed at best.
On "Witness" Katy Perry sings about the desire for love. While relatable, the record doesn't come off as particularly memorable. Following an opener like "Roar" certainly isn't easy. "Witness" is okay, but not transcendent. "Hey Hey Hey" feels abrupt in its delivery. This ultimately detracts from its effectiveness. After multiple listens, it feels as if it hasn't been properly assembled. "Roulette" is a step up, featuring slick, danceable production work with an infectious groove. The chorus in particular is catchier than that of the two songs that precedes it. Perhaps Perry doesn't quite get a 'W' here, but it's one of the better moments from Witness.
"Swish Swish" is a win, period. While it's flawed with anachronistic production and so-so vocals, Perry, she offers an irresistible hook and ultimately, she straight-up flexes. Nicki Minaj adds more punch with her rap verse. Katy Perry resurrects a cliché with her own "Déjà vu." It's pleasant track, but not a game changer. The throwback dance/house sound supports the déjà vu sentiment, but it lacks the originality of previous projects. On "Power," Perry delivers a vocal that show off more of her abilities. She's no powerhouse, but has more chops than say "Swish Swish" showcases. The theme of empowerment adds more weight.
"Mind Maze" lacks memorability and appeal. While Perry has energy, there's an excess – loads of vocal effects, over-glossed production, and blasé lyrics. On ballad "Miss You More," she asserts: "I miss you more than I loved you / I do." It's not deep, but telling in regards to her former flame (whoever he may be).
"Chained to the Rhythm" ranks among the elite moments from Witness – it's the crème de la crème. The groove is infectious, while the production successfully blends urban- and tropical-pop. Lyrically, this song is catchy and thought-provoking; the verses are socially and politically relevant. Skip Marley only plays a small role, never overshadowing Perry. The chorus propels "Chained to the Rhythm" to the next level. As for follow-up "Tsunami," it's a letdown. The results are meh, which is being generous.
If you'd like to partake of the full-fledged analytical experience of the album, check out Katy Perry, Witness | Album Review on The Musical Hype.


text:
"0917 Wonderful"
Globe launches campaign to thank subscribers
Globe Telecom, a leading telecommunications company in the Philippines, has launched a campaign titled "0917 Wonderful" to thank its subscribers for their support. The campaign, developed by Havas Media Ortega, was launched earlier this week on 17th September and will run until 24th October.
As part of this campaign, Globe will be raffling and giving away special prizes such as gadgets, gift certificates, movie tickets and Globe Rewards points. To participate in this raffle promo, Globe subscribers will need to key in their phone numbers on a microsite (www.0917wonderful.com) that will make them eligible to win gifts from Globe.
A unique aspect of this campaign is the way that the brand has played with the number 917, the prefix associated with it in the country. Not only was the launch date kept as 17th September but also the total number of winners will be 917 which the telco will raffle off every day at 9.17 am and 9.17 pm.
According to D'Artagnan "Bunny" Aguilar, Division Head of Convergent Communication Channels, Globe Telecom, this campaign was designed to coincide with the onset of the auspicious season of Christmas as Globe wanted to be the first brand to celebrate the festival. "Since Christmas usually begins in September, and 0917 are numbers that are associated with Globe, we decided to start the campaign on September 17."
The brand's expectation from the campaign is to generate amongst its customers a feeling that they are loved, said Aguilar.
This campaign, launched on the web (including Facebook and Twitter) and mobile platforms, is the first digital promotion from the telecom company that is targeted only at its subscribers.
Commenting on the campaign idea, Aguilar said: "The idea to come up with a digital activation that is a raffle promo came from Havas Media Ortega (HVMO), which I think is a simple yet brilliant idea. Once we approved the idea, HVMO was relentless in making sure that we get it off the ground given the very limited time to work on it to make it in time for September 17."
Laszlo Miguel Lim, Business Director, Havas Media Ortega, added "we really wanted to keep things as simple as possible and get straight to the heart of it. As the giving season started, what better way for Globe to say 'thank you' than by gifting their subs wonderful experiences?"
On the Process:
• Go to the website (www.0917wonderful.com), fill in some information and then that's it, you're part of the promo. So it's just a two/three step, but of course there will be SMS validations/ confirmations.
• Everyone who joins also gets a free ringback, tone. It's a small prize but just to make sure everyone gets a small gift from entering the promo."
• Globe is giving away prizes, and these are technology prizes. The driving factor of course would be the gadgets; but it's really more than just the prizes –it's really more of the wonderful experiences you'll get from the prizes!
lbbonline.com, Tue, 24 Sep 2013 04:31:56 GMT


text:
All Clear by Connie Willis AudioBook CD
Store Home > All Clear by Connie Willis AudioBook CD
All Clear by Connie Willis
In Blackout, award-winning author Connie Willis returned to the time-traveling future of 2060 ? the setting for several of her most celebrated works ? and sent three Oxford historians to World War II England: Michael Davies, intent on observing heroism during the Miracle of Dunkirk; Merope Ward, studying children evacuated from London; and Polly Churchill, posing as a shopgirl in the middle of the Blitz. But when the three become unexpectedly trapped in 1940, they struggle not only to find their way home but to survive as Hitler's bombers attempt to pummel London into submission.Now the situation has grown even more dire. Small discrepancies in the historical record seem to indicate that one or all of them have somehow affected the past, changing the outcome of the war. The belief that the past can be observed but never altered has always been a core belief of time-travel theory ? but suddenly it seems that the theory is horribly, tragically wrong.Meanwhile, in 2060 Oxford, the historians? supervisor, Mr. Dunworthy, and seventeen-year-old Colin Templer, who nurses a powerful crush on Polly, are engaged in a frantic and seemingly impossible struggle of their own ? to find three missing needles in the haystack of history.Told with compassion, humor, and an artistry both uplifting and devastating, All Clear is more than just the triumphant culmination of the adventure that began with Blackout. It's Connie Willis's most humane, heartfelt novel yet ? a clear-eyed celebration of faith, love, and the quiet, ordinary acts of heroism and sacrifice too often overlooked by history.
AudioBooks are a really good choice to read through a book. Talking Books can be used anytime, oftentimes when you would have no occasion to read a book. You can listen to an talking book when you are relaxing. AudioBooks can be a way to gain increased understanding. Adults while listening have a higher capability to understand the words. Humans have had a long convention of passing myths on to the subsequent generation . You can convert your audiobook on CD to mp3 format how to convert your audio book to platforms like mp3 flac and ogg is right here. More info on what mp3 audio books are here


text:
Soviet Union. Komitet gosudarstvennoĭ bezopasnosti
The Secret History of the KGB.
Historian Christopher Andrew is the author of the new book "The Sword and the Shield: The Mitrokhin Archive and the Secret History of the KGB" (Basic books). The book is based on the documents smuggled out of the KGB archives by Vasili Mitrokhin, who worked for 30 years in the foreign intelligence archives of the KGB. In 1972 he began making notes and transcripts of the archives which he then smuggled out daily and hid. He defected to Britain in 1992.
Writer David Wise Discusses the C. I. A.'s Hunt For Moles.
Writer David Wise. He's written extensively on intelligence and espionage. His new book is "Molehunt: The Secret Search for Traitors that Shattered the CIA," (published by Random House) about the CIA's search for Soviet spies within in their own ranks.
Clearing up Rumors about the KGB.
Commentator David Gurevitz checks out some rumors about the KGB in the wake of the collapse of the Soviet empire. He's the author of "From Lenin to Lennon."
Hedrick Smith Discusses the Dramatic Change in the U. S. S. R.
Journalist Hedrick Smith. He's the host of the new PBS series, "Inside Gorbachev's U.S.S.R." Smith won the Pulitzer Prize for his reporting from the Soviet Union in the 70's. His book, "The Russians" was a bestseller. He's now writing another book on Russia, "The New Russians."
David Wise Scores an Interview with the Only C. I. A. Agent to Defect to the KGB.
Journalist David Wise. His new book, The Spy Who Got Away, is the story of Edward Lee Howard, the CIA agent who divulged secrets to the Russians and then eluded an FBI dragnet to flee to the Soviet Union. The book is based on six days of interviews with Howard in Budapest and reveals a CIA coverup of suspicions about Howard's character and the agency's refusal to share the information with the FBI's counterintelligence division. Wise, a former Washington bureau chief for the New York Herald Tribune, has written extensively on espionage.


This training introduces the Technician to the types of surveys required for the Rain Bird Central Control Systems using wireless communication protocols. Hands-on activities include programming the Spread Spectrum Radio. Field exercises include conducting a site survey for the Spread Spectrum Radio.
This course also requires that the participant have a working knowledge of the Windows 7 or 8 computer operating system.


text:
/*
 * $Id$
 */

/*

Copyright (c) 2000-2016 Board of Trustees of Leland Stanford Jr. University,
all rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
STANFORD UNIVERSITY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of Stanford University shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from Stanford University.

*/

package org.lockss.plugin;

import java.io.*;
import java.net.*;
import java.util.*;
import org.lockss.config.Configuration;
import org.lockss.daemon.*;
import org.lockss.crawler.*;
import org.lockss.state.*;
import org.lockss.test.*;
import org.lockss.plugin.base.*;
import org.lockss.util.*;
import org.lockss.util.urlconn.*;
import org.lockss.plugin.ArchivalUnit.ConfigurationException;
import org.lockss.plugin.exploded.*;
import org.lockss.plugin.definable.*;

/**
 * This is the test class for org.lockss.plugin.AuUtil
 */
public class TestAuUtil extends LockssTestCase {

  static final ConfigParamDescr PD_VOL = ConfigParamDescr.VOLUME_NUMBER;
  static final ConfigParamDescr PD_YEAR = ConfigParamDescr.YEAR;
  static final ConfigParamDescr PD_OPT = new ConfigParamDescr("OPT_KEY");
  static {
    PD_OPT.setDefinitional(false);
  }

  static final String AUPARAM_VOL = PD_VOL.getKey();
  static final String AUPARAM_YEAR = PD_YEAR.getKey();
  static final String AUPARAM_OPT = PD_OPT.getKey();

  LocalMockPlugin mbp;

  public void setUp() throws Exception {
    super.setUp();
    mbp = new LocalMockPlugin();
    mbp.initPlugin(getMockLockssDaemon());
  }

  public void tearDown() throws Exception {
    super.tearDown();
  }

  TitleConfig makeTitleConfig(ConfigParamDescr descr, String val) {
    TitleConfig tc = new TitleConfig("foo", new MockPlugin());
    tc.setParams(ListUtil.list(new ConfigParamAssignment(descr, val)));
    return tc;
  }

  public void testGetDaemon()  {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    assertSame(getMockLockssDaemon(), AuUtil.getDaemon(mau));
  }

  public void testThreadName() throws IOException {
    MockArchivalUnit mau = new MockArchivalUnit();
    mau.setName("Artichokes Volume Six");
    assertEquals("Crawl: Artichokes Volume Six",
		 AuUtil.getThreadNameFor("Crawl", mau));
    mau.setName("Fran\u00E7ais Volume Six");
    assertEquals("Crawl: Francais Volume Six",
		 AuUtil.getThreadNameFor("Crawl", mau));
  }

  public void testGetPollVersion() throws IOException {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    assertEquals(null, AuUtil.getPollVersion(mau));
    mbp.setVersion("12");
    assertEquals("12", AuUtil.getPollVersion(mau));
    mbp.setFeatureVersionMap(MapUtil.map(Plugin.Feature.Poll, "3"));
    assertEquals("3", AuUtil.getPollVersion(mau));
  }

  public void testGetAuState() throws IOException {
    setUpDiskSpace();
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    getMockLockssDaemon().getNodeManager(mau).startService();
    AuState aus = AuUtil.getAuState(mau);
    assertEquals(AuState.CLOCKSS_SUB_UNKNOWN,
		 aus.getClockssSubscriptionStatus());
  }

  public void testIsCurrentFeatureVersion() throws IOException {
    setUpDiskSpace();
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    getMockLockssDaemon().getNodeManager(mau).startService();
    AuState aus = AuUtil.getAuState(mau);
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Substance));
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Metadata));
    mbp.setFeatureVersionMap(MapUtil.map(Plugin.Feature.Substance, "3"));
    assertFalse(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Substance));
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Metadata));
    aus.setFeatureVersion(Plugin.Feature.Substance, "3");
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Substance));
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Metadata));
    mbp.setFeatureVersionMap(MapUtil.map(Plugin.Feature.Substance, "3",
					 Plugin.Feature.Metadata, "18"));
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Substance));
    assertFalse(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Metadata));
    aus.setFeatureVersion(Plugin.Feature.Metadata, "18");
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Substance));
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Metadata));
    mbp.setFeatureVersionMap(MapUtil.map(Plugin.Feature.Substance, "4",
					 Plugin.Feature.Metadata, "18"));
    assertFalse(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Substance));
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Metadata));
    aus.setSubstanceState(SubstanceChecker.State.Yes);
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Substance));
    assertTrue(AuUtil.isCurrentFeatureVersion(mau, Plugin.Feature.Metadata));
  }

  public void testHasCrawled() throws IOException {
    setUpDiskSpace();
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    getMockLockssDaemon().getNodeManager(mau).startService();
    assertFalse(AuUtil.hasCrawled(mau));
    AuState aus = AuUtil.getAuState(mau);
    aus.newCrawlFinished(Crawler.STATUS_ERROR, "foo");
    assertFalse(AuUtil.hasCrawled(mau));
    aus.newCrawlFinished(Crawler.STATUS_SUCCESSFUL, "foo");
    assertTrue(AuUtil.hasCrawled(mau));
  }

  public void testGetPluginDefinition() throws Exception {
    ExternalizableMap map = new ExternalizableMap();
    map.setMapElement("foo", "bar");
    DefinablePlugin dplug = new DefinablePlugin();
    dplug.initPlugin(getMockLockssDaemon(), "FooPlugin", map, null);
    Plugin plug = dplug;
    assertSame(map, AuUtil.getPluginDefinition(plug));

    plug = new MockPlugin();
    assertEquals(0, AuUtil.getPluginDefinition(plug).size());
  }

  public void testMapException() {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    assertClass(CacheException.RetryableNetworkException.class,
		AuUtil.mapException(mau, null,
				    new UnknownHostException(),
				    "foo"));
    assertClass(CacheException.UnknownExceptionException.class,
		AuUtil.mapException(mau, null,
				    new RuntimeException(),
				    "foo"));
  }

  public void testGetPluginList() throws IOException {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    assertEmpty(AuUtil.getPluginList(mau, "foolst"));
//     Empty list isn't really modifiable but fails this test
//     assertUnmodifiable(AuUtil.getPluginList(mau, "foolst"));

    ExternalizableMap map = new ExternalizableMap();
    map.setMapElement("lst1", "bar");
    map.setMapElement("lst2", ListUtil.list("a", "bb", "ccc"));
    DefinablePlugin dplug = new DefinablePlugin();
    dplug.initPlugin(getMockLockssDaemon(), "FooPlugin", map, null);
    DefinableArchivalUnit au = new LocalDefinableArchivalUnit(dplug, map);
    assertEmpty(AuUtil.getPluginList(au, "lstnot"));
//     assertUnmodifiable(AuUtil.getPluginList(au, "lstnot"));
    assertEquals(ListUtil.list("bar"), AuUtil.getPluginList(au, "lst1"));
    assertUnmodifiable(AuUtil.getPluginList(au, "lst1"));
    assertEquals(ListUtil.list("a", "bb", "ccc"),
		 AuUtil.getPluginList(au, "lst2"));
    assertUnmodifiable(AuUtil.getPluginList(au, "lst2"));
  }

  public void testIsClosed() throws Exception {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit();
    assertFalse(AuUtil.isClosed(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs(ConfigParamDescr.AU_CLOSED.getKey(), "true"));
    assertTrue(AuUtil.isClosed(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.AU_CLOSED, "false"));
    assertTrue(AuUtil.isClosed(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs("foo", "bar"));
    assertFalse(AuUtil.isClosed(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.AU_CLOSED, "true"));
    assertTrue(AuUtil.isClosed(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.AU_CLOSED, "false"));
    assertFalse(AuUtil.isClosed(mau));
  }

  public void testIsPubDown() throws Exception {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit();
    assertFalse(AuUtil.isPubDown(mau));
    assertFalse(AuUtil.isPubNever(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs(ConfigParamDescr.PUB_DOWN.getKey(), "true"));
    assertTrue(AuUtil.isPubDown(mau));
    assertFalse(AuUtil.isPubNever(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.PUB_DOWN, "false"));
    assertTrue(AuUtil.isPubDown(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs("foo", "bar"));
    assertFalse(AuUtil.isPubDown(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.PUB_DOWN, "true"));
    assertTrue(AuUtil.isPubDown(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.PUB_DOWN, "false"));
    assertFalse(AuUtil.isPubDown(mau));
  }

  public void testIsPubDownTC() throws Exception {
    assertTrue(AuUtil.isPubDown(makeTitleConfig(ConfigParamDescr.PUB_DOWN,
						"true")));
    assertFalse(AuUtil.isPubDown(makeTitleConfig(ConfigParamDescr.PUB_DOWN,
						 "false")));
    assertFalse(AuUtil.isPubDown(makeTitleConfig(ConfigParamDescr.BASE_URL,
						 "http://foo.bar/")));
  }

  public void testIsPubNever() throws Exception {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit();
    assertFalse(AuUtil.isPubNever(mau));
    assertFalse(AuUtil.isPubDown(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs(ConfigParamDescr.PUB_NEVER.getKey(), "true"));
    assertTrue(AuUtil.isPubNever(mau));
    assertTrue(AuUtil.isPubDown(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.PUB_NEVER, "false"));
    assertTrue(AuUtil.isPubNever(mau));
    assertTrue(AuUtil.isPubDown(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs("foo", "bar"));
    assertFalse(AuUtil.isPubNever(mau));
    assertFalse(AuUtil.isPubDown(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.PUB_NEVER, "true"));
    assertTrue(AuUtil.isPubNever(mau));
    assertTrue(AuUtil.isPubDown(mau));
    mau.setTitleConfig(makeTitleConfig(ConfigParamDescr.PUB_NEVER, "false"));
    assertFalse(AuUtil.isPubNever(mau));
    assertFalse(AuUtil.isPubDown(mau));
  }

  public void testIsPubNeverTC() throws Exception {
    assertTrue(AuUtil.isPubNever(makeTitleConfig(ConfigParamDescr.PUB_NEVER,
						 "true")));
    assertFalse(AuUtil.isPubNever(makeTitleConfig(ConfigParamDescr.PUB_NEVER,
						  "false")));
    assertFalse(AuUtil.isPubNever(makeTitleConfig(ConfigParamDescr.BASE_URL,
						  "http://foo.bar/")));
  }

  public void testIsParamUrlHttpHttps() throws Exception {
    final String MYURLKEY = "my_url";
    final String BADURLKEY = "bad_url";
    // HTTP URL
    LocalMockArchivalUnit httpau = new LocalMockArchivalUnit();
    httpau.setConfiguration(ConfigurationUtil.fromArgs(MYURLKEY, "http://www.example.com/"));
    assertFalse(AuUtil.isParamUrlHttps(httpau, MYURLKEY));
    assertTrue(AuUtil.isParamUrlHttp(httpau, MYURLKEY));
    assertFalse(AuUtil.isParamUrlHttp(httpau, BADURLKEY));
    // HTTPS URL
    LocalMockArchivalUnit httpsau = new LocalMockArchivalUnit();
    httpsau.setConfiguration(ConfigurationUtil.fromArgs(MYURLKEY, "https://www.example.com/"));
    assertFalse(AuUtil.isParamUrlHttp(httpsau, MYURLKEY));
    assertTrue(AuUtil.isParamUrlHttps(httpsau, MYURLKEY));
    assertFalse(AuUtil.isParamUrlHttps(httpsau, BADURLKEY));
  }

  public void testIsBaseUrlHttpHttps() throws Exception {
    final String BASEURLKEY = ConfigParamDescr.BASE_URL.getKey();
    // HTTP-defined AU
    LocalMockArchivalUnit httpau = new LocalMockArchivalUnit();
    assertFalse(AuUtil.isBaseUrlHttp(httpau));
    assertFalse(AuUtil.isBaseUrlHttps(httpau));
    httpau.setConfiguration(ConfigurationUtil.fromArgs(BASEURLKEY, "http://www.example.com/"));
    assertTrue(AuUtil.isBaseUrlHttp(httpau));
    assertFalse(AuUtil.isBaseUrlHttps(httpau));
    // HTTPS-defined AU
    LocalMockArchivalUnit httpsau = new LocalMockArchivalUnit();
    assertFalse(AuUtil.isBaseUrlHttp(httpsau));
    assertFalse(AuUtil.isBaseUrlHttps(httpsau));
    httpsau.setConfiguration(ConfigurationUtil.fromArgs(BASEURLKEY, "https://www.example.com/"));
    assertFalse(AuUtil.isBaseUrlHttp(httpsau));
    assertTrue(AuUtil.isBaseUrlHttps(httpsau));
  }

  public void testNormalizeHttpHttpsFromParamUrl() throws Exception {
    /*
     * Note how a URL from an unrelated host like www.lockss.org is also
     * normalized.
     */
    final String MYURLKEY = "my_url";
    // HTTP URL
    LocalMockArchivalUnit httpau = new LocalMockArchivalUnit();
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpau, MYURLKEY,
                                                       "http://www.example.com/favicon.ico"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpau, MYURLKEY,
                                                       "https://www.example.com/favicon.ico"));
    httpau.setConfiguration(ConfigurationUtil.fromArgs(MYURLKEY, "http://www.example.com/"));
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpau, MYURLKEY,
                                                       "http://www.example.com/favicon.ico"));
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpau, MYURLKEY,
                                                       "https://www.example.com/favicon.ico"));
    assertEquals("http://www.lockss.org/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpau, MYURLKEY,
                                                       "https://www.lockss.org/favicon.ico"));
    // HTTPS URL
    LocalMockArchivalUnit httpsau = new LocalMockArchivalUnit();
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpsau, MYURLKEY,
                                                       "http://www.example.com/favicon.ico"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpsau, MYURLKEY,
                                                       "https://www.example.com/favicon.ico"));
    httpsau.setConfiguration(ConfigurationUtil.fromArgs(MYURLKEY, "https://www.example.com/"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpsau, MYURLKEY,
                                                       "http://www.example.com/favicon.ico"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpsau, MYURLKEY,
                                                       "https://www.example.com/favicon.ico"));
    assertEquals("https://www.lockss.org/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromParamUrl(httpsau, MYURLKEY,
                                                       "http://www.lockss.org/favicon.ico"));
  }

  public void testNormalizeHttpHttpsFromBaseUrl() throws Exception {
    /*
     * Note how a URL from an unrelated host like www.lockss.org is also
     * normalized.
     */
    final String BASEURLKEY = ConfigParamDescr.BASE_URL.getKey();
    // HTTP AU
    LocalMockArchivalUnit httpau = new LocalMockArchivalUnit();
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpau,
                                                      "http://www.example.com/favicon.ico"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpau,
                                                      "https://www.example.com/favicon.ico"));
    httpau.setConfiguration(ConfigurationUtil.fromArgs(BASEURLKEY, "http://www.example.com/"));
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpau,
                                                      "http://www.example.com/favicon.ico"));
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpau,
                                                      "https://www.example.com/favicon.ico"));
    assertEquals("http://www.lockss.org/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpau,
                                                      "https://www.lockss.org/favicon.ico"));
    // HTTPS AU
    LocalMockArchivalUnit httpsau = new LocalMockArchivalUnit();
    assertEquals("http://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpsau,
                                                      "http://www.example.com/favicon.ico"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpsau,
                                                      "https://www.example.com/favicon.ico"));
    httpsau.setConfiguration(ConfigurationUtil.fromArgs(BASEURLKEY, "https://www.example.com/"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpsau,
                                                      "http://www.example.com/favicon.ico"));
    assertEquals("https://www.example.com/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpsau,
                                                      "https://www.example.com/favicon.ico"));
    assertEquals("https://www.lockss.org/favicon.ico",
                 AuUtil.normalizeHttpHttpsFromBaseUrl(httpsau,
                                                      "http://www.lockss.org/favicon.ico"));
  }

  public void testIsDeleteExtraFiles() throws Exception {
    ExternalizableMap map = new ExternalizableMap();
    DefinablePlugin dplug = new DefinablePlugin();
    dplug.initPlugin(getMockLockssDaemon(), "FooPlugin", map, null);
    DefinableArchivalUnit au = new LocalDefinableArchivalUnit(dplug, map);
    assertFalse(AuUtil.isDeleteExtraFiles(au, false));
    assertTrue(AuUtil.isDeleteExtraFiles(au, true));
    map.putBoolean(DefinablePlugin.KEY_PLUGIN_DELETE_EXTRA_FILES, true);
    assertTrue(AuUtil.isDeleteExtraFiles(au, false));
    map.putBoolean(DefinablePlugin.KEY_PLUGIN_DELETE_EXTRA_FILES, false);
    assertFalse(AuUtil.isDeleteExtraFiles(au, true));
  }

  public void testIsRepairFromPublisherWhenTooClose() throws Exception {
    ExternalizableMap map = new ExternalizableMap();
    DefinablePlugin dplug = new DefinablePlugin();
    dplug.initPlugin(getMockLockssDaemon(), "FooPlugin", map, null);
    DefinableArchivalUnit au = new LocalDefinableArchivalUnit(dplug, map);
    assertFalse(AuUtil.isRepairFromPublisherWhenTooClose(au, false));
    assertTrue(AuUtil.isRepairFromPublisherWhenTooClose(au, true));
    map.putBoolean(DefinablePlugin.KEY_REPAIR_FROM_PUBLISHER_WHEN_TOO_CLOSE,
		   true);
    assertTrue(AuUtil.isRepairFromPublisherWhenTooClose(au, false));
    map.putBoolean(DefinablePlugin.KEY_REPAIR_FROM_PUBLISHER_WHEN_TOO_CLOSE,
		   false);
    assertFalse(AuUtil.isRepairFromPublisherWhenTooClose(au, true));
  }

  public void testMinReplicasForNoQuorumPeerRepair() throws Exception {
    ExternalizableMap map = new ExternalizableMap();
    DefinablePlugin dplug = new DefinablePlugin();
    dplug.initPlugin(getMockLockssDaemon(), "FooPlugin", map, null);
    DefinableArchivalUnit au = new LocalDefinableArchivalUnit(dplug, map);
    assertEquals(-1, AuUtil.minReplicasForNoQuorumPeerRepair(au, -1));
    assertEquals(2, AuUtil.minReplicasForNoQuorumPeerRepair(au, 2));
    map.putInt(DefinablePlugin.KEY_MIN_REPLICAS_FOR_NO_QUORUM_PEER_REPAIR, 2);
    assertEquals(2, AuUtil.minReplicasForNoQuorumPeerRepair(au, -1));
  }

  public void testGetTitleAttribute() {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit();
    TitleConfig tc = makeTitleConfig(ConfigParamDescr.PUB_DOWN, "false");
    mau.setTitleConfig(tc);
    assertNull(AuUtil.getTitleAttribute(mau, null));
    assertNull(AuUtil.getTitleAttribute(mau, "foo"));
    assertEquals("7", AuUtil.getTitleAttribute(mau, null, "7"));
    assertEquals("7", AuUtil.getTitleAttribute(mau, "foo", "7"));
    Map<String,String> attrs = new HashMap<String,String>();
    tc.setAttributes(attrs);
    assertNull(AuUtil.getTitleAttribute(mau, null));
    assertNull(AuUtil.getTitleAttribute(mau, "foo"));
    assertEquals("7", AuUtil.getTitleAttribute(mau, null, "7"));
    assertEquals("7", AuUtil.getTitleAttribute(mau, "foo", "7"));
    attrs.put("foo", "bar");
    assertEquals("bar", AuUtil.getTitleAttribute(mau, "foo"));
    assertEquals("bar", AuUtil.getTitleAttribute(mau, "foo", "7"));
  }

  public void testHasSubstancePatterns() throws Exception {
    ExternalizableMap map = new ExternalizableMap();
    DefinablePlugin dplug = new DefinablePlugin();
    dplug.initPlugin(getMockLockssDaemon(), "FooPlugin", map, null);
    DefinableArchivalUnit au = new LocalDefinableArchivalUnit(dplug, map);
    assertFalse(AuUtil.hasSubstancePatterns(au));
    map.putString(DefinableArchivalUnit.KEY_AU_SUBSTANCE_URL_PATTERN,
		  "/fulltext/");
    assertTrue(AuUtil.hasSubstancePatterns(au));
    map.removeMapElement(DefinableArchivalUnit.KEY_AU_SUBSTANCE_URL_PATTERN);
    assertFalse(AuUtil.hasSubstancePatterns(au));
    map.putCollection(DefinableArchivalUnit.KEY_AU_NON_SUBSTANCE_URL_PATTERN,
		      ListUtil.list("/fulltext/"));
    assertTrue(AuUtil.hasSubstancePatterns(au));

    map.removeMapElement(DefinableArchivalUnit.KEY_AU_NON_SUBSTANCE_URL_PATTERN);
    assertFalse(AuUtil.hasSubstancePatterns(au));
    map.putString(DefinablePlugin.KEY_PLUGIN_SUBSTANCE_PREDICATE_FACTORY,
		  "factname");
    assertTrue(AuUtil.hasSubstancePatterns(au));
  }

  public void testGetSubstanceTestThreshold() throws Exception {
    String key = ConfigParamDescr.CRAWL_TEST_SUBSTANCE_THRESHOLD.getKey();
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit();
    assertEquals(-1, AuUtil.getSubstanceTestThreshold(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs(key, ""));
    assertEquals(-1, AuUtil.getSubstanceTestThreshold(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs(key, "foo"));
    assertEquals(-1, AuUtil.getSubstanceTestThreshold(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs(key, "0"));
    assertEquals(0, AuUtil.getSubstanceTestThreshold(mau));
    mau.setConfiguration(ConfigurationUtil.fromArgs(key, "3"));
    assertEquals(3, AuUtil.getSubstanceTestThreshold(mau));
    // title attr should override au config
    TitleConfig tc1 =
      makeTitleConfig(ConfigParamDescr.BASE_URL, "http://example.com");
    mau.setTitleConfig(tc1);
    assertEquals(3, AuUtil.getSubstanceTestThreshold(mau));
    tc1.setAttributes(MapUtil.map(key, "2"));
    assertEquals(2, AuUtil.getSubstanceTestThreshold(mau));
    tc1.setAttributes(MapUtil.map(key, "0"));
    assertEquals(0, AuUtil.getSubstanceTestThreshold(mau));
    tc1.setAttributes(MapUtil.map(key, "xxx"));
    assertEquals(3, AuUtil.getSubstanceTestThreshold(mau));
  }

  public void testGetTitleDefault() {
    TitleConfig tc = makeTitleConfig(ConfigParamDescr.CRAWL_PROXY, "foo:47");
    assertEquals(null, AuUtil.getTitleDefault(tc, ConfigParamDescr.BASE_URL));
    assertEquals("foo:47",
		 AuUtil.getTitleDefault(tc, ConfigParamDescr.CRAWL_PROXY));
  }

  public void testGetAuParamOrTitleDefault() throws Exception {
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit();
    TitleConfig tc = makeTitleConfig(ConfigParamDescr.CRAWL_PROXY, "foo:47");
    assertNull(AuUtil.getAuParamOrTitleDefault(mau,
 					       ConfigParamDescr.CRAWL_PROXY));
    mau.setTitleConfig(tc);
    assertEquals("foo:47",
		 AuUtil.getAuParamOrTitleDefault(mau,
						 ConfigParamDescr.CRAWL_PROXY));
    Configuration config =
      ConfigurationUtil.fromArgs(ConfigParamDescr.CRAWL_PROXY.getKey(),
				 "abc:8080");
    mau.setConfiguration(config);
    assertEquals("abc:8080",
		 AuUtil.getAuParamOrTitleDefault(mau,
						 ConfigParamDescr.CRAWL_PROXY));
  }

  void setGlobalProxy(String host, int port) {
    Properties p = new Properties();
    if (host != null) {
      p.put(BaseCrawler.PARAM_PROXY_ENABLED, "true");
      p.put(BaseCrawler.PARAM_PROXY_HOST, host);
      p.put(BaseCrawler.PARAM_PROXY_PORT, ""+port);
    } else {
      p.put(BaseCrawler.PARAM_PROXY_ENABLED, "false");
    }
    ConfigurationUtil.setCurrentConfigFromProps(p);
  }

  public void testGetAuProxyInfo() throws Exception {
    AuUtil.AuProxyInfo aupi;
    TitleConfig tc;

    LocalMockArchivalUnit mau = new LocalMockArchivalUnit();
    aupi = AuUtil.getAuProxyInfo(mau);
    assertEquals(null, aupi.getHost());
    assertFalse(aupi.isAuOverride());
    assertFalse(aupi.isInvalidAuOverride());
    assertEquals(null, aupi.getAuSpec());

    setGlobalProxy("host", 1111);
    aupi = AuUtil.getAuProxyInfo(mau);
    assertFalse(aupi.isAuOverride());
    assertFalse(aupi.isInvalidAuOverride());
    assertEquals("host", aupi.getHost());
    assertEquals(1111, aupi.getPort());
    assertEquals(null, aupi.getAuSpec());

    tc = makeTitleConfig(ConfigParamDescr.CRAWL_PROXY, "foo:47");
    mau.setTitleConfig(tc);
    aupi = AuUtil.getAuProxyInfo(mau);
    assertTrue(aupi.isAuOverride());
    assertFalse(aupi.isInvalidAuOverride());
    assertEquals("foo", aupi.getHost());
    assertEquals(47, aupi.getPort());
    assertEquals("foo:47", aupi.getAuSpec());

    tc = makeTitleConfig(ConfigParamDescr.CRAWL_PROXY, "HOST:1111");
    mau.setTitleConfig(tc);
    aupi = AuUtil.getAuProxyInfo(mau);
    assertFalse(aupi.isAuOverride());
    assertEquals("HOST", aupi.getHost());
    assertEquals(1111, aupi.getPort());

    setGlobalProxy(null, 0);
    aupi = AuUtil.getAuProxyInfo(mau);
    assertTrue(aupi.isAuOverride());
    assertEquals("HOST", aupi.getHost());
    assertEquals(1111, aupi.getPort());

    tc = makeTitleConfig(ConfigParamDescr.CRAWL_PROXY, "HOST:1112");
    mau.setTitleConfig(tc);
    aupi = AuUtil.getAuProxyInfo(mau);
    assertTrue(aupi.isAuOverride());
    assertEquals("HOST", aupi.getHost());
    assertEquals(1112, aupi.getPort());

    tc = makeTitleConfig(ConfigParamDescr.CRAWL_PROXY, "INVALIDPROXY");
    mau.setTitleConfig(tc);
    aupi = AuUtil.getAuProxyInfo(mau);
    assertFalse(aupi.isAuOverride());
    assertTrue(aupi.isInvalidAuOverride());
    assertEquals(null, aupi.getHost());
    assertEquals(0, aupi.getPort());
    assertEquals("INVALIDPROXY", aupi.getAuSpec());

  }

  public void testIsConfigCompatibleWithPlugin() {
    mbp.setConfigDescrs(ListUtil.list(PD_VOL, PD_YEAR, PD_OPT));
    Configuration auconf;
    Properties p = new Properties();

    // missing definitional param
    p.put(AUPARAM_VOL, "42");
    auconf = ConfigurationUtil.fromProps(p);
    assertFalse(AuUtil.isConfigCompatibleWithPlugin(auconf, mbp));

    // has all definitional params
    p.put(AUPARAM_YEAR, "1942");
    auconf = ConfigurationUtil.fromProps(p);
    assertTrue(AuUtil.isConfigCompatibleWithPlugin(auconf, mbp));

    // extra non-definitional
    p.put(AUPARAM_OPT, "foo");
    auconf = ConfigurationUtil.fromProps(p);
    assertTrue(AuUtil.isConfigCompatibleWithPlugin(auconf, mbp));

    // wrong type
    p.put(AUPARAM_YEAR, "foo");
    auconf = ConfigurationUtil.fromProps(p);
    assertFalse(AuUtil.isConfigCompatibleWithPlugin(auconf, mbp));
  }

  public void testOkDeleteExtraFiles() {
    assertTrue(AuUtil.okDeleteExtraFiles(new MockArchivalUnit()));
    assertFalse(AuUtil.okDeleteExtraFiles(new ExplodedArchivalUnit(new ExplodedPlugin(), null)));
  }

  public void testGetCu() {
    String url = "http://foo/";
    MockArchivalUnit mau = new MockArchivalUnit();
    CachedUrl mcu = new MockCachedUrl(url, mau);
    assertSame(mcu, AuUtil.getCu(mcu));
    MockCachedUrlSet mcus = new MockCachedUrlSet(url);
    mcus.setArchivalUnit(mau);
    assertNull(AuUtil.getCu(mcus));
    mau.addUrl(url, "foo");
    CachedUrl cu2 = AuUtil.getCu(mcus);
    assertEquals(url, cu2.getUrl());
  }

  public void testGetRedirectChainOne() {
    String url = "http://foo/";
    MockArchivalUnit mau = new MockArchivalUnit();
    MockCachedUrl first = mau.addUrl(url);
    assertEquals(ListUtil.list(url), AuUtil.getRedirectChain(first));
  }

  public void testGetRedirectChainTwo() {
    String url1 = "http://foo/";
    String url2 = "http://bar/";
    MockArchivalUnit mau = new MockArchivalUnit();
    MockCachedUrl first = mau.addUrl(url1);
    CIProperties props = new CIProperties();
    props.put(CachedUrl.PROPERTY_REDIRECTED_TO, url2);
    props.put(CachedUrl.PROPERTY_CONTENT_URL, url2);
    first.setProperties(props);
    assertEquals(ListUtil.list(url1, url2), AuUtil.getRedirectChain(first));
    MockCachedUrl second = mau.addUrl(url2);
    assertEquals(ListUtil.list(url1, url2), AuUtil.getRedirectChain(first));
  }

  public void testGetRedirectChainN() {
    String url1 = "http://foo1/";
    String url2 = "http://foo2/";
    String url3 = "http://foo3/";
    List<String> urls = ListUtil.list(url1, url2, url3);
    MockArchivalUnit mau = new MockArchivalUnit();
    setupRedirects(mau, urls);
    assertEquals(urls, AuUtil.getRedirectChain(mau.makeCachedUrl(url1)));
  }

  void setupRedirects(MockArchivalUnit mau, List<String> urls) {
    List<String> remUrls = new ArrayList(urls);
    String first = remUrls.remove(0);
    String last = urls.get(urls.size() - 1);
    MockCachedUrl firstCu = mau.addUrl(first, "content: " + first);
    List<MockCachedUrl> mcus = new ArrayList<MockCachedUrl>();
    mcus.add(firstCu);
    MockCachedUrl mcu = firstCu;

    for (String url : remUrls) {
      CIProperties props = new CIProperties();
      props.put(CachedUrl.PROPERTY_REDIRECTED_TO, url);
      props.put(CachedUrl.PROPERTY_CONTENT_URL, last);
      mcu.setProperties(props);
      mcu = mau.addUrl(url, "content: " + url);
      mcus.add(mcu);
    }
    CIProperties props = new CIProperties();
    props.put(CachedUrl.PROPERTY_CONTENT_URL, last);
    mcu.setProperties(props);
  }

  public void assertGetCharsetOrDefault(String expCharset, Properties props) {
    CIProperties cip  = null;
    if (props != null) {
      cip = CIProperties.fromProperties(props);
    }
    assertEquals(expCharset, AuUtil.getCharsetOrDefault(cip));
  }

  static String DEF = Constants.DEFAULT_ENCODING;
  static String CT_PROP = CachedUrl.PROPERTY_CONTENT_TYPE;

  public void testGetCharsetOrDefault() {
    assertGetCharsetOrDefault(DEF, null);
    assertGetCharsetOrDefault(DEF, PropUtil.fromArgs("foo", "bar"));
    assertGetCharsetOrDefault(DEF, PropUtil.fromArgs(CT_PROP,
						     "text/html"));
    assertGetCharsetOrDefault(DEF, PropUtil.fromArgs(CT_PROP,
						     "text/html;charset"));
    assertGetCharsetOrDefault("utf-8",
			      PropUtil.fromArgs(CT_PROP,
						"text/html;charset=utf-8"));
    assertGetCharsetOrDefault("utf-8",
			      PropUtil.fromArgs(CT_PROP,
						"text/html;charset=\"utf-8\""));
  }

  public void testGetAuCreationTime() throws IOException {
    long now = TimeBase.nowMs() - 10000;
    setUpDiskSpace();
    LocalMockArchivalUnit mau = new LocalMockArchivalUnit(mbp);
    getMockLockssDaemon().getNodeManager(mau).startService();

    long creationTime = AuUtil.getAuCreationTime(mau);
    assertTrue(creationTime > now);
  }

  public void testGetUrlFetchTime() throws IOException {
    String url1 = "http://foo/one";
    String url2 = "http://foo/two";
    // No fetch time stored
    MockArchivalUnit mau = new MockArchivalUnit();
    mau.addUrl(url1, "c1");

    assertEquals(0L, AuUtil.getUrlFetchTime(mau, url1));

    // Test the precedence of date properties
    MockCachedUrl mcu2 = mau.addUrl(url2, true, true);
    mcu2.setProperty("date", "Fri, 10 Sep 2004 09:43:40 GMT");
    assertEquals(1094809420000L, AuUtil.getUrlFetchTime(mau, url2));

    mcu2.setProperty("X_Lockss-server-date", "33333");
    assertEquals(33333L, AuUtil.getUrlFetchTime(mau, url2));

    mcu2.setProperty("X-Lockss-Orig-X_Lockss-server-date", "1234555");
    assertEquals(1234555L, AuUtil.getUrlFetchTime(mau, url2));

    mcu2.setProperty("X-Lockss-Orig-X_Lockss-server-date", "");
    assertEquals(33333L, AuUtil.getUrlFetchTime(mau, url2));

    // Add some versions.  MockCachedUrl returns them in the order added,
    // contrary to real repository nodes, so we check for the last one
    // added.
    MockCachedUrl mcu2a = mcu2.addVersion("ver 1");
    mcu2a.setProperty("X-Lockss-Orig-X_Lockss-server-date", "321321321");
    MockCachedUrl mcu2b = mcu2.addVersion("ver 2");
    mcu2b.setProperty("X-Lockss-Orig-X_Lockss-server-date", "88886666");
    assertEquals(88886666L, AuUtil.getUrlFetchTime(mau, url2));

    try {
      AuUtil.getUrlFetchTime(mau, "http://foo/three");
      fail("getUrlFetchTime() didn't throw on bad URL");
    } catch (NullPointerException npe) {
    }
  }

  private static class LocalMockArchivalUnit extends MockArchivalUnit {
    TitleConfig tc = null;

    LocalMockArchivalUnit() {
      super();
    }

    LocalMockArchivalUnit(Plugin plugin) {
      super(plugin);
    }

    public TitleConfig getTitleConfig() {
      return tc;
    }
    public void setTitleConfig(TitleConfig tc) {
      this.tc = tc;
    }
  }

  private static class LocalMockPlugin extends BasePlugin {
    String name;
    String version;
    List<ConfigParamDescr> configDescrs;
    Map<Plugin.Feature,String> featureVersion;

    public LocalMockPlugin() {
      super();
    }

    public void setPluginName(String name) {
      this.name = name;
    }

    public void setVersion(String version) {
      this.version = version;
    }

    public void setFeatureVersionMap(Map<Plugin.Feature,String> featureVersion) {
      this.featureVersion = featureVersion;
    }

    public void setConfigDescrs(List<ConfigParamDescr> configDescrs) {
      this.configDescrs = configDescrs;
    }

    protected ArchivalUnit createAu0(Configuration auConfig) throws
        ConfigurationException {
      MockArchivalUnit mau = new MockArchivalUnit();
      mau.setConfiguration(auConfig);
      return mau;
    }

    public String getVersion() {
      return version;
    }

    public String getFeatureVersion(Plugin.Feature feat) {
      if (featureVersion == null) {
	return null;
      }
      return featureVersion.get(feat);
    }

    public String getPluginName() {
      return name;
    }

    public List<ConfigParamDescr> getLocalAuConfigDescrs() {
      return configDescrs;
    }
  }

  private static class LocalDefinableArchivalUnit
    extends DefinableArchivalUnit {

    protected LocalDefinableArchivalUnit(DefinablePlugin plugin,
					 ExternalizableMap definitionMap) {
      super(plugin, definitionMap);
    }
  }
}

redpajama_set_name: RedPajamaGithub


On August 20th, we are partnering with LA-based Stephanie Baer for a creative meditation session at 7:30PM. This creative meditation aims to strengthen your mind body connection by safely clearing stagnant or blocked energy leaving you feeling more relaxed and centered for the start of your week. You will be guided through a series of visualizations and breath work, giving special focus to enhancing the creative process by clearing any energetic blocks specifically effecting creativity and realigning your mental processes with your creative intuition.
Stephanie is a Los Angeles based Reiki Master, Intuitive & Channel with both corporate and private cliental. Her path to this work began at a young age and developed through understanding her own mind body connection and intuition. With 10+ years of experience, she now works to energetically heal, guide and empower others.


Laminate Floor In Basement On Concrete inate Radiant Floor Heating. Installing a laminate radiant floor heating system can add indescribable comfort to any home. Radiant heat can be added under a laminate floor with two different systems.
9 Laminate Floor Mistakes And How To Fix Them. To get a dirty floor clean, you need water. The problem with laminate floors is that too much water seeps into the cracks between the planks and can cause swelling and damage that is irreversible.
Laminate Wood Flooring - Laminate Tile Flooring. Featuring Laminate by. Choose Wood Laminate Flooring. Your home is a haven, a culmination of your hard work and an investment in your future. As the place where you build your family, spend time together, experience special moments, host special occasions and kick off your shoes after a long day, it should be something you're proud to call yours.
Making Laminate Flooring Waterproof. Laminate flooring is a great option for any room. It is often much cheaper than the hardwood floors it mimics. Additionally, it is easy to take up, simple to put down, and durable; it can make your home look elegant and well-appointed without much fuss or muss.
Best Basement Flooring Options. Basement flooring does not play by the normal rules of flooring. Even when the weather is dry, basement flooring might leach residual moisture in the form of vapor due to its close proximity to the ground.


Today was the Great Urban Race. 161 teams of two hit the streets of downtown Phoenix to solve clues, complete a scavenger hunt and RACE. The top 25 teams qualify for the National Championship race in New Orleans. The top 3 teams get free entry to the Nationals.
And guess who gets free entry to the Nationals? Aw yeah, that's right...Storming the Castle!!! WOO-HOO!!! Christy and I got third place out of 161 teams!!!!!!!!!! I am so excited!!
Kiri and the NFBF were our phone/internet support. The NFBF had some computer issues but it was not a problem because Kiri came through with the info we needed and she did it quick as a bunny! I'm starting to think that maybe going to work every day isn't really all for nothing...my knowledge of downtown Phoenix came in quite handy!
Unscramble "Repeat Other Hum" and what do you get?
The food challenge was to go to Honey Bears and eat some corn on the cob. Don't let this picture fool you into thinking that I ate a vegetable! NO WAY! That was all Christy!
One clue was to either get 8 people in a photo with a Phoenix Mercury jersey or get five people in a photo with a jukebox. A jukebox?? We called 411 about 50 times to be connected to various restaurants we were going to pass by on our travels. I vaguely remembered that the Original Hamburger Works had a jukebox and yessir! They sure do. I chatted with this Illinois dude while we rounded up our 5 people. He lived in the dorm across the street from me. Small world.
Two clues took us to Encanto Park, which was a bus ride away. We waited 10 minutes for a bus. Ugh. At Encanto Park we had to do a 3-legged gunny sack race and go through an obstacle course. The gunny sack race was lame (it was about 20 feet long) but the obstacle course was awesome!! Sadly, we have no pictures of it because we got our clue sheet stamped as proof of completion, instead of having to take photos.
From Encanto Park we had two choices of return transportation - the original bus we took and then the light rail directly to the next clue or a longer bus ride plus a run to the next clue. It was a make or break decision. We chose the longer bus ride plus run since we couldn't guarantee that we wouldn't have to wait for the light rail. The longer ride turned out to not be that much longer and the run turned out to be shorter than expected, so we think it was the right decision.
We were directed to find an artist in the Phoenix Downtown Market and bring back one of his drawings. The line of waiting teams was L-O-N-G. We were a bit disheartened at this point. We only had 1 clue left after this stop and there were so many teams ahead of us in line. The artist would draw whatever you asked of him - and he was S-L-O-W. We figured a circle would be quick, quick, quick, right? Guess how long it took him to draw this picture?
Two full minutes!!! Seriously!! First he argued that this would be a boring drawing. Then he looked around awhile for a template. A template?? Buddy, you're an artist. Just free-hand it! He ended up tracing a water bottle. It was so frustrating! But finally he signed his name and we were off to the last stop. Running, running, running!
The clue they provided us was just a picture of this statue with no other information. I happened to know that it's outside the Herberger Theater where we have play season tickets. I felt like a genius. And then we booked it back to the finish line. I felt that we had done a pretty mistake-free race so I was cautiously optimistic about our chances of finishing in the top 25 and qualifying for Nationals, though all those teams ahead of us at the artist stop still caused much concern. Running fast. As we approached the restaurant (so very, very out of breath), the patio looked pretty empty. We ran faster. Maybe...just maybe.... And then we were told THIRD PLACE! Yippee!!
The first and second place teams were working together as one team. They finished three minutes ahead of us. We've rehashed our performance countless times and found nowhere we could have shaved three minutes off of our time other than waiting in line for the molasses-artist. And as that was completely out of our control, we are not at all sad that we didn't get first place. We are thrilled and still completely shocked with our third place finish!!! YAY!!!
Sounds like a fun time. You should check out Urban Dambre, www.urbandare.com. Their Phoenix race is March 28.
Wooo hoooo!!!!! Way to go!!!
Why does no one else ever comment what they are really thinking and that is obviously, WTF!!!!????
Yayayayay for third place!!! You guys rock! I wish you had asked me to do more! But, don't count on me for Nationals because that is waaaaaayyyy too much pressure. I did like the unscrambling, though.
Are you still on Cloud 9? CONGRATULATIONS - That's awesome!!! So are you headed to N'awlins in November?
WTG! Too bad you missed our Phx race. Next year. Oh, but we have a San Diego race on April 4th and a national championship race in Las Vegas for a grand prize of $12,345.67! Shoot me an email if you have any Qs!
Oh, and our race has former Amazing Racers. Mark and Bill will race in SD (Dallas, Kynt and Vyxsin might be there too).


text:
ARA Conference second keynote speaker announced
The ARA Conference committee is delighted to announce the second keynotespeaker will be Dr Ros Lynch, Director of copyright and IP enforcement,UK Intellectual Property Office (IPO).
The 2019 ARA Conference – 28-30 August - Leeds
Second keynote speaker announced – Dr Ros Lynch, Director of copyright and IP enforcement, UK Intellectual Property Office (IPO)
Focus: artificial intelligence, copyright, digital single market and cross-border
Register to attend Conference now at: https://conference.archives.org.uk/
The ARA Conference committee is delighted to announce the second keynote speaker for #ARA2019 – the Queens Hotel in Leeds. Dr Ros Lynch will open Conference on the second morning, Thursday 29 August 2019.
Dr Lynch joined the Intellectual Property Office (IPO) - a UK government agency - in February 2014 as director of copyright and intellectual property (IP) enforcement. She leads the work to shape the direction of UK policy and operational work in intellectual property - such as designs, patents, trademarks and copyright - and acts as a member of the IPO senior leadership team and the IPO Board.
The Conference committee is delighted that Dr Lynch has agreed to share her insights into evolving technologies and regulation in these areas.
Artificial intelligence, copyright, digital single market and digitisation
Effective records management and information governance are already the cornerstone of successful 21st century organisations. The security and integrity of intellectual property, as organisational assets and as 'unique selling points, from historical patents to 3D printing software and from core branding to copyright and trademarks, and their custodianship will fall increasingly to archivists and records managers.
Dr Lynch's role is to ensure that the UK legal framework is up-to-date and fit for purpose and involves extensive international engagement both within and outside Europe. She is also head of profession for policy officials in the IPO and senior responsible officer for the IPO's work on artificial intelligence, blockchain and other emerging technologies.
Dr Ros Lynch, Director for copyright and intellectual property enforcement, UK Intellectual Property Office (IPO)
Dr Lynch joined the UK Civil Service in 2000 as a social researcher in the Home Office before moving on to the Department for Communities and Local Government, where she was responsible for the Indices of Deprivation. She also worked as a policy official in the Department for Business, Energy and Industrial Strategy, where she led projects to develop skills policy and to boost apprenticeship numbers. Dr Lynch holds a PhD in sociology from the University of Hull and is co-author of the report 'Copyright Works' with Richard Hooper CBE, which recommended measures aimed at streamlining copyright licensing in the digital age.
Keynote focus
In her keynote, Dr Lynch will focus on the full range of developments in intellectual property as they will affect recordkeepers, including digitisation and copyright (and the digital single market), artificial intelligence and rethinking your records and archives as assets.
In the Q&A session, you will also have the opportunity to raise questions about the direction of UK policy and legislation in IP – for example, an update on how the UK will handle cross-border IP transfers once it exits the European Union.
The 29 August daily theme is how 'our workplace' will be shaped and how we can anticipate and adapt to technological change. That day's information governance stream will hear from other experts on Blockchain, existential threats and data protection, among others.
Visit https://conference.archives.org.uk/ for full details of – and updates on - this year's programme, venue, how to register to attend all three days or just one or two, and much more. Follow us, too, on Twitter - #ARA2019 and @ARAConf – and on Instagram @araconference!
Mike Anson
Chair, ARA Conference committee
Join the ARA - a step by step guide


text:
RAG & BONE 20TH ANNIVERSARY ICONS COLLECTION
Rag & Bone's new Icons collection, released for Fall 2022, is a built around classic core pieces for a timeless wardrobe.
In its 20th year, New York City-based Rag & Bone is creating the ultimate wardrobe of elevated staples for men and women with the Icons collection. Built around expert craftsmanship and authenticity, Icons consists of classic pieces, perfected.
Spanning across women's and men's ready-to-wear, denim, and accessories, Icons is a curated edit of quintessential Rag & Bone styles with a refreshed twist. Fall 2022 is the first release of Icons, however it will live on season to season in Rag & Bone stores and on its website.
With denim being a cornerstone for Rag & Bone, the focus was on high-rise styles in straight fits and new dark and vintage-inspired washes for women. Ecru jeans and a streamlined Western denim shirt with snap buttons added variety. Blazers and coats—in twill and leather—are key to the collection's wardrobe-building promise, while the brand's Wooster coat and Alfie peacoat offer tailored outerwear options that can be dressed up or down.
Women's simple tees, mixed media ribbed knits and classic button-down shirts in white and blue stripes effortlessly pair back to the range's denim and leather offerings. Pull-on and lace-up leather boots finish the looks.
The Icons collection is available now at Rag & Bone stores worldwide and the brand's website. The launch follows the opening of a new gallery-like store in East Hampton, N.Y. and the rollout of the 2022 Photo Project, a photography series centered on "iconic portraiture" that tells the "visual legacy of true originals."


No matter how much you like to cook, sometimes you just want to prepare veggies quickly, but still want them to taste good. One of my favorite ways to quick-cook vegetables is a technique that I learned from How to Cook without a Book by Pam Anderson, who really stresses improvisation and good food.
One of her techniques that I've found useful for vegetables is the "steam/sautéed" method. It's a very simple technique, using both "wet" and "dry" cooking in a single pan, without boiling or blanching and draining. You can facilitate speed by how you cut the vegetables–smaller pieces cook more quickly than larger chunks. This book is an excellent resource to help you learn to improvise and adjust quantities for single servings, doing away with leftovers. Recipes are simple, and presented in a manner that makes them very easy to adjust serving sizes, giving the necessary ingredients and there are variations given so that you get the feel of improvising.
Bring the water, fat, salt, and vegetable, along with the optional aromatics, spices, dried herbs and/or other flavorings to a boil in a Dutch oven or a large deep skillet. Cover and steam over medium-high heat until the vegetable is brightly colored and must tender, 5 to 10 minutes, depending on the vegetable size.
Remove the lid and continue to cook until the liquid evaporates, 1-2 minutes longer, adding optional fresh herbs and/or other flavoring at this point. Sauté to intensify flavors, 1-2 minutes longer. Adjust seasonings, including pepper to taste and serve.
Follow the Steam/Sautéed Vegetables recipe (p. 204), adding the cumin with the carrots and the parsley once the carrots start to sauté.
One pound of carrots is approximately 5-6 medium or 4 large, so it's easy to adjust the proportions here for two medium carrots. For me, 1 large carrot is about the right amount for a serving of vegetable. The amounts of fat, spices, and water are easily adjusted (see Measurement Conversions), and they do not have to be exact–you can add a bit more water if the vegetable is not quite tender enough, and a bit extra will evaporate once the pan is uncovered. You'll adjust the seasonings to taste, as well.
You will need to consider whether your vegetable is "soft" (vegetables which normally give off water as they cook) may not need the steaming before the sauté step), but vegetables that do not give off moisture as they cook, like the carrots, green beans, cabbage or broccoli, do need this step. The amount of water will vary with the density of the vegetable–you will learn to judge that, always remembering that you can add more water a tablespoon or so at a time as needed.
Dried herbs and spices (except black pepper) should be added with the vegetable in order to have the flavors develop. Because fresh herbs can lose volatile oils with heat exposure, these need to be added at the end so that the freshness is retained. With this technique is easy to prepare vegetables for small-time cooking, keeping the big-time taste.
Thank you! I appreciate the feedback–I'm really enjoying doing this. Hope to see you again soon.


Chad W. Pekron and R. Ryan Younger obtained the dismissal of a putative class action brought by customers of a major retail chain in December 2015. Mr. Pekron and Mr. Younger defended the retailer and two of its district managers against claims that the company's discount program violated the Arkansas Price Discrimination Act, which imposes a penalty of $200 to $1000 for every sale in violation of the statute. Plaintiff filed the action in the Circuit Court of Pulaski County, Arkansas. Mr. Pekron and Mr. Younger successfully removed the case to federal court under the Class Action Fairness Act on the ground that the district managers were fraudulently joined to the complaint and could therefore be disregarded for purposes of diversity jurisdiction. In so doing, Mr. Pekron and Mr. Younger argued that the court could rely upon the affidavits of the district managers for purposes of establishing fraudulent joinder – an issue that is the subject of significant dispute. Once the case remained in federal court, Mr. Pekron and Mr. Younger argued that the court should apply the "functional availability" doctrine of the Robinson-Patman Act to the Arkansas statute. In a matter of first impression, the district court agreed and dismissed the lawsuit with prejudice.


text:
Discover Jane Austen's Bath
by English Bus | Jul 3, 2017 | Discover | 0 Comments
"It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife." The instantly recognisable opening lines of Jane Austen's Pride and Prejudice introduce us to the society she knew so well. As the Georgian era gave...
10 interesting facts about Oxford University
by English Bus | Jun 15, 2017 | Discover | 0 Comments
Victorian poet Matthew Arnold called Oxford "the city of dreaming spires" in his poem Thyrsis, and the iconic architecture of this beautiful city certainly offers a stunning and well-preserved landscape to any visitor. For those who only recognised Oxford and its...
The Royal Crescent and The Circus – discover the history behind these architectural gems
by English Bus | May 31, 2017 | Discover | 0 Comments
As two of the most iconic landmarks in Bath and stunning examples of Georgian architecture, both The Royal Crescent and The Circus are well worth a visit during a trip to Bath. But what is the history behind these historic locations? The Royal Crescent Designed by...
The history behind Bath's famous spas
A city that we love to visit on our tours, Bath is famously known as home to one of the most popular tourist attractions in the UK - the Roman Baths. Drawing in over one million visitors per year from all over the world, the history behind this historic landmark dates...
Oxford, Britain's on screen murder capital?
by English Bus | May 5, 2017 | Discover | 0 Comments
A popular location for filming, Oxford receives plenty of TV airtime, with well-known series such as Inspector Morse and its sequel Lewis having captured the hearts of viewers when it comes to this historic city. However, if these on-screen dramas are to be believed,...
Visiting Stratford-upon-Avon – 5 interesting facts to know
by English Bus | Apr 14, 2017 | Top 5 | 0 Comments
Packed full of history and drama we love exploring all that Stratford-upon-Avon has to offer. Here are just five of our favourite interesting and fun facts about this famous town. Stratford-upon-Avon was originally inhabited during Anglo-Saxon times. Its name derives...
10 things you didn't know about the Cotswolds
by English Bus | Apr 3, 2017 | Discover | 0 Comments
The Cotswolds offers some of the most beautiful scenery in the country, with its rolling hills, quaint villages and market towns remaining a popular attraction for visitors. But did you know the following facts about this stunning part of the country? 1. The Cotswolds...
The majesty, myths and mysteries of Stonehenge
by English Bus | Mar 21, 2017 | Discover | 0 Comments
With a history that spans over 5000 years, Stonehenge is, perhaps, the world's most famous prehistoric monument. A place that we love to explore on our tours, there continue to be many myths and mysteries surrounding this iconic site. Read on to learn more about one...
Discover Oxford's silver screen locations
Photo from David Smith. Oxford is one of Britain's busiest and most instantly recognisable movie locations. With its incredible history, sense of grandeur and skyline that inspires dreams, the city has long been a favourite destination for TV and film makers. From the...
Oxford's secret spots – our 5 must see sights
by English Bus | Feb 17, 2017 | Top 5 | 0 Comments
Photo from Karen Roe. Packed full of history, stunning architecture and fascinating attractions, it's no wonder this city continues to entice visitors from all over the world. There are a multitude of things to do in Oxford, with iconic spots such as Blenheim Palace,...
©2017 The English Bus – All rights reserved – The English Bus is the trading name of Horsey Tours Ltd. Registered in England and Wales – Company number 8187275 – Registered Office: 145-157 St John St, London EC1V 4PW, UK


Is Your Business Prepared For The Potential Security Threats of 2014?
The BYOD trend is increasingly common in today's workplace. Businesses of all sizes will face both internal and external security threats. For example, mismanagement of mobile devices, software vulnerabilities, poorly tested deployment, and unreliable business applications are a few of the internal and external security threats to look out for. If you allow BYOD in the workplace, ensure your BYOD policy is well structured and enforced.
Cloud computing offers many benefits for your business, however, there are a few important things to consider when you're moving sensitive data to the cloud. First, ensure an adequate level of protection exists for all your data and files. Plus, ensure you meet regulatory requirements for protecting and backing up personally identifiable information (Pill), otherwise you could face steep penalties.
Cybercrime is increasing. Cybercriminals are motivated to make money, cause disruptions, and even bring down corporations and governments through online attacks. You should be prepared for potential cybercrime attacks.
What are your security policies?
Are they well defined and enforced?
Do all of your employees understand the most common hacking techniques, including phishing, social engineering, and packet sniffing?
It's important for your employees to know the answers to these questions.
Discuss the security of your IT assets with an IT provider. Is all your software up to date? Is up-to-date business-class antivirus software installed on your system? Cryptolocker, a recent and disastrous form of ransomware, proves the importance of having reliable backups of all your critical data.
In a web-connected world, bad news travels incredibly fast. Many business owners don't realize the potential reputational damage unmonitored social media can cause. It's important to educate your employees on the proper use of social media. For example, responding negatively or deleting customer concerns on social media can have negative consequences for your business. You should have a policy in place to address them instead. In addition, your reputation can be affected by data loss. If you fail to secure and backup confidential data, your business continuity is affected and customers may complain on social media.
It's critical to prepare your business for the potential and increasing security threats listed above. To learn how to safeguard your IT system and ensure your business is protected, give us a call at (713) 490-5000 or send us an email: info@citoc.com.


Created specifically to provide a behind the scenes learning experience, OUTSPIRE 2018 | Brandwise will take place on Wednesday, August 15th at REVOLUTION EVENT DESIGN AND PRODUCTION in Baltimore, Maryland. This truly unique growth summit focuses on strategy with industry leaders who have mastered the art of storytelling. Leaders who have been invited to share them with you in an effort to add better value to your personal brand and the brands that entrust us to build and market theirs.
Celebrating brand education with teams and individuals regardless of their career path or the industry's in which they are successful, is part of what makes this event different than other conference experiences. This much anticipated one-day summit brings together today's professionals, creatives, and entrepreneurs in one place to collectively share stories of triumph, lessons in defeat, and the perspective gained from these life changing lessons.
Given early demand, we encourage all interested parties to save the date and act quickly in reserving their tickets. A networking brunch will kick off a day of education followed by an intimate meet and greet with our conference speakers. A ticket-only social, the 'Summer Soirée at OUTSPIRE', will be hosted that evening. The response has been incredibly positive, and we're expecting this year's event to sell out quickly. Join us this August for an experience like no other and take your brand to a whole new level.