Tuesday, December 10, 2013

Combine wget plus git to reduce storage, maintain versions.

Problem: You want to have backups of your huge website, but only new and changed, and yet have some way to recover any point in time restore of files. Meanwhile, you don't really want to have multiple entire site backups. Further, you only really have ftp access to download the website.

Solution: So, here's what you can do...
wget -r -N ftp://username:password@yoursite.com
git add .
git commit -m "daily backup"

Basically, browse and no-clobber files (update if timestamp is newer) and then add and commit to a git repository.

wget will only grab new files, git add will only add new files, and git commit stores the status of your folder structure with the new changes.

git log will show you your transaction history and you can git checkout any previous backup.

Friday, October 25, 2013

Here-doc literal @ (at symbol)

So, you have a here-doc/heredoc and need a literal @ at symbol for things like email addresses.
Answer: Replace it with \100.

Friday, October 11, 2013

3CXPhone dial from web page

Windows Registry Editor Version 5.00

@="URL:Dial Protocol"
"URL Protocol"=""

@="C:\\Program Files (x86)\\Microsoft Lync\\Communicator.exe,0"



@="\"c:\\Program Files (x86)\\3CXPhone\\3CXPhone.exe\" %1"

So, copy that, put it in a .reg file, import it.
(NOTE THIS MODIFIES YOUR REGISTRY) Determine if you want to do this.
Now, if you have a link that says:
<a href="dial:8005551212">8005551212</a>

3cxPhone will dial that link.

Tuesday, July 9, 2013

Network Choices Windows

With Vista/Win7/8, you get the awful choice of Public/Work/Home for the *network* that you connect to.

Unfortunately, this is easily confusing to people who read "Public/Work/Home" for the *computer* that they're using. As in, the first thing that one might think about re: "Public" is that they want their computer to be *Public* (See me!) rather than private (I want to be hidden).

Frankly, I think this is a better question to ask... "You are on a new network. Do you want your computer to be Public (people can see and connect to your computer) or Private (people can't see your computer)." And that's about it.

It takes the ambiguity away ... I realize this argument can be presented in the other manner, but I'm writing this from a perspective of working with people who honestly don't understand computers in the way that I do, and if I, the computer guy, can comprehend this confusion on the users' behalf, I don't think it's an unreasonable position to state. A user who doesn't know the difference between a network and a computer can't be asked what to do on their network.

Tuesday, May 7, 2013

Saturated Fat?

NOTE: I AM NOT A NUTRITIONIST. Please consult people you trust about things related to your health.

The common refrain: "This fat is bad for you because it's solid at room temperature".

About this: If your body is room temperature, you don't really have to worry about the fat being solid in your system.

Or, to put it another way: your body is probably going to like squishy things going through its system much better than things that dry it out. Squishy things are easier to push through than rough things and are easier to absorb nutrients from than fibrous items.

Have you heard of saturated fat? What do you suppose the fat is saturated with? Could it possibly be things your body needs? "Cholesterol!!!" Yes, but your body needs cholesterol to actually build cells and think better.

Why is juicing better than eating raw vegetables? Because it changes rough stuff to squishy stuff.

Wednesday, May 1, 2013

Solve AutoMySQLBackup warning mysql.event

Fix for: -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

edit /usr/sbin/automysqlbackup (wherever your /etc/cron.daily/automysqlbackup points)
find the OPT="--quote-names" line (about line 354)

Change it to
OPT="--quote-names --events --ignore-table=mysql.event"

OR, (Based upon additional reading of responses):
one of:
OPT="--quote-names --events"

OPT="--quote-names --ignore-table=mysql.event"

The original line suppresses the warning and ignores the table (redundant).
If you wish to have the table in your backup, don't ignore the table, just use --events
If you don't care about the table, ignoring the table will also suppress the event message.

What's optimal? Depends on if you use events and require them to be restored.

Reference: http://bugs.mysql.com/bug.php?id=68376

Friday, April 26, 2013

Keep your vim plugins up to date

You go and download a plugin from a website but the website says, "Check GitHub for the most uptodate version."
So you get the tarball or the file you need and all is good. If you're okay with this, stop reading. You don't need to know the rest.

Method 1:
cd ~/.vim
mkdir gits
cd gits
git clone https://github.com/user/pluginname.git
ln -s ~/.vim/gits/pluginname/plugin/something.vim ~/.vim/plugin/something.vim
ln -s ~/.vim/gits/pluginname/doc/something.txt ~/.vim/doc/something.txt
ln -s ~/.vim/gits/pluginname/autoload/something.vim ~/.vim/autoload/something.vim
(if it exists -- editorconfig, for example)
Check also for plugin/python folders for your plugins.

Yes, I realize this is a bit more painful than just extract/install, but only slightly.
Now, if you want the latest update from the plugin, you can
cd ~/.vim/gits/pluginname/
git pull

