• Можно ли задавать placeholder в models.CharField?

    placeholder используется на фронте соответственно и задавать его можно через виджеты, то есть в forms.py.
    Ответ написан
    Комментировать
  • Как сформировать left outer join в orm?

    class S(models.Model):
        name = models.CharField(max_length=255, verbose_name='Название')
    
    
    class T(models.Model):
        name = models.CharField(max_length=255, verbose_name='Название')
        s = models.ForeignKey(S)

    Вариант 1
    >>> print(S.objects.all().values('name', 't__name').query)
    SELECT "core_s"."name", "core_t"."name" FROM "core_s" LEFT OUTER JOIN "core_t" ON ("core_s"."id" = "core_t"."s_id")

    Вариант 2
    print(S.objects.all().annotate(t_name=F('t__name')).query)
    SELECT "core_s"."id", "core_s"."name", "core_t"."name" AS "t_name" FROM "core_s" LEFT OUTER JOIN "core_t" ON ("core_s"."id" = "core_t"."s_id")
    # тут на выходе будут экземпояры модели S, но стоит учитывать что при таком запросе они могут дублироваться для разных значений t.
    Ответ написан
    3 комментария
  • Как сделать поиск на джанго?

    Mr_Floppy
    @Mr_Floppy
    1) Взять
    2) И сделать

    Освойте метод filter что ли.
    Ответ написан
    6 комментариев
  • Как подставить массив в функцию?

    @nirvimel
    def f(a, omega, phi, t):
        return a * sin(omega * t + phi)
    
    x = [f(a[i], omega[i], phi[i], t[i]) for i in range(len(a))]
    Ответ написан
    7 комментариев
  • Методика перевода гео-координат в относительные координаты полотна (draw) для рисования схемы?

    Moskus
    @Moskus
    Судя по числам, у вас географические координаты. Если вы не хотите, чтобы изображение ваших объектов было растянуто по горизонтали пропорционально тому, как далеко от экватора находится ваш объект, вам нужно сначала перепроецировать географические координаты на эллипсоиде или сфере (я не знаю, где вы их взяли, потому тут возможны варианты) в прямоугольные, а потом просто нормировать получившиеся цифры, чтобы они влезли в ваш экран и повернуть оси.
    Выбор прямоугольных систем координат широк, но вам, вероятно, проще всего будет работать с проекцией Меркатора. Все что нужно для перепроецирования содержит библиотека PROJ4 (см. вот тут).
    Ответ написан
  • Как собрать команду "за идею", не слив проект на общее обозрение?

    @kp069
    Вы слишком переоцениваете значимость идеи.
    Как вы собираетесь держать идею в секрете, но при этом собрать команду профессионалов? Хотите секретности - пилите сами.
    Ответ написан
    Комментировать
  • Как собрать команду "за идею", не слив проект на общее обозрение?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Идея не стоит ничего. Запомните это. Теперь, допустим, что это не так. Вы обладаете уникальной информацией и считаете, что она стоит много денег, за счёт того, что ожидания от неё очень позитивные. Вы пилите, пилите, пилите. Запилили, и идея оказалась действительно крутая, все про вас узнали. Через неделю у вас уже будет минимум два конкурента, у которых есть деньги. И где вы, которые без денег? Правильно, вы не спереди, вы сзади. За примером далеко ходить не надо - виджеты дозвона на сайт, чат-виджеты на сайт и т.д.
    Поэтому смело идите к таким же, как и вы, со своими "супер взрывными идеями лишь бы не украли" в какой-нибудь инкубатор и клянчите денег наравне со всеми.
    Ответ написан
    3 комментария
  • Как сделать ПРОСТУЮ очередь в Celery (Python)?

    @marazmiki
    Укротитель питонов
    Про то, как выполнять асинхронные задачи в последовательности написано в разделе canvas документации по celery. Там же и пример есть (копирую, чтобы сократить время)
    >>> from celery import chain
    # 2 + 2 + 4 + 8
    >>> res = chain(add.s(2, 2), add.s(4), add.s(8))()
    >>> res.get()
    # или даже так
    >>> (add.s(2, 2) | add.s(4) | add.s(8))().get()
    16

    здесь add, если не поняли, задача-пример, которая повсеместно встречается в документации. Она просто складывает два числа. А страшный метод .s() лишь короткая форма записи для .subtask(). В той же документации про canvas обо всём этом сказано в разделе Signatures.

    Что касается повторений заваленных задач, то там всё просто и в документации есть. Единственное, нужно настроить RESULT_URL. Обратите внимание, не BROKER_URL, а именно RESULT, многие почему-то путают
    Ответ написан
    Комментировать
  • Как повысить эффективность кода? Или такое поведение программы считается нормальным?

    adugin
    @adugin Куратор тега Python
    Наиболее быстрый алгоритм:
    from random import random
    
    while True:
        try:
            total = int(raw_input('\nВведите количество бросков: '))
        except ValueError:
            print 'Введено некорректное значение: ожидается целое число.'
        else:
            # side1 = sum(random() < 0.5 for n in xrange(total))
            side1 = int(round(sum(random() for n in xrange(total))))  # эквивалент random() >= 0.5
            side2 = max(0, total) - side1
            print 'Результат: орёл - {0}, решка - {1}'.format(side1, side2)
        finally:
            if raw_input('\nПопробовать ещё раз (Y)? ').upper() != 'Y':
                break

    Ещё вариант:
    import collections, random
    
    options = ('орёл', 'решка')
    
    while True:
        stats = collections.Counter(dict.fromkeys(options, 0))
        try:
            stats.update(
                random.choice(options) for test in xrange(
                    input('\nВведите количество бросков: ')
                )
            )
        except:
            print 'Введено некорректное значение: ожидается целое число.'
        else:
            print 'Результат: {0} - {{{0}}}, {1} - {{{1}}}'.format(*options).format(**stats)
        finally:
            if raw_input('\nПопробовать ещё раз (Y)? ').upper() != 'Y':
                break

    Замеры скорости:
    >>> timeit('choice((0,1))', setup='from random import random, choice', number=10**6)
    1.4363103769230747
    >>> timeit('random() < 0.5', setup='from random import random, choice', number=10**6)
    0.18878976080804932

    0) Вас не смущает, что Вы используете заведомо равномерное (uniform) распределение, о котором говорится во вступительном абзаце к модулю random?
    1) Про русский язык уже написали. Кроме того, зачем смешивать английские слова (times) с транслитом (monetka)? Пишите всё на английском.
    2) input() уже конвертирует значение из строки. Если число нецелое (float), то int() отработает без ошибок: int(3.14) = 3
    3) Странная структура программы. Не надо делать вложенную структуру (почему цикл бросков монеты идёт под else?), используйте break и continue, чтобы код был более плоским. "Плоское лучше, чем вложенное".
    4) В цикле броско монеты операторы "count += 1" и "times -= 1" следует вынести из блока if..elif, чтобы не дублировать оди и тот же код, который всё равно должен выполниться.
    5) Если не выпал орёл, то проверять условие var == 'решка' не нужно, достаточно простого else. Там кроме решки больше ничего быть не может.
    6) Какая версия Python? 2.x или 3.x? Про целочисленное деление помните?
    7) Дальше у меня сломался моск...
    Ответ написан
    7 комментариев
  • Как повысить эффективность кода? Или такое поведение программы считается нормальным?

    bobrovskyserg
    @bobrovskyserg
    1. Это поведение - норма.
    Попробуй заменить
    var = random.choice(monetka)
    на
    var = 'орел'
    и ты увидишь, на что уходит время.

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

    Удачи.

    UPDATE
    import random
    
    coin = ('head', 'tail') 
    heads = tails = count = 0
    
    while True:
        while True:
            try:
                times = int(input('Amount of coin toss?: '))
                break
            except ValueError:
                print('Must be integer')
    
        for i in range(times):  # +скорость +однозначность
            var = random.choice(coin)
            count += 1
            if var == 'head':  # +наглядность +скорость
                heads += 1
            else:
                tails += 1
    
        print('Current results: head count = {0} ({1:%}), tail count = '
              '{2} ({3:%})'.format(heads, heads / count, tails, tails / count))
    
        while True:
            new = input('Continue? y/n: ')
            if new in ('y', 'n'):
                break
            else:
                print('Print "y" or "n"')
    
        if new == 'n':
            break
    
    print('Final results: head count = {0} ({1:%}), tail count = '
          '{2} ({3:%})'.format(heads, heads / count, tails, tails / count))
    Ответ написан
    Комментировать
  • ИП - это юрлицо?

    gr1mm3r
    @gr1mm3r
    50% ответа в правильном вопросе. Остальное мануал.
    Индивидуальный предприниматель (ИП) (устар. частный предприниматель(ЧП), ПБОЮЛ до 2005 года) это физическое лицо зарегистрированное как предприниматель без образования юридического лица, но фактически обладающие многими правами юридических лиц. К индивидуальным предпринимателям применяются правила гражданского кодекса регулирующие деятельность юридических лиц, кроме случаев когда для предпринимателей прописаны отдельные статьи законов, либо правовых актов.(ГК Статья 23 п.3)
    Ответ написан
    Комментировать
  • Поиск модели по цене, если цена может быть указана в валюте?

    winordie
    @winordie
    Лучшая документация -- исходники
    from django.db.models import Q
    queryset = Flat.objects.filter(
    Q(price_currency='RUB', price__lte=price_max, price__gte=price_min) | 
    Q(price_currency='USD', price__lte=price_max*rate_usd, price__gte=price_min*rate_usd) | 
    Q(price_currency='EUR', price__lte=price_max*rate_eur, price__gte=price_min*rate_eur)
    )
    Ответ написан
    Комментировать
  • Форматирование вывода в python в виде таблицы?

    OlegWock
    @OlegWock
    Python, Java+Android, Frontend
    Есть либа, prettytable называется, очень рекомендую. Вот тут краткая информация и пример (ну и еще 7 либ, которые, вам, возможно, когда-то понадобятся)
    Ответ написан
    2 комментария
  • Полезен ли алгоритм определения НЕпростоты числа с 3 операций?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Надеюсь, что остаток берётся всё-таки от деления на 390, а не на 389 - иначе смысла в коде вообще не видно.
    Итак, у нас есть 77 простых чисел, меньших 390. Четыре из них - 2,3,5,13 - не более, чем мусор, дающий лишние срабатывания алгоритма. В самом деле, если x%390==3, то x делится на 3, а значит, оно составное. Остальные 73 числа годятся.
    Получается такая картина. Для простого x величина x%390 - некоторое число, взаимно простое с 390. Причём распределены эти остатки более-менее равномерно (на картинке они выглядят как красные столбики). Всего этих остатков 96.
    Если x - простое число, то с вероятностью 73/96 остаток будет простым числом, и алгоритм честно скажет "скорее, простое". С вероятностью 23/96 - те самые 25% - остаток окажется составным, и алгоритм ошибётся.
    Если x - составное, то вероятность того, что число объявят "скорее, простым" будет равна 77/390-1/ln(x) (первое слагаемое - вероятность того, что остаток оказался простым, а второе - доля простых чисел в окрестности x).
    Можно легко избавиться от ошибки первого вида: для этого надо в массив charr положить не простые числа, а числа, взаимно простые с 390. Тогда если алгоритм скажет "составное", то так и есть.
    Можно было вместо 390 взять N=30030=2*3*5*7*11*13. Если массив будет заполнен числами, взаимно простыми с N, то отсеиваться, как составные, будет 4 числа из 5, а ложных отсеиваний простых чисел не будет вообще.
    Ответ написан
    2 комментария
  • Как лучше сохранять данные банковских карт?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Я буду первым на Тостере, кто вам напишет - Этого делать нельзя. Почитайте про PCI DSS.
    Ответ написан
    Комментировать
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    kumaxim
    @kumaxim
    Web-программист
    Для начал ответь сам себе на вопрос "А чем тебе неудобна текущая золотая клетка"? Можешь не писать здесь, но определись для себя.

    Далее нужно осознать, что фриланс - это подвид бизнеса. Есть книжка Р.Киосаки "Квадрант денежного потока". Там всех людей, работающих в экономике разделяют на 4 части:
    1. Р - наемные работники
    2. П - предприниматели
    3. Б - бизнес
    4. И - инвесторы

    Фриланс - это сегмент П. Ты работаешь один, возможно зарабатываешь больше чем работая по найму, но вот ты заболел, продуло тебя где-то, температура 38.5.... Сомневаюсь что ты из стали сделан и сможешь в таком состоянии писать код.
    Сегмент П очень хорошо охарактеризовал г-н Залогин из Локус Медиа. Он сказал примерно так: "Вы человек-велосипед - пока крутите педали - едите, как только перестали - упали"

    Переходя к твоему вопросу о выходе из зоны комфорта.
    Первое что рекомендую перед началом своего бизнеса - оплати все долги. Закрой ипотеку, погаси автокредит, все потребительские заемы и т.д. В случае если ты провалишься(первый блин, обычно, комом) по крайней мере ты со своей семьей не под мостом окажешься.
    Второе - содержание семьи. Никакие твои заработки не должны влиять на твою жену/ребенка. Твои родные, как минимум, должны иметь крышу над головой + еду на столе. Посчитай сколько ты платишь за комуналку + еду. Далее умножаешь эту сумму на 24 месяца. Это финансовая подушка твоей семьи.
    Третье - планирование. Бизнес без бизнес-плана - это не более чем хобби. С 16 лет стремился зарабатывать в сети. Продавал ссылки на sape.ru в 2008-2009, работал с трафиком в 2010-2012, продавал китайские безделушки с 2013-2014... Сейчас ушел в разработку одного SaaS-решения. Первые пару месяцев оптимизм из ушей хлещет, думаешь "Да все будет, да это фигня, преодалею...." Но вот начинаются черные полосы: ТИЦ сайта в планируемый апдейт не вырос до нужного значения, твой сайт на 9 месте в выдаче, вместо требуемой тебе 3-4 позиции, товар из Китая на таможне завис.... Да я могу до бесконечности перечислять проблемы, которые возникали у меня... А время - деньги: тебе нужно платить аренду, зарплату, рекламу, кредиты и т.д. Не платишь - начинается ругань, из Максима Александровича я сразу превращаюсь в мошенника, кидалу, сволочь... эх, во общем суть ты понял. Думай на 2 шага вперед, вот что я хочу сказать
    Четверное - не делай бизнес с полного нуля. Перт Осипов(проект Бизнес Молодость) в каком-то из видео говорил, что мы не ценим самое ценное что у нас есть, мы воспринимаем это как должное, когда для других людей это может быть сравни бриллианту среди кучи стекляшек. Вы не первый день работайте в ИТ по какой-то специализации, так ведите эту специализацию и дальше. Занимайтесь своим любимым делом.
    Пятое - не пытайтесь все делать сами. Когда я запустил свой самый первый интернет-магазин по Китайским безделушкам я все делал сам: рисовал дизайн, верстал его, настраивал рекламу, обзванивал клиентов, носил товар на почту.... В общем занимался вообще всем! Причем за всей этой рутиной я не видел, что мой сайт работает не эффективно, я упускаю из виду 20% горячих клиентов, 10% моих бандеролей исчезают в глубинах Почты России... Вы как первое лицо компании должны знать все процессы своего предприятия, иначе Вы не сможете им управлять, но Вам не нужно все процессы делать самому. Отдайте часть на аутсорс или делегируйте наемному сотруднику.
    Шестое - я на этом очень сильно обжегся около 3-х лет назад.... Ставьте своим сотрудникам четко достижимые KPI(ключевые показатели эффективности). Например, есть у меня форма заказ обратного звонка на сайте. Человек пишет туда своего Имя и номер телефона, после чего эти данные попадают в CRM. Для менеджеров, которые у меня обрабатывают вызовы клиентов один из KPI звучит так: перезвонить клиенту в течении 15 минут после поступления от него заявки, если она поступила в рабочее время. Причем все KPI Вы должны сформулировать максимально точно и подробно. Я сам с KPI работаю так: есть у человека базовый оклад и базовый набор KPI, которые ему необходимо выполнять. Если он их выполняет - получает оклад, выполняет лучше - получает оклад + премию. Причем оклад у меня сам небольшой, около 6 т.р., но нижняя з/п у меня примерно в 2,5 раза выше.

    Первые 4 пункта - это как мягко выйти, вторые два - как не свалиться.

    В целом о бизнесе в РФ могу сказать что его делать относительно легко. Достаточно просто делать что-то хорошо и по человечески относится к своим клиентам. Примерно за 1 год Вы нарабатываете определенную базу контактов(поставщики/партнеры/клиенты), которые Вас знают и доверяют Вам. А далее главное все это не растерять.

    Вам могут все Ваши родные/коллеги/друзья говорить "Да ты что, сейчас санкции, налоги, коррупция..." Поверьте, все это херня! Под прессом можно работать и зарабатывать, причем когда его снимут - Вы получите взрывной рост. А все эти отговорки про санкции, коррупцию, высокие налоги... Да просто у кого-то очко играет!
    Ответ написан
    14 комментариев
  • Музыка для кодинга, под что вы программируете?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Включаю очень грустную музыку, которая не отвлекает, не веселит, не зовёт погулять и побухать. От этого и сидишь в состоянии потока, не отвлекаясь на неё и вообще ни на что, ведь тебе грустно.
    Ответ написан
    1 комментарий
  • Как ускорить регулярные выражения в python?

    nightvich
    @nightvich
    ITman
    Используйте асинхронное выполнение кода в 1*х потоков. Прирост производительности должен быть хорошим.
    Ответ написан
    2 комментария
  • Как ускорить регулярные выражения в python?

    bobrovskyserg
    @bobrovskyserg
    Регулярные выражения предварительно откомпилированы?
    Если нет - сделайте это.
    Если да - десятикратного выигрыша при переходе на C++ не будет, и не надейтесь.
    Питоновский движок re написан на C и сопоставим по быстродействию с реализациями в библиотеках других языков.
    Так что:
    1. Препроцессинг html - наверняка можно отсечь ненужные куски и выкусить ненужные блоки, прежде чем натравливать на него 3000 паттернов
    2. Еще более глубокий препроцессинг - разбиение html на атомарные фрагменты с тем, чтобы, единожды идентифицировав фрагмент, больше по нему не елозить.
    Ответ написан
    2 комментария
  • Как составить математическую модель?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Моделирование транспортных потоков бывает имитационное (гидродинамическое) и автоматное. В первом случае, сеть дорог рассматривают как сеть труб с жидкостью и течением, во втором случае - как конечный автомат (близкий пример - "Жизнь" Конвея).

    В качестве старта в математическое моделирование рекомендую таких авторов:
    Пирумов У. Г. (нет, не фантаст) "Численные Методы"
    Бахвалов, Жидков, Кобельков "Численные Методы"
    Самарский, Михайлов "Математическое моделирование"
    Ferziger, J. H. and Peric, M., Computational Methods for Fluid Dynamics, 2nd ed., Springer-Verlag (2001). ISBN 978-3-540-42074-3.
    Ответ написан
    Комментировать