понедельник, 12 мая 2008 г.

Почему я люблю Python ?

Название поста - калька названия презентахи Брюса Эккеля. Он большой специалист по C++, и поэтому я был очень удивлён тем фактом, что его любимый язык - Python. Удивлён потому, что его практические знания C++ позволили написать классную книжку, одну из лучших, какие вообще есть про С++ (конечно, если Вы вообще признаёте какие-либо книги по C++, кроме стандарта :-) ). Советую почитать презенташку (если вы её ещё не читали), она в ppt, но ОО её открывает ОК.

Мой вариант ответа прост - для меня это единственный из языков, при использовании которого 90%, а может и 99% времени я трачу на то, что думаю о том, что будет написано.

С другими языками не так - в основном, нужно уметь быстро печатать, а не медленно думать.

:-)

четверг, 8 мая 2008 г.

Задавайте размер шрифта в em, %#@^% !

Поубивал бы всех, кто в css задаёт размер шрифта не в em, а особенно тех, у кого размер шрифта по дефолту не 1em (ну или хотя бы 0.8-0.9em) !!!!!!

Дальше, по идее, ругательства, но, пожалуй, пропущу этот момент.

Django консоль в PyDev Eclipse

Должен сразу сказать, что не смог настроить работу PyDev консоли с IPython. Без IPython всё работает ОК. Ключ --plain в составе argv не сработал. Конечно, IPython рулез, но имхо, PyCrust поудобнее будет. _Имхо_.

Итак, есть PyDev, есть его консоль. Как сделать так, чтобы она загружала shell Django со всеми модельками ? Пошаговая инструкция:

1) Забираем django-command-extensions, копируем файл

shell_plus.py
в
django/core/management/commands
2) Window->Preferences->Pydev->Interactive Console->Initial interpreter commands.
Вводим следующее одной строкой (здесь с переносами для красоты):
import os;f=open(os.path.expanduser('~')+"/"+".pyconsole_path","r");
project_path=f.readline();f.close();import sys;sys.path.append(project_path);
import settings;from django.core.management import execute_manager; execute_manager(settings,['','shell_plus'])
3) текст этой незамысловатой программки сохраняем под каким-нибудь именем в домашний каталог:
#!/usr/bin/python
import sys
import os.path

def main():
if len(sys.argv) < 2:
sys.exit(1)
f= open(os.path.expanduser('~') + "/" + ".pyconsole_path", "w")
f.write(sys.argv[1])

if __name__ == "__main__":
main()
chmod само собой, далее, в Eclipse: Run->External Tools->Open external tools dialog, прописывается какое-нибудь название для программки, путь к ней, и в Arguments пишется:
${workspace_loc}${project_path}
Что получается в результате ? Строка инициализации PyDev читает из файла ~/.pyconsole_path путь к каталогу проекта, который попадает туда после запуска программки. Добавляет этот путь с PYTHON_PATH, считывается файл settings и запускается менеджер с параметром shell_plus, в результате - шелл с загруженными моделями в Eclipse.

Т.е. пользоваться так - сначала запустить программку, которая в External Tools, потом запускать консоль. Программку нужно запускать, когда в Eclipse меняется рабочий проект.

Есть один косяк - после запуска шелла приходится один раз нажимать Enter. Это связано с тем, как интерпретатор обрабатывает код, размещённый в одну строку. Если знаете, как побороть, пишите !