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

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

Send message

Загрузка нескольких файлов в Django — Multifile upload Django SWFUploader

Reading time9 min
Views7.8K
Django предоставляет отличные средства для быстрого построения back-end без лишних телодвижений. Однако создание на его основе галлереи связано с множеством ручной работы по загрузке каждого файла в отдельности.

Решений у этой проблемы несколько:
  1. загрузка архива и его распаковка на сервере,
  2. использование специального поля,
  3. имитация множественных post-запросов.

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

Задумка проста, модифицируем стандартный интерфейс добавления, так что бы перехватывать событие сохранения объекта. Заполненные поля будем использовать в качестве шаблона для создания множества объектов для выбранных файлов.

Итак выполним следующие действия.

все 8 шагов

Code Like a Pythonista: Idiomatic Python (part0)

Reading time12 min
Views29K
Kaa, the Python
От переводчика:

Я только начал изучать Python. С самого первого знакомства язык порадовал симпатичными конструкциями и синтаксически-гарантированной удобностью к чтению и пониманию кода.
В процессе освоения, при написании своего кода, бывает, сомневаюсь в правильности выбранных способов с точки зрения Python-way ( PEP 8 — Style Guide for Python Code, если угодно). Для вникания в идеологию программирования, в Python-сообществе кроме исчерпывающей документации, ко всеобщей радости, накоплено уже немало вспомогательных материалов, таких как статья Python Tips, Tricks, and Hacks, перевод которой недавно появился на Хабре
Мне понравилась статья Дэвида Гуджера «Пиши код, как настоящий Питонист: идиоматика Python» (David Goodger «Code Like a Pythonista: Idiomatic Python»). Для лучшего её усвоения решил оформить (в силу умения) полноценный перевод, потом показалось здравой идеей поделиться с Хабром.
Пока работал над переводом, пришло понимание, что статья существенно больше, чем показалась при прочтении ее в оригинале, поэтому постить буду частями, чтобы не выпасть из формата Хабра-статьи.
Продолжение и окончание перевода.

are you ready?

Деревья в админке django

Reading time2 min
Views12K
Редактировать модели, представляющие собой деревья в админке django очень неудобно и ненаглядно. Сразу возникло желание выводить вместо списка объектов дерево, для этого можно использовать замечательную библиотеку jstree.
Чтобы эффективно работать с деревьями в django существует mptt, которая добавляет в модель поля для эффективной выборки и методы для этого, а также шаблонные теги для вывода деревьев и т.п.
Если вы не используете mptt, у вас есть просто ссылка на parent — jstree можно подключить к с помощью одного javascript, про это — отдельная статья.
Далее про модели, использующие mptt.
Читать дальше →

Генератор текста на основе триграмм (python)

Reading time10 min
Views38K
В данной статье описывается как сгенерировать псевдотекст на основе триграммной модели. Полученный текст вряд ли возможно где-либо использовать, тем не менее это неплохая иллюстрация использования статистических методов обработки естественного языка. Пример работы генератора можно посмотреть здесь.

Сухая теория


И так, наша задача сгенерировать текст. Это значит, нам нужно взять слова и выстроить их в определенном порядке. Как определить этот порядок? Мы можем пойти следующим образом: построить фразы, наиболее вероятные для русского языка. Но что значит вероятность фразы языка? С точки зрения здравого смысла это бред. Тем не менее, эту вероятность можно задать формально как вероятность возникновения последовательности слов в неком корпусе (наборе текстов).
Читать дальше →

Как обойти URL-фильтры с помощью математики

Reading time1 min
Views5.2K
Может быть для кого-то станет открытием, но современные браузеры могут воспринимать URL не только в десятичной системе, но также в 8-ричной и 16-ричной, и даже единым 32-битным числом. То есть URL типа 66.102.13.19 можно представить несколькими разными способами.

0x42.0x66.0x0d.0x63
0x42660d63
1113984355
00000102.00000146.00000015.00000143

Щёлкаете по любому из вариантов — и попадаете на google.com.
Читать дальше →

А вы довольны памятью своей Linux системы?

Reading time3 min
Views13K

Ни для кого не секрет, что в Unix системах вся информация предоставляется в виде файлов.
В Linux есть файл /proc/kcore, который является «алиасом» на физическую память системы.
Мануалы говорят, что полная длина этого файла — это размер физической памяти (RAM) плюс 4KB, но повертев этот файл на разных системах я пришел к выводу, что размер файла равен размеру RAM + SWAP.
Аналогично этому файлу можно использовать устройства /dev/mem или /dev/kmem, но взаимодействие с ними в данном топике я не буду рассматривать.
Читать дальше →

Nmap. Начало использования

Reading time5 min
Views434K
image
Вы когда-нибудь интересовались откуда атакующий знает какие порты открыты в системе? Или как узнать, какие приложения запущены на сервере, не спрашивая об этом администратора? Вы можете сделать все это и даже больше вместе с небольшим инструментом под названием Nmap.

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

Привет из свободного от libc мира! (Часть 1)

Reading time5 min
Views30K
В качестве упражнения я хочу написать программу на С. Достаточно простую для того, чтобы дизассемблировать ее и объяснить весь код самой себе.

Звучит несложно, правильно?

У читателя предполагается наличие опыта компиляции программ и работы в Линуксе. Небольшое умение читать ассемблерный код тоже пригодится.
Читать дальше →

Вышел PyPy 1.2 и ускорил Python в разы!

Reading time2 min
Views14K
Вышел PyPy 1.2. Основное отличие — наличие JIT компилятора.
Чтобы долго не объяснять что это и зачем — простой тест:

cnt = 10 * 1000 * 1000
for _ in xrange(cnt): 
    i = i + 1


