text:
Maria do Céu Lopes da Silva Federer (Ataúro, 1957) é uma assistente social e política timorense que foi candidata à Presidência da República nas eleições de 2012.

Biografia
Maria do Céu da Silva Lopes Federer nasceu na ilha de Ataúro, em Timor português, em 1957. O seu pai era jornalista e advogado, em desacordo com o governo. Ela foi um linguista especialista em seis línguas. Foi um membro da resistência timorense e viajou entre a Austrália e Timor-Leste, embora tivesse criado a sua família na Austrália. Foi uma dos fundadoras da organização não governamental designada por Timor Aid.

Em 2003, ela forneceu provas numa audiência pública sobre os maus-tratos de presos políticos no início da década de 1980. Ela disse que viu as pessoas de idade, mulheres e crianças chegando à ilha de Ataúro, onde ela estava trabalhando como trabalhadora humanitária. Tratavam-se pessoas aliciadas para viajar para lá, porque acreditavam que iam numa breve visita, chegando com poucas posses. Embora a situação geral era mais relaxada na ilha, algumas mulheres foram abusadas sexualmente, e muitas crianças morreram numa epidemia de cólera.

No mesmo ano, ela liderou a Comissão Nacional de Eleições que organizou as eleições.

Está a investigar para um um livro sobre as ativistas desconhecidas de Timor-Leste. Ela concorreu como independente na eleição presidencial de 2012 e obteve 0,4% dos votos.

Distinções
 Insígnia da Ordem de Timor-Leste (30 de agosto de 2009)

Naturais de Timor-Leste colonial
Mulheres de Timor-Leste na política
Políticos do século XX
Políticos do século XXI
Mulheres do século XX
Mulheres do século XXI
Assistentes sociais


With over 2 decades of professional experience, Award-Winning Comedy Magician - Murray Hatfield is a favourite for company parties, corporate functions and business dinners. He combines magic, illusion, mind-reading and escapes together with a whole lot of interactive comedy and fun for a show that will have your guests laughing and cheering from beginning to end.
Murray is also available to perform strolling and close up magic for a more intimate style of magic - right in the palms of their hands.


An education plan is an outline of the coursework required to complete your educational goal or program of study.
Student information including program of study, college level and overall credits and GPA, contact info, placement test scores, registration information, wait list, and unofficial transcripts.
Please Log In Note: This site is unavailable between 11pm and 5am due to scheduled maintenance.


text:
Q: How to get the magic number from File in java I have file from UploadedFile button, and I want to print the extension files by use in magic number,
My code:
UploadedFile file = (UploadedFile)valueChangeEvent.getNewValue();
byte[] fileByteArray = IOUtils.toByteArray(file.getInputStream());

pay attention: Mime type and content file (from file and from the filename) not same to magic number (magic number comes from the first bytes of the inputStream)
How can I do it?

A: I know this is an old question, just put my answer here hopefully someone finds it useful when searching for the same solution.
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import javax.servlet.annotation.MultipartConfig;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@MultipartConfig(
    fileSizeThreshold = 0,
    maxFileSize = 1024 * 1024 * 50,       // 50MB
    maxRequestSize = 1024 * 1024 * 100)   // 100MB
public class FileUpload extends HttpServlet {

    private static final Logger logger = LogManager.getLogger(FileUpload.class);
    private byte[] data = new byte[4];

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {

        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");

        try {
            fileSignature(request
              .getPart("image_file")
              .getInputStream());
        } catch (IOException | NullPointerException ex) {
            logger.error(ex);
        }

        String fileType = getFileType(data);

        // return the recognized type
        response.getWriter().write(fileType);
    }

    /**
     * Get the first 4 byte of a file file signature.
     *
     * @param part File from part.
     */
     private void fileSignature(InputStream is)
             throws IOException, NullPointerException {
         is.read(data, 0, 4);
     }

     /**
      * Get the file type based on the file signature.
      * Here restricted to only recognized file type jpeg, jpg, png and
      * pdf where the signature of jpg and jpeg files are the same.
      *
      * @param fileData Byte array of the file.
      * @return String of the file type.
      */
     private String getFileType(byte[] fileData) {
         String type = "undefined";
         if(Byte.toUnsignedInt(fileData[0]) == 0x89 && Byte.toUnsignedInt(fileData[1]) == 0x50)
             type = "png";
         else if(Byte.toUnsignedInt(fileData[0]) == 0xFF && Byte.toUnsignedInt(fileData[1]) == 0xD8)
             type = "jpg";
         else if(Byte.toUnsignedInt(fileData[0]) == 0x25 && Byte.toUnsignedInt(fileData[1]) == 0x50)
             type = "pdf";

        return type;
    }
}

References for file magic numbers:

*

*filesignatures.net

*Wikipedia List of file signatures

*mimesniff

*GCK'S FILE SIGNATURES TABLE

A: I'm putting my solution just in case people want an alternative without java-servlet related code:
public enum MagicBytes {
    PNG(0x89, 0x50),  // Define just like previous answer
    JPG(0xFF, 0xD8),
    PDF(0x25, 0x50);

    private final int[] magicBytes;

    private MagicBytes(int...bytes) {
        magicBytes = bytes;
    }

    // Checks if bytes match a specific magic bytes sequence
    public boolean is(byte[] bytes) {
        if (bytes.length != magicBytes.length)
            throw new RuntimeException("I need the first "+magicBytes.length
                    + " bytes of an input stream.");
        for (int i=0; i<bytes.length; i++)
            if (Byte.toUnsignedInt(bytes[i]) != magicBytes[i])
                return false;
        return true;
    }

    // Extracts head bytes from any stream
    public static byte[] extract(InputStream is, int length) throws IOException {
        try (is) {  // automatically close stream on return
            byte[] buffer = new byte[length];
            is.read(buffer, 0, length);
            return buffer;
        }
    }

    /* Convenience methods */
    public boolean is(File file) throws IOException {
        return is(new FileInputStream(file));
    }

    public boolean is(InputStream is) throws IOException {
        return is(extract(is, magicBytes.length));
    }
}

Then just call like this depending on if you have a file or InputStream :
MagicBytes.PNG.is(new File("picture.png"))
MagicBytes.PNG.is(new FileInputStream("picture.png"))

Being an enum also allows us to loop over each format if we need to by using MagicBytes.values().
EDIT: The previous code i put is a simplified version of the actual enum i'm using for my own lib, but adapted using the previous answer to help people understand faster. However, some file formats might have different kinds of headers, so this class would be more appropriate if that is an issue for your specific use-case: gist

redpajama_set_name: RedPajamaStackExchange


text:
Experienced Forensic Lawyer Scientist
Contact Our Firm Today 806.350.6785
What is a Forensic Lawyer-Scientist?
Why Hire Attorney Hesse?
Expungements & Sealing
Police Defense
Chris Hesse Blog
Chris Hesse Represents Officers After Fatal Shooting in Stratford
By Law Offices of D. Chris Hesse
The Texas Rangers are conducting an ongoing investigation into an officer-involved fatal shooting of a criminal suspect in Stratford last month. Two officers reportedly discharged their firearms towards a suspect's vehicle, fatally striking the driver. According to some eyewitness testimonies, the suspect's vehicle was attempting to flee the scene after being pulled over by the officers. A second suspect was taken into custody but no names have been released to the public yet.
Early news reports from the region discuss how the people of Stratford are worried over the incident. Since the details are unclear at this point, there is the possibility the two officers could be accused of misconduct or brutality.
In order to ensure the situation is not misconstrued with speculation and the rights of the two officers are well protected, Attorney D. Chris Hesse of The Law Offices of D. Chris Hesse in Amarillo is working with the officers. Chris Hesse was actually able to respond to the scene only shortly after the shooting occurred. While there, he was able to talk with the Texas Rangers and consult with his two clients, the Stratford Police Department Officers. As aforementioned, the Texas Ranger investigation has not yet been completed and so Chris Hesse's involvement will continue. He is dedicated to upholding the truth and showing his clients acted well within their expected duties as police officers, who are instructed to fire upon a suspect who poses an immediate danger to the officers or the public.
For more information about this ongoing story out of Stratford, you can visit these news articles:
https://abc7amarillo.com/news/local/texas-rangers-on-scene-of-officer-involved-shooting
https://www.myhighplains.com/news/dps-releases-more-information-on-officer-involved-shooting-in-stratford/
To learn more about Chris Hesse and his work as an Amarillo attorney, contact his law firmat any time. A U.S. Former Marine who has personally managed hundreds of cases to success, you can rely on him for a variety of criminal defenseand civil rights cases.
May 11, 2020 Attorney D. Chris Hesse Published in The Defender Read More
February 14, 2020 Attorney Chris Hesse Featured on ABC News Read More
April 8, 2019 Attorney Hesse Explains Texas Gun Laws on Outdoors Scoped Read More
April 2, 2019 Attorney Chris Hesse Publishes New Article About the Risks of a Colorado Cannabis Vacation Read More
Location 112 SW 8th Avenue
Suite 617, Amarillo, TX 79101 Map & Directions [+]

redpajama_set_name: RedPajamaCommonCrawl


