text:
5 Ways To Support The Black Lives Matter Movement If You Can't Protest
Sarah Jones-Smith
Jun 13, 2020, 14:15 EDT
Black Lives Matter supporters across the globe have banned together to protest against police brutality and to celebrate the lives of George Floyd, Breonna Taylor, Ahmaud Arbery, and the countless other Black people who have lost their lives at the hands of law enforcement and racism.
But even if you aren't able to protest, there are ways you can help support the Black Lives Matter movement from home, too.
Social media is on fire with tweets from those who support the movement and those who are ignorant to why it is necessary, in fact, imperative.
RELATED: Saying 'I Have Black Friends' Doesn't Help The Fight Against Racism
8 minutes and 46 seconds. 562 seconds in total. A lifetime when you have a police officer with his knee on your neck as you beg and plead for him to let you loose. "Please, I can't breathe!" This is how George Floyd spent his last living moments as a police officer mercilessly pinned him down, ignoring every cry.
You know that run you take every morning? The one right before you start your day and head out for work. Not once do you think it will be your last because 2.23 miles into that run, you will be murdered in the streets of your own neighborhood? Ahmaud Arbery did not think that 2.23 miles into his run, he would be murdered in the streets of his own neighborhood.
A "no-knock warrant" is not supposed to end in an innocent woman being murdered in her own home. Besides, what are you still looking for when the suspect is already in custody? Breonna Taylor lost her life in the four walls of her own home at the hands of the ones who took an oath to protect and serve.
RELATED: Who Are Drevon Ames And Iesha Harper? New Details On The Phoenix Couple And Their Kids Who Were Terrorized By Police
For years on end, Black people have been discriminated against, victims of racism, victims of violent crime, victims of police brutality, and much more. The Black community is tired.
The Black community is tired of watching innocent Black youth lose their lives because they were playing with a toy gun, as many children do at the age of 12 (Tamir Rice). The Black community is tired of watching their women shed blood because she was doing nothing more than trying to be a peacemaker (Yvette Smith). The Black community is tired of being stopped for something as simple as a missing tail light and ending up with their face plastered on social media under a RIP hashtag (Samuel DuBose).
Rightfully so, the Black community is fighting for our right to actually be free in the "land of the free and the home of the brave."
With Coronavirus still spreading rapidly, many are not in a position where they can protest or are comfortable being in large crowds. The greatest thing about these protests is that you can do it right from the comfort of your own home, too. Whether you are staying inside by force or choice, there are several ways for you to extend your support to the Black community.
1. Say their names.
Share the stories of the victims. Keep their names relevant and alive so it can be known that we do this for every person that has shed blood and lost their lives as a result of pure hatred and racism.
Use your platform in every way that you possibly can. Whether you have 50 followers or 50,000 followers, you have the power to educate and make a change right at your fingertips.
Although police brutality was going on before this, the Black Lives Matter movement was started after the murder of 17-year-old Trayvon Martin. He was fatally shot by George Zimmerman, who later was acquitted, as he was walking back to his father's fiancee's home after a trip to the convenience store. Martin had nothing more than a cigarette lighter, earphones, an Arizona watermelon fruit juice cocktail, slightly over $40 in cash, and a bag of Skittles with him. He had no weapon of any kind and was not a threat to anyone.
Kimani Gray was 16 when he was killed by NYPD officers. The cops handcuffed Gray has he laid wounded on the ground crying for help. The officers were not charged for his murder.
7-year-old Aiyana Stanley-Jones was shot in the head while she was asleep. After a five year leave, the officer who murdered her was able to return to work.
Eric Garner was accused of selling single cigarettes out of the pack. Garner told officers that he was not selling cigarettes and he was tired of being harassed and they proceeded to attempt to arrest him. Like George Floyd, a few of the 27-year-old's last words were "I can't breathe" as officers were on top of him. The NYPD officer who had Garner in a chokehold did not face federal charges.
A few other victims and faces of the Black Lives Matter movement include Oscar Grant, Philando Castile, Sandra Bland, Walter Scott, Terrance Crutcher, Michael Brown Jr., Atatiana Jefferson, Tony McDade, Alton Sterling, Freddie Gray, Travares McGill, Eric Harris, Kenneth Chamberlin, Lawrence McCoy, Tanisha Anderson, Tyree Woodson, Darrien Hunt, Leonardo Marquette Little, Marcus Ryan Golden, Lavon King, Naeschylus Vinzant, Anesson Joseph, Herbert Gilbert, Trey Ta'Quan Pringle Sr., Ronell Foster, Danny Ray Thomas, Chinedu Valentine Okobi, Jerome Keith Allen, Tawon Boyd, Dalvin Hollins, Charlin Charles, Kevin Hicks, Xavier Tyrell Johnson, Yolanda Thomas, Quintine Barksdale, Dejuan Guillory, Stephen Gale, Warren Ragudo, Mario Clark, Tyre King, Marcus McVae, Marzues Scott, Ollie Lee Brooks, Bishar Hassan, Keita O'Neil, Joshua Wayne Harvey, Sherida Davis, Bennie Branch ... and too many others.
2. Donate to a worthy cause.
There are several ways to donate to funds that will go towards different causes. Some go to the families of the victims, some go towards bailing protestors out of jail when they have been unlawfully arrested and others go towards restoring Black businesses that are being destroyed by people who are anti-Black Lives Matter disguised as protestors.
Minnesota Freedom Fund
The Minnesota Freedom Fund is a non-profit organization that pays bail for low-income individuals who cannot afford it. For the Black Lives Matter protestors, they are bailing out those who are unlawfully arrested and have their first amendment rights violated.
This is community-based in cities there are several other cities doing the same. You can search for a bail fund in your city by clicking here. This list was compiled and shared by supporters on social media who want to ensure that anyone who wants to donate has the opportunity to do so.
Medical Supply Fund
The Medical Supply Fund is an organization led by health care providers such as physicians, nurses, healers, herbalists, and doulas to provide protestors with medical care and supplies if needed.
Because a lot of protestors may experience medical racism, the refusal of hospitals to provide proper care based on prejudice or racism, the Medical Supply Fund is able to provide them with what they may need.
The Legal Defense Fund is run by the National Association for the Advancement of Colored People. They are currently helping protestors who are unlawfully arrested and have been protecting participants in civil rights struggles for the past 75 years.
Black Visions Collective fight to create a world where Black people can use the guidance of our ancestors and our own experiences to destroy systems of oppression. They focus on transformative work and create powerful campaigns. This is crucial for the Black Lives Matter Movement because campaigns and protests are how the people get their voices heard.
YouTubers have also found ways that those who are unable to make monetary donations can still do their part.
They are creating monetized videos specifically for the Black Lives Matter Movement. All you have to do is watch the video and ads from beginning to end and the proceeds that they make from the videos will go to the movement. The first of these videos were made by YouTuber Zoe Amira. Many followed her lead shortly after, using their platforms to make a change and assist those who may not have the means to.
Many more funds can be found on Twitter. The best way to find these funds is to spotlight search phrases such as, "donation thread" or "bail fund thread."
3. Support black businesses.
Many companies have made their stance on these important issues crystal clear, but the silence from big-name companies is deafening. Instead of purchasing your must-have items from these companies that are for the people's money, but not for the people's wellbeing, support a Black-owned business.
There are a great number of black-owned businesses that can be found in many areas around the United States. Luckily, there are several apps that you can use to find Black-owned businesses in your city.
Created in 2018, the Black Nation app allows Black-owned businesses to list their companies to create visibility and garner attention. EatOkra is an app that directs its users to Black-owned restaurants in their area. Searches can be made by cuisine or location and you can even get food delivered.
The largest marketplace for Black-owned businesses is WeBuyBlack. They allow users to browse through categories to search for their needs such as accessories, children's toys, clothes and much more.
These are just a few apps that allow you to order online or find Black-owned businesses near you. Another way to find Black-owned businesses is to look under the Twitter spotlight search "Black-owned businesses by city thread."
4. Sign petitions to support initiatives that help the cause.
Petitions speak volumes. Take a few minutes out of your day to sign some petitions supporting the movement in your state and other states around the country.
Ban the Use of Inhumane Rubber Bullets
A lot of peaceful protestors ended up seriously injured by rubber bullets as they exercised their freedom of speech and assembly. This petition calls for inhumane rubber bullets to be banned altogether.
Stand With Breonna
The "Stand With Breonna" petition was created for people around the world to sign for the prosecution of the officers that murdered Breonna Taylor.
Life Sentence For Police Brutality
This petition is for officers who are guilty of police brutality to not only lose their jobs but also receive a life sentence and rightful consequences for their actions.
Abolish Prison Labor
Major corporations exploit prisoners, forcing them to work without pay. Companies such as Wal-Mart and McDonald's use this labor to cut down on their production cost. Most of the people impacted by this are Black prisoners. This petition is to put an end to prison labor.
Links to more petitions can be found under the "Black Lives Matter Petitions" spotlight search on Twitter.
5. Do not tell the black community how to handle their pain.
If you are not a Black person, it is important that you understand that you will never experience the same injustices that black people have faced since the moment they were brought to America.
This is not the time to undermine what the black community goes through and attempt to force them to protest in ways that make you comfortable. Take those feelings of discomfort and imagine what it must feel like to have that carry you throughout your entire life. Even doing that, you would not feel half of what the Black community feels.
The best way to help is to extend your support. Allow opportunities for people to not only share their stories but also receive validation, encouragement, and love.
RELATED: It's Not Black People's Job To Solve Racism
Sarah Jones-Smith is a writer who is passionate about producing content that uplifts the Black community and takes a stand for important issues.