Method 2:

cd ~/.vim
git init
mkdir gits

git submodule add https://github.com/user/pluginname.git gits/pluginname

now do the linking.

This second method allows you to version your changes across the entire .vim folder.

You also can checkout specific branches of the plugin, etc.

Saturday, April 20, 2013

Git make "clean" pull request.

Scenario: You've worked your tail off and *know* you're done with .. whatever you're working on, and can't be bothered to fixup/squash/commits properly to hide your work method to send upstream.

you have the most recent git fetch from upstream and you're ready to do a pull request.

git checkout upstream/master
(you get a warning that you're in headless mode. In this case, great, let's do what it says:)

git checkout -b mybranchforthispullrequest

Now you're basically looking at plain upstream/master.

you can either
git merge mylocalworkingbranch (but this keeps the commit history)

or, if you're *certain* you only want to add/replace files (hopefully, only add)
git checkout mylocalworkingbranch myfileiwanttoadd.ext

git add myfileiwanttoadd.ext

git commit -m "Added myfileiwanttoadd.ext"

and just send the branch to your origin or upstream
git push origin mybranchforthispullrequest

Optionally, go to github and do a pull request from mybranchforthispullrequest.

Saturday, February 23, 2013

automysqlbackup error fix

You get this:
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'debian-sys-maint'@'localhost' for table 'cond_instances' when using LOCK TABLES

to fix it:
edit /etc/default/automysqlbackup
change the DNAMES line to this:

DBNAMES=`mysql --defaults-file=/etc/mysql/debian.cnf --execute="SHOW DATABASES" | awk '{print $1}' | grep -v ^Database$ | grep -v ^mysql$ | grep -v ^performance_schema$ | tr \\\r\\\n ,\ `
or, to be succinct: add
 | grep -v ^performance_schema$ 
into the list. If you're doing any different method of DBNAMES, just make sure to exclude performance_schema.

Why is this happening?
automysqlbackup's default configuration attempts to lock tables before dumping. This error isn't specifically automysqlbackup's problem to fix, as much as it's a problem (or not) that performance_schema.cond_instances can't be locked [by debian-sys-maint] at the time of mysqldump, and mysqldump is what's throwing the error.

Is it a problem of backing up or not backing up performance_schema?
I can't answer that for your situation, though if you understand what the table does and how to recreate it you can be better informed about whether the backup is necessary to you. (hint: probably not unless corporately you need to keep all diagnostic logs on everything.) Also, this is not related to the other databases which actually hold your data and which you do want to back up.
 What does grep -v do?
It says, "don't include this in the list". Note, while you're here, that this also includes the "mysql" table. If you need to keep your users and permissions for disaster recovery reasons, you may wish to consider not excluding that table.
What is "Database"? Why is that grep -v? I don't have a database called Database.
Database is the column title of the result of "SHOW DATABASES" SQL query.

Friday, February 22, 2013

Ubuntu Waiting for network message on bootup

Simple fix for this:
edit /etc/network/interfaces
make sure "auto" only points to network devices that actually will be and need to be on your network (for services) at boot time.

For instance, wlan0 may *not* be online before your OS loads.

Or, you might have other "auto" devices that obtain an ip address via DHCP. The failsafe allows sufficient time to get a DHCP address. You may decide whether you want to disable the failsafe or disable the auto, but note that some services depend on at least eth0 being "alive" before they start (or your ethn configured device).

Since you're there, it's a good idea to check for legacy network devices you may have configured in the past and make sure they're not "auto".

(If you're using DHCP and this configuration does not work for you, it's an issue with DHCP.)

Friday, January 18, 2013

git branch before pull

Things are going well on your version of production/master and you'd like to pull the latest iteration. Oh, sure, you could tar your setup before doing that in case it breaks, but maybe you're stuck for time and too lazy. That's okay. Really it is. just
git branch before-pull-todaysdate
git pull

PANIC! bad stuff, things crashing, etc... maybe that pull isn't nice.
git checkout before-pull-todaysdate

whew... sanity restored. ... OK, it's off hours and you really want to get back to the latest iteration. Managers aren't on your back and you can fix this.
git checkout master

errors, etc. but at least you're at the latest iteration.

BETTER: don't pull. Just git fetch, then git merge when you're ready.

Monday, January 14, 2013

git branch change oops wrong branch

Specific case:

You're working on a feature but forgot to change branches. This feature is going to corrupt master, it seems, but you haven't committed yet.

alternative to stash,
git branch newbranchname
git checkout newbranchname
git add .
git commit -m "I needed a branch for this before killing master"

if you git checkout master, all these new previously uncommitted changes aren't there (whew) but git checkout newbranchname has the stuff you've been working on.

when you're ready to put them back, just merge back to master.

Blog Archive