Welcome to our Portal about Home Furniture! Our web pages 140 repressents photo materials and notes, other materials and screenshots for themes: "patio furniture hampton bay", "furniture jobs va", "furniture liquidation milwaukee", "grand experiences patio furniture" and "milan patio furniture agio" for "furniture zone kenosha wisconsin", the furniture for sale portland oregon. And also you can find more TOP Rated products and offers. Scroll Down!
The Collection of screenshots & other info, find more for themes: "furniture chicago dania", "furniture layout diagrams", "furniture guild los angeles", "casa blance patio furniture", "delta patio furniture".
The furniture and other online offers on page 439; "wooden garden patio furniture"; "furniture liquidation everett"; "patio furniture louisiana".
Screenshots 865 furniture hardware india; furniture hardware list; furniture chicago macy\'s; furniture companies ga; caps for patio furniture feet furniture liquidators gulfport ms.
More information about: "furniture houston gessner", "furniture and patio sets", "furniture hardware factory", "furniture city hawthorne ca", "furniture kids in illinois"!
Best and hidden tips from page 1052 about themes: furniture city upholstery co, furniture houston layaway and furniture classics alaska, furniture hardware list or also furniture companies dallas tx.
Reference to other screen-shots and photos of our site for themes: "diy patio furniture repair", "porchview patio furniture", "furniture companies dallas tx", "patio furniture hampton bay" and "furniture king newark".
Look at photos 524 and screenshots 452 for my design: furniture for sale in dallas, furniture for sale san francisco and furniture consignment tampa furniture patio bar set.
Read more tips at photos 130 from Themes: furniture liquidation everett, furniture liquidators in louisville ky - furniture factory direct arkansas.
Veternas stories on page 484 from Themes: hampton wrought iron patio furniture, furniture king newark and also winchester patio furniture.
Look here New extreme offers! On pictures 1882 and 327 from the furniture land raleigh nc crestmark patio furniture. caps for patio furniture feet, furniture layout rules, furniture for sale in dallas, furniture companies ga, free shipping patio furniture, albuquerque wicker patio furniture!
And Also you can find and learn more about the hampton wrought iron patio furniture plus furniture kansas city kansas. furniture from home goods, furniture find michigan, furniture hardware 2 pulls, discount aluminum patio furniture, the furniture stores nyc upper west side and furniture city hawthorne ca, furniture for small spaces nyc!
ATTENTION! Our Exclusive materials on themes "furniture liquidators 3 colvin ave" and "Albuquerque Wicker Patio Furniture" from our stock photos is copyrighted!
Scroll UP and look at page 48188 from theme furniture houston i-45, furniture heaven in san diego ca, furniture factory direct arkansas and furniture kits for kids, weather master patio furniture or visit site about furniture paint stripper and furniture liquidators kinston north carolina!


Features: We love these dangling teardrop earrings hand-wrapped in-house. &The color of these lovely earrings is perfect for your summer and fall seasons. The teardrop has a fascinating etching design that gives the earrings a lot of texture and character. &The metal accents is a combination of gold plated and antique bronze. All handmade for you!


text:
Georgia plane crash levels home-kills 2
Legal news for Georgia aviation accident attorneys. A fatal plane crash destroyed a house and sparked a fire.
Federal Aviation Administration alerts Georgia aviation accident attorneys- A fatal plane crash involving a twin-engine Cessna plane completely destroyed a home.
Atlanta, GA—A horrific plane crash leveled a couples two-story home and left two people dead. A small plane crash-landed into a Gwinnett County home on Friday, October 30, 2009 around 1:30 p.m., at the intersection of Oracle and Walker Drives in Lawrenceville, as reported by WSBTV.
A twin-engine Cessna 310 plane piloted by James Wardlaw, 58, of Atlanta, took off the from Gwinnett County airport and was en route to Sparta, Tennessee to visit his six grandchildren when his small plane crash landed into a two-story home. The plane completely leveled the home of Judith Krichner, 62, and sparked a blazing inferno, which was so intense that it destroyed the two engines of the plane.
The tragic plane crash killed both Wardlaw and Krichner. The Federal Aviation Administration (FAA) http://www.faa.gov/ reported Wardlaw was the only person inside the plane when it went down. It is currently unknown what caused the plane to crash; and since the plane was built in 1965, it did not have a flight data recorder commonly known as a black box.
The Cessna plane is registered to the Doctors' Aircraft Services and KM Aviation based from Sandy Springs. Wardlaw reportedly was a doctor who often flew people for free. FAA officials are expected to conduct a full investigation into the fatal plane crash.
Legal News Reporter: Nicole Howley-Legal news for aviation accident lawyers in Georgia.
9 missing in military aircraft crash off California coast
Crash killed California teenager-injured 2 others


Come learn about key technology risks facing your company today and explore the considerations & controls related to each. Regardless of your company's size, IT environment, or future plans, you will encounter potentially debilitating technology risks. Do you know what they are? Are you prepared to handle them? This program will cover risks such as: ERP vulnerabilities, cloud computing, virtualization, data privacy, security over personal devices, social networking/media, and voice over IP security. Each risk is critical to consider as your employees perform risk assessments and create IT audit plans. You will emerge from this session with the knowledge needed to discuss these risks with your IT leadership and determine if they are being effectively considered.
BILL MALIK is Director of Product Management for Weston Software, Inc. His career in IT spans 37 years and includes twelve years with IBM in MVS development and 15 years with Gartner as an analyst in the information security, middleware, and systems management areas. He was CTO of Waveset, and identity management start-up acquired by Sun in 2004, and began his career as an applications programmer at the John Hancock Insurance Co. He majored in Mathematics at MIT.


text:
1991 Festival of American Folklife
At the very first Smithsonian Folklife Festival back in 1967, visitors would have heard performers similar to the artists in this program. Grassroots singers and instrumentalists from the Georgia and South Carolina Sea Islands, New Orleans French Quarter, New York City, and the Mississippi Delta offered the oldest songs they knew, then described in music and words their creative innovations. They explained how their music coordinated work, praised and lifted the spirit, danced out joy or sorrow, and helped them struggle for change. In every succeeding Festival, the oldest, root traditions were presented alongside emergent forms created by artists fired and inspired by their heritage.
"Roots of Rhythm and Blues: The Robert Johnson Era" embodied a tried and true Festival approach: starting with the roots and presenting the full flower of the traditions, old and young; highlighting links in the creative chain of a people's art. Robert Johnson was a potent and significant link in tradition; he passionately absorbed and then reforged the music of his community and era. His art decisively influenced the music of today's world. This program sought to explore that story of creative change and cultural continuity.
Worth Long and Ralph Rinzler were Curators, and Arlene Reiniger was Program Coordinator. "Roots of Rhythm and Blues: The Robert Johnson Era" was made possible with the support of Music Performance Trust Funds and the Smithsonian Institution's Special Exhibition Fund.
1991 Festival Program Book
1991 Festival Finding Aid
Program Book Articles
Note: If you can help identify individuals appearing in photographs on this page please send us an email at folklife@si.edu.
Blues at the Festival: A Community Music with Global Impact
Worth Long; Ralph Rinzler
At the very first Smithsonian Folklife Festival back in 1967, you would have heard performers similar to the artists in this program. Grassroots singers and ...
Robert Johnson in the '90s: A Dream Journey
Peter Guralnick
Who would ever have thought that 52 years after his death Robert Johnson would go gold?
A friend of mine wrote recently and asked: Can you imagine him walking ...
Robert Johnson, Blues Musician
Robert Jr. Lockwood
When I was young, I couldn't play reels and popular tunes at home 'cause I was living with my grandfather. We played them on the organ when my folks would leave
Wisdom of the Blues
My name is Willie Dixon and I was born in Vicksburg, Mississippi, July 1, 1915. My whole family was from that area. I went to school there for a while. I lived


text:
Michael Jordan (born October 21, 1992) is a former American football cornerback. He played college football at Missouri Western State. He signed with the Los Angeles Rams as an undrafted free agent in 2016 and has also played for the Cleveland Browns and New York Giants.

Professional career

Los Angeles Rams
Jordan was signed as an undrafted free agent with the Los Angeles Rams after going undrafted in the 2016 NFL Draft. On September 3, 2016, he was waived by the Rams as part of final roster cuts. The next day, he was signed to the Rams' practice squad. He was promoted to the active roster on November 22, 2016.

On September 2, 2017, Jordan was waived by the Rams.

Cleveland Browns
On September 3, 2017, Jordan was claimed off waivers by the Cleveland Browns.

On September 1, 2018, Jordan was waived by the Browns.

New York Giants
On September 2, 2018, Jordan was claimed off waivers by the New York Giants. He was waived on October 30, 2018.

Tennessee Titans
On November 13, 2018, Jordan was signed to the Tennessee Titans practice squad. He signed a reserve/future contract with the Titans on December 31, 2018. He was waived on August 31, 2019.

References

External links
 Missouri Western Griffons bio

1992 births
Living people
African-American players of American football
American football cornerbacks
Cleveland Browns players
Los Angeles Rams players
Missouri Western Griffons football players
New York Giants players
Players of American football from Missouri
Sportspeople from St. Louis County, Missouri
Tennessee Titans players
21st-century African-American sportspeople

redpajama_set_name: RedPajamaWikipedia


Washington Huskies and Rutgers Scarlet Knights lock horns in a college football matchup tonight. The game kicks off at 8:00 PM EST in High Point Solutions Stadium, Piscataway, New Jersey. FOX Sports 1 will be providing the Tv coverage while the game can also be watched online live on fuboTV.
In the 2016 encounter between the Rutgers and Washington, the Huskies posted a 48-13 victory. Friday's will be the second all-time meeting between the teams.
The 2017 roster is filled with young talents 40 freshmen are going to join the Huskies' 2017 journey. Further, 26 sophomores, and just 16 seniors and 27 juniors make rest of the roster.
The Huskies offensive line broke all previous records in 2016 with 77 touchdowns scoring 585 points.
Jake Browing will be back as the starting quarterback for the Huskies. Browing posted a record-setting season, completing 18-of-27 passes for 287 yards and making three touchdowns.
Fifth-year senior Kylie Bolin has earned the starting quarterback job during the training camp. Also, Bolin will be captaining the team this season along with fifth-year senior defensive lineman Darnell Davis. Next in lineup will be fifth-year senior offensive lineman Dorian Miller and junior linebacker Deonte Roberts.
Fifth-year senior Janarion Grant will back in the lineup after missing later part of the last season.
Sophomore Jawuan Harris, who made 39 receptions for 481 yards in 2016 will return as the leading receiver in the Knights.


