Search
Write a publication
Pull to refresh
40
0
Вадим @n3m0

Пользователь

Send message

django-voting сортировка по рейтингу

Reading time2 min
Views2.2K
Думаю, многие знакомы с этим расширением, но всё же:
django-voting позволяет ввести оценку любой сущности по digg-принципу (+1/-1) максимум за 30 минут (с учётом включения асинхронных запросов JS).
Сайт проекта: django-voting.googlecode.com
Но есть одна плохая особенность: отсутствие возможности сортировать сущности по рейтингу стандартными средствами ORM. Далее опишу как это реализовал я.
Читать дальше →

Горячая замена кода (code hot swapping) в РНР

Reading time10 min
Views3.1K
Погода за окном просто требует чего-то горяченького, поэтому воспользовавшись возможностью что-то по исследовать в свободное время, я решил подумать — а можно ли не останавливая скрипт, подменить функцию, которая выполняется? С таким требованием я встретился чуть ранее, при разработке нашего стартапа. У нас был один из внутренних серверов, который заведовал всеми действиями между пользователями в реальном времени. Это обычный РНР-демон-роутер, который обрабатывал запросы от клиентских запросов (внутри сервера), но была одна сложность — в случае, когда я что-либо изменял в коде сервера или обработчиков отдельных команд, демон приходилось перезагружать, что означало отключение текущих клиентов и потеря информации о состоянии сервера (этот вопрос решаемый, конечно). То же самое было в случае ошибки в коде — все подключенные пользователи сразу это чувствовали на себе (хорошо, что все они такие же разработчики, а не реальные клиенты). Можно ли этого избежать?

Конечно можно, например, отказавшись от скриптов-демонов, как мы и сделали. Однако это проблему не сняло, просто переместило ее в другую плоскость. Ведь остались другие сервисы-демоны, которые также должны работать непрерывно, хоть их значимость меньше, однако перезагружать каждый раз не очень то хочется. Поэтому решил я поискать возможность на лету подключать новый код и сразу его исполнять. Минимальным кодом будет функция, но вполне возможно подключать и методы классов.
Читать дальше →

Работа с формами в Django

Level of difficultyMedium
Reading time4 min
Views39K
Формы являются одной из самых вкусных вещей в Django (после моделей, админки, url-маршрутизации и т.д.). Перед вами небольшое, но ёмкое руководство по их использованию, представляющее собой разбор 8 часто встречающихся ситуаций при программировании форм.
Читать дальше →

PyCamp Киев

Reading time1 min
Views710
image30 января мы будем рады видеть вас на конференции PyCamp Kyiv.

В конференции примут участие python-разработчики украинских и российских команд, уже полученно более 250 заявок на участие.

Ожидаются доклады хорошо известных в питоновских кругах Юрия Юревича из Омска, Александра Шигина из Москвы; также среди докладчиков Михаил Кашкин(aka xen) из Днепропетровска, Александр Бельченко из Запорожья, киевляне Александр Соловьев (aka ingspree), Андрей Светлов, Серегей Кириллов (aka rushman), Андрей Мишковский, Владимир Пузанов (aka farcaller), Владимир Кириллов (aka darkproger), Дмитрий Кожевин. Также рассказать о новой IDE для Python — PyCharm планирует Дмитрий Жемеров (aka yole) из JetBrains.

Участие в конференции платное. Регистрационный сбор (на входе) составит 50 грн. По студенческому билету (любой страны) — 20 грн.

Конференция пройдет в помещении i-klass, по адресу ул.Ивана Мазепы, 34 (прежнее название улицы — ул. Январского Восстания), Киев.
Ориентиры — Киево-Печерская Лавра, музей Великой Отечественной Войны, музей «Мистецький Арсенал».
Ближайшие станции метро — Арсенальная (красная ветка), Печерская (зеленая ветка)
Карту можно посмотреть тут: http://www.i-klass.com/rus/contacts/how

