• Есть ли способ не жестко прописывать пути к темплейтам в django?

    un1t
    @un1t
    По умолчанию Джанга ищет на уровне приложений, а потом в директориях указанных в TEMPLATE_DIRS.
    Если вы только ничего не делали с TEMPLATE_LOADERS.
    Ответ написан
    Комментировать
  • Как передать из python скрипта json для ajax запроса?

    un1t
    @un1t
    Без фреймоврков? Это не прикол?
    Я вижу два варианта,
    1) самому обрабатывать WSGI вроде это не сильно сложно, но понадобиться еще например uwsgi и nginx. Вобще кажется не очень удобно убедет с этим возится.
    2) написать свой http сервер. Например отнаследоваться от SimpleHTTPServer , вот пример.

    Что касается БД, то впринципе без разницы возьми одну из этих, какую лучше знаешь MySQL / Postgres / MongoDB. Хотя если упоминается слово "таблицы" явно намек на реляционную, так что монгу вычеркиваем.

    Для фильтров просто индексы нормально подобрать и все.
    Ответ написан
  • Полезные Django apps?

    un1t
    @un1t
    django-debug-toolbar
    django-cleanup
    django-resized
    django-easyasset
    sorl-thumbnail
    django-mptt
    django-nose
    django-rq
    django-celery
    django-admin-tools
    django-pager
    python-social-auth
    Ответ написан
    Комментировать
  • Как понимать асинхронность в Tornado?

    un1t
    @un1t
    У вас в коде синхронный вызов time.sleep он блочит процесс.

    Асинхронный sleep выглядит примерно так
    def delay(self, seconds):
        return gen.Task(ioloop.IOLoop.instance().add_timeout, time.time() + seconds)


    Пример использования
    @gen.coroutine
    def foo(self):
        yield self.delay(5)
    Ответ написан
    1 комментарий
  • Что написать в качестве примеров кода?

    un1t
    @un1t
    Вот ты на Джанге программируешь. Наверняка встерчаешься с какими-то моментами, которые приходится руками писать и копировать из проекта в проект. Воьзми этот код или эту идею и сделай отдельное приложения для Джанги. Вот есть например sorl.thumbnail, вроде отличная библиотека, по крайней мере была. В потом они намудрили там с бакендами и хранилищами, добавили универсальности, и сейчас на ~30 превьюшек генерируется ~170 запросов к базе. Я как это увидел, выпилил ее нафиг из проекта и написал свою ресайзилку изображений. Правда чтобы ее выложить надо еще много усилий приложить, я пока не готов. Ну или поправь там эту логику и предложи пулл-реквест или просто свой форк сделай с нормальной логикой.
    Или вот другая штука.
    Сейчас популярна MongoDB. В Джанге для работы с деревьями есть mptt, но она работает с реляционными базами. А вот для Монги такой библиотеки я пока не видел. В деревья в Монге хранить тоже приходиться. Пока какие-то кастомные решения использую. Был бы рад если бы появилась вменяемая библиотека.
    Ответ написан
    Комментировать
  • Как реализовать XOR шифрование?

    un1t
    @un1t
    Такой тип шифрования есть в pycrypto

    from Crypto.Cipher import XOR
    key = '123'
    cipher = XOR.new(key)
    text = 'plaintext'
    cipher.encrypt(text)
    Ответ написан
  • Какие фреймворки (а может быть даже одного хватит) выбрать для Web-сервиса на Python в котором будет REST и MongoDB?

    un1t
    @un1t
    Рекомендую Django как фреймворк в котором есть все и еще дофига чего. Можно сказать промышленный стандарт. Я использую pymongo, но возможно стоит посмотреть в сторону какого-нибудь ODM.
    Рекомендую Tornado как простой асинхроный и прикольный. Если хочется побаловаться с асинхронностью. Хотя он менее популярный и библиотек много меньше.
    Также можно посмотреть Flask он простой и минималистичный, было интересно, но в итоге я от него отказался в пользу Джанги, т.к. все время приходилось писать велосипеды.
    Монга прикольная штука, но и реляционные базы достаточно удобны и под них больше инструментов. Часто использую вместе.
    Ответ написан
    Комментировать
  • Можно ли реализовать асинхронность частично?

    un1t
    @un1t
    С Джангой такой трюк врядли получиться. Попробуй Tornado, Кешировние в условиях асинхронности работает, но там обращаться с кешем конечно посложнее чем в синхронном подходе. Допустим нам надо сделать выборку из базы, отрендерить html и закешировать его. В синхронном подходе все просто.
    1. Делаем запрос к базе
    2. Рендерим html
    3. Засовываем в кеш
    4. Выдаем ответ

    приходит вторй запрос
    1. проверяем кеш
    2. отдаем ответ

    В асинхронном будет так
    1. Делаем запрос к базе
    2. И тут приходит второй запрос
    Кеш мы еще отдать не можем, т.к. мы еще даже не получили ответа от базы. И второй раз сделать запрос мы тоже не можем, потому, что при большом количестве таких запросов наша база умерт.
    В node.js я например делаю так, при первом запросе создаю promise кэша. Кода приходит кторой запрос, возвращаю этот promise. И когда отработает запрос к БД и отрендериться html отдам оба ответа. В терминах Торнады не знаю как это будет, т.к. мало с ней работал.
    Ответ написан
    Комментировать
  • Какую версию python (2.7 или 3.4) выбрать новичку для обучения?

    un1t
    @un1t
    Для новичка в принципе без разницы. Но для реальных проектов я бы рекомендовал 2.7. Большинство библиотек написано именно под него. На третий питон пока далеко не все перешли, и перспективы перехода на него туманны. Спросил у своих знакомых питонистов, пока 4 к 1 в пользу 2го питона.

    UPDATE: с момента написания этого комментария я уже перешел на 3.4, что и всем рекомендую.
    Ответ написан
    Комментировать
  • Востребован ли в России и СНГ фреймворк Торнадо?

    un1t
    @un1t
    Пирумиду не знаю, но ты зря так про Джангу. Джанга просто офигительная, и чем больше на ней програмишь, тем больше нравится. Почему не гибкая, в чем это заключается? Джанга настолько гибкая, что я даже не знаю как может быть еще лучше. Там нет какой-то зафиксированной структуры и многих соглашений как в других фреймворках. Используешь что хочешь, любую часть можно переопределить.
    Под Торнаду насколько я вижу библиотек в сотни раз меньше чем под Джангу. На просторах рунета используется, как я понимаю обычно командами которые пишут например на той же Джанге, для специфических задач требующих асинхронного подхода. Работы на Торнаде конечно в разы меньше.
    И мне не очень понятна эта любовь а асинхронщине. Асинхронное программирование, ничем не лучше синхронного, это отдельный инструмент для своих задач. В мире веб разработки асинхронщина реально нужна не так уж часто.
    Выучить его не очень сложно, т.к. он довольно минималистичный. Но с другой стороны и документации по нему куда меньше чем на Джангу.
    Ответ написан
    Комментировать
  • На чём основывается SEO?

    un1t
    @un1t
    SEO основывается на некоторых базовых вещах, опыте, изучении конкурентов и неопределенности.
    Читать комменты выше про "сайт для людей" или "уникальный контент" просто смешно. Это из той же серии мифов, что "хороший продукт сам себя продает".
    Правила игры постоянно меняются.
    Как продвинуть сайт в топ. Если речь идет про НЧ, то просто создаешь страницу и все - ты в топе. Если про СЧ и ВЧ, там огромная конкуренция, магичесими фишками ты туда не попадешь. Кто больше денег ввалил тот и в топе и то не всегда.
    Ответ написан
    Комментировать
  • Sphinx vs ElasticSearch: что выбрать?

    un1t
    @un1t
    Примущества сфинкса - быстрая скорость индексации. Если надо быстро проиндексировать 10 млн документов, это плюс. Сфинкс также намного менее требователен к ресурсам. Это тоже плюс.
    Преимущество эластиксерча - очень удобное и богатое API.
    Ответ написан
    Комментировать
  • Стоит ли использовать Sphinx, ElasticSearch или схожую технологию для организации поиска в маленьком проекте?

    un1t
    @un1t
    Замечу что elasticsearch требует для комфортной работы 2ГБ оперативки. sphinx в этом плане гораздо экономичнее. Однако с точки зрения удобства и возможностей elasticsearch сильно лучше.
    Ответ написан
  • Как правильно приготовить питоном параллельную индексацию в ElasticSearch?

    un1t
    @un1t
    100 тыс документов это совсем не много.
    Я до 250 тыс индексировал, индексация занимает всего несколько минут на слабеньком VDS. (про геоданные не в курсе)
    Какой у вас сердний размер документа? Вы все поля индексируете?
    Я при создании индекса указываю
    es.create_index(index, {
                    'index': {
                        'refresh_interval': -1,
                    }
                })

    Отправляю документы через bulk_index по 10 тыс за раз, в конце запускаю обновление индекса
    es.refresh(index)
    Ответ написан
  • Как правильно создавать django-модуль как пакет pypi?

    un1t
    @un1t
    Я использую TDD, код можно тестить и отлаживать без отдельного джанго-проекта.
    Вот например как тут
    https://github.com/un1t/django-templatetags
    смотри файл runtests.py
    Ответ написан
    Комментировать
  • Актуально ли использовать noSQL в Django?

    un1t
    @un1t
    Зачастую используются какие-то NoSQL параллельно с реляционными БД.
    Например то что нужно редактировать через админку - в MySQL/Postgres, то что не нужно, но требует например быстрой вставки в больших количествах или просто неструктурированные данные - MongoDB. Ну и Redis как кэш и брокер очередей.
    Ответ написан
    Комментировать
  • Python-social-auth и Одноклассники - "Указан некорректный параметр client_id.". Почему не работает?

    un1t
    @un1t Автор вопроса
    Дело оказалось в настройках, в KEY надо было указать ID приложения, а в PUBLIC_NAME - публичный ключ.

    SOCIAL_AUTH_ODNOKLASSNIKI_OAUTH2_KEY = '123.'
    SOCIAL_AUTH_ODNOKLASSNIKI_OAUTH2_SECRET = 'B36A06...'
    SOCIAL_AUTH_ODNOKLASSNIKI_OAUTH2_PUBLIC_NAME = 'CBAKNK..'


    Вот такой вот бардак с именованием.
    Ответ написан
    Комментировать
  • Для чего вы применяете Redis в своих проектах?

    un1t
    @un1t
    Брокер очередей.
    Ответ написан
    Комментировать
  • Что изучить python web-разработчику?

    un1t
    @un1t
    Django + MySQL отличная связка. Нужно все-таки понять чего ты хочешь, куда расти и тогда давать советы. А вобще конечно посмотри MongoDB, еще можешь посмотреть а асинхронное программирование, например Tornado. Redis в качестве БД особо смысла не вижу, в качестве брокера очередей вполне, соотвественно посмотри celery или django-rq.
    Ответ написан
    Комментировать
  • Удобный парсер html на python?

    un1t
    @un1t
    ElementTree умеет xpath это очень удобно, обычно использую lxml
    Ответ написан
    Комментировать