• Django + fastcgi + nginx как заставить работать?

    @bromzh
    Drugs-driven development
    Зачем fastcgi? Это же не пхп, возьми нормальный питоновский веб-сервер. Вот, например, с подробной инструкцией.

    UPD. Вот бенчмарки.
    Ответ написан
    Комментировать
  • Как реализовать платный портал с функциями социальной сети?

    @bromzh
    Drugs-driven development
    Можешь делать и на CMS. Когда возникнет необходимость прикрутить что-то, выходящее за рамки возможностей CMS, начнётся веселье, переписывание всего кода и т.д.
    Есть готовые опенсорсные социалочки, бери одну из них, настрой и пользуйся.
    Ответ написан
    Комментировать
  • Как ограничить время работы потока?

    @bromzh
    Drugs-driven development
    Можно запускать эти задачи асинхронно. В loop'е или экзекуторе должна быть функция запуска задачи с таймером.
    Ответ написан
  • Объясните что это за домен will.i.am?

    @bromzh
    Drugs-driven development
    Однобуквенные домены давно уже в ходу. Тот же t.co от твиттера и сотни других. Правда, почти все заняты. Есть свободные на всяких экзотических доменах. Можешь на name.com поискать, а то из российских регистраторов мало кто поддерживает их.
    Ответ написан
    Комментировать
  • Как вызвать функцию Python/Django как "триггер"?

    @bromzh
    Drugs-driven development
    Б-же, что за говнок*д.
    Почитай уже pep8, не плоди этот ужас форматирования дальше. Вдруг кому-то придётся поддерживать твоё творение?
    1) Лучше 4 символа, не 8.
    2) Ладно, имена функций можно в camelCase, но только если это нужно для совместимости. Ну допустим, что нужно. Но имена переменных? В первой функции - camelCase, в других случаях с_подчёркиванием. За что?
    3) Имена глобальных переменных лучше ПИСАТЬ_ЗАГЛАВНЫМИ. А ещё лучше вообще не использовать глобальные переменные, так как в локальной области они перекроются. Используй функции, люк. Или хотя бы классы с полями.
    4) Вместо
    def getTableName(type, realty_type):
    	if (type == "Rent" and realty_type == "Apartment"):
    		tableName = "maklers_rent_apartment"
    	if (type == "Rent" and realty_type == "House"):
    		tableName = "maklers_rent_house"
            return tableName

    Надо
    def getTableName(type, realty_type):
    	if (type == "Rent" and realty_type == "Apartment"):
    		rerurn "maklers_rent_apartment"
    	if (type == "Rent" and realty_type == "House"):
    		return = "maklers_rent_house"
            return None

    В моём варианте функция вернёт значение сразу, без создания доп. переменной и без выполнения заведомо ненужных веток (когда вариант найден). Мало того, что ты не используешь elif, что при определённых обстоятельствах принесёт тебе массу проблем, которые ты не ожидаешь, так ещё если в твоём варианте не выполнится ни одно условие, то будет ждать ещё один забавный сюрприз.
    UPD. И ещё, не рекомендуется использовать названия built-in функций и пакетов для имён переменных, методов и т.д. Например, в этой функции ты не сможешь использовать встроенную type, так как внутри функции она заменяется на локальную переменную. И прочитай про области видимости, на всякий случай.
    5) Вот эта строчка очень радует:
    soid = object.getAttribute("oid")
    myid = soid

    Зачем тут вторая переменная?
    Да и сама функция вызывается в цикле(!), при этом, в ней ты каждый раз теребишь парсер
    objects = doc.getElementsByTagName("object")

    Хотя этот код никак не меняется, и получить объекты надо строго 1 раз, а не дофига.
    UPD 2. Эта функция вообще очень странная. Ты сперва отдельно получаешь список объектов и отдельно их свойства. А потом ты ищешь эти id заново (да ещё и в цикле, ещё и каждый раз заново парсишь xml). Это полнейший идиотизм. Я не видел xml, но по логике, свойства объектов должны быть внутри объекта или как-то связаны с ним через id. Возьми нормальный парсер (а ещё лучше этот) и разбирай деревом. Ну и не стоит разделять объекты от свойств, а потом заново искать id.
    6) Зачем создавать переменную,
    sid = getId(i)

    если результат ты используешь только в одном месте?
    print ("ID: " + sid.encode('utf-8'))
    7) Забудь ты эти плюсы в строках
    print ("Деталі: " + sobject_details.encode('utf-8') + " " + sinfo.encode('utf-8'))

    Есть же удобное форматирование (когда надо что-то сложное):
    print("Детали: {0} {1}".format(sobject_details.encode('utf-8'), sinfo.encode('utf-8'))
    # или
    print("Детали: {details} {info}".format(details=sobject_details.encode('utf-8'), info=sinfo.encode('utf-8'))

    И быстрый join, когда простое форматирование:
    print(" ".join(("Детали:", sobject_details.encode('utf-8'), sinfo.encode('utf-8')))

    В общем, не пиши так больше, пожалуйста.
    8)
    propertys

    propertIEs же!

    Ну а по теме всё правильно сказали, ftp надо выкинуть и обрабатывать HTTP-запросы. Но, так как это невозможно, то:
    1) Просто запусти какой-нибудь крон и отслеживай изменения в файлах. При изменении запускай скрипт.
    2) Есть программы, которые запускаются как серверы, следят за изменением файлов в папке в реалтайме и могут отправлять всякие уведомления (в том числе и по TCP/HTTP). Можно настроить всё это на отправку HTTP-запроса на джангу. Но это создаст небольшой оверхед. Если всё на одном серваке (и фтп, и джанга), то первый вариант лучше.
    Ответ написан
    8 комментариев
  • Как улучшить код for?

    @bromzh
    Drugs-driven development
    Бери дебаггер в руки и построчно выполняй всё, ошибку скорее всего обнаружишь намного быстрее, чем чужие люди вникнут в твой код и исправят его.
    Можно обойтись низкобюджетным вариантом дебагера - выводить все значения на стандартный вывод или ещё куда-нибудь.
    Ответ написан
    Комментировать
  • Что использовать при создании ajax сервиса?

    @bromzh
    Drugs-driven development
    На клиентской стороне (именно html-страницы) лучше использовать какие-нибудь "реактивные" фреймворки: AngularJS, Knockout+mapper plugin, etc. Это избавит тебя от огромной кучи кода обработки событий всяких кнопок, от кучи кода, необходимого для обновления всех данных на странице и т.д. Просто на клиенте надо будет построить некую MVC/MVVM-архитектуру, которая будет обрабатывать данные с сервера и связывать их с различными элементами UI. Собственно, эти фреймворки для этого и сделаны.

    Ну а на мобильные платформы это никак не повлияет, АПИ останется прежним, в ход пойдут уже особенности разработки для мобильников.
    Ответ написан
    Комментировать
  • Как переписать код с PHP на Python?

    @bromzh
    Drugs-driven development
    Вот бы еще кто подсказал аналог phpDoc комментария "@property Bar1 bar1" для автокомплита в PyCharm.

    Docutils, Pycharm умеет её анализировать. Разметка там в нормальном RestructuredText. Плюс, есть отличная система документации Sphinx.
    Вот пример оформления docstring для функции:
    def public_fn_with_sphinxy_docstring(name, state=None):
        """This function does something.
    
        :param name: The name to use
        :type name: str
        :param state: Current state to be in
        :type state: bool
        :returns:  the return code
        :rtype: int
        :raises: AttributeError, KeyError
    
        """
        return 0

    Или, более компактно:
    def public_fn_with_sphinxy_docstring(name, state=None):
        """This function does something.
    
        :param str name: The name to use
        :param bool state: Current state to be in
        :returns:  int - the return code
        :raises: AttributeError, KeyError
        """
        return 0


    Кроме того, в 3-й ветке питона есть поддержка аннотаций типов (можно указывать тип аргументов функции и возвращаемый тип). Pycharm это тоже понимает.
    Ответ написан
    5 комментариев
  • Как подключить cmake проекты в emacs?

    @bromzh
    Drugs-driven development
    Навигация по проекту - это projectile + helm + helm-project. Все доступны через el-get (только для helm надо будет вручную запустить make потом).
    Ответ написан
    Комментировать
  • Как запретить bower скачивать исходники?

    @bromzh
    Drugs-driven development
    Добавь bower_components в игнорируемые пути для IDE. А потом через Grunt минимизируй все библиотеки при сборке проекта.
    Ответ написан
    Комментировать
  • Как реализовать ajax?

    @bromzh
    Drugs-driven development
    Knockout + mapper plugin для него. Ну или любой другой реактивный JS-фреймворк.
    Ответ написан
    Комментировать
  • Как сделать старт анимации JavaScript с задержкой выполнения?

    @bromzh
    Drugs-driven development
    .delay()
    Или используй анимации из GreenSock, там есть задержки для анимаций, и есть плагин, который заменяет стандартную jqery-вскую animate.
    Ответ написан
    Комментировать
  • Flask + Python 3.x есть ли?

    @bromzh
    Drugs-driven development
    3-ю ветку поддерживает не только сам фласк, но и почти все крупные расширения для него.
    Не поддерживает 3-й Flask-OpenID (хотя версия из ветки master работает норм вроде как) и ещё парочка (уже не помню какие).
    В остальном можно смело использовать 3-ю ветку для новых проектов.
    Ответ написан
    Комментировать
  • Создание лицензии для движка, что прочитать?

    @bromzh
    Drugs-driven development
    Не проще ли открыть код под GPLv3/LGPL (чтобы его не смогли использовать в закрытых проектах) и предусмотреть коммерческую лицензию для закрытых проектов за деньги? Для некоммерческих и открытых проектов разрешить использовать код бесплатно. Плюс, бери деньги за техподдержку. Так сделано у очень многих проектов (Qt, например).
    А то вдруг твоё поделие никто покупать не захочет? Большой проект трудно поддерживать маленьким коллективом (в случае открытых исходников многие смогут отправлять пулл-реквесты). А маленький вряд-ли кто-то купит (если он не обладает какой-нибудь супер уникальной фичей).
    Ещё можешь посмотреть, как лицензируются большие движки. Некоторые берут процент с продаж продукта. который их использует, некоторые позволяют использовать движки бесплатно до тех пор, пока прибыль или количество установок проекта не превысят определённую планку.
    Вообще, чем более либеральная лицензия, тем больше будет желающих использовать твой движок. Деньги, опять же, можно и с ТП получать (как это делают RedHat. nGinx, и прочие).
    Ответ написан
  • Как лучше реализовать чат клиент-сервер на java websocket?

    @bromzh
    Drugs-driven development
    В качестве клиента лучше брать SockJS, потому что он куда более гибкий: автоматом заменяет вебсокеты на поддерживаемую браузером технологию (лонг-поллинг, флэш, загрузка файлов и т.д.), автоматом меняет порты, если нужные не могут использоваться. При этом, делает он всё это прозрачно, код обмена сообщениями будет точно такой же, как в случае с обычными вебсокетами.

    Эту либу точно поддерживает SpringFramework. На счёт чистой Java EE не знаю. Поэтому, у тебя 2 варианта: использовать вебсокеты от спринга, а в остальном юзать Java EE фичи, вроде как есть много туторов, как скрестить EJB и Spring. Ну или используй полностью Спринг заместо Java EE.

    А если ты точно знаешь, какой браузер будет у пользователей, то можно и на чистых вебсокетах и Java EE замутить всё.

    P.S. Не используй томкат, бери полнофункциональные сервера: Glassfish 4 или WildFly 8 (бывший JBoss).
    Ответ написан
    5 комментариев
  • Java REST. Как прописать в Path путь вида /get/group1/group2/...?

    @bromzh
    Drugs-driven development
    Как вариант - считывай весь хвост в строковую переменную, сплить её по слешу и на выходе как раз получишь List. Что-то похоже здесь и тут.
    Ответ написан
  • Как записать/импортировать javadoc в базу данных?

    @bromzh
    Drugs-driven development
    Используй Sphinx. Она умеет в javadoc (ну или перепиши доки в формате restructuredText). Там можно не только чистое АПИ описывать, но и произвольный текст, можно вставлять ссылки на классы/методы из кода. Плюс, есть много готовых тем.
    Ответ написан
  • Как изменить метод родительского класса в python?

    @bromzh
    Drugs-driven development
    class A(object):
        def __init__(self):
            self.a = []
    
    class B(A):
        def __init__(self):
            self.a = []
            super(B, self).__init__()

    Супер умеет искать во всех родительских классах, да и это сейчас рекомендуемый способ.
    Ответ написан
  • Какая разница между одинарной и двойной кавычки в верстке?

    @bromzh
    Drugs-driven development
    Заказчик может внезапно захотеть xhtml вместо html. А у тебя кавычки у атрибутов одинарные. Реплэйс может не спасти в таком случае. Да и если твой JS будет заточен под применение одинарных кавычек для генерирования элементов, то тоже придётся много переделывать и/или экранировать.
    ИМХО, для атрибутов html лучше двойные, для языков программирования, где одинарные и двойные кавычки абсолютно идентичны, лучше брать одиночные. Тогда будет меньше коллизий и экранирования.
    Ответ написан