Задать вопрос
Христианин, программист, читатель. Женат. 3-е детей... уже выросли.

В телеге можно найти как https://tg.guru/guest007

Меня как наставника можно найти здесь: https://solvery.io/mentor/alexei_gulvanuk
Контакты

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (29)

Лучшие ответы пользователя

Все ответы (108)
  • Все ли на самом деле плохо с Python на удаленке?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Как раз в преддверии 40-летия понял, что ни сил, ни желания админить в моём маленьком городке уже нет. Но и трое детей не давали возможности просто махнуть рукой и не напрягаться по жизни.
    Было:
    • желание удалёнки/фриланса
    • неудачный прошлый опыт
    • неплохой уровень администрирования
    • кое какие аналитические способности
    • опыт с несколькими языками программирования

    Предпочтение - Python/Django.
    Написал резюме по правилам, разослал везде, мониторил разные группы/форумы.
    Взяли в один проект (на полгода). Понял, что выдавал желаемое за действительное и мой уровень был, как сейчас говорят "джун". Но Джун - не приговор. Просто тратил на решение задач больше времени. В том числе и за счёт личного.
    Потом снова искал. Попал в стартап прям в самом его начале. За полтора года поднял уровень. Потом потыркался по всяким upwork и вебстудиям, пока опять не нашёл интересный стратап.
    В общем - не бояться и не комплексовать. "Ищите и обрящете" :-)

    По моему опыту общения с начинающими сейчас, с теми, кто самоназывается "Джун" - проблема ребят в том, что ни мыслить, ни искать решения особо не умеют. Доходило до того, что взятый в проект JS-React "специалист" не мог ни проанализировать ТЗ, ни выдать алгоритм действий по его реализации. Даже без подробностей. Я, питонист, тыкал его в выдачу гугла по вопросам, которые у него возникали.
    Или, вот, парень в ВК спросил что-то в группе по какой-то задаче. Я подсказал. На свою голову :-) Еле потом отвязался. Вопросов у него было много, но на вопросы по Питону, не смотря на призывы подумать и поискать, в итоге приходилось тыкать его вы первые позиции выдачи Гугла. Т.е. человек, желающий стать (точнее - зарабатывать) программистом и штудировавший Лутца (по-моему) просто не мог загуглить. Вообще.

    Ну, это так, немного опыта, немного наболевшего :-)
    Ответ написан
    2 комментария
  • Путь становления back-end разработчиком?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Да ничего особенного. Берёшь Django и:
    1) Пишешь сервис погоды. По введённому городу - погоду с API погоды. (выбирай)
    2) Вместо перезагрузки рендеренной страницы делаешь AJAX запрос с JQuery, к примеру. Банально заменяя кусок html
    3) Переделываешь свой фронт и бэк так, чтобы по AJAX-запросу не кусок html отдавался, а JSON с данными, а на фронте - по этим данным перерисовывался твой виджет погоды.
    4) Заменяешь самопальную view, отдающую JSON на view из Django Rest Framework.
    5) Добавляешь кэширование запросов к своему и внешнему API
    6) Прикручиваешь Celery для тоо, чтобы запросы к внешнему API шли по расписанию и у тебя была свежая инфа.
    7) Реализуешь websocket/django-channel для того, чтобы доставлять изменения погоды на страничку пользователям авоматически (можно уже оформить погодный виджет в виде встраиваемого на сайт клиента)
    8) Разбираешься с Docker, AWS и прочим для деплоя

    Вуаля! Ты бэкенд-разработчик (и немножко фронт - но без этого, поверь, ну никак вообще - ты должен понимать, что там происходит хотя б в общий чертах). И немножко даже Devops. На Миддла не замахивайся, конечно, но как продвинутый джуниор - можешь претендовать и показывать всем свой крутой сервис погоды :)

    Можешь по вкусу добавить пользователей, сессии, OAuth, JWT авторизацию и т.д. Тут уж главное - не сдерживать себя :-)
    Ответ написан
    Комментировать
  • Что выбрать Aiohttp или Sanic?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Выбирать всегда сложно.
    Если критерием является скорость, то вот сравнение

    starlette - разрабатывает Tom Christie. Реально крутой разработчик, автор, в том числе и Django Rest Framework. Быстро, мощно, хорошо документировано.

    aiohttp проигрывает почти в 2-3 раза

    Посмотри, что ещё под asyncio есть

    Сравнение с sanic по скорости я не нашёл.

    В любом случае лучше попробовать всё на простом примере и для себя определиться, что проще/лучше/быстрее/расширяемее...

    Возьми простой пример и повтори его на starlette и sanic. И сравни результат и свои ощущения...
    Ответ написан
    Комментировать
  • Почему не происходит выход из цикла в python 3.8.0?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Да, дружище, это не Паскаль

    Подумай, с чем ты сравниваешь переменную 'c'? Не с ДА или YES, а с результатом логической операции or
    т.е. твоё ('Да') or ('да') всегда вернёт True
    Переменная же 'c' - не пустая, а, значит, тоже True в смысле булевых отношений. Так что у тебя всегда "ДА"
    Если переделывать твой Паскаль-код, то это, скорее,
    if c == 'Yes' or c == 'yes' or c == 'y' и т.д.

    Но лучше писать сразу на Питоне: проверяй полученное значение на вхождение в список. Так проще:
    if c in ['Yes', 'yes', 'y', 'Да']:

    Но у тебя сплошной повтор одного и того же (плюс я могу ж и "YES" ввести!). Будь проще:
    if c.lower() in ['yes', 'y', 'да', 'д']:

    Далее - вынеси блок
    c = input('Продолжить работу? Д/Н ')
    if c == ('Да') or ('да') or ('Yes') or ('yes') or ('y') or ('Y') or ('д') or ('Д'):
      continue
    elif c == ('Нет') or ('нет') or ('No') or ('no') or ('n') or ('N'):
      break

    после оператора if. Тогда он будет у тебя написан один раз. Это правильно. Не повторяй себя.

    Ну, как-то так...

    print('\n')
    print('Калькулятор\n\n')
    while True:
      x = int(input('Введите первое число: '))
      y = int(input('Введите второе число: '))
      z = input('Введите знак: ')
      res = 0
      if z == '+':
        res = x + y
      elif z == '-':
        res = x - y
      elif z == '*':
        res = x * y
      elif z == '/':
        res = x / y
      else:
        print('Оператор обязателен и может быть только + или - или * или / ')
        continue
    
      print('Ваш результат: ',res)
      c = input('Продолжить работу? Д/Н ')
      if c.lower() in ['да', 'yes','y', 'д']:
        continue
      elif c.lower() in ['нет', 'no', 'n', 'н']:
        break


    Тут можно ещё много чего усовершенствовать, но, надеюсь, главное ты понял :-)
    Ответ написан
    Комментировать
  • Можно ли делать фронтенд на языке Python?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    В клиент-серверной архитектуре бэкенд - это то, что работает на сервере. Фронтенд - то, что работает у клиента ("толстый клиент").
    И то и то может быть написано на чём угодно, если есть соответствующие механизмы.

    Бэкенд - Python. Это нормально. Универсальный вариант отдаёт по запросу данные и не парится с тем, как они буду визуализированы. REST, GraphQL, SOAP и т.д.

    Фронтэнд, работая на стороне клиента, визуализирует получаемые данные для пользователя. Тут возможна как нативная отрисовка, так и опосредованная (к примеру через браузер).
    Фронтэнд пишется отдельно от бэка. Инструмент - любой подходящий.
    Для отрисовки через браузер (вот, сайт Тостера, к примеру) надо написать клиента на HTML/CSS/JS. Он будет загружаться в браузер и рисовать его средствами.
    Для нативной отрисовки - любая соответствующая системе либа. Хоть MFC в Винде (хотя это уже некромансия - сейчас .NET-библиотеки в фаворе), хоть Carbon (или что там сейчас на Маке?).
    Из линуковых нативных (они же - кроссплатформенные) подойдут GTK, Qt, FLTK и разные надстройки над ними. WxWidget тот же...
    Это я ещё не трогаю тему мобильных устройств...

    Поэтому если не хочется учить разные языки, а ограничиться Python, то фронт на нём МОЖНО писать. Есть биндинги к GTK и Qt. Есть WxPython. Для мобилок можно погрузиться в дивный и чудный мир Kivy (хотя это, скорее, кроссплатформенное решение - работать будет и на десктопах). BeeWare тоже интересно развивается.

    Но если подразумевается написание именно web-клиента, то изучение JS займет меньше времени, чем бесплодные попытки использовать неподходящий инструмент.
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (3)