27 октября 2009 г.

Дебагинг django в eclipse c помощью PyDev

Pydev в сентябре переехал. Да еще его расширения стали Open Source:
Pydev Extensions is now merged with Pydev, and its once closed source code has become open source. Thus, there is no more Pydev Extensions, only the open source Pydev, with all the capabilities of Pydev Extensions incorporated.


Изменился и сайт апдейта для eclipse - http://pydev.org/updates .

А что нам это дает? А это нам дает бесплатную штуку под названием "Debug 'server' for remote debugging", с помощью которой можно дебажить django очень удобным способом.

Для начала выполняем условия, как написано здесь, в том числе заносим в PYTHONPATH в настройках Eclipse путь примерно следующего содержания
"eclipse\plugins\org.python.pydev.debug_1.5.0.1251989166\pysrc\" (найдете у себя подобный) и запускаем сервер (из перспективы debug):



Добавляем следующий код в manage.py (после if __name__ == "__main__":) проекта, что дает нам возможность обернуть PyDev брейкпоинты в pydevd.settrace(), который пересылает трейс Debug Remote серверу (для теста рекомендую сначала использовать --noreload и pydevd.settrace(), и убедиться, что трейс возникает именно на Debug Remote server, так же можно попробовать запускать проект не в режиме дебага, а в режиме run, трейс должен отправляться в любом режиме):


import sys

if len(sys.argv) > 1:
command = sys.argv[1]
if settings.DEBUG and (command == "runserver" or command == "testserver"):
# Make pydev debugger works for auto reload.
try:
import pydevd
except ImportError:
sys.stderr.write("Error: " +
"You must add org.python.pydev.debug.pysrc to your PYTHONPATH.")
sys.exit(1)

from django.utils import autoreload
m = autoreload.main
def main(main_func, args=None, kwargs=None):
import os
if os.environ.get("RUN_MAIN") == "true":
def pydevdDecorator(func):
def wrap(*args, **kws):
pydevd.settrace(suspend=False)
return func(*args, **kws)
return wrap
main_func = pydevdDecorator(main_func)

return m(main_func, args, kwargs)

autoreload.main = main




А для чего мы это, собственно говоря, делали? А чтобы запускать runserver без --noreload. Чтобы и изменение кода и брейкпоинты обрабатывались "онлайн".
Примерно вот такая картина:

24 октября 2009 г.

Google Chorme в Debian

Debian в качестве ОС для нетбука asus eeepc 1000 меня полностью устраивал. Во всем, кроме браузеров. Идущий в комплекте Iceweasel ничем не отличился от обычного firefox, который я установил, после Iceweasel. И тот и другой потребляли неимоверное количество памяти и процессора, веб разработка на коленке казалась просто невозможной. Flash плеер, который идет в дебиане (не помню его название) - это просто тихий ужас. Он был заменен официальным с сайта adobe. После этого флеш заработал как надо, но потребляет очень много процессорного времени.
Так как в общем, такая скорость меня не устраивала, решил попробовать Google Chrome. Стабильного релиза под линукс до сих пор нет, официальный сайт google предлагает нам оставить e-mail для оповещения о выходе релиза браузера. Но, как известно, есть не стабильная ветка, deb пакет которой можно взять отсюда: http://dev.chromium.org/getting-involved/dev-channel
Я скачал dev пакет, установил.
Все очень приятно удивляло.
1. Пакет устанавливает дополнительный репозиторий, с которого, по-видимому, он планирует обновляться.
2. Первый запуск - предложение импортировать настройки браузера с firefox.
3. Русский интерфейс (правда не весь, новые функции наверное не успевают переводить).
4. БОльшая полезная площадь страниц (что особенно актуально в нетбуках).
5. Ну конечно скорость! Намного шустрее.
6. Поедание памяти (без флеша -1-3% на 10 вкладках, в то время как мозила - до 20%).

С флешом таже беда, флеш на torrents.ru занимает 50% процессора сразу. Но это проблема флеша, попробую найти ее решение позже.

Далее, мне нужен был firebug или аналог.
В самом Crome есть DeveloperTools - который, в принципе, может заменить и firebug - он уже сейчас предоставляет много функций, хотя может быть не привычно для любителей firebug'а.
Также, хромисты пошли дальше, выпустили в августе так называемый CrhomeDevtools, который позволяет использовать eclipse для дебага яваскрипта в eclipse.



Еще есть приложение диспетчер задач. Он показывает нагрузку на процессор и скорость закачки страниц, как для всего браузера, так и для каждой вкладки (у меня скорость показывал для каждой вкладки, а процессор - нет, только общий, наверное не сделано еще).

В общем, первые впечатления самые наиположительнейшие, дерзайте.