Enter the default username and password to open the router configuration page. Most default username and passwords are admin and password. In some cases, leave the username field blank and type password as the password.... Connect a phone cable from the Line or Wall Socket on the ADSL splitter to the telephone port on your wall. Connect a phone cable from the ADSL Modem port on the ADSL splitter to the DSL port on the back of the router.
Changing the default password allows you to prevent unauthorized access to the administration page of your router. Technical Support are unable to obtain your username and password. If you forget your administration page login details, you will need to perform a factory reset to restore the default username and password of admin .... WiFi ADSL Modem Router I have recently changed my plan with Telstra to an Everyday Bundle - ADSL Broadband 100GB + home phone. The operator told me to purchase a WiFi modem for home so I could use my work computer at home.
Hi Guys, Today We Gonna Show you that "How to Change WiFi Password on Binatone Modems and Routers ?". We Know that time Wi-Fi Modem is Found in every Home and Office. So the security of modem is also necessary to protect from unauthorized people to use their Internet. So that's why we Put Password on WiFi Router.... Wait till ADSL Lamp on the ADSL router glows again and become stable. This takes around 30-60 Secs. This takes around 30-60 Secs. Click on Internet explorer/ your browser and browse the Internet.
In this tutorial, we will see how to retrieve password from DSL Router settings. If your ISP technician has configured your broadband settings and you forgot to collect the user credentials from him, then you can retrieve the details by following below mentioned steps.
Once you find your router's default username and password, try logging in to the router by typing the IP address you wrote down earlier into your web browser's address bar and then entering the username and password when prompted. If the default username and password don't work, keep them handy anyway because you'll need them shortly.


The Family Choice Awards was founded by the Family Magazine Group, America's largest free parenting publication, and is recognized as the premier resource for the very best in children's and parenting products and services.
Check out that monitor you're looking at? Ever wonder who designed it? Or how about that mouse you're clicking? The pen sitting on your desk. The desk itself. The clothes you're wearing, the car you're driving. Or even still—the seats in your car, all the way down to the springs, in the seat, in the car you're driving. All designed by someone.
Design is everywhere—we just tend to take it for granted. We really don't notice how everything is designed, but we're drawn to the design—either consciously, or subconsciously. We don't really know why we want the cool new cell phone, or the latest fashions. We just do. It's all about the design.
Try this test. Take a minute out of your day to pick an object—could be anything, a radio, tv, shampoo bottle, coffee cup, a spoon, a fork—anything. Then consider the design. The shape/contour/materials/color, etc. Then, think about how design ties into that object on multiple levels.
Example: a designer designed the plastic earpiece from the phone on my desk, which required a mold (which required a designer), made by a machine (which required a designer), which has a bunch of crazy parts (which required a designer)…. you get my point. The links become nearly infinite.
Now, consider the power of design, how it influences your life and how it ties in to creativity. Design is everywhere.
How many of us start out as creative little beans, slapping colors around, mucking with clay, paste, crayons? Happy. Yet at some point, we start to feel inadequate. Maybe someone said something unkind. Maybe no one said anything at all.
This is one of the reasons Parker created Creativity Express.
"My main goal was to open that back up. Kids are wild, fearless at a young age. Yet at some point, that shuts down." By using the animated software, kids get to learn about artists, their techniques, their tools, and become artists themselves.
The whole idea started as a museum guide for kids. Parker wanted to create a bridge between museums and schools, he worked with the staff at The National Gallery of Art to develop the program. . Kids would learn about the art in advance, then walk the great halls with enhanced perspective and information. However, the teachers noted the value of the software, in and of itself. Nothing like it existed, so the project grew into a more structured tool, with a full curriculum. Parker and team brought in the Institute for Learning Innovation. Full on art 101."I didn't even know what the word pedagogy meant." says Parker.
Together they built a fun tool that teaches kids everything art, from Anasazi culture to wax resist technique.
The program also encourages creativity through games and activities.
Everyone should express their inner artist, we are now finding important links between expression and the brain. Yet kids either don't have opportunities to be creative, or feel like they have to excel, in this go go age.
Parker knows creative. At the helm of Disney's famed computer animation department, he worked with teams of gifted graphic artists for twelve years. Although his own background was film study, he was immersed in a world of visual literacy.
The studio is known for intense preparation, each film undergoes a 3-4 year process of detailed research. For the film, Mulan, several dozen artists went to China to absorb firsthand, cultural traditions, the landscape, color palettes, quality of light. This depth of experience informs Creativity Express. Parker seeks to hone a child's senses of observation and context through the software program. One theme running throughout is artists observing other artists, techniques, cultures and emotional states.
The current trend towards arts integrative learning is being welcome by many champions of the whole brain.
"Our education system doesn't encourage right brain thinking, and that's a shame.," says Parker. Think Pink.
"However, I do think there is a wave picking up here,"says Parker, who has witnessed the teachers' enthusiasm for early creativity.
Parker agrees –our brains work holistically – the challenge for parents and teachers is how to bring these two capacities back together.


such as several mismatched buttons and additional vintage lace. The darker, rose colored pillow has a handmade flower that has been lightly singed on the edges and the bows are made from a very sheer, lightweight cotton fabric and tulle.
Here they are before the bow and flowers are sewn on. Lots of luscious, vintage lace!
I love the wide piece of vintage lace. It was carefully cut from a beautiful place mat and stitched in place..
Did you maybe notice this tablecloth underneath the heart pillows in the photos above? I purchased it today. It is beautiful, vintage perfection! It measures about 48x50 and in excellent condition!
I may have picked up a few other items too! That little hand towel at the top with the embroidery is so cute! I love it!
The towel is in perfect condition and the linen has such a nice feel to it!
Another pile to add to my collection though this pile is much smaller!
I still have a few hearts sitting in my "to do" pile. Then I will be focusing on some birds and butterflies which are in the planning stages right now and I can't wait to begin working on them!
I was recently (informally) interviewed by Jemma who blogs at At Home With Jemma. She wrote such a wonderful introduction to the interview -- if you would like to read it please click on the link above.
The post is part of the Passion, Purpose Productivity Project that Jemma began earlier in the year. It has been very interesting and thought provoking to read all of the posts related to this project. I thank Jemma for her insight and her wonderful ability to touch upon a sensitive subject with just the right words. I also thank her for the opportunity to participate. I have enjoyed it so very much.


text:
import json
import db
import uuid

def post_data(visualization_id, request):
    """Post new data for an existing visualization (i.e. add data to existing
    object in db).

    Arguments:
    visualization_id -- id of the visualization for which the data posted is.
    request          -- Flask request object, with the data for the
                        visualization in the json field.
    """
    data = request.json
    result = db.write_viz_data(visualization_id, data)
    # TODO: return proper value to describe succes/failure of data write.
    return {"empty": result}

def post_data_new_viz(request):
    """Post new data for a new visualization (i.e. we don't know the id, so
    create some new visualization object to hold this data). The method should
    return the _id of the visualization created.

    Arguments:
    request --  Flask request object, with the data for the visualization
                in the json field.
    """
    # check if any name has been provided for the visualization, otherwise
    # generate a random one.
    data = request.get_json()
    print type(data)
    print data
    if not 'name' in data:
        data.name = uuid.uuid4()

    # generate the viz id.
    data['_id'] = uuid.uuid4().hex

    # write the new object to db.
    result = db.write_viz_data(data['_id'], data)
    return result

def get_viz_config(visualization_id):
    viz_config = db.get_viz_config(visualization_id)
    return viz_config

def get_data(visualization_id, request):
    print "get to", visualization_id, request
    visualization = db.get_visualization(visualization_id)
    return visualization

def get_notebooks():
    notebooks = db.get_notebooks()
    return notebooks

def get_visualizations_for_notebook(notebook_id):
    visualizations = db.get_visualizations_for_notebook(notebook_id)
    return visualizations

def create_notebook(notebook):
    """Create a new notebook given a notebook object. This object should
    have keys: '_id' and 'name', otherwise an error will be returned.

    Arguments:
    notebook -- dictionary containing info for the notebook (should contain
                _id and name as keys.
    """
    if "_id" in notebook and "name" in notebook:
        db.create_notebook(notebook)
        return "Notebook created"
    else:
        return "Invalid notebook"

def remove_visualization(visualization_id):
    """ TODO: comment
        TODO: return sensible value
    """
    db.remove_visualization(visualization_id)
    return {"Removed": visualization_id}

def remove_notebook(notebook_id):
    """ TODO: comment
        TODO: return sensible value
    """
    db.remove_notebook(notebook_id)
    return {"Removed": notebook_id}

def update_notebook(notebook_id, data):
    """ TODO: comment
        TODO: return sensible value
        TODO: should also have a method that allows updating of specific fields instead of full overwrite.
    """
    db.update_notebook(notebook_id, data)
    return {"Updated": notebook_id}

def incremental_update_notebook(notebook_id, data):
    # This method should implement incremental updating, see comment in method above.
    pass

def get_notebook_info(notebook_id):
    data = db.get_notebook_info(notebook_id)
    return data

redpajama_set_name: RedPajamaGithub


There have never been more options for dining out — or in — than there are today. From food trucks and food halls to meal prep kits, delivery services and in-retail dining experiences, the array of options is vast, sometimes overwhelming. For traditional restaurant brands looking to not only retain but increase share of stomach, the competition is fierce.
It's not just about getting butts in seats. Today's eater is faced with several decisions daily as busy schedules dictate a hybrid approach to meals, not exclusively eating out but not all home-cooked either. A recent study by Restaurant Business Online revealed that only 46 percent of respondents' revenue came from dining in, with more than a third coming from takeout.
In either case, just like any other purchase decision they're making, consumers are looking for the best their money can buy, making marketing and brilliant customer experience even more important.
Here are five trends that restaurant marketers shouldn't ignore this year.
Consumers have never been more aware of social issues and are increasingly making decisions based on the social responsibility of the brands with which they choose to engage. The USDA estimates food waste in the United States at between 30 and 40 percent of the food supply.
Not surprisingly, this is a hot topic in the food industry, and consumers are looking at how their food service suppliers, be they retail or hospitality, are addressing the issue through food donations, upcycling and more. Smart marketers will be sure to address their efforts when communicating with the industry and their customers.
This one is not new, but it continues to be a critical part of the dining experience both in-restaurant/retail and at home. Can't order online or via an app for delivery? In this case, many of us will move on to another dining option that allows us to do, whether through a restaurant's own online platform, or more often, through a platform like Seamless or UberEats.
In addition, we continue to see the further integration of physical and digital interactions through iPad ordering/payment and the ever-present smart phone (Instagram, anyone?). Each of these offers additional marketing and engagement tools such as the ability to upsell through storytelling and post-dine interactions via social media.
From an operations perspective, technology can also create scale for a proprietor. For example, Zume Pizza, a startup in Mountain View, California, uses robots to increase the speed at which they can make and deliver pizzas. And while we are not suggesting every restaurant go to this extent to deliver a fast and fresh meal, automation of something as simple as coffee or payment can improve the customer and employee experience.
The desire for an engaging, brand-authentic and personalized experience cannot be underestimated. Ensuring that every touchpoint on your consumers' path to purchase is impactful is essential.
Brands must ensure that their website is mobile-friendly and that they build a relationship with customers through social media. Furthermore, the ability to personalize service and ordering options can really set a brand apart. Being greeted by name for a reservation is a simple, yet critical first step.
Creating a branded dining experience within retail (think Ikea, Bass Pro Shops) is a whole other level, but one that offers that experiential element consumers are craving.
Whether offering the ability to customize portion size or the opportunity to order highly sought after wines by the glass using technology like Coravin, brands should be looking to create a unique, customizable and ownable experience for their guests.
From large chains to single proprietors, each has access to data in some form. Whether careful analysis of millions of dining experiences or anecdotal evidence that a regular orders a burger every Tuesday night, data can be a formidable weapon for operators and marketers alike.
On a one-to-one scale, data can arm a server with the information they need to upsell for a special occasion (Happy birthday, Bob!). Similarly, it can provide a marketer with the ability to strategically target relevant messaging using social media to drive consideration for that day or evening.
Based on what they know about a market through data analysis, restaurateurs are launching virtual restaurants which are basically commercial kitchens delivering high-end breakfast and lunch to the local workforce. Smart move. How will it affect local restaurants' lunch business and marketing plan?
Each of these trends has clear implications for restaurant owners and marketers considering how to allocate their budgets and where to prioritize programming, promotions and outreach.
By Melissa Vigue, Senior Director at Peppercomm.
The original article appeared on odwyerpr.com.


