Thursday, April 7, 2011

Python's virtual environment

You probably would like to use separate sets of packages for your projects and whilst not to spoil your system's environment. This problem can be solved by using virtual environments.

Make initial setup:


To configure virtualenvwrapper:

  1. Create a directory for the virtual environments:
    mkdir ~/projects/.envs
  2. Add to ~/.bashrc:
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    export WORKON_HOME=~/projects/.envs
    export PROJECT_HOME=~/projects
    
    source /usr/local/bin/virtualenvwrapper.sh
  3. Run:
    source ~/.bashrc

Initial setup has been done. Now let's create a new virtual enviroment for Test project in ~/projects/test
mkvirtualenv test
workon test
Now you're in the 'test' environment. To install new packages you can use, for instance, pip.

Friday, April 1, 2011

Big brother is watching you

Do you doubt whether Google knows about your Wi-Fi router location? Try this on your *nix-machine:

iwlist wlan0 scan | sed -n 's/.* Address: //p;T;s/ //g;q' | sed 's/.*/{version:1.1.0,host:maps.google.com,request_address:true,address_language:'${LANG/.*/}',wifi_towers:[{mac_address:"&",signal_strength:8,age:0}]}/' | curl -sX POST -d @- www.google.com/loc/json | sed -e 'h;s/.*latitude":\([^,]*\).*/\1/;G;s/\n[^\n]*longitude":\([^,]*\).*/,\1\n/;s|^|http://maps.google.com/maps?q=|;x;s/[,{]/\n/g;s/["}]//g;s/:/\t/g;s/\n//;G'

Nice, isn't it?

Wednesday, March 30, 2011

Friday, March 25, 2011

Vim necessary commands

Reload the file with selected encoding:
:e ++enc=<encoding>

Friday, February 25, 2011

Force FF not to fill up input by its 'memorized' state after refresh

If it is a very annoying thing for you, use autocomplete="off" for every input you want to avoid memorizing.

Wednesday, February 16, 2011

Patching with git diff

To create patch file:

git diff --no-prefix > filename

To apply it:

patch -p0 < filename

If you have a patch file that's been created without --no-prefix, apply it

patch -p1 < filename

Tuesday, February 15, 2011

Launch Virualbox image from command line

To launch a VirtualBox image directly without GUI interface do the following

vboxmanage startvm name

where name is exactly name is shown in VirtualBox GUI.

Git Delete Last Commit

Once in a while late at night when I ran out of coffee, I commit stuff that I shouldn't have. Then I spend the next 10 - 15 minutes googling how to remove the last commit I made. So after third time I wanted to make a record of it so I can refer to it later.

If you have committed junk but not pushed,

git reset --hard HEAD~1

HEAD~1 is a shorthand for the commit before head. Alternatively you can refer to the SHA-1 of the hash you want to reset to. Note that when using --hard any changes to tracked files in the working tree since the commit before head are lost.

If you don't want to wipe out the work you have done, you can use --soft option that will delete the commit but it will leave all your changed files "Changes to be committed", as git status would put it.

Now if you already pushed and someone pulled which is usually my case, you can't use git reset. You can however do a git revert,

git revert HEAD

This will create a new commit that reverses everything introduced by the accidental commit.

From here.

Thursday, February 10, 2011

Git support in Netbeans

To make Netbeans work with GIT as simple and comfortable as with Mercurial or SVN use nbgit.

Monday, January 31, 2011

XPath at HTML in Python

This technique allows to treat HTML code as XML (if even HTML is not totally valid) and use XPath expressions over it.
from lxml import etree

content = '... some html ...'
# use the HTML parser explicitly to provide encoding
parser = etree.HTMLParser(encoding='utf-8')
# load the content using the parser
tree = etree.fromstring(content, parser)
# we've got a XML tree from HTML
# now get all links in the doc
links = tree.xpath(".//*/a")
for link in links:
    href = link.get('href') # get tag's attribute
    name = link.text() # text between open and close tags

Some links:
API reference
Usage tutorial

Monday, January 17, 2011

How to add your own favicon to your blogger.com blog

To get your own favicon to your blog:

  1. Store a picture you want to be the favicon in PNG and ICO formats in any web-accessible place. I used Google Docs for this because it allows to store any kind of files in public access.
  2. Put in your template this code
    <link href="url/to/favicon.png" rel="icon" type="image/png"></link>
    <link href="url/to/favicon.ico" rel="shortcut icon"></link>
  3. Notice that you must place the code above after
    <b:include data='blog' name='all-head-content'/>
    
    only. Otherwise blogger.com writes its own favicon and you waste your efforts.

Wednesday, December 29, 2010

Run Django with SQLite

In begin with check whether SQLite has been installed in your Ubuntu
sudo apt-get install sqlite

then in settings.py file:
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'path/to/db'
# the rest of the fields are not used

This trick very useful for development stuff because i.e. with Postgres tests run very slow, and etcetera

Monday, December 27, 2010

Disable Firefox cache

To disable go to about:config page (copy to the address bar of FF) and set network.http.use-cache to false (double click it or right-click and 'Toggle').