• Быстрый старт в IT с хорошей базой?

    DevMan
    @DevMan
    все описанные скилы на фрилансе вообще не роялят: там в первую очередь важен единственный скилл - продать себя.
    затем следует понимание процессов и задач: клиента вообще не интересует path_finding и прочая заумная хрень, его интересует реализация свои хотелок ещё вчера, даже если она из говнопалок, но работает.
    серьезных/крупных клиентов на фрилансе нет. максимум - развитие стартапа или какого-то локального среднячка.

    ну и отдельно: "старт в it" и "старт в фрилансе" - два разных человека.
    Ответ написан
    1 комментарий
  • Быстрый старт в IT с хорошей базой?

    @vism
    В офис идите опыта сперва набраться.
    В 99% процентах случаев нужно понимание бизнес задач, понимание как сделать удобно для клиента софта, общение с менеджером и командой.
    Ответ написан
    Комментировать
  • Как ораганизовать репозиторий для команды?

    sloboda
    @sloboda
    Java QA Automation
    Всё же лучше отдельные репозитории.
    Или несколько отдельных репозиториев, сгруппированных по функционалу приложения, в которых будут подпапки.
    У вас же каждый сотрудник работает в своем форке.
    При внимательной организации code review и мержа только по результатам code review большой свалки в проектах и подпроектах быть не должно.
    Ответ написан
    Комментировать
  • Как ораганизовать репозиторий для команды?

    sheerluck
    @sheerluck
    Так как приходят новые люди и им нужно показывать только часть кода -- то надо заводить новый отдельный репозиторий. Отслеживать их не сложно. Добавлять и исключать людей не сложно.
    А свалку делать не надо.
    Ответ написан
    Комментировать
  • Как правильно организовать работу с Git для соло-разработки?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Если ты один, сделай флоу какой тебе удобный с нейм конвеншеном какой тебе удобен.

    Сделай две ветки:
    site-ru
    dev-site-ru

    Делай ветки для вставки новых крупных фич типа:
    feature-XXXX

    как ветка готова, мержи ее в dev-site-ru c --squash
    Как протестировал на дев, делай мерж в site-ru

    Для тебя и клиента будет интуитивно понятно что за ветки, и не надо будет запоминать зачем нужен мастер или транк.
    Ответ написан
    3 комментария
  • Почему следующий код может иногда падать с runtime error?

    Код [запускался на Python 3.8, 3.9, 3.10]
    import asyncio
    import datetime
    import random
    import colorama
    
    
    async def main():
        t0 = datetime.datetime.now()
        print(colorama.Fore.WHITE + "App started.", flush=True)
    
        data = asyncio.Queue()
    
        task1 = asyncio.ensure_future(generate_data(20, data))
        task2 = asyncio.ensure_future(generate_data(20, data))
        task3 = asyncio.ensure_future(process_data(40, data))
        # Переименовано из "final_task" в "gather_result" т.к. gather возвращает результат (Список значений объектов)
        # В данном коде ничего не возвращается и можно удалить print и саму переменную
        gather_result = await asyncio.gather(task1, task2, task3)
        print(gather_result)
        dt = datetime.datetime.now() - t0
        print(colorama.Fore.WHITE + f"App exiting, total time: {dt.total_seconds():,.2f} sec.", flush=True)
    
    
    async def generate_data(num: int, data: asyncio.Queue):
        for idx in range(1, num + 1):
            item = idx * idx  # equal idx ** 2 
            await data.put((item, datetime.datetime.now()))
    
            print(colorama.Fore.YELLOW + f" -- generated item {idx}", flush=True)
            await asyncio.sleep(random.random() + 0.5)
    
    
    async def process_data(num: int, data: asyncio.Queue):
        processed = 0
        while processed < num:
            item = await data.get()
    
            processed += 1
            value = item[0]
            t = item[1]
            dt = datetime.datetime.now() - t
    
            print(colorama.Fore.CYAN + f" +++ Processed value {value} after {dt.total_seconds():,.2f} sec.", flush=True)
            await asyncio.sleep(0.5)
    
    
    if __name__ == '__main__':
        asyncio.run(main())

    Asyncio "Running Tasks Concurrently" gather
    asyncio.gather на русском
    Приведенный вами код актуален для Python 3.6 (Пункт 18.5.3.5.1. документации asyncio Python 3.6.15), но не для 3.7+
    Ответ написан
    1 комментарий
  • Почему не работает код?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Потому что результат замены надо записывать. replace() только возвращает результат, а не изменяет исходную строку.
    В целом алгоритм конечно кривой. Чтобы заменить буквы на цифры, не нужно перебирать строку по одной букве. А если уж и делать перебором, как у вас, то тогда собирать новую строку из х.
    Но по уму надо просто сделать в цикле замену по словарю

    Если уж соревноваться в решениях, хотя автор вроде бы не просил, то беглое гугление даёт
    number.translate(''.maketrans("ABCDEFGHIJKLMNOPQRSTUVWXYZ","22233344455566677778889999"))
    Ответ написан
    Комментировать
  • Как практиковаться в программировании?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Обычно с помощью рук и головы :) В полном соответстии с принципом антиэнтропийности - циклический процесс, в котором при каждом следующем заходе все больше порядка и меньше хаоса :)
    Ответ написан
    Комментировать
  • Как ускорить работу Python в разы?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Сменить питон на С/С++/Rust/GO/любой быстрый нативный ЯП. Ну или вообще сразу ассемблер.
    Ответ написан
    5 комментариев
  • Как ускорить работу Python в разы?

    @deliro
    Ну ага мы сейчас такие раз и рецепт тебе сказали, который работает для всех случаев. Если бы он был, его бы логично было запихать прям в интерпретатор, не так ли?

    Может быть, asyncio тебе поможет, может быть threading, может быть, там CPU-bound у тебя что-то и надо multiprocessing, а может и вообще на PyPy заменить интерпретатор или часть кода переписать на Cython

    А может вообще сервер стоит подвинуть ближе к серверу API чтобы пинг уменьшить. Или лимиты как-то повысить, используя прокси, несколько аккаунтов или заплатив за API.

    Ну или просто код говно:)

    Нам откуда знать профиль твоей нагрузки? Вариантов тысячи.
    Ответ написан
    1 комментарий
  • Замена MongoDB?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Отличный повод избавиться от этого нелепого недоразумения и начать использовать нормальную БД.
    Если речь идёт о базе данных, то выбор огромный: mysql, postgres, sqlite, sql-server, oracle
    Можно выбрать себе СУБД по вкусу, спланировать структуру БД вместо той оргии с гетерами, которая применяется в Монге и начать пользоваться.
    Если речь идет об in-memory key-value storage то выбор поменьше, о тоже есть - redis или подзабытый уже нынче мемкеш.
    Ответ написан
    Комментировать
  • Можно ли инициализировать базу данных в момент создания докер контейнера?

    vabka
    @vabka
    Токсичный шарпист
    Да, в Dockerfile можно прокидывать переменные из .env, и можно отдельным шагом сделать RUN, который заполнит базу какими-то начальными данными.
    Ответ написан
    1 комментарий
  • Как обновить значения всех всех документов у которых значение ключа положительное?

    Примерно так
    db.collection.update_many(
    {"delivery_rub": {"$lt": 0}},
    [
      {
        "$set": {
          "delivery_rub": {
            "$multiply": [
              "$delivery_rub",
              -1
            ]
          }
        }
      }
    ])
    Ответ написан
    1 комментарий
  • Как использовать mongodb в России?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Если речь про атлас, то гарантированно - никак.
    В остальном - разворачиваете на своем сервере и радуетесь. С копией, расположенную вне своих серверов, разрабы монги вряд-ли смогут что-то сделать.
    Если речь про то, не получается установить на сервер:
    Гуглите альтернативные репозитории
    Скачайте установочные пакеты с сайта монги (если нужно - с впн) и установите из них.
    Ответ написан
    Комментировать
  • Как практиковаться в программировании?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Просто берёшь и пишешь.
    Это для таких как ты манифест:
    https://macode.ru/
    Ответ написан
    Комментировать
  • Как практиковаться в программировании?

    DevMan
    @DevMan
    да берешь и делаешь.
    походу разгребаешь возникшие проблемы/вопросы.

    волшебных кнопки/рецептов не существует.
    Ответ написан
    Комментировать
  • Как практиковаться в программировании?

    Adamos
    @Adamos
    от выбора библиотек

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

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    Смотрите модуль random ( https://docs.python.org/3/library/random.html ). Если не очень с английским, используйте Google Translate. Или найдите статьи о модуле random на русском.

    Если не очень знакомы с Python, так же почитайте о циклах и работе со списками.
    Ответ написан
    1 комментарий
  • Как решить проблему с SQLite3?

    Vindicar
    @Vindicar
    RTFM!
    С чего ты взял, что возвращаемое значение второй раз будет не None? Ты проверял, что данные заносятся?
    Собственно, в том и ошибка - у тебя уже есть запись с таким userid, второй раз вставить нельзя.

    А твоя GetInfo() не работает. Почему? Внезапно, в SQL сравнение - это =, а не ==. А ошибку тебе не пишет, потому что ты сделал except: pass. За такую практику вообще надо бить по пальцам линейкой, надеюсь, ты теперь понял почему.
    Ну и до кучи, если хочешь проверить существование, то лучше сделать запрос вида SELECT COUNT(*) FROM main WHERE user_id = ? или
    SELECT EXISTS(SELECT * FROM main WHERE user_id = ?)
    . Эти запросы гарантированно вернут одну строку с одним значением, 0 или 1. 0 - строка не существует, 1 - строка существует.
    Ответ написан
    1 комментарий
  • Как правильно сделать запрос MongoDB?

    Вам надo заменить
    for i in collection.find(query):
    На
    for i in collection.find(*query):
    Ответ написан
    1 комментарий