text:
Assistant Professor or Associate Professor of Computer Engineering
Kennesaw State University is now accepting applications for a nine-month, tenure track Assistant Professor or Associate Professor of Computer Engineering faculty position in the Department of Computer Engineering, which begins August 2019.
Teach courses in subject areas of computer, electrical, and software engineering.
Engage in active research activities leading to publications and funding acquisitions
Mentor and advise students
Contribute to building a best-in-class computer engineering department and program
Participate in service committees and work groups
Ph.D in Computer and/or Electrical Engineering or related field or its foreign equivalent.
Industry experience is a plus.
Demonstrated track record and potential to engage in research and acquire funding.
Teaching experience at the college level is ideal.
Expertise in the areas of digital and embedded systems, computer networks, IoT, or artificial intelligence.
Knowledge and experience in software development and product development is a plus.
For more than 50 years, Kennesaw State University has been known for its entrepreneurial spirit and sense of community. Offering campuses in Marietta and Kennesaw, the university is located just north of Atlanta and combines a suburban setting with access to one of the country's most dynamic cities. As Georgia's third-largest university, Kennesaw State offers more than 100 undergraduate and graduate degrees, including a growing number of doctoral programs. Designated by the Board of Regents of the University System of Georgia as a comprehensive university, Kennesaw State is committed to becoming a world-class academic institution positioned to broaden its academic and research missions and expand its scope on a local, regional and national level.
For a full description of this position, application deadlines, and application procedures, visit https://facultyjobs.kennesaw.edu.
Kennesaw State University, a member of the University System of Georgia, is an Equal Opportunity/Affirmative Action employer and does not discriminate on the basis of age, color, disability, national origin,
Georgia is an Open Records state.
Application Due: 4/14/2019
Engineering & Mathematics, Electrical & Computer Engineering

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: How to do automated FTP backups - and how to restore them? I'm currently using a Virtual Server running Ubuntu Linux. The company hosting it does not do any kind of backups, but they offer me the oppertunity to do backups via FTP. Therefor, I get access to a FTP share of equal size to my primary server storage. There is no more help availbale than This is your FTP account data, have fun! but I guess I'm supposed to write a small script and run it as cron job. They promote their backup solution as if it's the best and easiest thing in the world, but right now I see many open questions.
So I'm not asking on how to write a shell script, but rather on what it should do.

*

*First, I'll have to decide on whether I just want to backup some data folders (like the htdocs and a recent DB dump) or if I want to mirror the complete server. I'd like to do the latter, because I'm not only concerned about data loss, but going through the pains of server configuration from scratch, which usually keeps my busy for some days.

*Next, I wonder if I will get any problems by backing up files which are currently accessed by some process, maybe even written to. Will I end up with corrupted files in my backup, will the backup just stop, or will the normal operation of the server be interupted?

*If I had twice the backup space as my primary server, then I would upload the backup n, and after success, delte the backup n-1. But I only have space equal to my server's hard disk, so I cannot keep backup n and n-1 at the same time. But if I do it the other way round (that is, delete backup n-1 and then start uploading backup n) I'm going through times without any backup at all, which I'd like to avoid.

*If I had physical access to that server, or at least access to the file cointing the virtual hard disk image of my VServer, I'd just backup that image and restore it as a whole. But sadly, I don't have that access.

*And last thing, I'm also wondering how I'm supposed to restore that data in case the primary storage goes away. Is it possible, on Linux, to let the system overwrite itself with the backup data while it's running? Even if it is possible to tell the system to download everything via ftp, store it right at the file system root / and overwrite everything what's there, I'd still have to delete all the files which are there now but were not present in the backup.
Any help and ideas are much appreciated!

A: Try ftplicity - a nice howto can be found at HowToForge: http://www.howtoforge.com/ftp-backups-with-duplicity-ftplicity-debian-etch
To answer your other questions:

*

*it makes sense to only backup the server configuration (/etc), your user-data (/home, /usr/local, ...) and not the whole server. A restore of ubuntu can easily be done with dpkg, see "dpkg get-selections" at ubuntugeek.com/clone-your-ubuntu-installation.html

*yes, files which are currently being written will give you backup problems (MySQL databases, Mail spoolfiles etc) so it's usually best practice to have a look at all the services that you need backuped and look into their documentation

*with not backing up the whole server and the help of tar you should be able to store multiple backup sets at the ftp location

*restoration should be simple: you'll get a working virtual server, right? Use dpkg set-selections to upgrade the packages, restore /etc, reboot (or reload the services) and copy your user-date back

A: Honestly, I wouldn't bother. FTP is insecure and unencrypted- anyone can sniff your traffic and steal your stuff.
Set up a real backup system (rdiff-backup over SSH isn't a bad choice for this kind of setup) and stay the hell away from your ISP's dain-bramaged BS. Backups are too important, and disks are too cheap, to take stupid risks.

redpajama_set_name: RedPajamaStackExchange


Are You Tired of Being Treated Like Cattle?
You Are Getting A Bad Deal.
It's time the Department of Transportation protects people like you and me from the predatory travel companies and special interest groups. It's time we pushed Washington to enforce consumer travel protection laws.
Help us get rid of the career bureaucrats endorsing crony capitalism.
Stop this BAD DEAL TODAY. Support our efforts in Washington and contribute to Travelers United. Any amount from $25, to $50, $100, $250 or $500 will go a long way.
The airlines are more profitable than ever, disrespect the traveler, and unlike any other business, seem to be immune to our laws and regulations.
Why can't passengers know the full cost of their airline tickets before they buy?
Why can't parents sit with their children without paying extra to the airlines?
Why aren't your baggage fees refunded when baggage does not arrive on time?
Why aren't you protected if you are raped, victimized or assaulted on a cruise?
For years, passengers have been getting the short end of the stick. We are forced to pay for services whether they are delivered or not. Your rights are denied while they maximize their profit at YOUR EXPENSE.
Add your voice to ours and help us get a message to Washington!


Deadline.com is reporting that Oscar ratings are down to a 9 year low. Ratings from last year's big Hollywood shindig were down 8%, this year another 4%.
Will there be another slide next year or will number be up in hopes of another train wreck? I guess we'll see.


This mp5 mag clamp is compatible with all MP5 mags. It is made out of metal alloy and can hold up against all types of airsoft play. This works great for always having an edge on your friends and always having enough ammo ready to go.


Serge Bambara (also known by his stage name Smockey, born 24 October 1971) is a hip hop artist, actor and political activist from Ouagadougou, the capital of Burkina Faso. Born in what was then the Republic of Upper Volta, the son of a Bissa father and a French mother, he moved to France to study in 1991. In 1999 he signed a contract with EMI and launched a first single, featuring the singer Lââm. In 2001 he moved back to Burkina Faso and started the studio Abazon. He has released the albums Epitaphe, Zamana, Code noir and Cravate Costards et Pourriture, and cooperated with the prominent Senegalese rapper Didier Awadi.
Bambara won the "Best Artist of the Year" category of Kundé, a national Burkinabé music award, in 2006. He was presented the award by Chantal Compaoré, First Lady of Burkina Faso at the time. In 2010 he won the Kora Awards, in the category "Best Hip-Hop Artist". Bambara also starred in a 2008 film adaption of the Ivorian author Ahmadou Kourouma's novel En attendant le vote des bêtes sauvages, directed by Missa Hébié.
Politically a Sankarist, Bambara heavily opposed the government of President Blaise Compaoré, and has expressed support for Thomas Sankara, a radical left-wing revolutionary who ruled the country from 1983 until he was deposed and killed by Compaoré in 1987. In a 2014 BBC interview he stated his views on Sankara's legacy: "It allowed us to be more proud to be African and to pull out of that inferiority complex, to realise we can accomplish things". Much of his work has political themes.
In 2013 he co-founded Le Balai Citoyen ("The Citizen's Broom"), a grassroots political movement, together with the reggae musician Sams'K Le Jah. The movement participated in the 2014 Burkinabé uprising, a wave of protests which on 31 October 2014 forced President Compaoré to resign and flee the country. Bambara, a prominent opposition leader during the uprising, supported the military's decision to lead the country through a transitional period.


such a beautiful spring hillside.
Stunning I think you have done it justice.
So lovely! It gives me hope that spring is really on the way (in Canada!).
LOvely. The Fresh air looks good!
Wish i could be on a place as beautiful as that!!
Those Flowers look beautiful! What are they?
Plain 'ol daisys (or margaritas as they're called round these parts). They're gorgeous, aren't they? The field is carpeted with them.
I think I'd like to be there! Lovely!
Oh my goodness, you lucky thing!
That sky is amazing and daisies too, you are ahead of us!
Is that a blanket of daisies? Spring is lovely isn't it!
If I were there, I would fall asleep and stay all night on this breath-taking, blooming, hillside! Fabulous!
fab photo – it looks wonderful. So exciting for me to see so many people I "know" leaving you comments! Yay!


