вторник, 30 ноября 2010 г.

Памятка для virtualevn, virtualenvwrapper and pip

Установка пакетов с помощью easy_install:

$ sudo easy_install virtualenv
$ sudo easy_install pip
$ sudo easy_install virtualenvwrapper


Добавить в ~/.bashrc:
# Путь к корневой директории виртульных окружений
export WORKON_HOME=$HOME/py_virtual_envs

# Для Arch этот путь отличается от стандартного
# /usr/local/bin/virtualenvwrapper_bashrc
source /usr/bin/virtualenvwrapper_bashrc


Теперь надо чтобы настройки вступили в действие:
$ source ~/.bashrc


Создание нового окружения - команда mkvirtualenv <имя окружения> или mkvirtualenv --no-site-packages <имя окружения>

Проверка:
$ workon
*
$ mkvirtualenv temp
New python executable in temp/bin/python
Installing setuptools............done.
$ workon
temp
$ mkvirtualenv temp2
New python executable in temp2/bin/python
Installing setuptools............done.
$ workon
temp
temp2
$ workon temp


Переход в директорию текущего виртуального окружения:
$ cd $VIRTUAL_ENV
$ pwd
/home/beast/py_virtual_envs/temp

$ workon temp2
$ cd $VIRTUAL_ENV
$ pwd
/home/beast/py_virtual_envs/temp2


Или можно использовать команду cdvirtualenv
$ workon temp
$ cdvirtualenv
$ pwd
/home/beast/py_virtual_envs/temp2

$ cdvirtualenv include/python2.6/
$ pwd
/home/beast/py_virtual_envs/temp/include/python2.6


отключение виртульного окружения
$ deactivate


Удаление виртуального окружения
$ rmvirtualenv temp
$ rmvirtualenv temp2


Опции mkvirtualenv передаются напрямую в virtualenv
$ mkvirtualenv --no-site-packages temp3


есть быстрый переход к текущей директории site-packages
$ cdsitepackages
$ pwd
/home/beast/py_virtual_envs/temp3/lib/python2.6/site-packages
$ ls -l
итого 352
drwxr-xr-x 3 beast beast   4096 Мар 13 21:13 .
drwxr-xr-x 4 beast beast   4096 Мар 13 21:13 ..
-rw-r--r-- 1 beast beast    237 Мар 13 21:13 easy-install.pth
drwxr-xr-x 4 beast beast   4096 Мар 13 21:13 pip-0.6.3-py2.6.egg
-rw-r--r-- 1 beast beast 333447 Мар 13 12:53 setuptools-0.6c11-py2.6.egg
-rw-r--r-- 1 beast beast     30 Мар 13 21:13 setuptools.pth


Есть команда для добавления директорий с пакетами - add2virtualenv <директория>
$ add2virtualenv ~/py_virtual_envs/temp3/temp/
Warning: Converting "/home/beast/py_virtual_envs/temp3/temp/" to "/home/beast/py_virtual_envs/temp3/temp"
$ python
Python 2.6.4 (r264:75706, Jan 25 2010, 09:01:01)
[GCC 4.4.2 20091208 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import additional_package
>>> additional_package.NAME
'Additional package'
^D
$ cat ./temp/additional_package/__init__.py
NAME="Additional package"
$ add2virtualenv ~/py_virtual_envs/temp3/temp/
$ add2virtualenv
Usage: add2virtualenv dir [dir ...]

Existing paths:
/home/beast/py_virtual_envs/temp3/temp


Просмотр установленных пакетов:
$ lssitepackages
easy-install.pth  pip-0.6.3-py2.6.egg  setuptools-0.6c11-py2.6.egg
setuptools.pth  virtualenv_path_extensions.pth

virtualenv_path_extensions.pth:
/home/beast/py_virtual_envs/temp3/temp

В ~/.bashrc можно так же добавить:
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
# Это позволит pip определить текущее виртуальное окружение
# и устанавливать в него без использования параметра -E

Maven Erlang plugin rewrite

Я уже писал про установку и настройку Maven для сборки Erlang проектов. Link. Maven Erlang Plugin упомянутый в той статье не обновлялся больше года.

Недавно я обнаружил новый проект на SourceForge: maven-erlang-plugin который является развитием проекта Maven Erlang Plugin Сейчас проект активно развивается - последний коммит в транк был три часа назад.

четверг, 25 ноября 2010 г.

Включение изображений в html

Памятка:
Небольшие изображения зачастую имеет смысл влючать в html-код страницы с помощью схемы data:URL. Это позволяет не беспокоится о хостинге статичных файлов, например для элементов дизайна Blogger.

Подробности, достоинства и недостатки этого метода можно найти на Wikipedia

Пример:
Embedded Image

Так же можно вкладывать изображения в css-стили:
div.image {
  width:100px;
  height:100px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...);
}


Скрипт для подготовки изображений к вставке в html:
import base64
import os
import sys

from optparse import OptionParser


if __name__ == '__main__':
    optp = OptionParser()
    optp.add_option('-i', '--input', action='store', dest='input',
            help='File to be encoded')
    optp.add_option('-o', '--output', action='store', dest='output',
            help='File to write output in.')

    (options, args) = optp.parse_args()
    if options.output is not None:
        outfile = open(options.output, 'wb')
    else:
        outfile = sys.stdout

    if options.input is None:
        optp.print_help()
        exit(1)
    infile = open(options.input, 'rb')
    ext = os.path.splitext(options.input)[1][1:]
    outfile.write('')
    infile.close()
    outfile.close()