Ускоряем Django: View на С

Иногда требуются ресурсоемкие вычисления, и узким местом становится именно питон. Тогда на помощь приходит код написанный на C/С++
К счастью питон-модули пишутся довольно просто, и документация с примерами есть на официальном сайте. Никакой америки я сейчас не открою, и если вы когда-нибудь сталкивались с написанием модуля для питона — далее можно не читать — все довольно примитивно.

Читать далее

Django: POST

Тут все предельно просто, параметры POST-запроса парсятся и услужливо складываются в словарь POST объекта request, который всегда передается первым параметром в любой view.
Пример.
Форма

<form method="POST" action="/hello">
<label>Name:</label><input type="text" name="name" />
<input type="submit" /> 
</form>

view обрабатывающий URL /hello:

@csrf_exempt # глушилка защиты CSRF, об этом ниже
def hello(request):
text = ""
 if "name" in request.POST: 
  text = u"Параметр POST передан: привет %s" % request.POST['name']
 else:
  text = u"Параметр POST не передан"
 return HttpResponse(text)

Читать далее

Триколор HD и GS-8306

Плюсов (кроме HD, которое все же работает) нет.
Недостатки в огромных количествах:

  • Реклама при переключении между каналами, отключить нельзя. Страшная, стыдно перед телевизором, за то, что заставляю его показывать это. Про себя молчу.
  • Светодиод в режиме ожидания ночью освещает комнату лучше, чем солнце днем. Можно было бы книжки читать, если бы он при этом еще не мерцал.
  • Смотреть можно только триколор, ручного поиска каналов нет. А еще «ресивером» называют.
  • Зависает. Помогает только выключить-подождать-включить из розетки.
  • Тормозит. Регулировка громкости не сразу отзывается. Про остальное молчу
  • Функционал на нуле. Даже каналы по собственым предпочтениям выстроить нельзя. («Избранное» после обновления списка каналов обнуляется)
  • И самое главное: через месяц редкого использования отгорел HDMI. Теперь и HD нет. Причем не только у меня.

За 10к можно было бы купить приличный ресивер, Dr.hd f15 с DRE модулем, например.
Это самая глупая трата денег в моей жизни. Даже когда кошелек (с порядком большей суммой) потерял — сожалел много меньше.

Django. Передача GET-параметров

В продолжении Личное: Django. От простого

Научим приложение main здороваться с конкретным человеком. Для этого нужно в представление сообщить имя этого человека: модифицируем наше представление:

def hello(Response, name='World'):
 return HttpResponse("Hello %s!" %name)

Теперь функция представления принимает один необязательный аргумент name
Добавим привязку в urls.py

url(r'^(\w+)$', 'main.views.hello'),

Подробнее с регулярными выражениями можно познакомиться в документации на Python http://docs.python.org/2/library/re.html

В случае совпадения URL с данным регулярным выражением, Django вытащит группу указанную в скобках \w+ в качестве второго параметра функции представления: например запрос

http://127.0.0.1:8000/User
приведет к вызову

hello(Request,"User")

И страничка поздоровается c User:

Hello User!

Django. От простого

В продолжении Django. Структура проекта.

Итак проект создан — и уже работает, можно запустить development сервер и посмотреть, что получилось:

$ ./manage.py runserver
Validating models...

0 errors found
Django version 1.4.3, using settings 'first.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Здесь видно что сервер запустился на loopback интерфейсе на порту 8000. Использование loopback-интерфейса по-умолчанию кроет в себе некий смысл:
development-сервер можно (и нужно) использовать только для разработки проекта.
Читать далее

Django. Структура проекта.

Все нижеописанное отностится к версии django-1.4, в 1.3 и ниже есть некоторые отличия.

Основная причина недоумения и непонимания людей всю жизнь видевших только PHP фреймворки в как раз в структуре проекта и принципах работы фреймворка Django. Я надеюсь после прочтения туман рассеется и ориентироваться станет много проще.
Читать далее

Установка Python + Django под Windows

Писалось для того, кто не может поставить питон под Windows, отсюда и

Минимум, что потребуется — это сам python и django. Python будем использовать 2.7, а django 1.4.3 (последняя стабильная на данный момент), впрочем не думаю, что установка других версий будет в корне другая.

Итак python: тут все просто — идем на python.org/getit и скачиваем Python 2.7.X Windows Installer (или X86-64 если установлена x64 система)
Читать далее

wvPDF и русский язык

Для полного щастья поставить пакеты texlive (не только -base), texlive-lang-cyrillic
и подредактировать файл
/usr/share/wv/wvLaTeX.xml
изменив в нем

\usepackage[latin1]{inputenc}

на

\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

После чего конвертирование начинает работать. Но адекватности ожидать все равно не приходится

SPA2102 FAX

Звонки ходят отлично, уже который год. Решил доковырять факс (не пользуюсь в принципе, но ведь надо чтобы работало)
Пробую — ReceiveFax на астериске через Linksys spa2102 работает отлично, а вот обратно (SendFax) не идет.
в логах ошибок нет, есть вот такое:
NOTICE[3972]: chan_sip.c:9188 process_sdp: No compatible codecs, not accepting this offer!
Причем, на тот же Zoiper факсы отправляются.
Читать далее