text:
Q: TypeError: Cannot read property 'params' of undefined Jest Testing - React Native I have created a test file to test my following "BiddingScreen",
const BiddingScreen = ({ route, navigation }) => {

const { currentBid } = route.params;

return (
    <SafeAreaView style={styles.main}>
        <Header title="BID Here" navigation={navigation} />
        <View style={styles.container}>
            <Text style={styles.currentBid}>{CurrentBid}$</Text>
        </View>
    </SafeAreaView>
)}

My test file as like follows ,
import React from 'react';
import renderer from 'react-test-renderer';
import BiddingScreen from "../../../src/containers/biddingScreen/BiddingScreen";

jest.mock('@react-native-firebase/auth');

jest.mock("react-native/Libraries/EventEmitter/NativeEventEmitter");

test('renders correctly', () => {
    const tree = renderer.create(< BiddingScreen />).toJSON();
    expect(tree).toMatchSnapshot();
});

When I'm running my test file I got this error,
TypeError: Cannot read property 'params' of undefined

So can anyone help me to solve this problem, Thank you

A: As long as your components props don't have defaults, you would need to mock those, something like:
describe('init', () => {
  test('renders correctly', () => {
    const mockedParams = {
      route: { params: { currentBid: 'whatever-id' } },
      navigation: ''
    };

    const tree = renderer.create(<BiddingScreen {...mockedParams} />).toJSON();
    expect(tree).toMatchSnapshot();
  });
});


wattOS is a lightweight Linux operating system remastered from the core Ubuntu Linux build. It is a free operating system that focuses on a small footprint, low power, and a simple quick interface that you can easily add whatever you want to it. wattOS has been in active development for 8+ years. We are a small group of friendly Linux enthusiasts, and welcome anyone who wants to give it a spin.
i3i3 is a tiling window manager designed for X11, inspired by wmii, and written in C. It supports tiling, stacking, and tabbing layouts, which it handles dynamically. Configuration is achieved via plain text file and extending i3 is possible using its Unix domain socket and JSON based IPC interface from many programming languages.LXDELXDE (abbreviation for Lightweight X11 Desktop Environment) is a free desktop environment with comparatively low resource requirements. This makes it especially suitable for resource-constrained personal computers such as netbooks or system on a chip computers.OpenboxOpenbox is a free, stacking window manager for the X Window System. Originally derived from Blackbox, Openbox has now been totally re-written in the C programming language and since version 3.0 is no longer based upon any code from Blackbox. Openbox is designed to be small and fast.


When I moved to Napa from San Francisco a few years ago, everyone warned me I was entering a nightlife dead zone. Everything shuts down at 9:00pm. While that may have been true in the past, a slew of newcomers and new ventures by long-time residents has kicked things up a notch around here.
After nearly a decade of tortuously slow renovation, the Uptown Theatre re-opened its doors this May to reveal its newly restored deco-fabulous style. Fresh faced and fully equipped with all the modern amenities, the Uptown offers an unbeatable combination of historical charm and contemporary sophistication.
The restored original ceiling murals and light fixtures custom built to replicate the originals radiate classic 1930s style, but the sound system and the seats are 100% modern–21-23 inches wide, as compared to the original theatre's 16-17 inch seats, and staggered to ensure there's not a bad seat in the house. Even the nosebleed seats have perfect unobstructed views of the stage and perfect acoustics. A full bar offers patrons their choice of libations, including local wines and bubbly by the glass. But just as importantly, the shows have been spectacularly eclectic. Lyle Lovett, The B-52s, Big Bad Voodoo Daddy, The English Beat, Chrissie Hynde, Rufus Wainwright, Cyndi Lauper, Ron White, the Gipsy Kings, and many others have already performed on the Uptown stage, and the next few months bring even more variety and interest to Napa evenings. Eighties icon Foreigner performs September 22, edgy comedienne Margaret Cho on September 26, and country king Randy Travis on October 24. BB King takes the stage Halloween night, and Clint Black on December 16th. Special package deals through the theater allows you to pair your Uptown experience with some of the best restaurants in Napa Valley–including the French Laundry, La Toque, Bottega, and Don Giovanni–and some of the finest hotels. AVIA Hotel, the Westin Verasa, the Meritage resort, and the Villagio Inn all offer package deals with the theater to maximize your wine country experience.
For more music on Thursdays, Fridays, or Saturdays, stop in at Silo's speakeasy-like space tucked into the back of the Historic Mill. World class jazz singers and performers like Wesla Whitfield and Mike Greensill (who have performed in Carnegie Hall, the White House, and countless national venues) perform here regularly, simply because they now call Napa Valley home. Visiting artists provide a refreshing mix of familiar covers and original music, for covers that range between $10 and $25 at the door. And, lest you forget you're in Napa, the wine list at Silo's offers some of the most famous and sought-after local wines by the glass, bottle, and case, in addition to local Napa Smith beers, espresso drinks, Tillerman teas, and non-alcoholic sparkling juices. Wine prices range from $8 for a glass of St. Supery's (excellent) Estate-bottled sauvignon blanc, to $126 per glass for the 2001 Kayli Morgan Vineyard cabernet sauvignon from Hundred Acre.
Downtown Napa has responded to the music scene by staying open later and offering visitors something to do after 10pm. John Anthony Vineyards' tasting room next to the AVIA Hotel stays open until midnight daily, and hosts parties like the recent Monday night "White Party" for industry people and anyone else who may wander in to join them. Check Twitter for updates from @JAVWine to stay informed. Bistro Sabor stays open until midnight Tues-Thurs and until 2am on weekends, with its full menu of Latin American street food favorites available to dine in or take out. Every Saturday night, the restaurant also transforms into a salsa club with free lessons and no cover charge (no partner necessary, either). Oenotri's kitchen also typically serves late on Uptown concert nights, and their 24-hour pizza ovens enable them to crank out their unbelievable pies even when other food operations may be shutting down.
The AVIA Hotel's newly unveiled Riddling Rack bar serves its crowd-pleasing menu until midnight on weekend nights, and until 10 on weekdays. Creative cocktails made with Agave wine, cane rum, and rice-infused vodka rub shoulders with an excellent selection of Champagnes and bubblies in keeping with the super cool, glass-enclosed riddling rack bar counter. Portobello fries with black truffle aioli, organic popcorn with your choice of salt and pepper, truffles or parmesan, tuna tartare, club sandwiches, and a serious "C.A.B. burger" are all available for late night weekend noshing, as well. If you're craving some fresh air and seclusion for your nightcap, bring your beverages up to the terribly romantic inner courtyard on the 2nd floor, where love seats, heaters, and a live fire pit help you finish out the evening with style.


If you could choose a historical period to live in, which one would you choose and why?
Empieza por responder a la pregunta: ¿en qué período histórico te gustaría vivir?
¿por qué elegirías esa época?
¿hay algún personaje histórico que admires perteneciente a esa época?
¿cómo te imaginarías tu vida en ese momento?
Write about 100 to 150 words in the following topic: If you could choose a historical period to live in, which one would you choose and why?
It is not easy to choose a historical period to live in, as I think that all of them can be very appealing but at the same time they all have many drawbacks. But if I had to choose an attractive age to live in, I would probably like to experience the exciting events taking place in America in the early nineteenth century. It was a time when America had recently achieved independence from the British Empire and it must have been an age of captivating changes, when new political, economic, and social decisions were being taken. It was a time of exceeding political figures like Thomas Jefferson or Abraham Lincoln, and of extraordinary writers, such as Walt Whitman or Herman Melville. Like them, ordinary people had to take their initiative and start new projects so as not to be left behind at a time of transition.


"It was in the mid-eighties, maybe '84 or '85. I was with my mother walking through the park when we passed a group of kids break dancing, blaring 'Freak-a-zoid,' from a boombox. I remember I was wearing a green izod shirt and a member's only jacket with my pants tucked into my socks! But even as a snot nosed kid I was stricken by that sound, I wanted to know what made that sound...I wanted to make that sound mine! Needless to say, a childhood fascination with sound led me to music."
Son of a Jazz Guitarist, Angelo Emile Gastelum's Love for Music may have began as his Father serenaded his pregnant Mother with 'Quiet Nights by Quiet Stars,' 'Misty' or 'My Funny Valentine' to the the cooing unborn fetus inside her belly, each string defining a frequency of emotion resonating into each dividing cell.
Musically Driven by his family and encouraged to take piano lessons as a child, Angelo performed at several recitals before his teachers discovered he did not know how to read & had in fact been playing by ear the whole time.
A self taught guitarist, Angelo spend his teen years woodshedding with an acoustic guitar and in the tradition of his native blood, studied Percussion under a Sacred Santerio; striving to understand the dynamics of rhythm's ancient frameworks in order to one day incorporate the secrets of clave in his own music.
After a period of dj and live p.a. performances in the 90s, Angelo focused on his own music by exploring the fusion of recording random sounds with instruments, then layering them with computer edited sequences.
With no formal outline or approach he retreated to a bedroom studio for several years...patiently cultivating his own distinct sound; a melting pot of jazz-funk, nufolk with lush avante garde minimalism and off clave beats adorned with scattered pieces of malfunctioning machines in a sea of serendipity.


