Programming languages:
- Python (strong skill)
- JavaScript (weak skill)

Web:
- Django
- Flask
- Pyramid

Desktop:
- Python GTK+ 3

ORM:
- SQLAlchemy

OS:
- Debian and Debian based (Ubuntu Server, Linux Mint)
- Alt Linux
Контакты
Местоположение
Россия, Тюменская обл. и Ханты-Мансийский АО, Тюмень

Достижения

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

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

Все теги (82)

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

Все ответы (72)
  • Как набить руку на Python разработку и сисадминистрирование за 2 месяца?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    Веб-разработка и администрирование сетевых ресурсов более востребованы, поэтому я бы рекомендовал изучить следующее:
    • основы и стандартная библиотека Python -- навык лучше прокачивается написанием скриптов и программ для решения неучебных задач. И если основной навык миддла -- это гуглить (полу)готовые решения, то основной навык джуна -- уметь писать свои "велосипеды". Разработчик, который по-максимуму использует и полагается на готовое -- столь же неэффективен, как и предпочитающий использовать готовое по-минимуму;
    • веб-фреймворк Django -- пилите небольшой проект, получаете общие представления о веб-разработке и практику ООП, но о Python этот веб-фреймворк расскажет мало, делает слишком много работы за программиста, а в его исходном коде можно заплутать, так и не поняв как он работает;
    • система контроля версий Git -- обязательно для разработчика и желательно для сисадмина;
    • wsgi-сервер uWSGI (или Gunicorn) -- см. ниже;
    • http-сервер Nginx -- см. ниже;
    • GNU/Linux -- пробуете развернуть проект с использованием предыдущих двух пунктов;
    • веб-фреймворк Flask -- просто пощупайте или сделайте ещё один небольшой веб-проект, по исходникам этого веб-фреймворка проще понять как работают другие веб-фреймворки и как писать поддерживаемый код, к тому же на Flask часто пилят всякие API / бэкенды;

    Настольные приложения и мобильная разработка на Python кажется менее развита и менее востребована, но когда-нибудь можете пощупать:
    • Python GTK+ 3 (или PySide2) -- Python обёртки над GUI инструментариями для разработки настольных приложений;
    • Kivy -- фреймворк преимущественно для мобильной разработки.

    И, если вопрос предполагает поиск работы через пару месяцев, то работодателям обычно нужны те, разработчики, что будут решать их "бизнес-задачи": снижать расходы, повышать доходы и минимизировать риски. Проще говоря, знание математики, алгоритмов и модных технологий могут не пригодится вообще, а вот доведённые до ума проекты расскажут о Вас работодателю намного больше.
    Ответ написан
    4 комментария
  • На каких интернет-ресурсах новичку можно разместить исходники для code review?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    1. Регистрируешься на github.com;

    2. Создаёшь репозиторий;

    3. Устанавливаешь себе на машину Git;

    4. Настраиваешь Git:
    git config --global user.name "Твоё имя латинницей"
    git config --global user.email твой_email

    5. Клонируешь репозиторий с GitHub в какую-нибудь папку:
    git clone https://ссылка_на_репозиторий.git

    6. Переносишь исходники в созданную git`ом папку (в ней ещё лежит файл .gitignore и папка .git).

    7. Внутри папки с исходниками выполняешь последовательность команд:
    git add --all
    git commit -m 'update'
    git push origin master

    8. Проверяешь, что исходники появились в репозитории на GitHub.

    9. Делишься ссылкой на репозиторий с желающими почитать твой код.

    Если что-то непонятно, в Интернете полно вопросов и ответов, пошаговых руководств, видео уроков, и других учебных материалов по теме.
    Ответ написан
    Комментировать
  • Что выбрать Python(Django) или PHP(Laravel/Yii)?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    Я больше знаком с Python экосистемой, поэтому могу быть несправедлив в отношении PHP.

    PHP:
    - проще с работой
    - проще с хостингом
    - язык для веб-разработки

    Python:
    - проще с отладкой кода
    - проще с читаемостью кода
    - проще с безопасностью кода
    - язык общего назначения
    - много самых разных библиотек

    Производительность обоих языков сопоставима и заметно улучшена как в PHP 7, так и в Python 3.6.
    Ответ написан
    Комментировать
  • PyQt5 или PySide 2?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    Основное отличие -- это лицензии под которыми распространяются эти две обёртки над Qt.

    PyQt5 распространяется под GPL и коммерческой лицензией.

    PySide2 распространяется как Qt под GPL, LGPL и коммерческой лицензией.

    Пишите открытое/свободное ПО -- можно использовать как PyQt5, так и PySide 2.o

    Пишите закрытое/коммерческое ПО -- бесплатно можно использовать только PySide 2, а для использования PyQt5 потребуется покупать коммерческую лицензию.

    И если Вы живёте, работаете на компанию или имеете клиентов в США и Евросоюзе -- различие существенное, судебные иски там бывают.

    На постсоветском пространстве, я не припоминаю, чтобы кто-то подавал в суд из-за использования библиотек под лицензией GPL в коммерческих продуктах.

    Если Вам непринципиально на каком современном GUI-тулките писать десктом-приложение. С Python, помимо обёрток над GUI-тулкитом Qt5 (PyQt5, PySide 2), можно использовать обёртку для GUI-тулкита Gtk3 -- см. документацию тут Python GTK+ 3 и тут PyGObject -- код GTK и необходимых для Python библиотек лицензирован под LGPL, что позволяет использовать их в коммерческих продуктах.

    ДОПОЛНЕНО исходя из комментария автора вопроса

    Но меня интерисовала скорее производительность.


    Старайтесь формулировать вопрос так, чтобы он отражал то, что Вас интересует.

    В июне был открыт и в июле уже закрыт багрепорт по производительности одного из классов PySide2 в сравнении с тем же классом в PyQt5:
    https://bugreports.qt.io/browse/PYSIDE-727

    Если говорить о производительности в целом, то вопрос не имеет особого смысла.

    Производительность обеих обёрток упирается в производительность компонентов Qt5.

    Сравнивать производительность обеих обёрток надо по одинаковым кейсам.

    Большая разница в производительности PySide2 и PyQt5 на одном и том же кейсе будет причиной для багрепорта и исправления в PySide2 или в PyQt5, соответственно.

    Вы можете перестраховаться и 6-12 месяцев не трогать PySide2 со дня первого стабильного релиза (16.07.2018). Вдруг ещё остались недоработки, так пусть другие разработчики и компании используют PySide2 в продакшене на свой страх и риск сейчас, попишут разработчикам PySide2 багрепорты, а Вы получите от сообщества более стабильный и проверенный, не на Вас и не на ваших пользователях, продукт.

    Так как один проект официальный, а второй нет.


    Не совсем понятно, что такое официальный проект.

    На сайте Qt есть раздел Qt для Python, сейчас там написано про PySide2:
    doc.qt.io/qtforpython/index.html

    Это при том, что PyQt5 вышла давно, а PySide2 после многих лет разработки стабилизировали недавно.

    Возможно, лицензионная политика PySide2 больше устраивает разработчиков Qt5 и поэтому они решили продвигать PySide2.

    В таком случае, PySide2 можно считать "официальным" проектом, а PyQt5 стало быть "кустарщиной".
    Ответ написан
    4 комментария
  • Что такое '-m' в командах в работе с Python?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    В последних версиях Ubuntu установленные пакеты Python не прописываются как команды оболочки. А прописывать это ручками не каждый умеет.

    Таким образом, привычное:
    pyvenv .venv
    из коробки работает не во всех операционных системах.

    И в гайдах стали писать более универсальное:
    python3 -m venv .venv

    А что это такое, можно посмотреть в справке к Python:
    python3 --help

    Где можно увидеть описание опции:
    -m mod : run library module as a script (terminates option list)


    То есть, запуск установленный библиотеки в качестве скрипта. Хотя, очевидно, не все библиотеки имеют какой-то полезный функционал, который можно так запустить.
    Ответ написан
    2 комментария

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

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