I bought an .eps vector graphic file from iStock and wanted to edit the elements for a company logo. I was going to do this on a Windows 7 system using Inkscape.
1) Install Ghostscript.
2) Install GSView.
3) Run GSView and open the .eps file.
4) Under File -> Convert..., select 'pdfwrite' Device and save with a .pdf extension.
5) Run Inkscape and open the .pdf file.
6) Save as a .svg file, ungroup and edit away!
Sources:
Ghostscript & GSView - http://pages.cs.wisc.edu/~ghost/
Inkscape - http://inkscape.org/
Categories: How-To, Microsoft, Windows, OS, Inkscape
Tags: edit, convert, .eps, EPS, vector, graphic, inkscape
Saturday, 23 April 2011
Wednesday, 23 March 2011
Backing up MySQL database
Below are just notes for my own purpose. Feel free to make use of them.
I am backing up to compressed files, onto a removable encrypted drive. So not worried about backup file password protection. This is a development system so not only do I want to keep daily backups but also the last two hours of hourly backups of a particular database.
p7zip is a port of 7za.exe for POSIX systems like Unix (Linux, Solaris, OpenBSD, FreeBSD, Cygwin, AIX, ...), MacOS X and also for BeOS and Amiga. I find it has good compression rates and I use it on my Ubuntu Servers.
http://www.7-zip.org/ or http://p7zip.sourceforge.net/
Although quite simular, I'll post both the hourly and daily backup scripts here for completeness. I save them to /root/bin/ and make them only read, write and executable (chown 600) by Root.
Code:
/root/bin/cron_hourly_database_backup.sh:
Code:
The above script creates a lockfile. Whilst this exists I don't want any other backups ran.
mysqldump is then run with p7zip compressing the resultant file, on the fly. Note that my script may not be suitable for all situations : mysqldump needs to acquire locks to create a consistent backup, and this may raise issues on highly loaded servers.
Once backed up, the find command locates specific backup files that are over two hours old and deletes them (rm). Finally, the lockfile is deleted.
cron_daily_database_backup.sh:
Code:
Code:
Code:
Crontab:
Code:
The crontab shows that the hourly backup is ran between 01:00 to 23:00 hours. The daily backup is the only one to run at midnight (00:00 hour).
Notes:
You can dump more than one database to a file by altering one line in the script.
Example:
Code:
or
Code:
* The above has not documented how I then copy all the backups to the encrypted, swappable drives.
Restoring database
Regularly test your backup by restoring to a dummy database. If you do need to restore the actual database then drop the old one first.
Code:
Next, create the database.
Code:
or combine the commands...
Code:
Then restore backup...
Code:
... replacing [filename] with the correct filename and replacing [databasename] with the correct database name.
MySQL-Maint
If you don't want to 'roll your own' custom scripts for MYSQL database backups and maintenance then check out MySQL-Maint.
A bash script that performs backups and maintenance on your MySQL servers.
https://github.com/mmerian/MySQL-Maint
Categories: How-To, MySQL
Tags: MySQL, database, administration, backup, backups, maintenance, optimization, optimisation
I am backing up to compressed files, onto a removable encrypted drive. So not worried about backup file password protection. This is a development system so not only do I want to keep daily backups but also the last two hours of hourly backups of a particular database.
p7zip is a port of 7za.exe for POSIX systems like Unix (Linux, Solaris, OpenBSD, FreeBSD, Cygwin, AIX, ...), MacOS X and also for BeOS and Amiga. I find it has good compression rates and I use it on my Ubuntu Servers.
http://www.7-zip.org/ or http://p7zip.sourceforge.net/
Although quite simular, I'll post both the hourly and daily backup scripts here for completeness. I save them to /root/bin/ and make them only read, write and executable (chown 600) by Root.
Code:
sudo -s
mkdir /root/bin
cd /root/bin
mkdir /root/bin
cd /root/bin
/root/bin/cron_hourly_database_backup.sh:
Code:
#!/bin/sh
# /root/bin/cron_hourly_database_backup.sh
if [ -f /tmp/database_backup_lockfile ]
then
exit 0
else
touch /tmp/database_backup_lockfile
fi
date=$(date +"%Y%m%d%H%M")
filename="database_hourly_backup-"
# logger "$date: Cron ran /usr/local/bin/cron_hourly_database_backup.sh"
mysqldump -uroot -pmypassword --opt database1 | p7zip > /var/backups/$filename$date.sql.7z
# find hourly backup files over 2 hours old and delete
find /var/backups/$filename* -type f -amin +121 -exec rm {} \;
rm -f /tmp/database_backup_lockfile
# /root/bin/cron_hourly_database_backup.sh
if [ -f /tmp/database_backup_lockfile ]
then
exit 0
else
touch /tmp/database_backup_lockfile
fi
date=$(date +"%Y%m%d%H%M")
filename="database_hourly_backup-"
# logger "$date: Cron ran /usr/local/bin/cron_hourly_database_backup.sh"
mysqldump -uroot -pmypassword --opt database1 | p7zip > /var/backups/$filename$date.sql.7z
# find hourly backup files over 2 hours old and delete
find /var/backups/$filename* -type f -amin +121 -exec rm {} \;
rm -f /tmp/database_backup_lockfile
The above script creates a lockfile. Whilst this exists I don't want any other backups ran.
mysqldump is then run with p7zip compressing the resultant file, on the fly. Note that my script may not be suitable for all situations : mysqldump needs to acquire locks to create a consistent backup, and this may raise issues on highly loaded servers.
Once backed up, the find command locates specific backup files that are over two hours old and deletes them (rm). Finally, the lockfile is deleted.
cron_daily_database_backup.sh:
Code:
#!/bin/sh
# /root/bin/cron_daily_database_backup.sh
if [ -f /tmp/database_backup_lockfile ]
then
exit 0
else
touch /tmp/database_backup_lockfile
fi
date=$(date +"%Y%m%d%H%M")
filename1="database1_daily_backup-"
filename2="mysql_daily_backup-"
# logger "$date: Cron ran /usr/local/bin/cron_daily_database_backup.sh"
mysqldump -uroot -pmypassword --opt database1 | p7zip > /var/backups/$filename1$date.sql.7z
mysqldump -uroot -pmypassword --opt mysql | p7zip > /var/backups/$filename2$date.sql.7z
# find daily backup files over 7 days old and delete
find /var/backups/$filename1* -type f -atime +7 -exec rm {} \
find /var/backups/$filename2* -type f -atime +7 -exec rm {} \
rm -f /tmp/database_backup_lockfile
# /root/bin/cron_daily_database_backup.sh
if [ -f /tmp/database_backup_lockfile ]
then
exit 0
else
touch /tmp/database_backup_lockfile
fi
date=$(date +"%Y%m%d%H%M")
filename1="database1_daily_backup-"
filename2="mysql_daily_backup-"
# logger "$date: Cron ran /usr/local/bin/cron_daily_database_backup.sh"
mysqldump -uroot -pmypassword --opt database1 | p7zip > /var/backups/$filename1$date.sql.7z
mysqldump -uroot -pmypassword --opt mysql | p7zip > /var/backups/$filename2$date.sql.7z
# find daily backup files over 7 days old and delete
find /var/backups/$filename1* -type f -atime +7 -exec rm {} \
find /var/backups/$filename2* -type f -atime +7 -exec rm {} \
rm -f /tmp/database_backup_lockfile
Code:
chmod 600 /root/bin/cron_hourly_database_backup.sh
chmod 600 /root/bin/cron_daily_database_backup.sh
chmod 600 /root/bin/cron_daily_database_backup.sh
Code:
sudo -s
crontab -e
crontab -e
Crontab:
Code:
## root crontab
## m h dom mon dow command
0 01-23 * * * /root/bin/cron_hourly_database_backup.sh >> /var/backups/cron_hourly_database_backup.log 2>&1
0 0 * * * /root/bin/cron_daily_database_backup.sh >> /var/backups/cron_daily_database_backup.log 2>&1
## m h dom mon dow command
0 01-23 * * * /root/bin/cron_hourly_database_backup.sh >> /var/backups/cron_hourly_database_backup.log 2>&1
0 0 * * * /root/bin/cron_daily_database_backup.sh >> /var/backups/cron_daily_database_backup.log 2>&1
The crontab shows that the hourly backup is ran between 01:00 to 23:00 hours. The daily backup is the only one to run at midnight (00:00 hour).
Notes:
You can dump more than one database to a file by altering one line in the script.
Example:
Code:
mysqldump -uroot -pmypassword --opt database1,database2,database3 | p7zip > /var/backups/$filename$date.sql.7z
or
Code:
mysqldump -uroot -pmypassword --opt --all-databases | p7zip > /var/backups/$filename$date.sql.7z
* The above has not documented how I then copy all the backups to the encrypted, swappable drives.
Restoring database
Regularly test your backup by restoring to a dummy database. If you do need to restore the actual database then drop the old one first.
Code:
mysql -uroot -pmypassword -e "DROP DATABASE [databasename];"
Next, create the database.
Code:
mysql -uroot -pmypassword -e "CREATE DATABASE [databasename];"
or combine the commands...
Code:
mysql -uroot -pmypassword -e "DROP DATABASE [databasename]; CREATE DATABASE [databasename];"
Then restore backup...
Code:
p7zip -d < /var/backups/[filename].sql.7z | mysql -u mysqlusername -pmypassword [databasename]
... replacing [filename] with the correct filename and replacing [databasename] with the correct database name.
MySQL-Maint
If you don't want to 'roll your own' custom scripts for MYSQL database backups and maintenance then check out MySQL-Maint.
A bash script that performs backups and maintenance on your MySQL servers.
https://github.com/mmerian/MySQL-Maint
Categories: How-To, MySQL
Tags: MySQL, database, administration, backup, backups, maintenance, optimization, optimisation
Tuesday, 22 March 2011
FIX: warning: setlocale: LC_CTYPE: cannot change local
After installing a Ubuntu 10.04 LTS Server I was getting an error message constantly come up whilst trying to do things in the bash,
Solution was:
Code:
and reboot server,
Code:
"warning: setlocale: LC_CTYPE: cannot change locale".
Solution was:
Code:
sudo locale-gen en_GB
sudo locale-gen en_GB.utf8
sudo locale-gen en_GB.utf8
and reboot server,
Code:
shutdown -r now
Friday, 21 January 2011
New toner cartridge for my Laser Printer or refill?
I was keen and slightly excited to see a flyer
come through my letterbox, for a cartridge refilling franchise just
opened in my town. Not only for inkjets but also for laser printer
toner cartridges.
Now I know that predominantly, their business is inkjet cartridges but I was shocked by a price of 51ukp + VAT for refilling my colour cartridge with compatible toner. When, a replacement high capacity compatible colour toner cartridge can be bought from a reputable supplier for 42ukp (inc. VAT)!
Moral - Shop around for prices and if you want to help the environment then check your manufacturers website. Some now have FREEPOST addresses to send back old cartridges for recycling.
Dell include FREEPOST postage return labels with their toner cartridges.
Konica Minolta Clean Planet Recycling (Europe)
http://cleanplanet.konicaminolta.eu/
Now I know that predominantly, their business is inkjet cartridges but I was shocked by a price of 51ukp + VAT for refilling my colour cartridge with compatible toner. When, a replacement high capacity compatible colour toner cartridge can be bought from a reputable supplier for 42ukp (inc. VAT)!
Moral - Shop around for prices and if you want to help the environment then check your manufacturers website. Some now have FREEPOST addresses to send back old cartridges for recycling.
Dell include FREEPOST postage return labels with their toner cartridges.
Konica Minolta Clean Planet Recycling (Europe)
http://cleanplanet.konicaminolta.eu/
Saturday, 4 December 2010
Yeh, help the spammers spam your friends!
So, you want to send ALL your friends a humourous
jokes or picture. You add all their email addresses to the 'To:' or
'CC:' email address field. That's just great! Because, if any one of
those recipients (friends) has malware on their computer, you have
giving some spammers ALL your friends email addresses.
I get annoyed when 'friends' do this. My daughter's Scout Leader sends Newsletters with everyone's email addresses in the 'To:' field. This breaches the Data Protection Act. Some of these email addresses were children's!
Protect children and friend's email addresses by simply putting them into the 'BCC:' field. Stands for 'Blind Carbon Copy'. Every one gets the email BUT, they only see their own email address.
SAFE!
Yes, all email programs have a 'BCC:' field.
I know this is all a bit inconvenient but, it is a solution.
I get annoyed when 'friends' do this. My daughter's Scout Leader sends Newsletters with everyone's email addresses in the 'To:' field. This breaches the Data Protection Act. Some of these email addresses were children's!
Protect children and friend's email addresses by simply putting them into the 'BCC:' field. Stands for 'Blind Carbon Copy'. Every one gets the email BUT, they only see their own email address.
SAFE!
Yes, all email programs have a 'BCC:' field.
I know this is all a bit inconvenient but, it is a solution.
Saturday, 13 November 2010
Stop doorstep cold calls (door to door selling/marketing)
From October 2010, displaying a 'no cold callers' sign should deter most door to door sellers. This officially became part of the EnergySure Code of Practice and reputable companies should not call any more.
http://www.energy-retail.org.uk/documents/code030910v5Oct2010.pdf
Therefore if the cold caller persists, note down their name & employee number and report them to the company and Consumer Direct.
http://www.consumerdirect.gov.uk/
Further reading:
http://www.consumerdirect.gov.uk/before_you_buy/buying-at-home/doorstep-selling/
http://www.energy-retail.org.uk/documents/code030910v5Oct2010.pdf
Therefore if the cold caller persists, note down their name & employee number and report them to the company and Consumer Direct.
http://www.consumerdirect.gov.uk/
Further reading:
http://www.consumerdirect.gov.uk/before_you_buy/buying-at-home/doorstep-selling/
Cut down unsolicited postal mail
Mailing Preference Service supports your right to choose the mail you want.
Unwanted, unread Direct Mail has no place in anyone's home. And if you're not interested in receiving it, MPS will update their records for Direct Mail companies to see and adjust their lists as you request.
http://www.mpsonline.org.uk/mpsr/
Unwanted, unread Direct Mail has no place in anyone's home. And if you're not interested in receiving it, MPS will update their records for Direct Mail companies to see and adjust their lists as you request.
http://www.mpsonline.org.uk/mpsr/
Subscribe to:
Posts (Atom)