text:
Becky Hardin
Freelance writer | Journalist | | Blogger | Storyteller | Editor
She Can Be Both
Study Breaks Magazine
College Projects
She Can Be Both ™ • 5th October 2022
Kimberley John-Morgan can be a Career Counselor, Advocate for people struggling with isms, and a DEI Content Writer
Kimberley John-Morgan is a strong, unapologetic voice for various communities struggling with isms who uses her writing and teaching skills to increase diversity, equity and inclusion in the workplace.
She Can Be Both ™ • 3rd October 2022
Princess Poki can be a Game Streamer and a Fashionista
Despite working a full-time job as a sales lead at Fabletics, Princess Poki is an accomplished and enthusiastic game streamer and fashionista.
She Can Be Both ™ • 29th September 2022
Kitana Sanchez can be a Showgirl Extraordinaire and an Advocate for the Transgender Community
Kitana Sanchez left home to pursue higher education. Along the way, she also discovered her true identity and life's calling.
She Can Be Both ™ • 22nd September 2022
Alison Hill can be a Freelance Writer, Producer and Mom
From Snowdonia, North Wales, to South Carolina, Alison Hill has gained extensive experience in writing and producing.
Melissa Deschenes can be a Drama Instructor, Actress and Mother
As an actress, acting instructor and mother to a rising star, Melissa Deschenes literally lives a life filled with drama.
Camryn Garrett can be an Author and a Filmmaker
Camryn Garrett began writing in a notebook when she was 10. Her first stories were fanfiction based on shows and books she enjoyed, like the series "Glee."
Nasiem Umberg can be an Optometrist and a Mom
Nasiem Umberg always knew she wanted to work in the medical field. Her decision to pursue a career as an optometrist began in sixth grade when she discovered she needed glasses.
Monique Hernandez can be a Nurse, Educator and Healthcare Advocate
Monique Hernandez has worked in the nursing field for 13 years. She knew she wanted to be a nurse since she was 8, as she frequently visited her teenage aunt, who suffered from childhood leukemia, in the hospital, and accompanied her to many chemotherapy sessions.
Stephanie Chavez can be a Wildlife Conservationist and a Crossfit Athlete
Stephanie Chavez began her journey to becoming a wildlife conservationist while working towards a degree in public health.
Madison Murphy can be a Mom and Owner of Texas Pines Soapery
Madison Murphy is a stay-at-home mother raising two children, and she started her own business creating natural, vegan sustainable body care products in 2019.
Amy Coryer Miller can be a Lawyer and an Advocate for abused animals and domestic violence victims
A survivor of extreme domestic violence, Amy Coryer Miller is now a claims consultant and an advocate for victims of domestic violence, and she provides a haven for injured and abused farm animals.
April Garcia can be a Homeschool Mom and a Poet
April Garcia is a homeschooling mom and a poet, though she once cared little to do either.
Study Breaks • 1st February 2022
The Book That Inspired 'Practical Magic' Might Not Be What Fans Expect
The cult classic film has garnered a dedicated following, but those who read the movie's source material will probably not be impressed.
Study Breaks • 28th January 2022
Imbolc Is the Old Gaelic Holiday That Welcomes the Coming of Spring
Celebrated on Feb. 1 and Feb. 2, the age-old festival celebrates the waning of winter and the promise of a new season.
Study Breaks • 23rd January 2022
Kathryn Kellogg Makes Zero-Waste Easier to Understand
Her book may not be a perfect solution to the issue, but it provides easy ways for beginners to transition to this lifestyle.
How to Help Reduce the Number of Homeless Cats
Learning more about the behaviors and needs of our feline friends can help increase their overall well-being.
Study Breaks • 7th January 2022
Indoor Gardening Can Help You Fight Off Your Winter Blues
This fun and nurturing activity may aid in alleviating the symptoms brought on by seasonal affective disorder.
Study Breaks • 24th December 2021
Jackson Galaxy and His Journey to Becoming the Cat Daddy
This friend to felines everywhere learned on the job at an animal shelter before becoming an expert.
Before Christmas Rolls Around, Let's Celebrate the Winter Solstice
Dec. 25 may mark the most popular snowy holiday, but it isn't the only one.
Study Breaks • 9th December 2021
'Limitless' Gives Chris Hemsworth a New Challenge to Overcome
The Disney+ documentary series takes the Marvel superhero to new heights, but are they too steep for the actor to conquer?
Writer | Editor | Journalist
Subscribe to get sent a digest of new articles by Becky Hardin


It is a little known fact that ICLS' roots are in Medical Dermatology and it is this important department that is at the center of the ICLS clinic. Through many years of development, we have been successfully meeting the needs of thousands of patients in Oakville, Burlington, Mississauga and much of the GTA. With 1.5 Dermatologists to every 100,000 people in Ontario, we identified a great need and through innovative means, we were able to reduce the wait time for a Medical Dermatology appointment from over 1 year to less than 6-8 months on average.
ICLS and Dr. Sapra have made it a personal goal to deliver superior patient care along with cutting edge, effective, safe and reliable Dermatology services to all of his patients. We have been able to create a highly effective method of achieving this goal through extensive training of the Dermatology Nursing team. Every nurse at ICLS has undergone months of hands-on, comprehensive training both in-house and externally. Only after being reviewed and tested to meet our high standards of care, our nurses receive their "ICLS wings".
When you are in need of a Dermatologist, you should either call us directly for cosmetic concerns ie: removal of moles or skin tags, alternative methods of treatment for acne, PRP for hair loss or laser rejuvenation treatments for facial aging or redness, to name a few. There is a Dermatology Assessment fee required for cosmetic concerns, however this fee is deducted from your treatment if booked within 30 days. If you are seeking assessment for a Medical concern, ie: rash, medical acne, skin surveillance etc., a referral from your family doctor is required. Please visit our Medical Concerns portion of our website, if you are unsure. You will receive a call from your family doctor once the referral has been processed and we ask that you call in to speak with one of our Patient Care Coordinators so that they can provide you with instructions and a security code so that you may register on-line. You will receive a text or email reminder, prior to your appointment.
When you arrive for your appointment, you will be asked to present your valid health card, regardless of whether or not your appointment is covered by OHIP. This is due to our high standards of accuracy and to ensure all appointments are acknowledged correctly. It is your responsibility to ensure your card is valid before coming in for your appointment. If your card requires updating, visit the link below for details www.ontario.ca/page/health-card-renewal.
Please arrive on time for your appointment provided you have already filled out your on-line registration, otherwise; arrive 5-10 minutes earlier and one of our Patient Care Coordinators will be happy to assist you.
Your wait time will vary depending on the day and the time. We strive to stay on schedule but sometimes emergencies from Physicians occur and we do try to accommodate. In order to assist us, we ask that you only request information on the specific reason for your referral. We try our best to accommodate additional information requests but due to the importance of staying on time and respecting every patient's schedule, we may have to rebook for additional problems or procedures. We appreciate your cooperation in this area.
You will be called into an exam room by one of Dr. Sapra's Dermatology nurses. She will review your Medical History form and consult with you on your reason(s) for your visit based on the referral from your doctor. To ensure we are able to meet your expectations, while maintaining efficiency, the nurse will debrief Dr. Sapra on your initial consultation. This process allows a very efficient and effective way to expedite the process. After debriefing, Dr. Sapra and the nurse will meet with you together. Dr. Sapra will assess your dermatological concerns outlined in your initial consultation with the nurse and provide a diagnosis, recommendations and treatment plan, if applicable. If there are no further questions for Dr. Sapra, the nurse will counsel and educate you on the doctor recommended treatment plan. Often times Dr. Sapra will delegate the procedure for the nurse to perform, if applicable. All nurses at ICLS are highly trained to be an extension of Dr. Sapra and to his standard of care. Sometimes, along with your treatment recommendations, Dr. Sapra or his nurse may recommend products to aid in your skin health. Sometimes this will be by prescription or it may be an over-the-counter recommendation. We try to carry many of these OTC products simply as a convenience to patients. All prices will be disclosed and purchases will be left to your discretion. The nurse will then provide you with post-procedure counseling and education and answer any pending questions you may have before walking you out to our Reception Desk to hand you over to a Patient Care Coordinator to book your follow up appointment.
How Do I Book a Follow Up?
Your next appointment is usually booked at our Reception Desk with one of our Patient Care Coordinators. If you are not prepared to book your follow up at that time, you may call in at 905-842-2262. If the same problem reoccurs within 12 months of your last visit, there is no referral required. If it is past 12 months, simply contact your family doctor to start the process again. If you ever have any questions or concerns, we are always available either by phone (905)842-2262 or by email at info@icls.ca.
It is our goal to provide you with the best care possible and we strive to achieve that through continued education, staying abreast of new technologies and listening to the ever-evolving needs of our valued patients. We consider it a privilege that you have chosen us to take part in your journey to better health and a better you.


Don't Chase 'Em, We'll Erase 'Em!
Whether you're in your home or running your business, you never want to see a bug or a rodent scampering across your floor. That's why Bug Eraser Inc provides dependable residential & commercial pest control services in Palmetto, FL.
We offer everything from bed bug treatment to wildlife control services. Contact us if you have any sort of pest infestation. You can also schedule monthly, bimonthly or quarterly inspection and spraying services.
Call a reliable exterminator today at 941-750-8658.
Learn more about our family-owned and -operated extermination company.
Keep your home infestation-free with regular inspections and spraying.
Don't let critters chase off customers-set up routine pest control services.
Keep slithering, crawling and scampering things out of your home or business.
Do Your Floors Crawl When You Turn Out the Lights?
We provide consistent service. The same technician will always come to your home or business.
We provide personalized service. We treat every client's place with the care we'd use on our own home.
We have the highest level of insurance coverage, comparable to several-million-dollar companies.
We use state-of-the-art technology and equipment, and all of our products are EPA-approved.
We have the equipment and the experienced employees to handle any size or kind of job.
I wanted just to say a special thanks to Jeff. We had a rodent issue and Jeff responded quickly. He efficiently took care of our problem, and handled it in a professional manner at an affordable rate.
We have had The Bug Eraser as our pest service for the past 5 years. Jeff has always responded on time and has displayed himself as a true professional and has extensive knowledge about pests and how to manage them. I would highly recommend Jeff for anybody seeking an affordable pest control company.
Jeff (Bug Erasers) has been our bug-man for over 8 years. He is conscientious, thorough and always on call if a problem should occur. Great value, superb service.
Thanks to Jeff, my wife and I are very satisfied customers. He took care of a problem we had for years that others had tried several times (unsuccessfully) to solve. We will always be grateful for the terrific work he did at our house. He is professional, reliable, and thorough in the work that he does. I would give Jeff the strongest recommendation possible.


