Как набить руку на Python разработку и сисадминистрирование за 2 месяца?
Так получилось, что до конца января (за два месяца) мне нужно получить прикладной опыт в разработке на Python и системном администрировании.
Сейчас у меня на руках лишь законченная школа и пара курсов по абстрактому программированию на питоне а-ля подготовка к контесту второго дивизиона на кодфорсесе. То бишь, функции пишу, логику и алгоритмы знаю, но прикладных задач никогда не решал.
По системному администрированию есть несколько идей, в частности организовать взаимодействие нескольких вм на своем компе и реализовать некотрые базовые задачи, вроде "сделайте так, чтобы сотрудники в вк не могли сидеть". С питоном все сложнее - идей, что реализовать, нет. Интересует как веб-разработка, так и разработка приложений для пк/мобилок. Короче, до конца января по хорошему хотелось бы и базу бэкенда (а в лучшем случае - фуллстака) освоить и написать приложение-второе, что пошли бы в портфолио. Подскажите, на чем лучше всего набить руку для обоих вариантов? И если есть советы по сисадминистрированию, буду благодарен.
И если есть советы, какие навыки стоит вкачать, чтобы точно получить место junior python dev, или хотя бы стажера, буду признателен)
Веб-разработка и администрирование сетевых ресурсов более востребованы, поэтому я бы рекомендовал изучить следующее:
основы и стандартная библиотека Python -- навык лучше прокачивается написанием скриптов и программ для решения неучебных задач. И если основной навык миддла -- это гуглить (полу)готовые решения, то основной навык джуна -- уметь писать свои "велосипеды". Разработчик, который по-максимуму использует и полагается на готовое -- столь же неэффективен, как и предпочитающий использовать готовое по-минимуму;
веб-фреймворк Django -- пилите небольшой проект, получаете общие представления о веб-разработке и практику ООП, но о Python этот веб-фреймворк расскажет мало, делает слишком много работы за программиста, а в его исходном коде можно заплутать, так и не поняв как он работает;
система контроля версий Git -- обязательно для разработчика и желательно для сисадмина;
wsgi-сервер uWSGI (или Gunicorn) -- см. ниже;
http-сервер Nginx -- см. ниже;
GNU/Linux -- пробуете развернуть проект с использованием предыдущих двух пунктов;
веб-фреймворк Flask -- просто пощупайте или сделайте ещё один небольшой веб-проект, по исходникам этого веб-фреймворка проще понять как работают другие веб-фреймворки и как писать поддерживаемый код, к тому же на Flask часто пилят всякие API / бэкенды;
Настольные приложения и мобильная разработка на Python кажется менее развита и менее востребована, но когда-нибудь можете пощупать:
Python GTK+ 3 (или PySide2) -- Python обёртки над GUI инструментариями для разработки настольных приложений;
Kivy -- фреймворк преимущественно для мобильной разработки.
И, если вопрос предполагает поиск работы через пару месяцев, то работодателям обычно нужны те, разработчики, что будут решать их "бизнес-задачи": снижать расходы, повышать доходы и минимизировать риски. Проще говоря, знание математики, алгоритмов и модных технологий могут не пригодится вообще, а вот доведённые до ума проекты расскажут о Вас работодателю намного больше.
Есть дополнительный вопрос по вебу: как можно наиболее дешево (или вообще бесплатно) протестить написанный сайт на кроссплатформенность (в плане, для мобильного браузера, айпада и т.д.)? На крайняк можно и локалку настроить, но хотелось бы захостить на своем ноуте проект и попросить друзей потыкать получившийся сайт.
З.ы. Спасибо за столь развернутый ответ! Если честно, ожидал лишь кучу однотипных фраз в духе "для начала научись гуглить")
Rosed, в браузерах Chrome и Firefox есть инструменты разработчика, позволяющих имитировать разрешение экрана смартфонов и планшетов, сенсорный дисплей и медленное интернет-соединение. Например, в Firefox ищите подменю веб-разработка и пункт "Адаптивный дизайн".
Можно развернуть и на ноуте, и потом ходить/ездить всем показывать. Если ваш Интернет-провайдер выдаёт или может выдать Вам статический IP адрес, а так же пропускает входящие соединения на 80 порт, обычный ПК или ноут вполне может играть роль сервера.
Сервисов, где можно бесплатно развернуть проект на Python -- раз-два и обчёлся (PythonAnywhere, Heroku и ещё что-то было). Но я лично ни разу такими не пользовался и там много всяких ограничений.
Так же бывают дешёвые хостинги с поддержкой Python в районе 100 рублей в месяц, но там программное обеспечение бывает сильно устаревшее.
Если хочется сделать сайт общедоступным, лучше арендовать где-нибудь виртуальный сервер (VPS / VDS) с Linux за 200-300 рублей в месяц без всяких "веб-панелек" и заодно попрактиковаться в системном администрировании Linux сервера по SSH.
Руслан Гильфанов, Rosed, панель разработчка в хроме и яндексе под горячими клавишами ctrl+shift+c. Так удобнее, постоянно юзаю.
Руслан Гильфанов, спасибо за развернутый ответ. Себе в копилку советы скинул.
Rosed, готов помочь с хостом, на взаимовыгодных условиях. С меня хост и делегирование через мои ДНС и яндекса. С вас прямые руки в помощь, если понадобиться=)
З.Ы: Для удаленного управления хостом сразу посоветую mRmouteNG.