text:
Rob Berk is a driven, ambitious graduate of Hamilton College and Hunter College High School.
In 2017, Rob began working for Dave as his executive assistant while still a freshman at Hamilton. Two years later, he had co-authored a book with Dave, run independent projects for million dollar+ clients, and had learned as much working for Dave as he did in college.
Rob is the founder of Solvit, a social media and digital branding company aimed at bringing creative solutions and a new perspective to small business owners.
He has recently published a new book, Why Wait?: How I Jump-Started My Entrepreneurial Journey Before Graduating Into a COVID-19 World – And How You Can, Too!
Dave Kerpen is a serial entrepreneur and NYT Best Selling Author who has benefited enormously from hiring college students and growing them into successful full-time employees at his companies.
Dave was thrilled with Rob's work as well, and together, they wanted to give other entrepreneurs and college students the same opportunities they had.
Dave is the Founder and Chairman of Likeable Local, a social media software company serving thousands of small businesses, as well as the chairman and co-founder of Likeable Media, an award-winning social media and word-of-mouth marketing agency for big brands.
Dave's latest initiative Remembering.Live was built alongside his Apprentice, Sam, after he lost his mum during the pandemic and offers live memorial services and tribute website to grieving families like his own.
Apprentice was born in 2019 with a threefold mission:
Read What Our Entrepreneurs Have To Say
Apostrophes Icon
Rockstar!
"Dave, thank you so very much for securing such an outstanding apprentice. You really found a rock star. I am so impressed with her eagerness, intelligence, and terrific follow up. I put her on my most important project and she is already ahead of schedule and produced results that I would have expected only from a seasoned professional. I am so excited to see what we can accomplish this year. Thank you again."
Let's Start Working Together!


text:
Nonprofits: Supporting Organizations
Protecting Assets of a Separate Supporting Foundation
The philanthropic sector includes much more than the simple model of a single 501(c)(3), publicly supported, charitable organization.
A fairly common variation, especially for prominent community institutions, is to establish a separate organization which goal it is to support the main charity. Indeed, it is created and exists "solely to support one specific nonprofit corporation." The Internal Revenue Service recognizes several different types of "supporting" foundations or organizations; it's important to know which one your organization has created. We'll have more on that in future posts.
While there are clear advantages to this arrangement – or it would not be used in the first place – there are some possible downsides that, with prudent planning, can be avoided or minimized.
Separation From the Supporting Foundation
Trouble may arise if and when the main charity experiences financial problems, especially sudden challenges arises from outside circumstances beyond the charity's control.
"If the nonprofit runs into financial trouble, a lack of separation between the charitable foundation and the nonprofit could result in the foundation being on the hook for the nonprofit's debts." Creditors might try to satisfy debts owed to them by the charity out of the assets of the supporting foundation.
It is in both the foundation's and the nonprofit's best interests to take steps to limit the possibility of the nonprofit's debts becoming the debts of the foundation (i.e., to preserve the assets for the desired charitable purpose).
The best strategy is preventive: to create and maintain some amount of separation between the two entities. There are several possible ways to work toward that goal.
Distinct Boards
The most logical way, at first blush, to structure the boards of so-called related organizations is to have identical or interlocking boards of directors. But that would defeat any argument that the entities were separate from each other, and the one should not be held liable for the debts of the other. "If the same board controls the foundation and the nonprofit, it creates the perception that they are effectively operating as one entity."
The correction to that problem would be appointment of a different set of directors for each of the entities. That will support a finding that one is not controlled by, or responsible for, the other. As a practical matter, though, having two entirely different boards could create its own difficulties sufficient to decide not to take this path. As in most organizational endeavors, the success of such an approach might depend on the personalities and skills of the people occupying these directorships.
Secondary Beneficiary
If the arrangement is structured so that a single supporting foundation is set up to help more than a single charity, the foundation's assets may be more protected. Second, consider designating a second beneficiary for the supporting foundation. "If the foundation supports both Charity A and Charity B, and Charity A encounters financial distress, the foundation could more persuasively argue that it is not merely an extension of Charity A, but rather, an independent foundation with obligations to both charities."
Prohibit Access
Another device to avoid contaminating the foundation's assets with the problems of the supported charity is to create a bylaws restriction limiting the charity's unlimited access to the assets of the foundation. This might "strengthen the argument that the two are separate, independent entities."
In this regard, there are two ways to structure the restriction: (1) insert a bylaws provision that the foundation can only distribute funds to the charity "at the foundation's discretion"; or (2) write the foundation's bylaws so that the charity receives only a limited, specific support amount each year; for instance, "income earned on the foundation's assets without any access to principal."
After considering all of the pertinent facts and circumstances of the particular situation, and considering a "level of protection that is appropriate based on them, it may be concluded that the "increased administrative and operating costs" of maintaining the suggested separateness is not worth the trouble.


text:
Alternus Energy Group (ALT) completes €9 million (91 million NOK) funding, led by Nordic ESG and Impact investor, AV Group Sarl
By pcloudshostApril 9, 2021No Comments
Dublin April 9th 2021 – Fast-growing pan-European independent power producer, Alternus Energy Group Plc (NOTC: ALT) (the "Company", "Alternus" or "AEG"), is pleased to announce the recent issuance of €9 million of convertible notes lead by AVG Group Sarl (AVG), a Luxembourg based asset manager focused on Nordic ESG and Impact™ investing in the Nordics. AVG provided €8 million of the total investment with the remainder being provided by private individuals.
"We are delighted to have AVG as a new financing partner and look forward to working with them going forward as we continue to grow Alternus over the next few years in our continuing mission to become one of the largest pan-European solar operators by the end of the decade." said Vincent Browne CEO.
Alternus decided to move its US listing to the Euronext exchange in Oslo as it represents an attractive market for renewable related companies and as a result of its active trading within the green bond markets. Oslo, also provides a European based listing for a European focused company.
AVG joins other Nordic investors in Alternus and plans further funding to supply Nordic based capital to Alternus over time with a particular focus on eastern European countries. In addition to funding, AVG and its team will help supply innovative solutions to the structure of the solar parks with some hybrid opportunities and help supply Alternus with the latest technologies coming from Norway and the Nordics.
"Working with Alternus helps prove that the Nordics are leading the way in terms of green investments. Vincent and his team have proven their performance capabilities over recent years and continue to impress in their ability to source excellent solar projects with long term positive income streams. New innovation and financial markets in the Nordics should prove to help push the world towards a cleaner and greener future and AVG looks forward to playing its part in this, "says Karl Andersen, Founder and CEO of AV Group.
Alternus has posted further details of the transaction on the Euronext NOTC service.
About Alternus Energy Plc
Alternus Energy Group (NOTC: ALT) is a fast-growing pan-European independent power producer ("IPP"), headquartered in Ireland, with a focus on the midsized utility solar PV market. Alternus owns and operates a diverse portfolio of utility scale solar PV parks that connect directly to national power grids on long-term government contracts ("FiT") and/or Power Purchase Agreements ("PPAs") with investment grade off-takers. Having started in 2016 with two parks and 6 MWp capacity, the current portfolio consists of 39 owned or contracted parks in Germany, Italy, Netherlands, Romania and Poland in excess of 140 MWp capacity. Alternus works closely with both local and international specialist development partners that each provide a constant pipeline of new projects for acquisition by Alternus. Alternus aims to own and operate over 2 GWs of solar parks by the end of 2025 and to become the one of the largest pan-European IPPs by the end of the decade.
About AVG Group Sarl
AVG Group Sarl is a Luxembourg based asset manager that specialises in scaling Nordic ESG and Impact® technology and infrastructure EPC companies from the Nordics into the global marketplace. AVG has a dedicated team focused on climate solutions and is a UN PRI signatory.
Alternus Energy drives continued European expansion with completion of 15MWp capacity in Romania
Alternus Energy Group Plc
Suite 9 & 10
Blanchardstown Corporate Park 2
Dublin D15 R504
contact@alternusenergy.com
© 2023 Alternus Energy.
Our objective is to become a leading independent power producer in solar & renewable energy. By owning and operating a global network of distributed and connected green energy power plants, we aim to cater for the ever-growing need for sustainable energy production while also providing strong returns for our investors.


text:
Trump and Apple's Tim Cook are unlikely bedfellows
Trump will tour a new Apple manufacturing plant in Texas on Wednesday
By Evie Fordham FOXBusiness
There's a lot more to the relationship between the head of Apple and the leader of the free world than President Trump's viral mistake when he called CEO Tim Cook "Tim Apple" back in March.
As Trump prepares to tour a new Apple manufacturing plant in Austin, Texas, on Wednesday, he'll be building on an unexpected friendship that started with a phone call.
AAPL APPLE INC. 154.65 +2.92 +1.92%
Cook and Trump didn't have a relationship before Trump moved into the White House — in fact, Cook supported Hillary Clinton in 2016. But when Trump was poised to cut Apple's bottom line by billions with tariffs on iPhones, Cook reached out to the president's son-in-law, Jared Kushner, according to The Wall Street Journal.
Cook reportedly called Trump and convinced him to roll back the electronic tariff plan. Cook then issued a press release touting Apple's U.S. job growth the next day.
GET FOX BUSINESS ON THE GO BY CLICKING HERE
Since then, the two have enjoyed dinners together at Trump's golf club in Bedminster, New Jersey, and Trump has called him to wish him a happy Thanksgiving, the Journal reported.
But things haven't always been smooth sailing for Apple and Trump. In fact, in 2016, then-candidate Trump called for a boycott of Apple when the tech giant refused to comply with a judge's order to help hack the phone of a shooter in the deadly San Bernardino, California, terror attack.
Will their low-profile friendship last? Time will tell.
CLICK HERE TO READ MORE ON FOX BUSINESS


Another movement we do a lot during our day is pulling. Opening doors, pulling clothes out of the laundry, and even lifting an item up from the ground all have elements of pulling. The problem we see with pulling is that individuals don't use their shoulder blades well enough and over pull with their low back, shoulders, and neck muscles leading to over strain and injury.
Too much time in sitting and slumped postures. We spend so much time with our shoulder blades forward on our body sitting and working at computers or driving, that our shoulder blade muscles can get over lengthened and then have a hard time shortening when they need to contract back to pull something.
Without setting your shoulder blade, it tends to be unsteady. Since your rotator cuff attaches from your shoulder blade to your shoulder, if it doesn't have a solid base to work off, it's hard for it to stabilize the shoulder joint very well. Imagine if you were trying to play tug of war. Would you rather be on firm ground or a wobbly board. Probably firm ground and your rotator cuff prefers that too! If you're shoulder blade is setting back, it's creating firm ground for your cuff to pull off of!
First, check if you can even squeeze your shoulder blades back and together as far as you need to. We like to do the pen test. Have someone place a pen in the center of you back between your shoulder blades. Now, try and squeeze the pen with your shoulder blades and have them let go of the pen. You should be able to hold the pen there with your shoulder blades for at least 1 minute. If you can't, you can probably improve your ability to pull with your shoulder blades.
Explore your shoulder blade movement with the exercises below. If you can't do it without your shoulders hiking up into your ears or over arching your low back, you should probably work on it!
The more you practice all this, the more natural it will become with your daily movements. Try to integrate pulling your shoulder blades back better when you're pulling things in everyday life like opening doors, laundry out of the machine, dishes out of the washer or cabinets, and even with things like pulling while sweeping or raking. As you get better your neck, shoulders, and back will thank you!