DTemplate — шаблон django проекта для ускорения разработки

Reading time3 min
Views5.2K
Доброго времени суток, уважаемый All!

Хочу представить на суд хабрасообщества проект, над которым я работал последнее время. Очень хочу получить конструктивную критику и предложения по его улучшению.

Описание проекта


DTemplate — проект с открытым исходным кодом, который дает возможность пользователям django иметь многочисленные инструменты упрощающие работу при создании нового django проекта без необходимости настраивать их каждый раз.

DTemplate создавался для собственных целей из уже существующих приложений с открытым кодом. Публикуя данный проект я хотел бы выразить огромную благодарность людям, которые предоставили возможность доступа к своим интеллектуальным трудам.
Возможности DTemplate

Межсайтовая авторизация 2

Reading time2 min
Views28K
По итогам поста, сделанного в июле 2009 и продолжительным испытаниям, мы пришли к простой и оптимальной для нас схеме межсайтовой авторизации.
Спешу поделиться с общественностью

Highcharts: Красивые, динамические чарты за 5 минут!

Reading time2 min
Views67K
image
Highcharts — библиотека для создания чартов написанная на JavaScript, позволяет легко добавлять интерактивные, анимированные графики на сайт или в веб-приложение. На данный момент чарты поддерживают большое количество диаграмм линейных, круговых, колоночных рассеивающих и многих других типов.

Чарты работают со всеми популярными браузерами, включая Safari на iPhone.
Минимальная версия для IE составляет 6+. Также браузеры поддерживающие Canvas элемент, и в некоторых случаях SVG для графического рендеринга.
Читать дальше →

Организация среды веб-разработки

Reading time4 min
Views5.9K
Продуктивность коллектива веб-студии напрямую зависит от удобства среды разработки. У нас сложилась стройная система организации работы с проектами, включающая в себя набор таких неотъемлемых компонентов, как IDE, SCM, PM-система, багтрекер и development-сервер. Этим постом я бы хотел начать цикл статей, посвященных настройке и использованию этих компонентов в нашей студии.

В первой части я расскажу о самом основном — среде разработки (о том, как мы организовали совместный доступ к проектам).

Идеи

  1. Среда разработки должна быть единой для всех сайтов.
  2. Девелоперы не должны тратить время на настройку каждый своей серверной части.
  3. Работает ли над проектом один человек или несколько — контроль версий необходим.
  4. Если рабочий каталог (IDE workspace) находится на сервере, то можно поработать и дома, не тратя время на повторную настройку окружения на домашнем десктопе или ноуте.

Концепция и реализация

WebSockets — полноценный асинхронный веб

Reading time7 min
Views347K
Пару недель назад разработчики Google Chromium опубликовали новость о поддержке технологии WebSocket. В айтишном буржунете новость произвела эффект разорвавшейся бомбы. В тот же день различные очень известные айтишники опробовали новинку и оставили восторженные отзывы в своих блогах. Моментально разработчики самых разных серверов/библиотек/фреймворков (в их числе Apache, EventMachine, Twisted, MochiWeb и т.д.) объявили о том, что поддержка ВебСокетов будет реализована в их продуктах в ближайшее время.
Что же такого интересного сулит нам технология? На мой взгляд, WebSocket — это самое кардинальное расширение протокола HTTP с его появления. Это не финтифлюшки, это сдвиг  парадигмы HTTP. Изначально синхронный протокол, построенный по модели «запрос — ответ», становится полностью асинхронным и симметричным. Теперь уже нет клиента и сервера с фиксированными ролями, а есть два равноправных участника обмена данными. Каждый работает сам по себе, и когда надо отправляет данные другому. Отправил — и пошел дальше, ничего ждать не надо. Вторая сторона ответит, когда захочет — может не сразу, а может и вообще не ответит. Протокол дает полную свободу в обмене данными, вам решать как это использовать.