text:
Stephen F. Coenen
Sometimes credited as: Steve Coenen
Hometown: Rayville, Louisiana · Born: 6/2/1949 · Died: 9/22/2008 · High School: Rayville High School · College: Louisiana State University, '75 · Occupation: Landscape Architect, Artist, Dancer, Singer, Actor
Stephen Foster Coenen, originally from Rayville, Louisiana, and later settling in New Orleans, Louisiana, passed from this life during the early morning hours of September 22, 2008, following a valiant battle with lymphoma cancer.
Steve was truly a Man for All Seasons as his life combined a multitude of professions ...Read More
Steve was truly a Man for All Seasons as his life combined a multitude of professions and service including being a noted professional landscape architect, painter, sculptor, professional performing artist, and humanitarian who gave his life, time and talents to those of his beloved City of New Orleans and throughout the United States. Steve was born in Rayville on June 2, 1949, the son of William R. Coenen & Mary Elizabeth Ricard Coenen. His mother died when Steve was very young and he always credited his two aunts, Marguerite Coenen and Lorraine Lamie, for their love, guidance, and inspiration during his upbringing. Steve was predeceased by his parents, as well as his grandparents, Mr. & Mrs. Frank J. Ricard of Denham Springs, Louisiana, and Mr. and Mrs. Theodore J. Coenen, Sr. of Rayville, Louisiana. Steve was survived by siblings Carol Camille Coenen Christie and her husband, Ron of Brenham, Texas; William R. Coenen, Jr. and his wife, Ruthie of Rayville; Thomas R. Coenen and his wife, Darlene of Loranger, Louisiana; Margaret Ann Holdiness of Alto, Louisiana; and his step brother, John R. McClendon and his wife, Odwina, of Tulsa, Oklahoma. He was also survived by fifteen adoring nieces and nephews and many wonderful friends from across the country. Steve graduated from Rayville High School in 1967, being named Mr. RHS and remained very close to many of his RHS classmates throughout his life. He attended Northeast Louisiana University (now University of Louisiana - Monroe) and, in 1975 graduated from the School of Landscape Architecture at Louisiana State University in Baton Rouge. During his LSU days, Steve was one of the featured vocalists and guitarists at The Christ the King Catholic Church each Sunday and frequently entertained around the campus with fellow performers. Following graduation from LSU, Steve worked for several years as a lead entertainer for Holland America Cruise Lines, honing his skills as a singer, dancer and musician. Steve chose New Orleans as his home, inspired by the native Louisiana oak trees and year round plant growing season. His creative genius in landscape and floral arrangement and design attracted many individuals and hotels as clients. Steve was widely known in the New Orleans area for his "moonlight and magnolias garden look" as described by Hardy & Douglas in "Gardens Of New Orleans," and was particularly sought after during Mardi Gras and Christmas seasons for planning and decorating for fabulous parties. Ever moving into new art forms, Steve developed the unique process of creating mosaics and sculptures of glass and ceramics, using discarded pieces of crockery, porcelain and glass. Steve's home in the Faubourg Marigny neighborhood of New Orleans, filled with plants and many of his sculptural creations, was the subject of many articles in newspapers, magazines and gardening books. Those fortunate enough to own a "Steve Coenen" creation truly received a lifelong conversation piece. Steve's contributions to the City of New Orleans were numerous. He was a frequent performer at Le Petit Theatre, Le Chat Noir, as well as Tulane Summer Lyric Theatre and Jefferson Performing Arts Society productions. Steve literally put his life on the line on December 7, 2002, when he rescued an individual being victimized by an assault in the French Quarter of New Orleans. Steve was shot in his chest by one of the perpetrators, but through his efforts, the life of the victim was spared. For this act of heroism, Steve was presented with the 2003 New Orleans Public Safety Citizen of the Year award, the 2003 Storer Boone Humanitarian award for outstanding contributions to society and community, and in 2005 was one of 21 individuals in the United States to receive the Carnegie Medal for extraordinary heroism. After becoming ill, Steve continued his painting career, becoming a prolific watercolor artist, often donating his works to those critically ill at M.D. Anderson Hospital and to the doctors and caregivers as well. He also wrote, painted watercolor scenery, and recorded songs for a children's book entitled "Little Bird" which will be published posthumously. Steve will be long remembered for his flamboyant suits of orange, blue, and purple, "matched" with shoes of red or green, worn to events such as a niece's wedding, where he entertained the crowd with his Fred Astaire-like dance style, always leaving the crowd both amazed and full of laughter. Those who knew Steve seemed to always smile, if not downright laugh out loud, when remembering his talents, wit and charm. He will be forever a favorite brother, uncle, cousin, and friend to all he touched. A special thanks is due Steve's sister, Carol, for her daily encouragement and care of Steve during the last 16 months of his life, to Dr. Louis Fayard of M.D. Anderson Hospital and to Hospice of Brenham, Texas, for their loving care during the last weeks of Steve's life.
A memorial service and Catholic Mass will be held in celebration of Steve's life on Saturday, October 4, 2008 at 10 a.m. at the St. Louis Cathedral on Jackson Square in New Orleans, officiated by Msgr. Crosby Kern. A burial service will be held at the Rayville Masonic Cemetery in Rayville officiated by Rev. Philip Pazhayakari, CMI.
[Published in The Times-Picayune on 9/29/2008.]
Photo Gallery (23 images)
Stage Credits:
Mermanator .... Varla Jean Merman Is Anatomically Incorrect (1/2007)
Humanitarian .... Storer Boone Awards 2003 (12/2003)
Soloist .... Broadway and Barbecue (5/2002)
King Herod .... Jesus Christ Superstar (3/2002)
Dancing Ensemble; Moonshine Lullaby Quartet .... Annie Get Your Gun (1/2002)
Paul/Hortensio .... Kiss Me Kate (10/2000)
.... She Loves Me (2/1997)
Bellamy * .... The Fantasticks (3/1993)
Footman; Dancer .... Me And My Girl (8/1991)
Hanna .... La Cage Aux Folles (6/1991)
Dancing Ensemble .... Follies (7/1990)
Juggler; Dancer .... Carousel (6/1990)
Lucky * .... Dames At Sea (12/1989)
Doctor .... 42nd Street (8/1989)
Bobby #84 .... A Chorus Line (6/1989)
Evil Okra...er, Ogre * .... Puss 'N Boots (4/1989)
Court Clerk; Dancer .... Chicago (7/1988)
Dancer .... Oklahoma! (6/1988)
Steward .... Anything Goes (7/1987)
Young Gentleman .... Little Mary Sunshine (7/1987)
Ensemble .... My Fair Lady (6/1987)
Master of Ceremonies * .... Cabaret (12/1986)
Chorus .... Hello, Dolly! (6/1986)
Fred McCracken; Star To Be; Footman .... Annie (8/1985)
Big Deal .... West Side Story (6/1985)
Dancer .... No, No, Nanette (7/1984)
Dancer .... The Unsinkable Molly Brown (7/1983)
Waiter at Maxim's .... The Merry Widow (7/1983)
Townsperson .... The Music Man (6/1983)
Mame's Friend .... Mame (6/1982)
Gremio; Dancer .... Kiss Me Kate (7/1981)
.... The Boys From Syracuse (6/1981)
.... Cabaret (9/1980)
Linville .... Damn Yankees (6/1980)
.... Mack And Mabel (9/1979)
Juan .... Man Of La Mancha (8/1979)
Nachum; Bottle Dancer .... Fiddler On The Roof (6/1979)
Ensemble .... Rodgers & Hart: A Musical Celebration (3/1978)
opening tenor, ensemble .... Seesaw (9/1977)
Alan-A-Dale .... Robin Hood
* .... The Broad Does Broadway
*=leading role
Stage Manager .... Kindertransport (10/1998)
Stage Awards and Nominations:
Link to the Carnegie Hero Award Page for Steven...
http://www.carnegiehero.org/awardees_coenen.php


text:
Features: A Robber Strikes
Location: a tent! Ciroz Camping, Istanbul, Turkey
Distance so far: We've been travelling on trains and by foot.
GPS Co-ords: 37d, 42.321' N, 26D, 39.701'E
Dates: Tuesday 12th - Wednesday 13th December.
Highlights: One of Ali Baba's thieves strikes during the night but he's met his match.
On Tuesday evening the spotlight in the tent blew so we asked the Camp security where we could find another. His English was limited so he asked someone nearby who spoke English to help. The teenage boy offered to go into town and buy a bulb. Not knowing what they cost in Turkey we gave him the equivalent of £5 thinking this would be more than enough.
Suddenly he said that he had to visit a friend on the way and it would take him over an hour. Oh well, this is probably quicker than we could find a shop so we went along with it. In the meantime I rigged up our 12-volt lamp to a transformer so we could see.
Sure enough an hour later the boy returned huffing and puffing with the spotlight bulb. Sue went out to see him and came back in with a confused look. The boy was claiming that Western electronic goods in Turkey were very expensive and this was Philips which was probably the most expensive. He was carrying a receipt for the equivalent of £10. We scrutinised it for time, date, amount and type of shop - it all seemed legitimate, but £10 for a spotlight bulb? I know energy saver bulbs can cost this. We paid him with the intention of visiting the shop the next day.
It took a little while to find but when we did I strolled in and asked the price of the same bulb - 35p!!!!! I marched out to Sue, grabbed the old bulb and receipt and all three of us marched back in to confront them. No one spoke English, but the receipt and bulb spoke for themselves. There was some uneasy shuffling and the owner obviously wanted to know what his assistants had been up to. An English speaker was found from a neighbouring shop and we were told to find the boy whom they seemed to know and bring him in.
The rip-off had been thwarted and we were hot on the trail of the perpetrator.
Back at the campsite we explained to the head security guard what had happened, he knew exactly who it was. Off we marched, apparently both stepfather and son had a reputation. He tried to wriggle out of it by saying that he was going to the shop to sort it out, but Sue confronted him giving him a serious dressing down. He was suitably chastised and sent off to get our money back.
It transpired that one of the security guards had seen him leave the back entrance and return a short time later with a load of shopping. Sue thought that he was either high or drunk when he returned - anyway something didn't add up.
Our friendly security guard that was practising his English told us that the boy was only 15, although he looked 18. He did not get on with his stepfather and had been sent to live with his aunt in America. An opportunity few people in Turkey get let alone a young boy. Anyway he had stabbed someone and been sent back to Turkey. He was due to go back to America on the 18th December to attend school.
He returned a few hours later with only £5. Sue was making a point and wanted the full amount TODAY. He offered her his mobile phone, which she refused, he promptly dropped it on the ground and walked away. Sue left it where it was and called after him for the balance. It was not until about 6 pm that he returned with a collection of change. We called it quits giving him the equivalent of a pound for going to get the bulb for us and made him promise not to rip people off in the future. Lets hope he takes heed.


