django

Posted by spirit

Коли виникають великі навантаження на базу данних то ставлять більший сервер, потім ставлять два крутих сервера, далі може ще трішки їх додають, але чим далі - тим все складніше, бо маштабування в звичайних базах данних майже відсутнє. І сьогодні хочу розповісти про key-value бази даних і про приклад їх використання на прикладі блогу зробленого в Django і в якості бази даних використовую Redis. Але зараз вже 6-та година ранку і писати мені лінь, тому дальше буде скрінкаст:

Django and Redis from presidentua on Vimeo.

А знявши скрінкаст побачив, що трішки ранковий голос мене підкачав та й занадто тихо говорю, тому потрібно б розповісти і словами.

Отдже Redis це представник key-value бази даних, тобто такої бази де немає sql, а є лише дві команди set і get, тобто по суті звичайний масив, але через таку простоту база даних працює надзвичайно швидко і дуже легко маштабується і нові сервера доставляються за декілька хвилин. Хоча ці ж обмеження заставляють думати над архітектурою БД набагато більше чим зі звичайною.

Continue reading...
Posted by spirit

Сегодня продолжим знакомство с Django и наконец то рассмотрим базовый кирпич, а именно приложение(application) на примере создания приложения contact, для отсылки каких-то сообщений администрации. Причем напомню что этот цикл практический, в нем я почти не рассказываю почему, лишь говорю как, потому что я все равно не напишу лучше чем в документации: http://docs.djangoproject.com/en/dev/

Разработка каждого приложения начинается с команды:

manage.py startapp contact
Где contact - названия приложения. В результате будет создана папка contact со следующими файлами:
- models.py
- views.py
- __init___.py
Continue reading...
Posted by spirit

Сьогодні порівняємо швидкість розробки між ZF і Django на прикладі невеликого блогу. Представимо, що нам потрібно зробити блог, де були б записи, розділення на стріки і теги.

Розпочнем з ZF:

  1. Спочатку ми б створили в базі таблиці, при чому для тегів прийшлося б додаткову таблицю створювати, щоб був зв'язок багато-до-багатьох. А ще б створили таблицю для авторізації.
  2. Після цього розпочали писати б моделі, які містили б інформацію про зв'язки між таблицями.
  3. Далі пишем код для авторизації.
  4. Пишемо код форми для створення постів.
  5. Пишем код що буде формувати вивід на головній сторінці.
  6. Пишем код для перегляду постів посторінково(pagination).
  7. Пишемо код для перегляду кожного поста окремо.
  8. Пишем код для тегів, тобто їх парсинг, занесення в базу, відображення хмарки тегів.
Ви помітили, що постійно нам потрібно щось писати, робити вручну все. На ZF надзвичайно важко робити модулі, які б з легкістю можна добавляти в аплікейшн. На Django ж це все по іншому, там ми беремо готові компоненти і поєднуємо їх. А коли компонента немає, то пишемо самі, але один раз, далі будемо його з легкістю використовувати.
Але давайте подивимося, як вищеперечислені пункти ми б робили на Django
  1. Створюємо лише одну модель, де все опишем. Ніяких таблиць вручну не створюємо, додаткової таблиці не потрібно. Для поля з Тегом нам потрібно лише вказати, що це буде поле з тегом і все. Робота по створенню ції моделі займе лише декілька хвилин.
  2. ... це все зробили в пункті 1.
  3. Для авторизації використовуємо влаштований модуль, тому цей этап знову займає 0 хвилин.
  4. Для створення постів потрібно створити лише один файл з 3 строчками. 1 хв.
  5. Вивід на головній сторінці пишеться за декілька хвилин разом з сторікновістю(pagination), буде строчок 5 займати.
  6. це вже написали вище в п.5.
  7. Для окремого перегляду використовуємо стандартний views. Тому все це займає одну строчку і час 30 с.
  8. Для тегів вже все написано ;). 0 с.
Час на створення блогу хвилин 10 і це максимум(звичайно без дизайну). В найближчий час зніму окремий скрінкаст, щоб довести це.
Posted by spirit

После двух частей мы уже можем сделать простой статической сайт. И сегодня поговорим как залить все это добро на сервак и настроить его. Правда сервак настроим на легком уровне, без оптимизаций и т.д. Главное запустить, а потом уже можно допиливать по ходу

Итак, имеем SSH доступ к серверу Ubuntu 8.04. Сперва перейдем в root и обновим все пакеты

su root
apt-get update
apt-get upgrade
Continue reading...
Posted by spirit

Django Debug Toolbar very nice thing, but it has some limits the functionality. One of them is lack of EXLUDE_URL. But I fix it. And now you can add to config next thing:

DEBUG_TOOLBAR_CONFIG = {
    'EXCLUDE_URLS': (r'/admin.*',),
}

After this you must download this component from my github project - http://github.com/presidentua/gread/.

Yet I added in file debug_tollbar/middleware.py only some lines:

def _show_toolbar(self, request):
    if not settings.DEBUG:
        return False
    if request.is_ajax() and not \
        request.path.startswith(os.path.join('/', debug_toolbar.urls._PREFIX)):
        # Allow ajax requests from the debug toolbar
        return False
    if not request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
        return False
   
    #next lines I added
    if hasattr(settings, 'DEBUG_TOOLBAR_CONFIG'):
        exlude_urls = settings.DEBUG_TOOLBAR_CONFIG.get(
            'EXCLUDE_URLS', None)
        for url in exlude_urls:
            if re.match(url,request.path):
                return False
    return True

If U don't use django_toolbar, try. I think, U will like it ;)

Tags:  | 
Posted by spirit

При відладці Django і запуску влаштованого сервера - він часто видає забагато інформації, наприклад про запити до медіа файлів. А це ж нас мало цікавить, тому давайте розглянемо частину веб-сервера влаштованого, що розміщується в файлі django/core/servers/basehttp.py:

def log_message(self, format, *args):
    # Don't bother logging requests for admin images or the favicon.
    if self.path.startswith(self.admin_media_prefix) or self.path == '/favicon.ico':
        return
    sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))

Де в коментах пишиться, що не буде показувати адмінські картинки і фавікон, тож можем цей кусок модифікувати так:

def log_message(self, format, *args):
    # Don't bother logging requests for admin images or the favicon.
    if self.path.startswith(self.admin_media_prefix) or self.path == '/favicon.ico':
        return
    if self.path.startswith('/media/') or self.path.startswith('/__debug__/'):
        return
    sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))

Лише одна маленька умова, яка не універсальна і досить не красива, але ж скільки користі там!

PS: щось я взагалі помішався на Пітоні і Джанго, але ж це добре )

Posted by spirit

Узреваем красоту Django. Part 2

Вторая часть туториала о Django, где опять буду расказывать как создается полнофункциональный сайт. Это не подробнейшее руководство - за этим смотрите документацию на djangoproject.com и читайте книгу djangobook.com (на русском — djbook.ru). Это всего лишь практический туториал. И сегодня расскажу о:
  • статические файлы
  • статические страницы — flatpages
  • шаблоны
  • google_analytics
  • debug_toolbar
Continue reading...

Resume

Roman Khomenko, 1985 birth, Ukraine
mail - spirt40@gmail.com
phone - +38 067 6830728
master's degree with honors, computer science, specialization: information systems and management

In the computer area I am since 1995. And for this time I learned many interesting thing and I created so many wonderful thing. Last years I have been doing web development in Python and Django.

Skills:

Security:
This is very interesting for me. I know all method attacks on web-sites(SQL-inj, XSS, XPath-inj, LFI, RFI, CSRF and other). Often I work on audit sites. I am a member of several groups of security. Sometimes I read lection in University. I'm often consulting on this problem. Also I wrote exploits, patch and some tools what help me with audit. About security I wrote some articles for magazines.

PHP:
I know PHP 6 years. I know other technology what with it - HTML, CSS, JavaScript. I created many sites on it. And this was and simply sites, and big sites. Now I like framework. First, I was using CodeIgnation, but then I found Zend Framework. ZF is great framework, I love it. When I need original site I use Zend Framework and Jquery as JavaScript framework. When I need standard site I use Drupal - this site created on it. I created site "GRead" for usability reading book on PC. I created site "I did" when users can write what they did, then system show them statistic and other thing. I developed anti-spam and twitter module for Drupal. Also, I have developed OpenTest2 - system testing expertise to universities, which is very popular in many countries.

Python :
This language I learned about year ago and created in this time many application - bots(icq-bots for answer, when I offline. Jabber-bot for administrator, what for admin can rule server from anywhere), scaners(scaner of directory for security audit - this program find hide directory, config files, backup files and other.), games(using PyGame I created "Ladder"). Also I created program to paint fractal-picture, then I optimized code using Psyco and other method. And I created genetic-algorithm to learn play in "tic-tac-toe". Also I know Djando and used it for to write few sites. I think it's great framework. And it's better then ZF. I wrote many article in magazines about Python.

 
 
 

Contacts

Роман Хоменко aka PresidentUA
mail/jabber: spirt40@gmail.com

Creative Commons License

GloriaShoes - у нас новая коллекция обуви!. спортивный инвентарь гантели, спортивный инвентарь, спортивный инвентарь для дома. Туры в Иорданию. Консалтинговая компания - Quality Consulting Group http://qcg.com.ua