Я считаю, что веб сокеты придутся ко двору, если вы разрабатываете:
— веб-приложения с интенсивным обменом данными, требовательные к скорости обмена и каналу;
— приложения, следующие стандартам;
— «долгоиграющие» веб-приложения;
— комплексные приложения со множеством различных асинхронных блоков на странице;
— кросс-доменные приложения.

Заинтриговал? Давайте посмотрим подробнее

Настраиваем Aptana Studio с нуля для работы над Django-проектами

Reading time4 min
Views25K
image

Зачем оно вообще?


    Тут должен быть текст в духе «раньше я качал Eclipse Classic, который весит 160 с лишним метров, чтобы поставить на него PyDev и только тогда… Но потом я попробовал Aptana...».

    Собственно, Aptana Studio представляет собой среду для веб-разработки, построенную на основе Eclipse. Причем это значит именно то, что значит — почти все плагины Eclipse совместимы и с Aptana, только при этом в ней нету по умолчанию всей этой универсальности и Java-наворотов своего прародителя. И да, старый добрый PyDev здесь тоже есть, а на мой взгляд это — лучшая IDE-надстройка для питона. Естественно, для написания мелких проектов куда быстрее и проще использовать Geany, но сейчас не о нем :)
Читать дальше →

Допиливаем Django-admin бензопилой. Часть II — WYSIWYG

Reading time5 min
Views10K
Итак обещанное продолжение прошлого поста. В результате мы прикрутим TinyMCE к flatpages и превратим лист/форму созданной модели с картинками в простой файловый менеджер для вставки картинок. Для этого понадобится совсем немного Javascript и единственная строчка в 'admin.py'.
Читать дальше →

Основы работы с потоками в языке Python

Reading time20 min
Views64K

Предисловие


Данную статью я затеял написать после учащающихся вопросов как на форуме так и вопросов в icq на тему многопоточности в CPython. Проблема людей, которые их задают происходит, в основном, из незнания или непонимания основных принципов работы многопоточных приложений. По крайней мере, это относится к используемой мной модели многопоточности, которая носит название Thread Pool (Пул потоков). Часто встречаемой проблемой является и другое: люди не имеют элементарных навыков работы со стандартными модулями CPython. В статья я постараюсь привести примеры такого незнания, не останавливаясь на личностях, так как это по моему скромному мнению неважно. Исходя из условий, в которых пишется эта статья, то мы немного затронем и работу через proxy серверы (не путать с SOCKS).
Читать дальше →

Допиливаем админку бензопилой. Часть I — Thumbnails

Reading time4 min
Views11K
Вставлю свои пять копеек о том, насколько классная и гибкая штука — админка Django. Многие упорно не хотят понять, что это не игрушка, а вполне себе приложение production-качества, которое просто глупо не использовать, если есть такая возможность.

И дело здесь совсем не в том, что разработчики такие молодцы, что предусмотрели так много возможностей кастомизирования, чтобы покрыть все нужды юзеров — это конечно же не совсем так. Тем не менее в распоряжении разработчика всегда есть другое мощнейшее средство кастомизации любых веб-приложений вообще. Таким средством является Javascript. Разработчики Django, прекрасно это осознавая, предоставляют нам все средства для подключения кастомного JS/CSS, что по сути, вобще снимает какие-либо ограничения на то, что мы хотим слепить из нашей админки.

Конечно в этом нет ничего военного и большинство опытных разработчиков так и делают, я лишь попытаюсь описать парочку жизненных рецептов, на основании которых можно, подключив немного фантазии, решать практически любые вопросы связанные с кастомизированием Django-админки. Если конкретнее, то заниматься будем тем, что сделаем акуратные thumbnails для наших ImageField'ов, подключим TinyMCE, и научим его вставлять картинки используя саму Django-admin в качестве файл-менеджера для выбора картинок.
Читать дальше →

Изготовление Wi-Fi антенны