text:
Q: Soft light blend mode not working I am trying to apply a soft light blend mode of an image against a linear gradient but the effect is not loading on chrome. My code is:
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
background-image: url('../img/mall.png'), -moz-linear-gradient(90deg, #f857a6 0%, #ff5858 100%);
background-image: url('../img/mall.png'), -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ff5858), color-stop(100%, #f857a6));
background-image: url('../img/mall.png'), -webkit-linear-gradient(90deg, #f857a6 0%, #ff5858 100%);
background-image: url('../img/mall.png'), -o-linear-gradient(90deg, #f857a6 0%, #ff5858 100%);
background-image: url('../img/mall.png'), -ms-linear-gradient(90deg, #f857a6 0%, #ff5858 100%);
background-image: url('../img/mall.png'), linear-gradient(0deg, #f857a6 0%, #ff5858 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff5858', endColorstr='#f857a6',GradientType=0 );
background-blend-mode: soft-light;

A: It's working ok for me :

div {
  width: 600px;
  height: 400px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
  background-image: url('http://placekitten.com/1000/800'), linear-gradient(0deg, #f857a6 0%, #ff5858 100%);
  background-blend-mode: soft-light;
}


text:
Gypsy Passion and a Salsa Soul in Diego El Cigala
Written By Juan Carlos Perez-Duthie
Last year, Spanish singer Diego El Cigala performed at the Hollywood Bowl in L.A. in what should have been a memorable night. Professionally, it was. The flamenco star enthralled the audience, but never told those present that, just hours before the show, his wife had died of cancer.
Earlier this month, as the artist put the final touches on his upcoming U.S. tour – including an October 29 performance at the Fillmore Theater, Miami Beach, presented by The Rhythm Foundation – and readied himself for the launch of a new album, he received the news that his mother, Aurora, had passed away.
The title of that upcoming album, Indestructible (Sony Music Latin, to be released on October 28) is more than fitting; no matter the heartbreak in his gypsy soul, El Cigala soldiers on.
"Life throws punches at you that shape you. When these things happen, I find relief in music," says El Cigala from Punta Cana, the Dominican Republic, where he's lived since 2013. "It's the only way to get through. Music makes you remember all those memories that you've had."
Some 25 years of memories with his wife Amparo Fernández, the mother of his two children, ages 11 and 19. She was the love of his life, the rock of the family, and his manager as well, so everything he knew and cherished was changed forever when she died.
"The truth? I still don't know how I did it," says the Madrid-born singer. "When something like that hits you so suddenly, you don't have much time to react. The only thing you want to do is go forward and take care of your kids."
The show does go on with him
Indestructible, the album he's promoting on this tour, takes the 47-year-old performer on a new and adventurous path, part of the musical journey of discovery that began in 2003 when he released Lágrimas Negras with legendary Cuban pianist, bandleader and composer Bebo Valdés.
Diego Ramón Jiménez Salazar, who had grown up singing in flamenco venues like peñas and tablaos, would go on to make a name for himself in the world of flamenco and perform with some of its key figures. But when Valdés introduced the man nicknamed after a popular crustacean in Spain to Cuban music, El Cigala's musical world expanded.
"His collaborations and explorations push the boundaries of traditional flamenco, but always with great integrity and respect," says Laura Quinlan, Rhythm Foundation programming director.
For Quinlan, who also brought El Cigala to South Florida two years ago, "flamenco is such a living style; it hasn't become a dusty folklore music because the great artists like El Cigala keep evolving the art form. He is such a gitano, so Spanish, and also so much a man of the entire world."
What the world had to offer him musically also brought El Cigala to tango and Argentine folk music in two albums, Cigala & Tango (2010) and Romance de la Luna Tucumana (2013), that won him Latin GRAMMY awards and broadened his audience appeal to make him a world music star.
With Indestructible (A documentary of the production is scheduled for release in December), El Cigaladelves into the genre of salsa, with the recordings taking place in San Juan, New York, Havana, Cali (Colombia), and Miami.
"These cities are the pillars, but Puerto Rico is the mecca," says El Cigala, who included Puerto Rican salsa icons like Roberto Roena, Bobby Valentín, and Luis "Perico" Ortiz on some of the songs. "So I had to go there to share with all these musical geniuses."
Cuba and Venezuela also in the mix
The result not only features his homage to Puerto Rican salsa, but also includes a tribute to Bebo Valdés himself and collaborations with GRAMMY-winning Afro-Cuban jazz pianist and composer Gonzalo Rubalcaba; Venezuelan salsa maestro Oscar D' León; and Cuba's Los Muñequitos de Matanzas rumba group.
"Although my father had worked with Diego, and both our families knew each other, this record marks my first professional collaboration with him," says Rubalcaba from his home in Coral Springs. "We always had the willingness to do something together, but it didn't happen until now."
The challenge he and El Cigala faced was, he adds, how to perform classics of Latin music, recorded innumerable times, in an innovative way but without betraying their essence.
"With Diego, this has been a constant throughout his career. If we look closely, he's restless, he's daring. Diego is an artist with a capital A," continues Rubalcaba.
"I like to say that Diego has created his own genre," says Anthony González, A&R, Commercial Music for Sony Music Latin. "Tropical music obviously still exists, and it has gone through various stages, but he brings to this music his own very Spanish vocal style, and he has incorporated it ina way that is simply seamless."
For González, what El Cigala creates has soul: "He's certainly a romantic at heart, that comes across in his music, and that I think is also a great part of his ability to connect, not just musically, but emotionally as well."
Diego El Cigala in concert, Saturday, October 29, 8:00 p.m.; The Fillmore Miami Beach, 1700 Washington Ave., Miami Beach.Tickets: $39 – $79 plus fees, on sale through LiveNation.com; http://www.rhythmfoundation.com/events/diego-el-cigala-2/
http://www.fillmoremb.com
Miami music legend Willy Chirino and HistoryMiami Museu...
Written By Fernando Gonzalez, 01.25.2023
From his Grammy awards to his concert attire, HistoryMiami Museum documents the career of Cuban-born, Miami native son Willy Chirino in a comprehensive exhibition.
South Florida Symphony Started In Key West, 25 Years La...
Written By Jesús Vega, 01.12.2023
Sebrina María Alfonso founded an orchestra in Key West fulfilling a dream. Now, she's celebrating 25 years of helming what's become he South Florida Symphony Orchestra.
Seraphic Fire Performs Rarely Recorded Works In '...
Grammy-nominated Miami-based professional choir, Seraphic Fire, performs American choral gems in "Old|New" conducted by composer and guest conductor, Jason Max Ferdinand.


text:
n dimes and missed all seven s
ST. PETERSBURG, Fla. -- The Toronto Blue Jays have placed shortstop Jose Reyes on the 15-day disabled list with hamstring tightness suffered in his first at-bat of the season. Reyes exited Mondays season opener against the Tampa Bay Rays in the first inning and did not return. Toronto went on to lose 9-2. The 30-year-old led off the game and was robbed of a hit on a diving catch by Rays centre-fielder Desmond Jennings, but was replaced in the field by Ryan Goins in the bottom of the first. Reyes sat out several games during the final week of spring training with tightness in the same hamstring and missed 66 games last season because of an injured left ankle. The Jays called up infielder Jonathan Diaz from triple-A Buffalo to replace Reyes. Diaz, 28, appeared in five games for Boston last season, making his major-league debut on June 29 against Toronto. The five-foot-nine, 155-pound right-handed hitter was drafted by the Blue Jays in the 12th round of the 2006 draft and has spent all but last season in the Toronto organization. Ryan Kerrigan Jersey . Hawkins severely sprained his left ankle while making a diving catch during training camp and went on injured reserve with a designation he could return midway through the season. He was back at practice Wednesday. Preston Smith Jersey . Adam Lind provided the power and rookie starter Marcus Stroman had the best start of his young career as the Blue Jays dumped the Yankees 8-3 at Rogers Centre. Stroman, making his fifth start for Toronto, allowed one earned run and three hits over a career-high eight innings. http://www.officialwashingtonredskinsfoo...t-jersey-womens. Englands only win in the four most recent trips north had been tight, and Scotland was expected after losing 28-6 to Ireland six days ago to show some venom against its archrival. Ha Ha Clinton-Dix Jersey .ca NBA Power Rankings. Winners of 15 straight, with a healthy roster, the Spurs have overtaken the Clippers and Oklahoma City Thunder for the number one ranking. Tress Way Jersey .com) - Whew! North Dakota States reign as the three-time FCS national champion was pushed to the limit by South Dakota State on Saturday, but freshman R.TORONTO - If you had just started watching Raptors basketball two days prior you wouldnt have recognized the team that was run out of their own building Friday night. Coming off their most encouraging victory of the season in Memphis Wednesday, the Raptors were out-muscled, out-worked and ultimately out-played against a Chicago Bulls team missing their star point guard. The Bulls - as they tend to do, with or without Derrick Rose - set the tone with their defence in the opening minutes. By the time the buzzer sounded 24 minutes into the contest, the Raptors booed off the floor by their home fans, Toronto had mustered just 31 points on 26 per cent shooting. "Theres nothing redeeming about tonight," said Dwane Casey, who later relented and cited DeMar DeRozan as the lone redeeming spot on the night. "Tonight was one of those stinkers that you have. We were mentally fried, physically fried but this is the NBA [and] theres no excuses. That wasnt us. Weve had stretches like that but not an entire game, the way we were running in mud." DeRozan, just 3-of-9 at the half, caught fire late in the third quarter. He scored 28 of his career-high matching 37 points in the second half, including 19 of the Raptors 21 points during a stretch that extended into the fourth quarter. He couldnt miss, knocking down off-balance jumpers, four three-pointers and crowning Joakim Noah on a tomahawk slam. If it was conceivable for the Raptors guard to bring his team back on his own at that point he may have, he certainly tried. But it was a little too little too late. "I just wanted to win," DeRozan said solemnly after his offensive outburst was wasted in a game that was lost early in the first half. "Thats the only thing. Just looking at the score, I knew it was going to be tough. Its just my passion, just trying to win." "He was the one redeeming spot tonight," Casey eventually acknowledged. "The way he came out in the second half, but its a 48 minute game. Youve ggot to start the game out that way.dddddddddddd" First Half Credit the Bulls and their defence for what turned out to be a nightmare of a first half for the Raptors offence. The same team that registered 11 assists and hit 7-of-9 three-point attempts in the first half of Wednesdays game against a quality opponent had just seven dimes and missed all seven shots from long range. The Raptors were routinely pushed around under the rim, as the Bulls front line of Noah, Carlos Boozer and Luol Deng got the visitors off to a quick start on both ends of the floor. "You cant allow someone to come in your home and outwork you like that," Casey said. "Its hard to get to the basket on them," DeRozan admitted. "They all load in. Theyre a good defensive team so youve got to find counters and different ways to try and get to the basket." However, the game was lost on the other end, where the Raptors failed to match Chicagos defensive effort. With Rose on the sideline - ruled out prior to the game, nursing a sore right hamstring - the Bulls didnt miss a beat. They moved the ball with precision and shredded Toronto in the paint, outscoring them 26-18. "Mental frustration I think is more than anything else," Casey said. "We allowed them to do that. Youve got to make a team miss. We didnt play with the desperation weve played with this week." Regrouping With five of their next six games at home, the Raptors will benefit from more practice time, something they expect to take advantage of immediately as they return to the gym on Saturday to reflect on this loss. "Its a long season, its a marathon," Casey pointed out. "But its how you bounce back from these types of games that define you." "I dont want to get too overly alarmed because you have those. You have about five or six of those a year but we cant make it a habit." Toronto is back in action at the ACC Sunday afternoon when they host the Portland Trail Blazers. Cheap Buffalo Sabres Gear Wholesale Calgary Flames Jerseys Cheap Adidas Colorado Avalanche Jerseys Montreal Canadiens Outlet Store Wholesale New Jersey Devils Jerseys Adidas Arizona Coyotes Jerseys Cheap Adidas Boston Bruins Jerseys Cheap Adidas Carolina Hurricanes Jerseys Chicago Blackhawks Shop Free Shipping Wholesale Columbus Blue Jackets Jerseys Dallas Stars Shop Free Shipping Cheap Adidas Detroit Red Wings Jerseys Anaheim Ducks Jerseys China Wholesale Edmonton Oilers Jerseys Florida Panthers Shop Free Shipping Wholesale Los Angeles Kings Jerseys Minnesota Wild Outlet Store Cheap Adidas Nashville Predators Jerseys Cheap Adidas New York Islanders Jerseys New York Rangers Winter Classic Jerseys Cheap Adidas Ottawa Senators Jerseys Cheap Adidas Philadelphia Flyers Jerseys Wholesale Pittsburgh Penguins Jerseys Cheap Adidas San Jose Sharks Jerseys St. Louis Blues Winter Classic Jerseys Wholesale Tampa Bay Lightning Jerseys Toronto Maple Leafs Outlet Store Vancouver Canucks Outlet Store Cheap Adidas Vegas Golden Knights Jerseys Cheap Adidas Washington Capitals Jerseys Cheap Adidas Winnipeg Jets Jerseys ' ' '
« Calgary; Connor Braid, J
-road SPORTSCENTRE editions on the West si »


X Small ONLY 2 LEFT!
X Large ONLY 1 LEFT!
Our signature M-1 style bomber named A.J comes fully lined and with classic detailing. Comes in a GRS certified polyester quality made from recycled PET-bottles. A.J Bomber has a light water repellent which is completely free from fluorochemicals.
GRS: Global Recycle Standard - The objectives of the GRS are to define requirements to ensure accurate content claims and good working conditions, and that harmful environmental and chemical impacts are minimised.
If you require any additional information about the A.J (Stone) edition, please mail us using the form below and someone from our team will get back to you.


text:
#include "chunk_pruning_rule.hpp"

#include <algorithm>
#include <iostream>

#include "all_parameter_variant.hpp"
#include "constant_mappings.hpp"
#include "expression/expression_utils.hpp"
#include "hyrise.hpp"
#include "logical_query_plan/abstract_lqp_node.hpp"
#include "logical_query_plan/join_node.hpp"
#include "logical_query_plan/predicate_node.hpp"
#include "logical_query_plan/stored_table_node.hpp"
#include "lossless_cast.hpp"
#include "resolve_type.hpp"
#include "statistics/attribute_statistics.hpp"
#include "statistics/statistics_objects/min_max_filter.hpp"
#include "statistics/statistics_objects/range_filter.hpp"
#include "statistics/table_statistics.hpp"
#include "storage/table.hpp"
#include "utils/assert.hpp"

namespace {
using namespace hyrise;  // NOLINT
using PredicatePruningChain = std::vector<std::shared_ptr<PredicateNode>>;

/**
 * This function traverses the LQP upwards from @param next_node to find all predicates that filter
 * @param stored_table_node. If the LQP branches, recursion is used to continue @param current_predicate_pruning_chain
 * for all branches.
 * @param visited_predicate_nodes is for debugging purposes only.
 *
 * @returns all predicate pruning chain(s) that filter @param stored_table_node. Note, that these chains can overlap
 * in their first few nodes.
 */
std::vector<PredicatePruningChain> find_predicate_pruning_chains_by_stored_table_node_recursively(
    const std::shared_ptr<AbstractLQPNode>& next_node, PredicatePruningChain current_predicate_pruning_chain,
    const std::shared_ptr<StoredTableNode>& stored_table_node,
    std::unordered_set<std::shared_ptr<PredicateNode>>& visited_predicate_nodes) {
  std::vector<PredicatePruningChain> predicate_pruning_chains;

  visit_lqp_upwards(next_node, [&](const auto& current_node) {
    /**
     * In the following switch-statement, we
     *  (1) add PredicateNodes to the current predicate pruning chain, if applicable, and
     *  (2) check whether the predicate pruning chain continues or ends with current_node.
     */
    auto predicate_pruning_chain_continues = true;
    switch (current_node->type) {
      case LQPNodeType::Alias:
      case LQPNodeType::Sort:
      case LQPNodeType::StoredTable:
      case LQPNodeType::Validate:
      case LQPNodeType::Projection:
        break;
      case LQPNodeType::Predicate: {
        const auto& predicate_node = std::static_pointer_cast<PredicateNode>(current_node);
        /**
         * The recursion of this function should not lead to a repeated visitation of nodes. Due to the assumption
         * that predicate pruning chains do not merge after having branched out, predicate nodes are checked
         * for revisitation.
         */
        Assert(!visited_predicate_nodes.contains(predicate_node),
               "Predicate chains are not expected to merge after having branched.");
        visited_predicate_nodes.insert(predicate_node);

        // PredicateNode might not belong to the current predicate pruning chain,
        // e.g. when it follows a JoinNode and references LQPColumnExpressions from other StoredTableNodes.
        auto belongs_to_predicate_pruning_chain = true;
        const auto& predicate_expression = predicate_node->predicate();
        visit_expression(predicate_expression, [&](const auto& expression) {
          if (expression->type != ExpressionType::LQPColumn) {
            return ExpressionVisitation::VisitArguments;
          }
          const auto& column_expression = std::static_pointer_cast<LQPColumnExpression>(expression);
          if (column_expression->original_node.lock() != stored_table_node) {
            // PredicateNode does not filter stored_table_node.
            // Therefore, it is not added to the current predicate pruning chain.
            belongs_to_predicate_pruning_chain = false;
          }
          return ExpressionVisitation::DoNotVisitArguments;
        });
        if (belongs_to_predicate_pruning_chain) {
          current_predicate_pruning_chain.emplace_back(predicate_node);
        }
      } break;
      case LQPNodeType::Join: {
        // Check whether the predicate pruning chain can continue after the join
        predicate_pruning_chain_continues = false;
        auto join_node = std::static_pointer_cast<JoinNode>(current_node);
        for (const auto& expression : join_node->output_expressions()) {
          if (expression->type != ExpressionType::LQPColumn) {
            continue;
          }
          const auto column_expression = std::static_pointer_cast<LQPColumnExpression>(expression);
          if (column_expression->original_node.lock() == stored_table_node) {
            // At least one column expression of stored_table_node survives the join.
            predicate_pruning_chain_continues = true;
            break;
          }
        }
      } break;
      default:
        // For all other types of nodes, we cancel the predicate pruning chain.
        predicate_pruning_chain_continues = false;
    }

    if (!predicate_pruning_chain_continues) {
      // We do not have to go the LQP-tree up further because the predicate pruning chain is complete.
      predicate_pruning_chains.emplace_back(current_predicate_pruning_chain);
      return LQPUpwardVisitation::DoNotVisitOutputs;
    }

    /**
     * In case the predicate pruning chain branches, we use recursion to continue the predicate chain for each branch
     * individually.
     */
    if (current_node->outputs().size() > 1) {
      for (auto& output_node : current_node->outputs()) {
        auto continued_predicate_pruning_chains = find_predicate_pruning_chains_by_stored_table_node_recursively(
            output_node, current_predicate_pruning_chain, stored_table_node, visited_predicate_nodes);

        predicate_pruning_chains.insert(predicate_pruning_chains.end(), continued_predicate_pruning_chains.begin(),
                                        continued_predicate_pruning_chains.end());
      }
      return LQPUpwardVisitation::DoNotVisitOutputs;
    }

    // Continue without recursion
    return LQPUpwardVisitation::VisitOutputs;
  });

  return predicate_pruning_chains;
}

}  // namespace

namespace hyrise {

std::string ChunkPruningRule::name() const {
  static const auto name = std::string{"ChunkPruningRule"};
  return name;
}

void ChunkPruningRule::_apply_to_plan_without_subqueries(const std::shared_ptr<AbstractLQPNode>& lqp_root) const {
  std::unordered_map<std::shared_ptr<StoredTableNode>, std::vector<PredicatePruningChain>>
      predicate_pruning_chains_by_stored_table_node;

  // (1) Collect all StoredTableNodes and find the chains of PredicateNodes that sit on top of them
  const auto nodes = lqp_find_nodes_by_type(lqp_root, LQPNodeType::StoredTable);
  for (const auto& node : nodes) {
    const auto& stored_table_node = std::static_pointer_cast<StoredTableNode>(node);
    predicate_pruning_chains_by_stored_table_node.emplace(
        stored_table_node, _find_predicate_pruning_chains_by_stored_table_node(stored_table_node));
  }
  // (2) Set pruned chunks for each StoredTableNode
  for (const auto& [stored_table_node, predicate_pruning_chains] : predicate_pruning_chains_by_stored_table_node) {
    if (predicate_pruning_chains.empty()) {
      continue;
    }

    // (2.1) Determine set of pruned chunks per predicate pruning chain
    std::vector<std::set<ChunkID>> pruned_chunk_id_sets;
    for (const auto& predicate_pruning_chain : predicate_pruning_chains) {
      auto exclusions = _compute_exclude_list(predicate_pruning_chain, stored_table_node);
      pruned_chunk_id_sets.emplace_back(std::move(exclusions));
    }

    // (2.2) Calculate the intersection of pruned chunks across all predicate pruning chains
    auto pruned_chunk_ids = _intersect_chunk_ids(pruned_chunk_id_sets);
    if (pruned_chunk_ids.empty()) {
      continue;
    }

    // (2.3) Set the pruned chunk ids of stored_table_node
    DebugAssert(stored_table_node->pruned_chunk_ids().empty(),
                "Did not expect a StoredTableNode with an already existing set of pruned chunk ids.");
    // Wanted side effect of using sets: pruned_chunk_ids vector is already sorted
    stored_table_node->set_pruned_chunk_ids(std::vector<ChunkID>(pruned_chunk_ids.begin(), pruned_chunk_ids.end()));
  }
}

/**
 * @returns chains of PredicateNodes that sit on top of the given @param stored_table_node.
 */
std::vector<PredicatePruningChain> ChunkPruningRule::_find_predicate_pruning_chains_by_stored_table_node(
    const std::shared_ptr<StoredTableNode>& stored_table_node) {
  /**
   * In the following, we use a recursive function to traverse the LQP upwards from stored_table_node. It returns all
   * predicate pruning chains that filter stored_table_node.
   * It takes the following four arguments:
   *   1. The first argument marks the starting point of the LQP upwards-traversal. Hence, we pass stored_table_node.
   *   2. The second argument refers to the current predicate pruning chain. Since the LQP traversal has not yet
   *      started, we pass an empty vector.
   *   3. The third argument refers to the StoredTableNode for which predicate pruning chains should be returned.
   *      Therefore, we have to pass stored_table_node again.
   *   4. The fourth argument is used for debugging purposes: The following function's recursion should not lead to a
   *      repeated visitation of nodes. Due to the assumption that predicate pruning chains do not merge after
   *      having branched out, visited predicate nodes are tracked and checked for revisitation in an Assert.
   */
  std::unordered_set<std::shared_ptr<PredicateNode>> visited_predicate_nodes;  // for debugging / Assert purposes
  return find_predicate_pruning_chains_by_stored_table_node_recursively(stored_table_node, {}, stored_table_node,
                                                                        visited_predicate_nodes);
}

std::set<ChunkID> ChunkPruningRule::_compute_exclude_list(
    const PredicatePruningChain& predicate_pruning_chain,
    const std::shared_ptr<StoredTableNode>& stored_table_node) const {
  std::set<ChunkID> excluded_chunk_ids;
  for (const auto& predicate_node : predicate_pruning_chain) {
    // Determine the set of chunks that can be excluded for the given PredicateNode's predicate.
    auto excluded_chunk_ids_iter =

        _excluded_chunk_ids_by_predicate_node_cache.find(std::make_pair(stored_table_node, predicate_node));
    if (excluded_chunk_ids_iter != _excluded_chunk_ids_by_predicate_node_cache.end()) {
      // Shortcut: The given PredicateNode is part of multiple predicate pruning chains and the set of excluded chunks
      //           has already been calculated.
      excluded_chunk_ids.insert(excluded_chunk_ids_iter->second.begin(), excluded_chunk_ids_iter->second.end());
      continue;
    }

    auto& predicate = *predicate_node->predicate();

    // Hacky:
    // `table->table_statistics()` contains AttributeStatistics for all columns, even those that are pruned in
    // `stored_table_node`.
    // To be able to build a OperatorScanPredicate that contains a ColumnID referring to the correct AttributeStatistics
    // in `table->table_statistics()`, we create a clone of `stored_table_node` without the pruning info.
    auto stored_table_node_without_column_pruning =
        std::static_pointer_cast<StoredTableNode>(stored_table_node->deep_copy());
    stored_table_node_without_column_pruning->set_pruned_column_ids({});
    const auto predicate_without_column_pruning = expression_copy_and_adapt_to_different_lqp(
        predicate, {{stored_table_node, stored_table_node_without_column_pruning}});
    const auto operator_predicates = OperatorScanPredicate::from_expression(*predicate_without_column_pruning,
                                                                            *stored_table_node_without_column_pruning);
    // End of hacky

    if (!operator_predicates) {
      return {};
    }

    std::set<ChunkID> current_excluded_chunk_ids;
    auto table = Hyrise::get().storage_manager.get_table(stored_table_node->table_name);

    const auto stored_table_node_output_expressions = stored_table_node_without_column_pruning->output_expressions();
    for (const auto& operator_predicate : *operator_predicates) {
      // Cannot prune column-to-column predicates, at the moment. Column-to-placeholder predicates are never prunable.
      if (!is_variant(operator_predicate.value)) {
        continue;
      }

      const auto column_data_type = stored_table_node_output_expressions[operator_predicate.column_id]->data_type();

      // If `value` cannot be converted losslessly to the column data type, we rather skip pruning than running into
      // errors with lossful casting and pruning Chunks that we shouldn't have pruned.
      auto value = lossless_variant_cast(boost::get<AllTypeVariant>(operator_predicate.value), column_data_type);
      if (!value) {
        continue;
      }

      auto value2 = std::optional<AllTypeVariant>{};
      if (operator_predicate.value2) {
        // Cannot prune column-to-column predicates, at the moment. Column-to-placeholder predicates are never prunable.
        if (!is_variant(*operator_predicate.value2)) {
          continue;
        }

        // If `value2` cannot be converted losslessly to the column data type, we rather skip pruning than running into
        // errors with lossful casting and pruning Chunks that we shouldn't have pruned.
        value2 = lossless_variant_cast(boost::get<AllTypeVariant>(*operator_predicate.value2), column_data_type);
        if (!value2) {
          continue;
        }
      }

      auto condition = operator_predicate.predicate_condition;

      const auto chunk_count = table->chunk_count();
      auto num_rows_pruned = size_t{0};
      for (auto chunk_id = ChunkID{0}; chunk_id < chunk_count; ++chunk_id) {
        const auto chunk = table->get_chunk(chunk_id);
        if (!chunk) {
          continue;
        }

        const auto pruning_statistics = chunk->pruning_statistics();
        if (!pruning_statistics) {
          continue;
        }

        const auto segment_statistics = (*pruning_statistics)[operator_predicate.column_id];
        if (_can_prune(*segment_statistics, condition, *value, value2)) {
          const auto& already_pruned_chunk_ids = stored_table_node->pruned_chunk_ids();
          if (std::find(already_pruned_chunk_ids.begin(), already_pruned_chunk_ids.end(), chunk_id) ==
              already_pruned_chunk_ids.end()) {
            // Chunk was not yet marked as pruned - update statistics
            num_rows_pruned += chunk->size();
          } else {
            // Chunk was already pruned. While we might prune on a different predicate this time, we must make sure that
            // we do not over-prune the statistics.
          }
          current_excluded_chunk_ids.insert(chunk_id);
        }
      }

      if (num_rows_pruned > size_t{0}) {
        const auto& old_statistics =
            stored_table_node->table_statistics ? stored_table_node->table_statistics : table->table_statistics();
        const auto pruned_statistics = _prune_table_statistics(*old_statistics, operator_predicate, num_rows_pruned);
        stored_table_node->table_statistics = pruned_statistics;
      }
    }

    // Cache result
    _excluded_chunk_ids_by_predicate_node_cache.emplace(std::make_pair(stored_table_node, predicate_node),
                                                        current_excluded_chunk_ids);
    // Add to global excluded list because we collect excluded chunks for the whole predicate pruning chain
    excluded_chunk_ids.insert(current_excluded_chunk_ids.begin(), current_excluded_chunk_ids.end());
  }

  return excluded_chunk_ids;
}

bool ChunkPruningRule::_can_prune(const BaseAttributeStatistics& base_segment_statistics,
                                  const PredicateCondition predicate_condition, const AllTypeVariant& variant_value,
                                  const std::optional<AllTypeVariant>& variant_value2) {
  auto can_prune = false;

  resolve_data_type(base_segment_statistics.data_type, [&](const auto data_type_t) {
    using ColumnDataType = typename decltype(data_type_t)::type;

    const auto& segment_statistics = static_cast<const AttributeStatistics<ColumnDataType>&>(base_segment_statistics);

    // Range filters are only available for arithmetic (non-string) types.
    if constexpr (std::is_arithmetic_v<ColumnDataType>) {
      if (segment_statistics.range_filter) {
        if (segment_statistics.range_filter->does_not_contain(predicate_condition, variant_value, variant_value2)) {
          can_prune = true;
        }
      }
      // RangeFilters contain all the information stored in a MinMaxFilter. There is no point in having both.
      DebugAssert(!segment_statistics.min_max_filter,
                  "Segment should not have a MinMaxFilter and a RangeFilter at the same time");
    }

    if (segment_statistics.min_max_filter) {
      if (segment_statistics.min_max_filter->does_not_contain(predicate_condition, variant_value, variant_value2)) {
        can_prune = true;
      }
    }
  });

  return can_prune;
}

std::shared_ptr<TableStatistics> ChunkPruningRule::_prune_table_statistics(const TableStatistics& old_statistics,
                                                                           OperatorScanPredicate predicate,
                                                                           size_t num_rows_pruned) {
  // If a chunk is pruned, we update the table statistics. This is so that the selectivity of the predicate that was
  // used for pruning can be correctly estimated. Example: For a table that has sorted values from 1 to 100 and a chunk
  // size of 10, the predicate `x > 90` has a selectivity of 10%. However, if the ChunkPruningRule removes nine chunks
  // out of ten, the selectivity is now 100%. Updating the statistics is important so that the predicate ordering
  // can properly order the predicates.
  //
  // For the column that the predicate pruned on, we remove num_rows_pruned values that do not match the predicate
  // from the statistics. See the pruned() implementation of the different statistics types for details.
  // The other columns are simply scaled to reflect the reduced table size.
  //
  // For now, this does not take any sorting on a chunk- or table-level into account. In the future, this may be done
  // to further improve the accuracy of the statistics.

  Assert(old_statistics.row_count >= 0, "Did not expect a negative row count.");
  const auto column_count = old_statistics.column_statistics.size();

  std::vector<std::shared_ptr<BaseAttributeStatistics>> column_statistics(column_count);

  auto scale = 1.0f;
  if (old_statistics.row_count > 0) {
    scale = 1 - (static_cast<float>(num_rows_pruned) / old_statistics.row_count);
  }
  for (auto column_id = ColumnID{0}; column_id < column_count; ++column_id) {
    if (column_id == predicate.column_id) {
      column_statistics[column_id] = old_statistics.column_statistics[column_id]->pruned(
          num_rows_pruned, predicate.predicate_condition, boost::get<AllTypeVariant>(predicate.value),
          predicate.value2 ? std::optional<AllTypeVariant>{boost::get<AllTypeVariant>(*predicate.value2)}
                           : std::nullopt);
    } else {
      column_statistics[column_id] = old_statistics.column_statistics[column_id]->scaled(scale);
    }
  }

  return std::make_shared<TableStatistics>(
      std::move(column_statistics), std::max(0.0f, old_statistics.row_count - static_cast<float>(num_rows_pruned)));
}

std::set<ChunkID> ChunkPruningRule::_intersect_chunk_ids(const std::vector<std::set<ChunkID>>& chunk_id_sets) {
  if (chunk_id_sets.empty() || chunk_id_sets.at(0).empty()) {
    return {};
  }
  if (chunk_id_sets.size() == 1) {
    return chunk_id_sets.at(0);
  }

  std::set<ChunkID> chunk_id_set = chunk_id_sets.at(0);
  for (auto set_idx = size_t{1}; set_idx < chunk_id_sets.size(); ++set_idx) {
    const auto& current_chunk_id_set = chunk_id_sets.at(set_idx);
    if (current_chunk_id_set.empty()) {
      return {};
    }

    std::set<ChunkID> intersection;
    std::set_intersection(chunk_id_set.begin(), chunk_id_set.end(), current_chunk_id_set.begin(),
                          current_chunk_id_set.end(), std::inserter(intersection, intersection.end()));
    chunk_id_set = std::move(intersection);
  }

  return chunk_id_set;
}

}  // namespace hyrise

redpajama_set_name: RedPajamaGithub


text:
Also, the Sweet Violet is thought to possess admirable virtues as a cosmetic. Lightfoot gives a translation from a Highland recipe in Gaelic, for its use in this capacity, rendered thus: "Anoint thy face with goat's milk in which violets have been infused, and there is not a young prince upon earth who will not be charmed with thy beauty."
Added Mar 5, 2011 | Healing Flowers | 4,670 Reads
The Wild violet or Pansy (Viola tricolor) is found commonly throughout Great Britain on banks and in hilly pastures, from whence it has come to be cultivated in our gardens.
Viola, a corruption of "Ion," is a name extended by old writers to several other different plants. But the true indigenous representative of the Violet tribe is our Wild Pansy, or Paunce, or Pance, or Heart's ease; called also "John of my Pink," "Gentleman John," "Meet her i' th' entry; kiss her i' th' buttery" (the longest plant name in the English language), and "Love in idleness."
"A little Western flower, Before milk-white, now purple with love's wound, And maidens call it--'Love in idleness.'"
From its coquettishly half hiding its face, as well as from some fancied picture in the throat of the corolla it has received various other amatory designations, such as "cuddle me to you," "tittle my fancy," "jump up and kiss me," and "garden gate": also it is called "Flamy," because its colours are seen in the flame of burning wood, and Flame Flower.
The term "heart's ease" has signified a cordial which is comforting to the heart. But the fact is that Pansies, "pretty little Puritans," produce anything but heart's ease if eaten, and their roots provoke sickness so speedily that these are sometimes employed as an emetic.
Dr. Johnson derived the word Pansy from Panacea, [590] as curing all diseases; but this was a mistake, The true derivation is from the French pensée, "thoughts," as Shakespeare knew, when making Ophelia say: "There is pansies--that's for thoughts."
From its three colours Violet has been called the herb Trinity. A medicinal tincture is made (H.) from the Viola tricolor with spirit of wine, using the entire plant. Hahnemann found that the Pansy violet, when taken by provers, served to induce cutaneous eruptions, or to aggravate them, and he reasoned out the curative action of the plant in small diluted doses for the cure of these symptoms, when occurring as disease.
"For milk crust and scald head," says Dr. Hughes (Brighton)--the plague of children, "I have rarely needed any other medicine than this Viola tricolor; and I have more than once given it in recent impetigo (pustular eczema) for adults, with very satisfactory effects." For the first of these maladies the tincture should be given in doses of from three to six drops, to a child of from two to six or eight years, three times a day in water.
Again, "for curing scalled (from scall, a shell) head in children, a small handful of the fresh plant, or half a drachm of the dried herb, boiled for two hours in milk, is to be taken each night and morning; also a bread poultice made with this decoction should be applied to the affected part.
"During the first eight days the eruption increases, and the urine, when the medicine succeeds, has a nauseous odour like that of the cat, which presently passes off; then, as the use of the plant is continued, the scabs disappear, and the skin recovers its natural clean condition."
The root of the Viola tricolor has similar properties to that of Ipecacuanha, and is often used beneficially as a substitute by country doctors. An infusion thereof is admirable for the dysentery of young children. It loves a mixture of chalk in the soil where it grows.
The Pansy contains an active chemical principle, "violin," resin, mucilage, sugar, and the other ordinary constituents of plants. When bruised the plant, and especially its root, smells like peach kernels, or prussic acid. It acts as a slight laxative: and "the distilled water of the flowers" says Gerard--"cureth the French disease."
The Germans style the Violet Stief-mutter, because figuratively the mother-in-law appears in the flower predominant in purple velvet, and her own two daughters gay in purple and yellow, whilst the two poor little Cinderellas, more soberly and scantily attired, are squeezed in between.
Again, another fable says, with respect to the five petals and the five sepals of the Violety, two of which petals are plain in colour, whilst each has a single sepal, the three other petals being gay of hue, one of these (the largest of all) having two sepals; that the Pansy represents a family of husband, wife, and four daughters, two of the latter being step-children of the wife.
The plain petals are the step-children, with only one chair; the two small gay petals are the daughters, with a chair each; and the large gay petal is the wife, with two chairs. To find the father, one must strip away the petals until the stamens and pistils are bare. These then bear a fanciful resemblance to an old man with a flannel wrapper about his neck, having his shoulders upraised, and his feet in a bath tub. The French also call the Pansy "The Step-mother."
The chemical principle, "violin," contained in the flowering Wild Pansy resembles emetin in action. If the dried plant is given medicinally, from ten to sixty grains may be taken as a dose, in infusion.
The Sweet Violet (Viola odorata) is well known for its delicious fragrance of perfume when growing in our woods, pastures, and hedge banks. The odour of its petals is lost in drying, but a pleasant syrup is made from the flowers which is a suitable laxative for children.
A conserve, called "violet sugar," prepared from the flowers, has proved of excellent use in consumption. This conserve was made in the time of Charles the Second, being named "Violet plate." Also, the Sweet Violet is thought to possess admirable virtues as a cosmetic. Lightfoot gives a translation from a Highland recipe in Gaelic, for its use in this capacity, rendered thus: "Anoint thy face with goat's milk in which violets have been infused, and there is not a young prince upon earth who will not be charmed with thy beauty."
There is a legend that Mahomet once compared the excellence of Violet perfume above all other sweet odours to himself above all the rest of creation: it refreshes in summer by its coolness, and revives in winter by its warmth.
The Syrup of Sweet Violets should be made as follows: To one pound of sweet violet flowers freshly picked, add two-and-a-half pints of boiling water: infuse these for twenty-four hours in a glazed china vessel, then pour off the liquid, and strain it gently through muslin; afterwards add double its weight of the finest loaf sugar, and make it into a syrup, but without letting it boil.
Violets are cultivated largely at Stratford-on-Avon for the purpose of making the syrup, which when mixed with almond oil, is a capital laxative for children, and will help to soothe irritative coughs, or to relieve a sore throat.
The flowers have been commended for the cure of epilepsy and nervous disorders; they are laxative when eaten in a salad. The seeds are diuretic, and will correct gravel. The Sweet Violet contains the chemical principle "violin" in all its parts. A medicinal tincture (H.) is made from the entire fresh plant with proof spirit. It acts usefully for a spasmodic cough, with hard breathing; also for rheumatism of the wrists especially the right one.
This Violet is highly esteemed likewise in Syria, chiefly because of its being chosen for making the violet sugar used in sherbet. That which is drunk by the Grand Signior himself is compounded of sweet violets, and sugar.
From the flower may be pleasantly contrived a pretty miniature bird, by carefully removing the calyx and corolla, leaving only the stamens and pistil attached to the receptacle; then the stigma forms the bead and neck, whilst the anthers make a golden breast, and their tongues appear like a pair of green wings.
Mademoiselle Clarion, a noted French actress, had a nosegay of violets sent her every morning of the season for thirty years; and to enhance the value of the gift, she stripped off the petals every evening, being passionately devoted to the flower, and took them in an infusion as tea.
Pliny recommended a garland of sweet violets as a cure for headache. The Romans made wine of the flowers; and Napoleon the Great claimed the Violet as par excellence his own, for which reason he was often styled, Le père du violette. This floral association took date from the time of his exile to Elba. The Emperor's return was alluded to among his adherents by a pass word, "Aimez vous la Violette? Eh, bien! reparaitra au printemps."
The scentless Dog Violet (Viola canina) is likewise mildly laxative, and possesses the virtues of the Viola odorata in a lesser degree.
The Water Violet is "feather foil" (Hottonia palustris).


text:
package com.devicehive.model;

public final class SpecialNotifications {

    /**
     * Server-originated notification about new device registration
     */
    public static final String DEVICE_ADD = "$device-add";
    /**
     * Server-originated notification about device changes
     */
    public static final String DEVICE_UPDATE = "$device-update";
    /**
     * Device originated notification about equipment state change
     */
    public static final String EQUIPMENT = "equipment";
    /**
     * Device originated notification about device status change
     */
    public static final String DEVICE_STATUS = "device-status";
}


Definitely prepare early! Every little bit helps.
Definitely a relevant post for so many. Clear insight in a great post. Thanks for this.
I love the point about clearing debts early on. If I had anything to do over again it would be to reduce my debt at a young age. What an anchor that was…..
Good tips for when you're new to the process. Another major thing to do in your 20's: Educate yourself on the options for tax deferred savings. Start making a plan and mapping out how you can achieve the retirement you want to experience by the age you want to stop working. Then commit yourself to actually making it happen!