text:
package org.paulobichara.bulkmailer.view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.SystemColor;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;

import org.paulobichara.bulkmailer.controller.EmailSender;
import org.paulobichara.bulkmailer.model.EmailProperties;
public class TelaPrincipal {

	private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="139,-14"
	private JPanel jContentPane = null;
	private JTabbedPane jTabbedPane = null;
	private JPanel tabConexao = null;
	private JPanel tabInicio = null;
	private JPanel jPanel21 = null;
	private JLabel jLabel = null;
	private JTextField fieldServer = null;
	private JLabel jLabel1 = null;
	private JCheckBox checkAuth = null;
	private JLabel labelLogin = null;
	private JTextField fieldLogin = null;
	private JLabel labelPassword = null;
	private JTextField fieldPassword = null;
	private JButton buttonTestar = null;
	private JPanel jPanel3 = null;
	private JLabel jLabel3 = null;
	private JTextField fieldPorta = null;
	private JLabel jLabel4 = null;
	private JLabel jLabel5 = null;
	private JLabel jLabel6 = null;
	private JTextField fieldFrom = null;
	private JTextField fieldNome = null;
	private JTextField fieldAssunto = null;
	private JButton buttonContinuar = null;
	private JLabel jLabel7 = null;
	private JPanel jPanel2 = null;
	private JButton buttonIniciar = null;
	private JLabel jLabel8 = null;
	private JLabel jLabel9 = null;
	private JLabel jLabel10 = null;
	private JPanel tabDados = null;
	private JPanel jPanel5 = null;
	private JLabel jLabel11 = null;
	private JTextField fieldCorpo = null;
	private JButton buttonCorpo = null;
	private JPanel jPanel6 = null;
	private JButton buttonEnviar = null;
	private JLabel jLabel12 = null;
	private JTextField fieldDestinatarios = null;
	private JButton btDestinatarios = null;
	private JLabel jLabel13 = null;
	private JLabel jLabel14 = null;
	private JTextField fieldMarcador = null;
	private JLabel jLabel15 = null;

	private EmailProperties mailProps = new EmailProperties();  //  @jve:decl-index=0:
	private JPanel tabProgresso = null;
	private JPanel jPanel1 = null;
	private JProgressBar jProgressBar = null;
	private JPanel jPanel4 = null;
	private JButton buttonEncerrar = null;
	private JTextPane textPaneLog = null;
	private JScrollPane jScrollPane = null;
	/**
	 * This method initializes jFrame
	 *
	 * @return javax.swing.JFrame
	 */
	private JFrame getJFrame() {
		if (jFrame == null) {
			jFrame = new JFrame();
			jFrame.setSize(new Dimension(54, 56));
			jFrame.setTitle("Central BulkMailer");
			jFrame.setResizable(false);
	        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			jFrame.setPreferredSize(new Dimension(529, 488));
			jFrame.setMinimumSize(new Dimension(529, 488));
			jFrame.setMaximumSize(new Dimension(529, 488));
			jFrame.setContentPane(getJContentPane());
			jFrame.setLocationRelativeTo(null);
		}
		return jFrame;
	}

	/**
	 * This method initializes jContentPane
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
			jContentPane.setSize(new Dimension(524, 488));
			jContentPane.add(getJTabbedPane(), BorderLayout.NORTH);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jTabbedPane
	 *
	 * @return javax.swing.JTabbedPane
	 */
	private JTabbedPane getJTabbedPane() {
		if (jTabbedPane == null) {
			jTabbedPane = new JTabbedPane();
			jTabbedPane.setPreferredSize(new Dimension(80, 455));
			jTabbedPane.addTab("Início", null, getTabInicio(), null);
			jTabbedPane.addTab("Conexão", null, getTabConexao(), null);
			jTabbedPane.addTab("Dados de Envio", null, getTabDados(), null);
			jTabbedPane.addTab("Progresso do Envio", null, getTabProgresso(), null);
			jTabbedPane.setEnabledAt(0, true);
			jTabbedPane.setEnabledAt(1, false);
			jTabbedPane.setEnabledAt(2, false);
			jTabbedPane.setEnabledAt(3, false);
		}
		return jTabbedPane;
	}