5.8млн операций сложения в секунду на обычном СPython 2.6 (python test.py)
42.5млн операций в секунду на PyPy 1.2 (pypy test.py)
WinXP SP3, Core2Duo.

Да, в 7 раз быстрее он тест сделал! И это не только на синтетическом тесте: «django» в 3 раза быстрее, «n-body» в 7 раз быстрее… Я не знаю что такое тест «richards», но он теперь вообще в почти 12 раз быстрее. Смотрите результаты сами.

Читать и качать (из раздела "«JIT compiler» version"). 64-bit версии пока нет. А unladen-swallow нервно курит... Под катом еще несколько невероятностей (stackless, «песочница для python кода»)…
Читать дальше →

Введение в pygtk/gtkbuilder: пишем калькулятор

Reading time3 min
Views7K
Разберем создание интерфейса на pygtk на примере самого примитивного калькулятора. Много картинок, немного кода.
gtkbuilder наиболее прогрессивный формат описания gtk интерфейса в xml,
если вы ранее использовали libglade, вы можете сконфертировать .glade файл в новый формат командой libglade-convert
Читать дальше →

Развертывание сайта на Джанго, используя FastCGI

Reading time9 min
Views16K

От переводчика


Данную статью я прочитал на Django Advent приуроченному к уже скорому выходу Django 1.2 и она показалось мне настолько интересной, что я решил ее перевести. Далее текст статьи.

Когда разрабатываешь сайт на Джанго, так легко просто открыть консоль и напечатать:

python manage.py runserver

С этой простой командой управления ваши медиа файлы админки сайта поддерживаются правильным образом, PYTHONPATH правильно настроен и включает корневую папку нашего проекта, а так же запущен автоматически перегружающийся веб-сервер на указанном нами порту (от переводчика: по умолчанию порт 8000). Так просто!

Не удивительно, что люди так разочаровываются, когда приходит время положить их сайт на боевой сервер: существует так много шагов в этом процессе и поэтому сложно все их выучить и сделать все правильно. Неудивительно, что вся эта сложность приводит к тому, что написано много статей о развертывании веб-сайта на Джанго. Но почти все из этих статей фокусируются на развертывании сайта используя Apache и mod_wsgi или mod_python.

Однако иногда Apache не идеальное решение. Может быть ваш VPS имеет только 256 МБ памяти, а может быть вы хотите избежать сложности настройки Apache при установке. Или может быть вам просто не нравиться Apache. По любой из этих причин мы можем обратить свое внимание на FastCGI.
Читать дальше →

Безопасная авторизация с передачей хешированного пароля

Reading time4 min
Views30K
При разработке одного проекта, появилась задача осуществить защиту в случае просмотра трафика, и просмотра исходника (могут узнать хеш пароля) злоумышленниками. Имея доступ ко всем данным, никто не должен авторизоваться на сервере, не зная исходный пароль. Варианты подмены IP адреса, получение пароля непосредственно в момент ввода (keylog), или брутфорс исключаем, это уже не забота веб сайта.

Пароль по сети передаваться не будет, поэтому используется хеширование прямо в браузере, для этого использую небольшую библиотеку JavaScript SHA-1. Почему SHA-1, а не, допустим, MD5? Считается, что SHA-1 немного надежнее, да и сама JavaScript библиотека меньше, чем аналогичная (на том же сайте) для MD5.
Читать дальше →

DIY SSH/SUDO Monitoring script

Reading time2 min
Views2.3K
Итак, родилась у меня как-то давным давно идея сделать свой собственный мониторинг с б/ж и ш.

Необходимо было мониторить успешные входы по ssh(и использование sudo) и сообщать мне об этом. Для оповещений был выбран мессенджер centerim (в дебиан и подобных пакет называется centericq-utf8). Так же понадобится пакет screen.
aptitude install screen centericq-utf8
Читать дальше →

Пишем спецификации. Часть 1. Инструменты — начинаем с простого

Reading time3 min
Views27K
Итак, наконец-то мы решили начать писать спецификации. Поскольку сам процесс для нас новый, пускай хотя бы инструменты будут привычными.
Что мы хотим от инструмента? Пожалуй, все требования сводятся к одному слову — удобство. Ведь нужно иметь очень веские причины, чтобы заниматься чем-то, если это делать неудобно. А ведь нам хочется, чтобы наши коллеги получали удовольствие от написания спецификаций. Как, например, от программирования.
Читать дальше →

Сборка и запуск HipHop-PHP

Reading time5 min
Views18K

Почти три недели назад был анонсирован новый проект от Facebook. Он называется HipHop-PHP.
Для широкой публики исходные коды стали доступны лишь сутки назад.

HipHop был создан для улучшения производительности Facebook. Он преобразует PHP код в C++ код и комплирует его с помощью g++. HipHop доступен под opensource лицензией.

В данной статье описан процесс сборки HipHop из исходных кодов и его использование.

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

10+ удобных онлайн-редакторов для программистов

Reading time3 min
Views155K
Как у разработчика, очевидно, что ваш основной рабочий инструмент, который позволит вам быстро идею превратить в код: текстовый редактор. Время идёт, и теперь нам доступно множество онлайновых текстовых редакторов, которые могут помочь вам создавать свой код с любого компьютера, имеющего доступ в интернет. В этой статье рассмотрим более 10 таких редакторов.

Amy Editor


Созданый в 2007 Петром Кронторадом (Petr Krontorad), Amy Editor продвинутый редактор с интерфейсом в стиле Mac. Amy Editor имеет в наличие кучу полезных опций, такие как нумерация строк, подсветка синтаксиса, сниппеты для более чем 20 языков, совместное использование и прочее.
Ami Editor
» http://www.amyeditor.com

Под катом ещё 11

Information

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