[

понедельник, 11 августа 2014 г.

Инициализация Ganeti кластера на Ubuntu 14.04 и Xen 4.4

Все по мануалу http://docs.ganeti.org/ganeti/2.11/html/install.html.

Кластер инициализировал так:

gnt-cluster init --enabled-hypervisors=xen-hvm,xen-pvm --nic-parameters link=xenbr0 --master-netdev xenbr0 cluster.host.name

пятница, 1 августа 2014 г.

GORM strangeness

Grails version 2.3.8


Вот такая конструкция не работает

runners = Runner.methodReturningDetachedCriteria(params).findAll {
    lastName =~ "%${lastName}%"
}

Такая тоже

def filter = {
    lastName =~ "%${lastName}%"
} as DetachedCriteria<Runner>
runners = Runner.methodReturningDetachedCriteria(params).findAll(filter)

А такая вполне себе работает

def filter = {
    lastName =~ "%${lastName}%"
} as DetachedCriteria<Runner>
runners = Runner.methodReturningDetachedCriteria(params).where(filter).findAll()

четверг, 15 мая 2014 г.

Hibernate Exceptions In Grails Domain Event


По неосторожности можно наткнуться на

ERROR hibernate.AssertionFailure  - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) Message: null id in Domain entry (don't flush the Session after an exception occurs)

пытаясь изменить свойства домена, например, в событии beforeInsert.

Простой пример:
def beforeInsert() {
    someField = fieldModificationService.modify(someField)
}

Если Hibernate сам управляет сохранением данных в базе, а по умолчанию это так, то тут может произойти flush, что в контексте события домена запрещено.

Чтобы этого не происходило можно обернуть сервис в @Transactional(readOnly = true):
@Transactional(readOnly = true)
class FieldModificationService {
    def grailsApplication
    ...
}

воскресенье, 27 апреля 2014 г.

Not In Groovy

5ти минутный ступор: в Groovy есть оператор in, но не not in... Python портит людей.

понедельник, 9 сентября 2013 г.

Как вызвать интерактивную консоль python из кода

bpdb

import bpdb; bpdb.set_trace()

На экране появится приглашение bpdb
Django version 1.5.2, using settings 'my_project.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
> /path/to/my_project/app/views.py(224)visit_update()
-> return HttpResponse(json.dumps("TODO:"), content_type="application/json")
Use "B" to enter bpython, Ctrl-d to exit it.
(BPdb)

NB: bpython не работает, но по идее это должно быть так:
import bpython; bpython.embed()

IPython

import IPython; IPython.embed()

Python code (last resort)

import code; code.InteractiveConsole(locals = locals()).interact()

воскресенье, 11 августа 2013 г.

Установка virtualenv под Windows

Устанавливаем Python

Скачиваем MSI файл от сюда http://python.org/download/

Устанавливаем setuptools (нужны для установки pip)

Скачиваем специальный скрипт с https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py и запускаем

C:\> C:/Python27/python.exe C:/path/to/ez_setup.py

Устанавливаем pip

Скачиваем дистрибьютив с https://pypi.python.org/pypi/pip, распаковываем и запускаем установку

C:\> C:/Python27/python.exe C:/path/to/pip-distrib/setup.py install

Устанавливаем virtualenv

C:\> C:/Python27/Scripts/pip.exe install virtualenv

Проверяем virtualenv

C:\>mkdir tmp

C:\>cd tmp

C:\tmp>C:\Python27\Scripts\virtualenv.exe test
New python executable in test\Scripts\python.exe
Installing Setuptools...........................................................
................................................................................
................................................................................
.......................done.
Installing Pip..................................................................
................................................................................
................................................................................
................................................................................
.....................done.

C:\tmp>cd test

C:\tmp\test>Scripts\activate.bat
(test) C:\tmp\test>

суббота, 10 августа 2013 г.