	/**
	 * This method initializes tabConexao
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getTabConexao() {
		if (tabConexao == null) {
			tabConexao = new JPanel();
			tabConexao.setLayout(null);
			tabConexao.setName("tabConexao");
			tabConexao.setPreferredSize(new Dimension(40, 160));
			tabConexao.setEnabled(true);
			tabConexao.setVisible(true);
			tabConexao.add(getJPanel21(), null);
			tabConexao.add(getJPanel3(), null);
			tabConexao.add(getButtonContinuar(), null);
		}
		return tabConexao;
	}

	/**
	 * This method initializes tabInicio
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getTabInicio() {
		if (tabInicio == null) {
			jLabel7 = new JLabel();
			jLabel7.setText("Bem-Vindo ao Central BulkMailer!");
			jLabel7.setBackground(new Color(178, 180, 255));
			jLabel7.setBounds(new Rectangle(85, 10, 315, 22));
			jLabel7.setFont(new Font("DejaVu Sans Condensed", Font.BOLD, 18));
			tabInicio = new JPanel();
			tabInicio.setLayout(null);
			tabInicio.setName("tabInicio");
			tabInicio.add(getJPanel2(), null);
			tabInicio.add(getButtonIniciar(), null);
			tabInicio.add(jLabel10, null);
		}
		return tabInicio;
	}

	/**
	 * This method initializes jPanel21
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel21() {
		if (jPanel21 == null) {
			jLabel3 = new JLabel();
			jLabel3.setBounds(new Rectangle(356, 69, 37, 28));
			jLabel3.setText("Porta:");
			labelPassword = new JLabel();
			labelPassword.setBounds(new Rectangle(16, 108, 88, 28));
			labelPassword.setEnabled(false);
			labelPassword.setName("labelPassword");
			labelPassword.setText("Password:");
			labelLogin = new JLabel();
			labelLogin.setBounds(new Rectangle(16, 71, 88, 24));
			labelLogin.setEnabled(false);
			labelLogin.setName("labelLogin");
			labelLogin.setText("Login:");
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(349, 30, 129, 27));
			jLabel1.setText("Requer Autenticação");
			jLabel = new JLabel();
			jLabel.setText("SMTP Server:");
			jLabel.setBounds(new Rectangle(16, 29, 97, 24));
			jPanel21 = new JPanel();
			jPanel21.setLayout(null);
			jPanel21.setPreferredSize(new Dimension(40, 150));
			jPanel21.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "SMTP", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("DejaVu Sans", Font.BOLD, 12), SystemColor.activeCaption));
			jPanel21.setBounds(new Rectangle(9, 14, 491, 157));
			jPanel21.add(jLabel, null);
			jPanel21.add(getFieldServer(), null);
			jPanel21.add(jLabel1, null);
			jPanel21.add(getCheckAuth(), null);
			jPanel21.add(labelLogin, null);
			jPanel21.add(getFieldLogin(), null);
			jPanel21.add(labelPassword, null);
			jPanel21.add(getFieldPassword(), null);
			jPanel21.add(getButtonTestar(), null);
			jPanel21.add(jLabel3, null);
			jPanel21.add(getFieldPorta(), null);
		}
		return jPanel21;
	}

	/**
	 * This method initializes fieldServer
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldServer() {
		if (fieldServer == null) {
			fieldServer = new JTextField();
			fieldServer.setBounds(new Rectangle(118, 31, 198, 25));
			fieldServer.setName("fieldServer");
			fieldServer.addCaretListener(new javax.swing.event.CaretListener() {
				public void caretUpdate(javax.swing.event.CaretEvent e) {
					buttonContinuar.setEnabled(false);
				}
			});
		}
		return fieldServer;
	}

	/**
	 * This method initializes checkAuth
	 *
	 * @return javax.swing.JCheckBox
	 */
	private JCheckBox getCheckAuth() {
		if (checkAuth == null) {
			checkAuth = new JCheckBox();
			checkAuth.setBounds(new Rectangle(327, 32, 21, 21));
			checkAuth.setName("checkAuth");
			checkAuth.setText("");
			checkAuth.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					buttonContinuar.setEnabled(false);
					if (checkAuth.isSelected()) {
						labelLogin.setEnabled(true);
						labelPassword.setEnabled(true);
						fieldLogin.setEnabled(true);
						fieldPassword.setEnabled(true);
					} else {
						labelLogin.setEnabled(false);
						labelPassword.setEnabled(false);
						fieldLogin.setEnabled(false);
						fieldPassword.setEnabled(false);
					}
				}
			});
		}
		return checkAuth;
	}

	/**
	 * This method initializes fieldLogin
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldLogin() {
		if (fieldLogin == null) {
			fieldLogin = new JTextField();
			fieldLogin.setBounds(new Rectangle(119, 69, 197, 27));
			fieldLogin.setEnabled(false);
			fieldLogin.setName("fieldLogin");
			fieldLogin.addCaretListener(new javax.swing.event.CaretListener() {
				public void caretUpdate(javax.swing.event.CaretEvent e) {
					buttonContinuar.setEnabled(false);
				}
			});
		}
		return fieldLogin;
	}

	/**
	 * This method initializes fieldPassword
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldPassword() {
		if (fieldPassword == null) {
			fieldPassword = new JPasswordField();
			fieldPassword.setBounds(new Rectangle(119, 109, 197, 26));
			fieldPassword.setEnabled(false);
			fieldPassword.setName("fieldPassword");
			fieldPassword.addCaretListener(new javax.swing.event.CaretListener() {
				public void caretUpdate(javax.swing.event.CaretEvent e) {
					buttonContinuar.setEnabled(false);
				}
			});
		}
		return fieldPassword;
	}

	/**
	 * This method initializes buttonTestar
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getButtonTestar() {
		if (buttonTestar == null) {
			buttonTestar = new JButton();
			buttonTestar.setBounds(new Rectangle(335, 107, 137, 32));
			buttonTestar.setName("buttonTestar");
			buttonTestar.setText("Testar Conexão");
			buttonTestar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					boolean requerAuth = checkAuth.isSelected();
					boolean erro = false;
					String login = fieldLogin.getText();
					String password = fieldPassword.getText();
					String server = fieldServer.getText();
					String porta = fieldPorta.getText();
					mailProps.setRequerAutenticacao(requerAuth);
					if (server.equals("") || porta.equals("")) {
						JOptionPane.showMessageDialog(tabConexao, "O servidor e a porta devem ser informados!");
						erro = true;
					} else {
						Integer port = null;
						try {
							port = Integer.valueOf(porta);
							mailProps.setPort(port);
						} catch (Exception ex) {
							JOptionPane.showMessageDialog(tabConexao, "Porta inválida!");
							erro = true;
						}
						if (!erro && requerAuth) {
							if (login.equals("") || password.equals("")) {
								JOptionPane.showMessageDialog(tabConexao, "O login e o password devem ser informados!");
								erro = true;
							} else {
								mailProps.setUsername(login);
								mailProps.setPassword(password);
							}
						}
						if (!erro) {
							mailProps.setServer(server);
							mailProps.setPort(Integer.valueOf(porta));
							boolean sucesso = EmailSender.testarConexao(mailProps);
							if (sucesso) {
								JOptionPane.showMessageDialog(tabConexao, "A conexão foi estabelecida com sucesso!");
								buttonContinuar.setEnabled(true);
							} else {
								JOptionPane.showMessageDialog(tabConexao, "Ocorreram erros no estabelecimento da conexão! Verifique os dados informados ou a sua conectividade com a internet!");
							}
						}
					}
				}
			});
		}
		return buttonTestar;
	}

	/**
	 * This method initializes jPanel3
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel3() {
		if (jPanel3 == null) {
			jLabel6 = new JLabel();
			jLabel6.setBounds(new Rectangle(16, 106, 61, 28));
			jLabel6.setText("Assunto:");
			jLabel5 = new JLabel();
			jLabel5.setBounds(new Rectangle(16, 69, 60, 26));
			jLabel5.setText("Nome:");
			jLabel4 = new JLabel();
			jLabel4.setText("From:");
			jLabel4.setBounds(new Rectangle(15, 29, 61, 28));
			jPanel3 = new JPanel();
			jPanel3.setLayout(null);
			jPanel3.setBounds(new Rectangle(9, 189, 490, 162));
			jPanel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "Email", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("DejaVu Sans", Font.BOLD, 12), SystemColor.activeCaption));
			jPanel3.add(jLabel4, null);
			jPanel3.add(jLabel5, null);
			jPanel3.add(jLabel6, null);
			jPanel3.add(getFieldFrom(), null);
			jPanel3.add(getFieldNome(), null);
			jPanel3.add(getFieldAssunto(), null);
		}
		return jPanel3;
	}

	/**
	 * This method initializes fieldPorta
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldPorta() {
		if (fieldPorta == null) {
			fieldPorta = new JTextField();
			fieldPorta.setBounds(new Rectangle(399, 72, 59, 24));
			fieldPorta.setText("25");
			fieldPorta.setName("fieldPorta");
			fieldPorta.addCaretListener(new javax.swing.event.CaretListener() {
				public void caretUpdate(javax.swing.event.CaretEvent e) {
					buttonContinuar.setEnabled(false);
				}
			});
		}
		return fieldPorta;
	}

	/**
	 * This method initializes fieldFrom
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldFrom() {
		if (fieldFrom == null) {
			fieldFrom = new JTextField();
			fieldFrom.setBounds(new Rectangle(86, 30, 383, 27));
			fieldFrom.setName("fieldFrom");
		}
		return fieldFrom;
	}

	/**
	 * This method initializes fieldNome
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldNome() {
		if (fieldNome == null) {
			fieldNome = new JTextField();
			fieldNome.setBounds(new Rectangle(86, 69, 383, 27));
			fieldNome.setName("fieldNome");
		}
		return fieldNome;
	}

	/**
	 * This method initializes fieldAssunto
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldAssunto() {
		if (fieldAssunto == null) {
			fieldAssunto = new JTextField();
			fieldAssunto.setBounds(new Rectangle(87, 107, 382, 26));
			fieldAssunto.setName("fieldAssunto");
		}
		return fieldAssunto;
	}

	/**
	 * This method initializes buttonContinuar
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getButtonContinuar() {
		if (buttonContinuar == null) {
			buttonContinuar = new JButton();
			buttonContinuar.setBounds(new Rectangle(158, 377, 194, 30));
			buttonContinuar.setName("buttonContinuar");
			buttonContinuar.setEnabled(false);
			buttonContinuar.setText("Continuar");
			buttonContinuar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					String from = fieldFrom.getText();
					String assunto = fieldAssunto.getText();
					mailProps.setFrom(from);
					mailProps.setAssunto(assunto);
					jTabbedPane.setEnabledAt(1, false);
					jTabbedPane.setEnabledAt(2, true);
					jTabbedPane.setSelectedIndex(2);
				}
			});
		}
		return buttonContinuar;
	}

	/**
	 * This method initializes jPanel2
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			jLabel10 = new JLabel();
			jLabel10.setText("Para iniciar a configuração desta sessão, clique no botão abaixo:");
			jLabel10.setBounds(new Rectangle(52, 356, 405, 19));
			jLabel9 = new JLabel();
			jLabel9.setBounds(new Rectangle(36, 45, 413, 20));
			jLabel9.setText("O Central BulkMailer é um aplicativo de envio massivo de emails.");
			jLabel8 = new JLabel();
			jLabel8.setBounds(new Rectangle(121, 73, 235, 236));
			jLabel8.setText("");
			jLabel8.setIcon(new ImageIcon(getClass().getResource("/resources/images/logo.png")));
			jPanel2 = new JPanel();
			jPanel2.setLayout(null);
			jPanel2.setBounds(new Rectangle(18, 15, 476, 333));
			jPanel2.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
			jPanel2.setBackground(SystemColor.controlHighlight);
			jPanel2.add(jLabel8, null);
			jPanel2.add(jLabel9, null);
			jPanel2.add(jLabel7, null);
		}
		return jPanel2;
	}

	/**
	 * This method initializes buttonIniciar
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getButtonIniciar() {
		if (buttonIniciar == null) {
			buttonIniciar = new JButton();
			buttonIniciar.setText("Iniciar Configuração");
			buttonIniciar.setName("buttonIniciar");
			buttonIniciar.setBounds(new Rectangle(152, 386, 217, 28));
			buttonIniciar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					jTabbedPane.setEnabledAt(0, false);
					jTabbedPane.setEnabledAt(1, true);
					jTabbedPane.setSelectedIndex(1);
				}
			});
		}
		return buttonIniciar;
	}

	/**
	 * This method initializes tabDados
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getTabDados() {
		if (tabDados == null) {
			tabDados = new JPanel();
			tabDados.setLayout(null);
			tabDados.setEnabled(false);
			tabDados.setName("tabDados");
			tabDados.add(getJPanel5(), null);
			tabDados.add(getJPanel6(), null);
			tabDados.add(getButtonEnviar(), null);
		}
		return tabDados;
	}

	/**
	 * This method initializes jPanel5
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel5() {
		if (jPanel5 == null) {
			jLabel15 = new JLabel();
			jLabel15.setBounds(new Rectangle(387, 98, 68, 23));
			jLabel15.setForeground(SystemColor.activeCaption);
			jLabel15.setText("ex: {NOME}");
			jLabel14 = new JLabel();
			jLabel14.setBounds(new Rectangle(11, 96, 126, 27));
			jLabel14.setText("Marcador do Nome:");
			jLabel11 = new JLabel();
			jLabel11.setText("Arquivo (HTML):");
			jLabel11.setBounds(new Rectangle(11, 36, 125, 29));
			jPanel5 = new JPanel();
			jPanel5.setLayout(null);
			jPanel5.setBounds(new Rectangle(12, 15, 483, 154));
			jPanel5.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "Corpo do Email", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("DejaVu Sans", Font.BOLD, 12), SystemColor.activeCaption));
			jPanel5.add(jLabel11, null);
			jPanel5.add(getFieldCorpo(), null);
			jPanel5.add(getButtonCorpo(), null);
			jPanel5.add(jLabel14, null);
			jPanel5.add(getFieldMarcador(), null);
			jPanel5.add(jLabel15, null);
		}
		return jPanel5;
	}

	/**
	 * This method initializes fieldCorpo
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldCorpo() {
		if (fieldCorpo == null) {
			fieldCorpo = new JTextField();
			fieldCorpo.setBounds(new Rectangle(145, 37, 226, 27));
			fieldCorpo.setEditable(false);
			fieldCorpo.setName("fieldCorpo");
		}
		return fieldCorpo;
	}

	/**
	 * This method initializes buttonCorpo
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getButtonCorpo() {
		if (buttonCorpo == null) {
			buttonCorpo = new JButton();
			buttonCorpo.setBounds(new Rectangle(369, 37, 97, 26));
			buttonCorpo.setName("buttonCorpo");
			buttonCorpo.setText("Selecionar");
			buttonCorpo.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JFileChooser fileChooser = new JFileChooser();
					fileChooser.addChoosableFileFilter(new HtmlFilter());
					fileChooser.setAcceptAllFileFilterUsed(false);
					int result = fileChooser.showOpenDialog(tabDados);
					if (result == JFileChooser.APPROVE_OPTION) {
						File fileHTML = fileChooser.getSelectedFile();
						fieldCorpo.setText(fileHTML.getAbsolutePath());
						mailProps.setEmailHTML(fileHTML);
					}

				}
			});
		}
		return buttonCorpo;
	}

	/**
	 * This method initializes jPanel6
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel6() {
		if (jPanel6 == null) {
			jLabel13 = new JLabel();
			jLabel13.setBounds(new Rectangle(12, 86, 459, 19));
			jLabel13.setFont(new Font("Dialog", Font.BOLD, 11));
			jLabel13.setForeground(SystemColor.activeCaption);
			jLabel13.setText("** ATENÇÃO: o arquivo deve possuir o formato NOME ; SOBRENOME ; EMAIL");
			jLabel12 = new JLabel();
			jLabel12.setText("Destinatários (CSV):");
			jLabel12.setBounds(new Rectangle(11, 48, 127, 29));
			jPanel6 = new JPanel();
			jPanel6.setLayout(null);
			jPanel6.setBounds(new Rectangle(13, 192, 482, 161));
			jPanel6.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "Destinatários", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("DejaVu Sans", Font.BOLD, 12), SystemColor.activeCaption));
			jPanel6.add(jLabel12, null);
			jPanel6.add(getFieldDestinatarios(), null);
			jPanel6.add(getBtDestinatarios(), null);
			jPanel6.add(jLabel13, null);
		}
		return jPanel6;
	}

	/**
	 * This method initializes buttonEnviar
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getButtonEnviar() {
		if (buttonEnviar == null) {
			buttonEnviar = new JButton();
			buttonEnviar.setBounds(new Rectangle(171, 377, 161, 34));
			buttonEnviar.setName("buttonEnviar");
			buttonEnviar.setText("Enviar Emails");
			buttonEnviar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					String marcador = fieldMarcador.getText();
					mailProps.setMarcadorNome(marcador);
					jTabbedPane.setEnabledAt(2, false);
					jTabbedPane.setEnabledAt(3, true);
					jTabbedPane.setSelectedIndex(3);
					ProgressController progress = new ProgressController(mailProps, jProgressBar, textPaneLog);
					progress.start();
				}
			});
		}
		return buttonEnviar;
	}

	/**
	 * This method initializes fieldDestinatarios
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldDestinatarios() {
		if (fieldDestinatarios == null) {
			fieldDestinatarios = new JTextField();
			fieldDestinatarios.setBounds(new Rectangle(145, 50, 225, 27));
			fieldDestinatarios.setEditable(false);
			fieldDestinatarios.setName("fieldDestinatarios");
		}
		return fieldDestinatarios;
	}

	/**
	 * This method initializes btDestinatarios
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getBtDestinatarios() {
		if (btDestinatarios == null) {
			btDestinatarios = new JButton();
			btDestinatarios.setBounds(new Rectangle(368, 50, 97, 26));
			btDestinatarios.setName("btDestinatarios");
			btDestinatarios.setText("Selecionar");
			btDestinatarios.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JFileChooser fileChooser = new JFileChooser();
					fileChooser.addChoosableFileFilter(new CSVFilter());
					fileChooser.setAcceptAllFileFilterUsed(false);
					int result = fileChooser.showOpenDialog(tabDados);
					if (result == JFileChooser.APPROVE_OPTION) {
						File fileCSV = fileChooser.getSelectedFile();
						fieldDestinatarios.setText(fileCSV.getAbsolutePath());
						mailProps.setDadosEnvio(fileCSV);
					}
				}
			});
		}
		return btDestinatarios;
	}

	/**
	 * This method initializes fieldMarcador
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getFieldMarcador() {
		if (fieldMarcador == null) {
			fieldMarcador = new JTextField();
			fieldMarcador.setBounds(new Rectangle(145, 97, 226, 26));
			fieldMarcador.setName("fieldMarcador");
			fieldMarcador.setToolTipText("Marcação no corpo do email onde o nome de cada destinatário será posicionado");
		}
		return fieldMarcador;
	}

	/**
	 * This method initializes tabProgresso
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getTabProgresso() {
		if (tabProgresso == null) {
			tabProgresso = new JPanel();
			tabProgresso.setLayout(null);
			tabProgresso.add(getJPanel1(), null);
			tabProgresso.add(getJPanel4(), null);
			tabProgresso.add(getButtonEncerrar(), null);
		}
		return tabProgresso;
	}

	/**
	 * This method initializes jPanel1
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jPanel1 = new JPanel();
			jPanel1.setLayout(null);
			jPanel1.setBounds(new Rectangle(11, 13, 484, 93));
			jPanel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "Progresso", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.PLAIN, 12), SystemColor.activeCaption));
			jPanel1.add(getJProgressBar(), null);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jProgressBar
	 *
	 * @return javax.swing.JProgressBar
	 */
	private JProgressBar getJProgressBar() {
		if (jProgressBar == null) {
			jProgressBar = new JProgressBar();
			jProgressBar.setBounds(new Rectangle(18, 39, 450, 28));
			jProgressBar.setBackground(SystemColor.control);
			jProgressBar.setVisible(false);
		}
		return jProgressBar;
	}

	/**
	 * This method initializes jPanel4
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel4() {
		if (jPanel4 == null) {
			jPanel4 = new JPanel();
			jPanel4.setLayout(null);
			jPanel4.setBounds(new Rectangle(11, 119, 485, 238));
			jPanel4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "Log", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.PLAIN, 12), SystemColor.activeCaption));
			jPanel4.add(getJScrollPane(), null);
		}
		return jPanel4;
	}

	/**
	 * This method initializes buttonEncerrar
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getButtonEncerrar() {
		if (buttonEncerrar == null) {
			buttonEncerrar = new JButton();
			buttonEncerrar.setBounds(new Rectangle(170, 376, 170, 35));
			buttonEncerrar.setEnabled(true);
			buttonEncerrar.setText("Encerrar");
			buttonEncerrar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.exit(0);
				}
			});
		}
		return buttonEncerrar;
	}

	/**
	 * This method initializes textPaneLog
	 *
	 * @return javax.swing.JTextPane
	 */
	private JTextPane getTextPaneLog() {
		if (textPaneLog == null) {
		textPaneLog = new JTextPane();
			textPaneLog.setBounds(new Rectangle(23, 29, 417, 190));
		}
		return textPaneLog;
	}

	/**
	 * This method initializes jScrollPane
	 *
	 * @return javax.swing.JScrollPane
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane(getTextPaneLog());
			jScrollPane.setBounds(new Rectangle(18, 25, 450, 194));
			jScrollPane.setViewportView(getTextPaneLog());
			jScrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
		        public void adjustmentValueChanged(AdjustmentEvent e) {
		            e.getAdjustable().setValue(e.getAdjustable().getMaximum());
		        }
		    });

		}
		return jScrollPane;
	}

	public static void main(String[] args) {
		try {
			javax.swing.SwingUtilities.invokeLater(new Runnable() {
	            public void run() {
	    			TelaPrincipal tela = new TelaPrincipal();
	            	tela.getJFrame().pack();
	            	tela.getJFrame().setVisible(true);
	            }
	        });
		}catch (Exception e){};
	}
}


Based on exactly where you live, it may not be de rigueur to lock doors. If you are a lady living alone (or any individual, for that matter), I advocate playing it protected and locking up at night. Even if you do not care for your individual safety, locking up at night can safeguard your financial safety- right after all, even your renter's insurance will not cover you for stolen goods if you did not effectively lock up. No matter where you go, you can handle your income on the internet with confidence and security. Read on to locate out what we are doing to defend your accounts when you bank on the web. Finally, a card that bears a name and number and please click the up coming article states "not valid for employment" represents an person who has been issued a social security card for a non-work objective and is not eligible for employment in the United States.If malware gets on your system, it can capture everything you type, like the passwords to your e mail account, PayPal account, and other financial accounts. These can be sent back to scammers and give them access your accounts, causing financial troubles and embarrassment. Malware can study all the files on your system, including your e mail, your financial records, and personal data. Malware can also take more than your system to send out SPAM emails, or attack other people's accounts. If malware requires over your system, you happen to be not just a victim - your method becomes element of the issue.If you loved this information and you wish to receive much more information regarding please click the up coming article please click the up coming article the up coming article - deadbed8.Odablog.net - assure visit our web site. Two-element authentication aids you shield your accounts by adding a second step to the login approach. In addition to your username and password, you also present a second aspect such as a Safety Key or a random code from your mobile telephone. Logging in will then demand a combination of one thing you know and anything you have, so no one can get into your accounts with no both issues.Physical exercise caution when sharing personal info over the web, the telephone or in person. Guard your passwords and individual identification numbers (PINs): Steer clear of employing data such as your mother's maiden name, your birth date, and the last 4 digits of your Social Safety number or phone quantity.Cartoon Network is house to your favourite cartoons with hundreds of free on the web games for children. Play games on the web with Cartoon Network characters from Adventure Time, Gumball, Ben 10, Typical Show, The Powerpuff Girls, We Bare Bears, Teen Titans, Steven Universe, Uncle Grandpa and several a lot more. Save the Candy Kingdom with Finn and Jake or hang out with Gumball. There is adventure games, puzzle games, action, activity and sports games for you to play on Cartoon Network on the web, where the exciting by no means stops.Safety has to be simple for users. If your safety procedures involve complex methods or require special understanding, your workers are far less most likely to adopt and use them frequently. That is why Mimecast Safe Messaging makes sending encrypted messages as straightforward as sending a typical e-mail, and why Mimecast Massive File Send lets customers send attachments up to 2 GB straight from their mailbox application.An unauthorized user gaining physical access to a computer is most likely able to straight copy data from it. They may possibly also compromise safety by generating operating program modifications, installing application worms , keyloggers , covert listening devices or employing wireless mice. six Even when the program is protected by regular safety measures, these could be in a position to be by-passed by booting one more operating system or tool from a CD-ROM or other bootable media. Disk encryption and Trusted Platform Module are designed to prevent these attacks.Use safety computer software if it is accessible - There are a variety of sorts of software program developed to add security "worth" to your laptop. Disk encryption is necessary for all University-owned laptops, but there are versions offered for personally-owned laptops, as nicely. Likewise, laptop recovery application is accessible for both individual and University laptops. There are even add-ons that sound an alarm if there is unexpected motion or if the laptop is moved outdoors a specified region.An unauthorized user gaining physical access to a pc is most likely capable to directly copy data from it. They may also compromise safety by generating operating system modifications, installing software worms , keyloggers , covert listening devices or employing wireless mice. six Even when the method is protected by regular security measures, these may possibly be able to be by-passed by booting an additional operating technique or tool from a CD-ROM or other bootable media. Disk encryption and Trusted Platform Module are designed to avert these attacks.Use a special password on each account or device containing individual or enterprise data, and alter them regularly. That is why preventative measures and security policies should be put in location for social workers to guarantee their individual security even though on the job.