Reading time2 min
Views207K
Несколько месяцев назад передо мной и моими коллегами по работе встала задача, связать точку доступа из отдалённого дома и тачку на работе сеткой, да чтобы хорошо работало и пакеты не терялись. Последовав старой поговорке «На фиг медь!», было решено соединяться воздухом. Для чего была в складчину приобретена довольна дешёвая WiFi карточка. Но вот незадача, дом стоит не впритык, хоть и не километр, но всё равно не рядом, но в прямой видимости, где-то метров 150. Связь конечно была, но всё равно процент был маленький. Полезли в инет на сайт местного магазина, посмотрели цены на антенны… тут пришла жаба :) Со словами, «Да ну на фиг, я и сам так могу» я положил начало доооолгой, но занимательной и увлекательной работе :)
подробности

Twisted в действии — memcache на python

Reading time8 min
Views7.5K

Преамбула


В связи с выходными потратил немного времени на реализацию сервера Memcache с использованием python-фреймворка Twisted. В итоге я получил быстродействие в два раза более низкое, что я не считаю очень критичным, а также возможность реализовать парочку расширений оригинального протокола. Также возможны оптимизации, которые еще улучшат быстродействие.
Протокол не был реализован полностью — есть еще моменты над которыми можно поработать, но стандартные set/get вполне работоспособны и готовы к использованию.

Средства


Для хранения кеша используем базовый класс dict. Как вы догадываетесь, реализация dict в python быстра, этот базовый тип используется в python настолько активно, что его не оставили без детальной оптимизации. Таким образом, мы автоматом имеем структуру для хранения кеша в памяти. Осталось реализовать протокол memcache, для предоставления доступа к dict другим программам.

Для реализации сервера используем Twisted. Есть множество вариаций неблокирующего IO для python на сегодня, но Twisted это уже классика, и имеет в своем арсенале достаточно средств для легкого решения подобных задач.

Читать дальше →

Безопасность при межпроектном взаимодействии

Reading time15 min
Views5.4K

Введение


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

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

Задача данной статьи — кратко описать возможные типы атак при межпроектном (т. е. сервер-сервер) взаимодействии и средства защиты от них — с тем, чтобы более вдумчиво использовать готовые протоколы и разрабатывать свои. Предварительно будут рассмотрены основы информационной безопасности, так как зачастую знания конечных разработчиков в этой области бывают несколько отрывочными.

Защита (или отсутствие защиты) от различных типов атак демонстрируется на примере протоколов популярных сегодня систем: Assist, Cyberplat, WebMoney, ChronoPay, Robokassa и PayPal (платёжные системы), а также OpenID, OpenAuth, OAuth (децентрализованная аутентификация).
Читать дальше →

Безопасный метод авторизации на PHP

Reading time9 min
Views364K
Примечание: мини-статья написана для новичков

Давайте посмотрим вокруг: форумы, интернет магазины, гостевые книги и т.д. используют регистрацию и последующую авторизацию пользователей. Можно даже сказать, что это почти необходимая функция каждого сайта (только если это не домашняя страничка Васи Пупкина или не визитная карточка, какой-нибудь небольшой компании). Сегодня я хочу поделиться со всеми новичками информацией, о том, как лучше это все реализовать.
Читать дальше →

Автодополнение функций CodeIgniter в NetBeans

Reading time2 min
Views3.1K
На волне интереса к NetBeans расскажу небольшой хинт. Я работаю в основном с CodeIgniter, и вот чего мне сильно не хватает в IDE это быстрого автодополнения для встроенных функций (библиотек, хелперов) — вроде $this→form_validation→…

Сейчас я расскажу, как это реализовать:

Читать дальше

Динамические роли и права

Reading time3 min
Views3.8K
Случилось мне давече писать динамическую систему ролей и прав для интернет-магазина.
Поскольку в интернете ничего нужного, кроме вот этой серии статей не нашел, придумал написать все сам.
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity