пятница, 25 января 2013 г.

Программное объединение ячеек в Excel на C#

В задачах выгрузки данных в Excel часто бывает необходимо объединять диапазоны ячеек. Как это сделать показано ниже:

// Выделяем диапазон ячеек от A1 до A10         
Excel.Range _excelCells = (Excel.Range)_excelWorkSheet.get_Range("A1", "A10").Cells;

// Производим объединение
_excelCells.Merge(Type.Missing);

где _excelWorkSheet — лист Excel, типа Excel.Worksheet.

вторник, 22 января 2013 г.

HttpResponseRedirect и именованный url в представлениях django

Чтобы в представлении использовать url по имени, которое задано в файле urls.py необходимо использовать функцию reverse, как показано ниже:

from django.core.urlresolvers import reverse

def view_name(request):
    ...
    return HttpResponseRedirect(reverse('url_name', args=[arg_name]))

Выполнение sql-скрипта из файла

Если необходимо выполнить много команд, то лучший способ — сохранить команды в файле, а затем выполнить:

mysql -u user_name -p db_name < file.sql

где user_name — пользователь СУБД mysql, db_name — база данных, к которой необходимо применить операции из файла file.sql.

понедельник, 21 января 2013 г.

Подготовка рабочей станции в Debian 6 к web-разработке на Django

Как подготовить базовую рабочую станцию на Debian, я рассказывал в статье. Ниже я описываю подготовку рабочей станции к началу web-разработке.

Устанавливаю и настраиваю СУБД:

  • В начале устанавливаю сервер mysql:

    # aptitude install mysql-server

    В ходе установки будет необходимо ввести пароль root'a.

  • После установки сервера mysql необходимо отредактировать файл my.cnf, для того, чтобы не было проблем с кодировками:

    # gedit /etc/mysql/my.cnf

    В секцию [mysql] добавляю:

    default-character-set=utf8

    В секцию [mysqld] добавляю:

    character_set_server = utf8
    collation_server = utf8_general_ci
  • Необходимо перезагрузить компьютер:

    # reboot

  • Подключаюсь к mysql под root'ом:

    mysql -u root -p

    Проверяю, что кодировка MySql правильная:

    mysql> show variables like 'char%';

    Должны получить следующий результат:

    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | utf8                       |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | utf8                       |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.01 sec)
    

Ставим пакеты, необходимые для работы:

  • Система контроля версий Mercurial:

    # aptitude install mercurial

  • Среда для разработки Eclipse:

    # aptitude install eclipse

Установка основных необходимых пакетов завершена. Можно перезагрузиться, а затем установить различные «примочки» для Eclipse:

  • PyDev for Eclipse:

    Help — Install New Software — Add — Location: http://pydev.org/updates. Примочка позволит использовать Python в Eclipse.

  • Mercurial for Eclipse:

    Help — Install New Software — Add — Location: http://cbes.javaforge.com/update. Примочка позволит использовать систему контроля версий Mercurial в Eclipse. Внимание! Необходимо ставить не последнюю версию, а ту, которая будет совместима с текущей версией Mercurial.

  • Web Page Editor:

    Help — Install New Software — Add — Location: http://download.eclipse.org/releases/galileo/. Где galileo — название версии Eclipse. Примочка позволит создавать и редактировать web-документы в Eclipse.

Различные настройки Eclipse. Почему они по умолчанию не установлены — совершенно не понятно.

  • Убираю раздражающие подчёркивания:

    Window — Preferences — General — Editors — Text Editors — Spelling — Enable spell checking — убираю галочку.

  • Показываю Project Explorer, по умолчанию он почему-то скрыт:

    Windows — Show View — Other — General — Project Explorer.

Необходимо поставить песочницу virtualenv, и уже в ней ставить Django и необходимые примочки.

  • Для полноценной работы virtualenv необходимо поставить пакеты:

    # apt-get install python-setuptools python-dev build-essential

  • Виртуальное окружение ставлю именно через easy_install:

    # easy_install -U virtualenv

  • Создаю папку с проектом (/home/user_name/workspace/project_name/), а в ней — рабочее окружение:

    $ virtualenv --distribute env

  • Активирую виртуальное окружение:

    ~/workspace/project_name/env/bin$ . activate

  • Ставлю ещё одну библиотеку:

    # apt-get install libmysqlclient-dev

  • Внутри песочницы ставлю последнюю версию фреймворка Django:

    $ pip install Django

  • Библиотека для работы с MySQL:

    $ pip install MySQL-python

  • Приложение South, облегчающее работу с базой данных. Подробности использования.

    $ pip install south

  • Приложение для регистрации пользователей:

    $ pip install django-registration

четверг, 10 января 2013 г.

Формат даты в шаблоне Django

По умолчанию дата в шаблоне django отображается в формате: 3 января 2013 г.

Для вывода значения даты в формате DD.MM.YYYY необходимо набрать:

{{ value|date:"d.m.Y" }}

где: value — выводимое значение даты, а "d.m.Y" — формат даты.

Фильтрация объектов в модели Django по годам

У нас есть модель, которая содержит поле типа «дата». Для выбора всех записей, относящихся к определенному году, необходимо выполнить следующую команду:

list_value = model_name.objects.filter(field_date__year = year)

где: list_value — список для хранения результатов выборки, model_name — модель, данные которой нам необходимы, field_date — поле модели, типа «дата», year — переменная, хранящая год, к примеру 2013.